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