Конвертация 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, нажимаем «Посмотреть в 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
# Скрипт: читаем 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 недели |
Стоимость рассчитывается в зависимости от исходных форматов, качества моделей и требуемого уровня автоматизации.







