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

ponimayka1

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

Jiggle-деформер. Остаточные явления

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

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

После создания этого деформера MAYA анализирует движение деформируемого объекта и создает необходимые «запаздывания» в движении вершин объекта. Можно представить себе, что к оригинальному объекту прикрепляется его копия, притом таким образом, что каждая вершина привязывается небольшой пружинкой к соответствующей вершине изначального объекта. Жесткость и затухание этих мысленных пружинок определяются атрибутами stiffness и damping.

Чтобы запаздывания вдвижениине проявлялись одинаково для всех вершин, можно отредактировать их веса, покрасив их с помощью инструмента Deform=>Paint Jiggle Weights Tool. На более темных участках остаточные движения будут менее заметны.

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

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

Кластеры - группирование компонент и объектов

Рабочими лошадками в мире деформеров являются кластеры. Они позволяют быстро создавать локальные деформации в нужных местах, настраивать их вес и область действия. Идея кластеров состоит в том, что вы можете выбрать любые компоненты или объекты и создать для них удобный манипулятор (Deform=>Create Cluster), позволяющий двигать, вращать или растягивать их как единый объект. Формально говоря, вместе с кластером создается новая trans- form-нода, с помощью которой можно не только трансформировать выбранные компоненты и объекты, но и ставить на них ключи, писать expressions, в общем анимировать их, как угодно.

В отличие от группировки объектов (Edit=>Group), также создающей новую transform-ноду, кластеры позволяют «группировать» не только объекты, но и компоненты. Кроме того, кластеры, в отличие от групп, обладают еще массой полезных свойств, определяемых их атрибутами.

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

671

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

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

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

Если вы, к примеру, анимируете движение ушей тушкана с помощью кластера, разумно предположить, что точки на кончиках ушей должны смещаться сильнее при движении кластера, чем точки в основании ушей (см. в tuskan.ma).

Конечно, вы всегда можете выбрать контрольные точки поверхности, открыть Component Editor и там, в закладке Weighted Deformers, вручную вписать веса точек. Однако такой метод годится, пожалуй, только для кривых, но не для поверхностей.

Для деформированных кластером поверхностей можно задать веса точек, покрасив области влияния в черно-белые оттенки, используя Paint Cluster Weights Tool.

Для этого сначала удобно передвинуть сам кластер, создав деформацию, и только потом выбрать поверхность и взять в руки инструмент раскраски весов Paint Cluster Weights Tool. Во время рисования и области и степень влияния кластера будут обновляться интерактивно. Очевидно, что

672

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

Совет. Во время раскраски весов используйте операцию Replace с осторожностью и всегда задавайте совместно с ней небольшое значение Opacity для кисти. Для плавного распределения цвета хорошо подходит операция Smooth. Для усиления влияния (добавление белого цвета) используйте операцию Add с небольшим значением Value, для уменьшения влияния - операцию Scale и значение Value, немного меньшее единицы.

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

Пример использования кластеров: кубик Рубика.

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

за его идею и реализацию).

Создайте в новой сцене модель кубика Рубика.

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

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

Выделите верхнюю грань (9 кубиков) и объедините их в кластер (Deform -> Create Cluster).

673

Нажмите клавишу «s».

Это поставит ключи на все атрибуты только что созданного кластера. Перейдите в двадцатый кадр.

Поверните выбранный кластер на 90 градусов вокруг оси Y. Снова нажмите «s».

Теперь, находясь в двадцатом кадре (с повернутой верхней гранью), спрячьте, от греха подальше, имеющийся кластер (Display=>Objects Display=>Template).

Затем выделите 9 кубиков на боковой грани и создайте для них еще один кластер.

Тут же нажмите »s», чтобы поставить ключи на все атрибуты нового кластера.

674

Перейдите в сороковой кадр и поверните кластер на 90 градусов вокруг нужной оси. Сразу нажмите «s», чтобы поставить ключи.

Если хватает терпения, то находясь в сороковом кадре, спрячьте второй кластер (Display=>Objects Display=>Template).

Затем выделите 9 кубиков на следующей боковой грани и создайте для них еще один кластер.

Тут же нажмите «s», чтобы поставить ключи на все атрибуты нового кластера.

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

Продолжайте эту «сказку про белого бычка», пока не соберете кубик Рубика.

Сохраните сцену (rubikFinal.ma).

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

Совет.

Если

хотите

создать анимацию собирающегося кубика, то красить его

нужно в

том

кадре,

где заканчивается анимация.

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

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

Еще немного теории деформаций.

Общие свойства всех деформеров. Атрибут Envelope

Впринципе изложенного выше материала достаточно, чтобы довольно эффективно работать

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

675

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

Абсолютно все деформеры имеют атрибут envelope (диапазон). Его значение изменяется от нуля до единицы и задает, насколько сильно действует деформер. Если envelope=1, то деформер работает в полную силу, при envelope=0 он полностью выключен. Этот атрибут очень удобно использовать для анимации постепенного появления деформаций, так как он «мягко» включает действие деформера.

Например, вы можете создать решетку Lattice на плече персонажа и с ее помощью смоделировать форму бицепса. Если установить для решетки envelope=0, бицепс исчезнет. Связав этот атрибут с помощью функции Set Driven Key с углом поворота локтевой кости скелета, вы можете задать плавное появление бицепса при сгибе руки в локте.

Примечание.

Атрибут envelope может принимать значение, равное

двум,

и в

этом случае

созданная вами деформация как бы «преувеличивается».

Более

того,

его значение может быть отрицательным - и в этом случае деформация как бы «выворачивается» наоборот.

Даже когда значение envelope равно нулю и деформер вроде бы выключен, MAYA не перестает вычислять его действие. Если вы хотите полностью заблокировать работу деформера и вычисления, с ним связанные, установите для него в Attribute Editor, в разделе Node Behavior, значение Node State=HasNoEffect.

Порядок деформаций

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

676

Некоторые пользователи слышали про такое понятие как «стэк деформаций» и очевидно жаждут заполучить сведения о способе, каким можно изменять порядок деформаций. В MAYA нет подобного отдельного понятия для деформаций. Если вы помните, история (History) включает в себя все действия, которые производились над объектом, как операции моделирования (Construc­ tion History), так и деформации.

Посмотреть список всех операций, производившихся над объектом, можно, нажав правую кнопку мыши над ним, и в выпавшем меню выбрать lnputs=>All Inputs...

После этого откроется окно List of input operations for, в котором представлена вся история (History) объекта в виде списка операций. Историю следует читать здесь снизу вверх, то есть операции, применявшиеся к объекту раньше, находятся в списке ниже.

Чтобы изменить порядок деформаций, надо просто потащить средней кнопкой мыши нужный деформер и бросить его в новое место.

При перетаскивании порядок следования операций изменяется следующим образом: элемент списка вставляется под тот элемент, на который он был «сброшен».

Примечание. В окне List of input operations for... можно заблокировать действие той или иной операции, изменяя атрибут nodeState для ноды, соответствующей этой операции.

Очевидно, что нельзя перетаскивать и менять порядок операций, относящихся к моделированию (Construction History).

Как только вы меняете порядок деформаций, MAYA тут же отображает результат на экране.

677

Промежуточные объекты (Intermediate Objects)

Если вы заглянете в закладки Attribute Editor для деформированного объекта или исследуете его дерево зависимостей в Hypergraph, то обнаружите, что изначальная, недеформированная форма объекта сохраняется в сцене - она только становится невидимой, причем не простым выключением атрибута visibility. Эта форма, очевидно, представляет собой копию ноды типа shape и имеет имя типа nurbsSphereShape1Orig, подчеркивающее, что это форма изначального, «оригинального» объекта.

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

Вы всегда можете увидеть ее на экране, просто выбрав деформированный объект и выполнив Deform=>Display Intermediate Object. Другой «ручной» способ заключается в том, что в закладке в Attribute Editor, соответствующей этой оригинальной форме, надо выключить галку In­ termediate Object. Тогда в увидите в Outliner или Hypergraph, что деформированный объект имеет две «формы», то есть две ноды типа shape.

678

Загадочный Tweak

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

Создайте полигональную сферу и хорошенько согните ее с помощью деформера Bend. Затем выберите любую вершину и попытайтесь потянуть ее вверх.

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

Представьте, что вы сначала перетащили вершину, а затем согнули объект. Очевидно, что после деформации вершина «уедет>>. Когда вы таскаете точки на деформированном объекте, MAYA как бы быстро возвращается к оригинальной форме, передвигает вершины, а затем сгибает объект обратно, то есть перетаскивание вершин происходит до деформации. Поэтому вершины перемещаются весьма непредсказуемо. Возможно, вы захотите перетаскивать вершины после деформации, но не убивая при этом историю и не ликвидируя деформеры. Поменять местами перетаскивание и деформации можно в окне List of input operations, описанном выше. Надо просто перетащить ноду tweak на самый верх в списке операций.

Чтобы переставлять местами перетаскивание и деформацию, MAYA должна запоминать результаты вашего «ручного» редактирования точек в отдельной ноде, эта нода и называется tweak.

Эта нода всегда создается при создании деформеров или скининга. В ней запоминается информация о перетаскивании точек, происходящем после создания деформеров.

Если вы переставите ноду tweak на самый верх в списке операций, то есть поместите ее после всех деформаций, то перетаскивание точек на деформированной поверхности снова станет нормальным и предсказуемым.

679

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

Применение ноды tweak не ограничивается возможностью переставлять операцию ручного редактирования объекта в списке деформаций. Главное достояние этой ноды - единственный анимируемый атрибут envelope, такой же, как у всех деформеров. С его помощью вы можете плавно включать/выключать результат перетаскивания точек. Установите envelope=0, и все смещенные точки «вернутся» на поверхность.

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

Вы просто редактируете форму носа вручную, таская за вершины. Затем с помощью функции Set Driven Key устанавливаете: если рот закрыт, то envelope=0 для ноды tweak, а если рот открыт, то envelope=1. Связь устанавливается между поворотами нужной кости (driver) и атрибутом enve­ lope ноды tweak (driven).

680

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