On this page | |
Since | 18.0 |
このDOPは、Smoke Solver (Sparse)またはPyro Solver (Sparse)によって進展させることが可能な適切に構成されたフィールドを含んだSmokeオブジェクトを作成します。 このオブジェクトは、空っぽの状態で始まり、Volume Source DOPを使って煙または熱を取り込むことができます。 詳細は、Pyroのソース設定と流体のソース設定を参照してください。
パラメータ ¶
Properties ¶
Enable Sparse Solving
Sparse Smokeシミュレーションを実行する場合は、このパラメータを必ず有効にしてください。 詳細は、ソルバのヘルプのSparsity(疎らさ)セクションを参照してください。
Note
基本的に、このオプションは、生成されるフィールドに対して特定のボクセル解像度制限を強制し、active
ステンシルフィールドを作成します。
Two Dimensional
2次元のシミュレーションを実行したいのであれば、このオプションを有効にします。
Note
2次元の煙シミュレーションは、Sparseモードで実行することができません。
Voxel Size
各シミュレーションボクセルのサイズ。ボクセルサイズが小さいほど、シミュレーション解像度が高くなります(より細かくなるので遅くなります)。
Velocity Voxel Scale
この乗数が Voxel Size に適用されて、Velocityボクセルのサイズが決まります。 このパラメータの値が大きいほど、低解像度のVelocityフィールドになるわけなので、 シミュレーションが速くなりますが、動きのディテールが粗くなります。
Note
Velocity Voxel Scale が1
より若干大きいだけだと、シミュレーションが高速になる可能性は低いです。
実際に、遅いサンプリングが原因でシミュレーションが遅くなってしまう場合があります。
パフォーマンスが良くなる分岐点となるのは、Velocityフィールドのデータ削減によって遅いサンプリングを十分に相殺できる時です。
そうするには、 Velocity Voxel Scale を2
に近い値(または、2
より大きい値)に設定してください。
Center
シミュレーションコンテナの開始位置。 Max Size を有効にすると、このパラメータによって、その境界ボックスの中心の位置も決まります。
Note
シミュレーションコンテナは、空っぽの状態で始まり、初期ソースによってサイズが変更されます。 このサイズ変更の負荷を最小限に抑えるために、 Center を初期ソースとほぼ同じ領域内に指定してください。
Max Size
デフォルトでは、シミュレーションコンテナは、煙と炎のシミュレーションの進展に合わせて大きくなります。 このオプションを有効にすると、そのコンテナが大きくなる最大サイズを設定することができます。
Note
指定したサイズの軸平行の境界ボックスは、 Center を基準に配置されて、その最大コンテナサイズを表示します。 この領域は、 Guides タブの Visualization サブタブの Domain を有効にすることで、視覚化することができます。
Note
実質的な最大コンテナサイズは、 Boundary Conditions セクションの設定でカットされた領域よりも小さくなります。
Boundary Conditions ¶
このセクション内のパラメータは、各軸に沿って特定のレベルで境界を閉じることができます。 閉じた境界は、ガスが入り込めない侵入不可な硬い壁として作用します。 シミュレーションに地面コリジョンオブジェクトを追加するよりも、境界を閉じた方が正確で効率的です。
Tip
Guides タブの Visualization サブタブの Domain を有効にすることで、各軸方向で閉じられた領域を確認することができます。
Treat X as
X
軸方向の特定の位置で硬い壁を作成することができます。
ここには、 Open (壁なし)、 Closed Below (指定した値 未満 のX
座標がガスの範囲外となります)、 Closed Above (指定した値 より大きい X
座標がガスの範囲外となります)を指定することができます。
Treat Y as
Y
軸方向の特定の位置で硬い壁を作成することができます。
ここには、 Open (壁なし)、 Closed Below (指定した値 未満 のY
座標がガスの範囲外となります)、 Closed Above (指定した値 より大きい Y
座標がガスの範囲外となります)を指定することができます。
Treat Z as
Z
軸方向の特定の位置で硬い壁を作成することができます。
ここには、 Open (壁なし)、 Closed Below (指定した値 未満 のZ
座標がガスの範囲外となります)、 Closed Above (指定した値 より大きい Z
座標がガスの範囲外となります)を指定することができます。
Creation ¶
Creation Frame Specifies Simulation Frame
作成フレームが、グローバルのHoudiniフレーム($F
)またはシミュレーション固有のフレーム($SF
)のどちらを参照するか決めます。
後者は、DOP Networkレベルのオフセット時間とスケール時間の影響を受けます。
Creation Frame
オブジェクトが作成されるフレーム番号。 現行フレーム番号がこのパラメータの値と同じ時にだけオブジェクトが作成されます。 つまり、DOP Networkは、指定したフレームでのタイムステップを評価しなければならないことを意味します。そうしないとオブジェクトが作成されません。
例えば、この値を3.5に設定すれば、必ずDOP Networkがフレーム3.5でタイムステップを持つように、DOP Networkの Timestep パラメータを1/(2*$FPS)
に変更しなければなりません。
Number of Objects
単一オブジェクトを作成するのではなく、いくつかの同一オブジェクトを作成することができます。
$OBJID
エクスプレッションを使用することで、各オブジェクトのパラメータを個々に設定することができます。
Object Name
作成されるオブジェクトの名前。 これはGeometry Spreadsheet Viewで表示される名前で、このオブジェクトを外部から参照するために使用します。
Note
同じ名前でたくさんのオブジェクトを持つことができますが、それでは参照の書き込みが困難になるので、名前には$OBJID
のような変数を使用することを推奨します。
Solve On Creation Frame
有効にすると、新しく作成されたオブジェクトは、そのオブジェクトが作成された時のタイムステップでソルバによって計算されます。
このノードが、シミュレーションの初期状態でのオブジェクトを作成するのではなく、シミュレーション中にオブジェクトをコピーするのであれば、通常では、このパラメータをオンにします。
Allow Caching
巨大なオブジェクトをキャッシュ化しないようにすることで、衝突ジオメトリの前のフレームのキャッシュに十分な空き容量を確保することができます。
このオプションは、非常に大きなシミュレーションを扱う時にだけ設定してください。 可能であればより大きなメモリキャッシュを使用する方が望ましいです。
Guides ¶
煙シミュレーションを定義した各フィールドを色々な方法で視覚化することができます。 これらの視覚化オプションの挙動に関する詳細は、Multi-Field Visualization、Scalar Field Visualization、Vector Field Visualizationのヘルプを参照してください。
シミュレーションコンテナの境界は、 Domain を有効にすることで表示することができます。 Max Size を有効にすると、ビューポート内にこの範囲を表示したボックスが描画されます。 さらに、それぞれ閉じられた境界は、シミュレーション側の 方 を指した矢印を描画して表示されます。
Fields ¶
Create Flame Field
このパラメータを有効にすると、作成されるオブジェクトにflame
フィールドが含まれるようになります。
このフィールドは、燃焼や発光を伴うPyroシミュレーションで使用されます。
シミュレーションにflame
フィールドが不要であれば、ほんの少しの最適化として、このオプションを無効にすると良いでしょう。
Velocity Sampling
Velocityフィールドのサンプリングパターンを制御します。 Center サンプリングは、高速にシミュレーションを生成しますが、いくつか不具合(これは、このソルバの Hourglass Filtering コントロールで修正することができます)が発生することがあります。 Face サンプリングは、遅いですが、何も不具合を起こしません。
Wind Tunnel Direction
このパラメータには、デフォルトの外部値に加えるVelocityフィールドの初期状態を指定します。 このパラメータは、まるで強い均一な風の力で煙が影響を受けているかのように自然な流れの方向に煙を動かすように設定することができます。
Divergence Sampling
divergence
フィールドのサンプリングパターンを制御します。このフィールドを使用することで、Velocityフィールドに膨張/収縮を加えることができます。
Center サンプリングは、一般的にはシミュレーション時間における流体のフィールドのどれかから膨張を追加する場合に高速です。
Velocity Sampling が Center に設定されていて、divergence
フィールドへのすべての修正がVolume Sourceによって行なわれている場合(Pyro Solverの Add Expansion を無効にした場合も含む)、 Divergence Sampling を Corner に設定した方が高速です。
Create Cd and Alpha Fields
このオプションを有効にすると、Cd
フィールドとAlpha
フィールドがSmokeオブジェクトに追加され、それぞれ煙のカラーとカラー量を格納します。
Pyro Solverがこれらのフィールドの存在を検知すると、シミュレーションが進むにつれてそれらのフィールドを発展させていきます。
Note
Cd
を Multi Field ビジュアライゼーションの Diffuse Field として使用することで、そのカラーで煙を表示することができます。
Default Color
このパラメータには、煙のデフォルトカラーとCd
フィールドの初期状態を指定します。
Default Alpha
Alpha
フィールドの初期値(および最小値)を制御します。
直感的にシミュレーションの開始時に流体に Default Alpha 分の着色量の Default Color が含まれます。
Position Data Path
Positionデータの相対パス。 これは、流体ボックスをトランスフォームさせるのに使用され、それによって軸平行でない流体シミュレーションを行なうことができます。 Sparseソルバはメモリを効率良く使用するので、たとえ煙が斜めに吹いている状況であっても、たいていの場合、これを使用する必要はありません。
出力 ¶
First
このノードで生成されたSmokeオブジェクト。
ローカル変数 ¶
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単位分移動させます。
See also |