JP6820405B2 - 拡張および/または仮想現実環境における6自由度コントローラを用いた仮想オブジェクトの操作 - Google Patents

拡張および/または仮想現実環境における6自由度コントローラを用いた仮想オブジェクトの操作 Download PDF

Info

Publication number
JP6820405B2
JP6820405B2 JP2019510942A JP2019510942A JP6820405B2 JP 6820405 B2 JP6820405 B2 JP 6820405B2 JP 2019510942 A JP2019510942 A JP 2019510942A JP 2019510942 A JP2019510942 A JP 2019510942A JP 6820405 B2 JP6820405 B2 JP 6820405B2
Authority
JP
Japan
Prior art keywords
controller
axis
coordinate system
movement
respect
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019510942A
Other languages
English (en)
Other versions
JP2019532396A (ja
Inventor
コバヤシ,トニー
デュ・ボワ,ポール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2019532396A publication Critical patent/JP2019532396A/ja
Application granted granted Critical
Publication of JP6820405B2 publication Critical patent/JP6820405B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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)

Description

関連出願の相互参照
本願は、2016年8月23日に出願された米国仮出願第62/378,389号に基づく優先権を主張する2017年8月17日に出願された米国出願第15/679,597号の継続出願であり、それに基づく優先権を主張し、その開示全体を本明細書に引用により援用する。
本願は、2016年8月23日に出願された米国仮出願第62/378,389号に基づく優先権を主張し、その開示全体を本明細書に引用により援用する。
分野
本文書は概して、拡張現実およびまたは仮想現実環境における入力の処理に関する。
背景
拡張現実(augmented reality:AR)および/または仮想現実(virtual reality:VR)システムは、3次元(3D)没入型環境を生成することができる。ユーザは、この拡張および/または仮想現実環境を、さまざまな電子装置との対話を通して体験することができる。これらの電子装置は、たとえば、ディスプレイを含むヘルメットまたはその他のヘッドマウントデバイス、ユーザがディスプレイ装置を見るときに用いる眼鏡またはゴーグル、センサを含む外部ハンドヘルドデバイス、センサが装着された手袋、およびその他のこのような電子装置などである。拡張および/または仮想現実環境に没入すると、ユーザは仮想環境において、仮想環境の中の仮想の物体、要素、特徴などと、仮想環境の中の仮想の物体を選択および/または操作するためのさまざまな方法で対話することができる。たとえば、ユーザは、1つ以上の外部電子装置の操作、物理的な動きおよび/またはジェスチャ、頭部の方向および/または目の注視などを通して仮想環境で所望の効果を生成して、仮想環境と対話し、仮想環境を個人専用にし、仮想環境を制御することができる。
要約
ある局面において、方法は、3次元(3D)仮想環境を生成することと、物理環境での第1のコントローラの6自由度(6DOF)の位置および向きを追跡することと、物理環境での第2のコントローラの6DOFの位置および向きを追跡することと、仮想環境で表示される仮想オブジェクトの選択を検出することと、物理環境で検出された第1の座標系に対する第1のコントローラの動き、および物理環境で検出された第2の座標系に対する第2のコントローラの動きに基づいて、選択された仮想オブジェクトについて目標とされた入力を検出することと、検出された第1の座標系に対する第1のコントローラの動き、および検出された第2の座標系に対する第2のコントローラの動きを、共通の座標系に対するコマンドの動きに変換することと、コマンドの動きに応じて、選択された仮想オブジェクトを操作することとを含み得る。
別の局面において、方法は、仮想環境で表示される仮想オブジェクトの選択を検出することと、検出された第1の座標系に対する第1のコントローラの動き、および検出された第2の座標系に対する第2のコントローラの動きに応じて、仮想環境で表示される選択された仮想オブジェクトについて目標とされた入力を検出することとを含み得、第1のコントローラおよび第2のコントローラは物理環境で動作し、方法はさらに、検出された第1のコントローラの動き、および検出された第2のコントローラの動きを、共通の座標系に対するコマンドの動きに変換することと、コマンドの動きに応じて、選択された仮想オブジェクトを仮想環境で回転させることとを含み得る。
別の局面において、コンピュータプログラムプロダクトが非一時的なコンピュータ可読媒体上に具体化され得、コンピュータ可読媒体上に一連の命令が格納されている。命令はプロセッサによって実行されるとプロセッサに方法を実行させ得、方法は、3次元(3D)仮想環境を生成することと、物理環境での第1のコントローラの6自由度(6DOF)の位置および向きを追跡することと、物理環境での第2のコントローラの6DOFの位置および向きを追跡することと、仮想環境で表示される仮想オブジェクトの選択を検出することと、物理環境で検出された第1の座標系に対する第1のコントローラの動き、および物理環境で検出された第2の座標系に対する第2のコントローラの動きに基づいて、選択された仮想オブジェクトについて目標とされた入力を検出することと、検出された第1の座標系に対する第1のコントローラの動き、および検出された第2の座標系に対する第2のコントローラの動きを、共通の座標系に対するコマンドの動きに変換することと、コマンドの動きに応じて、選択された仮想オブジェクトを操作することとを含む。
1つ以上の実装例の詳細を添付の図面および以下の説明に記載する。その他の特徴は、明細書および図面から、ならびに特許請求の範囲から明らかであろう。
本明細書に記載の実装例に従う、ヘッドマウントディスプレイ(HMD)デバイスおよびハンドヘルド電子装置を含む仮想現実システムの例示的な実装例の図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実環境で動作する複数の6自由度(6DOF)コントローラのそれぞれの座標系を示す図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実環境での複数の6DOFコントローラの例示的な動きおよび仮想オブジェクトの対応する動きを示す図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実環境での複数の6DOFコントローラの例示的な動きおよび仮想オブジェクトに対応する動きを示す図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実環境での複数の6DOFコントローラの例示的な動きおよび仮想オブジェクトに対応する動きを示す図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実環境での複数の6DOFコントローラの例示的な動きおよび仮想オブジェクトに対応する動きを示す図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実環境での複数の6DOFコントローラの例示的な動きおよび仮想オブジェクトに対応する動きを示す図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実環境での複数の6DOFコントローラの例示的な動きおよび仮想オブジェクトに対応する動きを示す図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実環境での複数の6DOFコントローラの例示的な動きおよび仮想オブジェクトに対応する動きを示す図である。 本明細書に記載の実装例に従う、拡張現実および/または仮想現実環境での選択された仮想オブジェクトの操作時の複数の6DOFコントローラの使用の例示的な実装を示す図である。 本明細書に記載の実装例に従う、拡張現実および/または仮想現実環境での選択された仮想オブジェクトの操作時の複数の6DOFコントローラの使用の例示的な実装を示す図である。 本明細書に記載の実装例に従う、拡張現実および/または仮想現実環境での選択された仮想オブジェクトの操作時の複数の6DOFコントローラの使用の例示的な実装を示す図である。 本明細書に記載の実装例に従う、拡張現実および/または仮想現実環境での選択された仮想オブジェクトの操作時の複数の6DOFコントローラの使用の例示的な実装を示す図である。 本明細書に記載の実装例に従う、例示的なHMDの斜視図である。 本明細書に記載の実装例に従う、例示的なHMDの斜視図である。 本明細書に記載の実装例に従う、拡張および/または仮想現実システムのブロック図である。 本明細書に記載の実装例に従う方法のフローチャートの図である。 本明細書に記載の技法を実現するために使用され得るコンピュータデバイスおよびモバイルコンピュータデバイスの例を示す図である。
詳細な説明
たとえばヘッドマウントディスプレイ(head mounted display:HMD)デバイスを装着し仮想環境に没入しているユーザは、仮想環境を探検することができ、多種多様な入力を通して仮想環境の中の仮想の物体、要素、特徴などと対話することができる。これらの入力は、たとえば、HMDとは別の電子装置の操作および/もしくはHMD自体の操作、ならびに/または目の注視の方向、ならびに/または頭部の動きならびに/または手/腕のジェスチャなどを含み得る。ユーザは、HMDに作動的に結合されたまたはHMDとペアリングされた1つ以上のハンドヘルド電子装置、またはコントローラを操作して、仮想環境で所望の行動を生じさせることができる。ユーザは、たとえば、コントローラのタッチ面へのタッチ入力、コントローラ上の入力ボタンおよび/またはスイッチの操作、コントローラ自体の物理的な動きなどの多種多様な方法でコントローラを操作して、仮想環境で実行されることになる入力を提供することができる。たとえば、ある実装例では、コントローラを操作して、仮想環境でユーザに表示される仮想コンテンツの視覚サイズおよび/または外観および/または位置を調整することができる。この能力によって、ユーザ入力を提供する際の柔軟性および利便性が提供され得、ユーザの仮想体験が向上し得る。
本明細書に記載の実装例に従うシステムおよび方法では、仮想現実環境でユーザ入力を提供する複数のコントローラの動き、および特に複数のコントローラの回転が単一の座標系に変換されて、特定の仮想オブジェクトに対して意図された実装が判断され得る。
以下、単に説明および図示を簡単にするために、拡張および/または仮想現実環境での対話に用いられることになる1つ以上のハンドヘルド電子装置をコントローラと称することにする。しかし、本明細書に記載の原理は、拡張および/または仮想現実環境での対話のためにユーザに提示される仮想の物体、仮想の特徴などと対話するために用いられ得るその他の種類の外部電子装置にも適用され得る。
図1に示す例示的な実装例では、HMD100を装着しているユーザが、第1の携帯型ハンドヘルド電子装置A、または第1のコントローラAを片手に持ち、第2の携帯型ハンドヘルド電子装置B、または第2のコントローラBをもう片方の手に持っている。コントローラA、Bの一方または両方は、たとえば、ジャイロマウス、スマートフォン、特定のシステムと動作するように構成されたコントローラ、または、HMD100が生成する没入型仮想環境での対話のためにHMD100とペアリングされ得るかもしくはHMD100と通信し得るその他の種類のコントローラであってもよい。ある実装例では、コントローラA、Bの6DOFの位置および向きが、コントローラA、Bに含まれるさまざまなセンサに基づいて追跡され得る。これらのセンサは、たとえば、加速度計、ジャイロスコープ、ジャイロスコープ内の磁気計などを含むたとえば慣性測定装置、またはこの態様で適合されたスマートフォンを含み得る。ある実装例では、コントローラA、Bの6DOFの位置および向きは、システム内のその他のセンサが検出したそれぞれのコントローラA、Bの位置に基づいて追跡され得る。これら他のセンサは、たとえばHMD100上に含まれる画像センサを、コントローラA、Bに含まれる方向付けセンサとともに含み得る。コントローラA、Bは、たとえば、有線接続、たとえばwifiもしくはBluetooth(登録商標)接続などの無線接続などを介してHMD100に作動的に結合されるかまたはHMD100とペアリングされて、コントローラA、BとHMD200との間のデータ交換および通信を提供し得る。HMDとコントローラA、Bとの間のこの接続によって、ユーザは、コントローラA、Bの一方または両方の操作を通して、HMD200が生成した仮想環境で対話することができる。すなわち、コントローラA、Bの一方または両方の操作、たとえば、コントローラA、Bのタッチ面上に受信した物理的な動きおよび/もしくは入力、または仮想環境で仮想オブジェクトに向けてユーザが方向付けるコントローラA、Bが発する仮想の光線もしくはビームが、仮想環境での対応する対話または動きに変換され得る。
上述のように、ある実装例では、コントローラA、Bの一方または両方が、ジャイロマウスのような能力を備えていてもよく、たとえば、仮想環境で仮想オブジェクトを選択し、操作し、かつその他の態様で仮想オブジェクトと対話するように、自由空間で動作可能であってもよい。ジャイロマウス能力を含む1つ以上のコントローラA、Bを用いることによって、システムが動作している3次元(3D)空間、または実世界環境での6DOFの場所(位置および向き)の比較的正確な追跡が本質的に可能となり得る。
たとえば、コントローラA、Bは、コントローラA、Bの角運動を示す信号を生成するジャイロスコープを含み得る。検出されたコントローラA、Bの角運動は、仮想環境での方向性運動に変換され得る。ある実装例では、コントローラA、Bは、コントローラA、Bの加速度、たとえば、ジャイロスコープが生成する方向性信号に対応する方向における加速度を示す信号を生成する加速度計も含み得る。ある実装例では、コントローラA、Bは、検出された磁場の強度および/または方向に基づいて実世界環境でのコントローラA、Bの相対位置を示す信号を生成する磁気計も含み得る。検出された実世界環境でのコントローラA、Bの3次元の位置は、ジャイロスコープおよび/または加速度計および/または磁気計によって提供されるコントローラA、Bに関連する向き情報とともに、コントローラA、Bの各々の6DOFの追跡を提供し得る。これによって、コントローラA、Bのユーザ操作を、仮想環境での目標とされたもしくは意図された対話に、および/または仮想環境での選択された仮想オブジェクトに向けられることになる行動に変換することができる。
ある実装例では、コントローラA、Bの一方または両方は、多種多様なユーザ入力を受信するように構成された操作装置を含み得る。たとえば、ある実装例では、コントローラA、Bは、たとえば、タッチ入力、タッチおよびドラッグ入力、ピンチおよびズーム入力などを受信するように構成されたタッチ面を含み得る。コントローラA、Bは、たとえば、ユーザ入力を受信するように構成された1つ以上のボタン、1つ以上のトグルスイッチ、1つ以上のジョイスティックなどのその他の操作装置も含み得る。
このように装備されたコントローラA、Bは、仮想環境での対応する対話に変換されることになるユーザ入力を多種多様な入力モードで受信し得る。これらのユーザ入力モードは、たとえば、コントローラA、Bに含まれるセンサが検出して追跡する位置、向きおよび方向性運動に基づくコントローラA、Bの物理的な動きまたはジェスチャを含み得る。これらのユーザ入力モードは、コントローラA、Bのタッチ面上に検出されるタッチ入力(タッチおよびドラッグ、ピンチおよびズームなどを含む)、コントローラA、Bの操作装置の1つで受信される選択、ならびにその他のこのような入力も含み得る。ある実装例では、コントローラA、Bは、これらのユーザ入力モードの組合せを含むユーザコマンド、またはこれらのユーザ入力の一連の適用を受信し得る。
たとえば上述のような第1のコントローラAおよび第2のコントローラBなどの複数の6DOFコントローラを用いて仮想環境で対話する場合、2つの6DOFコントローラを用いて仮想オブジェクトを変換し、一様にスケール変更し、回転させる方法によって、ユーザは、第1のコントローラAを片手に持ち、第2のコントローラBをもう片方の手に持った状態で、自然に仮想オブジェクトと対話することができる。本明細書に記載の実装例に従うシステムおよび方法では、単一の、一貫した、共通の座標系が、同一の仮想環境(および同一の実世界環境)で動作する複数の6DOFコントローラについて定義され得る。コントローラの各々は、それぞれの座標系内で独立して動く。
上述のように、上述の第1および第2のコントローラA、Bなどの仮想現実6DOFコントローラは、位置および向き情報を提供し得る。仮想環境での対話のためにユーザによって動作される単一のコントローラを操作して、仮想環境での仮想オブジェクトの位置および向きを直接制御することができる。同様に、たとえば上述の第1および第2のコントローラA、Bなどの複数のコントローラからの位置および向き情報を用いて、図7に示すように、たとえば第1および第2のコントローラA、Bの平均位置に基づいて、仮想環境での仮想オブジェクトの位置を制御することができる。同様に、上述の第1および第2のコントローラA、Bなどの複数のコントローラからの位置および向き情報を用いて、図8に示すように、たとえば第1および第2のコントローラA、Bの既知の開始位置と、第1および第2のコントローラA、Bの検出された位置変化とに基づいて、仮想オブジェクトのスケールを制御することができる。本明細書に記載の実装例に従うシステムおよび方法では、上述の第1および第2のコントローラA、Bなどの複数のコントローラからの位置および向き情報を用いて、図9に示すように、仮想オブジェクトの回転を制御することができる。
たとえば、複数のコントローラA、Bを用いる動作中に、第1および第2のコントローラA、Bの回転運動に応じて、仮想環境での仮想オブジェクトの向きを判断して制御することは、付加的な難題をもたらし得るか、または過度に制約された課題をもたらし得る。すなわち、第1のコントローラAの位置および動きは、仮想オブジェクトについての第1の目標とされたまたは意図された向きを意味し得、第2のコントローラBの位置および動きは、第1のコントローラAが意味する第1の目標とされたまたは意図された向きとは異なる、仮想オブジェクトについての第2の目標とされたまたは意図された向きを意味し得る。ある実装例では、2つの別個のコントローラA、Bがその中でそれぞれ動作する2つの別個の座標系が、単一の共通の座標系に変換され得る。アルゴリズムが、第1のコントローラAの位置および動き、特に回転と、第2のコントローラBの位置および動き、特に回転とを、この共通の座標系に変換し得る。アルゴリズムによって提供されるこの変換によって、たとえば選択された仮想オブジェクトの向きの変化に影響を及ぼす、第1および第2のコントローラA、Bの動きによって目標とされたまたは意図された入力が判断され得る。
この共通の座標系では、共通の座標系の第1の軸1は、同じ時点における第1のコントローラAの位置と第2のコントローラBの位置との間に延びるベクトルによって定義され得る。たとえば、図2に示すように、第1の軸1は、第1のコントローラAの予め規定された中央部A1と第2のコントローラBの予め規定された中央部B1との間に延びるベクトルによって定義され得る。
共通の座標系の第2の軸2は、同じ時点における第1のコントローラAの方向と第2のコントローラBの方向との平均によって定義され得る。アルゴリズムは、中心座標系が可能な限り安定し続け得るように、この方向を、連続した時点において、第1の軸1に最も直交するコントローラA、Bの動きの方向であると動的に選択し得る。たとえば、第2の軸2は、第1のコントローラAのX軸、またはY軸、またはZ軸のうちのどれが第1の軸1に最も直交しているかに応じて、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および第2のコントローラA、Bならびに第1の軸1の相対位置に基づいて、アルゴリズムは、Y軸またはZ軸の一方が第1の軸1に最も直交することになるため、Y軸またはZ軸のいずれか一方を第2の軸2として選択することになる。
共通の座標系の第3の軸3は、第1の軸1と第2の軸2との外積であり得る。すなわち、第3の軸3は、第1の軸1が表わすベクトルと第2の軸2が表わすベクトルとの外積である第3のベクトルを表わし得る。
図3は、ユーザが第1のコントローラAおよび第2のコントローラBを動かして仮想オブジェクトを回転させ得る、たとえば、仮想の自動車のハンドル、仮想のダイアルなどの仮想オブジェクトを時計回りにまたは反時計回りに回転させ得る例を示す。第1および第2のコントローラAおよびBの動き、ならびに結果として生じる仮想オブジェクトの回転は、たとえばユーザが装着しているHMD100のディスプレイ上に表示され得る。図3に示す例では、第1のコントローラAおよび第2のコントローラBは実質的に垂直に方向付けられており、動きの開始直前に本質的に同様の方向に向いている。矢印A3によって示すような第1のコントローラAの上方向の動き、および矢印B3によって示すような第2のコントローラBの下方向の動きによって、仮想オブジェクトの時計回りの回転が生じ得る。仮想オブジェクトの回転量は、上述のようにアルゴリズムによって第1および第2のコントローラA、Bの動きを共通の座標系に変換することによって求められ得る。
図4は、ユーザが第1のコントローラAおよび第2のコントローラBを動かして、仮想オブジェクトを、たとえば直立の、実質的に垂直の位置から、うつぶせのまたは実質的に水平の位置に回転させ得る例を示す。図4に示す例では、第1のコントローラAおよび第2のコントローラBは実質的に垂直に方向付けられており、動きの開始直前に本質的に同様の方向に向いている。矢印A4によって示すような第1のコントローラAのX軸の周りの回転運動、および矢印B4によって示すような第2のコントローラBのX軸の周りの回転運動によって、仮想オブジェクトの対応する回転運動が生じ得る。仮想オブジェクトの回転量は、上述のようにアルゴリズムによって第1および第2のコントローラA、Bの回転運動を共通の座標系に変換することによって求められ得る。
図5は、第1のコントローラAおよび第2のコントローラBが回転運動の開始前に異なる方向に向けられている例を示す。図5に示す例では、第1のコントローラAは第1の方向に(すなわち図5の右側に)向けられており、第2のコントローラBは第2の方向に(すなわち図5の左側に)向けられている。この例では、第1および第2のコントローラは実質的に反対方向に向けられているが、説明される原理は、必ずしも正反対方向とは限らない異なる方向に向いているコントローラA、Bに適用され得る。コントローラA、Bのいずれの向きの方向も変えずに、矢印A5に示すように第1のコントローラAが上方向に動き、矢印B5に示すように第2のコントローラBが下方向に動くと、仮想オブジェクトの反転するような動きが生じ得る。仮想オブジェクトの反転する動き量は、上述のようにアルゴリズムによって第1および第2のコントローラA、Bの回転運動を共通の座標系に変換することによって求められ得る。
図6は、第1および第2のコントローラA、Bを用いる対話のために仮想オブジェクト200がユーザによって選択される例を示す。この例では、動きの開始前に、第1のコントローラAは第1の方向に向けられており、第2のコントローラBは第2の方向に向けられている。矢印A6によって示すような第1のコントローラAの時計回りの回転運動、および矢印B6によって示すような第2のコントローラBの時計回りの回転運動によって、仮想オブジェクト200の回転運動が生じ得る。第1および第2のコントローラA、Bの回転に応じた仮想オブジェクト200の回転運動量は、上述のようにアルゴリズムによって第1および第2のコントローラA、Bのそれぞれの座標系内の検出された回転運動を共通の座標系に変換することによって求められ得る。
すなわち、第1のコントローラAおよび第2のコントローラBについて共通の座標系を確立する際、共通の座標系の第1の軸1は、第1のコントローラAの中央部A1と第2のコントローラBの中央部B1との間に延びる線によって定義され得る。そして、第1のコントローラAおよび第2のコントローラBの各々が独立して動くと、第2の軸がアルゴリズムによって動的に割当てられ得る。アルゴリズムは、中心座標系が可能な限り安定し続け得るように、第2の軸の方向を、連続した時点において、第1の軸に最も直交するコントローラA、Bの動きの方向と対応するように動的に選択し得る。図6に示す例では、表わされる時点における第2の軸2は、たとえば第1のコントローラAのZ軸であり得る。共通の座標系の第3の軸は、各時点について、第1の軸1と第2の軸2との外積であり得る。
第1のコントローラAおよび第2のコントローラBの各々が独立して動くかまたは回転すると、コントローラA、Bの動きがシステムによって動的に検出されて追跡され得る。動的に検出されたコントローラA、Bの動きは、各時点において共通の座標系に対する単一の動きに変換され得、その単一の動きが、選択された仮想オブジェクト200に適用され得る。選択された仮想オブジェクト200の動きは、ユーザが装着しているHMD100のディスプレイ上でユーザに表示され得る。
上述のように、ある実装例では、第1のコントローラAおよび第2のコントローラBがその中でそれぞれ動作する2つの別個の座標系が、第1および第2のコントローラA、Bの動作を動的に平均するアルゴリズムによって単一の共通の座標系に変換され得る。たとえば、検出された第1および第2のコントローラA、Bの動きに基づいて仮想オブジェクト200に適用される平行移動量は、コントローラA、Bの平均の位置変化に基づいて求められ得る。同様に、検出された第1および第2のコントローラA、Bの動きに基づいて仮想オブジェクト200に適用されるスケール変更は、コントローラA、B間の距離変化に基づいて求められ得る。検出された第1および第2のコントローラA、Bの動きに基づいて仮想オブジェクト200に適用される回転入力は、コントローラA、B間のベクトル変化に基づいて求められ得る。したがって、仮想オブジェクトの回転は、共通の座標系に対する第1および第2のコントローラA、Bの各々の回転によって主に規定され得る。検出された第1および第2のコントローラA、Bの動きに基づいて選択された仮想オブジェクト200に対して取るべき目標とされたまたは意図された行動を判断する際、これらの行動は個別に(たとえば連続して)実現されてもよく、および/または同時に実現されてもよい。
図7に示すように、第1および第2のコントローラA、Bなどの複数のコントローラの動きに応じた仮想オブジェクト200の平行移動量は、コントローラA、Bの平均の位置変化に基づいて求められ得る。図7に示す例では、第1のコントローラAおよび第2のコントローラBは実質的に垂直に方向付けられており、動きの開始直前に本質的に同様の方向に向いている。矢印A7によって示すような第1のコントローラAの上方向の動き、および矢印B7によって示すような第2のコントローラBの上方向の動きによって、仮想オブジェクト200の対応する上方向の動き、または上向きの平行移動が生じ得る。第1および第2のコントローラA、Bの上方向の動きに応じた仮想オブジェクト200の上方向の動き量は、第1のコントローラAの上方向の動きと第2のコントローラBの上方向の動きとの平均に基づき得る。第1および第2のコントローラA、Bの動き量は、動きの開始直前の第1のコントローラAおよび第2のコントローラBの既知の位置に基づいて求められて動的に更新され得、第1および第2のコントローラA、Bの6DOFの動きとしての第1のコントローラAおよび第2のコントローラBの既知の位置が上述のように追跡される。
図8に示すように、第1および第2のコントローラA、Bなどの複数のコントローラの動きに応じた仮想オブジェクト200のスケーリング量は、コントローラA、B間の平均の距離変化に基づいて求められ得る。図8に示す例では、第1のコントローラAおよび第2のコントローラBは実質的に垂直に方向付けられており、動きの開始直前に本質的に同様の方向に向いている。矢印A8によって示すような第1のコントローラAの第1の方向の動き、および矢印B8によって示すような第2のコントローラBの第1の方向とは異なる、たとえば第1の方向と反対の第2の方向の動きによって、仮想オブジェクト200の対応するスケーリング、たとえば均一のスケーリングが生じ得る。第1のコントローラAの第1の方向の動きおよび第2のコントローラBの第2の方向の動きに応じた仮想オブジェクト200のスケーリング量は、検出された第1および第2のコントローラA、B間の距離変化に基づき得る。たとえば、第1および第2のコントローラA、B間の距離は、動きの開始直前の第1のコントローラAおよび第2のコントローラBの既知の位置に基づいて求められて動的に更新され得、第1および第2のコントローラA、Bの6DOFの動きとしての第1のコントローラAおよび第2のコントローラBの既知の位置が上述のように追跡される。図8に示す例では、第1および第2のコントローラA、Bは実質的に反対方向に向けられているが、図8に関して説明される原理は、必ずしも正反対方向とは限らない異なる方向に向いている第1および第2のコントローラA、Bに適用され得る。
図9に示すように、第1および第2のコントローラA、Bなどの複数のコントローラの動きに応じた仮想オブジェクト200の回転量は、第1のコントローラAと第2のコントローラBとの間のベクトル変化に基づいて求められ得る。上述のように、検出された第1のコントローラAの動きおよび検出された第2のコントローラBの動きに基づく、仮想オブジェクト200の目標とされたもしくは意図された平行移動の判断、および/または選択された仮想オブジェクト200の目標とされたもしくは意図されたスケールの判断は、仮想環境での対話のための第1および第2のコントローラA、Bの動作時の連続した時点におけるこれらの原理の比較的直接的な適用であり得る。しかし、検出された第1のコントローラAの動きおよび検出された第2のコントローラBの動きに基づく、選択された仮想オブジェクト200の目標とされたまたは意図された回転運動の判断は、付加的な難題をもたらし得る。たとえば、ある実装例では、検出された第1のコントローラAの動きおよび検出された第2のコントローラBの動きに基づく、選択された仮想オブジェクト200の目標とされたまたは意図された回転運動の判断は、2つのベクトル同士の間の以前の軸および現在の軸に基づく四元数の実行を含み得る。
図9に示す例では、第1のコントローラAおよび第2のコントローラBは実質的に垂直に方向付けられており、動きの開始直前に本質的に同様の方向に向いている。矢印A9によって示すような第1のコントローラAの第1の方向、たとえば上方向の動き、および矢印B9によって示すような第2のコントローラBの第2の方向、たとえば下方向の動きによって、仮想オブジェクト200が時計回りに回転し得る。検出された第1および第2のコントローラA、Bの動きに基づく仮想オブジェクト200の回転量は、コントローラA、Bの以前のベクトル軸およびコントローラA、Bの現在のベクトル軸に基づく四元数の実行を通して求められ得る。各コントローラA、Bの回転を、結果として得られる軸に制約する際、アルゴリズムを適用して、以前の四元数から現在の四元数への調整四元数が計算され得る。次に調整四元数のログの虚部が得られ、調整用の回転軸がもたらされ得る。この新たな調整は、以前の軸と調整軸との間の指数内積を取ることによって制約され得る。
上述のように、検出された第1のコントローラAの動きおよび検出された第2のコントローラBの動きに基づく、選択された仮想オブジェクト200の目標とされたまたは意図された回転運動の判断は、2つのベクトル同士の間の以前の軸および現在の軸に基づく四元数の実行を含み得る。第1および第2のコントローラA、Bの向きに基づく仮想オブジェクトの回転は、各コントローラA、Bの回転を制約することによって達成される。各コントローラA、Bの回転の制約は、以前の四元数から現在の四元数に至る調整四元数を計算し、次に、調整のための回転軸を定義する調整四元数のログの虚部を得ることによって、達成され得る。そして、当該システムは、特定された軸と調整軸との間の指数内積を取ることによって新たな調整を制約し得る。
図10Aは、HMD100が生成する仮想環境を体験しながら、HMD100を装着して第1のコントローラAを片手に持ち第2のコントローラBをもう片方の手に持っている物理空間内のユーザの第三者視点である。図10Aに示す例では、説明および図示を簡単にするために、HMD100を装着しながら仮想環境を体験する際にユーザが見ることができる仮想シーン400の一例が差込み図として表わされている。ユーザは、仮想シーン400内に表示される仮想オブジェクトのうちの1つを選択して、多種多様な態様で対話および/または操作などを行なうことができる。図10Bに示す例では、ユーザは、たとえば、コントローラA、Bの一方または両方を用いて仮想ハンドル420と仮想的に接触し、仮想ビームをコントローラA、Bの一方または両方から仮想ハンドル420に方向付けることなどによって、仮想ハンドル420と対話することを選択している。仮想オブジェクト、この例では仮想ハンドル420がユーザによって選択されると、ユーザは、たとえば、第1および/または第2のコントローラA、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のこの回転は、ユーザが装着しているHMD100のディスプレイ上でユーザに表示され得る。
図10A〜図10Cは、上述のような第1のコントローラAおよび第2のコントローラBの回転運動に応じた仮想オブジェクト420の回転の単に一例を示す。仮想オブジェクトの平行移動、および仮想オブジェクトのスケーリングに加えて、上述のような第1のコントローラAおよび第2のコントローラBなどの複数のコントローラの検出された動き、特に回転運動に応じて、選択された仮想オブジェクトの多数のその他の動きが生じ得る。このような動きは、たとえば、単独のまたは組合わされた、軸X、Yおよび/またはZの1つ以上の周りの回転を含み得、平行移動およびスケーリングと組合わされてもよい。仮想オブジェクトのこれらの動きは、第1および/または第2のコントローラA、Bの対応する動きに応じて、連続しておよび/または同時に仮想環境で生じ得る。
上述のように、ある実装例では、第1のコントローラAおよび第2のコントローラBの位置および向きが動的に追跡され得、第1および第2のコントローラA、Bの動きが共通の座標系に動的に変換され得るため、入力は仮想環境で動的に適用され得る。したがって、第1および第2のコントローラA、Bの連続した動き、および組合わされた動きが共通の座標系に動的に変換され得る。これによって、本質的に無限の動作の収集を検出し、追跡し、共通の座標系に変換し、仮想環境で入力として反映することができる。たとえば、本システムおよび方法は、ユーザが、たとえば作図、描画などのために作図用具または描画用具を選択し得る仮想環境で適用され得る。
たとえば、図10Dに示すように、拡張および/または仮想現実環境で作図アプリケーションを使用しているユーザが、軌道450Aによって示されるように、多数の連続した回転運動および平行移動を含む連続した組合わされた動きで第1のコントローラAを動かして仮想パターン460Aを生成し得る。仮想パターン460Aは、HMD100が生成する仮想環境でユーザに表示される。同様に、ユーザは、軌道460Bによって示されるように、多数の連続した回転運動および平行移動を含む連続した組合わされた動きで第2のコントローラBを動かして仮想パターン460Bを生成し得る。仮想パターン460Bは、HMD100が生成する仮想環境でユーザに表示される。図10Dに示す例では、単一の仮想オブジェクトが、対話および/または操作のために第1および第2のコントローラA、Bを介してユーザによって具体的に選択されていない。したがって、この状況では、コントローラA、Bの動きが上述のように追跡されて、コントローラA、Bのそれぞれの個別の座標系の周りに検出された動きに基づいて、所望の仮想効果が生成され得る。
図11Aおよび図11Bは、たとえば図1および図10Aのユーザが装着しているHMD100のような例示的な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に収容されている部品の一部が見えるように、筐体110の基部110bから回転して離れている。ディスプレイ140が筐体110の前部110aの内部に面する側に搭載されていてもよい。レンズ150は、筐体110の内部において、前部110aが筐体110の基部110bに対して閉じられた位置にあるときにユーザの目とディスプレイ140との間になるように装着され得る。ある実装例では、HMD100は、たとえば、音声センサ、画像/光センサ、位置センサ(たとえばジャイロスコープおよび加速度計を含む慣性測定装置)などのさまざまなセンサを含む検知システム160を含み得る。HMD100は、プロセッサ190およびHMD100の操作を容易にするさまざまな制御システム装置を含む制御システム170も含み得る。
ある実装例では、HMD100は、静止画および動画を撮影するカメラ180を含み得る。カメラ180が撮影した画像は、ユーザおよび/もしくはコントローラ102の物理位置の追跡に役立つように用いられてもよく、ならびに/またはユーザに対してパススルーモードでディスプレイ140に表示されてもよい。ある実装例では、HMD100は、ユーザの目の注視を検出して追跡する1つ以上の画像センサ165Aを含む注視追跡装置165を含み得る。ある実装例では、HMD100は、検出された注視が拡張現実および/または仮想現実環境での対応する対話に変換されることになるユーザ入力として処理されるように構成されてもよい。
図12に示すように、第1の電子装置300は、検知システム370と制御システム380とを含み得る。これらのシステムは、図10Aおよび図10Bに示す検知システム160および制御システム170とそれぞれ同様であってもよい。検知システム370は、たとえば、光センサ、音声センサ、画像センサ、距離/近接センサ、位置センサ、ならびに/または、たとえばユーザの目の注視を検出して追跡するように位置決めされた画像センサを含む、その他のセンサおよび/もしくはセンサの各種組合せを含み得る。制御システム380は、たとえば、電源/停止制御装置、音声およびビデオ制御装置、光学制御装置、遷移制御装置、ならびに/またはその他のこのような装置および/もしくは装置の各種組合せを含み得る。検知システム370および/または制御システム380は、特定の実装例に応じて、より多いまたはより少ない装置を含んでいてもよく、示されるのとは異なる物理的な配置を有していてもよい。第1の電子装置300はまた、検知システム370および制御システム380と通信するプロセッサ390と、メモリ385と、第1の電子装置300とたとえば第2の電子装置302などの別の外部装置との間の通信を提供する通信モジュール350とを含み得る。
第2の電子装置302(302A/302B)は、第2の電子装置302の各々とたとえば第1の電子装置300などの別の装置との間の通信を提供する通信モジュール306を含み得る。第2の電子装置302の各々は検知システム304を含み得る。検知システム304は、たとえば、カメラおよびマイクに含まれるような画像センサおよび音声センサ、慣性測定装置、コントローラまたはスマートフォンのタッチセンシティブ画面に含まれるようなタッチセンサ、ならびにその他のこのようなセンサおよび/またはセンサの各種組合せを含む。プロセッサ309は、第2の電子装置302の各々の検知システム304および制御部305と通信してもよい。制御部305は、メモリ308にアクセスすることができ、第2の電子装置302の全体の動作を制御する。
本明細書に記載の実装例に従う、拡張および/または仮想現実環境での入力のために、複数のコントローラの回転運動を共通の座標系に変換する方法900を図13に示す。
仮想および/または拡張現実体験を開始した(ブロック910)後、コントローラの動き、たとえばHMD100が生成する仮想環境で検出される1つ以上の6DOFコントローラの動きが上述のように追跡され得る(ブロック920)。たとえば上述のような第1および第2のコントローラAおよび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は、コンピューティングデバイス1000内で実行される命令を処理可能であり、これらの命令は、GUIのためのグラフィカル情報を、高速インターフェイス1008に結合されたディスプレイ1016などの外部入出力デバイス上に表示するために、メモリ1004内または記憶装置1006上に格納された命令を含む。その他の実装例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用されてもよい。また、複数のコンピューティングデバイス1000が接続されてもよく、各デバイスは(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
メモリ1004は、情報をコンピューティングデバイス1000内に格納する。一実装例では、メモリ1004は1つまたは複数の揮発性メモリユニットである。別の実装例では、メモリ1004は1つまたは複数の不揮発性メモリユニットである。メモリ1004はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ可読媒体であってもよい。
記憶装置1006は、コンピューティングデバイス1000のための大容量記憶を提供可能である。一実装例では、記憶装置1006は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくはその他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ可読媒体であってもよく、または当該コンピュータ可読媒体を含んでいてもよい。コンピュータプログラムプロダクトが情報担体において有形に具体化され得る。コンピュータプログラムプロダクトはまた、実行されると上述の方法のような1つ以上の方法を行なう命令を含んでいてもよい。情報担体は、メモリ1004、記憶装置1006、またはプロセッサ1002上のメモリといった、コンピュータ可読媒体または機械可読媒体である。
高速コントローラ1008はコンピューティングデバイス1000のための帯域幅集約的な動作を管理し、一方、低速コントローラ1012はより低い帯域幅集約的な動作を管理する。機能のこのような割当ては例示にすぎない。一実装例では、高速コントローラ1008は、メモリ1004、ディスプレイ1016に(たとえば、グラフィックスプロセッサまたはアクセラレータを介して)、および、さまざまな拡張カード(図示せず)を受付け得る高速拡張ポート1010に結合される。この実装例では、低速コントローラ1012は、記憶装置1006および低速拡張ポート1014に結合される。さまざまな通信ポート(たとえば、USB、Bluetooth、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入出力デバイスに、または、スイッチもしくはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合されてもよい。
コンピューティングデバイス1000は、図に示すように多くの異なる形態で実装されてもよい。たとえばそれは、標準サーバ1020として、またはこのようなサーバのグループで複数回実装されてもよい。それはまた、ラックサーバシステム1024の一部として実装されてもよい。加えて、それは、ラップトップコンピュータ1022などのパーソナルコンピュータにおいて実装されてもよい。これに代えて、コンピューティングデバイス1000からのコンポーネントは、デバイス1050などのモバイル機器(図示せず)におけるその他のコンポーネントと組合されてもよい。このようなデバイスの各々は、コンピューティングデバイス1000、1050のうちの1つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス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(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)、またはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、またはその他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス1056は、ディスプレイ1054を駆動してグラフィカル情報およびその他の情報をユーザに提示するための適切な回路を含んでいてもよい。制御インターフェイス1058は、ユーザからコマンドを受信し、それらをプロセッサ1052に送出するために変換してもよい。加えて、デバイス1050とその他のデバイスとの近接通信を可能にするように、外部インターフェイス1062がプロセッサ1052と通信した状態で設けられてもよい。外部インターフェイス1062は、たとえば、ある実装例では有線通信を提供してもよく、またはその他の実装例では無線通信を提供してもよく、複数のインターフェイスも使用されてもよい。
メモリ1064は、情報をコンピューティングデバイス1050内に格納する。メモリ1064は、1つもしくは複数のコンピュータ可読媒体、1つもしくは複数の揮発性メモリユニット、または、1つもしくは複数の不揮発性メモリユニットの1つ以上として実装されてもよい。拡張メモリ1074も設けられ、拡張インターフェイス1072を介してデバイス1050に接続されてもよく、拡張インターフェイス1072は、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含んでいてもよい。このような拡張メモリ1074は、デバイス1050に余分の格納スペースを提供してもよく、または、デバイス1050のためのアプリケーションもしくはその他の情報も格納してもよい。具体的には、拡張メモリ1074は、上述のプロセスを実行または補足するための命令を含んでいてもよく、セキュアな情報も含んでいてもよい。このため、たとえば、拡張メモリ1074はデバイス1050のためのセキュリティモジュールとして設けられてもよく、デバイス1050のセキュアな使用を許可する命令でプログラムされてもよい。加えて、ハッキング不可能な態様でSIMMカード上に識別情報を乗せるといったように、セキュアなアプリケーションが追加情報とともにSIMMカードを介して提供されてもよい。
メモリはたとえば、以下に述べるようなフラッシュメモリおよび/またはNVRAMメモリを含んでいてもよい。一実装例では、コンピュータプログラムプロダクトが情報担体において有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述の方法のような1つ以上の方法を行なう命令を含む。情報担体は、メモリ1064、拡張メモリ1074、またはプロセッサ1052上のメモリといった、コンピュータ可読媒体または機械可読媒体であり、たとえば送受信機1068または外部インターフェイス1062上で受信されてもよい。
デバイス1050は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス1066を介して無線通信してもよい。通信インターフェイス1066は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、さまざまなモードまたはプロトコル下での通信を提供してもよい。このような通信は、たとえば無線周波数送受信機1068を介して生じてもよい。加えて、Bluetooth、Wi−Fi、またはその他のこのような送受信機(図示せず)使用するなどして、短距離通信が生じてもよい。加えて、GPS(Global Positioning System:全地球測位システム)受信機モジュール1070が、追加のナビゲーション関連および位置関連の無線データをデバイス1050に提供してもよく、このデータは、デバイス1050上で実行されるアプリケーションによって適宜使用されてもよい。
デバイス1050はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック1060を使用して、音声通信してもよい。音声コーデック1060は同様に、たとえばデバイス1050のハンドセットにおいて、スピーカを介すなどして、ユーザに聞こえる音を生成してもよい。このような音は、音声電話からの音を含んでいてもよく、録音された音(たとえば、音声メッセージ、音楽ファイルなど)を含んでいてもよく、デバイス1050上で動作するアプリケーションが生成する音も含んでいてもよい。
コンピューティングデバイス1050は、図に示すように多くの異なる形態で実装されてもよい。たとえばそれは、携帯電話1080として実装されてもよい。それはまた、スマートフォン1082、携帯情報端末、またはその他の同様のモバイル機器の一部として実装されてもよい。
本明細書に記載のシステムおよび技法のさまざまな実装例は、デジタル電子回路、集積回路、特別設計されたASIC(application specific integrated circuit:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せにおいて実現されてもよい。これらのさまざまな実装例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実装例を含んでいてもよく、このプロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信するとともに、これらにデータおよび命令を送信するように結合されてもよい。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知)は、プログラマブルプロセッサのための機械命令を含んでおり、高レベル手続き型および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ/機械言語で実装されてもよい。ここに使用されるように、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラムプロダクト、装置および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device:PLD))を指し、機械命令を機械可読信号として受信する機械可読媒体を含む。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
ユーザとの対話を提供するために、本明細書に記載のシステムおよび技法は、情報をユーザに表示するためのディスプレイ装置(たとえば、CRT(cathode ray tube:陰極線管)またはLCD(liquid crystal display:液晶ディスプレイ)モニタ)と、ユーザが入力をコンピュータに提供できるようにするキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを有するコンピュータ上で実装されてもよい。その他の種類の装置を使用してユーザとの対話を提供してもよく、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信されてもよい。
本明細書に記載のシステムおよび技法は、(たとえばデータサーバとしての)バックエンドコンポーネントを含む、またはミドルウェアコンポーネント(たとえばアプリケーションサーバ)を含む、またはフロントエンドコンポーネント(たとえば、ユーザが本明細書に記載のシステムおよび技法の実装例と対話できるようにするグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ)を含む、または、このようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実装されてもよい。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信(たとえば通信ネットワーク)によって相互接続されてもよい。通信ネットワークの例として、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、およびインターネットがある。
コンピューティングシステムは、クライアントおよびサーバを含んでいてもよい。クライアントおよびサーバは一般に互いにリモートであり、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
ある実装例では、図10に示すコンピューティングデバイスは、仮想現実(VRヘッドセット/HMDデバイス1090)とインターフェイス接続するセンサを含み得る。たとえば、図10に示すコンピューティングデバイス1050または他のコンピューティングデバイス上に含まれる1つ以上のセンサは、VRヘッドセット1090への入力を提供でき、または一般に、VR空間への入力を提供できる。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、生体認証センサ、温度センサ、湿度センサ、および周囲光センサを含み得るものの、それらに限定されない。コンピューティングデバイス1050はこれらのセンサを使用して、VR空間におけるコンピューティングデバイスの絶対位置および/または検出された回転を判断可能であり、それは次に、VR空間への入力として使用され得る。たとえば、コンピューティングデバイス1050は、コントローラ、レーザポインタ、キーボード、武器などの仮想オブジェクトとしてVR空間に組込まれてもよい。VR空間に組込まれた場合のコンピューティングデバイス/仮想オブジェクトのユーザによる位置付けは、ユーザが、VR空間において仮想オブジェクトをある態様で見るようにコンピューティングデバイスを位置付けることを可能にし得る。たとえば、仮想オブジェクトがレーザポインタを表わす場合、ユーザは、コンピューティングデバイスを、実際のレーザポインタであるかのように操作することができる。ユーザはコンピューティングデバイスをたとえば左右に、上下に、円形に動かして、レーザポインタを使用するのと同様の態様でデバイスを使用することができる。
ある実装例では、コンピューティングデバイス1050上に含まれる、またはコンピューティングデバイス1050に接続される1つ以上の入力デバイスは、VR空間への入力として使用され得る。入力デバイスは、タッチスクリーン、キーボード、1つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイク、入力機能性を有するイヤホンもしくは小型イヤホン、ゲーミングコントローラ、またはその他の接続可能な入力デバイスを含み得るものの、それらに限定されない。コンピューティングデバイスがVR空間に組込まれた場合にコンピューティングデバイス1050上に含まれる入力デバイスと対話するユーザは、特定のアクションをVR空間に生じさせることができる。
ある実装例では、コンピューティングデバイス1050のタッチスクリーンは、VR空間においてタッチパッドとしてレンダリングされ得る。ユーザは、コンピューティングデバイス1050のタッチスクリーンと対話することができる。対話は、たとえばVRヘッドセット1090において、VR空間におけるレンダリングされたタッチパッド上の動きとしてレンダリングされる。レンダリングされた動きは、VR空間においてオブジェクトを制御することができる。
ある実装例では、コンピューティングデバイス1050上に含まれる1つ以上の出力デバイスは、VR空間においてVRヘッドセット1090のユーザに出力および/またはフィードバックを提供することができる。出力およびフィードバックは、視覚、触覚、または音声によるものであり得る。出力および/またはフィードバックは、振動、1つ以上のライトまたはストロボをオンオフすることもしくは点滅および/または明滅させること、アラームを鳴らすこと、チャイムを鳴らすこと、歌を演奏すること、および音声ファイルを演奏することを含み得るものの、それらに限定されない。出力デバイスは、振動モータ、振動コイル、圧電デバイス、静電デバイス、発光ダイオード(LED)、ストロボ、およびスピーカを含み得るものの、それらに限定されない。
ある実装例では、コンピューティングデバイス1050は、コンピュータが生成した3D環境において別のオブジェクトのように見えてもよい。ユーザによるコンピューティングデバイス1050との対話(たとえば、タッチスクリーンを回転させること、振動させること、タッチスクリーンに触れること、指でタッチスクリーンをスワイプすること)は、VR空間におけるオブジェクトとの対話と解釈され得る。VR空間におけるレーザポインタの例では、コンピューティングデバイス1050は、コンピュータが生成した3D環境において仮想レーザポインタのように見える。ユーザがコンピューティングデバイス1050を操作すると、ユーザはVR空間においてレーザポインタの動きを見る。ユーザは、コンピューティングデバイス1050上またはVRヘッドセット1090上で、VR環境におけるコンピューティングデバイス1050との対話からフィードバックを受信する。
ある実装例では、コンピューティングデバイス1050はタッチスクリーンを含み得る。たとえば、ユーザは、タッチスクリーン上で生じることを模倣してVR空間内で生じさせることができる特定のやり方で、タッチスクリーンと対話することができる。たとえば、ユーザは、つまむ(pinching)タイプの動きを用いて、タッチスクリーン上に表示されているコンテンツの大きさを変えることができる。このタッチスクリーン上におけるつまむタイプの動きは、VR空間内で提供されている情報の大きさを変えることができる。別の例において、コンピューティングデバイスは、コンピュータによって生成された3D環境における仮想ブックとしてレンダリングされてもよい。VR空間では、このブックのページがVR空間内で表示され、ユーザの指でタッチスクリーンをスワイプすることは、仮想ブックのページを裏返す/めくることと解釈することができる。各ページを裏返す/めくると、ページの内容が変わるのが見え、それに加えて、本のページを裏返す音などの音声フィードバックをユーザに与えることができる。
ある実装例では、コンピューティングデバイスに加えて1つ以上の入力デバイス(たとえばマウス、キーボード)が、コンピュータが生成した3D環境においてレンダリングされ得る。レンダリングされた入力デバイス(たとえば、レンダリングされたマウス、レンダリングされたキーボード)は、VR空間においてオブジェクトを制御するために、VR空間においてレンダリングされたとして使用され得る。
コンピューティングデバイス1000は、さまざまな形態のデジタルコンピュータおよびデバイスを表わすよう意図されている。これらのデジタルコンピュータおよびデバイスは、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他の適切なコンピュータを含むものの、それらに限定されない。コンピューティングデバイス1050は、携帯情報端末、携帯電話、スマートフォン、およびその他の同様のコンピューティングデバイスといった、さまざまな形態のモバイル機器を表わすよう意図されている。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は、単なる例示であるよう意図されており、本文書に記載のおよび/または請求項に記載の本発明の実装例を限定するよう意図されてはいない。
多くの実施形態が説明された。しかしながら、明細書の精神および範囲から逸脱することなくさまざまな変形が加えられ得ることが理解されるであろう。
加えて、図面に示す論理フローは、所望の結果を達成するために、示された特定の順序または順番を必要としない。加えて、説明されたフローに対してその他のステップが提供されてもよく、またはステップが除去されてもよく、説明されたシステムに対してその他のコンポーネントが追加されてもよく、または除去されてもよい。したがって、その他の実施形態は以下の特許請求の範囲内にある。
本明細書に記載の通り、記載されている実装例の一定の特徴が例示されたが、ここで、当業者は、数多くの変形、代用、変更、および均等物を想到するであろう。したがって、添付の特許請求の範囲は、実装例の範囲に含まれるすべてのこのような変形および変更を網羅するよう意図されていることを理解すべきである。それらは限定ではなく専ら例示を目的として提示されており、形態および詳細事項にさまざまな変更が加えられ得ることを理解すべきである。本明細書に記載の装置および/または方法はいずれの部分も、相互に相容れない組合せを除いて、任意の組合せが可能である。本明細書に記載の実装例は、記載されている異なる実装例の機能、構成要素および/または特徴のさまざまな組合せおよび/または下位の組合せを含み得る。

Claims (17)

  1. 方法であって、
    3次元(3D)仮想環境を生成することと、
    物理環境での第1のコントローラの6自由度(6DOF)の位置および向きを追跡することと、
    前記物理環境での第2のコントローラの6DOFの位置および向きを追跡することと、
    前記仮想環境で表示される仮想オブジェクトの選択を検出することと、
    前記物理環境で検出された第1の座標系に対する前記第1のコントローラの動き、および前記物理環境で検出された第2の座標系に対する前記第2のコントローラの動きに基づいて、選択された前記仮想オブジェクトについて目標とされた入力を検出することと、
    検出された前記第1の座標系に対する前記第1のコントローラの前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することと、
    前記共通の座標系に対する動きに応じて、選択された前記仮想オブジェクトを操作することとを備え
    検出された前記第1の座標系に対する前記第1のコントローラの前記共通の座標系に対する前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することは、
    前記共通の座標系の第1の軸を定義することを含み、前記第1の軸は前記第1のコントローラの中央部から前記第2のコントローラの中央部に延び、前記変換することはさらに、
    前記共通の座標系の第2の軸を定義することを含み、前記第2の軸は前記第1の座標系のX軸、Y軸、またはZ軸の1つから選択され、前記変換することはさらに、
    前記共通の座標系の第3の軸を定義することを含み、前記第3の軸は前記第1の軸と前記第2の軸との外積である、方法。
  2. 前記共通の座標系の前記第2の軸を定義することは、
    前記第1の座標系の前記X軸、前記Y軸または前記Z軸のうちのどれが前記第1の軸に最も直交しているかを判断することと、
    前記X軸、前記Y軸または前記Z軸のうちの最も直交している軸を前記共通の座標系の前記第2の軸として設定することとを含む、請求項に記載の方法。
  3. 前記第1の軸を定義することは、前記第1のコントローラおよび前記第2のコントローラが前記物理環境において、かつそれに対応して前記仮想環境に対して動くと、連続した時点において前記第1の軸を動的に再び定義することを含む、請求項1または請求項2に記載の方法。
  4. 前記第2の軸を定義することは、前記第1のコントローラおよび前記第2のコントローラが前記物理環境において、かつそれに対応して前記仮想環境に対して動くと、かつ前記第1の軸が動的に再び定義されると、連続した時点において前記第2の軸を動的に再び定義することを含む、請求項に記載の方法。
  5. 前記第3の軸を定義することは、前記第1のコントローラおよび前記第2のコントローラが前記物理環境において、かつそれに対応して前記仮想環境に対して動くと、かつ前記第1の軸および前記第2の軸が動的に再び定義されると、連続した時点において前記第3の軸を動的に再び定義することを含む、請求項に記載の方法。
  6. 検出された前記第1の座標系に対する前記第1のコントローラの前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きに基づいて、選択された前記仮想オブジェクトについて目標とされた入力を検出することは、
    前記第1の座標系の前記X軸、前記Y軸または前記Z軸の少なくとも1つの周りの前記第1のコントローラの回転運動を検出すること、または
    前記第2の座標系のX軸、Y軸またはZ軸の少なくとも1つの周りの前記第2のコントローラの回転運動を検出すること、の少なくとも一方を含む、請求項〜請求項のいずれか1項に記載の方法。
  7. 検出された前記第1の座標系に対する前記第1のコントローラの前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きを、前記共通の座標系に対する前記動きに変換することは、
    検出された前記第1のコントローラの前記回転運動または検出された前記第2のコントローラの前記回転運動の少なくとも一方に基づいて、前記共通の座標系に対する回転の動きを判断することと、
    前記回転の動きを、選択された前記仮想オブジェクトの操作に適用することとを含む、請求項に記載の方法。
  8. 検出された前記第1の座標系に対する前記第1のコントローラの前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きに基づいて、選択された前記仮想オブジェクトについて目標とされた入力を検出することは、
    前記第1の座標系の前記X軸、前記Y軸または前記Z軸の少なくとも1つに対する、かつ前記第2のコントローラの位置に対する前記第1のコントローラの動きを検出すること、または
    前記第2の座標系のX軸、Y軸またはZ軸の少なくとも1つに対する、かつ前記第1のコントローラの位置に対する前記第2のコントローラの動きを検出すること、の少なくとも一方を含む、請求項〜請求項のいずれか1項に記載の方法。
  9. 検出された前記第1の座標系に対する前記第1のコントローラの前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することは、
    検出された前記第1のコントローラの前記動きまたは検出された前記第2のコントローラの前記動きの少なくとも一方に基づいて、前記共通の座標系に対する選択された動きの方向および選択された動きの量を求めることと、
    前記選択された動きの方向における前記選択された動きの量を、選択された前記仮想オブジェクトの操作に適用することとを含む、請求項に記載の方法。
  10. 前記3D仮想環境を生成することは、ヘッドマウントディスプレイ(HMD)デバイスのディスプレイ上に前記仮想環境を表示することを含み、前記第1および第2のコントローラは前記HMDに作動的に結合されるハンドヘルドコントローラであり、その結果、前記物理環境での前記第1および第2のコントローラの物理的な動きは、前記仮想環境で表示される選択された仮想オブジェクトに対して実行されることになるユーザコマンドに対応する、請求項1〜請求項のいずれか1項に記載の方法。
  11. 方法であって、
    仮想環境で表示される仮想オブジェクトの選択を検出することと、
    検出された第1の座標系に対する第1のコントローラの動き、および検出された第2の座標系に対する第2のコントローラの動きに応じて、前記仮想環境で表示される選択された前記仮想オブジェクトについて目標とされた入力を検出することとを備え、前記第1のコントローラおよび前記第2のコントローラは物理環境で動作し、前記方法はさらに、
    検出された前記第1のコントローラの前記動き、および検出された前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することと、
    前記共通の座標系に対する前記動きに応じて、選択された前記仮想オブジェクトを前記仮想環境で回転させることとを備え
    検出された前記第1のコントローラの前記動き、および検出された前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することは、
    前記共通の座標系の第1の軸を定義することを含み、前記第1の軸は前記第1のコントローラの中央部から前記第2のコントローラの中央部に延び、前記変換することはさらに、
    前記共通の座標系の第2の軸を定義することを含み、前記第2の軸を定義することは、
    前記第1の座標系のX軸、Y軸またはZ軸のうちのどれが前記第1の軸に最も直交しているかを判断することと、
    前記第1の座標系の前記X軸、前記Y軸または前記Z軸のうちの最も直交している軸を前記共通の座標系の前記第2の軸として設定することとを含み、前記変換することはさらに、
    前記共通の座標系の第3の軸を定義することを含み、前記第3の軸は前記第1の軸と前記第2の軸との外積である、方法。
  12. 前記第1の軸を定義することは、前記第1のコントローラおよび前記第2のコントローラが前記物理環境において、かつそれに対応して前記仮想環境に対して動くと、連続した時点において前記第1の軸を動的に再び定義することを含み、
    前記第2の軸を定義することは、前記第1のコントローラおよび前記第2のコントローラが前記物理環境において、かつそれに対応して前記仮想環境に対して動くと、かつ前記第1の軸が動的に再び定義されると、連続した時点において前記第2の軸を動的に再び定義することを含み、
    前記第3の軸を定義することは、前記第1のコントローラおよび前記第2のコントローラが前記物理環境において、かつそれに対応して前記仮想環境に対して動くと、かつ前記第1の軸および前記第2の軸が動的に再び定義されると、連続した時点において前記第3の軸を動的に再び定義することを含む、請求項11に記載の方法。
  13. 検出された前記第1のコントローラの前記動き、および検出された第2のコントローラの前記動きに応じて、選択された前記仮想オブジェクトについて目標とされた入力を検出することは、
    前記第1の座標系の前記X軸、前記Y軸または前記Z軸の少なくとも1つの周りの前記第1のコントローラの回転運動を検出すること、または
    前記第2の座標系のX軸、Y軸またはZ軸の少なくとも1つの周りの前記第2のコントローラの回転運動を検出すること、の少なくとも一方を含む、請求項11または請求項12に記載の方法。
  14. 検出された前記第1の座標系に対する前記第1のコントローラの前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することは、
    検出された前記第1のコントローラの前記回転運動または検出された前記第2のコントローラの前記回転運動の少なくとも一方に基づいて、前記共通の座標系に対する回転の動きを判断することと、
    前記回転の動きを、選択された前記仮想オブジェクトの操作に適用することとを含む、請求項13に記載の方法。
  15. 前記物理環境での前記第1のコントローラの6自由度(6DOF)の位置および向きを追跡することと、
    前記物理環境での前記第2のコントローラの6DOFの位置および向きを追跡することと、
    前記第1のコントローラの前記6DOFの追跡に基づいて、前記第1のコントローラの前記動きを検出することと、
    前記第2のコントローラの前記6DOFの追跡に基づいて、前記第2のコントローラの前記動きを検出することとをさらに備える、請求項11〜請求項14のいずれか1項に記載の方法。
  16. コンピュータプログラムであって、一連の命令を含み、前記命令はプロセッサによって実行されると前記プロセッサに方法を実行させ、前記方法は、
    3次元(3D)仮想環境を生成することと、
    物理環境での第1のコントローラの6自由度(6DOF)の位置および向きを追跡することと、
    前記物理環境での第2のコントローラの6DOFの位置および向きを追跡することと、
    前記仮想環境で表示される仮想オブジェクトの選択を検出することと、
    前記物理環境で検出された第1の座標系に対する前記第1のコントローラの動き、および前記物理環境で検出された第2の座標系に対する前記第2のコントローラの動きに基づいて、選択された前記仮想オブジェクトについて目標とされた入力を検出することと、
    検出された前記第1の座標系に対する前記第1のコントローラの前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することと、
    前記共通の座標系に対する前記動きに応じて、選択された前記仮想オブジェクトを操作することとを備え
    検出された前記第1のコントローラの前記動き、および検出された前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することは、
    前記共通の座標系の第1の軸を定義することを含み、前記第1の軸は前記第1のコントローラの中央部から前記第2のコントローラの中央部に延び、前記変換することはさらに、
    前記共通の座標系の第2の軸を定義することを含み、前記第2の軸を定義することは、
    前記第1の座標系のX軸、Y軸またはZ軸のうちのどれが前記第1の軸に最も直交しているかを判断することと、
    前記X軸、前記Y軸または前記Z軸のうちの最も直交している軸を前記共通の座標系
    の前記第2の軸として設定することとを含み、前記変換することはさらに、
    前記共通の座標系の第3の軸を定義することを含み、前記第3の軸は前記第1の軸と前記第2の軸との外積である、コンピュータプログラム。
  17. 検出された前記第1のコントローラの前記動き、および検出された第2のコントローラの前記動きに応じて、選択された前記仮想オブジェクトについて目標とされた入力を検出することは、
    前記第1の座標系の前記X軸、前記Y軸または前記Z軸の少なくとも1つの周りの前記第1のコントローラの回転運動を検出すること、または
    前記第2の座標系のX軸、Y軸またはZ軸の少なくとも1つの周りの前記第2のコントローラの回転運動を検出すること、の少なくとも一方を含み、
    検出された前記第1の座標系に対する前記第1のコントローラの前記動き、および検出された前記第2の座標系に対する前記第2のコントローラの前記動きを、共通の座標系に対する動きに変換することは、
    検出された前記第1のコントローラの前記回転運動または検出された前記第2のコントローラの前記回転運動の少なくとも一方に基づいて、前記共通の座標系に対する回転の動きを判断することと、
    前記回転の動きを、選択された前記仮想オブジェクトの操作に適用することとを含む、請求項16に記載のコンピュータプログラム。
JP2019510942A 2016-08-23 2017-08-18 拡張および/または仮想現実環境における6自由度コントローラを用いた仮想オブジェクトの操作 Active JP6820405B2 (ja)

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 2017-08-17
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
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
JP2019532396A JP2019532396A (ja) 2019-11-07
JP6820405B2 true JP6820405B2 (ja) 2021-01-27

Family

ID=60662035

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019510942A Active JP6820405B2 (ja) 2016-08-23 2017-08-18 拡張および/または仮想現実環境における6自由度コントローラを用いた仮想オブジェクトの操作

Country Status (7)

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

Families Citing this family (26)

* 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
WO2018026893A1 (en) * 2016-08-03 2018-02-08 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
WO2020023524A1 (en) * 2018-07-23 2020-01-30 Magic Leap, Inc. Method and system for resolving hemisphere ambiguity using a position vector
US10909772B2 (en) * 2018-07-31 2021-02-02 Splunk Inc. Precise scaling of virtual objects in an extended reality environment
US10692299B2 (en) 2018-07-31 2020-06-23 Splunk Inc. Precise manipulation of virtual object position in an extended reality environment
JP7400721B2 (ja) * 2018-08-29 2023-12-19 ソニーグループ株式会社 情報処理装置、情報処理方法及びプログラム
CN113196212A (zh) 2018-10-17 2021-07-30 美达威公司 作为用于交互的物理接口的移动平台
JP2022047549A (ja) 2019-01-18 2022-03-25 ソニーグループ株式会社 情報処理装置、情報処理方法、及び、記録媒体
US11644940B1 (en) 2019-01-31 2023-05-09 Splunk Inc. Data visualization in an extended reality environment
US11853533B1 (en) * 2019-01-31 2023-12-26 Splunk Inc. Data visualization workspace 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
KR102164371B1 (ko) * 2019-11-29 2020-10-12 주식회사 아이브이알시스템즈 가상정비훈련을 위한 가상객체와의 상호작용 구현 방법
CN110992757A (zh) * 2019-11-29 2020-04-10 北方工业大学 基于vr与人工智能的高危化学实验室防火安全培训方法
CN115087948A (zh) * 2020-02-19 2022-09-20 发那科株式会社 工业机械的操作系统
CA3180827A1 (en) 2020-04-22 2021-10-28 Within Unlimited, Inc. Virtual and augmented reality personalized and customized fitness training activity or game, methods, devices, and systems
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

Family Cites Families (25)

* 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
EP2104905A4 (en) * 2006-12-29 2010-12-29 Gesturetek Inc MANIPULATION OF VIRTUAL OBJECTS USING AN EXTENDED INTERACTIVE SYSTEM
JP5730463B2 (ja) * 2008-07-11 2015-06-10 任天堂株式会社 ゲームプログラムおよびゲーム装置
JP2010238015A (ja) * 2009-03-31 2010-10-21 Sega Corp 入力装置及びプログラム
EP2348383B1 (en) 2009-12-31 2017-07-12 Sony Computer Entertainment Europe Limited System and method of virtual interaction
CN103218055B (zh) * 2010-02-05 2017-03-01 索尼电脑娱乐公司 用于利用位置、方向或动作与计算程序相接口的控制器
JP5735865B2 (ja) * 2011-06-17 2015-06-17 任天堂株式会社 ゲームシステムおよびゲームプログラム
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
JP6355978B2 (ja) * 2014-06-09 2018-07-11 株式会社バンダイナムコエンターテインメント プログラムおよび画像生成装置
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
US10146335B2 (en) * 2016-06-09 2018-12-04 Microsoft Technology Licensing, Llc Modular extension of inertial controller for six DOF mixed reality input
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
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6820405B2 (ja) 拡張および/または仮想現実環境における6自由度コントローラを用いた仮想オブジェクトの操作
US11181986B2 (en) Context-sensitive hand interaction
JP6895390B2 (ja) 仮想現実においてハンドヘルド電子装置を追跡するためのシステム
CN107667328B (zh) 用于在增强和/或虚拟现实环境中跟踪手持设备的系统
EP3400502B1 (en) Combining gyromouse input and touch input for navigation in an augmented and/or virtual reality environment
CN109074149B (zh) 用于增强或虚拟现实环境的头戴式参考系中的对象跟踪
JP6535819B2 (ja) 仮想現実環境におけるナビゲーション用制御システム
US20180150204A1 (en) Switching of active objects in an augmented and/or virtual reality environment
US10359863B2 (en) Dragging virtual elements of an augmented and/or virtual reality environment
US10620720B2 (en) Input controller stabilization techniques for virtual reality systems
EP3479198A1 (en) Hover touch input compensation in augmented and/or virtual reality
WO2019055929A1 (en) MONITORING THE LOCATION AND ORIENTATION OF A VIRTUAL CONTROL DEVICE IN A VIRTUAL REALITY SYSTEM

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190509

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200714

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201013

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210104

R150 Certificate of patent or registration of utility model

Ref document number: 6820405

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250