Ten Minute Physics - 09 Getting ready to simulate the world with XPBD
Force Based Simulation(FBS)
- f=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
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 간격으로 갱신하기에 오차가 발생할 확률이 높음
- Sub-Steps: Δt를Δt/n으로 사용하여 더 정교한 물리 시뮬레이션이 가능해짐
- 또한, 충돌 처리 부분에서 벽 뚫기 문제를 방지할 수 있음.
Distance Constraint

Δx1=W1+W2W1(l−l0)∣x2−x1∣x2−x1 , Δx2=−W1+W2W2(l−l0)∣x2−x1∣x2−x1(Wi=1/mi)
두 수식을 통해 두 물체 사이의 거리를 강제로 일정하게 유지할 수 있음.
→ 옷감, 머리카락 등과 같이 여러 점들을 하나로 묶어야 하는 경우 사용됨.
General Constraint / Constraint Gradient ∇C
∇C : 구속 조건(C)를 위배했을 때, 이를 해결하기 위해 어느방향으로 가야할지를 저장
XPBD
- PBD에서는
Stiffness가 Time Step 에 의존적이기에 FPS의 변화에 따라 같은 물체더라도 재질이 달라질 수 있음.
- 따라서 Sub-step과 무관하게 물체의 물성이 물리적으로 일정하게 유지될 수 있도록 분모에 Δt2α 추가
λ=w1∣∇C1∣2+w2∣∇C2∣2+⋯+wn∣∇Cn∣2+Δt2α−C
- 위 공식을 이용하여 Δxi=kλwi∇Ci로 위치를 수정.
- Volume Constraint 를 이용해 물체가 찌그러져 사라지는 문제를 방지할 수 있음.