单图直出可动画的游戏发型:HairDeck 快 CHARM 33 倍

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↑朝向误差↓单发型耗时
CHARM0.01170.75340.0°33.7 s
检索最相近训练发型0.01190.73224.8°–
同套 token、自回归生成0.00780.82316.6°6.91 s
HairDeck0.00660.86716.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↓测试失败率真实图失败率单图耗时
CHARM0.018634.2%50.0%67.7 s
TRELLIS.20.013913.2%77.5%83.0 s
Hunyuan3D-2.10.014830.3%75.0%60.8 s
DiffLocks 转卡片0.017417.1%17.5%15.6 s
HairDeck0.00893.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 的自回归,省掉的是序列长度和顺序假设,换来的精度与速度都不是渐进量级。

局限与存疑

术语

原文与代码

相关论文

全部论文解读