在遊戲中存儲3D模型的最佳方法是什麼? 我在矢量中存儲: 矢量三角形(每個三角形包含texcords的數量,頂點的數量和法線的數量), 矢量點; vector normals; 矢量texCords;在遊戲中存儲3D模型,最好的方法
回答
在這種情況下,我不確定什麼構成「最好的方法」,因爲這將取決於情況,在您的問題中,它有些開放性的解釋。
如果您正在討論如何快速呈現靜態對象,您可以使用Display Lists進行很長的路要走。它們可以用於所有OpenGL調用一次,然後回想那些指令以在遊戲中使用時呈現對象。所有用於計算頂點位置,法線等的開銷只會在構建每個顯示列表時執行一次。缺點是如果你的模型經常變化,你不會看到太多的性能增益。
編輯:SurvivalMachine下面提到顯示列表已被棄用。特別是,它們在OpenGL 3.0版中被棄用,並且完全從版本3.1中的標準中移除。經過一些研究,似乎Vertex Buffer Object(VBO)擴展是首選的替代方案,儘管我發現許多來源聲稱性能不如顯示列表。
顯示列表已被棄用。 – SurvivalMachine 2010-05-29 13:45:44
@SurvivalMachine:我不知道。自從我做了任何grpahics編程已經有一段時間了。感謝您的提醒;我已經更新了我的答案。 – andand 2010-05-29 20:09:10
在我看來,與顯示列表相比,VBO的性能取決於視頻卡。我也做了一些搜索,幾次討論已經過去了幾年,並且指出當時的「新」卡開始看到維也納國際組織的表現比DL更高。無論如何,顯示列表的棄用是(IMO)遠離它們的充分理由,更不用說在DirectX中沒有相同的顯示列表,所以如果您想要抽象引擎以允許DirectX支持您將不得不轉移到頂點數組或維也納組織。 – Ricket 2010-05-30 00:14:22
我選擇從.ms3d格式導入模型,雖然稍後可能會重構,但我認爲它爲我的3D模型的數據結構提供了一個體面的基礎。
spec(C頭格式)是一個非常簡單的讀取;我用Java編寫我的遊戲,所以我簡單地移植了每個數據結構:頂點,三角形,組,材質以及可選的骨架動畫元素。
但是真的,模型只是頂點(或三角形)的三元組,每個頂點都有一個材質,對吧?首先創建這些基本結構,編寫一個繪製函數,爲參數提取一個模型並繪製它,然後添加您需要的任何其他功能。迭代設計,如果你願意的話。
現在我將我的三角形存儲在std :: vector上,但它工作得很慢:/ 我必須存儲在std :: vector上,beacouse我檢查與它們的碰撞,有沒有更好的方法然後向量? – piotrek 2010-05-30 12:31:52
我會使用一個常規數組。std :: vector會有開銷,因爲它意味着要容納經常改變的數據結構;但由於您只需加載一次數據,並且您應該能夠知道(或弄清楚)需要存儲多少個三角形,因此不需要矢量的額外功能。如果你真的想要,你可以加載到矢量中,然後在加載後將其複製到數組中。無論如何,循環訪問數組可能會爲您提供所需的額外速度。 – Ricket 2010-05-30 16:01:04
還要確保你正在進行更有效的碰撞,而不是僅僅檢查每幀所有三角形的碰撞。你應該做更高層次的事情,比如邊界框檢查,甚至是大場景中的四叉樹/八叉樹,只有那些測試是真實的,那麼你應該深入到只有碰撞網格的三角形。 – Ricket 2010-05-30 16:15:47
- 1. 最好的iPhone 3D遊戲引擎
- 2. 在C++遊戲中存儲所有實體的最佳方法
- 3. 最好的方法 - iPhone遊戲
- 4. 最好的方式來存儲瑣事遊戲數據?
- 5. 最好的存儲方法
- 6. 在Rails中建模遊戲匹配的好方法?
- 7. Android的3D遊戲,模型和模型動畫
- 8. 在WPF中將XNA遊戲與3D模型集成
- 9. 在Android的3D遊戲
- 10. 手動加載遊戲中角色模型的推薦3D模型類型?
- 11. 使用類方法在Python遊戲中存儲用戶值
- 12. 存儲大型2D遊戲世界
- 13. 哪種解決這種遊戲最好的方法是?
- 14. 存儲2D遊戲地圖的最佳方式
- 15. 存儲遊戲數據的最佳方式是什麼?
- 16. App Engine數據存儲模型的排名4人遊戲
- 17. 3D遊戲幾何
- 18. 在XNA之外加載3D模型遊戲類
- 19. 最好的方法來存儲三種類型的位?
- 20. 在Java中編程的3D遊戲
- 21. 未定義的方法`你好」爲遊戲化::用戶:模塊
- 22. 在iOS遊戲中播放聲音的最方便方法?
- 23. 如何讓我的3ds Max模型進入iPhone 3D遊戲?
- 24. 最好的方法來存儲服務器端的Java多層自上而下的遊戲數據
- 25. Flash遊戲數據存儲
- 26. 遊戲數據存儲
- 27. Facebook的Flash遊戲數據存儲方法
- 28. 拼字遊戲 - 最好的舉動
- 29. 保存等距遊戲數據的最有效方法
- 30. 最好的方法來緩存存儲在C字典#
「在遊戲中存儲3D模型?」:您正在談論的是:內存存儲(正在使用時)還是磁盤存儲(遊戲安裝後)? – SigTerm 2010-05-29 01:07:25
最好的方法完全取決於你的遊戲。如果你目前的格式適用於你的遊戲,那就去做吧。如果你在談論文件格式,那麼你可以使用一些標準格式,比如這裏提到的一些標準格式(http://stackoverflow.com/questions/585769/recommended-3d-model-type-遊戲人物角色模型加載手動)和[這裏](http://stackoverflow.com/questions/1488579/3d-model-format-for-games)。 – 2010-05-29 01:08:01