没有合适的资源?快使用搜索试试~ 我知道了~
Inside ORGE:ogre引擎内核分析,orge内核。orge分析,orge游戏
5星 · 超过95%的资源 需积分: 10 26 下载量 192 浏览量
2012-02-24
10:43:33
上传
评论
收藏 1.5MB PDF 举报
温馨提示
试读
18页
Inside ORGE:ogre引擎内核分析,orge内核。orge分析,orge游戏
资源推荐
资源详情
资源评论
1/18
OGRE3D 探索笔记
http://www.gplusplus.net
OGRE3D 探索笔记
By 燕良 From:http://www.gplusplus.net 转载请注明出处。
注:以下文章整理自我的博客(2006 年 8 月)。
目录
OGRE3D 探索笔记...........................................................................................................................1
OgreBasicTutorial....................................................................................................................2
Ogre 中 Mesh 的加载...............................................................................................................3
Ogre 中 Mesh 的渲染流程.......................................................................................................4
Ogre 的 OctreeSceneManager..................................................................................................7
Ogre 的 TerrainSceneManager.................................................................................................8
Ogre 的 BspSceneManager.....................................................................................................10
概览.................................................................................................................................10
Quake3bsp 的加载.........................................................................................................11
Bsptreescene 的渲染....................................................................................................13
Ogre 的光照............................................................................................................................14
Ogre 的骨骼动画....................................................................................................................15
Skeleton 的加载:..........................................................................................................16
动画的计算:.................................................................................................................16
Ogre 的 API 抽象层...............................................................................................................17
2/18
OGRE3D 探索笔记
http://www.gplusplus.net
OgreBasicTutorial
OGREHomepage:http://www.ogre3d.org /
OGRE 的 WIKI 中有一系列的基本教程,这篇笔记就是读完这些教程后的一个总结。教程
首页:http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials
。
BasicTutorial1 主要讲了几个 OGRE 中的基本概念:
1. SceneManager:所有屏幕上可见的东西都由 SceneManager 来管理;有多种类型
的 SceneManager,分别用来渲染 Te rrain 、BSP 等等。
2. Entity:初步的理解一个 Entity 代表一个 Mesh(可以含有动画),Light,Camera,
Particle,Billboard 不用 Entity 表示。Entity 不能直接加到场景中,必须先 attach
到一个 SceneNode 上,SceneNode 管理位置和方向。
3. SceneNode:SceneNode 管理位置和方向;需要注意子节点的是在父节点的空间中;
一个 SceneNode 可以管理多个对象。
4. OGRE 中的 Entity 和 SceneNode 都必须指定全局唯一的名称。
BasicTutorial2 主要是讲 OGRE 中的 Light 和 Shadow 的设置
1. 要开启阴影:首先要调用 SceneManager:: setShadowTechnique(),然后对于需要开
启的 Entity 调用 Entity::setCastShadows()。
2. 灯光和摄像机都需要由 SceneManager 来创建,分别是 SceneManager::createLight()
和 SceneManager::createCamera()。
BasicTutorial3 主要讲 Te rrain 场景,Sky 和 Fog
1. 为了处理 Terrain 场景,首先要选择相应类型的 SceneManager,这里选择了
“ST_EXTERIOR_CLOSE”类型。这个操作是通过 Root::createSceneManager()完成
的。此操作创建并返回了一个 TerrainSceneManager 指针,同时创建了一个
HeightmapTerrainPageSource 对象。
2. 加载地形是通过:mSceneMgr‐>setWorldGeometry("terrain.cfg");语句来完成的。
3. 天空是通过 SceneManager::setSkyBox()等函数完成的;
4. Fog 是通过 SceneManager::setFog()完成。
BasicTutorial4 引入了 FrameListener 的概念
对于 FrameListener 的初步理解:OGRE 在初始化完成之后,调用 Root::startRendering()
就启动了渲染循环。FrameListener 是为了给应用程序处理各种事件的机会,最典型的就是
frameStarted()
和 frameEnded()。
此教程的 TutorialFrameListener 从 ExampleFrameListener 派生,后者又从 FrameListener
和 KeyListener 派生,所以它可以处理按键事件。
以上几个教程都使用“ogrenew\Samples\Common”目录下的 ExampleApplication 的简单
框架,有必要对它做一下了解。
3/18
OGRE3D 探索笔记
http://www.gplusplus.net
Ogre 中 Mesh 的加载
如果新开始写一个 3D 渲染引擎,Mesh 应该是一个很好的切入点。当一个看似简单的
Mesh 渲染到窗口时,说明引擎的架构已经确定,并验证了。想了解 Ogre 内部的机制, 可
以先看看 Mesh 的加载过程,这里主要涉及到 Resource 是如何管理的,Material 是怎样处理
的,Resource 和 HardwareBuffer 是如何关联的。对于前面教程代码的执行过程做一下分析:
创建一个 Entity(加载 Mesh 及其相关的 Material)的调用流程如下:
SceneManager::createEntity()
‐>SceneManager::createMovableObject()
‐>MovableObjectFactory::createInstance()
‐>EntityFactory::createInstanceImpl()
主要的操作就在这个函数中完成,其中第一步为加载 Mesh,Mesh 包含若干 SubMesh,此
时并不加载相关的材质,只是记录所关联的材质名称;
‐‐>MeshManager::load()
‐‐>Mesh::load()
‐‐>Mesh::loadImpl()
‐‐>MeshSerializer::importMesh()
第二步为 new 一个 Entity 对象,其中包含创建 SubEntity 对象并加载相关的“材质”。
‐‐>Entity::Entity()
‐‐>Entity::buildSubEntityList()
‐‐>SubEntity::setMaterialName()
4/18
OGRE3D 探索笔记
http://www.gplusplus.net
‐‐>Material::loadImpl()
‐‐>Material::compile()
下面是相关的一个 class 的 UML 图:
Ogre 中 Mesh 的渲染流程
首先一个 Entity 对象必须 Attach 到一个 SceneNode。
创建一个 SceneNode:
SceneManager::getRootSceneNode() (在 SceneManager::init 时会创建一个 RootNode)
‐‐SceneNode::createChildSceneNode()
‐‐Node::createChild()
主要的操作在这个函数中完成,首先调用虚函数 SceneNode::createChildImpl(),此函
数又会调用 OctreeSceneManager::createSceneNode(),此函数会 new 一个 SceneNode 的派
生类对象,这里是 OctreeNode,并加入到 SceneNodeListmSceneNodes 中;随后又进行了坐
标变换;最后将此指针又加入到 ChildNodeMapmChildren 中,然后返回此指针;
剩余17页未读,继续阅读
资源评论
- zyt198905282014-02-27比较有帮助,谢谢分享!
- zhihui71232012-08-02分析的较为全面!
- 游戏开发狗2018-09-20比较有帮助,谢谢分享!
- firebank2013-11-25比较有帮助,谢谢分享!
abliudeng
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功