On this page |
|
Solid Object DOPは、DOPシミュレーション内にソリッドオブジェクトを作成します。 このDOPは、新しいオブジェクトを作成して、それが適切に順応するソリッドオブジェクトになるために必要なサブデータを取り付けます。 ソリッドオブジェクトは、FEM Solverによってシミュレーションすることができます。
ソリッドオブジェクトはリジッドボディと異なります。 ソリッドオブジェクトは弾力的で、変形することが可能なので、肉、木材、コンクリートなどの材質のシミュレーションに使用することができます。 ソリッドオブジェクトは、シミュレーション中に起きた変形に基づいて動的に壊れることもできます。
SOP内に四面体メッシュを使用することで、ソリッドオブジェクトを作成することができます。 処理が速くて見た目の良いシミュレーションができるようにするために、ソリッドオブジェクトをガイドラインに従ってください。
詳細は、ソリッドシミュレーションのセクションを参照してください。
ソリッドオブジェクトの作成
-
ソリッドオブジェクトに変換するジオメトリを選択します。
-
Solid タブの Solid Objectツールをクリックします。
Note
一度ジオメトリをソリッドオブジェクトに変換してしまうと、最初のフレームでしか移動、回転、スケールができなくなります。
パラメータ
Model
Shape Stiffness
これは、Solid Objectが形状の変化にどれくらい強く抵抗するかを決定します。 Isotropic(等方性)を使用の場合(Anisotropic Strengthがすべて1)、この物理的な定数は、剛性率、剛性係数、またはLameの第二パラメータとしても知られています。 長さの単位をメートルに設定した場合、Shape Stiffnessパラメータの単位はGPaです。
Volume Stiffness
これは、Solid Objectがボリュームの変化にどれくらい強く抵抗するかを決定します。 Isotropic(等方性)を使用の場合(Anisotropic Strengthがすべて1)、この物理的な定数は、Lameの第一パラメータとしても知られています。 長さの単位をメートルに設定した場合、Shape Stiffnessパラメータの単位はGPaです。
Damping Ratio
この値は0から1の間になります。 変形率の結果として、エネルギー損失率を制御します。 0の値は、内部の減衰力により、エネルギー損失がないことを意味します。 1の値は、オブジェクトの減衰が極めて大きいことを意味し、その場合、オブジェクトは振動せずに、できるだけ最速の方法で静止します。 減衰率が高くなると、ソリッドの振動がより少なくなり、オブジェクトの動きが静止するのが速くなります。 減衰の効果は、ジオメトリの解像度には影響しません。
Mass Density
これは、1立方体あたりの質量です。
質量密度は、volumemassdensity
Primitiveアトリビュートにより、オブジェクトの一部で薄くしたり、濃くすることができます。
これは、パラメータの乗数として働きます。
質量密度が濃くなると、オブジェクトは、内部または外部フォース(F = m a、ニュートンの第二法則)の結果、加速化する傾向が少なくなります。
Enable Fracturing
これは、このオブジェクトに対して完全に引裂を有効または無効にします。
Note
引き裂く前に、FEM Solverの Enable Fracturing も有効にしておく必要があります。
Fracture Threshold
これは、シミュレーション中にジオメトリを別々のパーツに分割する相対的なストレッチ量です。 例えば、この閾値を0.1に設定すると、ジオメトリは、Rest(静止)ジオメトリと比較して10%より大きく引き伸ばされた箇所で破れます。
現実のソリッドオブジェクトは、どこも均等な強度にはなっておらず、強度が弱い箇所では、他の箇所よりも破れやすいです。
そのように相対的に強度が弱い箇所を作成するには、fracturethreshold
Vertexアトリビュートを作成します。
このアトリビュートは、 Fracture Threshold パラメータの乗数なので、 Fracture Threshold を使えば、オブジェクトの全体的な強度を制御することができます。
Friction Coefficient
オブジェクトの摩擦係数。 0の値は、オブジェクトに摩擦がないことを意味します。 これは、接触平面の接線方向のVelocityが衝突の影響を受ける度合いを制御します。 2つのオブジェクトが接触した時、ソルバは、その接触に巻き込まれたオブジェクトの摩擦係数を乗算して、その接触における実効摩擦係数を取得します。
Anisotropic Strength
これらの値により、Solid Objectの内部フォースを異方的方法で挙動させることができます。
この場合、応力量は、オブジェクトが変形する方向により異なります。
異方性マテリアルの例としては、木材で、木材の目に垂直な力とは異なる木材の目に平行な力があります。
materialuvw
Point/Vertexアトリビュートにより、Solid Objectの内部フォースモデルの内部方向を指定することができます。
例えば、木材の場合、U方向は、木材の目に揃えられますが、VW座標は、木材の目に対して垂直に選択されます。
この場合、木材の目に平行な力は、 Anisotropic Strength のUコンポーネントにより単独で制御することができます。
Geometry
Initial Geometry
このジオメトリは、オブジェクトの初期のシミュレーション状態を決定します。 それぞれのポイントに対して、初期位置と初期Velocityを決定します。
これは、内部フォースの計算および衝突検出に使用されるジオメトリです。 動きが良い見た目になるのに必要な数の四面体よりも多くの四面体を使用しないでください。 四面体が多いほど、常に高品質に変換できるとは限りません。 使用する四面体の数が少ないほど、シミュレーション速度が上がります。 追加のディテールが必要な場合は、 Embedded Geometry の使用を推奨します。
Tetrahedralize SOPを使用して、適切な入力メッシュを作成することができます。 必ずTetrahedralize SOPで品質オプションを有効にしてください。 有効にしないと、Solid Objectの内部に、柔軟性をもたらす自由度が十分に生成されません。
Enable Embedding
埋め込みジオメトリの使用を有効/無効にします。
Embedded Geometry
このジオメトリは、シミュレーションされる四面体メッシュに埋め込まれ、そのメッシュと一緒に変形します。
Import Rest Geometry
このオプションでは、(SOP Solverを使用する必要のない)SOPネットワーク内のシミュレーションで使用するRest Position(静止位置)を指定して、それをアニメーションさせることができます。
このオプションは、そのRest Position(静止位置)をフレーム毎にSOPジオメトリノードからインポートするかどうかを定義します。
有効にすると、ソルバは、そのRest Position(静止位置)をフレーム毎にSOPジオメトリノードのrestP
PointアトリビュートからシミュレーションジオメトリのrestP
アトリビュートにコピーします。
restP
が存在しなかった場合は、代わりにそのSOPジオメトリノードのP
アトリビュートがコピーされます。
Rest Geometry Path
Rest Position(静止位置)のソースとして使用するSOPノードのパス。
Import Target Geometry
このオプションでは、(SOP Solverを使用する必要のない)SOPネットワーク内のシミュレーションで使用するTarget Position(目標位置)を指定して、それをアニメーションさせることができます。
このオプションは、そのTarget Position(目標位置)をフレーム毎にSOPジオメトリノードからインポートするかどうかを定義します。
有効にすると、ソルバは、そのTarget Position(目標位置)をフレーム毎にSOPジオメトリノードのtargetP
PointアトリビュートからシミュレーションジオメトリのtargetP
アトリビュートにコピーします。
targetP
が存在しなかった場合は、代わりにそのSOPジオメトリノードのP
アトリビュートがコピーされます。
Target Geometry Path
Target Position(目標位置)のソースとして使用するSOPノードのパス。
このTarget Position(目標位置)をtargetP
アトリビュートに格納してください。
このアトリビュートが存在しなかった場合は、代わりにP
アトリビュートが使用されます。
Stiffness
この係数は、Finite Element Solverがポイントポジションをターゲットのポイントポジションに合わせようとする強さを決めます。ソルバは、この目的のために架空の潜在的なフォースを作成します。
Damping
この係数は、Finite Element SolverがPoint VelocityをターゲットのPoint Velocityに合わせようとする強さを決めます。ソルバは、この目的のために架空の消散フォースを作成します。
Fracturing
Enable Fracturing
このオブジェクトの四面体を、以下の Fracture Threshold で設定されたフォースよりも大きく衝突した時に、バラバラにすることができます。 また、ソルバもFracturingが有効(ソルバではデフォルトです)になっている必要があります。
Fracture Threshold
任意の方向の圧力の相対量で、この値を超えると、動力学的破壊が起きます。 これは、オブジェクト内部の圧力によってバラバラになる速さを制御することができます。
現実のオブジェクトは、どの箇所も同じ Fracture Threshold にはなっていません。
これを変更するには、オブジェクト毎のFracture Thresholdに対して局所的な乗数として作用するfracturethreshold
というPointアトリビュートを使用することができます。
四面体の集まりがより小さく分解されないように、fracturepart
Primitiveアトリビュートを使用して、整数をそれらの四面体の集まりに割り当てることを推奨します。
それらの四面体の集まりを作成すると、個々の四面体が分解されなくなります。
Solid Fracture SOPは、このfracturepart
アトリビュートを作成する非常に役立つツールです。
さらに組み込まれたジオメトリにもfracturepart
を作成することができます。
このようにして、シミュレーションされるジオメトリ内の分解される破片と組み込まれたジオメトリを適切に一致させることができます。
Collisions
Collide with objects
有効の場合、このオブジェクトの中のジオメトリは、すべての他のオブジェクトと衝突します。 これらの他のオブジェクトは同じソルバに属していても構いませんし、または、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 with same solver
これが有効である時、このオブジェクトは同じソルバを持つ別のオブジェクトと衝突します。 これらの衝突は、ジオメトリ(ポリゴンおよび/または四面体)に基づいて、連続的な衝突検出を使って制御されます。 同じソルバ上のオブジェクト間の衝突に関しては、ポリゴンは両面で扱われます。 ポリゴンの両面が衝突します。四面体メッシュの表面は、片面(外側)のみで衝突します。
Collide within this object
無効である場合、このオブジェクトの中にある2つの四面体は互いに衝突しません。
Collide within each component
無効である場合、繋がった同じコンポーネントに属する2つのポリゴンが互いに衝突することはありません。
Collide within each fracture part
このオプションは、ソルバでFracturingが有効な時のみ効果があります。
無効である場合、同じ破砕部分に属する2つのポリゴンが互いに衝突することはありません。
破砕部分は整数値のfracturepart
Primitiveアトリビュートによって制御されます。
Properties
External volume properties
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が非常に小さいと、その処理が収束しなくなることがあります。 反対に大きいと、非常に速く収束します。
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で生成される風よりも、よりリアルでより正確です。
Visualization
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 State
このタブのコントロールでは、オブジェクトの位置、ピボット、回転、初期Velocity、角速度を設定することができます。
Attributes
Finite Element Solver(有限要素ソルバ)は、シミュレーションするジオメトリのアトリビュートを認識して、使用します。
DOPネットワークでは、このシミュレーションジオメトリがGeometry
という名前のシミュレーションデータとしてシミュレーションするオブジェクトに追加されます。
オブジェクトを作成する時、ジオメトリとそれに該当するすべてのアトリビュートが Initial Geometry から読み込まれます。
これは標準の位置とVelocityのアトリビュートであるP
とv
を含みます。
Finite Element Solverは、入力アトリビュートと出力アトリビュートに対応しています。 シミュレーション状態などの一部のアトリビュートは、入力と出力の両方のアトリビュートです。 入力アトリビュートには、マテリアル特性用の乗数アトリビュート、fracture(粉砕)アトリビュート、ターゲット位置とそれに該当するハード/ソフト拘束を制御するアトリビュートが含まれています。 出力アトリビュートには、四面体品質、エネルギー密度、FEMノードのフォース、衝突情報アトリビュート、粉砕情報アトリビュートに対するオプションのアトリビュートが含まれています。
マテリアル特性用の乗数アトリビュート
シミュレーションされるオブジェクトの各マテリアル特性は、乗数Pointアトリビュートを使って局所的に変更することができます。 一般的には、乗数アトリビュートによって、オブジェクトの Model タブ内の各マテリアル特性に影響を与えることができます。 通例では、そのパラメータの名前がアトリビュートの名前になっていて、マウスカーソルをパラメータ上に置いた時に表示される"Parameter:"の後の名前です。
Pointアトリビュートを使えば、オブジェクトのマテリアル特性を局所的に変更することができます。 例えば、ポリゴンを他のポリゴンよりもストレッチと曲げの抵抗を強くすることができます。 これらのアトリビュートは、 Model タブのパラメータの乗数として動作します: Stiffness(剛性)乗数は、Finite Element Solverで認識されるオブジェクトタイプすべてのローカルStiffnessを変更するための便利な手段です:
名前 | クラス | タイプ | 説明 |
---|---|---|---|
stiffness
|
Point | Float | すべてのタイプのStiffness(剛性)の乗数。 |
dampingratio
|
Point | Float | すべてのDamping(減衰)率の乗数。 |
massdensity
|
Point | Float | すべてのmass density(質量密度)の乗数。 |
Solid Objectに関しては、以下の乗数Pointアトリビュートを使用することで、その局所的な挙動を変更することができます:
名前 | クラス | タイプ | 説明 |
---|---|---|---|
solidstiffness
|
Point | Float | Solid ObjectのShape StiffnessとVolume Stiffness両方の乗数。 |
solidshapestiffness
|
Point | Float | Solid ObjectのShape Stiffnessの乗数。 |
solidvolumestiffness
|
Point | Float | Solid ObjectのVolume Stiffnessの乗数。 |
solidmassdensity
|
Point | Float | Solid Objectのmass density(質量密度)の乗数。 |
マテリアル空間アトリビュート
materialP
アトリビュートは、マテリアル空間内のシミュレーションオブジェクトの位置と見なすことができます。
現行位置P
にはシミュレーションオブジェクトの変形状態が反映されるのに対して、materialP
は、その変形の影響を受けません。
つまり、materialP
はシミュレーション全体を通して常に同じ状態です。
Finite Element Solverでは、materialP
アトリビュートはフレームが変わっても一定のままであると想定しています。
そのため、(例えば、SOP Solverを使って)外部からmaterialP
を決して変更しないようにしてください。変更してしまうと、間違ったシミュレーション結果が生成されてしまいます。
Rest Shape を指定しなかった場合もrestP
アトリビュートがない場合でも、materialP
を永久的な静止位置として見なすことができます。
静止位置のアニメーションがシミュレーションで不要な場合には、materialP
のみを指定してください(restP
は不要です)。
シミュレーションのどのステージでも、materialP
と現行P
を比較することで、シミュレーションオブジェクトの四面体が変形しているかどうか判断することができます。
その変形量を次々にオブジェクト内でエネルギーとして定義されていきます。
materialuvw
アトリビュートを使用することで、マテリアル空間のUVWパラメータ空間を指定することができます。
materialuvw
で表現されたU, V, Wの方向は、シミュレーションオブジェクトに対して異方性や繊維方向を制御する場合に重要です。
FEM筋肉シミュレーションの使用例では、筋肉の収縮を制御する際に、その繊維方向の制御が重要になります。
materialuvw
と同様に、materialuv
アトリビュートを使用することで、布のUV方向を指定することができます。
このアトリビュートは、三角形メッシュで必須です。特に、布の縦糸と横糸の方向を定義する時です。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
materialP
|
Point | Vector | 各ポイントのマテリアルの位置。 |
materialuvw
|
Point or Vertex | Vector | 四面体の各ポイント/頂点におけるローカルのマテリアルUVW座標。 |
materialuv
|
Point or Vertex | Vector | ポリゴン/ポリスープの各ポイント/頂点におけるローカルのマテリアルUVW座標。 |
Fracturing Control Attributes
破壊のシミュレーションを作成する時、まとまった四面体を指定することを推奨します。
そうしないと、破壊プロセスが、単一の四面体で構成された非常に膨大な数の別々の破片を作成してしまう場合があります。
そのためには、fracturepart
アトリビュートを使用すれば、そのまとまり毎に0以上の整数を割り当てることができます。
パーツを指定したくない領域では、fracturepart
を-1に設定することができます。つまり、その領域の各プリミティブは、それ自体がパーツになります。
現実世界のマテリアルは、どの箇所も均等な強度になっていない傾向があります。
リアルな結果にするには、Vertexアトリビュートのfracturethreshold
を使って、局所的に Fracture Threshold を変化させることを推奨します。
fracturepart
|
Primitive | Integer | オブジェクトを破壊不可の部分に分けます。-1(パーツなし)かパーツを意味する0以上の整数のどれかを指定します。 |
enablefracturing
|
Point/Vertex | Integer | ポイントまたは頂点に対して局所的な破壊を有効/無効にします。 |
fracturethreshold
|
Point/Vertex | Float | オブジェクトの Fracture Threshold の乗数。 |
Drag Force Control Attributes
Drag(抵抗)フォースの挙動は、以下のアトリビュートを使って局所的に変更することができます:
normaldrag
|
Primitive | Float | オブジェクトの Normal Drag の乗数。 |
tangentdrag
|
Primitive | Float | オブジェクトの Tangent Drag の乗数。 |
参照アトリビュート
baseP
アトリビュートを使用することで、オブジェクトポイントすべての全体のベース位置を指定することができます。
このアトリビュートの値は、シミュレーション時に変更してはいけません。
ユーザーがbaseP
を指定しなかった時、ソルバは、作成フレーム時のポイント位置に基づいて、このPointアトリビュートを作成します。
このアトリビュートはフォールバックとして使用されます。ユーザーがmaterialP
アトリビュートを指定しなかった場合には、代わりにbaseP
アトリビュートが読み込まれます。
同様に、restP
またはtargetP
のアトリビュートが用意されていなかった時にはbaseP
がフォールバックとして使用されます。
最終的には、シミュレーションされるジオメトリと埋め込みジオメトリを埋め込みワークフロー(例えば、Tポーズ)にバインドする時にbaseP
が使用されます。
この埋め込みバインドは、シミュレーションされるジオメトリと埋め込みジオメトリの両方のbaseP
ポジションアトリビュートを見ます。
ユーザーが埋め込みジオメトリに対してbaseP
アトリビュートを用意しなかった場合は、ソルバは、作成フレーム時のポジションP
に基づいて、埋め込みジオメトリにbaseP
アトリビュートを作成します。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
baseP
|
Point | Vector | 各ポイントのベース位置 |
restP
アトリビュートを使用することで、すべてのオブジェクトポイントに対してアニメーションする静止位置を指定することができます。
例えば、Finite Element Solverで計算する前に、SOP Solver内でフレーム毎にrestP
を修正することができます。
これによって、特に塑性変形といった効果を表現することができます。
シミュレーション全体を通して静止位置を同じままにしたい場合は、restP
アトリビュートを使用しないでください。
この場合では、materialP
アトリビュートを指定するだけで十分です。materialP
は永久に変更されない静止位置として機能します。
materialP
アトリビュートを指定しなかった場合、Finite Element Solverは、Creation Frameで自動的に作成されたbaseP
アトリビュートに戻そうとします。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
restP
|
Point | Vector | 各ポイントのRest Position。 |
initialpid
アトリビュートは、各ポイントの初期ポイントインデックスを記録します。
これは、オブジェクトを作成した時のポイントインデックスです。
このアトリビュートは、オブジェクトとソルバの両方に対してFracturingを有効にした時にのみ作成されます。
Finite Element Solverは Import Rest Geometry と Import Target Geometry のオプションに対して、このアトリビュートを使用することで、SOP内のアニメーションした位置とVelocityをシミュレーションオブジェクト内の現行の粉砕トロポジーに転送します。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
initialpid
|
Point | Integer | 各ポイントの初期ポイントインデックス。 |
ターゲットアトリビュート
ターゲットアトリビュートを使用することで、シミュレーションオブジェクトを部分的にターゲットアニメーションに追従させることができます。
targetP
アトリビュートを使えば、各オブジェクトポイントに対してターゲットの位置を指定することができます。
シミュレーションするオブジェクトの Import Target Geometry オプションを使用すると、targetP
がすべてのフレームで自動的に設定されます。
または、Multi SolverとSOP Solverを使用することで、それらのアトリビュートをあなた自身で作成と修正をすることができます。
ターゲットの位置とVelocityは、ユーザーが非常に安定した方法でアニメーションとシミュレーションを混ぜることができます( Target Strength と Target Damping のパラメータがオブジェクトに設定されている場合)。
オブジェクトの Target Strength と Target Damping のパラメータを設定すれば、オブジェクトがターゲットの位置とVelocityにそれぞれ一致する強さを表現することができます。
これは、ソフト拘束を作成する方法です。pintoanimation
を使用すれば、シミュレーションするオブジェクトが正確にtargetP
に追従するハード拘束を作成することができます。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
targetP
|
Point or Vertex | Vector | 各ポイントのターゲット位置。 |
targetstrength
|
Point | Float | オブジェクトの Target Strength の乗数。このアトリビュートが見つからない場合、1の乗数がすべてのポイントに使用されます。 |
targetdamping
|
Point | Float | オブジェクトの Target Damping の乗数。このアトリビュートが見つからない場合、1の乗数がすべてのポイントに使用されます。 |
pintoanimation
|
Point | Int |
1の時、そのポイントはターゲットアニメーション(例えば、targetP )にハード拘束されます。0の時、そのポイントは拘束されません。
|
Fiber(繊維)アトリビュート
fiberscale
Pointアトリビュートは、繊維方向のRest Strain(静止状態の張り)の乗数として作用します。
これは、特にFEM筋肉シミュレーションで役に立ちます。
fiberscale
を1から0.5に変更すると、その筋肉は繊維方向に前よりも半分の長さに戻ろうとします。
SOP Solverでfiberscale
が1から下がるようにアニメーションさせると、シミュレーションにおいて筋肉に収縮が起こります。
fiberstiffness
Pointアトリビュートは、繊維方向のStiffness(剛性)の乗数として作用します。
マテリアルの繊維方向は、materialuvw
座標のW軸で決まります。
fiberstiffness
は、他のすべてのマテリアルプロパティの乗数(異方性乗数を含む)に対する乗数として動作します。
fiberstiffness
を1から10に変更すると、繊維方向のStiffness(剛性)は、前よりも10倍強くなります。
これを使用することで、fiberscale
アトリビュートを使った筋肉の収縮効果の影響が出る強さと早さを制御することができます。
fiberscale
/fiberstiffness
が意図した効果になるようにするには、UVW方向を指定することが重要です。
FEM筋肉のマテリアル空間のUVWsは、materialuvw
Point/Vertexアトリビュートを使って指定することができます。
materialuvw
をVetexアトリビュートとして指定することで、それぞれの四面体に対してローカルのUVW空間を用意することができます。
これによって、四面体毎に別々のUVWフレームを用意することができます。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
fiberstiffness
|
Point | Float |
繊維方向のStiffnessに対する乗数。W方向はmaterialuvw で決まります。
|
fiberscale
|
Point | Float |
繊維方向のRest Strainに対する乗数。W方向はmaterialuvw で決まります。
|
状態アトリビュート
以下にソルバが内部的に保持されているアトリビュートのリストを載せています。 これらのアトリビュートは、各計算の終わりに書き出され、次の計算の初めに読み込まれます。 これらのアトリビュートは、あなた自身で修正してはいけません。 それをすると、ソルバが不安定になり悪い結果を得てしまいます。 とはいえ、可視化のため、副効果の作成のためにネットワーク内でそれらのアトリビュートの値を検査することができます。
各フレームで、Finite Element(有限要素)ソルバは各シミュレーションオブジェクトに対して新しい物理的な状態を計算します。
オブジェクトの物理的な状態は、P
とv
のPointアトリビュートで表現され、それぞれ位置とVelocityを意味します。
ソルバの統合スキームは、Acceleration(加速度)に対してa
、Jerk(加加速度)に対してj
の追加アトリビュートを保持します。
PointアトリビュートのP
, v
, a
, j
は、オブジェクトの現行統合状態を記録します。
これらのアトリビュートは、シミュレーション中に修正してはいけません。なぜなら、Finite Element(有限要素)ソルバが不安定になり低品質な結果を生成してしまうからです。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
P
|
Point | Vector | 修正してはいけません!各オブジェクトポイントの現行位置。 |
v
|
Point | Vector | 修正してはいけません!各オブジェクトポイントの現行Velocity。 |
accel
|
Point | Vector | 修正してはいけません!各オブジェクトポイントの現行加速度。 |
jerk
|
Point | Vector | 修正してはいけません!各オブジェクトポイントの現行加加速度。 |
Embedded Geometryアトリビュート
このアトリビュートは、Solid ObjectのEmbedded Geometryで作成されます。
parent
アトリビュートは、組み込みコード自体で維持され、修正してはいけません。
ユーザー側でEmbedded Geometry上にbaseP
Pointアトリビュートを用意することで、シミュレーションジオメトリと埋め込みジオメトリ間の紐付けを制御することができます。
baseP
を用意しなかった場合、作成フレームにおけるP
に保存されているポイント位置からコピーが行なわれます。
整列は、シミュレーションジオメトリ上のPinitial
Pointアトリビュートを基準に起こります。
シミュレーションジオメトリにrestPinitial
Point/Vertexアトリビュートがあれば、このアトリビュートが優先され、必要に応じてポイント毎ではなく頂点毎の制御が可能になります。
Embedded Geometryがシミュレーションジオメトリで目的の破壊側にあるようにしたいのであれば、Embedded GeometryのPinitial
VertexアトリビュートとシミュレーションジオメトリのrestP
Vertexアトリビュートを組み合わせて使用します。
これにより、例えば'Exploded View' SOPを使用して、Embedded Geometryをシミュレーションジオメトリ内の別々のパーツと整列させることができます。
fracturepart
アトリビュートは、Embedded Geometryが破壊された時に正しいパーツに追従できるようにします。
シミュレーションジオメトリとEmbedded Geometryの両方にfracturepart
アトリビュートがある時、Finite Element Solverは、Embedded Geometryを同じ破壊部分を持つシミュレーションジオメトリの子にします。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
parent
|
Primitive | Float | シミュレーションジオメトリの親プリミティブのインデックス。 |
baseP
|
Point | Float | シミュレーションメッシュに揃えるために使用するベース位置。 |
fracturepart
|
Point or Vertex | Float | オプションのユーザー指定の破壊パーツID。 |
P
|
Point | Float | 変形状態に相当する位置。 |
v
|
Point | Float | 変形状態に相当するVelocity。 |
N
|
Point or Vertex | Float | 変形状態に相当する法線。 |
オプションの出力アトリビュート
これらは、シミュレーションオブジェクトに対してアトリビュートの生成が有効な時にソルバで任意に生成されるアトリビュートです。 これらのアトリビュートは、可視化に役立ちます。例えば、Finite Element Visualization SOPを使用する時です。 さらに、これらのアトリビュートを使用することで、副次的効果を生成することができます。例えば、破壊が起きた領域からパーティクルを飛ばすことができます。 オプションの出力アトリビュートは、Finite Element Visualization SOPでも必要になります。
以下のアトリビュートは、 Create Quality Attributes が有効な時に生成されます:
名前 | クラス | タイプ | 説明 |
---|---|---|---|
quality
|
Primitive | Float | 0(最低)から1(最高)の品質単位 |
Finite Elementシミュレーションは、入力のプリミティブの品質に影響を受けやすい傾向があります。 低品質なプリミティブは、有限要素シミュレーションの処理が遅くなったり、不安定になったり、解が求まらなくなることがあります。 低品質なプリミティブは、Solid Embedを四面体メッシュ生成のツールとして使用することで、うまく回避することができます。 品質単位は四面体毎に異なりますが、このアトリビュートでソルバから生成される品質単位は、Houdiniの有限要素の解に最もうまく一致した品質単位になります。
ソルバは、 Create Energy Attributes を有効にした各オブジェクトに対してエネルギー密度アトリビュートを生成します。 Modelタブ内のマテリアル特性の設定とそれに該当する乗数アトリビュートが、潜在エネルギー、エネルギー消失、運動エネルギーに影響を与えます。 これら3つの寄与それぞれに対して、ローカル密度がソルバ内で計算されます。 そこから派生したそれらの密度と量を使って、Finite Element Solverで計算されるオブジェクトの動きや挙動が決まります。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
potentialdensity
|
Point | Float | 変形エネルギーの局所的な密度。 |
dissipationdensity
|
Point | Float | エネルギー消失レートの局所的な密度。 |
kineticdensity
|
Point | Float | 運動エネルギーの局所的な密度。 |
potentialdensity
アトリビュートは、 Model タブ内のStiffness(剛性)パラメータから直接影響を受けます。
kineticdensity
アトリビュートは、オブジェクトに指定した質量密度に比例します。
dissipationdensity
アトリビュートは、Damping(減衰)設定に関係します。
シミュレーションオブジェクトの Create Fracture Attributes を有効にすると、fracturecount
Pointアトリビュートが作成されます。
fracturecount
Pointアトリビュートは、各ポイントで保持され、そのポイントが破壊に関わった回数です。
つまり、fracturecount
のゼロ以外の値を持つポイントが破壊に関わっています。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
fracturecount
|
Point | Integer | ポイントがシミュレーション中に破壊された回数。 |
レガシーとなったアトリビュート
有限要素シミュレーションで影響を与えたい領域のほとんどは、ソフト拘束を使用することで目的を果たすことができます。 例えば、Target Constraints、Region Constraints、オブジェクトのターゲット強度/減衰の設定がそれです。 これらは、ソルバによって安定に動作する素晴らしいソルバ機能であり、正しく使用すれば高品質な結果が得られるはずです。 forceアトリビュートは、上位互換のためだけに今でも対応しています。 forceアトリビュートではソルバが必要とする情報が足りないので、安定性と品質が重要な時には当てになりません。 新しくシミュレーションをセットアップする時は、forceアトリビュートの代わりにソフト拘束のTarget Constraints、Region Constraints、アニメーションするRest Positions(静止位置)といった別の方法を考えるべきです。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
fexternal
|
Force | Vector | 外部フォース密度 |
force
|
Force | Vector | 外部フォース密度の別名 |
ローカル変数
ST
この値は、ノードが評価されるシミュレーション時間です。
この値は、変数Tで表現される現在のHoudiniの時間と同じではなく、DOP Networkの Offset Time と Time Scale のパラメータの設定に依存しています。
この値は、シミュレーションの開始時間がゼロになるようになっています。つまり、シミュレーションの最初のタイムステップをテストする時は、$T == 0
や$FF == 1
を使うのではなくて、$ST == 0
のようなテストを使うのがベストです。
SF
この値は、ノードが評価されるシミュレーションフレーム(正確には、シミュレーションタイムステップ番号)です。
この値は、変数Fで表現される現在のHoudiniのフレーム番号と同じではなく、DOP Networkパラメータの設定に依存しています。代わりに、この値は、シミュレーション時間(ST)をシミュレーションタイムステップサイズ(TIMESTEP)で割算した値と同じです。
TIMESTEP
この値は、シミュレーションタイムステップのサイズです。この値は、1秒あたりのユニットで表現した値をスケールするのに役に立ちますが、タイムステップ毎に適用されます。
SFPS
この値は、TIMESTEPの逆数です。シミュレーション時間の1秒あたりのタイムステップ数です。
SNOBJ
これはシミュレーション内のオブジェクトの数です。Empty Objectノードなどのオブジェクトを作成するノードでは、この値は、オブジェクトが評価される度に値が増えます。
固有のオブジェクト名を確保する良い方法は、object_$SNOBJ
のようなエクスプレッションを使うことです。
NOBJ
この値は、このタイムステップ間で現行ノードで評価されるオブジェクトの数です。 この値は、多くのノードがシミュレーション内のオブジェクトすべてを処理しないので、SNOBJとは異なります。
この値は、ノードが各オブジェクトを続けて処理(例えば、Group DOP)しないなら0を返します。
OBJ
この値は、ノードで処理される特定のオブジェクトのインデックスです。 この値は、指定したタイムステップで常にゼロからNOBJ-1まで実行されます。 この値は、OBJIDやOBJNAMEなどのシミュレーション内の現行オブジェクトを識別せず、現在の処理順でのオブジェクトの順番を識別します。
この値は、オブジェクト毎に乱数を生成するのに役に立ちます。他には、処理別にオブジェクトを2,3のグループに分けるのに役に立ちます。 この値は、ノードがオブジェクトを続けて処理(例えば、Group DOP)しないなら-1を返します。
OBJID
この値は、処理されているオブジェクトの固有のオブジェクトIDです。 すべてのオブジェクトは、すべての時間のシミュレーション内のオブジェクトすべてで固有な整数値が割り当てられています。たとえオブジェクトが削除されても、そのIDは決して再利用されません。
オブジェクトIDは、指定したオブジェクトを固有なものと識別するために常に使われています。 オブジェクトIDは、オブジェクト毎に別々の処理をさせたいシミュレーションで非常に役に立ちます。 オブジェクト毎に固有の乱数を生成するのにも使われます。
この値は、dopfieldエクスプレッション関数を使って、オブジェクトの情報を検索するのにベストな方法です。 この値は、ノードがオブジェクトを続けて処理(例えば、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ノードでは、以下のエクスプレッションを記述することができます:
$tx + 0.1
これはオブジェクトをタイムステップ毎にX軸方向に0.1単位分移動させます。
See also |