使用unity进行HTC VIVE(SteamVR)开发时,总结了几点:
边缘锯齿的浮动(闪烁)、材质表面的闪烁问题
产生原因:
在VIVE头显模式下,Unity对于薄边缘的抗锯齿效果不佳,并存在高光闪烁的缺陷。
如何解决:
方案1:
使用The Lab Renderer。(需要配合Unity 5.4.0版本使用,使用Unity5.4.4会不时出现屏幕闪动问题)
方案优点:
- 可以较大程度得对高光闪烁问题进行克服。
- 对于细的具有明显高光的金属杆的显示完爆其他的方案。
- 抗锯齿有较明显的效果。(注意不能再在摄像头上挂载别的抗锯齿方法)
方案缺点:
- 视线稍远处(3米开外)就有些模糊(相对于不使用The Lab Renderer的情况)
- 整体画面的清晰度不如Unity5.5下不使用The Lab Renderer。
方案2:
Unity 5.5,在Quality中设置Anti Aliasing 为4倍或者8倍;在CameraRig的Camera(eye)上挂载抗锯齿脚本(下载地址)Image Effects/Anti-Aliasing,开启SMAA(Subpixel Morphological Anti-aliasing)或者FAA,或者挂载Image Effects/Other/Anti Aliasing(该脚本中使用FXAA3 Console效果相对较好)。建议根据实际场景测试选择。
方案优点:
- 画面相对方案1更清晰。
方案缺点:
- 高光闪烁相较方案1更严重。(但如果不是非常光滑的金属,此时闪烁仍能接受)
- 细金属杆呈现比较明显的锯齿闪烁状。
材质表面存在闪烁的问题
问题原因:
unity的抗锯齿方案会导致高光部分闪烁。
如何解决:
使用 The Lab Renderer可以一定程度减小高光闪烁。
补充:UE4不存在此问题在于UE4默认使用TXAA,但TXAA的副作用是让画面变模糊。如果UE4将TXAA改为FXAA,一样闪烁。
草和树(即便是Assets自带),在头显中看会出现明显闪烁状。
如何解决:
不仅是默认的草和树,还有AssetStore上下载的SpeedTree也会出现这种情况。问题出在材质上。
解决方案是将材质替换为Standard Specular Material,树叶之类在Render Mode中使用Transparent或Fade,并且,树不能烘焙。(注意,如果使用Cutout,仍然会出现闪烁情况,不过这个闪烁与抗锯齿相关,且暂无法规避)(并且,如果使用透明的材质显示树叶,由于前后交错的树叶及不透明的树干在深度测试中的问题,树干经常会显示在树叶前面,出现错误)
如图是使用Nature材质的效果:
如图是Standard Specular-Transparent的效果:
如图是Standard Specular-Cutout的效果:



