群集アニメーションにバリエーションを追加する

 
 
 

群集システムのアクターは、事前に記録されたアニメーションで定義されたパラメータに従って動作または反応します。たとえば、ある地形カラーから別の地形カラーに移動するときのアクターの動作方法や、障害物と衝突したときに取るアクションなどです。

このセクションでは、シーン内の既存のアニメーションに変化を持たせる方法について説明します。

¥Data¥XSI_Samples¥Scenes¥ICE¥CrowdFX で入手できるサンプルの群集シーンを使用して、このドキュメントで説明したとおりに、事前に記録されたアニメーションでバリエーションを試すことができます。

アクター プロキシに異なるアニメーションを割り当てる

グループ内の各アクターに異なるアニメーションを割り当てることにより、アニメーションをより興味深くすることができます。この処理には次が含まれています。

  1. アニメーション状態を初期化する
  2. [挙動](Behavior)ICE Tree でアニメーション状態を使用する

アニメーション状態を初期化するには

  1. [Emit_and_Initialize]ICE Tree で、[データのセット](Set Data)コンパウンドを追加して新しい ICE 属性を作成します。
  2. [データのセット](Set Data)コンパウンドをダブルクリックします。
  3. [データのセット](Set Data)プロパティ エディタで、ICE 属性のリファレンス名またはアクション ID を入力します。
  4. この[データのセット](Set Data)属性を整数で保持するには、[整数](Integer)ノードを追加して、その出力ポートを[データのセット](Set Data)コンパウンドの参照値に割り当てます。

    これにより、整数 1 または 0 が各アクターに割り当てられます。

  5. [範囲ごとに値をランダマイズ](Randomize Value by Range)コンパウンドを追加して、出力ポートを[整数](Integer)ノードの入力ポートに接続します。
  6. [範囲ごとに値をランダマイズ](Randomize Value by Range)コンパウンドをダブルクリックします。
  7. プロパティ エディタで、[最大値](Max Value)を 1 に設定し、[アニメート](Animated)オプションをオフに切り替えます。
  8. [データのセット](Set Data)コンパウンドの出力ポートを[Emit_and_Initialize]ICE Tree の入力ポートに接続します。

[挙動](Behavior)ICE Tree でアニメーション状態を使用するには

  1. [挙動](Behavior)ICE Tree で[データの取得](Get Data)ノードを追加します。
  2. [データの取得](Get Data)ノードをダブルクリックします。
  3. [データの取得](Get Data)プロパティ エディタで、[データのセット](Set Data)ノードで入力したのと同じアクション ID を入力します。
  4. アクターの転倒を定義する既存の ICE Tree をコピーします。
  5. アクターの転倒を定義する最初の ICE Tree で、[アニメーション状態のセット](Set Animation State)コンパウンドをダブルクリックします。
  6. [アニメーション状態のセット](Set Animation State)プロパティ エディタで、[状態](State)ドロップダウン リストからアニメーション状態を選択します。
  7. 同様に、アクターの転倒を定義する 2 番目の ICE Tree で、[アニメーション状態のセット](Set Animation State)プロパティ エディタの[状態](State)ドロップダウン リストから新しいアニメーション状態を選択します。
  8. [条件による選択](Select Case)ノードを追加します。
  9. 最初の ICE Tree の[実行](Execute)出力ポートを[条件による選択](Select Case)ノードの[Case0]入力ポートに接続します。
  10. 2 番目の ICE Tree の[実行](Execute)出力ポートを[条件による選択](Select Case)ノードの[Case1]入力ポートに接続します。

    これらのノードは、アクション ID によってアクターを集約したり揺らしたりするために接続されています。

  11. [データの取得](Get Data)ノードの[値](Value)出力ポートを[条件による選択](Select Case)ノードの[条件](Condition)入力ポートに接続します。
  12. [条件による選択](Select Case)ノードの[結果](Result)出力ポートを[条件](If)ノードの[True の場合](If True)入力ポートに接続します。

アニメーションの再生速度に変化を持たせる

[アニメーション状態パラメータのセット](Set Animation State Parameters)ノードを使用して、事前に記録されたアニメーションの速度に変化を持たせることができます。

事前に記録されたアニメーションの再生速度に変化を持たせるには

  1. [挙動](Behavior)ICE Tree で[アニメーション状態パラメータのセット](Set Animation State Parameters)ノードを追加します。
  2. [アニメーション状態パラメータのセット](Set Animation State Parameters)ノードの[実行](Execute)出力ポートを転倒するアクターの ICE Tree の[実行](Execute)入力ポートに接続します。
  3. [アニメーション状態パラメータのセット](Set Animation State Parameters)ノードをダブルクリックします。
  4. [状態](State)ドロップダウン リストから、速度を定義するアニメーション状態を選択します。
  5. 速度(Speed)値を増加または減少し、事前に記録したアニメーションをどのくらい高速または低速で再生するかを指定します。
  6. [値を中心にランダマイズ](Randomize Around Value)コンパウンドを追加します。
  7. [値を中心にランダマイズ](Randomize Around Value)プロパティ エディタで、[基本値](Base Value)[変位](Variance)、および[シード](Seed)に異なる値を指定します。[アニメート](Animated)オプションをオンに切り替えます。
  8. [値を中心にランダマイズ](Randomize Around Value)コンパウンドの[値](Value)出力ポートを[アニメーション状態パラメータのセット](Set Animation State Parameters)ノードの[速度](Speed)入力ポートに接続します。

2 つのアニメーション状態間でブレンドする

  1. [Animation_Blending]ICE Tree のAnimation_Definition]ノードを展開します。

    [Animation_Definition]ノード ICE Tree の[アニメーション状態のトランジションの定義](Define Animation State Transition)ノードは、ある状態から別の状態へのトランジションを保存します。

  2. [アニメーション状態のトランジションの定義](Define Animation State Transition)ノードをダブルクリックします。
  3. プロパティ エディタで、[ターゲット状態](Target State)を元の状態から新しい状態へ変更します。
  4. [実行](Execute)ノードを追加します。
  5. [ターゲット状態](Target State)を[実行](Execute)ノード入力ポートに変更したすべての[アニメーション状態のトランジションの定義](Define Animation State Transition)ノードの[定義](Define)出力ポートを接続します。
  6. [実行](Execute)ノードの出力ポートを Animation_Definition システムに接続します。

これにより、2 つの異なるアニメーション状態の間でスムーズなブレンドが作成されます。