openscenegraph
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
osg::ClusterCullingCallback Class Reference

Implements cluster culling to cull back facing subgraphs and drawables. Derived from Drawable::CullCallback and osg::NodeCallback. More...

Inheritance diagram for osg::ClusterCullingCallback:
osg::DrawableCullCallback osg::NodeCallback osg::Callback osg::Callback osg::Object osg::Object osg::Referenced osg::Referenced

Public Member Functions

 ClusterCullingCallback ()
 
 ClusterCullingCallback (const ClusterCullingCallback &ccc, const CopyOp &copyop)
 
 ClusterCullingCallback (const osg::Vec3 &controlPoint, const osg::Vec3 &normal, float deviation, float radius=-1.0f)
 
 ClusterCullingCallback (const osg::Drawable *drawable)
 
 META_Object (osg, ClusterCullingCallback)
 
virtual NodeCallback * asNodeCallback ()
 
virtual const NodeCallback * asNodeCallback () const
 
virtual DrawableCullCallback * asDrawableCullCallback ()
 
virtual const DrawableCullCallback * asDrawableCullCallback () const
 
virtual bool run (osg::Object *object, osg::Object *data)
 
void computeFrom (const osg::Drawable *drawable)
 
void transform (const osg::Matrixd &matrix)
 
void set (const osg::Vec3 &controlPoint, const osg::Vec3 &normal, float deviation, float radius)
 
void setControlPoint (const osg::Vec3 &controlPoint)
 
const osg::Vec3 & getControlPoint () const
 
void setNormal (const osg::Vec3 &normal)
 
const osg::Vec3 & getNormal () const
 
void setRadius (float radius)
 
float getRadius () const
 
void setDeviation (float deviation)
 
float getDeviation () const
 
virtual bool cull (osg::NodeVisitor *, osg::Drawable *, osg::State *) const
 
virtual void operator() (Node *node, NodeVisitor *nv)
 
- Public Member Functions inherited from osg::DrawableCullCallback
 DrawableCullCallback ()
 
 DrawableCullCallback (const DrawableCullCallback &org, const CopyOp &copyop)
 
 META_Object (osg, DrawableCullCallback)
 
virtual DrawableCullCallback * asDrawableCullCallback ()
 
virtual const DrawableCullCallback * asDrawableCullCallback () const
 
virtual bool cull (osg::NodeVisitor *, osg::Drawable *, osg::State *) const
 
virtual bool cull (osg::NodeVisitor *nv, osg::Drawable *drawable, osg::RenderInfo *renderInfo) const
 
virtual bool run (osg::Object *object, osg::Object *data)
 
- Public Member Functions inherited from osg::Callback
 Callback ()
 
 Callback (const Callback &cb, const CopyOp &copyop)
 
 META_Object (osg, Callback)
 
virtual Callback * asCallback ()
 
virtual const Callback * asCallback () const
 
virtual CallbackObject * asCallbackObject ()
 
virtual const CallbackObject * asCallbackObject () const
 
virtual NodeCallback * asNodeCallback ()
 
virtual const NodeCallback * asNodeCallback () const
 
virtual StateAttributeCallback * asStateAttributeCallback ()
 
virtual const StateAttributeCallback * asStateAttributeCallback () const
 
virtual UniformCallback * asUniformCallback ()
 
virtual const UniformCallback * asUniformCallback () const
 
virtual DrawableUpdateCallback * asDrawableUpdateCallback ()
 
virtual const DrawableUpdateCallback * asDrawableUpdateCallback () const
 
virtual DrawableEventCallback * asDrawableEventCallback ()
 
virtual const DrawableEventCallback * asDrawableEventCallback () const
 
virtual DrawableCullCallback * asDrawableCullCallback ()
 
virtual const DrawableCullCallback * asDrawableCullCallback () const
 
virtual osgGA::EventHandler * asEventHandler ()
 
virtual const osgGA::EventHandler * asEventHandler () const
 
virtual bool run (osg::Object *object, osg::Object *data)
 
bool traverse (osg::Object *object, osg::Object *data)
 
void setNestedCallback (osg::Callback *cb)
 
osg::Callback * getNestedCallback ()
 
const osg::Callback * getNestedCallback () const
 
void addNestedCallback (osg::Callback *nc)
 
void removeNestedCallback (osg::Callback *nc)
 
- Public Member Functions inherited from osg::Object
 Object ()
 
 Object (bool threadSafeRefUnref)
 
 Object (const Object &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
 
virtual Object * cloneType () const =0
 
virtual Object * clone (const CopyOp &) const =0
 
virtual bool isSameKindAs (const Object *) const
 
virtual const char * libraryName () const =0
 
virtual const char * className () const =0
 
std::string getCompoundClassName () const
 
virtual Node * asNode ()
 
virtual const Node * asNode () const
 
virtual NodeVisitor * asNodeVisitor ()
 
virtual const NodeVisitor * asNodeVisitor () const
 
virtual StateSet * asStateSet ()
 
virtual const StateSet * asStateSet () const
 
virtual StateAttribute * asStateAttribute ()
 
virtual const StateAttribute * asStateAttribute () const
 
virtual Uniform * asUniform ()
 
virtual const Uniform * asUniform () const
 
virtual Camera * asCamera ()
 
virtual const Camera * asCamera () const
 
virtual Drawable * asDrawable ()
 
virtual const Drawable * asDrawable () const
 
virtual Callback * asCallback ()
 
virtual const Callback * asCallback () const
 
virtual CallbackObject * asCallbackObject ()
 
virtual const CallbackObject * asCallbackObject () const
 
virtual UserDataContainer * asUserDataContainer ()
 
virtual const UserDataContainer * asUserDataContainer () const
 
virtual ValueObject * asValueObject ()
 
virtual const ValueObject * asValueObject () const
 
virtual Image * asImage ()
 
virtual const Image * asImage () const
 
virtual void setThreadSafeRefUnref (bool threadSafe)
 
virtual void setName (const std::string &name)
 
void setName (const char *name)
 
const std::string & getName () const
 
void setDataVariance (DataVariance dv)
 
DataVariance getDataVariance () const
 
virtual void computeDataVariance ()
 
void setUserDataContainer (osg::UserDataContainer *udc)
 
template<class T >
void setUserDataContainer (const ref_ptr< T > &udc)
 
osg::UserDataContainer * getUserDataContainer ()
 
const osg::UserDataContainer * getUserDataContainer () const
 
osg::UserDataContainer * getOrCreateUserDataContainer ()
 
virtual void setUserData (Referenced *obj)
 
template<class T >
void setUserData (const ref_ptr< T > &ud)
 
virtual Referenced * getUserData ()
 
virtual const Referenced * getUserData () const
 
template<typename T >
bool getUserValue (const std::string &name, T &value) const
 
template<typename T >
void setUserValue (const std::string &name, const T &value)
 
virtual void resizeGLObjectBuffers (unsigned int)
 
virtual void releaseGLObjects (osg::State *=0) const
 
template<typename T >
BoolValueObject UCharValueObject UShortValueObject UIntValueObject DoubleValueObject Vec3fValueObject Vec2dValueObject Vec4dValueObject PlaneValueObject MatrixdValueObject BoundingBoxdValueObject BoundingSpheredValueObject bool getUserValue (const std::string &name, T &value) const
 
- Public Member Functions inherited from osg::Referenced
 Referenced ()
 
 Referenced (bool threadSafeRefUnref)
 
 Referenced (const Referenced &)
 
Referenced & operator= (const Referenced &)
 
virtual void setThreadSafeRefUnref (bool)
 
bool getThreadSafeRefUnref () const
 
OpenThreads::Mutex * getRefMutex () const
 
int ref () const
 
int unref () const
 
int unref_nodelete () const
 
int referenceCount () const
 
ObserverSet * getObserverSet () const
 
ObserverSet * getOrCreateObserverSet () const
 
void addObserver (Observer *observer) const
 
void removeObserver (Observer *observer) const
 
- Public Member Functions inherited from osg::NodeCallback
 NodeCallback ()
 
 NodeCallback (const NodeCallback &nc, const CopyOp &copyop)
 
 META_Object (osg, NodeCallback)
 
virtual NodeCallback * asNodeCallback ()
 
virtual const NodeCallback * asNodeCallback () const
 
virtual bool run (osg::Object *object, osg::Object *data)
 
virtual void operator() (Node *node, NodeVisitor *nv)
 

Protected Member Functions

virtual ~ClusterCullingCallback ()
 
- Protected Member Functions inherited from osg::Callback
virtual ~Callback ()
 
- Protected Member Functions inherited from osg::Object
virtual ~Object ()
 
- Protected Member Functions inherited from osg::Referenced
virtual ~Referenced ()
 
void signalObserversAndDelete (bool signalDelete, bool doDelete) const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from osg::NodeCallback
virtual ~NodeCallback ()
 

Protected Attributes

osg::Vec3 _controlPoint
 
osg::Vec3 _normal
 
float _radius
 
float _deviation
 
- Protected Attributes inherited from osg::Callback
ref_ptr< Callback > _nestedCallback
 
- Protected Attributes inherited from osg::Object
std::string _name
 
DataVariance _dataVariance
 
osg::UserDataContainer * _userDataContainer
 
- Protected Attributes inherited from osg::Referenced
OpenThreads::AtomicPtr _observerSet
 
OpenThreads::Atomic _refCount
 

Additional Inherited Members

- Public Types inherited from osg::Object
enum  DataVariance { DYNAMIC , STATIC , UNSPECIFIED }
 
- Static Public Member Functions inherited from osg::Referenced
static OpenThreads::Mutex * getGlobalReferencedMutex ()
 
static void setDeleteHandler (DeleteHandler *handler)
 
static DeleteHandler * getDeleteHandler ()
 

Detailed Description

Implements cluster culling to cull back facing subgraphs and drawables. Derived from Drawable::CullCallback and osg::NodeCallback.

This culling callback is intended to be attached to a node using the setCullCallback method. If the node is a drawable cull(osg::NodeVisitor*, osg::Drawable*, osg::State*) otherwise operator()(Node*, NodeVisitor*) will be called during the cull traversal.

To decide whether the node (in case of a drawable) or its children (in case of any other node type) are to be culled depends on four parameters:

The node is culled if the following two conditions are fulfilled:

Remarks
As the deviation is representing the cosine of an enclosed angle its value should be within the the interval [-1; 1]. A value of one will cull all nodes while a value of -1 will never cull a node. The deviation will normally have negative values because then the enclosed angle between the normal and the eye/view point is larger than 90 degrees (and therefore the eye sees the "back" from the control point).

Constructor & Destructor Documentation

◆ ClusterCullingCallback() [1/4]

osg::ClusterCullingCallback::ClusterCullingCallback ( )

◆ ClusterCullingCallback() [2/4]

osg::ClusterCullingCallback::ClusterCullingCallback ( const ClusterCullingCallback &  ccc,
const CopyOp &  copyop 
)

◆ ClusterCullingCallback() [3/4]

osg::ClusterCullingCallback::ClusterCullingCallback ( const osg::Vec3 &  controlPoint,
const osg::Vec3 &  normal,
float  deviation,
float  radius = -1.0f 
)

◆ ClusterCullingCallback() [4/4]

osg::ClusterCullingCallback::ClusterCullingCallback ( const osg::Drawable *  drawable)

◆ ~ClusterCullingCallback()

virtual osg::ClusterCullingCallback::~ClusterCullingCallback ( )
inlineprotectedvirtual

Member Function Documentation

◆ asDrawableCullCallback() [1/2]

virtual DrawableCullCallback * osg::ClusterCullingCallback::asDrawableCullCallback ( )
inlinevirtual

Reimplemented from osg::DrawableCullCallback.

◆ asDrawableCullCallback() [2/2]

virtual const DrawableCullCallback * osg::ClusterCullingCallback::asDrawableCullCallback ( ) const
inlinevirtual

Reimplemented from osg::DrawableCullCallback.

◆ asNodeCallback() [1/2]

virtual NodeCallback * osg::ClusterCullingCallback::asNodeCallback ( )
inlinevirtual

Reimplemented from osg::NodeCallback.

◆ asNodeCallback() [2/2]

virtual const NodeCallback * osg::ClusterCullingCallback::asNodeCallback ( ) const
inlinevirtual

Reimplemented from osg::NodeCallback.

◆ computeFrom()

void osg::ClusterCullingCallback::computeFrom ( const osg::Drawable *  drawable)

Computes the control point, normal, and deviation from the given drawable contents.

◆ cull()

virtual bool osg::ClusterCullingCallback::cull ( osg::NodeVisitor *  ,
osg::Drawable *  ,
osg::State *   
) const
virtual

deprecated.

Reimplemented from osg::DrawableCullCallback.

◆ getControlPoint()

const osg::Vec3 & osg::ClusterCullingCallback::getControlPoint ( ) const
inline

◆ getDeviation()

float osg::ClusterCullingCallback::getDeviation ( ) const
inline

◆ getNormal()

const osg::Vec3 & osg::ClusterCullingCallback::getNormal ( ) const
inline

◆ getRadius()

float osg::ClusterCullingCallback::getRadius ( ) const
inline

◆ META_Object()

osg::ClusterCullingCallback::META_Object ( osg  ,
ClusterCullingCallback   
)

◆ operator()()

virtual void osg::ClusterCullingCallback::operator() ( Node *  node,
NodeVisitor *  nv 
)
virtual

Callback method called by the NodeVisitor when visiting a node.

Reimplemented from osg::NodeCallback.

◆ run()

virtual bool osg::ClusterCullingCallback::run ( osg::Object *  object,
osg::Object *  data 
)
inlinevirtual

NodeCallback overrides the Callback::run() method to adapt it the old style NodeCallback::operator()(Node* node, NodeVisitor* nv) method.

Reimplemented from osg::NodeCallback.

◆ set()

void osg::ClusterCullingCallback::set ( const osg::Vec3 &  controlPoint,
const osg::Vec3 &  normal,
float  deviation,
float  radius 
)

◆ setControlPoint()

void osg::ClusterCullingCallback::setControlPoint ( const osg::Vec3 &  controlPoint)
inline

◆ setDeviation()

void osg::ClusterCullingCallback::setDeviation ( float  deviation)
inline

◆ setNormal()

void osg::ClusterCullingCallback::setNormal ( const osg::Vec3 &  normal)
inline

◆ setRadius()

void osg::ClusterCullingCallback::setRadius ( float  radius)
inline

◆ transform()

void osg::ClusterCullingCallback::transform ( const osg::Matrixd &  matrix)

Transform the ClusterCullingCallback's positional members to a new coordinate frame.

Member Data Documentation

◆ _controlPoint

osg::Vec3 osg::ClusterCullingCallback::_controlPoint
protected

◆ _deviation

float osg::ClusterCullingCallback::_deviation
protected

◆ _normal

osg::Vec3 osg::ClusterCullingCallback::_normal
protected

◆ _radius

float osg::ClusterCullingCallback::_radius
protected

The documentation for this class was generated from the following file: