По созданию реалистичной анимации дамской сумочки
Здравствуйте, меня зовут Федор, мне 28 лет. Я давно занимаюсь 3D графикой, недавно решил освоить одно из его очень сложных, но не менее интересных направлений, это анимация. В промессе исследования нашел для себя несколько способов, которыми хочу поделиться. Речь пойдет о реалистичной анимации дамской сумочки в 3DSMAX 2008 с применением такого стандартного модификатора, как Cloth (ткань).
Я не буду описывать подробно, как создавалась сумочка, так как думаю - люди занимающиеся анимацией хорошо знакомы с процессом моделирования. Остановлюсь только на главных местах «уловках», которые сокращали просчет физики ткани при использовании этого инструмента.
Что для этого нам потребуется, при помощи Edit Poly, создать примерно такой вот объект:
Назовём его «Bag».
Я старался минимизировать количество полигонов, ставить их только там, где они больше всего нужны. Чисто только ради ускорения в моделировании самого объекта и последующего Unwrap`инга текстур.
После успешного расположения всех полигонов в пространстве и настройки Mapping`a. Мы поверх инструмента Editable Poly, кладем модификатор TurboSmooth, со значением Interation 1. Появляется дополнительная геометрия, она как раз и будет служить для деформации самой сумки и лямок при просчете физики.
Но советую обратить внимание на красные стрелки, я ими пометил проблемные места, которые возникнут, если на сумку сейчас наложить Cloth:
1. Лямки и ремень не связаны с самой сумкой, они у меня вообще лежат отдельными объектами.
2. И самая нижняя стрелка, там где складочки, (шов) сумки. При просчете Cloth может выдать ошибку о пересечении полигонов друг за другом, из-за чего анимация просто не получится. Это будет вызвано очень маленьким расстоянием, между полигонами, компьютеру потребуется задать очень большой Subsample при просчете, а это очень сильное увеличит время при вычислении, что нам совсем не нужно.
Что я для этого сделал. Я сделал копию сумки, назовем её «Bag Deform», так же скопировал лямки, и ремень, с лямок и ремня убрал модификатор TurboSmooth (при копировании геометрию никуда не отодвигал, геометрия должна точно совпадать, с геометрией первоначального объекта). Дальше, в самой сумке спустился по стеке вниз к Editable Poly, добавил в один объект все её объекты, лямки, ремень. При помощи Weld (спаять) убрал все швы и разорванные места, получив едино-цельный объект как на этой картинке.
Этот объект как раз вполне будет «анима-способный». Ничего сложного и трудного для компьютера в плане геометрия в нём уже нет. Дальше, кладем поверх TurboSmooth, модификатор Cloth, который в дальнейшем нам и будет просчитывать анимацию. И уже в нём в настройках Object Properties вводим нужные нам значения. У меня лично они такие:
Дальше в свитке Simmilation Parametrs выставляем следующие настройки:
cm/unit 1,0 – это масштаб деформации, чем значение больше, тем ткань как бы менее гибкая, то есть увеличивая значение мы увеличиваем как бы размер полотна, будет больше складочек, на данный момент самый оптимальный единица. Gravity Гравитацию, я увеличил ради веса. Subsample, точность просчета, она делит каждый кадр на подкадр, в данный момент на 5, чем больше подкадров положений геометрии, тем точнее будет просчитываться геометрия и вероятность проникновения объекта внутрь другого объекта уменьшится. Но и время на просчёт будет увеличиваться. Self Collision, просчёт собственного столкновения. Ну и дальше уже как на картинке.
Дальше нам нужно застегнуть место пуговицы с самой сумкой, что бы при анимации она не открывалась. В Cloth заходим под объект Group, в нем выбираем несколько вертексов:
После жмем Make Group. Так же выделяем на другой стороне сумки несколько вертексов:
Опять жмём Make Group, после там же жмем на кнопку Group и связываем между собой эти две группы выбранных вертексов, готово геометрия застегнута.
Когда всё настроено, жмем на сумке правой мышкой, заходим в его свойства, Object Properties и там снимаем галочку, Renderable, выключаем её из Рендера, что бы при визуализации его не было. Так как сам объект нам нужен только для деформации.
Переходим к самой первой нами созданной сумки, «Bag», и также поверх TurboSmooth, кладем модификатор Skin Wrap. Это модификатор отслеживает положение вертексов, к заданному объекту, и изгибает текущую геометрию, с рядом стоящей, проще говоря -повторяет деформацию. В параметрах добавляем объект Bag Deform и выставляем примерно такие значения:
Deformation Engine, поставил отслеживать вертексы, «Vertex Deformation»:
Falloff, сила привязки выкрутил на полную, так же поступил и с Distance Infl.
Face Limit, это я как понял радиус взаимодействия, поставил 3.
Затем по стеку добавил модификатор Shell «оболочка» задал толщину сумки, а то без толщены объект выглядит не реально. И уже поверх Shell мы кладем ещё TurboSmooth, c значением Interations 2, тем самым сглаживаем все острые края, и делаем более ровную геометрию.
Туже операцию, повторил и с другими её объектами, лямками и ремнём, > Skin Wrap > Shell > TurboSmooth.
Что бы привязать пуговицу и железные ручки, где лямки мне понадобился скрипт Create Face Attached to Surfase, от аниматора Paul Hormis.
Обращение со скриптом простое - после его запуска, указываешь на поверхности сумки «Bag Deform» точки - минимум их должно быть три, жмем правую кнопку мыши, он спросит - создать геометрию? Говорите – да. на появившемся объект планар, в его центр ещё раз указываем мышкой, в том место появляется Point, к нему то мы и линкуем пуговицу. Операцию повторяем и с железными ручками для лямок, сами планеры, так же исключаем из рендера.
Да чуть не забыл, не забудьте, в объекте «Bag deform» в Cloth добавить какой-нибудь взаимодействующий объект. Что бы сумка не свалилась в виртуальную бездну.
И всё готово, осталось нажать на Simulate и наблюдать за процессом. :)
Файлы сцены и сам скрипт вы найдёте в архиве, я думаю никаких проблем не должно возникнуть, весь урок, и сама сцена была выполнена под 3DsMax 2008.