我已經制作了一個基本的.obj網格加載器,可以加載模型並在OpenGL中對其進行紋理處理。但是,我的問題是,最好的解決方案然後把邊界框放在它們上面。例如,如果我加載一個模型是一個圓圈,那麼圍繞它的AABB會是一個可怕的解決方案?包圍盒和模型
我的想法是讓對象具有全局AABB框,然後該模型也有一個更完美的邊界框列表。
我的問題是,我應該使用什麼來製作更完善的邊界框的列表?
我已經制作了一個基本的.obj網格加載器,可以加載模型並在OpenGL中對其進行紋理處理。但是,我的問題是,最好的解決方案然後把邊界框放在它們上面。例如,如果我加載一個模型是一個圓圈,那麼圍繞它的AABB會是一個可怕的解決方案?包圍盒和模型
我的想法是讓對象具有全局AABB框,然後該模型也有一個更完美的邊界框列表。
我的問題是,我應該使用什麼來製作更完善的邊界框的列表?
不用擔心碰撞檢測中「更完美的邊界框」。這不是他們的觀點。你想要的是一個邊界元素 - 可能是它們的層次結構 - 它允許你輕鬆地測試交點並拒絕大量不需要執行基本交點測試的多邊形/元素。
我會說,從你的AABBs開始(甚至是邊界球,爲了簡單起見)。無論是自上而下,還是自下而上(使用適當的啓發式算法),都會從中構建一棵樹。您的頂級節點具有適合您整個模型的大型AABB。並且每個分支(帶有它的AABB)都包含一個更小的子網。你希望最終的樹能很好地平衡。
如果您注意到您的AABB導致問題(因爲可能性不夠),您可以隨時選擇其他邊界元素。 OBB或k-DOP也許。在我們的服裝模擬代碼中,例如k-DOP已被證明是非常合適的。
在任何情況下,您可能都想查閱「實時碰撞檢測」一書。它深入討論這個話題,如果你對這樣的話題感興趣,恕我直言,這是一個很好的資源。但首先要保持簡單。讓他們工作,然後擔心優化。
所有這些邊界卷的目的是什麼?剛纔使用軸對齊的邊界框有什麼問題? –
我在想,當你加載模型時,我可以在對象周圍創建一個通用的AABB。但是,爲了得到更好的碰撞檢測,在某些部分周圍還要有更小更詳細的邊界框。因此,例如,如果我加載一個球形的模型,然後放置一個AABB,碰撞檢測將不會如此完美。如果AABB是通用盒子,那麼如果與該盒子發生碰撞,它將檢查對象實際的碰撞盒。 –
那麼這與OpenGL有什麼關係呢? OpenGL不會執行碰撞檢測。 –