动画文件存储在动画组(Animation Group)中。一个 VMDL 可以包含多个动画组,他们可以是内部或外部的。
显示
- 点击一个动画项以在视窗中播放该动画。用时间轴播放/暂停,调整重播时间和整理动画。
创建
Edit
- 添加 材质映射(material remap) 项:选择“材质映射列表(Material Remap List)”项并在属性编辑器(property editor)中按绿色的“+”。
- 编辑 材质映射(material remap) 项:在大纲(outliner)中选择它。
数据结构(Data Structures)
VMDL动画的参考数据结构如下:
CVanimGroupReference[] m_pAnimGroups =
[
CVanimGroupReference
{
CVanimGroup* m_pObject = &CVanimGroup_0
string m_sFileName = ""
}
]
m_pAnimGroups
CVanimGroupReference中元素的列表
CVanimGroupReference
对内部或外部的CVanimGroup的参考
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
属性
|
易记名称
|
描述
|
类型
|
默认值
|
m_pObject
|
|
内部 CVanimGroup的指针
|
CVanimGroup*
|
|
m_sFileName
|
|
外部CVhitBoxSetList相对路径
|
string
|
|
m_sScripts
|
Scripts
|
代码文件的列表
|
string[]
|
|
CVanimGroup
动画组在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
|
动画组的名称
|
string
|
|
m_pReferenceSkeleton
|
Skeleton
|
CVReferenceSkeleton的指针
|
CVReferenceSkeletonReference
|
|
m_pBoneFlagList
|
Bone Encoding Flags
|
CVBoneFlagList的指针
|
CVBoneFlagListReference
|
|
m_pSeqGroup
|
Sequence Group
|
CVseqGroup的指针
|
CVseqGroupReference
|
|
m_pAnimGroups
|
Animation Group References
|
外部动画组列表
|
CVanimGroupReference[]
|
|
m_Vanim
|
Animations
|
CVanim文件列表
|
CVanim[]
|
|
注意:m_pSeqGroup和m_pReferenceSkeleton 不要再使用。
CVanim
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
属性
|
易记名称
|
描述
|
类型
|
默认值
|
m_Animationname
|
Name
|
动画名称
|
string
|
|
m_Filepath
|
File Path
|
外部资源文件相对路径
|
string
|
|
m_nStartframe
|
Start Frame
|
开始逐帧动画
|
int
|
0
|
m_nEndFrame
|
End Frame
|
结束逐帧动画
|
int
|
0
|
m_flFps
|
FPS
|
逐帧动画速率
|
float
|
30.0
|
m_Loop
|
|
动画循环命令
|
CAnimationLoop
|
|
m_bHidden
|
Hidden
|
从UI隐藏compiled sequence
|
bool
|
false
|
m_Activities
|
Activities
|
CActivity中元素的列表
|
CActivity[]
|
|
m_AnimationEvents
|
Animation Events
|
CAnimationEvent中元素的列表
|
CAnimationEvent[]
|
|
m_MotionFrames
|
Motion Frames
|
CMotionFrame中元素的列表
|
CMotionFrame[]
|
|
m_pIkRules
|
IK Rules
|
CIKrule* 中元素的列表
|
CIKrule*[]
|
|
m_adjustAnimation
|
Adjust Animation
|
CAdjustAnimation 元素
|
CAdjustAnimation
|
|
m_Keywords
|
Keywords
|
关键字列表
|
string[]
|
|
CAnimationLoop
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
属性
|
易记名称
|
描述
|
类型
|
默认值
|
m_bLoop
|
Loop
|
动画是否循环
|
bool
|
false
|
m_bSmoothLoop
|
Smooth Loop
|
动画循环是否平滑
|
bool
|
false
|
m_nSmoothLoopStart
|
Frames From Start
|
平滑开头的数帧
|
int
|
0
|
m_nSmoothLoopEnd
|
Frames From End
|
平滑结尾的数帧
|
int
|
0
|
m_StartLoop
|
|
动画开始循环
|
CVAnimCmdStartLoop
|
|
CVAnimCmdStartLoop
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
属性
|
易记名称
|
描述
|
类型
|
默认值
|
m_bEnabled
|
Start Loop
|
动画是否强制循环
|
bool
|
false
|
m_nLoopRestart
|
Loop Restart
|
重新开始循环
|
bool
|
false
|
CActivity
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
属性
|
易记名称
|
描述
|
类型
|
默认值
|
m_Name
|
Name
|
活动名称
|
string
|
|
m_nWeight
|
Weight
|
活动负担
|
int
|
1
|
CAnimationEvent
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
属性
|
易记名称
|
描述
|
类型
|
默认值
|
m_Event
|
Event
|
动画事件名称
|
string
|
|
m_nFrame
|
Frame
|
触发事件帧
|
int
|
0
|
m_DataString
|
Data String
|
其他信息
|
string
|
|
CMotionFrame
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
属性
|
易记名称
|
描述
|
类型
|
默认值
|
m_nFrame
|
Frame
|
获取动作帧
|
int
|
0
|
m_bExtractTX
|
Extract TX
|
获取X轴位移
|
bool
|
false
|
m_bExtractTY
|
Extract TY
|
获取Y轴位移
|
bool
|
false
|
m_bExtractTZ
|
Extract TZ
|
获取Z轴位移
|
bool
|
false
|
m_bExtractRX
|
Extract RX
|
获取X轴旋转
|
bool
|
false
|
m_bExtractRY
|
Extract RY
|
获取Y轴旋转
|
bool
|
false
|
m_bExtractRZ
|
Extract RZ
|
获取Z轴旋转
|
bool
|
false
|
m_bDiscardTX
|
Discard TX
|
取消X轴位移
|
bool
|
false
|
m_bDiscardTY
|
Discard TY
|
取消Y轴位移
|
bool
|
false
|
m_bDiscardTZ
|
Discard TZ
|
取消Z轴位移
|
bool
|
false
|
m_bDiscardRX
|
Discard RX
|
取消X轴旋转
|
bool
|
false
|
m_bDiscardRY
|
Discard RY
|
取消Y轴旋转
|
bool
|
false
|
m_bDiscardRZ
|
Discard RZ
|
取消Z轴旋转
|
bool
|
false
|
提示:在动画的0帧增加单独的动作帧将一次性获取整个动画的动作。
CAdjustAnimation
Attribute
|
Friendly Name
|
Description
|
Type
|
Default Value
|
属性
|
易记名称
|
描述
|
类型
|
默认值
|
m_translation
|
Translation
|
调整动画的位移(X,Y,Z)
|
float( 3 )
|
( 0.000000, 0.000000, 0.000000 )
|
m_rotation
|
Rotation
|
调整动画的旋转(X,Y,Z)
|
float( 3 )
|
( 0.000000, 0.000000, 0.000000 )
|