天行健 君子当自强而不息

【ZT】了解OGRE——起步常见问题

先收藏起来,以后再研究OGRE。



Original version by Antiarc (28 Dec 2004)
简体中文译本由aaron@ogre3d.org.cn翻译(2007年4月16日),也就是acer@gameres.com,是同一个人的。

免费打工仔看看要不要在中文维基上也增加这部分内容。这些是Ogre wiki上的东西。
稍后我会把它放到我的blog上。希望对刚刚接触Ogre还不太熟悉的朋友会有些帮助。


让我们开始吧

OGRE是什么?

Ogre是一个开源图形渲染引擎(Open-source Graphics Rendering Engine),其实它的名字的原意是面向对象图形渲染引擎(Object-oriented Graphics Rendering Engine),巧了,缩写是一样的! :-)它是由一个小型核心团队编写和维护,并依靠其不断成长的社区提供支持的。我们这些使用者相信它是当今比较好的自由开放引擎之一,不用赘言,你亲自试试就知道了。

开发者是谁?

好吧,让Ogre小组官方主页来回答这个问题吧。

我需要什么工具和硬件?

Ogre可以运行在多种3D图形硬件上,当然运行效果肯定会有所不同。可以浏览硬件查看图形硬件需求和推荐。

说到工具,你需要的是支持C++编译器。到目前为止,只有Visual C++ 6/7/7.1/8和GCC是支持的。Bloodshed和Borland编译器目前还不受官方支持。

最后,你需要一个3D程序工具来创建内容。查看装配成果的途径了解过程期间还需要什么其它软件。最基本的和常用的工具是对象建模软件

要使用Ogre,我需要知道如何编程吗?

回 答是肯定的,你要知道如何编程。Ogre不是像市面上一些游戏开发包一样的游戏外壳或者脚本语言。要想很好地使用它,需要更多的知识,当然也比脚本包功能 强大得多。良好的C++知识是最基本的要求,即需要理解面向对象编程。Ogre的强大力量意味着它不是那种适合刚刚开始编程的人使用的。但那不是说你不能 学习使用Ogre,只是比从传统方法开始要困难很多倍。

现在也有面向Python和Java语言的Ogre版本正在开发中,但是目前还没有成品。

面向.NET(C#/VB.NET)的版本现在已经有了基本功能,已被收入OgreAddons CVS树。

我在哪儿能学到如何用C++编程?

推荐看看下面的网站:
 完全C++语言教程
 C++编程教程
 C和C++编程
 C++简明常见问题解答

给新手一点提示。知道了如何编写C++程序(比如,知道了语法等等)实际上并不能帮你创建复杂的程序。虽然Ogre会带你走近创建3D程序,但是你仍要进行大量练习。推荐去"ACM问题集"网站,注册,每周至少做一到两个问题集。重在练习。那儿也有论坛,可以解答你的问题。把它当做家庭作业好好想想。如果你做到了这些(边看教程等等),你才真的了解了C++。

想深入学习一下C++:
 Thinking in C++
是不错的选择。(我在大学期间曾系统学习过这本书,感觉很好。这是我加的,不是翻译原文。 

我能用Ogre制作游戏吗?

当然可以。与许多其它3D引擎不同,Ogre不是为特定种类的游戏而开发的。根据它的设计,Ogre可被用于从飞行模拟到第一人称射击再到"2.5D"游戏的各个地方。如果它能在3D中被实现,那么极有可能是Ogre能够实现它。

我可以用Ogre制作MMORPG吗?

理 论上来说是可以的,但是MMORPG需要大量的时间,人工和金钱来构建和维护。这还是仅考虑你设计项目时。MMORPG是近来的热门事物,每个人都想做一 个。但是即使是接近完成也极少有人能够做到。一般明智的做法是,在尝试MMORPG这么大规模的游戏之前,至少制作两三个较小的"经典"游戏,例如:俄罗 斯方块等,因为这样能够给你一个对于游戏设计和实现过程的整体感觉,以及让你知道即便是一个小游戏实现起来需要多少工作。“每个人和他们的妈妈制作 MMORPG”主题是游戏编程社区的一个玩笑,所以当你宣布你的下一个大计划要震惊游戏界时,你可能是要受到怀疑的。

如果你不管这些,仍然 相信你要制作MMO,那么现在开始吧。首先,考虑加入一个小组。最好,你的伟大构想不全是革命性的。合作会最有利于达到实际结果。如果你仍然相信要自己开 始一个项目,那么就从反复地研究开始。如果那个研究完了,再进行更多的别的一些研究。不要在Ogre论坛上发布招聘,那是个馊主意。如果你对通过研究了解 的东西有信心,那么开始设计文档。按顺序列出你的想法,然后开始尝试争取支持。GameDev.net有一个招聘区允许新手开“我想从头开始制作一个 MMO游戏”这样的帖,但是在Ogre论坛上是不许发这类帖子的。

如果你准备好开始了,那么挑选出工作用的工具。准备GOOF,PLSM以 及其它能够加速开发节约时间的库文件或者引擎。准备Realm Crafter,Kaneva,Multiverse以及其它可能有你需要的东西的MMO 引擎。Project Wish就是少数代表之一。

最后,永远不停学习。这会花费很长时间。你需要帮助并要开设一个社区以提供支持。如果你有任何问题,可以提问,但要用恰当的方式,注意语法和拼写。大多数人不会特别严肃地对待问题,所以用你专业地做事方法回击他们的嘲笑。

虽然除了这些之外,还有很多需要说的,但是知道了上述这些内容,已经可以开始了,如果你够疯狂想要尝试的话。

Ogre是游戏引擎吗?

不是。这是许多朋友往往忽视的微小差别。Ogre是一个图形引擎,并且只是一个图形引擎。但是,它可以很容易地和其它库文件绑在一起构建一个游戏引擎。要构建游戏引擎,你可能需要的一些库文件有:
 声音
 网络
 输入
 碰撞

Ogre本身不包含这些库,但是它留有接口,使Ogre可以很容易地与现有程序共同工作。Sinbad(Ogre首席开发员)选择走这条路线,有如下几个原因:(下面的话来自论坛里的帖子)

 OGRE是更大的开发系统的一个组成部分。OGRE不是,并且永远不会是一站式购物的游戏开发平台,它是为特定目的而开发的一个工具。有时我不得不发了疯似的保卫这一点,看上去这条路走得跟其它引擎正好相反,它们集中于提供一种一站式解决方案。

  我认为软件系统应该是模块化,可插拔的,它们之间有清晰的接口和边界。我认为每个小组应该专注于他们的核心区域,让其他人自己解决各自的特殊需要(例如我 认为重复开发ODE的人纯粹是疯子,就像一些其它引擎做的那样)。我认为任何软件系统最重要的部分是它的接口,支持其上的所有内容。我认为开发人员组合入 选开发平台的工具应当是自由的,不是仅仅由于他们选择了一个图形引擎,而被告知必须要用哪个声音,物理,人工智能等实现方式。

 我意识到这 种方法意味着今天这种局面,用Ogre开发游戏不如用一站式引擎快速,但是我不是只考虑今天。我的哲学是构建一个灵活的图形组件,它能够被用于各种情况 下,并且易于与其它组件集成——而不是构建一个只能用于少数游戏的引擎。比起速度,我更喜欢灵活性,因为我认为如果你设计正确,你就能添加工具使后续的特 定步骤的开发变得更快。你会发现扩展一个有着高集成特性从一个特定的视角被设计为仅能处理一小部分场景类型的引擎是非常困难的。我尝试着进行长远计划。

 随着时间推移,我期望出现更多的“复合”解决方案,而且那确实已经出现了,人们基于OGRE和其它库文件构建他们自己的平台。嘿,也许有一天我也会用我选的声音/网络/物理引擎库和OGRE组成一个平台。但是我的选择不必一定是你的选择。我认为这一点是最重要的。

这并不是说你无法将Ogre用于游戏。事实上,比起其它方面,它更有可能用于游戏。简单来说,Ogre不决定你要使用什么库文件,并且允许你灵活地将Ogre应用到你的程序上,而不是围绕Ogre改变你的应用程序。

我也能使用OGRE生成图形吗?

我能用它生成像Maya或其它工具包提供的效果吗?
我能制作像cgtalk上面展示的那样的图片吗?
Ogre 是一个实时渲染引擎。许多cgtalk或其它网站上面的图片是离线渲染或低速渲染的,经常带有射线追踪。这两种技术从根本上来说是不同的。离线渲染图片, 为了细节和真实,花费大量时间处理每一张图片。可能花费几个小时或更长的时间去生成一幅全屏的图像。而实时渲染,为了帧率,需要在大约三十分之一到百分之 一秒的时间内渲染完。当今3D图形硬件的巨大进步已经令实时渲染变得观感也很详细且真实。限制仅来自于你运行Ogre所用的硬件以及你的想像力。要想知道 能够得到什么样的图形,可以浏览NVidiaATI销售它们的图形硬件时使用的图像。

我们的Ogre影集中有许多屏幕截图展示引擎和图形硬件的特性和能力。其中一些令人印象深刻,其余的也展示了能够被用以提高效能和灵活效果的特性,例如:后过滤、fresnel折射、标准映射。

好吧,你说服我了。那么,我应该如何开始呢?

这些链接从主页也可找到。首选是安装软件开发包从源代码编译。后者可供那些对C++开发有经验的人选择。然后,移到建立一个应用程序Ogre教程继续。

我卡壳了!如何获取帮助?!

你的主要信息来源是维基网页,包括安装软件开发包从源代码编译建立一个应用程序Ogre教程应用程序接口和手册也是必要的参考。如果你的问题在这些地方没法儿解答,Ogre有一个助人为乐欣欣向荣的社区,那里的人们非常高兴帮助你。你可以试着上一上论坛,在这儿,几乎你的问题全都会被及时回答,但是要先读论坛规定,然后善用搜索功能。新手问的大多数问题此前已被回答过无数次了。确保提供相应的细节,你的Ogre.log、异常、错误消息和/或调试器反向追踪。越具体,人们越可能帮到你。

如果你想要多些交互性,请联系irc.freenode.net,加入Ogre3d,我们随时帮你。

Ogre都支持哪些文件格式?

Ogre不仅支持许多普通文件格式,而且支持Ogre使用的特有文件格式。
支持的普通文件格式:
.bsp Quake bsp文件
.shader Quake 3 shader文件
.ttf True type字体文件
.png,.tga,.jpg,.raw,.gif,.dds以及更多FreeImage支持的图像格式。参见图像文件格式简要总结
.cg Cg shader文件
.asm Assembly shader文件
.zip 压缩资源
.xml XML文件
.xsd XML格式文件,定义Ogre基于XML的特有文件格式
.log 文本输出文件,用于调试记录,内存记录,及内存泄漏报告

Ogre特有文件格式:

.material Ogre手册:材质脚本
.compositor Ogre手册:合成器脚本
.particle Ogre手册:粒子脚本
.overlay Ogre手册:层脚本
.fontdef Ogre手册:字体定义脚本
.skeleton 包含骨骼动画的二进制文件
.mesh 包含单一网格定义的二进制文件
.scene 带有多个网格基于XML的文件。参见DotScene
.cfg 多目的配置文件
.inc 层模板包含文件
.scheme 基于XML的GUI文件
.imageset 基于XML的GUI文件
.layout 基于XML的GUI文件
.font 基于XML的GUI文件

要注意的是,Ogre不会对所有普通文件格式做到毫无遗漏地支持,但是相应替代地为流行的数字内容创建工具提供了Ogre特有的OGRE导出器




posted on 2007-05-10 16:38 lovedday 阅读(2112) 评论(2)  编辑 收藏 引用 所属分类: ■ OGRE

评论

# re: 【ZT】了解OGRE——起步常见问题 2010-01-30 11:23 安羽

...  回复  更多评论   

# re: 【ZT】了解OGRE——起步常见问题 2012-02-26 09:55 溪风蝉月

受益很多,楼主翻译的么,辛苦了!  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

导航

统计

常用链接

随笔分类(178)

3D游戏编程相关链接

搜索

最新评论