Skip to content
Narrow screen resolution Wide screen resolution Increase font size Decrease font size Default font size default color green color orange color
Главная arrow Книги arrow Иллюстрированный самоучитель по Maya для начинающих
Иллюстрированный самоучитель по Maya для начинающих Печать E-mail
14.12.2007 г.
Оглавление
Иллюстрированный самоучитель по Maya для начинающих
Предисловие
Введение
Анимация
Моделирование
Динамика
Рендеринг

Крэш-тест

Как создать симуляцию крэш-теста, в которой автомобиль с водителем внутри разбивается о каменную стену?

Тема:

Динамика.

Используемые техники и инструменты:

Active Rigid Body (Активное Твердое Тедо), Passive Rigid Body (Пассивное Твердое Тело), Gravity (Гравитация).

Настоящие крэш-тесты очень дороги, поскольку в них разбиваются настоящие машины. Моделирование аварий также весьма дорого, но уже по другой причине. В отличие от реальных тестов компьютерную модель можно повторять бесконечное количество раз однако, они требуют очень мощных компьютерных ресурсов. Эти ресурсы необходимы, поскольку тесты имеют дело с еле заметными, крошечными изменениями материалов. Они не только тестируют типы материалов, из которых сделана машина, но также и качество их плавки и соединения. Эластичность - это определяющий фактор для таких тестов. Однако важна и специфичная точка , в которой каждая часть машины теряет эту эластичность и ломается. Когда она ломается, как она ломается? Что случается со сломанными частями, как они воздействуют на окружающие предметы? Начинают ли они цепную реакцию?

Мы не можем ответить на эти вопросы с помощью MAYA. Мы можем скопировать динамические отношения, но область строения материалов нам не доступна. Мы смоделируем крэш-тест только на простейшем уровне. Тем не менее он будет достаточно впечатляющим, чтобы вызвать у вас сочувствие к водителю.

  1. Создайте сцену: улицу, стену, машину, водителя.
  2. Расположите стену вертикально, улицу горизонтально, поместите машину немного выше улицы и посадите водителя в машину (рис. 16.1).
16.1.gif

Рис. 16.1. Минимум затрат на моделирование: стена, улица, машина, пассажир

Для крэш-теста вам не обязательно моделировать что-то очень красивое. Для создания машины достаточно будет использовать полигональный куб, разделенный на три секции вверху. Смаштабируйте машину так, чтобы ее длина составила примерно три клетки сетки. Теперь нам потребуется что-то вроде сиденья, куда можно поместить водителя. Для этого экструдируйте среднюю грань вниз для создания внутренней области машины. При моделировании водителя используйте NURBS-цилиндр, немного масштабировав его в соответствующих местах (рис. 16.2).

16.2.gif

Рис. 16.2. Твердые тела не должны соприкасаться друг с другом в начале компьютерной модели. Поэтому водителя следует поместить немного над дном внутренней области машины, а машину немного выше улицы. На рисунке вы видите изображение в каркасном виде в окне Side View

  1. Выделите стену и улицу и преобразуйте их в пассивные твердые тела. Для этого нужно нажать F4 и выполнить команду меню Soft/Rigid Bodies / Create Passive Rigid Body (Мягкие/Твердые Тела / Создать Пассивное Твердое Тело). Пассивное в данном контексте означает, что эти объекты будут вести себя так, будто у них твердая оболочка, которой они могут воздействовать на другие объекты, но сами не будут реагировать на воздействия других объектов. Это отражает реальность - стены и улицы совершенно не беспокоят сумасшедшие автомобили.
  2. Выделите водителя и машину и назначьте им обоим одно и то же поле гравитации. Выберите 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 км/ч (около 22 миль/ч). При повторном воспроизведении компьютерной модели оба объекта потеряют немного скорости из-за трения с землей, но в целом они несутся со скоростью 10 единиц в секунду к стене и отскакивают от нее (см. рис. 16.3). Для того чтобы увидеть эту аварию на низкой скорости в реальном времени, вам придется использовать Playblast (Проигрыватель).
  3. Выделите машину и водителя. Увеличьте значение их Initial Velocity (Начальная Скорость) до скорости скоростного шоссе (30 ячеек сетки в секунду). На этой скорости авария выглядит гораздо драматичнее. Для того чтобы добавить реалистичности в нашу симуляцию, давайте отредактируем значение параметра Mass (Масса) ее участников. Как и скорость, масса является атрибутом для Rigid Body (Твердое Тело).
  4. Увеличьте значение параметра Mass (Масса) для машины с 1 до 15 (см. рис. 16.4).
16.3.gif

Рис. 16.3. Крэш-тест на скорости 36 км/ч (22 мили/ч). Здесь показаны несколько кадров сразу после столкновения автомобиля со стеной. Его отбрасывает в сторону. Через полсекунды после аварии водитель, переворачиваясь в воздухе, падает вниз

16.4.gif

Рис. 16.4. Самые важные параметры теста: Initial Velocity (Начальная Скорость) и Mass (Масса)

Это округленно соответствует отношению веса реальной машины к весу среднестатистического водителя. Теперь, посмотрев крэш-тест (рис. 16.5 и 16.6), вы без труда сможете представить, что бы произошло с водителем, если бы все это случилось в реальности. Если вы собираетесь продолжить работать с подобного рода симуляциями, то вам следует поближе познакомиться с Динамикой Мягких Тел (Soft Body Dynamics), Пружинами (Springs) и, наконец, точной настройкой весов целевых объектов (Soft Body Goal) для разных частей «мягкого» тела.

16.5.gif

Рис. 16.5. Крэш-тест стал более захватывающим со значением скорости 66 миль/ч и использованием более реалистичных значений параметра Mass (Масса). Водитель вылетает из машины по широкой дуге и переворачивается в воздухе несколько раз за доли секунды

16.6.gif

Рис. 16.6. Десятая доля секунды после аварии (изображение отрендерено с помощью Motion Blur (Размытость при Движении)

А теперь кое-что новенькое. Никогда не пробовали в многослойном шейдере накладывать абсолютно прозрачный шершавый Phong на ярко-красный Blinn?

Извержение вулкана

Как создать кратер вулкана, выбрасывающий огонь в темную ночь?

Тема:

Динамика, Рендеринг.

Используемые техники и инструменты:

Particles (Частицы), Emit from Surface (Испускать с Поверхности), Turbulence (Турбулентность), Gravity (Гравитация), Fire (Огонь).

Взрывы, извержения и пламя - эти эффекты часто встречаются в кинофильмах. Они обычно отдельно создаются пиротехниками, а потом совмещаются с реальным местом действия. Мы можем моделировать многие из этих спецэффектов в MAYA - от фейерверков до ураганов, - используя частицы, которые подчиняются динамическим законам, и, для того чтобы выглядеть реалистично, от аниматора требуется большой опыт как для задания их физического поведения, так и для текстурирования.

В этом уроке мы затронем основы анимации частиц: создание источника, анимация интенсивности эмиссии, влияние на поведение частиц турбулентности и гравитации. Текстурирование частиц - это отдельное искусство, которое выходит далеко за рамки этого урока. Однако, применяя встроенный в MAYA эффект Fire (Огонь), мы можем получить отличные результаты.

  1. Создайте конус вулкана, либо переместив вниз верхушку NURBS - конуса, либо применив команду Revolve (Вращать) к соответствующей профильной кривой (рис. 17.1).
17.1.gif

Рис. 17.1. Способ моделирования конуса вулкана командой Revolve (Вращать), примененной к профильной кривой

  1. Наложите на вулкан ramp-текстуру, которая начинается с зеленого цвета (окружающий ландшафт), затем становится коричневой (внешняя часть вулкана), а затем и красной (кратер внутри вулкана), как показано на рис. 17.2.
17.2.gif

Рис. 17.2. Ramp-текстура придает цвет вулкану

  1. Нажмите F3, выберите Surfaces / Planar (Поверхности / Планарные) для построения планарной поверхности по одной из изопараметрических кривых внутри кратера.

Эта небольшая поверхность внутри кратера и будет источником частиц. Ее построение невозможно, если изопарма, по которой строится эта поверхность, сама не будет планарна. Благодаря истории построения, планарная поверхность перестроится, если вы измените форму вулкана. Вам не обязательно видеть построенную планарную поверхность), поэтому можете сделать ее невидимой (клавиши Ctrl+H).

  1. Переключитесь в раздел динамики (клавиша F4).
  2. Выделив планарную поверхность, выберите Particles / Emit from Object (Частицы / Испускать с Поверхности Объекта) (см. рис. 17.3).

Так поверхность превратится в источник частиц, в чем вы сможете убедиться, запустив симуляцию. Частицы выглядят серыми и испускаются источником во всех направлениях. Мы бы хотели, чтобы они вылетали только вверх.

17.3.gif

Рис. 17.3. Планерная поверхность становится источником частиц

  1. В окне Channel Box (Окно Каналов) найдите Emitter Type (Тип Источника) в секции emitterl (рис. 17.4). Поменяйте его значение с Omni (Равнонаправленный) на Surface (С поверхности).
17.4.gif

Рис. 17.4. Частицы не должны покидать источник, разлетаясь во всех направлениях. Мы хотим чтобы они двигались вверх по нормали к поверхности

При воспроизведении анимации вы увидите, что частицы движутся вверх по нормали к поверхности. Если ваши частицы падают вниз, измените направление нормалей поверхности. Нажмите F3, выберите Edit NURBS / Reverse Surface Direction (Редактирование NURBS / Изменить Ориентацию Поверхности). Этот шаг необходим, если, к примеру, у вас есть большая сфера, которая должна испускать частицы внутрь. Нормали поверхности стандартной сферы направлены наружу.

Прямо сейчас равные области поверхности испускают примерно равное количество частиц.Чтобы перемешать их, необходимо подействовать на них каким-то полем, поэтому подвергнем их действию турбулентности.

  1. Воспроизведите несколько кадров анимации до тех пор, пока не появятся частицы. Выделите их. Создайте для них турбулентное поле. Выберите Fields / Turbulence (Поля / Турбулентность).
  2. Поле все еще выделено. Переместите его центр вверх, над вершиной вулкана (рис. 17.5). Поток частиц должен ощутить турбулентность через несколько кадров после своего появления и развития.
17.5.gif

Рис. 17.5. Турбулентное поле начинает перемешивать частицы в момент их появления из кратера

  1. В окне Channel Box (Окно Каналов) настройте силу поля. Попробуйте значение параметра Magnitude (Величина) 1 или даже меньше. Поле должно лишь слегка перемешивать частицы, не влияя на основное направление их движения.

Теперь частицы движутся беспорядочно, однако они летят прямо вверх. Поэтому далее добавим им немного тяготения. С самого начала поле гравитации будет тянуть их вниз с такой силой, что у них не останется ни малейшего шанса двигаться вверх. Теперь у нас есть две противоборствующие силы, как и в ракетной пусковой установке: сила гравитации против скорости эмиссии.

Этот шаг также подчеркивает разницу между источником и собственно частицами: задача источника - выстрелить частицы с определенной скоростью, определенной плотностью и в определенном направлении. Ему все равно, что случится с частицами после этого. Источник беспокоится только о том, чтобы отправить частицы в путешествие по миру сил.

  1. Выделите частицы и добавьте им гравитацию. Для этого выберите Fields / Gravity (Поля / Гравитация).
  2. Выделите источник (лучше это сделать в окне Outliner (Схема Сцены); его родительским объектом является планарная поверхность) и увеличьте значение для Emission Speed (Скорость Эмиссии).
  3. Создайте анимационный тест инструментом Playblast (Проигрыватель). Выберите Window / Playblast (Окно / Проигрыватель). Если у вас нет супермощного компьютера, вам придется воспользоваться инструментом Playblast, чтобы оценить качество симуляции в реальном времени.
  4. Уменьшайте силу поля гравитации и увеличивайте скорость эмиссии до тех пор, пока частицы не взлетят на приличную высоту над вулканом, перед тем как гравитация захватит их и потянет вниз. Попробуйте значения для Emission Speed (Скорость Эмиссии) - 20 (секция emitter 1-), а для Magnitude (Величина) - 5 (секция gravity 1-) (рис. 17.6).
17.6.gif

Рис. 17.6. Благодаря гравитации частицы не уносятся в бесконечность, а через некоторое время возвращаются на землю

Теперь перемешанный турбулентностью поток частиц вылетает вверх из вулкана и продолжает это движение, пока гравитация не потянет его прямо вниз. Было бы еще неплохо расширить поток частиц, чтобы они падали не прямо вниз, в жерло вулкана, но также и на землю, по обе его стороны, - как фонтан. Параметр, ответственный за такое падение, называется Tangent Speed (Скорость по Касательной), который является атрибутом источника, а не частиц.

  1. Выделите источник. Измените Tangent Speed (Скорость по Касательной) с О на какое-нибудь небольшое значение, к примеру 0,1 (рис. 17.7).
17.7.gif

Рис. 17.7. При немного увеличенной Tangent Speed (Скорость по Касательной) источник делает поток частиц шире

Когда ширина потока увеличена, огромное количество частиц падает на стороны вулкана и сквозь него. Если вы хотите, чтобы при столкновении с землей они исчезали, будто бы угасая, то вы должны связать их с поверхностью, используя команду меню Particles / Make Collide (Частицы / Задействовать Столкновение). Есть один изящный и естественный способ - не позволять слишком большому количеству частиц достигать поверхности и проваливаться сквозь нее. Сейчас наши частицы живут вечно. Но мы можем уменьшить время их жизни.

  1. Откройте Attribute Editor (Редактор Атрибутов) для particle 1. В секции Lifespan Attributes (Атрибуты Периода Существования) измените режим Lifespan Mode (Режим Периода Существования) с Live Forever (Вечно) на Random Range (Случайный Диапазон). Это активизирует поле входных данных (см. рис. 17.8).
17.8.gif

Рис. 17.8. Частицы исчезнут через четыре секунды, плюс -минус полсекунды

  1. Введите значение 4 для атрибута Lifespan и установите Lifespan Random (Границы случайного отклонения от среднего значения времени жизни) (стандартное отклонение от заданного значения Lifespan) на 0,5.

Теперь период существования каждой частицы перед исчезновением будет составлять случайно выбранное число от 3,5 до 4,5 с.

В природе извержения редко бывают равномерными. Они начинаются с нуля, когда ничего не происходит, затем в течение нескольких мгновений происходит высокий выброс большого количества частиц, а потом достигается равновесие потока на несколько меньшей высоте.

Ключевым параметром (и атрибутом источника) для достижения этого эффекта является Rate (Интенсивность) испускания.

  1. Выделите источник. На временной шкале идите в кадр (не слишком близко к началу анимации), где извержение достигает равновесия. Щелкните правой кнопкой мыши на параметр Rate (Интенсивность) и установите здесь ключевой кадр. Для этого выполните команду Key Selected (Сделать ключевыми выделенные атрибуты).
  2. Вернитесь в тот момент, когда извержение только начинается. Увеличьте значение параметра Rate (Интенсивность) для источника вдвое и установите еще один ключевой кадр.
  3. Вернитесь на 10 кадров назад (треть секунды). Уменьшите значение Rate (Интенсивность) до 0 и установите третий ключ (см. рис. 17.9).

Теперь вулкан ведет себя очень тихо, прежде чем начать внезапное извержение. Затем он немного замедляет извержение до уровня средней интенсивности. Используя Graph Editor (Редактор Анимационных Кривых), отрегулируйте этот процесс.

17.9.gif

Рис. 17.9. Анимация интенсивности извержения вулкана. В Graph Editor (Редактор Анимационных Кривых) вы можете внести необходимые для отладки анимации изменения

Если хотите, можете добавить и другие силы, влияющие на движение частиц, например ветер (Air (Ветер), либо увеличить турбулентность, или Drag (Трение), которое замедлит движение частиц, независимо от направления их движения. Но даже без всего этого анимация частиц в целом удовлетворяет нашим требованиям, и мы можем начать работу над внешним видом частиц.

Визуализировав сцену обычным способом, вы вообще не увидите частиц. Их можно увидеть лишь в результате специальной процедуры рендеринга через Hardware Render Buffer (Буфер Аппаратного Рендеринга) (меню Window / Rendering Editors (Окно / Редакторы рендеринга). Скорее всего, это будут точки, штрихи или сферы. После такого рендеринга вы сможете вставить их в сцену с вулканом, только используя композиционную программу, типа MAYA Fusion, Edit или After Effects. Нам же нужно желто-красное пламя с небольшой прозрачностью, поэтому мы должны воспользоваться процессом обычного программного рендеринга.

Откройте Attribute Editor (Редактор Атрибутов) для частиц (см. рис. 17.10). В секции Render Attributes (Атрибуты Рендеринга) измените Particle Render Type (Тип Визуализации Частиц) на Cloud (s/w), где s/w обозначает программный рендеринг. Cloud придает нашим частицам размытый, полупрозрачный вид. В результате рендеринга вы получите голубые облака. Голубой цвет обусловлен установленным по умолчанию шейдером для частиц, который вы найдете в Hypershader. Он называется particleCloudl. Если вы измените цвет particleCloudl с голубого на красный, то вулкан будет извергаться полупрозрачными красными облаками (см. рис. 17.11).

17.10.gif

Рис. 17.10. Лишь два нижних типа частиц в выпадающем меню Particle Render Type (Тип Визуализации Частиц) могут быть визуализированы обычным способом. Остальные требуют применения Hardware Render Buffer (Буфер Аппаратного Рендеринга). Тип Cloud (Облако) - это подходящий для вулкана тип визуализации частиц при рендеринге

17.11.gif

Рис. 17.11. ParticleCloud определяет вид облака частиц. Средняя секция визуализированного изображения слева показывает измененную с голубого на красный текстуру particleCloud

Однако это очень отдаленно напоминает огонь. Если вы поиграете с цветом, например примените к частицам ramp-текстуру, то увидите, что,'несмотря на то что реалистичную анимацию частиц очень просто создать, весьма сложно придать ей красивый вид. Могут понадобиться часы работы над particleCloud 1 в Hypershade, чтобы добиться не только внешнего вида пламени, но и его реалистичного поведения при анимации. В этом уроке мы упростим себе задачу и используем встроенный в MAYA эффект Fire (Огонь). Сначала мы создадим огонь и назначим его вид частицам вулкана. Эта процедура не только сэкономит время, но и позволит вам изучить шейдер огня, так что в дальнейшем вы сможете модифицировать его исходя из собственных нужд.

  1. Выделите пленарную поверхность, которая служит источником частиц.
  2. Зажгите ее. Нажмите F4, выберите Effects / Create Fire (Эффекты / Создать Огонь) (рис. 17.12).
17.12.gif

Рис. 17.12. Команда Create Fire (Создать Огонь) добавляет огненные частицы к уже имеющимся частицам вулкана  

При воспроизведении анимации вы увидите маленький огонь внутри вулкана, прежде чем начнется запрограммированное вами извержение. В окне modeling view (окно Моделирования) он зеленого цвета, в окне рендеринга огонь принимает вид настоящего пламени (рис. 17.13). В Hypershader рядом с particleCloud 1 вы увидите шейдер для огня partideCloud 2.

17.13.gif

Рис. 17.13. Перед извержением вулкана огонь уже горит в кратере. Слева - вид Perspecrive View (Вид Перспективы), справа - окно рендеринга

  1. Выделите частицы вулкана.
  2. Откройте Hypershader. Найдите particleCloud 2, шейдер огня. Щелкните правой кнопкой мыши и выберите команду Assign Material to Selection (Назначить Материал Выделенным Объектам) для применения его к частицам (рис. 17.14).
17.14.gif

Рис. 17.14. Мы назначаем цвет пламени первоначальным частицам

В виде Modeling View (Окно Моделирования) частицы становятся зелеными, как и частицы огня, и повторяют вашу анимацию, а не исходные параметры анимации огня. Вы все еще можете видеть небольшой огонь в кратере. Оставьте его там либо удалите секцию particleCloud 2. Изящным штрихом может быть небольшой огонь в кратере после угасания мощного извержения. Кратер в этом случае будет продолжать тлеть до конца анимации.

В результате рендеринга вы получите слишком тоненькое пламя для мощного извержения. Это признак того, что плотность выбрасываемых частиц очень низкая. Чтобы это исправить в окне Channel Box (Окно Каналов) или в Graph Editor (Редактор Анимационных Кривых), увеличьте значение Emission Rate (Интенсивность эмиссии) для emitter 1. He бойтесь ввести большое значение, к примеру 1000!

В зависимости от размеров кратера, который вы создали, огонь может быть либо чересчур маленьким, либо слишком большим. Чтобы получить требуемый размер, выделите частицы и масштабируйте их на свой вкус.

17.15.gif

Рис. 17.15. Четыре визуализированные фазы извержения

Если же вы работаете именно над видом огня, изучите его структуру в Hypershader. По умолчании огонь MAYA включает три рамп-текстуры, соответственно для цвета, прозрачности и свечения . Кроме того, 3D-Crater текстура служит в качестве Blob Map (Карта Капель). Наконец, есть несколько выражений для работы с некоторыми другими вещами, например определяющие параметры эффекта Glow (Свечение). Если вас заинтересовала динамика огня, добавьте дополнительные поля и поиграйте с ними, с атрибутами частиц и источника.

А теперь кое-что новенькое. Можете ли вы построить ухо по трем кривым?

Пусть они улягутся

Как разместить несколько объектов на волнистой поверхности, чтобы они «прилипли» к ней?

Тема:

Динамика.

Используемые техники и инструменты:

Sculpt Surface Tool (Создание рельефа на NURBS-поверхности), Rigid Body Dynamics (Динамика Твердого Тела), Gravity (Гравитация).

Очень мало поверхностей имеет по-настоящему плоскую форму. Даже полы в новом здании имеют неровности, особенно заметные по краям ковра. Размещение на их неровной поверхности каких-нибудь объектов в трехмерной графике всегда вызывает затруднения. Много времени уходит на операции перемещения и вращения объектов, пока они действительно красиво лягут на землю, а не зависнут над ней и не погрузятся внутрь. При использовании динамики твердого тела эта проблема решается мгновенно. И не потребуется ни единого перемещения!

Мы преобразуем объекты, которые хотим разместить на поверхности в твердые тела, и позволим им упасть под действием гравитации. Они лягут очень натурально, именно так, как нам это нужно.

  1. Создайте плоскость с достаточно плотной геометрией для осуществления на ней мелких деформаций (рис. 18.1).
18.1.gif

Рис. 18.1. Поверхность плотностью 20x20 патчей...

  1. Откройте окно настроек, выбрав Edit NURBS / Sculpt Surface Tool (Редактирование NURBS / Создание рельефа на NURBS-поверхности). Если ваша поверхность представляет собой полигональную плоскость, выберите Edit Polygons / Sculpt Polygons Tool (Редактирование Многоугольников / Создание рельефа на полигональной поверхности).
  2. Используя кисть модуля Artisan, деформируйте поверхность так, чтобы она стала волнистой (рис. 18.2).
18.2.gif

Рис. 18.2.  ...деформируем с помощью кисти модуля Artisan

  1. Создайте несколько NURBS-примитивов либо импортируйте объекты предыдущих проектов. Если вы попробуете разместить эти объекты на поверхности, то увидите, насколько сложно найти точку, в которой они не утопают в поверхности и не зависают над ней (рис. 18.3). Даже когда вы найдете эту точку, объект не лежит в ней естественно, он выглядит очень неуклюже, так, будто вот-вот соскользнет с поверхности. Для того чтобы исправить этот дефект, вам бы пришлось иметь дело с опорными точками и крошечными поворотами, которые занимают много времени.
18.3.gif

Рис. 18.3. Куб размещен вручную. Сложно найти точку, в которой он естественно лежал бы на поверхности. В данном случае он проникает в поверхность по крайней мере в двух точках

  1. Переместите объекты так, чтобы они лежали немного над поверхностью (рис. 18.4).
18.4.gif

Рис. 18.4. Стартовая позиция симуляции. Четыре объекта расположены над поверхностью и сейчас упадут на нее

  1. Преобразуйте плоскость в пассивное твердое тело. Нажмите F4, выберите Soft/Rigid Bodies / Create Passive Rigid Body (Мягкие/Твердые Тела / Создать Пассивное Твердое Тело) (рис. 18.5).
18.5.gif

Рис. 18.5. Земля заявлена как пассивное твердое тело и теперь может участвовать в симуляции

Как вы, наверное, помните из предыдущей главы о крэш-тесте, преобразование поверхности в пассивную означает, что она будет твердой для падающих объектов и не изменится при соприкосновении с ними.

  1. Выделите все объекты над землей и назначьте им гравитацию. Для этого выберите Fields / Gravity (Поля / Гравитация) (рис. 18.6).
18.6.gif

Рис. 18.6. Сила гравитации влияет на объекты. Они становятся активными твердыми телами и готовы к падению

Добавив гравитацию, мы убиваем сразу двух зайцев: она преобразует каждый объект в активное твердое тело и связывает их с полем тяготения, которое потянет их вниз со скоростью 9,8 м/с .

  1. Воспроизведите анимацию (рис. 18.7).
18.7.gif

Рис. 18.7. Три фазы падения четырех объектов на волнистую поверхность в соответствии с законами сэра Исаака Ньютона. Чем округлее объекты, тем дольше они катятся по поверхности до полной остановки

Для того чтобы MAYA точно воспроизвела симуляцию кадр за кадром, откройте Preferences (Установки) и измените Playback Speed (Скорость Воспроизведения) с Normal (Нормальная) на Play every Frame (Воспроизводить каждый кадр). Если какие-то из ваших объектов все еще проникают в поверхность, увеличьте разрешение плоскости (рис. 18.8). Значение для Tesselation Factor (Множитель Тесселяции) вы можете найти в Attribute Editor (Редакторе Атрибутов) для Rigid Body (Твердое Тело) (но не для поверхности) в секции Performance Attributes (Атрибуты выполнения).

18.8.gif

Рис. 18.8. Упавшие объекты не будут проникать в поверхность, если вы увеличите значение для Tesselation Factor (Множитель Тесселяции) [Тесселяция - разбиение. - Примеч. ред. ]

Если вам не нужно, чтобы объекты катились по поверхности перед окончательной остановкой, выполните несколько действий. Разместите объекты ближе к земле перед падением уменьшите значение параметра Bounciness (Упругость) (рис. 18.9), и объекты не будут подпрыгивать при соприкосновении с землей; либо вы можете увеличить их Static Friction (Сила трения покоя), чтобы они не скатывались с возвышенностей. Однако помните: чтобы вы ни делали, симуляция остается симуляцией. Другими словами, ничего предсказать нельзя.

18.9.gif

Рис. 18.9. При значении 0 параметра Bounciness (Упругость) объекты теряют упругость

  1. Симуляция определит конечное расположение объектов - при ее воспроизведении объекты найдут свои конечные положения и замрут в них (рис. 18.10).
18.10.gif

Рис. 18.10. Все объекты естественно расположены на поверхности

  1. Остановите симуляцию и прекратите существование объектов как твердых тел. Для этого выберите Edit / Delete by Type / Rigid Bodies (Редактирование / Удалить в зависимости от Типа / Твердые Тела). Эта команда удаляет все твердые тела, вам даже не нужно их выделять.

Используя такой подход, вы можете не только расположить несколько предметов один рядом с другим на поверхности, но и позволить им падать друг на друга, складываясь в пирамиду. рис. 18.11 демонстрирует размещение 2001 полигонального куба на плоской поверхности. Симуляция, использованная для этого, в действительности состоит из нескольких симуляций с сотней или около того кубов в каждой. Большую симуляцию из 2001 кубов не выдержал бы никакой центральный процессор персонального компьютера. Кроме того, более мелкие симуляции позволяют вам эффективнее контролировать область размещения - большая она или маленькая, размещение объектов контролируется динамическими законами. Размещение кубов один на другой либо один около другого вручную заняло бы у вас целый день.

 

18.11.gif

 

Рис. 18.11. Хаос из 2001 куба после нескольких динамических симуляций (из анимации для детского телевидения Германии)

А теперь кое-что новенькое. Приходилось ли вам вызывать и убирать окно Outliner (Схема Сцены) всего лишь двумя щелчками мышки (используя значок в верхней правой части экрана)? [В правой верхней части экрана нет иконки для Outliner. - Примеч. ред. ]

Атака частиц

Как создать спиральную туманность, атакующую мою камеру (а затем исчезающую в космосе)?

Тема:

Динамика.

Используемые техники и инструменты:

Emitter (Источник), Expressions (Выражения), Particle Goal (Цель Частиц), Goal Weighting (Целевой Вес), Particle Cloud (Тип Частиц Облако).

Движение частиц определяется силовыми полями, такими, как, например, гравитация и турбулентность. Именно в этом сочетании они чаще всего используются. Частицы также направляются целями - ими может быть что угодно, от сферы до кривой со свойствами мягкого тела или камеры. В этом уроке мы используем Particle Goal (Цель Частиц), для того чтобы приманить вихревой поток облаков к нашей камере. Мы немного драматизируем сцену: спиральная туманность медленно найдет нашу камеру, устремится к ней, закружится вокруг и, наконец, исчезнет.

  1. Создайте пушку для частиц. Нажмите F5, выберите Particles / Create Emitter (Частицы / Создать Источник) (рис. 19.1).
19.1.gif

Рис. 19.1. Частицы, испускаемые из начала координат во всех направлениях

  1. В окне Timeline Preferences (Настройки временной шкалы) установите Playback Speed (Скорость Воспроизведения) на значение Play every Frame (Воспроизводить Каждый Кадр).
  2. Запустите симуляцию.

Параметр Play every Frame (Воспроизводить Каждый Кадр) очень важен: мы не хотим пропусков в шагах симуляции при работе модуля динамики MAYA.

Затем мы создадим локатор, движущийся вокруг камеры при ее движении. Локаторы - это объекты, которые не визуализируются, как вы, наверное, помните из главы 8.

  1. Идите в начало анимации к сцене без частиц.
  2. Создайте новую камеру и локатор.
  3. Разместите локатор над камерой.
  4. В режиме Insert mode (Режим редактирования опорной точки) передвиньте опорную точку локатора к центру камеры, который совпадает с началом координат сцены (рис. 19.2).
19.2.gif

Рис. 19.2. Передвиньте опорную точку локатора к центру камеры. Вы можете привязать его к сетке в центре координат сцены

Переместив таким образом опорную точку, вы сможете вращать локатор вокруг камеры. Вы можете воспользоваться ключевыми кадрами для вращения, но более изящный способ - написать простое выражение.

  1. В окне Channel Box (Окно Каналов) нажмите на Rotate Z (Вращение по оси Z). Используя контекстное меню правой кнопки мышки, откройте Expression Editor (Редактор Выражений).
  2. Используя среднюю кнопку мышки, скопируйте строку locatorl .rotateZ из поля Selected Obj and Attr и вставьте ее в пустое поле снизу.
  3. Завершите выражение вводом = frame (см. рис. 19.3).
  4. Активизируйте выражение, нажав Create (Создать).
  5. Сверните окно Expression Editor (Редактор Выражений) и воспроизведите анимацию.
19.3.gif

Рис. 19.3. Зависимое от времени уравнение заставит локатор медленно кружить вокруг начала координат сцены

Вот что должно произойти: источник разбрасывает частицы во всех направлениях, а локатор медленно вращается вокруг камеры. Давайте заставим его вращаться быстрее.

  1. Откройте снова окно Expression Editor (Редактор Выражений) и отредактируйте существующее выражение, умножив переменную frame на 10. Нажмите Edit (Редактирование) для сохранения изменений.

Выражение locatorl .rotateZ =10*frame увеличивает скорость вращения в 10 раз. Если вы теперь передвинете камеру, локатор будет продолжать вращаться вокруг начала координат сцены, а не вокруг центра камеры. Мы должны сделать его дочерним объектом по отношению к камере.

  1. Выделите локатор, затем камеру и нажмите клавишу Р.

Последний шаг заставляет локатор следовать за камерой, куда бы она ни двигалась и ни поворачивалась. Попробуйте теперь подвигать камеру. Теперь мы будем привлекать частицы, но не к камере, а к локатору.

  1. Выделите частицы, вслед за ними - локатор.
  2. Привлеките частицы к локатору. Для этого выберите Particles / Goal (Частицы / Цель) (см. рис. 19.4).
  3. Просмотрите анимацию в окне Perspective View (Вид Перспективы) и в окне Camera View (Вид сквозь Камеру).

Через камеру кажется, что поток частиц атакует нас, а затем кружит вокруг. Окно Perspective View (Вид Перспективы) показывает, что на самом деле частицы залетают далеко за камеру. Причиной такого перелета являются весовые коэффициенты частиц по отношению к их цели. Сейчас это все имеет среднюю величину, но мы это исправим.

19.4.gif

Рис. 19.4. Локатор будет служить целью для частиц

  1. Выделите частицы (не источник) и в окне Channel Box (Окно Каналов) найдите атрибут Goal Weight [0] (Целевой Вес [0]).
  2. Идите в кадр 100 анимации.
  3. Уменьшите значение атрибута Goal Weight [0] (Целевой Вес [0]) до 0 (рис. 19.5).
19.5.gif

Рис. 19.5. Атрибуты частиц в окне Channel Box (Окно Каналов). Атрибут Goal Weight [0] (Целевой Вес [0]) определяет, насколько точно частицы следуют по пути движения мишени

  1. Используя контекстное меню, установите ключевой кадр для этого значения.
  2. Идите в кадр 300.
  3. Увеличьте значение Goal Weight [0] (Целевой Вес [0]) до 0,2 и установите еще один ключ.

Теперь частицы разбрызгиваются во всех направлениях на протяжении 100 кадров, затем они устремляются к локатору и кружат вокруг камеры (рис. 19.6 - 19.10). Теперь сквозь объектив камеры анимация выглядит гораздо более драматично.

19.6.gif

Рис. 19.6. Частицы вылетают из источника во всех направлениях...

19.7.gif

Рис. 19.7. ...пока их не привлечет камера...

19.8.gif

Рис. 19.8. ...они в форме ядра устремляются к локатору, который непрерывно вращается вокруг камеры...

19.9.gif

Рис. 19.9. ... они ослепляют камеру...

19.10.gif

Рис. 19.10. ...а затем залетают за свою мишень и возвращаются

  1. Создайте анимацию движения камеры между кадрами 50 и 400.
  2. Просмотрите анимацию через камеру.

Чтобы еще более драматизировать анимацию, в окне Graph Editor (Редактор Анимационных Кривых) задайте касательным анимационной кривой атрибута Goal Weight [0] (Целевой Вес [0]) тип flat (горизонтальные). Теперь смена направления движения будет мягче начинаться и заканчиваться. Если значение атрибута Goal Weight [0] (Целевой Вес [0]) ниже 0,1, его действие незаметно, поэтому, может быть, вам стоит установить еще один ключевой кадр для более быстрого перехода с 0 до установленного значения. Вы можете вставить ключ в окне Graph Editor (Редактор Анимационных Кривых).

Теперь переключим наше внимание на внешний вид частиц, с тем чтобы они визуализировались не как точки.

  1. В Окне Attribute Editor (Редактор Атрибутов) для частиц откройте секцию Render Attributes (Атрибуты Рендеринга).
  2. Измените Particle Render Type (Тип Рендеринга Частиц) с Points (Точка) на Cloud (s\w) (Облако) (рис. 19.11).
19.11.gif

Рис. 19.11. Тип частиц изменен с Points (Точка) на Cloud (s\w) (Облако)

  1. Визуализируйте вид сквозь камеру (рис. 19.12).
19.12.gif

Рис. 19.12. Вид спиральной туманности, состоящей из облака сфер, сквозь объектив камеры

Если в результате рендеринга вы видите просто голубой экран, скорее всего, у вас слишком много частиц большого размера, которые расположены слишком близко к камере. Частицы нельзя масштабировать по отдельности, вам придется работать с ними как с одним целым. И прежде чем вы начнете этим заниматься, попробуйте увеличить их прозрачность. Созданный шейдер particleCloud имеет по умолчанию значение прозрачности 0,5 (см. в главе 17 о шейдинге облака частиц при извержении вулкана).

  1. Щелкните правой кнопкой мыши по частицам и выберите Materials / Material Attributes (Материалы / Атрибуты Материала). Так вы откроете Attribute Editor (Редактор Атрибутов) для шейдера частиц.
  2. В окне Attribute Editor (Редактор Атрибутов) нажмите на вкладку particleCloud 1 (рис. 19.13).
  3. Поменяйте его цвет и прозрачность.
19.13.gif

Рис. 19.13. Используя контекстное меню, откройте Attribute Editor (Редактор Атрибутов) для шейдера particleCloud. Поменяйте его цвет с голубого на желтый и увеличьте прозрачность. Теперь объект в центре сцены становится видимым сквозь густую желтую спиральную туманность

  1. Создайте объект-ссылку (только для расположения текстуры) в центре координат сцены.
  2. Визуализируйте вид сквозь камеру.

Вы также можете наложить текстуру на цвет, прозрачность и другие атрибуты материала с помощью ramp-текстур. Incadescence (Самосветимость) - это важный атрибут шейдинга частиц. Он заставляет их светиться. Как только вас устроит вид частиц, вы можете отрегулировать движение облака частиц. Как насчет небольшой (анимированной) турбулентности?

Давайте добавим немного нерешительности поведению частиц. Пусть они потеряют интерес к камере, привлеченные другой целью.

  1. Создайте второй локатор, который будет служить конечной целью для частиц.
  2. Поместите локатор в точку, которую будет видно из камеры в конце анимации, но достаточно далеко от нее.
  3. Выделите частицы, затем новый локатор и создайте вторую цель. Выберите Particles / Goal (Частицы / Цель).

Две цели для одной группы частиц звучит противоречиво. Однако это как раз то, что делает цели гибкими. Мы можем задать силу влияния каждой цели, изменяя ее вес, и таким образом анимировать путь движения частиц просто и эффективно.

Сейчас частицы больше не приближаются к камере. Основной параметр, который изменил их поведение, - это вес новой цели, который вы можете увидеть в окне Channel Box (Окно Каналов): Goal Weight [1] (Целевой Вес [1]). Этот атрибут определяет, насколько точно частицы следуют за новым локатором. Поскольку сейчас это значение установлено на 0,5, частицы, находясь под его влиянием, уносятся от камеры к средней точке между первым и вторым локатором.

  1. Идите в кадр 400.
  2. Выделите частицы.
  3. Установите Goal Weight [1] (Целевой Вес [1]) второго локатора на 0 и установите здесь ключевой кадр.
  4. Идите в кадр 500.
  5. Задайте еще один ключ для Goal Weight [1] (Целевой Вес [1]) со значением 0,5.

Теперь через 10 с частицы теряют интерес к камере и устремляются ко второму локатору - невидимой далекой цели. Наш полет может спокойно продолжаться.

А теперь кое-что новенькое. Приходилось ли вам искать Instant Maya через клавишу F1?

Толкаем вверх, тянем вниз

Как анимировать два связанных между собой объекта, один из которых должен двигаться вверх, а другой при этом падать?

Тема:

Динамика.

Используемые техники и инструменты:

Dynamic Constraints (Динамические Ограничения), Gravity (Гравитация), Fire (Огонь), Particle Cloud (Облако Частиц), Expressions if...Else (Условные Выражения).

Мы чувствуем себя легче в воде не из-за уменьшения силы тяготения, а потому, что существует противоположная сила, которая выталкивает нас вверх. Эта плавучесть в действительности обусловливается массой тела и плотностью и объемом вытесненной нашим телом жидкости. Все это может быть симулировано в трехмерной анимации, просто путем использования поля гравитации, работающего в противоположном направлении. Механически соединив два объекта с конфликтующими силовыми полями (одно толкает вверх, другое тянет вниз), мы получим в результате движение настолько сложное, что эту сложность невозможно получить с помощью обычной анимации по ключевым кадрам. В этом уроке мы создадим такую ситуацию и немного насладимся нашей работой, глядя на конфликт полей. Затем подожжем оба объекта, заставим первый объект гореть голубым пламенем, а второй погаснуть, когда он опустится ниже линии горизонта в воду.

  1. Создайте два объекта: тор и конус.
  2. Расположите их рядом друг с другом.
  3. Выделите оба объекта и откройте окно настроек. Нажмите F4, выберите Soft/Rigid Bodies / Create Constraint Option box (Мягкие/Твердые Тела / Создать принудительное согласование Окно Настроек) (рис. 20.1).
  4. В выпадающем меню выберите Pin (Булавка) в качестве Constraint Type (Тип принудительного согласования) и выполните команду.
20.1.gif

Рис. 20.1. Принудительное согласование объединит тор и конус

  1. Переместите немного Pin Constraint (Принудительное согласование Булавка) вверх и в сторону (рис. 20.2). Это добавит движению дополнительный поворот, когда начнется симуляция.
20.2.gif

Рис. 20.2. Перед началом симуляции переместите Pin Constraint (Принудительное согласование Булавка) немного вверх и в сторону

Принудительное согласование типа Nail (Гвоздь), кстати, не является альтернативой для Pin Constraint (Принудительное согласование Булавка). Nail (Гвоздь) работает только с одним объектом, как гвоздь в рамке для картины, мы же скрепляем два объекта [Имеется в виду, что Nail Constraint позволяет прикрепить объект к какой-то точке в пространстве, «прибить гвоздем», Pin Constraint позволяет скрепить два объекта друг с другом - Примеч. ред. ]. При воспроизведении анимации на этом этапе вы ничего не увидите, поскольку ни на тор, ни на конус не воздействуют никакие силы.

  1. Выделите тор и добавьте к нему гравитацию. Для этого выберите Fields / Gravity (Поля / Гравитация).

При воспроизведении анимации вы увидите, как тор стремительно уносится вниз, увлекая за собой конус, на который не действует ни одно силовое поле (рис. 20.3).

  1. Выделите конус и тоже добавьте к нему гравитацию.
20.3.gif

Рис. 20.3. Тор падает под влиянием гравитации и тянет за собой в бесконечность конус, на который не действуют никакие поля

  1. В окне Channel Box (Окно Каналов) измените значение атрибута Magnitude (Величина) нового поля тяготения с 9,8 на-9,8 (см. рис. 20.4).
20.4.gif

Рис. 20.4. Второе, развернутое в противоположном направлении поле тяготения поднимает конус вверх

Теперь тор продолжает тянуть оба объекта вниз, а конус старается поднять их вверх - в результате мы получаем сложное движение пары (рис. 20.5). Если вы хоть немного усилите одно из полей тяготения, движение потеряет равновесие, и объекты моментально исчезнут из вида, увлекаемые большим силовым полем.

20.5.gif

Рис. 20.5. Конус летит вверх, тор вниз. Объединенные с помощью Pin Constraint (Принудительное согласование Булавка), они вынуждены держаться на одном уровне, создавая, таким образом, сложное, но сбалансированное движение

  1. Выделите тор и зажгите его. Для этого выберите Effects /.Create Fire (Эффекты / Создать Огонь).
  2. Выделите конус и тоже зажгите его.
  3. В окне Channel Box (Окно Каналов) измените значение атрибута Fire Direction Y (Направление Огня по оси Y) для конуса с 1 на -1.

Анимация остается прежней, однако мы придали ей особенный шарм (рис. 20.6). Пламя на конусе и торе - в окнах modeling view (окно Моделирования) оно представлено в виде широко разбрасываемых зеленых сфер - горит сверху и снизу объектов, легко следуя их движению, как хвост кометы.

20.6.gif

Рис. 20.6. Мы подожгли объекты. При движении огонь создает пылающий хвост

  1. В окне Hypershader найдите материал пламени конуса. Его имя particleCloud3.

Номер 3 в имени рarticleCloud3, кстати, обусловлен тем, что в каждой новой сцене Мауа создается шейдер Облака Частиц и он, по умолчанию, имеет имя particleCloudl. В действительности же это второе созданное нами облако частиц [Когда мы применяем эффект огонь, мы, помимо всего прочего, создаем систему частиц типа particle cloud и создаем для нее новый экземпляр шейдера. Поскольку один шейдер (с номером 1) создается автоматически при создании новой сцены, то новые шейдеры (а мы дважды применили эффект огонь и, следовательно, создали два шейдера) будут иметь порядковые номера 2 и 3. - Примеч. ред. ].

  1. В окне Attribute Editor (Редактор Атрибутов) для particleCloud 3 найдите атрибуты Color (Цвет) и Incandescence (Самосветимость). К обоим атрибутам присоединены ramp-текстуры. Измените красные цвета текстуры на голубые (рис. 20.7).
20.7.gif

Рис. 20.7. Изменяем цвет пылающего хвоста конуса с оранжевого на голубой

Теперь конус сопровождается красивым хвостом из голубого огня (см. рис. 20.8).

Наконец, введя три строки программного кода, мы добавим еще один штрих, погашая пламя тора, когда он опускается ниже линии горизонта. Для того чтобы адекватно записать уравнение, вам нужно знать точное имя объекта. Его вы увидите, щелкнув по объекту мышкой, а также в окне Channel Box (Окно Каналов): nurbsTorml.

  1. Выделите огонь тора и откройте для него Attribute Editor (Редактор Атрибутов) (см. рис. 20.9). Щелкните мышкой по вкладке emitterl и найдите поле Rate (Particle/Sec).

Этот атрибут определяет, сколько частиц пламени вылетит из конуса в единицу времени. Значение атрибута по умолчанию запрограммировано в эффекте огня.

20.8.gif

Рис. 20.8. Отрендеренное изображение в кадре 100

20.9.gif

Рис. 20.9. Emission Rate (Интенсивность Испускания) огня - это атрибут источника частиц

  1. Щелкните правой кнопкой мыши по атрибуту Emission Rate (Интенсивность Испускания), для того чтобы открыть Expression Editor (Редактор Выражений).

Здесь вы увидите несколько строк программы, которые определяют динамику выброса огня. Мы не будем менять эти сложные выражения, а просто кое-что добавим в самом их начале. Наше добавление изменит интенсивность испускания огня до нуля, когда тор погрузится ниже линии горизонта (когда значение его атрибута Translate Y (Значение перемещения по оси Y) будет меньше нуля).

Для записи новых строчек вам нужно знать полные имена для значений перемещения по оси Y и интенсивности испускания. Значение перемещения по оси Y объекта nurbsTorusl - nurbsTorusl.translateY. Полное имя для интенсивности испускания вы можете найти в первой строке уже существующего выражения; это emitter!.rate.

  1. Добавьте следующие три строки перед уже существующими выражениями (рис. 20.10). Не забудьте о точке с запятой:

if (nurbsTorusl.translateY < 0)

emitterl.rate = 0;

else.

20.10.gif

Рис. 20.10. Три новые строки программного кода в окне Expression Editor (Редактор Выражений) погасят пламя тора, когда тот опустится ниже линии горизонта. Когда он снова поднимется, введенные строки уже не будут к нему применяться, и пламя зажжется снова

  1. С этого места выражение продолжится исходным кодом. Введите изменения, нажав кнопку Edit (Редактирование).

В примерном переводе эти строки означают для MAYA следующее: «Если значение атрибута Translate Y (значение перемещения по оси Y) меньше нуля, убавьте интенсивность испускания до нуля; в противном случае делайте то, что вы обычно делаете».

Теперь, при воспроизведении анимации, хвост пламени оторвется от тора, как только тор опускается слишком низко, и появится снова, как только тор поднимается над горизонтом (рис. 20.11).

20.11.gif

Рис. 20.11. Пылающий хвост отрывается от тора, как только тор опускается слишком низко. Слева - изображение, полученное в результате рендеринга с помощью полупрозрачной Checkerboard (Шахматная доска), служащей поверхностью горизонта

А теперь кое-что новенькое. Приходилось ли вам выделять камеру, используя меню View (Вид)?

Пончо

Как сшить шелковое пончо и набросить его на туловище?

Тема:

Ткани, Динамика.

Используемые техники и инструменты:

Maya Cloth (Maya ткани).

До появления Maya Cloth нужно было либо прилагать колоссальные усилия, чтобы одежда трехмерных персонажей выглядела более или менее натурально, либо заключать их в жесткую оболочку, как панцирь насекомых, либо надевать на них амуницию, подобно Ларе Крофт. Теперь же юбки, брюки и рубашки для аниматора не проблема. Пончо - это всего лишь кусок ткани с отверстием для головы - никаких рукавов, никаких пуговиц. То есть это идеальный объект для начала изучения сложного мира цифровой одежды.

Модуль Cloth занимает уникальное место в семье Мауа. Сшивая части ткани вместе, мы фактически создаем поверхность; однако вы не найдете Cloth в меню моделирования (клавиша F3). Способ драпировки и более или менее свободного набрасывания тканей на туловище напоминает нам о модуле Soft Body Dynamics (Динамика Мягкого Тела). Но и в меню динамики (клавиша F4) мы не увидим Cloth. Модуль Cloth занимает свое собственное место в левом верхнем углу Maya Unlimited.

Модуль Cloth и взаимодействуют с анимацией персонажей весьма не традиционным образом. Программный модуль, который определяет, как одежда себя «чувствует» и как она взаимодействует с телом, которого касается, называется Solver (Решатель). Solver (Решатель) требует времени, для того чтобы оценить конструкцию, придать форму состояния покоя и наложить ее на смоделированную геометрию. Приходится ждать, пока Cloth выполнит инициализационную часть работы, придаст одежде начальную форму, и только по окончании этого этапа работы Решателя мы сможем начать какие-то телодвижения нашего персонажа. После завершения Решателем начальной стадии и начинается симуляция со вполне приемлемой скоростью, а результаты действительно впечатляют. В частности, объекты, созданные с помощью модуля Cloth, не выглядят резиновыми, что очень типично для мягких тел. Модуль Cloth содержит математическое описание уникальных свойств различных материалов, таких, как эластичность и плотность. С помощью Cloth мы можем получить шелк, шерсть и джинсы.

  1. Создайте модель туловища, либо его упрощенную форму (см. рис. 21.1).

Самый простой способ - это начать с NURBS-сферы и вытянуть из нее два обрубка для изображения рук и один для шеи. Что касается Мауа 4, модуль

Cloth может работать с SDS-поверхностями. Именно эта технология используется в наших иллюстрациях. Вы могли бы использовать и полигональный подход - пара экструдов и команда Polygons / Smooth (Многоугольники / Сглаживание) (см. главу 10 для освежения этого в памяти).

21.1.gif

Рис. 21.1. Это туловище состоит из наскоро смоделированных SDS-поверхностей. Вы также можете начать с многоугольников или NURBS-примитивов. Высота туловища (здесь 1,5 единицы) очень важна в этом уроке

  1. Отмасштабируйте готовый торс так, чтобы его ширина и высота были в пределах между 1 и 2 ячейкой сетки.

В модуле Cloth размер играет важную роль. Представьте, что у вас есть большой кусок ткани и вы хотите сшить из него большое платье для женщины и маленькое для куклы. Хотя вы используете при этом один и тот же материал, маленькое платье на кукле будет сидеть не так, как на женщине, - кукольное платье будет более жестким. Когда вы моделируете персонаж, например туловище, Solver (Решатель) не знает, насколько большим будет этот персонаж. Параметр Solver Scale (Масштаб Решателя), чья задача заключается в координации расположения ткани на смоделированной геометрии, компенсирует эту неопределенность.

При моделировании пончо вы захотите отвести торсу пассивную роль. Для этого выберите Actions / Template (Действия / Шаблон) из контекстного меню. Так, вы можете видеть туловище, но не сможете его случайно выделить.

  1. В окне Top View (Вид Сверху) создайте две концентрические NURBS-окруж- ности.
  2. Передвиньте обе окружности вверх вместе, чтобы они располагались немного выше плеч туловища. Передвигать окружности вместе следует затем, чтобы они все время оставались в одной плоскости.
  3. Увеличьте в размере внешнюю окружность. Это будет край ткани, покрывающей туловище.
  4. Уменьшите внутреннюю окружность настолько, чтобы она плотно облегала шею.

Есть два условия создания одежды: первое условие требует кривых, лежащих в одной плоскости. Второе условие требует кривых, чьи границы образуют замкнутый контур. Создать одежду мы пока не можем, потому что наши окружности удовлетворяют только первому условию. Но очень скоро они сформируют два замкнутых цикла, которые мы сможем использовать для конструирования двух составных частей одежды, а не одного. Итак, мы собираемся разрезать обе окружности пополам и создать две дополнительные прямые линии, которые соединят полуокружности вдоль линии плеч. Это даст нам два замкнутых цикла, из которых мы впоследствии сможем создать две половинки одежды и сшить их вместе.

  1. Используйте контекстное меню или нажмите клавишу F8 для отображения Edit Points (Точки Редактирования) на обеих окружностях.
  2. Выделите все четыре редактируемые точки над плечами туловища (см. рис. 21.2).
  3. Разрежьте обе окружности по этим точкам. Нажмите F3, выберите Edit Curves / Detach Curves (Редактирование Кривых / Разъединить Кривые) (см. рис. 21.3).
  4. Соедините точки разделения двумя прямыми линиями, используя инструменты ЕР Curve Tool (Построение кривой по редактируемым точкам) и Curve Snapping (Прилипание к кривой) (клавиша С).
  5. Активизируйте меню Cloth в верхней левой части экрана.
  6. Выделите две передние полуокружности и обе новые прямые линии (порядок выделения не имеет значения).
21.2.gif

Рис. 21.2. Разбейте две окружности - по двум точкам каждую

21.3.gif

Рис. 21.3. Мы получили четыре полуокружности - базовая геометрия для передней и задней части пончо

  1. Создайте панель из полученных замкнутых кривых. Выберите Cloth / Create Panel (Ткани / Создать Панель) (рис. 21.4).
21.4.gif

Рис. 21.4. Две соединительные прямые между полуокружностями позволяют нам создать панель. Стрелки указывают на четыре кривые, выделенные для создания первой панели

  1. Выделите обе задние полуокружности плюс две прямые линии и создайте из них вторую панель.

Панель Cloth - это предварительное состояние одежды, которое не может быть визуализировано. Если вы запустите симуляцию ткани сейчас, с панелью ничего не произойдет. Нам нужно преобразовать ее в одежду, которая может быть визуализирована и которая фактически упадет на туловище.

  1. Выделите одну из двух панелей и создайте из них первую половину одежды: выберите Cloth / Create Garment (Ткани / Создать Одежду).

Одежда, однако, пока состоит только из половины пончо. Она автоматически увеличится вдвое, как только мы пришьем к ней вторую половину.

На этом этапе одежда состоит из 25 полигонов - это недостаточно для сглаженной поверхности. Наконец, когда все готово для анимации, мы зададим разрешение поверхности 1000 многоугольников, для того чтобы получить красивые складки и изгибы. Однако для нашего следующего шага зададим промежуточное значение количества многоугольников.

  1. В окне Channel Box (Окно Каналов) увеличьте Base Resolution (Базовое Разрешение) cpStitcher с 25 до 300.

Теперь самое время для сшивания. Я люблю шить, особенно сложные части одежды. Двух швов вдоль линии плеч будет вполне достаточно. Используйте маску выбора для дезактивации поверхности ткани. Так вы не сможете нечаянно ее выделить.

  1. Выделите одну из двух прямых линий над плечами.
  2. Создайте по ним шов. Выберите Cloth / Create Seam (Ткани / Создать Шов) (рис. 21.5).
21.5.gif

Рис. 21.5. Сшейте перед и спинку, создав два шва вдоль линии плеч

  1. Выделите вторую прямую линию и также создайте вдоль нее шов.

Эти швы соединяют спинку и перед пончо и автоматически создают garment [Специальная поверхность Maya Cloth. - Примеч. ред. ] из задней панели. Типичная ошибка начинающих - это сшивание не тех частей; например, если вы забудете сшить второй плечевой шов, пончо будет открыто в этом месте, и либо повиснет на одном плече, либо упадет на землю.

Итак, все, что вы сделали, - это создали две панели из шести кривых, затем применили команду Create Garment (Создать Одежду) к одной из панелей путем наложения швов и, наконец, пришили получившуюся часть одежды (garment) с помощью шва. Более сложные предметы одежды создаются тем же способом. Это быстрый и интересный путь создания реалистично выглядящей трехмерной одежды. Две поверхности не обязаны соприкасаться друг с другом перед сшиванием, как это было в случае с нашим пончо. Если панели находятся далеко друг от друга, сшивание соединит их, создав дополнительную поверхность между ними. (Урок Cloth Tutorial в документации по Instant Maya предлагает интересные способы создания рубашки и джинсов.)

Теперь при воспроизведении анимации пончо упадет и исчезнет благодаря тяготению. Оставьте его ненадолго там и, если хотите, выделите и сделайте невидимыми первоначальные кривые и панели. Они вам больше не понадобятся, но и уничтожать их нельзя.

  1. Выделите туловище и сделайте из него объект коллизий с тканью. Выберите Cloth / Create Collision Object (Ткани / Создать Объект коллизий).

При воспроизведении симуляции на этом этапе вы будете разочарованы. Пончо не ляжет на туловище, но будет парить вокруг него, пока не исчезнет в бесконечности. В действительности это нюанс, на котором многие новички Maya Cloth сдаются. Все выглядело таким понятным, а теперь почему-то все усложнилось. Ничего не усложнилось!

Существуют две причины «неправильного поведения» пончо, и обе эти причины могут быть быстро устранены. Первая проблема заключается во взаимодействии модуля Cloth с геометрией, которая, как я говорил ранее, может быть устранена с помощью Solver Scale (Масштаб Решателя). Вторая имеет отношение к расстоянию, на которой ткань старается держаться от объекта, чтобы не проникать в него. Эти параметры называются Collision Offset (Расстояние до объекта коллизии) и Depth (Глубина проникновения), и мы сначала займемся именно ими. Единственная хитрость заключается в том, что в действительности это параметры не одежды, а объекта коллизий, которым является туловище.

  1. Выделите туловище и откройте секцию Shapes (Форма) в окне Channel Box (Окно Каналов). Уменьшите значения для Collision Offset (Расстояние до объекта коллизии) и Collision Depth (Глубина Проникновения) с 1 до 0,1 (рис. 21.6).
21.6.gif

Рис. 21.6. Два основных фактора, влияющих на падение пончо на туловище, - это Collision Offset (Расстояние до объекта коллизии) и Collision Depth (Глубина проникновения ). Значение, установленное по умолчанию - 1, - слишком велико для туловища, размером в 1 или 2 единицы, и пончо, которое должно бы красиво лечь вокруг шеи

Эти небольшие изменения имеют огромный эффект. Они позволяют пончо лучше «почувствовать» туловище. Перед этим пончо парило над туловищем на расстоянии 1 ячейки сетки, словно большая арка.

Теперь давайте обратимся к Solver Scale (Масштаб Решателя), чтобы наше пончо знало, с чем имеет дело.

  1. Выделите пончо. В окне Channel Box (Окно Каналов) в разделе Inputs (Входные Данные) щелкните мышкой на вкладку cpSolverl. Увеличьте значение Solver Scale (Масштаб Решателя) до значения, значительно большего 1, например, 15 (рис. 21.7).
21.7.gif

Рис. 21.7. С увеличенным значением параметра Solver Scale (Масштаб Решателя) симуляция выглядит так, как будто наш торс - это тело взрослого человека, а не куклы ( Solver Scale 1)

Со значением параметра Solver Scale (Масштаб Решателя)! пончо ведет себя так, будто оно представляет собой одежду для куклы, - слишком жесткое и грубое. Значение параметра Solver Scale (Масштаб Решателя) 15 говорит о том, что мы создали реальное пончо для взрослого человека, поэтому оно более мягко ложится на геометрию (рис. 21.8). Для получения более изящной симуляции мы снова увеличим разрешение поверхности.

21.8.gif

Рис. 21.8. С уменьшенными значениями параметров коллизии vi увеличенным значением параметра Solver Scale (Масштаб Решателя) пончо красиво падает на туловище. С разрешением всего лишь 300 многоугольников на панель некоторые части ткани проникают в геометрию. Цвет мы получили, наложив стандартную 2D Cloth texture

  1. Увеличьте Base Resolution (Базовое Разрешение) cpStitcher до 1000.

При внесении такого рода изменений мудро было бы удалить кэш симуляции, перед тем как запустить ее снова. Выберите Simulation / Delete Cache (Симуляция / Удалить Кэш). В противном случае никаких изменений вы не увидите. Кэш симуляции необходим, когда вы заканчиваете работу над симуляцией ткани и начинаете анимацию персонажа. Он записывает данные симуляции на жесткий диск, чтобы Мауа не приходилось делать все с самого начала снова и снова, при воспроизведении анимации.

С высоким разрешением пончо выглядит более мягким, а симуляции требуется больше времени для выполнения (рис. 21.9). Но что же это за материал? Мы можем выбрать материю в секции cloth properties (свойства ткани). В ней есть шелк, шерсть, джинсовая ткань и другие. Давайте сошьем наше пончо из тончайшего шелка.

21.9.gif

Рис. 21.9. При разрешении 1000 полигонов на поверхность пончо превосходно ложится на туловище

  1. Создайте для пончо новую материю. Выберите Properties / Create Cloth Properties (Свойства / Создать Свойства Ткани).
  2. Откройте Attribute Editor (Редактор Атрибутов) для нового материала и откройте в нем Material Library (Библиотека Материалов), небольшой набор встроенных материалов. В поле Material Name (Имя Материала) выберите cpSilk (см. рис. 21.10).
  3. Удалите кэш симуляции (Simulation / Delete Cache (Симуляция / Удалить Кэш) и запустите анимацию заново.

Шелковый материал ведет себя еще мягче на туловище. Особенно это заметно при движении тела. В окне Attribute Editor (Редактор Атрибутов) вы найдете физические свойства, обусловившие это поведение, такие, как Bend Resistance (Сопротивление Сгибанию) (чем ниже значение этого параметра, тем большее количество складок вы получите), Thickness (Плотность) (для смоделированного зимнего пальто в противоположность ночной рубашке) и Friction (Трение) (между туловищем и пончо, а также между пончо и пончо). Значение параметра Friction (Трение) для шелка, конечно, значительно ниже, чем для хлопковых тканей.

21.10.gif

Рис. 21.10. Физические свойства тканей. Мауа предоставляет лишь несколько готовых материалов. Мы нажмем на значок папки, чтобы выбрать шелк

Когда вы проанимируете туловище, после того как пончо уютно на нем расположится, пончо будет натурально следовать за движением туловища. По мере движения туловища на пончо будут появляться новые складки, колебания, некоторые части будут растягиваться и собираться. Когда движение туловища будет достаточно быстрым, Air Damping (Демпфирование Воздуха) - атрибут свойства ткани - станет важным фактором. Если хотите, чтобы анимация туловища начиналась в кадре 0 или 1, вместо того чтобы проигрывать кадр за кадром для симуляции, используйте команду Simulation / Start / Stop Simulation (Симуляция / Начать / Закончить Симуляцию). Мауа через некоторое время оденет туловище, не продвигаясь вперед по таймлайну.

21.11.gif

А теперь кое-что новенькое. Приходилось ли вам смешивать руку из модуля Paint Effects с березой?



Последнее обновление ( 14.12.2007 г. )
 
« Пред.

Top