Cloth. Используй с умом.
Приветствую всех профессионалов и любителей компьютерной графики.
Сегодня мы с Вами поговорим о работе модификатора «Cloth» в не совсем привычной для него роли. Роли укладчика проводов, шнуров и т.п. моделей, а также узнаем, какие секреты этот модификатор может хранить в себе. Но для начала хотелось бы сделать небольшое отступление.
Все мы с Вами неоднократно слышали о таком термине как физическая корректность: Физически корректный шейдер, физически корректная симуляция, физически корректный рендер и т.д. В общем, независимо от сферы деятельности, будь то игровая индустрия или сфера дизайна все кругом стремятся к этой самой физической корректности. Ну а что такое физическая корректность применительно к интерьерной визуализации? Бытует распространённое мнение дескать фотореал (физ.корректность) – это слагаемое трёх компонент: качественная геометрия, корректный шейдер + освещение. И с этим трудно не согласиться.
На сегодняшний день добиться убедительного фотореализма в сценах задача не совсем тривиальная, но вполне достижима. Однако итоговая картинка не будет полной, если в ней будут отсутствовать мелкие детали дополняющие общую композицию. К ним можно причислить провода от различных электроприборов, шнуры, кабели всевозможные шланги и т.д. Сегодня наверное ни один интерьер спальни нельзя представить без тумбочки на которой бы не располагалась лампа. У этой лампы естественно имеется шнур, ведущий к розетке. Но очень часто на итоговых картинках подобные нюансы опускаются.
Мы сегодня постараемся ликвидировать пробел в этом вопросе и научимся реалистично укладывать разные соединительные элементы в интерьере.
Приступим помолясь!
Для работы нам понадобятся:
- Вилка, розетка, провод в прямолинейном виде (с корректными текстурными координатами);
- Сцена интерьера:
(Винтовые лестницы. Cloth.Приёмы и методы работы. Приемы и методы работы.(продолжение)
1. В центр заготовки для будущего провода «Wire 1» помещаем драйвер формы «Driver 1» с необходимым количеством сегментов. Чем больше, тем лучше, но увлекаться особо не стоит:
2. Используя модификатор «SkinWrap» привязываем основную форму провода к «родителю»:
3. На драйвер формы назначаем модификатор «Cloth» и во вкладке «Object Properties» указываем, что это у нас Cloth- объект, но чтобы он вёл себя не совсем как «тряпка» повышаем его сопротивляемость к изгибанию – параметр «Bend», остальные свойства не трогаем:
Далее, мы вовлечём в процесс такое замечательное свойство модификатора «Cloth» как способность вбирать в себя изменения произведённые вверху стека. Как правило, «Cloth» корректно воспринимает подобные манипуляции (все виды трансформации, модификаторы «Push», «Relax», «FFD», «Skin Wrap» и т.д.)не связанные с изменением количественного состава геометрии.
1. Вверх стека нашего драйвера «Driver 1» назначаем модификатор «Edit Poly». С его помощью мы размещаем оба конца драйвера (крайние его вершины) в тех местах, где они и должны быть в итоговом варианте – это входы в вилку и лампу, а остальное полотно драйвера посредством инструмента «Scale» сплющиваем до такого состояния, чтобы его было легко контролировать. В итоге у нас получится что-то не совсем на первый взгляд вразумительное, но лиха беда начало:
Следующим шагом будет фиксация тех конечных вершин драйвера, которые мы ранее разместили возле розетки и у лампы. Ведь мы же не хотим, чтобы наш провод улетел в неизвестном направлении, правильно? «Полёт» должен быть управляемым.
3. Переходим на уровень подобъектов «Group» и выделив рамкой соответствующие вершины создаём группу, даём ей название и фиксируем вершинки командой «Drag»:
Здесь стоит упомянуть о единицах измерения сцены, которые в случае с «Cloth» являются критичными. В данной сцене используются сантиметры, отсюда и такие значения в полях «Depth» и «Offset». Если Вы пользуетесь миллиметрами, скорее всего эти поля будут заполнены целыми числами.
Теперь всё готово к запуску симуляции
5. Жмём кнопку «Simulat Local» и наблюдаем за тем, как нечто бесформенное извиваясь змейкой начинает отдалённо напоминать самый обычный провод. Постепенно это сходство становится всё более выразительным и общая форма обретает более естественный вид.
Стоит добавить, что если нам что-то не нравится в текущей «укладке», в любой момент времени мы можем остановить симуляцию и подредактировать дайвер формы через вершину стека. Точно так, как мы это делали до симуляции.
Опять же, редактирование через вершину стека не единственный способ правки симуляции. Многие забывают, что у модификатора «Cloth» помимо уровня подобъектов «Group» имеется ещё два – «Panel» и «Face».
Уровень «Panel» работает в связке с «Garment Maker»,поэтому его мы рассматривать не будем, а вот уровень «Face» в данном случае для нас весьма интересен.
На этом уровне подобъектов мы можем менять положение драйвера перемещая выделенные полигоны в сетке в реальном режиме времени:
Основной метод
Одной из ключевых возможностей данного модификатора является способность хранить ту форму, которую он запоминает в момент своего назначения в стек модификаторов. Как это выглядит на практике?
Если в стек изначально прямолинейного объекта (до применения к нему всевозможных трансформаций) назначить модификатор «Cloth», то последний может успешно хранить в себе (за семью замками) эту форму и в нужный для пользователя момент «включать» функцию «Возврат к исходной форме». Нет, конечно же стопроцентного возврата к исходной форме не произойдёт (хотя «Cloth» будет очень стараться сделать это), зато искажённая форма исходного объекта примет естественный вид. Именно для запоминания исходной формы объекта в его стек (ещё до применения каких либо действий) накладывается модификатор «Cloth».
Как же эта функция работает?
За «Возврат к исходной форме» отвечает раздел «Keep Shape», а именно расположенные в этом разделе два параметра: «Bend» и «Stretch»:
Первый отвечает за сохранение углов м/у гранями сетки, а второй за длину рёбер. Т.е. они стараются выпрямить текущую форму объекта, вернуть её в то состояние, которое модификатор запомнил в момент своего назначения. По умолчанию значения у этих параметров выставлены в максимум (100%). И нас это вполне устраивает, поскольку нам нужно вернуть утраченные позиции - объём.
Но прежде чем приступать к отвоёвыванию «былой мощи», необходимо вооружить войска – забрать в «Cloth» текущее состояние драйвера, которое как мы помним посредством «Skin Wrap» передаётся и самому проводу. Т.е. если сейчас отключить верхний модификатор «Skin Wrap» провод просто напросто вернётся в прямолинейное состояние.
Поэтому действуем тем же способом, который мы апробировали в начале урока:
Запускаем симуляцию и наслаждаемся результатом:
Альтернативный метод
Располагая корректно уложенным драйвером нашего провода, мы может снять с него сплайновую форму (кнопка «Create Shape»), которую в последствии будем использовать как заготовку для функции «Path» в модификаторе «Loft», а сечение можно взять с прямолинейной части провода. В результате, благодаря расширенным возможностям «Loft» мы достигнем дополнительной убедительности в уложенном ранее проводе, а так же получаем абсолютно корректное сечение без искажений.
Итак приступим.
1. Добавляем в стек Драйвера модификатор «Edit Poly». Делим объект на две части продольным ребром и снимаем с него сплайновую форму. Точно также поступаем и с сечением нашего провода:Получаем две сплайновые формы: «Сечение» и «Путь».
2. На «Путь» накидываем модификатор «Loft» и в качестве формы указываем наше «Сечение». Как результат, получаем адекватную фору провода, но с «адской» плотностью сетки:
В настройках самого модификатора «Loft» нас в основном будут интересовать только две вкладки «Skin Parameters» и «Deformations».
В первой вкладке разбираемся с плотностью сетки, оптимизируем её (насколько позволяют эти настройки). Во-второй добавляем «перекрученности» проводам. В результате имеем вполне убедительный результат.
У меня получилось так:
Но вернёмся к «Cloth» и рассмотрим ещё пару похожих примеров, в которых герой нашего блога проявляет себя с самой лучшей стороны.
Как уже было сказано ранее, предлагаемый способ укладки подходит не только для простых проводов, но и для более сложных форм.
Рассмотрим пример с установкой шланга на лейку душа:
Здесь будем использовать гибкий шланг в гофрированный латунной оболочке и наша задача заключается в аккуратном «подключении» его к лейке.
Геометрия такой модели в плане реализации не представляет большой сложности. Из сплайнового примитива «Helix» создаётся спиралевидная форма с одним полным оборотом и полученный элемент тиражируется на необходимую длину шланга. А вот с точки зрения симуляции такой заготовки, есть некоторые нюансы.
Дело в том, что в при изгибании подобного шланга в реальном мире, деформации внешних рёбер спирали не происходит. Однако, если попытаться реализовать такой изгиб в 3d– пространстве, искажений не избежать. И чем острее угол изгиба, тем заметнее они становятся. И именно здесь явных конкурентов у «Cloth» снова нет.
В этом примере мы воспользуемся уже рассмотренным нами способом устранения искажений, но с некоторой оговоркой.
Помимо того, что «Cloth» способен хранить в себе информацию об исходной форме объекта и в нужный момент задействовать механизм возврата к этому состоянию, он это ещё может делать очень деликатно. Т.е. если модификатору указать на конкретные участки сетки, то он будет обрабатывать (восстанавливать форму) только их. И именно эта особенность модификатора нам потребуется в реализации следующего примера.
Итак, приступим.
Возьмём стандартную душевую кабину и заменим имеющийся в ней шланг на другой – собственного производства:
Модель плитки
Всё лишнее можно срыть. Механизм подачи воды перенесём правее, чтобы максимально «заострить» угол изгиба у будущего шланга.
В нашем распоряжении, как и в предыдущем примере имеется прямолинейный вариант шланга «Hose» (1,5 м.) и находящийся в одной плоскости с ним драйвер формы «Driver (Hose)».
Алгоритм наших с Вами действий практически ни чем не будет отличаться от предыдущего примера, но в данном случае мы будем изначально действовать полноценно, т.е. сначала добавим исходной модели модификатор «Cloth», а уже затем приступим к остальным манипуляциям:
1. Размещаем в стеке объекта «Hose» модификатор «Cloth»:
2. Поверх «Cloth» размещаем модификатор «Skin Wrap» и привязываем шланг к драйверу.
Именно на данном этапе нам и необходимо воспользоваться описанным выше качеством модификатора и именно для этого в первом пункте мы размещали «Cloth» в стек исходной формы шланга:
1. Активировав объект «Hose», через вершину его стека забираем в «Cloth» текущее состояние драйвера «Driver (Hose)». После чего модификатор «Skin Wrap» можно отключить или вовсе удалить, он свою работу сделал.
Тем самым мы передали «хранителю» исходной формы дополнительную информацию о текущем состоянии объекта, а оно благодаря драйверу изменилось.
«Cloth» принял эти изменения к сведению и теперь во всеоружии готов начать симуляцию объекта «Hose». Нам лишь остаётся дать команду модификатору включить функцию «Возврат к исходной форме» и тем самым подтянуть её (форму) в нужных (проблемных) местах. Но как это сделать, ведь если мы вот так просто «в лоб» активируем галку «UseTarget State», то «Cloth» со всей своей цифровой самоотверженностью будет стараться вернуть исходную форму всему объекту. А нам нужно, чтобы свою форму восстановили только внешние рёбра спирали. Так как же поступить? Помните фразу про деликатную обработку?
Всё достаточно просто, нам нужно создать группу вершин относящихся к тем самым внешним рёбрам спирали и указать «Cloth_у», что восстановить форму нужно только у этой части геометрии.
Итак, как это сделать?
1. Для начала нам необходимо создать выделение нужной части геометрии. Это удобно делать на самом нижнем уровне стека («Edit Poly»), поскольку объект имеет прямолинейную форму и любые манипуляции с выделением подобъектов осуществляются очень легко и доступно (хотя в конкретном случае со спиралью это непринципиально):
2. Переходим в модификатор «Cloth» на уровне подобъектов «Group» принимаем созданное на нижнем уровне стека выделение вершин, создаём группу и даём ей логическое название:
Это и есть та самая деликатная настройка поведения Cloth– объекта. Теперь при запуске симуляции, форма нашего шланга слегка «подтянется» и примет более естественный вид.
Запускаем симуляцию:
Для восстановления формы достаточно нескольких секунд симуляции, хотя в некоторых случаях может потребоваться чуть больше времени, всё зависит от конкретной задачи.
Ну и в довесок ко всему вышесказанному замолвим словечко о связке «Path Deform» + «Cloth».
Суть такой связки заключается в доработке «Cloth_ом» уже готовой формы (полученной при помощи модификатора «Path Deform»).
Для примера из базы сайта 3ddd.ru можно взять вот такой пылесос и заменить ему шланг на более презентабельный (без претензий к автору модели):
За основу была взята обычная прямолинейная гофра, отмоделенная при помощи базовых инструментов + сплайновая форма выполняющая роль «пути» для гофрированной заготовки
Сегодня мы с Вами познакомились с весьма привлекательной методикой укладки проводов и не только их. Использовать ли её в своём рабочем процессе каждый решит сам. Но преимущества данного подхода на мой субъективный взгляд налицо.
При владении даже начальными навыками работы с Cloth– симуляцией, укладка такого рода объектов становится простой, быстрой и наглядной. Я бы даже сказал поведение моделей очень близко к физически корректному, а это немаловажный фактор в достижении фотореализма в своих проектах, о чём мы и говорили с Вами в начале урока.
На этом моё повествование можно считать законченным.
Вам всего доброго, хорошего настроения и здоровья)))