Уроки: Maya

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

В 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.

24069 Автор:
Актуальность: 755
Качество: 738
Суммарный балл: 1493
Голосов: 14 оценки

Отзывы посетителей:

2 | След.
аватар
 
ChipGroups 2 0
спасибо автору за урок, поучающий!!!
аватар
 
NikaCGI 28 0
No vseravno klassni urok
аватар
 
NikaCGI 28 0
Digital tutorov nasmotrelsaia :))))))))))))
аватар
 
Xaoc 7 0
Don_Umberto если расчет столкновения Collisions ставить с самого начала анимации то вся система точно повешается ... это нужно делать только после столкновения с объектом
аватар
 
Don_Umberto 2 0
Урок, я так понимаю, расчитан только на юзеров 6.0, а для всех остальных - не годится. А жаль - в начале все получалось...
аватар
 
Don_Umberto 2 0
"в конце когда дело доходит до "НЕПЕРЕСЕЧЕНИЯ" осколков Майку начинает глючить "
- У меня Майка вообще повесилась после этих кспириментов ваших... 7.0
аватар
 
maxer 7 0
Почему то прога ошибки выдаёт. Не могу понять в чём дело.
аватар
 
scripterBB 11 0
Что-то тяжело разобраться.
аватар
 
Xaoc 7 0
Vizar (3D Work) У меня небыло никаких проблем ... Версия майки 6.5 ... Может система глючит?
аватар
 
Vizar 35 0
Урок понятный все отлично разбивается, вот только в конце когда дело доходит до "НЕПЕРЕСЕЧЕНИЯ" осколков Майку начинает глючить
и появляется предупреждение об ошибке, то ли я не правильно понял "поэкпериментируйте с параметром Collisions", то ли версия Майки
не подходит, у Меня 7.0.
аватар
 
Vizar 35 0
Урок понятный все отлично разбивается, вот только в конце когда дело доходит до "НЕПЕРЕСЕЧЕНИЯ" осколков Майку начинает глючить
и появляется предупреждение об ошибке, то ли я не правильно понял "поэкпериментируйте с параметром Collisions", то ли версия Майки
не подходит, у Меня 7.0.
аватар
 
Xaoc 7 0
Что-то голосование идет так вяло :(
аватар
 
антон семакин 22 0
to lamez и вообще всем
>> А конвертатор скачать религия не позволяет?
А объяснить дураку, что такое конвертатор и где его скачать мешает кодекс бусидо?
аватар
 
Xaoc 7 0
Майку
аватар
 
Xaoc 7 0
Lamez (3D Work) Я знаю что есть, но мне проще было Мак новую достать :)
аватар
 
Lamez 61 0
А конвертатор скачать - религия не позволяет?
аватар
 
Xaoc 7 0
антон семакин (3D Work)

CСтолкнулся с аналогичной проблемой :( .... Пришлось 6.5 искать
аватар
 
антон семакин 22 0
Наивный вопрос: а если у меня MAYA 6.0, то загрузить файлы со сценой и с анимацией мне не светит?
(при скачивании Майя выдает ерор, а в скриптедиторе пишет, мол, иди нафик, версия не та)
А урок-то очень интересный...
аватар
 
Xaoc 7 0
skif (3D Work)
Писать скрип лишь для того чтобы лучше изучить этот эффект
2 | След.
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: * уникальных посетителей