Guest3d.wohlnet.ru некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга |
Опубликовано ovod в 08.07.2008 в 15:52.
Раздел 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