이 포스트 부터는 책의 도움을 받기로 했다. Steven M. La Valle님의 "Virtual Reality" 라는 책이다. (구글 검색을 하면 찾을 수 있다.) 번역을 해서 의미를 제대로 전달하면 좋으련만, 아직 번역 실력이 그정도는 아니다. 그래서 책을 읽고 이해한 내용들을 정리하는 선에서 적어보려 한다. 책의 1장에 있는 내용은 지난 포스트에서도 볼 수 있는 것들이어서 2장 Bird's Eye View 부터 시작한다.

1. Hardware

  VR 시스템이 어떻게 구성되는가를 알아보는 것이 VR 동작을 이해하는 첫 단계다. 컴퓨터, 헤드셋, 컨트롤러 뿐 아니라 사람(사용자)도 동일하게 중요한 부분이다. 하드웨어가 사용자의 감각을 가로채 바꿔버리기 때문이다. VR HW는 센서를 이용하여 사용자의 동작을 추적하여 이런 과정을 수행한다. 헤드 트래킹이 가장 중요하지만, 버튼, 컨트롤러 동작, 눈동자의 추적 또는 신체 일부에 대한 추적도 트래킹에 포함된다. 주변 환경을 VR 시스템의 일부로 생각하는 것도 중요하다.

3인칭 시점의 VR system

Sensors and sense organs

  센서는 특별한 transducer(어떤 형태의 에너지를 다른 형태로 변환)로, receptor에서 감지한 에너지를 전기적 신호로 변환한다. 인간의 감각 기관도 이와 비슷하게 동작한다. 감각 기관들이 뉴런와 연결되어 있어, 에너지를 neural impulses로 변환하는 것이다. 이렇게 센서들과 인간의 감각 기관은 비슷한 역할을 하고 또 비슷한 방식으로 동작한다. (센서가 인간의 감각 기관을 흉내내는 것이다.)

Configuration space of sense organs

  사람이 움직임에 따라 같이 움직이는 감각 기관들은 configuration space가 있으며 제한된 범위 내에서 움직일 수 있다. 이를 감각 기관의 자유도(degree of freedom)라고 한다. 위치 이동 3DoF + 방향 전환 3DoF

An abstract view

일반적인 경우 두뇌가 감각 기관의 configuration 을 컨트롤 한다
VR 시스템은 자연의 자극을 인공의 자극으로 대체한다.

  Virtual World Generator(이하 VWG)는 가상 세계를 랜더링 한다. 눈은 이 결과물을 화면을 통해 받아들이고 귀는 스피커를 통해 나오는 소리로 받아들인다. 이게 잘 되면 사용자의 두뇌를 속일 수 있게 된다. 사용자는 마치 자신이 예전에 경험했던 방식으로 자극을 받아들여 실제 그 세계에 와 있는 것처럼 느낄 수 있다.  

블로그 이미지

태후아빠

,

  이 글은 medium.com 이라는 사이트에 올라온 글을 번역한 것입니다.

  원문글(영문)은 여기있습니다. 링크를 따라가 보세요.

DAQRI라는 실력있는 AR device 업체의 엔지니어가 작성한 글로, MTP(Motion to Photon)라는 AR/VR 성능 평가의 중요한 항목에 대한 A to Z를 설명하였습니다.

  의역하려 노력했으나 직역에 더 가까운...
한글로 바꾸기 어렵거나 바꾸었을 때 의미 전달에 무리가 있을 것으로 판단되는 경우, 영어를 직접사용했습니다.


  최근까지, AR/VR 고품질 경험은 비싸거나 연구실의 개별적인 솔루션 혹은 상업적 설치로만 가능했지만 현대 AR/VR 시스템들이 집에서 사용 가능하게 만들었다. AR, VR 새로운 바람은 Oculus HTC Rift Vive 상품을 출시한 2016년에 시작되었다. 엄청 비쌌던 기술이, 갑자기 흔하게 접근 가능해져, 어떤 사용자들은 집에서 시스템들을 사용할 있게 되었다. 아직, 테더드 시스템은 고사양 컴퓨터에 의존하고 있고 "outside-in tracking" 사용한다. 이는 사용자의 위치와 방향 측정을 위한 트래킹 설비를 꾸리기 위해  고정된 장치가 환경에 설치되어야만 한다는 의미다.

 

  이후로, Microsoft 혼합현실(Mixed Reality), Oculus Go, 그리고 HTC Vive Focus 같은 새로운 시스템이 "indise-out tracking" 발전 시켰다. 새로운 시스템들은 미리 설치된 환경에 의존하지 않는다. 그래서 환경을 준비하는데 드는 불편함을 줄이고 있다. 비슷하게, AR 쪽에서는 DAQRI Smart Glasses Microsoft Hololens같은 시스템들이 진정한 이동성을 가능하게 하는 indise-out tracking 활용하고 있다. 모든 시스템들은 사람이 대체로 느끼지 못할 정도의 latency 달성하기 위해 여러 형태의 visual-inertial fusion 사용한다.

 

  글에서는 AR, VR 시스템에서 사용되는 기술에 대하여 깊이 들어가 이야기 것이다. 그리고 주요 컴포넌트들(관성측정장치, 예측, 사후 수정) 어떻게 밀리초정도의 latency 갖는 파이프 라인에 접목되는지 볼것이다.  고정된 VR 시스템과 비교해서 모바일 AR 시스템이 극복해야하는 것이 고수준의 도전이기 때문에 우리는 전적으로 모바일 AR 시스템에 집중할 것이다.

 

LATENCY

 

  Latency 혹은 "Motion to photon latency" 모든 AR, VR 시스템에 있어서 결정적인 속성이다. 이것은 사용자가 어떤 동작(고개를 돌리는 동작들) 때부터 동작에 의한  컨텐트의 변화(사용자고 고개를 오른쪽으로 돌리면 VR 세계는 왼쪽으로 돌아가야 한다) 화면에 보이기 까지의 시간 간격이다. "Photon"이라는 말은 디스플레이 시스템의 전체가 과정에 관여되어 있는데 디스플레이에서 포톤이 반짝하는 시점을 말한다.

 

  인간은 latency 아주 지각한다. VR에서 사용자는 가상 컨텐츠만을 보고 있기 때문에, 근육의 움직임과 전정기관으로부터 불일치감(perception of misalignment) 유래된다. 이런 시스템들에서는 최고 20ms 지연은 사용자가 알아채지 못한다. AR에서는 투명한 광학장치가 가상 컨텐츠를 실세계상에 덧입히기위해 사용된다. 실세계에는 지연이라는게 없기 때문에 이런 AR 시스템에서의 latency 실세계와 가상 컨텐츠사이의 밀림(misregistration, 오등록) 형태로 시각적으로 보여지게 된다. 사람의 시각 기관은 극히 민감해서 사용자들에게 지연이 보여지지 않게 하기 위해 5ms latency 혹은 그보다 적은 latency 요구된다.

 

  이렇게 낮은 latency 달성하는것은 보통 생각하는 것보다 복잡하다. 특히 시스템이 동작하는 단계가 전체 latench 기여하기 때문이다. 높은 레벨에서, 동작을 측정하고 디스플레이에 컨텐트를 보여주기까지의 파이프라인은 다음의 주요 블럭을로 구성된다.

  • Sensor(camera IMU)
  • Tracking(동작 추정)
  • Rendering(이미지 생성)
  • Display(이미지 제출)

네가지 주요 블럭이 디자인되고 구현된 AR,VR 시스템에 적용되어있다고 가정하자. 그리고 OS레벨에서 복사나 버퍼 라킹 그리고 큐잉 등의 외부 펙터는 불필요한 latency 더하지 않는다고 가정하다.

  블럭을 조사한 , 우리는 파이프라인에 대한 순진한(naive) 구현이 쉽게 100ms 이상의 latency 초래하게 되는 것을 있을 것이다. 블럭의 latency 분리 검토하고나면 5ms AR 시스템 요구사항을 만족시키기 위해 어떻게 단대단 latency 줄일 있는지 논할 것이다. 

 



SENSOR

 

  오늘날 대부분의 모바일 AR, VR 기기들은 동작 추정(motion estimation) 위해 카메라와 IMU 조합하여 사용한다(inside-out pose tracking). 우리는 IMU 견고한 포즈(기기의 위치와 방향) 추정과 단대단 latency 모두에 중요하다는 것을 보게 것이다.

 

  AR, VR 시스템은 보통 트래킹 카메라를 30Hz 운용한다. 이것은 33ms 마다 이미지를 읽고 처리를 위해 넘겨진다는 의미다. 게다가 30Hz frame rate 노출시간을 프레임당 33ms 제한한다.

 

  노출 시간이 20ms 고정되어 있다고 가정하자. 사후 처리를 위해서는 우선 timestamp 센서 측정시마다 할당해야한다. 실질적인 노출을 위해 시작과 끝시간이 결정 요소이다. 하지만, 처리의 관점에서 본다면, 노출의 정중앙 시간을 사용하는게 편리하다. 그러므로, 노출이 끝나면 이미지는 이미 노출 시간의 절반 만큼 지난 시점이 된다. 따라서 우리의 예제에서 이미지는 이미 10ms 이전의 것이 된다. 노출이 끝나는 순간 이미지가 읽혀지고 이미지 처리 시스템으로 전달되어야 한다. 우리 시스템에서는 5ms 소요된다. 트래커가 이미지 처리를 즉시 시작한다고 해도 시점의 이미지는 15ms 지난것이다.

 

  카메라가 30~60Hz 동작하는 한편, IMU 수백, 수천Hz 훨씬 빠른 속도로 동작한다. 우리 시스템에서는 IMU 1000Hz 동작하고 ms마다 새로운 sample 연속적으로 생성한다고 가정하자. IMU 데이터는 매우 작고 latency 낮아서 가장 최근 IMU 값은 대략적으로 1ms정도 지난것이라고 해도 무방하다.

 


 

TRACKING

 

  트래킹은 센서 데이터를 사용하여 6DoF 포즈 추정을 계산하고 이는 기기가 어떻게 이동하고 회전 했는지를 설명한다. 위에서 말했듯이, 트래킹 시스템에 도착한 카메라 이미지는 적어도 15ms 이전의 것이다. 한편, IMU 1ms 이전의 데이터를 즉시 사용 가능할 정도로 latency 낮다. 그러나 카메라 프레임보다 최신인 IMU 데이터는 보통 단계에서 사용되지 않는다.

  우리 예제는 카메라가 30Hz 동작한다는 가정을 했기 때문에, 트래킹 시스템도 같은 속도로 동작해야 하고 처리하는데 33ms 여유를 제공한다. 물론 프레임에 처리 시간을 주기 위해 연속된 카메라 프레임을 병렬로 처리하는 것도 가능하지만, 이런 방법은 추가적인 latency 발생시키기 때문에 여기서는 사용되지 않을 것이다. 대신, 카메라 이미지와 IMU 데이터 처리를 끝내는데 25ms 소비한다고 가정할 것이다.


  카메라 프레임 처리는 트래커가 프레임을 처리 할수 있게되자마자 시작할 있기 때문에, 센서 데이터를 얻어오는 시간과 트래킹이 모두 추가되어서 결국 15ms + 25ms = 40ms latency 동작추정값을 가지게 되는 시간이다. 동작 추정값은 랜더링을 위해 어플리케이션으로 보내진다.

 

RENDERING

 

  렌더링은 2D 이미지를 생성하는 단계이고 이어서 프레임 버퍼의 형태로 디스플레이에 전달된다. 이미지를 생성하기 위해 렌더러는 몇가지 입력을 필요로 하는데, 사용자에게 보여질 3D 컨텐츠와 렌더링할 영역(view port)이다. 랜더링은 포즈 추정과 다른 속도로 동작한다(보통 60, 75, 혹은 90Hz). 그래서 랜더링은 트래킹과 비동기적으로 수행되는것이 적당하다. 이를 명심하고, 랜더링이 60Hz 동작한다고 가정하자.

  새로운 프레임이 생성될 , 랜더라는 트래커가 추정한 가장 최근의 카메라 포즈를 사용한다고 가정할 있다. 트래커가 30Hz 동작하기 때문에 최대 33ms 이전의 것일 있다. 60Hz에서는 랜더러가 새로운 프레임을 대략 16.7ms마다 생상 한다. 16.7ms 기간 끝부분에서만 이스플레이로의 프레임 전송과정이 사작한다. 이것은 랜더링 시작부터 프레임 버퍼 읽기를 시작할 때까지 16.7ms 걸린다는 뜻이다.



  종합하면, 랜더링 블럭이 이전 블럭의 40ms 추가로 17~50ms 더해져서 57~90ms latency 되고 5ms 요구사항과는 아주 멀어진다.

 

DISPLAY

 

  대부분의 컴퓨터 과학자들은 GPU 랜더링을 끝내고나서 프레임 버페에 무슨 일이 일어나는지 생각하는데 많은 시간을 소비하지 않는다. 그러나 AR, VR 위해서는 디스플레이 동작방식이 매우 결정적이고 이는 해결되어야 , 쉽게 보이는 추가 latency 많은 분량을 추가하기 때문이다. 따라서 디스플레이 동작방식을 이해하는 것은 낮은 latency 얻기 위한 기본이다.

  프레임 버퍼 스캔아웃이 시작될 , 데이터는 픽셀 마다 그리고 라인마다 디스플레이에 전송된다. 특별한 디스플레이 프로토콜(HMDI, DP, MIPI-DSI) 논의에서 중요한게 아니다. 이런 모든 프로토콜은 프레임버퍼를 주어진 프레임 레이트에 맞최 최대한 빨리 전달하도록 비슷하게 동작하기 때문이다. 디스플레이가 60Hz 동작하기 때문에 프레임을 디스플레이에 전달하는데 1/60초가 걸리고 추가로 17ms latency 추가된다.

  지금까지 얘기해온 AR VR 파이프라인은 일반적이었다. 그러나 디스플레이 타입은 구별해야한다. Line-sequential(LCD, OLED) 디스플레이와 color-sequential(LCOS) 디스플레이에 대하여 얘기해보자.

 

LINE SEQUENTIAL DISPLAYS

 

  Line-sequential 디스플레이는 PC 모니터, TV 그리고 VR 헤드셋에 들어간다. 그리고 오늘날 가장 일반적인 디스플레이 타입이다. 시스템들에서 픽셀은 주요 3색을 저장하고 프레인 데이터들은 다음과 같이 보인다. RGBRGBRGB…

  패턴은 프레임이 스캔라인으로 구성되었다는 것을 말하고, 스캔라인은 픽셀로 구성되며 픽셀은 , , 요소를 포함하고 있다는 것을 말해준다. OLED LCD 디스플레이는 전통적으로, 크기변형(rescaling)같은 추가 작업을 수행하지 않는한 수신된 픽셀 데이터를 임시 버퍼에 저장하지 않는다. 대신, 데이터가 도착하면 해당 픽셀을 직접 업데이트 한다. 그러므로, 디스플레이의 가장 위에 있는 스캔라인은 같은 프레임에서 가장 아래에 있는 스캔라인 보다 대략 16ms정도 먼저 업데이트 된다.

  비슷하게 프레임에서 가장 아래에 있는 스캔라인은 다음 프레임의 가장 위에 있는 스캔라인 바로 전에 업데이트 된다. 그러므로, 가장 위의 스캔라인의 latency 아주 적다(대략 1ms라고 가정하자). 그에 비해 가장 마지막 스캔라인의 latency 프레임 타임 전체시간(16.7ms) 길이가 된다. 아래 그림은 line sequential 이스플레이의 롤링 업데이트 메커니즘 타이밍을 설명한다.

 



COLOR SEQUENTIAL DISPLAYS

 

  오늘날, LCOS 가전 기기에서 일반적이다. 하지만 모바일 AR기기에서는 아주 일반적이다. 예를 들면 DAQRI 스마트 글라스와 MS Hololens LCOS이다. LCOS 한번에 하나의 색만 보여줄 있다. 전체 RGB 프레임을 보여주기 위해 LCOS 디스플레이 메트릭스는 붉은 이미지를 실제로 보여주기 위해 붉은색 LED 켜기 전에 모든 픽셀의 붉은 컴포넌트를 먼저 업데이트 한다. 그리고나서 붉은 LED 꺼지고, 녹색 컴포넌트를 위해 디스플레이 매트릭스가 재설정된다. 그리고 녹색 LED 활성화되고 녹색 이미지가 표시된다. 프로세스는 파란색과 녹색(옵션) 위해서 다시 반복된다.

 


 

  이런 방식이 동작은 가지 중요한 결과를 초래한다. 첫째는 LCOS 보내진 데이터는 RGB 프레임으로 합성되어 있으면 안되고 서로 다른 색의 서브 프레임으로 구성되어 있어야 한다. GPU 기본적으로 합성된 RGB 프레임을 생성한다. 그리고 디스플레이 표준도 이렇게 조합된 RGB 프레임으로 동작한다. 그래서 서브 프레임이 LCOS 전달되기 전에 분리 단계가 주가로 필요하다.(보통 하드웨어 블럭의 형태) 그러나, 서브프레임은 완전한 RGB 프레임을 수신하기 전까지는 만들 없어서, 분리 단계의 영향으로 프레임의 latency 추가된다. 단일 서브프레임이 표시되기 전에도.

  HDMI DP 표준 프로토콜로 느린 한편, LCOS 빠른 정용 프로토콜을 사용한다. 예를 들면, 분리된 서브프레임을 LCOS까지 전달하는데 일반적으로 1ms 이하가 소모된다. 서브프레임을 사용하므로써, 색이 분리되어 표시되고 이는 latency 색별로 다르다는 의미가 된다. 전통적인 서브프레임 시퀀스는 , , , 녹으로 각각 4ms 오프셋이 있다. 전체적으로 60Hz에서 GPU부터 분리기까지 RGB 프레임을 보내는데 17ms까지 걸리고, 분리기부터 LCOS까지 서브 프레임을 보내는데 1ms정도 걸린다. 이어지는 서브프레임은 추가적인 오프셋으로 인해 지연된다. 이는 거의 4ms 가정할 있다. 그래서, 붉은색 18ms, 녹색 22ms, 청색 26ms 그리고 옵션으로 녹색 30ms 지연이 발생한다.

 

OVERALL LATENCY OF A NAIVE AR/VR PIPELINE

 

  이제 우리는 모든 4가지 블럭을 다루었고 latency 더하면 어떻게 되는지 보자.


 

  OLED LCOS AR이나 VR 시스템에는 latency 충분하지 않다는 것은 분명하다. 사실 블럭이 AR 시스템을 위한 5ms보다 길게 차지한다. 더구나 LCOS 시스템의 latency 15~24 정도까지 된다. 어떻게 이것을 고칠 있을까?

 

  테이블의 증거들로 부터, 랜더링과 디스플레이가 전체 latency 50%이상을 차지한다는 것을 있다. 도전적인 것은, 변동 가능한 latency 아주 불편한 영향을 만들것이라는 것이다. 에를 들면 트래킹이나 애니메이션이 덜컹거리게 한다.

  latency 줄이는 세개의 주요 기술에는 IMU, 예측(prediction), 사후 수정(late correction) 포함된다. 기술이 랜더링과 디스플레이 단계에서 역할을 한다. 과정에서 40ms latency 이미 누적되어왔기 때문에 이상하게 보이지만, 우리는 어떻게 latency 여러 취소될 있는지 그래서 우리의 목표인 5ms 달성하도록 하는지 것이다.

 

OVERCOMING SENSORS AND TRACKING LATENCY

 

  위에서 언급했다시피, 랜더러가 트래커로부터 가장 최신의 포즈 값을 가져올 , 값은 40ms~73ms 정도 이전의 값일 있다. 다행히 latnecy 줄이기 위해 몇가지 다른 방법을이 사용될 있다. 하지만, 아래에서 보겠지만, 어떤 해결책들은 그리 좋지 않은 결과를 동반한다.

  첫번째로 카메라 노출 시간을 줄일 있고 이는 모션 블러(1) 긍정적인 효과를 가져온다. 그러나, 작고 값싼 카메라는 보통 적은 노출 시간 때문에 심각한 노이즈라는 부산물이 발생한다. 결과적으로, 20ms 이하의 노출은 보통 야외 같은 좋은 조명 환경에서나 가능하고 따라서 실행가능한 해결책으로서 부적합하게 만든다.

  두번째로 빠른 트래킹 방법 혹은 빠른 처리장치를 사용함으로써, 이미지 처리할 트래커에서 소비되는 시간을 줄일 있다. 그러나 빠른 트래킹 방법은 일반적으로 정확도와 안정성이 낮다. 그리고 요소는 우리가 타협할 없는 요소다. 게다가 빠른 트래킹 처리장치는 종종 많은 전력을 소비한다. 이것은 받아들여질 수도 있고 없을 수도 있다. 경우, 트래커를 빠르게 돌리기 위한 전력을 쓰지 않는 트래킹을 위해 저전력 CPU(DSP 혹은 ARM CPU) 사용된다고 추측할 있다.

  다행히 IMU 해결책을 준다. 카메라에 비하여 IMU 임의의 샘플링 주기로 운영할 있다. 여기서 우리는 1000Hz라고 가정한다. , 샘플은 최대 1ms 이전 것이 된다. 적절한 시관성 병합(visual inertial fusion)으로, 어떤 순간에서 다음 순간까지의 상대 이동 경로를 계산하기위해 IMU 데이터를 사용할 있다. 기간동안의 모든 IMU 샘플을 계산에 통합해 넣음으로써 가능하다. 다음 절대위치 계산을 위해 이전 절대 위치에 상대 이동이 적용될 있다. 그러므로, 트래커로 부터 얻은 마지믹 위치와  순간 부터의 모든 IMU 샘플을 이용하여 바로 1ms 이전의 새로운 포즈를 계산할 있다. IMU 데이터 통합은 제한사항이 있는데, 노이즈와 누적 드리프트(2) 그것이다. 그럼에도, 우리의 목적을 위해서 랜더러에 거의 1ms이전의 포즈를 수있는 좋은 해결책이다.

 


 

OVERCOMING RENDERING AND DISPLAY LATENCY

 

  최신의 포즈를 사용하는 것은 의심할 여지 없이 오래된 포즈를 사용하는 것보다 선호된다. 하지만 랜더링 프레임이 디스플레이에 표시되는 포즈는 순간 다시 예전것이 되기 때문에, 이것만으로는 충분치 않다. 다행히, 디스플레이가  GPU 동기화되어있기 때문에, 랜더링된 프레임이 화면에 표시될 때까지 얼마나 걸릴지, 랜더링이 시작되는 순간에 제대로 예측할 있다. 그래서, 현재 포즈 값을 사용하는 대신 미래 시점의 포즈 값을 사용해야한다. 우리는 미래를 예상할 없지만, 등속도, 등가속도 그리고 최신 동작에 기반해 예즉을 하는 고계 모션커브(higher order motion curve) 같은 모델을 사용할 있다.

  동작 예측은 앞으로 예측해야할 기간이 20ms 정도로 짧으면 동작한다. 그러나 기간이 길어지면 빠르게 떨어진다. 그래서 최신의 포즈 예측 값으로 랜더링한 후에 프레임 버퍼를 워핑(warping)함으로써 랜더링 결과물을 사후 수정(post-correct)하는 것이 일반적이다. 워핑은 순수한 2D 작업이기 때문에 3D 랜더링보다 매우 빠르고 속도는 씬의 복잡도와 무관하다. 결과적으로, 작업은 최신 GPU상에서는 화면에  프레임 버퍼가 전송되기 직전, ms 안에 실행된다. 늦은 수정(late warping라고불린다) 90년대부터 VR 연구계에 알려졌다. 하지만 최근 time warping이라는 이름으로 재발명되었다. 개념적으로 간단하지만, 늦은 수정은 매우 정확한 타이밍과 이상적인 GPU preemption 필요하다. Oculus Valve 같은 회사들이 GPU 생산자들과 수년간 함께 작업해서 모든 현대 GPU들은 기능을 지원한다. 아래 그림은 랜더링과 워핑이 전위 예측시간(forward prediction times) 어떻게 다르게 사용하는지 보여준다.

 


 

  이제 우리의 파이프라인의 마지막 단계에 왔다. 단계에서는 픽셀 데이터를 GPU 메모리에서 디스플레이로의 전송 최적화에 대해 다룬다. 단계는 실제 디스플레이 기술에 달려있다. 이제 모바일 AR VR 디스플레이의 두가지 주요 형태인 OLED LCOS 일반적인 솔루션을 얘기해보자.

 

OLED DISPLAYS

 

  보통 사용자 VR기기의 디스플레이로 OLED 사용된다. LCD 비교해서 OLED 낮은 픽셀 잔존율(lower pixel persistence) 가진다. 이로인해 latency 낮고 모션블러가 적다. 이것은 고품질 AR, VR 경험의 필수이다. 요즘, Oculus, HTC 그리고 Sony 만든 대부분의 사용자용 VR 기기들은 결국 OLED 쓴다. AR쪽에서는 ODG R9 OLED 디스플레이를 사용하는 것으로 알려져 있다. 상위 레이어에서 보면 이런 디스플레이들은 보통의 데스크탑 모니터과 비슷하게 동작한다. 픽셀 데이터는 GPU 메모리에서 디스플레이로 가로줄당 전송되고 디스플레이는 추가 버퍼링 없이 픽셀 셀마다 직접 업데이트 한다. 프레임 버퍼 전송은 실시간으로 진행되고 이는 하나의 프레임 버퍼 전송에 프레임 만큼의 시간이 걸린다는 의미다. 프레임 버퍼가 위에서 아래까지 전송된다고 가정하면 디스플레이의 줄은 read-out 시작하자 마자 보여지고 마지막 줄은 모든 프레임이 전송될 때까지 안보이게 된다.

  이런 동작은 DP, HDMI 그리고 임베디드 영역의 MIPI-DSI 같은 모든 표준 프로토콜에서 동일하다. 데스크 컴퓨터에서는 문제가 되지 않지만, AR 혹은 VR 시나리오에서 이런 동작은 두드러진 결과를 만든다. 가장 위쪽과 가장 아래쪽 간의 시간차 때문에, 롤링 셔터 카메라처럼, 렌더링 되는 씬에 shearing 발생하거나 움직이는 동안 다른 현상으로 문제가 발생할 있다.

  문제에 대한 해결책은 전체 이미지에 대한 warping 처리를 한번만 하지 않고 늦은 warping 수행하는 것이다. 이미지를 세로 방향의 여러 타일로 나누고 타일 다른 pose값으로 warping 하면 된다. 이렇게 조금씩 다른 시간에 진행되는 warping 프레임버퍼 read-out 정확하게 동기화되어야 한다. 다음 타일이 read-out하기 직전에, 동일한 타일이 가장 최신 pose값으로 warping 타일이 생성된다. 개념적으로 이것은 80년대 가정용 컴퓨터와 게임 콘솔에서 유명  했었던 raster interrupt 프로그래밍과 아주 흡사하다.

  예를 들어, 디스플레이가 60Hz 동작한다고 가정하자. 이는 프레임 전체가 read-out되기까지 16ms 소요된다는 뜻이다. 만약 프레임버퍼가 16개의 타일로 나뉘어 있다면 타일은 이전 타일이 read-out되고 나서 1ms 후에 read-out된다는 것이다. 기술을 이용해, GPU 메모리에서 디스플레이되기까지 ms latency 줄일 있다.

 

LCOS DISPLAYS

 

  OLED 달리, LCOS 표준 프로토콜이 없다. 그리고 각각 매우 다른 독점 프로토콜을 제공하는 LCOS 제조사들이 있다. DAQRI 스마트 글라스에서 사용되는 HIMAX LCOS를 생각해보자. MS 홀로렌즈에서도 사용 된다고 한다.

  LCOS 디스플레이는 여러 이유에서 OLED와 다르게 동작한다. 첫째로, 픽셀을 업데이트하는 메커니즘은 보통의 LCD나 OLED 디스플레이 보다는 DLP 프로젝터와 더 비슷하게 동작한다. 게다가, LCOS 픽셀 매트릭스는 LED가 꺼져있을 때 업데이트 된다. 그래서 실제 업데이트 하는 단계가 보이지 않는다. 픽셀 매트릭스가 완전히 업데이트 되면 LED가 켜지고 새로운 이미지 전체가 한번에 보여진다.

  두번째로, 전통적인 디스플레이는 모든 RGB 이미지들을 보여주는 반면, LCOS에 기반한 디스플레이들은 색 순서대로 동작한다. 그러니까 한 순간에 하나의 색깔만 보여진다. 보통 빨강, 녹색, 파랑 그리고 다시 녹색의 순서다. 각 색깔이 보여지는 사이에 픽셀 매트릭스가 각 픽셀의 컴포넌트 별로 표현하도록 업데이트 된다. 이런 색다른 모드가 OLED가 하는 롤링 업데이트를 방지하는 장점이다. 그러나 단점이 있는데 예를들면 무지개 효과 같은 색 깨짐(번짐?) 현상이다. 움직이는 동안, 시간에 따라 다른 색깔이 공간 상으로도 분리된 색을 만들게 된다. 그래서 사람들이 쉽게 알아본다. 이것은 색깔별 포즈 예측방법을 적용하여 줄일 수 있지만, 부수적으로 오버헤드를 만들고 색 깨짐(번짐)을 완벽하게 줄일 수 없다. 다행히, 색 순서 계통의 디스플레이는 매우 빠르게 동작한다. 게다가 앞에서 말한 RGBG순서의 동작은 디스플레이의 실제 업데이트 속도가 60FPS라는 말이 아닌 서브 프레임 기준으로 240FPS라는 의미이다. 각 서브 프레임들이 단색 컴포넌트이기 때문에 훨씬 간결하고 풀 RGB 프레임보다 짧은 시간에 디스플레이로 전송 될 수 있다. 어떻게 이 기술이 이렇게 극히 적은 latency를 이룰 수 있는지 논의해 보자.

  HIMAX 같은 데서 만든 LCOS는 HDMI나 DP 같은 표준 프로토콜을 사용하지 않는다. 뒤에 숨어있는 이유는 GPU가 원래부터 색 순서 프레임버퍼를 만들지 않는다는 것이다. 그래서 LCOS가 요구하는 색순서 형식의 프레임 버퍼를 제공하는 추가단계가 있어야 한다. LCOS 제조사들은 보통, 일반 디스플레이 표준을 통해 프레임 버버를 받아 필요한 색 분할 단계를 수행하는 호환 칩을 제공한다. 이 칩은 또, 독점 프로토콜을 사용하여 데이터를 전달한다. 그러나 RGB 프레임이 색별로 나뉘기 전에, 프레임 전체가 호환 칩에 모두 전달되어야 한다. 그리고 이 동작은 전체 프레임 시간을 잡아먹기 때문에 심각한 딜레이를 만든다.

  대신, 색 분할을 호스트 쪽(CPU, GPU)에서 수행하는게 효과적이다. 이 단계는 늦은 warping 단계의 일부분으로 수행된다. 그리고 나서 각 색별 컴포넌트 프레임 버퍼들을 LCOS에 직접 전달한다. 호스트는  RGB 프레임의 빨강 컴포넌트에 대하여 warping을 하고 LCOS가 직접 디스플레이 하도록 전달한다. 정확한 오프셋 시간 만큼 지나서 녹색과 파랑 그리고 다시 녹색에도 같은 작업을 반복한다. 이런 접근법은 GPU와 LCOS를 직접 연결하는 개별화된 실리콘이 필요하고, 다음 프레임을 랜더링 하는동안 현재 프레임을 warping 할 수도 있어야 하기 때문에 쉽지 않다(challenging). 그럼에도 불구하고 이 기술에 대한 최적화된 구현은 GPU에서 부터 표시장치까지 색깔 컴포넌트당 1~2ms의 latency를 달성할 수 있다.

 

LATENCY OF AN OPTIMIZED AR/VR PIPELINE

 

  그래서, 모든 기술을 고려했을 우리는 얼마나 낮은 MTP latency 얻을 있을까? 질문에 답하기 위해 우선 디스플레이 기술을 OLED LCOS 구분해야만 한다. 각각 다른 방법들이 필요하고 다른 결과를 낳기 때문이다. 그리고 우리의 latency 대한  정의를 정비해야한다.

  Motion-to-Photon latency 시점에 관한 것이다. 모션일 발생한 시점과 결과 이미지가 사용자에게 보여지는 시점이다. 모션쪽에서는 측정된 모션을 어떻게 사용할지 고려해야한다. 처음에는 모션을 3D 씬을 랜더링 하기 위한 입력으로 쓰기를 원했다. 하지만 이게 과도하게 높은 latency 유발한다는 것을 알고 나서 우리는 우리의 시스템에 사후 warping 적용하여 확장했다. 사후 warping 포즈 입력을 사용하지만, 아주 제한된 만큼의 수정만 수행할 있다. 이미 생성된 2D 프레임 버퍼에 적용되기 때문이다. 다행히, 제한된 만큼의 수정으로도 실제로는 충분하다. 그래서 모션쪽에서는 warping 포즈의 타임 스탬프를 고려할 것이다.

  디스플레이 쪽에서, OLED LCOS 모두 디스플레이를 업데이트하는 순서 특성때문에 부가적인 latency 만든다. 우리는 OLED 같은 스캔 라인 순차형 디스플레이의 latency 줄이기 위해 세로 방향 조각마다 warping 적용했다. LCOS같은 순차형 디스플레이의 latency 줄이기 위해 색요소별 warping 적용했다. 흥미로운것은 달성 가능한 latency 경우 비슷하다. 하지만 한쪽은 공간영역이가 다른 한쪽은 영역이다.

  모든 것을 고려하여, LCOS 기반의 디스플레이를 가지고 최적화된 AR 파이프라인을 알아보자. 우리는 예제의 값들을 약간 바꾸어서 사용할 것이다. 우리는 랜더러와 디스플레이가 DAQRI smart glass처럼 90Hz에서 동작한다고 가정할 것이다. 단순화 하기 위해 RGBG 서브 프레임 보다는 RGB 서브 프레임이라고 가정할 것이다. 마지막으로 LCOS GPU에서 서브프레임을 직접 수신하는 방식으로 연결되었다고 가정할 것이다.

  아래 그림은 시스템에서 모든 컴포넌트들이 어떻게 함께 동작하는지를 보여준다. 이전에 정한 것처럼 트래커가 카메라 이미지를 찍은 순간, 이미 15ms 지나간다. 트래커는 추가로 25ms latency 잡아먹고 그래서 포즈를 사용할 있게 때까지 이미 40ms latency 갖게 된다. 랜더러가 트래커가 만든 최신의 포즈값을 가져갈 , 랜더러는 가용 IMU 샘플을 사용해 카메라 모션을 기반으로 1ms정도의 latency 갖는 포즈를 계산한다. 랜더러는 17ms정도 앞의(미래의) 순방향 예측 포즈 값을 추가로 예측한다. 17ms 랜더링 시간 11ms 디스플레이에 중간 서브프레임이 보여지는 시간 6ms 더한 것이다.

  순방향 예측을 더욱 향상시키기 위해, 시스템은 이런 과정을 사후 wraping 단계에서 반복한다. Warping 세번 수행된다. 서브 프레임마다 한번씩 하는것이다. Warping 2ms readout LCOS 전송하는 시간 2ms 더한다고 가정하면 서브 프레임마다 4ms 대한 순방향 예측을 하면 된다. 이것은 latency 줄이고 좀더 정확한 예측을 있게 한다. 그리고 결국 깨짐(번짐) 줄이는 채널별 수정이 적용된다.

 



  종합적으로, 시스템으로 우리가 달성할 있는 최종 latency 무엇일까? 정담은 그때그때 다르다. 우리가 최신 6DOF 포즈 예측을 완전히 수정된 AR 오브젝트를 생성하는 파이프라인의 마지막 단계로 사용하는 랜더링을 고려하면, 17ms 정도의 latency 달성하는 것이 최고의 시나리오다.

  그러나 사후 warping 사람이 알아볼 만한 부산물들을 수정할 있기 때문에, 파이프라인에 적합한 부분으로 다루는 것이 맞다. 우리의 예제 시스템에서 사후 warping 위한 순방향 예측 없이 채널당 4ms 물리적인 latency 달성할 있었다. 그러나 4ms 짧은 시간이기 때문에, 순방향 예측을 하는 것은 거의 완벽하고 감지된 latency 0 가깝게 밀어부칠 있다. 게다가 실제로 4ms이상에 대한 예측을 있어서 latency 0보다 작게도 만들 있다. 그러나 0이하의 latency 재미 없고 우리 시나리오에서는 맞지 않다.

 

CONCLUSIONS

 

  글에서 우리는 요즘 AR, VR 시스템에서의 latency 다루는데 있어서의 도전과 접근법을 설명했다. 우리는 이런 시스템을 위해 요구되는 HW SW 솔루션이, latency 걱정하는 모니터 게이밍 시스템과 다르다는 것을 알게 되었다. 추가로 모바일 솔루션은 고정형 시스템보다 아주 적은 프로세싱 능력을 가지고 있다. 문제는 저전력, 낮은 latency 그리고 높은 처리량이라는 상충되는 요구사항을 성공적으로 해결하기 위해 DSP, FPGA 혹은 ASIC 형태로 특별한 HW 블럭으로 해결된다.

  여기서 보여주고자 하는 오버 뷰는 크게 개념적인것이지만, 실제 상업용 시스템들은 여러 개의 아주 세부적인 것들을 다뤄야 한다. 표준 GPU LCOS 연결하는 것부터 범용 아키텍처상의 타일을 가지고 warping하기 위해 높은 시간 정확도를 달성하는 것까지 다뤄야 한다. 비슷하게, SW쪽에도 우리가 다루지 않은 세부적인 것들이 있다. 예를 들면,

일반 응용프로그램이 낮은 latency 파이프라인의 장점을 사용할 있도록 하는것이다.

  필요한 표준이 부족하기 때문에, 이런 세부적인 것들은 보통 독자적인 형태로 구현되고 있다. 디스플레이와 디스플레이 프로토콜 표준화 그룹들이 AR, VR 지원을 향상시키기 위해 어떻게 확장할지를 이미 논의하고 있다. 그러나 이러한 확장이 성숙하고 상품화에 사용되려면 수년이 걸릴 것이다. 비슷하게 OpenVR UnityXR 같은 software 표준화에 대한 노력을 계속하고 있다. 하지만 아직 상품화 수준까지는 미치지 못하고있다. 그때까지는 AR, VR 제조사는 자체 독자 솔루션을 계속 개발하고 향상시킬 것이다.


블로그 이미지

태후아빠

,

  VR기기는 사람의 눈 가까이에 있다. 현실 세계로 부터 사람의 눈을 완벽히 차단하고, 개발자가 의도한 것들을 보여주기 위한 것이다. VR을 하고 있는 와중에 현실세계가 어슴푸레 보인다면 사용자는 VR에 집중하지 못할 것이다. 또 현실 세계의 빛이 화면을 방해하지 않도록 기구도 철저하게 설계된다. VR을 즐기는 동안 (특히 코 쪽에서) 빛이 새어들어오면 몰입도가 떨어져 게임을 방해하게 된다. 이를 막기 위해 코 부분을 특히 신경 쓴다. 서양 사람들과 동양사람들의 코 높이가 달라서 어떤 기준을 적용할지 결정이 어렵기는 하다. 서양 사람들 기준에 맞추면 동양사람들은 코 쪽으로 새어 들어오는 빛이 방해가 될 것이고 동양 사람들 기준에 맞추면 서양사람들은 답답함을 느낄 것이기 때문이다. 그래서 보통 코쪽은 부드러운 소재로 마감 된다.

  자, 이제 사용자를 외부와 차단된 가상 세계로 초대하였다. 사용자들은 신기한 가상 세계를 이리 저리 둘러 볼 것이다. 그럼 VR은 사용자의 머리 움직임을 모니터링 하여 그에 맞도록 VR 화면에 그림을 그려준다. 사용자가 머리를 오른쪽으로 돌리면 가상 세계는 왼쪽으로 돌아간다. 왼쪽으로 돌리면 또 그에 따라 가상 세계도 돌아간다. 만약에 가상 세계를 사람의 동작에 따라 정확하게 반응시키지 못한다면 사용자는 바로 멀미를 느낄 것이다. (이렇게 사용자의 동작, 그러니까 머리의 회전과 이동을 모니터링하는 과정을 "트래킹"이라고 한다.)

  왜 멀미를 느낄까? 내 머리가 어느 쪽으로 돌아가든 그냥 내 눈앞에서 화면이 바뀌는 것 뿐인데... 문제의 근원은 바로 우리가 그렇게 환경에 적응 했기 때문이다. 사람의 귀 안에 들어있는 전정기관은 우리 몸의 이동과 평형 감각을 담당하는 기관이다. 이 전정기관이 우리가 움직이거나 고개를 돌릴 때마다 이를 감지한다. 

전정기관
정기관 위치와 모양
그림 출처: 귀와 소리 이야기

  이렇게 고개를 돌리는 동작에 따라 시각 정보 역시 변화한다. 당연한 것이, 우리가 고개를 왼쪽으로 돌려 왼쪽을 바라보면 우리의 왼쪽 세계(?)가 보이게 된다. 전정기관에서 발생하는 신호와 눈을 통해 들어오는 시각 정보가 일치 하는 것이다. 인간은 태어나 시각이 발달하기 시작하면서 부터 전정기관의 신호와 시각 정보의 변화를 매칭시키는 훈련을 해왔다. 따라서 전정기관으로 부터 왼쪽으로 돌고 있다는 신호가 들어오면 시각 정보도 이에 맞추어 변화될 것이라 기대한다.(이런 반응을 VOR, Vestibular Oculus Reaction이라고 한다.) 그런데 기대했던 것과 다른 시각 정보가 들어온다면 어떨까? 바로 멀미를 느끼게 된다. VOR에 문제가 발생하는 것이다. 

  VR은 사용자가 멀미를 느끼지 않도록 하기 위해 여러 기술들을 사용한다. 고개를 왼쪽으로 돌렸을 때 이러한 상태를 재빠르게 파악해서 눈에 뿌려지는 이미지를 적당히 움직여야한다.

  여기서 중요한 기술이 바로 위에서 말한 트래킹이다. 이를 위해, IMU(Inertial Measurement Unit)라는 센서를 사용하고, 추가로 Geomagnetic 센서나 카메라(이미지 센서)를 사용하기도 한다. 사람 귀에 있는 전정기관의 역할을 하는이 센서들을 통해 트래킹을 하는 것이다. 또 하나의 중요한 기술이 랜더링이다. 이 랜더링 과정에서는 트래킹에 의해 감지된 동작에 따라 여러 수식을 거쳐 사용자의 눈에 비춰지는 컨텐츠를 움직이고 화면에 그려준다. 간단히 살펴보면, 오브젝트의 움직임에 따라 방향과 위치를 바꾸어주고, Local coordinates를 World coordinates로 바꿔주고 카메라의 바라보는 방향과 위치에 따라 그림을 그려주는 과정인 것이다. (점점 더 어려워진다. ㅠㅠ)

  이렇게 트래킹과 랜더링을 통해 사람이 마치 가상의 세계에서 움직이는 것처럼 속이는 것이 바로 VR 기술이다. 그런데 수많은 세월동안 훈련을 통해서 완성(?)된 VOR을 이 속임수로 만족 시킬 수가 없는 것이 현실이다. 바로 속도라는 허들 때문이다. 센서를 통해서 사용자의 동작을 알아내고 그에 맞도록 그림을 그려주는게 그리 만만치 않다. 다시 말해, 많은 시간(그래봐야 1/10초도 안되는 시간이지만..)이 필요하다. 사람은 보통 16.7ms의 변화에도 민감한 반응을 보일 정도로 완벽한(?) VOR체계를 가지고 있어서, 트래킹과 랜더링 과정에서 뭔가 삐끗하는 순간 이상함을 느낀다. 그래서 VR은 사람의 동작에서 부터 그로인한 변화가 화면에 보일 때까지의 시간을 20ms 이하로 책정했다. 이것을 MTP(Motion To Photon)라고 하는데, 이 시간내에 모든것이 이루어지지 않으면 사용자의 몰입도를 떨어트린다고 한다.

  앞으로의 글에서, 엔지니어들이 어떻게 이 20ms라는 시간의 허들을 넘는지 알아볼 것이다. 점점 더 어려워지겠지만 어떻게 보면 점점 더 흥미로울 수도 있다는 생각이 든다.

 

블로그 이미지

태후아빠

,

  VR은 컴퓨터 장치를 이용해 동작하는, 일종의 프로그램이다. 게임 프로그램을 생각해보자. 게임을 실행하면 프로그래머와 디자이너(앞으로는 개발자라고 통칭하겠다)가 고생 고생 만든 그림들이 사용자의 조작에 따라 움직인다. 게임 속에 보여지는 배경이나 캐릭터들은 게임을 만든 개발자가 미리 그려서 게임앱에 넣어 놓은 것이다. 사용자가 캐릭터를 조작하면 게임에 이미 들어 있는 동작 애니메이션이 화면에 보여지게 되는 것이다.

  VR도 역시 앱 개발자들이 미리 만들어 놓은 가상의 물체들을 사용자의 조작에 따라 보여준다. 단, VR은 3차원으로 보여야 하기 때문에 3차원의 물체를 그리고 조작 할 수 있는 특별한 도구들을 사용하여 만든다. 요즘 많이 사용하는 도구는 Unity, Unreal이라는 툴이다. 보통 이런 툴들을 그래픽 엔진이라고 하는데 가상의 물체가 실제 물체처럼 중력에 제한을 받거나 서로 부딪혀 깨지는 등의 현상들을 표현해야하기 때문에 복잡한 알고리즘들을 가지고 있다. 이런 그래픽 엔진들은 개발자들이 복잡한 알고리즘을 신경쓰지 않고 자신의 시나리오를 쉽게 구현할 수 있도록 돕고 있다.

Unity
Unreal

  그래픽 엔진들은 3차원에 그려진 물체들을 화면에 보여주기 위해 Rendering이라는 작업을 하는데 이는 마치 화가가 3차원의 현실 세계를 화첩에 그려 넣는 작업과 같다. 아, 사진으로 찍는 것과도 같다고 할 수 있다. 이 과정에 복잡하고 어려운 수학 공식들이 들어가는데 그래픽 혹은 게임 엔지니어들은 이런 공부를 하기도 한다. 이 포스트에서는 다루지 않을 것이다. 혹시 궁금하다면 OpenGL 튜터리얼 사이트를 찾아보면 된다. (경고, 수학에 왠만큼 자신이 없다면 찾아보지 말기를... 머리만 더 복잡해진다.) VR의 경우에는 그림을 2장 그린다. 당연한 것이 3차원으로 보이게 하려면 각 눈에 서로 (약간) 다른 그림을 보여줘야 하기 때문이다.

  일반 게임에서는 키보드와 마우스로 게임을 조작한다. 그런데 VR의 경우에는 한가지 더 이용한다. 바로 센서 입력이다. 일반적으로 VR은 HMD(Head Mounted Device) 형태인데, 사용자에게 3차원의 그림을 보여줘야 하기 때문에 눈에 가까이 있어야 하기 때문이다. 또한 사용자의 머리 움직임을 모니터링 해야한다. 사용자가 보는 방향을 알아내기 위해서다(엔지니어들은 이를 3DoF라고 한다), 따라서 HMD에는 보통 센서가 함께 장착되어 있다. 추가로 사용자가 바라보는 방향 뿐만 아니라 전후, 좌우 그리고 상하의 움직임을 모니터링 하기 위해서는 더 복잡한 장치가 필요하다(엔지니어들은 이를 6DoF라고 한다). 이 부분은 차후에 포스팅 할 기회가 있을 것이다.

  VR의 동작을 이해하기 위해 아래의 그림을 보자.

VR의 동작 과정

  ① 사용자가 착용하고 있는 HMD의 센서로 부터 데이터를 입력 받는다. ② 이 데이터는 잘 가공하여 사용자의 움직임을 알수 있도록 계산된다. 이를 Sensor Fusion이라고 하는데 결과 값은 x, y, z 3축을 기준으로 하는 각도나 vector + 이 벡터를 기준으로 하는 각도로 표현된다.(이 부분도 자세히 들어가면 Euler, Quaternion 같은 수학이 나온다. ㅠㅠ)  ③ 사용자의 움직임 값은 VR 앱의 그래픽엔진에게 전달되어 가상세계를 모델링하게 되고 ④ 이어 2차원으로 그림을 그리는 Rendering 과정을 거친다. ⑤ 지금까지의 과정은 꽤 많은 시간을 필요로 하기 때문에 (보통 Latency라고 부른다) 이를 보상하기 위해 Compositor가 가장 최신의 사용자 포즈를 한번 더 읽어서 그래픽 엔진이 그린 2차원 그림을 살짝 틀어준다. 여기에 사용되는 기술이 Time Warp, Space Warp 혹은 Reprojection이라고 하는데 이 또한 다음 기회에 다뤄볼 예정이다. ⑥ 완성된 그림은, 마지막으로 Display에 뿌려지게 되고 사용자에게 보여지게 된다.

  간단하게 설명을 했지만, 이런 과정이 거의 1초에 60번 이상 반복이 되어야 하고, 위에서 잠깐 말했던 Latency를 줄이기 위해 많은 기술들이 사용된다. 그 어렵고 복잡한 일들을 엔지니어들이 해낸다. 참 대단한 사람들 많다. ^^

  오늘 포스트에서는 어려운 용어들이 많이 사용되었는데, 걱정할 것 없다. 이런 어려운 용어들도 독자들은 이해해 낸다. 음... 앞으로의 포스트들을 통해 이런 어려운 용어들, 기술들을 풀어보도록 하자.

블로그 이미지

태후아빠

,

  가상 현실이란 무엇일까?

VR concept

  말 그대로 진짜 현실이 아닌 가짜 현실이다. 말이 이상하긴 한데, 현실을 모사한 가상 세계 쯤으로 생각하면 될 듯 싶다. VR은 갑자기 나타난 기술이 아니다. 벌써 100년 전쯤 누군가 아이디어를 냈고(주1), 그걸 과학자 혹은 발명가들이 실제로 구현하면서 세상에 나타났다. 내 기억으로는 2015년 쯤 삼성이 GearVR을 만들어 팔기 시작하면서 본격적인 대중화가 되었다. 소비자들이 쉽게 접근할 수 있는 가격을 제시했기 때문이다. 물론 그 전에도 VR 기기들은 존재 했었고 판매도 되었으나, 게이머들에게는 '아~~ 돈만 있으면 사고싶은데~~!' 할 정도의 비싼 제품 이었다. 하지만 삼성의 과감한 투자로 우리 곁에 가까이 오게 되었다. ㅎㅎ

  최초의 가상현실 기기는 무엇일까? 바로, 이반 서덜랜드(Ivan Edward Sutherland)라는 분에 의해 1968년에 만들어진 Head Mounted Display(머리에 장착하는 스크린, HMD)가 최초의 공식적인 가상현실 기기가 되었다. 그후 1977년에 MIT의 아스펜 무비 맵(Aspen Movie Map), 1991년에 일리노이 대학의 CAVE (Cave Automatic Virtual Environment) 등이 계보를 이어왔다.

Ivan Sutherland(좌)의 Head Mounted Display(우)

  요즘에는 다양한 기기들이 출시 되고 있다. Oculus의 Rift, HTC의 Vive, Sony의 Playstation VR 등이 대표적인 PC 연결형 VR이며, Gear VR, Daydream이 폰을 이용한 모바일 VR이다. PC나 폰의 성능을 빌리지 않는 단독형(Standalon, All-in-One)의 VR도 있는데, Oculus Go, Vive Focus, DPVR M2 Pro, Lenovo Mirage Solo 등이 있다. 그 밖에도 다양한 제품들이 있는데 구글링 해보면 엄청 많이 나온다. 그만큼 VR기술이 널리 퍼져있다는 뜻이다.

다양한 VR 기기들

  VR을 가지고 무엇을 할 수 있을까? 가장 대표적인 것이 게임이다. 기존 게임들은 2차원 화면에 그려진 세계에서 즐기지만 VR게임은 3차원의 가상 세계로 들어가 게임을 즐기기 때문에 몰입감 면에서는 2차원 게임보다 월등하다. 키보드와 마우스로 게임 케릭터를 조작하는 것이 아니고, 내가 직접 게임 안으로 들어가 캐릭터가 되고 직접 플레이를 하게 되기 때문에, 2차원 게임과는 말 그대로 차원이 다른 경험을 하게 된다. 얼마전 스티븐 스필버그 감독의 'Ready Player One'이라는 영화에서 보여준 것이 바로 VR이 지향하는 바이다. 아직 영화와 똑같은 경험을 할 수는 없지만 VR 기술이 더 발달된다면 불가능한 이야기도 아니다.

영화 'Ready Player One' 중 한 장면

  게임 뿐 아니라 교육 분야에서도 VR의 활용도는 높다. 예를 들어 역사교육을 책으로만 받는 것이 아니라 VR을 통해 역사의 현장을 직접 방문하므로써 교육이 효과를 높일 수 있다. 도형이나 그래프를 3차원으로 보면서 교육을 받을 수도 있고 엔진의 원리, 우주의 모양을 입체적으로 보여주며 교육할 수 있다. 학교 교육 뿐만 아니라 비행 시뮬레이션 같은 업무 현장 교육에도 활용할 수 있다. 멀티미디어 분야에서도 VR은 진가를 발휘한다. 고가의 초대형 TV를 VR이 대체할 수 있고 360 3D영상, 180 3D영상으로 현장감 있는 공연을 방안에서 즐길 수 있다. 이 밖에도 다양한 분야에서 활용 되고 있지만 특히 요즘에는 치료의 목적으로도 사용할 수 있다고 하니 과연 VR은 미디엄으로서의 역할을 충분히 할 수 있을 것이라고 생각된다.

교육 현장에 사용되는 VR

  자~! 그래서 이번 포스트를 시작으로 VR에 대한 이야기를 해보려고 한다. VR관련일을 하다보니 한번은 이렇게 정리를 해서 기억의 창고에 보관하면 좋을 것 같다는 생각이 들었다. 혹시나 누군가에게 도움이 될 수도 있는 일... 시간이 오래 걸리겠지만, 차곡차곡 정리해보기로 한다. 오늘은 첫 포스트라서 간단한 이야기만 해보기로 한다.

 


(주1) 프랑스의 시인, 배우, 극작가 이자 연출자인 앙토냉 아르토(Antonin Artaud; 1896~1948)가 극장을 묘사하는 단어로 '가상현실(Virtual Reality)'를 사용하였고, 1970년대에 마이런 크루거(Myron Krueger) 라는 가상 현실 연구가가 '인공현실(Artificial Reality)'이라는 단어를 사용했으며, 1980년대 후반에 재런 래니어(Jaron Lanier)라는 컴퓨터 과학자에 의해 지금 사용하는 가상현실이라는 의미가 확립되었다.

 

 

블로그 이미지

태후아빠

,

  드디어 마지막 날이다. 내일 오전에 공항으로 가니까 하와이에서 뭔가 할 수 있는 날은 오늘이 마지막 날이다. 최선을 다해서 즐겨보기로 했다.

  피곤한 아이들을 위해 오늘은 좀 늦게 깨웠다. 평소 보다 약 30분(ㅋㅋ) 정도 더 자게 두었다. 대신 아침은 든든하게 밥으로. 오전에 이불을 포함한 빨래를 하고 짐도 추가로 더 쌌다. 혹등고래는 알로하 타워 근처에 있는 피어 8에서 Star of Honolulu를 타고 나가서 본다. 11시 15분 부터 체크인을 하고 12시 출항이니 10시 30분쯤 나가면 충분할 터였다. 버스는 19번 버스를 타고 가면 된다. 

   그런데 이상했다. 구글 맵에서 온다고 한 버스가 안왔다. 다음 버스는 30분 후... 지연되는 모양이었다. 하와이에서 버스 지연은 흔한 일. 조금 기다리면 온다. 19번 버스는 20분이나 지나서 왔다. 버스 기다리는데 많이 소비하긴 했지만 그래도 아직 괜찮았다. 12시까지만 가면 되는 거다. 그런데 버스가 매번 정거장에서 시간을 지체했다. 버스표를 사는 사람들도 많고, 버스를 잘 못 타고 몇 번 버스를 타고 가야하는지 묻는 사람들도... 세월아 네월아 하면서 가고 있었다. 이 속도로 가다가는 12가 넘어야 도착할 수 있을 것 같았다. 오늘 이 일정부터 빠그라지면 완전 망친다는 생각에 우버를 검색했다. 우버를 타고 가면 훨씬 더 빠르다고 나왔다. 생각할 여유도 없었다. 그냥 아이들과 버스에서 내리고 우버를 호출했다. 다행히 우버를 타고 11시 40분에 티켓 오피스에 도착해 표를 받고 승선할 수 있었다.

  여행에서, 특히 해외 여행에서, 더구나 마지막 날에 일정이 꼬이면 정말 난감하다. 그럴 때는 어쩔 수 없이 돈으로 메꿔야 한다. 목적지까지 시간 내에 반드시 가야하는 경우는 어쩔 수 없다. 충분히 여유 있게 나왔어도 이런 일은 발생한다. 아까워 하면 이도 저도 다 잃는다.

  Star of Honolulu는 Whale watching, Sunset dinner show 로 유명한 투어 코스이다. 신혼여행이라면 바다에서 석양을 보며 디너쇼까지 참여해도 좋을 것 같아 보인다. 우리는 고래를 보러 왔다. 3개의 Stabilizer가 있어서 파도에도 흔들리지 않고 안전하다고 한다. 단점은 음식을 가지고 들어가지 못한다는 것이다. 무스비를 사가서 중간에 밥을 먹으려 했으나, 음식 물 반입 금지. 물은 된단다. 어쩔 수 없이 선상 뷔페를 신청해서 먹었다. 성인 $18, 아이 $10. 총 $38을 추가로 지출했다. ㅠㅠ. 이 경우가 돈으로 메꿔야 하는 또 하나의 경우다. 배고프면 고래고 뭐고 다 소용 없다.

  선상 뷔페는 꽤 맛있었다. 요리사가 직접 잘라주는 소고기까지 있었다.

  맛있게 먹었는데... 폰카가 이상하다. 촬영 버튼을 누르면 살짝 딜레이가 발생한다. 타이밍이 안 좋았다. ㅠㅠ 우리 셋이서 총 8접시를 먹었다. 용제 3, 태후 2, 나 3. (태후는 후식을 내가 가져온 것으로 먹음) 아이들은 폴리네시안 문화센터 뷔페가 훨씬 맛있다고 했다. 여기 선상 뷔페는 데리야끼 치킨 이 제일 맛있다고 했다.

  고래를 만나기 전에 배안 이곳 저곳을 다니며 사진을 찍었다. 배는 뭐니 뭐니 해도 꼭데기가 최고지. 오하우 호놀룰루 지역을 모두 볼 수 있었다. 아이들은 와이키키 비치와 다이아몬드 헤드를 보며 아는 곳이라고 좋아 했다. 다이아몬드 헤드가 보이는 곳에서 재미있는 사진을 찍었다. 안 찍는다던 용제도 태후가 하는 걸 보고 도전. 녀석 찍고는 싶은데 귀찮은가 보다.

  그리고나서 길고 지루한 기다림이 시작되었다. 혹등고래(Humpback Whale)을 보기위해 한참동안 바다를 주시 했다. 카메라 촬영 준비도 완벽히 마쳤다. 혹시나 놓칠까 눈에 힘을 줘가며 수증기나 물기둥을 찾았다. 아무리 기다려도 안나왔다. 용제는 자꾸 내려가자고 한다. 용제에게 바로 밑 층 의자에 앉아서 기다리라고 했다. 태후도 따라가서 앉아 있었다. 고래가 나타나면 내가 알려주기로 했다. 또 다시 지루한 기다림... 갑자기 선장님이 방송을 한다. 1시 방향에 고래 출현. 잠시 수증기 같은 것이 보이고 고래 꼬리가 이어서 보였다. 방송을 듣고 태후가 올라오고 용제도 잠시 뒤에 올라왔다. 사람들의 환호성도 들렸다. 배에서 좀 먼 곳 이었지만 눈으로 선명하게 볼 수는 있었다.

  배 바로 옆이나 밑을 지나간다면 너무너무 좋겠지만 대부분은 이렇게 멀리서 본다고 한다. 실망하는 사람들도 있었다. 점프하기를 바라며 작은 소리로 점프 점프를 외쳐봤다. 내말을 들어줄 리가 있나. 그렇게 멀리서 혹등고래가 물 품는 장면과 등, 그리고 꼬리 지느러미를 몇 번 관찰하고 나서 배는 다시 피어 8로 향했다. 멀리서지만 그래도 고래 등과 꼬리 지느러미는 봤다.

  돌아오는 길에 아이들이 서핑하러 빨리 가자고 했다. 이녀석들 서핑을 엄청 하고 싶었던 모양이었다. 아이들이 보드를 하나 빌릴 것인지 두 대를 빌릴 것인지 물었다. 두대를 빌려 각각 태우면 안전에 문제가 있을 것 같고 하나만 빌리면 한명은 심심할테고... 고민되었다. 어떻게 하지?

  용제는 아쿠아 슈즈가 있지만 태후는 없어서 타겟에서 하나 구입했다. 와이키키 앞바다에 돌(죽은 산호들)이 많아서 잘 못하면 발이 다칠 수 있다. 집에 오자마자 수영복으로 갈아 입었다. 그리고 보드 대여 샵인 moku로 향했다. 그리고 2대를 빌렸다. 어린이용이라 좀 작았다. 그리고 가벼웠다. 내가 앞쪽에서 두개를 들고 아이들은 각각 후미를 들었다. 드디어 서핑하러 바다로...

  바다에 도착해서 발목 끈을 채우게 하고(보드 탈 때 뒤 쪽에 연결된 끈을 발 목에 묶어 준다. 안전을 위해서 묶는 것이다.) 배를 깔고 보드위에 눕게 했다. 그리고 수영 하듯 팔을 저으며 앞으로 전진. ㅋㅋㅋ 녀석들 조금 가더니 힘들단다. 녀석들아 세상에 쉬운게 어딨겠니~!

  적당한 위치를 잡았다. 내 무릎정도 오는 깊이게 양쪽으로 세우고 한명씩 일어서는 동작을 가르쳤다. 생각보다 균형잡는게 어려운 모양이었다. 제대로 서지를 못하고 물에 빠져 버렸다. 태후는 몸무게가 좀 있어서 약간 더 힘들어 보였다. 균형이 중요한데... 원래 해변 모래위에서 해야하는 훈련인데 바로 물에 들어와서 균형 잡기가 더 어려웠던 모양이었다.

  이렇게 몇번 하다가 한명씩 교대로 파도를 태웠다. 뒤에서 파도가 오는지 잘 보고 있다가 아이들에게 신호하고 밀어주고 그리고 한참 가다가 일어 서라고 신호를 줬다. 

이놈의 물방울 때문에 촬영을 망쳤다. 용제는 서서 꽤 오래 갔다. 태후는 좀더 연습이 필요했다. 태후야 걱정 마~! 아빠가 더 가르쳐 줄게. 나도 잘 못하긴 하지만. ㅎㅎ

  시간이 되어 보드를 반납하고 해변 수돗가에서 모래를 씻은 후 집으로 들어왔다. 아이들이 힘들단다. 당연히 힘들겠지. ㅋㅋ 이제 씻고 저녁 먹자~!

  저녁은 소고기 무국에 짜장 덮밥이다. 애들은 짜장덮밥이 엄청 맛있단다. 그래도 일등은 된장찌게란다. ㅋㅋ

  저녁 먹고 짐 정리를 다시 한번 했다. 초콜릿이 꽤 부피가 나갔다. 겨우 트렁크 닫음. ㅎㅎ. 짐정리가 끝 난 후 오늘 와이키키 차 없는 거리로 나갔다. 장이 열렸다. 피곤하지만 하와이 마지막 밤을 불 태워야지 ㅋㅋ

  쥬스도 한잔 사먹고(자연 그대로라고 애들이 놀라면서 마셨다)

  엄마 줄 목걸이도 사고

  경찰 아저씨들과 사진도 찍고(우리가 찍고나서 사람들이 줄을 섰다. 다들 찍고 싶었는데 말을 못했었나보다. 우리가 일빠로 찍었다 ㅋㅋ)

  큐브도 샀다.

샤라랄라 하고 별빛이 내려야 하는데 지름신이 또 내렸다. 엄마 생각하는 맘이 이뻐서 사주고, 마지막 밤이라 사준다. ㅋㅋ 이제 들어가 자자 내일은 일찍일어나서 공항가야 하니까. 잘 자라~!


블로그 이미지

태후아빠

,

  이십일차... ICC 수업은 마지막 날이었다. 너무 아쉽지만 돌아가야 한다. 아직 해 볼게 많은데... 아이들을 데려다 주고 10층에서 잠깐 여유를 즐긴 후 바로 하와이 대학교(University of Hawaii) Manoa 캠퍼스로 갔다. 지금으로 부터 어언 11년 전, 그러니까 2008년에 여기서 한달간 머물며 영어 공부를 했었다. 그러니까 추억의 장소다. 꼭 와보고 싶었다.

  숙소였던 기숙사, 점심 먹으러 들렀던 학생회관, 수업을 들었던 인터내셔널 컨퍼런스 센터, 시내 가려고 버스 탈 때 항상 거쳤던 싱클레어 써클, 도서관과 서점... 모두 그대로일지 궁금했다. 괜히 설레었다.

  ICC에서 A번 버스를 타고 마노아 캠퍼스로 향했다. 이 버스를 타면 마노아 캠퍼스의 싱클레어 서클에 내릴 수 있다.

싱클레어 서클 옆에 있는 University of Hawaii Foundation 앞

학생회관 앞

인터내셔널 컨퍼런스 센터

해밀턴 도서관

  정말 옛 추억이 새록새록이었다. 한 발짝씩 꼭꼭 밟아 걸어보고 냄새도 맡아보고... 그 때 그 풋풋한 냄새가 느껴지는 듯 했다. 추억에 잠기다 보니 내가 10년은 젊어진 것 같았다. ㅋㅋ. 잠시 해밀턴 도서관에서 여유를 즐겼다.

  교정을 걸으며 잠시 옛 생각도 했다. 그 때 그친구들은 이제 어엿한 직장인이 되어 제역할을 하고 있을 것이다. 박철환, 노길영, 박박사(이름이 잘 기억 안 남 ㅠㅠ 미안) ㅋㅋㅋ 

  기분 좋다~! 오랜 시간은 아니었지만 충분히 추억에 잠기고 잠시나마 젊어졌다. 여기 오길 잘했어. 나중에 태후도 나처럼 옛 생각을 하면서 하와이 이곳 저곳을 다니겠지? ㅋㅋㅋ 눈에 그려진다.

  다시 숙소로 돌아왔다. 청소, 빨래 늘상 하는 일이지만 오늘은 좀더 신중했다. 짐을 싸야 하니까... 아.. 그리고 오늘 ICC 선생님들에게 아이들이 선물을 전달하는 날이다. 3시까지 늦지 않게 ICC로 가야한다. 어제 미리 얘기를 해서 3시 부터 선물을 전달(?)하기로 했었다. 빨래 하는 동안 점심도 후딱 해치우고 설거지까지 마무리 ㅋㅋ 이제 주부 다 됐다. 이정도는 금방 뚝닥.

  선물을 싸들고 ICC에 도착하니 아이들은 Magic Workshop 중 이었다. 그리고 약속한 시간이 되어 선물 증정식. 한 분 한 분 돌아가며 전달 했다. Thank you teacher. I will miss you.

  마지막 사진은 Teens 반의 Kaan 선생님인데 태후가 이분도 줘야 한다고 했다. 다음 번에 하와이 오면 이 선생님과 같이 트래킹도 해보기로 했다. 꼭 다시 와야지. ㅋㅋ

  스태프인 Murat 선생님은 오늘 일찍 퇴근해서 10층 데스크에 남겨두었다. 아 그리고 같이 등교하던 지호, 지윤에게 줄 용제의 책갈피도 역시 10층 데스크에 맏겨두었다.

  태후는 원래 부끄러워서 이런거 잘 못하는데 선생님께 고맙다고 그리울 거라고 말도 잘하고 담임이었던 Cindy 선생님과 허그도 했다. 태후도 아쉬웠던 모양이었다. 지난 3주간 함께 했던 ICC, 그리고 선생님들 안녕. 다시 꼭 올게요. 그 때 또 봐요~~!

  숙소로 오는 길에 월마트에 들러 한국에 가져갈 쵸콜릿을 샀다. 둘 다 똑 같은 것으로 8개씩... 직접 자기들이 골랐다.(나는 개입 전혀 안함 ㅋㅋ) 둘이 상의 하면서 잘 고른다. 최대한 $5 넘지 않는 선에서 골랐단다. 용제는 열쇠 고리, 자기 것과 예린이 것을 추가로 구입했다. 예린이가 귀찮다면서 또 챙기기는 한다. ㅋㅋㅋ

  나는 커피 그라인더, 커피 원두 그리고 마우이 쿠키를 샀다. 한국에 가져갈 게 꽤 많아졌다. 그러나 걱정 없다. 한국에서 가져온 음식들을 거의 다 먹어서 트렁크에 자리가 많이 남는다. ㅋㅋ

  숙소에 돌아와서 밥을 먹었다. 업그레이드 김치 참치 햄 찌게. 이거 거의 부대찌게 수준이다. 앗... 라면 사리를 안 넣었다.

  저녁에 Hilton Hawaiian Village 에서 하는 불꽃놀이를 보러 가기로 했다. 매주 금요일마다 숙소에서도 들릴 만큼 큰 소리로 빵빵. 태후도 궁금해 했었다. 오늘은 드디어 이거 보러 간다. Hilton Hawaiian Village에 인공으로 만든 라군이 있는데 거기서 행사를 한다. 매주 금요일 7시 40분 정도에 한다. 열심히 걸어가서 자리를 잡고 잠시 기다리니 불꽃 놀이가 시작되었다. 영상을 촬영을 했는데 약 4분 20초 정도가 700MB가 넘는다... 여기 못올린다... 500MB 제한... 눈으로 직접 보는게 최고~~!

  돌아와서 짐정리를 시작했다. 남자 아이들 둘을 데리고 있다 보니 할게 더 많다. 이럴려고 내가 여기 온거니 기꺼이 정리 한다. 다만 빼 놓거나 잊고 가지 않도록 해야해서 약간 불안하기만 할 뿐~!

  아이들에게도 나에게도 아쉬운 하루 였다. 떠나는 날이 코앞이라서... 그래도 내일은 고래보러 가야하니까. 이제 푹 쉬자. 아 참. 날씨가 갑자기 좋아지고 있다. 내일도 그랬으면 좋겠다. 


블로그 이미지

태후아빠

,

  오늘과 오전 비행기를 타는 일요일을 제외하고 2일 남았다 금, 토. 이제 슬슬 복귀 준비를 해야한다. 뭐라도 하나 두고 떠나면 영영 찾을 수 없게 되니까 미리 준비하는 것이 좋다. 비행시간이 정해져 있어 그때까지 빠짐없이 짐을 챙겨야 한다. 아이들에게도 미리 일정을 이야기 해줬다. 금요일 오후에 수업 끝나고 한국에 가져갈 선물을 살 것이고, 토요일에 입고 쓸 것들을 제외하고 금요일 저녁에 짐을 정리할 것이라고. 

  비행 전 짐을 쌀 때마다 뭔가 오묘한 감정이 든다. 다시 오기 어려운 곳을 떠나가니 이런 감정이 안 들 수 없다. 도착했을 때 가졌던 해방감, 새로운 곳을 가보고 안먹던 음식을 먹어보고 모르는 사람과 대화하면서 느꼈던 감정을 이젠 책장속에 고이 덮어두고 일상으로 돌아가야 한다. 가보고 해본 것에 대한 즐거운 기억 보다는 못가본 곳 안 해본 일에 대한 아쉬움이 더하는 시간이다. 물건들을 챙기는 것보다 마음을 챙기는게 더 힘들기도 하다.

    

  내일 부터의 일정을 수첩에 적어봤다. 금요일에는 예전에 갔던 하와이 대학을 가보고, 우동 맛집에 들릴것이다. 집에서 빨래를 하고 아이들과 월마트, 돈키호테에 들러 한국에 가져갈 선물을 사고, 저녁에 힐튼 하와이안 빌리지에서 하는 불꽃 쇼를 볼 것이다. 그리고 집에 돌아와 짐을 싸야지. 토요일에는 빨래와 청소를 하고 무스비를 사서 Star of Honolulu를 타고 Whale Watching을 다녀올 것이다. 그리고 가능하다면 아이들과 Surfing을 할 것이다. 날씨의 도움이 극히 필요하다. 제발~~

  남은 음식도 정리해 봤다. 이제 미리 메뉴를 정하고 남는 음식 없이 다 먹고 가야 한다. 그래도 남는다면 아는 사람들에게 주고 간다. 어째 캔 몇개가 남을 것 같다. 헐. 알차게 먹었다고 생각했는데... 그래도 남다니...

  오늘은 아이들이 수영하러 가는 날이었다. 그런데 날씨 때문에 못간다고 한다. 디즈니 영화 시청이 준비되어 있었다. 비고오 날 추워서 애들 감기 걸리기 딱 좋을 텐데 좋을 결정이라고 생각됐다. 덕분에 나도 좀 쉬고. ㅋㅋ

  오늘 아이들에게 준 퀴즈는 1부터 9까지 숫자 중에 9가 무서워하는 숫자는 무엇이고 이유는 또 무엇인가 였다. 선생님께 여쭤보면 잘 설명해 주실 것이다. ㅋㅋ 선생님께 부탁하고 10층에서 여유를 가졌다. 내일과 모래 일정도 10층에서 적은 것이다. ㅎㅎ 오늘은 빨래 안하는 날이라서 좀 더 여유를 부려봤다. 어차피 비와서 밖에 나가면 손해다. 랩탑을 펼쳐 놓고 커피 한 잔의 여유를 즐겼다.

  집에 돌아와 집안 일을 잠깐 해 놓고 다시 ICC로 갔다. 약간 일러서 10층에서 여유를 부리고 있는데 엄청난 무지개가 뙇. 바로 캠을 꺼내 촬영을 했다. 이거 눈으로 직접 봐야 하는데... 카메라로 담기에는 너무 아름 다웠다. 자세히 보면 쌍 무지개다. 토요일 날씨가 좋을 거라는 '약속'이었으면 좋겠다.

  시간이 되어 16층 아이들이 있는 곳으로 갔다. 퀴즈를 풀었냐고 물었다. 대답이 시원치 않다. 선생님의 말을 제대로 못 알아 들은 모양이었다. 한국말로 설명해 줬다. 세븐 에잇 나인. 에잇은 원래 eight인데 eat의 과거형인 ate와 발음이 같다. 다시 말해서 세븐 에잇 나인은 '세븐이 나인을 먹었다'로 들릴 수 있다. 그래서 나인은 세븐을 무서워 한다. 예전에 자신을 먹었기 때문에 또 잡아 먹힐까봐 무서워한다. 동사 과거형을 가르치기 좋은 문제였는데... 여튼 선생님이 오늘 과거형에 대해 가르쳐 줬다고, 문제하고 관련이 있어서 신기하다고 했다. ㅋㅋㅋㅋ

  집에 오기 전에 돈키호테에 들렀다. 한국 갈 때 사갈 선물들을 미리 보기 위해서 였다. 그런데 생각해 보니 지금 사도 될 만 했다. 그래서 샀다. 열쇠고리, 자석, 수첩, 병따개. ㅋㅋㅋ 이런게 선물로는 딱이지. 아이들도 선물 고르는 재미에 푹 빠졌다. 내일은 월마트에 들러서 초콜릿, 마카디미아, 마우이 쿠키를 사볼 예정이다.

  집에 돌아오는 버스 안에서 어떤 할머니들이 태후에게 장난을 걸었다. 옆구리를 간지르며 간지름 잘 타냐고 물었다. 태후는 '노'라고 대답했다. 순간 주위 사람들이 귀엽다며 모두 웃거나 미소를 지었다. 태후의 귀여움은 여기서도 통하는 모양이었다. 태후가 입은 ICC 티셔츠에 관심을 보이며 여기 사느냐, 학교 다니녀 여러 가지를 물었다. 태후는 꿀먹은 벙어리였다. ㅋㅋㅋ 내가 대신 대답해줬다. 태후야~! 다음에는 니가 대답해~1

  집에와서 김치 찌게를 끓여먹고... 이제 김치 찌게는 식은 죽 먹기다. 용제가 다음번에는 햄을 넣어서 부대 찌게 처럼 만들어 달란다. 오케이 콜~! 내일은 부대찌게(음... 마루카미 우동은 언제 먹으러 가지?)





블로그 이미지

태후아빠

,

  아침 부터 비가 내렸다. 요즘이 하와이의 우기(겨울)이기는 하지만 지난 주까지는 스콜처럼 잠깐 내리고 그쳤다. 그런데 이번 주는 좀 다르다. 특히 오늘은 하루 종일 비가 오락 가락 했다. 비가 왔다 하면 장대비 였다. 날씨를 확인 했다. 그런데 ㅠㅠ 이번 주 내내 비다. 토요일에는 Thunderstorms 란다. 토요일에 고래 보러 가기로 했는데... 이거 실화냐?

  펀치 보울도 가야하고 서핑도 해야하는데 날씨가 안 도와 준다. 지금 하와이 현재상황은... 아래 그림과 같다. 녹색 선들이 바람을 표시하는 건데... 오아후를 사정없이 때리고 있다. 바다에서 오는 바람이라 습기를 잔뜩 머금었을 건데 섬을 지나면서 다 쏟아내고 있는 것 같다. (하와이 현재상황)

  아침은 간단히 토스트였다. 구운 빵에 쨈을 바르고, 달걀, 햄, 토마토를 올려서 먹었다. 태후는 우유, 용제는 물과 함께 먹었다. 그리고 ICC로 출발. 이제 지겨워지기 시작한 비가 내리고 있었다. 그리고 용제의 우산이 빛을 발하고 있었다. ㅋㅋ

  아침에 태후와 용제에게 영 단어 퀴즈를 줬다. 이 세상에서 가장 긴 영어 단어는? 넌센스 퀴즈인데 모르겠으면 선생님께 여쭈어 보라고 했다. 맞추면 맛있는거 준다고 했다. 먹고 싶으면 선생님께 여쭈어서 라도 풀어 오겠지. 선생님께 질문 하려면 영어로 해야해서 애들에게 주는 적당한 미션이라고 생각 되었다. 선생님들께는 아이들이 물으면 답을 알려주고 정답인 이유를 잘 설명해 달라고 부탁드렸다.

  아이들 데려다 주고 나는 10층에 들러 잠깐 여유를 가졌다. 좋다~~! 이번 주 일요일 비행기를 타야하니 조금씩 준비를 해야했다. 그래서 월마트와 돈키호테에 들렀다. 우선 선물은 어떤 것으로 살지 살폈다. 코나 커피, 초콜릿, 마카디미아, 마우이 쿠키 이런 것들이 후보다. 마우이 쿠키는 정말 맛있었다. 퀴즈를 풀어오면 아이들에게 선물로 줘도 되겠다 싶었다. 이거 선물로 사가야 겠다.

  점심 시간 즈음 ICC에 들러 아이들 밥 잘 먹는지 봤다. 그런데 Staff 중 한명인 Murat이 도시락을 나에게 건냈다. 아니라고 괜찮다고 했는데 남는 것이라고 다시 권했다. ㅎㅎ 이런 고마울데가... 아이들이 어떤 것을 먹는지 확인할 겸 받아서 먹어봤다. 꽤 먹으란 했다. 어떤 아이들은 맛이 없다고 하던데 이정도면 괜찮다 싶었다. 태후에게 물으면 항상 남기지 않고 다 먹었다고 하는데 그럴 만  했다.

  집에 와서 또 청소, 설겆이... 오늘은 빨래도 해야했다. 이불도 하나 빨았다. 세탁기가 해주니 편하다. 말려주기까지 ㅋㅋ 집안일이 끝나고 아이들을 데리러 갔다. 그런데 비가 여전히 내렸다. 이번 주 왜이럴까?

  ICC에 도착해서 아이들을 만났다. 영어 단어 퀴즈의 정답을 확있했다. smiles. 선생님께 정답을 받았던 모양이었다. smiles는 S와 S 사이에 mile(길이의 단위로 약 1.6Km)이 있으므로 세상에서 가장 긴 단어는 smiles이다. 답을 맞췄으니 마우이 쿠키를 주기로 했다.

  오후 Activity는 Hardware Science였다. 못 12개를 세우는 것과 쇠고랑에 목걸이 줄 감기(?), 그리고 새 균형 잡기를 했다고 한다. 쇠고랑에 목걸이 줄 감는 도구는 하나씩 나누어 줬는 모양이었다. 집에 와서 계속 도전했다. 잘 안 되기는 하지만 가끔 된다. 그걸 또 용케 촬영했다. ㅋㅋ

  오늘은 애들에게 닭 볶음탕을 해주기로 한 날이었다. 요리 재로는 이미 사다 놨고 레시피만 있으면 된다. 인터넷을 검색했는데 맛있게 하려면 부족한 재료들이 꽤 있었다. 하지만 걱정 없었다. 난 할 수 있으니까 ㅋㅋㅋ 중요한 고추가루가 없다. 숙소 근처 Food Pantry에 달려가 고추 비슷한 것을 샀는데 이놈 꽤 맵다. 아.. 버섯도 샀다. 재료를 모두 꺼내 확인하고 씻고 잘라 준비 했다.

  처음에 닭을 잘 씻어 물로 끓였다. 설탕도 살짝 넣어줬다. 한국이라면 꿀을 넣었을 텐데... 에혀... 화력이... 거의 30분 정도(기분상으로) 기다렸던 것 같다. 아.. 중간에 된장을 풀어 넣었다. 닭 냄새가 나면 안되니까. ㅋㅋ 기다리기 지루해서 마늘을 썰었다. 된장찌게, 김치찌게에 들어가는데 시간 날때 해놔야지 싶었다. 빠을 수 없으니 최대한 작게...(영상은 태후가 찍어 줬다. 고마워~~!)

  닭을 품은 물이 슬슬 끓기 시작했고 감자, 당근, 양파를 넣었다. 이때 요리수도 함께 넣었다. 간장이 없어 된장과 요리수로 대신한 것이었다. 또 한참을 기다렸다. 애들이 배고플까봐 걱정되었다. 마우이 쿠키로 시장기만 재워두게 했다.

  다시 팔팔 끓어서 고추, 파, 마늘, 버섯을 넣었다. 또 기다리기... 밥은 벌써 다 되었다. 참... 요즘 우리가 먹는 일본 쌀 꽤 맛있다. 작은거 하나 사갈까? ㅋㅋ 한참을 지나 다시 끓기 시작했다. 간은 약간 싱겁지만 계속 졸여주면 짭짤해 진다. 빨이 쫄았으면 좋겠다고 생각하며 다시 기다렸다. 그런데 물이 잘 줄어들지 않았다. 왜지? 왜 이렇게 물이 많지? 그때 깨달았다. 내가 물을 너무 많이 넣었다는 것을... 이 화력에 물이 쫄아들기를 기다린다면 내일 아침이나 되서 먹을 수 있을 것 같았다. 하는 수 없이 그냥 먹는 수 밖에...

  상을 차리고 아이들을 불러 먹으라고 한 뒤, 내 밥을 챙겼다. 앗... 사진... 아이들은 벌써 먹고 있었다. 괜찮다. 지금이라도 찍자.

  음... 이게 닭 볶음탕이야? 무슨 매콤한 삼계탕 같애~! 그리고 좀 싱거워~! 아니 삼계탕이 아니고 감자가 들어간 감계탕이야. 점수를 물으니 용제는 50점, 태후는 85점. 태후는 그래도 맛은 있다고 한다. 닭 볶음탕을 목표로 달리다가 길을 잘 못들어 감계탕이 되어 버렸다. 실패~!

 그런데 용제야~! 밥은 다 먹었는데 감계탕은 왜 계속 먹니? ㅋㅋ  고기잖아요 ㅋㅋㅋ 그래 많이 먹어라~~! 태후는 밥을 두 사발 먹었다. 대단한 놈


블로그 이미지

태후아빠

,

  열 일곱번째 날이다. 오늘은 어제 가지 못한 펀치 보울에 가기로 했었다. 그런데 날씨가 도와 주려나? 아침부터 하늘이 심상치 않다. 오늘까지 못가면 포기 해야겠지? 운에 맏기기로 했다.

  아침 밥은 어제 먹었던 된장 찌게 였다. 한국서 가져온 밑반찬을 준비하고 햄도 상에 올렸다. 오늘도 역시 맛있게 먹었다. ㅋㅋ

  오늘은 좀 늦게 출발했다. 하지만 하와이 생활에 익숙해져서 매일 타는 13번이 아니라도 어떤 버스를 타야 늦지 않게 도착할 수 있는지 안다. 8번을 타고 알라모아나 쇼핑 센터에서 내려서 약간 걸으면 시간에 맞추어 도착할 수 있다. 변수만 없으면 된다. 딱 2분 늦었다.(9시 2분 도착) 아이들은 수업에 들어가고 나는 10층에서 공부(?)를 했다.

  어제 Murat(ICC 스태프)이, 오늘 있을 Teens Activity에 함께 가지 않겠냐고 물었었다. 호놀룰루 전경이 보이는 Tantalus Lookout에 방문할 예정이라고 했다. 당시에는 안 간다고 했었는데 다시 생각해보니 가는게 좋을 것 같았다. 공짜로 데려다 준다는데 마다할 이유가 있겠는가? ㅋㅋㅋ 물론 내가 어떤 역할을 해야겠지만... 

  오늘 다시 Murat을 찾아가 마음이 바뀌었다고 말했다. Murat은 기꺼이 포함시켜주겠다고 했다. 자리가 있으면 ㅎㅎ. 1시에 출발하는데 얼른 집에 가서 집안일 좀 하다가 밥 먹고 다시 오면 된다. 다녀오는 길에 아이들 자켓을 챙겼다. 실내는 에어컨을 켜기 때문에 은근히 추울 수 있다. 아이들은 전혀 안춥다고 하지만...

  시간이 되어 Teens반 선생님 Khan을 만났다. 간단히 인사를 하고 함께 동행할 수 있게 해줘서 고맙다고 했다. 그리고 차를 타고 약 20분 정도 이동했다. 목적지에 도착하고 나서 기억을 더듬었는데 2008년에 와 봤던 곳이란 생각이 들었다. 그러나 그 때는 밤중이라 호놀룰루 불빛만 봤었다. 그때도 엄청 아름다웠지만 오늘은... 와 호놀룰루가 다 보였다. 다이아몬드 헤드 부터 공항까지 약간 비가 와서 흐리게 보이기는 하지만 다 보였다. 오길 잘 했다.

  전망대에서 사진 한컷 찍고 트래킹을 시작했다. 울창한 수풀 사이로 오솔길을 걸었다. 비가 약간 오지만 맞아도 된다. 공기도 맑고 비도 깨끗하니까. 젖은 옷은 따뜻한 햇살과 시원한 바람에 맏기면 된다. 아이들은 트래킹을 싫어했지만 Khan과 나는 더 가고 싶었다. 하지만 안전을 위해 복귀하기로 결정했다. 엄청 엄청 아쉽다.

  오는 차 안에서 Khan이 하이킹 엄청 좋아하고 자주 하는 ICC 선생님을 소개 시켜주겠다고 한다. 완전 전문가라서 하와이의 웬만한 코스는 다 다녀봤고 적당한 코스도 알려 줄 수 있는 사람이라고 했다. 이번에 트래킹은 무리긴 하지만 다음번에 오면 꼭 소개 받아 코스를 밟아 보고 싶다. 그때는 태후도 더 커있을 테고 하이킹 할 만할 것이다.

  ICC에 도착해서 아이들을 픽업했다. 그런데 날씨가... 왜 이렇게 안도와 주는지. 바람 불고 비 오고... 오늘도 펀치 보울은 패스해야 할것 같았다. 이번 여행에서 가 볼 수 있을까? 

  오늘도 일단 후퇴다. ㅠㅠ

  집에와서 저녁 먹고 푹푹 쉬었다. 모아나 영화 보면서... 이게 마우이를 배경으로 한 에니메이션이다. 잘 골랐네.

  아... 용제가 4반으로 이동을 했는데 이 반은 하이 클래스다. 숙제도 있다. 오늘 자기 전 숙제를 도와줘야 한다. 태후는 언제 용제만큼 하게 되려나~~. 금방 하겠지~~ 세월은 빠르니까 ㅋㅋ


블로그 이미지

태후아빠

,