(57)【特許請求の範囲】
【請求項１】
仮想空間において仮想オブジェクトを操作する方法であって、前記仮想オブジェクトは、第１の物理空間内の、第１のユーザーとは別個の物理的物体と関連付けられ、
前記第１の物理空間を示す第１の奥行き画像データを受け取るステップと、
前記第１の奥行き画像データに表される物理的物体に基づいて仮想オブジェクトを生成するステップと、
前記物理的物体が第１のユーザーによって動かされている前記第１の物理空間を示す第２の奥行き画像データを受け取ることに応答して、前記仮想オブジェクトの対応する動きを表示するステップと、
第２のユーザーが前記仮想オブジェクトを動かすことを示すポーズ又はジェスチャーを行う、前記物理的物体が位置する前記第１の物理空間とは異なる第２の物理空間を示す第３の奥行き画像データを受け取ることに応答して、及び、前記第２のユーザーが前記仮想オブジェクトを動かしていないと決定することに応答して、前記仮想オブジェクトの動きを前記第１のユーザー、前記第２のユーザー、又は前記第１のユーザー及び前記第２のユーザに対して表示しないと決定するステップであって、前記第２のユーザーの骨格が識別され、前記ポーズ又はジェスチャーが前記骨格に対する所定の空間体積中にある場合に前記第２のユーザーが前記仮想オブジェクトを動かしたと決定され、前記ポーズ又はジェスチャーが前記骨格に対する所定の空間体積中にない場合に前記第２のユーザーが前記仮想オブジェクトを動かしていないと決定される、ステップと
を含む方法。
【請求項２】
前記仮想空間は、前記第１のユーザーの物理空間の表現、仮想的な部分空間、前記第２のユーザーの物理空間の表現又はそれらの組み合わせを含む請求項１に記載の方法。
【請求項３】
動作のスケールが存在し、前記仮想オブジェクトの対応する動きを表示するステップは、
前記動作のスケールによって修正される、前記物理的物体が動かされる量に基づいて、前記仮想オブジェクトの対応する動きを表示するステップを含む請求項１に記載の方法。
【請求項４】
前記仮想空間は、一人称の視点又は三人称の視点で前記第１のユーザーに提示される請求項１に記載の方法。
【請求項５】
仮想空間において仮想オブジェクトとインタラクトするためのシステムであって、前記仮想オブジェクトは、第１の物理空間内の、第１のユーザーとは別個の物理的物体と関連付けられ、
プロセッサによって実行されると、システムに、少なくとも、
第１の奥行き画像データに表される物理的物体に基づいて仮想オブジェクトを生成させ、
前記物理的物体が第１のユーザーによって動かされている前記第１の物理空間を示す第２の奥行き画像データを受け取ることに応答して、前記仮想オブジェクトの対応する動きを表示させ、
第２のユーザーが前記仮想オブジェクトを動かすことを示すポーズ又はジェスチャーを行う、前記物理的物体が位置する前記第１の物理空間とは異なる第２の物理空間を示す第３の奥行き画像データを受け取ることに応答して、及び、前記第２のユーザーが前記仮想オブジェクトを動かしていないと決定することに応答して、前記仮想オブジェクトの動きを前記第１のユーザー、前記第２のユーザー、又は前記第１のユーザー及び前記第２のユーザに対して表示しないと決定させ、前記第２のユーザーの骨格が識別され、前記ポーズ又はジェスチャーが前記骨格に対する所定の空間体積中にある場合に前記第２のユーザーが前記仮想オブジェクトを動かしたと決定され、前記ポーズ又はジェスチャーが前記骨格に対する所定の空間体積中にない場合に前記第２のユーザーが前記仮想オブジェクトを動かしていないと決定される、
命令を有するメモリー
を備えるシステム。
【請求項６】
仮想空間において仮想オブジェクトを操作するためのコンピューター読み取り可能な記憶媒体であって、前記仮想オブジェクトは、第１の物理空間内の、第１のユーザーとは別個の物理的物体と関連付けられ、コンピューター上で実行されると、コンピューターに、
前記第１の物理空間を示す第１の奥行き画像データを受け取るステップと、
前記第１の奥行き画像データに表される物理的物体に基づいて仮想オブジェクトを生成するステップと、
前記物理的物体が第１のユーザーによって動かされている前記第１の物理空間を示す第２の奥行き画像データを受け取ることに応答して、前記仮想オブジェクトの対応する動きを表示するステップと、
第２のユーザーが前記仮想オブジェクトを動かすことを示すポーズ又はジェスチャーを行う、前記物理的物体が位置する前記第１の物理空間とは異なる第２の物理空間を示す第３の奥行き画像データを受け取ることに応答して、及び、前記第２のユーザーが前記仮想オブジェクトを動かしていないと決定することに応答して、前記仮想オブジェクトの動きを前記第１のユーザー、前記第２のユーザー、又は前記第１のユーザー及び前記第２のユーザに対して表示しないと決定するステップであって、前記第２のユーザーの骨格が識別され、前記ポーズ又はジェスチャーが前記骨格に対する所定の空間体積中にある場合に前記第２のユーザーが前記仮想オブジェクトを動かしたと決定され、前記ポーズ又はジェスチャーが前記骨格に対する所定の空間体積中にない場合に前記第２のユーザーが前記仮想オブジェクトを動かしていないと決定される、ステップと
を含む動作を実行させるコンピューター読み取り可能な命令を含むコンピューター読み取り可能な記憶媒体。
【請求項７】
前記仮想空間は、前記第１のユーザーの物理空間の表現、仮想的な部分空間、前記第２のユーザーの物理空間の表現又はそれらの組み合わせを含む請求項５に記載のシステム。
【請求項８】
動作のスケールが存在し、プロセッサによって実行されるとシステムに少なくとも前記仮想オブジェクトの対応する動きを表示させる前記命令は、さらに、システムに、少なくとも、
前記動作のスケールによって修正される、前記物理的物体が動かされる量に基づいて、前記仮想オブジェクトの対応する動きを表示させる請求項５に記載のシステム。
【請求項９】
前記仮想空間は、一人称の視点又は三人称の視点で前記第１のユーザーに提示される請求項５に記載のシステム。
【請求項１０】
前記仮想空間は、前記第１のユーザーの物理空間の表現、仮想的な部分空間、前記第２のユーザーの物理空間の表現又はそれらの組み合わせを含む請求項６に記載のコンピューター読み取り可能な記憶媒体。
【請求項１１】
動作のスケールが存在し、前記仮想オブジェクトの対応する動きを表示するステップは、
前記動作のスケールによって修正される、前記物理的物体が動かされる量に基づいて、前記仮想オブジェクトの対応する動きを表示するステップを含む請求項６に記載のコンピューター読み取り可能な記憶媒体。
【請求項１２】
前記仮想空間は、一人称の視点又は三人称の視点で前記第１のユーザーに提示される請求項６に記載のコンピューター読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想オブジェクトの操作に関する。
【背景技術】
【０００２】
[0001]コンピューターゲームなどの多くのコンピューターアプリケーションは、ユーザーに仮想環境や仮想世界を提示する。これらの環境は、ユーザーがインタラクトし得る仮想オブジェクトをしばしば含む。通常、そのようなインタラクションは、コントローラー、リモコン、キーボード、マウスなどの入力装置を介して生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
残念なことに、そのような入力の方法は、ドアを開けるためにコントローラー上のボタンを押すなど、行われる動作とあまり相関しない。
【課題を解決するための手段】
【０００４】
[0002]したがって、仮想環境におけるカーソルに相当する、自分の手などの、ユーザーが制御する物理的な物体間のマッピングを使用して、仮想環境中の仮想オブジェクトとユーザーがインタラクトすることを可能にすることは改善につながる。そのような仮想オブジェクト操作を行う方法、システム及びコンピューター読み取り可能な媒体が本明細書において開示される。
【０００５】
[0003]例示的な実施例において、ユーザーの物理的なコントローラーは仮想環境中のカーソルに関連付けられる。ユーザーコントローラー入力が受け取られ、それから、対応するカーソル操作が決定される。カーソル操作が仮想オブジェクトの操作に対応する場合、仮想オブジェクトに対するその操作が行われ、結果が表示装置に表示される。
【０００６】
[0004]本開示の１つ以上の様々な態様が本開示の本明細書において参照される態様の達成のための回路及び／又はプログラミングを含むがこれらに限定されないことは、当業者によって理解される；回路及び／又はプログラミングは、システム設計者の設計選択に依存する、本明細書において参照される態様を達成するように構成された、ハードウェア、ソフトウェア及び／又はファームウェアの実質的に任意の組み合わせであり得る。
【０００７】
[0005]先のものは概要であり、したがって、必然的に、詳細についての単純化、一般化及び省略を含むものである。当業者であれば、この概要が例にすぎず、いかなるようにも限定的であると意図されないことを認識するであろう。
【０００８】
[0006]本明細書に従う仮想オブジェクトの操作のためのシステム、方法及びコンピューター読み取り可能な媒体は、添付の図面に関してさらに記載される。
【図面の簡単な説明】
【０００９】
【図１Ａ】[0007]目標認識、分析及び追跡システムの例示的な実施例をゲームをしているユーザーとともに示す。
【図１Ｂ】目標認識、分析及び追跡システムの例示的な実施例をゲームをしているユーザーとともに示す。
【図２】[0008]目標認識、分析及び追跡システムにおいて使用され得る取り込み装置の例示的な実施例を示す。
【図３Ａ】[0009]目標認識、分析及び追跡システムにおいて１つ以上のジェスチャーを解釈するために使用され得るコンピューター環境の例示的な実施例を示す。
【図３Ｂ】[0010]目標認識、分析及び追跡システムにおいて１つ以上のジェスチャーを解釈するために使用され得るコンピューター環境の別の例示的な実施例を示す。
【図４Ａ】[0011]図２の目標認識、分析及び追跡システムから生成されたユーザーの骨格マッピングを示す。
【図５】[0012]ユーザーのコントローラー操作を捕らえ、仮想オブジェクトのカーソル操作にそれをマッピングするシステムを示す。
【図６】[0013]仮想オブジェクト操作の例示的な動作手順を示す。
【発明を実施するための形態】
【００１０】
[0014]本明細書において記載されるように、ユーザーは、１つ以上のジェスチャーを行うことによって、ゲーム機、コンピューターなどのコンピューター環境上で実行するアプリケーションを制御し得る。１つの実施例によれば、ジェスチャーは、例えば取り込み装置によって受け取られてもよい。例えば、取り込み装置は、シーンの奥行き画像を捕らえてもよい。１つの実施例において、取り込み装置は、シーンにおける１つ以上の目標又はオブジェクトがユーザーなどの人間の目標に対応するかどうかを決定してもよい。シーンにおける目標又はオブジェクトが人間の目標に対応するかどうかを決定するために、目標の各々は、塗りつぶされて（flood filled）、人体モデルのパターンと比較されてもよい。人体モデルと一致する各々の目標又はオブジェクトは、その後、関連する骨格モデルを生成するためにスキャンされてもよい。その後、コンピューター環境が骨格モデルを追跡し、アバターを骨格モデルに関連付けられるものにし、例えば、骨格モデルから認識されたユーザーのジェスチャーに基づいてコンピューター環境上で実行するアプリケーションにおいてどの制御を実行するべきかを決定できるように、骨格モデルはコンピューター環境に提供されてもよい。ジェスチャー認識エンジンは、そのアーキテクチャはより完全に以下に記載されるが、特定のジェスチャーがユーザーによっていつなされたかを決定するために使用される。
【００１１】
[0015]図１Ａ及び１Ｂは、目標認識、分析及び追跡システム１０の構成の例示的な実施例をボクシングゲームをするユーザー１８とともに示す。例示的な実施例において、目標認識、分析及び追跡システム１０は、ユーザー１８などの人間の目標を認識し、分析し及び／又は追跡するために使用され得る。
【００１２】
[0016]図１Ａに示されるように、目標認識、分析及び追跡システム１０は、コンピューター環境１２を含んでもよい。コンピューター環境１２は、コンピューター、ゲームシステム又はゲーム機などであってもよい。例示的な実施例によれば、コンピューター環境１２がゲームアプリケーション、ゲームではないアプリケーションなどのアプリケーションを実行するために使用され得るように、コンピューター環境１２はハードウェアコンポーネント及び／又はソフトウェアコンポーネントを含んでもよい。
【００１３】
[0017]図１Ａに示されるように、目標認識、分析及び追跡システム１０は、さらに、取り込み装置２０を含んでもよい。取り込み装置２０は、例えば、ユーザー１８などの１人以上のユーザーを視覚的に監視するのに使用され得るカメラであってもよく、その結果、１人以上のユーザーによって行われるジェスチャーは、より詳細に以下に記載されるように、アプリケーション内の１つ以上の制御又は動作を行うために捕らえられ、分析され、追跡されてもよい。
【００１４】
[0018]１つの実施例によれば、目標認識、分析及び追跡システム１０は、ユーザー１８などのユーザーにゲームもしくはアプリケーションの映像及び／又は音声を提供し得るテレビ、モニター、高解像度テレビ（ＨＤＴＶ）などの視聴覚装置１６に接続されてもよい。例えば、コンピューター環境１２は、グラフィックカードなどのビデオアダプター及び／又はゲームアプリケーション、ゲームでないアプリケーションなどに関連した視聴覚信号を提供し得る音声カードなどの音声アダプターを含んでもよい。視聴覚装置１６は、コンピューター環境１２から視聴覚信号を受け取り、次に、視聴覚信号に関連したゲーム又はアプリケーションの映像及び／又は音声をユーザー１８へ出力してもよい。１つの実施例によれば、視聴覚装置１６は、例えば、Ｓビデオケーブル、同軸ケーブル、ＨＤＭＩケーブル、ＤＶＩケーブル、ＶＧＡケーブルなどを介してコンピューター環境１２に接続されてもよい。
【００１５】
[0019]図１Ａ及び１Ｂに示されるように、目標認識、分析及び追跡システム１０は、ユーザー１８などの人間の目標を認識し、分析し及び／又は追跡するために使用され得る。例えば、ユーザー１８は、ユーザー１８の動作がコンピューター環境１２によって実行されているアプリケーションに影響を及ぼすために使用され得るコントロールとして解釈されてもよいように、取り込み装置２０を使用して追跡されてもよい。したがって、１つの実施例によれば、ユーザー１８は、アプリケーションを制御するために自分の体を動かしてもよい。
【００１６】
[0020]図１Ａ及び１Ｂに示されるように、例示的な実施例において、コンピューター環境１２上で実行するアプリケーションはユーザー１８がしていてもよいボクシングゲームかもしれない。例えば、コンピューター環境１２は、ボクシングの相手２２の視覚的な表現をユーザー１８へ提供するために、視聴覚装置１６を使用してもよい。コンピューター環境１２はまた、ユーザー１８が自分の動作によって制御し得るプレーヤーのアバター２４の視覚的な表現を提供するために、視聴覚装置１６を使用してもよい。例えば、図１Ｂに示されるように、プレーヤーのアバター２４にゲーム空間でパンチを繰り出させるために、ユーザー１８は物理空間中でパンチを繰り出してもよい。したがって、例示的な実施例によれば、目標認識、分析及び追跡システム１０のコンピューター環境１２及び取り込み装置２０は、パンチがゲーム空間におけるプレーヤーのアバター２４についてのゲーム制御として解釈され得るように、物理空間におけるユーザー１８のパンチを認識し分析するために使用され得る。
【００１７】
[0021]ユーザー１８による他の動作はまた、軽く叩き、擦り抜け、すり足で動き、ブロックし、ジャブで突き、又は様々な異なるパワーのパンチを繰り出すための制御などの他の制御又は動作として解釈されてもよい。さらに、幾つかの動作は、プレーヤーのアバター２４の制御以外の動作に対応し得る制御として解釈されてもよい。例えば、プレーヤーは、ゲームを終了し、中止し又はセーブし、レベルを選択し、ハイスコアを見て、友達と通信したりするための動きを使用してもよい。
【００１８】
[0022]例示的な実施例において、ユーザー１８などの人間の目標は物体を持っていてもよい。そのような実施例において、コンピューターゲームのユーザーは、プレーヤーと物体の運きがゲームのパラメーターを調節及び／又は制御するために使用され得るように、物体を保持していてもよい。例えば、ラケットを保持するプレーヤーの運きは、コンピュータースポーツゲームにおけるスクリーン上のラケットの制御のために追跡され利用されてもよい。別の例示的な実施例において、物体を保持するプレーヤーの運きは、コンピューター戦闘ゲームにおけるスクリーン上の武器の制御のために追跡され利用されてもよい。
【００１９】
[0023]他の例示的な実施例によれば、目標認識、分析及び追跡システム１０は、さらに、オペレーティングシステム及び／又はゲームの領域の外にあるアプリケーションの制御として、目標の動作を解釈するために使用されてもよい。例えば、オペレーティングシステム及び／又はアプリケーションの実質的に任意の制御可能な態様が、ユーザー１８などの目標の動作によって制御されてもよい。
【００２０】
[0024]図２は、目標認識、分析及び追跡システム１０において使用され得る取り込み装置２０の例示的な実施例を示す。例示的な実施例によれば、取り込み装置２０は、例えば、飛行時間、構造化された光、ステレオ画像などを含む任意の適切な技術を介して奥行き値を含み得る、奥行き画像を含む奥行き情報を備えた動画を得るように構成されてもよい。１つの実施例によれば、取込み装置２０は、「Ｚ層」、すなわち、そのライン・オブ・サイトに沿って奥行きカメラから延在するＺ軸に対して垂直な層へと、計算された奥行き情報を組織化してもよい。
【００２１】
[0025]図２に示されるように、取り込み装置２０は画像カメラコンポーネント２２を含んでもよい。例示的な実施例によれば、画像カメラコンポーネント２２は、シーンの奥行き画像を捕らえることができる奥行きカメラであってもよい。奥行き画像は、捕らえられたシーンの二次元の（２−Ｄ）画素領域を含んでもよく、２−Ｄ画素領域における各画素は、カメラからの捕らえられたシーンにおける物体の長さを、例えば、センチメートル、ミリメートルなどで表してもよい。
【００２２】
[0026]図２に示されるように、例示的な実施例によれば、画像カメラコンポーネント２２は、シーンの奥行き画像を捕らえるために使用され得るＩＲ光コンポーネント２４、三次元の（３−Ｄ）カメラ２６及びＲＧＢカメラ２８を含んでもよい。例えば、飛行時間の分析では、取り込み装置２０のＩＲ光コンポーネント２４は、シーン上に赤外光を放射し、次に、例えば、３−Ｄカメラ２６及び／又はＲＧＢカメラ２８を使用して、シーンにおける１つ以上の目標及び物体の表面からの後方散乱光を検出するためにセンサー（図示せず）を使用してもよい。いくつかの実施例において、出ていく光パルスと対応する入ってくる光パルスとの間の時間が測定され、取り込み装置２０からシーンにおける目標又は物体上の特定の位置までの物理的な距離を決定するために使用され得るように、パルス赤外光が使用されてもよい。さらに、他の例示的な実施例において、出ていく光波の位相は、位相シフトを決定するために、入ってくる光波の位相と比較されてもよい。その後、位相シフトは、取り込み装置から目標又はオブジェクト上の特定の位置までの物理的な距離を決定するために使用され得る。
【００２３】
[0027]別の例示的な実施例によれば、シャッターされた（shuttered）光パルスイメージングを含む様々な技術によって、時間にわたって反射された光ビームの強度を分析することにより、取込み装置２０から目標又は物体における特定の位置までの物理的な距離を間接的に決定するために、飛行時間の分析が使用され得る。
【００２４】
[0028]別の例示的な実施例において、取り込み装置２０は、奥行き情報を捕らえるために構造化された光を使用してもよい。そのような分析では、パターン化された（patterned）光（すなわち、グリッドパターン又はストライプパターンなどの既知のパターンとして表示された光）が、例えばＩＲ光コンポーネント２４を介してシーン上に投影されてもよい。１つ以上の目標又は物体の表面に当たると、パターンは、応答して変形されてもよい。パターンのそのような変形は、例えば、３−Ｄカメラ２６及び／又はＲＧＢカメラ２８によって捕らえられ、次に、取り込み装置から目標又は物体における特定の位置までの物理的な距離を決定するために分析されてもよい。
【００２５】
[0029]別の実施例によれば、取り込み装置２０は、奥行き情報を生成するために解像され得る視覚的なステレオデータを得るために、異なる角度からシーンを見ることができる２つ以上の物理的に分離されたカメラを含んでもよい。
【００２６】
[0030]取り込み装置２０はさらにマイクロホン３０を含んでもよい。マイクロホン３０は、音声を受け取って電気信号へ変換することができるトランスデューサー又はセンサーを含んでもよい。１つの実施例によれば、マイクロホン３０のアレイは、音声を受け取る単一のマイクロホンと比較して、フィードバック又は音声ひずみを低減するために使用され得る。さらに、マイクロホン３０は、コンピューター環境１２によって実行されてもよいゲームアプリケーション、ゲームでないアプリケーションなどのアプリケーションを制御するためにユーザーによって提供され得る音声信号を受け取るために使用され得る。
【００２７】
[0031]例示的な実施例において、取り込み装置２０は、画像カメラコンポーネント２２と動作可能に通信し得るプロセッサー３２をさらに含んでもよい。プロセッサー３２は、奥行き画像を受け取り、適切な目標が奥行き画像に含まれているかどうかを決定し、適切な目標を目標の骨格表現又はモデルへと変換するための命令、又は任意の他の適切な命令を含み得る命令を実行してもよい、標準化されたプロセッサー、専門のプロセッサー、マイクロプロセッサーなどを含んでもよい。
【００２８】
[0032]取り込み装置２０は、さらに、プロセッサー３２によって実行され得る命令、３−Ｄカメラ又はＲＧＢカメラによって捕らえられる画像又は画像のフレーム、又は任意の他の適切な情報、画像などを格納してもよいメモリーコンポーネント３４を含んでもよい。例示的な実施例によれば、メモリーコンポーネント３４は、ランダムアクセスメモリー（ＲＡＭ）、読み取り専用メモリー（ＲＯＭ）、キャッシュ、フラッシュメモリー、ハードディスク又は任意の他の適切な記憶コンポーネントを含んでもよい。図２に示されるように、１つの実施例において、メモリーコンポーネント３４は、画像取り込みコンポーネント２２及びプロセッサー３２と通信する別個のコンポーネントであってもよい。別の実施例によれば、メモリーコンポーネント３４は、プロセッサー３２及び／又は画像取り込みコンポーネント２２へ統合されてもよい。
【００２９】
[0033]図２に示されるように、取り込み装置２０は、通信リンク３６を介してコンピューター環境１２と通信してもよい。通信リンク３６は、例えば、ＵＳＢ接続、Ｆｉｒｅｗｉｒｅ接続、イーサネット（登録商標）ケーブル接続などを含む有線接続、及び／又は無線８０２．１１Ｂ、ｇ、ａ又はｎ接続などの無線接続であってもよい。１つの実施例によれば、コンピューター環境１２は、例えば、通信リンク３６を介していつシーンを捕らえるかを決定するために使用され得るクロックを取り込み装置２０に提供してもよい。
【００３０】
[0034]さらに、取り込み装置２０は、例えば、３−Ｄカメラ２６及び／又はＲＧＢカメラ２８によって捕らえられた奥行き情報及び画像、並びに、取り込み装置２０によって生成され得る骨格モデルを、通信リンク３６を介してコンピューター環境１２へ提供してもよい。その後、コンピューター環境１２は、例えば、ユーザーのジェスチャーを認識し、応答してゲーム又はワードプロセッサーなどのアプリケーションを制御するために、骨格モデル、奥行き情報及び取得された画像を使用してもよい。例えば、図２に示されるように、コンピューター環境１２はジェスチャー認識エンジン１９０を含んでもよい。ジェスチャー認識エンジン１９０は、（ユーザーが動くときに）骨格モデルによって行われてもよいジェスチャーに関する情報を各々が含む、一群のジェスチャー・フィルターを含んでもよい。ユーザーが（骨格モデルによって表されるように）いつ１つ以上のジェスチャーを行ったかを識別するために、カメラ２６、２８及び装置２０によって捕らえられた、骨格モデル及びそれに関連付けられる動作の形式のデータは、ジェスチャー認識エンジン１９０のジェスチャー・フィルターと比較されてもよい。それらのジェスチャーは、アプリケーションの様々な制御に関連付けられてもよい。したがって、コンピューター環境１２は、骨格モデルの動作を解釈し、動作に基づいてアプリケーションを制御するためにジェスチャー認識エンジン１９０を使用してもよい。
【００３１】
[0035]図３Ａは、目標認識、分析及び追跡システムにおいて１つ以上のジェスチャーを解釈するために使用され得るコンピューター環境の例示的な実施例を示す。図１Ａ−２に関して上に記載されたコンピューター環境１２などのコンピューター環境は、ゲーム機などのマルチメディアコンソール１００であってもよい。図３Ａに示されるように、マルチメディアコンソール１００は、１次キャッシュ１０２、２次キャッシュ１０４及びフラッシュＲＯＭ（読み取り専用メモリー）１０６を有する中央処理装置（ＣＰＵ）１０１を有する。１次キャッシュ１０２及び２次キャッシュ１０４は、一時的にデータを格納し、したがってメモリーアクセスサイクルの数を減らし、それによって、処理速度とスループットを改善する。ＣＰＵ１０１は、１つより多くのコア、したがって、追加の１次及び２次キャッシュ１０２及び１０４を有するように提供されてもよい。フラッシュＲＯＭ１０６は、マルチメディアコンソール１００に電源が入れられる場合、ブート処理の初期段階中にロードされる実行可能コードを格納してもよい。
【００３２】
[0036]グラフィック処理部（ＧＰＵ）１０８及びビデオエンコーダー／ビデオコーデック（コーダー／デコーダー）１１４は、高速及び高解像度のグラフィック処理のためのビデオ処理パイプラインを形成する。データは、バスを介してグラフィック処理部１０８からビデオエンコーダー／ビデオコーデック１１４まで運ばれる。ビデオ処理パイプラインは、テレビ又は他のディスプレイへの送信のために、データをＡ／Ｖ（音声／ビデオ）ポート１４０へ出力する。ＲＡＭ（ランダムアクセスメモリー）等を含むがこれに限定されない様々な種類のメモリー１１２へのプロセッサーのアクセスを容易にするために、メモリーコントローラー１１０はＧＰＵ１０８に接続される。
【００３３】
[0037]マルチメディアコンソール１００は、好ましくはモジュール１１８上で実施される、Ｉ／Ｏコントローラー１２０、システム管理コントローラー１２２、音声処理部１２３、ネットワークインターフェースコントローラー１２４、第１のＵＳＢホストコントローラー１２６、第２のＵＳＢコントローラー１２８及び前面パネルＩ／Ｏサブアセンブリー１３０を含む。ＵＳＢコントローラー１２６及び１２８は、周辺コントローラー１４２（１）−１４２（２）、無線アダプター１４８及び外部記憶装置１４６（例えば、フラッシュメモリー、外部ＣＤ／ＤＶＤ  ＲＯＭドライブ、取り外し可能な媒体など）のホストとして役立つ。ネットワークインターフェース１２４及び／又は無線アダプター１４８は、ネットワーク（例えば、インターネット、ホームネットワークなど）へのアクセスを提供し、イーサネットカード、モデム、ブルートゥース（登録商標）モジュール、ケーブルモデムなどを含む、種々様々の有線又は無線アダプターコンポーネントのうちいずれであってもよい。
【００３４】
[0038]システムメモリー１４３はブート処理中にロードされるアプリケーションデータを格納するために提供される。メディアドライブ１４４が提供され、ＤＶＤ／ＣＤドライブ、ハードドライブ又は他の取り外し可能な媒体ドライブなどを含んでもよい。メディアドライブ１４４はマルチメディアコンソール１００の内部にあってもよいし又は外部にあってもよい。アプリケーションデータはマルチメディアコンソール１００による実行、再生などのためにメディアドライブ１４４を介してアクセスされてもよい。メディアドライブ１４４は、シリアルＡＴＡバス又は他の高速接続（例えば、ＩＥＥＥ  １３９４）などのバスを介してＩ／Ｏコントローラー１２０に接続される。
【００３５】
[0039]システム管理コントローラー１２２は、マルチメディアコンソール１００の能力の保証と関連する様々なサービス機能を提供する。音声処理部１２３及び音声コーデック１３２は、ハイファイ及びステレオ処理を備えた対応する音声処理パイプラインを形成する。音声データは、通信リンクを介して音声処理部１２３と音声コーデック１３２との間で運ばれる。音声能力を有する外部音声プレーヤー又は装置による再生のために、音声処理パイプラインはＡ／Ｖポート１４０へデータを出力する。
【００３６】
[0040]前面パネルＩ／Ｏサブアセンブリー１３０は、電源ボタン１５０及び取り出しボタン１５２の機能のほか、マルチメディアコンソール１００の外側表面上に露出した、任意のＬＥＤ（発光ダイオード）又は他のインジケーターをサポートする。システム電源モジュール１３６はマルチメディアコンソール１００のコンポーネントに電力を提供する。ファン１３８は、マルチメディアコンソール１００内の回路を冷やす。
【００３７】
[0041]ＣＰＵ１０１、ＧＰＵ１０８、メモリーコントローラー１１０及びマルチメディアコンソール１００内の様々な他のコンポーネントは、シリアル及びパラレルバス、メモリーバス、周辺バス、並びに様々なバスアーキテクチャーのうちの任意のものを使用するプロセッサー又はローカルバスを含む１つ以上のバスを介して相互に接続される。例として、そのようなアーキテクチャーは、周辺コンポーネント相互接続（ＰＣＩ）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバスなどを含んでもよい。
【００３８】
[0042]マルチメディアコンソール１００に電源が入れられる場合、アプリケーションデータはシステムメモリー１４３からメモリー１１２及び／又はキャッシュ１０２、１０４にロードされ、ＣＰＵ１０１上で実行されてもよい。マルチメディアコンソール１００上で利用可能な異なるメディアタイプにナビゲートする場合、アプリケーションは、一貫したユーザー経験を提供するグラフィカルユーザーインターフェースを提示してもよい。動作において、マルチメディアコンソール１００に追加の機能を提供するために、アプリケーション及び／又はメディアドライブ１４４内に含まれる他の媒体は、メディアドライブ１４４から開始されてもよいしプレイされてもよい。
【００３９】
[0043]マルチメディアコンソール１００は、テレビ又は他のディスプレイに単にシステムを接続することにより、スタンドアローンシステムとして動作されてもよい。このスタンドアローンモードでは、マルチメディアコンソール１００は、１人以上のユーザーがシステムとインタラクトしたり、映画を見たり、又は音楽を聴いたりすることを可能にする。しかし、ネットワークインターフェース１２４又は無線アダプター１４８を介して利用可能になる広帯域接続の統合により、マルチメディアコンソール１００は、さらに、より大きなネットワークコミュニティの参加者として動作されてもよい。
【００４０】
[0044]マルチメディアコンソール１００に電源が入れられる場合、設定された量のハードウェア資源がマルチメディアコンソール・オペレーティングシステムによるシステムの使用のために予約される。これらの資源は、メモリー（例えば、１６ＭＢ）、ＣＰＵ及びＧＰＵサイクル（例えば、５％）、ネットワーキング帯域幅（例えば、８ｋｂｓ）などの予約を含んでもよい。これらの資源がシステム・ブート時間において予約されるので、予約された資源はアプリケーションの視界（ビュー）から存在しない。
【００４１】
[0045]特に、メモリーの予約は、開始（launch）カーネル、並行システムアプリケーション及びドライバーを含むのに十分なほど大きなことが好ましい。ＣＰＵの予約は、予約されるＣＰＵの使用がシステムアプリケーションによって使用されない場合、使用されていないスレッドが任意の未使用のサイクルを消費するように、一定であることが好ましい。
【００４２】
[0046]ＧＰＵの予約に関して、システムアプリケーション（例えば、ポップアップ）によって生成された軽量のメッセージは、ポップアップをオーバーレイへとレンダリングするためのコードを予定するためにＧＰＵ割り込みを使用することにより表示される。オーバーレイに必要なメモリーの量は、オーバーレイ領域のサイズに依存し、オーバーレイは好ましくは画面解像度に対応する。十分なユーザーインターフェースが並行システムアプリケーションによって使用される場合、アプリケーションの解像度と無関係な解像度を使用することが望ましい。周波数を変化させてテレビ再同期を引き起こす必要性が除去されるよう、スケーラーはこの解像度を設定するために使用され得る。
【００４３】
[0047]マルチメディアコンソール１００がブートし、システムリソースが予約された後、並行システムアプリケーションはシステム機能を提供するために実行する。システム機能は、上に記載された予約されたシステムリソース内で実行する１組のシステムアプリケーションにカプセル化される。オペレーティングシステムのカーネルは、ゲームアプリケーションに対するシステムアプリケーションスレッドであるスレッドを識別する。システムアプリケーションは、好ましくは、アプリケーションに対して一貫したシステムリソース・ビューを提供するために、所定の時間及び間隔においてＣＰＵ１０１上で実行するように予定される。スケジューリングは、コンソール上で動作するゲームアプリケーションのためのキャッシュの混乱を最小化するものである。
【００４４】
[0048]並行システムアプリケーションが音声を要求する場合、音声処理は、時間感度のために、ゲームアプリケーションに対して非同期に予定される。システムアプリケーションがアクティブな場合、マルチメディアコンソールアプリケーション・マネージャー（以下に述べられる）はゲームアプリケーションの音声レベル（例えば、ミュート、減衰）を制御する。
【００４５】
[0049]入力装置（例えば、コントローラー１４２（１）及び１４２（２））はゲームアプリケーション及びシステムアプリケーションによって共有される。入力装置は予約される資源ではないが、各々が装置の中心を有するように、システムアプリケーションとゲームアプリケーションとの間で切り替えられるべきである。アプリケーションマネージャーは、好ましくは、ゲームアプリケーションの知識なしに、入力ストリームのスイッチングを制御し、ドライバーは、焦点スイッチに関する状態情報を保持する。カメラ２６、２８及び取り込み装置２０は、コンソール１００のための追加の入力デバイスを定義してもよい。
【００４６】
[0050]図３Ｂは、目標認識、分析及び追跡システムにおいて１つ以上のジェスチャーを解釈するために使用される、図１Ａ−２に示されるコンピューター環境１２であってもよいコンピューター環境２２０の別の例示的な実施例を示す。コンピューターシステム環境２２０は、適切なコンピューター環境の１つの例にすぎず、本願に開示された主題の使用又は機能の範囲に関していかなる限定も示唆するようには意図されない。また、コンピューター環境２２０は、例示的な動作環境２２０に示されたコンポーネントのうちのいかなる１つ又は組み合わせに関連するいかなる依存性も要件も有しているものとは解釈されるべきでない。いくつかの実施例において、様々な示された計算要素は、本開示の特定の態様を説明するように構成された回路を含んでもよい。例えば、本開示の中で使用される回路という用語は、ファームウェア又はスイッチによって機能を実行するように構成された専門のハードウェアコンポーネントを含んでもよい。他の例示的な実施例において、回路という用語は、機能を実行するように動作可能なロジックを具体化するソフトウェア命令によって構成された、汎用演算処理装置、メモリーなどを含んでもよい。回路が装置とソフトウェアの組み合わせを含む例示的な実施例において、開発者は、ロジックを具体化するソースコードを書いてもよく、ソースコードは、汎用演算処理装置によって処理することができる、機械読み取り可能なコードへコンパイルすることができる。当業者であれば、ハードウェア、ソフトウェア又はハードウェア／ソフトウェアの組み合わせの間の違いがほとんどない点へと最先端技術が進化したことを認識することができるので、特定の機能を有効にするためのハードウェア対ソフトウェアの選択は開発者に委ねられた設計選択である。より具体的には、当業者は、ソフトウェアプロセスが等価なハードウエア構造に転換することができ、ハードウエア構造はそれ自体等価なソフトウェアプロセスに転換することができることを認識することができる。したがって、ハードウェア実装対ソフトウェア実装の選択は設計選択のうちの１つであり、開発者に委ねられている。
【００４７】
[0051]図３Ｂにおいて、コンピューター環境２２０はコンピューター２４１を含み、それは、通常、様々なコンピューター読み取り可能な媒体を含む。コンピューター読み取り可能な媒体は、コンピューター２４１によってアクセスすることができ、揮発性及び不揮発性の媒体、取り外し可能な媒体及び取り外し不能な媒体の両方を含む任意の利用可能な媒体であってもよい。システムメモリー２２２は、コンピューター記憶媒体を、読み取り専用メモリー（ＲＯＭ）２２３及びランダムアクセスメモリー（ＲＡＭ）２６０などの揮発性及び／又は不揮発性メモリーの形式で含む。起動中などに、コンピューター２４１内の要素間で情報を転送するのを支援する基本ルーチンを含む基本入出力システム２２４（ＢＩＯＳ）は、ＲＯＭ２２３に通常格納される。ＲＡＭ２６０は、通常、演算処理装置２５９に直ちにアクセス可能であり及び／又は演算処理装置２５９によって現在動作されているデータ及び／又はプログラムモジュールを含む。限定ではなく例として、図３Ｂは、オペレーティングシステム２２５、アプリケーションプログラム２２６、他のプログラムモジュール２２７及びプログラムデータ２２８を示す。
【００４８】
[0052]コンピューター２４１はまた、他の取り外し可能／取り外し不能な、揮発性／不揮発性のコンピューター記憶媒体を含んでもよい。ほんの一例として、図３Ｂは、取り外し不能で不揮発性の磁気媒体から読み出し又はそれに書き込むハードディスクドライブ２３８、取り外し可能で不揮発性の磁気ディスク２５４から読み出し又はそれに書き込む磁気ディスクドライブ２３９、及びＣＤＲＯＭ又は他の光学の媒体などの取り外し可能な不揮発性の光ディスク２５３から読み出し又はそれに書き込む光ディスクドライブ２４０を示す。例示的な動作環境の中で使用することができる、他の取り外し可能／取り外し不能な、揮発性／不揮発性のコンピューター記憶媒体は、磁気カセットテープ、フラッシュメモリーカード、デジタル・バーサタイル・ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含むが、これらに限定されない。ハードディスクドライブ２３８は、通常、インターフェース２３４などの取り外し不能なメモリーインターフェースを介してシステムバス２２１に接続され、磁気ディスクドライブ２３９及び光ディスクドライブ２４０は、通常、インターフェース２３５などの取り外し可能なメモリーインターフェースによってシステムバス２２１に接続される。
【００４９】
[0053]上に記載され図３Ｂに示されたドライブ及びそれらの関連するコンピューター記憶媒体は、コンピューター２４１のための、コンピューター読み取り可能な命令、データ構造、プログラムモジュール及び他のデータの記憶を提供する。図３Ｂにおいて、例えば、ハードディスクドライブ２３８は、オペレーティングシステム２５８、アプリケーションプログラム２５７、他のプログラムモジュール２５６及びプログラムデータ２５５を格納するものとして示される。これらのコンポーネントが、オペレーティングシステム２２５、アプリケーションプログラム２２６、他のプログラムモジュール２２７及びプログラムデータ２２８と同じであってもよいし異なっていてもよいことに留意されたい。オペレーティングシステム２５８、アプリケーションプログラム２５７、他のプログラムモジュール２５６及びプログラムデータ２５５は、少なくとも、それらが異なるコピーであることを示すために、ここでは異なる番号を与えられる。ユーザーは、キーボード２５１及び一般にマウス、トラックボール又はタッチパッドと呼ばれるポインティングデバイス２５２などの入力装置を介してコンピューター２４１へコマンドと情報を入力してもよい。他の入力装置（図示せず）は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナーなどを含んでもよい。これら及び他の入力装置は、システムバスに結合されるユーザー入力インターフェース２３６を介して演算処理装置２５９にしばしば接続されるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェース及びバス構造によって接続されてもよい。カメラ２６、２８及び取り込み装置２０は、コンソール１００のための追加の入力装置を定義してもよい。モニター２４２又は他の種類の表示装置はまた、ビデオインターフェース２３２などのインターフェースを介してシステムバス２２１に接続される。モニターに加えて、コンピューターはまた、出力周辺インターフェース２３３を介して接続され得るスピーカー２４４及びプリンター２４３などの他の周辺の出力装置を含んでもよい。
【００５０】
[0054]コンピューター２４１は、リモートコンピューター２４６などの１つ以上のリモートコンピューターへの論理接続を使用して、ネットワーク化された環境において動作してもよい。記憶装置２４７のみが図３Ｂに示されたが、リモートコンピューター２４６は、パーソナルコンピューター、サーバ、ルーター、ネットワークＰＣ、ピア装置又は他の共通ネットワークノードであってもよく、通常、コンピューター２４１に関連して上に記載された要素のうちの多く又はすべてを含む。図３Ｂに示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）２４５及び広域ネットワーク（ＷＡＮ）２４９を含むが、他のネットワークを含んでもよい。そのようなネットワーキング環境は、オフィス、企業規模のコンピューターネットワーク、イントラネット及びインターネットにおいて通常のものである。
【００５１】
[0055]ＬＡＮネットワーキング環境中で使用される場合、コンピューター２４１はネットワークインターフェース又はアダプター２３７を介してＬＡＮ２４５に接続される。ＷＡＮネットワーキング環境中で使用される場合、コンピューター２４１は、通常、インターネットなどのＷＡＮ２４９を介した通信を確立するためのモデム２５０又は他の手段を含む。内部にあっても外部にあってもよいモデム２５０は、ユーザー入力インターフェース２３６又は他の適切な機構を介してシステムバス２２１に接続されてもよい。ネットワーク化された環境では、コンピューター２４１又はその一部に関連して示されるプログラムモジュールは、遠隔記憶装置に格納されてもよい。限定ではなく例として、図３Ｂは、リモートアプリケーションプログラム２４８をメモリー装置２４７上に存在するものとして示す。示されたネットワーク接続は例示的なものであり、コンピューター間で通信リンクを確立する他の手段が使用されてもよいことが理解される。
【００５２】
[0056]図４Ａは、取り込み装置２０から生成され得るユーザーについての例示的な骨格マッピングを描く。この実施例において、様々な関節及び骨が識別される：各手３０２、各前腕３０４、各肘３０６、各二頭筋３０８、各肩３１０、各腰３１２、各もも３１４、各膝３１６、各前足３１８、各足３２０、頭３２２、胴３２４、背骨の上端３２６及び下端３２８、並びにウエスト３３０。より多くの点が追跡される場合、指もしくはつま先の骨及び関節、又は鼻及び目などの顔の個々の特徴など、追加の特徴が識別されてもよい。
【００５３】
[0057]自分の体を動かすことによって、ユーザーはジェスチャーを作成することができる。ジェスチャーは、画像データとして捕らえられ、目的のために解析され得る、ユーザーによる動き又は姿勢を含む。ジェスチャーは動的なものであってもよく、ボールを投げることを真似することなどの動作を含む。ジェスチャーは、人が自分の胴３２４の前で交差させた前腕３０４を保つなど、静的な姿勢であってもよい。ジェスチャーはまた、模擬の剣をスイングすることによるなど、支え（props）を組込んでもよい。ジェスチャーは、手３０２をともに叩くことなど、１つより多くの体の部分、又は唇をすぼめるなどの微妙な動作を含んでもよい。
【００５４】
[0058]ジェスチャーは汎用のコンピューティングのコンテキストにおける入力に使用され得る。例えば、手３０２又は他の体の部分の様々な運きは、階層リスト中で上下にナビゲートし、ファイルを開き、ファイルを閉じ、ファイルを保存するなどの共通システムの広範なタスクに対応してもよい。ジェスチャーまた、ゲームに依存して、ビデオゲームに特有のコンテキストにおいて使用され得る。例えば、ドライビングゲームの場合、手３０２及び足３２０の様々な運きは、車両をある方向に操縦し、ギヤを変え、加速し及びブレーキをかけることに対応してもよい。
【００５５】
[0059]ユーザーは、適当な位置において自分を歩かせたり走らせたりすることにより、ウォーキング又はランニングに対応するジェスチャーを生成してもよい。ユーザーは、移動することなくウォーキングを模倣するために、各脚３１２−３２０を交互に上げ下げしてもよい。システムは各腰３１２及び各もも３１４の分析によりこのジェスチャーを解析してもよい。１つの腰−ももの角度（垂線に対して測定され、立っている脚は０°の腰−ももの角度を有し、前に水平に伸びた脚は９０°の腰−ももの角度を有する）が他のももに関するあるしきい値を越える場合、歩み（ステップ）が認識されてもよい。歩行又は走行は、脚を交互に入れ替えることによって連続する幾つかのステップの後に認識されてもよい。２つの最も最近のステップの間の時間は期間として考えられてもよい。そのしきい値角度が満たされない幾つかの期間の後、システムは、歩行又は走りのジェスチャーが終わったと決定してもよい。
【００５６】
[0060「歩き又は走り」のジェスチャーを考えると、アプリケーションは、このジェスチャーに関連付けられるアプリケーションにより決定されるパラメーターの値を設定してもよい。これらのパラメーターは、上記のしきい値角度、歩行又は走りのジェスチャーを開始するのに要するステップの数、ジェスチャーを終了するためにステップが生じない期間の数、及びジェスチャーが歩きか走りかを判断するしきい値期間を含んでもよい。ユーザーが自分の脚を速く動かすとき、速い期間は走りに対応してもよく、より遅い期間は歩行に対応してもよい。
【００５７】
[0061]ジェスチャーは、アプリケーションがそれ自身のパラメーターで無効にし得る１組のデフォルトパラメーターに最初に関連付けられてもよい。このシナリオでは、アプリケーションは、パラメーターを提供することは強いられないが、その代わりに、ジェスチャーがアプリケーションで定義されるパラメーターがない状態で認識されることを可能にする１組のデフォルトパラメーターを使用してもよい。
【００５８】
[0062]ジェスチャーに関連付けられてもよい様々な出力が存在する。ジェスチャーが生じているかどうかに関して「はい又はいいえ」の基準があってもよい。また、ユーザーの追跡される動作がジェスチャーに対応する可能性に対応する信頼水準がさらにあってもよい。これは、包括的な、０と１との間の浮動小数点数に及ぶ均等な尺度（linear scale）であってもよい。このジェスチャー情報を受け取るアプリケーションが入力として誤検出（誤判定、false-positives）を受け入れることができない場合、それは、少なくとも０．９５などの高い信頼水準を有する認識されたジェスチャーのみを使用してもよい。アプリケーションがジェスチャーのすべてのインスタンス（instance）を認識しなければならない場合、誤検出を犠牲にしてでも、０．２より大きいにすぎないものなどの、はるかに低い信頼水準を少なくとも有するジェスチャーを使用してもよい。ジェスチャーは、最も最近の２つのステップ（歩み、steps）間の時間についての出力を有してもよく、第一歩のみが登録された場合、（任意の２つのステップ間の時間が正でなければならないので）これは、−１などの予約された値に設定されてもよい。ジェスチャーはまた、最も最近のステップの間に到達した最も高いもも角度についての出力を有してもよい。
【００５９】
[0063]別の例示的なジェスチャーは「かかと上げジャンプ」である。この場合、ユーザーは、地面から自分のかかとを上げるがつま先はつけたままにすることにより、ジェスチャーを作成してもよい。代替的に、ユーザーは、自分の足３２０が地面から完全に離れる空気中へとジャンプしてもよい。システムは、まっすぐに立っていることと等しい配置の位置にあるかどうかを見るために、肩３１０、腰３１２及び膝３１６の角度の関係を分析することにより、このジェスチャーについての骨格を解析してもよい。その後、これらの点及び背骨上部の点３２６の及び背骨下部の点３２８は、任意の上向きの加速について監視されてもよい。加速の十分な組み合わせによりジャンプのジェスチャーが引き起こされてもよい。
【００６０】
[0064]この「かかと上げジャンプ」のジェスチャーを考えると、アプリケーションはこのジェスチャーに関連したアプリケーションで決定されるパラメーターについて値を設定してもよい。パラメーターは上記の加速しきい値を含んでもよく、それは、ユーザーの肩３１０、腰３１２及び膝３１６のある組み合わせがジェスチャーを引き起こすためにどれくらい速く上方へ移動しなければならないかのほか、ジャンプがいまだ引き起こされ得る、肩３１０、腰３１２及び膝３１６の間の配置の最大角度を決定する。
【００６１】
[0065]出力は、信頼水準のほか、ジャンプの時のユーザーの体の角度を含んでもよい。
[0066]ジェスチャーを受け取るアプリケーションの詳細に基づくジェスチャーのパラメーターを設定することは、ジェスチャーを正確に識別する際に重要である。ジェスチャー及びユーザーの意図を適切に識別することは、好意的なユーザー経験を生み出す際に大きな助けとなる。ジェスチャー認識システムの感度が良すぎて、手３０２がほんの少し前に動いただけで投げる動作として解釈される場合、ユーザーは、ジェスチャーをするための意図がないときにジェスチャーが認識されるので苛立ち、したがって、システムに対するコントロールを欠く。ジェスチャー認識システムが十分な感度を持たない場合、システムは、投げるジェスチャーをするためのユーザーによる意識的な試みを認識しないかもしれず、同様にユーザーを苛立たせる。感度スペクトルの両端において、ユーザーは、自分がシステムに適切に入力を提供することができないので苛立つことになる。
【００６２】
[0067]ジェスチャーに対する別のパラメーターは動いた距離であってもよい。ユーザーのジェスチャーが仮想環境中のアバターのアクションを制御する場合、そのアバターはボールからの腕の長さ（arm’s length from a ball）であってもよい。ユーザーがボールとインタラクトしてそれをつかみたい場合、これは、ユーザーが、つかむジェスチャーをしている間に自分の腕３０２−３１０をいっぱいに伸ばすことを要求してもよい。この状況において、ユーザーが部分的に自分の腕３０２−３１０を伸ばすにすぎない場合、同様のつかむジェスチャーは、ボールとのインタラクトという結果を達成できない。
【００６３】
[0068]ジェスチャー又はその一部は、それが生じなければならない空間体積（volume of space）をパラメーターとして有してもよい。この空間体積は、通常、体に関して表現することができ、ジェスチャーは体の動きを含む。例えば、右利きのユーザーについてのフットボールを投げるジェスチャーは、右肩３１０ａよりも低くなく、頭３２２について投げる腕３０２ａ−３１０ａと同じ側の、空間体積中でのみ認識され得る。体積のすべての境界はこの投げるジェスチャーなどとともに定義する必要はなく、体からの離れた外側の境界が未定義にされ、体積は無制限に広がり、又は監視されているシーンの端まで延在する。
【００６４】
[0069]図５は、物理空間におけるユーザーのコントローラー操作を捕らえて、仮想環境中における仮想オブジェクトのカーソル操作にそれをマッピングするシステムを示す。
[0070]仮想空間は、ユーザーが、ユーザー入力を介して、例えば物体を動かすことによって影響を及ぼし得る３次元空間の表現を含んでもよい。仮想空間は、物理的実体において見つからない城や教室の表現など、ユーザーの物理空間に対して相関性のない完全に仮想的な空間であってもよい。仮想空間はまた、ワシントン州レドモンドのユーザーが見たことがなく又はいたことがない、アイオワ州デモインにおける物理的な教室などの、ユーザーが関係を有していない物理空間に基づいてもよい。
【００６５】
[0071]仮想空間は、ユーザーの物理空間のある部分の表現を含んでもよい。ユーザーを捕らえている奥行きカメラはまた、ユーザーが物理的に存在している環境を捕らえてもよく、カメラによって可視の空間の境界のほかその空間における個別のオブジェクトを決定するためにそれを解析してもよく、そのすべて又は一部の仮想表現を作成してもよく、その後、それは仮想空間としてユーザーに提示される。
【００６６】
[0072]仮想空間は、第２のユーザーの物理空間のある部分の表現を含んでもよい。２人のユーザーが仮想環境を通じて且つそれぞれの奥行きカメラによって捕らえられることにより互いにインタラクトしている場合、その仮想空間はその第２のユーザーの仮想空間の表現であってもよい。
【００６７】
[0073]仮想空間はまた、これらのスペースのある組み合わせであってもよい。それは、ユーザーの物理空間の表現及び純粋に仮想的な空間の連結（concatenation）（当該連続が仮想空間であるので、純粋に仮想的な部分空間（sub-space）と呼ばれてもよい）であってもよく、結果として、両方が単一の仮想空間として表される。同様に、それは、ユーザーの物理空間の表現、純粋に仮想的な空間及び第２のユーザーの仮想空間の表現の連結、ユーザーの物理空間の表現及び第２のユーザーの物理空間の表現の連結、又は第２のユーザーの物理空間の表現及び純粋に仮想的な空間の連結であってもよい。
【００６８】
[0074]実施例において、ユーザーは、一人称の視点又は三人称の視点からこの仮想空間を見る。一人称の視点では、あたかもユーザーが空間にいるかのように、仮想空間はユーザーに対して表示され、ディスプレイは、ユーザーが自身の目で何を見るかを示す。三人称の視点では、仮想空間は、あたかもユーザーが第三者によってその空間において観察されているかのように、その仮想空間で、アバターなどのそのユーザーの表現とともにユーザーに対して表示される。
【００６９】
[0075]実施例において、仮想オブジェクトは、インタラクトされてもよい仮想空間における物体を含む。仮想空間が純粋に仮想的であり、教室を表す場合、チョーク、黒板消し、黒板、椅子、机、地球儀、窓、ドアノブ及びドアなどのものは仮想オブジェクトであってもよい。ユーザーは、書き、持ち上げ、動かし、投げ、又はチョークを真っ二つに割るなど、様々な方法でこれらの物体を操作し又はこれらとインタラクトしてもよい。
【００７０】
[0076]実施例において、仮想オブジェクトは物理的な物体に対応する。これは、ユーザーが所有している物理的な物体であってもよい。例えば、ユーザーが椅子を持っていれば、その物理的な椅子は奥行きカメラによって捕らえられてもよく、椅子の表現は仮想環境に挿入されてもよい。ユーザーが物理的な椅子を動かす場合、奥行きカメラはこれを捕らえて、仮想の椅子の対応する動きを表示してもよい。
【００７１】
[0077]仮想オブジェクトが物理的な物体に対応する実施例において、１つのものがもう１つのものと無関係に動かされる状況があってもよい。上記の物理的な椅子及び仮想の椅子を考えると、ユーザーが仮想の椅子を動かす場合、対応する物理的な椅子は動かなくてもよい。例えば、ユーザーは、仮想の椅子に仮想のボールを投げてもよく、結果として生じる衝突により仮想の椅子をひっくり返すことになる。しかし、物理的な力が物理的な椅子に与えられなかったので、それは直立のままである。同様に、物理的な物体はその対応する仮想オブジェクトを動かすことなく移動されてもよい。例えば、ユーザーが大きな部屋にいるが仮想空間は比較的より小さい場合、ユーザーは、自分の右側の遠くへと物理的な椅子を動かしてもよい。仮想の椅子が対応する方向において既に仮想の壁に触れている場合、物理的な椅子は移動したが、仮想の椅子は移動しなくてもよい。
【００７２】
[0078]実施例において、仮想オブジェクトは第２のユーザーの物理的な物体に対応する。それが仮想化される第２のユーザーの物理的な椅子である場合、ユーザーには、その第２のユーザーの椅子の仮想表現だけが提示される。ユーザーがその仮想の椅子とインタラクトするとき、（それを動かすことなどの）それらの相互作用は仮想環境に反映されてもよい。これは物理的な椅子の実際の動きに反映されなくてもよい。実施例において、この相互作用は第２のユーザーに対して同様に表示され、その結果、ユーザー及び第２のユーザーの両方に対して表示される仮想環境は一致したままである。実施例において、この相互作用は第２のユーザーに対して表示されず、その結果、第２のユーザーの仮想環境及び第２のユーザーの物理的環境は一致したままである。
【００７３】
[0079]実施例において、仮想オブジェクトが第２のユーザーの物理的な物体に対応する場合、ユーザーはこの仮想オブジェクトを操作することができない。それは、両方のユーザーに対して表示された仮想環境及び第２のユーザーの物理的環境が一致したままであることを保証する。実施例において、第２のユーザーは、対応する物理的な物体を操作することにより仮想オブジェクトを操作してもよい。第２のユーザーが物理的な物体に対する物理的なアクセスを有するので、物理的な物体についての自分の操作が両方のユーザーの仮想環境に反映されてもよく、したがって、それらの仮想環境及び第２のユーザーの物理的環境は一致したままである。
【００７４】
[0080]コントローラーは、仮想空間におけるカーソルが対応する方法で操作されるようにするために物理空間においてユーザーが操作するものを含む。コントローラーは物理的なものを含んでもよい。それはユーザーの手などの体の一部であってもよい。同様に、それは、バトンもしくはポインター、ディスク又はボールなどの物理的な物体であってもよい。コントローラーが体の一部である場合、奥行きカメラは、その後ユーザーの骨格データを決定するために解析される奥行きデータを提供するために使用されてもよい。この骨格データ及びこの骨格データが時間とともにどのように変化するかということから、自分のコントローラーについてのユーザーの動作が決定されてもよい。
【００７５】
[0081]コントローラーは想像上のものを含んでもよい。ユーザーは想像上のボールを投げるために合図してもよい。これは、上述のようなユーザーの骨格データを使用して検出されてもよい。例えば、ユーザーは、仮想オブジェクトを表示している表示装置に向かって想像上のボールを投げるために合図してもよい。そのボールがどこでディスプレイと交差するかが計算されてもよく、その後、衝突を介してなど、このことが仮想オブジェクトに影響を及ぼす方法が決定されて表示されてもよい。実施例において、想像上のボールがディスプレイと交差する場合、それは仮想空間において仮想オブジェクトとして示され、その仮想空間におけるその飛行へと進んでもよい。
【００７６】
[0082]カーソルは、仮想空間の仮想オブジェクトとインタラクトし得る仮想空間におけるコントローラーの仮想表現を含んでもよい。物理空間における１つ以上のコントローラーを操作することによって、ユーザーは、仮想空間における１つ以上の対応するカーソルの操作を引き起こすことができ、それらのカーソルは仮想空間における仮想オブジェクトが操作されるようにし（仮想のブロックが押されるなど）、その操作が生じる。さらに、カーソルは、それが表示装置に表示されないという点で目に見えなくてもよい。
【００７７】
[0083]取り込み装置５０８は、ユーザー５０２が存在する物理空間におけるシーン５０４を捕らえる。取り込み装置は、ディスプレイ５１２へ出力する計算装置５１０に結合される。実施例において、取り込み装置５０８は図２の取り込み装置２０を含み、計算装置５１０は、図２のコンピューター環境１２、図３Ａのマルチメディアコンソール１００又は図３Ｂのコンピューター環境２２０を含む。取り込み装置はこのシーンを捕らえて奥行きデータを生成する。この奥行きデータから、ユーザー５０２がどのようにそれを操作するかについてユーザーコントローラー５０６が決定されて監視される。計算装置５１０は、ディスプレイ５１２上に表示された仮想環境において、ユーザーコントローラー５０６をカーソル５１４（それが２つの時点におけるコントローラー５０６ａ及び５０６ｂに対応するので、カーソル５１４ａ及び５１４ｂは２つの時点におけるカーソルを描く）に関連付ける。
【００７８】
[0084]コントローラー５０６は予め決定されてもよい−システムは、常に、ユーザー５０２の右手がコントローラー５０６であると分かっていてもよく、したがって、常に、ユーザー５０２の右手をカーソルに関連付けてもよい。コントローラーはまたユーザーにより決定されてもよい。例えば、計算装置５１０は、スクリーンの特定の領域にコントローラーを配置する指示とともに、取り込み装置５０８によって捕らえられた画像データをユーザー５０２に対して表示してもよい。ユーザー５０２がその領域に自分の左手を置くと、それはコントローラーであると判断されてもよい。ユーザー５０２が自分の右手、足又は野球バットなどのある物体をその領域に置く場合、同じことが当てはまる。
【００７９】
[0085]その後、コントローラー５０６はスクリーン上のカーソル５１４を操作するために使用される。カーソル５１４はコントローラー５０６の表現であってもよい。コントローラー５０６がユーザーの右手である場合、カーソル５１４は右手であってもよい。同様に、コントローラー５０６がユーザーの左手である場合、カーソル５１４はユーザーの左手であってもよい。実施例において、カーソル５１４及びコントローラー５０６は、このように直接的には関連づけられない。例えば、コントローラー５０６はユーザーの手であってもよいが、カーソル５１４はテニスラケット又は貨物揚げ降ろしの鉤爪（stevedore claw）の表現であってもよい。複数のコントローラー５０６及び複数のカーソル５１４が単一の仮想環境内で使用され得る。例えば、ユーザー５０２の各手はコントローラー５０６を含んでもよく、また、（通信ネットワークを介してともに通信する計算装置を各々が有し、同じ物理的環境又は別個の物理的環境のいずれかに提示される）２人のユーザーは、それぞれ、それらの右手のように、コントローラー５０６を有してもよく、これらのコントローラー５０６の各々はカーソル５１４にマッピングしてもよい。
【００８０】
[0086]ユーザーがコントローラー５０６を操作するとき、この操作は取り込み装置５０８によって捕らえられ、カーソル５１４上の対応する操作を与えるために計算装置５１０によって処理される。例えば、ユーザーが自分のコントローラー５０６ａの手を伸ばして、自分の指５０６ｂを閉じる場合、仮想的な手カーソル５１４ａは仮想のシーンへと伸びてもよく、その仮想的な手の指は５１４ｂを閉じてもよい。
【００８１】
[0087]計算装置５１０は、カーソル５１４及び（描かれた仮想のバトン５１６のような）シーンにおける少なくともある仮想オブジェクトについての位置データを追跡し続けてもよく、その結果、コントローラー５０６についてのユーザー操作の結果としてカーソル５１４がいつ仮想オブジェクト５１６に触れるかを決定することができる。コントローラー５０６を介したカーソル５１４のこの操作によって仮想オブジェクト５１６が操作される場合、計算装置５１０は、生じた操作を決定し、表示装置にこの操作の結果を表示してもよい。例えば、ユーザーが自分の手カーソル５１４を伸ばして自分の指を拳に握る場合、これは、手カーソル５１４をシーンへと伸ばし、カーソル５１４の指に仮想のバトン５１６を握らせてもよい。ユーザーが自分のコントローラー５０６を前に伸ばし続け、これにより自分のカーソル５１４をシーンへと伸ばし続けさせる場合、シーンへと移動されることによって仮想のバトン５１６が操作されていることが決定されてもよく、この結果はディスプレイ５１２上に表示されてもよい。
【００８２】
[0088]図６は、仮想空間において仮想オブジェクトを操作するための例示的な動作手順を描く。
[0089]動作６０２は、仮想オブジェクトを操作するためにユーザーが利用する少なくとも１つのコントローラーの決定を描く。
【００８３】
[0090]動作６０４はコントローラーを仮想空間におけるカーソルにマッピングすることを描く。奥行きカメラによって観察され、コントローラーの動作について解析される、シーンにおけるコントローラーの動作が、カーソルの動作に対応するように、マッピングは関連付けであってもよい。
【００８４】
[0091]動作６０６は、ユーザーがカーソルによって仮想オブジェクトを操作することを示すコントローラー入力を決定することを描く。
[0092]実施例においては、動作の縮尺比（scale）が存在し、ユーザーがカーソルによって仮想オブジェクトを操作することを示すそのコントローラー入力を決定することは、動作の縮尺比に比例してユーザーがカーソルによって仮想オブジェクトを操作することを示すそのコントローラー入力を決定することを含む。動作の縮尺比が１：２である場合、これは、インチごとにユーザーがコントローラーを動かし、カーソルが同じ方向に２インチ移動されるものであることを意味してもよい。これは、仮想世界によって定義されるような２インチ（例えば、仮想世界はそもそも対応する現実世界より小さく提示されてもよく、その結果、表示装置に表示される場合、６フィートの背丈の人が３フィートの背丈のアバターとして現れる）又は文字通りの２インチであってもよく、その結果、これは表示画面上の２インチの移動に対応する。
【００８５】
[0093]実施例において、カーソルは少なくとも１つの次元（dimension）を有しており、動作の縮尺比に比例してユーザーがカーソルによって仮想オブジェクトを操作することを示すそのコントローラー入力を決定することは、その次元に比例してユーザーがカーソルによって仮想オブジェクトを操作すること示すそのコントローラー入力を決定することを含む。コントローラーがユーザーの手である例をとると、カーソルは前腕に取り付けられた仮想の手である。カーソルはコントローラー操作に応じて伸びてもよいし拡張してもよい。例えば、ｚ軸の次元に沿って単に前進するのではなく、ユーザーがｚ軸の次元に沿って奥行きカメラへに向かって自分の手を伸ばす場合、手及び前腕は、その次元に沿って前に伸びてもよい。
【００８６】
[0094]実施例において、物理モデルは、カーソルが仮想オブジェクトとどのようにインタラクトするかを決定するために使用される。例えば、与えられた物理モデルにおいて、仮想オブジェクトは質量を有していてもよく、仮想環境は重力を有していてもよく、したがって、固定の仮想のボールを転がすことは、ボールの慣性を克服するためにカーソルによってその上に十分な力を与えることを要求する。物理モデルは地球上の現実世界を正確にモデル化してもよいし、又は、ある他のモデルが使用されてもよい。例えば、カーソルの使用によって地面に落とされた後に物体がそうでなければ等しい状況下でより高く弾むように、物理モデルにおける重力は地球の重力より弱くてもよい。この物理モデルは、カーソルが仮想オブジェクトとどのようにインタラクトするかということを超えて、仮想オブジェクトが第２の仮想オブジェクトとどのようにインタラクトするかということへと広がってもよい。例えば、カーソルに第１の仮想のボールを第２の仮想のボールへと入れさせるようにユーザーがコントローラーを使用する場合、第２の仮想のボールは、２つの仮想のボールの間のその衝突の結果、回転し始めてもよい。
【００８７】
[0095]物理空間における対応する物理的な衝突なしに、仮想空間における仮想の衝突が存在し得る。ユーザーは、上述の物理モデルに従うように、壁または極端に重い大きな石などの、動かせない仮想オブジェクト又は仮想環境の一部を介して移動するように仮想空間における対応するカーソルを要求するような方法で、物理空間を通じてコントローラーを動かすことができる。実施例において、カーソルは、仮想環境における動作を示すためにアニメートされていて、そのような衝突が生じる場合、ユーザーが衝突を含んでいない方向にカーソルを操作するようにコントローラーを使用するまで、カーソルはアニメートすることをやめて、衝突の点において静止したままでいる。実施例において、物理的環境におけるユーザーのコントローラーの位置と仮想環境におけるカーソルの位置との間に食い違いがないように、カーソルのアニメーションは衝突を通じて継続する。
【００８８】
[0096]動作６０８は上記操作の結果の表示を描く。
[0097]実施例において、上記操作の結果は、物理的な物体の変化が仮想オブジェクトの対応する変化として反映されるように、物理的な物体に仮想オブジェクトを関連付けることを含む。例えば、別個の物理環境にいる２人は、それぞれの物理環境の表現の連結である仮想環境においてインタラクトしていてもよい。第１のユーザーは仮想のシャツを選択しそれを第２のユーザーの物理的なシャツに関連付けてもよく、この関連付けの結果、第２のユーザーは、物理的なシャツではなくこの仮想のシャツを着用しているように仮想環境中で示される。仮想のシャツのこの着用は、第１のユーザーに対してのみ示されてもよいし、第２のユーザーに対してのみ示されてもよいし、又は両方のユーザーに対して示されてもよい。
【００８９】
[0098]任意の動作６１０は、仮想オブジェクトを操作するために第２のユーザーが利用する少なくとも１つの第２のコントローラーを決定することを描く；第２のコントローラーを仮想空間における第２のカーソルへマッピングし、第２のユーザーが第２のカーソルによって仮想オブジェクトを操作することを示す第２のコントローラー入力を決定し、上記操作の結果を表示する。
【００９０】
[0099]複数のユーザーが同じ仮想環境においてインタラクトしている場合、第２のユーザーによる仮想オブジェクトの操作は、第１のユーザーに対して、第１のユーザーの表示装置に表示されてもよい。実施例において、２人のユーザーが単一の仮想オブジェクトを同時に操作してもよい。実施例において、仮想オブジェクトは複数の次元を有しており、第１のユーザーは、複数の次元のうちの第１の次元を操作し、第２のユーザーは、複数の次元のうちの第２の次元を操作する。例えば、第１のユーザーは物体を持ち上げてもよく、それが持ち上げられている間に、第２のユーザーは物体を回転させてもよい。さらに、２人のユーザーは仮想オブジェクトの同じ次元において動作してもよい。１人のユーザーは、仮想のボールを回転させるために仮想のボールに対して横力（lateral force）を与えてもよい。第２のユーザーは、第１のユーザーと同じ方向に第２の横力を与えてもよく、仮想のボールに加えられたこの追加の力によって、増加した速度で仮想のボールが回転される。
結論
[0100]様々な図に示されるように、本開示は好ましい態様に関して記載されてきたが、他の同様の態様を使用することができ、又は、本開示から逸脱することなく本開示の同じ機能を実行するために、記載された態様に対して修正及び追加がなされてもよいことが理解される。したがって、本開示はいかなる単一の態様にも限定されるべきでなく、添付の特許請求の範囲に従う幅及び範囲のにおいて解釈されるべきである。例えば、本明細書において記載された様々な手続きは、ハードウェアもしくはソフトウェア、又は両方の組み合わせで実施されてもよい。したがって、開示された実施例の方法及び装置、又はそれらのある態様もしくは部分は、フロッピーディスク、ＣＤ−ＲＯＭ、ハードドライブ又は任意の他の機械読み取り可能な記憶媒体などの有形の媒体に具体化されたプログラムコード（すなわち、命令）の形式をとってもよい。プログラムコードがコンピューターなどの機械へロードされ、機械によって実行される場合、機械は開示された実施例を実施するために構成された装置となる。本明細書において明示的に述べられた特定の実施例に加えて、他の態様及び実施例が、開示された明細書の考察から当業者にとって明らかである。明細書及び図示された実施例は単なる例として見なされることが意図される。
【図１Ａ】
0005827616.tif 000002
【図１Ｂ】
0005827616.tif 000003
【図２】
0005827616.tif 000004
【図３Ａ】
0005827616.tif 000005
【図３Ｂ】
0005827616.tif 000006
【図４Ａ】
0005827616.tif 000007
【図５】
0005827616.tif 000008
【図６】
0005827616.tif 000009