On this page |
概要 ¶
Pyroシミュレーションの速度と出現形状は、たくさんのパラメータの組み合わせによって制御します。 このページでは、Pyroツールを使って効果的に作業して、色々なシミュレーションのルックを表現するためのTipsとテクニックを載せています。
始める前に、以下のヘルプページでは、より詳細なPyroの説明を載せています:
-
Pyroの紹介 - シミュレーションの色々なコンポーネントについて説明し、それに関連するノードを載せています。
-
Pyroの挙動を理解する - Pyroシミュレーションがどのように実行されるのかを大枠で説明しています。
-
Sparse vs Denseシミュレーション - Sparse Pyroシミュレーションに関する重要な情報を載せています。
-
炎 -
flame
フィールドについて説明しています。
視覚化 ¶
試行錯誤の過程において、視覚化はシミュレーションフィールドの状態を調べるのに役立ちます。
Smoke Objectには、シミュレーションフィールドを視覚化するためのオプションがたくさん用意されています。
Scalar Field Visualizationと
Vector Field Visualizationノードのヘルプには、利用可能な色々なオプションに関する詳細が説明されています。
一番役立つ視覚化モードは、 Multi Field です。
このモードは、レンダリング時に見受けられるようなすべてのボリュームを表示します。
Multi-Field Visualizationのヘルプには、それらのパラメータに関する情報が説明されています。
ルックに影響する最も重要な設定は、以下で説明しています。
Density Field
煙の濃さを表示するのに使用します。
ここにはdensity
を設定してください。
煙をもっと濃く表示するには、 Density Scale を上げます。
Diffuse Field
煙に色を付ける際に使用します。
例えば、Sparse Fireballシェルフツールは、 Diffuse Field に
density
を、 Diffuse Ramp に単色を設定します。
結果として、視覚化された煙を暗い灰色にします。
Emission Field
発光に使用します。
シミュレーションの炎の部分が発光できるようにするには、ここにflame
を設定してください。
Emission Scale は、発光量を制御します。
炎の境界をもっと鮮明にしたいのであれば、 Emit Range を有効にして、0.1-0.2
などの狭い範囲を設定します。
Emission Color Field
発光のカラーを制御します。
ここにはtemperature
を設定してください。
Physical Blackbody モードでは、黒体放射モデルを使って、このtemperature
値を発光のカラーと強度にマッピングします。
一般的なワークフロー ¶
Pyro Solverの多くのパラメータは、シミュレーション結果に影響を与えます。
Pyro Solverのヘルプのページには、それらのパラメータに関するたくさんの役立つ情報が載っています。
しかし、膨大な数の設定に圧倒されてしまうのが目に見えます。
ルックデブの工程を一連のタスクに分割し、以前の設定からやり直す必要がないようにタスク別に詳細な補足説明を集中させた方が良いです。
上記のワークフローの各工程は、特定のタスクに焦点を当てており、それ以降の工程は、以前のステージから得られた結果に対して最低限の効果を設定しています。 そのため、各工程内の繰り返し処理は、比較的少ないパラメータセットに抑えられて、処理全体の繰り返しが最小限に維持されています。
Tip
2から5までの工程では、 Minimal OpenCL を有効にすることができます。
このパラメータは、Pyro Solver SOPの Setup タブにあって、インタラクティブなリアルタイムシミュレーションのパフォーマンスが得られます。
詳細は、Minimal OpenCL Solveを参照してください。
ソースジオメトリ ¶
ソースジオメトリは、新しく注入された煙の形状と挙動に大きな影響を与えます。 この工程では、最終結果の詳細について気にせずに、シミュレーションにいい感じのバリエーションを取り込めるようにソースを作成する事に集中します。
-
静的な煙と炎のシミュレーションに関しては、ソース値にノイズを追加します。
-
Attribute Noise SOPを使用することで、ソースのPointアトリビュートにノイズを追加することができます。
-
煙のシミュレーションの場合、このノイズによって、一定で面白くない放出が回避されます。
-
炎のシミュレーション用のソースノイズは、ベースのルックを決めるのに重要です。炎のベースのルックに細胞状のノイズを取り入れるには、 Noise Type を Worley (cellular) F2-F1 にします。
-
-
広がる炎を表現するには、Pyroシミュレーションを進める前に、ソースジオメトリが広がりの挙動の見た目になるようにしてください。
-
特に
Pyro Source Spread SOPは、広がる炎のシミュレーション向けに設計されています。
-
-
爆発に関しては、
Pyro Burst Source SOPを使用することで、爆発の核心部となるソースを作成し、その爆発のルックの形を定義することができます。 さらに、
Pyro Trail Path SOPと
Pyro Trail Source SOPを使用して軌跡を追加することもできます。 詳細は、爆発の作成を参照してください。
この工程では、ソース値、特にtemperature
とflame
のソース値の範囲も決定してください。
このために、Attribute Promote SOPを使用することで、(ラスター化する前の)関連するPointアトリビュートの最大値を計算することができます。
この情報は、後でPyro Solverのパラメータを設定するのに役立ちます。
基本的なシミュレーションパラメータ ¶
ソース設定が完了したら、次の工程は、シミュレーションが正しく動作するように基本的なプロパティを設定することです。 これらの設定に妥当な値が使用されていた場合、おそらく一度設定したら、後は忘れてしまう可能性があります。
Voxel Size |
シミュレーション解像度を制御します。
値が 低い ほど、高解像度になります。
この値は、シミュレーションスケールに比例して設定してください。
例えば、デフォルト値の Tip 高解像度のシミュレーションに移行する前に、大きなボクセルサイズを使うことで、色々なシミュレーション設定を素早く試すことができます。 |
Boundary Conditions |
地面またはソリッドの壁をシミュレーションに追加する必要がある場合は、このセクション内のパラメータを使用します。 Tip Guides ▸ Visualization タブの Domain 項目は、シミュレーションが実行される場所を調べるのに役立ちます。 |
Max Timesteps |
Pyro Solverがフレーム毎に取得できるタイムステップの最大の数。
デフォルト値の |
Padding |
シミュレーションする煙周辺でPyro Solverが維持すべき余裕代を指定します。 このバッファがタイムステップ内の移動量を十分に収容できるほどの大きさであることが重要です。 しかし、このパラメータを大きくしすぎると、シミュレーションが遅くなってしまいます。 |
温度と浮力のパラメータ ¶
浮力を介してtemperature
フィールドは、煙の大部分の動きに大きく影響を与えます。
このフォースを適切に制御するには、このフィールドの値の背後にある物理的な意味を知っている必要があります。
そして、浮力は Ambient Temp (K) と Reference Temp (K) のパラメータで設定します。
これらのパラメータだけでなく、 Buoyancy Scale を使用することで、温度の範囲を変更することなく浮力を細かく調整することができます。
Ambient Temp (K) |
詳細は、 |
Reference Temp (K) |
詳細は、 |
Temperature Scale |
発光カラー用の |
Ambient Temp (K) |
周辺の空気の温度を指定します。
|
Reference Temp (K) |
|
Gravity |
重力フォースの大きさと方向。 これは、浮力の強度に影響します。 シーンスケールに合うようにこれらのパラメータを調整したら、あとはそのままにしてください。 Buoyancy Scale を使用することで、浮力の効果を微調整することができます。 |
Buoyancy Scale |
浮力の強度に対する乗数。 このパラメータを使用することで、望み通りの速度で煙が上昇するように浮力を調整することができます。 |
Cooling Rate |
|
Flamesパラメータ ¶
Pyro Solverの Flames タブのパラメータは、flame
フィールドを使用したシミュレーションに大きく影響します。
flame
値が望み通りの時間の間で持続されるようにするために、 Flame Lifespan パラメータを調整することから始めてください。
次に、flame
フィールドから生成したい出力を有効にして、 Flame Range を調整します。
これらの出力に関する情報は、炎のページを参照してください。
Tip
ソースからの入力のflame
値が分かっていれば、 Flame Range を調べる時に非常に役に立ちます。
ソースで作業している時に、その入力の最大値を計算すると良いでしょう。
シェイプオペレータ ¶
これまでの工程は、シミュレーションする煙の全体の形状と動きを決定するためのものです。
これらの全体的な特徴が決まれば、シェイプオペレータを使用することで、シミュレーションにディテールを加えることができます。
Pyro Solverには、4つのシェイプオペレータが組み込まれています:
Dissipation 、 Disturbance 、 Shredding 、 Turbulence 。
Dissipation(消散)
煙が徐々に消えるようにするために、時間の経過と共にdensity
値を下げます。
Sparseシミュレーションを実行する時には、 Clamp Below パラメータに適切な値を設定することが重要です。
そうしないと、微小なdensity
値が残存し、無駄にアクティブなシミュレーション領域を膨張させてしまいます。
Disturbance(擾乱)とShredding(細断)
ランダムなフォースを適用して、シミュレーションを離散させます。 Disturbanceは、線形加速度を働かせて、滑らかな煙の表面を離散させるのに役立ちます。 Shreddingは、Velocityを回転させて流れの向きを変えます。 Shreddingは、流れを加速も減速もさせることなく、混沌とした動きを追加するのに効果的です。 これは、特にShreddingが使用されていない時に炎が垂直に伸びてしまったような炎のシミュレーションを横に広げるのに役に立ちます。
Turbulence(乱流)
これを使用することで、強力な大きなスケールのノイズをシミュレーションVelocityに追加することができます。
各シェイプオペレータには、それを有効にするかどうかのチェックボックスがあり、それを適用する強度を指定するためのスケール係数があります。
さらに、シェイプオペレータ別に詳細なパラメータを含んだタブが用意されています。
これらのタブで共通しているのは、 Control Field があるということです。
この Control Field を使用することで、各シェイプオペレータの強度を空間的に減衰させることができます。
Control Field を有効にすると、そこで指定したフィールドの値が Control Range から0-1
にマッピングされます。
Remap Control Field が有効な場合は、フィールド値が Control Ramp を介して渡されます。
リマップされたコントロール値は、グローバル強度のスケール係数として適用されます。
Control Field は、目的の領域からマスクを構築して、そこにのみシェイプオペレータを適用することができます。
Tipsとトラブルシューティング ¶
-
Advection-Reflection は、Vortex(渦巻き)を維持するのに非常に役立ちます。
-
Disabled は、Advection-Reflectionを無効にします。これは、
divergence
フィールドを伴うシミュレーション(例えば、爆発)の最も安全なオプションです。 -
Single-Project は、シミュレーションにあまりオーバーヘッドを追加しない軽いAdvection-Reflectionメソッドを使用します。
-
Double-Project は、最適なVortex(渦巻き)維持量を示します。しかし、このメソッドは、実質的にサブステップ数を2倍にするので、 Single-Project よりも非常に処理が重いです。
-
-
Time Scale パラメータをアニメーションさせることができます。これは、特に、開始時に高いTime Scaleで強烈な起爆を取り込みたい爆発のシミュレーションで役に立ちます。
-
Disturbance の Mode を Continuous に設定すると、独立したノイズがすべてのボクセルに追加されて、表現可能な一番高いスケールの擾乱を生成します。 これは、雪崩のようなエフェクトで役に立ちます。しかし、ボクセルサイズが小さすぎると、 Continuous モードの Disturbance では、ノイズが多くて予期しないルックになってしまう可能性があります。
-
Pyro Solverの Forces 入力にマイクロソルバを接続することで、独自のフォースを煙に適用することができます。
-
Sparseシミュレーションで階段状の乱れがあることに気づいた場合は、 Padding が不十分です。 この問題を修正するには、 Advanced タブの Max Substeps を上げたり、 Padding を上げてください。
-
ソースとシミュレーションが非常に速い場合、サブステップ数が不十分になって、目立った筋が発生してしまいます。この問題を修正するには、 Max Substeps を上げてください。
-
煙が衝突ジオメトリと作用していないようであれば、 Advanced ▸ Collisions タブの IOP Iterations を上げてください。
-
煙に薄い軸平行の筋があることに気づいた場合は、Hourglass Filteringを有効にしてください。このコントロールは、Pyro Solverの Advanced ▸ Hourglass Filtering タブにあります。
-
Sparse Pyro Solverは、シミュレーション時間を短縮するために、一括で移流を実行します。そのため、メモリ使用量が跳ね上がります。メモリ使用量に問題があるようでしたら、 Advanced ▸ Advection ▸ Max Batch Size でそのバッチサイズを制限することができます。
Minimal OpenCL Solve ¶
Pyro Solver SOPには Minimal OpenCL 計算を実行する機能があります。
この機能は非常に速くプロトタイプを組むのに役立ちます。
このオプションは Simulation Type ドロップダウンメニューの General タブにあります。
これはシミュレーションの実行中にパラメータをインタラクティブに操作することができるので、シミュレーションの効果に素早くフィードバックを反映させることができます。
このオプションを選択すると、すべてのシミュレーションデータがビデオメモリ内に残せるようにするためにソルバの一部の機能が無効になり、 Use OpenCL が有効になっている時にのみ必要になる負荷の重いコピーが回避されます。
Tip
シミュレーション中にパラメータを調整している時にソルバインターフェスが更新されるようにするには、 Edit メニューの Live Parameter Display during Playback を有効にしてください。
Tip
Pyro Solver SOPの Center パラメータをアニメーションさせることで、シミュレーションコンテナを動かすことができます。
例えば、これによって、炎をシミュレーションしながら移動する松明のワールド空間の動きを追跡することができます。
高速にシミュレーションを生成するために、 Minimal OpenCL はOpenCLデバイスを使用し、以下の制限事項が課されます。
-
シミュレーションのキャッシュ化が無効になります。つまり、タイムラインをスクラブさせて保存結果を確認することができません。
-
Advection-Reflection には対応していません。
-
Denseシミュレーションしか実行できません。
-
コンテナの動的なサイズ変更が無効になります。 Bound タブで静的なサイズを設定する必要があります。
-
ソルバは CFL Condition に基づいた動的なサブステップを行わなくなります。
-
ソーシングとコライダー対応に制限がかかります。どちらもフレーム範囲を指定する必要があり、ソルバはシミュレーション全体でこれらの入力ソースをループさせます。さらに、コライダーは必ず(
collision
という名前の)符号付き距離フィールドと(v
という名前の)Velocityフィールドに変換しなければなりません。
さらに以下の処理によってパフォーマンスを上げることができます:
-
ルックデブの間はパフォーマンスを維持できるように
Pyro Bake Volume SOPノードの使用を控えてください。
-
Pyro Solver SOPノードのFieldsタブとShapeタブでガイドを無効にしてください: Fields ▸ Field Guides ▸ Field Guide ▸ No Guide 、 Shape ▸ Shape Guides ▸ No Guide 。
-
できるだけループソースを使用してください。
-
マイクロソルバを使用する場合、ボトルネックを回避する Use OpenCL オプションが有効になっているかどうか確認してください。
Tip
パフォーマンスとソルバ設定をテストする場合は、Simple GPU Ground Explosionがうってつけです。
Note
ビューポートのレンダリングを担っているGPUをOpenCLデバイスに設定すると最高のパフォーマンスが得られます。