Houdini 20.0 Pyro

Pyroエフェクト(煙と炎)

On this page

概要

Pyro Solver は、炎、煙、爆発などの高温膨張ガス関連のエフェクトを扱います。 Pyro FX シェルフタブには、色々なエフェクトを作成するツールが含まれています。

エフェクトは、 ソースジオメトリ から生成されます。例えば、キャラクタのスキンから炎が生成されます。これは、煙を生成したい時にソース形状に問題がなければ、球を作成するのと同じくらい簡単です。

How to

To...Do this

煙またはPyroエフェクトを作成する

  1. 煙/炎の ソース として使いたいジオメトリオブジェクトを選択します。

    Houdiniはボリュームを含めてどのタイプのジオメトリもPyroのソースとして使うことができます。

  2. Pyro FX シェルフのツールのどれかをクリックします。

  3. シェルフツールが3つに分かれたノードのセットを作成し、Solver DOPを選択します。

  4. プレイバーを再生すると、シミュレーションを見ることができます。

煙/炎コンテナの最大サイズを増やす

デフォルトでは、最大サイズは自動的にPyro/Smokeオブジェクトを反映したボックスサイズに調整されています。ダイナミクスネットワークのオブジェクトを選択して、 Properties タブをクリックして Size パラメータを設定します。

高速に膨れ上がるシミュレーションのサイズを調整する

resize_containerGas Resize Fluid Dynamicノードの Bounds タブにある Padding パラメータの値を増やすと現在のシミュレーションまわりに余分にスペースが追加されるので、高速に膨れ上がるシミュレーションがResizeノードがサイズ変更する前にコンテナのエッジに当たってしまうことを避けることができます。

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ネットワーク をセットアップして、そのシミュレーション結果を取り込むための 出力オブジェクト を作成し、それをレンダリング可能なオブジェクトに設定します。

Source SOPネットワーク

Pyro Sourceノード

ソースから生成した炎/煙の特性を変更できるように、ソースジオメトリをアトリビュート(temperaturefuel)付きのポイントに変換します。 例えば、“Fireball”エフェクトを作成する場合、そのエフェクトの初めにfuelに非常に高い数値を設定してから、すぐにその数値を下げることで、燃え続ける炎ではなく単発の“爆風”を生成することができます。

このノードには、ソースジオメトリ上/内部にポイントをばら撒く方法、作成するアトリビュート、既存アトリビュートの扱い方に関するコントロールが備わっています。

Attribute Noiseノード

ポイント上のtemperaturefuelの値にデフォルトでランダムさを加えて、より面白い効果を生成します。

Volume Rasterizeノード

DOPsにインポートするために、ポイントとPointアトリビュートからボリュームを生成します。

DOPネットワーク

Smoke Objectノード

特に煙/炎のオブジェクトの3D解像度、サイズ変更可能なコンテナ(デフォルト)の最大サイズ、コンテナの各側面の開閉などを制御します。 他にも、オブジェクトの内容を可視化するための拡張コントロールがあります。

(DOPネットワークでは、この“オブジェクト”は、 エフェクトでシミュレーションするボリューム になっていて、ソースジオメトリではありません。ソースジオメトリは、Volume Sourceノードによって、色々なブランチのネットワークでインポートされています。)

Volume Sourceノード

このノードは、ソースネットワークによって生成されたSOPボリュームを一連のボリュームフィールドとしてインポートします。これは、異なる名前を使ってきた歴史的な理由により、アトリビュートとフィールドの名前を変更する役割をしています(例えば、v Velocityアトリビュートはvelフィールドになります)。

一般的には、SOPアトリビュートを該当するDOPフィールドにインポートしますが、例えば、同じアトリビュートを2つの異なるフィールドにコピーしたい時には、その関係性を編集したいことがあります。

Pyro Solverノード

Houdiniには、グリッドベースの煙/炎のシミュレーション用に2つのソルバが用意されています。 Smoke Solverは基本的な流体シミュレーションエンジンを実装しています。 このソルバは、基本的な煙エフェクトをシミュレーションしますが、炎をシミュレーションしません。 Pyro Solverは、Smoke Solverを元に構築し、炎などのコントロールを追加しています。

Pyro FX シェルフタブのツールで作成されたハイレベルのエフェクトは、一般的にPyro Solverを使用しています。

このソルバには、ソルバが生成したShreddingなどのフォースを可視化するための拡張コントロールが備わっています。

Smoke Solverノード

火炎ではなく煙を必要とするエフェクト用のソルバ。

出力SOPネットワーク

DOP Importノード

1つDOP Importノードはレンダリング用にすべてのフィールドをインポートし、もう1つのDOP Importノードは、ビューポート表示用に高速表示関係のフィールドのみをインポートします。

Pyro Solverの中身

  • Volume Sourceノードは、temperaturefuelをシミュレーションに追加します。

  • fuelが存在し、temperatureが特定の温度を超えた箇所に、burnが生成されます。

  • burnheat(可視の火炎)を生成します。

  • burnは、燃焼後に非効率的に、ある程度のfuelを残します。

  • divergenceは、ガスの高温化によって生じた爆発を表現します。

  • DissipationCooling は、時間の経過と共に煙のdensitytemperatureをそれぞれ下げます。

  • velocity = 開始velocitytemperatureを足して、 Buoyancy で乗算した値。

  • 移流は、temperatureheatdensityfuel(ソルバの Advect Fuel を有効にした場合)に影響を与えます。

  • Houdiniでは、temperatureは浮力、velocityはモーメンタム(推進力)を意味します。

メモ:

  • “Multifield”ビジュアライザは、heat(火炎)とdensity(煙)の両方を表示します。

  • Temperature(温度)は、(Velocityと共に)シミュレーションの実行で最も重要なフィールドの1つで、シミュレーションの挙動とルックを大きく拡張するコントロールです。これは、あまりレンダリングや可視化にはあまり使用しないものの、内部的に多くのフォースや形状操作を駆動させています(例えば、 BuoyancyShreddingDissipation )。

  • 炎のシミュレーションを作成する時、そのコントロールは、燃焼モデルに拡張されます。 Temperature DiffusionCooling 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フィールドに変換します

  1. Pyroエフェクトを作成します。

  2. Pyroエフェクトと衝突させたいジオメトリオブジェクトを選択します。

  3. Collisions タブで、(オブジェクトが時間依存がどうかに応じて)Static ObjectまたはDeforming Object を選択します。

    別の方法として、 Populate Containers タブのCollide with Objectsをクリックして、Pyroコンテナを選択してから、Enterを押します。

膨張フィールドは、外側方向のVelocityをそのフィールド内のシミュレーションに追加します。そのVelocityは外側方向に力が加わり続けながら伝搬していきます。これによって簡単にシミュレーションを膨張させることができます。

爆発を表現しているのであれば、このフィールドを使うのが望ましいですが、もっと細かな調整をしたいなら、次のこともできます:

また、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 Fieldvelに、 Collision Fieldcollisionに設定します。

温度拡散と粘度によるブラー

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ボリュームのコンテナが低解像度なのが原因です。

Pyro

Sparse(疎)Pyro

Pyroインスタンス

レガシーPyro