3d opengl Android中的复杂对象

时间:2011-04-28 08:27:17

标签: android opengl-es blender

我被赋予了在opengl android中制作一些复杂的3d对象的任务。早期我使用nehe教程只使用了opengl的原始对象。 我用google搜索,发现Blender用于制作3d对象,然后在android项目中导入。但我不知道怎么办?

3 个答案:

答案 0 :(得分:2)

一种简单的方法是以OBJ格式导出对象(它描述对象的顶点)。然后,您可以轻松制作自己的OBJ阅读器(或使用现有的阅读器)并将顶点传递给OpenGL。

否则,请不要重新发明轮子并使用已经为您执行此操作的库(例如libgdx)。

答案 1 :(得分:0)

  

......然后呢   在android项目中导入

实际上它通常不是导入的,而只是由目标应用程序从文件加载。 Blender有一些导出脚本,可以发出C代码,甚至可以写出OpenGL调用;不要使用它们,它们只会弄乱你的程序。

有一些很好的3D对象存储库,比如OpenCTM

答案 2 :(得分:0)

你需要的是一个代表你的顶点/法线的浮点数组,如下所示:

float [ ]  vertices = {
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
VertexX, VertexY, VertexZ, NormalX, NormalY, NormalZ,
..., ..., ..., ..., ..., ...,
};

每个面具有三个与之关联的唯一顶点线。一旦你从OBJ文件或你想要的任何格式构建了这个数组,使用你必须弄清楚的代码,你可以通过执行以下操作来渲染它:

glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPoitner(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);
glDrawArrays(GL_TRIANGLES, 0, numVertices);

请参阅此Wikipedia page on the OBJ format以获取有关如何布置obj文件的参考。一旦理解了格式,解析文件非常简单。