首页 > 其他分享 >Unity遮挡剔除使用

Unity遮挡剔除使用

时间:2024-05-20 09:57:02浏览次数:23  
标签:遮挡 物体 Unity 烘培 Static 设置 剔除

(1)设置对象为遮挡物or被遮挡物 选中某个对象后,在其Occlusion窗口可以设置其Occluder Static和Occludee Static属性:

  • 遮挡物
通过勾选一个对象的Occluder Static 可将其设置为静态遮挡物。理想的遮挡物应该是实心的,体积较大的物体。 原则1:可能阻挡到其它对象的对象才应该被设置为遮挡物。一些远景物体不要设置成遮挡物,否则很可能会导致剔除数据成倍增长以及运行时剔除查询效率降低。另外半透明的物体也不应设置为遮挡物。   原则2:对于某些带类似小孔的物体(例如网,树叶茂盛的树木),可以不将其设置为遮挡物,这样可以避免得到不正确的结果。(smallest hole参数可以处理这种情况但是其值不宜设得太小)
  • 被遮挡物
通过勾选一个对象的Occludee Static(如上图)可将其设置为静态被遮挡物。   理想的被遮挡物应该是体积较小的,这样它被完全遮挡到的情况才会比较多,因此做遮挡剔除查询才比较有意义。但是如果将对象拆分得过小,也会导致遮挡剔除性能下降。   较大的物体不宜设成被遮挡物(例如在3dMax里合并了之后再倒入到Unity编辑器),但是请注意到被U3D做batch之后渲染的多个mesh在做遮挡剔除时还是会针对单个mesh分别进行,所以不受影响。   (2)烘培 在Occlusion窗口的Bake页面进行对场景的遮挡剔除数据的烘培。参见下图。   参数设置:   烘培参数的调整本质来说是剔除准确性和性能/效率的折中。在实践中,所示的三个参数值都应该从一个较大的值开始,不断调小,直到得到满意的结果。当你发现烘培时间过长或者烘培数据过大时,就应该尝试调大参数。

 

Smallest Hole 解释:如果场景中有带孔的物体需要能被视线穿透(例如墙上的洞, 房间的门),那么需要将Smallest Hole设置为小于孔的直径 原则:在不出现剔除错误(可见的物体被剔除了)的情况下,应该尽量将该值设大些。 建议值:0.05~0.50   Smallest Occluder 解释:顾名思义,就是场景内最小遮挡物的尺寸。设得过大会导致剔除成功率下降(但是应该不会产成剔除错误),过小会导致性能问题。 原则:设置为比Player高度略大的值。目前Player高度大概为1.8. 建议值:2~6   Backface threshold 解释:本参数的引入是为了减少剔除数据大小,另一方面,设置不当会导致剔除错误(可见的物体被剔除了)。因此,暂时请保持默认值100不变。                                          

标签:遮挡,物体,Unity,烘培,Static,设置,剔除
From: https://www.cnblogs.com/weigangblog/p/18201294

相关文章

  • 国内版Unity 2023编辑器无法切换到DX12模式的解决方法
    在“安装目录\Editor”里(也就是Unity安装的根目录)建立一个D3D12文件夹。去“安装目录\Editor\Data\PlaybackEngines\windowsstandalonesupport\External\AgilitySDK\x64”内,将两个文件都复制到D3D12文件夹下。根本原因是在整个2023TechStream里,国内版的Unity(后缀是f1c1的版本)......
  • Unity Draw Call
    什么是DrawCall简单来说就是CPU调用图形化接口如glDrawElement如何减少DrawCall方法1:使用Batchunity-batch将很多小的DrawCall合并成一个大的DrawCall。注意:此方法适用于静态物体,对于动态物体也适用,但是由于空间和时间的影响,效果一般。title:一些建议......
  • unity Scriptable object
    是什么?一堆我们定义的数据,方便我们之后进行初始化。[CreateAssetMenu(fileName="TestObject",menuName="ScritableObjects/TestObject")]publicclassTestObject:ScriptableObject{publicstringMyString;}此时我们可以批量创建多个类型相同,但是内容不同的......
  • unity的批处理
    1.批处理将多个drawCall操作合并为一个,减少cpu和gpu之间的通信staticbatch概念staticobject:非移动的对象---这些对象可以利用预计算信息减少资源的消耗只有相同材质的的物体才会被合并到一起进行渲染具体操作:将静态物体合并为一个(或多个)大网格,这个(或这些)......
  • unity transform and gameobj
    两者都可以直接创建gameobj两者之间不能相互转换两者可以通过属性得到对方transform.gameobjgameobj.transformInsatance实例化的时候,两者返回对应的属性如果经常改变transformer,就用transformer,如果常用setActivate这些方法则使用gameobj进行实例化......
  • CommunityToolkit从入门到精通(详细版)
    MVVM基础 Model:负责存储数据,以及对数据的处理。View:负责展示数据,以及与用户的交互。ViewModel:负责将Model的数据在View中显示出来,同时也负责将View中的事件传递给Model。可以说,ViewModel是Model和View之间的桥梁。组件模型(ComponentModel)ObservableObject......
  • Community Mvvm Toolkit常用组件的基本使用(第一版)
    一、组件ObservableObjectObservableObject实现了INotifyPropertyChanged和INotifyPropertyChanging,并触发PropertyChanged和PropertyChanging事件1publicclassUser:ObservableObject2{3privatestringname;45publicstringName6{7......
  • UnityShader数学基础篇
    MathfMathf和Math1、Math是C#中封装好的用于数学计算的工具类,位于System命名空间中。2、Mathf是Unity中封装好的用于数学计算的工具结构体,位于UnityEngine命名空间中。Mathf中的常用方法1.π-PIprint(Mathf.PI);2.取绝对值-Absprint(Mathf.Abs(-10.5f));//10.5p......
  • 如何优化Unity发布iOS编译出来的Framework文件过大问题
    1)如何优化Unity发布iOS编译出来的Framework文件过大问题2)ScriptableBuildPipeline打包ScritptableObject报错3)APK在OPPO上报编译错误4)如何在Sequence中模拟我的蓝图这是第385篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全......
  • IDEA社区版(IDEA Community Edition)创建Springboot父子项目
    1.因为社区办不支持使用springSpringInitializr的方式创建项目,但是我们可以考虑使用别的方式达到效果:创建方式有3种:第一种:使用https://start.spring.io/官方URL创建项目,再导入到IDEACommunityEdition(后面简称:ideaC)。具体使用自行百度。缺点:没办法自定义springboot的......