On this page |
概要 ¶
シミュレーションの各ステップで、Houdiniは各エージェントを見て、一連のトリガノードをチェックします(例えば、“対象までの距離>2”など)。論理ノードはトリガの結合に使用できます。トリガが適用されると、Houdiniは、トリガに付加されたトランジションを確認して、エージェントを新しい状態へ変更します(例えば、“walk”->“run”)。トランジションには、Houdiniが新旧の状態のアニメーションクリップを自動的にブレンドする 持続時間 が入っている場合があります。
トランジションの追加 ¶
トランジションは、エージェントがある状態(walk
など)から別の状態(idle
など)へいつ変化するかを制御します。トランジションには3つの決定が必要です:
-
エージェントの移行 前 の状態
-
トランジションを引き起こす 条件
-
エージェントの移行 後 の状態
-
群衆シミュレーションネットワークへ進みます。
-
Crowd Triggerノードを作成します。パラメータエディタで、トリガ条件を設定します(下記の“ビルトインのトリガタイプ”を参照)。
複数のトリガをCrowd Trigger Logicノードを使用して、“And”、“Or”または“Not”論理と組み合わせることができます。
-
Crowd Transitionノードを作成し、トリガノードをそれに接続します。
-
Transitionノードのパラメータエディタで、 Start state および End state を設定します。
-
Transitionノードの出力を
transition_merge
ノードへ接続します(crowd DOP network参照)。
ビルトインのトリガタイプ ¶
Crowd Triggerノードには、多くの便利なテストタイプの他、 Custom オプションがあり、テストエクスプレッションをVEXに書き込むことができます。
トリガのタイプ |
説明 |
例 |
---|---|---|
Object bounds |
エージェントがジオメトリに入る、ジオメトリから離れる、またはジオメトリ内にある場合に起動します。 |
エージェントは、レースのゴールを超えると走るのを停止します。 |
Object attribute |
エージェントの近くにあるオブジェクトのアトリビュート値に基づいて起動します。 |
エージェントは、赤信号で止まり、青信号で歩きます(ライトオブジェクトの“stop”アトリビュートを使用して、“stop”が1であるかどうかをエージェントにチェックさせます)。 |
Object distance |
エージェントがオブジェクト(またはポイントクラウドのポイント)にどれくらい近いか、または離れているかに基づいて起動します。 |
エージェントは、ベースから離れすぎると止まり、向きを変えます。 |
Object ray cast |
オブジェクトが、ある距離内でエージェントの真正面になる場合に起動します。 |
エージェントは絵画を見ると、止まって鑑賞します。 |
Particle speed |
エージェントの速度に基づいて起動します。 |
エージェントの速度に基づいて、“walk” から “run”、“sprint”への状態/アニメーションを切り替えます。 |
Particle proximity |
他のエージェントの近接に基づいて起動します。 |
別のグループからのエージェントは、お互いが接近すると、“fight”状態に切り替わります。 |
Particle attribute lookup |
エージェントの1つのアトリビュート値に基づいて起動します。 |
エージェントの“health”アトリビュートが非常に低くなった場合、“dying”状態に切り替わります。 |
Particle attribute comparison |
エージェントの1つのアトリビュート値と、近接のエージェントの同じアトリビュート値を比較して起動します。 |
エージェントは、値が大きいほうの相手から逃げ出します。 |
Time |
シーン時間に基づいて起動します(例えば、現在の時間ステップがシーン内で5秒を超える場合)。 |
エージェントはシーンの途中で走り出します。 |
Current state duration |
エージェントが現在の状態にいる長さに基づいて起動します。 |
警備員は、30秒後、“alert”状態から離れます。 |
Animated parameter |
トリガノードのパラメータに基づいて起動します。手動制御のパラメータの値をキーフレーム化できます。または、エクスプレッションを入力して、関数に基づいて起動できます。 |
エージェントは、残りのシーンで手動でアニメーションされたイベントに反応します。 |
Custom VEXpression |
VEXスニペットを実行後、変数に値に基づいて起動します。トリガは、 |
これは、より複雑な要件、またはカスタム要件に使用します。 |
トリガの組み合わせ ¶
Crowd Trigger Logicノードでは、“and”、“or”または“not”の関係性を使用して、2つのトリガの結果を組み合わせることができます。
Tips ¶
-
カスタムトリガでのアトリビュートの便利な使用方法については、エージェントアトリビュートを参照してください。
-
複数のトリガ/トランジションが指定されたエージェントで有効の場合、どのトランジションが選ばれるかは技術的には定義されていません(ただし、おそらく接続順序で最後のトランジションです)。しかし、トリガ/トランジションの複数のパスを同じ“from”状態を使用して作成しないようにすることで、この状況を回避するのが賢明です。
See also |