|
文/胡痴儿2.0
在上篇《深度感知在VR游戏开发中的运用:双眼深度暗示》中谈到了双眼深度暗示,下面我们来讲讲单目是如何判定深度的——
单眼深度暗示
1、accommodation→调整焦距
动眼神经暗示(oculomotor cue)
如图,你看见近处一物体,有些模糊,所以睫状肌拉动晶状体调整焦距将眼睛聚焦上去,而改变晶状体的过程就叫accommodation。
睫状肌拉动晶状体引发形状变化,以改变焦距:
看远处时压扁;
看近处时拉长。
当你看近处的时候,眼部肌肉处于紧张状态,convergence朝内,accommodation为了聚焦上去而把晶状体拉长;而当你看远处时,眼部肌肉处于放松状态,vergence朝外,accommodation压扁,而如果你眼睛accommodation调整焦距聚焦在一块固定的屏幕上,而vergence仍朝内或朝外的话,就会因神经调节导致牵拉肌肉引发眼压(eyestrain)。
最简单的感觉就是,你的眼球由『向内的状态』朝着外面转动,但是它始终聚焦在眼前的透过透镜显示的屏幕上,所以晶状体想被压扁,却压不下来的感觉。
但是现阶段可以用景深(depth-of-field)来模拟accommodation的效果。
因为accommodation恰好是眼睛单眼引发的景深,如果我们提前将景深显现出来,可以一定程度上欺骗大脑和眼睛。
恰好摄像机上的景深也给了我们不少启发。
而所谓的单眼视觉产生深度的方法,就和我们学习传统绘画产生立体感的方法一样,相当于在平面上产生立体感。
景深(Depth of field)
焦点的可选择性(Selective),在电影中就常用到聚焦和失焦两种手法,来引导观众看导演想让他们看的地方或层级。
- 遮挡(occlusion & interposition)层次关系
遮挡就是——前面的物体挡住后面的物体。
先说平面的遮挡,前面的东西优先级高,后面的优先级低,这种原理被用在移动端的交互设计上就是新的应用、新的页面会出现在旧的页面之上。
但是在3D中,遮挡就不只是简单的重叠(Overlapping),它需要和双目视觉共同作用。
在VR中,物体的遮挡是和双目视觉一起被处理的,被称为立体遮挡(Stereo Occlusion),比如下图:
右眼看到棱锥和立方体放在一起,左眼就看到原来是立方体遮挡了棱锥,于是视觉系统就告诉你:『立方体在棱锥的前面』。
我根据上图画出——
在所以深度线索中,遮挡是最显而易见的,因为简单,所以视觉系统的计算量小,所以它提前被处理,它的优先级就高于其他深度线索。
所以在VR中,如果一个大的物体被小的物体遮挡,则会引发人眼感知深度的错乱,所以在VR中你很少见到视错觉。
空气透视(aerial perspective)
在CG领域被称作 distance fog,而在自然界是因为受天光(skylight)就是受光的散射。在可见光谱中,蓝紫光就是波长最短的光。
我们把可见光谱搬到绘画上就会发现它刚好可以作为颜色的Z轴,即:红色在最前面,紫色在最后面,这也是为什么远山总是偏蓝紫色的原因,因为大气折射短波长的蓝紫光。
所以,在塞尚的画中他使用了暖色颜料(黄、橙、红)产生向前进的效果,而冷色颜料(蓝、青、紫)产生后退的效果。
因为视力(visual acuity)的限制,
前景:近处的东西,处于我们的近视焦距下,所以我们能看到很多细节,很高的光照对比度,很高的饱和度。而人的对比敏感度(Contrast sensitivity)随距离而衰退。
背景:而对于远处的物体,我们可以把千米之外的地平线上的东西是做sphere上的,它们和环境融为一体:
- 因为天光中包含短波段,在蓝天下,远处的物体便隐没在一片湛蓝中;
- 落日将整个天空浸染成粉红色。夕阳下,近处的物体光与影强烈的对比,而远处的物体沉没在粉红的余晖中。
从我下面的示意图可以看出,空间透视区分前后物体的特点是:
细节;
对比度;
饱和度。
离你眼睛越近的物体,对比度越高,细节越多,而越远的物体越暗淡。(画过色彩风景写生的朋友应该都很熟悉吧~)
空气透视的原理是越远的物体被空气折射得越厉害,但是在中国还是受雾霾的影响(层次感更强)中国画里的层次感,就是靠着一座山接着一座山,远处的山隐没在皑皑的山雾之中。
纹理坡度(texture gradients)
如下图,我们可以观察下面的砖块变化,可以发现:
近处稀疏,远处密集;
近处
光照和阴影(lighting&shadow)
阴影投射到地面上,你再通过地面的透视获得有关地面上物体的深度信息。
此外,投影投射所在的表面你能察觉到它表面的形状。
光和影结合产生的深度
下面是Google VR团队分享的一个案例:如果这三个方块没有阴影,那显然无法分清哪个在前哪个在后。
而如果加上了阴影,你就知道那些层离你近,那些层离你远。
同理,阴影可以推断出物体距离表面的远近。
第一张,只有遮挡,你知道花杯在高脚杯后面;
第二张,根据遮挡,花杯在前面,根据放置位置的相对高度透视,花杯在后面,那么它到底是在前面还是在后面?这时你的视觉便矛盾了。
于是第三张,加了阴影之后,就一目了然了,原来花杯确实在高脚杯前面,只是它是浮空的啊~
运动视差(motion parallax)
最简单的就是你移动头部,你发现场景中的物体也在做运动,离你越近的物体移动得越快。
我们大脑中的IMU感知我们的加速度,而视觉周边感知移动速度,于是视觉系统知道你的头部的移动方向和移动速度,从而和我们看到的物体的移动速度和移动方向做对比,于是算出了哪些物体离我们近,哪些物体离我们远。
当然,这些优势要六自由度的主机VR才能做到,对位置追踪的精度也有很高的要求。
运动视差和双目视差一样,视觉系统都是为了采集图像,然后算每张图像之间有什么差别。打个比方,一台inside out的全景光场相机可以记录场景中所有物体和图像信息,但是如果只有一个镜头的普通相机就得依靠舵机和滚轮在场景里走来走去、转动身躯了。
传统的绘画中运用了大量的『单眼拉深度的方法』——让绘画具有深度感。
而VR中,能产生立体感最强的效果也是——因头动产生的运动视差。当你的头左右移动时
离你越近的物体移动的越快
离你越远的物体移动得越慢
所以你大脑中分析出了这些场景的景深,你大脑中感受到的景深大概为——
前景
中景
坐火车汽车时同理,离他越远的物体移动得越慢,离他越近的物体移动得越快。
而在VR中的运动视差,是用户感知到的最强的深度感知。
从运动中感知深度(Depth from motion),又叫从光学膨胀中感知深度(depth from optical expansion)。
你感觉物体在朝你靠近,感觉它在你视网膜上成的像越来越大了,而你的视觉系统就在感知它变大的速度。
我觉得,这就非常有张力,在画面上也非常有戏剧性。
当你在打棒球时,你感知棒球的运动速度,它在你视线中越来越大。
当你开车是,你会注意前方的虚线在靠近你时加速从车身下滑过。
运动深度效果(Kinetic depth effect)
最著名的是这个旋转的舞女,明明是一张平面的图像,但是我们的视觉经验作祟,将它脑补成了一个旋转的舞女的立体的、运动的影像。
2、线性透视(linear perspective )
相对高度暗示(relative height cues)
在画面中,越高的地方,则离我们越远。
如下图,前面的线段占据了我们大部分视野,而后面的片段只占我们小部分视野,越远处,所包含的空间越大也越凝练,所以细节也越少。
学过美术的同学都知道绘画有很多年历史。但是我们学的绘画,都是学最近四百年里的。为什么呢?因为之前的绘画都是平面的。
根本原因是因为四百年前,透视法被发明并且运用在绘画中。
灭点
透视受到镜头焦距的影响,一般来说,FOV越大,畸变越厉害即『广角』——透视越强,视野范围越广。反之,FOV越小,枕形畸变越厉害即『长焦』——透视越小,视野范围越窄。
离你眼睛越近,则透视越大,视觉冲击力也就越强。
地平线仰角(elevation)
比透视更加明显的是地平线仰角的距离判断方法,如图:
越靠近地平线的物体,显然离我们越远。同理,如果一个物体在地平线上快速移动,那么……它一定移动得很快<( ̄▽ ̄)>
曲线透视(curvilinear perspective)
只有在极端情况下你才会看见曲线透视,它的透视平行线(parallel lines)被扭曲了,就像透过鱼眼镜头的照片一样。
当然,所以的深度信息都是被整合到一起的,如下图的研究结果。
我们已经说过accommodation和convergence是绝对距离的感知了,不过这种感知只在0-2米的短距离内有效;
而透视和仰角,在0-2米内无法判定;
而空气透视只在超过30米的位置才有效。
光学幻觉
单眼光学幻觉(optical illusion)
而光学幻觉(optical illusion)则会影响我们的单眼深度感知,所以在VR中会非常不好。
空心面具幻觉(hollow mask illusion)
相关阅读:深度感知在VR游戏开发中的运用:双眼深度暗示
|
|