On this page | |
Since | 18.0 |
RBD Bullet Solver SOPは、Bulletシミュレーションの実行を簡素化したDOPネットワークのラッパーです。 たいていのRBD SOPsと同様に、3つの入力SOPをベースに、追加で2つの入力を受け取ります。
1番目の入力はレンダージオメトリです。 3番目の入力を接続しなかった場合は、この入力がシミュレーションジオメトリとして使用されます。
2番目の入力は拘束ジオメトリで、シミュレーションする破片間の動力学的な拘束関係を具現化するために使用します。
この拘束ジオメトリは、RBD Material Fracture SOPを使ってジオメトリを粉砕させた時に作成されます。
または、
RBD Constraints From Lines、
RBD Constraints From Curves、
RBD Constraints From Rulesなどの方法を使って明示的に作成することもできます。
これらの拘束ジオメトリには、それを各破片に繋げる
name
PointアトリビュートとConstraint Relationship系DOPのデータ名に合致したconstraint_name
Primitiveアトリビュートが必要で、シミュレーションの進行中の挙動を定義するためのPrimitiveアトリビュートを追加することができます。
他にも、RBD Constraint Properties SOPを使用することで、それらのPrimitiveアトリビュートをセットアップすることができます。
3番目の入力はプロキシジオメトリで、レンダージオメトリを簡略化した表現です。 プロキシジオメトリは、シミュレーションを高速化するのに非常に適しています。 ここに接続したジオメトリがシミュレーションジオメトリとして使用されます。
4番目の入力にはコリジョンジオメトリを接続します。
パックジオメトリが認識されるので、RBD Configure SOPを使って設定することでパックジオメトリの挙動を個々に駆動させることができます。
一部の破片をアニメーションさせ、一部の破片を変形するように設定することができると同時に、他の破片が球をジオメトリ表現として使用するように設定することができます。
5番目の入力にはガイドジオメトリを接続します。
ここには、パックジオメトリ、または、接続性から複数の部分に分割して別々の破片にパックすることができるメッシュを接続することができます。
シミュレーションジオメトリがパックされていない場合、シミュレーション用に内部的にパックフラグメントに変換されます。
RBD Configure SOPを使用することで、シミュレーションジオメトリとコリジョンジオメトリをパックしてアトリビュートを設定して、色々な
Bulletオブジェクトの挙動を駆動させることができます。
詳細は、ガイドシミュレーションのヘルプのページを参照してください。
Note
ガイドジオメトリは、個々の破片のトランスフォーム行列を使って、ガイドピースを駆動させます。
ガイドジオメトリがパックオブジェクトの場合は、Intrinsicトランスフォームが使用されます。
アンパックされたジオメトリは、キャプチャ開始フレーム時のname
アトリビュート毎(これが利用できなければ、接続性毎)にパックした後にトランスフォームされます。
そのため、ガイドジオメトリとしての1枚の変形メッシュは、ガイドが期待通りに動作する要件を満たすために、まず最初に色々なクラスタに分解する必要があります。
このソルバの中に入るとDOPノードを追加することができるので、特別なフォースや他のSOP Solver DOPを適用することができます。 これらのノードチェーンがRigid Body Solver DOPのPre-Solve入力に送られてシミュレーションの挙動がカスタマイズされ、このノードのデフォルト機能が拡張されます。
collisionignore
を使用する場合、シミュレーションジオメトリオブジェクトをrbd_object
、4番目の入力のオブジェクトをcollision_object
、生成された地面またはHeight Fieldをgroundplane
として参照することができます。
Impactを追加すると、Object Merge SOPを使ってRBD Bullet Solverの中のOUT_IMPACT_POINTS
という名前のNullを取得することで、それらのImpactポイントを利用することができます。
ほとんどのビジュアライザオプションは、シミュレーションから即座にフィードバックを得ることができ、拘束を表示させることで、分離させる閾値を調整するのに役立ちます。
さらに、ノードステートがアクティブな時にビューポート内で右クリックして、コンテキストメニューからビューポートインスペクターにアクセスすることができます。
このビューポートインスペクターは、単にマウスカーソルを置くだけで特定のプリミティブのアトリビュートを検査することができます。
ビューポートインスペクターから拘束情報を取得するには、そのコンテキストメニューの Output for View Flags でView Constraints
をクリックします。
nameアトリビュートタイプ
RBD Bullet Solver SOPが一貫して同じname
アトリビュートタイプを受け取ることは非常に重要です。
ポイントとプリミティブのname
アトリビュートを混在させてしまうと、ソルバがこの不一致を解決できる見込みはなく、完全に失敗するか、または誤った結果が得られます。
name
Primitiveアトリビュートに関しては、常に入力ジオメトリをチェック(ノード上で中クリック)してください。
name
Pointアトリビュートが表示されるのは、パックフラグメントを扱っている場合のみです。
この場合、name
Pointアトリビュートが必要です。
name
Pointアトリビュートとname
Primitiveアトリビュートを両方使用する場合、または、一部のジオメトリにname
アトリビュートがあって他のジオメトリにname
アトリビュートがない場合には注意してください。
Unpack SOPまたは
RBD Unpack SOPを使ったアンパックは、PrimitiveアトリビュートよりもPointアトリビュートが優先されます。
これらのアトリビュートタイプを混在させてマッチングさせた場合や、ポイント/プリミティブに対して一貫性なく
name
アトリビュートを付けている場合や、一部のジオメトリにname
アトリビュートがまったくない場合には、
すべてのプリミティブの名前が消えてしまって最終的には空っぽの文字列になったり、または、曖昧なデータセットになってしまう可能性があります。
RBD Bullet Solver SOPは、ポイントまたはプリミティブのどちらかで空っぽの名前が見つかれば、それとは別のタイプから名前を取得することを試みます。 とはいえ、このような状況は回避するべきです。
ビジュアライザとビューポートツール
RBD Bullet Solverには、RBDシミュレーションの調整とデバッグをするのに役立つビジュアライザがいくか用意されています。 ノードステートがアクティブな時、色々なガイドジオメトリ(Bulletジオメトリ表現、ガイドプレビューなど)を表示したり、拘束情報を最小/最大値の情報付きでヒストグラムとして表示したり、マウスカーソル下にあるプリミティブのアトリビュート値を確認できるようにビューポートインスペクターを有効にすることができます。
ビューポートインスペクター
ビューポートインスペクターは、マウスカーソル下にある出力プリミティブのアトリビュート値を表示します。
色々な出力の情報を確認するには、Bullet Solverノードのメニューの Flags の Output for View を目的の出力に切り替えます。
例えば、拘束に関する情報を確認したいのであれば、Bullet Solverノードの Output for View を“Constraint Geometry”に切り替えます。
ビューポート内で
1
, 2
, 3
のホットキーを使用することで、それぞれ“Geometry”, “Constraint Geometry”, “Proxy Geometry”に切り替えることができ、
4
を押すと、それらのフラグ間を切り替えることができます。
DOPネットワークで生成されたアトリビュートを確認したいのであれば、まず最初にそれらのアトリビュートをジオメトリに転送する必要があります。 Advanced タブの Output セクションで、転送したいアトリビュートを選択して、 Transfer to Geometry または Transfer to Proxy Geometry のどれかを有効にします。 Visualize タブの Inspector セクションにある Attributes パラメータで表示させたい情報のアトリビュートを指定することができます。
パラメータ
Reset Simulation
シミュレーションキャッシュ全体をクリアします。
Start Frame
シミュレーションを開始するHoudiniプレイバー上のフレーム番号。
Solver
Time Scale
Bullet Solverの実質の計算時間をスケールします。 これを使用することで、バレットタイムのような効果を出すことができて、Bullet Solverの物理計算がHoudiniプレイバーとは異なるレートで実行することができます。 値を2にすると、オブジェクトが2倍高速で落下し、0.1にすると10分の1の速度に低下します。
Substeps
Bulletが内部的に使用するシミュレーションステップ毎のサブステップ数。 この数を上げると、シミュレーションの精度が上がります。
高速に移動するオブジェクトが検出されないコリジョン問題の修復に役立つ1つの方法は、このサブステップ数を上げることです。
Constraint Iterations
反復回数が多いほど、拘束と衝突を制御する精度が良くなります。
Bullet Object
Emit RBDs
このチェックボックスを有効にすると、現行フレームで利用可能な入力シミュレーションジオメトリと拘束ジオメトリがシミュレーションに追加されます。
それらの名前の後に"_" + int(frame * 100)
接尾辞が付きます。
例えば、フレーム1
でのpiece0-1
という名前はpiece0-1_100
に変更され、フレーム2.5
でのpiece0-1
という名前はpiece0-1_250
に変更されます。
Age RBDs
オブジェクトにage
Pointアトリビュートを追加します。
このアトリビュートは、そのオブジェクトがシミュレーションに追加されてからの経過時間を追跡します。
拘束プリミティブにもage
アトリビュートが追加されます。
このアトリビュートは、カスタムフォースを駆動したり、数秒後にオブジェクトを削除したりするのに役立ちます。
Add Active Age Attribute
オブジェクトにactive_age
Pointアトリビュートを追加します。
これは、そのオブジェクトがアクティブになってから(つまり、active
アトリビュート値が0から1に切り替わってから)の経過時間を追跡します。
Just Activated Group
現行フレームでアクティブになったオブジェクトのみを含んだポイントグループを作成します。 これは、オブジェクトがアクティブになった直後にそのオブジェクトに初期フォースを適用するのに役立ちます。
Overwrite Attributes from SOP
このチェックボックスを有効にすると、フレーム毎に更新されるシミュレーションジオメトリ上のPointアトリビュートのリストを指定します。
name
Pointアトリビュートは、SOPジオメトリから該当するポイントを検索する際に使用されます。
Emits RBDs が有効な時、これは最初のシミュレーションフレームのシミュレーションに追加されたrbdbullet_emit
Pointアトリビュートが0に設定されているRBDsでのみ動作します。
Collision Padding
形状間の安全距離。この距離は、コリジョン検出の信頼性とパフォーマンスを良くするためにBulletエンジンで使用されます。 あなたのシーンのスケールに応じて、この値をスケールする必要があります。 この距離は、コリジョン形状のサイズを大きくするので、コリジョン形状が膨張しないように Shrink Collision Geometry を有効にすることを推奨します。
このオプションは、 Plane ジオメトリ表現では利用不可です。
Linear Threshold
オブジェクトの線形速度に対するスリープ閾値。 オブジェクトの線形速度が一定の時間でこの閾値未満になると、そのオブジェクトが移動していないものとして扱われます。
Angular Threshold
オブジェクトの角速度に対するスリープ閾値。 オブジェクトの角速度が一定の時間でこの閾値未満になると、そのオブジェクトが移動していないものとして扱われます。
Density
オブジェクトの質量は、体積と密度の乗算で決まります。
Rotational Stiffness
オブジェクトは、かすった打撃を受けると、たいていの場合にはスピンします。 スピンする回転量は、オブジェクトの形状と質量分布、いわゆる 慣性テンソル によって異なります。
Rotational Stiffness は、スピンする回転量に適用されるスケール係数です。 この値が高いほどオブジェクトが回転しにくくなり、低いほど回転しやすくなります。
Bounce
オブジェクトの弾力性。Bounceが1.0の2つのオブジェクトが衝突すると、それらのオブジェクトはエネルギーを消失せずに跳ね返ります。 Bounceが0.0の2つのオブジェクトが衝突すると、それらのオブジェクトは停止します。
Friction
オブジェクトの摩擦係数。0の値は、摩擦なしを意味します。
これは、接線Velocityが衝突と静止接触で影響を受ける強さを制御します。
Collisions
Use Collisions
コリジョンオブジェクトを有効にします。
Solve on Creation Frame
シミュレーション開始フレームで計算します。
Overwrite Attributes from SOP
このチェックボックスを有効にすると、フレーム毎に更新されるシミュレーションジオメトリ上のPointアトリビュートのリストを指定します。
name
Pointアトリビュートは、SOPジオメトリから該当するポイントを検索する際に使用されます。
Geometry Representation
Bulletエンジンがオブジェクトを表現する際に使用する形状。
Convex Hull
オブジェクトのデフォルト形状。
Bullet Solverは、ジオメトリポイントの凸ハルからコリジョン形状を作成します。
Concave
Bullet Solverは、ジオメトリをポリゴンに変換し、その結果の三角形から凹コリジョン形状を作成します。
この形状は、ドーナツ形状または中空管といった凹オブジェクトを模倣する時に役立ちます。
しかし、通常では Convex Hull の方がパフォーマンスが良いので、必要な時にのみ Concave を使用することを推奨します。
Box
オブジェクトの境界ボックス。
Capsule
オブジェクトの境界カプセル。
Cylinder
オブジェクトの境界円柱。
Compound
Bulletプリミティブ(ボックス、球、円柱)で構成した複合形状を作成します。
Bake ODE SOPを使用する必要があります。
Sphere
オブジェクトの境界球。
Plane
静的な地面。
Initial Object Type
オブジェクトの初期状態を指定します。
active
、animated
、deforming
のPointアトリビュートを使用することで、オブジェクト単位で値を可変させることができます。
アニメーションオブジェクトと変形オブジェクトに関しては、name
Pointアトリビュートを使って、 SOP Path から該当するポイントを検索することができます。
Create Active Objects
このオブジェクトはシミュレーションされ、シミュレーション内の他のオブジェクトに反応します。
Create Static Objects
このオブジェクトは動かなくなり、シミュレーション内の他のオブジェクトに反応しません。
Create Animated Static Objects
このオブジェクトのトランスフォームはタイムステップ毎に SOP Path から更新されますが、このオブジェクトはシミュレーション内の他のオブジェクトに反応しません。
Create Deforming Static Objects
このオブジェクトのコリジョン形状はタイムステップ毎に SOP Path から再構築されますが、このオブジェクトはシミュレーション内の他のオブジェクトに反応しません。
Create Deforming Active Objects
このオブジェクトはシミュレーションされ、シミュレーション内の他のオブジェクトに反応し、そのコリジョン形状もタイムステップ毎に SOP Path から再構築されます。
Collision Padding
形状間の安全距離。この距離は、コリジョン検出の信頼性とパフォーマンスを良くするためにBulletエンジンで使用されます。 あなたのシーンのスケールに応じて、この値をスケールする必要があります。 この距離は、コリジョン形状のサイズを大きくするので、コリジョン形状が膨張しないように Shrink Collision Geometry を有効にすることを推奨します。
このオプションは、 Plane ジオメトリ表現では利用不可です。
Bounce
オブジェクトの弾力性。Bounceが1.0の2つのオブジェクトが衝突すると、それらのオブジェクトはエネルギーを消失せずに跳ね返ります。 Bounceが0.0の2つのオブジェクトが衝突すると、それらのオブジェクトは停止します。
Friction
オブジェクトの摩擦係数。0の値は、摩擦なしを意味します。
これは、接線Velocityが衝突と静止接触で影響を受ける強さを制御します。
Ground
Add Ground Plane
None
地面を追加しません。
Ground Plane
シミュレーションに地面を追加します。
Height Field
シミュレーションにHeight Field静的オブジェクトを追加します。
Height Field
Height FieldジオメトリのSOPパス。
Use Deforming Geometry
変形するHeight Fieldジオメトリを有効にします。
Ground Position
地面の中心の位置。
Rotation
地面の向き。
Bounce
オブジェクトの弾力性。Bounceが1.0の2つのオブジェクトが衝突すると、それらのオブジェクトはエネルギーを消失せずに跳ね返ります。 Bounceが0.0の2つのオブジェクトが衝突すると、それらのオブジェクトは停止します。
Friction
オブジェクトの摩擦係数。0の値は、摩擦なしを意味します。
これは、接線Velocityが衝突と静止接触で影響を受ける強さを制御します。
Dynamic Friction Scale
滑るオブジェクトは、静止しているオブジェクトよりも摩擦係数が低いです。このパラメータは、2つのオブジェクトに関連したスケール係数です。 これは摩擦係数ではなくて、0から1の間のスケールです。
1の値は、動摩擦と静摩擦が同じになることを意味します。0の値は、静摩擦を越えると、オブジェクトが摩擦なしで作用することを意味します。
Forces
Gravity
単位質量オブジェクトに適用するフォース量。 フォースは質量でスケールされるので、オブジェクトは、この加速度を受けます。
単位にメートル、秒、キログラムを使用していれば、地球の重量に適した値は-9.81
です。
単位にフィート、秒、ポンドを使用していれば、地球の重量に適した値は-32
です。
Add Drag
POP Drag DOPを有効にします。
Wind Velocity
パーティクルが引っ張られる速度。
ゼロにすると、パーティクルが停止します。
それ以外の値にすると、パーティクルが、この風の速度まで加速します。
Air Resistance
パーティクルに対する影響力の強さ。 値が高いほど、Wind Velocityにより速く一致するようになります。 これは、競合する風が同じパーティクルに適用された時のウェイトの平均化にも使われます。
Ignore Mass
入力パーティクル上のmass
を無視します。
フォースは、accel
(加速度)ではなくforce
として保存されるので、これは、force
とmass
のアトリビュートを乗算することで行なわれます。これは、ソルバで取り消されます。
airresist
も同様に乗算されます。
Ignore Mass を有効にすると、RBDオブジェクトの小さな破片が大きな破片と同じ速度で移動します。これは、より制御可能なシミュレーションに役に立ちます。
Use VEXpressions
VEXエクスプレッションを使用してDrag系パラメータを修正します。
Add Drag Spin
POP Drag Spin DOPを有効にします。
Axis Relative to Particle’s Orientation
指定したゴール軸は、パーティクル自身のリファレンスフレームへ回転されます。 したがって、(0, 1, 0)の値は、ワールド空間ではなくパーティクルの空間の上方向になります。
Goal Axis
Rest(安定)状態になった時にパーティクルがスピンする目的の軸。
Goal Spin Speed
Rest(安定)状態になった時にパーティクルが指定した軸でスピンする速さ(度/秒)。 これをゼロにすると、スピンに抵抗を加えて停止させます。 プラスの値にすると、スピンの速さがこの値に一致するまでスピンの速さを上下させます。
Spin Resistance
パーティクルがGoal Spin Speedになるまでの速さ。
Use VEXpressions
VEXエクスプレッションを使用してDrag Spin系パラメータを修正します。
Constraints
Constraints
Glue Constraint Relationship DOPを参照してください。
Bullet Soft Constraint Relationship DOPを参照してください。
Hard Constraint Relationship DOPを参照してください。
Cone Twist Constraint Relationship DOPを参照してください。
Slider Constraint Relationship DOPを参照してください。
Breaking Thresholds
Overwrite with SOP
このフラグは、設定される度にネットワークを再インポートするので、完全にアニメーションする拘束の挙動が可能です。
Breaking
これは、様々な拘束グループに対して実行可能な切断条件の数を制御します。
Constraint Names
拘束の切断が計算される拘束名。
Note
Glue接着は、暗黙的に切断計算される唯一の拘束なので、デフォルトの拘束名には追加されていません。
Group
切断計算で評価される拘束プリミティブ。
Mode
Delete Constraints
指定した閾値よりも大きいアトリビュート値を持った拘束ジオメトリが削除されます。
Switch to Next Constraint
指定した閾値よりも大きいアトリビュート値を持った拘束ジオメトリは、あればnext_constraint_name
に切り替わり、なければ削除されます。
At Frame
指定したフレームで拘束を切断します。
From Frame
切断は、指定したフレーム以降でのみ評価されます。
Angle Threshold
この角度(単位はラジアン)を超えると拘束が切断されます。
Var
ユーザーの加減で割合を増減させることができます。
例えば、閾値を1000
、Varを0.1
に設定すると、その閾値は900
から1100
の範囲にばらつきます。
Varを1
に設定すると、0
から2000
の範囲にばらつきます。
Scaling
指定したアトリビュート値で閾値をスケールします。
Angle Attribute
Angle Thresholdに乗算させるアトリビュートの名前。
Update from Input
入力の拘束ジオメトリからアトリビュート値を更新します。 これによって、ジオメトリアトリビュートによって閾値をもっと細かくアニメーションさせることができます。
Distance Threshold
アンカーポイント間の距離がこの距離よりも離れると拘束が切断されます。
Note
長い拘束が自動的に切断されてしまうのを回避できるようにするために、この拘束距離からrestlength
分だけ減算されます。
restlength
を基準とした距離閾値を指定したいのであれば、 Distance Threshold を1 + <factor>に設定し、 Scale by Attribute を有効にし、 Distance Attribute にrestlength
を設定してください。
例えば自然長から10%伸びた拘束を自動的に切断するには、 Distance Threshold を1.1
に設定します。
Force Threshold
このフォースを超えると拘束が切断されます。
Note
Houdini 18.0以降では、Glue拘束は、拘束ジオメトリ上のforce
アトリビュートを更新します。このアトリビュートは、拘束された2つの破片間のフォースの差分に平均質量を乗算した大きさを意味します。
この強度を基準にしてフォースに応じてGlue拘束を切断するには、 Force Threshold を1に設定し、 Scale by Attribute を有効にし、 Force Attribute にstrength
を設定してください。
Impact Threshold
このImpactを超えると拘束が切断されます。
Torque Threshold
この回転モーメントを超えると拘束が切断されます。
Plastic Flow Threshold
この線形塑性流動を超えると拘束が切断されます。
Note
これは、線形塑性を有効にしたソフト拘束でのみ利用可能です。
Angular Plastic Flow Threshold
この角度塑性流動を超えると拘束が切断されます。
Note
これは、角度塑性を有効にしたソフト拘束でのみ利用可能です。
Use VEXpression
VEXコードを入力して、拘束を更新または修正することができます。
例えば、適用されたフォースに基づいてGlue拘束の強度を弱めたいのであれば、@strength = max(0, @strength - f@force);
と入力します。
Bulletパックプリミティブを2番目の入力に接続し、指定するSOPジオメトリを3番目の入力に接続します。
VEXpression SOP Path
3番目の入力を介してVEXpressionスニペットで使用するSOPジオメトリのパス。
Evaluation Node Path
ch()
などのVEX関数は、通常ではこのノードを基準にして評価します。
ここにノードパスを入力することで、検索を開始するパスを上書きすることができます。
これは、デジタルアセットに埋め込む際に、そのアセットルートから検索を開始させたい場合に役立ちます。
Impacts
Add Impact Data
Impact Analysis DOPを有効にします。
Add Impact Analysis
Impact Analysis DOPを有効にします。
Impact Dataはこのソルバのポスト計算で利用可能であるのに対して、Impact Analysis DOPからのデータはプリ計算でアクセス可能です。
このデータはクリアされないので、メモリ使用量が増加してしまう可能性があります。
Time Threshold
記録されるインパクトポイント間の最小の時間量(秒)。値を高くするほど、インパクトポイントが少なくなり、時間のギャップが大きくなります。
Impact Threshold
記録されるインパクトポイントの最小のインパクトの強さの量。値を高くするほど、より強いインパクトに対してのみポイントを作成し、弱いインパクトを無視します。
Distance Threshold
記録されるインパクトポイント間の最小距離。値を高くするほど、インパクトポイントが少なくなり、空間のギャップが大きくなります。
Force Impact Object
このDOPオブジェクトとの衝突のみに対してインパクトポイントを作成します。
Fetch Impacts
インパクトポイントを取り込むためのObject Merge SOPを作成します。
Guided Simulation
Use Guides
ガイドシミュレーションを有効にします。
Use Guided Neighbors
これを有効にすると、ガイドクラスタ毎の最小数の繋がった隣接ピースを条件として使ってガイドを切断します。 これによって、そのガイドクラスタ内の直接の隣接ピースすべてが切断された時に、孤立したピースがガイドのままになるのを回避することができます。
Setup
Use Pre-Configured Setup
RBD Guide Setup SOPを使用して、このRBD Bullet Solver外でガイドをセットアップすることができます。
Group
ガイドされるシミュレーションジオメトリパックプリミティブ。
Start Frame
ガイド系アトリビュートがシミュレーションジオメトリに取り込まれる参照開始フレーム。
End Frame
ガイドアニメーションの終了フレーム。
Release on End Frame
End Frame に到達すると、すべてのピースがガイドから開放されます。
Mode
Near Point
ガイド名は、ガイドピースの重心までの近接度に基づきます。
Near Surface
ガイド名は、最近接ガイドサーフェス位置に基づきます。
Max Distance
この距離を超えると、シミュレーションジオメトリがガイドを取得しなくなります。
この値が-1
の時は、最大距離は使用されません。
Strength
ガイド強度。
Distance to Strength
ガイドジオメトリまでの距離に基づいてガイド強度を乗算します。
Distance
Strength Multiplier の最小距離と最大距離を指定します。
Strength Multiplier
ガイドピースまでの距離が Distance の最小距離から最大距離の範囲にある時に使用する強度乗数。
Blend
グローバルのブレンド値と乗算されるブレンドアトリビュートをシミュレーションピースに追加します。
Ensure Neighbor
ガイドピースがそのガイドクラスタ内で何も隣接ピースを持たない時、そのガイドピースが最近接ピースのガイドターゲットを継承します。
Points per Area
隣接ピースが見つかると、まず最初にすべてのオブジェクトのサーフェス上にポイントがばら撒かれます。 近くにあるポイントは、近くにあるサーフェスを検出できるほど十分な数がなければなりません。 これは、ジオメトリサイズの2乗でスケールを下げてください。 例えば、ジオメトリが10倍大きくなれば、 Points per Area を1/100倍にしてください。
Search Radius
隣接ポイントを検索する際の最大許容距離を指定します。
Max Search Points
検索可能な隣接ポイント数の上限を指定します。 数を下げればパフォーマンスが良くなりますが、隣接ピース上のポイントよりも同じピース上のポイントのみが検知されてしまう危険性があり、隣接ポイントが取得できなくなってしまいます。
Max Connections
各ばら撒きポイントが接続できるピース数の上限を指定します。 これによって、サーフェスポイントが隣接ピースを検出する精度を上げることができます。 ただし、この数を上げるとパフォーマンスが悪くなります。
Transfer Attributes
ガイドピースからRBDピースへ転送するアトリビュート。
Use VEXpressions
VEXエクスプレッションを使用して、ガイド強度とブレンドアトリビュートを修正することができます。
Constraints
Remove Intra-Guide Constraints
異なるガイドクラスタに属したピース間の拘束を削除します。
Note
ガイドピースと非ガイドピース間の拘束は影響を受けません。
Group
内部ガイド拘束を削除する時に考慮される拘束ジオメトリプリミティブ。
Simulation Settings
Method
ガイドシミュレーションを行なう時に使用される線形Velocity(v
)と角速度(w
)の更新メソッド、または、ターゲットVelocity(targetv
)とターゲット角速度(targetw
)の更新メソッドを切り替えます。
Velocity
直接v
とw
を更新します。つまり、これが最も正確なガイドの方法になりますが、途中にコリジョンがあると微震を引き起こす可能性があります。
Target Velocity
targetv
とtargetw
のアトリビュートを更新します。これらのアトリビュートは、 Air Resistance パラメータと Drag パラメータを組み合わせて使用して、目的のVelocityに近くなるようにオブジェクトを動かすフォースと、目的の角速度に近くなるようにオブジェクトを回転させる回転モーメントを計算します。
これは、直接v
とw
を更新するよりも寛容的で、ピースがガイドの位置と向きから逸れることが許されているので微震の軽減に役立ちます。
これを適切に動作させるには、このソルバの Use Implicit Drag オプションが有効になっている必要があります。
Air Resistance
ターゲットVelocity(targetv
)とターゲット角速度(targetw
)に一致させる重要度を指定します。
Drag
targetv
アトリビュートとairresist
アトリビュートによってオブジェクトが抵抗を受ける時、このアトリビュートを使ってその抵抗力にさらにスケールをかけます。
Blend
ガイドの線形速度/角速度と元々のVelocity/角速度をLerp(線形補間)するブレンド量。 ブレンド量を下げると、柔らかい減衰のバネのような拘束になり、ガイドの線形速度/角速度での衝突計算で起こり得る微震を軽減することができます。
Linear Threshold
計算されたガイド位置とその結果のポスト計算位置との距離が Linear Threshold とガイド強度で乗算した値よりも大きい時、そのピースは非ガイドになります。
Angular Threshold
計算されたガイド方向とその結果のポスト計算方向との角度(単位は度)が Angular Threshold とガイド強度で乗算した値よりも大きい時、そのピースは非ガイドになります。
Distance Threshold
ガイドピースからBulletプリミティブまでの距離と静止時の距離の差がこの Distance Threshold とガイド強度で乗算した値よりも大きくなった時、そのピースは非ガイドになります。
Linear Threshold
計算されたガイド位置とその結果のポスト計算位置との累積した距離が Linear Threshold とガイド強度で乗算した値よりも大きい時、そのピースは非ガイドになります。
Angular Threshold
計算されたガイド方向とその結果のポスト計算方向との累積した角度(単位は度)が Angular Threshold とガイド強度で乗算した値よりも大きい時、そのピースは非ガイドになります。
Distance Threshold
ガイドピースからBulletプリミティブまでの距離と静止時の距離の差がこの Distance Threshold とガイド強度で乗算した値よりも大きくなった時、そのピースは非ガイドになります。
Minimum Neighbors
同じガイドクラスタ内で繋がっている隣接ピースの数がこの数より少ない時、そのピースは非ガイドになります。 静止時にガイド隣接ピースを持たないピースは無視されます。
ガイド計算を行なった後にVEXスニペットを実行します。 これは、その結果のガイドの挙動をもっと上手く制御するために、計算されたVelocityまたはターゲットVelocityを修正することを許可します。
Use VEXpression
ポストガイドWrangleを有効にします。
VEXpression Group
Bulletパックプリミティブのグループにのみ影響を与えます。 デフォルトでは、現在ガイドされているプリミティブにのみ影響するように“__guided”グループが選択されています。
VEXpression
ガイドBulletパックプリミティブを更新または修正するためのVEXコードを入力します。
2番目の入力にガイドジオメトリを接続し、3番目の入力に入力シミュレーションジオメトリを接続します。
Evaluation Node Path
ch()
などのVEX関数は、通常ではこのノードを基準にして評価します。
ここにノードパスを入力することで、検索を開始するパスを上書きすることができます。
これは、デジタルアセットに埋め込む際に、そのアセットルートから検索を開始させたい場合に役立ちます。
Advanced
Bullet World Scale
Bulletワールドをこの数でスケールし、そして、出力されたジオメトリをこの数の逆数でスケールします。 これによって、微小なピースで起こり得る問題を解決することができます。
スケール依存のシミュレーションジオメトリアトリビュート(density
, velocity
, accelmax
, speedmin
, speedmax
, bullet_collision_margin
, bullet_shrink_amount
)は、この数でスケールされます。
スケール依存の拘束ジオメトリアトリビュート(restlength
, strength
, plasticthreshold
)は、この数でスケールされます。
フォースと閾値は、必要に応じて適時スケールされます。
Warning
Bulletワールドをスケールする時、拘束のVEXpressionsがスケールしたワールドで実行されます。 そのため、ジオメトリのルックアップには、そのスケールを考慮する必要があります。 同様に、このSOPのEditable Nodesとして設定されているサブネット内で適用したカスタムフォースもスケールを考慮する必要があります。
Cache Memory (MB)
このシミュレーションのキャッシュに使用可能なメモリ容量(単位はメガバイト)を指定します。 この制限を超えると、古いキャッシュのエントリーが削除されます。
Substeps
内部のDOPネットワークのTimestepパラメータのエクスプレッションは、このパラメータを使って、DOPシミュレーションがフレーム毎に実行するサブステップ数を制御します。
Sleeping Time
オブジェクトの速度が、この時間の間で線形速度と角速度の閾値未満になった時、そのオブジェクトは非活動になってスリープ状態になります。 これによって、いくつか静止オブジェクトが存在するようなシミュレーションにおいてパフォーマンスを上げることができます。
Note
そのオブジェクトがスリープ状態になると、その隣接オブジェクトやそれによって拘束されているオブジェクトもスリープ状態になります。
Contact Breaking Threshold
キャッシュ化した接触点を破棄するかどうかを判断する時にBulletエンジンが使用する距離閾値。 これはオブジェクトの境界ボックスに追加される余白に影響を与えるので、シーンスケールに応じてこの値を調整することでパフォーマンスを改善することもできます。
Use Implicit Drag
targetv
とairresist
のPointアトリビュートで表現された抵抗をそのままフォースとして適用するのではなくて、その抵抗にもっと正確な減衰を適用します。
これは、targetw
とspinresist
のアトリビュートで表現された回転の抵抗にも影響します。
Constraint Solver
Bulletが衝突と拘束を解決するために使用する拘束ソルバを指定します。 どちらのソルバも作業負荷を並列化しますが、それらのソルバがそれを行なうのに使用する手法が異なります。 Parallel Gauss-Seidel (Islands) は、小さな“島”のオブジェクトをたくさん作用させる場合(例えば、平積みされたたくさんの本)に高速なのに対して、 Parallel Gauss-Seidel (Graph Coloring) は、“島”が少なくて大きい場合(例えば、崩壊する巨大なビル)にパフォーマンスが良いです。
これらのソルバを使って得られる結果は通常では同一になりませんが、品質的な違いは少ないです。
Randomize Constraint Order
Constraint Iterations の各繰り返しの前に、拘束をランダムに並べ替えるように指定します。 これにより、安定性が改善されることがありますが、若干パフォーマンスが悪くなります。
Ensure Islands are Independent
ソルバが、相互作用させるオブジェクト(追加、削除、位置変更させるオブジェクトを含む)の島の変化によって、それらの変化がオブジェクト間に影響しない限り、他の島が異なるシミュレーション結果を生成してしまわないようにさせます。 このオプションを無効にすると、ソルバは、まったく同じ入力を使った場合でしか再シミュレーションで同じ結果を生成できません。 このオプションを有効にすれば、若干パフォーマンスが悪くなるものの、再シミュレーションしてもその結果はあまり変わらないようにすることができます。
Solve Tolerance
十分に近い解が得られた場合に Constraint Iterations の最大数に達する前に拘束ソルバを終了させることができます。 値が大きいほど、精度が悪くなる代わりにパフォーマンスが良くなります。
Contact CFM
CFM(Constraint Force Mixing)パラメータを上げると、Contact拘束が柔らかくなり、シミュレーションの安定性が良くなることがあります。 Contact拘束は、このパラメータと拘束の強化に必要なフォースの乗算に比例した量で問題になることがあります。
Contact ERP
次のシミュレーションステップ間で修復されるContact拘束に対する拘束エラーの比率を指定します。 ERP(Error Reduction Parameter)を0に設定すると、拘束されたオブジェクトは、シミュレーションが進むほど離れていきます。 ERPを1に設定すると、ソルバは、次のシミュレーションステップ間ですべての拘束エラーの修復を試みます(しかし、これは、場合によっては不安定になります)。 0.1から0.8の値が、たいていのシミュレーションで推奨します。
Split Impulse
相互に貫通したオブジェクトを(オブジェクトが爆発的に吹っ飛ぶのを回避するために)Velocityを加えずに分割しようとします。
位置拘束とVelocity拘束を計算した際の誤差によって、システムに余分なエネルギーを引き起こす可能性があります。 このオプションはその余分なエネルギーのほとんどを除去しますが、特に安定したスタッキング(累積)に関しては若干品質の低下を招きます。
Penetration Threshold
Split Impulse は、オブジェクトがこの距離よりも大きく貫通している時だけ適用されます。この数値は、マイナス(オブジェクト間の距離が0未満であることを意味します)にしてください。
Split Impulse ERP
貫通距離が Penetration Threshold の範囲内で Split Impulse が有効なContact拘束に対して Error Reduction Parameter を上書きします。
Transfer Attributes
アトリビュートを出力シミュレーションポイントに転送します。
Transfer to Geometry
上記でリストしたアトリビュートを出力ジオメトリに転送します。
Transfer to Proxy Geometry
上記でリストしたアトリビュートを出力プロキシジオメトリに転送します。
Visualize
Display Visualization Geometry
ガイドジオメトリと視覚化ジオメトリの表示を有効にします。
Show Geometry Representation
このソルバで使用されているBulletジオメトリ表現を表示します。
Note
これは、シミュレーションのパフォーマンスを劇的に重くしてしまうので、シミュレーション開始時でのデバッグ目的でのみ使用することを推奨します。
Show Active (Green)
アクティブなピースを緑色のワイヤーフレームオーバーレイで表示します。
Show Sleeping (Red)
スリープのピースを赤色のワイヤーフレームオーバーレイで表示します。
Show Guided (Blue)
ガイドのピースを青色のワイヤーフレームオーバーレイで表示します。
Show Guide Capture
ガイド(シミュレーションなし)によってトランスフォームされたガイドジオメトリを表示します。
この色相はガイドクラスタを意味し、その値はstrength
アトリビュート値を意味します。
このモードでは、ビューポートインスペクターは、ガイドに関する情報を表示します。
Guide Capture Frame
ガイドキャプチャジオメトリにタイムシフトを適用して、指定したフレームにおけるガイドの影響力を視覚化します。
Guide Capture Blend
ガイド(シミュレーションなし)によってトランスフォームされたガイドジオメトリを表示します。
この色相はガイドクラスタを意味し、その値はblend
アトリビュート値を意味します。
Show Guide Neighbor Count
赤から青までのカラーランプでガイド隣接ピースの数を表示します。 ブラックはガイド隣接ピースがないことを意味し、ホワイトは Use Guided Neighbors が無効になっていることを意味します。
Show Constraints
拘束ジオメトリの表示を有効にします。
Show Bullet Constraint Guides
様々なBullet拘束系DOPガイドジオメトリの表示を有効にします。
Guide Radius
Bullet拘束系DOPガイドジオメトリのサイズを制御します。
Show Object Links
拘束オブジェクトに拘束を接続したガイドジオメトリの表示を有効にします。
False Color Mode
None
拘束ジオメトリにカラーを適用しません。
Angle
ビューポートの左上に拘束ジオメトリ上の角度値の範囲を示したヒストグラムとその最小/最大値の情報を表示します。 拘束ジオメトリはそのヒストグラムに応じてカラーが塗られます。
Angular Plastic Flow
ビューポートの左上に拘束ジオメトリ上の角度塑性流動値の範囲を示したヒストグラムとその最小/最大値の情報を表示します。 拘束ジオメトリはそのヒストグラムに応じてカラーが塗られます。
Distance
ビューポートの左上に拘束ジオメトリ上の距離値の範囲を示したヒストグラムとその最小/最大値の情報を表示します。 拘束ジオメトリはそのヒストグラムに応じてカラーが塗られます。
Force
ビューポートの左上に拘束ジオメトリ上のフォース値の範囲を示したヒストグラムとその最小/最大値の情報を表示します。 拘束ジオメトリはそのヒストグラムに応じてカラーが塗られます。
Impact
ビューポートの左上に拘束ジオメトリ上のImpact値の範囲を示したヒストグラムとその最小/最大値の情報を表示します。 拘束ジオメトリはそのヒストグラムに応じてカラーが塗られます。
Plastic Flow
ビューポートの左上に拘束ジオメトリ上の塑性流動値の範囲を示したヒストグラムとその最小/最大値の情報を表示します。 拘束ジオメトリはそのヒストグラムに応じてカラーが塗られます。
Torque
ビューポートの左上に拘束ジオメトリ々の回転モーメント値の範囲を示したヒストグラムとその最小/最大値の情報を表示します。 拘束ジオメトリはそのヒストグラムに応じてカラーが塗られます。
Constraint Name
ビューポートの左上に拘束名に関する情報を表示し、constraint_name
アトリビュートを持った各プリミティブに割り当てられているカラーを表示します。
拘束ジオメトリはそのカラーが塗られます。
Custom
ビューポートの左上に拘束ジオメトリ上のユーザー定義アトリビュート値の範囲を示したヒストグラムとその最小/最大値の情報を表示します。 拘束ジオメトリはそのヒストグラムに応じてカラーが塗られます。
Attribute
ヒストグラムを表示しそれに応じて拘束ジオメトリにカラーを塗るためのfloatアトリビュートの名前を指定します。
Show Impacts
Impactsが有効になっている時、そのImpactポイントを赤い球で表示します。
Show Ground
地面ジオメトリを表示します。
Show Collision
コリジョンジオメトリを表示します。
Show Collision Geometry Representation
ソルバで使用されているコリジョンジオメトリ表現を表示します。
Note
これは、シミュレーションのパフォーマンスを劇的に重くしてしまうので、シミュレーション開始時でのデバッグ目的でのみ使用することを推奨します。
Attributes
ビューポートインスペクターで表示するアトリビュートのリストを指定します。
Font Size
インスペクターテキストのフォントサイズを指定します。
Float Precision
アトリビュート値の表示に使用する浮動小数点精度を指定します。
Examples
GuidedRBDBulletSolver Example for RBD Bullet Solver geometry node
このサンプルでは、RBD Bullet Solver SOPのガイド機能の使い方を説明しています。
KatamariDamacy Example for RBD Bullet Solver geometry node
このサンプルでは、カスタムフォースと動的拘束生成を使ったRBD Bullet Solver SOPの使い方を説明しています。
MaterialFractureTutorial Example for RBD Bullet Solver geometry node
このサンプルには、このチュートリアル(destruction/tutorials/intro_to_mbd_1)で使用されているセットアップが含まれています。
RBDAgeExample Example for RBD Bullet Solver geometry node
このサンプルには、(Age RBDsの機能による)ageアトリビュートを利用したセットアップが含まれています。
RBDBulletSolver Example for RBD Bullet Solver geometry node
このサンプルには、RBD Buller Solver SOPの色々な使い方が含まれています。
RBDBulletSolverEmission Example for RBD Bullet Solver geometry node
このサンプルでは、RBD Bullet Solver SOPの放出機能の使い方を説明しています。
See also |