執筆バージョン: Unreal Engine 5.3
|
こんにちは、3Dアーティストの天見です。
今回は DataTableに登録したアセットをHDA(Houdini Digital Assets)で使用する方法を紹介します。
※Houdini Engineについては下記の記事にて紹介しています
[UE4]Houdini Engineの紹介

Structureの作成
まず、 DataTableを作成するために必要な項目を変数として定義します。
- Content Browserを右クリック
- 「Blueprints」>「Structure」を選択します。


StructureのVariableを作成
DataTableに含まれる各項目に対応するVariableを追加します。
- Structureをダブルクリックしてウインドウを開き、
- 「Add Variable」ボタンからVariableを追加します。

Variableの種類変更
- asset:Soft Object Path(アセットを登録する変数)
- scale: Float(アセットのスケールの変数)


Datatableの作成
- Content Browserを右クリック
- 「Miscellaneous」>「Data Table」を選択します。

表示されたStructureの選択ウインドウで、先ほど作成したStructureのファイル名を選択します。


DataTableにアセットを登録
今回は4種類のパン アセットを登録します。

- 「Add」でRowを4つ追加し、各Rowに対してアセットを選択し、スケールを指定します。
- スケールは基本的に1.0で統一し、大きいパンのみ0.5に調整します。

HDAをつくり DataTable読み込む
Houdini上でHDAを作成し、ObjectMergeノードを作り、Object1をHDAのパラメーターに追加します。


HDAをUnreal Engine上で使用
HDAをUnreal Engine上に配置し、先程作成したパラメーターに DataTableを読み込ませます。


DataTableの確認
- 「Houdini Engine」>「Open Houdini Session Sync」を実行し、Houdiniが起動したら「Rebuild」を押してHoudini上にHDAのノードを表示します。
- Object Mergeの情報を確認し、 DataTableから読み込んだ情報が正しく表示されていることを確認します。



スプレッドシートで確認
Object Mergeのスプレッドシートを見ると、 DataTableから読み込んだ情報を確認できます。
DataTableは、Rowの数に応じて4つのポイントとして作成されます。
各ポイントのアトリビュートには、asset(アセットパス)とscale(大きさ)の情報が含まれています。


アトリビュートの整理
ポイントの原点移動、不要なアトリビュートの削除、 DataTableのアトリビュートのリネームを行います。

1.ポイントが縦にならんでいるので全て原点移動
2.いらないアトリビュートを削除

3.DataTableのアトリビュートをリネーム
asset のアトリビュートはunreal_instanceという名前に変更します。


整理したアトリビュートはこうなりました。
整理したポイントをScatterを使ってばらまきます。

HDAをUnrealEngine上で表示
ポイントの中のunreal_instanceといアトリビュートのパスを参照して、ポイントがアセットに置き換わりました。

Scatterの範囲はPlaneアクターを参照しているので、Planeのサイズを変えると追従します。

この方法で、HDAで DataTableに登録したアセットを使用することができます。
DataTableでのアセット管理は、電柱や家などの配置ツールに幅広く応用可能ですので、是非活用してみてください。