On this page |
概要 ¶
群衆シミュレーションは、ジオメトリ(SOP)ネットワークとシミュレーション(DOP)ネットワークの両方を必要とします:
-
ジオメトリ(SOP)ネットワークは、エージェントの作成と定義をするのに使用します。HoudiniのSOPノードのフルパワーを使用すれば、地形などの既存モデルからエージェント用の位置を生成することができます。
-
シミュレーション(DOP)ネットワークは、実際の群衆シミュレーションを走らせるのに使用します。DOP群衆シミュレーションネットワークには、各パーティクル(と、そのパーティクルに取り付けられているエージェント)の動きを制御するロジックを格納します。このDOPネットワーク内では、エージェントは他のダイナミクス(DOPs)エレメントと相互作用させることができます。
クィックスタート ¶
Simulateシェルフツールを使用することで、簡単に基本的な群衆シミュレーションシーンを取り込むことができます。 後は、目的に応じてそのネットワークを調整します。
-
このツールは、Houdiniに組み込まれているmocapbiped1キャラクタを使って、自動的にエージェントとCrowd Sourceネットワークを構築します。
Simulateシェルフツールで作成された群衆シミュレーションネットワーク(
crowd_sim
): -
エージェントを歩行させたい地形ジオメトリがあれば、その地形ジオメトリを選択してから、 Crowds シェルフタブの Terrain Foot Plantingをクリックします。その地形オブジェクトはStatic Solverの入力として追加されます。
-
プレイバーの Playをクリックしてシミュレーションを再生します。エージェントが立ち止まった状態から歩き出します。
エージェントの定義 ¶
エージェントは、ジオメトリ(SOP)ネットワークである エージェント定義ネットワーク 内で定義します。 このネットワークでは、群衆シミュレーションをする前に、あなた(またはシェルフツール)がノードを追加してエージェントを修正することができます。 この修正には、レイヤーの追加、ラグドールシミュレーション用のコリジョンと回転情報の追加があります。
Simulateシェルフツールは、mocapbiped1_setup
内に以下のようなエージェント定義ネットワークをセットアップします。
|
エージェントプリミティブを作成し、名前、現行レイヤー、現行アニメーションクリップなどの基本的な情報を設定します。 |
|
|
1個以上のアニメーションクリップをエージェント定義に追加します。 |
|
|
このノードは、シミュレーションネットワーク内でPOP Sourceノードを使ってエージェントを取り込めるようにするための参照ターゲットとして存在しています。 |
|
|
エージェント定義をディスクに書き出してから、それ以降は、入力の代わりにそのキャッシュ化したファイルからエージェント定義を読み込んでクックするようにさせることができます。 これを使用することで、キャラクタのクックが遅い場合に、そのエージェント定義ネットワークを高速化することができます。 |
|
|
重要なジョイントの名前、手足に使用するトランスフォームなどの追加情報をエージェントにセットアップします。 Terrain Adaptation (エージェントの足が地形ジオメトリ上に適切に乗るように、Houdiniがエージェントのアニメーションを調整します)、 Look At (頭がどこかに向くように、Houdiniがエージェントの首ジョイントを編集します)のように、どのジョイントがどの体の部位を表わしているのかHoudiniに知らせる必要のあるような機能を実行する場合、群衆ソルバは、このAgent Prep SOPからの情報を使用して、足の着地や他のプロシージャルな変更を実行します。 このAgent Prep SOPは、いつも計算が高速でキャッシュする必要がないので、Agent Definition Cache SOPの後に接続しています。 |
|
|
ラグドールシミュレーションで使用します。 エージェントのスケルトンを囲んだ単純なジオメトリを定義します。このジオメトリは、エージェントがラグドールに変わった時に衝突させるサーフェスを決めるのに使用されます。 |
|
|
ラグドールシミュレーションで使用します。 各エージェントジョイントの動きの範囲を指定します。 |
|
|
エージェント定義の“キャッシュ化可能な”部分の最後を示したマーカー。 最終のエージェント定義を他のネットワークに取り込む際に参照するのに便利なノードです。 |
アニメーションクリップをエージェントに追加する ¶
クリップとは、キャラクタの短いアニメーション(例えば、立った状態、歩行、走行)のことです。 エージェント定義にクリップを追加することができるので、ステート別にエージェントに異なるアニメーションを演じさせることができます。
To... | Do this |
---|---|
アニメーションソースをセットアップする |
エージェントにクリップを追加する前に、ソースキャラクタのそれぞれのインスタンスが各アニメーションを演じるようにセットアップする必要があります。 例えば、歩行と走行のアニメーションをする Simulateシェルフツールは、静止状態、立ち止まった状態、歩行アニメーションを含んだMocap二足歩行キャラクタを作成します。 |
シェルフツールを使って、アニメーションクリップをエージェントに追加する |
新しいアニメーションクリップは、エージェント定義ネットワーク内のAgent Clip SOPに追加されます。 |
Note
前のバージョンのHoudiniの群衆システムでは、エージェント情報を常にディスクにベイクし、1体のキャラクタインスタンスを作成して、それがアニメーションクリップを再生するように設定し、 そのクリップをベイクしてから、同じインスタンスが別のクリップを再生するように編集し、そのクリップをベイクしてといったように作業していました。
現在の群衆システムは、はるかに便利になって、もはやファイルをディスクにベイクする必要がなくなりました。 この群衆システムは、Houdiniで必要なキャラクタ情報を単にダイレクトにクックするだけです。 しかし、これだと各アニメーションクリップを演じるキャラクタアセットのインスタンスが 別々に 必要になることを意味するので、この群衆システムは、必要になった時にキャラクタ情報をクックします。
Crowd Source ¶
群衆を作成するには、エージェントの群れを作成する Crowd Sourceネットワーク が必要です。 このCrowd Sourceネットワークは、指定された領域にポイントをばら撒き、それらのポイントにエージェントを取り付けるジオメトリ(SOP)ネットワークです。
Simulateシェルフツールは、crowdsource
内に以下のCrowd Sourceネットワークをセットアップします。
|
エージェント定義ネットワークからエージェントを“インポート”します。 |
|
|
エージェントをポイント上にコピーします。 このノードには、サーフェス上または定義した領域内にエージェントを自動的に配置したり、さらに初期状態をランダムにするオプションがあります。 ジオメトリをCrowd Sourceノードの2番目の入力に接続することで、エージェントの配置を制御することができます。
|
|
|
ラグドールシミュレーションで使用します。 エージェントのパーツ間に拘束ネットワークをセットアップします。 |
|
|
|
群衆シミュレーション内のエージェントクラス毎に別々のObject Merge → Crowd Source → Agent Constraint Networkのブランチを結合します。 |
|
エージェントを群衆シミュレーションネットワークに取り込む際に参照するのに便利なノードです。
すべてのエージェントに適用したいノードは、 |
|
|
|
このDOP IOノードは、DOP群衆シミュレーションの結果をこのオブジェクトに取り込むことで、その結果をレンダリングできるようにします。 |
To... | Do this |
---|---|
シェルフツールを使用してCrowd Sourceネットワークを作成する。 |
Tip この結果のネットワークを編集し、様々なSOPsを使用すれば、エージェントがコピーされる前のポイントをセットアップすることができます。 例えば、ポイントをばら撒くのではなく、SOPsを使用して規則正しい列でポイントをセットアップすることができます。 |
群衆シミュレーション ¶
Crowd Source SOPネットワークは、エージェントの群れを作成します。 この群衆を動かしたり挙動を実行させるには、 群衆シミュレーションDOPネットワーク が必要です。
Simulateシェルフツールは、crowd_sim
内に以下の群衆シミュレーションネットワークを作成します。
群衆シミュレーションネットワークの一部のコンポーネントを以下に挙げます。
|
Crowd Stateノードの後には、エージェントの動きに影響を与えるビヘイビア系ノード、さらには、エージェントのスケルタルアニメーションに影響を与える他のノードを接続します。
それらのノードをCrowd Stateノードと 複数のビヘイビア系ノードの効果は正規化され、それらのビヘイビアの加重平均がCrowd Solverによってエージェントに適用されます。 |
|
|
Crowd Triggerノードの後には、Crowd Transitionノードを接続します。
このCrowd Transitionノードは、あるステート(状態)のエージェントがトリガー条件を満たした時に他のステート(状態)に切り替えます。
トリガーに複数のステート(状態)の変更を引き起こさせたい場合は、Crowd Triggerノードと |
|
|
これは、Crowd Sourceネットワークで作成されたエージェントを参照するPOP Source DOPです。 ここには、エージェントを表現したパーティクルが格納されます。 |
|
|
群衆システムを実行します。 Crowd Solverには、すべてのエージェント、エージェントのサブグループに適用可能なデフォルトの挙動用のコントロール(例えば、エージェントとの衝突回避、地形追従)が備わっています。 |
|
|
Crowd Object |
群衆システムが処理するデータは、このオブジェクトに追加されます。通常では、このノードを修正する必要はありません。 |
Tip
Houdiniは、ネットワークエディタ内のノードをわかりやすくするために、特定のノードにカラーコード(Crowd Stateはピンク、Crowd Triggerはオレンジ、Crowd Transitionは青)を自動的に設定します。 このカラーコードを変更したいのであれば、そのノードが作成された後でそのノードのカラーを変更しても構いません。
シェルフツール ¶
以下のツールは、シェルフの Crowds タブにあります。
|
キャラクタに基づいてエージェント定義ネットワークを作成します。 |
|
|
キャラクタインスタンスが演じているアニメーションを参照することで、そのアニメーションクリップをエージェント定義に追加します。 |
|
|
エージェントキャラクタのスケルトンを囲んだ単純な衝突ジオメトリをセットアップします。 これはラグドールシミュレーションで使用されます。 |
|
|
エージェントキャラクタのジョイント回転制限をセットアップします。 これはラグドールシミュレーションで使用されます。 |
|
|
選択したジオメトリ上にエージェントを配置するためのCrowd Sourceネットワークを作成しますが、群衆シミュレーションネットワークを作成 しません 。 これは、シミュレーションを作成したくないレイアウトアーティストに役立ちます。 |
|
|
Paint Density |
地形ジオメトリ上に |
|
サンプルのアニメーションエージェントとサンプルの挙動を使って、ジオメトリ(SOP)ネットワークとシミュレーション(DOP)ネットワークをセットアップします。 これは、迅速に様々な群衆ネットワークをセットアップするのに役立ちます。 必要に合わせてそのネットワークを修正することができます。 |
|
|
選択したジオメトリを、現在の群衆シミュレーションの地形として設定します。 |
|
|
選択したジオメトリを、現在の群衆シミュレーションの障害物として設定します。 |
|
|
選択した経路にすべてのエージェントが辿るようにPOP Steer Pathノードを作成します。 ある特定の状態のエージェントのみがその経路を辿るようにしたい場合、POP Steer Pathノードを再接続する必要があります。 |
|
|
エージェントの頭が、選択したオブジェクトの方を向くようにします。 |
|
|
エージェントが、選択したオブジェクトの後を追いかけるようにします。 |
|
|
選択したエージェントの頭のトランスフォームにカメラを取り付けます。 |