1. 개요[편집]
힘? 가속도? 그거 다 적분해야 하잖아. 그냥 위치를 손으로 잡아 옮기면 안 돼?
위치 기반 동역학(Position Based Dynamics, PBD)은 뉴턴의 힘·가속도를 시간 적분하는 대신, 물체의 위치 자체에 걸린 제약(constraint)을 직접 투영(projection)해서 만족시키는 방식으로 운동을 푸는 실시간 물리 시뮬레이션 기법이다. 2007년 Matthias Müller 등이 발표한 논문1에서 정식화되었고, 게임·VFX 같은 실시간 영역에서 압도적으로 강건하고 빠르다는 이유로 순식간에 업계 표준이 됐다.
전통적인 강체 동역학이나 천 시뮬레이션은 힘 → 가속도 → 속도 → 위치 순으로 적분한다. 문제는 스프링 강성이 크거나 시간 간격이 크면 이 적분이 폭발한다는 것. 그래서 베를레 적분에 암시적 스킴을 얹는 등 온갖 안정화 기법이 동원됐다. PBD는 발상을 뒤집어서, **“어차피 원하는 건 제약이 만족된 위치니까, 위치를 직접 그 제약 위로 밀어 넣자”**는 접근을 택한다. 덕분에 안정성이 시간 간격에 훨씬 덜 민감하다.
2. 핵심 알고리즘[편집]
PBD의 한 스텝은 대략 이렇게 흐른다. 먼저 외력(중력 등)을 속도에 반영하고, 속도로 예측 위치 를 만든다.
그다음이 핵심이다. 예측 위치들은 아직 제약(거리 유지, 부피 보존, 충돌 비침투 등)을 어긴 상태다. 이 예측 위치를 제약 함수 을 만족하는 곳으로 반복적으로 투영한다. 각 제약을 순회하며 위치를 조금씩 보정하는 가우스-자이델 방식2으로 여러 번(iteration) 돌린다. 위치 보정량은 제약의 그래디언트 방향으로 준다.
여기서 는 역질량이다. 무거울수록(질량 큼) 덜 움직이고, 이면 고정점이 된다. 투영이 끝나면 보정된 최종 위치로부터 속도를 역산한다.
이렇게 위치를 먼저 확정하고 속도를 나중에 뽑아내는 구조라서 “위치 기반”이라는 이름이 붙었다. 제약 해결기의 한 종류지만, 힘/임펄스가 아니라 위치를 직접 만지는 게 결정적 차이다.
3. 제약의 종류[편집]
PBD의 표현력은 결국 어떤 제약을 정의하느냐에 달려 있다. 대표적인 것들.
- 거리 제약(distance): 두 입자 사이 거리를 목표값 로 유지. 스프링 대신 이걸 쓰면 천의 늘어남을 잡는다. 가장 기본.
- 굽힘 제약(bending): 인접한 삼각형(또는 세 입자)이 이루는 각을 유지해 종이·천의 뻣뻣함을 표현.
- 부피 보존(volume): 사면체 요소의 부피를 유지해 연체(soft body)가 찌그러져도 물풍선처럼 부피를 지키게 함.
- 충돌·비침투(collision): 입자가 다른 물체를 파고들면 표면 밖으로 밀어냄. 충돌 감지와 짝을 이룬다.
- 형상 정합(shape matching): 변형된 입자 구름을 원래 형상의 강체 변환에 최소자승으로 맞춰 끌어당김. 강체~연체 사이를 매끄럽게 오간다.
제약을 몇 번 순회하느냐(iteration count)와 스티프니스 계수 로 재질의 뻣뻣함을 조절한다. 그런데 여기에 함정이 하나 있다.
4. XPBD — 강성에 물리적 의미를 부여하다[편집]
오리지널 PBD의 스티프니스 는 심각한 결함이 있었다. 반복 횟수와 시간 간격에 따라 실제로 느껴지는 뻣뻣함이 달라진다는 것. 같은 라도 iteration을 10번 돌리면 훨씬 딱딱해진다. 즉 는 물리량이 아니라 튜닝 노브에 불과했다. 아티스트가 “이 천 강성 얼마예요?”라고 물으면 답할 수가 없었다.
2016년 Miles Macklin 등이 내놓은 XPBD(Extended PBD)3가 이걸 정면으로 해결한다. 제약에 컴플라이언스(compliance) 를 도입하고, 라그랑주 승수 를 누적 추적한다.
이렇게 하면 강성이 반복 횟수와 무관하게 실제 영률(Young’s modulus) 같은 물리 상수에 대응된다. XPBD는 사실상 암시적 오일러 적분의 근사와 동치임이 보였고, 덕분에 PBD가 “그럴싸한 애니메이션”에서 “정량적으로 말이 되는 시뮬레이션” 쪽으로 한 발 더 갔다.
5. 응용과 확장[편집]
PBD/XPBD의 진짜 무기는 범용성이다. 하나의 제약 투영 프레임워크로 온갖 재질을 다룬다.
- 천·의류: 거리+굽힘 제약. 게임 캐릭터 망토가 PBD 아닌 경우를 찾기가 더 어렵다.
- 연체·근육: 부피 보존+형상 정합.
- 유체: Position Based Fluids(PBF)4는 SPH의 밀도 제약을 PBD 방식으로 투영해 비압축성을 강제한다. FLIP-PIC 유체와는 또 다른 계열.
- 강체 더미: 최근의 통합 솔버(Unified Particle Physics, NVIDIA FleX)는 강체·천·유체·입자를 전부 같은 입자+제약 표현으로 섞어 푼다.
성능 면에서도 GPU 친화적이라 GPU 컴퓨팅으로 수십만 입자를 실시간에 굴린다. Blender, Unity, Unreal, NVIDIA PhysX·FleX 등 주요 물리 엔진이 PBD 계열을 내장하고 있다. 정확도가 생명인 공학 해석(유한요소법 기반)에는 여전히 안 쓰지만, “60fps 안에 그럴듯하게, 그리고 절대 폭발하지 않게”가 목표라면 PBD가 국룰이다.
6. 관련 문서[편집]
7. Footnotes[편집]
-
Müller, M., Heidelberger, B., Hennix, M., & Ratcliff, J. (2007). Position Based Dynamics. Journal of Visual Communication and Image Representation. 이 논문 한 편으로 실시간 물리의 판이 갈렸다고 해도 과언이 아니다. 인용 수를 보면 “갈아 넣은 보람”이 있는 논문. ↩
-
야코비(Jacobi) 방식으로 모든 제약을 동시에 계산한 뒤 한꺼번에 갱신할 수도 있지만, 순차적으로 즉시 반영하는 가우스-자이델이 수렴이 빠르다. 대신 제약 순서에 결과가 살짝 의존한다는 게 흠. 세상에 공짜는 없다. ↩
-
Macklin, M., Müller, M., & Chentanez, N. (2016). XPBD: Position-Based Simulation of Compliant Constrained Dynamics. 오리지널 PBD의 “강성이 iteration 수에 따라 변한다”는 부끄러운 비밀을 저자 본인들이 스스로 고백하고 고친 셈이다. 자기 논문을 스스로 디스하는 학자의 용기. ↩
-
Macklin, M., & Müller, M. (2013). Position Based Fluids. 유체마저 PBD로 삼켜버린 논문. 이쯤 되면 PBD로 안 되는 게 뭔지 궁금해진다. ↩