はじめに
今回の記事では、Houdiniを使って作成した煙エフェクトをUnityのVisual Effect Graphで使用するまでの手順を紹介します。
以下はHoudini Apprenticeで作成した煙をUnity上で表示させたものになります。
Houdini Apprenticeを使って煙をレンダリングしているため、ウォーターマークがついています。
Houdiniの有料ライセンスを使うとウォーターマークが外れます。
環境
Windows 10
Unity 2018.3.11f1
Houdini Apprentice 17.0
Houdiniの作業
Houdiniを使って以下の煙のスプライトシートを作成します。
1. 煙のシミュレーションを追加
まずは基本となる煙のシミュレーションをHoudiniで作成します。
STEP1. NetworkビューでSphereを作成
STEP2. Dry Iceを追加
sphere1
を選択した状態でPyroFxシェルフのDry Ice
をクリックするとsphere1
にドライアイスのシミュレーションが適用されます。
2. 煙の出現を最初のフレームに限定
obj/sphere1
のUniform Scaleに $FF == 1
と入力します。
3. 煙の密度・温度を変更
obj/sphere1
の中にある、create_density
のパラメータ(density
, temperature
)を以下のように設定します。
density
を増やしたことで煙が濃くなり、temperature
を増やしたことで煙の落下が速くなりました。
3. シミュレーション領域のサイズを変更
Size
とCenter
はシミュレーション領域の大きさと中心座標を意味しており、
Closed Boundaries
はシミュレーション領域の面を閉じるかどうかを意味しています。
今回は-Y
にだけチェックを入れているのでY軸下向きの面だけ閉じています。
4. 煙の形状パラメータの変更
pyrosolver1
のShape
タブのパラメータを以下のように設定します。
Dissipation
を増やすことで煙が速く消えるようにし、Turbulence
を増やすことで煙にゆらぎを与えています。
今回、この真上から見た煙をスプライトシートとしてレンダリングしてみます。
5. カメラの作成
レンダリングを行うためにはカメラを配置する必要があります。
カメラのTransformタブは以下のように設定し、上空から真下を見下ろすようなカメラにします。
カメラのViewタブではResolutionを(128, 128)に設定します。
これにより、レンダリングで出力する画像データの解像度が128x128になります。
6. スプライトシートの出力。
Game Development Toolset
シェルフのT Sheets
をクリックします、
参考リンク : Game Development Toolset について
out直下にrop_texture_sheet1
が作成されるので、レンダリングを設定を弄ってRender
ボタンでスプライトシートをレンダリングします。
以下のようなスプライトシートが出力されます。(ファイル形式はexr)
補足:
Houdini Apprenticeでレンダリングすると、レンダリング結果にウォーターマークが追加されてしまいます。
ウォーターマークを外したい場合は有料のHoudiniライセンス(Houdini Indieなど)が必要になります。
7. レンダリング結果のexrを加工してpngとして出力する
img階層へ行くと、comp1
ノード(Image Network)があるので、これの中に入ります。
File
ノードにROP File Output
ノードを接続します。
Fileノードには、先ほどレンダリングしたexrファイルのパスを設定します。
ROP File Output
ノードにはpngファイルを出力したいパスを設定します。
Render
ボタンをクリックするとpngファイルが出力されます。
以上でスプライトシートの作成は完了となります。
次にUnity上へ移ります。
Unityでの作業
1. スプライトシートの取り込み
先程レンダリングした煙のスプライトシートをUnityに取り込みます。
2. Visual Effect Graph の作成
以下のようなVisual Effect Graphを作成します。
Spawnコンテキスト(パーティクルの生成)
Initializeコンテキスト(パーティクルの初期化)
Updateコンテキスト(毎フレーム処理)
Flipbook Player
ブロックを使ってスプライトアニメーションが再生されるようにしています。
Outputコンテキスト(パーティクルの描画)
Main Texture
の部分には先ほどのスプライトシートを設定します。
Uv Mode
= Flipbook
に設定することで、テクスチャがスプライトシートとして扱われるようにします。
\
完成
上記のVisualEffectGraphをシーンに配置すると、以下のような煙が広がるエフェクトが表示されます。
ウォーターマークが邪魔ですね。(実際にゲームで使いたい場合は有料のHoudiniライセンスを使いましょう)