Аннотация: В данной статье рассматривается возможность сжатия данных при использовании скелетной анимации.
Научный руководитель: Харламенков А. Е.
Проблема
В
Жестовый язык насчитывает более
Способы решения
Есть два способа решения проблемы с памятью при разработке приложения: сделать динамическую подгрузку анимации; оптимизировать данные анимации.
К оптимизации и сжатию анимационных данных можно подойти разными способами. В этой статье будет рассказано о двух основных методах: квантовании и подгонке кривой. Сжатие всегда приводит к компромиссу между уменьшением качества и оптимизацией памяти, поэтому далее в исследовании
Введём несколько определений, знаний которых необходимо при рассмотрении вопросов оптимизации анимаций. Кватернионы предоставляют удобное математическое обозначение положения и вращения объектов в пространстве. В сравнении с углами Эйлера, кватернионы позволяют проще комбинировать вращения, а также избежать проблемы, связанной с невозможностью поворота вокруг оси, независимо от совершенного вращения по другим осям. В сравнении с матрицами они обладают большей вычислительной устойчивостью и могут быть более эффективными благодаря чему и нашли своё применение в компьютерной графике. [1]
Сплайн — это функция, область определения которой разбита на конечное число отрезков, на каждом из которых она совпадает с некоторым алгебраическим многочленом (полиномом). Максимальная из степеней использованных полиномов называется степенью сплайна. Разность между степенью сплайна и получившейся гладкостью называется дефектом сплайна. [2]
Квантование
Квантование — разбиение диапазона значений временных отсчётов сигнала на конечное число уровней и округление каждого отсчёта до одного из двух ближайших к нему уровней.
Квантование — это процесс процесс приведения значений из непрерывного набора возможностей к относительно небольшому дискретному множеству. Скелетная анимация хранит в себе данные о положении, углах поворота и размерах. Процесс квантования трёхмерных векторов, которые используются для представления положения и размеров, не является сложным. Он осуществляется путём получения их максимальных и минимальных значений и равномерного разбиения значений в данном диапазоне. Однако большая часть качественных анимационных клипов задействует поворотный механизм.
Мы используем кватернионы для представления поворотов в трёхмерном пространстве.
(1) |
Опуская самую большую компоненту, можно ограничить диапазон оставшихся трёх до (2),
, | (2) |
так как в единичном кватернионе компонент вне этого диапазона должен иметь наибольшее абсолютное значение и, следовательно, быть компонентом, который можно было опустить. Далее максимизируется точность путём квантования в меньший диапазон, чем [-1, 1], который является диапазоном, который можно было бы использовать, если бы не был исключён самый большой компонент.
Рис. 1. Кватернион в памяти
Благодаря данному подходу, выделяются по
Это 48-битное квантование кватернионов гарантирует точность в 0,000043. Такого результата достаточно для большинства случаев. Более того, когда был применён вышеописанный метод, не было замечено видимых потерь качества среди уже готовых анимаций. Также хотелось бы отметить низкую вычислительную сложность данного алгоритма, что несомненно является большим плюсом.
Настройка кривых
Рис. 2. Сплайн
Несмотря на отличные результаты предыдущего метода, результат нельзя считать до конца удовлетворительным. Поэтому рассмотрим ещё один метод дальнейшего сжатия с подгонкой кривой к изменяющимся значениям кватернионов.
Рис. 3. 1-я, 5-я, 10-я, 50-я и последняя итерации
Подгонка сплайнов производится итеративно. Процесс начинается только с двух ключевых кадров, которые включают начало и конец рассматриваемой анимации. Далее необходимо с каждой итерацией добавлять больше ключевых кадров, чтобы снизить погрешности до максимально допустимого уровня. В ходе каждой итерации определяется отрезок между ключевыми кадрами с наибольшей погрешностью, а затем в середину данного отрезка выставляется новый ключевой кадр.
На рисунке выше можно увидеть, как кривая красного цвете постепенно приближается к исходной синей кривой. Жёлтые точки представляют собой дополнительные кадры на каждой итерации. В результате после
В результате настройки кривых квантованные результаты удалось сжать в разных случаях до 25%-75% от изначальных. Решающее значение в вопросе максимального сохранения исходного качества при значительной степени сжатия играет роль правильный выбор пороговых значений ошибок для данных о положении, вращениях и размерах.
Снижение потерь
Наиболее заметным артефактом, который возник
Одним из способов избавиться от подобной ошибки является использование адаптивных уровней ошибки.
Есть также и другой, достаточно простой и эффективный подход, называемый пиннингом. Данное понятие происходит от английского “pin” — приколоть. Он заключается в том, что при сжатии данных конечность как бы прикалывается к изначальной позиции и не зависит от изменений в родительских элементах. [6]
Эффективная организация данных
Наконец, рассмотрим способы эффективного использования методов, описанных ранее в данной статье. В процессе работы над ними было важно помнить о возможных утечках памяти, которые могли бы крайне неприятно сказаться на производительности после определённого времени использования. Поэтому было принято решение организовать данные таким образом, чтобы оптимизировать работу с кэшем.
Для начала, было принято решение о том, что все ключевые кадры, то есть кадры хранящие информацию о положении, вращениях и размерах каждого сустава, были объединены в единый непрерывный блок памяти. Одной из распространённых практик является создание отдельного блока памяти для каждого канала в суставе, но такая,
Листинг 1.
struct CompressedFrame { // Normalized key time (0(0.0) — 65535(1.0)) uint16_t keyTime = 0; uint16_t jointIndex = 0; // Payload, which can be a quantized 3d vector or a quantized quaternion // depending on what type of channel this data belongs to uint16_t v[3]; ChannelType GetChannelType () const{ // Most significant two bits of this 16bit index contains channel type info. return static_cast<ChannelType> ((jointIndex & (0xc000)) >> 14); } void SetChannelType (ChannelType type){ jointIndex |= (static_cast<uint16_t> (type) << 14); } std:: uint16_t GetJointIndex () const{ return jointIndex & 0×3fff; } }; |
В вышеуказанном листинге (Листинг 1) производится квантование ключевое время до
Правильный порядок ключевых кадров становится критическим, независимо от типа соединения или канала, в одном отделении. Их можно просто упорядочить по ключевому времени (keyTime), но при этом возникают проблемы. Можно
Рис. 4. Пример отделения с ключевыми кадрами и курсором, который указывает на позицию между Tn+1 и Tn+2
Предположим есть четыре ключевых кадра (отсортированные по времени ключа keyTime) и курсор (Cursor) времени, который обозначает текущее время воспроизведения. Необходимо получить информацию о Tn, Tn + 1, Tn +
Рис. 5. Пример отделения с ключевыми кадрами и курсором, который указывает на позицию между Tn+1 и Tn+2 с обозначением ключей вращения
Однако этот подход не является оптимальным. Скажем, эти Ts являются позиционными кадрами. Может существовать какое то количество кадров вращения между двумя соседними кадрами позициями (как вы можете видеть на рисунке 5), если анимация происходит в основном из вращательных движений.
В итоге одно из решений, чтобы воспроизвести анимацию за один проход (при этом возможно кеширование, что сильно повышает производительность) — расположить кадры по тому, когда они нужны, а не по времени кадра.
Рис. 6. Расположение кадров по времени и расположение кадров по релевантности, по тому, в какой момент они нужны
Вывод
В среднем, метод квантования, который обсуждался в этой статье, уменьшил вдвое потребности в памяти. Можно сделать оптимизацию ещё сильнее, подобрав лучшую кривую, так как она требует предварительной обработки всех данных, но ранние результаты показывают, что она достигнет ещё 50% сжатия, а это значит, что оригинальные показатели использования памяти и производительности сокращаются до 25%.
Дополнительно можно исследовать многие направления, например, 32-битное (вместо 48-битного) квантование кватернионов, различные параметризации узлов для подгонки кривой, использовать метод наименьших квадратов вместо итеративного подхода, использовать усложнённую настройку того, как итеративный подход выбирает следующий ключ для добавления, и т. д.
Литература
-
КВАТЕРНИОНЫ [Электронный ресурс]: Большая российская энциклопедия — электронная версия. – Режим доступа: https://bigenc.ru/mathematics/text/2057671.
-
СПЛАЙН [Электронный ресурс]: Большая российская энциклопедия — электронная версия. – Режим доступа: https://bigenc.ru/mathematics/text/4247938.
-
Дискретизации и квантование цифрового сигнала. [Электронный ресурс]. – Режим доступа: http://lib.ru/TEXTBOOKS/TEACH/Physics/node25.html.
-
Introduction to
Catmull-Rom Splines [Электронный ресурс]. – Режим доступа: https://www.mvps.org/directx/articles/catmull/. -
Armstrong J. Catmull Rom Spline: TechNote /J. Armstrong. –№ TN-06–001. – P. 10. -
Autodesk Maya Online Help: Pin and unpin your character’s effectors [Электронный ресурс]. – Режим доступа: https://download.autodesk.com/us/maya/2009help/index.html? url=CSS_Pin_and_unpin_your_characters_effectors.htm, topicNumber=d0e319321.
-
Basics Of Maya Key Frame Animation — 3dtutorialzone.com [Электронный ресурс]. – Режим доступа: http://www.3dtutorialzone.com/tutorial? id=96.
-
Харламенков А. Е. Адаптация глухих и реакция социума / А. Е. Харламенков // Научные труды Института непрерывного профессионального образования. – 2014. – Вып. № 2. –
С. 269–273. -
Харламенков А. Е. Аналитический обзор электронных
on-line словарей жестовых языков: монография / А. Е. Харламенков. – Москва: РУСАЙНС, 2017. – 218 с. -
Харламенков А. Е. Итоги издательской деятельности Института Непрерывного Профессионального Образования за
2010 — 2015 годы / А. Е. Харламенков // Научные труды Института непрерывного профессионального образования. – 2015. – Вып. № 6 (6). –С. 423–439. -
Харламенков А. Е. Итоги научной работы Института Непрерывного Профессионального Образования за
2010 — 2015 годы / А. Е. Харламенков // Научные труды Института непрерывного профессионального образования. – 2015. – Вып. № 6 (6). –С. 413–422. -
Харламенков А. Е. Короткие слова: предлоги, частицы, союзы. Справочник переводчика русского жестового языка: [Справочное издание]: Русский жестовый язык. Начала / А. Е. Харламенков. – Москва: Издательство «ОнтоПринт»,. – 154 с.
-
Харламенков А. Е. Методика преодоления безусловного рефлекса при постановке рук в процессе освоения дактильной и жестовой речи / А. Е. Харламенков // Научные труды Института непрерывного профессионального образования. – 2014. – Вып. № 3. –
С. 44–49. -
Харламенков А. Е. Русский жестовый язык. Начала.
Жестово-русский словарь: [Учебное пособие]: Русский жестовый язык. Начала / А. Е. Харламенков. – Москва: Издательство «ОнтоПринт»,. – 556 с. -
Харламенков А. Е. Русский жестовый язык. Начала. Рабочая тетрадь: [Учебное пособие]: Русский жестовый язык. Начала / А. Е. Харламенков. – Москва: Издательство «ОнтоПринт»,. – 56 с.
-
Харламенков А. Е. Русский жестовый язык. Начала: [Учебное пособие]: Русский жестовый язык. Начала / А. Е. Харламенков. – Москва: Издательство «ОнтоПринт»,. – 164 с.
-
Харламенков А. Е. Создание «Электронной справочно-аналитической системы
“Русско-жестовый толковый словарь”» Монография / А. Е. Харламенков // Научные труды Института Непрерывного Профессионального Образования.No 7. Монографические исследования / ред.Под научн. редакциейпроф. П. С. Гуревича и проф. С. В. Чернова. С.97–186. – Москва: Издательство Института Непрерывного Профессионального Образования, 2016. – С. 89. -
Харламенков А. Е. Учебно-методическая разработка по курсу: «Основы русского жестового языка для разработчиков Жесто-мимического интерфейса “SurdoJet”» / А. Е. Харламенков // Научные труды Института непрерывного профессионального образования. – 2015. – Вып. № 6 (6). –
С. 337–366. -
Харламенков А. Е. Формирование коммуникативной компетентности у людей с нарушением слуха / А. Е. Харламенков // Научные труды Института непрерывного профессионального образования. – 2014. – Вып. № 4. –
С. 234–241. -
Харламенков А. Е. Электронная справочно-аналитическая система
«Русско-жестовый толковый словарь» / А. Е. Харламенков // Научные труды Института непрерывного профессионального образования. – 2014. – Вып. № 3. –С. 24–43. -
Харламенков А. Е. Язык и менталитет: влияние жестового языка на менталитет глухих / А. Е. Харламенков // Научные труды Института непрерывного профессионального образования. – 2014. – Вып. № 5. –
С. 191–218.
Корниенков Андрей Александрович
Магистрант Московского политехнического университета, г. Москва.
Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Рычков Вадим Александрович
Магистрант Московского политехнического университета, г. Москва.
Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.