Ещё недавно захват движения означал павильон, костюм с маркерами и десяток камер. Сейчас достаточно снять человека на телефон и прогнать ролик через нейросеть, чтобы получить анимацию скелета. Качество не студийное, но для многих задач его хватает с запасом.
Ниже разбор того, как устроен захват движения по видео, что нужно от съёмки, где данные предсказуемо разваливаются и как довести результат до пригодного в проекте.
Как устроен захват движения по видео
Задача разбивается на два этапа. Сначала нейросеть находит на каждом кадре позы: положение ключевых точек тела в плоскости изображения. Затем второй алгоритм восстанавливает по этим точкам трёхмерное положение суставов, опираясь на модель человеческого тела и на непрерывность движения между кадрами.
Отсюда главное ограничение: глубина восстанавливается предположением, а не измерением. Обычная камера не знает, насколько рука дальше от объектива, чем плечо. Алгоритм угадывает по пропорциям и по тому, как менялась поза раньше.
Практические следствия: движения в плоскости камеры считываются хорошо, движения на камеру и от камеры хуже, а сложные развороты корпуса дают заметный дрейф.
Требования к съёмке
Качество результата на восемьдесят процентов определяется исходником, а не алгоритмом. Правила простые, но их нарушение видно сразу.
- Человек в кадре целиком, включая стопы. Обрезанные ноги означают, что алгоритму придётся выдумывать опору, и персонаж поедет по полу.
- Ровный контрастный фон. Пёстрая обстановка сбивает определение силуэта, особенно на быстрых движениях.
- Облегающая одежда. Широкая толстовка скрывает положение локтя, юбка скрывает колени. Алгоритм ищет тело, а видит ткань.
- Ровный свет без резких теней. Тень на полу иногда распознаётся как вторая фигура.
- Частота 60 кадров в секунду. На 30 кадрах быстрые движения смазываются, и позы между ними приходится додумывать.
- Камера неподвижна. Подвижная камера добавляет собственное движение к движению персонажа, разделить их потом трудно.
- Один человек в кадре. Большинство инструментов работают с одной фигурой, второй человек ломает трекинг.
Отдельно про ракурс: снимайте фронтально или под углом до тридцати градусов. Строго сбоку алгоритм теряет одну сторону тела, и она восстанавливается зеркалированием, то есть неверно.
Что получается на выходе
Обычно это анимация скелета в формате BVH или FBX. Иногда сразу привязанная к типовому персонажу.
Данные будут содержать три типичных дефекта, к которым нужно быть готовым.
Дрожание. Мелкие колебания суставов от кадра к кадру. Алгоритм оценивает каждый кадр с погрешностью, и эта погрешность выглядит как тремор.
Проскальзывание стоп. Персонаж идёт, а ноги едут по полу, будто он на льду. Это следствие неточной оценки глубины и отсутствия понятия о контакте с опорой.
Вывернутые суставы. На кадрах, где конечность перекрыта телом, алгоритм теряет её и восстанавливает в неестественном положении. Обычно это один до трёх кадров, но они разрушают всё движение.
Чистка данных: обязательный этап
Сырой захват не используют. Порядок обработки такой.
- Сглаживание кривых. В графическом редакторе анимации применить сглаживание к каналам вращения. Задача убрать дрожание, не убив реальную динамику: слишком сильное сглаживание делает движение ватным.
- Правка выбросов. Найти кадры с вывернутыми суставами и поправить вручную. Их немного, но искать нужно глазами, автоматика их не отличает от быстрого движения.
- Фиксация стоп. Расставить ключи там, где стопа касается пола, и прижать её. В большинстве пакетов для этого есть отдельный инструмент.
- Коррекция корневого движения. Отделить перемещение персонажа в пространстве от движения тела относительно корня, иначе анимация не встанет в игровой движок.
- Ретаргет на свой скелет. Захваченные пропорции почти никогда не совпадают с пропорциями вашего персонажа.
Ретаргет это отдельная тема со своими граблями: разное количество костей, разная ориентация осей, разная поза покоя. Базовые принципы работы со скелетом разобраны в гайде по анимации персонажа в Blender.
Где это работает хорошо
Реалистичная оценка областей применения.
- Референс для аниматора. Самое ценное применение. Не финальная анимация, а основа, поверх которой работает художник. Тайминг и вес движения захватываются достоверно.
- Массовка и второстепенные персонажи. Там, где зритель не рассматривает движение вблизи.
- Прототипирование. Проверить, как читается сцена, до того как заказывать настоящий захват.
- Циклы ходьбы и бега для игр, после существенной ручной доводки.
- Обучение и разбор техники. Спорт, танцы, эргономика.
Где не работает
Честный список ограничений, чтобы не терять время.
Мимика и пальцы. Обычное видео тела не даёт разрешения для лица и кистей. Для них нужны отдельные решения и отдельная съёмка крупным планом.
Взаимодействие с предметами. Алгоритм не понимает, что персонаж держит чашку, и рука будет проходить сквозь неё.
Контакт двух персонажей. Объятия, борьба, танец в паре. Фигуры перекрывают друг друга, трекинг рассыпается.
Быстрые вращения. Сальто, пируэты. За время оборота алгоритм теряет ориентацию тела.
Точные измерения. Если нужны абсолютные величины для биомеханики, нужна калиброванная система, а не оценка по одному видео.
Подготовка сцены: что сделать до съёмки
Полчаса подготовки экономят несколько часов чистки. Порядок такой.
Разметьте площадку. Положите на пол малярный скотч в тех местах, где актёр должен начинать и заканчивать движение. Это даёт повторяемость дублей и упрощает совмещение с виртуальной сценой.
Снимите калибровочный кадр. Актёр стоит прямо, руки в стороны, ладони вперёд. Такая поза служит опорной при ретаргете и помогает понять, где алгоритм систематически ошибается.
Проверьте пропорции. Запишите рост актёра и длину рук. При переносе на персонажа с другими пропорциями эти цифры понадобятся, иначе стопы будут проваливаться или висеть.
Снимите пустую площадку. Кадр без человека нужен, если планируете отделять фигуру от фона или совмещать с виртуальной камерой.
Сделайте хлопок в начале дубля. Резкий звук и резкое движение дают точку синхронизации, если снимаете с нескольких устройств.
Работа с несколькими ракурсами
Один из способов заметно поднять качество без покупки оборудования это снять то же движение с двух телефонов под углом примерно девяносто градусов.
Часть инструментов умеет объединять данные с нескольких камер, и тогда глубина перестаёт быть догадкой: то, что перекрыто на одном ракурсе, видно на другом. Проскальзывание стоп и вывернутые суставы почти исчезают.
Если инструмент не поддерживает несколько камер, второй ракурс всё равно полезен как контрольный: по нему видно, где автоматика ошиблась, и правки делаются осознанно, а не на глаз.
Синхронизация решается тем самым хлопком: находите кадр с хлопком на обеих дорожках и совмещаете по нему.
Сравнение с настоящим захватом
Чтобы понимать, за что платят в студии.
Маркерная система даёт погрешность в миллиметры, работает с несколькими персонажами, захватывает пальцы и лицо и не теряет данные при перекрытиях, потому что камер много. Стоимость сеанса соответствующая.
Захват по видео даёт погрешность в сантиметры, один персонаж, без пальцев и лица, с провалами при перекрытиях. Стоимость это время на съёмку и обработку.
Вывод очевиден: это не замена, а другой инструмент для других задач. Он занял нишу, где раньше не было ничего, потому что настоящий захват был недоступен по деньгам.
Как встроить в пайплайн
Практическая последовательность для небольшой команды.
Снимите несколько дублей одного движения, а не один. Выберите лучший по трекингу, а не по актёрской игре: переснять дешевле, чем чинить развалившиеся данные.
Захватывайте движения блоками по несколько секунд. Длинный непрерывный дубль накапливает дрейф, короткие куски чистятся быстрее и стыкуются в редакторе.
Готовую анимацию сразу проверяйте в целевом движке, а не только во вьюпорте. Часть проблем вылезает именно при экспорте: разная ориентация осей, масштаб в сантиметрах вместо метров, лишний корневой узел. Порядок переноса без потерь разбирали в материале про экспорт из Blender в Unreal Engine 5.
Сразу заведите библиотеку очищенных движений. Однажды доведённый цикл ходьбы переиспользуется годами, и это главная экономия. Как организовать такую библиотеку, разбирали в материале про Asset Library в Blender.
Из отдельных сервисов разбор видео предлагает, например, Rokoko: принцип у всех похожий, отличается качество чистки и цена.
Частые вопросы
Подойдёт ли видео с телефона?
Да, современного телефона достаточно. Важнее не камера, а условия: свет, фон, одежда, полный рост в кадре и 60 кадров в секунду.
Можно ли захватить движение с готового ролика из интернета?
Технически часто да, юридически почти всегда нет. Движение в кадре это результат работы конкретного человека, и использование чужого видео в коммерческом проекте требует разрешения.
Сколько времени занимает чистка?
Для пяти секунд движения от получаса до двух часов в зависимости от требований. Это главная скрытая стоимость метода: сам захват занимает минуты, а доводка часы.
Нужна ли видеокарта для обработки?
Локальные решения считают заметно быстрее на видеокарте, но работают и на процессоре, просто дольше. Облачные сервисы снимают этот вопрос, но требуют загружать съёмку на чужой сервер, что не всегда допустимо.
Почему персонаж проваливается сквозь пол?
Потому что алгоритм не знает, где пол. Уровень опоры задаётся при обработке: обычно по среднему положению стоп в кадрах контакта. Если в съёмке персонаж поднимался по ступеням, автоматическая привязка к одной плоскости даст провал.
