Creative#3D modeling#Image generation

HairDeck: animation-ready stylized hair cards from a single image, exported as GLB or VRM

Tsinghua/CMU/CUHK researchers generate stylized hair cards with spring-bone chains from one image — per-card UVs, two-tone color, GLB/VRM export. Apache-2.0.

Project facts

GitHub Ecosystem
Repositorygithub.com/hyz317/HairDeck
License
Apache-2.0
Language
Python
Stars
988
Data checked
2026-11-09

Snapshot figures reflect the check date and may change over time.

Hair is usually the most laborious part of character modeling: cards have to be placed one by one, then rigged before they can move. HairDeck (988 stars, Apache-2.0, Python, created October 29, 2026), open-sourced by researchers at Tsinghua University, Carnegie Mellon and CUHK, generates stylized hair cards plus the spring-bone chains that animate them from a single image, and exports the result as a GLB mesh or attaches it to an avatar as VRM. Code, weights and an online demo landed together on October 30; Windows support, Apple-silicon MPS support and colored hair cards followed within two weeks.

Core features

  • Hair cards as a set: a card VAE encodes each card and conditional set diffusion generates the whole hairstyle jointly, rather than stacking cards one at a time.
  • Per-card structure and UVs: the output preserves individual cards and provides per-card UV coordinates, so retexturing in an engine does not mean re-unwrapping.
  • Color predicted along each card: a color model predicts colors along every card, covering two-tone hair and accessories, and the GLB and VRM exports carry them.
  • Spring-bone animation: a chain diffusion model generates the bones that drive the cards, with skinning and VRM export included — no manual rigging pass.
  • Platforms: Linux and native Windows with an NVIDIA CUDA GPU (Python 3.12, PyTorch 2.8, CUDA 12.8); Apple silicon runs the same pipeline on MPS without CUDA or Triton.

Typical use cases

  • Game and virtual-human assets: go from concept art to an animatable hair asset, skipping both the modeling and the rigging pass.
  • VTuber and VRM avatars: export VRM directly and attach it to an avatar with colors and bones intact.
  • Batch stylization: run many reference images through one pipeline for projects that need a large cast in a consistent style.

Quick start

On Linux, clone the repo, run pip install -r requirements.txt, then pip install --no-deps pyrender==0.1.45 to sidestep its outdated PyOpenGL pin. Weights live at hyz317/HairDeck on Hugging Face, and a hosted Space lets you try it without installing anything. Windows and macOS have separate setup docs (docs/windows.md, docs/macos.md), and a local Gradio demo is included; training and test-set evaluation scripts ship in the same repo.

Relation to existing options

The target is not “a good-looking hair texture” but “a hair asset that can move in an engine”: per-card UVs and a bone chain are things an image generator alone does not hand you. It chains naturally with three-live, covered here earlier — HairDeck produces the asset, a cross-platform runtime renders it — and it differs from scan-and-reconstruct routes like supersplat by generating stylized hair from a single image.

Summary

HairDeck fits character artists, technical artists and small teams that need stylized hair assets in volume. Facts and limits: Apache-2.0 makes commercial use straightforward; it is a research project whose Windows and MPS support only arrived in November 2026, so stability needs testing on your own platform; strand-level realistic hair and production-grade hair simulation are out of scope; the paper is arXiv 2610.40599, and method details should be read from the paper and project page.