Ogre程序在mesh文件原理
2012-09-01 16:27
232 查看
创建模型实体
Entity* entObject = mSceneMgr->createEntity(“object”, “ogrehead.mesh”);
createEntity() (创建实体) 在当前场景中创建一个实体实例并返回它的对象指针,作为 SceneManager 类的一个成员函数,它有两个重载:
Entity * Ogre::SceneManager::createEntity (
const String & entityName, // 实体名称(同一场景中不能有相同的实体名称)
PrefabType ptype // 预制类型(不需要读取模型,直接在程序中创建简单几何体,
// 目前只有平面 PT_PLANE 一种预制类型)
) [virtual]
Entity * Ogre::SceneManager::createEntity (
const String & entityName, // 实体名称(同一场景中不能有相同的实体名称)
const String & meshName // 模型名称(需要从硬盘上读取的模型的文件名)
) [virtual]
这里用的是第二个重载,也就是从硬盘上读取模型,模型文件名 “ogrehead.mesh” ,这个文件在 OGRE\Samples\Media\models 目录下。查看一下这个目录,里面有一些 *.mesh 文件,还有一些 *.skeleton 文件 。
* .mesh 文件包含了静态模型和材质的信息,*.skeleton 文件对应一个同名的 *.mesh 文件,保存这个模型的骨骼和动画信息(如果有)。使用 createEntity() 方法,不管是不是带骨骼带动画的 *.mesh ,都一样读取,但是要想播放模型的动画,还需要做一些别的工作,如果现在你直接读取 ninja.mesh 这个带骨骼动画的模型,它不会动。
到了这里,还有一个问题,就是 OGRE 是怎么找到的这个 *.mesh 文件?它怎么知道这个 *.mesh 文件是放在 OGRE\Samples\Media\models 目录下的?还有我们在示例中看到的模型是带纹理贴图的,那么纹理贴图都在哪里呢? OGRE 又是怎么找到这个模型需要的纹理贴图的呢?
在 E:\Desktop\Learning\OGRE\Samples\Common\bin 目录、还有这个目录的 Debug 和 Release 两个子目录下,存在着一系列的 *.cfg 文件,它们都是些配置文件, OGRE 程序在打开以后,第一件事情就是检查并读取这些配置文件,从中了解一些关键信息。其中的 resources.cfg 就是用来指定所有的游戏资源所在的目录路径, OGRE 要读取一些资源,就会从这些路径中搜索。
resources.cfg 文件的内容:
FileSystem=../../../Media
FileSystem=../../../Media/fonts // 字体
FileSystem=../../../Media/materials/programs // 材质程序 (CG、HLSH、GLSL 等)
FileSystem=../../../Media/materials/scripts // 材质定义脚本
FileSystem=../../../Media/materials/textures // 纹理贴图
FileSystem=../../../Media/models // 模型
FileSystem=../../../Media/overlays // 盖层(界面)定义脚本
FileSystem=../../../Media/particle // 粒子定义脚本
Zip=../../../Media/packs/cubemap.zip
Zip=../../../Media/packs/cubemapsJS.zip
Zip=../../../Media/packs/dragon.zip
Zip=../../../Media/packs/fresneldemo.zip
Zip=../../../Media/packs/OgreCore.zip
Zip=../../../Media/packs/ogretestmap.zip
Zip=../../../Media/packs/skybox.zip
你可能会留意到每一条语句前面有 FileSystem 和 Zip 的区别,查看一下 OGRE\Samples\Media\packs 里面的那些 *.zip 文件,用 WinRAR 把它们打开来看,比方说打开 dragon.zip ,可以看到里面有这样几个文件:
dragon.mesh
body.jpg
head4.jpg
legs.jpg
一个模型,带三张贴图,就是这么简单。 这个意味着,OGRE 在搜索所需资源的时候,不但能搜索系统目录 (FileSystem) ,还能在压缩文件 (Zip) 中搜索。
最后是模型的纹理贴图,这个在 *.mesh 文件自身中定义,我们在使用 3dsmax 、 Maya 等输出 *.mesh 模型的同时,纹理贴图的相对路径也会被同时包含输出。
// 创建模型实体
Entity* entObject = mSceneMgr->createEntity(“object”, “ogrehead.mesh”);
现在你可以试着让它读取不同的模型,就把这个示例当作一个模型浏览器来用吧 ,几个 *.zip 文件里的资源也试试,比方说,读取 “dragon.mesh” 。
转载自:http://blog.csdn.net/xionghaoaizhangruyun/article/details/6203614
Entity* entObject = mSceneMgr->createEntity(“object”, “ogrehead.mesh”);
createEntity() (创建实体) 在当前场景中创建一个实体实例并返回它的对象指针,作为 SceneManager 类的一个成员函数,它有两个重载:
Entity * Ogre::SceneManager::createEntity (
const String & entityName, // 实体名称(同一场景中不能有相同的实体名称)
PrefabType ptype // 预制类型(不需要读取模型,直接在程序中创建简单几何体,
// 目前只有平面 PT_PLANE 一种预制类型)
) [virtual]
Entity * Ogre::SceneManager::createEntity (
const String & entityName, // 实体名称(同一场景中不能有相同的实体名称)
const String & meshName // 模型名称(需要从硬盘上读取的模型的文件名)
) [virtual]
这里用的是第二个重载,也就是从硬盘上读取模型,模型文件名 “ogrehead.mesh” ,这个文件在 OGRE\Samples\Media\models 目录下。查看一下这个目录,里面有一些 *.mesh 文件,还有一些 *.skeleton 文件 。
* .mesh 文件包含了静态模型和材质的信息,*.skeleton 文件对应一个同名的 *.mesh 文件,保存这个模型的骨骼和动画信息(如果有)。使用 createEntity() 方法,不管是不是带骨骼带动画的 *.mesh ,都一样读取,但是要想播放模型的动画,还需要做一些别的工作,如果现在你直接读取 ninja.mesh 这个带骨骼动画的模型,它不会动。
到了这里,还有一个问题,就是 OGRE 是怎么找到的这个 *.mesh 文件?它怎么知道这个 *.mesh 文件是放在 OGRE\Samples\Media\models 目录下的?还有我们在示例中看到的模型是带纹理贴图的,那么纹理贴图都在哪里呢? OGRE 又是怎么找到这个模型需要的纹理贴图的呢?
在 E:\Desktop\Learning\OGRE\Samples\Common\bin 目录、还有这个目录的 Debug 和 Release 两个子目录下,存在着一系列的 *.cfg 文件,它们都是些配置文件, OGRE 程序在打开以后,第一件事情就是检查并读取这些配置文件,从中了解一些关键信息。其中的 resources.cfg 就是用来指定所有的游戏资源所在的目录路径, OGRE 要读取一些资源,就会从这些路径中搜索。
resources.cfg 文件的内容:
FileSystem=../../../Media
FileSystem=../../../Media/fonts // 字体
FileSystem=../../../Media/materials/programs // 材质程序 (CG、HLSH、GLSL 等)
FileSystem=../../../Media/materials/scripts // 材质定义脚本
FileSystem=../../../Media/materials/textures // 纹理贴图
FileSystem=../../../Media/models // 模型
FileSystem=../../../Media/overlays // 盖层(界面)定义脚本
FileSystem=../../../Media/particle // 粒子定义脚本
Zip=../../../Media/packs/cubemap.zip
Zip=../../../Media/packs/cubemapsJS.zip
Zip=../../../Media/packs/dragon.zip
Zip=../../../Media/packs/fresneldemo.zip
Zip=../../../Media/packs/OgreCore.zip
Zip=../../../Media/packs/ogretestmap.zip
Zip=../../../Media/packs/skybox.zip
你可能会留意到每一条语句前面有 FileSystem 和 Zip 的区别,查看一下 OGRE\Samples\Media\packs 里面的那些 *.zip 文件,用 WinRAR 把它们打开来看,比方说打开 dragon.zip ,可以看到里面有这样几个文件:
dragon.mesh
body.jpg
head4.jpg
legs.jpg
一个模型,带三张贴图,就是这么简单。 这个意味着,OGRE 在搜索所需资源的时候,不但能搜索系统目录 (FileSystem) ,还能在压缩文件 (Zip) 中搜索。
最后是模型的纹理贴图,这个在 *.mesh 文件自身中定义,我们在使用 3dsmax 、 Maya 等输出 *.mesh 模型的同时,纹理贴图的相对路径也会被同时包含输出。
// 创建模型实体
Entity* entObject = mSceneMgr->createEntity(“object”, “ogrehead.mesh”);
现在你可以试着让它读取不同的模型,就把这个示例当作一个模型浏览器来用吧 ,几个 *.zip 文件里的资源也试试,比方说,读取 “dragon.mesh” 。
转载自:http://blog.csdn.net/xionghaoaizhangruyun/article/details/6203614
相关文章推荐
- Ogre程序加载mesh文件原理
- OGRE程序加载mesh文件原理
- Ogre程序加载mesh文件原理
- Ogre程序加载mesh文件原理
- Ogre程序加载mesh文件原理
- Ogre程序加载mesh文件原理
- Ogre加载mesh文件原理与路径分析
- 基于Windows Mobile系统的程序文件CAB安装包原理
- 使用md5校验和算法保护文件(算法/原理/程序)
- iOS常见文件及程序的启动原理
- Axiom3D:Ogre中Mesh文件格式分析(一)
- 用OgreMax插件从3ds max导出ogre模型文件(.mesh/.skeleton)
- iOS的常见文件及程序的启动原理
- 编译原理程序设计实践(八)— 主程序代码和makefile文件
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- OGRE中mesh文件信息解析及提取之一
- Ogre的mesh和skeleton文件数据格式分析
- Axiom3D:Ogre中Mesh文件格式分析(一)
- OGRE中MESH文件格式分析
- mesh文件和skeleton文件内容解析和骨骼动画原理