2013-03-21 98 views
1

即時搜索相當長的時間來找到工作導入 Blender 3D .obj文件到Xcode使用它在iphone應用程序。從Blender加載.obj文件

我找不到描述如何在任何地方實現這樣的東西!

我不想使用任何引擎。我只想知道我必須完成 填充的基本步驟。

www上確實沒有任何東西。你可以找到2005年至2008年的文章 ,但那都不是最新的,沒有任何工作。

那麼,有沒有人知道如何做到這一點?

回答

0

查看libgdx的源代碼,並查看objloader。他構建了這個lib,以便能夠加載obj文件,並且應該可以跨多個平臺(包括ios)工作。從閱讀源代碼可以看出,爲頂點創建對象加載器非常簡單,但在開始關注法線和紋理座標時變得更加複雜。下面是一個簡單的算法,刮OBJ文件(我將離開解析爲讀者自己的研究相關的TPL文件):

  1. 讀取該文件的行,拋出與#(評論開始的所有行)
  2. 頂點看起來像:v 1.000 1.000 1.000,因此,如果行以'v '開頭,則將空行上的行分開並將3個浮點數存儲(並轉換爲浮點數)作爲頂點。
  3. 正常情況是這樣的:vn 1.000 1.000 1.000,所以,如果行以'vn '開頭,與第2行相同,但存儲爲正常。
  4. 紋理座標看起來像vt 1.000 1.000與可能的第[w]價值,拆分和存儲的方式相同的方式。
  5. 現在它變得棘手,有看起來像f 1/1/1 2/2/2 3/3/3這些描述3個頂點/ textcoords/normals(以該順序)的每個形狀的頂點(通常他們是三角形)索引的面部描述。關於這一點最難的部分是obj文件類型使用三個索引,而不是像opengl或direct3d之一。所以你將不得不圍繞你的頂點/座標/法線的順序進行洗牌,以便你可以利用來源的索引圖。

例如,基本上你必須通過改組訂單來使f 1/300/30 40/22/400 20/30/10變得更像f 1/1/1 2/2/2 40/40/40

This site給你一個這個相同的算法的想法,並向你展示了一個如何在高級算法中進行這個操作的例子(在頁面的中間部分進行下去)以及他引用你檢查的源代碼可以發現here

反正,讓我知道你是否需要任何幫助。 :)

編輯:

通過,如果你看到像這樣的方式:f 1//4 2//5 3//7不要驚慌,這是按預期有效的文件,只是表示(在這種情況下),有沒有質感COORDS