Visualization Library v1.0.3A lightweight C++ OpenGL middleware for 2D/3D graphics |
[Download] [Tutorials] [All Classes] [Grouped Classes] |
The RayIntersector class is used to detect the intersection points between a Ray and a set of Actor[s]. More...
#include <RayIntersector.hpp>
Public Member Functions | |
RayIntersector () | |
const ActorCollection * | actors () const |
The Actors against which the intersection test is performed. | |
ActorCollection * | actors () |
The Actors against which the intersection test is performed. | |
const Ray & | ray () const |
The ray in world coordinates to be intersected with the actors() | |
void | setRay (const Ray &ray) |
The ray in world coordinates to be intersected with the actors() | |
const Frustum & | frustum () const |
The frustum in world coordinates used to cull the objects. | |
void | setFrustum (const Frustum &frustum) |
The frustum in world coordinates used to cull the objects. | |
const std::vector< ref < RayIntersection > > & | intersections () const |
The intersection points detected by the last intersect() call sorted according to their distance (the first one is the closest). | |
void | intersect () |
Executes the intersection test. | |
void | intersect (const Ray &ray, SceneManager *scene_manager) |
Computes the intersections between the given ray and the Actor[s] contained in the given scene manager. | |
Protected Member Functions | |
void | intersect (Actor *act) |
void | intersectGeometry (Actor *act, Geometry *geom) |
template<class T > | |
void | intersectTriangle (const T &a, const T &b, const T &c, int ia, int ib, int ic, Actor *, Geometry *geom, DrawCall *prim, int prim_idx) |
Static Protected Member Functions | |
static bool | sorter (const ref< RayIntersection > &a, const ref< RayIntersection > &b) |
Protected Attributes | |
Frustum | mFrustum |
std::vector< ref < RayIntersection > > | mIntersections |
ref< ActorCollection > | mActors |
Ray | mRay |
The RayIntersector class is used to detect the intersection points between a Ray and a set of Actor[s].
Definition at line 133 of file RayIntersector.hpp.
vl::RayIntersector::RayIntersector | ( | ) | [inline] |
Definition at line 138 of file RayIntersector.hpp.
References VL_DEBUG_SET_OBJECT_NAME.
const ActorCollection* vl::RayIntersector::actors | ( | ) | const [inline] |
The Actors against which the intersection test is performed.
Definition at line 145 of file RayIntersector.hpp.
Referenced by intersect().
ActorCollection* vl::RayIntersector::actors | ( | ) | [inline] |
The Actors against which the intersection test is performed.
Definition at line 147 of file RayIntersector.hpp.
const Ray& vl::RayIntersector::ray | ( | ) | const [inline] |
The ray in world coordinates to be intersected with the actors()
Definition at line 150 of file RayIntersector.hpp.
Referenced by intersectTriangle().
void vl::RayIntersector::setRay | ( | const Ray & | ray ) | [inline] |
The ray in world coordinates to be intersected with the actors()
Definition at line 152 of file RayIntersector.hpp.
Referenced by intersect().
const Frustum& vl::RayIntersector::frustum | ( | ) | const [inline] |
The frustum in world coordinates used to cull the objects.
Definition at line 155 of file RayIntersector.hpp.
Referenced by intersect().
void vl::RayIntersector::setFrustum | ( | const Frustum & | frustum ) | [inline] |
The frustum in world coordinates used to cull the objects.
Definition at line 157 of file RayIntersector.hpp.
const std::vector< ref<RayIntersection> >& vl::RayIntersector::intersections | ( | ) | const [inline] |
The intersection points detected by the last intersect() call sorted according to their distance (the first one is the closest).
Definition at line 160 of file RayIntersector.hpp.
void RayIntersector::intersect | ( | ) |
Executes the intersection test.
Definition at line 46 of file RayIntersector.cpp.
References actors(), vl::Frustum::cull(), frustum(), mIntersections, vl::Collection< T >::size(), and sorter().
Referenced by intersect().
void RayIntersector::intersect | ( | const Ray & | ray, |
SceneManager * | scene_manager | ||
) |
Computes the intersections between the given ray and the Actor[s] contained in the given scene manager.
This is an utility function equivalent to:
intersector->actors()->clear(); scene_manager->extractActors( *intersector->actors() ); intersector->setRay(ray); intersector->intersect();
Definition at line 38 of file RayIntersector.cpp.
References actors(), vl::Collection< T >::clear(), vl::SceneManager::extractActors(), intersect(), and setRay().
static bool vl::RayIntersector::sorter | ( | const ref< RayIntersection > & | a, |
const ref< RayIntersection > & | b | ||
) | [inline, static, protected] |
Definition at line 180 of file RayIntersector.hpp.
Referenced by intersect().
void RayIntersector::intersect | ( | Actor * | act ) | [protected] |
Definition at line 60 of file RayIntersector.cpp.
References intersectGeometry(), and vl::Actor::lod().
Definition at line 67 of file RayIntersector.cpp.
References vl::Collection< T >::at(), vl::VertexAttribInfo::data(), vl::Geometry::drawCalls(), vl::ArrayAbstract::getAsVec3(), vl::TriangleIterator::hasNext(), intersectTriangle(), NULL, vl::Collection< T >::size(), vl::Actor::transform(), vl::DrawCall::triangleIterator(), vl::VA_Position, vl::Geometry::vertexArray(), vl::Geometry::vertexAttribArray(), and vl::Transform::worldMatrix().
Referenced by intersect().
void RayIntersector::intersectTriangle | ( | const T & | a, |
const T & | b, | ||
const T & | c, | ||
int | ia, | ||
int | ib, | ||
int | ic, | ||
Actor * | act, | ||
Geometry * | geom, | ||
DrawCall * | prim, | ||
int | prim_idx | ||
) | [protected] |
Definition at line 98 of file RayIntersector.cpp.
References vl::cross(), vl::Ray::direction(), vl::dot(), mIntersections, vl::Vector3< T_Scalar >::normalize(), vl::Ray::origin(), and ray().
Referenced by intersectGeometry().
Frustum vl::RayIntersector::mFrustum [protected] |
Definition at line 190 of file RayIntersector.hpp.
std::vector< ref<RayIntersection> > vl::RayIntersector::mIntersections [protected] |
Definition at line 191 of file RayIntersector.hpp.
Referenced by intersect(), and intersectTriangle().
ref<ActorCollection> vl::RayIntersector::mActors [protected] |
Definition at line 192 of file RayIntersector.hpp.
Ray vl::RayIntersector::mRay [protected] |
Definition at line 193 of file RayIntersector.hpp.