Unity,3D渲染问题
Unity中的表现
Unity中表现为距离相机远的模型闪烁问题出现频率大,距离近的模型闪烁出现频率小。实际测试发现,在透视视图下闪烁问题会更多,在正交视图下闪烁问题会好很多,查阅一些资料发现,正交视图下深度值默认为1,透视视图深度值则需进行计算,因此透视视图下闪烁问题会很多;
Z-Fighting问题的产生
1.模型之间间距过小,导致在深度缓冲时有较小的精度差异,有时A通过,有时B通过。实际表现为模型表面的颜色闪烁切换;
2.相机渲染画面从透视视角转化为二维视角,中间需对透视视角下的深度值转换为二维视角下的深度值,一般来说的运算公式是除以深度值,得出的值是非线性的,因此会导致距离越远的目标转换后的深度值精度越低,反之则深度值精度越高;
解决方式
由于以上原因,因此可得出以下几种解决方式
1.模型与模型之间间距加大一些;
2.设置camera摄像机的near和far属性,实际测试发现通过加大near或调小near可以有效解决Z-Fight问题。调整far值意义在于当处在大场景,多模型时调小相机far值可以缩减需要渲染的远距离模型,因此可以起到缓解作用;
3.拉近需渲染模型与相机距离;