LoginSignup
7
6

More than 1 year has passed since last update.

HoudiniのパーティクルシミュレーションをUnityのVFX Graphで再生する

Posted at

HoudiniのパーティクルシミュレーションをUnityのVFX Graphで再生したいと思います。

使用しているバージョンは次の通りです。

Houdini: 19.0.455
SideFXLabs: 19.0.455
Unity: 2021.2.9f1
Visual Effect Graph: 12.14

流れとしては次のように、Houdiniで作成したパーティクルシミュレーションの位置や色といった情報をテクスチャに書き出し、そのテクスチャをUnityで読み込んでVFX Graphで使用します。

  1. Houdiniでパーティクルシミュレーションの作成
  2. Houdiniでパーティクルシミュレーションのテクスチャ書き出し
  3. Unityでテクスチャの読み込み
  4. UnityでVFX Graphの作成

先に結果を載せると、上がHoudiniでのパーティクルシミュレーションで、下がそれをUnityのVFX Graphで再生したものになります。

HoudiniFlipbook.gif
UnityRecord.gif

1. Houdiniでパーティクルシミュレーションの作成

まず、HoudiniでPOPを使ってパーティクルシミュレーションを作成します。OUT_Particlesがテクスチャ書き出しの対象になりますが、今回はパーティクル位置にメッシュを配置したいのでcopytopoints1でボックスを配置しています。
HoudiniSop.PNG
dotnet1の中は次のようになっています。popwind1でノイズを追加して、popwrangle1@nageをもとに@pscaleを設定しています。
HoudiniDop.PNG

2. Houdiniでパーティクルシミュレーションのテクスチャ書き出し

作成したパーティクルシミュレーションをLabs Vertex Animation TextureROPを利用してテクスチャに書き出します。
Labs Vertex Animation TextureROPのパラメータを次のように設定します。

  • Mode / Target Engine: Particle Sprites(Sprite) / Unity
  • Input Geometry: (対象のジオメトリ)
  • Settings:
    • Export Custom Attributes:
      • In Color: v
  • Export:
    • Include: Decide Individually
    • Geometry: オフ
    • Unity Material: オフ

HoudiniVat1.PNG
HoudiniVat2.PNG
今回は、Houdini側で用意しているVertex Animation Texture用のジオメトリやマテリアルは使用しないのでエクスポートをオフにします。また、パーティクルの色は不要なので、その代わりにカラー用のテクスチャにはvアトリビュートを書き込んでいます。これはVFX Graph側でパーティクルの方向を表すために使用します。

設定が完了したら、Render Allを押してテクスチャを書き出します。

書き出したテクスチャには、それぞれ次の情報が格納されます。

  • /tex/{OS}_pos.exr: RGBにP、Alphaにpscale
  • /tex/{OS}_col.exr: RGBにv

以上でHoudini側の作業は終わりです。

3. Unityでテクスチャの読み込み

Houdiniで作成したテクスチャをUnityに読み込み、Import設定を次のように変更してApplyします。

  • sRGB: オフ
  • Advanced:
    • Non-Power of 2: None
    • Generate Mip Maps: オフ
    • Filter Mode: Point(no filter)
  • Default:
    • Compression: None

UnityTextureImportSetting.PNG

4. UnityでVFX Graphの作成

VFX Graphで次のようにネットワークを組みます。Experimentalなノードを使用しているのでPreferences > Visual Effects > Experimental Operators/Blocksをオンにする必要があります。
UnityVfxGraph.PNG

プロパティにはそれぞれ以下の値を設定します。

  • Position Texture: Houdiniから書き出した/tex/{OS}_pos.exr
  • Velocity Texture: Houdiniから書き出した/tex/{OS}_col.exr
  • Frame Count: シミュレーションのフレーム数
  • FPS: シミュレーションのフレームレート

このVFX Graphをシーンに配置することでHoudiniのパーティクルシミュレーションをUnityで再生することができます。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6