OpenSceneGraph 3.0 Beginner's Guide Rui Wang; Xuelei Qian Packt Publishing 2010
- The Journey into OpenSceneGraph
Retained (Deferred) vs Immediate rendering mode
Scene Graph Root node Group node Child node Leaf node
No directed cycle No orphan node
1998 Don Burns 1999 Robert Osfield 2005 1.0 2007 2.0 2011 3.0
Core libraries OpenThreads osg osgDB osgUtil NodeKits osgAnimation osgFX osgGA osgManipulator osgParticle osgShadow osgSim osgTerrain osgText osgViewer osgVolumn osgWidget osgQt
- Compilation and Installation of OpenSceneGraph
osgversion osgconv osgviewer W wireframe T texture L lighting F full-screen S statistics
Release stable: even minor version number un-stable: odd minor version number
Common environment variables OSG_FILE_PATH OSG_NOTIFY_LEVEL OSG_ROOT
- Creating Your First OSG Program
osg::Geode - geometry node - leaf osg::Drawable osg::ShapeDrawable (inefficient) osg::Geometry
osgUtil::Simplifier osgUtil::SmoothingVisitor osgUtil::TangentSpaceGenerator osgUtil::Tessellator osgUtil::TriStripVisitor
osg::Drawable::AttributeFunctor osg::Drawable::ConstAttributeFunctor osg::PrimitiveFunctor osg::PrimitiveIndexFunctor
osg::Drawable computeBound() drawImplementation() setUseDisplayList()
-
Building Geometry Models
-
Managing Scene Graph
Depth first traversal event update cull draw
Reference frame relative absolute
OSG uses row-major matrix.
osg::Node osg::Group
osg::Transform osg::MatrixTransform osg::PositionAttitudeTransform
osg::Switch osg::Simplifier
osg::LOD osg::ProxyNode osg::PagedLOD osg::DatabasePager
- Creating Realistic Rendering Effects
OpenGL state machine attributes modes
osg::StateSet Non-texture setAttribute() setMode() setAttributeAndModes() Texture setTextureAttribute() setTextureMode() setTextureAttributeAndModes()
- Viewing the World
Object Space (right-handed) Modeling Transform World Space (right-handed) View Transform Eye Space (right-handed) Projection Transform Clip Space (left-handed) Perspective Divide Normalized Device Space (left-handed) View and Depth Range Transform Window Space (left-handed)
Model-View matrix Move scene: model matrix glTranslate(), glRotate() osg::MatrixTransform, osg::PositionAttitudeTransform Move camera: view matrix gluLookAt() osg::Camera Combined glMultMatrix() osg::Transform
osg::Camera Matrix and viewport View matrix setViewMatrix() setViewMatrixAsLookAt() Projection matrix setProjectionMatrix() setProjectionMatrixAsFrustum() setProjectionMatrixAsOrtho() setProjectionMatrixAsOrtho2D() setProjectionMatrixAsPerspective() Viewport setViewport() Clear setClearMask() setClearColor() setClearDepth() setClearStensil() setClearAccum() Context Buffer color depth texture Other setRenderOrder()
osgViewer::Viewer run() manipulate camera modify graphics context render frame realize() initialize graphics context initialize resources initialize threads
OSG_WINDOW setUpViewInWindow() setUpViewOnSingleScreen() setUpViewFor3dSphericalDisplay()
osgViewer::CompositeViewer
osg::DisplaySettings instance() setDoubleBuffer() setDepthBuffer() setMinimumNumAlphaBits() setNumMultiSamples() stereo mode osg::GraphicsContext
- Animating Scene Objects
- Interacting with Outside Elements
osg::GraphicsContext::createGraphicsContext() osg::GraphicsContext::Traits
- Saving and Loading Files
- Developing Visual Components
osg::Billboard setMode() addChild() setNormal()
osgText::Text setFont() setPosition() setCharacterSize() setText()
- Improving Rendering Efficiency