Bullet Solver COMP

概要

Bullet Dynamicsシステムでは、Bullet Solver COMPはアクター/ボディ(Actor COMPなど)が動作する世界/シミュレーションに相当します。Bullet Solver COMPは、アクター/ボディ(Actor COMP)やフォース(ForceCOMP/Impulse Force COMP)を任意の数だけ含み、その名の通りBullet Physics APIを使用してシミュレーションを実行します。
Bullet Solver COMPは、いくつかのシミュレーションパラメータ(線形乗数や角度乗数など)に基づいてBulletシミュレーションを実行し、シミュレーションの進行に合わせて、その中に含まれるアクターCOMPのトランスフォームを更新します。シミュレーションは、COMP上のパラメータを使って、一時停止、スローダウン、スピードアップ、再開することができます。
Bullet Solver COMPのシミュレーションは真空中で行われるため、シミュレーション中のアクターに空気抵抗はかかりません。シミュレーションは指定されたサンプルレートでステップされ、それに応じてアクターCOMPのトランスフォームが更新されます。これらのトランスフォームは、Bullet Solver CHOPで表示される結果と同じです。
Bullet Solver COMPが参照するActor COMPは、そのネットワーク内にある必要はありません。他のBullet Solver COMPから参照されていなければ、どこにあっても構いません。
以下の章も参照してください。Bullet Dynamics、Actor COMP、Force COMP、Impulse Force COMP、Constraint COMP、Bullet Solver CHOP。

パラメータ – Solver ページ
Actors / actors

シミュレーションに含めるActor COMPを設定します。これらのアクターは、他のBullet Solver COMPで指定されていてはなりません。

Global Forces / forces

シミュレーションに含めるForce COMPを設定します。これらのフォースはグローバルな力であり、シミュレーション内のすべての非静的なアクターに適用されます。

Gravitational Acceleration / gravity

シミュレーション内のすべてのアクターにかかる重力を設定します。(単位:m/s^2)重力は、アクターの質量に関係なく適用されます。

  • X / gravityx
  • Y / gravityy
  • Z / gravityz
Dimension / dimension

シミュレーションのディメンションを設定します。このメニューのオプションは、Linear/Angular Multiplierパラメーターを使って再現することもできます。

  • 1D / 1d
    アクターはX軸の直線速度のみに制約され、角速度はありません。(linmult 1,0,0、angmult 0,0,0)
  • 2D / 2d
    アクターは、XY平面上の直線速度のみに制約され、角速度はZ軸周りのみに制約されます。(linmult 1,1,0、angmult 0,0,1)
  • 3D / 3d
    アクターは制約を受けず、どの方向にも動くことができます。同様にあらゆる方向に回転することができます。 (linmult 1,1,1 and angmult 1,1,1)
Linear Multiplier / linmult

シミュレーション内のアクターの線形速度を表す乗数を設定します。例えばlinmultが(0, 1, 1)の場合、アクターはY軸とZ軸方向には通常の速度で直線的に移動できますが、X方向には移動できません。これらの値は、内部でディメンションからの値と掛け合わされます。例えば、ディメンションが2Dで、linmultが(0, 1, 1)の場合、2DはZ軸に制約があり、このパラメータはY軸に制約があるため、アクターが動ける方向はY軸のみです。

  • X / linmultx
  • Y / linmulty
  • Z / linmultz
Angular Multiplier / angmult

シミュレーション内のアクターの角速度の乗数を設定します。例えば、angmultが(1, 0, 0)の場合、アクターはX軸でのみ回転することができます。これらの値は、内部的にdimensionの値と掛け合わされます。つまり、dimensionが2Dでangmultが(1, 0, 0)の場合、アクターはどの方向にも回転できません。2Dでは回転がZ軸にしか制約されず、このパラメータではX軸にしか制約されないからです。

  • X / angmultx
  • Y / angmulty
  • Z / angmultz
Initialize Sim and Collision Shapes / initall

すべてのボディを初期状態(位置、向き、速度)にリセットし、コリジョンシェイプを再作成します。このパラメータは、各Actor COMPの「Initialize Actor」をパルスするのと同じです。コリジョンシェイプの作成には時間がかかる場合がありますので、必要がない場合は、代わりに Initialize Sim を使用してください。コリジョンシェイプの作成に使用されたSOPが変更された場合や、インスタンス化OPが変更された場合は、コリジョンシェイプを再作成する必要があります。

Initialize Sim / init

すべてのボディを初期状態(位置、向き、速度など)にリセットします。これはシミュレーションのステップを開始するものではなく、初期化のみを行います。注意:これはActor COMPのコリジョンシェイプをリセットしません。上記の Initialize Sim and Collision Shapes または Actor COMP の Initialize Actor を使用してください。

Start Sim / start

シミュレーションを初期化して実行します。(ステッピングを開始する)

Play / play

シミュレーションを再生します。オンにするとシミュレーションを再生しますが、オフにすると再生しません。(一時停止します)

Sample Rate / rate

シミュレーションのサンプルレートを設定します。サンプルレートは1/rateタイムステップに影響します。

Simulation Speed / simspeed

シミュレーションの速度です。タイムステップの大きさに対する乗数で、シミュレーションを遅くしたり、速くしたりします。

Feedback CHOP / feedback

Bullet Solver CHOPの章を参照してください。 フィードバックする CHOP を設定します。Bullet Solver COMPは、CHOPからトランスフォームやベロシティのチャンネルを受け取り、次のシミュレーションステップの最初に、それぞれのアクタのトランスフォームやベロシティを上書きします。
チャンネル値を変更していないBullet Solver CHOPをフィードバックすると、何も上書きされていないので、シミュレーションは通常通り行われます。これにより、以下の例のようなことが可能になります。たとえば、シミュレーション内のすべてのアクタのベロシティをネガティブにするには、Bullet Solver CHOPをSwitch CHOPに入れて、2番目の入力をベロシティチャンネルをネガティブにしただけの同じCHOPにします。次にボタンパルスをスイッチインデックスにエクスポートして、Switch CHOPをFeedback CHOPパラメータに入れます。すると、ボタンが1フレーム押されたとき(パルス状)に、ベロシティが上書きされてネガティブになります。フィードバックに必要なチャンネルは、actor_id と body_id チャンネルだけで、他のチャンネルはすべてオプションです。チャンネル名はすべてBullet Solver CHOPと同じにしてください。Bullet Solver CHOPで出力されるチャンネルに加えて、フォースとトルクも使用できます。チャンネル名は force[xyz] と torque[xyz] です。注:スケールはフィードバックには使用できません。

Perform Contact Test / contacttest

シミュレーション内のすべてのボディに対して接触テストを有効にします。接触テストはBullet Solver CHOPのcollidingおよびtotal_collisionsチャンネルに使用されます。このパラメータを有効にしないと、これらのチャンネルの値は更新されません。NOTE: ボディの数が多いと接触テストに時間がかかることがあります。

Always Simulate / alwayssim

この機能を有効にすると、Bullet Solver COMPはすべてのフレームをシミュレート(つまりcook)します。

Callbacks DAT / callbacks

pythonのコールバックを持つDATへの参照です。利用可能なコールバックは、onCollision(solverComp, collisions)、onFrameStart(solverComp)、onFrameEnd(solverComp)、onInit(solverComp)、onStart(solverComp)です。
これらのコールバックを持つDATは、Bullet Solver COMPの作成時に自動的に作成され、参照されます。
onCollision(solverComp, collisions)は、発生したすべてのコリジョンのリストを渡し、Perform Contactテストを有効にする必要があります。
collisionsは、名前の付いたタプル(bodyAとbodyB)のリストです。
bodyAとbodyBは衝突に参加している2つのボディです。bodyAとbodyBはPythonのBodyオブジェクトです(Bodyクラス参照)。

パラメータ – Xform ページ

COMP共通- Xform ページの章を参照して下さい。

パラメータ – Pre-Xform ページ

COMP共通- Pre-Xform ページの章を参照して下さい。

パラメータ – Render ページ

COMP共通- Render ページの章を参照して下さい。

パラメータ – Extensions ページ

COMP共通- Extensions ページの章を参照して下さい。

パラメータ – Common ページ

COMP共通- Common ページの章を参照して下さい。