サーバーのサイズ
Azure Remote Rendering は、Standard
と Premium
の 2 つのサーバー構成で使用できます。
プリミティブの制限
プリミティブは、単一の三角形 (三角形メッシュ) または単一の点 (点群メッシュ) のいずれかです。 三角形メッシュは、点群と一緒にインスタンス化できます。その場合、セッション内のすべての点と三角形の合計が制限に対してカウントされます。
標準サイズ
サーバーのサイズが Standard
の Remote Rendering には、最大シーン サイズが 2,000 万プリミティブになります。 'Standard' のサーバー サイズでレンダラーがこの制限に達すると、レンダリングがチェッカーボードの背景に切り替えられます。
プレミアム サイズ
サイズが Premium
の Remote Rendering に最大のハード制限は適用されませんが、コンテンツがサービスのレンダリング機能を超えた場合はパフォーマンスが低下する可能性があります。 さらに、三角形メッシュの場合 (およびポイント クラウドとは異なり)、使用可能なグラフィックス メモリの量はハード制限です。 ソース メッシュと設定に依存する要因が多数存在するため、グラフィックス メモリの量を特定の数の三角形にマップすることはできません。
- テクスチャの数と解像度、
- メッシュ内の一意のジオメトリとサブメッシュのインスタンス化の量 (インスタンス化オブジェクトも参照)
- 使用されている頂点ストリーム 、
- サイズと共
Premium
に使用されるレンダリングコンポジション モード。
ポイント クラウドの場合、ポイント クラウド資産はデータ ストリーミング アプローチを使用するため、実際の制限はありません。 データ ストリーミングでは、レンダラーは、実際に表示されるジオメトリに基づいて、グラフィックス カードのメモリ予算を自動的に管理します。
サーバーのサイズを指定する
レンダリング セッションの初期化時に、望ましいサーバー構成の種類を指定する必要があります。 実行中のセッション内では変更できません。 次のコード例は、サーバーのサイズを指定する必要がある場所を示しています。
async void CreateRenderingSession(RemoteRenderingClient client)
{
RenderingSessionCreationOptions sessionCreationOptions = default;
sessionCreationOptions.Size = RenderingSessionVmSize.Standard; // or RenderingSessionVmSize.Premium
CreateRenderingSessionResult result = await client.CreateNewRenderingSessionAsync(sessionCreationOptions);
if (result.ErrorCode == Result.Success)
{
RenderingSession session = result.Session;
// do something with the session
}
}
void CreateRenderingSession(ApiHandle<RemoteRenderingClient> client)
{
RenderingSessionCreationOptions sessionCreationOptions;
sessionCreationOptions.Size = RenderingSessionVmSize::Standard; // or RenderingSessionVmSize::Premium
client->CreateNewRenderingSessionAsync(sessionCreationOptions, [](Status status, ApiHandle<CreateRenderingSessionResult> result) {
if (status == Status::OK && result->GetErrorCode() == Result::Success)
{
ApiHandle<RenderingSession> session = result->GetSession();
// do something with the session
}
});
}
PowerShell スクリプトの例では、arrconfig.json
ファイル内で望ましいサーバーのサイズを指定する必要があります。
{
"accountSettings": {
...
},
"renderingSessionSettings": {
"vmSize": "<standard or premium>",
...
},
レンダラーによるプリミティブの数の評価方法
制限テストで考慮されるプリミティブの数は、実際にレンダラーに渡されるプリミティブ (三角形と点) の数です。 このジオメトリは、通常、インスタンス化されたすべてのメッシュの合計ですが、例外もあります。 次のジオメトリは含まれません。
- ビューの視錐台の完全に外側にある読み込まれたモデル インスタンス。
- 階層状態のオーバーライド コンポーネントを使用して非表示に切り替えられたモデルまたはモデル パーツ。
したがって、すべての単一モデルに上限に近い数のプリミティブが含まれる複数のモデルが読み込まれる、standard
サイズを対象とするアプリケーションを作成することができます。 アプリケーションで一度に 1 つのモデルのみが表示される場合、チェッカーボードはトリガーされません。
プリミティブの数を確認する方法
standard
の構成サイズの予算制限に寄与するモデルまたはシーンのプリミティブの数を確認するには、次の 2 つの方法があります。
- モデル変換側で、変換出力 json ファイルを取得し、inputStatistics セクションの
numFaces
エントリを調べます。 この数値は、三角形メッシュの三角形の数と、点群内の点の数をそれぞれ示します。 - アプリケーションで動的なコンテンツが処理されている場合、レンダリングされるプリミティブの数は実行時に動的に照会できます。 パフォーマンス評価クエリを使用し、
PerformanceAssessment
構造体の 2 つのメンバーPolygonsRendered
とPointsRendered
の値の合計を確認します。 フィールドはPolygonsRendered
/PointsRendered
、レンダラーがプリミティブ制限にbad
達したときに設定されます。 この非同期クエリの後でユーザーが操作を実行できるようにするため、チェッカーボードの背景のフェードインでは常に遅延が発生します。 たとえば、ユーザーは、モデルのインスタンスを非表示にしたり削除したりすることができます。
価格
構成の種類ごとの価格の詳細な内訳については、「Remote Rendering の価格」のページを参照してください。