| On this page |
以下のノードを使用することで、エージェントのベースアニメーションの上にアニメーションクリップをレイヤとして重ねることができます:
-
Agent Clip Layer DOPは、エージェントにアニメーションクリップをレイヤとして重ねます。
-
Agent Arcing Clip Layer DOPは、エージェントの旋回速度に基づいて、一連のアニメーションクリップをブレンドします。
これらのノードは、群衆シミュレーションネットワーク内のCrowd State DOPの後に接続し、
POP Steer Path DOPと同様にステートビヘイビア系ノードの前後のいずれかに配置することができます:
エージェントにアニメーションクリップをレイヤとして重ねる ¶
Agent Clip Layer DOPを使用することで、エージェントのベースアニメーションクリップの上にアニメーションクリップをレイヤとして重ねることができます。
これは、歩行サイクルの上に上半身の動きを含んだアニメーションクリップを追加するなど、群衆ショットにバリエーションを取り入れるのに役立ちます。
複数のAgent Clip Layer DOPを接続することで、複数のアニメーションレイヤを作成することができます。
レイヤ化されたアニメーションクリップは、以下の2つの方法でベースアニメーションと合成することができます:
-
ブレンド比率に基づいて、レイヤ化されたクリップをベースアニメーションに合成する方法:
元のポーズ(左)、レイヤ化されたポーズ(右)
ブレンド比率=0の最終ポーズ(左)、ブレンド比率=0.5(中央)、レンド比率=1(右) -
レイヤ化されたクリップを 差分クリップ として使用する方法。差分は、レイヤ化されたクリップポーズとその同一クリップの参照ポーズから計算されます。そして、この差分をベースアニメーションに加算します:
元のポーズ(左)、参照ポーズ(中央)、差分ポーズ(右)
ベースアニメーションに差分ポーズの何%かを加算した最終ポーズ:0%(左)、50%(中央)、100%(右)
ベースアニメーションとレイヤアニメーションのブレンド ¶
以下の例では、エージェントのベースアニメーションの歩行サイクルの上に、拍手アニメーションを重ねています。 この拍手アニメーションは、エージェントが境界ボックス内にいる時にそのエージェントの上半身に対してトリガーされます:
この例では、Agent Clip Layer DOPを使用してエージェントの上半身にアニメーションクリップを適用する方法を説明しています。 このアニメーションクリップは、エージェントが境界ボックス内にいる時に有効化されます。
オブジェクトレベルとSOPネットワークのセットアップ ¶
-
オブジェクトレベルでは、利用可能なアニメーションクリップを定義し、 ジオメトリレベル(SOPネットワーク)では、群衆ネットワークをセットアップします。 下図の
Agent SOP、
Agent Clip SOP、
Agent Transform Group SOPがエージェント定義を構成しています:
-
Agent SOPを使用して、エージェントを作成します:
-
Character Rig パラメータには、ベースアニメーションが入ったキャラクタリグを含んでいるノードを設定します。 そのパラメータの右側にある
ボタンを使用すると、ポップアップウィンドウからノードを選択することができます。 この例では、 Character Rig パラメータを
../../mocapbiped3_walkに設定しています。
-
-
Agent Clip SOPを使用して、ベース(歩行)アニメーションクリップをエージェント定義に追加します:
-
Clips パラメータセットで、 Name を
walkに設定します。 -
Character Rig パラメータを
../../mocapbiped3_walkに設定します。
-
-
エージェントが歩行クリップをループ再生しながら前進し続けるようにしたいので、そのAgent Clip SOPで以下の設定を行ないます:
-
Locomotion Node パラメータには、エージェント全体の移動を制御し空間内で前進させるジョイントを設定します。二足歩行の場合、通常だと、ここにはhipジョイントを設定します。
-
Start/End/Inc パラメータのチャンネルを削除します - Start/End/Inc を
クリックして Delete Channels を選択します。
-
Start/End/Inc パラメータには、歩行クリップの開始フレームと終了フレームを設定します。
-
Convert to In-Place Animation チェックボックスをオンにします。
Note
クリップをプレビューするには:
-
Set Current Clip チェックボックスをオンにして、そのフィールドに
walkを設定します。 -
クリップがループ再生されている間にエージェントの位置が時間の経過と共に前進し続ける様子を確認するには、 Apply Clip Locomotion チェックボックスをオンにします。 エージェントがその場で歩行する様子を確認するには、 Apply Clip Locomotion チェックボックスをオフにします。
-
-
同じAgent Clip SOPを使用して、レイヤ(拍手)アニメーションクリップをエージェント定義に追加します:
-
Clips マルチパラメータの横にある
をクリックして、クリップパラメータセットを追加します。
-
Name パラメータを
clapに設定します。 -
Character Rig パラメータを
../../mocapbiped3_clapに設定します。
-
-
Agent Transform Group SOPを使用して、レイヤクリップが適用されるスケルトンの部分を示した名前付きジョイントグループを作成します。 このAgent Transform Group SOPは、エージェント定義内のAgent SOPの後で
Crowd Source SOPの前のどこかに配置します:
-
Transform Groups マルチパラメータを使用して、新しいジョイントグループを作成します。 Name パラメータにジョイントグループの名前(例えば、
upper_body)を指定します。 -
Root Transforms パラメータで、そのグループのルートジョイント(s)を選択します。 各ルートジョイントとその子ジョイントがそのグループに追加されます。 この例では、 Root Transforms パラメータを
Spine_To_Spine1に設定しています。 そのグループに属しているジョイントを確認するには、 Show Guide Geometry チェックボックスをオンにします。 これによって、選択したジョイントの周囲に球体が表示されます。 このガイドジオメトリを見やすくするために、エージェントを Wireframe で表示します:
アニメーションクリップを重ねるエージェントジョイント
-
-
Crowd Source SOPで、 Initial State パラメータをDOPネットワーク内で利用可能などれかのステートに設定します。 このステートは、Crowd State DOPの State Name パラメータで指定されています。 このDOPネットワークには
walkステートがあるので、 Initial State パラメータをwalkに設定します。 -
DOPシミュレーションネットワークをセットアップします。
DOPシミュレーションネットワーク ¶
以下の画像は、親のSOPネットワークのcrowd_simulation DOPネットワークを表示しています:
-
以下の入力をその
crowdsolverDOPに接続します:-
crowdobjectDOPをcrowdsolverDOPの1番目の入力(Crowd Object入力)に接続します。 -
群衆ステートを
crowdsolverDOPの3番目の入力(States入力)に接続します。
Note
Agent Clip Layer DOPは、ステートをマージした後のCrowd Solverの前に配置しても構いません。
-
-
親のSOPネットワーク内のCrowd Source SOPが
crowd_simulationDOPネットワークの1番目の入力に接続されているので、crowdobjectDOPの Source パラメータを First Context Geometry に設定します。 -
Crowd State DOPで、ベースアニメーションクリップを再生する群衆ステートをセットアップします:
-
Crowd State DOPの名前をベースアニメーションクリップ名の
walkに変更します。Note
デフォルトの Clip Name パラメータには
$OSが設定されています。 これによって、群衆ステートが再生するアニメーションクリップの名前がそのCrowd State DOPの名前に設定されます。 -
元の歩行クリップにはルート全体のモーションが含まれているので、 Type を Locomotive に設定します。
-
-
Crowd Trigger DOPで、レイヤクリップを有効化するトリガーを設定します:
-
Type パラメータを Object Bounds に設定します。
-
Object SOP Path パラメータを境界ボックスのパス(この例では、
../../../box)に設定します。 -
Check パラメータを Continuous に設定します。これによって、エージェントが境界ボックス内にいる間はそのレイヤクリップがトリガーされます。
-
-
Agent Clip Layer DOPで、スケルトンの上にレイヤとして重ねる拍手アニメーションクリップを設定します:
-
デフォルトの Blend Mode パラメータは Interpolate に設定されているので、 Blend Ratio の値に応じて、ベースアニメーションとレイヤクリップの間で補間が行なわれます。
Note
代わりにベースアニメーションの上にレイヤアニメーションの効果を加算する詳細は、加算レイヤを参照してください。
-
Clip Name パラメータを
clapに設定します。これは、ベースアニメーションの上に重ねるクリップです。 -
Transform Group パラメータを
upper_bodyに設定します。これは、レイヤアニメーションを再生するジョイントグループです。 -
Blend Ratio パラメータを調整して、レイヤアニメーションとベースアニメーションのブレンドを制御します。
-
Activate with Trigger チェックボックスをオンにします。 Crowd Trigger DOPは、このAgent Clip Layer DOPの1つ目の Trigger 入力(2番目の入力)に接続されているので、 Activate with Trigger ドロップダウンメニューから First Trigger Input を選択します。
-
エージェントが境界ボックス内にいる時に拍手する最終アニメーション:
ベースアニメーション上にレイヤアニメーションクリップの効果を加算する ¶
ベースアニメーションをレイヤアニメーションクリップの実際のトランスフォームとブレンドする方法ではなくて、 そのレイヤアニメーションクリップを 差分クリップ (レイヤアニメーションクリップのポーズとその同一アニメーションクリップ内の参照ポーズから計算された差分)として使用することができます。 この差分は、ベースアニメーションの上に加算されます。
ここの例では、歩行ベースアニメーションに頭を傾けるアニメーションクリップをレイヤとして重ねる方法を説明します:
オブジェクトレベルとSOPネットワークのセットアップ ¶
オブジェクトレベルとSOPレベルのネットワークのセットアップは、前の例と同様ですが、 今回は、そのレイヤアニメーションクリップを差分クリップとしてセットアップする手順が追加されています:
-
1つ目の
Agent Clip SOP(
add_clips)を使用して、ベース(歩行)アニメーションクリップをエージェント定義に追加します。 設定するパラメータに関しては、前の例を参照してください。 -
同じAgent Clip SOP(
add_clips)を使用して、頭を傾けるアニメーションクリップをエージェント定義に追加します:-
Clips マルチパラメータの横にある
をクリックして、クリップパラメータセットを追加します。
-
Name パラメータを
head_turnに設定します。 -
Character Rig パラメータを
../../head_turnに設定します。 -
Start/End/Inc パラメータのチャンネルを削除します - Start/End/Inc を
クリックして Delete Channels を選択します。
-
Start/End/Inc パラメータには、歩行クリップの開始フレームと終了フレームを設定します。
-
-
差分クリップをセットアップします。
-
Agent Transform Group SOPで設定するパラメータに関しては、前の例を参照してください。
-
群衆の中の1体のエージェントのみを表示したいので、
Crowd Source SOPで以下の設定を行ないます:
-
Layout パラメータを Formation に設定します。
-
Rows パラメータと Columns パラメータを
1に設定します。 -
Initial State パラメータを
walkに設定します。
-
-
DOPシミュレーションネットワークをセットアップします。
差分クリップのセットアップ ¶
-
差分クリップを生成するCHOPネットワークをセットアップします:
CHOPネットワーク -
Agent CHOPを使用して、エージェント定義から頭を傾けるアニメーションクリップを取り込みます。Agent CHOPで以下の設定を行ないます:
-
SOP Path パラメータには、取り込みたいアニメーションクリップが入ったエージェントを含んでいるSOPノード(例えば、
../../add_clips)を設定します。 -
Clip Name パラメータには、レイヤアニメーションクリップの名前(例えば、
head_turn)を設定します。
-
-
Pose Difference CHOPで、参照ポーズに使用したいクリップのフレーム番号を設定します。
-
親のSOPネットワーク内にある2つ目のAgent Clip SOP(
add_difference_clip)を使用して、その差分クリップをエージェント定義に追加します:-
Input パラメータを CHOP に設定します。
-
Name パラメータに、その差分クリップの名前(例えば、
head_turn_additive)を指定します。 -
CHOP パラメータに、そのCHOPネットワーク出力(例えば、
../set_up_difference_clip/HEAD_TURN_ADDITIVE)を設定します。
Warning
元のレイヤアニメーションを含んだAgent Clip SOPに差分クリップを追加しようとすると、エラーが発生します。
-
DOPシミュレーションネットワーク ¶
以下の画像は、親のSOPネットワークのcrowd_simulation DOPネットワークを表示しています:
-
Crowd Object DOPおよび
Crowd State DOPのパラメータ設定に関する情報は、前の例を参照してください。
-
Agent Clip Layer DOPでは、頭を傾ける差分クリップをベースアニメーションの上に重ねるレイヤとして設定します:
-
Blend Mode パラメータを Additive に設定します。これは、ベースアニメーションの上にレイヤアニメーションクリップの効果を加算します。
-
Clip Name パラメータに、差分クリップ(例えば、
head_turn_additive)を設定します。 このクリップ名は、親のSOPネットワーク内のAgent Clip SOP(add_difference_clip)で設定済みです。 -
Transform Group パラメータに
upper_bodyを設定します。 -
ベースアニメーションの上に加算されるレイヤアニメーションクリップの割合を制御するために、 Blend Ratio パラメータを調整します。
-
歩行アニメーションの上に頭を傾けるクリップをレイヤとして加算した最終アニメーションを右側に表示しています:
How-to ¶
| To... | Do this |
|---|---|
|
レイヤアニメーションクリップを特定のエージェントグループに適用する。 |
|
|
ベースアニメーションをレイヤアニメーションクリップでオーバーライドする。 |
Agent Clip Layer DOPで:
|
|
ベースアニメーションとレイヤアニメーションクリップ間の遷移を滑らかにする。 |
Agent Clip Layer DOPで:
|
|
トリガー時にレイヤアニメーションクリップを一回だけ再生する。 |
Agent Clip Layer DOPで:
|
|
レイヤクリップを特定の時間から開始するように設定する。 |
Agent Clip Layer DOPの Initial Clip Time チェックボックスをオンにして、値を設定します。 |
|
レイヤクリップの再生速度を上げる。 |
Agent Clip Layer DOPの Clip Speed Multiplier チェックボックスをオンにして、値を上げます。 |
|
異なるトリガーで有効化される複数のレイヤクリップを追加する。 |
|
|
エージェントが再生するレイヤクリップをランダムにする。 |
アニメーションクリップのライブラリがあれば、ベースアニメーションの上に再生されるレイヤクリップとして、異なるクリップがランダムに選択されるように指定することができます。
|
|
4つ以上のトリガーをセットアップする。 |
複数のAgent Clip Layer DOPを直列でチェーン接続します。 |
エージェントの旋回速度に基づいたアニメーションクリップ間のブレンド ¶
Agent Arcing Clip Layer DOPは、エージェントの旋回速度に基づいてアニメーションクリップをブレンドすることができます。
これによって、エージェントが素早く旋回する際により自然な動きになります:
旋回の動きをするアニメーションクリップは、ベースアニメーションと同期させることが重要になります。 Agent Arcing Clip Layer DOPは、異なるアニメーションクリップをブレンドするので、旋回の動きをするアニメーションクリップは、ベースアニメーションと同じ平面上にある必要があります。
アニメーションクリップを確認するには、Agent Clip SOPを使用します:
-
Agent Clip SOPの Set Current Clip チェックボックスをオンにして、そのドロップダウンメニューから確認したいアニメーションクリップを選択します。 そのドロップダウンメニューにリストされるアニメーションクリップは、後ほど群衆シミュレーションネットワーク内のCrowd State DOPノードで参照されるアニメーションクリップの名前です。
-
プレイバーの
をクリックして、クリップを再生します。 アニメーションが非常に速く再生される場合は、プレイバーの
Real Time Toggleボタンをクリックしてみてください。
ベースアニメーション 旋回アニメーション
SOPネットワーク ¶
SOPネットワーク内の群衆セットアップを以下に載せています。 馬エージェントが辿る経路もSOPネットワーク内で定義されています:
-
馬エージェントは、
Agent Definition Cache SOPを使用して定義されています。
-
Curve SOPを使用して、その馬エージェントが辿る経路を描画します。
-
4頭の馬エージェントを狭い領域から開始させたいので、
Crowd Source SOPで:
-
Area Size パラメータを下げます。
-
Number of Agents マルチパラメータを
4に設定します。
-
-
DOPシミュレーションネットワークをセットアップします。
DOPシミュレーションネットワーク ¶
以下のDOPシミュレーションネットワークでは、POP Steer Path DOPを使用して、エージェントが経路に沿うように誘導され、
Agent Arcing Clip Layer DOPによってベースアニメーションクリップがその経路の曲がり角に沿って旋回クリップとブレンドされます:
Note
Agent Arcing Clip Layer DOPは、群衆シミュレーションネットワーク内のCrowd State DOPの後に接続し、
POP Steer Path DOPと同様にステートビヘイビア系ノードの前後のいずれかに配置することができます。
-
親のSOPネットワーク内のCrowd Source SOPが
crowd_simulationDOPネットワークの1番目の入力に接続されているので、crowdobjectDOPの Source パラメータを First Context Geometry に設定します。 -
ベースアニメーションは、Crowd State DOPで定義されています。 Crowd State DOPの名前をベースアニメーションの名前に変更します。
-
パーティクルではなくエージェントを扱っているので、POP Steer Path DOPの Output Attribute パラメータを Crowds steerforce に設定します。
-
Parameters タブの SOP Path パラメータに、エージェントが辿るSOPネットワーク内のカーブのパス(例えば、
../../guide_curve)を設定します。 -
Agent Arcing Clip Layer DOPの Group パラメータをオンにして、旋回アニメーションを適用したいエージェントを指定します。
-
旋回アニメーションクリップを追加するには、 Clips マルチパラメータの横にある
をクリックします。
-
ブレンドする別の旋回クリップを指定します:
-
Clip Name パラメータに、旋回アニメーションクリップの名前を設定します。
-
Turn Direction パラメータと Radius パラメータを設定します。 クリップの旋回半径を確認するには、そのクリップが適用されているエージェントを
Crowd MotionPath SOPに接続して、 Clip Names パラメータにその確認したいクリップ名を設定します:
Note
旋回半径は完全に正確である必要はありません。 おおよその値で大丈夫です。
-
Note
経路に沿った旋回速度を滑らかにすることが重要です。
旋回速度は、アニメーションクリップのブレンドウェイトを駆動させるのに使用されるので、急速に変化する旋回速度は、クリップ間でアニメーションが飛び跳ねる現象が発生します。
旋回速度を滑らかにするには、Crowd Solver DOPの Constrain Turn Acceleration チェックボックスをオンにして、必要に応じて Turn Stiffness を調整してください。
Max Turn Rate パラメータも調整してみてください。