Version 23 (modified by osg, 6 years ago)

Added more source code links


Running the examples

The OpenSceneGraph has an ever growing number of examples available for developers to learn from. Following is a guide to getting these examples running.

Once the OpenSceneGraph is installed you will need to place the location where it was installed on the system paths environmental variables. Also download the demo data and set the OSG_FILE_PATH environment variable so that the example datasets can be found by OSG. It is probably worth setting your autoexec.bat, .bashrc, .tcsh, etc to pick up on these settings so that next time you log in everything is in easy reach. Below are examples for the different platforms on how to set up your environment.

  • Windows:
    set PATH=path;C:\OpenSceneGraph\bin
    set OSG_FILE_PATH=C:\OpenSceneGraph-Data;C:\OpenSceneGraph-Data\Images
  • Unix - bashrc:
    export PATH = ${PATH}:/home/myaccount/OpenSceneGraph/bin
    export LD_LIBRARY_PATH = ${LD_LIBRARY_PATH}:/home/myaccount/OpenSceneGraph/lib
    export OSG_FILE_PATH = /home/myaccount/OpenSceneGraph-Data:/home/myaccount/OpenSceneGraph-Data/Images
  • Unix - tcsh:
    setenv PATH ${PATH}:/home/myaccount/OpenSceneGraph/bin
    setenv LD_LIBRARY_PATH = ${LD_LIBRARY_PATH}:/home/myaccount/OpenSceneGraph/lib
    setenv OSG_FILE_PATH /home/myaccount/OpenSceneGraph-Data:/home/myaccount/OpenSceneGraph-Data/Images
  • MacOSX:
    setenv PATH "${PATH}:${OSGHOME}/lib:${OSGHOME}/lib/osgPlugins"
    setenv DYLD_LIBRARY_PATH "${OSGHOME}/lib:${OSGHOME}/lib/osgPlugins"
    setenv OSG_FILE_PATH "/home/myaccount/OpenSceneGraph-Data:/home/myaccount/OpenSceneGraph-Data/Images"

All the examples run from the command-line. Most require parameters to be passed, such as what file to load. If you are in any doubt just run the application and it will either run, or provide help on what options it accepts. You can also print out full help my running the example with the option --help.

To run the examples in quick succession on Windows, use the runexamples.bat script which can be found in the the root of the OpenSceneGraph distribution:


Press Escape to close each application and move on to the next application. On Unix, you should be able to use

sh ./runexamples.bat

Brief introduction to the examples

example thumbnail startup example description source code
osganimate osganimate --overlay Demonstrates the use of osg::AnimationPath for setting up animations for transform nodes and the usage of osg::OverlayNode. Three overlay modes can be specified as argument:
osgautotransform osgautotransform.cpp
osgbillboard osgbillboard Demonstrates how to create the various types of billboard supported by the OpenSceneGraph. Billboards are typically used for trees or particles effects. osgbillboard.cpp
osgblendequation osgblendequation.cpp
osgcallback osgcallback.cpp
osgcatch osgcatch.cpp
osgcegui osgcegui.cpp
osgclip osgclip.cpp
osgcluster osgcluster.cpp
osgcompositeviewer osgcompositeviewer cow.osg -3 Demonstrates the use of the compositeviewer.
-1 Single view with fountain.osg and a statshandler and trackballmanipulator
-2 Two views each on a different screen sharing the same scene. First view trackballmanipulator and statesetmanipulator. Second view statshandler, trackballmanipulator and a pickhandler.
-3 Three views within a single window. Window and graphics context manually created. First view (left bottom) with several event handlers. Second view (right bottom) with a trackballmanipulator and a pickhandler. Third view (upper half) with cessnafire.osg and a trackballmanipulator.

-s SingleThreaded?
-g CullDrawThreadPerContext?
-c CullThreadPerCameraDrawThreadPerContext
osgcopy osgcopy cow.osg Demonstrates the use of deep vs shallow vs custom copying of scene graphs. A specialized CopyOp class is used to output all copying that takes place when performing a deep or shallow copy. This example allows for quick experimentation (in source) with the different CopyOp flags. osgcopy.cpp
osgcubemap osgcubemap.cpp
osgdelaunay osgdelaunay.cpp
osgdepthpartition osgdepthpartition.cpp
osgdistortion osgdistortion.cpp
osgfadetext osgfadetext.cpp
osgforest osgforest.cpp
osgfxbrowser osgfxbrowser.cpp
osggeodemo osggeodemo.cpp
osggeometry osggeometry.cpp
osggeometryshaders osggeometryshaders.cpp
osghangglide osghangglide The hang glide demo creates a simple flying site (Don Burns local hang glide site in fact!), demonstrating how to create simple terrain, trees and skydomes, and how to implement a simple flight camera manipulator to allow the user to fly around. osghangglide.cpp
osghud osghud glider.osg Very similar to the basic osgviewer demo, but adds an orthographic projection over the top of the main 3D view to create a head up display effect. Also demonstrates how to use osgText. osghud.cpp
osgimpostor osgimpostor.cpp
osgintersection osgintersection.cpp
osgintrospection osgintrospection.cpp
osgkeyboard osgkeyboard.cpp
osgkeyboardmouse osgkeyboardmouse.cpp
osglauncher osglauncher.cpp
osglight osglight.cpp
osglightpoint osglightpoint.cpp
osglogicop osglogicop.cpp
osglogo osglogo.cpp
osgmanipulator osgmanipulator.cpp
osgmotionblur osgmotionblur.cpp
osgmovie osgmovie.cpp
osgmultiplerendertargets osgmultiplerendertargets.cpp
osgmultitexture osgmultitexture.cpp
osgmultitexturecontrol osgmultitexturecontrol.cpp
osgoccluder osgoccluder.cpp
osgocclusionquery osgocclusionquery.cpp
osgpagedlod osgpagedlod.cpp
osgparametric osgparametric.cpp
osgparticle osgparticle.cpp
osgparticleeffects osgparticleeffects.cpp
osgphotoalbum osgphotoalbum.cpp
osgpick osgpick.cpp
osgplanets osgplanets.cpp
osgpoints osgpoints.cpp
osgpointsprite osgpointsprite.cpp
osgreflect osgreflect cow.osg An example of how to set up planar reflections using the standard multi-pass stencil buffer algorithm. This is all handled within the scene graph, so there is no need to hardwire multi-pass effects into your own application.
osgscribe osgscribe cow.osg An example of how to decorate your scene graph geometry for useful effects such as scribing. This demo uses two instances of your model, the first one uses the state values set in your scene graph, the second instance override the polygmode to render it as wireframe, and with a polygon offset to ensure it is seen from all angles. These two instance are grouped together and then are treated like any other scene graph.
osgshadow Demonstrates diverse techniques for real-time shadow generation. More osgShadow
osgstereoimage osgstereoimage left.rgb right.rgb An example of use node maks to select different parts of the scene graph for different traversals, in this case two separate images are drawn for the left and right eyes to generate a stereo 3D image from two flat images!
osgtext osgtext An example showing how to creating the various different typs of text that the osgText library supports.
osgvolume Needs a list of 2D images, or a 3D image (.dds)
--clip <ratio> clip volume as a ratio, 0.0 clip all, 1.0 clip none.
--compressed Enable the usage of compressed textures.
--compressed-arb Enable the usage of OpenGL ARB compressed textures
--compressed-dxt1 Enable the usage of S3TC DXT1 compressed textures.
--compressed-dxt3 Enable the usage of S3TC DXT3 compressed textures.
--compressed-dxt5 Enable the usage of S3TC DXT5 compressed textures.
--images [filenames] Specify a stack of 2d images to build the 3d volume from.
--maxTextureSize <size> Set the texture maximum resolution in the s,t,r (x,y,z) dimensions.
--modulate-alpha-by-luminance For each pixel multiple the alpha value by the luminance.
--num-components <num> Set the number of components to in he target image.
--r_maxTextureSize <size> Set the texture maximum resolution in the r (z) dimension.
--replace-alpha-with-luminance For each pixel mSet the alpha value to the luminance.
--s_maxTextureSize <size> Set the texture maximum resolution in the s (x) dimension.
--shader Use OpenGL Shading Language.
--t_maxTextureSize <size> Set the texture maximum resolution in the t (y) dimension.
--xMultiplier <multiplier> Tex coord x mulitplier.
--xSize <size> Relative width of rendered brick.
--yMultiplier <multiplier> Tex coord y mulitplier.
--ySize <size> Relative length of rendered brick.
--zMultiplier <multiplier> Tex coord z mulitplier.
--zSize <size> Relative height of rendered brick.
-h or --help Display this information
-n Create normal map for per voxel lighting.
-s <numSlices> Number of slices to create.