1#ifndef EmbreeTargetShape_h
2#define EmbreeTargetShape_h
13#include <embree3/rtcore.h>
14#include <embree3/rtcore_ray.h>
17#include <pcl/io/auto_io.h>
18#include <pcl/point_types.h>
19#include <pcl/PolygonMesh.h>
47 const std::vector<double> &direction);
86 const std::vector<double> &direction);
147 QString
name()
const;
160 static void multiHitFilter(
const RTCFilterFunctionNArguments *args);
166 void initMesh(pcl::PolygonMesh::Ptr mesh);
200 pcl::PolygonMesh::Ptr m_mesh;
203 pcl::PointCloud<pcl::PointXYZ> m_cloud;
Embree Target Shape for planetary bodies.
Definition EmbreeTargetShape.h:139
bool isOccluded(RTCOcclusionRay &ray)
Check if a ray intersects the target body.
Definition EmbreeTargetShape.cpp:675
void initMesh(pcl::PolygonMesh::Ptr mesh)
Internalize a PointCloudLibrary polygon mesh in the target shape.
Definition EmbreeTargetShape.cpp:450
pcl::PolygonMesh::Ptr readDSK(FileName file)
Read a NAIF type 2 DSK file into a PointCloudLibrary polygon mesh.
Definition EmbreeTargetShape.cpp:311
static void occlusionFilter(const RTCFilterFunctionNArguments *args)
Filter function for collecting multiple primitiveIDs This function is called by the Embree library du...
Definition EmbreeTargetShape.cpp:818
int numberOfPolygons() const
Return the number of polygons in the target shape.
Definition EmbreeTargetShape.cpp:564
int numberOfVertices() const
Return the number of vertices in the target shape.
Definition EmbreeTargetShape.cpp:578
virtual ~EmbreeTargetShape()
Desctructor.
Definition EmbreeTargetShape.cpp:552
bool isValid() const
Return if a valid mesh is internalized and ready for use.
Definition EmbreeTargetShape.cpp:765
void addVertices(int geomID)
Adds the vertices from the internalized vertex point cloud to the Embree scene.
Definition EmbreeTargetShape.cpp:507
static void multiHitFilter(const RTCFilterFunctionNArguments *args)
Filter function for collecting multiple hits during ray intersection.
Definition EmbreeTargetShape.cpp:779
pcl::PolygonMesh::Ptr readPC(FileName file)
Read a PointCloudLibrary file into a PointCloudLibrary polygon mesh.
Definition EmbreeTargetShape.cpp:421
void addIndices(int geomID)
Adds the polygon vertex indices from the internalized polygon mesh to the Embree scene.
Definition EmbreeTargetShape.cpp:532
RayHitInformation getHitInformation(RTCMultiHitRay &ray, int hitIndex)
Extract the intersection point and unit surface normal from an RTCMultiHitRay that has been intersect...
Definition EmbreeTargetShape.cpp:708
RTCBounds sceneBounds() const
Returns the bounds of the Embree scene.
Definition EmbreeTargetShape.cpp:596
void intersectRay(RTCMultiHitRay &ray)
Intersect a ray with the target shape.
Definition EmbreeTargetShape.cpp:658
EmbreeTargetShape()
Default empty constructor.
Definition EmbreeTargetShape.cpp:225
QString name() const
Return the name of the target shape.
Definition EmbreeTargetShape.cpp:755
double maximumSceneDistance() const
Return the maximum distance within the scene.
Definition EmbreeTargetShape.cpp:619
File name manipulation and expansion.
Definition FileName.h:100
boost::numeric::ublas::vector< double > Vector
Definition for an Isis::LinearAlgebra::Vector of doubles.
Definition LinearAlgebra.h:132
Container for cube-like labels.
Definition Pvl.h:119
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Struct for capturing multiple intersections when using embree::rtcintersectscene.
Definition EmbreeTargetShape.h:44
float hitUs[16]
Barycentric u coordinate of the hits.
Definition EmbreeTargetShape.h:69
unsigned hitGeomIDs[16]
IDs of the geometries (bodies) hit.
Definition EmbreeTargetShape.h:67
float hitVs[16]
Barycentric v coordinate of the hits.
Definition EmbreeTargetShape.h:70
unsigned hitPrimIDs[16]
IDs of the primitives (trinagles) hit.
Definition EmbreeTargetShape.h:68
RTCMultiHitRay()
Default constructor for RTCMultiHitRay.
Definition EmbreeTargetShape.cpp:28
int lastHit
Index of the last hit in the hit containers.
Definition EmbreeTargetShape.h:71
Struct for capturing occluded plates when using embree::rtcintersectscene.
Definition EmbreeTargetShape.h:83
RTCOcclusionRay()
Default constructor for RTCOcclussionRay.
Definition EmbreeTargetShape.cpp:112
unsigned ignorePrimID
IDs of the primitives (trinagles) which should be ignored.
Definition EmbreeTargetShape.h:106
int lastHit
Index of the last hit in the hit containers.
Definition EmbreeTargetShape.h:105