nDisplay の概要

nDisplay レンダリング ネットワークで複数台のコンピュータがどのように連携するかについて説明します。

Windows
MacOS
Linux

すべての nDisplay のセットアップは、単一のマスター コンピュータと任意の台数の追加のコンピュータで構成されます。

  • ネットワークの各コンピュータは、プロジェクトのパッケージ化された実行ファイルの 1 つ以上のインスタンスを実行します。

  • Unreal Engine の各インスタンスでは、スクリーン、プロジェクターなどの 1 台以上のディスプレイ デバイスへのレンダリングを処理します。

  • Unreal Engine のインスタンスが処理する各デバイスが、同一の 3D シーン上の単一の視点をレンダリングします。これらの視点を、3D ワールドでの位置が現実世界のスクリーンまたは投影されたサーフェスの物理的な位置に一致するように設定することで、視聴者に仮想ワールド内にいるような錯覚をもたらします。

  • また、マスター ノードは、VRPN (Virtual-Reality Peripheral Networks) への接続を介して空間トラッカーおよびコントローラーからの入力を受け入れ、その入力を他のすべての接続コンピュータにレプリケートします。

nDisplay network overview

この図は、設定可能な nDisplay ネットワークを示しています。すべての nDisplay ネットワークと同様に、1 台の PC がマスター ノードとして機能します。このマスター ノードは、VRPN サーバーからシステムへの入力を受け入れます。VRPN サーバーでは、空間トラッキング デバイスやその他のコントローラー デバイスからの信号を中継します。このネットワークには、Unreal Engine プロジェクトの他のインスタンスを実行する他の PC も複数台含まれています。これらそれぞれのクラスタ ノードが、1 台以上のディスプレイ プロジェクターを制御します。

単一のアプリケーション インスタンスで 1 台のディスプレイ デバイスにレンダリングする。 これは、nDisplay の 1 台のホストをセットアップする最もシンプルな方法です。必要なプロジェクターまたはディスプレイ デバイスごとに、1 台のコンピュータをセットアップして、そのデバイスに対するレンダリングを処理します。そのコンピュータでは、Unreal Engine の単一のインスタンスを実行します。通常、このシナリオでは、3D 空間の単一の長方形を単一のビューポートにレンダリングするように、そのアプリケーション インスタンスを設定します。

複数のアプリケーション インスタンスのそれぞれが 1 台のディスプレイ デバイスにレンダリングする。 複数のグラフィックス カードを搭載し、複数台のディスプレイ デバイスの制御を処理できる複数台のコンピュータがネットワークにある場合、それらのコンピュータで Unreal Engine の複数のインスタンスを実行できます。Unreal Engine の各インスタンスに 3D 空間の 1 つの個別の長方形をレンダリングするよう指示し、それぞれの長方形を 1 つの個別のグラフィックス カードにディスパッチします。 このアプローチは、プロジェクトの CPU およびメモリの要件が低く、同一コンピュータ上で複数のインスタンスを十分実行できる場合は、適切に機能します。

単一のアプリケーション インスタンスで複数台のディスプレイ デバイスにレンダリングする。 このオプションでは、コンピュータ上で Unreal Engine アプリケーションの単一のインスタンスを実行します。ただし、シーンの 3D 空間の複数の個別の長方形を大きなウィンドウの異なる領域にレンダリングするように設定します。次に、NVIDIA MosaicNVIDIA Surround などのテクノロジーを使用して、その 1 つの大きなウィンドウを分割し、他のディスプレイ デバイスの個別の各領域にレンダリングします。 このシナリオで Mosaic または Surround と nDisplay を組み合わせて使用するメリットは、お使いのさまざまなモニターが同一平面上に並んで配置されていない場合でも、それらのモニターの物理的な配置に正確に一致するビューポートをレンダリングできる点です。ただし、すべてのビューポートは Unreal Engine の同一のインスタンスによってレンダリングされるため、同一のコンピュータに複数のグラフィックス カードが搭載されていてもメリットはありません。

nDisplay のコンポーネント

nDisplay では通常の Unreal システム アーキテクチャにコンポーネントをいくつか追加します。

  • Unreal Engine 内で機能するプラグイン。このプラグインでは、クラスタを構成するすべてのアプリケーション インスタンス間で情報をやり取りして、同期することで、すべてのインスタンスが同一フレームを同時にレンダリングできるようにしたり、各ディスプレイ デバイスがゲーム ワールドなどの正しい視錐台をレンダリングしたりできるようにします。

  • nDisplayLauncher という名前のネットワーク プロビジョニングおよび管理アプリケーション。ネットワークの 1 台のコンピュータでこのアプリケーションを実行することで、ネットワーク内のすべてのコンピュータ上でパッケージ化された Unreal Engine アプリケーションを自動的に起動および終了できます。

  • 各コンピュータで実行される nDisplayListener という名前の独立したリスナー アプリケーション。このアプリケーションでは、nDisplayLauncher からの受信リクエストをリッスンして、ローカル コンピュータでそれらのリクエストを処理します。

  • nDisplay で適切な台数のコンピュータで適切な数のインスタンスを起動するために必要なすべての設定が指定されている共有コンフィギュレーション ファイル。各コンピュータが、ゲームの 3D ワールドの適切な視点をレンダリングすることで、すべてのディスプレイ スクリーンまたはプロジェクターにまたがるシームレスなレンダリングによる錯覚を生み出します。「nDisplay コンフィギューション ファイルのリファレンス」を参照してください。

ブループリント API

ブループリント API を使用して、ゲームのランタイム ロジックで nDisplay システムのビヘイビアを制御できます。

これらの API で公開されている関数を利用するには、次の手順を実行します。

  1. クラスタ管理、入力デバイスのクエリ、nDisplay レンダリングなどに関連するほとんどの nDisplay ブループリント関数では、ブループリントで新しい [N Display (N ディスプレイ)] > Get DisplayCluster Module API ノードを作成します。 VRPN 入力デバイスおよび Unreal Engine 入力イベント間のバインディングと反映を設定する関数では、ブループリントで [N Display (N ディスプレイ)] > Get DisplayClusterInput Module API ノードを作成します。「UE4 入力にデバイス チャネルをバインドする」 も参照してください。

  2. ノードの [Out API (出力 API)] ピンをドラッグして、[Display Cluster (ディスプレイ クラスタ)] または [Display Cluster Input (ディスプレイ クラスタ入力)] カテゴリを確認します。

nDisplay を拡張する

nDisplay では、複数台のコンピュータと出力デバイス間でリアルタイムの同期レンダリングを制御するための、すぐに使用できる多くの機能を提供しています。ただし、多岐にわたる投影システムとディスプレイ サーフェスが存在するため、nDisplay レンダリング システムを拡張して、自分が選んだテクノロジーをサポートする必要がある場合があります。C++ のプログラミングに慣れており、nDisplay が一般的なユース ケースでどのように機能するかを理解している場合は、拡張可能なレンダリング API に基づいて構築することにより、nDisplay を拡張して追加のディスプレイおよびキャリブレーション テクノロジーをサポートできます。

nDisplay API では、レンダリング パイプラインを次のような複数の主要な概念に分割します。

  • DisplayClusterRenderingDevice は、基本的にネイティブ IStereoRendering インターフェースの拡張です。

  • DisplayClusterPostProcess は、特定のビューポートに後処理を適用するために使用できる 6 つのコールバックのグループです。

  • DisplayClusterProjectionPolicy は、カーブしたサーフェスにレンダリングするためのスケーラブル ディスプレイまたは MPCDI のサポート、または単純な平面投影の実行など、カスタマイズされた投影メソッドの処理を担います。

  • DisplayClusterRenderSyncPolicy は、nvSwapLock、vSync、または 24hz ディスプレイ向けのカスタマイズされたスキップフレーム同期など、さまざまな同期方法に対応するために使用されます。

上記の要素の独自の特殊化を作成することにより、nDisplay システムが生成する画像を、使用するあらゆる投影テクノロジーまたはディスプレイ テクノロジーに合わせてカスタマイズできるだけでなく、リリースされている Unreal Engine のソース コードを変更する必要なく nDisplay クラスタリング システムのすべての主要なメリットを活用することができます。

これらの要素の実装を設定する方法の作業モデルについては、PicpProjection モジュールおよび PicpMPCDI モジュールのソース コードを参照してください。これらのモジュールは、「Engine/Plugins/Runtime/nDisplay/Source」にある Unreal Engine のソースコードにあります。

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信