diff --git a/lib/src/bvh.rs b/lib/src/bvh.rs index 14a0ec9..2f24212 100644 --- a/lib/src/bvh.rs +++ b/lib/src/bvh.rs @@ -119,7 +119,8 @@ impl Bvh{ let clamped_point=start_point.min(aabb.max()).max(aabb.min()); Some((start_point-clamped_point).length_squared()) }; - let (_,event_slice)=self.bvh.traverse(start_point,Fixed::ZERO,Fixed::MAX,intersect_leaf,intersect_aabb)?; + // traverse uses strict `start_time < t`, so use NEG_EPSILON to keep exact-zero-distance hits. + let (_,event_slice)=self.bvh.traverse(start_point,Fixed::NEG_EPSILON,Fixed::MAX,intersect_leaf,intersect_aabb)?; // find time at the closest point let (best_time,mut best_distance)=output_events[event_slice.slice.start..event_slice.slice.end].iter().map(|event|{