(57)【特許請求の範囲】
【請求項１】
方法であって、
コンピューティングシステムの処理回路が、ユーザが居る物理環境内の前記ユーザが持っている入力コントローラの第１の６自由度（６ＤＯＦ）の動きを示す第１の動きデータを受信することと、
前記処理回路が、前記物理環境内の前記入力コントローラの前記第１の６ＤＯＦの動きに基づいてスケーリング係数を生成することと、
前記第１の動きデータを受信した後、前記処理回路が、ある期間にわたる前記物理環境内の前記入力コントローラの第２の６ＤＯＦの動きを示す第２の動きデータを受信することと、
前記第２の動きデータを受信したことに応答して、前記処理回路が、オブジェクト動き操作を実行して仮想環境内のオブジェクトのスケーリングされた動きを生成することとを備え、前記オブジェクト動き操作は、前記第２の６ＤＯＦの動きに対応する前記仮想環境内の前記オブジェクトの動きに前記スケーリング係数を掛けて、前記仮想環境内の前記オブジェクトの前記スケーリングされた動きを生成することを含み、
前記第２の動きデータが、前記仮想環境内のある位置への移動を選択することを示す場合には、前記オブジェクト動き操作は、前記オブジェクトを前記仮想環境内の前記ある位置へテレポートさせる動きを生成する、方法。
【請求項２】
前記第１の動きデータは、前記物理環境内の前記入力コントローラの最初の６ＤＯＦの位置を含み、
前記第１の動きデータを受信することは、前記最初の６ＤＯＦの位置に対する６ＤＯＦの位置の変化を得ることを含む、請求項１に記載の方法。
【請求項３】
前記第２の動きデータは、前記期間の開始時における前記物理環境内の前記入力コントローラの６ＤＯＦの位置を含み、
前記第２の動きデータを受信することは、前記期間の前記開始時における前記物理環境内の前記入力コントローラの前記６ＤＯＦの位置に対する６ＤＯＦの位置の変化を得ることを含む、請求項１または２に記載の方法。
【請求項４】
前記第２の動きデータを受信することは、前記物理環境内の前記入力コントローラの現在の３次元の位置と、前記期間の前記開始時における前記物理環境内の前記入力コントローラの３次元の位置との間のユークリッド距離を生成することをさらに含む、請求項３に記載の方法。
【請求項５】
前記第２の動きデータを受信することは、前記物理環境内の前記入力コントローラの現在の３次元の向きと、前記期間の前記開始時における前記物理環境内の前記入力コントローラの３次元の向きとの間の角変位を生成することをさらに含む、請求項３または４に記載の方法。
【請求項６】
前記物理環境内の前記入力コントローラの前記第１の６ＤＯＦの動きに基づいてスケーリング係数を生成することは、
前記第１の動きが第１の閾値未満であることに応答して、第１のスケーリング係数を生成することと、
前記第１の動きが前記第１の閾値よりも大きいことに応答して、第２のスケーリング係数を生成することとを含み、前記第２のスケーリング係数は前記第１のスケーリング係数よりも大きい、請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記第１の動きが前記第１の閾値よりも大きいことに応答して第２のスケーリング係数を生成することは、
前記第１の動きが、前記第１の閾値よりも大きい第２の閾値未満であることに応答して、第３のスケーリング係数を生成することをさらに含み、前記第３のスケーリング係数は前記第１のスケーリング係数と前記第２のスケーリング係数との間である、請求項６に記載の方法。
【請求項８】
前記第３のスケーリング係数を生成することは、前記第３のスケーリング係数として、前記第１の動きによって線形に変化する数を生成することを含む、請求項７に記載の方法。
【請求項９】
前記コンピューティングシステムは仮想現実（ＶＲ）システムであって、
前記第１の動きデータは、前記ユーザによって行なわれる手のジェスチャの開始時に前記処理回路によって受信される、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
前記第２の動きデータは、前記ユーザが前記入力コントローラのトリガを起動したか否かを示すトリガデータをさらに含み、
前記オブジェクト動き操作は、前記ユーザが前記トリガを起動したことを示す前記トリガデータに応答して実行され、前記ユーザが前記トリガを起動しなかったことを示す前記トリガデータに応答して実行されない、請求項１から９のいずれか１項に記載の方法。
【請求項１１】
コンピュータプログラムであって、前記コンピュータプログラムは、コンピューティングシステムの処理回路によって実行されると前記処理回路に方法を行なわせるコードを含み、前記方法は、
ユーザが居る物理環境内の前記ユーザが持っている入力コントローラの第１の６自由度（６ＤＯＦ）の動きを示す第１の動きデータを受信することと、
前記物理環境内の前記入力コントローラの前記第１の６ＤＯＦの動きに基づいてスケーリング係数を生成することと、
前記第１の動きデータを受信した後、ある期間にわたる前記物理環境内の前記入力コントローラの第２の６ＤＯＦの動きを示す第２の動きデータを受信することと、
前記第２の動きデータを受信したことに応答して、オブジェクト動き操作を実行して仮想環境内のオブジェクトのスケーリングされた動きを生成することとを備え、前記オブジェクト動き操作は、前記第２の６ＤＯＦの動きおよび前記スケーリング係数に基づいており、
前記第２の動きデータが、前記仮想環境内のある位置への移動を選択することを示す場合には、前記オブジェクト動き操作は、前記オブジェクトを前記仮想環境内の前記ある位置へテレポートさせる動きを生成する、コンピュータプログラム。
【請求項１２】
前記オブジェクト動き操作を実行することは、前記第２の６ＤＯＦの動きに対応する前記仮想環境内の前記オブジェクトの動きに前記スケーリング係数を掛けて、前記仮想環境内の前記オブジェクトの前記スケーリングされた動きを生成することを含む、請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記第１の動きデータは、前記物理環境内の前記入力コントローラの最初の６ＤＯＦの位置を含み、
前記第１の動きデータを受信することは、前記最初の６ＤＯＦの位置に対する６ＤＯＦの位置の変化を得ることを含む、請求項１１または１２に記載のコンピュータプログラム。
【請求項１４】
前記第２の動きデータは、前記期間の開始時における前記物理環境内の前記入力コントローラの６ＤＯＦの位置を含み、
前記第２の動きデータを受信することは、前記期間の前記開始時における前記物理環境内の前記入力コントローラの前記６ＤＯＦの位置に対する６ＤＯＦの位置の変化を得ることを含む、請求項１１から１３のいずれか１項に記載のコンピュータプログラム。
【請求項１５】
前記第２の動きデータを受信することは、前記物理環境内の前記入力コントローラの現在の３次元の位置と、前記期間の前記開始時における前記物理環境内の前記入力コントローラの３次元の位置との間のユークリッド距離を生成することをさらに含む、請求項１４に記載のコンピュータプログラム。
【請求項１６】
前記第２の動きデータを受信することは、前記物理環境内の前記入力コントローラの現在の３次元の向きと、前記期間の前記開始時における前記物理環境内の前記入力コントローラの３次元の向きとの間の角変位を生成することをさらに含む、請求項１４または１５に記載のコンピュータプログラム。
【請求項１７】
前記物理環境内の前記入力コントローラの前記第１の６ＤＯＦの動きに基づいてスケーリング係数を生成することは、
前記第１の動きが第１の閾値未満であることに応答して、第１のスケーリング係数を生成することと、
前記第１の動きが前記第１の閾値よりも大きいことに応答して、第２のスケーリング係数を生成することとを含み、前記第２のスケーリング係数は前記第１のスケーリング係数よりも大きい、請求項１１から１６のいずれか１項に記載のコンピュータプログラム。
【請求項１８】
前記第１の動きが前記第１の閾値よりも大きいことに応答して第２のスケーリング係数を生成することは、
前記第１の動きが、前記第１の閾値よりも大きい第２の閾値未満であることに応答して、第３のスケーリング係数を生成することを含み、前記第３のスケーリング係数は前記第１のスケーリング係数と前記第２のスケーリング係数との間である、請求項１７に記載のコンピュータプログラム。
【請求項１９】
前記第３のスケーリング係数を生成することは、前記第３のスケーリング係数として、前記第１の動きによって線形に変化する数を生成することを含む、請求項１８に記載のコンピュータプログラム。
【請求項２０】
コンピューティングシステムであって、
ネットワークインターフェイスと、
メモリと、
処理回路とを備え、前記処理回路は、
ユーザが居る物理環境内の前記ユーザが持っている入力コントローラの第１の６自由度（６ＤＯＦ）の動きを示す第１の動きデータを受信し、
前記物理環境内の前記入力コントローラの前記第１の６ＤＯＦの動きに基づいてスケーリング係数を生成し、
前記第１の動きデータを受信した後、ある期間にわたる前記物理環境内の前記入力コントローラの第２の６ＤＯＦの動きを示す第２の動きデータを受信し、
前記第２の動きデータを受信したことに応答して、オブジェクト動き操作を実行して仮想環境内のオブジェクトのスケーリングされた動きを生成するように構成され、前記オブジェクト動き操作は、前記第２の６ＤＯＦの動きおよび前記スケーリング係数に基づき、
前記第２の動きデータが、前記仮想環境内のある位置への移動を選択することを示す場合には、前記オブジェクト動き操作は、前記オブジェクトを前記仮想環境内の前記ある位置へテレポートさせる動きを生成する、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１６年１１月１５日に出願され「仮想現実システムのための入力コントローラ安定化技術（INPUT CONTROLLER STABILIZATION TECHNIQUES FOR VIRTUAL REALITY SYSTEMS）」と題された米国特許出願第６２／４２２，４６４号の優先権を主張し、その開示全体を本明細書に引用により援用する。
【０００２】
分野
本発明は概して、拡張および／または仮想現実環境における入力コントローラ安定化技術に関する。
【背景技術】
【０００３】
背景
拡張現実（augmented reality：ＡＲ）および／または仮想現実（virtual reality：ＶＲ）システムは、３次元（３Ｄ）没入型仮想環境を生成することができる。ユーザは、この３Ｄ没入型仮想環境を、さまざまな電子装置との対話を通して体験することができる。これらの電子装置は、たとえば、ディスプレイを含むヘルメットまたはその他のヘッドマウントデバイス、ユーザがディスプレイ装置を見るときに用いる眼鏡またはゴーグル、センサが装着された手袋、センサを含む外部ハンドヘルドデバイス、およびその他のこのような電子装置などである。３Ｄ仮想環境に没入すると、ユーザは、電子装置の物理的な動きおよび／または操作を通して仮想環境の中を動いて、仮想環境と対話し、仮想環境との対話を個人専用にすることができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
ある局面において、方法は、コンピューティングシステムの処理回路が、ユーザが居る物理環境内のユーザが持っている入力コントローラの第１の６自由度（６ＤＯＦ）の動きを示す第１の動きデータを受信することを含み得る。当該方法はさらに、処理回路が、物理環境内の入力コントローラの第１の６ＤＯＦの動きに基づいてスケーリング係数を生成することを含み得る。当該方法はさらに、第１の動きデータを受信した後、処理回路が、ある期間にわたる物理環境内の入力コントローラの第２の６ＤＯＦの動きを示す第２の動きデータを受信することを含み得る。当該方法はさらに、第２の動きデータを受信したことに応答して、処理回路が、オブジェクト動き操作を実行して仮想環境内のオブジェクトのスケーリングされた動きを生成することを含み得、オブジェクト動き操作は、第２の６ＤＯＦの動きに対応する仮想環境内のオブジェクトの動きにスケーリング係数を掛けて、仮想環境内のオブジェクトのスケーリングされた動きを生成することを含む。
【０００５】
１つ以上の実現例の詳細を添付の図面および以下の説明に記載する。その他の特徴は、説明および図面から、ならびに特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【０００６】
【図１Ａ】例示的な実現例に係る入力コントローラの第１の６ＤＯＦの位置を示す図である。
【図１Ｂ】例示的な実現例に係る入力コントローラの第２の６ＤＯＦの位置を示す図である。
【図１Ｃ】例示的な実現例に係る例示的な６ＤＯＦの動きおよびスケーリング係数を示す図である。
【図２】本明細書に記載される実現例に従うヘッドマウントディスプレイおよびハンドヘルド電子装置を含む仮想現実システムの例示的な実現例の図である。
【図３Ａ】本明細書に記載される実現例に従う例示的なヘッドマウントディスプレイデバイスの斜視図である。
【図３Ｂ】本明細書に記載される実現例に従う例示的なヘッドマウントディスプレイデバイスの斜視図である。
【図３Ｃ】本明細書に記載される実現例に従う例示的なハンドヘルド電子装置を示す図である。
【図４Ａ】本明細書に記載される実施形態に従うヘッドマウント電子装置およびハンドヘルド電子装置のブロック図である。
【図４Ｂ】本明細書に記載される実施形態に従うヘッドマウント電子装置およびハンドヘルド電子装置のブロック図である。
【図５】例示的な実現例に係る仮想現実システムの動作を示すフローチャートの図である。
【図６Ａ】本明細書に記載される実現例に従う拡張および／または仮想現実環境におけるユーザおよび／または仮想特徴の動きおよびスケーリングを示す第三者視点図である。
【図６Ｂ】本明細書に記載される実現例に従う拡張および／または仮想現実環境におけるユーザおよび／または仮想特徴の動きおよびスケーリングを示す第三者視点図である。
【図６Ｃ】本明細書に記載される実現例に従う拡張および／または仮想現実環境におけるユーザおよび／または仮想特徴の動きおよびスケーリングを示す第三者視点図である。
【図６Ｄ】本明細書に記載される実現例に従う拡張および／または仮想現実環境におけるユーザおよび／または仮想特徴の動きおよびスケーリングを示す第三者視点図である。
【図７】本明細書に記載される技術を実現するために用いられ得るコンピュータデバイスおよびモバイルコンピュータデバイスの例を示す図である。
【発明を実施するための形態】
【０００７】
詳細な説明
たとえばヘッドマウントディスプレイ（head mounted display：ＨＭＤ）デバイスを装着して拡張および／または仮想現実環境に没入しているユーザは、仮想環境（たとえば３次元（３Ｄ）仮想環境）を探検することができ、多種多様な入力を通して仮想環境と対話することができる。仮想環境への言及は、仮想要素によって拡張された物理環境を含み得る。これらの入力は、たとえば物理的な対話を含み得る。物理的な対話は、たとえば、ＨＭＤとは別の入力コントローラなどの電子装置の操作、電子装置の動き、電子装置のタッチセンシティブ面に触れることなどに基づいて電子装置によって発せられる光線もしくはビームおよび／もしくは仮想環境でレンダリングされる仮想ビームを介するなどした電子装置の操作、ならびに／またはＨＭＤ自体の操作、ならびに／または手／腕のジェスチャ、頭部の動きおよび／もしくは頭部および／もしくは目の方向性の注視などを含む。ユーザは、これらのさまざまなタイプの対話の１つ以上を実践して、たとえば、仮想環境の中を動くこと、および、仮想環境の第１の領域から仮想環境の第２の領域に、または第１の仮想環境から第２の仮想環境に移動、移行、またはテレポートすることなど、仮想環境において特定のアクションを実行することができる。
【０００８】
本明細書に開示される仮想環境におけるオブジェクトの動きを制御する技術は、ユーザが持っている入力コントローラの以前の動きに基づいて生成されたスケーリング係数に基づいて仮想環境におけるオブジェクトの動きを定義することを伴う。この観点に沿って、ユーザは、６自由度（６ＤＯＦ）の動き経路に沿って入力コントローラを動かして第１の動きデータを生成する。この６ＤＯＦの動き経路に基づいて、コンピューティングシステムは、次の動作で用いられるジッタ減少量を示すスケーリング係数を生成する。したがって、新たな６ＤＯＦの動き経路を示す第２の動きデータを受信したことに応答して、コンピューティングシステムは、オブジェクト動き操作を実行して、仮想環境におけるオブジェクトのスケーリングされた動きを生成する。
【０００９】
図１Ａおよび図１Ｂは、例示的な実現例に係るハンドヘルド入力コントローラの６自由度（６ＤＯＦ）の位置を示す図である。ユーザは、ハンドヘルド入力コントローラ１２を用いてさまざまなジェスチャまたは動きを実行して、たとえばＨＭＤを介してユーザに提示され得る仮想環境と対話することができる。入力コントローラ１２の使用中または操作中、入力コントローラ１２の状態は時間とともに変化し得る。入力コントローラ１２の状態は、３次元の位置座標（ｘ、ｙおよびｚ座標）によって識別され得る入力コントローラ１２の位置（または場所）と、入力コントローラの角位置（ピッチ、ヨー、ロール）または向きの方向（たとえば、入力コントローラ１２がどの方向を向いているか）であり得る入力コントローラ１２の向きとの、少なくとも一方（または両方）を含み得る。たとえば、入力コントローラ１２の向きは、入力コントローラ１２が向けられている単位球面上の点として識別され得る。たとえば、時間ｔ１では、入力コントローラ１２は、位置（ｘ１，ｙ１，ｚ１）および向き１の向きを含み得る状態１であり得る。時間ｔ２では、入力コントローラ１２は動いており、位置２（ｘ２，ｙ２，ｚ２）および向き２の向きを含む状態２になっている。
【００１０】
場合によっては、物理環境１０における入力コントローラ１２の比較的小さい動き（たとえば小さい状態の変化）によって、仮想環境における大きい、場合によっては意図しない動きまたは変化が生じる場合がある。たとえば、ユーザは、入力コントローラ１２上のボタンまたはトリガを選択してまたは作動させて入力コントローラ１２から光線を発生または生成することができ、当該光線は仮想環境における建物または動かすべきその他のオブジェクトに向けられ得る。しかし、入力コントローラの小さい（たとえば意図しない）動き（たとえば、震えている手、または少し不安定な手）によって、仮想環境における光線の先端、またはコントローラ１２からより離れた位置にあり得る建物もしくはオブジェクトの大きい動きが生じる場合がある。物理環境における入力コントローラのこれらの比較的小さい動きは、ジッタと同様であり得るか、または意図しない動きもしくは震えであり得る。たとえば、仮想環境に登録されることになる物理環境における入力コントローラ１２の少なくともいくらかの動きをフィルタリングするまたは減衰させる（たとえば減少させる）ことによって、入力コントローラを安定させることが望ましい場合がある。
【００１１】
例示的な実現例によると、スケーリング係数（または重み係数）が求められ得る。そして、たとえば、物理環境における入力コントローラ１２の動き（または状態の変化）の一部のみが、スケーリング係数に基づいて仮想環境に登録され得る。入力コントローラの動きを（たとえば仮想現実システムまたはＨＭＤの内部で）仮想環境に登録することは、たとえば、仮想環境における入力コントローラ１２の動きを表示すること、または物理環境における入力コントローラ１２の動きに基づいて仮想環境の変化を表示すること、または物理環境における入力コントローラ１２の動きに基づいて仮想環境の変化を処理することを含み得る。このように、物理環境における入力コントローラ１２の動きの一部のみを（たとえばスケーリング係数に基づいて）仮想環境に登録することによって、たとえば物理環境における入力コントローラ１２の少なくともいくらかの動きについて、入力コントローラ１２の動き（もしくは物理環境における入力コントローラ１２の動きの結果）を安定させることができ、および／またはジッタもしくは入力コントローラの不安定性を減少させることができる。
【００１２】
例示的な実現例によると、仮想環境に登録される物理環境における入力コントローラ１２の動きを減衰または減少させるために用いられ得る、少なくとも１つのフィルタが設けられ得る。例示的な実現例によると、当該フィルタは、たとえば０から１のスケーリング係数（重み係数とも称され得る）を含み得る。例示的な実現例によると、スケーリング係数は、入力コントローラ１２の最初の状態からの物理環境における入力コントローラの累積的な動き量（たとえば累積的な状態の変化）に基づいて選択され得るかまたは求められ得る。たとえば、入力コントローラ１２の最初の状態（たとえば、最初の位置および／または最初の向きを含む）は、ユーザが入力コントローラ１２を用いてジェスチャを開始すると求められ得る。新たなジェスチャが開始されると、別の最初の状態が求められる。ジェスチャは、たとえば、説明的な例として、入力コントローラ１２上の入力、ボタンもしくはトリガが選択もしくは作動されると、または入力コントローラを用いる素早い動きもしくは特定の動きが始まると開始され得る。
【００１３】
本明細書に記載される減衰または安定化技術は、アクティブなジェスチャの間はアクティブであり得、たとえば、ジェスチャの開始時に入力コントローラ１２の最初の状態が求められた後に開始し得る。したがって、本明細書に記載される減衰または安定化技術は、たとえば、ユーザがトリガを押してまたはボタンを作動させて／押下して、たとえばドラッグするまたは動かすオブジェクトを選択した後にアクティブ（または動作中）となり得る。したがって、本明細書に記載される減衰または安定化技術は、ユーザがトリガを押して（またはその他の選択を行なって）入力コントローラを（たとえば）ドラッグモードにすると、または仮想環境におけるオブジェクトを操作もしくは制御するためのその他のモードにすると、アクティブになり得る。入力コントローラ１２を用いて仮想環境におけるオブジェクトを動かすまたは操作する場合、これによって、物理環境における入力コントローラの物理的な動きに基づいて（たとえばフィルタの使用またはスケーリング係数に基づいて）動きを仮想環境に登録する際の時間の遅延（またはずれ）に基づいて、操作またはドラッグされているオブジェクトの重みをシミュレートできるという付加的な利点も提供され得る。
【００１４】
物理環境における入力コントローラ１２の累積的な動き（または累積的な動き量）は、たとえば、入力コントローラ１２の最初の状態から物理環境において入力コントローラ１２によって起こった動きの量として求められ得る。したがって、たとえば、累積的な動きは、最初の状態からの（たとえばジェスチャが開始してからの）入力コントローラ１２の累積的な状態の変化を含み得る。累積的な動き（または累積的な動き量）は、たとえば、物理環境における入力コントローラ１２の最初の状態と、物理環境における入力コントローラ１２の現在の状態とに基づく、物理環境における入力コントローラの累積的な状態の変化として求められ得る。たとえば、単純な例では、累積的な状態の変化は、入力コントローラの最初の状態から入力コントローラの現在の状態を引くことによって求められ得る。
【００１５】
別の例示的な例では、向きの変化は、物理環境における入力コントローラ１２の２つの向き（第１の向きおよび第２の向き）の間の角度または位相の線形変化として求められ得る。同様に、物理環境における入力コントローラ１２の位置の（第１の位置から第２の位置までの）変化は、たとえば、入力コントローラ１２の２つの位置（たとえば位置２、位置１）の間の直線距離として求められ得る。したがって、たとえば、物理環境における入力コントローラ１２の第１の位置が位置１（ｘ１，ｙ１，ｚ１）であり、第２の位置が位置２（ｘ２，ｙ２，ｚ２）である場合は、入力コントローラ１２の直線距離（位置の変化）は２乗の合計の平方根として求められ得る：
【００１６】
【数１】
0006929361.tif 000002
【００１７】
例示的な実現例によると、ジッタを減少させるために、または入力コントローラの安定化を助けるために、最初の状態からの物理環境における入力コントローラ１２の６ＤＯＦの動き（の量）に応じて、さまざまなスケーリング係数が用いられ得る。たとえば、６ＤＯＦの動きが小さいまたは閾値未満である場合は低い（または小さい）スケーリング係数が用いられ得るが、物理環境における入力コントローラ１２の６ＤＯＦの動きが閾値よりも大きい場合は高い（または大きい）スケーリング係数が用いられ得る。たとえば、６ＤＯＦの動きが第１の閾値未満（たとえば３インチ未満）である場合はスケーリング係数０．２が用いられ得、６ＤＯＦの動きが第１の閾値よりも大きい場合はスケーリング係数０．６が用いられ得る。追加の閾値および追加のスケーリング係数が用いられてもよい。これらは単にいくつかの例示的なスケーリング係数であり、その他のスケーリング係数が用いられてもよい。これらは、スケーリング係数が固定しているまたは静的である静的フィルタまたは静的スケーリング係数のいくつかの例である。しかし、たとえば、６ＤＯＦの動きが変化するにつれてスケーリング係数が線形にまたは非線形に変化する、たとえば増加する場合は、動的フィルタまたは動的スケーリング係数も用いられてもよい。
【００１８】
図１Ｃは、例示的な実現例に係る例示的なフィルタおよびスケーリング係数を示す図である。図１Ｃに示される例は、３つのフィルタの使用を示している。したがって、たとえば、図１Ｃの説明的な例に示されるように、距離Ａ（たとえば８センチメートル）未満である物理環境における入力コントローラ１２の累積的な動きまたは累積的な状態の変化については、固定／静的スケーリング係数Ｎ（たとえば０．２）を有する静的フィルタ２０が用いられる。距離ＢとＣ（たとえば８センチメートルと２０センチメートル）の間の入力コントローラの６ＤＯＦの動きについては、ＮとＭ（たとえば０．２と０．６）の間で変化する線形変化スケーリング係数を有する動的フィルタ２２が用いられる。そして、Ｃ（たとえば２０センチメートル）よりも大きい物理環境における入力コントローラの６ＤＯＦの動きについては、静的／固定スケーリング係数Ｆ（たとえば０．６）を有する静的フィルタ２４が用いられる。
【００１９】
このように、物理環境における（入力コントローラ１２のジッタまたは意図しない揺れなどの小さな動きについては、入力コントローラ１２の動きまたは状態の変化は典型的に小さくなり、たとえば第１の閾値（たとえば３インチ）未満となり、物理環境における入力コントローラの第１の６ＤＯＦの動きの２０％（スケーリング係数＝０．２に基づく）のみが仮想環境に登録されることになる。６ＤＯＦの動き（たとえば、最初の状態からの入力コントローラ１２の位置または向きの変化）が増加するにつれて（たとえば８ｃｍよりも大きくなるまたは２０ｃｍよりも大きくなると）、コントローラ減衰のために用いられるスケーリング係数は（動的フィルタ２２または静的フィルタ２４のいずれかを介して）増加するため、入力コントローラ１２のより大量の６ＤＯＦの動きが登録されることになる。上述のように、６ＤＯＦの動きは、現在のまたは最近の期間にわたる物理環境における入力コントローラ１２の６ＤＯＦの位置の変化（たとえば、最後のフレームがＨＭＤのディスプレイに表示されてからの物理環境における入力コントローラ１２の位置の変化または向きの変化）であり得る。
【００２０】
入力コントローラ１２の現在の６ＤＯＦの位置の変化は、たとえば、物理環境における入力コントローラの現在の６ＤＯＦの位置（たとえば現在の位置または現在の向き）に基づいて、かつ物理環境における入力コントローラの（以前の期間、以前のサンプリング期間、または以前のフレーム中の）以前の６ＤＯＦの位置に基づいて（または以前の６ＤＯＦの位置に対して）、物理環境における入力コントローラ１２の現在の６ＤＯＦの位置の変化（たとえば現在の位置または向きの変化）を求めることによって求められ得る。たとえば、現在の６ＤＯＦの位置の変化は、現在のおよび以前の６ＤＯＦの位置の（ｘ、ｙまたはｚ軸内の）２つの対応する位置値を引くことによって求められ得る。入力コントローラ１２の６ＤＯＦの位置の変化は、（たとえば入力コントローラを用いるジェスチャの開始であり得る）最初の６ＤＯＦの位置からの入力コントローラ１２の６ＤＯＦの位置の変化として求められ得、最初の６ＤＯＦの位置は以前の６ＤＯＦの位置よりも前であり得る。ジェスチャの開始時あたりでは、以前の６ＤＯＦの位置および最初の６ＤＯＦの位置は同一のＤＯＦの位置であり得る。したがって、６ＤＯＦの動きは、たとえば、入力コントローラの最初の６ＤＯＦの位置および入力コントローラの現在の６ＤＯＦの位置に基づいて物理環境における入力コントローラ１２の６ＤＯＦの位置の変化を求めることによって求められ得、現在の動きまたは現在の状態の変化は、たとえば、入力コントローラの以前の６ＤＯＦの位置および入力コントローラの現在の６ＤＯＦの位置に基づいて求められ得る。
【００２１】
例示的な実現例によると、スケーリング係数は、現在の動き（たとえば、最近のもしくは現在の期間にわたる物理環境における入力コントローラ１２の動き）、または現在の６ＤＯＦの位置の変化（たとえば、ＨＭＤ上の最後のフレームの表示からの入力コントローラ１２の状態の変化などの、入力コントローラ１２の位置の変化または向きの変化）のどれくらいが仮想環境に登録されるかを決定し得る。一例では、スケーリング係数に物理環境における現在の６ＤＯＦの位置の変化または現在の動きを掛けて、仮想環境に登録されることになる６ＤＯＦの位置の変化の量または入力コントローラ１２の動きの量が求められ得る。たとえば、入力コントローラ１２が現在のまたは最近の期間中に（たとえば最後のフレームから）ｘ＝０からｘ＝３ｃｍまで右に動いており、０．２のスケーリング係数が選択されている場合は、入力コントローラの動き＝（スケーリング係数）（現在の位置の変化）＝（０．２）（３ｃｍ）＝仮想環境における．６ｃｍの動きを意味する。つまり、ｘ軸における．６ｃｍの入力コントローラの動きが仮想環境に登録されることになる。
【００２２】
例示的な実現例では、仮想環境に登録されることになる６ＤＯＦの位置の変化（たとえば位置の変化または向きの変化）の量は、入力コントローラ１２の現在の６ＤＯＦの位置と以前の６ＤＯＦの位置との間で（スケーリング係数に基づいて）重み付けられた線形補間を実行することによって求められ得る。スケーリング係数が小さいほど、補間は以前の状態を優先してより重く重み付けられる（その結果、現在の動きのより少ない量または以前の状態からの現在の６ＤＯＦの位置の変化のより少ない量が仮想環境に登録される）ことを意味し、スケーリング係数が大きいほど、補間は現在の６ＤＯＦの位置を優先してより重く重み付けられる（その結果、現在の動きまたは現在の状態の変化のより多い量が仮想環境に登録される）ことを意味する。したがって、たとえば、小さい累積的な動き／６ＤＯＦの位置の変化については大きいスケーリング係数を用いて、仮想環境に登録されるいずれの現在の動きも減衰または減少させることができる。また、物理環境における入力コントローラ１２の累積的な動きまたは６ＤＯＦの位置の累積的な変化が増加するにつれて、たとえばより大きいスケーリング係数を使用または選択して減衰を減少させることができるため、物理環境における入力コントローラの現在の動きまたは現在の６ＤＯＦの位置の変化のより多くを仮想環境に登録することができる。入力コントローラ１２の６ＤＯＦの位置の累積的な変化を求め、入力コントローラの現在の６ＤＯＦの位置の変化を求め、スケーリング係数を求め、スケーリング係数に基づいて現在の動きまたは現在の６ＤＯＦの位置の変化の一部を登録する処理は、フレーム毎に繰返され得る（または、ＨＭＤを介してユーザに表示されるフレーム毎に繰返され得る）。
【００２３】
図２に示される例示的な実現例では、ＨＭＤ１００を装着しているユーザが、携帯型ハンドヘルド電子装置１０２を持っている。入力コントローラとも称され得るハンドヘルド電子装置１０２は、たとえば、ＨＭＤ１００が生成する没入型仮想環境での対話のためにＨＭＤ１００とペアリングされ得るかもしくはＨＭＤ１００と通信し得るスマートフォン、コントローラ、ジャイロマウス、ジョイスティック、またはその他の携帯型ハンドヘルド電子装置であってもよい。ハンドヘルド電子装置１０２は、たとえば、有線接続、またはたとえばＷｉＦｉもしくはブルートゥース（登録商標）接続などの無線接続を介して、ＨＭＤ１００に作動的に結合され得るかまたはＨＭＤ１００とペアリングされ得る。ハンドヘルド電子装置１０２とＨＭＤ１００とのこのペアリングまたは作動的な結合は、ハンドヘルド電子装置１０２とＨＭＤ１００との間の通信およびデータ交換を提供し得、ハンドヘルド電子装置１０２が、ＨＭＤ１００が生成する没入型仮想環境で対話するコントローラとして機能することを可能にし得る。すなわち、たとえば、選択する仮想オブジェクトもしくは特徴に向けて方向付けられたハンドヘルド電子装置１０２によって発せられる仮想ビームもしくは光線を生成するためのハンドヘルド電子装置１０２の操作、および／またはハンドヘルド電子装置１０２のタッチ面上で受信する入力、および／またはハンドヘルド電子装置１０２の動きは、ＨＭＤ１００が生成する没入型仮想環境における対応する選択、または動き、またはその他のタイプの対話に変換され得る。たとえば、ＨＭＤ１００は、ハンドヘルド電子装置１０２とともに、上述のような仮想環境を生成し得、ハンドヘルド電子装置１０２は、上述のような仮想環境における仮想特徴に対してユーザのスケールまたは視点の変更をもたらすように操作され得る。
【００２４】
図３Ａおよび図３Ｂは、たとえば図１のユーザが装着しているＨＭＤ１００のような例示的なＨＭＤの斜視図であり、図３Ｃは、たとえば図１に示されるハンドヘルド電子装置１０２のような例示的なハンドヘルド電子装置を示す。
【００２５】
ハンドヘルド電子装置１０２は、装置１０２の内部部品が収容される筐体１０３と、ユーザがアクセスできる、筐体１０３の外側のユーザインターフェイス１０４とを含み得る。ユーザインターフェイス１０４は、ユーザタッチ入力を受信するように構成されたタッチセンシティブ面１０６を含み得る。ユーザインターフェイス１０４は、たとえば、作動ボタン、ノブ、ジョイスティックなどの、ユーザが操作するその他の部品も含み得る。いくつかの実現例では、ユーザインターフェイス１０４の少なくとも一部はタッチスクリーンとして構成され得、ユーザインターフェイス１０４のその一部は、ユーザインターフェイス項目をユーザに対して表示するように、かつタッチセンシティブ面１０６上でユーザからのタッチ入力を受信するように構成される。ハンドヘルド電子装置１０２はさらに、筐体１０３のポートを通って選択的に発光するように構成された光源１０８と、ユーザが操作可能なその他の操作装置１０５とを含み得る。
【００２６】
ＨＭＤ１００は、フレーム１２０に結合された筐体１１０を含み得、さらに、たとえばヘッドフォンに搭載されたスピーカを含む音声出力装置１３０がフレーム１２０に結合されている。図３Ｂにおいて、筐体１１０の前部１１０ａは、筐体１１０に収容されている部品の一部が見えるように、筐体１１０の基部１１０ｂから回転させられている。ディスプレイ１４０が、筐体１１０の前部１１０ａの内部に面する側に装着されてもよい。レンズ１５０が、筐体１１０の内部において、前部１１０ａが筐体１１０の基部１１０ｂに対して閉じられた位置にあるときにユーザの目とディスプレイ１４０との間になるように装着されてもよい。いくつかの実現例では、ＨＭＤ１００は、さまざまなセンサを含む検知システム１６０と、プロセッサ１９０およびＨＭＤ１００の操作を容易にするさまざまな制御システム装置を含む制御システム１７０とを含み得る。
【００２７】
いくつかの実現例では、ＨＭＤ１００は、静止画および動画を撮影するカメラ１８０を含み得る。カメラ１８０が撮影した画像は、現実世界におけるユーザおよび／もしくはハンドヘルド電子装置１０２の物理的な位置の追跡を助けるために用いられてもよく、ならびに／またはユーザに対してパススルーモードでディスプレイ１４０に表示することで、ユーザが、ＨＭＤ１００を外すことなく、そうでなければＨＭＤ１００の構成を変更して筐体１１０を動かしてユーザの視線から外すことなく、仮想環境を一時的に出て物理環境に戻ることができるようにしてもよい。
【００２８】
いくつかの実現例では、ＨＭＤ１００は、ユーザの目の注視を検出して追跡する注視追跡装置１６５を含み得る。注視追跡装置１６５は、たとえば瞳孔などのたとえばユーザの目の特定の部分などのユーザの目の画像を撮影して、ユーザの注視の方向および動きを検出して追跡する、たとえば１つまたは複数の画像センサ１６５Ａを含み得る。いくつかの実現例では、ＨＭＤ１００は、検出された注視が、没入型仮想体験における対応する対話に変換されることになるユーザ入力として処理されるように構成され得る。
【００２９】
拡張および／または仮想現実環境におけるテレポーテーションおよびスケーリングを提供するシステムのブロック図を図４Ａに示す。当該システムは、第２の電子装置４０２と通信する第１の電子装置４００を含み得る。第１の電子装置４００は、たとえば、没入型仮想環境を生成する、図２、図３Ａおよび図３Ｂに関して上述したようなＨＭＤであってもよく、第２の電子装置４０２は、たとえば、第１の電子装置４００と通信して、第１の電子装置４００が生成する没入型仮想環境とのユーザ対話を容易にする、図２および図３Ｃに関して上述したようなハンドヘルド電子装置であってもよい。
【００３０】
第１の電子装置４００は、検知システム４６０および制御システム４７０を含み得る。これらのシステムは、図３Ａおよび図３Ｂに示される検知システム１６０および制御システム１７０とそれぞれ同様であってもよい。検知システム４６０は、たとえば、光センサ、音声センサ、画像センサ、距離／近接センサ、ならびに／または、たとえば、図３Ｂに示される注視追跡装置１６５などの、ユーザの目の注視を検出して追跡するように位置決めされた画像センサを含む、その他のセンサおよび／もしくはセンサの各種組合せを含む、１つ以上の異なるタイプのセンサを含み得る。制御システム４７０は、たとえば、電源／停止制御装置、音声およびビデオ制御装置、光学制御装置、遷移制御装置、ならびに／またはその他のこのような装置および／もしくは装置の各種組合せを含み得る。検知システム４６０および／または制御システム４７０は、特定の実現例に応じて、より多いまたはより少ない装置を含んでもよい。検知システム４６０および／または制御システム４７０に含まれる要素は、たとえば、図３Ａおよび図３Ｂに示されるＨＭＤ１００以外のＨＭＤの内部に、異なる物理的な配置（たとえば物理的な位置）を有してもよい。第１の電子装置４００はさらに、検知システム４６０および制御システム４７０と通信するプロセッサ４９０と、メモリ４８０と、第１の電子装置４００とたとえば第２の電子装置４０２などの別の外部装置との間の通信を提供する通信モジュール４５０とを含み得る。
【００３１】
プロセッサ４９０は、１つ以上の処理チップおよび／またはアセンブリを含む。メモリ４８０は、揮発性メモリ（たとえばＲＡＭ）と、１つ以上のＲＯＭ、ディスクドライブ、ソリッドステートドライブなどの不揮発性メモリとの両方を含む。プロセッサ４９０およびメモリ４８０はともに制御回路を形成し、当該制御回路は、本明細書に記載されているようなさまざまな方法および機能を実行するように構成および配置される。いくつかの実現例では、第１の電子装置４００のコンポーネントの１つ以上は、メモリ４８０に記憶された命令を処理するように構成されたプロセッサ（たとえばプロセッサ４９０）であってもよく、または当該プロセッサを含んでもよい。
【００３２】
図４Ｂは、第１の電子装置４００のメモリ４８０のより詳細な図を示す。図４Ｂは、メモリ４８０に記憶された例示的な命令を示しており、メモリ４８０は、累積的な動きデータマネージャ４８１と、スケーリング係数マネージャ４８３と、現在の動きデータマネージャ４８５と、オブジェクト動きマネージャ４８７とを含む。さらに、図１に示されるように、メモリ４８０はさまざまなデータを記憶するように構成され、当該データは、このようなデータを用いるそれぞれのマネージャに関して記載される。
【００３３】
以前の動きデータマネージャ４８１は、ユーザが居る物理環境内のユーザが持っている入力コントローラの第１の６ＤＯＦの動きを示す累積的な動きデータ４８２を受信するように構成される。たとえば、以前の動きデータ４８２は、所与の時間間隔にわたる最初の６ＤＯＦの位置および最後の６ＤＯＦの位置を表わし得る。いくつかの実現例では、以前の動きデータ４８２はユークリッド長を表わし得る。
【００３４】
スケーリング係数マネージャ４８３は、以前の動きデータ４８２に基づいて、スケーリング係数を含むスケーリング係数データ４８４を生成するように構成される。たとえば、スケーリング係数マネージャ４８３は、いくつかの実現例では、図１Ｂに示されるようにスケーリング係数を生成するように構成される。いくつかの実現例では、スケーリング係数マネージャ４８３は、図１Ｂに示されるように２つの閾値ではなく１つの閾値に基づいてスケーリング係数を生成するように構成される。いくつかの実現例では、スケーリング係数マネージャ４８３は、空間変位に加えて、または空間変位の代わりに、角変位に基づいてスケーリング係数を生成するように構成される。
【００３５】
現在の動きデータマネージャ４８５は、ユーザが居る物理環境内のユーザが持っている入力コントローラの第２の６ＤＯＦの動きを示す現在の動きデータ４８６を受信するように構成される。たとえば、現在の動きデータ４８６は、ジェスチャの開始時の６ＤＯＦの位置およびジェスチャの終了時の最後の６ＤＯＦの位置を表わし得る。いくつかの実現例では、現在の動きデータ４８６はユークリッド長を表わし得る。
【００３６】
オブジェクト動きマネージャ４８５は、現在の動きデータ４８６を受信したことに応答して、オブジェクト動き操作を実行してオブジェクト動きデータ４８８を生成するように構成され、これは、スケーリング係数データ４８４に基づいて現在の動きデータ４８８によって表わされるような第２の６ＤＯＦの動きの一部である。
【００３７】
図４Ａに戻って、第２の電子装置４０２は、第２の電子装置４０２とたとえば第１の電子装置４００などの別の外部装置との間の通信を提供する通信モジュール４０６を含み得る。第１の電子装置４００と第２の電子装置４０２との間のデータ交換を提供するのに加えて、通信モジュール４０６は、上述のような光線またはビームを発して電子信号を通信するようにさらに構成されてもよい。第２の電子装置４０２は検知システム４０４を含み得る。検知システム４０４は、たとえばカメラおよびマイクに含まれるような、画像センサおよび音声センサ、たとえば加速度計および／またはジャイロスコープおよび／または磁気計を含む慣性測定装置、ハンドヘルド電子装置またはスマートフォンのタッチセンシティブ面に含まれるようなタッチセンサ、ならびにその他のこのようなセンサおよび／またはセンサの各種組合せを含む。プロセッサ４０９は、第２の電子装置４０２の検知システム４０４およびコントローラ４０５と通信し得、コントローラ４０５はメモリ４０８へのアクセスを有し、第２の電子装置４０２の全体的な動作を制御する。
【００３８】
上述のように、たとえば上記のハンドヘルド電子装置１０２のようなコントローラが、仮想環境における対話およびナビゲーションのためにユーザによって操作され得る。仮想環境内をナビゲートする際、ユーザはハンドヘルド電子装置１０２を選択すべき仮想特徴に向けて方向付け得るか、または向け得、たとえばハンドヘルド電子装置１０２のセンサが生成する向き情報に基づいて、仮想ビームが当該システムによって生成されて、ユーザが選択すべき仮想特徴および／または場所が識別され得る。いくつかの実現例では、光源１０８は光線またはビームを選択すべき仮想特徴または項目に向けて方向付け得、光源１０８が生成する光線またはビームはシステムによって（たとえばＨＭＤ１００上のカメラによって）検出され得、検出された光線またはビームのレンダリングが、仮想特徴を選択するために仮想環境においてユーザに表示され得る。
【００３９】
図５は、例示的な方法５００を示すフローチャートである。方法５００は、第１の電子装置４００のメモリ４８０内にあり、かつプロセッサ４９０によって実行される、図４Ａおよび図４Ｂに関連して説明したソフトウェア構造体によって実行され得る。
【００４０】
５０２において、第１の電子装置４００は、ユーザが居る物理環境内のユーザが持っている入力コントローラの第１の６自由度（６ＤＯＦ）の動きを示す以前の動きデータを受信する。
【００４１】
５０４において、第１の電子装置４００は、物理環境内の入力コントローラの第１の６ＤＯＦの動きに基づいてスケーリング係数を生成する。
【００４２】
５０６において、累積的な動きデータを受信した後、第１の電子装置４００は、ある期間にわたる物理環境内の入力コントローラの第２の６ＤＯＦの動きを示す現在の動きデータを受信する。
【００４３】
５０８において、現在の動きデータを受信したことに応答して、第１の電子装置４００は、オブジェクト動き操作を実行して、ユーザがディスプレイ上で見る仮想環境内のオブジェクトの６ＤＯＦの動きを生成する。仮想環境内のオブジェクトの６ＤＯＦの動きは、スケーリング係数に基づく入力コントローラの第２の６ＤＯＦの動きの一部である。
【００４４】
図６Ａに示されるように、仮想環境内の位置Ａ（仮想位置と称され得る）にいる仮想環境内のユーザは、たとえば、図６Ｂに示されるように、上述のようなハンドヘルド電子装置１０２が生成する仮想ビームを、仮想位置Ｂにある仮想特徴６５０に向けて方向付けることによって、仮想環境内の位置Ｂ（仮想位置とも称され得る）に移動することを選択し得る。たとえば、仮想位置Ｂにある仮想特徴６５０に向けてビームを方向付けるボタンを離すなど、ハンドヘルド電子装置１０２をさらに操作すると、図６Ｃに示されるように、ユーザは仮想位置Ｂに移され得るか、またはテレポートされ得るか、または移送され得る。図６Ａ〜図６Ｃに示される例では、ユーザは、上述のように仮想環境における仮想特徴に対して自身のスケールまたは視点を調整することを選択していない。したがって、この例では、ユーザは、仮想位置Ａにおける場合と（仮想環境における特徴に対して）本質的に同一のスケールで、仮想位置Ｂに移されるか、またはテレポートされるか、または移送される。
【００４５】
いくつかの実現例では、たとえばハンドヘルド電子装置１０２を介したユーザによる入力に応答した仮想位置Ａから仮想位置Ｂへのユーザの移動は本質的に即時であってもよく、ユーザは、ある瞬間には仮想位置Ａにいて、次の瞬間には仮想位置Ｂにいるため、仮想位置Ａから仮想位置Ｂへの移動を実質的に即時であるとユーザに感じさせることができる。いくつかの実現例では、ユーザは、仮想位置Ａから仮想位置Ｂまで実際に空中をおよび／または地形の上を移動しているかのように、仮想位置Ａから仮想位置Ｂへのユーザの移動の動的な仮想アニメーション化を体験するため、仮想位置Ａから仮想位置Ｂに移動する際に、より連続的な仮想体験をユーザに提供することができる。
【００４６】
いくつかの実現例では、仮想位置Ａから仮想位置Ｂへのユーザの移動が実質的に即時であるか、ユーザが仮想位置Ａから仮想位置Ｂに移動する際に動的な仮想アニメーション化を体験するかにかかわらず、ユーザは、仮想位置Ｂに到着して、急に止まるのではなくゆっくりと止まることができる。この（急な到着、または停止ではなく）ゆっくりとした停止は、仮想位置Ａから仮想位置Ｂに移動する際にユーザの勢いの感覚を維持することができ、仮想位置Ｂにおける仮想環境へのより自然な移行をユーザに与えることができる。
【００４７】
いくつかの状況では、ユーザは、仮想環境における仮想特徴に対して自身のスケールを増減させること、またはユーザに対して仮想環境における仮想特徴のサイズをスケーリングする（すなわち増減させる）ことを望む場合がある。この仮想環境に対するユーザのサイズの仮想的なスケーリング、またはユーザに対する仮想環境における仮想特徴の仮想的なスケーリングは、仮想環境における第１の仮想位置または場所から第２の仮想位置または場所に移動しながら行なうことができるため、ユーザの視点または視野をユーザの選択に応じてスケーリングまたは調整することができる。ユーザの視点または視野が新たに選択されたスケーリングされたサイズにスケーリングされるように、ユーザが第１の仮想位置から第２の仮想位置に移動（たとえばテレポート、移送）することを可能にする、および／またはユーザが仮想環境の仮想特徴に対してユーザのサイズをスケーリングする（もしくはユーザに対して仮想環境における仮想特徴のサイズをスケーリングする）ことを可能にする仮想現実システムの例示的な実現例を図５Ａに示す。
【００４８】
図６Ｄに示されるように、第２の仮想位置Ｂにある特徴６５０に対して第１の仮想位置Ａに位置しているユーザは、たとえば、ハンドヘルド電子装置１０２を操作して、ユーザが第２の位置Ｂにある特徴６５０に移動することを望んでいることを示すことができる。このハンドヘルド電子装置１０２の操作によって、たとえば、当該装置は第２の仮想位置Ｂにある特徴６５０に焦点を合わせたビーム６００を生成して、ユーザが選択された特徴６５０に対応する第２の仮想位置Ｂに移動（たとえばテレポート、移送）することを望んでいることを示すことができる。
【００４９】
図７は、本明細書に記載される技術とともに用いられ得る一般的なコンピュータデバイス７００および一般的なモバイルコンピュータデバイス７５０の例を示す。コンピューティングデバイス７００は、ラップトップ、デスクトップ、タブレット、ワークステーション、携帯情報端末、テレビ、サーバ、ブレードサーバ、メインフレーム、およびその他の適切なコンピューティングデバイスといった、さまざまな形態のデジタルコンピュータを表わすよう意図されている。コンピューティングデバイス７５０は、携帯情報端末、携帯電話、スマートフォン、およびその他の同様のコンピューティングデバイスといった、さまざまな形態のモバイルデバイスを表わすよう意図されている。ここに示されるコンポーネント、それらの接続および関係、ならびにそれらの機能は、単なる例示であるよう意図されており、本文書に記載のおよび／または請求項に記載の本発明の実現例を限定するよう意図されてはいない。
【００５０】
コンピューティングデバイス７００は、プロセッサ７０２と、メモリ７０４と、記憶装置７０６と、メモリ７０４および高速拡張ポート７１０に接続する高速インターフェイス７０８と、低速バス７１４および記憶装置７０６に接続する低速インターフェイス７１２とを含む。プロセッサ７０２は半導体ベースのプロセッサであってもよい。メモリ７０４は半導体ベースのメモリであってもよい。コンポーネント７０２，７０４，７０６，７０８，７１０および７１２の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。プロセッサ７０２は、コンピューティングデバイス７００内で実行される命令を処理可能であり、これらの命令は、ＧＵＩのためのグラフィカル情報を、高速インターフェイス７０８に結合されたディスプレイ７１６などの外部入出力装置上に表示するために、メモリ７０４内または記憶装置７０６上に記憶された命令を含む。その他の実現例では、複数のプロセッサおよび／または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用されてもよい。また、複数のコンピューティングデバイス７００が接続されてもよく、各デバイスは（たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして）必要な動作の一部を提供する。
【００５１】
メモリ７０４は、情報をコンピューティングデバイス７００内に記憶する。一実現例では、メモリ７０４は１つまたは複数の揮発性メモリユニットである。別の実現例では、メモリ７０４は１つまたは複数の不揮発性メモリユニットである。メモリ７０４はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能な媒体であってもよい。
【００５２】
記憶装置７０６は、コンピューティングデバイス７００のための大容量記憶を提供可能である。一実現例では、記憶装置７０６は、フロッピー（登録商標）ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくはその他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ読取可能な媒体であってもよく、または当該コンピュータ読取可能な媒体を含んでもよい。コンピュータプログラム製品が情報担体において有形に具体化され得る。コンピュータプログラム製品はまた、実行されると上述の方法などの１つ以上の方法を行なう命令を含んでもよい。情報担体は、メモリ７０４、記憶装置７０６、またはプロセッサ７０２上のメモリといった、コンピュータ読取可能な媒体または機械読取可能な媒体である。
【００５３】
高速コントローラ７０８はコンピューティングデバイス７００のための帯域幅集約的な動作を管理し、一方、低速コントローラ７１２はより低い帯域幅集約的な動作を管理する。機能のこのような割当ては例示にすぎない。一実現例では、高速コントローラ７０８は、メモリ７０４、ディスプレイ７１６に（たとえば、グラフィックスプロセッサまたはアクセラレータを介して）、および、さまざまな拡張カード（図示せず）を受付け得る高速拡張ポート７１０に結合される。この実現例では、低速コントローラ７１２は、記憶装置７０６および低速拡張ポート７１４に結合される。さまざまな通信ポート（たとえば、ＵＳＢ、ブルートゥース、イーサネット（登録商標）、無線イーサネット）を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの１つ以上の入出力装置に、または、スイッチもしくはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合されてもよい。
【００５４】
コンピューティングデバイス７００は、図に示されるように多くの異なる形態で実現されてもよい。たとえばそれは、標準サーバ７２０として、またはこのようなサーバのグループで複数回実現されてもよい。それはまた、ラックサーバシステム７２４の一部として実現されてもよい。加えて、それは、ラップトップコンピュータ７２２などのパーソナルコンピュータにおいて実現されてもよい。これに代えて、コンピューティングデバイス７００からのコンポーネントは、デバイス７５０などのモバイルデバイス（図示せず）におけるその他のコンポーネントと組合されてもよい。このようなデバイスの各々は、コンピューティングデバイス７００，７５０のうちの１つ以上を含んでもよく、システム全体が、互いに通信する複数のコンピューティングデバイス７００，７５０で構成されてもよい。
【００５５】
コンピューティングデバイス７５０は、数あるコンポーネントの中でも特に、プロセッサ７５２と、メモリ７６４と、ディスプレイ７５４などの入出力デバイスと、通信インターフェイス７６６と、送受信機７６８とを含む。デバイス７５０にはまた、追加の記憶を提供するために、マイクロドライブまたはその他のデバイスなどの記憶装置が設けられてもよい。コンポーネント７５０，７５２，７６４，７５４，７６６および７６８の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。
【００５６】
プロセッサ７５２は、メモリ７６４に記憶された命令を含む、コンピューティングデバイス７５０内の命令を実行可能である。当該プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス７５０が実行するアプリケーション、およびデバイス７５０による無線通信の制御といった、デバイス７５０のその他のコンポーネント同士の連携を提供してもよい。
【００５７】
プロセッサ７５２は、ディスプレイ７５４に結合された制御インターフェイス７５８およびディスプレイインターフェイス７５６を介してユーザと通信してもよい。ディスプレイ７５４は、たとえば、ＴＦＴ  ＬＣＤ（Thin-Film-Transistor Liquid Crystal Display：薄膜トランジスタ液晶ディスプレイ）、またはＯＬＥＤ（Organic Light Emitting Diode：有機発光ダイオード）ディスプレイ、またはその他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス７５６は、ディスプレイ７５４を駆動してグラフィカル情報およびその他の情報をユーザに提示するための適切な回路を含んでもよい。制御インターフェイス７５８は、ユーザからコマンドを受信し、それらをプロセッサ７５２に送出するために変換してもよい。加えて、デバイス７５０とその他のデバイスとの近接通信を可能にするように、外部インターフェイス７６２がプロセッサ７５２と通信した状態で設けられてもよい。外部インターフェイス７６２は、たとえば、いくつかの実現例では有線通信を提供してもよく、または他の実現例では無線通信を提供してもよく、複数のインターフェイスも使用されてもよい。
【００５８】
メモリ７６４は、情報をコンピューティングデバイス７５０内に記憶する。メモリ７６４は、１つもしくは複数のコンピュータ読取可能な媒体、１つもしくは複数の揮発性メモリユニット、または、１つもしくは複数の不揮発性メモリユニットの１つ以上として実現されてもよい。拡張メモリ７７４も設けられ、拡張インターフェイス７７２を介してデバイス７５０に接続されてもよく、拡張インターフェイス７７２は、たとえばＳＩＭＭ（Single In Line Memory Module）カードインターフェイスを含んでもよい。このような拡張メモリ７７４は、デバイス７５０に余分の記憶スペースを提供してもよく、または、デバイス７５０のためのアプリケーションもしくは他の情報も記憶してもよい。具体的には、拡張メモリ７７４は、上述のプロセスを実行または補足するための命令を含んでもよく、セキュアな情報も含んでもよい。このため、たとえば、拡張メモリ７７４はデバイス７５０のためのセキュリティモジュールとして設けられてもよく、デバイス７５０のセキュアな使用を許可する命令でプログラムされてもよい。加えて、ハッキング不可能な態様でＳＩＭＭカード上に識別情報を乗せるといったように、セキュアなアプリケーションが追加情報とともにＳＩＭＭカードを介して提供されてもよい。
【００５９】
メモリはたとえば、以下に述べるようなフラッシュメモリおよび／またはＮＶＲＡＭメモリを含んでもよい。一実現例では、コンピュータプログラム製品が情報担体において有形に具体化される。コンピュータプログラム製品は、実行されると上述の方法のような１つ以上の方法を行なう命令を含む。情報担体は、メモリ７６４、拡張メモリ７７４、またはプロセッサ７５２上のメモリといった、コンピュータ読取可能な媒体または機械読取可能な媒体であり、たとえば送受信機７６８または外部インターフェイス７６２を通して受信されてもよい。
【００６０】
デバイス７５０は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス７６６を介して無線通信してもよい。通信インターフェイス７６６は、とりわけ、ＧＳＭ（登録商標）音声通話、ＳＭＳ、ＥＭＳ、またはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ（登録商標）、ＣＤＭＡ２０００、またはＧＰＲＳといった、さまざまなモードまたはプロトコル下での通信を提供してもよい。このような通信は、たとえば無線周波数送受信機７６８を介して生じてもよい。加えて、ブルートゥース、ＷｉＦｉ、またはその他のこのような送受信機（図示せず）使用するなどして、短距離通信が生じてもよい。加えて、ＧＰＳ（全地球測位システム）受信機モジュール７７０が、追加のナビゲーション関連および位置関連の無線データをデバイス７５０に提供してもよく、このデータは、デバイス７５０上で実行されるアプリケーションによって適宜使用されてもよい。
【００６１】
デバイス７５０はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック７６０を使用して、音声通信してもよい。音声コーデック７６０は同様に、たとえばデバイス７５０のハンドセットにおいて、スピーカを介すなどして、ユーザに聞こえる音を生成してもよい。このような音は、音声電話からの音を含んでもよく、録音された音（たとえば、音声メッセージ、音楽ファイルなど）を含んでもよく、デバイス７５０上で動作するアプリケーションが生成する音も含んでもよい。
【００６２】
コンピューティングデバイス７５０は、図に示されるように多くの異なる形態で実現されてもよい。たとえばそれは、携帯電話７８０として実現されてもよい。それはまた、スマートフォン７８２、携帯情報端末、またはその他の同様のモバイルデバイスの一部として実現されてもよい。
【００６３】
本明細書に記載されるシステムおよび技術のさまざまな実現例は、デジタル電子回路、集積回路、特別設計されたＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはそれらの組み合わせにおいて実現されてもよい。これらのさまざまな実現例は、少なくとも１つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能および／または解釈可能な１つ以上のコンピュータプログラムにおける実現例を含んでもよく、このプロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータおよび命令を受信するとともに、これらにデータおよび命令を送信するように結合されてもよい。
【００６４】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知）は、プログラム可能なプロセッサのための機械命令を含んでおり、高レベル手続き型および／もしくはオブジェクト指向プログラミング言語で、ならびに／またはアセンブリ／機械言語で実現されてもよい。ここに使用されるように、「機械読取可能な媒体」「コンピュータ読取可能な媒体」という用語は、機械命令および／またはデータをプログラム可能なプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置および／またはデバイス（たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス（ＰＬＤ））を指し、機械命令を機械読取可能な信号として受信する機械読取可能な媒体を含む。「機械読取可能な信号」という用語は、機械命令および／またはデータをプログラム可能なプロセッサに提供するために使用される任意の信号を指す。
【００６５】
ユーザとの対話を提供するために、本明細書に記載されるシステムおよび技術は、情報をユーザに表示するためのディスプレイ装置（たとえば、ＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタ）と、ユーザが入力をコンピュータに提供できるようにするキーボードおよびポインティングデバイス（たとえば、マウスまたはトラックボール）とを有するコンピュータ上で実現されてもよい。その他の種類のデバイスを使用してユーザとの対話を提供してもよく、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック（たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック）であってもよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信されてもよい。
【００６６】
本明細書に記載されるシステムおよび技術は、（たとえばデータサーバとしての）バックエンドコンポーネントを含む、またはミドルウェアコンポーネント（たとえばアプリケーションサーバ）を含む、またはフロントエンドコンポーネント（たとえば、ユーザが本明細書に記載されるシステムおよび技術の実現例と対話できるようにするグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ）を含む、または、このようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントの任意の組み合わせを含む、コンピューティングシステムにおいて実現されてもよい。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信（たとえば通信ネットワーク）によって相互接続されてもよい。通信ネットワークの例として、ローカルエリアネットワーク（「ＬＡＮ」）、広域エリアネットワーク（「ＷＡＮ」）、およびインターネットが挙げられる。
【００６７】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いに遠隔であり、典型的に通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作して互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
【００６８】
多数の実施形態が説明された。しかしながら、本明細書の精神および範囲から逸脱することなくさまざまな変更がなされ得ることが理解されるであろう。
【００６９】
加えて、図面に示される論理フローは、所望の結果を達成するために、示された特定の順序または順番を必要としない。加えて、説明されたフローに対して他のステップが提供されてもよく、またはステップが除去されてもよく、説明されたシステムに対して他のコンポーネントが追加されてもよく、または除去されてもよい。したがって、他の実施形態は以下の特許請求の範囲内にある。
【００７０】
本明細書に記載されるさまざまな技術の実現例は、デジタル電子回路において、またはコンピュータハードウェア、ファームウェア、ソフトウェアにおいて、またはそれらの組み合わせにおいて実現されてもよい。実現例は、データ処理装置、たとえばプログラム可能なプロセッサ、コンピュータまたは複数のコンピュータによって処理するため、またはそれらの動作を制御するために、コンピュータプログラム製品として、すなわち情報担体において、たとえば機械読取可能な記憶装置（コンピュータ読取可能な媒体）において有形に具体化されるコンピュータプログラムとして、実現されてもよい。したがって、コンピュータ読取可能な記憶媒体は、実行されるとプロセッサ（たとえば、ホストデバイスにおけるプロセッサ、クライアントデバイスにおけるプロセッサ）にプロセスを実行させる命令を記憶するように構成されてもよい。
【００７１】
上記のコンピュータプログラムなどのコンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語を含む任意の形態のプログラミング言語で書き込むことができ、スタンドアロンのプログラムとしての形態、または計算環境での使用に適したモジュール、コンポーネント、サブルーチンもしくはその他のユニットとしての形態を含む任意の形態でデプロイすることができる。コンピュータプログラムは、１つのコンピュータ上で、または一箇所もしくは複数箇所にわたって分散されて通信ネットワークによって相互接続された複数のコンピュータ上で処理されるようにデプロイすることができる。
【００７２】
方法ステップは、入力データ上で動作して出力を生成することによって機能を実行するようにコンピュータプログラムを実行する１つ以上のプログラム可能なプロセッサによって実行されてもよい。また、方法ステップは、特殊目的論理回路、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）によって実行されてもよく、装置は、特殊目的論理回路として実現されてもよい。
【００７３】
コンピュータプログラムの処理に適したプロセッサは、一例として、汎用マイクロプロセッサ、特殊目的マイクロプロセッサ、および任意の種類のデジタルコンピュータの任意の１つ以上のプロセッサを含む。一般に、プロセッサは、リードオンリメモリまたはランダムアクセスメモリまたはこれら両方から命令およびデータを受信する。コンピュータの要素は、命令を実行するための少なくとも１つのプロセッサと、命令およびデータを記憶するための１つ以上のメモリデバイスとを含み得る。また、一般に、コンピュータは、データを記憶するための１つ以上の大容量記憶装置、たとえば磁気ディスク、光磁気ディスクもしくは光ディスクを含んでいてもよく、または１つ以上の大容量記憶装置からデータを受信するもしくは１つ以上の大容量記憶装置にデータを転送するもしくは受信も転送もするように作動的に結合されてもよい。コンピュータプログラム命令およびデータを実施するのに適した情報担体は、あらゆる形態の不揮発性メモリを含み、当該不揮発性メモリは、一例として、たとえばＥＰＲＯＭ、ＥＥＰＲＯＭおよびフラッシュメモリデバイスといった半導体メモリデバイス、たとえば内蔵ハードディスクまたはリムーバブルディスクといった磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む。プロセッサおよびメモリは、特殊目的論理回路によって補完されてもよく、または特殊目的論理回路に組み込まれてもよい。
【００７４】
ユーザとの対話を提供するために、実現例はコンピュータ上で実現されてもよく、当該コンピュータは、ユーザに情報を表示するためのディスプレイデバイス、たとえば陰極線管（ＣＲＴ）、発光ダイオード（ＬＥＤ）または液晶ディスプレイ（ＬＣＤ）モニタと、ユーザが入力をコンピュータに提供することができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールとを有する。ユーザとの対話を提供するためにその他の種類のデバイスも使用されてもよい。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力または触覚入力を含む任意の形態で受信されてもよい。
【００７５】
実現例は、たとえばデータサーバとしてのバックエンドコンポーネントを含むコンピューティングシステムで実現されてもよく、またはミドルウェアコンポーネント、たとえばアプリケーションサーバを含むコンピューティングシステムで実現されてもよく、またはフロントエンドコンポーネント、たとえばユーザが実現例と対話できるグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステムで実現されてもよく、またはこのようなバックエンドコンポーネント、ミドルウェアコンポーネントもしくはフロントエンドコンポーネントのいずれかの組み合わせを含むコンピューティングシステムで実現されてもよい。コンポーネント同士は、任意の形態または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続されてもよい。通信ネットワークの例としては、ローカルエリアネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）、たとえばインターネットが挙げられる。
【００７６】
記載されている実現例の特定の特徴について本明細書に記載されているように説明してきたが、多くの変形例、置換例、変更例および等価物が当業者に想起されるであろう。したがって、添付の特許請求の範囲は、実現例の範囲に含まれる全てのこのような変形例および変更例をカバーするよう意図されていることを理解すべきである。それらは限定的ではなく単に一例として示されており、形状および詳細の点でさまざまな変更を行ってもよいということを理解すべきである。本明細書に記載される装置および／または方法のいかなる部分も、相互に排他的な組み合わせを除いて、いかなる組み合わせでも組み合わせられてもよい。本明細書に記載される実現例は、記載されているさまざまな実現例の機能、構成要素および／または特徴のさまざまな組み合わせおよび／または下位の組み合わせを含み得る。
【図１Ａ】
0006929361.tif 000003
【図１Ｂ】
0006929361.tif 000004
【図１Ｃ】
0006929361.tif 000005
【図２】
0006929361.tif 000006
【図３Ａ】
0006929361.tif 000007
【図３Ｂ】
0006929361.tif 000008
【図３Ｃ】
0006929361.tif 000009
【図４Ａ】
0006929361.tif 000010
【図４Ｂ】
0006929361.tif 000011
【図５】
0006929361.tif 000012
【図６Ａ】
0006929361.tif 000013
【図６Ｂ】
0006929361.tif 000014
【図６Ｃ】
0006929361.tif 000015
【図６Ｄ】
0006929361.tif 000016
【図７】
0006929361.tif 000017