比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

To synchronize agents you can use the "sync" modules. It is particularly useful with horse/rider setup or any other setup where you need to synchronize or constraint agents from different groups.

Let's see an example of a horse/rider setup.

Asset preparation

Since your agents will be synced by Atoms during the simulation, their animation clips should be synchronized before you export them to an animation clip file (i.e. Fbx).

A good practice is to add an extra joint to the horse and constrain the rider main pelvis to it. Alternatively you can bake the animation of the rider main pelvis and the copy it to the horse extra joint.

Export the animation clips as usual and load them inside Atoms alongside with your agent types.

Image RemovedImage RemovedImage Removed

Set the agent group order

Create two agent groups with a layout module (i.e. grid layout) and a clip reader or state machine module. On the first agent group set the "agentType" to "horse", and on the second one set it to "rider".

During the simulation Atoms computes sequentially the agent groups in the scene. In this case the agent group containing the horses should be computed first. In order to do that you should select the horse agent group and then the rider agent group (in this order). Then press the sync command from the Atoms shelf.

Image Removed

Under the hood a connection is made between the "message" attribute of the horse group and the "parentAgentGroup" attribute of the rider group.

Adding the sync module

The last step is to add the sync module to the rider agent group. This module copies some metadatas from the parent to the child agents. It also overrides the current layout module, for this reason you need to set the sync module "agentType" field to "rider". You must also set the "parentJoint" name (the driver joint) and the rider "joint" name (the driven joint).

Finally, you might as well add an offset and activate the keepOffset checkbox to maintain the child joint animation. If the keepOffset is off then the module applies a normal constraint without offset. If you need to copy more metadatas, expand the "metadata" list and add the metadata names you want copy from the parent agents.

Rewind the scene and you will see the riders constrained to the horses.

エージェントを同期させるためには、 "Sync"モジュールを使用することができます。これは、horse/riderのセットアップや、異なるグループのエージェントを同期またはコンストレイントする必要がある場合など、その他のセットアップで特に役立ちます。
horse/riderの設定の例を見てみましょう。

アセットの準備

エージェントは、シミュレーション中にAtomsによって同期されるので、それらのアニメーションクリップは、Animation Clip File(Fbxなど)にエクスポートする前に同期させる必要があります。


horseに余分なジョイントを加えて、それにriderの主要なぺルビスをコンストレイントすることは適切な判断です。または、riderのメインとなるぺルビスのアニメーションをベイクして、それをhorseの余分なジョイントにコピーすることも可能です。
アニメーションクリップを通常どおりエクスポートして、それらをエージェントタイプと一緒にAtomsにロードします。

Image AddedImage AddedImage Added


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を押します。

Image Added

ボンネットの下では、horseグループの「Message」アトリビュートとriderグループの「ParentAgentGroup」アトリビュートの間で接続が確立されています。



Syncモジュールを追加する

最後のステップは、Syncモジュールをrider agent groupに追加することです。
このモジュールは、いくつかのメタデータを親から子エージェントにコピーします。
現在のLayoutモジュールも上書きします。このため、Syncモジュールの "AgentType"フィールドを "rider"に設定する必要があります。また、 "ParentJoint"の名前(運転手の関節)とriderの "Joint"の名前(Driven Joint)も設定する必要があります。


最後に、オフセットを追加して、KeepOffsetチェックボックスを有効にします。よって、子のジョイントアニメーションを維持することもできます。 keepOffsetがオフの場合、モジュールは、オフセットなしで通常のコンストレイントを適用します。さらに、メタデータをコピーする必要がある場合は、「metadata」リストを展開し、コピーしたいメタデータ名を親エージェントから追加します。


シーンを巻き戻すと、riderがhorseにコンストレイントされているのがわかります。