请问一个bsp的问题,很初级那种

limiteee 2007-02-05 10:36:42
在使用bsp分割场景的时候

我遇到一个郁闷的问题

我场景里有那种圆形的柱子和很多倾斜的面,如果用这些面分割,bsp树会非常小而碎

还是说bsp就要这样的效果?
...全文
338 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
limiteee 2007-02-13
  • 打赏
  • 举报
回复
谢谢了,我大概了解了
limiteee 2007-02-12
  • 打赏
  • 举报
回复
楼上的,我还是不太明白,即使划分为凸体,也还是要分割面啊?

比如一个方形场景中有一个圆形物体,这个东西应该如何划分?
Silent_Spring 2007-02-12
  • 打赏
  • 举报
回复

BSP和碰撞检测是两回事.
我可以对一堆无序的三角形进行检测,寻找相交叉的三角形.但这样的效率低下,所以我预先把这堆三角形排序,再次进行碰撞检测,就会更有效.
举个例子:一个城市的水管爆了,修理工有两种方法检测坏点:
1.从水厂开始一米一米地检查
2.def search_bad(range):
if there_is_no_problem(search_bad(0,middle))
return search_bad(middle,range)
else
return BAD

后一种我就直说了吧,binary search,你说哪一种快.BSP也是这样的原理

BSP 只是使得碰撞检测的命中率更高
划分成凸体是为了碰撞检测更好写,这时候非凸体当然就应该进行分解

PVS:潜在可视集
一种CULL的方法,目的也是剔除你看不到的东西.有一些实现方法并不能把你不应该看见的东西完全剔除,但因为有Z-Buffer等一些硬件的因素帮助,所以这没有伤害

从BSP这一角度说,也是这样的思路,在当今的硬件环境下,就算没有完全按照glDepthFunc(GL_LEQUAL)的顺序绘制场景,图形也不会出错.

所以也就没必要花大把时间使BSP 的子叶完全分割成面(得不偿失)
limiteee 2007-02-12
  • 打赏
  • 举报
回复
主要是我不太明白,如果一个凹凸不平的物体,不分割,那不就会出现凹形空间了么?


你说的时间效率是怎么回事,bsp如何提高碰撞效率的?
limiteee 2007-02-12
  • 打赏
  • 举报
回复
请问,bsp下使用什么算法进行碰撞检测? pvs是什么技术?看了好多文章,pvs光告诉怎么做,不知道干什么的。。。
Silent_Spring 2007-02-12
  • 打赏
  • 举报
回复
对于物理引擎,不用划分就行了吧,我是这样觉得.
BSP不就是让搜索碰撞点的时间效率接近lg2(n),
圆形的物体,我感觉这对碰撞检测来说足够了

若是应用于渲染,用硬件的Z-Buffer,
就算你自己做Cull也不一定完全,比如说PVS
Silent_Spring 2007-02-09
  • 打赏
  • 举报
回复
原始的BSP理论就是有这样的缺点
但是随着ZBuffer的硬件加速的改善,3D程式不用再像以前一样使用BSP控制绘图顺序了
BSP转而应用于物理引擎等一些地方,它们不再进行针对面的剖分,而是把场景划分为一些凸体,
这样BSP的一些缺点就不必暴露出来了.
cywater2000 2007-02-09
  • 打赏
  • 举报
回复
同意楼上的

另外,即使quake3时代,复杂的mesh也是不用划分的,通常在最后加入到节点中
因为有硬件z-buffer,所以没有问题
limiteee 2007-02-07
  • 打赏
  • 举报
回复
自己顶以下
limiteee 2007-02-05
  • 打赏
  • 举报
回复
补充以下,这柱子很大,个人感觉不应该当作“物体”,排除在bsp之外

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧