当前位置: 首页 > news >正文

unity_Occlusion_Culling遮挡剔除学习

unity_Occlusion_Culling遮挡剔除学习

文档:
https://docs.unity.cn/cn/2019.4/Manual/occlusion-culling-getting-started.html

没彻底搞明白,但是会用,虽然也不熟练

设置遮挡剔除

打开遮挡剔除面板

在这里插入图片描述

在这里插入图片描述

设置场景物体。设置为静态

在这里插入图片描述

设置场景

在这里插入图片描述

烘焙场景

在这里插入图片描述

运行查看效果

在这里插入图片描述

遮挡剔除面板参数

在这里插入图片描述

Objcet

点击一个模型之后Object 窗口可以有信息
在这里插入图片描述

Occluder Static(静态遮挡物)

如果游戏对象是动态的,这个游戏对象可以在运行时充当被遮挡物,而不能充当遮挡物。
这些游戏对象不会移动,但会阻挡后面的游戏对象
适合作为静态遮挡物的游戏对象包括中型到大型的实体游戏对象(例如墙壁或建筑物)。要被设定为静态遮挡物,游戏对象必须满足以下条件:

    具有 Terrain 或 Mesh Renderer 组件不透明在运行时不移动

Occludee Static(静态被遮挡物)

这些游戏对象不会移动,但会被静态遮挡物遮挡。
任何可能在运行时被遮挡的游戏对象都适合设定为静态被遮挡物,包括小的或透明的游戏对象。要被设定为静态被遮挡物,游戏对象必须满足以下条件:

具有任何类型的 Renderer 组件在运行时不移动

动态的遮挡物

如果游戏对象是动态的,这个游戏对象可以在运行时充当被遮挡物,而不能充当遮挡物。
要确定动态游戏对象是否充当被遮挡物,可以在任何类型的渲染器组件上设置 Dynamic Occlusion 属性。启用 Dynamic Occlusion 后,渲染器在摄像机的视图中被静态遮挡物 (Static Occluder) 阻挡时,Unity 会剔除渲染器。禁用 Dynamic Occlusion 后,渲染器在摄像机的视图中被静态遮挡物 (Static Occluder) 阻挡时,Unity 不会剔除渲染器。
在这里插入图片描述

与LOD
如果使用了 LOD 组,则 Unity 会使用静态遮挡物的基础细节级别游戏对象 (LOD0) 来确定要遮挡的对象。如果游戏对象的轮廓在 LOD0 和其他 LOD 级别之间变化很大,这个游戏对象可能不适合设定为静态遮挡物。

效果

动态遮挡物

在这里插入图片描述

在这里插入图片描述

遮挡者与被遮挡者

如果物体可以遮挡其他物体就是遮挡者,如果不想让遮挡其他物体就是被遮挡者。
在这里插入图片描述

在这里插入图片描述

遮挡区域

如果有一些地区需要细致的检查遮挡,则使用这个。
在场景中创建一个空物体,然后附加:Occlustion Area 设置大小即可,unity会细致的检查这个区域内的遮挡关系。
在这里插入图片描述

Bake

在这里插入图片描述

Small Occluder

设置阈值,当大于这个值的物体物体会被设置为 遮挡着,遮挡其他物体.
决定了单元格的大小,数值越小越细致,但是更加消耗性能
所以考虑使用“遮挡区域 ” 来绘制需要着重注意的区域,而不是调整小这个值。

Smallest Hole 最小洞

允许unity在遮挡剔除过程中忽略非常小的洞,比如透过门缝看不到屋内的物体,必须打开门或者这个洞足够大

Backface Threshold

背面阈值, 建议使用默认参数,渲染的时候显示背面的比例。

Visualization 可视化

在运行的时候可视化遮挡剔除的数据

Camera Volume 摄像机体积

在这里插入图片描述

Visibility Line

在这里插入图片描述

Portals

在这里插入图片描述

Occlusion Portal_遮挡入口

如果它是开放的,那么这个体积不会作为遮挡者起作用,而当我们关闭它时,一它就像一个遮挡者,并且可以遮挡其后的物体。

简单来说是:如果想遮挡 遮挡入口 后面的东西,就关闭,不想让其遮挡则开启。
在这里插入图片描述

遮挡剔除原理

遮挡剔除会在 Unity Editor 中生成有关场景的数据,然后在运行时使用该数据来确定摄像机可以看到的内容。这种生成数据的过程称为烘焙。

在对遮挡剔除数据进行烘焙时,Unity 将场景划分为多个单元,并生成描述单元内几何体以及相邻单元之间可见性的数据。然后,Unity 尽可能合并单元,以减小生成的数据的大小。要配置烘焙过程,可以在 Occlusion Culling 窗口中更改参数,并在场景中使用遮挡区域。

在运行时,Unity 会将这些烘焙的数据加载到内存中,并且对于每个启用了 Occlusion Culling 属性的摄像机,将会对数据执行查询以确定该摄像机可以看到的内容。请注意,启用遮挡剔除后,摄像机将执行视锥体剔除和遮挡剔除。

“遮挡剔除”过程可防止 Unity 为那些被其他游戏对象完全挡住(遮挡)的游戏对象执行渲染计算。

遮挡剔除的作用

防止无意义的渲染操作可以节省 CPU 和 GPU 时间。Unity 的内置遮挡剔除在 CPU 上执行运行时计算,这可能会抵消其节省的 CPU 时间。因此,当项目因过度绘制而具有 GPU 密集型特征时,遮挡剔除最有可能提高性能。
Unity 在运行时将遮挡剔除数据加载到内存中。必须确保有足够的内存来加载此数据。
当场景中一些界限明确的小区域被实体游戏对象彼此隔开时,遮挡剔除的效果最好。一个常见的例子是通过走廊连接的房间。

如果被剔除了是否可以运行代码?

在这里插入图片描述
在这里插入图片描述

在game 视图看不到,但是还是会运行代码。

相关文章:

  • 从两个 Excel 表格中提取相关信息,并根据学生的 学号 和 姓名 将第一个表格中的成绩数据填充到第二个表格中(附Python代码)
  • 什么是 JWT?它是如何工作的?
  • vue数组根据某些条件进行二次切割
  • 1.2.1 HuggingFists安装说明-Linux安装
  • 如何用Prometheus监控禁用了Actuator的SpringBoot?
  • 渗透测试--文件上传常用绕过方式
  • Python编码系列—Python责任链模式:打造灵活的请求处理流程
  • 鸿蒙HarmonyOS之封装Http请求工具类
  • Llama微调以及Ollama部署
  • MRC接收机
  • 【数字图像处理】小白也能懂,最浅显方式手撕直方图均衡化(附python实现)
  • python 02 List
  • 药物临床试验机构备案信息数据库查询方法(支持数据下载)
  • Git常用方法——详解
  • 防止电脑电池老化,禁止usb或者ac接口调试时充电
  • css选择器
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • jquery cookie
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Mac转Windows的拯救指南
  • SQLServer之索引简介
  • sublime配置文件
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue实战(四)登录/注册页的实现
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 包装类对象
  • 从setTimeout-setInterval看JS线程
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 算法-图和图算法
  • 提醒我喝水chrome插件开发指南
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 原生js练习题---第五课
  • kubernetes资源对象--ingress
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $.ajax,axios,fetch三种ajax请求的区别
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (四)Android布局类型(线性布局LinearLayout)
  • (五)Python 垃圾回收机制
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)Sublime Text3配置Lua运行环境
  • .bat批处理(一):@echo off
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net core 6 集成和使用 mongodb
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net 调用php,php 调用.net com组件 --
  • .NET 设计一套高性能的弱事件机制
  • .netcore如何运行环境安装到Linux服务器
  • .net网站发布-允许更新此预编译站点
  • /tmp目录下出现system-private文件夹解决方法