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.

Screenshot of the Unity Project Settings dialog. The Open XR subentry is selected in the list on the left. The Azure Remote Rendering Open XR feature is highlighted with a checked checkbox.

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:

  1. Escolha a entrada ValidateProject no menu Renderização remota na barra de ferramentas do editor Unity.
  2. 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.

Próximas etapas