UnityZ-Fighting产生原因

Unity中的表现

Unity中表现为距离相机远的模型闪烁问题出现频率大,距离近的模型闪烁出现频率小。实际测试发现,在透视视图下闪烁问题会更多,在正交视图下闪烁问题会好很多,查阅一些资料发现,正交视图下深度值默认为1,透视视图深度值则需进行计算,因此透视视图下闪烁问题会很多;

Z-Fighting问题的产生

1.模型之间间距过小,导致在深度缓冲时有较小的精度差异,有时A通过,有时B通过。实际表现为模型表面的颜色闪烁切换;
2.相机渲染画面从透视视角转化为二维视角,中间需对透视视角下的深度值转换为二维视角下的深度值,一般来说的运算公式是除以深度值,得出的值是非线性的,因此会导致距离越远的目标转换后的深度值精度越低,反之则深度值精度越高;

解决方式

由于以上原因,因此可得出以下几种解决方式
1.模型与模型之间间距加大一些;
2.设置camera摄像机的near和far属性,实际测试发现通过加大near或调小near可以有效解决Z-Fight问题。调整far值意义在于当处在大场景,多模型时调小相机far值可以缩减需要渲染的远距离模型,因此可以起到缓解作用;
3.拉近需渲染模型与相机距离;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值