unity学习之遮挡剔除

这篇具有很好参考价值的文章主要介绍了unity学习之遮挡剔除。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本概念:

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

说白了就是如果摄像机看不见的物体,我就不用去管它了(渲染)。

遮挡剔除 我认为其实也是一个空间换时间的方法,做项目的时候可以结合遮挡区域、遮挡入口灵活运用。

遮挡剔除的效果展示:

unity学习之遮挡剔除

未开启遮挡剔除

unity学习之遮挡剔除 开启遮挡剔除 

遮挡剔除的工作原理:

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

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

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

如何使用静态遮挡剔除:

        使用遮挡剔除一定要在相机的Inspector窗口勾选Occlusion Culling

unity学习之遮挡剔除

  • 静态遮挡物限定:具有 Terrain 或 Mesh Renderer 组件、不透明、运行时不移动
  • 静态被遮挡物限定:具有任何类型的 Renderer 组件、运行时不移动

第一步设置被遮挡物和遮挡物:

静态遮挡物的所有游戏对象,设为Occluder Static,静态遮挡物的所有游戏对象,设为Occludee Static。

unity学习之遮挡剔除

 第二步烘焙遮挡数据:

在顶部菜单中,选择 Window > Rendering > Occlusion Culling 以打开 Occlusion Culling 窗口。 2.选择 Bake 选项卡。 3.在 Inspector 窗口的右下角,按 Bake 按钮。Unity 会生成遮挡剔除数据,将数据另存为项目中的资源,并将该资源与当前场景关联。

unity学习之遮挡剔除

第三部查看遮挡效果: 

  1. 1.确保 Occlusion Culling 窗口和 Scene 视图均为可见状态。当 Occlusion Culling 窗口可见时,Unity 在 Scene 视图中显示遮挡剔除数据和 Occlusion Culling 弹出窗口。
  2. 在场景中选择一个摄像机。
  3. 移动摄像机,观察 Scene 视图。当由于视锥体剔除或遮挡剔除而导致摄像机无法看到游戏对象时,您应该会看到游戏对象从视图中消失。
  4. 使用 Scene 视图中的 Occlusion Culling 弹出窗口来配置可视化设置。
  5. 如果需要,请调整 Occlusion Culling 窗口的 Bake 选项卡中的烘焙设置,然后重复烘焙过程。

unity学习之遮挡剔除

对动态游戏对象使用遮挡剔除 :

游戏对象可以是静态的,也可以是动态的(非静态)。静态游戏对象和动态游戏对象在 Unity 的遮挡剔除系统中的行为不同:

  • Unity 可以将静态游戏对象作为静态遮挡物和/或静态被遮挡物烘焙到遮挡剔除数据中。
  • Unity 无法将动态游戏对象烘焙到遮挡剔除数据中。动态游戏对象可以在运行时充当被遮挡物,而不能充当遮挡物。

如何启用动态遮挡剔除?

在对象的Inspector窗口勾选 Dynamic Occlusion,新建时默认已经勾选。

unity学习之遮挡剔除

 Tip:如果确定 Unity 绝对不应该将遮挡剔除应用于特定的游戏对象,则可以禁用 Dynamic Occlusion 以减少运行时计算并降低 CPU 使用率。

遮挡区域

使用 Occlusion Area 组件可以定义遮挡剔除系统中的视图体积。视图体积是摄像机可能处于运行时的场景区域。在烘焙时,Unity 在视图体积内生成更高精度的数据。在运行时,当摄像机位于视图体积内的时候,Unity 进行更高精度的计算。

如果尚未在场景中定义任何视图体积,Unity 将在烘焙时创建一个视图体积,其中包含标记为 Occluder Static 或 Occludee Static 的所有场景几何体。在大型或复杂场景中,这可能导致不必要的大量数据、漫长的烘焙时间以及资源密集的运行时计算。为了避免发生这种情况,请将遮挡区域 (Occlusion Areas) 放置在场景中,从而定义摄像机可能处于的区域的视图体积。

unity学习之遮挡剔除

 可以给一个空物体挂载Occlusion Area组件,记得勾选 Is View Volume。

遮挡入口

遮挡入口 (Occlusion Portal) 可以是打开或关闭状态。遮挡入口关闭时,它将遮挡其他游戏对象。遮挡入口打开时,它不会遮挡其他游戏对象。列如: 门打开或者关闭 

无需将 Occlusion Portal 组件置于其表示的游戏对象上。

在场景中设置遮挡入口:

  1. 选择场景中的合适游戏对象来充当遮挡入口。适合作为遮挡入口的游戏对象包括中型到大型的实体游戏对象(例如门)。
  2. 确保未将此游戏对象标记为 Occluder Static 或 Occludee Static。
  3. 将 Occlusion Portal 组件添加到游戏对象。
  4. 烘焙场景的遮挡数据。
  5. 确保 Occlusion Culling 窗口、Inspector 面板和 Scene 视图均为可见状态。
  6. 在 Scene 视图中,将摄像机移至遮挡入口正前方的位置。
  7. 选择具有 Occlusion Portal 组件的游戏对象。
  8. 在 Inspector 窗口中,开启和关闭 Occlusion Portal 组件的 Open 属性。在 Scene 视图中,观察遮挡剔除的差异。

unity学习之遮挡剔除

在运行时打开和关闭遮挡入口:

void OpenDoor() {
     // Toggle the Occlusion Portal's open state, so that Unity renders the GameObjects behind it
    myOcclusionPortal.open = true;
    
    // Call a function that plays a door opening animation, or otherwise hides the GameObject
    …
}

完结!文章来源地址https://www.toymoban.com/news/detail-407004.html

到了这里,关于unity学习之遮挡剔除的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习之详解常见梯度算法(概念、公式、原理、算法实现过程)

    目录 前言 一、如何实现梯度下降? 二、梯度计算 三、常见的梯度公式及梯度算法 常见的梯度公式: 1.标量对向量的梯度: 2. 标量对矩阵的梯度: 3. 向量对标量的梯度: 常见梯度算法: 四、常见梯度算法实现  1、批量梯度下降算法实现函数 2、随机梯度下降算法实现函数

    2024年04月15日
    浏览(34)
  • 机器学习之图像处理——基本概念知识介绍

    图像分析一般利用数学模型并结合图像处理的技术来分析底层特征和上层结构,到从而提取具有一定智能性的信息,其中对图片内容分析,图片内容识别和检测都离不开图像的分类。 图像分类目标:已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个

    2024年02月07日
    浏览(30)
  • 【1】深度学习之Pytorch——张量(tensor)的尺寸、储存偏移及步长等基本概念

    深度学习的基本概念 深度学习是一种人工神经网络的学习方法。它通过模仿人脑的学习方式来处理信息。深度学习的网络有很多层,每层都能学习到更抽象的概念。这种方法在语音识别、计算机视觉、自然语言处理等领域有很好的应用。 深度学习也有许多应用,这些应用往

    2024年02月02日
    浏览(32)
  • 第57讲:MySQL存储过程的概念以及基本使用

    存储过程指的是能够完成特定功能的SQL语句集合,当程序需要完成特定的功能时,就可以直接调用相关的存储过程来完成业务逻辑的实现。在存储过程中可以写入很多的SQL语句以及一些编程逻辑,例如if、while、case、变量等等,将这些SQL语句编译存储在数据库中形成存储空间

    2023年04月24日
    浏览(74)
  • Unity 动画系统基本概念

    在古代,一幅字画叫一帧,而在计算机中,每次渲染完毕一幅画面并显示出来,这一幅画就是一帧。 连续切换的帧就形成了动态的画面。每秒刷新帧的次数称为频率,单位是FPS(Frames Per Second,帧/秒),也可以简称为\\\"帧\\\"。传统电影每秒显示24帧就可以保证良好的动态效果。

    2024年02月06日
    浏览(30)
  • Unity物理系统基本概念

    前言: 物理引擎仅仅是对现实物理的一种近似模拟。无论是从运算精度和时间连续性都不够准确。目的只是为了让游戏具备令人信服的物理表现,增强游戏的表现力和用户的沉浸感。 刚体是让物体产生物理行为的主要组件。一旦挂载了Rigidbody组件,它就纳入了物理引擎的控

    2024年02月05日
    浏览(31)
  • 软件设计师学习笔记12-数据库的基本概念+数据库的设计过程+概念设计+逻辑设计

    目录 1.数据库的基本概念 1.1数据库的体系结构 1.1.1常见数据库 1.1.2分布式数据库的特点 1.1.3分布式数据库的透明性 1.1.4例题 1.2三级模式结构 1.2.1三级模式概念图 1.2.2例题 1.3数据仓库 1.3.1数据仓库的特点 1.3.2数据仓库的过程 1.3.3例题 2.数据库的设计过程 2.1设计过程概念图 2

    2024年02月07日
    浏览(55)
  • 【管理运筹学】第 8 章 | 动态规划(1,多阶段决策过程与动态规划基本概念)

    【管理运筹学】第 8 章 | 动态规划(1,多阶段决策过程与动态规划基本概念) 【管理运筹学】第 8 章 | 动态规划(2,动态规划的基本思想与模型求解) 【管理运筹学】第 8 章 | 动态规划(3,资源分配问题) 【管理运筹学】第 8 章 | 动态规划(4,生产与储存问题) 【管理

    2024年04月23日
    浏览(35)
  • unity四叉树和视锥体剔除

    这个最好还是看代码,项目有注释放在这里: GetbadEarlyup/Quadtree-cone-scene: 这是一个unity四叉树场景视锥体剔除的Demo (github.com) https://github.com/GetbadEarlyup/Quadtree-cone-scene 国内地址: Quadtree-cone-scene: unity四叉树和视锥体剔除的一个示例项目 (gitee.com) https://gitee.com/dontgetupearly/Quadtre

    2024年02月08日
    浏览(26)
  • unity 性能优化之合批和剔除

    批次对渲染的性能影响是比较大的,批次过多会导致cpu提交的次数过多,导致每帧渲染时间过长,所以我们需要对其优化,减少Bathches数量和SetPassCall次数。 批次合并的方法有多种,下面一一列出: 将相同材质的Mesh,合并为一个新的Mesh,这样一次渲染,最方便调节,虽然现

    2024年02月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包