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

Создать спираль из кортежей прямоугольников с указанным радиусом витков и шагами

Тема в разделе "MAXScript", создана пользователем Сергей Шейпак, 7 окт 2008.

Модераторы: Savin Denis
  1. Сергей Шейпак

    Сергей Шейпак Пользователь сайта

    С нами с:
    05.10.2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Исходные даные:
    1. Есть кортежи прямоугольников
    2. Каждый прямоугольник имеет свой цвет.
    3. Каждый кортеж, это "развернутый" в плоскость виток спирали.
    4. У каждого кортежа есть два свойства: радиус витка (верх и низ равны, чтобы в проекции получалась окружность) и высота витка.
    5. Кортеж нужно растянуть по витку спирали, характеристики которого кортеж знает. Длина кортежа значения не имеет. Он может масштабироваться, сохраняя пропорции.
    6. Все данные берутся из файла

    [​IMG]

    Задача:
    "Свернуть" в виток спирали каждый кортеж прямоугольников. Виток должен иметь заданные кортежу высоту и радиусы. Свести витки так, чтобы получилась спираль.

    Вопрос:
    Каким модифаером надо пользоваться, чтобы изогнуть группу прямоугольников в виток спирали, у которого известны радиусы и высота?

    Вопрос призовой:
    Уж если получится согнуть группу прямоугольников в виток спирали, как можно анимировать сей процесс сгибания?

    Пробовал вручную, но не получается, пока искал решение, создав тему в другом разделе форума, наткнулся на MaxScript. Зачем напрягать руки и мучать мышку, когда есть такое мега-монстрячество?

    ------------------------------------------------

    Альтернатива:
    Мы - не такие, мы пойдем другим путем. Можно насоздавать нужное количество Helix'ов с одим витком, соответствующим параметрам, хранящимся в каждом кортеже. Затем следует ряд вопросов.

    Альтернативные вопросы:
    Как сконвертить объект в editable mesh и добавить побольше faces, вроде понятно (MaxScript help).
    1. Не понимаю, как побить редактируемый Helix на объекты (в соотношении, как между прямоугольниками кортежа)
    2. Как "вытянуть" получившиеся объекты (на рисунке практически все прямоугольники имеют свою высоту).

    -----------------------------------------------

    ИМХО, первый путь логичнее, второй - проще.

    Работа нужна для диссера, прошу оказать помощь отечественной науке. Большое спасибо за внимание.
     
  2. 1acc

    1acc Знаток

    С нами с:
    03.09.2007
    Сообщения:
    347
    Симпатии:
    6
    Баллы:
    40
    Проще будет, если отечественная наука наскребет денег на оплату труда программиста, который смастерит тебе этот скрипт.
     
  3. Сергей Шейпак

    Сергей Шейпак Пользователь сайта

    С нами с:
    05.10.2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Спасибо за бесценный совет Я и есть программист. Мне не ясна пара моментов реализации. Неужели это такие сверхсложные вопросы?
     
  4. 1acc

    1acc Знаток

    С нами с:
    03.09.2007
    Сообщения:
    347
    Симпатии:
    6
    Баллы:
    40
    Нет, тут все просто. Посидишь плотненько пару месяцев и сам во всем разберешься, тем более если программист. Когда я писал скрипт для диссертации - я не спрашивал на форумах, а штудировал хэлп по макскрипту.
     
  5. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    2 1acc Чего тут делать то ?

    2 Сергей Шейпак

    1. Делаеш Helix
    2. Делаеш свой кортедж из Plane с нужным числом сегментации
    3. Конвертируеш в меш и обьединяеш все в один
    4. Добаваляш модификатор PathDeform
    5. В качестве пути Helix
    6. Настртаеваеш параметры и анимируеш если нужно

     
  6. 1acc

    1acc Знаток

    С нами с:
    03.09.2007
    Сообщения:
    347
    Симпатии:
    6
    Баллы:
    40
    А если кортежей миллион? А если их параметры изменяются динамически?
    Можно найти тут кучу всего, что можно сделать. Ну автора устроил совет в соседней ветке, точно такой же как и твой.
    Значит скрипт ему не нужен.
     
  7. Сергей Шейпак

    Сергей Шейпак Пользователь сайта

    С нами с:
    05.10.2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    кортежей будет не более 20.
    Параметры не изменяются динамически.
    Параметры берутся из xml'ьки.

    Я сейчас работаю над тем, что генерить сразу скрипт (из Java-программы), чтобы затем сразу его запускать в MAX'e.

    К сожалению, ручками (ответ в соседней теме) у меня плохо получается. Как получится руками хотя бы один виток сделать, примусь за скрипт.
     
  8. Сергей Шейпак

    Сергей Шейпак Пользователь сайта

    С нами с:
    05.10.2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    2
    Подскажите, пожалуйста, как у создаваемых объектов Plane задавать Anchor point, т.е. Pivot?
    По умолчанию, сакраментальная точка находится аккурат в центре объекта. Я хочу сместить ее в угол, чтобы было удобнее выравнивать свои Plane'ны, выстраивая их в ряд. Неохота каждый раз "ручками" высчитывать положение следующего Plane'a через Anchor point - Pivot предыдущего и текущего, хочу компоновать, основываясь на длине ребра.
    Обгуглился, никак не удается найти. Использую Listener, но он не пишет, что нужно сделать, чтобы добраться до Pivot'a - я выбираю "affect pivot only", а в Listener'e вижу изменения координат Plane'a, но на самом деле-то я двигаю его Pivot.

    Фрагмент сгенеренного скрипта:
    Код:
    planeitr11 = Plane pos:[0.0,0.0,0.0] length:10.714286 width:11.5310135 lengthsegs:20 widthsegs:20
    planeitr12 = Plane pos:[10.714286,0.0,0.0] length:10.714286 width:11.90526 lengthsegs:20 widthsegs:20
    planeitr13 = Plane pos:[21.428572,0.0,0.0] length:10.714286 width:11.5310135 lengthsegs:20 widthsegs:20
    
    Из-за того, что "якорь" в центре, Plane'ны наползают друг на друга.
    Спасибо.
     
  9. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Сергей у тебя есть параметры ширина и высота для каждого plane вычислить смещение для позиции с учетом что Pivot в центре математика на уровне второво класса. Со смещенным пивотом тебе понадобиться вычислять еще и его позицию через матрицы, тебе оно надо ? Пивот лучше не трогай.
     
Модераторы: Savin Denis

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