openscenegraph
|
Public Types | |
enum | CenterMode { USE_BOUNDING_SPHERE_CENTER, USER_DEFINED_CENTER } |
enum | RangeMode { DISTANCE_FROM_EYE_POINT, PIXEL_SIZE_ON_SCREEN } |
typedef osg::BoundingSphere::vec_type | vec_type |
typedef osg::BoundingSphere::value_type | value_type |
typedef std::pair< float, float > | MinMaxPair |
typedef std::vector< MinMaxPair > | RangeList |
Public Member Functions | |
LOD () | |
LOD (const LOD &, const CopyOp ©op=CopyOp::SHALLOW_COPY) | |
META_Node (osg, LOD) | |
virtual void | traverse (NodeVisitor &nv) |
virtual bool | addChild (Node *child) |
virtual bool | addChild (Node *child, float min, float max) |
virtual bool | removeChildren (unsigned int pos, unsigned int numChildrenToRemove=1) |
void | setCenterMode (CenterMode mode) |
CenterMode | getCenterMode () const |
void | setCenter (const vec_type ¢er) |
const vec_type & | getCenter () const |
void | setRadius (value_type radius) |
value_type | getRadius () const |
void | setRangeMode (RangeMode mode) |
RangeMode | getRangeMode () const |
void | setRange (unsigned int childNo, float min, float max) |
float | getMinRange (unsigned int childNo) const |
float | getMaxRange (unsigned int childNo) const |
unsigned int | getNumRanges () const |
void | setRangeList (const RangeList &rangeList) |
const RangeList & | getRangeList () const |
virtual BoundingSphere | computeBound () const |
Protected Member Functions | |
virtual | ~LOD () |
Protected Attributes | |
CenterMode | _centerMode |
vec_type | _userDefinedCenter |
value_type | _radius |
RangeMode | _rangeMode |
RangeList | _rangeList |
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.
typedef std::pair<float,float> osg::LOD::MinMaxPair |
typedef std::vector<MinMaxPair> osg::LOD::RangeList |
enum osg::LOD::CenterMode |
enum osg::LOD::RangeMode |
osg::LOD::LOD | ( | ) |
Copy constructor using CopyOp to manage deep vs shallow copy.
virtual osg::LOD::~LOD | ( | ) | [inline, protected, virtual] |
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.
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] |
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] |
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 osg::PagedLOD, and osgSim::Impostor.
CenterMode osg::LOD::_centerMode [protected] |
value_type osg::LOD::_radius [protected] |
RangeList osg::LOD::_rangeList [protected] |
RangeMode osg::LOD::_rangeMode [protected] |
vec_type osg::LOD::_userDefinedCenter [protected] |