Configurar o Remote Rendering para o Unity
Para habilitar a Renderização Remota do Azure (ARR) no Unity, algumas configurações de projeto podem ser necessárias. Também fornecemos métodos dedicados que cuidam de alguns aspetos específicos da Unity.
Configuração do projeto
Ao usar o OpenXR, o recurso de Renderização Remota do Azure deve ser habilitado nas configurações do Unity OpenXR.
Para outras configurações de projeto necessárias e recomendadas, use o Validador de Projeto incluído no pacote Unidade de Renderização Remota do Azure:
- Escolha a entrada ValidateProject no menu Renderização remota na barra de ferramentas do editor Unity.
- Revise a janela Validador de projeto em busca de erros e corrija as configurações do projeto quando necessário.
Arranque e encerramento
Para inicializar a renderização remota, use RemoteManagerUnity
. Esta classe chama o genérico RenderingConnection
, mas já implementa detalhes específicos do Unity para você. Por exemplo, Unity usa um sistema de coordenadas específico. Ao chamar RemoteManagerUnity.Initialize
, a convenção adequada é definida. A chamada também requer que você forneça a câmera Unity que deve ser usada para exibir o conteúdo renderizado remotamente.
// 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 encerrar a renderização remota, chame RemoteManagerStatic.ShutdownRemoteRendering()
.
Depois de uma RenderingSession
ter sido criada e escolhida como a sessão de renderização principal, ela deve ser registrada com RemoteManagerUnity
:
RemoteManagerUnity.CurrentSession = ...
Código de exemplo completo
Este exemplo de código demonstra todas as etapas necessárias para inicializar a Renderização Remota do Azure no 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();
Funções de conveniência
Eventos de estado da sessão
RemoteManagerUnity.OnSessionUpdate
emite eventos para quando o estado da sessão for alterado, consulte a documentação do código para obter detalhes.
ARRServiceUnity
ARRServiceUnity
é um componente opcional para simplificar a configuração e o gerenciamento de sessão. Ele contém opções para interromper automaticamente sua sessão quando o aplicativo está saindo ou o modo de reprodução é encerrado no editor. Ele renova automaticamente a concessão da sessão quando necessário. Ele armazena em cache dados como as propriedades da sessão (consulte sua LastProperties
variável) e expõe eventos para alterações de estado da sessão e erros de sessão.
Não pode haver mais de uma instância de ARRServiceUnity
cada vez. Destina-se a ajudá-lo a começar mais rapidamente, implementando algumas funcionalidades comuns. Para uma aplicação maior, pode ser preferível fazer essas coisas sozinho, no entanto.
Para obter um exemplo de como configurar e usar ARRServiceUnity
, consulte Tutorial: Exibindo modelos renderizados remotamente.