Priv's Blog

입력 상호작용 기술 본문

Dev. Study Note/VR Introduction

입력 상호작용 기술

Priv 2024. 9. 29. 23:23


 

 

1. 입력 상호작용의 종류

VR에서 사용되는 입력 상호작용 기술들을 분류하기 전에 먼저 일반적인 컴퓨터를 사용할 때 자주 등장하는 입력의 종류는 다음과 같다.

위의 6가지 입력 중에서 VR 시스템에서도 흔하게 찾아볼 수 있는 요소 3가지를 다시 고르자면 다음과 같다.

- 버튼

- 벨류에이터 (Valuator)

- 위치 (3-DOF 위치, 3-DOF 방향, 6-DOF 위치 및 방향)

여기서 제스처는 가끔씩 텍스트와 N-ary 스위치를 사용하는 VR 시스템에서 두 번째로 많이 사용되는 입력 방식이다.

이러한 입력 상호작용 시스템의 요소들은 버튼과 벨류에이터를 동시에 제공하면서도 제스처를 인식하게 한다거나, 제스처를 인식하여 텍스트를 입력하게 만드는 것처럼 다른 요소들과 결합하는 것도 가능하다.

여기서는 위의 6가지 입력 상호작용 시스템이 VR 시스템 환경에서 어떻게 사용되는지를 하나씩 알아보고, 융합 방법과 사례에 대해서도 함께 살펴본다.

 


 

2. 버튼 입력

버튼 입력은 2가지 상태를 지니기 때문에 불리언(Boolean) 값을 쉽게 표현할 수 있다.

일반적인 버튼은 눌렸을 때 1의 값을 가지고, 눌리지 않았을 때 0의 값을 지닌다.

버튼을 누르고 떼면 자연스럽게 0으로 돌아가기 때문에 계속 버튼을 누르고 있음으로써 1의 값을 원하는 만큼 유지할 수도 있다.

버튼은 일반적인 핸드 헬드 컨트롤러에서 쉽게 찾아볼 수 있으며, 키보드, 마우스 등은 물론이고 엘리베이터, 자동차, 전등 스위치 등 일상 속에서도 굉장히 흔하게 사용되는 매우 단순한 입력 상호작용 시스템이다.

VR 시스템 환경에서의 버튼은 VR 기기에 연결하여 사용하는 핸드 헬드 컨트롤러의 물리적 버튼을 누르거나 터치 인식 센서에 손가락을 접촉하는 방식 등으로 구현될 수 있다.

버튼 입력 상호작용 시스템 또한 다른 입력 시스템과 마찬가지로 제스처 또는 임계값 적용 방식을 통해서 구현될 수도 있다.

 


 

3. 벨류에이터(Valuator) 입력

벨류에이터 입력은 1-DOF 형태의 조작 방식을 사용하며 정수 또는 실수로 구성된 범위로 나타내는 값을 다루는 입력 상호작용 시스템이다.

가장 대표적인 벨류에이터 입력 상호작용 시스템이 게임 패드의 아날로그 조이스틱이다.

조이스틱을 가만히 두면 정중앙에 스틱이 위치하며, 그 스틱을 왼쪽 끝까지 밀면 값은 -1.0이 된다.

이때 조이스틱을 어느 방향으로 얼마나 많이 미느냐에 따라서 값은 실수 형태로 계산되어 표현된다.

또한 버튼 입력 상호작용 시스템과 마찬가지로 값을 입력하지 않은 상태를 유지하면 값이 자동으로 0으로 복귀한다.

 

3.1. 2의 제곱수와 0의 부재

벨류에이터 시스템이 도출한 값은 전자적으로 계산된 값이기 때문에 보통 아날로그/디지털 변환(A/D Conversion)을 거쳐서 만들어지며, 2의 제곱수 형태로 표현된다.

이 때문에 벨류에이터 시스템을 다룰 때는 2의 제곱수의 특징을 고려할 필요가 있다.

우리는 벨류에이터가 정중앙에 위치해 있을 때의 값, 즉 0을 기준으로 벨류에이터가 표현할 수 있는 전체 값의 범위를 좌측 절반(음수 ~ 0)과 우측 절반(0 ~ 양수) 형태로 나누어서 다룬다.

하지만 이는 다시 말해서 값의 범위가 0에서 잘리기 때문에 '중앙'이라는 개념을 정확히 나타낼 수 있는 값(정확히 0이라는 값) 존재하지 않는다는 의미이다.

이 때문에 벨류에이터 입력을 다룰 때는 엡실론 값(연산 과정에서 무시할 수 있을 정도로 매우 작은 값)을 0에 더하거나 빼는 방식으로 계산하여 0의 개념을 잃어버리지 않도록 해주어야 한다.

즉, 완벽한 0은 아니지만 0에 매우 가까워서 사실상 0이나 다를 바 없는 값을 사용해서 '정중앙'이라는 개념은 계속 유지할 수 있도록 해주어야 한다는 것이다.

대부분의 벨류에이터 입력 상호작용 시스템은 아날로그 조이스틱의 예시처럼 '정중앙'이라는 개념이 적용된다.

하지만 모든 시스템이 이러한 개념을 가지는 것은 아니다.

우리가 흔히 사용하는 컴퓨터 마우스를 한 번 살펴보자.

컴퓨터 마우스는 2-DOF 형태의 벨류에이터 입력 상호작용 시스템이다.

하지만 마우스의 움직임은 상대적 개념으로 계산되기 때문에 '정중앙'이라는 개념이 존재하지 않는다.

즉, 특정한 지점을 기준으로 계산된 절대적 거리로 마우스 포인터를 움직이는 것이 아니라, 이전 위치를 기준으로 상대적 거리를 계산하여 마우스 포인터를 움직인다는 것이다.

위 사진은 '3D 마우스'라고도 불리는 3D Connexion 사에서 출시한 스페이스 내비게이터(Space Navigator)라는 제품이다.

3D 공간을 입체적으로 조작할 수 있도록 만들어진 특수한 용도의 마우스이다.

마우스를 앞으로 밀면 줌 인, 마우스를 뒤로 밀면 줌 아웃, 마우스를 왼쪽으로 돌리면 시야가 왼쪽으로 회전하는 등 기존의 2-DOF 자유도를 지닌 컴퓨터 마우스와 달리 6-DOF 자유도를 지니고 있어 더 쉽고 효율적으로 3D 공간을 탐색할 수 있도록 설계되어 있다.
(단, 여기에는 평범한 모니터를 사용하는 데스크톱 환경에서 가상 세계 환경을 시뮬레이션하고 있다는 조건이 붙어야 한다)

사용법을 보면 알 수 있듯이, 해당 제품도 마우스의 범주에 들어가지만 동작 방식은 '정중앙'의 개념을 지니는, 일종의 게임 패드 아날로그 조이스틱과 별 다를 바가 없음을 알 수 있다.

이처럼 벨류에이터 입력 상호작용 시스템을 다룰 때는 해당 시스템의 동작 방식과 사용법, 특징 등을 제대로 이해하여 시스템이 계산한 값을 올바르게 가공해 사용할 수 있어야 한다.

 


 

4. 위치 입력(추적)

위치 입력은 공간 상에서의 위치 또는/그리고 방향을 나타낸다.

즉, 위치라는 것은 자유로운 신체가 공간 상에 어떻게 위치하는가에 대해 표현하는 개념으로, 경우에 따라 위치 또는 회전에 대한 값 중 하나만 제공하거나 두 가지를 동시에 제공할 수도 있다.

위에서 언급한 것처럼 3-DOF 움직임과 3-DOF 회전은 별개의 개념이다.

이 두 가지를 합치면 6-DOF 위치 입력을 만들어낼 수 있다.

6-DOF 위치 입력을 구현하는 가장 쉬운 방법은 6개의 실수 값을 사용하는 것이다.

단, 이 방법은 움직임에 대한 위치 입력을 제어할 때는 문제가 없으나, 회전에 대한 위치 입력을 제어할 때는 회전에 교환법칙이 성립하지 않기 때문에 다루기가 상당히 까다로워진다.

즉, 회전을 결합할 때는 결합 순서가 매우 중요하게 작용한다는 것이다.
(X축 30도 회전 + Y축 40도 회전 != Y축 40도 회전 + X축 30도 회전)

이러한 번거로움과 다양한 추가적인 이점을 얻기 위해서 3-DOF 회전을 다룰 때는 3 * 3 사이즈의 행렬(3 * 3 matrix)이나 4-튜플 쿼터니언(4-tuple quaternion)을 사용한다.

3-DOF는 이름 그대로 3개의 값을 통해 표현되는 자유도를 의미하지만, 3 * 3 행렬이나 4-튜플 쿼터니언은 이보다 더 많은 값을 사용한다.

이러한 값들은 DOF에 다른 수학적 제한이 존재하기 때문에 영향을 주지는 않으며, 특정한 회전 배열을 명확하게 명시하는 데 사용된다.

 

4.1. 원근법과 VR에서의 위치 입력(추적)

우리가 살아가는 실제 세계는 '원근법'으로 표현할 수 있다.

즉, 가상 공간에서의 자연스러운 조작을 구현할 때는 거리의 개념이 적용되어야 한다는 것이다.

반 세기가 넘는 오랜 세월 동안 '거리감'이라는 개념을 적용한 위치 추적 기술은 개발과 발전을 반복해 왔다.

그만큼 이 개념은 VR을 구현할 때 매우 중요하게 작용하고 있다.

위치 입력 시스템 또한 다른 입력 시스템과 마찬가지로 상황에 따라 절대 입력 또는 상대 입력 방식을 사용할 수 있다.

이러한 방식은 VR 시스템이 디스플레이를 제공하는 방식에 따라 결정된다.

CAVE 시스템처럼 '고정형 VR 디스플레이'는 이름 그대로 움직이지 않고 고정되어 있는 VR 디스플레이이다.

즉, VR 디스플레이가 렌더링 하는 가상 공간을 둘러보고 다양한 시점에서 바라보는 존재는 체험자이다.

이 때문에 고정형 VR 디스플레이는 특정한 지점을 원점으로 하여 고정된 시점을 기준으로 렌더링 되어야 하므로 '절대 위치 입력 방식'을 사용해야 한다.

반면에 HMD 기기를 머리에 착용하는 방식으로 구현되는 '머리 기반 VR 디스플레이'는 '상대 위치 입력 방식'을 사용한다.

이러한 형태의 기기들은 3-DOF 회전 정보만 가지고도 동작할 수 있으며, 이 회전 정보는 자이로스코프 센서와 같은 상대적 움직임을 추적하는 센서를 통해 계산된다.

HMD 기기를 착용한 체험자는 체험 환경이 허락하는 한, 자유롭게 위치를 옮길 수 있으며 고개를 돌리거나 상체를 숙이는 등 자신이 원하는 데로 다양한 각도에서 가상 공간을 둘러볼 수 있다.

렌더링 되어 체험자에게 보이는 가상 공간은 고정형 VR 디스플레이처럼 체험자 주변 환경에 투사되는 형태가 아니라 체험자가 머리에 쓰고 있는 HMD 기기의 시각 디스플레이에서 보이는 것이므로, 어떠한 지점을 고정된 원점으로 하여 렌더링 한다는 것은 불가능할 것이다.

 


 

5. N-ary 입력

N-ary 입력은 두 개 이상의 위치(버튼)를 지니는 스위치이다.

이 스위치들의 값은 열거된 정수 또는 단순한 정수로 표현될 수 있으며, 이 값들은 가능한 선택지의 배열에서 인덱스로 사용될 수 있다.

N-ary 입력의 물리적인 구현 예시로는 라디오의 나열된 버튼들, 다이얼 등이 있다.

가상으로 구현한 예시로는 풀다운 메뉴(또는 드롭 다운 메뉴)가 대표적이다.

N-ary 입력의 경우, 선택할 수 있게 제공되는 옵션들이 비순차적(순서가 불필요)인 경우가 많기 때문에 앞에서 살펴본 버튼 입력이나 벨류에이터 입력처럼 '0으로 복귀'하는 속성이 없는 경우가 많다.

다만 Unity 엔진에서 애니메이션 작업을 해보았다면 이름이 익숙할 '토글 스위치'처럼 무조건 '0으로 복귀'하는 속성이 없는 것은 아니기 때문에 특수한 경우도 존재한다는 것은 기억해 두는 것이 좋다.

 


 

6. 텍스트 입력

텍스트 입력은 말 그대로 텍스트를 입력하는 것이다.

텍스트 입력은 다른 입력들보다 더 자유롭고 예측이 불가능하다는 특징이 있다.

텍스트 입력은 '텍스트'를 다루는 것인 만큼 입력 값을 문자열로 표현하기가 더 쉬울 수 있으나, 이를 n-DOF로 표현하기는 상당히 난감하다.

텍스트 입력을 다루는 데 쓰이는 장비는 대부분의 사람들이 다 알고 있듯이 키보드, 마이크(음성 인식) 등이 있다.

간혹 경우에 따라서 휴대폰에서 자주 볼 수 있는 텍스트 자동완성 메뉴처럼 '풀 다운 메뉴'를 통해 체험자가 제공된 여러 메뉴 중 하나를 선택해 텍스트 입력 작업을 수행하는 것도 가능하다.

다만 이러한 텍스트 입력의 구현은 N-ary 입력이나 버튼 입력과 어떤 점에서 다르냐는 질문에 대해 의견이 갈릴 수 있다는 점을 기억해 두자.

당연하겠지만, 텍스트 입력에는 '절대 입력'이나 '상대 입력'과 같은 개념도 적용되지 않는다.

 


 

7. 제스처 입력

제스처 입력은 하나 이상의 다른 유형의 입력을 사용하며, 시간에 따른 특정 입력 값을 평가하는 방식으로 구현된다는 점에서 차이가 있다.

여기서 언급된 입력 값을 평가하는 '시간'이 제스처의 중요한 물리적 특징이다.

체험자가 그저 어떠한 포즈를 잠시 '취한' 것인지, 아니면 제스처를 위한 어떠한 포즈를 '유지'하고 있는 것인지를 구분하여 무엇이 제스처이고 무엇이 단순한 포즈인지를 구분할 때 시간을 활용하기 때문이다.

제스처의 출력은 아래의 모든 요소에 적용될 수 있다. 

- 버튼: 버튼을 가리키기 또는 가리키지 않음

- 벨류에이터: 팔이 펄럭이는 속도

- N-ary: 몇 개의 손가락을 들고 있는가?

- 텍스트: 수화 또는 모스 코드 입력

- 위치: 화면 위를 어느 방향으로 가로지르고 있는가?

사용자의 신체와 연관이 있는 제스처의 경우, 그러한 제스처는 가상 세계 속 공간에서만 유효할 수 있음을 기억하자.

 


 


수고하셨습니다!


Comments