On this page |
Particle Fluid Object DOPは、DOPシミュレーション内にパーティクル流体オブジェクトを作成します。 このDOPは、新しくオブジェクトを作成して、SPH SolverまたはFLIP Solverで使用するのに必要なサブデータを取り付けます。
Note
FLIP流体に関しては、代わりにFLIP Fluid Objectノードを使用してください。
パラメータ ¶
Properties ¶
Particle Separation
このパラメータは、作成したParticle Fluid Object内のパーティクル間の相互作用の距離を制御します。 この値を下げると、パーティクル間の距離が狭くなり、より効果が強くなりますが、シミュレーションに時間がかかるので、シミュレーションを遅くします。 この値を下げることは、ウェイトが軽いパーティクルが増えることを意味しますが、結局は単位面積あたりでは同じ質量になります。
このオブジェクトの Input Type を Surface SOP に設定すれば、このパラメータは、指定したサーフェス内側に増殖するパーティクルの数も制御します。 つまり、 Particle Separation が小さいほど、パーティクルの数が多くなるので、パーティクルベースの流体の解像度が高くなります。
Particle Radius Scale
パーティクルの半径は、 Particle Separation をこのパラメータでスケールすることで決まります。 この値が高いほど流体のボリュームが大きくなりますが、パーティクルの半径が大きくなるほど平滑化されるので、サーフェスのディテールが少なくなります。
Note
Houdini 12以前のバージョンでは、この値が内部的に2に設定されていました。
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
巨大なオブジェクトをキャッシュ化しないようにすることで、衝突ジオメトリの前のフレームのキャッシュに十分な空き容量を確保することができます。
このオプションは、非常に大きなシミュレーションを扱う時にだけ設定してください。 可能であればより大きなメモリキャッシュを使用する方が望ましいです。
Initial Data ¶
このタブを使用して、パーティクル流体オブジェクトの初期構成を制御します。
Input Type
SOP Path で指定したSOPジオメトリを解釈する方法を決めます。
Surface SOP
このオプションを使用して、指定したサーフェス内側にパーティクルを生成します。
パーティクル間の初期の離隔距離は、 Particle Separation パラメータで決まるので、 Particle Separation パラメータは、作成されるパーティクルの数も決めます。
Particle Field
このオプションを使用して、指定したジオメトリ内の各ポイントに流体パーティクルを生成します。
これを使えば、流体パーティクルに対して独自の初期分散を指定したり、既存パーティクル流体シミュレーションを再開することができます。
また、複数の流体を別々の初期条件と組み合わせることもできます。 このオプションを選択した時、 Particle Separation (パーティクルの離隔距離)は、完全に初期パーティクル分散から独立します。 つまり、 Particle Separation (パーティクルの離隔距離)を変更すると、実質的に、シミュレーションの結果を変更することがあることを意味します。
しかし、 Initialize Fluid Attributes トグルが無効なら、Particle Fluid Objectは取り込んだ流体ジオメトリ上にアトリビュートを作成または変更せず、 それらのアトリビュートが既に存在しているものと想定します。
File
このオプションを使用して、.bgeoファイルから直接、流体シミュレーションを初期化します。 これを使えば、保存したジオメトリデータから簡単にシミュレーションを再初期化することができます。 以下の Fluid Geometry File パラメータを参照してください。
Fetch Data
このオプションを使用して、指定したDOPオブジェクトジオメトリの内側にパーティクルを生成します。
パーティクル間の初期の離隔距離は、 Particle Separation パラメータで決まるので、 Particle Separation パラメータは、作成されるパーティクルの数も決めます。
Initial Configuration
これは、 Input Type を Surface SOP に設定した場合の、流体パーティクルの初期構成を決めます。
Grid
パーティクルがサーフェス内側の軸に平行なグリッド上に生成されます。
Tetrahedral
パーティクルがサーフェス内側の非常に密集した四面体配置内に生成されます。
これは、流体が初期高さをあまり失なわずにコンテナ内側に速く落ち着く必要がある場合に役に立ちます。
SOP Path
流体パーティクルの初期位置を制御するジオメトリ。 この使い方は、 Input Type によって異なります。
Fluid Geometry File
Input Type を File に設定した時の、流体ジオメトリの読み込み先となるファイル。
Note
このフィールドは、ファイルがパーティクル流体オブジェクトの Geometry フィールドから抽出されたジオメトリを含んでいる必要があります。
Tip
長いシミュレーションを実行する時、フレーム毎のパーティクル流体ジオメトリを含んだ.bgeoファイルを保存することが役に立ちます。 このフィールド内のファイルの1つを指定することで、シミュレーションを任意のフレームから再開することができます。
Source Object
データを取り出すオブジェクト。
オブジェクトのマッチングには、グループ名、オブジェクト名、オブジェクトID、ワイルドカード文字を使用することができ、
その結果から特定のオブジェクトを除去するには否定文字(^
)を使用することができます。
もし複数のオブジェクトが一致した場合、Houdiniは、その中で一番小さいオブジェクトIDをソースオブジェクトとして使用します。
Source Data Name
Source Data Name に一致したデータがソースオブジェクトから抽出され、流体パーティクルの初期位置を制御するためのソースジオメトリとして用意されます。
Use Object Transform
このトグルを有効にすると、選択したSOPを含んだオブジェクトのトランスフォームがジオメトリに適用されます。 これは、ジオメトリの初期位置がオブジェクトトランスフォームで定義されている場合に役に立ちます。
Jitter Seed
Input Type を Surface SOP に設定した時、ランダムなジッター(微震)が、作成されるパーティクルに適用されます。 これは、初期流体構成の対称性をくずす効果があります。 このパラメータは、ランダムなジッター(微震)の適用に使用するシード値です。
Jitter Scale
各パーティクルに適用するランダムなジッター(微震)の大きさ。
Initialize Fluid Attributes
このパラメータは、 Input Type を Particle Field に設定した時にのみ意味があります。 この場合では、このパラメータが有効な時、このDOPは、Particle Fluid Solver DOPが流体パーティクルを初期化する時に、 そのParticle Fluid Solver DOPで使用される既存アトリビュート(mass, velocity, densityなど)を新しい値で上書きします。
既存のパーティクル流体シミュレーションのパーティクルジオメトリからパーティクル流体オブジェクトを初期化したいのであれば、このパラメータを無効のままにしてください。 これは、古いシミュレーションを再開しようとした時や、2つ以上のパーティクル流体オブジェクトを同じオブジェクトに結合しようとした時の場合です。
Initialize Velocity
パーティクルのグリッドをソースとした時、それらのパーティクルには既にVelocityがあります。 このオプションは、それらのVelocityを以下の Initial velocity パラメータを使って、独自の一定Velocityで上書きすることができます。
Initial Velocity
このDOPで作成される流体パーティクルの初期Velocity。
Initialize Force and Mass
有効な場合、force
とmass
のアトリビュートを Plain パーティクルタイプに追加します。
それらのアトリビュートは、常に SPH と Grain のパーティクルに追加されます。
Particle Type
Plain
アトリビュートの数が最も少ないです。POPやFLIP流体で役に立ちます。
SPH
SPH流体で必要なPressureと他のアトリビュート。
Grains
アトリビュートを追加して、各ポイントへgain
をインスタンス化するので、ポイント自体には固有の球の集合体を持たせることができます。
これは、Gas Particle Forces DOPで使用されます。
Add Viscosity Attribute
viscosity
アトリビュートが追加されますが、そのアトリビュートへ書き込みされません。デフォルト値が1です。
このアトリビュートによって、シミュレーションに追加された新しいパーティクルが、グローバルな粘度値を評価することができます。
Note
パーティクルのviscosity
は通常では乗数として扱われ、1の値はグローバルな粘度値を使用することを意味します。
Guides ¶
このタブを使えば、パーティクル流体オブジェクトを簡単に可視化することができます。
Show Guide Geometry
パーティクルの可視化を有効または無効にします。
Visualization
パーティクルの Spheres, Sprites, Grain , Particles の可視化を切り替えます。
Spheres の可視化は、ポイント毎にスケールされた球をスタンプします。
Sprites の可視化は、ビルボードスプライトをスタンプします。
Grain の可視化は、ポイント上に任意のジオメトリをスタンプします。
Color
可視化ジオメトリのカラーを制御します。
Scale
これは、ガイドジオメトリの球のサイズを制御します。
Sprite Image
Visualization を Sprites に設定した時に表示するスプライト画像。
Visualization Type
定数カラーではなく、パーティクルアトリビュートのどれかを可視化します。
None
カラーをすべてのパーティクルに使用します。
Speed
アトリビュートの長さを使用します。Velocityの場合、これは速度に相当します。
Direction
アトリビュートを単位球に正規化して、RGBキューブに合うようにスケールします。 その結果、カラーのスペクトルはパーティクルが移動する方向に依存します。
Value
アトリビュートのそのままの値をカラーチャンネルとして使用します。
Visualization Mode
アトリビュートがスカラーアトリビュートの場合、または Visualization Type を Speed にしてアトリビュートをスカラーアトリビュートに変換した場合、 そのアトリビュートをカラースペクトルに再マップすることができます。
Visualization Attrib
カラーとして可視化するPointアトリビュート。
Visualization Scale
可視化範囲をマップする前に、アトリビュートをこのスケールで乗算します。
Detect Range
アトリビュートの最小値と最大値が、この範囲で計算されて使われます。
これにより、範囲の自動境界設定が可能です。
vis_range
Detailアトリビュートは、その計算された範囲に設定されます。
Visualization Range
この範囲が、カラー設定または Visualization Mode によるマッピングのために、0..1の間隔に再マップされます。 -1..1のようにバランスの取れた間隔を使用すれば、 Two-Tone Visualization Mode によるアトリビュートのゼロ交差の検出に役に立ちます。
Physical ¶
このタブを使用して、パーティクル流体オブジェクトの一般的なDOP物理パラメータを制御します。
Bounce
オブジェクトの弾力性。Bounceが1.0の2つのオブジェクトが衝突すると、それらのオブジェクトはエネルギーを消失せずに跳ね返ります。 Bounceが0.0の2つのオブジェクトが衝突すると、それらのオブジェクトは停止します。
Friction
オブジェクトの摩擦係数。0の値は、摩擦なしを意味します。
これは、接線Velocityが衝突と静止接触で影響を受ける強さを制御します。
Dynamic Friction Scale
滑るオブジェクトは、静止しているオブジェクトよりも摩擦係数が低いです。このパラメータは、2つのオブジェクトに関連したスケール係数です。 これは摩擦係数ではなくて、0から1の間のスケールです。
1の値は、動摩擦と静摩擦が同じになることを意味します。0の値は、静摩擦を越えると、オブジェクトが摩擦なしで作用することを意味します。
Density
パーティクル流体の物理密度。
この量は、Particle Fluid Solver DOPで使われ、Pressureフォースを流体内のパーティクルに適用する方法を決めます。 パーティクルの密度が Rest Density を超えた時、パーティクルが引き離し合います。 同様に、パーティクルの密度が Rest Density より低い時は、パーティクルが引き寄せ合います。
Viscosity
このパラメータは、Particle Fluid Solverで使われ、パーティクル流体の流れの濃さと抵抗を制御します。
高い粘度の流体ほど、低い粘度の流体よりも遅く流れ、濃い感じになります。
このフォースをParticle Fluid Solverで適用するには、 Enable Viscosity Force トグルを有効にしなければなりません。
Surface Tension
Particle Fluid Solverによって、流体内のパーティクルに適用される表面張力の大きさを制御します。 表面張力は、サーフェスパーティクルをより密接に流体へ引き込もうとし、その結果、流体の形状がより丸くなります。
このフォースをParticle Fluid Solverで適用するには、Particle Fluid Solverの Internal Forces タブにある Enable Surface Tension Force トグルを有効にしなければなりません。
これはSPH流体にのみ適用します。
Collisions ¶
Volume Offset
パーティクル衝突が起きる衝突ジオメトリからの距離を制御します。
Volume Offset を0に設定すると、衝突が衝突オブジェクトの境界で直接起こります。 これを1.0に設定すると、衝突が衝突ジオメトリから1パーティクルの半径分離れたところで起こります。
Use Point Velocity for Collisions
アフェクターオブジェクトのローカルVelocityは、角速度と線形速度を組み合わせたものです。 しかし、オブジェクトが変形し、ポイントがフレームからフレームへ一致するなら、ローカルPoint Velocityを使用して、変形効果を上手く評価することができます。
Use Volume Velocity for Collisions
アフェクターオブジェクトのポイント数が安定しないのに、そのオブジェクトがボリューム表現を持っていれば、 ボリューム表現内の変化を変形Velocityの評価として使用することができます。
Stored Attributes ¶
このタブを使用して、シミュレーション中に計算して記録する追加アトリビュートを選択します。
Density Field Gradient
各パーティクルポジションで流体密度フィールドの勾配を記録します。
これは、このベクトルの大きさは、流体表面から遠いパーティクルよりも、流体表面に近いパーティクルの方が大きいので、流体表面に近いパーティクルを特定するのに役に立ちます。
Pressure Force
各パーティクルで計算された最後のPressure(圧力)フォースベクトルを記録します。
Neighbor Velocity
各パーティクルに対して、これはパーティクルの近接すべての平均Velocityを記録します。
パーティクルのVelocityとその近接Velocityを比較することで、流体内の特定の乱流の領域を区別することができます。
Coordinate System ¶
このタブを使用して、流体に沿って動く単純な座標系を生成します。
この座標系は、後に流体表面上に転送することができます。
その座標系は、時間と共にそれ自体を再初期化するように設計されています。
そのため、常に2つの異なる異なる座標系を記録し、さらに、その2つの座標系間をブレンドするブレンドアトリビュートを記録しています。
そのブレンドの値は、coordinate_transition_state
Detailアトリビュートに記録され、一方で、2つの座標系がcoordinate1
とcoordinate2
のPointアトリビュートに記録されます。
各ポイントに対して、そのブレンド値を s 、それらの座標系を c1 と c2 として定義すると、そのポイントのブレンドした座標は、 s c1 + (1 - s) c2 で定義されます。
Create Coordinate System
このオブジェクトの座標系を有効または無効にします。
Coordinate Transition Period
自由に移動する流体パーティクルのセット上の任意の座標系は徐々に離れていく必要があるので、その座標系が周期的にそれ自体を再初期化するように設計されています。 ここでは、その移行期間を指定します。
Coordinate Transition Length
各移行期間中に、その座標系がある期間で一定のままになり、指定した移行長さに対して再初期化された座標系に移行します。 このパラメータを使用して、その移行長さを制御します。
Coordinate Scale
デフォルトでは、すべての流体座標が[0,1]
の範囲にあり、その流体の初期境界ボックスを基準に定義されます。
このパラメータを使用して、各軸の範囲を[0,1]
から[0,s]
へスケールします。ここでは、そのsを指定することができます。
Override Bounding Box
デフォルトでは、すべてのパーティクル座標系が、流体の初期境界ボックスを基準に決められます。 この境界ボックスは、空間的に繰り返されて、この境界ボックスから流れ出るパーティクルを収容します。 このパラメータを使用して、異なる境界ボックスを基準に座標を定義します。
Minimum Bound
ユーザ定義座標境界ボックスの最小境界。
Maximum Bound
ユーザ定義座標境界ボックスの最大境界。
Grains ¶
このタブを使用して、各パーティクル位置でインスタンス化されるGrainジオメトリを選択します。
Custom Grain
カスタム定義GrainSOPの使用を有効または無効にします。
Grain SOP Path
Custom Grain が有効な時、カスタムGrain SOPのパスをここで定義します。 カスタムGrainは、リジッドに接続された球のセットでなければなりません。
Grain Shape
このオプションは、デフォルトのGrain形状をいくつかリストします。
Grain Radius
Grainのサイズを制御します。
Sphere Radius
Grainを構成する球のサイズを制御します。
ローカル変数 ¶
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 ¶
このサンプルでは、Particle FluidとRBDオブジェクトを組み合わせることで、相互に影響し合うようにする方法を説明しています。 その結果、球が浮きます。
See also |