3DGS에 부피, 질량, 속도 (Physics) property를 부여하여 3DGS의 covariance 및 rotation matrix가 시간에 따라 물리 법칙에 따라 변화
MPM simulation 장점과 3DGS rendering 장점을 결합하여 unified simulation-rendering pipeline 제시
결과 영상이 재밌음!
Overview
Step 1) 3DGS optimization Anisotropic Loss를 추가하여 3DGS를 둥글둥글하게 만듦
Step 2) 3DGS Internel Filling Object 내부 공간을 3DGS로 채워서 continuum(연속체)로 만듦
Step 3) Physics Integration
Dynamics : 3DGS에 부피, 질량 부여하여 시간에 따라 Continuum Mechanics(연속체 역학)이라는 물리 법칙 따르도록 함
Kinematics : Gaussian Evolution, SH Transform을 통해 시간에 따른 물리적인 변화를 3DGS로 모델링
Backgrounds on Continuum Mechanics
Conservation of Mass (질량 보존 법칙) : 시간 \(t\) 가 바뀌어도 infinitesimal region 내 질량은 항상 일정하게 유지된다!! \(\int_{B_{\epsilon}^{t}} \rho (x, t) = \int_{B_{\epsilon}^{0}} \rho (\phi^{-1}(x, t), 0)\)
\(B_{\epsilon}^{t}\) : infinitesimal region at \(t\)
\(\rho(x, t)\) : density field at \(x, t\)
\(x = \phi(x_{0}, t)\) : deformation map from \(x_{0}, 0\) to \(x, t\)
Conservation of Momentum (운동량 보존 법칙) : 시간 \(t\) 가 바뀌어도 물질의 운동량은 변하지 않는다!! 운동량 변화량 : \(\rho(x, t) \overset{\cdot}{v}(x, t) = \nabla \cdot \sigma(x, t) + f^{ext}\)
\(\overset{\cdot}{v}(x, t)\) : 가속도 field at \(x, t\)
\(\sigma = \frac{1}{det(F)}\frac{\partial \psi}{\partial F}F^{E}(F^{E})^{T}\) : Cauchy stress tensor (물체 내부에서 발생하는 응력) where \(\psi(F)\) : hyperelastic energy density where deformation field gradient \(F = F^{E} F^{P}\)
\(F^{E}\) : elastic part (탄성) 물체에 stress를 가해서 조직에 구조적인 변형이 발생한 후, stress를 제거했을 때 원래 상태로 되돌아가는 성질
\(F^{P}\) : plastic part (소성) 물체에 stress를 가해서 조직에 구조적인 변형이 발생한 후, stress가 탄성 범위를 넘어가서 stress를 제거하더라도 원래 상태로 되돌아오지 않는 성질
\(f^{ext}\) : external force per unit volume
MPM (Material Point Method)
핵심 : particle과 grid 간에 운동량이 상호작용하여 이 과정에서 질량과 운동량이 보존되어 simulation 했을 때 현실과 비슷
Lagrangian Particle Domain : particle의 위치, 질량, 운동량, 응력, 부피, 외력 등을 모델링하고 particle 별로 추적하여 update
Eulerian Grid Domain : 공간을 3D grid로 나누어서 grid를 통해 particle 이동 cell의 크기가 작아질수록 정확도는 올라가지만 연산속도는 느려짐
Procedure :
Particle to Node : each particle의 물리량을 grid 상의 adjacent 8 nodes로 분배
Nodal Solution : 집계된 힘을 이용해서 each node의 \(a = \frac{F}{m}\), \(v\) 를 update
Node to Particle : each node의 \(a, v\) 를 particle로 전파 by weighted sum
Update Particles : each particle의 \(a, v\) 이용해서 새로운 particle 위치 갱신
Gaussian 수식 변화 : \(G_{p}(x, t) = e^{-\frac{1}{2}(x-x_{p})^{T}(F_{p}(t) \Sigma_{p} F_{p}(t)^{T})^{-1}(x-x_{p})}\)
grid 부피를 particle 수로 나누어서 각 particle 부피 \(V_{p}^{0}\) 를 초기화하고 이로써 각 particle(Gaussian)은 질량 \(m_{p} = \phi_{p} V_{p}\) 를 가지게 되고 MPM Simulation을 바탕으로 Gaussian이 물리 법칙을 따름
아래의 이유로 Physics와 3DGS의 결합은 자연스러움
Gaussian itself가 Continuum의 discretized form으로 간주되므로 직접 simulation 가능
물리 법칙에 의해 변형된 Deformed Gaussian은 3DGS rasterization에 의해 직접 rendering 가능
따라서 WS2(What you see is What you simulate) 달성
방법 2) incremental update
deformation gradient \(F_{p}\) 에 의존하지 않고 Langrangian framework(MPM simulation)에 더 잘 맞는 Gaussian Kinematic(운동학) 방법 제시
rotation matrix : 마찬가지로 \(R_{p}^{0} = I\) 에서 출발해서 비슷하게 update 가능
즉, covariance matrix와 rotation matrix가 물리 법칙을 따르면서 incrementally update되도록 설계!!
위의 수식을 통해 deformation gradient \(F_{p}\) 를 직접 구하지 않더라도 Gaussian covariance를 \(t^{n}\) 에서 \(t^{n+1}\) 으로 incremental update 가능
Orientation of SH
SH는 view direction에 따른 color를 모델링하는, hard-coding되어 있는 함수이다 따라서 시간 \(t\) 에 따라 particle(Gaussian)이 rotate하면 색깔이 전혀 달라지므로 view direction에 particle(Gaussian)의 역회전을 적용
particle(Gaussian)의 회전 정보 : surface orientation을 사용한 Point-NeRF 와 달리 방법 1)의 경우 polar decomposition을 통해 deformation gradient \(F_{p} = R_{p}S_{p}\) 에서 \(R_{p}\) 추출해서 사용 방법 2)의 경우 polar decomposition을 통해 \((I + \Delta t v_{p}) R_{p}^{n}\) 에서 \(R_{p}^{n+1}\) 추출해서 사용
Internal Filling
recon. Gaussians는 surface 근처에 분포하는 경향이 있으므로 object의 내부 구조는 비어 있는 채로 surface에 가려져 있음 \(\rightarrow\) object의 deformation이 클 경우 내부가 노출될 수도 있고 질량을 가지는 물리 법칙에 따르는 volumetric object으로 만들기 위해 비어 있는 내부 영역도 particles(Gaussians)로 채워야 함
Internal Filling :
Step 1) discretize from continuous 3D opacity field \(d(x) = \sum_{p} \sigma_{p} e^{-\frac{1}{2}(x-x_{p})^{T}\Sigma_{p}^{-1}(x-x_{p})}\) into discrete 3D grid
Step 2) low opacity(\(\sigma_{i} \lt \sigma_{th}\))를 가지는 grid에서 high opacity(\(\sigma_{j} \gt \sigma_{th}\))를 가지는 grid로 ray가 통과할 때 이를 intersection이라고 하자
Step 3) 아래 두 가지 조건을 만족할 때 object 내부에 있다고 간주하고 3DGS 생성
Condition 1) : 3D grid 상에서 6 axes 방향으로 ray casting한 뒤 object 내부에 있는 grid의 경우 항상 surface와 intersect할 것이므로 intersection 개수가 6개인지 체크하여 candidate grids 선택
Step 4) object 내부에 채워 넣은 gaussian들도 3D 상에서 visualize할 필요가 있을 수 있음 internal-filled particle(Gaussian)의 경우 opacity \(\sigma_{p}\) 와 color \(C_{p}\) 는 closest Gaussian의 것을 물려받고 covariance matrix는 \(\text{diag}(r_{p}^{2}, r_{p}^{2}, r_{p}^{2})\) 으로 initialize where \(r_{p}\) : particle radius from its volume \(V_{p}^{0} = \frac{4 \pi r_{p}^{3}}{3}\) (본 논문의 저자는 시도하지 않았지만 internal filling을 위해 generative model을 사용하면 more realistic results 가능할 듯)
Anisotropy Regularizer
3DGS가 너무 얇을 경우 large deformation일 때 Gaussian이 object surface의 바깥쪽으로 튀어나와 plush artifacts 발생 가능
chair에 Twist deformation 가했을 때 생기는 plush artifacts
\(L_{aniso} = \frac{1}{| P |} \sum_{p \in P} \text{max}(\frac{\text{max}(S_{p})}{\text{min}(S_{p})}, r) - r\) where \(S_{p}\) : scale matrix of 3DGS
\(\frac{\text{max}(S_{p})}{\text{min}(S_{p})} \leq r\) 즉, 장축과 단축의 길이 비가 threshold \(r\) 을 넘지 않도록 3DGS를 둥글둥글하게 만듦