- Рейтинг
- 15
Ради интереса хотел сделать скрипт который строит сплайн между двух точек на поверхности объекта по кратчайшему пути.
Каким оптимальным способом можно это сделать? Немного погуглив, заметил что например для измерения длины используют развёртку объекта.
По этому я тоже думаю использовать развёртку.
Вот что придумал, но может есть что-то по проще:
Каким оптимальным способом можно это сделать? Немного погуглив, заметил что например для измерения длины используют развёртку объекта.
По этому я тоже думаю использовать развёртку.
Вот что придумал, но может есть что-то по проще:
Первым делом сделаем копию объекта, и дальше работаем с ней.
Скрин #1
Сначала выделяем полигоны по которым должен будет проходить сплайн. Для этого используем волновой алгоритм (Алгоритм Ли). А в место ячеек будут полигоны. Применяем ещё Grow на всякий случай. После чего, оставляем только выделенные полики, остальные удаляем.
Скрин #2
Теперь разворачиваем эту поверхность. Делаем Pelt и Relax.
На юви координатах находим эти две точки. Далее от первой точки двигаемся к второй с определённым шагом. Например всю длину вектора разбить на 100 шагов. То после первого шага мы получим [0.104,0.108,0]. Конвертируем полученные юви координаты обратно в мировые, и по ним строим сплайн. От количества шагов будет зависеть плотность сплайна (Скрин #3).
Скрин #1
Сначала выделяем полигоны по которым должен будет проходить сплайн. Для этого используем волновой алгоритм (Алгоритм Ли). А в место ячеек будут полигоны. Применяем ещё Grow на всякий случай. После чего, оставляем только выделенные полики, остальные удаляем.
Скрин #2
Теперь разворачиваем эту поверхность. Делаем Pelt и Relax.
На юви координатах находим эти две точки. Далее от первой точки двигаемся к второй с определённым шагом. Например всю длину вектора разбить на 100 шагов. То после первого шага мы получим [0.104,0.108,0]. Конвертируем полученные юви координаты обратно в мировые, и по ним строим сплайн. От количества шагов будет зависеть плотность сплайна (Скрин #3).
Последнее редактирование: