Konfigurera Remote Rendering för Unity
För att aktivera Azure Remote Rendering (ARR) i Unity kan viss projektkonfiguration krävas. Vi tillhandahåller även dedikerade metoder som tar hand om vissa Unity-specifika aspekter.
Projektkonfiguration
När du använder OpenXR måste funktionen Azure Remote Rendering vara aktiverad i Unity OpenXR-inställningarna.
För andra obligatoriska och rekommenderade projektinställningar använder du Project Validator som ingår i Azure Remote Rendering Unity-paketet:
- Välj posten ValidateProject från menyn Fjärrrendering i verktygsfältet i Unity-redigeraren.
- I fönstret Projektverifierare finns fel och åtgärda projektinställningar där det behövs.
Start och avstängning
Om du vill initiera fjärrrendering använder du RemoteManagerUnity
. Den här klassen anropar den allmänna RenderingConnection
men implementerar redan Unity-specifik information åt dig. Unity använder till exempel ett specifikt koordinatsystem. När du anropar RemoteManagerUnity.Initialize
anges rätt konvention. Anropet kräver också att du anger unity-kameran som ska användas för att visa det fjärranslutna innehållet.
// 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);
Om du vill stänga av fjärrrendering anropar du RemoteManagerStatic.ShutdownRemoteRendering()
.
När en RenderingSession
har skapats och valts som den primära återgivningssessionen måste den registreras med RemoteManagerUnity
:
RemoteManagerUnity.CurrentSession = ...
Fullständig exempelkod
Det här kodexemplet visar alla steg som krävs för att initiera Azure Remote Rendering i 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();
Bekvämlighetsfunktioner
Sessionstillståndshändelser
RemoteManagerUnity.OnSessionUpdate
genererar händelser för när dess sessionstillstånd ändras, se koddokumentationen för mer information.
ARRServiceUnity
ARRServiceUnity
är en valfri komponent för att effektivisera konfigurationen och sessionshanteringen. Den innehåller alternativ för att automatiskt stoppa sessionen när programmet avslutas eller uppspelningsläget avslutas i redigeraren. Den förnyar automatiskt sessionslånet när det behövs. Den cachelagrar data som sessionsegenskaperna (se dess LastProperties
variabel) och exponerar händelser för sessionstillståndsändringar och sessionsfel.
Det kan inte finnas fler än en instans i ARRServiceUnity
taget. Det är avsett för att komma igång snabbare genom att implementera några vanliga funktioner. För ett större program kan det dock vara bättre att göra dessa saker själv.
Ett exempel på hur du konfigurerar och använder ARRServiceUnity
finns i Självstudie: Visa fjärrrederade modeller.