IJCV 2026|北大团队提出DragMesh:一次拖拽,实现可交互的3D关节运动生成

栏目:科技 | 来源:机器之心Pro | 2026-10-21 21:09

本文作者来自北京大学计算机学院。张天山、张泽宇为共同第一作者,唐浩为通讯作者。

近年来,3D 生成模型在几何质量和渲染效果上进步很快。从 Mesh 到 NeRF、3D Gaussian Splatting,生成一个外观完整的三维物体已经不再困难。现有不少 articulated 3D generation 工作,更多关注的是从输入中生成一整套可动 3D 资产,包括物体几何、部件划分以及关节结构。这类方法适合从零创建新的 articulated object,但很多时候,用户手里已经有一个现成的柜子、微波炉或者抽屉模型,真正需要改变的只是其中某个可动部件。

比如拖动柜门,系统只需要让门围绕正确的铰链旋转;拖动抽屉,也只需要让抽屉沿滑轨方向平移。如果每次交互都重新生成完整物体,大量计算其实会花在不会发生变化的静态部分上。对于这类局部交互任务,更直接的做法是保留已有 3D 资产,只对目标可动部件进行运动学推理和运动生成。这也是 DragMesh 的出发点。

近日,北京大学团队提出的 DragMesh: Interactive 3D Generation Made Easy 被 International Journal of Computer Vision(IJCV)接收。该工作面向已有 3D 资产上的局部交互,通过一次 drag 恢复目标部件的运动学参数,并进一步生成完整、连续的关节运动轨迹,而不需要针对每个新物体重新训练一套 motion model。

DragMesh 将运动学预测、运动生成和外观渲染分开处理:先判断目标部件属于什么关节、运动轴和关节位置在哪里,再生成对应的 motion trajectory,最后将同一套运动迁移到 Mesh 或 3D Gaussian Splatting 表示中。论文主要聚焦 single-joint rigid articulated objects,并在 GAPartNet 的 clean mesh setting 下进行验证。

  • 论文标题:DragMesh: Interactive 3D Generation Made Easy
  • 论文地址:https://arxiv.org/abs/2512.06424
  • 项目主页:https://aigeeksgroup.github.io/DragMesh/
  • 代码地址:https://github.com/AIGeeksGroup/DragMesh

图 1:DragMesh 交互结果。用户只需选择目标部件并提供一次拖拽,系统即可生成对应的关节运动。

研究背景

带着前面的问题来看已有研究,完整 articulated object generation 和已有 3D 资产上的交互,其实对应着两种不同的需求。前者需要从零得到一个完整的可动资产,几何、部件甚至关节结构都需要一起生成。但在交互阶段,物体本身往往已经存在,真正缺少的是运动。系统需要知道被选中的部件属于哪一种关节、运动轴在哪里,以及当前这次 drag 最终应该对应怎样的运动。一旦把问题放到已有资产的交互场景里,主要会遇到两个挑战。

挑战一:一次 drag 并没有直接告诉系统目标部件应该怎么动。

用户拖动一个部件时,系统能够看到拖拽的位置和方向,但这些信息本身并不等于物体的运动学结构。以柜门为例,它通常对应 revolute joint,需要围绕固定轴旋转;抽屉则通常对应 prismatic joint,只能沿特定方向平移。系统还需要进一步判断 joint type、axis 和 origin。

如果这些参数判断错误,即使后面的动画看起来连续,运动本身也可能并不符合物体结构。对于完整资产生成来说,这些信息可以和 geometry 一起生成;但对于已有资产上的交互,重新生成整个物体没有必要,系统需要直接从现有几何和用户输入中恢复目标部件的运动学参数。

挑战二:局部运动既要满足运动学约束,也需要足够轻量。

如果每遇到一个新物体,都重新优化或者训练一套 motion model,交互本身就很难做到实时。另一方面,如果完全依赖自由的生成模型,又很容易产生不符合 joint constraint 的运动。系统因此需要一套可以在不同物体之间复用的 motion prior,根据一次 drag 直接生成完整轨迹,同时保持旋转轴、平移方向等运动学约束。

此外,适合处理运动学的表示和适合高质量渲染的表示也不完全相同。Mesh 有明确的顶点、拓扑和部件结构,适合做刚体运动和关节变换;3DGS 更擅长高质量实时渲染,但本身并不天然包含关节关系。怎样让两种表示共享同一套运动,也是 DragMesh 需要解决的问题。

针对这些问题,DragMesh 将整个系统拆成三个部分:关节参数预测、运动轨迹生成,以及从 Mesh 到 3DGS 的运动迁移。

图 2:系统先根据物体几何和用户 drag 预测关节参数,再生成 Dual Quaternion 运动轨迹。

核心方法

为了完成整个交互过程,DragMesh 首先需要恢复目标部件的运动学结构。

论文提出了 Kinematics Prediction Network(KPP-Net),根据物体几何、movable-part 信息以及用户 drag,预测 joint type、axis 和 origin。KPP-Net 使用 global 和 local 两路特征编码:前者建模整体几何和拖拽信息,后者更关注目标 movable part,最终通过独立的预测头输出关节类型、轴方向和关节原点。这样,后面的生成模型拿到的不再只是一个拖拽方向,而是一组更加明确的 kinematic prior。对于柜门,这些参数描述它应该绕哪条轴旋转;对于抽屉,则描述它应该沿什么方向平移。

得到关节参数以后,DragMesh 接下来才开始生成真正的运动。这里和完整 articulated object generation 的区别比较明显:DragMesh 不需要重新生成整个物体,而是围绕目标 movable part,生成一段满足关节约束的 motion trajectory。

论文采用 Dual Quaternion 作为刚体运动表示,并设计了 Dual Quaternion VAE(DQ-VAE)用于 trajectory generation。相比 Euler angle,Dual Quaternion 不存在 gimbal lock;相比单独的 axis-angle,它可以统一描述旋转和平移;同时又比完整 transformation matrix 更紧凑。设计上,每一帧运动使用 8 维 Dual Quaternion 表示。

在网络结构上,DQ-VAE 使用 non-autoregressive Transformer,一次并行生成长度为 16 的完整运动序列,这样可以避免前面某一帧的误差不断向后累积,也更适合实时交互场景。关节信息也不是只在模型入口提供一次。DragMesh 通过 FiLM conditioning,在 Transformer 的不同层持续注入 joint feature,并在 decoder 后加入 Kinematic Correction Module,对生成结果进一步修正。这样,生成轨迹在保持连续性的同时,也能更好地满足对应的 joint constraint。

图 3:DragMesh 核心方法。KPP-Net 负责预测关节参数,DQ-VAE 根据 drag 和 kinematic prior 生成完整轨迹。

完成运动生成以后,还需要解决另一个问题:怎样在保留运动学结构的同时获得更好的渲染效果。

Mesh 在结构表达上比较直接,适合进行 part-level manipulation 和刚体变换,但在高频纹理和 view-dependent appearance 上存在局限。3D Gaussian Splatting 更适合高质量实时渲染,但本身并不天然包含关节和部件之间的运动约束。DragMesh 没有直接在 3DGS 上重新学习一套运动,而是通过 Cross-modal Semantic Skinning,将 Mesh 侧得到的 motion prior 迁移到 Gaussian primitives。

整个过程包括 geometry-guided Gaussian initialization、spatial alignment、KNN label propagation 以及 boundary blending。系统首先利用 mesh geometry 初始化 Gaussian,使两种表示尽量保持空间上的对应;随后进一步完成空间对齐,并将 Mesh 上的 movable/static part 信息传播到 Gaussian。对于部件边界,则通过 confidence-adaptive blending 减少大幅运动时可能出现的撕裂。

最终,Mesh 和 3DGS 不需要各自学习一套 motion model,而是可以共享同一条运动轨迹。

图 4:3DGS 渲染流程图

实验结果

论文在 GAPartNet 上对 DragMesh 进行了评估。整个 kinematic corpus 包含 23 个类别、1045 个 articulated objects,其中 941 个用于 KPP-Net 训练,104 个用于 object-disjoint validation。

在这 104 个 validation objects 上,KPP-Net 的 joint-type accuracy 达到 78.8%,axis error 中位数为 0.477°,normalized origin error 中位数为 0.0794。

进一步来看,不同关节类型的难度存在比较明显的差异。KPP-Net 在 revolute joint 上的类型判断准确率达到 94.7%,而 prismatic joint 为 59.6%,说明当前主要错误仍然集中在 prismatic joint 的类型判断,以及由此进一步影响到的 axis estimation。

表 1:KPP-Net 在 104 个 object-disjoint validation objects 上的运动学预测结果。

在 3DGS 部分,论文进一步验证了 Cross-modal Semantic Skinning 和 Gaussian initialization 的设计。对于 mesh-to-Gaussian 的语义迁移,Importance-Weighted Centroid Alignment 在 9 个 GAPartNet objects 上取得了 1.000 ± 0.000 的 IoU,相比 simple centroid 和 ICP alignment 更稳定。KNN 邻居数的实验也显示,K=10 时能够保持稳定的 label propagation。

表 2:Cross-modal Semantic Skinning 的消融结果。展示不同 spatial alignment 和 KNN 设置下的 mesh-to-Gaussian label propagation。

论文还在一个 microwave object 上测试了 geometry-guided initialization。达到 PSNR 25 所需的时间从随机 bounding-box initialization 的 9.56 秒降低到 6.91 秒,约缩短 38%,同时 floaters 比例从 1.73% 降至 0.02%。

表 3:比较不同 Gaussian initialization 方式的收敛速度和重建质量。

运行效率也是 DragMesh 比较关注的一部分。由于系统不需要在每次交互时重新生成整套物体,它的运行开销主要集中在局部运动推理和渲染阶段。同一个预训练的 kinematic core 可以驱动两种不同的 rendering modality:Lightweight Mesh 路径达到 120 FPS,3DGS 路径达到 85 FPS。

其中,85 FPS 指 static 3DGS reconstruction 已经完成之后,本地 DQ-VAE decoding、semantic skinning 和 rendering 阶段的速度,不包含 segmentation preprocessing 或 optional VLM API latency。

从这个角度看,对于已经存在的 3D 资产,系统不需要每次重新生成 geometry、parts 和 appearance,而是把计算集中在当前真正需要运动的 movable part 上。预训练好的 motion prior 也可以直接复用于新的对象,避免 per-object motion training。

表 4:DragMesh 的主要运行效率结果。Lightweight Mesh 和 3DGS 两种模式使用同一个预训练 kinematic core。

总结与展望

DragMesh 关注的并不是如何重新生成一个完整的 articulated object,而是已有 3D asset 进入交互阶段以后,怎样以尽可能轻量的方式获得正确的运动。

它保留已有 geometry,只针对真正需要运动的部分恢复 joint parameters、生成 trajectory,再将同一套 motion prior 迁移到不同的 3D representation 中。对于已有资产上的交互来说,这样可以避免反复处理不会发生变化的静态部分,也让 motion generation 更容易做到实时。

对于游戏资产、数字孪生、仿真环境和机器人场景来说,这种设定比较直接。很多时候,3D object 本身已经存在,真正缺少的不是另一份 geometry,而是能够让它按照自身结构运动的 articulation。

后续一个自然方向,是从当前的 single-joint interaction 扩展到 multi-joint kinematic chains,同时进一步处理真实 3D 资产、contact、dynamics 和更复杂的 object structure。如果这些问题能够继续向前推进,交互式 3D generation 所解决的就不再只是如何生成一个物体,也包括如何让已经生成出来的 3D 内容真正具备可以被操作和使用的运动能力。

了解更多

猜你想看

← 返回首页