2012-11-28 31 views
26

如果你想:用於將3D模型導入OpenGL/C++項目的推薦文件格式和圖形庫?

  • 模型中的對象在3D編輯器,例如攪拌機,瑪雅等
  • 模型導出到數據/文件格式
  • 使用OpenGL模型導入到一個項目,C/C++

然後:

  • 什麼文件格式將你推薦出口,即簡單性,便攜性和兼容性(即普通/流行)?
  • 您推薦使用什麼圖形庫將模型導入OpenGL C/C++項目(即最好是開源)?
  • 此外,還有數據/文件格式還捕獲動畫,即「動畫模型」格式,以便動畫可以在3D編輯器中建模並以某種方式在代碼內部調用(例如,動畫序列中幀的可訪問性或其他一些保存/加載與時間變化有關的細節的範例)?

一般而言,我尋求簡單性作爲優先考慮事項,即幫助我開始將藝術和計算機科學的背景相結合。我是麻省大學計算機科學專業的同時,在我的大學參加平面設計選修課以及夏季/冬季課程期間波士頓藝術學院的課程,這是一種「僞」雙藝術專業。換句話說,我不是一個完整的新手,但同時我並不想要那些超級瘋狂的高級配置的選項,因此很難開始一個基本的示範項目;即作爲理解如何彌合這兩個世界之間差距的第一步,例如,創建一個以用戶可以與之交互的3D角色爲特色的程序。

+2

+1,非常好的問題。至於「也捕捉動畫的數據/文件格式」,[Alembic](http://alembic.io)就是爲此設計的。如果你使用Windows,祝你好運;-) – Cameron

+0

好的,我會檢查一下。 (通過命令行構建在Mac OSX上)謝謝! :D – Simone

回答

12

COLLADA(我在最後用「啊」來表示)和Assimp(正如那樣)。

所以,爲什麼COLLADA?簡單:

  • COLLADA是由Khronos(索尼專門)制定的開放標準。開放標準格式的美妙之處在於它是一個標準!您可以放心,標準兼容產品的任何輸出也可以被另一個符合標準的產品正確讀取。可悲的是,一些3D建模產品在他們對COLLADA標準一致性測量方面並不特別。但仍然可以放心:Blender,Maya,3ds Max以及3D建模中的所有其他大牌都對格式有很好的支持。
  • COLLADA使用XML。如果您計劃創建自己的讀者或作者,這使得它更簡單。
  • 補充: COLLADA是,我認爲,這是不依賴於特定公司的唯一格式。你知道,這對我們來說是一件很好的事情。
  • 附加2:據瞭解,COLLADA解析速度慢。確實如此。但想一想:所有其他非二進制格式(如fbx)也有相同的問題。爲了您的需要,COLLADA應該足夠了。
  • 另外3: COLLADA支持動畫!

對於進口商圖書館,我強烈推薦Assimp。爲什麼?

  • Assimp支持任何您可以想象的流行格式。它具有所有格式的統一界面,因此切換到另一種格式不會太痛苦。
  • Assimp是可擴展的。因此,您可以導入您的專有格式,並且不會修改您的代碼。
  • 其他4: Assimp是開源!讓我們支持開源軟件!
+0

Collada分析速度慢,特別是對於複雜的模型;) –

+0

@MichaelIV絕對如此。但爲了達到他的目的,科拉達比他所能要求的要多得多。 –

+1

所以在這種情況下,他也可以使用3D並使用lib3ds。快速和簡單.Collada是一種舊派;) –

5

首先,here你可以閱讀有關建議的模式加載lbs.Lib Assimp真的很不錯,並且支持多formats.For首選formats.Collada,我不建議,因爲這是XML(文本)的格式,這些格式分析速度很慢。 Obj格式也普遍存在,但同Collada一樣存在問題。如果你想編寫自己的解析器,它的結構非常簡單,但它仍然很好。但相反,我會建議3D是二進制的,儘管它不支持動畫。目前支持靜態網格和動畫的最流行的格式是FBX。您可以從Autodesk的download for free FBX SDK將其連接到您的引擎。我選擇FBX的原因是因爲SDK和格式都非常健壯。例如,在FBX中,您不僅可以嵌入幾何圖形和動畫,還可以嵌入場景對象作爲燈光,相機等.Autodesk文檔也非常好。 希望它有幫助。

+3

對於FBX建議。我在工作中使用過它,其他遊戲工作室也使用它。該SDK很好,支持很多事情。 –

+0

你爲FBX做了個好例子。我一定會探索FBX SDK和Assimp。另外,感謝您指出其他stackoverflow帖子。很有用。 :) – Simone

3

我會推薦使用您自己的自定義格式,基本上只是您的程序中使用的頂點緩衝區和索引緩衝區的二進制轉儲。 (在那裏使用d3d術語,我知道opengl具有相同的概念,但不記得它們是否具有不同的名稱)。

然後,我會使用assimp編寫一個單獨的程序,它採用幾乎任何格式並以自定義格式寫出文件。然後,您可以使用collada或whatver來存儲實際模型,但不能在運行時加載該格式的complixity和slowness。

+0

如果這樣做具有實際意義,也許這是將來要探索的事情。之前曾經走過這條路,也就是過去認爲建立我自己的圖書館是「一切」的最佳解決方案,但大多數情況下它不值得「重新發明輪子」,除非你是爲了實際目的而做這件事,現有的解決方案,當然這有助於在現有解決方案方面擁有某種體驗,從而在設計改進版本時爲決策提供信息。現在我贊成帕累託的原則,即80-20%的規則,而不是陷入完美主義。 – Simone