Stereoscopy

With version 4.2 Voreen is supporting stereoscopic rendering. This documentation should give an overview about the functionality and help the users to benefit of the stereoscopic feature in their workspaces.

Table of Contents

Using stereoscopy in a workspace

To use stereoscopic rendering the module "Stereoscopy" has to be activated. In the workspace itself simply replace the "Canvas" with the "StereoCanvas". The image above is showing the standard.vws workspace where the Canvas has been replaced already. NOTE: Because of the implementation of the StereoCanvas the auto camera linking should be enabled while adding the StereoCanvas to the workspace. Elsewise the user has to link the camera of the StereoCanvas with all camera poroperties of the corresponding network path. More than one StereoCanvas in the same network path will cause non deterministic behavior.

Different stereoscopic modes

The following table shows all supported stereoscopic render modes.

Mode Image Description
No Stereo  In this mode the StereoCanvas behaves like the normal Canvas.
Split Screen The image of the left eye is rendered in the left half of the canvas. The image of the right eye is rendered analogical in the right half of the canvas. It can be useful to double the width of the canvas to get the same image as in the non stereo mode.
Autostereoscopic The two images are rendered pixel column wise. This mode can be used with special devices which support autostereoscopy. The frustum will be adjusted in this mode to prevent deformations.
Anaglyph

This mode color encodes the two images into one. It is not color preservative. Special color filtered glasses have to be used to get the stereo effect.

Properties of the StereoCanvas

All properties of the StereoCanvas are shown in the picture below.

CanvasSize: The pixel size of the canvas.

ShowCursor: Indicates if the mouse cursor should be visible in the canvas.

Show Fullscreen: Resizes the canvas to fullscreen. Very useful in case of special stereo devices.

Screenshot: Saves the actual image of the canvas.

StereoMode: Option property to specify the stereo mode.

Invert Eyes: Switches the left and right eye. Can be used if output device expects another eye adjustment.

Show Calibration: Shows a calibration texture. Can be used to calibrate the output devices.

Camera: The camera beeing used to simulate the eye positions.

Eye Separation: Adjusts the eye separaition.

Stereo Axis Mode: The default mode is "On Axis" which modifies the frustums to overlap on the focus plane. The second mode "OnAxis(HMD)" does not modify the frustums and should be used if a head-mounted display is used as output device.

 

 

 

 

 

 

Implementation details

To receive a stereoscopic rendering two images have to be generated. One is showing the scene from the perspective of the left eye and the other shows the same scene from the perspective of the right eye. Therefore the camera has to be modified by the StereoCanvas. The StereoCanvas shifts the camera on the position of the left eye and adjusts the focus and frustum of the camera as well. By this property change a new rendering (evaluation of the network) is triggered. The resulting left eye image is stored in an internal buffer of the StereoCanvas. Then the camera is shifted to the position of the right eye and again the focus and frustum are adjusted. Now the canvas has both needed images to combine them into one single stereo output image depending on the stereo mode been selected. In the next rendering path the camera is not been shifted to optimize the performance. The StereoCanvas expects the image of the right eye as first incoming image and shifts the camera to the left eye afterwards. By this implementation the camera has to be moved only every second network evaluation. However, the network has to be evaluated twice to render a stereo image which nearly halfs the frames per second (FPS). It can be useful to decrease the sampling rate to interact fluidly by huge output pixel dimensions. Because of the continuous camera shifts only one StereoCanvas should be used in a network. Two StereoCanvas sharing the same camera in the network path will interfere each other and rendered images will not be consistent.