2013-03-03 83 views
2

我正在使用八邊形軸對齊的邊界框來分割我的場景中的空間,我做了物理模擬。問題是,場景非常大(空間),我需要檢測大型物體的碰撞距離以及近距離的小物體。事情是,現場只有少數人,但相隔數公里,所以這意味着很多空的空間。所以基本上我浪費了2個RAM的RAM來存儲邊界框爲空扇區。我只想爲實際包含某些東西的扇區分配內存(讓它們成爲AABB的指針),但這意味着每幀需要數千個分配才能重新創建八叉樹。如果我使用一個池來對抗分配的放緩,這仍然意味着我將爲我的應用程序分配2個RAM。是否有其他方法可以實現這一目標?用指針製作的稀疏AABB樹?

+1

到底2GB只有幾個物體到底如何? – 2013-03-03 17:19:04

+0

這2GB來自八進制數百萬的AABB – 2013-03-03 17:33:37

回答

0

研究鬆散的八叉樹(用於處理多個對象)或更適應的系統,如圍繞每個對象構建的AABB樹,而不是整個空間中的一個。您可以使用整體AABB(根)執行一般距離/碰撞,並使用每個對象下的樹進行更精細的碰撞(如果需要這樣的分辨率,最終會進行光線三角交叉測試)。 AABB樹的唯一缺點是,如果對象旋轉,則需要重建樹(可以自適應地縮放和轉換AABB樹)。