Первые шаги в Maya. Урок 20. Динамика твердых тел

Светлана Шляхтина

Теоретические аспекты

Примеры сцен с динамическим воздействием

Разрушаем башню из кубиков

Раскачиваем цепочку

Разбиваем бильярдную пирамиду

Создаем танцующие листья

Вращаем шестеренки

Разбрасываем костяшки домино

Примеры сцен с динамическим воздействием

Разрушаем башню из кубиков

Попробуем воспользоваться возможностями динамики твердых тел для создания анимации построенной из детских кубиков башни, которая должна рассыпаться прямо на глазах. Вначале смоделируем саму башню — пусть в ней будет 20 кубиков. Создайте сцену с плоскостью и пока одним кубиком (рис. 19). Превратите единственный кубик в трехмерный массив кубиков, трижды проведя операцию дублирования. Для этого выделите кубик и примените к нему команду Edit=>Duplicate (Редактировать=>Дублировать) с параметрами как на рис. 20 — появится одномерный массив кубиков (рис. 21). Выделите все кубики одновременно и проведите второе дублирование (рис. 22), а затем для всех выделенных кубиков — третье (рис. 23), что и приведет к появлению башни из кубиков (рис. 24).

 

Рис. 19. Исходный куб

Рис. 19. Исходный куб

 

Рис. 20. Настройка параметров для первого дублирования

Рис. 20. Настройка параметров для первого дублирования

 

Рис. 21. Одномерный массив кубиков

Рис. 21. Одномерный массив кубиков

 

Рис. 22. Второе дублирование

Рис. 22. Второе дублирование

 

Рис. 23. Третье дублирование

Рис. 23. Третье дублирование

 

Рис. 24. Башня из кубиков

Рис. 24. Башня из кубиков

 

Увеличьте число кадров анимации до 400. Удостоверьтесь, что находитесь в 1-м кадре. Выделите плоскость и превратите ее в пассивное твердое тело (команда Soft/RigidBodies=>CreatePassiveRigidBody). Выделите все кубики и немного приподнимите их над плоскостью, а затем назначьте им гравитационную силу, воспользовавшись командой Fields=>Gravity. После этого вновь выделите кубики, установите для них силу Ньютона (команда Fields=>Newton) и в окне каналов увеличьте для данной силы значение параметра Magnitude, регулирующего силу воздействия поля, примерно до 10 (рис. 25). Придайте хаотичность разбрасыванию кубиков, воздействовав на них полем турбулентности (команда Fields=>Turbulence) с силой воздействия, равной примерно 120 (параметр Magnitude). Проиграйте анимацию, и вы увидите, что башня рассыплется на отдельные кубики, причем некоторые из них могут даже упасть с плоскости (чтобы этого не происходило, масштабируйте плоскость). Текстурируйте все элементы сцены, возможный вид которой в некоторых кадрах анимации представлен на рис. 26.

 

Рис. 25. Настройка силы воздействия поля Newton

Рис. 25. Настройка силы воздействия поля Newton

 

Рис. 26. Разрушающаяся башня

Рис. 26. Разрушающаяся башня

В начало В начало

Раскачиваем цепочку

Создайте сцену с масштабированным по оси X торусом (рис. 27) — это будет первое звено цепочки. Обратите внимание, что если системные ресурсы ограниченны, то для тренировки лучше уменьшить у торуса число разбиений по обеим осям, например до 8 и 5, в противном случае для имитации динамики может потребоваться много времени. Продублируйте торус так, чтобы получить сразу всю цепочку (рис. 28). Выделите все торусы, кроме последнего, и поверните и переместите данную цепочку так, чтобы второе звено оказалось естественно расположенным по отношении к первому (рис. 29). Снимите выделение со второго торуса (последние восемь торусов останутся выделенными) и вновь осуществите поворот и перемещение цепочки и т.д., пока все звенья цепочки не будут обработаны нужным образом (рис. 30).

 

Рис. 27. Исходный торус

Рис. 27. Исходный торус

 

Рис. 28. Дублирование торуса

Рис. 28. Дублирование торуса

 

Рис. 29. Вращение цепочки торусов

Рис. 29. Вращение цепочки торусов

 

Рис. 30. Готовая цепочка

Рис. 30. Готовая цепочка

 

Выделите всю цепочку и сместите ее так, чтобы левая граница первого ее звена оказалась в начале координат. Выделите первый торус и установите для него ограничитель Nail, воспользовавшись командой Soft/RigidBodies=>CreateNailConstraint. Выделите в окне Outliner данный ограничитель (он называется rigidNailConstraintl) и переместите его точно в начало координат (рис. 31). Выделите все торусы и назначьте им гравитационную силу (команда Fields=>Gravity), и при проигрывании анимации вы увидите, что цепочка раскачивается. Текстурируйте сцену, возможный вид которой в одном из кадров анимации представлен на рис. 32.

 

Рис. 31. Перемещение Nail-ограничителя

Рис. 31. Перемещение Nail-ограничителя

 

Рис. 32. Раскачивающаяся цепочка

Рис. 32. Раскачивающаяся цепочка

В начало В начало

Разбиваем бильярдную пирамиду

Немного усложним задачу и попробуем получить анимацию разбивания бильярдной пирамиды. Смоделируйте сцену с шаром и профилем бильярдного стола с бортиками — в целях экономии времени мы ограничимся лишь имитацией стола, в качестве которой послужит полигональный куб, у которого экструдированы (команда Edit Polygons=> Extrude Face — Правка полигонов=>Выдавить грань) грани, расположенные по контуру верхней поверхности (рис. 33 и 34). А лузы создавать вообще не будем. Теперь нужно сформировать пирамиду из шаров — можно вручную, но в этом случае придется потратить немало времени на их выравнивание друг относительно друга. Поэтому мы прибегнем к дублированию, воспользовавшись командой Edit=>Duplicate, применить которую придется несколько раз. Вначале нужен объект для дублирования, поэтому создайте первый шар вручную (рис. 35). Выделите полученный шар и сформируйте путем дублирования первый ряд шаров (рис. 36). Опять выделите исходный шар и создайте ряд шаров, симметричный к только что созданному (рис. 37). И вновь выделите первый шар, и уже при других параметрах дублирования вы получите центральный ряд шаров (рис. 38). Теперь выделите указанные на рис. 39 шары и продублируйте их (рис. 40), а затем проведите аналогичную операцию в отношении шаров, выделенных на рис. 41 (рис. 42). Создайте копию одного из шаров пирамиды и расположите ее в противоположной от пирамиды стороне стола — это будет ударный шар-биток (рис. 43).

 

Рис. 33. Выделение граней полигонального куба

Рис. 33. Выделение граней полигонального куба

 

Рис. 34. Выдавливание граней полигонального куба

Рис. 34. Выдавливание граней полигонального куба

 

Рис. 35. Вид сцены с одним шаром

Рис. 35. Вид сцены с одним шаром

 

Рис. 36. Первое дублирование

Рис. 36. Первое дублирование

 

Рис. 37. Второе дублирование

Рис. 37. Второе дублирование

 

Рис. 38. Третье дублирование

Рис. 38. Третье дублирование

 

Рис. 39. Выделение шаров для четвертого дублирования

Рис. 39. Выделение шаров для четвертого дублирования

 

Рис. 40. Четвертое дублирование

Рис. 40. Четвертое дублирование

 

Рис. 41. Выделение шаров для пятого дублирования

Рис. 41. Выделение шаров для пятого дублирования

 

Рис. 42. Пятое дублирование

Рис. 42. Пятое дублирование

 

Рис. 43. Вид сцены с пирамидой и ударным шаром

Рис. 43. Вид сцены с пирамидой и ударным шаром

 

Выделите все шары (включая ударный шар) и немного приподнимите их над поверхностью стола (рис. 44) — это позволит избежать взаимопроникновения геометрии. Увеличьте число кадров анимации до 150. Выделите куб, имитирующий бильярдный стол, и превратите его в пассивное твердое тело, применив команду Soft/RigidBodies=>CreatePassiveRigidBody. Выделите все сферы (включая ударный шар) и назначьте им гравитационную силу (команда Fields=>Gravity). Проиграйте анимацию, в ходе которой шары просто опустятся на поверхность стола, но пирамида не разрушится. Для разбивания пирамиды нужно произвести удар битком, но данный шар является активным твердым телом, поэтому вручную создать для него соответствующие ключевые кадры нельзя — требуется временно превратить ударный шар в пассивное тело, а затем (то есть после удара) вновь сделать активным. Установите таймер временной шкалы на 1-й кадр, выделите биток и примените команду Soft/RigidBodies=>SetPassiveKey (Мягкие/Твердые тела=>Создать пассивный ключ) — данное действие переведет ударный шар в пассивное состояние, о чем будет свидетельствовать изменение в окне каналов значения атрибута Active (Активное) с On (Вкл.) на значение Off (Выкл.) — рис. 45 и 46. Переместите ползунок таймера анимации, например, в 15-й кадр и передвиньте биток в точку предполагаемого удара (рис. 47), а затем вновь создайте пассивный ключ (команда Soft/RigidBodies=>SetPassiveKey). Учитывая, что после удара биток (как и прочие шары) должен двигаться под воздействием столкновения и гравитации, активируйте 16-й кадр и вновь сделайте биток активным, создав активный ключ командой Soft/RigidBodies=>SetActiveKey (Мягкие/Твердые тела=>Создать активный ключ).

 

Рис. 44. Перемещение шаров

Рис. 44. Перемещение шаров

 

Рис. 45. Вид окна каналов для ударного шара, находящегося в стадии активного тела

Рис. 45. Вид окна каналов для ударного шара, находящегося в стадии активного тела

 

Рис. 46. Вид окна каналов для ударного шара, находящегося в стадии пассивного тела

Рис. 46. Вид окна каналов для ударного шара, находящегося в стадии пассивного тела

 

Рис. 47. Перемещение битка в точку предполагаемого удара

Рис. 47. Перемещение битка в точку предполагаемого удара

 

Проиграйте анимацию — как и предполагалось, ударный шар будет разбивать пирамиду, правда не совсем реалистично. Проблема в том, что установленные по умолчанию для активных тел параметры не соответствуют ситуации. Во-первых, ударный шар в действительности должен иметь некоторую начальную скорость — выделите его и в окне каналов увеличьте значение параметра InitialVelocity (Начальная скорость) по оси Z примерно до 40 (рис. 48). Во-вторых, бильярдные шары сами по себе достаточно тяжелые, а поверхность бильярдного стола сравнительно гладкая. Учтем это. Выделите все шары и в окне каналов (а не в редакторе атрибутов, так как там можно менять параметры лишь у каждого объекта по отдельности) измените для них значения параметров Mass (Масса), StaticFriction (Трение покоя), DynamicFriction (Динамическое трение) и Bounciness (Упругость) в соответствии с рис. 49. После этого проиграйте анимацию, и вы увидите, как биток разбивает пирамиду, шары из которой раскатываются в разные стороны, и происходит это уже более реалистично (рис. 50).

 

Рис. 48. Увеличение начальной скорости для ударного шара

Рис. 48. Увеличение начальной скорости для ударного шара

 

Рис. 49. Изменение параметров шаров

Рис. 49. Изменение параметров шаров

 

Рис. 50. Разбиваемая бильярдная пирамида

Рис. 50. Разбиваемая бильярдная пирамида

В начало В начало

КомпьютерПресс 4'2008

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует