Physics Engine in a Nutshell

2011 Dec. written by 이주형 (Lee Ju Hyung)

Kinetics & Dynamics

  • 운동학 (Kinetics): 위치 -> 속도 -> 가속도
  • 동역학 (Dynamics): 가속도(힘) -> 속도 -> 위치

Newton’s Physics Law

뉴턴 물리 법칙을 아래와 같은 1계 상미분 방정식으로 표현할 수 있다.

    \[\frac{d}{dt} \begin{bmatrix} X \\ v \end{bmatrix} = \begin{bmatrix} v \\ F / m \end{bmatrix} = \begin{bmatrix} v(t) \\ F(t, X, v) / m \end{bmatrix}\]

위 식의 해는 간단한 힘들이 주어진다면 해석적(analytical)으로 풀 수 있겠지만, 복잡한 시뮬레이션에서는 모든 힘들을 식으로 구하는 것이 거의 불가능하다. 따라서 각 시점의 F(t, X, v)v(t) 값을 이용해서 수치적(numerical)으로 풀어야 한다.

Numerical Integration

  • Euler’s Method
  • Runge-Kutta Method (RK2, RK4)
  • Implicit Method
  • Semi-Implicit Method
  • Verlet Method

Rigid Body Properties

Linear Rotational
위치(Position) 방향(Orientation)
속도(Velocity) 각 속도(Angular Velocity)
힘(Force) 돌림 힘(Torque)
선 운동량(Momentum) 각 운동량(Angular Momentum)
질량(Mass) 관성 텐서(Inertia Tensor)

Shapes Representation

  • 간단한 바운딩 볼륨: Sphere, AABB, Cylinder, Capsule, OBB
  • DOP (Discrete Oriented Polytope)
  • Convex & Concave

Phases

  1. Broad Phase
    • Coarse Collision Detection (Grid, Tree, Spatial Sorting)
  2. Narrow Phase
    • Collision Detection
    • Contact Generation
  3. Resolution Phase
    • Constraints Resolution
    • Resting Contact

Collision Detection

  • Algorithm: SAT, GJK/EPA, AABB Tree, OBB Tree, KD Tree
  • Swept Test (CCD), Multisampling

Contact Generation

  • Contact Point
  • Contact Normal
  • Penetration Depth

Constraints Resolution

  • 가속도 기반 Solver (Penalty-force Method) : force 적용
  • 속도 기반 Solver : impulse 적용
  • 위치 기반 Solver : 위치 보정

Demo

Leave a Reply

Your email address will not be published. Required fields are marked *