複雑なモーションやフォースを制御する

次のセクションでは、複雑なモーションおよびフォース(力)を制御するための方法を説明します。

リジッド ボディへインパルス(衝撃)をキー設定

インパルスのオン/オフをキー設定することにより、たとえばバットで打ったボールを表現するときなどで、リジッド ボディの速度を瞬間的に切り替えることができます。

インパルスをキー設定するには

  1. リジッド ボディを選択します。
  2. アニメーションの最初のフレームで、アトリビュート エディタを使用して、インパルス X、Y、Z およびスピン インパルス X、Y、Z を 0、0、0 にキー設定します。
  3. インパルスを起こすフレームに移動します。
  4. インパルス X、Y、Z およびスピン インパルス X、Y、Z の新しい値にキーを設定します。
  5. アトリビュートにキーを設定したフレームの次のフレームに移動します。
  6. インパルス X、Y、Z およびスピン インパルス X、Y、Z を 0、0、0 にキー設定します。
  7. グラフ エディタ(Graph Editor)またはタイム スライダで、すべてのキーの接線をステップに設定します。

    たとえば、タイム スライダでキーフレームを選択してから、チャネル ボックス(Channel Box)でアトリビュートを選択します。次に、タイム スライダを右クリックして接線 > ステップ(Tangents > Stepped)を選択します。それぞれのキーフレームに対してこの操作を繰り返します。

リジッド ボディ ダイナミクスとキーの統合

パッシブ リジッド ボディの場合、移動(Translate)および回転(Rotate)アトリビュートにキーを設定することによって、それをアニメートすることができます。アクティブ リジッド ボディの場合、フィールドや衝突のようなダイナミクスを使用してそれをアニメートすることができます。場合によってはキーとダイナミクスを組み合わせて使用したいこともあります。こうすることにより、たとえばキーを使用してテーブル上でボールを転がし、次に重力を使用してボールを落下させることができます。

キー設定後、ダイナミクスを使用するには

  1. オブジェクトを選択します。
  2. オブジェクトの移動(Translate)および回転(Rotate)アトリビュートにキーを設定してオブジェクトにモーションを与えます。
  3. キー設定されているモーションの開始フレームで、ソフト/リジッド ボディ > パッシブ キーの設定(Soft/Rigid Bodies > Set Passive Key)を選択します。

    これにより、アクティブ アトリビュートがオフに設定され、オブジェクトの現在の移動(Translate)および回転(Rotate)アトリビュートの値にキーが設定されます。

  4. ダイナミクスを制御する開始フレームで、ソフト/リジッド ボディ > アクティブ キーの設定(Soft/Rigid Bodies > Set Active Key)を選択します。

    これにより、アクティブ アトリビュートがオンに設定され、オブジェクトの現在の移動(Translate)および回転(Rotate)アトリビュートの値にキーが設定されます。

  5. ダイナミクスをオブジェクトに適用します。

    後続フレームでは、ソフト/リジッド ボディ > パッシブ キーの設定(Soft/Rigid Bodies > Set Passive Key)を選択し、コントロールをダイナミクスから移動(Translate)キーと回転(Rotate)キーに制御を切り替えることができます。

ダイナミクスの後でキー設定を使用するには

  1. オブジェクトを選択します。
  2. オブジェクトをリジッド ボディにし、そのモーションを制御するダイナミクスを使用します。
  3. ダイナミクスがモーションを制御している開始フレームで、ソフト/リジッド ボディ > アクティブ キーの設定(Soft/Rigid Bodies > Set Active Key)を選択します。

    これにより、アクティブ アトリビュートがオンに設定され、オブジェクトの現在の移動(Translate)および回転(Rotate)アトリビュートの値にキーが設定されます。

  4. 移動(Translate)回転(Rotate)キーを制御する開始フレームで、ソフト/リジッド ボディ > パッシブ キーの設定(Soft/Rigid Bodies > Set Passive Key)を選択します。

    これにより、アクティブ アトリビュートがオフに設定され、オブジェクトの現在の移動(Translate)および回転(Rotate)アトリビュートの値にキーが設定されます。

  5. モーションを制御するキーを設定します。

    後続フレームでは、ソフト/リジッド ボディ > アクティブ キーの設定(Soft/Rigid Bodies > Set Active Key)を選択し、コントロールを移動(Translate)キーと回転(Rotate)キーからダイナミクスに切り替えることができます。

    ヒント:

    キーの後でダイナミクスを使用してリジッド ボディのモーションをアニメートする場合、ダイナミクスへの切り替えが発生する前に存在していた速度がダイナミック モーションへ加えられます。ダイナミクスに続けてキーを使用してリジッド ボディのモーションをアニメートする場合、キーへの切り替えが発生すると、キー設定された位置が即座にリジッド ボディに取り込まれます。その前のダイナミック速度は、キー設定された位置に加えられません。

速度、フォース、衝突に関するデータの取得

リジッド ボディには、現在の速度、適用されているフォースや衝突を含む、読み取り専用アトリビュートがあります。このセクションでは、これらのアトリビュートについて説明します。

フォース、速度、回転、およびトルクのアトリビュート

リジッド ボディを選択すると、速度(Velocity)回転(Spin)フォース(Force)、およびトルク(Torque)に対する現在の X、Y、および Z コンポーネント値がアトリビュート エディタ(Attribute Editor)に表示されます。次の表に示すアトリビュート名を使用して、MEL コマンドやエクスプレッションでこれらのアトリビュートを問い合わせることができます。

ランタイム エクスプレッションの例

print (velocityX + "\n");

この結果、スクリプト エディタ(Script Editor)にそれぞれのフレームの velocityX の内容が表示されます。

コンタクト(接触)アトリビュート

リジッド ボディには、衝突によって発生するコンタクト(接触)に関するデータを格納する読み取り専用アトリビュートがあります。次の表に示すアトリビュート名を使用して、MEL コマンドやエクスプレッションでこれらのアトリビュートを問い合わせることができます。

これらのアトリビュートにデータを蓄積するには、まずリジッド ボディを制御するソルバを選択します。次に、アトリビュート エディタ(Attribute Editor)リジッド ソルバの状態(Rigid Solver States)セクションを表示し、コンタクト データ(Contact Data)をオンに設定します。コンタクト データ(Contact Data)をオンに設定するごとに、アトリビュート値はゼロになります。コンタクト データ(Contact Data)をオンに設定すると、再生スピードは遅くなります。

ランタイム エクスプレッションの例

print (rigidBody1.contactCount +"\n");

この結果、それぞれのフレームの接点の数が表示されます。