On this page |
|
Cloth Object DOPは、DOPシミュレーション内にClothオブジェクトを作成します。 このDOPは、新しいオブジェクトを作成して、それが適切に順応するClothオブジェクトになるために必要なサブデータを取り付けます。 Clothオブジェクトは、FEM Solverによってシミュレーションすることができます。
SOPのポリゴンジオメトリを使用して、Clothオブジェクトを作成することができます。 高速に実行されて、且つ良い見た目のシミュレーションをするには、Clothジオメトリがガイドラインの条件を満たすようにしてください。
詳細は、ClothのフォースとClothの衝突を参照してください。
Cloth Objectの使い方 ¶
-
Clothオブジェクトに変換するオブジェクトを選択します。
-
Cloth タブのCloth Objectツールをクリックします。
パラメータ ¶
Model ¶
Overall Stiffness
これは、Cloth Objectが変形に抵抗する強さを決めます。 Overall Stiffness は、メッシュの解像度に依存しません。
materialuv
アトリビュートを使用して布のUV座標をメッシュに指定すれば、そのStiffness(剛性)の効果は、メッシュの三角形と四角形の向きに依存しません。
Overall Stiffness のデフォルト設定は、シミュレーションジオメトリを実寸サイズでモデリングした時にうまく動作します。
メートル単位で布をモデリングしないなら、Hip File Optionsで正しいUnit Lengthを設定してください。
これはDOPネットワークを作成する 前に 行なってください。実寸サイズのモデリングをする時、DOPネットワークを作成する前に必ず正しい長さ単位に設定してください: DOPネットワークを作成する前に、 Edit > Preferences > Hip File Options で正しい Unit Length を設定してください。
Overall Damping Ratio
この値は0から1の間にしてください。 Overall Damping Ratio は、変形の速さによってエネルギー損失の速さを制御します。 0の値は、内部の減衰フォースによるエネルギー損失はありません。1の値は、オブジェクトが即効で減衰することを意味します。この場合、振動なしですぐにオブジェクトが静止します。 Damping Ratioが大きいほど、布の振動が少なく、オブジェクトの動きがすぐに静止します。Damping(減衰)の効果は、ジオメトリの解像度に依存しません。
Surface Mass Density
これは、平方メートルあたりの質量です。オブジェクトの一部で質量密度を低くまたは高くしたいのであれば、Primitiveアトリビュートのsurfacemassdensity
を使用して、そのパラメータを乗算することができます。
Relative Stiffness
この値は0から1の間にしてください。このパラメータは、指定したタイプの変形に対する Overall Stiffness の乗数として動作します。 Relative Stiffness パラメータは、平面形状の変化と曲げに抵抗する内部フォースの相対強度を決めます。 また、ストレッチ/シアー(傾斜)に対する Relative Stiffness の寄与度は、ローカルの布サーフェス平面内の変化に対する抵抗を決めます。 Weak BendとStrong Bendに対する寄与度は、オブジェクトの曲げに対する抵抗の強さを決めます。 Weak Bendモデルを使えば、薄いシルクのような布シートを作成することができます。 Strong Bendモデルを使えば、曲げに対する強い抵抗、例えば、皮革や厚みのあるゴムを表現することができます。 Relative Stiffness の効果は、シミュレーションジオメトリでの詳細さや三角形や四角形の形状に依存しません。
Relative Stiffness のストレッチとシアー(傾斜)の寄与度は、布マテリアルUVの方向に動作します。それらのUV座標は、materialuv
Point/Vertexアトリビュートで指定することができます。
UV座標を指定しなかった場合、そのマテリアルの方向は、ポリゴンのエッジで決まります。Cloth ObjectのVisualizationタブには、Cloth Objectで現在使用されているUV方向を確認できるオプションがあります。
Relative Stiffness の各パラメータは、オブジェクト全体に均一なStiffness(剛性)を割り当てます。
オブジェクトの一部を弱くまたは強くしたいのであれば、clothstretchhstiffness
, clothshearstiffness
, clothvolumestiffness
のPointアトリビュートを使って局所的にStiffness(剛性)を乗算することができます。
Relative Damping Ratio
この値は0から1の間にしてください。 このパラメータは、 Overall Damping Ratio の乗数として動作します。 Relative Damping Ratio パラメータは、平面形状(ストレッチ+シアー)の変化や曲げの大きさで起きるエネルギー損失の大きさを別々に決めることができます。
Anisotropic Strength
この値は、布サーフェスの内部圧力の強さをUとV方向に別々に変えることができます。
UとVの方向は、materialuv
Point/Vertexアトリビュートで指定することができます。例えば、布をV方向よりもU方向へ強く引き延ばしたいのであれば、 Anisotropic Strength のU成分を低い値(例えば、0.5)に設定し、V成分をそのままにします。
Seam Angle
これは別々のパネルに属する2つのプリミティブ間のエッジに沿ったRest Angle(静止角度)です。
パネルは、Stitch拘束を使用したり、単一のCloth Object内で頂点別にRest Positionを指定することで、2つのCloth Objectを一緒にピン留めして接続されます。
Seam Angleは、単一パネル内のポリゴンでのRest Angleに影響を与えません。オブジェクトの一部に別々のRest Angleを持たせたいのであれば、seamangle
Primitiveアトリビュートを使用してRest Angleを局所的に乗算することができます。
Geometry ¶
Initial Geometry
このジオメトリは、オブジェクトの初期のシミュレーション状態を決定します。 それぞれのポイントに対して、初期位置と初期Velocityを決定します。
これは、内部フォースの計算および衝突検出に使用されるジオメトリです。 Clothジオメトリは、高速で良い結果のシミュレーションを確実に行なうためにガイドラインを満たす必要があります。
ほとんどの場合、Remesh SOPを使用すると、適切なシミュレーションメッシュを作成しやすくなります。
三角ジオメトリを使用する場合、materialuv
Point/Vertexアトリビュートを与えて、布の生地の方向を指定することを推奨します。
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に合わせようとする強さを決めます。ソルバは、この目的のために架空の消散フォースを作成します。
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 objects in this solver
これが有効である時、このオブジェクトは同じソルバを持つ別のオブジェクトと衝突します。 これらの衝突は、ジオメトリ(ポリゴンおよび/または四面体)に基づいて、連続的な衝突検出を使って制御されます。 同じソルバ上のオブジェクト間の衝突に関しては、ポリゴンは両面で扱われます。 ポリゴンの両面が衝突します。四面体メッシュの表面は、片面(外側)のみで衝突します。
Collide within this object
無効である場合、このオブジェクトの中にある2つのポリゴンは互いに衝突しません。
Collide within each component
無効である場合、繋がった同じコンポーネントに属する2つのポリゴンが互いに衝突することはありません。
Collide within each fracture part
このオプションは、ソルバでFracturingが有効な時のみ効果があります。
無効である場合、同じ破砕部分に属する2つのポリゴンが互いに衝突することはありません。
破砕部分は整数値のfracturepart
Primitiveアトリビュートによって制御されます。
Collision Radius
これは、ポリゴンを中心に仮想的に厚みを付けた層の半径です。この層は、ポリゴンから最大で Collision Radius の幅を持つ空間の領域を構成します。 布ジオメトリのように両側衝突サーフェスに関しては、この層が各ポリゴンの両面(正面と背面)に適用されます。 Static Objectでのポリゴンのような片側衝突サーフェスに関しては、この Collision Radius はポリゴンの正面にのみ適用されます。 FEM Solverは、そのオブジェクトのこの層が決して互いに貫通したり通過しないように試みます。
例えば、 Collision Radius が0.01と0.02である2面ポリゴンのペアが衝突する時、ソルバは0.03の距離でこれらのオブジェクトのポリゴンを離そうとします。
Collision Radius パラメータは、スケール依存型の非常に数少ないパラメータの一つです。 ジオメトリのスケールや詳細さを変更するとき、このパラメータを調整することが非常に重要になります。
シミュレーションジオメトリの中で最短エッジの長さよりも著しく小さい Collision Radius を使います。 典型的には、 Collision Radius はエッジの平均長の1%を超えてはいけません。 自己衝突の問題を回避するには、ジオメトリの中のポリゴンをそこそこ均等なサイズに保たなければなりません。 布ジオメトリの中のポリゴンの平均的なサイズと比較して非常に小さいエッジを持つポリゴンは、避けてください。
Friction
オブジェクトの摩擦係数。 この値が0の時、オブジェクトに摩擦がないことを意味します。 これは、接触面に対する接線方向の速度が衝突から影響を受ける強さを決定します。 2つのオブジェクトが接触している時、ソルバは、その関係しているオブジェクトの摩擦係数を乗算して、その接触に対して有効な摩擦係数を取得します。
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 ¶
Collision Radius
布のcollisionradius
を可視化します。
Collision Radius Color
布のcollisionradius
ガイドジオメトリのカラー。
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(質量密度)の乗数。 |
コリジョン制御アトリビュート ¶
FEM Solverは、コリジョンIDを調べて、どのプリミティブのペアが衝突させることが可能なのかを判断しています。
これは、プリミティブのペアが同じコリジョンIDを持っていれば、それらが衝突可能であるというルールです。
(この仕組みは、将来のリリースで、ユーザ側でどのコリジョンIDのペアを衝突させるのかを正確に指定できるように拡張される予定です。)
特別な値の-1を設定することで、特定のプリミティブに対して衝突を抑制することができます。
各ポリゴンや四面体の内側と外側に対して別々にコリジョンIDを指定することができます。
ポリゴンの外側は、まさに法線方向と同様に、時計回り(右ねじの報告と逆の方向)の規則で決まります。
interiorcollisionid
を指定しなかった場合、デフォルトのコリジョンIDの0が三角形で使用されますが、内側コリジョンは四面体では無効です。
exteriorcollisionid
を指定しなかった場合、デフォルトのコリジョンIDの0は四面体と三角形の両方で使用されます。
FEM筋肉シミュレーションを例にすると、筋肉はスキンポリゴンの内側だけに衝突をさせたいので、それらのポリゴンのexteriorcollisionid
には-1(無効)を設定することができます。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
exteriorcollisionid
|
Primitive | Integer | ポリゴンまたは四面体サーフェスの外側のコリジョンID。 |
interiorcollisionid
|
Primitive | Integer | ポリゴンまたは四面体サーフェスの内側のコリジョンID。 |
以下のアトリビュートを使用することで、局所的に Repulsion パラメータと Friction パラメータを乗算することができます:
名前 | クラス | タイプ | 説明 |
---|---|---|---|
repulsion
|
Primitive | Float | FEMオブジェクトの Repulsion の乗数。 |
friction
|
Primitive | Float | FEMオブジェクトの Friction の乗数。 |
マテリアル空間アトリビュート ¶
materialP
アトリビュートは、マテリアル空間内のシミュレーションオブジェクトの位置と見なすことができます。
現行位置P
にはシミュレーションオブジェクトの変形状態が反映されるのに対して、materialP
は、その変形の影響を受けません。
つまり、materialP
はシミュレーション全体を通して常に同じ状態です。
Finite Element Solverでは、materialP
アトリビュートはフレームが変わっても一定のままであると想定しています。
そのため、(例えば、SOP Solverを使って)外部からmaterialP
を決して変更しないようにしてください。変更してしまうと、間違ったシミュレーション結果が生成されてしまいます。
Rest Shape を指定しなかった場合もrestP
アトリビュートがない場合でも、materialP
を永久的な静止位置として見なすことができます。
静止位置のアニメーションがシミュレーションで不要な場合には、materialP
のみを指定してください(restP
は不要です)。
シミュレーションのどのステージでも、materialP
と現行P
を比較することで、シミュレーションオブジェクトの四面体が変形しているかどうか判断することができます。
その変形量を次々にオブジェクト内でエネルギーとして定義されていきます。
繊維の収縮などソリッドの異方的挙動を決定できるようにするために、ソルバはローカルのUVWフレームを利用することができます。
これらのUVWフレームは、materialU
, materialV
, materialW
のPoint/Vertexアトリビュートを使って、直接的に指定することができます。
別の方法として、materialuvw
Point/Vertexアトリビュートで指定されたUVW位置から、それらのUVWフレームを推測することができます。
FEM Solverは、materialP
アトリビュートで指定可能なマテリアル空間内にUVW方向を埋め込みます。
この挙動を正しく把握したいのであれば、FEM Solverに接続したUVW方向をmaterialP
のマテリアルポジションを基準に可視化してください。
FEM筋肉シミュレーションに関しては、筋肉の繊維方向を指定する最も簡単な方法は、materialW
Point/Vertexアトリビュートを使用することです。
この場合では、materialU
とmaterialV
の方向を指定しなくても問題ありません。というのも、その場合には、ソルバがmaterialW
から任意のmaterialU
とmaterialV
の方向を推測するからです。
materialuvw
アトリビュートを使用することで、マテリアル空間のUVWパラメータ空間を指定することができます。
materialuvw
で表現されたU, V, Wの方向は、シミュレーションオブジェクトに対して異方性や繊維方向を制御する場合に重要です。
FEM筋肉シミュレーションの使用例では、筋肉の収縮を制御する際に、その繊維方向の制御が重要になります。
materialuvw
と同様に、materialuv
アトリビュートを使用することで、布のUV方向を指定することができます。
このアトリビュートは、三角形メッシュで必須です。特に、布の縦糸と横糸の方向を定義する時です。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
materialP
|
Point or Vertex | Vector | マテリアル空間を定義した各ポイントのマテリアルの位置。 |
materialU
|
Point or Vertex | Vector | マテリアル空間内のU方向。 |
materialV
|
Point or Vertex | Vector | マテリアル空間内のV方向。 |
materialW
|
Point or Vertex | Vector | マテリアル空間内のW方向。 |
materialuvw
|
Point or Vertex | Vector | 四面体の各ポイント/頂点におけるローカルのマテリアルUVW座標。 |
materialuv
|
Point or Vertex | Vector | ポリゴン/ポリスープの各ポイント/頂点におけるローカルのマテリアルUVW座標。 |
マテリアルプロパティの乗数アトリビュート ¶
fracturepart
|
Primitive | Integer | オブジェクトを粉砕不可な部分に区分けします。-1(粉砕不可)、粉砕可能な部分を示す非マイナスの数値のどちらかを指定してください。 |
enablefracturing
|
Point/Vertex | Integer | ポイントまたは頂点に対して局所的に粉砕を有効/無効にします。 |
fracturethreshold
|
Point/Vertex | Float | オブジェクトの Fracture Threshold の乗数。 |
粉砕コントロールアトリビュート ¶
破壊のシミュレーションを作成する時、まとまった四面体を指定することを推奨します。
そうしないと、破壊プロセスが、単一の四面体で構成された非常に膨大な数の別々の破片を作成してしまう場合があります。
そのためには、fracturepart
アトリビュートを使用すれば、そのまとまり毎に0以上の整数を割り当てることができます。
パーツを指定したくない領域では、fracturepart
を-1に設定することができます。つまり、その領域の各プリミティブは、それ自体がパーツになります。
現実世界のマテリアルは、どの箇所も均等な強度になっていない傾向があります。
リアルな結果にするには、Vertexアトリビュートのfracturethreshold
を使って、局所的に Fracture Threshold を変化させることを推奨します。
fracturepart
|
Primitive | Integer | オブジェクトを破壊不可の部分に分けます。-1(パーツなし)かパーツを意味する0以上の整数のどれかを指定します。 |
enablefracturing
|
Point/Vertex | Integer | ポイントまたは頂点に対して局所的な破壊を有効/無効にします。 |
fracturethreshold
|
Point/Vertex | Float | オブジェクトの Fracture Threshold の乗数。 |
抵抗フォースコントロールアトリビュート ¶
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 | 各ポイントのベース位置 |
FEM Solverの Allow Changing Rest を有効にすると、restP
アトリビュートを使用して静止位置を修正することができます。
restP
アトリビュートを使用することで、すべてのオブジェクトポイントに対してアニメーションする静止位置を指定することができます。
例えば、Finite Element Solverで計算する前に、SOP Solver内でフレーム毎にrestP
を修正することができます。
これによって、特に塑性変形といった効果を表現することができます。
シミュレーション全体を通して静止位置を同じままにしたい場合は、restP
アトリビュートを使用しないでください。
この場合では、materialP
アトリビュートを指定するだけで十分です。materialP
は永久に変更されない静止位置として機能します。
materialP
アトリビュートを指定しなかった場合、Finite Element Solverは、Creation Frameで自動的に作成されたbaseP
アトリビュートに戻そうとします。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
restP
|
Point/Vertex | Vector | 各ポイントのRest Position。 |
ターゲットアトリビュート ¶
ターゲットアトリビュートを使用することで、シミュレーションオブジェクトを部分的にターゲットアニメーションに追従させることができます。
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(静止状態の張り)の乗数として作用します。
materialW
Vertex/Pointアトリビュートを使用することで、この繊維方向そのものを指定することができます。
これは、特に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シミュレーションは、入力のプリミティブの品質に影響を受けやすい傾向があります。 低品質なプリミティブは、有限要素シミュレーションの処理が遅くなったり、不安定になったり、解が求まらなくなることがあります。 低品質なプリミティブは、Tet 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 | 外部フォース密度の別名 |
出力 ¶
First
このノードで作成されたClothオブジェクトが、単一出力を通して送り出されます。
ローカル変数 ¶
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 |