Abstract
We propose a ray-triangle intersection algorithm with fast-rejection strategies. We intersect the ray with the triangle plane, then transform the intersection problem into 2D by applying a transformation matrix to the ray-plane intersection point. For 2D transformation, we study two different approaches. The first approach uses a transformation matrix which transforms the triangle into a unit triangle. Then, simple 2D tests are performed. The second approach transforms the triangle into a 2D triangle while preserving similarity. This allows us to prune (i.e., to clip away) areas surrounding the triangle, determining whether the transformed intersection point lies within the triangle. We discuss several optimizations for this pruning approach. We implemented both approaches into the CPU-based ray-tracing framework PBRT, version 3, and we performed a time-based comparison against PBRT’s default intersection algorithm and Baldwin and Weber’s algorithm. The results show that our algorithms are faster than the default algorithm. They are comparable to or slightly slower than Baldwin and Weber’s algorithm, however, the pruning approach produces watertight results and may be further optimized. Moreover, additional CPU/GPU experiments outside of PBRT document promising speedup over the standard Möller–Trumbore algorithm in areas like ray-casting or collision detection.
Reference
Pichler, T. A., Ferko, A., Ferko, M., Kán, P., & Kaufmann, H. (2022). Precomputed fast rejection ray-triangle intersection. Graphics and Visual Computing, 6, Article 200047. https://doi.org/10.1016/j.gvc.2022.200047