我被赋予了在opengl android中制作一些复杂的3d对象的任务。早期我使用nehe教程只使用了opengl的原始对象。 我用google搜索,发现Blender用于制作3d对象,然后在android项目中导入。但我不知道怎么办?
答案 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文件的参考。一旦理解了格式,解析文件非常简单。