PBD의 장점은 collision에 대한 응답이 쉽다는 것이다.
충돌 처리는 크게 두 단계에서 진행된다.
- (5)에서 외력을 적용할 때 기본적인 충돌을 처리한다. 이때, 기본적인 충돌을 미리 처리하는 이유는 계산 효율성, 안정성, 즉시 충돌 대응 등에서 이점을 가지기 때문이다.
- (8)에서 충돌에 대한 좀 더 정교한 처리를 constraint를 통해 처리한다.
(8)에서 처리하는 충돌에 대한 constraint들은 충돌이 감지되면 만들어진다. 이때 M_coll개의 constraint가 생성되는데, 이 개수는 매 step에서 얼마나 많은 정점이 충돌하는지에 따라 다르다.
이 논문은 static object와 dynamics 물체 사이에 일어나는 continuous, static 충돌과 dynamics 물체 사이에 일어나는 충돌을 모두 다룬다. 이때, 각 충돌하는 particle 하나하나마다 해당 충돌에 대한 constraint 하나가 만들어지고 constraint list에 추가된다.
Continuous collision handling (CCH)
CCH는 다음과 같은 상황을 다룬다.
x_i에 외력을 작용하여 update한 p_i가 static 물체를 뚫고 들어가는 상황이면 static 물체와 충돌이 일어난 것이다. 이를 판x_i와 p_i를 이었을 때 해당 선이 object의 표면과 접하는 지점을 q_c라고 하고, 해당 지점에서 표면의 법선 vector를 n_c라고 하면 다음 그림과 같다.
이 particle의 충돌에 의한 constraint function은 다음과 같다.
이 constraint는 k=1, type은 inequality(부등식)이다.
Static collision handling (SCH)
SCH는 CCH와 달리 x_i와 p_i를 잇는 선이 완전히 물체 안에 있는 경우를 다룬다.
이 선이 물체 안에 있는 경우는 x_i가 경계에 있었거나, rigid 물체 내에서 particle 자신의 예상 p_i가 자기 자신의 물체를 벗어나지 못한 경우 등에서 가능하다. 이 경우, p_i와 가장 가까운 물체 표면의 지점을 q_s라고 하고, q_s에서 법선 vector를 n_s라고 하면 다음 그림과 같다.
이 particle의 충돌에 의한 constarint function은 다음과 같다.
이 constraint는 k=1, type은 inequality(부등식)이다.
Collision handling between dynamic objects
위에서는 충격이 전달되지 않는 static 물체와의 충돌을 다뤘지만, dynamic 물체들끼리의 충돌은 충격이 다른 물체에게 전달되기 때문에 다른 물체가 받은 충돌에 대한 응답도 필요하다.
어떤 dynamic 물체의 point q_i가 다른 물체의 어떤 point 3개 p1, p2, p3가 이루는 삼각형 내부를 뚫고 지나갔을 경우, 이 상황을 충돌이 일어났다고 고려하고 이는 다음 그림과 같다.
이때, 다음과 같은 충돌 constraint가 만들어진다.
이 constraint 함수의 부호는 이 삼각형의 normal vector에 따라 달라진다. 위 constraint 식은 q_i가 평면의 어느 쪽에 있는지 계산하는 식이며, 이 constraint를 통해 q_i가 밖에 있도록 한다.
'논문 리뷰 > Position Based Dynamics' 카테고리의 다른 글
[Position Based Dynamics] 3.3. Constraint Projection (2) (0) | 2024.04.11 |
---|---|
[Position Based Dynamics] 3.3. Constraint Projection (3) (0) | 2024.04.09 |
[Position Based Dynamics] 3.3. Constraint Projection (1) (0) | 2024.04.02 |
[Position Based Dynamics] 3.2. The Solver (0) | 2024.03.19 |
[Position Based Dynamics] 3.1. Algorithm Overview (0) | 2024.03.10 |