導入
このドキュメントでは、Aximmetry DEからUnreal Engineにデータを送信することで、Unreal Engineの制御を実装する方法について説明します。さらに、Unreal EngineからAximmetry DEに動画コンテンツを送信する方法についても解説します。
これらの機能は、Unreal Engine内のシーンに対してより詳細な操作を実行したいユーザー(例:オブジェクトの移動、照明の調整、アニメーションの開始、Aximmetry DEからモデルやテクスチャの管理など)にとって特に有用です。
レベルブループリント
本ドキュメントで説明するすべての操作は、Unreal Editorのレベルブループリント内で実行されます。レベルブループリントは、レベル全体のグローバルイベントグラフとして機能する専用のブループリントです。
レベルブループリントにアクセスするには、エディター内のブループリントアイコンを選択し、レベルブループリントを開くを選択します:
Aximmetryブループリントノード
Unreal Engine for Aximmetryには、Aximmetry DEからデータを受信できる専用のブループリントノードが用意されています。
これらのノードをブループリント内に追加するには、イベントグラフの空いている領域で右クリックします。次に、ノード一覧から「Aximmetry」カテゴリを選択して、利用可能なすべてのAximmetryブループリントノードを表示します:
これらのノードは、Color、Integer、Logical、Scalar、Text、Transformation、Trigger、Vector、Videoなどの異なるデータタイプを処理するように設計されています。ビデオデータタイプの場合、UnrealからAximmetryへビデオコンテンツを送信することも可能です。
AximmetryのUnrealモジュールで赤いチェーンリンクボタン をクリックしてピンリストを更新すると、ブループリントノードがピンとして表示されます:
ライブ同期モードでは、Unrealエディターでプレイボタンを押すとチェーンリンクボタンが自動的に表示されます。ただし、クック済みモードでは、チェーンリンクボタンが表示される前にプロジェクトをクックする必要があります。
通常、Aximmetryのブループリントノードには以下のピンが含まれます:
- Name: AximmetryのUnrealモジュール内でピンの名前を設定します。名前は必須です。
- Order Index: AximmetryのUnrealモジュール内でピンの表示順序を決定します。Order Indexの番号が大きいほどピンの位置は下になります。ただし、0インデックスのピンは最も最後に配置されます。
- デフォルト値: ピンが接続されていない場合、AximmetryのUnrealモジュール内でピンのデフォルト値を設定します。
- 返り値: Aximmetryから受け取る値です。
名前、順序、インデックス、およびデフォルト値のピンは静的です。つまり、ブループリント内のこれらのピンへの接続に影響されません。
NOTE: シーン内の複数のオブジェクトが同じブループリント(レベルブループリントを除く)を使用している場合、Aximmetryノードから受け取るデータは同一になります。これは、ノードの名前が静的であるため、オブジェクト間の動的な区別が不可能だからです。オブジェクト固有のデータ処理を可能にするには、各オブジェクト用に別々のブループリントを作成するか、各オブジェクト用にデータを一意にパースする方法を実装する必要があります。
NOTE: Aximmetry用のすべてのAximmetryブループリントノードはUnreal Engineに組み込まれています。Unreal Engineの標準版では利用できません。
例
Get Aximmetry Logical
The Logicalピンデータタイプは、Aximmetry内で二値のON/OFFスイッチとして機能し、Unreal内の要素を簡単にトグルできます。
例:アクターオブジェクトを非表示にする場合:
まず、アウトライナーからドラッグアンドドロップで Level Blueprint にオブジェクトを追加します:
NOTE: アウトライナーからオブジェクトを参照できるのは、シーン(レベル)に直接接続されているLevel Blueprintのみです。
次に、Set Actor Hidden In Game、Get Aximmetry Logical、およびEvent Tickノードを追加し接続します:
NOTE: イベント型ノードには特別な実行ピンがあり、ブループリントノードのアクティベーションをトリガーします。Event Tickノードの場合、実行ピンは各フレームで実行をトリガーします。この実行ピンメカニズムはUnreal固有の機能です。一方、AximmetryのFlow Editorはモジュール実行のためのより自動化されたシステムを採用しています。
Aximmetryでは、赤いチェーンリンクボタン が表示され、クリックすると、Unrealモジュールに論理ピン(Hide Floor)が追加されます。ピンの状態は、Unrealモジュールが選択されている場合、Pin Valuesパネルからオン/オフを切り替えることができます:
Get Aximmetry Transformation
Transformationピンのデータタイプは、位置、回転、スケールの空間的な組み合わせを表します。
これは、Aximmetry DE内でシーン内のオブジェクトを移動する際、Unreal EngineとAximmetry DEの間を頻繁に切り替える必要なく、特に便利です。さらに、Aximmetry内のアニメーションを使用するなど、動的なオブジェクトの移動を容易にします。
このセクションでは、Aximmetry DE内からアクターオブジェクトの変換を制御する方法について学びます。
最初に、オブジェクトがMovableに設定されていることを確認してください。そうでないと、シーンが実行開始後にオブジェクトを移動できません。このオプションは、DetailsパネルのTransformセクションにあります:
次に、オブジェクトをブループリントに追加します。前のセクションと同様に、OutlinerからオブジェクトをドラッグアンドドロップでLevel Blueprintに配置します。この例では、デモ用にキューブのようなオブジェクトを使用しています。
次に、Set Actor Transform、Get Aximmetry Transformation、およびEvent Tickノードを追加し接続します:
NOTE: オブジェクトがアクターでない場合、Set Actor Transformの代替ノードが必要になる場合があります。
チェーンリンクボタン をクリックした後、Aximmetryに変形が表示されます。
オブジェクトの変形を操作する方法は複数あります。ここでは3つの一般的な方法を説明します:
- Pin Value Edit:
- 静的な位置値を正確に設定するには、Unreal モジュールの作成した変換ピンを Pin Values パネルで編集します:
- Direct Value Control:
- 個々の変換値を動的に制御するには、Transformation Compose と Vector Merge モジュールを使用します:
- Sequencer を使用したアニメーション:
- オブジェクトの変換を時間とともに変更するアニメーションを作成するには、Sequencer モジュールと Sequence Node モジュールをペアで接続します:
- シーンノードモジュールを使用する:
- 変換を制御する実用的な方法は、シーンノードモジュールを追加し、そのWorld Transfピン(初期状態では非表示 — 上部右隅の展開リストボタンをクリックして表示)を、Unreal Blueprintで作成したUnrealモジュールのピンに接続することです:
- 編集モードを有効にするには、編集 / シーン編集オンメニューでプレビューウィンドウを選択するか、メニューバーのクイックボタンを使用します:
- NOTE: カメラコンパウンドのプレビューピンがプレビューの出力チャネルに接続されていることを確認してください。
- シーンノードモジュールを選択すると、プレビュー画面上でオブジェクトの変換調整が可能になります:
- シーン編集オン機能の詳細については、変換ギズモとシーン編集設定ドキュメントを参照してください。
NOTE: Unreal から Aximmetry の座標系に位置や変換を変換するには、[Common_Studio]:Compounds\Tools\Unreal_Transformation.xcomp コンパウンドを使用してください。
NOTE: ブループリントの変換ピンをベクトルに分割し、さらにスカラー要素に分解するには、Split Struct Pinオプションを使用できます。これは、変換を右クリックしてアクセスできます:
Aximmetry Trigger を取得
The Triggerピンデータタイプは、さまざまなアニメーションやタイミング機能を開始/停止するための開始/停止信号として機能します。
Get Aximmetry Trigger、Event BeginPlay、Bind Event to Trigger、およびCustom Eventノードを追加し接続します。
Bind Event to Triggerノードは、 Context Sensitive検索がオフの場合にのみ検索可能です。
Event BeginPlayノードは、以前の例で使用されたEvent Tickノードの代わりに使用する必要があります。
カスタムイベントの実行ピンに希望のブループリント論理を接続します。例えば、当社の例では、パーティクルシステムのアクティベーションをイベントにリンクしました:
上記のノードをUnrealのブループリントエディターにコピーして貼り付けるには、このボックスをクリックし、CTRL + Aで全テキストを選択、CTRL + Cでコピーし、UnrealのブループリントでCTRL + Vで貼り付けます。
Aximmetryでは、トリガーピンをさまざまな方法で利用できます。実用的なアプローチの1つは、トリガーをコントロールボードのボタンとして配置することです。これには、コントロールボードとピンコレクターの特殊な複合体を使用します:
この設定により、プロダクション内でパーティクルシステムをトリガーする便利なアクセスが可能です:
NOTE: コントロールボードに他の種類のGet Aximmetryノードを露出させることも可能です。
Get Aximmetry Video
The Video ピンデータタイプは、動画フレームまたは画像(静的テクスチャ)として機能します。
このテクニックは、シーン内に仮想スクリーン(テレビのようなもの)を作成するために頻繁に使用されます。詳細な例については、Aximmetry からの Unreal における仮想スクリーンドキュメントを参照してください。
ガンマ補正オプション
Get Aximmetry Video ブループリントノードには、S RGB ピンが搭載されており、受信した動画が sRGB または 線形 として処理されるかを決定します。
S RGB は、色情報を含むテクスチャ(シーンにレンダリングされるカメラ映像など)には有効にし、シェーダーの数値計算に使用されるテクスチャ(例:ノーマルマップ、マスク)には無効にします。このオプションは8ビットテクスチャにのみ影響します。Unrealでは、8ビット以外および浮動小数点テクスチャはすべて線形として扱われます。
Unrealからのビデオ
現在、UnrealからAximmetryへのデータ送信はビデオ出力に限定されていますが、将来的に他のデータタイプにも対応予定です。
Set Aximmetry Videoブループリントノードは、テクスチャをAximmetryに送信する機能を提供します。各出力に異なる名前を割り当てることで、複数のSet Aximmetry Video出力を使用可能です。
Set Aximmetry Video自体はガンマ補正を行いません。生成される出力は、接続されたテクスチャまたはレンダリングターゲットの設定とピクセル形式に依存します。デフォルトの出力は、ピクセル形式に関わらず常にsRGBとして扱われます。
シーンにSet Aximmetry Videoノードが存在しない場合、Unreal Projectモジュールのデフォルト出力は、Unrealが画面に表示するシーンをミラーリングし、ラベル「out」が付いた見えないSet Aximmetry Videoノードと同様の機能を果たします。このデフォルト出力のフォーマットは、編集 / プロジェクト設定 - レンダリング / デフォルト設定 / フレームバッファ ピクセルフォーマットで設定できます:
コンテキスト依存
デフォルトでは、新しいブループリントノードを追加しようとした際に、すべてのブループリントノードが表示されません。
特定のブループリントノードが表示されない場合は、コンテキスト依存検索オプションをオフにすると、利用可能なすべてのブループリントノードが表示されます: