On this page | |
Since | 16.0 |
Cloth Object DOPは、DOPシミュレーション内にClothオブジェクトを作成します。 このDOPは、新しいオブジェクトを作成して、それが適切に順応するClothオブジェクトになるために必要なサブデータを取り付けます。 Clothオブジェクトは、FEM Solverによってシミュレーションすることができます。
SOPのポリゴンジオメトリを使用して、Clothオブジェクトを作成することができます。 高速に実行されて、且つ良い見た目のシミュレーションをするには、Clothジオメトリがガイドラインの条件を満たすようにしてください。
詳細は、ClothのフォースとClothの衝突を参照してください。
Cloth Objectの使い方 ¶
-
Clothオブジェクトに変換するオブジェクトを選択します。
-
Cloth タブのCloth Objectツールをクリックします。
パラメータ ¶
Model ¶
Stiffness Multiplier
これは、このオブジェクトのすべての内部剛性に対する乗数です。
Damping Ratio
これは、オブジェクトの変形が止まる速さを制御します。
Mass Density
これは、体積あたりの質量です。
Thickness
これは、面積あたりの布の体積を決定します。
Stretch Stiffness
これは、オブジェクトがUV方向の局所的なストレッチ(伸張)に抵抗する強さを決定します(materialuv
アトリビュートを参照)。
Shear Stiffness
これは、オブジェクトがUV方向の局所的なシアー(傾斜)に抵抗する強さを決定します(materialuv
アトリビュートを参照)。
Bend Model
これは、曲げに抵抗する内部フォースに使用するモデルのタイプを決定します。
Weak Bend Stiffness
これは、Weakベンドモデルにおけるオブジェクトが局所的な曲げに抵抗する強さを決定します。
Strong Bend Stiffness
これは、Strongベンドモデルにおけるオブジェクトが局所的な曲げに抵抗する強さを決定します。
Seam Angle
これは、異なるパネル間の静止角度を規定します。
Friction
これは、接触時の摩擦力の強さを制御します。
Deformation ¶
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で生成される風よりも、よりリアルでより正確です。
Attributes ¶
Create Quality Attributes
これは、シミュレーションしたジオメトリ上にquality
Primitiveアトリビュートを作成します。
最低品質が0、最高品質が1です。プリミティブの品質が良いほど、計算のパフォーマンスと安定性が良くなります。
Create Energy Attributes
このトグルを有効にすると、オブジェクトに運動エネルギーと潜在エネルギーの密度を示したアトリビュートを生成させることができます。 さらに、エネルギー損失率の密度を示したアトリビュートが生成されます。
Create Force Attributes
このトグルを有効にすると、force
アトリビュートを生成することができます。
Create Collision Attributes
Create Fracture Attributes
Visualization ¶
Collision Radius
布のcollisionradius
を可視化します。
Collision Radius Color
布のcollisionradius
ガイドジオメトリのカラー。
Creation ¶
Attributes ¶
出力 ¶
First
このノードで作成されたClothオブジェクトが、単一出力を通して送り出されます。
ローカル変数 ¶
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単位分移動させます。
Examples ¶
AnimatedClothPatch Example for Cloth Object dynamics node
このサンプルでは、1枚の布を4つの角でピン留めする方法を説明しています。その4つの角は、アニメーションジオメトリに拘束されています。
BendCloth Example for Cloth Object dynamics node
このサンプルでは、布オブジェクトのStiffness(剛性)を、Strong BendまたはWeak Bendパラメータで定義する方法を説明しています。
BendDamping Example for Cloth Object dynamics node
このサンプルでは、Damping(減衰)パラメータを使って、布オブジェクトがRest Position(静止位置)に落ち着く速さを制御する方法を説明しています。
BlanketBall Example for Cloth Object dynamics node
このサンプルでは、4つの角をピン留めした毛布上を跳ね返るボールをシミュレーションする方法を説明しています。
ClothAttachedDynamic Example for Cloth Object dynamics node
このサンプルでは、RBDオブジェクトのダイナミクスポイントに布を接続する方法を説明しています。
ClothFriction Example for Cloth Object dynamics node
このサンプルでは、布オブジェクトの物理特性であるFriction(摩擦)パラメータの使い方を説明しています。
ClothUv Example for Cloth Object dynamics node
このサンプルでは、UV座標を使って、三角形化した布のWarped(縦糸)とWeft(横糸)の方向を指定する方法を説明しています。
UV方向がグリッドのXY方向に揃っているので、メッシュを三角形化していても、四角形グリッドとほぼ同様の見た目になります。
青と黄の線で布の折り目の方向を可視化しています。これは、布オブジェクトのVisualizationタブで有効にすることができます。
DragCloth Example for Cloth Object dynamics node
このサンプルでは、布オブジェクトにNormal DragとTangent Dragのパラメータで、布オブジェクトの挙動に影響を与える方法を説明しています。
MultipleSphereClothCollisions Example for Cloth Object dynamics node
このサンプルでは、色々な特性を使って布を球と衝突させる方法を説明しています。 Stiffness(剛性)とSurface Mass Densityを調整することで、布の挙動を変更することができます。
PanelledClothPrism Example for Cloth Object dynamics node
このサンプルでは、形状を維持した開口部のある角柱を作成する布の作成方法を説明しています。
PanelledClothRuffles Example for Cloth Object dynamics node
このサンプルでは、seamangle
Primitiveアトリビュートを使ってStaticオブジェクトに追加した布オブジェクトを揺らす方法を説明しています。
See also |