OGRE(Object-OrientedGraphicsRenderingEngine,即:面向对象图形渲染引擎)是一个用C++开发的面向场景、非常灵活的3D引擎,它旨在让开发人员更容易、更直接地利用硬件加速的3D图形系统开发应用。这个类库隐藏了底层系统库(如:Direct3D和OpenGL)的所有细节,提供了一个基于世界对象和其他直观类的接口。译者注:ogre在英文中意为:食人魔鬼,怪物,象鬼的人,故其LOGO是一个怪物头
ogre_OGRE -OGRE
即Object-Oriented Graphics Rendering Engine,面向对象图形渲染引擎的缩写。一款C++开发的,面向对象的3D图形引擎,它对底层3D API(D3D、OpenGL)进行了抽象,提供了面向现实世界的接口。具有跨平台的特性(Windows、Linux)。
ogre_OGRE -它能够做什么?
图1-1中,展示了一个被用于在实时游戏和交互仿真中比较通用的体系结构。应用层(Applicationlayer)负责封装真正的计算机硬件,并包装产生了诸如系统计时器,HID(用户接口)输入以及文件系统等等接口。逻辑层(Logiclayer)负责保存仿真运行的规则和维护状态,并对从应用层(applicationlayer)传来的输入或者网络事件作出相应。最终所有这些状态周期性的通过图象和声音等这些媒体输出设备来展示给用户。
图1-1
其中视频图像部分:更准确地说,是Ogre3D渲染库以及如何用它去渲染图象。在Ogre3D的名字中包含“3D”是很贴切的,因为那就是它所能做的所有事情。它不能处理用户输入,不能管理你的游戏状态,不能做网络通讯,不能播放声音。它只是做为一个3D渲染引擎被设计出来,并且那就是它唯一的应用。因为专业,所以它总是能够很好的完成它本分的任务。(虽然Ogre引擎中也会包含比如输入系统等一些简单的实现,但官方的说法一般是:这只是为了支持演示程序所提供的,不建议你在自己实际的应用中使用。你需要在Ogre去中去寻找其他的库来完善你自己的工具箱。)
ogre_OGRE -引擎特性
Ogre几乎拥有了商业3D渲染引擎的全部特性,甚至在某些方面超越了它们。
全面并同等的支持OpenGL和Direct3D 。
全面支持Windows,Linux以及MacOSX平台 。
简单并可扩展的对象框架,能方便的插入到已存在的应用程序框架中 。
自动处理渲染状态和空间剪裁 。
强大且成熟的材质管理和脚本系统,可以不动一行代码去进行材质维护 。
支持所有纹理混合和绑定技术,同时支持对GPU编程技术,支持汇编语言和所有高级语言形式的各种着色语言,其中高级语言包括:Cg,HLSL和GLSL 。
支持多种纹理图片格式,包括:PNG,TGA,DDS,TIF,GIF,JPG,同时支持特殊格式的纹理,其中包括:一维纹理(1D),容积纹理(volumetrictextures),体积纹理(Cubemaps)和压缩的纹理格式如:DXTC 。
全面支持渲染到纹理(Render-to-Texture)技术和投影纹理(贴花,ProjectiveTexturing-decals)。
全面支持材质LoD(细节层次,mipmapping)技术 。
优化的二进制模型文件格式,同时支持手动和自动LoD生成 。
同时拥有多种从商业或者开源3D模型软件导出到Ogre模型格式和动画格式的插件,其中包括官方以及用户提供的版本。
全面支对顶点和索引缓存(vertexandindexbuffers)、顶点声明(vertexdeclarations)以及贴图缓存(buffermappings) 。
全面支持骨骼动画和姿态动画(pose动画,顶点动画的一种),每个顶点可以混合任意数目的骨骼权重 。
支持软件和硬件加速蒙皮 。
支持静态几何体批次(staticgeometrybatching) 。
支持二次贝塞尔曲面(biquadricBezierpatches) 。
给出以插件方式链接不同场景结构的接口,允许你使用适合自己应用程序的场景体系(基本的八叉树“octree”场景管理做为一个例子出现在插件中) 。
高级可屏蔽场景查询系统(Advancedmaskablescene-queryingsystem) 。
全面支持多种阴影技术,包括模版阴影(stencil),纹理阴影(texture),叠加阴影(additive),调制阴影(modulative),并且全部支持硬件加速 。
高级插件方式的粒子系统,可扩展的发射器(emitters),效果器(affectors),渲染器(renderers)(ParticleFX作为插件的例子被包含在工程里面) 。
全面支持并且方便使用的天空盒(skyboxes),天空面(skyplanes),以及穹顶(skydomes) 。
以精灵效果为基础(sprite-based)并得到渲染优化的公告栏(Billboarding)技术 。
以单一队列为基础的渲染管理,允许全面操作渲染执行顺序 。
自动管理透明对象 。
成熟且可扩展的资源管理和载入系统,文件系统支持的文件包括zip,pk3格式 。
Ogre3D渲染引擎的开发团队用了4年时间完善了上面列出的所有功能,但只有到你真正的使用的时候才能展示它所拥有的广泛性和专业性。
ogre_OGRE -Ogre的起源
Ogre是一个开源软件项目。这意味着你“通常”可以免费的随意使用它。一些小小的限制来源于它所使用的LGPL协议;如果你有什么不明白的细节,理查德・斯托尔曼[1]和他创立的自由软件基金将会很高兴告诉你什么是LGPL所定义的规则。无论是哪种类型的软件产品,包括教学或者科研项目,个人学习或者开发游戏项目,全特性的社区游戏(Full-featuredcommunity),乃至具有赢利的商业游戏和其他3D应用程序,只要你遵循下面的一些限制和规则,你都可以免费的将Ogre应用到你的软件产品中。
所有版本的Ogre,并不象MySQL等开源软件那样具有双重开发许可,相对而言它是更严格的遵守LGPL,以下是LGPL许可的主要内容:
你必须区分你所得到的二进制文件是否是从最初遵守LGPL的源代码版本编译而来,因为任何对源代码的改动都可能让这个项目变成“闭源”,并且确认从这个源代码所编译生成的库是可用的(对于这点你完全不用担心,这应该是Ogre开发工程所保证的)。
当你使用这个库作为动态库被链接到你的应用程序之中的时候,并没有必要如同GPL协议一样开源你的应用程序,在LGPL协议下这种情况你的软件没有被强制要求遵守LGPL。(这就是协议中“Lesser”这个词所带来的含义。)
但当你把遵守LGPL的项目作为一个静态库链接到你的应用程序的时候,你必须保证你所开发的程序也要遵守LGPL协议开源(换句话说,静态链接――让你把协议链接到了程序里)。
Ogre项目在2001年被建立,它的作者,Steve“Sinbad”Streeting,曾经是一个每天循规蹈矩的商业软件开发者。某天,突然冒出了一个想法:世界需要有一个不一样的3D渲染引擎(约翰・卡马克[2]在多年前已经开发了一个),它的场景结构应该独立出来。随后,他利用10多年在图形领域的软件工程开发经验(也可以称为“折磨”),以及在更多“折磨”中诞生出来的软件工程(他正式的工作)经验,设计了一个体系结构――今天被我们亲切地称为Ogre。当我们问他为什么愿意去设计另外一个3D渲染引擎的时候,Steve回答说:
很多的引擎,在技术上吸引人的同时,却缺乏紧凑的设计和完善的开发文档。它们虽然拥有众多的特性,但是缺乏一致和直观的技术演示。正如同其他很多软件系统一样,随着时间而逐渐变的庞大和衰落。另外还有很多引擎只是针对某一特定类型的游戏或者演示而开发(如,第一人称射击游戏,地理场景漫游)。
而OGRE是如此与众不同,在它的理念中设计总是先于功能的实现。每一个加入OGRE的特性,都经过了慎重的考虑,尽可能的完善设计并伴随完整的文档,这意味着新功能会完美的融入整个体系之中。它严格遵循着质量重于数量的原则,因为拥有良好的质量就具备了持续发展的可能,简单数量累积并不能解决这个问题。OGRE遵循面向对象的设计理念,并借鉴在商业领域广泛使用的设计模式等技术。我们的核心团队刻意的保持精简,他们所有人都是在真实世界中拥有多年软件工程经验的的工程师。同时也欢迎从社区中脱颖而出的人才加入到核心团队中来,但一定要经过严格的考核,确认他符合“食人魔(Ogre)”的精神――强壮且团结,这样才可以被接纳。
在Ogre核心团队中这些专业且富有激情的工程师们来至众多领域,其中有商业软件工程师,游戏开发者,学术研究人员,甚至包括大型机器模拟仿真系统的开发人员。在他们没有做本职工作的时候,就会腾出时间来完善Ogre引擎。当他们没有完善Ogre引擎的时候,就会在Ogre的社区论坛或者官方聊天室中解答大家的问题。当这些核心开发人员没有在这里回答大家的问题的时候,同样有一群热心而活跃的社区用户来代替他们给新的Ogre使用者解答问题,也或者老的使用者们会相互交流。其中那些活跃的,经常为人们及时提供正确答案和建议的人将被选为OgreMVP。
[1]理查德?斯托尔曼:RichardStallman老牌黑客。1971年,斯托曼在街上找到一份MIT的人工智能实验室的工作。当时他是哈佛大学的一名本科生。后来,斯托曼创立了自由软件基金,打破了软件是私有财产的概念。他既是当今专有(私有)商业软件领域野蛮的颠覆者,又是无数程序员和用户心目中神圣的自由之神。
[2]约翰・卡马克(JohnCarmack),id创始人之一,DOOM和Quake的游戏引擎的首席设计师。由于其的创意与天才思想,获得了3D游戏之父的美誉,可以说目前市场上所有的第一人称射击游戏,或多或少都有些卡马克的影子在里面。
Ogre游戏装备
玩Ogre游戏需要佩戴实时的动作捕捉传感器。如穿着配有3-Space实时动作捕捉传感器的数据服,可以轻松玩转Ogre3D游戏。