Пересечение Möller-Trumbore ray самое быстрое?

для проекта трассировщика лучей я изучал алгоритмы, связанные с поиском пересечения между лучами и треугольниками (определенными тремя вершинами). До сих пор я обнаружил, что алгоритм Меллера-Трамбора (MT) используется повсеместно.

Итак, мои вопросы 1) Есть ли альтернативы MT или алгоритм считается самым быстрым способом вычисления пересечений? 2) если да, то доказано, что MT оптимален или может кто-то предположительно изобрести еще быстрее алгоритм?

редактировать: теперь я вижу, что мой вопрос очень похож на Ray-треугольник пересечения

2 ответов


есть статья с 2016 года, где авторы утверждают

работает в идеальных экспериментальных условиях, наш алгоритм всегда быстрее, чем стандартный алгоритм Меллера и Трамбора, и быстрее чем сильно настроенная современная версия его за исключением на очень высоком ray-треугольник хит ставки.

источник: Дуг Болдуин и Майкл Вебер, быстрые пересечения лучей-треугольников по преобразованию координат, журнал компьютерной графики Techniques (JCGT), vol. 5, нет. 3, 39-49, 2016

доступно онлайн http://jcgt.org/published/0005/03/03/


будьте осторожны с алгоритмом Вебера. Хотя это может быть быстрее, я вижу большое количество перекрестков, ошибочно идентифицированных как не пересекающихся. В документе говорится:

эта серия вычислений может закончиться рано, если t слишком мал или велик, чтобы представлять допустимое пересечение, или если b1 находится вне диапазона, допускающего пересечение.

Я видел, что около 2-3% моей сетки терпят неудачу рано, потому что " t " был слишком мал. Я все еще устраняю неполадки, но похоже, что инверсия P заставляет мой вектор направления вращения быть слишком большим, приравниваясь к маленькому "t".

с другой стороны, вы также можете получить ложные пересечения с алгоритмом MT, если epsilon установлен неправильно.