Динамика твердых тел

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

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

1. Откроем файл.

2. Преобразуем NURBS объект в Polygons. Выберите в меню Modify>Convert>NURBS to Polygons и щелкаем на квадрат рядом.

3. Для начала выберем в меню Edit>Reset Settings. В настройках преобразования выберем тип преобразования в полигоны Type>Triangles (треугольные полигоны), Tessellation method>General,Initial tessellation controls поставим Per span # of IsoParams для равномерного преобразования в полигоны по всему объекту. Остальные параметры оставим без изменения.

4. Полученный объект переместим в сторону, а предыдущий удалим.

5. Удалим историю создания объекта Edit>Delete By Type>History.

6. В окне диалога Channel Box для полученного объекта сменим имя вместо nurbsToPoly1 напишем glass. Переместим объект в начало координат, изменив значения Translate X, Translate Y, Translate Z на 0. Создадим плоскость, о которую будет разбиваться рюмка Crate>NURBS Primitives>Plane и увеличим ее.

7. Назначим материалы нашим объектам. Выделим плоскость и, удерживая правую кнопку выберем Materials>Assign New Material>Blinn. Аналогично поступим со вторым.

8. Изменим цвет объектов. Выделите плоскость и откройте для нее окно диалога Attribut Editor. В закладке blinn1 измените параметр Color на синий. Аналогично и с рюмкой, только цвет - белый.

9. Нажмите F4 для перехода в режим Dynamics.

10. В меню выберем Effects>Crate Shatter (создать обломки) и щелкаем на квадрат рядом.

11. Для начала выберем в меню Edit>Reset Settings. Выберем тип обломков Surface Shatter (поверхность). Изменим параметр Post Operation на rigid bodies with collisions off, Original Surface на Link to Shards. Теперь наша рюмка - активное тело. В окне диалога Outliner (Window>Outliner...) выберем нашу рюмку и поизменяем параметр Shatter в диалоговом окне Channel Box. Если пареметр включен (On), то объект разбит на части, а если выключен (Off) то как будто никаких изменений над объктом и не происходило. Оставим в положении Off.

12. Зададим начальную скорость по оси Y (Initial Velocity - задает скорость перемещения тела в первый момент анимации. Этот параметр имеет три поля, в каждом из которых указывается скорость движения относительно соответствующей координатной оси) введем значение Initial Velocity Y=-10. Прокрутим анимацию, рюмка пролетает сквозь плоскость.

13. Выделите опорную поверхность и выберите в меню Soft rigid Bodies>Crate Passive Rigid Body. В результате плоскость превратится в пассивное тело, с которым будет сталкиваться наша рюмка. Разумеется, активные и пассивные тела имеют различные атрибуты, но пока мы не будем обращать внимания на них внимания и оставим им заданные по умолчанию значения. Прокрутим анимацию. Рюмка после сталкновения с плоскостью отскочит.

14. Объект превращается в твердое тело в результате добавления ему набора атрибутов, отвечающих за его поведение в процессе имитации динамики. Рассмотрим наиболее важные параметры как активных, так и пассивных тел, участвующих в столкновениях. Mass (Масса) - задает относительную массу твердого тела. Масса является фактически определяющим, какое количество энергии будет передано при столкновении от одного объекта другому. Чем больше масса объекта, тем меньшее усилие ему потребуется, чтобы при столкновении сдвинуть другой объект, сохранив при этом часть собственной энергии для дальнейшего движения. Масса является относительной величиной, то есть если все взаимодействующие объекты имеют одиноковое соотношение масс, имитация динимики будет выглядетьодиниково вне зависимости от абсолютной масы. Bounciness (Упругость) - определяет количество энергии, остающееся у тела после столкновения. Чем больше значение, тем быстрее будет двигаться рикошетировавшее после столкновения тело. Damping (Торможение) - отвечает за уменьшение кинетической энергии в процессе движения тела. Чем больше значение этого параметра, тем быстрее будет уменьшаться скорость объекта. В нашем случае Mass=150, Bounciness=0,1, а Damping=0.

15. Повернем рюмку на градусов 30-50 по оси Z. Прокрутите анимацию.

16. Теперь наша рюмка летит так как надо, но она не разбивается. Изменяем параметр Shatter в диалоговом окне Channel Box на включен (On). Прокрутим анимацию с самого начала. Все тормозит - это из-за того, что наша рюмка уже расколота на части в самом начале и машина уже просчитывает как осколки летят вниз. Изменим параметр обратно на выключен (Off). Нам нужно, чтобы наша рюмка разбилась после соприкосновения с плоскостью. Для этого прокрутим анимацию до того момента, как рюмка косается плоскости и остановим анимацию. Выделяем параметр Shatter в диалоговом окне Channel Box и изменяем его на On, щелкаем правой кнопкой мыши на параметр Shatter и удерживая кнопку ведем курсор на параметр Key Selected, отпускаем кнопку мыши. Мы установили ключ анимации для осколков, но и до этого ключа араметр Shatter остался в положении On. Для того чтоб изменить его на Off, отмотаем на один кадр анимацию и изменим Shatter на Off, добавим ключ анимации. Прокрутим анимацию.

17. Рюмка пролетает сквозь плоскость. Чтобы это исправить в диалоговом окне Attribut Editor в закладке rigidBody в атрибуте Perfomance Attributes изменим параметр Collision Layer на -1.


18. Прокрутив анимацию, рюмка разбивается и осколки летят вверх как-то неестественно. Исправим это, выделим осколки и в меню Fields назначим Gravity, гравитацию.

19. Прокрутим анимацию. Теперь все в норме. Но осколки пересекают друг друга.

20. Для этого поэкпериментируйте с параметром Collisions в диалоговом окне Channel Box точно так же, как и с параметром Shatter.


Финальная анимация здесь.



Будут вопросы - пишите на мыло savenkov_v@mail.ru или на ICQ 171211020.

764 0 850 7
26
2006-03-16
неплохо, очень даже не плохо, хорошо расказаны основные приёмы и параметры. Damping ещё называют силой трения. вот только Shatter работает на мелких объектах, и у него есть 2 минуса. 1 это то что осколки делаются ТОЛЬКО по полигонам, тоесть выглядят неестественно... и 2 это то что внутри они пустые... конечно я не спорю что и Shatter ом можно добиться отличных результатов, но ведь для этих целей есть отличный плагин FerReel_BlastCode_Megaton_1.2_for_Maya. им можно добиться гораздо более впечатляющих результатов, затрачивая меньше усилий. он генерирует и крупные обломки и мелкие и даже пыль, если например разбить надо не бокал а стену. мало того он делает ещё и трещины если это надо, а если использовать черно белую карту трещин, то он будет разломы генерировать по этой карте. единственный минус этого дополнительного модуля, так это то, что работает он только с НАРБС. но ведь никто конвертирование не отменял :). вобщем почти высшие баллы
2006-03-16
skif (3D Work) В параметрах Crate Shatter есть Surface Shatter (плоскости), Solid Shatter (объемные куски) и Crack Shatter (трещины) :) Но чтобы добится реалистичного результата можно и не устанавливать специальный плагин, а ручками скрипт написать ;)
2006-03-16
skif А есть что-нибудь вроде FerReel_BlastCode_Megaton_1.2 под Макс?
2006-03-16
И кстати, а чего картинки в шапке сайта и финальная в уроке совсем разные?
2006-03-16
Здорово разбивается, этоже можно и для окна применить?
2006-03-16
dodo1 Просто картинку которую я прислал для шапки я подписал и она не подошла :( ... И окно все что угодно ;)
2006-03-16
GRAFT 16.03.2006 17:43 skif А есть что-нибудь вроде FerReel_BlastCode_Megaton_1.2 под Макс? есть... РЕАТОР :) 2 автор да, можно писать скрипты... вот только зачем? если уже всё прописано :)
2006-03-17
skif (3D Work) Писать скрип лишь для того чтобы лучше изучить этот эффект
2006-03-17
Наивный вопрос: а если у меня MAYA 6.0, то загрузить файлы со сценой и с анимацией мне не светит? (при скачивании Майя выдает ерор, а в скриптедиторе пишет, мол, иди нафик, версия не та) А урок-то очень интересный...
2006-03-17
антон семакин (3D Work) CСтолкнулся с аналогичной проблемой :( .... Пришлось 6.5 искать
2006-03-17
А конвертатор скачать - религия не позволяет?
2006-03-17
Lamez (3D Work) Я знаю что есть, но мне проще было Мак новую достать :)
2006-03-17
Майку
2006-03-17
to lamez и вообще всем >> А конвертатор скачать религия не позволяет? А объяснить дураку, что такое конвертатор и где его скачать мешает кодекс бусидо?
2006-03-19
Что-то голосование идет так вяло :(
2006-03-30
Урок понятный все отлично разбивается, вот только в конце когда дело доходит до "НЕПЕРЕСЕЧЕНИЯ" осколков Майку начинает глючить и появляется предупреждение об ошибке, то ли я не правильно понял "поэкпериментируйте с параметром Collisions", то ли версия Майки не подходит, у Меня 7.0.
2006-03-30
Урок понятный все отлично разбивается, вот только в конце когда дело доходит до "НЕПЕРЕСЕЧЕНИЯ" осколков Майку начинает глючить и появляется предупреждение об ошибке, то ли я не правильно понял "поэкпериментируйте с параметром Collisions", то ли версия Майки не подходит, у Меня 7.0.
2006-04-03
Vizar (3D Work) У меня небыло никаких проблем ... Версия майки 6.5 ... Может система глючит?
2006-09-12
Что-то тяжело разобраться.
2006-09-12
Почему то прога ошибки выдаёт. Не могу понять в чём дело.
2006-11-10
"в конце когда дело доходит до "НЕПЕРЕСЕЧЕНИЯ" осколков Майку начинает глючить " - У меня Майка вообще повесилась после этих кспириментов ваших... 7.0
2006-11-10
Урок, я так понимаю, расчитан только на юзеров 6.0, а для всех остальных - не годится. А жаль - в начале все получалось...
2006-11-14
Don_Umberto если расчет столкновения Collisions ставить с самого начала анимации то вся система точно повешается ... это нужно делать только после столкновения с объектом
2007-05-25
Digital tutorov nasmotrelsaia :))))))))))))
2007-05-25
No vseravno klassni urok
2009-03-28
спасибо автору за урок, поучающий!!!
RENDER.RU