Моделирование изогнутых поверхностей с использованием модификатора Cloth.
Tmin 4243

 

724c05677bc6f86171fca84fda813cee.jpeg

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

 Для начала еще раз повторю, что Cloth это всего лишь модификатор, позволяющий поверхности изгибаться и деформироваться. Но его основным отличием от других модификаторов является способность впитывать в себя стек, подобно губке. При стандартном моделировании вы постепенно двигаетесь от низа стека к его вершине, можете вносить изменения внизу по стеку получая нужный результат вверху. Но если в стеке есть Cloth, то он становиться его вершиной, и поток изменений идет в него как снизу, так и сверху, даже от других Cloth.  А стек в данном случае можно сравнить «с карточной колодой, которую можно тасовать и раскладывать как угодно вам, но при этом все карты будут работать на вашего Джокера Cloth.»  

 На форуме возникла тема: «Как можно быстро смоделировать подобный столик?»

e8751e9d97ad34a71ab0f820b1ff62aa.jpeg

   

 Судя по референсу и по безрезультатным поискам в сети, такого стола не существует. Ни размеров, ни материала, из которого он сделан, не удалось определить таким образом. При создании модели придется опираться только на реф.

 Итак, предположим, что модель согнута из заготовки прямоугольной формы. Исходя из того, что эргономичная высота стола 750мм., прикинем остальные размеры...  

aab4cec9c28001de83e8fda1bd271c7f.jpeg

  

 Получилось следующее: длина столешницы ≈ 1400мм. + длина изогнутой ножки ≈ 3000мм., ширина полосы ≈ 500мм.

 По этим параметрам создаем плоскую форму.  

23abe2f2112019be9ecab4870daaedd2.jpeg

   

 Добавляем сегментов по длине нашей будущей «ножки» и по ширине полосы. Для дальнейшего удобства в работе выделим вершины основания.  

d70f4a24ccb8493c434eaf52abce3cd5.jpeg

   

 На уровне подобъектов переносим нашу полосу на уровень 750мм по глобальной оси Z, сохранив тем самым нулевую координату у пивота объекта.  

3ccabffd305c99fba686fe361c2fa81f.jpeg

  

 Наша заготовка готова к деформации. Накидываем Cloth. В связи с отсутствием Ground в самом модификаторе для подобных объектов по умолчанию добавляем в симуляцию большой плейн с нулевой координатой по оси Z, указываем в свойствах объектов Collision Object, Depth = 1000mm. и Offset, Dyn.Fric., Static Fric.  = 0.

 Часто на форуме всплывают темы о том, что ткань не симулируется, а в лучшем случае ведет себя как фанера. На поверке оказывается, что полотно очень маленькое, и ведет оно себя адекватно для своих размеров. Этим и воспользуемся прежде всего в нашей симуляции. Но уменьшать саму модель не будем, воспользуемся параметром cm/unit. В моем случае, так как работаю в мм., могу уменьшить его только в 10 раз, изменив 0,1 на минимально возможный 0,01. Т.е. для симуляции модель стала в 10 раз меньше реальных размеров. Стоит при этом учесть, что все параметры для полотна, задаваемые всегда в см., тоже уменьшаем в выбранное число раз.

 Назначим группы:  

 1. tabletop - из вершин столешницы со свойством preserve.  

539c5c1dfda9ab5163378b2d031395dd.jpeg

  

 2. base - из вершин основания ножки со свойством drag.  

b224112190776b9471bf67c05645416a.jpeg

   

 Небольшое отступление...

 Для многих оба свойства групп идентичны и служат для блокировки вершин, но это не так.

 Drag - блокирует вершины группы в положении в момент назначения свойства. Но если для группы разрешена коллизия с твердым объектом, то Depth и Offset будут влиять на положение этих вершин. Но когда влияние исчезает, сетка восстанавливается.

 Пример:

 Анимированная сфера будет деформировать полотно, у которого группа Drag из всех вершин.  

6192831b69a584e6ace1c6c125fbf425.jpeg

  

 Preserve - блокирует группу в положении низа стека. На ее положение не будут влиять никакие силы симуляции, и именно это дает дополнительные возможности управления.

 Пример:

 У горизонтального плейна группа Preserve из двух рядов вершин.  

f09c14dad52ad7a5764e447637401dab.jpeg

  

 Симуляция  

fcc84c84befe8b49f08415f52e028f31.jpeg

   

 Внизу стека масштабируем (увеличим) все вершины плейна по оси X и продолжим симуляцию.  

14b1d9affe236e3df87b8c9de7a1932f.jpeg

d2b90a32b5d9741909f55e9b0ea76785.jpeg

   

 Внизу стека масштабируем (уменьшим) все вершины плейна по оси Y и продолжим симуляцию.  

966bc26142f47ade1f1ef696a6231e76.jpeg

908b76d2e9f0c6699dcc09f41ea87be1.jpeg

   

 Отключим масштабирование по оси X и продолжим симуляцию.  

827a41ab603a97efae984788bde273c4.jpeg

   

 Как можем заметить, полотно у нас остается неизменным по форме (с чекером это будет заметнее), меняется только положение вершин группы. Применимо к контролю за симуляцией очень интересное свойство, особенно для анимации.    

 В свойствах объекта table указываем Cloth. Из дефолтных параметров изменим только Bend, Stretch, Compress и Thickness.

 Bend - сопротивление изгибу, увеличиваем до нужной жесткости полотна к изгибу.

 Stretch и Compress - сопротивление еджей к растяжению и сжатию соответственно. Указываем одинаковые значения, подбираем минимально возможные при текущем Bend, чтобы при симуляции не лезли артефакты. Минимальное значение необходимо для избавления от эффекта «вялого галстука» по dedora.

 Thickness - толщина ткани, задаем исходя из того, какие значения будут указаны в модификаторе Shell, учитывая измененный cm/unit.  

 В моем случае Bend = 1000, Stretch и Compress = 20, Thickness = 0,25см.  

 Не многие знают о существовании интерактива в Cloth - подуровень Faces. Можно и с его помощью симулировать нужную форму, но это крайне неудобный в большинстве случаев инструмент, а главное - не дающий никакой точности в управлении.  Поэтому скручивать ножку будем через вершину стека. Описание процесса можно найти в этом блоге : Сворачиваем ткань.  

 Подворачиваем половину «ножки» под столешницу.  

1a429d9c463072d3597017dfa2eea4c0.jpeg

4c41c3a1e951a082e483865ca3ae5bee.jpeg

   

 Закручиваем основание на -90 по X.  

d1c4bc0089ce3ebd0f323988b996259c.jpeg

67251bd9e4dc91efb8072b8480b4773f.jpeg

    

 Докручиваем основание и ставим на место.  

ec25f70fc3c2b6cd83c0a346a5561099.jpeg

965944b9c03f46380516a37905b75c28.jpeg

    

 Используя интерактив, подтягиваем полигоны к нужному положению, фиксируем форму, заблокировав необходимые вершины, и уточняем их положение через вершину стека. В финале заблокированные вершины лучше перенести с края полосы для устранения явных потяжек, образующихся на нем из-за маленького значения Stretch и Compress.  

30a0a2269d0c40d6a70c44cb96637412.jpeg

16d8e3635464c6a5b578e904d1c49328.jpeg

509eda09bf75fc1bba1ac98b576036bd.jpeg

1c56ea32632f0c60f775227c3e2909e3.jpeg

2e15996f5ee9c13ae678142d42e0459c.jpeg

    

 При финальной симуляции Stretch и Compress удалось уменьшить подбором до 9. Получилось довольно прилично.  

 

6ebe65d14c05f159fe597b9a1a9464c6.jpeg

   

 Накидываем Unwrap UVW, делаем развертку и задаем толщину Shell.  

3f492fe07f8b0e99e702828446da2131.jpeg

    

 Упс! Не таким ли способом была создана модель с рефа?  

 

......................    

 Но как бы не было похоже, модель далека от оригинала, а именно полное соответствие ему и является основой хорошего моделинга. Значит попробуем еще раз, дополнив алгоритм дополнительными инструментами контроля и управления. Еще раз делаем анализ референса….  

 По тому, как лежит текстура на модели, и по финальной развертке уже созданной модели, можно сделать заключение, что изначальное полотно не является прямоугольником, а имеет лекальную форму. Именно поэтому пришлось скручивать параметры полотна Stretch и Compress до допустимого минимума.  

 Также простая изначальная сетка даст возможность точнее управлять не только формой и размерами полотна, направлением эджей, но позволит точно контролировать симуляции.  

03337fcb6289eeb4dd6cf5da97a37ed5.jpeg

    

 Удаляем у созданного столика стек до базового объекта. Для исключения деформации столешницы при смузе задаем разные группы сглаживания полигонами. Добавляем пять эджей по длине «ножки» и сразу на уровне подобъектов переносим нашу полосу на уровень 750мм по глобальной оси Z.  

b520f0d6534bb69be8c12714a9da3348.jpeg

     

 Прежде чем двигаться дальше, наносим проекционные координаты с помощью UVW Map - Planar по второму каналу. В Unwrap UVW по второму каналу порежем все еджи. Рисуем маску и настраиваем материал. Это необходимо для удобного контроля вершин по сетке базового объекта при управлении симуляцией. Коллапсим стек.  

ddc22ca0ab449062cf2336e4e5a45f15.jpeg

   

 Накидываем Turbo smooth с интерацией 4 и сглаживанием по группам (чтобы не исказить столешницу при редактировании).  

848fbd2c964c1f9f1270c9cc9c94495e.jpeg

    

 В итоге мы получили некое подобие модификатора FFD только plane, и всего 16-ю вершинами, 22-мя эджами и 7-ю полигонами можем неплохо контролировать форму и размеры полотна.  

dfb9244f0d89cc5ffd5e5a426edc6ee0.jpeg

    

 Только этим мы займемся позже. А сейчас почистим лишние лупы по ширине полотна.  

53a9a744e8a2e382d3aa16f6dafe4713.jpeg

    

 Еще одним UVW Map (wood) с первым каналом настраиваем отображение текстуры дерева.  

89f6e70d5f5ca4213c1e0651410c9a75.jpeg

    

 Так как еджи на базовом объекте нарезались коннектом, в базовом объекте подтягиваем их примерно в положение на рефе.  

11a3494a90bb4a77f32ffdb84dae235f.jpeg

    

 Cloth и далее все точно по схеме первой части блога до финального Unwrap UVW.  

7ede15b5ae36c613bfb4b90898272f48.jpeg

    

 Самое время поместить референс на фон и настроить вид с камеры по нему, свет, визуализацию.  

b38283540c1254b7c95657b3ca988842.jpeg

    

 Да-а-а! До оригинала совсем далеко. Без правок и редактирования не обойтись.  

 Рассмотрим доступные возможности редактирования и управления:  

 Прежде всего это вершина стека. Сложить и скрутить ткань, подвернуть ее, завязать узлом, точно уложить или повесить в нужное место - нет совершенно никакой необходимости делать все это через симуляцию. Макс имеет множество инструментов и возможностей по такие задачи, симуляцию в данном случае применяем только для финального расправления полотна. Полезна вершина стека и для точного редактирования расположения вершин групп Drag. Если это удобнее вверху стека, можем сделать выделение вершин для групп, переместить модификатор выделения под Cloth и захватить выделение через Get Stack Selection. Cloth очень не любит пересечения ткани, поэтому в работе требует особой аккуратности, но если все-таки такое происходит, то релакс сетки через вершину стека во многих случаях спасает положение.  

 Теперь ближе к нашему столику, который требует доработки, ведь сетка была переделана не просто из прихоти.  

 Столешница столика оказалась шире и короче, чем предположил в начале, да еще и место перехода в ножку - это трапеция. Так как все вершины столешницы в группе Preserve, достаточно отредактировать их положение в базовом объекте, и при симуляции они займут свое место. Пример подобного поведения уже приводился выше.

 Сделанное ранее заключение, что изначальное полотно не является прямоугольником, а имеет лекальную форму, пока проигнорируем. «Ножка», помимо лекальности, сужается к основанию. Исправляем это либо в базом объекте, либо добавив сверху него нужный модификатор (например FFD 2x2x2). Также, исходя из сделанных правок, необходимо скорректировать положение затронутых изменением вершин, относящихся к группам Drag.

 ВАЖНО!!!Для того, чтобы изменения, сделанные для полотна, вступили в силу, необходимо отключить внизу стека все, что использовалось для управления симуляцией и не относится к форме полотна, сохранить и перезагрузить сцену или воспользоваться скриптом Copy Paste, захватив и заменив все объекты участвующие в симуляции. В противном случае редактирование затронет только группы Preserve. Ниже по тексту, где необходима данная операция, я буду вставлять Grab Shape Canvas. Странно, что в самом Cloth не предусмотрели такой возможности, хотя в Garment Makert подобная функция присутствует - Mesh It and Preserve.  

6354b0d60c360a6c8847380124e6a42b.jpeg

2ff481f38b12260aaa5339004cbbe25f.jpeg

d7af2846dcf2ec7a60a771bfef1f8065.jpeg

   

 Заблокировав центральные вершины по перечным еджам ножки базового объекта, которые мы легко можем обнаружить, благодаря сделанному отображению в материале. Корректируем направление сетки, разворачивая эти еджи в режиме Сonstraints - Edge у базового объекта или перемещая их вершины в нужное место. Grab Shape Canvas.   

a2675109b5bd945cd18b939de97c0b9e.jpeg

0b8036784d7920ec0701089a7ec7e25a.jpeg

5ee8c374a299bf33f768841b0c5913d4.jpeg

   

 Разумеется, перемещая эти же еджи по оси X, можно отредактировать длину сегментов между ними, можно где-то подтянуть излишки, где-то добавить длинны и расслабить натяжение. При необходимости блокируем вершины по еджам, выделение которых удобно сделать в Edit Poly, перенеся его затем в Cloth. Grab Shape Canvas.  

b419055e3e6de118ce2ea5b21759963c.jpeg

0a16a8de464752f3618996f922989ba4.jpeg

3f867b599cde00d8c850ba7c0d5b4ec5.jpeg

083fec114fcc22885b93abd5c98c4898.jpeg

   

 Подгонка по текстуре. Как уже упоминалось выше о подобии модификатору FFD, изменение положения поперечных еджей ножки у базового объекта позволяет добиться лекальной формы. А модификатор UVW Map (wood) дает возможность контролировать процесс визуально в окне проекции. Также перед симуляцией потребуется Grab Shape Canvas. Можно и не захватывать форму полотна, а оставить это как развертку. Но для этого редактировать в добавленном над базовым объектом Edit Poly, который при сохранении отключаем.  

6ab0a7ad60d94226713d453faece6f0c.jpeg

75dce274cb69b928b9c411e01a80e100.jpeg

   

 После удачного редактирования можно повысить Stretch и Compress. Но надо признать, что процесс такой подгонки очень муторный, требует хороших навыков и опыта.  

 Но все же максимально уйти от эффекта «вялого галстука» можно, только имея правильную по форме лекальную сетку(полотно). Как можно было заметить, из-за малых значений Stretch и Compress полотно при симуляции само стремится к правильной форме, только побочно возникают неприятные потяжки, особенно у заблокированных вершин.  

 Поэтому в завершении небольшой лайфхак.  

 Для симуляции нам потребуется Ground. Создавать новый не будем, заставим существующий работать сразу на два Cloth. Накидываем на Ground Edit Poly и на уровне подобъектов помещаем плоскость на 750мм., по высоте.  

bf449e940d1f1e42cee6a525ab043b41.jpeg

   

Назначаем объекту table модификатор Cloth(lifehack).  

00132e86503b5ba7283da04d326f5844.jpeg

    

 Добавляем в него Ground как Collision Object и указываем для table в свойствах объекта Cloth. Настраиваем параметры для ткани, Ground и для симулятора, как на скрине ниже.  

e990db30026506157e7b5b1c880ef985.jpeg

   

 Добавляем группу tabletop из вершин столешницы со свойством preserve.  

16ab18de7a8655ea7bef1afd439434d5.jpeg

   

 Отключаем Cloth и захватываем состояние Reset State.  

9614d9ff13454632407d3ed010627dec.jpeg

   

 Симуляция до полного успокоения ткани. Разумеется, при необходимости полотно можно подтянуть под задачи.  

0607c74f8a3f8c342e34ba2b906ff188.jpeg

  

Edit Poly. Разгладим релаксом сетку ножки.  

d03697b1e998a4888948f5023e081ab7.jpeg

   

Edit Poly. Детачим сетку в объект table(lifehack).  

17e52d9c74ea845ed069f5e131126b39.jpeg

  

Отключаем оба Edit Poly и Cloth(lifehack), включаем Cloth.  

0c82130e51c83bd3f2c271c4fe1d7ecf.jpeg

   

Под UVW Map (wood) назначаем Morpher и привязываем состояние к table(lifehack). Grab Shape Canvas.  

d8f484c6c8baa282b990aac350f3a694.jpeg

   

Теперь наше полотно имеет форму table(lifehack), это видно по тому, как легла на него текстура.  

4ea6d46cf4cac9ff38fabe506e1ea393.jpeg

   

Чтобы убедиться в этом, можно запустить симуляцию, оставив блокировку у вершин столешницы и основания. Форма изменилась, но осталась подкрученной.  

3bb717c4d65240ff451b3b3fbbfc6855.jpeg

   

 Подобрав значение Stretch и Compress и управляя объемной формой, симулируем «накрахмаленный галстук» !!! )))  

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

 В итоге после редактирования получилась вот такая модель столика.  

774f0e7d1966342351b82aae8de324d2.jpeg

b0409274ab2101ff64f9fa592bac8b59.jpeg

     

     P.S.  Маленькое дополнение....

 Как из такой сплайновой формы

cd929c74973d31c24adbab62ff14b9e0.jpeg

 получить такую сетку.

8f44c44e755be04863fc9974f7f893f9.jpeg

 Добавляем вершин.

28fa31e8cedf0c6ef92be73cdf403444.jpeg

Разбиваем нужные.

8c916ccf848ce3a921975a44038e39f6.jpeg

Garment Maker и немного шитья. Незабываем поднять Seam tolerance.

b87e4f6cc57e313709aeca3ff90ea74e.jpeg

Подбираем плотность.

7e0502e7a20876234b01ee1b658d8222.jpeg

Бридж еджей.

ef81a90bd72d7cb0c32bd7d984a27d93.jpeg

Удаляем лишние полигоны и разворачиваем оставшиеся.

4bd0e6ae8a0b7afb887ae0eebb0c239d.jpeg

 Удачи!

Комментарии (36)

+1
Grylisma
Без красного словца не выразить мой восторг )
+4
Denis_21
Это ж надо было так заморочиться!!! ) Я в шоке!
Будет, что почитать долгими зимними выходными.
Спасибо!
+2
shinodem
https://pierrerenart.com/portfolio/collection-genese-bureau-wave-noyer/
размеры есть видимо плохо искали)
0
Tmin
Видимо! )))
Спасибо за ссылку и кучу рефов с разных сторон, отправил в закладки!
+1
shinodem
Не за что, если погуглить название можно еще разные конфигурации найти
вот например https://i.pinimg.com/originals/17/7c/90/177c90318272c5c3eee58c8da940c23f.jpg 
+53
rudnikov2006
За работу конечно молодец, но отмоделить такую вещь полимоделингом быстрее, чем проскролить эту статью от начала до конца :)
+1
Graphicus
согласен
+6
ck_petya
Интересен был сам принцип, конечный результат - столик, вообще не важен
+9
Bruce
Так ведь стол это всего лишь пример, урок не о столе, а о Cloth. Смотрите шире.
+1
necBTpuko
За труды лайк ;] Способ на заметку, вдруг пригодится :)
+1
Charlyxxx
О, давно тебя не было видно. С Наступающим!
+1
tkozodaev
мощно! не самый простой способ сделать этот стол. как же вы много знаете про cloth. это просто темный лес. сколько там всего.
+4
ck_petya
Спасибо за "классический" урок в картинках +5!!!
+1
Sarbagyshev
Маэстро в своем стиле! В закладки однозначно.
+5
Slashtore
Для углубления навыков и знаний по Cloth очень полезный урок. Для моделинга такого столика, наверное всё таки можно попроще найти варианты. Давным-давно, когда я только начинал самостоятельно изучать 3D Max и V-Ray, захотел отмоделить гитару собственного дизайна https://ibb.co/wWGfn42  , и нужно было к ней сделать ремень. Самым простым решением тогда оказался модификатор Loft (что в Compound objects). Он позволил получить ленту любой длины, с возможностью легко перетаскивать участки за точки из сплайна, а ленту закручивать при помощи встроенного в Loft контролера Twist. Думаю очень хорошо подойдёт этот инструмент и для решения задачи со столом. А толщины по осям можно менять при помощи встроенного контролера Scale, чтобы задать более узкое полотно в начале и широкое в конце.
+1
ivan_ov
А можно в Cloth узел завязать? Делал полигонами. https://3ddd.ru/3dmodels/show/why_knot_bench_1 
+3
Tmin
Блог Сворачиваем ткань. Ссылка на него в тексте.
Вторая часть блога где полотенце закручивается.
Берешь сплайн нужной формы и закручиваешь по нему.
Для удобства перед закруткой в вершине стека отскейлить полотно в узкую полосу.

P.S. Аналогично можно задать грубую форму в примере этого блога.
+1
ivan_ov
Спасибо, будем пробовать.
+1
ASPiter
Профессор!
+1
Acasa
Комментарий удален
+2
alexfmos
Это невероятно удивительно. Tmin вернулся! Надеюсь блог не удалится через неделю.
Тем, кто говорит что быстрее поликами - урок не об этом. Урок о cloth. Если вы купите билет на самолет в Америку это не сделает вас пилотом, для этого надо долго учится пилотированию самолётов. Тут что-то в этом роде.
+4
Denis_21
А сейчас я покажу вам несколько приемов работы с тканью на примере письменного стола )
+3
PaulFX
Представил такое сферическое в вакууме общество, где ты вежливо спрашиваешь, а не подскажете, как сделать это? И вместо остроумных коротких реплик, тебе со всех сторон профессионалы весь день создают бесконечные ленты развернутой информации! Помню тот скромный топик с вопросом про стол)
+2
remnev.denis
Ждем урок как сделать штору из NURBS поверхностей.
+1
спасибо !
+1
MARSALA
вау!спасибо!
+1
mr.spoilt
Смотрю на стол и как мебельщик с деформацией мозга думаю не о том, как это смоделить, а какие шаблоны сделать, чтобы согнуть и изготовить.
+3
Yehat
Базара нет, справился, но чёт слишком длинно. Должен быть способ раз в 5 короче.
0
Tmin
Какие проблемы? Начни делать поликами - заверши симуляцией.
0
bruder1
можно на монгольском языке пожалуйста брат!)
+1
Bestviz
Отлично, TMIN. Как всегда высший пилотаж!
0
Zakknayo
Зачем?
+2
3amodel
1024 скриншота для того чтобы сделать всё тоже самое, но минут за 5 при помощи NURBS плейна?
скриншоты:https://yadi.sk/i/Ie7CNK34DTuNxQ  https://yadi.sk/i/aS43p9cUMi5Yjg 
0
Tmin
Один в один! )))
И по рефу можете подогнать?
0
3amodel
Да, всё возможно в таком варианте. Чуть другой метод, сплайновый: https://3ddd.ru/forum/thread/show/kak_mozhno_bystro_smodelirovat_podobnyi_stolik/2  Файл:https://yadi.sk/d/vcMBPgpgCW1JRg  Картинка:https://yadi.sk/i/ZkTI5QwdqfzFJQ 
+1
usov.80
Маэстро!