【UE4】【Houdini】VATをカスケードで制御する
今回使用するVerは
UE4・・・4.21.2
Houdini・・・17.5.229
今回は、HoudiniとUE4の連携的な内容をしていきたいと思います。
UE4にVATで持っていく手段は、色々な所に情報はありますが
私のような知識の乏しい人の場合
書いてある手段とちょっとでもずれると、途端に解らなくなってしまい...
という事があったので、記事に書いておこうと思います。
今回は基本的なRBDによるシミュレーション前提となります。
ほかのシミュレーションなどの場合は手段も恐らく変わってくると思います。
VATについて
まずはそもそもVATについて
Vertex Animation Textureの略称です
Vertexは頂点
Animationはアニメーション、ざっくり言うと動き
Textureはテクスチャ、ざっくり言うと画像
3Dモデルの動きデータを画像に入れ込んだもの、と考えればいいと思います。
VATを使うには
VATを作る機能は、Houdiniに最初から入っているわけではないので
データをDLする必要があります。
シェルフの部分の、UpdateでDL出来るはずです。
ただ、具体的な手順が若干解っていない所もあります、ご了承下さい
また、自身はsteamのIndie版です
ここが違うと、DLの仕方も変わってくるかもしれません。
まずはシミュレーションを作ってみる
とりあえず、定番のシミュレーションを作ります。
とりあえず、でBoxを作ります。
上空から落とすので、Centerをとりあえず2程度に設定しておきましょう。
その後の設定はこのようにします。
ノードの設定そのものは初期設定で問題ありません。
最後はNUllノードを作り、解りやすくする為に、名前を「OUT」にしています。
その後、OBJまで戻り
ここのシェルフにてシミュレーションを作ります。
シミュレーションを作る際に
この様なメッセージが出てきます。
左側をクリックしておきましょう。
VATでもっていくには、シミュレーションをパック化しておく必要があります。
ほかのシェルフなどで作る場合、UE4にもって行ったときに変な動きになることがあります。
OBJネットワーク上に、DOPのノードが作られるので、中に入ります。
今の段階で再生しても、ただ重力で落ちるだけとなっています。
地面が作られていないので、地面を作ります。
これで、地面に落ちて割れるシミュレーションが作られました。
次に、VATに変換してUE4に組み込みます。
VATの作成
まずは、破壊したBOXを作ったノードに入ります
OUTの下が、シェルフでシミュレーションを作った時に自動で作られたノードです。
このままでは、若干解りにくいので
最後にNULLノードを接続しておきます。
名前はOUT_Simとしました。
OUTネットワークに移動し、VATを作るノードを作成します。
今回はRBDのシミュレーションを作ったので
Rigid、を選択します。
Export Nodeは、変換するノードを選択します。
シミュレーション自体はDOPで作っていますが。
DOPで作ったシミュレーションは、SOPで読み込んでいます
なので、SOPの方のパスを選択しておきます。
最後に作ったOUT_Simを設定しておきましょう。
設定できたら、Renderのボタンで出力します。
プロジェクトのExportというフォルダに出力されたデータが出てくると思います。
UE4への組込み
RBD用の場合は、メッシュと最後にPOSとあるテクスチャとROTとあるテクスチャが書き出されます。
ここは書き出す種類によって変わってきます。
まずは、この書き出した三つのデータをUE4にインポートします。
次にマテリアルが必要になるので、新規でマテリアルを作ります。
HoudiniのVATを作ったノードにこの様な部分があります。
+のボタンを押すと開くので、この中身をコピー&ペーストでUE4に持っていきます。
コードをコピーしたら、UE4のマテリアル上で貼り付けをすると、ノードが作られます。
詳細設定の、ここの矢印をクリックで展開して
ここの設定を3にしておきます。
Houdiniから持ってきたノード群には
コメントで何処に接続すればいいのか?が書いてあるので
それに従い設定していきます。
マテリアルは完成ですが
VAtで動かすには、インスタンスを作っておきます。
作ったマテリアルからインスタンスを作成します。
インスタンスのこの5つのパラメータは編集する必要があるので
チェックを入れて編集します。
ここに入れる数値は
Houdini側の、この部分と同じ数値を入れる必要があります。
インスタンスにある、ここの部分も編集する必要があります。
Houdiniで生成したテクスチャを、ここでそれぞれ設定していきます。
最後に、メッシュに、このインスタンスを設定すれば完成です。
カスケードにて調整する
では次に、カスケード側で調整できるようにしていきます。
まず、VATの動きが、どこで動いているのか、という部分ですが
左の方にひっそりとTimeのノードがあり、ここで制御されています。
なので、ここをDynamicParameterに差し替えればできます。
ただし、時間の制御は、フレーム数ではなく、秒数なので注意が必要です。
ここで一つ問題が出てきます。
恐らくこの時点でそのまま読み込むと、変な形になると思います。
地面に落ちて割れるシミュレーションのはずが
カスケードで読み込むと、変な動きをするようになります。
原因は大きさで、InitialSizeを1に設定すると解決します。
ただ、大きさが完全固定では面倒なので、制御できるようにします。
おそらくですが、カスケード側で大きさを変えると、移動量の計算がおかしくなるようです。
マテリアル側で、ここの大きさを制御してる部分に、DynamicParameterを乗算します。
こうする事で、カスケード側で大きさを変えれる...ようにはなりますが。
InitiarSizeの大きさと同じにする必要が出てくるようです。
ちゃんと乱数で制御したい場合は、どうしてもBPでの制御が必要になってきそうではあります。
今回はここまでになります、VATに関してはまだまだ解っていない部分が多いので、判明次第色々情報纏めていこうかと思います。