天天看點

3D引擎調研

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

繼續閱讀