执行此操作的最佳方法是什么?谷歌搜索向我展示了一些方法,但目前最好的是什么?我很高兴能够从Maya中导出模型并在iPhone屏幕上呈现,但如果有方法呈现它,然后支持捏缩放等,我会很兴奋。将Maya模型添加到iPhone中
谢谢很多,今天刚刚完成了我的第一个3D建模课程,我很兴奋!
执行此操作的最佳方法是什么?谷歌搜索向我展示了一些方法,但目前最好的是什么?我很高兴能够从Maya中导出模型并在iPhone屏幕上呈现,但如果有方法呈现它,然后支持捏缩放等,我会很兴奋。将Maya模型添加到iPhone中
谢谢很多,今天刚刚完成了我的第一个3D建模课程,我很兴奋!
好吧,除非有人有更好的办法,否则我跟着这个帖子:http://heikobehrens.net/2009/08/27/obj2opengl/。它涉及将模型导出为.obj,然后通过Perl脚本运行它以将其转换为C结构的.h。
检查从盘古家伙的书。链接here。我不记得他[Brain]是否显示读取Maya或Alias的代码。无论如何,这是一个必须阅读。
[编辑],他展示了如何在第13章
我刚写完了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等。然后,您只需解析面并从不同数组中将正确的值拉到包含顶点和法线的单个浮点数组中面对指数。
你愿意分享你的代码? – Josh 2011-02-25 17:12:47