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 の時に利用可能です。
Rotation
Bullet空間でのオブジェクト形状の向き。 Geometry Representation が Box, Capsule, Cylinder, Plane の時に利用可能です。
Box Size
オブジェクト形状の半分の大きさ。 Geometry Representation が Box の時に利用可能です。
Radius
球形状の半径。 Geometry Representation が Sphere, Capsule, Cylinder の時に利用可能です。
Length
Y方向でのカプセルまたは円柱の長さ。 Geometry Representation が Capsule または Cylinder の時に利用可能です。
Collision Padding
形状間の隙間埋め距離。このパラメータは、衝突検出の信頼性とパフォーマンスを改善するためにBulletエンジンで使用されます。 シーンのスケールに応じて、この値をスケールする必要があります。このパラメータは、衝突形状のサイズを大きくするので、衝突形状が大きくならないように Shrink Collision Geometry を有効にすることを推奨します。
このオプションは、 Plane のジオメトリ表現では利用不可です。
Shrink Collision Geometry
Collision Padding がオブジェクトの有効サイズを大きくしないように、衝突ジオメトリを収縮させます。
このパラメータは、初期の段階で密接に詰め込まれた衝突形状がお互いに貫通しないようにシミュレーションのパフォーマンスを改善することができます。 また、 Collision Padding で引き起こされたオブジェクト間の隙間を除去します。
Geometry Representation が Box, Capsule, Cylinder, Compound, Sphere の時、各プリミティブの半径/長さが、 Shrink Amount によって小さくなります。
Geometry Representation が Convex Hull の時、ジオメトリ表現の各ポリゴンが、 Shrink Amount によって内側に収縮します。
このオプションは、 Concave または Plane のジオメトリ表現では利用不可です。
Shrink Amount
Shrink Collision Geometry によるサイズ変更の度合いを指定します。デフォルトでは、この値は、 Collision Padding と同じなので、 衝突形状を収縮したサイズ( Collision Padding を含む)は、オブジェクトのジオメトリと同じサイズになります。
このオプションは、 Concave や Plane のジオメトリ表現では利用不可です。
Add Impact Data
有効な時、シミュレーション時に発生するImpactが Impacts または Feedback のデータ内で並べ替えられます。このオプションを有効にすると、シミュレーション時間とメモリ使用量が増える場合があります。
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 と 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単位分移動させます。