论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
其中类ID3DObjectFactory,是负责产生D3D对象的工厂类,是一个接口,D3DDotXFactory实现了它。其中用到了设计模式中的工厂方法模式。至于说什么才能叫作工厂方法模式呢??它的定义是这样的:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到了子类。
它的UML图如下:
Product就是一个工厂的接口,定义了一种产生对象的抽象方法。
ConcreteProduct就是具体实例化一个工厂ConcreteCreator的。
ConcreteCreator就是具体一个工厂,这个工厂可能实现了抽象类Creator中定义的方法。
现在,我把D3DUtility包中的实际代码拿出来具体说明一下:
首先现定义一个抽象基类DirectX3DObject(相当于上面的Creator):
.
工具包D3DUtility-------DirectX3DDotXObject类介绍
该类实现了对3DSMAX模型文件(.x)的驱动及其控制,从DirectX3DObject(DirectX3D的基类派生,而且实现IControlDirectX3DObject中的方法。DirectX3DObject类的结构如下:
extern BYTE m_bKey[256];//键盘事件响应的按键数组
. 其中对于键盘事件的响应被封装在void SetWorldMatrix(void);中了,原因很简单对于一个模型文件
进行一些控制,比如平移,旋转等等操作就是对世界坐标矩阵的操作。下面简单介绍一下:
平移。物体上每个点进行水平和垂直的移动,Dx 和Dy 参数分别给出移动的尺寸。
具体算法x' = x + Dx ,y' = y + Dy 。其中 x',y' 是新的坐标, x,y 是源坐标。
Dx是水平移动距离,Dy是垂直移动距离。平移矩阵是:
(科教范文网 Lw.nsEAc.com编辑整理)
功能是用来具体驱动骨骼模型,这个类会用到了D3DUutility工具包 中的MultiAnimationFrame和MultiAnimationMeshContainter。其中MultiAnimationFrame、MultiAnimationMeshContainter用来驱动骨骼模型的类。MultiAnimationMeshContainter.
.
Frame Bip01_R_Foot {//--孙子骨骼 FrameTransformMatrix { 0.988831,0.124156,0.082452,0.000000,-0.122246,0.992109,-0.027835, (转载自http://zw.NSEaC.com科教作文网)
.
AnimationKey { 4; //动画类型 :4表示变换矩阵键。用1