OpenSceneGraph
3.4.0
|
RayIntersector implements possibly-infinite line intersections with the scene graph. More...
Classes | |
struct | Intersection |
Public Types | |
typedef std::multiset < Intersection > | Intersections |
Public Member Functions | |
RayIntersector (CoordinateFrame cf=MODEL, RayIntersector *parent=NULL, osgUtil::Intersector::IntersectionLimit intersectionLimit=osgUtil::Intersector::NO_LIMIT) | |
Construct a RayIntersector. | |
RayIntersector (const osg::Vec3d &start, const osg::Vec3d &direction) | |
Construct a RayIntersector that runs from start point in specified direction to the infinity. | |
RayIntersector (CoordinateFrame cf, const osg::Vec3d &start, const osg::Vec3d &direction, RayIntersector *parent=NULL, osgUtil::Intersector::IntersectionLimit intersectionLimit=osgUtil::Intersector::NO_LIMIT) | |
Construct a RayIntersector the runs from start point in specified direction to the infinity in the specified coordinate frame. | |
RayIntersector (CoordinateFrame cf, double x, double y) | |
Convenience constructor for supporting picking in WINDOW and PROJECTION coordinates. | |
void | insertIntersection (const Intersection &intersection) |
Intersections & | getIntersections () |
Intersection | getFirstIntersection () |
virtual void | setStart (const osg::Vec3d &start) |
const osg::Vec3d & | getStart () const |
virtual void | setDirection (const osg::Vec3d &dir) |
const osg::Vec3d & | getDirection () const |
virtual Intersector * | clone (osgUtil::IntersectionVisitor &iv) |
virtual bool | enter (const osg::Node &node) |
virtual void | leave () |
virtual void | intersect (osgUtil::IntersectionVisitor &iv, osg::Drawable *drawable) |
virtual void | reset () |
virtual bool | containsIntersections () |
Protected Member Functions | |
virtual bool | intersects (const osg::BoundingSphere &bs) |
bool | intersectAndClip (osg::Vec3d &s, const osg::Vec3d &d, osg::Vec3d &e, const osg::BoundingBox &bb) |
Protected Attributes | |
RayIntersector * | _parent |
osg::Vec3d | _start |
osg::Vec3d | _direction |
Intersections | _intersections |
RayIntersector implements possibly-infinite line intersections with the scene graph.
Compared with LineSegmentIntersector, RayIntersector supports infinite intersection lines, start and end point can be given in homogeneous coordinates and projection matrix is allowed to have z-far plane at infinity (often used in shadow volume technique).
Currently, picking of objects at infinity is not supported. Please, contribute.
The class is be used in conjunction with IntersectionVisitor.
typedef std::multiset<Intersection> osgUtil::RayIntersector::Intersections |
osgUtil::RayIntersector::RayIntersector | ( | CoordinateFrame | cf = MODEL , |
RayIntersector * | parent = NULL , |
||
osgUtil::Intersector::IntersectionLimit | intersectionLimit = osgUtil::Intersector::NO_LIMIT |
||
) |
Construct a RayIntersector.
You will need to provide start and end point, or start point and direction. See setStart() and setDirecton().
osgUtil::RayIntersector::RayIntersector | ( | const osg::Vec3d & | start, |
const osg::Vec3d & | direction | ||
) |
Construct a RayIntersector that runs from start point in specified direction to the infinity.
Start and direction are provided in MODEL coordinates.
osgUtil::RayIntersector::RayIntersector | ( | CoordinateFrame | cf, |
const osg::Vec3d & | start, | ||
const osg::Vec3d & | direction, | ||
RayIntersector * | parent = NULL , |
||
osgUtil::Intersector::IntersectionLimit | intersectionLimit = osgUtil::Intersector::NO_LIMIT |
||
) |
Construct a RayIntersector the runs from start point in specified direction to the infinity in the specified coordinate frame.
osgUtil::RayIntersector::RayIntersector | ( | CoordinateFrame | cf, |
double | x, | ||
double | y | ||
) |
Convenience constructor for supporting picking in WINDOW and PROJECTION coordinates.
In WINDOW coordinates, it creates a start value of (x,y,0) and end value of (x,y,1). In PROJECTION coordinates (clip space cube), it creates a start value of (x,y,-1) and end value of (x,y,1). In VIEW and MODEL coordinates, it creates a start value of (x,y,0) and end value of (x,y,1).
virtual Intersector* osgUtil::RayIntersector::clone | ( | osgUtil::IntersectionVisitor & | iv | ) | [virtual] |
Implements osgUtil::Intersector.
virtual bool osgUtil::RayIntersector::containsIntersections | ( | ) | [inline, virtual] |
Implements osgUtil::Intersector.
virtual bool osgUtil::RayIntersector::enter | ( | const osg::Node & | node | ) | [virtual] |
Implements osgUtil::Intersector.
const osg::Vec3d& osgUtil::RayIntersector::getDirection | ( | ) | const [inline] |
Intersections& osgUtil::RayIntersector::getIntersections | ( | ) | [inline] |
const osg::Vec3d& osgUtil::RayIntersector::getStart | ( | ) | const [inline] |
void osgUtil::RayIntersector::insertIntersection | ( | const Intersection & | intersection | ) | [inline] |
virtual void osgUtil::RayIntersector::intersect | ( | osgUtil::IntersectionVisitor & | iv, |
osg::Drawable * | drawable | ||
) | [virtual] |
Implements osgUtil::Intersector.
bool osgUtil::RayIntersector::intersectAndClip | ( | osg::Vec3d & | s, |
const osg::Vec3d & | d, | ||
osg::Vec3d & | e, | ||
const osg::BoundingBox & | bb | ||
) | [protected] |
virtual bool osgUtil::RayIntersector::intersects | ( | const osg::BoundingSphere & | bs | ) | [protected, virtual] |
virtual void osgUtil::RayIntersector::leave | ( | ) | [virtual] |
Implements osgUtil::Intersector.
virtual void osgUtil::RayIntersector::reset | ( | ) | [virtual] |
Reimplemented from osgUtil::Intersector.
virtual void osgUtil::RayIntersector::setDirection | ( | const osg::Vec3d & | dir | ) | [inline, virtual] |
virtual void osgUtil::RayIntersector::setStart | ( | const osg::Vec3d & | start | ) | [inline, virtual] |
osg::Vec3d osgUtil::RayIntersector::_direction [protected] |
Intersections osgUtil::RayIntersector::_intersections [protected] |
RayIntersector* osgUtil::RayIntersector::_parent [protected] |
osg::Vec3d osgUtil::RayIntersector::_start [protected] |
![]() | Generated at Tue Dec 8 2015 00:16:51 for the OpenSceneGraph by doxygen 1.7.6.1. |