Хватит гадать, что значит «готово для веба»
Каждая 3D-модель, попадающая на сайт, обязана уместиться в бюджет — вот только этот бюджет почти никто не записывает. Отсюда знакомый круг: экспорт, загрузка, наблюдение за тем, как захлёбывается телефон, повторный экспорт с чуть меньшими текстурами, и снова сначала. Этот инструмент переворачивает схему. Вы выбираете, куда поедет модель — десктоп, мобильный или WebXR, — и он ещё до единой правки сообщает, какие именно лимиты вы превысили и насколько.
Бюджеты — открытым текстом
| Метрика | Десктоп | Мобильный | WebXR |
|---|---|---|---|
| Размер файла | 15 MB | 5 MB | 3 MB |
| Треугольники | 1 500 000 | 300 000 | 150 000 |
| Вызовы отрисовки | 200 | 50 | 30 |
| Память текстур | 512 MB | 128 MB | 96 MB |
| Максимальный размер текстуры | 4096 | 2048 | 2048 |
| Материалы | 100 | 25 | 15 |
Колонка WebXR намеренно самая жёсткая. Шлем рендерит всю сцену дважды за кадр, в высоком разрешении, укладываясь в 72–90 Hz. Половина мобильного бюджета треугольников — не пессимизм, а арифметика.
Память текстур — метрика, о которой забывают
Текстура 4096 × 4096 занимает на GPU около 67 MB в формате RGBA и примерно 89 MB, когда появляется цепочка мип-уровней, — и всё это из файла, который мог приехать как JPEG на 2 MB. Восемь таких текстур — и у телефона среднего класса кончается память, каким бы маленьким ни был GLB. Поэтому инструмент оценивает память текстур на GPU отдельно от размера файла, и поэтому уменьшение текстуры с 2048 до 1024 экономит вчетверо больше памяти, чем байтов.
Что на самом деле делает план
До пяти действий; каждое предлагается только тогда, когда анализ нашёл для него причину, и эта причина выписана рядом:
- Очистка —
dedup,prune,weld. Всегда оправдана и всегда без потерь. - Упрощение — квадрическое упрощение до бюджета треугольников, если вы его превышаете.
- Пакетирование —
instance,palette,join, чтобы схлопнуть вызовы отрисовки и материалы. - Текстуры — масштабирование до расчётного размера и перекодирование в WebP.
- Сжатие — квантование плюс Draco или Meshopt.
Порядок фиксирован, потому что он важен: сварка до упрощения, инстансинг до объединения, кодирование в самом конце. Любое действие, с которым вы не согласны, можно выключить.
Честные ограничения
Соблюдение всех бюджетов не гарантирует 60 fps. Овердро, прозрачность и стоимость шейдеров по статичному файлу не видны. А join объединяет только меши с общим материалом. Всё выполняется локально — ваши ассеты не покидают браузер.
Tiny Online Tools







