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 often 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, Image and Mesh.
There's also an array type for all these metadatas.
The most powerful metadata are the MapMetadata (a map container for mixed type of metadatas) and the ArrayMetadata (a vector container for mixed type of metadatas)
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 "read 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. | YES |
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 |
retargetingFactor | double | (for internal use only) | YES |
collectorDirections | vector4array | (for internal use only) | YES |
clothSetupOverride | string | an override metadata for providing a different cloth setup file for an agent | NO |
disableIk | bool | Disable the ik and the foot lock during the simulation | NO |
targetAgentId | int | The global agent id of the target agent, used by the followAgent module. | NO |
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 |
clipDirection | vector3 | The clip direction. This metadata has to be set on the pelvis root joint. | NO |
Cloth metadatas
name | type | description | internal only |
---|---|---|---|
clothHideMesh | bool | Hide cloth mesh at render time | NO |
vertexPosition | vector3array | The positions of a cloth mesh | YES |
vertexNormal | vector3array | The normals of a cloth mesh | YES |
boundingBox | box | The cloth bounding box | YES |
stackOrder | string | The stack order of a cloth cache. | YES |