首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Maya模型获取到iPhone中

将Maya模型获取到iPhone中
EN

Stack Overflow用户
提问于 2011-01-13 08:07:32
回答 4查看 2.6K关注 0票数 3

做这件事最好的方法是什么?谷歌已经向我展示了很多方法,但目前最好的方法是什么?我很乐意将模型从Maya导出并渲染到iPhone屏幕上,但如果有一种方法可以渲染它,然后支持收缩缩放等等,我会很兴奋的。

非常感谢,今天刚上完我的第一堂3D建模课,我很兴奋!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-13 09:23:52

好吧,除非有人有更好的方法,否则我关注了这篇文章:http://heikobehrens.net/2009/08/27/obj2opengl/。它涉及到将模型导出为.obj,然后通过Perl脚本运行它以将其转换为C结构的.h。

票数 0
EN

Stack Overflow用户

发布于 2011-02-25 23:39:06

我刚刚为iPhone和iPad编写了一个功能齐全的模型查看器和操纵器。基本上,我只是编写了自己的文件解析器来存储顶点数组,然后在我的渲染循环中只渲染数组。这很简单,尽管二进制文件的读入速度比.obj文件快得多。这样,你可以打开任何文件,而不仅仅是你“处理”的文件。在互联网上也有很多例子。

编辑:

只需将顶点放入一个紧密排列的数组中:

代码语言:javascript
复制
vertexX, vertexY, vertexZ, normalX, normalY, normalZ

这样你就有了一个一维数组的浮点数组,但是像上面那样被映射出来了。一旦你有了一个浮动数组,它就很容易呈现了。

代码语言:javascript
复制
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渲染循环中。如果这对你有帮助,请让我知道。

EDIT2:

为您澄清,如果您在文本编辑器中打开OBJ文件,它的布局是这样的:

代码语言:javascript
复制
list of vertices
list of texture coordinates
list of normals
list of faces

并且faces列表以相同的顺序引用其他三个列表中的索引。例如,一行可能如下所示:

代码语言:javascript
复制
f 16/4/1  4/4/4  1/1/1

这意味着面的第一个顶点引用顶点的索引16、纹理的索引4和法线的索引1。第二个索引引用顶点的索引4,纹理的索引4和法线的索引4,等等。然后你只需要解析这些面,并将正确的值从不同的数组中提取到一个浮点数组中,其中包含基于面索引的顶点和法线。

票数 5
EN

Stack Overflow用户

发布于 2011-01-13 09:52:30

查查盘古的人写的书。链接here。我不记得他的大脑是否显示了读取Maya或Alias的代码。无论如何,这是一本必读的书。

编辑他在第13章中展示了如何读取maya文件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4675475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档