nDisplay のプロジェクション ポリシー
新機能の開発戦略の一環として、Epic Games は Unreal Engine に機能を追加できる既存のツールの評価を常時実施しています。調査を重ねた結果、Epic Games の拡張ディスプレイの目標実現に役立つ次の複数のテクノロジーを見出しました。
Simple
Simple は標準の 2D フラット パネル ディスプレイでのレンダリングに使用される標準のポリシーです。このポリシーでは、カメラ錐台をビルドするために 3D 空間における矩形を使用する必要があります。この矩形 (screen) は、次のように Components パネルに定義してから、simple 投影ポリシーで参照する必要があります。
プロジェクトで Simple ポリシーを使用するには、以下の手順に従ってください。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
-
[Components (コンポーネント)] パネルで、[Add Component (コンポーネントを追加)] を選択し、[NDisplay Screen] を選択します。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [simple] に設定します。
-
[Screen] をステップ 2 で作成した画面コンポーネントに設定します。この例では、画面の名前は「nDisplayScreen」です。
-
画面がビューポートを正しくレンダリングしていることを確認します。テストシーンを表示するには、ビューポートの [Details] パネルで [View Origin (原点の表示)] を設定する必要がある場合があります。
拡大表示するには、画像をクリック。
Camera
nDisplay では通常の Unreal Engine のカメラや Cine カメラからビューを取得できないため、Camera ポリシーが導入されました。このポリシーを使用すると、任意の UE4 カメラのビューを nDisplay のビューポートにマッピングできます。
プロジェクトで Camera ポリシーを使用するには、以下の手順に従ってください。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
-
[Components] パネルで、[Add Component] を選択し、カメラ コンポーネントを ICVFX Camera、Camera、Cine Camera から 1 つを選択します。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [Camera] に設定します。
- [Camera] をステップ 2 で作成したカメラに設定します。この例では、カメラは「ICVFXCamera」です。
-
Use nDisplay Renderer の設定を選択します。デフォルトで、クラスタ レンダリングに対して nDisplay レンダリング パスが有効になります。無効にすると、nDisplay レンダリングは迂回され、指定されたこのカメラに対してネイティブ UE ピクセルを表示します。デバッグの目的、またはネイティブ カメラ レンダリングと nDisplay クラスタ レンダリングを比較する目的で無効にします。
-
カメラがビューポートを正しくレンダリングしていることを確認します。
Manual
nDisplay で未サポートのシステムの汎用的なソリューションとして、新たに「Manual 投影ポリシー」が導入されました。このポリシーで重要なのは、特定のビューポートの視錐台をユーザーが明示的に設定するということです。 ステレオ レンダリングでは、2 つの視錐台が必要です。プロジェクション マトリクスまたは視錐台の角度のいずれかを指定することで、視錐台を 2 つ使用することができます。nDisplay でのモノラル レンダリングとステレオ レンダリングの違いの詳細については、「nDisplay でのステレオスコープ レンダリング」を参照してください。
プロジェクトで Manual ポリシーを使用するには、以下の手順に従ってください。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [Manual] に設定します。
- [Rendering] を [Mono]、[Stereo]、または [Mono&Stereo] に設定します。
- [Frustum] を [Matrix] または [Angles] に設定します。
-
[Frustum] が [Matrix] の場合、[Rotation] フィールドと [Matrix] フィールド ([Mono] ではなく [Stereo] を選択した場合は [MatrixLeft] と [MatrixRight]) を設定します。
-
[Frustum] が [Angles] の場合、[Rotation] フィールドと [Frustum] フィールド ([Mono] ではなく [Stereo] を選択した場合は [FrustumLeft] と [FrustumRight]) を設定します。
-
- ビューポートが正しくレンダリングされていることを確認します。
Mesh (メッシュ)
この投影ポリシーは、ワープレンダリング ワークフローを簡素化します。これにより、PFM (ポータブル フロート マップ) ワークフローを使用することなくメッシュを割り当てるだけで、レンダリング出力を効果的に幾何学補正できるようになりました。比率やピクセル密度に関係なく 2D ディスプレイを作成する NDisplayScreen、または任意の形状と形式の画面である StaticMesh コンポーネントを使用して、レンダリングされた出力の形状を指定できます。幾何学補正のマッピングには UV チャンネル 0 を使用します。
プロジェクトで Mesh ポリシーを使用するには、以下の手順に従ってください。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
- [Components (コンポーネント)] パネルで、[Add Component (コンポーネントを追加)] を選択し、[NDisplayScreen] か [StaticMesh] を選択します。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [Mesh] に設定します。
-
ステップ 2 で作成したコンポーネントに メッシュ を設定します。この例では、メッシュは「SM_Screen_0」という名前の StaticMesh に割り当てられています。
-
ビューポートがメッシュ上で正しくレンダリングされていることを確認します。テストシーンを表示するには、ビューポートの [Details] パネルで [View Origin (原点の表示)] を設定する必要がある場合があります。
拡大表示するには、画像をクリック。
MPCDI
この業界プロトコルである MPDCI に基づく複雑なプロジェクトに対応するため、MPDCI 規格に対応しました。
MPCDI (Multiple Projection Common Data Interchange) 規格は、VESA の Multi-Projector Automatic Calibration (MPAC) タスク グループによって開発されました。MPCDI は、プロジェクション キャリブレーション システムが、マルチディスプレイ構成でデバイスと通信するための標準のデータ形式です。
この規格では、マルチプロジェクター システムが、個々のディスプレイ コンポーネントを幅広いデバイスを使用して単一のシームレスな映像に結合するために必要なデータを生成する方法を提供します。この規格により、システムに導入された新しいハードウェアを簡単に統合できます。
MPCDI は、以下をはじめとするコンテンツ制作者やベンダーによって業界全体で使用されています。
- Scalable Display Technologies
- VIOSO
- Dataton Watchout
- 7thSense Design
MPCDI 規格に対応することで nDisplay は複雑なプロジェクター システムを記述するデータを標準化および定型化された方法で読み取り、格納することができます。そのため、ユーザーは業界の幅広いツールと簡単に通信および相互作用することができます。MPDCI はエディタ プレビューアおよび Overscan でサポートされています。
mpcdi プロジェクション ポリシーを使用する方法は 2 つあります。1 番目の方法は、ネイティブなアプローチで、使用する .mpcdi ファイル、バッファ、リージョンをユーザーが指定する必要があります。2 番目は、.mpcdi に格納されているファイル (基本的にはファイル アーカイブ) をユーザーが明示的に指定する方法です。
.mpcdi ファイルの使用方法
プロジェクトで MPCDI ポリシーに対してネイティブなアプローチを使用するには、以下の手順に従います。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [MPCDI] に設定します。
- [MPCDI Type] を [MPCDI] に設定します。
- [File] で、コンピュータ上の .mpcdi ファイルを参照します。
- 「
.mpcdi
」ファイルでバッファの名前を Buffer に設定します。 -
「
.mpcdi
」ファイルのバッファ内のリージョン名を Region に設定します。
- ビューポートが正しくレンダリングされていることを確認します。
明示的な指定
以下の手順に従って、プロジェクトで MPCDI ポリシーを使用する方法を明示的に指定します。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [MPCDI] に設定します。
- [MPCDI Type] を [Explicit PFM] に設定します。
- [File] で、コンピュータ上のワープ ジオメトリを表す
.pfm
ファイルを参照します。 - [Alpha Mask] で、コンピュータ上のアルファマスクを表す
.png
ファイルを参照します。 - [Alpha Gamma] フィールドを関連するアルファマスクのガンマ値に設定します。ガンマ値のないアルファマスクは値 1.0 を使用することができます。これは線形と同等になります。
- [Beta Mask] で、コンピュータ上のベータマスクを表す
.png
ファイルを参照します。 .pfm
ファイルで使用されるジオメトリ スケールに [Scale] フィールドを設定します。-
Unreal の軸を使用する場合、[Use Unreal Axis] を有効にします。
- ビューポートが正しくレンダリングされていることを確認します。
EasyBlend (Scalable Display)
EasyBlend_ キャリブレーション データの統合は Scalable SDK によって可能になります。この SDK では幾何学補正、ブレンド、台形補正機能を使用できます。そのため、曲面やドーム形の面など、平面以外の複雑な表示面にマルチプロジェクターを使用して表示することができます。
Scalable Display Technologies は、複雑なプロジェクション システムのソフトウェアと SDK に注力している企業です。同社の SDK は、幾何学補正とブレンドによって単一の映像を拡大表示するソリューションを提供します。Scalable Display Technologies は、大型の映像の幾何学補正やブレンドを処理する EasyBlend ソリューションを既に提供していたため、Epic Games では Unreal Engine に EasyBlend ソリューションを組み込むことにしました。
Unreal Engine の nDisplay では、サポートしているすべてのモード (MPCDI に基づくネイティブの幾何学補正とブレンド、およびカスタム実装) で業界標準のミドルウェアである Scalable SDK と EasyBlend を組み込むことで、幾何学補正とブレンドをサポートしています。
EasyBlend との統合を実装したことで、複雑なプロジェクション システム構成でもシームレスなエクスペリエンスを提供できるようになりました。サードパーティ製のツールまたはソフトウェアを使用してキャリブレーションが完了すると、ユーザは nDisplay コンフィギュレーション ファイルでパラメータを 2、3 個指定するだけで実行可能になります。
プロジェクトで EasyBlend ポリシーを使用するには、以下の手順に従ってください。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [EasyBlend] に設定します。
- [File] で、コンピュータ上の
.pol
ファイルを参照します。 -
[Origin] フィールドと [Scale] フィールドを設定します。
- 提供された EasyBlend キャリブレーション ファイルに関して、ビューポート レンダリングが適切に変形されていることを確認します。レンダリング結果はベンダーからの参照画像と一致する必要があります。
VIOSO
VIOSO キャリブレーション データの SDK のネイティブでの統合を、複雑なサーフェスでのプロジェクターのワーピングとソフト エッジ ブレンディングに対して利用できます。
VIOSO のツールとソフトウェアを使用してキャリブレーションが完了したら、以下の手順に従って、プロジェクトで VIOSO ポリシーを使用します。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [VIOSO] に設定します。
- [File] で、コンピュータ上の
.vwf
ファイルを参照します。 -
[Origin] フィールドと [Matrix] フィールドを設定します。
- 提供された VIOSO キャリブレーション ファイルに関して、ビューポート レンダリングが適切に変形されていることを確認します。レンダリング結果はベンダーからの参照画像と一致する必要があります。
DomeProjection
巨大なドーム型のサーフェス上でのプロジェクター ラッピングとソフトエッジ ブレンドで DomeProjection キャリブレーション データのネイティブ SDK 統合の利用が可能となりました。DomeProjection のツールとソフトウェアを使用してキャリブレーションが完了したら、nDisplay コンフィギュレーション ファイルにいくつかのパラメータを追加してプロジェクトで使用します。
- nDisplay 3D コンフィグ エディタで nDisplay コンフィグ アセットを開きます。
- [Cluster] パネルで、[Add New Viewport (新しいビューポートの追加)] を選択します。
- [Configuration (コンフィギュレーション)] > [Projection Policy (投影ポリシー)] の [Add New Viewport window] ウィンドウで、次のフィールドを変更します。
- [Type] を [DomeProjection] に設定します。
- [File] で、DomeProjection のソフトウェアからコンピュータ上にエクスポートされた
.xml
ファイルを参照します。 -
[Origin] フィールドと [Channel] フィールドを設定します。
- 提供された DomeProjection キャリブレーション ファイルに関して、ビューポート レンダリングが適切に変形されていることを確認します。レンダリング結果はベンダーからの参照画像と一致する必要があります。