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を焼く方法は、以下の記事で以前に紹介したとおりです。今のところは、好きな方を採用するといいと思います。

forty.hatenadiary.jp

PointCache (.pcache)

PointCacheに関しては、エディター上からも作成することができます。 難しいことはできませんが、こっちのほうが簡単に作れます。

(UnityEditor) Window > Visual Effects > Utilities > Point Cache Bake Tool

f:id:fortysan:20181113040327p:plain

検証環境

Houdini Indie 17.0.352

HDAのインストール

VFXToolBoxをgit cloneします。 gitがわからない方は、zipで落としてきてもいいと思います。 github.com

Houdiniの新規作成から、空のプロジェクトを作成します。

作成したら、File > Import > Houdini Digital Assetを開きます。

f:id:fortysan:20181113025902p:plain

git cloneしてきたVFXToolBoxの中の、VFXToolbox\DCC-Tools\HoudiniUnity_VFX_Tools.hdaというHDAがあるので、これをインポートします。

f:id:fortysan:20181113025412p:plain

pcachevolume_exporterというノードが新たに使えるようになります。 インストールしたら、適当な位置にプロジェクトを保存しておきます。

Point Cacheを出力する

Test Geometry Rubbertoy 先生にお越しいただきます。

f:id:fortysan:20181113030525p:plain

Scatterノードにつないで点に分解したあと、Point Cacheノードにつなげます。

f:id:fortysan:20181113030744p:plain

今回は単純に各pointの座標のみエクスポートすることにするので、Point CacheノードのExport AttributesPのみにしています。 Point Cacheでは他にも速度や色を出力して使うことができるようになっています。 下図は、UnityのVFXGraphで読み込んだときのノードの状態です。

f:id:fortysan:20181113031318p:plain

Point CacheノードのGeneral Settings > Conditionの値を1以上にすると、ファイル(.pcache)が出力されます。 .pcacheファイルは、そのままUnityへインポートすることができます。

f:id:fortysan:20181113031436p:plain

Volume ExporterでUnity向けVectorField(.vf)を出力する

手前味噌ですが、以前に作ったゴブレット型のVolumeを利用してみようと思います。 サンプルもつけているので、試す場合はぜひ参考にしてみてください。

forty.hatenadiary.jp

GameDev ROP VectorFieldの代わりに、今回インストールしたVolume Exporterをつなぎます。

f:id:fortysan:20181113035304p:plain

Output file nameVFに設定して、Volume NameにエクスポートしたいVolumeの名前を入力します。 上記のデモでは、velocityという名前になっています。 Volumeノードで設定しています。 Vectorとして値を格納しているため、Volume TypeScalerからVectorへ変更しています。

Point Cacheノード同様、General Settings > Conditionの値を1以上にすると、ファイル(.vf)が出力されます。 .vfファイルは、そのままUnityへインポートすることができます。

作成した(.vf)は、VFXGraphやUnity 2018.3から使える、ShurikenのExternal Force Moduleなどから利用することができます。

f:id:fortysan:20181113035600p:plain

Export形式に(.tga)がありますが、これはちょっと使い方がわからなかったので、調べてそのうち追記しようと思います。 以上、Point CacheとVectorFieldの作成手順でした。