follow my heart...
分类:
2006-11-26 19:26:34
访问
学习了这么久的3D 游戏编程了,我发现一些基本的知识可以在计算机图象学这本书中学到,比如,3D的基本原理,一些基本的编程知识等。而要掌握真正的3D游戏引擎的制作技术,应该从一款实际的引擎入手。
OGRE是一款开放原代码的图象渲染引擎(实际上是一款面向对象的图象渲染引擎),它是由一个小而强的团体编写并维护,由许多团体共同开发的。我们都相信他是至今为止最好的免费并开放的引擎。
OGRE团体有那些人?关于这个问题请参考
为了能使用OGRE,我们需要那些工具和HARDWARE? OGRE能运行在任何支持3D图象的HARDWARE上。OGRE开发小组力图OGRE能适应各种不同的平台。对于OGRE,并没有设置性能需求——但是,性能将是局限你做什么的重要因素。
与OGRE相关的工具,唯一需要的是一款支持C++的编译器。当前,OGRE只支持Visual C++ 6/7/7.1和GCC。对于Bloodshed 和Borland的编译器,当前并没有支持。
我想知道如何用OGRE编程? 是的,你将知道如何编程。OGRE并不是一个想其他游戏引擎的游戏SHELL或脚本语言。你将知道许多关于他的使用知识,但是他比脚本工具更为强大。很好的C++知识是需要的,这将有助你理解面向对象编程。OGRE的强大功能说明他并不适用于初学者。这并不是说你不能用OGRE学习编程,只是如果你想对他进行更深入的研究将会遇到许多的困难。
当前,有人把OGRE移植到Python和Java,当工作只是刚刚开始。
我能用OGRE 做游戏吗? 是,你能。并不象许多其他的3D 引擎,OGRE并不是适合任何类型的游戏。由于开发的原因,OGRE只适合第一人称射击游戏。OGRE特别适合制作3D 游戏。
我能制作一个OGRE的MMORPG吗? 理论上,可以,但MMORPG需要许多的时间,工作和钱来建立和维护——这些都是你不得不考虑的因素。MMORPG是最近几年提出的一个热门话题,每个人都想研究他。但是有许多的难题。Conventional wisdom 说当你用MMORPG的模式做一个典型的游戏,如Tetris,Pong等时,给你的感觉就象是设计整个游戏,执行过程和制作的工作量。“每个人和他的妈妈就能做一款MMORPG的理论在OGRE的讨论中就好象一个笑话。
OGRE是一款游戏引擎吗? 不是,这只是许多人的错误看法。OGRE是一款图象引擎,只是一款图象引擎。不管怎样,他很容易和其他库结合来建立一款游戏引擎。你需要建立游戏引擎的库有:
* 声音
* 网络
* 输入
* 冲突检测
OGRG并不包含这些库。尽管他留有接口用于你在你的应用程序中将其他库连接到OGRE。对于这,Sinbad有话说,下面是他说的:
OGRE是一个大型的开发系统的一部分。OGRE并不是一个游戏开发平台,他只是一个有特殊目的的工具。我有时不得不反复声明这点,因为我好象伤害了其他引擎的权利。我认为软件系统应该模块化,即插即用,有清楚的接口。每个组织都应该遵照这点,并使他们的软件和其他的软件很好的沟通。这里面最重要的就是接口。开发人员应随意的将其他的库综合到游戏开发平台上,比如声音,脚本和AI等。这就是说你不能用OGRE做一个游戏,因为他只是一个游戏引擎的一部分。我们并不能将这整个游戏引擎做好,而只能是一部分,这样我们就不得不让这些部分很好的沟通。
上述这段话意味着你不能用OGRE做游戏,他只是制作游戏的一部分。一个简单的原因是OGRE并不决定你将用到的库,只是让你的程序围绕OGRE。
OGRE简介
OGRE(面向对象的图形渲染引擎)是用C++开发的面向对象且使用灵活的3D引擎。它的目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。
OGRE特点
效率特性
? 简单、易用的面向对象接口设计使你能更容易地渲染3D场景,并使你的实现产品独立于渲染API(如Direct3D/OpenGL/Glide等等)。
? 可扩展的程序框架(framework)使你能更快的编写出更好的程序。
? 为了节省你的宝贵时间,OGRE会自动处理常见的需求,如渲染状态管理,hierarchical culling,半透物体排序等等。
? 清晰、整洁的设计加上全面的文档支持。
平台和3D API支持
? 支持Direct3D和OpenGL
? 支持Windows平台,用Visual C++ 6(或Visual C++.Net)和STLport来编译。
? 支持Linux平台,用gcc 3+(或gcc 2.9x)和STLport来编译。
? 材质/Shader支持
? 支持从PNG、JPEG或TGA这几种文件中加载纹理;自动产生MipMap;自动调整纹理大小以满足硬件需求。
? 支持可程序控制的纹理坐标生成(如环境帖图)和转换(平移、扭曲、旋转)。
? 材质可以拥有足够多的纹理层,每层纹理支持各种渲染特效,支持动画纹理。
? 自动应用多通道渲染和多纹理,从而大幅度提高渲染质量。
? 支持透明物体和其它场景级别的渲染特效。
? 通过脚本语言可以不用重新编译就设置和更改高级的材质属性。
网格Meshes
? 高效的网格数据格式
? 提供插件支持从Milkshape3D导出OGRE本身的.mesh和.skeleton文件格式。
? 支持骨骼动画(可渲染多个动画的组合)
? 支持用贝赛尔样条实现的曲面
场景特性
? 拥有高效率和高度可配置性的资源管理器,并且支持多种场景类型。使用系统默认的场景组织方法,或通过亲自编写插件使用自己的场景组织方法。
? 通过绑定体(如绑定盒)实现的场景体系视锥拣选。
? 提供的BspSceneManager插件是快速的室内渲染器,它支持加载Quake3关卡和shader脚本分析。
? 优秀的场景组织体系;场景结点支持物体的附属(attach),并带动附属物体一起运动,实现了类似于关节的运动继承体系。
特效
? 粒子系统包括可以通过编写插件来扩展的粒子发射器(emitter)和粒子特效影响器(affector)。通过脚本语言可以不用重新编译就设置和更改粒子属性。支持并自动管理粒子池,从而提升粒子系统的性能。
? 支持天空盒、天空面和天空圆顶,使用非常简单。
? 支持公告板,以实现特效。
? 自动管理透明物体(系统自动帮你设置渲染顺序和深度缓冲)
其它特性
? 资源管理和文档加载(ZIP、PK3)。
? 支持高效的插件体系结构,它允许你不重新编译就扩展引擎的功能。
? 运用'Controllers'你可以方便地改变一个数值。例如动态改变一个带防护罩的飞船的颜色值。
? 调试用的内存管理器负责检查内存溢出。