On this page | |
Since | 12.0 |
Bullet Data DOPは、シミュレーションオブジェクトを受け取り、Bullet Solverで使用するのに必要なデータを取り付けます。
このDOPは、Bulletエンジンに特定のオブジェクトを解釈する方法を伝えます。
パラメータ ¶
Bullet Data ¶
Show Guide Geometry
有効にすると、 Collision Padding を含むオブジェクトの衝突形状の可視化が表示されます。これは衝突検出の問題をデバッグするのに役に立ちますが、通常ではオブジェクトのジオメトリだけの表示よりも遅いです。
Color
ガイドジオメトリのカラー。
Deactivated Color
オブジェクトが移動せず、Bullet Solverによって非活動化された時のガイドジオメトリのカラー。
Geometry Representation
オブジェクトを表現するためにBulletエンジンで使用される形状。 Show Guide Geometry パラメータを使えば、この衝突形状を可視化することができます。
Convex Hull
オブジェクトのデフォルトの形状。Bullet SolverはジオメトリポイントのConvex(凸)ハルから衝突形状を作成します。
Concave
Bullet Solverは、ジオメトリをポリゴンに変換し、それらの三角形からConcave(凹)衝突形状を作成します。 この形状は、トーラスや中空管などのConcave(凹)オブジェクトをシミュレーションする時に役に立ちます。 しかし、必要な時にだけConcave(凹)表現を使用するようにしてください。その理由は、 Convex Hull 表現の方が通常ではパフォーマンスが良いからです。
Box
オブジェクトの境界ボックス。
Capsule
オブジェクトの境界カプセル。
Cylinder
オブジェクトの境界円柱。
Compound
Bulletプリミティブ(ボックス、球、円柱を含む)で構成された複雑な形状を作成します。Bake ODE SOPを使用する必要があります。
Sphere
オブジェクトの境界球。
Plane
静的な地面。
Create Convex Hull Per Set Of Connected Primitives
有効にすると、 Geometry Representation が Convex Hull の時、Bullet Solverは、ジオメトリ内の繋がったプリミティブのセット毎に 別々のConvex Hull衝突形状を含んだ複合形状を作成します。
AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry
有効にすると、 Position , Rotation , Box Size , Radius , Length の値の代わりに、オブジェクトのGeometryサブデータが解析されます。
Geometry Representation が Box , Capsule , Cylinder , Sphere , Plane のどれかに設定されている時、ジオメトリ境界を使用して、形状を作成します。
Position
Bullet空間でのオブジェクト形状の位置。 このパラメータは、 Geometry Representation が Box , Sphere , Capsule , Cylinder , Plane のどれかに設定されている時、 且つ、 AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry が無効の時に利用可能です。
Rotation
Bullet空間でのオブジェクト形状の向き。 このパラメータは、 Geometry Representation が Box , Capsule , Cylinder , Plane のどれかに設定されている時、 且つ、 AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry が無効の時に利用可能です。
Box Size
オブジェクト形状の半分の大きさ。 このパラメータは、 Geometry Representation が Box に設定されている時、 且つ、 AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry が無効の時に利用可能です。
Radius
球形状の半径。 このパラメータは、 Geometry Representation が Sphere , Capsule , Cylinder のどれかに設定されている時、 且つ、 AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry が無効の時に利用可能です。
Length
Y方向でのカプセルまたは円柱の長さ。 このパラメータは、 Geometry Representation が Capsule 、 Cylinder のどれかに設定されている時、 且つ、 AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry が無効の時に利用可能です。
Collision Padding
形状間の隙間埋め距離。このパラメータは、衝突検出の信頼性とパフォーマンスを改善するためにBulletエンジンで使用されます。 シーンのスケールに応じて、この値をスケールする必要があります。このパラメータは、衝突形状のサイズを大きくするので、衝突形状が大きくならないように Shrink Collision Geometry を有効にすることを推奨します。
このパラメータは、 Geometry Representation が Plane に設定されている時は利用不可です。
Shrink Collision Geometry
有効にすると、 Collision Padding がオブジェクトの有効サイズを大きくしないように、衝突ジオメトリが収縮されます。
このパラメータは、初期の段階で密接に詰め込まれた衝突形状がお互いに貫通しないようにシミュレーションのパフォーマンスを改善することができます。 また、 Collision Padding で引き起こされたオブジェクト間の隙間を除去します。
Geometry Representation が Box , Capsule , Cylinder , Compound , Sphere のどれかに設定されている時、 各プリミティブの半径/長さが、 Shrink Amount によって小さくなります。
Geometry Representation が Convex Hull に設定されている時、ジオメトリ表現の各ポリゴンが、 Shrink Amount によって内側に収縮します。
このパラメータは、 Geometry Representation が Concave 、 Plane のどれかに設定されている時は利用不可です。
Shrink Amount
Shrink Collision Geometry によるサイズ変更の度合い。 デフォルトでは、この値は、 Collision Padding と同じなので、 衝突形状を収縮したサイズ( Collision Padding を含む)は、オブジェクトのジオメトリと同じサイズになります。
このパラメータは、 Geometry Representation が Concave 、 Plane のどれかに設定されている時は利用不可です。
Add Impact Data
有効な時、シミュレーション時に発生するImpactが Impacts または Feedback のデータ内で並べ替えられます。 このオプションを有効にすると、シミュレーション時間とメモリ使用量が増える場合があります。
Impacts と Feedback のデータは、DOPオブジェクト上にサブデータとして追加されます。 タイムステップ内で少なくとも1つのImpactが存在すれば、Detailsビュー内でそれらのデータを確認することができます。
Feedback データは、実質的には Impacts データと同じですが、別々のソルバで計算されている複数のオブジェクト間でDOPネットワーク内の相互の作用が存在する時に使用されます。 例えば、RBDオブジェクトとFLIP流体オブジェクトを相互に作用させる場合、DOPネットワークは、その相互作用を解決するために複数のフィードバックループを実行し、 Feedback データを使用して、ソルバ間で Impacts データを渡します。
Enable Sleeping
有効にすると、オブジェクトが再び動くまで、移動しないオブジェクトのシミュレーションを無効にします。 オブジェクトが移動していないかどうか判断するには、線形速度と回転速度の閾値が使われます。 Display Geometry チェックボックスをオフにすれば、Guide Geometryのカラーが Color から Deactivated Color に変化することが確認できます。
Linear Threshold
オブジェクトの線形速度の停止と見なす閾値。オブジェクトの線形速度が、時間周期に対して、この閾値よりも小さければ、オブジェクトが停止していると見なされます。
Angular Threshold
オブジェクトの回転速度の停止と見なす閾値。オブジェクトの回転速度が、時間周期に対して、この閾値よりも小さければ、オブジェクトが停止していると見なされます。
入力 ¶
First
適切なデータを取り付けることで、Bulletオブジェクトに変換するシミュレーションオブジェクト。
出力 ¶
First
このノードに渡されたシミュレーションオブジェクトが、それらのオブジェクトにBullet 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単位分移動させます。