我的任务是在 opengl android 中制作一些复杂的 3d 对象。之前我只使用 nehe 教程处理 opengl 的原始对象。我用谷歌搜索,发现 Blender 用于制作 3d 对象,然后将其导入到 android 项目中。但我不知道怎么做?
问问题
1191 次
3 回答
2
一种简单的方法是以 OBJ 格式导出对象(它描述对象的顶点)。然后,您可以轻松地制作自己的 OBJ 阅读器(或使用现有的阅读器)并将顶点传递给 OpenGL。
否则,不要重新发明轮子并使用已经为您执行此操作的库(例如 libgdx)。
于 2011-04-28T08:32:34.053 回答
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);
有关obj 文件的布局方式,请参阅 OBJ 格式的此Wikipedia 页面。一旦你理解了格式,解析文件就非常简单了。
于 2011-05-02T14:37:46.317 回答
0
...然后将其导入到android项目中
实际上它通常不会被导入,而只是由目标应用程序从文件中加载。Blender 有一些导出脚本,它们发出 C 代码甚至写出 OpenGL 调用;不要使用它们,它们只会弄乱你的程序。
有一些很好的 3D 对象存储库,比如OpenCTM
于 2011-04-28T10:24:24.153 回答