В репозитории localai-org на GitHub вышел skin-tokens.cpp — порт на C++23 и GGML авторриггера SkinTokens/TokenRig от VAST-AI-Research. Система сама строит скелет и веса скиннинга для статичного GLB-меша, но, в отличие от оригинала, требовавшего NVIDIA GPU с минимум 14 ГБ видеопамяти и PyTorch, работает на CPU или Vulkan без Python-зависимостей. Веса распространяются в GGUF через Hugging Face, а привязка к готовому скелету сохраняет иерархию анимации в экспортируемом GLB.


Что произошло
Проект skin-tokens.cpp опубликован в репозитории localai-org на GitHub: репозиторий создан 2026-02-08, последний коммит датирован 2026-08-31. Инструмент принимает статичный GLB-меш и генерирует для него скелет с весами скиннинга либо привязывает меш к уже существующему скелету, сохраняя иерархию анимации в экспортируемом GLB. Весь пайплайн оригинала — Michelangelo-энкодер меша, авторегрессионная политика TokenRig на Qwen3-0.6B, FSQ-VAE и чанковый декодер SkinVAE — переписан под GGML и запускается на CPU или через Vulkan без PyTorch и Python-рантайма. Веса распространяются в форматах GGUF F16 и F32 через Hugging Face (LocalAI-io/SkinTokens-GGUF). Опционально доступна end-to-end цепочка: trellis2cpp генерирует и ремешит гуманоида, Kimodo анимирует его, а skin-tokens.cpp привязывает меш к анимационному скелету; также реализован экспериментальный ретаргетинг SOMA30→Mixamo52.
Контекст
Авторриггинг закрывает один из самых ручных этапов 3D-производства: чтобы статичная модель могла двигаться, ей нужны скелет и корректные веса скиннинга, которые обычно расставляют художники вручную или через облачные сервисы. Научная новизна подхода — авторегрессионная генерация рига через компактное токенное представление — принадлежит оригинальной работе VAST-AI-Research, описанной в статье SkinTokens (arXiv 2602.04805); оригинальный код распространяется под лицензией MIT. Ценность skin-tokens.cpp в другом: это инженерный перенос готового метода на GGML-стек, снимающий аппаратный барьер. Отдельный интерес в архитектуре представляет «маленькая» LM-политика TokenRig на Qwen3-0.6B для структурированной 3D-задачи вместо крупной модели. Порт вписывается в более широкий шаблон: научные 3D-пайплайны постепенно переносятся на GGML и потребительское железо, замыкая локальный цикл генерации и анимации моделей.
Почему это важно для индустрии
Раньше автоматический риггинг был либо ручной работой, либо задачей для CUDA/PyTorch-стека с серверным GPU, что отсекало локальные инструменты. skin-tokens.cpp превращает его во встраиваемый C++-компонент: через плоский C API (skintokens.h) авторриггинг можно встроить в локальные тулзы, игровые пайплайны и DCC-плагины без Python-зависимостей и без требования к видеопамяти. Связка trellis2cpp + Kimodo + skin-tokens.cpp закрывает полный локальный цикл «меш → скелет → движение → анимированный GLB» на потребительском железе. Для облачных авториггеров это давление на moat, но говорить о состоявшейся коммодитизации рано: она предполагает подтвержденное качество на разнообразных мешах, а пока есть лишь заявленная эквивалентность декодера из README. Если сообщество воспроизведет метрики и появятся независимые бенчмарки, вероятны плагины к движкам и DCC-инструментам, батч-сервисы риггинга и первые продукты на цепочке trellis2cpp + Kimodo + skin-tokens.cpp.
Почему это важно для пользователей
Проверить порт можно даже без дискретной видеокарты: достаточно скачать GGUF-веса с Hugging Face, собрать CLI (CMake + Ninja, опционально Vulkan) и прогнать свой статичный GLB через команду rig или skin на CPU. Для быстрой оценки без сборки есть веб-демо на Go/WebGL, работающее прямо в браузере, а для интеграции в собственные инструменты — C API (skintokens.h). Самый надежный сценарий сегодня — привязка готовых мешей к уже существующим скелетам и батч-обработка готовых моделей; несвязанную генерацию скелета пока стоит воспринимать как экспериментальную возможность, а не как замену ручному риггингу в продакшене.
Что пока неизвестно / ограничения
Все метрики порта self-reported из README: заявленная близость к PyTorch-референсу (relative L2 декодера 3.6e-6 на CPU и 9.1e-4 на Vulkan, top-4 bone match на вершину) — это метрика эквивалентности инференса, а не качества риггинга против ground truth. Независимых бенчмарков против базлайнов вроде UniRig и Puppeteer в предоставленных источниках нет. Несвязанная генерация скелета помечена экспериментальной, ретаргетинг SOMA30→Mixamo52 также экспериментален, а для end-to-end цепочки Trellis2 + Kimodo количественных метрик не публиковалось. Для сверки с PyTorch-референсом предлагается F32-конвертация официальных чекпойнтов — продвинутый путь проверки воспроизводимости.
Источники
- localai-org/skin-tokens.cpp — C++23/GGML-порт SkinTokens (README)
- VAST-AI-Research/SkinTokens — оригинальный репозиторий SkinTokens/TokenRig (MIT, NVIDIA GPU 14 ГБ)
- SkinTokens: A Learned Compact Representation for Unified Autoregressive Rigging (arXiv 2602.04805)
- LocalAI-io/SkinTokens-GGUF — веса в GGUF F16/F32 (Hugging Face)
Автор
Look at AI, редакция
