From Valve Developer Community
         
        
        
         
        
        
         
        
        动画文件存储在动画组(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 )  |