BSP树的自适应划分

来源:互联网 发布:illustrator mac下载 编辑:程序博客网 时间:2024/06/03 07:58

在BSP树的构造过程中,分割平面的选取决定的BSP树的性能.在场景划分过程中,若选取划分平面不当,对于一个相同的场景生成树的深度可能有很大差异,且最终分割出来的面片数可能是原来的2倍.减少分割,使分割平面两侧的平面数达到最大平衡,不仅可以减少场景树的深度,对场景划分的效率有明显提高.

       对于每层的分割,求取分割平面的方法可以通过比较两侧平面数和相交平面数,通过3个数值来求取最小阀值,同过选取小小阀值dif选取分割面

       dif = abs(n1 – n2) * a + n3 * b;

其中dif为一个分割平面选取优先阀值,n1为正向平面的数, n2为负向平面数, n3为相交平面数, a为可选正负面片数的重要性权值, b为可选相交面片数重要性权值.当然这两个权值是根据各人需要进行设置,一般来讲,分割面片数越大对后期渲染影响比两侧面片数平衡性的影响要大,所有一般情况下b的值会比a 的要大,b最小也应该设置为a 的2倍.而两侧数目的平衡性将会影响bsp的搜索长度,一棵趋向于平衡的bsp树会明显减少其搜索长度.

若直接随机选择划分的话,从简单的二维场景可以看出,划分的树的搜索长度达到8.

但加入检查后,搜索深度减少到4,优势十分明显.

当然上述公式中只是一个简单的权值比较过程,对每个引擎需要来设置两方面的权值,达到的可能并不是最优解.

原创粉丝点击