想象一下你正在构建一个虚拟世界。你有一个椅子的 3D 模型和一个人物的 3D 模型。现在,你想让人坐在椅子上。在传统动画中,这是一个手动的、枯燥的过程。你必须拖动角色,弯曲他们的膝盖,确保他们不会穿模 (clip through) 穿过木头,并把他们的手自然地放在扶手上。
现在,想象一下只要告诉 AI “让这个人坐在椅子上”,它就直接发生了。
这就是 人-物交互 (Human-Object Interaction, HOI) 合成的承诺。虽然生成式 AI 的最新进展已经让通过文本创建 3D 物体 (如“一辆红色跑车”) 变得容易,但创建一个逼真的、人与物体之间的交互却要难得多。如果你要求一个标准的图像生成器创建“一个人骑自行车”,你经常会得到一个克罗嫩贝格式的噩梦,人的腿和轮子融合在了一起。
在这篇文章中,我们将深入探讨 InteractAnything , 这是在 CVPR 上展示的一篇引人入胜的论文,它提出了一个强大的框架,用于 零样本人-物交互合成 (Zero-shot Human Object Interaction Synthesis) 。 这种方法不仅仅是“猜测”交互是什么样子的;它使用大语言模型 (LLM) 作为大脑来推理物理规律,并使用扩散模型作为眼睛来理解物体几何形状。

如上图所示,结果令人震惊。无论是骑着未来的摩托车、抱着婴儿,还是举起一辆特斯拉,该系统都能以惊人的物理合理性处理“开放集 (open-set) ”物体 (即它没有经过明确训练的物体) 。
让我们来拆解一下他们是如何实现这一点的。
问题: 为什么交互如此困难?
在看解决方案之前,我们需要了解瓶颈所在。我们目前拥有强大的“文本转 3D”模型 (如 DreamFusion 或 Magic3D) 。这些模型使用 分数蒸馏采样 (Score Distillation Sampling, SDS) , 这是一种 2D 图像生成器 (如 Stable Diffusion) 迭代地批评 3D 模型直到它看起来像文本提示的技术。
SDS 的公式通常如下所示:

简单来说,这个公式计算一个梯度,推动 3D 模型参数 (\(\theta\)) 去匹配文本提示 (\(y\)) 。
然而,当你直接将其应用于交互 (例如,“一个人拿着杯子”) 时,会出现两个主要问题:
- 空间歧义 (Spatial Ambiguity) : AI 可能会生成一个人在杯子旁边,或者杯子漂浮在人的胸腔里。它难以处理精确的接触。
- 可供性盲区 (Affordance Blindness) : “可供性 (Affordance) ”是一个专业术语,指“物体可以被如何使用”。椅子提供坐的功能;把手提供抓取的功能。标准模型本身并不理解人的手应该包裹住把手,而不是壶嘴。
InteractAnything背后的研究人员指出,要解决这个问题,你需要一个能够理解 关系 (人相对于物体的位置) 和 可供性 (接触点在哪里) 的系统。
InteractAnything 框架
研究人员设计了一个模仿人类艺术家解决问题方式的流程:
- 思考 (LLM 推理) : “如果我要举起一把椅子,我需要抓住椅腿或靠背。”
- 观察 (可供性解析) : “这把特定椅子的腿在哪里?”
- 草绘 (姿态合成) : “让我大致摆好身体的位置。”
- 精修 (优化) : “让我收紧抓握,让它看起来更逼真。”
这是他们方法的高级架构:

让我们逐一分解这四大支柱。
1. 大脑: LLM 引导的初始化
第一个挑战是幻觉。如果你只是告诉生成模型把一个人和一个物体放在一起,它可能会把人倒着放。
作者使用 LLM (具体来说是 GPT) 作为“导演”。当给出像“一个人抓住椅子”这样的提示时,系统会要求 LLM 对场景进行推理。它不直接生成 3D 网格;相反,它从预定义的逻辑中选择来初始化参数:
- 旋转与平移 (Rotation & Translation) : 物体相对于人应该朝向哪个方向?
- 缩放 (Scale) : 物体相对于人有多大?
- 状态 (State) : 物体是在地上 (像椅子) 还是被举在空中 (像杯子) ?
这一步提供了一个粗略的“边界框”初始化,确保我们在开始优化过程时,不会让人站在物体里面。
2. 眼睛: 开放集物体可供性解析
这可以说是论文中最巧妙的部分。在没有针对大量 3D 抓取数据集进行训练的情况下,你如何教计算机人类应该在哪里触摸一个通用的、未见过的物体 (比如形状怪异的科幻枪) ?
答案是: 利用 2D 重绘 (Inpainting) 。
2D 扩散模型已经看过数十亿张图片。它们知道手握住物体是什么样子的。研究人员利用这一点,从不同角度拍摄 3D 物体的快照,并要求扩散模型“填补” (重绘) 一个人与它交互的画面。
自适应掩码 (The Adaptive Mask)
他们不只是随机重绘。他们使用 LLM 数据创建一个“掩码 (mask) ”——一个告诉重绘模型关注哪里的指南。

这些方程描述了将 3D 设置投影到 2D 视图中 (\(\mathcal{J}\) 是投影函数) 。这为重绘模型创建了一个指南,确保它在合理的位置绘制人物。
创建热力图 (The Heatmap)
一旦重绘器从多个角度生成了人类与物体交互的图像,系统就会使用 2D 姿态检测器 (OpenPose) 来找到这些图像中的手或身体部位。
然后它计算概率图。如果重绘器在多个视图中一致地在物体的手柄附近绘制一只手,那么该区域就会获得很高的“接触概率”。

在这里,函数 \(f_{\text{afford}}\) 基于检测到的身体部位与物体点之间的距离 \(\|\mathbf{d}_i(\mathbf{p})\|\) 来计算概率。
通过将这些 2D 概率聚合回 3D 网格上,他们创建了一个 3D 可供性映射 (3D Affordance Map) 。

结果就是 3D 物体上的一个热力图,在人应该触摸它的地方发光。

看上面的图片。在中间一列,你可以看到 2D 重绘的结果——AI “想象”出一个人在交互。在右边一列,你可以看到椅子上生成的红色热力图。注意热力图是如何根据文本变化的:
- “Sits on” (坐在…上) : 热力图在座位上。
- “Pulls” (拉) : 热力图在靠背上。
- “Lifts” (提/举) : 热力图在椅腿上。
这为 3D 人体网格提供了一个具体的依附目标。
3. 身体: 文本-物体驱动的姿态合成
现在我们知道应该触摸物体的哪里了,我们需要一个 3D 人体。该论文使用的是 SMPL-H 模型。这是一个参数化的人体模型,可以控制形状和姿态 (包括手部关节) 。

系统使用 SMPL 参数 (\(\beta\) 代表形状,\(\theta\) 代表姿态) 初始化人体网格。它使用我们前面提到的文本提示和“分数蒸馏采样” (SDS) 来优化姿态。
然而,他们添加了一个 空间约束 (spatial constraint) 。 如果在这个阶段人体网格与物体网格相交,他们会惩罚模型。这可以防止出现人穿过家具行走的“幽灵”效应。
4. 微调: 表达性 HOI 优化
在这个阶段,我们有一个人在物体附近,并且我们知道他们应该触摸哪里。最后一步是优化,使其看起来在物理上是真实的。
作者将其分为两个阶段: 全局 (Global) 和 精细 (Finer) 。
全局优化
这将大致对齐人和物体。损失函数如下所示:

这个复合损失函数包括:
- \(L_{\text{inter}}\): 交互损失。它将特定的身体部位 (如手) 拉向我们要生成的、位于可供性热力图上的“热点”。
- \(L_{\text{pene}}\): 穿透损失。防止人穿模进入物体内部。
- \(L_n\): 法线一致性。确保手表面与物体表面平行 (手掌接触表面) 。
交互损失的具体定义为:

它最小化人手点集 (\(\mathcal{P}_h\)) 和物体点集 (\(\mathcal{P}_o\)) 之间的倒角距离 (Chamfer distance,\(f_{\text{cham}}\)) ,并由可供性映射 (\(W_{\mathcal{M}}\)) 加权。本质上就是: 把手移动到热力图的红色区域。
精细优化 (物理部分)
让手靠近物体很容易。让它看起来像是在用力抓握却很难。为此,作者引入了一个受物理学启发的概念,称为 力封闭 (Force Closure) 。
在机器人学中,力封闭意味着如果手指施加的力可以抵抗外力,则抓取是稳定的。作者将其转化为损失函数:

其中力封闭项 (\(L_{fc}\)) 为:

这个方程试图最小化物体上的净力和力矩,模拟稳定的抓握。它迫使手指包裹住几何体,而不仅仅是停留在它附近。
它有效吗?实验与结果
结果在视觉上优于以前的方法。作者将 InteractAnything 与 Magic3D、DreamFusion 和 DreamHOI 等最先进的方法进行了比较。
定性比较

在图 3 中,看“A person holds the chair” (一个人拿着椅子) 这个提示:
- DreamFusion 创造了一团模糊的东西。
- DreamHOI 创造了一个人,但接触是漂浮的,令人难以信服。
- Ours (InteractAnything) 显示了一个清晰的人形,双手清楚地抓住了椅子的靠背结构。
在“A person types the keyboard” (一个人敲键盘) 中,差异更加明显。以前的方法很难将手与按键分开,而 InteractAnything 将手掌正确地放在设备上方。
精细优化的力量
那个复杂的“力封闭”数学公式真的有用吗?消融实验表明是的。

在左边 (红圈) ,没有精细优化,手漂浮在桌子边缘附近。看起来像是一个故障。在右边 (绿圈) ,手稳稳地放在那里,手指稍微卷曲在边缘。这种微妙的细节是“故障游戏”外观和“专业动画”外观的区别。
定量指标
研究人员使用 CLIP 分数 (衡量图像与文本的匹配程度) 和 GPT-4V (视觉版) 作为裁判。

如表 1 所示,InteractAnything 获得了最高的 CLIP 分数,表明语义对齐更好。

在表 2 中,当要求 GPT-4V 挑选最佳图像 (盲测) 时,它在总体上超过 45% 的时间选择了 InteractAnything 的结果,而在 接触质量方面具体超过 52% 。
场景填充
该方法不仅限于白色背景的渲染。生成的交互可以放入完整的 3D 场景中。

图 6 展示了如何使用这些生成的角色来填充健身房或礼堂,与设备自然地交互。这表明在视频游戏或数字孪生中生成背景角色的巨大潜力。
结论
InteractAnything 代表了生成式 3D 的重要一步。通过分解问题——使用 LLM 进行高级逻辑推理,使用扩散模型进行低级视觉线索感知,并使用基于物理的优化处理几何形状——它解决了困扰标准文本转 3D 模型的“悬浮手”和“穿模身体”问题。
给学生的主要启示:
- 混合流程很强大: 纯端到端模型往往在复杂任务上失败。将任务分解为“推理” (LLM) 和“感知” (扩散模型) 通常能产生更好的控制。
- 先验无处不在: 你并不总是需要 3D 数据集。作者使用 2D 重绘模型来学习 3D 可供性。这是绕过数据稀缺的一种聪明方法。
- 物理很重要: 视觉效果是不够的。添加像力封闭这样的约束可以确保生成的内容在物理上讲得通。
虽然该方法仍然依赖于底层 2D 扩散模型的质量 (如果重绘失败,结果也会受影响) ,但它为未来打开了一扇大门: 我们可以仅仅通过输入故事来填充虚拟世界。
](https://deep-paper.org/en/paper/2505.24315/images/cover.png)