In Atoms users can create and attach custom data to almost every entity available. We call this custom data "Metadata".
Atoms has already some predefined Metadatas on most entities such as Agent Types, Animation Clips, etc.
All the values explained in the previous sections for the Agent Type (State Machine, Scale Multiplier) and Animation Clip (Loop, Loop Start, Loop End, etc.) are in fact metadatas.
This custom data can be accessed and tweaked at simulation time.
For instance, you might want to tag a specific skeleton joint and access it via python or C++ or stick some custom metadata on an agent to define a specific behaviour.
The available Metadata types are: String, Int, Double, Bool, Euler, Vector3, Vector4, Quaternion, Matrix, Box3, Curve and Mesh.
There's also an array version type for all these metadatas.
The most powerful metadata is the MapMetadata, a map container for mixed type of metadata.
Metadatas are most useful when used in conjunction with custom python and C++ Behaviour Modules.
Atoms Metadatas
Below you can find a complete list of all metadatas used by Atoms Crowd. Users might edit them during the simulation via python, C++ or using the available tools.
All metadatas marked as "internal only" should not be edited by the users or the editing might lead to unexpected behaviours.
Clip metadatas
name | type | description | read only |
---|---|---|---|
atomsBlendFramesAfterFootUp | int | Number of frames used for blending after the foot leaves the ground. | NO |
atomsLoop | bool | Tag the clip as loopable. | NO |
atomsLoopStart | int | The start frame of the clip. | NO |
atomsLoopEnd | int | The end frame of the clip. | NO |
atomsNumBlendFrames | int | The number of frames used for bleding. | NO |
Agent metadatas
name | type | description | read only |
---|---|---|---|
id | int | The global id. | |
groupId | int | The local id (the id relative to this agent group). | YES |
groupName | string | The local name. | YES |
direction | vector3 | The agent target direction in world space. | NO |
frameRate | double | The frame rate used for playing the agent animation. | NO |
localDirection | vector3 | The agent direction in local space. | YES |
position | vector3 | The agent position in world space. | YES |
scale | vector3 | The agent scale. Only the x axis value is used currently. | NO |
selected | bool | The agent selection state. | NO |
up | vector3 | The agent up vector. | NO |
turnAngle | vector3 | The current turn angle of the agent. | YES |
velocity | vector3 | The current velocity in world space. | YES |
state | int | The current state of the agent (state machine). | NO |
animatedHf | map | (for internal use only) | YES |
agentType | string | The agent type name | YES |
variation | string | The agent variation | NO |
cacheId | int | (for internal use only) | YES |
Agent type metadatas
name | type | description | internal only |
---|---|---|---|
lowGeo | map | The low geo meshes. | YES |
skinGeo | map | The skin geo meshes. | YES |
scaleMultiplier | double | Agent type scale multiplier. | NO |
stateMachine | string | The state machine name. | NO |
boundingBox | box | The agent type bounding box. | YES |
Joint metadatas
name | type | description | read only |
---|---|---|---|
atoms_bindPoseScale | vector3 | The joint bind pose scale. | YES |
atoms_bindPoseRotate | vector3 | The jointbind pose rotation (Euler - XYZ order) | YES |
atoms_bindPoseTranslate | vector3 | The joint bind pose translation. | YES |
atoms_footHeight | double | The foot height. | YES |
atoms_footIK | bool | Foot ik joint tag. | YES |
atoms_footIkHeight | double | The foot IK height. | YES |
atoms_footRoot | bool | Foot root joint tag. | YES |
atoms_footOnGround | bool | Foot down joint state. | YES |
atoms_frameToFootDown | int | Numbers of frame to next foot down. | YES |
atoms_groundNormal | vector3 | The ground normal. | YES |
jointControlMapping | map | Parent for joint controll mappin metadatas. This data is used for the animation rig retargeting feature. | YES |
jointControlMappingMatrix | matrix | The offset matrix for the given joint. | YES |
jointControlMappingName | name | The name of the control to retarget. | YES |
atoms_origBindPoseRotate | vector3 | The joint original bind pose rotation (Euler - XYZ order) | YES |
atoms_origBindPoseScale | vector3 | The joint original bind pose scale. | YES |
atoms_origBindPoseTranslate | vector3 | The joint original bind pose translation. | YES |
atoms_pelvisHeight | double | The pelvis height. | YES |
atoms_pelvisLocalVelocity | vector3 | The pelvis velocity in local space. | YES |
atoms_pelvisVelocity | vector3 | The pelvis velocity in world space. | YES |
atoms_poleVector | vector3 | The ik pole vector. | YES |
atoms_propLocalTranslate | vector3 | Prop translation in skeleton root space. | YES |
atoms_propLocalRotate | vector3 | Prop rotation in skeleton root space. | YES |
atoms_propLocalScale | vector3 | Prop scale in skeleton root space. | YES |
atoms_legLength | double | The leg length | YES |