2011-04-28 90 views
0

我在opengl android.Earlier中給出了一些複雜的3d對象的任務。我只使用nehe教程在opengl的原始對象上工作。 我GOOGLE了,發現Blender是用來製作3D物體,然後它被導入到android項目中。但我不能得到如何?3d opengl中的複雜對象Android

回答

2

一個簡單的方法就是以OBJ格式導出對象(它描述對象的頂點)。然後,您可以輕鬆製作自己的OBJ閱讀器(或使用現有的閱讀器)並將頂點傳遞給OpenGL。

否則,不要重新發明輪子並使用已經爲你做了這件事的庫(例如libgdx)。

0

...然後 在Android項目

進口實際上它通常不是進口但目標應用程序簡單地從文件加載。 Blender有一些導出腳本可以發出C代碼,甚至寫出OpenGL調用;不要使用它們,它們只會搞亂你的程序。

針對3D對象存儲一些好的庫,例如OpenCTM

0

你需要的是代表你的頂點/法線,像這樣float數組:

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); 

看到這個Wikipedia page on the OBJ format參考如何obj文件被佈置。一旦理解了格式,解析文件就相當簡單。