안녕하세요, 제 이름은 조이 캠벨(Joey Campbell)로 아일랜드 코크에서 VR 교육자, 개발자 겸 연구자를 하고 있으며, 현재는 브리스톨 대학교의 브리스톨 인터랙션 그룹(Bristol Interaction Group)과 함께 박사 과정을 밟고 있습니다. 제 연구의 주요 주제는 생리적 통제를 받는 아바타에 중점을 둔 물리적 운동과 비디오 게임(일명 엑서게이밍 - ExerGaming)에 관한 것입니다.
저는 모두 언리얼 엔진으로 개발하여 지금까지 진행해온 두 연구 프로젝트에 대해 이야기해보고자 합니다:
프로젝트 01. 베리타스(Project 01. VeRitas)
HMD를 활용해 시각적으로 더 풍부해진 몰입 환경과 실시간 생리적 피드백을 기반으로 한 상호작용은 HCI(Human Computer Interaction)와 격렬한 신체 활동 분야에서 새로운 연구법을 만들어 냈습니다. 우리는 몰입, 물리적 저항과 생리적 변조를 결합한 적응 중재를 통해 격렬한 신체 활동 수행에 대한 동기부여가 가능한지 알아내기 위해 이같은 발전을 설계 접근에 사용했습니다. 베리타스는 플레이어들이 전통적인 엑서게이밍과 관련된 낮은 수준의 격렬한 신체 활동을 능가하도록 동기를 부여하는 식으로 이 주제들을 다루었습니다.
우리는 사용자가 고정형 와트바이크(Wattbike)의 페달을 밟으면서 그 심박수로 아바타의 속도와 주행거리를 통제하는 VR 자전거 게임을 디자인했습니다. 속도는 사용자의 심박수에 영향을 받고, 방향 조정은 표준 게임패드로 조절하도록 했습니다. 이 게임의 목표는 제한 시간 60초 내에 가상 세계에서 최대한 먼 거리를 달리는 것이었습니다.
조이 캠벨이 비메오(Vimeo)에 올린 베리타스 영상.
설계
게임의 출력은 사용자의 심박수를 통해 가상의 자전거 속도로 간접 매핑됩니다. 사용자가 페달을 밟는 속도를 가상 사이클리스트가 페달 밟는 속도에 매핑하는 식이었다면 자전거와의 상호작용적 연결에 훨씬 실감이 났겠지만, 우리는 변조된 생리 데이터가 에너지 소비에 미치는 영향을 관찰하고 싶었습니다. 그렇기에 심박수가 근본적인 게임 컨트롤의 역할을 하도록 만든 것입니다.
피드백의 목적상 심박수와 가상의 주행거리, 자전거 장비와 남은 시간을 보여주는 GUI를 디자인해야 했습니다. HMD에 있던 전통적인 2D 막대형 GUI는 사용자에게 멀미를 일으킬 수 있어서, 아바타에 HUD 요소를 3D 위젯으로 부착했습니다. 이것은 가상 멀미를 줄여주고 중요한 피드백을 눈에 잘 띄는 위치에 계속 유지시켜 줍니다.
또한 개발 시간을 아끼기 위해 언리얼 엔진 마켓플레이스에서 이미 제작된 게임 배경과 자전거 리그를 구입했습니다. 사이클리스트 캐릭터는 어도비 퓨즈(Adobe Fuse)로 디자인하여 언리얼 엔진으로 가져온 다음, 자전거 모델과 합쳤습니다.
생리 데이터를 게임 변수로 사용하기 위해서는 심박수를 실시간으로 측정해야 했습니다. 정확하지 않은 센서 데이터와 비현실적인 심박 모니터로 인해 설계를 몇 번이나 수정해야 했습니다. 우리는 펄스 센서(Pulse Sensor)와 이지 펄스 모니터(Easy Pulse Monitors)를 가지고 실험을 했지만, 센서를 자전거 게임에 적합하지 않게 배치해서 정확하지 않은 신호를 감지했기 때문에, 결과도 비현실적으로 나왔습니다(사용자는 자전거의 핸들을 붙잡은 동시에 게임패드를 제어해야 했기 때문에, 두 장비를 모두 사용자의 손가락에 착용했습니다). 결국 우리는 UE4Duino 플러그인을 사용해, 심박 데이터를 아두이노(Arduino) 보드를 거쳐 언리얼 엔진으로 무선 전송하도록 재설정한 폴라 심박 모니터(Polar Heart Rate Monitor)를 사용했습니다. 뚜렷한 지연은 없었으며 센서 신호도 정확했습니다. 반경 2미터 이상 멀어지면 모니터의 신호가 약해졌기 때문에, 리시버를 자전거 의자 아래에 부착했습니다.
매핑 블루프린트 시스템은 심박 데이터 입력을 기반으로 가상 자전거의 속도를 동적 조정하기 위해 개발되었습니다. 가상 자전거에는 12개의 기어가 있었으며(1단 기어가 가장 느렸고, 12단 기어가 가장 빨랐습니다), 분당 심박수 신호 40~50은 1단 기어를, 50~60은 2단 기어를, 60~70은 3단 기어를, 170 이상은 12단 기어를 활성화합니다(심박수는 기어의 속도에 결부되므로, 곧 주행거리에도 결부됩니다). 가상 자전거의 기어 시스템, 속도와 주행거리는 모두 센서 신호 입력에 결부되었습니다. 이는 즉 이론상으로 부적합한 사4용자가 실제로는 더 많은 운동량을 내는 적합 사용자보다 가상 주행거리를 더 많이 산출할 수도 있다는 뜻이었으므로, 우리는 운동량 측정 단위로만 주행거리를 산출하는 자전거가 아니라 실제 에너지 소비량을 측정할 수 있는 운동용 자전거를 선택했습니다.
변조
기존에 엑서게이밍에서 생리적 피드백 변조를 이용한 연구 사례는 찾아볼 수 없었기 때문에, 가장 적절한 심박수 과장 수준 같은 것은 존재하지 않았습니다. 우리는 사용자가 게임 플레이 중에 보게 될 심박수를 적절하게 변조할 비율을 정하기 위해 선행 테스트를 진행했습니다. 실제 심박수에 각각 +10%, +20%, +30%, 0%, -10%, -20%, 그리고 -30%의 변화를 주어 사용자에게 보여주는 7개 버전의 게임이 만들어졌습니다. 사용자 한 명이 각 게임 간에 2분의 쉬는 시간을 두고 (무작위 순서로) 7개의 게임을 플레이했고, 시스템에 대한 피드백을 받았습니다. 사용자 답변에 따르면 자신의 심박수를 증가시켰을 때는 증가율에 상관없이 그 사실을 깨닫지 못했지만, 심박수를 감소시켰을 때는 감소율이 20%를 초과하자 심박 모니터가 부정확할 수도 있겠다 생각했다고 했습니다. 이 피드백을 기반으로 우리는 감소 변조를 20% 수준으로 ‘제한하기로’ 결정했습니다. 우리는 BPM을 감소시켜서 보여주면 신체활동을 더 격렬하게 하도록 동기가 부여될 것이라는 가설을 세웠습니다.
물리 저항
우리는 사용자가 깨닫지 못하는 사이에 저항을 조정해 부위별 운동량을 변화시키는 ‘간접 작용’의 효과 조사에도 관심이 있었습니다. 와트바이크는 자전거 페달을 밟는데 필요한 운동량을 증가시킬 수 있는 7단 물리 저항 다이얼을 가지고 있습니다. 우리는 사용자가 저항의 변화를 의식하게 하고 싶지 않았기 때문에, 사용자의 주의를 끌지 않고도 원격으로 저항을 바꿀 수 있는 도르래 시스템을 만들었습니다.
변수
독립 변수로는 몰입(VR 헤드셋 혹은 평면 스크린), 저항(기어 구동 혹은 비구동), 그리고 변조(진짜 심박과 가짜 심박)의 세 개가 있었습니다.
우리는 Power Output(힘의 산출량)과 Rate of Perceived Exertion(운동 자각도)라는 두 가지 측정을 주로 사용했습니다. 이 중 사용자가 만들어내는 첫번째 독립 변수는 매 시행마다 와트에서 측정되어 와트바이크에 의해 저장되는 ‘절대적인’ 힘이었습니다. 또한 우리는 각 퍼포먼스의 특이치를 제외하기 위해, 이 절대적인 힘을 각 조건의 퍼센테이지에 맞춰 조정해 ‘상대적인’ 힘 값을 산출하고, 그 조건에서 나온 퍼포먼스와 해당 참가자가 모든 시행에 걸쳐 보여주었던 평균 퍼포먼스를 비교 측정했습니다.
프로젝트 02: “버추얼 콜리전”(Project 02: “Virtual Collisions”)
이전 프로젝트(베리타스)에 이어, 실물의 저항을 직접 실시간 동적 조정할 수 있는 엑서게임을 개발하고 싶었습니다(실제 물체를 사용해서 몰입 게임 속 가상 아바타를 조종하고, 게임 엔진이 실제 물체의 기동 용이성을 통제할 수 있게 하자는 아이디어였습니다).
조이 캠벨이 비메오에 올린 Virtual Resistance 영상.
신체 컴퓨팅
프로젝트 시작 당시 우리는 ‘이미 만들어진 제품’을 구입해 장비로 사용할 수 있을 거라고 생각했지만, 얼마 가지 않아 필요한 장비를 직접 만들어야 한다는 사실을 깨달았습니다. 우리는 이런 유형의 저항(전자기, 유압, 기압)을 구현하기 위해 다양한 종류의 기술들을 검토했으며, 마찰력이 구현에 가장 덜 복잡하면서 가장 효율적이라고 결정했습니다. 그렇게 다양한 조합(스텝퍼 모터, 리니어 액추에이터와 연속 회전 서보)을 시도해보았습니다. 지연 및 동력과 관련된 문제들이 있었지만, 결국 UE4Duino 플러그인으로 언리얼 엔진에 통합할 수 있는 하이토크 서보(cm당 30kg)로 결정했습니다.
유아용 세발자전거 브레이크 핸들에 달린 서보를 테스트했으며, 뚜렷한 지연은 전혀 없이 고정 및 저항 수준을 점점 증가시킬 수 있도록 조정할 수 있었습니다. 하지만 아두이노 보드에는 하이토크 서보를 사용할 수 있는 충분한 동력이 없어서, 이를 극복하기 위해 충전 가능한 골프 카트 버기 배터리를 브레드보드에 연결했습니다.
현실과 가상 세계의 싱크 일치
실물 게임 컨트롤러가 바퀴가 달린 차량의 형태로 만들어질 것이란 점은 알고 있었지만, 이 컨트롤러와 게임 속 오브젝트의 움직임 및 위치 싱크를 일치시킬 방법은 알지 못했습니다. 그래서 실제 사무실 의자와 이 의자를 임포트한 .obj 모델을 가지고 테스트를 했습니다. VR 폰 클래스를 만들어 바이브 모션 컨트롤러 태그와 스태틱 메시를 추가하고 가상 의자의 중앙에 모션 컨트롤러를 배치했습니다. 그런 다음에는 실제 의자에서 대응하는 위치에도 실제 바이브 컨트롤러를 고정했습니다. 실제 의자와 가상 의자의 크기를 맞추기 위해 약간의 조정 작업을 했고, HTC 바이브 샤프론(Vive Chaperone)의 범위 내에서 바닥과 경계 구역을 정의하는 작업도 했습니다:
조이 캠벨이 비메오에 올린 VR과 실제 의자의 움직임
반-테더링(De-Tethering)
위에서 보듯, 엑서게이밍에서 케이블은 움직임을 제약해(저항과 모션 플레이는 아주 중요한 역할을 합니다) 게임의 흐름을 방해하는 경향이 있습니다. 이런 장애를 극복하기 위해, 우리는 12V 8000mAh 충전 가능 리튬 이온 배터리와 바이브(Vive) 연결 박스에 전원을 공급하기 위한 어댑터를 사용해, 장비를 보다 움직이기 쉽게 구성했습니다. 또한 데스크탑 컴퓨터를 HDMI 포트가 달린 에일리언웨어(Alienware) 노트북으로 대체했습니다.
마지막으로는 실제 및 가상 속 사무실 의자를 휠체어 모델로 대체하기로 결정했습니다. 휠체어의 브레이크에 조정, 재배치 및 윤활 작업을 해주어 케이블 마찰을 가능한 한 최소화했습니다. 서보 모터는 알루미늄 차체에 고정한 서보 받침대에 장착했습니다.
콜리전 감지(Collision Detection)
실제 의자의 움직임은 현실과 가상 간에 완벽하게 싱크되었지만, 휠체어 모델과 씬 내에 배치된 피직스 활성화 스태틱 메시는 서로 콜리전이 전혀 일어나지 않았습니다. 휠체어의 스태틱 메시 에디터를 열고 Collision Complexity(콜리전 복잡도)를 ‘Use Simple Shapes As Complex(단순 형태를 복합으로 사용)’으로 바꾼 다음에야 콜리전이 발생했습니다. 하지만 이 방법으로 스태틱 메시와의 콜리전은 활성화했지만, 블루프린트 이벤트는 아무것도 발동시킬 수 없었습니다.
우리는 작업을 하면서 메시 에디터 창에서 휠체어의 콜리전 설정을 ‘no collision(콜리전 없음)’으로, Collision Complexity는 ‘project default(프로젝트 기본 설정)’으로, 휠체어의 VR 폰 블루프린트 설정은 ‘no collision’으로 리셋했습니다. VR 폰 블루프린트 창 좌상단의 “컴포넌트 추가” 버튼으로 lsquo;Box Collision(박스 콜리전)’을 추가하고, 크기와 위치는 휠체어 모델에 맞추어 조정했습니다. 설정은 ‘Block All’과 “Generate Overlap Events”, 그리고 “Hit(히트) events”를 활성화했습니다. 이 Box Collision은 컨트롤러 이하 의자 노드의 계층구조와 동일한 레벨로 드래그했습니다.
콜리전 감지를 활성화하니, 이제 브레이크의 저항을 가상 오브젝트가 몰입 환경 속에서 시뮬레이션중인 현실과 동일하게 점차 증가하는 식으로 조정할 수 있었습니다.
요약
우리는 가상 모델을 실제 세계에서 대응하는 물체에 매끄럽게 오버랩하여, 저항을 가상 세계 속에 통합했습니다. 가상 세계에 대응하는 실물을 도입해(VR HMD로 보고 실제 세계에서 느끼는) 더 높은 실존감을 만들어냈으며, 자동으로 동적 저항을 만들어내는 이동 시스템도 있어서 아바타와 가상 오브젝트가 충돌할 경우 게임 엔진이 그 충돌감을 실제로 시뮬레이션 할 수 있습니다.
앞으로의 연구 계획은 생리적 반응과 같은 양적 데이터의 수집 및 분석을 통해 이런 유형의 실물-가상 인터페이스와 격렬한 운동간의 관계를 탐구하는 데 초점을 맞출 것입니다. 예를 들면, 우리는 실물-가상 구현 환경에서 신체 활동을 수행하는 도중 인간과 기계 촉각을 분리한다면, 신체가 내는 힘의 증가를 촉진할 수도 있을 것이라고 예측하고 있습니다. 다음 연구에서는 마이오웨어 반사 센서(MyoWare flex sensor)를 사용자의 종아리 근육에 배치하고 신체가 내는 힘과 동적 저항 간의 관계를 검사하는 몇 가지 테스트를 진행할 것입니다. 또한 우리는 실시간 운동 및 저항 데이터가 (HMD의) HUD에 보여지는 경우와 보여지지 않는 경우를 바탕으로 사용자의 운동 수준을 비교하려고 합니다.
언리얼 엔진에 대한 아무 제약이 없는 접근과 알맞은 가격의 VR 하드웨어의 결합은 우리와 같은 연구자들에게 한정된 예산만으로도 강렬한 몰입 환경을 만들 수 있게 해 주었습니다. 계속해서 성장하고 있는 그래픽 충실도는 현실 세계와(시각적으로) 동등한 3D 애셋 통합을 가능하게 해 주었습니다. 마켓플레이스를 통한 서드파티 애셋 사용은 시간을 절약해 주어서 우리가 촉감 피드백이나 저항, 그리고 실제 인터페이스 디자인 등 몰입 측면에 완전히 주의를 기울일 수 있게 해 주었습니다.
조이 캠벨의 연구에 대한 더 많은 업데이트와 진행도는 www.joeycampbell.ie.를 방문해 알아보실 수 있습니다.
[email protected]