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 and it gets populated by the Behaviour Modules of its parent Agent Group.
At the beginning of the simulation, each Behaviour Module will either add new nodes or initialize some metadatas. The Behaviour Modules will keep editing the graph or the metadatas during the simulation.
The available Behaviour Modules will only modify the Agent metadatas listed in the Metadata page.
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 an output pose port. They can optionally have a 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: clipReader, pelvisOperator and footOperator. They all have an input 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 built automatically by a Behaviour Module called "clipReader".
.
Atoms Crowd has some default operators, but users can create new ones in C++ to achieve custom results. The techinical documentation explain how you can create new operators in c++.
In the next section you can find a list of all the available operator nodes.