Guest3d.wohlnet.ru
некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга
guest3d
2.11: Виртуальная студия: Анимация персонажей (Character animation)

Раздел 2.2 раскрыл основы анимации 3D объектов. В данном разделе будет обсуждена более продвинутая форма: анимация персонажей.

Люди и животные не просто скользят при перемещении. Напротив, они используют различные части тела независимо друг от друга. И в то же время, вся эта коллекция разных конечностей движется в единой системе. Когда движется одна конечность, кожа растягивается вместе с ней.

Виртуальные скелеты
3D модели могут быть настроены для действий в подобной манере. Полигональная поверхность модели может быть отображена как скин (skin - шкурка). Виртуальный скелет может быть использован для анимации различных частей скина по отдельности. Говоря практическим языком, каждая вершина 3D модели должна быть привязана к соответствующим костям виртуального скелета.

Продвинутые пакеты моделирования, такие, как 3D Studio Max укомплектованы предварительно созданными скелетами. Они могут быть привязаны напрямую к вашему персонажу, или настроены и расширены при необходимости. Пожалуйста, обратите внимание на справочный материал вашей программы моделирования для дополнительной информации о работе с виртуальными скелетами. Ключевые слова: ‘bone’, ‘animation’, ‘biped’.

Анимация персонажей в Quest3D
Данные анимации виртуального скелета могут быть импортированы в Quest3D. 3D модель с костной анимацией будет выглядеть почти так же, как и стандартная структура канала 3D Object. За исключением двух добавленных каналов.

Канал персонажа Skinned Character расположен между каналами Surface и 3D Object Data. Он содержит определение виртуального скелета и информацию о том, как 3D модель присоединена к виртуальному скелету.

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

Переключение наоборов движений (Switching Motionsets)
Персонажам, участвующим в сцене, желательно иметь более одной анимации. В различные точки времени они могут спокойно стоять, ходить, бегать или использовать объекты, к примеру. Один из способов для переключения между анимациями - это использование Channel Switch. Операясь на индексное значение (index value), будет выбран один из наборов движений Motionsets.

Микшер движений (Motionset Blender)
Решение проблемы с жесткими переходами. Для того, чтобы переключение между анимациями было более гладким, может быть использован Motionset Blender. Этот канал поддерживает два набора движений Motionsets и одно значение Value. Это значение определяет, как много из двух наборов отображается. Значение 0 означает, что используется только первый набор Motionset, в то время, как значение 1 означает использование только второго. Значение между 0 и 1 эффективно смешивает оба набора с помощью линейной интерполяции.

Изображение ниже показывает 100% ходьбы, 50% ходьбы и сидения, и 100% сидения, соответственно.

Значение смешивания (blend value) микшера Motionset Blender может быть производным любого типа информации, используемой где-либо в программе Quest3D. Каналы Envelope могут быть использованы для конвертирования любого значения в необходимый диапазон от 0 до 1. Пример смешивания значений включает в себя пользовательский ввод User Input и скорость объекта (speed).

Дампинг Значений (Value Damping)
Компактный и экономный способ для анимации перехода от 0 до 1 и наоборот - это использование канала Value Damping.

Урок
Следующее упражнение объясняет процесс импорта анимации персонажа в Quest3D. Также оно описывает смешивание наборов движений (motionset blending).

Необходимые .X файлы:
..\Resources\Characters\Animated character – Idle.X
..\Resources\Characters\Animated character – Walk.X
Необходимые шаблоны:
Scene \ Start 3D Scene
Scene \ Simple Scene
Animation \ TimerValue
Animation \ Deformations \ Motionset Blender
Variables \ Value \ Value Damping
Logic \ User Input \ User Input

Шаг за шагом:

  • Из меню File, выберите ‘Import’.
  • Найдите файл ‘..\Resources\Characters\Animated character – Idle.X’ и нажмите ‘Open’.
  • Введите ‘Character animation 1’ в качестве Пулового имени и нажмите ‘OK’ для подтверждения.
  • В окне импорта ‘X Object Importer Options’, выберите ‘Load as indexed character’ (загрузить, как индексированный персонаж), и нажмите ‘OK’ для подтверждения. Модель 3D персонажа будет импортирована в Quest3D.

  • Переименуйте канал типа 3D Object в ‘Animated Character’.
  • Перетяните канал Simple Scene в Граф Каналов.
  • Удалите 3D Text Object
  • Установите Start 3D Scene как стартовый канал.
  • Подключите канал ‘Animated Character’ к ‘Render’. Обратите внимание, что он отображается в обзорном виде Animation 3D View.
  • Переименуйте канал ‘Motionset’ на ‘Idle Motionset’.
  • Перетяните Timer Value в Граф Каналов и присоедините его к каналу ‘Idle Motionset’. Дважды щелкните по каналу ‘Timer Value’, выберите ‘New..’ из выпадающего списка и введите ‘Animated Character Idle’ в боксе редактирования. Нажмите ‘OK’ для подтверждения и закройте окно настроек.
  • Перейдите в Раздел Анимации.
  • Убедитесь, что обзорный вид Animation 3D View отображает сцену с помощью проектной камеры Project Camera.
  • Выберите ‘Animated Character Idle’ из выпадающего списка. Установите конечный кадр на ‘450’ и нажмите кнопку Play. Обратите внимание, что персонаж начал анимироваться.

  • Перейдите в Раздел Каналов.
  • Удалите соединение между каналами ‘Idle Motionset’ и ‘Skinned Character’.
  • Добавьте Motionset Blender и подключите его к каналу ‘Skinned Character’.
  • Подключите ‘Idle Motionset’ к Motionset Blender.
  • Импортируйте файл, ‘Walk.X’ с помощью процедуры, описанной выше.
  • Найдите канал ‘Motionset’ вновь импортированной группы и скопируйте его.
  • Переключитесь в главную группу каналов.
  • Вставьте Motionset в Граф Каналов.
  • Переименуйте Motionset в ‘Walk Motionset’ и подключите его ко второму потомственному входу канала ‘Motionset Blender’.
  • Перетяните другой канал Timer Value в Граф Каналов и подключите его к каналу ‘Walk Motionset’.
  • Установите этот Timer Value на новый таймер, названный ‘Animated Character Walk’
  • Перетяните Value Damping в Граф Каналов и подключите его к третьему потомственному входу канала ‘Motionset Blender’.
  • Добавьте канал User Input и подключите его к каналу ‘Value Damping’. Установите канал User Input на клавишу со стрелкой Вверх (Arrow Up).

  • Перейдите в Раздел Анимации.
  • Выберите ‘Animated Character Walk’ (ходьба анимированного персонажа) из выпадающего меню таймера. Установите конечный кадр на ‘27’ и нажмите кнопку Play.
  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, нажав клавишу вверх. Обратите внимание, как увеличилось значение Value Damping от ‘0’ до ‘1.0’ в течение времени. Обратите внимание, как перетекла анимация 3D персонажа из состояния ожидания в ходьбу.
  • Отпустите клавишу вверх. Обратите внимание, как значение Value Damping понизилось с 1 до 0 в течение времени. Обратите внимание, что анимация 3D персонажа перетекла из ходьбы в ожидание.
  • Переключитесь в режим Edit Mode.

Законченная сцена:
..\Tutorials\2.11 – Character animation\Character animation 1 – Complete.cgr

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

Урок 2
Необходимая сцена Quest3D:
..\Tutorials\2.11 – Character animation\Character animation 2.cgr
Необходимые .X файлы:
..\Resources\Characters\Animated character – Idle.X
..\Resources\Characters\Animated character – Walk.X
..\Resources\Characters\Animated character – Run.X
Необходимые шаблоны:
· Variables \ Value \ Value Damping · Variables \ Value \ Envelope (x2)

Шаг за шагом:

  • Откройте файл, ‘Character animation 2.cgr’. Он содержит простую сцену, персонаж с несколькими анимациями и камеру от 3го лица.
  • Перейдите в Раздел Анимации.
  • Убедитесь, что вид 3D Анимации отображает камеру с помощью Проектной камеры.
  • Переключитесь в Run Mode.
  • С помощью клавиш со стрелками и мыши управляйте персонажем в сцене. Обратите внимание, что камера остается за персонажем. Заметьте, что персонаж пока не анимирован правильно и отображается лишь в состоянии покоя.
  • Переключитесь в Edit Mode.
  • Перейдите в Раздел Каналов.
  • Добавьте канал Envelope и подключите его к каналу ‘Value Damping’.
  • Создайте ярлык канала ‘Character Speed’ (часть Collision Response system) и подключите его к Envelope.
  • Дважды щелкните по Envelope. Добавьте точку в (0, 0). Эта точка означает, что когда скорость персонажа (ввод) равна 0, Motionset Blender будет полностью использовать анимацию покоя ‘Idle’.
  • Добавьте точку в (0.02,1), что значит, когда скорость персонажа будет 0.02, Motionset Blender будет полностью использовать анимацию ‘Walk’. Скорость между 0 и 0.02 приведет к смешиванию 0 и 1 между анимациями ‘Idle’ и ‘Walk’.
  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, нажав клавишу вверх. Обратите внимание, что канал ‘Character Speed’ (скорость персонажа), изменил свое значение. Заметьте, как анимация персонажа перетекла из ‘Idle’ в ‘Walk’.
  • Отпустите клавишу вверх. Обратите внимание, что канал ‘Character Speed’ сменил свое значение. Анимация персонажа перетекла из ‘Walk’ в ‘Idle’.
  • Переключитесь в Edit Mode.
  • Добавьте другой Envelope и привяжите его к каналу Value Damping, связанного с Motionset Blender, объединяющим каналы ‘Walk’ и ‘Run’.
  • Создайте еще один ярлык канала ‘Character Speed’ и подключите его к новому Envelope.
  • Дважды щелкните по Envelope. Добавьте точку (0.25, 0) и (0.5, 1).
  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Протестируйте сцену, нажав на клавишу вверх. Обратите внимание, что персонаж начал ходить.
  • Нажмите на клавиши вверх и Shift. Обратите внимание, что скорость персонажа начала возрастать и персонаж начал бежать.

Законченная сцена:
..\Tutorials\2.11 – Character animation\Character animation 2 – Complete.cgr

Если у вас есть материалы, или вы хотите дополнить существующие, если вы хотите писать новости относящиеся к технологиям реалтайм рендеринга, или имеете полезные файлы, вы можете стать резидентом guest3d.wohlnet.ru. Для этого нужно написать письмо в свободной форме на den@wohlnet.ru, с указанием вашей мотивации. Кроме того, каждый резидент получает возможность создать свою страницу, ссылка на которую будет прикреплена к каждому опубликованному вами материалу.
вход