Configuración de Remote Rendering para Unity
Para habilitar Azure Remote Rendering (ARR) en Unity, puede que se requiera alguna configuración del proyecto. También proporcionamos métodos dedicados que se encargan de algunos aspectos específicos de Unity.
Configuración de proyecto
Al usar OpenXR, la característica Azure Remote Rendering debe estar habilitada en la configuración de OpenXR de Unity.
Para otras configuraciones de proyecto necesarias y recomendadas, use el validador de proyecto incluido en el paquete de Unity de Azure Remote Rendering:
- Elija la entrada ValidateProject en el menú Remote Rendering de la barra de herramientas del editor de Unity.
- Revise la ventana Validador de proyectos para ver los errores y corregir la configuración del proyecto cuando sea necesario.
Inicio y apagado
Para inicializar Remote Rendering, use RemoteManagerUnity
. Esta clase llama al elemento RenderingConnection
genérico, pero implementa detalles específicos de Unity automáticamente. Por ejemplo, Unity usa un sistema de coordenadas específico. Al llamar a RemoteManagerUnity.Initialize
, se establece la convención adecuada. La llamada también requiere que proporcione la cámara de Unity que se debe usar para mostrar el contenido representado de forma remota.
// initialize Azure Remote Rendering for use in Unity:
// it needs to know which camera is used for rendering the scene
RemoteUnityClientInit clientInit = new RemoteUnityClientInit(Camera.main);
RemoteManagerUnity.InitializeManager(clientInit);
Para apagar Remote Rendering, llame a RemoteManagerStatic.ShutdownRemoteRendering()
.
Una vez que se ha creado un elemento RenderingSession
y se ha elegido como sesión de representación principal, se debe registrar con RemoteManagerUnity
:
RemoteManagerUnity.CurrentSession = ...
Ejemplo de código completo
En este ejemplo de código se muestran todos los pasos necesarios para inicializar Azure Remote Rendering en Unity:
// initialize Remote Rendering
RemoteUnityClientInit clientInit = new RemoteUnityClientInit(Camera.main);
RemoteManagerUnity.InitializeManager(clientInit);
// create a frontend
SessionConfiguration sessionConfig = new SessionConfiguration();
// ... fill out sessionConfig ...
RemoteRenderingClient client = new RemoteRenderingClient(sessionConfig);
// start a session
CreateRenderingSessionResult result = await client.CreateNewRenderingSessionAsync(new RenderingSessionCreationOptions(RenderingSessionVmSize.Standard, 0, 30));
RenderingSession session = result.Session;
// let RemoteManagerUnity know about the session we want to use
RemoteManagerUnity.CurrentSession = session;
await session.ConnectAsync(new RendererInitOptions());
/// When connected, load and modify content
RemoteManagerStatic.ShutdownRemoteRendering();
Funciones de conveniencia
Eventos de estado de sesión
RemoteManagerUnity.OnSessionUpdate
emite eventos para cuando su estado de sesión cambie. Consulte la documentación del código para obtener más información.
ARRServiceUnity
ARRServiceUnity
es un componente opcional para simplificar la configuración y la administración de sesiones. Contiene opciones para detener automáticamente su sesión cuando la aplicación sale o se sale del modo de reproducción en el editor. Renueva automáticamente la concesión de sesión cuando sea necesario. Almacena en la memoria caché datos como las propiedades de sesión (vea su variable LastProperties
) y expone eventos para los cambios de estado de sesión y los errores de sesión.
No puede haber más de una instancia de ARRServiceUnity
a la vez. Está pensada para que pueda empezar a trabajar más rápidamente implementando cierta funcionalidad común. Sin embargo, para una aplicación de mayor tamaño, puede ser preferible hacer esas cosas por sí mismo.
Para obtener un ejemplo de configuración y uso de ARRServiceUnity
, consulte Tutorial: Visualización de modelos representados de forma remota.