OpenSceneGraph  3.0.1
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
osg::LOD Class Reference

LOD - Level Of Detail group node which allows switching between children depending on distance from eye point. More...

Inheritance diagram for osg::LOD:
Inheritance graph
[legend]

List of all members.

Public Types

enum  CenterMode { USE_BOUNDING_SPHERE_CENTER, USER_DEFINED_CENTER }
 Modes which control how the center of object should be determined when computing which child is active. More...
enum  RangeMode { DISTANCE_FROM_EYE_POINT, PIXEL_SIZE_ON_SCREEN }
 Modes that control how the range values should be interpreted when computing which child is active. More...
typedef
osg::BoundingSphere::vec_type 
vec_type
typedef
osg::BoundingSphere::value_type 
value_type
typedef std::pair< float, float > MinMaxPair
typedef std::vector< MinMaxPairRangeList

Public Member Functions

 LOD ()
 LOD (const LOD &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
 Copy constructor using CopyOp to manage deep vs shallow copy.
 META_Node (osg, LOD)
virtual void traverse (NodeVisitor &nv)
 Traverse downwards : calls children's accept method with NodeVisitor.
virtual bool addChild (Node *child)
 Add Node to Group.
virtual bool addChild (Node *child, float min, float max)
virtual bool removeChildren (unsigned int pos, unsigned int numChildrenToRemove=1)
 Remove children from Group.
void setCenterMode (CenterMode mode)
 Set how the center of object should be determined when computing which child is active.
CenterMode getCenterMode () const
 Get how the center of object should be determined when computing which child is active.
void setCenter (const vec_type &center)
 Sets the object-space point which defines the center of the osg::LOD.
const vec_typegetCenter () const
 return the LOD center point.
void setRadius (value_type radius)
 Set the object-space reference radius of the volume enclosed by the LOD.
value_type getRadius () const
 Get the object-space radius of the volume enclosed by the LOD.
void setRangeMode (RangeMode mode)
 Set how the range values should be interpreted when computing which child is active.
RangeMode getRangeMode () const
 Get how the range values should be interpreted when computing which child is active.
void setRange (unsigned int childNo, float min, float max)
 Sets the min and max visible ranges of range of specific child.
float getMinRange (unsigned int childNo) const
 returns the min visible range for specified child.
float getMaxRange (unsigned int childNo) const
 returns the max visible range for specified child.
unsigned int getNumRanges () const
 returns the number of ranges currently set.
void setRangeList (const RangeList &rangeList)
 set the list of MinMax ranges for each child.
const RangeListgetRangeList () const
 return the list of MinMax ranges for each child.
virtual BoundingSphere computeBound () const
 Compute the bounding sphere around Node's geometry or children.

Protected Member Functions

virtual ~LOD ()

Protected Attributes

CenterMode _centerMode
vec_type _userDefinedCenter
value_type _radius
RangeMode _rangeMode
RangeList _rangeList

Detailed Description

LOD - Level Of Detail group node which allows switching between children depending on distance from eye point.

Typical uses are for load balancing - objects further away from the eye point are rendered at a lower level of detail, and at times of high stress on the graphics pipeline lower levels of detail can also be chosen by adjusting the viewers's Camera/CullSettings LODScale value. Each child has a corresponding valid range consisting of a minimum and maximum distance. Given a distance to the viewer (d), LOD displays a child if min <= d < max. LOD may display multiple children simultaneously if their corresponding ranges overlap. Children can be in any order, and don't need to be sorted by range or amount of detail. If the number of ranges (m) is less than the number of children (n), then children m+1 through n are ignored.


Member Typedef Documentation

typedef std::pair<float,float> osg::LOD::MinMaxPair
typedef std::vector<MinMaxPair> osg::LOD::RangeList

Member Enumeration Documentation

Modes which control how the center of object should be determined when computing which child is active.

Enumerator:
USE_BOUNDING_SPHERE_CENTER 
USER_DEFINED_CENTER 

Modes that control how the range values should be interpreted when computing which child is active.

Enumerator:
DISTANCE_FROM_EYE_POINT 
PIXEL_SIZE_ON_SCREEN 

Constructor & Destructor Documentation

osg::LOD::LOD ( )
osg::LOD::LOD ( const LOD ,
const CopyOp copyop = CopyOp::SHALLOW_COPY 
)

Copy constructor using CopyOp to manage deep vs shallow copy.

virtual osg::LOD::~LOD ( ) [inline, protected, virtual]

Member Function Documentation

virtual bool osg::LOD::addChild ( Node child) [virtual]

Add Node to Group.

If node is not NULL and is not contained in Group then increment its reference count, add it to the child list and dirty the bounding sphere to force it to recompute on next getBound() and return true for success. Otherwise return false. Scene nodes can't be added as child nodes.

Reimplemented from osg::Group.

Reimplemented in osg::PagedLOD.

virtual bool osg::LOD::addChild ( Node child,
float  min,
float  max 
) [virtual]

Reimplemented in osg::PagedLOD.

virtual BoundingSphere osg::LOD::computeBound ( ) const [virtual]

Compute the bounding sphere around Node's geometry or children.

This method is automatically called by getBound() when the bounding sphere has been marked dirty via dirtyBound().

Reimplemented from osg::Group.

Reimplemented in osgSim::Impostor.

const vec_type& osg::LOD::getCenter ( ) const [inline]

return the LOD center point.

CenterMode osg::LOD::getCenterMode ( ) const [inline]

Get how the center of object should be determined when computing which child is active.

float osg::LOD::getMaxRange ( unsigned int  childNo) const [inline]

returns the max visible range for specified child.

float osg::LOD::getMinRange ( unsigned int  childNo) const [inline]

returns the min visible range for specified child.

unsigned int osg::LOD::getNumRanges ( ) const [inline]

returns the number of ranges currently set.

An LOD which has been fully set up will have getNumChildren()==getNumRanges().

value_type osg::LOD::getRadius ( ) const [inline]

Get the object-space radius of the volume enclosed by the LOD.

const RangeList& osg::LOD::getRangeList ( ) const [inline]

return the list of MinMax ranges for each child.

RangeMode osg::LOD::getRangeMode ( ) const [inline]

Get how the range values should be interpreted when computing which child is active.

osg::LOD::META_Node ( osg  ,
LOD   
)
virtual bool osg::LOD::removeChildren ( unsigned int  pos,
unsigned int  numChildrenToRemove = 1 
) [virtual]

Remove children from Group.

Note, must be override by subclasses of Group which add per child attributes.

Reimplemented from osg::Group.

Reimplemented in osg::PagedLOD.

void osg::LOD::setCenter ( const vec_type center) [inline]

Sets the object-space point which defines the center of the osg::LOD.

center is affected by any transforms in the hierarchy above the osg::LOD.

void osg::LOD::setCenterMode ( CenterMode  mode) [inline]

Set how the center of object should be determined when computing which child is active.

void osg::LOD::setRadius ( value_type  radius) [inline]

Set the object-space reference radius of the volume enclosed by the LOD.

Used to determine the bounding sphere of the LOD in the absence of any children.

void osg::LOD::setRange ( unsigned int  childNo,
float  min,
float  max 
)

Sets the min and max visible ranges of range of specific child.

Values are floating point distance specified in local objects coordinates.

void osg::LOD::setRangeList ( const RangeList rangeList) [inline]

set the list of MinMax ranges for each child.

void osg::LOD::setRangeMode ( RangeMode  mode) [inline]

Set how the range values should be interpreted when computing which child is active.

virtual void osg::LOD::traverse ( NodeVisitor ) [virtual]

Traverse downwards : calls children's accept method with NodeVisitor.

Reimplemented from osg::Group.

Reimplemented in osgSim::Impostor, and osg::PagedLOD.


Member Data Documentation


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

osg logo
Generated at Mon Oct 3 2011 12:39:42 for the OpenSceneGraph by doxygen 1.7.5.