Key takeaways

  • HairDeck generates stylized hair cards and spring-bone chains from one image in 1.33 seconds, against 67.7 seconds for CHARM.
  • On single images it fails on 3.5% of test characters and 10.0% of 40 in-the-wild illustrations, while CHARM fails on 34.2% and 50.0%.
  • It is trained on stylized VRoid hairstyles only, makes no textures, and gets rig recall of 0.390 from images.

HairDeck is a research system from Tsinghua University, Carnegie Mellon and the Chinese University of Hong Kong that turns a single anime-style image into the hair of a game character: a set of hair cards plus the spring-bone chains that make them move. The paper, posted to arXiv on October 29, reports a generation time of 1.33 seconds from one image on an RTX A6000, against 67.7 seconds for the previous stylized method, CHARM.

The paper had 23 upvotes on Hugging Face daily papers, and the team has released code and weights.

What a hair card is

Games and avatar apps with stylized characters rarely model hair as strands. Artists place flat ribbons, called hair cards, with a rhombic or triangular cross-section. The ribbons are the visible hair. To make them swing, a second layer of short bone chains, called spring bones, is simulated every frame.

That asset is awkward for general 3D tools. Strand generators output thousands of fine curves. Image-to-3D models output one fused mesh. Neither gives an artist a set of separate cards with a rig. The authors say CHARM was the only earlier method for stylized cards, and it writes out control points one at a time, which is slow and tends to break.

How HairDeck works

The key choice is to treat each card as one token. A card token holds the root position, the root normal, a 32-dimensional latent from a small variational autoencoder (the card VAE, 8.07M parameters), the cross-section type and a flag saying whether the card exists. A hairstyle has about 70 cards on average.

A set diffusion transformer then denoises all card tokens at once, rather than writing them in sequence. It has no positional embedding, so the cards form an unordered set. It has 192 slots, and the existence flags decide how many end up in use. The model has 181.3M parameters. It is conditioned either on a point cloud or on a single image, using DINOv3 features.

For single images, the team renders training characters in three drawing styles with Qwen-Image-Edit and uses SAM 3 to cut out in-the-wild illustrations. A second, smaller transformer (30.5M parameters) generates the spring-bone chains from the card tokens. The result exports to VRM, a common avatar file format.

Training used 36,440 hairstyles from VRoid characters, taken from CHARM's dataset.

Results

On CHARM's test protocol with 100 hairstyles given as point clouds, HairDeck beat every baseline on four of five geometry measures. Chamfer distance (lower is better) fell from 0.0117 for CHARM to 0.0066, and overlap (IoU, higher is better) rose from 0.753 to 0.867. Generation took 1.01 seconds against 33.7 seconds for CHARM. A card-by-card autoregressive baseline built by the authors took 6.91 seconds and stopped early, averaging 60.8 cards against 67.4 in the ground truth. HairDeck averaged 68.9. Card orientation error was 16.8 degrees against 40.0 for CHARM, though the autoregressive baseline was marginally lower at 16.6.

From a single image, on 76 test characters:

Method Chamfer distance IoU Failure rate, test Failure rate, in the wild Time
CHARM 0.0186 0.540 34.2% 50.0% 67.7 s
TRELLIS.2 0.0139 0.638 13.2% 77.5% 83.0 s
Hunyuan3D-2.1 0.0148 0.638 30.3% 75.0% 60.8 s
DiffLocks with cards 0.0174 0.592 17.1% 17.5% 15.6 s
HairDeck 0.0089 0.725 3.5% 10.0% 1.33 s

The "in the wild" column uses 40 anime illustrations the authors collected, so it is a small sample.

For the rigging, the authors compared generated chains with artist-made ones on 58 hairstyles. On artist cards the chain model reached recall 0.625 and precision 0.585, against 0.289 and 0.285 for retrieving the nearest known rig. Recall dropped to 0.542 on cards generated from point clouds and 0.390 on cards generated from images.

Ablations support the design. Dropping the root normal raised orientation error from 16.8 to 26.4 degrees. Training on CHARM's card templates instead raised it to 26.7. A smaller 54.6M model was slightly worse on Chamfer distance, 0.0072.

Limits

The authors list four. The model is trained on stylized VRoid hairstyles, so very short hair and realistic alpha-textured cards are out of scope. It generates geometry and UV layouts but no textures. Bows and hats that are modeled as cards can come out as hair. The chain model produces too few chains for unusual layouts, such as many chains radiating from the crown.

Two more cautions. Every comparison is on the authors' own test split of one dataset family, and a 76-character image test is small. The single-image recall of 0.390 for rigging also means an artist would still fix many chains by hand.

Why it matters

Stylized game hair has to be a rigged set of cards to work in an engine, and artists place those cards by hand. Going from an illustration to an editable, animatable set in about a second gives artists a starting point to adjust, not a final asset. The choice to treat cards as an unordered set, rather than a sequence, is also what removes the early-stopping problem the card-by-card baseline shows.

Code is on GitHub, the weights are on Hugging Face under an Apache-2.0 license tag, and there is a project page with results and a demo.

Frequently asked questions

What are hair cards?

Hair cards are flat ribbons that artists place on a character's head to form the visible hair in stylized games and avatars. Spring bones, short bone chains simulated each frame, make them move.

What does HairDeck generate?

It generates a set of hair cards, about 70 for a typical hairstyle, and a second set of spring-bone chains, from either a point cloud or a single image. The output exports to VRM.

Is HairDeck open source?

The team lists a GitHub repository and weights on Hugging Face, where the model carries an Apache-2.0 license tag. The paper's own text points only to the project page.

Does HairDeck make hair textures?

No. The authors say it generates geometry and UV layouts but no textures, and it is trained on stylized VRoid hairstyles, so realistic alpha-textured hair is out of scope.

Sources

  1. HairDeck: Animation-Ready Stylized Hair Cards from a Single ImagearXiv
  2. HairDeck project pageHairDeck authors
  3. HairDeck on Hugging Face PapersHugging Face
  4. HairDeck modelHugging Face
  5. HairDeck codeGitHub