Zh/Dota 2 Workshop Tools/VMDL/Animation

动画文件存储在动画组（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[] 	
=== 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
==CAdjustAnimation==
{| class="standard-table"
|-
! 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 )
|-
Category:VMDL
Category:Dota 2 Workshop Tools
Category:AMHC 汉化