주먹이 날아온다. 반사적으로 몸을 움직여 피한다. ‘휴’, 긴장한 탓인지 등에 땀방울이 송골송골 맺힌다. 침착하자. ‘나비처럼 날아 벌처럼 쏜다’는 전설의 복서 무하마드 알리의 말을 떠올리며 상대의 빈틈을 찾아 오른손 스트레이트를 날린다.
그런데 아무리 주먹을 맞아도 아프지 않다. 꿈일까? 머리와 등에 흐른 땀을 보니 꿈은 아니다. 얼마 지나지 않아 내 양손에 권투 장갑 대신 닌텐도 Wii의 리모컨이 들려있다는 사실을 깨닫는다. ‘권투 게임을 하고 있었지….’ 현실로 돌아오자 게임 속 캐릭터가 챔피언 벨트를 허리에 차고 있는 모습이 눈에 들어온다. 그래도 잠깐이지만 나는 분명 세계 최고의 권투선수였다.
사용자를 가상현실의 세계로 안내하는 Wii가 인기다. 가상현실 게임에서 사용자는 캐릭터와 하나가 되는 물아일체(物我一體)를 경험한다. 내 몸이 곧 ‘컨트롤러’이기 때문에 Wii를 즐기기 위해 어려운 조작법을 배울 필요도 없다. 남녀노소 누구나 쉽게 가상현실 게임을 즐길 수 있다. Wii는 사람들을 어떻게 가상현실로 안내할까? 닌텐도 Wii의 원리를 알아보자.
모션캡처 원리 역으로 이용
누구나 한 번쯤 게임을 하면서 나도 모르게 몸이 함께 움직인 경험이 있다. 예를 들어 자동차 경주게임을 한다고 하자. 게임 속 자동차가 오른쪽 코너를 돌면 나도 모르게 몸을 오른쪽으로 기울이고 왼쪽 코너를 돌면 몸을 왼쪽으로 기울인다. 게임 속 캐릭터가 나와 똑같이 움직이는 가상현실 게임에서 이런 현상은 더욱 두드러진다. 가상현실 게임에서 사용자는 최고의 스포츠 선수가 될 수 있고 판타지 소설의 주인공도 될 수 있다. Wii가 인기 있는 이유다.
Wii는 사용자가 한 손에 텔레비전 리모컨처럼 생긴 컨트롤러와 다른 한 손에 ‘눈차크’라는 컨트롤러를 들고 즐기는 새로운 형태의 게임이다. 이 리모컨만 있으면 권투장갑이나 테니스 라켓 같은 스포츠 장비가 없어도 야구, 골프, 볼링, 테니스 같은 다양한 스포츠를 즐길 수 있다. 주먹을 뻗거나 팔을 휘두르면 게임 속 캐릭터가 동작을 똑같이 따라 하기 때문에 사용자가 느끼는 몰입감도 크다. 화면 속의 테니스공을 받아치기 위해 있는 힘껏 팔을 휘두르다 보면 어느새 테니스 ‘여제’(女帝) 샤라포바 못지않은 괴성이 절로 나온다.
서브를 하려면 실제 테니스를 할 때와 똑같이 손을 머리 위로 쭉 뻗어서 정면방향으로 원을 그리며 내리면 된다. 그러면 Wii의 센서 바(Sensor bar) 양 끝에 있는 적외선 발광다이오드(LED)와 Wii 리모컨에 내장된 적외선 카메라가 사용자 팔의 위치를 파악한다.
Wii는 일반적인 모션캡처 방식을 역으로 이용했다. 기존에는 동작을 인식하기 위해서 움직이는 물체에 LED를 부착한 뒤 고정된 카메라 여러 대가 LED의 움직임을 인식했다. 하지만 이런 방식으로는 사용자가 게임을 할 때마다 LED로 된 장비를 입어야 하기 때문에 불편하다. 여러 사람이 같이 게임을 할 때 사용자끼리 몸이 앞뒤로 겹쳐 LED의 위치가 섞이면 카메라 한 대로는 개개인의 움직임을 구별할 수 없는 문제도 있다. 그래서 Wii는 LED를 센서 바에 고정시키고 사용자가 들고 움직이는 리모컨에 적외선 카메라를 달았다. 사용자는 리모컨 하나만 있으면 게임을 즐길 수 있어 편하고 LED의 수를 줄여 제작비용도 낮췄다.
위치와 가속도 분석해 동작 표현
적외선은 사람 눈에 보이지 않지만 리모컨의 적외선 카메라는 LED를 밝은 점으로 인식한다. LED의 위치정보를 삼각측량법으로 분석하면 리모컨을 들고 있는 사용자와 센서 바 사이의 거리를 알 수 있다. 카메라와 LED의 상대적인 위치 변화를 분석하면 사용자의 움직임도 알 수 있다. 카메라와 센서 바의 LED는 거울처럼 마주보고 있기 때문에 서로 반대로 이동한다. 만약 서브를 하기 위해 팔을 머리 위로 올리면 카메라가 인식한 LED의 두 점은 아래쪽으로 이동한다. 공을 치는 동작을 하며 팔을 내리면 이번에는 LED의 두 점이 위로 이동한다.
움직임을 더 정확히 인식하려면 사용자가 리모컨을 움직일 때 생기는 가속도를 알아야 한다. Wii는 ADXL330이라는 가속도계를 사용해 앞뒤, 좌우, 위아래 6방향의 가속도를 측정한다. 가속도계는 운동 중인 물체의 가속도를 측정하는 장치다. 가속도를 분석하면 움직임의 속도 변화를 인식해 게임 속에 다양한 동작을 표현할 수 있다. 예를 들어 팔을 빠르게 휘두르면 게임 속 캐릭터는 강력한 서브를 한다. 공을 짧고 약하게 치고 싶다면 팔을 천천히 휘두르면 된다.
팔을 앞으로 뻗거나 손을 들어 올리는 등 간단한 동작은 가속도 데이터나 적외선 LED의 위치를 분석하면 쉽게 인식할 수 있다. 하지만 동작이 더 복잡해지면 정확한 움직임을 파악하기가 쉽지 않다. 사용자가 공을 받아치기 위해 팔을 오른쪽 아래서 왼쪽 위로 크게 휘두른다면 앞뒤, 좌우, 위아래 각 방향으로 가속도와 리모컨 위치가 동시에 변한다.
이런 어려움을 해결하기 위해 Wii는 기계학습(Machine learning)을 이용한다. 기계학습은 게임하는 동안 사용자가 움직이는 ‘예상 목록’을 만들어 데이터를 수집한 뒤 복잡한 움직임이 발생하면 예상 목록과 비교해 동작을 인식하는 방법이다. 표현할 수 있는 동작 수가 정해져 있지만 정의된 동작만을 표현하므로 게임 속 캐릭터의 움직임이 자연스럽고 사용자 특성이나 개인에 따라 움직임의 차이가 생기는 문제도 줄일 수 있다. 동작을 분석하는 데 시간이 적게 걸려 사용자의 움직임을 빠르게 캐릭터로 표현할 수 있는 것도 장점이다.
그런데 사람들은 왜 가상현실 게임에 빠져들까? 지난해 8월 23일자 ‘사이언스’에 영국 런던대 헨릭 어슨 박사팀과 스위스 로잔 공대 올라프 블랑크 교수팀은 이에 대해 흥미로운 연구결과를 발표했다. 사람들이 가상현실에서 일종의 유체이탈을 경험한다는 것. 연구팀은 가상현실 공간에 실험자의 가상 캐릭터를 만들었다. 실험자는 가상 세계에 있는 자신의 뒷모습을 볼 수 있도록 만든 특수 안경을 썼다. 그리고 실제 실험자와 가상현실에 있는 캐릭터의 등을 동시에 막대로 찌르는 행동을 반복했다. 그 뒤 가상 세계에 있는 캐릭터를 망치로 때리자 실험자는 실제로 자신이 위협을 받는 것처럼 긴장하며 땀 분비량이 늘었다.
이는 시각과 촉각을 일치시키려는 뇌의 작용 때문에 발생한다. 등을 찌르는 자극이 반복해서 동시에 일어나자 실험자는 가상현실의 캐릭터가 자신인 것처럼 느낀 것이다. 연구팀은 “자아가 자신의 몸을 떠나 가상의 캐릭터로 옮겨간 것”이라고 말했다. 많은 사람들이 가상현실 게임에 열광하고 몰입감을 느끼는 이유는 일종의 유체이탈을 경험하기 때문은 아닐까? 가상현실 게임에서 우리는 ‘무하마드 알리’도 ‘샤라포바’도 될 수 있으니 말이다.
닌텐도 Wii의 동작인식 원리
1. 삼각측량
a : 센서 바 길이(20cm)
b : 카메라가 인식한 LED 거리
f : 카메라 초점거리
위쪽의 큰 삼각형과 리모컨 내부의 작은 삼각형의 닮음을 이용해 사용자와 센서 바 사이의 거리(x)를 알 수 있다.(x=$\frac{a·f}{b}$ )
2. 적외선 카메라
Wii 리모컨 앞부분에 있는 적외선 카메라는 센서 바의 적외선 LED를 인식한다. 인체나 주변의 다른 사물들도 적외선을 방출하거나 반사하지만 그 양이 적기 때문에 카메라는 LED의 위치를 쉽게 구분할 수 있다.
3. 움직임 인식
리모컨 안의 가속도계 ADXL330에는 작은‘진자’가 있다. 이 진자는 고정된 두 전극 사이를 움직인다. ADXL330은 진자에 달린 전극과 고정된 두 전극 사이의 거리(d) 변화에 따라 발생하는 전기용량의 차이를 분석해 가속도의 크기와 방향을 알아낸다. 전기용량(C)은 두 전극 사이의 거리가 가까워지면 커지고 거리가 멀어지면 작아진다. (C= , 가속도계의 전극 면적(S)과 유전상수(ε)는 일정). 좌우뿐 아니라 앞뒤, 위아래 6방향의 가속도를 같은 원리로 측정한다.
4. 센서 바(Sensor bar)
센서 바의 양 끝에는 적외선 발광다이오드(LED)가 각각 5개씩 있다.
LED는 테니스 게임을 하는 사용자 팔의 움직임을 추적할 때 기준점 역할을 한다. 사용자가 서브를 하며 팔을 위에서 아래로 내리거나 오른쪽에서 왼쪽으로 움직일 때 어느 방향에서든지 LED를 잘 인식할 수 있도록 LED 10개 모두 다른 방향을 향하고 있다.
5. 인식한 동작을 캐릭터로 표현하는 기술
서브, 스매시, 공이 한 번 튕기기 전에 받아치는 발리까지. 캐릭터가 표현할 수 있는 동작들을 미리 입력해 놓은 뒤 사용자의 움직임을 프로그래밍 된 동작과 비교해 가장 비슷한 동작을 표현한다. 게임 진행이 빠르며 동작이 자연스럽다.
공을 받아치기 위해 팔을 움직일 때 진자는 무게 때문에 팔과 반대 방향으로 움직인다(관성의 법칙).
진자가 움직이면 진자와 두 전극 사이의 거리(d1과 d2)가 변해 전기용량 (C1과 C2) 값이 달라진다. 이때 전기용량의 차이를 분석해 가속도의 크기와 방향을 알아낸다.