Remote Rendering voor Unity instellen
Als u Azure Remote Rendering (ARR) in Unity wilt inschakelen, is mogelijk een bepaalde projectconfiguratie vereist. We bieden ook speciale methoden die zorgen voor enkele Unity-specifieke aspecten.
Projectconfiguratie
Wanneer u OpenXR gebruikt, moet de Azure Remote Rendering-functie zijn ingeschakeld in de Unity OpenXR-instellingen.
Gebruik voor andere vereiste en aanbevolen projectinstellingen de Project Validator die is opgenomen in het Azure Remote Rendering Unity-pakket:
- Kies de vermelding ValidateProject in het menu Remote Rendering op de werkbalk van de Unity-editor.
- Controleer waar nodig het venster Project Validator op fouten en los projectinstellingen op.
Opstarten en afsluiten
Als u Remote Rendering wilt initialiseren, gebruikt u RemoteManagerUnity
. Deze klasse roept de algemene RenderingConnection
gegevens aan, maar implementeert al Unity-specifieke details voor u. Unity maakt bijvoorbeeld gebruik van een specifiek coördinatensysteem. Bij het aanroepen RemoteManagerUnity.Initialize
wordt de juiste conventie ingesteld. Voor de aanroep moet u ook de Unity-camera opgeven die moet worden gebruikt voor het weergeven van de extern gerenderde inhoud.
// 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);
Als u Remote Rendering wilt afsluiten, roept u aan RemoteManagerStatic.ShutdownRemoteRendering()
.
Nadat een sessie RenderingSession
is gemaakt en gekozen als de primaire renderingsessie, moet deze worden geregistreerd bij RemoteManagerUnity
:
RemoteManagerUnity.CurrentSession = ...
Volledige voorbeeldcode
In dit codevoorbeeld ziet u alle stappen die nodig zijn voor het initialiseren van Azure Remote Rendering 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();
Gemaksfuncties
Sessiestatus-gebeurtenissen
RemoteManagerUnity.OnSessionUpdate
verzendt gebeurtenissen voor wanneer de sessiestatus wordt gewijzigd, raadpleegt u de codedocumentatie voor meer informatie.
ARRServiceUnity
ARRServiceUnity
is een optioneel onderdeel om het instellen en sessiebeheer te stroomlijnen. Het bevat opties om de sessie automatisch te stoppen wanneer de toepassing wordt afgesloten of de afspeelmodus wordt afgesloten in de editor. De sessielease wordt automatisch vernieuwd wanneer dat nodig is. Hiermee worden gegevens zoals de sessie-eigenschappen in de cache opgeslagen (zie de LastProperties
variabele) en worden gebeurtenissen weergegeven voor wijzigingen in de sessiestatus en sessiefouten.
Er kunnen niet meer dan één exemplaar tegelijk ARRServiceUnity
zijn. Het is bedoeld om u sneller op weg te helpen door een aantal algemene functionaliteit te implementeren. Voor een grotere toepassing kan het echter beter zijn om die dingen zelf te doen.
Zie Zelfstudie: Extern gegenereerde modellen weergeven voor een voorbeeld van het instellen en gebruiken ARRServiceUnity
van deze zelfstudie.