HairDeck: карточки волос и spring-кости из одного фото

ComfyUI Wikinews

HairDeck генерирует стилизованные карточки волос как единый набор из одного изображения, добавляет цепочки spring-костей, которые их анимируют, и экспортирует аватары GLB или VRM.

HairDeck превращает одно изображение персонажа в стилизованные карточки волос, те самые ленты, которые художник расставляет вручную и которые реально используются в игровых персонажах и аватарах VTuber, а также генерирует цепочки spring-костей, которые их анимируют. Веса и код: hyz317/HairDeck и hyz317/HairDeck. Статья: arXiv 2610.40599. Репозитории появились 27 и 29 октября 2026 года.

Волосы это та часть 3D-персонажа, которую конвейеры image-to-3D воспроизводят неправильнее всего. Реконструкция прядей даёт реалистичную причёску, которую тяжело рендерить, а реконструкция сетки даёт один слитый ком, который художник не может перечесать, изменить по стилю или анимировать. В стилизованном продакшене реально используется причёска из карточек, и её делают вручную, ленту за лентой.

HairDeck трактует причёску так, как её видит художник: как неупорядоченный набор примитивов. Каждая карточка волос это один токен, а set diffusion transformer денойзит все карточки вместе, поэтому модели никогда не приходится решать, в каком порядке идут волосы. В результате сохраняются отдельные карточки с собственными UV, а также цепочки spring-костей, которые приводят их в движение.

Пайплайн HairDeck

Пайплайн: токены карточек волос, set diffusion с обусловливанием изображением или облаком точек, и сгенерированные карточки с цепочками spring-костей.

Карточки как набор

Единственный предыдущий генератор стилизованных карточек волос, CHARM, декодирует причёску авторегрессивно как одну длинную последовательность контрольных точек. Из-за этого порядок последовательности важен, и ошибка в её начале распространяется на остальные волосы.

HairDeck делает наоборот. Card VAE кодирует каждую карточку в токен, set transformer смотрит на все токены сразу, а Card VAE декодирует каждый токен обратно в геометрию с собственными UV-координатами. По умолчанию карточки обусловлены изображением, либо облаком точек через четвёртую выпущенную модель.

Spring-кости идут вместе с волосами

Геометрия сама по себе ещё не ассет. Причёска из карточек в игровом движке или в аватаре VRM выглядит живой только потому, что spring-кости тянут каждую карточку с небольшой физикой, а эти цепочки обычно строят вручную и раскрашивают веса уже после того, как сетка готова.

Модель диффузии цепочек генерирует их напрямую, с обусловливанием на токены карточек, поэтому экспорт несёт в себе не только геометрию, но и скиннинг. На вход подаётся одно изображение, а на выходе получается причёска, которая качается.

Постерный кадр из демо-видео

Кадр из демо проекта: сгенерированные карточки на предоставленном теле аватара.

Демо-видео проекта: одно входное изображение, четыре сгенерированных варианта и предпросмотр поворота головы в VRM.

Что поставляется

МодельРольЧекпойнт
Image DiTГенерирует токены карточек с обусловливанием на изображениеckpt/image_model/model.safetensors
Card VAEДекодирует латентный вектор токена карточки в геометрию карточкиckpt/card_vae/model.safetensors
Chain DiTГенерирует цепочки spring-костей с обусловливанием на токены карточекckpt/chain_model/model.safetensors
Point-cloud DiTГенерирует токены карточек с обусловливанием на облако точекckpt/pointcloud_model/model.safetensors

Путь по изображению задействует Image DiT, Card VAE и Chain DiT. Модель для облака точек используется в пути генерации и оценки по облаку точек. Репозиторий также поставляется со статистиками нормализации, канонической системой координат головы, шаблонным аватаром VRoid Studio для экспорта в VRM и 100 тестовыми примерами с их оригинальной геометрией карточек, так что оценку можно воспроизвести без обучающего набора.

Для вывода требуется Linux x86-64, Python 3.12 и один GPU NVIDIA CUDA, тестировалось с PyTorch 2.8 и CUDA 12.8. Стек предобработки тяжелее самих моделей: SAM 3 и DINOv3 ViT-L/16 это загрузки с ограниченным доступом, требующие принятия лицензий, BiRefNet-matting выполняет вырезание, а экспорт в VRM управляет Blender 4.2 LTS с аддоном VRM, который скрипт установки может скачать самостоятельно. Путь VRM по-прежнему остаётся пайплайном Python и Blender, а не пользовательской нодой ComfyUI.

Одна команда генерирует от одного до четырёх вариантов, а --no-chains отключает модель spring-костей, когда нужны только карточки:

python scripts/image_to_hair.py character.png --out results/my_character --n 4
python -m hairdeck.vrm.export results/my_character/character 0

Цифры из статьи

На собственном тестовом наборе CHARM HairDeck сообщает о на 44% меньшем расстоянии Chamfer и более чем вдвое меньшей ошибке ориентации карточек, работая при этом в 33 раза быстрее. По single image авторы сообщают о превосходстве над CHARM, конвейерами image-to-3D и методами на основе прядей, а это именно то сравнение, которое важно для всех, кто подаёт на вход сгенерированного персонажа, а не отрендеренного.

Доступность

  • hyz317/HairDeck на Hugging Face: четыре чекпойнта, вспомогательные данные, 100 тестовых примеров, Apache-2.0
  • hyz317/HairDeck на GitHub: код вывода, локального демо, оценки и обучения, на данный момент единственный поддерживаемый путь
  • Размещённое демо Space, которое генерирует волосы и экспортирует VRM прямо из браузера
  • Официальной интеграции с ComfyUI нет. Очень новый пакет от сообщества, FengLairh/ComfyUI-HairDeck, оборачивает те же чекпойнты в три ноды (загрузка, генерация, сохранение), которые работают внутри собственного процесса Python в ComfyUI и подготавливают портативный Blender для экспорта в VRM; он появился 1 ноября и здесь не проверялся

Комментарии

Войдите через GitHub, чтобы участвовать в обсуждении.

Загрузка комментариев…
HairDeck: карточки волос и spring-кости из одного фото | ComfyUI Wiki