即時通訊編寫遊戲引擎,我想知道我應該使用/加載/導出什麼3D模型格式? Obj似乎普遍且容易,但它似乎也不可靠,因爲大多數模型都包含錯誤,並且不會像其他格式那樣存儲在任何地方。我應該使用哪種3D模型格式?
似乎有專門針對遊戲的格式,例如MD2/3/5,但我不確定,如果我模型使用wings3d,除了純粹加載我需要的和支持的其他細節外,格式ID必須實現,比如我需要實現IK嗎?並且我可以使用腳本每片動畫而不是逆運動學和骨骼索具?
即時通訊編寫遊戲引擎,我想知道我應該使用/加載/導出什麼3D模型格式? Obj似乎普遍且容易,但它似乎也不可靠,因爲大多數模型都包含錯誤,並且不會像其他格式那樣存儲在任何地方。我應該使用哪種3D模型格式?
似乎有專門針對遊戲的格式,例如MD2/3/5,但我不確定,如果我模型使用wings3d,除了純粹加載我需要的和支持的其他細節外,格式ID必須實現,比如我需要實現IK嗎?並且我可以使用腳本每片動畫而不是逆運動學和骨骼索具?
Collada是由Khronos Group所擁有的3D模型(OpenGL的標準組織)
從Collada.org FAQ開放的基於XML的格式:
的COLLADA 1.4。X的功能集包括:
我使用我自己的二進制格式。我試圖使用現有的格式,但總是遇到限制。有些人可以解決問題,其他人可以在那裏炫耀。
Collada可能值得一看。我不認爲這是3D引擎可以讀取的格式。儘管如此,它仍然是一種通用的數據交換格式。
擔心什麼3D格式要支持之前,我想你應該專注於什麼功能,你計劃在你的引擎來實現。寫下這些要求,並從列表中選擇支持最多功能的格式......因爲您需要展示您的引擎(我假設您計劃讓引擎公開可用)。如果你的引擎有特定的功能(對遊戲引擎來說這總是一件好事),你甚至可能想要推出自己的格式。
之後,支持儘可能多的流行格式(.X,.3DS,.OBJ,.B3D)......您的引擎越容易訪問,越多的人希望使用它!
Collada是一個不錯的通用格式,但像Nils提到的那樣,它不是最終部署的理想格式。
很好地支持Collada,然後提供良好的轉換器到/從th其他格式(這可能是困難的部分)。這會給你最大的靈活性。看看C4 engine
Collada是偉大的,但它更多地生活在3D應用程序的一面。即它最適用於在應用程序之間傳輸3D數據,而不是從遊戲引擎中加載3D數據。你看過Lua嗎?它廣泛用於遊戲,因爲它的腳本語言既快速(非常適合遊戲),又非常靈活(可以用來表示您的引擎需要的任何數據)。
Collada的+1。你可能還需要一個自定義的本地二進制格式來實現真正的快速加載(通常只需要一個頂點/索引緩衝區數據的二進制轉儲,以及材料和骨架數據以及適當的衝突數據)。
遊戲行業的一個趨勢是支持在引擎的開發者版本中加載像collada這樣的格式,但也有一個工具鏈可以輸出用於發佈的優化版本。開發人員版本可以動態更新網格,爲藝術家保存更改,文件會自動重新加載,允許他們(幾乎)即時所見即所得的模型視圖,但仍提供完全優化的發佈格式。
我不會使用這種格式的實時圖形。 Collada旨在作爲圖形生產管線的中間格式。使用它來轉換爲更緊湊的二進制格式,或者您將整天等待加載。 – 2010-03-29 23:13:16
還要考慮到並非所有工具都支持整個COLLADA功能集。 – 2010-07-20 16:53:53
最後,我使用ASSIMP庫進行幾何加載,所以任何人都可以使用他們喜歡的東西,只要他們支持必要的屬性。 – 2010-11-21 00:39:49