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 .
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:
- V nabídce Vzdálené vykreslování na panelu nástrojů editoru Unity zvolte položku ValidateProject.
- 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 RemoteManagerUnity
pří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.Initialize
je 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ů.