On this page | |
Since | 15.5 |
このノードは、あるCrowd Stateから別のCrowd Stateへのトランジション(遷移)を定義します。 入力は、ステート(状態)がTrueに評価された時にトランジション(遷移)を開始するトリガーとなります。
Clip Transition Graph ¶
Clip Transition Graphを使用すれば、アニメーションクリップ間をどのようにトランジションさせるのか制御することができます。 そこには、お互いにトランジション可能なクリップに関する情報、それらのクリップ内でトランジションを発生させる箇所に関する情報が備わっています。 これを使用することで、現行アニメーションクリップ内の適切な箇所までクリップトランジションを遅らせたり、ポーズが似たような時に次のクリップへ滑らかにブレンドさせることができます。 ソースクリップとターゲットクリップがお互いに直接的にトランジションさせることができない場合、そのターゲットクリップまでの最短経路に沿って途中にあるクリップを使用して一連のトランジションが実行されます。
Tip
Test Simulation: Crowd Transition SOPを使用することで、群衆シミュレーションをセットアップする前に、特定のクリップ間のトランジションを簡単にプレビューすることができます。
使い方 ¶
Clip Transition Graphジオメトリは、 Clip Transition Graph パラメータを介して明示的にCrowd Object DOPに渡すことができるので、群衆シミュレーション内のどのトランジションにも使用することができます。
他には、Clip Transition Graphジオメトリをエージェント定義内に__transitiongraph__
という名前のシェイプとして保存することもできます。
これは、Agent Clip Transition Graph SOPの2番目の出力を使用して設定することができます。
このAgent Clip Transition Graph SOPはClip Transition Graphを入力エージェントのシェイプライブラリに追加します。
Clip Transition Graphをエージェント定義内に保存することで、ネットワーク経由で別のジオメトリストリームを流す必要がなくなります。 さらには、エージェント定義のシェイプライブラリと一緒に簡単にClip Transition Graphをディスクにキャッシュ化することができます。 このワークフローは、Crowd MotionPath Transition SOPでは必須であり、Clip Transition Graphジオメトリが明示的に渡されていない時のCrowd Object DOPでも対応しています。
Tip
Clip Transition Graphジオメトリは、Agent Unpack SOPを使用することでエージェント定義から取得することができます:
-
Output を Rest Geometry に設定します。
-
Unpack Shapes From を Shape Library に設定します。
-
シェイプをアンパックするには、 Shapes を
__transitiongraph__
、 Iterations を2
に設定します。 -
必要であれば、 Apply Agent Transform を無効にすることで、入力エージェントのトランスフォームがジオメトリに適用されないようにすることができます。入力に複数のエージェントプリミティブが含まれている場合にジオメトリが重複して生成されないようにするには、 Limit to Unique Agent Definitions を有効にします。
アトリビュート ¶
Clip Transition Graphジオメトリ内の各ポイントは、アニメーションクリップを表現し、各2点ポリゴンは、クリップ間の(1方向の)遷移を表現します。
名前 | クラス | タイプ | 説明 |
---|---|---|---|
clipname
|
point | string |
アニメーションクリップの名前を指定します。 |
agentname
|
point | string |
この文字列は、エージェントの |
blend_durations
|
primitive | float array |
トランジション領域毎に、その領域で始まるトランジションの期間(秒)を指定します。 |
sync_points
|
primitive | vector2 array |
トランジション領域毎に、その2つのアニメーションクリップで似たポーズを持つクリップ時間(秒)のペアを指定します。 |
transition_regions
|
primitive | vector2 array |
最初のアニメーションクリップに対して、トランジションを起こすことができるクリップ時間の範囲(秒)を指定します。 |
パラメータ ¶
Group
エージェントのグループにのみ影響を与えます。
Input State
トランジション(遷移)前のステート(状態)を指定した文字列パターン。 それらのステート名は、Crowd Stateノードの State Name パラメータに該当します。 以下のパターンは、match VEX関数と同じ構文に従います。
-
*
は、すべてのステートに一致します。 -
* ^walk
は、walk
を除くすべてのステートに一致します。 -
walk run_*
は、walk
ステートと名前がrun_
で始まるすべてのステートに一致します。
Output State
トランジション(遷移)後のステート(状態)の名前。これはCrowd Stateノードの State Name パラメータに相当します。
Output Clip
有効にすると、 Output State へトランジションした時に、デフォルトのクリップ選択がここで指定されたクリップで上書きされます。 通常では、このOutput Clipは、Output Stateの Clip Assignment パラメータに基づいて選択されます。
このクリップは、VEXpressionsを使ってエージェント単位で調整することができます。
Use VEXpressions
有効にすると、ローカルエクスプレッションを使用して、各エージェントの Input State 、 Output State 、 Output Clip をオーバーライドすることができます。
Max Random Delay
有効にすると、トリガーがTrueと評価するタイミングとトランジションが始まるタイミング間の最大遅延時間(秒)を指定することができます。 これは、多くのエージェントが同時にトランジションを開始しないようにするのに役立ちます。
Random Seed
Max Random Delay が有効な時、ここには、Random Delay時間を選択する際に使用されるシードを指定します。
Use Clip Transition Graph
有効にすると、Crowdオブジェクトのオプションのクリップトランジショングラフを使用して、ステートとアニメーションクリップ間のトランジションを制御することができます。 これを使用することで、現行アニメーションクリップ内の適切な箇所までトランジションを遅らせたり、中間のトランジションクリップを使用することができ、また、これには新しいクリップへ滑らかにブレンドさせる方法に関する情報を備えています。 さらに、そのクリップトランジショングラフは、このビヘイビアに対してクリップ毎に制御することができます(これは、トランジションの Input State パラメータに複数のステートを指定した場合や、どれかの入力ステートの Clip Assignment が Random Distribution に設定されている場合に役立ちます)。
Interrupt Active Transitions
有効にすると、このトランジションを開始するために、アクティブまたは保留中のトランジションを中断することができます。 例えば、これは、エージェントがトランジションの途中かどうかに関係なく衝突が起きた後に即座にラグドールステートに切り替えるのに役立ちます。
Duration
ステート間のトランジション(遷移)の長さ(秒)。
State Blend
Crowd Solverが Input State と Output State との間をトランジション進捗としてブレンドする方法を指定します。
Examples ¶
このサンプルでは、クリップトランジショングラフを使用することで、ステートのトランジションに対してトランジションクリップを用意する方法を説明しています。
See also |