有没有办法将3D模型导入Android?

最后发布: 2008-10-15 11:17:09


问题

是否可以创建一个简单的3D模型(例如在3DS MAX中),然后将其导入Android?

android 3d opengl-es
回答

这就是我要去的地方:

  • 我用Google的APIDemos作为起点 - 那里有旋转的立方体,每个都由两个数组指定:顶点和索引。
  • 我使用Blender构建我的模型并将其导出为OFF文件 - 它是一个文本文件,列出所有顶点,然后根据这些顶点(索引几何)列出面
  • 然后我创建了一个简单的C ++应用程序,将其关闭并将其写为包含数组的两个XML(一个用于顶点,一个用于索引)
  • 然后将这些XML文件复制到res / values,这样我就可以将它们包含的数据分配给数组,如下所示:
    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • 我还需要在这里手动更改要绘制的面数: gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); - 您可以在OFF文件的顶部找到该编号(在本例中为212)

在这里,您可以找到我的项目页面,它使用此解决方案: Github项目> vsiogap3d


回答

您可以将其导出为ASE格式。 从ASE,您可以手动或以编程方式将其转换为您的代码。 在Android中,您将需要Vertex用于顶点数组和面向索引。 不要忘记你必须设置

gl.glFrontFace(GL10.GL_CCW);

因为3ds max默认为逆时针。


回答

你有没有尝试过min3d for android? 它支持3ds max,obj和md2模型。


回答

它应该是可能的。 您可以将文件作为数据文件与程序一起使用(因此它将被推送到模拟器并打包以安装到实际设备上)。 然后,您可以使用Android和GLES库在Java中编写模型加载器和查看器来显示模型。

但具体资源可能有限。 3ds是一种专有格式,因此第三方装载机供不应求,而且大多是逆向工程。 其他格式(例如blender或milkshape)更加开放,你应该能够很容易地找到在java中为它们编写加载程序的细节。


回答

不确定Android是否具体,但一般来说,您需要3DS Max中的脚本,手动从模型中写出您需要的格式。

至于Android是否存在,我不知道。


回答

您也可以使用3D Object Converter执行此操作

http://web.t-online.hu/karpo/

此工具可以将3ds对象转换为text \\ xml格式或c代码。

打开gl'c'输出的示例:

glDisable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glEnable(GL_NORMALIZE);

GLfloat Material_1[] = { 0.498039f, 0.498039f, 0.498039f, 1.000000f };

glBegin(GL_TRIANGLES);

  glMaterialfv(GL_FRONT,GL_DIFFUSE,Material_1
  glNormal3d(0.452267,0.000000,0.891883);
  glVertex3d(5.108326,1.737655,2.650969);
  glVertex3d(9.124107,-0.002484,0.614596);
  glVertex3d(9.124107,4.039649,0.614596);

glEnd();

或'c'输出

Point3 Object1_vertex[] = {
       {5.108326,1.737655,2.650969},
       {9.124107,-0.002484,0.614596},
       {9.124107,4.039649,0.614596}};
long Object1_face[] = {
       3,0,1,2,
       3,3,4,5
       3,6,3,5};

然后你可以用java代码替换这部分代码。

Ps此工具不是免费的,您只能在30天的试用期内使用它。 但是'c'代码和xml转换器可用于此期间。