栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

深入了解Unity剔除(草稿)

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深入了解Unity剔除(草稿)

        剔除是渲染流程的一部分,也是渲染之前首先要做的事情,在Unity中提供摄像机视椎体剔除、遮挡剔除两种解决方案。这两种剔除检测都以摄像机为参考中心,而且每一帧都会执行剔除操作。剔除操作会检查场景中的渲染器,并排除那些不需要绘制的渲染器。

        默认情况下摄像机执行视椎体剔除,这个过程是排除那些不在摄像机视椎体范围内的渲染器。视椎体剔除不检查被渲染对象是否被遮挡,所以Unity会渲染那些最终帧中不可见的渲染器,仍然浪费时间渲染不可见的对象对于CPU和GPU是徒劳的。

        然而,遮挡剔除是Unity通过离线烘焙生成场景的有关数据,然后在运行时通过数据去分析渲染器的可见性,从而做到对可见的渲染器进行渲染。相应的代价是Unity需要更多的运行时内存来支持遮挡剔除功能。

概念

        遮挡剔除又分为静态遮挡剔除、动态剔除,主要的区别在于前者既可以同时作用于遮挡物也可以作为被遮挡物,而应用动态剔除的对象只能作为被遮挡物。其次,应用静态遮挡剔除的对象必须是场景中的静态对象,这意味着该对象在运行时不能移动,而动态剔除则不受此限制。再者,静态遮挡剔除会通过烘焙为场景生成分析数据,动态剔除则是在运行时根据对象轮廓和位置进行即时剔除操作。

静态遮挡剔除

        静态遮挡剔除只能应用于非运行时生成的场景对象,并且作用对象必须是静态遮挡物(Static Occluder)或静态被遮挡物(Static Occludee)其中一个,当然也允许一个对象同时是静态遮挡物和静态被遮挡物。

        应用静态遮挡物对象必须具备持有Terrain或Mesh Render组件、不透明、在运行时不移动。(提示:针对使用LOD的静态遮挡物,Unity会使用基础细节LOD0来作为静态遮挡物的轮廓,在该物体LOD0与其他LOD级别之间变化很大,那么会出现遮挡误差)

        应用静态被遮挡物对象必须具备持有任何类型的Renderer组件、在运行时不移动。

开始使用

1、我们在Unity工具栏中,从【窗口>渲染>遮挡剔除】菜单打开【遮挡】面板

2、在【遮挡】面板中切换到【对象】页签,并选中【Renderers】标签

3、在【层级】中选中需要设置的【对象】

4、在【遮挡】面板中,勾选Occluder Static(静态遮挡物) 和Occludee Static(静态被遮挡物)

5、在【遮挡】面板中点击【Bake】按钮,烘焙场景

6、最后在【Assets/Scenes/】目录下会生成一份【OcclusionCullingData(遮挡剔除数据)】

 效果

Unity遮挡剔除

动态剔除

        应用动态剔除的对象作为被遮挡物存在场景中,该对象必须具备持有任何类型的Renderer组件,可以是场景中物体,也可以是动态加载的Prefab,他们都可以应用动态剔除功能。

开始使用

1、首先确保你的场景烘焙过遮挡剔除

2、确保对象的Renderer组件勾选了动态遮挡选项

 效果

优化策略 按需分配遮挡物与被遮挡物

        遮挡物跟摄像机进行交互计算,而被遮挡物跟遮挡区域进行交互验证,他们协作完成了遮挡剔除功能。一个物体即属于遮挡物又属于被遮挡物,那么它会参与两种交互。

选择合适的遮挡物

        遮挡物的特征是大,足以称得上掩体,且可以帮助提升渲染效率。一般中大型的场景元素作为遮挡物,像山体、树林、房屋、车辆、墙体、巨型摆件等都可以作为遮挡物,具体还要参照游戏世界的设定。

        不恰当的掩体车辆,在《模拟城市》这样的游戏设定中,车辆就不适合做遮挡物,因为车辆相对于整个世界来讲,渺小而又密集。

        不恰当的掩体环境山脉,在诸多户外游戏设定中为了衬托场景气氛,在地图边缘通常会用环境山脉将地图围起来,然而环境山脉背后通常就是天空盒,没有可遮挡物体,那么将他作为遮挡物就不划算。

        不恰当的掩体户外的巨型雕像,例如树立在主城中的一尊巨型雕像,在各个视角下其背后的可遮挡物寥寥无几,那么将它设定为遮挡物显然有些得不偿失。

选择合适的被遮挡物

        场景中的挂件、摆件、NPC、玩家、粒子特效都可以作为被遮挡物,那么被遮挡物的特征就是小,但不聚集。

        不恰当的被遮挡物,例如陈列柜子中的古玩,每个格子中都摆放着一个古玩,如果将每个古玩都作为一个被遮挡物,那么显然会浪费CPU的效能,最好的办法是将陈列柜作为被遮挡物。

为摄像机选择合适的视椎体范围

        视椎体在剔除环节起到关键性的作用,根据应用场景选择是椎体可视范围是个不错的优化方案。

        例如在雾天、室内、地牢等场景选择短的是椎体,在户外场景根据需求选择较长的椎体。

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901993.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号