При спробі відтворити анімацію в ARKit персонаж «телепортується» між кліпами? Або анімація в GLB працює на iOS, але ламається на Android? Такі проблеми — наслідок неоптимізованого пайплайну анімації для AR. На відміну від звичайної 3D-анімації, тут кожен кадр рендериться на мобільному GPU в реальному часі. Обмеження: до 60–80 кісток для скелетної анімації, 52 blend shapes для лицьової, частота кадрів 12–24 fps для вторинних рухів. Наш досвід — 7+ років і 30+ реалізованих проєктів для iOS та Android. Ми оптимізуємо пайплайн, щоб зберегти якість при мінімальній вазі. Звертайтеся — допоможемо з вашим проєктом.
Чому анімація в AR відрізняється від звичайної?
В AR немає готового середовища з постобробкою. Мобільний GPU зобов'язаний обробляти анімацію в реальному часі — звідси жорсткі обмеження. Зате відкриваються нові можливості: взаємодія з реальним світом, вбудовування в оточення, тактильний відгук. Щоб цим скористатися, потрібно правильно вибрати тип анімації та підготувати модель.
Які типи анімації використовуються в AR?
Skeletal animation (ригінг). Персонажі, тварини, роботи. Скелет із кісток керує деформацією меша. Для AR-персонажів — максимум 60–80 кісток. Більше — вага скінінгу (skin weights) перевантажує 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. Не потребує скелета, мінімальна вага.
Порівняння типів анімації
| Тип | Переваги | Недоліки | Застосування |
|---|---|---|---|
| Skeletal | Гнучкість, реалістичність | Велика вага, обмеження по кістках | Персонажі, тварини |
| Morph target | Плавна міміка, мала вага | Високе споживання пам'яті при великій кількості shapes | Обличчя, деформації |
| Procedural | Мінімальна вага, не потребує скелета | Обмежений набір рухів | Обертання, хвилі, технічні об'єкти |
Skeletal animation дає більше контролю, але morph target ефективніше для міміки з вагою вдвічі меншою. Вибір залежить від завдання.
Ключові проблеми при створенні AR-анімації
USDZ та обмеження анімації. USDZ підтримує лише певні типи анімаційних кривих. Blender експортує в USD через стандартний експортер, але Driver-анімації, нелінійний редактор та деякі модифікатори — ігноруються. Потрібно запікати (Bake Action) в keyframes перед експортом:
Object → Animation → Bake Action
→ Only Selected Bones, Visual Keying, Clear Constraints
Після запікання — перевіряємо в Reality Composer або Quick Look на iOS. Те, що виглядає нормально в Blender, може не відтворюватися в ARKit. Офіційна документація Apple рекомендує цей підхід (див. Loading Animations from USDZ Files in RealityKit).
Розмір анімованого USDZ. Анімація додає дані ключових кадрів. 10-секундний walk cycle на персонажі з 60 кісток при 24 fps = 240 ключових кадрів × 60 кісток × transform data. Оптимізація: знижуємо частоту кадрів анімації до 12–15 fps для вторинних рухів (одяг, волосся), основні кістки — 24 fps. Різниця — 20–40% за вагою файлу.
Loop та переходи між кліпами. У RealityKit перемикання між анімаціями:
entity.stopAllAnimations()
entity.playAnimation(walkAnimation, transitionDuration: 0.3, startsPaused: false)
transitionDuration забезпечує плавний перехід. Але для коректного переходу idle→walk→run позиції кісток у кінцевому кадрі одного кліпу повинні бути близькі до початкового кадру наступного — інакше персонаж «телепортується». Ми гарантуємо seamless loops завдяки точному налаштуванню ключових кадрів.
Як правильно експортувати анімацію в USDZ?
Використовуйте запічені keyframes, уникайте Driver-анімацій та модифікаторів. У Reality Composer Pro (Xcode 15+) доступний попередній перегляд. Для конвертації з FBX з анімацією використовуйте reality-converter CLI:
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. Після фіксу анімація запрацювала на обох платформах. Зв'яжіться з нами, щоб ми допомогли з подібним завданням.
Що входить у роботу
- Low-poly модель з ригінгом та скінінгом
- Набір анімацій (як мінімум idle + 2-4 базових)
- Експорт у USDZ та GLB з перевіркою в ARKit/ARCore
- Документація з керування анімаціями
- Тестування на реальних пристроях
- Підтримка протягом 2 тижнів після здачі
Строки та вартість
| Тип анімації | Строки |
|---|---|
| Проста процедурна (обертання, пульсація) | 1–3 дні |
| Персонаж із 3–5 анімаціями (риг + скінінг) | 1–3 тижні |
| Лицьова анімація з ARKit blend shapes | 1–2 тижні |
| Складний персонаж із 10+ анімаціями та LOD | 3–6 тижнів |
Вартість розраховується індивідуально. Базові 3D-моделі без анімації — окремо. Замовте оцінку вашого проєкту — ми запропонуємо оптимальне рішення.







