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

エージェントに布を取り付ける方法

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

On this page

概要

VellumはHoudiniの高速なCloth(と他のPBD)ソルバです。布をエージェントシェイプと関連付けてから、その布を群衆ダイナミクスやリジッドボディといった他のダイナミクスと一緒に全体のダイナミクスシミュレーションの一部としてシミュレーションすることができます。

SOPsを使ってジオメトリ内にVellum Clothをセットアップすることができるので、このVellum Clothはエージェントシェイプ内に含めるのに適しています。

エージェントにマントを取り付けてシミュレーションさせた完全に動作したサンプルは、SimpleCrowdClothノードのサンプルを参照してください。

布のセットアップ

エージェント定義をセットアップしたSOPネットワークに入って、インポートしたエージェントジオメトリにVellum Clothを追加してから、それをエージェントシェイプジオメトリとして使用します。

  1. エージェント定義SOPsとは別に、布ジオメトリを作成するSOPチェーンを新しく作成します。

    ここでは、布ジオメトリをインポートするか、それを定義します。マントのサンプルでは、その布は単純にグリッドです。

  2. Vellum Constraintsノードを布ジオメトリに追加します。 Constraint Type を"Cloth"に設定します。これは、Vellum Solverがそのジオメトリを布として扱うように、そのジオメトリ上にアトリビュートをセットアップします。

  3. エージェントシェイプのRestジオメトリ(静止ジオメトリ)をVellum Constraintsノードの3番目の入力に接続します。

  4. もう1つVellum Constraintsノードを追加し、 Constraint Type を"Attach to Geometry"に設定します。

    特定のポイントを取り付ける必要はなくて、単にその布ジオメトリ上のグループを指定して、 Constrain to Closest Point を有効にすればよいだけです。

  5. Vellum Packノードを追加して、その布ジオメトリをパック化します。

  6. チェーンの最後にNullを追加し、わかりやすい名前(例えば、CAPE1_OUTPUT)を付けます。マントをエージェントシェイプに取り込んだ時に、このノードを使用します。

    (通常では、インポート元のSOPチェーンの最後にNullノードを配置することで、それより上流の位置にノードを挿入していけば、チェーン内の最後のノード参照を変更する必要がなくなるので、よい考えです。)

Tip

Vellumセットアップチェーンの最後にVellum Solver SOPを追加すれば、高速な布シミュレーションを行なうことができます。 例えば、布がどのようにキャラクタ上に掛かるのかチェックすることができます。 これは、群衆と布をフルシミュレーションするよりも高速です。

布をエージェントに追加する

  1. エージェントを定義したSOPチェーンの上記のAGENT_DEFINITION Nullに、Agent Layerノードを追加します。

    レイヤーは、キャラクタにバリエーションを与えることができます。

  2. Layer Name に、このスキンのバリエーションを意味した名前、例えばskin_with_short_capeを設定します。

  3. __Layer Binding___ を追加します。

  4. 新しいレイヤーインスタンス:

    • Transform Name に、新しいシェイプの基準となるトランスフォーム名を設定します(通常では、これはキャラクタスキンです)。

    • Add Shape を有効にします。

    • SOP Path フィールドで、このバリエーションの布ジオメトリのパスを入力します。

    • Shape Name フィールドで、このシェイプ(布)の説明的な名前(例えば、short_cape)を入力します。

  5. エージェント定義に追加したい布シェイプレイヤ毎に、上記の操作を繰り返します。

Tip

群衆を配置する時は、作成したバリエーションを使って群衆を配置することを忘れないでください。

布をシミュレーションする

  1. SOPネットワークで、Crowd Solver DOPの出力を取得します。

    例えば、DOP Import SOPを使って、そこにDOPネットワーク内のCrowd Objectを指定し、 Import Style を"Fetch Geometry from DOP Network"に設定します。

  2. Agent Vellum Unpackノードを追加して、Vellumジオメトリを抽出します。

  3. Vellum Solver SOPを追加して、Vellumジオメトリをシミュレーションします。

Tip

Vellum Solver SOPの出力は、シミュレーションした布ジオメトリ のみ です。 そのジオメトリを取得して、それを何かしらの方法で群衆とマージする必要があります(例えば、ジオメトリをマージしたり、それらを別々にレンダリングしてコンポジットします)。

(Agent Edit SOPを使えば、シミュレーション出力からキャラクタスキンレイヤーだけを取り出すことができます。 Set Current Layer を有効にして、それをデフォルトのスキンレイヤーに設定します。)

群衆シミュレーション

はじめよう

  • 基本

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

  • セットアップ

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

動くパーツ

  • エージェント

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

  • ステート

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

  • トリガー

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

  • キャッシュ

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

挙動

外観

  • 多様性

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

  • 布の取り付け

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

地形

  • 足の着地

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

  • 地形

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

  • 障害物

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