2009年6月11日星期四IrrlichtEngine中文学习指南ISClubIrrlichtEngine|未来公司1IrrlichtEngine中文学习指南收集整理:ByISclub翻译:FK_Duzhi(感谢他)日期:2009年6月11日星期四前言:为了学习3D网络游戏开发,尝试过几种经典免费开源的引擎:TV3D,Irrlicht(简称Irr),Ogre等等;TV3D目前最新的版本V6.5已经可以很好的支持VB6,VC++,Delphi,.NET等语言,特点是新手学习速度快,门槛低;缺陷是基于ActiveX控件,需要在运行前注册RunTimeDLL。Irrlicht采用C++封装的3D引擎,是一款轻量级的3D引擎,引擎本身精简强悍,功能也齐全,并且有自己专用的场景编辑器;但扩充功能不易,对于新手来说,也是难得的入门快,学习快的引擎。Ogre是一款开源的3D渲染引擎,它非常强大,并且支持插件等形式来完成新的功能,这点优于Irrlicht,但入门不易。本文翻译,以及来源载录信息来自:FK_Duzhi大侠。2009年6月11日星期四IrrlichtEngine中文学习指南ISClubIrrlichtEngine|未来公司2欢迎您从:SDK目录结构总述当您下载Irr引擎SDK解压缩之后,你会看到以下文件夹:\bin完全编译好的Irrlicht,DLL以及一些编译好的Demo,你可以通过这些例子来获取Irr的运行状态。(WindowsOnly)\docIrr引擎的一些文档。\examples使用C++编写的例子,告诉用户如何使用Irr引擎。\examples.net使用.NET语言编写的例子,告诉用户如何使用Irr引擎。\exporters一些Irr引擎用到的辅助库和工具。(注:部分版本没有此文件夹,该文件夹内容在source中,包括Jpeglib,libpng,MacOSX,zlib等)\include引擎包含的头文件。\lib当你使用Irr引擎时需要链接的库文件。\mediaDemo程序需要的一些图形图象和声音素材。\sourceIrr引擎的源代码,必要的话,你可以对其进行编译和Debug以获得新的lib。\tools引擎的一些有用的工具。(包含源文件)2:如何启用引擎在Windows环境下启动引擎的话,你需要去\bin\Win32-VisualStudio目录下运行程序。或者你也可以运行一个叫Demo.exe的程序,它会显示一些Irr引擎有意思的功能。在开始我们自己的程序编写之前,你最好看看\examples目录下的例子,那里也有一个.html格式的文件对例子进行说明,以方便你的理解。(编者注:您也可以到这里获取一些例子相关的帮助)在Linix环境下,Irr引擎是一个静态库。你可以使用source/Irrlicht中的Makefile文件来生成一个编译好的引擎。之后,你应当可以生成/examples中的例子程序了吧。之后你可以立刻运行这些例子了。3:SDK编译需求你可以使用下列编译器之一来运行Irr应用程序。不过,其他编译器可能也能完美运行,但是我没有做过测试。lgcc3.3lgcc3.4lgcc4.0.3lVisualStudio6.0lVisualStudio.NET2003(7.1)lVisualStudio2005(8.0)lCode::Blocks1.0+gcc或VisioStudioToolkitlDevC++5.0+gcc如果你不想使用编译好的引擎库,你可以自行使用源代码进行编译,你需要以下支持:lWindows环境下:Windows平台SDK(一般IDE里已经包含)DirectX9SDK(可选,进行D3D9支持)2009年6月11日星期四IrrlichtEngine中文学习指南ISClubIrrlichtEngine|未来公司3DirectX8SDK(可选,进行D3D8支持)lLinux环境下:Xserver以及其包含文件OpenGL支持库(可选,包括libGL和libGLU)GLX+XF86视频扩展库(可选)4:版本注意1:您可以在changes.txt中查看引擎版本的更改信息。2:请注意,那些材质纹理3D模型等素材的版权依旧属于其原作者,而不受本引擎版权声明影响。5:声明这个声明是基于Zlib/libpng的。假若您在项目中使用了Irr引擎,您有权不提及它,但是还是希望您能来封感谢信。(笃志注:外国人这点就是好)请注意,Irr引擎是基于JPEG库,Zlib,libpng这些库之上的,那就意味着,如果您在自己项目中使用了Irr引擎,您必须在项目文件中提到你使用了这些库,并且声明感谢。当然,若您愿意声明感谢Irr引擎的话自然更好。更详细的声明信息建议您看jpeglib和zlib中的ReadMe文件。Irr引擎许可声明禁止使用本引擎进行任何不法行为,违反者后果自负。在基于下列三项要求前提下,本引擎允许任何人进行随意使用,包括制作商业软件,同样也允许你随意修改源代码。1:若您在项目中使用了本引擎,您可以在项目说明中声明感谢,不过,您也可以不做感谢声明,但是,本引擎文件来源说明绝对不允许修改删除。2:若您进行源代码修改,请务必做出明显标注。3:本份声明不允许被修改或删除。6:联系方式如果你有问题或者建议,欢迎来访Irr官方网页:主题的论坛,补丁,例子和其他一些帮助。如果您想加入引擎开发组,请发一封邮件至NikolausGebhardt:irrlicht@users.sourceforge.net一部分朋友协助进行了部分引擎的编写和修改工作,请在这里查看完整的作者名表。年6月11日星期四IrrlichtEngine中文学习指南ISClubIrrlichtEngine|未来公司47:相关工具为了使您在项目或游戏中使用Irr引擎更加方便简单,我们提供了一些外部工具。这些工具和库是完全独立于Irr引擎的,但是这些工具是完全针对Irr引擎兼容的。1:irrKlang一个2D和3D音效引擎irrKlang引擎是一个免费的2D和3D音效引擎库,它提供WAV,MP3,OGG,MOD,XM,IT,S3M等一些音频格式的播放支持。它是由C++编写的,下面是它的一些特性:它能够与Irr引擎的完美结合,因为它使用了一些Irr简单的API,但是又可以完全独立于Irr引擎使用。跨平台。支持2D和3D的流音频播放。支持回声,失真,多普勒等多种2D3D音频特效。支持多种音频格式:wav,mp3,ogg,mod,xm,it,s3m„等等。高级资源管理和资源探测。提供了具有可扩展型的音频解码器和plugin系统。免费。更详细的信息,您可以从这里获得:irrEdit一个3D地图编辑器irrEdit是一个免费的3D地图编辑器。它能够进行场景曲线编辑,世界场景编辑,粒子系统设计,Mesh查看等功能。它的文件保存格式为.irr格式,Irr引擎能够支持。它的特征包括:它包括一个高质量的地图产生器它包括一个粒子系统编辑器编辑器中还包括有一个自由完善的脚本系统它包括动画器和数据编辑器免费因为它是使用Irr引擎编写的,所以它能够读取所有Irr引擎所支持的格式。另外,它能够将一切文件保存输出为COLLADA文件格式。更详细的信息,您可以从这里获得:irrXML一个C++编写的最快的开源xml解析器irrXML是一个C++编写的最快的开源xml解析器。它已经嵌入在Irr引擎中了,例如我们在读取一个.irr或COLLADA格式文件时就是使用它。它非常快,又是轻量级代码,而且不浪费一点内存,是做游戏时很好的一个库。如果你的项目不使用Irr引擎,你又需要一个快速的XML解析器,建议你使用这个库。它的使用声明和zlib一样。更详细的信息,你可以从这里获得年6月11日星期四IrrlichtEngine中文学习指南ISClubIrrlichtEngine|未来公司58:一些常见问题和解答1:Irrlicht引擎是什么?Irr引擎是一个高性能,跨平台,开源的3D引擎。它能够帮助你进行实时3D程序的开发。它的主要目标是:方便使用,运行速度快,可扩展,线程安全。这个引擎是一个非常灵活的引擎,可以使用它编写许多不同的应用程序。例如:复杂的3D仿真应用程序,第一和第三人称室内或室外射击游戏,策略游戏,2D游戏等等。2:我能够在不开源的商业程序中使用这个引擎吗?你当然可以。Irr引擎是免费的,而且完全自由的。您可以随意的编辑修改它,但是你必须标注出你的修改部分。这个引擎是基于Zlib的版权声明的,既非GPL也非LGPL。更详细的情况,您可以查看内部的声明。3:我可以用Irr引擎做一款游戏吗?当然可以,而且这会很简单。但是,请注意:Irr不是一款游戏引擎,它仅仅进行了图象处理。做为一款游戏,你需要更多的部分,例如声音输出,网络和物理系统,也需要一些游戏相关的编辑器。您当然可以选择自己制作这些编辑器,但是Irr引擎已经有一些现成的编辑器和库可以提供给您使用,例如irrKlang,irrEdit。更详细的情况,您可以查看相关的说明。4:我可以为引擎做一些贡献吗?如果你编写了自己的场景节点,图片和Mesh读取器,或者对引擎做出了更多的扩展,请在给我们来封论坛短信,我将会查阅您的代码,并会考虑将它发布到Irr主页,甚至加入到引擎sdk之中。在例子这页将会告诉你如何对引擎进行扩展(笃志注:并未发现相关资料啊--难道所谓的扩展就是写几个Demo?)如果你想加入我们的开发组,请先尝试习惯我们的代码规范。(笃志注:--并未给直接的联系方式)5:现在有很多其他的3D引擎可以使用,请问Irr引擎相对于其他3D引擎有什么优势?容易使用。Irr引擎把所有常规的事情和绚丽的特效都已经做好了,您不需要花几天的时间去学习文档。例如:启动引擎,读取并显示一个Quake3的地图仅需要调用引擎6个函数,代码行数不超过10行,有兴趣的话,您可以查看sdk中的例子。灵活性强。虽然引擎很方便使用,但是你能够很容易的修改它。极其稳定。大部分实时程序在用户进行意外操作时会严重当机。但是Irr引擎不同,它会打印出一个警告信息,而应用程序大部分情况会继续运行。快如闪电。因为3D引擎的常见问题在于速度,而影响速度的主要原因在于大量的内置导入解析器,而Irr引擎可以直接的进行文件导入而没有使用任何转换器,节省了大量的编译时间。它支持下列格式(.3ds,.md2,.obj,.pk3,.ms3d,.bsp,.x,.bmp,.tga,.jpg,.psd,.pcx等等)平台独立性。Irr引擎可以在众多平台上使用。2009年6月11日星期四IrrlichtEngine中文学习指南ISClubIrrlichtEngine|未来公司6独立API。因为有很多种设备类型,Irr引擎支持多种API,当前来说是支持OpenGL,D3D8和D3D9设备,一个空设备和两种软件模拟设备。甚至,在渲染的时候也允许进行设备类型的更换。不依赖其他库。Irr引擎sdk不需要其他库的支持。例如,即使用户系统中没有DirectX,引擎也能顺利运行。完善的文档。大量的例子和Demo,并且提供了一些你在3D程序中常用的工具,于是你无需新建项目来做这些工作。它包括(GUI系统工具,Font生成工具..等)开源。这个引擎是完全免费并且