Configurar o Remote Rendering para o Unity
Para habilitar o Azure Remote Rendering (ARR) no Unity, algumas configurações de projeto podem ser necessárias. Também fornecemos métodos dedicados que cuidam de alguns aspectos específicos do Unity.
Configuração do projeto
Ao usar o OpenXR, o recurso de Renderização Remota do Azure deve estar 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 Unity de Renderização Remota do Azure:
- Escolha a entrada ValidateProject no menu Renderização remota na barra de ferramentas do editor Unity.
- Examine a janela Validador do Projeto em busca de erros e corrija as configurações do projeto quando necessário.
Inicialização e desligamento
Para inicializar o Remote Rendering, use RemoteManagerUnity
. Essa classe chama o genérico RenderingConnection
, mas já implementa detalhes específicos do Unity para você. Por exemplo, o Unity usa um sistema de coordenadas específico. Ao chamar RemoteManagerUnity.Initialize
, a convenção apropriada é definida. A chamada também exige que você forneça a câmera do 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 desligar o Remote Rendering, chame RemoteManagerStatic.ShutdownRemoteRendering()
.
Depois que um RenderingSession
for criado e escolhido como a sessão de renderização primária, ele deverá ser registrado com RemoteManagerUnity
:
RemoteManagerUnity.CurrentSession = ...
Exemplo completo de código
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 de sessão
O RemoteManagerUnity.OnSessionUpdate
emite eventos quando o estado da sessão é alterado. Consulte a documentação do código para obter mais informações.
ARRServiceUnity
O ARRServiceUnity
é um componente opcional para simplificar o gerenciamento de instalação e 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 os dados, como as propriedades da sessão (consulte a variável LastProperties
), e expõe eventos para alterações de estado de sessão e erros de sessão.
Não pode haver mais de uma instância de ARRServiceUnity
por vez. É usada para acelerar o começo, ao implementar algumas funcionalidades comuns. No entanto, para um aplicativo maior, é preferível fazer essas coisas por conta própria.
Para obter um exemplo de como configurar e usar o ARRServiceUnity
, consulte Tutorial: Exibição de modelos renderizados remotamente.