최근, 컴퓨터 회사인 NVIDIA가 RT20 그래픽카드 시리즈를 내놓았습니다. 그래픽카드는 영상처리에 사용되는 컴퓨터 하드웨어로 요즘에는 영상처리 및 인식이 필수 기술인 자율자동차 산업에서는 눈여겨보고 있기도 합니다. 영상처리는 그래픽 데이터로부터 영상을 만들어내거나 이미 존재하는 영상을 분석·처리하는 기술을 말합니다. 이때 물리 현상을 그려내기 위해선 물리엔진이라는 소프트웨어가 사용됩니다.

물리엔진이란 무엇일까?

컴퓨터 소프트웨어에서 엔진이란 주축이 되는 핵심부를 일컫습니다. 소프트웨어 개발자는 이 엔진을 이용해 마치 레고 블록을 쌓아나가듯 자신이 원하는 프로그램을 만들어나가게 되죠. 데이터를 효율적으로 찾아주는 검색 엔진, 컴퓨터 그래픽으로 만들어낸 3차원 물체를 2차원 이미지로 변환해주는 렌더링 엔진 등 다양한 엔진이 있습니다. 이 중 물리 엔진은 현실의 물리 규칙들을 이용해 계산해줍니다.

예를 들어 최초의 컴퓨터라고 불리는 에니악(ENIAC)은 물체의 움직임을 계산하기 위한 물리엔진을 탑재하고 있었습니다. 군용 목적을 위해 개발된 에니악은 포탄의 장약, 발사 각도, 풍속 등에 따라 포탄의 궤도를 계산하는 역할을 수행했습니다.

현대에 만들어진 범용 물리엔진은 보다 다양한 물리 연산이 가능합니다. 물체가 받는 힘에 따라 (가)속도를 결정하거나 두 개 이상의 물체의 충돌을 감지하는 충돌 체크, 빛 알갱이가 물체에 부딪힐 때 빛의 궤도를 계산해 반사광·그림자 등을 만들어내는 레이 트레이싱까지 말입니다. 이렇듯 물리엔진은 특정한 상황에서 어떤 연산을 수행해야 현실을 모사할 수 있는지를 컴퓨터에게 알려주는 하나의 사전이라고 볼 수 있습니다.

▲ DMM을 이용하면 연체를 보다 사실적으로 모사할 수 있다. 사진은 연체로 취급된 벽에 강체가 부딪히는 상황을 모사한 것이다. 왼쪽은 충돌 전 벽의 구조를, 오른쪽은 부딪힌 강체에 의해 벽의 구성요소가 흩어지는 모습을 보여준다.
물리엔진이 물체를 인식하는 방법: 강체와 연체

물리엔진은 물체를 크게 강체(Rigid body) 또는 연체(Soft body)로 인식합니다. 강체란 부피와 질량을 갖고 있지만 외부 압력에 의해 찌그러지지 않는 등 부피가 일정한 물체를 말합니다. 과학자 돌턴이 생각했다던 원자 같은 존재인 것이죠. 강체의 운동을 모사할 때는 중력처럼 지속적으로 가해질 수 있는 힘이나 강체끼리의 충돌만을 고려하면 됩니다. 단단한 쇠공 두 개가 부딪히는 것을 모사할 때는 강체 두 개를 운동시키고 서로의 부피가 겹치는 부분이 발생하는 순간 서로 반대 방향으로 힘이 가해지도록 만듦으로써 그럴듯한 현실 모사가 가능합니다.

하지만 우리가 주변에서 접하는 대부분의 물체는 부피가 줄어들기도, 모양이 변하기도 하는 연체(soft body)입니다. 그 중 연체를 가장 간단히 표현할 수 있는 방법은 용수철/질량 모델을 사용하는 것입니다. 물이 강을 따라 흐르는 것을 표현한다고 합시다. 이때 사실적인 물의 움직임을 그려내기 위해서는 물 분자가 주변의 다른 분자와 이루는 상호작용을 계산해야 합니다. 이때 분자를 주위 입자와 용수철로 연결된 하나의 점이라고 여길 수 있습니다. 멀어지면 당기고 가까워지면 밀어내는 용수철이 실제 분자들 사이에 작용하는 힘과 유사하기 때문입니다. 물보다 가벼운 공기의 움직임도 비슷한 방식으로 계산이 가능합니다.

하지만 용수철/질량 모델은 비교적 밀도가 높고 단단한 연체를 모사하는데 한계가 있습니다. 이를 극복하기 위해 DMM(Digital Molecular Matter)이라는 기술이 등장하기도 했습니다. DMM은 컴퓨터 게임 제작을 위해 개발된 기법으로 모사하려는 물체를 서로 맞닿아있는 덩어리로 나누고 덩어리마다 질량과 탄성을 부여합니다. 사실 물체의 겉보기 특성은 내부의 탄성에 크게 의존하기 때문에 DMM을 이용하면 탄성 값을 조정하는 것만으로 단단한 금속에서부터 심지어는 말랑한 젤리까지 다양한 물체를 모사할 수 있다고 합니다.

어디서 어떻게 쓰이나?

물리엔진은 모사의 대상이 되는 물체를 연체로 취급할 때 더 정확한 계산값을 내놓지만 실제로는 사용되는 곳에 따라 물체를 강체로 취급하기도, 연체로 취급하기도 합니다. 모든 것을 연체로 모사하는 것은 상당한 계산량을 요구하기 때문입니다. 자동차 회사는 차량의 설계 과정에서부터  물리엔진을 이용해 모의 충돌 실험을 진행합니다. 결과에 따라 예상되는 자동차의 안전성이 달라지기 때문에 하나의 충돌을 계산하는데 수십초가 걸리더라도 보다 정확한 모사를 하게 됩니다.

하지만 게임과 같이 계산 결과가 실시간으로 필요한 경우도 있습니다. 보통 게임 속의 물리엔진은 1초에 수십번이나 새로운 장면을 계산해야 하기 때문에 게임 속의 물체를 강체로 취급하는 경우가 많습니다. 하지만 최근에는 게임 속의 물체를 연체로 취급해 건축물의 자연스런 붕괴 모습을 그려내거나 인물의 머리카락을 찰랑이게 만드는 식으로 게임의 생생함을 더하는 경우도 많습니다.


서지원 기자 sjw_101@uos.ac.kr

 

저작권자 © 서울시립대신문 무단전재 및 재배포 금지