目录
一、概述
该论文提出MagicArticulate框架,旨在将静态的3D模型自动转换为支持动画的articulation-ready资产。
以往的3D模型都是静态模型,转换成可连接的关节模型需要专业人员手动放置骨骼,定义联合层次结构。而后续的自动骨架提取方法,对于复杂的形状很难实现,或者依赖于固定的模版,有很差的通用性。
主要贡献:
(1)第一个包含over 33k的高质量关节注解数据集
(2)一个两阶段的框架,用于有效地处理骨架的生成和蒙皮权重预测
(3)在现实世界的动画pipeline中展示出SOTA性能
下图用Rodin Gen-1和Tripo 2.0生成input mesh,Maya Software Renderer渲染的骨骼和蒙皮

二、Articulation-XL
1、数据集收集与过滤
Articulation-XL是MagicArticulate模型后续使用到的数据集,因为考虑到传统数据集缺乏对动画所需骨骼和权重的标注,所以建立了一个新的数据集。
数据来源:Objaverse-XL(原有1000w+个3D models)中筛选出大约33万个候选模型,覆盖人物、动物、工具、机械等可动画的物体类别。
初步过滤:基于骨架和网格相似性去除重复数据,排除仅单个skeleton结构的模型,并过滤over 100 skeletons的数据。
基于VLM过滤:由于经过初步过滤还有一些无法评定的骨骼(如下图),所以进行基于VLM的过滤。基于VLM从四个角度来渲染每个对象的skeleton,并利用GPT-4o根据特定标准评估骨架质量(比如该骨骼是否合理),之后使用Pyrended4形成了四视图渲染、3D模型以及骨架。形成了Articulation-XL。其中每个模型的骨骼数量在2-100,关节数3-101个。

类别标注:利用了一个VLM进行类别标注,人类相关的最多。
2、父子层级关系
根据自动化骨骼生成工具进行初步生成,比如选择几何中心为根关节,利用最小生成树/层次聚类方法来确定父子关节。
另外通过VLM来进行过滤,如果VLM判定层次不合理,则重新进行骨骼标注。
还可以加以物理仿真,测试是否存在网格变形异常(撕裂或者穿透),来判定层次存在问题。
注意Articulation-XL数据集中没有蒙皮权重,是后面预测的。


三、MagicArticulate
1、自回归骨架生成
相较于以往的固定模版的方法,MagicArticulate使用一个自回归生成框架来处理3D对象的固有结构多样性。
那为什么要建立上面的数据集呢,当然是与自回归生成的skeleton进行比较啦,做损失函数用的。
目的:根据一个3D mesh生成skeleton
。骨架由两个部分组成,一组关节
定义空间位置,骨连接
决定拓扑结构,就是骨骼上的点和线,最终得到一个条件概率
。

自回归网络原理如下:
(1)利用rodin Gen1生成3D mesh作为输入,利用点云编码器(PointNet++)提取3D模型的点云信息(全局特征,作为骨骼的条件),一共采样8192个点。
在这一部分论文提到了MeshAnything和MeshAnythingv2模型,前者是文本/图像生成3D网格的框架,结合了扩散模型和可微渲染技术,后者在其基础上,支持更复杂的网格编辑和细节生成。
(2)利用Shape Encoder(论文中用的是Michelangelo预训练的encoder模型,很多模型都是encoder+transformer的也合理)将原始三维点云转换为适合transformer处理的固定长度的shape token部分,用于后续自回归的生成,最后接一个【BOS】作为结尾。
(3)骨骼结构序列化
对Articulation-XL数据集中的骨骼进行标记化,每一个skeleton标记成一个序列,每一个骨骼由两个连接的关节定义(6个坐标,两组xyz)。
标记过程:为了保证一致和离散的表示,将输入mesh和相应的skeleton缩放并转换成一个单位cube [-0.5,0.5]^3,来确保空间对齐,之后将归一化的关节坐标映射到128^3的空间中(就是放大数值),从而得到一共b个skeleton总共序列长度为6b。
层次标记顺序:按照层次顺序(前序遍历)将关节排列为序列。
坐标顺序:对于每一个关节的空间坐标按照z-y-x升序排序。
将骨骼标记后,作为自回归的transformer的输入**skeleton token部分,**最后接一个【EOS】作为结尾。
下图Hierachical sequence ordering第二列为实际的标记方式,即从根节点往子节点放射式标记。

相比于MeshGPT,我们基于数据集的分析省略了VQ-VAE的compress step,为什么呢?因为数据集模型比较简单,本身数据量不多,压缩只会造成伪影。
(4)自回归架构部分
注意到,AR Transformer部分最终输出只有skeleton的结构,shape tokens只是作为输入的参考信息。
自回归架构使用decoder-only的架构,OPT-350M模型,这个模型在序列建模中效果较好。,并利用交叉损失来进行监督。
其中两个不同的T就是GT和pred的骨骼序列。

2、预测蒙皮权重
(1)为什么要用蒙皮权重?
蒙皮权重(Skinning Weights)定义了模型中每个顶点(Vertex)受哪些骨骼关节(Joints)的影响,以及影响的程度。当骨骼运动时,顶点位置根据权重和关节变换动态调整,从而实现平滑的形变。
想象你穿着连帽卫衣做「抬起手臂」的动作:
- 肘部弯曲时 :卫衣袖子在手肘处的褶皱会紧贴肘关节移动(受肘关节控制)。
- 靠近肩膀的袖子部分 :既会被肩膀抬起带动,也会被肘部弯曲轻微牵拉(同时受肩和肘影响 )。
这里的「布料如何跟随身体运动」就是蒙皮权重在3D模型中的体现。
假设骨骼有一个顶点A靠近肘部,顶点B靠近肩膀。那么顶点A可能受到肘关节权重=0.9,肩关节权重=0.1,因为顶点A主要随肘部移动,形成明显褶皱。而顶点B可能受到肘关节权重=0.3,肩关节权重=0.7。
(2)为什么需要人工智能预测?
手动调节需要艺术家的调整,依赖经验又耗时。
(3)预测蒙皮权重流程:
体积测地距离计算预处理+Functional Diffusion
(4)体积测地距离计算预处理
目的:量化顶点与关节之间的几何关联性(非表面距离)
方法 :将模型体素化为三维网格。使用Dijkstra算法在体素空间内计算顶点到各关节的最短路径距离。
示例:对于管道内部的顶点,体积测地距离可穿透管壁直接连接关节,而表面测地距离会沿管道外壁绕行
(4)Functional Diffusion预测网络
核心思想:
将权重视为连续函数: 蒙皮权重是顶点到关节的连续影响函数,而非离散分配。扩散模型通过逐步去噪,生成平滑且符合几何规律的权重分布。
体积测地距离先验:在三维体积空间(而非表面)计算顶点到关节的测地距离,更准确建模空心结构。
网络架构:DDPM,但是应该提前编码了
公式解释:可以将这个扩散模型定义为,其实就是所有顶点的蒙皮权重分布状态。那么
就是时间步t下,顶点x的蒙皮权重分布。

然后目的就是训练一个denoiser D:
四、实验
对比实验和效果。


左侧为使用ModelsResource数据集的效果,右侧为Articulation-XL数据集的效果,这应该是在不同数据集上的泛化性。

后续的都是对比GVB和RigNet的量化信息。

这个就是第一步采集点信息的数量的对比。

对于预测蒙皮权重中,是否使用测地线,归一化,和shape features(有吗这个,我忘了在哪里了)

相关项目:MagicArticulate: Make Your 3D Models Articulation-Ready