четверг, 31 марта 2011 г.

Червяки, шкура и резиновые руки.

Итак, по порядку...
Карты, деньги, 2 ствола!

Ой... что-то не так.
А! Червяки, шкура и резиновые руки.
Вот теперь правильно! Так называлась 9-ая ПЗ-шка.

"Понеслась!" -- как говорит Саша. )))

Создаём риг для червячка по имени Гусица :)

Открыла сцену. Ути-пути, какое милое создание! :)))


Первый вопрос, -- как смоделирована? и сразу, почти уже механически нажала клавишу "1"

Ладно, создаём скелет :))

Root в районе шеи. Двигаемся к хвосту.
Как всегда создаю скелет в одном из проекционных окон. в данном случае -- Side view
Хотите создать ровненький по горизонтали скелет? Зажмите Shift и наслаждайтесь результатом! :)))


Скелет готов.
Прискиним скелет к геометрии гусеницы

Выделяю скелет и геометрию гусеницы и выполняю команду Skin=>Bind Skin=>Smooth Bind


Прискинили.


Теперь нужно создать гибкость нашему скелету.

Зайдём в настройки инструмента Skeleton=>IK Spline Handle Tool. Выделим Root кость гусеницы, затем последнюю кость. Теперь нашим скелетом управляет кривая созданная инструментом IK Spline Handle Tool. (обычный IK HandLe не даст возможности гибко управлять скелетом, так как у него нет кривой как в IK Spline Handle. Этот Tool как правило применяется для настройки гибких частей тела персонажа -- длинные хвосты, длинная шея, спина)


Заглянем в Outliner
Видим IK и видим кривую.

Выделим кривую (и скроем кости на некоторое время для работы с кривой)

Посмотрим сколько точек на нашей кривой? (CTRl+RMB)

4, а нам нужно 5 точек для управления скелетом.
Сделаем Rebuild Curve.

Выделим кривую, в настройках команды Rebuild Curve выставим Number of Spans = 2 и в итоге мы получим 5 точек на кривой





Теперь мы можем управлять нашей кривой, но работать с Control Vertex не очень удобно, выделяя их, поэтому создадим для Control Vertex контроллеры в виде кластеров (clusters).
Поочерёдно выделяя каждый Control vertex назначим ему кластер.

С последним Control Vertex-ом у меня возникла небольшая загвоздка.
Пыталась выделить 1 вертекс, но при этом выделялся IK.
Рекомендация Саши как всегда сделала меня счастливей! Скроем видимость IK на время.
И теперь у нас появилась прекрасная возможность выделить последний Control Vertex и назначить ему кластер.

Ура!

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

Тут у меня возник вопрос-- а нельзя было создать СРАЗУ контроллеры в виде nurbs кривых на Control Vertexes, минуя создание кластеров?
Оказалось, что нет такой возможности.
Кластер в нашем случае является посредником между Control vertexes кривой и управляющими кривыми, которые мы собираемся создать.

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

Передвиньте каждый кластер к соответствующей окружности.


Отфризьте окружности и припарентите к этим окружностям кластеры. (выделяем кластер, кривую, команда Parent (P))

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

Переименуем кривые для удобства

Риг почти готов. Осталось создать контроллер для головы.
Создадим nurbs окружность и поместите ее над головой гусеницы.
Pivot этой окружности поместим в кость головы.


Отфризьте окружность, затем выделите окружность, кость головы и выполните команду Parent Constrain.



Включим отображение джоинтов (вы уже знаете, где это можно сделать)

Назовём в Outlinere управляющую кривую для головы как Hand_CTRL


А сам контроллер головы припарентим к первому контроллеру спины.

Глаза (в идеале предварительно их сгруппировав) припарентим к кости головы с помощью Parent Constrain (а не просто parent).

Саша: "Parent Constrain через группу дает больше гибкости, к примеру если просто припарентить глаза к голове, то скрыв кости ты скрываешь и глаза,
Через группу ты можешь поправить положения глаз, сделать им дополнительную анимацию"

Я:"Нужно развивать нутро, чтобы почувствовать что и как нужно настраивать."

Саша: "нутру опыт нужен, шишки и грабли"

Шишки и грабли нашла, а вот опыта -- нет! :(( ;-)


Мы почти настроили нашего червячка :)

Теперь придадим гусенице свойство растягиваться.

Для создания эффекта растяжения нам понадобится информация о длине кривой. Для этого выделим нашу IK Spline кривую и в Command Line впишим следующий текст:

arclen -ch on

Звучит как магическое заклинание, не правда ли? ) ))))


Нажмём Enter чтобы выполнить команду.

После этого у нашей кривой появится нода сurveInfo1, которая хранит в себе информацию о длине кривой.

Выделим кривую, зайдём в Window=>Hypergraph: Connections и найдём ноду curveInfo.


Кликните в гиперграфе на пустом месте RMB и в выпадающем окне зайдите Rendering=>Create Render Node…


В открывшемся меню найдите ноду Multiply/Divide и кликните по ней LMB.

В гиперграфе появится нода multiplyDivide1. Эта нода умножает либо делит входящие значения на определенное число.

Эти манипуляции с числами немного стрёмные для меня лично, но на самом деле, тут ничего страшного нет.

Теперь свяжем атрибут длинны ноды curveInfo1 (arcLength) с атрибутом input1X ноды multiplyDivide1.


Для этого в гиперграфе кликним и зажмём MMB на ноде curveInfo1, переместите курсор на ноду multiplyDivide1 и отпустите MMB. В выпадающем меню выберите тип связей other.


Откроется Connection Editor.

В меню Connection Editor поставьте галочку Left Display=>Show Non-Keyable.


Выделите слева атрибут arcLength, а справа атрибут input1X.


Теперь информация о длине кривой передается в ноду Multiple/Divide.

Выделим в гиперграфе ноду multiplyDivide1. Зайдём в ее атрибуты (вкладка Multiply-Divide Attributes):
поставим режим Divide во вкладке Operation.


Затем скопируем значение Input1 по X и вставим его в значение Input2 по X.

Это значит, что значение длинны кривой будет все время делится на число 0.516.

То есть в данном случае 0.516 / 0.516 =1 это и будет значение для скейла наших костей. К примеру если мы растянем кривую до 1.
То 1 / 0.516 = 1,937 на это значение отскейлится кость.

Осталось привязать результат вычислений ноды multiplyDivide1 к атрибуту масштабирования кости по оси, которая смотрит в Bone.
В нашем случае, это ось Х.

Итак откройте Connection Editor.



Слева загрузите ноду multiplyDivide1 (чтобы это сделать нужно выделить ноду multiplyDivide1 в Hypergraphe), а справа последнюю кость скелета (выделить последнюю кость скелета в сцене и нажать кнопку Reload Right в Connection Editor). Слева выделите атрибут outputX а справа scaleX (у меня по X)



Проделаем это для всех костей скелета кроме головы, перезагружая только правую часть в Connection Editor.



Теперь наша гусеница растягивается!


Можем поупражняться в анимации.

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

Я была разочарована до слёз, но... нужно было просто дождаться следующей лекции! :))

А вот вчера я узнала, что

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


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

И для этого есть супер функция, позволяющая создать Set атрибутов, на которые будут назначены ключи по нажатию клавиши "S" (после выставления нужной нам позы для персонажа)

Итак , рассмотрим чуть подробней создание Character Set.

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

Поэтому все ключи будут стоять на атрибуты трансформации.


Выделим все управляющие объекты в нашей сцене.
Зайдём в опции меню Character -- Create Character set


Name -- назовём наш сет именем персонажа -- Gusica_Char
А в Attributes поставим галочку All Keyable except:
и тут в данном случае я оставила атрибуты для Translate и Rotate, а остальные атрибуты не буду включать в создание сета.

Я могла в принципе выбрать опцию -- From Channel box, Выделить нужные мне атрибуты в Channel Box-е, на которые будут создаваться ключи.
Тоже довольно удобно.

Жмём кнопку Create character Set, тем самым подтверждая наш выбор.


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



Теперь после того, как мы выставим нужную позу для гусеницы в нужном нам кадре, при создании ключа (нажав S) у нас будут ставиться ключи на атрибуты ВСЕХ управляющих объектов.

Очень удобно!

Зная об этом, легко и весело поползла моя гусеница.

1 комментарий: