OcclusionCulling研究

  • 蓝框框是什么?

场景中心创建一个1x1x1的Cube,

Smallest Occluder调整为0.25,


Smallest Occluder = 0.25

Bake后可以见到蓝框框


蓝框框顶视图

蓝框框透视图

可以看出0.25基本对应unity中1个单位
把Cube沿x方向移动0.5,
Bake之后观察蓝框框的变化


蓝框框顶视图

蓝框框透视图

可以猜测,系统以最少的方格数(0.25,即1个unity单位)包裹住Cube(遮挡体)并且这些方格是从场景中心向八方衍生的。

场景中放两个Cube,一个在中心,另一个距离中心不到4个单位,
bake后,直至此刻,SmallestHole一直维持0.25。


蓝框框顶视图

蓝框框透视图

如果把左边的Cube稍微向左拉,使其右侧占用的蓝格不到一半,Bake以后


蓝框框顶视图

蓝框框透视图

注意到有一段的方格合并成一个大格子了。

如果把右边那个也向右靠靠,bake后是这样


蓝框框顶视图

蓝框框透视图

又有一部分框框合并了。
我们可以试想,系统把遮挡物的边界扩大了0.5个单位,就可以解释上面的框框合并或者分割情形了。

这0.5个单位的猜想来自于Smallest Holde = 0.25


Smallest Hole = 0.25

前面猜测过,遮挡系统0.25为Unity的1个单位,那么smallestHole为0.25,也就是说系统会考虑遮挡物里面或遮挡物之间小于1个单位的空隙是看不穿的,换言之,就是这样的空隙是不透明的,相当于遮挡物的一部分了。遮挡物里面这种空隙图示中没有,但遮挡物于遮挡物之间的这种空隙,系统就把遮挡物扩大一半的空隙量来处理了,这一半的空隙量就是0.5个单位。

我们还原成一个Cube在原点,另一个Cube在x轴上偏移4的情景,然后把SmallestHole设置为小于0.25的任何值,哪怕是0.24,这也就意味着遮挡物会被扩大不到0.5,因此遮挡物被扩大后,也不会超出当前的包围框框,所以中间的大框框就没有被分割,或者说中间的小框框合并了。

Smallest Hole = 0.24
蓝框框顶视图

蓝框框透视图

遮挡系统

调整了下场景,bake后


蓝框框顶视图

蓝框框透视图

图中太阳是原点,
更夸张的场景调整后,


蓝框框顶视图

蓝框框透视图

可以发现系统对于如何分割空间,如何布置蓝框框是有一定讲究的,一时我也推测不出来,如有了解者,请留言。

下面简单猜测一下蓝框框的用途:

  • 框框把世界分割了
  • 视线能接触到的框框,框框里面的物体会作为潜在可见物体,否则一定是不可见物体
  • 框框越多,占用的存储资源越多,同时检测可见性消耗的资源越多,所以框框还是不要太多为好(这就是为啥系统会对某些部分的框框进行合并)

现在来看看黄框框
再检测遮挡效果可视化开启后


Visulazition

就会发现之前的蓝框框显示为一个整体的黄框框了。


非visualization下的蓝框框

visualization下的黄框框

但这也有个前提,就是相机的近裁剪面得处于框框范围内才能看到黄框框
近裁剪面在框框内

只有相机处于黄框框内,才会运作遮挡裁剪功能,下面看看裁剪效果
先把相机移出框框,然后放置一组常规(动态)对象


遮挡未生效

可看到包括遮挡物在内,所有物体都显示,但黄框框没了
下面把相机仅仅移进框框一点点刚让黄框显示的位置
近景
遮挡未生效

可以发现,所有物体依旧显示,观察近景能看到相机周围有一小圈灰框框。把相机拉近遮挡物一些,能看到另外一批灰框框,并且这个时候发现遮挡剔除起作用了,遮挡物后面的物体都不显示了。


近景

遮挡生效

仔细看的话,灰框其实是把蓝框框(SO=0.25)又二分了。为啥是二分不是四分或八分?这个其实由SH/2决定,现在SH是0.24,一半的话也近似是0.25的一半,所以就二分了。
把SH改成0.1,看看


SmallestHole=0.1

SH=0.1

把SH改成0.05再看看


SH=0.05

再看看0.025、0.0125、0.00625(0.005也行)
SH=0.025

SH=0.0125

SH=0.005

总之,SH越小,就越在更小的粒度上二分蓝框框。当在不同SH下拖动相机可以发现,确实SH越小,遮挡就越精确。这样的话,设置成0岂不是最好?


SH=0

SH=0

结果是,效果与SH=0.025一样的。
把遮挡系统的参数设置为默认看看
默认参数

蓝框框

黄框框

当前相机没有处于遮挡物相交的灰框框里,遮挡未生效
近观遮挡未生效时

相机近裁剪面进入遮挡物相交的灰框框,遮挡生效,周边灰框消失。
近观遮挡生效

稍微移动相机,让近裁剪面超出一点当前的灰框框,
超出一点灰框框

发现之前的灰框框们都显示出来了,而且遮挡效用不那么彻底了。


无效果

有效果

再次通过上面两张图,可以发现,相机只有在遮挡物最近的灰框里才能发挥裁剪作用
如果这样的话,岂不是遮挡系统没多大存在意义了?
下面我们实验一个封闭空间
封闭空间测试

封闭空间的8个面作为遮挡物,测试中的封闭空间是5x5x5。采用默认遮挡参数,烘培后
蓝框框

蓝框框

遮挡效果完美
完美遮挡

但如果不是封闭空间,比如去掉相机背面的面,遮挡效果就大大折扣了,只要比较靠近直接遮挡面的时候,遮挡效果才比较好。
处于直接遮挡面所在框框里
离得近效果好

离远一点儿,特别是快要脱出直接遮挡面所在灰框时,效果就开始下降了。


脱出直接遮挡面的灰框

效果差

如此看来,封闭空间,或者说比较封闭的空间是适合遮挡系统发挥的。

经过多次实验,对于5x5x5这种半封闭空间,SO在2.7到0.4都能得到比较满意到效果,这样到话当然选择2.7,它生成网格大,因此少,占用存储好计算消耗都少,取个整,我们选2.5吧。5x5x5对应2.5,那么1x1x1是否就对应0.5呢,是否有这个潜在最优比例呢?实验了一把,貌似还真是这样。

(待续~欢迎随时讨论)

参考
1 Unity Occlusion Culling 遮挡剔除研究

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 首先介绍下draw call(这个东西越少你的游戏跑的越快): 在游戏中每一个被展示的独立的部分都被放在了一个特别...
    杨夏MX阅读 13,305评论 0 17
  • 什么都不想要知道 不管你过得好不好 自私的想要 想要能够开心到老 你给的承诺都忘掉 连你的样子一并删了 反正我不是...
    意莫安阅读 120评论 0 0
  • FBV FBV(function base views) 就是在视图里使用函数处理请求。 在之前django的学习...
    Elvis_zhou阅读 416评论 0 0