1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Сплайн между двух точек на поверхности объекта по кратчайшему пути

Тема в разделе "MAXScript", создана пользователем Владислав Бодюл, 2 янв 2015.

Модераторы: Savin Denis
  1. Владислав Бодюл

    Владислав Бодюл Активный участник

    С нами с:
    08.03.2011
    Сообщения:
    44
    Симпатии:
    2
    Баллы:
    12
    Ради интереса хотел сделать скрипт который строит сплайн между двух точек на поверхности объекта по кратчайшему пути.
    [​IMG]
    Каким оптимальным способом можно это сделать? Немного погуглив, заметил что например для измерения длины используют развёртку объекта.
    По этому я тоже думаю использовать развёртку.
    Вот что придумал, но может есть что-то по проще:
    Первым делом сделаем копию объекта, и дальше работаем с ней.

    Скрин #1
    Сначала выделяем полигоны по которым должен будет проходить сплайн. Для этого используем волновой алгоритм (Алгоритм Ли). А в место ячеек будут полигоны. Применяем ещё Grow на всякий случай. После чего, оставляем только выделенные полики, остальные удаляем.

    Скрин #2
    Теперь разворачиваем эту поверхность. Делаем Pelt и Relax.
    На юви координатах находим эти две точки. Далее от первой точки двигаемся к второй с определённым шагом. Например всю длину вектора разбить на 100 шагов. То после первого шага мы получим [0.104,0.108,0]. Конвертируем полученные юви координаты обратно в мировые, и по ним строим сплайн. От количества шагов будет зависеть плотность сплайна (Скрин #3).

    [​IMG]
     
    Последнее редактирование: 6 янв 2015
  2. moreeasy

    moreeasy Знаток

    С нами с:
    10.08.2014
    Сообщения:
    190
    Симпатии:
    47
    Баллы:
    22
    Сразу оговорюсь - с MAXscript-ом на "вы" и шопотом. Поэтому не обессудьте за наивность :
    ratio.gif
     
  3. Виталий Мартынов

    Виталий Мартынов Знаток

    С нами с:
    28.02.2009
    Сообщения:
    135
    Симпатии:
    0
    Баллы:
    26
    Может разбить на шаги по координатам ребра бокса и выбрать по условию мин дистанцию соответствующих отрезков.
     
Модераторы: Savin Denis

Поделиться этой страницей