2011-01-13 162 views
3

執行此操作的最佳方法是什麼?谷歌搜索向我展示了一些方法,但目前最好的是什麼?我很高興能夠從Maya中導出模型並在iPhone屏幕上呈現,但如果有方法呈現它,然後支持捏縮放等,我會很興奮。將Maya模型添加到iPhone中

謝謝很多,今天剛剛完成了我的第一個3D建模課程,我很興奮!

回答

1

檢查從盤古傢伙的書。鏈接here。我不記得他[Brain]是否顯示讀取Maya或Alias的代碼。無論如何,這是一個必須閱讀。

[編輯],他展示瞭如何在第13章

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渲染循環中。讓我知道這是否適合你。

EDIT2:

只是澄清了你,如果你打開一個文本編輯器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等。然後,您只需解析面並從不同數組中將正確的值拉到包含頂點和法線的單個浮點數組中面對指數。

+0

你願意分享你的代碼? – Josh 2011-02-25 17:12:47