何為BVH?


 

總結一下最近學習BVH的知識。

BVH全稱:Bounding volume hierarchy。這是一種用來管理3D場景中物體的方法。

我主要是在光線追蹤算法中用這個方法來做加速,因為光線追蹤算法的計算要求非常高,稍微好點的畫質,至少要求每像素達到上千的采樣數量。簡單介紹下光線追蹤算法:從相機發射射線到場景中與場景中物體進行相交檢測,如果碰撞檢測成功,則根據物體的材質計算顏色,然后計算反射或者折射光線的方向,繼續跟蹤這條新的光線,直到達到最大遞歸深度或者沒有碰到任何物體。如果不采用BVH,那么每一條射線都需要和場景中的所有物體:球體、三角形等復雜物體進行相交檢測,而這個檢測時間是非常昂貴的,因為要計算直線和球體的相交,直線和三角形的相交等,這些計算都比較復雜,尤其是三角形這塊。相交檢測的時間是目前光線追蹤算法從理論到大規模實際應用過渡的主要瓶頸。使用BVH呢,簡單的來說就是通過一個簡單的包圍盒把物體包圍起來,射線和場景中的物體求交之前,會先和這個包圍盒進行求交,如果該射線沒有碰到該包圍盒,表明該直線一定不會和包圍盒里的物體相交;如果該射線碰到該包圍盒,那么再來計算射線是否和包圍盒中的物體相交。

最常用的一個bounding volumes 是 axis-aligned minimum bounding box,也就是通常說的AABB方法,就是用沿着坐標軸方向的能夠剛好把物體包圍起來的盒子(最小的盒子)來做bounding volumes。

而場景中有很多物體,采用BVH其實是用二叉樹的結構來管理場景。如下圖:

 

 

 

每一條射線來和場景中的所有物體檢測是否相交的時候,其實就是在遍歷這棵二叉樹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM