3D引擎是否需要分析地圖上的每個對象以查看它是否會渲染。我的理解是,線從中心投影的一個像素在視圖計劃,發動機會發現,與它相交的最接近的計劃,但是那不是意味着每個像素的引擎需要在地圖上分析所有對象,有沒有辦法限制分析的對象。3D引擎是否需要在渲染之前分析所有地圖對象
感謝您的幫助。
3D引擎是否需要分析地圖上的每個對象以查看它是否會渲染。我的理解是,線從中心投影的一個像素在視圖計劃,發動機會發現,與它相交的最接近的計劃,但是那不是意味着每個像素的引擎需要在地圖上分析所有對象,有沒有辦法限制分析的對象。3D引擎是否需要在渲染之前分析所有地圖對象
感謝您的幫助。
這樣的程序被稱爲frustum-culling algorithm。
你也可以在這裏找到更多關於它的信息: -
當心,你尋求的是不一樣的「occlusion culling」(另一個相關鏈接「Most efficient algorithm for mesh-level, optimal occlusion culling?)」,這是當一個對象被完全隱藏在另一個彼此優化。
注意,大多數遊戲引擎的對象渲染(很多三角形的包 - 通過draw calls,粗略地講),而不是通過跟蹤每個像素(ray-tracing),你可能會明白。
在大多數實時應用中,光線追蹤過於昂貴。
非常感謝你,但我認爲你錯過了我想要的東西,在做平截頭體剔除之前,我需要一些東西來限制錐體剔除的對象以提高效率。比如當截錐體剔除限制物體分析到截錐體體積內使得遮擋剔除速度更快時,我不能分析每次我進行截錐體剔除時地圖的所有對象。 – habibhassani
@habibhassani你的意思是一個算法/數據結構可以利用這個假設:前一幀和當前幀的結果(視圖內的對象列表)沒有那麼不同?如果是這樣,pdf鏈接可能會涵蓋你想要的。 – javaLover
這就是加速度數據結構的任務,如網格,kd-trees,邊界體積等級等。 –
@NicoSchertler謝謝,爲什麼不把它放在答案中!你得到我想要的東西 – habibhassani