Анимация Скачать
презентацию
<<  Gif-анимация в Photoshop Компьютерная анимация  >>
Эффективная система анимаций для Nintendo DS
Эффективная система анимаций для Nintendo DS
Постановка задачи Эволюция анимационной системы Проблемы и решения
Постановка задачи Эволюция анимационной системы Проблемы и решения
Суммарно ~4000 кадров (около 2 минут) анимаций
Суммарно ~4000 кадров (около 2 минут) анимаций
Анимации на DS Анимация на уровне матриц Анимация на уровне геометрии
Анимации на DS Анимация на уровне матриц Анимация на уровне геометрии
Процесс получения результата Сплайны Sampling сплайнов и создание
Процесс получения результата Сплайны Sampling сплайнов и создание
Исходные данные
Исходные данные
Плюсы Алгоритмы написаны и много раз проверены Минусы Низкая
Плюсы Алгоритмы написаны и много раз проверены Минусы Низкая
Плюсы Высокая скорость чтения данных (5 Мб/с) Zero seek time Минусы
Плюсы Высокая скорость чтения данных (5 Мб/с) Zero seek time Минусы
Preprocessing (PC) Предрассчитываем данные для каждого кадра: Матрицы
Preprocessing (PC) Предрассчитываем данные для каждого кадра: Матрицы
Preprocessing Частота дискретизации - 30 fps Формат записи: Матрицы -
Preprocessing Частота дискретизации - 30 fps Формат записи: Матрицы -
Размеры анимаций на картридже огромны
Размеры анимаций на картридже огромны
Узел является нужным, если: С ним связана геометрия Его позиция
Узел является нужным, если: С ним связана геометрия Его позиция
Ненужными оказываются 30 – 90 % узлов
Ненужными оказываются 30 – 90 % узлов
Объем уменьшили на 60% Работает ощутимо быстрее
Объем уменьшили на 60% Работает ощутимо быстрее
Материалы, флаги, UV сохраняем единожды Вершины и нормали - для
Материалы, флаги, UV сохраняем единожды Вершины и нормали - для
Объем уменьшили на 50% Требуется дополнительная оперативная память
Объем уменьшили на 50% Требуется дополнительная оперативная память
Можем изменить только частоту квантования Размер данных = размер кадра
Можем изменить только частоту квантования Размер данных = размер кадра
Точно влезем в 128 Мб
Точно влезем в 128 Мб
Идея: интерполяция между ключевыми кадрами Классическое решение
Идея: интерполяция между ключевыми кадрами Классическое решение
Интерполяция координатных осей Простое решение Требуется
Интерполяция координатных осей Простое решение Требуется
Используем кватернионы Избавляемся от двойного преобразования На
Используем кватернионы Избавляемся от двойного преобразования На
Матричные анимации стали плавными Объем уменьшили на 60% 26 байт
Матричные анимации стали плавными Объем уменьшили на 60% 26 байт
Необходимые действия Распаковка из формата графического ядра Линейная
Необходимые действия Распаковка из формата графического ядра Линейная
Качество скиновой анимации улучшилось Сэкономили еще 50% памяти
Качество скиновой анимации улучшилось Сэкономили еще 50% памяти
Зверские тормоза Визуальные артефакты
Зверские тормоза Визуальные артефакты
Компилятор генерирует чрезвычайно плохой ассемблерный код Основная
Компилятор генерирует чрезвычайно плохой ассемблерный код Основная
Ассемблируем функции интерполяции s16Lerp / s32Lerp / getDotSign
Ассемблируем функции интерполяции s16Lerp / s32Lerp / getDotSign
Скорость стала такой, что стали думать переписывать на ассемблере всю
Скорость стала такой, что стали думать переписывать на ассемблере всю
Причина дрожания – потеря точности из-за формата vtx10 Решение Для
Причина дрожания – потеря точности из-за формата vtx10 Решение Для
Результаты
Результаты
Уменьшить размер данных и увеличить скорость за счет неравномерного
Уменьшить размер данных и увеличить скорость за счет неравномерного
Используйте streaming и интерполяцию ключевых кадров вместо просчета в
Используйте streaming и интерполяцию ключевых кадров вместо просчета в
Вопросы
Вопросы
Слайды из презентации «Анимации» к уроку информатики на тему «Анимация»

Автор: e_zayakin. Чтобы увеличить слайд, нажмите на его эскиз. Чтобы использовать презентацию на уроке, скачайте файл «Анимации.ppt» бесплатно в zip-архиве размером 939 КБ.

Скачать презентацию

Анимации

содержание презентации «Анимации.ppt»
СлайдТекст
1 Эффективная система анимаций для Nintendo DS

Эффективная система анимаций для Nintendo DS

Ростислав Хлебников Евгений Заякин 20 апреля 2008

2 Постановка задачи Эволюция анимационной системы Проблемы и решения

Постановка задачи Эволюция анимационной системы Проблемы и решения

Выводы (NDS animation best practices).

Содержание

2

3 Суммарно ~4000 кадров (около 2 минут) анимаций

Суммарно ~4000 кадров (около 2 минут) анимаций

Постановка задачи (1)

200 вершин 25 костей

300 вершин 40 костей

3

4 Анимации на DS Анимация на уровне матриц Анимация на уровне геометрии

Анимации на DS Анимация на уровне матриц Анимация на уровне геометрии

Чтобы было быстро и красиво На DS – учесть слабые и сильные стороны платформы.

Постановка задачи (2)

4

5 Процесс получения результата Сплайны Sampling сплайнов и создание

Процесс получения результата Сплайны Sampling сплайнов и создание

матрицы по TRS Матрицы local-to-parent Перемножение матриц в иерархии Матрицы local-to-world Скиннинг Результирующий меш.

Существующее решение (1)

5

6 Исходные данные

Исходные данные

Существующее решение (2)

+

6

7 Плюсы Алгоритмы написаны и много раз проверены Минусы Низкая

Плюсы Алгоритмы написаны и много раз проверены Минусы Низкая

производительность Кроме того, нет возможности распараллелить работу.

Существующее решение: итоги

7

8 Плюсы Высокая скорость чтения данных (5 Мб/с) Zero seek time Минусы

Плюсы Высокая скорость чтения данных (5 Мб/с) Zero seek time Минусы

Сравнительно небольшой объем (максимум 128 Мб, а желательно уложиться в 64 Мб).

Картридж NDS

8

9 Preprocessing (PC) Предрассчитываем данные для каждого кадра: Матрицы

Preprocessing (PC) Предрассчитываем данные для каждого кадра: Матрицы

local-to-parent Скинованная геометрия Runtime (NDS) Считываем необходимые данные Считаем матрицы local-to-world.

Используем сильные стороны: идея

9

10 Preprocessing Частота дискретизации - 30 fps Формат записи: Матрицы -

Preprocessing Частота дискретизации - 30 fps Формат записи: Матрицы -

16 значений fixed-32 (по 4 байта) Геометрия (дисплей-листы для непосредственной отсылки на рендеринг) Runtime Дополнительный буфер для матриц Для дисплей листов дополнительной памяти не требуется.

Первый вариант реализации

10

11 Размеры анимаций на картридже огромны

Размеры анимаций на картридже огромны

Первый вариант: результат

Картиджи

32 Мб

64Мб

128 Мб

Данные

54 Мб

25 Мб

95 Мб

Основные данные + видео и звуки

Анимации геометрии

Анимации матриц

11

12 Узел является нужным, если: С ним связана геометрия Его позиция

Узел является нужным, если: С ним связана геометрия Его позиция

требуется игре (например, позиция локатора для оружия) Все остальные узлы являются лишними!

Удаляем ненужные узлы в иерархии

12

13 Ненужными оказываются 30 – 90 % узлов

Ненужными оказываются 30 – 90 % узлов

Ненужные узлы

13

14 Объем уменьшили на 60% Работает ощутимо быстрее

Объем уменьшили на 60% Работает ощутимо быстрее

Удаляем ненужные узлы в иерархии: результат

32 Мб

64Мб

128 Мб

Было

54 Мб

25 Мб

95 Мб

Стало

54 Мб

25 Мб

35 Мб

Анимации геометрии

Анимации матриц

14

15 Материалы, флаги, UV сохраняем единожды Вершины и нормали - для

Материалы, флаги, UV сохраняем единожды Вершины и нормали - для

каждого кадра.

Избавляемся от дубликации в дисплей-листах

15

16 Объем уменьшили на 50% Требуется дополнительная оперативная память

Объем уменьшили на 50% Требуется дополнительная оперативная память

Информация о размещении динамических данных Буфер для считывания анимированной геометрии.

Удаление дубликации: результат

32 Мб

64Мб

128 Мб

Было

54 Мб

25 Мб

35 Мб

Стало

54 Мб

35 Мб

Анимации геометрии

Анимации матриц

16

12

17 Можем изменить только частоту квантования Размер данных = размер кадра

Можем изменить только частоту квантования Размер данных = размер кадра

* частота квантования * длина анимации Уменьшаем ее вдвое.

Что еще можно уменьшить?

17

18 Точно влезем в 128 Мб

Точно влезем в 128 Мб

Анимации стали «дерганными».

Уменьшение частоты квантования: результат

32 Мб

64Мб

128 Мб

Было

54 Мб

35 Мб

Стало

54 Мб

6

17 Мб

Анимации геометрии

Анимации матриц

18

12

19 Идея: интерполяция между ключевыми кадрами Классическое решение

Идея: интерполяция между ключевыми кадрами Классическое решение

(основанное на интерполяции сплайнов) не подходит! Наше решение: Интерполяция матриц Морфинг геометрии.

Делаем анимации плавнее

19

20 Интерполяция координатных осей Простое решение Требуется

Интерполяция координатных осей Простое решение Требуется

ортогонализация Проблемы с масштабированием Интерполяция с помощью кватернионов Качественная интерполяция Двойное преобразование представлений Специальный код для масштабирования.

Варианты интерполяции матриц

20

21 Используем кватернионы Избавляемся от двойного преобразования На

Используем кватернионы Избавляемся от двойного преобразования На

экспорте сохраняем по-отдельности: Кватернионы Компоненты Translate и Scale Используем линейную, а не сферическую интерполяцию кватернионов.

Интерполируем матрицы

21

22 Матричные анимации стали плавными Объем уменьшили на 60% 26 байт

Матричные анимации стали плавными Объем уменьшили на 60% 26 байт

вместо 64 на один узел на кадр.

Интерполяция матриц: результат

32 Мб

64Мб

128 Мб

Было

54 Мб

6

17 Мб

Стало

54 Мб

6

7

Анимации геометрии

Анимации матриц

22

23 Необходимые действия Распаковка из формата графического ядра Линейная

Необходимые действия Распаковка из формата графического ядра Линейная

интерполяция векторов Обратная упаковка Используем возможность упаковывать три компоненты в 32 бита (vtx10).

Морфинг геометрии

23

24 Качество скиновой анимации улучшилось Сэкономили еще 50% памяти

Качество скиновой анимации улучшилось Сэкономили еще 50% памяти

Интерполяция геометрии: результат

32 Мб

64Мб

128 Мб

Было

54 Мб

6

7

Стало

54 Мб

6

7

Анимации геометрии (3 Мб)

Анимации матриц (7 Мб)

24

25 Зверские тормоза Визуальные артефакты

Зверские тормоза Визуальные артефакты

Проблемы не закончились!

25

26 Компилятор генерирует чрезвычайно плохой ассемблерный код Основная

Компилятор генерирует чрезвычайно плохой ассемблерный код Основная

проблема - код внутренних циклов интерполяции Погружаемся в ARM ARM и ассемблируем вручную.

Причины тормозов

26

27 Ассемблируем функции интерполяции s16Lerp / s32Lerp / getDotSign

Ассемблируем функции интерполяции s16Lerp / s32Lerp / getDotSign

lerpVtx10 (хит сезона) Используем специфические команды ARM, например SMLABB Решаем проблемы компилятора, который совершенно неспособен на анализ asm-секций.

Ручное ассемблирование: что и как?

27

28 Скорость стала такой, что стали думать переписывать на ассемблере всю

Скорость стала такой, что стали думать переписывать на ассемблере всю

игру.

Ручное ассемблирование: результат

28

29 Причина дрожания – потеря точности из-за формата vtx10 Решение Для

Причина дрожания – потеря точности из-за формата vtx10 Решение Для

персонажей, на которых эффект заметен возвращаем точность (таких оказалось очень немного).

Визуальные артефакты, борьба

29

30 Результаты

Результаты

30

31 Уменьшить размер данных и увеличить скорость за счет неравномерного

Уменьшить размер данных и увеличить скорость за счет неравномерного

квантования анимаций Автоматический выбор ключевых кадров и / или Превью-плагин в Maya – WYSIWYG для художников.

Дальнейшие улучшения

31

32 Используйте streaming и интерполяцию ключевых кадров вместо просчета в

Используйте streaming и интерполяцию ключевых кадров вместо просчета в

run-time Сокращайте иерархии до минимума Активное используйте ручное ассемблирования time-critical кода Будьте аккуратны с точностью.

Выводы

32

33 Вопросы

Вопросы

33

«Анимации»
http://900igr.net/prezentatsii/informatika/Animatsii/Animatsii.html
cсылка на страницу
Урок

Информатика

126 тем
Слайды
Презентация: Анимации.ppt | Тема: Анимация | Урок: Информатика | Вид: Слайды