Houdini 20.0 群衆シミュレーション

群衆のフォースウェイト

どの挙動を各時間ステップでエージェントに適用するかを、HoudiniCrowd Solverが決定する方法です。

On this page

概要

Houdiniには、エージェントが取り付けられている大元のパーティクルの動きを制御するビヘイビア系ノードとして使用可能な便利なPOPフォースがたくさん用意されています。 このような“ステアリングフォース”ノードは、基本的にパーティクルフォースで、そこに ウェイト の概念が加えられています。 そして、“特定のポイントの方へ移動”させたり、“パスを辿らせたり”する便利な群衆の挙動が用意されています。 エージェントは複数のフォース(例えば、“パスの追従”と“障害物回避”)から常に影響を受けることができます。 Crowd Solverは、個々のフォースをウェイトで乗算する前にウェイトを 正規化 する(合計が1になるようにスケーリングする)ことにより、複数のフォースを処理します。

群衆ステアリングフォースノードだけでなく、Crowd Solverには ウェイト の概念があるデフォルトのフォースも用意されています。

以下のフォースがエージェントに常に適用されていると想定します:

フォースのタイプ

フォースの量

ウェイト

回避

10

1.0

パス追従

1

0.5

整列

2

0.2

Crowd Solverは、ウェイトを使用して、エージェント上に存在する複数のフォースを扱います:

  1. Crowd Solverは、合計が1になるようにウェイトを正規化します:

    • 回避ウェイト: 0.59

    • パス追従ウェイト: 0.29

    • 整列ウェイト: 0.12

  2. それから、Crowd Solverはフォース量をその正規化されたウェイトで乗算します:

    • 回避フォース: 10 * 0.59 = 5.9

    • パス追従フォース: 1 * 0.29 = 0.29

    • 整列フォース: 2 * 0.2 = 0.4

  3. 最後に、Crowd Solverはフォースを追加して、エージェントの全体のフォースを取得します。

ウェイトの使用

エージェントの現在のステートでのすべてのフォース、ステートに関係なくすべてのエージェントに適用されるすべてのフォースの両方がエージェントに適用されます。 ある挙動を他の挙動で完全に上書きすることは不可能です。しかし、特定のフォースに対して非常に高いウェイト(10など)を使用すれば、他のフォースを正規化してもそれらのフォースは目立たないぐらい小さくなります。

パーティクルフォース

状態内の標準パーティクルフォースノードおよび他のDOPを使用して、群衆専用の“ステアリング”ノードだけでなく、挙動も定義できます。 しかし、群衆専用ではないノードには、 ウェイト パラメータがないため、上記で説明した正規化の対象にはなりません。 したがって、群衆専用ではないノードは、エージェントの他のフォースへ 付け加えられる だけです。

群衆シミュレーション

はじめよう

  • 基本

    Houdiniにおける群衆シミュレーションの考え方の概要を説明します。

  • セットアップ

    群衆シミュレーションのセットアップと編集の方法

動くパーツ

  • エージェント

    群衆シミュレーションの要員である動くアクターであるエージェントについて説明します。

  • ステート

    エージェントのステート、各エージェントのアニメーションや仕草を制御する仮想的な雰囲気について。

  • トリガー

    エージェントのステートを変更する条件を指定する方法です。

  • キャッシュ

    群衆シミュレーションの効率的なキャッシュ化と読み込みのTips。

SOP群衆

挙動

外観

  • 多様性

    エージェントに異なる外観と行動を作成することで、より現実的な群衆を作成する方法。

  • 布の取り付け

    Vellum Clothをエージェントシェイプジオメトリの一部として追加/拘束すれば、エージェントの動きに基づいて布をシミュレーションすることができます。

地形

  • 足の着地

    エージェントのアニメーションを地形に適応させて滑りを回避するためのセットアップ方法。

  • 地形

    エージェントが歩く地形ジオメトリを指定する方法です。

  • 障害物

    エージェントが回避する障害物を設定する方法です。