KR20220013655A - 확장현실 서비스 장치의 축 동기화 프로그램 - Google Patents

확장현실 서비스 장치의 축 동기화 프로그램 Download PDF

Info

Publication number
KR20220013655A
KR20220013655A KR1020200092855A KR20200092855A KR20220013655A KR 20220013655 A KR20220013655 A KR 20220013655A KR 1020200092855 A KR1020200092855 A KR 1020200092855A KR 20200092855 A KR20200092855 A KR 20200092855A KR 20220013655 A KR20220013655 A KR 20220013655A
Authority
KR
South Korea
Prior art keywords
terminal
axis
rotation angle
tracker
rotation
Prior art date
Application number
KR1020200092855A
Other languages
English (en)
Inventor
황영진
정상철
Original Assignee
주식회사 리얼위드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 리얼위드 filed Critical 주식회사 리얼위드
Priority to KR1020200092855A priority Critical patent/KR20220013655A/ko
Publication of KR20220013655A publication Critical patent/KR20220013655A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B21/00Measuring arrangements or details thereof, where the measuring technique is not covered by the other groups of this subclass, unspecified or not relevant
    • G01B21/22Measuring arrangements or details thereof, where the measuring technique is not covered by the other groups of this subclass, unspecified or not relevant for measuring angles or tapers; for testing the alignment of axes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

확장현실 시스템에 채용되는 단말기 내부 및 외부의 센서의 축을 동기화시키는 축 동기화 기능을 포함한 확장현실 서비스 장치 및 이의 축 동기화 방법과 그 프로그램을 제시한다. 제시된 장치는 단말기 및 트래커를 포함하는 클라이언트에게 확장현실 기반의 컨텐츠를 제공하는 확장현실 서비스 장치에 있어서, 상기 단말기에 설치된 제 1 센서와 상기 트래커에 설치된 제 2 센서의 축을 동기화시키는 축 동기화부를 포함하되, 상기 축 동기화부는, 상기 단말기 및 상기 트래커로부터 각각의 회전 정보를 수신하는 회전정보 수신부; 상기 단말기의 회전 정보와 상기 트래커의 회전 정보를 근거로 상기 제 1 센서와 상기 제 2 센서의 축 동기화를 위한 오프셋을 계산하는 오프셋 계산부; 및 상기 계산된 오프셋을 근거로 상기 제 1 센서와 상기 제 2 센서의 축을 동기화하는 동기화부;를 포함한다.

Description

확장현실 서비스 장치의 축 동기화 프로그램{Program for axis synchronization of extended reality service device}
본 발명은 축 동기화 프로그램에 관한 것으로, 보다 상세하게는 확장현실 시스템내의 단말기 외부의 센서의 축과 단말기 내부의 센서의 축을 동기화시키는 방법을 컴퓨터에서 실행시키기 위한 프로그램에 관한 것이다.
컴퓨팅 파워가 극적으로 성장하고, 그래픽 처리 기술과 네트워크 기술이 고도화하면서 가상현실, 증강현실, 혼합현실이 우리 생활 곳곳에 구현되고 있다.
가상현실(VR)은 실제로 존재하지는 않지만 실제로 존재하는 것 같은 현실을 말한다. 가상현실은 현실세계의 객체 또는 배경 등을 컴퓨터를 사용해서 인공적으로 구현해 놓은 인공 세계 또는 그러한 기술을 의미한다.
증강현실(AR)은 현실세계에 가상 세계를 반영하거나 확장시키는 기술이다. 증강현실은 실세계의 객체에 가상 객체로 구현된 관련 정보를 합성하여 증강된 정보 서비스를 부가하는 개념이다.
혼합현실(MR)은 가상현실(VR)과 증강현실(AR)을 통합하고 사용자와의 인터랙션(상호작용)을 더욱 강화한 방식이다. 혼합현실(MR)은 현실세계에 가상 객체들을 섞고 결합시켜서 보여주는 면에서 증강현실과 유사한 점이 있다.
그러나, 증강현실에서는 현실 객체와 가상 객체의 구별이 뚜렷하고 현실 객체를 보완하는 형태로 가상 객체를 사용하는 것에 비해, 혼합현실에서는 가상 객체가 현실 객체와 동등한 성격으로 등장하고, 독립적인 형태로 운영되며 마치 가상현실과 같이 몰입감있게 보여진다는 점에서 증강현실과 확연히 구별된다.
이와 같이 컴퓨팅 파워와 그래픽 처리 기술 등에 힘입어 현실의 경험을 확장하는 기술들이 등장하였는데, 이러한 기술들을 확장현실(eXtended Reality, XR)이라 한다.
확장현실(XR)은 가상현실(VR)과 증강현실(AR)을 아우르는 혼합현실(MR) 기술을 망라하는 초실감형 기술 및 서비스를 의미한다. 이때, X는 변수를 의미하며, VR, AR, MR뿐만 아니라 미래에 등장할 또 다른 형태의 현실도 다 포괄할 수 있는 용어이다.
확장현실(XR)을 구현하기 위해서는 가상 객체(및 배경)를 컴퓨터로 생성한 후, 사용자의 시선 변화 또는 움직임을 추적해 가며 가상 객체 및 배경에 움직임을 부여하고, 사용자와 동기화시켜야 한다.
이러한 확장현실(XR) 기반의 컨텐츠를 체험하는 경우, 종래에는 절대값이 입력된 특정 단말기만을 사용하도록 하고 있는데, 이럴 경우에는 해당 특정 단말기만을 사용해야 되므로 범용성이 떨어진다.
또한, 여러 측위시스템이 같이 동작하게 될 경우 서로의 기준점이 일치하지 않기 때문에 동일한 추적 결과를 도출할 수 없다.
선행기술 1 : 대한민국 등록특허 제10-0953931호(혼합현실 구현 시스템 및 그 방법) 선행기술 2 : 대한민국 공개특허 제10-2019-0118373호(가상현실 체험 시스템 및 방법) 선행기술 3 : 대한민국 등록특허 제10-0900806호(컨텍스트 인식 증강 현실을 제공하기 위한 시스템 및 방법)
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, 확장현실 시스템에 채용되는 단말기 내부 및 외부의 센서의 축을 동기화시키는 축 동기화 기능을 포함한 확장현실 서비스 장치 및 이의 축 동기화 방법과, 그 방법을 컴퓨터에서 실행시키기 위한 프로그램과 그 기록매체를 제공함에 그 목적이 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 바람직한 실시양태에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치의 축 동기화 방법 프로그램은, 단말기 및 트래커를 포함하는 클라이언트에게 확장현실 기반의 컨텐츠를 제공하는 확장현실 서비스 장치가 상기 단말기내의 제 1 센서와 상기 트래커내의 제 2 센서의 축을 동기화시키는 방법으로서, 축동기화를 위하여 단말기의 회전각(A)과 트래커의 회전각(B)이 설정된 시간이 흐른뒤, 회전된 회전각을 측정하여 각각의 축의 회전각 차이를 구하여 기록하는 단계; 상기 단말기와 트래커의 각각의 축의 회전각 차이를 누적 기록함과 아울러 단말기의 축과 트래커의 축 사이의 회전각 새로운 회전각차이(Cn)를 구하는 단계; 이전 회전각 차이(C)에 상기 새로운 회전각 차이(Cn)를 반영하여 현재 적용될 오프셋값을 구하여 저장함과 아울러 오프셋값을 단말기의 축정보에 반영하여 축 동기화를 시키는 축동기화단계를 포함하는 축 동기화 방법을 컴퓨터에서 실행시키기 위한 프로그램을 제공한다.
상술한 본 발명의 축 동기화 기능을 포함한 확장현실 서비스 장치의 축 동기화 방법은, 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 또한 상기한 축 동기화 방법은 컴퓨터에서 실행시키기 위한 프로그램으로 구현될 수 있고, 그 프로그램이 기록된 기록매체로 구현될 수 있다.
이러한 구성의 본 발명에 따르면, 특정 단말기 대신에 통상적인 단말기를 사용하더라도 단말기의 내부센서와 외부센서간의 축 동기화를 손쉽게 달성하므로, 확장현실 시스템에 채용되는 단말기의 범용성을 제공할 수 있다. 즉, 개발사 또는 제조사에서 상정하지 않은 단말기들도 사용하기 편해지므로, 개발사 또는 제조사에서 상정하지 않은 단말기를 사용하여 확장현실 기반의 컨텐츠를 언제든지 체험할 수 있다.
또한, 여러 사용자가 같은 공간에서 확장현실 기반의 컨텐츠를 체험할 경우에도 서로 동일한 가상좌표를 공유하는 것이 무척 수월해져서 동일한 추적 결과를 도출할 수 있다. 또한, 사용자간에 서로를 손쉽게 인식할 수 있으며, 이질적인 공간감에서 오는 부딛힘과 거북함 등을 없앨 수 있다.
도 1은 본 발명의 실시예에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치가 적용된 확장현실 시스템의 구성도이다.
도 2는 도 1에 도시된 HMD와 단말기 및 트래커를 확대한 도면이다.
도 3은 본 발명에 의한 확장현실 서비스 장치의 축 동기화 장치 개념도이다.
도 4은 도 1에 도시된 축 동기화부의 내부 구성도이다.
도 5는 본 발명의 실시예에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치에서의 축 동기화 방법을 개략적으로 설명하기 위한 플로우차트이다.
도 6는 도 5에 도시된 오프셋을 계산하는 단계를 보다 구체적으로 설명하기 위한 플로우차트이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치가 적용된 확장현실 시스템의 구성도이고, 도 2는 도 1에 도시된 HMD와 단말기 및 트래커를 확대한 도면이다.
도 1의 확장현실 시스템은, 서버(50), 클라이언트(100), 및 네트워크(200)를 포함할 수 있다.
서버(50)에서 확장현실 기반의 컨텐츠(예컨대, 게임, 교육, 관광 등에 관련된 컨텐츠)를 네트워크(200)를 통해 클라이언트(100)에게로 보내면, 클라이언트(100)의 단말기의 디스플레이부를 통해 확장현실 기반의 영상이 디스플레이된다. 이에 사용자는 손에 쥐고 있는 컨트롤러를 조작하여 확장현실 기반의 컨텐츠(예컨대, 게임)를 즐기게 된다.
클라이언트(100)는 사용자가 사용하는 것으로서, 소정의 게임 룸에 비치될 수 있다.
도 1에는 클라이언트(100)를 하나만 도시하였는데, 이는 도면의 이해를 돕기 위해 간소화시킨 것일 뿐, 실제로는 다수의 클라이언트가 존재할 것이다. 예를 들어, 게임 룸마다 하나 이상의 클라이언트(100)가 존재할 수 있다.
클라이언트(100)는 컨트롤러(10), 단말기(30)가 장착된 HMD(20), 및 트래커(40)를 포함할 수 있다.
컨트롤러(10)는 사용자의 행동을 반영하고, 사용자의 의지를 전달할 수 있다.
예를 들어, 컨트롤러(10)로는 동작인식 기반의 컨트롤러, 물리 컨트롤러, 부착형 동작인식 기반의 컨트롤러, 뇌파인식 기반의 컨트롤러 등이 있을 수 있다.
동작인식 기반의 컨트롤러는 사용자들의 위치가 정확히 식별되었을 경우에 사용됨이 바람직하다. 먼저, 적외선 또는 이미지 인식방법을 통해서 여러 대상들의 동작을 측정한다. 그리고, 동작이 일어난 대상들의 위치를 앞서 구해낸 위치와 비교하여 동작정보를 서버(50)에 대입하는 방식으로 사용자의 의지를 반영할 수 있다.
3DOF, 6DOF 물리 컨트롤러는 물리 버튼이 있고, 손에 쥘 수 있는 컨트롤러를 가리킨다. 내장된 여러 가지 칩(자이로, 가속도, 컴퍼스, 이미지센서 등)의 정보를 사용자 또는 서버(50)에 전달함으로서 사용자의 의지를 반영할 수 있다.
부착형 동작인식 기반의 컨트롤러는 사용자의 손목, 허리, 무릎, 발 등에 부착하여 측위되는 시스템으로서 외부에 관측장비가 존재한다는 것은 동작인식 기반의 컨트롤러와 유사하지만, 그 대상이 동작이 아닌 컨트롤러에 해당한다.
뇌파인식 기반의 컨트롤러는 단말기(30)에 뇌파를 감지하는 모듈이 결합되거나 추가부착되는 형태로서 사용자의 행동을 외적으로 판단하지 않고, 뇌파의 결과와 신체상태로만 판단하여 사용자의 의지를 반영할 수 있다.
HMD(Head Mounted Display)(20)는 사용자의 머리에 착용되며, 사용자 주위의 영상을 촬영하여 실제 영상정보를 획득할 수 있는 단말기(30)가 장착된다(도 2 참조). 도 1에서는 HMD라고 하였으나, FMD(Face Mounted Display)이어도 무방하다.
단말기(30)는 센서(30a)를 포함하여 사용자의 움직임을 감지하고, 디스플레이되는 실제영상정보 상에 3차원 가상객체를 표시할 수 있다.
여기서, 센서(30a)는 해당 단말기(30)의 이동 위치 및 방향, 이동 속도 등을 감지할 수 있다. 단말기(30)가 장착된 HMD(20)는 사용자의 머리에 착용되므로, 한편으로 센서(30a)는 사용자의 움직임에 따라 해당 사용자의 이동 위치 및 방향, 이동 속도 등을 감지한다고 볼 수 있다. 즉, 사용자의 움직임과 단말기(30)의 움직임을 동일한 것으로 간주할 수 있다. 센서(30a)는 내부 센서라고 할 수 있다.
예를 들어, 센서(30a)는 6-DOF 센싱으로서, 9-AXIS(Gyroscope, Accelerometer, Compass)의 센서 퓨전(Sensor Fusion)된 값을 사용할 수 있다.
6-DOF(Degree of freedom)는 6점 자유도라는 뜻으로, XYZ로 이루어진 3차원 좌표를 3DOF 라고 한다. 일반적으로 3DOF는 단말기(30)의 회전값을 사용할 수 있다는 의미이며, 6DOF는 회전값과 위치값을 사용할 수 있다는 의미이다.
9-AXIS는 9개의 축을 가리키며, X, Y, Z, W 등의 한 개의 축을 1AXIS로 부른다. 일반적으로 각각 Gyroscope의 xyz, Accelerometer의 xyz, Compass의 xyz를 합쳐서 9AXIS라 칭한다.
단말기(30)는 서버(50)에 접속하여 서버(50)에서 제공하는 컨텐츠, 사용자 등의 정보를 확장현실(XR)로 표현할 수 있다.
단말기(30)는 서버(50)와 쌍방향 통신이 가능하며, 현실정보의 투영 및 함께 플레이하는 사용자들의 정보가 투영가능하다.
예를 들어, 단말기(30)는 스마트폰 등과 같은 모바일 기기일 수 있다.
상술한 설명에서는 단말기(30)가 HMD(20)에 장착되는 것으로 하여 HMD(20)와 단말기(30)를 각각 도시하였으나, 단말기(30)가 장착된 HMD(20)를 단말기로 통칭할 수도 있다. 만약, 단말기(30)가 장착된 HMD(20)를 단말기로 통칭하였을 경우, 단말기(30)는 모바일 기기로 지칭할 수 있다.
도 1에는 도시하지 않았지만, 단말기(30)는 센서(30a) 이외로, 서버(50)와 통신 기능을 수행하는 통신부, 사용자 주변을 촬영하는 카메라, 3차원으로 랜더링된 가상 객체 또는 단말기(30)의 움직임 좌표에 대응되는 3차원 가상 객체 이미지가 저장되어 있는 가상 객체 DB, 확장현실 영상을 사용자의 시야에 제공하기 위한 디스플레이부, 및 3차원 가상 객체를 실제 영상정보상에 중첩하여 디스플레이부에 표시되게 하는 프로세서 등을 포함할 수 있다.
트래커(tracker)(40)는 도 2에서와 같이 HMD(20)에 설치될 수 있다.
트래커(40)는 게임 공간 내부에 설치된 송신부(도시 생략)로부터의 소정의 전파를 수신할 수 있다. 송신부는 게임 공간 내부에 다수개 설치됨이 바람직하다.
예를 들어, 송신부는 적외선 레이저를 방사할 수 있다. 이 경우, 송신부는 세로로 회전하는 모터와 가로로 회전하는 모터를 구비한다. 세로 회전 모터에는 가로방사형 적외선 레이저가 부착되고, 가로 회전 모터는 세로 방사형 적외선 레이저가 부착되어 있다. 적외선 레이저는 일정 주기로 가로와 세로를 방사하는데, 방사가 끝나면 전체 적외선을 방사하여 한 종류의 방사가 끝났음을 알린다.
이와 같이 송신부에서 송신되는 전파(적외선 레이저)는 트래커(40)에서 수신된다. 트래커(40)에는 대략 15개 ~ 100개 정도의 센서(40a)가 방사형으로 위치할 수 있다. 이 센서(40a)들은 적외선 레이저들을 수신하는 시간의 차이를 계산하여 해당 트래커(40)의 위치를 특정할 수 있다. 적외선을 발사한 대상이 같기 때문에 트래커(40)들은 모든 정보를 적외선 송신기를 타겟으로 계산할 수 있어 같은 시간에 공간상의 위치를 도출해낼 수 있다. 여기서, 센서(40a)는 외부 센서라고 할 수 있다.
이와 같이 트래커(40)는 송신부로부터의 전파를 수신하여 시간에 따른 단말기(30)의 움직임(위치값, 회전값) 좌표를 측정하고, 측정된 단말기(30)의 움직임 좌표를 서버(50)에게로 전송할 수 있다.
즉, 단말기(즉, 사용자)의 움직임 좌표를 보다 정확히 산출하기 위해, 본 발명의 실시예에서는 내부 센서(즉, 단말기(30)의 센서(30a))를 통해 단말기(30)의 움직임 좌표를 측정하고, 또한 외부 센서(즉, 트래커(40)의 센서(40a))를 통해 단말기(30)의 움직임 좌표를 측정한다.
서버(50)는 단말기별 식별코드를 분배하고, 확장현실 기반의 컨텐츠(프로그램)를 자동으로 업데이트할 수 있다.
서버(50)는 클라이언트(100)에게로의 확장현실 기반의 컨텐츠의 제공 및 실행을 제어하고, 컨트롤러(10)와 단말기(30)간의 연결을 제어하고, 단말기(30)의 상태를 제어할 수 있다.
서버(50)는 단말기 화면의 녹화/녹음, 단말기 화면의 스트리밍, 및 단말기의 카메라를 제어할 수 있다.
서버(50)는 단말기(30)로부터의 해당 단말기(즉, 사용자)의 움직임 좌표 및 트래커(40)로부터의 단말기(즉, 사용자) 움직임 좌표를 근거로 단말기(30)의 현재 움직임 좌표를 산출하여 단말기(30)에게로 전송할 수 있다.
물론, 서버(50)는 사용자간을 연결시켜 주는 것을 근간으로 하며, 게임 실행, 중단 및 팀 배정, 게임 종류 선택, 컨트롤러 지정 등의 전체적인 시스템 설정을 진행할 수 있다.
특히, 서버(50)는 단말기(30) 내부의 센서(30a)와 단말기 외부의 센서(즉, 트래커의 센서(40a))의 축을 동기화시키는 축 동기화부(60)를 포함한다.
축 동기화부(60)의 필요성에 대해 설명하면 하기와 같다.
단말기(30)와 트래커(40)의 회전각을 서로 비교하여 보면, 도 2에 예시한 바와 같을 수 있다.
도 2에서, HMD(20)에 표시한 3축은 단말기(30)의 센서(30a)의 회전각으로서, 게이머가 HMD(20)를 착용하였을 경우 단말기(30)의 하면이 정면으로 되고, 단말기(30)의 측면이 윗면으로 되는 일반적인 VR 단말기의 회전각을 보여준다.
한편, 트래커(40)에 표시한 3축은 트래커(40)의 센서를 서버(예컨대, PC)(도시 생략)에서 관측하였을 때의 회전각을 보여준다.
도 2에 예시한 바와 같이, 현실세계에서의 물리적인 각도는 눈에 보이고 판정이 되지만, 실제 데이터에서는 센서(30a)의 회전각과 센서(40a)의 회전각은 명확하지 않으며 서로 일치하지 않을 것이다. 즉, 트래커(40)를 중심으로 봤을 때 단말기(30)의 센서(30a)의 각과 트래커(40)의 센서(40a)의 각은 현실세계의 회전각의 차이와 상이하게 될 것이다. 다시 말해서, 독립된 2개의 센서(30a, 40a)는 서로의 위치축과 기준점이 상이할 것이다.
따라서, 이러한 문제를 해결하기 위해, 단말기(30) 내부의 센서(30a)와 단말기 외부의 센서(즉, 트래커의 센서(40a))의 축을 동기화시키는 축 동기화부(60)가 필요하다.
축 동기화부(60)를 이용하게 되면 독립된 2개의 센서(30a, 40a)의 위치축과 기준점을 동일하게 유지시킬 수 있으므로, 사용자간에 공간을 공유하고 현실감을 증가시킬 수 있다. 특히, 여러 사용자가 같은 공간에서 확장현실 기반의 컨텐츠를 체험할 경우에도 서로 동일한 가상좌표를 공유하는 것이 무척 수월해져서 동일한 추적 결과를 도출할 수 있다. 이로 인해, 사용자간에 서로를 손쉽게 인식할 수 있으며, 이질적인 공간감에서 오는 부딛힘과 거북함 등을 없앨 수 있다.
축 동기화부(60)의 내부 구성에 대해서는 후술하기로 한다.
상술한 서버(50)는 본 발명의 청구범위에 기재된 확장현실 서비스 장치의 일 예가 될 수 있다.
도 1에서, 네트워크(200)는 3가지 체계를 포함할 수 있다.
예를 들어, 네트워크(200)는 일반 네트워크(일반적인 반응), 고속 네트워크(빠른 반응), 대용량 네트워크(빠른 속도, 느린 반응)의 3가지 체계를 포함할 수 있다. 3가지 네트워크 체계는 독립된 네트워크 TCP/IP 소켓을 가지고 있다.
여기서, 일반 네트워크는 일반적으로 구성하는 온라인 서버의 네트워크 구성을 말하며, 서버(50)와 클라이언트(100)가 이질적이지 않은 범위에서 버퍼링을 실시할 수 있는 네트워크를 의미한다. 버퍼링이란 너무 잦은 데이터를 전송하거나 소량의 데이터를 전송할 때, 네트워크(200)의 부하를 줄이기 위해 한 개의 데이터로 저장하여 보내는 방식을 말한다.
본 발명의 실시예는 일반 네트워크에서 최대패킷량(MTU)을 기준으로 구성될 수 있으며, 이때의 데이터는 최대 0.05초만큼 데이터 전송을 대기한 뒤 전송될 수 있다. 1초에 최소 20번의 데이터 전송이 이루어지며, 이는 게임 데이터(예컨대, "3D객체 A가 좌표(0,1,0)에 생성된다", "상대편 B로부터 당신 A가 공격당했다", "당신의 HP가 50%가 되었다" 등)를 전송하는데 무리가 없는 수준일 것이다.
고속 네트워크는 일반 네트워크와는 다르게 데이터 버퍼링을 실시하지 않으며, 입력된 데이터를 최대한 빨리 전달하는 것이 핵심이다. 고속 네트워크는 일반 네트워크와 동일하게 TCP/IP 프로토콜을 사용한다. 그렇기에 소규모 패킷의 다량의 전송으로 네트워크(200)에 부하가 발생할 수 있기 때문에 잘 사용되지 않는다.
고속 네트워크는 일반 네트워크처럼 필요한 시점에 언제든 전송하게 되면 네트워크 부하가 증가하게 되므로, 필요한 스케줄에 따라 주기적으로 전송하는 시스템으로 전송 로직을 구현하는 것이 바람직하다. 예를 들어, 고속 네트워크는 센서 데이터, 식별 번호 등과 같이 일정 종류만 한정하여 전송하는 것이 좋을 것이다.
광범위 네트워크를 이용할 시에는 큰 의미가 없지만, 고속 네트워크는 서버(50)와 클라이언트(100)가 직접 연결(공유기, WIFI 내부망)을 하고 있는 상황에서는 유의미한 속도가 발현될 수 있다.
고속 네트워크는 전송/수신 까지 유선망인 경우에는 대략 0~1ms 정도의 데이터 전송 속도를 보일 수 있고, WIFI망에서는 대략 1ms~30ms 정도까지의 데이터 전송 속도를 보일 수 있다. WIFI망에서 평균 4ms 정도의 전송속도를 유지할 것이다.
상술한 고속 네트워크라 명명한 개념은 원시적인 네트워크의 개념이기에 필요에 의해서는 사용이 되지 않을 수 있지만, VR이라는 특이성과 내부망이라는 특이성이 더해져 필수 요소로 적용된다고 이해하면 된다.
대용량 네트워크는 고속 네트워크와 상반되는 개념으로서, 일반적인 웹파일 대용량 전송 프로토콜을 따르고 있다. 대용량 네트워크는 서버(50) 또는 클라이언트(100)에서 생성되거나 보유중인 데이터를 전송하는 수단으로서, 실행파일 버전 관리부터 내부 컨텐츠 데이터까지 다양하게 데이터를 송수신할 수 있게 한다.
대용량 네트워크는 일반 네트워크보다 더 큰 버퍼를 가지고 전송을 시도하며, 전송버퍼가 커진 만큼 전송속도가 빠르다.
일반적인 온라인 PC게임, 모바일 게임의 경우 하나의 네트워크로만 구성되는 경우가 많으며, 그렇지 않다면 일반 네트워크와 대용량 네트워크의 결합으로 구성됨이 바람직하다.
따라서, 축동기화 과정에서 네트워크의 지연 딜레이로 인해 발생하는 데이터 차이인 네트워크 오차를 고려한 가중치를 반영해야한다.
도 3은 본 발명에 의한 확장현실 서비스 장치의 축 동기화 장치 개념도이다. 도 3에 도시된 바와 같이, 단말기(30) 내부의 센서(30a)와 단말기 외부의 센서(즉, 트래커의 센서(40a))의 회전정보를 입력받아 트래커와 단말기의 회전각 차이를 이용하여 오프셋을 검출하고 오프셋값을 반영하여 축을 동기화시키는 축 동기화부(60)와; 상기 축 동기화부(60)에서 트래커의 회전축에 동기화시킨 단말기의 회전 정보와 상기 트래커의 센서(40a)의 정보를 입력받아 회전 정보를 연산하는 회전 연산부(70)와, 상기 회전 연산부(70)의 회전 연산 정보에 의거하여 최종 상태값을 생성하는 최종 상태값 생성부(80)를 포함하여 구성된다.
이와 같이 본 발명에서는 단말기 내부센서(30a)의 회전값과, 외부 센서(트래커의 센서)(40a)의 회전값을 입력받아 축 동기화부(60)에서 축 동기화를 시킨다. 축동기화는 트래커의 센서(40a)의 회전각(B)을 기준으로 단말기 센서(30a)의 회전각(A)까지의 각도차이(C)를 구한다. 상기 트래커 센서의 회전각(B)과 상기 각도차이(C)를 연산하여 예상 단말기 회전값(D)을 구한다. 실질적으로 예상 단말기 회전값(D)과 단말기 회전값(A)을 같은 값의 각도가 된다.
축동기화를 위하여 단말기의 회전각(A)과 트래커의 회전각(B)이 시간이 흐른뒤, 회전된 회전각을 측정함으로서, 각 회전각 차이를 구하여 기록하고, 기록된 회전각 차이를 지속적으로 누적시켜 두 회전의 새로운 회전각차이(Cn)를 구한다.
이전회전각 차이(C)에 새로운 회전각 차이(Cn)를 특정한 가중치를 이용하여 반영하여, 현재 새롭게 사용할 회전각 차이(C)를 구한다. 즉, 상기 회전각 차이(C)를 새롭게 적용할 오프셋값으로 구하고, 이를 단말기의 회전값에 반영하여 축을 동기화 사키는 것이다. 그리고, 다음 계산을 위하여 현재의 회전각(A,B)와 회전각차이(C)를 누적 기록하여 다음번 오프셋값 검출에 이용한다.
이와같이 축동기화부(60)를 통하여 회전각도 차이에 따른 축동기화를 시킴으로써, 내부센서와 외부센서의 기준좌표를 일치시키고, 회전 연산부(70)가 축동기화에 따른 회전각차이를 기반으로 트래커의 회전값을 입력받아 회전 정보를 연산하게 된다. 이렇게 축을 동기화시켜 기준 좌표를 일치시킨 후, 실제 움직임에 대한 회전 정보를 연산하고, 연산된 회전 정보에 의해 최종 상태값 생성부(80)가 컨텐츠의 객체에 대한 최종 상태 정보를 생성하여 제공함으로써, 확장현실 서비스에서 정확한 추적결과를 반영 할 수 있는 것이다.
도 4은 도 1에 도시된 축 동기화부(60)의 내부 구성도이다.
축 동기화부(60)는 회전정보 수신부(61), 오프셋 계산부(62), 동기화부(63), 저장부(64), 및 제어부(65)를 포함할 수 있다.
회전정보 수신부(61)는 단말기(30)의 회전 정보(회전값) 및 트래커(40)의 회전 정보(회전값)를 실시간 또는 주기적으로 수신할 수 있다.
오프셋 계산부(62)는 수신된 단말기(30)의 회전 정보와 트래커(40)의 회전 정보를 근거로 단말기(30)와 트래커(40)의 센서(30a, 40a)의 회전축의 각도차이를 계산하고, 계산된 각도차이를 근거로 센서(30a)와 센서(40a)의 축 동기화에 사용되는 오프셋(즉, 조정값이라고 할 수 있음)을 계산해 낼 수 있다.
이와 같은 본 발명에서는 단말기 및 트래커를 포함하는 클라이언트에게 확장현실 기반의 컨텐츠를 제공하는 확장현실 서비스 장치가 상기 단말기내의 제 1 센서와 상기 트래커내의 제 2 센서의 축을 동기화시키는 방법으로서,
축동기화를 위하여 단말기의 회전각(A)과 트래커의 회전각(B)이 설정된 시간이 흐른뒤, 회전된 회전각을 측정하여 각각의 축의 회전각 차이를 구하여 기록하는 단계;
상기 단말기와 트래커의 각각의 축의 회전각 차이를 누적 기록함과 아울러 단말기의 축과 트래커의 축 사이의 회전각 새로운 회전각차이(Cn)를 구하는 단계;
이전 회전각 차이(C)에 상기 새로운 회전각 차이(Cn)를 반영하여 현재 적용될 오프셋값을 구하여 저장함과 아울러 오프셋값을 단말기의 축정보에 반영하여 축 동기화를 시키는 축동기화단계를 포함할 수 있다.
상기 오프셋 계산부(62)의 구체적인 실시예로는, 하기의 1 ~ 10까지의 순서에 따라 오프셋을 계산해 낼 수 있다. 그리고, 오프셋 계산부(62)는 하기의 1 ~ 10까지의 순서를 반복할 것이다. 하기에서의 단말기(30)는 순수하게 단말기(30)만을 지칭할 수도 있으나, 단말기(30)가 HMD(20)에 장착되어 함께 움직이므로 단말기(30)가 장착된 HMD(20)를 단말기라고 할 수도 있다.
1. 단말기(30)의 이전 회전각과 단말기(30)의 현재 회전각을 근거로 현재 시점에서의 단말기(30)의 회전각 차이(headsetDifference)를 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion headsetDifference = beforeHeadsetRotation.Inverse() * headsetRotation"와 같이 표현할 수 있다.
2. 계산된 단말기(30)의 회전각 차이(headsetDifference)를 근거로 단말기(30)의 회전된 축(Aa)을 구한다. 이를 프로그램적으로 표현하면 예를 들어, "headsetDifference.ToAngleAxis(out_, out var headsetRotatedAxis)"와 같이 표현할 수 있다. 여기서, 단말기(30)의 회전된 축(Aa)은 내부 센서(30a)의 축을 의미할 수 있다.
3. 단말기(30)의 회전된 축(Aa)을 선형벡터에서 사원수(quaternion) 회전각으로 변환한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion headsetAxisLook = Quaternion.LookRotation(headsetRotatedAxis)"와 같이 표현할 수 있다. 사원수는 3차원 공간에서의 특정 회전축(즉, 회전된 축)에 대한 공간의 회전을 나타낸다고 할 수 있다. 이와 같이 단말기(30)의 회전된 축(Aa)을 사원수(quaternion) 체계로 표현하게 되면 단말기(30)가 지표면에 대해서 임의의 축으로 회전하는 것을 나타낼 수 있다.
4. 트래커(40)의 이전 회전각과 이전의 오프셋(Offset 1)(즉, 이전에 계산된 오프셋)을 근거로 단말기(30)의 이전 예상 회전각(beforeExpectHeadsetRotation)을 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion beforeExpectHeadsetRotation = (beforeTrackerRotation * offset)"과 같이 표현할 수 있다.
그리고, 트래커(40)의 현재 회전각과 이전의 오프셋(Offset 1)을 근거로 단말기(30)의 현재 예상 회전각(currentExpectHeadsetRotation)을 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion currentExpectHeadsetRotation = (TrackerRotation * offset)"과 같이 표현할 수 있다.
이어, 단말기(30)의 이전 예상 회전각과 단말기의 현재 예상 회전각을 근거로 현재 시점에서의 트래커(40)의 회전각 차이(trackerDifference)를 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion trackerDifference = beforeExpectHeadsetRotation.Inverse() * currentExpectHeadsetRotation"과 같이 표현할 수 있다.
5. 계산된 트래커(40)의 회전각 차이(trackerDifference)를 근거로 트래커(40)의 회전된 축(Da)을 구한다. 이를 프로그램적으로 표현하면 예를 들어, "trackerDifference.ToAngleAxis(out_, out var trackerRotatedAxis)"와 같이 표현할 수 있다. 여기서, 트래커(40)의 회전된 축(Da)은 외부 센서(40a)의 축을 의미할 수 있다.
6. 트래커(40)의 회전된 축(Da)을 선형벡터에서 사원수(quaternion) 회전각으로 변환한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion trackerAxisLook = Quaternion.LookRotation(trackerRotatedAxis)"와 같이 표현할 수 있다. 이와 같이 트래커(40)의 회전된 축(Da)을 사원수(quaternion) 체계로 표현하게 되면 트래커(40)가 지표면에 대해서 임의의 축으로 회전하는 것을 나타낼 수 있다.
7. 두 회전축 즉, 단말기(30)의 센서(30a)의 회전축과 트래커(40)의 센서(40a)의 회전축의 각도 차이(axisDifference)를 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion axisDifference = trackerAxisLook * headsetAxisLook.Inverse()"와 같이 표현할 수 있다.
8. 계산된 두 회전축간의 각도 차이(axisDifference)와 이전의 오프셋(Offset 1)을 근거로 신규 오프셋(newOFFset)을 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion newOFFset = Offset * axisDifference"와 같이 표현할 수 있다. 여기서, Offset는 바로 이전에 계산된 오프셋으로서 Offset 1이 될 수 있다.
9. 이전의 오프셋(Offset 1)과 신규 오프셋(newOFFset) 및 특정 가중치(addFactor)를 근거로 새롭게 사용할 오프셋(Offset 2)을 계산한다. 예를 들어, 이전의 오프셋(Offset 1)과 신규 오프셋(newOFFset) 및 특정 가중치(addFactor)를 사원수의 선형보간(LERP)에 적용하여 새롭게 사용할 오프셋(Offset 2)을 계산해 낼 수 있다. 이를 프로그램적으로 표현하면 예를 들어, "Offset = Quaternion.Lerp(Offset, newOFFset, addFactor)"와 같이 표현할 수 있다. 여기서, ()안의 Offset은 이전의 오프셋(Offset 1)이 될 수 있고, ()안의 newOFFset은 신규 오프셋(newOFFset)이 될 수 있고, ()안의 addFactor는 특정 가중치가 될 수 있다.
새롭게 사용할 오프셋(Offset 2)(즉, 계산식에서 ()밖의 Offset)은 회전으로 인해 생긴 오차라고 볼 수 있으므로, 오프셋(Offset 2)은 센서(30a)와 센서(40a)의 축 동기화에 사용되는 조정값이 될 수 있다. 그리고, 오프셋(Offset 2)을 저장부(64)에 저장한다. 여기서, 오프셋(Offset 2)은 동기화부(63)에서 사용될 것이다.
10. 후속 계산을 위해, 단말기(30)의 현재 회전각 및 트래커(40)의 현재 회전각을 저장부(64)에 저장한다.
도 4에서, 동기화부(63)는 오프셋 계산부(62)에서 실시간 또는 주기적으로 계산된 새롭게 사용할 오프셋(Offset 2)을 근거로 두 센서(30a, 40a)의 축을 조정하여 두 센서(30a, 40a)의 축의 회전각을 실시간 또는 주기적으로 동기화시킬 수 있다. 예를 들어, 동기화부(63)는 트래커(40)의 현재 회전각에 오프셋(Offset 2)을 적용하여 두 센서(30a, 40a)의 축의 회전각을 동기화시킬 수 있다. 필요에 따라서, 동기화부(63)는 단말기(30)의 현재 회전각에 오프셋(Offset 2)을 적용하여 두 센서(30a, 40a)의 축의 회전각을 동기화시킬 수 있다.
저장부(64)는 오프셋 계산부(62)에서 계산과정에서 생성된 각종의 정보를 저장한다. 상술한 바와 같이 저장부(64)에는 새롭게 사용할 오프셋(Offset 2), 단말기(30)의 현재 회전각, 트래커(40)의 현재 회전각 등이 저장될 수 있다.
제어부(65)는 축 동기화부(60)의 전체적인 동작을 제어한다.
도 5는 본 발명의 실시예에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치에서의 축 동기화 방법을 개략적으로 설명하기 위한 플로우차트이다. 이하에서 설명되는 축 동기화 기능을 포함한 확장현실 서비스 장치에서의 축 동기화 방법은 서버(50)내의 축 동기화부(60)에서 행해지는 것으로 이해하면 된다.
먼저, 축 동기화부(60)의 회전정보 수신부(61)는 단말기(30)의 회전 정보(회전값) 및 트래커(40)의 회전 정보(회전값)를 실시간 또는 주기적으로 수신한다(S10).
이어, 축 동기화부(60)의 오프셋 계산부(62)는 수신된 단말기(30)의 회전 정보와 트래커(40)의 회전 정보를 근거로 단말기(30)와 트래커(40)의 센서(30a, 40a)의 회전축의 각도차이를 계산하고, 계산된 각도차이를 근거로 센서(30a)와 센서(40a)의 축 동기화에 사용되는 오프셋(즉, 조정값이라고 할 수 있음)을 계산해 낸다(S20).
그리고 나서, 축 동기화부(60)의 동기화부(63)는 오프셋 계산부(62)에서 실시간 또는 주기적으로 계산된 오프셋(즉, Offset 2)으로 두 센서(30a, 40a)의 축을 조정하여 두 센서(30a, 40a)의 축의 회전각을 실시간 또는 주기적으로 동기화시킨다(S30). 예를 들어, 동기화부(63)는 트래커(40)의 현재 회전각에 오프셋 계산부(62)로부터의 오프셋(Offset 2)을 적용하여 두 센서(30a, 40a)의 축의 회전각을 동기화시킬 수 있다. 필요에 따라서, 동기화부(63)는 단말기(30)의 현재 회전각에 오프셋 계산부(62)로부터의 오프셋(Offset 2)을 적용하여 두 센서(30a, 40a)의 축의 회전각을 동기화시킬 수 있다.
도 6는 도 5에 도시된 오프셋을 계산하는 단계(S20)를 보다 구체적으로 설명하기 위한 플로우차트이다.
먼저, 오프셋 계산부(62)는 단말기(30)의 이전 회전각과 단말기(30)의 현재 회전각을 근거로 현재 시점에서의 단말기(30)의 회전각 차이(headsetDifference)를 계산한다(S210).
이어, 오프셋 계산부(62)는 계산된 단말기(30)의 회전각 차이(headsetDifference)를 근거로 단말기(30)의 회전된 축(Aa)을 구한다(S220).
그리고, 오프셋 계산부(62)는 단말기(30)의 회전된 축(Aa)을 선형벡터에서 사원수(quaternion) 회전각으로 변환한다(S230). 이와 같이 단말기(30)의 회전된 축(Aa)을 사원수(quaternion) 체계로 표현하게 되면 단말기(30)가 지표면에 대해서 임의의 축으로 회전하는 것을 나타낼 수 있다.
한편, 오프셋 계산부(62)는 트래커(40)의 회전각 차이(trackerDifference)를 계산한다(S240). 즉, 오프셋 계산부(62)는 트래커(40)의 이전 회전각과 이전의 오프셋(Offset 1)을 근거로 단말기(30)의 이전 예상 회전각(beforeExpectHeadsetRotation)을 계산한다. 그리고, 오프셋 계산부(62)는 트래커(40)의 현재 회전각과 이전의 오프셋(Offset 1)을 근거로 단말기(30)의 현재 예상 회전각(currentExpectHeadsetRotation)을 계산한다. 이어, 오프셋 계산부(62)는 단말기(30)의 이전 예상 회전각과 단말기의 현재 예상 회전각을 근거로 현재 시점에서의 트래커(40)의 회전각 차이(trackerDifference)를 계산한다.
그리고, 오프셋 계산부(62)는 계산된 트래커(40)의 회전각 차이(trackerDifference)를 근거로 트래커(40)의 회전된 축(Da)을 구한다(S250).
이후, 오프셋 계산부(62)는 트래커(40)의 회전된 축(Da)을 선형벡터에서 사원수(quaternion) 회전각으로 변환한다(S260). 이와 같이 트래커(40)의 회전된 축(Da)을 사원수(quaternion) 체계로 표현하게 되면 트래커(40)가 지표면에 대해서 임의의 축으로 회전하는 것을 나타낼 수 있다.
그리고 나서, 오프셋 계산부(62)는 두 개의 회전축 즉, 단말기(30)의 센서(30a)의 회전축과 트래커(40)의 센서(40a)의 회전축의 각도 차이(axisDifference)를 계산한다(S270).
이후, 오프셋 계산부(62)는 계산된 두 회전축간의 각도 차이(axisDifference)와 이전의 오프셋(Offset 1)을 근거로 신규 오프셋(newOFFset)을 계산한다(S280).
이어, 오프셋 계산부(62)는 이전의 오프셋(Offset 1)와 신규 오프셋(newOFFset) 및 특정 가중치(addFactor)를 근거로 새롭게 사용할 오프셋(Offset 2)을 계산한다(S290). 예를 들어, 오프셋 계산부(62)는 이전의 오프셋(Offset 1)과 신규 오프셋(newOFFset) 및 특정 가중치(addFactor)를 사원수의 선형보간(LERP)에 적용하여 새롭게 사용할 오프셋(Offset 2)을 계산해 낼 수 있다. 여기서, 새롭게 사용할 오프셋(Offset 2)은 회전으로 인해 생긴 오차라고 볼 수 있으며, 조정값이 될 수 있다.
그리고, 오프셋 계산부(62)는 오프셋(Offset 2)을 저장부(64)에 저장함과 더불어 동기화부(63)에게로 전송한다.
또한, 상술한 본 발명의 축 동기화 기능을 포함한 확장현실 서비스 장치의 축 동기화 방법은, 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 방법을 구현하기 위한 기능적인(function) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 컨트롤러 20 : HMD
30 : 단말기 40 : 트래커
50 : 서버 60 : 축 동기화부
61 : 회전정보 수신부 62 : 오프셋 계산부
63 : 동기화부 64 : 저장부
65 : 제어부 100 : 클라이언트
200 : 네트워크 30a : 센서(내부 센서)
40a : 센서(외부 센서)

Claims (4)

  1. 단말기 및 트래커를 포함하는 클라이언트에게 확장현실 기반의 컨텐츠를 제공하는 확장현실 서비스 장치가 상기 단말기내의 제 1 센서와 상기 트래커내의 제 2 센서의 축을 동기화시키는 방법을 컴퓨터에서 실행시키기 위한 프로그램으로서,
    축동기화를 위하여 단말기의 회전각(A)과 트래커의 회전각(B)이 설정된 시간이 흐른뒤, 회전된 회전각을 측정하여 각각의 축의 회전각 차이를 구하여 기록하는 단계;
    상기 단말기와 트래커의 각각의 축의 회전각 차이를 누적 기록함과 아울러 단말기의 축과 트래커의 축 사이의 회전각 새로운 회전각차이(Cn)를 구하는 단계;
    이전 회전각 차이(C)에 상기 새로운 회전각 차이(Cn)를 반영하여 현재 적용될 오프셋값을 구하여 저장함과 아울러 오프셋값을 단말기의 축정보에 반영하여 축 동기화를 시키는 축동기화단계를 포함하는
    확장현실 서비스 장치의 축 동기화 방법을 컴퓨터에서 실행시키기 위한 프로그램.
  2. 제 1 항에 있어서,
    상기 축의 회전각 차이를 구하여 기록하는 단계는,
    단말기의 회전값을 입력받아 단말기의 이전 회전각으로부터 현재 회전각을 계산하고, 이를 기반으로 단말기의 회전된 축을 구하는 단계;
    상기 단말기의 회전된 축 정보를 선형벡터에서 축의 회전각 정보로 변환하는 단계;
    트래커의 회전값을 입력받아 이전 트래커의 회전각과 현재 트래커의 회전각에 따른 회전차를 계산하고, 이를 기반으로 트래커의 회전된 축을 구하는 단계;
    상기 트래커의 회전 축 정보를 선형벡터에서 축의 회전각 정보로 변환하는 단계;
    상기 단말기 회전된 축의 회전각과 상기 트래커 회전된 축의 회전각 저장함과 아울러 두 회전 축의 각도 차이를 계산하는 단계;를 포함하는
    확장현실 서비스 장치의 축 동기화 방법을 컴퓨터에서 실행시키기 위한 프로그램.
  3. 제1항에 있어서,
    상기 축동기화 단계는,
    상기 두 회전축의 새로운 회전각 차이(Cn)에 특정 가중치를 연산한후, 이전 오프셋값에 반영하여 현재 적용될 새로운 오프셋값을 구하여 저장함과 아울러 새로운 오프셋값을 상기 단말기의 회전각 정보에 적용하여 축 동기화를 시키는
    확장현실 서비스 장치의 축 동기화 방법을 컴퓨터에서 실행시키기 위한 프로그램.
  4. 제 3 항에 있어서,
    상기 특정 가중치는,
    네트워크의 지연 딜레이로 인해 발생하는 데이터 차이를 반영하여 설정되는 가중치인 것을 특징으로 하는
    확장현실 서비스 장치의 축 동기화 방법을 컴퓨터에서 실행시키기 위한 프로그램.
KR1020200092855A 2020-07-27 2020-07-27 확장현실 서비스 장치의 축 동기화 프로그램 KR20220013655A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200092855A KR20220013655A (ko) 2020-07-27 2020-07-27 확장현실 서비스 장치의 축 동기화 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200092855A KR20220013655A (ko) 2020-07-27 2020-07-27 확장현실 서비스 장치의 축 동기화 프로그램

Publications (1)

Publication Number Publication Date
KR20220013655A true KR20220013655A (ko) 2022-02-04

Family

ID=80268053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200092855A KR20220013655A (ko) 2020-07-27 2020-07-27 확장현실 서비스 장치의 축 동기화 프로그램

Country Status (1)

Country Link
KR (1) KR20220013655A (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100900806B1 (ko) 2007-11-01 2009-06-04 광주과학기술원 컨텍스트 인식 증강 현실을 제공하기 위한 시스템 및 방법
KR100953931B1 (ko) 2008-05-09 2010-04-22 고려대학교 산학협력단 혼합현실 구현 시스템 및 그 방법
KR20190118373A (ko) 2018-04-10 2019-10-18 주식회사 엠에스게임 가상현실 체험 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100900806B1 (ko) 2007-11-01 2009-06-04 광주과학기술원 컨텍스트 인식 증강 현실을 제공하기 위한 시스템 및 방법
KR100953931B1 (ko) 2008-05-09 2010-04-22 고려대학교 산학협력단 혼합현실 구현 시스템 및 그 방법
KR20190118373A (ko) 2018-04-10 2019-10-18 주식회사 엠에스게임 가상현실 체험 시스템 및 방법

Similar Documents

Publication Publication Date Title
US10905950B2 (en) Head-mounted display tracking
CN110140099B (zh) 用于跟踪控制器的系统和方法
WO2019221980A1 (en) Dynamic graphics rendering based on predicted saccade landing point
EP3794581A1 (en) Eye tracking with prediction and late update to gpu for fast foveated rendering in an hmd environment
JP5891131B2 (ja) 画像生成装置および画像生成方法
US10410395B2 (en) Method for communicating via virtual space and system for executing the method
RU2751130C1 (ru) Способ координационного совмещения систем координат, используемых устройством генерируемой компьютером реальности и устройством для передачи тактильных ощущений
WO2018225187A1 (ja) 情報処理システム、情報処理装置、サーバ装置、画像提供方法および画像生成方法
US10937220B2 (en) Animation streaming for media interaction
JP6216398B2 (ja) 画像生成装置および画像生成方法
US10888771B2 (en) Method and device for object pointing in virtual reality (VR) scene, and VR apparatus
KR102503337B1 (ko) 이미지 디스플레이 방법, 장치 및 시스템
CN107229055B (zh) 移动设备定位方法和移动设备定位装置
KR20220013655A (ko) 확장현실 서비스 장치의 축 동기화 프로그램
KR20220013657A (ko) 축 동기화 프로그램 기록매체
KR20220013652A (ko) 확장현실 서비스 장치의 단말기 내부센서와 외부센서의 축 동기화 방법
KR20220013649A (ko) 단말기 내부센서와 외부센서의 축 동기화 프로그램 기록매체
KR20220013647A (ko) 단말기 내부센서와 외부센서의 축 동기화 프로그램
KR20220013646A (ko) 확장현실 서비스 장치의 단말기 내부센서와 외부센서의 축 동기화 방법
KR20220013645A (ko) 축 동기화 기능을 포함한 확장현실 서비스 장치
KR20220013631A (ko) 축 동기화 기능을 포함한 확장현실 서비스 장치
EP3918449A1 (en) Method and system for resolving hemisphere ambiguity in six degree of freedom pose measurements
KR20220013702A (ko) 확장현실 서비스 장치의 축 정렬 검증 프로그램 기록매체
KR20220013695A (ko) 확장현실 서비스 장치의 축 정렬 검증 프로그램
KR20220013687A (ko) 축 정렬 검증 기능을 포함하는 확장현실 서비스 장치 및 그 축 정렬 검증 방법