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ノードを追加して、その布ジオメトリと拘束をパック化し、その布セットアップの固有の説明的な名前(例えば、
long_cape
)を Name パラメータに設定します。この名前は、エージェントシェイプとエージェントレイヤーの名前としてAgent Layerで使用されます。 -
複数の布シェイプを作成する場合、Mergeノードを追加して、複数のVellum Packノードからの出力を結合します。
Tip
Vellumセットアップチェーンの最後にVellum Solver SOPを追加すれば、高速な布シミュレーションを行なうことができます。 例えば、布がどのようにキャラクタ上に掛かるのかチェックすることができます。 これは、群衆と布をフルシミュレーションするよりも高速です。
布をエージェント定義に追加する ¶
-
エージェントを定義したSOPチェーンの上記の
AGENT_DEFINITION
Nullに、Agent Layerノードを追加します。エージェントレイヤーを使用してエージェントに複数のシェイプを割り当てることで、ジオメトリのバリエーションを生成することができます。
-
布シェイプ(Vellum Packノードからの出力)をAgent Layerノードの2番目の入力に接続します。
-
Use Layer Name Attribute を有効にして、 Layer Name Attribute に
name
を設定します。これは、布シェイプと同じ名前(Vellum Packの Name パラメータを使用して割り当てられたシェイプ名)で布シェイプ毎に別々にエージェントレイヤーを生成します。
布レイヤーを群衆に割り当てる ¶
-
群衆を配置した後に、Crowd Assign Layersノードを追加します。
Tip
布をシミュレーションする前の任意の箇所(例えば、群衆シミュレーションの後)でVellumレイヤーをエージェントに割り当てることもできます。
-
エージェントにランダムに割り当てたいVellumレイヤーを Layer Choices に設定して、 Weight 値を調整してそのランダムな分布を制御します。
cape_*
といったパターンを使用することで、均一な確率で選択されるレイヤーのリストを指定することができます。 -
特定のジオメトリバリエーションを持ったエージェントにのみVellumレイヤーを割り当てたいのであれば、 Select By を Current Layer に設定し、 Layer Pattern にレイヤー名のリストまたはパターンを設定します。
-
Group パラメータを使用するか、または、 Percent to Select を指定することで、レイヤーの割り当てを特定のエージェントに制限することもできます。
布をシミュレーションする ¶
-
SOPネットワークで、Crowd Solver DOPの出力を取得します。
例えば、DOP Import SOPを使って、そこにDOPネットワーク内のCrowd Objectを指定します。
-
Agent Vellum Unpackノードを追加して、Vellumジオメトリを抽出します。
Vellumシェイプを含んだレイヤーの名前(例えば、
cape_*
)を Layers to Simulate に設定します。 すると、エージェントに割り当てられている他のレイヤーがCollisionジオメトリとしてアンパックされます。群衆内の一部のエージェントのみがVellumシェイプを持っている場合、 Select By パラメータを使用することで、プリミティブグループまたはエージェントに割り当てられているレイヤーに基づいて、シミュレーションするエージェントを選択することができます。
-
Vellum Solver SOPを追加して、Vellumジオメトリをシミュレーションします。
-
オプションで、シミュレーションした布ジオメトリと群衆ジオメトリをマージしてその結果を視覚化することができます。 Agent Vellum Unpackの4番目の出力には、 Layers to Simulate で指定されたレイヤーを現行レイヤーのリストから除外したオリジナルのエージェントが用意されるので、シミュレーションしたVellumジオメトリと一緒にそれらのエージェントを表示することができます。