[go: up one dir, main page]

KR101842600B1 - 가상현실 시스템 및 이를 이용한 가상현실 제공 방법 - Google Patents

가상현실 시스템 및 이를 이용한 가상현실 제공 방법 Download PDF

Info

Publication number
KR101842600B1
KR101842600B1 KR1020170017713A KR20170017713A KR101842600B1 KR 101842600 B1 KR101842600 B1 KR 101842600B1 KR 1020170017713 A KR1020170017713 A KR 1020170017713A KR 20170017713 A KR20170017713 A KR 20170017713A KR 101842600 B1 KR101842600 B1 KR 101842600B1
Authority
KR
South Korea
Prior art keywords
skeleton data
data
client
virtual reality
skeleton
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020170017713A
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 KR1020170017713A priority Critical patent/KR101842600B1/ko
Application granted granted Critical
Publication of KR101842600B1 publication Critical patent/KR101842600B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/003Navigation within 3D models or images
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/332Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/0132Head-up displays characterised by optical features comprising binocular systems
    • G02B2027/0134Head-up displays characterised by optical features comprising binocular systems of stereoscopic type

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Theoretical Computer Science (AREA)
  • Optics & Photonics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

복수의 키넥트(Kinect V2)를 이용한 인체 추적을 통해 가상현실 시스템을 구성하여 최소 비용 및 최소 공간에서 가상현실 시스템을 구성하고, 모바일 HMD를 이용하여 위생상의 문제점을 해결하도록 한 가상현실 환경 구축 시스템 및 방법을 제시한다. 제시된 가상현실 시스템은 국소 영역 내에 위치하는 모바일 HMD, 국소 영역 내의 사용자 움직임을 감지하여 스켈레톤 데이터를 생성하는 복수의 키넥트, 국소 영역 내에 배치되어 복수의 키넥트와 일대일로 연결되고, 연결된 키넥트로부터 스켈레톤 데이터를 수집하고, 스켈레톤 데이터를 사용자별로 구분하여 분할 스켈레톤 데이터를 생성하는 복수의 클라이언트 및 복수의 클라이언트로부터 분할 스켈레톤 데이터를 수집하고, 분할 스켈레톤 데이터를 근거로 가상공간의 월드 좌표계를 생성하고, 국소 영역 내의 모바일 HMD의 위치 정보와 월드 좌표계를 근거로 스켈레톤 데이터를 보정하고, 보정된 스켈레톤 데이터를 변환하여 모바일 HMD에게로 제공하는 가상현실 서버를 포함한다.

Description

가상현실 시스템 및 이를 이용한 가상현실 제공 방법{VIRTUAL REALITY SYSTEM AND METHOD FOR PROVIDING VIRTUAL REALITY USING THE SAME}
본 발명은 가상현실을 구현하기 위한 환경을 구축하는 기술에 관한 것으로, 더욱 상세하게는 국소 영역에서 가상현실 서비스 제공을 위해 가상현실 환경을 구축하는 시스템 및 방법에 관한 것이다.
최근 오큘러스, 모피어스 등의 HMD(Head-Mounted Display)가 개발되면서 가상현실에 대한 연구와 관심이 증가하고 있다.
해외에서는 IBM의 소설 원작 '소드 아트 온라인'을 가상현실(VR; Virtual Reality)로 개발하는 등의 연구가 진행 중이며, 국내에서는 '석굴암 HMD 트래블 체험관'이 개발되었다.
하지만, 종래의 가상현실 기술들은 가상현실 서비스를 제공하기 위해 HMD뿐만 아니라 트레드밀, 카메라 등과 같은 부수적인 장치들을 필요로 하는 문제점이 있다.
또한, 가상현실 시스템은 HMD, 트레드밀, 카메라 등과 같이 다수의 장치로 구성되기 때문에 구성 비용이 상승하는 문제점이 있다.
또한, 종래의 가상현실 시스템은 다수의 장치를 연동하여 가상현실 서비스를 제공하기 때문에 일정 이상의 공간이 필요한 문제점이 있다.
일례로, 도 1을 참조하면, 종래의 가상현실 시스템은 트레드밀이 설치될 경우 추가적인 공간 소요가 발생하여 제한적인 공간에서만 가상현실 서비스를 제공할 수 있어 대중화가 어려운 문제점이 있다.
특히 '석굴암 HMD 트래블 체험관'처럼 가상현실 서비스를 관광요소로 활용할 경우 가상현실 시스템이 차지하는 공간에 비해 수용 인원이 적기 때문에 비용대비 효율이 저하되는 문제점이 있다.
또한, 종래의 가상현실 시스템은 하나의 HMD를 불특정 다수가 이용하기 때문에 오염, 바이러스 감염 등과 같이 위생상의 문제가 발생할 수 있다.
한국공개특허 제10-2014-0114486호(명칭: 디지털 홀로그래픽 콘텐츠 운용 장치 및 방법)
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, 복수의 키넥트(KinectV2)를 이용한 인체 추적을 통해 가상현실 시스템을 구성하여 최소 비용 및 최소 공간에서 가상현실 시스템을 구성하고, 모바일 HMD를 이용하여 위생상의 문제점을 해결하도록 한 가상현실 시스템 및 이를 이용한 가상현실 제공 방법을 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 가상현실 시스템은 국소 영역 내에 위치하는 모바일 HMD, 국소 영역 내의 사용자 움직임을 감지하여 스켈레톤 데이터를 생성하는 복수의 키넥트, 국소 영역 내에 배치되어 복수의 키넥트와 일대일로 연결되고, 연결된 키넥트로부터 스켈레톤 데이터를 수집하고, 스켈레톤 데이터를 사용자별로 구분하여 분할 스켈레톤 데이터를 생성하는 복수의 클라이언트 및 복수의 클라이언트로부터 분할 스켈레톤 데이터를 수집하고, 분할 스켈레톤 데이터를 근거로 가상공간의 월드 좌표계를 생성하고, 국소 영역 내의 모바일 HMD의 위치 정보와 월드 좌표계를 근거로 스켈레톤 데이터를 보정하고, 보정된 스켈레톤 데이터를 변환하여 모바일 HMD에게로 제공하는 가상현실 서버를 포함한다.
클라이언트는 연결된 키넥트로부터 포지션 데이터 및 회전 데이터를 포함하는 스켈레톤 데이터를 수신하는 데이터 수신부, 데이터 수신부에서 수신한 스켈레톤 데이터를 근거로 사용자를 인식하여 고유 아이디를 설정하고, 스켈레톤 데이터와 고유 아이디를 연계하여 분할 스켈레톤 데이터를 생성하는 사용자 인식부, 분할 스켈레톤 데이터를 근거로 전송 패킷을 생성하되, 사용자별로 전송 패킷을 생성하여 사용자 인식부에서 인식한 사용자 수와 동일한 개수의 전송 패킷을 생성하는 패킷 생성부 및 패킷 생성부에서 생성된 전송 패킷을 가상현실 서버로 전송하는 패킷 전송부를 포함한다.
가상현실 서버는 복수의 클라이언트로부터 수신한 스켈레톤 데이터에 포함된 포지션 데이터를 이용하여 복수의 클라이언트의 좌표를 산출하고, 산출한 복수의 클라이언트의 좌표를 근거로 월드 좌표계를 생성하는 월드 좌표계 생성부, 모바일 HMD로부터 수신한 자이로 센서값 및 월드 좌표계 생성부에서 생성된 월드 좌표계를 근거로 복수의 클라이언트 중 원점 클라이언트의 정면을 인식하는 정면 인식부, 정면 인식부에서 정면을 인식하면 원점 클라이언트와 다른 클라이언트의 사이의 각도를 반영하여 복수의 클라이언트로부터 수신한 스켈레톤 데이터를 보정하고, 보정된 스켈레톤 데이터를 평균하여 통합 스켈레톤 데이터로 통합하는 데이터 통합부 및 통합 스켈레톤 데이터를 모바일 HMD에서 사용되는 Unity3D 데이터로 변환하는 데이터 변환부를 포함한다.
이때, 월드 좌표계 생성부는 복수의 클라이언트 중 가장 먼저 가상현실 서버에 접속한 클라이언트를 원점 클라이언트로 설정하고, 원점 클라이언트로부터 수신한 스켈레톤 데이터 및 좌표 산출 대상인 대상 클라이언트로부터 수신한 스켈레톤 데이터의 포지션 데이터를 근거로 대상 클라이언트의 좌표를 산출한다.
정면 인식부는 자이로 센서값을 근거로 복수의 클라이언트 중 원점으로 설정된 클라이언트의 z축으로 향하는 벡터와 모바일 HMD의 z축으로 향하는 벡터를 산출하고, 두 벡터의 내적이 0 미만이면 정면으로 판단한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 가상현실 시스템 및 이를 이용한 가상현실 제공 방법은 국소 영역에 설치된 복수의 키넥트에서 촬영된 영상을 근거로 포지션 데이터 및 회전 데이터를 포함하는 스켈레톤 데이터를 생성하는 단계, 국소 영역에 설치된 복수의 클라이언트에서 복수의 키넥트로부터 생성된 스켈레톤 데이터를 수집하고, 스켈레톤 데이터를 사용자별로 분할한 분할 스켈레톤 데이터를 전송하는 스켈레톤 데이터 수집 및 전송하는 단계, 복수의 클라이언트로부터 분할 스켈레톤 데이터를 수집하고, 분할 스켈레톤 데이터를 근거로 가상공간의 월드 좌표계를 생성하는 단계, 국소 영역 내의 모바일 HMD로부터 수집한 위치 정보와 월드 좌표계를 근거로 복수의 클라이언트 중 원점 클라이언트의 정면을 인식하는 단계, 원점 클라이언트의 정면을 인식하면 복수의 클라이언트로부터 수신한 스켈레톤 데이터를 통합하여 통합 스켈레톤 데이터를 생성하는 스켈레톤 데이터 통합하는 단계 및 통합 스켈레톤 데이터를 모바일 HMD에서 사용 가능한 데이터로 변환하여 가상현실을 제공하는 단계를 포함한다.
스켈레톤 데이터를 생성하는 단계는 클라이언트로부터 수신한 스켈레톤 데이터의 포지션 데이터 및 회전 데이터를 근거로 사용자를 인식하고, 인식한 사용자에 고유 아이디를 설정하는 사용자 인식 단계, 사용자 인식 단계에서 인식한 사용자별로 스켈레톤 데이터를 분할하되, 스켈레톤 데이터를 고유 아이디가 설정된 사용자별로 분할하여 분할 스켈레톤 데이터를 생성하고, 분할 스켈레톤 데이터를 고유 아이디와 연계하는 분할 단계, 고유 아이디 및 분할 스켈레톤 데이터를 근거로 전송 패킷을 생성하되, 사용자별로 전송 패킷을 생성하여 인식한 사용자의 수와 동일한 개수의 전송 패킷을 생성하는 패킷 생성 단계 및 가상현실 서버로 생성된 전송 패킷을 전송하는 단계를 포함한다.
가상공간의 월드 좌표계를 생성하는 단계에서는 복수의 클라이언트 중 가장 먼저 가상현실 서버에 접속한 클라이언트를 원점 클라이언트로 설정하고, 원점 클라이언트로부터 수신한 스켈레톤 데이터 및 좌표 산출 대상인 대상 클라이언트로부터 수신한 스켈레톤 데이터의 포지션 데이터를 근거로 대상 클라이언트의 좌표를 산출한다.
정면을 인식하는 단계에서는 모바일 HMD로부터 수집한 위치 정보인 자이로 센서값을 근거로 복수의 클라이언트 중 원점 클라이언트의 z축으로 향하는 벡터와 모바일 HMD의 z축으로 향하는 벡터를 산출하고, 두 벡터의 내적이 0 미만이면 원점 클라이언트의 정면으로 판단한다.
스켈레톤 데이터 통합하는 단계에서는 원점 클라이언트와 다른 클라이언트의 사이의 각도를 반영하여 복수의 클라이언트로부터 수신한 스켈레톤 데이터를 보정하고, 보정된 스켈레톤 데이터를 평균하여 통합 스켈레톤 데이터로 통합한다.
가상현실을 제공하는 단계에서는 통합 스켈레톤 데이터를 Unity3D 데이터로 변환한다.
본 발명에 의하면, 가상현실 시스템 및 이를 이용한 가상현실 제공 방법은 복수의 키넥트를 이용하여 국소 영역에서 무선 네트워크를 이용한 스마트폰 HMD를 통해 자유로이 이동이 가능한 가상현실환경을 제공할 수 있는 효과가 있다.
또한, 가상현실 시스템 및 이를 이용한 가상현실 제공 방법은 복수의 키넥트를 이용한 스켈레톤 추적을 통해 국소 영역 내에서 복수의 사용자에게 가상현실을 제공할 수 있는 효과가 있다.
이를 통해, 가상현실 시스템 및 이를 이용한 가상현실 제공 방법은 트레드밀을 이용한 고정적인 가상현실 환경을 제공하는 종래의 가상현실 시스템에 비해 설치 공간을 최소화할 수 있다.
또한, 가상현실 시스템 및 이를 이용한 가상현실 제공 방법은 개인의 스마트폰을 구글 카드보드를 사용하여 HMD를 구성하기 때문에 위생상의 문제를 해결할 수 있고, 공공장소에서 가상현실 플랫폼으로써 활용할 수 있는 효과가 있다.
도 1은 종래의 가상현실 시스템을 설명하기 위한 도면.
도 2는 본 발명의 실시예에 따른 가상현실 시스템을 설명하기 위한 도면.
도 3은 본 발명의 실시예에 따른 가상현실 시스템의 구성을 설명하기 위한 도면.
도 4 내지 도 6은 도 3의 클라이언트를 설명하기 위한 도면.
도 7 내지 도 10는 도 3의 가상현실 서버를 설명하기 위한 도면.
도 11은 본 발명의 실시예에 따른 가상현실 시스템을 이용한 가상현실 제공 방법을 설명하기 위한 흐름도.
도 12는 도 11의 스켈레톤 데이터 생성 단계를 설명하기 위한 흐름도.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
이하, 본 발명의 실시예에 따른 가상현실 시스템을 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다. 도 2는 본 발명의 실시예에 따른 가상현실 시스템을 설명하기 위한 도면이고, 도 3은 본 발명의 실시예에 따른 가상현실 시스템의 구성을 설명하기 위한 도면이다. 도 4 내지 도 6은 도 3의 클라이언트를 설명하기 위한 도면이고, 도 7 내지 도 10은 도 3의 가상현실 서버를 설명하기 위한 도면이다.
도 2를 참조하면, 가상현실 시스템은 복수의 키넥트(100)를 이용하여 국소 영역에서 가상현실 서비스를 제공하는 시스템이다. 즉, 가상현실 시스템은 키넥트(100)를 이용하여 국소영역에서 현실세계와 가상현실세계가 1:1로 대응되는 서비스를 사용자에게 제공한다.
가상현실 시스템은 복수의 키넥트(100)를 이용하여 국소 영역에서 인체 스켈레톤을 추적하고 이를 가상현실에 반영한다.
사용자는 스마트폰을 이용하여 모바일 HMD(400)를 구성한다. 이때, 스마트폰은 구글 카드보드, 기어 VR, 오큘러스 등에 장착되어 사용자 개인의 모바일 HMD를 구성한다. 이후, 사용자는 스마트폰에 설치된 전용 애플리케이션을 구동시켜 가상현실 서비스를 이용한다.
이를 통해, 가상현실 시스템은 최소 비용 및 최소 공간에서 가상현실 시스템을 구성하고, 모바일 HMD(400)를 이용하여 위생상의 문제점을 해결할 수 있다.
이를 위해, 도 3을 참조하면, 가상현실 환경 구축 시스템은 복수의 키넥트(100), 복수의 클라이언트(200), 가상현실 서버(300) 및 모바일 HMD(400)를 포함하여 구성된다. 이때, 복수의 클라이언트(200) 및 복수의 키넥트(100)는 일대일로 연결되며, 복수의 키넥트(100) 및 복수의 클라이언트(200)는 동일한 국소 영역 내에 소정 간격 이격되어 배치된다.
키넥트(100)는 케이블(예를 들면, USB 3.0)을 통해 클라이언트(200)와 연결된다. 물론, 키넥트(100)는 무선망(예를 들면, 블루투스 등)을 통해 클라이언트(200)와 연결될 수도 있다.
키넥트(100)는 사용자의 움직임을 감지한 데이터(이하, 스켈레톤 데이터)를 클라이언트(200)로 전송한다. 이때, 키넥트(100)는 사용자의 위치 및 회전을 감지한다. 키넥트(100)는 감지한 사용자 위치에 해당하는 포지션(Position) 데이터 및 사용자 회전에 해당하는 회전(Quaternion) 데이터를 스켈레톤 데이터로 하여 클라이언트(200)로 전송한다.
클라이언트(200)는 키넥트(100)로부터 전송받은 스켈레톤 데이터를 가상현실 서버(300)로 전송한다. 즉, 클라이언트(200)는 키넥트(100)로부터 전송받은 스켈레톤 데이터를 패킷으로 구성하여 가상현실 서버(300)로 전송한다.
클라이언트(200)는 키넥트(100)로부터 전송받은 포지션 데이터 및 회전 데이터를 한 번에 가상현실 서버(300)로 전송하려면 데이터 크기로 인한 문제가 발생한다.
즉, 도 4를 참조하면, 윈도우 운영체제에서 지원하는 MTU(Maximum Transmission Unit)는 대략 1500bytes 이며, 일반적인 TCP 환경에서 IP와 TCP 헤더를 제외하면 애플리케이션에서 데이터 전송에 사용할 수 있는 패킷의 크기는 대략 1460bytes 정도이다. 여기서, Loopback Pseudo-Interface 1은 로컬 호스트(localhost(127.0.0.1))를 의미한다.
하지만, 포지션 데이터의 크기는 12bytes(4bytes*3(x,y,z))이고, 회전 데이터의 크기는 16bytes(4bytes*4(w,x,y,z))이다. 이때, 사람의 총 관절의 개수가 25개이고, 최대 추적 가능 인원이 6인 것으로 가정하면, 클라이언트(200)에서 가상현실 서버(300)로 전송할 패킷의 크기는 대략 2412bytes 정도이다.
이로 인해, 클라이언트(200)는 키넥트(100)에서 감지한 모든 사용자들의 스켈레톤 데이터를 동시에 전송할 경우 전송할 패킷의 크기가 MTU를 초과하여 패킷 손실, 통신 오류 등으로 인해 정확한 데이터의 전송이 불가능하다.
이에, 도 5에 도시된 바와 같이, 클라이언트(200)는 키넥트(100)에서 감지한 각 사용자별로 아이디(ID)를 부여하고, 각 아이디별로 스켈레톤 데이터를 포함한 패킷을 생성하여 가상현실 서버(300)로 전송한다. 즉, 클라이언트(200)는 키넥트(100)로부터 스켈레톤 데이터를 전송받은 후 사용자별로 한번 씩 패킷을 전송(Send)한다. 이에, 클라이언트(200)는 하나의 스켈레톤 데이터에 대해 최대 6번의 패킷 전송을 수행할 수 있다.
이를 위해, 도 6을 참조하면, 클라이언트(200)는 데이터 수신부(220), 사용자 인식부(240), 패킷 생성부(260), 패킷 전송부(280)를 포함하여 구성된다.
데이터 수신부(220)는 연결된 키넥트(100)로부터 스켈레톤 데이터를 수신한다. 즉, 데이터 수신부(220)는 키넥트(100)로부터 포지션 데이터 및 회전 데이터를 포함하는 스켈레톤 데이터를 수신한다.
사용자 인식부(240)는 데이터 수신부(220)에서 수신한 스켈레톤 데이터를 근거로 사용자를 인식한다. 즉, 사용자 인식부(240)는 스켈레톤 데이터의 포지션 데이터 및 회전 데이터를 근거로 사용자를 인식한다. 사용자 인식부(240)는 인식한 사용자별로 고유 아이디를 설정한다. 사용자 인식부(240)는 스켈레톤 데이터를 고유 아이디가 설정된 사용자별로 분할하고, 분할 스켈레톤 데이터를 고유 아이디와 연계하여 패킷 생성부(260)에게로 전송한다.
패킷 생성부(260)는 사용자 인식부(240)로부터 전송받은 분할 스켈레톤 데이터를 근거로 스켈레톤 데이터를 가상현실 서버(300)로 전송하기 위한 전송 패킷을 생성한다. 즉, 패킷 생성부(260)는 각 고유 아이디와 해당 고유 아이디에 연계된 분할 스켈레톤 데이터를 이용하여 전송 패킷을 생성한다. 이를 통해, 패킷 생성부(260)는 하나의 스켈레톤 데이터에 대해 고유 아이디의 개수(즉, 인식한 사용자 수)와 동일한 개수의 전송 패킷을 생성한다.
패킷 전송부(280)는 패킷 생성부(260)에서 생성된 전송 패킷을 가상현실 서버(300)로 전송한다. 이를 통해, 클라이언트(200)는 스켈레톤 데이터의 전송을 위한 전송 패킷의 크기를 MTU 이하로 유지하여 패킷 손실, 통신 오류 등으로 인한 전송 오류를 방지하고, 가상현실 서버(300)로 정확한 스켈레톤 데이터를 전송할 수 있다.
가상현실 서버(300)는 복수의 클라이언트(200)로부터 전송받은 스켈레톤 데이터를 취합하여 가상공간상의 월드 좌표계를 구성한다. 가상현실 서버(300)는 복수의 클라이언트(200)로부터 전송받은 스켈레톤 데이터를 국소 지역별로 통합한다. 가상현실 서버(300)는 통합한 스켈레톤 데이터를 Unity3D 데이터로 변환하여 Unity3D 클라이언트(200; 즉, 모바일 HMD(400))로 전송한다. 이때, 가상현실 서버(300)는 모바일 HMD(400)에서 센싱된 위치 정보(예를 들면, 자이로 센서값)를 이용하여 정면 인식을 수행하고, 정면 인식 수행의 결과 및 월드 좌표계를 근거로 스켈레톤 데이터를 보정 및 통합하여 모바일 HMD(400)로 전송한다.
이를 위해, 도 7에 도시된 바와 같이, 가상현실 서버(300)는 통신부(310), 월드 좌표계 생성부(330), 정면 인식부(350), 데이터 통합부(370), 데이터 변환부(390)를 포함하여 구성된다.
통신부(310)는 복수의 클라이언트(200) 및 모바일 HMD(400)와 데이터를 송수신한다. 즉, 통신부(310)는 복수의 클라이언트(200)로부터 스켈레톤 데이터를 수신하고, 모바일 HMD(400)로부터 자이로 센서값을 수신한다. 통신부(310)는 데이터 변환부(390)에서 Unity3D 데이터로 변환된 스켈레톤 데이터를 모바일 HMD(400)로 전송한다.
월드 좌표계 생성부(330)는 통신부(310)를 통해 클라이언트(200)로부터 수신한 스켈레톤 데이터를 근거로 가상공간의 월드 좌표계를 생성한다. 즉, 월드 좌표계 생성부(330)는 클라이언트(200)로부터 수신한 스켈레톤 데이터에 포함된 포지션 데이터를 이용하여 국소 영역에 설치된 클라이언트(200)들의 좌표를 산출한다. 이때, 산출한 클라이언트(200)의 좌표는 해당 클라이언트(200)에 연결된 키넥트(100)의 좌표를 의미한다. 월드 좌표계 생성부(330)는 산출한 클라이언트(200)들의 좌표를 근거로 가상공간의 월드 좌표계를 생성한다.
이를 더욱 상세하게 설명하면, 월드 좌표계 생성부(330)는 국소 영역에 설치된 복수의 클라이언트(200)들 중에서 가장 먼저 연결된 클라이언트(200)를 월드 좌표계의 원점(0, 0, 0)으로 설정한다.
월드 좌표계 생성부(330)는 국소 영역에 설치된 클라이언트(200)들 중 가상현실 서버(300)에 연결된 클라이언트(200)의 수 및 클라이언트(200)들의 배치 위치(또는 각도)를 근거로 클라이언트(200)들의 배치 위치(각도)를 가정한다. 월드 좌표계 생성부(330)는 가정한 배치 위치(각도)에 따라 클라이언트(200)의 좌표를 산출한다.
이때, 월드 좌표계 생성부(330)는 영점으로 설정된 클라이언트(200)로부터 수신한 스켈레톤 데이터와 좌표 산출 대상인 클라이언트(200)로부터 수신한 스켈레톤 데이터로부터 검출한 포지션 데이터를 이용하여 좌표 산출 대상인 클라이언트(200)의 좌표를 산출한다. 여기서, 월드 좌표계 생성부(330)는 동일한 객체(즉, 사용자)의 스켈레톤 데이터를 이용하여 클라이언트(200)의 좌표를 산출한다.
월드 좌표계 생성부(330)는 산출한 클라이언트(200)의 좌표들을 이용하여 가상공간의 월드 좌표계를 생성한다.
예를 들어, 도 8에 도시된 바와 같이, 국소 영역에 제1 클라이언트(200a) 및 제2 클라이언트(200b)가 서로 대면하여 배치되고, 제1 클라이언트(200a)가 가상현실 서버(300)에 먼저 접속한 것으로 가정한다. 이때, 월드 좌표계 생성부(330)는 각 클라이언트(200)의 XZ 평면상에서의 위치를 산출한다.
월드 좌표계 생성부(330)는 먼저 접속한 제1 클라이언트(200a)를 원점으로 설정한다. 월드 좌표계 생성부(330)는 제1 클라이언트(200a) 및 제2 클라이언트(200b)로부터 수신한 스켈레톤 데이터에 포함된 포지션 데이터를 검출한다. 월드 좌표계 생성부(330)는 검출한 포지션 데이터들을 합산하여 제2 클라이언트(200b)의 위치를 산출한다.
즉, 하기 수학식 1과 같이, 월드 좌표계 생성부(330)는 제1 클라이언트(200a) 및 제2 클라이언트(200b)의 포지션 데이터를 이용하여 제2 클라이언트(200b)의 위치를 산출한다.
Figure 112017013339810-pat00001
여기서, k1은 제1 클라이언트(200a)의 위치, k2는 제2 클라이언트(200b)의 위치, p1은 제1 클라이언트(200a)의; 포지션 데이터, p2는 제2 클라이언트(200b)의 포지션 데이터를 의미한다.
예를 들어, 도 9에 도시된 바와 같이, 국소 영역에 제1 클라이언트(200a) 및 제2 클라이언트(200b)가 동일 선상에 배치되고, 제1 클라이언트(200a)가 가상현실 서버(300)에 먼저 접속한 것으로 가정한다. 이때, 월드 좌표계 생성부(330)는 각 클라이언트(200)의 XZ 평면상에서의 위치를 산출한다.
월드 좌표계 생성부(330)는 먼저 접속한 제1 클라이언트(200a)를 원점으로 설정한다. 월드 좌표계 생성부(330)는 제1 클라이언트(200a) 및 제2 클라이언트(200b)로부터 수신한 스켈레톤 데이터에 포함된 포지션 데이터를 검출한다. 월드 좌표계 생성부(330)는 검출한 포지션 데이터들을 감산하여 제2 클라이언트(200b)의 위치를 산출한다.
즉, 하기 수학식 2와 같이, 월드 좌표계 생성부(330)는 제1 클라이언트(200a)의 포지션 데이터에서 제2 클라이언트(200b)의 포지션 데이터를 감산하여 제2 클라이언트(200b)의 위치를 산출한다.
Figure 112017013339810-pat00002
여기서, k1은 제1 클라이언트(200a)의 위치, k2는 제2 클라이언트(200b)의 위치, p1은 제1 클라이언트(200a)의; 포지션 데이터, p2는 제2 클라이언트(200b)의 포지션 데이터를 의미한다.
예를 들어, 도 10에 도시된 바와 같이, 국소 영역에 제1 클라이언트(200a) 내지 제4 클라이언트(200d)가 배치되되, 제1 클라이언트(200a)와 제2 클라이언트(200b)가 대면하고, 제2 클라이언트(200b) 및 제4 클라이언트(200d)가 대면하여 배치되고, 제1 클라이언트(200a)가 가상현실 서버(300)에 가장 먼저 접속한 것으로 가정한다. 이때, 월드 좌표계 생성부(330)는 각 클라이언트(200)의 XZ 평면상에서의 위치를 산출한다.
월드 좌표계 생성부(330)는 먼저 접속한 제1 클라이언트(200a)를 원점으로 설정한다. 월드 좌표계 생성부(330)는 제1 클라이언트(200a) 및 제2 클라이언트(200b)로부터 수신한 스켈레톤 데이터에 포함된 포지션 데이터를 검출한다.
이때, 제1 클라이언트(200a)의 x축은 제2 클라이언트(200b)의 z축과 평행하지만 방향이 서로 다르기 때문에, 월드 좌표계 생성부(330)는 제1 클라이언트(200a)의 포지션 데이터 중 x축 좌표에서 제2 클라이언트(200b)의 포지션 데이터 중 z축 좌표를 감산하여 제2 클라이언트(200b)의 x축 좌표를 산출한다.
마찬가지로, 제1 클라이언트(200a)의 z축은 제2 클라이언트(200b)의 x축과 평행하고 방향도 같기 때문에, 월드 좌표계 생성부(330)는 제1 클라이언트(200a)의 포지션 데이터 중 z축 좌표와 제2 클라이언트(200b)의 포지션 데이터 중 x축 좌표를 합산하여 z축 좌표를 산출한다.
즉, 월드 좌표계 생성부(330)는 하기의 수학시 3을 이용하여 제1 클라이언트(200a)의 xz 평면상의 위치를 산출한다.
Figure 112017013339810-pat00003
여기서, k1은 제1 클라이언트(200a)의 위치, k2는 제2 클라이언트(200b)의 위치, p1x는 제1 클라이언트(200a)의 포지션 데이터 중 x축 좌표, p2z는 제2 클라이언트(200b)의 포지션 데이터 중 z축 좌표, p1z는 제1 클라이언트(200a)의 포지션 데이터 중 z축 좌표, p2x는 제2 클라이언트(200b)의 포지션 데이터 중 x축 좌표를 의미한다.
이때, 제3 클라이언트(200c)의 위치는 상술한 수학시 1과 동일한 방법으로 산출하고, 제4 클라이언트(200d)의 위치는 제2 클라이언트(200b)의 위치를 산출하는 방법과 거의 동일하며 하기의 수학식 4를 통해 산출할 수 있다.
Figure 112017013339810-pat00004
여기서, k1은 제1 클라이언트(200a)의 위치, k4는 제4 클라이언트(200d)의 위치, p1x는 제1 클라이언트(200a)의 포지션 데이터 중 x축 좌표, p4z는 제4 클라이언트(200d)의 포지션 데이터 중 z축 좌표, p1z는 제1 클라이언트(200a)의 포지션 데이터 중 z축 좌표, p4x는 제4 클라리언트의 포지션 데이터 중 x축 좌표를 의미한다.
즉, 제1 클라이언트(200a)의 x축과 제4 클라이언트(200d)의 z축이 평행하며 방향이 같기 때문에 제1 클라이언트(200a)의 포지션 데이터 중 x축 좌표와 제4 클라이언트(200d)의 포지션 데이터 중 z축 좌표를 합산하고, 제1 클라이언트(200a)의 z축과 제4 클라이언트(200d)의 x축이 평행하지만 방향이 다르기 때문에 제1 클라이언트(200a)의 포지션 데이터 중 z축 좌표에서 제4 클라이언트(200d)의 포지션 데이터 중 x축 좌표를 감산하여 제4 클라이언트(200d)의 위치를 산출한다.
월드 좌표계 생성부(330)는 국소 영역 내의 모든 클라이언트(200)들의 좌표를 포함하는 월드 좌표계를 생성한다.
정면 인식부(350)는 모바일 HMD(400)로부터 수신한 자이로 센서값을 근거로 사용자의 정면을 인식한다.
종래에는 키넥트(100)가 인식한 정보들을 이용하여 정면을 검출하고, 검출한 정면을 고려한 회전값을 산출하여 키넥트(100)의 회전 행렬을 산출한다.
이때, 종래에는 키넥트(100)에서 지원하는 안면 인식 검출을 이용하여 사용자의 안면을 인식하고, 안면이 검출된 키넥트(100)의 방향으로 정면을 인식한다.
하지만, 본 발명의 실시예에서는 사용자가 HMD를 착용하기 때문에 키넥트(100)에서 지원하는 안면 인식 검출을 이용한 정면 인식이 불가능하다.
이 경우, 키넥트(100)는 사용자의 정면을 인식하지 못해 사용자가 뒤로 돌아도 기존 정보를 그대로 인식하거나, 각각의 클라이언트(200)들이 정면을 주장하는 문제점이 있다.
이에, 정면 인식부(350)는 모바일 HMD(400)로부터 수신한 자이로 센서값을 근거로 사용자의 정면을 인식한다. 즉, 정면 인식부(350)는 자이로 센서값을 근거로 원점으로 설정된 클라이언트(200; 또는, 키넥트(100))의 z축으로 향하는 벡터와, 모바일 HMD(400)의 z축으로 향하는 벡터를 산출한다. 정면 인식부(350)는 산출한 두 벡터의 내적을 산출하고, 내적이 0 미만이면 정면으로 판단한다.
데이터 통합부(370)는 월드 좌표계 생성부(330)에서 생성한 월드 좌표계 및 정면 인식부(350)의 정면 인식결과를 근거로 국소 영역 내의 클라이언트(200)들로부터 수신한 스켈레톤 데이터를 통합한다.
즉, 정면 인식부(350)에서 원점 클라이언트(200)의 정면을 검출하면, 데이터 통합부(370)는 원점 클라이언트(200)와 스켈레톤 데이터를 전송한 클라이언트(200) 사이의 각도(즉, 사이각)를 스켈레톤 데이터에 반영한다. 이때, 데이터 통합부(370)는 원점 클라이언트(200)와 해당 클라이언트(200)의 사이각 만큼 스켈레톤 데이터를 회전시켜 보정한다.
국소 영역 내의 모든 클라이언트(200)로부터 수신한 스켈레톤 데이터에 대한 보정이 완료되면, 데이터 통합부(370)는 보정된 스켈레톤 데이터들을 병합(Merge)하여 하나의 통합 스켈레톤 데이터로 통합한다.
이때, 데이터 통합부(370)는 클라이언트(200)로부터 추적된 스켈레톤 데이터를 월드 좌표계를 이용하여 원점 클라이언트(200)에서 바라보는 것과 같게 보정한다. 데이터 통합부(370)는 보정한 스켈레톤 데이터를 평균하여 통합 스켈레톤 데이터로 통합한다.
데이터 변환부(390)는 통합 스켈레톤 데이터를 모바일 HMD(400)에서 사용할 수 있는 데이터 형식으로 변환한다. 즉, 통합 스켈레톤 데이터는 모바일 HMD(400)를 구성한 스마트폰에서 사용되기 때문에, 데이터 변환부(390)는 통합 스켈레톤 데이터를 Unity3D 데이터로 변환한다. 이때, 변환된 Unity3D 데이터는 통신부(310)를 통해 모바일 HMD(400; 즉, 스마트폰)로 전송된다.
모바일 HMD(400)는 가상현실 서버(300)로부터 수신한 Unity3D 데이터를 이용하여 가상현실을 사용자에게 제공한다. 이때, 모바일 HMD(400)는 Unity3D 엔진을 기반인 것을 일례로 하며, 가상현실 서버(300)로부터 Unity3D 데이터 형태의 스켈레톤 데이터를 전송받아 아바타를 출력하고, HMD의 방향(Orientation) 데이터(예를 들면, 자이로 센서 센싱값)를 가상현실 서버(300)로 전송한다.
이하, 본 발명의 실시예에 따른 가상현실 시스템을 이용한 가상현실 제공 방법을 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다. 도 11은 본 발명의 실시예에 따른 가상현실 시스템을 이용한 가상현실 제공 방법을 설명하기 위한 흐름도이도, 도 12는 도 11의 스켈레톤 데이터 생성 단계를 설명하기 위한 흐름도이다.
도 11을 참조하면, 가상현실 시스템을 이용한 가상현실 제공 방법은 스켈레톤 데이터 생성 단계(S100), 스켈레톤 데이터 수집 및 전송 단계(S200). 가상공간의 월드 좌표계 생성 단계(S300). 정면 인식 단계(S400), 스켈레톤 데이터 통합 단계(S500) 및 국소 영역에서 가상현실을 제공하는 단계(S600)를 포함한다.
스켈레톤 데이터 생성 단계(S100)에서는 국소 영역에 설치된 복수의 키넥트(100; Kinect)를 이용하여 국소 영역을 촬영한다. 스켈레톤 데이터 생성 단계(S100)에서는 촬영한 영상(또는 이미지)을 이용하여 스켈레톤 데이터를 생성한다. 이때, 스켈레톤 데이터는 사용자 위치에 해당하는 포지션(Position) 데이터 및 사용자 회전에 해당하는 회전(Quaternion) 데이터를 포함한다.
스켈레톤 데이터 수집 및 전송 단계(S200)에서는 클라이언트(200)를 이용하여 연결된 키넥트(100)로부터 스켈레톤 데이터를 수집한다. 이때, 클라이언트(200)는 키넥트(100)와 일대일로 연결되며, 국소 영역 내에 키넥트(100)와 동일한 수가 설치된다. 스켈레톤 데이터 수집 및 전송 단계(S200)에서는 수집한 스켈레톤 데이터를 사용자별로 분할한다.
도 12를 참조하면, 스켈레톤 데이터 생성 단계(S200)는 사용자 인식 단계(S220), 분할 단계(S240), 패킷 생성 단계(S260), 패킷 전송 단계(S280)를 포함한다.
사용자 인식 단계(S220)에서는 스켈레톤 데이터를 근거로 사용자를 인식한다. 즉, 사용자 인식 단계(S220)에서는 스켈레톤 데이터의 포지션 데이터 및 회전 데이터를 근거로 사용자를 인식한다. 사용자 인식 단계(S220)에서는 인식한 사용자별로 고유 아이디를 설정한다.
분할 단계(S240)에서는 S220 단계에서 인식한 사용자별로 스켈레톤 데이터를 분할한다. 즉, 분할 단계(S240)에서는 스켈레톤 데이터를 고유 아이디가 설정된 사용자별로 분할하고, 분할 스켈레톤 데이터를 고유 아이디와 연계한다.
패킷 생성 단계(S260)에서는 S240 단계에서 분할된 분할 스켈레톤 데이터를 근거로 스켈레톤 데이터를 가상현실 서버(300)로 전송하기 위한 전송 패킷을 생성한다. 즉, 패킷 생성 단계(S260)에서는 각 고유 아이디와 해당 고유 아이디에 연계된 분할 스켈레톤 데이터를 이용하여 전송 패킷을 생성한다. 이를 통해, 패킷 생성 단계(S260)에서는 하나의 스켈레톤 데이터에 대해 고유 아이디의 개수(즉, 인식한 사용자 수)와 동일한 개수의 전송 패킷을 생성한다.
패킷 전송 단계(S280)에서는 S260 단계에서 생성된 전송 패킷을 가상현실 서버(300)로 전송한다. 이를 통해, 클라이언트(200)는 스켈레톤 데이터의 전송을 위한 전송 패킷의 크기를 MTU 이하로 유지하여 패킷 손실, 통신 오류 등으로 인한 전송 오류를 방지하고, 가상현실 서버(300)로 정확한 스켈레톤 데이터를 전송할 수 있다.
월드 좌표계 생성 단계(S300)에서는 국소 영역에 설치된 복수의 클라이언트(200)와 연결된 가상현실 서버(300)를 이용하여 가상공간의 월드 좌표계를 생성한다. 이때, 월드 좌표계 생성 단계(S300)에서는 복수의 클라이언트(200)로부터 수집한 스켈레톤 데이터를 취합하여 가상공간 상의 월드 좌표계를 생성한다.
월드 좌표계 생성 단계(S300)는 국소 영역에 설치된 복수의 클라이언트(200)들 중에서 가장 먼저 연결된 클라이언트(200)를 월드 좌표계의 원점(0, 0, 0)으로 설정한다.
월드 좌표계 생성 단계(S300)는 국소 영역에 설치된 클라이언트(200)들 중 가상현실 서버(300)에 연결된 클라이언트(200)의 수 및 클라이언트(200)들의 배치 위치(또는 각도)를 근거로 클라이언트(200)들의 배치 위치(각도)를 가정한다.
월드 좌표계 생성 단계(S300)는 가정한 배치 위치(각도)에 따라 클라이언트(200)의 좌표를 산출한다. 이때, 월드 좌표계 생성 단계(S300)는 영점으로 설정된 클라이언트(200)로부터 수신한 스켈레톤 데이터와 좌표 산출 대상인 대상 클라이언트(200)로부터 수신한 스켈레톤 데이터로부터 검출한 포지션 데이터를 이용하여 좌표 산출 대상인 클라이언트(200)의 좌표를 산출한다. 여기서, 월드 좌표계 생성 단계(S300)는 동일한 객체(즉, 사용자)의 스켈레톤 데이터를 이용하여 클라이언트(200)의 좌표를 산출한다.
월드 좌표계 생성 단계(S300)는 국소 영역 내의 모든 클라이언트(200)의 좌표를 산출하고, 이를 이용하여 가상공간의 월드 좌표계를 생성한다.
정면 인식 단계(S400)에서는 가상현실 서버(300)를 이용하여 모바일 HMD(400)에서 센싱된 위치 정보(예를 들면, 자이로 센서값)를 이용하여 정면 인식을 수행한다.
종래에는 키넥트(100)가 인식한 정보들을 이용하여 정면을 검출하고, 검출한 정면을 고려한 회전값을 산출하여 키넥트(100)의 회전 행렬을 산출한다. 이때, 종래에는 키넥트(100)에서 지원하는 안면 인식 검출을 이용하여 사용자의 안면을 인식하고, 안면이 검출된 키넥트(100)의 방향으로 정면을 인식한다.
하지만, 본 발명의 실시예에서는 사용자가 HMD를 착용하기 때문에 키넥트(100)에서 지원하는 안면 인식 검출을 이용한 정면 인식이 불가능하다.
이에, 정면 인식 단계(S400)에서는 모바일 HMD(400)로부터 수신한 자이로 센서값을 근거로 사용자의 정면을 인식한다. 즉, 정면 인식 단계(S400)에서는 자이로 센서값을 근거로 원점으로 설정된 클라이언트(200; 또는, 키넥트(100))의 z축으로 향하는 벡터와, 모바일 HMD(400)의 z축으로 향하는 벡터를 산출한다. 정면 인식 단계(S400)에서는 산출한 두 벡터의 내적을 산출하고, 내적이 0 미만이면 정면으로 판단한다.
스켈레톤 데이터 통합 단계(S500)에서는 S300 단계에서 생성된 월드 좌표계 및 S400 단계의 정면 인식 결과를 근거로 스켈레톤 데이터를 보정 및 통합하여 모바일 HMD(400)로 전송한다.
스켈레톤 데이터 통합 단계(S500)에서는 S300 단계에서 생성한 월드 좌표계 및 S400 단계의 정면 인식 결과를 근거로 국소 영역 내의 클라이언트(200)들로부터 수신한 스켈레톤 데이터를 통합한다.
이때, 스켈레톤 데이터 통합 단계(S500)에서는 S400 단계에서 원점 클라이언트(200)의 정면을 검출하면 원점 클라이언트(200)와 스켈레톤 데이터를 전송한 클라이언트(200) 사이의 각도(즉, 사이각)를 스켈레톤 데이터에 반영한다. 이때, 스켈레톤 데이터 통합 단계(S500)에서는 원점 클라이언트(200)와 해당 클라이언트(200)의 사이각 만큼 스켈레톤 데이터를 회전시켜 보정한다.
스켈레톤 데이터 통합 단계(S500)에서는 국소 영역 내의 모든 클라이언트(200)로부터 수신한 스켈레톤 데이터에 대한 보정이 완료되면 보정된 스켈레톤 데이터들을 병합(Merge)하여 하나의 통합 스켈레톤 데이터로 통합한다. 이때, 스켈레톤 데이터 통합 단계(S500)에서는 클라이언트(200)로부터 추적된 스켈레톤 데이터를 월드 좌표계를 이용하여 원점 클라이언트(200)에서 바라보는 것과 같게 보정한다. 스켈레톤 데이터 통합 단계(S500)에서는 보정한 스켈레톤 데이터를 평균하여 통합 스켈레톤 데이터로 통합한다.
가상현실을 제공하는 단계(S600)에서는 S500 단계에서 통합된 통합 스켈레톤 데이터를 모바일 HMD(400)에서 사용할 수 있는 데이터 형식으로 변환한다. 즉, 통합 스켈레톤 데이터는 모바일 HMD(400)를 구성한 스마트폰에서 사용되기 때문에, 가상현실을 제공하는 단계(S600)에서는 통합 스켈레톤 데이터를 Unity3D 데이터로 변환한다.
모바일 HMD(400)는 Unity3D 데이터를 이용하여 가상현실을 사용자에게 제공한다. 이때, 모바일 HMD(400)는 Unity3D 엔진을 기반인 것을 일례로 하며, 가상현실 서버(300)로부터 Unity3D 데이터 형태의 스켈레톤 데이터를 전송받아 아바타를 출력한다.
이상에서 본 발명에 따른 바람직한 실시예에 대해 설명하였으나, 다양한 형태로 변형이 가능하며, 본 기술분야에서 통상의 지식을 가진자라면 본 발명의 특허청구범위를 벗어남이 없이 다양한 변형예 및 수정예를 실시할 수 있을 것으로 이해된다.
100: 키넥트 200: 클라이언트
220: 데이터 수신부 240: 사용자 인식부
260: 패킷 생성부 280: 패킷 전송부
300: 가상현실 서버 310: 통신부
330: 월드 좌표계 생성부 350: 정면 인식부
370: 데이터 통합부 390: 데이터 변환부
400: 모바일 HMD

Claims (12)

  1. 국소 영역 내에 위치하는 모바일 HMD;
    상기 국소 영역 내의 사용자 움직임을 감지하여 스켈레톤 데이터를 생성하는 복수의 키넥트;
    상기 국소 영역 내에 배치되어 상기 복수의 키넥트와 일대일로 연결되고, 연결된 상기 키넥트로부터 스켈레톤 데이터를 수집하고, 상기 스켈레톤 데이터를 사용자별로 구분하여 분할 스켈레톤 데이터를 생성하는 복수의 클라이언트; 및
    상기 복수의 클라이언트로부터 분할 스켈레톤 데이터를 수집하고, 상기 분할 스켈레톤 데이터를 근거로 가상공간의 월드 좌표계를 생성하고, 상기 국소 영역 내의 모바일 HMD의 위치 정보와 상기 월드 좌표계를 근거로 스켈레톤 데이터를 보정하고, 보정된 상기 스켈레톤 데이터를 변환하여 상기 모바일 HMD에게로 제공하는 가상현실 서버를 포함하되,
    상기 가상현실 서버는,
    상기 복수의 클라이언트로부터 수신한 스켈레톤 데이터에 포함된 포지션 데이터를 이용하여 상기 복수의 클라이언트의 좌표를 산출하고, 산출한 상기 복수의 클라이언트의 좌표를 근거로 상기 월드 좌표계를 생성하는 월드 좌표계 생성부;
    상기 모바일 HMD로부터 수신한 자이로 센서값 및 상기 월드 좌표계 생성부에서 생성된 월드 좌표계를 근거로 상기 복수의 클라이언트 중 원점 클라이언트의 정면을 인식하는 정면 인식부;
    상기 정면 인식부에서 정면을 인식하면 원점 클라이언트와 다른 클라이언트의 사이의 각도를 반영하여 상기 복수의 클라이언트로부터 수신한 스켈레톤 데이터를 보정하고, 보정된 스켈레톤 데이터를 평균하여 통합 스켈레톤 데이터로 통합하는 데이터 통합부; 및
    상기 통합 스켈레톤 데이터를 상기 모바일 HMD에서 사용되는 Unity3D 데이터로 변환하는 데이터 변환부를 포함하는 것을 특징으로 하는 가상현실 시스템.
  2. 제1항에 있어서,
    상기 클라이언트는,
    연결된 키넥트로부터 포지션 데이터 및 회전 데이터를 포함하는 스켈레톤 데이터를 수신하는 데이터 수신부;
    상기 데이터 수신부에서 수신한 스켈레톤 데이터를 근거로 사용자를 인식하여 고유 아이디를 설정하고, 상기 스켈레톤 데이터와 상기 고유 아이디를 연계하여 분할 스켈레톤 데이터를 생성하는 사용자 인식부;
    상기 분할 스켈레톤 데이터를 근거로 전송 패킷을 생성하되, 사용자별로 전송 패킷을 생성하여 상기 사용자 인식부에서 인식한 사용자 수와 동일한 개수의 전송 패킷을 생성하는 패킷 생성부; 및
    상기 패킷 생성부에서 생성된 전송 패킷을 상기 가상현실 서버로 전송하는 패킷 전송부를 포함하는 가상현실 시스템.
  3. 삭제
  4. 제1항에 있어서,
    상기 월드 좌표계 생성부는,
    상기 복수의 클라이언트 중 가장 먼저 상기 가상현실 서버에 접속한 클라이언트를 원점 클라이언트로 설정하고,
    상기 원점 클라이언트로부터 수신한 스켈레톤 데이터 및 좌표 산출 대상인 대상 클라이언트로부터 수신한 스켈레톤 데이터의 포지션 데이터를 근거로 대상 클라이언트의 좌표를 산출하는 가상현실 시스템.
  5. 제1항에 있어서,
    상기 정면 인식부는 상기 자이로 센서값을 근거로 상기 복수의 클라이언트 중 원점으로 설정된 클라이언트의 z축으로 향하는 벡터와 상기 모바일 HMD의 z축으로 향하는 벡터를 산출하고, 두 벡터의 내적이 0 미만이면 정면으로 판단하는 가상현실 시스템.
  6. 가상현실 시스템을 이용한 가상현실 제공 방법에 있어서,
    국소 영역에 설치된 복수의 키넥트에서 촬영된 영상을 근거로 포지션 데이터 및 회전 데이터를 포함하는 스켈레톤 데이터를 생성하는 단계;
    상기 국소 영역에 설치된 복수의 클라이언트에서 상기 복수의 키넥트로부터 상기 생성된 스켈레톤 데이터를 수집하고, 상기 스켈레톤 데이터를 사용자별로 분할한 분할 스켈레톤 데이터를 전송하는 스켈레톤 데이터 수집 및 전송하는 단계;
    상기 복수의 클라이언트로부터 분할 스켈레톤 데이터를 수집하고, 상기 분할 스켈레톤 데이터를 근거로 가상공간의 월드 좌표계를 생성하는 단계;
    상기 국소 영역 내의 모바일 HMD로부터 수집한 위치 정보와 상기 월드 좌표계를 근거로 상기 복수의 클라이언트 중 원점 클라이언트의 정면을 인식하는 단계;
    상기 원점 클라이언트의 정면을 인식하면 상기 복수의 클라이언트로부터 수신한 스켈레톤 데이터를 통합하여 통합 스켈레톤 데이터를 생성하는 스켈레톤 데이터 통합하는 단계; 및
    상기 통합 스켈레톤 데이터를 상기 모바일 HMD에서 사용 가능한 데이터로 변환하여 가상현실을 제공하는 단계를 포함하는 가상현실 제공 방법.
  7. 제6항에 있어서,
    상기 스켈레톤 데이터를 생성하는 단계는,
    클라이언트로부터 수신한 스켈레톤 데이터의 포지션 데이터 및 회전 데이터를 근거로 사용자를 인식하고, 인식한 사용자에 고유 아이디를 설정하는 사용자 인식 단계;
    상기 사용자 인식 단계에서 인식한 사용자별로 스켈레톤 데이터를 분할하되, 스켈레톤 데이터를 고유 아이디가 설정된 사용자별로 분할하여 분할 스켈레톤 데이터를 생성하고, 상기 분할 스켈레톤 데이터를 고유 아이디와 연계하는 분할 단계;
    상기 고유 아이디 및 상기 분할 스켈레톤 데이터를 근거로 전송 패킷을 생성하되, 사용자별로 전송 패킷을 생성하여 상기 인식한 사용자의 수와 동일한 개수의 전송 패킷을 생성하는 패킷 생성 단계; 및
    가상현실 서버로 상기 생성된 전송 패킷을 전송하는 단계를 포함하는 가상현실 제공 방법.
  8. 제7항에 있어서,
    상기 가상공간의 월드 좌표계를 생성하는 단계에서는 상기 복수의 클라이언트 중 가장 먼저 상기 가상현실 서버에 접속한 클라이언트를 원점 클라이언트로 설정하고, 상기 원점 클라이언트로부터 수신한 스켈레톤 데이터 및 좌표 산출 대상인 대상 클라이언트로부터 수신한 스켈레톤 데이터의 포지션 데이터를 근거로 대상 클라이언트의 좌표를 산출하는 가상현실 제공 방법.
  9. 제6항에 있어서,
    상기 정면을 인식하는 단계에서는
    상기 모바일 HMD로부터 수집한 위치 정보인 자이로 센서값을 근거로 상기 복수의 클라이언트 중 원점 클라이언트의 z축으로 향하는 벡터와 상기 모바일 HMD의 z축으로 향하는 벡터를 산출하고, 두 벡터의 내적이 0 미만이면 상기 원점 클라이언트의 정면으로 판단하는 가상현실 제공 방법.
  10. 제6항에 있어서,
    상기 스켈레톤 데이터 통합하는 단계에서는
    상기 원점 클라이언트와 다른 클라이언트의 사이의 각도를 반영하여 상기 복수의 클라이언트로부터 수신한 스켈레톤 데이터를 보정하고, 보정된 스켈레톤 데이터를 평균하여 통합 스켈레톤 데이터로 통합하는 가상현실 제공 방법.
  11. 제6항에 있어서,
    상기 가상현실을 제공하는 단계에서는 상기 통합 스켈레톤 데이터를 Unity3D 데이터로 변환하는 가상현실 제공 방법.
  12. 제6항의 방법을 컴퓨터로 실행시키기 위하여 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터 프로그램.
KR1020170017713A 2017-02-08 2017-02-08 가상현실 시스템 및 이를 이용한 가상현실 제공 방법 Active KR101842600B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170017713A KR101842600B1 (ko) 2017-02-08 2017-02-08 가상현실 시스템 및 이를 이용한 가상현실 제공 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170017713A KR101842600B1 (ko) 2017-02-08 2017-02-08 가상현실 시스템 및 이를 이용한 가상현실 제공 방법

Publications (1)

Publication Number Publication Date
KR101842600B1 true KR101842600B1 (ko) 2018-05-14

Family

ID=62188040

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170017713A Active KR101842600B1 (ko) 2017-02-08 2017-02-08 가상현실 시스템 및 이를 이용한 가상현실 제공 방법

Country Status (1)

Country Link
KR (1) KR101842600B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102404667B1 (ko) 2020-12-04 2022-06-07 주식회사 크리스피 증강현실 기반의 컨텐츠 제공 장치 및 방법
KR102486191B1 (ko) 2022-01-14 2023-01-06 모델솔루션(주) 사용자 위치 정보 탐지의 오류를 방지하는 가상현실 시스템 및 이를 이용한 가상현실 제공 방법
KR102490703B1 (ko) 2022-06-29 2023-01-19 모델솔루션(주) 메타버스 환경 구현을 위한 시뮬레이터
US12282608B2 (en) 2022-12-30 2025-04-22 Hyundai Motor Company User interface, control method thereof, and vehicle having user interface

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110030419A (ko) * 2008-02-27 2011-03-23 소니 컴퓨터 엔터테인먼트 아메리카 엘엘씨 장면의 심도 데이터를 포착하고, 컴퓨터 액션을 적용하기 위한 방법들
KR101696102B1 (ko) * 2015-11-04 2017-01-13 계명대학교 산학협력단 가상현실 제공 시스템 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110030419A (ko) * 2008-02-27 2011-03-23 소니 컴퓨터 엔터테인먼트 아메리카 엘엘씨 장면의 심도 데이터를 포착하고, 컴퓨터 액션을 적용하기 위한 방법들
KR101696102B1 (ko) * 2015-11-04 2017-01-13 계명대학교 산학협력단 가상현실 제공 시스템 및 그 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102404667B1 (ko) 2020-12-04 2022-06-07 주식회사 크리스피 증강현실 기반의 컨텐츠 제공 장치 및 방법
KR102486191B1 (ko) 2022-01-14 2023-01-06 모델솔루션(주) 사용자 위치 정보 탐지의 오류를 방지하는 가상현실 시스템 및 이를 이용한 가상현실 제공 방법
KR102490703B1 (ko) 2022-06-29 2023-01-19 모델솔루션(주) 메타버스 환경 구현을 위한 시뮬레이터
US12282608B2 (en) 2022-12-30 2025-04-22 Hyundai Motor Company User interface, control method thereof, and vehicle having user interface

Similar Documents

Publication Publication Date Title
JP7574525B2 (ja) 高さ測定方法および装置、ならびに端末
KR101842600B1 (ko) 가상현실 시스템 및 이를 이용한 가상현실 제공 방법
JP5843340B2 (ja) 3次元環境共有システム及び3次元環境共有方法
US20210042520A1 (en) Deep learning for three dimensional (3d) gaze prediction
TWI501130B (zh) 虛擬觸控輸入系統
CN106575437B (zh) 信息处理装置、信息处理方法以及程序
WO2015093130A1 (ja) 情報処理装置、情報処理方法およびプログラム
CN106687885A (zh) 用于信使处理的可穿戴设备及其使用方法
CN109358754B (zh) 一种混合现实头戴显示系统
CN107577451B (zh) 多Kinect人体骨架坐标变换方法及处理设备、可读存储介质
WO2019019248A1 (zh) 一种虚拟现实交互方法、装置及系统
CN108885487B (zh) 一种可穿戴式系统的手势控制方法以及可穿戴式系统
KR20110090789A (ko) 통신 제어 장치, 통신 제어 방법 및 프로그램
JP2020144776A (ja) 作業支援システム、作業支援装置、及び作業支援方法
KR20200076267A (ko) 골격의 길이 정보를 이용한 제스쳐 인식 방법 및 처리 시스템
CN106853638A (zh) 一种基于增强现实的人体生物信号远程控制系统及方法
CN108156465B (zh) 运算装置、发送方法
WO2017061890A1 (en) Wireless full body motion control sensor
KR101696102B1 (ko) 가상현실 제공 시스템 및 그 방법
CN112099529A (zh) 虚拟现实设备控制系统和方法
CN109859265B (zh) 一种测量方法及移动终端
JP2021174239A (ja) コンピュータプログラム、サーバ装置及び方法
US12442915B1 (en) Method and system for determining device orientation within augmented reality
US20240386750A1 (en) Markerless motion capture
CN111966213B (zh) 图像处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

P14-X000 Amendment of ip right document requested

St.27 status event code: A-5-5-P10-P14-nap-X000

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

P14-X000 Amendment of ip right document requested

St.27 status event code: A-5-5-P10-P14-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 8

U11 Full renewal or maintenance fee paid

Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE)

Year of fee payment: 8