Спросить
Войти

Оптимизация анимированных полигональных моделей для web

Автор: Посконин А.

Оптимизация анимированных полигональных моделей для Web

Посконин А., Зорин Д., Федюков М.

Факультет вычислительной математики и кибернетики Московский государственный университет им. М. В. Ломоносова aposk@yandex. ru, jfaranime@gmail. com, mfedyukov@graphics. cs. msu. ru

Сегодня 3D-модели широко используются во многих Web-приложениях, таких как архитектурная визуализация [1], электронная коммерция [2], виртуальная реальность [3] и других. Современные технологии визуализации в Web-приложениях, такие как Flash и WebGL, обеспечивают аппаратное ускорение трехмерной графики, однако загрузка трехмерных моделей через Интернет-канал значительно медленнее по сравнению с чтением с жесткого диска локального компьютера. Таким образом, возникает актуальная задача оптимизации полигональных моделей для быстрой передачи через сеть Интернет с учетом особенностей и ограничений, накладываемых современными платформами. В данной работе реализация производилась на первой технологии, Adobe Flash 11, позволяющая вести разработку с помощью нового языка программирования низкого уровня AGAL (Adobe Graphics Assembly Language) [4] и языка ActionScript. Возможность визуализации 3D-графики на GPU появилась во Flash в октябре 2011 г., соответственно, с одной стороны данная технология является наиболее современной (оставаясь при этом кросс-браузерной), но с другой стороны имеет ряд ограничений (низкое быстродействие кода на ActionScript, неполный набор инструкции Shader Model версии 2.0 в AGAL [4]), ограничивающих вычислительные возможности и, соответственно, применимость определенных алгоритмов для задач сжатия.

На практике сегодня используется множество форматов для хранения трехмерных моделей. Некоторые широко распространенные форматы используют текстовое представление (OBJ, Collada), другие хранят данные в бинарном виде (3DS, U3D). Текстовые форматы плохо подходят для поставленной задачи, так как имеют значительные накладные расходы и требуют сжатия архиватором, поэтому предпочтительно использование бинарных форматов. К сожалению, такие форматы являются либо устаревшими, либо излишне сложными и содержащими много дополнительной информации (что не только увеличивает размер файла, но и увеличивает время обработки модели). Таким образом, возникает актуальная задача создания простого бинарного формата для хранения моделей, который требовал бы простых вычислений на клиентской стороне, позволял бы хранить данные с различной степенью точности и обеспечивал бы благодаря этому сильное сжатие файла с минимальными искажениями.

Определим, какие данные и в каком виде необходимо хранить в файле, чтобы можно было построить по этой информации полигональную модель. Данные полигональной модели можно разделить на геометрическую информацию и информацию о материалах. К информации о геометрии можно отнести координаты вершин модели в трехмерном пространстве (X, Y и Z), грани (номера вершин, обычно грани являются треугольниками, то есть каждая грань определяется тремя номерами вершин), нормали в вершинах модели (единичные вектора, необходимые для правильного расчета освещения) и двумерные текстурные координаты для каждой вершины модели (U и V). К информации о материалах обычно относятся различные параметры, задающие отражающую способность поверхности, цвет, текстурные

карты и другие. Информация о материалах обычно достаточно компактна, поэтому будут рассматриваться методы сжатия геометрической информации.

Все координаты (вершин, нормалей и текстурные) обычно представляются 32-битными числами с плавающей точкой. Однако чтобы сократить занимаемый ими объем памяти, можно уменьшить точность их представления. При этом также нужно стараться минимизировать искажения, возникающие в результате отсекания младших разрядов. Рассмотрим в качестве примера координаты вершин модели (представленные в виде 32-разрядных чисел с плавающей точкой). Для уменьшения искажения при отсекании младших разрядов предложен следующий алгоритм:

1. Перенос центра модели в начало координат. При этому вектор переноса необходимо также сохранить, чтобы при распаковке выполнить обратное преобразование.
2. Поворот модели так, чтобы наиболее удаленные вершины модели располагались в вершинах ограничивающего параллелепипеда для обеспечения максимально равномерного квантования по всем осям (чтобы все оси представлялись с максимально одинаковой точностью). Углы, на которые нужно повернуть модель также необходимо сохранить.
3. Поиск максимальной по модулю компоненты и деление всех координат на неё. Тем самым мы получим координаты в диапазоне [-1, 1]. Коэффициент масштабирования нужно будет также включить в файл модели.
4. Умножение координат, полученных на шаге 3, на 2 - 1, максимальное по модулю целое число, представимое в целочисленной переменной заданной разрядности, и округление его до целого. Полученное К-битное целое число содержит исходную координату с потерей точности, но зато занимает существенно меньший объем.

Для остальной информации, представленной числами с плавающей запятой (нормали, текстурные координаты), применимы аналогичные методы. Однако здесь необходимо учитывать, что нормали являются единичными векторами, а текстурные координаты лежат в диапазоне [0, 1], что позволяет более точно представлять их в виде К-битных целых (для текстурных координат можно использовать беззнаковые целые).

Другой объемной информацией являются индексы (номера) вершин, составляющих грани. Обычно для их кодирования применяются, например, 16-битные беззнаковые целые числа (так сделано, например, в формате 3Б8). Однако это накладывает ограничения на количество вершин (216 - 1), а также влечет накладные расходы на небольших моделях (если используются только 8 бит, хранится все равно 16). В связи с этим можно предложить хранение индексов в виде 8, 16 или 32 бит, в зависимости от числа вершин. Такой подход позволяет значительно уменьшить размер моделей.

Обычно сцена содержит несколько полигональных моделей, каждой из которых назначен свой материал. Это позволяет выбирать разную степень сжатия для каждой из моделей, то есть всегда есть возможность сохранить важные детали, которые иначе потерялись бы при сжатии.

Касательно передачи анимированных моделей, наиболее актуальными методами анимации полигональных моделей являются морфинг и скелетная анимация. При использовании первого подхода с сервера на клиент передается только компактный набор параметров, а непосредственно морфинг осуществляется в реальном времени на клиентской стороне. Однако в случае скелетной анимации возникает проблема

существенного снижения быстроты визуализации при реализации ее на ActionScript. Соответственно, решить проблему можно либо передачей координат вершин на каждом кадре, что, однако, требует широкого Интернет-канала, либо реализацией скиннинга, самой ресурсоемкой части алгоритма, на GPU с использованием средств языка AGAL. В предлагаемом методе предлагается последний подход. Для реализации скиннинга на вершинном шейдере предложен ряд оптимизаций (переупорядочивание операций для вычисления, переформулирование шагов алгоритма для использования специфических инструкций AGAL, предварительное вычисление некоторых исходных данных), позволяющих осуществлять скелетные преобразования моделей и анимацию в реальном времени.

(а) (б) (в)

Рис. 1. Визуализация моделей, переданных с разным уровнем сжатия: (а) 32 бита на компоненту, исходная модель (515 КБ в формате OBJ, 151 КБ в бинарном виде), (б) - 16 бит на компоненту (94 КБ), (в) - 8 бит на компоненту (66 КБ).

Реализация приведенных методов на практике дает существенную экономию занимаемой моделью памяти и, как следствие, увеличивает скорость загрузки через Интернет-канал. По сравнению с текстовыми форматами такой способ хранения моделей позволяет в 20-30 раз уменьшить объем данных для передачи, а по сравнению с бинарными форматами - в 5-10 раз. Стоит, однако, заметить, что при сильном сжатии возможны некоторые искажения модели, однако они в большинстве случаев оказываются приемлемыми даже при использовании 8 бит на компоненту (см. рис. 1).

В целом приведенные методы позволяют значительно оптимизировать объем данных при передаче полигональных моделей по Интернет-каналу, что является крайне важным при создании приложений, использующих 3Б-графику.

Список литературы

[1] Shane Phelan, Evaluating the 3D rendering of architecture models in a web browser, Proceedings of Advances in Computing and Technology, 2010

[2] Chengjie Gu, Shunyi Zhuang, Zailong Zhang, Pan Wang, Virtual Interactive Online Exhibition Architecture in E-Commerce Based on Flash 3D and Flex, International Conference on E-Business and Information System Security, 2010

[3] Stoianovici, V.C., Talaba, D., Nedelcu, A.V., Pisu, M., Barbuceanu, F., Stavar, A., A Virtual Reality based human-network interaction system for 3D internet applications, 12th International Conference on Optimization of Electrical and Electronic Equipment (OPTIM), 2010

[4] AGAL language bytecode format, http://help.adobe.com/ru_RU/as3/dev/ WSd6a006f2eb1dc31e-310b95831324724ec56-8000.html

Другие работы в данной теме:
Контакты
Обратная связь
support@uchimsya.com
Учимся
Общая информация
Разделы
Тесты