On this page | |
Since | 12.0 |
Pyroソルバは、Smoke Solverを拡張したソルバです。燃焼(炎)のない煙を生成したいのであれば、 よりシンプルなSmoke Solverを使用した方が良いと思うかもしれませんが、Pyroソルバの方が柔軟性があります。
シェルフツールによるシミュレーションの作成に関する方法は、Pyroツールの使い方を参照してください。 色々な炎や煙のルックを表現するためのパラメータの使い方は、Pyroのルックデベロップメントを参照してください。
セットアップ ¶
シェルフツールを使ってPyroエフェクトを作成すると、それらのシェルフツールが、ソース、ソルバ、出力オブジェクトを自動的にセットアップします。
ゼロからPyroネットワークをセットアップしている場合、Smoke Objectノードを使用することで、既に接続されているPyroで必要なデータを持つDOPオブジェクトを作成することができます。 既にDOPオブジェクトを持っている場合、Smoke Configure Objectノードを使用することで、DOPオブジェクトに必要データを追加することができます。
このソルバは、オブジェクト上の色々なフィールドサブデータを利用します。
-
オブジェクトには、煙の密度用の
density
スカラーフィールドを持たせてください。 -
オブジェクトには、各ボクセルのVelocity用の
vel
ベクトルフィールドを持たせてください。 -
オプションで、オブジェクトは、内側浮力計算用の
temperature
スカラーフィールドを持つことができます。
入力 ¶
Object
動作させるSmokeオブジェクト。
Note
Smokeオブジェクトは、複数のコンテナを持つことが可能です。
Pre-solve
各計算ステップに入る前に、この入力に接続されたネットワークブランチを実行します。 標準のPyroセットアップでは、この入力に接続されたノード(Gas Resize Fluid Dynamic)は、ステップ毎に流体コンテナのサイズを自動的に変更します。
Velocity update
この入力に接続されたノードは、シミュレーションネットワークのVelocityフィールドを編集することができます。 例えば、カスタムフォースを“project gas non-divergent”ステップの 前に 適用することができます(以下の“Sourcing (post-solve)”入力も参照)。
Advection
この入力にGas Advectノードを接続することで、そのノードが、このソルバ内のフィールドに基づいて、コンテナに取り付けられたジオメトリデータのポイントを移流させることができます。
このソルバ内部の時間のスケール係数。1
は、標準速度、1
より大きい値は、Pyroシミュレーションを速く動かし、1
より小さい値は、Pyroシミュレーションをゆっくり動かします。
doptime, dopframe,dopsttot, dopttostなどのエクスプレッション関数を使用すれば、グローバル時間とシミュレーション時間を変換することができます。
Note
Time Scale を変えると、シミュレーションのタイムステップだけが影響を受けます。
SOPで計算されたVelocityをシミュレーションに追加することで、Volume Source DOPと衝突する場合は、シミュレーションのタイムステップに合うように入力のVelocityを1 / Timescale
でスケールしてください。
Temperature Diffusion
Temperature(温度)フィールドに対するガウスブラー係数。値が高いほど温度が広く広がり、定義された効果の鮮明さがぼやけ、より冷却性が増します。
例えば、2
の値は、Temperatureフィールドを毎秒2半径分ぼかします。
(このパラメータに対する実世界の現象は、シミュレーションの解像度よりも、より細かなスケールで乱流をシミュレーションすることです。これによってフィールドが外に広がります。)
Cooling Rate
Temperature(温度)フィールドがゼロに冷却される速さ。0.9の値は、熱いガスの温度を毎秒90%分(元の値の10%へ)下げます。
Warning
これは、Houdini11以前の Cooling Rate パラメータとは逆の意味です。
Viscosity
Velocityフィールドの“流動性”。値が高いほど近隣のボクセルが同じVelocityを持ち、より流動的な見た目になります。0
の値は、隣接するボクセルが抵抗なしで任意の方向に移動できるようになり、
よりグチャグチャした乱流な見た目になります。
(ソルバ内側では、ボクセルのVelocityが近隣のボクセルのVelocityと異なる時、より高いViscosity(粘度)の値が、抵抗を招きます。現在のところ、これは拡散表現をVelocityフィールドへ適用することで実装されています。)
Buoyancy Lift
環境温度とボクセルの温度間の差分でスケールされた各ボクセルの上昇フォース。つまり、より熱い領域ほど上昇し、より冷たい領域ほど沈みます。この値を上げると、その効果をより速く、そしてより高くします。
Buoyancy Dir
浮力が適用される方向。通常では、これはシミュレーションのUp方向ですが、シミュレーションの見た目を迅速に微調整するために、よく修正することがあります。
Combustion ¶
Combustion(燃焼)モデルは、Fuel(燃料)フィールドを受け取り、それをBurn(燃焼)、Temperature(温度)、Density(Smoke)に変えます。
Enable Combustion
Pyro Solverに対してCombustion(燃焼)モデルを有効にします。 これをオフにすると、Fuel(燃料)フィールドとBurn(燃焼)に関連する他のすべてのものが無視されます。
Ignition Temperature
燃焼モデルは、Temperature(温度)フィールドがこの値を超えた場合にのみ起こります。 すべての燃料を瞬時に点火したいのであれば、マイナスの値を使います。
Burn Rate
1秒あたりに燃やされる燃料の量。これには比率を指定します。 つまり、0.9は1秒後に90%燃やされることを意味します。
Fuel Inefficiency
実際には燃やされずに保持される燃やされる燃料の量を制御します。 0は、すべての燃やされる燃料がFuel(燃料)フィールドから削除されることを意味します。 1は、燃料が燃やされる時に、燃料がFuel(燃料)フィールドから削除されないことを意味します。
Temperature Output
消費される燃料のすべてのユニットに対してTemperature(温度)フィールドを増やす量。
これは、Influenceパラメータのとおりに、Heat(熱)フィールドやBurn(燃焼)フィールドの両方から影響を受けます。
Gas Released
燃料が燃やされる位置に注入されるガスの量を制御するスケール係数。このパラメータは、燃焼領域を外側に広げます。
ガスの放出は、Influenceパラメータに応じて、Heat(熱)フィールドやBurn(燃焼)フィールドの両方でスケールされます。
Flames ¶
炎(熱)を制御するオプション。
Flame Height
炎に対するスケール係数。値が高いほど背の高い炎に、値が低いほど背の小さい炎になります。 この値は、任意の単位(これは、Houdini単位での炎の高さではありません)で測定されず、単に炎に適用された冷却度に影響を与えます。
冷却係数が熱いTemperature(温度)フィールドに抵抗できるほど十分大きな値になっていないことがよくあるので、非常に小さな値にすると、非常に小さい炎になるとは限りません。
この値の逆数( Cooling Field で乗算されます。以下参照)がHeat(熱)フィールドから減算されるので、低い値ほど、より冷却され、より炎が小さくなります。
以下の Cooling Field コントロールを使用することで、フィールド(デフォルトではTemperature(温度)フィールド)内の値に基づいて、炎の高さを変化させることができます。
Cooling Field
有効な時、指定したフィールド(デフォルトはtemperature
)内の値が、コンテナ内の炎の冷却速度の変化に使われます。
Cooling field range
冷却度にマッピングするコントロールフィールド内の値の範囲。
Remap heat cool field
ランプの垂直軸が 冷却度 、水平軸が コントロールフィールドの値 です。例えば、デフォルトのランプの形状(左側が高く、右側が低い)は、Temperature(温度)フィールドが低いほど冷却度が高くなります。
Smoke ¶
煙/すす(Density:密度)の放出を制御するオプション。
Emit Smoke
燃えているオブジェクトから煙/すすの放出を有効にします。
Create Dense Smoke
既に存在する煙の量を考慮せずに、煙をシステムに追加します。これは、濃い爆発や大きな噴煙に適しています。 このオプションがオフの時、煙は各ボクセル内の特定の最大量にまで加算されるだけで、より軽く、より薄い煙になります。
Source
煙が放出される場所。通常では、最適な選択は“Heat”です。“Heat”は、より現実的で、煙がソースの炎を覆い隠さないようにします。
Burn
炎の点火の位置(Burnフィールドのみ)で煙を放出します。
Heat
炎が特定の値にまで冷えた箇所から煙を放出します。
Smoke Amount
追加される煙の量をスケールします。ベースの煙の値は、 Source パラメータで設定したフィールド( Burn または Heat )内の値に依存します。
Heat Cutoff
煙が放出されるHeat(熱)フィールドの値。このオプションは、 Source が“Heat”の時のみ利用可能です。例えば、 Heat Cutoff が0.2
なら、Heat(熱)フィールドが0.2
以下の箇所から煙が発生します。
Blend Amount パラメータは、Heat Cutoffの値よりも上で起こる事を制御します。
Blend Amount
このパラメータを上げると、 Heat Cutoff よりも上の値にフォールオフ(減衰)を追加することで、炎から煙までの変化をより滑らかにします。このオプションは、 Source が“Heat”の時のみ利用可能です。
この値は、 Heat Cutoff 以下で追加される煙の完全な量と最高熱(1.0
)で追加されない煙との間のブレンドを制御します。
0
の値は、 Heat Cutoff よりも上の値には煙を追加しません。
1
の値は、Cutoffポイント以下が完全な煙、それより上から最高熱まで煙の度合いを小さくブレンドします。
Gas ¶
ガスの注入(またはVelocityフィールド内の膨張)を制御するオプション。
Flame Contribution
炎(Heatフィールド)から放出されるガスの量。 この値を大きくすると、炎が存在する領域でもっと強く外側にガスが放出されます。
Burn Contribution
点火(Burnフィールド)から放出されるガスの量。 この値を大きくすると、燃料が燃やされている領域でもっと強く外側にガスが放出されます。
Temperature ¶
炎や点火からの温度の放出を制御するオプション。
Flame Contribution
炎(Heatフィールド)から放出される温度。 この値を大きくすると、炎が存在する領域の空気が熱くなります。
Burn Contribution
点火(Burnフィールド)から放出される温度。 この値を大きくすると、燃焼が燃やされている領域の空気が熱くなります。
Fuel ¶
Fuel(燃料)の影響力を制御するオプション。
Advect Fuel
このオプションがオフの時(デフォルト)、燃料は変化せず、Velocityフィールドから影響を受けません。 このオプションがオンの時、Fuel(燃料)フィールドは、Temperature(温度)、Heat(熱)、Density(密度)フィールドのように移流します。 このオプションをオンにすると、結果をまったく予測できず、さらに計算が遅くなります。
Fuel Speed
燃料がAdvection(移流)によって移動可能な最大速度。
Shape ¶
このタブのパラメータは、炎/煙の形状と進展を制御します。Dissipation(消散)以外のすべてのパラメータが、Velocityフィールドに内部フォースとして影響を与えます。
Smokeオブジェクトの解像度によって、炎/煙内で取得可能なディテール量が決まることを覚えておいてください。 とはいえ、Pyroソルバのほとんどが解像度とは無関係なので、低解像度でも動作し、類似していてさらに詳細な結果で解像度を上げることができます。
Houdiniでは、炎に乱流ノイズを追加する方法が2つあります: Shredding(細断) と Turbulence(乱流) 。
-
Shredding とは、炎に“高周波”ノイズを追加する主な方法です。これはVelocityフィールドを萎縮/伸張させて、舐める(広がっていく)炎を作成します。
-
Turbulence とは、炎に“低周波”ノイズを追加する主な方法です。うねってかき乱れる大きなスケールの動きの炎を作成します。
各Shapingパラメータに対して、Shapingタイプをオンにするチェックボックスと、適用するShapingタイプの度合いを制御するためのスケール係数があります。 以下のパラメータは、各Shapingタイプに対する制御と可視化をするためのパラメータを含んでいます。
上級ユーザ: Pyroソルバは、Smoke Solverと追加のサブソルバを使って実装されているので、Gas Sharpening, Confinement, Shredding, Turbulence, Dissipation, Disturbanceが用意されています。
Note
Vortex Equalizer, Gas Wind Dop , Gas Damp DopなどのDOPを更新する追加のVelocityフィールドを、 Pyro Solverの2番目の入力(“velocity update”)に接続することができます。
Dissipation
Smoke(Density)を時間軸で消失させます。値が低いほど煙の消失が遅くなり、値が高いほど煙の消失が速くなります。
例えば、0.1
の値は、煙の10%が24秒毎に消失することを意味します。1
の値は、すべての煙を即座に消します。
このオペレーションは、乗算を使用して、その効果を1秒以上表現するので、フレーム毎の効果は、想像しているよりももっと小さいかもしれません。 0.75の値は、1秒でフィールドの75%を削除し、フレーム毎にフィールドの5.6%しか削除しません(24FPSの場合)。これは、24フレームにわたって度合いが増していくようになり、最終的に75%の削除になります。
以下のDissipationタブを参照してください。
Disturbance
シミュレーションの全体的な動きや形状を変更することなく、特定のサイズのディテールを煙や炎に取り入れます。
以下のDisturbanceタブを参照してください。
Shredding
Heatフィールドの勾配に基づいてVelocityフィールドを押し下げたり押し上げたりすることで、縞々、分離、“舐める(広がっていく)”タイプの炎を作成します。
非常に高い値は、ランダムでフラクタルな見た目になる傾向があるのに対して、非常に低い値またはShreddingなしは、あまり特徴のないぼんやりした炎になります。
Shreddingは、Temperature(温度)フィールドの勾配に対して動作するので、より低いTemperature Diffusion(温度拡散)は、Shred(細断)がより目立った効果になります。 Temperature Diffusion(温度拡散)が高いほど、その勾配があまり動的にならず、より大きな縞々になります。グリッドの解像度が高いほど、その勾配はよりディテールが細かくなります。
以下のShreddingタブを参照してください。
Turbulence
Velocityフィールドに“Churning(かき乱された)”ノイズを追加します。 一般的には、これは、強力で大きなスケール/低周波のノイズを追加するために使用し、より小さな特徴箇所に対してはShredding(細断)を頼りにするべきです。 これは、特に非常に高速に移動する炎がある時に、その炎にもっと特徴を加えたい時に役に立ちます。
以下のTurbulenceタブを参照してください。
Confinement
存在するVortex(渦巻き)を強化させることで、グリッド解像度によって消えてしまいそうなシミュレーション内の“渦巻き度”を強くします。 値が高過ぎると、シミュレーションが不安定になり爆発する可能性があります。 マイナスの値は、Vortex(渦巻き)を抑えてシミュレーションを平滑化しますが、通常では、より低い解像度のグリッドを使用するほうが良いです。
(Pyroソルバは明示的にVortex(渦巻き)を使用せず、Velocityフィールドから直接、Vortex(渦巻き)の位置を検出することができます。)
ランプを使えば、渦巻き度に基づいてConfinementの度合いを再マップすることができます。例えば、より多くの Confinement をより大きなVortexに適用することができます。
以下のConfinementタブを参照してください。
Dissipation ¶
Control field
有効な時、行使されるフォースが、このフィールドの内容でスケールされます。
Control range
この範囲のControl fieldの値をマッピングします。
Remap dissipation field
ランプの垂直軸は、 Dissipation(消散)の量 、水平軸は、 コントロールフィールドの値 です。 例えば、デフォルトのランプの形状(左側が高く、右側が低い)は、Temperature(温度)フィールドが低いほど煙が速く消失します。
Disturbance ¶
Field To Disturb
Disturbance(擾乱)フォースの適用先となるフィールド。
Cutoff
Threshold Field (デフォルトではdensity
です。 Bindings タブでフィールドを変更することができます)内で、これより大きい値のボクセルを無視します。これにより、煙のエッジにのみ影響を与えることができます。
Use Block Size
このオプションがオンの時、 Block Size パラメータを使用して、ワールド空間単位で擾乱エレメントのサイズを設定します。 このオプションがオフの時、 Locality を使用して、ボクセル単位で擾乱エレメントのサイズを制御します。 Block Size を使用すると、コンテナをスケールする時の問題が回避されます。
Block Size
加えるディテールのワールド単位のサイズ。値が高いほど、より大きな擾乱エレメントが発生します。これは、 Use Block Size がオンの時に利用可能です。
Locality
このボクセルの数が特定の擾乱値にサンプリングされます。値が高いほど、より大きな擾乱エレメントが発生します。これは、 Use Block Size がオフの時に利用可能です。
Control settings ¶
Control Field
有効な時、行使されるフォースが、このフィールドの内容でスケールされます。
Control Influence
エフェクトに対するControl fieldの影響力のスケール係数。0
の値は、フィールドに何の影響を与えません。
Control Range
この範囲のControl fieldの値をマッピングします。
Remap Control Field
Control fieldランプを有効または無効にします。
Control Field Ramp
ランプの垂直軸が エフェクトの強度 、水平軸が Control fieldの値 です。
Bindings ¶
Threshold Field
このフィールド内の Cutoff パラメータ値より高い値を持つボクセルは、かき乱されません。
Shredding ¶
Temperature threshold
この値より低いTemperature(温度)のVelocityフィールドが伸張され、高いTemperature(温度)のVelocityフィールドが萎縮されます。 値が低いほど、Temperature(温度)が低い炎のエッジにShredding(細断)が増えます。
Threshold width
Squash と Stretch がブレンドされる Temperature threshold 周辺の領域の幅。 値が低いほどより荒っぽい Squash と Stretch が行なわれ、値が高いほどより縞々がより滑らかになります。
Squash
Temperature(温度)が Temperature threshold より高い時に、VelocityフィールドをSquash(萎縮)する強さ。
Stretch
Temperature(温度)が Temperature threshold より低い時に、VelocityフィールドをStretch(伸張)する強さ。
Clip gradient
計算されたTemperature(温度)の勾配を、この最大値に制限します。 これは、高い温度が極端に異常なShredding(細断)に変化しないように、シミュレーションが非常に高いTemperature(温度)を持つ時(例えば、爆発している火の玉)に役に立ちます。
Control settings ¶
このタブのコントロールは、フィールド内の値に基づいて、コンテナ内のShredding(細断)の量を変化させることができます。
Control Field
有効な時、行使されるフォースが、このフィールドの内容でスケールされます。
Control Influence
エフェクトに対するControl fieldの影響力のスケール係数。0
の値は、フィールドに何の影響を与えません。
Control Range
この範囲のControl fieldの値をマッピングします。
Remap Control Field
Control fieldランプを有効または無効にします。
Control Field Ramp
ランプの垂直軸が エフェクトの強度 、水平軸が Control fieldの値 です。
Visualization ¶
Visualize shredding
これをオンにすると、この効果によってVelocityフィールドに適用されているフォースがビューポートで可視化されます。
可視化パラメータに関する情報は、Scalar Field VisualizationとVector Field Visualization のノードのヘルプを参照してください。
Bindings ¶
あなたが行なっている事を本当に分かっていない限りは、このタブの値を変更しないでください。
Sharpness ¶
Turbulence ¶
Swirl size
Swirl(旋回)のおよそのサイズをHoudini単位で設定します。
Grain
Turbulence パラメータによってSwirl(旋回)に追加されるノイズのスケール。
Pulse length
ノイズの周波数(時間)。
Seed
ノイズの乱数ジェネレータのシード値。この数を変更することで、Swirl(旋回)が色々とランダムに変わります。
Influence threshold
Turbulence(乱流)が、この値よりも低い密度のボクセルに適用されません(その密度のフィールドは Bindings タブで変更することができます)。 この機能は主にパフォーマンスの最適化です。この値が高いほど、より多くのボクセルをスキップすることができるので、Turbulence(乱流)の実行が速くなる傾向があります。
Turbulence
Swirl(旋回)に追加するノイズの量。
Control settings ¶
Control Field
有効な時、行使されるフォースが、このフィールドの内容でスケールされます。
Control Influence
エフェクトに対するControl fieldの影響力のスケール係数。0
の値は、フィールドに何の影響を与えません。
Control Range
この範囲のControl fieldの値をマッピングします。
Remap Control Field
Control fieldランプを有効または無効にします。
Control Field Ramp
ランプの垂直軸が エフェクトの強度 、水平軸が Control fieldの値 です。
Visualization ¶
Visualize turbulence
これをオンにすると、この効果によってVelocityフィールドに適用されているフォースがビューポートで可視化されます。
可視化パラメータに関する情報は、Scalar Field VisualizationとVector Field Visualization のノードのヘルプを参照してください。
Bindings ¶
あなたが行なっている事を本当に分かっていない限りは、このタブの値を変更しないでください。
Confinement ¶
Control field
有効な時、実行されるフォースが、このフィールドの内容でスケールされます。
デフォルトのコントロールフィールドは、confinement
です。このフィールドは、ボクセル毎に計算されたCurl(渦巻き)を保持します(高いCurlは、小さいVortexを意味します)。
Gas Ramp
フィールドもコントロールフィールドとして役に立つことがあります。
Control Range
この範囲のControl fieldの値をマッピングします。
Control Influence
エフェクトに対するControl fieldの影響力のスケール係数。0
の値は、フィールドに何の影響を与えません。
Visualization ¶
Visualize confinement
これをオンにすると、この効果によってVelocityフィールドに適用されているフォースがビューポートで可視化されます。
可視化パラメータに関する情報は、Scalar Field VisualizationとVector Field Visualization のノードのヘルプを参照してください。
Control field ramp ¶
Remap Control Field
Control fieldランプを有効または無効にします。
Control field ramp
ランプの垂直軸は、 Confinementの量 、水平軸は、 コントロールフィールドの値 です。 例えば、デフォルトのランプの形状(左側が低く、右側が高い)は、Curlが高いほど(つまり、Vortexが小さい箇所)、Confinementをより多く追加します。
Bindings ¶
あなたが行なっている事を本当に分かっていない限りは、このタブの値を変更しないでください。
Relationships ¶
Houdini 12以前では、Pyroソルバは、ソース、ポンプ、シンク、衝突ジオメトリを流体コンテナと関連付けるためにDOPリレーションシップを使用し、 Merge DOPやApply relationship DOPを使ってリレーションシップを作成していました。 Houdini 12以降で推奨されるメソッドは、SOPネットワークを使用してソース、ポンプ、シンク、衝突ジオメトリを作成して、それらをSource volume DOPを使って取り込むことです。
古いリレーションシップメソッドを使用してソース、シンクなどをセットアップしたい場合は、このタブのパラメータを使うことでリレーションシップを有効にすることができます。 デフォルトでは、リレーションシップがオフになっていて、ソルバはリレーションシップデータを無視します。
両方のメソッド(SOPジオメトリを取り込んで、それをソルバの“sourcing”入力に取り付け、さらにDOPオブジェクトリレーションシップをセットアップします)を使用することができます。 リレーションシップが有効な時、ソルバは、両方のメソッドからソース、シンクなどを結合します。
Enable Relationships
オブジェクトリレーションシップデータを使用して、ソース、ポンプ、シンク、衝突ジオメトリをシミュレーションに追加します(もしあれば取り込まれたデータがsourcing入力に接続されます)。
Sources ¶
Tip
ソースリレーションシップを使用する時、ソースオブジェクトが温度を放出していることを確認してください。これは、オブジェクトの Physical Properties タブでセットアップすることができます。
Enable Source Relationship
DOPオブジェクトをソルバへの“source”リレーションシップと一緒に使用します。
Add Source To
ソースの追加先となるフィールド。デフォルトはdensity
です。これは煙を作成します。炎を作成するには、これをfuel
に変更し、ソースオブジェクトの Temperature Physical Property を設定します。
Source Merge
ソースオブジェクトのボリュームがシミュレーションに追加される方法。 Scaleは、追加の度合いを制御します。
Velocity Merge
ソースオブジェクトのVelocityがコンテナのVelocityフィールドに影響を与える方法。 Scaleは、追加するVelocityの度合いを制御します。
Temperature Merge
ソースオブジェクトのTemperature(温度)物理パラメータがコンテナのTemperature(温度)フィールドに影響を与える方法。 Scaleは、追加する温度の度合いを制御します。
Velocity Type
ソースオブジェクト上のVelocityを測定する方法。ソースジオメトリが時間と共に変形(形状変更)しない場合、“Rigid velocity”を使用してください。 ソースジオメトリが時間と共に変形しても、トロポジーが変わらないなら、“Point velocity”を使用してください。
Rigid Velocity
ソースオブジェクトを変形なしとして扱います。
Point Velocity
ポイント履歴を使用して、ジオメトリの変形を許可します。これは、ソースジオメトリのトポロジーが変わらない場合にのみ動作します。
Volume Velocity
オブジェクトのSDF表現を使用します。ジオメトリの変形を許可し、時間軸でトポロジーが固定されている必要はありませんが、接線Velocityを検出することができません。
Pumps ¶
Enable Pump Relationship
DOPオブジェクトをソルバへの“pump”リレーションシップと一緒に使用します。
Velocity Merge
ソースオブジェクトのVelocityがコンテナのVelocityフィールドに影響を与える方法。 Scaleは、追加するVelocityの度合いを制御します。
Velocity Type
Temperature Merge
オブジェクトのTemperature(温度)特性がコンテナのTemperature(温度)フィールドに影響を与えるかどうか。 “Set interior”を選択すると、オブジェクトの内側に相当するTemperature(温度)フィールドの部分がオブジェクトのTemperature(温度)に設定されます。
Collisions ¶
Enable Collide Relationship
DOPオブジェクトをソルバへの“collision”リレーションシップと一緒に使用します。
Temperature Merge
オブジェクトのTemperature(温度)特性がコンテナのTemperature(温度)フィールドに影響を与えるかどうか。 “Collision interior”を選択すると、オブジェクトの内側に相当するTemperature(温度)フィールドの部分がオブジェクトのTemperature(温度)に設定されます。
Restrict Mask to Bandwidth
通常では、衝突マスクSDFは、元の衝突ジオメトリから特定の距離までのみ計算されます。 ある特別なエフェクトのために、例えば、ある物がオブジェクトに到達する前にその物を反応させる必要があるなら、マスクの全範囲を計算するために、これをオフにします。
Use Point Velocity for Collisions
衝突ジオメトリが時間と共に変形(形状変更)しても、トポロジーが変わらない(例えば、ポイントの数が変わらない)なら、これをオンにします。 トポロジーが時間と共に変わるなら、 Use volume velocity for collisions をオンにします。
Use Volume Velocity for Collisions
衝突ジオメトリが時間と共に変形(形状変更)して、トポロジーが変わる(例えば、ポイントの数が変わる)なら、これをオンにします。
Collide with Non-SDF
流体が、他の流体などのGeometry/SDFを持たないオブジェクトに衝突することを許可します。
Extrapolate into Collisions
Density(密度)とFuel(燃料)フィールドをCollision(衝突)フィールドへコピーします。これにより、煙が、SmokeフィールドとCollisionフィールド間に空気の隙間ができないように“粘着性”を持ちます。 また、これは、煙が、移動する衝突フィールドを通過しないようにします。
Sink ¶
Enable Sink Relationship
DOPオブジェクトをソルバへの“sink”リレーションシップと一緒に使用します。
Advanced ¶
通常では、これらのパラメータを変更する必要はありません。
Use OpenCL
特定のマイクロソルバに対してGPUアクセラレーションを有効にします。 この機能は、どのグラフィックカードやOSでも動作するわけではありません。 Side Effects SoftwareウェブサイトのSupportセクションのSystem Requirements情報をチェックしてください。
最新のグラフィックカードを使用し、最新のドライバにアップデートしてください。 OpenCLの動作を検証するために、テストシミュレーションでは、まずは低解像度シミュレーション(例えば、643グリッド)から始めて、 そして、解像度を上げていってください。 OpenCLによる余分なメモリ転送オーバーヘッドは、高解像度(例えば、2563あたり)にのみ価値があります。
単純なSmoke Solverでは、1番目のフレームソースの後のシミュレーションからGPUを使用します。 GPUが有効になっていないマイクロソルバを追加すると、Houdiniは、エラーを出さずに、GPUが必須のCPUコピーを実行します。
最高速にするには、システムがビデオカード間とのコピーを最小限にする必要があります。サンプルファイルでは、コピーを最小化するための方法をいくつか説明しています。 GPUアクセラレーションを使用した高速シミュレーションをセットアップする方法に関しては、OpenCL smoke example fileを参照してください。
非常に高解像度な単純なSmoke Solverシミュレーションが、OpenCLによって速くなるはずです。とはいえ、デフォルトのPyroエフェクトは、自動的により速くなるようにシミュレーションしません。
-
デフォルトのPyroエフェクトは、速い初期再生をするために、非常に低い解像度になる傾向があるので、GPUアクセラレーションがそのオーバーヘッドを大きく上回るほどに十分なボクセルを持ちません。
-
デフォルトのPyroエフェクトは、GPUに対応していない形状ノードを多く持っています。ほとんどのノードのGPUが有効(例えば、Vortex Confinement)であっても、かなりの数のPyroノードがVOPベースであり、GPUが有効ではありません。
-
キャッシュ化は、DOP内ではデフォルトで有効です。
-
サイズ変更は、デフォルトで有効です。サイズ変更は、フィールド変更を管理するためにCPUを通さなければなりません。また、GPUメモリをフラグメント化することで、メモリ不足エラーになることもあります。
Min Substeps
ソルバを強制的に最小数のサブステップで実行します。通常では、Pyroソルバはサブステップなしで非常に上手く動作します。 煙と通常ではないフォースを持っていれば、より安定させるために、このパラメータを上げたい時があります。 通常では、このパラメータを上げると、シミュレーションが遅くなります。
Max Substeps
ソルバを強制的にこの最大数のサブステップを超えないように実行します。通常では、Pyroソルバはサブステップなしで非常に上手く動作します。 煙と通常ではないフォースを持っていれば、より安定させるために、このパラメータを上げたい時があります。通常では、この値を上げると、シミュレーションが遅くなります。
CFL Condition
Max Substeps が1
より大きい時、ソルバは、このパラメータを使用してサブステップの数を決めます。
その“条件”は、サブステップがオブジェクトをこれより多くのボクセルで相互に貫通することができない事です。
値が高いほど、サブステップは、より多くのボクセルだけ煙を動かすことができ、場合によっては、衝突オブジェクトを通過させてしまいます。
Quantize to Max Substeps
有効にすると、フレームを Max Substeps で割ったサブステップが使用されるので、時間が常に1/ Max Substeps の倍数となります。
例えば、 Max Substeps を4に設定し、 CFL Condition が3サブステップだけ必要であれば、 ソルバはフレームを3つのサブステップ(各サブステップは 1/ Max Substeps の倍数に位置します)に分割します。 このサブステップ長の組み合わせは、0.25, 0.5, 0.25(フレームをそれぞれ0-0.25,0.25-0.75,0.75-1の位置に分割)となります。 フレームをサブステップに分割する時、ソルバは、パーティクルの現行状態(パーティクルのサイズとVelocity)も考慮します。
このオプションは、1/ Max Substeps の増分値でファイルにキャッシュ化された入力ジオメトリを再利用するのに役に立ちます。 例えば、ジオメトリが1フレームあたり4サブステップでディスクにキャッシュ化されていれば、そのジオメトリを補間する必要がないように、シミュレーションのサブステップが常に0.25の倍数となるようにすることができます。
Frames Before Solve
オブジェクトを作成した後に、実際のシミュレーションをこの数のフレームだけ遅らせます。 ソーシングは、それらのフレーム内でも発生します。これは、いくつかのSolveノードが特定の初期条件を満たす前に処理できない時に必要になることがあります。
External Forces ¶
Scaled Forces
各ボクセルでのforcescale
フィールドの値によってスケールするフォースのリスト。デフォルトでは、重力以外のフォースすべてです。
Absolute Forces
すべてのボクセルに均一に適用するフォースのリストで、forcescale
フィールドが無視されます。
Rest Field ¶
Enable Rest
Restフィールドを作成します。このフィールドを使えば、時間軸で流体の位置を追跡することができます。Volumeシェーダ内でノイズやテクスチャを正しくマップするには、これをオンにします。
Dual Rest Fields
メインのrest
フィールドから1つ前のrest2
フィールドを作成し、ポップなしで長いシミュレーションを実行することができるようになります。
Frames Between Solve
Restフィールドをリセットする前のフレーム数。
Frame Offset
Restフィールドがリセットされるフレーム。シミュレーションをPreroll(プリロール)している場合、Preroll(プリロール)の後までRestフィールドの初期化を遅延すると、通常では、良い結果が出ます。
Time Scale
Velocityフィールドに反応して、Restフィールドが移動する速さ。1
の値は、Restフィールドを流体に正確に一致させますが、それによって、Restフィールドを縞模様に素早く汚してしまいます。1
未満の値は、実際の流体よりもゆっくりとRestフィールドを動かして、縞模様を減らします。
Projection ¶
シミュレーションの“project non-divergent”ステップは、Velocityフィールド内のDivergence(発散)成分を削除します。
Projection Method
Project Non-divergenceアルゴリズム。“PCG”は、より正確な境界条件を持っていて、衝突オブジェクト内側の計算を回避します。“Multigrid”は、特に大きいまたは高い解像度コンテナに対して非常に高速です。
Note
PCGは、表面サンプリングされたVelocityフィールドでのみ使用します。 中央サンプリングに設定した場合、別の緩和メソッドが使用されます。 中央サンプリングでは、常にMultigridが使用されます。
Multigrid Iterations
Multigrid Project Non-divergenceメソッドは、不正確な境界の実行をします。この数を上げれば、複数回の実行/投影を行なうことができ、それの精度が良くなります。この値を5
より大きくしないでください。
Advection ¶
Advection Type
フィールドの移流に使用するアルゴリズム。
Single stage
Gas Advect DOPと同等です。各ポイントが、一度Velocityフィールドを辿って、新しいボクセル値を探します。
BFECC and Modified MacCormack
2番目の基本Advection(移流)ステージを実行し、あまり分散しない、より鮮明な流体にします。
Clamp Values
BFECC and Modified MacCormack の移流タイプのエラー訂正は、コンテナの外部へボクセル値を動かすことができ、マイナスの密度といった変わったエフェクトを表現することができます。 このパラメータは、この問題を回避するためのメソッドを選択することができます。デフォルトは、“Revert”です。
None
エラー訂正が値をコンテナ外部へ動かさないように試みません。
Clamp
各ボクセルを可能な限り指定した8個の元の値の範囲に制限します。
Revert
エラー訂正されたボクセルが範囲外なら、それを単一ステージの値に戻します。
Revertは、エラー訂正が分析した箇所のチェック柄の画像の乱れを回避することができます。
Blend
移流フィールドがクランプ制限に到達した時に、非クランプ値とクランプ値間で滑らかなブレンドを適用します。 特に Revert オプションでは、小さな量の Blend (例 0.05 - 0.1)を適用すると、フィールドの滑らかさがなくなりますが、 移流フィールド内のグリッド状の乱れを軽減することができます。
Vel Advection Type
Velocityフィールドの移流に使用するアルゴリズム。リストのより上のタイプほど、フィールドの明白なViscosity(粘度)を少なくしますが、エネルギーが増え、サラサラになります。
Advection Method
パーティクルのトレースを制御します。
Single Step
各ボクセルでVelocityを受け取り、そのタイムステップに対して、その方向で単一ステップを作成します。 これが最も高速で、Velocityフィールドの速度とは無関係ですが、大きなタイムステップに対しては壊れ始めます。
Trace
バックトラックは、そのVelocityが更新される前に単一ボクセルよりも大きく動かさないので、より大きなタイムステップが可能です。
Trace Midpoint
Trace と同様ですが、2次の移流を使用して精度を出すので、シミュレーションが遅いです。
HJWENO
非ラグランジュインテグレータ。これは、理論的には分散フィールドのより正確な移流が可能です。残念ながら、サブステップが大きすぎると、爆発します。
Upwind
高速ですが、精度が良くない非ラグランジュインテグレータ。
Trace RK3
Trace と同様ですが、3次の移流を使用して精度を出すので、シミュレーションが遅いです。
Trace RK4
Trace と同様ですが、4次の移流を使用して精度を出すので、シミュレーションが遅いです。
Advection CFL
パーティクルをトレースする時、これは、パーティクルが一回の反復で移動可能なボクセル数を制御します。値が高いほど、トレースと移流が速くなりますが、エラーが多くなります。
Time Scale ¶
Burn Influence
ソルバの Time Scale パラメータがBurnモデルに影響を与える度合い。
Burnモデルのフィールド計算は、うまくスケールせず、スケールを変更した時に予期しない結果が起こるので、これを0
のままに設定してください。
Heat Influence
ソルバの Time Scale パラメータが炎の高さに影響を与える度合い。このパラメータは、ソルバの Time Scale を変更した時に自然な炎の消失が起きるように補正します。
これを1
に設定すると、 Time Scale を変更した時に炎を正しくスケールしますが、その炎が小さくなります。
Collisions ¶
Correct Collisions
衝突オブジェクト内の指定したフィールドを0
に設定します。これによって、移動オブジェクトを通り抜けた漏れを回避することができます。
Fields to Correct
Correct Collisions を有効にすると、このリスト内のフィールドは、衝突オブジェクト内で補正が適用されます。
Feedback Scale
他のオブジェクトにフィードバックフォースを適用するスケール係数。これを0
に設定すると、フィードバックを回避します。
Clear ¶
Fields to Clear
Solveステップの後に指定したタイプのフィールドをゼロにします。これは、シミュレーションの完全な状態を保存した.sim
が余計な情報を持たないようにして、.sim
のサイズと保存時間を軽減します。
None
フィールドをクリアしません。
Static
次のタイムステップで不要なフィールドをクリアします。これらのフィールドのいくつかはガイドを持ち、それらのガイドは、大元のフィールドがクリアされているので、ゼロの値を表示し始めます。
Additional
各計算の後にクリアするスペース区切りのフィールドのリスト。
出力 ¶
First Output
この出力のオペレーションは、このノードに接続している入力に依存します。 オブジェクトストリームがこのノードの入力であれば、その出力も入力と同じオブジェクトを含んだオブジェクトストリーム(しかし、取り付けられたこのノードのデータを持ちます)です。
オブジェクトストリームをこのノードに接続しなかった場合、その出力はデータ出力になります。 このデータ出力をApply Data DOPに接続したり、他のデータノードのデータ入力に直接接続することで、 このノードのデータをオブジェクトや他のデータに取り付けることができます。
ローカル変数 ¶
channelname
このDOPノードはData Optionsページの各チャンネルとパラメータに対して、チャンネルと同じ名前のローカル変数を定義します。 例えば、ノードにPositionのチャンネル(positionx、positiony、positionz)とオブジェクト名のパラメータ(objectname)があるとします。
そのノードには、positionx、positiony、positionz、objectnameの名前を持つローカル変数も存在します。これらの変数は、そのパラメータに対する前の値を評価します。
この前の値は、処理されているオブジェクトに追加されたデータの一部として常に保存されています。 これは、本質的には以下のようなdopfieldエクスプレッション関数のショートカットです:
dopfield($DOPNET, $OBJID, dataName, "Options", 0, channelname)
データがまだ存在しないなら、ゼロの値または空っぽの文字列が返されます。
DATACT
この値は、現在のデータが作成されたシミュレーション時間(変数STを参照)です。 このノードが新しいデータを作成せずに既存データを変更していれば、この値は現在のシミュレーション時間と同じにはなりません。
DATACF
この値は、現在のデータが作成されたシミュレーションフレーム(変数SFを参照)です。 このノードが新しいデータを作成せずに既存データを変更していれば、この値は現在のシミュレーションフレームと同じにはなりません。
RELNAME
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップの名前に設定されます。
RELOBJIDS
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップのAffected Objectsすべてに対するオブジェクトIDをスペース区切りにしたリストの文字列に設定されます。
RELOBJNAMES
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップのAffected Objectsすべてに対するオブジェクト名をスペース区切りにしたリストの文字列に設定されます。
RELAFFOBJIDS
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップのAffector Objectsすべてに対するオブジェクトIDをスペース区切りにしたリストの文字列に設定されます。
RELAFFOBJNAMES
この値は、データがリレーションシップ(例えば、Constraint Anchor DOPがConstraint DOPの2番目、3番目、4番目の入力に接続されている時)に追加されている時だけ設定されます。
この場合では、この値は、データが追加されているリレーションシップのAffector Objectsすべてに対するオブジェクト名をスペース区切りにしたリストの文字列に設定されます。
ST
ノードが評価されるシミュレーション時間です。
この値は、変数Tで表現される現在のHoudiniの時間と同じではなく、DOP Networkの Offset Time と Scale Time のパラメータの設定に依存しています。
STは、シミュレーションの開始時間がゼロになるようになっています。
つまり、シミュレーションの最初のタイムステップをテストする時は、$T == 0
や$FF == 1
を使うのではなくて、$ST == 0
のようなテストを使うのがベストです。
SF
ノードが評価されるシミュレーションフレーム(正確には、シミュレーションタイムステップ番号)。
この値は、変数Fで表現される現在のHoudiniのフレーム番号と同じではなく、DOP Networkパラメータの設定に依存しています。 代わりに、この値は、シミュレーション時間(ST)をシミュレーションタイムステップサイズ(TIMESTEP)で割算した値と同じです。
TIMESTEP
シミュレーションタイムステップのサイズ。 この値は、1秒あたりのユニットで表現した値をスケールするのに役に立ちますが、タイムステップ毎に適用されます。
SFPS
TIMESTEPの逆数。 シミュレーション時間の1秒あたりのタイムステップ数です。
SNOBJ
シミュレーション内のオブジェクトの数。 Empty Object DOPなどのオブジェクトを作成するノードでは、SNOBJは、オブジェクトが評価される度に値が増えます。
固有のオブジェクト名を確保する良い方法は、object_$SNOBJ
のようなエクスプレッションを使うことです。
NOBJ
このタイムステップ間で現行ノードで評価されるオブジェクトの数。 この値は、多くのノードがシミュレーション内のオブジェクトすべてを処理しないので、SNOBJとは異なります。
NOBJは、ノードが各オブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJ
ノードで処理される特定のオブジェクトのインデックス。 この値は、指定したタイムステップで常にゼロからNOBJ-1まで実行されます。 この値は、OBJIDやOBJNAMEなどのシミュレーション内の現行オブジェクトを識別せず、現在の処理順でのオブジェクトの順番を識別します。
この値は、オブジェクト毎に乱数を生成するのに役に立ちます。他には、処理別にオブジェクトを2,3のグループに分けるのに役に立ちます。 この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
OBJID
処理されているオブジェクトの固有ID。 すべてのオブジェクトは、すべての時間のシミュレーション内のオブジェクトすべてで固有な整数値が割り当てられています。たとえオブジェクトが削除されても、そのIDは決して再利用されません。 オブジェクトIDは、オブジェクト毎に別々の処理をさせたい場面(例えば、オブジェクト毎に固有の乱数を生成したい)で非常に役に立ちます。
この値は、dopfieldエクスプレッション関数を使って、オブジェクトの情報を検索するのにベストな方法です。
OBJIDは、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
ALLOBJIDS
この文字列には、現行ノードで処理されているオブジェクトすべての固有のオブジェクトIDをスペース区切りにしたリストが含まれています。
ALLOBJNAMES
この文字列には、現行ノードで処理されているオブジェクトすべての名前をスペース区切りにしたリストが含まれています。
OBJCT
現行オブジェクトが作成された時のシミュレーション時間(変数STを参照)。
そのため、オブジェクトが現在のタイムステップで作成されたかどうかチェックするには、$ST == $OBJCT
のエクスプレッションが常に使われます。
この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJCF
現行オブジェクトが作成された時のシミュレーションフレーム(変数SFを参照)。
この値は、OBJCT変数にdopsttoframeエクスプレッションを使ったものと等価です。この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJNAME
処理されているオブジェクトの名前を含んだ文字列値。
オブジェクト名は、シミュレーション内で固有であることが保証されていません。 しかし、オブジェクト名が固有になるように注意して名前を付けていれば、オブジェクトの識別は、オブジェクトIDよりも、オブジェクト名を指定するほうが簡単です。
オブジェクト名は、同じ名前を持つオブジェクトの数を仮想グループとして扱うこともできます。
“myobject”という名前のオブジェクトが20個あれば、DOPのActivationフィールドにstrcmp($OBJNAME, "myobject") == 0
を指定すると、DOPがその20個のオブジェクトのみを操作します。
この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら空っぽの文字列を返します。
DOPNET
現在のDOP Networkのフルパスを含んだ文字列値。 この値は、ノードを含むDOP Networkのパスを知りたりDOPサブネットのデジタルアセットで非常に役に立ちます。
Note
ほとんどのダイナミクスノードには、そのノードのパラメータと同じ名前のローカル変数があります。 例えば、Position DOPでは、以下のエクスプレッションを記述することができます:
$tx + 0.1
これはオブジェクトをタイムステップ毎にX軸方向に0.1単位分移動させます。
Examples ¶
BillowyTurbine Example for Pyro Solver dynamics node
このサンプルでは、Pyro SolverとSmoke Objectを使って、 タービン(RBDオブジェクト)を通過した煙を渦巻くように放出させる方法を説明しています。 タービンの羽は、Copy、Circle、AlignのSOPでプロシージャルにモデリングしています。
See also |