最近由於工作需要,對支持Android的一些開源3D引擎做了調研,結果如下:
1.Ogre
十分強大的一款3D引擎,號稱工業級標准的開源項目,不僅可以用於游戲,還可以用於其他和3D相關的軟件。大多數該有的功能都支持。Ogre只專注於做3D引擎,一些3D游戲中的常用功能例如:音效、碰撞/物理系統等都不支持。
優點:學習資料多,性能屌炸天,我試着運行過提供的sample app,效果非常棒,同時還能保持非常高的幀率。
缺點:C++編寫的,想在Android系統上玩起來,自己要做不少封裝的工作(sample提供的方法是用native activity,這個完全沒有普適性),而且在Android項目中調試C++代碼也非常不方便。庫文件比較大也是個問題,雖然采用的是靜態鏈接,但是一個只顯示一張圖片什么都不干的sample需要的so庫就有7m多。另外,android平台的相關資源非常少。
2.JPCT-AE
純Java編寫的一款3D引擎,JPCT是PC版,JPCT-AE是專門針對Android平台的版本。
優點:庫很小,核心庫只有幾百kB。純Java編寫,不用自己搞接口封裝了。另外,結合一個叫Bone的插件,可以支持骨骼動畫。
缺點:效率比較成問題,大一點的模型,顯示時幀率會比較低。另外,支持載入dae文件的接口類有bug,有時會解析出錯誤的骨骼或者動畫。
3.jMonkey
與其說是3D引擎,jMonkey更像是游戲開發引擎,並且還是跨平台的。只要下載了它的SDK,把需要的插件安裝好,就可以做到一次編寫,多個平台部署了。
優點:做的很成熟,文檔也不少。適合3D游戲開發者。編寫的App可以先在pc上運行調試,再生成android版本,這點很方便。
缺點:對OpenGL封裝的太好了,很難做底層操作。甚至連Android上面開發游戲都有繼承自Activity的類支持,雖然省事,但是有點太自成一體了,自由度相對下降了不少。
用C++編寫,功能很強大,支持多種3d模型格式,更像是一款3d游戲開發引擎
優點:跨平台,java編寫,很適合游戲開發者。
缺點:和jMonkey一樣,封裝的太好了,自由度低了一些,對於不是做游戲的3d開發者,可能不太適合。
5.bonzai
java編寫,功能很強大,支持多種3d模型格式,文檔也比較全
優點:非常靈活,既可以作為整體,使用bonzai提供的一些framework,也可以不用framework,把它當作插件一樣使用。
缺點:liciense不是很好。用於開源、免費的項目沒問題。用於商業用途的項目需要和bonzai的開發者聯系,估計是要收取一定費用的。
6.其他
除了上面的,其實還有很多款可以在android上使用或者很容易移植到上面的3D引擎,其中:
irrlicht據說很強大,這個我沒有深入調研過。
而下面的這些:
ardor3D
alien3d
catcake
......
由於太小眾、功能太少、資料不全或者處於不再維護狀態,就不介紹了。