Unity 向けに Remote Rendering を設定する

Unity で Azure Remote Rendering (ARR) を有効にするには、多少のプロジェクト構成が必要になる場合があります。 また、Unity 固有の側面を処理する専用の方法も用意されています。

プロジェクトの構成

OpenXR を使用する場合は、Unity の OpenXR 設定で 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.

その他の必須および推奨されるプロジェクト設定には、Azure Remote Rendering Unity パッケージに含まれている Project Validator を使用します。

  1. Unity エディター ツール バーの [Remote Rendering]\(リモート レンダリング\) メニューから [ValidateProject] エントリを選択します。
  2. [Project Validator] ウィンドウでエラーがないかを確認し、必要に応じてプロジェクトの設定を修正します。

起動とシャットダウン

Remote Rendering を初期化するには、RemoteManagerUnity を使用します。 このクラスは、ジェネリック RenderingConnection を呼び出しますが、Unity 固有の詳細を既に実装しています。 たとえば、Unity は特定の座標系を使用します。 RemoteManagerUnity.Initialize を呼び出すと、適切な規則が設定されます。 この呼び出しでは、リモートでレンダリングされるコンテンツを表示するために使用する必要がある Unity カメラを指定する必要もあります。

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

Remote Rendering をシャットダウンするには、RemoteManagerStatic.ShutdownRemoteRendering() を呼び出します。

RenderingSession が作成され、プライマリ レンダリング セッションとして選択された後、RemoteManagerUnity に登録する必要があります。

RemoteManagerUnity.CurrentSession = ...

完全なコード例

次のコード例は、Unity で Azure Remote Rendering を初期化するために必要なすべての手順を示しています。

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

便利な関数

セッション状態イベント

RemoteManagerUnity.OnSessionUpdate は、そのセッション状態が変化した際のイベントを出力します。詳細については、コード ドキュメントを参照してください。

ARRServiceUnity

ARRServiceUnity は、セットアップとセッション管理を効率化するためのオプションのコンポーネントです。 これには、アプリケーションが終了しているか、エディターで再生モードが終了したときにセッションを自動的に停止するオプションが含まれています。 必要に応じて、セッションのリースが自動的に更新されます。 セッション プロパティ (LastProperties 変数を参照) などのデータをキャッシュし、セッション状態の変更およびセッション エラーのイベントを公開します。

同時に複数の ARRServiceUnity のインスタンスは存在できません。 これは、いくつかの一般的な機能を実装することによって、すばやく作業を開始することを意図しています。 ただし、大規模なアプリケーションの場合は、これらの操作を自分で行うことをお勧めします。

ARRServiceUnity を設定して使用する方法の例については、「チュートリアル: リモートでレンダリングされたモデルの表示」を参照してください。

次のステップ