nDisplay のプロジェクション ポリシー

マルチスクリーン ディスプレイに対応するために Unreal Engine でサポートされているポリシーのリファレンス。

Windows
MacOS
Linux

nDisplay のプロジェクション ポリシー

新機能の開発戦略の一環として、Epic Games は Unreal Engine (UE4)) に機能を追加できる既存のツールの評価を常時実施しています。調査を重ねた結果、Epic Games の拡張ディスプレイの目標実現に役立つ次の複数のテクノロジーを見出しました。

現在サポートされているプロジェクション ポリシーは以下の通りです。

ポリシー

説明

"screen"

"simple" (シンプル) という名称を "screen " に変更

"camera"

カメラ

"manual"

手動

"mesh"

基にするメッシュ (4.25 で追加)

"picp_mesh"

Picp_mesh

"mpcdi"

MPCDI

"picp_mpcdi"

PICP_MPCDI

"easyblend"

Easyblend

Simple (Screen (スクリーン) に名称を変更)

Simple は標準の 2D フラット パネル ディスプレイでのレンダリングに使用される標準のポリシーです。このポリシーでは、カメラ錐台をビルドするために 3D 空間における矩形を使用する必要があります。この矩形 (screen) は、次のようにコンフィグ ファイルに定義してから、simple プロジェクション ポリシーで参照する必要があります。

[screen] id="scr_demo" loc="X=2,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=1,Y=1"
[viewport] id="vp_demo" x="0"  y="0"  width="800" height="800" projection="proj_simple_demo"
[projection] id="proj_simple_demo" type="simple" screen="scr_demo"

この例では、nDisplay のルート部から 2 m の場所にあるプロジェクション スクリーンを定義しています。スクリーンのサイズは 1 x 1 平方メートルです。

Camera (カメラ)

nDisplay では通常の Unreal Engine のカメラや Cine カメラからビューを取得できないため、camera ポリシーが導入されました。このポリシーを使用すると、任意の UE4 カメラのビューを nDisplay のビューポートにマッピングできます。

[viewport] id="vp_demo" x="0"  y="0"  width="800" height="800" projection="proj_camera_demo"
[projection] id="proj_camera_demo" type="camera"

CameraPolicy.png

コンフィギュレーション ファイルが基づいている主な概念の 1 つは、アプリケーションとアプリケーションのコンテンツ (アセット) から nDisplay トポロジーを完全に分離することです。完全に分離することで、任意のコンフィグ ファイルをあらゆるアプリケーションで使用することができます。このような理由から、ブループリントや C++ API を使用してカメラを手動で設定する必要があるのです。

以下で取り上げる mesh ポリシーにも同じ理由が当てはまります。

Manual

nDisplay で未サポートのキャリブレーション システムの汎用的なソリューションとして、新たに manual プロジェクション ポリシーが導入されました。このポリシーで重要なのは、特定のビューポートの視錐台をユーザーが明示的に設定するということです。

ステレオ レンダリングでは、2 つの視錐台が必要です。プロジェクション マトリクスまたは視錐台の角度のいずれかを指定することで、視錐台を 2 つ使用することができます。次は、モノラル セットアップおよびステレオ セットアップに対応したそれぞれのアプローチのサンプルです。

ケース 1:カスタマイズされたマトリクスで指定された視錐台

[viewport] id=vp_1 x=0   y=0   width=1000  height=600 projection=proj_manual_1
[viewport] id=vp_2 x=0   y=0   width=1000  height=600 projection=proj_manual_2
[projection] id=proj_manual_1 type="manual" rot="P=0,Y=0,R=0" 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]"
[projection] id=proj_manual_2 type="manual" rot="P=0,Y=0,R=0" matrix="[0.500001 0 0 0] [0 1 0 0] [-1 0 0 1] [0 0 1 0]"

ケース 2:カスタマイズされた角度で指定された視錐台

[viewport] id=vp_1 x=0   y=0   width=1000  height=600 projection=proj_manual_1
[viewport] id=vp_2 x=0   y=0   width=1000  height=600 projection=proj_manual_2
[projection] id=proj_manual_1 type="manual" rot="P=0,Y=0,R=0" frustum_left="l=-15 r=0 t=10 b=-10" frustum_right="left=0 right=15 top=10 bottom=-10"
[projection] id=proj_manual_2 type="manual" rot="P=0,Y=0,R=0" frustum="l=0 r=15 t=10 b=-10"

Mesh (メッシュ) ベースおよび PICP_Mesh

たわみ付けレンダリングのワークフローを簡素化するために、次の 2 つの新しいプロジェクション ポリシーが追加されました。

  • 通常使用される "mesh" ポリシー

  • "picp_mesh" という名称のインカメラ VFX ポリシー (インカメラ視点画像、すなわち picp)

  • これにより、PFM (ポータブル フロート マップ) ワークフローを使用することなくメッシュを割り当てるだけで、レンダリング出力を効果的に幾何学補正できるようになりました。

通常の使用

*` [projection] id="proj_picpmesh_right" type="mesh" `

  • 幾何学補正メッシュのソースは、次のように "mesh " プロジェクション セットを含むビューポートに割り当てられた SceneMeshComponent 参照で表されます。

  • [viewport] id="warped_viewport" x="0" y="0" width="1152" height="960" projection="proj_picpmesh_right"

  • 幾何学補正のマッピングには UV チャンネル 0 を使用します。

DisplayClusterProjection.png

インカメラ VFX

  • インカメラ VFX 視錐台レンダリング用にメッシュベースの幾何学補正 "picp_mesh" ポリシーが作成されました。

  • [projection] id="proj_picpmesh_up" type="picp_mesh"

  • メッシュの割り当てには、DisplayClusterProjectionAPI ではなく、PICP Module API を使用する必要があります。

InCameraVFX.png

MPCDI および PICP_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 は複雑なプロジェクター システムを記述するデータを標準化および定型化された方法で読み取り、格納することができます。そのため、ユーザーは業界の幅広いツールと簡単に通信および相互作用することができます。

MPCDI は実装されたばかりであるため、Unreal Engine にはプレビス機能はまだ搭載されていません。この問題を回避するために、Unreal Editor 内で、およびランタイム時に MPCDI ファイル データをプレビューするためのソリューションを開発中です。

現段階では、ユーザーは MPCDI ファイルから生成されたメッシュ データに基づいた物理ディスプレイのプロシージャルなメッシュを生成できます。

mpcdi プロジェクション ポリシーを使用する方法は 2 つあります。1 番目の方法は、ネイティブなアプローチで、使用する .mpcdi ファイル、バッファ、リージョンをユーザーが指定する必要があります。2 番目は、.mpcdi に格納されているファイル (基本的にはファイル アーカイブ) をユーザーが明示的に指定する方法です。

.mpcdi ファイルの使用方法

[projection] id=proj_mpcdi_demo type="mpcdi" file="D:\config.mpcdi" buffer="Mosaic" region="displayOrigin" origin=mpcdi_origin

明示的な指定

[projection] id="proj_mpcdi_demo" type="mpcdi" pfm="geom_left.pfm" alpha="geom_left_a.png" beta="geom_left_b.png" scale=1 origin=stage_origin

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 個指定するだけで実行可能な状態にすることができます。

[projection] id=proj_easyblend_1 type="easyblend" file="E:\LocalCalibrationFlat\ScalableData.pol" origin=easyblend_origin_1 scale=0.1
[projection] id=proj_easyblend_2 type="easyblend" file="E:\LocalCalibrationFlat\ScalableData.pol_1" origin=easyblend_origin_1 scale=0.1
[projection] id=proj_easyblend_3 type="easyblend" file="E:\LocalCalibrationFlat\ScalableData.pol_2" origin=easyblend_origin_1 scale=0.1
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback