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 视图看不到,但是还是会运行代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/436711.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记(李宏毅老师2021/2022课程)【更新中】

目录 前言 课程预览 第一讲 机器学习基本概念 前言 本文主要记录在听李宏毅老师的课时对应做的课堂笔记 课程: (强推)李宏毅2021/2022春机器学习课程_哔哩哔哩_bilibili 课程预览 机器学习找函数 (找一个人类写不出来的复杂函数) 课程侧…

如何测试网络质量?

如何测试网络质量? 通过百度网盘分享的文件:winMTR 链接:https://pan.baidu.com/s/1Zfw4jciNhng35nfwBlF75Q 提取码:6622 –来自百度网盘超级会员V2的分享 下载WINMTR工具,在启动处输入www.baidu.com 判断方法&…

借助spring的IOC能力消除条件判断

shigen坚持更新文章的博客写手,记录成长,分享认知,留住感动。个人IP:shigen 在前边讲到了如何借助HashMap、枚举类、switch-case消除条件判断,这里讲到我们最常见的用spring的IOC能力来消除代码中的逻辑判断。其实大部…

2.点位管理开发(续)及设计思路——帝可得后台管理系统

目录 前言一、页面原型二、修改1、页面展示2、新增 3 、总结思路 前言 提示&#xff1a;本篇继续点位管理的改造 一、页面原型 页面展示新增 二、修改 1、页面展示 页面修改&#xff1a;修改标签换行、顺序顺序、地址过长时换行问题&#xff1b; <el-table v-loading…

JVM(HotSpot):字符串常量池(StringTable)

文章目录 一、内存结构图二、案例讲解三、总结 一、内存结构图 JDK1.6 JDK1.8 我们发现&#xff0c;StringTable移入了Heap里面。所以&#xff0c;应该想到&#xff0c;StringTable将受到GC管理。 其实&#xff0c;1.6中&#xff0c;在方法区中的时候&#xff0c;也是受GC管…

工单管理系统功能解析,企业运营效率提升利器

工单管理系统如ZohoDesk提供工单生成分配、跟踪、数据分析、客户服务管理及移动兼容等功能&#xff0c;提升效率、增强服务、便于监管和降低成本&#xff0c;是现代企业信息化建设的重要部分。 一. 工单管理系统一般有哪些功能 1. 工单生成与分配 工单管理系统的基础功能是创…

19 vue3之自定义指令Directive按钮鉴权

directive-自定义指令&#xff08;属于破坏性更新&#xff09; Vue中有v-if,v-for,v-bind&#xff0c;v-show,v-model 等等一系列方便快捷的指令 今天一起来了解一下vue里提供的自定义指令 Vue3指令的钩子函数 created 元素初始化的时候beforeMount 指令绑定到元素后调用 只…

Java增强for循环遍历集合删除指定值不安全问题

在这里因为remove方法有两种参数&#xff0c;一种是对象&#xff08;删除此元素&#xff09;&#xff0c;一种是Integer &#xff08;删除此下标对应的元素&#xff09;。恰好我对象类型就是Integer&#xff0c;所以或默认为删除下标对应元素&#xff0c;造成下标越界不安全。可…

Python的异步编程

什么是协程&#xff1f; 协程不是计算机系统提供&#xff0c;程序员人为创造。 协程也可以被称为微线程&#xff0c;是一种用户态内的上下文切换技术。简而言之&#xff0c;其实就是通过一个线程实现代码块相互切换执行。 实现协程有那么几种方法&#xff1a; greenlet&…

高校体育场小程序|高校体育场管理系统系统|体育场管理系统小程序设计与实现(源码+数据库+文档)

高校体育场管理系统小程序 目录 体育场管理系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道…

关于Elastic Search与MySQL之间的数据同步

目录 前言 思路分析 同步调用 异步通知 监听binlog 选择 实现数据同步 思路 运行项目 声明交换机、队列 1&#xff09;引入依赖 2&#xff09;声明队列交换机名称 3&#xff09;声明队列交换机 发送MQ消息 接收MQ消息 前言 Elastic Search中的酒店数据来自于MyS…

C++进阶(3): 二叉搜索树

二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一颗空树&#xff0c;或者具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有的节点的值都小于等于 根节点的值若它的右子树不为空&#xff0c;则右子树上所有的节点的值都大于等…

指针(4)

目录 1. 数组名的理解 但是有两个例外 sizeof(数组名)&#xff0c; • &数组名 2. ⼀维数组传参的本质 2.1指针打印数组 3.冒泡排序 4.二级指针 5 指针数组 5.1 指针数组模拟二维数组 1. 数组名的理解 前面数组中提到 数组名的地址就是首元素的地址&#xff0c; 代…

国庆节快乐

葡萄城在这里祝大家国庆快快乐&#xff1a; 10月葡萄城活动&#xff1a; 公开课 【从软件应用走向数据应用——葡萄城技术赋能数据挖掘】 新版本发布&#xff1a; 活字格 V10.0 Update1新版本发布

【cache】浅析四种常用的缓存淘汰算法 FIFO/LRU/LFU/W-TinyLFU

本文浅析淘汰策略与工作中结合使用、选取&#xff0c;并非针对算法本身如何实现的 文章目录 FIFOLFULRUW-TinyLFU实践与优化监控与调整 FIFO first input first output &#xff0c; 先进先出&#xff0c;即最早存入的元素最先取出&#xff0c; 典型数据结构代表&#xff1a;…

2024年10月1日历史上的今天大事件早读

989年10月1日 北宋政治家范仲淹出生 1814年10月1日 反法联盟各参加国在奥地利首都维也纳召开会议 1927年10月1日 苏联开始实施第一个五年计划 1930年10月1日 中国收回威海卫租界 1931年10月1日 日本人在东北拼凑伪政权 1938年10月1日 大型纪录片《延安与八路军》开拍 194…

65.【C语言】联合体

目录 目录 1.定义 2.格式 3.例题 答案速查 分析 4.练习 答案速查 分析 5.相同成员的联合体和结构体的对比 6.联合体的大小计算 2条规则 答案速查 分析 练习 答案速查 分析 7.联合体的优点 8.匿名联合体 1.定义 和结构体有所不同,顾名思义:所有成员联合使用同…

VS code user setting 与 workspace setting 的区别

VS code user setting 与 workspace setting 的区别 引言正文引言 相信有不少开始接触 VS code 的小伙伴会有疑问,user setting 与 workspace setting 有什么区别呢?这里我们来说明一下 正文 首先,当我们使用 Ctrl + Shift + P 打开搜索输入 setting 后,可以弹出 4 个se…

【2023工业3D异常检测文献】M3DM: 基于混合融合的多模态工业异常检测方法

Multimodal Industrial Anomaly Detection via Hybrid Fusion 1、Background 随着3D传感器的发展&#xff0c;最近发布了具有2D图像和3D点云数据的MVTec-3D AD数据集&#xff0c;促进了多模态工业异常检测的研究。 无监督异常检测的核心思想是找出正常表示与异常之间的差异。…

Android Studio Dolphin 中Gradle下载慢的解决方法

我用的版本Android Studio Dolphin | 2021.3.1 Patch 1 1.Gradle自身的版本下载慢 解决办法&#xff1a;修改gradle\wrapper\gradle-wrapper.properties中的distributionUrl 将https\://services.gradle.org/distributions为https\://mirrors.cloud.tencent.com/gradle dis…