【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,也就是可以单独渲染的。
渲染后的效果:
- 【Ogre引擎架构】 第一讲 从零开始 解析角色模型文件(一)
- 【Ogre引擎架构】 第二讲 从零开始 解析角色模型文件(二)
- 【Ogre引擎架构】 第三讲 角色模型文件的渲染数据化
- 【Ogre引擎架构】 第四讲 模型文件渲染数据的存储机制
- 【Ogre引擎架构】 第八讲 像素卷积的艺术-GaussianBlur高斯模糊(一)
- 【Ogre引擎架构】 第十一讲 渲染系统封装OpenGL 2.x (一)
- 【Ogre引擎架构】 第五讲 从零开始编写3dsMax导出插件
- 【Ogre引擎架构】 第九讲 像素卷积的艺术-GaussianBlur高斯模糊(二)
- 【Ogre引擎架构】 第七讲 粒子系统-爆破特效
- 【Ogre引擎架构】 第十讲 唯美场景-天空盒SkyBox
- OGRE 引擎官方基础教程 (一)
- 【Ogre引擎架构】 第六讲 纹理拆分的艺术-九宫格原理详解
- 【Ogre引擎架构】 第十二讲 粒子系统-飘雪之国
- 【Ogre引擎架构-第七讲】 爆破特效Explosion-粒子系统初体验 脚本
- Machine Learning第一讲[单变量线性回归] --(一)模型和代价函数
- Caffe学习笔记(一):Caffe架构及其模型解析
- Rokon游戏引擎第一讲
- Rokon游戏引擎第一讲
- Visual Studio 的自定义代码转换工具,如何自己扩展自己的ResxFileCodeGenerator.
- SSH 免密码登录
- 编码史记
- 3月的开始
- 五个免费UML建模工具
- 【Ogre引擎架构】 第一讲 从零开始 解析角色模型文件(一)
- 学习笔记:
- IOS开发中的内存管理(一)
- Codeforces Round #294 (Div. 2)
- IOS开发中的内存管理(二)
- delphi编程里bool跟boolean类型的区别
- UVALive - 4254 Processor 二分+优先队列
- javascript正则表达式修饰符之global(/g)的使用
- BZOJ 2055 80人环游世界 有上下界的费用流