快速在Android裏面實現3D人物顯示java
一直在研究Android上實現女僕美豆醬(我的助理)的研究,在製做完畢短信和電話提醒功能後,但願能夠實現3D人物的快速顯示python
至少能夠獨立顯示模型及其動做,主要是由於前面兩個功能製做的過程當中發現圖片太難獲取了,沒有美工沒辦法,故試試3Dandroid
主要的方向有兩個,一個是用C擴展庫調用,性能確定是很是棒的,可是我不太會,
只好現用Java封裝的3D引擎,OKgit
因而選擇了Min3D庫來作試驗品,最後的效果最低限度想達成軟件あんどろいどたんjp.co.topgate.charactor.android_tan的github
效果:windows
解包あんどろいどたん可知,這個軟件是在C開源擴展https://github.com/eaglesakura/jointcoding的基礎上寫的,坑爹的是網絡
這個庫我沒有徹底編譯成功,雖然庫開源,可是其使用方法,如模型的打包、動做等的載入等沒有徹底明白,因此在持續app
幾天的研究以後,只能暫時放棄了。svn
關於あんどろいどたん的資料:工具
https://play.google.com/store/apps/details?id=jp.co.topgate.charactor.android_tan
http://moeapk.com/info/jp.co.topgate.charactor.android_tan
https://github.com/eaglesakura/jointcoding
http://eaglesakura.hatenablog.com/entry/2013/02/24/230128
Min3D庫https://code.google.com/p/min3d/,基於Android OpenGL ES 1.0,沒有2.0,
1.先下載庫代碼:
svn checkout http://min3d.googlecode.com/svn/trunk/ min3d-read-only
下載這個也是折騰,最近網絡管理比較厲害仍是什麼,先是用TortoiseSVN下載失敗,再去Linux嘗試直接命
令行,總之仍是折騰到了代碼,下載失敗的同窗能夠找我
2.Sample
內部有兩個文件夾,sample和src,安裝其中編譯好的實例 min3dSampleProject1_020.apk ,真機運行看看
第一個是選擇界面,二是OBJ模型的載入,三是嵌入式窗口的帶入,之後也許能夠用來把人物載入到懸浮窗內部
四是MD2動畫格式模型,
在Eclipse裏面新建一個工程 com.example.mini3dobjtest 來測試這兩個模型,複製 ExampleLoadObjFile.java 和
ExampleLoadMD2File.java 到 mini3dobjTest\src\com\example\mini3dobjtest 路徑下,加入到 AndroidManifest.xml
複製min3d文件夾到你的工程文件夾裏面,分別編譯兩個模型載入的APK,Copy模型及其圖片資源到你的工程內部
![]()
運行之,成功
3.MMD模型的載入
Min3D庫只支持三種模型,3ds,Obj,MD2,要模型動做就須要把PMD格式轉換成MD2或者Obj
這裏用Blender建模軟件轉換模型,Blender如今最新版本2.7.1,不過我這裏用2.6.7版
解包blender_mmd_tools-0.4.5.zip,把mmd_tools文件夾複製到Blender路徑下blender-2.67-windows32\2.67\scripts\addons\
重啓Blender,在Blender中啓用插件,查閱資料http://tieba.baidu.com/p/1954890397 並參照視頻成功導入了MMD模型
導入步驟錯誤的,或者模型太大,Blender就會卡住,如何區分呢?2.6.7版本啓動Blender是有python窗口的,這個窗口裏面能夠查看載入以及導出的進度,故用此區分
導入模型的時候有幾個要點
1.在左邊的工具欄的MMD分欄裏面選擇GLSL模式
2.切換成日文版,工具什麼的不須要
3.去掉導入時左下角的Rename Bones重命名骨骼的選項
這裏用來實驗的是 nano改変亞北ネル PMX模型,Nano系列的模型都很是小巧,像這個只有50KB
導入模型以後右鍵選擇人物的骨骼,注意,一點要選擇骨骼再導入Vmd 動做文件!以前在這裏被坑了好久
VMD文件這裏也本身製做,由於導入其餘動做有名字匹配問題,在MikuMikuDance裏面載入模型,載入動做
再導出VMD動做文件,完畢以後用Blender載入vmd動做文件
4.OBJ MD2模型以及圖片的導出
Blender默認支持Obj格式的導出,我這裏用的導出選項以下,本身安裝本身的喜愛調節,不明白意思多調試幾回來理解
導出MD2模型先右鍵選擇人物模型,而後再導出,注意MD2支持的浮點數有限,數據過大的模型沒法導出,還有一點十
分重要,有時候導出沒問題可是沒有顯示,是由於大小問題,在代碼裏面帶入要考慮到,Blender導出OBJ MD2用了1000
倍,調成1倍,導出MD2模型動畫要勾選上 導出動畫 選項,導出的進度能夠在Python窗口中查看的到
5.模型在工程裏面載入
1.要注意的是OBJ在raw文件夾裏面裏面須要重命名,yabei.obj命名成yabei_obj,材質信息文件yabei.mtl命名成yabei_mtl
MD2文件不須要重命名直接使用便可
2.圖片必需要所有導出到drawable文件夾中,而且用小寫英文,因此你須要在Blender裏面弄好,或者手動編輯材質文件
內部記錄的圖片名稱成小寫英文,還有就是不要用絕對路徑,全部路徑一律轉換成文件名
6.編譯,結束
修改好Java文件中使用的文件名稱,編譯運行完畢,便可
以上工程的主要步驟就完畢了,實際會遇到不少錯誤、問題
1.一閃而過或者載入好久後彈出
模型載入失敗,頗有多是名字錯誤,或者貼圖錯誤,還有多是模型太大,載入失敗
要精確確認是哪一步載入錯誤,最快的辦法就是根據Eclipse給出的錯誤提示在載入前在Log輸出要載入的文件名字
根據錯誤回溯到模型載入的Min3D庫Java文件並在其中加入Log語句便可
2.文件啓動切換致使沒法啓動
在ExampleLoadMD2File和ExampleLoadObjFile之間切換啓動文件的時候,徹底卸載軟件後再安裝
鏈接Android真機運行 adb uninstall com.example.mini3dobjtest
3.屏幕一直黑,不顯示模型
考慮你模型的位置以及大小在修正,通常取 objModel.position().y = -2f 可讓人形模型在屏幕中間,即Y負兩倍