Ogre 1.8 Skeleton 骨骼

本章默认你看过前章。(基础头文件不重复介绍)

OgreSkeletonFileFormat.h

首先介绍一下skeleton的文件格式,后缀名是.skeleton,里面存放的是骨骼的组成和作用于这个骨骼的一些动画(只有一个骨骼,但是可以有多个动画)。这个头文件就是定了.skeleton文件中可以存放的数据的种类(只是定义了一个enum)。

OgreSkeletonSerializer.h

这个头文件就是定义的具体的对.skeleton文件的读取和写入接口。


OgreSkeleton.h

这个头文件定义了骨架Skeleton类,实现了骨骼动画。都知道,3d图形的动画靠的是顶点位置的变化,前文在pose中说过两种变化方式,这里便是第二种。顶点依附于骨骼Bone,骨架Skeleton是骨骼的集合体。骨骼之间连接在一起,一个动,下面所牵引的都跟着动,绑定到骨骼的顶点就跟着动,带动全身移动,形成动画。所以控制Skeleton就可以控制整个物体的动画。

OgreBone.h

Bone类定义了骨骼,很多个骨骼可以组成骨架Skeleton。其实Bone更确切的叫法Joint,是关节,看起来像骨骼在动,但是实际上是关节在动的,顶点也是绑定到骨骼上的。为了形象,说成是骨骼而已。

OgreSkeletonInstancec.h

这里文件可能就不好理解了。这里面集成Skeleton类定义了SkeletonInstance类,这个存在的目的何在?skeleton类只是一个描述具体数据结构的类,代表的是从.skeleton文件中导入的原始skeleton信息。每个SkeletonInstance都是拷贝那个母体skeleton对象得来的,并且添加了些实用信息(tagPoint,就是哪个bone可以用来拿武器,这种点)。也就是说Skeleton类只是描述骨架资源的类,而程序中真正操作的是SkeletonInstance类的对象(是由Skeleton类定义的对象创造来的)


OgreSkeletonManager.h

定义了SkeletonManager类,ResourceManager的一种,管理skeleton资源。


还要知道一点,skeleton除了管理Bone之外,还管理Skeleton Animation,骨骼动画是动画的一种(Animation,只是AnimationTrack的KeyFrame是骨骼位置矩阵)。骨骼动画和骨骼一起存储在.skeleton文件中。并且骨骼动画有两种混合模式,一种是平均加权(要求weight之和必须等于1),另外一种是直接加权,不管weight之和是否等于1.

并且骨骼动画还可以连接别的骨骼的动画。如果你想的话。



你可能感兴趣的:(数据结构,存储,animation,图形)