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

群衆の基本

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

On this page

概要

エージェント はスキンジオメトリとアニメーションを持ったキャラクタスケルトンで、DOPシミュレーションの パーティクルのようなポイント にそれぞれ関連しています。 エージェントには、現在の 状態 があります。 ある状態は、エージェントがその状態にある間、エージェントをアニメートする クリップ に対応します。 また、状態には、エージェントのポイントを動かすDOPパーティクルフォースのような、エージェントに変更を加える 挙動ノード が含まれます。 各シミュレーションのステップで、Houdiniは各エージェントに対する トリガ を評価します。 トリガがエージェントに適合すると、トリガは、現在の新しい状態をエージェントに与える トランジション ノードを有効にします。

例えば、ひしめきあう群衆を作成するには、walkの状態のエージェントとidleの状態のエージェントを使用することになります。 walk状態の内部には挙動ノードがあり、その状態のエージェントのポイントを動かします。 トリガにより、各エージェントがその現在の状態に特定の期間よりも長くとどまっていないかどうかをチェックできます。 トリガにより、2つのトランジションノード(walk → idle および idle → walk)が作成され、それぞれの一致するエージェントの状態が反転します。

クラウドはジオメトリネットワークのポイントから作成されます。 ジオメトリネットワークでは、Houdiniのジオメトリノードの機能を最大限に使用し、地形などの既存モデルからエージェントの位置を作成できます。 実際の群衆シミュレーションは、シミュレーションネットワークで実行されます。 このネットワークでは、エージェントは他の動的要素と相互に作用することができます。

基本的な群衆シミュレーションを作成するシェルフツールやネットワークエディタの使用方法に関しての詳細は、群衆シミュレーションの設定方法を参照してください。

Tip

群衆の作成方法をすぐにでも学習したいのであれば、Zombies for Everyoneチュートリアルを参照してください。

概念

Source points

群衆シミュレーションの“ソース”は、ジオメトリネットワークのポイントで、シミュレーションでのエージェントの開始位置を表します。

しかし、ソースポイントを設定しない場合、Crowd Sourceサーフェスノードは、指定した領域に特定の数のポイントを自動的にランダムにばら撒きます。

Agents

Agentsは、例えば、群衆シーン内のそれぞれの人々である群衆シミュレーションの“アクター”です。エージェントは、エージェントのスケルトンとジオメトリを含んだHoudiniオブジェクトサブネットまたはアセットからルックを取得します。

各エージェントは、エージェントの初期位置を定義した ソースポイント から作成されます。Crowd Sourceノードは、ポイントを、Crowd Solverで使用される情報を含んだPrimitiveアトリビュートを持った特別な エージェントプリミティブ に変換します。エージェントのジオメトリはパックプリミティブとして読み込まれるので、膨大な数のエージェントの表示とレンダリングがさらに速くなります。

初期群衆シミュレーションの作成方法は、セットアップを参照してください。

Clips

クリップとは、(walkrunのように)エージェントと関連付けるアニメーションのことです。エージェントが特定の 状態 になった時にそのクリップが再生されるようにエージェントを設定することができます。

States

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

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

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

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

Triggers and transitions

シミュレーションの各ステップで、Houdiniは各エージェントを見て、一連のトリガノードをチェックします(例えば、“対象までの距離>2”など)。論理ノードはトリガの結合に使用できます。トリガが適用されると、Houdiniは、トリガに付加されたトランジションを確認して、エージェントを新しい状態へ変更します(例えば、“walk”->“run”)。トランジションには、Houdiniが新旧の状態のアニメーションクリップを自動的にブレンドする 持続時間 が入っている場合があります。

Obstacles

エージェントに対してStatic DOPオブジェクトを指定して、挙動の使用を回避することができます。 この挙動は、behavior mergeノード に、この挙動を配置することができます。

Terrain

現在のところ、Houdiniは、単一の地形オブジェクト(Static RBDオブジェクト)に対応しています。 エージェントは、オプションのIK foot adaptationを使用して地形に追従します。

群衆シミュレーション

はじめよう

  • 基本

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

  • セットアップ

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

動くパーツ

  • エージェント

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

  • ステート

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

  • トリガー

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

  • キャッシュ

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

挙動

外観

  • 多様性

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

  • 布の取り付け

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

地形

  • 足の着地

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

  • 地形

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

  • 障害物

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