«Big Buck Bunny»: риг кролика

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

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

  • Слой 1 — Как обычно, главные управляющие элементы рига: корневая кость CTRL_Root, контроллеры ног, таза, грудной клетки, головы и пальцев.
  • Слой 2 — Руки для режима FK.
  • Слой 3 — Руки для режима IK.
  • Слой 4 — Интересный слой. Здесь пальцы, уши и... контроллеры управления жировыми складками. :)
  • Слой 5 — Контроллеры глаз, бровей и рта.
  • Слой 6 — Контроллеры век и губ.
  • Слой 7 — Контроллеры деформации головы.
  • Слой 8 — Подумать только: пустой.
  • Слой 9 — Вспомогательные кости для различных частей рига.
  • Слой 10 — Запястья.
  • Слой 11 — И снова пустой.
  • Слой 12 — Ещё несколько беспорядочно разбросанных вспомогательных костей.
  • Слой 13 — Нечто для дополнительного управления челюстью.
  • Слой 14 — Кое-какие кости для управления губами.
  • Слой 15 — Кости для коррекции косяков деформации меша.
  • Слой 16 — Дублирующий скелет для скининга мешевого деформера.

Из переключающих шкал можно наблюдать уже привычные нам переключатели рук из FK в IK и две какие-то новые: eye lock и camouflage. Пожалуй, о предназначении последней шкалы вы уже догадыватесь, однако не будем забегать вперёд и рассмотрим всё в своё время.

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

Мы видим, что лицевой риг у кролика какой-то уж через чур навороченный, и поэтому, похоже, придётся ближе к концу рассмотреть его более подробнее, что и войдёт как раз в те 10% нераскрытых ещё нами тайн рига. Пока же мы вернёмся в первую арматуру RabbitRig из слоя 12 вьюпорта и... что бы вы думали? Правильно, обратим своё внимание на ноги!

Откроем содержимое костяных слоёв 1 и 9, Shapes выключим, а Octahedron включим. После чего попытаемся найти в кроличьих ногах что-то такое, чего мы раньше не видели.

Увы, к нашему огорчению, строение ног кролика точь-в-точь напоминает то, что уже было у косоглазой белки и летяги. Разве что носок немного короче, но это на суть всё равно не влияет. Поэтому передвигаемся выше и начинаем рассматривать спину со слоя 1.

Как видно, позвоночник сам по себе ничего интересного тоже не представляет. Он состоит из направленной вниз тазовой кости CTRL_Pelvis, создающей разделяющий центр позвоночника, а от него без всяких выкрутасов вверх идут кости CTRL_Spine1, CTRL_Spine2 и так далее по очереди до самой макушки головы. Единственное, на чём можно споткнуться, — это констрейн Copy Location, сидящий на кости CTRL_Spine1 и указывающий на CTRL_Pelvis. Учитывая, что CTRL_Spine1 является потомком главной кости рига CTRL_Root, то получается, что благодаря констрейну она будет перемещаться вместе с тазовой костью CTRL_Pelvis, а вот вращаться не будет. И это позволяет крутить таз без вращения самого кролика. В остальном же риг спины кролика — это идеал простоты. На который можно смотреть бесконечно.

Сразу же после спины у кролика начинаются руки. Однако и здесь мы не находим ничего нового. Это снова две системы костей — одна для FK, а другая для IK, которые переключаются бегунками Right или Left. Так что мы их спокойно пропускаем и подбираемся к плечам, где мы неожиданно и находим то, чем можно было бы занять наш пытливый ум.

Включим слои костей 1, 9, 15, 16 и увидим аж целых четыре контроллера для управления плечами, не считая груды промежуточных костей, через которые они влияют на мешдеформер. Первые две, MCH_ShoulderForwardTarget.R и MCH_ShoulderForwardTarget.L, расположены непосредственно перед плечами (указаны стрелками), а ещё две, MCH_CalviclePoleTarget.L и MCH_CalviclePoleTarget.R, подняты высоко над кроликом и даже над переключающими шкалами. Причём, что интересно, эти два верхних контроллера управляют плечами не прямо, а перекрёстно. То есть контроллер с левой стороны влияет на правое плечо, а контроллер с правой стороны — на левое, хотя имена у них названы правильно: для левого плеча — с буквой L, для правого — с буквой R. Просто риггер переставил их в пространстве местами.

А теперь о том, как это работает. Как обычно, на примере левой стороны.

Нижний плечевой контроллер MCH_ShoulderForwardTarget.L припаренчен к кости COR_ShoulderForward.L, для которой он одновременно является и целевой костью в констрейне Stretch To, что позволяет той растягиваться, передавая значение масштаба в Shape Key, изменяющий форму мешдеформера в районе левого плеча. Так происходит коррекция плечевой деформации в прямом направлении. А вот в обратном направлении всё несколько сложнее.

Высотный контроллер MCH_CalviclePoleTarget.L через констрейн Locked Track крутит кость ключицы Clavicle.L вдоль её продольной оси Z, а потом разница в угле поворота между этой костью и рядом расположенной COR_ShoulderBack.L передаётся в Driver Key, управляющий Shape Key-ем деформации плеча. Мы раньше не встречались с таким случаем, чтобы Shape Key-ем управляли не через прямые координаты, а через разницу между двумя костями, однако бывает иногда и так.

И вот, когда мы немного расслабились и решили, что ничего более сложного в кролике уже не будет, пришло заняться экстримом и поломать свой мозг так, чтобы в душе осталась огромная, долго не заживающая рана. Вы готовы? Нет? Тогда всё равно приступим!

Включим слои костей 1, 4, 12 и 15. Первый слой нам особо не пригодится, однако в нём находится позвоночник, на котором крепятся рассматриваемые нами кости, так что пусть он тоже будет включён, чтобы не запутаться, откуда что исходит. Пока всё выглядит не особо зловеще, но это только начало. Потягайте за кости, отмеченные стрелками. Это две верхние COR_TwistRight с COR_TwistLeft позади шеи и COR_BendForward с COR_BendBack перед и позади кролика.

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

С этой целью мы сперва обратимся к двум нижним костям, а конкретно — к задней COR_BendBack. У неё есть констрейн, который, я уверен, многие очень не хотели бы вообще видеть, — это Script, в котором имеется связь со скриптом на Python под названием rotation_difference_2.py. Поглядим, что в нём написано.

Переведя текст на русский язык, можно сказать, что скрипт вычисляет разницу в углах поворота между данной костью и целевой (в нашем примере — CTRL_RibCage), переводит результат в коэффициент диапазона 0...1 и присваивает это значение координате перемещения LocX той кости, на которой находится констрейн. Поскольку математические операции с углами производятся через кватернионы, то получается что-то вроде сравнения векторов. Если их направления совпадают, тогда LocX = 0; если абсолютно не совпадают, то LocX = 1; а если где-то посередине, тогда выйдет число в районе от 0 до 1.

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

Перед нашими глазами проплывают аж целых четыре констрейна типа Action. Найдем среди них тот, имя которого созвучно с названием недавно рассматриваемой кости COR_BendBack, и увидим, что в нём для запуска этого action действительно используются координаты LocX из вышеуказанной кости.

У измученного читателя тут же возникает непроизвольный вопрос: для чего нужен весь этот маразм? Почему нельзя было просто вручную тягать эту кость CTRL_Belly? Отвечаю: маразм предназначен для того, чтобы в зависимости от различных поворотов верхней и нижней части тела этот CTRL_Belly мог перемещаться автоматически, освобождая аниматора от анимации лишних костей. Стало быть, эти кости COR_BendBack и COR_BendForward вообще не нужно анимировать. Пусть они всегда будут расположены там, куда их поместил риггер, но когда мы повернём кролика за таз или грудную клетку, то эта кость тут же заметит разницу в поворотах с целевой костью, и живот кролика самостоятельно среагирует, куда нужно деформироваться. Хотя иногда контролер живота CTRL_Belly можно таскать и вручную. Даром, что ли, у него такой красивый фигуристый шейп? :)

Это что касается нижних корректирующих костей COR_BendBack и COR_BendForward. С верхними COR_TwistLeft и COR_TwistRight дело обстоит ещё сложнее. Хотя принцип работы у них тот же самый, но скрипт rotation_difference.py, привязанный к каждой из этих костей, вычисляет разницу в поворотах не между данной костью и целевой, а вообще между другими костями – MCH_PelvisFront и MCH_RibcageRight (или MCH_RibcageLeft). Однако результат вычислений присваивает всё же себе, то есть засовывает его в LocX той кости, на которой находится констрейн.

Что же это за кости такие MCH_PelvisFront, MCH_RibcageRight и MCH_RibcageLeft, между которыми вычисляется угол поворота? Это очень хитрые и скрытные кости, которые расположены позади позвоночника и находятся одна в другой. Они имеют одинаковые по назначению констрейны, но с некоторым отличием в целевых костях. Так, у всех из них есть констрейн Locked Track и Track To, указывающий на кость грудной клетки CTRL_RibCage. Однако дальше начинаются различия, потому что для MCH_PelvisFront он указывает на расположенную перед животом кость MCH_PelvisTargetFront, для MCH_RibcageLeft — на висящую у левой подмышки кость MCH_RibcageTargetLeft, а для MCH_RibcageRight — на точно такую же, но висящую с правой стороны MCH_RibcageTargetRight.

Что же получается в конечном итоге? Прежде всего, подмышечные кости MCH_RibcageTargetLeft и MCH_RibcageTargetRight, а также отдельно висящая перед животом кость MCH_PelvisTargetFront не предназначены для непосредственной ручной анимации. Это фиксаторы в пространстве, служащие для того, чтобы с случае поворота кроличьего таза ориентирующиеся на них кости MCH_RibcageLeft и MCH_RibcageRight создавали разность в поворотах относительно кости MCH_PelvisFront. Эта разность в углах поворотов поступает в констрейны со скриптом rotation_difference.py на костях COR_TwistLeft и COR_TwistRight, где она переводится в координаты перемещений LocX для этих костей. Ну, а затем этот LocX используется уже во множестве констрейнов типа Action на различных корректирующих меш костях.

А чтобы нам стало совсем уж плохо от всех этих наворотов, и у нас поседели последние оставшиеся на голове волосы, найдите в районе челюсти кролика кость CTRL_NeckFat и поглядите, сколько констрейнов Action она содержит.

Если считать лень, то я подскажу: их там восемь штук. Они зависят как от уже знакомых нам костей, вроде COR_BendForward или COR_TwistLeft, так и от новых, начинающихся в названии на Jaw. Оно и не удивительно, ведь это очень важная кость, которая предназначена для анимации подбородочной жировой ткани — довольно подвижной и часто встречающейся в кадре. У неё даже есть свой шейп, позволяющий идентифицировать её, как контроллер, предназначенный для ручной анимации. Однако эта кость анимируется не только вручную. Благодаря констрейнам Action она может перемещаться сама в зависимости от поворотов головы и таза. При этом повороты тазовой кости действуют на кость CTRL_NeckFat через первую группу констрейнов (BendForward, BendBack, TwistRight, TwistLeft), а повороты головы — через вторую группу (JawDown, JawLeft, JawRight, JawUp). И если с первой группой мы уже вроде как разобрались, то со второй ещё вроде как нет.

Включим дополнительно к тем слоям с костями, которые у нас уже есть, ещё один слой 13. А чтобы быстрее можно было находить контроллеры двойного подбородка и головы, нажмём на той же панели кнопку Shapes. Рассмотрим, что у нас есть (для большего эффекта я чуть повернул голову кролика). Мы видим, что появились четыре кости, указанные в констрейнах Action для CTRL_NeckFat. Отметим заодно, что влияние на эти констрейны производится через канал SizeY.

Эти кости (MCH_JawUpTarget, MCH_JawDownTarget, MCH_JawRightTarget и MCH_JawLeftTarget) являются потомками кости грудной клетки RibCage, поэтому они вращаются с телом, но не вращаются вместе с головой. Это значит, что когда мы за контроллер CTRL_Head будем поворачивать голову (что и показано на скриншоте), то все четыре указанных кости останутся в пространстве на своих местах.

Каждая из них совмещена своим корневым шарниром с растягиваемой благодаря констрейну Stretch To костью из серии COR_Jaw (их имена COR_JawUp, COR_JawDown, COR_JawRight и COR_JawLeft), которые крестом сходятся в одной точке на кости Jaw (из выключенного слоя 16). Кость Jaw через констрейны Copy Location, Copy Rotation и Copy Scale связана с контроллером челюсти CTRL_Jaw, которого тоже сейчас не видно, потому что он помещён в выключенный нами во избежание засорения вьюпорта ненужным хламом слой 15. Вы, тем не менее, можете эти слои включить и убедиться в истинности моих слов.

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

Для управления головы кролик имеет три контроллера — головной CTRL_Head, челюстной CTRL_Jaw и подбородочно-жировой CTRL_NeckFat. Последнюю кость можно двигать вручную, в результате чего подбородочный жир перемещается куда надо, не влияя больше ни на что другое. Это раз. Второе. Двигая челюстную кость CTRL_Jaw, мы тем самым тянем за собой кость Jaw, а она благодаря связи родитель-потомок начинает растягивать по оси Y соединённые с ней крестообразным образом кости из серии COR_Jaw. Это масштабирование по Y передаётся в четыре констрейна Action на контроллере подбородочного жира CTRL_NeckFat, и он начинает сам перемещаться туда, куда нужно. И третье. Когда мы поворачиваем голову за контроллер CTRL_Head, то тянем вместе с ним скрытую на слое 16 кость Head, соединённую с ним опять же констрейнами Copy Location, Copy Rotation и Copy Scale. Ну, а к Head припаренчена кость Jaw, о которой мы уже говорили. Так что вращение головы делает с подбородочным жиром почти то же самое, что и вращение челюсти CTRL_Jaw, только через небольшой промежуточный этап.

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

И наконец мы подходим к самому концу изучения кроличьего рига. Осталась лишь одна большая, очень умная и с немерянным IQ голова, в которой, к тому же, мы уже порадовали себя изучением сложного строения челюсти и жировой складки под ней. В ней имеются в общем-то не особо сложные детали управления лицом, но угнетающие нас тем, что их слишком много. А начнём мы с зеркала души, то есть с рига глаз. Тем более, что с ним связана какая-то подозрительная шкала над головой кролика eye lock.

Риг глаз кролика и похож, и не похож на то, что мы видели у других персонажей. Во-первых, нет раздельного управления глазами — оба они одновременно вращаются одним и тем же очкообразным контроллером CTRL_EyeTarget. Во-вторых, их поведение переключается шкалой eye lock, что несколько усложняет риг. В-третьих, чтобы больше вас не томить, узнаем, в чём секрет этого переключателя.

Оставим на панели костей видимыми только два слоя — 1 и 5. Первый нам нужен из-за бегунка на шкале, а второй — потому что в нём находится очкообразный контроллер CTRL_EyeTarget. Пошевелим его и понаблюдаем за поведением глаз. Вроде бы ничего подозрительного: глаза вертятся так, как и должны. Однако вызывает подозрение сам контроллер.

На панели констрейнов мы видим, что у него есть констрейн Child Of, указывающий на кость CTRL_Head. Функция констрейна Child Of в общем случае заключается в том, что он позволяет создавать между костями обычную связь родитель-потомок, но с возможностью её отключения или снижения степени влияния благодаря параметру Influence. Похоже на то, что в нужный момент очкообразный контроллер можно отвязать от головы, и тогда он будет болтаться в пространстве, не привязанный ни к чему, даже к корневой кости рига. И у нас есть только одной предположение, как выключается этот констрейн: шкалой eye lock.

Потянем за бегунок шкалы к положению free. Сперва контроллер CTRL_EyeTarget начнёт двигаться куда-то в сторону, а потом, когда бегунок достинет конца шкалы, как бы вернётся обратно и защёлкнется. Выделим снова очкообразный контроллер и поглядим на панель констрейнов: параметр Influence у Child Of выключился. Подвигаем тело кролика и заметим, что CTRL_EyeTarget остаётся на месте, а зрачки глаз отклоняющегося в стороны туловища продолжают следить за ним.

Можете подвигать и очкообразный контроллер тоже. Глаза будут снова послушно поворачиваться за ним. В общем, эффект понятен. Осталось только разобраться, как с этим контроллером связаны сами глаза. Но тут никаких секретов мы уже, к сожалению, не найдём. Принцип действия нам давно знаком и заключается он в том, что глаза через несколько промежуточных костей (по 4 в каждом глазу) следят за контроллером CTRL_EyeTarget при помощи пары констрейнов Locked Track. Особо дотошные могут включить слои 5, 6, 14, 16 и самолично всё проверить. :)

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

Будем обходить слои с костями по очереди. Включим слой 5. Здесь находится часть контроллеров для бровей, век и рта. Пошевелим их и обнаружим, что после какого-то предела перемещения контроллера деформация меша прекращается. Это значит, что управление деформацией производится через Shape Key. Назовём его самым низким уровнем управления.

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

И напоследок перейдём в слой 7. Также для большей наглядности можно включить слой 3 вьюпорта с мешдеформером. Данные контроллеры занимаются деформацией головы через сетку мешевого деформера. Это самый высокий уровень управления.

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

Попробуем проследить путь какого-нибудь одного контроллера до самого его влияния на меш. Находясь в слое 5, мы расширяли улыбку кролика, таская угловой контроллер губ CTRL_MouthCorner.L. На первый взгляд кажется, что там действует обычный Shape Key, потому что губы растягиваются только в определённых пределах, не разрывая меш на части. Однако включим снова слой 6, выделим самую угловую кость губ CTRL_LipCorner.L с левой стороны (для зрителя она будет справа) и поглядим, что за констрейны на ней имеются.

Всего мы видим шесть констрейнов. Из них первый — это Copy Location, указывающий на некую кость MCH_LipCorner.L, затем идёт Action, настроенный на масштабирование кости MCH_JawOpen по Y, а остальные четыре — это снова Action, зависящие либо от LocX, либо от LocY кости CTRL_MouthCorner.L. А вот последнюю кость мы знаем. Это губной контроллер со слоя 5. Однако получается, что растяжение губ зависит не только от него, хотя он и оказывает своё влияние через четыре констрейна Action, но и ещё от двух костей.

Поищем кости MCH_LipCorner.L и MCH_JawOpen. Обе они находятся в слое 14 и хитро переплетены с другими костями. Прежде всего вспомним, что большая вертикальная кость MCH_JawOpen управляет констрейном Action через масштабирование самой себя по Y. Получается это благодаря тому, что на ней имеется констрейн Stretch To, зависимый от контроллера челюсти CTRL_Jaw. Значит, когда челюсть кролика поднимается или опускается, она начинает растягивать кость MCH_JawOpen, в результате чего приводится в действие констрейн Action на кости CTRL_LipCorner.L, и та смещается куда-то в сторону. После этого губной контроллер CTRL_MouthCorner.L создаёт из губ гримасу несколько иной формы.

Однако это всего лишь одна шестая часть влияния на губы. Посмотрим ещё на одну часть.

В том же слое 14 есть другая интересующая нас кость MCH_LipCorner.L. Мы её выделим и поищем какие-нибудь интересные констрейны, сидящие на ней. Таковой всего один, это Copy Location, и указывает он на другую секретную кость MCH_LipCornerJaw.L, но с влиянием параметра Influence всего в 0,3. Всё становится настолько сложно, что мы уже готовы повеситься, но постараемся ещё ненадолго удержать себя от акта суицида, и, может быть, чуть позже нам станет полегче.

Переключаемся на кость MCH_LipCornerJaw.L и смотрим, что это такое. Это, как оказывается, кость-двойник, находящаяся в том же самом месте, но припаренченная не к голове, как MCH_LipCorner.L, а к контроллеру челюсти CTRL_Jaw. Отсюда делаем вывод: челюстной контроллер CTRL_Jaw оказывает на растяжение губ ещё одно косвенное влияние, но теперь с небольшим эффектом через коэффициент пропорциональности 0,3. Жуть, да? Однако углубимся ещё дальше. Я ведь обещал, что скоро станет легче, но не сказал, когда именно. :)

Во вьюпорте выключим слой 12 с основной арматурой RabbitRig и включим слой 13 с лицевой арматурой RabbitFaceRig, после чего понажимаем все 16 слоёв с костями, которые там есть. Поскольку костей снова обнаруживается очень много, и они друг друга загораживают, то переведём их в режим отображения Stick.

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

Найдём кость, которая связана с арматурой RabbitRig. Это будет MCH_MouthCorner.L (она как раз выделена на предыдущем скриншоте), потому что в ней имеется контрейн Copy Location, указывающий на кость CTRL_LipCorner.L из арматуры RabbitRig. Если выключить в нём Influence и потягать кость в разные стороны, то как раз и будет продемонстрировано непосредственное влияние её на деформацию губ.

Но несмотря на это, сама кость MCH_MouthCorner.L со скинингом никак не связана, иначе всё было бы слишком просто, а простота рига не присуща кролику, особенно, когда дело доходит до лица. Чтобы определить, на какие другие кости она влияет, нужно просто повыделять по очереди всё, что там рядом есть, и поглядеть на содержащиеся в них констрейны или родительские связи. Интересно это делать, переключаясь время от времени в Weight Paint Mode, чтобы видеть, как конкретная кость связана со скинингом. Например, расположенная справа длинная кость с любопытным названием Zygomatic.L связана с MCH_MouthCorner.L благодаря констрейну Stretch To, а на меш оказывает влияние в районе щеки.

Слева от MCH_MouthCorner.L вдоль верхней губы проложена кость COR_UpperMouthAngle.L с тремя констрейнами: Copy Location, которая указывает как раз на неё, и два Locked Track, ведущих к MCH_UpperLip.L. Прямо под ней есть такая же кость-двойник UpperOuterLip.L с констрейном Stretch To, ведущим на MCH_MouthCorner.L. К ней как раз и был произведён скининг верхней части губы. А кость MCH_UpperLip.L, за которой следит через констрейны Locked Track кость COR_UpperMouthAngle.L, расположена вертикально рядом слева.

Это был участок левой верхней части губы. А теперь посмотрим, что творится в нижней части. Там лежат точно такие же две кости-дубликаты COR_LowerMouthAngle.L и LowerOuterLip.L с похожими констрейнами, а чуть ниже попадается ещё одна COR_MouthCornerTilt.L с констрейнами Copy Location и Locked Track, указывающими на управляющую деформацией всей левой части губ кость MCH_LowerLip.L.

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

В общем, хоть это и маленькое на вид кладбище, но очень плотно заселённое, поэтому рассматривать каждую косточку — дело очень долгое и утомительное. Важно понять вот что.

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

Короче говоря, чтобы научиться всё это делать, нужно много опыта и упорства. Для образца у вас есть риг кролика, желание, я надеюсь, тоже имеется, а опыт — дело наживное. :)

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

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

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

Поскольку ни в меше, ни в арматуре нам искать нечего, то отправимся в раздел материалов, что вполне логично. Мешу кролика присвоено четыре материала — это rabbit_skin, rabbit_teeth, rabbit_fur_base и rabbit_whiskers. Откроем в отдельной части вьюпорта Ipo Driver Editor в режиме Material и начнём переключать эти самые четыре материала на панели Links and Pipeline. При этом дважды мы заметим, что в Ipo Driver Editor появляются две прилинкованные кривые, но неизвестно, к чему именно, и как они вообще выглядят.

Разобраться в этом нам поможет анализ папки с текстурами к Большому Заю. Среди них мы можем найти одну характерную текстуру, говоряющую саму за себя, — это rabbit_camo.png, которая содержит те самые рисованные полоски для размазывания их под глазами. Кривые присоединены к материалам rabbit_skin и rabbit_fur_base (иначе, собственно, и быть не может, ведь не на усах же и не на зубах им находиться). В обоих этих материалах есть текстурный слот с названием I.rabbit_camo.png, только в материале rabbit_skin он находится на 4-м слоте, а в материале rabbit_fur_base — на 6-м. Поскольку сам Blender нумерует слоты не с едининцы, а с нуля, то, следовательно, четвёртый слот будет третьим, а шестой — пятым. Выставляем эти номера в окне Ipo Driver Editor рядом с переключателем Material и видим наши кривые.

Для примера на скриншоте показано, что к материалу rabbit_skin прилинкована кривая MatIpo, посаженная на текстурный слот 3, которая регулирует цвет текстуры Col и управляется драйвером CTRL_camouflage, то есть костью из арматуры RabbitRig, путём её вращения от -180 до 0 градусов. Другими словами, кость CTRL_camouflage управляет прозрачностью текстуры с камуфляжем. Когда переключатель находится в положении 0, текстура не видна, а когда в 1, то видна.

Это всё проясняет, но ставит нас в тупик тем, что мы ведь видели в мультфильме не постепенное появление боевой раскраски из прозрачного состояние в непрозрачное, а рисование её по лицу, когда краска как бы выходила из-под пальца. Так вот, в этом случае переключатель camouflage вообще не использовался. Это было сделано без использования арматуры, то есть другими специфическими методами, рассмотрение которых не входит в нашу нынешнюю задачу. При желании вы можете попробовать разобраться в этом сами, открыв файл с анимацией \scenes\08_a-team\19.blend.

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

Что ж, похоже, что теперь-то великий и ужасный кролик Баскервилей был изучен нами полностью. Хотя, наверное, если дотошно исследовать каждую косточку, особенно среди тех, которые мы не упомянули, то можно найти ещё немало секретов, однако у любой статьи должен быть предел, а у любого риггера — стремление к самосовершенствованию!

Сайт автора: www.krre.inf.ua.
630 0 850 4
2
2013-02-09
Спасибо. Желание делать риги отбилось напрочь :-)
2022-05-02
XZamplСпасибо. Желание делать риги отбилось напрочь :-)

:-D
RENDER.RU