OGRE手札-学习ogre必修教科书经典
OGRE(Object-Oriented Graphics Rendering Engine)是一个开源的3D图形渲染引擎,专为游戏开发和实时可视应用设计。这个“OGRE手札”系列是学习OGRE的重要资料,其中涵盖了OGRE的基本概念和关键组件,如场景管理器、实体和场景节点。 **场景管理器(SceneManager)**是OGRE的核心组成部分,负责在屏幕上管理和呈现所有对象。它维护着场景中的物体布局,包括物体的位置和摄像机的位置。OGRE提供了多种场景管理器,如OctreeSceneManager用于高效地处理大量对象,BspSceneManager用于构建基于BSP树的场景。在代码中,通常通过`SceneManager* mSceneMgr`实例来访问和操作场景管理器。 **实体(Entity)**是OGRE中可渲染的3D对象,如模型、平面等。一个实体由一个特定的3D网格(mesh)定义,比如`"fish.mesh"`。在OGRE中,我们不能直接将实体放入场景,而是需要将其附加到场景节点上。创建实体的代码示例如下: ```cpp Entity* ogreHead = mSceneMgr->createEntity("Head", "fish.mesh"); ``` 然后,我们需要一个场景节点来定位这个实体: ```cpp SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(); headNode->attachObject(ogreHead); ``` **场景节点(SceneNode)**是OGRE中位置和方向的容器。它们允许你组织和操纵场景中的对象。你可以将场景节点想象为一个3D空间中的坐标系,实体和其他对象可以附加到这些节点上来确定它们的位置和旋转。场景节点可以有子节点,形成一棵树状结构,使得复杂的场景组织变得可能。例如,你可以创建一个场景节点来表示人物,然后将人物模型和光照模型都附加到同一个节点,这样移动或旋转节点就能同时影响到模型和光照。 **API函数简介** 1. `setAmbientLight()`:设置场景的全局环境光,例如`mSceneMgr->setAmbientLight(ColourValue(1, 1, 1));`将环境光设置为白色。 2. `createEntity()`:创建一个实体,例如`mSceneMgr->createEntity("Head", "ogrehead.mesh");`创建一个名为"Head"的实体,使用"ogrehead.mesh"作为网格模型。 3. `getRootSceneNode()->createChildSceneNode()`:创建场景管理器的根节点的子节点,例如`SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode");` 4. `attachObject()`:将实体附加到场景节点,例如`node1->attachObject(ent1);`将实体`ent1`附加到节点`node1`。 在实际的3D应用程序中,你可能需要创建多个场景节点和实体,通过调整节点的位置和旋转,以及添加光照、粒子系统等元素,来构建丰富的3D世界。OGRE的手札系列提供了一个逐步学习和实践这些概念的平台,对于初学者来说,这是一个很好的起点。通过深入学习和实践,你可以掌握如何有效地利用OGRE进行3D图形编程,构建自己的3D应用程序。
剩余63页未读,继续阅读
- dj03792013-05-09很不错,好的入门资料
- 粉丝: 35
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 青藏高原冻土空间分布-2023年最新绘制
- order system(1).c
- 基于微博数据的舆情分析项目(包括微博爬虫、LDA主题分析和情感分析)高分项目
- 测试电路板用的双针床设备(含工程图sw17可编辑+cad)全套技术开发资料100%好用.zip
- 基于Python控制台的网络入侵检测
- 基于微博数据的舆情分析项目-包括数据分析、LDA主题分析和情感分析(高分项目源码)
- 制作生成自己专属的安卓app应用 制作apk
- 基于python开发的贪食蛇(源码)
- frmcurvechart.ui
- NSFetchedResultsControllerError如何解决.md
- 基于java银行客户信息管理系统论文.doc
- EmptyStackException(解决方案).md
- RuntimeError.md
- wqwerwerwere
- 基于java+ssm+mysql的4S店预约保养系统任务书.docx
- 基于java在线考试系统2毕业论文.doc