On this page

現在のところ、Houdini Engines for UnrealはHoudiniアセットについて以下のタイプのジオメトリの出力をサポートしています:

ジオメトリは、Displayフラグセットが設定されているノードから出力されます。 SOPタイプのアセットでは、サブネットワーク内の表示SOPノードからジオメトリが出力されます。 Objectタイプのアセットでは、各オブジェクトサブネットワークの表示ノードが出力されます。

デフォルトでは、プラグインは出力ノードを使用せず、Displayフラグが設定されたノードのジオメトリを出力します。 Detailsパネルのアセットオプションで use output nodes チェックボックスをオンにすると、プラグインはHDAの出力ノードを使用します。 出力ノードが見つからない場合に限り、表示フラグノードを使用します。

スタティックメッシュ

ほとんどのHoudiniアセットは、クック時にスタティックメッシュを生成します。 表示ノードに対応する生成されたStatic Meshコンポーネントは、Houdini Asset Actorにアタッチされ、Detailsパネルの Houdini Outputs セクションにリスト表示されます。 これらをベイクしてアセットから分離し、コンテンツブラウザで利用可能なスタンドアロンのスタティックメッシュに変換することができます。

Houdini Outputs セクションには、生成された各メッシュに割り当てられたマテリアルも表示されます。 それらを上書きするには、マテリアルをドラッグアンドドロップするか、ドロップダウンリストでマテリアルを選択します。

生成されたメッシュには、コライダーやソケットも割り当てられています。 Detailsパネル でメッシュのサムネイルをダブルクリックすると、これらを、 スタティックメッシュエディタ で視覚化できます。

メッシュの生成メカニズムの詳細については、メッシュを参照してください。

スタティックメッシュの作成時間が最適化され、Mesh Descriptions を使用するようになりました。 HDAを編集しながら、より高速なプロキシメッシュ生成を使用することができます。 プロキシメッシュは、タイマーまたはレベルの保存/再生時に自動的に、あるいは手動で、微調整されてスタティックメッシュになります。

プロジェクト設定で Enable Proxy Mesh を選択し、それらをオンにします。

HDAの変更時、プロキシメッシュの方が素早く視覚的フィードバックを提供しますが、アセットの最終出力と見なすべきではありません。メインレベルのLODを作成しているだけなので、コライダーは含まれず、インスタンス化もされません。

プロキシにHoudiniロゴのスプライトが表示されることから、HDAがプロキシメッシュを使用しているのが分かります。

出力で複数のメッシュを分割するには、アセットの出力でメッシュを結合する前に、各メッシュをパックプリミティブにパック化します。 単一のパックプリミティブは、1つのインスタンスを含むインスタンサーの代わりに、必ずスタティックメッシュを作成します。

unreal_output_nameアトリビュートを使用して、出力メッシュの名前を設定できます。

インスタンサーとフォリッジ

パックプリミティブまたはアトリビュートインスタンサーを使用するとき、Houdiniアセットはインスタンス化されたStatic Meshコンポーネントを作成します。 すべてのインスタンサーはDetailsパネルの Houdini Outputs セクションにリストされ、instancerとラベル付けされます。

スタティックメッシュと同様、インスタンス化された静的ジオメトリがアセットによって生成された場合、 Houdini Output Mesh セクションにもリストされます。 instancedとラベル付けされ、そのメッシュがHDAの出力でインスタンサーの1つによって使用されることを示します。

unreal_output_nameアトリビュートを使用して、出力インスタンサーの名前を設定できます。

詳細は、インスタンサーを参照してください。

また、 インスタンス化されたStatic Meshコンポーネント の代わりに、 フォリッジのインスタンス を直接作成することもできます。 インスタンサーにunreal_foliage intアトリビュートを追加し、その値を1に設定します。

新しいフォリッジがインスタンス化されたメッシュに作成され、インスタンスが現在のレベルのフォリッジアクター追加されます。

HDAを変更するとき、プラグインはフォリッジインスタンスのみを変更/更新し、手動で配置されたフォリッジインスタンスは変更したり削除しません。

ランドスケープ

アセットが1つまたは複数のHeightfieldノードを出力する場合、結果のジオメトリはUnrealでランドスケープを作成します。

生成されたランドスケープとマテリアルは、Detailsパネルの Houdini Outputs セクションにリストされます。

unreal_landscape_tile_actor_typeアトリビュートを1に設定すると、複数のランドスケープアクターの代わりに、LandscapeStreamingProxiesSharedLandscapeActorを作成することができます。

unreal_output_nameアトリビュートは、出力ランドスケープアクターの名前を設定します。 ストリーミングプロキシを使用する場合、プロキシの共通ランドスケープアクター名はunreal_landscape_shared_actor_nameアトリビュートを使用して設定でき、unreal_output_nameアトリビュートはプロキシの名前を制御します。

詳細は、ランドスケープを参照してください。

データテーブル

HDA出力がHoudiniポイントクラウドの場合、シーンに追加されると、Unreal DataTableが生成されます。 このデータテーブルには、ポイントクラウドのアトリビュートに従って値が入ります。

データテーブルのベースとして使用するUnreal構造体は、ポイントのunreal_data_table_rowstructアトリビュートの値に応じて決まります。 最初のポイントの値が取得されます。 その値は、有効なUnrealオブジェクト参照を表す文字列でなければなりません。 構造体が指定されていない場合、データテーブルに基づいてクック時に生成されます。

ベイクによって作成された最終的なベイク済みテーブルの出力名(指定されていない場合は構造体)は、unreal_object_nameアトリビュートで指定することができます。

データテーブルの各行の行名(キー)として使用される文字列は、ポイントのunreal_data_table_rownameアトリビュートによって決定されます。 このようなアトリビュートが指定されていない場合、行名はデフォルトでNewRow_xとなります(xは行のインデックスで、0から始まります)。

データテーブルは、unreal_object_pathアトリビュートで指定された文字列に保存されます。 最初のポイントの文字列が使用されます。 このパスは、有効なUnrealパスでなければなりません(/GameはContentフォルダを表します)。 パスが指定されていない場合、データテーブルの名前は自動的に生成され、 HoudiniEngine/Temp フォルダに保存されます。 指定されたデータテーブルのパスが既に存在する場合は、上書きされます。

unreal_data_table_で始まるその他のアトリビュートは、データテーブルの入力に使用する候補となります。 データテーブルの行構造体が既に存在する場合、これらのアトリビュートは行構造体の変数とマッチします。 そうでない場合は、これらのアトリビュートに基づいて新しく作成された行構造体に変数が追加されます。

データテーブルをジオメトリ入力としてHoudiniに入力して生成されたポイントクラウドは、Unrealへの追加時に同一のデータテーブルを生成します(Houdiniで文字列に変換されたサポートされていないタイプは例外で、これらの値はスキップされます)。

行構造体が既に存在する場合:

  • 接頭辞に続くアトリビュート名が整数で始まり、その後にアンダースコアが続く場合、その整数はマッチする変数のインデックスとして扱われます。

    • そのインデックスの変数は、接頭辞とインデックス(アンダースコアを含む)を持つアトリビュート名と同じ名前でなければなりません。

      • 例えば、unreal_data_table_2_typeというアトリビュートは、その名前がtypeである場合、行構造体の2番目の変数とマッチします。名前がtypeでない場合はマッチしません。

  • アトリビュート名にインデックスが存在しない場合、接頭辞の後に同じ名前を持つ変数とマッチします。

    • 例えば、unreal_data_table_typeというアトリビュートは、typeという名前の行構造体の変数とマッチします。そうした変数が存在しない場合はマッチしません。

  • マッチするものが見つからない場合、そのアトリビュートはスキップされます。

  • アトリビュートタイプとマッチする変数のタイプは、以下の制約を満たす必要があります:

    • 変数のタイプは以下のいずれかでなければなりません:

      • 任意の数値型

      • ベクター

      • ローテータ

      • トランスフォーム

      • カラー

      • リニアカラー

      • 文字列

    • どちらもコンポーネント数が同じでなければなりません(どちらも単一値であるか、同じサイズのタプルです)。

      • ローテータには3つのコンポーネント、トランスフォームには10のコンポーネント(4つのコンポーネントのクォータニオン、3つのコンポーネントのスケールと移動)、カラーとリニアカラーには4つのコンポーネントがあります。

    • アトリビュートと変数の型が完全に一致しない場合には、以下のいずれかが真でなければなりません:

      • ともに数値型(この場合、アトリビュート値は強制的に変数の型に変換され、オーバーフローが起こる可能性があります)。

      • アトリビュートは数値型で、変数は文字列型(文字列、名前、またはテキスト)

  • トランスフォームは特別なケースとして扱われます。アトリビュートは、標準的な名前で、 rotation、scale、translate が付加された3つの個別のアトリビュートがある場合にのみ、トランスフォームタイプの変数にマッチします。回転アトリビュートはタプルのサイズが4でなければならず、その他のアトリビュートはサイズが3でなければなりません。これは、データテーブルがジオメトリ入力として使用されるときに、トランスフォーム変数がHoudiniアトリビュートに変換される方法を反映しています。

行構造体がまだ存在しない場合:

  • 3つのアトリビュートが上述の命名規則とマッチする場合、トランスフォーム変数が作成されます。

  • マッチしない場合は、接頭辞を持つ各アトリビュートに変数が作成されます。

    • 最もよくマッチするUnrealの型が使用されます。タプルには、一般的なvector型が使用されます。

    • タプルのサイズは、4を越えることはできません。

Splineコンポーネント

HDAは、UnrealでSplineコンポーネントとしてカーブを出力できます。 そのためには、unreal_output_curve intアトリビュートをカーブに追加し、その値を1に設定します

詳細は、カーブ出力を参照してください。

ジオメトリコレクション

HDAには、ジオメトリコレクションを出力する機能があり、Unrealの Chaos Physics との互換性を確保できます。 ジオメトリコレクションの出力は、ゼロ以外のunreal_gc_piece Primitiveアトリビュートを持つパックプリミティブから生成されます。 これを行なうには、unreal_gc_pieceアトリビュートと共にVoronoi Fractureノードを使用します。

詳細は、Chaos(ジオメトリコレクション)を参照してください。

スケルタルメッシュ

Houdini Engine for Unrealプラグインは、KineFXからスケルタルメッシュを出力できます。 スケルタルメッシュをUnrealに適切にエクスポートして戻すには、Rest GeometryとCapture Poseと共に、出力に KineFXtoUnrealノード を使用する必要があります。

詳細は、スケルタルメッシュを参照してください。

ランドスケープスプライン

詳細は、ランドスケープスプラインを参照してください。

テンプレートジオメトリ出力

Output Templated Geos アセットオプションがオンのとき、プラグインはアセットのテンプレートジオメトリを表示します。 出力を作成することなく、HDAの出力を生成するのに使用されるヘルパージオメトリを表示できます。

テンプレートジオメトリ出力は、特定のワイヤーフレームのデフォルトのマテリアルを使用します。それらはベイクされず、デフォルトでゲーム内では非表示です。 テンプレートメッシュのみがサポートされ、表示ジオメトリがテンプレートと見なされることはありません。

Note

現在のところ、ガイドジオメトリはサポートされず、Templateフラグが設定されたノードのみがサポートされています。

Mesh Build Settings

生成されたスタティックメッシュの動作/作成を制御する多くのプロパティ(デフォルトのコリジョンプリセット、MikkTSpaceの使用、距離フィールドなど)は、Detailsパネルで直接変更することができます。

それらのプロパティは、Static MeshコンポーネントのDetailsまたはスタティックメッシュエディタにあります。 それらはHoudiniアセットのDetailsの Static Mesh Generation の下に、 Static Mesh GenerationプロパティStatic Mesh Build Settings として表示されます。

これらは、Houdiniアセットコンポーネント毎にプラグイン設定で設定されたデフォルトのビルド設定値を上書きすることができます。 また、一般的なプロパティアトリビュート(Detailアトリビュートのみ)を使用することで、アトリビュートを介してプロシージャルに変更することもできます。

i@unreal_uproperty_UseFullPrecisionUVs = 1;

Unreal

はじめよう

基本

Houdini Engineを使用する

リファレンス

Houdini Engine for Unreal Engineは、HoudiniのテクノロジーをUnrealに統合できるプラグインです。 Session SyncとNode Syncは、Houdiniのライブセッションと相互作用するためのHoudini Engineプラグインの2つの機能です。

このプラグインを使用すると、Houdiniの強力かつ柔軟なプロシージャルワークフローを、Houdiniデジタルアセットを通してUnreal Engineで実現できます。 アーティストはエディタ内でアセットパラメータをインタラクティブに調整して、Unrealアセットを入力として使用することができます。 その後、Houdiniのプロシージャルエンジンがアセットを“クック”し、その結果をエディタで使用できるようになります。ベイクする必要はありません。

一般情報:

互換性:

現在のところ、プラグインにはUE5.3、5.2、5.1、5.0、UE4.27、UE4.26向けにビルドされたバイナリがあり、Houdiniの最新のプロダクションビルドにリンクされています。

プラグインのソースコードは、UE5.3、5.2、5.1、5.0、UE4.27、UE4.26のこのリポジトリで利用可能です。

Note

UE5.1およびUE5.0は、同じソースファイル/ブランチを使用し、5.0ソースは5.1でも使用できるようになっています。

サポートおよびバグのレポート:

便利なリンク:

SessionSync

Houdini Engine SessionSync機能を使用すると、GUIを使ってHoudini内で実行されているHoudini Engineのセッションに接続することができます。 通常のHoudini Engineワークフローのすべての機能と、Session Sync固有の追加機能をサポートしています。

Houdini Engineは非UIバージョンのHoudiniを使用しますが、Session SyncではHoudiniのユーザインターフェースを通してHoudiniセッションを確認したり、操作することができます。 また、UnrealやHoudiniで加えた変更は同期されるため、どちらのプログラムでも変更を加えても、同じ結果が得られます。

NodeSync

NodeSyncは、UnrealとHoudini Session Sync間のアセット共有を可能にする、Houdini Engine for Unrealプラグインの機能です。スケルタルメッシュとスタティックメッシュで機能します。

専用のHDAを使用することなく、Unrealにデータを送信したり、Unrealからデータを受信することができます。アクターに加えて、スタティックメッシュやスケルタルメッシュでも機能します。

Houdini Niagara

Houdini-Niagaraプラグインを使用すると、HoudiniNiagara Data Interfaceを使用して、HoudiniとUnrealのNiagaraシステム間でポイントクラウドデータを交換することができます。 Houdiniのアトリビュートデータを、HoudiniPointCacheアセットとしてエクスポートできます。 これらをUnrealにインポートし、Niagaraシステムとエミッターを使用して、複雑なエフェクトやパーティクルシステムを作成できます。