Houdini 20.0 Unity

Houdiniアセット

UnityでHoudiniアセットを使用する方法。

On this page

Houdiniアセット

Houdiniアセット は、HDAファイルをUnityプロジェクトにロードすると作成されます。 ロードするには、HDAをUnity HierarchyまたはSceneビューにドラッグアンドドロップするか、または、 HoudiniEngine ▸ Load Houdini Digital Asset メニューコマンドを使用します。

HDAがUnityにロードされると、プラグインはHDAをデフォルトのHoudini Engineセッションにロードし、自動的に クック して、関連するHDAメタ情報とクックされた出力を含むGameObject階層を作成します。

Unityで必要となる持続的ストレージ用にアセットが生成したファイル(マテリアル、テクスチャ、メッシュなど)は、 Assets/HoudiniEngineAssetCache/Working フォルダに格納されます。 各アセットのデータは、そのアセットと同じ名前のサブフォルダに格納され、場合によっては、末尾に整数が付いた一意のフォルダ名が生成されます。 Scene内でアセットが削除されると、そのアセットがSceneに保存されていない限り、その作業フォルダも削除されることに注意してください。 現在のところ、アセットが他のSceneで使用されているかどうかを確認する方法がUnityにないため、保存されたSceneからアセットを削除した後、そのアセットの作業フォルダを削除するかどうかはユーザに任されています。

Note

アセットはUnityプロジェクトの Assets フォルダへの 相対パス を使用してインポートされます。

Note

アセットに対してUnityの組み込みの複製またはコピー/ペーストの仕組みを使用しても上手く動作しません。 代わりにDuplicate Assetボタンを使用して、手動でアセットを複製してください。 詳細は以下をご覧ください。

アセット階層

以下は、EvergreenGenerator.otlアセットに対して生成されたGameObject階層です。

この階層の各項目が何であるかを理解することが重要です。 この階層スキームは、Unityシーンにおけるアセットのあらゆる表現に使用されます。 プラグインデータと最終的なアウトプットの間には明確な境界があり、プラグインが不要な場合や利用不可な場合でも、柔軟なワークフローを可能にします。

ルートGameObject

ルートGameObject(EvergreenGenerator)は、生成されるすべてのGameObjectの親であり、生成される子GameObjectを1箇所のトランスフォーム下にグループ化するのに主に使用されます。 ここには、HEU_HoudiniAssetRootコンポーネントが含まれています。 そのHEU_HoudiniAssetRootコンポーネントは軽量なスクリプトで、カスタムのInspector UIを表示したり、SceneビューでCurve Editor用などのカスタムツールをアクティブにするのに使用されます。

Asset Metadata (HDA_Data)

HDA_Data子GameObjectには、単一スクリプトコンポーネントのHEU_HoudiniAssetが含まれています。 このコンポーネントは、すべてのプラグイン操作のためのメインスクリプトで、アセットに関するすべてのメタデータとステート情報を含んでいます。 ほとんどの場合、ユーザがこのGameObjectやその値を変更することはありませんが(変更すべきでもありません)、そのデータを確認しておくと、アセット構造の理解や、クックや出力に関する問題のトラブルシューティングに役立つ場合があります。 このコンポーネントの重要な設計上の特徴は、 EditorOnly としてタグ付けされていることです。 これは特殊なUnityタグで、プロジェクトのビルド時にこのGameObjectと保存されているデータを自動的に削除します。 つまり、HEU_HoudiniAsset GameObjectはビルドから取り除かれ、ランタイム時には利用できません。 プラグインはランタイム時に機能しないため、このタグはプラグインメタデータがビルドから削除され、メモリのオーバーヘッドを削減することを保証します。 また、ベイクの必要もなくなります。 このスクリプトに関する詳しい情報は、今後提供される予定です。

出力GameObjects

階層内の他のすべてのGameObjectは、アセットをクックすることで生成される出力の一部とみなされます。 これらには通常、 Mesh RendererMesh FilterMesh ColliderMaterials などの一般的なUnityコンポーネントが含まれます。 設計上、これらの最終出力のGameObjectにはプラグイン固有のコンポーネントが存在しないことが保証されています。 実際、これらのGameObjectをコピーアンドペーストして階層の外に移動させるだけで、これらはプラグインへの依存関係やリンク関係を持たなくなるため、プラグインなしで存在できるようになります。

アセットのInspector UI

これは、Houdiniアセットをロードしてクックした後のInspector UIです。 アセットのタイプ、その表示ノードと編集可能なノード、パラメータに基づいて項目を表示する動的なUIであることに注意してください。

Generate

Generate セクションには、アセットをロードおよび変更するための機能が含まれています。

Rebuild Asset

Houdini EngineセッションとUnityシーンで強制的にアセットをリロードします。 これは、手動でアセットを削除してロードするのと同じアクションです。 最新のパラメータ値が保存され、ロード後にアセットに再適用されます。 入力ノードオブジェクトは、Unityシーンで利用可能である限り、再接続されます。 ただし、マテリアルのオーバーライドはリセットされます。 HDAファイルが変更され、Houdiniに保存された場合、アセットを再構築するためにはこれを使用する必要があります。 また、アセットがエラー状態にある場合も便利です。 これは、HDA_Data GameObject、すべての出力GameObject、すべての入力オーバーライドを破棄して再生成するものですが、 ルートのHEU_HoudiniAssetRoot GameObject、コールバックイベント、それに割り当てられたスクリプトは保持されることに注意してください。

Recook Asset

変更されたパラメータ のみ をアップロードし、Houdiniで強制的にアセットをクックします。 その後、出力(メッシュ、マテリアルなど)が再生成されます。 HDAファイルが変更されHoudiniで再保存された場合は、代わりにRebuild Assetを使用することをお勧めします。

デフォルトでは、UIを介してパラメータが変更されると、アセットは変更されたパラメータのみを自動的にアップロードして再クックします。 そして変更された出力だけが再生成されます。 これは、クック処理をスピードアップするためです。 これを無効にしたい場合は、 HDA Options セクションの Auto-Cook On Parameter Change チェックボックスを使用します。 これをオフにしたら、Recook Assetボタンを使用して、手動でクック処理を呼び出すことができます。 そして変更されたパラメータ値をアップロードしてすべてを再クックすることができます。 自動クックの無効化は、たくさんのパラメータを変更してクックが終了するのを待ちたくない場合に便利です。

Keep Only Output

HEU_HoudiniAssetRootおよびHEU_HoudiniAssetスクリプトを含むすべてのHoudini Engineデータを削除します。 Houdini Engineセッションにロードされたアセットも失なわれます。 他の Bake 関数と似ていますが、重複したGameObjectを生成しない点が異なります。 シーン内でアセットの出力が1つしか必要なく、HDAはもう必要ない場合に便利です。

Duplicate Asset

これは、インスタンス化されたアセットを複製またはコピー/ペーストできる唯一のお勧めの方法です。 これを使用すると、アセットとそのステートのコピーだけでなく、すべての入力やオーバーライドなどもHoudiniセッションで正しくインスタンス化することができます。

Reset Parameters

これは、パラメータを、HDAに保存されたデフォルト値にリセットします。 すべてのカーブの変更や入力ノードの変更もリセットされます。

Bake

Bake セクションには、出力のコピーを生成したり、更新するための機能が含まれています。 以前にベイクした出力を更新できるのは、バージョン2の新機能です。

Bake GameObject

Scene内に出力のコピーを作成します。 出力には、プラグイン固有のデータやコンポーネントは含まれません。 出力に複数のGameObjectがある場合、グループ化を保持するためのルート(空っぽの)GameObjectが存在するようになることに注意してください。 出力が単一のGameObjectである場合、階層は平坦化され、親を持たない単一のGameObjectのみが生成されます。

Bake Prefab

Project内に出力のPrefabを作成します。 Prefabは、Assets/HoudiniEngineAssetCache/Bakedフォルダの、アセットと同じ名前の新しいサブフォルダに保存されます。 サブフォルダ名が既に存在する場合は、末尾に整数が付いた一意の名前が使用されます。 このサブフォルダには、生成してファイルストレージに書き出されたマテリアルやメッシュも各サブフォルダに格納されます。

Bake Update

以前にベイクされたGameObjectやPrefabを更新します。 以前にベイクされていないGameObjectでも動作するはずです。 これは基本的に、出力GameObjectのコンポーネントをターゲットのGameObjectにコピーします。 出力を更新したいが、他のすべてのデータは保持したい場合に便利です(例えば、既に車に取り付けられ、配置されている車輪など)。 これはターゲットGameObjectの動的なリストを受け入れ、リスト内には最低1つの項目が必要です。 リストでは、スタンドアロンのGameObjectとPrefabが混在していても構いません。 出力の一部として複数のGameObjectがある場合、それぞれのGameObjectの名前でマッチングが行なわれます。 そのため、Bake Updateを使用する予定の場合は、出力GameObjectの名前を変更しないことを強くお勧めします。

Keep Previous Transform Values

Bake Updateでベイクされたオブジェクトの相対的なトランスフォーム値を保持しようと試みます。 通常はLODに便利です。

Events

このセクションでは、Generate関数とBake関数が呼び出された後、それぞれの関数にコールバックを追加することができます。 これは、生成、クック、ベイクの後にカスタムコードやセットアップを実行したい場合に便利です。 例えば、HDAから新しいプラットフォームをベイクした後、カスタムスクリプトでナビゲーションシステムのプラットフォームをセットアップすることができます。 コールバック関数の例については、 _HoudiniEngineUnity/Scripts/Tests/HEU_AssetEventReceiverTest.cs_ を参照してください。

HDAオプション

アセットのクックの動作を制御するためのオプションが含まれています。

Cook Triggers

Parameter Change

パラメータが変更された場合に自動的にクックします。 クックに時間がかかりすぎる場合は、これをオフにし、 Recook Asset を使用して手動でクックします。

Transform Change

Unityのトランスフォームが変更された場合、アセットを自動的に再クックします。 これは、最終的な出力を計算するためのノードネットワークでトランスフォームが使用されている場合に便利です。

Downstream Cooks

アセットがクックされると、指定したアセットが入力である他のアセットのクックがトリガーされます。

Generate

Use output nodes

Displayフラグの代わりに出力ノードを使用するかどうかを制御します。

LOD Groups

出力にLOD(詳細レベル)メッシュを含むLODグループを生成するかどうかを制御します(詳細レベルを参照)。 これを無効にすると、すべてのジオメトリグループが結合されます。Unity 2017.1以降でのみサポートされます。

Generate Normals

Unityでクックの後、法線を生成するかどうかを制御します。

Generate Tangents

Unityでクックの後、接線を生成するかどうかを制御します。

UVs

クックの後、UnityでUVを生成するかどうかを制御します。生成する場合、Houdiniからの最初のUVセットは上書きされます。

Using Points

頂点を分割する(デフォルトの動作)のではなく、(共通の)頂点としてポイントを使用するかどうかを制御します。 頂点数は減りますが、Pointアトリビュートのみが使用される点に注意してください。 そのため、法線、接線、カラー、UVなどがポイントによって所有されていることを確認することが重要です。

Miscellaneous

Push Transform To Houdini

Unityのトランスフォーム値でHoudini Engineセッションのアセットを更新します。 例えば、ユーザがアセットのルートを移動した場合、この位置の変更はHoudiniに反映されます。

Ignore NonDisplay Nodes

オンの場合、最終的な表示ジオメトリのみが生成され、その他はすべて無視されます。

Split Geos By Groups

出力ジオメトリをグループごとに別のゲームオブジェクトに分割します。 その後、各グループがメッシュやその他のコンポーネントを含むゲームオブジェクトを生成します。 この機能は廃止され、もはやサポートされていないことに注意してください。 単純なケースでのみ使用することをお勧めします。

その他のオプション

Save HDA Preset

アセットのパラメータプリセットをファイルに保存します。 このファイルには、現在のパラメータプリセットと、アセット内のすべてのカーブのパラメータプリセットが含まれます。 このファイルは、Load HDA Presetボタンを使用してロードできます。 シーンやプロジェクトをまたいで、アセットのパラメータ値のクローンを作成するのに使用できるほか、このファイルはソース管理によって管理可能です。

Load HDA Preset

前に保存したパラメータプリセットファイルをこのアセットにロードして、それらの値でクックします。 プリセットファイルは、このアセットと同じHDAでインスタンス化されたアセットによって保存されたものでなければなりません。

Reset Material Overrides

このアセットのすべてのマテリアルオーバーライドをリセットします。 マテリアルオーバーライドを参照してください。

Asset Parameters

アセット上に露出されたすべてのパラメータを含みます。これは動的に作成されるセクションで、各パラメータをそのタイプに応じて表示します。 現在、ほとんどのパラメータがサポートされていますが、Rampは例外で、将来的に完全にサポートされる予定です。

Unity

はじめよう

プロジェクトのセットアップ

Houdini Engineを使用する

リファレンス