3D-моделі в GLB/GLTF для Android AR: пайплайн конвертації

Ми стикалися з ситуацією: клієнт розробляє Android AR-додаток на ARCore, а 3D-моделі в FBX з Blinn-Phong матеріалами — не завантажуються. Одного разу втратили два дні на дебаг моделі, яка відображалася сірим квадратом — виявилося, UV-розгортка збита. GLB — бінарний контейнер формату glTF 2.0, станда

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
3D-моделі в GLB/GLTF для Android AR: пайплайн конвертації
Простий
~1 день

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

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1217
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    600

Ми стикалися з ситуацією: клієнт розробляє Android AR-додаток на ARCore, а 3D-моделі в FBX з Blinn-Phong матеріалами — не завантажуються. Одного разу втратили два дні на дебаг моделі, яка відображалася сірим квадратом — виявилося, UV-розгортка збита. GLB — бінарний контейнер формату glTF 2.0, стандарт Khronos glTF 2.0 Specification. ARCore, Sceneform, model-viewer, WebXR — всі використовують glTF/GLB. На відміну від USDZ, GLB працює кросплатформенно: Android AR, WebAR, Three.js, Babylon.js, Unity, Unreal. Але «відкритий стандарт» не означає «все просто конвертується без проблем». За роки роботи над AR-проектами ми виробили пайплайн, який гарантує сумісність та продуктивність — розповімо про нього. Погана конвертація призводить до перевитрати бюджету на повторну обробку: середня економія на зберіганні та передачі після Draco-стиснення становить 70–90%. Отримайте консультацію щодо пайплайну конвертації.

Структура GLB та вимоги для AR

glTF 2.0 описує сцену через JSON: меші, матеріали (PBR metallic-roughness workflow), анімації, скіни, камери, світло. GLB пакує JSON + бінарні дані (геометрія, анімації) + текстури в один файл.

Обов'язкові вимоги для Android ARCore / Sceneform:

  • Матеріали тільки через pbrMetallicRoughness — Blinn-Phong, Phong, Lambert не підтримуються
  • Текстури: PNG (з alpha) або JPEG (без alpha), max 2048×2048
  • Геометрія: тільки трикутники (TRIANGLES primitive mode), не quads
  • Немає нереференсованих нод та матеріалів (валідатор свариться)
  • asset.generator — бажано вказувати (допомагає при дебазі сумісності)

Як конвертувати FBX, OBJ та USDZ в GLB?

FBX → GLB. Blender — найкращий проміжний конвертер:

blender --background --python fbx_to_glb.py -- input.fbx output.glb 

Python-скрипт для Blender:

import bpy bpy.ops.import_scene.fbx(filepath=input_path) bpy.ops.export_scene.gltf( filepath=output_path, export_format='GLB', export_materials='EXPORT', export_animations=True, export_apply=True # застосовує модифікатори ) 

Головна проблема FBX → GLB через Blender: матеріали FBX часто використовують Standard або Lambert шейдери — Blender конвертує їх в Principled BSDF, але параметри (specular, shininess) маппяться приблизно. Результат потрібно перевіряти візуально.

OBJ → GLB. OBJ не підтримує анімацію, PBR-матеріали (тільки MTL з Kd/Ks), скіни. Для статичних об'єктів — конвертація через Blender або obj2gltf. MTL-файл маппиться в glTF pbrMetallicRoughness приблизно: KdbaseColorFactor, map_KdbaseColorTexture. Карти normal, roughness, metallic з MTL не підхоплюються — потрібно додавати вручну через glTF-пайплайн.

USDZ → GLB (iOS → Android). Apple Reality Converter може експортувати в USD/OBJ, потім через Blender в GLB. Прямого конвертера USDZ→GLB немає — обов'язковий проміжний крок через USD Python API або Blender.

Як виконується конвертація: покроково

  1. Підготовка вихідної моделі. Перевірка UV-розгортки, масштабу, PBR-матеріалів. Усунення дублів геометрії.
  2. Конвертація. Використовуємо Blender, obj2gltf або USD Python API залежно від формату.
  3. Постобробка. Ручна корекція матеріалів, видалення невикористовуваних нод, призначення doubleSided при необхідності.

Чому важлива оптимізація для мобільного AR?

Без оптимізації навіть проста модель може викликати лаги на середніх пристроях. Використовуємо три техніки:

Draco-стиснення. Стискає геометрію на 60–90% без видимої втрати якості. KTX2/Basis Universal текстури. GPU-стиснуті текстури, завантажуються швидше та займають менше VRAM. Basis Universal декодується на GPU — не потрібно розпаковувати в RAM. На Android AR знижує споживання пам'яті на 40–60%. Mesh quantization. Упаковка float32 координат вершин в int16 — втрата точності < 0.01%, виграш за розміром 25–40%.

Команди для оптимізації:

# Draco compression npx gltf-pipeline -i model.glb -o model_draco.glb --draco.compressionLevel 7 # KTX2 textures npx gltf-transform etc1s model.glb model_ktx2.glb # Quantization npx gltf-transform quantize model.glb model_quantized.glb 

Валідація

glTF Validator від Khronos — обов'язковий перед деплоєм:

npx gltf-validator model.glb 

Видає помилки та попередження з кодами. Коди типу ACCESSOR_ELEMENT_OUT_OF_MIN_BOUND — плаваючі значення поза допустимим діапазоном, часто з FBX-конвертації.

model-viewer (Google) — браузерний переглядач glTF, показує модель як в ARCore. Ідеальний для швидкої перевірки до встановлення на пристрій.

Типові помилки

Помилка Наслідок Рішення
Модель без UV-розгортки В ARCore біла або сіра Розгорнути UV в Blender
Double-sided не вказаний Внутрішні грані не видно Додати doubleSided: true
Координати в дюймах замість метрів Об'єкт мікроскопічний або гігантський Масштабувати до метрів
Non-linear interpolation анімації glTF не підтримує Конвертувати в LINEAR або CUBICSPLINE

Що входить в послугу конвертації під ключ

  • Аналіз вихідних моделей (формат, матеріали, анімації)
  • Конвертація в GLB з ручною корекцією матеріалів
  • Оптимізація (Draco, KTX2, quantization)
  • Валідація через glTF Validator та model-viewer
  • Документація: звіт про конвертацію, чек-лист сумісності
  • Гарантія: модель коректно відображається на ARCore-пристроях

Строки

Об'єм Строки
1–10 моделей з ручною конвертацією та перевіркою 1–3 дні
Автоматизований пайплайн FBX/OBJ → GLB 1 тиждень
Пакет 50–200 моделей з оптимізацією та валідацією 2–3 тижні
Приклад конвертації Нещодавно конвертували партію зі 100 моделей інтер'єрних меблів з FBX в GLB. Після Draco-стиснення середній розмір файлу зменшився з 25 МБ до 3 МБ. Клієнт відзначив, що додаток став завантажуватися вдвічі швидше на пристроях середнього сегмента.

Зв'яжіться з нами для оцінки вашого проекту — ми підготуємо пропозицію з урахуванням економії до 60% на розмірі файлів. Замовте конвертацію з гарантією сумісності. Понад 100 успішно конвертованих проектів за роки роботи — довіряйте досвідченим інженерам.