Houdini 19.0 Pyro

Pyroの外観設定

On this page

概要

Pyroエフェクトの速度や形状は、単一パラメータではなくて、たくさんのパラメータとアトリビュートの組み合わせで制御されています。 このページでは、Pyroツールを使って異なるルックを表現するための役立つ情報とテクニックを載せています。

始める前に、以下のページを読んでください:

ソース

  • より面白い炎/煙を表現するためには、より面白いソースジオメトリを用意します。例えば、チューブを使えば、チューブの垂直面で炎/煙が積もるので球よりも面白い結果が得られます。

  • ソースの“パルス化”を試してください。ソースアトリビュート/フィールドを時間軸でスケールを増減させてください。

  • ソースアトリビュートの ノイズ 量も時間軸で“パルス化”してみてください。ノイズの Amplitude を上げてみると、そのノイズのブロブが鮮明になります。

コンテナ解像度

流体コンテナの解像度は、DOPネットワーク内のSmoke Objectノードの Division Scale パラメータで制御します。より低解像度のシミュレーションをするなら、Division Scaleの値を大きく、より高解像度のシミュレーションをするなら小さくします。HoudiniのPyro Solverは、解像度に関わらず、一般的には同じ性質で煙/炎を生成します。つまり高解像度に移行する前に低解像度で素早く見た目を検証することができます。もちろん、分割サイズより小さい破壊と乱気流のようなディテールは見えないです。

Pyroソルバのメインコントロール

  • 炎の全体の高さを制御するには、 Flame Height パラメータ(Pyro Solver > Combustionタブ > Flamesタブ)を使います。

  • Buoyancy Lift パラメータ(Pyro Solver > Simulationタブ)は、ステップ毎にTemperatureフィールドを上昇させます。この値を増減するとTemperatureフィールドが上昇する速度を変更することができます。

  • シミュレーションの内の燃料の量を増減すると、炎のサイズが変わります。source_fuelノードで、 Scale Source Volume を使ってソースボリュームからシステムに取り込まれる燃料の量をスケールすることができます。

  • 温度の消散を意味する Temperature Dissipation (Pyro Solver > Shapeタブ > Dissipationタブ)を下げることで炎がより熱くなります。デフォルトでは、炎が少し高く上昇します。

  • Time Scale (Pyro Solver > Simulationタブ)を使えば、全体的にエフェクトをより遅く、または、より速くすることができます(タイムステップ毎に移流の大きさを変更します)。

外部の力

煙オブジェクトの物理特性に加えて、Pyro Solverは、Fan ForceDrag Forceなどの標準のDOPフォースを使ってシミュレーションを制御することができます。

Pyro Solverの Advanced ▸ External Forces タブのパラメータは、外部の力がどのようにシミュレーションに影響を与えるのか制御します。デフォルトでは、 Pyro Solverはdensityフィールドの値によって全てのフォースをスケールしますScaled Forces は、densityフィールドの値によって乗算されるフォースのリストです。デフォルトでは、*です。これは、すべてのフォースがdensityによってスケールされることを意味します。 Absolute Forces は、densityによるスケールをしなくてもシミュレーションに適用されるフォースのリストです。

Note

外部の力がシミュレーションに何も影響していないように見えるなら、 Scaled Forces パラメータが*densityフィールドが空っぽであるのが原因です。そのため、フォースには0が乗算されてしまいます。すべてのフォースをすべてのフィールドに適用するには、 Scaled Forces をクリアして、 Absolute Forces*に設定してください。

シェルフツールを使ってPyroエフェクトを作成すると、通常は、作成されるエフェクトの Scaled Forces フィールドには、* ^Gravityが設定されます。つまり、重力がシミュレーションに適用されません。技術的には現実的でありませんが、通常は、燃焼と煙のエフェクトは重力を使わないでシミュレーションするほうが簡単です。

ガス爆発

  • Advect Fuel(Pyro Solver > Combustionタブ > Fuelタブ)をオンにします。 Fuel Speed は、どれくらいのVelocityフィールドが燃料を動かすのかを決めるスケール係数です。この値を大きくすると、より高速で大きい爆発が得られます。

  • Volume Source DOPfuel値のスケールを調整します。キーフレームを使ってソースをパルス化したり、大量の燃料を初めからシステムに吸い上げて燃料を切らします。

特定の領域のみにノイズを追加

Gas TurbulenceのようなVelocityフィールドを修正するDOPノードをPyro Solverノードの4番目の入力(“Advection”)に接続します。フィールドを修正するノードのほとんどに、マスクフィールドでエフェクトをスケールする方法があります。

  1. 影響を与えたい領域の形状にジオメトリオブジェクトを作成します。

  2. Model シェルフタブの Volumeツールを使って、オブジェクトをフォグボリュームオブジェクトに変換します。

  3. DOP Networkで、Pyroオブジェクトの後にSOP Scalar Fieldノードを追加します。

    • Use SOP Dimensions をオンにします。

    • SOP Path をフォグボリュームオブジェクトのパス(例えば、/obj/mask_object)に設定します。 Use Object Transform がオンになっていることを確認します。

    • Data Name を、このフィールドの目的を意味する何かに設定します(例えば、NoiseMask)。

    これは、指定した名前でPyroオブジェクトにフォグボリュームをフィールドデータとして接続します。

  4. Gas Turbulenceノードを作成して、それをPyro Solverの4番目の入力(“Advection”)に接続します。

    • Bindings タブの Density Field をマスクデータの名前に設定します(例えば、NoiseMask)。ノードのエフェクトは、このフィールドの値で乗算されます。

    • Turbulence Settings タブのコントロールを使って、追加された乱気流の量を制御します。

形を定義するのに役立つ情報

  • 面白いエフェクトの基本は、面白いソースを使うことです(上記参照)。

  • すべてのフォースDOPはPyroシミュレーションで動作します。例えば、Fan Forceを使えば煙を舞い上がらせることができます。

  • Pyro SolverShape タブのパラメータを使って、エフェクトがどのように展開されるのか拡張することができます。これらのパラメータを使った詳細は、Shapeタブを参照してください。

  • Shredding は、キャンプファイヤーのような高周波でメラメラとゆらめく表現をする時に使います。Shreddingコントロール(Pyro Solver > Shapeタブ > Shreddingタブ)を使って細断する度合いを制御します。Shreddingをオフにすれば極端なほどに滑らかになり、層流の炎になります。あえていうなら、ブタンガスのタイマツの炎に近いです。

  • Turbulence (Pyro Solver > Shapeタブ > Turbulenceタブ)は、大きく旋回した動きを発生します。キャラクタの高速移動のシミュレーションをするのであれば、小さいスケールの高周波を生成するShreddingを使います。

  • Temperature Diffusion パラメータ(Pyro Solver > Simulationタブ)は温度フィールドをぼかします。この値を下げると、温度フィールドはより鮮明になり、Shreddingのようなエフェクトの鮮明度/周波数を上げることができます。値を上げれば、より滑らかな炎/煙にすることができます。

  • Viscosity パラメータ(Pyro Solver > Simulationタブ)はVelocityフィールドをぼかします。この値を上げると、炎/煙がより滑らかに、より層流の流れになります。また、炎/煙がわずかに外側に広がる傾向があります(デフォルの上方向の移動でぼかすことで)。

  • Sharpeness パラメータ(Pyro Solver > Shapeタブ > Sharpnessタブ)をShreddingと併せて使うと、とても高い周波数のノイズがごちゃまぜになりながら生成される傾向があります。とはいえ、何らかの理由でShreddingを下げていれば、Sharpenessだけの状態に近づけることができます。

面白い外観を作るのに役立つ情報

  • より高速な移動エフェクトをするには、温度を上げることでシステム内のエネルギー量を増やしてください。(高い温度を作成する、または、冷却を減らす)。エフェクトをより速く上昇させるには浮力を増やします。Pyro Solverの Time Scale パラメータを使えばエフェクトが現れる速度を上げることができます。

  • 燃料ソースをオン・オフさせてアニメーションします。

  • 1つのパラメータを非常に大きい数値にすると何が起こるのか確認します。または、2つのパラメータを動かしてお互い正常に“喧嘩”させてみます(例えば、ShreddingとSharpeness)。時々、ソルバに“非常識な”値を処理させてみると面白いエフェクトが生成されるときがあります。

  • Vortex Confinement(Pyro Solver > Shapeタブ > Confinementタブ)は、時間にわたってVelocityフィールドを引き裂く傾向がありますが、Shreddingほどの見た目にはなりません。同時にShreddingとVortex Confinementをすれば、フラクタルに細かく刻まれたエフェクトができます。Confinementはデフォルトではオフになっていますが、コントロールフィールドランプを使えば、特定のサイズで、少しだけConfinementを追加することができます。

  • 高低の温度/速度の“層”の間の境界に面白く立ち昇る煙が発生します。ソースと周囲全体の空間の間での温度/速度の高低差を大きくする(例えば、ソースの初期速度を速く設定)と、面白く立ち昇る煙を作成することができます。

一般的な役立つ情報

  • パラメータエディタのピン留めを利用することで、Smoke Object DOPPyro Solverのパラメータを同時に確認することができます。

  • Smoke Object DOPには、フィールド別の可視化オプションがあります。そして、Smoke SolverPyro Solverには、形状を決めるエフェクトの可視化オプションがあります。

  • DOPネットワークのSmoke ObjectInitial Data タブをクリックします。デフォルトでは、 Velocity Sampling は“Faces”になっています。これは、より正確な衝突を検出できますが、煙/炎が他のダイナミックオブジェクトと衝突しないことが条件です。 Velocity Sampling を“Centers”に設定すれば、より高速になり、面白いPyroエフェクトになります。

  • エフェクトから正確な温度範囲を取得するには、DOP Import FieldsDOP I/Oサーフェスノードを使って温度フィールドをジオメトリネットワークにインポートして、そのノードの Compute Min/Max をオンにします。このノードは、フィールドにPrimitiveアトリビュートを作成し、フィールドの最小・最大の値を格納します。Geometry Spreadsheet Viewでアトリビュートの値を閲覧することができます。

  • もっと 層流的に (Laminar)または、もっと 荒れ狂うように (Turbulent)エフェクトを表現してほしいと聞くことがあります。 層流 または 流線形 の流れとは、Velocityベクトルが平行で、分裂しない状態で流体が滑らかに動いている時です。荒れ狂った流れとは、渦を巻いたり、変動したり、分裂した乱れた状態で流体が流れている時です。層流的な流れと 荒れ狂った 流れを混ぜたものは、移行型(transitional)の流れと呼ばれることがあります。

  • デフォルトでは、Pyroは抵抗がない動きをシミュレーションします。例えば、煙が消散しないでその運動量のまま永遠に移動し続けます。Drag Force DOPを追加すれば、シミュレーションに抵抗を加えることができます。

  • レンダリング時にノイズが多い時は、 Transparent Samples を増やすと良いでしょう。

Pyro

Sparse(疎)Pyro

レガシーPyro