Створення анімованих 3D-моделей для AR
Статична модель в AR — це вітрина. Анімована — взаємодія. Персонаж машить рукою, двигун обертає поршні, молекула демонструє коливання зв'язків. Для AR анімація накладає обмеження, яких немає у звичайній 3D-анімації: вага скелета, кількість ключових кадрів, сумісність з форматом USDZ.
Типи анімацій та їх реалізація
Skeletal animation (риггинг). Персонажі, тварини, роботи. Скелет з кісток контролює деформацію меша. Для AR-персонажів — максимум 60–80 кісток. Більше перевантажує GPU на мобільних пристроях.
Блендер-пайплайн для AR-персонажа:
- Моделювання low-poly меша
- Риггинг через Armature (автоматичний Rigify або ручний для стилізованих персонажів)
- Скіннінг:
Weight Paint Modeкритичний — неправильні ваги викликають розривання меша в суглобах - Анімація в
Action Editor: idle, walk, run, interaction (кожен Action = окремий клип) - Запекання анімації в keyframes (важливо для USDZ — не всі криві підтримуються)
Morph target animation (blend shapes). Обличчя, мімика, деформації без скелета. Face AR фільтри використовують 52 коефіцієнти ARKit blend shape. Створіть відповідні morph targets у Blender:
jawOpen → ARKit blendShapeLocation.jawOpen
eyeBlinkLeft → ARKit blendShapeLocation.eyeBlinkLeft
Сумісність 1:1 з іменами ARKit забезпечує автоматичне управління мімікою через ARFaceAnchor.blendShapes.
Procedural animation. Обертання шестерні, хитання листків, пульсація. У USDZ через UsdGeom.Xformable з анімованими xformOpOrder. У RealityKit — через AnimationResource з FromToByAnimation. Не потребує скелета, мінімальна вага.
Ключові проблеми при створенні AR-анімації
USDZ та обмеження анімації. USDZ підтримує лише певні типи анімаційних кривих. Blender експортує в USD через стандартний експортер, але Driver-анімації, нелінійний редактор та деякі модифікатори ігноруються. Потрібно запекати в keyframes перед експортом:
Object → Animation → Bake Action
→ Only Selected Bones, Visual Keying, Clear Constraints
Після запекання — перевірте в Reality Composer або Quick Look на iOS. Те, що виглядає нормально в Blender, може не відтворюватися в ARKit.
Розмір анімованого USDZ. Анімація додає дані ключових кадрів. 10-секундний walk cycle на персонажі з 60 костями при 24 fps = 240 ключових кадрів × 60 костей × transform data. Оптимізація: знизьте частоту кадрів анімації до 12–15 fps для вторинних рухів (одяг, волосся), основні кості — 24 fps. Різниця: 20–40% по вазі.
Цикли та переходи між клипами. У RealityKit переключення між анімаціями:
entity.stopAllAnimations()
entity.playAnimation(walkAnimation, transitionDuration: 0.3, startsPaused: false)
transitionDuration забезпечує плавний перехід. Для коректного переходу idle→walk→run позиції костей у кінцевому кадрі одного клипу мають бути близькі до початкового кадру наступного — інакше персонаж «телепортується».
Формати та експорт
USDZ з анімацією — для iOS. Reality Composer Pro (Xcode 15+) підтримує попередній перегляд та базичне редагування анімації. reality-converter CLI для конвертації з Alembic або FBX з анімацією:
xcrun reality-converter -i character_animated.fbx -o character.usdz
GLB з анімацією — для Android та WebAR. Blender → Export → glTF 2.0 → Format: GLB. Анімації експортуються як animations[] масив у структурі glTF. Draco-стиснення для геометрії, але не для анімаційних даних (вони не стискуються Draco).
Кейс
AR-маскот для маркетингової кампанії: пінгвін з 5 анімаціями (idle, wave, dance, point, celebrate). Модель — 8000 полігонів, 42 кістки. Blur AR на iOS, ARCore на Android. Основна складність: один і той же GLB працював коректно в Chrome WebAR, але dance анімація «ламалася» на Android ARCore — обертання бедер виходило за межі [-π, π] і GLB-парсер ARCore обробляв інакше. Рішення: нормалізуйте всі euler rotation curves у Blender перед експортом через Python script.
Терміни
| Тип анімації | Терміни |
|---|---|
| Проста процедурна (обертання, пульсація) | 1–3 дні |
| Персонаж з 3–5 анімаціями (риг + скіннінг) | 1–3 тижні |
| Лицева анімація з ARKit blend shapes | 1–2 тижні |
| Складний персонаж з 10+ анімаціями та LOD | 3–6 тижнів |
Вартість розраховується індивідуально. Базові 3D-моделі без анімації — окремо.







