BiMotion: B-spline Motion for Text-guided Dynamic 3D Character Generation¶
会议: CVPR2026 arXiv: 2602.18873 代码: 项目主页 领域: 图像生成 / 动态3D生成 关键词: B-spline, 运动生成, 文本引导, 3D角色动画, VAE-latent diffusion, 控制点表示
一句话总结¶
提出 BiMotion,用连续可微的 B 样条曲线将变长运动序列压缩为固定数量控制点,配合专用 VAE 和 flow-matching 扩散模型,实现快速、高表达力、语义完整的文本引导动态 3D 角色生成,在质量和效率上均超越现有方法。
背景与动机¶
- 动态 3D 生成需求旺盛:游戏、影视、教育等领域对文本驱动的 3D 角色动画需求日益增长,将运动生成与形状合成解耦是当前主流范式
- 固定长度输入瓶颈:现有前馈方法(如 AnimateAnyMesh)采用 VAE-latent diffusion,要求固定大小输入,只能裁剪或均匀下采样运动序列
- 裁剪导致语义缺失:截断变长序列只能捕捉孤立子动作(如"向右旋转"),无法表达用户描述的完整运动语义
- 下采样产生抖动:均匀时间下采样导致非平滑、抖动的运动结果
- 离散逐帧表示是根本瓶颈:运动本质上是连续的,帧数仅反映采样率,语义不因帧数变化而改变,需要连续紧凑参数化
- 缺乏高质量标注数据:现有数据集缺少多样化的变长运动序列与高质量文本描述的配对
方法详解¶
整体框架¶
BiMotion 采用 VAE-latent diffusion 架构: - 训练阶段:将变长顶点差异序列通过 B 样条拟合转换为固定数量控制点 → VAE 编码为运动 latent → flow-matching 扩散模型学习条件生成 - 推理阶段:给定初始 mesh + 文本 → VAE 编码初始形状 → 扩散模型生成运动 latent → VAE 解码为控制点 → B 样条重投影生成任意长度序列
B 样条运动表示¶
- 对每个顶点的差异轨迹独立拟合均匀三次 B 样条 (d=3),用 k=16 个控制点表示
- Laplacian 正则化求解器:当 k > T(短序列)时系统欠定,引入二阶差分算子 L 正则化,闭式解通过 Cholesky 分解高效计算(200 帧 50K 顶点 < 1 秒)
- B 样条三大优势:①连续可微保证自然轨迹 ②局部可控性 ③时间重参数化支持任意长度采样
VAE 关键设计¶
1. Normal Fusion(法线融合): - 将表面法线通过 MLP 编码,与点坐标特征通过逐点余弦相似度权重融合 - 有效区分空间相近但网格结构不同的运动部件,比 mesh-connectivity 方法更稳定
2. 多层级控制点嵌入 (Control-PE): - 受小波包分解启发,构建从粗到精的控制点层级 [17,15,13,11,9,7,5,4] - 逐级提取高频残差并与最粗级系数拼接,通过单次矩阵乘法高效计算 - 显著优于传统频率位置编码,能捕捉精细运动细节(如狮子尾巴摆动)
3. 交叉注意力空间压缩: - FPS 采样将 n=4096 点压缩为 n'=512 tokens - 编码器 8 层交叉注意力、解码器 8 层自注意力
损失函数¶
| 损失 | 作用 |
|---|---|
| \(\mathcal{L}_{Fit}\) (Charbonnier) | 拟合输入控制点 |
| \(\mathcal{L}_{Corr}\) (Correspondence) | B 样条重投影后拟合原始差异轨迹,早期收敛更快 |
| \(\mathcal{L}_{Rigid}\) (Local Rigidity) | 强制相邻帧的局部距离一致,保持形状身份 |
| \(\mathcal{L}_{KL}\) | 正则化 latent 分布 |
生成模型¶
- 基于 Rectified Flow-Matching,12 层 DiT block
- 初始 latent 𝐳₀ 与运动 latent 拼接后通过解耦交叉注意力融合文本(CLIP ViT-L/14)和形状条件
- 推理时 classifier-free guidance (γ=3.0)
实验关键数据¶
数据集 BIMO¶
- 38,944 条运动序列,总计 3,682,790 帧
- 来源:DeformingThings4D (1,770) + ObjaverseV1 (10,550) + ObjaverseXL (26,624)
- 文本标注:DeformingThings4D 人工标注 + Objaverse GPT-5 自动标注(含 inspector 迭代校验)
主实验结果¶
| 方法 | OC↑ | SC↑ | AQ↑ | DD↑ | TA(用户)↑ | MP(用户)↑ | ME(用户)↑ | 时间↓ | 显存↓ |
|---|---|---|---|---|---|---|---|---|---|
| GVFDiffusion | 0.167 | 0.920 | 0.505 | 0.650 | 2.34 | 2.30 | 2.44 | 2.1min | 14.1GB |
| AnimateAnyMesh | 0.155 | 0.951 | 0.514 | 0.100 | 2.31 | 2.69 | 2.44 | 16.8s | 3.1GB |
| V2M4 | 0.175 | 0.876 | 0.478 | 0.750 | 2.88 | 2.71 | 3.05 | 1.7h | 48.4GB |
| BiMotion | 0.187 | 0.948 | 0.529 | 0.800 | 4.10 | 4.06 | 4.05 | 4.4s | 1.2GB |
- 用户研究三项指标均大幅领先(约 4.0 vs 第二名 ~2.9),标准差最低
- 速度比 AnimateAnyMesh 快 3.8×,显存仅 1.2 GB
- 网格顶点从 9K 增至 24K 时,BiMotion 时间/显存几乎不变,AnimateAnyMesh 线性增长
消融实验¶
| 配置 | 重建误差 (×10⁻²) |
|---|---|
| 无 B-spline + 无所有 | 3.237 |
| 无 B-spline + 有 NF/Corr/Rigid | 2.674 |
| 有 B-spline 无 NF | 1.328 |
| 有 B-spline 无 Control-PE | 1.648 |
| 有 B-spline 无 Corr | 1.303 |
| 有 B-spline 无 Rigid | 1.349 |
| 完整模型 | 1.078 |
- B 样条表示对重建质量提升最大(3.237 → 1.328)
- Normal Fusion 对空间区分贡献显著(1.328 → 1.078)
- Laplacian 正则化在短序列 (T<k) 优于 Ridge 正则化
亮点¶
- 精巧的表示设计:B 样条将变长运动→固定控制点,优雅解决了固定容量模型处理变长序列的根本矛盾
- 效率极高:4.4 秒生成、1.2 GB 显存,远超其他方法,且对网格复杂度不敏感
- 拓扑鲁棒:dense-point 训练 + 法线融合使方法不依赖特定 mesh 拓扑,同一模型对不同网格化的输入仍产生一致运动
- 多层级嵌入创新:受小波分解启发的控制点嵌入显著优于标准频率编码
- 高质量数据管线:构建 39K 级别带丰富标注的运动数据集,自动标注管线含 inspector 迭代校验
局限性 / 可改进方向¶
- 对高频复杂运动(如快速振动)表达能力受限,需增加控制点数量
- 假设固定拓扑 mesh,不支持拓扑变化的运动(如分裂、流体等)
- 依赖大规模高质量动态 3D 数据和算力
- 步行等运动可能表现为"原地踏步",缺少全局位移建模
与相关工作的对比¶
| 方法 | 运动表示 | 输入条件 | 变长支持 | 前馈 |
|---|---|---|---|---|
| AnimateAnyMesh | 逐帧顶点 token | 文本+mesh | ✗ (固定裁剪) | ✓ |
| GVFDiffusion | 3D Gaussian | 视频 | ✗ | ✓ |
| V2M4 | 单目视频重建 | 视频 | ✗ (优化) | ✗ |
| DNF | 4D INR | 无条件 | ✓ | ✗ |
| Puppeteer | 骨骼驱动 | 视频+mesh | ✗ | ✗ |
| BiMotion | B 样条控制点 | 文本+mesh | ✓ | ✓ |
- AnimateAnyMesh 是最直接竞品,同为文本+mesh 前馈生成;BiMotion 通过 B 样条突破其固定帧裁剪限制
- 视频条件方法(GVFDiffusion、V2M4)受视频质量影响大且效率低
- 骨骼方法(Puppeteer)需要精确 rigging,对通用角色泛化差
评分¶
- 新颖性: ⭐⭐⭐⭐ — B 样条运动表示 + 多层级嵌入是新颖且合理的设计
- 实验充分度: ⭐⭐⭐⭐⭐ — VBench + 用户研究 + 全面消融 + 多基线对比 + 效率分析
- 写作质量: ⭐⭐⭐⭐ — 逻辑清晰、公式推导完整、图表丰富
- 价值: ⭐⭐⭐⭐ — 表示层面的贡献有普适性,可迁移到其他运动生成任务