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

В анимационных фильмах и в сценах компьютерных игр очень часто видны характерные ошибки, касающиеся движения персонажей в целом и их перемещения в частности. Грубейшие ошибки проявляются в поворотах, в ходьбе, в движениях рук во время схваток и сражений. Например, аниматоры создали сцену, в которой персонаж выполняет какое-то характерное движение — бежит или идет. Что характерно для данного типа движения? Его цикличность. Иначе говоря, периодическое повторение в одной и той же последовательности его отдельных составляющих. Это говорит о том, что нам не нужно создавать всю сцену, в которой персонаж перемещается от исходной до конечной заданных точек. Достаточно иметь один замкнутый цикл движения, который в дальнейшем можно повторять столько раз, сколько это необходимо для заданного перемещения. И это обстоятельство значительно упрощает работу разработчиков компьютерных игр. Правда, есть одно «но»... Оно состоит в том, что чаще всего разработчики слишком уж упрощают себе работу, пренебрегая «правдой жизни». Представьте, например, что вы идете: в то время как одна нога опирается на землю, оставаясь на месте, вторая переносится вперед. Затем ситуация меняется, и уже вторая нога «прикрепляется» к земле, а первая двигается в пространстве. Поочередно опираясь на конечности, перемещается и все тело. Но в играх и фильмах чаще всего можно видеть иное: во время ходьбы или бега даже опорная нога персонажа не «прикрепляется» к полу: она незначительно, но перемещается, как бы скользит по поверхности, чего в реальной жизни, естественно, не бывает. В итоге ширина шага персонажа может превышать его собственный рост порой в разы или, наоборот, персонаж начинает как бы буксовать, двигаясь с проскальзыванием, с трудом перемещаясь по поверхности карты игрового или анимационного виртуального мира. Другая распространенная ошибка состоит в том, что герои вместо того чтобы правильно поворачиваться, вращаются вокруг своей оси подобно стрелке компаса, как будто они стоят не на твердой земле, а на невидимой парящей над ее поверхностью платформе, мгновенно разворачивающейся в нужном направлении. Присмотритесь внимательно к продукции, выпускаемой современными киностудиями и разработчиками компьютерных игр, и вы увидите массу подобных и иных ошибок, связанных с управлением движением персонажей.

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

В трехмерном моделировании нельзя обойтись без применения системы координат, благодаря которой можно указать местонахождение того или иного объекта в пространстве. Центр масс куба или шара расположен в их центре, центр масс тора — вне его. Изменяя координаты центра объекта, мы изменяем положение его в пространстве. Помимо объектов в Poser применяются фигуры, которые можно перемещать относительно их центра масс. Но фигура — не объект, она имеет конечности, шею, голову, другие элементы, управляя которыми можно придавать персонажу различные позы. Казалось бы, ну и что? Разве это обстоятельство может сказаться на реалистичном отображении фигуры и ее элементов? Увы, сказывается.

Центр масс фигуры Poser располагается в районе таза — Hip, и, по задумке разработчиков, положение фигуры в пространстве определяется не только координатами самой фигуры в целом (Body), но и координатами Hip. Данное обстоятельство практически никак себя не проявляет в том случае, когда движение строится по правилам прямой кинематики. Ведь такой способ управления элементами фигуры предполагает следующее: движение элементов фигуры подвержено строгой иерархии — от высшего к низшему. При перемещении плеча вверх-вниз поднимается или опускается вся рука, движение предплечья сказывается на положении локтя, ладони, пальцев... Однако перемещение пальцев никак не влияет на положение всей руки, перемещение ладони не влияет на положение локтевого сустава, предплечья... То же самое можно сказать и об опорных конечностях — ногах. Иначе говоря, как и куда бы мы ни перемещали фигуру или ее центр масс (Hip), вслед за ними перемещаются остальные ее элементы. Но прямая кинематика не очень удобна для построения анимации и изменения поз персонажей. Существует обратная, или, как ее еще называют, инверсная, кинематика (Inverse Kinematics). В этом случае не требуется выполнять цепочку движений от старшего к младшему, для того чтобы персонаж сделал шаг или взял в руки некий предмет. Достаточно конечность (стопу ноги Foot или ладонь руки Hand) переместить в нужную точку, а все остальные элементы фигуры выстроят свое положение автоматически. Удобнее? Конечно. Именно поэтому данный режим чаще всего используется аниматорами. Но... Как только мы задаем той или иной конечности функцию Inverse Kinematics, она автоматически получает особые права, а точнее, привязку к координатам. Они не были нужны данному элементу при прямой кинематике: его положение определялось положением фигуры или центра масс (Hip), а также позицией более высоких по иерархической цепочке элементов. При инверсной кинематике изменения положения конечности определяют позу, позицию фигуры, иначе говоря, управляя конечностями, можно перемещать фигуру. Правда, следует учитывать также и то, что в этом случае потребуется перемещать все элементы, положение которых определяется координатами: обе ноги, обе руки, таз. В противном случае фигура будет как бы «разрываться», точнее, стремиться к разрыванию, так как нельзя задавать положение левой ноги по отношению к правой с дистанцией, превышающей размеры этих элементов фигуры. Чтобы было понятнее, о чем идет речь, попробуйте представить, что одна ваша стопа находится под вами, а другая стремится оказаться за три метра от вас. Еще следует обращать внимание на то, что центр масс реального персонажа не всегда находится в районе крестца. У гимнастки, ставшей на «мостик» или пытающейся свернуться в кольцо, центр масс находится за пределами собственного тела. Это означает, что центр масс и центр фигуры Hip в данном случае расположены в разных точках, что особенно следует учитывать при построении движений некоторыми автоматизированными способами, о которых шла речь в предыдущей статье (см. «Мир ПК», №10/06, с. 130).

Рис. 1. Искажения, проявляющиеся при поворотах элементов фигуры в режиме Inverse Kinematics

Когда с развитием компьютерных технологий возникла задача захвата движения реального человека и обработки его с помощью компьютера, появились устройства Motion Capture. Положения датчиков, прикрепленных к актеру, позволяли определить, где, в каком положении и в какой момент находится каждый из них. Соответственно благодаря этому можно было определить положение тела актера в пространстве, его позу в каждый момент движения. Казалось бы, никаких особых сложностей при этом не должно возникать. Это не совсем так. Как, например, различить положение элемента тела при поворотах? Какую информацию считывает датчик при повороте элемента на 1° и на 361°? Ответ простой: одну и ту же. Если объект повернуть на 360°, не выполняя с ним никаких других действий по перемещению, его позиция совершенно не изменится по сравнению с предыдущей. Из этого следует важное обстоятельство. Например, если одну часть тела повернуть на 359°, а другую - на 363°, мы получим информацию о поворотах для первого и второго элементов соответственно 359° и 3°. Из-за этого виртуальное тело иногда практически «рвалось» (рис. 1).

Нечто подобное случается и при построении анимации с помощью инверсной кинематики. В настоящее время пользователям предлагаются библиотеки движений в формате BVH и других, записанных методом Motion Capture. Анализируя их, можно заметить, что поворот элементов фигур и тела не выходит за границы +180°. Да, с некоторых пор повороты частей тела записываются именно в этих пределах, а не в границах 0—360°. Следует обратить внимание и на другое обстоятельство: иногда заметны скачки в данных, отражающих повороты частей тела и всей фигуры относительно оси координат. То есть данные, которые описывают позиции элементов в соседних кадрах, порой могут отличаться на значительную величину, достигающую иногда 359° (рис. 2).

Рис. 2. Графики, отражающие изменения управляющих элементов для частей тела фигуры. Видны резкие изменения (скачки) в данных

Что важно, скачкообразные изменения этих данных должны происходить со всеми элементами тела, связанными иерархической цепочкой, одновременно, иначе будут видны «разрывы», а точнее, искажения, вызванные тем, что какая-то часть тела повернута относительно другой на недопустимую величину. Эти данные сообщают нам не о том, что фигура персонажа и ее элементы практически мгновенно повернулись в пространстве в последующем кадре относительно предыдущего. Этим сообщается, что для верного описания положения фигуры при ее поворотах порой нужно одновременно изменять все данные, описывающие позиции ее элементов. И это не такая простая задача, если выполнять ее вручную, а не методами Motion Capture.

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

Пользователям Poser (и других программ) можно порекомендовать и иной способ устранения обозначенных выше неточностей в отображении фигур при их движении. Сначала анимация должна быть выполнена в режиме инверсной кинематики, заданной для элементов Right Foot и Left Foot (правая и левая ноги, а точнее, стопы). На первом этапе не стоит обращать внимание на недочеты, связанные со сложными разворотами фигуры и обозначенными выше причинами, по которым иногда ноги могут быть «вывернуты» и выглядеть неестественно. Главное — задайте указанным элементам верную позицию. После того как все движения построены, переключитесь на режим прямой кинематики. Анимация в нем выполняется сложнее, но это и не важно: она в целом уже построена и сохранена, зато в таком режиме можно подправить положение конечностей (стоп ног) командами Twist (разворот стопы вдоль своей оси), Bend (наклон), Side-side (поворот стопы влево-вправо). Для рук задавать инверсную кинематику следует тогда, когда нужно показать движения, например, связанные с поддержкой одного персонажа другим (акробатика), или в тех случаях, когда персонаж упирается в стенку, пытаясь ее сдвинуть, и т.п. Иногда помогает и следующий прием. Режим Inverse Kinematics задается не для обеих, а только для левой или правой конечности (стопы). В некоторых случаях этого вполне достаточно. С одной стороны, изменения положения элемента Hip уже не сказываются на положении конечностей, фигура все равно «прикреплена» к полу, с другой стороны, при сложных поворотах всей фигуры и ее элементов можно быть уверенным в том, что вид по крайней мере одной из конечностей всегда будет правдоподобен.

Есть и другие особенности, на которые начинающие аниматоры если и обращают внимание, то лишь для того, чтобы выразить недовольство работой программы, особенно в тех случаях, когда персонажи, задействованные в сцене, вдруг начинают себя вести не так, как было задумано. Речь идет вот о чем. Сложился стереотип, что между двумя ключевыми кадрами (key frame), которые хранят информацию о положении объекта или фигуры, изменения информации происходят по линейному закону. То есть если объект в первом кадре находится в точке А, а, например, в 25-м кадре, который является ключевым,— в точке Б, значит, он перемещается от одной точки к другой по кратчайшему пути, проходя одинаковое расстояние за каждый промежуточный кадр. А если задан поворот, следовательно, и угол поворота для каждого промежуточного кадра одинаков и объект или фигура уж никак не должны вдруг оказаться повернутыми на величину, превышающую заданные значения в ключевых кадрах.

Но так бывает только в том случае, когда задан линейный закон изменения данных, определяющих положение фигур и объектов в промежуточных кадрах. Если говорить о Poser, этот редактор позволяет задать четыре способа влияния на промежуточные кадры и имеет два типа интерполяции, которые могут быть применены порознь или вместе с каждым из этих способов. Особенно заметно такое влияние при использовании метода Spline Section. Этот метод основывается на изменениях в промежуточных кадрах по кривой, близкой к синусоиде, и позволяет имитировать разгон и торможение в начале и конце движения объектов.

Но когда сцена достаточно сложная и в ней участвуют фигуры, которые совершают некие действия, например спортивные (поднимают и опускают руки, делая зарядку), может случиться, что в промежуточных кадрах рука, вместо того чтобы опускаться, вдруг начинает подниматься. Подобное происходит, если ключевые кадры задаются довольно редко — через несколько десятков кадров. Реально за это время рука человека могла бы подняться и опуститься несколько раз, и оно превышает предусмотренное настройками программы, учитывающими темп движения реального человека, который делает шаг, поднимает или опускает руку менее чем за полсекунды, что составляет 7—12 кадров. По этой причине кривая на отрезке в несколько десятков кадров может неоднократно максимально отклониться от нулевой точки в сторону как положительных, так и отрицательных значений. Это означает, что рука будет не только подниматься и опускаться, но и отклоняться назад. Есть несколько способов преодолеть эту проблему. Самый простой — устанавливать ключевые кадры через каждые 4—10 кадров. Более точно значение определяется темпом движения в анимационной сцене. И эти ключевые кадры нужно задавать не тогда, когда сцена уже построена, а только приступая к ее созданию.

Построение анимационной сцены

Рассмотрим пример, который может быть полезен тем, кто хочет научиться создавать свои анимационные сцены в Poser 6.

По умолчанию при каждом запуске программы Poser 6, если вы не открываете ранее сохраненный документ и не изменяли установки диалогового окна General Preference, в центре сцены появляется фигура James. Первоначально фигура отображается камерой Main и видна в окне лишь частично. Воспользуйтесь панелью управления камерами и с ее помощью переместите изображение вглубь (на самом деле вы перемещаете камеру, но эффект будет именно таким). Обращайте внимание на вид управляющих кнопок панели, он подскажет вам, куда именно будет перемещаться изображение — вглубь, вверх или в сторону. Чтобы видеть всю сцену, переключайтесь на камеру Aux. Удобнее всего это сделать посредством контекстного меню, вызываемого нажатием на правую кнопку мыши или командой меню Display • Camera View • Aux Camera. Первоначально эта камера, как и главная, направлена в точку с нулевыми координатами (центр сцены), но под другим ракурсом: она приподнята над сценой и находится на некотором удалении от ее центра и сбоку.

На панели управления анимацией вы видите число 30. Это означает, что ваша сцена по умолчанию будет длиться в течение 30 кадров, или одной секунды при частоте 30 кадров в секунду. Щелкните по этой области и установите другое значение, например 60; для первой анимационной сцены этого вполне достаточно.

Для сведения: по умолчанию программа настроена на стандарт телевидения, распространенный в США, Японии, Латинской Америке — 30 кадров в секунду. Эта частота также используется при показе видео на экранах мониторов компьютера и в компьютерных играх. В стандартах телевещания России, большинства стран Азии, Африки и Европы применяется другая частота — 25 кадров в секунду. В роликах, создаваемых для Интернета, устанавливается частота 12 или 15 кадров в секунду.

Самый простой способ создания анимационной сцены предполагает использование библиотеки поз. Иначе говоря, программа автоматически выстраивает анимационную сцену при смене поз фигуры от одного к последующим ключевым кадрам. Дальнейшие действия выполняйте по пунктам (сцена «Кошка умывается»).

  1. Выделите фигуру James и нажмите клавишу Delete (удалить). Подтвердите решение об удалении фигуры из сцены в появившемся диалоговом окне.
  2. Обратитесь к панели Library (библиотека, она находится справа), далее к разделу Figures (фигуры), затем к категории Animals (животные). Найдите изображение Cat (кошка) и двойным щелчком введите в сцену эту фигуру.
  3. Вновь перейдите к панели Library и далее к разделу Poses (позы), категориям Animal poses (позы животных) и Cat. Щелкните дважды на изображении с позой №8, после чего фигура кошки в сцене должна принять аналогичную позу (рис. 3, кадр слева).
    Рис. 3. Кадры анимационной сцены «Кошка умывается». Посредине один из промежуточных кадров, образованный автоматически
  4. Желтый ползунок на панели контроля за анимацией передвиньте на 30-й кадр.
  5. Дважды щелкните на изображении с позой №9 и поменяйте позу животного (рис. 3, кадр справа).
  6. Передвиньте ползунок панели контроля за анимацией к 60-му кадру. Щелкните дважды на какой-либо из поз под номерами 1, 2 или 8.
  7. Просмотрите анимационную сцену: команда Play панели контроля за анимацией. Кошка должна приподнимать лапу, как бы умываясь, и принимать другую позу.
  8. Чтобы записать анимацию и сохранить ее как видеофайл, выберите команду меню Animation • Make Movie. Далее в появившемся диалоговом окне следует задать установки по качеству, режимам записи и выбрать алгоритм сжатия видеоматериала.

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

На диске вы найдете анимационную сцену, соответствующую приведенному выше примеру.


1Во время подготовки статьи вышла в свет новая, седьмая версия редактора Poser.


Основные управляющие элементы программы Poser

Программа Poser допускает изменение внешнего вида рабочего поля. Чтобы переместить, например, панель управления освещением, нужно подвести курсор к надписи над панелью управления Light Control и, удерживая левую кнопку мыши в нажатом состоянии, перетащить данную панель в другое место рабочего поля.

Рабочее поле (окно) программы Poser 6

Основные элементы управления программой
  1. Кнопка выбора фигуры.
  2. Кнопка выбора элементов фигуры, источников света, камер, объектов.
  3. Включение или выключение тени на грунте (не влияет на рендеринг).
  4. Переключение режимов Box Tracking, Fast Tracking, Full Tracking. В режиме Box Tracking (блочная протяжка) вместо элементов фигуры на экране отображаются блоки, из которых она состоит. В режиме Full Tracking (полная протяжка) картинка всегда представлена в том виде, который определяется установками панели Document Display Style (стиль отображения документа). Работа в этом режиме нагляднее, но он более требователен к ресурсам компьютера. Fast Tracking - режим быстрого преобразования. Для него характерно, что в статичном состоянии картинка имеет вид, соответствующий режиму Full Tracking. В иных случаях (изменение положения камеры, фигуры или ее элемента, просмотр анимации) сцена отображается, как в режиме Box Tracking.
  5. Выбор вариантов отображения сцены несколькими или одной камерой.
  6. Панель Editing Tools (инструменты редактирования). Назначение некоторых инструментов понятно из самого их названия: Rotate (наклон), Twist (поворот, закручивание), Translate (перемещение). Однако эти инструменты не точны, их лучше использовать для быстрого выбора фигуры или объекта. Для полноценной работы предпочтительнее пользоваться дисковой панелью управления параметрами.
  7. Панель Document Display Style (стиль отображения документа) управляет видом фигуры, отображаемой в окне документа. Имеет три режима: Document Display Style, Figure Styles (стили отображения фигуры) и Element Styles (стили отображения элемента). С ее помощью можно задать 12 стилей отображения вида сцены, фигуры и элемента фигуры в окне документа. Из них наиболее эффектны стили Cartoon (мультипликация) и Texture Shaded (буквально - оттененная текстура, крайняя правая кнопка соответствующей панели), результаты их применения можно увидеть на рисунке с кошками.
  8. Панель управления анимацией (Animations Control) имеет интуитивно понятные элементы управления, аналогичные тем, что имеются у видеомагнитофона.
  9. Кнопки управления камерами - аналог панели Camera Controls.
  10. Дисковая панель управления параметрами (Parameter Dials) позволяет управлять любыми параметрами любых объектов, фигур и их элементов, которые имеются в сцене.
  11. Диалоговое окно свойств (Properties) позволяет устанавливать функции и некоторые режимы отображения объектов и фигур: прозрачность, привязку к другим объектам, тени для источников света и др.
  12. Цвет грунта Ground (грунт отображается на экране посредством команды меню Display • Guides • Ground Plane).
  13. Цвет фона. Он нужен лишь в том случае, когда в качестве фона не используется изображение или видеофайл и отсутствует небесное окружение.
  14. Панель управления освещением Light Controls, как следует из названия, предназначена для управления светом. При желании сцена пополняется новыми источниками света (ИС), для которых задаются различные свойства и функции: положение в пространстве, интенсивность, цвет, тип (бесконечно удаленный ИС, источник местного освещения и т.п.), слежение за объектом, разрешение на изменение свойств ИС во времени и др.
    Изображения в режимах Cartoon (три варианта слева) и Texture Shaded
  15. С помощью панели Camera Controls можно управлять камерами - двумя основными (Main и Aux) и одиннадцатью вспомогательными. Камеры допустимо перемещать в пространстве, изменять их свойства, например длину фокусного расстояния объектива или увеличение, задавать функцию слежения за объектом и др.
  16. Libraries - библиотеки основных элементов и их свойств, содержащие восемь разделов для управления такими элементами сцены, как фигуры и их отдельные фрагменты (лица, волосы, руки и т.д.), позы, объекты (мебель, одежда), свет и камеры.