Создание 3D-персонажей

Автор: Алексей Калиниченко
Опубликовано в журнале "Компьютерра" №1-2 от 17 января 2006 года

В современном кино иногда бывает недостаточно обычных "живых" актеров. Например, для съемок внеземных монстров люди едва ли подойдут. Раньше таких персонажей играли специальные куклы. Сравнение с детскими игрушками, правда, здесь весьма условно - зачастую это были сложнейшие механизмы ценой в несколько миллионов долларов, с хитроумной механикой и даже с компьютерным управлением. Фильм "Чужие 2" стал одним из самых зрелищных фильмов, созданных по этой технологии. Все монстры в нем были изготовлены "в металле" и отсняты по принципам классической кукольной мультипликации. Сейчас же на смену механизмам приходят виртуальные персонажи. Они могут многое из того, что не под силу материальным конкурентам (например, трансформации и головокружительные прыжки даются им куда проще), зато куклу можно снять в одном кадре вместе с живым актером, а компьютерного персонажа придется еще "вживлять" в картинку. Отличным примером использования цифровых актеров могут служить все последние нашумевшие блокбастеры: трилогия "Властелин колец" с "симпатягой" Горлумом, "Кинг-Конг", в котором одну из главных ролей сыграла полностью компьютерная обезьяна, и "Хроники Нарнии" с обилием цифровых животных.

Были и случаи вживления в кино привычных с детства классических мультперсонажей (например, "Кто подставил кролика Роджера"). Правда, этот метод не сыскал популярности, прежде всего из-за сложностей совмещения мультипликационного и отснятого материалов.

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

Дальше в дело вступают художники, их главная задача - создать визуальный образ персонажа. Они прорабатывают образ в общих чертах, создают именно те детали персонажа, которые зритель запомнит, которые сделают этого персонажа уникальным. И опять все эти действия в точности повторяют и современные разработчики CG-персонажа[CG (computer graphics) — компьютерная графика], и творцы прошлого, создавая своего монстра, с той лишь разницей, что они чуть больше ограничены в фантазии, ведь далеко не все, что можно нарисовать, можно изготовить из пластика и металла. Еще больше ограничена фантазия тех, кто выбирает актера на определенную роль, ведь они выбирают из конкретного числа людей, и могут лишь незначительно "подправить" материал с помощью грима.

Далее определяется то, что нашему новому персонажу придется делать перед камерами. Должен ли он бегать и прыгать или ему достаточно только неторопливо ходить, будут ли крупные планы с его участием или его место в массовке на краю карты? Все это определяет как степень достоверности, так и технические возможности модели существа. Эта стадия уже сильнее привязана к технологии, но все равно пока еще различия в работе над двумя типами персонажей не принципиальны. Да и к "живым" актерам зачастую предъявляются специальные требования, например возможность выполнения некоторых трюков, но этих требований существенно меньше, так как все люди в известной степени похожи между собой.

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

Создание же CG-персонажа обычно начинают не со скелета, а, наоборот, с тела. Сначала, в 3D-редакторе строится модель в так называемой позе одевания[Поза, в которой разные части тела максимально отстоят друг от друга. Для человекообразных существ это прямые руки в стороны, пальцы растопырены, ноги вниз]. Обычно это замкнутая поверхность, состоящая из элементарных плоских фигур (треугольников или четырехугольников) - полигонов. Эта модель еще одноцветная, практически лишена деталей - тут нет ни ресниц, ни волос, ни морщин - форма и только форма. Все эти "недостатки" устраняются на следующем этапе разработки персонажа. Для него создается текстура, карта неровностей, добавляется множество деталей - зачастую даже волоски на коже героя требуют внимания разработчиков, в случае же с Кинг-Конгом волосяной покров составляет чуть ли не основу персонажа.

Теперь мы можем видеть именно то, что мы привыкли видеть в современном кино, только в неестественной позе.

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

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

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

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

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

Теперь настал момент вдохнуть в персонажа "жизнь". Для начала нам нужен скелет. Скелет у CG-существ очень похож на наш с вами. Только в отличие от наших все кости в нем прямые, зато могут не только поворачиваться в суставах, но и изменять длину. Чтобы сделать что-то похожее на ребро, приходится строить цепочку из прямых костей. Компьютерные скелеты иногда включают несвойственные биоорганизмам части, для лучшего контакта с кожей. Теперь кожу и скелет необходимо связать вместе. Эта операция называется скинингом. Что такое вообще привязка кожи к скелету? Каждой вершине ставится в соответствие некоторое количество костей, за которыми она будет следовать, и весовой коэффициент для каждой из костей. Как нетрудно понять, эта операция крайне трудоемкая и муторная, к счастью есть автоматические системы скининга, которые хоть и обладают рядом недостатков и не всегда верно "скинят" объекты сложной формы, существенно облегчают жизнь создателям 3D-персонажей. Теперь мы можем пошевелить кости нашего существа, и его тело в точности повторит движения скелета. Уже можно худо-бедно управлять нашим зверем. Однако каждый раз задавать положение персонажа с помощью взаимного поворота костей не всегда удобно.

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

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

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

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

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

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

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

Когда все предварительные работы завершены, в дело вступают аниматоры. Именно эти люди научат наше существо двигаться на экране. Самый простой метод анимации компьютерных персонажей называется методом ключевых кадров (Key Frames). Состояние героя точно задается на некотором наборе кадров, эти кадры не обязаны идти в фильме последовательно, например поза существа может быть задана на первом десятом и пятидесятом кадрах. После чего для всех промежуточных (не ключевых) кадров автоматически вычисляется положение всех частей героя. Этот способ достаточно прост в реализации, но слишком трудоемок для создания движений сложной конфигурации и требует большого умения аниматора для получения реалистичности поведения персонажа. Более того, не все позы персонажа в реальности бывают возможными. Зритель вряд ли поверит в существо с явно смещенным центром тяжести. Например, при анимации хвоста бегущего динозавра надо следить за тем, чтобы хвост, как и его прототип, балансировал в воздухе, помогая своему хозяину не упасть. В таких случаях зачастую применяется процедурная анимация, здесь для управления персонажем или его частью пишется специальная программа, которая может расположить одни части тела персонажа оптимальным образом исходя из других и существа в целом. Но и такой подход не всегда дает приемлемый результат.

Что же может стать источником реалистичного движения? Правильно, сам человек. Для того чтобы перенести движения с человека на цифрового персонажа, существуют системы захвата движения (Motion Capture), позволяющие анимировать в реальном времени. Существует три принципиально разных подхода к созданию таких систем. Первый: можно разместить на руках, ногах и других частях тела специальные датчики, которые будут передавать на компьютер информацию о своем положении в пространстве. Второй: на человека можно "надеть" внешний скелет, регистрирующий изменение положения своих костей. Однако обе эти технологии громоздки и дороги.

Третий же (новейший) способ захвата движения куда проще. На теле человека в особых точках размещаются специальные маркеры, например ярко-оранжевые перчатки. А программный комплекс восстанавливает положение маркеров в пространстве, получая данные с обычных цифровых камер, расположенных вокруг движущегося человека. Этот способ наиболее удобен, так как оборудование почти не мешает двигаться. Впрочем, для достижения более реалистичных результатов могут применяться особые костюмы, сковывающие движения актера, для восстановления походки рыцаря в тяжелых латах, может быть, и актеру придется облачаться в некоторое подобие средневековых лат. К тому же технологии Motion Capture годятся для копирования движений не только человека, но и животных.

Даже мимику можно перенести с реального персонажа на виртуального. Для этого на лицо человека наклеиваются яркие кружочки, после чего его снимают с нескольких камер одновременно, и с помощью программного обеспечения, схожего с тем, которое используют для Motion Capture, физиономия человека в реальном времени переносится на компьютерного героя.

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

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

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

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

Виртуальные массовки

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

В современном кинематографе массовки принято размножать или рисовать с нуля, полностью собирая из 3D-персонажей. У каждого из этих методов есть свои достоинства и недостатки. Размножение двухмерных персонажей на первый взгляд кажется менее трудоемкой задачей, а 3D открывает больше возможностей для управления.

В фильме "Гладиатор" толпы зрителей в Колизее были размножены из небольшого количества статистов. Тогда мощности компьютеров для создания такого количества реалистичных 3D-людей были еще не достаточны. Поэтому была выбрана технология размножения при помощи композитинга. Так как камера практически во всех кадрах находилась в центре арены, ракурс для всех людей на трибунах был практически одинаков. Для таких сцен как нельзя лучше подходит 2D-метод размножения массовки.

А вот в трилогии "Властелин колец", во-первых, нужны были воистину масштабные батальные сцены, и, во-вторых, камера должна была пролетать над строями воинов. Поскольку во время пролета камеры ракурс, с которого видно человека внизу, существенно меняется, то двухмерное размножение не подходило, было решено делать участников массовки в 3D.

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

При работе над "Властелином колец" для управления массовками доселе невиданных масштабов (более 70 тысяч объектов) на студии Weta Digital была разработана программа Massive. Она позволяет управлять как отдельным существом, так и строями, при этом они движутся по 3D-ландшафту, автоматически обходя преграды и не сталкиваясь друг с другом. Каждый агент (так принято называть участника массовки) имеет свой искусственный интеллект, который позволяет ему не только адекватно перемещаться, но и атаковать противника, стараясь нанести свой удар так, чтобы попасть в наименее защищенную часть тела. Эта программа вышла за пределы родной студии, что редко случается в мировой практике, и была взята на вооружение крупнейшими студиями планеты.

А вот в фильме "9 рота" массовку для финального боя решили делать двухмерной. При натурных съемках были задействованы актеры только для первых рядов наступающих душманов. Остальных же пришлось дорисовывать, для чего в студии на зеленом фоне отсняли множество кадров с различными ракурсами и движениями актеров. Впоследствии из этих материалов и была собрана финальная массовка.


<<Эффекты в компьютерных играх
Все материалы номера
Визуальные эффекты в кинематографе >>