17 class EmbreeRayTracer;
24#define C_INTERFACE extern "C" __declspec(dllexport) int
102 template <
typename N,
typename V>
103 void SetHit(
const N& node,
const V& direction,
float dist,
int mid) {
270 std::vector<RayResult>** out_results,
317 const float* direction,
318 const float max_distance,
556 const float* origins,
557 const float* directions,
577 std::vector<RayResult>* analysis
C_INTERFACE AddMeshes(HF::RayTracer::EmbreeRayTracer *ERT, HF::Geometry::MeshInfo< float > **MI, int number_of_meshes)
Add a new mesh to a raytracer.
C_INTERFACE CastSingleRayDistance(HF::RayTracer::EmbreeRayTracer *ert, const float *origin, const float *direction, const float max_distance, float *out_distance, int *out_meshid)
Cast a single ray and get the distance to its hit and the mesh ID if it hit anything....
C_INTERFACE CreateRaytracer(HF::Geometry::MeshInfo< float > *mesh, HF::RayTracer::EmbreeRayTracer **out_raytracer, bool use_precise)
Create a new raytracer using several meshes.
C_INTERFACE DestroyRayResultVector(std::vector< RayResult > *analysis)
Destroy a vector of rayresults.
C_INTERFACE CastMultipleRays(HF::RayTracer::EmbreeRayTracer *ert, float *origins, const float *directions, int size, float max_distance, bool *result_array)
Cast multiple rays at once in parallel and receive their hitpoints in return. The number of direction...
C_INTERFACE AddMesh(HF::RayTracer::EmbreeRayTracer *ERT, HF::Geometry::MeshInfo< float > *MI)
Add a new mesh to a raytracer.
C_INTERFACE CastRaysDistance(HF::RayTracer::EmbreeRayTracer *ert, float *origins, int num_origins, float *directions, int num_directions, std::vector< RayResult > **out_results, RayResult **results_data)
Cast rays for each node in origins/directions as ordered pairs and get distance back as a result.
C_INTERFACE CastMultipleDirectionsOneOrigin(HF::RayTracer::EmbreeRayTracer *ert, const float *origin, float *directions, int size, float max_distance, bool *result_array)
Cast rays from a single origin point in multiple directions and get a the points where they intersect...
C_INTERFACE CastRay(HF::RayTracer::EmbreeRayTracer *ert, float &x, float &y, float &z, float dx, float dy, float dz, float max_distance, bool &result)
Cast a single ray from the raytracer and receive a point in return.
C_INTERFACE CreateRaytracerMultiMesh(HF::Geometry::MeshInfo< float > **meshes, int num_meshes, HF::RayTracer::EmbreeRayTracer **out_raytracer, bool use_precise)
Create a new raytracer using several meshes.
C_INTERFACE DestroyRayTracer(HF::RayTracer::EmbreeRayTracer *rt_to_destroy)
Delete an existing raytracer.
C_INTERFACE PreciseIntersection(HF::RayTracer::EmbreeRayTracer *RT, double x, double y, double z, double dx, double dy, double dz, double *out_distance)
C_INTERFACE CastOcclusionRays(HF::RayTracer::EmbreeRayTracer *ert, const float *origins, const float *directions, int origin_size, int direction_size, float max_distance, bool *result_array)
Cast one or more occlusion rays in parallel.
C_INTERFACE CastMultipleOriginsOneDirection(HF::RayTracer::EmbreeRayTracer *ert, float *origins, const float *direction, int size, float max_distance, bool *result_array)
Cast rays from each origin point in the given direction.
Perform human scale analysis on 3D environments.
HF::RayTracer::MultiRT RayTracer
Type of raytracer to be used internally.
A collection of vertices and indices representing geometry.
A wrapper for Intel's Embree Library.
The result of casting a ray at an object. Contains distance to the hitpoint and the ID of the mesh.
void SetHit(const N &node, const V &direction, float dist, int mid)
Update this result based on the ray intersection. Similar structures can be created to support differ...