You can enable on-screen debug information to see which animations are queued and playing, as well as information about the applied pose modifiers and IK. See Animation Layers for more information about the system.
Example output.
You can show the transition queue for all the characterinstances of a specified entity.
es_debuganim <entityname> [0 | 1]
Property | Description |
---|---|
<entityname> | the name of the entity to debug. In a single player game, the player is typically called "dude". |
[0 | 1] | Specify 1 or no second parameter to turn it on for this specific entity. Specify 0 to turn it off. |
es_debuganim dude 1
Turn on debugging for the player (assuming the player's entity is called "dude").
es_debuganim npc_flanker_01 0
Turn off debugging for the entity called npc_flanker_01
You can show the transition queue for all characterinstances or the ones that have a specific model name.
ca_debugtext [<modelname-substring> | 1 | 0]
ca_debugtext player
Show information on all character instances with "player" in their model name.
ca_debugtext 0
Turn off all transitionqueue information.
Each animation in the transition queue is displayed with a couple of lines like the following. The parts are explained below.
AnimInAFIFO 02: t:1043 _stand_tac_idle_scar_3p_01 ATime:0.84 (1.17s/1.40s) ASpd:1.00 Flag:00000042 (----------I-K----) TTime:0.20 TWght:1.00 seg:00 inmem:1
(Try)UseAimIK: 1 AimIKBlend: 1.00 AimIKInfluence: 1.00 (Try)UseLookIK: 0 LookIKBlend: 0.00 LookIKInfluence: 0.00
MoveSpeed: 4.49 locked: 1
PM class: AnimationPoseModifier_OperatorQueue, name: Unknown
...
LayerBlendWeight: 1.00
...
ADIK Bip01 RHand2RiflePos_IKTarget: 0.24 Bip01 RHand2Aim_IKTarget: 1.00 Bip01 LHand2Aim_IKTarget: 0.00
Or in detail:
AnimInAFIFO 02: t:1043 _stand_tac_idle_scar_3p_01 ATime:0.84 (1.17s/1.40s) ASpd:1.00 Flag:00000042 (----------I-K----) TTime:0.20 TWght:1.00 seg:00 inmem:1
Part | Explanation | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AnimInAFIFO 02 | Layer index (decimal, zero-based). | |||||||||||||||||||||||||||||||||||||||||||||||||||
t:1043 | User token (decimal). | |||||||||||||||||||||||||||||||||||||||||||||||||||
_stand_tac_idle_scar_3p_01 | Animation name (alias) of the currently playing animation, aim/look-pose or bspace. | |||||||||||||||||||||||||||||||||||||||||||||||||||
ATime:0.84 (1.17s/1.40s) | ATime:XXXX (YYYYs/ZZZZs)
| |||||||||||||||||||||||||||||||||||||||||||||||||||
ASpd:1.00 | Current animation speed (1.0 = normal speed). | |||||||||||||||||||||||||||||||||||||||||||||||||||
Flag:00000042 (----------I-K----) | Animation Flags Flag:XXXXXXXX (+ybVFx3nSIAKTRLM) The first number is the animation flags in hexadecimal. Between parentheses you see the individual flags:
| |||||||||||||||||||||||||||||||||||||||||||||||||||
TTime:0.20 | Transition Time | |||||||||||||||||||||||||||||||||||||||||||||||||||
TWght:1.00 | Transition Weight | |||||||||||||||||||||||||||||||||||||||||||||||||||
seg:00 | Current segment index (zero-based). | |||||||||||||||||||||||||||||||||||||||||||||||||||
inmem:1 | Whether or not the animation is in memory (0 basically means it's not streamed in yet). |
(Try)UseAimIK: 1 AimIKBlend: 1.00 AimIKInfluence: 1.00 (Try)UseLookIK: 0 LookIKBlend: 0.00 LookIKInfluence: 0.00
Part | Description |
---|---|
(Try)UseAimIK: 1 | Whether Aim IK is turned on or not. (set using PoseBlenderAim::SetState). |
AimIKBlend: 1.00 | Weight value requested for Aim IK. (could go up and down based on fade times etc). |
AimIKInfluence: 1.00 | Final influence weight value of AimIK. (== smoothed(clamped(AimIKBlend)) * weightOfAllAimPoses). |
(Try)UseLookIK: 0 | Whether Look IK is turned on or not. |
LookIKBlend: 0.00 | Weight value requested for Look IK. (could go up and down based on fade times etc) |
LookIKInfluence: 0.00 | Final influence weight value of LookIK. (== smoothed(clamped(LookIKBlend)) * weightOfAllLookPoses). |
MoveSpeed: 4.500000 locked: 1
TravelAngle: 0.000000 locked: 0
Part | Explanation |
---|---|
MoveSpeed: 4.500000 | Value for the specified blendspace parameter (MoveSpeed in this case). |
locked: 1 | Whether or not the parameter is locked (= unable to change after it is set for the first time). |
PM class: AnimationPoseModifier_OperatorQueue, name: Unknown
Displays which pose modifiers are running in this layer. The class as well as the name is shown (if available).
LayerBlendWeight: 1.00
The weight of this layer (0.00 - 1.00).
ADIK Bip01 RHand2RiflePos_IKTarget: 0.24 Bip01 RHand2Aim_IKTarget: 1.00 Bip01 LHand2Aim_IKTarget: 0.00
Displays a list of the animation driven IK targets and their current weight. For more detailed position/rotation information you can use the separate cvar "ca_debugadiktargets 1".
At the lowest level the animation system executes a list of simple commands to construct the final skeleton's pose.
These commands are for example "sample animation x at time t, and add the result with weight w to the pose". Or "clear the pose".
Example output.
You can enable on-screen debug information to see what is pushed on the command buffer (for all characters) using the following command:
ca_debugcommandbuffer [0 | 1]
You can control when the animation system produces warnings using the ca_animWarningLevel cvar:
ca_animWarningLevel [0 | 1 | 2 | 3]
ca_animWarningLevel | Description |
---|---|
0 | Non-fatal warnings are off. |
1 | Warn about illegal requests, for example requesting to start animations with an invalid index. |
2 | Also warn about things like 'performance issues', for example animation-queue filling up. This might 'spam' your console with a dump of the animation queue at the time of the issue. |
3 (default) | All warnings are on. This includes the least important warnings, e.g. a warning when playing uncompressed animation data. |