BSP虽然在现代游戏开发中出场机会越来越少,但是在visibility preprocessing, collision detection, polygon sorting中仍旧有良好的应用;
bsp把场景用多个splitter划分为多个区域,并存在树结构中,它有两个重要标准:
1,划分粒度:最好能够划分到polygon级别--精确剔除;
2,平衡数:splitter划分出来的树左右尽可能平衡--搜索时间最小且稳定;
bsp牛x之处在于其明确的划分机制和树状存储方式。
这篇文章中所要优化的就是其构建过程,使用bounding volume tree来使得划分过程变得更加迅速;
bounding volume tree以树的层次方式,以bounding volume为标准来组织场景,这样可以在合适的粒度上对model进行判别操作;
比如在构造bsp的时候,可以判别一个bounding sphere在splitter前边,那么可知其中所有polygon都在前边,如果相交,就顺着bouding sphere tree继续向下找;
听起来很想二分搜索,当然它们是一个东西,树状结构都会带来这种优势--树枝剔除带来的加速和编码便利;
树真的是牛x的数据结构,it's great;