Мастер-класс по цифровой анимации. Часть III*
Поднимается «Буря»
Все работы по моделированию для нашей трехмерной анимированной научно-фантастической версии шекспировской «Бури» на данный момент закончены. Мы спроектировали декорации, вылепили из метаболов и NURBS-объектов фигурки героев и скроили для них одежду. Кроме того, мир, в котором будут разворачиваться события, мы текстурировали под камень и травку, раскрасили в телесные тона и прикрыли текстильными узорами. Теперь мы займемся анимацией нашей истории — и снова при помощи 3D Studio MAX.
Мы не собираемся делать целиком весь фильм, достаточно будет первых пяти минут и двух сцен. Первая из них разворачивается на борту корабля, попавшего в метеоритную бурю, а вторая — в разрушенном здании на одной из близлежащих планет, откуда Просперо управляет бурей при помощи своего компьютера по имени Ариэль. Подобные вещи всегда давались непросто: в сцене с метеоритным дождем очень много действия и взаимодействия между объектами. Кроме того, нам потребуется много времени для анимации персонажей.
Поэтому, прежде чем приступать к какой-либо анимации, воспользуемся функцией Hide и временно уберем из сцены все, что не относится непосредственно к данному процессу. Обновление экрана со сложной сценой при переходе от одного кадра к другому даже на самом мощном компьютере требует нескольких секунд (а иногда даже нескольких минут). Однако, когда все, за исключением самого существенного, скрыто, гораздо свободнее манипулировать сценой и прокручивать анимацию в окне Camera View, чтобы посмотреть, что там получается.
Метеоритный дождь
Метеоритный дождь — это очень удачная сцена для начала нашей работы. В ней демонстрируются сотни астероидов, каждый из которых движется по собственной траектории и вращается со своей скоростью. Каждый астероид можно строить отдельно и независимо, однако гораздо быстрее будет определить систему частиц (particle system), смоделировать метеорит и воспользоваться им в качестве образца для Super-Spray — одного из видов систем частиц, предусмотренных в программе 3D Studio MAX. С помощью системы частиц можно генерировать сразу множество копий объекта различных размеров, с разными скоростями и направлениями движения и вращения.
Чтобы сделать картинку еще более интересной, можно создать еще два метеорита, являющихся кусками исходного. Затем нужно задать Deflector Space Warp (отклоняющее искривление пространства), а в качестве отражателя (Deflector) указать оболочку корабля. Если с этим отражателем связать распылитель частиц-метеоритов, то можно устроить так, чтобы любой метеорит, сталкивающийся с отражателем, заменялся на два фрагмента. В результате получится довольно сложная сцена: навстречу кораблю мчатся сотни метеоритов; сталкиваясь с кораблем, они разваливаются на куски и разлетаются в разные стороны.
Тем не менее это еще не все, что можно ввести в сцену метеоритного дождя. Предполагается, что этот дождь вызван могучим духом Ариэля. В нашем представлении это компьютер, способный видоизменяться. В исходном виде Ариэль является некой субстанцией, похожей на лягушачью икру, которая постоянно дрожит и пульсирует. Подобного эффекта можно добиться, если создать два отдельных облака частиц, расположенных в одном и том же месте пространства. Для этого необходимо установить для них одни и те же параметры движения (сконфигурировав их таким образом, чтобы каждая частица хаотично колебалась туда-сюда в подвешенном состоянии), но при этом сделать так, чтобы облака выглядели по-разному. Пусть одно облако испускает маленькие светящиеся оранжевые шарики (икринки), а для второго возьмем метачастицы гораздо большего размера из полупрозрачного материала. Этот «студень» — и есть дух Ариэля, а его метачастицы — это сферы, которые при приближении друг к другу сливаются (как капельки загустевшей жидкости).
Дух лягушачьей икры
Закончив построение этой конструкции, разместим в ее центре систему частиц-метеоритов, затем скопируем ее, чтобы вместе с метеоритами вылетали еще и частицы «студня», повторяющие траекторию их движения. При этом полезно было бы настроить ее таким образом, чтобы по мере излета метеоритов из точки их возникновения в центре Ариэля «студень» постепенно исчезал. В результате получится следующая последовательность: в пространстве возникает Ариэль (в виде лягушачьей икры) и извергает в направлении корабля шарики «студня», которые в полете постепенно теряют желеобразную оболочку и превращаются в астероиды. Все, что нам теперь нужно, — это эффект вспышки, из которой возникает вихрь, порождающий Ариэля. Эту работу выполнит для нас ProOpticSuite.
В заключение нам хотелось бы сделать так, чтобы с борта корабля был открыт защитный огонь из пушек и несколько метеоритов под этими выстрелами взорвались. Для этого проще всего создать специальные метеориты и спрятать их среди астероидов, вылетающих из системы частиц. Затем, воспользовавшись plug-in-модулем Pyrocluster программы ProOpticSuite, взорвать их. Эта великолепная программа создает невероятно правдоподобные взрывы, дым, огонь и тому подобные эффекты. В ней даже предусмотрена специальная система частиц, моделирующая ядерный взрыв с образованием грибообразного облака.
Motion capture под обстрелом
После того как мы анимировали метеориты, можно поработать над тем, как на них должен реагировать корабль. Его пушки должны шевелиться и стрелять, а когда в корабль будут попадать обломки, он должен вздрагивать. Реалистично анимировать подобные, якобы случайные движения очень трудно, но решить проблему возможно с помощью технологии захвата движения (motion capture). Она позволяет создавать ключевые кадры для любой анимационной траектории путем записи координат перемещения, задаваемых джойстиком, мышью или клавиатурой. Таким образом, поиграв в свою анимацию, как в компьютерную игру, можно записать совершаемые при этом движения.
Например, нам нужно, чтобы пушки на нашем корабле поворачивались влево-вправо, вверх-вниз и стреляли по метеоритам. Эти движения должны быть сложными и естественными. Так вот, вместо того чтобы строить последовательность ключевых кадров, гораздо быстрее и естественнее привязать горизонтальный и вертикальный углы поворота пушки к движениям мыши и записать эти движения, проделав их вручную. Эту технику можно распространить и далее. Например, в некоторых сценах можно связать легкое дрожание руки с движениями вашей камеры. Получится эффект ручной переносной камеры, совсем как в жизни. Хотя, чтобы такой эффект получился безупречным, придется основательно потрудиться.
Когда же дело доходит до анимации героев, наша работа выходит на новый уровень сложности. Проблема — или, по крайней мере, одна из них — состоит в том, каким образом люди и объекты взаимодействуют друг с другом. Когда-нибудь настанут такие времена, когда обнаружение коллизий станет стандартной частью 3D-анимации и не нужно будет заботиться о том, что ноги персонажа проскальзывают сквозь монолитные объекты или другие части его собственного тела.
Все это будет потом, а пока, даже для того чтобы выполнить простейшие движения — нажать на кнопку, опереться о стену, разбить машину о скалу, — нужно проделать огромную работу, и результат при этом может получиться безупречным далеко не всегда. Посмотрите на последние голливудские творения. Даже в них можно заметить моменты, когда физическое взаимодействие между героями и объектами выглядит неестественно.
Время выявлять неполадки
Чем сложнее наша сцена, тем больше нам придется иметь дело с пересечениями между объектами, которые на самом деле должны только соприкасаться. В режиме просмотра каркасных сеток практически невозможно заметить, когда объекты частично проходят друг через друга. Единственный способ обнаружить такой брак — выполнить тестовый просчет сцены.
После того как вы идентифицировали проблему, часто выясняется, что ее очень трудно решить. Иногда наилучшим выходом из положения является выбор другого угла обзора камеры, при котором некорректные пересечения просто не видны. Если это сделать невозможно, придется подправлять саму анимацию. Возможно, для решения этой проблемы вам нужно будет только слегка сдвинуть ключевые кадры в критической точке. Если же потребуется добавить к действию еще несколько ключевых кадров, делайте это осмотрительно: каждый добавленный искусственно кадр делает движение менее естественным, из-за чего объект может «впасть в конвульсии» без каких-либо видимых причин. При решении данной проблемы очень полезно думать не о том, куда должен переместиться объект, а о том, какие силы на него на самом деле действуют.
Конечно, пакет, в котором мы имели бы дело не с ключевыми кадрами, а с ключевыми силами, оказал бы 3D-анимации неоценимую услугу. Вместо того чтобы решать, где в данный конкретный момент времени должен находиться наш объект, мы задавали бы моменты сил, притягивающих или отталкивающих его в определенном направлении. Такая парадигма открыла бы для аниматоров более естественный набор инструментов.
В следующем месяце мы внесем в нашу анимацию последние корректирующие штрихи, затем отрендерим сцену, смонтируем и вставим в фильм музыку и звуковые эффекты. Не пропустите продолжения...
В статье описаны практические опыты Кристиана Даркина, e-mail: christian@darkin.demon.co.uk
КомпьютерПресс 12'1999