Динамика твердого тела 1. 2. 3. 4. 5. Какие тела называют активными? Как сделать объект активным? Какие тела называют пассивными? Как сделать объект пассивным? Перечислите параметры активных тел. Перечислите динамические поля в Maya и укажите назначение каждого поля. Перечислите ограничители в Maya и укажите назначение каждого типа ограничителя. Имитация динамики твердого тела используется в 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. Для активных и пассивных объектов изначально задаются значения параметров 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), под действием которых находится объект, и указать, ограничивает ли что-нибудь его движение. Поля Полями называются локализованные или глобальные силы, действующие на объекты. В главе 4 для моделирования движения воды вам уже приходилось применять поле Turbulence (Турбулентность). Поля снабжены своим собственным значком, что облегчает процесс их выделения в ситуациях, когда необходимо анимиро-вать поле или изменить его параметры. Например, можно сделать так, чтобы гравитационное поле меняло свое направление в процессе анимации, или присоединить поле Air (Атмосфера) к шлюпке, чтобы создать брызги, как при перемещении через поле частиц. Позднее с помощью окна диалога Relationship Editor (Редактор связей) можно отредактировать количество объектов, находящихся под действием поля. В Maya существуют следующие поля: Air (Атмосфера). Давящее поле, в настройки которого включены параметры Wind (Ветер), Wake (Воздушная струя) и Fan (Вентилятор), позволяющие имитировать ветер, движение воздуха, возникающее в результате движения объектов, и работу вентилятора. Drag (Торможение). Поле, замедляющее движение попадающих в него объектов. Gravity (Сила тяжести). Одно из наиболее часто используемых полей, заставляющее объекты перемещаться с ускорением в заданном направлении. Его действие можно ограничить определенным участком пространства. Newton (Ньютоновское). Поле, действие которого основано на принципе, что между любыми телами во Вселенной существуют силы притяжения, действие которых пропорционального массам тел. Radial (Радиальное). Это поле отличается от предыдущего только тем, что в расчет не принимаются массы тел. Можно сделать так, чтобы действие этого поля уменьшалось с увеличением расстояния до его источника, а также сделать его притягивающим или отталкивающим. Turbulence (Турбулентность). Поле, делающее движение объектов более хаотичным. Его часто используют при работе с упругими телами или системами частиц для создания эффектов ветра или волн. Uniform (Однородное). Поле, заставляющее объекты двигаться в определенном направлении с постоянной скоростью. Vortex (Водоворот). Под действием этого поля объекты начинают двигаться по спирали, центр которой находится в месте расположения источника поля. Часто используется при работе с системами частиц для создания галактик, водяных воронок или торнадо. Volume Axis (Объемный эффект). Поле, позволяющее создавать эффекты внутри некоторого объема, который может иметь форму куба, сферы, цилиндра, конуса или тора. Ограничители Одновременно с полями, определяющими движение объектов, можно создать ограничители, которые препятствуют этому движению. Но в отличие от полей, действие которых распространяется на любое количество объектов, ограничители могут воздействовать максимум на два объекта. Кроме того, они не имеют значков. В Maya существуют ограничители следующих типов: Nail (Гвоздь). Привязывает объект к определенной точке сцены. В итоге объект оказывается прикрепленным к точке привязки, но может вращаться вокруг нее в результате столкновений с другими объектами или под действием полей. Pin (Булавка). Этот ограничитель связывает вместе два объекта, создавая для них общую опорную точку. Hinge (Шарнир). В соответствии со своим именем этот ограничитель позволяет объекту свободно вращаться вокруг единственной оси. Можно связать активный объект с точкой в пространстве, с другим активным объектом или с пассивным объектом. Spring (Пружина). Подобно ограничителю Nail (Гвоздь) привязывает объект к определенной точке сцены, но при этом длина самого ограничителя может циклически изменяться. Как и в случае ограничителя Hinge (Шарнир), существует возможность связать активный объект с точкой в пространстве, с другим активным объектом или с пассивным объектом. Barrier (Барьер). Запрещает объектам перемещение за пределы определенной плоскости. Этот ограничитель можно назначить только одному объекту. При столкновении с барьером объекты могут менять направление своего движения, но никогда не отскакивают от него. Рекомендуется использовать для плоскостей, моделирующих стены и пол. Крэш-тест Как создать симуляцию крэш-теста, в которой автомобиль с водителем внутри разбивается о каменную стену? Мы смоделируем крэш-тест только на простейшем уровне. Тем не менее он будет достаточно впечатляющим, чтобы вызвать у вас сочувствие к водителю. 1. Создайте сцену: улицу, стену, машину, водителя. 2. Расположите стену вертикально, улицу горизонтально, поместите машину немного выше улицы и посадите водителя в машину: Рис. 1. Минимум затрат на моделирование: стена, улица, машина, пассажир Для крэш-теста вам не обязательно моделировать что-то очень красивое. Для создания машины достаточно будет использовать полигональный куб, разделенный на три секции вверху. Смаштабируйте машину так, чтобы ее длина составила примерно три клетки сетки. Теперь нам потребуется что-то вроде сиденья, куда можно поместить водителя. Для этого экструдируйте среднюю грань вниз для создания внутренней области машины. При моделировании водителя используйте NURBSцилиндр, немного масштабировав его в соответствующих местах (рис. 2). Рис. 2. Твердые тела не должны соприкасаться друг с другом в начале компьютерной модели. Поэтому водителя следует поместить немного над дном внутренней области машины, а машину немного выше улицы. На рисунке вы видите изображение в каркасном виде в окне Side View 3. Выделите стену и улицу и преобразуйте их в пассивные твердые тела. Для этого нужно нажать F4 и выполнить команду меню Soft/Rigid Bodies / Create Passive Rigid Body (Мягкие/Твердые Тела / Создать Пассивное Твердое Тело). Пассивное в данном контексте означает, что эти объекты будут вести себя так, будто у них твердая оболочка, которой они могут воздействовать на другие объекты, но сами не будут реагировать на воздействия других объектов. 4. Выделите водителя и машину и назначьте им обоим одно и то же поле гравитации. Выберите Fields / Gravity (Поля / Гравитация). При воспроизведении анимации машина занимает свое место на улице, а водитель прямо сидит внутри машины. Это все, что гравитация дает нам на данном этапе, однако это всего лишь начало симуляции. Убедитесь, что MAYA просчитывает каждый кадр симуляции, вместо того чтобы воспроизводить анимацию в реальном времени, пропуская некоторые кадры. Проверьте опцию Play every Frame (Воспроизводить каждый Кадр) в окне Timeline Preferences (Настройки временной шкалы). Для того чтобы сделать симуляцию более захватывающей, мы добавим водителю и машине начальную скорость. В реальности это была бы скорость, с которой машина и водитель двигались бы в направлении стены. Она должна быть одинаковой для машины и водителя. Это значение вы можете ввести для обоих объектов сразу в окне Channel Box (Окно Каналов). 1. Выделите водителя и автомобиль. 2. В зависимости от направления движения автомобиля задайте для параметров Initial Velocity X или Z (Начальная Скорость по оси X или Z) в окне Channel Box (Окно Каналов) положительное или отрицательное значение 10. Скажем, длина вашей машины три ячейки сетки. Мы будем считать, что ее длина в реальной жизни 3 метра. Ее Initial Velocity (Начальная Скорость), равная 10, будет соответствовать скорости 10 м/с, или 36 км/ч. При повторном воспроизведении компьютерной модели оба объекта потеряют немного скорости из-за трения с землей, но в целом они несутся со скоростью 10 единиц в секунду к стене и отскакивают от нее. Для того чтобы увидеть эту аварию на низкой скорости в реальном времени, вам придется использовать Playblast (Проигрыватель). 3. Выделите машину и водителя. Увеличьте значение их Initial Velocity (Начальная Скорость) до скорости скоростного шоссе (30 ячеек сетки в секунду). На этой скорости авария выглядит гораздо драматичнее. Для того чтобы добавить реалистичности в нашу симуляцию, давайте отредактируем значение параметра Mass (Масса) ее участников. Как и скорость, масса является атрибутом для Rigid Body (Твердое Тело). 4. Увеличьте значение параметра Mass (Масса) для машины с 1 до 15 Рис. 4. Самые важные параметры теста: Initial Velocity (Начальная Скорость) и Mass (Масса) Это округленно соответствует отношению веса реальной машины к весу среднестатистического водителя. Теперь, посмотрев крэш-тест, вы без труда сможете представить, что бы произошло с водителем, если бы все это случилось в реальности.