An Agent type is a custom Unreal Asset describing an agent definition containing a skeleton and skinned geos. It has a scale multiplier and can be linked to a State machine.
Atoms Crowd provides tools for exporting the necessary files to define your agent types.
You can drag and drop atomskel and skin geos files on the Unreal Content (or any subfolder) to have the necessary Unreal assets created automatically.
Alternatively, you can use your own Skeleton and Skeletal Mesh assets to populate your Agent Types.
First of all, please have a look at the Atoms Crowd Agent type page to have a basic understanding of the agent type settings.
Skeleton Asset
If you want to enable the foot locking/placement, you will have to add an "Atoms Skeleton User Data" from within the Asset Details panel. Users have to tag the following joints: any pelvis joint, any foot root (the first joint of a leg), any foot ik (the IK handle) and any foot tip.
For a biped, you'll have one pelvis, two foot root, two foot iks and two foot tips.
Atoms needs this information to place your agents correctly on the ground and apply the foot lock during the simulation.
For each foot, you will have to provide the names of joints belonging to your IK chain in the "Legs" section (The Pole vector is a point in 3D space, usually a 3D point in front of each knee).
You can also use the Skip IKs section for providing the name of leg joints which should be skipped when evaluating the legs IK.
Other Joint custom Metadata can be attached and used later with Blueprint or the C++ APIs.
Agent Variation Asset
The Agent Variation asset is a container for multiple skeletal and static meshes. Those meshes are used to draw the Agent Type inside the viewport.
The Skeletal Meshes property is an array of Skeletal Meshes that you can use to define your agent variation.
The Attachments property is an array of static meshes and constraint information. An attachment is a static mesh that is constrained to a specific joint with some offset information.
Agent Type Asset
Once you have your Skeleton and an Agent Variation assets ready, users can create an agent type asset by right-clicking on the content browser, then clicking on Atoms Crowd > Atoms Agent Type.
You will see a new asset appearing with this icon.
To set up your agent type:
Name your agent type.
Create an Atoms Agent Variation Asset and add one or more Skeletal Mesh Asset. Then inside the Agent Type Asset, on the Skin Asset slot, click on the drop down menu and select the Agent Variation you created, or drag and drop it from the content browser.
Provide a Skeleton asset, click on the drop-down menu and select a Skeleton asset, or drag and drop it from the content browser.
You can also link a state machine for this agent type. During the agent creation stage, the state machine module uses this to build the state machine for each agent of this type.
Provide a scale multiplier if all the agents of this type need to be scaled. This value is a multiplier on the global scale of the skeleton. The pelvisHeight, footHeight, velocity metadata are affected by this value.
Provide a character asset in case you would like to retarget animations at simulation time.
You can setup a collision shape inside the "Collisions" sections. This data is used by the "ragdoll module" to create a collision shape around each agent.
You can set a ragdoll setup that is using the same skeleton on the "Physics Asset" slot.
Tutorial
To create an agent type asset:
Select a skeletal mesh or the skeleton asset of your character.
From the Atoms Crowd menu execute the "Create agent type" action.
The action generates two new assets: an atoms variation asset and an atoms agent type asset.
Save the two new assets.
If you want test the agent type asset:
Create a new AtomsAgentGroup actor.
Add a Grid layout behaviour component
Select the grid layout component and on the agentType property set the agent type asset your created
An agent in bind pose should be now visible inside the viewport.
Widget Connector | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Widget Connector | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|