引言
如果你玩过现代电子游戏或从事过 3D 动画工作,你可能注意到了一个奇特的现象: 身穿战术装备、紧身超级英雄套装或牛仔裤的角色看起来棒极了。但是,身穿长裙、飘逸裙摆或宽松长袍的角色?它们看起来往往……很奇怪。布料可能会在双腿之间不自然地拉伸,跑动时会撕裂,或者看起来像是一个僵硬的塑料壳,而不是飘动的布料。
这不仅仅是动画制作懒惰的问题;这是我们传统上使用计算机对穿衣人体进行建模的一个根本性限制。行业标准依赖于一种称为线性混合蒙皮 (Linear Blend Skinning, LBS) 的技术,该技术假设角色身上的所有东西都与骨骼同步移动,就像皮肤一样。虽然这对于紧身 T 恤来说非常完美,但对于不应该完全像下面的腿那样移动的裙子来说,这种方法就彻底失败了。
在这篇文章中,我们将深入探讨 FreeCloth , 这是一篇提出巧妙混合解决方案的新研究论文。研究人员没有试图强行让现有方法适用于宽松的衣服,而是提出了一个简单的问题: 为什么要对所有衣服一视同仁?
通过将人体模型划分为不同的区域——随身体变形的紧身区域和自由生成的宽松区域——FreeCloth 在复杂服装建模方面取得了最先进的成果。让我们看看它是如何工作的。

问题所在: “裤状”伪影
要理解为什么 FreeCloth 是必要的,我们首先需要了解当前 3D 人体建模的瓶颈。
大多数基于学习的 3D 虚拟化身方法都依赖于 线性混合蒙皮 (LBS) 。 在 LBS 中,3D 网格上的每个点都被分配了对应于骨架中骨骼的“权重”。当骨骼移动时,网格点也随之移动。这对皮肤和紧身衣物来说既高效又有效。
然而,这些方法通常依赖于一个“规范空间 (canonical space) ”——一种中性姿态 (如 T 型姿态,T-pose) ,系统在这个姿态下学习物体的形状。为了建立一个摆出特定姿态的人体模型,系统会尝试将摆好姿态的形状映射回这个中性 T 型姿态。
问题就在这里: 在 T 型姿态下,你要把裙子的布料映射到哪里?
在中性姿态下,双腿之间的区域是空的。但在宽松的裙子中,那个区域充满了布料。当基于 LBS 的方法试图“规范化”一条裙子时,它们通常会将布料映射到最近的腿上。当角色移动时,裙子就会拉伸和分裂,分别跟随两条腿,而不是像一块完整的布料那样垂坠。这就导致了臭名昭著的“分裂”或“裤状”伪影 (artifacts) ,漂亮的裙子最终看起来像是一条奇怪的松垮裤子。
之前解决这个问题的尝试包括改进 LBS 权重或使用由粗到精的预测,但它们都有同一个根本原因: 它们试图用一个为紧身皮肤设计的系统来模拟宽松的物理效果。
解决方案: 混合建模
FreeCloth 的作者提出了一种范式转变。与其寻找一种“一刀切”的算法,不如承认穿衣人体的不同部分有不同的行为方式。
他们的框架将人体分为三个不同的类别:
- 未着衣区域 (黄色) : 手、脚和头部。这些不需要复杂的服装变形;它们只需要跟随骨骼移动。
- 变形区域 (蓝色) : 贴近身体的衣物 (例如连衣裙的腰部、紧身袖子) 。这些部分与皮肤紧密随动,因此 LBS 在这里效果很好。
- 生成区域 (绿色) : 宽松的衣物 (例如裙摆) 。这些区域明显偏离身体,不应受到蒙皮权重的限制。

如上面的架构图所示,系统在并行分支中处理这些区域,最后将它们合并以形成最终的虚拟化身。
逐步方法分析
让我们将 FreeCloth 的流程分解为三个核心组件: 分割、LBS 变形和自由形式生成。
1. 人体部位分割
在模型处理几何形状之前,它需要知道它在看什么。系统需要自动决定哪些点应该变形 (LBS) ,哪些点应该生成 (自由形式) 。
研究人员利用了 Segment Anything Model (SAM) , 这是一个强大的图像分割基础模型。他们在规范姿态下渲染人体模型的法线贴图,并使用 SAM 来识别宽松的服装区域 (如裙子) 。

这个过程创建了一个 服装裁剪图 (Clothing-Cut Map) 。
- 黄色: 未着衣点 (直接复制) 。
- 蓝色: 紧身衣物点 (发送到 LBS 分支) 。
- 绿色: 宽松衣物点 (发送到生成器分支) 。
这张图至关重要。没有它,系统就不知道何时停止应用 LBS 并开始生成,从而导致在两种方法交汇处出现撕裂伪影。
2. 基于 LBS 的局部变形 (蓝色区域)
对于贴在身上的那部分衣服,作者坚持使用行之有效的方法。他们采用标准的基于 LBS 的方法。
首先,他们使用 PointNet++ 编码器提取 局部姿态编码 (Local Pose Codes) (\(z^p_i\))。这捕捉了局部特定的身体姿态几何配置。他们还使用 服装编码 (Garment Codes) (\(z^g_i\)) 来表示服装的类型 (例如,T 恤与背心) 。
这里的核心操作是在规范空间中预测一个位移 (布料从皮肤向外凸出多少) 。
\[ [ { \pmb r } _ { i } ^ { c } , { \pmb n } _ { i } ^ { c } ] = \mathcal { D } ( z _ { i } ^ { p } , z _ { i } ^ { g } , { \pmb h } ^ { g } , { \pmb p } _ { i } ^ { c } ) , \]这里,\(\mathcal{D}\) 是解码器网络,用于预测残差偏移 \(r_i^c\) 和法线 \(n_i^c\)。一旦在其中性 T 型姿态空间计算出这个偏移量,就使用标准的蒙皮变换 (\(T_i\)) 将其转换到目标姿态:
\[ \pmb { x } _ { i } ^ { d } = \pmb { p } _ { i } + \pmb { T } _ { i } \cdot \pmb { r } _ { i } ^ { c } = \pmb { T } _ { i } \cdot ( \pmb { p } _ { i } ^ { c } + \pmb { r } _ { i } ^ { c } ) . \]这完美地处理了网格的紧身部分。但是裙子怎么办呢?
3. 自由形式生成 (绿色区域)
这是该论文的新颖贡献。对于在分割步骤中识别出的“绿色”区域,该模型完全放弃了 LBS。相反,它将裙子视为一个点云生成问题。
目标是生成一组点 \(X^g\),代表当前姿态下的裙子,而不试图将其映射回 T 型姿态。
结构感知姿态编码
为了生成能随双腿正确流动的裙子,模型需要具体理解双腿的姿态。全局姿态向量 (描述整个身体的一个向量) 通常过于模糊。
作者提出了 结构感知姿态编码 (Structure-Aware Pose Encoding) 。 他们将未着衣的身体分割成语义部分 (例如,左大腿、右小腿) ,并使用 PointNet++ 单独提取每个部分的特征。
\[ \pmb { h } ^ { p } = \mathrm { M a x - P o o l i n g } ( \{ \mathcal { E } _ { g } ( \pmb { P } _ { k } ) \} _ { k = 1 } ^ { K _ { b } } ) . \]这产生了一个姿态编码 \(h^p\),它对与裙子相互作用的肢体的特定关节运动高度敏感。
生成器
有了姿态编码 (\(h^p\)) 和全局服装编码 (\(h^g\)),生成器网络 \(\mathcal{G}\) 直接在姿态空间中创建宽松衣物的点:
\[ X ^ { g } = \{ \pmb { x } _ { i } ^ { g } \} _ { i = 1 } ^ { N _ { g } } = \mathcal { G } ( \pmb { h } ^ { p } , \pmb { h } ^ { g } ) , \]因为这种生成是“自由形式”的,它不受腿部拓扑结构的限制。裙子可以在双腿之间的空隙中垂坠、折叠和悬挂,而不会被骨骼权重人为地拉开。
碰撞损失
自由生成衣物的一个风险是它可能会穿过身体 (例如,裙子可能会意外穿过大腿) 。为了防止这种情况,作者在训练期间实施了一个碰撞损失函数:
\[ \mathcal { L } _ { c } = \frac { 1 } { N _ { g } } \sum _ { j = 1 } ^ { N _ { g } } \operatorname* { m a x } \{ \epsilon - d ( \pmb { x } _ { j } ^ { g } ) , 0 \} , \]这本质上是惩罚模型,如果发现任何生成的衣物点 \(x^g_j\) 位于身体体积内部 (由有向距离函数 \(d\) 定义) 。
实验与结果
研究人员将 FreeCloth 与几种最先进的方法进行了比较: POP、SkiRT 和 FITE 。 他们使用了 ReSynth 数据集,其中包含穿着挑战性服装的高质量合成人体扫描。
视觉质量
视觉差异是惊人的。在下图中,请仔细观察裙子 (红色高亮部分) 。

- POP (上) : 严重受限于“裤腿”伪影。裙子被撕裂以跟随双腿。
- FITE (中) : 表现较好,但在裙子本应连续的地方经常产生“开放表面”或噪点。
- FreeCloth (下) : 即使在两腿之间的困难区域,也能保持连续、平滑的表面,并具有逼真的皱褶细节。
传统指标的问题
有趣的是,作者指出像 倒角距离 (Chamfer Distance, CD) 这样的标准指标——测量点之间的平均距离——对于宽松的衣服并不总是可靠的。一个平滑、毫无特征的团块可能比一个稍微偏离真实值 (ground truth) 的高度细节化的裙子拥有更低的 CD 误差。

因为布料模拟是随机的 (相同的姿态可能会根据之前的动作产生不同的皱褶模式) ,精确的点匹配并不总是最佳目标。因此,他们还依赖于渲染法线贴图上的 FID (Fréchet Inception Distance) 等感知指标,这能更好地捕捉视觉真实感。
定量数据
尽管指标存在局限性,FreeCloth 依然取得了全面的优异表现,特别是在与视觉质量相关的 FID 分数上。

用户偏好
为了验证视觉上的改进,研究人员进行了一项用户研究 (有人类投票者) 和一项使用 GPT-4o 作为裁判的研究。结果压倒性地支持 FreeCloth。

为什么混合方法很重要 (消融实验)
“混合”部分真的有必要吗?我们能不能只用生成器来处理整个身体?或者只用 LBS?
下面的消融实验回答了这个问题。
- (a) 仅变形 (Deformation Only) : 导致裤腿分裂。
- (b) 仅生成 (Generation Only) : 结果充满噪点且不连贯,特别是在膝盖等关节周围。
- (e) 完整模型 (Full Model) : 两全其美。关节干净,裙子也干净。

此外, 服装裁剪图至关重要。如果你试图在没有明确分割指导的情况下简单地混合这两种方法,由于 LBS 网格与生成网格的冲突,你会得到撕裂的效果。

结论
FreeCloth 代表了数字人体建模向前迈出的重要一步,因为它摆脱了单一算法必须解决所有问题的观念。通过承认紧身衣物和宽松衣物在物理上是截然不同的现象,研究人员创建了一个针对不同任务应用正确工具的管线。
- LBS 用于它擅长的地方: 关节连接、贴合身体的变形。
- 自由形式生成 用于 LBS 失败的地方: 宽松、流动的拓扑结构。
这种混合方法有效地解决了多年来困扰数据驱动型虚拟化身的“分裂裙子”伪影问题。对于计算机图形学的学生和研究人员来说,这就好比是一堂关于几何先验的课: 知道何时施加结构约束 (如骨骼) 以及何时让神经网络自由生成几何形状,是获得高保真结果的关键。
虽然该方法目前专注于单帧生成 (意味着它尚未考虑布料随前一帧摆动的物理特性) ,但它为游戏和虚拟现实中更逼真的虚拟化身打开了大门。作者还建议未来的工作可以将其与 3D 高斯泼溅 (3D Gaussian Splatting) 相结合,这可能会带来不仅几何形状出色,而且纹理具有照片级真实感的虚拟化身。
](https://deep-paper.org/en/paper/2411.19942/images/cover.png)