Уроки: Maya

Лицевой риггинг для профессиональной анимации. Часть 2

3. Язык и зубы

Создадим два joint и контроллеры к ним, как показано ниже. Переименуем их тоже.

Сделаем Parent teethUp к кости head, а teethDown к кости jaw. Их соответствующие контроллеры тоже парентим. Потом прискинним Upperteeth mesh к кости teethUp, а lowerteeth mesh к кости teethDown. Каждую кость для зубов сделаем Parent Constrain к соответствующим контроллерам. (15.mb)
Создадим кости для языка и переименуем их как показано ниже. Потом сделаем их Parent к кости jaw и начнем делать скин.

После скина создадим контроллеры для каждой кости языка. Каждой кости сделаем Parent Constrain к соответствующему контроллеру. Каждой нулевой группе делаем Parent Constrain к предыдущему контроллеру. Группу контроллеров сделаем Parent к контроллеру ctrl_jaw. И заканчиваем риг языка и зубов. (16.mb) (16.mov)

4. Глаза и веки.

В центре глаза создадим локаторы. Узнаем центр глаза с помощью edge глаза. Смотрите рисунок ниже. В месте локатора создадим joint. Потом прискинним кости глаза к мешу глаза.

Теперь создадим контроллеры для глаз. Один из них локальный, он поворачивает глаза на месте. А другой контроллер тот, на который глаза смотрят. (17.mb)

Теперь сделаем Constrain всех контроллеров на основе следующей таблицы.

Теперь добавим атрибут Lock к контроллеру ctrl_eye_aim. Этот атрибут контролирует, привязан ли контроллер глаза к голове или нет. Соединим этот атрибут с констрейном группы контроллера. (18.mb) (18.mov)

Теперь сделаем скин волос. Для этого выделим neck, head и hair и Skin>Bind. Потом копируем весы скина головы в скин волосы. Выделив heaD и hair нажмем на Skin>Copy Skin Weights. Переместим Hair в группу mesh. (19.mb) (19.mov)
Пришла очередь сделать риг глаза. Сначала создадим joint под названием Eye_l_socket. Дублируем его. Парентим эти кости к кости головы. Потом добавим их к скину головы.

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

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

Добавим в скин только кости, которые ближе к векам. Кости, которые начинаются в центре глаза только для поворота костей а не для скина. Скинним кости век как показано ниже. (20.mb) (20.mov)


Теперь создадим контроллеры век. Их поставим на места как показано на рисунке. Иерархию контроллеров тоже сделаем таким образом.

Пивоты контроллеров должны быть в центре глаза. Смотрите рисунок. (21.mb)

Потом констрейним кости к контроллерам как показано на таблице.

Теперь будем делать закрывание верхних век глаз. Для этого откроем Set Driven Key. Выделим ctrl_eye_r_lidUp и ctrl_eye_l_lidUp, нажимаем на Load Driver. Следующие SDK группы загрузим как Set Driven.

Сначала поставим ключ на нулевой позе. Потом переместим ctrl_eye_r_lidUp и ctrl_eye_l_lidUp на -2.5 по translateY. SDK группы поставим на следующие позы.

Теперь на атрибутах translateY контроллеров ctrl_eye_r_lidUp и ctrl_eye_l_lidUp поставим 1. А SDK группы будут как показано ниже.

Сделаем по направлению TranslateX. Сначала поставим ключ на нулевой позе, когда все атрибуты стоят на 0. Потом поставим 1 на атрибутах translateX контроллеров ctrl_eye_r_lidUp и ctrl_eye_l_lidUp. Веки сделаем в следующей позе, поставим ключ.

Потом поставим -1 на атрибут translateX. Щеки сделаем в следующей позе. Когда контроллер перемещается внутрь, щеки тоже перемещаются внутрь и вверх.

Остальные часть контроллеров тоже сделаем таким образом. Выделив группы Grp_l_lids_all и grp_r_lids_all создадим группу под названием grp_lids. Её сделаем Parent к контроллеру ctrl_head. (22.mb) (22.mov)
Теперь сделаем скин ресниц. Для этого выделим кости верхнего века и глазное яблоко и сделаем скин ресниц. Потом копируем вес скина с головы на ресницы. Если нужно поправляем их. Переместим eyeLashes в группу mesh. (23.mb)

Теперь сделаем линии век. Эти линии играют большую роль в анимации.

Создадим кости и контроллеры. Переименуем следующим образом.

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

Закончив скин сделаем Parent группы grp_eye_l_upperLids и grp_eye_r_upperLids к контроллеру ctrl_head. (24.mb)

5. Брови

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


Кости брови припарентим к кости головы. Три маленькие контроллеры брови при парентим к контроллеру ctrl_brow_l_main. Сделаем Parent Constrain каждый кости к соответствующему контроллеру. Потом дублируем кости и контроллеры брови для правой стороны. Прискинним кости к мешу брови eyeBrow. (25.mb)
Теперь добавим кости брови, в меш лица с помощью Skin>Edit Influences>Add Influences. Начнем поправлять веса. В процессе скина стало ясно, что нужно еще одну кость между бровями. Создадим одну кость и контроллер в центре, между бровями.

Сделаем Parent этой кости к кости головы. Констрейним эту кость к контроллеру ctrl_brow_center с помощью Parent Constrain. Потом добавим в скин головы. Закончив скин припарентим группу grp_brows к контроллеру головы. По частям не показал как сделал скин, думаю, вам будет нетрудно скиннить брови. (26.mb) (26.mov)
Как видим влияние наших контроллеров не оправдывает наши ожидания. Не чувствуется гладкость, упругость кожи и мышцы. Сейчас видно, как будто они прискиннены к костям и контроллерам. Здесь не ощущается, что мышцы контролируют брови. В общем, не похоже на хорошие брови. Для этого поправим перемещение контроллеров, чтобы сделать так, будто мышцы шевелят бровями. Вопрос как будем это делать? Первый и самый обычный способ, это увеличить влияние одного контроллера на окружающие контроллеры. Это трудно сделать с помощью скина. Почти невозможно. Мы сделаем это с помощью Set Driven Key. Ниже будут несколько таблиц для него. Они помогут соединить контроллеры для конкретных поз бровей. Чтобы было легче понять, каждый контроллер назвал обычными буквами.

Когда A двигается по вертикали В тоже должен двигаться на 20% по вертикали. Тогда появиться ощущение что у А есть мускулы под кожи. А соединим с парент группой B. Это является SDK (Set Driven Key) группа. Для этой цели была создана такая группа в иерархии.

 Driver                    Attribute         Pose            Driven                                    Attribute          Pose

ctrl_brow_r_outer       TranslateY      0          ctrl_brow_r_mid_SDK                     TranslateY      0

ctrl_brow_r_outer       TranslateY      1          ctrl_brow_r_mid_SDK                       TranslateY      0.2

ctrl_brow_r_outer       TranslateY      -1         ctrl_brow_r_mid_SDK                       TranslateY      -0.5

 

После этого соединим А и В по горизонтали.

 

Driver                      Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_outer       TranslateX      0          ctrl_brow_r_mid_SDK                       TranslateX      0

ctrl_brow_r_outer       TranslateX      0.5       ctrl_brow_r_mid_SDK                       TranslateX      0.2

ctrl_brow_r_outer       TranslateX      -0.5      ctrl_brow_r_mid_SDK                       TranslateX      -0.2

 

Когда переместим А вниз, тогда он входят в череп. Для того чтобы исправить соединим эту движению с TranslateZ его SDK группу на 20%.

 

            Driver                   Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_outer       TranslateY      0          ctrl_brow_r_outer_SDK         TranslateZ      0

ctrl_brow_r_outer       TranslateY      -1         ctrl_brow_r_outer_SDK         TranslateZ      0.2

 

Если добавим 20% поворот по RotateY то у нас получится хороший результат.

 

    Driver                     Attribute          Pose         Driven                             Attribute          Pose

ctrl_brow_r_outer       TranslateY      -1         ctrl_brow_r_outer_SDK         RotateY          10

ctrl_brow_r_outer       TranslateY      0          ctrl_brow_r_outer_SDK         RotateY          0

 

Если А перемещается вниз тогда E тоже перемещается на 20%.

         Driver                    Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_outer       TranslateY      0          ctrl_eye_r_upperLidD_SDK  TranslateY      0

ctrl_brow_r_outer       TranslateY      -1         ctrl_eye_r_upperLidD_SDK  TranslateY      0.2

 

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

 Driver                    Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_mid         TranslateY      0          ctrl_brow_r_mid_SDK                       TranslateZ      0

ctrl_brow_r_mid         TranslateY      -1         ctrl_brow_r_mid_SDK                       TranslateZ      0.3

ctrl_brow_r_mid         TranslateY      -1         ctrl_brow_r_mid_SDK                       RotateX          6

ctrl_brow_r_mid         TranslateY      1          ctrl_brow_r_mid_SDK                       RotateX          -13

 

Вертикальное движение В влияет на А и С 20%. Горизонтальное движение В тоже влияет на A и C 20%.

     Driver                     Attribute          Pose         Driven                                    Attribute      Pose

ctrl_brow_r_mid         TranslateX      0          ctrl_brow_r_outer_SDK         TranslateX      0

ctrl_brow_r_mid         TranslateX      0.5       ctrl_brow_r_outer_SDK         TranslateX      0.1

ctrl_brow_r_mid         TranslateX      -0.5      ctrl_brow_r_outer_SDK         TranslateX      -0.1

ctrl_brow_r_mid         TranslateX      0          ctrl_brow_r_inner_SDK         TranslateX      0

ctrl_brow_r_mid         TranslateX      0.5       ctrl_brow_r_inner_SDK         TranslateX      0.1

ctrl_brow_r_mid         TranslateX      -0.5      ctrl_brow_r_inner_SDK         TranslateX      -0.1

ctrl_brow_r_mid         TranslateY      0          ctrl_brow_r_outer_SDK         TranslateY      0

ctrl_brow_r_mid         TranslateY      0.5       ctrl_brow_r_outer_SDK         TranslateY      0.1

ctrl_brow_r_mid         TranslateY      -0.5      ctrl_brow_r_outer_SDK         TranslateY      -0.1

ctrl_brow_r_mid         TranslateY      0          ctrl_brow_r_inner_SDK         TranslateY      0

ctrl_brow_r_mid         TranslateY      0.5       ctrl_brow_r_inner_SDK         TranslateY      0.1

ctrl_brow_r_mid         TranslateY      -0.5      ctrl_brow_r_inner_SDK         TranslateY      -0.1

 

Движение B вниз перемещает F на 20% вниз.

         Driver                    Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_mid         TranslateY      0          ctrl_eye_r_upperLidC_SDK  TranslateY      0

ctrl_brow_r_mid         TranslateY      1          ctrl_eye_r_upperLidC_SDK  TranslateY      0.2

ctrl_brow_r_mid         TranslateY      -1         ctrl_eye_r_upperLidC_SDK  TranslateY      -0.2

 

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

Driver                   Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_mid         TranslateX      0          ctrl_brow_r_mid_SDK                       RotateY          0

ctrl_brow_r_mid         TranslateX      1          ctrl_brow_r_mid_SDK                       RotateY          14

ctrl_brow_r_mid         TranslateX      -1         ctrl_brow_r_mid_SDK                       RotateY          -10

 

Движение С по вертикали влияет на В на 20%, а на I влияет на 10%. Потому что она расположена чуть дальше. Также соеденим горизонтальные перемещения на 20% и 10%.

Driver                 Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_inner       TranslateY      0          ctrl_brow_r_mid_SDK                   TranslateY      0

ctrl_brow_r_inner       TranslateY      1          ctrl_brow_r_mid_SDK                     TranslateY      0.2

ctrl_brow_r_inner       TranslateY      -1         ctrl_brow_r_mid_SDK                       TranslateY      -0.2

ctrl_brow_r_inner       TranslateX      0          ctrl_brow_r_mid_SDK                    TranslateX      0

ctrl_brow_r_inner       TranslateX      -1         ctrl_brow_r_mid_SDK                       TranslateX      -0.2

ctrl_brow_r_inner       TranslateX      1          ctrl_brow_r_mid_SDK                       TranslateX      0.2

ctrl_brow_r_inner       TranslateY      0          ctrl_brow_l_inner_SDK          TranslateY      0

ctrl_brow_r_inner       TranslateY      1          ctrl_brow_l_inner_SDK          TranslateY      0.1

ctrl_brow_r_inner       TranslateY      -1         ctrl_brow_l_inner_SDK          TranslateY      -0.1

ctrl_brow_r_inner       TranslateX      0          ctrl_brow_l_inner_SDK          TranslateX      0

ctrl_brow_r_inner       TranslateX      1          ctrl_brow_l_inner_SDK          TranslateX      -0.1

ctrl_brow_r_inner       TranslateX      -1         ctrl_brow_l_inner_SDK          TranslateX      0.1

 

Влияние на H соединим с помощью Point Constrain. Для этого создадим локатор под названием loc_brow_center на месте Н. Выделим локатор, потом C, I, группу контроллера H (ctrl_brow_center_0)  и сделаем Point Constrain. Тогда эти три объекта влияет на H по 33%.

 

Вертикальное движение C влияет на G 20%.

        Driver                   Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_inner       TranslateY      0          ctrl_eye_r_upperLidB_SDK   TranslateY      0

ctrl_brow_r_inner       TranslateY      1          ctrl_eye_r_upperLidB_SDK   TranslateY      0.2

ctrl_brow_r_inner       TranslateY      -1         ctrl_eye_r_upperLidB_SDK   TranslateY      -0.2

 

Вертикальное движение очень деформирует лоб. Как будто нет черепа. Для того чтобы сделать как будто сверх черепа есть мышцы, соединим С и SDK группа С в RotateX. Добавим TranslateZ ради красоты. Теперь контроллер скользит по черепу.

 

       Driver                   Attribute          Pose    Driven                                    Attribute          Pose

ctrl_brow_r_inner       TranslateY      0          ctrl_brow_r_inner_SDK         RotateX          0

ctrl_brow_r_inner       TranslateY      1          ctrl_brow_r_inner_SDK         RotateX          -10

Вторую часть брови делаем точно так же. После этого сделаем Parent loc_brow_center к grp_brows. А grp_brows к ctrl_head.

 

2 | След.
4129 Автор:
Актуальность: 469
Качество: 469
Суммарный балл: 938
Голосов: 14 оценки

Отзывы посетителей:

аватар
 
oleg_Maya 1 0

Очень круто. Спасибо!  Ждём новые уроки.

Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 333 уникальных посетителей