Иллюстрированный самоучитель по анимации персонажей в 3ds max

         

Алгоритм применения модификатора Physique


1. Выделите все объекты сетки, из которых состоит персонаж.

2. Примените модификатор Physique к объектам сетки.

3. Примените операцию Attach to Node (Присоединить к узлу), щелкнув по тазовой области заранее подогнанного объекта Biped.

4. В свитке Vertex - Link Assignment (Вершина - назначение звена) выберите опцию Rigid (Твердый).

5. Отмените режим Figure для объекта Biped и примените к нему анимацию.

6. Настройте веса сетки персонажа: измените параметры Envelope (Оболочка) в свитке подобъектов модификатора Physique и введите весовые значения отдельных вершин.

7. Включите и выключите режим Initial Skeletal Pose (Исходная скелетная поза), чтобы увидеть результат задания весов.

8. Сохраните задание весов в файле с расширением .phy.

 



ЗАДАНИЕ ВЕСОВ СЕТКИ ПЕРСОНАЖА ВРУЧНУЮ С ПОМОЩЬЮ РЕДАКТИРОВАНИЯ ВЕРШИН


ЗАДАНИЕ ВЕСОВ СЕТКИ ПЕРСОНАЖА ВРУЧНУЮ С ПОМОЩЬЮ РЕДАКТИРОВАНИЯ ВЕРШИН

Типичный персонаж игры

Алгоритм применения модификатора Physique

Применение и инициализация модификатора Physique

Присвоение вершин звену

Ввод весовых значений

Отмена привязки вершин к звеньям Настройка области локтя

Работа над рукой и пальцами

Сохранение весовых значений

Определение шеи, плеч и туловища

Задание весов второй ноги

Загрузка BIP-файла в объект Biped

Закрепление бедер

Настройка руки с оружием

Резюме

 



Настройка области локтя


У персонажа Betty на плечах большие эполеты, поэтому прилагать много усилий, чтобы настроить веса области плеч - а обычно на это уходит много времени, - не нужно. Определять, какими должны быть весовые значения локтя, лучше всего экспериментальным путем. На область центра локтя в большей степени должно влиять звено Upper Arm (Предплечье) -область его влияния также может находиться немного ниже (сравните с бедром и коленом). На вершины, находящиеся выше локтя, предплечье будет влиять в меньшей степени.

Если есть уверенность в том, что два звена будут вместе влиять на некоторый набор вершин, как, например, локоть, присвойте им одинаковые веса (значение 1 родительскому звену и значение 1 - дочернему). Конечно, эти значения для разных вершин различны (они будут уточнены позднее в процессе задания весов), но таким способом можно быстро одновременно присвоить вершины правильным звеньям. А опция отображения Currently Assigned Links Only (Только назначенные звенья), устанавливаемая по умолчанию, при настройке значений принесет только пользу, поскольку будут отображены лишь нужные два звена.

Увеличьте масштаб области локтя и выделите только те вершины, из которых он состоит. Вызовите диалоговое окно Type-In Weights, щелкните по пункту All Links и присвойте вершины звену Betty R Forearm, щелкнув по нему и введя значение 1 (вершины станут темно-зелеными). Включите и выключите режим Initial Skeleton Pose, чтобы посмотреть, как изменение весовых значений влияет на локоть (рис. 3.26).

К сожалению, в списке в диалоговом окне Type-In Weights звено Forearm (Предплечье) располагается не сразу после звена Upper Arm. После него идут несколько звеньев, которые являются дочерними от Forearm. Будьте осторожны и не присвойте веса звену Hand (Рука) вместо Forearm (рис. 3.27)

Результат задания весов выглядит неплохо, но оба звена одинаково влияют на все вершины, поэтому жесткость геометрии, которая должна была изображать толстый налокотник, умаляется. Внесите некоторые изменения. Включая и выключая режим Initial Skeletal Pose, можно приблизительно оценить, как нужно изменить значения весов вершин. Например. на вершины в верхней части локтя предплечье должно влиять в меньшей степени, тогда форма локтя сохранится лучше, а вершины нижней части локтя должны подвергаться действию этого звена в большей степени. Снова включите режим Initial Skeletal Pose и попробуйте применить значения весов локтевой области, показанные на рис. 3.28.




Рис. 3.26. Звенья UpperArm и Forearm одинаково влияют на локоть



Рис. 3.27. Неожиданное расположение звена Forearm может сбить с толку



Рис. 3.28. Веса локтя нужно больше сместить в сторону звена UpperArm

Теперь локоть согнут, он выглядит лучше, а форма налокотника не деформируется (рис. 3.29).

Указанным способом устраняются проблемы задней части локтя, но нужно изменить и переднюю часть геометрии возле сустава (нижнюю часть области бицепсов). Если задать веса 1 и 1, то при сгибе руки бицепс станет сжиматься - он не будет создавать выпуклости. Однако если сместить веса вершин к звену UpperArm, геометрия предплечья будет выглядеть неестественно (рис. 3.30).

Правильная деформация предплечья должна уменьшить контраст локтевого соединения; перенесите часть влияния от вершин предплечья на звено UpperArm. Оно не должно быть большим и для разных персонажей может различаться. Выделите три вершины в верхней части согнутой руки Betty, заблокируйте их и добавьте звено Betty R UpperArm к звеньям, влияющим на эти вершины. Подойдет значение 0,1 (рис. 3.31).

Подобное перераспределение весового влияния между соседними звеньями необходимо, чтобы обойти недостаток большинства алгоритмов автоматического задания весов во многих программах, в 3ds max это Physique. При деформации полигональной сетки такие области, как локти, колени, запястья, лодыжки, шея и даже плечи и бедра, будут полностью аналогичны своему естественному оригиналу, только если система задания весов вершин верна. Однако не забывайте, что вышесказанное относится только к играм в реальном времени; чтобы моделировать движение кожи и мышц визуализированных персонажей фильмов, применяются различные типы сложных скелетных и мускулатурных алгоритмов.



Рис. 3.29. С новыми весовыми значениями локоть выглядит лучше



Рис. 3.30. Смещение передней части локтевого сустава к звену UpperArm приводит к странной деформации



Рис. 3.31. Если добавить звено UpperArm к звеньям, которые влияют на эти вершины, то деформация предплечья улучшится

 

Настройка руки с оружием


Скройте все объекты, а затем отобразите сеточный объект m_gunarm. Активизируйте окно проекции Right. Под этим углом зрения объекта видно, что нужно поправить (рис. 3.55).

Выделите объект, откройте свиток подобъекта Sub-Object модификатора Physique и включите для объекта режим Initial Skeletal Pose. Выделите все вершины, из которых состоят элементы сетки левого предплечья: рука, ствол оружия и даже цилиндр, покрывающий локоть. Измените точку обзора, если это необходимо.

Если сначала включить режим Initial Skeletal Pose, а затем выбрать еще один объект сетки - корневой элемент Physique или другой подобъект Physique, - то сетка останется в исходной скелетной позе.

Не выделяйте вершины, принадлежащие элементу плеча, выделите лишь первые несколько вершин ленты, которая заброшена в рюкзак. Присвойте все вершины звену Betty L Forearm и выключите режим Initial Skeletal Pose, чтобы увидеть результат (рис. 3.56).


Рис. 3.55. Что это?


Рис. 3.56. Рука выглядит гораздо лучше, если вершины присвоены звену L Forearm

Скройте присвоенные вершины; выделите вершины элемента плеча и присвойте их звену Betty L Forearm. Затем скройте и их тоже: теперь можно приступить к действительно сложной области - ленте соединения.

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

Геометрия соединительной ленты - замкнутая структура, исходящая из рюкзака и входящая в предплечье. К сожалению, в качестве весового звена этой части геометрии нельзя использовать дополнительный набор костей. Если бы кости были привязаны к спине или плечу, они бы не перемещались вместе с рукой. Если бы они были связаны с рукой, то потеряли бы связь со спиной (рис. 3.57).


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

Чтобы решить эту задачу, не имеет смысла добавлять дополнительные кости, нужно осторожно разделить веса между звеньями Betty L Forearm и Betty L Spine2, игнорируя звено Betty L UpperArm. Поверните точку взгляда, чтобы смотреть на персонаж снизу и слева, и перейдите к кадру 6 анимации. Выделите все оставшиеся вершины объекта m_gunarm, которые и формируют ленту, и присвойте их звену Betty Spine2 (рис. 3.58).


Выделите все вершины, кроме четырех, касающихся рюкзака, вызовите окно Type-In Weights и присвойте эти вершины звену Betty L Forearm с весом 0,5 (рис. 3.59).



Рис. 3.58. Присвойте оставшиеся вершины соединительной ленты звену Betty Spine2



Рис. 3.59. Вначале задайте одинаковое влияния звеньев Spine2 и Forearm на все вершины

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

Очевидно, что оставлять геометрию в таком виде нельзя, но, по крайней мере, два звена, которым нужно присвоить вершины, уже выбраны, а их относительные влияния приблизительно настроены. Включите для сетки режим Initial Skeletal Pose и начните с ряда вершин, который находится в верхней части соединительной ленты рядом с плечом. Поверните точку взгляда так, чтобы четко видеть ряд вершин, и измените их значения с 0,5 на 0,05 (рис. 3.60).



Рис. 3.60. Поверните точку взгляда так, чтобы четко видеть ряд вершин, которые нужно настроить

Переходите от одного ряда вершин к другому вниз, пока каждому из них не будут присвоены значения, показанные на рис. 3.61.

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



Рис. 3.61. Весовые значения соединительной ленты сдвинуты к звену Spine2



Рис. 3.62. Оставшаяся часть соединительной ленты смещена к предплечью

Отобразите остальные скрытые объекты сетки Betty и посмотрите, какой ровной она стала (рис. 3.63).



Рис. 3.63. Betty готова к действию!

Загрузите файл Betty07.max и сравните результаты вашей работы с фигурой из этого файла.

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

 

Определение шеи, плеч и туловища


Скройте m_headarmleg и отобразите скрытые объекты m_torso, m_energy, m_fanvent и все объекты Biped типа Spine, затем активизируйте окно проекции Right (рис. 3.37).


Рис. 3.37. Даже объекты сетки туловища должны быть бронированными, то есть твердыми

Начните с шеи. Голова является отдельным объектом, поэтому веса шеи и головы проще задавать вместе. Если шея присоединена к туловищу, то для определения весовых значений требуется больше операций с полигонами и времени. Увеличьте масштаб верхней части шеи, выделите ее вершины и присвойте их звену Betty Head. Отобразите скрытые объекты головы Biped и объект m_headarmleg и проверьте деформацию (рис. 3.38).

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

Отмените выполненные повороты и вновь скройте объекты m_headarnileg и Betty Head. Скройте присвоенные вершины шеи, активизируйте окно проекции Front и выделите все вершины рядом с правым плечом. В эту область выделения не должны входить элементы рюкзака (например, m_fanvent или m_energy). Присвойте выделенные полигоны звену Betty R Clavicle (рис. 3.39).

Если плечо связать с ключицей, то его подвижность станет мала, но ведь Betty будет носить тяжелое вооружение, поэтому в анимации плечо и должно оставаться практически неподвижным. Скройте присвоенные вершины и вернитесь в окно проекции Right. Убедитесь, что выделены все три объекта сетки (m_energy, m_fanvent и m_torso), и присвойте вершины рюкзака и верхней части туловища звену Betty Spine2 (рис. 3.40).


Рис. 3.38. На верхнюю часть шеи влияет только голова, так что щель между объектами будет незаметно


Рис. 3.39. Присвойте вершины эполета (1) звену Betty R Clavicle /A)


Рис. 3.40. Вершины рюкзака и верхней части туловища (2) присвоены звену Spine2 (В)

Рюкзак и верхняя часть туловища практически не должны двигаться, поэтому все вершины присвоены второму звену позвоночника, а третье звено не оказывает влияния вообще. Неподвижность туловища и рюкзака достигается присвоением одному звену как можно большего числа вершин. Но в позвоночнике есть четыре звена, поэтому некоторые вершины нижней части рюкзака и туловища можно присвоить звену Spine1, родительскому элементу Spine2 (рис. 3.41).


Звено Spine2 было ранее выбрано в качестве звена для вершин рюкзака, так как звену Spine1 тоже будут присвоены вершины, а выбранное звено лучше Spine3, поскольку оно находится ближе к той геометрии, которую должно деформировать.

Теперь нужно изменить еще и веса вершин талии, чтобы убедиться, что при наклонах и поворотах туловища они будут деформироваться правильно. Выделите лишь два ряда вершин, только что присвоенных Spine1, вызовите окно Type-In Weights и назначьте эти вершины также звену Spine. Убедитесь, что звену Spine2 не присвоены вершины рюкзака (рис. 3.42).



Рис. 3.41. Вершины группы 3 присвоены звену С, то есть Spine 1



Рис. 3.42. Если на вершины талии влияют звенья Spinel и Spine, то деформация будет плавной

 

Отмена привязки вершин к звеньям


Левая нога и голова готовы для анимации, пришло время задать веса руки. Но сначала покажем еще один подход к тестированию задания весов -с помощью анимации костей руки. Отобразите скрытые объекты Biped, из которых состоит правая рука Betty. Щелкните по ее предплечью и выключите режим Figure. Активизируйте трансформацию поворота и, находясь в кадре 0, задайте ключевой кадр для поворота звена Betty R Forearm, нажав кнопку Set Key (Установить ключ) в свитке управления Biped (рис. 3.21).

Затем активизируйте кнопку Auto Key (Автоматическое создание ключей)

(она станет красной), перейдите к кадру 5 и, не отменяя выделения предплечья, поверните его на -75° относительно оси Z (рис. 3.22).


Рис. 3.21 С помощью кнопки Set Key для выделенного объекта Biped создается ключевой кадр


Рис. 3.22. Сгибая руку вне режима Figure, можно протестировать задание весов сетки

На этом рисунке, очевидно, что-то не так. Активизируйте окно проекции Front и еще раз выделите сетку персонажа. Откройте панель Modify и выделите все вершины элемента правой руки. Активизируйте кнопку Remove From Link (Удалить из звена), щелкнув по ней, перетащите рамку выделения вдоль ноги и туловища и отпустите кнопку мыши (рис. 3.23).


Рис. 3.23. Если выделить эти звенья, то они больше не будут влиять на выбранные вершины

На вершины руки, которые ранее были вытянуты и деформированы, ненужные звенья больше не влияют, и теперь вершины привязаны к правильным объектам. Снова скройте все объекты, кроме m_headarmleg. и активизируйте подобъект Vertex модификатора Physique.

Задайте анимацию для объекта Biped и посмотрите, где возникают проблемные области, когда сетка деформируется при движении. Это еще один способ проверить задание весов сетки персонажа. Он выполняется примерно так же, как и в случае со сгибанием руки, что описано выше. Однако если в анимации нет кадра «покоя», такого как кадр 0 для руки, то переключать сетку персонажа из анимированного состояния в неанимированное можно другим способом: включая и выключая режим Initial Skeletal Pose (рис. 3.24).

Включите режим Initial Skeletal Pose, поставив напротив его названия галочку, затем продолжайте задавать веса правой руки. Сначала присвойте все вершины плеча (до нижней части локтя) звену Betty R UpperArm (рис. 3.25).


Рис. 3.24 Включая и выключая режим Initial Skeletal Pose, можно переходить от анимированного состояния к неанимирсванпому


Рис. 3.25. Присвойте все вершины плеча звену UpperArm

 



Применение и инициализация модификатора Physique


Загрузите файл Веttу06.тах. переведите Biped в режим Figure, нажмите клавишу Н, чтобы вызвать окно со списком названий объектов, и выделите все объекты вида m_ (рис. 3.1).


Рис. 3.1. Выделите все объекты сетки, к которым должен быть применен модификатор Physique

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

Выделив объекты, откройте панель Modify (Модификация) с помощью соответствующей пиктограммы

и назначьте им модификатор Physique. Инициализируйте Physique, щелкнув по кнопке Attach to Node в свитке Physique, - она станет активной (рис. 3.2).


Рис. 3.2 Чтобы инициализировать модификатор Physique, щелкните по кнопке Attach to Node и активизируйте ее, затем щелкните по объекту Pelvis Biped

Увеличьте масштаб так, чтобы тазовую область Biped было проще выбрать. Щелкните по ней - появится диалоговое окно Physique Initialization (Инициализация телосложения). Ничего не меняйте, кроме переключателей в разделе Vertex - Link Assignment. Выберите Rigid (рис. 3.3).

Если выбран переключатель Deformable (Деформируемый), то оболочки, звенья или вершины можно изменить на Rigid позднее. Однако, выбрав Rigid во время инициализации, вы сэкономите время.

Щелкните по кнопке Initialize (Инициализировать); возможно, придется подождать несколько секунд, пока программа выполнит задание весов. После этого внутри сетки появится фигура человека (рис. 3.4).


Рис. 3.3. Большинство значений по умолчанию в диалоговом окне Physique Initialization подходят для задания весов нашего персонажа


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

Движки игр в реальном времени не могут присваивать сетке вершины типа Deformable, поэтому при экспорте из 3ds max эти вершины обычно преобразуются в Rigid. Из-за тех же ограничений параметры основанной на сплайнах деформации Physique, которые находятся в подобъектах Link, Bulge (Бугор) и Tendon (Сухожилие), нельзя использовать таким же способом, как для высокополигоналъного персонажа.

Щелкните правой кнопкой мыши в любом месте окна проекции, затем в контекстном меню Quad (Квадрант) выберите пункт Hide Unselected (Спрятать невыделенное). На экране останутся только объекты сетки (рис. 3.5).

 



Присвоение вершин звену


Сначала лучше задать веса более простых объектов (или элементов объекта), которые затем можно скрыть. Это значит, что объект необходимо отделить от остальных, а звено, которому нужно присвоить вершины, должно быль легко различимо. В случае с Betty первым в очереди стоит объект m_gun. Выделите его и нажмите в стеке модификаторов на маленький значок плюс (+) рядом с пунктом Physique. Появятся доступные подобъекты. Выберите Vertex (Вершина), в выпадающем списке Blending Between Links (Разделение между связями) измените N Links (N связей) на No Blending (Нет разделения) и активизируйте кнопку Select (Выделить), щелкнув по ней (рис. 3.6).

Выделите все вершины объекта m_gun и щелкните по кнопке Assign to Link (Присвоить звену), она станет активной. Задайте тип Vertex как Rigid (зеленый значок + в разделе Vertex Type (Тип вершины)) и присвойте вершины левому предплечью, щелкнув по нему (рис. 3.7).

Чтобы завершить переопределение вершин, нужно щелкнуть по кнопке Lock Assignment (Заблокировать назначение). Если вершины заблокированы, то они останутся присвоенными тому звену, какому нужно, даже если затем настраивать оболочку или задавать значения весов для других звеньев (рис. 3.8).

Скройте все объекты, кроме m_headarmleg, и приступайте к заданию его весов.

Если в модификаторе Physique активен режим выделения подобъекта Vertex, вызвать контекстное меню Quad, щелкнув правой кнопкой мыши, не удастся. Нужно выйти из режима Sub-Object: щелкните по пункту Physique - он станет активным уровнем в стеке. Теперь, если щелкнуть правой кнопкой мыши еще раз, то появится контекстное меню Quad.


Рис. 3.5 С помощью контекстного меню Quad в 3ds max очень просто скрыть или заморозить объекты


Рис. 3.6 Чтобы настроить весовые значения, нужно открыть свиток редактирования одного из подобъектов модификатора Physique

Начните с элемента головы сетки, так как он самый простой. Выделите все его вершины, убедитесь, что вместо N Links задан вариант No Blending, и присвойте вершины звену Betty Head (рис. 3.9).


Затем переходите к кончику ботинка, присвойте вершины звену Betty L Toe. Чтобы убедиться, что вершины присвоены правильному звену, воспользуйтесь командой Arc Rotate
. (рис. 3.10).

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



Рис. 3.7. Выделите вершины и щелкните по звену, которому их нужно присвоить



Рис. 3.8. Очень важно заблокировать вершины после того, как они были присвоены звену вручную



Рис. 3.9. Присвойте все вершины головы одному звену- Head



Рис. 3.10. Вершины кончика ступни можно присвоить только звену Toe



Рис. 3.11 Задав вес вершин, скройте их

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

 

Работа над рукой и пальцами


У большинства персонажей игр в реальном времени вместо пальцев -«варежки», а вместо кулаков - цельные болванки, но у Betty, в отличие от них, имеются все пять пальцев правой руки. Задание весов запястий чем-то похоже на задание весов лодыжек; выделите вершины возле сустава, и пусть оба звена Forearm и внутренние звенья Hand одинаково влияют на них.

Чтобы деформация области запястья не была слишком сильной, создайте персонаж, ладони которого тыльной стороной направлены вниз, а не в стороны. Это не сложнее чем развернуть геометрию руки, а затем развернуть только некорректные ребра (рис. 3.32).


Рис. 3.32. Иногда, чтобы получить правильную деформацию, нужно изменять геометрию, с не веса

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


Рис. 3.33. Присвойте вершины руки, начав с кончиков пальцев

Как видно из рис. 3.33, вершины в группе 1 присвоены звену А. Вершины группы 2 присвоены звену В, а вершины группы 3 - звену С. Затем, выделяя только вершины суставов пальцев, разделите их влияние со звеном, которое является родительским для присвоенного.

Если вызывать окно Type-In Weights, в котором выбрана опция All Links, то звено, которому присвоены выделенные вершины, автоматически подсветится: так его проще увидеть среди других. Однако если выделенное звено находится внизу списка, character studio выполнит прокрутку в нижнюю часть окна. Если вершины сначала присвоены конечному звену пальцев и вы двигаетесь внутрь по направлению к родительскому элементу, то родительское звено, которое должно разделять влияние над выделенными вершинами, будет отображаться над выделенным звеном в списке звеньев. Если сначала вершины были присвоены родительскому звену, то дочернее будет располагаться под отображаемым списком и вам придется прокрутить список, чтобы увидеть дочернее звено для выделенного (рис. 3.34).




Рис. 3.34. Если вы вводите значения для набора родительских и дочерних звеньев, то сначала присвойте вершины дочернему, а не родительскому звену

В character studio названия звеньев дублируются, поэтому у каждого персонажа есть несколько звеньев Hand. Чтобы отличить их друг от друга, посмотрите на список звеньев под каждым из них. Разделите влияние самых верхних суставов пальцев Betty со звеном Hand, находящимся в списке в окне над звеном, которому были присвоены вершины.

Задавая веса вершин вручную, вы часто сначала выделяете набор вершин, вводите их веса по отношению к нужным звеньям, затем выделяете следующий набор, не закрывая при этом диалоговое окно Type-In Weights. Чтобы увидеть звено, которое трудно найти в списке, активизируйте по очереди переключатели All Links и Currently Assigned Links Only. Звено выделенных вершин появится в конце длинного списка, не нужно будет прокручивать его вверх и вниз, пытаясь найти нужное звено.

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



Рис. 3.35. Большой палец немного отличается от остальных, но вершины присваиваются таким же способом

Все вершины группы 1 присвоены звену А, группы 2 - звену В, а группы 3 - звену D. Разделите влияние с нужными звеньями - и задание весов большого пальца закончено. На вершины группы 3, присвоенные звену Hand (звено D), может влиять и звено Betty R Finger0 (звено С). Отобразите все скрытые объекты пальцев Biped правой руки и проверьте задание весов.

 

Научившись правильно задавать веса сетки


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

Чтобы применить модификатор Physique к сетке, инициализируйте его, активизировав функцию Attach to Node и щелкнув по тазовой области Biped, затем выберите опцию Rigid в качестве параметра звена для вершины, а в качестве опции создания/просчета оболочки - N Links. Рекомендуется присваивать весовые значения вершинам вручную, но можно воспользоваться и оболочками, чтобы посмотреть, правильно ли они работают. Начните с задания весов тех объектов, для которых это проще сделать, тогда их можно будет скрыть, убрав из рабочей области. Особое внимание уделите областям плеч и бедер сетки, убедитесь, что в различных позах персонаж деформируется правильно. Проверьте результат присвоения весовых значений, применив на Biped простую анимацию и переключаясь между исходной скелетной позой и анимированным состоянием. И наконец, сохраните параметры для экземпляра на тот случай, если сетку нужно отделить, а затем вновь присоединить к Biped.

 

Сохранение весовых значений


В большинстве случаев лучший способ сохранить весовые значения - сохранять последовательные версии сетки в процессе работы. Сохраните их в файле с расширением .phy - и, воспользовавшись им при необходимости, вы легко восстановите задание веса. Для этого щелкните по пиктограмме Save Physique (*.phy) File (Сохранить файл телосложения) -рис. 3.36.


Рис. 3.36 Сохраните файл модификатора Physique на всякий случай, например для использования в дальнейшем

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

Иногда при работе со старыми файлами Biped или файлами 3ds max объект Biped использует имена из предыдущей версии character studio. Это значит, что все звенья Biped будут названы в соответствии с дочерним звеном (находящимся на одну строку ниже), а не в соответствии с той костью, к которой они относятся.

 



Типичный персонаж игры


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

 



Ввод весовых значений


Выделите вершины ступни, как показано на рис. 3.12, перетащив вдоль них рамку выделения.


Рис. 3.12. Выделите и присвойте вершины ступни

Присвойте вершины звену Betty L Foot, а затем выделите только те из них, которые располагаются там, где будет лодыжка. Чтобы вызвать диалоговое окно Type-In Weights (Ввод весов), щелкните по кнопке Type-In Weights в свитке Vertex (рис. 3.13).


Рис. 3.13. Диалоговое окно Type-In Weights можно вызвать, только если вершины заблокированы

По умолчанию при работе в этом окне на экране отображаются только те звенья, которым присвоены вершины. Чтобы увидеть все звенья, щелкните по переключателю All Links (Все звенья). Иначе нельзя будет присвоить вершины лодыжки звеньям Foot (Ступня) и Calf (Икра). Выделите звено Betty L Calf, щелкнув по нему, и введите в поле Weight (Вес) значение 1 (рис. 3.14).


Рис. 3.14 На вершину могут влиять сколько угодно звеньев

Если влияние разделено между звеньями, то значения могут быть какими угодно. Например, два звена будут одинаково влиять на вершину с весами 0,5 и 0,5 вместо 1 и 1. Однако, если присвоить одному или нескольким звеньям веса, сумма которых меньше 1, то модификатор Physique автоматически увеличит влияние одного звена или другого, чтобы суммарный вес был равен 1.

Отобразите скрытое звено Betty L Foot и поверните его относительно оси Z, чтобы проверить задание веса (рис. 3.15).


Рис. 3.15. Проверьте задание весов, повернув или переместив соответствующую кость

Нажмите сочетание клавиш Ctrl+Z, чтобы отменить поворот ступни, и скройте ее еще раз. Выделите все вершины голени, находящиеся между лодыжкой и серединой колена, и присвойте их звену L Calf (рис. 3.16).

Увеличьте масштаб области колена и выберите линию вершин, по которой соединяются звенья Thigh (Бедро) и Calf. Снова вызовите диалоговое окно Type-In Weights и введите для элемента Betty L Thigh значение 1 (рис. 3.17).


Рис. 3.16. Поч~и все вершины голени можно присвоить звену L Calf


Рис. 3.17. На колено должны влиять звенья как Thigh, так и Calf


Отобразите скрытое звено Betty L Calf, согните голень и проверьте деформацию геометрии сетки колена (рис. 3.18).



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

Колено выглядит приемлемо, но если внести дальнейшие изменения, оно будет смотреться еще лучше. Указанным вершинам колена присвойте значения, показанные на рис. 3.19.

Теперь, когда нога сгибается, геометрия деформируется правильнее, а форма колена полностью сохраняется (рис. 3.20).

Чтобы получить правильную деформацию, влияние можно распространить на любое число вершин и звеньев, какое вы посчитаете нужным, -над основным звеном или под ним.

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

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



Рис. 3.19. Лучше разделить между бедром и икрой еще несколько вершин



Рис. 3.20. Теперь колено сгибается гораздо лучше, а его форма сохраняется более точно

 

Задание весов второй ноги


Присвойте вершины правой ноги нужным звеньям, взяв за образец левую ногу, на задание весов которой уже было потрачено некоторое время. Сначала присвойте вершины элемента ноги Toe объекта m_torso звену Toe, а затем скройте их. Отобразите скрытый объект m_headarmleg и активизируйте окно проекции Front. Выделите объекты m_torso и m_headarmleg. Справа в свитке Vertex Operations щелкните по кнопке Select by Link (Выделить по звену) - рис. 3.43.

Щелкните по левому звену Foot и проверьте, чтобы не было выделено ни одной вершины на правой ступне (рис. 3.44).

С помощью кнопки Select by Link можно быстро посмотреть, какие вершины были присвоены и как. Некоторые вершины геометрии правой ступни присвоены левому звену Foot. Причина этому - поза каркаса объекта Biped. Не обращая внимания на это временное задание весов, выделите все вершины геометрии правой ступни, которая является зеркальным отражением геометрии левой ступни. Присвойте их звену Betty R Foot, затем, используя вершины левой ступни в качестве образца, введите такие же значения весов для вершин правой ступни (рис. 3.45).

Тем же способом задайте веса правого колена и оставшейся части геометрии правой ноги. Достигнув области бедра, скройте объект m_headarmleg и не забудьте присвоить вершины левого ребра звену Betty L Thigh (рис. 3.46).


Рис. 3.43 С помощью кнопки Select by Link можно выделить все вершины, присвоенные звену


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


Рис. 3.45. Задать веса одной ступни можно быстро и легко, если принять за образец вершины другой ступни


Рис. 3.46. Не забудьте присвоить вершины левого ребра звену Betty L Thigh

 



Загрузка BIP-файла в объект Biped


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

Скройте все объекты, кроме Betty Spine и m_torso. Выделите Betty Spine и откройте свиток Biped на панели Motion. He забудьте выйти из режима Figure. Щелкните по пиктограмме In Place Mode (Оставаться на месте)

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

Щелкните по пиктограмме Load File (Загрузить файл) - рис. 3.47.


Рис. 3.47 Чтобы применить анимацию BIP-файла к персонажу, щелкните по пиктограмме Load File

Загрузите файл Run.bip на объект Biped персонажа.

Щелкните по пиктограмме Time Configuration (Установки времени), которая находится в нижней части экрана справа (рис. 3.48).


Рис. 3.48. С помощью пиктограммы Time Configuration можно вызвать окно, в котором задается число отображаемых кадров


Рис. 3.49. Определите длительность анимации в полях Start Time и End Time -19 кадров (0-18)

В появившемся окне Time Configuration определите число кадров активного диапазона анимации, задав в поле Start Time (Время начала) значение 0, а в поле End Time (Время окончания) - значение 18 (рис. 3.49).

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

Перемещайтесь по анимации кадр за кадром, нажимая клавишу . (точка). Вернитесь на кадр назад, нажав клавишу, (запятая). Воспроизведите и остановите анимацию, нажимая клавишу / (слэш).


Если применить к Biped анимацию, то будет проще увидеть, как деформируются все части сетки. А если включен режим In Place, то при редактировании весов персонаж не «убежит».

Пиктограмма In Place Mode вызывает выпадающее меню, в котором можно ограничить движение только вдоль оси X, только вдоль оси Уши вдоль обеих осей одновременно (устанавливается по умолчанию). Наведите указатель мыши на пиктограмму, нажмите и удерживайте кнопку мыши и, чтобы увидеть остальные пункты, перетащите указатель вниз (рис. 3.50).



Рис. 3.50. Выпадающее меню, вызываемое при активизации пиктограммы In Place Mode

 

Закрепление бедер


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

Поместите Betty в исходную позу (включите режим Initial Skeletal Pose) и выделите все вершины вокруг бедер. Активизируйте кнопку Remove from Link, щелкнув по ней, перейдите в окно проекции Front и протащите рамку выделения вдоль всех звеньев каждой руки.

Если вы используете команду Remove from Link, нужно выбрать правильный тип вершин из трех доступных. Используются только твердые вершины, поэтому активизируйте зеленый знак + (плюс), иначе удаления не произойдет. А в выпадающем списке Blending Between Links выберите вариант No Blending (рис. 3.51).


Рис. 3.51. В разделе Vertex Type выберите цвет вершин, к которым применяется команда Remove from Link

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

Вновь включите режим Initial Skeletal Pose и на правой ягодице Betty выделите девять вершин, как показано на рис. 3.52. Разблокируйте их и присвойте им вес 1 для звеньев Betty R Thigh и Spine - последнее в диалоговом окне Type-In Weights находится прямо над первым (рис. 3.52).


Рис. 3.52. Присвойте этим вершинам одинаковое значение веса для звеньев Thigh и Spine

Если в свитке Structure каркаса Biped не отмечена опция Triangle Pelvis, то в списке не появятся два дополнительных звена Spine, которые удерживают два бедра рядом (рис. 353). Как будет показано далее, очень часто. если не всегда, эти два звена Spine работают лучше, чем звено Pelvis (Таз). и соединяют бедра друг с другом.

Снова выключите режим Initial Skeletal Pose и посмотрите, как будет деформироваться область бедер. Теперь все объекты должны выглядеть хорошо, кроме трех вершин над теми, которые только что были исправлены. Выделите их, разблокируйте и присвойте звену Spine, находящемуся над звеном Thigh (рис. 3.54).

Присвойте вершины звену Spine, затем присвойте каждую вершину звену Betty R Thigh с весом 0,5. Еще раз выключите режим Initial Skeletal Pose и проверьте с разных точек обзора, как деформируется при беге правая ягодица. Проделайте то же самое с левой ягодицей, используя правую в качестве образца. Они должны выглядеть хорошо - бедра готовы.


Рис. 3.53. Опция Triangle Pelvis весьма полезна


Рис. 3.54. Веса этих вершин нужно еще немного изменить

 



ЗАДАНИЕ ВЕСОВ ПЕРСОНАЖА С ПОМОЩЬЮ ОБОЛОЧЕК


ЗАДАНИЕ ВЕСОВ ПЕРСОНАЖА С ПОМОЩЬЮ ОБОЛОЧЕК

Работа с оболочками

Как применять модификатор Physique

Отключение ненужных оболочек

Настройка радиального масштаба оболочек

Настройка перекрытия оболочек родительского и дочернего объектов

Копирование и вставка параметров для симметричных конечностей Удаление вершин из звеньев

Задание весов вершин талии, бедер и ног

Использование окна Type-In Weights

Присвоение вершин груди

Настройка головы и лица

Резюме

 



Использование окна Type-In Weights


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

Звенья, на которые поделен палец, будут влиять одинаково на вершины, находящиеся прямо на границе между ними. Например, на рис. 4.29 звеньям зон 1-5 присвоены все вершины, лежащие внутри границ зон, а вершины, близкие к границе, находятся под одинаковым влиянием смежных звеньев.


Рис. 4.29. Чтобы правильно задать веса большого пальца, разделите его на зоны

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

 



Как применять модификатор Physique


Шаги, которые нужно выполнить, чтобы, используя оболочки, правильно применить к персонажу модификатор Physique, напоминают шаги при определении вершин вручную:

1. Убедитесь, что стеки всех объектов сетки свернуты и готовы к работе.

2. Создайте каркас Biped и включите для него режим Figure.

3. Примените к объектам сетки модификатор Physique.

4. Активизируйте функцию Attach to Node, а затем щелкните по тазовой области Biped.

5. В разделе Vertex - Link Assignment выберите переключатель Rigid.

6. Отмените для Biped режим Figure и примените к нему анимацию.

7. Настройте веса вершин персонажа, изменив параметры подобъекта Envelope в свитке управления модификатора Physique и задав весовые значения отдельных вершин.

8. Включите и выключите режим Initial Skeletal Pose, чтобы увидеть результат задания весов.

9. Сохраните значения весов в файле с расширением .phy.

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

1. Выключите все ненужные оболочки.

2. Настройте радиальный масштаб оболочек.

3. Настройте параметры Parent Overlap (Перекрытие с родительским объектом) и Child Overlap (Перекрытие с дочерним объектом) оболочек.

4. Скопируйте и вставьте нужные параметры оболочки для симметричных конечностей.

5. Удалите некоторые вершины из соответствующих звеньев.

6. В окне Type-In Weights задайте веса оставшихся вершин.

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

 



Копирование и вставка параметров для симметричных конечностей


Возможности настройки оболочек в character studio включают в себя очень хороший инструмент, позволяющий копировать и вставлять параметры звена. Им очень просто пользоваться. Активизируйте оболочку Bikini L Upper Arm, откройте раздел Edit Commands (Команды редактирования) свитка Blending Envelopes и щелкните по кнопке Сору (Копировать) - рис. 4.20.


Рис. 4.20 Параметры оболочки можно скопировать и использовать для других звеньев или оболочек

Чтобы вставить параметры оболочки, щелкните по звену Bikini R UpperArm и нажмите кнопку Paste (Вставить), которая находится рядом с кнопкой Сору.

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

Повторить настройки одной оболочки для другой не так уж сложно, однако, если параметров много и на их введение ушло немало времени, то функция копирования и вставки, существующая в character studio, очень пригодится. Есть еще один способ настройки оболочек - с помощью режимов редактирования Cross Section (Сечение) и Control Point (Управляющая точка) - рис. 4.21.


Рис. 4.21 Настройка параметров оболочки, используя режимы Cross Section и Control Point, - дополнительный способ изменения формы оболочки и последующего ее влияния на вершины звена

С помощью режима Cross Section можно перемещать поперечные сечения оболочки вдоль оси звена. Чтобы получить доступ к этой функции, щелкните по пиктограмме Cross Section: она станет активной вместо пиктограммы Links, которая активна по умолчанию. Выделите поперечное сечение на выбранном звене и переместите его, используя обычную операцию перемещения. В режиме Control Point можно захватить и перетащить управляющие точки поперечного сечения. Щелкните по пиктограмме этой функции и активизируйте ее, затем щелкните по управляющей точке - теперь ее можно переместить в нужное положение вдоль любой оси.

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

 



Настройка головы и лица


У таких персонажей, как Betty Bad, геометрия головы не имеет движущихся частей и целиком присвоена звену Head - это простое и удачное решение. Однако у таких персонажей, как Bikini, наоборот, обычно есть лицевой каркас. Для создания прически к голове могут быть присоединены кости (например, для волос, собранных в хвост), и чтобы задать веса головы, потребуется больше внимания и усилий. Вновь появляется необходимость ввода весовых значений вручную. Однако теперь, когда вы уже имеете общее представление о том, как это делается и как настраивать оболочки, можете, не концентрируясь на процессе, просто изучить конечный результат.

Загрузите файл BikiniS.max. Выделите объект головы и активизируйте подобъект Vertex модификатора Physique (рис. 4.37).


Рис. 4.37. Почти все вершины головы этого персонажа присвоены звену Head

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

Важно не забыть начать задание весов головы с присвоения всех вершин звену Head. Так можно получить основную точку отсчета и избежать случайного задания весов или нежелательного влияния оболочки на геометрию. Если голова состоит из множества объектов, как у нашего персонажа, начните с геометрии, веса которой можно задать быстрее всего, а затем скройте ее. В нашем случае первым объектом были выбраны волосы. Все их вершины были присвоены голове, даже та геометрия, которая находится около плеч и шеи (в этом случае взмахи хвоста волос незаметны и ими можно пренебречь), а объект сетки был скрыт. Следующим объектом стала геометрия рта m_mouth (рис. 4.38).




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

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

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

После работы с объектом m_mouth задаются веса самой головы, начиная с линии шеи. Для этого одновременно настраиваются значения m_head и m_body (рис. 4.39).



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

Вершины шеи, подсвеченные на рис. 4.39, находятся на стыке головы и шеи персонажа. На них одинаково влияют звенья Head и Neck. Вершинам, находящимся точно под ними, присвоено весовое значение 1 для звена Neck и 0,5 для звена Head: так гарантируется гладкая деформация этой области при повороте головы в разные стороны. На вершины, находящиеся над точкой центра трансформаций кости головы, влияют звенья Neck, Head и Jaw. Волосы можно присвоить только звену Head. А что касается челюсти, то ее вершины частично или полностью присвоены звену Jaw (рис. 4.40).

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



Рис. 4.40. Эти вершины полностью или частично связаны со звеном Jaw

Теперь приступим к глазам. Чтобы персонаж моргал, нужны лишь две кости, которые управляют каждым веком (рис. 4.41).



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

На эти вершины влияет звено Head и звенья соответствующих костей глаза (но не кости глазных яблок). Если требуется больше выразительности, нужно добавить дополнительные кости для движения бровей. Как только заданы веса геометрии век, можно отобразить скрытую геометрию волос и присоединенных ресниц и задать им такие же веса, как векам (рис. 4.42).

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



Рис. 4.41. Принимая во внимание особенности задания весов, геометрия глаза строится при закрытых веках



Рис. 4.42. Текстурные карты геометрии ресниц и волос совпадают, поэтому они принадлежат одному и тому же сеточному объекту



Рис. 4.43. Попрощаемся с девушкой Bikini

 

Настройка перекрытия оболочек родительского и дочернего объектов


Если в поле Radial Scale для звена Spine2 ввести меньшее значение, то плечо сохранит форму при анимации, однако, настраивая эту оболочку, нужно выполнить следующее. Перейдите к кадру 260 и поверните точку обзора так, чтобы видеть заднюю сторону сетки (рис. 4.15).

Откройте снова свиток Blending Envelopes и введите значение 0.4 в поле Child Overlap (рис. 4.16).

Оболочка расширится и захватит звено, находящееся ниже выделенного в иерархии звеньев. Она становится больше, чем при исходном значении 0,1, и сглаживает наблюдавшуюся ранее неестественность деформации плеча (рис. 4.17).

Однако иногда в поле Child Overlap лучше не увеличить, а уменьшить значение. Перейдите к кадру НО и посмотрите на левую руку (рис. 4.18)


Рис. 4.15. Плечо нужно еще немнсго изменить


Рис. 4.16 Параметры Child Overlap и Parent Overlap имеют решающее значение для некоторых оболочек

Чтобы исправить область локтя, в поле Child Overlap звена Bikini L Upper Arm введите значение 0 - результат представлен на рис. 4.19.

Безусловно, величина, на которую нужно увеличить либо уменьшить параметры Child Overlap и Parent Overlap, определяется типом каркаса, созданного для персонажа. Но, вообще говоря, наилучшая деформация области плеча и локтя достигается при увеличении перекрытия дочернего объекта верхним звеном Spine и уменьшении его перекрытия звеном UpperArm. А есть ли способ скопировать параметры оболочки Bikini L UpperArm на звено Bikini R UpperArm? Конечно, есть.


Рис. 4.17. Острый угол плеча пропадает, так как в поле Child Overlap звена Spine2 введено большее значение


Рис. 4.18. Кажется, что локоть вдавлен. Это происходит из-за того, что оболочка UpperArm слишком сильно влияет на него


Рис. 4.19. Если ослабить влияние на дочернее звено, то при сгибании предплечья локтевой сустав не будет вдавливаться

 



Настройка радиального масштаба оболочек


Если оболочка не включает в себя вершину, она не будет на нее влиять. Поэтому иногда нужно увеличить или уменьшить оболочку либо изменить ее так, чтобы она включала в себя (или же, наоборот, не включала) некоторые вершины. В таких областях, как плечи и бедра, оболочки работают лучше всего, если одна и та же вершина (или вершины) окружена сразу несколькими из них. В свитке подобъекта Envelope модификатора Physique имеется все, что необходимо для настройки основной формы и параметров оболочки.

Сначала щелкните по модификатору Physique вверху стека, выделите один из объектов Biped и выключите режим Figure. Выделите только объект m_body, вернитесь на панель Modify, откройте свиток подобъекта Envelope, прокрутите его до конца и активизируйте режим Initial Skeletal Pose (рис. 4.9).

Щелкните правой кнопкой мыши по сцене и выполните операцию - Hide Unselected, чтобы очистить рабочее пространство. Затем выделите два звена Breast, которые являются родительскими для конечных звеньев, выделенных ранее (рис. 4.10).


Рис. 4.9. Режим Initial Skeletal Pose доступен и в свитке подобъекта Envelope


Рис. 4.10. Эти звенья были созданы простым помещением в персонаж костей Breast

В поле Radial Scale (Радиальный масштаб) свитка Envelope Parameters введите значение 0,4. Убедитесь, что кнопка Both (Оба), находящаяся сверху, активна и имеет фиолетовый цвет (рис. 4.11).

Если опция Both активна, то исходное значение, присвоенное как внутреннему (inner), так и внешнему (outer) диапазону оболочки, умножается на число, введенное в поле Radial Scale. Исходное значение отношения внутреннего и внешнего размеров определяется во время инициализации, обычно для параметра Inner оно равно 1, а для Outer- 1,75. Таким образом, когда вводится значение 0,4, параметры внешней и внутренней оболочек умножаются на эту десятичную дробь и размер выделенных оболочек заметно уменьшается (рис. 4.12).


Рис. 4.11 Настраивая влияние оболочки, сначала задайте значение в поле Radial Scale


Рис. 4.12. Размер этих оболочек составляет 0,4 от исходного размера, поэтому они влияют на меньшее число вершин


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

Активизируйте окно проекции Front и выделите звено Bikini Spine2, которое находится прямо под шеей. Перейдите к кадру 430, переместив ползунок шкалы времени1, и выключите режим Initial Skeletal Pose. Активизируйте окно проекции Perspective, нажав клавишу Р, и поверните точку обзора так, чтобы видеть область левого плеча (рис. 4.13).



Рис. 4.13. Очевидно, что область плеча нужно исправить

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

Выделите звено Spine2 и введите в поле Radial Scale значение 0,8. Теперь область плеча слева больше похожа на настоящую дельтовидную мышцу (рис. 4.14).



Рис. 4.14. Когда влияние звена Spine2 ослабили, плечо стало выглядеть лучше

Есть и другие звенья, требующие настройки параметра Radial Scale, но мы пока говорим об области плеча и теперь познакомимся с другим способом изменения оболочки: настройкой перекрытия оболочек родительского и дочернего объектов.

 

Отключение ненужных оболочек


Загрузите файл Bikini2.max (рис. 4.1).

Этот персонаж, Bikini, состоит из 5663 треугольников. Изучите его сетку. В первую очередь в глаза бросается то, что всем объектам Biped и костям, присоединенным к Biped, присвоен материал с нулевой непрозрачностью (opacity). Поэтому сетку можно просматривать и в затененном (shaded) режиме - сплошные объекты Biped ее не закроют. Есть и другие способы сделать объект Biped прозрачным, но этот самый надежный (более подробно о нем рассказывается в главе 6).


Рис. 4.1. Просто девушка в бикини

Есть еще один способ сделать Biped менее зачетным при просмотре сетки. Выделите все объекты Biped и объекты костей, щелкните по ним правой кнопкой мыши, выберите в появившемся меню пункт Properties и отметьте опцию See-Through (Прозрачность) в разделе Display Properties (Свойства отображения) - рис. 4.2.

Таким образом, объекты становятся прозрачными, но их непрозрачность управляется программой 3ds max, а не пользователем. Это один из вариантов. Также можно присвоить объектам каркасный (wireframe) материал и просматривать их как каркасы при любом алгоритме визуализации. Существует еще один способ изменить вид объекта, который применим только к объектам. Щелкните в разделе Display для объекта Biped по пиктограмме Objects (Объекты), Bones (Кости) или Bones/Objects (рис. 4.3).

Однако при таком типе отображения возникает проблема. Если щелкнуть по одной из цветных костей, которые представляют объекты Biped, то на самом деле выбран будет дочерний элемент этой кости. Сложно также и отделить кость, чтобы щелкнуть по ней (если только сетка не заморожена).


Рис. 4.2 С помощью опции See-Through также можно сделать объекты Biped менее заметными при просмотре сетки в затененном окне проекции


Рис. 4.3 Другой способ упростить просмотр объектов сетки в затененном окне проекции - выбрать пиктограмму в разделе Display

Заметим, что звеньев Spine у этого персонажа только три, а не четыре. Причина этому - способ получения данных захвата движения (тосар), которые используются в файле формата BIP.


Выделите все объекты сетки (m_*) персонажа и примените к ним модификатор Physique. He забудьте про операцию Attach To Node.

Активизируйте окно проекции Right, в стеке Physique сделайте активным подобъект Envelope и увеличьте масштаб области головы. Осторожно выделите все звенья головы, кроме Bikini Head (рис. 4.4).



Рис. 4.4. Выделите все оболочки  звеньев головы, кроме звена Head

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

В свитке Blending Envelopes (Смешивание оболочек) в разделе Active Blending (Активное смешивание) отключите выделенные звенья, сняв флажок Rigid (рис. 4.5).



Рис. 4.5 Чтобы выключить оболочки, нужно просто снять соответствующий флажок

Программе 3ds max на обработку этого действия может потребоваться некоторое время - и, как только оболочки будут выключены, перейдите к подобъекту Vertex модификатора Physique и выделите вершины сетки головы. Теперь на них влияет только звено Bikini Head.

Существует еще один способ удалить вершины из области влияния оболочки. Выделите оболочку, откройте свиток Blending Envelopes и введите в поле Strength (Сила) раздела Envelope Parameters (Параметры оболочки) значение, равное 0 (рис. 4.6).



Рис. 4.6. Выключить оболочку можно также, введя значение 0 в поле Strength

Если обнаружится, что величина влияния оболочки уменьшена до нуля или близка к этому, просто выключите оболочку. При минимальном числе активных оболочек экономятся время обработки данных и ваши усилия.

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

Спуститесь к конечным звеньям Breast (Грудь) и выключите их (рис. 4.7).



Рис. 4.7. Оболочки Breast также не нужны



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

Если бы к объектам Breast не были привязаны объекты-пустышки направляющих (dummy Nubs), этого звена не существовало бы, а движения параллелепипедов груди не влияли бы на ее геометрию.

Осталось выключить только звено Pelvis. Активизируйте окно проекции Front, инструментом Arc Rotate поверните точку обзора так, чтобы видеть маленькое звено под звеном Spine. Выделите звено и выключите его (рис. 4.8).



Рис. 4.8. Звено Pelvis также можно выключить

Причина выключения звена Pelvis не в специфике задания весов, а в игровом движке, на который экспортируется персонаж. Так или иначе на многих игровых движках возникают трудности именно с этим звеном. Кроме тот. если в свитке Structure объекта Biped активизирована опция Triangle Pelvis, то звено Pelvis, возможно, и не нужно вовсе.

 

Присвоение вершин груди


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


Рис. 4.30. Перед заданием весов груди скройте все остальные вершины сетки

Если нужно скрыть большую часть вершин, воспользуйтесь командой Select Invert (Инвертирование выделения). Выделите те вершины, которые вы хотите оставить, откройте меню Edit (Редактирование) и щелкните по пункту Select Invert. Выделенные вершины перестанут быть таковыми, а невыделенные станут выделенными, и их можно будет скрыть (рис. 4.31).

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


Рис. 4.31 С помощью команды Select Invert можно быстро выделить и скрыть большую группу вершин


Рис. 4.32. Выделите и скройте вершины, которые принадлежат туловищу и лежат за грудью

Как только неподвижные вершины туловища будут скрыты, снова активизируйте окно проекции Front и выделите все вершины геометрии правой части груди, включая вершины геометрии области между выпуклостями груди с левой стороны. Убедитесь, что для вершин определен тип Rigid. В выпадающем списке Blending Between Links выберите No Blending и присвойте выделенные вершины звену b_rbreast_nub, которое находится в конце цепочки костей правой части груди (рис. 4.33).


Рис. 4.33. Присвойте все вершины, находящиеся внутри параллелепипеда, звену b_rbreast_nub

Центральные вершины, которые составляют узкую область между выпуклостями груди, можно присвоить любому звену' правому или левому. Добавив их на этом шаге, вы сэкономите время. Нажмите и удерживайте клавишу Alt и отмените выделение всех только что выделенных вершин. Вызовите окно Type-In Weights и введите вес, равный 1, для звена b_rbreast_nub, чтобы разделить влияние над вершинами области между выпуклостями груди (рис. 4.34).


Выделите оставшиеся вершины с левой стороны и присвойте их звену b_lbreast_nub, которое находится в конце цепочки костей левой части груди.

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



Рис. 4.34. Эти соединные вершины связаны с обеими костями груди



Рис. 4.35. Частичное присваивание этих вершин звену Spine2 уменьшит воздействие звеньев груди, что улучшит ее деформацию

Это гарантирует, что грудь не будет неестественно растягиваться при движении. Чтобы эта область стала безупречной, увеличьте влияние звена Spine1 на вершины туловища, которые находятся по обеим сторонам груди (рис. 4.36).



Рис. 4.36. Деформация груди улучшится, если присвоить эти вершины звену Spine1

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

 

Работа с оболочками


Понять, как в character studio применяются оболочки, непросто. Чтобы при задании весов воспользоваться всеми их преимуществами, потребуется не один час практики. Однако это стоит сделать, если вы работаете с высокополигональными персонажами. Присвоение весовых значений вручную обеспечивает лучший контроль над объектом, но время работы при этом увеличивается. Чтобы вручную определить веса вершин сетки из 6000 или 7000 треугольников, потребуется 50-100 ч. А на задание весов с помощью оболочек уходит 50-100 мин. Если персонажи для проекта, над которым вы работаете, имеют высокое разрешение, то вам придется освоить работу с оболочками, чтобы укладываться в определенные сроки.

 



лучший способ выполнить задание весов


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

Порядок, в котором применяется модификатор Physique и задаются веса, более важен при использовании оболочек, чем при задании весов вручную. Если модификатор Physique применяется ко всем объектам сетки персонажа одновременно, то определяемые параметры оболочек применяются ко всем объектам, даже если те скрыты или не выделены. Поэтому при работе с персонажем с высоким разрешением нужно задать как можно больше весов с помощью оболочек, и только затем вводить весовые значения вручную. Таким образом можно сэкономить время и усилия.


Удаление вершин из звеньев


Оболочки хорошо работают для определенных типов персонажей, но быстро задать нужные веса можно и другим способом - с помощью операции Remove Vertices from Link (Удалить вершины из звена).

Снова включите режим Initial Skeletal Pose, активизируйте окно проекции Тор и прокручивайте сцену или увеличивайте масштаб до тех пор, пока сетка правой руки не заполнит экран. Выделите все вершины указательного пальца, начав с его второго сустава (рис. 4.22).


Рис. 4.22. Чтобы удалить вершины указательного пальца из ненужных звеньев, выделите эти вершины

Не отменяя выделения вершин, щелкните по кнопке Remove from Links, она станет активной; убедитесь, что в разделе Vertex Type выбраны вершины Rigid (они зеленые), и протащите область выделения вдоль всех звеньев ладони, кроме двух последних звеньев указательного пальца, которые находятся прямо под выделенными вершинами. После удаления вершин из ненужных звеньев, заблокируйте эти вершины и повторите операцию для других пальцев (кроме большого).

Выключите режим Initial Skeletal Pose и проверьте анимацию - при сгибании пальцы будут деформироваться правильно (рис. 4.23).


Рис. 4.23. После удаления определенных вершин из звеньев все пальцы выглядят прекрасно, кроме искаженного большого

 



Задание весов вершин талии, бедер и ног


Задать веса талии довольно просто. Нужно лишь немного уменьшить значение в поле Radial Scale и продлить первое звено Spine до его родительского элемента - тазовой области. В окне проекции Front поместите персонаж в исходную скелетную позу, если это еще не сделано, выделите звено Spine, уменьшите значение в поле Radial Scale до 0,8 и введите в поле Parent Overlap значение 0,3 (рис. 4.24).

Увеличение оболочки Spine до тазовой области компенсирует то, что звено Pelvis отключено. Два звена, которые соединяют звено Spine со звеньями Thigh, также называются звеньями Spine, но на самом деле они служат правым и левым звеньями типа Pelvis.

В целом система присвоения имен звеньям в character studio 3 и 4 лучше, чем в character studio 2, но возможность давать избыточные названия сбивает с толку. Приводит в недоумение и решение присваивать звеньям, находящимся прямо над бедрами, а также фактически внутри бедер, имя Spine. Почему их не назвали L Hip (Бедро) и R Hip?

Две пересекающиеся оболочки Spine должны не только поддерживать форму бедер, тазовой области и ягодиц, но и перекрывать звенья Thigh. Выделите эти два звена, которые находятся прямо над звеньями Thigh. He изменяйте значения в полях Radial Scale и Parent Overlap, а значение в поле Child Overlap увеличьте до 0,7 (рис. 4.25).


Рис. 4.24. Оболочку области талии нужно немного продлить до тазовой


Рис. 4.25. Эти две оболочки заменяют звено Pelvis - и весьма успешно

Переходите к области бедер, которую нужно немного изменить. Производим операции над звеньями Thigh. Сначала уменьшите значения в полях Radial Scale до 0,8 для обоих звеньев так, чтобы оболочка левого бедра окружала меньше вершин правого бедра и наоборот. Чтобы геометрия ягодиц оказывала не слишком сильное влияние, можно уменьшить до нуля значение в поле Parent Overlap. Звено Thigh, как и UpperArm, которое нужно было отделить от звена Forearm, должно быть отделено от звена Calf, поэтому введите значение 0 и в поле Child Overlap (рис. 4.26).


Рис. 4.26. Влияние звеньев Thigh на родительские и дочерние звенья нужно значительно уменьшить


Наконец, звенья Betty L Calf и Betty R Calf нужно настроить с помощью таких же отношений родительских и дочерних объектов. Уменьшите значения для этих звеньев в полях Radial Scale до 0,8, значения в полях Parent Overlap оставьте без изменений, а в полях Child Overlap - измените на 0 (рис. 4.27).

Теперь можно перейти к ступням. Вершины на нижней стороне ступней должны быть твердыми. Они соприкасаются с землей и не будут деформироваться, за исключением тех случаев, когда нужно сгибать звено Toe. Пальцы ног персонажа Bikini не могут сгибаться, поэтому все вершины ниже лодыжки можно присвоить только звену Foot (рис. 4.28).



Рис. 4.27. Область икры и голени должна меньше влиять на дочерчие звенья


Рис. 4.28. Ступни снизу должны быть твердыми

 

Анимация на основе ключевых кадров или захват движения?


Аниматору персонажей очень важно знать, сколько времени потребуется, чтобы смоделировать реалистичное или гротескное движение. Самый важный вопрос, который нужно себе задать: «А правильно ли это выглядит?» Достигла ли анимация цели? И, что важнее, подходит ли она персонажу?

Для анимации персонажа, вообще говоря, можно применять два подхода: создание ключевых кадров (keyframe) и захват движения (motion capture, или mocap). Это утверждение несколько условно, так как в действительности все анимации основаны на ключевых кадрах. Персонаж просто невозможно анимировать, не применяя ключевые кадры.

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

 



ПОДГОТОВКА К АНИМАЦИИ


ПОДГОТОВКА К АНИМАЦИИ

Постичь сущность персонажа

Личность определяется внешним видом

Требуется уникальность

Набор анимаций

Жанр игры

Игровая среда Не забывайте о размере файла

Элементы управления персонажем

Технология игры

Анимация на основе ключевых кадров или захват движения?

Основы задания ключевых кадров

Когда нужно создавать ключевые кадры

Когда применять захват движения

Советы по захвату движения

Выполнение персонажа

Вечно движущаяся игрушка Подгонка под технологию

Резюме

 



Игровая среда


Игровая среда также влияет на набор анимаций персонажа. Будет ли персонаж летать? Есть ли водоем, в котором он будет плавать (рис. 5.4)? Есть ли в игровой динамике скалы, по которым можно будет карабкаться? Нужно ли персонажу взбираться по веревке или качаться на ней?


Рис. 5.4. Анимация плавания нужна только тогда, когда есть, где плавать

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

 



Элементы управления персонажем


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

Основной чертой Quake - первой очень удачной трехмерной fPS-игры -была быстрая смена оружия. Это значит, что когда игрок выбирает другое оружие, оно появляется в руке персонажа немедленно. Во время разработки Quake II разгорались длительные споры о том, сколько времени персонаж должен тратить на смену оружия и нужно ли это вообще. Многие жаловались, что смена происходит слишком медленно, и дискуссии свелись к разнице в десятые доли секунды. Когда игра Q3A была готова, решение анимировать смену оружия, резко опуская руку и отводя ее на некоторое расстояние от туловища, вызвало спор о том, исполнять ли это действие за 0,6 с или за 0,9 с. Победил более короткий промежуток, и игроки по всему миру торжествовали.


Рис. 5.6. Betty бежит. Betty кувыркается

 



Когда нужно создавать ключевые кадры


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

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

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

Конечно, захватить движение четвероногого животного, а затем применить его к четвероногому персонажу сложно. Обычно такие персонажи анимируются исключительно с помощью ключевых кадров. Итак, мы рассказали, когда следует использовать кадрирование, - но когда же применять захват движения?



Когда применять захват движения


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

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

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

 



Личность определяется внешним видом


Первый шаг к глубокому знакомству с персонажем - посмотреть на модель и на предварительные наброски о том, как персонаж будет действовать. Это пробудит ваше воображение, и у вас начнет складываться представление о том, как персонаж должен двигаться. Обратимся, например, к персонажу Widge. Это отрицательный герой игры Betty Bad, злое чужеродное создание, стремящееся уничтожить человечество, - но он также воин. Widge не слишком сообразителен, неизвестно даже, можно ли об этом существе говорить «он». С уверенностью можно утверждать лишь одно - что он отвратителен (рис. 5.1).


Рис. 5.1 Widge - неприятная особь мужского (?) пола

Почему же он противен? Прежде всего, он так выглядит. Widge весь покрыт шипами, он угловатый, кажется, что металлическая кожа делает его еще более бесчувственным и непреклонным и на уме у него только одно - съесть всех. Даже глаз у него красный - это вызывает ассоциации с отрицательным, опасным существом. Его внешний вид основывается на следующем описании: «Widge - пушечное мясо в игре. Он жесток, отвратителен; его собратья встречаются только стаями».

Это краткое описание, но, объединив его с моделью, можно разработать хорошую анимацию персонажа. Важно придерживаться начального описания, но не помешает также добавить больше деталей, подсказываемых вашим воображением. Widge - отрицательный герой, которому не знакомы проявления совести. Это маленький «терминатор», который не остановится, пока не будет уничтожен. Иногда ему свойственна излишняя горячность. Когда его отбрасывают назад, он летит кувырком, катится, но неизменно возвращается обратно - ведь он так хочет вас съесть (рис. 5.2).


Рис. 5.2. Widge - смелый, но гадкий и жестокий, и его анимации должны это отражать

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

Игра Betty Bad задумана как веселая и развлекательная. Это не настоящий серьезный игровой процесс, а лишь приятное времяпрепровождение. Поэтому, хотя Widge и отвратителен, он не должен быть слишком отталкивающим. Он должен соответствовать общему настроению игры. Поэтому взгляните на его дизайн еще раз. У этого персонажа есть довольно гибкий хвост, который, вероятно, должен служить ему для сохранения равновесия и для выражения эмоций, например, по-собачьи. Или же им можно размахивать из стороны в сторону перед атакой, как делает кошка. От того, как вы обработаете лишь один элемент персонажа, например хвост Widge, может зависеть отношение к персонажу и его сущность. Геометрия персонажа подсказывает адекватные анимации или даже диктует их, хотя это может быть не записано на бумаге.

 



Набор анимаций


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

 



Не забывайте о размере файла


Как только речь заходит о жанре и дизайне игры, встает вопрос и о том, какой объем памяти потребуется для персонажа; приходится оценивать, сколько будет анимаций и какого типа. Например, для игрового персонажа можно установить верхний предел 2 Мб. Размер сетки может составлять 100 Кб, текстуры - еще 300 Кб, а звуковые эффекты займут 400 Кб. И на анимации тогда останется только 1,2 Мб. Такое распределение влияет не только на объем набора анимаций, но и на их продолжительность и скорость воспроизведения. Это значит, что сверхдлинная анимация смерти займет 10 кадров, то есть персонаж успеет просто упасть, а скорость смены кадров сокращается от хорошей, 30 кадров в секунду (fps), до потенциально плохой - 15 кадров в секунду. Однако для персонажа иногда требуется набор анимаций из большого числа кадров (рис. 5.5).


Рис. 5.5. В игре Betty Bad главный персонаж имеет почти 3000 кадров анимации

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

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

Главный персонаж однопользовательской игры занимает большинство кадров анимации, но и другие персонажи, которые часто появляются в игре, не уступают ему по сложности наборов анимации (если не обгоняют). В игре Return to Castle Wolfenstein, созданной Gray Matter Interactive Studios, главный персонаж никогда не выходит за рамки межуровневых вставок, основанных на игровом движке, и ввода опций в меню, поэтому его набор анимаций меньше, чем у большинства других персонажей игры.


Другая причина, по которой набор анимаций одного персонажа может быть больше, чем другого, - практичность. Чтобы сэкономить память и поднять производительность, некоторых персонажей можно легко превратить в другие, уменьшив или увеличив их размер программными средствами и добавив или убрав некоторые детали в определенных точках сетки. Чтобы подчеркнуть индивидуальность, персонажи будут использовать собственные, присущие только им анимации, а также брать анимации из большого общего набора. Дизайнеры и художники игры Return to Castle Wolfenstein удачно комбинировали одно туловище и множество голов. Чтобы часто появляющийся персонаж Infantry и солдаты Elite Guard отличались друг от друга, головы и аксессуары случайным образом менялись. Эти персонажи в зависимости от конфигурации ссылались на различные наборы анимаций.

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

 

Основы задания ключевых кадров


Создание ключевых кадров анимации - это процесс размещения объекта или персонажа через определенные временные промежутки в различных положениях, при этом интервалы между такими промежутками заполняет компьютер, моделируя движение. В обычной мультипликационной анимации старшие художники создают ключевые кадры, а младшие заполняют кадры, находящиеся между ключевыми (tweens). Чтобы задать ключевые кадры в 3ds max 6:

 нажмите кнопку Auto Key (она станет красной);

 выделите объект, который нужно анимировать;

 активизируйте команду трансформации Move или Rotate;

 переместите или поверните выделенный объект, определяя таким образом его положение в ключевом кадре;

 продвиньтесь вперед по шкале времени и определите еще один ключевой кадр:

 подвигайте ползунок шкалы времени по ключевым кадрам в разные стороны и просмотрите анимацию;

 внесите изменения, если это необходимо.

 



Подгонка под технологию


В Q3A Джон Кармэк (John Carmack) исправил недостатки анимационной системы персонажа, создав модели из трех частей: головы, туловища и ног. Это пример технологии, поддерживающей анимационную систему так, что анимаций становится меньше.

Betty Bad была создана с помощью технологии не Quake, a WildTan-gent. Вместо тег-системы, состоящей из трех частей, анимации персонажа должны были соответствовать системе из одной части, как в Quake П. Поэтому хотя персонаж Betty Bad и не создавался для сетевых баталий, он подходит для различных ситуаций, но это достигается гораздо большим набором анимаций. У движка, в который помещена Betty, было нечто полезное, имеющееся и у большинства других движков, а именно интерполяция (interpolation). Это значит, что движок может «приказать» персонажу перейти из одной определенной позы в другую, но аниматор не потратит на это кадры. Это полезно, но все же необходимость удваивать все анимации, при которых Betty может стрелять, остается. Поэтому очень важно знать и понимать все ограничения и особенности технологии анимации, чтобы персонаж и анимации соответствовали игровому движку должным образом.

 



Постичь сущность персонажа


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

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

 



Когда персонаж построен, для него


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

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

Наконец, реализация персонажей, как и всех компонентов игры, состоит из комбинации художественного замысла и кода. Программист и аниматор должны создать такую анимационную систему, которая подходит для игры и соответствует ее замыслу. Часто успех системы зависит от того, на чем заостряется внимание и кто отвечает за задачу. Однако практически все персонажи управляются и встраиваются в игру программными средствами, которые запускают анимации, когда происходит событие. Персонажи не обращают внимания на то, что их окружает, и прилежно выполняют анимации, когда код им «приказывает». К сожалению, этот подход к выполнению персонажей не учитывает такие движения, как ускорение или замедление и другие случайные смены скорости. Однако независимо от системы важно, чтобы аниматор знал и понимал ее полностью, иначе не будет уверенности в том, что когда персонаж попадет в игру, все будет работать должным образом.

 

Советы по захвату движения


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

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

Выбирайте из нескольких студий. Позвоните в несколько студий, поговорите с менеджерами и только потом сделайте выбор. Обсудите возможные переезды, помещение для съемки и материально-техническое обеспечение всего процесса, убедитесь, что все это, а также издержки, включено в предлагаемую цену. В большинстве случаев оптическая система, такая как Vicon, предпочтительнее, чем магнитное разрешение (magnetic-resolution) или другие системы, в которых к костюму присоединяются кабели. Костюмы слишком ограничивают актеров, и определенные движения, например прыжки и т.п., при которых актер отрывается от земли, могут вызвать затруднения. Но все же данные, полученные от этих систем, обычно точнее, и время, которое уходит на получение данных, меньше. Если выбрана оптическая система, убедитесь, что студия имеет по крайней мере восемь камер. Так компенсируется эффект «потерянных датчиков», если отражающий датчик заблокирован или закрыт частью тела или реквизитом. Сотрудники выбранной студии по захвату движения должны иметь представление о том, какие инструменты вы используете (например, 3ds max и character studio). Нужно также выяснить, кто бывшие клиенты студии, и попытаться определить отношение к вам как к клиенту. Некоторые студии, например House of Moves, BioVision и Loco-Motion, имеют множество файлов захвата движения, собранных в готовых к продаже библиотеках. В character studio есть достаточно большая библиотека захвата движения. Однако ничто не сравнится с получением нужных данных путем установки сессии захвата движения.


Наймите талантливого актера. Конечно, весьма заманчиво облачиться в костюм и выполнять движения самому, но не стоит этого делать. Лучше нанять специалиста, который пройдет через все радости и горести создания анимаций. Но важнее всего визуальное представление. Вы должны иметь возможность видеть, как актер совершает движения, и ненавязчиво обращать их в те, которые нужны на самом деле. Такие студии, как House of Movies, проводят кастинги, на которых можно увидеть потенциальных актеров. Найдите того, кто отвечает всем требованиям и выполняет действия удовлетворительно. Во время съемок актеры будут обращаться к вам или к тому, кто будет их направлять, за руководством и комментариями по нужным движениям, поэтому будьте разборчивы, ведя их по анимации. Не проявляйте бестактность по отношению к актеру, который старается сделать все правильно.

Отрепетируйте движения перед съемкой. За неделю, за день, утром перед сессией и во время самой сессии прогоните каждую анимацию, прежде чем снимать ее. Чем больше времени будет на это потрачено, тем проще и быстрее вы получите нужные движения. В «Star Wars: Episode I» и других фильмах, для которых снимают большие сцены сражений, прежде чем действия попадают в фильм, они репетируются сотни раз. Относитесь к работе серьезно - репетируйте!

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


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

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

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

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

 

Технология игры


Набор анимаций персонажа может изменить основную технологию игры, но чаще анимации зависят от технологии. В играх Quake и Quake II у персонажей не было анимаций для поворотов или оглядывания назад. Если бы во время сетевой баталии вам посчастливилось увидеть другого персонажа неподвижным и он при этом оглядывался бы назад, он бы поворачивался и перемещался в одной позе, позе действия, не выходя из нее. При разработке Q3A была выполнена новая система анимаций, которая не просто поддерживает «оглядывание назад». Анимации разделены на три части: голова, туловище и ноги. При получении данных от мыши, перемещаемой игроком, сначала ответит голова, затем туловище и потом ноги. Во время стрельбы или жестикуляции в перемещение будут вовлечены все три части.

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

Решение разделить персонаж в Q3A на три отдельные части было принято потому, что независимо от выполняемого действия все анимации персонажа можно условно отнести к трем различным классам (рис. 5.7):

 нижняя часть тела (бег, прыжки и т.д.);

 верхняя часть тела (стрельба, смена оружия и т.д.);

 тело целиком (смерть, падение и т.д.).


Рис. 5.7. Анимации можно разделить на движения верхней (А), нижней (В) частей тела или всего тела (С)

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

Когда в анимациях задействовано все тело, они становятся богаче -просто выглядят лучше. Betty Bad - это игра, в которой главный персонаж виден со стороны, от третьего лица, поэтому требуется уделить больше внимания его эстетическим достоинствам, так как он постоянно находится на экране целиком.

Рассмотрев все вопросы и примерно обозначив наборы анимации, обсудим еще один вопрос: каким методом пользоваться при анимации персонажа - ключевыми кадрами или захватом движения?


Рис. 5.8. Бег Betty реализуется одним из четырех способов

 



Требуется уникальность


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

Например, Widge всегда голоден. Это очень мощный инстинкт, побуждающий его собратьев нападать и побеждать. Он живет, чтобы есть. И вполне естественно, что он ест практически все, даже своих павших собратьев (рис. 5.3).


Рис. 5.3. Схватить кусок, поднять его и проглотить - так ест злой чужеземец

Анимация поглощения пищи персонажем Widge изменила дизайн игры, повлияла на ее процесс; все в команде разработчиков Betty Bad считали, что она весьма удачна. Из-за нее персонаж время от времени останавливается, превращаясь в легкую мишень для игрока. Такого рода импровизации и эксперименты случаются в процессе анимирования достаточно часто и оказывают на игру положительное влияние. И хотя такая анимация поглощения пищи Widge сложилась, казалось бы, случайно, но на самом деле она появилась в игре потому, что персонаж должен поступать именно так. Он остался самим собой, это действие не противоречит представлению о нем, давая ощущение правдоподобия. Помните, что персонаж останется самим собой, только если вы проникли в его сущность.

 



Вечно движущаяся игрушка


Так каков же механизм, с помощью которого персонаж появляется в игровом мире? В следующий раз, играя в FPS или другую «стрелялку», посмотрите на ступни персонажей при ходьбе или беге. Несомненно, они немного сдвигаются относительно персонажа. Это обусловлено тем, что обычно анимации персонажей создаются «на месте». Проиллюстрировать связь персонажа, его анимаций и кода можно с помощью заводного игрушечного солдатика. Поднимите игрушку, заведите ее и держите над полом. Ноги солдатика двигаются, но с полом не соприкасаются. Преодоление расстояния моделируется перемещением вашей руки: игрушка не стоит на полу и не идет по нему самостоятельно. В случае персонажа игры в реальном времени роль руки исполняет код - он перемещает персонаж, запускает одну анимацию, когда происходит определенное событие, или другую, когда случается следующее, кажется, что персонаж бежит, идет, отступает в сторону или назад (рис. 5.9).


Рис. 5.9. Заводная игрушка «Солдатик Betty»

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

Согласно проведенным оценкам в игре Doom персонажи бегут со скоростью около 145 км/ч. В игре Quake скорость движения персонажей уменьшилась до 101 км/ч, а в Quake II они двигались с ничтожной скоростью 82 км/ч.

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


Расстояние между точками А и В равно всего лишь 8, 5 единицы, потому что Betty только начинает отходить назад. Расстояние между точками В и С составляет 29,3 единицы, это практически длина широкого шага Betty. Из точки С в точку D она перешагивает 33,7 единицы и вполне укладывается в шаг, как и при переходе из точки D в точку Е, расстояние между которыми равно 39,8 единицы. Расстояние между точками Е и F равно 34,1 единицы, шаг замедляется, Betty наклоняется немного вперед. Отрезок между точками В и F можно назвать полным циклом (посмотрите на левую ногу), но есть различие в расстояниях, которые будут покрыты за несколько соседних циклов. К сожалению, некоторые аспекты анимации не соответствуют действительности - они зависят от технологии и не могут ее опережать.



Рис. 5.10. Длина каждого шага от старта до финиша разная

 

Выполнение персонажа


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

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

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

 



Жанр игры


В настоящее время существует множество игровых жанров: action (боевик), strategy (стратегия), puzzle (игра-головоломка), racing (гонки), fighting (битва), adventure (приключения) и т.д. Эти жанры, в свою очередь, подразделяются на поджанры, например action от первого лица (first-person shooter - FPS) и от третьего лица (third-person shooter); гонки, в которых игрок смотрит на машину сверху («top-down» view racing games) или управляет ею изнутри, то есть находится в машине («in the car» racing games). Когда заходит речь о персонажах игр в реальном времени, то в первую очередь имеются в виду игры action, такие как Quake, Unreal или Betty Bad. Персонажами игры в реальном времени являются и Luigi из игры Luigi's Mansion, выпущенной Nintendo's GameCube, и солдат X-Wing из игры Rogue Squadron II: Rogue Leader, разработанной для вселенной Star Wars.

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

 бездействие (Idle);

 бег (Run);

 бег назад (Backpedal);

 ходьба (Walk);

 прыжок (Jump);

 приседание (Crouch);

 передвижение на корточках (Crouch walk);

 бросок влево (Strafe left);

 бросок вправо (Strafe right);

 стрельба (Shooting attack);

 рукопашная атака (Melee attack);

 смена оружия (Change weapon);

 насмешка (Taunt);

 получение повреждения (Pain);

 смерть (Death).

Анимации бездействия - то, что вы видите, когда персонаж неактивен и ждет команды. Это может быть всего один кадр, выражающий готовность персонажа к действию. Остальные анимации - это анимации активного действия (атака или ответ на нее), а также временного выбывания из действия («смерть» или восстановление). В приведенном списке большую часть занимают анимации, требующие быстрого ответного ввода команд игроком. Другими словами, список отвечает основным требованиям жанра EPS: уклоняться, атаковать и умирать.


Во время создания Quake II и Quake III Arena (QJA) разработчикам несколько раз высказывали мнение, что идеальным персонажем для сетевой игры был бы просто квадратик с изображением лица персонажа. Размер файла персонажа таким образом уменьшается почти до нуля. Вот так хардкорные любители сетевых баталий относятся к эстетике персонажей игр в реальном времени.

Эти анимации совершенно необходимы персонажу EPS, но что же можно сказать об играх, в которых действие происходит от третьего лица? В такой игре, как Lara Croft Tomb Raider, персонаж Lara Croft бегает, прыгает, вертится, демонстрируя вам свою великолепную спину на протяжении всей игры. Она носится по ландшафту, карабкается по препятствиям, большими прыжками преодолевает преграды, переходя с одного очень сложного и запутанного уровня на другой. Для такого персонажа набор анимаций определенно должен быть шире.