VMDL 动画

From Valve Developer Community
Jump to: navigation, search
English

动画文件存储在动画组(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[]
Note: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
Tip:在动画的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 )