On this page | |
Since | 11.0 |
Source Apply DOPは、DOPと外部オブジェクトを、取り付けられた流体シミュレーションのソースに変換します。 このDOPには、オブジェクトを流体ソースに変換する方法を操作する多くのポスト処理オプションも含まれています。
このDOPの使い方が2通りあります。 1つ目が、2番目の入力を指定する方法です。この入力には、外部オブジェクトを取り込むStatic Objectを指定することが多いです。 2つ目が、Non-Wired Sourcesパラメータでオブジェクトを指定する方法です。
どちらの場合でも、同じ処理手順が使用されます。 まず最初に、オブジェクトが符号付き距離フィールド(SDF)に変換されます。 そして、そのSDFは、各ボクセルのソース量を記録した0..1のFogボリュームに変換されます。 この変換は、最初に Feathering タブを使って、サーフェスまでの距離のルックアップで行なわれます。 次に、オプションのノイズを追加することができます。 最後に、Pointアトリビュートをその値で乗算して、さらに放出をマスクします。
パラメータ ¶
Relationship
名前に関係なく、Source Apply DOPは、ポンプやシンクのような他のフィールドの効果にも適用することができます。
Emission Amount
ソース効果の全体的なスケール。
Source ¶
Source Apply DOPは、計算された放出情報を記録するためのDOPオブジェクトを新しく作成します。 Source タブは、SDFの派生元と一緒に、このオブジェクトの作成を制御します。
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
巨大なオブジェクトをキャッシュ化しないようにすることで、衝突ジオメトリの前のフレームのキャッシュに十分な空き容量を確保することができます。
このオプションは、非常に大きなシミュレーションを扱う時にだけ設定してください。 可能であればより大きなメモリキャッシュを使用する方が望ましいです。
Source Object List
これは、ソースとして使用すべき同じシミュレーション内のDOPオブジェクトのリストです。
SOP Path, OBJ Path
元のソースとして使用するジオメトリを指定します。
このジオメトリがアニメーションしている場合、 SDF Generation タブの Use Deforming Geometry を設定しなければなりません。
Use Object Transform
選択したSOPを含んだオブジェクトのトランスフォームをジオメトリに適用します。 これは、オブジェクトレベルでソースジオメトリにスケールが適用されている必要があります。
Field Reference
ソースグリッドに対する適切なグリッドスケールを計算するには、流体オブジェクトのパスが必要です。 デフォルトのPythonエクスプレッションは、1番目の入力を検索することで、このパスを見つけます。
Guides ¶
Display Geometry
これをオフにすることで、ソースジオメトリを非表示にすることができます。
Density
各ボクセルで発生する放出の量を制御する最終的なDensity(密度)フィールド。
SDF
密度の計算元となる符号付き距離フィールド。 これを表示すれば、SDF Generationプロセスがどのように動作しているのか判断するのに役に立ちます。
SDF Generation ¶
このステージは、ソースジオメトリを受け取り、それをSDFに変換します。
Copy SDF Volume from Source Object
ソースがStatic Objectようなものであれば、そのソースには既に独自のSDF生成パラメータがあります。 そのため、そのSDFを直接取得することができます。
ソースがSOP Pathであれば、これは符号付き距離フィールドをSOPの空間内または流体空間内で構築するかどうか制御します。 特に、分割数を上書きしたい場合やProxy Volumeを使用したい場合は、Copy SDFを必ず設定してください。
Use Deforming Geometry
ソースがアニメーションしている場合、SDFをフレーム毎に再構築しなければなりません。
Build From Particles
SDFを構築しようとするのではなく、パーティクルポイントから直接Fogフィールドへ書き出します。
Note
このモードでは、 Feathering が無効になります。
Build SDF ¶
Collisions ¶
Volume ¶
Use Volume Based Collision Detection
このオプションを有効にすると、RBD solverが衝突検出に対して、このオブジェクトのボリューム表現を使用します。
ボリューム表現は、一時的な相互貫通に寛容的なので、非常に高速な衝突検出と非常に強固な結果になります。 このデメリットは、ボリューム表現を使用すると、グリッドや中が空洞の球を表現することができないことです。
このトグルをオフにすると、衝突検出がボリュームベースではなくジオメトリベースになります。 この場合、衝突コードは、時間軸で移動するオブジェクトの軌跡を追跡して、衝突を判定します。 これにより、ボリュームベースの衝突検出よりも正確な結果を取得することができます。 これを動作させるには、 Cache Simulation を必ずDOPネットワーク上で有効にしてください。
Collision Guide
衝突検出に使用される内部表現が可視ジオメトリに変換されます。 これは、衝突検出での問題をデバッグするのに役に立ちます。
このパラメータは、ガイドジオメトリのカラーを制御します。
Mode
Ray Intersect
ジオメトリと光線の交差を使用して、ジオメトリの正確なボリューム表現を作成します。
Meta Balls
光線を使用してポイントが内側/外側を判断するのではなく、メタボールフィールドを評価します。
これは、メタボールだけで構成されているジオメトリの Laser Scanning を無効にして使用してください。
Implicit Box
ジオメトリの境界ボックスを計算して、その境界ボックスを正確に満たすボリューム表現を作成します。 このボックスは常にDOPオブジェクトのローカル空間と座標軸が平行で、Positionデータで設定します。
Note
Use Object Transform は、オブジェクトトランスフォームをジオメトリのトランスフォームにベイクして、 Position Data をワールド空間のままにします。 これをオフにすると、オブジェクトトランスフォームが Position Data に送られ、オブジェクトのローカル空間の向きが変わります。
Implicit Sphere
ジオメトリの境界球を計算して、その境界球を正確に満たすボリューム表現を作成します。
Implicit Plane
ジオメトリの境界ボックスを計算して、その一番小さい軸方向にそのボックスを分割するボリューム表現を作成します。 その平面より下側がすべて内側、上側がすべて外側になります。
このモードは、グランド平面または移動不可の壁を作成するのに主に役に立ちます。
Minimum
サーフェスまたはカーブまでの距離を使用します。 Offset Surfaceが0なら、ボリュームは作成されません。 プラスのOffset Surfaceはオブジェクトのサーフェスからオフセットしたボリュームを作成します。 これは、薄いオブジェクトまたはワイヤーを実際のソリッドに変換するのに役に立ちます。
Volume Sample
このモードでは分割数が無視され、その代わりに、ジオメトリ内の1番目のボリュームまたはVDBのプリミティブから分割数が計算されます。 ソースボリュームのボクセルサイズに合うように分割数が計算されます。 ボリュームプリミティブはそのままサンプリングされて、符号付き距離フィールドとして扱われます。 これは、ソースがIso OffsetまたはVDB From PolygonsのSOPの出力であることが前提です。 正しい符号付き距離フィールドでない場合、RBD衝突で異常な事が起きる場合があります。
Division Method
Non Square を選択した場合、指定したサイズが指定したボクセル分割数に分割されます。 それらのボクセルの辺が同じになっていないと、歪んだシミュレーションになる可能性があります。
軸を指定した時、その軸が分割数を決める基準と見なされます。 選択した軸のサイズで均一に分割することでボクセルサイズが決まります。 他の軸の分割は、必要なサイズに合うように一番近い整数の複数値に調整されます。
最終的には、非選択の軸方向のサイズが均一なボクセルサイズになるように変わります。 Max Axis オプションを選択した場合、その最大サイズの軸が使用されます。
By Size を指定した時、 Division Size によって、指定したサイズのボックスに合うボクセル数が計算されます。
Divisions
このオブジェクトのボリューム表現の作成を制御します。 これは、目的のジオメトリの特徴をキャプチャーするのに十分な細かさに設定してください。
Uniform Divisions
ボクセルグリッドのキー軸の解像度。これは、1つのパラメータで全体の解像度を制御して、均一なボクセルを保持することができます。 Uniform Voxels オプションには、参照として使用する軸を指定します。通常では、最大軸を使用するのは一番安全です。
Division Size
ボクセルの明示サイズ。ボクセル数は、このサイズのボクセルの整数の数を、指定した境界に合わせることで計算されます。
Laser Scan
Laser Scanモードでは、主軸に沿って光線を送信することでボリューム表現が構築されます。 一番近い交差と一番遠い交差だけが使用されます。 それらの2つの交差のポイント間の空間を内側、それ以外を外側として分類されます。
Laser Scanモードは、法線の定義が不完全だったり、自己交差があったり、完全に密閉していないジオメトリでも動作します。 このデメリットは、内部の特徴を検出できないので、それを表現することができないことです。
Laser Scanモードをオフにしても、主軸に沿って光線を送信することでボリューム表現がまだ構築されます。 とはいえ、すべての交差が検索されます。各交差のペアをテストして、そのセグメントが内側か外側か確認します。 これは、上手く定義されたジオメトリの法線(つまり、自己交差のないマニフォールド)と密閉したジオメトリが頼りになります。 しかし、穴のある複雑な形状を正確に表現することができます。
Fix Signs
非常にうまく作成されたジオメトリでさえも、不正確な数値が間違えた符号を選択してしまう可能性があります。 このオプションは、不正な符号を探すためにボリューム表現をポスト処理します。 通常では漏れ口を塞いだり、穴を埋めることでそれらの符号を正しくします。
これは時間がかかり、問題なくボリューム表現が生成されるのがわかっていれば、オフにすることができます。
Force Bounds
Fix Signs メソッドだけが、平滑化し、通常では符号反転を軽減します。 しかし、不正な符号の領域がボリューム表現の境界で安定化させることができます。 このオプションは、境界上のすべてのボクセルを外側としてマークします。 Fix Signs メソッドは、間違えて安定化させることはほぼないです。
Invert Sign
中が空洞のボックスが欲しい場合、1つのメソッドが他のボックスの内側に1つのボックスを構築して、 Laser Scan を使用しないことです。 より強固なメソッドは、内側のボックスを指定して、符号反転を使用することです。 これは、ボックスの外側のすべてを内側と見なし、より強固な Laser Scan メソッドを使用することができます。
Sign Sweep Threshold
Fix Signs 処理が完了した後でも、SDF内に不正な領域がまだ存在している可能性があります。 大きなブロックは、安定化されて、SDFから突き出る可能性があります。 2番目のSign Sweep Passを実行すれば、それらのブロックの軽減を試みることができます。
Sign Sweep Thresholdは、不正と見なされる符号の変化に対して起こす飛躍の大きさを制御します。 SDFの値が、この閾値とセル幅を乗算した値よりも大きく変化した場合、その値が無効な符号の変化と見なされます。 元のジオメトリは、光線と交差することで内側/外側が判断され、その結果を使用して、どの符号が正しいのか判断されます。 正しい符号は、モデルを通じて伝搬します。
Max Sign Sweep Count
Sign Sweepは、符号が反転しなくなるまで(つまり、すべての変化が閾値以内にある)または、この最大値に到達するまで繰り返されます。 Sign Sweep Thresholdが非常に小さいと、その処理が収束しなくなることがあります。 反対に大きいと、非常に速く収束します。
Offset Surface
符号付き距離フィールドをオフセットする一定量。 これを使えば、オブジェクトを若干膨張または収縮させることができます。 オリジナルのサイズから大きく膨張させることはしないでください。そうしないと、それが符号付き距離フィールドの境界ボックスに当たってしまいます。
Tolerance
これには、SDFを計算する時の光線の交差に使用する許容値を指定します。 この値は、ジオメトリのサイズで乗算され、スケールには依存していません。
Proxy Volume
SDFの計算をするベースジオメトリの代わりに使用するジオメトリ。 Volume Sample モードの場合、このジオメトリにはボリュームまたはVDBを指定して、キャッシュデータに対してより良い制御をすることができます。
File Mode
このオブジェクトのボリュームデータに対するオペレーションを制御します。
Automatic
指定した名前のファイルが既に存在すれば、そのファイルがディスクから読み込まれます。 そうでないなら、このページ上の他のパラメータに基づいてボリュームが作成され、指定したファイルがディスクに作成されます。 このファイルは、アプリケーションを終了しても自動的に削除されません。
Read Files
指定したファイルがディスクから読み込まれます。
Write Files
このページ上の他のパラメータに基づいてボリュームが作成され、指定したファイルがディスクに作成されます。
No Operation
ファイルの読み込みまたは書き込みを行ないません。このページ上のパラメータは、ボリュームの作成に使用されます。
File
上記の File Modes の選択に応じてアクセスするファイルの名前。 このファイルは常に.simdataファイルフォーマットです。.bgeo拡張子で保存しても、.bgeoファイルに保存 されません 。
Surface ¶
Surface Representation
ボリュームに対する衝突ポイントやボリュームに対する衝突エッジを選択します。
オプションで、nopointvolume
とnoedgevolume
のPointアトリビュートをジオメトリに追加することで、個々のポイント/エッジが、ボリュームオブジェクトに対する衝突検出に関わらないようにさせることができます。
端点を無効にすれば、そのエッジも無効になります。
Convert To Poly
これは、ジオメトリ内のプリミティブ(例えば、球)からポリゴンへの変換を有効にします。 ポリゴンのみが衝突検出に使用されます。
Triangulate
このフラグをオンにすると、ジオメトリ内のポリゴンが三角形化されます。
LOD
これは、三角形化のLevel Of Detailを制御します。UとVの方向でのポイント密度を指定するために使用します。
Add Barycenters
各ポリゴンの重心をポイントまたはエッジ(プリミティブの頂点と接続)として衝突検出に含めることができます。
Particle to Field ¶
Attribute
Sourceフィールドに蓄積するパーティクルアトリビュート。 無効な場合、各パーティクルが1.0のアトリビュート値を持っているものと見なされます。
Scale by Voxel Volume
パーティクル分布をボクセルボリュームで分割します。それによって、フィールドの解像度とは無関係に追加された合計を正規化します。 ボリュームが小さいことがよくあるので、おそらく、放出量を大きく下げるか、またはこのオプションを無効にする必要があることでしょう。
Feathering ¶
SDFフィールドが構築された後、次にそのフィールドがDensityフィールドに変換されます。 Featheringは、サーフェスまでの距離のフォールオフ(減衰)を制御することができます。
Note
Featheringは、 Build From Particles が有効な場合には無効になります。
Treat SDF as Fog
Sourceオブジェクトに応じて、SDFが適切な符号付き距離フィールドにならず、既に0-1のFogボリュームになることがあります。 これは、他の煙シミュレーションまたはFogボリュームのSOPからソースする時に起こります。 それらの場合、Featheringのルックアップが通らないように、SDF Generationモードを Volume Sample に設定し、 Treat SDF as Fog を有効にしてください。
Hollow Interior
デフォルトでは、ボリューム内のボクセルは、フルエミッターとしてマークされます。 しかし、サーフェスからの放出効果が欲しいのであれば、内部に対してフォールオフカーブを追加することもできます。
Distance, Feather
Distance は、フォールオフカーブの長さです。 Feather Curve は、サーフェスまでの距離で密度がどのようにフォールオフ(減衰)するのか定義します。 左側がサーフェスの位置、右側がサーフェスから一番遠い位置を意味します。
Noise ¶
Add Noise
ノイズは、SourceフィールドをNoiseフィールドで乗算します。これは、ソリッドオブジェクトをスイス・チーズのオブジェクトに変換し、よりゴチャゴチャした面白い挙動になることがよくあります。
Amount
この計算の結果と元のソースを混ぜる度合い。 0の値は、ノイズなしと同じになり、0.5はそれぞれ50%をブレンドし、1は、再マップされたノイズ値を最終的なソース値として使用します。
Frequency-Flow Roughness
これらは、Anti-Aliased Flow Noise VOPを制御します。
Amplitude
0から1への変化の荒さ。 高いコントラストは、保持と破棄の領域間の境界をシャープにします。 低いコントラストは、滑らかな変化になります。
Remap Noise
ソース値を再マップします。これにより、ソースのボクセルから非ソースボクセルまでの変化のフォールオフの再マップが可能になります。 別の方法では、丘のような形状のランプを構築することで、ソリッド版ではなくソース形状の輪郭を抽出することができます。
Attribute ¶
Multiply by Attribute
最後に、計算された密度をPointアトリビュートで乗算することができます。 一番近いポイントがマップ計算に使用されます。 Paint SOPを組み合わせれば、放出領域を簡単にペイントすることができます。
Attribute
スケールに使用する浮動小数点アトリビュートの名前。
Max Extrapolation
一番近いポイントの値を使用するのではなく、一番近いポイントからこの値より遠くにあるボクセルがゼロになります。 これは、膨大な数のポイントやSparse(疎)ボリュームに対して効率を上げるのに重要です。
Physical ¶
Temperature
ソースに対するこのオブジェクトの有効温度。
Override Velocity
ソースを明示Velocityに設定します。
Note
Fluid Solverの Sources タブの Velocity Type が Point Velocity を使用するように設定した場合には、そのVelocity値を使用してください。
v
アトリビュートが存在しなかった場合、フレームとの差分でVelocityが計算されます。
v
アトリビュートが存在した場合、そのVelocityが前のフレームを上書きします。
v
アトリビュートを任意のソースタイプに追加することができ、そのVelocityは、そのポイントの差分ではなく、v
アトリビュートを使用します。
出力 ¶
First
ソースの追加先である流体オブジェクト。
Second
ソースとして使用するオプションのDOPオブジェクト。
ローカル変数 ¶
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単位分移動させます。