Оптимизация 3D-моделей для AR (LOD, текстуры, полигонаж)

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Оптимизация 3D-моделей для AR (LOD, текстуры, полигонаж)
Средний
~2-3 дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Оптимизация 3D-моделей для AR (LOD, текстуры, полигонаж)

3D-художник сдал модель кресла — 1.2 миллиона полигонов, текстуры 8192×8192 PNG. В Cinema 4D рендер выглядит отлично. В AR на iPhone — 18 FPS и перегрев за 3 минуты. Проблема не в приложении и не в ARKit — проблема в том, что для рендеринга на мобильном GPU модель не подготовлена.

Полигонаж: сколько реально нужно

На экране телефона расстояние до AR-объекта — 0.5–3 метра. На этом расстоянии детализация выше 100–150K полигонов визуально неотличима от 50K. Правило практики:

Размер объекта Рекомендуемый полигонаж Расстояние просмотра
Небольшой (чашка, телефон) 5 000–15 000 0.3–1 м
Средний (кресло, лампа) 15 000–50 000 0.5–2 м
Крупный (диван, шкаф) 30 000–80 000 1–3 м
Очень крупный (автомобиль) 50 000–120 000 2–10 м

Decimation в Blender: Modifier → Decimate → Collapse с Ratio = 0.05–0.1 для сложных моделей даёт нужный результат без ручного ретопологии. Quadric Edge Collapse Decimation лучше сохраняет форму краёв чем Unsubdivide.

После decimation — обязательная проверка в AR на целевом устройстве, а не только в превью редактора. Силуэт объекта важнее внутренних деталей — декодируем по-другому.

Текстуры: форматы и размеры

Самое большое влияние на производительность — текстуры. Не полигонаж.

ASTC (Adaptive Scalable Texture Compression) — правильный формат для мобильного AR. Поддерживается всеми ARM Mali и Qualcomm Adreno GPU с 2014+ года. ASTC 6×6 даёт примерно 2.37 bpp против 32 bpp у PNG — в 13 раз меньше памяти GPU при минимальных потерях качества.

ETC2 — универсальный fallback для старых устройств (GLES 3.0+). Хуже ASTC по качеству сжатия, но поддерживается шире.

Никогда PNG/JPEG в текстурах AR-сцены. PNG декодируется в полный RGBA8888 — для текстуры 2048×2048 это 16 MB GPU-памяти. ASTC 2048×2048 — около 2 MB.

Генерация ASTC через astcenc (командная строка):

astcenc -cl input.png output.astc 6x6 -medium

В Xcode Asset Catalog: добавляем текстуру, устанавливаем Compression = Lossy → автоматически ASTC на iOS. На Android — компиляция через Android Studio или в CI через texturetool.

Размер текстур. Правило: размер текстуры пропорционален видимой площади объекта на экране. Для объекта занимающего 20% экрана — текстура 512×512 даёт неотличимый от 2048×2048 результат. Mipmap — обязателен: SceneKit и ARCore автоматически используют уровень mipmap соответствующий размеру отображения.

LOD для AR

В отличие от игровых движков, ARKit SceneKit не имеет встроенного LOD-менеджера. Реализуем через SCNLevelOfDetail:

let highPolyGeometry = loadGeometry("chair_high.usdz")  // 50K полигонов
let medPolyGeometry = loadGeometry("chair_med.usdz")    // 15K полигонов
let lowPolyGeometry = loadGeometry("chair_low.usdz")    // 5K полигонов

let lod1 = SCNLevelOfDetail(geometry: medPolyGeometry, screenSpaceRadius: 100)
let lod2 = SCNLevelOfDetail(geometry: lowPolyGeometry, screenSpaceRadius: 30)

node.geometry?.levelsOfDetail = [lod1, lod2]

screenSpaceRadius — радиус bounding sphere в экранных пикселях. При значении 100 — модель занимает около 200×200 пикселей. Числа подбираются под конкретный объект эмпирически.

На Android ARCore с Filament LOD реализуется через MaterialInstance swap или через RenderableManager.Builder.boundingBox() для culling.

USDZ / glTF: правильный формат для AR

USDZ (iOS, macOS) — контейнер на основе OpenUSD от Pixar. Содержит геометрию, материалы, анимации, физику. Поддерживает AR Quick Look без кода. Reality Converter (macOS-приложение от Apple) конвертирует из FBX/OBJ/glTF в USDZ с одновременной оптимизацией текстур.

glTF 2.0 (Android/Cross-platform) — открытый стандарт, нативно поддерживается Filament и Sceneform. glb — бинарный вариант, предпочтителен для AR (один файл вместо нескольких). Оптимизация через gltf-pipeline:

gltf-pipeline -i model.gltf -o model_opt.glb \
    --draco.compressMeshes --draco.quantizePositionBits 14

Draco compression (Google) уменьшает размер геометрии в 5–10 раз за счёт сжатия с потерями. Качество регулируется quantizeBits — 14 бит достаточно для большинства AR-объектов.

Сроки

Оптимизация одной 3D-модели (decimation + текстуры + LOD) — 0.5–1 день. Пакетная оптимизация каталога из 20–50 моделей — 1–2 недели с настройкой пайплайна автоматизации.