UE5.5 nanite细分会出现穿帮问题

附件中有对应样例,打开NewMap​即可,相应视角可以按0触发;

请问你说的穿帮是镂空吗?看了下问题出在这些镂空区域看到三角面反面了,把材质改成双面看上去就没问题了。

[Image Removed]能看到反面主要原因是你这个测试环境有些极端,Displacement贴图有些地方有极高的对比,导致几个像素的间距有非常大高度差,中间没有梯度过度。在理论情况下不会有问题,但因为即使做了Tessellation,三角面的密度也不是像素级的,默认是r.nanite.dicingrate 2,2个像素一个三角面。当被极高对比的Dispalcement置换时,垂直拉起的三角面非常狭长,导致有几率反面的面被绘制到前面,导致底部有些区域能看穿镂空。把r.nanite.dicingrate 1改小,增加三角面密度也可以让反面呈现的几率减小,反之增加Dicingrate三角面变得更加稀疏会让问题更加严重。

上面提到的方法不是说去改双面材质,或者增加Nanite Tessellation密度来解决问题,只是来验证产生问题的原因。而是尽量要避免这种极端的高度图,在制作的时候高度图看上去一般都比较柔和,有过度,可以参考Quxiel资产里带高度图的一些资产。

高对比高度图(人为锐化贴图会产生类似问题)

[Image Removed]

嗯嗯,我知道不应该用这种极端的高度图,我只是为了让问题更加明显,这次我换了个平缓的高度图,细分结果如下图:

[Image Removed]但是当我在0视角向上观察时,仍然能看到细分的穿帮问题,并且导致天空显示出现破裂痕迹;如下图:

[Image Removed]新的复现工程,我添加到了附件里,感觉Displacement Scaling中Magnitude过大就会出现问题;

我知道你说的“穿帮”问题了。应该是摄像机穿到模型下面了。在0位置创建一个摄像机高度是-38,但地面plane actor的位置是0,这可能就是造成问题的原因。Tessellation的Center=0.5,Megnitude又很大,导致虽然置换的面看上去都在摄像机之下,但Actor本身其实在摄像机上面。Center=0就没问题了,当然0时摄像机提高一些即可。

不过第一次描述的因为高度图对比强有限三角面拉升严重造成的镂空问题同样是使用上的问题,需要避免的,虽然这个不是一个原因的问题

Megnitude的值大于了摄像机的高度,它也会对cluster做膨胀,导致culling视觉上的问题。100的Megnitude是很极端的设置,如果需要同样的效果减小Megnitude,加大高度图的区间范围,或者倍增值。比如我看你DisplacementScale 0.2, Megnitude 100;同样效果也可以使用Megnitude 20,DisplacementScale 1,使用这组参数设置我本地没看到天空有问题。另外如果对象有Z轴的缩放也会倍增Megnitude,Megnitude尽量保持在较小范围,我认为10以上就算极端设置了。

另Tessellation不更新Collision,太大容易穿脚

我刚试了一下,让center=0,相机高度为23.7,此时相机在模型上面,也在actor上面,还是能看到我前面提到的破裂的问题。如附件中0视角所示

好的,已经跟对应人员沟通调整了;但我不明白的是,相机往下看是能看到正确的细分效果的,为什么往上看还有其他的细分mesh😂

好的,其实你给的第二个测试项目往下看问题比天空更严重,近处全是细小的镂空,我之前以为是这些问题。至于第三个测试项目天空部分的瑕疵简单看了下它大概率还和Sky Atmosphere的渲染也相关,但我觉没纠结的必要。

我之前有截帧看过,skyatmosphere是没问题的,是在nanite pass开始出问题,导致了后续lumen gi出现问题,然后将lumen gi合并到scene color时影响了天空,感觉官方真的可以深究一下这个问题😂

感谢你的分析和提醒