由于分辨率不高导致的纱门效应一直是让用户诟病的VR体验问题之一。这一现象是指用户的人眼会直接看到显示屏的像素点,就好比在纱门之后看东西一样。那么,如何才能消除纱门效应呢?
先说结论:这种纱门效应是由像素不足的情况下,实时渲染引发的细线条舞动、高对比度边缘出现分离式闪烁(sparkle distractingly)。
具体推导过程:
每个人的视场角都有些许差距,但大多都是水平210°,垂直100°。
pixel per degree(像素每度)——是指一度所包含的像素。
我们在3米距离内看电视、半米距离内操作电脑、一尺距离内玩手机,为什么看不出像素呢?
因为你视场角中的1°会看到60个像素,从而分辨不出像素感,60°才能达到『视网膜』级别的体验。
在下图中,每个格子代表水平视场角上的1°和垂直视场角上的1°的小方格。如果每一度上有60个像素,那么一个小方格是60×60个像素。
所以,水平的210°里,有210×60=12,600个像素,而垂直的100°里有100×60=6,000个像素。所以,理想的情况下我们需要12,600×6,000的画面。
表面上看,这个数字远远超过我们现在的普遍分辨率要求。
现在市面上常见的手机是1080P的,我们就以nexus5和nexus6为例。
我们将nexus5插入cardboard第一代:nexus5的分辨率是1920×1080,cardboard第一代的FOV是85°。分割一下屏幕,2×960×1080,计算出每一度长度内所含像素,960px/85°≈11.3像素每度,1080px/85°≈12.7像素每度,由此得出nexus5+cardboard第一代的像素每度是12°。
再算把nexus6插入cardboard第二代:nexus6的分辨率是2560×1440,cardboard第二代的FOV是100°。分割一下屏幕,2×1280×1440,计算出每一度长度内所含像素,1280px/100°≈12.8像素每度,1440px/100°≈14.4像素每度,由此得出nexus6+cardboard第二代的像素每度是13°……
如果这样算的话:
2013年nexus5的PPD12°,
2014年nexu6的PPD是13°,
看来每年增长一度?这样2062年岂不是可以达到目标?
结果,2015年nexus6P分辨率和nexus6一样?PPD还是只有14°!?纳尼,你耍我!!?
……距离60°的PPD,遥遥无期了!?
回到现在的情况,每度只有13-14个像素的后果是,会让VR中有很强的锯齿(aliasing),从而产生了很粗糙的边缘。又因为VR是实时渲染的,所以当你的头微微转动时,你感觉那条原本应该静止的细线(或者某些物体的边缘线)像在闪烁或者舞动一般。
而对比度很高的物体边缘会出分离式闪烁(sparkle distractingly)——你会看到一个像素在RGB几种高纯度颜色之间闪烁,特别是你用了抗锯齿(anti-alisaing)的时候,这种闪烁加剧。
通过上面的回答,得到的结论是,目前VR头盔的纱门效应依然很难解决。但通过眼球追踪等新技术,有望降低纱门效应。此外,如果VR游戏、应用足够有吸引力的话,也可能达到“用户沉浸进去就完全不会想起来”的效果。