Channels

Channels are predefined keywords which allow to query the value of almost any Entity attribute value, ranging from the current played Motion Clip to the position of a Bone. Channels can be query via Expressions in the Channel Operator, and Set Bone Behaviors, via the Expression Trigger in Triggers or via the MEL/Python command glmGetChannelValue.
 
There are three types of Channels:
  • Maya Channels: they refer to attributes which are stored / computed within the Maya scene and settings
  • Entity Channels: they refer to global Attributes which are stored / computed by an Entity (eg Entity Id, Rendering Type Id, Bone Position...)
  • Behavior Channels: they refer to local Attributes which are stored / computed by an Entity's Behavior (eg Behavior is Running, Motion Clip played by a Motion Behavior...).

Some Channels require a Component Name in addition to a Channel Name. The Component Name allows to specify which objects is queried for this Channel. Component Names can be the name of the wanted skeleton bone, limb...  It can be specified through the Expressions Channels special syntax or using the -componentName flag of the glmGetChannelValue command. 

Channels values are only of type float or vector3.

Maya Channels

Time Channels

Channel Name Channel Type Description
currentFrame float Scene current frame
currentTime float Scene current time (in seconds)
frameRate float Scene frequency
frameTime float Time of a frame (in seconds)

Expression Examples

this.currentFrame
this.frameRate

Entity Channels

Global Channels

Channel Name Channel Type Description
entityId float Unique integer ID of the Entity (eg. 1001, 2001, 3001...)
entityIdx float Index of the Entity in the Crowd Field simulation (eg. 0, 1, 2...)
entityCount float Number of Entities in the current Crowd Field
particleId float Maya Particle ID of an Entity within its particle system
entityTypeId float Entity Type ID of the Entity
renderingTypeId float Rendering Type ID of the Entity
crowdFieldId float CrowdField ID of the Entity
particleSystemIdx float Maya Particle System index of the particle of an Entity
entityTypeColor vector Color of the Entity Type of the Entity
scale float Scale of the Entity
position vector3 World position of the Entity Pelvis
orientation vector3 World orientation of the Entity Pelvis
direction vector3 Direction vector of the Entity Pelvis
headAttBank vector3 World orientation of the Entity Pelvis as heading / attitude / bank
bodyForward vector3 Direction vector representing the forward of an Entity
bodySide vector3 Direction vector representing the side of an Entity
bodyUp vector3 Direction vector representing the up of an Entity
previousPosition vector3 World position of the Entity Pelvis at the previous frame
previousDirection vector3 Direction vector of the Entity Pelvis at the previous frame
pelvisVelocity vector3 Velocity of the Entity Pelvis
entityVelocity vector3 Velocity of the Entity (can be different from pelvisVelocity when using the Locomotion Behavior)
entityDesiredVelocity vector3 Desired velocity of the Entity (can be different from pelvisVelocity when using the Locomotion Behavior)
hasPaintedColor float Returns 1 if the Entity is within a Painted Zone.
paintedColor vector3 Returns the color of the first Painted Zone at the Entity position (each component will be between 0. and 1.).
paintedColorAlpha float Returns the alpha coefficient of the first Painted Zone at the Entity position (between 0. and 1.).
hasPaintedDirection float Returns 1 if the Entity is within a  Vector Field (even if the nothing is painted at the Entity Position)
paintedDirection vector3 Returns the direction of the first Vector Field at the Entity position.

Expression Examples

this.entityId
this.position
this.position[x]

Group Entity Type Channels

The following Channels are only meaningful if the Entity belongs to a Group EntityType

Channel Name Channel Type Description
hasGroup float Does the entity belong to a Group Entity Type? It returns 1 if it does.
groupTypeId float Group EntityType ID to which the Entity belongs
groupId float ID of the cluster within the Group EntityType the Entity belongs to. It is similar to the Entity ID (eg. 1001, 2001, 3001...) but represents a Group Entity
groupIdx float Index of the cluster within the Group EntityType the Entity belongs to. It is similar to the Entity index (eg. 0, 1, 2...) at the Group Entity level

Expression Examples

this.hasGroup
this.groupIdx

Global Animation Channels

The following Channels are only meaningful if there's at least a Motion, Locomotion or SyncMotion Behavior playing in the Behavior Graph.

Channel Name Channel Type Description
isAnimationEnabled float Is the animation enabled for an Entity? It returns 1 if the Entity exists.
bonePosition vector3 World position of an Entity Bone. This Channel requires the name of the Bone as a Component
boneOrientation vector3 World orientation (as Maya angles) of an Entity Bone. This Channel requires the name of the Bone as a Component
boneDirection vector3 World direction vector of an Entity Bone (e.g. direction the Hand bone will be the vector going from the ForeArm bone to the Hand bone). This Channel is not valid for root bone of the skeleton. This Channel requires the name of the Bone as a Component
limbHasFootprint float Are there footprints defined for an Entity Limb? This Channel requires the name of the Limb as a Component.
limbFootprint float Is the Entity Limb currently playing a footprint? The result of this Channel is only valid if limbHasFootprint returns 1. This Channel requires the name of the Limb as a Component.
limbFootprintPosition vector3 World position of the footprint of an Entity Limb. The result of this Channel is only valid if limbHasFootprint returns 1. This Channel requires the name of the Limb as a Component.
blindDataValue float Value of a Character Blind Data / Blend Shape. This Channel requires the name of a Blind Data or a Blend Shape as a Component. The name of a Blend Shape has the following naming convention: blendShapeGroupName.blendShapeName.

Expression Examples

this.bonePosition.LeftArm
this.bonePosition.RightLeg[x]
this.blendShapeValue.FacialBS.LeftEye

Global Navigation Channels

The following Channels are only meaningful if there's at least a GoTo and a Navigation Behavior playing in the Behavior Graph.

Channel Name Channel Type Description
isNavigationEnabled float Is the navigation enabled for an Entity? It returns 1 if a NavMesh is correctly defined in the Terrain Locator and if the Entity Navigation Attributes are valid.
radius float Navigation radius of an Entity
personalSpace float Navigation personal space of an Entity
height float Navigation height of an Entity
isNavigating float Is the Entity currently playing a Navigation Behavior? The result of this Channel is only valid if isNavigationEnabled returns 1
boldness float Navigation boldness of an Entity. The result of this Channel is only valid if isNavigating returns 1.
hasAGoToTarget float Is the Entity currently going to a target?. The result of this Channel is only valid if isNavigating returns 1.
goToTargetPosition vector3 World position of the target. The result of this Channel is only valid if hasAGoToTarget returns 1.
localGoToTargetPosition vector3 World position of the local target. The result of this Channel is only valid if hasAGoToTarget returns 1.
goToTargetPosition vector3 World position of the target. The result of this Channel is only valid if hasAGoToTarget returns 1.
distanceToGoToTarget float Distance between the Entity and the target. The result of this Channel is only valid if hasAGoToTarget returns 1.
isGoToTargetReached float Returns 1 if the Entity has reached its target. The result of this Channel is only valid if hasAGoToTarget returns 1.
curvilinearAbscissaOnPath float Position of the Entity on the curvilinear abscissa between its starting position and the target. This value varies between 0. (starting position) and 1. (target reached). The result of this Channel is only valid if hasAGoToTarget returns 1.

Expression Examples

this.height
this.goToTargetPosition
this.goToTargetPosition[x]

Global Ground Channels

Channel Name Channel Type Description
hasGround float Returns 1. if the Entity is currently adapted on a Terrain Locator node
groundHeight float Height of the currently adapted ground at the Entity position. The result of this Channel is only valid if hasGround returns 1.
groundNormal vector3 Normal of the currently adapted ground at the Entity position. The result of this Channel is only valid if hasGround returns 1.
groundSlope float Unsigned slope angle (in °) of the currently adapted ground at the Entity position. The result of this Channel is only valid if hasGround returns 1.
entityGroundSlope float Signed slope angle (in °) of the currently adapted ground at the Entity position and depending on the Entity orientation. The result of this Channel is only valid if hasGround returns 1.

Expression Examples

this.hasGround
this.groundSlope

Global Physics Channels

Channel Name Channel Type Description
bonePhysicsMode float Physicalize mode of an Entity Bone (0: Dynamic, 1: Kinematic, 2: Local Servo, 3: World Servo, -1: disabled). This Channel requires the name of the Bone as a Component.

Global Flock Channels

Channel Name Channel Type Description
isFlockEnabled float Is the flock enabled for an Entity? It returns 1 if a Flock Behavior is currently active.
hasAPerchTarget float Is the Entity currently going to a perch?. The result of this Channel is only valid if isFlockEnabled returns 1.
perchTargetPosition vector3 World position of the perch target. The result of this Channel is only valid if hasAPerchTarget returns 1.
perchTargetNormal vector3 Normal of the perch target. The result of this Channel is only valid if hasAPerchTarget returns 1.
distanceToPerchedTarget float Distance between the Entity and the perch target. The result of this Channel is only valid if hasAPerchTarget returns 1.
isPerchedTargetReached float Returns 1 if the Entity has reached its perch target. The result of this Channel is only valid if hasAPerchTarget returns 1.
hasASteerTarget float Returns 1 if the Entity has an active Steer behavior in Reach or Flee mode, otherwise returns 0.
localSteerTargetPosition vector3 The position of the local Steer target. In Follow Curve mode this represents the next position to reach on the curve, otherwise this is equivalent to the steerTargetPosition channel. The value is valid only when hasASteerTarget is true.
steerTargetPosition vector3 The position of the Steer target. In Follow Curve mode this represents the end position of the curve. The value is valid only when hasASteerTarget is true.
distanceToSteerTarget float The distance from the Entity to the Steer target. In Follow Curve mode this is not a distance in a straight line, but the distance from the Entity to the Steer target along the curve. The value is valid only when hasASteerTarget is true.
isSteerTargetReached float Returns 1 if the Entity has reached its Steer target, otherwise returns 0. In Follow Curve mode if Loop at end of curve is checked the channel always returns 0 (the target is never reached). The value is valid only when hasASteerTarget is true.

Global Traffic Channels

Channel Name Channel Type Description
isTrafficEnabled float Is the traffic enabled for an Entity? It returns 1 if a TrafficBehavior is currently active.
isTrafficNavigating float Does the entity have an active TrafficGoto, returns 1 if true
hasATrafficTarget float Does the entity have a traffic target, returns 1 if true
trafficTargetPosition vector3 Target of the active trafficGoto, only valid if hasATrafficTarget is 1
trafficSteerAngle float Orientation angle (in °) of the Traffic Entity
distanceToTrafficTarget float Remaining distance to the target (Note that the target always sits on the traffic network, even if a locator is set outside of it)
isTrafficTurningRight float Is 1 if the entity is turning right in the traffic (it is active when the car start to switch to a right lane, or approaching/in the crossings when the car exit road is more that than 0.3 radian to the right of input road)
isTrafficTurningLeft float Is 1 if the entity is turning left in the traffic (it is active when the car start to switch to a right lane, or approaching/in the crossings when the car exit road is more that than 0.3 radian to the left of input road)
isTrafficBraking float Is 1 if the entity is slowing down
trafficRoadId float The entity is driving on the given road ID. A road ID can be seen in the extra attributes of a traffic curve / road after the simulation init
isTrafficSwitchingLane float 0 if not switching, varying from 1 to 0 if switching toward the exterior of the road, varying from -1 to 0 if switching toward the center of the road
trafficRollAngle float Rotation in degrees to apply to a car wheel of diameter 1 for the current frame (multiply by the actual diameter of the wheel to get the correct wheel rotation)

Global Geometry Channels

Channel Name Channel Type Description
hasMesh float Returns 1 if the Entity has been assigned with a Mesh named as specified. This Channel requires a Mesh Asset Node Name as a Component
geometryId float Id of the Geometry File currently played by the Entity. A Geometry File can be changed by using a Geometry Behavior. -1 if no Geometry Behavior is played.
geometryFrame float Frame of the Geometry File currently played by the Entity. Played frame of a Geometry File is controlled by a Geometry Behavior.
geometryRatio float Ratio (between 0. and 1.) of the Geometry File currently played by the Entity. The ratio of a Geometry File is computed depending on the Start Frame and End Frame defined in the current Geometry Behavior.
geometryStartFrame float Start frame value defined in the current Geometry Behavior.
geometryEndFrame float End frame value defined in the current Geometry Behavior.

Expression Examples

this.bonePhysicsMode.LeftLeg

Global Perception Channels

Channel Name Channel Type Description
closestEntity float EntityId of the closest Entity.
closestEntityOfEntityType float EntityId of the closest Entity of Entity Type X. This Channel requires an Entity Type Id as a Component
closestEntityOfCrowdField float EntityId of the closest Entity belonging to CrowdField X. This Channel requires a CrowdField Id as a Component
distanceWithEntity float Distance with the specified Entity of Id X. This Channel requires an Entity Id as a Component.
distance2WithEntity float Squared distance with the specified Entity of Id X (faster than distanceWithEntity). This Channel requires an Entity Id as a Component.
closestParticleIdx float Closest particle index on a particle system. This channel requires a maya particle system as a Component
closestParticlePosition vector3 Closest particle position on a particle system. This channel requires a maya particle system as a Component
closestEdgeIdx float Closest edge index on a mesh. This channel requires a maya mesh object as a Component
closestEdgePosition vector3 Closest edge position on a mesh. This channel requires a maya mesh object as a Component
closestPolygonIdx float Closest polygon index on a mesh. This channel requires a maya mesh object as a Component
closestPolygonPosition vector3 Closest polygon position on a mesh. This channel requires a maya mesh object as a Component
closestVertexIdx float Closest vertex index on a mesh. This channel requires a maya mesh object as a Component
closestVertexPosition vector3 Closest vertex position on a mesh. This channel requires a maya mesh object as a Component

Expression Examples

this.closestEntity
this.closestEntityOfEntityType.2
this.closestEntityOfCrowdField.1

Behavior Channels

Common Behavior Channels

These Channels are available for all Behaviors:

Channel Name Channel Type Description
isIdle float Is the Behavior idled? Returns 1. if the Behavior is neither starting, running or stopping.
isStarting float Is the Behavior starting? Returns 1. if the Behavior is waiting for its Starting Trigger to be true.
isRunning float Is the Behavior running? Returns 1. if the Behavior is has currently running
isStopping float N/A
runningTime float How long this behavior has been running for (in sec)

Expression Examples

this.beMotionShape1.isIdle
this.beGotoShape1.isRunning

Motion Behavior Channels

These Channels are only available on Motion Behaviors:

Channel Name Channel Type Description
motionId float ID of the Motion Clip currently played by the Motion Behavior
motionFrame float Currently played frame of the Motion Clip
motionTime float Currently played time (in seconds) of the Motion Clip
motionRatio float Currently played ratio of the Motion Clip. This value varies between 0. (first frame of the motion) and 1. (last frame of the motion).
numberOfFrames float Number of frames in the currenly played Motion Clip
duration float Duration of the currently played Motion Clip (in sec)
motionClipBlendWeight float Blending weight of the animation in the final posture

Expression Examples

this.beMotionShape1.motionFrame
this.beMotionShape2.motionId

Locomotion Behavior Channels

These Channels are only available on Locomotion Behaviors:

Channel Name Channel Type Description
linearVelocity float Currently wanted linear velocity
angularVelocity float Currently wanted angular velocity
minLinearVelocity float Minimum available linear velocity in the Locomotion Database
minAngularVelocity float Minimum available angular velocity in the Locomotion Database
maxLinearVelocity float Maximum available linear velocity in the Locomotion Database
maxAngularVelocity float Maximum available angular velocity in the Locomotion Database
startMotionBlendWeight float Blending weight of the starting animation in the final posture
motionClipBlendWeight[motinIndex] float Blending weight of the each animation in the final posture

Expression Examples

this.beLocomotionShape1.linearVelocity
this.beLocomotionShape2.angularVelocity

Sensor Behavior Channels

These Channels are only available on the Activate Sensor Behavior or Navigation Behavior:

Channel Name Channel Type Description
objectCount float Number of perceived objects.
objectPos vector3 Position of each of the perceived objects. This channel requires an integer Component to specify the index of the perceived object.
objectDist float The distance to each of the perceived objects. This channel requires an integer Component to specify the index of the perceived object.
objectId float The id of each of the perceived object. For example, if the Sensor Detection Type is set to Plain Entity, the objectId channel will contain the crowd entity Ids of the perceived entities. This channel requires an integer Component to specify the index of the perceived object.

Expression Examples

this.beSensor.objectCount
this.beSensor.objectPos.0

Channel Operator Behavior Channels

These Channels are only available on the Channel Operator Behavior.

Channel Name Channel Type Description
outputChannel vector3 The output of the ChOp Behavior. This channel requires an integer Component to specify the index of output.

Expression Examples

this.beChannelOperatorShape1.outputChannel.0

 

More Channels will be added in the next versions depending on user requirements. If some other Channels interest you, tell us here.