|
|
经过几个月来的研究开发,今晚,我终于能把真正称得上符合BSP分割思想的技术展现出来,嗯嗯,这真是一个艰难的过程。
程序使用的是CS地图:cs_bloodstrike, 加载后,程序立即进行BSP分割,再自动生成入口 Portal, 上次。我也发表过一个关于BSP+Portal+PVS的演示程序,但存在这一个很大的问题,那就是入口生成错误,以至不可以使用在大的场景。而今,这个程序,完全有能力去加载大的室内外场景(注意:范围是 -9999 到 9999),并包括CS的室外场景。只要进行3DS格式转换。
我的程序的BSP范围扩大为 9999 ,而不是CS里面的地图生成器的 4096 ,为什么可以这么做,因为我在BSP分割的时候,为了达到大的精确度,使用了 double 类型进行部分计算。
还有比上一个程序改进的地方就是,程序中的入口生成算法。我想出来了一种分割入口三角形递归的方式,保证入口一定是凸的。上次的程序错误在于入口生成有可能是凹的,这样的话,在进行PVS计算的时候,发生错误。
这个程序没有包括PVS计算,我想过一两天就可以完成,只要把上次的程序代码稍微改动一下。
希望这程序能给正在写BSP代码的朋友得到些启发。 [em5]
QQ:444163200
E-mail: GreenLitchi@163.com
新程序和旧程序都在压缩包里:
操作:
A,S,D,W :移动方向
Q,E :上下移动
鼠标右键:隐藏面或PVS
鼠标左键:BSP叶子移动
|
|