Paper: Cai J, Yang Y, Yuan W, et al. GIC: Gaussian-Informed Continuum for Physical Property Identification and Simulation[J]. arXiv preprint arXiv:2406.14927, 2024.
Introduction: https://jukgei.github.io/project/gic/
Code: https://github.com/Jukgei/gic
GIC 是一种用于识别物体的物理属性并模拟其动态场景的 GS 表示方法,根据输入的多视角视频建模场景并预测其物理属性参数。训练完成后,用户可以替换相关物理属性参数以模拟物体在新的参数下的运动情况。
目录
一. 基础知识
1. Eulerian Grids
欧拉方法 (Eulerian Grids) 是一种常用的计算机建模物理现象的方法,尤其在流体力学和物理模拟中。Eulerian Grids 的核心思想是使用固定的空间网格来记录物理量的变化,重点关注流体随着时间流逝而流过的空间中的特定位置 1,强调物质在固定位置的演化,而不是跟踪具体的物质粒子(即坐标系是固定的,物质在网格中流动)。在 Eulerian 方法中,物理量被存储在网格的节点或单元上,利用控制体积法或偏微分方程来描述这些量在时间和空间上的变化。
由于不需要显式跟踪物质的位置,Eulerian 方法特别适合描述复杂流体行为,比如热传导、爆炸冲击波传播和复杂流体动力学问题。此外,Eulerian 方法还适合模拟复杂的边界条件,如墙壁、容器等。然而,它的分辨率受到网格密度的限制,且在处理高度动态的界面或固液交互时可能需要额外的技术支持。
Eulerian Grids 是怎么模拟物理现象的呢?
\quad\quad Eulerian Grids 通过将物理空间划分为固定的规则网格,并在这些网格上存储物理量(如速度、密度、压力等),然后利用偏微分方程描述物理现象的演化。具体来说,首先建立计算域的离散化,将连续的物理空间分割为多个小单元(网格单元或网格节点),每个单元代表空间中的一个局部区域。接着,选取适当的数值方法(如有限差分法、有限体积法或有限元法)将控制物理现象的方程(如 Navier-Stokes 方程)离散化,从而将连续问题转化为一系列可以计算的代数方程。
\quad\quad 在模拟过程中,网格是固定不动的,流体或其他物质通过网格边界移动。为了描述物质流动和能量交换,计算会基于每个网格单元的状态(如物质的密度或速度),计算其与相邻单元之间的通量交换。通过不断地迭代求解,模拟出物理量随时间和空间变化的动态过程。
\quad\quad 例如,在流体力学的模拟中,Eulerian 方法利用固定网格存储流体在每个时间步的速度场和压力场,并通过求解 Navier-Stokes 方程来更新这些物理量。为保证数值解的稳定性和准确性,还需要使用特定的时间积分方法(如显式方法或隐式方法)和空间差分方法(如中心差分或迎风差分)。
\quad\quad 最终,模拟的结果通过可视化工具将计算得到的物理量分布渲染成图像或动画,展现物理现象的动态演化,如流体的流动、温度场的扩散或冲击波的传播。
2. Lagrangian Particles
拉格朗日方法 (Lagrangian Particles) 是一种通过将连续介质离散化为单独的粒子来建模物理现象的计算方法,每个粒子携带诸如质量、速度、位置等物理属性。Lagrangian 方法对单个流体块在空间和时间中移动时进行跟踪,从粒子的角度描述系统的行为,强调每个物质点随时间的运动轨迹,粒子能够根据运动方程演化。
由于不依赖固定的空间网格,Lagrangian 方法特别适用于模拟大形变、自由表面以及复杂边界条件的问题。因为没有固定网格的限制,Lagrangian 方法的分辨率只受粒子数的限制。尽管拉格朗日粒子法提供了精确且灵活的建模方式,但对于大规模仿真而言,计算成本较高,并且在高密度区域容易发生粒子重叠或者稀疏区域数据不足的问题。
Lagrangian Particles 是怎么模拟物理现象的呢?
\quad\quad Lagrangian Particles 是一种基于粒子追踪的物理现象模拟方法,首先通过将连续介质离散化为一系列粒子来初始化系统,每个粒子携带物理属性,如质量、速度和位置等。随着时间的推移,这些粒子根据物理定律进行运动更新。粒子的位置和速度会根据所受的力(例如重力、压力、弹性力等)在每个时间步长内发生变化。粒子间的相互作用力通常通过核函数来计算,核函数通过平滑粒子之间的影响来稳定数值计算。在物理模拟过程中,粒子不仅会更新位置和速度,还会随着力的作用和相互作用更新其他物理属性,如密度、压力、温度等。边界条件和拓扑变化是 Lagrangian Particles 的另一个挑战,当粒子接触到边界时,可能需要设置反射边界或吸收边界。而在模拟断裂、流体分裂等现象时,拓扑变化也需要通过算法来处理。通过迭代计算,粒子的状态逐步更新,最终得到物理现象的演变结果。
Eulerian grids 和 Lagrangian particles 是两种常用的计算机物理模拟框架,形象地表示,Eulerian 像一个固定的摄像头拍下场景中流体如何流动;Lagrangian 像一个随物质一起移动的追踪器记录单个粒子的运动轨迹。对比视频如下:Lagrangian vs Eulerian。
3. Material Point Method
Material Point Method 2 是一种结合 Eulerian Grids 和 Lagrangian Particles 的混合数值方法,广泛应用于模拟大形变、流体-固体耦合以及多相材料的行为。在 MPM 中,物质通过粒子表示,这些粒子携带物理属性(如质量、速度、应力等),并随着时间的推移在空间中运动。背景网格用于计算粒子之间的交互作用,并解算相应的物理方程,之后将结果反馈到粒子上。MPM 方法克服了传统网格方法在大变形下的网格畸变问题,能够处理复杂的物理现象(如大变形、破裂、碰撞等),适用于广泛的工程和物理仿真领域。
如上图所示,MPM 算法步骤如下:
- 计算网格节点表示:首先,将粒子携带的物理属性投影到背景网格的节点上;
- 运动方程的求解:在背景网格节点上求解运动方程,得到更新的节点运动信息(例如位置、速度、加速度等);
- 更新粒子的物理属性:将更新后的节点运动信息插值回粒子,用于下一步更新粒子的运动状态;
- 更新粒子的状态:根据插值后的运动信息更新材料点的状态,并重置计算网格以准备下一步的计算。
更多 p2g2p 过程见 简单初识 Material Point Method(MPM)、Material Point Method。
二. 研究思路
传统 4D 方法只能建模物体的几何和纹理信息,无法建模其物理属性(如描述弹性材质的杨氏模量、泊松比等)。并且在模拟弹性材质物体的碰撞现象会出现模糊,如下图所示:
三. 运动分解的 Dynamic 3D Gaussian 表示
GIC 将 Dynamic 3D Gaussian 场景建模为一个标准的 3D Gaussian 场景和一个变形场。因为弹性运动可能会涉及位置和尺度的变化,所以变形场输出指定时间和位置对应的位置和尺度的形变量,球谐系数和不透明度不随时间和位置变化。
具体来说,将运动场景分解成
N
m
N_m
Nm 个基,用一个全连接网络和
N
m
N_m
Nm 个头表示,全连接网络输出位置和尺度的形变量。为了更精准地建模运动,引入了运动系数网络,对输出的运动基进行加权。(这里采用相同全连接网络预测运动信息可以保证同类物体的点具有相同运动趋势,多头用来拟合不同类物体的运动;将运动系数建模为时间变量可以拟合更高自由度的运动。)
四. Gaussian 连续体生成
重建的 GS 场景主要提供了物体的几何形状信息,而物理属性还需要通过生成连续体来进行估计。Gaussian 连续体能够将几何形状与物理属性结合起来,从而更好地进行物理属性的推断。Gaussian 连续体本质就是 MPM 中的粒子,因此还需要生成背景网格,文中称为密度场。
连续体 (continuum)
\quad MPM 使用离散的物质点来模拟物体的行为,但这些物质点代表的是一个连续体的小单元,整体上仍然可以用来描述连续介质的力学和物理属性。在 MPM 中,物质点携带着与连续介质相关的属性,如密度、应力、应变等。通过物质点之间的相互作用和网格上的插值,MPM 能够将离散的物质点更新与连续介质的行为相结合,模拟出连续介质的力学响应。这意味着,尽管物质点本身是离散的,但从整体上看,它们的分布和动态演化能够近似表示一个连续介质的力学状态。
1. Coarse-to-fine density field generation
有了重建的 GS 场景表示,就可以根据 Gaussians 球生成连续体 (continuum)。生成 Gaussian 连续体前,需要先生成一个连续的密度场(其实就是 MPM 的背景网格)。GIC 提出了一种 coarse-to-fine 的策略,通过迭代逐步提高分辨率生成目标物体的密度场。该过程先在重建的 Gaussians 的 bbox 内均匀采样进行初始化,并比较重建的 Gaussians 渲染得到深度图和初始化的粒子投影得到的深度图筛选出物体表面及其内部的粒子;然后通过上采样逐步细化密度场,最后根据阈值过滤密度场得到连续体粒子及其表面。
2. Gaussian-informed continuum
上一步已经介绍了如何生成 Gaussian 连续体,下面简述一下为什么这么设定:PAC-NeRF 中粒子被赋予外观特征,使得可以根据物体不同的状态进行图像渲染。但当物体发生大形变时,渲染出来的 RGB 图像会出现失真。为了避免直接注入外观特征,GIC 为粒子分配密度和尺度属性,密度来自密度场,而尺度属性可以直接从场的网格大小获得。这种方式既避免了对粒子的外观特征进行复杂的处理,又能够有效地进行物体渲染。
五. 物理属性预测
有了 Gaussian 连续体的初始状态
P
P
~
(
0
)
\mathbb{P}_{\tilde{P}}(0)
PP~(0) 和表面粒子
S
~
(
t
)
\tilde{S}(t)
S~(t),就可以根据其物体属性参数使用 MPM 方法模拟其运动轨迹,并反向传播优化物体属性参数:
L
p
p
e
=
1
m
∑
i
=
1
m
[
L
C
D
(
S
(
t
i
)
,
S
~
(
t
i
)
)
+
1
n
∑
j
=
1
n
L
1
(
A
j
(
t
i
)
,
A
~
j
(
t
i
)
)
]
\mathcal{L}_{p p e}=\frac{1}{m} \sum_{i=1}^m\left[\mathcal{L}_{C D}\left(S\left(t_i\right), \tilde{S}\left(t_i\right)\right)+\frac{1}{n} \sum_{j=1}^n \mathcal{L}_1\left(A_j\left(t_i\right), \tilde{A}_j\left(t_i\right)\right)\right]
Lppe=m1i=1∑m[LCD(S(ti),S~(ti))+n1j=1∑nL1(Aj(ti),A~j(ti))]
其中 S ( t i ) S(t_i) S(ti) 表示模拟器生成的 t i t_i ti 时刻表面粒子, A j ( t i ) A_j(t_i) Aj(ti) 表示模拟器生成的运动轨迹在 t i t_i ti 时刻视角 j j j 的 mask, A ~ j ( t i ) \tilde{A}_j(t_i) A~j(ti) 表示从数据集中提取的 mask。 L C D \mathcal{L}_{C D} LCD 是 Chamfer Distance,用于度量两个点集之间的差异。
六. 实验
七. 复现
-
克隆仓库后,按照 README 创建虚拟环境
gic
并安装依赖,然后下载所需数据集和权重节点; -
对数据集的前景和背景进行分割:
python prepare_pacnerf_data.py --data_folder=/root/autodl-tmp/pacnerf/torus
;
-
估计物理属性:
python train_dynamic.py -c config/pacnerf/torus.json -s /root/autodl-tmp/pacnerf/torus -m output/pacnerf/torus --reg_scale --reg_alpha
;
-
替换物理属性:
python new_trajectory.py -c config/predict/elastic.json -s /root/autodl-tmp/pacnerf/torus -m output/pacnerf/torus -vid 3 -cid 0 --reg_alpha
;
实验结果:
Jiang C, Schroeder C, Teran J, et al. The material point method for simulating continuum materials[M]//Acm siggraph 2016 courses. 2016: 1-52. ↩︎