THREE.JS Raycasting с целой линией - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть геометрия и line3.line3 немного "зависает" над поверхностью геометрии, и я хочу найти грани, которые касались бы line3, если бы его пришлось опустить и обернуть на поверхность.

Конечно, поскольку я не могу "обернуть" свои line3, я направляю лучи точек line3 на геометрию и нахожу пересекающиеся точки.

Это позволяет мне обнаружить лицо 1и лицо 4, но я не могу определить лицо 2 и 3, потому что на line3 нет точки для лучевого вещания, кроме его начальной и конечной точек.

enter image description here

Как я могу придумать алгоритм, который позволяет мне обнаруживать все грани, которые line3 "пересекает" поверхность, если на нее накрутить?

1 Ответ

0 голосов
/ 19 апреля 2019

Вы пытаетесь обернуть веревку вокруг куба и найти все треугольники, которых касается веревка?Это похоже на проблему кратчайшего пути на поверхности.Вы можете сделать это на кубе, сгладив его в 2D и навести 3 прямые линии (и найти самую короткую), если они находятся на соседних поверхностях, или на 12 линий, если они находятся на противоположных поверхностях. Подробности смотрите в этом посте. Нет простых решений по поиску геодезических линий, проходящих через произвольные сетки.Вы можете найти относительно хорошее решение на основе геодезической линии вдоль краев сетки

Если вам все равно, является ли путь кратчайшим или нет, и просто хотите «отбросить тень»на поверхности, то решение зависит от того, в каком направлении находится ваш «источник света».Создайте бесконечно длинный треугольник с вашим отрезком и «направлением света», и проверьте все треугольники в сетке, чтобы увидеть, пересекаются ли они с этим треугольником.

...