A common use case for this library is determining pairwise visibility between mesh elements, such as triangles.
Embree's intersect1M or similar records the first intersection for each ray. This makes shooting a ray "from" a triangle difficult, since it can easily happen that the first intersection is just that triangle. To get around this, the start of a ray can be perturbed away from the source element, but this is a hack.
Embree provides "intersection filters" to make skipping elements possible, but they require a callback. It would be useful to allow a user to pass their own callback, either from Python or even from Cython. But it is probably more important to capture some of the common cases (such as "skip self") at the library level.
A common use case for this library is determining pairwise visibility between mesh elements, such as triangles.
Embree's
intersect1M
or similar records the first intersection for each ray. This makes shooting a ray "from" a triangle difficult, since it can easily happen that the first intersection is just that triangle. To get around this, the start of a ray can be perturbed away from the source element, but this is a hack.Embree provides "intersection filters" to make skipping elements possible, but they require a callback. It would be useful to allow a user to pass their own callback, either from Python or even from Cython. But it is probably more important to capture some of the common cases (such as "skip self") at the library level.
Here's a forum post on the same topic.