On this page |
Pyroシェーダは、煙、炎、爆発をレンダリングする時にそのルックを制御します。 HoudiniのPyroシェーダには、すべての関連アトリビュートに簡単にアクセスすることができ、レンダリング工程のあらゆるところで制御ができます。
Pyro Bake Volumeを理解する ¶
Pyro Bake Volumeノードには、ビューポートでPyroソルバの結果のルックを向上させるためのコントロールが備わっています。
さらに、このノードはレンダリング結果がビューポート表示に非常に上手く一致するように自動的にマテリアルの割り当てを制御し、Pyro Shaderと同じようなインターフェースを持つように設計されています。
Scatterタブの Enable Scatter を有効にすると、Pyro Shaderで使用されるscatter
ボリュームがベイクされ、爆発内部で散乱する光のルックを近似処理することができます。
Pyro Bake VolumeとPyro Shaderの使い方 ¶
Pyro Bake VolumeノードにはPyro Shaderが含まれていて、処理されたボリュームにそのシェーダが自動的に割り当てられます。 この埋め込まれたシェーダは、Pyro Bake Volumeノードのパラメータを参照して、レンダー結果をビューポートに合わせるようになっています。 そのため、Pyro Bake Volumeノードのコピーを作成すれば、オブジェクトレベルでマテリアルの割り当てを調整することなく違ったバリエーションのレンダリングをすることができます。
Tip
Pyro Bake Volumeノードの中に潜ることで、そのPyro Shaderとコントロールにアクセスすることができます。
Pyro Shaderのほとんどの機能がPyro Bake Volumeノード上で利用可能ですが、ビューポートで利用不可なシェーダ上の特別なパラメータがいくつか存在します。 そのようなパラメータの効果を確認するには、ボリュームをレンダリングする必要があります。
以下は、Pyro Shaderを使ってさらに制御可能な機能です。
-
Use Control Volume パラメータを使って他のボリューム(
temperature
など)で煙の密度をクランプ、リマップ、スケールさせることができます。 -
Smoke Brightness (煙の明るさ)を設定することができます。
-
Absorption Color パラメータでAbsorption(吸収)を利用して煙の色を変更することができます。
-
Shadow Color パラメータでシャドウの色を変更することができます。
-
Scattering Phase (散乱位相)を設定することができます。
Note
Render View の Auto Update が有効になっていると、大元のジオメトリはパラメータ変更がある度に再クックしてビューポートの視覚化アトリビュートを更新しなければならないので、ボリュームが重いほどレンダー更新が遅くなってしまいます。
Quick Setups メニューを使用してマテリアル参照を切ると、その割り当てられていたマテリアルはPyro Bake Volumeのパラメータと無関係になります。 これによって、SOPジオメトリを再クックすることなくマテリアルパラメータを調整することができるので、レンダリングが高速化されます。 しかし、シェーダパラメータの変更がPyro Bake Volumeノードに伝搬しないので、レンダーとビューポートのルックが異なるようになります。
Note
Volume Visualizationの機能を利用すると、特定の設定の組み合わせ(例えば、複数の発光体)をビューポート内で直接視覚化することができません。
このような場合、結合された Emission Volume (デフォルトではCe
)が内部的に作成されて視覚化を補助します。
これが起きると、このノードは、異なる出力が視覚化されている旨のメッセージを表示し、下流のジオメトリを表示するとビューポートには違ったルックが生成されます。
散乱のセットアップ ¶
-
Scatter タブの Enable Scatter を有効にします。
-
マスクなしで散乱の全範囲を視覚化するために Enable Mask を無効にします。
-
テストするフレーム範囲内の最大の
temperature
値を調べてから、それに応じて Source Range を調整します。-
Source Range の最小値を上げることで、低い
temperature
値が発光の散乱に寄与しないようにします。 -
次に Source Range の最大値を設定します。適切な設定を調べるために、数フレームから最大の
temperature
値を調べます。それらの平均値から始めて、さらにルックを微調整すると良いでしょう。
-
-
散乱の強度は Scale と Hot Core Scale で調整します。
-
シミュレーションのサイズに基づいてブラー量を変更します。散乱領域をもっと滑らかにするために Use Blur Steps を有効にします。
-
上記のパラメータを調整しながら、シミュレーションの最初、中間、最後のフレームをテストします。
-
Enable Mask を有効にして、ビューポート内で望み通りの結果が生成される Mask Center と Mask Width の値を調べます。別の方法としては、マテリアル参照を切って、その割り当てられているシェーダのパラメータを調整しながらレンダリング結果をテストすることができます。
Tip
どの範囲設定でも、それぞれのバインドされたボリュームの値の範囲を考慮してください。 Export タブの Compute Min/Max Values が有効になっている場合、Pyro Solverは、それぞれエクスポートされるボリュームの最小値と最大値をPrimitiveアトリビュートに書き込みます。
Pyro Shaderを理解する ¶
Pyro Shaderを使用することで、煙、炎、爆発のシミュレーションまたはプロシージャルに生成されたボリュームのリアルなレンダリング結果を生成することができます。
Smoke(煙)とEmission(発光) ¶
これら2つのコンポーネントを組み合わせて、最終的なボリュームレンダリングを構成します。 煙突の煙、塵雲、その他の全般的な煙要素といった一部のレンダリングでは、煙をシェーディングするだけで済みます。 Smoke(煙)は、主に密度とカラーで制御します。 その一方でEmission(発光)は、炎から放出される光の全体的な強度とカラーを制御します。
これらの各コンポーネントは、作業内容によってボリュームが異なります。
通常ではdensity
ボリュームは煙コンポーネントにバインドし、 Smoke タブのパラメータでその結果のルックを制御します。
このシェーダでは最大3個の発光要素を使用することができます: Scatter, Fire , Secondary Fire 。
Scatter はPyro Bake Volume SOPで生成されたscatter
ボリュームを使用します。このscatter
ボリュームでは内部散乱の効果を事前にベイクしておくことができます。
この散乱は本当の挙動を近似処理したものですが、この手法の方がボリュームライトと多数のボリュームバウンスを使用するよりもレンダリング負荷がはるかに軽いです。
さらに、ルックをもっとアート志向で制御しやすくなります。
Fire と Secondary Fire には、Pyro Shader - Classicの頃のような従来のコントロールセットが用意されています。 特に、これらの発光要素には Intensity フィールドと Color フィールドが必要で、それぞれのフィールドは放出される光の量とカラーを制御します。 Scatter と同様で、 Fire でも他のボリュームでマスクすることができます。
Tip
どの範囲設定でも、それぞれのバインドされたボリュームの値の範囲を考慮してください。 Export タブの Compute Min/Max Values が有効になっている場合、Pyro Solverは、それぞれエクスポートされるボリュームの最小値と最大値をPrimitiveアトリビュートに書き込みます。
Emissionマスク ¶
Pyro Shaderには、 Scatter と Fire を他のフィールドでマスクする機能があります。
デフォルトでは、mask
フィールドにdensity
が設定されていて、density
が高い領域内の発光を減らす効果があります。
マスクは、煤煙に焦げ焦げなディテールを取り入れることができるので、特に爆発のレンダリングで役立ちます。
正しく使用すると、ボリュームの内部が白熱して、煙の隙間から白熱が垣間見えるようになります。
以下の画像は、Smoke、Scatter、Scatter Mask、それらを最終的に合成した画像を示しています。
Scatter, Fire, Secondary Fire ¶
使用可能なこれら3個の発光コンポーネントは最終レンダリングで一緒に合成されますが、これらはどれも用途が異なります。
-
Scatter は主に爆発内部での光の散乱を模倣するために使用し、Pyro Bake Volumeで生成可能な特別な
scatter
ボリュームに依存します。SmokeとScatter(左) 対 Smokeのみ(右):
-
Fire は炎や火炎のシェーディングに使用することができます。デフォルトでは、発光の強度とカラーのどちらにも
temperature
ボリュームを使用します。このコンポーネントにマスクを適用することも可能です。SmokeとFire(左) 対 Smokeのみ(右):
-
Secondary fire は主にPyro Trail Sourceで生成された軌道の先端に火を付けるのに使用します。このコンポーネントにマスクすることはできませんが、それ以外は考え方としては Fire と同じです。
SmokeとSecondary Fire(左) 対 Smokeのみ(右):
Pyro Shaderの扱い方 ¶
To... | Do this |
---|---|
|
|
ボリューム内部での光の散乱の挙動に基づいて煙のカラーを変更する |
Absorption Color を変更します。
よりリアルなルックの煙には、 |
他のボリュームを使って煙の密度をスケールさせる |
|
Pyro Shader vs Pyro Shader - Classic ¶
以下に、(18.5から導入された)Pyro Shaderと(それ以前の)Pyro Shader - Classicの主な違いを載せています。
Pyro Shader |
Pyro Shader - Classic |
---|---|
最大3個のEmissionフィールドが用意されています: scatter , fire , secondary fire |
1個のEmissionフィールドが用意されています |
( scatter と fire の)Emissionフィールドは、他のフィールドでマスクすることができます。 これによって、爆発に焦げ目の付いたディテールを足すことができます。 |
レンダリング時にボリュームにノイズを追加することができます。これをするには |
Pyro Bake Volume SOPによって内部散乱を近似処理することでレンダリングをもっと軽くすることができます |
ボリュームライトと大量のボリュームバウンスを使用することで、発光の内部散乱を総当り計算させることができます。 |
Note
技術的にはPyro Shader - Classicを使ってPyro Bake Volumeのルックを得ることが可能です。
これをするには、Pyro Bake Volume SOPの Bindings タブの Bake Emission Volume を有効にしてから、Pyro Shader - Classicの Fire セクションの Color Mode を Color Field に設定した後にCe
を Color Volume Name として使用することです。
ベイクされるEmissionボリュームはEmission Intensityで事前乗算されるので、Pyro Bake Volume SOPのFireセクションで指定されたIntensity Volumeはどの箇所でも1
にリマップされている必要があります。
ボリュームの煙なし炎のレンダリング ¶
density
という名前のボリュームがあれば、Mantraはレンダリング時にそのボリュームに対して光線を交差させます。
煙なしのPyroシミュレーションに関しては、このボリュームの値はどこも0です。
このようなボリュームでは、Mantraは光線が何も目に見えるものに当たらないと想定し、煙だけがレンダリングされないという結果になります。
これを回避するには、レンダリングされるジオメトリから空っぽのdensity
ボリュームを削除することで、強制的にMantraがEmission(放出)フィールドに対して光線を交差させることができます。
これによって、煙なしのPyroが完全にレンダリングされるようになります。
他の方法としては、Pyro Post-Processノードの Look タブにある Flame Density パラメータを使用して放出がゼロではない箇所のDensity値を小さい値に設定することができます。 基本的には、このパラメータは、レンダラーが煙のない炎を見逃さないように放出が存在する箇所において、バインドされたDensityフィールドに小さなプラス値を設定します。