Винтовые лестницы. Методика моделирования


Категорически приветствую Всех гостей моего блога!

   Этот урок посвящается всем дуговым и винтообразным лестницам, а также «монтажу» перил, балясин и кованных ограждений. 
  Время от времени у многих коллег по цеху возникает необходимость создания лестниц различной формы и не всегда она (форма) отличается своей простотой. Как правило, столкнувшись со спиралевидными, зигзагообразными и любыми другими сложно-геометрическими конструкциями у многих возникают затруднения в их реализации. Решить подобную задачу в 3ds Max можно различными способами. Сегодня мы познакомимся с универсальной методикой построения криволинейных лестниц.

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

    -- В качестве «Быстрого старта» познакомимся с основным принципом пропагандируемой методики, а также разберём вариант аккуратного и точного позиционирования кованных ограждений на примере уже существующей лестницы;

   -- Во-второй части закрепим навыки, создав сложную спиралевидную лестницу и тезисно выделим основные преимущества данной методики.

     Наверное, каждый, кто даже на начальном уровне владеет инструментарием программы 3ds Max, может без особых затруднений создать самый обычный лестничный марш. А это уже половина успеха! Дело остаётся за малым – загнуть его в нужную форму. Рассматриваемый ниже принцип демонстрирует нам, насколько простым и в тоже время интересным может быть этот процесс. Роль главной скрипки во всём этом «безобразии» будет исполнять модификатор «Skin Wrap». Являясь в своей основе модификатором анимации, он остаётся достаточно гибким инструментом, позволяющим осуществлять деформацию одного объекта, посредствам низкополигональной геометрии другого.


     Поскольку представленный инструмент интегрирован в программу как модификатор анимации, то и терминологию целесообразно было бы использовать соответствующую. Так, например, формообразующий объект будем именовать как «Драйвер формы» или просто «Драйвер», а деформируемый объект «Базовым». Итак, давайте разберём следующий пример лестницы: 
 В своей основе это прямой лестничный марш, созданный стандартными инструментами программы с последующим искривлением: 
   1. В одном из видов проекции создаём элемент лестницы - ступень.  Сразу текстурируем его и распределяем по высоте на заданное количество ступеней:

     2. Тоже самое проделываем с ограждением по обе стороны марша:
За использование готовых моделей ограждений спасибо пользователю «arsa35»   

  3. Далее нам необходимо создать так называемый «Драйвер формы».   В виде «Top» из начала координат строим окружность «Circle» -->  «Editable Spline» и на уровне подобъектов «Vertex» делаем разбивку первой вершины («Brake»);
    Важное замечание: место разбивки вершин задаёт начальную и конечную точки «Драйвера». Затем следует нормализация сплайновой формы («Normalize Spline») и её экструдирование («Extrude»). Значение «выдавливания» определяет высоту лестницы, в нашем случае с учётом ограждения;
   4.Укладываем полученный «Драйвер» в плоскость (копируем канал карты «1:map» в канал геометрии «Mesh») Это очень похоже на магию;


   5. Следующим шагом в нашем пособии для волшебников будет привязка всей лестницы (предварительно сгруппировать все элементы) к уже плоскому «Драйверу». С помощью дополнительного модификатора «Edit Poly» (без него объект не воспримет изменение своего положения) и инструментов перемещения, выравниваем плоскость «Драйвера» по центральной оси лестницы (чем ближе «Драйвер формы» располагается к «Базовому объекту», тем меньше будут искажения!);
   6. «Привязываем» лестницу к телу «Драйвера», посредствам модификатора «SkinWrap»  (в его настройках не забываем поставить галку напротив параметра «Weight All Points»). Лестница воспримет форму драйвера, но визуально это никак не проявится; 


7. Для того, чтобы увидеть волшебство в действии (деформацию лестницы по заданной форме), остаётся сущий пустяк - отключить пару модификаторов в стеке объекта «Driver» и срыть его с глаз долой (не удалять!!!):


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

Лестница «Перезапись» (Мюнхен)
Ссылка на источник
    Двигаемся дальше… Очень часто возникают ситуации, когда обычная деформация по заданной форме вызывает искажение объекта и как результат некорректное позиционирование всех его составных элементов. Но, как уже ране отмечалось, модификатор «SkinWrap» является очень гибким инструментом и с его помощью можно реализовывать широкий спектр задач.
   Рассмотрим пример, когда в уже существующей лестнице необходимо произвести замену ограждений. Для этого воспользуемся моделью из базы: 

Пользователю ресурса 3ddd.ru «Art» большое спасибо! 
  Форма представленной лестницы довольно сложная, поэтому описанный выше алгоритм без соответствующей правки, не вполне способен обеспечить точную расстановку всех крепёжных стоек – искажения неизбежны! Для начала подготовим интересующий нас элемент ограждения (зададим примерно тот же угол наклона, что и у лестницы (FFD)):
           Для точного и аккуратного позиционирования стоек нам необходимо знать пространственное положение всех ступеней лестницы. Эту информацию мы можем извлечь из геометрии ступеней. Для этого:
   1. В виде «Top» создаём «Драйвер формы», ориентируясь на край ступеней. Нормализуем его («Normalize Spline») и экструдируем («Extrude»). Как и в первом случае значение «выдавливания» определяется высотой лестницы с учётом перил и ограждений;


    2. У ступеней выделяем торцы, а остальную часть объекта скрываем;
    3. Через «SkinWrap» привязываем торцы к «Драйверу»;
    4. Сам «Драйвер» укладываем в плоскость (копируем канал карты «1:map» в канал геометрии «mesh»);


    И снова в ситуацию вмешивается диво дивное, в результате которого, мы получили те самые пространственные координаты ступеней, развёрнутые на плоскости. На развёртке чётко видно, что лестничные ступени не имеют равномерной диагонали, это и есть то самое искажение, о котором мы упоминали выше.
   Теперь же, правильно и точно расставить все элементы нового ограждения лестницы не составит никакого труда: Развёрнутые торцы ступенек послужат хорошим ориентиром на данном этапе работы:

   
Далее, повторяем пункт 7 из предыдущего примера


______________________________________________________________________________

    Ну и на закуску… Как и было заявлено в начале, в этой части урока смастерим деревянную винтовую лестницу. На этот раз не будет заострять внимание на идентичных с первыми двумя примерами действиях, а сконцентрируемся на некоторых нюансах при создании «Драйверов формы» для данного вида лестницы.
    Виртуально креативить, как Вы уже догадались будем вот такой, реально существующий объект:

    И первое, на что стоит обратить внимание, это конечно же форма основных элементов. На первый взгляд здесь мог бы неплохо проявить себя инструмент «Helix». Однако, при более детальном анализе формы первые впечатления… они усиливаются! Да, «Helix» – это, пожалуй, лучшее решение. И поскольку форма всех элементов непрямолинейна, наиболее рационально было бы отмоделить их в плоском (прямолинейном) виде, а затем, с использованием всё тех же формообразующих «Драйверов» придать линиям желаемую плавность.

     Путём нехитрых математических вычислений определяем радиус - 900мм, высоту - 3000мм и количество ступенек  - 16, а может 18 (в любом случае красиво)


   2. Создали сплайновую форму;
   3. «Выдавили» объём;
   4. Развернули в плоскость;
   5. Выровняли по центральному элементу;


   6. Задали объекту «Скос»;
   7. Привязали «Базу» к «Драйверу»;
   8. Последовательно отключив действие двух верхних модификаторов, наблюдаем, как центральный элемент лестницы принимает форму «драйвера». Напомню, что «Драйвер» — это спираль с двумя оборотами.
   Важное замечание: Отключать модификаторы нужно последовательно сверху стека, включать - в обратном порядке:


     Абсолютно тем же способом задаётся форма для винтообразной ленты, как и для балясин с периллами (всё привязывается к одному «Драйверу»):


    И вот теперь мы с Вами подошли к завершающему этапу урока. Нам предстоит размещение самих ступеней.  Есть два пути решения этой задачи. Самый быстрый и простой – это задействовать инструмент «Array» и в три клика размножить ступени. Но этот путь для слабаковsmiley-dirol.gif, тем более что применительно к данной ситуации, массивы являются частным случаем. Мы же пойдём несколько иной дорогой, вернее рельсами и благодаря этому сможем в полной мере убедиться в гибкости и универсальности используемого подхода.
   Но сначала стоит упомянуть о том, что исходная форма ступеней должна быть изменена с учётом будущей трансформации (Вот что «SkinWrap» животворящий делает):


        Итак, о рельсах… Суть заключается в следующем:
   Ступени, размноженные на плоскости по высоте лестницы (сделано это при помощи всё того же, нами пренебрежительно отвергнутого массива) привязываются к паре «Драйверов», которые мы использовали для формообразования двух несущих элементов конструкции (центральный элемент и винтообразная лента):


   В результате, при деформации, ступени фиксируются между двумя рельсовыми направляющими. Но тут, есть один неприятный нюанс.
  Привязав объекты таким образом к импровизированным рельсам, на выходе мы получим жуткую деформацию ступеней.


   Связано это с некоторыми особенностями работы модификатора «SkinWrap». Поэтому для корректной привязки этой части лестницы к «Драйверам», нам потребуются услуги посредника – ещё одного вспомогательного «Драйвера», элементы которого будут располагаться в непосредственной близости от центра каждой ступени. Он из себя представляет сегментированную по числу привязываемых объектов плоскость, которая образует связь с основными «Драйверами», а у же непосредственно к ней самой привязываются ступени:


    Таким образом, осуществляется корректная связь между «Драйвером формы» и «Базовым объектом». Не будем здесь разбирать структуру стека вспомогательного «Драйвера», она только выгляди громоздко, но на самом деле ничего «военного» там нет и ознакомиться с ней можно в файле с примером.  
  
   Нам лишь остаётся собрать лестницу в единую форму, по тому же принципу, который описан в предыдущей части урока

_______________________________________________________________________________

 Вот такой, в чём-то очень простой, а местами и замысловатой, но очень гибкой методикой можно добиваться совершенно невообразимых результатов.
   Подводя черту под всем вышеизложенным, хотелось бы кратко обобщить основные преимущества представленного метода:
     1. Возможность моделирования всех составных элементов на ровной плоскости, что значительно облегчает процесс;
     2. Удобное текстурирование объектов на начальном этапе работы;
     3. Быстрая и наглядная развёртка любых элементов в плоскость, позволяет не только легко позиционировать объекты, но и образмеривать полученные конструкции в сторонних пакетах (САПР);
     4. Комфортный доступ к первоначальной форме на любом этапе моделирования;

  P.S.  Использование описанной методики не ограничивается одним лишь созданием лестниц, данный алгоритм может быть с лёгкостью применён в 80% случаев моделирования.Спасибо за внимание! 

12 комментариев:

  1. Простите, но кроме ОМГ слов нет. Пытался повторить этот велосипед, но ничего не вышло. Во время копирования Map в Mesh - эта плоскость уменьшается до 1х1мм (масштабирование - не вариант - всё портит). Когда я продолжаю урок по шагам невзирая на это - лестница раскладывается не в тех осях, словно Белаз размазал по дороге Оку...
    Я не утверждаю, что я гуру, но почему просто не воспользоваться PathDeform? Всю жизнь его юзаю (в основном, чтобы загнуть фасады кухонь) - великолепный результат за 30 секунд без лишнего геморроя, и непонятных искажений деталей лестницы, как вы описываете. Рисуем лестницу. Рисуем разорванный круг. Через ПасДеформ кликаем по окружности, немного настройки и итог: идеальная винтовая лестница.

    ОтветитьУдалить
    Ответы
    1. А Вы уверены, что выполнили все действия описанные в начале урока? Если у Вас плоскость уменьшилась до 1-го мм., значит в модификаторе "Extrude" галка Real-World Map Size не была активирована. Любые дальнейшие действия будут ошибочными.
      Что касается более простых инструментов: А точно Path Deform загнёт ступеньки без искажений:??? Это большой вопрос. Никто Вас не заставляет использовать именно этот метод. Каждый ищет свои пути решения задач.
      Эта методика универсальна и подходит для множества случаев в которых тот же Path Deform себя совершенно не способен проявить.

      Удалить
  2. Возможно, Real-World Map Size пропустил. Но я во всех случаях использую более простой способ с Path Deform - проблем с ним не было. Разумеется, там тоже нужно сделать всё точно, иначе модель "взорвётся"...
    ps. Для интереса, снова попробую ваш урок.

    ОтветитьУдалить
  3. Да, получилось, только во время присоединения драйвера долго-долго думает. Нет возможности редактировать форму кривой. Программа при этом вылетает при любой удобной ей возможности.

    ОтветитьУдалить
  4. Skin Wrap весьма капризная штука. И любое редактирование кривой допустимо только до назначения этого модификатора.
    Да нюансов много, но повторюсь, это универсальный инструмент и с его помощью можно решить широкий спектр задач, от моделирования диванов, до сложной классики.
    В уроке приведён пример средней сложности.

    ОтветитьУдалить
  5. А вот урок по классическим диванам с морщинами на коже и капитоне не помешал бы =)

    ОтветитьУдалить
  6. Классно , но хотелось бы посмотреть алгоритм последней винтовой лестницы в качестве видеоурока :)

    ОтветитьУдалить
  7. а у меня цилиндрический драйвер, после всех манипуляций "упал" на бок :-)

    ОтветитьУдалить
  8. Хороший метод, взял на вооружение. Но забыли отметить, что потом всё равно надо стек сворачивать, потому что:
    1. После сохранения все поверхности разворачиваются на плоскость.
    2. С такими объектами макс ведёт себя не стабильно.
    У меня ваша лестница работать отказывается. Макс стабильно вылетает при попытке свернуть развёрнутые плоскости.

    ОтветитьУдалить
  9. Было круто если бы вы записали видео

    ОтветитьУдалить
  10. А где файл с примером? Страница 404

    ОтветитьУдалить