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- 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.