(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて、第１の仮想コントローラを１以上の物理的なコントローラと対応付けることと、
第１の機能を前記第１の仮想コントローラに割当てて、前記１以上の物理的なコントローラを用いて前記第１の機能の性能を提供することと、
前記コンピュータシステムにおいて、第２の仮想コントローラを前記１以上の物理的なコントローラに対応付けることと、
第２の機能を前記第２の仮想コントローラに割り当てることと、
前記１以上の物理的なコントローラを用いて行われたジェスチャを検出することと、
前記ジェスチャの検出に応じて、前記第１の仮想コントローラから前記第１の機能の割当てを解除して前記第２の仮想コントローラに割り当て、かつ、前記第２の仮想コントローラから前記第２の機能の割り当てを解除して前記第１の仮想コントローラに割り当てることとを備える、方法。
【請求項２】
前記第１の機能は仮想ペインティングプログラムにおいてブラシ機能を含み、前記第２の機能は前記仮想ペインティングプログラムにおいてパレット機能を含み、前記ジェスチャの検出は前記仮想ペインティングプログラムにおいて前記ブラシ機能および前記パレット機能のスワッピングを引き起こす、請求項１に記載の方法。
【請求項３】
前記１以上の物理的なコントローラは、第１の物理的なコントローラと第２の物理的なコントローラとを含み、
前記１以上の物理的なコントローラを用いて前記第１の仮想コントローラを対応付けることは、前記第１の物理的なコントローラを用いて前記第１の仮想コントローラに対応付けることを含み、
前記１以上の物理的なコントローラを用いて前記第２の仮想コントローラを対応付けることは、前記第２の物理的なコントローラを用いて前記第２の仮想コントローラを対応付けることを含む、請求項１または請求項２に記載の方法。
【請求項４】
前記ジェスチャは前記第１および第２の物理的なコントローラを用いてなされる、請求項３に記載の方法。
【請求項５】
前記ジェスチャは、前記第１および第２の物理的なコントローラが互いに近づけられその後互いに遠ざけられることを含む、請求項４に記載の方法。
【請求項６】
前記ジェスチャは、前記第１および第２の物理的なコントローラのそれぞれの端部が互いに近づけられその後互いに遠ざけられることを含む、請求項４に記載の方法。
【請求項７】
前記第１および第２の物理的なコントローラの前記それぞれの端部は、前記第１および第２の物理的なコントローラの底端部である、請求項６に記載の方法。
【請求項８】
前記第１および第２の物理的なコントローラは互いに同一である、請求項３〜請求項７のいずれか１項に記載の方法。
【請求項９】
前記コンピュータシステムにおけるデフォルトとして、前記ジェスチャの検出に応じて、前記第１の仮想コントローラからの前記第１の機能の割当ての解除、または、前記第２の機能の前記第１の仮想コントローラとの対応付けを記憶する、請求項１〜請求項８のいずれか１項に記載の方法。
【請求項１０】
コンピュータシステムにおいて、第１の仮想コントローラを１以上の物理的なコントローラと対応付けることと、
第１の機能を前記第１の仮想コントローラに割当てて、前記１以上の物理的なコントローラを用いて前記第１の機能の性能を提供することと、
前記１以上の物理的なコントローラを用いて行われたジェスチャを検出することと、
前記ジェスチャの検出に応じて、前記第１の仮想コントローラから前記第１の機能の割当てを解除することと、を備え、
前記第１の仮想コントローラは前記コンピュータシステムによって生成された仮想空間において定義され、
前記仮想空間においてポイントを定義することと、前記ジェスチャの検出に応じて、前記第１の機能を前記ポイントと対応付けることとをさらに備える、方法。
【請求項１１】
第２の機能は、前記ジェスチャが検出される前に前記第１の仮想コントローラに既に割当てられている、請求項１０に記載の方法。
【請求項１２】
前記１以上の物理的なコントローラは第１の物理的なコントローラと第２の物理的なコントローラとを含み、
前記１以上の物理的なコントローラを用いて前記第１の仮想コントローラと対応付けることは、前記第１の物理的なコントローラを用いて前記第１の仮想コントローラと対応付けることを含み、
前記方法はさらに、
前記コンピュータシステムにおける第２の仮想コントローラを前記第２の物理的なコントローラと対応付けることと、
第２の機能を前記第２の仮想コントローラに割当てることとを備える、請求項１０または請求項１１に記載の方法。
【請求項１３】
前記第２の機能を前記第１の仮想コントローラにも割当てることをさらに備える、請求項１２に記載の方法。
【請求項１４】
前記第１の機能は仮想ペインティングプログラムにおいてパレット機能を含み、前記第２の機能は前記仮想ペインティングプログラムにおいてブラシ機能を含み、前記第１の仮想コントローラからの前記第１の機能の割当ての解除によって、前記第１および第２の物理的なコントローラの双方を使用して前記仮想ペインティングプログラムにおいて前記ブラシ機能を実行できる、請求項１３に記載の方法。
【請求項１５】
前記ジェスチャはセンサを用いて検出される、請求項１〜請求項１４のいずれか１項に記載の方法。
【請求項１６】
前記センサは前記１以上の物理的なコントローラ上に位置する、請求項１５に記載の方法。
【請求項１７】
前記センサによって生成されたセンサデータから、前記１以上の物理的なコントローラに関する速度および位置情報を推定することをさらに備える、請求項１５または請求項１６に記載の方法。
【請求項１８】
前記センサデータから前記１以上の物理的なコントローラに関する方位データを推定することをさらに備える、請求項１７に記載の方法。
【請求項１９】
前記１以上の物理的なコントローラは、第１の物理的なコントローラと第２の物理的なコントローラとを含み、
前記第１の物理的なコントローラと前記第２の物理的なコントローラの一方は、右手で持たれるように構成された外観要素を有し、
前記第１の物理的なコントローラと前記第２の物理的なコントローラの他方は、左手で持たれるように構成された外観要素を有する、請求項１に記載の方法。
【請求項２０】
コンピュータプログラムであって、１以上のプロセッサによって実行されると、前記プロセッサに請求項１〜請求項１９のいずれか１項に記載の操作を行わせる命令を含むコンピュータプログラム。
【請求項２１】
プロセッサと、
実行されると前記プロセッサに請求項１〜請求項１９のいずれか１項に記載の操作を行わせる命令を含む、非一時的な記憶媒体において有形に具現化されたコンピュータプログラム製品とを備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連の出願の相互参照
本特許出願は、２０１７年１月１９日に出願された「仮想コントローラのための機能割当て」と題された米国仮特許出願第６２／４４８，１７２号の優先権を主張する、２０１７年１０月２６日に出願された「仮想コントローラのための機能割当て」と題された米国特許出願第１５／７９４，２６５号の継続出願であって、その優先権を主張するものであり、その開示が本明細書に引用により援用される。
【０００２】
また、本特許出願は、２０１７年１月１９日に出願された米国仮特許出願第６２／４４８，１７２号の優先権を主張するものであり、その開示が本明細書に引用により援用される。
【０００３】
技術分野
本特許明細書は一般に、１つ以上の仮想コントローラのための機能割当てに関する。
【背景技術】
【０００４】
背景
仮想現実（ＶＲ）プログラムの中には、ユーザが操作してＶＲプログラムのアスペクトを制御可能な１つ以上の物理的なコントローラを使用するものがある。異なる機能をコントローラに割当てることができ、これによって、ユーザは、左右の手をそれぞれ用いて異なるタスクを実行できる。しかしながら、ユーザは、システムが割当てた手と反対側の手を使用したい場合がある。とりわけ、設定が変更可能になるまではユーザは「誤った」手を用いてプログラムと相互作用しなければならない場合、このような変更を行うためには、ユーザは、煩雑なことがあるＶＲプログラムの設定メニューを検索する必要がある。ユーザの好みにかかわらず、物理的に同一のコントローラを使用して起動時に機能を割り当て可能なシステムもあれば、左手または右手用の物理的に異なるコントローラを有し、ユーザが物理的なコントローラを切替えることによって再割当てを行うことが困難、または不可能なシステムもある。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
第１の態様では、方法は：コンピュータシステムにおいて、仮想コントローラを物理的なコントローラと対応付けることと；第１の機能を仮想コントローラに割当てて、物理的なコントローラを用いて第１の機能の性能を提供することと；物理的なコントローラを用いて行われたジェスチャを検出することと；ジェスチャの検出に応じて、仮想コントローラから第１の機能の割当てを解除する、または、第２の機能を仮想コントローラに割当てることとを備える。
【０００６】
一般的に、本明細書で説明する物理的なコントローラおよび他の物理的なコントローラは、手持ち式のコントローラである、ユーザの手で持つためのコントローラであり得る。物理的なコントローラは、たとえばコントローラの平行移動および／または回転運動によって、および／または、ボタン、スイッチ、検出器、およびコントローラ上にまたはコントローラによって設けられた他の制御要素の使用によって、ユーザがコンピュータシステムに入力を行うことができるように適合されていることが一般的である。そのため、本特許明細書で説明する仮想コントローラおよび他の仮想コントローラは、物理的なコントローラのユーザに対して提示される仮想現実空間において提示される仮想または論理的コントローラであり得る。仮想空間における仮想コントローラの位置および／または移動は、一般的に、物理的なコントローラの位置および／または移動に対応し得る、または応答し得る。本特許明細書で説明するジェスチャおよび他のジェスチャは、一般的に、物理的なコントローラの、したがって一般に仮想空間における仮想コントローラの特定の平行運動および／または回転運動および／または軌跡によって提供され得る。
【０００７】
実施形態例は、以下の特徴のいずれかまたは全てを含み得る。
仮想コントローラが第１の仮想コントローラとして定義され、物理的なコントローラが第１の物理的なコントローラとして定義される場合、方法は、コンピュータシステムにおける第２の仮想コントローラを第２の物理的なコントローラと対応付けることと、第２の機能を第２の仮想コントローラに割当てることとを備え得る。ジェスチャの検出に応じて、第１の機能は第１の仮想コントローラからの割当てを解除され第２の仮想コントローラに割当てられ得、第２の機能は第２の仮想コントローラからの割当てを解除され第１の仮想コントローラに割当てられ得る。
【０００８】
第１の機能は、仮想ペインティングプログラムにおいてブラシ機能を含み得、第２の機能は、仮想ペインティングプログラムにおいてパレット機能を含み得、ジェスチャの検出は、仮想ペインティングプログラムにおいてブラシ機能およびパレット機能のスワッピングを引き起こす。
【０００９】
ジェスチャは、第１および第２の物理的なコントローラを用いてなされ得る。たとえば、ジェスチャは、第１および第２の物理的なコントローラが互いに近づけられその後互いに遠ざけられること、または、第１および第２の物理的なコントローラのそれぞれの端部が互いに近づけられその後互いに遠ざけられることを含み得る。
【００１０】
第１および第２の物理的なコントローラのそれぞれの端部は、第１および第２の物理的なコントローラのそれぞれの底端部であり得る。たとえば、各コントローラは、ニュートラルポジションで通常の手持ち使用において方向付けられている場合、上端部および底端部を有していると定義され得る。たとえば、上端部はユーザの親指および人差し指により近く、底端部はユーザの小指により近い。
【００１１】
第１および第２の物理的なコントローラは、互いに同一であり得る、または、実質的に同じであり得る。
【００１２】
この方法はさらに、コンピュータシステムにおけるデフォルトとして、ジェスチャの検出に応じて、仮想コントローラからの第１の機能の割当ての解除、または、第２の機能の仮想コントローラとの対応付けを記憶することを備え得る。
【００１３】
仮想コントローラは、コンピュータシステムによって生成された仮想空間において定義され得、第１の機能はジェスチャの検出に応じて仮想コントローラからの割当てを解除される。この方法はさらに、仮想空間においてポイントを定義することと、ジェスチャの検出に応じて第１の機能をポイントと対応付けることとを備える。第２の機能は、ジェスチャの検出が検出される前に、仮想コントローラに既に割当てられ得る。
【００１４】
また、これに関連して、仮想コントローラは第１の仮想コントローラとして定義され得、物理的なコントローラは第１の物理的なコントローラとして定義され得る。この方法はさらに、コンピュータシステムにおける第２の仮想コントローラを第２の物理的なコントローラと対応付けることと；第２の機能を第２の仮想コントローラに割当てることとを備える。
【００１５】
この方法はさらに、第２の機能を第１の仮想コントローラにも割当てることを備え得る。たとえば、第１の機能は仮想ペインティングプログラムにおいてパレット機能を含み得、第２の機能は仮想ペインティングプログラムにおいてブラシ機能を含み、第１の仮想コントローラからの第１の機能の割当ての解除によって、第１および第２の物理的なコントローラの双方を使用して仮想ペインティングプログラムにおいてブラシ機能を実行可能である。
【００１６】
上述で説明され以下でより詳細に論じられるさまざまな態様において、ジェスチャは、たとえば、物理的なコントローラ上に位置し得るセンサを用いて検出され得る。説明される方法はさらに、センサによって生成されたセンサデータから、物理的なコントローラに関する速度および位置情報を推定することを備え得る、および／または、センサデータから物理的なコントローラについての方位データを推定することを備え得る。
【００１７】
本発明はまた、説明される方法の実行のために、コンピュータプログラムコードを保持する１つ以上のコンピュータ可読媒体を提供する。たとえば、本発明は、非一時的な記憶媒体において有形に具現化されたコンピュータプログラム製品を提供する。コンピュータプログラム製品は、実行されると、プロセッサに：コンピュータシステムにおいて、仮想コントローラを物理的なコントローラと対応付けることと；第１の機能を仮想コントローラに割当てて、物理的なコントローラを用いて第１の機能の性能を提供することと；物理的なコントローラを用いて行われたジェスチャを検出することと；ジェスチャの検出に応じて、仮想コントローラから第１の機能の割当てを解除する、または、第２の機能を仮想コントローラに割当てることとを含む操作を行わせる命令を含む。
【００１８】
本発明はまた、説明される方法の実行のために配置された装置を提供する。たとえば、本発明は：プロセッサと；非一時的な記憶媒体において有形に具現化されたコンピュータプログラム製品とを備えるシステムを提供する。コンピュータプログラム製品は、実行されると、プロセッサに：コンピュータシステムにおいて、仮想コントローラを物理的なコントローラと対応付けることと；第１の機能を仮想コントローラに割当てて、物理的なコントローラを用いて第１の機能の性能を提供することと；物理的なコントローラを用いて行われたジェスチャを検出することと；ジェスチャの検出に応じて、仮想コントローラから第１の機能の割当てを解除する、または、仮想コントローラに第２の機能を割当てることとを含む操作を行わせる命令を含む。
【００１９】
このようなシステムは、関連する方法を実現するために必要とされる１つ以上の物理的なコントローラも備え得る。
【図面の簡単な説明】
【００２０】
【図１Ａ】仮想コントローラのための機能割当ての例を示す図である。
【図１Ｂ】仮想コントローラのための機能割当ての例を示す図である。
【図２Ａ】仮想コントローラのための機能割当ての他の例を示す図である。
【図２Ｂ】仮想コントローラのための機能割当ての他の例を示す図である。
【図２Ｃ】仮想コントローラのための機能割当ての他の例を示す図である。
【図２Ｄ】仮想コントローラのための機能割当ての他の例を示す図である。
【図２Ｅ】仮想コントローラのための機能割当ての他の例を示す図である。
【図２Ｆ】仮想コントローラのための機能割当ての他の例を示す図である。
【図３】システムの例を示す図である。
【図４】方法の例を示す図である。
【図５】方法の例を示す図である。
【図６Ａ】仮想コントローラのための機能割当ての他の例を示す図である。
【図６Ｂ】仮想コントローラのための機能割当ての他の例を示す図である。
【図６Ｃ】仮想コントローラのための機能割当ての他の例を示す図である。
【図７】ここで説明する技術を実現するために使用可能なコンピュータデバイスおよびモバイルコンピュータデバイスの例を示す図である。
【発明を実施するための形態】
【００２１】
さまざまな図における同様の参照符号は、同様の要素を示す。
詳細な説明
本特許明細書は、仮想コントローラのための機能割当ての例について説明する。従来、仮想現実（ＶＲ）アプリケーションを使用している、または使用しようとしている人は、ＶＲシステムの２つ以上の物理的なコントローラ間で、少なくとも１つの機能の再割当てまたは再対応付けが可能である。いくつかの実施形態では、人は、あらかじめ定義されたジェスチャを実行して、再割当てまたは再対応付けを開始可能である。たとえば、人は、物理的なコントローラのそれぞれの端部を互いに近づけ、その後互いに遠ざけて、１つ（または複数）の機能を再割当てしなければならないという意図の信号を送ることができる。これは、たとえばメニューシステムを検索するよりも、コントローラ間でＶＲ機能の再割当てを行うより簡単で、より早く、および／または、より直感的な方法であり得る。
【００２２】
図１Ａ〜図１Ｂは、仮想コントローラのための機能割当ての例を示す図である。ここで、仮想コントローラは、ＶＲプログラムによって生成される仮想空間１００に示されている。たとえば、仮想空間１００は、ＶＲプログラムに接続されたＶＲヘッドセット（たとえば、ヘッドマウントディスプレイ）を着用した人が見ることができる。ここで、１つ以上の制御装置１０４を有する仮想コントローラ１０２は、仮想空間１００において見ることができる。たとえば、１つ（または複数）の制御装置１０４は、対応する物理的なコントローラ（図示せず）上でアクセス可能な物理的制御装置に対応可能である。仮想コントローラ１０２の形状は、物理的なコントローラの形状に対応、または類似し得る。同様に、１つ以上の制御装置１０８を有する他の仮想コントローラ１０６も仮想空間１００に示されている。
【００２３】
ＶＲプログラムを操作する人はそれぞれの手に物理的なコントローラの各々を持つことができる。たとえば、仮想コントローラ１０２のための物理的なコントローラを右手に持ち、仮想コントローラ１０６のための物理的なコントローラを左手に持つ。他の例として、コントローラは、人の体のある部分に取り付け可能である。コントローラは、その位置、速度および／または方位について追跡可能である。人が手または体の他の部分を使用して１つ（または複数）のコントローラを移動させるとき、仮想コントローラ１０２および／または１０６は、それに応じて仮想空間１００内で移動可能である。
【００２４】
この例では、仮想空間１００はＶＲプログラム内のペインティング環境と対応付けられている。図１Ａでは、仮想コントローラ１０２は、それ自体に割当てられたブラシ機能を有する。たとえば、仮想コントローラ１０２上の先端部１１０は、当該コントローラのためにブラシ機能が利用可能であることを示す。人は仮想コントローラ１０２に対応する物理的なコントローラを移動させることによって、仮想空間１００内にブラシストロークを生成することができる。たとえば、ここでは、ブラシストローク１１２は、仮想コントローラ１０２を用いて仮想空間１００内に生成されている。
【００２５】
さらに、仮想コントローラ１０６は、それ自体に割当てられたＶＲプログラムの他の機能を有する。ここでは、仮想ツールボックス１１４が、仮想コントローラ１０６を少なくとも部分的に取り囲むように、仮想空間１００内に模式的に示されている。たとえば、仮想ツールボックス１１４は、それ自体が割当てられた仮想コントローラ、ここでは仮想コントローラ１０６に対して固定可能であり、それによって、仮想ツールボックス１１４は、当該仮想コントローラと共に仮想空間１００内で移動する。仮想ツールボックス１１４は、利用可能な１つ以上の仮想機能を含み得る。
【００２６】
ここで、仮想ツールボックス１１４上のホイール１１６は、ペインティング環境のブラシ機能のためのパレットに対応する。したがって、ホイール１１６は、ペインティング環境において１つ以上のパレット機能のために使用可能である。たとえば、先端部１１０をホイール１１６の選択された部分に接触させて特定の色、テクスチャ、パターン、および／または他のペイント特徴をペイントブラシに割当てることが可能である。たとえば、ブラシストローク１１２の１つ以上の特徴は、ホイール１１６を使用して制御可能である。１つ以上の他の機能を、ツールボックス１１４と対応付けることが可能である。ここでは、機能１１８が模式的に示されている。これらは、ペインティング環境の他の機能、たとえば、異なるマーク付け実行（ペンなど）の選択および／または現在のマーク付け実行（濃さなど）のあるアスペクトの変更などに関連し得る。
【００２７】
いくつかの実施形態例では、仮想コントローラ１０２は、現在支配的なコントローラであると考えることができる。なぜなら、仮想空間１００にマーク付けを行うという比較的要求がより厳しい操作のために使用されるからである。これに対して、仮想コントローラ１０６は、現在非支配的なコントローラであると考えることができる。なぜなら、その目的は主に、仮想コントローラ１０２によって使用されるべき１つ以上のツールを提供すること、および／または、仮想コントローラ１０２の機能を増大させることであり得るからである。
【００２８】
ＶＲプログラムは、仮想空間１００内で機能の割当ておよび／または機能の割当ての解除を行う１つ以上の方法を提供可能である。いくつかの実施形態例では、スワッピング機能１２０によって模式的に示されるように、仮想コントローラ１０２と１０６との間で機能をスワップ可能である。たとえば、これは、ユーザが手で物理的なコントローラを物理的に切替えることを必要とせずに、一方の手から他方の手に支配的なコントローラを切替えるために使用可能である。スワッピング機能１２０は、仮想コントローラ１０２および／または１０６に対応する物理的なコントローラの１つ以上を用いて、あらかじめ定義されたジェスチャを行うことによって引き起こされ得る。
【００２９】
人がそのようなあらかじめ定義されたジェスチャを実行し、システムがこれをスワッピング機能１２０を起動する信号と解釈したとする。図１Ｂは、スワッピング機能１２０を実行後の仮想空間１００の例を示す図である。仮想コントローラ１０２および１０６は、ジェスチャが行われる前ではなく行われた後に異なる位置になり得る例もあるが、現在、ほぼ図１Ａのような位置にある。しかしながら、ＶＲプログラム内の機能は、ジェスチャに応じて再割当てされている。たとえば、先端部１１０はもはや仮想コントローラ１０２には割当てられておらず、仮想コントローラ１０６に現在割当てられている。同様に、ツールボックス１１４およびそれと対応付けられたツールはもはや仮想コントローラ１０６に割当てられておらず、仮想コントローラ１０２に現在割当てられている。マーク付け実行として定義されたときに仮想コントローラ１０２を用いて生成されたブラシストローク１１２が、依然として仮想空間１００で可視状態である。人はそこで、マーク付け実行として、仮想コントローラ１０６を用いて仮想空間１００に１つ以上のマーク付けを行うことが可能である。たとえば、人は、仮想コントローラ１０６を用いて他のブラシストローク１２２を生成可能である。これに対して、仮想コントローラ１０２は、ホイール１１６、１つ（または複数）の機能１１８、および／または仮想ツールボックス１１４と対応付けられた他の機能のために現在使用可能である。
【００３０】
スワッピング機能１２０は、仮想空間１００内で機能の割当てまたは機能の割当ての解除を行う便利な方法を提供可能である。たとえば、人がＶＲプログラムを起動すると図１Ａの構成が割当てられると仮定する。すなわち、ブラシ機能が、右側の物理的なコントローラを用いた起動に現在利用可能である。これはデフォルト設定であってもよい、または、起動されると主装置（たとえば、ＶＲプログラムを実行するコンピュータ筐体）に対する物理的なコントローラの空間位置に基づいていてもよい。さらに、人が右手ではなく左手を使用したペイントを好むと仮定する。そのため、人は、スワッピング機能１２０を起動して仮想コントローラ１０２から仮想コントローラ１０６へブラシ機能を便利に再割当て可能である（左手を用いて作動される）、かつ、残りの機能を仮想コントローラ１０２に再割当て可能である（右手を用いて作動される）。このスワッピング（または他の再割当てもしくは割当て解除）がシステムによって行われると、その結果として生じる１つ（または複数）の割当てを、ＶＲプログラムのためにデフォルトとして記憶可能である。たとえば、同じユーザが次にＶＲプログラムを起動すると、図１Ｂに示すように割当てが行われ得る。１つ以上の機能の割当てまたは再割当ては、行われなくてもよい、または逆でもよい。たとえば、ユーザがあらかじめ定義されたジェスチャ（または他のジェスチャ）を再度行うと、システムは過去に行われた割当てを取り消してもよい、または逆にしてもよい。
【００３１】
すなわち、コンピュータシステムにおいて、仮想コントローラを物理的なコントローラと対応付けることを備える方法を行うことができる。たとえば、仮想コントローラ１０２を、ユーザが右手に持つ物理的なコントローラ（図示せず）と対応付けることができる。この方法は、第１の機能を仮想コントローラに割当てて、物理的なコントローラを用いて第１の機能の性能を与えることを備え得る。たとえば、先端部１１０によって例示されるブラシ機能を、仮想コントローラ１０２に割当てることができる。この方法は、物理的なコントローラを用いて行われるジェスチャを検出することを備え得る。たとえば、ユーザは、あらかじめ定義されたジェスチャを行ってスワッピング機能１２０を起動可能である。この方法は、ジェスチャの検出に応じて、仮想コントローラから第１の機能の割当てを解除すること、または、第２の機能を仮想コントローラに割当てることを備え得る。たとえば、仮想コントローラ１０２から先端部１１０の割当てを解除可能である。他の例として、仮想ツールボックス１１４を仮想コントローラ１０２に割当て可能である。
【００３２】
図２Ａ〜図２Ｆは、仮想コントローラのための機能割当ての他の例を示す図である。ここでは、仮想コントローラ２００および２０２が仮想空間２０４において示されている。たとえば、仮想空間２０４を、ＶＲヘッドセットを用いてまたは他の方法で眺めることができる。現在、仮想コントローラ２０２は、「Ｄ」というラベルによって示されるように、支配的なコントローラである。このラベルは、ここでは例示のために用いられており、仮想空間２０４において可視である必要はない。支配的なコントローラとして定義されたことにより、少なくとも１つの機能が仮想コントローラ２０２に割当て可能である。
【００３３】
ユーザが左側のコントローラから右側のコントローラへ優勢を切替えたいと思っていると仮定する。ユーザは、仮想コントローラ２００および２０２と対応付けられた物理的なコントローラ（図示せず）のうちの１つ以上を用いて、あらかじめ定義されたジェスチャを行うことが可能である。図２Ａの矢印２０６は、ユーザがここで仮想コントローラ２００および２０２を相互に離し始めたことを示す。
【００３４】
図２Ｂでは、それぞれの矢印２０８は、ユーザが仮想コントローラ２００および２０２を反対方向に向けたことを示す。たとえば、仮想コントローラ２００および２０２のそれぞれの端部２１０は、現在向かい合っている。任意の端部を使用可能であり、このような端部はコントローラの上端部および／または底端部を含むが、これに限定されるわけではない。
【００３５】
図２Ｃでは、それぞれの矢印２１２は、ユーザが仮想コントローラ２００および２０２を互いに向けて、ここでは実質的に水平に移動させることを示す。これは、仮想コントローラ２００および２０２のそれぞれの端部２１０が相互に接触するまで、またはほぼ接触するまで行うことができる。いくつかの実施形態例では、動きは、仮想コントローラ２００および２０２が最初に少なくとも最小距離だけ離された場合に認識可能であり、その後、これらの装置の互いに向かう動きが開始される。たとえば、これによって、ユーザが意図せずにジェスチャを行うことを避けることができる。
【００３６】
図２Ｄでは、矢印２１４は、ユーザがその後仮想コントローラ２００および２０２を互いに遠ざけることを示す。いくつかの実施形態例では、これは、図２Ｃの互いに近づけられる態様の方向とは実質的に反対方向に行うことができる。いくつかの実施形態例では、仮想コントローラ２００および２０２が少なくとも最小距離だけ遠ざけられると、動きを認識可能である。たとえば、これによって、ユーザが意図せずにジェスチャを行うことを避けることができる。
【００３７】
矢印２０６、２０８、２１２および／または２１４によって示される動きは、システムによって、仮想コントローラ２００および２０２のうちの１つ以上に対する機能の割当ておよび／または機能の割当て解除と対応付けられた、あらかじめ定義されたジェスチャのユーザによる意図された行為であると解釈可能である。たとえば、ジェスチャは、仮想コントローラ２００および２０２と対応付けられた物理的なコントローラが互いに近づけられその後互いに遠ざけられることを含み得る。他の例として、ジェスチャは、物理的なコントローラのそれぞれの端部が互いに近づけられその後互いに遠ざけられることを含み得る。そのような１つ（または複数）のジェスチャの検出に応じて、システムは割当て／割当て解除を行い得る。
【００３８】
たとえば、優勢をある仮想コントローラから他の仮想コントローラへと切替えることができる。図２Ｅは、仮想コントローラ２００が現在支配的なコントローラであることを示す。これに対して、仮想コントローラ２０２は、もはや支配的なコントローラではない。たとえば、これは、人が１つ以上のＶＲプログラムにおいて仮想コントローラの利き手を切替える便利な方法であり得る。
【００３９】
図２Ｆは、それぞれの矢印２１６によって示されるように、ユーザが仮想コントローラ２００および２０２をより直立のまたは前方の方位に向けることを示す図である。いくつかの実施形態例では、これにより、ユーザが１つ（または複数）の仮想コントローラに割当てられた１つ以上の機能の実行を開始するために、１つ（または複数）の仮想コントローラを適切な位置に設けうる。たとえば、ユーザは現在支配的な仮想コントローラ２００を用いて仮想空間２０４において１つ以上の機能を実行可能である。
【００４０】
少なくとも１つの物理的なコントローラを用いたジェスチャの性能は、１つ以上の方法で検出可能である。物理的なコントローラ上にまたはこの内部に、および／または、物理的なコントローラの位置および移動を検出可能な他の場所に配置可能なセンサを使用可能である。たとえば、システムの他のコンポーネントは、１つ（または複数）の物理的なコントローラの位置、速度、および／または方位を検出できるように、１つ（または複数）のセンサを含み得る。
【００４１】
いくつかの実施形態例では、仮想空間２０４ならびに仮想コントローラ２００および２０２を生成するＶＲシステムは、ユーザに提示されるように各フレームが仮想空間の瞬間に対応するフレームに基づいて、動作可能である。フレームごとに、１つ以上の物理的なコントローラの位置をシステムによって決定可能である。物理的なコントローラが移動中の場合、その位置は、あるフレームから次のフレームへと変化し得る。そのようなフレームデータに基づいて、システムは、物理的なコントローラについての１つ以上の特徴を決定可能である。たとえば、物理的なコントローラの速度および位置は、２つ以上のフレームにわたるセンサデータから推定可能である。他の例として、物理的なコントローラの方位（その端部が指し示す方位など）を、センサデータから推定可能である。たとえば、そのような速度、位置および／または方向情報を使用してジェスチャを検出可能であり、これらは例示されたものを含むが、上述の例示に限定されるわけではない。
【００４２】
図３は、システム３００の例を示す図である。ここでは、システム３００は、ＶＲ機能を生成するＶＲシステムである。すなわち、たとえばユーザがＶＲヘッドセットおよび１つ以上の物理的なコントローラを使用して相互作用するように、ＶＲシステム３００を使用して１つ以上のＶＲアプリケーションを実行可能である。特に、ＶＲシステム３００は、１つ以上のＶＲ空間３０２を生成可能である。たとえば、仮想空間１００（図１Ａ〜図１Ｂ）および／または仮想空間２０４（図２Ａ〜図２Ｆ）を生成可能である。
【００４３】
ここでは、ＶＲシステム３００は、その内部に定義された複数のＶＲ機能３０４を有する。ある機能は、ＶＲプログラムによって提供されるべきタイプの機能と関連し得る。グラフィックスまたは他のビジュアルアートに関連するＶＲプログラムでは、ＶＲ機能３０４はブラシ機能およびパレット機能を含み得るが、これら２つはただの例に過ぎない。
【００４４】
また、ＶＲシステム３００は、その内部に定義された複数のＶＲコントローラ３０６を有し得る。いくつかの実施形態例では、仮想コントローラ３０６のうちの１つ以上は、ユーザがＶＲコントローラ３０６を操作可能な物理的なコントローラに視覚的に類似している。たとえば、ＶＲコントローラ３０６は、仮想コントローラ１０２および１０６（図１Ａ〜図１Ｂ）および／または仮想コントローラ２００および２０２（図２Ａ〜図２Ｆ）を含み得る。ＶＲ機能３０４は、割当て機能３０８によって、ＶＲコントローラ３０６のそれぞれに割当てられる。たとえば、ＶＲコントローラ３０６のうちの１つは、ＶＲ機能３０４のうちの１つ以上をそれ自体に割当て可能である。ＶＲ機能３０４は、（たとえば、図１Ａの仮想コントローラ１０２上の先端部１１０のように）対応するＶＲコントローラ３０６の視覚的な機能として示すことができる。割当ては、ユーザによって、および／または、システムによって変更可能である。たとえば、ユーザは、あらかじめ定義されたジェスチャを実行して仮想コントローラに関連するスワッピング機能を起動することができる。スワッピング機能は、割当て機能３０８の一部である。
【００４５】
ＶＲシステム３００は、複数の物理的なコントローラ３１０を含み得る。いくつかの実施形態例では、物理的なコントローラは、位置、速度および／または方位の観点から１つ以上の点においてＶＲシステムによって追跡される物理的なデバイスであるが、これに限定されるわけではない。たとえば、物理的なコントローラ３１０は、仮想コントローラ１０２および１０６（図１Ａ〜図１Ｂ）ならびに／または仮想コントローラ２００および２０２（図２Ａ〜図２Ｆ）を操作するために使用される物理的なコントローラを含み得る。ＶＲコントローラ３０６は、対応付け機能３１２によって物理的なコントローラ３１０のそれぞれと対応付けられる。たとえば、ＶＲコントローラ３０６のうちの１つが物理的なコントローラ３１０のうちの１つ以上と対応付けられ得る。その後物理的なコントローラ３１０を使用して、それ自体が対応付けられたＶＲコントローラ３０６を操作可能である。この対応付けは、ユーザおよび／またはシステムによって変更可能である。
【００４６】
物理的なコントローラ３１０は、基本的に互いに同一であり得る。たとえば、各コントローラは他の物理的なコントローラと実質的に同じハードウェア構成（たとえば、その電子機器回路および外観の要素）を有し得、生成された信号（たとえば、固有の識別子）のいくつかの特徴によって区別可能である。他の実施形態例では、物理的なコントローラ３１０のうちの２つ以上は互いにいくつかの物理的な相違を有し得る。たとえば、ある物理的なコントローラ３１０は、右手で持たれるように構成された外観要素を有し得、他の物理的なコントローラ３１０は、左手で持たれるように構成された外観要素を有し得る。
【００４７】
検出システム３１４を使用可能である。検出システム３１４は、ＶＲシステム３００および／または物理的なコントローラ３１０の一部であり得る、または、他のユニットと相互作用する別のコンポーネントであり得るが、これは単なる例に過ぎない。検出システム３１４は、１つ以上のセンサ３１６を使用して物理的なコントローラ３１０のうちの少なくとも１つに関するいくつかの特徴を決定することに基づいている。この決定は、検出システム３１４と物理的なコントローラ３１０との間の結合３１８を用いて模式的に示されている。たとえば、１つ（または複数）のセンサ３１６は物理的なコントローラ３１０の上にまたはこの内部に位置決め可能であり、その位置、速度および／または方向を反映する信号を生成可能である。他の例として、１つ（または複数）のセンサ３１６は、ユーザがＶＲシステム３００を使用している空間内で（たとえば、室内で）位置決め可能であり、１つまたは複数の態様で１つ（または複数）の物理的なコントローラ３１０の特徴を検出可能である。センサは、１つ以上の好適なセンシング技術を用いて動作可能である。たとえば、光学、オーディオ、電磁気信号または他の形態の通信を使用可能であるが、これらに限定されるわけではない。
【００４８】
検出システム３１４は、１つ（または複数）の物理的なコントローラ３１０に関するセンサデータに基づいて１つ以上の信号を生成可能である。いくつかの実施形態例では、位置、速度、および／または方位の推定を行うことができる。たとえば、この推定は、検出システム３１４によって行うことが可能であり、信号３２０によって割当て機能３０８に与えることが可能である。他の例として、信号３２０は１つ（または複数）の物理的なコントローラ３１０に関する生センサデータを含み、ＶＲシステム３００は、（たとえば、割当て機能３０８によって）１つまたは複数のタイプの推定を行うことが可能である。したがって、ＶＲコントローラ３０６のうちの少なくとも１つに対する仮想機能３０４のうちの１つ以上の割当てを、信号３２０に基づいて更新可能である。
【００４９】
図４〜図５は、方法４００および５００の例を示す図である。これらの方法は、ＶＲシステム３００（図３）を含むコンピュータシステムにおいて実行可能であるが、これに限定されるわけではない。いくつかの実施形態例では、非一時的な記憶媒体に有形に記憶可能なコンピュータプログラム製品に命令が記憶されている。命令は、実行されると、プロセッサに方法４００および／または５００の動作を行わせことができる。１つ以上の追加のステップが行われてもよく、または行われるステップの数はより少なくてもよい。他の例として、２つ以上の動作を異なる順番で行うことができる。
【００５０】
方法４００から始め、４１０において、仮想コントローラがコンピュータシステム内の物理的なコントローラと対応付けられる。４２０において、第１の機能が仮想コントローラに割当てられる。この割当てにより、物理的なコントローラを使用して第１の機能の性能が与えられる。４３０において、物理的なコントローラを用いて行われたジェスチャが検出される。４４０において、ジェスチャの検出に応じて、第１の機能は仮想コントローラから割当てを解除される、または、第２の機能が仮想コントローラに割当てられる。
【００５１】
次に方法５００に進み、５１０において、センサデータを受信可能である。このセンサデータは、１つ以上の物理的なコントローラと関連し得る。５２０において、１つ（または複数）の物理的なコントローラに関する速度データをセンサデータから推定可能である。５３０において、１つ（または複数）の物理的なコントローラに関する位置データをセンサデータから推定可能である。５４０において、１つ（または複数）の物理的なコントローラに関する方位データをセンサデータから推定可能である。５５０において、１つ（または複数）の物理的なコントローラを用いてなされた１つ以上のジェスチャを検出可能である。これは図２Ａ〜図２Ｆにおいて例示されたジェスチャを含み得るが、これらに限定されるわけではない。
【００５２】
図６Ａ〜図６Ｃは、仮想コントローラのための機能割当ての他の例を示す図である。ここでは、仮想空間６００は現在、仮想コントローラ６０２を含む。仮想コントローラ６０２を、物理的なコントローラ（図示せず）を用いて操作可能である。仮想コントローラ６０２は、それ自体に割当てられた１つ以上の機能を有しており、それらの機能のうちの一部は、仮想空間６００において可視であるグリッド６０４によって模式的に示されている。たとえば、グリッド６０４は、ユーザが物理的なコントローラを用いて仮想コントローラ６０２を操作することによって現在行うことが可能な少なくとも１つの機能を示す。ここで、ユーザが仮想コントローラ６０２からグリッド６０４によって示される１つ（または複数）の機能を一時的に取り除こうとしていると仮定する。この目的のために、ユーザは、仮想空間６００において定義されるポイント６０６を使用可能である。
【００５３】
いくつかの実施形態例では、ユーザは、仮想コントローラ６０２の少なくとも物理的なコントローラを用いて、あらかじめ定義されたジェスチャを行い得る。ジェスチャが行われたとシステムが認識すると、システムは代わりに、仮想コントローラ６０２の１つ以上の機能をポイント６０６に割当て可能である。図６Ｂは、グリッド６０４が仮想コントローラ６０２に現在割当てられているのではなく仮想空間６００内のポイント６０６に現在割当てられていることを示す。この動作は、たとえば、ユーザがあらかじめ定義されたジェスチャを再度行うと元に戻せる。
【００５４】
仮想コントローラ６０２に割当てられた１つ以上の機能は、グリッド６０４が仮想コントローラ６０２からの割当てを解除された後も留まることが可能である。ここで、仮想コントローラ６０２には依然として先端部６０８が設けられている。先端部６０８は、グリッド６０４の割当て解除の前に仮想コントローラ６０２に割当てておくこともできる。たとえば、ペインティングを特徴とするＶＲプログラムにおいて、先端部６０８は、たとえばブラシ機能によって、仮想コントローラ６０２を用いてペイント（描画）する能力を模式的に示し得る。したがって、ユーザは、システムが仮想コントローラ６０２から他の１つ（または複数）の機能の割当てを解除した後も、仮想コントローラ６０２を使用してペイントまたは描画する能力を依然として有しうる。これによって、実用的な柔軟性がもたらされ得る。たとえば、図６Ｃは、システムが、仮想コントローラ６０２を操作するものではなく、他の物理的なコントローラを使用して操作される他の仮想コントローラ６１０を有し得ることを示す図である。仮想コントローラ６１０は、それ自体の対応する先端部６１２を有し得る。したがって、ユーザは現在、仮想空間６００における仮想ペインティングのために、仮想コントローラ６０２および６１０のいずれか、または仮想コントローラ６０２および６１０の双方を同時に使用可能である。どこかの時点で、グリッド６０４の１つ（または複数）の機能を使用するために、ユーザは、必要とされるジェスチャを行ってポイント６０６から１つ（または複数の）機能の割当てを解除可能であり、代わりに、１つ（または複数）の機能を仮想コントローラ６０２および６１０のうちの少なくとも１つに割当てることが可能である。
【００５５】
図７は、ここで説明する技術を実現するために使用可能なコンピュータデバイス およびモバイルコンピュータデバイスの例を示す図である。図７は、ここで説明する技術と共に使用可能な、汎用コンピュータデバイス７００および汎用モバイルコンピュータデバイス７５０の例を示す図である。コンピューティングデバイス７００は、様々な形式のデジタルコンピュータ、たとえば、ラップトップ、デスクトップ、タブレット、ワークステーション、パーソナルデジタルアシスタント、テレビ、サーバ、ブレードサーバ、メインフレーム、および他の好適なコンピューティングデバイスを表すように意図されている。コンピューティングデバイス７５０は、様々な形式のモバイルデバイス、たとえば、パーソナルデジタルアシスタント、携帯電話、スマートフォン、および他の類似のコンピューティングデバイスを表すように意図されている。ここで示すコンポーネント、これらの接続および関係、ならびにこれらの機能は、例示に過ぎないことが意図されており、本特許明細書で説明される発明および／または請求項の実施を限定するように意図されたものではない。
【００５６】
コンピューティングデバイス７００は、プロセッサ７０２、メモリ７０４、記憶装置７０６、メモリ７０４と高速拡張ポート７１０とに接続する高速インターフェース７０８、および低速バス７１４と記憶装置７０６とに接続する低速インターフェース７１２を備える。プロセッサ７０２は、半導体を利用したプロセッサであり得る。メモリ７０４は、半導体を利用したメモリであり得る。コンポーネント７０２、７０４、７０６、７０８、７１０、および７１２の各々は、さまざまなバスを用いて相互接続されており、共通のマザーボードにまたは他の好適な態様で必要に応じて搭載可能である。プロセッサ７０２は、コンピューティングデバイス７００内での実行のための命令を処理し得る。これらの命令は、高速インターフェース７０８に接続されたディスプレイ７１６などの、外部入出力デバイス上のＧＵＩのために図形情報を表示するようにメモリ７０４または記憶装置７０６に記憶された命令を含む。他の実施形態例では、複数のプロセッサおよび／または複数のバスは、必要に応じて、複数のメモリおよび複数のタイプのメモリと共に使用可能である。また、複数のコンピューティングデバイス７００は、必要な動作の一部を提供する各デバイスと接続され得る（たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして）。
【００５７】
メモリ７０４は、コンピューティングデバイス７００内の情報を記憶する。ある実施形態例では、メモリ７０４は、１つまたは複数の揮発性メモリユニットである。他の実施形態例では、メモリ７０４は、１つまたは複数の不揮発性メモリユニットである。また、メモリ７０４は、磁気ディスクまたは光学ディスクなど、他の形式のコンピュータ可読媒体であり得る。
【００５８】
記憶装置７０６は、コンピューティングデバイス７００のために大容量記憶装置を提供可能である。ある実施形態例では、記憶装置７０６は、フロッピー（登録商標）ディスクデバイス、ハードディスクデバイス、光学ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の類似の固体状態記憶装置デバイス、またはストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスの配列であり得る、またはこれらを含み得る。コンピュータプログラム製品は、情報担体において有形に具現化可能である。また、コンピュータプログラム製品は、実行されると上述のような１つ以上の方法を行う命令も含み得る。情報担体は、メモリ７０４、記憶装置７０６、またはプロセッサ７０２上のメモリなど、コンピュータ可読媒体またはマシン可読媒体である。
【００５９】
高速コントローラ７０８はコンピューティングデバイス７００のための帯域幅集中操作を処理する一方で、低速コントローラ７１２は、より低い帯域幅集中操作を処理する。機能のこのような割当ては、例示にすぎない。ある実施形態例では、高速コントローラ７０８は、メモリ７０４、ディスプレイ７１６（たとえば、グラフィックプロセッサまたはアクセラレータを介して）、および、さまざまな拡張カード（図示せず）を受け付け可能な高速拡張ポート７１０に接続される。本実施形態例では、低速コントローラ７１２は、記憶装置７０６および低速拡張ポート７１４に接続される。さまざまな通信ポート（たとえば、ＵＳＢ、ブルートゥース（登録商標）、イーサネット（登録商標）、無線イーサネット）を含み得る低速拡張ポートは、たとえばネットワークアダプタを介して、キーボード、ポインティングデバイス、スキャナなどの１つ以上の入出力デバイス、または、スイッチもしくはルータなどのネットワーキングデバイスに接続可能である。
【００６０】
コンピューティングデバイス７００は、図に示すように、多くの異なる形式で実現可能である。たとえば、標準的なサーバ７２０として、またはそのようなサーバのグループにおいて何度も実現可能である。また、ラックサーバシステム７２４の一部としても実現可能である。さらに、ラップトップコンピュータ７２２などのパーソナルコンピュータにおいて実現可能である。代替的に、コンピューティングデバイス７００からのコンポーネントは、デバイス７５０などのモバイルデバイス（図示せず）における他のコンポーネントと組み合わせ得る。このようなデバイスの各々は、コンピューティングデバイス７００、７５０のうちの１つ以上を含み得、システム全体を、互いに通信する複数のコンピューティングデバイス７００、７５０で構成し得る。
【００６１】
コンピューティングデバイス７５０は、他のコンポーネントのうち、プロセッサ７５２、メモリ７６４、ディスプレイ７５４などの入出力デバイス、通信インターフェース７６６、およびトランシーバ７６８を含む。また、デバイス７５０には、追加のストレージを提供するために、マイクロドライブまたは他のデバイスなどの記憶デバイスが設けられ得る。コンポーネント７５０、７５２、７６４、７５４、７６６、および７６８の各々は、さまざまなバスを用いて相互接続され、これらのコンポーネントのうちの複数は、共通のマザーボードにまたは必要に応じて他の態様で搭載され得る。
【００６２】
プロセッサ７５２は、メモリ７６４に記憶された命令を含む、コンピューティングデバイス７５０内の命令を実行可能である。プロセッサは、別々の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現可能である。プロセッサは、たとえば、ユーザインターフェース、デバイス７５０によって実行されるアプリアケーション、およびデバイス７５０による無線通信の制御など、デバイス７５０の他のコンポーネントの協調をもたらし得る。
【００６３】
プロセッサ７５２は、ディスプレイ７５４に接続された制御インターフェース７５８およびディスプレイインターフェース７５６を介してユーザと通信可能である。ディスプレイ７５４は、たとえば、ＴＦＴ  ＬＣＤ（薄膜トランジスタ液晶ディスプレイ）もしくはＯＥＬＤ（有機発光ダイオード）ディスプレイ、または他の好適なディスプレイ技術であり得る。ディスプレイインターフェース７５６は、ディスプレイ７５４を駆動してユーザにグラフィカル情報および他の情報を提示するための好適な回路を含み得る。制御インターフェース７５８は、ユーザからのコマンドを受信し得、プロセッサ７５２に送信するためにコマンドを変換し得る。さらに、外部インターフェース７６２は、デバイス７５０の他のデバイスとの近距離通信が可能になるように、プロセッサ７５２との通信において提供され得る。外部インターフェース７６２は、たとえば、いくつかの実施形態例では有線通信を提供し得る、または他の実施形態例では無線通信を提供し得る、かつ、複数のインターフェースも使用し得る。
【００６４】
メモリ７６４は、コンピューティングデバイス７５０内の情報を記憶する。メモリ７６４は、１つもしくは複数のコンピュータ可読媒体、１つもしくは複数の揮発性メモリユニット、または１つもしくは複数の不揮発性メモリユニットのうちの１つまたは複数として実現可能である。また、拡張メモリ７７４を、拡張インターフェース７７２を通じてデバイス７５０に設ける、および接続することが可能であり、このインターフェースは、たとえば、ＳＩＭＭ（シングルインラインメモリモジュール）カードインターフェースを含み得る。このような拡張メモリ７７４は、デバイス７５０のために追加の記憶空間を提供し得る、または、デバイス７５０のためにアプリケーションまたは他の情報を記憶し得る。具体的に、拡張メモリ７７４は、上述の処理の実行または補足を行う命令を含み得、セキュアな情報も含み得る。そのため、たとえば、拡張メモリ７７４はデバイス７５０のためのセキュリティーモジュールとして提供可能であり、デバイス７５０のセキュアな使用を許可する命令でプログラム可能である。さらに、セキュアなアプリケーションは、追加の情報と共にＳＩＭＭカードを介して提供され得、たとえば、ハッキング不可能な態様でＳＩＭＭカードに識別情報を置く。
【００６５】
メモリは、たとえば、以下で説明するように、フラッシュメモリおよび／またはＮＶＲＡＭメモリを含み得る。一実施形態例では、コンピュータプログラム製品は、情報担体において有形に具現化される。コンピュータプログラム製品は、実行されると、上述のような１つまたは複数の方法を行う命令を含む。情報担体は、たとえばトランシーバ７６８もしくは外部インターフェース７６２を介して受信可能なメモリ７６４、拡張メモリ７７４、またはプロセッサ７５２上のメモリなどの、コンピュータ可読媒体またはマシン可読媒体である。
【００６６】
デバイス７５０は、必要に応じてデジタル信号処理回路を含み得る通信インターフェース７６６を介して無線通信可能である。通信インターフェース７６６は、とりわけ、ＧＳＭ（登録商標）音声電話、ＳＭＳ、ＥＭＳもしくはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ（登録商標）、ＣＤＭＡ２０００、またはＧＰＲＳなどの、さまざまなモードまたはプロトコールで通信を提供し得る。このような通信は、たとえば、無線周波トランシーバ７６８を通じて発生し得る。さらに、近距離通信は、ブルートゥース、ＷｉＦｉまたは他のそのようなトランシーバ（図示せず）を使用することによって発生し得る。さらに、ＧＰＳ（全地球測位システム）レシーバモジュール７７０は、追加のナビゲーション関連無線データおよび位置関連無線データをデバイス７５０に提供し得る。これらの情報は、デバイス７５０上で実行されているアプリケーションによって必要に応じて使用され得る。
【００６７】
デバイス７５０は、ユーザからの音声情報を受信して利用可能なデジタル情報に変換し得るオーディオコーデック７６０を用いて、可聴的に通信することも可能である。同様に、オーディオコーデック７６０は、たとえばデバイス７５０のハンドセットにおいてスピーカを通して、ユーザのために可聴音を生成することも可能である。このような音は、電話音声コールからの音を含み得る、記録された音（たとえば、ボイスメッセージ、ミュージックファイルなど）を含み得る、および、デバイス７５０上で動作するアプリケーションによって生成された音も含み得る。
【００６８】
コンピューティングデバイス７５０は、図に示すように、複数の異なる形式で実現可能である。たとえば、携帯電話７８０として実現可能である。また、スマートフォン７８２、パーソナルデジタルアシスタント、または他の類似のモバイルデバイスの一部としても実現可能である。
【００６９】
ユーザは、追跡されたコントローラ７８４を用いてコンピューティングデバイスと相互作用可能である。いくつかの実施形態例では、コントローラ７８４は、手、足、頭および／または胴体などのユーザの体の移動を追跡可能であり、追跡された動きに対応する入力を生成することも可能である。入力は、たとえば３次元など、動きの１つ以上の次元で移動に対応し得る。たとえば、追跡されたコントローラは、ＶＲアプリケーションにおいて１つ以上の仮想コントローラと対応付けられた、ＶＲアプリケーション用の物理的なコントローラであり得る。他の例として、コントローラ７８４は、データグローブを含み得る。
【００７０】
ここで説明するシステムおよび技術のさまざまな実施形態例は、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣｓ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはこれらの組合せで実現可能である。これらのさまざまな実施形態例は、特定のまたは一般の目的でもよい、記憶システムとの間でデータおよび命令を送受信するように接続された少なくとも１つのプログラム可能なプロセッサ、少なくとも１つの入力デバイス、ならびに少なくとも１つの出力デバイスを含むプログラム可能なシステム上で実行可能なおよび／または解釈可能な１つ以上のコンピュータプログラムにおける実施形態例を含み得る。
【００７１】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている）は、プログラム可能なプロセッサのための機械命令を含み、ハイレベル手順のおよび／またはオブジェクト指向のプログラミング言語および／またはアセンブリ／機械言語で実現可能である。ここで使用されているように、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械可読信号として機械命令を受信する機械可読媒体を含むプログラム可能なプロセッサに機械命令および／またはデータを提供するために使用される任意のコンピュータプログラム製品、装置および／またはデバイス（たとえば、磁気ディスク、光学ディスク、メモリ、プログラム可能論理デバイス（ＰＬＤｓ））を表す。「機械可読信号」という用語は、プログラム可能なプロセッサに機械命令および／またはデータを提供するために使用される信号を表す。
【００７２】
ユーザとの相互作用を提供するために、ここで説明されるシステムおよび技術は、情報をユーザに表示するためのディスプレイデバイス（たとえば、ＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタ）、ユーザが入力をコンピュータに提供可能なキーボードおよびポインティングデバイス（たとえば、マウスまたはトラックボール）を有するコンピュータ上で実現可能である。他の種類のデバイスを使用してユーザとの相互作用を提供することも可能である。たとえば、ユーザに提供されるフィードバックはいかなる形式の感覚フィードバック（たとえば、視覚的なフィードバック、聴覚的なフィードバック、または触覚的なフィードバック）でもよい、かつ、ユーザからの入力は、聴覚的な入力、音声入力、または触覚的な入力を含むいかなる形式でも受信可能である。
【００７３】
ここで説明されるシステムおよび技術は、バックエンドコンポーネント（たとえば、データサーバ）を含む、または、ミドルウェアコンポーネント（たとえば、アプリケーションサーバ）を含む、またはフロントエンドコンポーネント（たとえば、それを通じて、ユーザがここで説明されるシステムおよび技術の実現と相互作用可能なグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータ）を含むコンピューティングシステムにおいて実現可能である。システムのコンポーネントは、デジタルデータ通信（たとえば、通信ネットワーク）のいかなる形式でもまたは媒体によっても相互接続可能である。通信ネットワークの例としては、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、およびインターネットが挙げられる。
【００７４】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、通常互いに離れており、通信ネットワークを介して相互接続することが一般的である。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され相互にクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
【００７５】
いくつかの実施形態例では、図７に示すコンピューティングデバイスは、仮想現実（ＶＲヘッドセット７８５）と相互作用するセンサを含み得る。たとえば、コンピューティングデバイス７５０または図７に示す他のコンピューティングデバイスに含まれる１つ以上のセンサは、入力をＶＲヘッドセット７８５へ、または一般に、入力をＶＲ空間へ提供可能である。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、生体認証センサ、温度センサ、湿度センサ、および環境光センサを含み得るが、これらに限定されるわけではない。コンピューティングデバイス７５０は、これらのセンサを用いてＶＲ空間内のコンピューティングデバイスの絶対位置および／または検出された回転を求めることができ、これはその後、ＶＲ空間への入力として使用可能である。たとえば、コンピューティングデバイス７５０は、コントローラ、レーザーポインタ、キーボード、武器など、仮想オブジェクトとしてＶＲ空間に組込むことができる。ＶＲ空間に組込まれると、ユーザによるコンピューティングデバイス／仮想オブジェクトの位置決めによって、ユーザは、コンピューティングデバイスを位置決めして、ＶＲ空間内で特定の態様で仮想オブジェクトを眺めることができる。たとえば、仮想オブジェクトがレーザポインタを表す場合、ユーザは、それがあたかも実際のレーザポインタであるかのようにコンピューティングデバイスを操作可能である。ユーザは、コンピューティングデバイスを、たとえば左右、上下、円形に移動させることが可能であり、レーザプリンタを使用する態様と類似の態様でデバイスを使用可能である。
【００７６】
いくつかの実施形態例では、コンピューティングデバイス７５０に備えられる、またはこれに接続する１つ以上の入力デバイスを、ＶＲ空間への入力として使用可能である。入力デバイスは、タッチスクリーン、キーボード、１つ以上のボタン、トラックパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイク、入力機能を有するイヤホンもしくはイヤーバッド、ゲームコントローラ、または他の接続可能な入力デバイスを含み得るが、これらに限定されるわけではない。コンピューティングデバイスがＶＲ空間に組込まれるとコンピューティングデバイス７５０に含まれる入力デバイスと相互作用するユーザは、ＶＲ空間において特定のアクションを発生させ得る。
【００７７】
いくつかの実施形態例では、コンピューティングデバイス７５０のタッチスクリーンは、ＶＲ空間内のタッチパッドとして提供され得る。ユーザは、コンピューティングデバイス７５０のタッチスクリーンと相互作用可能である。たとえばＶＲヘッドセット７８５において、相互作用は、ＶＲ空間のタッチパッドにおいて提供される動きとして提供される。提供される動きは、ＶＲ空間のオブジェクトを制御可能である。
【００７８】
いくつかの実施形態例では、コンピューティングデバイス７５０に含まれる１つ以上の出力デバイスは、ＶＲ空間のＶＲヘッドセット７８５のユーザへ出力および／またはフィードバックを提供可能である。出力およびフィードバックは、視覚的、触覚的、可聴的であり得る。出力および／またはフィードバックは、振動、１つ以上のライトまたはストロボのオンオフまたは点滅および／またはフラッシュ、警告音の再生、チャイムの鳴動、歌の再生、および音声ファイルの再生を含み得るが、これらに限定されるわけではない。出力デバイスは、振動モータ、振動コイル、圧電素子、静電素子、発光ダイオード（ＬＥＤｓ）、ストロボ、およびスピーカを含み得るが、これらに限定されるわけではない。
【００７９】
いくつかの実施形態例では、コンピューティングデバイス７５０は、コンピュータによって生成された３Ｄ環境における他のオブジェクトとして表示され得る。ユーザによるコンピューティングデバイス７５０との相互作用（たとえば、回転、揺れ、タッチスクリーンとの接触、タッチスクリーンを横断する指のスワイプ）は、ＶＲ空間におけるオブジェクトとの相互作用として解釈可能である。ＶＲ空間におけるレーザポインタの例では、コンピューティングデバイス７５０は、コンピュータによって生成される３Ｄ環境における仮想レーザーポインタとして表示される。ユーザがコンピューティングデバイス７５０を操作すると、ＶＲ空間におけるユーザは、レーザポインタの移動が見える。ユーザは、コンピューティングデバイス７５０上のまたはＶＲヘッドセット７８５上のＶＲ空間におけるコンピューティングデバイス７５０との相互作用からフィードバックを受信する。
【００８０】
複数の実施形態について説明を行ったが、本発明の精神および範囲内でさまざまな修正が可能であることが理解されるであろう。
【００８１】
さらに、図面に示される論理の流れは、望ましい結果を得るために、図示された特定の順序または順番を必要とするものではない。さらに、上述の流れに他のステップを設けることが可能である、または、上述の流れからステップを削除することが可能である、および、説明されたシステムに他のコンポーネントを追加可能である、または、説明されたシステムからコンポーネントを削除可能である。そのため、他の実施形態は、以下の特許請求の範囲内である。
【図１Ａ】
0006859433.tif 000002
【図１Ｂ】
0006859433.tif 000003
【図２Ａ】
0006859433.tif 000004
【図２Ｂ】
0006859433.tif 000005
【図２Ｃ】
0006859433.tif 000006
【図２Ｄ】
0006859433.tif 000007
【図２Ｅ】
0006859433.tif 000008
【図２Ｆ】
0006859433.tif 000009
【図３】
0006859433.tif 000010
【図４】
0006859433.tif 000011
【図５】
0006859433.tif 000012
【図６Ａ】
0006859433.tif 000013
【図６Ｂ】
0006859433.tif 000014
【図６Ｃ】
0006859433.tif 000015
【図７】
0006859433.tif 000016