On this page | |
Since | 14.0 |
概要 ¶
Solid Object DOPは、DOPシミュレーション内にソリッドオブジェクトを作成します。 このDOPは、新しいオブジェクトを作成して、それが適切に順応するソリッドオブジェクトになるために必要なサブデータを取り付けます。 ソリッドオブジェクトは、FEM Solverによってシミュレーションすることができます。
ソリッドオブジェクトはリジッドボディと異なります。 ソリッドオブジェクトは弾力的で、変形することが可能なので、肉、木材、コンクリートなどの材質のシミュレーションに使用することができます。 ソリッドオブジェクトは、シミュレーション中に起きた変形に基づいて動的に壊れることもできます。
SOP内に四面体メッシュを使用することで、ソリッドオブジェクトを作成することができます。 処理が速くて見た目の良いシミュレーションができるようにするために、ソリッドオブジェクトをガイドラインに従ってください。
詳細は、ソリッドシミュレーションのセクションを参照してください。
Note
一度ジオメトリをソリッドオブジェクトに変換してしまうと、最初のフレームでしか移動、回転、スケールができなくなります。
Solid Objectシェルフツール ¶
To... | Do this |
---|---|
硬いソリッドオブジェクトを作成する |
|
Organic Massシェルフツール ¶
筋肉と脂肪のように、しなやかで弾力のあるソリッド有限要素(FEM)オブジェクトを作成します。
To... | Do this |
---|---|
ぐにゃぐにゃなソリッドオブジェクトを作成する |
|
パラメータ ¶
Model ¶
Stiffness Multiplier
これは、このオブジェクトのすべての内部剛性に対する乗数です。
Damping Ratio
これは、オブジェクトの変形が止まる速さを制御します。
Mass Density
これは、体積あたりの質量です。
Material Model
材質が変形に抵抗する方法を決めるモデルを選択します。 Neo-Hookeanマテリアルモデルは、生体組織(例えば、筋肉や脂肪)をシミュレーションするのに役立ち、FEM Solverの Solve Method を GNL に設定する必要があります。
Shape Stiffness
これは、オブジェクトがシェイプの局所的な変化に抵抗する強さを決定します。
Volume Stiffness
これは、オブジェクトがボリュームの局所的な変化に抵抗する強さを決定します。
Repulsion
これは、接触時の垂直抗力を制御します。 シミュレーションでオブジェクト間に目立った相互貫通がある場合は、この値を上げてみてください。
Friction
これは、接触時の摩擦力の強さを制御します。
Deformation ¶
Initial ¶
Initial State
初期の接続性、位置、Velocityを持ったSOPノードのパス。
Rest ¶
Rest Shape
Rest Shape(静止形状)を定義したSOPノードのパス。
Target ¶
Target Deformation
ターゲット変形のSOPノードのパス。
Target Strength
ターゲット位置に合わせようとする分布したソフト拘束フォースの強度密度。
Target Damping
ターゲットVelocityに合わせようとする分布したソフト拘束フォースの減衰密度。
Embedding ¶
Enable Embedding
埋め込みジオメトリの使用を有効/無効にします。
Embedded Geometry
このジオメトリは、シミュレーションされる四面体メッシュに埋め込まれ、そのメッシュと一緒に変形します。
Collisions ¶
Collide with other objects of different solver
有効の場合、このオブジェクト内のジオメトリは、別のソルバDOPノードに属しているどのDOPオブジェクト(例えば、Static Objects、RBD Objects、Ground Plane)にも衝突するようになります。 Static Objectの Collision Detection パラメータを Use Volume Collisions に設定すると、ポリゴン頂点は、そのStatic Objectの符号付距離フィールド(SDF)に対して衝突がテストされます。 Collision Detection を Use Surface Collisions に設定すると、ジオメトリベースの連続的な衝突検出が使われます。 ジオメトリベースの衝突はポイントとポリゴン、そしてエッジとエッジが衝突します。
サーフェスベースの衝突を使用した時、Static Object内のポリゴンと四面体のみが認識されます。 プリミティブの他のタイプ、例えば球体は無視されます。 外部オブジェクト(例、Static Object)のジオメトリは、片面で扱われます。つまり、法線方向で決まるポリゴンの外側のみが衝突に反応します。
ボリュームベースの衝突が有効である時、ポイントのみがボリュームに対して衝突し、ポリゴンや四面体の内側は衝突しません。 小さいボリュームに対して衝突する時、正確な衝突の結果を得るには、メッシュのポイントの数を増やす必要があることを意味します。
Collide with other objects of same solver
これが有効である時、このオブジェクトは同じソルバを持つ別のオブジェクトと衝突します。 これらの衝突は、ジオメトリ(ポリゴンおよび/または四面体)に基づいて、連続的な衝突検出を使って制御されます。 同じソルバ上のオブジェクト間の衝突に関しては、ポリゴンは両面で扱われます。 ポリゴンの両面が衝突します。四面体メッシュの表面は、片面(外側)のみで衝突します。
Collide distinct connected components of this object
無効である場合、このオブジェクトの中にある2つの四面体は互いに衝突しません。
Self-collide each connected component
無効である場合、繋がった同じコンポーネントに属する2つのポリゴンが互いに衝突することはありません。
Self-collide within each fracture part (defined by fracturepart primitive attribute)
このオプションは、ソルバでFracturingが有効な時のみ効果があります。
無効である場合、同じ破砕部分に属する2つのポリゴンが互いに衝突することはありません。
破砕部分は整数値のfracturepart
Primitiveアトリビュートによって制御されます。
External ¶
Division Method
Non Square を選択した場合、指定したサイズが指定したボクセル分割数に分割されます。 それらのボクセルの辺が同じになっていないと、歪んだシミュレーションになる可能性があります。
軸を指定した時、その軸が分割数を決める基準と見なされます。 選択した軸のサイズで均一に分割することでボクセルサイズが決まります。 他の軸の分割は、必要なサイズに合うように一番近い整数の複数値に調整されます。
最終的には、非選択の軸方向のサイズが均一なボクセルサイズになるように変わります。 Max Axis オプションを選択した場合、その最大サイズの軸が使用されます。
By Size を指定した時、 Division Size によって、指定したサイズのボックスに合うボクセル数が計算されます。
Uniform Divisions
ボクセルグリッドのキー軸の解像度。これは、1つのパラメータで全体の解像度を制御して、均一なボクセルを保持することができます。 Uniform Voxels オプションには、参照として使用する軸を指定します。通常では、最大軸を使用するのは一番安全です。
Tolerance
これには、SDFを計算する時の光線の交差に使用する許容値を指定します。 この値は、ジオメトリのサイズで乗算され、スケールには依存していません。
Sign Sweep Threshold
Fix Signs 処理が完了した後でも、SDF内に不正な領域がまだ存在している可能性があります。 大きなブロックは、安定化されて、SDFから突き出る可能性があります。 2番目のSign Sweep Passを実行すれば、それらのブロックの軽減を試みることができます。
Sign Sweep Thresholdは、不正と見なされる符号の変化に対して起こす飛躍の大きさを制御します。 SDFの値が、この閾値とセル幅を乗算した値よりも大きく変化した場合、その値が無効な符号の変化と見なされます。 元のジオメトリは、光線と交差することで内側/外側が判断され、その結果を使用して、どの符号が正しいのか判断されます。 正しい符号は、モデルを通じて伝搬します。
Max Sign Sweep Count
Sign Sweepは、符号が反転しなくなるまで(つまり、すべての変化が閾値以内にある)または、この最大値に到達するまで繰り返されます。 Sign Sweep Thresholdが非常に小さいと、その処理が収束しなくなることがあります。 反対に大きいと、非常に速く収束します。
Fracturing ¶
Enable Fracturing
このオブジェクトの破壊を許可します。また、ソルバもFracturingが有効になっている必要があります。
Fracture Threshold
任意の方向の圧力の相対量で、この値を超えると、動力学的破壊が起きます。
Drag ¶
Normal Drag
サーフェスの法線方向のDrag(抵抗)成分。この値を上げると、オブジェクトに吹く風と共にオブジェクトが動きます。 現実的な風の相互作用を表現するには、 Normal Drag を Tangent Drag よりも大きな値(約10倍)に設定してください。
Tangent Drag
サーフェスの接線方向のDrag(抵抗)成分。この値を上げると、オブジェクトの接線方向に吹く風と共にオブジェクトが動きます。
External Velocity Field
オブジェクトが反応するアフェクターの外部Velocityフィールドの名前。
デフォルト名はvel
で、 Tangent Drag と Normal Drag を十分大きな値に設定した時に、オブジェクトが流体と煙に反応します。
Tangent Drag と Normal Drag のフォースは、オブジェクトのVelocityと外部Velocityを比較することで計算されます。
External Velocity Offset
このオフセットは、Velocityフィールドから読み込まれたVelocityに追加されます。 Velocityフィールドがなかった時、そのオフセットを使用することで、どこにでも一定なVelocityを持つ風のフォースを作成することができます。 この風のエフェクトは、DOP Forceで生成される風よりも、よりリアルでより正確です。
Attributes ¶
Create Quality Attributes
これは、シミュレーションしたジオメトリ上にquality
Primitiveアトリビュートを作成します。
最低品質が0、最高品質が1です。プリミティブの品質が良いほど、計算のパフォーマンスと安定性が良くなります。
Create Energy Attributes
このトグルを有効にすると、オブジェクトに運動エネルギーと潜在エネルギーの密度を示したアトリビュートを生成させることができます。 さらに、エネルギー損失率の密度を示したアトリビュートが生成されます。
Create Force Attributes
このトグルを有効にすると、force
アトリビュートを生成することができます。
Create Collision Attributes
Create Fracture Attributes
Visualization ¶
Creation ¶
Attributes ¶
ローカル変数 ¶
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 |