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

群衆への多様性の追加

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

On this page

エージェントレイヤー

レイヤーは、個々のエージェント毎に対して、いくつか利用可能な異なった表示ジオメトリを選択することができます。 これにより、単一のエージェントクラス内で群衆に多様性を加えることができます。

レイヤーの作成

キャラクタからエージェントを作成すると、Houdiniはオリジナルのキャラクタの可視ジオメトリからデフォルトレイヤーを生成します。 Agent Layerジオメトリノードは、さらにレイヤーを追加することができます。

例えば、全体的に異なったキャラクタスキンのレイヤーを作成するには:

  1. Crowd Sourceジオメトリネットワークで、Agent Layerノードを追加します。

  2. Layer Bindings の隣りにある Addボタンをクリックして、バインドを追加します。

    • SOP Path に新しいキャラクタスキンを表現したジオメトリノードを設定します。

    • そのスキンの Shape Name を入力します。

    • Transform Name メニューで、リグのトップレベルのトランスフォームを選択します。

現行レイヤーの設定

個々のエージェントプリミティブには現行ディスプレイレイヤーがあります(またコリジョンレイヤーもあります。このレイヤーは、ダイナミクスの衝突に使用されるジオメトリです)。

  • 高レベルのCrowd Sourceジオメトリノードには、群衆に現行ディスプレイレイヤーをランダムに割り当てるためのオプションがあります。

  • Source Network内にAgent Editジオメトリノードを使用することで、選択したエージェントの現行レイヤーを変更することができます。

  • WranglerまたはVOPネットワークで現行レイヤーを設定したいのであれば(例えば、エージェントがあるステート(状態)の時にエージェントのレイヤーを変更したい)、setagentcurrentlayer VEX関数またはAgent Layer NameAgent LayersSet Agent LayerのVOPを使用します。

Tip

レイヤーを使用すれば、低解像度のプロキシジオメトリを表示することができます。例えば、ローポリのキャラクタスキンを作成し、それをエージェントのレイヤーとしてセットアップしてから、そのローポリレイヤーをすべてのエージェントの現行レイヤーとして設定するAgent EditをCrowd Sourceネットワークのブランチに組んだとします。そのブランチをディスプレイフラグにし、"本当の"ブランチをレンダーフラグにします。

レイヤーを使ってパーツを取り付ける

各レイヤーは、まったく異なったジオメトリではありません。 各レイヤーは、リグのトランスフォームと一部のジオメトリ(形状)間に異なったバインドを設定しているだけです。 つまり、ベースレイヤーを基本に、例えば、ハンマーや剣をキャラクタの手に取り付けるバインドを追加したレイヤーを作成することができます。

  1. Crowd Sourceジオメトリネットワークで、Agent Layerノードを追加します。

  2. Agent Layerのパラメータで、 Source Layer をオンにして、既存レイヤー(defaultレイヤー)をベースにします。

  3. Layer Bindings の隣りにある Addボタンをクリックして、バインドを追加します。

    • SOP Path に取り付けたいパーツを表現したジオメトリノードを設定します。

    • そのパーツの Shape Name を入力します。

    • Transform Name メニューで、その形状を取り付けたいトランスフォームを選択します。

Tip

バリエーションを加える強力な方法は、loop blockを使用して、色々なパーツ(例えば、色々な帽子)を取り付けたレイヤーを複数作成することです。

Crowd Sourceをランダム化する

Crowd Sourceノードには、 Randomize タブがあり、単一のCrowd Sourceノードでバリエーションを自動化することができます。例えば、guyのグループですべてのエージェントに名前を付ける代わりに、 Randomize のコントロールにより、各エージェントにguy1guy2guy3の中から1つをランダムに割り当てることができます(なお、これらの名前はそれぞれ異なるキャラクタクラスで、一連のアニメーションクリップを独自にベイクアウトする必要があります)。

アトリビュート

  • 入力ポイントにエージェント関連のアトリビュートがあれば、それらのアトリビュートが新しいエージェントプリミティブにコピーされます。 これにより、上級ユーザは複数のエージェントに対して、異なる開始条件や外観などを手動で、またはランダムに効率的に設定することが可能です。

  • Crowd Sourceジオメトリノードで、ノードの Randomize タブの制御を使用して、エージェントのスケールを変更できます(pscaleを設定)。 ソルバはスケールを考慮し、エージェントのGait Speed(進行速度)を適切に変更します。エージェントの動きを遅くするには、最大速度のランダム化を試してください。 Crowd Solver DOPAllowed variance を100%に設定すると、エージェントの速度を変更できます(これを実行しない場合、ソルバは、エージェント速度が元のGait Speed(進行速度)から変化する量に関して制限を設けてしまい、足が滑る原因になります)。

マテリアルスタイルシート

マテリアルスタイルシートにより、レンダリング時にエージェントのマテリアル設定を変更できます。 例えば、エージェントのテクスチャ設定をランダム化して、いろいろな外観を表現できます。

群衆シミュレーション

はじめよう

  • 基本

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

  • セットアップ

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

動くパーツ

  • エージェント

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

  • ステート

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

  • トリガー

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

  • キャッシュ

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

挙動

外観

  • 多様性

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

  • 布の取り付け

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

地形

  • 足の着地

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

  • 地形

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

  • 障害物

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