On this page |
概要
VellumはHoudiniの高速なCloth(と他のPBD)ソルバです。布をエージェントシェイプと関連付けてから、その布を群衆ダイナミクスやリジッドボディといった他のダイナミクスと一緒に全体のダイナミクスシミュレーションの一部としてシミュレーションすることができます。
SOPsを使ってジオメトリ内にVellum Clothをセットアップすることができるので、このVellum Clothはエージェントシェイプ内に含めるのに適しています。
エージェントにマントを取り付けてシミュレーションさせた完全に動作したサンプルは、SimpleCrowdClothノードのサンプルを参照してください。
布のセットアップ
エージェント定義をセットアップしたSOPネットワークに入って、インポートしたエージェントジオメトリにVellum Clothを追加してから、それをエージェントシェイプジオメトリとして使用します。
-
エージェント定義SOPsとは別に、布ジオメトリを作成するSOPチェーンを新しく作成します。
ここでは、布ジオメトリをインポートするか、それを定義します。マントのサンプルでは、その布は単純にグリッドです。
-
Vellum Constraintsノードを布ジオメトリに追加します。 Constraint Type を"Cloth"に設定します。これは、Vellum Solverがそのジオメトリを布として扱うように、そのジオメトリ上にアトリビュートをセットアップします。
-
エージェントシェイプのRestジオメトリ(静止ジオメトリ)をVellum Constraintsノードの3番目の入力に接続します。
-
もう1つVellum Constraintsノードを追加し、 Constraint Type を"Attach to Geometry"に設定します。
特定のポイントを取り付ける必要はなくて、単にその布ジオメトリ上のグループを指定して、 Constrain to Closest Point を有効にすればよいだけです。
-
Vellum Packノードを追加して、その布ジオメトリをパック化します。
-
チェーンの最後にNullを追加し、わかりやすい名前(例えば、
CAPE1_OUTPUT
)を付けます。マントをエージェントシェイプに取り込んだ時に、このノードを使用します。(通常では、インポート元のSOPチェーンの最後にNullノードを配置することで、それより上流の位置にノードを挿入していけば、チェーン内の最後のノード参照を変更する必要がなくなるので、よい考えです。)
Tip
Vellumセットアップチェーンの最後にVellum Solver SOPを追加すれば、高速な布シミュレーションを行なうことができます。 例えば、布がどのようにキャラクタ上に掛かるのかチェックすることができます。 これは、群衆と布をフルシミュレーションするよりも高速です。
布をエージェントに追加する
-
エージェントを定義したSOPチェーンの上記の
AGENT_DEFINITION
Nullに、Agent Layerノードを追加します。レイヤーは、キャラクタにバリエーションを与えることができます。
-
Layer Name に、このスキンのバリエーションを意味した名前、例えば
skin_with_short_cape
を設定します。 -
__Layer Binding___ を追加します。
-
新しいレイヤーインスタンス:
-
Transform Name に、新しいシェイプの基準となるトランスフォーム名を設定します(通常では、これはキャラクタスキンです)。
-
Add Shape を有効にします。
-
SOP Path フィールドで、このバリエーションの布ジオメトリのパスを入力します。
-
Shape Name フィールドで、このシェイプ(布)の説明的な名前(例えば、
short_cape
)を入力します。
-
-
エージェント定義に追加したい布シェイプレイヤ毎に、上記の操作を繰り返します。
Tip
群衆を配置する時は、作成したバリエーションを使って群衆を配置することを忘れないでください。
布をシミュレーションする
-
SOPネットワークで、Crowd Solver DOPの出力を取得します。
例えば、DOP Import SOPを使って、そこにDOPネットワーク内のCrowd Objectを指定し、 Import Style を"Fetch Geometry from DOP Network"に設定します。
-
Agent Vellum Unpackノードを追加して、Vellumジオメトリを抽出します。
-
Vellum Solver SOPを追加して、Vellumジオメトリをシミュレーションします。
Tip
Vellum Solver SOPの出力は、シミュレーションした布ジオメトリ のみ です。 そのジオメトリを取得して、それを何かしらの方法で群衆とマージする必要があります(例えば、ジオメトリをマージしたり、それらを別々にレンダリングしてコンポジットします)。
(Agent Edit SOPを使えば、シミュレーション出力からキャラクタスキンレイヤーだけを取り出すことができます。 Set Current Layer を有効にして、それをデフォルトのスキンレイヤーに設定します。)