Файл — это и есть текстуры
Откройте GLB на 40 МБ и посмотрите, что в нём на самом деле. Почти всегда геометрия занимает 1–3 МБ, а всё остальное — текстуры. Одна карта нормалей PNG 4096×4096 весит около 20 МБ сама по себе, а полный набор PBR в 4K легко даёт 60 МБ ещё до того, как отрисован первый треугольник.
Этот бесплатный онлайн-оптимизатор 3D-текстур работает только с этой частью файла — и даёт контроль по каждому слоту, которого у обычных компрессоров нет.
Почему настройки по слотам так важны
Одинаковое обращение со всеми текстурами — та самая ошибка, из-за которой оптимизированные модели выглядят неправильно.
Карты базового цвета и свечения воспринимаются глазом. Мелкие цветовые погрешности он прощает, поэтому WebP с потерями при качестве 80 обычно убирает 90 % байтов без заметной разницы.
Карты нормалей — это не изображения. Каждый пиксель кодирует в каналах RGB вектор направления. Субдискретизация цветности в духе JPEG усредняет цветовые каналы между соседними пикселями, а на карте нормалей это означает усреднение направлений поверхности. Итог — мутное, «плоское» освещение, которое описывают словами «модель потеряла детализацию», не понимая причины. Держите карты нормалей без потерь и уменьшайте их разрешение осторожнее, чем цветовые.
Карты металличности-шероховатости и затенения упаковывают одноканальные данные в RGB. Шероховатость меняется по поверхности медленно, поэтому такие карты прекрасно переносят уменьшение — часто вдвое меньше цветовой карты без видимой разницы.
Настройки по умолчанию это уже учитывают: WebP с потерями для цвета, WebP без потерь для нормалей и WebP меньшего размера для ORM-карт.
Форматы
- WebP — поддерживается везде, где это важно, даёт огромную экономию, разумный выбор по умолчанию.
- AVIF — ещё меньше, и кодируется здесь встроенной сборкой libavif, а не браузером, поэтому работает одинаково везде. Кодирование медленнее, чем в WebP, и оправдывает себя на больших цветовых картах.
- JPEG — без альфа-канала; не подходит ни для чего с прозрачностью.
- PNG — без потерь, но заметно больше, чем WebP без потерь. Используйте только там, где конвейер требует именно PNG.
KTX2 / Basis Universal намеренно не предлагается. Это лучший формат для видеопамяти, но его кодирование требует энкодера Basis — крупного отдельного набора инструментов, и тогда инструменту пришлось бы врать о том, что он на самом деле выдаёт.
Если перекодирование окажется больше оригинала — так бывает, когда уже сжатый с потерями JPEG загоняют в формат без потерь — инструмент оставит оригинал и сообщит об этом.
Проверьте результат в сетке
После обработки каждая текстура появляется в сетке со своим слотом, итоговыми размерами и весом до и после. Если карта нормалей выглядит выцветшей на миниатюре, такой же она будет и на модели. Измените настройки этого слота и запустите снова.
Размеры — степени двойки
Некоторые старые движки и пути мипмаппинга требуют, чтобы размеры текстур были степенями двойки. Переключатель округляет каждую текстуру до ближайшей. Для современных целей WebGL2 и WebGPU его можно не включать — им это безразлично.
Приватность
И декодирование, и перекодирование выполняются через собственные canvas-API вашего браузера. Ни одна текстура никогда не загружается на сервер.
Tiny Online Tools







