快速在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负两倍