Biped, CAT & Puppet Shop.

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

Давным-давно, в одной очень-очень далекой галактике, одна большая и уважаемая контора в геймдеве начала заказывать аутсорс у другой большой, и уважаемой в узких кругах, конторы по аутсорсу контента для геймдева. И устроясь туда на работу я впервые увидел Puppet Shop. Не корысти ради, а токмо воли приславших файлы заказчиков. И сильно удивился. Ведь после того, как CAT был интегрирован в 3DMax автор Puppet-а сделал его бесплатным и объявил о прекращении его развития. Но попробовать это творение доктора Франкенштейна может каждый без ограничений.

Biped - cтарейший риг макса. Сумрачный гений еще до миллениума создал без преувеличения революционный риг для персонажной анимации (и четвероногих в том числе). В начале это был плагин, который интегрировали в 3DMax4. И в целом с тех пор он изменился совсем по мелочам. И более того, я предпочту его всем. Победитель определен, GameOver. Лучше с персонажами работает только риг MotionBuilder.

CAT - пришел из стана Softimage XSI. Был окончательно интегрирован в 3DMax2011. Тоже уважаю.

1. Создание.

Biped

Создается сразу весь риг, которой в figure mode можно уже настраивать под свои нужды. Поменять количество сегментов отдельных частей рига (спина, шея), количество пальцев и их суставов. Существуют относительно жесткие рамки ограничивающие риг - пальцев не более 5, количество суставов на пальцах рук не более 4, на пальцах ног не более 3. То есть риг заточен исключительно под двуногих гуманоидов и четвероногих животных земного типа. Конечно это можно обойти добавив недостающие кости в Xtras. При установке в Т-позу на персонажа длинна костей изменяется при помощи масштабирования. И на риг сразу действуют все ограничители, например суставы локтя и колена вращаются только по одной оси Z, а двигая ладонь/ступню, конечности движутся в IK-режиме. Значительный минус это жесткое крепление таза скелета Bip01 -> Pelvis -> Legs. Это привязывает ноги на уровне рутовой кости Bip01, позволяя менять только ширину таза масштабированием кости Pelvis.

CAT

Выбирается или уже готовая заготовка, или создается новая на основе костей нескольких типов (Spine, Arm, Leg, Tail, Bone), с уже назначенными IK/FK контроллерами. Установка в Т-позу, пожалуй, самая удобная из всех существующих. С перемещением кости растягивается в соответствии и ее кость-родитель. Положение костей - любое. Изменение иерархии скелета - любое.

Puppet

Создание аналогично CAT, однако Т-позу придется долго и нудно устанавливать в FK, меняя длину костей в свойствах на командной панели. Хуже Biped-а получилось. После установки происходит "инициализация", когда к костям добавляются управляющие IK/FK хелперы. Изменение "инициализированного" рига уже не такая простая задача. Впрочем я в детали еще особо не вникал. Не до этого, работать надо.

2. IK/FK конроллеры ригов.

Biped

Сумрачный гений создал уникальную вещь. У Biped-a для конечностей существует три типа ключей - Planted, Sliding и Free. Именно они отвечают за включение и выключение IK контроллера на конечностях. Free Key это ключи FK-кинематики. Sliding Key это ключи IK-кинематики. Planted Key кроме IK-кинематики еще и сохраняет позицию предыдущего Sliding Key или Planted Key. Переключение между IK и FK-кинематикой происходит переключением ключа в один из трех типов. Без дополнительного трека. Просто и наглядно. При этом и в FK режиме можно двигать конечности как в IK режиме. Это сильно упрощает установку позы при анимации. Возможная слабость Biped-a это отсутствие локтевого/коленного хелпера для IK. Но компенсируется отсутствием гемороя с IK-Target-ом (в связи с отсутствием IK-Target-а), когда положение конечности в IK не совпадает с положением в FK. Управление положением сустава происходит вращением костей руки/ноги. Для концов IK-цепочки (ладони, ступни) можно указать объект, относительно которого цепочка будет сохранять положение. По умолчанию это мир сцены. Указать можно только один объект, однако ограничение можно обойти при помощи хелпера с контроллером Link Constraint. С моей точки зрения реализация ключей бипеда почти идеальна. Еще одно достоинство Biped-a выражено в виде единых ключей для IK-цепочки. То есть создав ключ для ладони, автоматически создаются ключи для всей руки (пальцы можно исключить). То же самое и при удалении. И при перемещении ключа ладони в Timeline будут перемещены ключи для всей руки. Во всех остальных системах придется не забывать выделять все хелперы IK/FK-цепочки.

CAT

У CAT-a стандартная система IK/FK, кости в FK-режиме можно двигать как IK. Для ног создается IK-Target (Foot Platform), для рук надо самостоятельно создавать. Самостоятельно нужно включать и локтевые/коленные хелперы IK (UpVector Node). Тут по ситуации, иногда можно обойтись и без них, иногда проще с их включением. В связи с реализацией слоев (о ниже будет сказано) IK-Target можно привязывать практически неограниченно. Переключение IK/FK отдельный трек в Curve Editor. Огромный плюс CAT-a в параметрических IK-цепочках спины (и шеи, которая в CAT-e делается как спина), когда наклон и вращение всех сегментов контролируется вращением и перемещением одной верхней кости. В них же огромный минус, когда не возможно тонко настроить поворот одного из сегментов спины. При переключении же из процедурной в кейфрейм рушит уже созданную анимацию.

Puppet

В этом риге используется древняя, как говно мамонта, система множественных костей. Вместо одной руки делается три. Первая работает в режиме FK. Для второй создается IK-Solver. Третья (которая и является основной для применения скининга) биндится на первые две с переключением веса IK/FK. Отсюда выходит невозможность потаскать FK-версию в IK-режиме, что раздражает дико. Хотя в Puppet-e есть копирование анимации с IK на FK и наоборот. Но скопировать IK на FK, переключить на IK, установить позицию, скопировать FK на IK, переключить на FK несколько дольше, чем подергать конечность в Biped-e и CAT-e. Еще "по умолчанию" не предусмотрена прилинкование IK-Target-а к чему-нибудь (например правая рука держит меч/огнестрел, а левая в IK-режиме ладонью заарканена на правую). Камрады, которые подогнали весь этот геморой с Puppet-ом используют скрипт, который выравнивает IK-Target по нужному объекту, но ни об каком интерактиве речи не идет. Впрочем я нашел альтернативный метод, при помощи слоев, о которых будет ниже.

3. Контроллеры вращения.

Biped

У Biped-a по умолчанию стоит режим Quaternion. Если в двух словах, то поворот в кватернионе это комплексное число из вектора трёхмерного пространства и скаляра. Кого интересуют подробности, читайте матан. В сравнении с углами Эйлера, кватернионы позволяют проще комбинировать вращения, а также избежать проблемы, связанной с невозможностью поворота вокруг оси, независимо от совершённого вращения по другим осям ©. Правда анимация на кватернионах меньше поддается редактированию в виде кривых. Например в Maya это вообще невозможно сделать по человечески. Но у Biped-a есть собственный трекэдитор под названием Workbench решающий данное затруднение. С Biped-ом только в нем и нужно работать. Есть и переключатель в режим Euler XYZ, но я им ни разу не пользовался.

CAT & Pappet

У обоих за вращение работает Euler XYZ. Эйлер позволяет управлять кривой при помощи тангентов (как у сплайнов Безье, кто не первый час в трехмерке, тот в курсе). Удобно, да. Но вот со сложными поворотами в IK-цепочке могут возникнуть глюки в виде вращения в другую сторону или мгновенный проворот на 360 градусов и т.д. В принципе можно обоим ригам переназначить контроллеры вращения на TCB Rotation (Tension, Continuity, Bias) или даже Liner Rotation или Smooth Rotation, которые кватернионы. Но это куча потраченного времени с малопредсказуемым результатом. А для эйлера в случае глюков есть в CurveEditor-е в утилитах штука под названием Euler Filter, которая решает.

4. IK Animation pivot.

Речь не об анимации пивота, а о нем самом для IK-Target-a.

Biped

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

CAT

У IK-Target-a пивот можно анимировать как душе угодно. Для него в CurveEditor-e есть отдельный трек у IK-Targeta. Но от этого же и неудобство, нельзя о нем забыть. Сложно его подвинуть в то же самое место, что и раньше если внезапно понадобилось, проще всего ключ скопировать, но если таймлайн не 100 и даже не 500 кадров... Пойди найди этот ключ, неудобно...

Puppet

У Pappet-a IK-Target сделан в виде платформы-прямоугольника как и в CAT. Для управления и анимации пивота есть в свойствах на командной панели цельный графический UI. Но двигать можно только в пределах платформы. На пальцы сделать не выйдет.

5. Глобальные трансформации.

Biped

У Biped-а есть специальный инструмент "Move All Mode", с помощью которого характера вместе со всей анимацией можно подвинуть и развернуть в горизонтальной плоскости. Весьма удобно скажу я вам. Так же можно одним кликом включить режим "In Place Mode" по осям X, Y. Вместе или по отдельности. Эта функция нужна когда, к примеру, есть анимация ходьбы, но для экспорта в игровой движок нужно сделать ходьбу на месте, а скорость передвижения будет указыватся уже в движке.

CAT

Специального режима нет, но так как у САТ-а нет никаких ораничений на изменение иерархии, то можно прилинковать рут скелета к пустышке, развернуть и связь разорвать. Можно пустить анимацию вдоль сплайна. Это особенно удобно для CATMotion. С "In Place" тоже пустышкой с обратной анимацией перемещения можно ограничится, или сделать слой в котором сдинуть рут (и IK ног) в ноль. Просто это нужно делать руками, в отличии от Biped-a.

Puppet

О-о-о-о-о... Не предусмотрено таких функций. Точнее это можно сделать, но при помощи главного нода Puppet_World, с которого осуществляется управление Puppet-ом, как у САТ-а есть CATParent из которого создается его риг. Но у нас была задача по очистке и обработке мокапа, и трогать World было нельзя. С перемещением проблем нету, переключить руки/ноги из IK в FK и двигай рут скелета склолько влезет. А вот с поворотом... Можно мозги вывихнуть, простой поворт рута ничего не дает, траектория же не зависит от его вращения. Перелинковать как САТ нельзя. Выкрутились двумя способами. Первый вариант запечь всю анимацию рутовой кости на пустышку скриптом, пустышку прилинковать к другой и таким образом повернуть, а потом скриптом обратно перекинуть анимацию на рут. Я придумал конвертировать траекторию в сплайн (вкладка Motion -> Trajectories на командной панели), разворачивать сплайн вместе с рутом и потом из него восстанавливать траекторию. Нетривиально. Аналогично и "In Place", только есть кнопка. Противоположная анимация запекается в Puppet_World, а рут скелета получается в нулевых координатах.

6. Слои. Анимационный фотошоп.

Biped

Простая и даже банальная система. Может чуточку не удобная для глаза навигация между слоями, тем не менее работает надежно. При коллапсе сохраняет только существующие ключи на всех слоях, без прокеивания всей анимации. IK-Target перелинковать в слое на другой объект никак. С некоторой натяжкой к слоям можно отнести режим Sub-Anim, в котором на Biped можно добавить костям анимационные контроллеры.

CAT

У CAT-а пожалуй самая сильная система слоев. Абсолютные, относительные локально, относительные мировые. И самый колдунский, "не имеющий аналогов за рубежом"©, CATMotion для параметрического редактирования ходьбы/бега. Возможности поистине безграничны. Коллапса слоев как такового нет, можно запечь в новый слой и удалить старые. Может мне просто не повезло, но если запекать через "Plot Optimal Keys", то лезут косяки. Гарантированный результат даст только запекание анимации с прокеиванием в каждом кадре. Что может затруднить последующую обработку, и утяжеляет анимацию в целом большим количеством лишних ключей. Величайшая сила, так и величайшая слабость CAT-а назначение контроллеров для Position/Rotation/Scale в слои. Невозможно установить контроллер в изначальную систему так, чтоб о нем потом не вспоминать. К примеру контроллер пружины (Spring) на какую-нибудь дополнительную кость для пропса. Он будет в слое и при удалении слоя настройки пропадут. Такое надо делать пустышками, а не костями самого CAT-а. Вот в разных слоях можно для IK-Target-а указывать разные объекты через контроллеры Position/Orietnation Constraint. А можно по старинке прилинковать его к пустышке с контроллером Link Constraint. Варианты любые. Порядок слоев можно менять как угодно, только не забывать, что первым все же должен стоять абсолютный слой или CATMotion, а уже за ними относительные.

Puppet

От слоев Puppet-а пробивает на нервный смех и дергающийся глаз... Если у Biped-a и САТ-а слои как слои, то тут 2 уровня. Первый уровень это клипы. Для того, чтоб хранить over9000 анимационных клипов в одном файле. С точки зрения программиста экспортирующего пак анимаций в движок одной кнопкой все логично. Практически же десяток анимаций по 300-500 кадров уже добивают размер файла до 100 и более мегабайт. А это дольше время сохранения, больше занимаемый размер оперативной памяти, больше вероятность похерить все разом при случайном убийстве файла (и такое может произойти, при вылете 3DMax-а, редко, но может). А еще у меня в настройках 3DMax-а стоит автосохранение 10 резервных копий каждые 5 минут. Второй уровень непосредственно слои для клипа. С ними связано "открытие Америки" по прилинкованию IK-Target-а к другим объектам. Но не все так просто. Сперва надо включить TD-Mode, в котором можно менять иерархию и контроллеры рига. Кнопка спрятана в меню кастомайза 3DMax. Сделано так вероятно, чтоб те, кто не знают, что такое контроллер не порушили риг тыкнув неизвестную кнопку в управлении ригом. Еще одна тонкость в том, что можно менять контроллеры как на глобальном уровне рига, так и в слоях. Для линкования IK-Target-a надо обязательно новый слой сделать, и только в нем уже применять Position/Orientation Constraint. Но и это еще не все. Результат коллапса слоя с контроллером констрейна для IK-Target-a почти всегда гарантированно даст косяки, поэтому сперва надо скопировать анимацию с IK на FK, потом удалить слой с контроллером и скопировать обратно анимацию с FK на IK. Слои нельзя перемещать относительно друг друга. Такие дела.

7. Copy/Past поз характера.

Biped

EpicWin! Можно создать много "библиотек" в которые сохранять позы как всего бипеда, так и отдельной кости. Без ограничений. Кроме этого при копировании создается небольшой скриншот позы, а это уже WIN!!!1111. Имена-именами, но все не запомнить. Если есть десяток поз руки, то нужно или очень длинные и подробные имена давать или посмотреть превью Biped-а.

CAT

В наличии. Однако копируется вся иерархическая цепочка, начиная с выбранной кости. Мне надо например руку от плеча до кисти копипастнуть, а пальцы не трогать. Но не выйдет. Копирование и вставка общей позы происходит в мировых координатах, а Pose Mixer сломан аж со времен 3DSMax 2010 SP1 и не работает включаяя 3DSMax 2013. Кажется Autodesk-у просто насрать на развитие и поддержку CAT-а. Как и Biped-а, который не улучшается с версий 3DSMax 6-7 примерно.

Puppet

Система аналогичная САТ, но более того. Если надо скопировать позу пальца, то скопируется и вставится вся рука. Или вся нога. Или я не нашел нужной опции.

8. Нелинейная анимация. Монтаж клипов.

Biped

Есть удобный модуль Mixer, в котором можно загружать клипы с диска (сохраненные анимации в bip-файлах). Их можно резать, можно задавать части Biped-a на которые слой с клипами будет воздействовать. Настройка переходов (Transition) между клипами. Слои. В транзишине можно дополнительно поворачивать анимацию клипа, как и в случае с глобальной трансформацией. В финале все можно запечь в новый клип. Практическая и удобная система.

CAT

В классическом виде отсутствует. Частично можно заменить слоями, но ограниченно.

Puppet

Есть Clip Editor, но... Загружать можно только клипы из текущего файла, с диска никак. Управление транзишеном только, то, что он есть. Может я плохо смотрел, но настроек минимум. Действует сразу на весь характер. Обработка результата с небольшим кусочком может длится по 5-10 минут. Это не шутка.

9. Ретаргет.

В данном случае подразумевается следующая система. Когда IK-Target перемещен слишком далеко, то рука вытягивается в прямую линию. Однака при использовании ретаргета, рука начинает воздействовать и на тело, которое наклоняется вслед за рукой. Biped - нет. CAT & Puppet - есть.

Победитель Biped. Пополам с MotionBuilder, потому что в МоБи персонажа надо импортировать уже со скелетом и скином. Но управление ригом в МоБи самое сногшибающее. И с мокапом и с кейфрейм-анимацией. Второе место за CAT-ом, если бы только Autodesk не забил на него. Творение докторо Франкенштейна Puppet Shop в абсолютгых аутсайдерах.

Вот пока и все, что я имею вам сказать. ©