BS Contact Stereo Support

 

BS Contact Stereo 7.2 supports different stereo rendering modes. Stereo (also often referred to as "3D") requires presenting separate images with the right perspective for the left and right eye. Some types of Multiview autosteroscopic displays are requiring even more views.

Red-Blue stereo can be activated in BS Contact VRML/X3D's right mouse menu Settings > Stereo > Red-Blue.

In BS Contact Stereo there are different modes on how to output the separate view images:

 

Open GL Hardware Quad-Buffered Stereo

This requires a professional Graphics card with hardware OpenGL Stereo Support (i.e. NVidia Quadro, 3D Labs, ATI-Fire GL, NVStereo Driver).

In the driver's control panel opengl settings OpenGL stereo support must be enabled. Here is an example configuration dialog for an Nvidia Quadro XGL card (in German).

In the Contact preferences the OpenGL driver must be selected, in the Contact OpenGL Settings dialog "Stereo" must be enabled in order to search for an stereo capable display format.

The player must be restarted if this option is changed, and now the  option Settings ->Stereo -> Hardware  is available.

If a stereo Open GL format is initialized Contact renders two times for the left and right buffer. In the Settings->Stereo ->  Hardware (Quad Buffered) Menu must be enabled. This is automatically enabled If a stereo GL format is found and initialized at the next start.

Beside the stereo capable Open GL board an Monitor with a high refresh rate (100-160 HZ) and active Shutter Glasses (Like the Stereographics or ELSA Revelator glasses) connected to the Video Output / or stereo connector output. Alternatives are an HMD or stereo capable projectors. Another option are splitter boxes separating the stereo video signal into left-right separate signals for passive stereo projection. /p>

 

Red-Blue

This method displays the scene in the same frame with Red for the left eye, blue for the right. It requires RED-BLUE glasses. It works best with objects displayed in wire frame.

 

Split Screen

This method displays the scene two times with split viewports. The viewing setup requires a dual output graphics cards, 2 stacked projectors with polarization filters and polarization glasses. The driver (e.g. NVidia NView need to configured to provide one continuous desktop over the two monitor outputs). Contact in full screen mode then covers both displays. This modes work with the Contact OpenGL and DirectX9 renderes. It is important to properly configure the NVidia NView driver to an horizonal span mode. It will not work with 2 graphics outputs configured as separate displays or clone mode.

 

SpatialView - 5 View

This method is intended to use with the SpatialView 5 View multiview stereoscopic displays. 5 Views are interleaved in one output image. It requires multitexturing support in OpenGL or DirectX9. Stereo separation can be changed with the Stereo Options dialog box (F6).

 

TechXpert

This method is intended to use with the techXpert multiview autostereoscopic displays. It requires multitexturing support in OpenGL or DirectX9. Stereo separation can be changed with the Stereo Options dialog box (F6).


TRIDELITY-5-VIEW

This method is intended to use with Tridelity multiview autostereoscopic displays. It requires multitexturing support in OpenGL or DirectX9.

 

Opticality

This method is intended to use with the Opticality auto stereoscopic displays. Depending on the type of the installed display up to 8 images are interleaved in one output image. It requires the BS Contact Stereo to run in the OpenGL mode and multitexturing support in OpenGL. The X3D Display Manger need to be installed. Stereo separation can be changed with the Stereo Options dialog box (F6).

Some settings can be tweaked using registry settings:
OpticalityDisplay.viewResolutionX, Default 1.0, a factor for the internal render resolution, use 0.5 for higher rendering speed but lower quality OpticalityDisplay.viewResolutionY, Default 1.0, similar to viewResolutionX but for the height dimension OpticalityDisplay.autoDepth boolean 0 or 1, Default 0: if enabled does Z-Buffer analysis for depth value computation (slower rendering)

This mode will not work if the X3D Display Manager software is not properly installed and working, here is an example screen shot of the interleaved 3D image.


PHILIPS-IMAGE-DEPTH

This method is intended to use with Philips 3D TV's. It requires OpenGL driver and outputs an image with a depth image in side by side format. The depth range must be manualy optimized using a good Viewpoint and NavigationInfo setting. The window must be maximized, so that the Displays switches to 3D mode.

 

SEEREAL

SeeReal DisplayThis method is intended to use with the SeeReal auto stereoscopic LCD Monitor. The two images are interleaved vertically in one output image. It requires the Contact Open GL Driver and stencil buffer support. The screen resolution must match the physical resolution of the monitor.

 

The SeeReal display can also be driven by using the Contact Open GL Hardware Stereo mode, and setting the "vertical interlaced monitor" stereo format in the Display Settings of the graphics Driver (e.g. Nvidia Quadro ).

 

LG-5VIEW

This method is intended to use with the LG M4210D-B21 - 42" class LCD Widescreen Full HD Monitor with 3D multiview autostereoscopic display.

 

DLP-3D

HDTV 3DThis method is intended to use with the 3D DLP HDTVs displays.







 

ALIOSCOPY

This method is intended to use with the Alioscopy multiview autostereoscopic displays.

 

Anaglyph

This mode uses DirectX9, the modulation colors for the left and right view and a gamma factor can be specified. In OpenGL multitexturing is used.

 

iZ3D

This method is intended to use with iZ3D Monitor. It requires DirectX driver and outputs an image with a depth image in side by side format. The window must be maximized over both screen, so that the Displays switches to 3D mode.

 

Flip Frames

Experimental flipping between left and right frame at a given interval over time.



INTERLACED-VERTICAL
INTERLACED-HORIZONTAL

Vertical or horizontal colum or row interleaving.

 

 

Stereo Options

The stereo options can be configured in the following ways

In the registry under the key HKEY_CURRENT_USER\Software\Bitmanagement Software\bsContact the following options can be reconfigured:

General.stereoSeparation <float> - set eye separation default value
General.stereoMode <mode> - type of stereo mode to use
General.renderer <renderer> - type of renderer to use

Stereo.viewResolutionX <float> - width factor for the pixel size of the rendering buffers, default 1.0, 0.5 means render at half resolution
Stereo.viewResolutionY <float> - height factor for the pixel size of the rendering buffers, default 1.0

Stereo.enabledPath <bitmask>
bit mask for enabling/disabling specific drawing pathes, -1 uses all pathes, 1 would only render the first view.

Stereo.flipInterval <float> time in seconds for flipping in Flip frames mode

Stereo.leftColor <float> <float> <float>   Left modulation color for anaglyph mode, default: 1.0 0.0 0.0
Stereo.rightColor <float> <float> <float>   Right modulation color for anaglyph mode, default: 0.0 1.0 1.0
Stereo.gamma  <float>  gamma factor for anaglyph mode, default 1.0

 

During run-time some stereo options can be set using Browser.setOption(option,value) method:

stereo <bool>   enable/disable stereo rendering
stereoSeparation <float>
stereoVertSeparation <float>
stereoFocalDistance <float>

stereoLeftColor <float> <float> <float>
stereoRightColor <float> <float> <float>   Right modulation color for anaglyph mode, default: 0.0 1.0 1.0
stereoGamma  <float>  gamma factor for anaglyph mode, default 1.0
stereoFlipInterval <float> time in seconds for flipping in Flip frames mode
stereoViewResolution <float> <float> -  factor for the pixel size of the rendering buffers, default 1.0 1.0


stereoMode <mode>

Where mode is one off

MONO QUAD SPLIT-HORIZONTAL SPLIT-VERTICAL RED-BLUE SEEREAL FLIP INTERLACED-VERTICAL INTERLACED-HORIZONTAL OPTICALITY-DISPLAY SHARP3D SVI-5-VIEW SVI-5-VIEW-32 PHILIPS-IMAGE-DEPTH TECHXPERT-5-VIEW TECHXPERT TRIDELITY-5-VIEW ANAGLYPH RED-BLUE_MT MONO-TEXTURE SEEREAL_MT IMAGE-DEPTH ALIOSCOPY-8-VIEW LG-5-VIEW DLP-3D INTERLEAVED

setOption parameters can also be set in the 3D scene using the WorldInfo node:

	WorldInfo
	{
	title "Stereo Test"
	info [ 

		# Extra Contact hints : 
		"options:stereoMode=RED-BLUE,stereoSeparation=0.06"
		]
	}

The options can be queried using the getOption method:

	
	print('stereo:'+Browser.getOption('stereo'));
	print('stereoMode:'+Browser.getOption('stereoMode'));
	print('stereoSeparation:'+Browser.getOption('stereoSeparation'));
	print('stereoVertSeparation:'+Browser.getOption('stereoVertSeparation'));
	print('stereoFocalDistance:'+Browser.getOption('stereoFocalDistance'));
	// only if stereo enabled :
	print('stereoViewResolution:'+Browser.getOption('stereoViewResolution'));
	print('stereoLeftColor:'+Browser.getOption('stereoLeftColor'));
	print('stereoRightColor:'+Browser.getOption('stereoRightColor'));
	print('stereoGamma:'+Browser.getOption('stereoGamma'));
	print('stereoNumViews:'+Browser.getOption('stereoNumViews'));			
		

 

The following keys are useful to adjust the stereo view for comfortable viewing:

SHIFT- SHIFT+ on keypad, changes the stereo separation (distance between eyes)
CTRL-SHIFT - CTRL-SHIFT + on keypad, changes the focal distance ( distance viewer position, position, target (where the eyes are focusing in a point))
CTRL - CTRL + on the keypad, changes the field of view.

CTRL-F3 and clicking with the mouse on geometry in 3D sets the focal distance (plane of zero parallax) to the current distance from the viewer to the object. This allows to quickly adpat the stereo focus.

Another option is the Contact Control Pad available via the F6 Key. In the stereo tab the eye separation and focal distance can be edited.The eye separation can be set negative in order exchange left and right views.

The ViewVolume node (see SDK) can be used to specify the projection parameters in more detail, compared to the Viewpoint node.

The values for stereoSeparation and focalDistance are heavily depending on the scene dimensions. The standard VRML unit is meters, corresponding to the default eye distance of 6cm.

The Save button save the current value of Eye >Separation and Focal Distance to  an url file in the  Contact Cache directory. This settings are reloaded the next time this file or url is loaded.

Certain Stereo Modes have OpenGL requirements, e.g. SeeReal mode needs an OpenGL stencil buffer, Hardware Stereo need an OpenGL stereo context. If the requirements are currently not given after switching to a stereo mode, one can reload the scene to have Contact adapt the OpenGL renderer settings automatically. For using NVidia Stereo Consumer Driver supplied stereo modes one usually have to turn off Contacts's stereo rendering modes.

 

Stereo Image and Video Support


Nvidia Dawn in RED-BLUE Stereo

BS Contact supports stereo images. Content authors have the choice of using either the side-by-side JPEG stereo image format (.jps file extension) within a standard ImageTexture node or the StereoTexture node, specifying separate left and right ImageTextures in the texture field. For viewing stereo images directly the stereoSeparation should be set to 0.

StereoTexture node

The StereoTexture node supports the following image layout modes:

EXTERNPROTO StereoTexture[
  exposedField SFString type
  exposedField MFNode texture
]

[
"urn:inet:bitmanagement.de:node:StereoTexture",
"http://www.bitmanagement.de/vrml/protos/nodes.wrl#StereoTexture",
]
The texture field contains one or more Texture Nodes. ie. ImageTexture, PixelTexture or MovieTexture. The type field indicated the type of stereoImage.

The following types are supported for image layout modes:

Mode name Image Layout
MONO 1 image, same for left and right rendering path
LEFT-RIGHT 2 separate images
RIGHT-LEFT same as LEFT-RIGHT but left and right image are exchanged
SPLIT-HORIZONTAL Left and right image in one side by side
SPLIT-HORIZONTAL-FLIP same as SPLIT-HORIZONTAL but left and right image are exchanged
SPLIT-VERTICAL Left and right image in one above below
SPLIT-VERTICAL-FLIP  
TILED-3x3 image contains 3*3 views from left most to right most, for multiview displays
N-VIEWS the texture field contains multiple texture nodes, for a multiview stereo mode, each image in turn is used for the specific multiview rendering path
   

 

 

StereoMovieTexture node

The StereoMovieTexture node allows to use Stereo Movies availabe as separate files for the left and right eye or as side-by-side. The node is optimized for DirectX9 using a custom DirectShow Renderer. For best performance MPEG2 encoded material in side-by-side (SPLIT-HORIZONTAL)  or above-below (SPLIT-VERTICAL) format  is recommended.

EXTERNPROTO StereoMovieTexture[
	exposedField SFString type
	exposedField SFBool loop
	exposedField SFFloat speed
	exposedField MFString url
	exposedField MFString rightUrl
	exposedField SFTime startTime
	exposedField SFTime stopTime
	exposedField SFBool repeatS
	exposedField SFBool repeatT
	eventIn SFBool set_pause
	eventOut SFTime duration
	eventOut SFBool isActive
	eventOut SFTime mediaTime
	eventOut SFVec2f imageSize
	eventOut SFFloat imageAspect
	exposedField SFBool scaleImage
	exposedField MFString parameter
]
["urn:inet:bitmanagement.de:node:StereoMovieTexture","http://www.bitmanagement.de/vrml/protos/nodes.wrl#StereoMovieTexture","nodes.wrl#StereoMovieTexture"]

 

Example: separate video streams for left and right channel

DEF STEREOMOVIE StereoMovieTexture 
{
	type "LEFT-RIGHT"
	url "left.avi"
	rightUrl "right.avi"
	loop TRUE
	startTime 0
	repeatS FALSE 
	repeatT FALSE 
	parameter "subtexture"
}

 

Example: Side-By-Side in one Video

DEF STEREOMOVIE StereoMovieTexture 
{
	type "SPLIT-HORIZONTAL"
	repeatS	FALSE 
	repeatT FALSE
	url	"Movie_SBS.mpg"
	loop TRUE
	startTime 0
	stopTime -1
	parameter "subtexture"
}

When using the Contact OpenGL driver stereo videos in 1 stream (e.g.Side-by-Side ) can be displayed using the StereoTexture node.

 

Example: Side-By-Side in one video using StereoTexture

WorldInfo
{
	title "Stereo Test"
	info [ 

		# Extra contact hints : 
		# image already have stereo seperation 
		"options:stereoSeparation=0.0,relativeTime=true,wwwProgress=true"
	]
}


Viewpoint 
{
    description	"Default"
    position     0.000 0 2.0
    orientation  1 0 0 0
    fieldOfView  0.844
}
NavigationInfo {
	type ["SLIDE", "ANY"]
}
Shape {
	appearance Appearance { 
		texture 
		StereoTexture {
			type "SPLIT-HORIZONTAL"
			texture	[
				DEF MOVIE MovieTexture {
					parameter [ "SUBTEXTURE" ]
					repeatS	FALSE repeatT FALSE
					url	[
						"dampflok 1 (512).avi"
					]
					loop TRUE
					startTime 0
					stopTime -1
				}
			]
		}
		
	}
	geometry 
	# Aspect Ratio factor of image is 1.25
	Rectangle {	size 2.5 2 }
}

The stereoSeparation is set to 0, because the video already contains separate views.

StereoMovieTexture supports capturing from Direct Show camera devices. The capture device can be configured in the Stereo Control Pad. Two exact equals cameras are required.

Example: Stereo Video Capture with the currently configured device

DEF STEREOMOVIE StereoMovieTexture 
{
	type "LEFT-RIGHT"
	repeatS	FALSE 
	repeatT FALSE
	url	"stereocapture:Default"
	startTime 0
	stopTime -1
	parameter "subtexture" # avoid Power of 2 scaling
	# optional : custom transformation of the images :
	textureTransform [ 
		TextureTransform { translation 0.0 0.0 } 
		TextureTransform { translation 0.0 0.0 } 
		]
}

 

The stand-alone BSContact.exe can load Side-By-Side, Left-Right and JPS files directly and a 3D scene is generated automatically to view the stereo image or movie including panning and zooming functionality.

An stereo image can be opened via the menuFile->Open Stereo Image.
The following suffix at the file name are recognized. _L. _R. _Left. _Right. LEFT-RIGHT format is assumed.
jps, pns bms are JPG, PNG, BMP files in side by side format.
Once an image has been loaded the Page-Up, Page-Down keys can be used.

The node TiledImageTextures allows the use of high-resolution image material.

To improve qualtiy Mip-Mapping and Anti-Aliasing might be enabled in the Contact settings. To allow the loading of large images with the ImageTexture node the setting Performance - max texture size should be increased e.g. to 2048 or 4096 if the graphics card can handle these sizes properly.

 

Examples:

Test Example configured to use RED-BLUE

Online Demos

StereoTexture test in RED-BLUE

 

Resources:

Infos

stereoscopy.com

 

Projectors (Stereo)

www.digital-image.de

Barco VR

Barco Infitec Stereo projection

projectorcentral.com

 

Glasses Free Displays

NewSight ( ex Opticality,X3D)

SeeReal

Spatial View

techXpert

TRIDELITY

SeeFront

Philips 3D Solutions

Alioscopy

 

Workstation Graphicscards

3DLabs

ATI

NVidia Workstation Products

PNY

Misc

3dstereo.com

inition.co.uk

guru3d.com/stereo/general/

3dphoto.net

 


© 2003 - 2013 Bitmanagement Software - All rights reserved.