Динамика твердого тела
Имитация динамики твердого тела используется в Maya для моделирования различных физических процессов. Элементы сцены имеют некую массу, а в некоторых случаях и начальную скорость перемещения и вращения. Затем к этим элементам применяются поля, оказывающие влияние на их движение. При столкновениях друг с другом объекты меняют направление движения в зависимости от их массы и указанной вами силы трения. Модуль динамики твердых тел производит все необходимые вычисления и моделирует движение тела.Имитация динамики в Maya осуществляется не только для твердых, но и для упругих тел. Во втором случае требуются более сложные расчеты.
Но пока мы рассмотрим объекты, не деформирующиеся при столкновениях. Для имитации динамики можно использовать как объекты, полученные на основе NURBS-кривых, так и объекты, построенные на основе сетки полигонов, но в обоих случаях необходимо учитывать направление их поверхностей. Столкновения осуществляются только сторонами, нормали которых направлены наружу. Если нужно смоделировать столкновения одного объекта с внутренними стенками другого, например перемещение шарика внутри полого куба, необходимо изменить направление нормалей. Для этого используются команды Edit NURBS › Reverse Surface Direction (Правка NURBS › Изменить направление поверхности) и Edit Polygons › Normals › Reverse (Правка полигонов › Нормали › Изменить направление).
Активные и пассивные тела
Взаимодействующие объекты могут быть активными и пассивными. Хотя последние и могут быть анимированы по методу ключевых кадров, они остаются статичными. Они могут участвовать в столкновениях, например, располагаясь на пути движения активного тела, но не реагируют на них. Существует возможность преобразовать пассивное тело в активное, и наоборот. В окне каналов находится параметр Active (Активный), который может иметь значение on или off.
Существует также возможность комбинировать обычную анимацию по методу ключевых кадров с имитацией динамики. Переход осуществляется с помощью команд Set Active Key (Создать активный ключ) и Set Passive Key (Создать пассивный ключ) меню Soft/Rigid Bodies (Упругие/Твердые тела). Таким способом можно получить, к примеру, обычную анимацию для отскоков мяча от поверхности с имитацией динамики его одновременного движения вниз по ступенькам лестницы.
Для активных объектов в окне каналов можно указать значение параметров Initial Velocity (Начальная скорость) и Initial Spin (Начальная угловая скорость), как показано на рис. 13.1.
Рис. 13.1. Настройка параметров активного твердого тела
Для активных и пассивных объектов изначально задаются значения параметров Impulse (Импульс) и Impulse Spin (Вращательный импульс) в произвольной начальной точке. Тем самым задается сила мгновенного воздействия на объект. Например, можно указать параметр Impulse Position (Точка приложения импульса) для края бильярдного шара, смоделировав удар кием.
Перечислим остальные параметры активных объектов:
- Mass (Масса). Вес объекта. В процессе столкновений более тяжелые объекты увлекают за собой более легкие.
- Soundness (Упругость). Количество энергии, остающееся после столкновения. Имейте в виду, что пассивные объекты тоже обладают упругостью и что значение этого параметра усредняется между всеми поверхностями, принимающими участие в столкновении. При этом объекты с высокой упругостью не могут сильно рикошетировать при столкновении с неупругим объектом.
- Damping (Торможение). Эффект, возникающий при перетаскивании объекта. Если значение данного параметра отлично от нуля, кинетическая энергия и момент импульса объекта постепенно уменьшаются.
- Static Friction (Трение покоя). Количество энергии, необходимое, чтобы заставить двигаться объект, расположенный на некоторой поверхности. В реальности, чтобы заставить объект двигаться вдоль поверхности, требуется большее количество энергии, чем на поддержание его движения с постоянной скоростью. Это связано с тем, что между поверхностями тел возникают силы сцепления. Чем более гладкие поверхности необходимо заставить перемещаться друг относительно друга, тем больше трение покоя. Например, намного проще заставить деревянный куб перемещаться по бетонному полу, чем вызвать движение резинового куба по стальной поверхности.
- Dynamic Friction (Динамическое трение). Количество энергии, необходимое для поддержания движения объекта вдоль некоторой поверхности. Необходимо помнить, что каждая поверхность имеет свой коэффициент трения и что поверхности взаимодействуют друг с другом. Например, для создания эффекта скользкой поверхности необходимо уменьшить величины трения покоя и динамического трения между поверхностью и объектами, которые приходят с ней в соприкосновение.
- Stand In (Заместитель). Обычно при имитации динамики во всех кадрах каждый полигон поверхности проверяется на предмет соприкосновения с поверхностью активного или пассивного тела. Если объекты собраны в группу или используется очень сложная модель, вычисления могут замедлиться настолько, что для их завершения понадобится несколько часов или даже дней. Но, указав соответствующее значение параметра Stand In (Заместитель), можно заменить реальную поверхность упрощенным объектом, что позволит ускорить процесс вычислений. В качестве заменителей предлагаются сфера и куб. Для плоских объектов обычно используется куб, который замещает объект его габаритным контейнером. Соответственно, для объектов сферической формы в качестве заместителя лучше брать сферу. Имейте в виду, что перемещения объектов зависят от вида заместителя, так что если при моделировании столкновений вы для яйца выберете в качестве заместителя куб, то возникнет впечатление, что перед яйцом находится прямоугольная пластина.
Совет
При работе со сложными объектами, форму которых невозможно представить в виде куба или сферы, также существует возможность ускорить вычисления. В этом случае создаются невизуализируемые аппроксимирующие объекты упрощенной формы. Затем исходный объект необходимо сделать родительским по отношению к аппроксимирующему, чтобы их перемещения происходили согласованно.
При имитации динамики прежде всего необходимо разделить объекты сцены на активные и пассивные. Это делается с помощью команд Create Active Rigid Body (Создать активное твердое тело) и Create Passive Rigid Body (Создать пассивное твердое тело) в меню Soft/Rigid Bodies (Упругие/Твердые тела). После этого можно задать параметры тела в окне каналов. Затем необходимо определить поля (fields), под действием которых находится объект, и указать, ограничивает ли что-нибудь его движение.