HairDeck: Animation-Ready Stylized Hair Cards from a Single Image
Yuze He, Yixiang Wei, Wang Zhao, Chuhao Chen, Yanning Zhou, Yong-Jin Liu
cs.CV, cs.GR
2026-10-30
把每张头发卡片压成一个 token、用无序集合扩散一次生成,连弹簧骨链一起出,比 CHARM 误差降 44%、快 33 倍。
游戏和虚拟形象里,风格化角色的头发不是一撮撮发丝,是一叠 hair cards(头发卡片):几十到一百多条窄面片,每条由艺术家手工摆放,面片几何本身就是可见的头发;再挂上 spring bone(弹簧骨骼)链,让它随头部运动甩动、回弹。Unity 的 Dynamic Bone、VRChat 的 PhysBones、UE 的 Kawaii Physics 都在模拟这类骨骼。摆卡和绑骨的活儿目前全靠手。
现有生成方法给不出这份资产。发丝重建方法(包括接受动漫输入的新工作)输出的是写实头发的 strands;image-to-3D 生成器输出一整块融合 mesh,没有卡片可绑骨骼;CHARM 是此前唯一能生成风格化 hair cards 的方法,但它把发型编成几百到上千个离散控制点、自回归逐个解码。序列长,还给卡片强加了一个数据里本不存在的顺序,又慢又欠准。
核心观察一句话:发型是一组无序的、艺术家定义的基本单元,那就按集合生成,一张卡一个 token,全部并行去噪。
消融把设计选择坐实:同一套 token 改成逐卡自回归,CD 就从 0.0066 涨到 0.0078、耗时从 1.01 s 涨到 6.91 s,而且自回归平均只出 60.8 张卡就停(集合式 68.9 张,真值 67.4 张)。一张卡一个 token 已经吃下大部分精度,集合生成再补一程精度,速度收益也全来自它。
点云输入,CHARM 的 100 个测试发型,按其协议:
| 方法 | CD↓ | IoU↑ | 朝向误差↓ | 单发型耗时 |
| CHARM | 0.0117 | 0.753 | 40.0° | 33.7 s |
| 检索最相近训练发型 | 0.0119 | 0.732 | 24.8° | – |
| 同套 token、自回归生成 | 0.0078 | 0.823 | 16.6° | 6.91 s |
| HairDeck | 0.0066 | 0.867 | 16.8° | 1.01 s |
CD 降 44%,朝向误差砍掉一半多,快 33 倍。检索基线 CD 0.0119,说明 CHARM 的精度大致等于从训练集里背出一个最像的发型。54.6M 参数的缩小版(比 CHARM 的 61.2M 还小)CD 也有 0.0072,仍远低于 0.0117。
单图输入,76 个渲染测试角色加 40 张真实插画:
| 方法 | aligned CD↓ | 测试失败率 | 真实图失败率 | 单图耗时 |
| CHARM | 0.0186 | 34.2% | 50.0% | 67.7 s |
| TRELLIS.2 | 0.0139 | 13.2% | 77.5% | 83.0 s |
| Hunyuan3D-2.1 | 0.0148 | 30.3% | 75.0% | 60.8 s |
| DiffLocks 转卡片 | 0.0174 | 17.1% | 17.5% | 15.6 s |
| HairDeck | 0.0089 | 3.5% | 10.0% | 1.33 s |
两个关键消融:去掉根法线,朝向误差从 16.8° 涨到 26.4°;去掉 head frame,对齐前 CD 从 0.0136 涨到 0.0189。spring bone 在 58 个带链测试发型上对着艺术家链评估:用艺术家卡片时链召回 0.625、精确 0.585(检索基线 0.289 / 0.285),头发运动逐点相关性 0.702(规则式挂链 0.538);换到生成的卡片上,点云路径召回 0.542,单图路径掉到 0.390。
对做游戏和虚拟形象资产生成的人,这条管线第一次做到「一张图进、带骨骼的卡片发型出」:输出能按 VRM 模拟、能导出到引擎,单图 1.33 s 也够交互式场景用。清华、CMU 与港中文的合作,代码与项目页已公开。方法层面的结论更通用:凡是艺术家定义的基本单元拼装的资产(缝片做的服装、笔画构成的素描),「一个单元一个 token、无序集合扩散」都值得一试。相对 CHARM 的自回归,省掉的是序列长度和顺序假设,换来的精度与速度都不是渐进量级。