株式会社デジタル・フロンティア-Digital Frontier

Header

Main

Houdini Pyro Solver

2014/4/14

Tag: ,

お久しぶりです。TDの吉田[タック]です。
最近Techtalkが割と難しくなる傾向があり、アルゴリズムの理解が必要になって来ています。
その辺をリセットし、もう少し誰でも出来るようなCGを説明していきたいと思います。
HoudiniのPyro Solverを軽く説明し、炎を作っていきます。
Houdiniは難しいのでは?
まあ~、そういうところもなくわないですが、下記の内容はなるべくシンプルにします。


Pyro Solver Basics

Pyro Solverとは?
Pyro Solverは以前話していたSmoke SolverとCombustion Model(燃焼モデル)を足した物になります。
Smoke SolverではDensity(Smoke)とTemperature(温度)があり、TemperatureによってSmokeが上がって行きます。
Pyro SolverではさらにFuel、Heat,とDivergenceがあります。
Fuelは燃料、Heatは炎、Divergenceは炎でTemperatureがさらに熱くなり、圧力によって広がっていく動きになります。

先にSphereを作成し、

Sphereを選択したままPyroFXタブのFlamesを押します。

再生すると炎が燃えているのが分かります。

AutoDOP Networkの中では下記のようなNodeが作成されます。
Pyro Solverがその中心になります。

Pyro Solverに刺さってるNodeは炎や煙を作成するための素材であり、Pyro Solverで計算を行います。

Sourceがシミュレーションに追加され、Pre-Solve(事前計算)を行います。
次にVelocityを更新し、それによってAdvectionがされます。
Velocity Updateの入力に情報を与えればvelocity fieldを修正できます。
Advectionの入力では、選んだ空間のVoxelデータも修正の設定が可能です。

どのようなInputが可能かを見るためにPyro Nodeを選択し、

Container toolsのタブのSeed Vorticlesボタンを押してください。

下記のようなNetworkが出来上がります。

簡単にと言っていたのに何か段々複雑になっていきました。w


Sourceを追加 「Fuel(燃料)やTemperature」

Sourceを作るのには様々な方法があります。今回2種類を説明します。

1. Object

2. Particle

Fuelが段々燃えていくシーンを作って見ましょう。
とりあえず、新しいシーンにまたSphereを作成し、

Sphereを選択したままPyroFXタブのFlamesを押します。

次にTorusとCurveを作ります。
Curveの場合、ボタンを押した後、Viewで書いて最後にEnterを押します。

CurveのNodeに入り、Resampleします。

Torusを選択し、Populate ContainersタブのSource from Surfaceを押して、Fluid Boxを選択してEnter押します。

Curveも同じく選択し、Populate ContainersタブのSource from Pointsを押して、Fluid Boxを選択してEnter押します。

GeometryからScatterしたPointやParticleも変換できます。

Fluid Boxは新しく出来たSourceを囲めていないのでScaleします。

AutoDOPの中のPyro Nodeで修正を行います。

AutoDOP Networkを確認するとSourceが追加されたのが見えます。

curveのVolumeが薄いです。もともとのPointの数やVolume的に広がっていないので、Scaleかけた方がいいです。
もしきれいにつながっているVolumeがほしい場合、Objectを作成してIsoOffsetやScatterを使った方がいいです。

ScaleするにはCurve Geometry Objectの中のcreate_fluel_volume Nodeを修正します。

今の設定ではFuelが全部一度に燃えます。

Temperatureを調整すれば、ある場所から炎を始めることが出来ます。

AutoDOPのSource Volume Nodeを好きな2つを選択し、

燃料に温度を与えないと燃えないので、Scale Temperatureをゼロに設定する。
さらにSource VolumeのVolume OperationタブのTemperatureをNoneに設定します。

ゼロに設定していない物から火が広がります。
hipnc file
[免責事項]
このファイルの使用に関しては自己責任になります。
当社は何ら一切の責任を負いません。

[Terms of Use]
Use of this hip file is a self-responsibility.
Our company assumes no responsibility.

ここからは段々難しくなるのでいったん終わりにします。
これ以外なにあるのか?どのようなことが出来るのか?
たとえば、
Paintしたところを燃やしたい、限られた範囲のTurbulence、燃える広がる速度をFuel/Temperatureのアニメーションでコントロール、2つのPyro Solverを使ったTemperatureの移動、etc….
色々出来て楽しいですね。次にでもどれかを説明します。
では!

Pocket

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*