HOME

VATによる群衆表現⑥:HoudiniEngineを使った群衆Actorの配置

HoudiniEngineで群衆Actorの組み合わせパラメータを変更する工程の検証

環境

HoudiniIndie20.5.522
HoudiniEngine20.5.522
HoudiniLabs Plugin2.0

前回の記事

VATによる群衆表現①:ソフトボディVATでキャラクターを動かす
https://www.procedural.jp/articles/4pxh95hix

VATによる群衆表現②:LODを含むVATの作成
https://www.procedural.jp/articles/nfy3yj8h0

VATによる群衆表現③:頂点カラーによるキャラクターバリエーションの切り替え
https://www.procedural.jp/articles/imb0tw2j-w

VATによる群衆表現④:モーション制御
https://www.procedural.jp/articles/kkil4aswto

VATによる群衆表現⑤:unlit等、その他の調整
https://www.procedural.jp/articles/44z7g7evyx0

実行結果

群衆をActorとして制御できるようにしたので、HoudiniEngineのパラメータ調整を利用して組み合わせをランダム化した群衆

HoudiniEngineから組み合わせを切り替えたVATキャラクターを作成
シェーダー複雑度

群衆の変更をActorとして制作した場合に利用可能な追加のメリット。
HoudiniEngineで配置、調整ができるのでHoudiniを含むワークフローと非常に親和性が高い

HoudiniEngineからActorの配置

Houdiniでの設定

UnrealEngine上で作成したいBluePrint上で右クリックし、コピーする。

UnrealEngine上でctrl+cを押すとパスをコピーできる

コピーして取得できた値をpointアトリビュートのs@unreal_instanceとして設定する。
ここでは以下のようなWrangleになっており、””に囲まれている部分がコピーして取得できた文字列。

s@unreal_instance = "/Script/Engine.Blueprint'/Game/vat/vat002/VATCharacter002.VATCharacter002'";
pointにインスタンス指定するアトリビュートを設定する

これを出力につないだhdaを作成し、保存する

UnrealEngineで実行

UnrealEngine上でhdaをシーンにドロップするとpointで位置を設定したBluePrintが配置される。

hdaのpoint出力がBluePrintの配置に置き換わる

配置しただけだとHoudiniAssetActorに紐づいた状態になっているのでシーンに生成を確定させたい場合、Bakeボタンを押す。

シーンに生成するにはBakeボタンを押す
HoudiniAssetActorを削除しても、HoudiniEngineから独立したActorとして利用できるようになる。

Actorの調整

HoudiniEngineからBluePrintActorを作成する際に設定したいパラメータを「unreal_uproperty_***」の形式でアトリビュートを持たせることで配置時に値を設定して配置することができる。
これを利用してアクターのもつ設定値を変更していく

UnrealEngineでの調整

BluePrintからスタティックメッシュコンポーネントの Custom Primitive Data を制御できるようにBluePritntで変数を設定し、SetCurrentPrimitiveDataFloatからindexでVAT切り替えの値に紐づけを行う(画像ではテスト用のprama00~param04を4つ目までの値に接続している)

BluePrintから各カスタムプリミティブデータを調整できるように接続する

HDAの調整

ブループリントの設定からカスタムプリミティブデータを調整できるようにしたらHoudiniに戻り、「unreal_uproperty_***(プロパティ名)」の形式で指定したい値を設定する。

upropertyを指定するアトリビュートをpointごとに設定する

ここでは

s@unreal_instance = "/Script/Engine.Blueprint'/Game/vat/vat002/VATCharacter002.VATCharacter002'";
i@unreal_uproperty_param00=0;
i@unreal_uproperty_param01=1;
i@unreal_uproperty_param02=0;
i@unreal_uproperty_param03=1;

を入力している

設定対象のプロパティの名前は詳細パネル上の右クリックから参照できる

upropertyの名前は右クリックで取得できる

UnrealEngineで配置

このアトリビュートを設定したpointを出力するhdaを配置すると生成されるBluePrintActorは指定した値が設定された状態で作成される

pointがBluePrintに置き換わるときに設定値も反映される

ポイントごとに個別にアトリビュート設定すると

pointごとに異なる値を設定する

ポイントごとに設定したパラメータがupropertyに反映されてインスタンスが作成される

pointがもつ固有のuproperty_***アトリビュートが反映される

最終的なブループリントとhda側の設定

各切り替え用の Custom Primitive Data をBluePrintのパラメータとして外に出し

各カスタムプリミティブデータに設定できるように接続

hdaからの出力でそれらの値を調整できるように更新した。

hda側で設定する値を制御

これでHoudiniEngineからUnrealに入力したpointで配置位置とVATモデルのパーツ表示切替が可能になる


群衆をActorで作成した場合の利点としてHoiudiniEngineから配置時にどの表示の組み合わせのVATを配置するかも指定できます。
建物に置いたりするときにとても便利そう。

fish_ball

プロシージャル魚類