В обе стороны — и в этом весь смысл
Сжать glTF с помощью Draco умеют многие инструменты. А вот снять сжатие не умеет почти никто — и застревают люди именно на этом. Старые сборки Babylon.js, несколько импортёров glTF в Unity и целый ряд DCC-пакетов просто не читают KHR_draco_mesh_compression. Если заказчик прислал вам сжатый GLB, а ваш пайплайн его отвергает, нужна распаковка, а не ещё одно сжатие.
Этот инструмент делает и то и другое — прямо в браузере, ничего не отправляя на сервер.
Draco против Meshopt
Они решают одну задачу по-разному, и правильный выбор зависит от того, что вы оптимизируете.
Draco использует энтропийное кодирование с учётом связности меша и даёт самые компактные файлы — обычно на 80–95 % меньше исходных вершинных данных. Плата за это — время декодирования: декодер представляет собой довольно объёмный модуль WebAssembly, и распаковка крупного меша отнимает реальные миллисекунды, которые пользователь проводит, глядя в пустоту.
Meshopt опирается на побайтовые фильтры и куда более простой кодек. Файлы получаются чуть больше, чем у Draco, но декодируются примерно на порядок быстрее, а сам формат рассчитан на то, чтобы декодирование шло параллельно с загрузкой. Для сайта, где время до первого пикселя важнее объёма передачи, обычно выигрывает Meshopt.
Отдельный .drc — это Draco вообще без обёртки glTF: только геометрия, без материалов, текстур и иерархии. Полезен для исследовательских пайплайнов и собственных загрузчиков и бесполезен как формат доставки текстурированного ассета.
Качество теряется на квантовании
Оба кодека квантуют: атрибуты с плавающей точкой превращаются в целые числа с фиксированной точкой заданной разрядности. Это потери по самой конструкции, и у каждого атрибута свой запас прочности.
- Позиция — 14 бит визуально без потерь почти всегда. На 12 битах на крупных моделях заметно, как вершины «прилипают» к сетке; на 10 это очевидно.
- Нормали — 10 бит безопасно. Артефакты проявляются полосами на плавно затенённых поверхностях.
- Текстурные координаты — 12 бит. Ниже 10 UV начинают «уплывать», и текстуры заметно скользят по поверхности.
- Цвет — 8 бит ровно столько, сколько изначально несли большинство вершинных цветов.
Не сжимайте дважды
Повторное кодирование уже сжатого Draco-файла означает: декодировать его, ещё раз квантовать уже квантованные значения и закодировать заново. Каждый круг теряет точность, которая не возвращается. Инструмент распознаёт существующее сжатие при загрузке и предупреждает вас — если нужны другие настройки, сначала распакуйте, а затем сожмите один раз из чистого результата.
Что он не уменьшит
Геометрические кодеки никак не влияют на текстуры. Если ваш GLB на 40 МБ — это 38 МБ PNG-текстур 4K, Draco сэкономит пару сотен килобайт, и вы решите, что сжатие не работает. Панель результатов отдельно показывает именно байты геометрии, чтобы вы видели, чего действительно добился кодек, независимо от остального содержимого файла.
Конфиденциальность
И Draco, и Meshopt работают как WebAssembly в вашем браузере. Ничего не загружается на сервер.
Tiny Online Tools







