On this page |
概要 ¶
Houdiniには、エージェントが取り付けられている大元のパーティクルの動きを制御するビヘイビア系ノードとして使用可能な便利なPOPフォースがたくさん用意されています。 このような“ステアリングフォース”ノードは、基本的にパーティクルフォースで、そこに ウェイト の概念が加えられています。 そして、“特定のポイントの方へ移動”させたり、“パスを辿らせたり”する便利な群衆の挙動が用意されています。 エージェントは複数のフォース(例えば、“パスの追従”と“障害物回避”)から常に影響を受けることができます。 Crowd Solverは、個々のフォースをウェイトで乗算する前にウェイトを 正規化 する(合計が1になるようにスケーリングする)ことにより、複数のフォースを処理します。
群衆ステアリングフォースノードだけでなく、Crowd Solverには ウェイト の概念があるデフォルトのフォースも用意されています。
例 ¶
以下のフォースがエージェントに常に適用されていると想定します:
フォースのタイプ |
フォースの量 |
ウェイト |
---|---|---|
回避 |
10 |
1.0 |
パス追従 |
1 |
0.5 |
整列 |
2 |
0.2 |
Crowd Solverは、ウェイトを使用して、エージェント上に存在する複数のフォースを扱います:
-
Crowd Solverは、合計が1になるようにウェイトを正規化します:
-
回避ウェイト: 0.59
-
パス追従ウェイト: 0.29
-
整列ウェイト: 0.12
-
-
それから、Crowd Solverはフォース量をその正規化されたウェイトで乗算します:
-
回避フォース: 10
*
0.59 = 5.9 -
パス追従フォース: 1
*
0.29 = 0.29 -
整列フォース: 2
*
0.2 = 0.4
-
-
最後に、Crowd Solverはフォースを追加して、エージェントの全体のフォースを取得します。
ウェイトの使用 ¶
エージェントの現在のステートでのすべてのフォース、ステートに関係なくすべてのエージェントに適用されるすべてのフォースの両方がエージェントに適用されます。
ある挙動を他の挙動で完全に上書きすることは不可能です。しかし、特定のフォースに対して非常に高いウェイト(10
など)を使用すれば、他のフォースを正規化してもそれらのフォースは目立たないぐらい小さくなります。
パーティクルフォース ¶
状態内の標準パーティクルフォースノードおよび他のDOPを使用して、群衆専用の“ステアリング”ノードだけでなく、挙動も定義できます。 しかし、群衆専用ではないノードには、 ウェイト パラメータがないため、上記で説明した正規化の対象にはなりません。 したがって、群衆専用ではないノードは、エージェントの他のフォースへ 付け加えられる だけです。