On this page |
パラメータを使って異なる炎や煙のルックを表現する方法に関する情報は、Pyroのルックデブを参照してください。
Smoke Solverは、煙のシミュレーションに必要な基本的な工程を実行することができます。
Pyro Solver (Sparse)は、炎のシミュレーションとさらに形状コントロールを追加して、このソルバの機能を拡張しています。
セットアップ
煙のシミュレーションに不可欠なビルディングブロックは、オブジェクト、ソルバ、ソースです。
Smoke Object (Sparse)ノードは、シミュレーションを進める時にソルバによって進展させるのに必須となるフィールドが入ったダイナミクスオブジェクトを作成します。
最も単純な煙のシミュレーションには、以下のデータが必要です:
-
煙が存在する箇所とその量を示す
density
スカラーフィールド。 -
浮力計算に使用する
temperature
スカラーフィールド。 -
煙の瞬間的な動きを取り込む
vel
ベクトルフィールド。
このソルバは、煙に見合った方法でこれらのフィールドを進展させる役割を担うのに対して、ソース設定は、そのシミュレーションの流れに沿ってこれらの量を注入する役割を担います。
例えば、煤煙(すす)ソースのdensity
またはtemperature
を次々と追加して熱い領域を発生させたいことでしょう。
詳細は、Pyroソーシングを参照してください。
Note
Sparse Pyro FX シェルフ下のツール群を使用することで、Pyro Solverを含んだセットアップを作成することができます。
Sparsity(疎ら)
デフォルトでは、このソルバは Sparse モードで動作します。
つまり、active
フィールドで制御された興味のある領域にのみソルバで必要な計算が実行されます。
この領域は、 Advanced タブの Resizing サブタブ下にある Reference Fields パラメータによって構築されます。
このパラメータで指定されたフィールドのプラス領域が アクティブ としてフラグが立ちます。
次に、煙を広げるためのバッファを確保するために、この中間アクティブ領域を広げます。
例えば、 Reference Fields にdensity
を設定すると、このソルバは、煤煙(すす)が存在する領域とその周辺領域で処理を実行するようになるので、煙の可視領域に計算負荷を集中させることができます。
Sparseモードでの非アクティブ領域は、煙が自由に移動する真空として扱われます。そのため、お互いに向かって吹いている2つの煙があると、これらのアクティブ領域がマージするのに十分に近い間隔にならない限りは、これらの2つの煙は互いに完全に見えなくなります。
Advanced タブの Sparsity サブタブ下にある Enable Sparse Solving チェックボックスを無効にすると、 このソルバは Dense モードで動作するようになって、コンテナ全体で計算が行なわれます。 さきほどの2つの煙を例にすると、これらの煙は即座にお互いの存在に気づくようになります。 しかし、Denseモードは、いくつかのケースでは大幅に遅くなってしまいます。
Tip
Smoke Objectの Guides タブの Visualization サブタブ下にある Active Region チェックボックスを有効にすることで、アクティブなシミュレーション領域を表示することができます。
入力
Objects
動作させるSmoke Object。
Note
Sparseモードで動作させる時は、そのSmoke Objectの Enable Sparse Solving を必ず有効にしてください。
Advection
この入力に接続されたノードは、煙の正確なVelocityフィールドを使用することができるようになります。
例えば、Gas Advectノードを接続することで、そこに取り付けたジオメトリデータのポイントを煙に沿って移流させることができます。
Note
この入力を介してVelocityを変更するのは安全ではありません。 代わりに、 Sourcing または Forces の入力を使用してください。
Sourcing
この入力を使ってシミュレーションフィールドを変更します。
例えば、Volume Sourceを接続してソースを設定します。
この入力を介してSparseモードでアクティブ領域に影響を与えるソース設定を実行することが重要です。
Note
この時点でのactive
フィールドは最新ではありません。
そのため、Sparseモードで操作を実行できるようにしたいのであれば、 Forces 入力を使用してください。
Forces
この入力に接続されたマイクロソルバは、最終Pressure Projectionの前に実行されます。
この時点でのactive
フィールドは、 Stencil Field に対応したDOPsのステンシルとして使用することができます。
Note
この入力に接続されたノードを実行する前に、 Sourcing 入力で実行された処理を考慮してactive
フィールドが更新されます。
パラメータ
Simulation
Time Scale
このソルバ内部の時間に対するスケール係数。
1
は通常速度で、1
より大きいスケールはシミュレーションを速く、1
未満のスケールはシミュレーションを遅くします。
Viscosity
Velocityフィールドに対するブラー係数。
0
の値は、隣接ボクセルを抵抗なしで異なる方向に移動させることができるので、より混沌とした乱流のルックが生成されます。
このパラメータの値が大きいほど、より一貫としたVelocityフィールドになるので、より流れるようなルックが生成されます。
Advection-Reflection
Advection-Reflection
Advection-Reflectionは、Pressure Projectionが原因で失われたエネルギーをシミュレーションに注入することを試みます。 このオプションを有効にすると、流れの中の渦をもっとうまく維持させることができます。
Disabled
Advection-Reflectionを実行しません。 これは、爆発といった非ゼロのGoal Divergenceを伴うシミュレーションで推奨されている設定です。
Single-Project
タイムステップ毎にPressure Projectionを1回実行して、それによって除去されたVelocityコンポーネントを次のステップで追加します。 このオプションは、 Disabled よりも若干遅く、さらに、追加のベクトルフィールドをタイムステップ間で取り込む必要があります。
Double-Project
タイムステップ毎に2回のPressure ProjectionとVelocity移流パスを実行します。 このオプションは、 Single-Project よりもかなり遅いのですが、もっと良い結果と安定性を得ることができます。
Reflection Amount
Advection-Reflection が Disabled に設定されていない時に再注入されるPressre ProjectionされたVelocityの割合。 1に近い値ほど、エネルギーがもっとうまく維持されますが、不安定になる可能性があります。
Temperature
Temperature Diffusion
temperature
フィールドに対するブラー係数。
値が大きいほど、温度がもっと拡散するようになって、熱い領域から冷たい領域への熱の広がりを模倣することができます。
Cooling Rate
temperature
フィールドがゼロに冷却される速さ。
Ambient Temp (K)
temperature
フィールドの0の値に相当する温度(単位はKelvin)。
これは、環境の周辺温度を表現します。
Reference Temp (K)
temperature
フィールドの1の値に相当する温度(単位はKelvin)。
これらの温度の範囲を使って、浮力が計算されます。
Note
一般的に、temperature
フィールドのT
値は、Ambient Temp (K) + T * (Reference Temp (K) - Ambient Temp (K))
の温度に相当します。
Buoyancy Scale
高温のガスは、膨張し、密度の低下によって上昇します。 浮力による加速度は、 Ambient Temp (K) と Reference Temp (K) の値、さらに Gravity 設定を使って計算されます。 このパラメータの値は、その浮力に対する乗数として使用されます。
Gravity
Gravity Acceleration
重力による加速度。 重力が強いほど、浮力が強くなります。
Gravity Direction
重力が引っ張る方向。 熱いガスほど、これと反対の方向に上昇する傾向があります。
Advanced
Use OpenCL
OpenCLデバイスを使って計算を高速化します。
Note
現在のところ、OpenCLアクセラレーションは Dense モード( Enable Sparse Solving が無効な時)にのみ対応しています。
Min Substeps
ソルバは、フレームあたり少なくともこの数のサブステップを実行します。 異常なフォースが発生した場合、このパラメータを上げることで、安定性が増します。 通常では、このパラメータを上げると、シミュレーションの実行が非常に遅くなります。
Max Substeps
ソルバは、フレームあたり最大でこの数のサブステップを実行します。
CFL Condition
Max Substeps が1
より大きい時、ソルバは、このパラメータを使用してサブステップの数を決めます。
この条件は、サブステップがオブジェクトをこれより多くのボクセルで相互に貫通することができない事です。
値が高いほど、ソルバはもっと大きくサブステップを取得することができるので、煙がColliderを通過してしまう可能性があります。
Quantize to Max Substeps
有効にすると、すべてのサブステップは、1フレームを Max Substeps で割ります。 例えば、 Max Substeps を4に設定し、 CFL Condition が3サブステップだけ必要であれば、 ソルバは0.25, 0.5, 0.25のフレームステップを受け取ります。 このオプションは、 1/Max Substeps の増分値でファイルにキャッシュ化した入力ジオメトリを再利用するのに役に立ちます。
Frames Before Solve
オブジェクトを作成した後に、実際のシミュレーションをこの数のフレームだけ遅らせます。 Sourcing 入力に接続されたノードは、その間でも実行されます。 これは、いくつかのSolveノードが特定の初期条件を満たす前に処理できない場合に必要になることがあります。
Resizing
Resize in Full Tiles
有効にすると、16ボクセル単位でフィールドのサイズが変更されます。 これにより、若干効率が良くなりますが、その結果のフィールドは必要以上に大きくなります。
Note
Enable Sparse Solving が有効な時は、サイズ変更は必ずフルタイルで実行されます。
Reference Fields
シミュレーションコンテナのサイズを決めるフィールドのリスト。 まず最初に Reference Fields からプラス値のすべてのボクセルを含んだ境界ボックスを計算し、次にその境界ボックスを Padding だけ広げることで、サイズ変更が行なわれます。 このフィールドのリストは、Sparseモードでアクティブ領域を構築する際にも使用されます。
Padding
Reference Fields のシミュレーション領域に追加する余裕代。 Padding はできるだけ小さく、タイムステップ内で煙がコンテナからはみ出さない程度に十分な大きさにしてください。
Note
Enable Sparse Solving が有効な時、 Padding は、アクティブ領域に構築されるバッファのサイズも制御します。
Extra Fields
デフォルトでは、このソルバは、density
、temperature
、divergence
、active
、vel
、collisionvel
、flame
(Pyroのみ)のサイズを変更します。
ここにフィールドを指定することで、そのフィールドのサイズも変更させることができます。
Sparsity
Enable Sparse Solving
ソルバを Sparse モードにして、関連する領域のみを計算するように実行させることができます。
Note
Sparse モードを正しく動作させるには、必ずSmoke Objectの Enable Sparse Solving も有効にしてください。
Reset Rule
Fields to Reset で指定されたフィールドの変更箇所を決めるルール。
Disabled
フィールドのどの箇所も変更されません。
Newly Occupied
以前は非アクティブで今はアクティブな領域のフィールドがリセットされます。
Newly Deoccupied
以前はアクティブで今は非アクティブな領域のフィールドがリセットされます。
Newly Occupied or Deoccupied
アクティブから非アクティブ、非アクティブからアクティブに変わった領域のフィールドがリセットされます。
Fields to Reset
Reset Rule に基づいてリセットするフィールドのリスト。 変更される箇所の領域では、これらのフィールドは初期値に設定されます。
External Forces
Scaled Forces
各ボクセルのdensity
フィールドの値でスケールをかけるフォースのリスト。
Absolute Forces
(density
値を無視して)すべてのボクセルに均一に適用するフォースのリスト。
Advection
Field Advection
Advection Scheme
移流を実行する際に使用するアルゴリズム。 Semi-Lagrangian が最も基本的なアルゴリズムです: これは、一回だけ Velocity Field を通過した軌跡を追跡してその Field 値を更新するだけです。 Modified MacCormack は、さらに追加で追跡ステップを実行して、取り込まれた誤差を近似して補正します。 その結果として、オリジナルのフィールドの鮮明な特徴部をもっと上手く維持することができます。 BFECC は、最も計算負荷が高いですが、さらに他の追跡ステップを実行して、推定誤差の動きを予測して、一番良い結果を生成します。
Clamp Values
Modified MacCormack と BFECC の移流の誤差補正ステップは、オリジナルのフィールドの範囲外にある最終ボクセル値を取り込んでしまう可能性があります: これでは、例えばマイナスの密度または大きなVelocityを生成してしまう可能性があります。 そのような値が検出されたら、最終フィールド値は、このパラメータの設定に基づきます。
None
クランプを実行しません。
Clamp
Semi-Lagrangian の移流メソッドで確認された範囲内に収まるように値をクランプします。
Revert
Semi-Lagrangian の移流メソッドで予測された値に戻します。
Blend
移流させたフィールドがクランプ制限に到達した時に、クランプしていない値とクランプした値の間に滑らかなブレンドを適用します。 特に Revert オプションを使用した場合、小さい値の Blend (0.05-0.1)を適用することで、移流させたフィールド内のグリッド状の乱れを軽減させることができます。
Trace Method
Velocityフィールドを通過する軌跡を追跡する方法を制御します。 このメニュー内のオプションは、精度と計算負荷の低い順でリストされています。
Note
CFL Condition に適切な値を使用していれば、 Forward Euler で十分なはずです。 CFL Condition にもっと大きな値を使用する必要がある場合、または、そのオプションを無効にした場合は、 Trace Method からもっと下にリストされているオプションの使用を考慮してください。
CFL Condition
有効にすると、計算された経路が Velocity Field 内のバリエーションを反映できるようにするステップ内で軌跡の追跡が行なわれます。 ステップサイズは、このパラメータの値で制御されます。 特に、各ステップ内で通過したフィールドボクセルの数は、 CFL Condition と同じです。
Max Steps
軌跡を追跡する際に考慮されるステップ数に安全のための上限を設定します。
Note
Use Field Advection Settings for Velocity が無効になっていても、このステップ数の制限は常にVelocity移流にも適用されます。
Max Batch Size
Velocity Field を通過する経路を追跡する負荷を最小限に抑えるために、ターゲットのフィールドを(それらのボクセルサンプリング設定に基づいて)束にまとめて、それぞれの束を同時に移流させます。 このオプションを有効にして Max Batch Size を指定することで、それぞれの束で処理可能なフィールドの数を制限することができます。 これは、移流ステップがピークに達するメモリ使用量を削減するのに役立ちます。
Note
Use Field Advection Settings for Velocity が無効になっていても、このバッチ設定は常にVelocity移流にも適用されます。
Extra Fields
デフォルトでは、このソルバは、density
、temperature
、vel
、flame
(Pyroのみ)を移流させます。
ここにフィールドを指定することで、そのフィールドも移流させることができます。
Velocity Advection
Use Field Advection Settings for Velocity
有効にすると、さらに Field Advection 設定も使って、Velocityフィールドを移流させます。 このオプションを無効にすると、Velocity用の移流設定を変更することができます。
このセクションの残りの設定は、 Field Advection に載せている設定と同じです。
Collisions
Build Collision Mask
このオプションを有効にすると、ソルバはcollision
フィールドとcollisionvel
フィールドを構築して、煙と衝突オブジェクト間に自動的な相互作用を機能させます。
Bandwidth
コリジョンオブジェクトからどれだけ離れた距離までそれに関連するフィールドを構築するかどうかを制御します。 この値の単位はボクセルです。 これを無効にすると、これらのフィールドのすべての箇所が初期化されます。
Use Point Velocity for Collisions
アフェクターオブジェクトのローカルVelocityは、角速度と線形速度の組み合わせです。 しかし、オブジェクトが変形、且つ、フレーム間でポイントが合致している場合、そのローカルのポイントVelocityも使用して、その変形エフェクトを推定することができます。
Use Volume Velocity for Collisions
アフェクターオブジェクトのポイント数が変化するのであれば、それをボリューム表現にすることで、そのボリューム表現内の変化を変形Velocityの推定に使用することができます。
Note
これには、ボリュームサーフェスの接線方向のVelocityが含まれていません。 ボリュームがフレーム間で変化しなければ、ベルトコンベアーが静止しているように見えます。
Collide with Non-SDF
通常では、コリジョンリレーションシップは、オブジェクト毎に符号付き距離フィールドを使用します。
しかし、オブジェクトが異なるタイプの場合、他の方法を使って実質的に符号付き距離フィールドを取得することができます。
このオプションを有効にすると、オブジェクトのsurface
スカラーフィールドが検査されて、それが符号付き距離フィールドとして扱われます。
density
フィールドが存在すれば、それを0.5のカットオフでFogボリュームとして扱われます。
Geometry
ジオメトリが取り付けられていて、且つ、そのジオメトリが単一ボリュームで構成されている場合、
そのボリュームが(0.5のカットオフで)Fogボリュームとして扱われます。
しかし、そのボリュームの境界条件がSDFに設定されていれば、SDFとして扱われます。
Correct Collisions
有効にすると、Collider内の指定したフィールドがリセットされます。
Fields to Correct
Correct Collisions が有効な時、Collider内のこれらのフィールドがリセットされます。
Feedback Scale
Colliderが煙から影響を受ける度合いは、このパラメータの値で制御します。 値が大きいほど、Colliderに対する圧力の影響が強くなります。 0の値は、どのフィードバックも回避されます。
IOP Iterations
Colliderは、弱連成法(Weak Coupling)を使ったシステムに統合されています。 射影の反復回数は、このパラメータで制御します。 反復回数が多いほど、シミュレーションが遅くなりますが、コリジョンオブジェクトとの相互作用が良くなります。
Hourglass Filtering
Filter Hourglass Modes
Smoke Objectの Velocity Sampling が Center に設定されている時、Pressure Projectionに耐えることができる疑似Divergenceモードのフィルタリングを有効にします。
Amount
Hourglassフィルタリングの強度。
0
の値は、このフィルタリングを無効にするのに対して、1
の値は、フルフィルタリングを実行します。
Scale by Divergence
このオプションを有効にすることで、どこにでもフィルタリングを実行するのではなくて、Divergenceがまだ検出されている箇所のボクセルに対して選択的にフィルタリングを適用することができます。
Use Relative Divergence
Scale by Divergence と同様で、この設定は場所によって異なる強度でフィルタリングを適用します。 しかし、純粋なDivergenceではなく、フィルタリング強度の制御に使用される量は、Divergence/速度の比率です。
Divergence Scale
残りのDivergenceに対するフィルター強度の感度( Use Relative Divergence が有効な場合は、Divergence/速度)を制御します。 つまり、それに関連する量をこの量で乗算した後に、その値を使ってフィルター強度を決定します。
Visualize Filter Strength
適応フィルターを使用した時( Scale by Divergence が有効になっている時)、このオプションを有効にすることで、強度フィールドを視覚化することができます。
Plane Orientation
視覚化する切断平面の向き。
Plane Position
境界ボックス内の切断平面の相対位置。
Visualization Mode
強度の値(0
から1
)をカラーに変換する方法を決めます。
See also |