如果你拿到的模型非常大,你没有进行缩放直接使用,或者美工把模型的坐标放在了世界边缘,你会发现这些遥远的物体(任意坐标超5000后就已经非常明显)的阴影会发生极其不自然的闪烁,但与此同时,如果你把模型归零,在世界远点的话,你会发现阴影又正常了
这是因为浮点数的精度下降,由于浮点数最多只能怪精确表示7位,保证准确表示6位(整数部分加小数部分一共的位数),如果世界坐标太大,Untiy对于阴影的计算就会出现偏差
这种情况可以通过修改光源的biss和NormalBias缓解
但是最有效的方法有两种
1是修改摄像机的近平面
一般来说如果场景很大,不要修改的过小,推荐在0.3到1 之间,这个方法是最有效的,在各个平台都有很好的效果,缺点是离相机过进的物体会看不到(在近平面以内了嘛)
2是去window/packageManager里下载一个Post Processing后处理组件,并为摄像机挂载 Post-process Layer,并启用里边的TAA抗锯齿,注意这个抗锯齿在Post-process Layer里,不在PostProcessVolume里,关于Post Processing的具体用法可以参考这位大佬的博客后处理组件详细使用
这个方法在pc上最有效,可以不调近平面,单靠抗锯齿就能有很好的效果,但是在webgl和移动平台上效果会大打折扣,只能作为近平面的辅助手段
此外,如果美工给你的模型太大,不建议你自己缩放模型,同样是因为浮点数精度的问题,可能会给项目带来不可预知的后果,建议直接让美工修改模型的比例尺