По созданию реалистичной анимации дамской сумочки

Здравствуйте, меня зовут Федор, мне 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.

Bag.zip

667 0 850 20
23
2008-11-25
За скрипт спасибо, полезная штука :)
2008-11-25
Грамматические ошибки в глаза бросаются... а по материалу - спасибо...
2008-11-25
Про ошибки плиз не надо, я про них знаю :(
2008-11-25
Хороший урок :)
2008-11-25
Мне понравилось и даже 5/5
2008-11-27
Хороший трюк с модификаторами! Поставлю 5\5, потому, что не знал... Да и просто спасибо! Будем применять и такой метод.
2008-11-27
На самом деле этот урок маленькая основа того, что действительно можно делать этим способом, он не только годится для анимации сумочек, но и очень сложной одежды с присутствующей со всей её атрибутикой, рукава, воротники, карманы, пуговицы, то есть моделишь костюм то как тебе надо и анимируешь. А если поразмышлять - то много чего можно придумат используя этот метод.
2008-11-27
Статья интересная, но было бы лучше если задействованные нами параметры описывались лучше(хотя бы два - три слова)
2008-11-28
Спасибо за статью. Почему-то думал что здесь также речь пойдёт о материалах и визуализации. Но и без этого урок очень даже не плох.
2008-11-28
урок как раз кстати!!! только не понял,зачем скрипт этот качать?в максе есть стандартный инструмент,который позволяет "пристёгивать" объекты ко всяким деформирующимся мешам P.S.-5/5
2008-11-29
Тема урока интересная, попробую его сделать, когда будет время. Анимация в результате получилась хорошая(особенно ткань), но есть парочка недочетов: 1. Девочка как-то странно моргает - закрываются не веки, а весь лоб 0_0 2. Движение сумочки по-моему слишком медленное( при таком рывке руки), хотя если дует ветер, то может быть.
2008-11-30
Как я понял, в качестве объекта для рассчета динамики ткани используется непосредственно модель сумочки. Я извиняюсь, но с таким подходом лично я не согласен. Более того, я считаю, что этот урок вводит в заблуждение в принципе. Сумочка это декорация, ну представте, что сумочка сделана полностью преленая, и содержит столько полигонов, что мама мия, и что вы ее тоже будете высчитывать тканью? Нет. Сумочка - это декорация и все просчеты надо делать на невидимых объектах, а чистовую модель надо скинить и врапить к этим объектам.
2008-11-30
сорри ошибочка..... "что сумочка сделана полностью плетеная"... я имел ввиду, что она может быть очень сложной или солжно составной моделью.
2008-12-01
[quote=Максим Поклонов] [/quote] В одной книги было как-то написано - если вы будите то и дело тупо повторять один и тот же урок, то вы никогда ничему не научитесь. Читайте мои комментарии ниже, этот урок не только для сумочки, это принципиальный подход к анимации сложный тканей. И я как понял, Вы его вообще не поняли, так как написали глупость. Skin Wrap - может присваивать деформации и к многополигональным объектам, а если у Вас заоблачное число полигонов, то естественно нужно искать другие методы, здесь описано то, что описано, принципиально для этого метода, и так же для метода посложнее, главное дальше развить свою фантазию.
2008-12-01
Ха, извиняюсь Feodor, я действительно невнимательно прочитал урок. Написано очень сложно, много говорится о том что нажать, и где кликнуть, но мало объясняется сам принцип. И честно говоря только прочтения с третьего увидел, что вы именно так и делаете, как я заметил в свое посте, то есть вы делаете анимацию на более простом объекте, а потом приврапливаете к нему декорацию. Беру свои слова назад 5/5
2008-12-01
[b]Дарья Дыхановская[/b] Не знаю, мне лично всё понятно… :))) да и многие тут тоже разобрались. Там же написано – [i] Когда всё настроено, жмем на сумке правой мышкой, заходим в его свойства, Object Properties и там снимаем галочку, Renderable, выключаем её из Рендера, что бы при визуализации его не было.[b] Так как сам объект нам нужен только для деформации[/i].[/b] А иначе, для чего его ещё исключать из рендера? [b]Максим Поклонов (3D Work)[/b] Про девочку, это уже другая тема, которая тут не описывается. :) (оффтопик) Тем более она у меня теперь моргает всем чем надо!. :) Движение у сумочки действительно плавное, так как у Cloth, есть большой недостаток, он не умеет считать твёрдые тела, по крайней мере я этой функции у него не нашел, а иначе можно было бы положить туда что-нибудь твёрдое и было бы грузом. [b]виталий антоновас[/b] Поподробнее плиз... :) Мне кажется, что вы с чем-то путаете, можно пристегнуть объект к деформирующемуся мешу, но при этом не будет изменяться пивот, (ось) объекта, а это очень важно, так как нельзя будет потом прилинковывать другую геометрию, что бы она так же перемещалась.
2008-12-01
Незнаю как всем, но мне показалось не реалистичынм движение сумки. Она какбудтобы под водой двигоется: медленно и со слабыми колебаниями встороны. Нухно увеличить скорость и амплитуду калибаний и тогда будет супер.
2008-12-01
Вот ёёё, сделали тоже... нельзя редактировать сообщения...... Перепутал обращения. То что шло для Дарья Дыхановской, получилось - Максиму Поклонову и так же наоборот! :) Понимать обратно...
2008-12-01
Не понял при чем тут девочка, я вроде ничего не по теме не говорил, ну да ладно. Я тут попробовал сделать из ткани твердое тело. Я не делал сумку и ремешок единым мешом, я на углах сумочки слелал по группе и каждую привязал к ремешку. Чтобы задать жесткость сумочке я выкрутил в настройках ткани (сумочки) параметр Shear до 10 000, а Bend до 1000. Так сумочка стала жесткой. Вес сумочки (да и ремешка собственно) можно подстроить параметром Density (только он сильно чувствительный, убавил на пару единиц.) [url=http://radikal.ru/F/s40.radikal.ru/i087/0812/6c/9c05120d32c5.gif.html][img]http://s40.radikal.ru/i087/0812/6c/9c05120d32c5t.jpg[/img][/url]
2008-12-01
[quote=Feodor] Не знаю, мне лично всё понятно… :))) да и многие тут тоже разобрались. [/quote] Если бы я не знал как делаются такие вещи, прочитал бы более внимательно. Еще раз прошу прощения на необоснованную критику.
2008-12-01
[quote=Максим Поклонов] Не понял при чем тут девочка, я вроде ничего не по теме не говорил, ну да ладно. Я тут попробовал сделать из ткани твердое тело. Я не делал сумку и ремешок единым мешом, я на углах сумочки слелал по группе и каждую привязал к ремешку. Чтобы задать жесткость сумочке я выкрутил в настройках ткани (сумочки) параметр Shear до 10 000, а Bend до 1000. Так сумочка стала жесткой. Вес сумочки (да и ремешка собственно) можно подстроить параметром Density (только он сильно чувствительный, убавил на пару единиц.) [/quote] Окей, спасибо за параметры. :) Попробуемс...
2008-12-01
[b]Feodor[/b]:за второе видео тоже пасиба.
2008-12-04
О, кстати посмотрел видео из архива. Анимация конечно дубовенькая, но я так понимаю главное было ткань показать, вот ткань классно получилась, молодец! Только я там много мелких косячков начитал, где ткань юбки пересекается с луной, потом с блузкой. Эти косячки очень просто можно убрать, если, в стек добавить модификатор Mesh select (перед модификатором Mesh Smooth), выделить точки в месте пересечения и к выделенной области применить модификатор Push. Сделать анимацию на него, чтобы он оттаклкивал точки в месте пересечения в нужный момент. Правда такую систему надо городить на каждый проблемный участок, зато здорово помогает. Вот видео был моментик интересный, где у тебя ткань юбки коллайдится с тканью блузки. Зря не описал, это насколько я знаю тоже не простой прием, то есть делается сначала анимация юбки, а потом блузки, и в качестве Collision Object для бузки указывается юбка... Этот прием анимации нескольких тканей зря не описал, было бы интререснее.
RENDER.RU