On this page |
Cloth Configure Object DOPは、シミュレーションオブジェクトを受け取り、それを Cloth Objectとして使用するのに必要なデータを取り付けます。
このDOPはCloth Object DOPと非常に似ていますが、Empty Object DOPなどの他のDOPを使用して、明示的にオブジェクトの作成を制御することができます。 これを使えば、10フレーム毎に、より高度なインスタンス化またはオブジェクトを作成することができます。
詳細は、ClothのフォースとClothの衝突を参照してください。
パラメータ ¶
Material ¶
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アトリビュートを与えて、布の生地の方向を指定することを推奨します。
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に合わせようとする強さを決めます。ソルバは、この目的のために架空の消散フォースを作成します。
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 ¶
Visualization ¶
Collision Radius
布のcollisionradius
を可視化します。
Collision Radius Color
布のcollisionradius
ガイドジオメトリのカラー。
Attributes ¶
Create Quality Attributes
これは、シミュレーションしたジオメトリ上にquality
Primitiveアトリビュートを作成します。
最低品質が0、最高品質が1です。プリミティブの品質が良いほど、計算のパフォーマンスと安定性が良くなります。
Create Energy Attributes
このトグルを有効にすると、オブジェクトに運動エネルギーと潜在エネルギーの密度を示したアトリビュートを生成させることができます。 さらに、エネルギー損失率の密度を示したアトリビュートが生成されます。
Create Force Attributes
このトグルを有効にすると、force
アトリビュートを生成することができます。
Create Collision Attributes
Create Fracture Attributes
入力 ¶
First
適切なデータを取り付けることで、Clothオブジェクトに変換するシミュレーションオブジェクト。
出力 ¶
First
このノードに渡されたシミュレーションオブジェクトが、それらのオブジェクトにCloth Objectsが取り付けられていると見なされるのに必要なデータ付きで出力されます。
ローカル変数 ¶
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 |