Sdílet prostřednictvím


Nastavení Remote Renderingu pro Unity

Pokud chcete povolit Azure Remote Rendering (ARR) v Unity, může se vyžadovat některá konfigurace projektu. Poskytujeme také vyhrazené metody, které se starají o některé aspekty specifické pro Unity.

Konfigurace projektu

Pokud používáte OpenXR, musí být v nastavení Unity OpenXR povolená funkce Azure Remote Rendering .

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.

V případě dalších požadovaných a doporučených nastavení projektu použijte validátor projektu zahrnutý v balíčku Unity služby Azure Remote Rendering:

  1. V nabídce Vzdálené vykreslování na panelu nástrojů editoru Unity zvolte položku ValidateProject.
  2. Zkontrolujte chyby v okně Validatoru projektu a v případě potřeby opravte nastavení projektu.

Spuštění a vypnutí

K inicializaci vzdáleného vykreslování použijte RemoteManagerUnitypříkaz . Tato třída volá obecné, RenderingConnection ale již implementuje podrobnosti specifické pro Unity za vás. Unity například používá konkrétní souřadnicový systém. Při volání RemoteManagerUnity.Initializeje nastavena správná konvence. Volání také vyžaduje, abyste zadali fotoaparát Unity, který by se měl použít k zobrazení vzdáleného vykresleného obsahu.

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

Pro vypnutí vzdáleného vykreslování zavolejte RemoteManagerStatic.ShutdownRemoteRendering().

RenderingSession Po vytvoření a výběru jako primární relace vykreslování je nutné ji zaregistrovat vRemoteManagerUnity:

RemoteManagerUnity.CurrentSession = ...

Úplný ukázkový kód

Tento příklad kódu ukazuje všechny kroky potřebné k inicializaci služby Azure Remote Rendering v 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();

Funkce pro pohodlí

Události stavu relace

RemoteManagerUnity.OnSessionUpdate generuje události pro změny stavu relace, podrobnosti najdete v dokumentaci ke kódu.

ARRServiceUnity

ARRServiceUnity je volitelná komponenta pro zjednodušení nastavení a správy relací. Obsahuje možnosti automatického zastavení relace při ukončení aplikace nebo režimu přehrávání v editoru. V případě potřeby automaticky obnoví zapůjčení relace. Ukládá data do mezipaměti, jako jsou vlastnosti relace (viz její LastProperties proměnná), a zveřejňuje události pro změny stavu relace a chyby relace.

Najednou nemůže existovat více instancí ARRServiceUnity . Je určená pro rychlejší zahájení implementace některých běžných funkcí. U větší aplikace ale může být vhodnější udělat ty věci sami.

Příklad nastavení a použití ARRServiceUnity najdete v tématu Kurz: Zobrazení vzdáleně vykreslených modelů.

Další kroky