(57)【特許請求の範囲】
【請求項１】
コンピュータにより実現される方法であって、
仮想環境において仮想ユーザについて入力を受信するステップを含み、前記入力は、前記仮想環境にアクセスしているユーザによって行なわれた複数の運動に基づいており、前記方法はさらに、
前記複数の運動に基づいて、前記仮想ユーザの少なくとも一部分が衝突ゾーンのしきい値距離内にあることを検出するステップを含み、前記衝突ゾーンは、少なくとも１つの仮想オブジェクトに関連付けられており、前記方法はさらに、
前記少なくとも一部分および前記少なくとも１つの仮想オブジェクトに基づいて、前記仮想ユーザのために複数の衝突モードの中から１つの衝突モードを選択するステップと、
選択された前記衝突モードに基づいて、前記仮想ユーザを動的に修正するステップとを含み、
前記複数の衝突モードの各々は、
前記衝突ゾーンに対する前記仮想ユーザの位置を入力するための前記ユーザの身体部位または前記ユーザによって操作される機器を定める、方法。
【請求項２】
修正された前記仮想ユーザと整列するように前記衝突ゾーンを調節するステップをさらに含み、前記調節するステップは、前記入力を受信する前記衝突ゾーンにおいて複数の可視ターゲットを提供するステップを含み、前記複数の可視ターゲットは、選択された前記衝突モードに関連付けられている、請求項１に記載の方法。
【請求項３】
前記入力は、前記少なくとも１つの仮想オブジェクトの近傍のホバー運動を含み、前記しきい値距離は、前記少なくとも１つの仮想オブジェクトから約１／２〜約１インチを含む、請求項１または２に記載の方法。
【請求項４】
前記仮想環境はスクロール可能コンテンツを提供していると判断するステップと、
手のひらベースの衝突モードを選択するステップと、
前記コンテンツを、前記ユーザの手によって始動された手のひらジェスチャーの受信に応答してスクロールされるように構成するステップとをさらに含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
前記仮想ユーザを動的に修正するステップは、前記仮想環境における入力の提供に対応して前記仮想ユーザの一部分を修正するステップを含む、請求項１〜４のいずれかに記載の方法。
【請求項６】
前記一部分を修正するステップは、
前記入力は指の運動を含むこと、および、前記一部分は１本以上の仮想の指を含むことを検出するステップと、
前記衝突ゾーンへの前記１本以上の仮想の指の到達範囲を広げるステップとをさらに含み、前記広げるステップは、前記仮想環境における前記１本以上の仮想の指までのしきい値距離内に示された仮想オブジェクトと対話するように、前記仮想ユーザを適合させるステップを含む、請求項５に記載の方法。
【請求項７】
前記仮想ユーザを動的に修正するステップは、視覚応答を前記ユーザに提供するステップをさらに含む、請求項１〜６のいずれかに記載の方法。
【請求項８】
選択された前記衝突モードに少なくとも部分的に基づいて、少なくとも１つのコンテキスト依存衝突ゾーンを提供するステップをさらに含み、
前記衝突ゾーンのコンテキストが指のジェスチャーを受信するように構成される場合、前記衝突モードは細かい衝突モードとして構成され、
前記衝突ゾーンの前記コンテキストが対話型の手のジェスチャーを受信するように構成される場合、前記衝突モードは粗い衝突モードとして構成される、請求項１〜７のいずれかに記載の方法。
【請求項９】
前記コンテキスト依存衝突ゾーンは、前記衝突ゾーンに関連付けられたサイズに基づいて提供される、請求項８に記載の方法。
【請求項１０】
前記コンテキスト依存衝突ゾーンは、前記仮想環境における前記少なくとも１つの仮想オブジェクトに関連付けられたサイズに基づいて提供される、請求項８に記載の方法。
【請求項１１】
システムであって、
仮想環境において仮想現実体験を生成する電子コンピューティングデバイスを含み、前記電子コンピューティングデバイスは物理的空間内でポータブルであり、前記システムはさらに、
前記電子コンピューティングデバイスと通信している複数のセンサを含み、前記センサは、前記物理的空間内の前記電子コンピューティングデバイスにアクセスしているユーザに関連付けられた動きを検出するように構成され、前記システムはさらに、
少なくとも１つのプロセッサを含み、前記プロセッサは、
前記仮想環境における運動を検出するように構成され、前記運動は物理ユーザによって行なわれ、前記運動は前記仮想環境において表わされ、前記物理ユーザの身体部位に関連付けられており、前記プロセッサはさらに、
仮想オブジェクトが前記身体部位よりも小さい前記仮想オブジェクト上のエリアにおいて入力を受信するように構成されているという判断に応答して、前記身体部位を用いた選択能力を修正するために複数の衝突モードの中から１つの衝突モードを選択し、
前記仮想環境における前記身体部位の表現上に、修正された前記選択能力を表示し、
異なる仮想オブジェクトに関連付けられた運動を検出するまで、選択された前記衝突モードを維持するように構成され、
前記複数の衝突モードの各々は、
衝突ゾーンに対する仮想ユーザの位置を入力するための前記物理ユーザの身体部位または前記物理ユーザによって操作される機器を定める、システム。
【請求項１２】
前記仮想環境における前記身体部位の表現上に、修正された前記選択能力を表示することは、前記仮想オブジェクトと対話する機構を前記物理ユーザに示す表示を点灯させ、振動させ、動かし、大きくし、または小さくするように、前記身体部位を構成することを含む、請求項１１に記載のシステム。
【請求項１３】
前記仮想オブジェクトはキーボードであり、前記身体部位は手であり、前記衝突モードは前記手の指先エリアを小さくするように選択され、前記身体部位の前記表現は各指の上の表示器を含む、請求項１１または１２に記載のシステム。
【請求項１４】
前記衝突モードは、手全体モード、腕全体モード、指モード、全身モード、およびキーボードモードからなる群から選択され、各モードは、細かい構成と粗い構成とを含む、請求項１１〜１３のいずれかに記載のシステム。
【請求項１５】
請求項１〜１０のいずれかに記載の方法をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願との相互参照
本願は、２０１５年８月４日に出願された「仮想現実における手のコンテキスト依存衝突」（Context Sensitive Hand Collisions in Virtual Reality）と題された米国特許出願連続番号第６２／２００，８２５号の優先権および利益を主張する。その開示はその全体がここに引用により援用される。
【０００２】
技術分野
本説明は一般に、仮想現実（virtual reality：ＶＲ）環境におけるコンピューティングデバイスの使用に関する。特に、本説明は、ＶＲ環境において衝突を扱うための手法に関する。
【背景技術】
【０００３】
背景
一般に、仮想現実は、コンピュータによって生成された３次元（３Ｄ）環境において人を包囲し、没入させることができる。人は、特定の電子デバイスと対話することにより、および／または特定の電子デバイスを物理的に装着することにより、この環境に入ることができる。例示的な電子デバイスは、画面を含むヘルメット、ユーザが画面（たとえば、表示装置またはモニタ）を見るときに覗く眼鏡またはゴーグル、センサ付き手袋、およびセンサを含む外部ハンドヘルドデバイスを含み得るものの、それらに限定されない。人は、一旦ＶＲ環境に入ると、その人にとって現実のように見えるような態様で（たとえば、物理的な態様で）３Ｄ環境と対話することができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
１つ以上のコンピュータのシステムが、特定の動作またはアクションを行なうように構成され得る。当該動作またはアクションは、動作時に当該システムに当該アクションを行なわせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せが当該システムにインストールされることによって行なわれる。１つ以上のコンピュータプログラムが、特定の動作またはアクションを行なうように構成され得る。当該動作またはアクションは、データ処理装置によって実行されると、当該装置に当該アクションを行なわせる命令を含むことによって行なわれる。
【０００５】
一般的な一局面では、コンピュータにより実現される方法は、コンピュータにより実現される方法を含む。当該方法は、仮想環境において仮想ユーザについて入力を受信するステップを含んでいてもよい。入力は、仮想環境にアクセスしているユーザによって行なわれた複数の運動に基づいていてもよい。当該方法はまた、複数の運動に基づいて、仮想ユーザの少なくとも一部分が衝突ゾーンのしきい値距離内にあることを検出するステップを含んでいてもよい。衝突ゾーンは、少なくとも１つの仮想オブジェクトに関連付けられてもよい。当該方法はまた、少なくとも一部分および少なくとも１つの仮想オブジェクトに基づいて、仮想ユーザのための衝突モードを選択するステップと、選択された衝突モードに基づいて、仮想ユーザを動的に修正するステップとを含んでいてもよい。この局面の他の実施形態は、方法のアクションを行なうように各々構成された、対応するコンピュータシステム、装置、および１つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含む。
【０００６】
実現化例は、以下の特徴のうちの１つ以上を含んでいてもよい。当該方法はまた、修正された仮想ユーザと整列するように衝突ゾーンを調節するステップを含んでいてもよい。調節するステップは、入力を受信する衝突ゾーンにおいて複数の可視ターゲットを提供するステップを含んでいてもよい。複数の可視ターゲットは、選択された衝突モードに関連付けられてもよい。入力は、少なくとも１つの仮想オブジェクトの近傍のホバー運動を含んでいてもよく、しきい値距離は、少なくとも１つの仮想オブジェクトから約１／２〜約１インチを含む。
【０００７】
当該方法はまた、仮想環境はスクロール可能コンテンツを提供していると判断するステップと、手のひらベースの衝突モードを選択するステップと、コンテンツを、ユーザの手によって始動された手のひらジェスチャーの受信に応答してスクロールされるように構成するステップとを含んでいてもよい。仮想ユーザを動的に修正するステップは、仮想環境における入力の提供に対応して仮想ユーザの一部分を修正するステップを含んでいてもよい。一部分を修正するステップはまた、入力は指の運動を含むこと、および、一部分は１本以上の仮想の指を含むことを検出するステップと、衝突ゾーンへの１本以上の仮想の指の到達範囲を広げるステップとを含んでいてもよい。広げるステップは、仮想環境における１本以上の仮想の指までのしきい値距離内に示された仮想オブジェクトと対話するように、仮想ユーザを適合させるステップを含んでいてもよい。仮想ユーザを動的に修正するステップは、視覚応答、音声応答、または触覚応答のうちの少なくとも１つをユーザに提供するステップを含んでいてもよい。当該方法はまた、選択された衝突モードに少なくとも部分的に基づいて、少なくとも１つのコンテキスト依存衝突ゾーンを提供するステップを含んでいてもよく、衝突ゾーンのコンテキストが指のジェスチャーを受信するように構成される場合、衝突モードは細かい衝突モードとして構成され、衝突ゾーンのコンテキストが対話型の手のジェスチャーを受信するように構成される場合、衝突モードは粗い衝突モードとして構成される。コンテキスト依存衝突ゾーンは、衝突ゾーンに関連付けられたサイズに基づいて提供されてもよい。コンテキスト依存衝突ゾーンは、仮想環境における少なくとも１つの仮想オブジェクトに関連付けられたサイズに基づいて提供されてもよい。説明された手法の実現化例は、ハードウェア、方法またはプロセス、またはコンピュータアクセス可能媒体上のコンピュータソフトウェアを含んでいてもよい。
【０００８】
１つ以上のコンピュータのシステムが、特定の動作またはアクションを行なうように構成され得る。当該動作またはアクションは、動作時に当該システムに当該アクションを行なわせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せが当該システムにインストールされることによって行なわれる。１つ以上のコンピュータプログラムが、特定の動作またはアクションを行なうように構成され得る。当該動作またはアクションは、データ処理装置によって実行されると、当該装置に当該アクションを行なわせる命令を含むことによって行なわれる。一般的な一局面は、仮想現実環境において仮想現実体験を生成する電子コンピューティングデバイスを含むシステムを含み、電子コンピューティングデバイスは物理的空間内でポータブルであり、当該システムはさらに、電子コンピューティングデバイスと通信している複数のセンサを含み、センサは、物理的空間内の電子コンピューティングデバイスにアクセスしているユーザに関連付けられた動きを検出するように構成され、当該システムはさらに、少なくとも１つのプロセッサを含む。プロセッサは、仮想現実環境における運動を検出するように構成されてもよく、運動は物理ユーザによって行なわれ、運動は仮想環境において表わされ、物理ユーザの身体部位に関連付けられている。仮想オブジェクトが身体部位よりも小さい仮想オブジェクト上のエリアにおいて入力を受信するように構成されているという判断に応答して、システムは、身体部位を用いた選択能力を修正するための衝突モードを選択するように構成されてもよい。少なくとも１つのプロセッサは、仮想環境における身体部位の表現上に、修正された選択能力を表示し、異なる仮想オブジェクトに関連付けられた運動を検出するまで、選択された衝突モードを維持するように構成されてもよい。
【０００９】
実現化例は、以下の特徴のうちの１つ以上を含んでいてもよい。プロセッサは、仮想環境における身体部位の表現上に、修正された選択能力を表示してもよく、それは、仮想オブジェクトと対話する機構を物理ユーザに示す表示を点灯させ、振動させ、動かし、大きくし、または小さくするように、身体部位を構成することを含む。
【００１０】
いくつかの実現化例では、仮想オブジェクトはキーボードであり、身体部位は手であり、衝突モードは手の指先エリアを小さくするように選択され、身体部位の表現は各指の上の表示器を含む。いくつかの実現化例では、衝突モードは、手全体モード、腕全体モード、指モード、全身モード、およびキーボードモードからなる群から選択され、各モードは、細かい構成と粗い構成とを含む。
【００１１】
説明された手法の実現化例は、ハードウェア、方法またはプロセス、またはコンピュータアクセス可能媒体上のコンピュータソフトウェアを含んでいてもよい。別の一般的な局面では、命令を含む、非一時的なコンピュータ読取可能媒体であって、命令は、コンピュータシステムのプロセッサによって実行されると、コンピュータシステムに、仮想環境において仮想ユーザについて入力を受信するステップを行なわせ、入力は、仮想環境にアクセスしているユーザによって行なわれた複数の運動に基づいている。命令はまた、複数の運動に基づいて、仮想ユーザの少なくとも一部分が衝突ゾーンのしきい値距離内にあることを検出するステップを含んでいてもよい。衝突ゾーンは、少なくとも１つの仮想オブジェクトに関連付けられてもよい。命令はまた、仮想ユーザの少なくとも一部分が衝突ゾーンのしきい値距離内にあることに基づいて、仮想ユーザのための衝突モードを選択するステップと、選択された衝突モードに基づいて、仮想ユーザを動的に修正するステップとを含んでいてもよい。
【００１２】
実現化例は、以下の特徴のうちの１つ以上を含んでいてもよい。命令は、修正された仮想ユーザと整列するように衝突ゾーンを調節するステップを含んでいてもよい。調節するステップは、入力を受信する衝突ゾーンにおいて複数の可視ターゲットを提供するステップを含んでいてもよく、複数の可視ターゲットは、選択された衝突モードに関連付けられている。いくつかの実現化例では、入力はホバー運動を含み、しきい値距離は、少なくとも１つの仮想オブジェクトから約１／２〜約１インチを含む。
【００１３】
いくつかの実現化例では、仮想ユーザを動的に修正するステップは、仮想環境における入力の提供に対応して仮想ユーザの一部分を修正するステップを含む。いくつかの実現化例では、仮想ユーザを動的に修正するステップは、入力は指の運動を含むこと、および、一部分は１本以上の仮想の指を含むことを検出するステップと、衝突ゾーンへの１本以上の仮想の指の到達範囲を広げるステップとをさらに含む。広げるステップは、仮想環境における１本以上の仮想の指までのしきい値距離内に示された仮想オブジェクトと対話するように、仮想ユーザを適合させるステップを含んでいてもよい。
【００１４】
命令は、選択された衝突モードに少なくとも部分的に基づいて、少なくとも１つのコンテキスト依存衝突ゾーンを提供するステップを含んでいてもよい。衝突ゾーンのコンテキストが指のジェスチャーを受信するように構成される場合、衝突モードは細かい衝突モードとして構成されてもよく、衝突ゾーンのコンテキストが対話型の手のジェスチャーを受信するように構成される場合、衝突モードは粗い衝突モードとして構成される。この局面の他の実施形態は、方法のアクションを行なうように各々構成された、対応するコンピュータシステム、装置、および１つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含む。
【００１５】
１つ以上の実現化例の詳細を、添付図面および以下の説明で述べる。他の特徴は、説明および図面から、ならびに請求項から明らかとなるであろう。
【図面の簡単な説明】
【００１６】
【図１】３Ｄ仮想現実（ＶＲ）環境においてコンテキスト依存衝突対話を提供する例示的なシステムのブロック図である。
【図２】コンピューティングデバイスと対話するユーザを示す図である。
【図３Ａ】頭部装着型ディスプレイ（head-mounted display：ＨＭＤ）デバイスの画面上でユーザが見ることができる画像を示す図である。
【図３Ｂ】頭部装着型ディスプレイ（ＨＭＤ）デバイスの画面上でユーザが見ることができる画像を示す図である。
【図３Ｃ】頭部装着型ディスプレイ（ＨＭＤ）デバイスの画面上でユーザが見ることができる画像を示す図である。
【図４】ＶＲ環境においてコンテキスト依存衝突を提供するためのプロセスの一実施形態を図解するフローチャートである。
【図５】ここに説明される手法を実現するために使用され得るコンピュータデバイスおよびモバイルコンピュータデバイスの一例を示す図である。
【発明を実施するための形態】
【００１７】
さまざまな図面における同じ参照符号は、同じ要素を示す。
詳細な説明
コンピュータによって生成された仮想現実（ＶＲ）環境は、仮想空間と、ユーザが物理オブジェクトと対話するかのように仮想空間と対話する（たとえば、仮想空間に手を伸ばす）ことを可能にする仮想オブジェクトとを生成することにより、ユーザのための没入型の体験を作り出すことができる。一般に、ＶＲ環境は、仮想空間および仮想オブジェクトと対話する多くの機構をユーザに提供できる。これらの機構は、ユーザがＶＲ環境に入力を提供することを可能にする、電子機器を収容するウェアラブル製品（たとえば、頭部装着型デバイス、手袋、ボディースーツ、視覚カメラなど）、センサ、および他のデバイスといった、特定のユーザ運動を感知するように構成された物理デバイスを含み得る。いくつかの実現化例では、ユーザは、ＶＲ環境におけるオブジェクトに向かって身を傾ける（たとえば、動く）ことができる。身を傾けることは、身体部位または部分のうちの一部またはすべてを含み得る。たとえば、ユーザは、ＶＲ環境におけるオブジェクトの近く（オブジェクトのしきい値距離内）で自分の手をホバーする（hover）ことができ、システム１００は、ユーザの手のホバー／近さを検出することができる。ホバリングは、あるしきい値量の時間、オブジェクトの近傍（たとえばしきい値距離内）の空中に浮いているかのように、オブジェクトの近傍の空中で一時停止することを含んでいてもよい。ホバリングは、時間ベースのコンポーネントと、距離ベースのコンポーネントとを含み得る。たとえば、ユーザは、仮想オブジェクトの上方で約１〜約３秒の時間ホバーすることができ、仮想オブジェクトから約１インチ〜約３インチ内でホバーすることができる。一般に、システムはホバーを検出し、検出されたホバーを、ユーザの手のしきい値距離内の特定のオブジェクトに関連付けられたメニュー、アクション、または出力をトリガする機構として使用することができる。
【００１８】
ユーザがＶＲ環境と対話したい場合、ユーザは、１本以上の指、手、腕、足、脚などを使って、ＶＲ環境における仮想オブジェクトに到達しようとしてもよい。そのような到達（たとえば運動）は、仮想オブジェクトの運動およびＶＲ環境への修正をシミュレートする入力として検出されてもよい。いくつかの実現化例では、ＶＲ環境における表示のためにユーザの身体の部分をレンダリングすることができ、ユーザがそのような部分を動かすと、ここに説明されるシステムおよび方法は、ユーザ入力を受信することができる。ＶＲ環境に提供されたユーザ入力は、仮想オブジェクトと他のレンダリングされたＶＲコンテンツまたはオブジェクトとの間に起こる衝突として解釈され得る。ここに説明されるシステムおよび方法は、そのような衝突を検出し、検出された衝突に関してＶＲ環境がユーザにどのように応答するかを判断するように構成され得る。ＶＲ環境における検出された衝突への応答は、以下に詳細に説明されるような視覚応答、音声応答、および／または触覚応答の任意の組合せを含み得る。
【００１９】
図１は、３Ｄ仮想現実（ＶＲ）環境においてコンテキスト依存衝突対話を提供する例示的なシステム１００のブロック図である。一般に、システム１００は、ここに説明される方法、コンポーネント、および手法を使用して、３Ｄ  ＶＲ環境およびＶＲコンテンツを提供してもよい。特に、システム１００は、ＶＲ環境内の仮想オブジェクトおよび／またはユーザに関連付けられた運動（たとえば対話）への直観的な応答を、ユーザに提供することができる。いくつかの実現化例では、システム１００は、仮想ユーザの部分を、ＶＲ環境と対話するためにどの部分が（物理ユーザによって）選択されたかに基づいて修正することができる。たとえば、ユーザは、ブロックに手を伸ばして取り上げることによって、ＶＲ環境において対話していてもよい。ユーザは、ブロックをつかんで積み重ねてもよい。ユーザの指、手のひら、前腕、およびおそらくは他の腕または部分が、衝突をトリガして、物理的な世界に影響を与えてもよい。これによりユーザは、自分の手の中で品物を正確につかむこと、または、当該品物をリアルに体験して押すことができる。システム１００は、どの部分が（仮想）ブロックと最初に対話しそうかを検出することができ、他の身体部位との他の衝突をブロックすることができる。別の例では、システム１００はユーザが手を使って仮想オブジェクトと衝突する意図があることを検出できるため、システム１００は、指および手が仮想ブロックに近づくにつれて、それらの到達範囲を広げることができる。
【００２０】
システム１００は、仮想オブジェクトを収容するＶＲ環境に、対話型のコンテキスト依存ターゲットを提供するように構成され得る。ここで使用されるように、ターゲットとは、ユーザから入力を受信するための制御エリアを指していてもよい。制御エリアは任意の形状およびサイズであってもよく、検出されたユーザ入力、またはユーザがどのように制御エリアと対話しているかというコンテキストに依存して、ＶＲ環境によって修正され得る。入力とは、物理的空間を通る手の運動、指の運動、または他の物理的運動などといった、物理ユーザ入力を指していてもよい。入力は、仮想オブジェクトの何らかの局面を動かし、修正し、または他の態様で当該局面に影響を与えるために仮想オブジェクトと対話すること（たとえば、衝突すること）を含む、ＶＲ環境における仮想オブジェクトにおいて運動をトリガすることをもたらしてもよい。ユーザ入力の検出に応答して、システム１００は、ＶＲ環境におけるオブジェクトまたはコンテンツに関連付けられたアクションを行なうことができる。
【００２１】
ＶＲ環境におけるオブジェクトまたはコンテンツに関連付けられたアクションを行なう前に、コンテキスト依存ターゲットは、ユーザについての多くの詳細を考慮に入れることができる。たとえば、コンテキスト依存ターゲットは、ユーザ固有の情報、ユーザ運動情報、仮想オブジェクト情報、ＶＲ環境情報、および／または他のＶＲベースの情報に少なくとも部分的に基づいて構成および／または動作されてもよい。「ターゲット」および「コンテキスト依存ターゲット」という用語は、本開示全体にわたって交換可能に使用されてもよく、いずれの用語もコンテキスト依存ターゲットに当てはまり得る。
【００２２】
一般に、ターゲットは、ＶＲ環境においてユーザが（たとえば、レンダリングされた仮想ユーザとして）運動を制御することによって選択され得る。ここに説明されるシステムおよび方法はまた、ターゲット上またはその近くでレンダリングされたユーザの一部分を検出することに応答して、レンダリングされたユーザを動的に修正するように構成され得る。たとえば、ＶＲ環境において提示された（１つ以上のターゲットに関連付けられた）仮想オブジェクトに向かってユーザが身を傾け（たとえば、ホバーし）始めると、システム１００はその運動を検出して、即時のまたはほぼ即時のアクション（たとえば機能性）をトリガするためにユーザが通過できる多くの選択可能エリア（たとえばターゲット）をＶＲ環境内に表示することができる。特に、衝突が起こりそうであるという判断に応答して、システム１００は、１つ以上のコンテキスト依存ターゲットを提供することによって、および／または、レンダリングされたユーザの部分（または、ＶＲ環境において選択を行なう他の項目）を動的に修正することによって応答することができ、ユーザがコンテキスト依存ターゲットを選択するのを支援する。
【００２３】
動的な修正は、ターゲットの精密な選択を可能にするために、システム１００によって行なわれ得る。いくつかの実現化例では、動的な修正は、ユーザの身体部位（または、ユーザ入力に関連付けられた他の仮想オブジェクト）のどの部分がＶＲ環境と対話するように構成されているかをユーザに示すために、システム１００によって行なわれ得る。たとえば、ユーザがターゲットに向かってＶＲ環境に到達しようとする際、システム１００は、身体部位のどの部分（たとえば、指、手全体、手のひら、肘、足など）がターゲットと衝突しそうかを判断してもよく、判断された部分に対して視覚効果、音声効果、または触覚効果を動的に提供することができる。これは、ユーザが自分の身体のどの部分がＶＲ環境において選択を行なうか（またはアクションを行なうか）を理解することを保証できる。加えて、システム１００は、身体部位の一部分を動的に修正して、当該一部分が細かい小さいターゲットと対話できる（たとえば、当該ターゲットに到達できる）ことを保証できる。たとえば、システム１００は、仮想ユーザのレンダリングされた人差し指を広げたり狭くしたりして、ユーザの手の他の部分が小さいターゲットと衝突するより先に人差し指が当該ターゲットと衝突することを保証し得る。別の例では、システム１００は、ＶＲ環境において大きいオブジェクトを動かすために使用され得る広い手のスワイプを模倣するために、仮想ユーザのレンダリングされた手を広げることができる。特に、ＶＲ環境における画面上でアプリケーションを切り替えるために、大きいターゲットがトリガされてもよい。大きいターゲットについてのトリガは、５本の指、および、アプリケーションを横断するスワイプであってもよい。指が１本欠けているかまたは１本の指が他の指と並んでいないために、ユーザが４本の指を使用する場合、システム１００は、欠けているか整列されていない指を検出することができ、アプリケーションを切り替えるようターゲットをトリガするために手のスワイプを広げることができる。
【００２４】
一般に、システム１００は、（ユーザがＶＲ環境においてレンダリングされる際）、仮想オブジェクトとユーザとの特定の衝突についてのコンテキストを判断するために、ＶＲ環境におけるユーザとの対話を分析することができる。検出は、ユーザの所望の意図に向けられる応答をユーザに提供するために使用され得る。たとえば、ユーザが仮想オブジェクトを手でつかもうとする（たとえば、手を伸ばす）場合、手は、多くの異なるやり方で反応し得るユーザインターフェイス表面に近づき始める。システム１００は、どの（ＶＲ環境ベースの）反応がユーザの意図に整合するかを判断することができ、その意図に従って反応することができる。
【００２５】
たとえば、システム１００は、ユーザの拡大された手（または他のユーザベースの対話）に反応するように構成可能であり、反応は、拡大された手の方向、手によって到達されつつある仮想オブジェクト、仮想オブジェクトのサイズ、またはＶＲ環境に関連する他の要因に少なくとも部分的に基づき得る。この例では、ユーザ（またはユーザの手）がユーザインターフェイス表面に近づく際、ここのシステムおよび方法は、仮想オブジェクトにとって、精密なオブジェクト選択が適切であるか、またはあまり精密でないオブジェクト選択が適切であるかを判断してもよい。特に、仮想オブジェクトが典型的には、フローティングキーボード、またはメニューにおける項目のリストといった、精密な触覚対話および制御に関連付けられている場合、システム１００は、ユーザの手の少なくとも一部分を動的に修正して、手が意図された仮想オブジェクト衝突を適切に起動できることを保証することができる。たとえば、ユーザはＶＲ環境においてキーボード上でタイプしていてもよく、ユーザがキーボード上でタイプする際、システム１００は視覚フィードバック、音声フィードバック、または触覚フィードバックをユーザに提供することができる。非限定的な一例では、ユーザがタイプする際、キーボードに接触する各指は、接触前および接触中に点灯するようにされ得る。同様に、システム１００は、ユーザがキーボード上のキーを選択するたびに、クリックまたは振動をユーザの指に提供することができる。
【００２６】
いくつかの実現化例では、システム１００は、ユーザが手全体をターゲットへ伸ばす途中で、ユーザが衝突するつもりでなかった１つ以上のターゲットに指が衝突する／当該ターゲットをトリガするというシナリオを回避するために、衝突前または衝突中にフィードバックをユーザに提供するように構成されてもよい。このシナリオは、ユーザがＶＲ対話における距離を正確に判断することが難しいということが一因であり得る。加えて、センサが故障した場合、または環境設定（たとえば、照明、空間の歪みなど）によって悪影響を受けた場合、手の追跡システムの誤動作（精度の損失）が起こり得る。システム１００は、レンダリングされたオブジェクト（たとえばユーザ）ならびに仮想オブジェクトおよび関連付けられた仮想コンテンツを動的に修正し、フィードバックをユーザに提供して、苛立たしいユーザ体験、存在感の損失、知覚される製品優秀性の減少を提供することを回避するとともに、起こり得るデータ損失、または他の測定可能な、ユーザにとってマイナスの結果を回避することができる。
【００２７】
例示的なシステム１００は、ネットワーク１０１を通してデータを交換できる複数のコンピューティングデバイスを含む。これらのデバイスは、クライアントまたはサーバを表わしていてもよく、ネットワーク１０１または他のネットワークを介して通信可能である。クライアントデバイスは、ＶＲコンテンツにアクセスするために使用され得る、ゲーミングデバイスまたは制御機構、モバイルデバイス、電子タブレット、ラップトップ、カメラ、ＶＲ眼鏡、または他のそのような電子デバイスを含んでいてもよい。
【００２８】
図１に示すように、システム１００は、モバイルデバイス１０２と、ラップトップコンピューティングデバイス１０４と、頭部装着型ディスプレイ（ＨＭＤ）デバイス１０６と、ＶＲコンテンツシステム１０８とを含む。デバイス１０２、１０４、および１０６は、クライアントデバイスを表わしていてもよい。モバイルデバイス１０２、コンピューティングデバイス１０４、およびＨＭＤデバイス１０６は、１つ以上のプロセッサと１つ以上のメモリデバイスとを含み得る。デバイス１０２〜１０６は、ＶＲコンテンツにアクセスし、ＶＲコンテンツを制御し、および／または各それぞれのデバイスに、もしくは接続されたデバイスに含まれる表示装置上でＶＲコンテンツを表示することができる、クライアントオペレーティングシステムおよび１つ以上のクライアントアプリケーションを実行可能である。
【００２９】
ＶＲコンテンツシステム１０８は、サーバデバイスを表わしていてもよい。一般に、ＶＲコンテンツシステム１０８は、仮想現実シーンを生成、修正、または実行可能なコンテンツおよび／または仮想現実ソフトウェアモジュールを格納する任意の数のリポジトリを含んでいてもよい。図示された例では、ＶＲコンテンツシステム１０８は、システム１０８のためのコンテンツおよび／または制御機構にアクセス可能なＶＲアプリケーション１１０を含む。いくつかの実現化例では、ＶＲアプリケーション１１０は、デバイス１０２〜１０６のうちの１つ以上でローカルに実行され得る。ＶＲアプリケーション１１０は、デバイス１０２、１０４、１０６、および１０８のうちのいずれかまたはすべてで実行されるように構成され得る。
【００３０】
ＨＭＤデバイス１０６は、仮想現実コンテンツを表示可能な仮想現実ヘッドセット、眼鏡、アイピース、または他のウェアラブルデバイスを表わしていてもよい。動作時、ＨＭＤデバイス１０６は、受信および／または処理された画像をユーザへ再生可能なＶＲアプリケーションを実行することができる。いくつかの実現化例では、ＶＲアプリケーション１１０は、図１に示すデバイス１０２、１０４、１０６、または１０８のうちの１つ以上によってホストされ得る。
【００３１】
いくつかの実現化例では、モバイルデバイス１０２は、ＨＭＤデバイス１０６内に配置され、および／または位置し得る。モバイルデバイス１０２は、ＨＭＤデバイス１０６用の画面として使用され得る表示装置を含み得る。モバイルデバイス１０２は、ＶＲアプリケーション１１０を実行するためのハードウェアおよび／またはソフトウェアを含み得る。
【００３２】
追加のデバイスが可能であり、そのようなデバイスは互いに置換されるように構成されてもよい。いくつかの実現化例では、デバイス１０２、１０４、１０６、および１０８は、ネットワーク１０１を使用して他のコンピューティングデバイスまたはコンピュータシステムと通信可能な、ラップトップまたはデスクトップコンピュータ、スマートフォン、携帯情報端末、ポータブルメディアプレイヤー、タブレットコンピュータ、ゲーミングデバイス、または他の適切なコンピューティングデバイスであり得る。
【００３３】
例示的なシステム１００では、ＨＭＤデバイス１０６は、たとえばＶＲコンテンツシステム１０８上のＶＲコンテンツにアクセスするために、デバイス１０２またはデバイス１０４に接続可能である。デバイス１０２または１０４はＨＭＤデバイス１０６に（有線または無線）接続可能であり、ＨＭＤデバイス１０６は表示のためにＶＲコンテンツを提供可能である。
【００３４】
ＨＭＤデバイスがデバイス１０２またはデバイス１０４に無線接続される場合、接続は、ここに説明される高速無線通信プロトコルのうちの１つ以上の使用を含んでいてもよい。ＨＭＤデバイス１０６がデバイス１０２または１０４に有線接続される場合、有線接続は、デバイス１０２またはデバイス１０４に差し込むための適切なコネクタをいずれかの端に有するケーブルを含み得る。たとえば、ケーブルは、ユニバーサルシリアルバス（Universal Serial Bus：ＵＳＢ）コネクタを両端に含み得る。ＵＳＢコネクタは同じＵＳＢタイプのコネクタであってもよく、または、ＵＳＢコネクタは各々異なるタイプのＵＳＢコネクタであってもよい。さまざまなタイプのＵＳＢコネクタは、ＵＳＢ  Ａタイプコネクタ、ＵＳＢ  Ｂタイプコネクタ、マイクロＵＳＢ  Ａコネクタ、マイクロＵＳＢ  Ｂコネクタ、マイクロＵＳＢ  ＡＢコネクタ、ＵＳＢ  ５ピン  ミニｂコネクタ、ＵＳＢ  ４ピン  ミニｂコネクタ、ＵＳＢ  ３．０  Ａタイプコネクタ、ＵＳＢ  ３．０  Ｂタイプコネクタ、ＵＳＢ  ３．０  マイクロＢコネクタ、およびＵＳＢ  Ｃタイプコネクタを含み得るものの、それらに限定されない。同様に、有線接続は、ＨＭＤデバイス１０６およびデバイス１０２またはデバイス１０４に差し込むための適切なコネクタをいずれかの端に有するケーブルを含み得る。たとえば、ケーブルは、ユニバーサルシリアルバス（ＵＳＢ）コネクタを両端に含み得る。ＵＳＢコネクタは同じＵＳＢタイプのコネクタであってもよく、または、ＵＳＢコネクタは各々異なるタイプのＵＳＢコネクタであってもよい。
【００３５】
いくつかの実現化例では、１つ以上のコンテンツサーバ（たとえばＶＲコンテンツシステム１０８）および１つ以上のコンピュータ読取可能記憶装置は、ＶＲコンテンツをデバイス１０２〜１０６に提供するために、ネットワーク１０１を使用してコンピューティングデバイス１０２、１０４、１０６と通信可能である。いくつかの実現化例では、ネットワーク１０１は、公的通信ネットワーク（たとえば、インターネット、セルラーデータネットワーク、電話回線網を通したダイアルアップモデム）、または私的通信ネットワーク（たとえば、プライベートＬＡＮ、専用回線）であり得る。いくつかの実現化例では、コンピューティングデバイス１０２〜１０８は、１つ以上の高速有線および／または無線通信プロトコル（たとえば、８０２．１１バリエーション、ＷｉＦｉ、ブルートゥース（登録商標）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、イーサネット（登録商標）、ＩＥＥＥ８０２．３など）を使用して、ネットワーク１０１と通信可能である。
【００３６】
いくつかの実現化例では、モバイルデバイス１０２は、ＶＲアプリケーション１１０を実行し、ＶＲ環境のためのコンテンツを提供することができる。いくつかの実現化例では、ラップトップコンピューティングデバイスは、ＶＲアプリケーション１１０を実行し、１つ以上のコンテンツサーバ（たとえばＶＲコンテンツシステム１０８）からコンテンツを提供することができる。１つ以上のコンテンツサーバおよび１つ以上のコンピュータ読取可能記憶装置は、ＨＭＤデバイス１０６での表示のためにコンテンツを提供するために、ネットワーク１０１を使用して、モバイルデバイス１０２および／またはラップトップコンピューティングデバイス１０４と通信可能である。
【００３７】
図１に示すように、ＶＲアプリケーション１１０は、衝突モードモジュール１１２と、運動追跡モジュール１１４と、衝突検出モジュール１１６とを含む。衝突モードモジュール１１２は、ＶＲ環境内の特定のターゲット（たとえば、選択可能な制御機構）についての衝突モードを選択するソフトウェアモジュールを表わすことができる。衝突モードモジュール１１２は、アクセスされているコンテンツおよび提示されている環境に少なくとも部分的に基づいて、ＶＲ環境においてどの衝突モードがユーザにとって適切かを判断することができる。いくつかの実現化例では、衝突モードは、入力タイプ（たとえば、キーボード、手、ゲーミング制御機構、スタイラス、モバイルデバイス、身体部位、または他のレンダリング可能オブジェクト）に基づいて、衝突モードモジュール１１２によって選択され得る。いくつかの実現化例では、衝突モードは、（たとえば、衝突検出モジュール１１６を用いて）ユーザ入力を検出すると、動的に選択され得る。
【００３８】
いくつかの実現化例では、大量の可能な衝突モードが存在していてもよく、それらは各々、対話型オブジェクトへのユーザの近接に基づいて、または、ユーザがレンダリングされるＶＲ環境のタイプに基づいて変わり得る。衝突モードは、細かくても粗くてもよい。例示的な衝突モードは、手全体モード、腕全体モード、１本以上の指モード、全身モード、およびキーボードモードを含み得るものの、それらに限定されない。それらのうちのいずれかまたはすべてはまた、より狭い、またはより広い衝突ゾーンを提供するサブモードを含み得る。たとえば、人差し指モードは、仮想オブジェクトを正確に選択するために、仮想ユーザの指の形状を若干修正するように構成されてもよい。いくつかの実現化例では、形状変更はユーザには見えないかもしれないが、オブジェクトと衝突するように構成される仮想ユーザの指の部分は、オブジェクトと衝突可能なより小さいアクティブエリアを指の上に有していてもよい。より小さいアクティブエリアは、ユーザが遭遇する仮想オブジェクトを容易に選択するように指が適合されている細かい衝突モードをトリガしてもよい。衝突モードは、とりわけ、繊細さおよびスケールの意味での詳細のレベル、ならびに、仮想ユーザが仮想オブジェクトと対話できる粒度を判断するモードとして理解されてもよい。
【００３９】
非限定的な一例では、衝突モードは、小さいエリアの選択（たとえば、キー、メニュー項目、または詳細な仮想オブジェクト操作）のために適合されてもよく、または、大きいエリアの選択（たとえば、オブジェクトを持ち上げること、ブロックまたは他の仮想コンテンツを動かすこと、仮想空間において製図することなど）のために適合されてもよい。衝突モードモジュール１１２は、小さいまたは大きいターゲット、もしくは小さいまたは大きい仮想オブジェクトと対話するというコンテキストに基づいて、適切なやり方で仮想オブジェクトに関与するように、仮想ユーザの部分（たとえば人差し指）を構成することができる。いくつかの実現化例では、ある特定の衝突モードが、特定のコンテンツのために修正され得る。たとえば、ユーザがＶＲ環境において対話型のヨガコンテンツにアクセスする場合、ユーザは、ＶＲ環境内で特定の選択および運動を行なうために、膝、足、肩を使うかまたは息を吸うよう促されてもよい。
【００４０】
別の非限定的な一例では、仮想オブジェクトまたはメニュー上の１つ以上の仮想ボタン上またはその近傍の位置でユーザの手が検出された場合（たとえば、当該ボタンの近くでホバーしていることが検出された場合）、細かい衝突モードがトリガされてもよい。細かい衝突モードは、ユーザが１本以上の指を使って衝突または（たとえば仮想オブジェクト選択）を行なうべきであることをユーザに示すことができる。たとえば、衝突モードモジュール１１２は、細かい衝突モードがトリガされること、および、ユーザは選択を行なう（たとえば、仮想ボタンをクリックする）ために人差し指を使用すべきであることを示すように、仮想ユーザの人差し指を修正してもよい。いくつかの実現化例では、人差し指でボタンクリックをトリガすることに加えて、衝突モードモジュール１１２は、ユーザが自分の手のひらの中心でスクロール可能領域を動かすことを可能にし得る。たとえば、衝突モードモジュール１１２は、仮想環境はスクロール可能コンテンツを提供していると判断することができ、それに応答して手のひらベースの衝突モードを選択することができる。手のひらベースの衝突モードを選択することは、コンテンツを、ユーザの手によって始動された手のひらジェスチャーの受信に応答してスクロールされるように構成することを含んでいてもよい。加えて、手のひらベースの衝突モードを選択することは、手のひら以外の手の部分を、無効になるように修正することを含んでいてもよい。これは、ユーザが手のひらを使ってスクロールおよび／または選択することを可能にし得るが、指がうっかり衝突ゾーンと対話した場合、この例では手のひらベースのモードがスクロールを行なうための唯一のアクティブな衝突モードであるため、モジュール１１２は指の選択をブロックする（たとえばミュートする）ことができる。
【００４１】
同様に、ユーザが仮想スライダバーに近づいていることを衝突検出モジュール１１６が検出した場合、衝突モードモジュールは粗い衝突モードに切り替えることができ、手のひらを使ってスライダバーを動かすよう、ユーザに示すことができる。衝突モードについてのそのような表示は、選択された衝突モードでうまく機能しそうな仮想身体の一部分をマークすることを含み得る。たとえば、仮想身体部分は、ＶＲ環境において動作する機構を点灯させ、振動させ、動かし、大きくし、小さくし、または他の態様でユーザに示すことができる。
【００４２】
別の非限定的な一例では、衝突検出モジュール１１６は、射撃可能ターゲットがＶＲ環境内に配置された射撃訓練ゲームにユーザが関与していることを検出してもよい。ユーザ（たとえば、物理ユーザの手によって制御されるレンダリングされたユーザ）の手が射撃可能ターゲットに近づくと、衝突モードモジュール１１２は、対話型の衝突モードが始まり得ることを示すことができる。たとえば、モジュール１１２がターゲットへのしきい値距離内の近接を検出した場合、最も近い手の手のひらが、ある特定の衝突モードを指図してもよい。このモードは射撃モードであってもよく、表示は、ユーザに手のひらを閉じさせ、再び開かせるための点灯応答、もしくは他の視覚応答、音声応答、または触覚応答であってもよい。手のひらを閉じて再び開くと、（弾丸などの）仮想オブジェクトをターゲットに放つことができる。ジェスチャーを行なう表示は、ユーザの手のひらが仮想弾丸を用いてターゲットに到達することを可能にするある特定の衝突モードをトリガすることができる。衝突モードは、手からターゲットまでの弾丸の空間横断運動を可能にするジェスチャーを可能にすることによって、運動を可能にする。
【００４３】
一般に、システム１００は、ユーザがターゲットによって妨害されることなくコンテンツを見ることができるように、小さいターゲット（たとえば制御機構）を表示するように構成され得る。衝突モードモジュール１１２は、ユーザがいつターゲットのしきい値距離内にいるかを検出するように構成可能であり、ユーザがターゲットに近づく際に、ユーザの入力機構に適応するようにターゲットを変更することができる。たとえば、衝突モードモジュール１１２は、ユーザの腕を、仮想オブジェクトを指すことができる槍またはスタイラスに動的に変更でき、ユーザの指よりも小さく見えるターゲットを選択できる。これは、ユーザが複数のターゲットまたは望まないターゲットを選択する可能性を減少させることができる。
【００４４】
いくつかの実現化例では、システム１００は、エリア内の密に位置付けられた組の対話型ユーザインターフェイス制御機構、仮想オブジェクト、および／またはターゲットを可能にでき、手の対話の精度をユーザに提供できる。これは、ＶＲ環境においてより細かいターゲットおよび／または制御機構を選択する目的のために、ユーザのレンダリングされた身体部位（たとえば手）を動的に変更する能力が、ユーザが行なったより大きい運動がより細かい運動に変更されるための能力を提供できるためである。システム１００は環境においてコンテンツのサイズを変更することなくコンテンツをユーザに提供することができるが、いかなる選択もユーザが挙動（またはビュー）を変更する必要なく自動的により精密な選択となるように、コンテンツに関連付けられたターゲットを動的に修正することができる。一例では、システム１００は、ユーザの指のレンダリングを動的に変更して、ユーザがＶＲ環境で提供されるある特定のメニューにおいて小さいフォントを精密に選択できることを保証することができる。この例では、指への変更を、ユーザに視覚的に見せても見せなくてもよい。しかしながら、システム１００は環境に関連付けられた衝突モードに対して修正を行なったため、ＶＲ環境におけるコンテンツと対話する際、ユーザは、コンテンツを選択するためのより細かい能力に気づくかもしれない。
【００４５】
たとえば、システム１００は、ユーザアクションまたは運動に対応して１つ以上のしきい値条件が満たされることに応答して、衝突モードに対して特定の修正を行なうことができる。一例では、システム１００は、ＶＲ環境におけるユーザの手とオブジェクトとの間の距離が（システム１００によって予め定められた）しきい値距離内にあるという判断に基づいて、衝突モードの修正を行なうことができる。手とオブジェクトとが近い場合、システム１００は衝突モードを細かい制御衝突モードに切り替えることができる。同様に、手とオブジェクトとが遠く離れている場合、システム１００は粗い制御衝突モードに切り替えることができる。
【００４６】
別の例では、システム１００は、ＶＲ環境におけるある特定の数のオブジェクトが互いに近接する範囲内にあるかどうかを判断することができる。たとえば、システム１００は、ＶＲ環境におけるオブジェクトがいつ密な間隔で配置されているかを判断することができ、それに応答して衝突モードを細かい衝突モードに切り替えることができる。同様に、オブジェクトがまばらな間隔で配置されている場合、システム１００は、粗い衝突モード（または、システムの判断に少なくとも部分的に基づいた、細かい制御衝突モードと粗い制御衝突モードとの間の別のモード）に切り替えることができる。
【００４７】
別の例では、システム１００は、ユーザがＶＲオブジェクトに近づいている際、ユーザが遅くなっている（たとえば減速している）かどうかを判断することができる。ユーザが減速していると判断された場合、システム１００は、細かい制御衝突モードに切り替えることができる。同様に、ユーザがＶＲオブジェクトのそばを加速していると判断された場合、システムは、粗い制御衝突モードに切り替えてもよく、もしくは、ユーザが特定のＶＲオブジェクトまたはエリアへと減速し始めるまで衝突モードを完全に取り除いてもよい。
【００４８】
非限定的な一例では、ユーザがＶＲ環境にいて、自分の手を使って仮想的にレンダリングされた電話と対話したい場合、ユーザは仮想電話の方へ手を伸ばしてボタンを押し始めることができる。ユーザの手（たとえば指、手のひらなど）は（システム１００によって）追跡されているため、電話はユーザ入力を受信し、それに応じて反応することができる。しかしながら、ユーザが対話する前に、衝突モードモジュール１１２は、仮想電話との対話はピンポイント選択能力を有する細かい運動技能を伴い得ると判断してもよい。そのため、衝突モードモジュール１１２は、電話のボタンは典型的には小さいため、小さいターゲットがユーザに提供されるべきであると判断できるが、モジュール１１２はまた、ある特定の衝突モードが選択されることも保証できる。この場合、電話上の選択可能ターゲットは小さいターゲットとして提供されているため、衝突モードモジュール１１２は、ユーザの追跡された手がより小さく示される衝突モードを選択してもよい。別の例では、衝突モードモジュール１１２は、ユーザの追跡された手が、どの身体部位が対話するかを示す手の一部分を除き、消えるかかすんで示される衝突モードを選択してもよい。すなわち、モジュール１１２は、指または指先が選択機構になるであろうということを強調表示し、または他の態様でユーザに示すことができる。この例では、ユーザが選択機構として示されていない手の一部分をターゲットにぶつけた場合、システム１００は、ユーザのうっかりした動きに反応しないように構成され得る。
【００４９】
運動追跡モジュール１１４は、ターゲットの近くで動くユーザの速度および精度を検出して追跡することができるソフトウェアモジュールを表わすことができる。たとえば、運動追跡モジュール１１４は、ユーザがＶＲ環境に入力を提供することを可能にする、電子機器を有して構成されたウェアラブル製品（たとえば、頭部装着型デバイス、手袋、ボディースーツ、視覚カメラなど）、センサ、および他のデバイスといった、ユーザ運動を感知するように構成された物理デバイスと連動することができる。そのようなデバイスと連動することにより、運動追跡モジュール１１４は、複数のターゲットがトリガされる場合に、どのターゲットがトリガされ得るか、およびどの順序でターゲットがトリガされるべきかを判断できるようになる。いくつかの実現化例では、運動追跡モジュール１１４は、ユーザがターゲットのしきい値距離内にいる場合といった適切なタイミング間隔でそのようなターゲットを提供するために、ユーザ運動を追跡することができる。このように、運動追跡モジュール１１４は、衝突検出モジュール１１６と連携して、ユーザの希望する時間にユーザベースのコンテキストに従って多くのターゲットをユーザに提供することができる。
【００５０】
衝突検出モジュール１１６は、幾何学的分析および空間分析を行なってＶＲ環境における衝突または衝突危険を検出し、ＶＲアプリケーション１１０における１つ以上の他のモジュールにフィードバックを提供することができるソフトウェアモジュールを表わすことができる。一般に、衝突は意図的であるかまたは非意図的であると判断され得る。非意図的な衝突は、ユーザ運動に応答して運動追跡モジュール１１４および衝突検出モジュール１１６によって予測可能であり、そのような予測は、ある特定の衝突モードを変更するための根拠として、衝突モードモジュール１１２に提供され得る。たとえば、ユーザの手のひら全体が書棚の方に近づいてくることを運動追跡モジュール１１４で検出することに応答して、衝突検出モジュール１１６は、ユーザが書棚にある多くの本のうちの１つに手を伸ばしていることを確めることができ、ユーザの手のひらが選択機構として使用される場合、多くの衝突が非意図的に起こり得ると判断することができる。衝突検出モジュール１１６は、指がよりよい選択機構になるであろうと予測でき、この情報を衝突モードモジュール１１２に提供できる。衝突モードモジュール１１２はこの情報を使用して、ＶＲ対話に適するであろう衝突モードを選択できる。このように、衝突検出モジュール１１６は、ある特定のＶＲ対話に最も適するであろうコンテキストおよび結果として生じる選択機構を判断することができる。コンテキストは、ある特定のサイズのターゲットを提供するために、ある特定のタイプの入力機構を提供するために、および、ユーザ入力が非意図的に解釈されないこと、または間違って行なわれないことを保証するために、使用され得る。
【００５１】
動作時、ＶＲアプリケーション１１０は、運動追跡モジュール１１４および衝突検出モジュール１１６を用いて、ユーザがターゲットエリア（のしきい値距離内）へと、またはその近くで手を動かしていることを検出できる。これに応答して、アプリケーション１１０は、ユーザが何を行なっているかについてのコンテキストを判断することができ、衝突モードモジュール１１２を使用してある特定のターゲット／衝突モードをトリガするためにそのコンテキストを使用することができる。たとえば、ＶＲアプリケーション１１０は一般に、（衝突モードモジュール１１２を使用して）、ＶＲ環境における特定のユーザとの対話がある特定のトリガのモード／モデルにより適するかどうかを判断することができ、判断に基づいて特定のモードを動的に選択して提示することができる。そのようなターゲットモードの動的な選択および提示は、たとえばユーザがターゲットを起動する前に行なわれ得る。非限定的な一例では、第１のしきい値条件が満たされた（たとえば、ターゲットエリアからの第１の距離が検出された）という判断に応答して、第１のモードが選択され得る。代わりに、ターゲットエリアからのより大きい第２の距離が検出された場合、ユーザからターゲットエリアまでのより大きい距離の第２のしきい値条件に基づいて、第２のモードが選択され得る。
【００５２】
いくつかの実現化例では、システム１００は、仮想現実環境において仮想現実体験を生成する電子コンピューティングデバイス（たとえばデバイス１０６）を含んでいてもよい。電子コンピューティングデバイスは、物理的空間内でポータブルであってもよい。いくつかの実現化例では、電子コンピューティングデバイスは、任意の数の他のコンピューティングデバイス（たとえば、デバイス１０２、１０４、１０８、または図１に示されない他のデバイス）に通信可能に結合されてもよい。
【００５３】
電子コンピューティングデバイスは、電子コンピューティングデバイスと通信している複数のセンサを含むかまたは当該センサへのアクセスを有し得る。センサは、物理的空間内の電子コンピューティングデバイスにアクセスしているユーザに関連付けられた動きを検出するように構成されてもよい。電子コンピューティングデバイスは、仮想現実環境における仮想オブジェクトの近傍の運動を検出するように構成された１つ以上のプロセッサを含み得る。運動は物理ユーザによって行なわれてもよく、運動は仮想環境において表わされ、物理ユーザの身体部位に関連付けられてもよい。たとえば、運動は、スクロール可能メニューの近くで手を振ることであってもよく、手を振ることは、仮想ユーザが動きを行なったかのようにシミュレートされ得る。仮想環境において、ユーザの手、腕、または全身が表わされ得る。
【００５４】
仮想オブジェクトが身体部位よりも小さい仮想オブジェクト上のエリアにおいて入力を受信するように構成されているという判断に応答して、システム１００は、身体部位を用いた選択能力を修正するための衝突モードを選択できる。たとえば、システム１００は、手のひらがメニューをスクロールするスクロール運動を行なうことができ、手のひら（または他の構成された身体部位）が選択を行なうことができる、粗い衝突モードを選択するよう判断できる。一例では、粗い衝突モードは、スクロールするために選択される。ユーザがスクロールしていないことを検出すると、および／またはスクロールが止まると、システム１００は、ユーザが指を使用してメニューにおける項目を選択できるようにするために、細かい衝突モードに切り替えることができる。システム１００は、仮想環境における身体部位の表現上に、修正された選択能力を表示することができる。修正された選択能力は、仮想オブジェクトと対話する機構を物理ユーザに示す表示を点灯させ、振動させ、動かし、大きくし、または小さくするように、身体部位を構成することを含んでいてもよい。システム１００は、異なる仮想オブジェクト、または当該仮想オブジェクトとの異なる対話に関連付けられた運動を検出するまで、選択された衝突モードを維持することができる。たとえば、システムが手を別の衝突ゾーンへと動かした場合、システム１００は、新たな衝突ゾーンに関連付けられるように衝突モードを変更することができる。新たな衝突ゾーンは異なる衝突モードに対応可能であり、新たなゾーンにあることが検出されると、システム１００は異なる衝突モードのうちの１つ以上に変更可能である。
【００５５】
一例では、仮想オブジェクトがキーボードであり、身体部位が手である場合、衝突モードは手の指先エリアを小さくするように選択されてもよく、身体部位の表現は各指の上の表示器を含んでいてもよい。いくつかの実現化例では、衝突モードは、手全体モード、腕全体モード、指モード、全身モード、および／またはキーボードモードのうちのいずれかから選択可能である。各モードは、モードごとに細かい構成と粗い構成との双方を含んでいてもよい。
【００５６】
図２は、コンピューティングデバイス１０４と対話するユーザ２０２を示す図である。たとえば、コンピューティングデバイス１０４はキーボード２０４を含み得る。ユーザ２０２はまた、モバイルデバイス１０２を使用していてもよい。他のデバイスがユーザ２０２によって使用可能であり、そのようなデバイスは、ＨＭＤデバイス１０６、モバイルデバイス１０２、および／またはキーボード２０４に接続可能である。ユーザ２０２は、キーボード２０４および／またはモバイルデバイス１０２と対話しながら、ＨＭＤデバイス１０６の画面上で、コンピュータシステム１０４に関連付けられた表示されたコンテンツを見ることができる。ＨＭＤデバイス１０６は、ここに説明される有線および／または無線通信インターフェイスのうちの１つ以上を使用して、コンピューティングデバイス１０４に接続（たとえば連動）され得る。
【００５７】
ユーザ２０２は、ＶＲ環境において行なわれるアクションを制御する際、コンピューティングデバイス１０４およびキーボード２０４と対話することができる。たとえば、キーボード２０４は、ＶＲ環境において、ユーザ２０２に表示され得るＶＲ制御機構としてレンダリングされ得る。ユーザ２０２は、制御機構に関連付けられたターゲットをトリガするために制御機構を動かし、回転させ、および／または制御機構に手を振ることにより、ＶＲ環境においてコンピューティングデバイス１０４と対話してもよい。図２に示すユーザは、ＨＭＤデバイス１０６にアクセスしながら、自分の手２０６および２０８を用いてキーボード上でタイプしている。ＨＭＤデバイス１０６は、以下の図３Ａ〜３Ｃにおける多くのレンダリングされたオブジェクトをユーザ２０２に示している、ユーザの手２０６および２０８は、レンダリングされた手３０４および３０６ａ／ｂ）としてそれぞれ示される。
【００５８】
図３Ａ〜３Ｃは、ＨＭＤデバイス１０６の画面上でユーザ（たとえば、図２からのユーザ２０２）が見ることができる画像を示す図である。たとえば、画像３００Ａはユーザ２０２をＶＲ環境に投影する。画像３００Ａは、表示装置上に表示されたマップ情報のレンダリング３０２と、キーボード２０４のレンダリング３１０と対話するユーザ２０２の手および指のレンダリング３０４、３０６ａ、および３０６ｂとを含む。この例では、手３０６ａは、ユーザの右手（手２０６に対応）の第１の配置の仮想レンダリングであり、手３０６ｂは、ユーザの右手（手２０８に対応）の第２の配置の仮想レンダリングである。加えて、ユーザ２０２がコンピューティングデバイス１０４と対話する際に交互に表示され得る（たとえば、レンダリングされ得る）他のウィンドウ（たとえば、レンダリングされた制御ウィンドウ３１２）が、情報のレンダリング３０２とともに、ＶＲ環境においてユーザ２０２に提示される。
【００５９】
制御ウィンドウ３１２は、３つの選択可能なエリア、すなわち、映画エリア３１４、製図エリア３１６、およびモバイルデバイスエリア３１８を図示する。映画エリア３１４は、ユーザ２０２が環境において以前にアクセスした映画に対応する。すなわち、ユーザは、映画を見ていたかもしれず、マップ情報３０２にアクセスすることに切り替えるよう選択したかもしれない。同様に、ユーザ２０２は、製図エリア３１６を選択することによってＣＡＤ図面にアクセスしていたかもしれず、または、モバイルデバイスエリア３１８を使用してモバイルデバイス対話にアクセスしていたかもしれない。
【００６０】
図３Ａに示すように、ユーザ２０２のレンダリングされた手３０４および３０６ａは、レンダリングされたキーボード３１０を使用して、レンダリングされた画面（図示せず）に情報をタイプしていてもよい。ある時点で、ユーザ２０２は、（レンダリングされた）手を使用して、レンダリングされたマップ情報３０２と対話することができる。たとえば、（レンダリングされた手３０６ａによって表わされる）ユーザ２０２は、手を伸ばしてマップ上のコンテンツを選択することができる。ここで、ユーザ２０２は、チリという国を選択して追加情報および／またはコンテンツをトリガしたいかもしれない。ユーザ２０２は、自分のレンダリングされた手３０６ａを（矢印３２４によって示されるように）マップの方へ伸ばして、（マップ上に点線のレンダリングされた手３０６ｂによって示されるように）マップ情報３０２に到達することができる。これに応答して、ＶＲアプリケーション１１０は、ユーザ２０２がマップ上の南アメリカの方へ手を伸ばしていると判断することができ、１つ以上の衝突モードおよび／またはターゲット表示をトリガすることができる。たとえば、ＶＲアプリケーション１１０は、ユーザ２０２が一方または双方の（レンダリングされた）手を入力機構として使用していると判断することができ、そのため、アプリケーション１１０は、ユーザの指を選択器として可能にする衝突モードをトリガすることができ、ユーザが衝突ゾーン３１９内にいる場合に、指がマップ選択を行なうことができることをユーザに示すために、ターゲット３２０で視覚的表示を提供する（たとえば、ターゲット３２０で点灯する／ちらちら光る）ことができる。いくつかの実現化例では、より小さい衝突ゾーン３１９がトリガされる前に、より大きい衝突ゾーン３２１がトリガされてもよい。いくつかの実現化例では、ユーザが仮想コンテンツを対話するために手のひら選択モードを使用している場合に、より大きい衝突ゾーン３２１がトリガされてもよい。他の実現化例では、ユーザが仮想コンテンツを対話するために指先を使用している場合に、より小さい衝突ゾーン３１９がトリガされてもよい。
【００６１】
レンダリングされた手３０６ｂは、目には見えるものの、かすんでいてもよく、手３０６ｂの上のユーザの人差し指の先端は、マップ情報３０２との衝突器として機能できる。衝突モードを提供することは、ユーザがマップ上の意図されない複数の位置を誤って選択しないことを保証できる。選択された衝突モードは、ユーザが意図されたターゲットに触ることができるように、特定のターゲットがユーザのレンダリングされた指と同じくらい大きいことを規定できるものの、意図されないターゲットが選択されないことを保証できる。
【００６２】
別の例では、マップ情報３０２は、ＶＲ環境において提供される平凡な追跡ゲームの一部として表示されてもよい。そのゲームは、各質問に応答して大陸を選択するための命令を含んでいてもよい。マップ情報３０２において大陸全体を選択することは手のひらサイズのスワイプまたは選択を伴い得るため、ＶＲアプリケーション１１０は、（衝突モードモジュール１１２を使用して）大きいターゲットおよび粗い衝突が十分であろうと判断でき、それに応じて、手全体の選択衝突モードが構成され、可能にされ得る。ＶＲアプリケーション１１０は、手を輪郭付けすること、手全体に輝きを提供すること、たとえばユーザ２０２の手の上の手袋を介して触覚フィードバックを手のひらに提供すること、または、仮想オブジェクトをどのように選択するかについてユーザに表示を提供する他の対話を提供することにより、レンダリングされた手全体が選択のために使用され得ることをユーザに示すことができる。
【００６３】
別の例では、ユーザ２０２は、マップ情報３０２をアクセスしていてもよく、（映画エリア３１４で示された）以前にアクセスされた映画に戻ることを決定してもよい。ユーザ２０２は、ＶＲ環境において映画を見続けることに切り替えるように、（たとえばレンダリングされた手３０６ａを用いて）再生制御機構３２２を選択することができる。制御ウィンドウ３１２における再生、早送り、および巻き戻し制御機構は小さいかもしれないため、ＶＲアプリケーション１１０は、そのエリアにおいて小さいターゲットが使用されるであろうと判断することができる。そのような態様で、単一のシーン／対話エリアにおいて２つの別個の衝突モードが構成され、提供され得る。
【００６４】
いくつかの実現化例では、ＶＲアプリケーション１１０は、ユーザが制御機構を正確に選択できることを保証するように、ユーザの手または指を動的に修正することができる。たとえば、ユーザ２０２が映画を見ていて自分のモバイルデバイスが鳴り始めた場合、ユーザ２０２は、一時停止のために手を伸ばし、小さいターゲットを勘案するためにユーザの指への細かいピッチの修正をトリガしてもよい。細かいピッチの修正は、モバイルデバイスを選択するために伸ばす指の到達範囲を狭くすることおよび／または広げることを含み得る。一例では、狭くすることおよび／または広げることをユーザに表示することができる。別の例では、狭くすることまたは広げることは、細かいピッチの修正の選択をトリガするためにモバイルデバイス上方でのホバーを可能にすることによって提供され得る。この選択は、たとえばユーザがレンダリングされたモバイルデバイスのしきい値距離内にいる場合に１つ以上のターゲット（またはスパーク）を示すことによって、ユーザの指の向上した精度および／または到達範囲を自動的に可能にすることができる。これは、ユーザがターゲットと実際に衝突する必要なく、到達範囲がターゲットの範囲内にあることをユーザが見ることを可能にするという利点を提供する。
【００６５】
いくつかの実現化例では、（３１８で示される）モバイルデバイス機能性を選択するために、ＶＲアプリケーションは、３１８での大きいターゲットの容易な選択を可能にするようにユーザの指を修正することができ、次に、モバイルデバイス上のボタンについてのより細かくより小さい選択を可能にするようにユーザの指を後で動的に修正することができる。これにより、ユーザは、映画エリア３１４とモバイルデバイスエリア３１８との間に配置された仮想コンテンツをうっかり選択することなく、電話を取ることができる。要するに、ＶＲアプリケーション１１０は、電話の着信を検出することができるとともに、アプリケーション切り替えるために、および／または電話を取るために、入力を受信するのに必要ないずれかのまたはすべてのユーザインターフェイスを動的に修正することができる。入力は、アクティブなＶＲ環境シーンを一時停止すること、退出すること、あるいは他の態様で修正すること、ならびに、別のＶＲ環境シーンまたは活動へ切り替えるために使用されるあらゆる入力を含み得る。修正は、ユーザが干渉されずに特定の仮想項目を選択できることを保証することができる。動的な修正は、たとえば制御ウィンドウ３１２において人差し指のみが選択を行なうように構成されてもよいことを保証することを含んでいてもよい。いくつかの実現化例では、ユーザインターフェイス、衝突モード、または仮想オブジェクトは、ＶＲ環境における要素、ユーザ入力機構、および／またはアクセスされているコンテンツなどに基づいて修正され得る。
【００６６】
いくつかの実現化例では、衝突モードは、仮想コンテンツの開発者によって、特定のコンテンツのために予め規定され得る。いくつかの実現化例では、衝突モードは、仮想オブジェクトからの距離に基づいて選択され、または構成可能であってもよい。いくつかの実現化例では、衝突モードは、感知された手のサイズまたは入力機構サイズに基づいて選択され、または構成可能であってもよい。いくつかの実現化例では、衝突モードは、特定のニーズに基づいてＶＲユーザによって選択され得る。たとえば、ユーザが、たとえば新たな制御機構の使用をマスターするまで、手全体モードでＶＲコンテンツと対話し始めることを望む場合、ユーザは、手全体モードを選択することができ、準備ができると、そのモードを指モードまたは他のモードに構成することができる。
【００６７】
いくつかの実現化例では、衝突モードは、ユーザが有する両手について異なるように構成され得る。たとえば、ＶＲ環境において両手がユーザの前にある場合、左手は、大きいターゲットおよび／または大きいタイル状オブジェクトを選択するかまたはそれらに手を振るように構成されてもよく、一方、右手は、精密な制御機構を選択するように構成されてもよく、手の視覚的により小さい部分または長くされた部分を含んでいてもよい。
【００６８】
いくつかの実現化例では、１つ以上の衝突モードが、ユーザに関連付けられた障害に対処するように構成され得る。たとえば、ユーザの人差し指の一部が欠けている場合、ＶＲアプリケーション１１０は、他の３本の指を小さくすることによって欠けている部分を勘案して、人差し指が選択を提供すること、および他の３本の指が人差し指より先に仮想オブジェクトに遭遇しないことを保証することができる。同様の修正を、他の身体部位について、欠けている部分に基づいて行なうことができる。
【００６９】
いくつかの実現化例では、ＶＲアプリケーション１１０は、ユーザ運動障害を勘案することができる。たとえば、ユーザが片腕の震えを患っている場合、ＶＲアプリケーション１１０は、ＶＲ環境がそのような運動を検出して解釈する限り、ユーザ運動を減衰させることによって補うことができる。
【００７０】
いくつかの実現化例では、１つのＶＲ環境において衝突モードの組合せを使用することができる。衝突モードの組合せは、ＶＲ環境内で小さい選択可能ターゲットと大きい選択可能ターゲットとの組合せを有することに基づき得る。衝突モードは、対話タイプごとに、もしくはそれに代えて、セッションごとに、ゲームごとに、コンテンツごとに、またはユーザごとに選択されてもよい。加えて、衝突モードは、ターゲットエリアに入る境界またはターゲットをトリガする境界についてユーザに警告するための特定の音を提供するように構成され得る。
【００７１】
図３Ｂは、ＨＭＤデバイス１０６の画面上でユーザ２０２が見ることができる画像３００Ｂを示す図である。この例では、ユーザ２０２は、制御ウィンドウ３１２の（映画エリア３１４を選択することによって）映画を見ていたかもしれない。ある時点で、ユーザは、ＣＡＤ製図活動に切り替えることを決定してもよく、製図エリア３１６（図３Ａ）を選択することによってそうしてもよい。エリア３１６の選択に応答して、ユーザ２０２は、レンダリングされたウィンドウ３２４によって示されるようにユーザが自分の雇用者のために水ポンプ図面の下書きを始めていた、自分のＶＲ製図プログラムに置かれてもよい。第２のレンダリングされたウィンドウ３２６が図示され、同様にＶＲ環境内でユーザ２０２によって選択され、および／または動かされ得る。
【００７２】
図３Ｂも、図３Ａと同様に、レンダリングされたキーボード３１０上のレンダリングされた手３０４および３０８によって、ＶＲ環境へのユーザ２０２の投影を図示する。一般に、画像３００Ｂは、表示装置上に表示され得る情報と、レンダリングされたキーボード３１０を使用してコンテンツと対話するユーザ２０２のレンダリングとを含む。この例では、ユーザは、レンダリング３２４で示された図面を修正したいかもしれない。そうするために、ユーザは、たとえばレンダリングされた手３０８を用いてレンダリング３２４を選択して、図３Ｃに示すような手による図面設計を可能にするＶＲ環境に自分を置くことができる。
【００７３】
図３Ｃは、選択可能な製図部品３３０を有するレンダリング３２４を含む。この例では、ユーザ２０２は、レンダリング３２４のオブジェクト３３４（側面図から示す）にベル継手３３２を追加したいかもしれない。そうするために、ユーザ２０２は、自分の仮想の手のレンダリング３３６を部品３３０に伸ばすことによって、ベル継手３３２を選択することができる。このように、ユーザは自分の手のレンダリング３３６を見ることができ、当該レンダリングは点線で描かれているかまたはかすんでいてもよく、一方、選択機構（たとえば、ターゲット／スパーク３３８での指先）は実線であってもよく、点灯していてもよく、または他の態様でどの身体部位が図面を選択しているかについての情報をユーザに視覚的に示していてもよい。ターゲット／スパーク３３８は、衝突ゾーン３３９内にあってもよい。衝突ゾーン３３９は、選択可能な部品３３０のすべて、または部品３３０の一部を表わしていてもよい。手全体が製図部品３３０における他の項目をうっかり選択するかもしれないため、ＶＲアプリケーション１１０は、部品３３０における項目の指先での精密選択を可能にするための衝突モードを呼び出すことができる。
【００７４】
いくつかの実現化例では、ユーザの手が小さいターゲット（たとえば、メニュー、リスト、小さいオブジェクトなど）に近づくと、ＶＲアプリケーション１１０は、ユーザの人差し指が小さいターゲットをトリガする唯一の衝突機構であるように、衝突モードを細かいまたは小さいターゲット衝突モードに動的に変更することができる。このように、ＶＲアプリケーション１１０は、小さいターゲットを選択している人差し指の一部分を動的に修正してもよい。ＶＲアプリケーション１１０は選択をより精密にするためにＶＲ環境において人差し指を修正しているが、アプリケーション１１０は修正を実際に表示しなくてもよい。したがって、ユーザは、修正なしで指を見てもよい。
【００７５】
いくつかの実現化例では、衝突ゾーンは、他の衝突ゾーン内に入れ子にされ得る。これは、同じ仮想コンテンツのための複数の衝突モードを可能にし得る。たとえば、ユーザ３３６が衝突ゾーン３４３へと動く場合、システム１００はその運動を検出して、部品選択の手／手のひら衝突モードを可能にしてもよい。ユーザが部品３３２を選択するために衝突ゾーン３４１に入る際、その部品を選択するための衝突モードがトリガされてもよく、これに応答して、システム１００は、衝突ゾーン３４１に近接したことまたは入ったことを検出してもよく、衝突モードを手／手のひら衝突モードから指先衝突モードに変更することができる。同様に、ユーザ３３６が次に衝突ゾーン３４５の上方でホバーした場合、システム１００は、衝突モードを指先衝突モードから手／手のひら衝突モードに変更することができる。衝突ゾーンは正方形または矩形で図示されているが、任意のサイズおよび形状の衝突ゾーンが可能である。一般に、衝突ゾーンは、仮想オブジェクト上またはその周りの体積（たとえば、球、正方形、矩形、多角形、もしくは何らかの他の２次元または３次元形状）であり得る。
【００７６】
いくつかの実現化例では、衝突モードは、経時的に２つ以上のモードの組合せになるように選択され得る。たとえば、衝突モードは、粗いモードで始まり、徐々に細かいモードに切り替わり得る。この徐々の切り替えは、ユーザがタスクを切り替えている場合、または異なる環境において歩き回っている場合といった、ＶＲ環境が変更される際に行なわれ得る。他の実現化例では、ある衝突モードから別のモードへの切り替えは、タスク、環境、選択機構などの変更時に瞬間的であってもよい。
【００７７】
いくつかの実現化例では、ＶＲアプリケーション１１０は、ユーザがいつ特定の項目に触れたいかを検出することができ、この検出に基づいて衝突モードを切り替えることができる。たとえば、あるユーザについて眼球注視が検出され、眼球注視方向が、（ユーザが見ているところへのコンテキストにおいて）ユーザのアクションが何であるかを判断するための入力として使用され得る。ＶＲアプリケーション１１０は、ユーザの検出された（意図された）アクションを使用することができ、どの衝突モードが適切な応答性を提供するかを判断することができる。
【００７８】
いくつかの実現化例では、切り替え可能な衝突モードを提供することは、情報の損失、もしくは間違いによりうっかりなされた確認または返答を防止するという利点を提供できる。すなわち、衝突モードを粗いモードから細かいモードに切り替えることは、ユーザがデータをうっかり削除したり、あまりにも多くの項目を選択したりすることなどを防止することができる。
【００７９】
いくつかの実現化例では、システム１００は、衝突モードをオンまたはオフにするために使用され得るセンサおよび／またはソフトウェア制御機構を有するＶＲ機器を含み得る。たとえば、ＨＭＤデバイス１０６は、利用可能な衝突モードのメニューを繰り返すためのボタンを含んでいてもよい。ユーザはまた、たとえばユーザがＶＲ環境において対話したくない場合に、そのようなメニューを使用してすべての衝突モードをオフにすることができる。たとえば、ユーザが美術館にいて、美術館で利用可能なＶＲコンテンツにアクセスしている場合、ユーザは展示を誤って妨害したくないかもしれない。したがって、ユーザはＶＲコンテンツにアクセスできるものの、世界との衝突を防止するためにコンテンツと対話しないことを選択することができる。
【００８０】
いくつかの実現化例では、衝突モードは、音声制御、ジェスチャー、物理ボタン選択、またはそれらの任意の組合せを使用して選択され、または切換えられ得る。一例では、ユーザは、ある特定の衝突モードを起動または停止させるために、音声コマンドを呼び出してもよい。音声コマンドは、ＶＲ環境自体に関していてもよく、または、ＶＲ環境内でアクセスされた仮想コンテンツに関していてもよい。
【００８１】
いくつかの実現化例では、システム１００は、特定の衝突モードを選択するために、ユーザ生体認証（たとえば、ストレスレベル、皮膚反応、指紋、心拍数、呼吸など）を測定することができる。たとえば、システム１００は、ユーザが１組のターゲットに近づく際に躊躇しているかどうかを検出することができる。システム１００は、検出に基づいて、ある衝突モードを示唆するかまたはある衝突モードに動的に切り替えることができる。すなわち、システム１００は、ユーザがＶＲ環境におけるより高い精度から利益を得るであろうと推論してもよく、そのため、システム１００は、いくつかの衝突モードを制限しながら、他の衝突モードを自由に提供することができる。
【００８２】
いくつかの実現化例では、衝突モードは、ユーザについて、ユーザアクションの追跡された履歴に基づいて修正され得る。たとえば、システム１００は、ユーザが映画の最中に一時停止を選択することを繰り返し試みたこと、および、そうするために、ユーザが、ターゲット間で躊躇しながら、間違って選択したターゲットを前後に動かしたことを検出できる。ユーザは巻き戻しターゲットを選択し、間違った選択を取消すために再生ターゲットを再び選択したかもしれない。この場合、システムは、ユーザの選択機構（すなわち、ユーザの指）のためのより細かい衝突モードを提供するために、衝突モードを変更することができる。
【００８３】
別の例では、ユーザはＶＲ環境においてモバイルデバイスを使用して友達に電話をかけようとしたものの、代わりに、いとこに繰り返し電話をかけてモバイルデバイスを切った。システム１００は、ユーザの指が経路を横断していること、または、ＶＲ機器がある特定のユーザについて較正されていないことを検出することができ、これに応答して、システムは、選択をユーザにとってより容易にするために、より細かい衝突モードに切り替えることができる。これは、ＶＲ環境および製品についてのユーザの認識を向上させるように機能できる。
【００８４】
いくつかの実現化例では、衝突モードは、ＶＲセッション間に保存され得る。たとえば、ユーザは、ユーザが別のヘッドセットまたはＨＭＤデバイスにおけるＶＲコンテンツにアクセスする場合に自分が慣れている同様の衝突モードで作業できるように、衝突モードを遠隔で保存されるように構成することができる。センサ機器設定およびソフトウェア設定も、同様のやり方でユーザとともに運ぶことができる。
【００８５】
いくつかの実現化例では、ＶＲアプリケーション１１０は、ある特定のＶＲ環境のために多数のターゲットおよび衝突モードを提供するように構成され得る。しかしながら、モードおよびターゲットのすべてを一度に提供することは、ユーザがＶＲ環境を歩き回る際に、トリガに基づく多くのエラーをもたらし得る。したがって、ＶＲアプリケーション１１０は、ユーザが歩いている際にユーザを検出することができ、不必要なトリガを防止するために、またはユーザの混乱を防止するために、特定の衝突モードまたはターゲットをオフにすることができる。たとえば、ＶＲ環境のフロアが多くのターゲットを含み、ユーザの足があるレベルのゲーム用の衝突機構として構成される場合、ユーザは知らずに歩き回って、フロア上のターゲットをトリガするかもしれない。ＶＲ環境は、低レベルのゲームでは特定のレベルになるまで手による対話を可能にするように構成されてもよく、次に、フロアにターゲットが提供されてもよい。ＶＲアプリケーション１１０は、ユーザが遊んでいるレベルを判断することができ、そのレベルに基づいてターゲットおよび／または衝突モードを起動または停止させることができる。
【００８６】
いくつかの実現化例では、ユーザは、非ＶＲ環境においてコンピューティングデバイスと対話するのと同じやり方で（たとえば標準の典型的なやり方で）、ＶＲ環境においてコンピューティングデバイスと対話してもよい。たとえば、ユーザは、非ＶＲ環境においてあるアプリケーションを通常使用するように、ＶＲ環境においてコンピューティングデバイス上で同じアプリケーションを使用してもよい。
【００８７】
いくつかの実現化例では、コンピューティングデバイスはその全体がＶＲ環境においてレンダリングされ得る。いくつかの実現化例では、コンピューティングデバイスのある局面がＶＲ環境においてレンダリングされ得る。たとえば、コンピューティングデバイスのタッチスクリーンの接触面がＶＲ環境においてレンダリングされてもよい。別の例では、コンピューティングデバイスの境界がＶＲ環境においてレンダリングされてもよい。別の例では、コンピューティングデバイスのためのインターフェイス（たとえば入力制御機構）がＶＲ環境においてレンダリングされてもよい。
【００８８】
図４は、ＶＲ環境においてコンテキスト依存衝突を提供するためのプロセス４００の一実施形態を図解するフローチャートである。ブロック４０２で、ＶＲアプリケーション１１０は、仮想環境において仮想ユーザについて入力を受信することができる。たとえば、アプリケーション１１０は、ＶＲ環境において追跡されているユーザによって行なわれた多数の運動を受信することができる。運動は、ＶＲコンテンツがＶＲ環境においてユーザに提供されることに応答して行なわれた手のジェスチャー、もしくは、腕または手の運動に基づいていてもよい。いくつかの実現化例では、運動は、ユーザがＶＲ環境内で保持し、動かすことができるオブジェクトまたはレンダリングされたコンテンツに基づいていてもよい。
【００８９】
ブロック４０４で、ＶＲアプリケーション１１０は、ユーザの運動に基づいて、仮想ユーザ（または仮想ユーザによって保持されたオブジェクト）が衝突ゾーンのしきい値距離内にいることを検出することができる。いくつかの実現化例では、任意の数のセンサと組合されたＶＲアプリケーション１１０は、ユーザの一部分が衝突ゾーンのしきい値距離内にあることを検出することができる。しきい値距離は、たとえば仮想オブジェクトから約１／２〜１インチで行なわれる、仮想オブジェクトの近傍の手のホバーを含み得る。たとえば、ユーザ２０２が、他の仮想オブジェクト上に積み重ねられるように構成されたある仮想オブジェクトへ自分の手を伸ばす場合、ＶＲアプリケーション１１０は、ユーザがその仮想オブジェクトと衝突しそうであることを検出することができ、仮想オブジェクト上および／またはユーザ上のターゲットエリアをトリガすることによって応答することができる。そのように、ユーザは、自分の手のどの部分が選択器として使用されるか、および、仮想オブジェクトを選択するためにどの（ターゲット）エリアが使用されるかを視覚的に見ることができる。
【００９０】
ブロック４０６で、ＶＲアプリケーション１１０は、仮想ユーザおよび／または衝突ゾーンのための衝突モードを選択するために、衝突処理を行なうことができる。たとえば、任意の数のセンサと組合されたＶＲアプリケーション１１０は、組合せにとって適切な衝突モードを選択するために、衝突しそうなユーザの一部分、仮想オブジェクト、および／または、物理環境もしくはＶＲ環境を分析することができる。
【００９１】
ブロック４０８で、ＶＲアプリケーション１１０は、選択された衝突モードに基づいて、仮想ユーザを動的に修正することができる。いくつかの実現化例では、仮想ユーザを動的に修正することは、仮想環境における入力の提供に対応して仮想ユーザの一部分を修正することを含み得る。いくつかの実現化例では、仮想ユーザを動的に修正することは、視覚応答、音声応答、または触覚応答のうちの少なくとも１つをユーザに提供することを含んでいてもよい。
【００９２】
いくつかの実現化例では、ＶＲアプリケーション１１０はまた、動的に修正された仮想ユーザと整列するように衝突ゾーンを調節することを含み得る。たとえば、調節することは、入力を受信する衝突ゾーンにおいて多数の可視ターゲットを提供することを含んでいてもよい。複数の可視ターゲットは、仮想オブジェクトがある特定の衝突モードを有して構成されること、および／または当該衝突モードに関連付けられることに基づいて選択され、仮想オブジェクト上に提供されてもよい。いくつかの実現化例では、ＶＲアプリケーション１１０はまた、選択された衝突モードに少なくとも部分的に基づいて、少なくとも１つのコンテキスト依存衝突ゾーンを提供することができる。コンテキスト依存衝突ゾーンは、衝突ゾーンに関連付けられたサイズに基づいて提供されてもよい。コンテキスト依存衝突ゾーンは、仮想環境における仮想オブジェクトに基づいて提供されてもよい。
【００９３】
いくつかの実現化例では、ユーザの一部分を修正することは、（ｉ）ユーザ入力は物理ユーザの指の運動を含むこと、および、衝突ゾーンのしきい値距離内にあるユーザの一部分は１本以上の仮想の指を含むことを検出することと、（ｉｉ）衝突ゾーンへの１本以上の仮想の指の到達範囲を広げることとを含んでいてもよく、広げることは、仮想環境における１本以上の仮想の指の近傍に示された仮想オブジェクトと対話するように、仮想ユーザを適合させることを含む。いくつかの実現化例では、仮想ユーザを動的に修正することは、本開示全体にわたって説明されるように、視覚応答、音声応答、または触覚応答のうちの少なくとも１つをユーザに提供することを含む。
【００９４】
いくつかの実現化例では、方法４００はまた、選択された衝突モードに少なくとも部分的に基づいて、少なくとも１つのコンテキスト依存衝突ゾーンを提供することを含んでいてもよい。衝突ゾーンのコンテキストが指のジェスチャーを受信するように構成される場合、衝突モードは細かい衝突モードとして構成されてもよい。衝突ゾーンのコンテキストが対話型の手のジェスチャーを受信するように構成される場合、衝突モードは粗い衝突モードとして構成されてもよい。いくつかの実現化例では、コンテキスト依存衝突ゾーンは、衝突ゾーンに関連付けられたサイズに基づいて提供される。いくつかの実現化例では、コンテキスト依存衝突ゾーンは、仮想環境における少なくとも１つの仮想オブジェクトに関連付けられたサイズに基づいて提供される。
【００９５】
図５は、ここに説明される手法を用いて使用され得る汎用コンピュータデバイス５００および汎用モバイルコンピュータデバイス５５０の例を示す。コンピューティングデバイス５００は、プロセッサ５０２と、メモリ５０４と、記憶装置５０６と、メモリ５０４および高速拡張ポート５１０に接続している高速インターフェイス５０８と、低速バス５１４および記憶装置５０６に接続している低速インターフェイス５１２とを含む。コンポーネント５０２、５０４、５０６、５０８、５１０、および５１２の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたは他の態様で適宜搭載されてもよい。プロセッサ５０２は、コンピューティングデバイス５００内で実行される命令を処理可能であり、これらの命令は、ＧＵＩのためのグラフィック情報を、高速インターフェイス５０８に結合されたディスプレイ５１６などの外部入出力デバイス上に表示するために、メモリ５０４内または記憶装置５０６上に格納された命令を含む。他の実現化例では、複数のプロセッサおよび／または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用されてもよい。加えて、複数のコンピューティングデバイス５００が接続されてもよく、各デバイスは（たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして）必要な動作の部分を提供する。
【００９６】
メモリ５０４は、情報をコンピューティングデバイス５００内に格納する。一実現化例では、メモリ５０４は１つまたは複数の揮発性メモリユニットである。別の実現化例では、メモリ５０４は１つまたは複数の不揮発性メモリユニットである。メモリ５０４はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能媒体であってもよい。
【００９７】
記憶装置５０６は、コンピューティングデバイス５００のための大容量記憶を提供可能である。一実現化例では、記憶装置５０６は、フロッピー（登録商標）ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ読取可能媒体であってもよく、または当該コンピュータ読取可能媒体を含んでいてもよい。コンピュータプログラム製品が情報担体において有形に具体化され得る。コンピュータプログラム製品はまた、実行されると上述のような１つ以上の方法を行なう命令を含んでいてもよい。情報担体は、メモリ５０４、記憶装置５０６、またはプロセッサ５０２上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体である。
【００９８】
高速コントローラ５０８はコンピューティングデバイス５００のための帯域幅集約的な動作を管理し、一方、低速コントローラ５１２はより低い帯域幅集約的な動作を管理する。機能のそのような割当ては例示に過ぎない。一実現化例では、高速コントローラ５０８は、メモリ５０４、ディスプレイ５１６に（たとえば、グラフィックスプロセッサまたはアクセラレータを介して）、および、さまざまな拡張カード（図示せず）を受付け得る高速拡張ポート５１０に結合される。この実現化例では、低速コントローラ５１２は、記憶装置５０６および低速拡張ポート５１４に結合される。さまざまな通信ポート（たとえば、ＵＳＢ、ブルートゥース（登録商標）、イーサネット（登録商標）、無線イーサネット）を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの１つ以上の入出力デバイスに、もしくは、スイッチまたはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合されてもよい。
【００９９】
コンピューティングデバイス５００は、図に示すように多くの異なる形態で実現されてもよい。たとえばそれは、標準サーバ５２０として、またはそのようなサーバのグループで複数回実現されてもよい。それはまた、ラックサーバシステム５２４の一部として実現されてもよい。加えて、それは、ラップトップコンピュータ５２２などのパーソナルコンピュータにおいて実現されてもよい。これに代えて、コンピューティングデバイス５００からのコンポーネントは、デバイス５５０などのモバイルデバイス（図示せず）における他のコンポーネントと組合されてもよい。そのようなデバイスの各々は、コンピューティングデバイス５００、５５０のうちの１つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス５００、５５０で構成されてもよい。
【０１００】
コンピューティングデバイス５５０は、数あるコンポーネントの中でも特に、プロセッサ５５２と、メモリ５６４と、ディスプレイ５５４などの入出力デバイスと、通信インターフェイス５６６と、トランシーバ５６８とを含む。デバイス５５０にはまた、追加の格納を提供するために、マイクロドライブまたは他のデバイスなどの記憶装置が設けられてもよい。コンポーネント５５０、５５２、５６４、５５４、５６６、および５６８の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたは他の態様で適宜搭載されてもよい。
【０１０１】
プロセッサ５５２は、メモリ５６４に格納された命令を含む、コンピューティングデバイス５５０内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス５５０が実行するアプリケーション、およびデバイス５５０による無線通信の制御といった、デバイス５５０の他のコンポーネント同士の連携を提供してもよい。
【０１０２】
プロセッサ５５２は、ディスプレイ５５４に結合された制御インターフェイス５５８およびディスプレイインターフェイス５５６を介してユーザと通信してもよい。ディスプレイ５５４は、たとえば、ＴＦＴ  ＬＣＤ（Thin-Film-Transistor Liquid Crystal Display：薄膜トランジスタ液晶ディスプレイ）、またはＯＬＥＤ（Organic Light Emitting Diode：有機発光ダイオード）ディスプレイ、または他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス５５６は、ディスプレイ５５４を駆動してグラフィカル情報および他の情報をユーザに提示するための適切な回路を含んでいてもよい。制御インターフェイス５５８は、ユーザからコマンドを受信し、それらをプロセッサ５５２に送出するために変換してもよい。加えて、デバイス５５０と他のデバイスとの近接エリア通信を可能にするように、外部インターフェイス５６２がプロセッサ５５２と通信した状態で設けられてもよい。外部インターフェイス５６２は、たとえば、ある実現化例では有線通信を提供し、他の実現化例では無線通信を提供してもよく、複数のインターフェイスが使用されてもよい。
【０１０３】
メモリ５６４は、情報をコンピューティングデバイス５５０内に格納する。メモリ５６４は、１つまたは複数のコンピュータ読取可能媒体、１つまたは複数の揮発性メモリユニット、もしくは、１つまたは複数の不揮発性メモリユニットの１つ以上として実現され得る。拡張メモリ５７４も設けられ、拡張インターフェイス５７２を介してデバイス５５０に接続されてもよく、拡張インターフェイス５７２は、たとえばＳＩＭＭ（Single In Line Memory Module）カードインターフェイスを含んでいてもよい。そのような拡張メモリ５７４は、デバイス５５０に余分の格納スペースを提供してもよく、もしくは、デバイス５５０のためのアプリケーションまたは他の情報も格納してもよい。具体的には、拡張メモリ５７４は、上述のプロセスを実行または補足するための命令を含んでいてもよく、安全な情報も含んでいてもよい。このため、たとえば、拡張メモリ５７４はデバイス５５０のためのセキュリティモジュールとして設けられてもよく、デバイス５５０の安全な使用を許可する命令でプログラミングされてもよい。加えて、ハッキング不可能な態様でＳＩＭＭカード上に識別情報を乗せるといったように、安全なアプリケーションが追加情報とともにＳＩＭＭカードを介して提供されてもよい。
【０１０４】
メモリはたとえば、以下に説明されるようなフラッシュメモリおよび／またはＮＶＲＡＭメモリを含んでいてもよい。一実現化例では、コンピュータプログラム製品が情報担体において有形に具体化される。コンピュータプログラム製品は、実行されると上述のような１つ以上の方法を行なう命令を含む。情報担体は、メモリ５６４、拡張メモリ５７４、またはプロセッサ５５２上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体であり、たとえばトランシーバ５６８または外部インターフェイス５６２を通して受信され得る。
【０１０５】
デバイス５５０は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス５６６を介して無線通信してもよい。通信インターフェイス５６６は、とりわけ、ＧＳＭ（登録商標）音声通話、ＳＭＳ、ＥＭＳ、またはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ（登録商標）、ＣＤＭＡ２０００、またはＧＰＲＳといった、さまざまなモードまたはプロトコル下での通信を提供してもよい。そのような通信は、たとえば無線周波数トランシーバ５６８を介して生じてもよい。加えて、ブルートゥース、Ｗｉ−Ｆｉ、または他のそのようなトランシーバ（図示せず）などを使用して、短距離通信が生じてもよい。加えて、ＧＰＳ（Global Positioning System：全地球測位システム）レシーバモジュール５７０が、追加のナビゲーション関連および位置関連無線データをデバイス５５０に提供してもよく、当該データは、デバイス５５０上で実行されるアプリケーションによって適宜使用されてもよい。
【０１０６】
デバイス５５０はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック５６０を使用して、音声通信してもよい。音声コーデック５６０はまた、たとえばデバイス５５０のハンドセットにおいて、スピーカを介すなどして、ユーザに聞こえる音を生成してもよい。そのような音は、音声電話からの音を含んでいてもよく、録音された音（たとえば、音声メッセージ、音楽ファイルなど）を含んでいてもよく、デバイス５５０上で動作するアプリケーションが生成する音も含んでいてもよい。
【０１０７】
コンピューティングデバイス５５０は、図に示すように多くの異なる形態で実現されてもよい。たとえばそれは、携帯電話５８０として実現されてもよい。それはまた、スマートフォン５８２、携帯情報端末、または他の同様のモバイルデバイスの一部として実現されてもよい。
【０１０８】
ここに説明されたシステムおよび手法のさまざまな実現化例は、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣ（application specific integrated circuit：特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはそれらの組合せで実現され得る。これらのさまざまな実現化例は、少なくとも１つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および／または解釈可能な１つ以上のコンピュータプログラムにおける実現化例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータおよび命令を受信するとともに、これらにデータおよび命令を送信するように結合されてもよい。
【０１０９】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知）は、プログラマブルプロセッサのための機械命令を含んでおり、高レベル手続き型および／またはオブジェクト指向プログラミング言語で、および／またはアセンブリ／機械言語で実現され得る。ここに使用されるように、「機械読取可能媒体」「コンピュータ読取可能媒体」という用語は、機械命令および／またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置および／またはデバイス（たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス（Programmable Logic Device：ＰＬＤ））を指し、機械命令を機械読取可能信号として受信する機械読取可能媒体を含む。「機械読取可能信号」という用語は、機械命令および／またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
【０１１０】
ユーザとの対話を提供するために、ここに説明されたシステムおよび手法は、情報をユーザに表示するためのディスプレイデバイス（たとえば、ＣＲＴ（cathode ray tube：陰極線管）またはＬＣＤ（liquid crystal display：液晶ディスプレイ）モニタ）と、ユーザが入力をコンピュータに提供できるようにするキーボードおよびポインティングデバイス（たとえば、マウスまたはトラックボール）とを有するコンピュータ上で実現され得る。他の種類のデバイスを使用してユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック（たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック）であってもよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信され得る。
【０１１１】
ここに説明されたシステムおよび手法は、（たとえばデータサーバとしての）バックエンドコンポーネントを含む、またはミドルウェアコンポーネント（たとえばアプリケーションサーバ）を含む、またはフロントエンドコンポーネント（たとえば、ユーザがここに説明されたシステムおよび手法の実現化例と対話できるようにするグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ）を含む、もしくは、そのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実現され得る。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信（たとえば通信ネットワーク）によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク（local area network：ＬＡＮ）、ワイドエリアネットワーク（wide area network：ＷＡＮ）、およびインターネットを含む。
【０１１２】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
【０１１３】
いくつかの実現化例では、図５に示すコンピューティングデバイスは、仮想現実（ＨＭＤデバイス５９０）とインターフェイス接続するセンサを含み得る。たとえば、図５に示すコンピューティングデバイス５５０または他のコンピューティングデバイス上に含まれる１つ以上のセンサは、ＨＭＤデバイス５９０への入力を提供でき、または一般に、ＶＲ環境への入力を提供できる。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、生体認証センサ、温度センサ、湿度センサ、および周囲光センサを含み得るものの、それらに限定されない。コンピューティングデバイス５５０はこれらのセンサを使用して、ＶＲ環境におけるコンピューティングデバイスの絶対位置および／または検出された回転を判断可能であり、それは次に、ＶＲ環境への入力として使用され得る。たとえば、コンピューティングデバイス５５０は、コントローラ、レーザポインタ、キーボード、武器などの仮想オブジェクトとしてＶＲ環境に組込まれてもよい。ＶＲ環境に組込まれた場合のコンピューティングデバイス／仮想オブジェクトのユーザによる位置付けは、ユーザが、ＶＲ環境において仮想オブジェクトをある態様で見るようにコンピューティングデバイスを位置付けることを可能にし得る。たとえば、仮想オブジェクトがレーザポインタを表わす場合、ユーザは、コンピューティングデバイスを、実際のレーザポインタであるかのように操作することができる。ユーザはコンピューティングデバイスをたとえば左右に、上下に、円形に動かして、レーザポインタを使用するのと同様の態様でデバイスを使用することができる。
【０１１４】
いくつかの実現化例では、コンピューティングデバイス５５０上に含まれ、またはコンピューティングデバイス５５０に接続された１つ以上の入力デバイスは、ＶＲ環境への入力として使用され得る。入力デバイスは、タッチスクリーン、キーボード、１つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイクロホン、入力機能性を有するイヤホンまたは小型イヤホン、ゲーミングコントローラ、または他の接続可能な入力デバイスを含み得るものの、それらに限定されない。コンピューティングデバイスがＶＲ環境に組込まれた場合にコンピューティングデバイス５５０上に含まれる入力デバイスと対話するユーザは、特定のアクションがＶＲ環境で生じるようにすることができる。
【０１１５】
いくつかの実現化例では、コンピューティングデバイス５５０のタッチスクリーンは、ＶＲ環境においてタッチパッドとしてレンダリングされ得る。ユーザは、コンピューティングデバイス５５０のタッチスクリーンと対話することができる。対話は、たとえばＨＭＤデバイス５９０において、ＶＲ環境におけるレンダリングされたタッチパッド上の動きとしてレンダリングされる。レンダリングされた動きは、ＶＲ環境においてオブジェクトを制御することができる。
【０１１６】
いくつかの実現化例では、コンピューティングデバイス５５０上に含まれる１つ以上の出力デバイスは、ＶＲ環境においてＨＭＤデバイス５９０のユーザに出力および／またはフィードバックを提供することができる。出力およびフィードバックは、視覚、触覚、または音声によるものであり得る。出力および／またはフィードバックは、振動、１つ以上の照明またはストロボをオンオフすることもしくは点滅および／または明滅させること、アラームを鳴らすこと、チャイムを鳴らすこと、歌を演奏すること、および音声ファイルを演奏することを含み得るものの、それらに限定されない。出力デバイスは、振動モータ、振動コイル、圧電デバイス、静電デバイス、発光ダイオード（ＬＥＤ）、ストロボ、およびスピーカを含み得るものの、それらに限定されない。
【０１１７】
いくつかの実現化例では、コンピューティングデバイス５５０は、コンピュータによって生成された３Ｄ環境において別のオブジェクトとして現われてもよい。ユーザによるコンピューティングデバイス５５０との対話（たとえば、タッチスクリーンを回転させ、振動させること、タッチスクリーンに触れること、タッチスクリーンを横切って指をスワイプすること）は、ＶＲ環境におけるオブジェクトとの対話として解釈され得る。ＶＲ環境におけるレーザポインタの例では、コンピューティングデバイス５５０は、コンピュータによって生成された３Ｄ環境において仮想レーザポインタとして現われる。ユーザがコンピューティングデバイス５５０を操作する際、ユーザはＶＲ環境においてレーザポインタの動きを見る。ユーザは、コンピューティングデバイス５５０上またはＨＭＤデバイス５９０上で、ＶＲ環境におけるコンピューティングデバイス５５０との対話からフィードバックを受信する。
【０１１８】
いくつかの実現化例では、コンピューティングデバイス５５０はタッチスクリーンを含んでいてもよい。たとえば、ユーザは、タッチスクリーン上で起こることをＶＲ環境において起こることで模倣できる特定の態様で、タッチスクリーンと対話することができる。たとえば、ユーザは、タッチスクリーンに表示されたコンテンツをズームするために、ピンチタイプの動きを使用してもよい。タッチスクリーン上でのこのピンチタイプの動きにより、ＶＲ環境において提供された情報はズームされ得る。別の例では、コンピューティングデバイスは、コンピュータによって生成された３Ｄ環境において仮想の本としてレンダリングされてもよい。
【０１１９】
いくつかの実現化例では、コンピューティングデバイスに加えて１つ以上の入力デバイス（たとえばマウス、キーボード）が、コンピュータによって生成された３Ｄ環境においてレンダリングされ得る。レンダリングされた入力デバイス（たとえば、レンダリングされたマウス、レンダリングされたキーボード）は、ＶＲ環境においてオブジェクトを制御するために、ＶＲ環境においてレンダリングされたとして使用され得る。
【０１２０】
コンピューティングデバイス５００は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータといった、さまざまな形態のデジタルコンピュータを表わすよう意図されている。コンピューティングデバイス５５０は、携帯情報端末、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスといった、さまざまな形態のモバイルデバイスを表わすよう意図されている。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は、単なる例示であるよう意図されており、本文書に記載のおよび／または請求項に記載の本発明の実現化例を限定するよう意図されてはいない。
【０１２１】
多くの実施形態を説明してきた。しかしながら、明細書の精神および範囲から逸脱することなくさまざまな変更がなされ得ることが理解されるであろう。加えて、図面に示す論理フローは、所望の結果を達成するために、図示された特定の順序または順番を必要としない。加えて、説明されたフローに他のステップが提供されてもよく、または当該フローからステップが除去されてもよく、説明されたシステムに他のコンポーネントが追加されてもよく、または当該システムから除去されてもよい。したがって、他の実施形態は以下の請求項の範囲内にある。
【０１２２】
以下に、本開示に従った、コンピュータにより実現される方法、システム、および非一時的なコンピュータ読取可能媒体のさらに別の例を説明する。
【０１２３】
第１の例は、コンピュータにより実現される方法であって、仮想環境において仮想ユーザについて入力を受信するステップを含み、入力は、仮想環境にアクセスしているユーザによって行なわれた複数の運動に基づいており、当該方法はさらに、複数の運動に基づいて、仮想ユーザの少なくとも一部分が衝突ゾーンのしきい値距離内にあることを検出するステップを含み、衝突ゾーンは、少なくとも１つの仮想オブジェクトに関連付けられており、当該方法はさらに、少なくとも一部分および少なくとも１つの仮想オブジェクトに基づいて、仮想ユーザのための衝突モードを選択するステップと、選択された衝突モードに基づいて、仮想ユーザを動的に修正するステップとを含む、方法に関する。
【０１２４】
第２の例は、修正された仮想ユーザと整列するように衝突ゾーンを調節するステップをさらに含み、調節するステップは、入力を受信する衝突ゾーンにおいて複数の可視ターゲットを提供するステップを含み、複数の可視ターゲットは、選択された衝突モードに関連付けられている、第１の例に基づいたコンピュータにより実現される方法に関する。
【０１２５】
第１または第２の例に基づいた第３の例では、少なくとも１つの仮想オブジェクトの近傍のホバー運動を含み、しきい値距離は、少なくとも１つの仮想オブジェクトから約１／２〜約１インチを含む。
【０１２６】
第４の例は、仮想環境はスクロール可能コンテンツを提供していると判断するステップと、手のひらベースの衝突モードを選択するステップと、コンテンツを、ユーザの手によって始動された手のひらジェスチャーの受信に応答してスクロールされるように構成するステップとをさらに含む、第１〜第３の例のうちの１つに基づいたコンピュータにより実現される方法に関する。
【０１２７】
第１〜第４の例のうちの１つに基づいた第５の例では、仮想ユーザを動的に修正するステップは、仮想環境における入力の提供に対応して仮想ユーザの一部分を修正するステップを含む。
【０１２８】
第５の例に基づいた第６の例では、一部分を修正するステップは、入力は指の運動を含むこと、および、一部分は１本以上の仮想の指を含むことを検出するステップと、衝突ゾーンへの１本以上の仮想の指の到達範囲を広げるステップとをさらに含み、広げるステップは、仮想環境における１本以上の仮想の指までのしきい値距離内に示された仮想オブジェクトと対話するように、仮想ユーザを適合させるステップを含む。
【０１２９】
第１〜第６の例のうちの１つに基づいた第７の例では、仮想ユーザを動的に修正するステップは、視覚応答、音声応答、または触覚応答のうちの少なくとも１つをユーザに提供するステップを含む。
【０１３０】
第８の例は、選択された衝突モードに少なくとも部分的に基づいて、少なくとも１つのコンテキスト依存衝突ゾーンを提供するステップをさらに含み、衝突ゾーンのコンテキストが指のジェスチャーを受信するように構成される場合、衝突モードは細かい衝突モードとして構成され、衝突ゾーンのコンテキストが対話型の手のジェスチャーを受信するように構成される場合、衝突モードは粗い衝突モードとして構成される、第１〜第７の例のうちの１つに基づいたコンピュータにより実現される方法に関する。
【０１３１】
第８の例に基づいた第９の例では、コンテキスト依存衝突ゾーンは、衝突ゾーンに関連付けられたサイズに基づいて提供される。
【０１３２】
第８または第９の例に基づいた第１０の例では、コンテキスト依存衝突ゾーンは、仮想環境における少なくとも１つの仮想オブジェクトに関連付けられたサイズに基づいて提供される。
【０１３３】
第１１の例は、システムであって、仮想現実環境において仮想現実体験を生成する電子コンピューティングデバイスを含み、電子コンピューティングデバイスは物理的空間内でポータブルであり、当該システムはさらに、電子コンピューティングデバイスと通信している複数のセンサを含み、センサは、物理的空間内の電子コンピューティングデバイスにアクセスしているユーザに関連付けられた動きを検出するように構成され、当該システムはさらに、少なくとも１つのプロセッサを含み、プロセッサは、仮想現実環境における仮想オブジェクトの近傍の運動を検出するように構成され、運動は物理ユーザによって行なわれ、運動は仮想環境において表わされ、物理ユーザの身体部位に関連付けられており、プロセッサはさらに、仮想オブジェクトが身体部位よりも小さい仮想オブジェクト上のエリアにおいて入力を受信するように構成されているという判断に応答して、身体部位を用いた選択能力を修正するための衝突モードを選択し、仮想環境における身体部位の表現上に、修正された選択能力を表示し、異なる仮想オブジェクトに関連付けられた運動を検出するまで、選択された衝突モードを維持するように構成される、システムに関する。
【０１３４】
第１１の例に基づいた第１２の例では、仮想環境における身体部位の表現上に、修正された選択能力を表示することは、仮想オブジェクトと対話する機構を物理ユーザに示す表示を点灯させ、振動させ、動かし、大きくし、または小さくするように、身体部位を構成することを含む。
【０１３５】
第１１または第１２の例に基づいた第１３の例では、仮想オブジェクトはキーボードであり、身体部位は手であり、衝突モードは手の指先エリアを小さくするように選択され、身体部位の表現は各指の上の表示器を含む。
【０１３６】
第１１〜第１３の例のうちの１つに基づいた第１４の例では、衝突モードは、手全体モード、腕全体モード、指モード、全身モード、およびキーボードモードからなる群から選択され、各モードは、細かい構成と粗い構成とを含む。
【０１３７】
第１５の例は、命令を含む、非一時的なコンピュータ読取可能媒体であって、命令は、コンピュータシステムのプロセッサによって実行されると、コンピュータシステムに複数のステップを行なわせ、複数のステップは、仮想環境において仮想ユーザについて入力を受信するステップを含み、入力は、仮想環境にアクセスしているユーザによって行なわれた複数の運動に基づいており、複数のステップはさらに、複数の運動に基づいて、仮想ユーザの少なくとも一部分が衝突ゾーンのしきい値距離内にあることを検出するステップを含み、衝突ゾーンは、少なくとも１つの仮想オブジェクトに関連付けられ／当該仮想オブジェクト上に規定されており、複数のステップはさらに、仮想ユーザの少なくとも一部分が衝突ゾーンのしきい値距離内にあることに基づいて、仮想ユーザのための衝突モードを選択するステップを含む、非一時的なコンピュータ読取可能媒体に関する。
【０１３８】
第１６の例は、修正された仮想ユーザと整列するように衝突ゾーンを調節するステップをさらに含み、調節するステップは、入力を受信する衝突ゾーンにおいて複数の可視ターゲットを提供するステップを含み、複数の可視ターゲットは、選択された衝突モードに関連付けられている、第１５の例に基づいた非一時的なコンピュータ読取可能媒体に関する。
【０１３９】
第１５または第１６の例に基づいた第１７の例では、入力は少なくとも１つの仮想オブジェクトの近傍のホバー運動を含み、しきい値距離は、少なくとも１つの仮想オブジェクトから約１／２〜約１インチを含む。
【０１４０】
第１５〜第１７の例のうちの１つに基づいた第１８の例では、仮想ユーザを動的に修正するステップは、仮想環境における入力の提供に対応して仮想ユーザの一部分を修正するステップを含む。
【０１４１】
第１８の例に基づいた第１９の例では、仮想ユーザを動的に修正するステップは、入力は指の運動を含むこと、および、一部分は１本以上の仮想の指を含むことを検出するステップと、衝突ゾーンへの１本以上の仮想の指の到達範囲を広げるステップとをさらに含み、広げるステップは、仮想環境における１本以上の仮想の指までのしきい値距離内に示された仮想オブジェクトと対話するように、仮想ユーザを適合させるステップを含む。
【０１４２】
第２０の例は、選択された衝突モードに少なくとも部分的に基づいて、少なくとも１つのコンテキスト依存衝突ゾーンを提供するステップをさらに含み、衝突ゾーンのコンテキストが指のジェスチャーを受信するように構成される場合、衝突モードは細かい衝突モードとして構成され、衝突ゾーンのコンテキストが対話型の手のジェスチャーを受信するように構成される場合、衝突モードは粗い衝突モードとして構成される、第１５〜第１９の例のうちの１つに基づいた非一時的なコンピュータ読取可能媒体に関する。
【図１】
0006676071.tif 000002
【図２】
0006676071.tif 000003
【図３Ａ】
0006676071.tif 000004
【図３Ｂ】
0006676071.tif 000005
【図３Ｃ】
0006676071.tif 000006
【図４】
0006676071.tif 000007
【図５】
0006676071.tif 000008