Journal

Simplicits: Mesh-Free, Geometry-Agnostic, Elastic Simulation

Vismay Modi, Nicholas Sharp, Or Perel, Shinjiro Sueda, David I. W. Levin

NVIDIA; University of Toronto; Texas A&M University

一句话总结

Simplicits 提出一套「与几何表示无关」的弹性仿真框架:只要求任意几何能被归约为空间中的占据(inside-outside)函数,就用一个小型隐式神经网络学习空间变化的蒙皮权重作为降维形变基底,在这个降维子空间里做隐式时间积分,从而对三角网格、点云、SDF、NeRF、高斯泼溅、CT 医学影像等各种表示统一进行大形变弹性动力学模拟——无需网格、无需数据、无需修改算法。

研究背景

视觉计算里 3D 表示越来越多样:显式网格、隐式神经场、点云、NeRF、高斯泼溅、医学扫描等。渲染这些表示如今已经很容易,但物理弹性仿真却往往和某一种特定输入几何强绑定,一旦换输入,整条工具链(几何处理、体网格化、仿真器)都要复杂地改造。

现有路线各有短板:

  • 网格法(FEM):最成熟,但需要高质量体四面体网格;处理薄结构要么把分辨率提到不切实际的高,要么需要专门的余维(codimensional)处理,且不同维度几何耦合需要额外算法。
  • 嵌入法(embedded):把几何包进易构造的离散网格中仿真,但会把嵌在同一单元内的不相干几何强行耦合。
  • 无网格法(SPH / MPM):把面到体的转换简化为点采样,但 SPH 每步都要更新邻域连接;MPM 仍需显式背景网格且易出数值伪影,难以精确模拟复杂几何的大尺度弹性动力学。
  • 神经场降阶(CROM / LiCROM 等):依赖预先仿真的数据集,因此继承了前述几何处理难题,训练还常常要数小时、偶尔需要显式网格梯度。

作者的关键洞察是:任何几何表示本质上都由一个内外(占据)函数隐式或显式地编码——网格用 SDF 符号、点云用快速缠绕数(fast winding number)、NeRF/高斯泼溅和 CT 用密度场阈值。只要在这个统一接口之上定义仿真器,就能做到表示无关。

核心方法

统一接口:占据函数

方法输入是任意表示的静止态物体,只要它支持查询一个内外密度函数 \(\Phi(x): \mathbb{R}^3 \to \mathbb{R}\),物体内部 \(\Phi=1\)、外部 \(\Phi=0\)(边界处可以模糊)。输出是一组编码蒙皮权重的神经场,用于动力学仿真。

降维基底:神经蒙皮权重 + 线性混合蒙皮

形变映射用线性混合蒙皮(LBS)参数化,这样形变对自由度是线性的,便于数值积分:

\[ \phi(X, z) = X + \sum_{j=1}^{n} W_j(X) Z_j \begin{bmatrix} X \\ 1 \end{bmatrix} \]

其中 \(n\) 是蒙皮 handle 数量,\(W_j(X): \mathbb{R}^3 \to \mathbb{R}\) 是 handle \(j\) 的空间变化标量形函数,\(Z_j \in \mathbb{R}^{3\times4}\) 是第 \(j\) 个仿射变换 handle。所有 handle 变换拉平堆叠成自由度向量 \(z = \mathrm{flat}(Z) \in \mathbb{R}^{12n}\)。

与经典 LBS 不同:这里不显式指定 handle 位置,权重也不要求满足单位分解(partition of unity)或 Kronecker delta 性质,而是把它们当作一个无约束的降维子空间(类似蒙皮特征模态 skinning eigenmodes)。权重函数存储为一个向量值连续神经场 \(W_\theta: \mathbb{R}^3 \to \mathbb{R}^n\)(一个小 MLP),彻底摆脱任何显式几何脚手架,训练和运行时都完全无网格。

隐式时间积分(降维子空间内求解)

由于 \(\phi\) 对 \(z\) 线性,标准隐式时间积分离散为如下优化问题:

\[ z_{t+1} = \arg\min_{z} \frac{1}{2} \lVert z - \tilde{z}_t \rVert_M^2 + h^2 E_{\text{pot}}(z) \]

其中 \(\tilde{z}_t\) 是一阶预测子,\(M\) 为质量矩阵,\(h\) 为时间步,\(E_{\text{pot}}\) 为弹性势能。用带线搜索的投影牛顿法求解,可附加约束/罚弹簧维持边界条件、加障碍函数处理接触。

质量矩阵与弹性势能都是在物体域上的积分。关键在于:因为 \(\phi\) 对 \(z\) 线性,雅可比 \(J = \nabla_z \phi \in \mathbb{R}^{3 \times 12n}\) 与质量矩阵 \(M \in \mathbb{R}^{12n \times 12n}\) 都是常量

\[ M = \int_{\Omega} \rho\, J(X)^T J(X)\, d\Omega, \qquad E_{\text{pot}} = \int_{\Omega} \Psi(\phi(X))\, d\Omega \]

无网格空间积分:蒙特卡洛采样

把占据密度代入积分得到统一形式,用蒙特卡洛积分对物体域采样求值:

\[ G = \int_{\mathbb{R}^3} \Phi(X)\, g(X)\, dX \]

采样点可直接来自几何(网格快速采样、粒子子集),或在 \(\Phi(X) > 0\) 的域内做拒绝采样得到均匀随机点。

神经蒙皮场的训练损失

训练目标是拟合出能用少量 handle 就准确表达大而物理合理的旋转与形变的权重场,损失由两项组成:

\[ \theta^* = \arg\min_{\theta} \lambda_{\text{elastic}} \mathcal{L}_{\text{elastic}} + \lambda_{\text{ortho}} \mathcal{L}_{\text{ortho}} \]

物理合理性损失:物理上合理的形变具有低弹性能,因此要求随机采样的 handle 变换下弹性能尽可能低:

\[ \mathcal{L}_{\text{elastic}} = \int_{\mathbb{R}^3} \Phi(X)\, \Psi\big(\phi_{W_\theta}(X, Z)\big)\, dX \]

训练时从分布 \(Z \sim \mathcal{N}(\mu, 0)\) 逐元素采小扰动变换(单位尺度物体 \(\mu = 0.1\) 有效),实践中小的无约束扰动训练出的权重能很好泛化到大非线性形变。

正交性损失:单纯最小化弹性能会塌缩到平凡解(所有 handle 编码常值权重,只能做刚性运动)。作者采用无数据方式,要求权重在标量函数内积下互相正交归一:

\[ \mathcal{L}_{\text{ortho}} = \sum_{i=1}^{n} \sum_{j=1}^{n} \int_{\mathbb{R}^3} \Phi(X) \Big( W_\theta^i(X) W_\theta^j(X) - \delta_{ij} \Big)^2 dX \]

技术细节

  • 网络结构:小型 MLP,隐藏层用 ELU 激活,典型 9 个隐藏层、宽度 64。输入先归一化到长度尺度约 1。实验发现 ELU 比 SIREN 更严格地满足边界条件。
  • 能量调度:训练时能量按 \(\Psi = (1-\alpha)\Psi_{\text{linear}} + \alpha\Psi_{\text{neohookean}}\) 调度,\(\alpha\) 从 0 增到 1。线性弹性在随机初始化权重下梯度稳定,Neohookean 弹性改善最终权重的大形变行为。
  • 优化器:Adam,学习率线性调度。
  • 运行时零神经网络评估:一大关键加速点——权重及其导数只在预处理阶段在固定采样点上算一次,物理时间步循环内完全不需要再评估神经网络,这是方法快且稳的重要原因。仿真所用材料能量无需与训练时一致,兼容任意超弹性材料(多数示例用 stable Neohookean)。
  • 实现:纯 PyTorch,全程 GPU(单张 RTX 3070)。空间导数用有限差分;牛顿步的 Hessian/梯度用解析表达式显式组装(自动微分太慢)。
  • 表示相关处理:网格用 SDF 内外测试,NeRF 用密度阈值,CT 用 Hounsfield 单位裁剪。渲染时显式表示(网格、粒子)可用前向形变场直接查询任意点的形变位置(还能读出局部旋转以旋转高斯泼溅粒子);隐式表示(NeRF)因体渲染需要逆映射较难处理,本文按情形用点采样或抽网格做可视化回避,留作未来工作。

实验结果

  • 精度验证:在棱柱杆扭转基准上与线性四面体 FEM 真值对比,精度随 handle 数量和 MLP 容量增加而提升;但网络容量必须与自由度匹配(如 3 层配 24 handle 就不足以表达复杂形变)。
  • 消融:去掉 Neohookean 能量训练或只采样平移(而非完整仿射变换),都会在接近屈曲的高扭转状态下降低精度、出现虚假屈曲。去掉 \(\mathcal{L}_{\text{elastic}}\) 则无法产生物理响应。物理能量 + 正交项两者缺一不可。
  • 对比:悬臂梁实验中,本方法(6/9 handle)与参考 corotational FEM 高度吻合,和 Fast Skinning Eigenmodes(10 模态)非常接近,且明显优于 SPH(5582 粒子)和 MPM(5000 粒子,多种粒子/网格密度下 MPM 都无法保持物体完整)。接触实验(Figure 12)中,同为 10 个模态时,基于网格的特征模态无法捕捉尖锐接触,而本方法能——尽管接触在训练中从未见过。
  • 缩放:训练成本主要取决于网络大小而非 handle 自由度数(144 组实验的附录表)。仿真时后向欧拉的稠密牛顿求解使耗时随 handle 自由度超线性增长,但即便很多 handle 也基本保持交互速率。
  • 计时示例:Mesh monkey 训练 180 秒 / 每步 51 ms;SDF key 训练 886 秒 / 107 ms;Gaussian Splat lego 训练 5550 秒 / 74 ms。
  • 广泛适用性:在三角/四面体网格、SDF(整套 Takikawa 等数据集,含薄结构与余维效应)、点云(含 3D 扫描的倾倒老鹰雕像)、NeRF(含 Magic3D 生成的青蛙)、高斯泼溅重建场景、CT 医学影像(膀胱接触、颅骨+软脑落地)上,全部用同一套框架和参数完成 140+ 个仿真结果,还展示了 2D 图像弹性动力学的初步结果。

贡献与局限

贡献

  • 提出首个「表示无关」的弹性仿真范式,以占据函数为统一接口,覆盖网格/点云/SDF/NeRF/高斯泼溅/CT 等,且无网格、无数据(自监督物理损失)、高效。
  • 把蒙皮特征模态从线性扩展到非线性区间,用完整仿射变换(而非仅平移)优化权重,并把权重存为神经场实现从头到尾的无网格管线。
  • 运行时无需评估神经网络,配合隐式欧拉积分实现稳定、交互级的降阶弹性动力学。

局限与未来工作

  • 神经蒙皮权重场需为每个物体单独拟合作为预处理;虽已较快,但可借助基于网格的网络(如 instant-NGP 的哈希编码)进一步加速到近交互速率。
  • 对于层状、复杂且高度变化的刚度分布,训练收敛可能困难(尽管已能处理若干异质刚度示例)。
  • 隐式体表示(NeRF)从前向形变映射渲染仍非平凡,需要可逆形变表示或形变感知渲染方案。
  • 范式可扩展到高频次级效应、断裂、铰接连杆等更多现象,以及图像编辑等视觉计算应用。

延伸思考

Simplicits 最具启发的地方,是把「几何表示」这个长期把仿真器锁死的维度,抽象成一个最小公约数——占据函数。这与渲染领域「万物皆可采样密度场」的趋势形成呼应:当表示层被统一到一个可查询接口后,上层算法(无论渲染还是仿真)就能获得表示无关的通用性。方法把「学一个物理感知的降维基底」和「在基底里做经典隐式积分」解耦,前者用无数据的自监督物理损失训练、后者复用成熟的投影牛顿法,本质是用神经场替代了传统降阶模型里需要网格/数据才能构造的形变基。值得注意的是「运行时不碰神经网络」这一设计——它把神经场的表达力限制在预处理阶段,避免了神经物理仿真常见的每步高昂开销与不稳定,这种「训练期用神经、运行期回归经典数值」的折中,或许是当前神经仿真走向实用的一条务实路径。