IT/Computer Science

[The Physics Engine] 물리엔진의 기본

FintechPark 2022. 5. 20. 18:00

최초의 컴퓨터 에니악은 탄도를 계산하기 위한 목적으로 만들어졌다. 세상의 물리를 컴퓨터 속으로 구현한 것이다. 이처럼 게임, 영화, 가상현실에서 물체에 작용하는 물리 현상 ex) Gravity or Inertia을 처리하는 엔진을 물리 엔진이라 한다.

 

게임 부문에서는 '하프라이프 2'가 물리 엔진에 큰 업적을 끼쳤다. 기존에는 게임 플레이어가 할 수 있는 역할이 고정되어 있었는데, 하프라이프 2에서 비교적 자유로운 물리 엔진을 오브젝트에 모두 적용하면서 신박한 플레이가 가능해졌다. 예를 들자면 낙하해서 적을 깔아뭉개 죽이는 등의 플레이도 가능했다. 물리 엔진은 현재는 거의 모든 가상현실 게임에 쓰이고 있다.

 

4진 트리(평면)와 8진 트리(공간) 등이 Broad Phase에서 광역으로 충돌 가능성을 탐지하며, 더 좁은 지역 탐지 단계에서는 분리 축 이론, GJK 알고리즘 등을 통해 충돌 해소를 위한 기하학적인 분석을 한다. 마지막으로 물리 문제 해결을 위해 현대 물리엔진 Constraints Base(야코비안 사용)나, 단순한 물리엔진인 Tile 등이 사용된다. 반 암시적 오일러 적분법이 주로 사용되는데, 사교 적분이고 일반적 오일러 방법보다 더 좋은 결과를 얻을 수 있다. (에너지를 거의 보존한다)


 


 

위와 같이 안정한 시스템과 불안정한 시스템 모두 정확히 시뮬레이션이 가능해서, 일반적 오일러, 역 오일러 방법보다 뛰어나다.