• 友链

  • 首页

  • 文章归档
h u a n b l o g
h u a n b l o g

欢

HI,Friend

01月
10
Unity

OcclusionArea遮挡

发表于 2022-01-10 • 字数统计 6298 • 被 761 人看爆

OcclusionArea介绍

遮挡剔除。通俗地讲,就是将距离相机当前位置最近的一组非透明物体完全遮挡(看不到)的物体,动态地禁用渲染(禁用渲染一些物体,游戏视图的渲染负担就会减轻,作品跑起来就会流畅一些),一般摄像机渲染先渲染远处的物体,后再渲染近处的物体

视锥体剔除

在Unity中3D类型的游戏,摄像机常设置的投影模式为透视投影(Perspective),它具有近大远小,有距离之分。而这种模式下,摄像机视野的空间形态是一个四棱锥,Unity称为“棱锥”,Unity默认情况下,只会渲染视锥体(视野内)以内的物体,一般情况下我们看不到,但运行时会自动启动

如下图
OcclusionArea01.png

视锥体剔除效果展示

取消勾选Occlusion Culling面板(这个面板就是遮挡剔除,调出这个面板的方式,可查看遮挡剔除创建过程)下的Occlusion culling,就变成视锥体剔除

OcclusionArea02.png

如图所示:视锥体移动前物体
OcclusionArea03.png
摄像机移过去后
OcclusionArea04.png

可以观察到视锥体外的物体没有被渲染出来

遮挡剔除

使用方法

1.设置摄像机的Occlusion Culling

勾选摄像机的Occlusion Culling

OcclusionArea05.png

2.打开Occlusion窗口

window->Occlusion Culling  或者window->Rendering->Occlusion Culling

OcclusionArea06.png

3.创建Occlusion Area

在打开的Occlusion窗口->Object->Occlusion Area->Create New Occlusion Area,即可创建,Hierarchy可看见

OcclusionArea07.png

4.设置Occlusion Area

Occlusion Area的大小范围就是遮挡的范围
返回Hierarchy进行设置

如下图:
OcclusionArea08.png

绿色区域就是设置的Occlusion Area的大小,也就是可以进行遮挡的范围
OcclusionArea09.png

5.对遮挡物进行烘培

这一幕和寻路好像😀

勾选所需要的遮挡物

设置它们为Static

OcclusionArea10.png

或者单独勾选Occluder Static和Occluder Static

Occluder Static:遮挡物
Occluder Static:被遮挡物
这两个最好都勾选

举个例子:

假如A B C三个立方体,排成一列, 摄像机在A的正前方,从摄像机的视角中看不到B和C,因为它俩被A挡住了。
如果这时候A是“遮挡物”,B和C是“被遮挡物”。那B和C就不会显示在场景中(不仅是摄像机看不见,而是完全不在场景中出现)。
但如果摄像机穿过A,而移动到B的正前方,B和C都会显示。为什么?因为B是“被遮挡物”,却没有被“遮挡物”挡住(此时作为遮挡物的A,在摄像机背面,并没有挡住B)
那C为何会显示呢?因为B只是“被遮挡物”,而不是“遮挡物”,所以它无法遮挡C。摄像机里看不到C,但C依然会显示在场景中。
如果此时把B同时勾选为“遮挡物”。那么C就不会显示了。

OcclusionArea11.png

对设置的static的遮挡物进行烘培

打开Occlusion面板->Blake。即可烘培。和寻路一样的😀

OcclusionArea12.png

6.打开Scene的Occlusion Culling

可在不运行游戏的情况下,查看遮挡渲染效果。和上面棱锥体遮挡观察一样

打开Occlusion面板

即可在Scene右下角上看到Occlusion Culling

OcclusionArea13.png

设置为Visualize

OcclusionArea14.png

勾选Occlusion Culling

勾选Occlusion Culling就是遮挡剔除,不勾选就是上面的棱锥体剔除
勾选Camera Volumes可查看摄像机的范围

OcclusionArea15.png

7.可以查看效果

点击摄像机(不需要运行哦),即可查看遮挡剔除渲染效果。记得要一直打开Occlusion面板或者Scene右下角的Occlusion Culling显示,否则没效果哦

如图所示:为移动摄像机前
OcclusionArea16.png

移动摄像机后
OcclusionArea17

遮挡剔除将会删除被更近的渲染器完全遮挡的渲染器。也就是说被遮挡物遮挡的事物不会被渲染出来。比如:你在室内,被墙遮挡(墙不透明),室外的事物就不会被渲染出来

OcclusionArea部分功能讲解

Occlusion面板

Oject选项卡

用以筛选 Hierarchy 窗口的内容。
比如选择Renderers,就会筛选包含Renderers组件的对象
选择Occlusion Areas筛选包含Occlusion Areas组件的对象,也可创建新的遮挡区域

OcclusionArea18.png
OcclusionArea19.png

Bake选项卡

可以微调遮挡剔除烘焙过程的参数

OcclusionArea20.png

  • Set Default Parameters:可将参数重置为默认值
  • Smallest Occluder:可以遮挡其他游戏对象的最小游戏对象的大小
  • Smallest Hole:摄像机可以看到的最小间隙
  • Backface Threshold:Unity的遮挡使用了一个数据大小的优化,通过测试背面来减少不必要的细节。100是最好

Visualization选项卡

当 Visualization 选项卡可见时,如果在 Scene 视图或 Hierarchy 窗口选择一个摄像机,则 Unity 将更新 Scene 视图,从所选摄像机的视角显示遮挡剔除的效果。

如下图:选择其他选项卡时,Scene试图变化
OcclusionArea21.png

选择Visualization选项卡时
OcclusionArea22.png

Occlusion Area组件

可以计算遮挡剔除系统中的视图体积,也是遮挡剔除功能实现的一部分

OcclusionArea23.png

  • Size:设置遮挡区域的大小,就是场景中的绿色区域
  • Center:设置遮挡区域的中心
  • Is View Volume:启用这个遮挡剔除效果才会启动。用于计算遮挡剔除系统中的体积

Occlusion Portal组件

用来实现Camera对密闭空间的动态可控性渲染
如:在室内的门窗上添加Occlusion Portal组件,设置好大小,就可以控制渲染室内的GameObject,打开门渲染,关门停止渲染。

OcclusionArea24.png

  • Open:如果启用此属性,Occlusion Portal将打开并且不会遮挡渲染器。如果禁用此属性,Occlusion Portal将关闭并且会遮挡渲染器。
  • Center:设置Occlusion Portal的中心。默认值为 0,0,0。
  • Size:定义Occlusion Portal的大小。

当前就写到这.......😀

参考

  • 官网-视锥体
  • 微信公号v2_zxw-Unity3d遮挡剔除(Occlusion Culling)优化【2019】
  • 官网-遮挡剔除
  • 威威猫新手上路-unity的occlusion area遮挡简述
  • 返回主页虚拟现实少年-Unity2018相机遮挡剔除总结(Occlusion Culling)
分享到:
向量
进制转换
  • 文章目录
  • 站点概览
欢

网红 欢

你能抓到我么?

Email RSS
看爆 Top5
  • mac系统版本与Xcode版本有冲突 3,815次看爆
  • JAVA_HOME环境配置问题 3,524次看爆
  • AssetBundle使用 3,269次看爆
  • VSCode配置C++开发环境 3,041次看爆
  • Lua反射 2,994次看爆

Copyright © 2025 欢 粤ICP备2020105803号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图