Android 3D引擎之min3D--支持材质和UV贴图的objloader

min3D是一个很小巧精炼的android 3D开发框架

主页:http://code.google.com/p/min3d/

源码下载:svn checkout http://min3d.googlecode.com/svn/trunk/ min3d-read-only


直接用Eclipse导入进来就可以运行了。

min3D基于android的opengl es 1.0做了很好的封装,所以如果要使用opengl es 2.0的话,可能自己还需要做些修改。

min3D是非常容易上手的,它自带了几个基本的物体的类,如Box,sphere, rectangle, cylinder等,

写个Activtiy继承min3D的RendererActivity

在initScene()回调中,添加一个光源

scene.lights().add(new Light());

然后new一个box,

_cube1 = new Box(.6f,.6f,.6f, colors,  false,false,true);

将box添加到场景中

scene.addChild(_cube1);

运行就可以显示出来了。

在updateScene()回调中可以做些旋转操作

_cube1.rotation().x++;
_cube1.rotation().z++;


这样一个可以转动的3D盒子就可以显示出来了,初学者很容易从min3D中找到3D的乐趣。


前些天大概看了下libgdx,libgdx是一个游戏引擎,封装的很全面,文件处理,输入控制,音频播放,模型载入,文字显示,地图压缩等都有做封装,而且开发出来的

游戏可同时用于桌面,android和网页。并且libgdx自带opengl es 2.0的库,在android1.5,1.6等还不支持opengl es 2.0的版本一样可以用opengl es 2.0来

做开发。libgdx同样也可以做2D开发。


比较起来,min3D简洁很多,相当于为android的opengl es开发,搭了个简洁易用的框架。但同时min3D也支持常用的obj,3ds和md2模型载入,而且支持的非常好,例如obj载入,min3D的obj loader支持材质和贴图,而且效率很高,libgdx的obj loader不支持材质和贴图,效率还不如min3D。

我做的那个茶杯3D模型有4700多个顶点和面,在libgdx中载入到显示出来需要7800多毫秒,而在min3D中只需要3000毫秒左右。但libgdx有个非常大的好处是可以提前把obj文件转化为libgdx中二进制的g3d格式,再把g3d格式的文件放到工程中,这样处理之后,载入g3d到显示只需900毫秒左右。测试这些时间,我用的是我的华为荣耀手机。

下图是min3D中显示的蓝色材质的茶杯(obj文件和mtl材质文件):

Android 3D引擎之min3D--支持材质和UV贴图的objloader_第1张图片Android 3D引擎之min3D--支持材质和UV贴图的objloader_第2张图片

注意:要显示颜色材质的话,需要加下面两句话:

objModel.colorMaterialEnabled(true); //打开颜色材质支持,默认是关闭的
scene.lightingEnabled(false); //关闭场景的光效,有光效,颜色材质没有作用


下面两幅图是min3D显示带贴图的茶杯(obj文件和mtl文件以及贴图图片)

Android 3D引擎之min3D--支持材质和UV贴图的objloader_第3张图片Android 3D引擎之min3D--支持材质和UV贴图的objloader_第4张图片

Android 3D引擎之min3D--支持材质和UV贴图的objloader_第5张图片这个是贴图图片

注意:贴图图片放到drawable目录下面,同时mtl文件中map_Kd cly.jpg这一行,后面的图片路径不要再有子目录。

贴图的映射方式只能用uv。


下面两幅图是有光效时的茶杯效果:

Android 3D引擎之min3D--支持材质和UV贴图的objloader_第6张图片Android 3D引擎之min3D--支持材质和UV贴图的objloader_第7张图片


同样,min3D也支持md2动画模型格式,载入显示都非常简单。


min3D自带了近30个例子,min3D的各种用法都包括进去了,使用都非常简单。但没有什么比较复杂综合一点的例子,像libgdx带的demo中带有几个现成的游戏的例子。


个人觉得在android中做简单的3D开发,min3D会是个不错选择。


做游戏开发,可能就需要像libgdx这种游戏引擎了,或者其他游戏引擎,如ogre,鬼火等。


值得一提的是在min3D的wiki上看到这么一段话:

Comment by [email protected] , Jul 12, 2010

I just realized this code is GPL'd so I can't use it for my non-free app. Do you plan to keep this license? Thank you for your hard work, whether I can use it or not.

P.S. I realize I can sell it as long as I provide source code, but as you know in the Android world that isn't workable; someone would simply compile and release a free version, probably within minutes.

min3D的作者回答:

Comment by [email protected] , Aug 2, 2010

Hello, the license has been changed to MIT, so you should be all good.

可见作者是非常厚道的。不过min3D似乎一年多没有更新了。


你可能感兴趣的:(Android 3D引擎之min3D--支持材质和UV贴图的objloader)