U E D R , A S I H C RSS

이민석/물리엔진 (rev. 1.7)

이민석/물리엔진

Ian Millington의 책 Game Physics Engine Development를 보고 만드는 3D 게임 물리 엔진. 게임 물리 엔진이기 때문에 실시간 강체 시뮬레이션을 중점적으로 다룬다.

이 책의 온라인 사이트: http://procyclone.com/

게임 물리 엔진은 크게 세 개로 나눈다.
  1. 입자 엔진(particle engine)
  2. 질량 집합체 엔진(mass aggregate engine)
  3. 강체 엔진(rigid body engine)

입자 엔진

입자 엔진은 모든 물체를 크기 없는 입자(particle)로 표현한다. 입자에 힘(force)을 작용하면 입자가 움직인다. 고등학교 물리 시간에 단일 물체의 가속 운동이니 힘의 작용 따위를 배웠을 텐데 단순히 그런 물체를 동시에 수천 개 움직일 수 있다고 보면 된다. 사실 충돌 처리도 없어서 물리 엔진이라고 부르기에는 조금 그렇다.

particle_engine_sample_00.png
[PNG image (37.62 KB)]


particle_engine_sample_01.png
[PNG image (57.84 KB)]


질량 집합체 엔진

질량 집합체 엔진은 입자들을 용수철(spring) 또는 막대(rod) 같은 구속(constraint)으로 묶어 하나의 물체처럼 시뮬레이션할 수 있다. 예를 들어 하나의 상자 집합체는 점 4개와 막대 6개로 구성된다.

현실에서 물체는 수많은 입자들로 구성되는데, 질량 집합체 엔진은 물체의 핵심 입자들만 가지고 그 물체를 기술하려는 접근법으로 이해할 수 있다.

질량 집합체 엔진에서는 물체의 회전을 따로 구현할 필요가 없는데 가령 모서리의 한 입자를 잡고 끌면 나머지 점들이 따라오면서 자동으로 회전되기 때문이다.

이해하기도 구현하기도 매우 쉬우나 물체의 골격만으로 어설프게 시뮬레이션하기 때문에 실행해보면 물체가 찌그러진다든지 움푹 패인다든지 조금씩 변형이 일어난다. Locoroco라면 모를까 의자를 바닥에 집어 던졌는데 의자가 고무공처럼 출렁이는 것을 바라지는 않을 것이다.

mass_aggregate_engine_sample_00.png
[PNG image (57.12 KB)]

입자 20개를 생성하고 모든 쌍을 용수철로 연결하면 자연스레 균형을 이루어 안정된 구조로 수렴한다.

mass_aggregate_engine_sample_01.png
[PNG image (62.92 KB)]

사각형은 입자 4개와 막대 6개, 삼각형은 입자 3개와 막대 3개로 구성된다.

mass_aggregate_engine_sample_02.png
[PNG image (44.79 KB)]

몸의 관절들을 입자로 보고 막대로 연결하면 플래시 게임 DeadDrunk의 그 졸라맨을 만들 수 있다. 지 혼자 춤사위

강체 엔진

강체 엔진은 내가 아직 완성을 못 해서
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:30:31
Processing time 0.0355 sec