2.5 Tunneling과 CCD
2.5.1 왜 얇은 물체를 통과하는가
이산 충돌 검출(discrete collision detection)은 각 step의 위치에서 겹침을 검사한다. 반지름 인 작은 물체가 한 step 동안 만큼 이동하고 그 거리가 물체 두께보다 크면, 이전 pose와 다음 pose 모두에서 충돌하지 않은 채 장애물을 건너뛸 수 있다. 이것이 tunneling이다.
다음 조건은 위험 신호다.
여기서 은 가장 얇은 충돌 형상의 특성 길이, 는 보수 계수다. 이 식은 PhysX 내부 판정식이 아니라 설계자가 CCD 필요성을 판단하기 위한 휴리스틱이다.
2.5.2 CCD 적용 전략
PhysX/Omniverse는 sweep 기반 CCD와 speculative CCD를 제공한다. 공식 Omniverse PhysX Rigid Bodies는 sweep 기반 방식이 선형 이동 경로를 검사하고, speculative 방식이 motion에 따라 contact offset을 조정한다고 설명한다. sweep 기반 CCD는 scene과 body 양쪽에서 활성화해야 한다. speculative 방식은 빠른 각운동에도 유용하지만 ghost contact 가능성을 평가해야 한다.
권장 순서는 다음과 같다.
- 실제 scale과 physics timestep을 먼저 확인한다.
- collider가 지나치게 얇다면 물리적으로 허용되는 범위에서 두께를 조정한다.
- 고속 또는 얇은 필요한 body에만 CCD를 켠다.
- 같은 initial state와 seed로 penetration rate와 step time을 비교한다.
- CCD를 켰다고 collision filter나 contact offset 문제를 감추지 않는다.
CCD는 무료가 아니다. 빠른 body가 많을수록 검사 비용이 커지고 일부 경로는 CPU에서 처리된다. 또한 sweep 기반 CCD는 주로 선형 운동을 고려하므로 빠르게 회전하는 긴 물체에는 speculative CCD 또는 작은 timestep이 더 적합할 수 있다.