Веб-камера вместо захвата движения: как устроен открытый VTuber-движок для VRM-аватаров
Проект VTuber Studio Pro пытается анимировать VRM-аватара обычной веб-камерой — без датчиков и без облака. Разработчик честно перечисляет, где моноулярный трекинг врёт, и зовёт сообщество ломать приложение с конкретными баг-репортами.
Одна веб-камера не умеет измерять глубину — и хороший трекинг начинается не с того, чтобы это отрицать, а с того, чтобы аккуратно врать и не дёргаться.
VTuber-сцена десятилетиями живёт на обещании: сел за стол, включил камеру — и твой персонаж повторяет каждое движение. На практике всё держится на дорогом оборудовании, закрытых движках или облаке. Поэтому появление VTuber Studio Pro — бесплатного открытого приложения, которое анимирует VRM-модель с обычной веб-камеры, — инфоповод скорее инженерный, чем продуктовый. Ценно не «ещё один аналог», а то, что автор публично разбирает собственные ограничения. Это редкость: обычно о слабых местах узнаёшь посреди стрима, когда у аватара вдруг вывихивается рука.
Что есть в версии 1.2.5
Портативная сборка для Windows вышла под номером v1.2.5. Приложение понимает модели обоих поколений формата VRM — 0.x и 1.0, то есть пожилые Live2D-подобные аватары и новые, с расширенными blendshape'ами и нормализованными костями. Есть режим прозрачного фона: аватар можно вывести отдельным слоем поверх сцены в OBS. Это, если честно, базовый минимум для любого VTuber-тула — без него пригодность к стримингу вообще обсуждать бессмысленно.
Трекинг целиком локальный. Никуда видео не уходит, интернет для работы не нужен. Точки — лицо, плечи, руки, кисти, пальцы — снимаются с кадра и натягиваются на риг аватара. Требования к железу минимальны: веб-камера и компьютер. Для входа в тему это серьёзный аргумент, потому что альтернатива часто начинается с покупки Leap Motion, Kinect или хотя бы камеры с глубиной.
Где начинаются догадки
Ключевой конфликт любого моноулярного трекинга — одна камера даёт двумерную картинку, а аватар живёт в трёхмерном пространстве. Глубину никто не измеряет, её угадывают. И вот тут начинается самое интересное.
Рука, приближающаяся к объективу, в кадре выглядит как увеличившаяся кисть. А это ровно то же самое, что человек, наклонившийся вперёд, или более крупная модель. Алгоритм не может отличить эти ситуации по одному снимку — он выбирает наиболее вероятную интерпретацию, и часто ошибается.
Автор VTuber Studio Pro пошёл по пути глушения движения по глубине: резкие скачки «вперёд-назад» приглушаются, чтобы картинка не дергалась. Цена очевидна — стабильность куплена отзывчивостью. Жест «рука к камере» будет выглядеть вяло, зато аватар не начнёт эпилептически трястись при каждом неловком движении.
Вторая беда — потеря конечности. Как только рука или плечо выходит за границу кадра, трекер теряет опорные точки. Выход один: переключаться на резервную логику и не выдумывать точную позу. Придуманная поза выглядит как провал в анимации, резервная — как плавное затухание. Разница между ними на стриме огромная.
Третья — свет и перекрытие лица. Выражения эмоций в моноулярном трекинге и так ненадёжны: подсветка снизу превращает улыбку в оскал, рука у лица съедает половину ключевых точек, а блик на очках иногда интерпретируется как моргание.
Всё это разработчик прямо называет текущими ограничениями, а не решёнными задачами. И это правильная постановка: заявлять, что одна веб-камера измеряет то же, что камера глубины, — значит врать пользователю в аннотации.
Почему это всё-таки железо
Формально новость про софт. По существу — про то, что датчики не спасают, если их нет, и как инженер выжимает максимум из дешёвой оптики. Классическая проблема: глубина в моноулярном изображении неоднозначна, а современные модели оценки позы (семейство MediaPipe и аналоги) выдают лишь двумерные ключевые точки плюс грубую трёхмерную реконструкцию, обученную на датасетах с «типичными» позами. Как только пользователь делает что-то нестандартное — жест у объектива, наклон, поворот боком — реконструкция уходит в шум.
Отсюда и инженерный компромисс: фильтрация вместо точности. Приглушение глубинного движения — это по сути тот же подход, что демпфирование в фильтрах Калмана или сглаживание в слежении за рукой. Убери дёрганье ценой «ватности». В теории можно пойти дальше — предсказание позы на несколько кадров вперёд, взаимные ограничения скелета, привязка к модели тела, — но каждая такая надстройка добавляет задержку и требования к CPU. Для локального приложения, которое обещает работать на обычном компьютере, это непозволительная роскошь.
Как сломать приложение правильно
Самая практичная часть публикации — не список фич, а инструкция по баг-репорту. Скачал портативную сборку, загрузил свой VRM-аватар, включил камеру, проверил лицо, обе руки, пальцы и прозрачную сцену в OBS. Потом завёл issue на GitHub и указал четыре вещи: версию VRM, конфигурацию камеры и освещения, движение, которое сломалось, и ожидаемое поведение.
Это ровно тот формат обратной связи, который нужен небольшому проекту. «Не работает» — бесполезно. «На VRM 1.0 с нетипичным ригом, при боковом свете, при поднятии правой руки выше плеча аватар сгибает локоть внутрь, а должен держать руку прямо» — воспроизводимый кейс, по которому можно что-то чинить.
Особо ценит разработчик три категории тестов: модели с нестандартными ригами, руки вблизи камеры и трекинг при неидеальном свете. То есть ровно те зоны, где моноулярный подход ломается первым.
Пара слов о скепсисе
Проект ранний. Аккаунт и репозиторий появились практически одновременно с публикацией, сборка одна, тестов и бенчмарков нет ни в тексте, ни в видеороликах. Ни один из тезисов о стабильности или точности пока не подкреплён цифрами: ни FPS, ни точности отслеживания пальцев, ни нагрузки на CPU. Это нормально для анонса на стадии «попробуйте и расскажите, что сломалось», но и доверять на слово тут нечему.
Второй нюанс — имя репозитория. Ссылка ведёт на GitHub-аккаунт с бессмысленным набором символов в названии. Для проекта, который просит сообщество присылать баг-репорты и потенциально форкать код, это плохая витрина. Надеюсь, со временем путь станет человеческим — иначе проверить, не подделка ли перед вами, будет сложнее, чем следить за аватаром.
Кому это нужно
Если вы только присматриваетесь к VTubing-у и не хотите тратиться на оборудование — попробовать нечего терять: бесплатно, локально, без регистрации. Если вы стример с привычным сетапом на VTube Studio или VSeeFace — смысла переезжать пока нет: это экспериментальная сборка с известными ограничениями, а не готовый инструмент для эфира.
Если же вы разработчик, который сам лез в webcam-driven анимацию аватаров, — вот это по-настоящему интересно. Вопрос в оригинальной публикации задан по делу: какой компромисс между стабильностью и отзывчивостью оказался самым болезненным именно у вас? Ответов на него в комментариях пока нет, но сам вопрос — лучшее, что есть в этом посте. Потому что именно на этом компромиссе держится вся индустрия анимации по веб-камере.
Пока одна камера не научится видеть глубину, все мы будем выбирать между «плавно, но ватно» и «живо, но с дёрганьем». VTuber Studio Pro выбрал первое и честно об этом сказал. Это уже лучше, чем обещать невозможное.