2011-11-04 35 views
7

iOS的Quancomm增強現實(QCAR),使用OpenGL ES顯示3D模型。它讀取幾個文件:將3D Studio Max模型(3DS/MAX)轉換爲適用於iOS/OpenGL ES兼容格式的QCAR SDK?

  1. 頂點,紋理座標,指數&法線列表(在一個.h頭文件的格式,如Teapot.h)
  2. 紋理文件(PNG格式)
  3. 着色器文件(在FSH和VSH格式)

我的問題是,如何將3D Studio Max (3ds/max) file轉換爲vertices, texture coordinates, indices & normals list?另外,在轉換過程中,還可以根據3DS文件中的設置生成着色器文件嗎?

這些文件用於iOS版本1.0的QCAR SDK中。

作爲一個例子,該文件內容如下:

#ifndef _QCAR_TEAPOT_OBJECT_H_ 
#define _QCAR_TEAPOT_OBJECT_H_ 


#define NUM_TEAPOT_OBJECT_VERTEX 824 
#define NUM_TEAPOT_OBJECT_INDEX 1024 * 3 


static const float teapotVertices[NUM_TEAPOT_OBJECT_VERTEX * 3] = 
{ 
// vertices here 
}; 
static const float teapotTexCoords[NUM_TEAPOT_OBJECT_VERTEX * 2] = 
{ 
// texture coordinates here 
}; 
static const float teapotNormals[NUM_TEAPOT_OBJECT_VERTEX * 3] = 
{ 
// normals here 
}; 
static const unsigned short teapotIndices[NUM_TEAPOT_OBJECT_INDEX] = 
{ 
// indices here 
}; 

#endif 
+1

爲什麼「.3ds」文件? 「.3ds」是一種過時的格式。答案可以包括使用3dsmax本身,還是需要它在不使用3dsmax的情況下處理文件? –

+0

是的。 .3ds或.max文件很好。僅僅因爲仍然有很多免費的3D模型可供在線下載使用.3ds格式。 – Raptor

+0

如果可以使用3dsmax軟件,您仍然沒有回答。 3dsmax有幾種處理網格數據的方法,因此利用該代碼庫是有意義的。 –

回答

2

我相信你所尋找的,是在這裏:3DS to Header utility

在回答第二個問題時,如果有人編寫了3DS可以使用的所有可能的着色器,並根據材質屬性編寫了一些代碼來選擇和配置着色器,那麼3DS材質設置在理論上可以轉換爲着色器。但是,不,沒有直接/簡單的方法如何做到這一點。雖然,如果我記得正確的話,3DS沒有太多的材料選擇,所以可能沒有太多的着色器需要做到這一點。