2001-12-23 05:35:28 +08:00
|
|
|
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
2001-12-23 06:30:57 +08:00
|
|
|
<meta name="GENERATOR" content="Mozilla/4.6 [en-gb]C-CCK-MCD NetscapeOnline.co.uk (Win95; I) [Netscape]">
|
2001-12-23 05:35:28 +08:00
|
|
|
<title>OSG Documentation</title>
|
|
|
|
</head>
|
|
|
|
<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">
|
|
|
|
<img SRC="OpenSceneGraphBanner_Distribution.jpg" height=77 width=640>
|
|
|
|
<h1>
|
|
|
|
<b><i><u>Stereo</u></i></b></h1>
|
2001-12-23 06:30:57 +08:00
|
|
|
The OSG has support for stereo out of the box. Currently both anaglyphic
|
|
|
|
stereo (i.e. red/green or red/cyan glasses) and quad buffered stereo (i.e.
|
2001-12-27 04:55:15 +08:00
|
|
|
active stereo using shutter glasses, or passive stereo using polarized
|
2001-12-23 06:30:57 +08:00
|
|
|
projectors & glasses). It is planned to extend this support horizontal
|
2001-12-27 04:55:15 +08:00
|
|
|
and vertical split window stereo implementations.
|
2001-12-23 06:30:57 +08:00
|
|
|
<p>Almost all OSG applications have the potential for stereo support simply
|
2001-12-27 04:55:15 +08:00
|
|
|
by setting the relevant environmental variables, or via command line arguments.
|
2001-12-23 06:30:57 +08:00
|
|
|
Little or no code changes will be required, the support is handled transparently
|
|
|
|
inside osgUtil::SceneView's handling of rendering.
|
|
|
|
<p>If the user is planning to use head tracked stereo, or a cave then it
|
|
|
|
is currently recommend to set it up via a VR toolkit such as <a href="http://www.vrjuggler.org">VRjuggler</a>,
|
|
|
|
in this case refer to the VR toolkits handling of stereo, and do not invoke
|
|
|
|
the OSG's native support, i.e. keep all the OSG's stereo specific environment
|
|
|
|
varibles (below) set to OFF, or set the values to off within own your own
|
|
|
|
applications.
|
2001-12-24 22:12:38 +08:00
|
|
|
<br>
|
2001-12-23 06:30:57 +08:00
|
|
|
<h3>
|
|
|
|
The environmental variables of interest:</h3>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<table CELLSPACING=5 >
|
|
|
|
<tr>
|
|
|
|
<td><b>OSG_STEREO</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td><b>ON</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td>turn stereo on.</td>
|
|
|
|
</tr>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<tr>
|
|
|
|
<td><b>OSG_STEREO</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td><b>OFF</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td>turn stereo off (default)</td>
|
|
|
|
</tr>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<tr>
|
|
|
|
<td><b>OSG_STEREO_MODE</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td><b>ANAGLYPHIC</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td>use anaglyphic stereo when in stereo (default).</td>
|
|
|
|
</tr>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<tr>
|
|
|
|
<td><b>OSG_STEREO_MODE</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td><b>QUAD_BUFFER</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td>use quad buffered stereo when in stereo.</td>
|
|
|
|
</tr>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<tr>
|
|
|
|
<td><b>OSG_SCREEN_DISTANCE</b></td>
|
|
|
|
|
|
|
|
<td><b>0.50</b></td>
|
|
|
|
|
|
|
|
<td>set the distance the viewer is from screen in metres (default shown)</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
<td><b>OSG_SCREEN_HEIGHT</b></td>
|
|
|
|
|
|
|
|
<td><b>0.26</b></td>
|
|
|
|
|
|
|
|
<td>set the height if image on the screen in metres (default shown)</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
<td><b>OSG_EYE_SEPERATION</b></td>
|
|
|
|
|
|
|
|
<td><b>0.05</b></td>
|
|
|
|
|
|
|
|
<td>set the eye seperation - interoccular distance (default shown.)</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
2001-12-24 22:12:38 +08:00
|
|
|
<br>
|
2001-12-23 06:30:57 +08:00
|
|
|
<h3>
|
|
|
|
Command line arguments can be used to override these settings:</h3>
|
|
|
|
<table CELLSPACING=5 >
|
|
|
|
<tr>
|
|
|
|
<td><b>-stereo</b></td>
|
|
|
|
|
|
|
|
<td></td>
|
|
|
|
|
|
|
|
<td>Switch on stereo.</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
<td><b>-stereo</b></td>
|
|
|
|
|
|
|
|
<td><b>ON</b></td>
|
|
|
|
|
|
|
|
<td>Switch on stereo.</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
<td><b>-stereo</b></td>
|
|
|
|
|
|
|
|
<td><b>OFF</b></td>
|
|
|
|
|
|
|
|
<td>Switch off stereo.</td>
|
|
|
|
</tr>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<tr>
|
|
|
|
<td><b>-stereo</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td><b>ANAGLYPHIC</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td>Switch on ANAGLYPHIC stereo.</td>
|
|
|
|
</tr>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<tr>
|
|
|
|
<td><b>-stereo</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td><b>QUAD_BUFFER</b></td>
|
2001-12-23 05:35:28 +08:00
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<td>Switch on QUAD_BUFFER stereo.</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
2001-12-24 22:12:38 +08:00
|
|
|
<br>
|
2001-12-23 06:30:57 +08:00
|
|
|
<h3>
|
|
|
|
Examples:</h3>
|
|
|
|
To invoke stereo from the comandline:
|
|
|
|
<br><b> sgv -stereo cow.osg</b>
|
|
|
|
<p>To invoke quad buffered stereo from the commandline:
|
|
|
|
<br><b> sgv -stereo QUAD_BUFFER cow.osg</b>
|
|
|
|
<p>To force all apps to start up in quad buffered stereo (if system supports
|
|
|
|
it)
|
|
|
|
<br><b> export OSG_STEREO=ON</b>
|
|
|
|
<br><b> export OSG_STEREO_MODE=QUAD_BUFFER</b>
|
|
|
|
<br><b> sgv cow.osg</b>
|
|
|
|
<p>To set quad buffered stereo to the default, but use the commandline
|
|
|
|
to switch stereo on:
|
|
|
|
<br><b> export OSG_STEREO=OFF</b>
|
|
|
|
<br><b> export OSG_STEREO_MODE=QUAD_BUFFER</b>
|
|
|
|
<br><b> sgv -stereo cow.osg</b>
|
|
|
|
<br>
|
|
|
|
<h3>
|
|
|
|
Size matters:</h3>
|
2001-12-27 04:55:15 +08:00
|
|
|
For appropriate depth perception the stereo code creates separate left
|
2001-12-23 06:30:57 +08:00
|
|
|
and eye views, both the frustum and modelview are shifted to account for
|
2001-12-27 04:55:15 +08:00
|
|
|
the separate eye views. To achieve the right amount of adjustment
|
|
|
|
the OSG requires the users eye separation, the distance from the eyes to
|
2001-12-23 06:30:57 +08:00
|
|
|
the screen and the height of the screen. The OSG will use the defaults
|
|
|
|
of 0.05m,0.5m and 0.26m respectively which are assumed to be reasonable
|
|
|
|
defaults for most users workstation configurations, note the OSG_SCREEN_HEIGHT
|
|
|
|
is the image height rather than total size of your monitor/display surface.
|
|
|
|
For the best stereo effects please measure these values and set them up
|
|
|
|
via the environmental variables. Once set the views you get should
|
2001-12-27 04:55:15 +08:00
|
|
|
give improved depth perception. A good way of measuring how well you are
|
|
|
|
configured for your display is to fly away from objects (using the FlightManipulator
|
|
|
|
for instance, but not the TrackballManipulator, see below) so that they go of
|
|
|
|
toward infinity. As they move away the offset between the two images should
|
|
|
|
tend towards your eye separation, if you achieve this then the object will
|
|
|
|
be perceived as at infinity.
|
2001-12-23 06:30:57 +08:00
|
|
|
<br>
|
2001-12-27 04:55:15 +08:00
|
|
|
<br>
|
|
|
|
<h3>
|
|
|
|
Camera Manipulator Modes:</h3>
|
|
|
|
There are three osgUtil::CameraManipulator's which come with osgUtil, which
|
|
|
|
operate as a Trackball, Drive and Flight modes of interaction (see sgv.html for
|
|
|
|
how to invoke them in the scene graph viewer). The osgUtil::Trackball
|
|
|
|
Manipulator automatically scales the fusion distance to that which will fusion on
|
|
|
|
center point of rotation - this will appear at the middle of the monitor at
|
|
|
|
the monitors depth. Whereas, the osgUtil::DriveManipualtor, osgUtil::FlightManipulator
|
|
|
|
scale the fusion distance to the distance the viewer is from the screen, the
|
|
|
|
results in a perception that the virtual world is scaled to physical world, this
|
|
|
|
is clearly better for simulators and alike. You can control the fusion of
|
|
|
|
the image in these two modes via the osg::Camera::setFusionDistanceMode(FusionDistanceMode mode)
|
|
|
|
where mode can be osg::Camera::PROPORTIONAL_TO_LOOK_DISTANCE (used by Trackball) or
|
|
|
|
osg::Camera::PROPORTIONAL_TO_SCREEN_DISTANCE (used by Drive and Flight),
|
|
|
|
and osg::Camera::setFusionDistanceRatio(float). See include/osg/Camera for
|
|
|
|
further details, and the camera manipulators for implementation details. The
|
|
|
|
fusion distance ratio defaults to 1.0 but can be biased to move objects out or
|
|
|
|
into screen, they will also appear to get smaller and larger respectively. The
|
|
|
|
camera manipulators allow the user to alter this value at runtime via the '+'
|
|
|
|
and '-' keys.
|
|
|
|
|
2001-12-23 06:30:57 +08:00
|
|
|
<br>
|
|
|
|
<br>
|
2001-12-23 05:35:28 +08:00
|
|
|
</body>
|
|
|
|
</html>
|