On this page |
概要 ¶
Pyro Solver は、炎、煙、爆発などの高温膨張ガス関連のエフェクトを扱います。 Pyro FX シェルフタブには、色々なエフェクトを作成するツールが含まれています。
エフェクトは、 ソースジオメトリ から生成されます。例えば、キャラクタのスキンから炎が生成されます。これは、煙を生成したい時にソース形状に問題がなければ、球を作成するのと同じくらい簡単です。
How to ¶
To... | Do this |
---|---|
煙またはPyroエフェクトを作成する |
|
煙/炎コンテナの最大サイズを増やす |
デフォルトでは、最大サイズは自動的にPyro/Smokeオブジェクトを反映したボックスサイズに調整されています。ダイナミクスネットワークのオブジェクトを選択して、 Properties タブをクリックして Size パラメータを設定します。 |
高速に膨れ上がるシミュレーションのサイズを調整する |
|
Tip
3つのネットワーク間を迅速に行き来したいならば、ネットワーク間を行き来する方法を参照してください。Pyroオブジェクトとソルバのパラメータエディタペインタブをピン留めすると迅速にアクセスすることができます。
ソース、オブジェクト、ソルバの色々なパラメータを使って色々な煙や炎を表現するには、Pyroの外観設定を参照してください。
ポイントベースのソース ¶
Houdini17から、Pyroのソースは、色々な特性(温度、燃料)を意味した ボリューム ベースから、物理特性を意味したアトリビュート付きの ポイント ベースに変更されました。
-
例えばパーティクルシミュレーションを実行してから、その結果を煙のソースとして使用するといったように、ほとんどのユーザがPyroシミュレーションのソースを指定する時には、この方法が適しています。
-
これによって、ポイントとPointアトリビュートの編集に特化したたくさんのSOPを使って、それらの特性を制御しやすくなります。
ポイントはシミュレーションにエクスポートする前にボリュームに変換されるものの、この新しいワークフローは、ボリューム自体を編集するのではなくて、ポイントとPointアトリビュートを編集します。
これらのPointアトリビュート名は、ボリュームフィールドと同じ名前です: density
, temperature
, fuel
, divergence
, burn
, heat
, velocity
, collision
, source
, sink
。
Pyroノードネットワーク ¶
Pyroシェルフツールを使用すると、 ソースオブジェクト の中にジオメトリ(SOP)ノードを追加してから、シミュレーション用に DOPネットワーク をセットアップして、そのシミュレーション結果を取り込むための 出力オブジェクト を作成し、それをレンダリング可能なオブジェクトに設定します。
|
ソースから生成した炎/煙の特性を変更できるように、ソースジオメトリをアトリビュート( このノードには、ソースジオメトリ上/内部にポイントをばら撒く方法、作成するアトリビュート、既存アトリビュートの扱い方に関するコントロールが備わっています。 |
|
|
ポイント上の |
|
|
DOPsにインポートするために、ポイントとPointアトリビュートからボリュームを生成します。 |
|
特に煙/炎のオブジェクトの3D解像度、サイズ変更可能なコンテナ(デフォルト)の最大サイズ、コンテナの各側面の開閉などを制御します。 他にも、オブジェクトの内容を可視化するための拡張コントロールがあります。 (DOPネットワークでは、この“オブジェクト”は、 エフェクトでシミュレーションするボリューム になっていて、ソースジオメトリではありません。ソースジオメトリは、Volume Sourceノードによって、色々なブランチのネットワークでインポートされています。) |
|
|
このノードは、ソースネットワークによって生成されたSOPボリュームを一連のボリュームフィールドとしてインポートします。これは、異なる名前を使ってきた歴史的な理由により、アトリビュートとフィールドの名前を変更する役割をしています(例えば、 一般的には、SOPアトリビュートを該当するDOPフィールドにインポートしますが、例えば、同じアトリビュートを2つの異なるフィールドにコピーしたい時には、その関係性を編集したいことがあります。 |
|
|
Houdiniには、グリッドベースの煙/炎のシミュレーション用に2つのソルバが用意されています。 Smoke Solverは基本的な流体シミュレーションエンジンを実装しています。 このソルバは、基本的な煙エフェクトをシミュレーションしますが、炎をシミュレーションしません。 Pyro Solverは、Smoke Solverを元に構築し、炎などのコントロールを追加しています。 Pyro FX シェルフタブのツールで作成されたハイレベルのエフェクトは、一般的にPyro Solverを使用しています。 このソルバには、ソルバが生成したShreddingなどのフォースを可視化するための拡張コントロールが備わっています。 |
|
|
火炎ではなく煙を必要とするエフェクト用のソルバ。 |
|
1つDOP Importノードはレンダリング用にすべてのフィールドをインポートし、もう1つのDOP Importノードは、ビューポート表示用に高速表示関係のフィールドのみをインポートします。 |
Pyro Solverの中身 ¶
-
Volume Sourceノードは、
temperature
とfuel
をシミュレーションに追加します。 -
fuel
が存在し、temperature
が特定の温度を超えた箇所に、burn
が生成されます。 -
burn
はheat
(可視の火炎)を生成します。 -
burn
は、燃焼後に非効率的に、ある程度のfuel
を残します。 -
divergence
は、ガスの高温化によって生じた爆発を表現します。 -
Dissipation と Cooling は、時間の経過と共に煙の
density
とtemperature
をそれぞれ下げます。 -
velocity
= 開始velocity
とtemperature
を足して、 Buoyancy で乗算した値。 -
移流は、
temperature
、heat
、density
、fuel
(ソルバの Advect Fuel を有効にした場合)に影響を与えます。 -
Houdiniでは、
temperature
は浮力、velocity
はモーメンタム(推進力)を意味します。
メモ:
-
“Multifield”ビジュアライザは、
heat
(火炎)とdensity
(煙)の両方を表示します。 -
Temperature(温度)は、(Velocityと共に)シミュレーションの実行で最も重要なフィールドの1つで、シミュレーションの挙動とルックを大きく拡張するコントロールです。これは、あまりレンダリングや可視化にはあまり使用しないものの、内部的に多くのフォースや形状操作を駆動させています(例えば、 Buoyancy 、 Shredding 、 Dissipation )。
-
炎のシミュレーションを作成する時、そのコントロールは、燃焼モデルに拡張されます。 Temperature Diffusion と Cooling Rate が直接
temperature
フィールドに作用し、シミュレーションの速度の減衰とシミュレーションの細部に対して影響の大きいコントロールが備わっています。
CollisionフィールドとExpansionフィールド ¶
Smoke/Pyro Solversは、Collisionフィールド(煙/炎が避ける領域)とExpansionフィールド(外側方向のVelocityをシミュレーションに追加する領域)を追加することができます。
Populate Containersシェルフタブのツールは、CollisionフィールドやExpansionフィールドを作成することができます。
これらのツールは、Fuel(燃料)ソースを使用するPyroツールと同じソースセットアップを作成しますが、fuel
アトリビュートを作成するのではなくて、collision
またはdivergence
のアトリビュートを作成します。
Note
Houdini14以降、Pyroシミュレーションの衝突オブジェクトの推奨されるセットアップ方法は、 Collisions タブにあるStatic ObjectまたはDeforming Objectシェルフツールを使用することです。 とはいえ、Collide with Objectsシェルフツールは、衝突Velocityに対して詳細な制御をしたい場合に今でも使用することができます。
To... | Do this |
---|---|
オブジェクトをCollisionフィールドに変換します |
|
膨張フィールドは、外側方向のVelocityをそのフィールド内のシミュレーションに追加します。そのVelocityは外側方向に力が加わり続けながら伝搬していきます。これによって簡単にシミュレーションを膨張させることができます。
爆発を表現しているのであれば、このフィールドを使うのが望ましいですが、もっと細かな調整をしたいなら、次のこともできます:
-
Velocityが永遠に続かないようにソルバの後にDrag Forceノードを追加します。
-
膨張ソースを縮小します(Volume Source DOP >
divergence
ソースの Scale パラメータ)。または、そのオン・オフをアニメーションします。
また、DOPフォースを使って、煙/炎のまわりに力を加えることもできます。とはいえ、フォースの効果はソルバのproject non-divergenceステップによって、もみ消されてしまいます。なぜなら、膨張フィールドをソルバにダイレクトインプットとしてセットアップしても、ソルバは膨張フィールドを投射収束計算から排除するからです。
DOPジオメトリのポイントを移流するPyroの使い方 ¶
DOPジオメトリのポイントを移流するにはPyroシミュレーションのフィールドを使います。
-
編集可能な ジオメトリデータをSmokeコンテナに追加します。
編集可能なジオメトリを作成するには、SOP Geometry DOPを使ってジオメトリをインポートして、それをCopy Geometry DOPを使ってコピーします。それから、Apply Data DOPを使って、ジオメトリをSmoke Object DOPに接続します。コピーされるジオメトリのデータ名を
Geometry
に設定します。 -
Gas AdvectをPyroソルバのAdvectionインプット(3番目の緑の入力)に接続します。Gas Advectの Geometry パラメータを編集可能なジオメトリのデータ名(
Geometry
)に設定します。 Velocity Field をvel
に、 Collision Field をcollision
に設定します。
温度拡散と粘度によるブラー ¶
Temperature Diffusion(温度拡散)はTemperatureフィールドをぼかします。その値を増やすと高低の温度領域間の境界がぼやけ、そして、ソースからシステムへ温度が拡散します。
Viscosity(粘度)はVelocityフィールドをぼかします。その値を増やすと、破壊やVorticle(小さい風車型の渦)のようにVelocityのバリエーションがぼやけます。見た目を変更したいなら、Velocityノイズだけでなく、粘度を加えることができます。
これらはフィールドをぼかすことができます。拡散/粘度の値を大きくすれば、システム内の温度/速度は小さくなります。なぜなら、高い温度/速度の領域と、その周辺の非活動空間の領域を一緒にして平均化しているからです。
Pyroエフェクトのレンダリング ¶
-
レンダリング前にコンテナの分割サイズを小さくすれば、解像度が上がります。
-
マイクロポリゴンエンジン(Mantraレンダーノード > Propertiesタブ > Renderタブ > Rendering Engine)を使って、Pyroエフェクトをレンダリングします。
-
ライトのShadowパラメータをセットアップ(Lightオブジェクト > Shadowタブ)して、 Shadow Type を“Depth Map Shadows”、 Pixel Samples を2×2、 Shadow Quality を2に設定します。
-
レンダー結果を細かくするには、レンダーの Volume Quality (Mantraレンダーノード > Propertiesタブ > Samplingタブ)の値を小さくします。これによって違いが出ないのでれば、Pyroボリュームのコンテナが低解像度なのが原因です。