Конвертація 3D-моделей у формат USDZ для iOS AR
USDZ — нативний формат Apple для AR. Quick Look, RealityKit, ARKit — всі використовують його. Завантажити модель з Blender, Maya, SketchUp або від постачальника прямо в ARKit не вийде: потрібна конвертація в USDZ з перевіркою сумісності та оптимізацією під мобільні пристрої.
Конвертація — це не просто зміна розширення.
Що таке USDZ
USDZ — ZIP-архів, всередині якого USD-файли (Universal Scene Description від Pixar) та текстури. USD — ієрархічна сцена: меші, матеріали, світло, анімації, фізика. Apple взяла USD і додала мобільні обмеження: лише певні шейдери, формати текстур, типи анімацій.
Сумісний USDZ для iOS працює через UsdPreviewSurface — стандартний PBR-шейдер. Параметри:
-
diffuseColor— базовий колір або текстура -
roughness/metallic— PBR-параметри (0,0–1,0) -
normal— карта нормалей -
opacity/opacityThreshold— прозорість
Все, що виходить за ці параметри (process-based шейдери, node graphs), у Quick Look не відображається.
Звідки беруться проблеми при конвертації
FBX/OBJ → USDZ. Найчастіший шлях від постачальника. reality-converter (GUI) або xcrun usdz_converter (CLI) від Apple:
xcrun usdz_converter model.obj model.usdz \
-color_map diffuse.png \
-normal_map normal.png \
-roughness_map roughness.png \
-metallic_map metallic.png
Проблема: usdz_converter не приймає FBX з анімацією коректно. FBX з анімацією краще конвертити через reality-converter або через Blender проміжний експорт у USD:
FBX → (Blender) → USD → (usdzip) → USDZ
Blender → USDZ. Blender 3.0+ має вбудований USD-експортер, але з застереженнями: Custom Properties, Driver-анімації, модифікатори не експортуються. Перед експортом: застосуйте всі модифікатори (Apply All Modifiers), запеките анімацію (Bake Action), конвертуйте матеріали в Principled BSDF (він маппиться в UsdPreviewSurface).
Текстури. USDZ приймає PNG та JPEG всередині архіву. Проблема: Blender часто експортує текстури з іменами, що містять пробіли або спецсимволи — USD-парсер iOS їх не знаходить. Правило: лише латиниця, без пробілів, без дужок в іменах файлів текстур.
Масштаб. USD за замовчуванням використовує сантиметри як одиницю (legacy Pixar). iOS ARKit очікує метри. При конвертації через usdz_converter — metersPerUnit встановлюється автоматично. При ручній збірці USD — потрібно явно задати:
stage.SetMetadata('metersPerUnit', 1.0)
Валідація USDZ
Після конвертації — обов'язкова перевірка:
-
Quick Look на реальному iPhone — найшвидший спосіб. Відправте через AirDrop або email, натисніть «View in AR». Якщо не працює — проблема з форматом.
-
Reality Composer Pro (Xcode 15+) — показує сцену, помилки матеріалів, ієрархію об'єктів.
-
usdchecker — CLI-утиліта від Pixar USD library:
usdchecker model.usdz
Видає помилки валідації: неподдержувані шейдери, неверний масштаб, відсутні текстури.
Пакетна конвертація
При обсязі 50–500 моделей — автоматизація через Python USD API:
from pxr import Usd, UsdGeom, UsdShade, Sdf
import zipfile
# Script: читаємо FBX через Blender API → експортуємо USD → пакуємо в USDZ
# Валідуємо кожен файл через usdchecker
# Загружаємо на S3/CDN
Середній час автоматичної конвертації: 30–120 секунд на модель залежно від складності. CI/CD: GitHub Actions з macOS runner (потрібен macOS для usdz_converter).
Кейс
Постачальник меблів, 300 SKU у форматі FBX від різних дизайн-студій — різний масштаб, різні naming conventions для текстур, частина без UV-розгортки. Написали нормалізатор на Blender Python:
- Завантажуємо FBX
- Перевіряємо масштаб (bounding box) проти специфікації товару з CSV
- Нормалізуємо до метричних одиниць
- Застосовуємо модифікатори, конвертуємо матеріали в Principled BSDF
- Експортуємо USD, пакуємо в USDZ через
usdzip - Запускаємо
usdchecker, логуємо помилки
Із 300 моделей 47 потребували ручного втручання: неправильна UV, складні кастомні шейдери, відсутні текстури.
Терміни
| Обсяг | Терміни |
|---|---|
| Конвертація 1–10 моделей вручну | 1–3 дні |
| Настройка автоматичного пайплайну конвертації | 1–2 тижні |
| Пакетна обробка 100+ моделей з валідацією | 2–4 тижні |
Вартість розраховується залежно від вихідних форматів, якості моделей та рівня автоматизації.







