Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ponimayka1

.pdf
Скачиваний:
131
Добавлен:
07.06.2015
Размер:
37.11 Mб
Скачать

можете приготовить соответствующие формы, выбрать их, а затем выбрать базовую форму (чтобы MAYA знала, к какому морфингу добавлять новые формы). После этого выполните Deform=>Edit Blend Shape=>Add. Так же производится удаление ненужных форм.

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

вэто экстраординарное состояние.

Совместимость форм и принцип работы морфинга

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

Создайте два полигональных примитива: сферу и плоскость. Выберите сначала плоскость, затем сферу.

Откройте Option Box операции Deform=>Create Blend Shape. Задайте параметры по умолчанию Edit=>Reset Settings. MAYA поприветствует вас довольно невнятным замечанием:

Error: No deformable objects selected.

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

По умолчанию, MAYA проверяет совместимость объектов с точки зрения морфинга, отслеживая, например, одинаковое количество вершин на всех поверхностях. Однако вы можете отменить такую проверку в Option Box операции Create Blend Shape, отключив опцию Check Topol­ ogy.

В этом случае вы делаете морфинг на свой страх и риск.

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

Нетрудно даже понять алгоритм такого морфинга.

Вершины одного объекта переходят в вершины другого. Причем переход совершается «по номерам». Первая вершина одной поверхности переходит в первую вершину другой, вторая - во вторую, и т.д. А то, что у поверхностей разное количество вершин, никого уже на волнует: ведь вы сами отменили проверку их количества, сняв галку Check Topology. Так как у сферы количество вершин гораздо больше, оставшиеся точки просто останутся на месте. Обратите также внимание, что в данном случае играет важное значение порядок нумерации вершин на полигональных объектах.

691

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

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

Примечание.

Сплайновые поверхности

бывают замкнутыми

(периодическими)

и открытыми, причем по обоим

направлениям вдоль

поверхности.

При

морфировании

следует учитывать это.

При попытке морфировать плоскость в

сферу вас наверняка ожидает неудача, так как плоскость при таком морфинге

не

превратится в замкнутую поверхность, а останется «открытой сферой». Если хотите добиться успеха, откройте замкнутую сферу перед морфингом. Следите, чтобы по обоим направлениям поверхности имели одинаковую «открытость» или «замкнутость».

Последовательный морфинг

В некоторых случаях хочется смоделировать некоторое количество объектов, а затем создать морфинг таким образом, чтобы базовая форма принимала последовательно все формы этих объектов при увеличении всего одного атрибута. Для таких случаев в Option Box операции

692

Create Blend Shape имеется опция In-Betweens (промежутки). Если включить ее, созданный Blend Shape деформер будет иметь всего один атрибут, отвечающий за морфинг. При его изменении от нуля до единицы базовая форма (последний выбранный объект) будет последовательно «пробегать» все остальные целевые формы. Такой «промежуточный» морфинг является частным случаем общего метода смешивания форм и применяется по необходимости.

Морфинг групп и иерархий

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

Нет проблем. Выбирайте верхнюю группу самолета, затем группу, содержащую паровоз, и выполняйте операцию Create Blend Shape. MAYA сама разберется, как и что морфировать. Каждый объект из одной иерархии будет морфироваться в соответствующий объект из другой. Единственное требование для успешного морфинга иерархий заключается в том, чтобы порядок соответствующих объектов в иерархии (группе) был одинаковым. Если вы используете копирование для изготовления новых форм, проблем не возникнет. В противном случае поменять порядок объектов в группе или иерархии можно, перетаскивая объекты в Outliner средней кнопкой мыши.

Локальный и глобальный морфинг

По умолчанию объекты морфируются локально. Точки базовой формы стремятся к позициям точек целевого объекта вне зависимости от того, где находится этот объект и какой размер он имеет. Поэтому вы можете предварительно располагать целевые объекты где угодно: при создании морфинга они будут как бы временно перенесены в положение базового объекта и там будет вычисляться деформация. По этой причине не вздумайте делать операцию Freeze Trans­ formation перед морфингом.

Однако если вы хотите, чтобы точки морфируемого объекта стремились к абсолютным мировым коодинатам точек целевого объекта, можете задать при создании опцию Origin=World. Это можно сделать и позже, после создания морфинга, установив соответствующий атрибут. В этом случае морфируемый объект будет стараться принять не только форму целевого объекта, но и его размер, а также будет смещаться в его позицию.

Симметричный морфинг

При работе с лицевой анимацией вы рано или поздно столкнетесь с проблемой изготовления симметричных масок. Учитывая, что нумерация вершин на полигональных сетках совершенно произвольна, простые методы зеркалирования моделей могут быть непригодны, да и не все поверхности моделируются идеально симметрично. В этом случае могу порекомендовать поискать на сайте www.highend3d.com скрипты и плагины для подготовки симметричных форм специально для деформации Blend Shape (например, symWork от Володи Забелина).

Некоторые замечания по поводу лицевой анимации

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

Благодаря традиционным методам типа Projection Mapping и модной технологии Normal Maps, стало возможным изготовление очень реалистических лиц и даже голов. В самом деле, несложно сфотографировать голову с разных ракурсов и использовать полученные изображения в качестве текстур. Однако с анимацией мимики существуют большие проблемы. Как только любая суперреалистичная голова начинает говорить или просто кривляться, становится ясно, что это

693

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

Дело в том, что благодаря системам Motion Capture стало возможным довольно ловко обманывать человеческий глаз в случаях, когда нужно анимировать движения корпуса персонажа, его рук или ног. В самом деле, если данные о движении снимаются с реальных людей, то будучи перенесенными на скелет персонажа они выглядят убийственно реально. (Кстати, перенос таких реальных движений на обычных нереалистичных персонажей полностью их, персонажей, убивает. Они становятся невыразительными и вялыми).

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

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

Проблема только в том, что эти траектории некуда «приклеить»! Нет на лице (точнее, «в лице») костей и суставов, в отличие от скелета персонажа. Создание кластеров приводит к проблеме взаимодействия этих кластеров, и контрольные вершины слишком многочисленны. Конструкции из Blend Shapes оказываются слишком громоздкими и абстрактными. Все решения будут приблизительными, а для достоверности требуется абсолютная точность.

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

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

Порывшись в Интернете, я обнаружил несколько упомянутых выше «мышечных» решений для тела персонажа. Все найденные мной программы для «липсинка» (от lip sync - синхронизация движения губ с фонограммой) и для управления мимикой основаны лишь на традиционном морфподходе.

И лишь одна программа приятно меня удивила, тем более, что это отечественная разработка. Пакет называется Life Studio:Head и производит его российская компания Life Mode Interactive.

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

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

На сайте производителя (www.lifemi.com) можно скачать пробную версию пакета Life Studio:Head и посмотреть примеры работы, сделанных с его помощью.

694

Практические советы по использованию деформеров

В заключение хочу привести исключительно полезные практические советы от Миши Бажуткина, касающиеся «продвинутой» работы с деформерами в контексте работы с персонажами.

Используйте Wrap и Wire деформеры

Wrap-деформер - более гибкий деформер, нежели Lattice-деформер (решетка), но и более капризный и медленный. Это - плата за то, что он позволяет работать с различными топологическими формами. В сочетании с другими типами деформеров пользователи MAYA получили мощный инструмент для сетапа персонажей. Но среди прочих я хотел бы выделить именно Wrap и Wire деформеры. Так как именно они, работая в связке, решают проблемы в случаях, когда деформеры типа Cluster и Skin Cluster уже бессильны.

Оптимизируйте количество объектов

Очень часто в процессе настройки Wrap-деформера нужно корректировать форму сетки объекта влияния и это требует постоянной синхронизации ее с базовой (Base) сеткой. В этом случае проще соединить атрибут worldMesh «базовой» сетки с атрибутом inMesh управляющей и делать поправки на «базовой» сетке, а все изменения будут автоматически переноситься на управляющую сетку. Это дает большую гибкость в настройке персонажа и экономию времени. Более того, мы получаем еще одно преимущество. После такого соединения все изменения в управляющей сетке будут происходить относительно базовой, и их всегда можно будет обнулить, установив в ноль - с помощью Channel Box (закладка CVs) перемещения выбранных вершин сетки.

В тех случаях, когда Base-объект неподвижен, можно избавиться и от него. Тогда его функции будет выполнять Original Shape объекта влияния. Для этого после создания деформера выделите объект влияния и примените к нему Cluster-деформер. И сразу же удалите появившейся контрольный объект этого деформера (в виде буквы «С»). И если до этих операций история объекта влияния была чиста, то теперь в ней появиться новый Original Shape соединенный с его старым Shape. Естественно, вместо Cluster-деформера можно использовать любой другой деформер. Мне же он приглянулся за свою простоту. Теперь все, что осталось сделать - это соединить атрибут «worldMesh» Original Shape с атрибутом «basePoint» деформера. Далее для подстройки объекта влияния очень удобно использовать меню Deform => Display Intermediate Objects. Эта команда делает видимым ранее скрытый Original Shape. После чего, перейдя в компонентный режим, можно сделать исправления. А скрыть Original Shape можно, вызвав меню Deform => Hide Intermediate Objects. Все выше перечисленные действия имеют отношение и к Wrap и к Wire деформерам.

695

Подстройка Wrap Base и Wire Base объектов

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

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

сработой Wrap-деформера (и не только его), но в значительной степени поможет вам сделать тюнинг, что уже немаловажно.

Эту технику можно применить и для подстройки начальной формы кривой Wire-деформера, относительно которой будет происходить дефомация поверхности. После того как Wire-деформер создан, нужно увеличить значение его атрибута scale. Затем одновременно двигать точки кривых wire и wireBase. При этом будет хорошо видно, как качественно изменяется форма поверхности после деформации. После такой настройки нужно будет опять выставить атрибут scale в единичное значение и двигать только точки wire-кривой.

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

Уменьшить количество искажений в деформируемой модели можно так же небольшим значением атрибута smooth в transform-ноде объекта влияния.

Начинайте деформировать с простых и округлых форм!

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

ссимметричной формой. Она вам обязательно пригодится при построении других симметричных

инесимметричных форм.

696

Меняем тип Wrap алгоритма

В седьмой версии Maya - в окне Create Wrap Options появилась возможность выбора типа влияния полигонального Wrap-объекта. Раньше это можно было сделать только после создания Wrap-деформера, с помощью атрибута inflType объекта влияния. Если сравнивать результат работы этих режимов, можно увидеть, что в режиме Points между контрольными точками деформируемая поверхность провисает, как ткань, которую подняли за кончики, но в целом деформация выглядит гладко. А вот в режиме Faces такого провисания нет, зато возникают «заломы» на деформируемом объекте вдоль ребер объекта влияния. Также в режиме Faces, когда при деформации управляющей сетки деформера происходит «перехлест» соседних ребер (edges), зависимые вершины деформируемого объекта «слетают» в нулевую позицию. Это происходит изза того, что алгоритм Wrap-деформера сталкивается с ситуацией, когда расчет позиции вершины не определен. Это хорошо видно, когда у деформируемого объекта «сетка» намного плотнее, чем у объекта влияния. Поэтому при настройке Wrap-деформера нужно выбрать приемлемый для вас тип влияния, проверяя его на экстремальных позах.

Wrap не любит изменения масштаба объекта влияния

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

Чего следует избегать при работе с Wrap-деформером

Есть у Wrap-деформера одна неприятная особенность: если в истории объекта до самого Wrap-деформера что-то меняется, он каждый раз пересчитывает «привязку» точек (распределение влияния вершин объекта влияния на деформируемой поверхности). К сожалению, у Wrapдеформера отсутствует возможность кэшировать данные «привязки». Например, если до него стоит Blend Shape-деформер с анимированными каналами. Такая последовательность деформеров в истории объекта будет сильно замедлять его деформации во время воспроизведения анимации. Это также относиться к ситуации, когда используются два Wrap-деформера, находящиеся один за другим в истории объекта. Второй деформер будет работать намного медленнее, чем первый, из-за того, что он каждый раз пересчитывает «привязку», когда первый деформер изменяет геометрию. Не помогает даже исключение «лишних» точек из сета (Set) второго и первого деформеров.

Однако выход из этой ситуации есть. Их даже два! Метод параллельных деформаций и замена Warp-деформера на Skin Cluster.

Wrap-деформер и параллельные деформации

Если в сетапе вашего персонажа необходимо использовать несколько Wrap-деформеров, причем так, что они будут влиять на разный набор вершин, можно использовать метод параллельных деформаций. Этот метод избавит Wrap-деформер от постоянного пересчета «привязки». Но не следует забывать о том, чтс Wrap-деформер может иметь сразу несколько влияющих объектов. Метод параллельных деформаций дает больше возможностей, чем несколько влияющих (influence) объектов одного Wrap-деформера. Например, вы можете «привязывать» весь деформируемый объект (или его часть) к разным влияющим объектам. А они, в свою очередь, могут быть разной топологии и по-разному деформированы. И между этими влияющими объектами можно плавно переключать влияния с помощью вспомогательного деформера (parallelBlender), в качестве которого выступает известный всем Blend Shape-деформер. Единственный неприятный момент в том, что, в отличие от остальных деформеров, Wrap-деформер обделили: при его создании из его настроек убрали дополнительную закладку с параметрами, которые как раз и позволяют создавать его в этом режиме. Но с помощь MEL это можно исправить. Для начала первый Wrap-деформер создается, как обычно, из меню MAYA. Но второй нужно создать с помощью следующей команды:

697

deformer -type wrap -parallel

Тогда Maya, помимо нового Wrap-деформера, создаст еще и ноду parallelBlender, а оба Wrap-деформера свяжет с ней так, что с помощью ее атрибутов можно будет управлять весом каждого деформера. Только далее вам придется связать второй Wrap-деформер с влияющим объектом и его копией (базовым объектом) с соответствующими атрибутами при помощи MEL или Connection Editor. Это потому, что команда deformer ничего такого не делает. В качестве подсказки можете использовать связи первого Wrap-деформера с его объектами.

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

Wrap-деформер в составе Skin Cluster-деформера

Второй метод, как заставить работать совместно несколько Wrap-деформеров - это включить управляющие объекты в Skin Cluster в качестве «geometry influence». Подробнее об этой операции вы можете прочитать в советах по «скинингу». В отличие от обычного Wrap-деформера, Skin Cluster-деформер не пересчитывает «привязку» к контрольным точкам управляющих объектов. К тому же вы получаете еще одну возможность делить их взаимное влияние с помощью весов Skin Cluter-деформера. И в отличие от предыдущего способа параллельных деформаций, этот метод гарантирует то, что влияние нескольких управляющих объектов для каждой вершины деформируемого объекта может быть нормализовано, то есть в сумме будет составлять единицу. Это очень полезно для деформации лица, когда несколько управляющих объектов могут имитировать мускулатуру. И конечно же, есть возможность сочетать Wrap-деформацию с деформацией костей. В случае, когда влияние костей не нужно, то есть в состав Skin Clusterдеформера должны войти только -geometry influence" объекты, можно для создания деформера привязать объект к временно созданной кости. Затем добавить управляющие объекты с помощью меню Skin=>Edit Smooth Skin=>Add Influence. После чего удалить кость.

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

Wire и его dropoff-локаторы

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

698

закручивать объект относительно кривой, что незаменимо, например, для анимации губ. Стоит только на управляющую кривую поставить два dropoff-локатора, как у Wire-деформера появятся возможности скручивать не хуже, чем у Twist-деформера! После создания локатора к деформеру автоматически добавляется набор динамических атрибутов: locatorEnvelope - множитель к общему атрибуту envelope - и locatorTwist - относительное вращение. А также атрибуты param и per­ cent, которые можно увидеть только в Attribute Editor, или выделив сам dropoff-локатор. Удобно управлять этими параметрами с помощью Show Manipulator Tool, наглядно передвигая локатор по кривой и изменяя, если нужно, дистанцию влияния деформера в данной точке. Изменяя все эти значения, можно увидеть, как Wire-деформер интерполирует эти значения между локаторами вдоль кривой.

К сожалению, у деформера в этом наборе отсутствует атрибут locatorScale, его атрибут scale управляет масштабом относительно всей кривой. Но выход из этой ситуации есть. Если такой контроль нужен, можно использовать последовательно два Wire-деформера. Первый будет управлять масштабом, а второй гнуть и скручивать. Для этого нужно выставить атрибут scale в нужное значение (например, 2), а уже атрибутами locatorEnvelope управлять величиной масштаба в выбранных участках. Это действие даже можно автоматизировать, если сделать Driven Key от ноды arcLengthDimension, которая будет измерять длину управляющей кривой и, в зависимости от этого, расширять или сужать объект в нужных областях.

Будьте готовы к тому, что у параметров locatorTwist есть неприятная особенность: обычные ключи и Driven Key ставятся в радианах, но связываются с нодой, как градусы. Это, конечно же, недоработка программистов. Рекомендую поправлять значения ключей в Graph Editor, а перед тем, как поставить новый ключ, копировать его значение из Channel Box в буферную память.

Если у Wrap-деформера имеется один dropoff-локатор, его атрибуты будут влиять на весь отрезок кривой. Таким образом, помимо scale появится еще возможность делать операцию twist.

Пример такого влияния находится в файле wire_for_lips.mb

Wire + Wrap

Еще один трюк. Я уже упомянул о том, что можно добиться хороших результатов объединив мощь этих двух деформеров. Эта комбинация используется для анимации лица, когда нужно добиться очень качественного и реалистического движения кожи персонажа. Wrap-деформер хороший деформер, но в тех местах, где сетка обрывается или загибается во внутреннюю сторону, как это происходит с области губ, больше подходит Wire-деформер. Так Wrap отвечает за деформацию лица в целом, а Wire-деформер за области губ (глаза, брови и прочее - по желанию). При построении управляющей Wrap-сетки для лица можно сильно упростить себе задачу, если заставить деформироваться управляющую wire-кривую той же управляющей wrap-сеткой, что и

для деформируемого объекта.

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

После чего создаются два Wrap-деформера от одной управляющей сетки, один для деформируемого объекта, а другой для управляющей wire-кривой.

Это можно сделать за один раз, выделив три объекта (причем последним из них должен быть управляющий wrap-объект) и вызвав меню Deform => Create Wrap.

Затем создаем Wire-деформер для деформируемого объекта (меню Deform => Wire Tool с параметрами), но при этом переключив параметр Deformation Order в режим Parallel.

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

699

Самый простой способ сделать жесткую границу, выделив поочереди каждый деформер, и инструментом Edit Membership Tool удалить для каждого из них ненужные вершины. Но чаще всего желательна мягкая граница. Однако встроенные в Maya средства, к сожаленью, не позволяют этого сделать. Чтобы не прибегать к программированию, попробуем приспособить для этой цели сам Blend Shape-деформер, который уже был автоматически создан Maya в процессе и назван parallelBlender. В Maya 7.0 у Blend Shape-деформера появилась возможность маскировать каждый канал. Но при попытке зайти в окно инструмента Paint Blend Shape Weights Tool, выясняется, что не на чем рисовать! Более того, вызываем окно Blend Shape и там не находим нашего деформера. Для того, чтобы случилось это чудо, нужно обнулить одноименный атрибут деформера parallelBlender. Этот атрибут делает его невидимым, чтобы он не смешивался с традиционным Blend Shape-деформером. Поэтому для того, чтобы он стал доступным для нормальной работы, нам нужно выделить его и запустить команду:

setAttr .parallelBlender 0;

Но этого не достаточно для того, чтобы начать красить веса каналов. Нужно еще зайти в окно Blend Shape и переименовать каналы деформера, например: wrap и wire. Теперь уже, открыв Shape Weights Tool, можно приступить к раскраске весов параллельного деформера.

Лучше начать рисование с маски канала wire (Wire-деформера), проверяя работу деформера в действии. Так как зона действия деформера в нашем случае зависит от маски, стоит сильно увеличить значение его атрибута dropoffDistance, например, до 100. Затем эту маску следует записать в файл, пользуясь закладкой Attribute Maps / Export. Затем, обнулив маску канала wrap, импортируем (закладка Import) этот файл и инвертируем его, так же, как описано в разделе

«Советы по скинингу» для Cluster-деформера.

Этот способ не самый изящный, к тому же требует от объекта наличие корректного UVмаппинга, если он полигональный. Если каналов не два, а более, лучше начинать с маски Wrapдеформера, как самого большого по площади влияния. Более простой способ раскрашивания заключается в выделении группы faces, относящихся к одному деформеру, и назначение им единичного или нулевого значения влияния с помощью заливки кнопкой Flood в режиме Re­ place. Затем делается инверсия выбора на компонентном уровне и новой группе назначается противоположное значение влияния. И в самый последний момент, когда все зоны уже определены, в режиме Smooth для каждого деформера нажимается определенное количество раз кнопка Flood. Это создает плавный переход между влиянием разных деформеров в пограничных зонах. Очень важно, чтобы количество нажатий было одинаково для каждого деформера, иначе результирующее влияние на эти вершины будет не единичным, то есть не нормализованным, что приведет к двойным транформациям.

Пример распределения весов этим способом находится в файле wrap_and_wire.mb

Будем надеяться, что в следующих версиях Maya еще больше расширятся возможности деформера Blend Shape, чтобы для таких случаев в режиме parallelBlender была возможность

700

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]