解决什么?

宽松衣物的动画模拟/新的动画输入。

如何物理上真实、鲁棒地模拟宽松衣物(如长裙、卫衣)在剧烈运动下的复杂形变与碰撞?

现有的 3DGS 方法多采用线性混合剥皮(LBS)或依赖姿态的几何修正(MLP 预测偏置)。这些方法无法捕获复杂的非线性动态,极易对训练集动作过拟合。在前作中,人体和衣服是靠 IPC(增广连续碰撞检测) 算法来算碰撞的。IPC 每一帧都要检查衣服三角形和人体三角形有没有交错。如果输入的 SMPL 网格估计得不准,人体自己左脚踩右脚穿透了,IPC 就会直接崩溃报错。

解决思路:

为了从根本上解决“人体穿衣时碰撞必定报错”的鲁棒性瓶颈,采用并精心改进了材料点法(Material Point Method, MPM)‍模拟器。

MPM是什么?

MPM 是一种欧拉-拉格朗日(Eulerian-Lagrangian)混合表征算法,常用于电影特效中模拟大变形、撕裂或流体(如雪、沙子、泥浆)。拉格朗日粒子:衣物被离散为海量的粒子,每个粒子携带不变的质量、动量和变形梯度;欧拉背景网格:一个固定不动的空间背景三维方格场。

针对衣物模拟的MPM改进?

各向异性模型:衣物“沿布面方向极难被拉伸,但沿法线方向可以随意弯曲自由运动”

碰撞处理算法-相对速度:SMPL-X 人体网格面片的速度 vf 和法线 nf -->传递给附近的背景欧拉网格节点场;转换到人体参考系,碰撞检测,把 v_rel 的法向分量剔除,只保留沿人体表面的切向运动

MPMAvatar:

把人体和衣服在物理上分开了。衣服是 MPM 粒子,人体只是一个给背景方格提供速度的‘碰撞体’。MPM 不去做严格的防穿透检查,而是直接做速度投影(修正速度)。

先拿到衣物的三角网格,被切分出来的衣物区域网格,就是后续物理模拟的初始衣物网格(Garment Mesh)。3DGS挂载在衣物网格。衣服高斯靠 MPM 物理解算器推算位置。

身体部分的三角形面片上,同样会挂载属于皮肤的 3DGS 点,直接绑定在 SMPL-X 的骨骼上,通过传统的 LBS(线性混合剥皮)随动作直接发生刚性形变。皮肤高斯靠骨骼 LBS 绑定直接拉伸。

显隐混合表征

几何表示:一个带有物理参数(如杨氏模量E、泊松比ν、密度ρ等可学习参数)的规范三角网格。

外观:附着在规范网格上3DGS的,用于高保真渲染。每个高斯的空间参数定义在其父网格面的局部坐标系中,从而能随网格变形而自然变形。

训练/参数学习:

0.优化出每一帧衣物网格的稠密时空对应

依赖于从输入视频通过网格跟踪算法得到的、具有密集时间对应关系的跟踪网格序列。

1.逆物理参数学习

学习物理参数(主要是杨氏模量E、密度ρ和静息几何参数α),使得MPM模拟的网格动态与跟踪网格(真实动态)尽可能一致。

1.1反解出衣服在“无重力”地带纯粹的初始静止几何(Rest Geometry)

1.2以前述静止几何输入,带入当前的 E 和 ρ,丢进定制的 MPM 模拟器中跑一遍,输出未来所有帧的虚拟衣物网格。

1.3计算模拟网格与阶段一跟踪网格顶点的 L_2距离,采用有限差分法给参数微小扰动来逼近梯度,用 Adam 迭代 200 轮,直接锁定该衣服最真实的杨氏模量和密度。

2.外观学习

物理参数固定后,优化网格绑定的3DGS的参数

利用跟踪网格的变形信息,将规范高斯变换到每一帧,然后在所有训练帧和视角下进行渲染,计算渲染图像与真实图像的误差。

实验结果:

在ActorsHQ(宽松衣物)和4D-DRESS数据集上评估。零样本泛化交互能力:训练结束后,可以直接在场景里塞一把没见过的椅子、或者一堵沙墙。

思考:

学到的是真正的物质实体本质,而非表面的像素拟合。目前只模拟了衣服,身体其他部分(如头发、皮肤软组织)依旧依赖传统 LBS。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐