Partilhar via


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.

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 Unidade de Renderização Remota do Azure:

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

Próximos passos