Dela via


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.

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.

För andra obligatoriska och rekommenderade projektinställningar använder du Project Validator som ingår i Azure Remote Rendering Unity-paketet:

  1. Välj posten ValidateProject från menyn Fjärrrendering i verktygsfältet i Unity-redigeraren.
  2. 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.Initializeanges 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.

Nästa steg