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

ponimayka1

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

Порядок деформаций, определяемый при создании деформеров

Возникает резонный вопрос, а нельзя ли задавать порядок деформаций еще при создании деформеров?

Оказывается, в Option Box абсолютно всех операций, создающих деформеры (кроме Wrap), есть закладка Advanced, в которой можно задать в каком порядке они будут располагаться в истории объекта.

Это делается с помощью параметра Deformation Order. Его назначение не так очевидно, как может показаться с первого раза. Он определяет не порядок следования деформеров друг за другом, а порядок расположения создаваемого деформера и деформируемого объекта в дереве зависимостей.

Если Deformation Order=Default, порядок деформаций в точности совпадает с той последовательностью, в которой вы создавали деформеры. В Hypergraph можно увидеть, что между исходной формой объекта и деформированной формой находится последовательность деформеров. Каждый новый деформер добавляется в дерево зависимостей перед деформированным объектом. Такое создание деформеров происходит и при выборе Deformation Order=Before.

681

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

Если вы создадите несколько объектов с опцией Deformation Order=After, а затем включите отображение промежуточных o6beKTOB(Deform=>Display Intermediate Object), то увидите (в Out­ liner или Hypergraph), что деформированный объект имеет несколько «форм», то есть нод типа shape.

682

Еще более экзотичная ситуация возникает при Deformation Order=Split. В этом случае при создании деформера в сцене возникает новая деформированная копия объекта, не связанная с предыдущими деформациями. История как бы раздваивается, и вы можете видеть результат разных деформаций на разных объектах, оригинальная форма которых одна и та же.

Но самая удивительная ситуация возникает когда используется опция Deformation Order=Parallel. В этом случае созданный деформер действует на объект параллельно, то есть его действие смешивается с предыдущими деформациями, созданными до него. В этом случае в Chan­ nel Box или в Hypergraph нетрудно обнаружить ноду parallelBlender, отвечающую за усреднение действия двух или нескольких деформеров. В атрибутах этой ноды есть веса, позволяющие задавать степень влияния каждого деформера, присоединенного к этой ноде. Пытливые умы могут заметить, что тип этой ноды обозначен в Attribute Editor как blendShape. Наиболее просвещенные пользователи, конечно, в курсе, что эта же нода используется для трехмерного морфинга, о котором речь пойдет ниже. Так что создание деформеров с опцией Parallel это автоматическое использование морфинга под именем parallelBlender.

Членство в партии деформеров. Вступление и выход из партии. Партиции и эксклюзивные деформеры

Когда вы создаете новый деформер, MAYA автоматически порождает служебный объект, который называется «сет» (set). Этот объект просто содержит список компонент, на который этот

683

деформер действует. Если перед созданием деформера вы выбрали сам объект, в новый сет попадают все компоненты этого объекта. (Напоминаю: все деформеры работают не с объектами, а с их компонентами.)

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

Проще всего это делать с помощью инструмента Edit Membersip Tool (редактирование членства). Перед его использованием удобно выбрать деформер, область влияния которого вы собираетесь редактировать - хотя выбирать деформеры можно и в процессе использования инструмента. Как обычно, при работе с инструментами курсор принимает агрессивную форму, и при выбранном деформере на экране подсвечиваются компоненты, на которые он влияет.

Кроме того, в Help Line появляется такая подсказка: Add with Shift+LMB. Remove with Ctrl+LMB.

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

Для любителей точного редактирования имеется возможность увидеть имена и изменить количество компонент, входящих в сеты с помощью Windows=>Relationship Editors=>Deformer Sets.

684

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

деформера). Самым

быстрым

способом мне представляется использование MEL-

команды

nonLinear,

однако нормальным людям я посоветую выбрать решетку,

затем выбрать Edit

Membersip

Tool,

а потом ткнуть мышкой в нужный объект.

На экране

появятся

его компоненты,

которые следует быстро выбрать, нажав

Shift.

 

 

 

 

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

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

Совет. После создания деформера не изменяйте количество компонент деформированного объекта (с помощью Construction History или ручного добавления/ удаления): ведь тем самым вы измените нумерацию вершин, а это будет иметь катастрофические последствия для работы деформера.

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

В Option Box операции создания любого деформера в закладке Advanced есть опция Ex­ clusive, выключенная по умолчанию. Если ее включить, создаваемый деформер «заберет» все выбранные компоненты из-под влияния других деформеров (то есть из других сетов) и включит их в свой список-сет. Это произойдет, если все эти деформеры принадлежат одной партиции, которую можно выбрать в поле Partition То Use.

Если вы совсем запутались, я еще раз, по-другому, повторю ту же мысль: при создании деформеров компоненты объединяются в сеты (sets). Иногда эти сеты объединяются в партиции (partitions). Сеты, принадлежащие к одной партиции, не могут содержать компоненты друг друга. Подробнее про партиции читайте в главе про изнанку MAYA. А сейчас перейдем к морфингу.

685

Трехмерный морфинг. Смешанные формы - BlendShape

Анимировать форму в MAYA можно различными способами (впрочем, как и делать все остальное). Предположим, вы хотите анимировать форму кривой. В принципе вы можете выбрать в нужном кадре все контрольные точки кривой, нажать клавишу «s», перейти в следующий ключевой кадр, отредактировать форму, снова выбрать все контрольные точки кривой, опять нажать «s» и так далее. Такой способ имеет право на жизнь, но, наверное, только для кривых. Вы должны понимать, что если ваша кривая содержит, к примеру, двадцать точек, при первой же постановке ключа в сцене возникнет шестьдесят анимационных кривых (по три для каждой точки). Редактировать такую анимацию будет уже невозможно.

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

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

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

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

за морфинг последнего выбранного объекта во все остальные.

 

 

 

 

 

Примечание. Возможно, некоторые неискушенные умы

ожидали,

что

в этом

случае

возникнет

ситуация,

когда

при морфинге один объект будет

последовательно, друг

за другом,

принимать

все

формы,

определенные остальными

объектами.

Такое

поведение

не является

задаваемым

по

умолчанию,

однако

путем

редактирования

Option Box

операции

Create

Blend Shapes

его можно

организовать.

 

 

Давайте потренируемся.

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

Откройте Option Box операции Deform=> Create Blend Shapes. Снимите галку Check Topology.

Нажмите Create. Поглядите в Channel Box.

Для выбранной сферы там обнаруживается операция, определяемая нодой blendShape1.

686

Пошевелите атрибуты с именами nurbsCylinder1 и nurbsCone1. Очевидно, что каждый из них отвечает за морфинг сферы либо в цилиндр, либо в конус.

Сфера, которая была выбрана последней, становится базовым объектом (base object), а все остальные объекты, участвующие в операции Create Blend Shapes, становятся целевыми объектами (target objects), то есть целью для морфинга базового объекта.

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

Таким образом, в результате операции Create Blend Shapes деформируется всегда только один объект, тот, который был выбран последним. Этот базовый объект может не только принимать формы всех остальных, но и деформироваться в смешанную форму (Blend Shapes). Если установить все атрибуты ноды blendShape в единицу, базовый объект примет усредненную форму всех остальных объектов.

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

Выбрав все эти копии плюс исходную модель и применив операцию Create Blend Shapes, вы получите несколько атрибутов, плавно переводящих ваш персонаж от одной эмоции к другой. Более того, задав смешанные значения атрибутов, вы можете получить довольно экзотические эмоции: смех сквозь слезы, восторг от падающей Майи. Все эти атрибуты можно анимировать всеми известными вам способами. Таким же способом можно делать и более «низкоуровневые» деформации: поднятие брови, подмигивание, сокращения отдельных мышц. Чем больше промежуточных форм вы сделаете, тем больше вариантов управления формой вашей модели будет у вас в руках. И тем сложнее и «многослойнее» будет ее анимация.

687

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

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

Все модели, представленные в этой главе, были изготовлены Мишей Лапицким (в раннем периоде его творчества).

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

Окно для работы с Blend Shapes

В отличие от всех других деформеров blendShape удостоен чести иметь отдельное окно, для работы с ним и редактирования его атрибутов.

Такое окно можно вызвать через Window=>Animation Editors=>Blend Shape... В этом окне отображаются атрибуты всех объектов типа blendShape, существующих с текущей сцене, поэтому хорошей привычкой может стать адекватное именование этих объектов сразу после очередного создания морфинга.

В этом окне находятся удобные слайдеры для управления атрибутами и некоторое количество кнопок для работы с объектом blendShape. Кнопки Select и Close выбирают и удаляют сам объект, отвечающий за морфинг. Reset All и Key All обнуляют или ставят ключи на все атрибуты. У каждого атрибута есть собственная кнопка Key, для постановки ключа на него.

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

Для взрослых. Реальные имена атрибутов, отвечающих на морфинг, выглядят так: blendShape1.w[0], blendShape1.w[1] и т.д. При создании деформера этим атрибутам дополнительно даются «псевдонимы» с помощью команды aliasAttr. В окне Blend Shape вы просто меняете имена этих «псевдонимов», но не самих атрибутов.

688

Окно Blend Shape похоже на микшерским пульт, где вы можете смешивать различные формы, задавая «уровень» каждой деформации и одновременно контролируя анимацию. Если вы больше привыкли к традиционному, горизонтальному расположению слайдеров, к такому виду можно переключиться с помощью меню Option=>Orientation=>Horizontal.

Примечание. Значения атрибутов,

определяющих морфинг,

могут принимать

как

значения большие единицы, так и

отрицательные значения.

В первом

случае

MAYA

как

бы преувеличивает (экстраполирует)

деформацию,

продолжая

обозначенную

вам тенденцию. Во втором случае MAYA

«инвертирует»

морфинг в другую сторону,

задавая переход не в направлении целевой

формы, а от

нее.

В обоих

этих

случаях

вы получаете новые формы, о которых,

в

общем-то, и

не

подозревали и

которые

не

моделировались вручную.

 

 

 

 

 

 

 

 

Устройство объекта blendShape.

Удаление и добавление новых целевых объектов

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

689

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

Примечание.

Подобно другим деформерам, Blend Shape имеет свой сет (blendShape-

1Set), и,

 

следовательно,

можно редактировать

количество компонент

объекта,

на

которые

он влияет. Выбрав сам объект Blend Shape и используя Edit

Member­

ship

Tool,

вы можете удалить некоторые компоненты из-под влияния деформера,

защитив

таким образом

часть поверхности от

морфинга.

 

Из Hypergraph следует, что деформер Blend Shape также сохраняет связи в исходными целевыми формами. Поэтому, если вы будете редактировать любой из целевых объектов (targets) даже после создания Blend Shape, это немедленно обновит соответствующий морфинг.

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

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

Кстати, при создании Blend Shape можно задать удаление всех исходных целевых форм, включив в Option Box операции Create Blend Shape опцию Delete Targets.

Если вы решили смоделировать еще пару эмоций для своего пылкого персонажа, вы

690

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