Оптимизация 3D для WebAR: полигоны, текстуры, GLB и производительность


дополненная реальность
В мобильном WebAR производительность — это и есть продукт. Чем меньше весит 3D-сцена, тем быстрее она загружается и тем выше шанс, что AR корректно заработает на большем количестве устройств. Цель одна: баланс между визуалом и функциональностью.

Ниже — практический чек-лист оптимизации 3D-ассетов именно под мобильный WebAR (с требованиями, которые подходят для WebAR.Studio).
Целевые лимиты для WebAR
самые важные цифры
Хорошо оптимизированный 3D-объект для мобильного WebAR обычно соответствует:

  1. Вес GLB (GLB/GLTF): до 10 МБ
  2. Текстуры: до 1024×1024 (для маленьких объектов — 512×512), предпочтительно JPG
  3. Вершины (Vertices): до 100 000
Для сцены в целом: старайтесь держать ≤80 объектов и ≤100k вершин — так повышается шанс стабильной работы.
Подготовка модели
быстрые улучшения до «серьёзной оптимизации»
Очистка сцены
  • Оставьте только элементы, которые реально нужны пользователю.
  • Удалите лишние камеры, источники света, хелперы, скрытые дубли, пустышки.
Масштаб, pivot и трансформы (критично для AR)
  • Проверьте геометрию: никаких пересечений «внутри себя», перевёрнутых нормалей и странных артефактов.
  • Pivot должен быть логичным (часто — основание объекта) и правильно расположен относительно модели.
  • Следите за масштабом: в AR объект будет показываться в реальном размере, соответствующем сцене.
  • Scale должен быть = 1.0 (очень важно).
  • Если Scale больше/меньше 1, при экспорте модель может «сброситься» к 1 и в AR будет выглядеть иначе по размеру.
Оптимизация геометрии
уменьшаем вес, не убивая визуал
Главное правило: удаляйте то, чего «глаз не видит»
Каждая лишняя вершина — налог на загрузку и FPS.
Удаление невидимой/ненужной геометрии:
  1. Перейдите в Edit Mode (Tab)
  2. Выделяйте лишнее через Box Select (B) или Circle Select (C)
  3. Нажмите X и удалите Vertices / Edges / Faces
Логика простая: если камера не видит, например, лицо персонажа (оно закрыто/не используется) — геометрию можно удалить.

Устранение двойных вершин (если есть)
  1. Edit Mode (Tab)
  2. Выделить всё (A)
  3. M → Merge by Distance
Снижение полигонов через Decimate (по ситуации)
Decimate помогает резко снизить полигоны, сохранив общий силуэт.
  1. Выберите объект
  2. Modifiers → Add Modifier → Decimate
  3. Регулируйте Ratio, пока качество остаётся приемлемым

Осторожно с hard edges
Hard edges могут увеличивать вес и усложнять модель. Оставляйте их только там, где они реально дают визуальный смысл.
Материалы и текстуры
что поддерживается (и что нет)
Важные ограничения
  • Анимация текстур в AR не поддерживается — планируйте эффекты иначе.
  • Процедурные текстуры нужно запекать (Bake).
  • Формально можно использовать до 2048×2048, но для мобильного WebAR лучше:
  • обычно: 1024×1024
  • маленькие объекты: 512×512
  • Если прозрачность не нужна — сохраняйте текстуры в JPG (он легче, чем PNG).
Поддерживаемые карты (PBR-набор)
  • Base Color
  • Metallic
  • Roughness
  • Emission
  • Normal
  • Occlusion
  • (Occlusion можно заранее запечь и хранить в красном канале изображения — совместно с roughness/metallic в упакованных картах.)
  • Alpha (прозрачность)
Для каждого канала используйте:
  • либо числовое значение 0–1,
  • либо запечённую текстуру.
UV и атласы
меньше вес, быстрее рендер
Делайте UV «крупной» и чистой
  • Крупные UV-острова, минимум швов.
  • Чем больше островов, тем чаще растёт вес файла и сложность.
Текстурные атласы
Объединение нескольких текстур в один атлас:
  • уменьшает количество текстурных карт,
  • снижает draw calls,
  • ускоряет загрузку и рендер.
CAD-импорт
ловушка Color Attribute
При импорте из CAD-программ объект может принести с собой Color Attribute.
Если он присутствует, при экспорте в GLB он может перебить назначенные материалы, и модель будет отображаться некорректно в AR.
Если после экспорта «всё стало не тем» — проверьте и удалите/отключите эти атрибуты.
Анимация
ограничения для мобильного WebAR
Перед анимацией примените трансформы ко всем анимируемым объектам (и арматуре):
Ctrl + A → Location / Rotation / Scale
Анимация Shape Keys не поддерживается
Поддерживается только одна арматура:
  • если в сцене несколько анимируемых объектов — объедините их в один объект
  • анимация должна быть в одной арматуре (или привязана к одной кости/структуре)
Анимация должна быть запечена в ключи
В Weight Paint включайте Auto Normalize — это стабилизирует веса
Export to GLB
Blender-настройки, которые спасают от сюрпризов
Перед экспортом:
  • примените Shade Smooth (где уместно)
Шаги экспорта:
  1. File → Export → glTF 2.0
  2. Выберите формат GLB
  3. Включите Apply Modifiers
Если у модели есть анимация:
  • в новых версиях Blender: “active action merged”
  • в старых версиях: отключите “group by NLA track”
Проверка GLB
Проверьте файл в glTF/GLB Viewer:
  • текстуры на месте,
  • материалы корректны,
  • нормали не сломаны,
  • масштаб/ориентация верные,
  • анимации проигрываются.
Тестирование в AR
единственная проверка, которая имеет значение
Загрузите модель на https://web-ar.studio/
Проверьте:
  • масштаб и pivot в реальной среде
  • читаемость материалов при освещении помещения/улицы
  • загрузку и FPS
  • поведение интерактива (если есть)
Нужен аудит оптимизации?
Если пришлёте GLB (или хотя бы статистику сцены + скрины материалов/UV), я дам:
  • быстрый диагноз по производительности,
  • главные «убийцы веса»,
  • и конкретный план, как попасть в ≤10 МБ / ≤100k vertices без потери вау-эффекта.
Email: annapolani.art@gmail.com
Telegram: @anna_polani