지식더하기 물리엔진 algodoo와 친해지기
모니터 속에 중력과 마찰력을 부여하여 뉴턴의 역학 법칙을 현실처럼 시뮬레이션하는 2D 물리 엔진 소프트웨어, 'Algodoo(알고두)'의 구동 원리를 소개한다.
편집부 · 2024년 3월 10일 · 읽는 데 4분
종이에 동그라미를 그리고 그 아래에 경사면을 그린다고 해서 동그라미가 바닥으로 굴러떨어지지는 않는다. 종이와 펜의 세상은 멈춰있는 2D 평면일 뿐이니까. 하지만 컴퓨터 모니터 속에 그린 동그라미가 진짜 사과처럼 아래로 툭 떨어지고, 줄에 묶어놓으면 진자처럼 왔다 갔다 하며, 바닥에 통통 튕겨 오르는 마법의 스케치북이 있다면 어떨까? 스웨덴의 대학생이 처음 개발하여 전 세계 물리 덕후들과 학생들을 미치게 만든 2차원 물리 샌드박스 시뮬레이터, 'Algodoo(알고두)'가 바로 그것이다. 마우스로 찍찍 그어 만든 장난감들에 생명을 불어넣는 알고두의 뼈대에는, 갈릴레오와 뉴턴이 평생을 바쳐 알아낸 우주의 위대한 고전 역학 방정식들이 초당 60번씩 계산되는 '물리 엔진'이 미친 듯이 돌아가고 있다. 모니터 속에서 창조되는 가상의 물리학 속으로 빠져보자.
그림에 중력을 부여하라, 역학 계산(F=ma)
알고두에서 마우스로 네모난 상자를 그려 공중에 띄우고 재생 버튼(▶)을 누르면 상자가 아래로 쿵 떨어진다. 알고두의 뇌(물리 엔진)가 이 상자 객체(Object)에 뉴턴의 제2법칙인 '가속도의 법칙(F=ma)'과 지구의 중력 가속도(9.8m/s²)를 강제로 쑤셔 넣었기 때문이다. 컴퓨터는 이 상자가 1초 뒤에, 2초 뒤에 어느 위치로 떨어질지 미적분 방정식을 이용해 1초에 무려 60번(60 프레임)씩 미친 듯이 계산하여 화면에 다시 그려낸다. 상자 겉에 빨간색 페인트를 칠하건 파란색 페인트를 칠하건 엔진은 관심이 없다. 물리 엔진에게 그림은 오직 질량(m)과 속도(v), 그리고 방향이라는 '수학적 덩어리'일 뿐이다.
물체가 겹치지 않게 막아라, 충돌 처리(Collision Detection)
물리 엔진에서 가장 빡세고 훌륭한 기술은 '충돌 처리'다. 상자가 떨어져서 바닥에 닿았을 때, 만약 컴퓨터가 멍을 때리면 상자는 바닥 그림을 그대로 뚫고 모니터 밑으로 영원히 사라져 버릴 것이다(버그). 알고두는 두 물체의 외곽선 픽셀들이 딱 1밀리미터라도 겹치는(충돌하는) 순간을 귀신같이 찾아낸다. 그리고 겹치는 순간 상자가 바닥을 누르는 힘만큼 바닥이 상자를 위로 밀어 올리는 '수직 항력(반작용)' 공식을 즉각적으로 발동시켜, 두 물체가 절대 서로를 뚫고 지나가지 못하게 밀어내 버린다. 만약 물체에 탄성력(탱탱볼의 성질) 값을 100%로 줘버리면, 상자는 충돌하는 순간 흡수한 에너지를 그대로 뱉어내며 영원히 바닥에서 통통 튀어 오르게 된다.
마찰력과 공기 저항, 현실의 찌꺼기들
우주 공간이 아니라면 물건을 밀었을 때 언젠가는 멈춰야 정상이다. 알고두가 미치도록 재밌는 이유는 물체 표면에 '마찰력'과 공기 중에 '공기 저항' 값을 마음대로 조작할 수 있다는 것이다. 나무토막 두 개를 비벼댈 때 삐걱거리며 안 미끄러지는 끈적한 마찰 계수를 넣으면 기어(톱니바퀴)가 기가 막히게 맞물려 돌아간다. 반대로 마찰력을 '0'으로 설정해 버리면 얼음판 위의 스케이트처럼 한 번 밀면 화면 끝까지 영원히 미끄러져 날아간다. 이런 물리적 변수들을 조작하여 사용자들은 모터 하나 없는 투석기를 만들고, 도미노를 세우며, 완벽하게 돌아가는 가상의 자동차 엔진을 조립하기도 한다.
수백만 개의 물방울, 유체 역학의 흉내
알고두의 백미는 고체뿐만 아니라 '물(액체)'까지 시뮬레이션한다는 점이다. 허공에서 브러시로 물을 마구 칠하면 찰랑거리는 물웅덩이가 생긴다. 이것은 물이 아니라, 서로 끌어당기는 힘(표면 장력)과 부딪히는 척력을 가진 수백만 개의 미세한 '작은 구슬(입자)'들을 한꺼번에 쏟아부어 물처럼 보이게 속이는 '입자 기반 유체 시뮬레이션'이다. 네모난 상자를 이 물웅덩이에 던지면, 빽빽한 물 구슬들이 밀어 올리는 '부력'을 계산해 나무 상자는 둥둥 뜨고 무거운 쇠공은 꼬르륵 가라앉는 기막힌 유체 역학을 감상할 수 있다. ![떨어지는 디지털 사과의 무대 뒤에서 1초에 60번 뉴턴의 운동 법칙(F=ma)을 빠르게 계산하는 컴퓨터 코드의 클로즈업](https://image.pollinations.
이어서 읽기