KR20220007723A - 우선순위화된 동작 모델들을 가지는 다중 계층 인공 현실 컨트롤러 포즈 추적 아키텍처 - Google Patents

우선순위화된 동작 모델들을 가지는 다중 계층 인공 현실 컨트롤러 포즈 추적 아키텍처 Download PDF

Info

Publication number
KR20220007723A
KR20220007723A KR1020217034813A KR20217034813A KR20220007723A KR 20220007723 A KR20220007723 A KR 20220007723A KR 1020217034813 A KR1020217034813 A KR 1020217034813A KR 20217034813 A KR20217034813 A KR 20217034813A KR 20220007723 A KR20220007723 A KR 20220007723A
Authority
KR
South Korea
Prior art keywords
controller
handheld controller
state data
handheld
tracker
Prior art date
Application number
KR1020217034813A
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 페이스북 테크놀로지스, 엘엘씨
Publication of KR20220007723A publication Critical patent/KR20220007723A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • 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/017Head mounted
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Architecture (AREA)
  • Optics & Photonics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

하나 이상의 컨트롤러들이 시야 내에서 추적가능하지 않을 때 2개의 구성요소들, 시야(FOV) 추적기 및 특수화된 동작 모델들을 적용하는 비 FOV 추적기를 가지는 핸드헬드 컨트롤러 추적 서브시스템을 포함하는 인공 현실 시스템이 설명된다. 특히, 전형적인 동작 조건들 하에서, FOV 추적기는 컨트롤러에 대한 추정된 포즈들을 계산하기 위해 머리 장착 디스플레이(HMD)에 대한 상태 데이터 및 컨트롤러의 컨트롤러 상태 데이터(속도, 가속도 등)를 수신한다. 컨트롤러가 추적가능한 경우(예컨대, 시야 내에 있고 가려지지 않음), FOV 추적기에 의해 계산된 바와 같은 포즈가 사용되며 비 FOV 추적기는 우회된다. 컨트롤러가 시야 내에서 추적가능하지 않고 컨트롤러 상태 데이터가 하나 이상의 코머 추적 케이스들에 대한 활성화 조건들을 충족하는 경우, 비 FOV 추적기는 컨트롤러에 대한 컨트롤러 포즈를 계산하기 위해 특수화된 동작 모델들 중 하나 이상을 적용한다.

Description

우선순위화된 동작 모델들을 가지는 다중 계층 인공 현실 컨트롤러 포즈 추적 아키텍처
관련된 출원에 대한 상호 참조
본 출원은 2019년 5월 20일에 출원된 미국 출원 번호 16/417,244로부터의 우선권을 주장하며, 그의 내용은 모든 목적들을 위해 본 명세서에 전체적으로 참조로서 통합된다.
본 발명은 일반적으로 가상 현실, 혼합 현실, 및/또는 증강 현실 시스템들과 같은 인공 현실 시스템들에 관한 것이고, 특히 인공 현실 시스템들을 위한 추적 컨트롤러들에 관한 것이다.
인공 현실 시스템들은 컴퓨터 게이밍, 건강 및 안전, 산업, 및 교육과 같은 많은 분야들의 적용들을 통해 점점 더 아주 흔해지고 있다. 몇몇 예들로서, 인공 현실 시스템들은 모바일 디바이스들, 게이밍 콘솔들, 개인용 컴퓨터들, 영화관들, 및 테마 파크들에 통합되고 있다. 일반적으로, 인공 현실은 예컨대, 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 이들의 일부 조합 및/또는 파생물들을 포함할 수 있는, 사용자에게 제공하기 전에 일부 방식으로 조정된 일 형태의 현실이다.
전형적인 인공 현실 시스템들은 콘텐트를 렌더링하고 사용자들에게 디스플레이하기 위한 하나 이상의 디바이스들을 포함한다. 하나의 예로서, 인공 현실 시스템은 사용자에 의해 착용되고 인공 현실 콘텐트를 사용자에게 출력하도록 구성된 머리 장착 디스플레이(HMD)를 통합할 수 있다. 인공 현실 콘텐트는 캡쳐된 콘텐트(예컨대, 실세계 비디오 및/또는 이미지들)와 조합된 완전히 생성된 콘텐트 또는 생성된 콘텐트를 포함할 수 있다. 동작 동안, 사용자는 애플리케이션들과 상호작용하거나 인공 현실 시스템과 상호작용하기 위해 핸드헬드 컨트롤러를 활용할 수 있다. 인공 현실 콘텐트 내의 그래픽 요소들의 양태들은 핸드헬드 컨트롤러의 포지션 및 지향방향에 기초하여 결정될 수 있다.
일반적으로, 본 발명은 인공 현실(AR) 시스템들, 더 구체적으로 하나 이상의 핸드헬드 컨트롤러들의 포즈(pose)를 결정하고 추적하기 위해 머리 장착 디스플레이(HMD), 하나 이상의 핸드헬드 컨트롤러들, 및 센서들 또는 카메라들을 포함하는 AR 시스템을 위한 컨트롤러 추적 서브시스템을 설명한다.
핸드헬드 컨트롤러의 포즈를 추적하기 위해 센서들 또는 카메라들을 사용하는 종래의 AR 시스템들의 기술적 문제는 핸드헬드 컨트롤러가 센서들 또는 카메라들의 시야(FOV)를 벗어날 수 있거나, 시야 내에 있지만 사용자의 손이나 다른 신체 부위와 같은 또 다른 객체, 제2 핸드헬드 컨트롤러에 의해, 또는 물리적 환경의 다른 객체들에 의해 가려질 수 있다. AR 시스템은 따라서, 핸드헬드 컨트롤러에 대한 정확한 포즈를 결정할 수 없으며, 이는 AR 시스템의 동작을 통한 사용자 불만족 및 좌절로 이어질 수 있다.
상기 언급된 기술적 문제에 대한 기술적 해결책으로서, 일부 양태들은 핸드헬드 컨트롤러가 AR 시스템의 센서들 또는 카메라들의 시야 내에서 추적가능할 때 AR 시스템의 센서들 또는 카메라들에 의해 제공된 이미지 데이터에 기초하여 핸드헬드 컨트롤러에 대한 포즈를 결정할 수 있고, 핸드헬드 컨트롤러가 센서들 또는 카메라들의 시야 내에서 추적가능하지 않을 때, 또는 핸드헬드 컨트롤러가 시야에서 또 다른 객체에 의해 가려지는 경우, 핸드헬드 컨트롤러의 포즈를 결정하기 위해 다른 이용가능한 데이터 및 동작 모델들을 또한 사용할 수 있다.
예를 들면, 컨트롤러 추적 서브시스템은 2개의 구성요소들, FOV 추적 구성요소(성상도 추적 구성요소로서 또한 언급됨) 및 컨트롤러들 중 하나 이상이 AR 시스템의 센서들 및 카메라들의 시야 내에서 용이하게 추적가능하지 않을 때 특수화된 동작 모델들을 적용하는 비 FOV 추적 구성요소("코너 케이스(corner-case)" 추적 구성요소로서 또한 언급됨)를 가질 수 있다. 특히, 전형적인 동작 조건들에서, FOV 추적 구성요소는 HMD 상태 데이터 및 컨트롤러 측정 데이터(속도, 가속도 등)를 수신하여 핸드헬드 컨트롤러에 대한 이미지 기반 컨트롤러 상태 데이터를 계산한다. 핸드헬드 컨트롤러가 추적가능한 경우(예컨대, 시야 내에서, 가려지지 않고 정지하지 않음), 이미지 기반 컨트롤러 상태 데이터는 컨트롤러 포즈를 결정하기 위해 사용되고 비 FOV 추적 구성요소는 우회된다. 핸드헬드 컨트롤러가 시야 내에서 추적가능하지 않고 핸드헬드 컨트롤러 측정 데이터가 하나 이상의 추적 코너 케이스들에 대한 활성화 조건들을 충족하는 경우, 비 FOV 추적 구성요소는 핸드헬드 컨트롤러들 중 하나 이상에 대한 모델 기반 컨트롤러 상태 데이터를 계산하기 위해 하나 이상의 활성화된 특수화된 동작 모델들을 적용한다. 모델 기반 컨트롤러 상태 데이터는 그 다음, 컨트롤러 포즈를 결정하기 위해 사용된다.
예시적인 코너 케이스들은: 컨트롤러가 HMD 근처에 있고 HMD에 부착되지 않음, 부착되지 않은 채로 두 손으로 번갈아(hand-over-hand), 부착된 채로 두 손으로 번갈아, 컨트롤러의 포지션이 신뢰가능하지 않은 것, 및 컨트롤러가 정지된 것을 포함한다. 코너 케이스들의 각각은 활성화 조건들과 연관된 동작 모델이 평가되는지의 여부를 결정하는 활성화 및 비활성화 조건들을 가질 수 있다. 코너 케이스에 대한 거동(behavior)은 유한 상태 기계(FSM) 및 핸드헬드 컨트롤러들에 대한 모델 기반 컨트롤러 상태를 결정하기 위해 사용할 수 있는 제한된 동작 모델을 포함할 수 있다. 디스플레이 프레임 생성 주기 동안 하나보다 많은 코너 케이스에 대한 거동들이 활성화될 수 있다. 가장 높은 우선순위 거동과 연관된 활성화된 모델의 평가로부터 발생하는 결과적인 모델 기반 컨트롤러 상태 데이터는 핸드헬드 컨트롤러에 대한 포즈를 결정하기 위해 사용할 수 있다.
상기 설명된 양태들 및 하기에서 설명된 또 다른 양태들은 종래의 인공 현실 시스템 구현들에 대한 기술적 개선을 제공할 수 있고, 핸드헬드 컨트롤러가 AR 시스템의 센서들 및/또는 카메라들의 시야 내에 있지 않거나, 핸드헬드 컨트롤러가 가려지는 경우들에서 AR 시스템이 핸드헬드 컨트롤러에 대한 포즈를 결정하는 것을 가능하게 하는 것과 같은 하나 이상의 실용적인 애플리케이션들을 제공할 수 있다. 결과적인 컨트롤러 포즈는 컨트롤러가 AR 시스템의 센서들 및/또는 카메라들의 시야 내에서 추적가능하지 않을 때 인공 현실 시스템에 의해 인공 현실 콘텐트의 더 정확한 렌더링을 제공하기 위해 사용될 수 있다.
하나 이상의 예시적인 양태들에서, 인공 현실 시스템은 물리적 환경을 나타내는 이미지 데이터를 캡쳐하도록 구성된 이미지 캡쳐 디바이스; 인공 현실 콘텐트를 출력하도록 구성된 머리 장착 디스플레이(HMD); 컨트롤러 상태 데이터에 적어도 부분적으로 기초하여, 핸드헬드 컨트롤러의 포지션 및 지향방향을 나타내는 컨트롤러 포즈를 결정하도록 구성된 포즈 추적기로서, 핸드헬드 컨트롤러에 대한 상이한 동작 거동들과 연관된 복수의 동작 모델들을 가지는 비 FOV 추적기를 포함하고, 복수의 동작 모델들의 각각은 하나 이상의 각각의 활성화 조건들과 연관되며, 비 FOV 추적기는 핸드헬드 컨트롤러가 이미지 데이터 내에서 추적가능하지 않고 복수의 동작 모델들 중 하나가 활성화된다는 결정에 응답하여 복수의 동작 모델들 중 하나에 따라 컨트롤러 상태 데이터를 결정하도록 구성되는, 상기 포즈 추적기; 및 컨트롤러 포즈에 따라 인공 현실 콘텐트 및 적어도 하나의 그래픽 객체를 HMD에서 디스플레이하기 위해 렌더링하도록 구성된 렌더링 엔진을 포함한다.
하나 이상의 또 다른 예시적인 양태들에서, 방법은 머리 장착 디스플레이(HMD)를 포함하는 인공 현실 시스템의 이미지 캡쳐 디바이스에 의해, 물리적 환경을 나타내는 이미지 데이터를 얻는 단계; 인공 현실 시스템의 비 FOV 추적기에 의해, 핸드헬드 컨트롤러에 대한 상이한 동작 거동들과 연관된 복수의 동작 모델들 중 하나의 동작 모델에 따라 핸드헬드 컨트롤러에 대한 컨트롤러 상태 데이터를 결정하는 단계로서, 복수의 동작 모델들의 각각은 하나 이상의 각각의 활성화 조건들과 연관되고, 동작 모델에 따라 컨트롤러 상태 데이터를 결정하는 단계는 핸드헬드 컨트롤러가 이미지 데이터 내에서 추적가능하지 않고 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터가 동작 모델과 연관된 하나 이상의 활성화 조건들을 만족시킨다고 결정하는 것에 응답하는, 상기 컨트롤러 상태 데이터를 결정하는 단계; 인공 현실 시스템에 의해, 컨트롤러 상태 데이터에 적어도 부분적으로 기초하여 핸드헬드 컨트롤러의 포지션 및 지향방향을 나타내는 컨트롤러 포즈를 결정하는 단계; 및 HMD에서 디스플레이하기 위해 인공 현실 시스템에 의해, 컨트롤러 포즈에 따라 인공 현실 콘텐트 및 적어도 하나의 그래픽 객체를 렌더링하는 단계를 포함한다.
하나 이상의 부가적인 예시적인 양태들에서, 비 일시적 컴퓨터 판독가능한 매체는 실행될 때, 인공 현실 시스템의 하나 이상의 프로세서들로 하여금 이미지 캡쳐 디바이스를 통해 물리적 환경을 나타내는 이미지 데이터를 얻게 하고; 핸드헬드 컨트롤러에 대한 상이한 동작 거동들과 연관된 복수의 동작 모델들 중 하나의 동작 모델에 따라 핸드헬드 컨트롤러에 대한 컨트롤러 상태 데이터를 결정하게 하는 것으로서, 복수의 동작 모델들의 각각은 하나 이상의 각각의 활성화 조건들과 연관되고, 동작 모델에 따른 컨트롤러 상태 데이터의 결정은 핸드헬드 컨트롤러가 이미지 데이터 내에서 추적가능하지 않고 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터가 동작 모델과 연관된 하나 이상의 활성화 조건들을 만족시킨다는 결정에 응답하는, 상기 컨트롤러 상태 데이터를 결정하게 하고; 컨트롤러 상태 데이터에 적어도 부분적으로 기초하여 핸드헬드 컨트롤러의 포지션 및 지향방향을 나타내는 컨트롤러 포즈를 결정하게 하며; HMD에서 디스플레이하기 위해 컨트롤러 포즈에 따라 인공 현실 콘텐트 및 적어도 하나의 그래픽 객체를 렌더링하게 하는 지시들을 포함한다.
본 발명의 기술들의 하나 이상의 예들의 상세들은 첨부 도면들 및 하기의 설명에서 제시된다. 기술들의 다른 특징들, 목적들, 및 장점들은 설명 및 도면들로부터, 및 청구항들로부터 명백할 것이다.
도 1a는 본 발명의 기술들에 따라 인공 현실 시스템의 이미지 캡쳐 디바이스들의 시야 내에서 추적가능하지 않은 하나 이상의 핸드헬드 컨트롤러들에 대한 포즈 추적을 수행하는 일 예시적인 인공 현실 시스템을 묘사하는 예시를 도시한 도면.
도 1b는 본 발명의 기술들에 따라 인공 현실 시스템의 이미지 캡쳐 디바이스들의 시야 내에서 추적가능하지 않은 하나 이상의 핸드헬드 컨트롤러들에 대한 포즈 추적을 수행하는 또 다른 예시적인 인공 현실 시스템을 묘사하는 예시를 도시한 도면.
도 2는 본 발명의 기술들에 따라 동작하는 일 예시적인 HMD를 묘사하는 예시를 도시한 도면.
도 3은 본 발명의 기술들에 따라 도 1a, 도 1b의 인공 현실 시스템들의 HMD의 일 예시적인 사례에 의해 핸드헬드 컨트롤러에 대한 포즈 추적이 수행되는 일례를 묘사하는 블록도.
도 4는 도 1a, 도 1b의 인공 현실 시스템들의 HMD 및 콘솔의 예시적인 사례들에 의해 핸드헬드 컨트롤러에 대한 포즈 추적이 수행되는 예시적인 구현들을 도시하는 블록도.
도 5는 본 발명의 양태들에 따른 일 예시적인 비 FOV 추적기의 구성요소들을 도시하는 블록도.
도 6은 일부 경우들에서, 본 발명의 양태들에 따라 시야에서 추적가능하지 않은 핸드헬드 컨트롤러에 대한 컨트롤러 포즈를 결정하기 위한 방법의 예시적인 동작들을 도시하는 흐름도.
도 7 내지 도 10은 본 발명의 양태들에 따라 거동들을 활성화하고 활성화된 거동들과 연관된 동작 모델들을 평가하기 위한 방법들의 예시적인 동작들을 도시하는 흐름도들.
도 11은 본 발명의 양태들에 따라 핸드헬드 컨트롤러가 시야에 재진입할 때 지터(jitter)를 감소시키기 위한 방법의 예시적인 동작들을 도시하는 흐름도.
도 12a 및 도 12b, 도 13a 및 도 13b, 도 14a 및 도 14b, 및 도 15a 및 도 15b는 예시적인 물리적 환경들 및 예시적인 물리적 환경들에 기초한 예시적인 인공 현실 콘텐트를 도시한 도면들.
도면들 및 설명 전반에 걸쳐 유사한 참조 문자들은 유사한 요소들을 언급한다.
도 1a는 본 발명의 기술들에 따라 인공 현실 시스템의 이미지 캡쳐 디바이스들의 시야 내에서 추적가능하지 않은 하나 이상의 핸드헬드 컨트롤러들(114)에 대한 포즈 추적을 수행하는 일 예시적인 인공 현실 시스템(10)을 묘사하는 예시이다. 일부 예시적인 구현들에서, 인공 현실 시스템(10)은 사용자(110)에 의해 동작된 하나 이상의 핸드헬드 컨트롤러들(114)의 하나 이상의 검출된 포즈들에 기초하여 그래픽 요소들을 생성하고 이들을 사용자(110)에게 렌더링한다. 즉, 본 명세서에서 설명된 바와 같이, 인공 현실 시스템(10)은 컨트롤러(114)의 특정한 동작들, 구성들, 포지션들, 및/또는 지향방향들과 같은, 사용자(110)에 의해 동작된 컨트롤러(114)의 포즈들에 기초하여 하나 이상의 그래픽 요소들(126, 136)을 제공한다.
도 1a의 예에서, 인공 현실 시스템(10)은 머리 장착 디바이스(HMD)(112)를 포함한다. 도시된 바와 같이, HMD(112)는 전형적으로, 사용자(110)에 의해 착용되고 인공 현실 콘텐트(122)를 사용자(110)에게 제공하기 위한 전자 디스플레이 및 광학 어셈블리를 포함한다. 게다가, HMD(112)는 HMD(112)의 동작을 추적하기 위한 하나 이상의 동작 센서들(예컨대, 가속도계들)을 포함하고 주위의 물리적 환경의 이미지 데이터를 캡쳐하기 위한 하나 이상의 이미지 캡쳐 디바이스들(138) 예컨대, 카메라들, 적외선(IR) 검출기들, 도플러 레이더, 라인 스캐너들 등을 포함할 수 있다.
일부 예시적인 구현들에서, HMD(112)는 독립형 모바일 인공 현실 시스템으로서 동작한다. 다른 구현들에서, 인공 현실 시스템(10)은 HMD(112)에 더하여, 또는 그 대신에 콘솔(106) 및/또는 하나 이상의 외부 센서들(90)을 선택적으로 포함할 수 있다. 도 1a에 도시된 예에서, 콘솔(106)은 게이밍 콘솔, 워크스테이션, 데스크탑 컴퓨터, 또는 랩탑과 같은 단일 컴퓨팅 디바이스로서 도시된다. 다른 예들에서, 콘솔(106)은 분산 컴퓨팅 네트워크, 데이터 센터, 또는 클라우드 컴퓨팅 시스템과 같은 복수의 컴퓨팅 디바이스들에 걸쳐 분산될 수 있다. 콘솔(106), HMD(112), 및 센서들(90)은 이 예에서 도시된 바와 같이, 와이파이, 메시 네트워크 또는 단거리 무선 통신 매체와 같은 유선 또는 무선 네트워크일 수 있는 네트워크(104)를 통해 통신가능하게 결합될 수 있다.
일반적으로, 인공 현실 시스템(10)은 사용자(110)에게 디스플레이하기 위해 인공 현실 콘텐트(122)를 렌더링하도록 실세계의 3D 물리적 환경으로부터 캡쳐된 정보를 사용한다. 도 1a의 예에서, 사용자(110)는 HMD(112) 및/또는 콘솔(106)에서 실행되는 인공 현실 애플리케이션에 의해 구성되고 렌더링된 인공 현실 콘텐트(122)를 뷰잉한다. 하나의 예로서, 인공 현실 콘텐트(122)는 사용자(110)가 하나 이상의 가상 객체들(128A, 128B)를 갖는 아바타(120)로서 렌더링되는 소비자 게이밍 애플리케이션일 수 있다. 일부 예들에서, 인공 현실 콘텐트(122)는 실세계 이미지와 가상 객체들 예컨대, 혼합 현실 및/또는 증강 현실의 혼합을 포함할 수 있다. 다른 예들에서, 인공 현실 콘텐트(122)는 예컨대, 화상 회의 애플리케이션, 내비게이션 애플리케이션, 교육 애플리케이션, 트레이닝 또는 시뮬레이션 애플리케이션들, 또는 인공 현실을 구현하는 다른 유형들의 애플리케이션들일 수 있다.
동작 동안, 인공 현실 애플리케이션은 기준 프레임, 전형적으로 HMD(112)의 뷰잉 관점에 대한 포즈 정보를 추적하고 계산함으로써 사용자(110)에게 디스플레이하기 위한 인공 현실 콘텐트(122)를 구성한다. HMD(112)를 기준 프레임으로서 사용하고, HMD(112)의 현재 추정된 포즈 및 하나 이상의 컨트롤러들(114)에 대한 현재 추정된 포즈들에 의해 결정된 바와 같이 현재 시야(130)에 기초하여, 인공 현실 애플리케이션은 일부 예들에서, 사용자(110)의 실세계의 3D 물리적 환경에 적어도 부분적으로 오버레이(overlay)될 수 있는 3D 인공 현실 콘텐트를 렌더링한다. 이 프로세스 동안, 인공 현실 애플리케이션은 이동 정보 및 사용자 명령어들과 같은, HMD(112) 및 하나 이상의 컨트롤러들(114)로부터 수신된 감지된 데이터, 및 일부 예들에서, 사용자(110)에 의한 동작 및/또는 하나 이상의 컨트롤러들(114)의 동작과 같은, 실세계의 물리적 환경 내의 3D 정보를 캡쳐하기 위해, 외부 카메라들과 같은 임의의 외부 센서들(90)로부터의 데이터를 사용한다. 감지된 데이터에 기초하여, 인공 현실 애플리케이션은 HMD(112)의 기준 프레임에 대한 현재 포즈, 하나 이상의 컨트롤러들(114)에 대한 현재 포즈를 결정하고, HMD(112) 및 컨트롤러들(114)의 현재 포즈들에 따라, 인공 현실 콘텐트(122)를 렌더링한다. 본 발명의 기술들에 따르면, 인공 현실 시스템(10)은 하나 이상의 컨트롤러들(114)이 센서들 또는 카메라들의 시야 내에서 추적가능할 때 인공 현실 시스템(10)의 센서들 또는 카메라들로부터의 데이터에 기초하여 하나 이상의 컨트롤러들(114)에 대한 포즈를 결정할 수 있고, 인공 현실 시스템(10)은 하나 이상의 컨트롤러들(114)이 센서들 또는 카메라들의 시야 내에서 추적가능하지 않을 때 동작 모델들 및 이용가능한 컨트롤러 측정 데이터를 사용할 수 있다.
더 구체적으로, 본 명세서에서 또한 설명된 바와 같이, HMD(112)의 이미지 캡쳐 디바이스(138)는 이미지 캡쳐 디바이스들(138)의 시야(130) 내에 있는 실세계의 물리적 환경에서 객체들을 나타내는 이미지 데이터를 캡쳐한다. 이들 객체들은 하나 이상의 컨트롤러들(114)을 포함할 수 있다. 시야(130)는 전형적으로, HMD(112)의 뷰잉 관점과 대응한다. 도 1a에 도시된 예와 같은 일부 예들에서, 인공 현실 애플리케이션은 시야(130) 내에 있는 사용자(110)의 손(132)의 부분들을 인공 현실 콘텐트(122) 내의 가상 손(136)으로서 렌더링한다. 가상 손(136)은 손(132)에 쥐어진 컨트롤러(114)의 포즈에 따라 렌더링될 수 있다. 게다가, 인공 현실 애플리케이션은 하나 이상의 컨트롤러들(114)의 포즈에 기초하여 가상 검(126)과 같은 가상 객체들을 렌더링할 수 있다.
그에 따라, 본 발명의 기술들은 인공 현실 시스템에 의해 콘텐트를 렌더링하고 디스플레이하는 컴퓨터 관련 분야에 특정 기술 개선들을 제공한다. 예를 들면, 본 명세서에서 설명된 바와 같이 인공 현실 시스템들은 컨트롤러(114)가 인공 현실 시스템(10)의 센서들 및/또는 카메라들의 시야 내에서 추적가능한지의 여부에 관계 없이, 컨트롤러(114)에 대해 결정된 포즈들에 기초하여 인공 현실 콘텐트에 오버레이된 그래픽 요소들을 생성하고 렌더링함으로써 인공 현실 애플리케이션의 사용자(110)와 같은 사용자에게 고 품질의 인공 현실 경험을 제공할 수 있다.
도 1b는 본 발명의 기술들에 따라 인공 현실 시스템(20)의 이미지 캡쳐 디바이스들의 시야 내에서 추적가능하지 않은 하나 이상의 핸드헬드 컨트롤러들에 대한 포즈 추적을 수행하는 또 다른 예시적인 인공 현실 시스템(20)을 묘사하는 예시이다. 도 1a의 인공 현실 시스템(10)과 유사하게, 일부 예들에서, 도 1b의 인공 현실 시스템(20)은 하나 이상의 컨트롤러들(114)에 대해 결정된 포즈들에 기초하여 인공 현실 환경 내에서 사용자 상호작용 및 조작을 위한 그래픽 요소들을 제공하고 제어할 수 있다.
도 1b의 예에서, 인공 현실 시스템(20)은 외부 카메라들(102A 및 102B)(집합적으로, "외부 카메라들(102)"), HMD들(112A 내지 112C)(집합적으로, "HMD들(112)"), 컨트롤러들(114A, 114B 및 114C)(집합적으로, "컨트롤러들(114)"), 콘솔(106), 및 센서들(90)을 포함한다. 도 1b에 도시된 바와 같이, 인공 현실 시스템(20)은 HMD들(112) 및/또는 콘솔(106)에서 실행되는 인공 현실 애플리케이션이 각각의 사용자에 대한 대응하는 기준 프레임의 현재 뷰잉 관점에 기초하여 사용자들(110A 내지 110C)(집합적으로, "사용자들(110)")의 각각에게 인공 현실 콘텐트를 제공하는 다중 사용자 환경을 표현한다. 즉, 이 예에서, 인공 현실 애플리케이션은 HMD들(112)의 각각 및 각각의 컨트롤러들(114)에 대한 기준 프레임에 대한 포즈 정보를 추적하고 계산함으로써 인공 콘텐트를 구성한다. 인공 현실 시스템(20)은 사용자들(110)에 의한 동작 및/또는 HMD들(112)의 대응하는 기준 프레임 내에서 컨트롤러들(114)에 대한 업데이트된 포즈 정보를 계산하는데 사용하기 위한 컨트롤러들(114)에 대한 추적 정보와 같은, 실세계 환경 내의 3D 정보를 캡쳐하기 위해 카메라들(102), HMD들(112), 및 컨트롤러들(114)로부터 수신된 데이터를 사용한다. 하나의 예로서, 인공 현실 애플리케이션은 HMD(112C)에 대해 결정된 현재 뷰잉 관점에 기초하여, 가상 객체들(128A 내지 128C)(집합적으로, "가상 객체들(128)")을 가지는 인공 현실 콘텐트(122)를 실세계 객체들(108A 내지 108C)(집합적으로, "실세계 객체들(108)")에 공간적으로 오버레이된 것으로 렌더링할 수 있다. 게다가, HMD(112C)의 관점으로부터, 인공 현실 시스템(20)은 사용자들(110A, 110B) 각각에 대한 추정된 포지션들에 기초하여 아바타들(120A, 120B)을 렌더링한다. 게다가, 인공 현실 시스템(20)은 인공 현실 시스템(20)에 의해 결정된 바와 같이 컨트롤러들(114)의 포즈들에 기초하여 그래픽 객체들을 렌더링할 수 있다.
HMD들(112)의 각각은 인공 현실 시스템(20) 내에서 동시에 동작한다. 도 1b의 예에서, 사용자들(110)의 각각은 인공 현실 애플리케이션에서 "플레이어" 또는 "참가자"일 수 있고, 사용자들(110) 중 임의의 사용자는 인공 현실 애플리케이션에서 "관람자" 또는 "관찰자"일 수 있다. HMD(112C)는 사용자(110C)의 손(132C)에 의해 쥐어진 컨트롤러(114C)를 추적하고, 손(132C)에 의해 쥐어진 컨트롤러(114C)가 시야(130) 내에 있을 때 인공 현실 콘텐트(122) 내의 가상 손(136)으로서 손(132C)을 렌더링함으로써 도 1a의 HMD(112)와 실질적으로 유사하게 동작할 수 있다. HMD(112C)는 또한, 컨트롤러(114C)가 시야(130)에 있을 때 컨트롤러(114C)의 결정된 포즈에 기초하여 검(126)과 같은 가상 객체들을 렌더링할 수 있다. 컨트롤러(114C)는 블루투스와 같은 근거리 무선 통신의 근거리 통신을 사용하여, 유선 통신 링크들을 사용하여, 또는 다른 유형들의 통신 링크들을 사용하여 HMD(112C)와 통신할 수 있다.
HMD(112A) 및 HMD(112B)는 또한, 도 1a의 HMD(112)와 실질적으로 유사하게 동작할 수 있다. HMD(112B)는 사용자(110B)에 의해 쥐어진 컨트롤러들(114A 및 144B)로부터 사용자 입력들을 수신할 수 있다.
도 1b에 도시된 바와 같이, HMD(112C)의 카메라(138)를 통해 캡쳐된 이미지 데이터에 더하여 또는 대안적으로, 외부 카메라들(102)로부터의 입력 데이터는 컨트롤러들(114)의 특정한 동작들, 구성들, 포지션들, 및/또는 지향방향들을 추적하고 검출하기 위해 사용될 수 있다.
도 2는 본 발명의 기술들에 따라 동작하도록 구성된 일 예시적인 HMD(112) 및 컨트롤러(114)를 묘사하는 예시이다. 도 2의 HMD(112)는 도 1a 및 도 1b의 HMD들(112) 중 임의의 것의 일례일 수 있다. HMD(112)는 본 명세서에서 설명된 기술들을 구현하도록 구성된 독립형 모바일 인공 현실 시스템으로서 동작할 수 있거나 도 1a, 도 1b의 인공 현실 시스템들(10, 20)과 같은 인공 현실 시스템의 일부일 수 있다.
이 예에서, HMD(112)는 HMD(112)를 사용자에게 고정하기 위한 밴드 및 전면 강체를 포함한다. 게다가, HMD(112)는 인공 현실 콘텐트를 사용자에게 제공하도록 구성된 내부 대면 전자 디스플레이(203)를 포함한다. 전자 디스플레이(203)는 액정 디스플레이들(LCD), 양자점 디스플레이, 도트 매트릭스 디스플레이들, 발광 다이오드(LED) 디스플레이들, 유기 발광 다이오드(OLED) 디스플레이들, 음극선관(CRT) 디스플레이들, 전자 잉크, 또는 흑백, 컬러, 또는 시각적 출력을 생성할 수 있는 임의의 다른 유형의 디스플레이와 같은 임의의 적합한 디스플레이 기술일 수 있다. 일부 예들에서, 전자 디스플레이는 사용자의 각각의 눈에 별개의 이미지들을 제공하기 위한 입체 디스플레이이다. 일부 예들에서, HMD(112)의 전면 강체에 대한 디스플레이(203)의 알려진 지향방향 및 포지션은 HMD(112) 및 사용자의 현재 뷰잉 관점에 따라 인공 현실 콘텐트를 렌더링하기 위해 HMD(112)의 포지션 및 지향방향을 추적할 때, 로컬 원점으로서 또한 언급된 기준 프레임으로서 사용된다. 기준 프레임은 또한, HMD(112)에 대한 컨트롤러(114)의 포지션 및 지향방향을 추적하는데 사용될 수 있다. 다른 예들에서, HMD(112)는 안경들 또는 고글들과 같은 다른 착용가능한 머리 장착 디스플레이들의 형태를 취할 수 있다.
도 2에 또한 도시된 바와 같이, 이 예에서, HMD(112)는 HMD(112)의 현재 가속도를 나타내는 데이터를 출력하는 하나 이상의 가속도계들(관성 측정 유닛들 또는 "IMU들"로서 또한 언급됨)과 같은 하나 이상의 동작 센서들(206), HMD(112)의 위치를 나타내는 데이터를 출력하는 GPS 센서들, 다양한 객체들로부터 HMD(112)의 거리들을 나타내는 데이터를 출력하는 레이더 또는 소나(sonar), 또는 물리적 환경 내의 HMD(112) 또는 다른 객체들의 위치 또는 지향방향의 표시들을 제공하는 다른 센서들을 더 포함한다. 게다가, HMD(112)는 물리적 환경을 나타내는 이미지 데이터를 출력하도록 구성된 비디오 카메라들, 정지 카메라들, IR 스캐너들, UV 스캐너들, 레이저 스캐너들, 도플러 레이더 스캐너들, 깊이 스캐너들, 등과 같은 통합된 이미지 캡쳐 디바이스들(138A 및 138B)(집합적으로, "이미지 캡쳐 디바이스들(138)")을 포함할 수 있다. 일부 양태들에서, 이미지 캡쳐 디바이스들(138)은 전자기 스펙트럼(예컨대, IR 광)의 가시 스펙트럼 및 비가시 스펙트럼으로부터 이미지 데이터를 캡쳐할 수 있다. 이미지 캡쳐 디바이스들(138)은 가시 스펙트럼으로부터 이미지 데이터를 캡쳐하는 하나 이상의 이미지 캡쳐 디바이스들 및 비가시 스펙트럼으로부터 이미지 데이터를 캡쳐하는 하나 이상의 별개의 이미지 캡쳐 디바이스들을 포함할 수 있거나, 이들은 동일한 하나 이상의 이미지 캡쳐 디바이스들에서 조합될 수 있다. 더 구체적으로, 이미지 캡쳐 디바이스들(138)은 전형적으로, HMD(112)의 뷰잉 관점과 대응하는 이미지 캡쳐 디바이스들(138)의 시야(130A, 130B) 내에 있는 물리적 환경에서 객체들을 나타내는 이미지 데이터를 캡쳐한다. HMD(112)는 내부 제어 유닛(210)을 포함하고, 내부 제어 유닛은 전력원 및 하나 이상의 프로세서들, 메모리, 및 감지된 데이터를 프로세싱하고 인공 현실 콘텐트를 디스플레이(203)에 제공하도록 프로그래밍가능한 동작들을 실행하기 위한 동작 환경을 제공하는 하드웨어를 가지는 하나 이상의 인쇄 회로 기판들을 포함할 수 있다.
컨트롤러(114)는 인공 현실 시스템(10, 20)과 상호작용하는데 사용하기 위한 핸드헬드 컨트롤러일 수 있다. 컨트롤러(114)는 가시 또는 비가시 스펙트럼의 광을 방출하는 하나 이상의 방출기들(208)을 포함할 수 있다. 일부 예시적인 구현들에서, 컨트롤러(114)는 10개 이상의 방출기들(208)을 포함할 수 있다. 일부 양태들에서, 방출기들(208)은 IR 방출기들일 수 있다. 방출기들(208)은 컨트롤러(114)의 포즈를 결정하기 위해 인공 현실 시스템(10, 20)에 의해 사용될 수 있는 패턴("성상도"로서 또한 언급됨)으로 배열될 수 있다. 컨트롤러(114)는 인공 현실 시스템(10, 20)에 의해 사용하기 위한 입력을 제공할 수 있는 버튼들, 다이얼들 등과 같은 사용자 인터페이스 피쳐들을 포함할 수 있다.
하나의 예에서, 본 명세서에서 설명된 기술들에 따르면, 제어 유닛(210)은 감지된 이미지 데이터에 기초하여, 컨트롤러(114)에 대한 포즈를 결정하도록 구성된다. 이미지 캡쳐 디바이스들(138)의 시야 내에 있을 때, 인공 현실 시스템은 이미지 데이터 내에서 컨트롤러(14)의 방출기들(208)의 패턴을 검출하고 패턴을 사용하여 컨트롤러(114)의 포즈를 결정할 수 있다. 컨트롤러(114)가 이미지 캡쳐 디바이스들(138)의 시야 내에서 추적가능하지 않거나 시야들(130A, 130B) 내에서 가려질 때, 인공 현실 시스템은 하기에서 또한 설명된 바와 같이, 컨트롤러(114)의 포즈를 결정하기 위해 특정한 경우들에 특정한 동작 모델들과 함께 컨트롤러(114)로부터 얻어진 측정치들을 사용할 수 있다. 예를 들면, 컨트롤러(114)의 3개 미만의 방출기들이 이미지 데이터에서 검출가능한 경우 컨트롤러(114)는 이미지 데이터 내에서 추적가능하지 않은 것으로 결정될 수 있다. 제어 유닛(210)은 컨트롤러(114)의 추정된 포즈의 결정에 기초하여 가상 객체들 및 다른 인공 현실 콘텐트를 렌더링할 수 있다.
도 3은 핸드헬드 컨트롤러에 대한 포즈 추적이 도 1a, 도 1b의 인공 현실 시스템(10, 20)의 일 예시적인 사례에 의해 수행되는 일례를 보여주는 블록도이다. 도 3의 예에서, HMD(112)는 HMD(112) 및/또는 컨트롤러들(114)로부터 수신된 동작 데이터 및 이미지 데이터와 같은 감지된 데이터에 기초하여 본 명세서에서 설명된 기술들에 따라 HMD(112) 및 컨트롤러들(114)에 대한 포즈 추적 및 렌더링을 수행한다.
이 예에서, HMD(112)는 하나 이상의 프로세서들(302) 및 메모리(304)를 포함하며, 이들은 일부 예들에서 예를 들면, 내장형 실시간 멀티태스킹 운영 체제일 수 있는 운영 체제(305), 또는 다른 유형의 운영 체제를 실행하기 위한 컴퓨터 플랫폼을 제공한다. 결과적으로, 운영 체제(305)는 하나 이상의 소프트웨어 구성요소들(317)을 실행하기 위한 멀티태스킹 동작 환경을 제공한다. 프로세서들(302)은 유사한 I/O 인터페이스들(319) 및 키보드, 게임 컨트롤러들, 디스플레이 디바이스들, 이미지 캡쳐 디바이스들, 다른 HMD들, 등과 같은 다른 디바이스들을 통해 컨트롤러(114)와 통신하기 위한 I/O 인터페이스들을 제공하는 하나 이상의 I/O 인터페이스들(315)에 결합된다. 게다가, 하나 이상의 I/O 인터페이스들(315, 319)은 네트워크(104)와 같은 네트워크와 통신하기 위한 하나 이상의 유선 또는 무선 네트워크 인터페이스 컨트롤러들(NICs)을 포함할 수 있다. 부가적으로, 프로세서(들)(302)는 전자 디스플레이(203), 동작 센서들(206), 및 이미지 캡쳐 디바이스들(138)에 결합된다. 일부 예들에서, 프로세서들(302) 및 메모리(304)는 별개의 이산 구성요소들일 수 있다. 다른 예들에서, 메모리(304)는 단일 집적 회로 내에서 프로세서들(302)과 함께 배치된 온칩 메모리일 수 있다.
HMD(112)의 소프트웨어 애플리케이션들(317)은 전체 인공 현실 애플리케이션을 제공하도록 동작한다. 이 예에서, 소프트웨어 애플리케이션들(317)은 애플리케이션 엔진(340), 렌더링 엔진(322), 및 포즈 추적기(326)를 포함한다.
일반적으로, 애플리케이션 엔진(340)은 인공 현실 애플리케이션 예컨대, 원격회의 애플리케이션, 게이밍 애플리케이션, 내비게이션 애플리케이션, 교육 애플리케이션, 트레이닝 또는 시뮬레이션 애플리케이션, 등을 제공하고 제시하는 기능을 포함한다. 애플리케이션 엔진(340)은 예를 들면, HMD(112)에서 인공 현실 애플리케이션을 구현하기 위한 하나 이상의 소프트웨어 패키지들, 소프트웨어 라이브러리들, 하드웨어 드라이버들, 및/또는 애플리케이션 프로그래밍 인터페이스들(APIs)을 포함할 수 있다. 애플리케이션 엔진(340)에 의한 제어에 응답하여, 렌더링 엔진(322)은 HMD(112)의 애플리케이션 엔진(340)에 의해 사용자에게 디스플레이하기 위한 3D 인공 현실 콘텐트를 생성한다.
애플리케이션 엔진(340) 및 렌더링 엔진(322)은 포즈 추적기(326)에 의해 결정된 바와 같이, 기준 프레임, 전형적으로 HMD(112)의 뷰잉 관점 내에서 컨트롤러(114) 및 HMD(112)에 대한 현재 포즈 정보에 따라 사용자(110)에게 디스플레이하기 위한 인공 콘텐트를 구성한다. 현재 뷰잉 관점에 기초하여, 렌더링 엔진(322)은 일부 경우들에서, 사용자(110)의 실세계 3D 환경에 적어도 부분적으로 오버레이될 수 있는 3D 인공 현실 콘텐트를 구성한다. 이 프로세스 동안, 포즈 추적기(326)는 사용자(110)에 의한 동작, 컨트롤러(114)의 포지션 및 위치, 및/또는 사용자(110)에 대한 특징 추적 정보와 같은, 실세계 환경 내의 3D 정보를 캡쳐하기 위해 이동 정보 및 사용자 명령어들과 같은, HMD(112)로부터 수신된 감지된 데이터 및 컨트롤러(114)로부터 수신된 컨트롤러 측정 데이터, 및 일부 예들에서 외부 카메라들과 같은 임의의 외부 센서들(90)(도 1a, 도 1b)로부터의 데이터에 따라 동작한다. 감지된 데이터에 기초하여, 포즈 추적기(326)는 HMD(112)의 기준 프레임 내에서 HMD(112) 및 컨트롤러(114)에 대한 현재 포즈를 결정하고 현재 포즈들에 따라, 사용자(110)에게 디스플레이하기 위한 인공 현실 콘텐트를 구성한다.
포즈 추적기(326)는 FOV 추적기(342) 및 비 FOV 추적기(344)를 포함한다. FOV 추적기(342)는 컨트롤러(114)가 이미지 캡쳐 디바이스들(138)의 시야로 추적가능할 때 컨트롤러(114)에 대한 추정된 포즈를 계산하기 위해 사용될 수 있는 이미지 기반 컨트롤러 상태 데이터를 결정하도록 이미지 캡쳐 디바이스들(138)을 통해 얻어진 이미지 데이터 및 컨트롤러(114) 측정 데이터에 따라 동작한다. 컨트롤러(114)는 컨트롤러(114)가 시야 내에 있고, 다른 객체들에 의해 가려지지 않으며, 정지되지 않을 때 시야 내에서 추적가능한 것으로 간주될 수 있다.
비 FOV 추적기(342)는 컨트롤러(114)가 이미지 캡쳐 디바이스들(138)의 시야 내에서 추적가능하지 않을 때 컨트롤러(114)에 대한 포즈를 결정하기 위해 컨트롤러(114) 및 HMD(112)로부터 얻어진 측정치들 및 컨트롤러(114) 및/또는 HMD(112) 포지셔닝의 특정한 경우들에 대한 활성화 조건들을 충족하는 측정치들 및 다른 이용가능한 데이터에 따라 동작한다.
포즈 추적기(326), FOV 추적기(342) 및 비 FOV 추적기(344)의 동작에 대한 또 다른 상세들은 도 5 내지 도 11과 관련하여 하기에 제공된다.
컨트롤러(114)는 인공 현실 시스템(10, 20)과의 사용자 상호작용을 제공하는 핸드헬드 컨트롤러일 수 있다. 일부 양태들에서, 컨트롤러(114)는 방출기들(208), 동작 센서들(306), 및 I/O 인터페이스(319)를 포함한다. 방출기들(208)은 가시 또는 비가시 스펙트럼 내의 광을 방출하고/거나 반사할 수 있다. 예를 들면, 방출기들(208)은 IR 스펙트럼의 광을 방출할 수 있다.
동작 센서들(206)은 컨트롤러(114)의 현재 가속도를 나타내는 데이터를 출력하는 하나 이상의 가속도계들(관성 측정 유닛들 또는 "IMU들"로서 또한 언급됨), 컨트롤러(114)의 위치를 나타내는 데이터를 출력하는 GPS 센서들, 다양한 객체들로부터 컨트롤러(114)의 거리들을 나타내는 데이터를 출력하는 레이더 또는 소나, 또는 물리적 환경 내의 컨트롤러(114) 또는 다른 객체들의 위치 또는 지향방향의 표시들을 제공하는 다른 센서들과 같은 센서들을 포함할 수 있다.
도 4는 핸드헬드 컨트롤러에 대한 포즈 추적이 도 1a, 도 1b의 인공 현실 시스템(10, 20)의 콘솔(106) 및 HMD(112)의 예시적인 사례들에 의해 수행되는 예시적인 구현들을 보여주는 블록도이다. 도 4의 예에서, 콘솔(106)은 HMD(112) 및/또는 컨트롤러(114)로부터 수신된 동작 데이터와 같은 감지된 데이터, 및 HMD(112) 및/또는 외부 센서들로부터 수신된 이미지 데이터에 기초하여 본 명세서에서 설명된 기술들에 따라 HMD(112)에 대한 포즈 추적 및 렌더링을 수행한다.
이 예에서, 도 3과 유사하게, HMD(112)는 하나 이상의 프로세서들(302) 및 메모리(304)를 포함하며, 이들은 일부 예들에서 예를 들면, 내장형 실시간 멀티태스킹 운영 체제일 수 있는 운영 체제(305), 또는 다른 유형의 운영 체제를 실행하기 위한 컴퓨터 플랫폼을 제공한다. 결과적으로, 운영 체제(305)는 하나 이상의 소프트웨어 구성요소들(317)을 실행하기 위한 멀티태스킹 동작 환경을 제공한다. 게다가, 프로세서(들)(302)는 전자 디스플레이(203), 동작 센서들(206), 및 이미지 캡쳐 디바이스들(138)에 결합된다.
일반적으로, 콘솔(106)은 카메라들(102)(도 1b) 및/또는 HMD(112)로부터 수신된 이미지 및 추적 정보, 및 HMD(112) 및 컨트롤러(114)에 대한 포즈 추적, 및 콘텐트 렌더링을 수행하기 위해 컨트롤러(114)로부터의 측정 데이터를 프로세싱하는 컴퓨팅 디바이스이다. 일부 예들에서, 콘솔(106)은 워크스테이션, 데스크탑 컴퓨터, 랩탑, 또는 게이밍 시스템과 같은 단일 컴퓨팅 디바이스이다. 일부 예들에서, 프로세서들(412) 및/또는 메모리(414)와 같은 콘솔(106)의 적어도 일부는 클라우드 컴퓨팅 시스템, 데이터 센터에 걸쳐, 또는 인터넷, 또 다른 공공 또는 사설 통신 네트워크 예를 들면, 광대역, 셀룰러, 와이파이와 같은 네트워크, 및/또는 컴퓨팅 시스템들, 서버들, 및 컴퓨팅 디바이스들 사이에 데이터를 송신하기 위한 다른 유형들의 통신 네트워크들에 걸쳐 분산될 수 있다.
도 4의 예에서, 콘솔(106)은 하나 이상의 프로세서들(412) 및 메모리(414)를 포함하며, 이들은 일부 예들에서 예를 들면, 내장형 실시간 멀티태스킹 운영 체제일 수 있는 운영 체제(416), 또는 다른 유형의 운영 체제를 실행하기 위한 컴퓨터 플랫폼을 제공한다. 결과적으로, 운영 체제(416)는 하나 이상의 소프트웨어 구성요소들(417)을 실행하기 위한 멀티태스킹 동작 환경을 제공한다. 프로세서들(412)은 키보드, 게임 컨트롤러들, 디스플레이 디바이스들, 이미지 캡쳐 디바이스들, HMD들, 등과 같은, 외부 디바이스들과 통신하기 위한 I/O 인터페이스들을 제공하는 하나 이상의 I/O 인터페이스들(415)에 결합된다. 게다가, 하나 이상의 I/O 인터페이스들(415)은 네트워크(104)와 같은 네트워크와 통신하기 위한 하나 이상의 유선 또는 무선 네트워크 인터페이스 컨트롤러들(NICs)을 포함할 수 있다. 프로세서들(302, 412)의 각각은 멀티 코어 프로세서, 컨트롤러, 디지털 신호 프로세서(DSP), 주문형 반도체(ASIC), 필드 프로그래밍가능한 게이트 어레이(FPGA), 또는 등가의 별개의 또는 집적된 논리 회로망 중 임의의 하나 이상을 포함할 수 있다. 메모리(304, 414)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그래밍가능한 판독 전용 메모리(PROM), 소거가능한 프로그래밍가능한 판독 전용 메모리(EPROM), 전자적으로 소거가능한 프로그래밍가능한 판독 전용 메모리(EEPROM), 및 플래시 메모리와 같은 데이터 및 실행가능한 소프트웨어 지시들을 저장하기 위한 임의의 형태의 메모리를 포함할 수 있다.
콘솔(106)의 소프트웨어 애플리케이션들(417)은 전체 인공 현실 애플리케이션을 제공하도록 동작한다. 이 예에서, 소프트웨어 애플리케이션들(417)은 애플리케이션 엔진(420), 렌더링 엔진(422), 및 포즈 추적기(426)를 포함한다.
일반적으로, 애플리케이션 엔진(420)은 인공 현실 애플리케이션 예컨대, 원격회의 애플리케이션, 게이밍 애플리케이션, 내비게이션 애플리케이션, 교육 애플리케이션, 트레이닝 또는 시뮬레이션 애플리케이션, 등을 제공하고 제시하는 기능을 포함한다. 애플리케이션 엔진(420)은 예를 들면, 콘솔(106)에서 인공 현실 애플리케이션을 구현하기 위한 하나 이상의 소프트웨어 패키지들, 소프트웨어 라이브러리들, 하드웨어 드라이버들, 및/또는 애플리케이션 프로그래밍 인터페이스들(APIs)을 포함할 수 있다. 애플리케이션 엔진(420)에 의한 제어에 응답하여, 렌더링 엔진(422)은 HMD(112)의 애플리케이션 엔진(340)에 의해 사용자에게 디스플레이하기 위한 3D 인공 현실 콘텐트를 생성한다.
애플리케이션 엔진(420) 및 렌더링 엔진(422)은 포즈 추적기(426)에 의해 결정된 바와 같이, 기준 프레임, 전형적으로 HMD(112)의 뷰잉 관점 내에서 컨트롤러(114) 및 HMD(112)에 대한 현재 포즈 정보에 따라 사용자(110)에게 디스플레이하기 위한 인공 콘텐트를 구성한다. 현재 뷰잉 관점에 기초하여, 렌더링 엔진(422)은 일부 경우들에서, 사용자(110)의 실세계 3D 환경에 적어도 부분적으로 오버레이될 수 있는 3D 인공 현실 콘텐트를 구성한다. 이 프로세스 동안, 포즈 추적기(426)는 사용자(110)에 의한 동작, 컨트롤러(114)의 동작, 및/또는 사용자(110)에 대한 특징 추적 정보와 같은, 실세계 환경 내의 3D 정보를 캡쳐하기 위해 HMD(112)의 센서들로부터의 이미지 데이터와 같은, HMD(112) 및 컨트롤러(114)로부터 수신된 감지된 데이터, 컨트롤러(114)로부터의 동작 센서 데이터, 및 일부 예들에서 외부 카메라들과 같은 임의의 외부 센서들(90)(도 1a, 도 1b)로부터의 데이터에 따라 동작한다. 감지된 데이터에 기초하여, 포즈 추적기(426)는 HMD(112)의 기준 프레임 내에서 HMD(112) 및 컨트롤러(114)에 대한 현재 포즈를 결정하고 현재 포즈들에 따라, 사용자(110)에게 디스플레이하기 위해 하나 이상의 I/O 인터페이스들(315, 415)를 통해 HMD(112)에 전달하기 위한 인공 현실 콘텐트를 구성한다.
도 3과 관련하여 상기 설명된 포즈 추적기(326)와 유사하게, 포즈 추적기(426)는 FOV 추적기(442) 및 비 FOV 추적기(444)를 포함한다. FOV 추적기(442)는 컨트롤러(114)가 이미지 캡쳐 디바이스들(138, 102)의 시야로 추적가능할 때 컨트롤러(114)에 대한 이미지 기반 컨트롤러 상태 데이터를 결정하기 위해 이미지 캡쳐 디바이스들(138) 또는 외부 카메라들(102)을 통해 얻어진 이미지 데이터에 따라 동작한다. 컨트롤러(114)는 컨트롤러(114)가 시야 내에 있고, 다른 객체들에 의해 가려지지 않으며, 정지되지 않을 때 시야 내에서 추적가능한 것으로 간주될 수 있다.
비 FOV 추적기(442)는 컨트롤러(114)가 이미지 캡쳐 디바이스들(138, 102)의 시야 내에서 추적가능하지 않을 때 컨트롤러(114)에 대한 모델 기반 컨트롤러 상태 데이터를 결정하기 위해 컨트롤러(114) 및 HMD(112)로부터 얻어진 측정치들 및 컨트롤러(114) 및/또는 HMD(112) 포지셔닝의 특정한 경우들에 대한 활성화 조건들을 충족하는 측정치들 및 다른 이용가능한 데이터에 따라 동작한다.
포즈 추적기(426), FOV 추적기(442) 및 비 FOV 추적기(444)의 동작에 대한 또 다른 상세들은 도 5 내지 도 11과 관련하여 하기에 제공된다.
도 5는 본 발명의 양태들에 따른 일 예시적인 비 FOV 추적기(344)(및 444)의 구성요소들을 도시하는 블록도이다. 일부 양태들에서, 비 FOV 추적기(344)는 컨트롤러(114)가 카메라(138)의 시야 내에서 추적가능하지 않고 이용가능한 데이터가 컨트롤러(114)의 상태가 코너 케이스들을 추적하는 것과 연관된 하나 이상의 활성화 조건들을 충족할 수 있음을 나타낸다고 결정하는 것에 응답하여 비 FOV 추적기(344)에 의해 수행된 동작들에 대응하는 복수의 거동들(502A 내지 N)(일반적으로 거동(502)으로서 언급됨)을 포함한다. 이러한 코너 케이스들의 예들은 컨트롤러(114)가 정지됨; 컨트롤러의 포지션이 신뢰가능하지 않고, 시야를 벗어나 있으며 HMD에 근접하는 것; 시야에 있지만 또 다른 객체에 의해 가려져 다른 객체에 부착되어 있는 것; 시야에 있지만 또 다른 객체에 가려져 다른 객체에 부착되어 있지 않은 것을 포함한다. 일부 양태들에서, 가려지는 객체는 제2 핸드헬드 컨트롤러일 수 있다. 다른 코너 케이스들이 가능하고 본 발명의 주제의 범위 내에 있다.
비 FOV 추적기(344)는 컨트롤러(114)로부터 얻어진 컨트롤러 측정치들(510)을 입력으로서 수신할 수 있다. 컨트롤러 측정치들(510)은 컨트롤러(114)의 동작 센서들(206)로부터의 값들을 포함할 수 있다. 예를 들면, 컨트롤러 측정치들은 선형 및 각 가속도, 선형 및 각속도, 및 컨트롤러(114)로부터 수신되거나 컨트롤러(114)로부터 수신된 데이터로부터 유도된 다른 동작 관련 데이터를 포함할 수 있다. 입력 컨트롤러 측정치들(510)은 또한, 레이더 추적 또는 근거리 통신 거리 추적을 사용하여 얻어진 거리 측정치들과 같은, HMD(112)에 의해 생성된 비 이미지 기반 컨트롤러 측정치들을 포함할 수 있다.
부가적으로, 비 FOV 추적기(344)는 HMD(112)로부터 얻어진 HMD 상태 데이터(512)를 수신할 수 있다. HMD 상태 데이터는 HMD(112)의 현재 포즈를 포함할 수 있고, HMD(112)와 컨트롤러(114) 사이의 위치 관계를 결정하기 위해 사용될 수 있다.
각각의 거동(502)은 거동(502)과 연관된 하나 이상의 활성화 조건들 및 하나 이상의 비활성화 조건들을 가질 수 있다. 활성화 조건들은 거동과 연관된 추적 코너 케이스가 현재 존재하는지를 결정하기 위해 컨트롤러 측정치들(510) 및 HMD 상태(512)에 적용될 수 있는 규칙들, 논리, 휴리스틱(heuristic)들, 및/또는 파라미터 값들을 포함할 수 있다. 활성화 조건들이 만족되면, 거동(502)에 대한 만족된 활성화 조건들과 연관된 동작 모델(506) 및 활성화 조건들과 연관된 동작 모델(506)이 활성화된다.
반대로, 거동(502)과 연관된 하나 이상의 비활성화 조건들은 거동과 연관된 코너 케이스가 더 이상 존재하지 않는지를 결정하기 위해 컨트롤러 측정치들(510) 및 HMD 상태(512)에 적용될 수 있는 규칙들, 논리, 휴리스틱들 및/또는 파라미터 값들을 포함할 수 있다. 거동(502)과 연관된 비활성화 조건들이 만족되면, 거동(502) 및 거동(502)과 연관된 동작 모델(506)이 비활성화된다.
일부 양태들에서, 활성화 조건들이 만족되는 것에 응답하여 일단 거동 및 그것의 연관된 동작 모델들이 활성화되면, 거동 및 연관된 동작 모델은 거동 및 연관된 동작 모델에 대한 비활성화 조건들이 만족될 때까지 활성화된 상태로 유지된다. 다른 양태들에서, 비활성화 조건들은 선택적일 수 있고, 활성화 조건들이 만족된 상태를 유지하는 한 거동 및 그것의 연관된 동작 모델이 활성화되고, 활성화 조건들이 더 이상 만족되지 않을 때 비활성화된다.
게다가, 비 FOV 추적기(344)는 FOV 추적기(342)로부터 이미지 기반 컨트롤러 상태 데이터(514)를 수신할 수 있다. 이미지 기반 컨트롤러 상태 데이터(514)는 HMD 상태 데이터(512), 컨트롤러 측정 데이터(510), 및 이미지 캡쳐 디바이스들(138)로부터의 이미지 데이터(518)를 사용하여 컨트롤러(114)에 대한 포즈를 결정하는 것을 시도하는 결과로서 FOV 추적기(342)에 의해 생성된 출력 데이터일 수 있다.
각각의 거동(502)은 연관된 동작 모델(506)을 가질 수 있다. 거동에 대한 동작 모델(506)은 컨트롤러(114)에 대한 모델 기반 컨트롤러 상태 데이터(516A 내지 N)(집합적으로, "모델 기반 컨트롤러 상태 데이터(516)")가 어떻게 결정되는지를 정의한다. 예를 들면, 거동(502)에 대한 동작 모델(506)은 모델 기반 컨트롤러 상태 데이터(516)를 결정하기 위해 컨트롤러 측정 데이터(510), HMD 상태 데이터(512), 및 컨트롤러 상태 데이터(514)를 활용할 수 있다.
각각의 거동(502)은 연관된 유한 상태 기계(FSM)(504)를 가질 수 있다. 거동(502)과 연관된 FSM(504)은 상태 정보(활성화된, 비활성화된, 등), 하나의 상태로부터 다른 상태로의 전이들 및 거동과 연관된 다른 상태 정보를 추적할 수 있다. 거동에 대한 FSM(504)은 디스플레이 프레임들 사이의 상태 정보를 보존할 수 있고 모델 기반 컨트롤러 상태 데이터(516)를 결정하기 위해 거동(502)과 연관된 동작 모델(506)에 의해 사용될 수 있다.
일부 양태들에서, 거동들(502A 내지 N)은 우선순위와 연관된다. 거동들에 대한 우선순위는 다양한 방식들로 결정될 수 있다. 예를 들면, 우선순위는 코너 케이스의 발생 가능성, 코너 케이스가 발생할 경우 사용자 경험의 황폐화(devastation), 코너 케이스가 문제로서 보고된 횟수 등에 기초하여 결정될 수 있다.
일부 구현들에서, 거동들(502A 내지 N)은 포섭 아키텍처(subsumption architecture)로 구성될 수 있다. 포섭 아키텍처에서, 코너 케이스들에 대한 거동들(502A 내지 N)은 각각의 거동을 우선순위화하는 각각의 계층들로 구성된다. 도 5에 도시된 예에서, 최하위 계층인 거동(502N)은 가장 높은 우선순위 거동이다. 최상위 계층의 거동(502A)은 가장 낮은 우선순위 거동이다. 모델 기반 컨트롤러 상태 데이터(516)의 후보 버전들은 각각의 활성화된 거동과 연관된 동작 모델들(506)에 의해 결정될 수 있다. 더 높은(더 낮은 우선순위) 계층들의 동작 모델들(506)에 따라 결정된 후보 모델 기반 컨트롤러 상태 데이터(516)는 포섭 아키텍처에서 무시, 차단되거나 더 낮은(더 높은 우선순위) 계층 거동(502)에 의해 결정된 후보 모델 기반 컨트롤러 상태 데이터(516)로 교체될 수 있다.
일부 구현들에서, 활성화된 거동들(502)은 서로 동시에 평가될 수 있다. 각각의 활성화된 거동(502)은 그것의 연관된 동작 모델(506) 및 입력 컨트롤러 측정 데이터(510), HMD 상태 데이터(512), 및 이미지 기반 컨트롤러 상태 데이터(514)에 기초하여 모델 기반 컨트롤러 상태 데이터(516)의 후보 버전을 결정할 수 있다. 활성화된 거동들(502) 중 가장 높은 우선순위를 가지는 계층에서 동작 모델(506)에 의해 결정된 모델 기반 컨트롤러 상태 데이터(516)의 후보 버전은 비 FOV 추적기(344)에 의해 출력된 컨트롤러 상태 데이터(520)의 최종 버전으로서 사용될 수 있다.
어떠한 거동들도 활성화되지 않은 경우, 비 FOV 추적기(344)는 패스 스루(pass-through)로서 작용하고, FOV 추적기(342)에 의해 결정되고 입력으로서 비 FOV 추적기(344)에 제공된 이미지 기반 컨트롤러 상태 데이터(514)는 비 FOV 추적기(344)의 출력 컨트롤러 상태 데이터(520)로서 사용된다.
상기 내용으로부터 인식될 바와 같이, 컨트롤러 상태 데이터(520)는 가장 높은 우선순위 활성화된 거동과 연관된 동작 모델(506)에 기초하여 결정될 것이다. 어떠한 거동들도 활성화되지 않으면, 컨트롤러 상태 데이터(520)는 이미지 기반 컨트롤러 상태 데이터(514)에 기초할 것이다. 비 FOV 추적기(344)에 의해 출력된 컨트롤러 상태 데이터(520)는 컨트롤러(114)에 대한 컨트롤러 포즈를 결정하기 위해 포즈 추적기(326)에 의해 사용될 수 있다.
일부 경우들에서, 거동(502)에 대한 동작 모델(506)은 컨트롤러 측정 데이터(510), HMD 상태 데이터(512), 및 컨트롤러 상태 데이터(514)로부터 이용가능한 것 이외의 정보를 활용할 수 있다. 구성 데이터(522)는 이러한 데이터를 저장하고 제공할 수 있다. 예를 들면, 하기에서 설명된 바와 같이, 일부 동작 모델들은 모델 기반 컨트롤러 상태 데이터(516)에 대한 포지션 데이터를 결정하기 위해 머리에 대한 팔의 평균 길이 또는 몸통의 평균 포지션을 사용할 수 있다. 머리에 대한 팔의 평균 길이 또는 몸통의 평균 포지션은 동작 모델(506)에 의해 사용되기 위해 구성 데이터(516)에 저장될 수 있다.
도 6은 일부 경우들에서, 본 발명의 양태들에 따라 시야에서 추적가능하지 않은 핸드헬드 컨트롤러에 대한 컨트롤러 포즈를 결정하기 위한 방법의 예시적인 동작들을 도시하는 흐름도(600)이다. 흐름도(600)에서 설명된 예시적인 동작들은 주기적으로 또는 이벤트에 응답하여 수행될 수 있다. 예를 들면, 예시적인 동작들은 이벤트가 인공 현실 시스템으로 하여금 HMD(112)에서의 표시를 위해 디스플레이 프레임을 렌더링하게 하는 디스플레이 프레임 생성 이벤트에 대한 응답의 일부로서 수행될 수 있다.
FOV 추적기는 HMD(112)의 하나 이상의 이미지 캡쳐 디바이스들(138)로부터 이미지 데이터 및 컨트롤러(114)로부터 컨트롤러 측정 데이터를 수신할 수 있다(602). 부가적으로, 이미지 데이터는 HMD(112) 외부의 카메라들 또는 센서들에 의해 제공된 이미지 데이터를 포함할 수 있다. FOV 추적기는 이미지 데이터 및 컨트롤러 측정 데이터를 사용하여 이미지 기반 컨트롤러 상태 데이터를 결정할 수 있다(604).
FOV 추적기는 컨트롤러(114)가 이미지 데이터 내에서 추적가능한지를 결정할 수 있다(606). 일부 양태들에서, FOV 추적기는 컨트롤러(114)가 컨트롤러(114)의 적어도 3개의 방출기들(208)이 이미지 데이터로 검출가능하고 컨트롤러 측정 데이터가 컨트롤러가 정지 상태가 아님을 나타내는 경우 이미지 데이터 내에서 추적가능하다고 결정할 수 있다. 일부 양태들에서, FOV 추적기는 컨트롤러(114)가 이미지 데이터 내에서 추적가능한지를 결정하기 위해 센서 융합을 사용할 수 있다.
FOV 추적기가 컨트롤러(114)가 이미지 데이터 내에서 추적가능하다고 결정하면(606의 예(YES) 분기), 컨트롤러 포즈는 FOV 추적기에 의해 결정된 바와 같이 이미지 기반 컨트롤러 상태 데이터에 기초하여 결정될 수 있다(610). FOV 추적기가 컨트롤러(114)가 이미지 데이터 내에서 추적가능하지 않다고 결정하면(606의 아니오(NO) 분기), 비 FOV 추적기는 임의의 비 FOV 거동들이 활성화되었는지, 또는 비 FOV 활성화 조건들이 거동에 대해 만족되었는지를 결정한다(608). 비 FOV 추적기는 컨트롤러 측정 데이터, HMD 상태 데이터, 및/또는 이미지 기반 컨트롤러 상태 데이터에 기초하여 임의의 거동 활성화 조건들이 만족되었는지를 결정할 수 있다. 어떠한 활성화 조건들도 만족되지 않았고 어떠한 거동들도 현재 활성화되지 않은 경우(608의 아니오 분기), 컨트롤러 포즈는 FOV 추적기에 의해 결정된 바와 같이 이미지 기반 컨트롤러 상태 데이터에 기초하여 결정될 수 있다(610).
적어도 하나의 거동이 활성화되었거나 적어도 하나의 활성화 조건이 만족되면(608의 예 분기), 비 FOV 추적기는 활성화되는 각각의 거동과 연관된 동작 모델들을 평가함으로써 후보 모델 기반 컨트롤러 상태 데이터를 결정할 수 있다(612). 동작 모델들은 거동과 연관된 후보 모델 기반 컨트롤러 상태 데이터를 결정하기 위해 필요에 따라 입력 컨트롤러 측정 데이터, HMD 상태 데이터, 및 이미지 기반 컨트롤러 상태 값들에 액세스할 수 있다. 컨트롤러 포즈는 그 다음, 가장 높은 우선순위 거동과 연관된 동작 모델에 의해 생성된 후보 모델 기반 컨트롤러 상태 데이터에 기초하여 결정될 수 있다(614).
컨트롤러가 이미지 데이터에서 추적가능하거나 어떠한 동작 모델들도 활성화되지 않은 경우 포즈 추적기는 FOV 추적기에 의해 결정된 이미지 기반 컨트롤러 상태 데이터에 기초하여 컨트롤러 포즈를 결정할 수 있다. 포즈 추적기는 컨트롤러가 이미지 데이터에서 추적가능하지 않고(컨트롤러 포즈를 결정하기 위해) 동작 모델이 활성화된 경우 비 FOV 추적기에 의해 결정된 모델 기반 컨트롤러 상태 데이터에 기초하여 컨트롤러 포즈를 결정할 수 있다. 렌더링 엔진은 결정된 컨트롤러 포즈 및 HMD 포즈에 기초하여 인공 현실 콘텐트를 렌더링할 수 있다(616).
도 7 내지 도 10은 본 발명의 양태들에 따라 거동들을 활성화하고 활성화된 거동들과 연관된 동작 모델들을 평가하기 위한 예시적인 방법들의 동작들을 도시하는 흐름도들이다.
도 7은 컨트롤러가 HMD 근처에 있지만, HMD에 부착되지 않은 코너 케이스에서 컨트롤러 포즈를 결정하기 위한 방법의 예시적인 동작들을 도시하는 흐름도이다. 이 경우에 대한 활성화 조건은 컨트롤러가 AR 시스템의 이미지 캡쳐 디바이스들의 시야에서 추적가능하지 않다고 결정하는 것을 포함한다(704의 아니오 분기). 상기 논의된 바와 같이, 일부 양태들에서, 컨트롤러가 임의의 카메라들 또는 센서들의 시야에 위치되지 않는 경우, 컨트롤러가 또 다른 객체에 의해 시야 내에서 가려지는 경우, 컨트롤러의 포지션이 신뢰가능하지 않은 경우, 또는 컨트롤러가 정지된 경우 컨트롤러는 시야에서 추적가능하지 않다. 도 7의 코너 케이스에 대한 또 다른 활성화 조건은 컨트롤러와 HMD 사이의 거리가 미리 정의되거나 구성가능한 임계치 미만이라는 것이다(706의 아니오 분기). 활성화 조건들 둘 모두가 충족되면, 코너 케이스와 연관된 거동 및 동작 모델이 활성화된다. 컨트롤러가 AR 시스템의 이미지 캡쳐 디바이스들의 시야 내에서 추적가능하거나(704의 예 분기) HMD와 컨트롤러 사이의 거리가 구성가능한 임계치보다 큰 경우(706의 예 분기), 이 코너 케이스에 대한 활성화 조건들은 만족되지 않고 방법이 종료된다.
코너 케이스 거동과 연관된 동작 모델은 컨트롤러와 연관된 가상 손 또는 다른 객체로 하여금 가상 팔꿈치의 포지션을 중심으로 회전하게 하는 거동에 대한 후보 모델 기반 컨트롤러 상태 데이터의 포지션 값들을 설정한다(708). 가상 세계 공간에서 가상 팔꿈치의 포지션은 구성 데이터에 저장된 미리 정의되거나 구성가능한 팔뚝 길이 및 마지막으로 알려진 컨트롤러 포지션과 헤드셋 포지션에 기초하여 결정될 수 있다. 이 경우에 동작 모델은 "스틱 위의 컨트롤러" 모델로서 언급될 수 있고, 여기서 스틱은 사용자의 팔을 나타내는 가상 팔이고, 가상 팔꿈치는 스틱의 한쪽 끝에 있고 컨트롤러의 포지션과 연관된 가상 손은 스틱의 다른 끝에 있다.
일부 양태들에서, 코너 케이스에 대한 비활성화 조건들은 컨트롤러가 시야 내에서 추적가능하게 될 때 컨트롤러에서 추적을 재획득하는 것을 포함할 수 있다.
도 12a 및 도 12b는 도 7을 참조하여 상기 설명된 코너 케이스에 대한 일 예시적인 물리적 환경을 도시한다. 도 12a는 HMD(112)를 착용하고 HMD(112)의 임계 거리(1202) 내에서 컨트롤러(114)를 손(132)에 쥐고 있는 사용자의 정면도이다. 도 12b는 사용자의 측면도이다. 도 12b에서 볼 수 있는 바와 같이, 컨트롤러(114)는 HMD(112)의 카메라들의 시야(130) 내에 있지 않다. 이 예에서, 사용자는 동일한 가상 환경에서 또 다른 사용자의 관심을 끌거나 인사하기 위해 그들의 팔을 흔들고 있을 수 있다. 동작 모델에 기초하여 가상의 손 및 팔이 흔드는 것처럼 보이도록 렌더링될 수 있다. 흔드는 동작은 가상 손으로 하여금 팔꿈치를 중심으로 회전하게 함으로써 렌더링될 수 있다.
도 8은 제1 컨트롤러가 시야 내에 있지만, 제2 컨트롤러에 의해 차단되고, 제1 컨트롤러가 제2 컨트롤러에 "부착"되어 있지 않은 코너 케이스에서 컨트롤러 포즈를 결정하기 위한 방법의 예시적인 동작들을 도시하는 흐름도이다. 이 경우에 대한 활성화 조건은 제1 컨트롤러가 시야 내에 있지 않다고 결정하는 것을 포함한다(804의 아니오 분기). 코너 케이스에 대한 또 다른 활성화 조건은 제1 컨트롤러와 제2 컨트롤러 사이의 거리가 미리 정의되거나 구성가능한 임계치 미만이라는 것이다(806의 예 분기). 여전히 또 다른 활성화 조건은 제1 컨트롤러의 가속도 값들(컨트롤러 측정 데이터로부터 결정된 바와 같음)이 제2 컨트롤러의 가속도 값들과 동기화되지 않는다는 것이다(808의 예 분기). 상기 모든 활성화 조건들이 충족되면, 코너 케이스와 연관된 동작 모델 및 거동이 활성화된다. 컨트롤러가 AR 시스템의 이미지 캡쳐 디바이스들의 시야 내에서 추적가능한 경우(804의 예 분기), 제1 및 제2 컨트롤러 사이의 거리가 구성가능한 임계치보다 큰 경우(806의 아니오 분기), 또는 제1 컨트롤러의 가속도 값들이 제2 컨트롤러의 가속도 값들과 동기화되는 경우(808의 아니오 분기), 이 코너 케이스에 대한 활성화 조건들이 만족되지 않고 방법이 종료된다.
코너 케이스 거동과 연관된 동작 모델은 사용자의 가상 몸통의 포지션에 대해 제1 컨트롤러에 대한 후보 모델 기반 컨트롤러 상태 데이터의 포지션 값들을 정한다(810). 가상 몸통의 포지션은 몸통과 HMD 사이의 평균 거리, HMD 포즈들, 및 컨트롤러 지향방향을 제공하는 구성 데이터에 기초하여 결정될 수 있다.
일부 양태들에서, 코너 케이스에 대한 비활성화 조건들은 가시적 (제2) 컨트롤러가 카메라 또는 센서 시야를 떠나는 것, 또는 차단된 (제1) 컨트롤러가 시야 내에서 추적가능하게 되는 것을 포함할 수 있다.
도 13a 및 도 13b는 도 8을 참조하여 상기 설명된 코너 케이스에 대한 일 예시적인 물리적 환경 및 예시적인 인공 현실 콘텐트를 도시한다. 도 13a는 HMD(112)를 착용하고 손(132A)에 컨트롤러(114A) 및 손(132B)에 컨트롤러(114B)를 쥐고 있는 사용자의 정면도이다. 컨트롤러(114B)는 손(132A) 및/또는 컨트롤러(114A)에 의해 가려진다. 이 예에서, 사용자는 가상 손목 시계(1302)의 메뉴와 상호작용할 수 있다. 사용자가 메뉴를 조작하기 위해 자신의 손을 움직일 때, 제1 및 제2 컨트롤러들(114A 및 114B)은 상이한 가속도 값들을 경험하고 따라서, 서로 부착되지 않는다.
도 13b는 도 13a에 도시된 예에 대한 예시적인 인공 현실 콘텐트(122)를 도시한다. 이 코너 케이스 거동에 대한 동작 모델은 가상 손(1324B)으로 하여금, 컨트롤러(114B)가 가려지고 컨트롤러(114A)와 동기화되어 움직이지 않을 때 가상 몸통(1304)으로부터 정해진 거리에서 렌더링되게 한다.
도 9는 제1 컨트롤러가 시야 내에 있지만, 제2 컨트롤러에 의해 차단되고 제2 컨트롤러에 부착되는 추적 코너 케이스에 컨트롤러 포즈를 결정하기 위한 방법의 예시적인 동작들을 도시하는 흐름도이다. 이 경우에 대한 활성화 조건은 제1 컨트롤러가 시야에서 추적가능하지 않는다고 결정하는 것을 포함한다(904의 아니오 분기). 코너 케이스에 대한 또 다른 활성화 조건은 제1 컨트롤러와 제2 컨트롤러 사이의 거리가 미리 정의되거나 구성가능한 임계치 미만이라는 것이다(906의 예 분기). 여전히 또 다른 활성화 조건은 제1 컨트롤러의 가속도 값들(컨트롤러 측정 데이터로부터 결정된 바와 같음)이 제2 컨트롤러의 가속도 값들과 동기화된다는 것이다(908의 예 분기). 상기 모든 활성화 조건들이 충족되면, 코너 케이스에 대한 동작 모델 및 거동이 활성화된다. 컨트롤러가 AR 시스템의 이미지 캡쳐 디바이스들의 시야 내에서 추적가능한 경우(904의 예 분기), 제1 및 제2 컨트롤러 사이의 거리가 구성가능한 임계치보다 큰 경우(906의 아니오 분기), 또는 제1 컨트롤러의 가속도 값들이 제2 컨트롤러의 가속도 값들과 동기화되지 않은 경우(908의 아니오 분기), 이 코너 케이스에 대한 활성화 조건들은 만족되지 않고 방법이 종료된다.
코너 케이스 거동과 연관된 동작 모델은 제1 컨트롤러에 대한 후보 모델 기반 컨트롤러 상태 데이터의 포지션 값들을 제2 컨트롤러의 포지션에 대해 정해진 위치로 설정한다(910).
일부 양태들에서, 코너 케이스에 대한 비활성화 조건들은 가시 (제2) 컨트롤러가 카메라 또는 센서 시야를 떠나는 것, 또는 차단된 (제1) 컨트롤러가 시야 내에서 추적가능하게 되는 것을 포함할 수 있거나, 제1 및 제2 컨트롤러들의 가속도 값들은 더 이상 동기화되지 않는다.
도 14a 및 도 14b는 도 9를 참조하여 상기 설명된 코너 케이스에 대한 일 예시적인 물리적 환경 및 예시적인 인공 현실 콘텐트를 도시한다. 도 14a는 HMD(112)를 착용하고 손(132A)에 컨트롤러(114A) 및 손(132B)에 컨트롤러(114B)를 쥐고 있는 사용자의 측면도이다. 컨트롤러(114B)는 손(132A) 및/또는 컨트롤러(114A)에 의해 가려질 수 있다. 인공 현실 콘텐트는 사용자가 양손 그립을 사용하여 타겟에 가상 총을 쏘는 슈팅 게임을 포함할 수 있다. 사용자가 조준을 위해 자신의 손을 움직일 때, 제1 및 제2 컨트롤러들(114A 및 114B)은 사용자의 손들 둘 모두가 동일한 객체(즉, 총)를 쥐고 있고 따라서, 서로 부착된 것으로 결정되기 때문에 실질적으로 동일한 가속도 값들을 생성한다.
도 14b는 도 14a에서 도시된 예에 대한 예시적인 인공 현실 콘텐트(122)를 도시한다. 이 예에서, 사용자는 가상 총(1402)을 가상 타겟(1404)에 조준하였다. 이 코너 케이스 거동에 대한 동작 모델은 가상 손(1424A)으로 하여금 가상 손(1424B)의 포지션에 대해 정해진 포지션에서 렌더링되게 한다.
도 10은 시야에서 컨트롤러의 포지션이 신뢰가능하지 않거나 정지된 코너 케이스에서 컨트롤러 포즈를 결정하기 위한 방법의 예시적인 동작들을 도시하는 흐름도이다. 컨트롤러가 합리적인 확신을 갖고 포지션의 결정을 허용하기 위해 카메라들로부터 너무 멀리 떨어져 배치되는 경우 컨트롤러의 포지션은 신뢰가능하지 않게 될 수 있다. 부가적으로, 컨트롤러가 정지해 있는 경우(예컨대, 탁상 또는 다른 고정 포지션에 배치됨) 컨트롤러의 포지션이 신뢰가능하지 않게 될 수 있다. 이 경우에, 동작 센서 디바이스들로부터의 잡음은 컨트롤러로 하여금 실제로는 그것이 고정되어 있어야 할 때 움직이는 것처럼 보일 수 있게 할 수 있다. 어느 하나의 경우에, 사용자는 지터(컨트롤러와 연관된 가상 객체의 포지션이 실제 위치 근처에서 진동함) 또는 멀리 날아간 다음 스냅(fly-away-then-snap)(컨트롤러와 연관된 가상 객체가 멀리 날아간 다음, 실제 위치로 빠르게 점프함)을 볼 수 있다. 이 경우에 대한 활성화 조건은 컨트롤러의 동작 센서로부터의 가장 최근의 세트의 가속도 값들의 절대 값들이 미리 정의되거나 구성가능한 임계치 미만이라고(1004의 예 분기) 결정하는 것을 포함한다. 코너 케이스에 대한 또 다른 활성화 조건은 버퍼링된 세트의 동작 센서 값들의 분산이 미리 정의되거나 구성가능한 임계치 미만이라는 것이다(1006의 예 분기). 상기 활성화 조건들 둘 모두가 충족되면, "정지된 컨트롤러" 코너 케이스에 대한 동작 모델 및 거동이 활성화된다. 컨트롤러의 동작 센서로부터의 가장 최근의 세트의 가속도 값들이 미리 정의되거나 구성가능한 임계치보다 크거나(1004의 아니오 분기) 버퍼링된 세트의 동작 센서 값들의 분산이 미리 정의되거나 구성가능한 임계치보다 큰 경우(1006의 아니오 분기), 이 코너 케이스에 대한 활성화 조건들이 만족되지 않고 방법이 종료된다.
코너 케이스 거동과 연관된 동작 모델은 컨트롤러에 대한 후보 모델 기반 컨트롤러 상태 데이터의 포지션 값들을 세계 기준 프레임의 정해진 포지션에 고정시킨다(1008).
일부 양태들에서, 코너 케이스에 대한 비활성화 조건들은 미리 결정되거나 구성가능한 임계치를 초과하는 버퍼링된 동작 센서 샘플들의 분산, 또는 미리 결정되거나 구성가능한 임계치를 초과하는 가장 최근의 동작 센서 값 샘플의 절대 값을 포함할 수 있다.
도 11은 본 발명의 양태들에 따라 핸드헬드 컨트롤러가 시야에 재진입할 때 지터를 감소시키기 위한 방법의 예시적인 동작들을 도시하는 흐름도이다. 포즈 추적기는 컨트롤러가 이전 디스플레이 프레임 동안 시야 내에서 추적가능했는지의 여부를 결정할 수 있다(1104). 컨트롤러가 이전 디스플레이 프레임 동안 추적가능했다면(1104의 예 분기), 컨트롤러는 시야에 재진입하지 않았다. 지터 감소 동작들은 따라서 필요하지 않으며, 방법이 종료된다.
컨트롤러가 이전 디스플레이 프레임 동안 추적가능하지 않은 경우(1104의 아니오 분기), 포즈 추적기는 컨트롤러가 현재 디스플레이 프레임에 대한 시야에서 추적가능한지의 여부를 결정할 수 있다(1106). 컨트롤러가 이전 프레임에서 추적가능하지 않았고 컨트롤러가 현재 디스플레이 프레임에서 추적가능하지 않은 경우, 지터 감소가 필요하지 않고, 방법이 종료된다(1106의 아니오 분기). 컨트롤러가 이전 디스플레이 프레임에서 추적가능하지 않았고 현재 디스플레이 프레임에서 추적가능한 경우, 컨트롤러는 시야에 재진입했다(1106의 예 분기). 포즈 추적기는 컨트롤러에 대해 포지션이 결정되는 가상 객체가 "점프" 포지션으로 나타나는 것을 방지하기 위해 보간을 사용하여 일련의 디스플레이 프레임들에 대한 컨트롤러 포즈들을 결정할 수 있다(1108). 특히, 포즈 추적기는 컨트롤러가 시야 밖에 있을 때 비 FOV 추적기에 의해 결정된 컨트롤러의 포지션과 컨트롤러가 시야에 재진입할 때 FOV 추적기에 의해 결정된 컨트롤러의 포지션 사이를 보간함으로써 컨트롤러 포즈들을 결정할 수 있다.
도 15a 및 도 15b는 도 11의 방법에 의해 수행된 보간의 일례를 도시한다. 도 15a는 제1 컨트롤러(114A)가 HMD(112)의 카메라들 또는 센서들의 시야(130)에 있지 않은 물리적 환경의 초기 상태를 도시한다. 일례로서, HMD(112)의 사용자는 인공 현실 시스템에서 제공된 가상 복싱 게임에 참여할 수 있다.
도 15b는 제1 컨트롤러(114A)가 HMD(112)의 시야(130)에 재진입한 물리적 환경의 후속 상태를 도시한다. 예를 들면, 사용자는 컨트롤러(114)를 쥐고 있는 손으로 "펀치"를 수행할 수 있다. 도 15b에 도시된 예에서, 비 FOV 추적기는 P1에서 컨트롤러(114A)의 포지션을 결정하고 FOV 추적기는 P2에서 컨트롤러(114A)의 포지션을 결정한다. 보간 없이, 손(132A)을 나타내는 가상 손의 경로는 후속 디스플레이 프레임들에서 P3으로 진행하기 전에 P1로부터 P2로 점프하는 것으로 나타날 수 있다. 도 11에서 상기 설명된 방법을 사용하여, 포즈 추적기는 일련의 디스플레이 프레임들에 걸쳐 시야(130) 외부로부터 시야(130) 내로의 가상 손의 전환을 매끄럽게 하는 P1과 P3 사이의 경로를 보간할 수 있다. 도 15b에 도시된 예에서, 보간되지 않은 경로는 지점들(P1, P2 및 P3)을 연결하는 실선에 의해 표현된다. 보간된 경로는 P1과 P3을 연결하는 점선에 의해 표현된다. 보간 속도 및 지속기간은 인공 현실 콘텐트 내의 활동의 측정 또는 추정에 기초하여 결정될 수 있다.
본 발명의 다양한 양태들의 상기 설명은 인공 현실 시스템의 맥락에서 제공되었다. 본 명세서에서 설명된 기술들은 카메라 또는 센서의 시야 안팎으로 이동할 수 있는 객체들의 포지션들을 결정하기 위해 이미지 또는 다른 센서 데이터를 사용하는 다른 유형들의 시스템들에서 또한 구현될 수 있다.
본 발명에서 설명된 기술들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 적어도 부분적으로 구현될 수 있다. 예를 들면, 설명된 기술들의 다양한 양태들은 하나 이상의 마이크로프로세서들, DSP들, 주문형 반도체들(ASICs), 필드 프로그래밍가능한 게이트 어레이들(FPGAs), 또는 임의의 다른 등가의 집적되거나 이산 로직 회로망 뿐만 아니라, 이러한 구성요소들의 임의의 조합들을 포함하는 하나 이상의 프로세서들 내에서 구현될 수 있다. 용어 "프로세서" 또는 "프로세싱 회로망"은 일반적으로, 단독으로 또는 다른 논리 회로망과 조합하는 상기 논리 회로망, 또는 임의의 다른 등가 회로망 중 임의의 것을 언급할 수 있다. 하드웨어를 포함하는 제어 유닛은 또한, 본 발명의 기술들 중 하나 이상을 수행할 수 있다.
이러한 하드웨어, 소프트웨어, 및 펌웨어는 본 발명에서 설명된 다양한 동작들 및 기능들을 지원하기 위해 동일한 디바이스 내에서 또는 별개의 디바이스들 내에서 구현될 수 있다. 게다가, 설명된 유닛들, 모듈들 또는 구성요소들 중 임의의 것은 별개지만 상호운용가능한 논리 디바이스들로서 함께 또는 별개로 구현될 수 있다. 모듈들 또는 유닛들과 같은 상이한 피쳐들의 묘사는 상이한 기능적 양태들을 강조하도록 의도되며 이러한 모듈들 또는 유닛들이 별개의 하드웨어 또는 소프트웨어 구성요소들에 의해 실현되어야 한다는 것을 반드시 의미하지는 않는다. 오히려, 하나 이상의 모듈들 또는 유닛들과 연관된 기능은 별개의 하드웨어 또는 소프트웨어 구성요소들에 의해 수행되거나 공통 또는 별개의 하드웨어 또는 소프트웨어 구성요소들 내에 통합될 수 있다.
본 발명에서 설명된 기술들은 또한, 지시들을 포함하는 컴퓨터 판독가능한 저장 매체와 같은 컴퓨터 판독가능한 매체에서 구현되거나 인코딩될 수 있다. 컴퓨터 판독가능한 저장 매체에 내장되거나 인코딩된 지시들은 예컨대, 지시들이 실행될 때 프로그래밍가능한 프로세서, 또는 다른 프로세서로 하여금 방법을 수행하게 할 수 있다. 컴퓨터 판독가능한 저장 매체들은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그래밍가능한 판독 전용 메모리(PROM), 소거가능한 프로그래밍가능한 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그래밍가능한 판독 전용 메모리(EEPROM), 플래시 메모리, 하드 디스크, CD-ROM, 플로피 디스크, 카세트, 자기 매체들, 광학 매체들, 또는 다른 컴퓨터 판독가능한 매체들을 포함할 수 있다.
본 명세서의 다양한 예들로서 설명된 바와 같이, 본 발명의 기술들은 인공 현실 시스템을 포함하거나 이와 결부하여 구현될 수 있다. 설명된 바와 같이, 인공 현실은 예컨대, 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 그들의 일부 조합 및/또는 파생물들을 포함할 수 있는, 사용자에게 제공되기 전에 일부 방식으로 조정된 현실의 일 형태이다. 인공 현실 콘텐트는 캡쳐된 콘텐트(예컨대, 실세계 사진들)와 조합된 생성된 콘텐트 또는 완전히 생성된 콘텐트를 포함할 수 있다. 인공 현실 콘텐트는 비디오, 오디오, 햅틱 피드백, 또는 그들의 일부 조합을 포함할 수 있으며, 그들 중 임의의 것은 단일 채널로 또는 다수의 채널들(예컨대, 뷰어에게 3차원 효과를 생성하는 스테레오 비디오와 같음)로 제공될 수 있다. 부가적으로, 일부 실시예들에서, 인공 현실은 예컨대, 인공 현실에서 콘텐트를 생성하기 위해 사용되고/거나 인공 현실에서 사용되는(예컨대, 인공 현실에서 활동들을 수행하는) 애플리케이션들, 제품들, 액세서리들, 서비스들, 또는 그들의 일부 조합과 연관될 수 있다. 인공 현실 콘텐트를 제공하는 인공 현실 시스템은 호스트 컴퓨터 시스템에 연결된 머리 장착 디바이스(HMD), 독립형 HMD, 모바일 디바이스 또는 컴퓨팅 시스템, 또는 인공 현실 콘텐트를 한명 이상의 뷰어들에게 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함하는 다양한 플랫폼들에서 구현될 수 있다.

Claims (20)

  1. 인공 현실 시스템에 있어서:
    물리적 환경을 나타내는 이미지 데이터를 캡쳐하도록 구성된 이미지 캡쳐 디바이스;
    인공 현실 콘텐트를 출력하도록 구성된 머리 장착 디스플레이(HMD);
    컨트롤러 상태 데이터에 적어도 부분적으로 기초하여, 핸드헬드 컨트롤러의 포지션 및 지향방향을 나타내는 컨트롤러 포즈(controller pose)를 결정하도록 구성된 포즈 추적기로서, 상기 포즈 추적기는 상기 핸드헬드 컨트롤러에 대한 상이한 동작 거동(motion behavior)들과 연관된 복수의 동작 모델들을 가지는 비 FOV 추적기를 포함하고, 상기 복수의 동작 모델들 각각은 하나 이상의 각각의 활성화 조건들과 연관되며, 상기 비 FOV 추적기는 상기 핸드헬드 컨트롤러가 상기 이미지 데이터 내에서 추적가능하지 않고 상기 복수의 동작 모델들 중 하나가 활성화된다는 결정에 응답하여 상기 복수의 동작 모델들 중 하나에 따라 상기 컨트롤러 상태 데이터를 결정하도록 구성되는, 상기 포즈 추적기; 및
    상기 컨트롤러 포즈에 따라 상기 인공 현실 콘텐트 및 적어도 하나의 그래픽 객체를 상기 HMD에서 디스플레이하기 위해 렌더링하도록 구성된 렌더링 엔진을 포함하는, 인공 현실 시스템.
  2. 제1항에 있어서, 상기 복수의 동작 모델들은 포섭 아키텍처(subsumption architecture)로 구성되고, 상기 비 FOV 추적기는:
    2개 이상의 동작 모델들이 활성화된다는 결정에 응답하여 상기 복수의 동작 모델들 중 2개 이상에 대해 상기 동작 모델들을 동시에 평가하고;
    가장 높은 우선순위를 가지는 평가된 동작 모델에 적어도 부분적으로 기초하여 상기 컨트롤러 상태 데이터를 결정하도록 구성되는, 인공 현실 시스템.
  3. 제1항에 있어서,
    상기 포즈 추적기는 상기 이미지 데이터에 적어도 부분적으로 기초하여 이미지 기반 컨트롤러 상태 데이터를 결정하도록 구성된 FOV 추적기를 더 포함하고;
    상기 이미지 기반 컨트롤러 상태 데이터는 상기 비 FOV 추적기에 입력으로서 제공되고;
    상기 비 FOV 추적기는 상기 복수의 동작 모델들 중 어느 것도 활성화되지 않는다는 결정에 응답하여 상기 이미지 기반 컨트롤러 상태 데이터에 기초하여 상기 컨트롤러 상태 데이터를 결정하는, 인공 현실 시스템.
  4. 제1항에 있어서, 상기 비 FOV 추적기는 또한, 상기 동작 모델과 연관된 하나 이상의 각각의 활성화 조건들이 상기 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터에 적어도 부분적으로 기초하여 만족된다고 결정하는 것에 응답하여 상기 복수의 동작 모델들 중 하나의 동작 모델을 활성화하도록 구성되는, 인공 현실 시스템.
  5. 제1항에 있어서, 상기 핸드헬드 컨트롤러가 상기 이미지 데이터 내에서 추적가능하지 않는다는 결정은:
    상기 이미지 데이터에서 검출가능한 상기 핸드헬드 컨트롤러의 방출기들의 수가 미리 결정되거나 구성가능한 임계치 미만이라는 결정, 또는
    상기 핸드헬드 컨트롤러의 포지션이 신뢰가능하지 않다는 결정을 포함하는, 인공 현실 시스템.
  6. 제1항에 있어서,
    상기 하나 이상의 각각의 활성화 조건들은 상기 핸드헬드 컨트롤러가 시야 내에 있지 않다는 표시 및 상기 핸드헬드 컨트롤러가 상기 HMD의 임계 거리 내에서 움직이고 있다는 결정을 포함하고;
    상기 하나 이상의 각각의 활성화 조건들과 연관된 복수의 동작 모델들 중 하나는 가상 팔꿈치와 연관된 제2 포지션을 중심으로 하는 상기 핸드헬드 컨트롤러와 연관된 제1 포지션의 회전에 따라 상기 컨트롤러 상태 데이터를 결정하도록 구성되는, 인공 현실 시스템.
  7. 제1항에 있어서, 제2 핸드헬드 컨트롤러를 더 포함하고;
    상기 핸드헬드 컨트롤러는 상기 제2 핸드헬드 컨트롤러에 의해 시야 내에서 차단되고;
    상기 활성화 조건은 상기 핸드헬드 컨트롤러와 상기 제2 핸드헬드 컨트롤러 사이의 거리가 임계치 값 미만이고 상기 핸드헬드 컨트롤러의 가속도가 상기 제2 핸드헬드 컨트롤러의 가속도와 동기화되지 않는다는 결정을 포함하고;
    상기 동작 모델은 가상 몸통의 포지션에 대한 정해진 포지션으로서 상기 컨트롤러 상태 데이터의 하나 이상의 포지션 값들을 결정하도록 구성되는, 인공 현실 시스템.
  8. 제1항에 있어서, 제2 핸드헬드 컨트롤러를 더 포함하고;
    상기 핸드헬드 컨트롤러는 상기 제2 핸드헬드 컨트롤러에 의해 시야 내에서 차단되고;
    상기 활성화 조건은 상기 핸드헬드 컨트롤러와 상기 제2 핸드헬드 컨트롤러 사이의 거리가 임계치 값 미만이고 상기 핸드헬드 컨트롤러의 가속도가 상기 제2 핸드헬드 컨트롤러의 가속도와 실질적으로 동기화된다는 결정을 포함하고;
    상기 동작 모델은 상기 제2 핸드헬드 컨트롤러의 제2 포지션에 대해 정해진 포지션에서 상기 컨트롤러 상태 데이터의 하나 이상의 포지션 값들을 결정하도록 구성되는, 인공 현실 시스템.
  9. 제1항에 있어서,
    상기 핸드헬드 컨트롤러는 관성 측정 유닛(IMU)을 더 포함하고;
    상기 활성화 조건은 상기 IMU에 의해 제공된 가장 최근의 절대 값이 제1 임계치 값 미만이고 상기 IMU에 의해 제공된 복수의 버퍼링된 값들의 분산이 제2 임계치 값 미만이라는 결정을 포함하고;
    상기 동작 모델은 상기 컨트롤러 상태 데이터의 하나 이상의 포지션 값들이 세계 기준 프레임에 대해 정해진 포지션에 있는 것으로 결정하도록 구성되는, 인공 현실 시스템.
  10. 제1항에 있어서,
    상기 포즈 추적기는 상기 핸드헬드 컨트롤러가 시야에 재진입했음을 상기 핸드헬드 컨트롤러에 대한 이미지 데이터 및 컨트롤러 상태 데이터로부터 결정하도록 구성되고;
    상기 포즈 추적기는 복수의 디스플레이 프레임들에 걸쳐, 상기 핸드헬드 컨트롤러가 상기 시야 밖에 있는 동안 결정된 제1 컨트롤러 포즈 및 상기 핸드헬드 컨트롤러가 상기 시야에 재진입한 후에 결정된 제2 컨트롤러 상태 데이터에 기초하여 상기 컨트롤러 포즈를 보간하도록 구성되는, 인공 현실 시스템.
  11. 제1항에 있어서, 상기 이미지 캡쳐 디바이스는 상기 HMD와 통합되는, 인공 현실 시스템.
  12. 제1항에 있어서, 상기 이미지 데이터는 적외선 이미지 데이터를 포함하는, 인공 현실 시스템.
  13. 방법으로서:
    머리 장착 디스플레이(HMD)를 포함하는 인공 현실 시스템의 이미지 캡쳐 디바이스에 의해, 물리적 환경을 나타내는 이미지 데이터를 얻는 단계;
    상기 인공 현실 시스템의 비 FOV 추적기에 의해, 핸드헬드 컨트롤러에 대한 상이한 동작 거동들과 연관된 복수의 동작 모델들 중 하나의 동작 모델에 따라 상기 핸드헬드 컨트롤러에 대한 컨트롤러 상태 데이터를 결정하는 단계로서, 상기 복수의 동작 모델들 각각은 하나 이상의 각각의 활성화 조건들과 연관되고, 상기 동작 모델에 따라 상기 컨트롤러 상태 데이터를 결정하는 단계는 상기 핸드헬드 컨트롤러가 상기 이미지 데이터 내에서 추적가능하지 않고 상기 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터가 상기 동작 모델과 연관된 하나 이상의 활성화 조건들을 만족시킨다고 결정하는 것에 응답하는, 상기 컨트롤러 상태 데이터를 결정하는 단계;
    상기 인공 현실 시스템에 의해, 상기 컨트롤러 상태 데이터에 적어도 부분적으로 기초하여 상기 핸드헬드 컨트롤러의 포지션 및 지향방향을 나타내는 컨트롤러 포즈를 결정하는 단계; 및
    상기 HMD에서 디스플레이하기 위해 상기 인공 현실 시스템에 의해, 상기 컨트롤러 포즈에 따라 인공 현실 콘텐트 및 적어도 하나의 그래픽 객체를 렌더링하는 단계를 포함하는, 방법.
  14. 제13항에 있어서, 상기 복수의 동작 모델들은 포섭 아키텍처로 구성되고, 상기 방법은:
    상기 하나 이상의 각각의 활성화 조건들이 만족되는 상기 복수의 모델들 중 2개 이상에 대해 상기 동작 모델들을 동시에 평가하는 단계; 및
    가장 높은 우선순위를 가지는 평가된 동작 모델에 적어도 부분적으로 기초하여 상기 컨트롤러 상태 데이터를 결정하는 단계를 더 포함하는, 방법.
  15. 제13항에 있어서,
    상기 인공 현실 시스템의 FOV 추적기에 의해, 상기 이미지 데이터에 적어도 부분적으로 기초하여 상기 핸드헬드 컨트롤러에 대한 이미지 기반 컨트롤러 상태 데이터를 결정하는 단계;
    상기 비 FOV 추적기에 입력으로서 상기 이미지 기반 컨트롤러 상태 데이터를 제공하는 단계를 더 포함하고;
    상기 비 FOV 추적기는 상기 복수의 동작 모델들 중 어느 것도 활성화되지 않는다고 결정하는 것에 응답하여 상기 이미지 기반 컨트롤러 상태 데이터에 적어도 부분적으로 기초하여 상기 컨트롤러 상태 데이터를 결정하는, 방법.
  16. 제13항에 있어서,
    상기 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터가 상기 동작 모델과 연관된 하나 이상의 활성화 조건들을 만족시킨다고 결정하는 단계는 상기 핸드헬드 컨트롤러가 시야 내에서 추적가능하지 않고 상기 핸드헬드 컨트롤러가 상기 HMD의 임계 거리 내에서 움직이고 있다고 결정하는 단계를 포함하고,
    상기 방법은 상기 하나 이상의 각각의 활성화 조건들과 연관된 동작 모델을 평가하는 단계를 더 포함하며, 상기 동작 모델은 가상 팔꿈치의 제2 포지션을 중심으로 하는 상기 핸드헬드 컨트롤러의 제1 포지션의 회전에 따라 상기 컨트롤러 상태 데이터를 결정하도록 구성되는, 방법.
  17. 제13항에 있어서,
    상기 핸드헬드 컨트롤러는 제2 핸드헬드 컨트롤러에 의해 시야 내에서 차단되고;
    상기 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터가 상기 동작 모델과 연관된 하나 이상의 활성화 조건들을 만족시킨다고 결정하는 단계는 상기 핸드헬드 컨트롤러와 상기 제2 핸드헬드 컨트롤러 사이의 거리가 임계치 값 미만이라고 결정하는 단계 및 상기 핸드헬드 컨트롤러의 가속도가 상기 제2 핸드헬드 컨트롤러의 가속도와 동기화되지 않는다고 결정하는 단계를 포함하고,
    상기 방법은 상기 하나 이상의 각각의 활성화 조건들과 연관된 동작 모델을 평가하는 단계를 더 포함하며, 상기 동작 모델은 가상 몸통의 포지션에 대한 정해진 포지션으로서 상기 컨트롤러 상태 데이터의 하나 이상의 포지션 값들을 결정하도록 구성되는, 방법.
  18. 제13항에 있어서,
    상기 핸드헬드 컨트롤러는 상기 제2 핸드헬드 컨트롤러에 의해 시야 내에서 차단되고,
    상기 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터가 상기 동작 모델과 연관된 하나 이상의 활성화 조건들을 만족시킨다고 결정하는 단계는 상기 핸드헬드 컨트롤러와 상기 제2 핸드헬드 컨트롤러 사이의 거리가 임계치 값 미만이고 상기 핸드헬드 컨트롤러의 가속도가 상기 제2 핸드헬드 컨트롤러의 가속도와 동기화된다고 결정하는 단계를 포함하고,
    상기 방법은 상기 하나 이상의 각각의 활성화 조건들과 연관된 동작 모델을 평가하는 단계를 더 포함하며, 상기 동작 모델은 상기 제2 핸드헬드 컨트롤러의 제2 포지션에 대해 정해진 포지션에서 상기 컨트롤러 상태 데이터의 하나 이상의 포지션 값들을 결정하도록 구성되는, 방법.
  19. 제13항에 있어서,
    상기 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터가 상기 동작 모델과 연관된 하나 이상의 활성화 조건들을 만족시킨다고 결정하는 단계는 상기 핸드헬드 컨트롤러의 관성 측정 유닛(IMU)에 의해 제공된 가장 최근의 절대 값이 제1 임계치 값 미만이고 상기 IMU에 의해 제공된 복수의 버퍼링된 값들의 분산이 제2 임계치 값 미만이라고 결정하는 단계를 포함하고,
    상기 방법은 상기 하나 이상의 각각의 활성화 조건들과 연관된 동작 모델을 평가하는 단계를 더 포함하며, 상기 동작 모델은 세계 기준 프레임의 정해진 포지션에서 상기 컨트롤러 상태 데이터의 하나 이상의 포지션 값들을 결정하도록 구성되는, 방법.
  20. 지시들을 포함하는 비 일시적 컴퓨터 판독가능한 매체에 있어서,
    상기 지시들은 실행될 때, 머리 장착 디스플레이(HMD)를 포함하는 인공 현실 시스템의 하나 이상의 프로세서들로 하여금:
    이미지 캡쳐 디바이스를 통해 물리적 환경을 나타내는 이미지 데이터를 얻게 하고;
    핸드헬드 컨트롤러에 대한 상이한 동작 거동들과 연관된 복수의 동작 모델들 중 하나의 동작 모델에 따라 상기 핸드헬드 컨트롤러에 대한 컨트롤러 상태 데이터를 결정하게 하고 - 상기 복수의 동작 모델들의 각각은 하나 이상의 각각의 활성화 조건들과 연관되고, 상기 동작 모델에 따른 컨트롤러 상태 데이터의 결정은 상기 핸드헬드 컨트롤러가 상기 이미지 데이터 내에서 추적가능하지 않고 상기 핸드헬드 컨트롤러에 대한 동작 거동을 나타내는 컨트롤러 측정 데이터가 상기 동작 모델과 연관된 하나 이상의 활성화 조건들을 만족시킨다는 결정에 응답함 -;
    상기 컨트롤러 상태 데이터에 적어도 부분적으로 기초하여 상기 핸드헬드 컨트롤러의 포지션 및 지향방향을 나타내는 컨트롤러 포즈를 결정하게 하고;
    상기 HMD에서 디스플레이하기 위해 상기 컨트롤러 포즈에 따라 인공 현실 콘텐트 및 적어도 하나의 그래픽 객체를 렌더링하게 하는, 비 일시적 컴퓨터 판독가능한 매체.
KR1020217034813A 2019-05-20 2020-05-19 우선순위화된 동작 모델들을 가지는 다중 계층 인공 현실 컨트롤러 포즈 추적 아키텍처 KR20220007723A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/417,244 US10853991B1 (en) 2019-05-20 2019-05-20 Multi-layered artificial reality controller pose tracking architecture having prioritized motion models
US16/417,244 2019-05-20
PCT/US2020/033652 WO2020236843A1 (en) 2019-05-20 2020-05-19 Multi-layered artificial reality controller pose tracking architecture having prioritized motion models

Publications (1)

Publication Number Publication Date
KR20220007723A true KR20220007723A (ko) 2022-01-18

Family

ID=70978695

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217034813A KR20220007723A (ko) 2019-05-20 2020-05-19 우선순위화된 동작 모델들을 가지는 다중 계층 인공 현실 컨트롤러 포즈 추적 아키텍처

Country Status (7)

Country Link
US (1) US10853991B1 (ko)
EP (1) EP3973373A1 (ko)
JP (1) JP2022532826A (ko)
KR (1) KR20220007723A (ko)
CN (1) CN113892073B (ko)
TW (1) TWI840560B (ko)
WO (1) WO2020236843A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11275453B1 (en) * 2019-09-30 2022-03-15 Snap Inc. Smart ring for manipulating virtual objects displayed by a wearable device
US11073902B1 (en) * 2019-12-30 2021-07-27 Facebook Technologies, Llc Using skeletal position to predict virtual boundary activation
US11277597B1 (en) 2020-03-31 2022-03-15 Snap Inc. Marker-based guided AR experience
US11798429B1 (en) 2020-05-04 2023-10-24 Snap Inc. Virtual tutorials for musical instruments with finger tracking in augmented reality
US11520399B2 (en) 2020-05-26 2022-12-06 Snap Inc. Interactive augmented reality experiences using positional tracking
US11320896B2 (en) * 2020-08-03 2022-05-03 Facebook Technologies, Llc. Systems and methods for object tracking using fused data
US11925863B2 (en) * 2020-09-18 2024-03-12 Snap Inc. Tracking hand gestures for interactive game control in augmented reality
US11546505B2 (en) 2020-09-28 2023-01-03 Snap Inc. Touchless photo capture in response to detected hand gestures
US12086324B2 (en) 2020-12-29 2024-09-10 Snap Inc. Micro hand gestures for controlling virtual and graphical elements
WO2022146673A1 (en) 2020-12-30 2022-07-07 Snap Inc. Augmented reality precision tracking and display
US11402634B2 (en) * 2020-12-30 2022-08-02 Facebook Technologies, Llc. Hand-locked rendering of virtual objects in artificial reality
US11740313B2 (en) 2020-12-30 2023-08-29 Snap Inc. Augmented reality precision tracking and display
US11531402B1 (en) 2021-02-25 2022-12-20 Snap Inc. Bimanual gestures for controlling virtual and graphical elements
EP4327185A1 (en) 2021-04-19 2024-02-28 Snap, Inc. Hand gestures for animating and controlling virtual and graphical elements
US11599338B2 (en) * 2021-06-18 2023-03-07 Qingdao Pico Technology Co., Ltd. Model loading method and apparatus for head-mounted display device, and head-mounted display device
US20230041519A1 (en) * 2021-08-09 2023-02-09 Htc Corporation Tracking system, tracking method and non-transitory computer-readable storage medium
US11836301B2 (en) * 2021-08-10 2023-12-05 Qualcomm Incorporated Electronic device for tracking objects
US11693479B2 (en) * 2021-09-28 2023-07-04 Htc Corporation Virtual image display device and object selection method for virtual image thereof
GB2614330B (en) * 2021-12-31 2024-10-02 Sony Interactive Entertainment Europe Ltd Peripheral tracking system and method
US20240126381A1 (en) * 2022-10-14 2024-04-18 Meta Platforms Technologies, Llc Tracking a handheld device
GB2624929A (en) * 2022-12-01 2024-06-05 Sony Interactive Entertainment Inc Systems and methods for mapping and localisation
US11947122B1 (en) * 2022-12-08 2024-04-02 Varjo Technologies Oy Tracking system and method incorporating selective control of light sources of controller
US20240273831A1 (en) * 2023-02-15 2024-08-15 Htc Corporation Method for generating pass-through view with better scale and host

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9255813B2 (en) * 2011-10-14 2016-02-09 Microsoft Technology Licensing, Llc User controlled real object disappearance in a mixed reality display
JP6355978B2 (ja) * 2014-06-09 2018-07-11 株式会社バンダイナムコエンターテインメント プログラムおよび画像生成装置
US10684485B2 (en) * 2015-03-06 2020-06-16 Sony Interactive Entertainment Inc. Tracking system for head mounted display
US9996804B2 (en) 2015-04-10 2018-06-12 Facebook, Inc. Machine learning model tracking platform
US10186081B2 (en) * 2015-12-29 2019-01-22 Microsoft Technology Licensing, Llc Tracking rigged smooth-surface models of articulated objects
US10249090B2 (en) * 2016-06-09 2019-04-02 Microsoft Technology Licensing, Llc Robust optical disambiguation and tracking of two or more hand-held controllers with passive optical and inertial tracking
US10241587B2 (en) * 2016-12-22 2019-03-26 Microsoft Technology Licensing, Llc Magnetic tracker power duty cycling
US10417731B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10996742B2 (en) * 2017-10-17 2021-05-04 Logitech Europe S.A. Input device for AR/VR applications
US20200051561A1 (en) * 2018-08-13 2020-02-13 Hing Yin Lai Instant key mapping reload and real time key commands translation by voice command through voice recognition device for universal controller

Also Published As

Publication number Publication date
US20200372702A1 (en) 2020-11-26
EP3973373A1 (en) 2022-03-30
TWI840560B (zh) 2024-05-01
WO2020236843A1 (en) 2020-11-26
JP2022532826A (ja) 2022-07-20
US10853991B1 (en) 2020-12-01
CN113892073A (zh) 2022-01-04
CN113892073B (zh) 2024-04-05
TW202111483A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
TWI840560B (zh) 人工實境系統、用於追蹤人工實境系統中的手持型控制器之方法及相關的非暫時性電腦可讀取媒體
US10890983B2 (en) Artificial reality system having a sliding menu
US11055920B1 (en) Performing operations using a mirror in an artificial reality environment
TWI732194B (zh) 用於在hmd環境中利用傳至gpu之預測及後期更新的眼睛追蹤進行快速注視點渲染的方法及系統以及非暫時性電腦可讀媒體
KR102209873B1 (ko) 헤드 마운트 디스플레이를 위한 예측적 트래킹에 기반한 인식
JP2020102239A (ja) ヘッドマウントディスプレイ追跡
US11145126B1 (en) Movement instruction using a mirror in an artificial reality environment
JP2022535315A (ja) 自己触覚型仮想キーボードを有する人工現実システム
US10755486B2 (en) Occlusion using pre-generated 3D models for augmented reality
KR20220012990A (ko) 인공 현실 시스템들을 위한 팔 응시-구동 사용자 인터페이스 요소 게이팅
US10768695B2 (en) Artificial reality system having adaptive degrees of freedom (DOF) selection
EP2243525A2 (en) Method and system for creating a shared game space for a networked game
JP2022519975A (ja) 複数の関与モードを有する人工現実システム
US11036987B1 (en) Presenting artificial reality content using a mirror
US11195320B2 (en) Feed-forward collision avoidance for artificial reality environments
KR20220018561A (ko) 사용자 인터페이스 요소들을 게이팅하기 위한 개인 어시스턴트 요소를 갖는 인공 현실 시스템들
KR20220018562A (ko) 인공 현실 시스템을 위한 모서리-식별 제스처-구동 사용자 인터페이스 요소 게이팅
JP2022534639A (ja) 指マッピング自己触覚型入力方法を有する人工現実システム
US11073902B1 (en) Using skeletal position to predict virtual boundary activation
US20230252691A1 (en) Passthrough window object locator in an artificial reality system
US11816757B1 (en) Device-side capture of data representative of an artificial reality environment