moyasiエフェクト館

主にエフェクト関係の記事を上げていこうかと思います。


エフェクトに関係する記事上げてきます
エフェクト関係の記事の内容は緩く募集中
自分がわかる範囲であれば書いていこうかなと。

【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する必要があります。

f:id:tktknkyo:20190502181233p:plain

シェルフの部分の、UpdateでDL出来るはずです。
ただ、具体的な手順が若干解っていない所もあります、ご了承下さい

また、自身はsteamのIndie版です

ここが違うと、DLの仕方も変わってくるかもしれません。

 

まずはシミュレーションを作ってみる

とりあえず、定番のシミュレーションを作ります。

 

f:id:tktknkyo:20190502181708p:plain

とりあえず、でBoxを作ります。

上空から落とすので、Centerをとりあえず2程度に設定しておきましょう。

 

 

f:id:tktknkyo:20190502181916p:plain

その後の設定はこのようにします。

ノードの設定そのものは初期設定で問題ありません。

最後はNUllノードを作り、解りやすくする為に、名前を「OUT」にしています。

 

 

f:id:tktknkyo:20190502182215p:plain

その後、OBJまで戻り

ここのシェルフにてシミュレーションを作ります。

 

f:id:tktknkyo:20190502182314p:plain

シミュレーションを作る際に

この様なメッセージが出てきます。

 

左側をクリックしておきましょう。

VATでもっていくには、シミュレーションをパック化しておく必要があります。

ほかのシェルフなどで作る場合、UE4にもって行ったときに変な動きになることがあります。

 

f:id:tktknkyo:20190502182452p:plain

OBJネットワーク上に、DOPのノードが作られるので、中に入ります。

 

今の段階で再生しても、ただ重力で落ちるだけとなっています。

 

f:id:tktknkyo:20190502182641p:plain

地面が作られていないので、地面を作ります。

 

これで、地面に落ちて割れるシミュレーションが作られました。

 

 

f:id:tktknkyo:20190502183021p:plain

次に、VATに変換してUE4に組み込みます。

 

VATの作成

 

f:id:tktknkyo:20190502183259p:plain

まずは、破壊したBOXを作ったノードに入ります

OUTの下が、シェルフでシミュレーションを作った時に自動で作られたノードです。

このままでは、若干解りにくいので

f:id:tktknkyo:20190502183408p:plain

最後にNULLノードを接続しておきます。

名前はOUT_Simとしました。

 

f:id:tktknkyo:20190502183536p:plain

 

OUTネットワークに移動し、VATを作るノードを作成します。

 

f:id:tktknkyo:20190502183726p:plain

 

今回はRBDのシミュレーションを作ったので
Rigid、を選択します。

 

f:id:tktknkyo:20190502183857p:plain

Export Nodeは、変換するノードを選択します。

シミュレーション自体はDOPで作っていますが。

DOPで作ったシミュレーションは、SOPで読み込んでいます

なので、SOPの方のパスを選択しておきます。

 

最後に作ったOUT_Simを設定しておきましょう。

 

f:id:tktknkyo:20190502184054p:plain

 

設定できたら、Renderのボタンで出力します。

プロジェクトのExportというフォルダに出力されたデータが出てくると思います。

 

UE4への組込み

 

f:id:tktknkyo:20190502184258p:plain

RBD用の場合は、メッシュと最後にPOSとあるテクスチャとROTとあるテクスチャが書き出されます。

ここは書き出す種類によって変わってきます。

まずは、この書き出した三つのデータをUE4にインポートします。

 

次にマテリアルが必要になるので、新規でマテリアルを作ります。

 

f:id:tktknkyo:20190502184644p:plain

 

HoudiniのVATを作ったノードにこの様な部分があります。

+のボタンを押すと開くので、この中身をコピー&ペーストでUE4に持っていきます。

コードをコピーしたら、UE4のマテリアル上で貼り付けをすると、ノードが作られます。

 

f:id:tktknkyo:20190502185049p:plain

詳細設定の、ここの矢印をクリックで展開して

 

f:id:tktknkyo:20190502185228p:plain

ここの設定を3にしておきます。

 

f:id:tktknkyo:20190502185324p:plainHoudiniから持ってきたノード群には

コメントで何処に接続すればいいのか?が書いてあるので

それに従い設定していきます。

 

マテリアルは完成ですが

VAtで動かすには、インスタンスを作っておきます。

作ったマテリアルからインスタンスを作成します。

 

f:id:tktknkyo:20190502185637p:plain

インスタンスのこの5つのパラメータは編集する必要があるので

チェックを入れて編集します。

 

ここに入れる数値は

f:id:tktknkyo:20190502185747p:plain

Houdini側の、この部分と同じ数値を入れる必要があります。

 

f:id:tktknkyo:20190502185918p:plain

 

インスタンスにある、ここの部分も編集する必要があります。

Houdiniで生成したテクスチャを、ここでそれぞれ設定していきます。

 

最後に、メッシュに、このインスタンスを設定すれば完成です。

 

カスケードにて調整する

 

では次に、カスケード側で調整できるようにしていきます。

 

まず、VATの動きが、どこで動いているのか、という部分ですが

f:id:tktknkyo:20190502190346p:plain

左の方にひっそりとTimeのノードがあり、ここで制御されています。

 

f:id:tktknkyo:20190502190510p:plain

なので、ここをDynamicParameterに差し替えればできます。

 

ただし、時間の制御は、フレーム数ではなく、秒数なので注意が必要です。

 

ここで一つ問題が出てきます。

恐らくこの時点でそのまま読み込むと、変な形になると思います。

 

f:id:tktknkyo:20190502192220p:plain

 

地面に落ちて割れるシミュレーションのはずが

カスケードで読み込むと、変な動きをするようになります。

 

原因は大きさで、InitialSizeを1に設定すると解決します。

 

ただ、大きさが完全固定では面倒なので、制御できるようにします。

 

おそらくですが、カスケード側で大きさを変えると、移動量の計算がおかしくなるようです。

 

f:id:tktknkyo:20190502192833p:plain

 

マテリアル側で、ここの大きさを制御してる部分に、DynamicParameterを乗算します。

こうする事で、カスケード側で大きさを変えれる...ようにはなりますが。

InitiarSizeの大きさと同じにする必要が出てくるようです。

 

ちゃんと乱数で制御したい場合は、どうしてもBPでの制御が必要になってきそうではあります。

 

今回はここまでになります、VATに関してはまだまだ解っていない部分が多いので、判明次第色々情報纏めていこうかと思います。