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.
Per altre impostazioni di progetto obbligatorie e consigliate, usare Project Validator incluso nel pacchetto Di Azure Rendering remoto Unity:
- Scegliere la voce ValidateProject dal menu Rendering remoto sulla barra degli strumenti dell'editor di Unity.
- 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.