Разработка системы анимации персонажей автор: Загарских Александр Сергеевич Научный руководитель: Безгодов Алексей Алексеевич Предметная область • Тренажеры и симуляторы • Игры • Интерактивные галереи • Особенности: – Время расчета кадра < 30-50 мс 2 Способы задания трёхмерных моделей 3 Анимация • Анимация – последовательность визуальных изображений, воспроизведенных с определенной частотой. • Виды анимации: – Анимация по ключевым кадрам – Процедурная анимация • Способы задания анимации: – Повершинная – Скелетная 4 Скелетная анимация • Скелет • Скининг • FK - IK 5 Цель работы • Изучить существующие методы создания, задания и воспроизведения анимации • Спроектировать систему анимации человекоподобного персонажа для системы виртуальной реальности • Реализовать систему анимации, провести ряд мер по оптимизации системы • Наметить дальнейшие пути развития системы 6 Математические основы скелетной анимации Математическое представление сочленения jx ( P, q, dP, dq, j); Математическое представление вершины •V P, n, j1 , j2 , j3 , j4 , w1 , w2 , w3 , w4 ; Скининг 4 P orient ( ji ) bind _ orient ( ji ) (bind _ position(V ) bind _ position( ji )) position( ji ) wi ; i 1 Скининг для GPU P bind _ position(V ) M; M T1 R1 T2 R 2 ; 7 Инструмент для создания анимации • Autodesk Maya 2008 – Легко расширяемый интерфейс • Собственноручно разработанный plug-in для экспорта геометрии и анимации 8 Программная реализация • Состоит из следующих систем: – – – – – – Графической Физической Геометрической Игровой Звуковой Скриптовой • Middleware: – – – – – – – Direct3D 9 HLSL PhysX rapid_xml OpenMaya FMOD Lua • 2.6 Mb code • 150 Mb art 9 ESX <scene> <scene_node name="world" class="" affector="" position="0 0 0 1" orient="0 0 0 1"> <scene_node name="pPyramid1" class="mesh" affector="" position="0 0 0 1" orient="0 0 0 1"> <mesh> <vertices> <vertex p="x y z" n="x y z" c0="1 0 0 1" uv0="u v" jw="w1 w2 w3 w4" ji="j1 j2 j3 j4"/> ... </vertices> <triangles> <triangle inds="0 1 2"/> ... </triangles> <shading_groups> <shading_group start="0" num="4" shader="*color7F7F7FFF"/> </shading_groups> <joints> <joint name="joint1" parent="-1" p="x y z" orient="w x y z" def_p="x y z" def_orient="w x y z" bind_orient="w x y z" bind_pos="x y z" cons_min="α β γ" cons_max=" α β γ "/> ... </joints> </mesh> </scene_node> </scene_node> </scene> 10 DFD в системе анимации Maya Plug-in Input System Geometry Engine Game Rendering Engine PhysX 11 Объект персонажа • Объект персонажа – часть игровой системы • Состояния объекта: – – – – – – – Бег Ходьба Стрельба Прыжок Падение Ранение Смерть Анимация ходьбы Анимация бега 12 Физика тряпичной куклы (RagDoll) • Физика • Генерация лимбов 13 Таргетинг + IK • Прицеливание персонажа осуществляется с помощью вращения специального сочленения 14 Аттачинг • Оружие которое держит персонаж крепится к скелету с помощью дополнительного сочленения идущего от кисти руки 15 Результаты и выводы • Изучены существующие методы создания, задания и воспроизведения анимации • Спроектирована и реализована система анимации человекоподобного персонажа для системы виртуальной реальности • Дальнейшие пути развития системы – Инверсная кинематика (IK) – Полностью процедурная анимация персонажа на базе IK – Перенос вычислений на GPU 16 Вопросы? 17