OpenSceneGraph 3.6.5
|
RayIntersector implements possibly-infinite line intersections with the scene graph. More...
#include <RayIntersector>
Classes | |
struct | Intersection |
Public Types | |
typedef std::multiset< Intersection > | Intersections |
Public Types inherited from osgUtil::Intersector | |
enum | CoordinateFrame { WINDOW , PROJECTION , VIEW , MODEL } |
enum | IntersectionLimit { NO_LIMIT , LIMIT_ONE_PER_DRAWABLE , LIMIT_ONE , LIMIT_NEAREST } |
enum | PrecisionHint { USE_DOUBLE_CALCULATIONS , USE_FLOAT_CALCULATIONS } |
Hint to precision used in the internal intersections calculations. More... |
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 () |
Public Member Functions inherited from osgUtil::Intersector | |
Intersector (CoordinateFrame cf=MODEL, IntersectionLimit il=NO_LIMIT) | |
void | setCoordinateFrame (CoordinateFrame cf) |
CoordinateFrame | getCoordinateFrame () const |
void | setIntersectionLimit (IntersectionLimit limit) |
IntersectionLimit | getIntersectionLimit () const |
bool | disabled () const |
void | incrementDisabledCount () |
void | decrementDisabledCount () |
bool | reachedLimit () |
void | setPrecisionHint (PrecisionHint hint) |
Set the hint to what precision to use in the intersections calculations. | |
PrecisionHint | getPrecisionHint () const |
Get the hint to what precision should be used in the intersections calculations. | |
Public Member Functions inherited from osg::Referenced | |
Referenced () | |
Referenced (bool threadSafeRefUnref) | |
Deprecated, Referenced is now always uses thread safe ref/unref, use default Referenced() constructor instead. | |
Referenced (const Referenced &) | |
Referenced & | operator= (const Referenced &) |
virtual void | setThreadSafeRefUnref (bool) |
Deprecated, Referenced is always theadsafe so there method now has no effect and does not need to be called. | |
bool | getThreadSafeRefUnref () const |
Get whether a mutex is used to ensure ref() and unref() are thread safe. | |
OpenThreads::Mutex * | getRefMutex () const |
Get the mutex used to ensure thread safety of ref()/unref(). | |
int | ref () const |
Increment the reference count by one, indicating that this object has another pointer which is referencing it. | |
int | unref () const |
Decrement the reference count by one, indicating that a pointer to this object is no longer referencing it. | |
int | unref_nodelete () const |
Decrement the reference count by one, indicating that a pointer to this object is no longer referencing it. | |
int | referenceCount () const |
Return the number of pointers currently referencing this object. | |
ObserverSet * | getObserverSet () const |
Get the ObserverSet if one is attached, otherwise return NULL. | |
ObserverSet * | getOrCreateObserverSet () const |
Get the ObserverSet if one is attached, otherwise create an ObserverSet, attach it, then return this newly created ObserverSet. | |
void | addObserver (Observer *observer) const |
Add a Observer that is observing this object, notify the Observer when this object gets deleted. | |
void | removeObserver (Observer *observer) const |
Remove Observer that is observing this object. |
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 Member Functions inherited from osg::Referenced | |
virtual | ~Referenced () |
void | signalObserversAndDelete (bool signalDelete, bool doDelete) const |
void | deleteUsingDeleteHandler () const |
Protected Attributes | |
RayIntersector * | _parent |
osg::Vec3d | _start |
osg::Vec3d | _direction |
Intersections | _intersections |
Protected Attributes inherited from osgUtil::Intersector | |
CoordinateFrame | _coordinateFrame |
IntersectionLimit | _intersectionLimit |
unsigned int | _disabledCount |
PrecisionHint | _precisionHint |
Protected Attributes inherited from osg::Referenced | |
OpenThreads::AtomicPtr | _observerSet |
OpenThreads::Atomic | _refCount |
Additional Inherited Members | |
Static Public Member Functions inherited from osg::Referenced | |
static OpenThreads::Mutex * | getGlobalReferencedMutex () |
Get the optional global Referenced mutex, this can be shared between all osg::Referenced. | |
static void | setDeleteHandler (DeleteHandler *handler) |
Set a DeleteHandler to which deletion of all referenced counted objects will be delegated. | |
static DeleteHandler * | getDeleteHandler () |
Get a DeleteHandler. |
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().
References osgUtil::Intersector::MODEL, osgUtil::Intersector::NO_LIMIT, NULL, and RayIntersector().
Referenced by RayIntersector(), and RayIntersector().
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.
References osgUtil::Intersector::NO_LIMIT, NULL, and RayIntersector().
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 |
Implements osgUtil::Intersector.
References osgUtil::Intersector::Intersector().
|
inlinevirtual |
Implements osgUtil::Intersector.
References getIntersections().
|
virtual |
Implements osgUtil::Intersector.
|
inline |
References _direction.
|
inline |
References getIntersections().
|
inline |
References _intersections, and _parent.
Referenced by containsIntersections(), getFirstIntersection(), and insertIntersection().
|
inline |
References _start.
|
inline |
References getIntersections().
|
virtual |
Implements osgUtil::Intersector.
|
protected |
|
protectedvirtual |
|
virtual |
Implements osgUtil::Intersector.
|
virtual |
Reimplemented from osgUtil::Intersector.
|
inlinevirtual |
References _direction.
|
inlinevirtual |
References _start.
|
protected |
Referenced by getDirection(), and setDirection().
|
protected |
Referenced by getIntersections().
|
protected |
Referenced by getIntersections().
|
protected |
Referenced by getStart(), and setStart().
![]() | Generated at Sun Jul 20 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0. |