Remote Rendering セッションの管理

完了

Azure Remote Rendering には、クラウド サーバーとの対話を管理し、Remote Rendering セッションに関する情報を照会するためのセッション管理 REST API が用意されています。 C# と C++ では、RemoteRenderingClientRenderingSession のクラスを使用してセッションを作成、更新、停止できます。 このユニットでは、Remote Rendering セッションを管理する方法について説明します。

セッションを作成する

次のコマンドで、セッションの作成が要求されます。

Invoke-WebRequest -Uri "$endPoint/v1/accounts/$accountId/sessions/create" -Method Post -ContentType "application/json" -Body "{ 'maxLeaseTime': '4:0:0', 'models': [], 'size': 'standard' }" -Headers @{ Authorization = "Bearer $token" }

新しいセッションを作成するときは、maxLeaseTime パラメーターを使用して、最大リース時間を (通常は 1 から 8 時間の範囲内で) 指定できます。 最大リース時間は、ホストが入力を受け入れる期間です。 必要に応じて、アクティブなセッションのリース時間を延長できます。

要求からの応答は sessionId を返し、これによってセッションに関する情報を照会できます。 この UUID とセッションに関するいくつかの基本的な情報は 30 日間保持されるため、セッションが停止した後でも、その情報を照会することができます。

セッションに接続します

セッションの準備ができたら、クライアント デバイスがそれに接続し、モデルを読み込んで変更するコマンドを送信できます。 RenderingSession.IsConnectedtrue の場合、RenderingSession.Connection によって RenderingConnection のインスタンスが返されます。これにはモデルの読み込み、エンティティの操作、レンダリングされたシーンに関する情報の照会を行うための関数が含まれています。

1 つのアプリケーションから必要な数のセッションを作成し、観察し、シャットダウンできますが、一度に Remote Rendering セッションに接続できるデバイスは 1 つだけです。 他のデバイスによるセッションへの接続試行は失敗します。 セッションが停止した後にのみ、別のデバイスを接続できます。

Remote Rendering ホストは一度に 1 台のクライアント デバイスのみに対応するため、セッションに接続したクライアントはレンダリングされるコンテンツを排他的に制御できます。 クライアント接続が 1 つということは、制御できない理由でレンダリングのパフォーマンスが変化することがないことも意味します。

セッションを停止する

セッションが停止するのは、最大リース時間を超過した場合、またはセッションを手動で停止した場合です。 セッションを手動で停止するには、RenderingSession.StopAsync を呼び出します。 いくつかの失敗でも、セッションが停止する場合があります。 セッションが停止すると、課金は行われなくなり、読み込まれたモデルなどの以前の状態はすべて破棄されます。

セッションが停止したら、RenderingSession.SessionUuid() を使用して永続的なセッション ID を照会できます。 アプリケーションは、セッション ID を使用して RemoteRenderingClient.OpenRenderingSessionAsync を呼び出して、そのセッションにバインドし、ローカルにキャッシュできます。