On this page | |
Since | 12.0 |
FLIP流体シミュレーションに関する詳細は、パーティクル流体シミュレーションを参照してください。
Particle Separation を上げると解像度が下がり、シミュレーションの処理が速くなります。
パラメータ ¶
Properties ¶
Particle Separation
このパラメータは、作成したParticle Fluid Object内のパーティクル間の相互作用の距離を制御します。 この値を下げると、パーティクル間の距離が狭くなり、より効果が強くなりますが、シミュレーションに時間がかかるので、シミュレーションを遅くします。 この値を下げることは、ウェイトが軽いパーティクルが増えることを意味しますが、結局は単位面積あたりでは同じ質量になります。
このオブジェクトの Input Type を Surface SOP に設定すれば、このパラメータは、指定したサーフェス内側に増殖するパーティクルの数も制御します。 つまり、 Particle Separation が小さいほど、パーティクルの数が多くなるので、パーティクルベースの流体の解像度が高くなります。
Particle Radius Scale
パーティクルの半径は、 Particle Separation をこのパラメータでスケールすることで決まります。 この値が高いほど流体のボリュームが大きくなりますが、パーティクルの半径が大きくなるほど平滑化されるので、サーフェスのディテールが少なくなります。
Note
Houdini 12以前のバージョンでは、この値が内部的に2に設定されていました。
Grid Scale
パーティクルの距離間隔からAdvection(移流)グリッドの分割サイズを計算するために使用されるスケール係数。 デフォルト値が、ほとんどのアプリケーションに適しています。
Collision Separation
衝突関連のフィールドに対する分割サイズ。
衝突フィールドを他のシミュレーションフィールドよりも高い解像度にするのに役に立ちます。 特に低解像度のシミュレーションをプロトタイプする時、FLIP Fluid Solverが計算時に小数点の衝突ボクセルを考慮します。
この値を全体の Division Size の小数として設定した場合、高解像度のシミュレーションを実行するときには、その値を元に戻すことを忘れないで下さい。 他のオプションでは、衝突フィールドを可視化するのに十分な衝突ディテールを用意した分割サイズを選択し、それを固定値のままにして、全体の分割サイズの変更から独立させます。
Closed Boundaries
FLIP Solverの Volume Limits タブで指定した通りに、パーティクルを弾丸のように飛ばせるようにするかどうか、 またはパーティクルが最大境界に到達した時に、見えないグラスに当てるようにするかどうか制御します。 このチェックボックスをオンにすると、水槽形式のシミュレーションのセットアップが簡単になります。
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 パラメータは、作成されるパーティクルの数も決めます。
Narrow Band
Narrow Band FLIPシミュレーションを生成するには、このオプションを使用します。 これは、流体表面付近の流体パーティクルの薄い帯域とボリュームを構成して、流体の内部(例えば、SurfaceボリュームとVelocityボリューム)を表現します。
SOP Path は、指定したジオメトリからパーティクルを生成します( Particle Field と同様)。 Surface Volume と Velocity Volume のパスには、それに関連する流体ボリュームに対して抽出するSOPを指定します。
Initial Configuration
これは、 Input Type を Surface SOP に設定した場合の、流体パーティクルの初期構成を決めます。
Grid
パーティクルがサーフェス内側の軸に平行なグリッド上に生成されます。
Tetrahedral
パーティクルがサーフェス内側の非常に密集した四面体配置内に生成されます。
これは、流体が初期高さをあまり失なわずにコンテナ内側に速く落ち着く必要がある場合に役に立ちます。
SOP Path
流体パーティクルの初期位置を制御するジオメトリ。 この使い方は、 Input Type によって異なります。
Jitter Seed
Input Type を Surface SOP に設定した時、ランダムなジッター(微震)が、作成されるパーティクルに適用されます。 これは、初期流体構成の対称性をくずす効果があります。 このパラメータは、ランダムなジッター(微震)の適用に使用するシード値です。
Jitter Scale
各パーティクルに適用するランダムなジッター(微震)の大きさ。
Use Object Transform
このトグルを有効にすると、選択したSOPを含んだオブジェクトのトランスフォームがジオメトリに適用されます。 これは、ジオメトリの初期位置がオブジェクトトランスフォームで定義されている場合に役に立ちます。
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。
Add Viscosity Attribute
viscosity
アトリビュートが追加されますが、そのアトリビュートへ書き込みされません。デフォルト値が1です。
このアトリビュートによって、シミュレーションに追加された新しいパーティクルが、グローバルな粘度値を評価することができます。
Note
パーティクルのviscosity
は通常では乗数として扱われ、1の値はグローバルな粘度値を使用することを意味します。
Add Divergence Field
ローカルのパーティクルVelocityを常に発散なしにするのではなく、Divergence(発散)フィールドを使用することで、人工的なDivergence(発散)やConvergence(収束)を取り込むことができます。 このフィールドは、FLIP Solverの Divergence タブを使用することでも操作することができます。
Guides ¶
Visualization サブタブのパラメータは、色々な可視化を簡単にオン/オフすることができます。
Particles サブタブのパラメータは、流体パーティクルの可視化を制御します。 これらのパラメータについては、Particle Fluid Object DOPのGuidesタブのヘルプで説明しています。
他のサブタブは、オブジェクト内の色々なフィールドまたはアトリビュートを可視化することができます。 Scalar Field VisualizationまたはVector Field Visualizationのヘルプでは、 それらの動作に関する詳細を説明しています。
Physical ¶
Bounce
オブジェクトの弾力性。Bounceが1.0の2つのオブジェクトが衝突すると、それらのオブジェクトはエネルギーを消失せずに跳ね返ります。 Bounceが0.0の2つのオブジェクトが衝突すると、それらのオブジェクトは停止します。
Friction
オブジェクトの摩擦係数。0の値は、摩擦なしを意味します。
これは、接線Velocityが衝突と静止接触で影響を受ける強さを制御します。
Dynamic Friction Scale
滑るオブジェクトは、静止しているオブジェクトよりも摩擦係数が低いです。このパラメータは、2つのオブジェクトに関連したスケール係数です。 これは摩擦係数ではなくて、0から1の間のスケールです。
1の値は、動摩擦と静摩擦が同じになることを意味します。0の値は、静摩擦を越えると、オブジェクトが摩擦なしで作用することを意味します。
Density
流体の質量密度。この値は、オブジェクトのDensityフィールドに保存され、FLIP Solverの Volume Velocity 入力によって操作することができます。 また、 Density タブを使えば、パーティクルアトリビュートでその値を上書きすることができます。
Viscosity
流体の動的粘度。 Viscosity パラメータの値は、パーティクルのスケールに依存します。 デフォルトのスケールでは、ドロドロした流体には1000くらいの値が必要で、パン生地のような流体には10000くらいの値が必要です。 ユーザガイドの粘度に関する考察を参照してください。
この値は、オブジェクトのViscosityフィールドに保存され、FLIP Solverの Volume Velocity 入力によって操作することができます。 また、 Viscosity タブを使えば、パーティクルアトリビュートでその値を上書きすることができます。
この設定を有効にするには、FLIP Solverの Viscosity タブで Enable Viscosity を設定しなければなりません。
Collisions ¶
Volume Offset
パーティクル衝突が起きる衝突ジオメトリからの距離を制御します。
Volume Offset を0に設定すると、衝突が衝突オブジェクトの境界で直接起こります。 これを1.0に設定すると、衝突が衝突ジオメトリから1パーティクルの半径分離れたところで起こります。
Use Point Velocity for Collisions
アフェクターオブジェクトのローカルVelocityは、角速度と線形速度を組み合わせたものです。 しかし、オブジェクトが変形し、ポイントがフレームからフレームへ一致するなら、ローカルPoint Velocityを使用して、変形効果を上手く評価することができます。
Use Volume Velocity for Collisions
アフェクターオブジェクトのポイント数が安定しないのに、そのオブジェクトがボリューム表現を持っていれば、 ボリューム表現内の変化を変形Velocityの評価として使用することができます。
ローカル変数 ¶
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 |