Первые шаги в Maya. Урок 20. Динамика твердых тел
Примеры сцен с динамическим воздействием
Создаем танцующие листья
Создайте сцену с полигональным кубом, имеющим совсем небольшую высоту (рис. 51). Путем двукратного дублирования на основе данного куба получите целое множество таких же плоских кубов — для этого вначале продублируйте данный куб с размещением копий вдоль оси X (рис. 52), а затем проведите дублирование уже для всего ряда кубов сразу, размещая дубли вдоль оси Z (рис. 53).
Рис. 51. Исходный куб
Рис. 52. Первое дублирование
Рис. 53. Второе дублирование
Свяжите все плоские кубы попарно ограничителем Spring (команда CreateSpringConstraint из меню Soft/RigidBodies, рис. 54) — учитывая, что данную операцию придется проводить для каждой пары индивидуально, предварительно вытяните на экран меню Soft/RigidBodies, перетащив его в окно проекции за двойную полоску. «Прибейте» четыре граничных куба ограничителем Nail (рис. 55) — вначале выделите первый граничный куб и примените к нему команду CreateNailConstraint из меню Soft/RigidBodies, затем аналогичную операцию проведите для второго куба и т.д. Выделите в окне Outliner все кубы и назначьте им гравитационное поле (команда Fields=>Gravity). Измените для данного поля в окне каналов значение параметра DirectionY с –1 на 1 (рис. 56). Для того чтобы добиться более интересного размещения кубов при анимации, расположите их более свободно (рис. 57). После этого для перемещенных граничных кубов скорректируйте положение ограничителей Nail, просто переместив их так, чтобы они вновь оказались в центре кубов (если этого не сделать, то при анимации данные объекты будут крутиться). Проиграйте анимацию — плоскости начнут двигаться, оставаясь при этом привязанными друг к другу и к фиксированным точкам пространства (рис. 58). Для получения более привлекательного размещения объектов дополнительно измените настройки Spring-ограничителей — выделите их в окне Outliner и в окне каналов измените значения параметров SpringStiffness (Жесткость пружины), SpringDamping (Торможение пружины) и SpringRestLength (Длина пружины в состоянии покоя), сделав их равными 50, 1 и 5 соответственно (рис. 59). По окончании создайте новый Blinn-материал и на канале Color для него в качестве текстуры установите рис. 60, а на канале Transparency — рис. 61. Проиграйте анимацию, и вы увидите, что теперь своеобразный танец начнут исполнять уже не плоские кубы, а настоящие листья (рис. 62).
Рис. 54. Вид сцены после попарного связывания кубов
Рис. 55. Вид сцены после «прибивания» граничных кубов
Рис. 56. Изменение параметров поля гравитации
Рис. 57. Результат перемещения части кубов
Рис. 58. Вид сцены в одном из промежуточных кадров анимации
Рис. 59. Настройка параметров Spring-ограничителей
Рис. 60. Текстура для канала Color
Рис. 61. Текстура для канала Transparency
Рис. 62. Танцующие листья
Вращаем шестеренки
Создайте сцену с полигональным цилиндром, имеющим в основаниях по 40 сегментов (рис. 63). Активируйте проекцию Top, выделите цилиндр, переключитесь в режим работы с вершинами (клавиша F9), выделите десять пар вершин (выбирая пары через одну) и масштабируйте их так, чтобы в разрезе цилиндр стал напоминать шестеренку (рис. 64). Вернитесь в режим работы на уровне объектов (клавиша F8) и уменьшите высоту цилиндра (рис. 65). Поверните полученную шестеренку относительно оси X на 90° (рис. 66). Продублируйте шестеренку и полученную ее копию разместите чуть выше исходной шестеренки, четко согласовав положение зубцов (в противном случае нормального вращения не добиться), — рис. 67.
Рис. 63. Исходный цилиндр
Рис. 64. Масштабирование вершин цилиндра
Рис. 65. Масштабирование самого цилиндра
Рис. 66. Поворот шестеренки
Рис. 67. Две шестеренки после согласования их положения
Выделите первую шестеренку и назначьте ей ограничитель Hinge, воспользовавшись командой Soft/Rigid Bodies=> Create Hinge Constraint. Аналогичную операцию проведите в отношении второй шестеренки (рис. 68). Попробуйте проиграть анимацию — несмотря на то что обе шестеренки могут свободно вращаться вокруг осей ограничителей, пока они остаются неподвижными. Дело в том, что для приведения шестеренок в движение требуется какое-то столкновение — например, по одной из шестеренок должен ударить некоторый объект. Пусть таким объектом будет обычный шар — создайте его и поместите над первой шестеренкой (рис. 69). Назначьте шару гравитационную силу. Пока этого также еще недостаточно для вращения шестеренок, поскольку необходимо сделать первую из них (так как именно на нее будет падать шар) восприимчивой к подобным столкновениям. Для этого выделите первую шестеренку и в окне каналов установите счетчик ParticleCollision в положение On (рис. 70). Запустите анимацию, и вы увидите, что шар при падении задевает первую шестеренку, она начинает вращаться и вовлекает во вращение вторую шестеренку. Дополните сцену визуализируемыми осями вращения, насадите на них шестеренки и сохраните анимацию, возможный вид которой в некоторых кадрах представлен на рис. 71.
Рис. 68. Вид сцены после назначения Hinge-ограничителей
Рис. 69. Появление шара
Рис. 70. Изменение параметров первой шестеренки
Рис. 71. Вращающиеся шестеренки