RigNet: Neural Rigging for Articulated Characters¶
Abstract¶
- RigNet 是一个端到端的自动化方法,用于从输入的角色模型生成动画绑定
- 给定表示关节化角色的输入 3D 模型,RigNet 预测与动画师期望在关节位置和拓扑结构上匹配的骨骼
- 该方法还基于预测的骨骼估计表面蒙皮权重
- 基于深度架构,直接操作网格表示,不对形状类别和结构做假设
- 在包含网格、骨骼和相应蒙皮权重的大型多样化绑定模型集合上训练
- 三重评估证明了方法的有效性:定量比较优于现有技术、定性展示绑定可表达不同细节层次的姿态和动画、技术评估各算法选择对输出绑定的影响
Introduction¶
动画绑定(rigging)是 3D 角色动画的核心技术,涉及创建动画"骨骼"并将其绑定到输入网格(或"皮肤")。骨骼表示角色的关节结构,骨骼关节旋转为动画师提供角色姿态的直接层次控制。
传统挑战¶
- 手工流程繁琐:传统手工绑定需要专业艺术家手动创建骨骼和绑定蒙皮权重
- 模板方法局限性:现有方法如 Pinocchio 将预定义的固定关节数量和拓扑的骨骼模板拟合到 3D 网格,当输入形状结构与选定模板不兼容时容易失败
- 类别限制:现有姿态估计方法仅针对特定形状类别(如人体或手部),受形状分类或固定骨骼结构限制
动画师的直觉和挑战¶
动画师在创建骨骼时会融入对生物解剖结构的隐性理解:
- 角色脊柱通常创建得更靠近背部而不是中轴表面,模拟人类和动物解剖结构
- 在圆柱形手臂几何体中引入比例合适的肘关节
- 感知结构的刚性或柔性程度以计算蒙皮权重
同时存在一定的歧义性:
- 根据动画意图,手部可能用单个手腕关节表示或用手部关节层次结构表示
- 脊柱和尾部关节可能用不同数量的关节捕获
贡献¶
- 模块化深度架构:
- 图神经网络预测关节数量和位置
- 学习层次树结构连接关节
- 生成每个网格顶点的蒙皮权重向量
- 技术创新:
- 神经网格注意力和可微分聚类方案定位关节
- 图神经网络学习网格表示
- 学习图节点(骨骼关节)连接性的网络
- 用户控制:可选参数控制输出骨骼的细节层次
- 显著性能提升:超越纯几何方法和提供部分解决方案的基于学习的方法
Related Work¶
骨骼表示¶
- 几何骨骼:中轴表示、曲线表示、分段线性结构
- 动画师导向骨骼:捕获关节化形状的移动性,由动画师对角色解剖结构和预期变形的理解驱动
自动绑定方法¶
- Pinocchio(开创性工作):
- 结合离散和连续优化将预定义骨骼模板拟合到 3D 模型
- 通过热扩散执行蒙皮
- 局限性:当输入形状结构与选定模板不兼容时拟合失败
- 体积网络方法:
- Xu et al. 提出学习体积网络从输入 3D 角色生成骨骼(不含蒙皮)
- 局限性:预处理网格到粗糙体素表示可能消除有用的表面特征、改变拓扑结构或累积近似误差
蒙皮变形¶
几何方法:
- Linear Blend Skinning (LBS) 或 Dual Quaternion Skinning (DQS)
- 基于手工设计的形状几何和骨骼函数自动估计蒙皮权重
- 难以考虑输入网格中隐含的解剖考虑
数据驱动方法:
- NeuroSkinning:尝试从一类输入 3D 角色学习蒙皮
- 本工作的优势:
- 学习边缘特征表示而非简单的边权重
- 使用内在形状表示(测地距离)而非外在特征(欧几里得距离)
- 不需要输入关节分类
- 提供完整解决方案(骨骼+蒙皮)
图神经网络¶
- EdgeConv 操作符:在网格拓扑和测地邻域内执行边卷积
- 本工作将多个神经模块与图神经网络结合,提供端到端角色绑定的集成深度架构
Overview¶
给定输入角色的 3D 网格,本方法预测适合其潜在关节结构和几何的动画骨骼和蒙皮。
核心假设¶
- 输入训练和测试形状具有一致的直立和正面朝向
- 不假设已知的输入角色类别、部分结构或骨骼关节类别
架构组成¶
- 骨骼关节预测:基于图神经网络,学习将网格几何向候选关节位置位移,然后使用基于注意力的聚类方法从候选关节位置周围的簇中提取出关节位置
- 骨骼连接预测:学习哪些提取的关节对应该用骨头连接
- 蒙皮预测:基于预测骨骼,生成每个网格顶点的权重向量
Methods¶
骨骼关节预测¶
核心思想¶
通过回归和自适应聚类的组合解决关节位置和数量问题:
- 回归步骤:网格顶点向最近的候选关节位置位移
- 聚类步骤:通过聚类位移点并将聚类中心设为关节位置来定位关节
回归¶
首先,给定输入网格 \(\mathcal{M}\),位移模块 \(f_d\) 会输出被扰动的点 \(q\):
然后,由于关节处的顶点通常具有更高的置信度,注意力模块 \(f_a\) 会输出一个 attention map \(a = \{ a_v \}\):
其中 \(a_v \in [0,1]\) 表示从每个顶点定位关节的置信度。
GMEdgeNet 模块¶
两个模块的输入是顶点位置,对应的神经网络均为 GMEdgeNet,由三个 GMEdgeConv 层和一个 max-pooling 层组成。
GMEdgeConv 会同时结合网格邻域和测地邻域:
其中,\(\mathcal{N}_m(v)\) 是 \(v\) 的单环网格邻域,\(\mathcal{N}_g(v)\) 是 \(v\) 的测地邻域(球半径被设置为 \(r = 0.06\))。
聚类¶
在每次中心移动迭代中,每个点的位移公式如下:
其中 \(K(q_u - q_v, h) = \max(1 - ||q_u - q_v||^2/h^2, 0)\) 是 Epanechnikov 核,\(h\) 是可学习的带宽参数。
在收敛后,从密度最高的点开始,移除该点 \(h\) 半径内的点,将它作为第一个关节的位置,然后处理密度第二高的点,依此循环,直至没有点剩余。
用户控制¶
- 通过调整带宽参数控制输出骨骼的细节层次
- 降低带宽产生更密集的关节放置,增加带宽产生更稀疏的骨骼
- 经验上,可编辑范围为 0.01 到 0.1
对称化¶
对于具有双侧对称性的 3D 角色,在执行聚类前根据全局双侧对称平面反射位移点和注意力图,提高关节预测的鲁棒性。
骨骼连接预测¶
BoneNet 模块¶
BoneNet 接收预测的关节集 \(t\) 和输入网格 \(\mathcal{M}\) 作为输入,为每一对关节输出连接概率 \(p_{i,j}\)。通过处理所有关节对,BoneNet 生成一个二维矩阵,其中每个元素代表连接该关节对的候选骨骼的概率。
- \(g_s\) 全局形状编码,128 维,由 GMEdgeNet 的最大池化层提取
- \(g_t\) 全局骨骼编码,128 维,由 PointNet 从关节点云提取
- \(f_{i,j}\) 候选骨骼描述符,通过 MLP 将特征 \([t_i, t_j, d_{i,j}, o_{i,j}]\) 映射为 256 维向量:
- 关节位置 \(t_i, t_j\)
- 它们之间的欧几里得距离 \(d_{i,j}\)
- 候选骨骼穿出网格外部的比例 \(o_{i,j}\),表征该骨骼是否突出于网格形状之外
骨骼提取¶
使用最小生成树(MST)算法提取最可能的树结构动画骨骼:
- 边权重:\(w_{i,j} = -\log p_{i,j}\)
- 使用 Prim 算法构建 MST
- 最大化关节概率等价于最小化边的负对数概率
同时,使用和 BoneNet 类似的 RootNet 模块预测根关节:
其中 \(f_i\) 通过输入为关节位置和到双侧对称平面的距离的 MLP 学习而来。
蒙皮预测¶
骨骼感知网格表示¶
为每个网格顶点 \(v\) 计算特征向量 \(h_v\),捕获其与骨骼的空间关系:
- 体积测地距离:计算从顶点到所有骨头的最短路径长度(通过网格内部体积)
- 骨头排序:根据体积测地距离对骨头排序,来增强结果的一致性
- 特征序列:创建有序特征序列 \(\{b_{r,v}\}_{r=1...K}\),每个 \(b_{r,v}\) 拼接骨头 \(r\) 的起始和结束关节的 3D 位置以及从顶点 \(v\) 到该骨头的体积测地距离的倒数 \(1/D_{r,v}\)
蒙皮模块¶
使用 GMEdgeNet 作为蒙皮模块的网络:
其中 \(H = \{h_v\}, S = \{s_v\}\),最后一层 1280 维特征向量会通过 MLP 和 softmax 函数转换为每顶点蒙皮权重向量。
Training¶
关节预测阶段训练¶
对称 Chamfer 距离损失:
位移 Chamfer 距离损失(导致簇更密集):
注意力监督损失:
其中,二进制掩码 \(\hat{m}\) 对于最近的顶点的值等于 1,其余顶点的值为 0。
训练策略:
- 先用 \(L_m\) 单独预训练注意力模块的权重 \(w_a\),这有助于提升性能
- 用组合损失 \(L_{cd} + L'_{cd}\) 微调 \(w_a, w_d, h\)
- 使用 edge dropout 技术,在训练 GMEdgeNet 时最多选择测地邻域中的 15 条边
连接阶段训练¶
对于 BoneNet,使用二元交叉熵损失:
- 先根据被训练的角色骨骼生成邻接矩阵,仅当关节相连时 \(\hat{p}_{ij} = 1\)
- \(p_{i,j}\) 是对给定的训练关节的预测,而不是预测出来的关节
- 也可以通过 Hungarian 算法找到训练关节和预测关节的对应关系,将训练关节的邻接矩阵转换到预测关节上,但这不能带来显著的提升
- 会遇到类别不平衡问题(大多数关节对不连接),对此可以使用 online hard-example mining 方法来平衡正负样本
对于 RootNet 模块,则使用 softmax 分类损失。
蒙皮阶段训练¶
交叉熵损失:
将每顶点蒙皮权重视为概率分布,量化训练和预测分布之间的差异。
Results¶
数据集¶
ModelsResource-RigNetv1:
- 2703 个绑定角色,来自在线仓库
- 涵盖多个类别:人形、四足动物、鸟类、鱼类、机器人、玩具和其他虚构角色
- 每个角色包含一个绑定
- 已消除重复和近似重复
- 训练/验证/测试分割:80%-10%-10%(2163/270/270)
- 网格顶点数:1K-5K
- 关节数范围:3-48,平均 25.0
定量评估指标¶
骨骼相似性:
- CD-J2J:关节间对称 Chamfer 距离
- CD-J2B:关节到骨头的 Chamfer 距离
- CD-B2B:骨头间 Chamfer 距离
- IoU:基于匈牙利算法的最大匹配,在给定容差下的交并比
- Precision & Recall:在局部形状直径容差下的精确度和召回率
- TreeEditDist:预测骨骼与参考骨骼的树编辑距离
蒙皮相似性:
- Precision & Recall:基于权重阈值(1e-4)的有影响骨头
- L1-norm:预测和参考蒙皮权重向量的 L1 范数差异
- dist:基于参考和预测蒙皮在随机姿态下的顶点位置欧几里得距离
对比结果¶
骨骼预测对比:
Method | IoU | Prec. | Rec. | CD-J2J | CD-J2B | CD-B2B |
---|---|---|---|---|---|---|
Pinocchio | 36.5% | 38.7% | 35.9% | 7.2% | 5.5% | 4.7% |
Xu et al. 2019 | 53.7% | 53.9% | 55.2% | 4.5% | 2.9% | 2.6% |
Ours | 61.6% | 67.6% | 58.9% | 3.9% | 2.4% | 2.2% |
蒙皮预测对比:
Method | Prec. | Rec. | avg L1 | avg dist | max dist |
---|---|---|---|---|---|
BBW | 68.3% | 77.6% | 0.69 | 0.0061 | 0.055 |
GeoVoxel | 72.8% | 75.1% | 0.65 | 0.0057 | 0.049 |
NeuroSkinning | 76.3% | 74.7% | 0.57 | 0.0053 | 0.043 |
Ours | 82.3% | 80.8% | 0.39 | 0.0041 | 0.032 |
消融研究¶
关节预测消融:
- P2PNet-based(使用 PointNet 预测位移):性能显著下降
- 无注意力机制:性能下降明显
- 仅使用一环邻域:性能轻微下降
- 无顶点位移监督:性能轻微下降
- 无注意力预训练:性能轻微下降
连接预测消融:
- 仅使用欧几里得距离:准确率 61.2%
- 仅骨头描述符:准确率 71.9%
- 骨头描述符+骨骼几何:准确率 80.7%
- 完整阶段:准确率 83.7%
蒙皮预测消融:
- 无测地距离特征:precision 从 82.3% 降低到 80.0%,recall 从80.8% 降低到 79.3%
- 当 \(K=5\)(最近骨头数量)时,蒙皮权重损失最小
Limitations and conclusion¶
本方法代表了基于学习的完整角色绑定解决方案的第一步,包括骨骼创建和蒙皮权重预测,在多种场景下具有实用价值。
当前局限性¶
- 逐阶段训练:理想情况下蒙皮损失可反向传播到所有阶段以改善关节预测,但需要可微分的体积测地距离和骨骼结构估计
- 鲁棒性:虽然我们使方法更具鲁棒性,能够适应不同的顶点采样和网格三角化,但无法保证对网格分辨率和连接性的完全不变性
- 数据集限制:
- 每个模型只有一个绑定
- 许多绑定不包括小部件的骨头
- 通过在数据集中引入更多的绑定结果可以提升性能,但这可能也会让映射变得更加多模态
未来研究方向¶
- 采用多分辨率方法,从粗到细地逐步细化骨架结构
- 目前,我们的方法使用的是单一带宽参数来探索骨架结构的变化,未来可以研究更丰富的参数空间,以实现对骨架形态与分辨率的交互式控制
- 将该方法扩展至点云识别或重建任务中的骨架提取问题