3D引擎调研
由于做项目要用到,对网上相关资料进行了整理。
此次调查的引擎满足以下条件:
开源:便于更改代码,优化性能,且免费。
支持OpenGL:DirectX只能用于windows平台
可移植到Android
效率相对较高:移动设备的局限性,如电量,CPU,GPU等
目前调查的结果共得到9款引擎:
OGRE
Horde3D
Irrlicht
jmonkey
Catcake
jPCT-AE
min3d
gamine
Alien3D
针对9种引擎做参数分析:
1、OGRE
name | OGRE |
Supported Graphic lib | OpenGL 、Direct3D |
Develop Language | C++,builds on gcc 3+ on Linux |
description | 一个强大的实时图形引擎。目前全球评价最好使用最广的免费开源引擎,可媲美商业引擎。 |
merit | 支持多种纹理图片格式,包括:PNG,TGA,DDS,TIF,GIF,JPG;支持骨骼动画,内置强大的材质管理和脚本系统,可以不动一行代码去进行材质维护,并且有可视化的编辑工具。文档完善。 |
defect | 入门相对较难,渲染效率低。只专注于图形,不包含声音、网络等模块,但留有接口,如有需要,可以添加第三方外挂库,如物理库、音频库等结合开发。 |
2、Irrlicht
name | Irrlicht |
Supported Graphic lib | OpenGL 、Direct3D |
Develop Language | C++ |
description | 著名的“鬼火”引擎 |
merit | 上手很快,易用性强,运行速度快,提供了可以在商业级的3D引擎上具有的动态的阴影,粒子系统,角色动画,室内和室外技术以及碰撞检测。现在网络上有很多Irrlicht的增强程序,可以拿来使用。 |
defect | 对BSP支持较为贫乏 |
3、Horde3D
name | Horde3D |
Supported Graphic lib | OpenGL |
Develop Language | C++ |
description | Horde3D is a small open source 3D rendering engine |
merit | 简单易懂,自带了场景编辑器,集成了简单的模型编辑,粒子编辑,动作编辑等功能 |
defect | 效率不是很高 |
4、Catcake
name | Catcake |
Supported Graphic lib | OpenGL |
Develop Language | C++,java |
description | Catcake是一款跨平台的Java 3D图形引擎,也有C++版本 |
merit | 有专门的android版本,易用性和运行性能上有出色的表现。 支持音频处理和视频播放。 |
defect | 文档不足 |
5、jmonkey
name | jmonkey |
Supported Graphic lib | OpenGL 、Direct3D |
Develop Language | Java |
description | JMonkey 3D 是一款用于java 3D引擎 |
merit | 封装了OpenGL,提供全性能的工具包,主要有图片解码器、文件解码器、GUI系统、粒子系统、物理系统、光照系统等,功能很齐全。 |
defect | JME对于OPENGL封装得太好, 以至根本找不到GL的痕迹, 很多底层优化无法修改。目前只支持opengl es 2.0 |
6、jPCT-AE
name | jPCT-AE |
Supported Graphic lib | OpenGL |
Develop Language | Java |
description | jPCT-AE是jPCT在Android平台上的移植版本,以java语言为基础 |
merit | 体积小,专门的Android移植版本,有着惊人的向下兼容性,可以运行在JVM1.1环境之中,因为jPCT内部提供的图形渲染 接口完 全符合所有的Java 1.1规范。 |
defect | Java编写,效率有待考量 |
7、min3D
name | min3D |
Supported Graphic lib | OpenGL |
Develop Language | Java |
description | lightweight 3d library/framework for Android using Java with OpenGL ES targeting compatibility with Android v1.5/OpenGL ES 1.0 and higher. |
merit | 专门的android 3d UI引擎,非常小巧,只有几百K。基于opengl es 1.x, 封装了opengl 的一些基本的绘图操作以及绘图管理和渲染操作。提供了一个活动类RenderActivity,上手容易。 |
defect | 功能相对简单。 |
8、gamine
name | gamine |
Supported Graphic lib | OpenGL |
Develop Language | Java |
description | 一款小型的java 3D引擎 |
merit | 专门为Android开发的引擎,体积小,调研容易 |
defect | 效率稍低 |
9、Alien 3D
name | Alien 3D |
Supported Graphic lib | OpenGL |
Develop Language | Java |
description | java编写的OpenGL ES接口的3D游戏引擎 |
merit | 3DS装载、2D粒子、原型插件,tiled地图、精灵动画 |
defect | 研究资料太少 |
上述列举了引擎的介绍,其中OGRE和Irrlicht是比较成熟的产品,是开源的3D引擎中使用比较多的,网上有较多的文档和使用经验。
另外引擎的选择,我个人认为重要的两点:
1、效率,算法是否足够优秀;
2、效果是否足够好,能不能达到你想要的绚丽效果,运行时是否清新等。
下面着重列举两个引擎做对比。(OGRE and IRRLICHT)
OGRE | Irrlicht | |
开发语言 | C++ | C++ |
易用性 | 门槛较高 | 易懂,入门低 |
效率 | opgl渲染较慢 | 较高 |
美观 | 渲染的效果很好,清晰, 视觉效果好 | 运动较流畅,视觉效果还可以 |
资料 | 很多,被广泛研究和移植, 有很多项目和经验可以借鉴 | 全面,很多成功开源的项目及经验 |
移植性 | 需要参考资料移植 | 专门的Android版,移植简单 |
使用率 | 很成熟,免费3D图形引擎 中评价最高,使用率广 | 成熟的引擎,使用率较广 |
纹理格式和场景格式 | lPNG, JPEG, TGA, BMP l3D Max, Maya, Blender | l PSD,JPG,PNG,TGA,BMP l3DS,OBJ,MY3D,CSM,DAE,DMF,MS3D, LMTS, MD2 |
附:各引擎的source地址:
•Irrlicht: http://irrlicht.sourceforge.net/
•min3d: http://min3d.googlecode.com/svn/trunk
• OGRE3D: http://code.google.com/p/gamekit/
•Catcake: http://www.oschina.net/p/catcake
•jPCT-AE: http://www.jpct.net/projects.html
•gamine: http://sourceforge.net/projects/gamine/
•jmonkey svncheckout http://jmonkeyengine.googlecode.com/svn/trunk
•Horde3D:http://www.horde3d.org/wiki/index.php5?title=SVN_Source_Instructions
•Alien: http://code.google.com/p/alien3d/source/checkout