논문 리뷰/Position Based Dynamics

[Position Based Dynamics] 3.1. Algorithm Overview

남하욱 2024. 3. 10. 04:43

이전 글에 이어서..

[Position Based Dynamics] Related Work

Notation

Dynamic object

  • N개의 정점을 가짐
  • M개의 constraints를 가짐
  • 임의의 i번째 정점은 질량 m_i, 위치 x_i, 속도 v_i를 각각 가짐

Constraints

  • 임의의 j번째 constraint에 대해
  • Cardinality n_j : j번째 constraint의 명령을 받는 정점의 개수
  • Function C_j : constraint는 3차원이기 때문에 3n_j 차원에서 스칼라로 가는 함수 (j번째 constraint의 영향을 받는 정점들이 스칼라 값으로 바뀜)
  • Stiffness parameter k_j ∈ [0 . . . 1] 라고 정의
  • Type은 equality or inequality 두 가지로 정의
    • equality : constraint function이 0을 만족해야 함
    • inequality : constraint function이 0보다 크거나 같아야 함

 

Algorithm Flow

※ p는 계산 중간에 계산된 position 값

(1)-(3) : 에서 값을 초기화

(5)-(7) : 에서 외부 힘이 적용된 position을 explicit time integration method인 오일러 방법으로 계산하여 position을 추정한다.

(9)-(11) : 내부 힘을 모방하는 constraint를 사용하여 position을 직접적으로 수정한다.

(12)-(15) : 계산한 position을 이용하여 속도를 구하고, position 값을 update한다

 

자세히 설명

(13)에서는 이전 단계에서 얻은 추정치(p)로 속도를 계산하여 업데이트한다. 이는 속도를 현재 위치와 마지막 위치의 차이로 implicitly(암시적으로) 계산 한다는 점에서 Verlet 방법 및 [Jak01]과 일치한다.

 

그러나 속도를 직관적으로 조작하기도 한다. (5),(6),(16)에서 속도를 조작한다.

(5)에서는 position constraint로 변환될 수 없는 일부 외부 힘을 시스템에 연결한다.

(6)에서는 필요한 경우 속도를 감쇠할 수 있다. Section 3.5에서 물체의 강체 mode에 영향을 주지 않고 global damping(전역 감쇠)를 추가하는 방법이 설명되어 있다.

(16)에서는 마찰, 반발 계수에 따라 충돌하는 정점의 속도를 수정한다.

 

주어진 제약조건 C1, ... , Cm은 시뮬레이션 전체에 걸쳐서 고정된다. 또한, (8)에서는 고정 constraint 외에도 Mcoll 충돌 constraint를 생성한다. (10)의 projection 단계에서는 고정 constraint와 충돌 constraint 모두를 고려한다.

 

이 방식은 무조건적으로 안정적이다. 왜냐하면, (13),(14)의 계산하는 방식에서 기존의 explicit(명시적인) 방식처럼 맹목적으로 이동되는 정점을 추론하지 않고, constraint solver에 의해 물리적으로 유효하게 계산된 정점으로 이동하기 때문이다. 유일한 불안정한 요소는 유요한 위치를 위해 Newton-Raphson 방법을 사용하는 solver이다 (Section 3.3 참조). 이 solver의 안정성은 time step 크기가 아니라 constraint function 모양에 따라 달라진다.

댓글수0