最好的方法是什么?谷歌搜索给了我一些方法,但目前最好的是什么?我很高兴能够从Maya导出模型并在iPhone屏幕上渲染,但如果有渲染方法,那么我会被激发,然后支持缩放等等。
非常感谢,今天刚刚完成了我的第一个3D建模课程,我很兴奋!
答案 0 :(得分:5)
我刚刚为iPhone和iPad编写了一个功能齐全的模型查看器和操纵器。基本上,我只是编写了自己的文件解析器来存储顶点数组,然后在我的渲染循环中我只渲染数组。虽然二进制文件的读取速度比.obj文件快得多,但它还是比较直接的。这样,您可以打开任何文件,而不仅仅是“处理”文件。互联网上也有很多例子。
只需将顶点放入密集数组:
vertexX, vertexY, vertexZ, normalX, normalY, normalZ
这样你就有了一个浮点数的一维数组,但是像上面一样被映射出来。一旦你有一个浮点数组,它就很容易渲染。
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);
glColor4f(R, G, B, 1); //range 0-1
glDrawArrays(GL_TRIANGLES, 0, numVertices); //number of floats in array divided by 6
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
然后将其放入OpenGL-ES 1.1渲染循环中。让我知道这是否适合你。
为您澄清一下,如果您在文本编辑器中打开OBJ文件,它的布局如下:
list of vertices
list of texture coordinates
list of normals
list of faces
并且面部列表以相同的顺序引用其他三个列表中的索引。例如,一行可能如下所示:
f 16/4/1 4/4/4 1/1/1
表示面的第一个顶点引用顶点的索引16,纹理的索引4和法线的索引1。第二个索引引用顶点的索引4,纹理的索引4和法线的索引4等。然后,您只需要解析面并将不同数组中的正确值拉入包含顶点和法线的单个浮点数组中。面子指数。
答案 1 :(得分:1)
查看Pangea家伙的书。链接here。我不记得他[Brain]是否显示了阅读Maya或Alias的代码。无论如何,这是必读的。
[edit]他在第13章
中展示了如何阅读maya文件答案 2 :(得分:0)
好吧,除非有人有更好的方法,否则我会关注这篇文章:http://heikobehrens.net/2009/08/27/obj2opengl/。它涉及将模型导出为.obj,然后通过Perl脚本运行它以将其转换为.h的C结构。
答案 3 :(得分:0)