osgUtil::CullVisitor Class Reference

Inheritance diagram for osgUtil::CullVisitor:

osg::NodeVisitor osg::CullStack osg::Referenced osg::CullSettings List of all members.

Public Types

typedef osg::Matrix::value_type value_type

Public Member Functions

 CullVisitor ()
virtual ~CullVisitor ()
virtual CullVisitor * cloneType () const
virtual void reset ()
virtual osg::Vec3 getEyePoint () const
virtual float getDistanceToEyePoint (const osg::Vec3 &pos, bool withLODScale) const
virtual float getDistanceFromEyePoint (const osg::Vec3 &pos, bool withLODScale) const
virtual void apply (osg::Node &)
virtual void apply (osg::Geode &node)
virtual void apply (osg::Billboard &node)
virtual void apply (osg::LightSource &node)
virtual void apply (osg::ClipNode &node)
virtual void apply (osg::TexGenNode &node)
virtual void apply (osg::Group &node)
virtual void apply (osg::Transform &node)
virtual void apply (osg::Projection &node)
virtual void apply (osg::Switch &node)
virtual void apply (osg::LOD &node)
virtual void apply (osg::ClearNode &node)
virtual void apply (osg::CameraNode &node)
virtual void apply (osg::OccluderNode &node)
void setClearNode (const osg::ClearNode *earthSky)
const osg::ClearNode * getClearNode () const
void pushStateSet (const osg::StateSet *ss)
void popStateSet ()
void setStateGraph (StateGraph *rg)
StateGraph * getRootStateGraph ()
StateGraph * getCurrentStateGraph ()
void setRenderStage (RenderStage *rg)
RenderStage * getRenderStage ()
RenderBin * getCurrentRenderBin ()
void setCurrentRenderBin (RenderBin *rb)
value_type getCalculatedNearPlane () const
value_type getCalculatedFarPlane () const
value_type computeNearestPointInFrustum (const osg::Matrix &matrix, const osg::Polytope::PlaneList &planes, const osg::Drawable &drawable)
bool updateCalculatedNearFar (const osg::Matrix &matrix, const osg::BoundingBox &bb)
bool updateCalculatedNearFar (const osg::Matrix &matrix, const osg::Drawable &drawable, bool isBillboard=false)
void updateCalculatedNearFar (const osg::Vec3 &pos)
void addDrawable (osg::Drawable *drawable, osg::RefMatrix *matrix)
void addDrawableAndDepth (osg::Drawable *drawable, osg::RefMatrix *matrix, float depth)
void addPositionedAttribute (osg::RefMatrix *matrix, const osg::StateAttribute *attr)
void addPositionedTextureAttribute (unsigned int textureUnit, osg::RefMatrix *matrix, const osg::StateAttribute *attr)
virtual void popProjectionMatrix ()
virtual bool clampProjectionMatrixImplementation (osg::Matrixf &projection, double &znear, double &zfar) const
virtual bool clampProjectionMatrixImplementation (osg::Matrixd &projection, double &znear, double &zfar) const
bool clampProjectionMatrix (osg::Matrixf &projection, value_type &znear, value_type &zfar) const
bool clampProjectionMatrix (osg::Matrixd &projection, value_type &znear, value_type &zfar) const
void setState (osg::State *state)
osg::State * getState ()
const osg::State * getState () const

Protected Types

typedef std::vector< osg::ref_ptr<
RenderLeaf > > 
RenderLeafList
typedef std::multimap< value_type,
MatrixPlanesDrawables > 
DistanceMatrixDrawableMap

Protected Member Functions

CullVisitor & operator= (const CullVisitor &)
void handle_cull_callbacks_and_traverse (osg::Node &node)
void handle_cull_callbacks_and_accept (osg::Node &node, osg::Node *acceptNode)
RenderLeaf * createOrReuseRenderLeaf (osg::Drawable *drawable, osg::RefMatrix *projection, osg::RefMatrix *matrix, float depth=0.0f)

Protected Attributes

osg::ref_ptr< const osg::ClearNode > _clearNode
osg::ref_ptr< StateGraph > _rootStateGraph
StateGraph * _currentStateGraph
osg::ref_ptr< RenderStage > _rootRenderStage
RenderBin * _currentRenderBin
value_type _computed_znear
value_type _computed_zfar
RenderLeafList _reuseRenderLeafList
unsigned int _currentReuseRenderLeafIndex
unsigned int _numberOfEncloseOverrideRenderBinDetails
osg::ref_ptr< osg::State > _state
DistanceMatrixDrawableMap _nearPlaneCandidateMap

Classes

struct  MatrixPlanesDrawables

Detailed Description

Basic NodeVisitor implementation for rendering a scene. This visitor traverses the scene graph, collecting transparent and opaque osg::Drawables into a depth sorted transparent bin and a state sorted opaque bin. The opaque bin is rendered first, and then the transparent bin is rendered in order from the furthest osg::Drawable from the eye to the one nearest the eye.


Member Typedef Documentation

typedef std::multimap<value_type, MatrixPlanesDrawables> osgUtil::CullVisitor::DistanceMatrixDrawableMap [protected]

typedef std::vector< osg::ref_ptr<RenderLeaf> > osgUtil::CullVisitor::RenderLeafList [protected]

typedef osg::Matrix::value_type osgUtil::CullVisitor::value_type


Constructor & Destructor Documentation

osgUtil::CullVisitor::CullVisitor (  ) 

virtual osgUtil::CullVisitor::~CullVisitor (  )  [virtual]


Member Function Documentation

void osgUtil::CullVisitor::addDrawable ( osg::Drawable *  drawable,
osg::RefMatrix *  matrix 
) [inline]

Add a drawable to current render graph.

void osgUtil::CullVisitor::addDrawableAndDepth ( osg::Drawable *  drawable,
osg::RefMatrix *  matrix,
float  depth 
) [inline]

Add a drawable and depth to current render graph.

void osgUtil::CullVisitor::addPositionedAttribute ( osg::RefMatrix *  matrix,
const osg::StateAttribute *  attr 
) [inline]

Add an attribute which is positioned relative to the modelview matrix.

void osgUtil::CullVisitor::addPositionedTextureAttribute ( unsigned int  textureUnit,
osg::RefMatrix *  matrix,
const osg::StateAttribute *  attr 
) [inline]

Add an attribute which is positioned relative to the modelview matrix.

virtual void osgUtil::CullVisitor::apply ( osg::OccluderNode &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::CameraNode &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::ClearNode &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::LOD &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Switch &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Projection &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Transform &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Group &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::TexGenNode &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::ClipNode &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::LightSource &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Billboard &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Geode &  node  )  [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::CullVisitor::apply ( osg::Node &   )  [virtual]

Reimplemented from osg::NodeVisitor.

bool osgUtil::CullVisitor::clampProjectionMatrix ( osg::Matrixd &  projection,
value_type &  znear,
value_type &  zfar 
) const [inline]

Clamp the projection double matrix to computed near and far values, use callback if it exists, otherwise use default CullVisitor implementation.

bool osgUtil::CullVisitor::clampProjectionMatrix ( osg::Matrixf &  projection,
value_type &  znear,
value_type &  zfar 
) const [inline]

Clamp the projection float matrix to computed near and far values, use callback if it exists, otherwise use default CullVisitor implementation.

virtual bool osgUtil::CullVisitor::clampProjectionMatrixImplementation ( osg::Matrixd &  projection,
double &  znear,
double &  zfar 
) const [virtual]

CullVisitor's default clamping of the projection double matrix to computed near and far values. Note, do not call this method directly, use clampProjectionMatrix(..) instead, unless you want to bypass the callback.

virtual bool osgUtil::CullVisitor::clampProjectionMatrixImplementation ( osg::Matrixf &  projection,
double &  znear,
double &  zfar 
) const [virtual]

CullVisitor's default clamping of the projection float matrix to computed near and far values. Note, do not call this method directly, use clampProjectionMatrix(..) instead, unless you want to bypass the callback.

virtual CullVisitor* osgUtil::CullVisitor::cloneType (  )  const [inline, virtual]

value_type osgUtil::CullVisitor::computeNearestPointInFrustum ( const osg::Matrix &  matrix,
const osg::Polytope::PlaneList &  planes,
const osg::Drawable &  drawable 
)

RenderLeaf * osgUtil::CullVisitor::createOrReuseRenderLeaf ( osg::Drawable *  drawable,
osg::RefMatrix *  projection,
osg::RefMatrix *  matrix,
float  depth = 0.0f 
) [inline, protected]

value_type osgUtil::CullVisitor::getCalculatedFarPlane (  )  const [inline]

value_type osgUtil::CullVisitor::getCalculatedNearPlane (  )  const [inline]

const osg::ClearNode* osgUtil::CullVisitor::getClearNode (  )  const [inline]

RenderBin* osgUtil::CullVisitor::getCurrentRenderBin (  )  [inline]

StateGraph* osgUtil::CullVisitor::getCurrentStateGraph (  )  [inline]

virtual float osgUtil::CullVisitor::getDistanceFromEyePoint ( const osg::Vec3 &  pos,
bool  withLODScale 
) const [virtual]

Get the distance of a point from the eye point, distance value in the eye coordinate system. Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement. If the getDistanceFromEyePoint(pos) is not implemented than a default value of 0.0 is returned.

Reimplemented from osg::NodeVisitor.

virtual float osgUtil::CullVisitor::getDistanceToEyePoint ( const osg::Vec3 &  pos,
bool  withLODScale 
) const [virtual]

Get the distance from a point to the eye point, distance value in local coordinate system. Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement. If the getDistanceFromEyePoint(pos) is not implemented then a default value of 0.0 is returned.

Reimplemented from osg::NodeVisitor.

virtual osg::Vec3 osgUtil::CullVisitor::getEyePoint (  )  const [inline, virtual]

Get the eye point in local coordinates. Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement.

Reimplemented from osg::NodeVisitor.

RenderStage* osgUtil::CullVisitor::getRenderStage (  )  [inline]

StateGraph* osgUtil::CullVisitor::getRootStateGraph (  )  [inline]

const osg::State* osgUtil::CullVisitor::getState (  )  const [inline]

osg::State* osgUtil::CullVisitor::getState (  )  [inline]

void osgUtil::CullVisitor::handle_cull_callbacks_and_accept ( osg::Node &  node,
osg::Node *  acceptNode 
) [inline, protected]

void osgUtil::CullVisitor::handle_cull_callbacks_and_traverse ( osg::Node &  node  )  [inline, protected]

CullVisitor& osgUtil::CullVisitor::operator= ( const CullVisitor &   )  [inline, protected]

Prevent unwanted copy operator.

virtual void osgUtil::CullVisitor::popProjectionMatrix (  )  [virtual]

Re-implement CullStack's popProjectionMatrix() adding clamping of the projection matrix to the computed near and far.

Reimplemented from osg::CullStack.

void osgUtil::CullVisitor::popStateSet (  )  [inline]

Pop the top state set and hence associated state group. Move the current state group to the parent of the popped state group.

void osgUtil::CullVisitor::pushStateSet ( const osg::StateSet *  ss  )  [inline]

Push state set on the current state group. If the state exists in a child state group of the current state group then move the current state group to that child. Otherwise, create a new state group for the state set, add it to the current state group then move the current state group pointer to the new state group.

virtual void osgUtil::CullVisitor::reset (  )  [virtual]

Reimplemented from osg::CullStack.

void osgUtil::CullVisitor::setClearNode ( const osg::ClearNode *  earthSky  )  [inline]

void osgUtil::CullVisitor::setCurrentRenderBin ( RenderBin *  rb  )  [inline]

void osgUtil::CullVisitor::setRenderStage ( RenderStage *  rg  )  [inline]

void osgUtil::CullVisitor::setState ( osg::State *  state  )  [inline]

void osgUtil::CullVisitor::setStateGraph ( StateGraph *  rg  )  [inline]

void osgUtil::CullVisitor::updateCalculatedNearFar ( const osg::Vec3 &  pos  ) 

bool osgUtil::CullVisitor::updateCalculatedNearFar ( const osg::Matrix &  matrix,
const osg::Drawable &  drawable,
bool  isBillboard = false 
)

bool osgUtil::CullVisitor::updateCalculatedNearFar ( const osg::Matrix &  matrix,
const osg::BoundingBox &  bb 
)


Member Data Documentation

osg::ref_ptr<const osg::ClearNode> osgUtil::CullVisitor::_clearNode [protected]

value_type osgUtil::CullVisitor::_computed_zfar [protected]

value_type osgUtil::CullVisitor::_computed_znear [protected]

RenderBin* osgUtil::CullVisitor::_currentRenderBin [protected]

unsigned int osgUtil::CullVisitor::_currentReuseRenderLeafIndex [protected]

StateGraph* osgUtil::CullVisitor::_currentStateGraph [protected]

DistanceMatrixDrawableMap osgUtil::CullVisitor::_nearPlaneCandidateMap [protected]

unsigned int osgUtil::CullVisitor::_numberOfEncloseOverrideRenderBinDetails [protected]

RenderLeafList osgUtil::CullVisitor::_reuseRenderLeafList [protected]

osg::ref_ptr<RenderStage> osgUtil::CullVisitor::_rootRenderStage [protected]

osg::ref_ptr<StateGraph> osgUtil::CullVisitor::_rootStateGraph [protected]

osg::ref_ptr<osg::State> osgUtil::CullVisitor::_state [protected]


The documentation for this class was generated from the following file:
Generated on Sun Oct 1 13:17:13 2006 for openscenegraph by  doxygen 1.4.7