(57)【要約】  少なくとも１つの態様において、方法は、ユーザのヘッドマウントディスプレイ（ＨＭＤ）の位置を決定することと、ＨＭＤの位置に基づいて、関節の位置を定めることと、関節からセグメントの端部までのセグメントを定めることと、セグメントの端部の位置に基づいて、仮想現実（ＶＲ）環境内の仮想コントローラの初期仮想位置を定めることと、セグメントおよび関節に基づいて、物理コントローラの向きの変化に応じて、仮想環境内の仮想コントローラの仮想位置および仮想向きを定めることとを含むことができる。
2020529646.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行する方法であって、
ユーザのヘッドマウントディスプレイ（ＨＭＤ）の位置を決定することと、
前記ＨＭＤの前記位置から所定の距離に基づいて、関節の位置を定めることと、
前記関節からセグメントを定めることと、
前記セグメントの端部に基づいて、仮想環境内の仮想コントローラの位置を定めることと、
前記セグメントおよび前記関節に基づいて、物理コントローラの向きを、前記仮想環境内の前記仮想コントローラの仮想位置および仮想向きに変換することとを含む、コンピュータ実行方法。
【請求項２】
前記仮想コントローラは、前記物理コントローラのヨー運動に応じて、横方向に沿って移動するように構成されている、請求項１に記載のコンピュータ実行方法。
【請求項３】
前記仮想コントローラは、前記物理コントローラのピッチ運動に応じて、縦方向に沿って移動するように構成されている、請求項１に記載のコンピュータ実行方法。
【請求項４】
前記仮想コントローラは、前記物理コントローラのロール運動に応じて、前記物理コントローラが長手方向に整列させられた軸を中心にして回転するように構成されている、請求項１に記載のコンピュータ実行方法。
【請求項５】
前記セグメントは、第１のセグメントであり、
前記関節は、第１の関節であり、
前記方法は、前記第１のセグメントの端部に位置する第２の関節から延在する第２のセグメントを定めることをさらに含む、請求項１に記載のコンピュータ実行方法。
【請求項６】
前記第２のセグメントは、前記第２の関節を中心にして回転するように構成されている、請求項５に記載のコンピュータ実行方法。
【請求項７】
前記ユーザの位置が検出された場合、前記関節の前記位置を再び定めることをさらに含む、請求項１に記載のコンピュータ実行方法。
【請求項８】
コンピュータが実行する方法であって、
ユーザのヘッドマウントディスプレイ（ＨＭＤ）の位置を決定することと、
前記ＨＭＤの前記位置に基づいて、関節の位置を定めることと、
前記関節からセグメントの端部までのセグメントを定めることと、
前記セグメントの前記端部の位置に基づいて、仮想現実（ＶＲ）環境内の仮想コントローラの初期仮想位置を定めることと、
前記セグメントおよび前記関節に基づいて、物理コントローラの向きの変化に応じて、前記ＶＲ環境内の前記仮想コントローラの仮想位置および仮想向きを定めることとを含む、コンピュータ実行方法。
【請求項９】
前記仮想コントローラは、前記物理コントローラのヨー運動に応じて、横方向に沿って移動するように構成されている、請求項８に記載のコンピュータ実行方法。
【請求項１０】
前記仮想コントローラは、前記物理コントローラのピッチ運動に応じて、縦方向に沿って移動するように構成されている、請求項８に記載のコンピュータ実行方法。
【請求項１１】
前記仮想コントローラは、前記物理コントローラのロール運動に応じて、前記物理コントローラが長手方向に整列させられた軸を中心にして回転するように構成されている、請求項８に記載のコンピュータ実行方法。
【請求項１２】
前記セグメントは、第１のセグメントであり、
前記関節は、第１の関節であり、
前記方法は、前記第１のセグメントの端部に位置する第２の関節から延在する第２のセグメントを定めることをさらに含む、請求項８に記載のコンピュータ実行方法。
【請求項１３】
前記ユーザの位置が検出された場合、前記関節の前記位置を再び定めることをさらに含む、請求項８に記載のコンピュータ実行方法。
【請求項１４】
装置であって、
仮想現実（ＶＲ）環境を表示するように使用されたヘッドマウントディスプレイ（ＨＭＤ）と、
前記ＶＲ環境内のオブジェクトと対話するように構成された物理コントローラと、
プロセッサとを備え、
前記プロセッサは、
ユーザの前記ＨＭＤの位置を決定し、
前記ＨＭＤの前記位置に基づいて、関節の位置を定め、
前記関節からセグメントの端部までのセグメントを定め、および
前記物理コントローラの向きの変化に応じて、仮想コントローラの仮想位置および仮想向きの変化を定めるようにプログラムされ、
前記仮想コントローラは、前記セグメントの前記端部に固定されている。
【請求項１５】
前記仮想コントローラは、前記物理コントローラのヨー運動に応じて、横方向に沿って移動するように構成されている、請求項１４に記載の装置。
【請求項１６】
前記仮想コントローラは、前記物理コントローラのピッチ運動に応じて、縦方向に沿って移動するように構成されている、請求項１４に記載の装置。
【請求項１７】
前記仮想コントローラは、前記物理コントローラのロール運動に応じて、前記物理コントローラが長手方向に整列させられた軸を中心にして回転するように構成されている、請求項１４に記載の装置。
【請求項１８】
前記プロセッサは、前記ユーザの位置が検出された場合、前記関節の前記位置を再び定めるようにさらにプログラムされている、請求項１４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１７年９月１８日に出願された米国出願第１５／７０８０４０号の優先権を主張し、当該出願の開示の全体が参照により本明細書に組み込まれる。
【０００２】
技術分野
本明細書は、仮想現実（ＶＲ：virtual reality）システムに使用されるコントローラの３次元位置および向きを追跡することに関する。
【背景技術】
【０００３】
背景
いくつかのＶＲシステムにおいて、ユーザは、ヘッドマウントディスプレイ（ＨＭＤ：head-mounted display）および手持ち式コントローラを用いて、仮想環境内の任意数の仮想オブジェクトと対話する。このようなＶＲシステムにおいて、ユーザは、手持ち式コントローラを用いて、ＨＭＤを介してオブジェクトと対話することができる。しかしながら、３自由度（３ＤＯＦ：three degrees of freedom）追跡（例えば、向き追跡）のみを使用して、手持ち式コントローラを追跡するのは困難である場合がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
少なくとも一態様において、方法、例えばコンピュータが実行する方法は、ユーザのヘッドマウントディスプレイ（ＨＭＤ）の位置を決定することと、ＨＭＤの位置に基づいて、関節の位置を定めることと、関節からセグメントの端部までのセグメントを定めることと、セグメントの端部の位置に基づいて、仮想現実（ＶＲ）環境内の仮想コントローラの初期仮想位置を定めることと、セグメントおよび関節に基づいて、物理コントローラの向きの変化に応じて、ＶＲ環境内の仮想コントローラの仮想位置および仮想向きを定めることとを含むことができる。
【０００５】
１つ以上の実現例の詳細は、添付の図面および以下の説明に記載されている。他の特徴は、説明および図面ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００６】
【図１】ユーザの右側を表すために使用される例示的なＶＲアームモデルを示す斜視図である。
【図２Ａ】例示的な実施形態に従って、コントローラの位置を決定するためのシステムの例示的な実装を示す第三者視図である。
【図２Ｂ】例示的な実施形態に従って、コントローラの位置を決定するためのシステムの例示的な実装を示す第三者視図である。
【図２Ｃ】例示的な実施形態に従って、コントローラの位置を決定するためのシステムの例示的な実装を示す第三者視図である。
【図３】例示的な実施形態に従って、ＶＲ環境内のコントローラの位置を決定するために使用され得る例示的なＶＲシステムを示す図である。
【図４】ＶＲ空間内のＨＭＤ装置と通信可能に接続されたコントローラを示すブロック図である。
【図５】例示的な実施形態に従って、ＶＲ環境内のコントローラの位置を決定することに関連するフローチャートである。
【図６】例示的な実施形態に従って、ＶＲ環境内のコントローラの位置を決定することに関連するフローチャートである。
【図７Ａ】例示的実施形態に従って、ユーザが関節に対して動作することを示す概略図である。
【図７Ｂ】例示的実施形態に従って、ユーザが関節に対して動作することを示す概略図である。
【図８】本明細書に開示された例を実装するために使用され得る例示的なコンピュータ装置および例示的なモバイルコンピュータ装置を示すブロック概略図である。
【発明を実施するための形態】
【０００７】
詳細な説明
本明細書に記載の実現例において、物理的なＶＲコントローラは、３自由度（３ＤＯＦ）のみを用いて、通常ピッチ、ロールおよびヨーと呼ばれる、ｘ、ｙおよびｚ軸を中心にする回転を追跡する。したがって、このような物理コントローラは、回転動作を追跡することができる。物理コントローラまたは物理コントローラに関連するヘッドマウントディスプレイ（ＨＭＤ）が空間内の絶対位置を追跡しないため、物理コントローラの向きは、本質的に空間内の固定場所（または位置）で決定される。しかしながら、３ＤＯＦ追跡は、ＶＲアームモデルを用いてＨＭＤから見た仮想コントローラの空間位置および向きを推定（または投影）することができる。したがって、物理コントローラの３ＤＯＦ追跡を用いて、ＨＭＤから見ている仮想コントローラの６ＤＯＦ（ｘ、ｙ、ｚ軸の位置および向き）追跡を決定（推定、表現）することができる。いくつかの実現例において、ＶＲアームモデルは、ＶＲアームモデルとして呼ばれる。
【０００８】
例えば、ユーザは、様々な方法で頭を傾けたり回したりすることによって、ＨＭＤを介してＶＲ環境を見ることができる。しかしながら、物理コントローラが空間内の絶対位置（位置追跡など）を追跡しないというＶＲコントローラの３ＤＯＦ追跡機能の制限によって、ＨＭＤの視界内の仮想コントローラの追跡は、制限がある。しかしながら、ＶＲアームモデルは、物理コントローラの向き追跡を利用して、ＨＭＤから見られる仮想コントローラの位置および向きを生成することができる。したがって、本明細書に記載の実現例において、コントローラを保持している人間のＶＲ環境内の位置および向きをシミュレートすることができる。さらに、本明細書に記載の実現例において、仮想コントローラは、物理コントローラを保持および移動するユーザに対応するＶＲ環境内の場所にあってもよい。
【０００９】
本明細書に記載の実現例によれば、ＶＲシステムにおいて手持ち式物理コントローラを追跡するための改良された技術は、例えば、肘関節（第１の関節）と手首関節（第２の関節）との間のセグメントを定めることを含むことができる。セグメントおよび関節は、仮想コントローラの動作をエミュレートおよび表現する。改良された技術のいくつかの利点は、より安価で、より効率的、および／またはより簡単な（例えば、コントローラの向き以外の知識を殆ど必要としない）システムを提供することである。さらに、改良された技術は、その実装が簡単であり、比較的にユーザを没入させる十分な忠実度（例えば、精度）を有する。さらに、いくつかの実現例において、改良されたＶＲシステムを用いて物理コントローラを追跡するために、外部センサ（例えば、ＨＭＤの外部に面するカメラ）を設ける必要がない。
【００１０】
さらに、本明細書に記載の実現例において、最大で３つの回転動作、例えば、肘関節（第１の関節）周りの２つの回転動作および手首関節（第２の関節）周りの１つの回転動作、より具体的には、肘関節のｚ軸を中心にする動作およびｙ軸を中心にする動作および手首関節のｘ軸を中心にする動作を用いて、ＶＲ環境において、物理コントローラの動作の現実的な仮想表現を効果的且つ比較的に実現することができる。仮想環境に関して説明したが、本明細書に記載の技術は、拡張現実環境に適用することもできる。いくつかの実現例において、仮想環境という用語は、拡張現実環境であってもよく、拡張現実環境を含んでもよい。
【００１１】
図１は、ユーザを表すために使用される例示的なＶＲアームモデル１０を示す斜視図である。図面は、ユーザの右側を示しているが、ＶＲアームモデル１０は、ユーザの左側に適用することができる。この実現例において、ユーザは、ＨＭＤ８を着用している。図１には示されていないが、物理コントローラ１１２の位置は、ＶＲアームモデル１０に基づいて、ユーザによってＨＭＤから仮想コントローラ（図示せず）として見られる（例えば、表される）ことができる。ＶＲアームモデル１０は、論じるために図１に示されているが、ユーザがＨＭＤ８を介して見えない場合もある。いくつかの実現例において、ＶＲアームモデル１０は、骨格モデルとして呼ばれる。
【００１２】
本明細書は、説明のために、一般性を失うことなく、例示的なＶＲアームモデルを、身体姿勢を模擬するように構成された人体モデルとして説明する。人体モデルを表すＶＲアームモデルは、複数のセグメントを含み、各セグメントは、ユーザの身体部位に対応する。ＶＲアームモデルは、１つ以上の関節を含むことができる。各関節によって、１つ以上のセグメントは、１つ以上の他のセグメントに対して動作することができる。例えば、人間を表すＶＲアームモデルは、複数の剛体および／または変形可能な身体部位を含むことができ、いくつかのセグメントは、対応する人間の解剖学的部位を表すことができる。換言すれば、ＶＲアームモデルの各セグメントは、１つ以上の構造要素（例えば、骨）に対応し、関節は、隣接する骨の接合部に位置する。いくつかの実現例において、構造要素の一部は、ＶＲアームモデルのセグメントに対応してもよく、ＶＲアームモデルのセグメントに対応しなくてもよい。いくつかの実現例において、様々な関節は、人間の実際の関節に対応してもよい。
【００１３】
図１に示すように、ＶＲアームモデル１０は、セグメント１１、１３、１５、１７および１９、並びに関節Ａ、Ｂ、Ｃ、ＤおよびＥを含む。セグメント１１は、関節ＡとＢの間に位置し、セグメント１３は、関節ＢとＣの間に位置し、セグメント１５は、関節ＣとＤの間に位置し、セグメント１７は、関節ＤとＥの間に位置し、セグメント１９は、関節Ｅから延在している。
【００１４】
いくつかの実現例において、関節Ａ、Ｂ、Ｃ、ＤおよびＥの各々は、関節に関連する各セグメントが空間内の３次元位置で回転できるように構成されてもよい。換言すれば、人体の多くの関節が１自由度または２自由度によって規定されるため、各関節（joint）は、最大３自由度（３ＤＯＦ）（例えば、ｘ、ｙおよびｚ軸）を有するように構成することができる。
【００１５】
本明細書に記載のＶＲアームモデル１０によれば、一部の関節を中心にする回転を用いて、物理コントローラ１１２の動作を表すことができる。具体的には、ＶＲアームモデル１０において、関節ＤおよびＥを用いて、ＨＭＤ８から仮想コントローラとして見られる物理コントローラ１１２の位置を決定することができる。いくつかの実現例において、関節ＤおよびＥのみを用いて、ＨＭＤ８から仮想コントローラとして見られる物理コントローラ１１２の位置を決定することができる。
【００１６】
この実現例において、物理コントローラ１１２のヨー、ピッチおよびロールは、アームモデル１０の様々な関節における動作として解釈される。物理コントローラ１１２を第１の軸に沿って縦方向に整列した場合、ロールは、第１の軸を中心にする回転である。ヨーは、第１の軸に直交し、物理コントローラ１１２の上部を通る第２の軸を中心にする回転である。ピッチは、第１の軸および第２の軸に直交し、物理コントローラの側面を通る第３の軸を中心にする回転である。換言すれば、物理コントローラ１１２の３ＤＯＦ動作（例えば、指向性動作）は、ＶＲアームモデル１０の特定の関節および／またはセグメント周りの仮想コントローラの動作として解釈される（およびＨＭＤに表示される）。
【００１７】
例えば、ｚ軸を中心にする物理コントローラ１１２の回転（例えば、ヨー）は、ＨＭＤ８から見た場合、例えばＤ関節のｚ軸を中心にする左右動作として表すことができる。したがって、ＨＭＤ８から見たときに、仮想コントローラは、セグメント１７（および／またはセグメント１９）の端部で左右に動作している。
【００１８】
換言すれば、いくつかの実現例において、セグメント１７は、関節Ｄを中心にして動作するように構成されてもよい。例えば、セグメント１７は、その一端が関節Ｄを中心にして回転しながら、横方向に（例えば、左右に）動作することができる。換言すれば、セグメント１７は、ｚ軸を中心に動作する（例えば、ヨー）ことができる。これによって、仮想コントローラは、ＶＲ環境において同様に動作することができる。例えば、セグメント１７が（横方向に沿って）少なくとも左右に動作すると、ＨＭＤ８から見られたＶＲ環境内の仮想コントローラも少なくとも左右に動作する。この特定の動作に関するより多くの詳細は、図２Ａに関連して説明され、示される。
【００１９】
別の例として、ｙ軸を中心にする物理コントローラ１１２の回転（例えば、ピッチ）は、ＨＭＤ８から見た場合、例えばＤ関節のｙ軸を中心にする仮想コントローラの上下動作として表すことができる。したがって、ＨＭＤ８から見たときに、仮想コントローラは、セグメント１７（および／またはセグメント１９）の端部で上下に動作している。
【００２０】
換言すれば、いくつかの実現例において、セグメント１７は、その第２の端部（例えば、近位端）が関節Ｄを中心にして回転しながら、その第１の端部（例えば、遠位端）が上下に動作するように構成することができる。換言すれば、セグメント１７は、ｙ軸を中心にして動作すること（例えば、ピッチ）ができる。これによって、コントローラ１１２は、ＶＲ環境において同様に動作することができる。例えば、セグメント１７が（縦方向に沿って）少なくとも上下に動作すると、ＨＭＤ８から見られたＶＲ環境内の仮想コントローラも少なくとも上下に動作する。この特定の動作に関するより多くの詳細は、図２Ｂに関連して説明され、示される。
【００２１】
さらに別の例として、ｘ軸を中心にする物理コントローラ１１２の回転（例えば、ロール）は、ＨＭＤ８から見た場合、例えばＥ関節のｘ軸を中心にする仮想コントローラの回転として表すことができる。したがって、ＨＭＤ８から見たときに、仮想コントローラは、セグメント１７（および／またはセグメント１９）の端部で仮想コントローラの長手（または軸）を中心にして回転している。いくつかの実現例において、ＨＭＤ８から見たときに、ｘ軸を中心にする物理コントローラ１１２の回転（例えば、ロール）は、例えば、Ｄ関節のｘ軸（およびセグメント１７）を中心にする回転として表すことができる。
【００２２】
換言すれば、いくつかの実現例において、セグメント１９は、関節Ｅを中心にして回転するように構成されてもよい。例えば、セグメント１９は、関節Ｅに固定されながら、関節Ｅを中心にして左右に回転することができる。換言すれば、セグメント１７は、ｘ軸を中心にして動作することができる。本明細書に記載の実現例によれば、ＨＭＤ８のＶＲ環境から見るときに、関節Ｅを中心にする回転は、手を回転して手の平を露出させ、その後手を回転して手の甲を露出させる動作として示すことができる。この特定の回転に関する詳細は、図２Ｃに関連して説明され、示される。
【００２３】
いくつかの実現例において、ｘ軸を中心にする回転動作は、関節ＤおよびＥにおいて同時に行われてもよい。換言すれば、一部の回転は、関節Ｄで行われてもよく、一部の回転は、関節Ｅで行われてもよい。４０％の回転動作は、関節Ｄで行われ、６０％の回転は、関節Ｅで行われる。
【００２４】
上述した動作は、別個の動作として説明されているが、任意に組み合わせることができる。例えば、物理コントローラ１１２の（ｘ、ｙまたはｚ軸を中心にする）回転を任意に組み合わせて、ＶＲアームモデル１０を用いて、ユーザがＨＭＤ８から見たときの仮想コントローラの動作として表すことができる。
【００２５】
いくつかの実現例において、接続されたセグメント１５および１７は、直角のアームを表す。この構成は、ユーザの自然な動作をエミュレートするのに適している。換言すれば、ユーザの腕の自然な動作は、ユーザがどのように物理コントローラ１１２を保持および／または操作することに相関する。
【００２６】
いくつかの実現例において、全てのセグメント１１、１３、１５、１７および１９は、関節Ｂ、Ｃ、ＤおよびＥを介して接続されてもよい。例えば、セグメント１１は、関節Ｂを介してセグメント１３に接続され、セグメント１３は、関節Ｃを介してセグメント１５に接続され、セグメント１５は、関節Ｄを介してセグメント１７に接続され、セグメント１７は、関節Ｅを介してセグメント１９に接続されることができる。いくつかの実現例において、セグメント１７は、セグメント１３に対して直交方向に整列されてもよく、セグメント１３は、セグメント１１に対して直交方向に整列されてもよい。
【００２７】
いくつかの実現例において、接続されたセグメント１１、１３、１５、１７および１９は、ユーザの解剖学的身体部位を各々表すことができる。本明細書に記載の実現例において、接続されたセグメント１１、１３、１５、１７および１９は、直角になっているユーザの体の右側の腕を表すことができる。いくつかの実現例において、関節Ｄを介してセグメント１５をセグメント１７に対して直交方向に整列することによって、直角を形成することができる。
【００２８】
いくつかの実現例において、セグメント１１は、ユーザの頭部と胸部上方の中心との間の身体部位を表すことができ、セグメント１３は、ユーザの肩を表すことができ、セグメント１５は、ユーザの上腕を表すことができ、セグメント１７は、ユーザの前腕を表すことができ、セグメント１９は、ユーザの手を表すことができる。なお、これらのセグメントは、単なる身体部位の例示的な表現であり、身体の他の部位を表すこともできる。
【００２９】
いくつかの実現例において、セグメント１１、１３、１５、１７および１９のサイズまたは長さは、平均的な成人の解剖学的身体部位を各々表すことができる。例えば、セグメント１１は、約１３〜１５ｃｍであってもよく、セグメント１３は、約１５〜１８ｃｍであってもよく、セグメント１５は、約２５〜３０ｃｍであってもよく、セグメント１７は、約２５〜３０ｃｍであってもよく、セグメント１９は、約１７〜２０ｃｍであってもよい。これらの寸法は、単なる例示であり、排他的ではない。
【００３０】
いくつかの実現例において、セグメント１９は、仮想コントローラの位置および／または動作を表すことができる。これは、ユーザがこの場所（例えば、位置）で物理コントローラを保持しているためである。セグメント１９は、仮想コントローラの動作および向きをエミュレートすることができる。
【００３１】
いくつかの実現例において、これらのセグメントを用いて、物理コントローラ１１２の初期位置を決定することができる。本明細書に記載の実現例において、物理コントローラ１１２の初期位置は、関節Ｄの位置を決定することによって、決定することができる。したがって、セグメント１１、１３および１５を接続することによって、セグメント１１、１３および１５を用いて、物理コントローラ１１２の初期位置を決定することができる。例えば、（例えば、関節ＡとＢの間の）セグメント１１は、（例えば、関節ＢとＣの間の）セグメント１３に接続することができ、セグメント１３は、（例えば、関節ＣとＤの間の）セグメント１５に接続することができる。いくつかの実現例において、初期位置は、ＨＭＤ８からの所定のオフセット位置または距離として決定されてもよい。
【００３２】
いくつかの実現例において、セグメント１７を物理的に移動した距離は、仮想コントローラを移動した距離と同様である。他の実現例において、セグメント１７の移動距離は、仮想コントローラを移動した距離と同様ではない。その代わりに、システムは、この距離を推定する。例えば、セグメント１７を距離「ｘ」で移動した場合、仮想コントローラは、距離「ｘ」よりも小さいまたは大きい距離「ｙ」で移動してもよい。また、セグメント１７および関節Ｄに基づいて、例えばセグメントの長さおよび関節Ｄにおけるセグメントの物理的な向きに基づいて、物理コントローラの向きを仮想環境の仮想コントローラの仮想位置および仮想向きに変換することができる。
【００３３】
いくつかの実現例において、本開示の範囲内で、本明細書で説明したモデルのほかに、他のモデルを使用してもよい。例えば、様々な剛体の多角形メッシュ、１つ以上の変形可能なメッシュ、または任意の組み合わせを含むワイヤフレームメッシュのモデルを使用することができる。また、ユーザの形状を規定するメッシュとして、複数の三角形を使用することができる。さらに、他のモデルは、パッチ、不均一な加重Ｂスプライン、細分化曲面、または他の高次曲面を含むことができる。
【００３４】
いくつかの実現例において、モデルは、必要に応じて、現在の姿勢、１つ以上の過去の姿勢および／またはモデル物理学に関する情報を含むことができる。姿勢を取り、シミュレートできる全てのモデルは、本明細書に記載の認識、分析および追跡と互換性がある。
【００３５】
図２Ａ〜２Ｃは、仮想現実環境１０５をユーザ２０に表示することができるヘッドマウントディスプレイ（ＨＭＤ）１０６を装着しているユーザ２０を示す第三者斜視図である。図２Ａ〜２Ｃに示されたオブジェクト５０は、ＶＲ環境１０５内のユーザ２０がＨＭＤ１０６を介して見ているものであるが、説明を容易にするために、第三者の視点から見ているように示されている。例えば、図２Ａ〜２Ｃに示されたオブジェクト５０は、ユーザ２０がＨＭＤ１０６を通して見えるが、実際に第三者には見えない。同様に、この詳細な説明内の他の図面は、説明を簡単にするために、第三者の視点からのものとして示されている。いくつかの実現例において、詳細な説明に記載されている例は、複数のオブジェクトおよび／または複数のユーザに適用することができる。
【００３６】
本明細書に記載の実現例によれば、仮想コントローラ１１３（例えば、コントローラの仮想表現）は、ＶＲ環境１０５に表示されてもよい。ユーザ２０は、仮想コントローラ１１３を使用（例えば、利用）して、ＶＲ環境１０５内のオブジェクト５０と対話する（例えば、掴む、触れる、接触する、保持する）ことができる。仮想コントローラ１１３は、オブジェクト５０と対話するために、ビーム７０（例えば、ポール、スティック）を用いて、オブジェクト５０に作用することができる。いくつかの実現例において、物理コントローラ１１２は、操作（例えば、クリック、タッチ、スワイプ）を行うためのいくつかのキーを含むことができる。例えば、物理コントローラ１１２は、ホームボタン１１４ａ、メニューボタン１１４ｂおよびタッチパッド１１４ｃを含むことができる。いくつかの実現例において、物理コントローラ１１２と同様のキー（例えば、ホームボタン１１４ａ、メニューボタン１１４ｂおよびタッチパッド１１４ｃ）は、仮想コントローラ１１３に示され（例えば、表示され）てもよい。
【００３７】
いくつかの実現例において、タッチパッド１１４ｃを用いて、ビーム７０を作動／停止することができる。例えば、ユーザ２０は、オブジェクト５０と対話する場合、一般にオブジェクト５０の方向を指し、ビーム７０の端部をオブジェクト５０の近くにまたはオブジェクト５０に配置し、タッチパッド１１４ｃを押すことによって（例えば、オブジェクト５０を掴むように）タッチパッド１１４ｃを作動し、オブジェクト５０を所望の位置に移動（または配置）する。オブジェクト５０を離すために、ユーザは、タッチパッド１１４ｃを離すことによってオブジェクト５０を離す。
【００３８】
ＶＲ環境１０５において仮想コントローラ１１３の動作を効果的且つ比較的現実的に表現するために、本発明のシステムおよび方法は、ＨＭＤ１０６に対する物理コントローラ１１２の実際の物理的位置を用いて、動作をＶＲ環境１０５に変換する。本明細書に記載の実現例によれば、手首関節（例えば、関節Ｅ）の位置を決定することによって、仮想コントローラ１１３の位置を決定することができる。手首関節は、手の位置および／または仮想コントローラ１１３の位置に対応する。いくつかの実現例において、手首関節の位置は、最初にＨＭＤ１０６の位置を決定し、ＨＭＤ１０６の位置から所定の距離に基づいて肘関節の位置（例えば、関節Ｄ）を定め、肘関節から手首関節までのセグメントを定めることによって決定されてもよい。以下に説明するように、センサを用いて、上述した各々の位置を決定することができる。
【００３９】
図２Ａに示されたように、ユーザ２０は、肘関節（例えば、関節Ｄ）で腕を動かすことができる。この実現例において、矢印９０ａによって示されたように、腕が横方向に移動する（例えば、左右に、（ページに垂直な）軸ｚを中心にして回転する）ことができる。換言すれば、ユーザの腕は、ｚ軸（例えば、垂直軸）を中心にして回転することができる。したがって、矢印９１ａによって示されたように、ユーザの腕の移動および物理コントローラ１１２のｚ軸を中心にする回転によって、仮想コントローラ１１３は、（ＶＲアームモデルを介して）ＶＲ環境１０５において同様に移動する。例えば、ユーザの腕が右に移動すると、物理コントローラ１１２ａも右に移動する。したがって、仮想コントローラ１１３が右に移動する。ユーザの腕が左に移動すると、物理コントローラ１１２ｂも左に移動する。したがって、仮想コントローラ１１３が左に移動する。いくつかの実現例において、各ＶＲアームモデルにおいて、ユーザの腕の移動距離は、仮想コントローラ１１３の移動距離に対応する。
【００４０】
非限定的な例において、ユーザは、ドアを閉めるようにドアと対話する場合、タッチパッド１１４ａを押すことによって仮想コントローラ１１３を操作し、物理コントローラ１１２を左に移動することによって仮想コントローラ１１３を同様に移動することができる。この操作によって、ＶＲ環境でドアを閉めることができる。
【００４１】
図２Ｂに示されるように、ユーザ２０は、肘関節（例えば、関節Ｄ）で腕を動かすことができる。この実現例において、矢印９０ｂによって示されたように、腕が上下に移動することができる。換言すれば、ユーザの腕は、ｙ軸を中心にして回転することができる。本明細書に記載の実現例において、上方向の移動は、図２Ｂの図に対してページの外への移動とし、下方向の移動は、図２Ｂの図に対してページの内への移動とする。いくつかの実現例において、ユーザの腕の移動によって、仮想コントローラ１１３は、（ＶＲアームモデルを介して）ＶＲ環境１０５において同様に移動する。例えば、ユーザの腕が上に移動すると、物理コントローラ１１２ａも上に移動する。したがって、仮想コントローラ１１３が上に移動する。ユーザの腕が下に移動すると、物理コントローラ１１２ｂも下に移動する。したがって、仮想コントローラ１１３が下に移動する。いくつかの実現例において、各ＶＲアームモデルにおいて、ユーザの腕の移動距離は、仮想コントローラ１１３の移動距離に対応する。
【００４２】
非限定的な実施形態において、ユーザが物理コントローラ１１２をＨＭＤ１０６に近づけるように移動すると、ＶＲ環境で見られる仮想コントローラ１１３は、ユーザの視界に近づくようになる。いくつかの実現例において、仮想コントローラ１１３は、コントローラ自体に関する情報を有し得る。例えば、仮想コントローラ１１３は、ヘルプ情報、ツールヒント、電池の寿命、電池の使用量および／または他の情報に関する機能を含むことができる。
【００４３】
別の非限定的な実施形態において、仮想オブジェクトがコンベヤベルト上に配置され、ユーザ２０に向かって搬送されている場合、ユーザ２０は、オブジェクトに向かって物理コントローラ１１２を下方に移動することによってコントローラ１１３を操作し、タッチパッド１１４ａを押すことによってコンベアからオブジェクトを掴み、タッチパッド１１４ａを離すことによってオブジェクトを所望の場所に離す。いくつかの実現例において、所望の場所は、オブジェクトを掴んだ場所と同様であってもよい。いくつかの実現例において、所望の場所は、オブジェクトを掴んだ場所と異なってもよい。
【００４４】
図２Ｃに示されたように、ユーザ２０は、手首関節（例えば、関節Ｅ）で腕を動かすことができる。この実現例において、矢印９０ｃによって示されたように、ユーザの腕が回転することができる。換言すれば、ユーザの腕は、ｘ軸（例えば、長手軸）を中心にして回転することができる。本明細書に記載の実施形態によれば、手首関節を中心にする左右回転は、手を回転して手の平を露出させ、その後手を回転して手の甲を露出させる動作として示すことができる。ユーザの手首の移動（破線Ｘを中心とした回転または回転動作）によって、矢印９１ｃによって示されたように、仮想コントローラ１１３は、（ＶＲアームモデルを介して）ＶＲ環境１０５において同様に移動する。例えば、ユーザの手首が右に移動すると、物理コントローラ１１２ａも右に移動する。したがって、仮想コントローラ１１３が右に移動する。ユーザの手首が左に移動すると、物理コントローラ１１２ｂも左に移動する。したがって、仮想コントローラ１１３が左に移動する。いくつかの実現例において、各ＶＲアームモデルにおいて、ユーザの手首の移動距離は、仮想コントローラ１１３の移動距離に対応する。
【００４５】
非限定的な例において、上記のドアの同様の例を用いて、ユーザは、ドアのノブを回すようにドアと対話する場合、１１４ａを押すことによって仮想コントローラ１１３を操作し、物理コントローラ１１２を回転させることによって仮想コントローラ１１３を同様に回転させることができる。この操作によって、ＶＲ環境でドアのノブを回すことができる。
【００４６】
いくつかの実現例において、ユーザの腕および／または手首の２つ以上の動作を組み合わせることができる。例えば、ユーザの腕は、少なくとも横方向（図２Ａ）および少なくとも上下（図２Ｂ）という順序または逆の順序で動作することができる。別の例において、ユーザの腕は、少なくとも横方向（図２Ａ）および少なくとも左右（図２Ｃ）という順序または逆の順序で回転することができる。さらに別の例において、ユーザの腕は、少なくとも上下（図２Ｂ）および少なくとも左右（図２Ｃ）という順序または逆の順序で回転することができる。
【００４７】
いくつかの実現例において、ユーザの腕および／または手首の３つ以上の動作を組み合わせることができる。例えば、ユーザの腕は、少なくとも横方向（図２Ａ）、少なくとも上下（図２Ｂ）および少なくとも左右（図２Ｃ）という順序または任意の組み合わせで回転することができる。
【００４８】
図３は、本開示の教示に従って、３次元（３Ｄ）ＶＲ環境１０５を作成し、ＶＲ環境と対話するための例示的な仮想現実（ＶＲ）システム１００を示す図である。一般に、システム１００は、ＶＲ環境１０５と、人間（例えば、ユーザ、着用者）がＶＲ環境１０５にアクセス、閲覧、使用および／または相互作用することを可能にするＶＲコンテンツとを提供することができる。システム１００は、コンテンツ、アプリケーション、仮想オブジェクト、実在オブジェクトおよびＶＲ制御にアクセスするためのオプションをユーザに提供することができる。図２Ａ〜２Ｃの例示的なＶＲシステム１００は、ＨＭＤ１０６を装着し、手持ち式物理コントローラ１１２を持っているユーザ２０を含むことができる。図２Ａ〜２Ｃに示された例示的なＶＲ環境１０５は、ＨＭＤ１０６内でユーザ２０のために表示された画像である。
【００４９】
図３に示すように、ＶＲアプリケーション１１０は、向きモジュール１１８と、変換モジュール１２０と、ＶＲアームモジュール１２２とを含むことができる。ＶＲアプリケーションまたはその一部は、物理コントローラ１１２、ＨＭＤ１０６および／またはＶＲシステム１０８に設けられてもよい。
【００５０】
向きモジュール１１８は、例えば、１つ以上の慣性測定ユニット（ＩＭＵ）、光センサ、音声センサ、画像センサ、距離／近接センサ、位置センサおよび／または他のセンサを利用して、仮想環境に対して現実世界または物理環境内の物理コントローラ１１２の向きを決定することができる。いくつかの実現例において、向きモジュール１１８は、物理コントローラ１１２に組み入れてもよい。いくつかの実現例において、向きモジュール１１８は、センサを介して、物理コントローラ１１２の向きを決定するように構成されてもよい。別の実現例において、向きモジュール１１８は、例えば、１つ以上の慣性測定ユニット、光センサ、音声センサ、画像センサ、距離／近接センサ、位置センサおよび／または他のセンサを利用して、仮想環境に対して現実世界または物理環境内のＨＭＤ１０６の物理位置を追跡することができる。いくつかの実現例において、向きモジュール１１８は、ＨＭＤ１０６に組み入れてもよい。いくつかの実現例において、向きモジュール１１８は、センサを介して、ＨＭＤ１０６の位置を決定するように構成されてもよい。
【００５１】
いくつかの実現例において、向きモジュール１１８は、物理コントローラ１１２および／またはＨＭＤ１０６に設けられてもよい。いくつかの実現例において、向きモジュール１１８の動作は、物理コントローラ１１２および／またはＨＭＤ１０６に実行可能である。
【００５２】
向きモジュール１１８は、本明細書に記載された任意数のメモリ記憶装置および／またはセンサを利用して、物理コントローラ１１２、ユーザ、仮想オブジェクトおよびＶＲ環境１０５内でオブジェクトの移動に関連する区域の向きを決定することができる。向きモジュール１１８は、物理コントローラ１１２の向き（例えば、ヨー、ピッチおよび／またはロール）を決定することができる。
【００５３】
向きモジュール１１８が物理コントローラ１１２の向きを決定すると、変換モジュール１２０は、物理コントローラ１１２の動作をＶＲ環境１０５に変換することができる。いくつかの実現例において、変換モジュール１２０は、以下の動作、すなわち、ａ）横方向動作（例えば、ヨー）、ｂ）上下動作（例えば、ピッチ）および／またはｃ）左右回転（例えば、ロール）に基づいて、物理コントローラ１１２の動作を変換することができる。
【００５４】
ＶＲアームモジュール１２２は、仮想アームモデルを生成することができる。いくつかの実現例において、変換モジュール１２０は、アームモジュール１２２によって生成されたアームモデルを用いて、向きモジュール１１８およびアームモジュール１２２からの情報に基づいて、仮想コントローラの仮想位置および／または向きを生成することができる。
【００５５】
いくつかの実現例において、向きモジュール１１８および／または変換モジュール１２０は、物理コントローラ１１２が仮想オブジェクトと対話することを可能にすることができる。コントローラとの対話は、仮想オブジェクト上で行われた物理的なジェスチャー（例えば、動作）として理解することができる。例えば、ユーザは、仮想コントローラを操作して、オブジェクトを指すまたは接触することができる。このように実行された動作は、３ＤＯＦ動作で描写することができる。
【００５６】
例示的なＶＲシステム１０８は、ネットワーク１０１を介してデータを交換することができる任意数のコンピューティング装置および／または電子装置を含むことができる。これらの装置は、クライアントまたはサーバを表し、ネットワーク１０１または他の任意の追加的および／または代替的なネットワークを介して通信することができる。クライアント装置の例として、ＨＭＤ１０６、物理コントローラ１１２、モバイル装置１０２（例えば、スマートフォン、ＰＤＡ（Personal Digital Assistant）、ポータブルメディアプレイヤ）、ラップトップまたはネットブック１０３、デスクトップコンピュータ１０４、電子タブレット（図示せず）、カメラ（図示せず）、ゲーム装置（図示せず）、およびネットワーク１０１または他のネットワークを介して他の電子またはコンピューティング装置もしくは他の電子またはコンピューティングシステムと通信できるもしくはＶＲコンテンツにアクセスできるまたはＶＲ環境内で動作できる任意の電子またはコンピューティング装置を含むが、これらに限定されない。装置１０２〜１０４、１０６および１１２は、クライアント装置またはサーバ装置を表してもよい。装置１０２〜１０４、１０６および１１２は、クライアントオペレーティングシステムおよび１つ以上のクライアントアプリケーションを実行することができる。１つ以上のクライアントアプリケーションは、ＶＲコンテンツを利用、レンダリング、提供または対応する装置１０２〜１０４、１０６および１１２の各々に含まれるまたは関連するディスプレイ装置上で表示することができる。
【００５７】
ＶＲシステム１０８は、サーバ装置を表すことができる。一般に、ＶＲシステム１０８は、コンテンツを格納する任意数のリポジトリおよび／または仮想現実シーンを生成、修正または実行することができる仮想現実ソフトウェアモジュールを含むことができる。図示の例において、ＶＲシステム１０８は、システム１０８のコンテンツおよび／または制御を利用および提示するためのＶＲアプリケーション１１０を含む。いくつかの実現例において、ＶＲアプリケーション１１０は、１つ以上の装置１０２〜１０４上でローカルに実行することができる。ＶＲアプリケーション１１０は、例えば、いずれかまたは全ての装置１０２〜１０４上で実行するように構成されてもよく、物理コントローラ１１２を用いて制御または操作されてもよい。
【００５８】
本開示に記載された特定の実現例は、ユーザが物理コントローラ１１２を用いてＶＲ環境と対話することを可能にすることができる。例えば、ユーザは、物理コントローラ１１２を用いて、ＶＲ環境内の３Ｄ仮想オブジェクトを選択および操作することができる。例示的な物理コントローラ１１２は、コントローラ装置の構成要素を内部に収容するためのハウジングと、ハウジングの外側に設けられ、ユーザが利用可能なユーザインターフェイス（図示せず）とを含んでもよい。ユーザインターフェイスは、例えば、ユーザのタッチ入力を受け取るように構成されたタッチ感応パネル、ボタン、ノブ、ジョイスティック、トグル、スライドおよび他の操作装置を含む複数の異なる種類の操作装置（図２Ａ〜２Ｃには詳細に示されていない）を含むことができる。
【００５９】
物理コントローラ１１２は、１つ以上のセンサを含むことができる。これらのセンサは、例えばユーザが物理コントローラ１１２およびＨＭＤ装置１０６にアクセスすることによって、トリガーされ、ＶＲ環境に入力を提供することができる。センサは、タッチスクリーンセンサ、加速度計、ジャイロスコープ、圧力センサ、生体認証センサ、温度センサ、湿度センサ、および環境光センサを含むが、これらに限定されない。物理コントローラ１１２は、センサを用いて、ＶＲ環境において検出された物理コントローラ１１２の回転を決定することができる。回転は、ＶＲ環境への入力として使用することができる。１つの非限定的な例において、物理コントローラ１１２は、スティック、鉛筆またはペン、描画ツール、コントローラ、リモコン、レーザポインター、携帯電話、ペイントブラシまたは他のオブジェクトとしてＶＲ環境に組み入れてもよい。ユーザによってＶＲ環境に組み入れた（または表された）物理コントローラ１１２の位置に基づいて、ユーザは、ＶＲ環境に特定の仮想オブジェクトを配置すると共に、スティック、ペイントブラシ、鉛筆またはペン、描画ツール、コントローラ、リモコン、レーザポインター、携帯電話、ペイントブラシまたは他のオブジェクトを配置することができる。このような配置は、いくつかの実現例において、アンカポイントを用いたオブジェクトの操作をトリガーすることができる。
【００６０】
ＨＭＤ装置１０６は、仮想現実コンテンツを表示することができる仮想現実ヘッドセット、眼鏡、対眼レンズまたは他の装着型装置を表すことができる。動作時に、ＨＭＤ装置１０６は、ＶＲアプリケーションを実行して、受信および／または処理した画像をＨＭＤ装置１０６のディスプレイ（図示せず）上でユーザに再生することができる。いくつかの実現例において、ＶＲアプリケーション１１０は、１つ以上の装置１０２〜１０４および１０６にホストされてもよい。
【００６１】
いくつかの実現例において、例示的なＨＭＤ装置１０６は、フレームに連結され、例えばヘッドフォンに設けられたスピーカを含む音声出力装置を備えるハウジングを含むことができる。例示的なＨＭＤ装置１０６において、ハウジングの前部の内側にディスプレイ（図示せず）を設けてもよい。ユーザの目とディスプレイとの間のハウジングにレンズを設けてもよい。いくつかの実現例において、ＨＭＤ装置１０６は、例えば、音声センサ、画像／光センサ、位置センサ（例えば、ジャイロスコープおよび加速度計を含む慣性測定ユニット）などの様々なセンサを含む検知システムを含むことができる。ＨＭＤ装置１０６は、ＨＭＤ装置１０６の操作を容易にするためのプロセッサおよび様々な制御システム装置を含む制御システムをさらに含んでもよい。
【００６２】
いくつかの実現例において、ＨＭＤ装置１０６は、静止画像および動画像を撮影するために１つ以上のカメラ（図示せず）を含むことができる。カメラによって撮影された画像を用いて、ＶＲ環境に対して、現実世界または物理環境内のユーザおよび／または物理コントローラ１１２の物理位置の追跡を支援することができ、および／またはこれらの画像をディスプレイ上で透過モードで表示することによって、ユーザは、ＨＭＤ装置１０６を取り外すことなくまたはＨＭＤ装置１０６の構成を変更することなく、一時的に仮想環境を離れて物理環境に戻ることができる。
【００６３】
いくつかの実現例において、モバイル装置１０２は、ＨＭＤ装置１０６内に配置および／または設置されてもよい。モバイル装置１０２は、ＨＭＤ装置１０６の表示画面として使用できるディスプレイ装置を含むことができる。モバイル装置１０２は、ＶＲアプリケーション１１０を実行するためのハードウェアおよび／またはソフトウェアを含むことができる。いくつかの実現例において、ＨＭＤ装置１０６は、ユーザの位置および６自由度の動作を完全に追跡することができる。追跡は、ユーザの手の動作、頭の動作、目の動作、またはユーザの入力に基づいて動作するコントローラの軌跡に基づいて行うことができる。
【００６４】
追加の装置が可能である。これらの装置は、互いに置換できるように構成されてもよい。いくつかの実現例において、装置１０２〜１０４は、ラップトップまたはデスクトップコンピュータ、スマートフォン、ＰＤＡ、ポータブルプレイヤ、タブレットコンピュータ、ゲーム装置、またはネットワーク１０１を介して他のコンピューティング装置またはコンピュータシステムと通信できる他の適切なコンピューティング装置であってもよい。
【００６５】
例示的なシステム１００において、例えば、ＨＭＤ装置１０６を装置１０２または装置１０４に接続することによって、ＶＲシステム１０８上のＶＲコンテンツにアクセスするができる。装置１０２または１０４は、（有線または無線を介して）ＶＲコンテンツを表示するためのＨＭＤ装置１０６に接続することができる。
【００６６】
いくつかの実現例において、１つ以上のコンテンツサーバ（例えば、ＶＲシステム１０８）および１つ以上のコンピュータ可読記憶装置は、ネットワーク１０１を介してコンピューティング装置１０２〜１０４および１０６と通信することによって、ＶＲコンテンツを装置１０２〜１０４および１０６に提供することができる。いくつかの実現例において、ネットワーク１０１は、公衆通信ネットワーク（例えば、インターネット、セルラデータネットワーク、ダイヤルアップモデムを含む電話ネットワーク）またはプライベート通信ネットワーク（例えば、プライベートＬＡＮ、専用回線）であってもよい。いくつかの実現例において、コンピューティング装置１０２〜１０８は、１つ以上の高速有線および／または無線通信プロトコル（例えば、８０２．１１バリエーション、Ｗｉ−Ｆｉ（登録商標）、ブルートゥース（登録商標）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、イーサネット（登録商標）、ＩＥＥＥ８０２．３）を用いて、ネットワーク１０１と通信することができる。
【００６７】
いくつかの実現例において、モバイル装置１０２は、ＶＲアプリケーション１１０を実行することができ、ＶＲ環境用のコンテンツを提供することができる。いくつかの実現例において、ラップトップコンピューティング装置は、ＶＲアプリケーション１１０を実行することができ、１つ以上のコンテンツサーバ（例えば、ＶＲシステム１０８）からコンテンツを提供することができる。１つ以上のコンテンツサーバおよび１つ以上のコンピュータ可読記憶装置は、ネットワーク１０１を介して、モバイル装置１０２、ラップトップコンピューティング装置１０４および／または物理コントローラ１１２と通信することによって、ＨＭＤ装置１０６に表示するためのコンテンツを提供することができる。
【００６８】
図４は、ＶＲ環境内のＨＭＤ装置１０６に通信可能に接続された物理コントローラ１１２を示すブロック図である。システム１００は、動作時に、図３に示す装置で操作できる任意数の仮想オブジェクトを収容するためのＶＲ環境を提供するように構成することができる。物理コントローラ１１２は、インターフェイスを介してＨＭＤ装置１０６に接続することによって、没入型仮想環境を生成することができる。例えば、物理コントローラ１１２をＨＭＤ装置１０６とペアリングすることによって、装置間の通信を確立することができ、ユーザと没入型ＶＲ環境との対話を促進することができる。いくつかの実現例において、物理コントローラ１１２は、ＨＭＤ装置１０６とペアリングされてもよく、ＶＲアプリケーション１１０内の追跡モジュール１１６または別の外部追跡装置によって追跡されてもよい。
【００６９】
図４を参照して、物理コントローラ１１２は、検知システム４６０および制御システム４７０を含む。検知システム４６０は、例えば、光センサ、音声センサ、画像センサ、距離／近接センサ、位置センサ（例えば、ジャイロスコープと加速度計を含む慣性測定ユニット（ＩＭＵ））を含む１つ以上の異なる種類のセンサ、および／または他のセンサ、および／または例えばユーザの視線を検出および追跡するために配置された画像センサを含む異なるセンサの組み合わせを含むことができる。制御システム４７０は、例えば、出力／停止制御装置、音声および動画制御装置、光学制御装置、移行制御装置および／または他の装置および／または異なる装置の組み合わせを含むことができる。特定の実装に応じて、検知システム４６０および／または制御システム４７０は、より多くの装置またはより少ない装置を含むことができる。
【００７０】
物理コントローラ１１２は、検知システム４６０および制御システム４７０と通信する少なくとも１つのプロセッサ４９０、メモリ４８０および通信モジュール４５０をさらに含むことができる。通信モジュール４５０は、物理コントローラ１１２と別の外部装置、例えば別のコントローラおよび／またはＨＭＤ装置との間の通信を提供する。
【００７１】
一般に、本開示に記載されたシステムおよび方法は、ＶＲ環境において、ユーザの手または物理コントローラ１１２を追跡し、手および／またはコントローラに関連するユーザの動作を分析することによって、動作の意図を決定することができる。
【００７２】
図５は、本明細書に開示されたＶＲ環境内の仮想コントローラの位置を決定するために実行され得る例示的な方法５００を示す。図５の例示的な方法５００は、ユーザのＨＭＤの位置を決定すること（ブロック５０２）から開始し、ＨＭＤの位置に基づいて、関節の位置を定めること（ブロック５０４）、関節からセグメントの端部までのセグメントを定めること（ブロック５０６）、およびセグメントおよび関節に基づいて、物理コントローラの向きをＶＲ環境内の仮想コントローラの仮想位置および仮想向きに変換すること（ブロック５０８）を含む。
【００７３】
ブロック５０２において、ユーザのＨＭＤの位置は、ユーザの頭の中心にあると決定されてもよい。本明細書に記載の実現例によれば、コントローラを持っているユーザは、まっすぐに前を見て、直角で腕を見る必要がある。
【００７４】
ブロック５０４において、ブロック５０２で決定されたＨＭＤの位置に基づいて、第１の関節の位置を定めることができる。
【００７５】
ブロック５０６において、関節（例えば、関節Ｄ）からセグメントの端部までのセグメントを定める。いくつかの実現例において、セグメントの端部は、関節（例えば、関節Ｅ）に対応する。本明細書に記載の実現例によれば、このセグメントは、ユーザの前腕を表してもよい。セグメントは、関節Ｄを中心にして動作することができる。いくつかの実現例において、セグメントは、少なくとも横方向（例えば、左右）に沿って、関節（例えば、関節Ｄ）を中心にして動作することができる。他の実現例において、セグメントは、少なくとも上下方向に沿って、関節（例えば、関節Ｄ）を中心にして動作することができる。
【００７６】
ブロック５０８において、セグメントおよび関節に基づいて、物理コントローラの向きをＶＲ環境内の仮想コントローラの仮想位置および仮想向きに変換することができる。したがって、仮想コントローラは、物理コントローラと同様に動作することができる。
【００７７】
図５の例示的な方法５００または本明細書に開示された他の方法は、機械可読命令として実装され、１つ以上のプロセッサによって実行されることによって、本明細書に開示された例示的なディスプレイ組立体を制御または作動することができる。プロセッサ、コントローラおよび／または任意の他の適切な処理装置を使用、構成および／またはプログラムすることによって、本明細書に開示された例示的な方法を実行および／または実施することができる。例えば、図５の例示的な方法５００または本明細書に開示された他の方法は、図３を参照して説明したように、プロセッサ、コンピュータおよび／またはプロセッサを備える他の機械装置によってアクセス可能な有形および／または非一時的なコンピュータ可読媒体に格納されるプログラムコードおよび／または機械可読命令に具現化されてもよい。機械可読命令は、例えば、プロセッサ、コンピュータおよび／またはプロセッサを備える機械装置に１つ以上の特定のプロセスを実行させる命令を含むことができる。図５の例示的な方法５００を実施する多くの他の方法、または本明細書に開示された他の方法を採用することができる。例えば、実行の順序を変更することができ、および／または説明した１つ以上のブロックおよび／または相互作用を変更、削除または細分するもしくは組み合わせることができる。さらに、図５の例示的な方法５００の全体または本明細書に開示された他の方法のいずれかは、例えば、別個の処理スレッド、プロセッサ、装置、個別のロジックまたは回路によって連続的におよび／または並行に実行されてもよい。
【００７８】
図６は、本明細書に開示されたＶＲ環境内の仮想コントローラの位置を決定するために実行され得る別の例示的な方法６００を示す。図６の例示的な方法５００は、ユーザのＨＭＤの位置を決定すること（ブロック６０２）から開始し、ＨＭＤの位置に基づいて、関節の位置を定めること（ブロック６０４）、関節からセグメントの端部までのセグメントを定めること（ブロック６０６）、セグメントの端部の位置に基づいて、仮想環境内の仮想コントローラの初期仮想位置を定めること（ブロック６０８）、およびセグメントおよび関節に基づいて、物理コントローラの向きの変化に応じて、仮想環境内の仮想コントローラの仮想位置および仮想向きを定めること（ブロック６１０）を含む。
【００７９】
図７Ａおよび図７Ｂは、例示的な実施形態に従って、第三者によって見られた場合の、ユーザが関節に対して動作することを示す概略図である。図７Ａは、第１の関節Ｄ１に関連する第１の位置にいるユーザ２０を示している。図７Ｂは、第１の関節Ｄ２に関連する異なる第２の位置にいるユーザ２０を示している。
【００８０】
いくつかの実現例において、前述したように、関節Ｄ１の位置は、ユーザの頭部Ａ１（またはＨＭＤ）の一部（例えば、中心）から関節Ｄ１（例えば、肘関節）までの距離を測定することによって決定されてもよい。例えば、前述したように、関節Ｄ１の位置は、関節Ｄ１の位置を取得するためのセグメント（例えば、セグメント１１、１３および１５）によって決定されてもよい。
【００８１】
図７Ａに示すように、ユーザ２０は、線Ｘによって規定されるように前方を見ており、コントローラ２１２も（例えば、線Ｘと平行な）前方位置にある。この位置は、第１の位置として定義することができる。いくつかの実現例において、第１の位置には、ユーザ２０の腕が直角になっている。具体的には、側面から見たときに、例えば、第１のセグメント（例えば、セグメント１５）は、第２のセグメント（例えば、セグメント１７）に直交する。関節Ｅ１は、ユーザの腕の端部に位置する。関節Ｅ１の位置を用いて、コントローラ２１２の位置を決定することができる。
【００８２】
いくつかの実現例において、ユーザ２０の第１の位置は、肩関節（例えば、関節Ｃ）の位置を決定することを含むことができる。いくつかの実現例において、肩関節は、ユーザを第１の位置に整列することを援助することができる。本明細書に記載の実現例において、肩関節と関節Ｄ１との間のセグメント１５がセグメント１７と直角になっているため、上方から見る場合に、肩関節と関節Ｄ１とは、同一の位置にある。
【００８３】
非限定的な例において、ユーザ２０が第１の位置にいる（例えば、まっすぐに前を見ている）間に、ユーザ２０は、少なくとも肩関節の位置に基づいて、ユーザの顔に近づくようにコントローラ２１２を移動する場合がある。これによって、ＶＲ環境内の仮想コントローラは、同様に（例えば、ＶＲ環境でユーザの顔に近づくように）移動することができる。肩をまっすぐに（または関節Ｄ１を静止に）維持しながら、ユーザ２０は、ＶＲ環境で仮想コントローラを移動することなく（例えば、ユーザの顔の前方に静止にしたまま）頭を左右に回すことができる。肩（または関節Ｄ１）が静止（例えば、不動、動かない、固定）に維持されているあるため、ユーザ２０が頭を回しても、仮想コントローラも静止に維持される。したがって、コントローラをさらに調整する必要がない。
【００８４】
いくつかの実現例において、ユーザおよび／または物理コントローラの角速度は、仮想コントローラの移動を決定することができる。本明細書に記載の実現例において、角速度は、時間に対して変異する角度の変化率を測る。換言すれば、ユーザおよび／または物理コントローラが時間に対して移動する速度を測る。移動量が角速度の特定の閾値（例えば、条件）を満たす（例えば満足する）場合、仮想コントローラが移動した可能性がある。例えば、上記の同様の例を使用すると、肩の位置が静止に維持したまま、ユーザ２０が比較的速く頭を左または右に回す場合、特定の角速度の閾値（または条件）が満たされているため、システムおよび方法は、仮想コントローラが元の位置および向きに維持されていると判断することができる。
【００８５】
一方、別の非限定的な例において、（角速度の条件を満たさないように）ユーザが比較的遅く頭を回す場合、システムおよび方法は、ユーザの位置が変更された可能性があると判断することができる。したがって、仮想コントローラの位置を移動する。
【００８６】
別の非限定的な例において、（角速度の条件を満たすように）ユーザが物理コントローラを比較的速く（例えば、上下に）移動する場合、特定の角速度の閾値（または条件）が満たされているため、システムおよび方法は、仮想コントローラが元の位置および向きに維持されていると判断することができる。
【００８７】
一方、別の非限定的な例において、（角速度条件を満たすように）ユーザが物理コントローラを比較的遅く（例えば、上下に）移動する場合、システムおよび方法は、ユーザの動作に基づいて、仮想コントローラの位置が変更された可能性があると判断することができる。
【００８８】
いくつかの実現例において、ユーザおよび物理コントローラの角速度の両方を用いて、仮想コントローラを移動するか否かを判断することができる。例えば、閾値（または条件）を満たすように、ユーザが頭および物理コントローラを同時に比較的速く移動する場合、システムおよび方法は、仮想コントローラを所定の位置に移動することを判断することができる。
【００８９】
図７Ｂに示すように、ユーザ２０が関節Ａ１で位置を移動する（例えば、体を概ね右に回す）と、第１の位置に関連する関節Ｄ１が移動し、関節（この場合、関節Ｄ２）も同様の距離および／または向きで移動する。その結果、関節Ｅ１の位置は、同様の距離および／または向きで（例えば、Ｅ２に）移動する。関節Ｄ１（および関節Ｅ１）の位置は、動的である。これは、ユーザ２０の位置が変化すると、関節Ｄ１（および関節Ｅ１）が移動することを意味する。この例示的な実現例に示されているように、ユーザ２０は、例えば、肩に関連して、約３０度で回転している。いくつかの他の実現例において、ユーザは、例えば、肩に関連して、０〜３６０度の間の角度で回転することができる。
【００９０】
いくつかの実現例において、ＨＭＤ１０６および／または物理コントローラ１１２を再調整（例えば、再度中心に配置）することができる。本明細書に記載の実現例によれば、再調整は、ユーザ２０および物理コントローラ１１２の位置を前方位置および／または前方視位置に設定することである。いくつかの実現例において、再調整は、物理コントローラ１１２に対するＨＭＤ１０６の所定位置、より具体的には、第２の関節の位置に対するユーザの位置（例えば、Ｅ１）に基づいて実行されてもよい。
【００９１】
いくつかの実現例において、ＨＭＤ１０６および／または物理コントローラ１１２を再調整するために、ユーザ２０は、物理コントローラ１１２上のキーを操作して、ＨＭＤ１０６および／またはの位置および／または向きをリセットすることができる。例えば、ユーザ２０は、物理コントローラ１１２のホームボタン１１４ａを押して、物理コントローラ１１２の位置および／または向きをリセットすることができる。
【００９２】
図１に示すように、本明細書に記載の実現例に係るシステムおよび方法は、ｚ軸（例えば、縦軸）のみに沿った動作を再調整することができる。図１に示されたｘ軸（例えば、横軸）および図１に示されたｘ軸（例えば、前後軸）に沿った動作は、同じ平面上で横方向に（例えば、左右に）移動しないため、一般に再調整する必要がない。
【００９３】
図８を参照して、図８は、本明細書に記載の技術を実施するために使用できる汎用コンピュータ装置Ｐ００および汎用モバイルコンピュータ装置Ｐ５０の例を示す図である。コンピューティング装置Ｐ５０は、ＨＭＤ１０６、物理コントローラ１１２、装置１０２〜１０８およびコントローラ１１０を含むがこれらに限定されない本明細書に開示された装置のいずれかを実装するために使用することができる。コンピューティング装置Ｐ００は、ラップトップ、デスクトップ、ワークステーション、ＰＤＡ、テレビ、サーバ、ブレードサーバ、メインフレームおよび他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すように意図されている。コンピューティング装置Ｐ５０は、ＰＤＡ、携帯電話、スマートフォンおよび他の類似するコンピューティング装置などの様々な形態のモバイル装置を表すように意図されている。図示された構成要素、それらの接続および関係並びにそれらの機能は、例示的なものに過ぎず、本明細書に記載および／または請求される発明の実施を限定するものではない。
【００９４】
コンピューティング装置Ｐ００は、プロセッサＰ０２と、メモリＰ０４と、記憶装置Ｐ０６と、メモリＰ０４および高速拡張ポートＰ１０を連結する高速インターフェイスＰ０８と、低速バスＰ１４および記憶装置Ｐ０６を連結する低速インターフェイスＰ１２とを含む。プロセッサＰ０２は、半導体ベースのプロセッサであってもよい。メモリＰ０４は、半導体ベースのメモリであってもよい。構成要素Ｐ０２、Ｐ０４、Ｐ０６、Ｐ０８、Ｐ１０およびＰ１２は、様々なバス、接続、メモリ、キャッシュなどを使用して相互に接続され、共通のマザーボード上に実装されてもよく、または適切な他の方法で実装されてもよい。プロセッサＰ０２は、メモリＰ０４または記憶装置Ｐ０６に記憶された命令を含むコンピューティング装置Ｐ００内に実行される命令を処理することによって、外部入力／出力装置のＧＵＩに、例えば高速インターフェイスＰ０８に接続された発光部Ｐ１６にグラフィック情報を表示することができる。他の実施態様において、複数のプロセッサおよび／または複数のバスは、複数のメモリおよび複数種類のメモリと共に、適切に使用されることができる。また、各装置が（例えば、サーババンク、一群のブレードサーバ、またはマルチプロセッサシステムとして）必要な動作の一部を実行するように、複数のコンピューティング装置Ｐ００を接続することができる。
【００９５】
メモリＰ０４は、コンピューティング装置Ｐ００に情報を格納する。一実現例において、メモリＰ０４は、揮発性メモリユニットである。別の実現例において、メモリＰ０４は、不揮発性メモリユニットである。メモリＰ０４は、別の形態のコンピュータ可読媒体、例えば、磁気ディスクまたは光ディスクであってもよい。
【００９６】
記憶装置Ｐ０６は、コンピューティング装置Ｐ００に大容量の記憶を提供することができる。一実現例において、記憶装置Ｐ０６は、例えば、フロッピー（登録商標）ディスク装置、ハードディスク装置、光学ディスク装置、テープディスク装置、フラッシュメモリまたは他の同様の固体メモリ装置、または記憶エリアネットワークまたは他の構成内の装置を含むアレイ記憶装置などのコンピュータ可読媒体を含むことができる。コンピュータプログラム製品は、情報担体に有形的に具体化することができる。また、コンピュータプログラム製品は、命令を含むことができる。これらの命令は、実行されると、上述したような１つ以上の方法を実行することができる。情報担体は、例えば、メモリＰ０４、記憶装置Ｐ０６、またはプロセッサＰ０２上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
【００９７】
高速コントローラＰ０８は、コンピューティング装置Ｐ００の高速の帯域幅集約動作を管理し、低速コントローラＰ１２は、低速の帯域幅集約動作を管理する。このような機能の割り当ては、例示に過ぎない。一実現例において、高速コントローラＰ０８は、メモリＰ０４、（例えば、グラフィックプロセッサまたはアクセラレータを介して）発光部Ｐ１６、および様々な拡張カード（図示せず）を挿入できる高速拡張ポートＰ１０に連結される。この実現例において、低速コントローラＰ１２は、記憶装置Ｐ０６および低速拡張ポートＰ１４に連結される。様々な通信ポート（例えば、ＵＳＢ、ブルートゥース（登録商標）、イーサネット（登録商標）、Ｗｉ−Ｆｉ（登録商標））を含み得る低速拡張ポートは、例えば、キーボード、ポインティング装置、スキャナなどの１つ以上の入出力装置に連結されてもよく、またはネットワークアダプタを介して、スイッチまたはルータなどのネットワーキング装置に連結されてもよい。
【００９８】
図示のように、コンピューティング装置Ｐ００は、いくつかの異なる形態で実装されることができる。例えば、コンピューティング装置Ｐ００は、標準サーバＰ２０として実装されてもよく、または標準サーバのグループ内に複数回実装されてもよい。また、コンピューティング装置Ｐ００は、サーバラックシステムＰ２４の一部として実装されてもよい。さらに、コンピューティング装置Ｐ００は、ラップトップコンピュータＰ２２のようなパーソナルコンピュータに実装されてもよい。代替的には、コンピューティング装置Ｐ００の要素は、装置Ｐ５０などのモバイル装置（図示せず）内の他の要素と組み合わてもよい。このような装置の各々は、１つ以上のコンピューティング装置Ｐ００、Ｐ５０を含むことができ、システムの全体は、互いに通信できる複数のコンピューティング装置Ｐ００、Ｐ５０から構成されることができる。
【００９９】
コンピューティング装置Ｐ５０は、プロセッサＰ５２、メモリＰ６４、発光部Ｐ５４などの入出力装置、通信インターフェイスＰ６６、およびトランシーバＰ６８を含む。装置Ｐ５０は、追加の記憶を提供するために、マイクロドライブまたは他の素子などの記憶装置を備えることもできる。要素Ｐ５０、Ｐ５２、Ｐ６４、Ｐ５４、Ｐ６６およびＰ６８は、様々なバスを介して相互に接続され、一部の要素は、共通のマザーボード上に実装されてもよく、または適切な他の方法で実装されてもよい。
【０１００】
プロセッサＰ５２は、メモリＰ６４に格納された命令を含むコンピューティング装置Ｐ５０内の命令を実行することができる。このプロセッサは、互いに独立している複数のアナログプロセッサおよびデジタルプロセッサを備えるチップのチップセットとして実装されてもよい。このプロセッサは、装置Ｐ５０の他の要素の協調、例えば、ユーザインターフェイスの制御、装置Ｐ５０によるアプリケーションの実行、および装置Ｐ５０による無線通信を提供することができる。
【０１０１】
プロセッサＰ５２は、制御インターフェイスＰ５８および発光部Ｐ５４に結合された発光部インターフェイスＰ５６を介してユーザと通信することができる。発光部Ｐ５４は、例えば、ＴＦＴ  ＬＣＤ（薄膜トランジスタ液晶発光部）またはＯＬＥＤ（有機発光ダイオード）発光部、または他の適切な発光部を使用することができる。発光部インターフェイスＰ５６は、グラフィック情報および他の情報をユーザに表示するために、発光部Ｐ５４を駆動する適切な回路を含むことができる。制御インターフェイスＰ５８は、ユーザからの指令を受信し、変換してからプロセッサＰ５２に提供することができる。また、プロセッサＰ５２と通信するように外部インターフェイスＰ６２を設けることによって、装置Ｐ５０は、他の装置と近距離通信を行うことができる。外部インターフェイスＰ６２は、例えば、いくつかの実現例において有線通信を提供することができ、他の実現例において無線通信を提供することができる。複数のインターフェイスを使用することもできる。
【０１０２】
メモリＰ６４は、コンピューティング装置Ｐ５０に情報を格納する。メモリＰ６４は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットのうち、１つまたは複数として実装することができる。拡張メモリＰ７４は、例えば、ＳＩＭＭ（Single In Line Memory Module）カードインターフェイスを含む拡張インターフェイスＰ７２を介して、装置Ｐ５０に提供され、接続されてもよい。具体的には、拡張メモリＰ７４は、上述したプロセスを実行するまたは補足するための命令を格納することができ、セキュリティ情報を格納することもできる。したがって、拡張メモリＰ７４は、例えば、装置Ｐ５０のセキュリティモジュールとして提供されてもよく、装置Ｐ５０の安全使用を可能にする命令でプログラムされてもよい。さらに、ＳＩＭＭカードを介して、追加情報と共に、セキュリティアプリケーションを配置することができる。例えば、ハッキングできない方法で、ＳＩＭＭカード上に識別情報を配置することができる。
【０１０３】
以下に説明するように、メモリは、例えば、フラッシュメモリおよび／またはＮＶＲＡＭメモリを含むことができる。一実現例において、コンピュータプログラム製品は、情報担体に有形的に具体化される。コンピュータプログラム製品は、命令を含み、これらの命令は、実行されると、上述したような１つ以上の方法を実行する。情報担体は、例えば、メモリＰ６４、拡張メモリＰ７４、またはプロセッサＰ５２上のメモリなどのコンピュータ可読媒体または機械可読媒体であり、トランシーバＰ６８または外部インターフェイスＰ６２を介して受信動作を実行してもよい。
【０１０４】
装置Ｐ５０は、必要に応じてデジタル信号処理回路を含む通信インターフェイスＰ６６を介して無線通信を行うことができる。通信インターフェイスＰ６６は、とりわけ、ＧＳＭ（登録商標）通話、ＳＭＳ、ＥＭＳ、またはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ（登録商標）、ＣＤＭＡ２０００、またはＧＰＲＳなどの様々なモードまたはプロトコルに基づいて、通信を提供することができる。このような通信は、例えば、高周波トランシーバＰ６８を介して行われてもよい。また、ブルートゥース（登録商標）、Ｗｉ−Ｆｉ（登録商標）、または他のトランシーバ（図示せず）を用いて、短距離通信を行うことができる。さらに、ＧＰＳ（全地球測位システム）受信モジュールＰ７０は、追加のナビゲーション関連無線データおよび位置関連無線データを装置Ｐ５０に提供することができる。これらの無線データは、装置Ｐ５０上で動作するアプリケーションに適宜に使用される。
【０１０５】
また、装置Ｐ５０は、音声コーデックＰ６０を使用して音声通信を行うことができる。音声コーデックＰ６０は、ユーザから受信した音声情報を使用可能なデジタル情報に変換することができる。同様に、音声コーデックＰ６０は、例えば、装置Ｐ５０の送受話器内のスピーカを介して、ユーザに可聴な音声を生成することができる。このような音声は、音声電話からの音声を含むことができ、記録された音声（例えば、音声メッセージ、音楽ファイル）を含むことができ、装置Ｐ５０上で動作するアプリケーションによって生成された音声を含むこともできる。
【０１０６】
図示のように、コンピューティング装置Ｐ５０は、いくつかの異なる形態で実装されることができる。例えば、コンピューティング装置Ｐ５０は、携帯電話Ｐ８０として実装されてもよく、スマートフォンＰ８２、ＰＤＡまたは他の類似するモバイル装置の一部として実装されてもよい。
【０１０７】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェアおよび／またはそれらの組み合わせで実現することができる。これらの様々な実装は、プログラム可能なシステム上で実行可能および／または解釈可能な１つ以上のコンピュータプログラムにおける実装を含むことができる。このプログラム可能なシステムは、記憶システムからデータおよび命令を受信し、データおよび命令を記憶システムに送信するように記憶システムに連結された少なくとも１つのプログラム可能な専用または汎用のプロセッサ、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。
【０１０８】
（プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている）これらのコンピュータプログラムは、プログラム可能なプロセッサ用の機械命令を含み、高度な手続き型プログラミング言語および／または高度なオブジェクト指向プログラミング言語で実装することができ、および／またはアセンブリ言語／機械言語で実装することができる。「機械可読媒体」という用語は、本明細書に使用された場合、プログラム可能なプロセッサに機械命令および／またはデータを提供するために使用された機械可読信号としての機械命令を受け取る機械可読媒体を含む任意のコンピュータプログラム製品、機械および／または装置（例えば、磁気ディスク、光学ディスク、メモリ、プログラム可能な論理装置（ＰＬＤ））を指す。「機械可読信号」という用語は、機械命令および／またはデータをプログラム可能なプロセッサに提供するために使用された任意の信号を指す。
【０１０９】
方法ステップは、入力データを処理して出力を生成することによって機能するようにコンピュータプログラムを実行する１つ以上のプログラム可能なプロセッサによって、実施されてもよい。また、方法ステップは、専用ロジック回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）に実装され得る装置よって実行されてもよい。
【０１１０】
コンピュータプログラムの処理に適したプロセッサは、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方並びに任意の種類のデジタルコンピュータの任意の１つ以上のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリまたはランダムアクセスメモリもしくはその両方から命令およびデータを受け取る。コンピュータの構成要素は、命令を実行するための少なくとも１つのプロセッサと、命令およびデータを格納するための１つ以上のメモリ装置を含むことができる。一般に、コンピュータは、データを格納するための１つ以上の大容量記憶装置、例えば磁気ディスク、光磁気ディスクまたは光ディスクを含んでもよく、または１つ以上の大容量記憶装置、例えば磁気ディスク、光磁気ディスクまたは光ディスクからデータを受信または転送するようにそれらと動作可能に接続されてもよい。コンピュータプログラムの命令およびデータを具体化するのに適した情報担体は、例として、例えばＥＰＲＯＭ、ＥＥＰＲＯＭおよびフラッシュメモリ装置のような半導体メモリ装置、例えば内蔵ハードディスクまたは取り外し可能なディスクのような磁気ディスク、光磁気ディスク、およびＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭディスクを含むあらゆる形態の不揮発性メモリを含む。プロセッサおよびメモリは、特殊用途の論理回路によって補足されてもよく、特殊用途の論理回路に組み入れてもよい。
【０１１１】
ユーザと情報交換を行うために、本明細書に記載のシステムおよび技術は、発光素子（例えば、ＣＲＴ（ブラウン管）モニタまたはＬＣＤ（液晶発光）モニタ）と、キーボードと、ポインティング装置（例えば、マウスまたはトラックボール）とを含むコンピュータ上で実装することができる。発光素子は、情報を表示することができ、ユーザは、キーボードとポインティング装置とを用いて、コンピュータに入力を提供することができる。他の種類の装置を使用して、ユーザと情報交換を行うこともできる。例えば、ユーザに与えるフィードバックは、任意の形の感覚フィードバック（例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック）であってもよく、ユーザから受け入れる入力は、音響入力、音声入力、または触覚入力を含む任意の形態であってもよい。
【０１１２】
本明細書に記載のシステムおよび技術は、バックエンド要素（例えば、データサーバ）を含むコンピューティングシステム、またはミドルウェア要素（例えば、アプリケーションサーバ）を含むコンピューティングシステム、またはフロントエンド要素（例えば、ユーザが本明細書に記載のシステムおよび技術の実装と情報交換を行うことができるグラフィカルユーザインターフェイスまたはウェブブラウザを含むクライアントコンピュータ）を含むコンピューティングシステム、またはバックエンド要素、ミドルウェア要素およびフロントエンド要素の任意の組み合わせを含むコンピューティングシステムに実装されてもよい。これらのシステム要素は、任意の形式または媒体のデジタルデータ通信（例えば、通信ネットワーク）によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）およびインターネットを含む。
【０１１３】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは、一般的に互いに遠隔であり、典型的には通信ネットワークを介して情報交換を行う。クライアントとサーバとの関係は、各々のコンピュータ上で動作しており、互いにクライアント−サーバ関係を有するコンピュータプログラムに依存する。
【０１１４】
非限定的例として、「約」、「実質的に」および「一般に」などの用語は、本明細書に使用された場合、その精確な値または範囲が不要であり、指定する必要がないことを示す。これらの用語は、本明細書に使用された場合、当業者にとって明白な意味を有する。
【０１１５】
また、上、下、左、右、上部、下部、横方向、端部、前部および後部などの用語は、本明細書に使用された場合、現在の向きまたは図示された向きを基準にしたことを意味する。別の向きを基準にした場合、これらの用語を修正しなければならない。
【０１１６】
また、本明細書および添付の特許請求の範囲において、文脈上他の意味を明記しない限り、単数形は、複数形のものを除外しない。また、「および」、「または」および「および／または」などの接続詞は、文脈上他の意味を明記しない限り、包括的な意味を有する。例えば、「Ａおよび／またはＢ」は、Ａのみ、Ｂのみ、およびＡとＢを含む。
【０１１７】
さらに、様々な添付図面に示された接続線およびコネクタは、様々な要素間の例示的な機能的関係および／または物理的または論理的結合を表すことを意図している。理解すべきことは、多くの代替および／または追加の機能的関係、物理的接続または論理的接続が存在してもよいことである。さらに、要素が「必須」または「重要」であると明白に記載されていない限り、このような要素は、本開示の実施に不可欠ではない。さらに、図面は、縮尺通りに描かれておらず、例示および説明を明確にするために描かれている。
【０１１８】
本明細書は、特定の方法、装置および製品の例を説明したが、本発明の範囲は、これらの例示に限定されない。本明細書に使用された用語は、特定の特徴を説明するためのものであり、限定することを意図していない。本発明は、特許請求の範囲に含まれる全ての方法、装置および製品を含む。
【図１】
2020529646.tif 000003
【図２Ａ】
2020529646.tif 000004
【図２Ｂ】
2020529646.tif 000005
【図２Ｃ】
2020529646.tif 000006
【図３】
2020529646.tif 000007
【図４】
2020529646.tif 000008
【図５】
2020529646.tif 000009
【図６】
2020529646.tif 000010
【図７Ａ】
2020529646.tif 000011
【図７Ｂ】
2020529646.tif 000012
【図８】
2020529646.tif 000013
【手続補正書】
【提出日】令和2年2月4日(2020.2.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータが実行する方法であって、
ユーザのヘッドマウントディスプレイ（ＨＭＤ）の位置を決定することと、
前記ＨＭＤの前記位置から所定の距離に基づいて、関節の位置を定めることと、
前記関節からセグメントを定めることと、
前記セグメントの端部に基づいて、仮想環境内の仮想コントローラの位置を定めることと、
前記セグメントおよび前記関節に基づいて、物理コントローラの向きを、前記仮想環境内の前記仮想コントローラの仮想位置および仮想向きに変換することとを含む、コンピュータ実行方法。
【請求項２】
前記仮想コントローラは、前記物理コントローラのヨー運動に応じて、横方向に沿って移動するように構成されている、請求項１に記載のコンピュータ実行方法。
【請求項３】
前記仮想コントローラは、前記物理コントローラのピッチ運動に応じて、縦方向に沿って移動するように構成されている、請求項１または２に記載のコンピュータ実行方法。
【請求項４】
前記仮想コントローラは、前記物理コントローラのロール運動に応じて、前記物理コントローラが長手方向に整列させられた軸を中心にして回転するように構成されている、請求項１から３のいずれかに記載のコンピュータ実行方法。
【請求項５】
前記セグメントは、第１のセグメントであり、
前記関節は、第１の関節であり、
前記方法は、前記第１のセグメントの端部に位置する第２の関節から延在する第２のセグメントを定めることをさらに含む、請求項１から４のいずれかに記載のコンピュータ実行方法。
【請求項６】
前記第２のセグメントは、前記第２の関節を中心にして回転するように構成されている、請求項５に記載のコンピュータ実行方法。
【請求項７】
前記ユーザの位置が検出された場合、前記関節の前記位置を再び定めることをさらに含む、請求項１から６のいずれかに記載のコンピュータ実行方法。
【請求項８】
コンピュータが実行する方法であって、
ユーザのヘッドマウントディスプレイ（ＨＭＤ）の位置を決定することと、
前記ＨＭＤの前記位置に基づいて、関節の位置を定めることと、
前記関節からセグメントの端部までのセグメントを定めることと、
前記セグメントの前記端部の位置に基づいて、仮想現実（ＶＲ）環境内の仮想コントローラの初期仮想位置を定めることと、
前記セグメントおよび前記関節に基づいて、物理コントローラの向きの変化に応じて、前記ＶＲ環境内の前記仮想コントローラの仮想位置および仮想向きを定めることとを含む、コンピュータ実行方法。
【請求項９】
前記仮想コントローラは、前記物理コントローラのヨー運動に応じて、横方向に沿って移動するように構成されている、請求項８に記載のコンピュータ実行方法。
【請求項１０】
前記仮想コントローラは、前記物理コントローラのピッチ運動に応じて、縦方向に沿って移動するように構成されている、請求項８または９に記載のコンピュータ実行方法。
【請求項１１】
前記仮想コントローラは、前記物理コントローラのロール運動に応じて、前記物理コン
トローラが長手方向に整列させられた軸を中心にして回転するように構成されている、請求項８から１０のいずれか１項に記載のコンピュータ実行方法。
【請求項１２】
前記セグメントは、第１のセグメントであり、
前記関節は、第１の関節であり、
前記方法は、前記第１のセグメントの端部に位置する第２の関節から延在する第２のセグメントを定めることをさらに含む、請求項８から１１のいずれか１項に記載のコンピュータ実行方法。
【請求項１３】
前記ユーザの位置が検出された場合、前記関節の前記位置を再び定めることをさらに含む、請求項８から１２のいずれか１項に記載のコンピュータ実行方法。
【請求項１４】
装置であって、
仮想現実（ＶＲ）環境を表示するように使用されたヘッドマウントディスプレイ（ＨＭＤ）と、
前記ＶＲ環境内のオブジェクトと対話するように構成された物理コントローラと、
プロセッサとを備え、
前記プロセッサは、
ユーザの前記ＨＭＤの位置を決定し、
前記ＨＭＤの前記位置に基づいて、関節の位置を定め、
前記関節からセグメントの端部までのセグメントを定め、および
前記物理コントローラの向きの変化に応じて、仮想コントローラの仮想位置および仮想向きの変化を定めるようにプログラムされ、
前記仮想コントローラは、前記セグメントの前記端部に固定されている、装置。
【請求項１５】
前記仮想コントローラは、前記物理コントローラのヨー運動に応じて、横方向に沿って移動するように構成されている、請求項１４に記載の装置。
【請求項１６】
前記仮想コントローラは、前記物理コントローラのピッチ運動に応じて、縦方向に沿って移動するように構成されている、請求項１４または１５に記載の装置。
【請求項１７】
前記仮想コントローラは、前記物理コントローラのロール運動に応じて、前記物理コントローラが長手方向に整列させられた軸を中心にして回転するように構成されている、請求項１４から１６のいずれか１項に記載の装置。
【請求項１８】
前記プロセッサは、前記ユーザの位置が検出された場合、前記関節の前記位置を再び定めるようにさらにプログラムされている、請求項１４から１７のいずれか１項に記載の装置。
【請求項１９】
請求項１から１３のいずれか１項に記載の方法をコンピュータに実行させるためのプログラム。
【国際調査報告】
2020529646.tif 000014
2020529646.tif 000015
2020529646.tif 000016