Unity公式のHoudini HDAを使って、Unity用のPointCache(.pcache)やVectorField(.vf)を出力する
Unity公式のHoudini HDAを使って、Unity用のVectorFieldを出力する
Unity-TechnologiesのGithub Organizationに先週ぐらいからVFXToolBoxというものが公開されており、この中にVFXGraphなどで使えるPointCache(.pcache)や、Unity公式のVectorFieldファイル形式(.vf)をHoudiniから出力するためのHDAが含まれています。
今回はそのお話です。
VectorFIeld (.vf)
Unity向けのVectorField(.vf)ですが、必ずこの形式でないと駄目?と言うとそうでもなくて、UE4などで利用できる.fgaなどから3D TextureとしてインポートしてもVectorFieldとして使えます。
.fgaからUnityの3D Textureを焼く方法は、以下の記事で以前に紹介したとおりです。今のところは、好きな方を採用するといいと思います。
PointCache (.pcache)
PointCacheに関しては、エディター上からも作成することができます。 難しいことはできませんが、こっちのほうが簡単に作れます。
(UnityEditor) Window > Visual Effects > Utilities > Point Cache Bake Tool
検証環境
Houdini Indie 17.0.352
HDAのインストール
VFXToolBoxをgit cloneします。 gitがわからない方は、zipで落としてきてもいいと思います。 github.com
Houdiniの新規作成から、空のプロジェクトを作成します。
作成したら、File > Import > Houdini Digital Asset
を開きます。
git cloneしてきたVFXToolBoxの中の、VFXToolbox\DCC-Tools\Houdini
にUnity_VFX_Tools.hda
というHDAがあるので、これをインポートします。
pcache
とvolume_exporter
というノードが新たに使えるようになります。
インストールしたら、適当な位置にプロジェクトを保存しておきます。
Point Cacheを出力する
Test Geometry Rubbertoy
先生にお越しいただきます。
Scatter
ノードにつないで点に分解したあと、Point Cache
ノードにつなげます。
今回は単純に各pointの座標のみエクスポートすることにするので、Point Cache
ノードのExport Attributes
をP
のみにしています。
Point Cache
では他にも速度や色を出力して使うことができるようになっています。
下図は、UnityのVFXGraphで読み込んだときのノードの状態です。
Point Cache
ノードのGeneral Settings > Condition
の値を1以上にすると、ファイル(.pcache)が出力されます。
.pcacheファイルは、そのままUnityへインポートすることができます。
Volume ExporterでUnity向けVectorField(.vf)を出力する
手前味噌ですが、以前に作ったゴブレット型のVolumeを利用してみようと思います。 サンプルもつけているので、試す場合はぜひ参考にしてみてください。
GameDev ROP VectorField
の代わりに、今回インストールしたVolume Exporter
をつなぎます。
Output file name
をVF
に設定して、Volume Name
にエクスポートしたいVolumeの名前を入力します。
上記のデモでは、velocity
という名前になっています。 Volume
ノードで設定しています。
Vectorとして値を格納しているため、Volume Type
はScaler
からVector
へ変更しています。
Point Cache
ノード同様、General Settings > Condition
の値を1以上にすると、ファイル(.vf)が出力されます。
.vfファイルは、そのままUnityへインポートすることができます。
作成した(.vf)は、VFXGraphやUnity 2018.3から使える、ShurikenのExternal Force Moduleなどから利用することができます。
Export形式に(.tga)がありますが、これはちょっと使い方がわからなかったので、調べてそのうち追記しようと思います。 以上、Point CacheとVectorFieldの作成手順でした。