On this page |
概要 ¶
群衆は、本質的にはパーティクルに取り付けられたアニメーションキャラクタです。 群衆シミュレーションにおけるキャラクタの動きは、DOPによる基本的なパーティクルシミュレーションに基づいています。
群衆シミュレーションでは、キャラクタのことを エージェント と呼び、常にエージェントは立ったり、歩いたり、走ったりといった特定の ステート(状態) にあります。 群衆シミュレーションでは、そのエージェントのステートを変化させるイベント(例えば、歩行から走行への遷移)を発生させることができます。 このようなイベントのことを トリガー と呼びます。
辺りをうろつく群衆を作成するには、idle
ステートのエージェントとwalk
ステートのエージェントを使用することになります。
idle
ステートでは、エージェントの取り付け先である大元のポイントは静止したままになります。
walk
ステートでは、その大元のポイントは移動します。
トリガは、各エージェントが現在のステートで特定の期間よりも長くとどまっていないかどうかをチェックし、
条件を満たしたすべてのエージェントに対してidle
→ walk
またはwalk
→ idle
といったステートトランジション(状態遷移)を生成します。
群衆シミュレーションは、ジオメトリ(SOP)ネットワークとシミュレーション(DOP)ネットワークの両方を必要とします:
-
ジオメトリ(SOP)ネットワークは、エージェントの作成と定義をするのに使用します。HoudiniのSOPノードのフルパワーを使用すれば、地形などの既存モデルからエージェント用の位置を生成することができます。
-
シミュレーション(DOP)ネットワークは、実際の群衆シミュレーションを走らせるのに使用します。DOP群衆シミュレーションネットワークには、各パーティクル(と、そのパーティクルに取り付けられているエージェント)の動きを制御するロジックを格納します。このDOPネットワーク内では、エージェントは他のダイナミクス(DOPs)エレメントと相互作用させることができます。
シェルフツールとネットワークエディタを使用して基本的な群衆シミュレーションを作成する方法については、群衆シミュレーションの設定方法を参照してください。
Tip
群衆の作成方法をすぐにでも学習したいのであれば、Zombies for Everyoneチュートリアルを参照してください。
概念 ¶
エージェントは、例えば、群衆シーン内のそれぞれの人々である群衆シミュレーションの“アクター”です。 エージェントは、スキンジオメトリとアニメーションを含んだキャラクタスケルトンになっています。 エージェントは群衆シミュレーション内の各パーティクルに取り付けられます。
群衆シミュレーションの“ソース”は、ジオメトリ(SOP)ネットワークのポイントです。 エージェントはそれらのポイント上にコピーされ、そのポイントがシミュレーション内のエージェントの開始位置を表します。 この群衆シミュレーションのソースポイントを設定しなかった場合、Crowd Source SOPノードは、指定した領域に特定の数のポイントをランダムにばら撒きます。
クリップとは、エージェントが特定の状態になった時に再生される(walk
やrun
などの)エージェント上のアニメーションのことです。
常にどのエージェントも“walk”、“idle”、“attack”、“run_to_goal”などの特定の状態にあります。 ステートは、エージェントがその状態の時に再生されるアニメーションクリップと、そのエージェントの取り付け先である大元のパーティクルの動きに影響を与える ビヘイビアノード によって定義します。
群衆シミュレーションの各ステップで、Houdiniはすべてのエージェントを見て、一連のトリガー条件をチェックします(例えば、“対象までの距離>2”など)。
トリガーが適用されると、Houdiniは、トリガーに付加されているトランジションを確認して、エージェントを新しい状態へ変更します(例えば、walk
->run
)。
トランジションには、Houdiniが新旧のステートのアニメーションクリップを自動的にブレンドする 持続時間 を入れることができます。
Houdiniには、エージェントが取り付けられている大元のパーティクルの動きを制御するビヘイビア系ノードとして使用可能な便利なPOPフォースがたくさん用意されています。 このような“ステアリングフォース”ノードは、基本的にパーティクルフォースで、そこに ウェイト の概念が加えられています。 そして、“特定のポイントの方へ移動”させたり、“パスを辿らせたり”する便利な群衆の挙動が用意されています。 エージェントは複数のフォース(例えば、“パスの追従”と“障害物回避”)から常に影響を受けることができます。 Crowd Solverは、個々のフォースをウェイトで乗算する前にウェイトを 正規化 する(合計が1になるようにスケーリングする)ことにより、複数のフォースを処理します。
群衆ステアリングフォースノードだけでなく、Crowd Solverには ウェイト の概念があるデフォルトのフォースも用意されています。
エージェントが回避する静的DOPオブジェクトを指定することができます。
現在のところ、Houdiniは、単一の地形オブジェクト(Static RBDオブジェクト)に対応しています。 エージェントは、オプションのIK foot adaptationを使用して地形に追従します。