Ian Millington의 책 Game Physics Engine Development를 보고 만드는 3D 게임 물리 엔진. 게임 물리 엔진이기 때문에 실시간 강체 시뮬레이션을 중점적으로 다룬다.
이 책의 온라인 사이트: http://procyclone.com/
게임 물리 엔진은 크게 세 개로 나눈다.
1. 입자 엔진(particle engine)
2. 질량 집합체 엔진(mass aggregate engine)
3. 강체 엔진(rigid body engine)
입자 엔진은 모든 물체를 크기 없는 입자(particle)로 표현한다. 입자에 힘(force)을 작용하면 입자가 움직인다. 고등학교 물리 시간에 단일 물체의 가속 운동이니 힘의 작용 따위를 배웠을 텐데 단순히 그런 물체를 동시에 수천 개 움직일 수 있다고 보면 된다. 사실 물리 엔진이라고 부르기에는 조금 그렇다.
질량 집합체 엔진은 입자들을 용수철(spring) 또는 막대(rod) 같은 구속(constraint)으로 묶어 하나의 물체처럼 시뮬레이션할 수 있다. 예를 들어 하나의 상자 집합체는 점 4개와 막대 6개로 구성된다.
[PNG image (3.05 KB)]
현실에서 물체는 수많은 입자들로 구성되는데, 질량 집합체 엔진은 물체의 핵심 입자들만 가지고 그 물체를 기술하려는 접근법으로 이해할 수 있다.
질량 집합체 엔진에서는 물체의 회전을 따로 구현할 필요가 없는데 가령 모서리의 한 입자를 잡고 끌면 나머지 점들이 따라오면서 자동으로 회전되기 때문이다.
이해하기도 구현하기도 매우 쉬우나 물체의 골격만으로 어설프게 시뮬레이션하기 때문에 실행해보면 물체가 찌그러진다든지 움푹 패인다든지 조금씩 변형이 일어난다. Locoroco라면 모를까 의자를 바닥에 집어 던졌는데 의자가 고무공처럼 출렁이는 것을 바라지는 않을 것이다.
강체 엔진은 내가 아직 완성을 못 해서 보류