Как сделать так, чтобы персонаж одной рукой управлял велосипедом, а другой одновременно рисовал в воздухе знак @?
Тема:
Анимация.
Используемые техники и инструменты:
Joint Tool (Сустав), ik Handle (ИК-манипулятор), Point Constraint (Принудительное согласование позиций), Motion Path (Путь Движения).
Анимация персонажей не сводится к цифровому изображению мимики, реалистичной ходьбе и синхронизированной с движениями губ речи. Персонаж также должен взаимодействовать с окружающим миром. Хотя в реальной жизни это предполагает огромное количество различных действий - прикасание, хватание, отпускание, взгляд, приближение, - в компьютерной анимации все это может быть сведено к Constraint (Принудительное согласование). Самое главное согласование - это то, которое связывает персонаж с другими элементами окружающего мира: с другим объектом или персонажем. В этом уроке мы рассмотрим основные процедуры при использовании такого вида ограничений. Мы создадим анимацию персонажа, управляющего велосипедом и одновременно рисующего другой рукой в воздухе знак @.
Рис. 8.1. Руль велосипеда с ручками состоит из трех NURBS-цилиндров
Рис. 8.2. Моделируем скелет: несколькими щелчками мыши в соответствующем окне мы создаем левое плечо и руку
Рис. 8.3. Теперь создадим зеркальное отражение руки и плеча для другой половины (здесь относительно плоскости YZ)
Рис. 8.4. Два ik Handles (ИК-манипулятор) упрощают анимацию рук
Используя два ik Handles (ИК-манипулятор), вы сможете управлять движением рук в соответствии с законами инверсной кинематики. Вам только нужно взять ik Handle (ИК-манипулятор) и перемещать его туда, куда вам нужно: две кости руки будут вращаться соответственно перемещению ik Handle (ИК-манипулятор). Мы прикрепим ik Handles к ручкам руля.
Лучезапястный сустав правой ладошки встанет в центр ручки руля, как только вы установите ограничение. Через минуту мы снова поднимем руку.
Рис. 8.5. Перемещение опорных точек ручек руля вверх поднимает и запястья персонажа
Теперь давайте немного подвигаем рулем.
= sin (time) ;
В качестве аргумента функции синус можно использовать любое число, в нашем случае это будет количество секунд времени анимации. Однако значение функции синус ограничено. Оно может находиться только в промежутке между 1 и -1. Поэтому, когда вы воспроизведете анимацию, руль будет вращаться только между -1 и 1 градусами, что, конечно, едва заметно.
Рис. 8.6. Математическое равенство заставляет двигаться руль велосипеда
= 20 * sine (time);
Это выражение позволяет рулю медленно вращаться между -20 и 20 градусами вокруг оси Y, как если бы велосипед двигался по слалому. Поскольку Point Constraint (Принудительное согласование позиций) все еще активно, руки движутся в унисон с ручками руля. Выглядит это так, будто руки (а вовсе не математическое выражение) управляют велосипедом (см. рис. 8.7). Если длины рук недостаточно во время увеличения амплитуды управляющих движений, ни в коем случае не удлиняйте их - помогите им дотянуться до ручек, подвинув плечи или ключицу немного вперед.
Если вы хотите исключить одну руку из управления велосипедом, попробуйте сделать так: щелкните мышкой по ее ik Handle (ИК-манипулятор) и в окне Channel Box (Окно Каналов) в секции Shapes (Форма) установите Node State (Состояние Узла) с Normal (Нормальное) на Blocking (Блокированное) (рис. 8.8). Эта команда дезактивирует ограничение. Если хотите, можете установить здесь ключ.
Рис. 8.7. Обе руки, крепко держась за ручки, управляют велосипедом
Рис. 8.8. Переключите Node State (Состояние Узла) с Normal (Нормальное) на Blocking (Блокированное). Привязка дезактивируется, и рука может снова свободно вращаться
Мы продвинемся еще немного вперед и вместо того, чтобы полностью исключить руку из управления велосипедом, добавим для нее еще одно принудительное согласование - Locator (Локатор). Затем, вместо того чтобы менять Node State (Состояние Узла) принудительного согласования, мы изменим его Weight (вес).
Запястье моментально реагирует на это изменение и перепрыгивает в точку между ручкой руля и локатором. Если вы передвинете локатор в другую область сцены, ik Handle (ИК-манипулятор) последует за ним. Определяющими параметрами такого поведения являются Weights (Веса) двух принудительных согласований. Их вы найдете в окне Channel Box (Окно Каналов) прямо под полем Node State (Состояние Узла). Первое значение - это вес ручки руля, второе - вес локатора. Поскольку оба значения в данный момент равны, ладошка располагается между ними (рис. 8.9).
Рис. 8.9. Веса WO (для локатора) и W1 (для ручки руля) равны. Следовательно, запястье руки располагается между ними
Рис. 8.10. Когда вес для ручки руля меняется на WO = 1, а вес для локатора на W1 = 0, запястье руки возвращается к ручке руля
Меняя веса для двух принудительных согласований позиции, вы создали анимацию движения руки. Она отпускает руль в кадре 300 и через 50 кадров перемещается к локатору - там и остается все оставшееся время.
Рис. 8.11. Со значениями WO = 0 и W1 = 1 запястье руки перепрыгивает к локатору
Между 350 и 500 кадрами рука находится в статичном положении. Если вы создадите анимацию локатора в этом промежутке, например придав ему машущее движение, рука повторит его, поскольку она больше не привязана к ручке руля. Мы зададим руке совершенно определенное движение: пусть она нарисует в воздухе знак @. Это мы сможем получить путем установления ограничивающей связи локатора (но не для ik Handle (ИК-манипулятор) и пути рисования знака.
Рис. 8.12. Пишем знак @ в окне Side View (Вид Сбоку)
Рис. 8.13. Между кадрами 400 и 470 локатор оказывается «привязанным» к пути рисования знака @
Теперь рука, бросив руль, рисует в воздухе знак @, после чего возвращается к рулю и продолжает управление велосипедом (рис. 8.14). Взгляните на анимационные кривые для Motion Path (Путь Движения) в Graph Editor (Редактор Анимационных Кривых), для того чтобы убедиться, что движение не будет слишком поспешным. Вы также можете задать тип Flat (Горизонтальный) касательным ключевых кадров, используя контекстное меню временной шкалы.
Рис. 8.14. Персонаж управляет велосипедом только одной рукой. Руль продолжает двигаться. Правая рука рисует в воздухе знак @. После этого она возвращается к ручке руля и продолжает спокойно управлять
Если вы создадите велосипед и велосипедиста, не забудьте объединить локатор в одну группу с другими элементами. Было бы даже неплохо добавить небольшую анимацию знака @ в этой точке. Плечу тоже можно придать небольшое движение. А как насчет функции синус?
А теперь кое-что новенькое. Приходилось ли вам расчесывать мех?
Назад | Начало |