4.27 以降でも、引き続き .cfg
と .ndisplay
の両方のコンフィギュレーション ファイルをプロジェクトの コンテンツ ブラウザ にインポートできます。その際、それらは .uasset
という新しい形式に変換されます。
クラスタを起動するために、.ndisplay
コンフィギュレーション ファイルをエクスポートして使用しできます。この場合、.ndisplay
ファイルには nDisplay コンフィグ アセット でのみ構成できる追跡機能やその他の機能は付属していません。
nDisplay クラスタの構成には、nDisplay 3D コンフィグ エディタ を使用することをお勧めします。
nDisplay システムのほとんどの設定要素は、単一のコンフィギュレーション ファイルで定義します。このファイルでは、ネットワークを構成するコンピュータ、各コンピュータ上で Unreal Engine がレンダリングするウィンドウとビューポートの特性、各ビューポートがレンダリングする必要のある仮想ワールドのパーツ、受け入れる入力デバイスのタイプなどが指定されます。
このページでは、nDisplay コンフィギュレーション ファイルで使用可能なすべての設定について説明します。
nDisplay コンフィギュレーション ファイルの概要を把握し、独自のコンフィギュレーション ファイルを作成するには、手始めに nDisplay プラグインで提供されているサンプル コンフィギュレーションを使用することをお勧めします。NDisplay テンプレートからプロジェクトを作成した場合、これらのファイルは「Content/ExampleConfigs
」の下にある「Project」フォルダにあります。その他の場合、これらのファイルは、「Templates/TP_nDisplayBP/Content/ExampleConfigs
」の下にある Unreal Engine のインストール フォルダにあります。
nDisplay コンフィギュレーション ファイルの構造は、視覚化のレンダリングに使用するさまざまなタイプのコンポーネントに直接関連付けられています。
-
コンフィギュレーション ファイルには、設定するコンポーネントのタイプごとに独自の行があり、ユーザーが割り当てる文字列 ID で識別されます。特定のコンフィギュレーション セクションで他のコンフィギュレーション セクションを参照する必要がある場合は、この文字列 ID を使用します。
-
このファイルで設定するコンポーネントの多くには、仮想 3D 空間における位置 (および多くの場合回転状態) が定義されています。各オブジェクトの位置と回転状態は、そのオブジェクトの 親 が基準となります。デフォルトでは、すべてのオブジェクトの親は VR 空間の原点です。原点は、VR 空間が開始すると見なされる 3D ワールド空間の任意の点です。また、1 つ以上のコンポーネントの親として機能することができる scene_nodes という特殊な名前付きのトランスフォームを 3D 空間で構成することもできます。このトランスフォームを構成することで、スクリーン、カメラ、その他のコンポーネントの空間レイアウトを簡素化できます。 scene_nodes を使用して、すべてが仮想空間の同じポイントから始まる 3D トランスフォームの階層を構築する方法については、以下の「コンフィギュレーション ファイルのシーン構造体の例」のセクションを参照してください。
-
仮想 3D 空間または実世界の物理空間での測定値を参照するすべてのパラメータは、特に指定のない限り、メートル単位および度単位の値が想定されます。これには、スクリーン、シーン ノード、カメラなどが含まれます。
-
スクリーン スペースの測定値を参照するすべてのパラメータは、ピクセル単位の値が想定されます。これには、ウィンドウとビューポートが含まれます。
Cluster Node コンフィギュレーション
nDisplay ネットワークで使用する Unreal Engine アプリケーションの各インスタンスで、cluster_node コンフィギュレーションを定義する必要があります。各 cluster_node コンフィギュレーションには、メイン アプリケーション ウィンドウのプロパティを定義する window コンフィギュレーション セクションへの参照が含まれている必要があります。
cluster_node コンフィギュレーションでは、そのアプリケーション インスタンスを実行するコンピュータのホスト名または IP アドレスも定義します。cluster_node コンフィギュレーションごとに異なる物理コンピュータを設定したり、同一ホスト上で実行される複数の cluster_node コンフィギュレーションを設定することもできます。
コンフィギュレーションの例:
この例では、プライマリ ノード (ネットワークごとに 1 つ) を設定します。
[cluster_node] id=node_front addr=192.168.0.1 window=wnd_LT sound=true port_cs=41001 port_ss=41002 master=true
この例では、プライマリ以外のクラスタ ノードを示しています。
[cluster_node] id=node_left addr=192.168.0.2 window=wnd_large sound=false
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | cluster node コンフィギュレーションの一意の名前。 | |
addr | 必須 | Unreal Engine のインスタンスを実行するコンピュータの IP アドレス。これは IPv4 アドレスである必要があります。IPv6 はサポートされていません。 | |
window | 必須 | Unreal Engine アプリケーションのインスタンスのメイン ウィンドウのサイズと位置を定義する window コンフィギュレーションの名前。 | |
sound | 省略可能 | false |
Unreal Engine のインスタンスでサウンドを再生するかどうかを指定します。オプションとして、デフォルト値は false です。 |
port_cs | 省略可能 | 14001 |
プライマリ ノードがクラスタの他のノードと通信するために使用するポート。port_cs はクラスタ同期用、port_ss はスワップ同期用、port_ce クラスタ イベント用です。オプションとして、デフォルト値はそれぞれ「14001 」、「14002 」、および「14003 」です。 |
port_ss | 省略可能 | 14002 |
プライマリ ノードがクラスタの他のノードと通信するために使用するポート。port_cs はクラスタ同期用、port_ss はスワップ同期用、port_ce クラスタ イベント用です。 |
port_ce | 省略可能 | 14003 |
プライマリ ノードがクラスタの他のノードと通信するために使用するポート。port_cs はクラスタ同期用、port_ss はスワップ同期用、port_ce クラスタ イベント用です。 |
master | 省略可能 | false |
Unreal Engine のインスタンスがクラスタのプライマリ ノードであるかどうかを指定します。このパラメータを「true 」に設定できるのは、1 つの cluster_node セクションのみです。 |
gpu | 省略可能 | Unreal のこのインスタンスがレンダリングで使用する GPU のインデックスを指定します。 この方法で GPU を設定すると |
Window コンフィギュレーション
各 window コンフィギュレーションでは、Unreal Engine アプリケーションのインスタンスのメイン ウィンドウの一連のプロパティを定義します。このコンフィギュレーションを使用して、nDisplay がアプリケーションを起動したときのウィンドウの開始サイズや配置、ウィンドウをフルスクリーンで表示するかどうかなどを設定します。
また、1 つ以上の viewport コンフィギュレーションも指定します。このコンフィギュレーションでは、nDisplay でシーンのレンダリングを表示するメイン アプリケーション ウィンドウ内の特定の領域を識別します。
コンフィギュレーションの例:
この例では、単一のビューポートを含むアプリケーション ウィンドウを設定します。
[window] id=wnd_one fullscreen=false WinX=0 WinY=0 ResX=640 ResY=480 viewports=vp_LT
この例では、4 つの個別のビューポートを含むアプリケーション ウィンドウを設定します。
[window] id=wnd_four fullscreen=false WinX=0 WinY=0 ResX=640 ResY=480 viewports="vp_LT,vp_RB,vp_LB,vp_RT"
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | window コンフィギュレーションの一意の名前。 | |
fullscreen | 省略可能 | false |
ウィンドウをフルスクリーン モードで実行するかどうかを指定します。この値を「false 」に設定する場合は、以下の WinX、WinY、ResX、および RexY の各設定を指定する必要があります。 |
WinX | 省略可能 | 0 |
デスクトップ上のアプリケーション ウィンドウの左上隅の位置をスクリーン スペースのピクセル単位で指定します。 |
WinY | 省略可能 | 0 |
デスクトップ上のアプリケーション ウィンドウの左上隅の位置をスクリーン スペースのピクセル単位で指定します。 |
ResX | 必須 | 0 |
アプリケーション ウィンドウの水平方向のサイズをスクリーン スペースのピクセル単位で指定します。フルスクリーン を false に設定する場合、この値が必要です。フルスクリーン を true に設定する場合、この値は無視されます。 |
ResY | 必須 | 0 |
アプリケーション ウィンドウの垂直方向のサイズをスクリーン スペースのピクセル単位で指定します。フルスクリーン を false に設定する場合、この値が必要です。フルスクリーン を true に設定する場合、この値は無視されます。 |
viewports | 必須 | nDisplay でレンダリングされたシーンのビューを表示するメイン アプリケーション ウィンドウの領域を定義する 1 つ以上の viewport コンフィギュレーション セクションを参照します。
複数のビューポートを指定する場合は、viewport コンフィギュレーションの複数のセクション名の間をコンマで区切ってリストし、そのリストを引用符で囲む必要があります。上記の「コンフィギュレーションの例」セクションの 使用するビューポートの定義がウィンドウのサイズを超えないようにしてください。 |
|
postprocess | 省略可能 | nDisplay がウィンドウに出力する前に最後に生成される出力画像に適用するポストプロセス操作を定義する 1 つ以上の postprocess コンフィギュレーション セクションの ID を指定します。オプションとして、出力する前に最終画像をトランスフォームする必要がある場合のみ、このパラメータを使用します。複数のポストプロセス コンフィギュレーションを指定する場合、nDisplay は順番にトランスフォーメーションを適用します。 |
Viewport コンフィギュレーション
上記の各 window コンフィギュレーションでは、1 つ以上の viewport コンフィギュレーションを参照します。参照される各コンフィギュレーションでは、nDisplay がシーンのレンダリングされたビューを表示する必要のあるゲーム ウィンドウの長方形の領域を定義します。
通常、ビューポートはアプリケーション ウィンドウの左上隅から開始して、その幅と高さが親ウィンドウを埋めるように設定されます。ただし、場合によっては、親アプリケーション ウィンドウ内でビューポートのオフセットを調整する必要があります。例えば、一部が重なる 2 つのプロジェクターをセットアップする必要がある場合、または異なる位置で複数の個別のビューポートをホストする 1 つのアプリケーション ウィンドウが必要な場合は、オフセットを調整することをお勧めします。
nDisplay はビューポート レンダリング用に multi-GPU (mGPU) をサポートしているので、特定のビューポートをレンダリングするために 1 つの GPU デバイスを指定して、フレームを別の GPU にコピーして表示することができます。バーチャル プロダクションとインカメラ VFX の例では、インナー フラスタムは 2 つめの GPU で完全にレンダリングすることができるので、パフォーマンスとハードウェア使用量が改善します。NVLink を使うと NVIDIA GPU で、CPU を介さずに GPU から GPU へ直接メモリを転送することができます。NVLink を使わなければ、メモリ転送はピアツーピア (P2P) ではありますが、PCIe の CPU を経由しなければならないので遅くなります。
nDisplay Launcher または SwitchboardNDisplay を起動して mGPU を使用するときに、MaxGPUCount=2 をカスタム コマンドライン引数に追加します。
コンフィギュレーションの例:
[viewport] id=vp_LT X=0 Y=0 width=300 height=220 projection=proj_simple_LT
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | viewport コンフィギュレーションの一意の名前。 | |
X | 省略可能 | 0 |
メイン アプリケーション ウィンドウのスクリーン スペース内のビューポートの左上隅の座標 (ピクセル単位)。なお、この値は、スクリーン自体の左上隅を基準としているのではなく、アプリケーション ウィンドウの左上隅を基準としています。 |
Y | 省略可能 | 0 |
メイン アプリケーション ウィンドウのスクリーン スペース内のビューポートの左上隅の座標 (ピクセル単位)。なお、この値は、スクリーン自体の左上隅を基準としているのではなく、アプリケーション ウィンドウの左上隅を基準としています。 |
width | 必須 | 0 |
レンダリングされたフレームの幅と高さ (ピクセル単位)。これは、ビューポートを使用するすべての window コンフィギュレーションの size パラメータで設定されたゲーム ウィンドウのサイズより大きくすることはできません。 |
height | 必須 | 0 |
レンダリングされたフレームの幅と高さ (ピクセル単位)。これは、ビューポートを使用するすべての window コンフィギュレーションの size パラメータで設定されたゲーム ウィンドウのサイズより大きくすることはできません。 |
projection | 必須 | ビューポートに描画する必要のある仮想ワールドのレンダリングされたビューを定義する projection コンフィギュレーションの名前。 | |
camera | 省略可能 | このビューポートに表示させたい camera コンフィギュレーション セクションの ID。デフォルトで、ビューポートは nDisplay が現在使用している カメラ セクションの位置からシーンをレンダリングします。ただし、このパラメータを使うと、デフォルトの nDisplay カメラをオーバーライドして、別の カメラ セクションのビュー コンフィギュレーションのポイントからシーンをレンダリングさせることができます。 | |
buffer_ratio | 省略可能 | 1.0 |
0 と 1 の間の値で、このビューポートをレンダリングするために nDisplay が使用するレンダー ターゲット テクスチャのディメンションをスケールします。値を低くするほど nDisplay によって生成される画像の解像度を効果的に低くします。これにより最終画像の品質は下がりますが、レンダリングは速くなります。 |
rtt | 省略可能 | false |
ビューポートはテクスチャへレンダリングするかどうかを指定します。 |
gpu_node | 省略可能 | 0 | ビューポートをレンダリングし、フレームをディスプレイと直接対応する GPU にコピーするために割り当てられた GPU デバイス。デフォルト GPU はコンピュータに最初にインストールされます。 |
allow_gpu_transfer | 省略可能 | 1 | このオプションを有効にすると、それぞれのビューポートがそれぞれの GPU に転送されます。このオプションを無効にすると、他の GPU へのコピーを防ぐことができます。 |
share | 省略可能 | このオプションを有効にすると、nDisplay はビューポートに Texture Sharing を使用し、他のアプリケーションからテクスチャの送受信を行います。詳細は Texture Share を参照してください。 |
通常、コンピュータにインストールおよび有効化された最初の GPU は 0 と呼ばれます。その他の GPU は 1、2、... 、n と数字が増えていきます。使用しているコンピュータの設定の OS 情報で GPU デバイス番号を確認することができます。Windows の場合、GPU デバイス番号は タスクマネージャー で確認できます。
- タスクマネージャー を開きます。
- [Performance (パフォーマンス)] タブに切り替えます。
-
ウィンドウの左側にはマシンに入っている GPU とデバイス番号が表示されます。
GPU が 1 つのコンピュータは、タスクマネージャで GPU は「GPU 0」というラベルが付きます。
Projection コンフィギュレーション
上記の各 viewport コンフィギュレーションは、ビューポートで描画の必要があるレンダリングされた画像を定義する projection コンフィギュレーションを参照します。
最も一般的な状況ではプロジェクション タイプ simple
を使用します。これは、nDisplay コンフィギュレーション ファイルの他の場所の screen コンフィギュレーションのセクションで定義された視錐台を使用して、現在のカメラの位置から仮想ワールドをレンダリングするタイプです。
mpcdi
、easyblend
、vioso
、domeprojection
などの他の投影タイプでは、他の方法を使用してビューポート用のレンダリングされたコンテンツを定義します。また、画像を長方形のビューポートにレンダリングする前に追加の修正を行ったり、追加のレンダリング手法を適用したりすることもできます。例えば、投影では、カーブしたサーフェスで表示した場合に自然に見えるように、画像を押しつぶしたり、伸ばしたり、歪ませたりすることができます。
コンフィギュレーションの例:
次の例では、最も単純なユース ケースを示します。このユース ケースは、レンダリングされた画像を歪めたり修正したりすることなく、scr_LT
という名前のスクリーン コンフィギュレーションで定義された視錐台をビューポートに直接ルーティングします。
[projection] id=proj_simple_LT type=simple screen=scr_LT
次の例では、プロジェクション タイプを使用して、スケーラブル ディスプレイのコンフィギュレーション ファイルで定義されたサーフェスにレンダリングする方法を示しています。
[projection] id=proj_easyblend_1 type="easyblend" file="D:\eb_data\ScalableData.pol_1" origin=easyblend_origin_1 scale=0.1
次の例では、プロジェクション タイプmpcdi
を使用して、MPCDI コンフィギュレーション ファイルで定義されたサーフェスにレンダリングする方法を示しています。
[projection] id=proj_mpcdi_LT type="mpcdi" file="D:\rot90_flat.mpcdi" buffer="Mosaic" region="Monitor_R" origin=mpcdi_origin
次の例では、プロジェクションタイプ mpcdi
を使用して、指定された .png
ファイルで定義されたアルファ ブレンディング マップを使用して、指定された .pfm
ジオメトリ ファイルで定義されたカーブしたサーフェスにレンダリングする方法を示しています。
[projection] id=proj_mpcdi_LT type="mpcdi" pfm="D:\geom_displayLeft1.pfm" alpha="D:\Left1blend.png" alpha_gamma=2 origin=mpcdi_origin
次の例では、 vioso
投影タイプを使用して、ネイティブ VIOSO ファイルで定義されたサーフェスにレンダリングする方法を示しています。
[projection] id=proj_vioso_1 type="vioso" file="D:\left.vwf" origin=vioso_origin base="[1000 0 0 0] [0 1000 0 0] [0 0 1000 0] [0 0 1000 1]"
次の例では、 domeprojection
投影タイプを使用して、 .xml
キャリブレーション ファイルの DomeProjection で定義されたサーフェスにレンダリングする方法を示しています。
[projection] id=proj_domeprojection_1 type=domeprojection file="D:\config.xml" origin=domeprojection_origin channel=0
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 省略可能 | projection コンフィギュレーションの一意の名前。 | |
type | 省略可能 | nDisplay がビューポートで描画するレンダリングされた画像を生成する方法を定義する投影タイプ。このパラメータでは、次の値を受け入れます。
|
プロジェクションが type=simple
の場合、さらに次のパラメータも受け入れます。
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
screen | 必須 | Unreal Engine アプリケーションがビューポートにレンダリングする必要のある 3D 空間の視錐台を定義する screen コンフィギュレーションの名前。 |
プロジェクションが type=easyblend
の場合、さらに次のパラメータも受け入れます。
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
file | 必須 | ビューポートを投影するサーフェスを定義するスケーラブル ディスプレイのキャリブレーション ファイルのパスとファイル名 (.ol または .pol 拡張) 。 | |
origin | 省略可能 | プロジェクションの開始点を定義する scene_node コンフィギュレーション セクションの ID。これにより、スケーラブル ディスプレイ キャリブレーション ファイルで定義された参照のフレームが、Unreal Engine のレベルの仮想空間にマッピングされます。 | |
scale | 省略可能 | 1.0 |
プロジェクションで使用するスケーリングの係数。この値は EasyBlend のキャリブレーションに使用する単位によって異なります。メートルを使用する場合は 1.0 のままにします。デシメートルの場合は 0.1 を使用します。センチメートルの場合は 0.01 を使用します。インチの場合は、 0.0254 を使用します。 |
プロジェクションが type=mpcdi
または type=picp_mpcdi
の場合、さらに次のパラメータも受け入れます。
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
origin | 省略可能 | プロジェクションの開始点を定義する scene_node コンフィギュレーション セクションの ID。これにより、MPCDI キャリブレーション ファイル (または .pfm ジオメトリ ファイル) で定義された参照のフレームが Unreal Engine のレベルの仮想空間にマッピングされます。 |
|
オプション 1:MPCDI ファイルを使用する | |||
file | 必須 | ビューポートを投影するサーフェスのジオメトリを定義する .mpcdi ファイルのパスとファイル名。 |
|
buffer | 必須 | ビューポートの投影領域を定義する .mpcdi ファイル内のバッファの ID。 |
|
region | 必須 | レンダリング先にする必要のある上記で設定したバッファ内の領域の ID。 | |
オプション 2:明示的なデータを使用する | |||
pfm | 必須 | プロジェクションのためのジオメトリを含む pfm ファイルを指定します。 |
|
scale | 省略可能 | 1.0 |
プロジェクションで使用するスケーリングの係数を指定します。 |
ue4space | 省略可能 | false |
Unreal Engine の座標系で .pfm ファイルのジオメトリがすでに表されているかどうかを示します。 |
alpha | 省略可能 | 投影の強度を定義するアルファ ブレンド マップとして使用する .png ファイルのパスとファイル名。オプションです。 |
|
alpha_gamma | 省略可能 | alpha 設定を使用する場合、alpha_gamma 設定を使用すると、アルファ ガンマの乗数を指定できます。オプションです。 |
|
beta | 省略可能 | alpha 設定を使用する場合、beta 設定を使用すると、ベータ ブレンド マップとして使用する .png ファイルのパスとファイル名を指定できます。これは黒レベルの調整を定義します。オプションです。 |
nDisplay では、現在、MPCDI バージョン 1.0、および 2D および A3D (すなわち Advanced 3D) のプロファイル タイプのみをサポートします。
type=vioso
である投影では、さらに次のパラメータも受け入れます。
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
file | 必須 | ビューポートを投影するサーフェスを定義する VIOSO キャリブレーション ファイルのパスとファイル名 (.vwf 拡張) 。 |
|
origin | 省略可能 | プロジェクションの開始点を定義する scene_node コンフィギュレーション セクションの ID。これにより、VIOSO ディスプレイ キャリブレーション ファイルで定義された参照のフレームが、Unreal Engine のレベルの仮想空間にマッピングされます。 | |
base | 省略可能 | キャリブレーション空間を UE 座標システムに変換するためのカスタムベースのマトリックス。 |
type=domeprojection
である投影では、さらに次のパラメータも受け入れます。
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
file | 必須 | ビューポートを投影するサーフェスを定義する DomeProjection キャリブレーション ファイルのパスとファイル名 (.xml 拡張) 。 |
|
channel | 必須 | 0 | キャリブレーション ファイルにマッピングされる出力。ディスプレイにつき 1 チャンネル。 |
origin | 省略可能 | プロジェクションの開始点を定義する scene_node コンフィギュレーション セクションの ID。これにより、DomeProjection ディスプレイ キャリブレーション ファイルで定義された参照のフレームが、Unreal Engine のレベルの仮想空間にマッピングされます。 |
プロジェクションが type=manual
の場合は、nDisplay がレンダリングするための視点回転と錐台を定義するために、次のパラメータも受け入れます。マトリクスまたは角度のいずれかを使って錐台を設定することができます。
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
rot | 省略可能 | 0,0,0 |
The view rotation.ピッチ、ヨー、ロール値で表します。例えば rot="P=0,Y=0,R=0" です。 |
オプション 1:メトリクス (モノスコピック) を使用する | |||
matrix | 必須 | モノスコピック レンダリングを使用する場合、この 4x4 マトリクスを使って視錐台を定義します。 | |
オプション 2:マトリクス (ステレオスコピック) を使用する | |||
matrix_left と matrix_right | 必須 | ステレオスコピック レンダリングを使用する場合、4x4 マトリクスのペアを使って左目と右目の両方の視錐台を定義します。例えば、matrix_left="[0.5 0 0 0] [0 0.999999 0 0] [1 0 0 1] [0 0 1 0]" matrix_right="[0.500001 0 0 0] [0 1 0 0] [-1 0 0 1] [0 0 1 0]" . |
|
角度を使用する | |||
オプション 3:錐台 (モノスコピック) を使用する | |||
frustum | 必須 | モノスコピック レンダリングを使用する場合、このプロパティを使って角度を錐台の左、右、上、下に設定することができます。例えば、frustum="l=0 r=15 t=10 b=-10" 。ビューベクターに相対する角度で値を設定します。 |
|
オプション 3:錐台 (ステレオスコピック) を使用する | |||
matrix_left と matrix_right | 必須 | モノスコピック レンダリングを使用する場合、このプロパティを使って、左目と右目の両方に対して角度を錐台の左、右、上、下に設定することができます。例えば、frustum_left="l=-15 r=0 t=10 b=-10" frustum_right="left=0 right=15 top=10 bottom=-10" 。ビューベクターに相対する角度で値を設定します。 |
type=camera
が他の追加パラメータを受け付けない場合のプロジェクション。実行時にプループリントまたは C++ API のいずれかを使用してプロジェクション ポリシーに対してカメラを設定します。
type=mesh
と type=picp_mesh
が他の追加パラメータを受け付けない場合のプロジェクション。実行時にプループリントまたは C++ API のいずれかを使用してプロジェクション ポリシーに対してスタティックメッシュ コンポーネントを設定します。
Screen コンフィギュレーション
プロジェクション タイプ simple
使用する各種出力ディスプレイは、3D VR 空間におけるサイズと配置が定義済みの長方形で定義される視錐台を使用して、現在のカメラ位置からシーンをレンダリングします。このような各長方形は、screen コンフィギュレーションで定義します。通常、これらの各プロジェクション スクリーンは、プロジェクション スクリーンのレンダリングに使用する物理スクリーンと同じ寸法を VR 空間に持ちます。
スクリーンのピボット ポイントは、常に正確な中間点にあります。
コンフィギュレーションの例:
この定義は、親のすぐ前にある 3m x 3m のスクリーンを表します。スクリーンのピボット ポイントは size パラメータで定義された長方形の中心にあるため、Z 軸で 1.5 m のオフセットを追加して、スクリーンをその高さの半分のみ上に移動します。
[screen] id=screen_front loc="X=1.5.Y=0,Z=1.5" rot="P=0,Y=0,R=0" size="X=3,Y=3" parent=screens
ビューアの左側のスクリーンを定義するには、スクリーンを左に移動して (Y 軸の負の値)、ローカル Y 軸を中心に回転します (ヨー)。
[screen] id=screen_left loc="X=0,y=-1.5,Z=1.5" rot="P=0,Y=-90,R=0" size="X=3,Y=3" parent=screens
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | スクリーン コンフィギュレーションの一意の名前。 | |
loc | 省略可能 | 0,0,0 |
親を基準とした VR 空間でのスクリーンの中心の位置。 |
rot | 省略可能 | 0,0,0 |
スクリーンの向きのピッチ (P)、ヨー (Y) およびロール (R) の角度 (度単位)。 |
size | 必須 | 0,0 |
ローカル X 軸と Y 軸に沿った長方形のスクリーンの合計サイズ (メートル単位)。 |
parent | 省略可能 | オブジェクトの親として機能する必要のある scene_node コンフィギュレーションの名前。このパラメータはオプションです。親を指定すると、loc パラメータおよび rot パラメータで設定する値は、その親の位置が基準となります。親を指定しない場合、loc パラメータおよび rot パラメータで設定する値は、VR ルートが基準となります。 | |
tracker_id | 省略可能 | 時間の経過に伴いカメラの位置を制御したい VR デバイスを定義する input コンフィギュレーションの名前。省略可能です。このパラメータを省略すると、画面の位置は VR 空間で固定されます。 | |
tracker_ch | 省略可能 | tracker_id を指定した場合、このパラメータで nDisplay がトラッキング データを読み取るデバイスのチャネルを指定します。 |
PostProcess コンフィギュレーション
postprocess コンフィギュレーションは、ウィンドウ に対して生成された画像をレンダリング前に Unreal Engine のインスタンスによってどのようにポストプロセスするかを定義します。 nDisplay は現在、 OutputRemap
と TextureShare
の 2 つのポストプロセス タイプをサポートしています。
OutputRemap
を使用して、nDisplay によって生成された 2D イメージをアプリケーション ウィンドウの 2D 領域にマップする方法を制御できます。例えば、出力画像を部分的に平行移動、回転、スケールしてアプリケーション ウィンドウの異なる領域に表示させることができます。この操作を行うには、UV マッピング設定がされた平面ジオメトリを含む .obj が必要です。nDisplay は プレーンに対して設定した UV マッピングを使って、出力画像をどのようにアプリケーション ウィンドウの各部分に表示するのか決定します。
TextureShare
を使用して、他のアプリケーションからテクスチャを受け取り、指定したビューポートにそれを表示することができます。この操作を行うためには、Texture Share アイテムの名前とそのテクスチャを表示するビューポートでポストプロセスを定義する必要があります。
コンフィギュレーションの例:
次の例は、 2 つの .obj ファイルを使って OutputRemap ポストプロセス タイプを使用する方法を示しています。
[window] id=somewindow ... postprocess="pp_1, pp_2"
[postprocess] id=pp_1 type="OutputRemap" file="remap_1.obj"
[postprocess] id=pp_2 type="OutputRemap" file="remap_2.obj"
次の例は、 TextureShare を使って vp_1 ビューポート用に出力されたフレームを外部アプリケーションと共有し、サードパーティ ソースからテクスチャを受け取り、それを vp_ext ビューポートに表示する例を示しています。
[window] id=somewindow viewports="vp_1" fullscreen="false" 窶ヲ postprocess="pp_sharenode_ext"
[viewport] id=vp_1 ... projection="proj_screen_1" share=true
[viewport] id=vp_ext ... projection=""
[postprocess] id=pp_sharednode_ext type="TextureShare" destination="vp_ext" source="thirdpartyapp_viewport_rendering"
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | ポストプロセス コンフィギュレーションの一意の名前。 | |
type | 必須 | 実行するポストプロセスのタイプです。現在 OutputRemap タイプのみサポートしています。 |
|
OutputRemap コンフィギュレーション | |||
file | 必須 | アプリケーション ウィンドウに描画する前に、レンダリングされた画像を再マップするための UV マッピングを含む .obj ファイルのパスとファイル名です。 |
|
TextureShare コンフィギュレーション | |||
destination | 省略可能 | ソース アプリケーションから受け取ったテクスチャ共有アイテムを適用するビューポート名。 | |
source | 省略可能 | テクスチャを nDisplay に送信するアプリケーションの共有名。 |
Camera コンフィギュレーション
nDisplay クラスタのすべてのインスタンスは、仮想ワールドの同じ位置からシーンをレンダリングします。この場合の使用する可能性のある視点は、camera コンフィギュレーション行でそれぞれ定義されます。
これらの視点は、実行時に切り替えることができます。トラッキング デバイスで各カメラの視点を制御することもできます。
コンフィギュレーションの例:
[camera] id=camera_static loc="X=0.Y=0,Z=1.7" tracker_id=VRPNTracking tracker_ch=0
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | camera コンフィギュレーションの一意の名前。 | |
loc | 省略可能 | 0,0,0 |
親を基準とした VR 空間でのカメラの中心の位置。 |
loc | 省略可能 | 0,0,0 |
親を基準とした VR 空間でのスクリーンのカメラの回転。 |
parent | 省略可能 | オブジェクトの親として機能する必要のある scene_node コンフィギュレーションの名前。このパラメータはオプションです。親を指定すると、loc パラメータに設定する値は、その親の位置が基準となります。親を指定しない場合、loc パラメータに設定する値は、VR ルートが基準となります。 | |
eye_swap | 省略可能 | false |
ステレオスコピック モードでレンダリングする場合、このプロパティは左目用および右目用に生成された画像を切り替えるかどうかを指定します。 |
eye_dist | 省略可能 | 0.064 |
ステレオスコピック モードでレンダリングする場合、このプロパティは左目用および右目用に生成された画像のオフセット設定に使用する眼間距離 (メートル単位) を指定します。 |
force_offset | 省略可能 | 0 |
モノスコピック モードでレンダリングする場合このカメラを左目または右目の位置に依存するように配置することで (前述の eye_dist プロパティで定義したように)、このプロパティはステレオスコピック レンダリングのシミュレーションを可能にします。-1 を使うとカメラは左目の位置からレンダリングします。0 を使うとカメラのデフォルト位置からレンダリングします (エフェクトなし)。1 と使うとカメラは右目の位置からレンダリングします。 |
tracker_id | 省略可能 | 時間の経過に伴いカメラの位置を制御したい VR デバイスを定義する input コンフィギュレーションの名前。省略可能です。このパラメータを省略すると、カメラの位置は VR 空間で固定されます。 | |
tracker_ch | 省略可能 | -1 |
tracker_id を指定した場合、このパラメータで nDisplay がトラッキング データを読み取るデバイスのチャネルを指定します。 |
Scene Node コンフィギュレーション
コンフィギュレーション ファイルでは、シーン ノードの階層を定義できます。各シーン ノードは 3D 空間でのトランスフォームを表します。カメラ、投影スクリーンなど、3D 空間での位置および回転状態を必要とするコンフィギュレーション ファイルで設定した要素はすべて、このような scene_node コンフィギュレーションのいずれかを親として使用できます。これは、視覚化システムのすべての異なるコンポーネント間の空間的な関係を定義するうえで役立ちます。
Scene Node は、カメラと同じように、VR トラッキング デバイスでも制御できます。
コンフィギュレーションの例:
次の行では、2 つのノードの階層を定義しています。ここで、子ノードには親の前に 2 m のオフセットがあります。
[scene_node] id=vr_space_root loc="X=0.Y=0,Z=0" rot="P=0,Y=0,R=0"
[scene_node] id=walls_front_group loc="X=2.Y=0,Z=0" rot="P=0,Y=0,R=0" parent= vr_space_root
次の行では、VR トラッキング デバイスによって制御されるように設定されているシーン ノードを示しています。
[scene_node] id=cave_wand loc="X=0, Y=0,Z=1" tracker_id=CaveTracking tracker_ch=1
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | Scene Node コンフィギュレーションの一意の名前。 | |
loc | 省略可能 | 0,0,0 |
親を基準とした VR 空間でのシーン ノードの中心の位置。 |
rot | 省略可能 | 親に相対したシーン ノードの向きのピッチ (P)、ヨー (Y) およびロール (R) の角度 (度単位)。 | |
parent | 省略可能 | オブジェクトの親として機能する必要のある scene_node コンフィギュレーションの名前。このパラメータはオプションです。親を指定すると、loc パラメータおよび rot パラメータで設定する値は、その親の位置が基準となります。親を指定しない場合、loc パラメータおよび rot パラメータで設定する値は、VR ルートが基準となります。 | |
tracker_id | 省略可能 | 時間の経過に伴いシーン ノードの位置を制御したい VR デバイスを定義する input コンフィギュレーションの名前。省略可能です。このパラメータを省略すると、シーン ノードの位置および回転状態は、親を基準として VR 空間で固定されます。 | |
tracker_ch | 省略可能 | -1 |
tracker_id を指定した場合、このパラメータで nDisplay がトラッキング データを読み取るデバイスのチャネルを指定します。 |
Input コンフィギュレーション
nDisplay システムに入力を提供する必要のある各デバイスの input セクションを定義します。例えば、各 camera および各 scene_node は、必要に応じて、input セクションで設定し、camera または scene_node コンフィギュレーションで参照する VR トラッキング デバイスで制御できます。または、トラッカー、コントローラー、およびキーボードを設定して、汎用入力イベントを Unreal Engine 入力システムに送信したり、それらのイベントと入力値をプロジェクトのゲームプレイ スクリプトで応答できる汎用 nDisplay ブループリント ノードにバインドする必要がある場合があります。
input_setup セクションを使用して、これらの入力デバイスの特定のチャネル、ボタン、またはキーを、Unreal Engine 内の特定のタイプの入力イベントおよび値にバインドする方法を制御することもできます。
nDisplay 入力で実行できる内容の概要については、「Live Link VRPN」を参照してください。
コンフィギュレーションの例:
このコンフィギュレーションでは、nDisplay をセットアップして VRPN ロケーション トラッキング デバイスから入力を取得します。通常、このタイプのデバイスは、カメラまたは視聴者の頭部に取り付けるか、視聴者が保持します。camera または scene_node コンフィギュレーションでこの input コンフィギュレーションを参照することにより、トラッカーからカメラの位置またはシーン ノードの位置を自動的に制御できます。または、プロジェクトのブループリント コードでこのトラッカーの値を取得できます。
[input] id=CaveTracking type=tracker [email protected] loc="X=-1.5,Y=0,Z=3.4" rot="P-0,Y=0,R=0" front=X right=Y up=-Z
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | 入力デバイス コンフィギュレーションの一意の名前。 | |
type | 必須 | VRPN 入力デバイスのタイプ:
|
|
addr | 必須 | 特定のデバイスを処理する VRPN サーバーのアドレス。この値は次の形式に従う必要があります。
|
type=tracker
のデバイスの場合、さらに次のパラメータも受け入れます。
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
loc rot | 省略可能 | 0,0,0 0,0,0 |
他のコンフィギュレーション セクションと同様に、loc パラメータと rot パラメータは入力デバイスのローカル空間における位置および回転状態のオフセットを指定します。ただし、入力デバイスでは、通常、これらのオフセットを使用してVR 空間内のトラッキング デバイスのルート位置を調整して、シーン ノード階層内で想定される場所に一致させます。 |
front right up | 必須 | これらのパラメータは、Unreal でのトラッカーの各ローカル軸 (前、右、上) をトラッカーの座標系の対応する軸と一致させます。Unreal では Z 軸が上向きの右手座標系が採用されています。お使いのトラッカーが別の座標系を使用している場合は、これらのパラメータを使用してトラッカーの座標系を Unreal の座標系にマッピングできます。
例えば、次の行では、トラッカーの Y 軸を Unreal の前側の軸 (X) にマッピングし、トラッカーの X 軸を Unreal の右側の軸 (Y) に、トラッカーの負の Z 軸を Unreal の上側の軸に (Z) マッピングします。
|
デバイスが type=keyboard
の場合、さらに次のパラメータも受け入れます。
Input Setup コンフィギュレーション
各 input_setup コンフィギュレーション セクションでは、指定された input デバイスの追加のコンフィギュレーション パラメータを指定します。この追加パラメータでは、通常、指定されたデバイスのチャネルまたはキーを汎用 nDisplay ブループリント入力ノードにバインドします。
コンフィギュレーションの例:
このコンフィギュレーションでは、チャネル 0 でイベントを生成するボタンが押されると、ブループリントの [Input (入力)] > [N Display Events (N ディスプレイ イベント)] > nDisplay Button 0 ノードからイベントが生成されるように ID コントローラーで入力デバイスをセットアップします。
[input_setup] id=controller ch=0 bind="nDisplay Button 0"
次のコンフィギュレーションは上記と似ています。ただし、アナログ値 (通常はコントローラーの軸) を nDisplay のアナログ値にバインドする点が異なります。ブループリントの [Input (入力)] >[N Display Events (N ディスプレイ イベント)] > nDisplay Analog 0 ノードを使用して、コントローラーの軸が使用されている場合を検出したり、[Input (入力)] >[N Display Values (N Display 値)] > nDisplay Analog 0 を使用して現在のフレームの値を取得することができます。
[input_setup] id=test_axes ch=0 bind="nDisplay Analog 0"
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
id | 必須 | この input_setup セクションが設定する input コンフィギュレーションの ID を参照します。 なお、nDisplay コンフィギュレーション ファイルの他のほとんどのセクションとは異なり、この id 値では ID を含む input_setup セクションの ID を指定しません。代わりにファイルの他の場所で定義されている input セクションの ID を参照します。 |
|
ch | 必須 | bind 設定で設定したイベントにバインドされる、指定された入力デバイスのチャネルを指定します。 | |
key | 省略可能 | ch と似ていますが、type=keyboard である入力デバイスのみに使用されます。 |
|
bind | 必須 | 上記で指定されたチャネルまたはキーがバインドされている Unreal Engine のイベントを指定します。この値は、F1、nDisplay F1、nDisplay Button 0、Gamepad Left Thumbstick X-Axis、Gamepad Face Button Top などの [Input (入力)] カテゴリに表示されるブループリント ノードの名前である可能性があります。 名前にスペースが含まれる場合は、二重引用符で囲む必要があります。 |
一般的なコンフィギュレーション
general コンフィギュレーション行には、nDisplay クラスタの全体的な動作を制御するパラメータが含まれています。
コンフィギュレーションの例:
[general] swap_sync_policy=1
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
swap_sync_policy | 省略可能 | 0 |
ネットワークを使用した出力の同期方法を指定します。
|
ue4_input_sync_policy | 省略可能 | 1 |
UE4 へのネイティブ入力を nDisplay を介してどのようにレプリケートするかを指定します。
|
NVIDIA コンフィギュレーション
general コンフィギュレーション レクションにおいて swap_sync_policy
の値を 2
にすると、NVIDIA セクションのパラメータを使ってフレーム ロックに関連する特定のハードウェ設定の調整が可能になります。
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
sync_group | 省略可能 | 1 |
フレーム ロックに使用する同期グループ。 |
sync_barrier | 省略可能 | 1 |
フレーム ロックに使用する同期バリア。 |
Network コンフィギュレーション
network コンフィギュレーション セクションでは、nDisplay クラスタ ノード間のネットワーク通信に関連するタイムアウトおよびその他の設定を制御するために使用できる設定を指定します。
nDisplay コンフィギュレーション ファイルには、network セクションを含めないか、または 1 つのみ含めることができます。
コンフィギュレーションの例:
[network] cln_conn_tries_amount=10 cln_conn_retry_delay=1000 game_start_timeout=30000 barrier_wait_timeout=5000
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
cln_conn_tries_amount | 省略可能 | 10 |
プライマリ以外のクラスタ ノードを起動する場合、シャッドダウンする前にこの設定でノードがマスターへの接続を試行する回数を指定します。 |
cln_conn_retry_delay | 省略可能 | 1000 |
プライマリ以外のクラスタ ノードを起動する場合、この設定で、ノードがマスターへの接続を連続して試行する際の各試行間の時間間隔がミリ秒単位を指定します。 |
game_start_timeout | 省略可能 | 30000 |
ゲーム ループの最初のフレームの開始およびメイン ウィンドウへのレンダリング開始前にプライマリ ノードの各 Unreal Engine アプリケーションがすべてのクラスター ノードの準備完了を待つ時間間隔をミリ秒単位で設定します。これにより、すべてのクラスタ ノードがレンダリングを開始する前にプライマリに接続できるようになります。この間、メイン ウィンドウは黒く表示されます。この時間間隔の終了時に、どのクラスター ノードもプライマリに正常に接続されていない場合、クラスタ内のすべてのインスタンスがシャットダウンします。 クラスタの初期化に非常に時間がかかる場合は、この値を大きくする必要がある場合があります。 |
barrier_wait_timeout | 省略可能 | 5000 |
ゲームおよびレンダリング スレッドのバリア タイムアウトをミリ秒単位で設定します。これは、クラスタ ノード間でゲーム スレッドとレンダリング スレッドの両方を同期するバリア タイムアウトです。各フレーム内で複数回使用されます。つまり、これはノードが到達不能になっている状況を検出するために実行時に使用されます。この場合、クラスタの状態は無効であると見なされ、すべてのノードが自分自身でシャットダウンします。 |
cln_conn_tries_amount 設定および cln_conn_retry_delay 設定は連携して、クラスタ ノードが起動時にプライマリ ノードへの接続を試行する最長時間を指定します。例えば、cln_conn_tries_amount が「10」に設定され、cln_conn_retry_delay が「1000」ミリ秒に設定されているとします。起動時に各ノードはプライマリ PC への接続を個々みます。その接続が失敗した場合、再試行するまで 1000 ミリ秒待機します。その試行も失敗した場合、さらに 1000 ミリ秒待機します。10 回連続で失敗すると、クラスタ ノードは自動的に終了します。クラスタ ノードがプライマリ PC に接続するとすぐに、回数のカウントが停止します。
Info コンフィギュレーション
info コンフィギュレーション行には具体的に、コンフィギュレーション ファイルと互換性があることが判明している nDisplay と Unreal Engine の最新バージョンに関するオプションの情報が含まれています。
コンフィギュレーションの例:
[info] version=22
パラメータ:
パラメータ | 必須 ? | デフォルト | 説明 |
---|---|---|---|
version | 必須 | このコンフィギュレーション ファイルとの互換性を持つ最も古いバージョンの Unreal Engine。
この値は手動による設定はできません。nDisplay Launcher によって自動的に設定されます。バージョンのない、または使用中の Unreal Engine の現在のバージョンによってサポートされていないコンフィギュレーション ファイルを使用すると、nDisplay Launcher は最新バージョンを使用するためコンフィギュレーション ファイルの更新を自動的に試行します。更新に成功した場合、更新されたコンフィギュレーションを新しいファイルに保存して、この値を最新バージョンに更新します。 |
カスタム コンフィギュレーション パラメータ
custom コンフィギュレーション セクションを含めて、独自にカスタムしたキー / 値のペアを nDisplay クラスター ノードに与えることができます。好きな数だけパラメータと値を [cluster]
行に含めることができます。後でこれらの設定値を実行時に nDisplay ブループリントまたは C++ API から取得することができます。
コンフィギュレーションの例:
[custom] stringParameter=myValue numberParameter=2
コンフィギュレーション ファイルのシーン構造体の例
具体的な例を確認するには、「wall_flat_3x2.cfg」サンプル ファイルを開いてください。このサンプル ファイルは「Templates/TP_nDisplayBP/Content/ExampleConfigs
」の下にある Unreal Engine のインストール フォルダにあります。このファイルでは 6 つの投影スクリーンを定義します。各投影スクリーンは、個別の物理コンピュータによってレンダリングされます。
また、このファイルでは複数の scene_node を定義しています。これらは連携して、次の階層を作成します。

この階層のノードの相対的な位置と回転状態では、6 つの投影スクリーンがカメラから 1 メートルの距離で隣り合って並ぶように、VR 空間でのカメラと 6 つのスクリーンの配置がレイアウトされます。
なお、このコンフィギュレーションでは、シーンをレンダリングするモニターの端部を考慮して、隣接する各投影スクリーンの間に小さなスペースが含まれます。