A Cached Intersector will first look at the local cache, and, if the local cache does not have the information, use the appropiate model set intersector to get the result, and cache it.
|
| | DtCachedIntersector (DtDe &de, DtModelSetId modelSet) |
| |
| virtual | ~DtCachedIntersector () |
| |
| virtual bool | findNearestIntersectionToPoint (double x, double y, double z, double vx, double vy, double vz, DtIntersectorResult &intersection, DtIntersector::IntersectProperties properties=DtIntersector::AllNodes, std::vector< DtElementID > *ignoreList=0, bool returnTriangle=false, double maxIsectorLength=-1., bool useHighLod=false) |
| |
| virtual bool | findAllIntersectionsThroughPoint (double x, double y, double z, double vx, double vy, double vz, DtIntersector::DtIntersections &intersections, DtIntersector::IntersectProperties properties=DtIntersector::AllNodes, std::vector< DtElementID > *ignoreList=0, bool sort=true, bool useHighLod=false) |
| |
| virtual bool | findFirstIntersectWithLineSegment (double x, double y, double z, double end_x, double end_y, double end_z, DtIntersectorResult &intersection, DtIntersector::IntersectProperties properties=DtIntersector::AllNodes, std::vector< DtElementID > *ignoreList=0, bool useHighLod=false) |
| |
| virtual bool | findAllIntersectWithLineSegment (double x, double y, double z, double end_x, double end_y, double end_z, DtIntersector::DtIntersections &intersections, DtIntersector::IntersectProperties properties=DtIntersector::AllNodes, std::vector< DtElementID > *ignoreList=0, bool sort=true, bool useHighLod=false) |
| |
| virtual bool | pick (DtChannel &channel, double mx, double my, DtIntersectorResult &intersection, DtIntersector::IntersectProperties properties=DtIntersector::AllNodes, std::vector< DtElementID > *ignoreList=0) |
| |
| virtual bool | pickAll (DtChannel *channel, double mx, double my, DtIntersector::DtIntersections &intersections, DtIntersector::IntersectProperties properties=DtIntersector::AllNodes, std::vector< DtElementID > *ignoreList=0) |
| |
| virtual void | setSharedCache (DtIntersectorCache *) |
| |
| virtual void | setCacheLimit (int) |
| |
| virtual void | clearCache () |
| |
| virtual void | setDynamicOceanProperties (DtIntersector::DynamicOceanProperties properties) |
| |
virtual
DtIntersector::DynamicOceanProperties | dynamicOceanProperties () const |
| |
| virtual bool makVrv::DtCachedIntersector::findNearestIntersectionToPoint |
( |
double |
x, |
|
|
double |
y, |
|
|
double |
z, |
|
|
double |
vx, |
|
|
double |
vy, |
|
|
double |
vz, |
|
|
DtIntersectorResult & |
intersection, |
|
|
DtIntersector::IntersectProperties |
properties = DtIntersector::AllNodes, |
|
|
std::vector< DtElementID > * |
ignoreList = 0, |
|
|
bool |
returnTriangle = false, |
|
|
double |
maxIsectorLength = -1., |
|
|
bool |
useHighLod = false |
|
) |
| |
|
virtual |
Find the nearest scene intersection from a point (x,y,z) along a vector(vx,vy,vz). The useHighLod argument tells the intersector that if the terrain is an osgEarth terrain, don't settle for whatever is paged in; get the highest LOD from the map server for this location and use that Note that if maxIsectorLength is not set, the default is the diameter of the database, which for large (and especially geocentric) databases and world databases, may be too large to get adequate precision when trying to interect small (high resolution) triangles. It is recommended that you set the isector length to something more specific if possible, like the altitude of the observer + a constant, for example; or, for osgEarth databases, useHighLod=true, which will also eliminate the problem.
- Return values
-
| false | if no intersection was found (and the isect record is NOT set). |