An Agent is an instance of an agent type.
Each Agent has a dependency graph of nodes that computes the agent pose at each frame.
When an agent is created its DG is empty, then it gets populated by the Behaviour Modules of its parent Agent Group.
Each Behaviour Modules will either add new nodes or initialize some metadatas at the beginning of the simulation. The Behaviour modules will keep editing the graph or edit the metadatas during the simulation.
Nodes and Operators
The DG is built around nodes. Each node has a set of ports and ports of the same type can be connected.
Of course depending on the value of each port during the simulation the resulting ouput pose will be different.
Operators are special nodes computing a pose and passing it forward through a output pose port. They can optionally have an pose port as input, in this way you can have a cascade of operators.
Let's have a look at the following example network. There are three operators: the clipReader, pelvisOperator and footOperator nodes. As said, they all have an output pose port except of the clipReader.
The clipReader reads an Animation Clip object and passes the pose at the current time to the PelvisOperator which then does a bunch of other operations on the pose like placing the agent at the right height on the ground. The foot operator takes care of locking the feet on the ground.
This network was build automatically by a Behaviour Modules called "clipReader".
.
エージェントは、エージェントタイプのインスタンスです。
各エージェントは、各フレームでのエージェントのポーズを計算するノードの依存グラフを保有しています。
エージェントが作成されると、そのDGは空になり、該当するParent Agent GroupのBehaviourモジュールによって移入されます。
シミュレーションの開始時に、各Behavior モジュールは新しいノードを追加するか、またはいくつかのメタデータを初期化します。Behaviourモジュールは、シミュレーション中にグラフ、またはメタデータの編集を継続します。使用可能なBehaviourモジュールは、メタデータページに表示されているエージェントメタデータのみを変更します。
ノードとオペレータ
DGは、ノードを中心に構築されています。各ノードにはポートのセットがあり、同じタイプのポートを接続できます。もちろん、シミュレーション中の各ポートの値に応じて、結果の出力ポーズは異なります。
オペレータは、ポーズを計算し、それを出力ポーズポートを介して転送する特別なノードです。これらは、オプションで入力としてポーズポートを保有することができます。このようにユーザーは、オペレータのカスケードを保有することができます。次のネットワークの例を見てみましょう。 clipReader、pelvisOperator、footOperatorの3つのオペレーターがあります。 clipReaderを除いて、これらはすべて入力ポーズポートを保有しています。 clipReaderは、Animation Clipオブジェクトを読み取り、現在のポーズをPelvisOperatorに引き渡します。PelvisOperatorは、エージェントを地面から適切な高さに配置するなど、その他の一連の操作をポーズに対して行います。フットを操作するユーザーがフットを地面に固定するように注意して下さい。このネットワークは、「clipReader」と呼ばれるBehaviourモジュールによって自動的に構築されます。
Atoms Crowdには、デフォルトのオペレータがいくつかあります。しかし、ユーザーはC ++で新しいオペレータを作成してカスタムの結果に達することができます。テクニカルドキュメントでは、C ++で新しいオペレータを作成する方法がわかりやすく説明されています。こちらのセクションでは、利用可能なすべてのオペレータノードのリストを確認することができます。