Condividi tramite


Configurare Rendering remoto per Unity

Per abilitare Azure Rendering remoto (ARR) in Unity, potrebbe essere necessaria una configurazione del progetto. Vengono inoltre forniti metodi dedicati che si occupano di alcuni aspetti specifici di Unity.

Configurazione del progetto

Quando si usa OpenXR, la funzionalità azure Rendering remoto deve essere abilitata nelle impostazioni openXR di Unity.

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.

Per altre impostazioni di progetto obbligatorie e consigliate, usare Project Validator incluso nel pacchetto Di Azure Rendering remoto Unity:

  1. Scegliere la voce ValidateProject dal menu Rendering remoto sulla barra degli strumenti dell'editor di Unity.
  2. Esaminare la finestra Project Validator per individuare gli errori e correggere le impostazioni del progetto, se necessario.

Avvio e arresto

Per inizializzare Rendering remoto, usare RemoteManagerUnity. Questa classe chiama nel generico RenderingConnection , ma implementa già i dettagli specifici di Unity. Ad esempio, Unity usa un sistema di coordinate specifico. Quando si chiama RemoteManagerUnity.Initialize, viene impostata la convenzione corretta. La chiamata richiede anche di fornire la fotocamera Unity che deve essere usata per visualizzare il contenuto sottoposto a rendering remoto.

// 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);

Per arrestare Rendering remoto, chiamare RemoteManagerStatic.ShutdownRemoteRendering().

RenderingSession Dopo aver creato e scelto come sessione di rendering primaria, un oggetto deve essere registrato con RemoteManagerUnity:

RemoteManagerUnity.CurrentSession = ...

Codice di esempio completo

Questo esempio di codice illustra tutti i passaggi necessari per inizializzare Azure Rendering remoto in 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();

Funzioni di praticità

Eventi dello stato della sessione

RemoteManagerUnity.OnSessionUpdate genera eventi per quando lo stato della sessione cambia, vedere la documentazione del codice per informazioni dettagliate.

ARRServiceUnity

ARRServiceUnity è un componente facoltativo per semplificare la gestione della configurazione e della sessione. Contiene opzioni per arrestare automaticamente la sessione quando l'applicazione viene chiusa o la modalità di riproduzione viene chiusa nell'editor. Rinnova automaticamente il lease di sessione quando necessario. Memorizza nella cache i dati, ad esempio le proprietà della sessione (vedere la relativa LastProperties variabile) ed espone gli eventi per le modifiche dello stato della sessione e gli errori di sessione.

Non può essere presente più di un'istanza di ARRServiceUnity alla volta. È progettato per iniziare più rapidamente implementando alcune funzionalità comuni. Per un'applicazione più grande può essere preferibile eseguire queste operazioni manualmente.

Per un esempio su come configurare e usare ARRServiceUnity , vedere Esercitazione: Visualizzazione di modelli sottoposti a rendering remoto.

Passaggi successivi