[CVPR-24] SplattingAvatar: Realistic Real-Time Human Avatars with Mesh-Embedded Gaussian Splatting

[pdf |code |proj]

  • 使用重心坐标可以较为方便的基于三角面片顶点的属性插值(首先计算顶点属性,其次用顶点属性插值得到Gaussian属性)。
  • 使用重心坐标可以较为方便的判断Gaussian是否在三角面片内,进而可以让Gaussian在三角面片上“行走”(改变Gaussian所对应的三角面片)。
  • 基于C++实现三角面片“行走”代码,效率很高(3.5ms),同时3DGS可以用Unity渲染。

提出一种基于3DGS的虚拟人表示方法SplattingAvatar,在3090Ti/iPhone13上实现300FPS/30FPS渲染;

形变策略

SplatttingAvatar定义了一套新的Gaussians和FLAME绑定方法:

  • SplattingAvatar通过FLAME驱动Gaussians,Gaussian的形变由所对应的三角面片计算。
  • Gaussian位置通过(k,u,v,d)定义,其中k代表Gaussian所对应的三角面片,(u, v)是Gaussian在三角面片上的重心坐标,d表示Gaussian沿着法向量的位移。
  • Gaussian的其他变量定义为(\bar{q}, \bar{s}, o, c),分别表示Gaussian的旋转四元数、缩放系数、不透明度和颜色。
  • Gaussian与三角面片的对应关系并不固定,可能会移动到其他三角面片。

具体来说,任意Gaussians可以表示为:

  • 坐标:miu = P + d * n,P是Gaussians在三角面片上的位置(根据重心坐标和所在三角面片的三个顶点位置插值计算),n是在该位置上的法向量,d是沿着法向量的位移。具体计算如下,其中V1, V2和V3表示三角面片三个顶点的坐标,n1, n2和n3表示顶点的法向量。

  • 旋转:1)计算标定空间和形变空间中三角面片的旋转矩阵(公式4);2)对任意顶点,以顶点相邻三角面片的面积作为权重系数,对顶点相邻三角面片的四元素做加权和,求得顶点的四元数(公式5);3)Gaussians的四元数根据重心坐标和所在三角面片三个顶点四元数插值计算(公式6和公式7)。

  • 缩放:分别计算标定空间和形变空间中三角面片的面积,通过面积变化计算缩放系数。

  • 初始化:在标定姿势下随机选择10k个三角面片对,d初始化为0,也即所有Gaussians都附着在表面。

损失函数

  • 包括图片监督损失和高斯缩放约束损失
  • 图片监督损失包括渲染图像和GT图像间的L1和perceptual loss;
  • 高斯缩放约束损失,其中\hat{s_i}\check{s_i}是最大和最小放缩系数,如果太长(大于T_s)或太细(大于T_r \check{s_i}),则会施加约束:

动态绑定策略

  • 包含两个操作:WalkOnTriangles和ReExpress;
  • WalkOnTriangles首先根据当前所在位置P和更新值,计算更新后所在位置Q。如果Q在三角面片内,则返回Q,如果Q不在三角面片内,则执行ReExpress;
  • ReExpress更新Gaussian对应的三角面片,返回新的位置P和更新值。

实验

消融实验

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值