エージェントを同期させるためには、 "Sync"モジュールを使用することができます。これは、horse/riderのセットアップや、異なるグループのエージェントを同期またはコンストレイントする必要がある場合など、その他のセットアップで特に役立ちます。
horse/riderの設定の例を見てみましょう。
アセットの準備
エージェントは、シミュレーション中にAtomsによって同期されるので、それらのアニメーションクリップは、Animation Clip File(Fbxなど)にエクスポートする前に同期させる必要があります。
horseに余分なジョイントを加えて、それにriderの主要なぺルビスをコンストレイントすることは適切な判断です。または、riderのメインとなるぺルビスのアニメーションをベイクして、それをhorseの余分なジョイントにコピーすることも可能です。
アニメーションクリップを通常どおりエクスポートして、それらをエージェントタイプと一緒にAtomsにロードします。
Agent Groupの順番を設定する
Layoutモジュール(Grid Layout)とClip Reader、またはState Machineモジュールを使用して2つのエージェントグループを作成します。最初のエージェントグループでは "AgentType"を "horse"に設定し、2番目のエージェントグループでは "rider"に設定します。
シミュレーション実行中、Atomsは、シーン内のエージェントグループを順次計算します。この場合、horseを含むエージェントグループが最初に計算されます。よって、まずhorse agent groupを選択し、次にrider agent groupを選択する必要があります(この順序で)。次に、AtomsシェルフからSync Commandを押します。
ボンネットの下では、horseグループの「Message」アトリビュートとriderグループの「ParentAgentGroup」アトリビュートの間で接続が確立されています。
Syncモジュールを追加する
最後のステップは、Syncモジュールをrider agent groupに追加することです。
このモジュールは、いくつかのメタデータを親から子エージェントにコピーします。
現在のLayoutモジュールも上書きします。このため、Syncモジュールの "AgentType"フィールドを "rider"に設定する必要があります。また、 "ParentJoint"の名前(運転手の関節)とriderの "Joint"の名前(Driven Joint)も設定する必要があります。
最後に、オフセットを追加して、KeepOffsetチェックボックスを有効にします。よって、子のジョイントアニメーションを維持することもできます。 keepOffsetがオフの場合、モジュールは、オフセットなしで通常のコンストレイントを適用します。さらに、メタデータをコピーする必要がある場合は、「metadata」リストを展開し、コピーしたいメタデータ名を親エージェントから追加します。
シーンを巻き戻すと、riderがhorseにコンストレイントされているのがわかります。