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

群衆エージェントの状態

各エージェントのアニメーションや仕草を制御する仮想的な“雰囲気”。

On this page

概要

どの時間でも、すべてのエージェントは特定の状態にあります。例えば、“walk”、“idle”、“attack”、“run_to_goal”などです。 この状態は、 挙動 ノードをカプセル化します。挙動ノードは、エージェントプリミティブに影響を与え、エージェントを動かしたり、そのアトリビュートを変更したりします。 状態内部のフォースが、その状態のエージェントに対して、実際にどのように適用されるかは、ウェイトにより異なります。

Houdiniは、同じ状態の名前を持ったアニメーションクリップにより、指定した状態のエージェントをアニメーションさせます。

各状態の後にパーティクルDOPノードを追加して、その状態のエージェントを動かすことができます。

Houdiniには、“ポイントの方へ動く”や“パスを進む”など、便利な群衆挙動を実行する多数の“ステアリングフォース”ノードがあります。 このノードは、DOPパーティクルノードによく似ています。 実際、パーティクルフォースを使用してもエージェントに影響を与えることができますが、単純なパーティクルフォースには、ウェイトの概念がありません。

新しい状態の追加

  1. シミュレーションネットワークで、新しいCrowd Stateノードを作成し、merge_statesノード内へ接続します。

  2. 状態ノードを選択したまま、パラメータエディタで State name パラメータを設定します。これはアニメーションクリップの名前に対応する必要があります。例えば、エージェントは、walk状態の間、walkアニメーションを実行します。

状態に挙動を追加

エージェントの挙動に影響を与えるノードを作成して(下記参照)、シミュレーションネットワーク内へ接続します:

  • 状態ノードとマージの間 に配置すると、その状態でのみで適用されます。

  • マージの後(マージとソルバの間) に配置すると、すべての状態のすべてのエージェントに適用されます。

なお、どのような接続方法であっても、挙動ノードの Group パラメータを使用して、エージェントのあるグループや複数のグループに限定することができます。

ある状態における複数の挙動やマージの後の複数の挙動の他、すべてのエージェントに適用されるCrowd Solver内に組み込まれた挙動もあります。ソルバは、すべての適用可能なフォースをウェイトにより結合します。

動きの挙動

Houdiniには、群衆と一緒に機能するように作成されたいくつかの便利なPOPフォースがあります。このタイプのノード名は“POP Steer”から始まります。

  • 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 パラメータを“POP force”に設定することで、標準パーティクルと一緒に使用できます。

また、標準のパーティクルシミュレーションフォース(例えばPOP Windノード)を挙動ノードとしても使用できます。 しかし、これらのフォースには Weight パラメータがないため、ソルバはウェイトを直接追加し、他のフォースを使って正規化は行ないません。

Pathシェルフツールの使い方

  1. パスの曲線を選択します。

  2. Crowds シェルフタブで、Pathツールをクリックします。

このツールは、POP Steer Pathノードを作成して、すべてのエージェントがパスをたどるようにします。 ある特定の状態のエージェントのみがパスをたどるようにしたい場合、POP Steer Pathノードを再接続する必要があります。 詳細は、シミュレーションネットワークの概要および状態と挙動を参照してください。

パス追従についての詳細はPOP Steer Pathノードのヘルプを参照してください。

Look Atシェルフツールの使い方

このツールはAgent Look At DOPを現在のクラウドネットワークにつなぐだけで、(ある状態またはすべての状態で)エージェントの視点をオブジェクトに向けます。

  1. エージェントの視点を向けたいオブジェクトを選択します。

  2. Crowds シェルフタブで、Look Atツールをクリックします。

  3. ダイアログボックスで、状態の名前を入力するか、または、エージェントの視点がすべての状態のオブジェクトに向くようにするには何も入力しません。

ソルバのデフォルトエージェント挙動

Crowd Solverノードには、衝突回避のようなオプションのデフォルト挙動があり、状態にかかわらず、すべてのエージェントに適用できます。

  • ソルバは、フォースに反応している間、エージェントが回転したり、あまり速く動いたりしないように制限をかけ、現実的な動きになるようにします。

  • ソルバにはオプションのデフォルト挙動があり、エージェントがお互いに衝突しないようにしたり、障害物を回避します。

  • ソルバにはエージェントを地形オブジェクトに“くっつける”オプションや、足骨の配置を地形に適応させるオプションがあります。

状態内でのアトリビュートの変更

“ステアリング”挙動は、フォースをエージェントパーティクルに適用することに重点を置いて、エージェントパーティクルを動かします。 エージェントのアトリビュートは、挙動ノードとしてPOP Wrangle DOPを使用して変更することもできます。

例えば、エージェントがある状態の場合にエージェントの最大回転率を変更した場合、状態内のAttribute Wrangle DOPを下記のようなスクリプトで使用します:

f@maxturnrate = 15;

独自のステアリングフォースVOPネットワーク

POP Steer Custom DOPを使用して、新しいステアリングの挙動を定義することができます。 これにはVOPネットワークが含まれ、エージェントパーティクルに現在のフォースを追加したり、変更することができます。

タイトルに“Agent”が付いたVOPは、エージェントと一緒に使用する場合に便利です。

群衆シミュレーション

はじめよう

  • 基本

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

  • セットアップ

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

動くパーツ

  • エージェント

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

  • ステート

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

  • トリガー

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

  • キャッシュ

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

挙動

外観

  • 多様性

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

  • 布の取り付け

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

地形

  • 足の着地

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

  • 地形

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

  • 障害物

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