| On this page |
概要 ¶
どの時間でも、すべてのエージェントは“walk”、“idle”、“attack”、“run_to_goal”などの特定のステート(状態)にあります。 ステートは以下のもので定義します:
-
そのステートになっているエージェントに対して再生されるアニメーションクリップ。
-
エージェントが取り付けられている大元のパーティクルの動きに影響を与えるビヘイビア系ノード。
-
エージェントのポーズとアニメーションに影響を与えるノード。例えば、
Agent Look At DOP(エージェントのポーズを調整)や
Agent Clip Layer DOP(ベースアニメーションクリップに他のアニメーションクリップをブレンド)です。
例えば、“run”ステートでは、エージェントが走るアニメーションクリップが再生されます。
ビヘイビア系ノードを使用しなかった場合、そのエージェントはその場走りになります。
POP Steer Separate DOPなどのビヘイビア系ノードを使用すれば、エージェントはお互い距離を取って走るようになります。
群衆シミュレーションネットワークでは、エージェントのアニメーションはCrowd State DOPで定義し、エージェントの挙動やポーズを修正するノードはそのCrowd State DOPの後に接続します。
Crowd Solverは、サブステップの終わりにエージェントの(ステアリングフォースで駆動される)位置/向きと(アニメーションクリップで駆動される)ポーズを更新するので、ビヘイビア系ノードとアニメーション系ノードの効果はエージェントに即時適用されないため、ビヘイビア系ノードとアニメーション系ノードの順番は通常では問題になりません。
以下のサンプルでは、ビヘイビア系ノードが青色で、ポーズ修正系ノードが黄色になっています:
ステートを追加する ¶
ステートの名前とさらにそのステートに関連付けるアニメーションクリップは、Crowd State DOPで定義します。
-
群衆シミュレーションネットワーク内で、
Merge DOPを使用して複数のCrowd State DOPをマージし、そのMerge DOPを
Crowd Solverに接続します:
群衆シミュレーションネットワーク内のCrowd State DOPノード群 -
デフォルトでは、Crowd State DOPの Clip Name パラメータは
$OSに設定されています。 これは、ステートが再生するアニメーションクリップを、そのCrowd State DOPの名前に設定します。 例えば、そのCrowd State DOPの名前をwalkに変更すると、“walk”ステートのエージェントは、walkという名前のアニメーションクリップを再生します。 アニメーションクリップの名前と違うステート名を使用したいのであれば、 Clip Name パラメータにそのアニメーションクリップ名を直接設定してください。
Note
アニメーションクリップの設定に加えて、他のラグドール関連の設定もCrowd State DOPで定義します。
ステートに挙動を追加する ¶
エージェントが取り付けられている大元のパーティクルの動きに影響を与えるビヘイビア系ノードを作成します。 ビヘイビア系ノードを群衆シミュレーションネットワーク内のCrowd State DOPの後に以下のように接続します:
-
特定のステートのエージェントにのみビヘイビアを適用するのであれば、Crowd State DOPとMerge DOPの間にビヘイビア系ノードを接続します。
-
すべてのステートのエージェントにビヘイビアを適用するのであれば、Merge DOPの後でCrowd Solverより前にビヘイビア系ノードを接続します。
以下のネットワークでは、ビヘイビア系ノードは青色になっています。POP Steer Wanderビヘイビアノードは、walkステートのエージェントにのみ適用され、POP Steer Separateビヘイビアノードは、すべてのステートのエージェントに適用されます。
Note
ビヘイビア系ノードがMerge DOPの前または後のどちらに接続されていても、 そのビヘイビア系ノードの Group パラメータを使用することで、その挙動をエージェントの特定のグループや複数のグループに制限することができます。
あるステートに複数の挙動を適用したり、ステートのマージの後に複数の挙動を適用することができます。 すべてのエージェントに適用されるCrowd Solver内に組み込まれた挙動もあります。 Crowd Solverは、ウェイトを使用して、すべてのビヘイビアの効果を結合します。
動きの挙動 ¶
Houdiniには、エージェントが取り付けられている大元のパーティクルの動きを制御するビヘイビア系ノードとして使用可能なPOPフォースがいくつか用意されています。 このタイプのノードの名前は“POP Steer”で始まります。 このような“ステアリング”フォースは、基本的にパーティクルフォースで、そこにウェイトの概念が加えられています。このウェイトは、Crowd Solverがエージェントに与える複数のフォースをどの程度扱うのかを決めます。
-
POP Steer Alignは、エージェントを近隣またはその視野にある他のエージェントに揃うように回転させます。
-
POP Steer Avoidは、エージェントが近隣エージェントを回避するようにします。
-
POP Steer Cohesionは、エージェントをお互いに接近させます。
-
POP Steer Obstacleは、エージェントが静的オブジェクトを回避するようにします。
-
POP Steer Pathは、エージェントがパス曲線を辿るようにします。
-
POP Steer Seekは、エージェントをポイントに向って動かします。
-
POP Steer Separateは、エージェントをお互いに遠ざけます。
-
POP Steer Wanderは、エージェントをランダムに動かします。
-
POP Steer Customは、ユーザがVOPネットワークを使用してフォースベクトルを計算することができます。
上記のステアリングフォースは、 Output Attribute パラメータを POP force に設定することで、通常のパーティクルに使用することができます。
また、通常のパーティクルシミュレーションフォース(例えばPOP Windノード)をビヘイビアノードとして使用することもできます。
ただし、通常のパーティクルシミュレーションフォースには Weight パラメータがないため、Crowd Solverは、まず最初に正規化することなく、単にそれらのフォースをエージェントの他のフォースに加算することになります。
Crowd Solverのエージェントのデフォルト挙動 ¶
Crowd Solver DOPには、どのステートにいるか関係なくすべてのエージェントに適用することができるいくつかのオプションのデフォルト挙動が用意されています:
-
フォースに反応した時にエージェントが急速に回転したり移動しないようにします。 これは、エージェントをより現実的な動きに見せるのに役立ちます。
-
エージェントが障害物を回避したり、エージェント同士が衝突しないようにするためのオプションのデフォルト挙動。
-
エージェントを地形オブジェクトに“くっつける”オプションや、足ボーンの配置を地形に順応させるオプション。
エージェントのアニメーションやポーズを修正する ¶
以下のノードを使用することで、エージェントのポーズやアニメーションを調整することができます:
-
Agent Clip Layer DOPは、アニメーションクリップをレイヤとしてエージェント上に重ねます。
-
Agent Arcing Clip Layer DOPは、エージェントの旋回速度に基づいて、アニメーションクリップをブレンドします。
-
Agent Look At DOPは、エージェントの頭の視線先となるターゲットを定義します。
これらのノードは、群衆シミュレーションネットワーク内のCrowd State DOPの後に接続し、ビヘイビア系ノードの前後に配置することができます:
エージェントクリップレイヤ系ノードの情報は、アニメーションクリップのレイヤ化を参照してください。
シェルフツールの使い方 ¶
Pathシェルフツールの使い方 ¶
Pathシェルフツールは、選択したステートのエージェントをパス曲線に辿らせるようにするPOP Steer Path DOPを追加します。
-
パス曲線を選択します。
-
Crowds シェルフタブの
Pathツールをクリックします。
-
ダイアログボックスから、パス曲線に辿らせたいエージェントのステート(またはすべてのステート)を選択します。
-
特定のステートを選択した場合、そのステートのCrowd Stateノードと
merge_statesノードの間にPOP Steer Pathノードが接続されます。 -
すべてのステートを選択した場合、
merge_statesノードの後にPOP Steer Pathノードが接続されます。
-
Look Atシェルフツール ¶
Look Atシェルフツールは、群衆ネットワーク内に、エージェントの視点を特定のオブジェクトに向けるAgent Look At DOPを接続します。
-
エージェントの視線先となるオブジェクトを選択します。
-
Crowds シェルフタブで、
Look Atツールをクリックします。
-
ダイアログボックスから、その視線先となるオブジェクトの方をエージェントが見るステート(またはすべてのステート)を選択します。
-
特定のステートを選択する場合、Agent Look AtノードをそのCrowd Stateノードと
merge_statesノードの間に接続します。 -
すべてのステートを選択する場合、Agent Look Atノードを
merge_statesノードの後に接続します。
-
ビヘイビアをカスタマイズする ¶
ステート内でアトリビュートを変更する ¶
“Steerなんちゃら”のビヘイビア系ノードは、エージェントが取り付けられている大元のパーティクルにフォースを適用して、それらのパーティクルを動かします。
他にも、POP Wrangle DOPをビヘイビアノードとして使用することで、エージェントのアトリビュートを変更することができます。
例えば、エージェントがあるステートの場合にそのエージェントの最大回転率を変更したい場合、Crowd State DOPの後にPOP Wrangle DOPを接続して下記のようなスクリプトを記述します:
f@maxturnrate = 15;
独自のステアリングフォースVOPネットワーク ¶
POP Steer Custom DOPを使用して、新しいステアリングの挙動を定義することができます。
これにはVOPネットワークが含まれ、エージェントパーティクルに現在のフォースを追加したり、変更することができます。
名前に“Agent”を含めたVOPは、エージェントで扱う際に便利です。