Оптимізація 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. Практичне правило:

Розмір об'єкта Рекомендована кількість полігонів Відстань перегляду
Малий (чашка, телефон) 5000–15000 0,3–1 м
Середній (крісло, лампа) 15000–50000 0,5–2 м
Великий (диван, шафа) 30000–80000 1–3 м
Дуже великий (автомобіль) 50000–120000 2–10 м

Decimate в Blender: Modifier → Decimate → Collapse з Ratio = 0,05–0,1 для складних моделей дає гарні результати без ручної ретопології. Quadric Edge Collapse Decimation краще зберігає форму країв, ніж Unsubdivide.

Після децимації — обов'язкове тестування в 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 МБ GPU-пам'яті. ASTC 2048×2048 — близько 2 МБ.

Генеруйте 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 реалізується через swap MaterialInstance або 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-стиснення (Google) зменшує розмір геометрії у 5–10 разів через стиснення з втратами. Якість контролюється через quantizeBits — 14 бітів достатньо для більшості AR-об'єктів.

Терміни

Оптимізація однієї 3D-моделі (децимація + текстури + LOD) — 0,5–1 день. Пакетна оптимізація 20–50 моделей — 1–2 тижні з налаштуванням автоматизації пайплайну.