2008-10-15 99 views

回答

33

這就是我到:

  • 我使用谷歌的APIDemos爲出發點 - 有在那裏旋轉立方體,各由兩個數組定義:頂點和索引。
  • 我已經用攪拌機建立自己的模型,並遠銷它作爲OFF文件 - 這是一個文本文件,列出了所有的頂點,然後在這些頂點(索引幾何)
  • 然後我創建了一個簡單的C方面面臨++應用程序將其關閉並將其寫入兩個包含數組的XML(一個用於頂點,另一個用於索引)
  • 這些XML文件然後被複制到res/values,這樣我可以將它們包含的數據分配給數組,如下所示:
    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • 我還需要在這裏手動更改要繪製的面數:gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); - 您可以在O之上找到該數字(本例中爲212) FF文件

在這裏,你可以找到我的項目頁面,它使用此解決方案:

http://code.google.com/p/vsiogap3d/

3

對Android沒有特別的瞭解,但一般來說,您需要3DS Max中的一個腳本,它可以手動將模型中需要的格式寫出來。

至於Android是否存在,我不知道。

5

應該有可能。您可以將該文件作爲數據文件與您的程序一起使用(因此它將被壓入仿真器並打包安裝到實際設備上)。然後,您可以使用Android和GLES庫在Java中編寫模型加載器和查看器來顯示模型。

雖然這方面的具體資源可能有限。 3ds是一種專有格式,所以第三方裝載機的供應量較短,而且大部分是反向工程。其他格式(比如攪拌機或者奶昔)更加開放,你應該能夠很容易地在java中爲他們編寫加載程序的細節。

11

您可以將其導出爲ASE格式。來自ASE的 ,您可以手動或以編程方式將其轉換爲您的代碼。 您將需要頂點數組和麪向Android中的索引的頂點。 不要忘記你必須設置

gl.glFrontFace(GL10.GL_CCW); 

因爲3ds Max軟件默認是逆時針方向。

+1

謝謝,這與我所做的非常接近 - 我用OFF和Blonder代替。 – 2009-04-12 17:38:08

4

你試過min3d爲Android?它支持3ds max,obj和md2模型。

+0

關於這個lib的好教程:http://www.mat-d.com/site/tutorial-load-a-3d-obj-model-with-min3d-for-android/ – Evgeny 2012-09-26 22:34:33

2

你也可以做到這一點與三維目標轉換

http://web.t-online.hu/karpo/

該工具可以將3DS反對文本\ XML格式或C代碼。

Open GL的 'c' 的輸出的實施例:

glDisable(GL_TEXTURE_2D); 
glEnable(GL_LIGHTING); 
glEnable(GL_NORMALIZE); 

GLfloat Material_1[] = { 0.498039f, 0.498039f, 0.498039f, 1.000000f }; 

glBegin(GL_TRIANGLES); 

    glMaterialfv(GL_FRONT,GL_DIFFUSE,Material_1 
    glNormal3d(0.452267,0.000000,0.891883); 
    glVertex3d(5.108326,1.737655,2.650969); 
    glVertex3d(9.124107,-0.002484,0.614596); 
    glVertex3d(9.124107,4.039649,0.614596); 

glEnd(); 

或 'c' 的輸出

Point3 Object1_vertex[] = { 
     {5.108326,1.737655,2.650969}, 
     {9.124107,-0.002484,0.614596}, 
     {9.124107,4.039649,0.614596}}; 
long Object1_face[] = { 
     3,0,1,2, 
     3,3,4,5 
     3,6,3,5}; 

然後,可以通過Java代碼只需更換該代碼的部分。

P.s.此工具不是免費的,您只能在30天的試用期內使用它。但'c'代碼和xml轉換器在此期間是可用的。

相關問題