Содержание к диссертации
Введение
1. Методы создания трехмерной компьютерной анимации персонажа 13
1.1. Технологии создания отдельных движений 14
1.1.1. Ключевая анимация 14
1.1.2. Задача инверсной кинематики 17
1.1.3. Процедурная анимация 19
1.1.4. Физическое моделирование 21
1.1.5. Захват движения 23
1.2. Трансформация графиков движения 24
1.3. Перенос движения на нового персонажа 25
1.4. Комбинирование отдельных движений 27
1.5. Выводы по первой главе и постановка задачи исследования ... 29
2. Синтез сложного движения персонажа 31
2.1. Комбинирование движений 31
2.1.1. Последовательное выполнение движений 32
2.1.2. Наложение движений 36
2.2. Заимствование движений 38
2.2.1. Общий масштаб поступательного движения 40
2.2.2. Компенсация движения 40
2.2.3. Требования и пространственно-временные ограничения движения 43
2.2.4. Определение коллизий в пространстве 46
2.3. Матрица смежности движений 48
2.4. Представление и параметризация движений 56
2.5. Выводы по второй главе 58
3. Разработка моделей представления и алгоритмов синтеза движений 60
3.1. Модель персонажа 60
3.1.1. Геометрическая модель 62
3.1.2. Скелет персонажа 63
3.1.3. Сцена, камера, источник света 67
3.1.4. Выборка звеньев. Мета группы звеньев 67
3.1.5. Определение положений звеньев 71
3.2. Алгоритм инверсной кинематики 75
3.3. Модель представления движения 79
3.3.1. Модель отдельного движения , 80
3.3.2. Импортированные движения 81
3.3.3. Комбинации движений 82
3.3.4. Заимствованные и преобразованные движения 84
3.3.5. Модели высокоуровневого описания движений 85
3.4. Алгоритм заимствования движения 87
3.4.1. Основной цикл преобразования исходного движения 89
3.4.2. Параметры заимствования/преобразования движения 91
3.4.3. Алгоритм определения последовательности преобразований 94
3.5. Автоматическое заполнение матрицы смежности 91
3.6. Модель знаний о движениях персонажа 98
3.7. Выводы по третьей главе 102
4. Реализация метода синтеза движений в системе «Motsyn» 103
4.1. Реализация принципа открытой архитектуры 103
4.1.1, Компонентная модель 104
4.1.2. Требования к программному компоненту 107
4.2. Описание основных компонентов системы 110
4.3. Краткое описание пользовательского интерфейса 115
4.4. Представление движений в базе знаний 118
4.5. Эксперимент с генерацией переходного движения 119
4.6. Эксперимент с преобразованием движения 120
4.7. Эксперимент с заимствованием движения 121
4.8. Эксперимент с синтезом сложного движения по сценарию 122
4.9. Выводы по четвертой главе 124
Заключение 126
Литература 128
Приложение
- Выводы по первой главе и постановка задачи исследования
- Требования и пространственно-временные ограничения движения
- Заимствованные и преобразованные движения
- Краткое описание пользовательского интерфейса
Введение к работе
Актуальность работы. Трехмерная компьютерная анимация персонажа во многом напоминает кукольную мультипликацию, но в сравнении с «кукольной» технологией обладает огромными возможностями в создании реалистичных персонажей и спецэффектов, используя достижения в компьютерной графике, а программные системы позволяют автоматизировать немалую часть рутинной работы аниматора: Обладая такими большими возможностями, имея практически безграничное поле для экспериментов с визуальным эффектом и динамикой движений, персонажная компьютерная анимация надежно утвердилась в таких профессиональных областях как: кино и видео индустрия (спецэффекты, замена живых актеров), художественная мультипликация, телевидение, игровая индустрия. Компьютерная анимация стала активно использоваться для анализа эргономики различных изделий. В последнее время успешно начали создаваться системы, использующие трехмерную анимацию как удобное и универсальное средство проверки правильности и демонстрации сборочных и ремонтных работ со сложными техническими устройствами. Таким образом, современные системы трехмерной компьютерной анимации становятся все более востребованными и уже достигли того уровня, когда группе профессионалов подсилу создать практически любой визуальный эффект, придать характер поведения персонажу или же создать целый виртуальный мир со своими законами.
Эффективность работы профессиональных студий анимации и доступность современных технологий компьютерной анимации для отдельных пользователей в целом существенно зависят от трудоёмкости, времени и затрат, требуемых для моделирования движений персонажей. Основная сложность анимации компьютерного персонажа заключается в том, что, во-первых, необходимо задать достаточно большое множество пространственно-временных параметров для получения движения, а во-вторых, требуется глубокое понимание динамики естественных движений моделируемых персонажей (людей, животных, пр.) для создания правдоподобной анимации.
Несмотря на разнообразие методов создания движения персонажа большинство из них представляют собой лишь дополнительные инструменты, позволяющие упростить процесс работы над анимацией для отдельных видов задач. В процессе описания движения по-прежнему приходится иметь дело с множеством параметров, а также комбинировать различные методы для того, чтобы добиться желаемого результата.
Методы работы с ранее созданными движениями не используют высокоуровневые модели описания сложного движения, а пользователю предлагается вручную выбирать моменты времени и способы совмещения (комбинирования) нескольких движений, подбирать движения для переноса на другого персонажа.
В связи с этим возникает необходимость в разработке методов автоматического синтеза движений, где задачей ставится генерация сложного движения на основе высокоуровневой модели описания требуемого движения или множества движений. Задача компьютера - доработать все низкоуровневые детали, такие как движение каждой части тела персонажа и время этих движений.
Объектом исследования является движение трехмерной компьютерной модели персонажа, способы высокоуровневого описания движения и персонажа, а также мето-
ды и алгоритмы комбинирования и преобразования моделей движений, позволяющие повысить эффективность использования ранее созданных движений.
Предметом исследования является метод синтеза сложного движения персонажа ho высокоуровневому описанию, математическое описание алгоритмов и методов комбинирования, преобразования и заимствования движений для повышения эффективности использования высокоуровневого описания и базы ранее созданных движений, разработка моделей знаний для представления персонажей, движений и связей между ними.
Цель работы - исследование и разработка формализованных методов и алгоритмов описания и моделирования движения на основе ранее созданных моделей движений для решения задачи минимизации количества параметров и времени создания сложных движений и персонажей их совершающих, внедрение которых позволит существенно повысить эффективность использования ранее созданных движений при создании трехмерной компьютерной анимации персонажа.
Для достижения поставленной цели требуется решить следующие задачи:
определение моделей высокоуровневого описания сложных движений персонажа;
выбор и обоснование методов комбинирования и преобразования движений, необходимых для синтеза движения персонажа по высокоуровневому описанию;
исследование методов комбинирования движений;
формализация задачи качественного преобразования движения по заданным логическим правилам и пространственно-временным ограничениям;
определение моделей представления персонажа и движений;
разработка алгоритма последовательного объединения двух движений;
разработка алгоритма наложения двух движений;
разработка алгоритма заимствования движения;
разработка алгоритма синтеза оптимальной комбинации движений по высокоуровневой модели описания движения на основе структуры отношений между ранее созданными движениями;
реализация модулей создания движения по ключевым кадрам, комбинирования, заимствования и синтеза движения персонажа по высокоуровневому описанию.
Методы исследования. Теоретические исследования выполнены с использованием теории множеств, теории графов, векторной и матричной алгебры, математической логики, математического моделирования, теории сплайнов, теории кватернионов.
Экспериментальные исследования выполнены с помощью разработанной программной системы и известных программных пакетов компьютерной анимации: 3D Studio MAX, Character Studio.
Достоверность и обоснованность полученных в работе результатов и выводов подтверждается корректностью разработанных математических моделей, их адекватностью по известным критериям оценки в рассматриваемой предметной области, использованием известных положений фундаментальных наук, положительными результатами проведенных экспериментальных исследований и опытом практической эксплуатации разработанной программной системы.
На защиту выносятся результаты исследования применения методов комбинирования и заимствования ранее созданных движений для синтеза сложного движения
персонажа по высокоуровневому описанию:
результаты системного поиска путей решения задачи автоматического синтеза сложной анимации персонажа по высокоуровневому описанию, полученные на основе анализа предметной области анимации и функциональных возможностей методов комбинирования и переноса движений персонажа;
метод оценки сложности и генерации переходного движения для решения задачи комбинирования двух моделей движений путем их последовательного или одновременного выполнения;
новый метод преобразования и заимствования модели движения по заданным логическим правилам и пространственно-временным ограничениям;
модель знаний о движениях персонажа, включающая в себя высокоуровневые описания на основе ранее созданных движений, отношения между движениями и операции их преобразования;
формализация и решение задачи синтеза оптимальной комбинации движений по высокоуровневой модели описания движения на основе структуры отношений между ранее созданными движениями;
разработка программно-инструментальных средств системы создания трехмерной компьютерной анимации персонажа;
результаты экспериментальных исследований и достижение преимуществ применения разработанного метода синтеза движения для увеличения эффективности работы по созданию сложной анимации персонажа;
реализация разработанных автором алгоритмических средств и программной системы для практического использования при создании анимационных роликов с трехмерными компьютерными персонажами, а также при разработке компьютерных игр.
Научная новизна полученных результатов определяется проведенными комплексными исследованиями, в ходе которых:
предложен новый подход к созданию сложного движения на основе высокоуровневого описания по заданной неполной последовательности требуемых движений или по заданной последовательности положений персонажа, базы знаний и структуры отношений между ранее созданными движениями и методов комбинирования и заимствования движений;
эмпирическим путем получена формула расчета коэффициента для оценки сложности переходного движения, что позволяет по заданным пороговым значениям определять, какие объединения движений возможны с помощью кубической интерполяции переходов между движениями;
предложен новый метод заимствования движения путем выполнения последовательности преобразований по заданным логическим правилам и пространственно-временным ограничениям, позволяющий расширить пространство поиска движений персонажа;
разработана модель знаний о движениях персонажа, включающая в себя высокоуровневые описания на основе ранее созданных движений, отношения между движениями и операции их преобразования;
предложено решение задачи синтеза оптимальной комбинации движений по высокоуровневой модели описания движения на основе представленных в базе знаний отношений между ранее созданными движениями;
создана программная система, позволяющая с помощью значительно упрощенного по сравнению с другими системами диалога с пользователем эффективно создавать сложную анимацию персонажа на основе разработанных моделей описания и генерации движений;
получены результаты экспериментальных исследований, показывающие значительное повышение эффективности и преимущества применения разработанного метода синтеза движения при создании сложной анимации персонажа по сравнению с другими методами.
Практическая полезность. Полученные в работе методы и алгоритмы синтеза сложного движения по высокоуровневому описанию позволяют существенно упростить труд аниматора при создании движений трехмерных компьютерных персонажей при создании видеороликов с трехмерной компьютерной анимацией, а также могут значительно сократить схему переходов между движениями персонажей при разработке компьютерных игр, где требуется качественная трехмерная анимация с большим набором движений персонажей.
Разработанные алгоритмы комбинирования, заимствования и преобразования движений, модели представления персонажа и движений, а также разработанный метод синтеза движения положены в основу программной системы MotSyn.
Система создания анимации MotSyn может быть внедрена в учебный процесс ВУЗов, средних и средне-специальных образовательных учреждений для ознакомления с приемами создания персонажной анимации, подготовки презентаций и учебно-методических материалов.
Предлагаемое решение задачи синтеза сложных движений в большей степени подходит для реализации в упрощенных, полупрофессиональных системах создания компьютерной анимации персонажа, которые могут использоваться для быстрого создания анимационного ролика в небольших студиях и на дому, а также для отработки окончательного варианта сценария ролика, создаваемого сложными и дорогими профессиональными средствами компьютерной анимации. Кроме того, разработанные модели и методы могут быть использованы:
1) при написании новых инструментов для профессиональных пакетов программ компьютерной анимации;
как основа при разработке «домашних студий анимации», т.е. «облегченных» программ для непрофессиональной работы с персонажной анимацией;
как метод генерации сложных движений в компьютерных играх, где требуется много трехмерных персонажей, которые могут совершать большое количество различных движений.
Реализация результатов работы. Результаты диссертационной работы внедрены в учебный процесс на кафедре «Основы машиноведения и робототехники» Ижевского государственного технического университета.
Разработанная программная система MotSyn внедрена в дизайнерских фирмах ООО «Е.Такота» (г. Нижний Новгород) и О 0 0 «Народное творчество» (г. Чайковский, Пермская область) для создания движений персонажей при производстве рекламных
видеороликов с использованием трехмерной компьютерной анимации.
Апробация работы. Основные положения диссертационной работы докладывались на 4-х международных конференциях: на 8-ой международной конференции по компьютерной графике и визуализации ГРАФИКОН-98; на 11-ой международной конференции по компьютерной графике и визуализации ГРАФИКОН-2002; на международной научно-технической конференции «Информационные технологии в инновационных проектах» (29-30 мая 2003 г.); на международной научно-технической конференции IEEE AIS'03 (3-Ю сентября 2003г.).
Публикации. Результаты работы отражены в 7 научных публикациях, в том числе: 5 статей в журналах и сборниках, 2 доклада на научно-технических конференциях.
Структура и объем работы. Диссертационная работа состоит из введения, четырех глав, заключения и приложений. Основной текст изложен на 136 машинописных страницах с таблицами и иллюстрациями. Список литературы включает 87 наименований.
Выводы по первой главе и постановка задачи исследования
Несмотря на разнообразие методов создания движения персонажа большинство из них представляют собой лишь дополнительные инструменты, позволяющие упростить процесс работы над анимацией для отдельных видов задач. В процессе описания движения по-прежнему приходится иметь дело с множеством параметров, а также комбинировать различные методы для того, чтобы добиться желаемого результата.
Методы работы с ранее созданными движениями не используют высокоуровневые модели описания сложного движения, а пользователю предлагается вручную выбирать моменты времени и способы совмещения (комбинирования) нескольких движений, подбирать движения для переноса на другого персонажа.
К высокоуровневым моделям описания движения можно отнести абстрагированные параметры динамических контроллеров, позволяющие достаточно просто и понятно управлять генерируемым движением, однако существенным ограничением контроллеров является сложность их разработки и высокая степень зависимости от структуры персонажа и вида моделируемого движения.
Целью настоящей работы является: исследование и разработка формализованных методов и алгоритмов описания и синтеза движения, позволяющих минимизировать количество параметров и время, требуемые для описания сложных движений и персонажей их совершающих, и обеспечивающих достаточную правдоподобность синтезируемых движений.
Для достижения поставленной цели необходимо разработать модель персонажа, движения и отношений между движениями для автоматического синтеза сложного движения по высокоуровневой модели описания и на основе переноса и комбинирования ранее созданных движений. Таким образом, можно выделить следующие задачи исследования: 1. Исследование и разработка алгоритма комбинирования (объединения) движений. 2. Исследование и разработка алгоритма заимствования движения. 3. Определение высокоуровневой модели описания движения. 4. Решение задачи синтеза оптимальной комбинации движений по высокоуровневой модели описания движения и на основе структуры отношений между ранее созданными движениями.
В настоящей главе рассматривается метод синтеза сложного движения, основывающийся на использовании ранее созданных отдельных движений (см, п. 1.1) и матрицы смежности движений, описывающей возможные способы переходов от одного движения к другому (способы комбинирования). Для расширения множества возможных движений персонажа, решается задача заимствования движения, т.е. перенос движения {retargeting motion) с одного персонажа на другой,
Рассмотрим основные сложности, которые связаны с разработкой алгоритмов комбинирования движений:
1) если положения персонажа на стыке двух движений достаточно сильно отличаются, то становится очень сложно автоматически генерировать правдоподобное и физически обоснованное переходное движение, здесь обязательно придется учитывать не только физику персонажа, как системы связанных тел, но и его характеристические особенности поведения (например, движения выполняются в танце или персонаж очень сильный, поэтому должен совершать резкие движения и т.п.);
2) при параллельном выполнении движений, вторичное действие может сильно видоизменить основное, чего быть не должно, а значит необходимо точно определить какая часть тела персонажа, какое движение будет выполнять или каким способом движения будут совмещаться (например, методом сложения или усреднения значений графиков).
В первом случае, будем считать, что для выполнения перехода от первого движения ко второму, необходимо подобрать другое, ранее созданное движение, начало которого очень близко к переходному моменту первого, а окончание - к переходному моменту второго движения, и сгладить (сгенерировать) переходы между всеми тремя движениями. Учитывая тот факт, что некоторые движения могут подходить друг другу не на начальных и конечных этапах, а где-то в промежутке между ними, перебираются также и промежуточные состояния каждого движения. Особенно это эффективно для циклических движений, таких как ходьба. В процессе отбора может участвовать пользователь (эксперт), указывая какие движения и каким образом могут быть скомбинированы.
Требования и пространственно-временные ограничения движения
Формальное описание требований и ПВОД можно представить в виде последовательности функций: {sfci(m(f)),...,,sfcMte(m( ))}, где m(t) функция движения; nstc - количество функций. Каждая функция определяет некоторое условие (связанное с требованием или ПВОД), а результат показывает, выполняется ли данное условие для указанного движения m(t) и, быть может, других параметров. Результат каждой функции stct можно интерпретировать следующим образом:
Конечное решение представим последовательностью операций преобразования {reformi(m(t)),...ireform»re/(m(t)} движения т, результатом которых является движение тгфгт\ функция, результатом которой является преобразованное некоторым образом движение m(t); nref- количество операций преобразования для движения m(t).
Решение задачи в данном случае сводится к перебору всех вариантов последовательностей операций преобразования и определения такой последовательности, при которой суммаstc mreform{t)) +...+ stcmtQ{mreform{t)) является наибольшей, по сравнению с другими вариантами.
Реализовать такой подход можно, однако он не будет достаточно приемлемым ни с точки зрения проблемы формального определения требований и ПВОД, ни как эффективный алгоритм решения.
Во многих случаях, реализацию определенных требований к движениям гораздо эффективнее и проще определить заранее, чем получать в результате перебора операций преобразования движения. Таким образом, с целью повышения эффективности, формальные определения требований и ПВОД можно разделить на два вида:
1) декларативный, т.е. требования и ПВОД представляются в виде логических условий, которым должен удовлетворять результат;
2) процедурный, т.е. последовательность операций, которую необходимо выполнить, чтобы обеспечить данное требование, определяется заранее. Также может быть определено несколько вариантов для выполнения требования, но выбор наиболее подходящего варианта однозначно определяется из исходных данных (персонаж, движение, дополнительные параметры).
Чтобы сократить перебор для декларативных видов требований и ограничений можно связать каждое условие с подмножеством операций преобразования, элементы которого наиболее подходят для выполнения данного требования или ограничения. Соответственно, измениться и алгоритм перебора: всеобщий перебор сведется к локальным переборам на выделенных подмножествах последовательно для каждого условия.
В качестве еще одного способа повышения эффективности алгоритма и универсальности при описании требований и ПВОД можно абстрагировать реализации классов требований и ограничений от параметра времени, а связывать их на этапе конкретного описания для движения через параметр «Периоды актуальности». Параметр «Периоды актуальности» определяет, на каких отрезках времени следует учитывать данное условие (требование или ПВОД). Таким образом, одно условие можно по-разному связывать со временем его действия при описании различных движений.
В п.3.4 дано описание конкретных структур данных и алгоритмов заимствования или преобразования движения по заданным требованиям и пространственно-временным ограничениям движения.
Пространственно-временные ограничения и требования могут быть использованы не только для поддержки целостности заимствованного движения, но и как еще один инструмент для создания и управления движениями. В п.4.6 приводится описание примера, в котором показано, как можно использовать ПВОД для упрощения создания движения «ходьба» (здесь используется преобразование исходного движения, в котором нет поступательного движения).
Наиболее общим ограничением для всех видов движений может служить условие не пересечения объектов в пространстве сцены, которое обеспечивается методом определения коллизий в пространстве {collision detection) [21].
В виде исключения не определяются коллизии между парами объектов, которые входят в некоторую кинематическую схему и образуют между собой соединение (в данном случае ограничения взаимного расположения должны определяться относительными ограничениями соединения).
Задача определения.пересечений геометрических моделей в пространстве является фундаментальной проблемой в компьютерной анимации, геометрическом и физическом моделировании, а также в задачах моделирования и проектирования роботов [53, 63, 64, 66]. Движения объектов в пространстве ограничивается различными видами их взаимодействия, включая и ограничение взаимных пересечений. В задачах, где модели объектов совершают движение, проблема определения коллизий, помимо определения факта пространственного пересечения объектов, включает также задачу определения траектории и скорости (действующих сил, в случае физического моделирования) дальнейшего движения.
В настоящей работе не ставилась задача исследования и разработки алгоритма определения коллизий, однако разработанные модели данных позволяют определить данное ограничение как требование к движению, представленное в процедурном виде (см. пп.2.2.3). Далее приводится обзор работ различных авторов, в которых предложены различные алгоритмы определения коллизий.
Заимствованные и преобразованные движения
Для выполнения операции заимствования движения необходимо определить параметры, характеризующие исходное движение и позволяющие сохранить его характерные особенности при переносе на другого персонажа. В качестве таких параметров выступают пространственно-временные ограничения (spacetime constrains).
Заимствованное движение представляется следующей структурой: где mid - идентификатор персонажа; mot - ссылка на исходное движение; tid - определяет способ заимствования (преобразования) исходного движения; mkf - структура, хранящая результат последней интерпретации в виде от дельного движения; {ЙШ } - атрибуты, определяющие параметры заимствования (преобразования), пространственно-временные ограничения, а также другие параметры.
Пространственно-временные ограничения в структуре (3, 11) и алгоритм заимствования движения (см. п.3.4) также могут использоваться для качественного преобразования (деформирования) исходного движения с целью повышения реалистичности и/или «подгонки» под некоторые общие требования для данного вида движений.
В настоящей работе рассматриваются два способа высокоуровневого описания сложного движения: 1) по заданной неполной последовательности действий персонажа; 2) по заданному начальному и конечному положениям персонажа. Неполная последовательность действий может быть отражена в сле дующей структуре: где mid - идентификатор персонажа; seqjzxpression — строка, описывающая неполную последовательность действий персонажа; mlcf- структура, хранящая результат последней интерпретации в виде отдельного движения; tid -определяет способ синтеза движения; {attrna} - набор дополнительных атрибутов, необходимых для управления процессом синтеза движения; па - количество дополнительных атрибутов.
В структуре (3. 12) строка seq_expression представляет собой выражение, состоящее из идентификаторов требуемых движений и операций последовательного выполнения и наложения этих движений. Для задания строки seq_expression можно определить следующие правила грамматики (в форме Бэкуса-Наура):
За счет очень простых и строгих правил задания строки seq_expression ее содержание может быть однозначно переведено в графическую форму (как нарис. 3. 10) или, наоборот, из более удобного для пользователя визуального представления в строку seq_expression. Для пользователя наиболее удобной формой описания сложного движения персонажа может быть таблица, в которой последовательность столбцов определяет последовательно выполняемые действия, а в строках перечисляются одновременно выполняемые действия для данного столбца (можно также предусмотреть возможность объединения столбцов и строк).
Синтез по заданному начальному и конечному состояниям персонажа представляется следующей структурой: где mid- идентификатор персонажа; State і, State2 - начальное и конечное состояние персонажа mid; mkf- структура, хранящая результат последней интерпретации в виде отдельного движения; fid - определяет способ синтеза движения; {attrm} - набор дополнительных атрибутов, необходимых для управления процессом синтеза движения; па - количество дополнительных атрибутов. Начальное и конечное состояние в структуре (3. 13) определяют изменение параметров персонажа mid я имеют следующую структуру: State = { pnameh tidh valued J і - L.nparam}, (3. 14) где рпатві - имя параметра; tidt - тип значения; value - новое значение параметра; прагат - количество измененных параметров. В пп.3.3.4 была определена структура (3. 11), описывающая заимствованное движение следующими параметрами: mid- идентификатор персонажа-приемника; mot - исходное (заимствуемое движение); tid - определяет способ заимствования (используется, если в системе реализованы несколько алгоритмов заимствования); Attr={attrna} - атрибуты, определяющие пространственно-временные ограничения и требования для описываемого движения; mkf- результат последней интерпретации (заимствования). В п,2.2 были приведены основные приемы, позволяющие избавиться от некоторых нежелательных эффектов при переносе движения, в частности: 1) корректировка общего масштаба поступательного движения для устранения эффектов «проскальзывания» и «буксования» при изменении пропорций персонажа-приемника; 2) компенсация движения для устранения эффекта «проскальзывания» при ужесточении.ограничений относительной подвижности звеньев; 3) интерпретация пространственно-временных ограничений и требований для учета характерных особенностей исходного движения или его качественного преобразования; 4) контроль коллизий для ограничения пространственных пересечений частей тела персонажа. Для работы алгоритма заимствования из исходного движения (по ссылке mot) извлекаются: metasrc = get_meta(mot.mid) — персонаж-источник в виде структуры (3. 4); mkfarc = getjnkflmof) - ключевые кадры исходного движения в виде структуры (3.6). Функция getjneta{mid) - возвращает структуру персонажа по указанному идентификатору. Функция get_mkj(piot) — возвращает ключевые кадры указанного движения mot, если произошли какие-либо изменения в параметрах mot с момента последней интерпретации, то для данного движения снова выполняется процесс интерпретации для получения новых ключевых кадров. Исходное движение представляется в виде последовательности ключевых кадров mkfsrc. Однако для выполнения всех преобразований необходимо учитывать состояние персонажа и в промежуточные (между ключевыми) моменты времени, чтобы не пропустить нежелательные, с точки зрения параметров заимствования;, изменения персонажа.
Краткое описание пользовательского интерфейса
Модуль MotSyn имеет два уровня реализации, С одной стороны он является прикладным модулем расширения для оболочки ProgShell, чтобы добиться интеграции с СУБЗ KG и получить доступ к достаточно развитым средствам графического ядра GK. С другой стороны в MotSyn реализуется специально разработанная концепция компонентной модели программной архитектуры (кратко описанная выше), что позволяет использовать все достоинства данного подхода при отладке и модернизации системы, а также настройке пользовательского диалога. Модуль MotSyn включает несколько видов диалогов с пользователем:
Конструктор персонажа - предназначен для создания скелета и построения геометрической модели персонажа. Созданный персонаж записывается в базу KG.
Ключевая анимация - диалог, предназначенный для создания и редактирования отдельных движений с использованием технологии ключевых кадров. Здесь также реализуются функции импорта и экспорта движений в формате В VH. Созданные или отредактированные движения сохраняются в базу KG.
Простое комбинирование двух движений. Здесь реализуется достаточно простой диалог, в котором пользователь должен выбрать два движения из базы ранее созданных движений, указать способ (последовательное или одновременное выполнение) и задать параметры комбинирования. Результат записывается в базу KG.
Заимствование/преобразование движения. Здесь выбирается одно из ранее созданных движений и задается персонаж (в случае заимствования выбирается персонаж, отличный от исходного для данного движения), выбирается один из экспериментальных алгоритмов заимствования/преобразования движения и задаются параметры выполнения операции. Результат записывается в базу KG.
Синтез движения по сценарию. Данный диалог предназначен для высокоуровневого описания сложного движения персонажа по неполной последовательности требуемых действий. Здесь реализуется два способа задания сценария: 1) набор текста seqexpression (см. пп.3.3.5) в специальном текстовом редакторе с возможностью выбора и подстановки движений из базы; 2) пользователь редактирует таблицу (напоминающую таблицу программы Excel), где последовательность столбцов определяет требуемую последовательность выполнения, а строки каждого столбца содержат одновременно выполняемые движения. Результат записывается в базу KG.
В левой части окна располагается дерево для создания и отображения объектов сцены и их структуры. При выборе узла дерева в правой части главного окна появляется таблица параметров и панель инструментов для интерактивного управления данным объектом. Набор параметров и инструментов интерактивного управления зависят от типа выбранного объекта. В нижней части главного окна расположена панель управления кадрами анимации. Центр главного окна занимает графический порт вывода для отображения проекции сцены через текущую камеру.
Основные функции создания движений содержит подпункт «Создать новое движение» пункта «База движений» главного меню. На рисунке 4. 4 показан диалог для выбора вариантов создания движения.
Все основные элементы описания персонажей и движений располагаются в отдельном дереве «Персонажная анимация». Рассмотрим иерархию концептов дерева «Персонажная анимация»: 1. Персонаж представляет собой класс объектов, описывающих геометрическую модель и скелет персонажей. Потомками данного концепта могут быть классы персонажей имеющих более сложные описания. 2. Движение - основной класс для представления движений. Атрибуты данного концепта предназначены для универсального представления движения в виде таблицы ключевых кадров. Таким образом, все последующие варианты описания движения представляют собой более высокий уровень., обеспечивая совместимость с другими движениями за счет отображения движения на уровне атрибутов концепта «Движение». 2.1. Импортированные движения — классы движений импортированных из других систем. Здесь хранится информация об источнике и типе импортированных данных. 2.2. Комбинированное движение - содержит два основных концепта (два потомка): 1) наложение двух движений; 2) последовательное выполнение двух движений. 2.3. Заимствование/преобразование движения - классы движений, созданные путем заимствования или преобразования на основе ранее созданного движения. 2.4. Высокоуровневое описание движения — классы высокоуровневых моделей описания движения, в частности модель описания движения по сценарию. 3. Операции преобразования движений — содержит различные операции, используемые для преобразования движений.
В эксперименте с последовательным объединением двух движений был использован разработанный алгоритм генерации переходного движения для осуществления плавного перехода от движения «ходьба» к положению «стойка». Данный пример выбран для того, чтобы показать, каким образом можно выполнить переход от некоторого движения к статическому состоянию персонажа или наоборот. Здесь движение «стойка» состоит только из одного ключевого кадра, на котором задано необходимое статическое состояние персонажа.
Для создания нового движения путем последовательного объединения двух ранее созданных движений в диалоговом режиме задаются следующие параметры (рис. 4. 9): имя нового движения (поле «Имя»); первое движение (поле «Движение 1»); второе движение (поле «Движение 2»); время окончания первого движения (первый ползунок); время начала второго движения (второй ползунок); величина аппроксимации исходных движений (поле «Аппроксимация»).