(57)【特許請求の範囲】
【請求項１】
方法であって、
仮想現実（ＶＲ）コンピュータの処理回路が、仮想環境におけるオブジェクトを生成することを備え、前記オブジェクトは、表面を有し、かつ第１の頂点を含む第１のボーンおよび第２の頂点を含む第２のボーンを含み、前記第１のボーンは、前記第１のボーンの上の点同士の間の距離を保つ剛体変換に従って前記第１の頂点の動作を定義し、前記方法はさらに、
前記第１のボーンに含まれる前記オブジェクトの前記表面の前記第１の頂点と、前記第２のボーンに含まれる前記オブジェクトの前記表面の前記第２の頂点とを動かす要求を受信することと、
前記要求に応答して、第１のフィルタを前記第１のボーンに適用し、第２のフィルタを前記第２のボーンに適用することとを備え、前記第１のフィルタおよび前記第２のフィルタの各々は、前記第１のボーンおよび前記第２のボーンにそれぞれ適用されると、前記第１のボーンの前記第１の頂点の前記動作を第１の量だけ制限し、前記第２の頂点の動作を前記第１の量とは異なる第２の量だけ減衰させる、方法。
【請求項２】
前記要求を受信することは、アンカー頂点を定義することを含み、前記アンカー頂点は前記第１のボーンに含まれており、
前記動作は並進成分および回転成分を含み、
前記第１のフィルタはアイデンティティフィルタであり、前記アイデンティティフィルタは、前記第１のボーンに適用されると、前記アンカー頂点が前記剛体変換に従って経路に沿って動くように、前記アンカー頂点の前記動作の前記並進成分を減衰させる距離はゼロであり、前記アンカー頂点の前記動作の前記回転成分を減衰させる角度はゼロである、請求項１に記載の方法。
【請求項３】
前記オブジェクトは、前記アンカー頂点を含む第１の領域と、前記第２の頂点を含む第２の領域と、前記オブジェクトが変形する前記第１の領域と前記第２の領域との間の第３の領域とを含み、前記第２の頂点は前記アンカー頂点から遠隔であり、
前記方法はさらに、前記第３の領域の内部の頂点に対して変形操作を実行して、前記第３の領域の内部に変形したオブジェクトを生成することを備える、請求項２に記載の方法。
【請求項４】
前記第３の領域の内部の頂点に対して変形操作を実行することは、連続マッピング関数に従って前記第３の領域の内部の前記頂点の各々の位置をマッピングすることを含み、前記連続マッピング関数の、前記第１の領域と前記第３の領域との間の境界、および前記第２の領域と前記第３の領域との間の境界における傾斜はゼロである、請求項３に記載の方法。
【請求項５】
前記仮想環境におけるオブジェクトを生成することは、前記第２のボーンを前記オブジェクトのバインドポーズにおける前記第１のボーンと同一であると定義することを含む、請求項２に記載の方法。
【請求項６】
前記第２のフィルタを前記第２のボーンに適用することは、前記第２のフィルタを、前記頂点のフィルタリングされていない動作に起因する前記第２のボーンの頂点の位置と、前記第２のボーンの以前のフィルタの適用に応答した動作に起因する前記頂点の位置との間の現在の角距離に比例するフィルタリング率を有する漸近フィルタと定義することを含む、請求項５に記載の方法。
【請求項７】
複数の前記ボーンのうちの１つのボーンにアタッチされた各頂点の前記動作を定義する
前記剛体変換は、座標変換のデュアルクォータニオン表現を含み、
前記方法はさらに、前記第２のフィルタを前記第２のボーンに適用した後に前記第３の領域に対してスキニング操作を実行して、前記第３の領域における前記オブジェクトのボリュームを保存することを備える、請求項３に記載の方法。
【請求項８】
前記仮想環境を前記ＶＲコンピュータのユーザが見ることができるようにレンダリングするように構成されたディスプレイにおいて前記オブジェクトを表示することをさらに備える、請求項１に記載の方法。
【請求項９】
仮想現実（ＶＲ）コンピュータに方法を実行させるためのプログラムであって、前記方法は、
前記ＶＲコンピュータが、仮想環境におけるオブジェクトを生成することを備え、前記オブジェクトは、表面を有し、かつ第１の頂点を含む第１のボーンおよび第２の頂点を含む第２のボーンを含み、前記第１のボーンは、前記第１のボーンの上の点同士の間の距離を保つ剛体変換に従って前記第１の頂点の動作を定義し、前記方法はさらに、
前記第１のボーンに含まれる前記オブジェクトの前記表面の前記第１の頂点と、前記第２のボーンに含まれる前記オブジェクトの前記表面の前記第２の頂点とを動かす要求を受信することと、
前記要求に応答して、第１のフィルタを前記第１のボーンに適用し、第２のフィルタを前記第２のボーンに適用することとを備え、前記第１のフィルタおよび前記第２のフィルタの各々は、前記第１のボーンおよび前記第２のボーンにそれぞれ適用されると、前記第１のボーンの前記第１の頂点の前記動作を第１の量だけ減衰させ、前記第２の頂点の動作を前記第１の量とは異なる第２の量だけ減衰させる、プログラム。
【請求項１０】
前記要求を受信することは、アンカー頂点を定義することを含み、前記アンカー頂点は前記第１のボーンに含まれており、
前記動作は並進成分および回転成分を含み、
前記第１のフィルタはアイデンティティフィルタであり、前記アイデンティティフィルタは、前記第１のボーンに適用されると、前記アンカー頂点が前記剛体変換に従って経路に沿って動くように、前記アンカー頂点の前記動作の前記並進成分を減衰させる距離はゼロであり、前記アンカー頂点の前記動作の前記回転成分を減衰させる角度はゼロである、請求項９に記載のプログラム。
【請求項１１】
前記オブジェクトは、前記アンカー頂点を含む第１の領域と、前記第２の頂点を含む第２の領域と、前記オブジェクトが変形する前記第１の領域と前記第２の領域との間の第３の領域とを含み、前記第２の頂点は前記アンカー頂点から遠隔であり、
前記方法はさらに、前記第３の領域の内部の頂点に対して変形操作を実行して、前記第３の領域の内部に変形したオブジェクトを生成することを備える、請求項１０に記載のプログラム。
【請求項１２】
前記第３の領域の内部の頂点に対して変形操作を実行することは、連続マッピング関数に従って前記第３の領域の内部の前記頂点の各々の位置をマッピングすることを含み、前記連続マッピング関数の、前記第１の領域と前記第３の領域との間の境界、および前記第２の領域と前記第３の領域との間の境界における傾斜はゼロである、請求項１１に記載のプログラム。
【請求項１３】
前記仮想環境におけるオブジェクトを生成することは、前記第２のボーンを前記オブジェクトのバインドポーズにおける前記第１のボーンと同一であると定義することを含む、
請求項１０に記載のプログラム。
【請求項１４】
前記第２のフィルタを前記第２のボーンに適用することは、前記第２のフィルタを、前記頂点のフィルタリングされていない動作に起因する前記第２のボーンの頂点の位置と、前記第２のボーンの以前のフィルタの適用に応答した動作に起因する前記頂点の位置との間の現在の角距離に比例するフィルタリング率を有する漸近フィルタと定義することを含む、請求項１３に記載のプログラム。
【請求項１５】
複数の前記ボーンのうちの１つのボーンにアタッチされた各頂点の前記動作を定義する前記剛体変換は、座標変換のデュアルクォータニオン表現を含み、
前記方法はさらに、前記第２のフィルタを前記第２のボーンに適用した後に前記第３の領域に対してスキニング操作を実行して、前記第３の領域における前記オブジェクトのボリュームを保存することを備える、請求項１１に記載のプログラム。
【請求項１６】
前記方法はさらに、前記仮想環境を前記ＶＲコンピュータのユーザが見ることができるようにレンダリングするように構成されたディスプレイにおいて前記オブジェクトを表示することを備える、請求項９に記載のプログラム。
【請求項１７】
仮想現実（ＶＲ）コンピュータであって、
メモリと、
前記メモリに結合される制御回路とを備え、前記制御回路は、
仮想環境におけるオブジェクトを生成するように構成され、前記オブジェクトは、表面を有し、かつ第１の頂点を含む第１のボーンおよび第２の頂点を含む第２のボーンを含み、前記第１のボーンは、前記第１のボーンの上の点同士の間の距離を保つ剛体変換に従って前記第１の頂点の動作を定義し、前記制御回路はさらに、
前記第１のボーンに含まれる前記オブジェクトの前記表面の前記第１の頂点と、前記第２のボーンに含まれる前記オブジェクトの前記表面の前記第２の頂点とを動かす要求を受信し、
前記要求に応答して、第１のフィルタを前記第１のボーンに適用し、第２のフィルタを前記第２のボーンに適用するように構成され、前記第１のフィルタおよび前記第２のフィルタの各々は、前記第１のボーンおよび前記第２のボーンにそれぞれ適用されると、前記第１のボーンの前記第１の頂点の前記動作を第１の量だけ減衰させ、前記第２の頂点の動作を前記第１の量とは異なる第２の量だけ減衰させる、ＶＲコンピュータ。
【請求項１８】
前記要求を受信するように構成された前記制御回路は、アンカー頂点を定義するようにさらに構成され、前記アンカー頂点は前記第１のボーンに含まれており、
前記動作は並進成分および回転成分を含み、
前記第１のフィルタはアイデンティティフィルタであり、前記アイデンティティフィルタは、前記第１のボーンに適用されると、前記アンカー頂点が前記剛体変換に従って経路に沿って動くように、前記アンカー頂点の前記動作の前記並進成分を減衰させる距離はゼロであり、前記アンカー頂点の前記動作の前記回転成分を減衰させる角度はゼロである、請求項１７に記載のＶＲコンピュータ。
【請求項１９】
前記オブジェクトは、前記アンカー頂点を含む第１の領域と、前記第２の頂点を含む第２の領域と、前記オブジェクトが変形する前記第１の領域と前記第２の領域との間の第３の領域とを含み、前記第２の頂点は前記アンカー頂点から遠隔であり、
前記制御回路はさらに、前記第３の領域の内部の頂点に対して変形操作を実行して、前記第３の領域の内部に変形したオブジェクトを生成するように構成される、請求項１８に記載のＶＲコンピュータ。
【請求項２０】
前記第３の領域の内部の頂点に対して変形操作を実行するように構成された前記制御回路はさらに、連続マッピング関数に従って前記第３の領域の内部の前記頂点の各々の位置をマッピングするように構成され、前記連続マッピング関数の、前記第１の領域と前記第３の領域との間の境界、および前記第２の領域と前記第３の領域との間の境界における傾斜はゼロである、請求項１９に記載のＶＲコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１７年３月２０日に出願され「仮想現実における保持オブジェクトの安定化（HELD OBJECT STABILIZATION IN VIRTUAL REALITY）」と題された米国非仮特許出願番号第１５／４６３，２２５号の優先権を主張し、その継続出願であり、米国非仮特許出願番号第１５／４６３，２２５号の開示全体を本明細書に引用により援用する。
【０００２】
技術分野
本説明は概して、仮想現実（virtual reality：ＶＲ）におけるオブジェクトの表現に関する。
【図面の簡単な説明】
【０００３】
【図１】本明細書に記載の改良された技法を実行するための例示的な電子環境のブロック図である。
【図２】改良された技法に係る例示的な方法を示すフロー図である。
【図３】図１に示される電子環境内のオブジェクトの例示的なフィルタリングを示す図である。
【図４】図１に示される電子環境内のオブジェクトの別の例示的な変形を示す図である。
【図５】本明細書に記載の改良を実現するために使用することができるコンピュータデバイスの例を示す図である。
【図６】仮想現実（ＶＲ）環境で用いる例示的なヘッドマウントディスプレイ（ＨＭＤ）を示す図である。
【図７Ａ】例示的なＶＲ  ＨＭＤおよび例示的なコントローラを示す図である。
【図７Ｂ】例示的なＶＲ  ＨＭＤおよび例示的なコントローラを示す図である。
【図７Ｃ】例示的なＶＲ  ＨＭＤおよび例示的なコントローラを示す図である。
【発明を実施するための形態】
【０００４】
詳細な説明
さまざまな図面における同様の参照記号は同様の要素を示す。
【０００５】
仮想環境を生成する仮想現実（ＶＲ）システムは、ＶＲコンピュータおよびコントローラを含む。人間のユーザは、ＶＲコンピュータによって生成される仮想環境内のさまざまなオブジェクトと対話することによって、仮想環境を体験する。たとえば、人間のユーザはコントローラを用いて、オブジェクトをジェスチャを介して並進および/または回転により動かすことができる。人間のユーザからのジェスチャに応答してオブジェクトの動作の自然なシミュレーションを提供するために、ＶＲコンピュータは剛体変換に従ってオブジェクトのアニメーション化を実行する。
【０００６】
オブジェクトをアニメーション化する手法は、オブジェクトの頂点を定義することと、オブジェクトのさまざまな部分の動きを表わすそれらの頂点の剛体変換とを必要とし得る。場合によっては、オブジェクトの質量をシミュレートするために剛体変換に適用されるフィルタが存在する。
【０００７】
単純な例として、オブジェクトが野球用バットであると仮定する。野球用バットは、長い剛体のオブジェクトである。バットが単一の剛体要素である場合は、バット上の点の各対の相対距離は、動作（すなわち、並進および回転）の間中固定され続ける。すなわち、バットの各点は、並進および回転動作に応答して同じ量だけ並進し、同じ回転角を受ける。
【０００８】
仮想環境におけるオブジェクトをアニメーション化する本明細書に記載のいくつかの手法は、仮想現実（ＶＲ）におけるアニメーション化などの対話型アニメーション化に対して良好にスケーリングする。たとえば、当該手法は、（ｉ）仮想環境におけるオブジェクトを制御するためにユーザによって用いられるハンドヘルドコントローラ内の測定ノイズと、（ii）自然な手の振動とを含むノイズ源の原因となり得ない。ノイズ源は、ユーザがオブジェクトを比較的静止した状態で持っているときに、仮想環境において不自然なジッタのような動作を生じさせる。
【０００９】
ノイズは、並進成分および回転成分を有する。ノイズの回転成分は、固定アンカー点から離れた頂点について増幅される。大きなオブジェクトはこの回転ノイズに特に敏感である。
【００１０】
たとえば、上記に紹介したバットの例を再び参照して、バットの一端（すなわち、ユーザが名目上バットを握るハンドル）における動作に対するバットの反応は、バットが完全には剛体でない場合があるため、均一でない場合がある。この観点に沿って、ユーザは、バットを握ったときに回転ノイズを導入し得る。ユーザがバットを握るハンドルにおける回転ノイズは、ユーザからさらに離れたバットの他端において増幅され得る。このような増幅された回転ノイズは、仮想環境において表わされる際にバットの不自然な外観および感覚をもたらし得る。
【００１１】
人物および動物などの他のより複雑なオブジェクトは、非剛体要素によって互いに連結された剛体要素（「ボーン」）を有してモデル化され得る。人物および動物の場合、非剛体要素はジョイントおよび他の結合組織を含み得る。これらの場合、たとえば手などの１点における回転ノイズは、たとえば肩などの遠隔点における不自然に大きい回転ノイズを生成し得る。
【００１２】
この回転ノイズを単純にフィルタリングすることは望ましくない。ユーザがＶＲにおいてオブジェクトを保持しているときのユーザの手へのアタッチメントの剛性は、存在を維持するのに重要である。オブジェクトの回転または位置が手から遅れ始めるようになると、ユーザ体験が悪化することになる。オブジェクトの質量をシミュレートするために剛体変換に適用されるフィルタは、固定アンカー点におけるこのような高周波動作を減衰させ得るが、このようなフィルタは、アンカー点から離れた意図しない振動を悪化させてユーザの体験を損なう場合がある。
【００１３】
本明細書に記載のＶＲにおけるオブジェクトをアニメーション化する技法は、オブジェクト上の頂点によって変化するオブジェクトにモーションフィルタを適用することを必要とする。この観点に沿って、ＶＲコンピュータは、オブジェクトの表面および剛体要素、またはアンカー頂点の動作に基づく頂点の動作を定義する頂点を含むボーンを近似する三角形メッシュを生成することによって、対話型の三次元ゲームについてのオブジェクトを生成する。たとえば、バットは、単一のボーンによって（たとえば、単一のボーン用いてモデル化されることによって）表わされ得る。別の例として、仮想環境におけるアバターの腕または手が、接続された複数のボーンによって表わされ得る。
【００１４】
オブジェクトのボーンは、オブジェクトの頂点を含む剛体要素であり、ボーンが動くと、ボーンの各頂点が同じように動く。ユーザが、その周りにオブジェクトを動かすアンカー頂点としてオブジェクトの頂点を選択すると、ＶＲコンピュータは、アンカー頂点からそのボーンまでの距離に基づいてそのボーンの動作を制限する可変フィルタを各ボーンについて生成する。このフィルタは、回転ノイズに関連付けられた高周波動作の量を減少させることによって、その動作を制限し得る。したがって、ユーザが、アンカー頂点についての動作経路を定義するジェスチャをコントローラを用いて生成すると、アンカー頂点を含むボーンはフィルタリングされていない動作を行ない、一方、アンカー頂点から遠隔のボーンはより制限された動作を行なう。一方、ボーンがないオブジェクトの内部領域では、オブジェクトの表面の頂点は、アンカー頂点から遠隔のオブジェクトの剛性が動作中に達成されるように、滑らかに変形し得る。しかしそれにもかかわらず、ＶＲコンピュータは、オブジェクトの内部領域のボリュームを保存するデュアルクォータニオンスキニング操作を実行し得る。
【００１５】
いくつかの実装例では、デュアルオブジェクトはｆ＋εｇの形態の数学的オブジェクトであり、ε2＝０である。すなわち、たとえば、（ｆ＋εｇ）2＝ｆ2＋ε・２ｆｇである。クォータニオンは、
【００１６】
【数１】
0006793255.tif 000002
【００１７】
の形態の量であり、
【００１８】
【数２】
0006793255.tif 000003
【００１９】
がクォータニオン単位であり、かつ、
【００２０】
【数３】
0006793255.tif 000004
【００２１】
であり、クォータニオン単位の乗算は非可換である。したがって、デュアルクォータニオンは、量ａ，ｂ，ｃ，ｄがデュアルオブジェクトであるクォータニオンである。デュアルクォータニオンを用いてさまざまな回転および並進動作を表わすことによって、ボリュームを保存するオブジェクトの非剛体部分の変換が可能になる。
【００２２】
図１は、本明細書に記載の改良された技法に係る例示的な電子環境１００を示すブロック図である。電子環境１００は、ＶＲコントローラおよびディスプレイ１１０を持っているユーザ１１２と、ＶＲコンピュータ１２０と、ネットワーク１８０とを含む。
【００２３】
ＶＲコントローラ１１０は、ヘッドマウントディスプレイ（ＨＭＤ）の形態を取り得、ユーザ１１２によって装着されて没入型仮想環境を提供する。例示的な電子環境１００では、ＶＲコントローラ１１０を装着するユーザ１１２は、ユーザデバイス、すなわちユーザデバイス１１４を手に持っている。ユーザデバイス１１４は、たとえば、スマートフォン、コントローラ、ジョイスティック、または没入型仮想環境での対話のためにＶＲコントローラ１１０とペアリングされ得るかもしくはＶＲコントローラ１１０と通信し得るその他の携帯ハンドヘルド電子装置であってもよい。ユーザデバイス１１４は、たとえば、有線接続、またはたとえばＷｉＦｉもしくはブルートゥース（登録商標）接続などの無線接続を介してＶＲコントローラ１１０に作動的に結合され得るかまたはＶＲコントローラ１１０とペアリングされ得る。ユーザデバイス１１４とＶＲコントローラ１１０とのこのペアリングまたは作動的な結合によって、ユーザデバイス１１４とＶＲコントローラ１１０との間の通信、およびユーザデバイス１１４とＶＲコントローラ１１０との間のデータ交換が提供され得る。これによって、ユーザデバイス１１４は、ＶＲコントローラ１１０と通信して没入型仮想環境で対話するコントローラとして機能することができ得る。すなわち、たとえば、ユーザデバイス１１４によって放射され、選択する仮想オブジェクトもしくは特徴に方向付けられるビームもしくは光線、および／またはユーザデバイス１１４のタッチ面上で受信する入力、および／またはユーザデバイス１１４の動きなどの、ユーザデバイス１１４の操作が、ＶＲコントローラ１１０によって提供される没入型仮想環境における対応する選択、または動き、または他のタイプの対話に変換され得る。
【００２４】
ＶＲコンピュータ１２０は、没入型仮想環境のための仮想環境（virtual environment：ＶＥ）データ１３０を生成して、そのデータをネットワーク１８０上でユーザデバイス１１４に送信するように構成される。図１に示されるように、ＶＲコンピュータ１２０は、ネットワーク１８０上でユーザデバイス１１４と通信するコンピュータシステムとして実装される。
【００２５】
ＶＲコンピュータ１２０は、ネットワークインターフェイス１２２と、一組の処理ユニット１２４と、メモリ１２６と、信号受信機とを含む。ネットワークインターフェイス１２２は、たとえば、ネットワーク１８０から受信した電子および／または光信号を仮想環境コンピュータ１２０が使用する電子形態に変換するためのイーサネット（登録商標）アダプタ、トークンリングアダプタなどを含む。一組の処理ユニット１２４は、１つ以上の処理チップおよび／またはアセンブリを含む。メモリ１２６は、揮発性メモリ（たとえばＲＡＭ）、および１つ以上のＲＯＭ、ディスクドライブ、ソリッドステートドライブなどの不揮発性メモリの両方を含む。一組の処理ユニット１２４およびメモリ１２６はともに制御回路し、当該制御回路は、本明細書に記載のようなさまざまな方法および機能を実行するように構成および配置される。
【００２６】
いくつかの実施形態では、ＶＲコンピュータ１２０のコンポーネントの１つ以上は、メモリ１２６に格納された命令を処理するように構成されたプロセッサ（たとえば処理ユニット１２４）であってもよく、または当該プロセッサを含んでもよい。図１に示されるようなこのような命令の例としては、仮想環境マネージャ１６０およびオブジェクト変換マネージャ１７０が挙げられる。メモリ１２６は、プロセッサによって、命令によって実現されるルーチンに入れられるさまざまなデータも格納してもよい。図１に示されるように、このようなデータはＶＥデータ１３０を含み、ＶＥデータ１３０は次いでオブジェクトデータ１４０（１），…，１４０（Ｍ）を含む。
【００２７】
ＶＥマネージャ１６０は、ＶＲコントローラ１１０によって没入型仮想環境として実現されることになるＶＥデータ１３０を生成するように構成される。たとえば、ＶＲコンピュータ１２０が対話型の没入型ゲームについてのデータを処理するように構成されている場合、ＶＲコンピュータ１２０によって生成されるＶＥデータ１３０は、部屋の壁または屋外環境としてレンダリングする何らかのバックグラウンドデータを含み得る。さらに、ＶＥデータ１３０は一組のオブジェクト１４０（１），…，１４０（Ｍ）も含み、ユーザ１１２はＶＲコントローラ１１０を介して当該オブジェクトと対話し得る。ＶＲコンピュータ１２０は、オブジェクト１４０（１），…，１４０（Ｍ）のいずれかをユーザ１１２が見ることができるようにディスプレイ／コントローラ１１０上にレンダリングし得る。
【００２８】
各オブジェクト、たとえばオブジェクト１４０（１）は、仮想環境内の何らかの物理オブジェクトを表わす。たとえば、ＶＲコンピュータ１２０がダーツゲームを処理している場合、１つの仮想オブジェクトはダーツであってもよく、別のオブジェクトはダーツボードであってもよい。このようなゲームでは、ユーザ１１２はコントローラ１１０を介して、コントローラのアバターを介してオブジェクト１４０（１）と対話することができる。この観点に沿って、ユーザ１１２は、コントローラ１１０をオブジェクト１４０（１）上の点、すなわちアンカー頂点に動かす。ユーザは次いで、コントローラを用いた一連のジェスチャによってオブジェクト１４０（１）を操作し得る。すなわち、各ジェスチャは、ＶＲコンピュータ１２０によって、オブジェクト１４０（１）を一定の経路に沿って動かすコマンドとして解釈され得る。
【００２９】
オブジェクト１４０（１）は、オブジェクト１４０（１）の表面を定義する複数の頂点１４２（１）を含む。典型的に、ＶＲコンピュータ１２０は、三次元空間における三角形メッシュからオブジェクト１４０（１）を構築する。三角形メッシュの頂点の各々は次いで、オブジェクト１４０（１）の表面の頂点１４２（１）を形成する。
【００３０】
原理上は、オブジェクト１４０（１）が完全に剛体である場合、経路を通るオブジェクト１４０（１）の動きは頂点１４２（１）の各々の剛体変換によって表わされる。この動きは典型的に、並進成分および回転成分を有する。いくつかの実装例では、この動きは、互いに加算および／または乗算された一連のマトリックスとして表わされ得る。しかし、他の実装例では、このような動作はデュアルクォータニオンによって表わされ得る。
【００３１】
しかし、ほとんどの場合、オブジェクト１４０(１）は真に剛体ではなく、いくらかの変形が予想され得る。たとえば、ボーン同士の間のオブジェクトの部分が剛体でない場合があり、このような部分における頂点はすべて互いに異なるように動く場合がある。これらの場合、オブジェクトは一組のボーン、すなわち剛体要素１４４（１）（１），…，１４４（１）（Ｎ１）も含み、その各々がオブジェクト１４０（１）の剛体部分であり、オブジェクトの表面の少なくとも１つの頂点１４２（１）を有する。変換を各頂点に関連付けるのではなく、変換は各ボーン、たとえばボーン１４４（１）（１）に関連付けられる。各ボーンの頂点は、当該ボーンへの変換に従って動く。たとえば、ボーンを回転させると、ボーンのそれぞれの端に固定されている頂点の各々がボーンとともに回転することになる。別の例として、ボーンを並進させると、ボーンのそれぞれの端に固定されている頂点の各々がボーンとともに並進することになる。ボーンの一端をボーンの他端よりも大きく動かすと、当該ボーンの動きに基づいて一方の頂点が他方の頂点よりも大きく動くことになる。
【００３２】
ボーンの例を図３に示す。図３には、細長いオブジェクト３００が示されている。オブジェクト３００は、それぞれの剛体領域３１０および３２０に２つのボーン３１５および３２５を有する。これらのボーン３１５，３２５は、オブジェクト３００の実在の部分ではなく、むしろオブジェクト３００のいくつかの部分がどのように動くかを視覚化するのを助ける図案であるため、これらのボーンの各々は破線で表わされている。ボーンの各々、たとえばボーン３１５は、２つの頂点、すなわち、アンカー頂点３４０と、オブジェクトの非剛体領域３３０に隣接した第２の頂点３５０とを有する。たとえば、オブジェクトが野球用バットであると再び仮定する。ユーザは、点３４０においてバットの一端（ハンドル）を握ることになる。この端におけるアンカー頂点の動作において引き起こされる任意の種類のノイズは、バットの他端の点３８０における非常に大量の回転ノイズの原因となり得る。しかしそれにもかかわらず、遠端（点３８０）におけるフィルタリングをハンドルまたは近端（点３４０）におけるフィルタリングとは異なるように行なうことによって、点３８０における動作を減衰させるこのようなフィルタを用いて、点３８０におけるそのジッタを減少または除去することができる。再び図１を参照して、アンカー頂点から遠隔のボーンが動く動作はノイズ（たとえば、自然な人間の手の揺れおよびコントローラ１１０からの機械によって引き起こされるノイズ）にさらに敏感であることが分かっているため、各ボーン１４４（１）（１）は各自のモーションフィルタ１４６（１）（１）を有する。そして、フィルタ１４６（１）（１），…，１４６（１）（Ｎ１）は異なっていてもよい。いくつかの実装例では、フィルタ１４６（１），…，１４６（１）（Ｎ１）は、アンカー頂点からの距離に応じて、このような動作のノイズを減衰させる。アンカー頂点を含むボーン、たとえば１４４（１）（Ｎ１）については、動作はフィルタリングされない場合があり、すなわち、フィルタ１４６（１）（Ｎ１）はアイデンティティ変換によって表わされる。
【００３３】
フィルタ１４６（１）（１）の各々は、ボーン１４４（１）（１）の動作を表わすデュアルクォータニオン変換を乗算するか、そうでなければ変更するデュアルクォータニオン量の形態を取り得る。いくつかの実装例では、フィルタ１４６（１）（１）は定数減衰項の形態を取り得る。他の実装例では、フィルタ１４６（１）（１）は、ジッタなどの高周波動作を減衰または除去する周波数空間におけるローパスフィルタの形態を取り得る。このように、仮想世界における動作のシミュレーションおよび表示の現実感を高めることができる。
【００３４】
オブジェクト変換マネージャ１７０は、コントローラ１１０を介したユーザ１１２からのジェスチャに応答して、たとえばオブジェクト１４０（１）（１）などの選択されたオブジェクトを変換するように構成される。上述のように、ジェスチャは、ＶＲコンピュータ１２０によって、オブジェクトを並進および回転経路に沿って動かす要求として解釈される。
【００３５】
オブジェクト変換マネージャ１７０はさらに、フィルタ１４６（１）（１）を生成してボーン１４４（１）（１）の各々に適用するように構成される。各フィルタは、いくつかの実装例では、アンカー頂点からの距離に基づいて計算され得る。フィルタの適用は、マトリックス、クォータニオン、またはデュアルクォータニオン乗算であり得る。
【００３６】
ネットワーク１８０は、ＶＲコントローラ１１０と仮想環境コンピュータ１２０との間のネットワーク接続を提供するように構成および配置される。ネットワーク１８０は、インターネットまたは他のネットワーク上での通信に一般的に用いられるさまざまなプロトコルおよびトポロジのいずれかを実装し得る。さらに、ネットワーク１８０は、このような通信に用いられるさまざまなコンポーネント（たとえばケーブル、スイッチ／ルータ、ゲートウェイ／ブリッジなど）を含み得る。
【００３７】
いくつかの実装例では、メモリ１２６は、ランダムアクセスメモリ、ディスクドライブメモリ、フラッシュメモリ、および／またはその他などの任意のタイプのメモリであり得る。いくつかの実装例では、メモリ１２６は、仮想環境コンピュータ１２０のコンポーネントに関連付けられた２つ以上のメモリコンポーネント（たとえば２つ以上のＲＡＭコンポーネントまたはディスクドライブメモリ）として実装され得る。いくつかの実装例では、メモリ１２６はデータベースメモリであってもよい。いくつかの実装例では、メモリ１２６は、非ローカルメモリであってもよく、または当該非ローカルメモリを含んでもよい。たとえば、メモリ１２６は、複数のデバイス（図示せず）によって共有されるメモリであってもよく、または当該メモリを含んでもよい。いくつかの実装例では、メモリ１２６は、ネットワーク内のサーバデバイス（図示せず）に関連付けられ、仮想環境コンピュータ１２０のコンポーネントを供するように構成され得る。
【００３８】
いくつかの実装例では、ＶＲコンピュータ１２０は、たとえば、有線デバイスおよび／または無線デバイス（たとえばＷｉＦｉにより可能化されるデバイス）であってもよく、たとえば、コンピューティングエンティティ（たとえばパーソナルコンピューティングデバイス）、サーバデバイス（たとえばウェブサーバ）、携帯電話、タッチスクリーンデバイス、携帯情報端末（ＰＤＡ）、ラップトップ、テレビ、タブレットデバイス、電子リーダ、および／またはその他であってもよい。このようなデバイスは、１つ以上のタイプのハードウェア、ソフトウェア、ファームウェア、オペレーティングシステム、ランタイムライブラリ、および／またはその他を含み得る１つ以上のプラットフォーム（たとえば１つ以上の同様のもしくは異なるプラットフォーム）に基づいて動作するように構成され得る。
【００３９】
ＶＲコンピュータ１２０のコンポーネント（たとえばモジュール、処理ユニット１２４）は、１つ以上のタイプのハードウェア、ソフトウェア、ファームウェア、オペレーティングシステム、ランタイムライブラリ、および／またはその他を含み得る１つ以上のプラットフォーム（たとえば１つ以上の同様のもしくは異なるプラットフォーム）に基づいて動作するように構成され得る。いくつかの実装例では、ＶＲコンピュータ１２０のコンポーネントは、デバイスのクラスタ（たとえばサーバファーム）内で動作するように構成され得る。このような実装例では、ＶＲコンピュータ１２０のコンポーネントの機能および処理は、デバイスのクラスタのいくつかのデバイスに分散され得る。
【００４０】
ＶＲコンピュータ１２０のコンポーネントは、属性を処理するように構成された任意のタイプのハードウェアおよび／またはソフトウェアであってもよく、または当該ハードウェアおよび／またはソフトウェアを含んでもよい。いくつかの実装例では、ＶＲコンピュータ１２０のコンポーネント内に示されるコンポーネントの１つ以上の部分は、ハードウェアベースのモジュール（たとえば、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリ）、ファームウェアモジュール、および／またはソフトウェアベースのモジュール（たとえば、コンピュータコードのモジュール、コンピュータにおいて実行可能な一組のコンピュータ読取可能な命令）であってもよく、またはそれらを含んでもよい。たとえば、いくつかの実装例では、ＶＲコンピュータ１２０のコンポーネントの１つ以上の部分は、少なくとも１つのプロセッサ（図示せず）によって実行されるように構成されたソフトウェアモジュールであってもよく、または当該ソフトウェアモジュールを含んでもよい。いくつかの実装例では、コンポーネントの機能は、図１に示されているのとは異なるモジュールおよび／または異なるコンポーネントに含まれてもよい。
【００４１】
図示されていないが、いくつかの実装例では、ＶＲコンピュータ１２０のコンポーネント（またはその一部）は、たとえば、データセンター（たとえばクラウドコンピューティング環境）、コンピュータシステム、１つ以上のサーバ／ホストデバイス、および／またはその他の内部で動作するように構成され得る。いくつかの実装例では、ＶＲコンピュータ１２０のコンポーネント（またはその一部）は、ネットワーク内で動作するように構成され得る。したがって、ＶＲコンピュータ１２０のコンポーネント（またはその一部）は、１つ以上のデバイスおよび／または１つ以上のサーバデバイスを含み得るさまざまなタイプのネットワーク環境内で機能するように構成され得る。たとえば、ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、および／またはその他であってもよく、またはそれらを含んでもよい。ネットワークは、無線ネットワーク、ならびに／または、たとえば、ゲートウェイデバイス、ブリッジ、スイッチ、および／もしくはその他を用いて実現される無線ネットワークであってもよく、またはそれらを含んでもよい。ネットワークは、インターネットプロトコル（ＩＰ）および／または所有権付きプロトコルなどのさまざまなプロトコルに基づく１つ以上のセグメントを含んでもよく、および／またはそれらに基づく部分を有してもよい。ネットワークは、インターネットの少なくとも一部を含み得る。
【００４２】
図２は、仮想環境におけるオブジェクトをアニメーション化する例示的な方法２００を示すフローチャートである。方法２００は、ＶＲコンピュータ１２０のメモリ１２６内にあり、一組の処理ユニット１２４によって実行される、図１に関連して説明されたソフトウェア構造によって実行され得る。
【００４３】
２０２において、ＶＲコンピュータ１２０は、仮想環境におけるオブジェクトを生成する。このオブジェットは表面を有し、複数のボーンを含む。オブジェクトの表面は複数の頂点を含む。複数の頂点の各々は、複数のボーンのそれぞれのボーンに含まれる。複数のボーンの各々は、剛体変換に従ってそのボーンの各頂点の動作を定義する。
【００４４】
２０４において、ＶＲコンピュータ１２０は、複数のボーンのうちの第１のボーンに含まれるオブジェクトの表面の第１の頂点と、複数のボーンのうちの第２のボーンに含まれるオブジェクトの表面の第２の頂点とを動かす要求を受信する。
【００４５】
２０６において、ＶＲコンピュータ１２０は、この要求に応答して、第１のフィルタを一組のボーンのうちの第１のボーンに適用し、第２のフィルタを一組のボーンのうちの第２のボーンに適用する。第１のフィルタおよび第２のフィルタの各々は、第１のボーンおよび第２のボーンにそれぞれに適用されると、第１のボーンの第１の頂点の動作を第１の量だけ制限し、第２の頂点の動作を第１の量とは異なる第２の量だけ制限する。
【００４６】
上述のフィルタリングに基づいて、アンカー点から離れた部分を有するオブジェクトは、たとえば回転ノイズに対して安定していることができる。このような距離依存フィルタを使用しない場合、アンカー点から比較的離れた部分は、遠い頂点において増幅される傾向がある回転ノイズを有し得る。したがって、遠隔点におけるフィルタは、遠隔点における動作を近点における動作に比べて減衰させることになる。たとえば、オブジェクトが野球用バットであると仮定する。ユーザは、バットの一端（ハンドル）を握ることになる。この端におけるアンカー頂点の動作において引き起される任意の種類の回転ノイズは、バットの他端における非常に大きく騒がしい回転動作の原因となり得る。しかしそれにもかかわらず、遠端におけるフィルタリングをハンドルにおけるフィルタリングとは異なるように行なうことによって、フィルタを用いて、近端における動作に対する遠端における回転ノイズに関連付けられた高周波動作を減衰させる、すなわち減少させることができる。
【００４７】
典型的な場合では、このような不均一なフィルタリングによって、中間の非剛体領域におけるオブジェクトが変形し得る。しかし、以下に図３および図４に関連して説明されるように、このような非剛体領域におけるオブジェクトの変形を制御することができる。
【００４８】
図３は、オブジェクト３００の例示的なフィルタリングを示す図である。図３に示されるように、オブジェクト３００は３つの距離範囲または領域に分割されている。この分割は、２つのボーンと、これらのボーン同士の間の非剛体コネクタとを有するオブジェクトのモデルである。
【００４９】
第１の領域３１０は第１のボーン３１５を有し、第１のボーン３１５は次いでアンカー頂点３４０および内部エンドポイント３５０を含む。第２の領域３２０はボーン３２５を有し、ボーン３２５は次いでオブジェクト３００の表面の遠隔頂点３８０および内部エンドポイント３６０を含む。第１および第２の領域同士の間の第３の領域３３０は非剛体であり、ボーンを有していない。むしろ、表面３７０は、互いに異なるように動き得る、かつ変形し得るオブジェクト３００の頂点を含む。
【００５０】
オブジェクト３００をアンカー頂点３４０に対して動かすコマンド（たとえば、アンカー点３４０、およびしたがってボーン３１５および頂点３５０を動かす人間のユーザからのジェスチャ）を受信すると、ＶＲコンピュータ１２０（図１）は、オブジェクト変換マネージャ１７０を介して剛体変換を計算して、アンカー頂点３４０を含むボーン３１５を経路に沿って最終点に動かし、遠隔頂点３８０を含むボーンをその初期位置および向きに基づいて別の目的地に動かす。オブジェクト変換マネージャ１７０はさらに、高周波ジッタを減衰させるために、遠隔頂点３８０を含むボーン３２５についてのフィルタを生成する。
【００５１】
図３に示されるオブジェクト３００は高い方向性を有するが、仮想環境における多くのオブジェクトはそうでない場合がある。高い方向性および低い方向性の両方を持つオブジェクトの一般的な場合、領域３２０におけるボーン、すなわち遠隔頂点３８０を含むボーン３２５を、領域３１０におけるボーン３１５と同一である、すなわちアンカー頂点３４０を含むボーンと同一であると定義することが有利であることが分かっている。これによって、ＶＲコンピュータ１２０が、アンカー点の周りの回転に対するフィルタリングに制限され、同時に、ＶＲコンピュータ１２０は、高い方向性を有するオブジェクトのみではなく任意のオブジェクトに対処できるようになる。
【００５２】
リギングに関しては、アンカー頂点３４０とエンドポイント３５０との間のすべての頂点はアンカーの変換に１００％マッピングされ、エンドポイント３６０を過ぎたすべての頂点はフィルタリングされた（遠隔の）変換に１００％マッピングされ、点３５０と３６０との間の頂点は、頂点とアンカー点との間の距離を入力として用いる正則関数を用いてマッピングされ得る。
【００５３】
図４は、領域３３０（図３）における頂点をマッピングするために用いられる例示的なマッピング関数４００を示す図である。アーティファクトを回避するために、マッピング関数は表面に不連続性を導入しなくてもよい。したがって、オブジェクト変換マネージャ１７０は、エンドポイント３５０および３６０における傾斜がゼロである重みマッピング関数を生成し得る。
【００５４】
図４に示されるように、非剛体領域３３０における対称軸（すなわち横軸）に沿った距離が間隔［０，１］にマッピングされた場合、重みマッピング関数は
【００５５】
【数４】
0006793255.tif 000005
【００５６】
の形態を取る。このようにして、エンドポイント３５０からさらに離れておりエンドポイント３６０にさらに近い、すなわちアンカー頂点からさらに離れた頂点は、さらなる歪みを経験する。
【００５７】
図３に戻って、重みマッピング関数４００によって領域３３０に導入されるこのような歪みは、領域３３０における歪み面３７０として示されている。ここで、オブジェクト３００の表面は、この非剛体領域において先細りしている。なお、実際の先細りは、エンドポイント３５０および３６０において傾斜がゼロとなる制約を満たすために、円筒形の端を有することになる。
【００５８】
いくつかの構成では、領域３２０におけるボーンについてのフィルタは、フィルタリングされていない向きと以前にフィルタリングされた向きとの間の現在の角距離に比例するフィルタリング率を有する漸近フィルタの形態を取り得る。たとえば、オブジェクトが、点３８０における遠端において回転ノイズを受ける細長いオブジェクト３００（たとえば動物の脚）であると再び仮定する。そうすると、漸近フィルタは、回転ノイズ（「diff」）に起因するフィルタリングされていない動作と以前にフィルタリングされた動作との間の角度の差に比例して点３８０における動作を減衰させる。このフィルタは、このフィルタリング率（「strength＿pct」）に従って遠端における動作を制限し（たとえば減衰させ）、回転ノイズの影響を減衰させる。したがって、このフィルタを適用すると、動物の脚が一端における回転ノイズに応答して両端で安定することになる。この場合、このようなフィルタの計算を記述する何らかの擬似コードは以下の形態を取り得る。
【００５９】
【数５】
0006793255.tif 000006
【００６０】
上記の擬似コードでは、デュアルクォータニオンとして表わされる２つのフィルタ、すなわち、ボーン３１０に適用される第１のアイデンティティフィルタと、第１のボーンの第１の頂点の動作を第１の量だけ制限し、第２の頂点の動作を第１の量とは異なる第２の量だけ減衰させる、ボーン３２０に適用される上述の第２の漸近フィルタとが当初存在する。クランプ関数は、量strength＿pctに０から１の間の値を強制的に取らせる。混合関数は、回転ノイズに基づいて第１および第２のフィルタを更新する。
【００６１】
いくつかの構成では、オブジェクト変換マネージャ１７０は、オブジェクト３００に対してスキニング操作を実行する。スキニングは、オブジェクトの表面の一部、すなわちスキンをオブジェクトのボーンに関連付けることを必要とする処理である。独立して可動な多くのボーンを有するオブジェクトでは、スキンのいくつかの部分は２つ以上のボーンに関連付けられ得、たとえば、スキンは動物の脚の２つのボーン同士の間のジョイントに関連付けられ得る。
【００６２】
いくつかの実装例では、オブジェクト変換マネージャ１７０は、このような変換のある特定のボリュームを保存する性質を利用するために、デュアルクォータニオンスキニングを使用する。この場合、このようなスキニング操作を記述する何らかの擬似コードは以下の形態を取り得る。
【００６３】
【数６】
0006793255.tif 000007
【００６４】
この擬似コードによって明らかなように、マッピング関数は、非剛体領域３３０における歪みがユーザの目に明らかでない（またはユーザの目には知覚できない）ように、頂点位置のみを変更し、頂点法線は変更しない。ここでも、デュアルクォータニオンとして表わされる２つのフィルタ、すなわち、ボーン３１０に適用される第１のアイデンティティフィルタと、ボーン３２０に適用される上述の第２の漸近フィルタとが当初存在する。
【００６５】
一例として、動物の脚は、２つのボーン３１５および３２５と、これらのボーン３１５と３２５との間の非剛体領域３３０とを有する。スキンは、ボーン３２５をもたらすノイズ動作に関連付けられることになるため、非剛体領域３３０におけるスキニング操作（すなわち、ボーン同士の間のジョイント）は、点３８０においてフィルタリングされていない回転ノイズの影響を受け得る。上述のように回転ノイズを減衰させ、図４に関して定義された重み関数を導入することによって、スキニング処理を実行して、ボーン３１５と３２５との間のオブジェクト３００の表面の歪みをマップアウトすることができる。
【００６６】
図５は、ＶＲを伴うアプリケーションの文脈において本明細書に記載の技法とともに用いられ得る一般的なコンピュータデバイス５００および一般的なモバイルコンピュータデバイス５５０の例を示す。コンピューティングデバイス５００は、プロセッサ５０２と、メモリ５０４と、記憶装置５０６と、メモリ５０４および高速拡張ポート５１０に接続する高速インターフェイス５０８と、低速バス５１４および記憶装置５０６に接続する低速インターフェイス５１２とを含む。コンポーネント５０２，５０４，５０６，５０８，５１０および５１２の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。プロセッサ５０２は、コンピューティングデバイス５００内で実行される命令を処理可能であり、これらの命令は、ＧＵＩのためのグラフィカル情報を、高速インターフェイス５０８に結合されたディスプレイ５１６などの外部入出力デバイス上に表示するために、メモリ５０４内または記憶装置５０６上に格納された命令を含む。他の実装例では、複数のプロセッサおよび／または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用されてもよい。また、複数のコンピューティングデバイス５００が接続されてもよく、各デバイスは（たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして）必要な動作の一部を提供する。
【００６７】
メモリ５０４は、情報をコンピューティングデバイス５００内に格納する。一実装例では、メモリ５０４は１つまたは複数の揮発性メモリユニットである。別の実装例では、メモリ５０４は１つまたは複数の不揮発性メモリユニットである。メモリ５０４はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能な媒体であってもよい。
【００６８】
記憶装置５０６は、コンピューティングデバイス５００のための大容量記憶を提供可能である。一実装例では、記憶装置５０６は、フロッピー（登録商標）ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくはその他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ読取可能な媒体であってもよく、または当該コンピュータ読取可能な媒体を含んでもよい。コンピュータプログラムプロダクトが情報担体において有形に具体化され得る。コンピュータプログラムプロダクトはまた、実行されると上述の方法などの１つ以上の方法を行なう命令を含んでもよい。情報担体は、メモリ５０４、記憶装置５０６、またはプロセッサ５０２上のメモリといった、コンピュータ読取可能な媒体または機械読取可能な媒体である。
【００６９】
高速コントローラ５０８はコンピューティングデバイス５００のための帯域幅集約的な動作を管理し、一方、低速コントローラ５１２はより低い帯域幅集約的な動作を管理する。機能のこのような割当ては例示にすぎない。一実装例では、高速コントローラ５０８は、メモリ５０４、ディスプレイ５１６に（たとえば、グラフィックスプロセッサまたはアクセラレータを介して）、および、さまざまな拡張カード（図示せず）を受付け得る高速拡張ポート５１０に結合される。この実装例では、低速コントローラ５１２は、記憶装置５０６および低速拡張ポート５１４に結合される。さまざまな通信ポート（たとえば、ＵＳＢ、ブルートゥース、イーサネット、無線イーサネット）を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの１つ以上の入出力デバイスに、または、スイッチもしくはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合されてもよい。
【００７０】
コンピューティングデバイス５００は、図に示されるように多くの異なる形態で実装されてもよい。たとえばそれは、標準サーバ５２０として、またはこのようなサーバのグループで複数回実装されてもよい。それはまた、ラックサーバシステム５２４の一部として実装されてもよい。加えて、それは、ラップトップコンピュータ５２２などのパーソナルコンピュータにおいて実装されてもよい。これに代えて、コンピューティングデバイス５００からのコンポーネントは、デバイス５５０などのモバイルデバイス（図示せず）におけるその他のコンポーネントと組合されてもよい。このようなデバイスの各々は、コンピューティングデバイス５００，５５０のうちの１つ以上を含んでもよく、システム全体が、互いに通信する複数のコンピューティングデバイス５００，５５０で構成されてもよい。
【００７１】
コンピューティングデバイス５５０は、数あるコンポーネントの中でも特に、プロセッサ５５２と、メモリ５６４と、ディスプレイ５５４などの入出力デバイスと、通信インターフェイス５６６と、送受信機５６８とを含む。デバイス５５０にはまた、追加の格納を提供するために、マイクロドライブまたは他のデバイスなどの記憶装置が設けられてもよい。コンポーネント５５０，５５２，５６４，５５４，５６６および５６８の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。
【００７２】
プロセッサ５５２は、メモリ５６４に格納された命令を含む、コンピューティングデバイス５５０内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実装されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス５５０が実行するアプリケーション、およびデバイス５５０による無線通信の制御といった、デバイス５５０の他のコンポーネント同士の連携を提供してもよい。
【００７３】
プロセッサ５５２は、ディスプレイ５５４に結合された制御インターフェイス５５８およびディスプレイインターフェイス５５６を介してユーザと通信してもよい。ディスプレイ５５４は、たとえば、ＴＦＴ  ＬＣＤ（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：ＷＡＮ）、およびインターネットが挙げられる。
【００８３】
コンピューティングシステムは、クライアントおよびサーバを含んでもよい。クライアントおよびサーバは一般に互いに遠隔であり、典型的に通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作して互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
【００８４】
いくつかの実装例では、図５に示されるコンピューティングデバイスは、仮想現実とインターフェイス接続するセンサ（ＶＲヘッドセット５９０）を含み得る。たとえば、図５に示されるコンピューティングデバイス５５０または他のコンピューティングデバイス上に含まれる１つ以上のセンサは、ＶＲヘッドセット５９０への入力を提供でき、または一般に、ＶＲ空間への入力を提供できる。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、生体認証センサ、温度センサ、湿度センサ、および周囲光センサを含み得るものの、それらに限定されない。コンピューティングデバイス５５０はこれらのセンサを使用して、ＶＲ空間におけるコンピューティングデバイスの絶対位置および／または検出された回転を判断可能であり、それは次に、ＶＲ空間への入力として使用され得る。たとえば、コンピューティングデバイス５５０は、コントローラ、レーザポインタ、キーボード、武器などの仮想オブジェクトとしてＶＲ空間に組込まれてもよい。ＶＲ空間に組込まれた場合のコンピューティングデバイス／仮想オブジェクトのユーザによる位置付けは、ユーザが、ＶＲ空間において仮想オブジェクトをある態様で見るようにコンピューティングデバイスを位置付けることを可能にし得る。たとえば、仮想オブジェクトがレーザポインタを表わす場合、ユーザは、コンピューティングデバイスを、実際のレーザポインタであるかのように操作することができる。ユーザはコンピューティングデバイスをたとえば左右に、上下に、円形に動かして、レーザポインタを使用するのと同様の態様でデバイスを使用することができる。
【００８５】
いくつかの実装例では、コンピューティングデバイス５５０上に含まれる、またはコンピューティングデバイス５５０に接続される１つ以上の入力デバイスは、ＶＲ空間への入力として使用され得る。入力デバイスは、タッチスクリーン、キーボード、１つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイクロホン、入力機能性を有するイヤホンまたは小型イヤホン、ゲーミングコントローラ、または他の接続可能な入力デバイスを含み得るものの、それらに限定されない。コンピューティングデバイスがＶＲ空間に組込まれた場合にコンピューティングデバイス５５０上に含まれる入力デバイスとやりとりするユーザは、特定のアクションがＶＲ空間で生じるようにすることができる。
【００８６】
いくつかの実装例では、コンピューティングデバイス５５０のタッチスクリーンは、ＶＲ空間においてタッチパッドとしてレンダリングされ得る。ユーザは、コンピューティングデバイス５５０のタッチスクリーンとやりとりすることができる。やりとりは、たとえばＶＲヘッドセット５９０において、ＶＲ空間におけるレンダリングされたタッチパッド上の動きとしてレンダリングされる。レンダリングされた動きは、ＶＲ空間においてオブジェクトを制御することができる。
【００８７】
いくつかの実装例では、コンピューティングデバイス５５０上に含まれる１つ以上の出力デバイスは、ＶＲ空間においてＶＲヘッドセット５９０のユーザに出力および／またはフィードバックを提供することができる。出力およびフィードバックは、視覚、触覚、または音声によるものであり得る。出力および／またはフィードバックは、振動、１つ以上のライトまたはストロボをオンオフすることもしくは点滅および／または明滅させること、アラームを鳴らすこと、チャイムを鳴らすこと、歌を演奏すること、および音声ファイルを演奏することを含み得るものの、それらに限定されない。出力デバイスは、振動モータ、振動コイル、圧電デバイス、静電デバイス、発光ダイオード（ＬＥＤ）、ストロボ、およびスピーカを含み得るものの、それらに限定されない。
【００８８】
いくつかの実装例では、コンピューティングデバイス５５０は、コンピュータが生成した３Ｄ環境において別のオブジェクトのように見えてもよい。ユーザによるコンピューティングデバイス５５０とのやりとり（たとえば、タッチスクリーンを回転させ、振動させること、タッチスクリーンに触れること、タッチスクリーンを横切って指をスワイプすること）は、ＶＲ空間におけるオブジェクトとのやりとりとして解釈され得る。ＶＲ空間におけるレーザポインタの例では、コンピューティングデバイス５５０は、コンピュータが生成した３Ｄ環境において仮想レーザポインタのように見える。ユーザがコンピューティングデバイス５５０を操作すると、ユーザはＶＲ空間においてレーザポインタの動きを見る。ユーザは、コンピューティングデバイス５５０上またはＶＲヘッドセット５９０上で、ＶＲ環境におけるコンピューティングデバイス５５０とのやりとりからフィードバックを受信する。
【００８９】
いくつかの実装例では、コンピューティングデバイスに加えて１つ以上の入力デバイス（たとえばマウス、キーボード）が、コンピュータが生成した３Ｄ環境においてレンダリングされ得る。レンダリングされた入力デバイス（たとえば、レンダリングされたマウス、レンダリングされたキーボード）は、ＶＲ空間においてオブジェクトを制御するために、ＶＲ空間においてレンダリングされたとして使用され得る。
【００９０】
コンピューティングデバイス５００は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの、さまざまな形態のデジタルコンピュータを表わすよう意図されている。コンピューティングデバイス５５０は、携帯情報端末、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスといった、さまざまな形態のモバイルデバイスを表わすよう意図されている。ここに示されるコンポーネント、それらの接続および関係、ならびにそれらの機能は、単なる例示であるよう意図されており、本文書に記載のおよび／または請求項に記載の本発明の実装例を限定するよう意図されてはいない。
【００９１】
図６は、図３および図４に示されるようなヘッドマウントディスプレイの例示的な実装例を示す。図６において、ＨＭＤ６００を装着しているユーザは、携帯ハンドヘルド電子装置６０２を手に持っている。ハンドヘルド電子装置６０２は、たとえば、スマートフォン、コントローラ、ジョイスティック、または、ＨＭＤ６００によって生成される没入型仮想環境での対話のためにＨＭＤ６００とペアリングされ得るかもしくはＨＭＤ６００と通信し得るその他の携帯ハンドヘルド電子装置であってもよい。ハンドヘルド電子装置６０２は、たとえば、有線接続、またはたとえばＷｉＦｉもしくはブルートゥース接続などの無線接続を介して、ＨＭＤ６００に作動的に結合され得るかまたはＨＭＤ６００とペアリングされ得る。ハンドヘルド電子装置６０２とＨＭＤ６００とのこのペアリングまたは作動的な結合によって、ハンドヘルド電子装置６０２とＨＭＤ６００との間の通信、およびハンドヘルド電子装置６０２とＨＭＤ６００との間のデータ交換が提供され得る。これによって、ハンドヘルド電子装置６０２は、ＨＭＤ６００と通信して、ＨＭＤ６００によって生成される没入型仮想環境で対話するコントローラとして機能することができ得る。すなわち、たとえば、ハンドヘルド電子装置６０２によって放射されて、選択する仮想オブジェクトもしくは特徴に方向付けられるビームもしくは光線、および／またはハンドヘルド電子装置６０２のタッチ面上で受信する入力、および／またはハンドヘルド電子装置６０２の動きなどの、ハンドヘルド電子装置６０２の操作が、ＨＭＤ６００によって生成される没入型仮想環境における対応する選択、または動き、または他のタイプの対話に変換され得る。たとえば、ＨＭＤ６００は、ハンドヘルド電子装置６０２とともに、上述のような仮想環境を生成し得、ハンドヘルド電子装置６０２は、上述のような仮想環境における仮想の特徴に対するユーザのスケールまたはパースペクティブの変化をもたらすように操作され得る。
【００９２】
図７Ａおよび図７Ｂは、たとえば図６のユーザが装着しているＨＭＤ６００のような例示的なＨＭＤの斜視図であり、図７Ｃは、たとえば図６に示されるハンドヘルド電子装置６０２のような例示的なハンドヘルド電子装置を示す。
【００９３】
ハンドヘルド電子装置７０２は、装置７０２の内部コンポーネントが収容される筐体７０３と、ユーザがアクセスできる、筐体７０３の外側のユーザインターフェイス７０４とを含み得る。ユーザインターフェイス７０４は、ユーザタッチ入力を受信するように構成されたタッチセンシティブ面７０６を含み得る。ユーザインターフェイス７０４は、たとえば、作動ボタン、ノブ、ジョイスティックなどの、ユーザによって操作される他のコンポーネントも含み得る。いくつかの実装例では、ユーザインターフェイス７０４の少なくとも一部はタッチスクリーンとして構成されてもよく、ユーザインターフェイス７０４のその一部は、ユーザインターフェイス項目をユーザに対して表示するように、かつタッチセンシティブ面７０６上でユーザからのタッチ入力を受信するように構成される。ハンドヘルド電子装置７０２は、たとえばユーザインターフェイス７０４において受信したユーザ入力に応答してたとえばビームまたは光線などの光を筐体７０３のポートを通って選択的に放射するように構成された光源７０８も含み得る。
【００９４】
ＨＭＤ７００は、フレーム７２０に結合された筐体７１０を含み得、さらに、たとえばヘッドフォンに搭載されたスピーカを含む音声出力デバイス７３０がフレーム７２０に結合されている。図７Ｂにおいて、筐体７１０の前部７１０ａは、筐体７１０に収容されている部品の一部が見えるように、筐体７１０の基部７１０ｂから回転させられている。ディスプレイ７４０が、筐体７１０の前部７１０ａの内部に面する側に装着されてもよい。レンズ７５０が、筐体７１０の内部において、前部７１０ａが筐体７１０の基部７１０ｂに対して閉じられた位置にあるときにユーザの目とディスプレイ７４０との間になるように装着されてもよい。いくつかの実装例では、ＨＭＤ７００は、さまざまなセンサを含む検知システム７６０と、プロセッサ７９０およびＨＭＤ７００の操作を容易にするさまざまな制御システム装置を含む制御システム７７０とを含み得る。
【００９５】
いくつかの実装例では、ＨＭＤ７００は、静止画および動画を撮影するカメラ７８０を含み得る。カメラ７８０が撮影した画像は、現実世界におけるユーザおよび／もしくはハンドヘルド電子装置７０２の物理的な位置、または仮想環境に対する物理環境の追跡を助けるために用いられてもよく、ならびに／またはユーザに対してパススルーモードでディスプレイ７４０に表示することで、ユーザが、ＨＭＤ７００を外すことなく、そうでなければＨＭＤ７００の構成を変更して筐体７１０を動かしてユーザの視線から外すことなく、仮想環境を一時的に出て物理環境に戻ることができるようにしてもよい。
【００９６】
いくつかの実装例では、ＨＭＤ７００は、ユーザの目の注視を検出して追跡する注視追跡装置７６５を含み得る。注視追跡装置７６５は、たとえば瞳孔などのたとえばユーザの目の特定の部分などのユーザの目の画像を撮影して、ユーザの注視の方向および動きを検出して追跡する、たとえば１つまたは複数の画像センサ７６５Ａを含み得る。いくつかの実装例では、ＨＭＤ７００は、検出された注視が、没入型仮想体験における対応する対話に変換されることになるユーザ入力として処理されるように構成され得る。
【００９７】
多数の実施形態が説明された。しかしながら、本明細書の精神および範囲から逸脱することなくさまざまな変更がなされ得ることが理解されるであろう。
【００９８】
加えて、図面に示される論理フローは、所望の結果を達成するために、示された特定の順序または順番を必要としない。加えて、説明されたフローに対して他のステップが提供されてもよく、またはステップが除去されてもよく、説明されたシステムに対して他のコンポーネントが追加されてもよく、または除去されてもよい。したがって、他の実施形態は以下の特許請求の範囲内にある。
【図１】
0006793255.tif 000008
【図２】
0006793255.tif 000009
【図３】
0006793255.tif 000010
【図４】
0006793255.tif 000011
【図５】
0006793255.tif 000012
【図６】
0006793255.tif 000013
【図７Ａ】
0006793255.tif 000014
【図７Ｂ】
0006793255.tif 000015
【図７Ｃ】
0006793255.tif 000016