YARE开发记录(2)

来源:互联网 发布:nginx 端口配置 编辑:程序博客网 时间:2024/05/17 23:55

/*
------------------------------------------------------------------------------------------------------------

 Copyright (c) 2006 YanLiang

 CSkeleton对象代表骨骼动画的数据和操作.包括:

 骨骼数据信息.

 动画(作)信息.

 -------------------------------
 
 骨骼数据信息     是构成该骨骼动画所需骨(bone)的集合.如:行走动画(作)中的人体骨的集合.
 
 骨(bone)之间或者独立,或者存在依赖关系. 存在依赖关系的bone, 处于parent地位的bone的运动会影响到它的child bone,
 
 所有直接或间接相连的bone构成了一个骨骼树, 独立的bone则不会,它变换时,不会受其它bone影响, 也不会影响其它bone.

 
 bone是CNode类的实例, CNode具有添加和储存child CNode的方法. 所有的bone储存在m_BonesMap中, 以bone name作索引.
 
 存储完成后, 遍历所有bone完成非独立bone的连接ParentAddChild(CNode* parent, CNode* child), 构成bone树.

 所有独立的bone(可将其视为深度为1的树的根部的bone)和位于bone树根部的bone都被视为主骨(root bone), 存储在m_RootBonesList中.
 
 
 以后的遍历,可视为bone森林的遍历. 所有的根bone都可以在m_RootBonesList中找到. 可以实现多主骨骨胳动画.

 ----------------------------------

 动画(作)信息 是与骨骼有关的Animation的集合.

 Animation存储在m_AnimationMap中, 以Animation name为索引.

 ----------------------------------


 特别需要注意的: 在骨骼动画(作)中bone的运动是由 Animation的成员AnimationTrack的方法驱动的,
 
 AnimationTrack计算出某一时刻的变换,并将变换直接赋值给相关联的bone. 该bone应是CSkeleton对象中的某一bone.

 须将其连接. 否则动画(作)不会影响骨骼. CSkeleton对象将不会有实际意义.

 ----------------------------------


 CSkeleton对象需要有名称,以便于数据保存,加载及查询检索时使用,大多数情况下CSkeleton名称是键值.

 

-------------------------------------------------------------------------------------------------------------
*/

原创粉丝点击