性能优化 可见性剔除学习 空间分割术,包围盒检测,遮挡检测

可见性检测是为了从场景物品开始 尽可能多的去除不可见物体

可见性层次:像素,三角形,物体,装满物体的房间,有多个房间的楼房

关于像素,三角形,物体的检测:

包围盒检测(物体级):

基本思想:包围盒不可见则 三角形和像素一定不可见
可见再去判断三角形可见 再去判断像素可见
包围盒检测方式:基于视锥检测包围盒(视锥体内外检测和投影矩阵)
视锥体内外检测:
把点和面转到裁剪空间
依次检测包围盒的8个点对视锥体的6个面进行内外判断
比较大的缺点是不能检测特殊位置的物体 如下图右上角的

但这类物体不会太多 当然可以使用投影矩阵的方式进行裁剪 但投影矩阵的裁剪方式太耗时了? 不如直接渲染出来可能还快一点(比起用投影矩阵的方式)?

遮挡检测(像素级):

判断包围盒是否被其他物体遮挡是非常困难的 最好的方式就是用 深度测试来做检测 但这类检测依然是消耗太高 最好在之前就可以把物品剔除出去 下面介绍空间分割术

空间分割术(空间级物体房间,楼房 ):

直接对空间进行分割 怎么划分空间 用物体数量来划分
超过一定数量就划分出来一个空间 最简单的方式就是动态四叉树结构
当当前空间超过一定数量时就对该空间进行划分
动态四叉树结构(用平行轴的方式分割),
二叉空间分割树BSP(任意方向的线分割):
经典BSP:分割所有物体 如果物体处于两区之间则直接把该物体分割为两部分
但这样做又不利于成批提交三角网格(合批)所以最好跟节点也行存储物品 当物体在中间时 不把该物体归类到叶子节点

做优化的思路大概可能就是先
用空间分割术判断空间
再用包围盒进行物体级别的判断
再用深度测试进行像素级别的检测

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值