Vulkan on Android 6 — VR Stereo Rendering Part 1: Depth Perception
In this article, we are not going to see any code. As the title implies, we are focusing what stereo viewing is and how it is constructed.
Depth Perception
Monocular Cues
Monocular cues provide depth information when we are viewing a scene with one eye. I should further explain all types of monocular cues, but ordinary 3D rendering has adopted all of these cues to provide depth information in rendered images, so now we are just focusing on cues related to binocular ones.
Motion parallax
Accommodation
It’s easy to understand but hard to notice since it’s more like a reflex other than an active action. To see objects at various distances clearly, our ciliary muscles adapt the lens to be thicker or thinner, which changes our focal length accordingly. And our brain interprets the kinesthetic sensations of ciliary muscles stretching or relaxing to depth information.
Lighting and shading
The way that light falls on an object and reflects off its surfaces, and the shadows that are cast by objects provide an effective cue for the brain to determine the shape of objects and their position in space. — Wikipedia
Binocular Cues
Unlike monocular cues, binocular cues provide depth information when we are viewing a scene with two eyes.
Stereopsis
Simply put, it refers to the perception of depth and 3-dimensional space information obtained from two eyes. Many animals and we humans have two eyes and they are located at different lateral positions on the head. Objects projected onto our retinas of the two eyes produces two slightly shifted images(measured as binocular disparity), which then be processed by visual cortex of the brain to yield depth perception. Wiki shows an example of it. That’s why all VR apps have two views, one for each of the eyes.
Convergence
Convergence is a type of vergence. A vergence is that both eyes rotate inwards or outwards simultaneously to obtain or maintain single binocular vision. When we are viewing an object, we naturally focus on some point on that object. Our eyes need to rotate inwards to be able to focus on the same point. The nearer the object, the greater the angle between the line of sight of both eyes is. Likewise, the farther the object, the smaller the angle is.
Note objects at infinity cause angle to be zero, which cause binocular disparity to be zero. Thus we can simply put one single virtual camera inside a bounding sphere with 360 ° panorama landscape image mapping onto the inner surface of that sphere. They are so far away that the binocular disparity is almost zero. So we can safely ignore the second virtual camera(eye). You might have seen some VR apps use this approach.
Shadow Stereopsis
We’ve mentioned the effects of lighting and shadows earlier. Furthermore, shadows can be fused by our brain. Retinal images with no parallax disparity but with different shadows are fused stereoscopically, providing additional depth information.