nDisplay コンフィギュレーション ファイルのリファレンスです。

nDisplay コンフィギュレーション ファイルで使用できるすべての設定のリファレンス ガイドです。

Choose your operating system:

Windows

macOS

Linux

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

省略可能

r.GraphicsAdapter

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 コンフィギュレーションの複数のセクション名の間をコンマで区切ってリストし、そのリストを引用符で囲む必要があります。上記の「 コンフィギュレーションの例 」セクションの wnd_four 例を参照してください。このリストの順序は、ビューポートの視覚的な順序や配置には影響しません。親ウィンドウ内のビューポートの配置は、指定の 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 デバイス番号は タスクマネージャー で確認できます。

  1. タスクマネージャー を開きます。

  2. [Performance (パフォーマンス)] タブに切り替えます。

  3. ウィンドウの左側にはマシンに入っている GPU とデバイス番号が表示されます。 GPU numbers in Task Manager on Windows 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 がビューポートで描画するレンダリングされた画像を生成する方法を定義する投影タイプ。このパラメータでは、次の値を受け入れます。

  • simple : screen コンフィギュレーション セクションで定義された仮想ワールドの視錐台をビューポートにレンダリングします。

  • easyblend : Scalable Display Technologies のツールを使用して較正した仮想ワールドのビューをビューポートにレンダリングします。

  • mpcdi : MPCDI を使用して較正した仮想ワールドのビューをビューポートにレンダリングします。

  • vioso : VIOSO のツールを使用して較正した仮想ワールドのビューをビューポートにレンダリングします。

  • domeprojection : DomeProjection のツールを使用して較正した仮想ワールドのビューをビューポートにレンダリングします。

プロジェクションが type=simple の場合、さらに次のパラメータも受け入れます。

パラメータ

必須 ?

デフォルト

説明

screen

必須

Unreal Engine アプリケーションがビューポートにレンダリングする必要のある 3D 空間の視錐台を定義する screen コンフィギュレーションの名前。

プロジェクションが type=easyblend の場合、さらに次のパラメータも受け入れます。

パラメータ

必須 ?

デフォルト

説明

file

Required

ビューポートを投影するサーフェスを定義するスケーラブル ディスプレイのキャリブレーション ファイルのパスとファイル名 ( .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

Optional

キャリブレーション空間を 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 入力で実行できる内容の概要については、「 VRPN 入力を使用する 」を参照してください。

コンフィギュレーションの例:

このコンフィギュレーションでは、nDisplay をセットアップして VRPN ロケーション トラッキング デバイスから入力を取得します。通常、このタイプのデバイスは、カメラまたは視聴者の頭部に取り付けるか、視聴者が保持します。 camera または scene_node コンフィギュレーションでこの input コンフィギュレーションを参照することにより、トラッカーからカメラの位置またはシーン ノードの位置を自動的に制御できます。または、プロジェクトのブループリント コードでこのトラッカーの値を取得できます。

[input] id=CaveTracking type=tracker addr=Tracker0@192.168.0.1 loc="X=-1.5,Y=0,Z=3.4" rot="P-0,Y=0,R=0" front=X right=Y up=-Z

このコンフィギュレーションでは、VRPN デバイスとしてセットアップされているキーボードからキーボード入力を読み取り、その入力を Unreal Engine のビルトイン キーボード入力を介してルーティングするように nDisplay をセットアップします。

[input] id=ControlKeyboard type=keyboard addr=Keyboard0@192.168.0.1 reflect=ue4

パラメータ:

パラメータ

必須 ?

デフォルト

説明

id

必須

入力デバイス コンフィギュレーションの一意の名前。

type

必須

VRPN 入力デバイスのタイプ:

  • tracker はトラッキング デバイス。

  • analog は軸データを生成するデバイス。

  • button はブール ボタン データを生成するデバイス。

  • keyboard は標準のコンピュータ キーボード。

addr

必須

特定のデバイスを処理する VRPN サーバーのアドレス。この値は次の形式に従う必要があります。
DEVICENAME@SERVER_ADDRESS:SERVER_PORT
ここで、

  • DEVICENAME はデバイスの VRPN 名。

  • SERVER_ADDRESS は VRPN サーバーの IPv4 アドレス。

  • :SERVER_PORT は VRPN サーバーが受信接続をリッスンするポート。
    これはオプションです。指定しない場合、nDisplay はデフォルトでポート 3883 を使用します。

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) マッピングします。
front=Y right=X up=-Z

デバイスが type=keyboard の場合、さらに次のパラメータも受け入れます。

パラメータ

必須 ?

デフォルト

説明

reflect

省略可能

none

当該キーボードの入力を Unreal Engine に渡す方法、およびそれらのイベントに応答する方法を指定します。
この設定では、次のいずれかの値を受け入れます。

  • nDisplay

  • ue4

  • both

  • none

詳細については、「[キーボードイベントを反映する]WorkingWithMedia/nDisplay/VRPN#キーボードイベントを反映する)」を参照してください。

type=analog type=button が追加パラメータを受け取らないデバイス。

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"

キーボード デバイスを使用している場合は、各キーを個別にバインドする必要はありません。代わりに、 input セクションの reflect 設定を使用して、キー イベントをビルトイン Unreal Engine キーボード イベントにルーティングするか、nDisplay キーボード イベントにルーティングするかを指定します。ただし、バインディングを変更したり、新しいバインディングを追加したい場合は、各キーを個別にバインドできます。例えば、次のセクションでは、スペース バーにより [Input (入力)] >[N Display Events (N ディスプレイ イベント)] > nDisplay Button 3 イベントがトリガーされます。

[input_setup] id=keyboard0 key=Space bind="nDisplay Button 3"

パラメータ:

パラメータ

必須 ?

デフォルト

説明

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 (入力)] カテゴリに表示されるブループリント ノードの名前である可能性があります。
名前にスペースが含まれる場合は、二重引用符で囲む必要があります。

入力モジュール API のノードを使用して、プロジェクトのブループリント コードでこれらのチャネルとキー バインディングを設定することもできます。詳細は「 デバイス チャンネルを UE4 入力にバインドする 」を参照してください。

一般的なコンフィギュレーション

general コンフィギュレーション行には、nDisplay クラスタの全体的な動作を制御するパラメータが含まれています。

コンフィギュレーションの例:

[general] swap_sync_policy=1

パラメータ:

パラメータ

必須 ?

デフォルト

説明

swap_sync_policy

省略可能

0

ネットワークを使用した出力の同期方法を指定します。

  • 0: 同期なし (VSync=0).

  • 1:ソフトウェアのスワップ同期 (VSync=1).

  • 2:NVIDIA スワップ ロック (DirectX11 および DirectX12 でレンダリングする NVIDIA カードのみ)

ue4_input_sync_policy

省略可能

1

UE4 へのネイティブ入力を nDisplay を介してどのようにレプリケートするかを指定します。

  • 0:ネイティブ UE4 入力はプライマリ ノードのみで処理されます。レプリケーションは他のクラスター ノードでは処理されません。

  • 1:プライマリ ノードが受け取るすべてのネイティブ入力は、すべての他のクラスター ノードでも同様にレプリケートされます。

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。

4. の後の小数点以下がバージョン番号を表します。例えば、22 という値は、ファイルがバージョン 4.22 の nDisplay および 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 を定義しています。これらは連携して、次の階層を作成します。

nDisplay example scene hierarchy

この階層のノードの相対的な位置と回転状態では、6 つの投影スクリーンがカメラから 1 メートルの距離で隣り合って並ぶように、VR 空間でのカメラと 6 つのスクリーンの配置がレイアウトされます。

なお、このコンフィギュレーションでは、シーンをレンダリングするモニターの端部を考慮して、隣接する各投影スクリーンの間に小さなスペースが含まれます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる