Компания Google открыла код Draco, библиотеки для эффективного сжатия 3D-графики

Компания Google опубликовала наработки проекта Draco, в рамках которого подготовлена библиотека для эффективного сжатия 3D-данных, таких как полигональные сетки (mesh) и облака точек. Код написан на языке С++ (имеется вариант декодировщика на JavaScript) и распространяется под лицензией Apache 2.0.

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

Для web-разработчиков подготовлен распаковщик на JavaScript, позволяющий обрабатывать сжатый 3D-контент непосредственно на стороне web-приложения в браузере. Кроме того, реализована возможность интеграции поддержки Draco в 3D-просмотрщик three.js. Производительность распаковщика на JavaScript примерно в два раза отстаёт от эталонного распаковщика на C++.

В будущем планируется расширить Draco возможностью сжатия с потерей детализации. Draco сможет создавать несколько уровней детализации из исходной модели, что может применяться в условиях жесткой экономии места в хранилище или при очень низкой пропускной способности сети.