KR20190031551A - 증강된 그리고/또는 가상의 현실 환경에서 6 자유도 제어기들을 이용한 가상 객체들의 조작 - Google Patents

증강된 그리고/또는 가상의 현실 환경에서 6 자유도 제어기들을 이용한 가상 객체들의 조작 Download PDF

Info

Publication number
KR20190031551A
KR20190031551A KR1020197005419A KR20197005419A KR20190031551A KR 20190031551 A KR20190031551 A KR 20190031551A KR 1020197005419 A KR1020197005419 A KR 1020197005419A KR 20197005419 A KR20197005419 A KR 20197005419A KR 20190031551 A KR20190031551 A KR 20190031551A
Authority
KR
South Korea
Prior art keywords
controller
axis
coordinate system
movement
detected
Prior art date
Application number
KR1020197005419A
Other languages
English (en)
Other versions
KR102245245B1 (ko
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 KR20190031551A publication Critical patent/KR20190031551A/ko
Application granted granted Critical
Publication of KR102245245B1 publication Critical patent/KR102245245B1/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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • 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
    • 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/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B9/00Simulators for teaching or training purposes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B22/00Exercising apparatus specially adapted for conditioning the cardio-vascular system, for training agility or co-ordination of movements
    • A63B22/02Exercising apparatus specially adapted for conditioning the cardio-vascular system, for training agility or co-ordination of movements with movable endless bands, e.g. treadmills
    • A63B2022/0271Exercising apparatus specially adapted for conditioning the cardio-vascular system, for training agility or co-ordination of movements with movable endless bands, e.g. treadmills omnidirectional
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/01Indexing scheme relating to G06F3/01
    • G06F2203/012Walk-in-place systems for allowing a user to walk in a virtual environment while constraining him to a given position in the physical environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04806Zoom, i.e. interaction techniques or interactors for controlling the zooming operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)
  • Position Input By Displaying (AREA)

Abstract

증강 현실(AR) 환경 및/또는 가상 현실(VR) 환경에서 여러 6DOF 제어기들의 6 자유도(6DOF) 입력들 또는 위치 및 방향 입력들 결합하기 위한 시스템이 제공된다. 다수의 제어기들의 검출된 움직임, 및 특히 가상 현실 환경에서 사용자 입력들을 제공하는 다수의 제어기들의 회전 운동에 응답하여, 다수의 제어기들의 검출된 움직임들은 단일의 공통 좌표계로 분해되어, 가상 환경에서 선택된 가상 객체에 적용될 의도된 입력을 결정할 수 있다. 다수의 6DOF 제어기들로부터 공통 좌표계로 이들 입력을 분해하는 능력은 보다 자연스러운 사용자 입력 모드를 제공하여 사용자의 경험을 향상시킬 수 있다.

Description

증강된 그리고/또는 가상의 현실 환경에서 6 자유도 제어기들을 이용한 가상 객체들의 조작
관련 출원에 대한 상호 참조
이 출원은 2017년 8월 17일자로 출원된 미국 특허 출원 제15/679,597호의 계속 출원이며 우선권을 주장하고, 상기 미국 특허 출원 제15/679,597호는 2016년 8월 23일에 출원된 미국 가출원 제62/378,389호를 우선권을 주장하며, 그 개시 내용은 그 전체가 본원에 참고로 포함된다.
본 출원은 2016년 8월 23일자로 출원된 미국 가출원 제62/378,389호의 우선권을 주장하며, 그 개시 내용은 그 전체가 본원에 참고로 포함된다.
이 문서는 일반적으로 증강된 그리고/또는 가상의 현실 환경에 입력들의 프로세싱에 관한 것이다.
증강 현실(AR) 및/또는 가상 현실(VR) 시스템은 3차원(3D) 몰입 환경을 생성할 수 있다. 사용자는, 다양한 전자 디바이스들, 예를 들어, 헬멧 또는 디스플레이 장치를 볼 때 사용자가 보게 되는 디스플레이, 안경 또는 고글, 센서를 포함하는 외부 핸드헬드 장치, 센서가 장착된 장갑들 및 다른 전자 장치를 포함하는 다른 헤드 장착 장치로 상호 작용을 통해 증강된 그리고/또는 가상 현실 환경을 경험할 수 있다. 증강된 그리고/또는 가상 현실 환경에 잠겨 있으면, 사용자는 가상 환경에서 가상 객체들의 선택 및/또는 조작을 위한 다른 방식들로, 가상 환경 내의 가상 객체들, 요소들, 피처들 등과 가상 환경에서 상호 작용할 수 있다. 예를 들어, 사용자는 하나 이상의 외부 전자 장치들, 물리적 움직임 및/또는 제스처, 방향성 헤드 및/또는 시선 등을 조작하여 가상 환경에서 원하는 효과를 생성하고, 그리고 상기 가상 환경을 개인화하고 그리고 제어할 수 있다.
일 양태에서, 방법은, 3차원(3D) 가상 환경을 생성하는 단계와; 물리적 환경에서 제1 제어기의 6DOF(degree-of-freedom) 위치 및 방위를 추적하는 단계와; 상기 물리적 환경에서 제2 제어기의 6DOF 위치 및 방위를 추적하는 단계와; 상기 가상 환경에 디스플레이된 가상 객체의 선택을 검출하는 단계와; 제1 좌표계에 대한 상기 물리적 환경에서의 제1 제어기의 검출된 움직임 및 제2 좌표계에 대한 상기 물리적 환경에서의 상기 제2 제어기의 검출된 움직임에 기초하여 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계와; 상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계와; 그리고 상기 명령 이동에 응답하여 상기 선택된 가상 객체를 조작하는 단계를 포함한다.
다른 양태에서, 방법은, 가상 환경에 디스플레이된 가상 객체의 선택을 검출하는 단계와; 제1 좌표계에 대한 제1 제어기의 검출된 움직임 및 제2 좌표계에 대한 제2 제어기의 검출된 움직임에 응답하여 상기 가상 환경에 디스플레이된 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계 - 상기 제1 제어기 및 상기 제2 제어기는 물리적 환경에서 동작하며 - 와; 상기 제1 제어기의 검출된 움직임 및 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계와; 그리고 상기 명령 이동에 응답하여 상기 가상 환경에서 상기 선택된 가상 객체를 회전시키는 단계를 포함한다.
다른 양태에서, 컴퓨터 프로그램 제품은 비 일시적인 컴퓨터 판독 가능 매체상에 구현될 수 있고, 상기 컴퓨터 판독 가능 매체는 일련의 명령어들을 저장한다. 상기 명령어들은 프로세서에 의해 실행될 때 상기 프로세서로 하여금 방법을 실행하도록 할 수 있고, 상기 방법은, 3차원(3D) 가상 환경을 생성하는 단계와; 물리적 환경에서 제1 제어기의 6DOF 위치 및 방위를 추적하는 단계와; 상기 물리적 환경에서 제2 제어기의 6DOF 위치 및 방위를 추적하는 단계와; 상기 가상 환경에 디스플레이된 가상 객체의 선택을 검출하는 단계와; 제1 좌표계에 대한 상기 물리적 환경에서의 제1 제어기의 검출된 움직임 및 제2 좌표계에 대한 상기 물리적 환경에서의 상기 제2 제어기의 검출된 움직임에 기초하여 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계와; 상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계와; 그리고 상기 명령 이동에 응답하여 상기 선택된 가상 객체를 조작하는 단계를 포함한다.
하나 이상의 구현들의 세부 사항들은 첨부된 도면 및 이하의 상세한 설명에서 서술된다. 다른 피처들은 상세한 설명 및 도면들 및 청구항들로부터 명백할 것이다.
도 1은 여기에서 서술된 구현들에 따라 헤드 장착 디스플레이(HMD) 디바이스 및 핸드헬드 전자 디바이스(들)을 포함하는 가상 현실 시스템의 예시적인 구현이다.
도 2는 여기에서 서술된 구현들에 따라, 증강된 그리고/또는 가상 현실 환경에서 동작하는 다수의 6 DOF(degree-of-freedom) 제어기들의 각각의 좌표 시스템들을 도시한다.
도 3 내지 도 9는 여기에 서술된 바와 같은 구현들에 따라, 증강된 그리고/또는 가상 현실 환경에서 다수의 6DOF 제어기들 및 대응하는 가상 객체들의 움직임의 예시적인 움직임들을 도시한다.
도 10a 내지 도 10d는 여기에 서술된 구현들에 따라, 증강 현실 및/또는 가상 현실 환경에서 선택된 가상 객체의 조작에서 다수의 6DOF 제어기들의 사용 예를 도시한다.
도 11a 및 11b는 여기에 서술된 구현들에 따른 예시적인 HMD의 사시도들이다.
도 12는 여기에 서술된 구현들에 따른 증강 및/또는 가상 현실 시스템의 블록도이다.
도 13은 여기에 서술된 구현들에 따른 방법의 흐름도이다.
도 14는 여기에 서술된 기술들을 구현하는데 사용될 수 있는 컴퓨터 디바이스 및 모바일 컴퓨터 디바이스의 예를 도시한다.
예를 들어, HMD(head mounted display) 디바이스를 착용한 가상 환경에 몰입한 사용자는 가상 환경을 탐색할 수 있고 그리고 다양한 상이한 유형들의 입력들을 통해 가상 물체들, 요소들, 피처들 및 가상 환경 등과 상호 작용할 수 있다. 이러한 입력들은, 예를 들어, HMD로부터 분리된 전자 디바이스의 조작 및/또는 HMD 자체의 조작 및/또는 눈의 방향 시선, 및/또는 머리 움직임 및/또는 손/팔의 제스처 등을 포함할 수 있다. 사용자는 HMD에 동작 가능하게 결합되거나 또는 HMD와 쌍으로 되어 가상 환경에서 원하는 동작을 일으키는 하나 이상의 핸드헬드 전자 디바이스(들) 또는 제어기(들)를 조작할 수 있다. 사용자는, 예를 들어, 가상 환경에서 구현될 입력을 제공하기 위해, 제어기의 터치 표면에 대한 터치 입력들, 제어기 상의 입력 버튼들 및/또는 스위치들의 조작, 제어기 자체의 물리적 이동 등과 같은 다양한 상이한 방식들로 제어기를 조작할 수 있다. 예를 들어, 일부 구현들에서, 제어기는 가상 환경에서 사용자에게 디스플레이된 가상 컨텐트의 시각적 크기 및/또는 외관 및/또는 위치를 조정하도록 조작될 수 있다. 이 기능은 사용자 입력을 제공할 때 유연성과 편의성을 제공할 수 있으며 그리고 사용자의 가상 환경을 향상시킬 수 있다.
여기에서 서술된 구현들에 따른 시스템 및 방법에서, 다수의 제어기들의 이동, 특히, 가상 현실 환경에서 사용자 입력들을 제공하는 다수의 제어기들의 회전은, 특정 가상 객체에 대한 구현을 위한 의도를 결정하기 위해 단일 좌표 시스템으로 결정될 수 있다.
이후, 논의 및 예시의 용이함을 위해, 증강된 그리고/또는 가상 현실 환경에서 상호 작용을 위해 사용되는 하나 이상의 핸드헬드 전자 디바이스는 제어기라 칭해질 것이다. 그러나, 여기에 서술된 원리들은 증강된 그리고/또는 가상 현실 환경에서의 상호 작용을 위해 사용자에게 제시되는 가상 객체들, 가상 피처들 등과 상호 작용하는 데 사용될 수 있는 다른 유형들의 외부 전자 디바이스들에 적용될 수 있다.
도 1에 도시된 예시적인 구현에서, HMD(100)를 착용한 사용자는, 한 손에 제1 휴대 가능한 핸드헬드 전자 디바이스 A 또는 제1 제어기 A, 또는 다른 한 손에, 제2 휴대 가능한 핸드헬드 전자 디바이스 B 또는 제 2 제어기 B를 보유하고 있다. 제어기들 A, B 중 하나 또는 모두는, 예를 들어, 자이로마우스(gyromouse), 스마트 폰, 특정 시스템과 동작하도록 구성된 제어기, 또는 HMD(100)에 의해 생성된 몰입형 가상 환경에서의 상호 작용을 위해 HMD(100)와 쌍을 이루고 통신할 수 있는 다른 유형의 제어기일 수 있다. 일부 구현들에서, 제어기들 A, B의 6DOF 위치 및 방위는 제어기 A, B에 포함된 다양한 센서들에 기초하여 추적될 수 있다. 이들 센서들은, 예를 들어, 자이로스코프에서와 같이 가속도계, 자이로스코프, 자력계 등을 포함하는 관성 측정 유닛 또는 이러한 방식으로 적응된 스마트폰을 포함할 수 있다. 일부 구현들에서, 제어기들 A, B의 6DOF 위치 및 방위는 시스템 내의 다른 센서들에 의해 검출된 각각의 제어기 A, B의 위치에 기초하여 추적될 수 있다. 이들 다른 센서들은, 예를 들어, 제어기들 A, B에 포함된 방위 센서와 함께 HMD(100)에 포함된 이미지 센서들을 포함할 수 있다. 제어기들 A, B는, 제어기들 A, B와 HMD(200) 간의 데이터 및 통신의 교환을 제공하기 위해, 예를 들어, 유선 접속, 와이파이 또는 블루투스 접속과 같은 무선 접속 등을 통해 HMD(100)와 동작 가능하게 결합되거나 또는 HMD(100)와 쌍으로 결합될 수 있다. HMD와 제어기들 A, B 간의 이러한 접속은 사용자로 하여금 제어기 A, B 중 하나 또는 모두의 조작을 통해 HMD (200)에 의해 생성된 가상 환경에서 상호 작용할 수 있게 할 수 있다. 즉, 제어기들 A, B 또는 제어기의 터치 표면상에 수신된 물리적 움직임 및/또는 입력과 같은 제어기들 A, B 중 하나 또는 모두의 조작은, 또는 사용자에 의해 가상 환경의 가상 객체에서 지시된 제어기 A, B에 의해 방출된 가상 광선 또는 빔은, 가상 환경에서 상응하는 상호 작용 또는 움직임으로 변환될 수 있다.
전술한 바와 같이, 일부 구현들에서, 제어기 A, B 중 하나 또는 모두는 자이로마우스 유형 성능들을 갖추고 있을 수 있으며, 그리고, 예를 들어, 선택, 조작 또는 다른 방식들로 가상 환경에서 가상 객체들과 상호 작용하기 위해 자유 공간에서 동작할 수 있다. 자이로마우스 기능들을 포함하는 하나 이상의 제어기(들) A, B의 사용은, 본질적으로 시스템이 작동하는 3차원(3D) 공간 또는 실제 세계 환경에서 6DOF 위치(위치 및 방위)를 상대적으로 정확하게 추적할 수 있다.
예를 들어, 제어기들 A, B는 제어기들 A, B의 각 운동(angular movement)을 나타내는 신호를 생성하는 자이로스코프를 포함할 수 있다. 제어기들 A, B의 검출 된 각 운동은 가상 환경에서 방향 운동으로 변환될 수 있다. 일부 구현들에서, 제어기들 A, B은 또한 제어기 A, B의 가속도, 예를 들어 자이로스코프에 의해 생성된 방향 신호에 대응하는 방향으로의 가속도를 나타내는 신호를 생성하는 가속도계를 포함할 수 있다. 일부 구현들에서, 제어기들 A, B는 검출된 자기장의 세기 및/또는 방향에 기초하여 실제 세계 환경에서 제어기 A, B의 상대 위치를 나타내는 신호를 생성하는 자력계를 또한 포함할 수 있다. 자이로스코프 및/또는 가속도계 및/또는 자력계에 의해 제공되는 제어기들 A, B와 관련된 방위 정보와 함께, 실제 세계 환경에서 제어기들 A, B의 검출된 3 차원 위치는, 제어기들 A, B 각각에 대한 6DOF 추적을 제공할 수 있다. 이는, 제어기들 A, B의 사용자 조작이 가상 환경에서의 목표 또는 의도된 상호 작용 및/또는 가상 환경에서 선택된 가상 객체로 향하는 액션으로 변환되게 할 수 있다.
일부 구현들에서, 제어기들 A, B 중 하나 또는 모두는 다양한 상이한 유형들의 사용자 입력들을 수신하도록 구성된 조작 디바이스들을 포함할 수 있다. 예를 들어, 일부 구현들에서, 제어기들 A, B는, 예를 들어, 터치 입력, 터치 및 드래그 입력, 핀치 및 줌 입력 등을 수신하도록 구성된 터치 표면(들)을 포함할 수 있다. 제어기들 A, B는, 또한, 예를 들어, 사용자 입력들을 수신하도록 구성된 하나 이상의 버튼들, 하나 이상의 토글 스위치들, 하나 이상의 조이스틱들 등과 같은 다른 조작 디바이스들을 포함할 수 있다.
이러한 방식으로 구비된 제어기들 A, B는 가상 환경에서 상응하는 상호 작용들로 변환될 수 있도록 다양한 상이한 입력 모드들로 사용자 입력들을 수신할 수 있다. 이러한 사용자 입력 모드들은, 예를 들어, 제어기들 A, B에 포함된 센서들에 의해 검출되고 추적된 위치, 방위 및 방향 움직임에 기초하여 제어기들 A, B의 물리적 이동 또는 제스처를 포함할 수 있다. 이들 사용자 입력 모드들은 또한 제어기들 A, B의 터치 표면상에 검출된 터치 입력(터치 및 드래그, 핀치 및 줌 등을 포함함), 제어기들 A, B의 조작 디바이스들 중 하나에서 수신된 선택 및 기타 다른 입력들을 포함할 수 있다. 일부 구현들에서, 제어기들 A, B는 이들 사용자 입력 모드들의 조합 또는 이들 사용자 입력 모드들의 순차적인 애플리케이션들을 포함하는 사용자 명령을 수신할 수 있다.
전술한 바와 같이, 예를 들어, 제1 제어기 A 및 제2 제어기 B와 같은 복수의 6DOF 제어기들을 사용하여 가상 환경에서 상호 작용할 때, 2개의 6DOF 제어기들을 사용하여 가상 객체들을 변환, 균일하게 스케일링 및 회전하는 방법은 사용자가 한 손의 제1 제어기 A 및 다른 손의 제2 제어기 B를 자연스럽게 가상 객체들과 상호 작용할 수 있도록 한다. 여기에서 서술된 구현들에 따른 시스템 및 방법에서, 동일한 가상 환경 (및 동일한 실제 환경)에서 동작하는 복수의 6DOF 제어기들에 대해 단일의 일관된 공통 좌표계가 정의될 수 있으며, 각각의 제어기는 각각의 좌표계 내에서 독립적으로 움직인다.
전술한 바와 같이, 전술한 제1 제어기 A 및 제2 제어기 B와 같은 가상 현실 6DOF 제어기들은 위치 및 방위 정보를 제공할 수 있다. 가상 환경에서의 상호 작용을 위해 사용자에 의해 조작되는 단일 제어기는 가상 환경에서 가상 객체의 위치 및 방위를 직접 제어하도록 조작될 수 있다. 유사한 방식으로, 다수의 제어기들, 예를 들어, 전술한 제1 제어기 A 및 제2 제어기 B로부터의 위치 및 방위 정보는, 예를 들어, 도 7에 도시된 바와 같이, 제1 제어기 A 및 제2 제어기 B의 평균 위치들에 기초하여 가상 환경에서 가상 객체의 위치를 제어하는데 사용될 수 있다. 유사하게, 전술된 제1 제어기 A 및 제2 제어기 B와 같은 다수의 제어기들로부터의 위치 및 방위 정보는, 예를 들어, 도 8에 도시된 것처럼, 제1 제어기 A 및 제2 제어기 B의 알려진 시작 위치 및 제1 제어기 A 및 제2 제어기 B의 위치에서의 검출된 변화들에 기초하여 가상 객체의 스케일을 제어하는데 사용될 수 있다. 여기에서 서술된 구현들에 따른 시스템 및 방법에서, 전술한 제1 제어기 A 및 제2 제어기 B와 같은 다수의 제어기들로부터의 위치 및 방위 정보는 도 9에 도시된 바와 같이 가상 객체의 회전을 제어하는데 사용될 수 있다.
예를 들어, 제1 제어기 A 및 제2 제어기 B의 회전 이동에 응답하여 가상 환경에서 가상 객체의 방위를 결정하고 제어하는 것은, 다수의 제어기들 A, B로 작동할 때, 추가 과제들을 제기할 수 있거나 또는 지나치게 제약된 문제를 제기할 수 있다. 즉, 제1 제어기 A의 위치 및 이동은 가상 객체에 대한 제1 목표 또는 의도된 방위를 의미할 수 있고, 그리고 제2 제어기 B의 위치 및 이동은 제1 제어기 A에 의해 암시된 제1 목표 또는 의도된 방위와 상이한 가상 객체에 대한 제2 목표 또는 의도된 방위를 의미할 수 있다. 일부 구현들에서, 2개의 개별 제어기들 A, B가 각각 동작하는 2개의 개별 좌표계들은 단일의 공통 좌표계로 분해될 수 있다. 알고리즘은, 제1 제어기 A의 위치 및 이동, 특히 회전, 및 제2 제어기 B의 위치 및 이동, 특히 회전을 이 공통 좌표계로 분해할 수 있다. 알고리즘에 의해 제공되는 이 분해능은, 예를 들어, 선택된 가상 객체의 방위의 변화에 영향을 미치기 위해 제1 제어기 A 및 제2 제어기 B의 이동에 의해 목표된 또는 의도된 입력을 결정할 수 있다.
이러한 공통 좌표계에서, 공통 좌표계의 제1 축(1)은 동일한 시점에서 제1 제어기 A의 위치와 제2 제어기 B의 위치 사이에 연장되는 벡터로 정의될 수 있다. 예를 들어, 제1 축(1)은, 도 2에 도시된 바와 같이, 제1 제어기 A의 미리 정의된 중심부 A1과 제2 제어기 B의 미리 정의된 중심부 B1 사이에서 연장되는 벡터에 의해 정의될 수 있다.
공통 좌표계의 제2 축(2)은 동일한 시점에서의 제1 제어기 A의 방향과 제2 제어기 B의 방향의 평균으로 정의될 수 있다. 알고리즘은, 중심 좌표계가 가능한 안정한 상태를 유지할 수 있도록 제1 축(1)에 가장 직각인 제어기들 A, B의 이동 방향으로 이 방향을 순차적인 시점들에서 동적으로 선택할 수 있다. 예를 들어, 제2 축(2)은, X 축, Y 축 또는 Z 축 중 어느 것이 제1 축(1)과 가장 직각인지에 따라, 제1 제어기 A의 X 축, Y 축 또는 Z 축이 되도록 동적으로 선택될 수 있다. 일부 구현들에서, 가장 직교인 축, 예를 들어, 이 예에서 제1 제어기 A의 X 축, Y 축 또는 Z 축 중 가장 직각인 축은, 직각에 가장 가까운 각도로, 또는 90°에 가장 가까운 각도로 제1 축(1)과 교차하는 축일 수 있다. 도 2에 도시된 예에서, 제1 제어기 A 및 제2 제어기 B는 본질적으로 사용자 앞의 가상 객체와 상호 작용하는 본질적으로 유사한 방향들을 향한다. 도 2에 도시된 예에서, 제1 축(1)이 제1 제어기 A의 중심부 A1와 제2 제어기 B의 중심부 B1 사이로 연장되도록 제어기들 A 및 B는 사용자에 의해 본질적으로 직선이고 본질적으로 평행하도록 유지된다. 이 예에서, 제1 제어기 A 및 제2 제어기 B, 및 제1 축(1)의 상대 위치들에 기초하여, 알고리즘은 제2 축(2)으로서 Y 축 또는 Z 축 중 어느 하나를 선택하고, 이들 중 하나의 축은 제1 축(1)에 가장 직각이 될 것이다.
공통 좌표계의 제3 축(3)은 제1 축(1)과 제2 축(2)의 외적(cross product)일 수 있다. 즉, 제3 축(3)은 제1 축(1)이 나타내는 벡터와 제2 축(2)이 나타내는 벡터의 외적이 되는 제3 벡터를 나타낼 수 있다.
도 3은 사용자가 제1 제어기 A 및 제2 제어기 B를 이동시켜 가상 객체의 회전, 예를 들어, 가상의 스티어링 휠, 가상 다이얼과 같은 가상 객체의 시계 또는 반 시계 방향 회전을 수행할 수 있는 예를 도시한다. 제1 제어기 A 및 제2 제어기 B의 이동 및 그 결과 가상 객체의 회전은 예를 들어 사용자가 착용한 HMD(100)의 디스플레이 상에 표시될 수 있다. 도 3에 도시된 예에서, 제1 제어기 A 및 제2 제어기 B는 실질적으로 수직으로 배향되고 이동 개시 직전에 본질적으로 유사한 방향을 향한다. 화살표 A3으로 도시된 바와 같이 제1 제어기 A가 상향 이동하고, 화살표 B3으로 도시된 바와 같이 제2 제어기 B가 하향 이동하면 가상 객체가 시계 방향으로 회전할 수 있다. 가상 객체의 회전량은 알고리즘에 의한 제1 제어기 A 및 제2 제어기 B의 이동의 분해능에 의해 전술한 바와 같은 공통 좌표계로 결정될 수 있다.
도 4는, 예를 들어 직립의 실질적으로 수직인 위치로부터 엎드려 있거나 실질적으로 수평인 위치로의 가상 물체의 회전을 유발하도록 사용자가 제1 제어기 A 및 제2 제어기 B를 이동시킬 수 있는 예를 도시한다. 도 4에 도시된 예에서, 제1 제어기 A 및 제2 제어기 B는 실질적으로 수직으로 배향되고, 이동 개시 직전에 본질적으로 유사한 방향을 향한다. 화살표 A4로 도시된 바와 같이, X축에 대한 제1 제어기 A의 회전 이동 및 화살표 B4로 도시된 바와 같이, X축에 대한 제2 제어기 B의 회전 이동은 가상 객체의 대응하는 회전 이동을 초래할 수 있다. 가상 객체의 회전량은, 전술한 공통 좌표계에 대한 알고리즘에 의한 제1 제어기 A 및 제2 제어기 B의 회전 이동의 분해능에 의해 결정될 수 있다.
도 5는 제1 제어기 A 및 제2 제어기 B가 회전 이동을 개시하기 전에 상이한 방향들로 배향된 예를 도시한다. 도 5에 도시된 예에서, 제1 제어기 A는 제1 방향(즉, 도 5에서 우측)으로 배향되고, 제2 제어기 B는 제2 방향(즉, 도 5에서 좌측)으로 배향된다. 이 예에서, 제1 제어기 및 제2 제어기는 실질적으로 반대 방향으로 배향되며; 서술된 원리들은 제어기들 A, B가 반드시 서로 반대 방향이 아닌 상이한 방향을 향하도록 적용될 수 있다. 화살표 A5로 도시된 바와 같이, 제1 제어기 A가 상향으로 이동하고, 그리고 화살표 B5로 도시된 바와 같이, 제2 제어기 B가 하향으로 이동하면서, 제어기들 A, B 중 어느 하나의 지향하는 방위를 변경하지 않으면, 가상 객체의 플립핑 유형 움직임을 초래할 수 있다. 가상 객체의 플립핑 이동량은 알고리즘에 의한 제1 제어기 A 및 제2 제어기 B의 회전 이동의 분해능에 의해 전술 한 바와 같은 공통 좌표계로 결정될 수 있다.
도 6은 가상 객체(200)에서의 예가 제1 제어기 A 및 제2 제어기 B를 사용하는 상호 작용을 위해 사용자에 의해 선택되는 것을 도시한다. 이 예에서, 제1 제어기 A는 제1 방향으로 배향되고, 제2 제어기 B는 이동의 개시 이전에 제2 방향으로 배향된다. 화살표 A6으로 도시된 바와 같이, 제1 제어기 A의 시계 방향으로의 회전 이동 및 화살표 B6으로 도시된 바와 같이, 제2 제어기 B의 시계 방향으로의 회전 이동은, 가상 객체(200)의 회전 이동을 초래할 수 있다. 제1 제어기 A 및 제2 제어기 B의 회전에 따른 가상 객체(200)의 회전 이동량은, 전술한 것처럼, 각각의 좌표계들 내에서 제1 제어기 A 및 제2 제어기 B의 검출된 회전 이동을 알고리즘에 의해 공통 좌표계로 분해함으로써 결정될 수 있다.
즉, 제1 제어기 A 및 제2 제어기 B에 대한 공통 좌표계를 설정함에 있어서, 공통 좌표계의 제1 축(1)은 제1 제어기 A의 중심부 A1와 제2 제어기 B의 중심부 B1 사이에 연장되는 선에 의해 규정될 수 있다. 이후, 제2 축은 알고리즘에 의해 동적으로 할당될 수 있는데, 이는 제1 제어기 A 및 제2 제어기 B가 각각 독립적으로 이동하기 때문이다. 알고리즘은 제1 축(1)에 가장 직교인 제어기들 A, B의 이동 방향에 대응하도록 제2 축(2)의 방향을 시간상의 순차적인 시점에서 동적으로 선택할 수 있어, 중심 좌표계가 가능한한 안정적으로 유지될 수 있다. 도 6에서 도시된 예에서, 표시된 시점에서 제2 축(2)은, 예를 들어, 제1 제어기 A의 Z축일 수 있다. 공통 좌표계의 제3 축은 각 시점에 대한 제1 축(1)과 제2 축(2)의 외적 일 수 있다.
제1 제어기 A 및 제2 제어기 B가 각각 독립적으로 이동 또는 회전함에 따라, 제어기들 A, B의 움직임은 시스템에 의해 동적으로 검출 및 추적될 수 있다. 제어기들 A, B의 동적으로 검출된 움직임은 각각의 시점에서 공통 좌표계에 대해 단일 움직임으로 분해될 수 있고, 상기 단일 움직임은 선택된 가상 객체 (200)에 적용될 수 있다. 선택된 가상 객체(200)의 움직임은 사용자가 착용한 HMD(100)의 디스플레이 상에 사용자에게 표시될 수 있다.
전술한 바와 같이, 일부 구현들에서, 제1 제어기 A 및 제2 제어기 B가 각각 동작하는 2개의 개별 좌표계들은 제1 제어기 A 및 제2 제어기 B의 움직임을 동적으로 평균화하는 알고리즘에 의해 단일의 공통 좌표계로 분해될 수 있다. 예를 들어, 제1 제어기 A 및 제2 제어기 B의 검출된 움직임에 기초하여 가상 객체(200)에 적용될 변환의 양은 제어기들 A, B의 위치들의 평균 변화에 기초하여 결정될 수 있다. 유사하게, 제1 제어기 A 및 제2 제어기 B의 검출 된 움직임에 기초하여 가상 객체(200)에 적용될 스케일의 변화는 제어기들 A, B 사이의 거리의 변화에 기초하여 결정될 수 있다. 제1 제어기 A 및 제2 제어기 B의 검출된 움직임에 기초하여 가상 객체(200)에 적용될 회전 입력은 제어기들 A, B 사이의 벡터의 변화에 기초하여 결정될 수 있다. 따라서, 가상 객체의 회전은 공통 좌표계에 대하여 제1 제어기 A 및 제2 제어기 B 각각의 회전에 의해 주로 정의될 수 있다. 제1 제어기 A 및 제2 제어기 B의 검출된 움직임에 기초하여 선택된 가상 객체(200)상에서 취해질 목표된 또는 의도된 액션을 결정할 때, 이러한 동작들은 개별적으로 (예를 들어, 순차적인 방식으로) 구현될 수 있고 그리고/또는 동시에 구현될 수 있다.
도 7에 도시된 바와 같이, 제1 제어기 A 및 제2 제어기 B와 같은 다수의 제어기들의 움직임에 대한 가상 객체(200)의 변환량은 제어기들 A, B의 위치의 평균 변화에 기초하여 결정될 수 있다. 도 7에 도시된 예에서, 제1 제어기 A 및 제2 제어기 B는 실질적으로 수직으로 배향되고 이동 개시 직전에 본질적으로 유사한 방향을 향한다. 화살표 A7에 의해 도시된 바와 같이 상향으로의 제1 제어기 A의 움직임 및 화살표 B7에 의해 도시된 바와 같이 상향으로의 제2 제어기 B의 움직임은, 가상 객체(200)의 대응하는 상향 이동 또는 상향 변환을 초래할 수 있다. 제1 제어기 A 및 제2 제어기 B의 상향 이동에 응답하여 가상 객체(200)의 상향 이동량은 제1 제어기 A의 상향 이동과 제2 제어기 B의 상향 이동의 평균에 기초할 수 있다. 제1 제어기 A 및 제2 제어기 B의 이동량은 움직임의 개시 직전에 제1 제어기 A 및 제2 제어기 B의 알려진 위치에 기초하여 결정되고 동적으로 갱신될 수 있고, 그리고 제1 제어기 A 및 제2 제어기 B의 6DOF 이동으로서 제1 제어기 A 및 제2 제어기 B의 알려진 위치가 전술한 바와 같이 추적된다.
도 8에 도시된 바와 같이, 제1 제어기 A 및 제2 제어기 B와 같은 다수의 제어기들의 이동에 대한 가상 객체(200)의 스케일링 양은 제어기들 A, B 간의 거리의 평균 변화에 기초하여 결정될 수 있다. 도 8에 도시된 예에서, 제1 제어기 A 및 제2 제어기 B는 실질적으로 수직으로 배향되고 이동 개시 직전에 본질적으로 유사한 방향을 향한다. 화살표 A8에 의해 도시된 바와 같이 제1 방향으로의 제1 제어기 A의 움직임 및 화살표 B8에 의해 도시된 바와 같이, 제1 방향과는 다른, 예를 들어, 제1 방향과는 반대인 제2 방향으로의 제2 제어기 B의 움직임은, 가상 객체(200)의 대응하는 스케일링, 예를 들어 균일 스케일링을 초래할 수 있다. 제1 방향에서의 제1 제어기 A의 움직임 및 제2 방향에서의 제2 제어기 B의 움직임에 대한 가상 객체(200)의 스케일링의 양은 제1 제어기 A와 제2 제어기 B 사이의 거리의 검출된 변화에 기초할 수 있다. 예를 들어, 제1 제어기 A 및 제2 제어기 B의 거리는 움직임의 개시 직전에 제1 제어기 A 및 제2 제어기 B의 알려진 위치에 기초하여 결정되고 동적으로 갱신될 수 있고, 그리고 제1 제어기 A 및 제2 제어기 B의 6DOF 이동으로서 제1 제어기 A 및 제2 제어기 B의 알려진 위치가 전술한 바와 같이 추적된다. 도 8에 도시된 예에서, 제1 제어기 A 및 제2 제어기 B는 실질적으로 반대 방향으로 배향된다; 하지만, 도 8와 관련하여 서술된 원리들은, 반드시 반대 방향이 아닌 상이한 방향들을 향하게 하는 제1 제어기 A 및 제2 제어기 B에 적용될 수 있다.
도 9에 도시된 바와 같이, 제1 제어기 A와 제2 제어기 B 사이의 벡터의 변화에 기초하여, 제1 제어기 A와 제2 제어기 B와 같은 다수의 제어기들의 움직임에 대한 가상 객체(200)의 회전량이 결정될 수 있다. 전술한 바와 같이, 가상 객체(200)의 목표된 또는 의도된 변환의 결정 및/또는 선택된 가상 객체(200)의 목표된 또는 의도된 스케일은, 제1 제어기 A의 검출된 움직임 및 제2 제어기 B의 검출된 움직임에 기초하여, 가상 환경에서의 상호 작용을 위한 제1 제어기 A 및 제2 제어기 B의 동작 동안 순차적인 시점들에서 이들 원리를 비교적 간단하게 적용할 수 있다. 그러나, 제1 제어기 A의 검출된 움직임 및 제2 제어기 B의 검출된 움직임에 기초하여 선택된 가상 객체(200)의 목표된 또는 의도된 회전 운동의 결정은 추가적인 과제들을 제기할 수 있다. 예를 들어, 일부 구현들에서, 제1 제어기 A의 검출된 움직임 및 제2 제어기 B의 검출된 움직임에 기초하여 선택된 가상 객체(200)의 목표 또는 의도된 회전 운동의 결정은 두 벡터들 사이의 이전 축과 현재 축을 기반으로 한 쿼터니언(quaternion)의 구현을 포함한다.
도 9에 도시된 예에서, 제1 제어기 A 및 제2 제어기 B는 실질적으로 수직으로 배향되고, 이동 개시 직전에 본질적으로 유사한 방향을 향한다. 화살표 A9로 도시된 바와 같은 제1 방향으로, 예를 들어, 상향으로의 제1 제어기 A의 움직임 및 화살표 B9로 도시된 바와 같은 제2 방향으로, 예를 들어, 하향으로의 제2 제어기 B의 움직임은 가상 오브젝트(200)가 시계 방향으로 회전하도록 할 수 있다. 제1 제어기 A 및 제2 제어기 B의 검출된 움직임에 기초한 가상 객체(200)의 회전량은, 제어기들 A, B의 이전 벡터 축 및 제어기들 A, B의 현재 벡터 축에 기초하여, 퀀터니온의 구현을 통해 결정될 수 있다. 각각의 제어기 A, B의 회전을 결과 축으로 제한함에 있어서, 알고리즘을 적용하여 이전의 퀀터니언으로부터 현재의 퀀터니언으로 조정 쿼터니온을 계산할 수 있다. 그 후, 조정 퀀터니언의 로그의 허수 부가 획득될 수 있어, 조정을 위한 회전 축을 산출할 수 있다. 새로운 조정은 이전 축과 조정 축 사이의 지수적 내적(exponential dot product)을 취함으로써 제한될 수 있다.
전술한 바와 같이, 제1 제어기 A의 검출된 움직임 및 제2 제어기 B의 검출 된 움직임에 기초하여 선택된 가상 객체(200)의 목표된 또는 의도된 회전 운동의 결정은, 두 벡터들 사이의 이전 축 및 현재 축을 기반으로 하여, 쿼터니온의 구현을 포함할 수 있으며, 제1 제어기 A 및 제2 제어기 B의 방향에 기초한 가상 객체의 회전은 각 제어기 A, B의 회전을 제한함으로써 달성된다. 각 제어기 A, B의 회전의 제약은 이전 쿼터니언에서 현재 쿼터니언으로 이동하는 조정 쿼터니언을 계산한 다음 조정 쿼터니언의 로그의 허수부를 얻음으로써 달성될 수 있고, 이는 조정을 위한 회전축을 정의한다. 그때, 시스템은 지정된 축과 조정축 사이의 지수 내적을 취하여 새 조정을 제한할 수 있다.
도 10a는 HMD(100)를 착용하고 그리고 한 손에는 제1 제어기 A 및 다른 한 손에는 제2 제어기 B를 유지하면서, HMD(100)에 의해 생성된 가상 환경을 경험하는, 물리적 공간에서 사용자의 제3 자의 시점이다. 도 10a에 도시된 예에서, HMD(100)를 착용하는 동안 가상 환경을 경험할 때 사용자가 볼 수 있는 가상 장면(400)의 일례는 논의 및 설명의 용이함을 위해 삽입도(inset)로 표현된다. 사용자는 수많은 상이한 방식들로 상호 작용 및/또는 조작 등을 위해 가상 장면(400)에 디스플레이 된 가상 객체들 중 하나를 선택하도록 선택할 수 있다. 도 10b에 도시된 예에서, 사용자는, 예를 들어, 제어기들 A, B 중 하나 또는 모두를 사용하여 가상의 스티어링 휠(420)과 가상 접촉시키고, 가상의 스티어링 휠(420)에서 제어기들 A, B 중 하나 또는 모두로부터 가상 빔을 향하게 함으로써 가상의 스티어링 휠(420)과 상호작용하도록 선택했다. 가상 객체, 이 예에서, 가상 스티어링 휠(420)이 사용자에 의해 선택되면, 사용자는 예를 들어 제1 제어기 A 및/또는 제2 제어기 B의 움직임, 또는 제어기들 A, B 중 하나 또는 모두 상의 조작 디바이스들의 작동을 통해 제1 제어기 A 및/또는 제2 제어기 B을 사용하여 가상 스티어링 휠(420)과 상호작용할 수 있다.
예를 들어, 도 3 및/또는 도 9에서 도시된 것처럼, 제1 제어기 A 및 제2 제어기 B의 움직임에 응답하여, 가상 스티어링 휠(420)은 도 10c에 도시된 바와 같이 시계 방향으로 회전될 수 있다. 가상 스티어링 휠(420)의 회전량은, 도 3 및 도 9와 관련하여 전술한 바와 같이, 제1 제어기 A의 검출된 움직임, 제2 제어기 B의 검출된 움직임, 및 제1 제어기 A 및 제2 제어기 B의 검출된 움직임의 공통 좌표계로의 분해능에 기초하여 결정될 수 있다. 가상 스티어링 휠(420)의 이러한 회전은 사용자가 착용한 HMD(100)의 디스플레이상에 사용자에게 디스플레이될 수 있다.
도 10a 내지 도 10c는 전술한 바와 같이 제1 제어기 A 및 제2 제어기 B의 회전 운동에 대한 가상 객체(420)의 회전의 단지 하나의 예를 도시한다. 가상 객체들의 변환 및 가상 객체들의 스케일링 외에도, 선택된 가상 객체들의 다수의 다른 움직임들은 검출된 움직임, 특히, 전술한 제1 제어기 A 및 제2 제어기 B와 같은 다수의 제어기들의 회전 운동에 응답하여 수행될 수 있다. 이러한 이동들은, 예를 들어, 축 X, Y 및/또는 Z 중 하나 이상에 대한 회전을 단독으로 또는 조합하여 포함할 수 있으며 변환 및 스케일링과 결합될 수 있다. 가상 객체의 이러한 이동들은, 제1 제어기 A 및/또는 제2 제어기 B의 대응하는 움직임들에 응답하여 순차적으로 및/또는 동시에 가상 환경에서 영향을 받을 수 있다.
전술한 바와 같이, 일부 구현들에서, 제1 제어기 A 및 제2 제어기 B의 위치 및 방위는 동적으로 추적될 수 있고, 그리고 제1 제어기 A 및 제2 제어기 B의 이동은 공통 좌표계로 동적으로 분해될 수 있어, 입력들이 가상 환경에서 동적으로 적용될 수 있다. 따라서, 제1 제어기 A 및 제2 제어기 B의 순차 이동들 및 이동들의 조합이 공통 좌표계로 동적으로 분해될 수 있다. 이로 인해 본질적으로 무한한 모션들의 수집이 감지되고 추적되며 일반 좌표계로 해석되고 가상 환경에서 입력들로 반영될 수 있다. 예를 들어, 이 시스템 및 방법은 사용자가 예를 들어 드로잉 도구 또는 드로잉, 페인팅(painting)을 위한 페인팅 도구를 선택할 수 있는 가상 환경에 적용될 수 있다.
예를 들어, 도 10d에서 도시된 것처럼, 증강된 및/또는 가상 현실 환경에서 드로잉 애플리케이션을 사용하는 사용자는, 트랙(450A)에 의해 도시된 바와 같이 다수의 연속적인 회전 및 변환 운동을 포함하는, 제1 제어기 A를 순차적인 움직임들의 조합으로 이동시킬 수 있어, HMD(100)에 의해 생성된 가상 환경에서 사용자에게 디스플레이되는 가상 패턴(460A)을 생성한다. 유사하게, 사용자는, 트랙(460B)에 의해 도시된 바와 같이 다수의 순차적인 회전 및 병환 이동을 포함하는 순차적인 움직임들의 조합으로 제2 제어기 B를 이동시킬 수 있어, HMD(100)에 의해 생성된 가상 환경에서 사용자에게 디스플레이되는 가상 패턴(460B)을 생성한다. 도 10d에 도시된 예에서, 단일 가상 객체가 제1 제어기 A 및 제2 제어기 B를 통해 사용자에 의한 상호 작용 및/또는 조작을 위해 특별히 선택되지 않았기 때문이다. 따라서, 이러한 상황에서, 제어기들 A, B의 각각의 개별 좌표계에 대해 검출된 움직임에 기초하여, 원하는 가상 효과를 생성하기 위해, 제어기들 A, B의 움직임이 전술한 바와 같이 추적될 수 있다.
도 11a 및 도 11b는 예를 들어 도 1 및 도 10a에서 사용자가 착용한 HMD (100)와 같은 예시적인 HMD의 사시도이다. 도 12는, 예를 들어, 제1 외부 디바이스(302A) 및 제2 외부 디바이스(302B)를 포함하는 다수의 상이한 제2 전자 디바이스들(302)과 통신하는 제1 전자 디바이스를 포함하는 증강 현실 및/또는 가상 현실 시스템의 블록도이다. 제1 전자 디바이스(300)는, 예를 들어, 증강된 그리고/또는 가상 현실 환경을 생성하는 HMD일 수 있으며, 그리고 제2 전자 디바이스들(302)은 제1 전자 디바이스(300)와 통신할 수 있으며, 전술한 기능들을 포함하도록 구비될 수 있다.
도 11a 및 도 11b에 도시된 바와 같이, 예시적인 HMD는 프레임(120)에 결합된 하우징(110)을 포함할 수 있고, 예를 들어, 헤드폰들에 장착된 스피커들을 포함하는 오디오 출력 디바이스(130)는 프레임(120)에 결합된다. 도 11b에 도시된 바와 같이, 하우징(110)의 전방 부(110a)는 하우징(110)의 베이스 부(110b)로부터 멀리 회전되어 하우징(110) 내에 수용된 컴포넌트들의 일부가 보이도록 한다. 디스플레이(140)는 하우징(110)의 전방 부(110a)의 내부 대면 측에 장착될 수 있다. 렌즈들(150)은, 전방 부(110a)가 하우징(110)의 베이스 부(110b)에 대해 폐쇄 위치에 있을 때 사용자의 눈과 디스플레이(140) 사이에 하우징(110)에 장착될 수 있다. 일부 구현들에서, HMD(100)는, 예를 들어, 오디오 센서(들), 이미지/광 센서(들), 위치 센서들(예를 들어, 자이로스코프 및 가속도계를 포함하는 관성 측정 유닛)와 같은 다양한 센서들을 포함하는 감지 시스템(160)을 포함할 수 있다. HMD(100)는 프로세서(190) 및 HMD(100)의 동작을 용이하게 하는 다양한 제어 시스템 디바이스들을 포함하는 제어 시스템(170)을 포함할 수도 있다.
일부 구현들에서, HMD(100)는 정지 및 동영상을 캡처하는 카메라(180)를 포함할 수 있다. 카메라(180)에 의해 캡처된 이미지들은 사용자 및/또는 제어기(102)의 물리적 위치를 추적하는 것을 돕기 위해 사용될 수 있고 그리고/또는 통과 모드에서 디스플레이(140)상의 사용자에게 디스플레이될 수 있다. 일부 구현들에서, HMD(100)는 사용자의 시선을 검출하고 추적하기 위해 하나 이상의 이미지 센서들(165A)을 포함하는 시선 추적 디바이스(165)를 포함할 수 있다. 일부 구현들에서, HMD(100)는, 검출된 시선이 증강 현실 및/또는 가상 현실 환경에서 상응하는 상호 작용으로 변환될 사용자 입력으로서 처리되도록 구성될 수 있다.
도 12에 도시된 바와 같이, 제1 전자 디바이스(300)는 도 10a 및 도 10b에 도시된 감지 시스템(160) 및 제어 시스템(170)과 각각 유사한 감지 시스템(360) 및 제어 시스템(370)을 포함할 수 있다. 감지 시스템(360)은, 예를 들어, 광 센서, 오디오 센서, 이미지 센서, 거리/근접 센서, 위치 센서 및/또는, 예를 들어, 사용자의 눈의 시선을 검출하고 추적하기 위해 위치된 이미지 센서를 포함하는 다른 센서들 및/또는 상이한 센서들의 조합(들)을 포함할 수 있다. 제어 시스템(370)은, 예를 들어, 전력/휴지 제어 디바이스, 오디오 및 비디오 제어 디바이스, 광학 제어 디바이스, 전이 제어 디바이스 및/또는 다른 그러한 디바이스들 및/또는 디바이스들의 상이한 조합들을 포함할 수 있다. 일부 구현들에서, 감지 시스템(360) 및/또는 제어 시스템(370)은 특정 구현들에 따라 더 많거나 적은 장치들을 포함할 수 있고 그리고 도시된 것과 같은 상이한 물리적 배열을 가질 수 있다. 제1 전자 디바이스(300)는 또한 감지 시스템(360) 및 제어 시스템(370)과 통신하는 프로세서(390), 메모리(380) 및 제1 전자 디바이스(300)와, 예를 들어, 제2 전자 디바이스(302)와 같은 다른 외부 디바이스 사이의 통신을 제공하는 통신 모듈(350)을 포함할 수 있다.
제2 전자 디바이스(302)(302A/302B)는 제2 전자 디바이스(302)와, 예를 들어 제1 전자 디바이스(300)와 같은 다른 디바이스 사이의 통신을 제공하는 통신 모듈(306)을 포함할 수 있다. 제2 전자 디바이스(302)는, 예를 들어, 카메라 및 마이크로폰에 포함되는 것과 같은 이미지 센서 및 오디오 센서, 관성 측정 유닛, 제어기 또는 스마트폰의 터치 감지 표면에 포함되는 것과 같은 터치 센서, 및 다른 그러한 센서들 및/또는 센서들의 상이한 조합들을 포함하는 감지 시스템(304)을 포함할 수 있다. 프로세서(309)는 감지 시스템(304) 및 제2 전자 디바이스들(302) 각각의 제어 유닛(305)과 통신할 수 있으며, 제어 유닛(305)은 메모리(308)에 액세스하고 제2 전자 디바이스들(302) 각각의 전체 동작을 제어한다.
여기에 서술된 구현들에 따라 증강된 및/또는 가상 현실 환경에서의 입력을 위해 다수의 제어기들의 회전 운동을 공통 좌표계로 분해하는 방법(900)이 도 13에 도시되어 있다.
가상 및/또는 증강 현실 경험을 개시한 후(블록 910), 제어기 이동, 예를 들어 HMD(100)에 의해 생성된 가상 환경에서 검출된 하나 이상의 6DOF 제어기들의 이동은 전술한 바와 같이 추적될 수 있다(블록 920). 전술한 바와 같은 복수의 제어기들, 예를 들면, 제1 제어기 A 및 제2 제어기 B가 가상 환경에서 검출되면, 도 2 내지 도 10c와 관련하여 상술한 것처럼 다수의 제어기들의 검출된 움직임은 동적으로 추적될 수 있고, 다수의 제어기의 검출된 움직임은 단일의 공통 좌표계로 분해된다(블록 940). 이어서, 대응하는 입력이, 공통 좌표계로 분해된 다중 제어기의 이동에 기초하여(블록 945) 또는 그 각각의 좌표계에 관한 단일 제어기의 검출된 이동에 기초하여(블록 950) 선택된 가상 객체에 적용될 수 있다. 프로세스는, 가상 경험이 종료될 때(블록 960)까지 계속될 수 있다.
도 14는, 여기에 서술된 기술들과 함께 사용될 수 있는 컴퓨팅 디바이스(1000) 및 모바일 컴퓨터 디바이스(1050)의 예를 도시한다. 컴퓨팅 디바이스(1000)는 프로세서(1002), 메모리(1004), 저장 디바이스(1006), 메모리(1004) 및 고속 확장 포트들(1010)에 연결된 고속 인터페이스(1008), 및 저속 버스(1014) 및 저장 디바이스(1006)에 연결된 저속 인터페이스(1012)를 포함한다. 컴포넌트들(1002, 1004, 1006, 1008, 1010 및 1012) 각각은 다양한 버스들을 사용하여 상호 접속되고, 그리고 공통 마더 보드 상에 또는 적절한 다른 방식으로 장착될 수 있다. 프로세서(1002)는, 고속 인터페이스(1008)에 연결된 디스플레이(1016)와 같은 외부 입력/출력 장치상의 GUI에 대한 그래픽 정보를 디스플레이하기 위해, 메모리(1004) 또는 저장 디바이스(1006)에 저장된 명령들을 포함하는 컴퓨팅 디바이스(1000) 내에서 실행하기 위한 명령들을 처리할 수 있다. 다른 구현들에서, 다수의 메모리들 및 다수의 유형들의 메모리와 함께, 적절하게, 다수의 프로세서들 및/또는 다수의 버스들이 사용될 수 있다. 또한, 각각의 디바이스가 (예를 들어, 서버 뱅크, 블레이드 서버들의 그룹 또는 멀티 프로세서 시스템으로서) 필요한 동작들의 일부를 제공하면서 다수의 컴퓨팅 디바이스들(1000)이 접속될 수 있다.
메모리(1004)는 컴퓨팅 디바이스(1000) 내의 정보를 저장한다. 일 구현에서, 메모리(1004)는 휘발성 메모리 유닛 또는 유닛들이다. 다른 구현에서, 메모리(1004)는 비-휘발성 메모리 유닛 또는 유닛들이다. 메모리(1004)는 또한 자기 또는 광학 디스크와 같은 컴퓨터 판독 가능 매체의 다른 형태일 수 있다.
저장 디바이스(1006)는 컴퓨팅 디바이스(1000)를 위한 대용량 저장 장치를 제공할 수 있다. 일 구현에서, 저장 디바이스(1006)는, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스와 같은 컴퓨터 판독 가능 매체일 수 있거나, 또는 스토리지 영역 네트워크의 디바이스들 또는 다른 구성들을 포함하는 디바이스들의 어레이를 포함할 수 있다. 컴퓨터 프로그램 제품은 정보 매체에서 확실하게 구현될 수 있다. 컴퓨터 프로그램 제품은, 또한, 실행될 때 상술한 바와 같은 하나 이상의 방법들을 수행하는 명령들을 포함할 수 있다. 정보 매체는, 메모리(1004), 저장 디바이스(1006) 또는 프로세서(1002)상의 메모리와 같은 컴퓨터 또는 기계 판독 가능 매체이다.
고속 제어기(1008)는 컴퓨팅 디바이스(1000)에 대한 대역폭 집중 동작들을 관리하는 반면, 저속 제어기(1012)는 낮은 대역폭 집중 동작들을 관리한다. 이러한 기능들의 할당은 단지 예시적인 것이다. 일 구현에서, 고속 제어기(1008)는 (예를 들어, 그래픽 프로세서 또는 가속기를 통해) 메모리(1004), 디스플레이(1016), 및 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는 고속 확장 포트들(1010)에 연결된다. 상기 구현에서, 저속 제어기(1012)는 저장 디바이스(1006) 및 저속 확장 포트(1014)에 연결된다. 다양한 통신 포트들(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트는, 예를 들어 네트워크 어댑터를 통해, 키보드, 포인팅 장치, 스캐너, 또는 스위치 또는 라우터와 같은 네트워킹 장치와 같은 하나 이상의 입력/출력 디바이스들에 연결될 수 있다.
컴퓨팅 디바이스(1000)는, 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예를 들어, 표준 서버(1020)로서 구현되거나, 또는 그러한 서버들의 그룹에서 여러 번 구현될 수 있다. 또한, 랙 서버 시스템(1024)의 일부로서 구현될 수도 있다. 또한, 랩탑 컴퓨터(1022)와 같은 퍼스널 컴퓨터에서 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(1000)로부터의 컴포넌트들은, 디바이스(1050)와 같은 모바일 디바이스(도시되지 않음)의 다른 컴포넌트들과 결합될 수 있다. 이러한 디바이스들 각각은 하나 이상의 컴퓨팅 디바이스(1000, 1050)를 포함할 수 있고, 그리고 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들(1000, 1050)로 구성될 수 있다.
컴퓨팅 디바이스(1050)는, 다른 컴포넌트들 중에서 프로세서(1052), 메모리(1064), 디스플레이(1054)와 같은 입력/출력 디바이스, 통신 인터페이스(1066) 및 송수신기(1068)를 포함한다. 디바이스(1050)는, 또한, 추가 저장 장치를 제공하기 위해 마이크로 드라이브 또는 다른 디바이스와 같은 저장 디바이스를 구비할 수 있다. 컴포넌트들(1050, 1052, 1064, 1054, 1066 및 1068) 각각은 다양한 버스들을 사용하여 상호 접속되며, 그리고 몇몇 컴포넌트들은 공통 마더 보드 상에 또는 적절하게 다른 방식으로 장착될 수 있다.
프로세서(1052)는, 메모리(1064)에 저장된 명령들을 포함하는 컴퓨팅 디바이스(1050) 내의 명령들을 실행할 수 있다. 프로세서는 개별 및 다중 아날로그 및 디지털 프로세서들을 포함하는 칩들의 칩셋으로서 구현될 수 있다. 프로세서는, 예를 들어, 사용자 인터페이스들의 제어, 디바이스(1050)에 의해 구동되는 애플리케이션들, 및 디바이스(1050)의 무선 통신과 같은 디바이스(1050)의 다른 컴포넌트들의 조정을 제공할 수 있다.
프로세서(1052)는, 디스플레이(1054)에 연결된 제어 인터페이스(1058) 및 디스플레이 인터페이스(1056)를 통해 사용자와 통신할 수 있다. 디스플레이(1054)는, 예를 들어, TFT LCD(박막 트랜지스터 액정 디스플레이) 또는 OLED(유기 발광 다이오드) 디스플레이, 또는 다른 적절한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(1056)는 사용자에게 그래픽 및 다른 정보를 제공하기 위해 디스플레이(1054)를 구동하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(1058)는 사용자로부터 명령들을 수신하고 그리고 프로세서(1052)에 명령들을 제공하기 위해 이들을 변환할 수 있다. 또한, 외부 인터페이스(1062)는 프로세서(1052)와 통신하여 제공되어, 디바이스(1050)의 다른 디바이스들과의 근거리 통신을 가능하게 한다. 외부 인터페이스(1062)는, 예를 들어, 일부 구현들에서 유선 통신용으로 또는 다른 구현들에서 무선 통신용으로 제공될 수 있으며, 다중 인터페이스가 또한 사용될 수 있다.
메모리(1064)는 컴퓨팅 디바이스(1050) 내의 정보를 저장한다. 메모리(1064)는 컴퓨터 판독 가능 매체, 휘발성 메모리 유닛(들) 또는 비-휘발성 메모리 유닛(들) 중 하나 이상으로서 구현될 수 있다. 확장 메모리(1074)는, 또한, 예를 들어 SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는 확장 인터페이스(1072)를 통해 디바이스(1050)에 제공되고 그리고 접속될 수 있다. 이러한 확장 메모리(1074)는 디바이스(1050)에 대한 여분의 저장 공간을 제공할 수 있거나 또는 디바이스(1050)에 대한 애플리케이션들 또는 다른 정보를 저장할 수 있다. 구체적으로, 확장 메모리(1074)는 전술한 프로세스를 수행하거나 보충하기 위한 명령들을 포함할 수 있으며, 또한 보안 정보를 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(1074)는 디바이스(1050)에 대한 보안 모듈로서 제공될 수 있고, 그리고 디바이스(1050)의 안전한 사용을 허용하는 명령들로 프로그래밍될 수 있다. 또한, 보안 애플리케이션들은, SIMM 카드상의 식별 정보를 해킹할 수 없게 배치하는 것 같이, 추가 정보와 함께 SIMM 카드를 통해 제공될 수 있다.
메모리는, 예를 들어, 후술되는 바와 같이, 플래시 메모리 및/또는 NVRAM 메모리를 포함할 수 있다. 일 실시예에서, 컴퓨터 프로그램 제품은 정보 매체에 명확하게 구체화된다. 컴퓨터 프로그램 제품은, 실행될 때, 위에 설명된 것과 같은 하나 이상의 방법들을 수행하는 명령어들을 포함한다. 정보 매체는, 예를 들어, 트랜시버(1068) 또는 외부 인터페이스(1062)를 통해 수신될 수 있는 메모리(1064), 확장 메모리(1074) 또는 프로세서(1052)상의 메모리와 같은 컴퓨터 판독 가능 매체 또는 기계 판독 가능 매체이다.
디바이스(1050)는, 필요에 따라 디지털 신호 처리 회로를 포함할 수 있는 통신 인터페이스(1066)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(1066)는, GSM 음성 호출, SMS, EMS 또는 MMS 메시징, CDMA, TDMA, PDC, WCDMA, CDMA2000 또는 GPRS와 같은 다양한 모드들 또는 프로토콜들 하에서 통신을 제공할 수 있다. 이러한 통신은, 예를 들어, 무선 주파수 송수신기(1068)를 통해 발생할 수 있다. 또한, 블루투스, WiFi 또는 다른 트랜시버(도시되지 않음)를 사용하는 것과 같은 단거리 통신이 발생할 수 있다. 또한, GPS(Global Positioning System) 수신기 모듈(1070)은, 디바이스(1050) 상에서 실행되는 애플리케이션들에 의해 적절하게 사용될 수 있는 추가적인 네비게이션 및 위치 관련 무선 데이터를 디바이스(1050)에 제공할 수 있다.
디바이스(1050)는, 또한, 사용자로부터 음성 정보를 수신하여 그것을 이용 가능한 디지털 정보로 변환할 수 있는 오디오 코덱(1060)을 사용하여 청각적으로 통신할 수 있다. 오디오 코덱(1060)은, 마찬가지로, 예를 들어, 디바이스(1050)의 핸드셋에서의 스피커를 통하는 것과 같이, 사용자를 위한 가청 사운드를 생성할 수 있다. 이러한 사운드는 음성 전화 호출로부터의 사운드를 포함할 수 있고, 녹음된 사운드 (예를 들어, 음성 메시지, 음악 파일 등)를 포함할 수 있으며, 또한, 디바이스(1050) 상에서 동작하는 애플리케이션들에 의해 생성된 사운드를 포함할 수 있다.
컴퓨팅 디바이스(1050)는, 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스(1050)는, 셀룰러 전화기(1080)로서 구현될 수 있다. 컴퓨팅 디바이스(1050)는, 또한, 스마트 폰(1082), PDA 또는 다른 유사한 모바일 디바이스의 일부로서 구현될 수 있다.
여기에 서술된 시스템들 및 서술들의 다양한 구현들은, 디지털 전자 회로, 집적 회로, 특수 설계된 ASIC(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은, 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템상에서 실행 가능하고 그리고/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있으며, 상기 적어도 하나의 프로그램 가능 프로세서는, 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고, 그리고 데이터 및 명령들을 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스에 전송하도록 결합된 특수용 또는 범용 프로세서일 수 있다.
이러한 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드라고도 함)은 프로그래밍가능한 프로세서용 기계 명령들을 포함하고 그리고 하이-레벨 프로시저 및/또는 객체 지향 프로그래밍 언어, 및/또는 어셈블리/기계 언어로 구현될 수 있다. 여기에서 사용되는, "기계 판독가능 매체", "컴퓨터 판독가능 매체"라는 용어들은, 기계 판독가능한 신호로서 기계 명령들을 수신하는 기계 판독가능한 매체를 포함하여, 프로그램 가능 프로세서에 기계 명령들 및/또는 데이터를 제공하는데 사용되는, 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예를 들어, 자기 디스크들, 광 디스크들, 메모리, PLD(Programmable Logic Device)들)를 언급한다. "기계 판독가능 신호"라는 용어는 기계 명령어들 및/또는 데이터를 프로그램 가능 프로세서에 제공하기 위해 사용되는 임의의 신호를 언급한다.
사용자와의 상호 작용을 제공하기 위해, 여기에 서술된 시스템들 및 기술들은, 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스(예를 들어, CRT (cathode ray tube) 또는 LCD(liquid crystal display) 모니터), 및 키보드 및 사용자가 입력을 컴퓨터에 제공할 수 있는 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)를 갖는 컴퓨터 상에 구현될 수 있다. 다른 종류의 디바이스들은 사용자와의 상호 작용을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백(예를 들어, 시각적 피드백, 청각 피드백 또는 촉각 피드백)일 수 있고 그리고 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
여기에 서술된 시스템들 및 기술들은 백엔드 컴포넌트(예 : 데이터 서버)를 포함하거나 또는 미들웨어 컴포넌트(예 : 애플리케이션 서버)를 포함하거나 또는 프론트엔드 컴포넌트(예를 들어, 사용자가 여기에 서술된 시스템 및 기술들의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터) 또는 이러한 백 엔드, 미들웨어 또는 프론트 엔드 컴포넌트의 임의의 조합을 포함할 수 있다. 시스템의 컴포넌트는 임의의 형태 또는 매체의 디지털 데이터 통신(예를 들어, 통신 네트워크)에 의해 상호접속될 수 있다. 통신 네트워크의 예들은 근거리 통신망("LAN"), 광역 통신망("WAN") 및 인터넷을 포함한다.
컴퓨팅 시스템에는 클라이언트와 서버가 포함될 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다.
일부 구현들에서, 도 10에 도시된 컴퓨팅 디바이스들은, 가상 현실과 인터페이스하는 센서(VR 헤드셋/HMD 디바이스(1090))를 포함할 수 있다. 예를 들어, 도 10에 도시된 컴퓨팅 디바이스(1050) 또는 다른 컴퓨팅 디바이스에 포함된 하나 이상의 센서들은, VR 헤드셋(1090)에 입력을 제공하거나 일반적으로 VR 공간에 입력을 제공할 수 있다. 센서들은, 터치 스크린, 가속도계들, 자이로스코프들, 압력 센서들, 생체 센서들, 온도 센서들, 습도 센서들 및 주변 광 센서들 포함할 수 있지만 이에 국한되지 않는다. 컴퓨팅 디바이스(1050)는 VR 공간으로의 입력으로서 사용될 수 있는 VR 공간 내의 컴퓨팅 디바이스의 절대 위치 및/또는 검출된 회전을 결정하기 위해 센서들을 사용할 수 있다. 예를 들어, 컴퓨팅 디바이스(1050)는 제어기, 레이저 포인터, 키보드, 무기 등과 같은 가상 객체로서 VR 공간에 통합될 수 있다. VR 공간에 통합될 때 사용자에 의한 컴퓨팅 디바이스/가상 객체의 위치 결정은 사용자로 하여금 VR 공간의 특정 방식으로 가상 객체를 보기 위해 컴퓨팅 장치를 위치시키는 것을 허용할 수 있다. 예를 들어, 가상 객체가 레이저 포인터를 나타내는 경우, 사용자는 실제 레이저 포인터인 것처럼 컴퓨팅 장치를 조작할 수 있다. 사용자는 컴퓨팅 디바이스를 좌우, 위, 아래, 원 등으로 움직일 수 있으며 레이저 포인터를 사용하는 것과 유사한 방식으로 디바이스를 사용할 수 있다.
일부 구현들에서, 컴퓨팅 디바이스(1050) 상에 포함되거나 컴퓨팅 디바이스(1050)에 접속되는 하나 이상의 입력 디바이스들은 VR 공간에 대한 입력으로서 사용될 수 있다. 상기 입력 장치는, 터치 스크린, 키보드, 하나 이상의 버튼, 트랙 패드, 터치 패드, 포인팅 장치, 마우스, 트랙볼, 조이스틱, 카메라, 마이크로폰, 입력 기능을 갖는 이어폰 또는 버드, 게임 제어기, 또는 다른 접속 가능한 것 입력 장치를 포함할 수 있지만, 이에 제한되지 않는다. 컴퓨팅 디바이스가 VR 공간에 통합될 때 컴퓨팅 디바이스(1050)에 포함된 입력 장치와 상호 작용하는 사용자는 특정 동작을 VR 공간에서 발생시킬 수 있다.
일부 구현들에서, 컴퓨팅 디바이스(1050)의 터치 스크린은 VR 공간에서 터치 패드로서 렌더링될 수 있다. 사용자는 컴퓨팅 디바이스(1050)의 터치 스크린과 상호 작용할 수 있다. 상호 작용은 예를 들어 VR 헤드셋(1090)에서 VR 공간에서 렌더링된 터치 패드상의 움직임으로서 렌더링된다. 렌더링된 동작은 VR 공간에서 가상 객체를 제어할 수 있다.
일부 구현들에서, 컴퓨팅 디바이스(1050)에 포함된 하나 이상의 출력 디바이스들은 VR 공간에서 VR 헤드셋(1090)의 사용자에게 출력 및/또는 피드백을 제공할 수 있다. 출력 및 피드백은 시각적, 촉각적 또는 청각적일 수 있다. 출력 및/또는 피드백은 진동, 하나 이상의 조명 또는 스트로브의 켜기 및 끄기 또는 깜박임, 알람 울리기, 차임 연주, 노래 연주 및 오디오 파일 재생을 포함할 수 있다. 출력 디바이스는 진동 모터, 진동 코일, 압전 장치, 정전기 장치, 발광 다이오드(LED), 스트로브 및 스피커를 포함할 수 있지만 이에 국한되지는 않는다.
일부 구현들에서, 컴퓨팅 디바이스(1050)는 컴퓨터로 생성된 3D 환경에서 다른 객체로 나타날 수 있다. 사용자에 의한 컴퓨팅 디바이스(1050)와의 상호 작용(예를 들어, 회전, 흔들림, 터치 스크린 접촉, 터치 스크린을 가로지르는 손가락)은 VR 공간에서 객체와의 상호 작용으로서 해석될 수 있다. VR 공간 내의 레이저 포인터의 예에서, 컴퓨팅 디바이스(1050)는 컴퓨터로 생성된 3D 환경에서 가상 레이저 포인터로서 나타난다. 사용자가 컴퓨팅 디바이스(1050)를 조작함에 따라, VR 공간 내의 사용자는 레이저 포인터의 움직임을 보게된다. 사용자는 컴퓨팅 디바이스(1050) 상의 VR 환경 내의 또는 VR 헤드셋(1090) 상의 컴퓨팅 디바이스(1050)와의 상호 작용으로부터 피드백을 수신한다.
일부 구현들에서, 컴퓨팅 디바이스(1050)는 터치 스크린을 포함할 수 있다. 예를 들어, 사용자는 터치 스크린에서 일어나는 일과 VR 공간에서 일어나는 일을 모방할 수 있는 특정 방식으로 터치 스크린과 상호 작용할 수 있다. 예를 들어, 사용자는 터치 스크린에 표시된 콘텐츠를 확대하기 위해 핀칭 타입 동작을 사용할 수 있다. 터치 스크린에서 핀칭-타입 움직임은 VR 공간에 제공된 정보가 확대되도록 할 수 있다. 다른 예에서, 컴퓨팅 디바이스는 컴퓨터로 생성된 3D 환경에서 가상 책으로 렌더링될 수 있다. VR 공간에서 책의 페이지들은 VR 공간에 디스플레이될 수 있으며 터치 스크린을 통해 사용자의 손가락을 스와이프하는 것은 가상 책의 페이지를 넘기거나 뒤집는 것으로 해석될 수 있다. 각 페이지가 넘기거나/뒤집힘에 따라, 페이지 내용이 변경되는 것을 볼 수 있을 뿐만 아니라, 책에 페이지를 넘기는 소리와 같은 오디오 피드백이 사용자에게 제공될 수 있다.
일부 구현들에서, 컴퓨팅 디바이스(예를 들어, 마우스, 키보드) 이외에 하나 이상의 입력 디바이스들이 컴퓨터로 생성된 3D 환경에서 렌더링될 수 있다. 렌더링 된 입력 디바이스(예를 들어, 렌더링된 마우스, 렌더링된 키보드)는 VR 공간에서 렌더링 된 대로 사용되어 VR 공간에서 객체들을 제어할 수 있습니다.
컴퓨팅 디바이스(1000)는 랩탑, 데스크탑, 워크 스테이션, 개인 휴대 정보 단말기, 서버, 블레이드 서버, 메인 프레임, 및 다른 적절한 컴퓨터를 포함하지만 이에 제한되지 않는 다양한 형태의 디지털 컴퓨터 및 장치를 나타내기 위한 것이다. 컴퓨팅 디바이스(1050)는 개인 휴대 정보 단말기, 셀룰러 전화기, 스마트 폰 및 다른 유사한 컴퓨팅 장치와 같은 다양한 형태의 모바일 장치를 나타내기 위한 것이다. 여기에 나타낸 구성 요소, 이들의 접속 및 관계, 및 그 기능은 단지 예시적인 것으로 의도되며, 본 명세서에 기재된 그리고/또는 청구된 본 발명의 구현을 제한하지 않는다.
다수의 실시예들이 설명되었다. 그럼에도 불구하고, 본 명세서의 사상과 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있음을 이해할 것이다.
또한, 도면들에 도시된 논리 흐름들은 바람직한 결과를 달성하기 위해 도시 된 특정 순서 또는 순차 순서를 요구하지 않는다. 또한, 서술된 흐름들로부터 다른 단계들이 제공되거나 단계들이 제거될 수 있으며, 서술된 시스템들에 다른 컴포넌트들이 추가되거나 제거될 수 있다. 따라서, 다른 실시예들은 다음의 청구항들의 범위 내에 있다.
서술된 구현들의 특정 피처들이 본 명세서에 서술된 바와 같이 도시되었지만, 많은 수정, 대체, 변경 및 균등물이 이제 당업자에게 발생할 것이다. 그러므로, 첨부된 청구 범위는 구현의 범위 내에 있는 그러한 모든 수정 및 변경을 포함하도록 의도된 것으로 이해되어야 한다. 이들 실시예는 제한적인 것이 아닌 예일 뿐이며, 형태 및 세부 사항의 다양한 변경이 이루어질 수 있음을 알아야 한다. 여기서 서술된 장치 및/또는 방법의 임의의 부분은 상호 배타적인 조합을 제외하고는 임의의 조합으로 결합될 수 있다. 본 명세서에서 서술된 구현예들은 기재된 다른 구현 예들의 기능, 구성 요소 및/또는 피처들의 다양한 조합 및/또는 서브 조합을 포함할 수 있다.

Claims (20)

  1. 방법으로서,
    3차원(3D) 가상 환경을 생성하는 단계와;
    물리적 환경에서 제1 제어기의 6DOF(six-degree-of-freedom) 위치 및 방위를 추적하는 단계와;
    상기 물리적 환경에서 제2 제어기의 6DOF 위치 및 방위를 추적하는 단계와;
    상기 가상 환경에 디스플레이된 가상 객체의 선택을 검출하는 단계와;
    제1 좌표계에 대한 상기 물리적 환경에서의 제1 제어기의 검출된 움직임 및 제2 좌표계에 대한 상기 물리적 환경에서의 상기 제2 제어기의 검출된 움직임에 기초하여 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계와;
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계와; 그리고
    상기 명령 이동에 응답하여 상기 선택된 가상 객체를 조작하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계는:
    상기 공통 좌표계의 제1 축을 정의하는 단계 - 상기 제1 축은 상기 제1 제어기의 중심부로부터 상기 제2 제어기의 중심부까지 연장하고 - 와;
    상기 공통 좌표계의 제2 축을 정의하는 단계 - 상기 제2 축은 상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 하나로부터 선택되며 - 와; 그리고
    상기 공통 좌표계의 제3 축을 정의하는 단계를 포함하고,
    상기 제3 축은 상기 제1 축과 상기 제2 축의 외적(cross product)인 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 공통 좌표계의 제2 축을 정의하는 단계는,
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 어느 것이 상기 제1 축과 가장 직교 하는지를 결정하는 단계와; 그리고
    상기 X 축, Y 축 또는 Z 축의 가장 직각을 상기 공통 좌표계의 제2 축으로 설정하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 제1 축을 정의하는 단계는,
    상기 제1 제어기 및 상기 제2 제어기가 상기 물리적 환경에서 그리고 상기 물리적 환경에 대응하여 상기 가상 환경에 대해 이동함에 따라, 순차적인 시점들에서 상기 제1 축을 동적으로 재정의하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 제2 축을 정의하는 단계는,
    상기 제1 제어기 및 상기 제2 제어기가 상기 물리적 환경에서 그리고 상기 물리적 환경에 대응하여 상기 가상 환경에 대해 이동함에 따라, 그리고 상기 제1 축이 동적으로 재정의됨에 따라, 순차적인 시점들에서 상기 제2 축을 동적으로 재정의하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 제3 축을 정의하는 단계는,
    상기 제1 제어기 및 상기 제2 제어기가 상기 물리적 환경에서 그리고 상기 물리적 환경에 대응하여 상기 가상 환경에 대해 이동함에 따라, 그리고 상기 제1 축 및 제2 축이 동적으로 재정의됨에 따라, 순차적인 시점들에서 상기 제3 축을 동적으로 재정의하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제2항에 있어서,
    상기 제1 좌표계에 대한 상기 물리적 환경에서의 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 물리적 환경에서의 상기 제2 제어기의 검출된 움직임에 기초하여 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계는:
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 적어도 하나를 중심으로 상기 제1 제어기의 회전 이동을 검출하는 단계; 또는
    상기 제2 좌표계의 X 축, Y 축 또는 Z 축 중 적어도 하나를 중심으로 상기 제2 제어기의 회전 이동을 검출하는 단계 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  8. 제7항에 있어서,
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계는:
    상기 제1 제어기의 검출된 회전 이동 또는 상기 제2 제어기의 검출된 회전 이동 중 적어도 하나에 기초하여 상기 공통 좌표계에 대한 회전 명령 이동을 결정하는 단계; 및
    상기 선택된 가상 객체의 조작에 상기 회전 명령 이동을 적용하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제2항에 있어서,
    상기 제1 좌표계에 대한 상기 물리적 환경에서의 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 물리적 환경에서의 상기 제2 제어기의 검출된 움직임에 기초하여 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계는:
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 적어도 하나에 대해, 그리고 상기 제2 제어기의 위치에 대해 상기 제1 제어기의 움직임을 검출하는 단계; 또는
    상기 제2 좌표계의 X 축, Y 축 또는 Z 축 중 적어도 하나에 대해, 그리고 상기 제1 제어기의 위치에 대해 상기 제2 제어기의 움직임을 검출하는 단계 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계는:
    상기 제1 제어기의 검출된 움직임 또는 상기 제2 제어기의 검출된 움직임 중 적어도 하나에 기초하여 상기 공통 좌표계에 대한 선택된 이동 방향 및 선택된 이동량을 결정하는 단계; 및
    상기 선택된 이동 방향으로의 상기 선택된 이동량을 상기 선택된 가상 객체의 조작에 적용하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 제1항에 있어서,
    상기 3D 가상 환경을 생성하는 단계는 HMD 디바이스의 디스플레이상에 상기 가상 환경을 디스플레이하는 단계를 포함하고, 상기 제1 제어기 및 제2 제어기는 상기 HMD와 작동 가능하게 결합되는 핸드헬드 제어기들이고, 상기 물리적 환경에서의 제1 제어기 및 제2 제어기의 물리적 움직임은 상기 가상 환경에 디스플레이된 선택된 가상 객체에 대해 실행될 사용자 명령들에 대응하는 것을 특징으로 하는 방법.
  12. 방법으로서,
    가상 환경에 디스플레이된 가상 객체의 선택을 검출하는 단계와;
    제1 좌표계에 대한 제1 제어기의 검출된 움직임 및 제2 좌표계에 대한 제2 제어기의 검출된 움직임에 응답하여 상기 가상 환경에 디스플레이된 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계 - 상기 제1 제어기 및 상기 제2 제어기는 물리적 환경에서 동작하며 - 와;
    상기 제1 제어기의 검출된 움직임 및 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계와; 그리고
    상기 명령 이동에 응답하여 상기 가상 환경에서 상기 선택된 가상 객체를 회전시키는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 제12항에 있어서,
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계는:
    상기 공통 좌표계의 제1 축을 정의하는 단계 - 상기 제1 축은 상기 제1 제어기의 중심부로부터 상기 제2 제어기의 중심부까지 연장하고 - 와;
    상기 공통 좌표계의 제2 축을 정의하는 단계 - 상기 제2 축을 정의하는 단계는:
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 어느 것이 상기 제1 축에 가장 직교하는지를 결정하는 단계; 및
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 가장 직교하는 좌표를 상기 공통 좌표계의 제2 축으로서 설정하는 단계를 포함하고,
    상기 공통 좌표계의 제3 축을 정의하는 단계를 포함하고,
    상기 제3 축은 상기 제1 축과 상기 제2 축의 외적인 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    상기 제1 축을 정의하는 단계는, 상기 제1 제어기 및 상기 제2 제어기가 상기 물리적 환경에서 그리고 상기 물리적 환경에 대응하여 상기 가상 환경에 대해 이동함에 따라, 순차적인 시점들에서 상기 제1 축을 동적으로 재정의하는 단계를 포함하고,
    상기 제2 축을 정의하는 단계는, 상기 제1 제어기 및 상기 제2 제어기가 상기 물리적 환경에서 그리고 상기 물리적 환경에 대응하여 상기 가상 환경에 대해 이동함에 따라, 그리고 상기 제1 축이 동적으로 재정의됨에 따라, 순차적인 시점들에서 상기 제2 축을 동적으로 재정의하는 단계를 포함하고,
    상기 제3 축을 정의하는 단계는, 상기 제1 제어기 및 상기 제2 제어기가 상기 물리적 환경에서 그리고 상기 물리적 환경에 대응하여 상기 가상 환경에 대해 이동함에 따라, 그리고 상기 제1 축 및 제2 축이 동적으로 재정의됨에 따라, 순차적인 시점들에서 상기 제3 축을 동적으로 재정의하는 단계를 포함하는 것을 특징으로 하는 방법.
  15. 제13항에 있어서,
    상기 제1 좌표계에 대한 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 제2 제어기의 검출된 움직임에 응답하여 상기 가상 환경에 디스플레이된 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계는:
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 적어도 하나를 중심으로 상기 제1 제어기의 회전 이동을 검출하는 단계; 또는
    상기 제2 좌표계의 X 축, Y 축 또는 Z 축 중 적어도 하나를 중심으로 상기 제2 제어기의 회전 이동을 검출하는 단계 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  16. 제15항에 있어서,
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계는:
    상기 제1 제어기의 검출된 회전 이동 또는 상기 제2 제어기의 검출된 회전 이동 중 적어도 하나에 기초하여 상기 공통 좌표계에 대한 회전 명령 이동을 결정하는 단계; 및
    상기 선택된 가상 객체의 조작에 상기 회전 명령 이동을 적용하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 제12항에 있어서,
    상기 물리적 환경에서 상기 제1 제어기의 6DOF 위치 및 방위를 추적하는 단계와;
    상기 물리적 환경에서 제2 제어기의 6DOF 위치 및 방위를 추적하는 단계와;
    상기 제1 제어기의 상기 6DOF 추적에 기초하여 상기 제1 제어기의 움직임을 검출하는 단계와; 그리고
    상기 제2 제어기의 상기 6DOF 추적에 기초하여 상기 제2 제어기의 움직임을 검출하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 비 일시적인 컴퓨터 판독 가능 매체상에 구현된 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 판독 가능 매체는 프로세서에 의해 실행될 때 상기 프로세서로 하여금 방법을 실행하게 하는 일련의 명령들을 저장하고, 상기 방법은:
    3차원(3D) 가상 환경을 생성하는 단계와;
    물리적 환경에서 제1 제어기의 6DOF 위치 및 방위를 추적하는 단계와;
    상기 물리적 환경에서 제2 제어기의 6DOF 위치 및 방위를 추적하는 단계와;
    상기 가상 환경에 디스플레이된 가상 객체의 선택을 검출하는 단계와;
    제1 좌표계에 대한 상기 물리적 환경에서의 제1 제어기의 검출된 움직임 및 제2 좌표계에 대한 상기 물리적 환경에서의 상기 제2 제어기의 검출된 움직임에 기초하여 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계와;
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계와; 그리고
    상기 명령 이동에 응답하여 상기 선택된 가상 객체를 조작하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  19. 제18항에 있어서,
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계는:
    상기 공통 좌표계의 제1 축을 정의하는 단계 - 상기 제1 축은 상기 제1 제어기의 중심부로부터 상기 제2 제어기의 중심부까지 연장하고 - 와;
    상기 공통 좌표계의 제2 축을 정의하는 단계 - 상기 제2 축을 정의하는 단계는:
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 어느 것이 상기 제1 축에 가장 직교하는지를 결정하는 단계; 및
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 가장 직교하는 좌표를 상기 공통 좌표계의 제2 축으로서 설정하는 단계를 포함하고,
    상기 공통 좌표계의 제3 축을 정의하는 단계를 포함하고,
    상기 제3 축은 상기 제1 축과 상기 제2 축의 외적인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  20. 제19항에 있어서,
    상기 제1 좌표계에 대한 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 제2 제어기의 검출된 움직임에 응답하여 상기 가상 환경에 디스플레이된 상기 선택된 가상 객체에 대해 목표된 입력을 검출하는 단계는:
    상기 제1 좌표계의 X 축, Y 축 또는 Z 축 중 적어도 하나를 중심으로 상기 제1 제어기의 회전 이동을 검출하는 단계; 또는
    상기 제2 좌표계의 X 축, Y 축 또는 Z 축 중 적어도 하나를 중심으로 상기 제2 제어기의 회전 이동을 검출하는 단계 중 적어도 하나를 포함하고,
    상기 제1 좌표계에 대한 상기 제1 제어기의 검출된 움직임 및 상기 제2 좌표계에 대한 상기 제2 제어기의 검출된 움직임을 공통 좌표계에 대한 명령 이동으로 분해하는 단계는:
    상기 제1 제어기의 검출된 회전 이동 또는 상기 제2 제어기의 검출된 회전 이동 중 적어도 하나에 기초하여 상기 공통 좌표계에 대한 회전 명령 이동을 결정하는 단계; 및
    상기 선택된 가상 객체의 조작에 상기 회전 명령 이동을 적용하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1020197005419A 2016-08-23 2017-08-18 증강된 그리고/또는 가상의 현실 환경에서 6 자유도 제어기들을 이용한 가상 객체들의 조작 KR102245245B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662378370P 2016-08-23 2016-08-23
US62/378,370 2016-08-23
US15/679,597 US10642344B2 (en) 2016-08-23 2017-08-17 Manipulating virtual objects with six degree-of-freedom controllers in an augmented and/or virtual reality environment
US15/679,597 2017-08-17
PCT/US2017/047600 WO2018039069A1 (en) 2016-08-23 2017-08-18 Manipulating virtual objects with six degree-of-freedom controllers in an augmented and/or virtual reality environment

Publications (2)

Publication Number Publication Date
KR20190031551A true KR20190031551A (ko) 2019-03-26
KR102245245B1 KR102245245B1 (ko) 2021-04-27

Family

ID=60662035

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197005419A KR102245245B1 (ko) 2016-08-23 2017-08-18 증강된 그리고/또는 가상의 현실 환경에서 6 자유도 제어기들을 이용한 가상 객체들의 조작

Country Status (7)

Country Link
US (1) US10642344B2 (ko)
EP (1) EP3504608B1 (ko)
JP (1) JP6820405B2 (ko)
KR (1) KR102245245B1 (ko)
CN (1) CN109643159B (ko)
DE (1) DE202017104928U1 (ko)
WO (1) WO2018039069A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102164371B1 (ko) * 2019-11-29 2020-10-12 주식회사 아이브이알시스템즈 가상정비훈련을 위한 가상객체와의 상호작용 구현 방법
US11550430B2 (en) 2019-01-18 2023-01-10 Sony Group Corporation Information processing apparatus, information processing method, and recording medium

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198874B2 (en) 2016-05-13 2019-02-05 Google Llc Methods and apparatus to align components in virtual reality environments
US10345925B2 (en) * 2016-08-03 2019-07-09 Google Llc Methods and systems for determining positional data for three-dimensional interactions inside virtual reality environments
US10664993B1 (en) * 2017-03-13 2020-05-26 Occipital, Inc. System for determining a pose of an object
US10429949B2 (en) * 2017-06-30 2019-10-01 Htc Corporation User interaction apparatus and method
CN112513711B (zh) * 2018-07-23 2023-03-07 奇跃公司 用于使用位置向量解析半球模糊度的方法和系统
US10692299B2 (en) 2018-07-31 2020-06-23 Splunk Inc. Precise manipulation of virtual object position in an extended reality environment
US10909772B2 (en) * 2018-07-31 2021-02-02 Splunk Inc. Precise scaling of virtual objects in an extended reality environment
US11726320B2 (en) * 2018-08-29 2023-08-15 Sony Corporation Information processing apparatus, information processing method, and program
CN113196212A (zh) * 2018-10-17 2021-07-30 美达威公司 作为用于交互的物理接口的移动平台
US11853533B1 (en) * 2019-01-31 2023-12-26 Splunk Inc. Data visualization workspace in an extended reality environment
US11644940B1 (en) 2019-01-31 2023-05-09 Splunk Inc. Data visualization in an extended reality environment
US10922892B1 (en) * 2019-04-30 2021-02-16 Splunk Inc. Manipulation of virtual object position within a plane of an extended reality environment
US20200356765A1 (en) * 2019-05-08 2020-11-12 Ssam Sports, Inc. Solving magnetic interference in inertial sensors
US10928975B2 (en) * 2019-07-17 2021-02-23 Microsoft Technology Licensing, Llc On-the-fly adjustment of orientation of virtual objects
KR102570009B1 (ko) * 2019-07-31 2023-08-23 삼성전자주식회사 Ar 객체 생성 방법 및 전자 장치
US11054923B2 (en) * 2019-10-11 2021-07-06 Finch Technologies Ltd. Automatic switching between different modes of tracking user motions to control computer applications
CN110992757A (zh) * 2019-11-29 2020-04-10 北方工业大学 基于vr与人工智能的高危化学实验室防火安全培训方法
US11989841B2 (en) 2020-02-19 2024-05-21 Fanuc Corporation Operation system for industrial machinery
KR20230006857A (ko) * 2020-04-22 2023-01-11 위딘 언리미티드, 인크. 가상 및 증강 현실의 개인화되고 커스터마이즈된 피트니스 훈련 활동 또는 게임, 방법들, 디바이스들, 및 시스템들
US11448884B2 (en) * 2020-11-25 2022-09-20 Sony Interactive Entertainment Inc. Image based finger tracking plus controller tracking
CN113181619A (zh) * 2021-04-09 2021-07-30 青岛小鸟看看科技有限公司 一种运动训练方法、装置和系统
CN113457157A (zh) * 2021-06-30 2021-10-01 网易(杭州)网络有限公司 游戏中虚拟道具的切换方法、装置以及触控终端
CN114003126A (zh) * 2021-09-26 2022-02-01 歌尔光学科技有限公司 虚拟现实设备的交互控制方法、装置及设备
WO2024020061A1 (en) * 2022-07-18 2024-01-25 Apple Inc. Devices, methods, and graphical user interfaces for providing inputs in three-dimensional environments

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010238015A (ja) * 2009-03-31 2010-10-21 Sega Corp 入力装置及びプログラム
JP2011183205A (ja) * 2011-06-17 2011-09-22 Nintendo Co Ltd ゲームシステムおよびゲームプログラム
JP2015232783A (ja) * 2014-06-09 2015-12-24 株式会社バンダイナムコエンターテインメント プログラムおよび画像生成装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6184867B1 (en) 1997-11-30 2001-02-06 International Business Machines Corporation Input for three dimensional navigation using two joysticks
US7219033B2 (en) 2005-02-15 2007-05-15 Magneto Inertial Sensing Technology, Inc. Single/multiple axes six degrees of freedom (6 DOF) inertial motion capture system with initial orientation determination capability
US8384665B1 (en) * 2006-07-14 2013-02-26 Ailive, Inc. Method and system for making a selection in 3D virtual environment
US9405372B2 (en) * 2006-07-14 2016-08-02 Ailive, Inc. Self-contained inertial navigation system for interactive control using movable controllers
EP2076830A4 (en) 2006-10-27 2013-07-17 Nokia Corp METHOD AND DEVICE FOR ENABLING MOVEMENT WITHIN A THREE-DIMENSIONAL GRAPHIC USER INTERFACE
WO2008083205A2 (en) * 2006-12-29 2008-07-10 Gesturetek, Inc. Manipulation of virtual objects using enhanced interactive system
JP5730463B2 (ja) * 2008-07-11 2015-06-10 任天堂株式会社 ゲームプログラムおよびゲーム装置
EP2348383B1 (en) 2009-12-31 2017-07-12 Sony Computer Entertainment Europe Limited System and method of virtual interaction
CN102918476B (zh) * 2010-02-05 2017-03-08 索尼电脑娱乐公司 用于利用位置、方向或动作与计算程序相接口的控制器
GB2501929B (en) * 2012-05-11 2015-06-24 Sony Comp Entertainment Europe Apparatus and method for augmented reality
US9041622B2 (en) * 2012-06-12 2015-05-26 Microsoft Technology Licensing, Llc Controlling a virtual object with a real controller device
US20140168261A1 (en) * 2012-12-13 2014-06-19 Jeffrey N. Margolis Direct interaction system mixed reality environments
US9443354B2 (en) * 2013-04-29 2016-09-13 Microsoft Technology Licensing, Llc Mixed reality interactions
US10579207B2 (en) * 2014-05-14 2020-03-03 Purdue Research Foundation Manipulating virtual environment using non-instrumented physical object
US9741169B1 (en) * 2014-05-20 2017-08-22 Leap Motion, Inc. Wearable augmented reality devices with object detection and tracking
US9911235B2 (en) * 2014-11-14 2018-03-06 Qualcomm Incorporated Spatial interaction in augmented reality
US9696795B2 (en) * 2015-02-13 2017-07-04 Leap Motion, Inc. Systems and methods of creating a realistic grab experience in virtual reality/augmented reality environments
US10317989B2 (en) * 2016-03-13 2019-06-11 Logitech Europe S.A. Transition between virtual and augmented reality
US9983697B1 (en) * 2016-05-18 2018-05-29 Meta Company System and method for facilitating virtual interactions with a three-dimensional virtual environment in response to sensor input into a control device having sensors
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
US10078377B2 (en) * 2016-06-09 2018-09-18 Microsoft Technology Licensing, Llc Six DOF mixed reality input by fusing inertial handheld controller with hand tracking
US10146335B2 (en) * 2016-06-09 2018-12-04 Microsoft Technology Licensing, Llc Modular extension of inertial controller for six DOF mixed reality input

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010238015A (ja) * 2009-03-31 2010-10-21 Sega Corp 入力装置及びプログラム
JP2011183205A (ja) * 2011-06-17 2011-09-22 Nintendo Co Ltd ゲームシステムおよびゲームプログラム
JP2015232783A (ja) * 2014-06-09 2015-12-24 株式会社バンダイナムコエンターテインメント プログラムおよび画像生成装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550430B2 (en) 2019-01-18 2023-01-10 Sony Group Corporation Information processing apparatus, information processing method, and recording medium
KR102164371B1 (ko) * 2019-11-29 2020-10-12 주식회사 아이브이알시스템즈 가상정비훈련을 위한 가상객체와의 상호작용 구현 방법

Also Published As

Publication number Publication date
EP3504608B1 (en) 2021-10-06
CN109643159B (zh) 2022-08-02
JP6820405B2 (ja) 2021-01-27
JP2019532396A (ja) 2019-11-07
WO2018039069A1 (en) 2018-03-01
US20180059777A1 (en) 2018-03-01
EP3504608A1 (en) 2019-07-03
US10642344B2 (en) 2020-05-05
CN109643159A (zh) 2019-04-16
KR102245245B1 (ko) 2021-04-27
DE202017104928U1 (de) 2017-11-24

Similar Documents

Publication Publication Date Title
KR102245245B1 (ko) 증강된 그리고/또는 가상의 현실 환경에서 6 자유도 제어기들을 이용한 가상 객체들의 조작
US11181986B2 (en) Context-sensitive hand interaction
KR102038638B1 (ko) 가상 현실에서 핸드 헬드 디바이스를 트랙킹하는 시스템
EP3314371B1 (en) System for tracking a handheld device in an augmented and/or virtual reality environment
JP6633256B1 (ja) 拡張現実および/または仮想現実環境におけるジェスチャーによる仮想注記面の生成
US10509487B2 (en) Combining gyromouse input and touch input for navigation in an augmented and/or virtual reality environment
CN109074149B (zh) 用于增强或虚拟现实环境的头戴式参考系中的对象跟踪
JP6535819B2 (ja) 仮想現実環境におけるナビゲーション用制御システム
US10359863B2 (en) Dragging virtual elements of an augmented and/or virtual reality environment
KR102338835B1 (ko) 증강 및/또는 가상 현실 환경에서의 세션 종료 검출
CN111373349B (zh) 用于在增强现实环境中导航的方法、设备及存储介质
US20220397958A1 (en) Slippage resistant gaze tracking user interfaces

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant