Animation files are stored in animation groups. A VMDL can have multiple animation groups and they can be internal or external.
Display
- Click on an animation item to play that animation in the viewport. Use the timeline to play/pause, adjust play back speed, and scrub the animation.
Create
Edit
- To add a material remap item, select the "Material Remap List" item and press the green "+" button in the property editor.
- To edit a material remap item, select it in the outliner.
Data Structures
The vmdl animation reference data looks like this:
CVanimGroupReference[] m_pAnimGroups =
[
CVanimGroupReference
{
CVanimGroup* m_pObject = &CVanimGroup_0
string m_sFileName = ""
}
]
m_pAnimGroups
A list of CVanimGroupReference elements
CVanimGroupReference
A reference to an internal or external CVanimGroup
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_pObject
|
|
pointer to the internal CVanimGroup
|
CVanimGroup*
|
|
m_sFileName
|
|
content relative path to the external CVhitBoxSetList
|
string
|
|
m_sScripts
|
Scripts
|
A list of script files
|
string[]
|
|
CVanimGroup
Animation group, looks like this in the vmdl:
CVanimGroup CVanimGroup_0
{
string m_Name = ""
CVReferenceSkeletonReference m_pReferenceSkeleton = CVReferenceSkeletonReference
{
CVReferenceSkeleton* m_pObject = NULL
string m_sFileName = ""
}
CVBoneFlagListReference m_pBoneFlagList = CVBoneFlagListReference
{
CVBoneFlagList* m_pObject = NULL
string m_sFileName = ""
}
CVseqGroupReference m_pSeqGroup = CVseqGroupReference
{
CVseqGroup* m_pObject = NULL
string m_sFileName = ""
}
CVanimGroupReference[] m_pAnimGroups =
[
]
CVanim[] m_Vanim =
[
CVanim
{
string m_Animationname = "attack01"
string m_Filepath = "models\\sdk_character\\dmx\\animation\\attack01.dmx"
int m_nStartframe = 0
int m_nEndframe = 54
float m_flFps = 30.000000
CAnimationLoop m_Loop = CAnimationLoop
{
bool m_bLoop = false
bool m_bSmoothLoop = false
int m_nSmoothLoopStart = 0
int m_nSmoothLoopEnd = 0
CVAnimCmdStartLoop m_StartLoop = CVAnimCmdStartLoop
{
bool m_bEnabled = false
int m_nLoopRestart = 0
}
}
bool m_bHidden = false
CActivity[] m_Activities =
[
]
CAnimationEvent[] m_AnimationEvents =
[
]
CMotionFrame[] m_MotionFrames =
[
CMotionFrame
{
int m_nFrame = 0
bool m_bExtractTX = true
bool m_bExtractTY = true
bool m_bExtractTZ = false
bool m_bExtractRX = false
bool m_bExtractRY = false
bool m_bExtractRZ = false
bool m_bDiscardTX = false
bool m_bDiscardTY = false
bool m_bDiscardTZ = false
bool m_bDiscardRX = false
bool m_bDiscardRY = false
bool m_bDiscardRZ = false
}
]
CIKrule*[] m_pIkRules =
[
]
CAdjustAnimation m_adjustAnimation = CAdjustAnimation
{
float(3) m_translation = ( 0.000000, 0.000000, 0.000000 )
float(3) m_rotation = ( 0.000000, 0.000000, 0.000000 )
}
string[] m_Keywords =
[
]
}
]
string[] m_sScripts =
[
]
}
CVanimGroup
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_name
|
Name
|
Name of the animation group
|
string
|
|
m_pReferenceSkeleton
|
Skeleton
|
Pointer to a CVReferenceSkeleton
|
CVReferenceSkeletonReference
|
|
m_pBoneFlagList
|
Bone Encoding Flags
|
Pointer to a CVBoneFlagList
|
CVBoneFlagListReference
|
|
m_pSeqGroup
|
Sequence Group
|
Pointer to a CVseqGroup
|
CVseqGroupReference
|
|
m_pAnimGroups
|
Animation Group References
|
A list of external animation groups
|
CVanimGroupReference[]
|
|
m_Vanim
|
Animations
|
A list of CVanim files
|
CVanim[]
|
|
Note:m_pSeqGroup, and m_pReferenceSkeleton are not longer used.
CVanim
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_Animationname
|
Name
|
Name of the animation
|
string
|
|
m_Filepath
|
File Path
|
Content relative path to the source file
|
string
|
|
m_nStartframe
|
Start Frame
|
Start frame of the animation
|
int
|
0
|
m_nEndFrame
|
End Frame
|
End frame of the animation
|
int
|
0
|
m_flFps
|
FPS
|
Frame rate of the animation
|
float
|
30.0
|
m_Loop
|
|
Animation Loop Commands
|
CAnimationLoop
|
|
m_bHidden
|
Hidden
|
Hide the compiled sequence from the UI
|
bool
|
false
|
m_Activities
|
Activities
|
A list of CActivity elements
|
CActivity[]
|
|
m_AnimationEvents
|
Animation Events
|
A list of CAnimationEvent elements
|
CAnimationEvent[]
|
|
m_MotionFrames
|
Motion Frames
|
A list of CMotionFrame elements
|
CMotionFrame[]
|
|
m_pIkRules
|
IK Rules
|
A list of CIKrule* elements
|
CIKrule*[]
|
|
m_adjustAnimation
|
Adjust Animation
|
CAdjustAnimation element
|
CAdjustAnimation
|
|
m_Keywords
|
Keywords
|
A list of keywords
|
string[]
|
|
CAnimationLoop
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_bLoop
|
Loop
|
Should the animation loop
|
bool
|
false
|
m_bSmoothLoop
|
Smooth Loop
|
Should the animation smooth out the loop
|
bool
|
false
|
m_nSmoothLoopStart
|
Frames From Start
|
Smooth this many frames in from the start
|
int
|
0
|
m_nSmoothLoopEnd
|
Frames From End
|
Smooth this many frames in from the end
|
int
|
0
|
m_StartLoop
|
|
Animation Start Loop
|
CVAnimCmdStartLoop
|
|
CVAnimCmdStartLoop
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_bEnabled
|
Start Loop
|
Should the animation have a forced start loop
|
bool
|
false
|
m_nLoopRestart
|
Loop Restart
|
Frame to restart the loop on
|
bool
|
false
|
CActivity
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_Name
|
Name
|
Name of the activity
|
string
|
|
m_nWeight
|
Weight
|
Weight of the activity
|
int
|
1
|
CAnimationEvent
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_Event
|
Event
|
Animation event name
|
string
|
|
m_nFrame
|
Frame
|
Frame the event is triggered on
|
int
|
0
|
m_DataString
|
Data String
|
Additional information
|
string
|
|
CMotionFrame
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_nFrame
|
Frame
|
Frame to extract the motion from
|
int
|
0
|
m_bExtractTX
|
Extract TX
|
Extract X translation
|
bool
|
false
|
m_bExtractTY
|
Extract TY
|
Extract Y translation
|
bool
|
false
|
m_bExtractTZ
|
Extract TZ
|
Extract Z translation
|
bool
|
false
|
m_bExtractRX
|
Extract RX
|
Extract X rotation
|
bool
|
false
|
m_bExtractRY
|
Extract RY
|
Extract Y rotation
|
bool
|
false
|
m_bExtractRZ
|
Extract RZ
|
Extract Z rotation
|
bool
|
false
|
m_bDiscardTX
|
Discard TX
|
Discard X translation
|
bool
|
false
|
m_bDiscardTY
|
Discard TY
|
Discard Y translation
|
bool
|
false
|
m_bDiscardTZ
|
Discard TZ
|
Discard Z translation
|
bool
|
false
|
m_bDiscardRX
|
Discard RX
|
Discard X rotation
|
bool
|
false
|
m_bDiscardRY
|
Discard RY
|
Discard Y rotation
|
bool
|
false
|
m_bDiscardRZ
|
Discard RZ
|
Discard Z rotation
|
bool
|
false
|
Tip:adding a single motion frame on frame 0 of the animation will extract motion linearly across the entire animation.
CAdjustAnimation
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
m_translation
|
Translation
|
Adjust the translation of the animation by this amount
|
float( 3 )
|
( 0.000000, 0.000000, 0.000000 )
|
m_rotation
|
Rotation
|
Adjust the rotation of the animation by this amount
|
float( 3 )
|
( 0.000000, 0.000000, 0.000000 )
|