Min3D测试-在Android里面载入MMD模型-快速3D模型显示测试-By黑月君
快速在Android里面实现3D人物显示
一直在研究Android上实现女仆美豆酱(个人助理)的研究,在制作完毕短信和电话提醒功能后,希望可以实现3D人物的快速显示
至少可以独立显示模型及其动作,主要是因为前面两个功能制作的过程中发现图片太难获取了,没有美工没办法,故试试3D
1.查看一下现有的Android 3D库
主要的方向有两个,一个是用C扩展库调用,性能肯定是非常棒的,但是我不太会,只好现用Java封装的3D引擎,OK
于是选择了Min3D库来做试验品,最后的效果最低限度想达成软件あんどろいどたんjp.co.topgate.charactor.android_tan的
效果:
解包あんどろいどたん可知,这个软件是在C开源扩展https://github.com/eaglesakura/jointcoding的基础上写的,坑爹的是
这个库我没有完全编译成功,虽然库开源,但是其使用方法,如模型的打包、动作等的载入等没有完全明白,所以在持续
几天的研究之后,只能暂时放弃了。
关于あんどろいどたん的资料:
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
http://d.hatena.ne.jp/eaglesakura/20100627/1277657026
トップゲート, 山下武志
2.Min3D测试
Min3D库https://code.google.com/p/min3d/,基于Android OpenGL ES 1.0,没有2.0,
1.先下载库代码:
svn checkouthttp://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文件中使用的文件名称,编译运行完毕,即可
3.扩展 错误问题集中
以上工程的主要步骤就完毕了,实际会遇到很多错误、问题
1.一闪而过或者载入很久后弹出
模型载入失败,很有可能是名字错误,或者贴图错误,还有可能是模型太大,载入失败
要精确确认是哪一步载入错误,最快的办法就是根据Eclipse给出的错误提示在载入前在Log输出要载入的文件名字
根据错误回溯到模型载入的Min3D库Java文件并在其中加入Log语句即可
2.文件启动切换导致无法启动
在ExampleLoadMD2File和ExampleLoadObjFile之间切换启动文件的时候,完全卸载软件后再安装
连接Android真机运行 adb uninstall com.example.mini3dobjtest
3.屏幕一直黑,不显示模型
考虑你模型的位置以及大小在修正,一般取objModel.position().y = -2f 可以让人形模型在屏幕中间,即Y负两倍
更多相关文章
- Android与物联网设备通信-网络模型分层
- TensorFlow在Android平台上的安装和应用
- android微信聊天记录导出到电脑【微信安卓版技巧】
- android线程 Handler Message Queue AsyncTask线程模型 线程交互
- 【转】UML建模與Android應用程式開發(上)
- android 消费者和生产者的队列处理模型
- [Unity3D]Unity3D游戏开发之从Unity3D到Eclipse
- Android判断网络是否可用并且开启网络
- android 事件模型