29 explicit operator bool()
const {
return proj.face.valid(); }
67 const MeshPart& meshPart,
68 const std::vector<Vector3f>& origins,
69 const std::vector<Vector3f>& dirs,
72 float rayStart = 0.0f,
float rayEnd = FLT_MAX,
73 bool closestIntersect =
true,
98 float rayStart = 0.0f,
float rayEnd = FLT_MAX );
101 double rayStart = 0.0,
double rayEnd = DBL_MAX );
120 FaceBitSet * fs, UndirectedEdgeBitSet * ues, VertBitSet * vs,
121 std::vector<FaceId> * fsVec =
nullptr );
129 FaceBitSet * fs, UndirectedEdgeBitSet * ues, VertBitSet * vs,
130 std::vector<FaceId> * fsVec =
nullptr );
#define MRMESH_API
Definition MRMeshFwd.h:80
Definition MRAABBTree.h:16
void rayMeshIntersectAll(const MeshPart &meshPart, const Line3f &line, MeshIntersectionCallback callback, float rayStart=0.0f, float rayEnd=FLT_MAX, const IntersectionPrecomputes< float > *prec=nullptr)
MeshIntersectionResult rayMeshIntersect(const MeshPart &meshPart, const Line3f &line, float rayStart=0.0f, float rayEnd=FLT_MAX, const IntersectionPrecomputes< float > *prec=nullptr, bool closestIntersect=true, const FacePredicate &validFaces={})
void planeMeshIntersect(const MeshPart &meshPart, const Plane3f &plane, FaceBitSet *fs, UndirectedEdgeBitSet *ues, VertBitSet *vs, std::vector< FaceId > *fsVec=nullptr)
Line3Mesh< double > Line3dMesh
Definition MRMeshIntersect.h:93
Line3Mesh< float > Line3fMesh
Definition MRMeshIntersect.h:92
void xyPlaneMeshIntersect(const MeshPart &meshPart, float zLevel, FaceBitSet *fs, UndirectedEdgeBitSet *ues, VertBitSet *vs, std::vector< FaceId > *fsVec=nullptr)
std::function< bool(const MeshIntersectionResult &)> MeshIntersectionCallback
Definition MRMeshIntersect.h:105
void multiRayMeshIntersect(const MeshPart &meshPart, const std::vector< Vector3f > &origins, const std::vector< Vector3f > &dirs, const MultiRayMeshIntersectResult &result, float rayStart=0.0f, float rayEnd=FLT_MAX, bool closestIntersect=true, const FacePredicate &validFaces={})
MultiMeshIntersectionResult rayMultiMeshAnyIntersect(const std::vector< Line3fMesh > &lineMeshes, float rayStart=0.0f, float rayEnd=FLT_MAX)
std::function< bool(FaceId)> FacePredicate
Definition MRMeshFwd.h:569
Plane3f
Definition MRMeshFwd.h:393
Line< Vector3< T > > Line3
Definition MRMeshFwd.h:344
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRIntersectionPrecomputes.h:117
Definition MRMeshIntersect.h:85
Line3< float > line
Definition MRMeshIntersect.h:86
const Mesh * mesh
Definition MRMeshIntersect.h:88
const FaceBitSet * region
Definition MRMeshIntersect.h:90
const AABBTree * tree
Definition MRMeshIntersect.h:89
IntersectionPrecomputes< float > * prec
Definition MRMeshIntersect.h:87
Definition MRMeshIntersect.h:18
PointOnFace proj
stores intersected face and global coordinates
Definition MRMeshIntersect.h:20
float distanceAlongLine
stores the distance from ray origin to the intersection point in direction units
Definition MRMeshIntersect.h:26
MeshTriPoint mtp
stores barycentric coordinates
Definition MRMeshIntersect.h:23
Definition MRMeshTriPoint.h:26
Definition MRMeshIntersect.h:78
const Mesh * mesh
the intersection found in this mesh
Definition MRMeshIntersect.h:80
Definition MRMeshIntersect.h:53
BitSet * intersectingRays
outputs (each one if optional) for every ray:
Definition MRMeshIntersect.h:55
std::vector< Vector3f > * isectPts
intersection points or NaNs if no intersection
Definition MRMeshIntersect.h:59
std::vector< float > * rayDistances
distance along each ray till the intersection point or NaN if no intersection
Definition MRMeshIntersect.h:56
std::vector< FaceId > * isectFaces
intersected triangles from mesh
Definition MRMeshIntersect.h:57
std::vector< TriPointf > * isectBary
barycentric coordinates of the intersection point within intersected triangle or NaNs if no intersect...
Definition MRMeshIntersect.h:58
a point located on some mesh's face
Definition MRPointOnFace.h:16