【Ogre引擎架构】 第一讲 从零开始 解析角色模型文件(一)

来源:互联网 发布:组态软件开发源代码 编辑:程序博客网 时间:2024/05/20 04:28

    今天是2015年3月1日,作者在研究Ogre不短的时间了,非常感谢曾经帮助过自己的前辈,让自己有机会真正深入了这款开源巨作,期间也遇到了不少的麻烦,但还是艰难的走了过来,作者决定为了帮助有需要的人,陆续会推出系列教程

    下面我们直入主题,解析角色模型Xml文件,首先来分析一下模型文件,也许你已经编译成功了Ogre的源码工程,作者选择的是OGRE1.7.4版本,那么成功后的Solution里会有一个OgreXmlConverter的工程文件,这个工程其实非常的重要,通过它你才能真正进入Ogre的世界,现在就来分析这个工程的作用


这个工程是一个.exe工程,最终生成XmlConverter.exe用来将.mesh文件转换为.xml文件,你可以在模型目录OGRE\ogre_src_v1-7-4\Samples\Media\models里面找到

Sinbad.mesh这个文件,它是一个非常经典的Demo,将它拖到XmlConverter.exe上面,当前目录会自动生成Sinbad.mesh.xml文件。

解析Xml文件:

Xml文件可以被浏览器打开,直接将Sinbad.mesh.xml拖到浏览器里,南湖推荐Google浏览器,(360浏览器仅适用于抢票,打开Xml文件有时会出错),打开后页面如下


    你可单击左侧的小箭头进行展开或折叠,浏览这个文件的保存格式

    可以看到一个角色是一个<mesh>树结构,mesh里面包含若干submesh(子mesh),每一个submesh可以单独指定材质material,这里读者可以暂时理解为一张纹理贴图,usesharedvertices和use32bitindexes这两个参数可以暂时忽略,operationtype指定在绘制这个submesh的时候是绘制成什么类型的多边形triangle是三角形quad是四边形。

    最后的<skeletonlink>表示角色的骨骼信息对应的文件名,这里Sinbad.mesh对应的是Sinbad.skeleton,里面的具体内容等到分析骨骼动画的时候再详细解释。

    读者可以暂时把每一个submesh想象成一个立方体,material想象成立方体上面的贴图,一个角色由很多相对独立的立方体组成。这样就容易理解submesh里面的顶点数据索引数据的结构。作者采用OpenGL进行渲染,渲染之前需要把这些数据存储到Ogre的Mesh类里面去,上面的结构正好对应了Mesh类和它的成员,Mesh类里面有一个SubMesh类的链表,每一个SubMesh类继承自Renderable,也就是可以单独渲染的。

                                                      渲染后的效果:

                             

0 0
原创粉丝点击