Stereoscopic Vision

Each eye gets a slightly different view of the world

The brain fuses the two views to get depth information






Artificial Stereo

Create two distinct images - one for each eye

Used since early 1800s






Stereoscopy






Stereoscopy






Stereoscopy






Stereoscopy







Stereoscopy






Stereo Viewing

    

Present each image separately to each eye

e.g. stereoscope, HMD






Stereo Viewing

With a projection screen, images must overlap

Glasses filter images - each eye sees only one

Crosstalk becomes a concern






Active Stereo

    





Active Stereo

Problems:






Passive Stereo

   

Uses polarization to separate images

Two projectors - one for each eye

Each eye's image is polarized differently






Linear Polarization







Linear Polarization

Problems:






Circular Polarization


Linear polarizer + quarter-wave retarder = circular polarization

Polarization is left-handed or right-handed
(clockwise or counter-clockwise)

Immune to head-tilt problem






Circular Polarization







VR Screen






Circular Polarization

Problems:






Other Methods







Anaglyphic Stereo

   

Uses colored filters

One image is red, other is blue/green/cyan

Only requires one projector (any type)






Anaglyphic Stereo






Anaglyphic Stereo






Chromadepth

Filters make different colors appear at different depths

Red appears close, blue appears distant


Chromatek gallery

Pulfrich effect

Images viewed through dark lens reach brain slower

Pulfrich glasses have one dark lens, one clear lens

When objects move, brain fuses images from slightly different times






Autostereo

Glasses-free

Different eye-views are interleaved vertical strips

Barrier screen blocks all but one image from any viewpoint
or lenticular lenses direct a different image to each eye






Stereo in OpenGL

Display

Active stereo
Quad-buffering: glDrawBuffer() etc + special hardware

Polarized stereo
One display: Quad-buffering + polarizing modulator
Two projectors: glViewport()

Anaglyph
glColorMask()

Perspective






glFrustum






glFrustum






glFrustum






glFrustum








Creative Commons License
This document is by Dave Pape, and is released under a Creative Commons License.