| On this page |
群衆DOPワークフローはシミュレーションベースの手法を採用しています。 エージェントは常に特定のステート(状態)にあり、それがエージェントの動きや再生されるアニメーションクリップを定義します。 特定のステートになると、エージェントは例えばゴールに向かって歩いたり、ぶらついたり、他のエージェントを避けたりします。 エージェントに作用したり、その動きを誘導するフォースは、トリガーで常に評価され、エージェントの周囲で起こっていることを特定し、ある時点でエージェントを別のステートに遷移させます。 この手法は、いくつかの簡単なルールをセットアップして群衆全体の全般的な挙動を制御できるため、大規模な群衆には強力です。 しかし、DOPシミュレーションワークフローの課題は、少数のエージェントを正確に制御することです。 例えば、1つのエージェントのパスを更新したい場合、他のエージェントに影響を与えずにそのエージェントの挙動を更新するように、群衆セットアップの変更方法を考える必要があります。 群衆シミュレーションのエージェントはすべて相互に反応するので、このDOPシミュレーションワークフローだと困難です。
SOPモーションパスを使用することで、群衆全体を再シミュレーションすることなく、少数のエージェントのモーションパスまたはアニメーションを簡単に変更することができます。 SOPモーションパスツールにはシミュレーションは含まれません。 タイムステップを1つも進めずに、フォースとトリガーを評価して、エージェントを別のステートに切り替えるかどうかを決定します。 エージェントのモーションパスが、時間の経過と共に変化するエージェントの全体的な位置を描画し、パス上で操作を実行してエージェントがどこに移動するかを決定します。
SOPモーションパスツールを使用すれば、ユーザは別の方法で群衆ショットをセットアップすることができます。 SOPモーションパスツールとDOPシミュレーションワークフローをうまく組み合わせることで、目的の群衆の挙動を実現することができます。
セットアップ ¶
SOP群衆モーションパスツールセットはCrowd MotionPath SOPから始めます。
これはエージェントの群衆からモーションパスを生成します。
Crowd MotionPath Evaluate SOPは、そのCrowd MotionPath SOPと併用するノードです。
Crowd MotionPath Evaluate SOPは、特定のフレームでパスに沿ってエージェントの位置を決定し、エージェントでアニメーションを再生します。
Crowd MotionPath SOPとCrowd MotionPath Evaluate SOP間では、以下の操作が行なわれます:
-
エージェントのパスを操作して、パスが移動する場所を指示します。
-
様々なトリガーに基づいて異なるアニメーションクリップ間で遷移させます。
群衆モーションパスを生成する ¶
SOP群衆モーションパスツールの入力は、エージェントの群衆です。
Note
SOPモーションパスとDOPシミュレーションのどちらの入力群衆の作成にも、同じセットアップを使用することができます。
以下は、エージェントの群衆を作成する基本セットアップの一例です。これらのノードを群衆で使用する方法の詳細は、セットアップを参照してください:
Crowd MotionPath SOPによって生成されたモーションパスは、特定のフレーム範囲内の時間軸における各ポイントでのエージェント位置を示したカーブによって表現されます。 エージェントの正面には、時間範囲全体のパスが配置されます。 デフォルトでは、エージェントのパスは、エージェントに割り当てられているアニメーションクリップから生成されます。 モーションデータはアニメーションクリップから取得され、順再生を繰り返すことで、時間軸における各ポイントでのエージェントの位置を生成します。 Crowd MotionPathツールは、MotionClipツールと同様に、スケルトンのポーズが時間軸で配置されます。
エージェントパスの生成に使用されるアニメーションクリップ(s)を変更するには:
-
Crowd MotionPath SOPの Clip Assignment セクションにある Clip Names パラメータにクリップの名前を設定します。 アニメーションクリップのライブラリがある場合、異なるクリップをいくつか指定することで、エージェントが再生するクリップがランダムに選択されるようにすることができます。 各 Clip Names パラメータには、複数のクリップを指定することができます。
Note
Clip Names ドロップダウンメニューからクリップを選択すると、そのクリップ名が Clip Names 内の既存のエントリに追加されます。
-
クリップのグループに Weight 値を設定します。 ウェイトが高いほど、エージェントがそれらのクリップを再生する確率が上がります。
-
Clip Groups の横にある
をクリックして、様々なウェイトのクリップを追加します。
| To... | Do this |
|---|---|
|
エージェントパスの生成に使用されるフレーム範囲を変更する |
|
|
アニメーションクリップの速度を変更する |
Crowd MotionPath SOPの Clip Speed を調整します。 エージェント別にクリップ速度を変化させるには、 Clip Speed の横にあるドロップダウンメニューから Set Varying を選択して、 Variance と Variance Seed の値を調整します。 |
|
エージェントパスに沿って時間軸の各ポイントにエージェント位置を表示する |
ビューポートの右側にあるツールバーの |
|
群衆シミュレーションからエージェントパスを構築する |
アニメーションクリップのモーションに基づいてエージェントパスを構築するのではなく、群衆シミュレーションからパスを生成することもできます。 以下の例では、群衆シミュレーションDOPネットワークによって、エージェントがぶらついたり互いに避けたりします。DOPシミュレーションからパスを生成するには:
このサンプルでは、シミュレーションした群衆からモーションパスを生成する方法を説明しています。 |
エージェント間の親子関係 ¶
エージェント間の親子関係は、Agent Relationship SOPを使用して設定することができます。
親エージェントのモーションパスが編集されると、子エージェントのモーションパスは、その子エージェントがその親エージェントに取り付けられた状態を維持するように変形されます。
親エージェントと子エージェントの両方のモーションパスを生成するには、Agent Relationship SOPをCrowd MotionPath SOPに接続します。
以下の例では、騎手エージェント(子)を馬エージェント(親)に取り付けています:
Agent Relationship SOPのパラメータとアトリビュートに関する情報とそのSOPビューアステートを使用して子エージェントのトランスフォームを調整する方法は、エージェントの親子関係を参照してください。
親エージェントと子エージェントのアニメーションクリップを設定するには:
-
Crowd MotionPath SOPの Number of Assignments の横にある
をクリックして、各親子のアニメーションクリップパラメータセットを追加します。
-
各パラメータセットの Group パラメータに親エージェントまたは子エージェントのグループ(例えば、
@agentname=horse)を設定します。Tip
agentnameアトリビュートは、上流ノード(Agent Definition Cache SOPや
Agent from Rig SOPなど)で作成されます。 各エージェントの
agentnameアトリビュートを確認するには:-
Agent Relationship SOPを選択します。
-
Geometry Spreadsheetを開きます(ペインの上部にある
New Tabアイコンをクリックして、 New Pane Tab Type ▸ Inspectors ▸ Geometry Spreadsheet を選択します)。
-
そのGeometry Spreadsheetペインの上部にあるツールバーの
Pointsをクリックします。
-
-
Clip Names パラメータに、エージェントに使用したいアニメーションクリップを設定します。エージェントのアニメーションクリップを指定する方法の情報は、群衆モーションパスの生成を参照してください。
デフォルトでは、子エージェントのモーションパスは非表示になっています(Crowd MotionPath SOPの Hide Child Agent Paths が有効になっています):
Note
親と子のモーションパスのポイント数は同じ(タイムサンプリングが同じ)でなければなりません。 同じCrowd MotionPath SOPを使用して親と子のモーションパスを生成した場合( Start/End/Inc が同じ、つまり、同じフレーム範囲で、同じサブフレーム数)、デフォルトでこの条件が満たされます。
| To... | Do this |
|---|---|
|
子エージェントのモーションパスを表示する |
Crowd MotionPath SOPの Hide Child Agent Paths を無効にします。 |
|
親エージェントから子エージェントを外す |
以下の例では、親エージェントから子エージェントを外してから、
子エージェントのどれかが親エージェントに追従しなくなりました: |
|
エージェントに対して後処理を実行した後に、子エージェントを再び親エージェントに取り付ける |
エージェントに対して後処理を実行した後に、
|
エージェントパスを操作する ¶
以下のノードは、エージェントが時間に追従するパスを変化させます:
ビューポートに描画されたカーブ(s)に追従するように元のエージェントパスを変形させます。
エージェントが移動する位置を正確に決定できるようにパスを直接操作することができます。 Crowd MotionPath Followよりも細かなレベルの制御が可能です。
エージェント間の衝突の検出と回避を実行します。
エージェントパスが追従するガイドカーブ ¶
エージェントが追従するガイドカーブを素早く描画できるため、エージェントを道に沿って進ませたい場合などに便利です。
Crowd MotionPath Follow SOPは、描画されたカーブに追従するように元のエージェントパスを変形させます。
パスに沿ってポイントの位置と方向を変更しますが、アニメーションクリップは変更しません。
Crowd MotionPath Follow SOPを、Crowd MotionPath SOPとCrowd MotionPath Evaluate SOPの間に接続します:
Curve SOPを使用して、ビューポート内にカーブ(または複数のカーブ)を描画します。デフォルトでは、エージェントパスは一番近くにあるカーブに追従します:
-
カーブを描画した時にエージェントパスがどのように変形されるのか確認できるように、Crowd MotionPath Follow SOPのディスプレイフラグをオンにします。
-
Curve SOPを選択して、ビューポートの左側にあるツールバーの
をクリックして、ビューアステートに入ります。
-
カーブ(s)を描画します。
Tip
Construction Planeを表示して、カーブがコンストラクション平面に自動的にスナップするようにします。 右側のビューポートツールバーで
Display Construction Planeをクリックします。
-
Crowd MotionPath Evaluate SOPを選択してその評価結果を表示します。
-
プレイバーの
をクリックして、更新されたパスに沿って移動するエージェントのアニメーションを再生します。
ビューポートで描画されたカーブに追従するエージェント
このサンプルでは、ガイドカーブに追従するようにモーションパスを変形させる方法や、エージェントが閉じたループを辿るようにさせたり、アトリビュートを使用して各エージェントが辿るカーブを制御するといった高度なオプションを説明しています。
| To... | Do this |
|---|---|
|
Curve SOPを使用して描画したカーブをすべて削除する |
|
エージェントパスを直接操作する ¶
Crowd MotionPath Edit SOPを使用すると、パスを直接操作して、エージェントが移動する位置を正確に決定することができます。
このノードでは、Crowd MotionPath Follow SOPよりも細かなレベルでパスの操作を制御できます。
-
Crowd MotionPath Edit SOPを、Crowd MotionPath SOPとCrowd MotionPath Evaluate SOPの間に接続します。
-
Crowd MotionPath Edit SOPを選択して表示します。
-
ビューポートで、カーブに沿ってポイントをドラッグし、パスを変形させます。これらのポイントは ピン と呼ばれます。
Note
If there is a parent-child relationship between agents, only the points on the parent path can be selected
Tip
Construction Planeをオンにして、平坦な地形でポイントをドラッグすると、ポイントがコンストラクション平面に沿ってドラッグされるようにします。
エージェントパスを直接編集する
いくつかのメモ:
-
モーションパス上にピン留めされた各ポイントにはウェイトがあり、それが、パスがピンから受ける影響の強度を決定します。各ピンのウェイトは、HUDスライダの Pin Weight パラメータを使用して変更することができます。
-
変形されたカーブがピン留めポイントを通過しない時、点線が表示され、そのピンとカーブ上の元のポイントの関係を示します。
-
デフォルトでは、モーションパスが変更されても、カーブの長さは通常維持されます。
このサンプルでは、Crowd MotionPath Edit SOPを使用して、特定のエージェントのパスをインタラクティブに調整する方法を説明しています。
| To... | Do this |
|---|---|
|
複数のピンをドラッグする |
|
|
選択したピンを削除する |
Deleteを押します。 |
|
選択したピンのウェイトを変更する |
|
|
新しいピンのデフォルトのウェイトを設定する |
Default Pin Weight パラメータを設定します。 |
|
モーションパスの開始ポイントのウェイトを変更する |
Start Point Weight パラメータを設定します。 |
|
選択したパス上のすべての編集を削除する |
Uを押して、選択したピンを含むすべてのパス上の編集を削除します。 |
|
すべての編集を削除する |
パラメータエディタで Reset All Changes をクリックします。 |
衝突の検出と回避 ¶
Crowd MotionPath Avoid SOPは、エージェント間の衝突の検出と回避を実行します。
-
Crowd MotionPath Avoid SOPを、Crowd MotionPath SOPとCrowd MotionPath Evaluate SOPの間に接続します。
-
Crowd MotionPath Avoid SOPを選択して表示します。
デフォルトで、 Visualize Collisions はオンになっており、モーションパスの衝突が含まれる部分をハイライト表示します。球形状のガイドジオメトリは、衝突検出に使用されるエージェントのサイズを示します:
衝突の視覚化 -
Steering タブのパラメータと Iterations の数を調整し、衝突の解決を試みます。 Iterations は、衝突を解決するためにカーブ上に作成される回避パスの数です。 Steering のパラメータで制限をあまりに厳しくした場合、後のイテレーションにあまり効果が見られなくなる場合があります。
Note
エージェントがどこに移動するかをより細かく制御したい場合は、Crowd MotionPath Follow SOPまたはCrowd MotionPath Edit SOPを使用してください。
| To... | Do this |
|---|---|
|
起こり得る衝突を表示する |
Visualize Collisions をオンにします。モーションパスの衝突が含まれる部分がハイライト表示されます。 Avoidance がオフの場合でも、 Visualize Collisions は衝突が発生する場所を特定するのに便利です。 |
|
特定のパスで衝突回避を実行する |
Group で指定したエージェントは、 Group でリストされていないエージェントと衝突する可能性があります。 |
|
エージェントが、どのくらい前から起こり得る衝突を回避し始めるのか特定する |
Max Collision Time を調整します。 Max Collision Time の値が高いほど、エージェントは早く起こり得る衝突の回避を試み始めます。 |
|
エージェントの衝突検出のサイズを変更する |
Particle Scale Multiplier を調整して、すべてのエージェントの衝突サイズを変更します。 各エージェントは、例えば |
|
衝突回避を適用するフレーム範囲を設定する |
Start Frame および End Frame をオンにして指定します。 |
|
パスの開始時に初期の回転角度を設定する |
Max Initial Rotation をオンにして設定します。 これは、モーションパスの開始時にエージェントが非常に接近していて、エージェント同士を遠ざけたい時に便利です。 Max Initial Rotation を使用すると、開始時だけ即座にエージェントが反対方向を向くように設定することができます。 これにより、時間範囲全体のTurn Rateに影響する Max Turn Rate を調整する必要がなくなります。 |
|
パスの元の終了位置を維持する |
Goal Position Weight を上げます。 |
|
近接エージェントを回避する |
|
|
障害物を回避する |
このサンプルでは、Crowd MotionPath Avoid SOPを使用して障害物を回避する方法を説明しています。 |
|
他のグループとの衝突を無視する特定のエージェントグループを指定する |
このサンプルでは、Crowd MotionPath Avoid SOPを使用して、近接エージェント間に回避を適用する方法を説明しています。
エージェントの エージェントの エージェントの |
|
エージェントが追従するパスを設定する |
Crowd MotionPath Avoid SOPを使用すると、エージェントがパスに追従するようにできます。 そのCrowd MotionPath Avoid SOPに障害物としてラインジオメトリを入力することで、 そのラインジオメトリは、エージェントが回避を試みるチューブ形状として扱われます。 |
|
衝突するポイントを含むジオメトリ上のポイントグループを出力する |
Collision Point Group をオンにし、ポイントグループの名前を指定します。 |
アニメーションクリップ間のトランジション(遷移) ¶
以下のノードは、アニメーションクリップ間のトランジション(遷移)を制御します:
異なるアニメーションクリップに切り替えます。
別のアニメーションクリップへのトランジションをトリガーする条件を設定します。
エージェントのベースアニメーション上に様々なアニメーションクリップをレイヤ化します。 レイヤ化されたクリップは、スケルトンの特定のパーツに適用することができます。
エージェントの旋回速度に基づいて、アニメーションクリップをブレンドします。
クリップの遷移ポイントを手動で選択する ¶
Crowd MotionPath Transition SOPを使用して、新しいアニメーションクリップに遷移させます。
-
Crowd MotionPath Transition SOPを、Crowd MotionPath SOPとCrowd MotionPath Evaluate SOPの間に接続します。
-
Crowd MotionPath Transition SOPで、 Clip Name を新しいアニメーションクリップに設定します。
デフォルトで、Crowd MotionPath Transitionはフレーム範囲の開始フレームでエージェントのアニメーションクリップを切り替えます。
フレーム範囲の開始フレームで新しいアニメーションクリップに遷移
パス上の後のポイントで新しいアニメーションクリップに遷移させるには:
-
Crowd MotionPath Transition SOPで、 Trigger Group の横にある
をクリックします。
-
ビューポートで、トランジションを開始するパス上のポイントを選択します。⇧ Shiftを押したまま、様々なパスでポイントを選択します。単一のパスに沿って複数のポイントを選択した場合、パス上の最初に選択したポイントでトランジションが発生します。
-
Enterをクリックします。 Trigger Group パラメータは選択したポイントに設定されます。
手動で選択したポイントで新しいアニメーションクリップに遷移
このサンプルでは、Crowd MotionPath Transition SOPを使用してアニメーションクリップ間をブレンドする方法や、Clip Transition Graphで定義された中間遷移クリップを使用する方法を説明しています。
| To... | Do this |
|---|---|
|
複数のトリガーに基づいて新しいアニメーションクリップに切り替える |
Combine Triggers セクションで、ブール論理を使用して様々な組み合わせのトリガーを指定します。 |
|
少し時間をずらして、エージェントを新しいアニメーションクリップに遷移させる |
|
|
異なるアニメーションクリップに遷移させる |
アニメーションクリップのライブラリがある場合、異なるクリップをいくつか指定することで、トランジション(遷移)先の次のクリップとしてランダムに選択できます。
|
|
トランジションのシーケンスを使用して新しいクリップに遷移させる |
Clip Transition Graphを使用すると、クリップトランジションをより細かく制御することができます。Clip Transition Graphは、ペアのクリップの間でトランジション領域を自動的に見つけ、現在のクリップが新しいクリップにうまくブレンドするポイントを決定します。また、現在のクリップから新しいクリップへの、トランジションのシーケンスを指定することもできます。
例として上記のクリップトランジションを使用して、以下を指定する場合:
その後、初期
初期
Note Crowd Source SOPまたはCrowd MotionPath SOPのいずれかでクリップを初期化することができます。 クリップを割り当てるのが、群衆のレイアウトを取り込む時か、またはエージェントパスを生成する直前かは、ワークフローの設定によります。 Crowd MotionPath SOPでのクリップの割り当ての方がやや柔軟性が高く、 Group パラメータを使用して、エージェントの様々なグループに対してクリップの割り当てをセットアップしたり、特定のエージェントのクリップを上書きすることができます。 |
トリガー条件に基づいて新しいアニメーションに遷移させる ¶
Crowd MotionPath Trigger SOPおよび
Crowd MotionPath Transition SOPは連携して、特定の条件が満たされた時にエージェントのアニメーションクリップを切り替えます。
Crowd MotionPath Triggerは、別のアニメーションクリップへのトランジションをトリガーする条件を設定し、Crowd MotionPath Transitionは、トリガー条件が満たされた時にエージェントのアニメーションクリップを切り替えます。
-
Crowd MotionPath Trigger SOPとCrowd MotionPath Transition SOPを、Crowd MotionPath SOPとCrowd MotionPath Evaluate SOPの間に接続します:
-
Crowd MotionPath Trigger SOPで、 Trigger Name がデフォルトで
$OSに設定されています。これは、トリガー名をそのCrowd MotionPath Trigger SOPの名前に設定します。 Trigger Name は、トリガーを参照するCrowd MotionPath Transition SOPなどの後続ノードで使用されるため、もっと分かりやすい名前に変更しても構いません。 -
Crowd MotionPath Trigger SOPで、 Type パラメータのトリガータイプを設定します。特定のフレームでアニメーションクリップを切り替えるには:
-
Type を Time に設定します。
-
Frame を、異なるアニメーションクリップに遷移させるフレームに設定します。
以下の例では、Crowd MotionPath Trigger SOPが選択および表示されています。トリガー条件を満たすパス上のポイントがハイライト表示されています。
トリガー条件を満たすパス上のポイント(ハイライト表示) -
-
Crowd MotionPath Transition SOPで:
-
Trigger Group を(上流のrowd MotionPath Trigger SOPの Trigger Name パラメータで定義されている)トリガーの名前に設定します。
-
Clip Name を新しいアニメーションクリップに設定します。
以下の例では、Crowd MotionPath Transition SOPが選択および表示されています。トリガー条件を満たすパス上のポイントが、新しいアニメーションクリップに遷移されます:
新しいアニメーションクリップへのトランジション(遷移) -
Note
Crowd MotionPath TriggerノードおよびCrowd MotionPath Transitionノードは、群衆シミュレーションネットワークにおいてCrowd Trigger DOPおよび
Crowd Transition DOPに相当するSOPレベルのノードです。
このサンプルでは、Crowd MotionPath Trigger SOPおよびCrowd MotionPath Transition SOPを使用して、アニメーションクリップ間をブレンドする方法を説明しています。
| To... | Do this |
|---|---|
|
エージェントが領域またはジオメトリ内部にある場合、新しいアニメーションクリップに切り替える |
Incoming の Comparison メソッドは、トランジションがトリガーされる各パス上の1つのポイントをハイライト表示します:
トランジションをトリガーする境界領域として、他のジオメトリを使用することもできます。以下の例では、
新しいアニメーションクリップへのトランジションは、エージェントがRubber Toyジオメトリ内部にある時にトリガーされます(以下では、Rubber Toyジオメトリがテンプレートになっています): 利用可能なプリビルドのトリガーについては、 このサンプルでは、エージェントにクリップをレイヤ化する方法と、エージェントが境界オブジェクト内に入った時にアクティブにする方法を説明しています。 |
|
親のアニメーションが変わった時に子エージェントのアニメーションを切り替える |
エージェントが他のエージェントに取り付けされている場合、Crowd MotionPath Trigger SOPの Match Parent Agent’s Trigger を有効にすることで、親のアニメーションが変わった時に子エージェントのアニメーションを切り替えることができます。 |
レイヤアニメーション ¶
Crowd MotionPath Layer SOPを使用すると、手を振る、頭の向きを変えるなどのモーションを簡単にエージェントに追加することができます。
様々なモーションを望ましい組み合わせで実行する、完全に新しいアニメーションクリップは必要ありません。
Crowd MotionPath LayerはCrowd MotionPath Transitionと似ていますが、完全に新しいアニメーションクリップに切り替えるのではなく、エージェントのベースアニメーションの上に異なるクリップをレイヤ化します。レイヤ化したクリップも、スケルトンの特定のパーツに適用することができます。
Crowd MotionPath Trigger SOPとCrowd MotionPath Layer SOPを、Crowd MotionPath SOPとCrowd MotionPath Evaluate SOPの間に接続します:
-
Agent Transform Group SOPは、レイヤ化したクリップを適用するスケルトンのパーツを指定するのに使用される、ジョイントの名前付きグループを作成します。 詳細は、レイヤアニメーションクリップを参照してください。そのAgent Transform Group SOPの Name を
upper_bodyに設定します。 -
そのCrowd MotionPath Trigger SOPの Trigger Name パラメータにトリガーの名前を指定します。この例では、 Trigger Name を
trigger_zombieに設定しました。 -
Crowd MotionPath Layer SOPを使用してレイヤをセットアップします:
-
Trigger Name には、レイヤクリップの再生を開始するトリガー(この例では、
trigger_zombie)を設定します。 -
Transform Group には、レイヤクリップを再生するジョイントグループ(この例では、
upper_body)を設定します。 -
Clip Name には、そのレイヤクリップを設定します。
-
以下の例では、エージェントの上半身はパス上の特定の位置でゾンビのレイヤクリップの再生を開始し、下半身は元のwalkingクリップの再生を続けています:
このサンプルでは、Crowd MotionPath Layer SOPを使用してエージェントの上半身にクリップをレイヤ化する方法を説明しています。このクリップは、エージェントが境界オブジェクト内に入った時にアクティブになります。
| To... | Do this |
|---|---|
|
複数のトリガーに基づいて新しいアニメーションクリップに切り替える |
Combine Triggers セクションで、ブール論理を使用して様々な組み合わせのトリガーを指定します。 |
|
異なるアニメーションクリップに遷移させる |
アニメーションクリップのライブラリがある場合、異なるクリップをいくつか指定することで、トランジション(遷移)先の次のクリップとしてランダムに選択できます。
|
|
元のクリップがレイヤ化されたクリップにブレンドする早さを変更する |
Blend In Frames と Blend Out Frames を調整します。 |
|
レイヤ化されたモーションクリップと元のアニメーションを部分的にブレンドする |
Blend Ratio を調整します。 Blend Ratio が |
|
レイヤ化されたクリップを数秒だけ再生するように設定する |
Number of Loops をオンにして、その値を調整します。
Number of Loops を |
エージェントの旋回速度に基づいたアニメーションクリップ間のブレンド ¶
Crowd MotionPath Arcing Layer SOPは、エージェントの旋回速度に基づいてアニメーションクリップをブレンドすることができます。
これによって、エージェントが素早く旋回する際により自然な動きになります:
旋回の動きをするアニメーションクリップは、ベースアニメーションと同期させることが重要になります。 Crowd MotionPath Arcing Layer SOPは、異なるアニメーションクリップをブレンドするので、旋回の動きをするアニメーションクリップは、ベースアニメーションと同じ平面上にある必要があります。
以下の例では、Crowd MotionPath Follow SOPを使用してモーションパスを変形させています。
次に、Crowd MotionPath Arcing Layer SOPを使用して、モーションパスの曲がり角に沿って馬エージェントのアニメーションクリップをブレンドさせています:
エージェント定義には、以下のアニメーションクリップが入っています(エージェントのアニメーションクリップを確認する方法は、レイヤアニメーションを参照してください):
-
Crowd MotionPath Arcing Layer SOPを、
Crowd MotionPath SOPと
Crowd MotionPath Evaluate SOPの間に接続します。
Crowd MotionPath SOPは、モーションパスに
rest_transformアトリビュートを追加することで、そのモーションパスの“静止ポーズ”を保存します。 (例えば、Crowd MotionPath Follow SOPを使用して)そのモーションパスを編集した後、Crowd MotionPath Arcing layer SOPは、その更新されたモーションパスと元のモーションパスを比較して、 その差分を使用して、エージェントの旋回速度を計算します。 モーションパスに沿った旋回速度を滑らかにすることが重要です。 旋回速度は、アニメーションクリップのブレンドウェイトを駆動させるのに使用されるので、急速に変化する旋回速度は、クリップ間でアニメーションが飛び跳ねる現象が発生します。 -
Crowd MotionPath Arcing Layer SOPの Group に、旋回アニメーションを適用したいエージェントを設定します。
-
Base Clip Name にベースアニメーションクリップを設定します。 ベースアニメーションクリップとそれに関連する旋回アニメーションクリップを複数追加するには、 Clip Sets の横にある
をクリックします。
-
ブレンドする別の旋回アニメーションクリップを指定します:
-
Arcing Clips の横にある
をクリックして、別のクリップを追加します。
-
Clip Name パラメータに、旋回アニメーションクリップの名前を設定します。
-
Turn Direction と Radius を設定します。 クリップの旋回半径を確認するには、そのクリップが適用されているエージェントをCrowd MotionPath SOPに接続して、 Clip Names パラメータにその確認したいクリップ名を設定します:
Note
旋回半径は完全に正確である必要はありません。 おおよその値で大丈夫です。
-
-
エージェントがモーションパスに沿ってどれだけ急に旋回しているのか可視化するために、 Turn Rate Attribute を有効にして、そのパラメータの右側にある
をクリックします。 旋回速度(色)がモーションパスに沿って滑らかに変化すれば、クリップのブレンドも滑らかに変化します。
エージェントの旋回速度を可視化 Tip
アニメーションが異なるクリップ間で飛び跳ねる場合、クリップ間のブレンドウェイトが飛び跳ねているのが原因です。 Crowd MotionPath Arcing Layer SOPの Strength パラメータの値を上げてモーションパスの旋回速度を滑らかにすることで、クリップ間のブレンドが滑らかになるようにしてください。
| To... | Do this |
|---|---|
|
エージェントの旋回速度を可視化する |
Crowd MotionPath Arcing Layer SOPの Turn Rate Attribute パラメータの横にある |
後処理 ¶
SOPモーションパスツールを使用した後に、Agent Terrain Adaptation SOP、
Agent Look At SOP、
Agent Edit SOPなどのSOPを使用して、エージェントのポーズをさらに細かく制御することができます。
これらのSOPは、
Crowd MotionPath Evaluate SOPの後に配置してください。
騎手(子)と馬(親)のような親子関係にあるエージェントがあって、例えば、Agent Terrain Adaptation SOPを後処理工程として使用して、馬のトランスフォームを修正した場合、
Agent Relationship SOPを使用することで、その後処理工程の後に騎手を馬に取り付けし直すことができます。
この例に関しては、親子関係を参照してください。
その他の操作 ¶
アニメーションのモーションを高速化、低速化、クロップ、シフトします。