由于Android手机都支持OpneGL ES,因此具有3D功能是Android手机的一大特性。然而,Android手机中3D应用开发的资料还相对较少,因此很多人都是看iPhone的3D教程来摸索Android手机上3D应用开发。近日偶然发现Android上开源的3D引擎min3d,体积非常小巧,只有几百K,基本实现了OpenGL ES上所有功能,同时还可以读取Obj和3ds文件,同时该项目要用相对自由的MIT许可模式,因此可以作为开发3D应用的基础。

首先到googlecode上下载该项目:​​http://min3d.googlecode.com/svn/trunk​​。建立新的Android项目,将min3d目录下src的内容拷贝到当前项目的源文件目录下,进行刷新(按F5),此时eclipse将重新编译整个项目,此时应该可以编译成功。

下面是建立第一个3D程序,首先建立一个新类,继承min3d的RendererActivity类,并将其加入到ApplicationManifest.xml文件中。代码如下所示:

public class Lesson01 extends RendererActivity {
     @Override
     public void initScene() { }

     @Override
     public void updateScene() { }
}

其中在initScene中添加所要显示的3D物体,在updateScene函数中处理3D动画。

我们在这个教程中要显示一个最简单的立方体,并且要让其旋转,所以添加如下代码,将立方体添中到场景中:

public void initScene() {
     scene.lights().add( new Light() ); // 添加光源
     cube = new Box(1.0f, 1.0f, 1.0f, null, false, true, false); // 显示灰色立方体,没有颜色和纹理
     cube.colorMaterialEnabled(false);
     cube.position().x = 0.0f;
     cube.position().y = 0.0f;
     cube.position().z = 0.0f;
     cube.rotation().x = 45.0f;
     cube.rotation().y = 30.0f;
     cube.rotation().z = 10.0f;
     scene.addChild(cube); // 加入到场景中
}

在min3d中,3D物体按场景进行组织。上面代码创建一个在原点的灰色立方体。

下面我们让它绕Y轴转动:

public void updateScene() {
     cube.rotation().y += 2.0f;
}