XPBD

정민용·2025년 11월 26일

Simulation

목록 보기
1/5

Ten Minute Physics - 09 Getting ready to simulate the world with XPBD

Force Based Simulation(FBS)

  • f=kdf=kd(훅의 법칙) 을 사용할 때 k(stiffness)가 크면 overshooting, k가 작으면 squishy(흐물흐물함) 문제 발생

Impulse Based Simulation(IBS)

  • FBS 방식보다는 더 안정적임.
  • 충돌에 대한 속도는 맞지만, 위치가 다른 Drift(위치 오차)가 발생하는 문제

Position Based Dynamics(PBD)

  • 위치를 직접 수정하기에 폭발하지 않고 무조건적으로 안정적임을 보임(Drift X).

  • PBD 방식은 암시적 오일러 적분과 수학적으로 동등함. 즉, 물리적으로 근거가 탄탄한 방법론임.

PBD Algorithm

while simulating
	while all particles i
		vi = vi + delta_t * g
		pi = xi
		xi = xi + delta_t * vi
		
	# 잘못된 위치(xi)에 대한 수정
	for all constraints C
		solve(C, delta_t)
		
	for all particles i
		vi = (xi - pi)/delta_t
		

solve(C, delta_t):
for all particles i of C
	compute delta_xi
	xi = xi + delta_xi

  • Iterations 방식의 경우 큰 시간 간격 Δt\Delta t 간격으로 갱신하기에 오차가 발생할 확률이 높음
  • Sub-Steps: ΔtΔt/n\Delta t를 \Delta t/n으로 사용하여 더 정교한 물리 시뮬레이션이 가능해짐
    • 또한, 충돌 처리 부분에서 벽 뚫기 문제를 방지할 수 있음.

Distance Constraint

Δx1=W1W1+W2(ll0)x2x1x2x1\Delta x_1 = \frac{W_1}{W_1+W_2}(l-l_0)\frac{x_2-x_1}{|x_2-x_1|} , Δx2=W2W1+W2(ll0)x2x1x2x1(Wi=1/mi)\Delta x_2 = -\frac{W_2}{W_1+W_2}(l-l_0)\frac{x_2-x_1}{|x_2-x_1|} (W_i = 1/m_i)

두 수식을 통해 두 물체 사이의 거리를 강제로 일정하게 유지할 수 있음.

→ 옷감, 머리카락 등과 같이 여러 점들을 하나로 묶어야 하는 경우 사용됨.

General Constraint / Constraint Gradient C\nabla C

C\nabla C : 구속 조건(C)를 위배했을 때, 이를 해결하기 위해 어느방향으로 가야할지를 저장

XPBD

  • PBD에서는 StiffnessTime Step 에 의존적이기에 FPS의 변화에 따라 같은 물체더라도 재질이 달라질 수 있음.
  • 따라서 Sub-step과 무관하게 물체의 물성이 물리적으로 일정하게 유지될 수 있도록 분모에 αΔt2\frac{\alpha}{\Delta t^2} 추가
λ=Cw1C12+w2C22++wnCn2+αΔt2\lambda = \frac{-C}{w_1|\nabla C_1|^2 + w_2|\nabla C_2|^2 + \dots + w_n|\nabla C_n|^2 + \frac{\alpha}{\Delta t^2}}
  • 위 공식을 이용하여 Δxi=kλwiCi\Delta x_i = k\lambda w_i \nabla C_i로 위치를 수정.
  • Volume Constraint 를 이용해 물체가 찌그러져 사라지는 문제를 방지할 수 있음.

0개의 댓글