Stylized hair in games and avatars is composed of individual "hair cards" (strips of geometry placed by artists) and driven by spring bones. HairDeck takes a single character image and directly generates these hair cards and the spring bone chains that drive them: each hair card is encoded as a token, denoised together using a set diffusion Transformer, and then a second diffusion model generates the bone chains and performs skinning. The output preserves individual hair cards and per-card UVs, allowing export to GLB or application to a provided body model to export a VRM avatar.
Likes 17 · Code Stars 14
Reasons
- The authors report that on CHARM's own test set, chamfer distance is reduced by 44%, hair card orientation error is reduced by more than half, and speed is 33 times faster; generation from a single image also outperforms CHARM, image-to-3D pipelines, and hair strand-based methods.
- Code and four checkpoints (image-conditioned DiT, hair card VAE, bone chain DiT, point cloud-conditioned DiT) have been released, with code and weights under Apache-2.0, and an online demo available on Hugging Face.
- The outputs can be directly used downstream: GLB meshes, VRM avatars, and head-turn preview videos, eliminating the need to manually separate fused meshes into hair cards.
Usage
- Quickest experience: Hugging Face Space hyz317/HairDeck.
- Local: Linux x86-64, Python 3.12, and an NVIDIA GPU (tested by the authors with PyTorch 2.8 + CUDA 12.8); git clone github.com/hyz317/HairDeck → pip install -r requirements.txt → pip install --no-deps pyrender==0.1.45.
- Weights: First agree to the licenses for facebook/sam3 and facebook/dinov3-vitl16-pretrain-lvd1689m on Hugging Face and run hf auth login, then set HAIRDECK_ROOT and run python scripts/setup/download_weights.py (this will also download Blender 4.2 LTS and the VRM plugin).
- Generation: python scripts/image_to_hair.py character.png --out results/my_character --n 4 (1–4 variants, use --no-chains to output only hair cards); Export: python -m hairdeck.vrm.export results/my_character/character 0; You can also run python demo/app.py to start a local web interface.
Risks
- Many dependencies: SAM 3 and DINOv3 are gated models, requiring login to Hugging Face and agreement to licenses; Blender + VRM plugin and ffmpeg are also required, and third-party components have their own licenses.
- Targeted at stylized/anime-style card hair, not realistic hair strands; the stylized rendered image pool used for the released image model was not published, so retraining cannot reproduce the same model.
- Accuracy and speed figures are reported by the authors; without seeing the generated results, actual visual quality is not evaluated.