(57)【特許請求の範囲】
【請求項１】
ユーザーのジェスチャーをアプリケーションへの入力として取り込むシステムにおいて、ジェスチャー・ショートカットを使用する、プロセッサーにより実行される方法であって、
前記プロセッサーが、キャプチャー・デバイスによって取り込んだデーターを受け取るステップであって、前記データーが、ユーザーの動きまたはポーズに対応する、ステップと、
前記プロセッサーが、前記データーに基づいて、前記ユーザーの動きまたはポーズが完全なジェスチャーのショートカットをユーザーが行ったことに対応するかどうかを識別する第１の出力を決定するステップであって、前記プロセッサーは、前記完全なジェスチャーまたは該完全なジェスチャーのショートカットにより前記アプリケーションにおけるアバターの動きまたはポーズを制御し、前記完全なジェスチャーのショートカットにより、前記完全なジェスチャーを行うことによっても識別されるコマンドを識別し、前記完全なジェスチャーのショートカットが、前記完全なジェスチャーとは異なった動きまたはポーズを含みかつ前記完全なジェスチャーを構成するユーザーの動きまたはポーズの部分集合を含む、ステップと、
前記プロセッサーが、前記第１の出力を前記アプリケーションに送るステップと、
を含む、方法。
【請求項２】
ユーザーのジェスチャーをアプリケーションへの入力として取り込むシステムにおいて、ジェスチャー・ショートカットを使用する、プロセッサーにより実行される方法であって、
前記プロセッサーが、キャプチャー・デバイスによって取り込んだデーターを受け取るステップであって、前記データーが、ユーザーの動きまたはポーズに対応する、ステップと、
前記プロセッサーが、前記データーに基づいて、前記ユーザーの動きまたはポーズが完全なジェスチャーのショートカットをユーザーが行ったことに対応するかどうかを識別する第１の出力を決定するステップであって、前記プロセッサーは、前記完全なジェスチャーにより１つのコマンドを識別し、前記完全なジェスチャーのショートカットにより、前記完全なジェスチャーを行うことによっても識別されるコマンドを識別し、前記完全なジェスチャーのショートカットが、前記完全なジェスチャーとは異なった動きまたはポーズを含みかつ前記完全なジェスチャーを構成するユーザーの動きまたはポーズの部分集合を含む、ステップと、
前記プロセッサーが、前記第１の出力を前記アプリケーションに送るステップと、
を含む、方法。
【請求項３】
請求項１または２に記載の方法であって、更に、
前記プロセッサーが、前記データーに基づいて、前記ユーザーの動きまたはポーズが前記完全なジェスチャーを前記ユーザーが行ったことに対応するかどうかを識別する第２の出力を決定するステップと、
前記プロセッサーが、前記第２の出力を、前記アプリケーションに送るステップと、
を含む、方法。
【請求項４】
請求項３記載の方法において、前記第１の出力は、前記コマンドが呼び出されたことを前記アプリケーションが識別することに対応し、前記第２の出力は、前記コマンドが呼び出されたことを前記アプリケーションが識別することに対応し、前記第１の出力と前記第２の出力とに応答して、前記アプリケーションは、前記第１の出力と前記第２の出力との間で一回前記コマンドが呼び出されたことを認識する、方法。
【請求項５】
請求項３記載の方法において、前記第２の出力は、前記第１の出力が前記アプリケーションに送られた後に前記アプリケーションに送られ、前記第１の出力に応答して前記アプリケーションは、前記コマンドが呼び出されたことを認識し、前記第２の出力に応答して前記アプリケーションは、前記呼び出されたコマンドに対し前記第２の出力に基づいて詳細を追加する、方法。
【請求項６】
請求項１または２に記載の方法であって、更に、
前記プロセッサーが、前記完全なジェスチャーのショートカットを行うのに使用されるユーザーの動きまたはポーズを定めることに対応するユーザー入力を受け取るステップを含む、方法。
【請求項７】
請求項１または２に記載の方法において、前記コマンドは第１のコマンドであり、前記プロセッサーは、前記完全なジェスチャーのショートカットにより、第２のジェスチャーを行うことによって識別される第２のコマンドをも識別し、前記第１の出力は、前記第１のコマンドが呼び出されたことを識別するか、または、前記第１のコマンドおよび前記第２のコマンドが呼び出されたことを識別する、方法。
【請求項８】
請求項１または２に記載の方法において、前記完全なジェスチャーのショートカットは、ジェスチャー・フィルタおよびパラメーターに対応し、前記完全なジェスチャーは、完全なジェスチャー・フィルタおよび前記パラメーターに対応し、前記パラメーターは、前記完全なジェスチャーとは異なった前記完全なジェスチャーのショートカットに対する値を有し、前記プロセッサーが前記データーに基づいて前記完全なジェスチャーのショートカットを前記ユーザーが行ったことに前記ユーザーの動きまたはポーズが対応するかどうかを識別する前記第１の出力を決定するステップは、
前記プロセッサーが、前記完全なジェスチャー・フィルタおよび前記パラメーターと共に前記データーを処理するステップを含む、方法。
【請求項９】
請求項１または２に記載の方法であって、前記プロセッサーが前記データーに基づいて前記完全なジェスチャーのショートカットをユーザーが行ったことに前記ユーザーの動きまたはポーズが対応するかどうかを識別する第１の出力を決定するステップは、更に、
前記プロセッサーが、前記第１の出力を決定するために前記データーを処理する前に、前記完全なジェスチャーのショートカットが行われたかどうか決定するために前記データーを処理することを、前記アプリケーションから決定するステップを含む、方法。
【請求項１０】
請求項１または２に記載の方法において、前記プロセッサーが前記データーに基づいて前記完全なジェスチャーのショートカットをユーザーが行ったことに前記ユーザーの動きまたはポーズが対応するかどうかを識別する第１の出力を決定するステップは、更に、
前記プロセッサーが、前記データーに基づいて、前記ユーザーの動きまたはポーズが前記完全なジェスチャーのショートカットをユーザーが行ったことに対応するかどうかを識別する第１の出力を、ジェスチャーのショートカットが認識されるべきであるとのユーザーからの指示を受けたことに更に応答して決定するステップ、を含む、方法。
【請求項１１】
請求項１または２に記載の方法において、前記第１の出力は、前記コマンドを呼び出すことを示し、前記アプリケーションは、前記コマンドの前記呼び出しをスコアまたは成果と関連付け、前記プロセッサーが前記第１の出力を前記アプリケーションに送るステップは、
前記プロセッサーが、前記第１の出力を前記アプリケーションに送るステップであって、前記アプリケーションが、前記完全なジェスチャーを行うことによって前記コマンドが呼び出されたときよりも低いスコアまたは成果に前記第１の出力を関連付けるステップ、を含む、方法。
【請求項１２】
コンピューター読み取り可能記憶媒体であって、該コンピューター読み取り可能記憶媒体がコンピューター読み取り可能命令を含み、該コンピューター読み取り可能命令が、プロセッサーにおいて実行されると前記プロセッサーに、請求項１から１１のいずれかに記載の方法を実行させる、コンピューター読み取り可能記憶媒体。
【請求項１３】
ユーザーのジェスチャーをアプリケーションへの入力として取り込むシステムにおいて、ジェスチャー・ショートカットを使用するシステムであって、
プロセッサーと、
前記システムが動作中のとき前記プロセッサーに通信可能に結合されるメモリーであって、前記メモリーがプロセッサー実行可能命令を含み、該プロセッサー実行可能命令が、前記プロセッサーで実行されると、前記システムに少なくとも、
キャプチャー・デバイスによって取り込まれたデーターを受け取る動作であって、前記データーがユーザーの動きまたはポーズに対応する、動作と、
前記データーに基づいて、前記ユーザーの動きまたはポーズが完全なジェスチャーのショートカットをユーザーが行ったことに対応するかどうかを識別する第１の出力を決定する動作であって、前記システムは、前記完全なジェスチャーまたは該完全なジェスチャーのショートカットにより前記アプリケーションにおけるアバターの動きまたはポーズを制御し、前記完全なジェスチャーのショートカットにより、前記完全なジェスチャーを行うことによっても識別されるコマンドを識別し、前記完全なジェスチャーのショートカットが、前記完全なジェスチャーとは異なった動きまたはポーズを含みかつ前記完全なジェスチャーを構成するユーザーの動きまたはポーズの部分集合を含む、動作と、
前記第１の出力を前記アプリケーションに送る動作と、
を行わせるメモリーと、
含む、システム。
【請求項１４】
ユーザーのジェスチャーをアプリケーションへの入力として取り込むシステムにおいて、ジェスチャー・ショートカットを使用するシステムであって、
プロセッサーと、
前記システムが動作中のとき前記プロセッサーに通信可能に結合されるメモリーであって、前記メモリーがプロセッサー実行可能命令を含み、該プロセッサー実行可能命令が、前記プロセッサーで実行されると、前記システムに少なくとも、
キャプチャー・デバイスによって取り込まれたデーターを受け取る動作であって、前記データーがユーザーの動きまたはポーズに対応する、動作と、
前記データーに基づいて、前記ユーザーの動きまたはポーズが完全なジェスチャーのショートカットをユーザーが行ったことに対応するかどうかを識別する第１の出力を決定する動作であって、前記システムは、前記完全なジェスチャーにより１つのコマンドを識別し、前記完全なジェスチャーのショートカットにより、前記完全なジェスチャーを行うことによっても識別されるコマンドを識別し、前記完全なジェスチャーのショートカットが、前記完全なジェスチャーとは異なった動きまたはポーズを含みかつ前記完全なジェスチャーを構成するユーザーの動きまたはポーズの部分集合を含む、動作と、
前記第１の出力を前記アプリケーションに送る動作と、
を行わせるメモリーと、
含む、システム。
【請求項１５】
請求項１３または１４に記載のシステムにおいて、前記メモリーは、更に、プロセッサー実行可能命令を含み、該プロセッサー実行可能命令は前記プロセッサーにおいて実行されると、前記システムに少なくとも、
前記データーに基づいて、前記ユーザーの動きまたはポーズが前記完全なジェスチャーを前記ユーザーが行ったことに対応するかどうかを識別する第２の出力を決定する動作と、
前記第２の出力を前記アプリケーションに送る動作と、
を行わせる、システム。
【請求項１６】
請求項１５記載のシステムにおいて、前記第１の出力は、前記コマンドが呼び出されたことを前記アプリケーションが識別することに対応し、前記第２の出力は、前記コマンドが呼び出されたことを前記アプリケーションが識別することに対応し、前記第１の出力と前記第２の出力とに応答して、前記アプリケーションは、前記第１の出力と前記第２の出力との間で一回前記コマンドが呼び出されたことを認識する、システム。
【請求項１７】
請求項１５に記載のシステムにおいて、前記第２の出力は、前記第１の出力が前記アプリケーションに送られた後に前記アプリケーションに送られ、前記第１の出力に応答して前記アプリケーションは、前記コマンドが呼び出されたことを認識し、前記第２の出力に応答して前記アプリケーションは、前記呼び出されたコマンドに対し前記第２の出力に基づいて詳細を追加する、システム。
【発明の詳細な説明】
【従来技術】
【０００１】
[0001]  コンピューター・ゲーム、マルチメディア・アプリケーション、オフィス・アプリケーション等のような多くの計算アプリケーションは、制御を用いて、ユーザーがアプリケーションのゲーム・キャラクターまたは他の側面を操作することを可能にする。通例、このような制御は、例えば、コントローラー、リモコン、キーボード、マウス等を用いる入力である。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
生憎、このような制御は習得することが難しいために、ユーザーとこのようなゲームおよびアプリケーションとの間に障壁が生ずる可能性がある。更に、このような制御は、これらの制御が用いられる対象である実際のゲーム動作または他のアプリケーション動作とは異なる場合もある。例えば、ゲーム・キャラクターに野球のバットを振らせるゲーム制御が、野球のバットを振る実際のモーションには対応しない場合がある。
【課題を解決するための手段】
【０００３】
[0002]  本明細書において開示するのは、ジェスチャー・ショートカットのためのシステムおよび方法である。
[0003]  一実施形態では、計算機が一連の画像データーをカメラから受け取る。このカメラは、カラー・カメラ（赤−緑−青即ちＲＧＢのようなカメラ）、深度カメラ、および三次元（３Ｄ）カメラを含むことができる。このデーターは、別々の深度画像および色画像、深度情報および色情報を組み込んだ組み合わせ画像、またはスケルトン・マッピングされた人のような、オブジェクトを特定する解析画像を含むことができる。このデーターは、少なくとも一人のユーザーによって行われたモーションまたはポーズを取り込む。これらのモーションまたはポーズは、一種の入力、即ち、ジェスチャー入力として、計算機によって認識することができる。所与のジェスチャー（例えば、上に向かってナビゲートする）について、ユーザーが行うことができるそのジェスチャーの完全バージョンと、ユーザーが行うことができるそのジェスチャーのショートカットとを備えることができる。ジェスチャーのショートカットは、ユーザーにとって、短い時間、少ない動き、または簡単な動きで済むのが一般的である。
【０００４】
[0004]  ユーザーによって、ジェスチャーのショートカットまたはジェスチャー・ショートカットの完全バージョンのいずれかが行われたと計算機が認識すると、ジェスチャーを入力として用いるアプリケーションに、これの指示を送る。
【０００５】
[0005]  ショートカットがジェスチャーの完全バージョンの部分集合を構成し、ユーザーがジェスチャーの完全バージョンを行ったときにジェスチャーのショートカットおよび完全バージョンの双方が認識される一実施形態では、計算機は、１回のジェスチャーだけが行われたと認識し、このことの指示をアプリケーションに送る。
【０００６】
[0006]  以上に述べたのは摘要であり、したがって、必要上、簡略化、一般化、および詳細の省略を含む。この摘要は例示であり、限定であることは全く意図されていないことは、当業者には認められよう。
【図面の簡単な説明】
【０００７】
[0007]  本明細書によるジェスチャー・ショートカットのためのシステム、方法、およびコンピュータ読み取り可能記憶媒体について、添付図面を参照しながら更に説明する。
【図１Ａ】図１Ａは、ターゲット認識、分析、および追跡システムの一実施形態例を、ゲームをプレーするユーザーと共に示す。
【図１Ｂ】図１Ｂは、ターゲット認識、分析、および追跡システムの一実施形態例を、ゲームをプレーするユーザーと共に示す。
【図２】図２は、ターゲット認識、分析、および追跡システムにおいて使うことができるキャプチャー・デバイスの一実施形態例を示す。
【図３Ａ】図３Ａは、ターゲット認識、分析、および追跡システムにおいて１つ以上のジェスチャーを解釈するために使うことができる計算環境の一実施形態例を示す。
【図３Ｂ】図３Ｂは、ターゲット認識、分析、および追跡システムにおいて１つ以上のジェスチャーを解釈するために使うことができる計算環境の他の実施形態例を示す。
【図４Ａ】図４Ａは、図２のターゲット認識、分析、および追跡システムから生成されたユーザーのスケルトン・マッピングを示す。
【図４Ｂ】図４Ｂは、図２に示したジェスチャー認識アーキテクチャーを更に詳細に示す。
【図５Ａ】図５Ａは、更に複雑なジェスチャー・フィルタを作成するために、どのようにフィルタを重ねればよいかを示す。
【図５Ｂ】図５Ｂは、更に複雑なジェスチャー・フィルタを作成するために、どのようにフィルタを重ねればよいかを示す。
【図６Ａ】図６Ａは、フットボール・ビデオ・ゲームにおいてユーザーが「フェア・キャッチ」を伝えるために行うことができるジェスチャー例を示す。
【図６Ｂ】図６Ｂは、フットボール・ビデオ・ゲームにおいてユーザーが「フェア・キャッチ」を伝えるために行うことができるジェスチャー例を示す。
【図６Ｃ】図６Ｃは、フットボール・ビデオ・ゲームにおいてユーザーが「フェア・キャッチ」を伝えるために行うことができるジェスチャー例を示す。
【図６Ｄ】図６Ｄは、フットボール・ビデオ・ゲームにおいてユーザーが「フェア・キャッチ」を伝えるために行うことができるジェスチャー例を示す。
【図６Ｅ】図６Ｅは、フットボール・ビデオ・ゲームにおいてユーザーが「フェア・キャッチ」を伝えるために行うことができるジェスチャー例を示す。
【図７Ａ】図７Ａは、ユーザーのスケルトン・マップを生成するために画像データーの各フレームを解析したときの、図６Ａから図６Ｅの「フェア・キャッチ」のジェスチャー例を示す。
【図７Ｂ】図７Ｂは、ユーザーのスケルトン・マップを生成するために画像データーの各フレームを解析したときの、図６Ａから図６Ｅの「フェア・キャッチ」のジェスチャー例を示す。
【図７Ｃ】図７Ｃは、ユーザーのスケルトン・マップを生成するために画像データーの各フレームを解析したときの、図６Ａから図６Ｅの「フェア・キャッチ」のジェスチャー例を示す。
【図７Ｄ】図７Ｄは、ユーザーのスケルトン・マップを生成するために画像データーの各フレームを解析したときの、図６Ａから図６Ｅの「フェア・キャッチ」のジェスチャー例を示す。
【図７Ｅ】図７Ｅは、ユーザーのスケルトン・マップを生成するために画像データーの各フレームを解析したときの、図６Ａから図６Ｅの「フェア・キャッチ」のジェスチャー例を示す。
【図８Ａ】図８Ａは、完全走行ジェスチャーを行っているユーザーを示す。
【図８Ｂ】図８Ｂは、ショートカット走行ジェスチャーを行っているユーザーを示し、このショートカット・ジェスチャーは、図８Ａの完全走行ジェスチャーの動きの部分集合を含む。
【図８Ｃ】図８Ｃは、ショートカット走行ジェスチャーを行っているユーザーを示し、この第２タイプのショートカット走行ジェスチャーは、図８Ａの完全走行ジェスチャーとは別の動きを含む。
【図９】図９は、ジェスチャー・ショートカットの動作手順例を示す。
【発明を実施するための形態】
【０００８】
[0021]  本明細書において記載するように、ユーザーは、ゲーム・コンソール、コンピューター等のような計算環境において実行するアプリケーションを、１つ以上のジェスチャーを行うことによって制御することができる。一実施形態によれば、ジェスチャーは、例えば、キャプチャー・デバイスから受け取ることができる。例えば、キャプチャー・デバイスは、シーンの深度画像を取り込むことができる。一実施形態では、キャプチャー・デバイスは、シーンにおける１つ以上のターゲットまたはオブジェクトが、ユーザーのようなヒトのターゲットに対応するか否か判断することができる。シーンにおけるターゲットまたはオブジェクトがヒトのターゲットに対応するか否か判断するには、ターゲットの各々を塗りつぶし、ヒトの体モデルのパターンと比較すればよい。次に、ヒトの体モデルと一致した各ターゲットまたはオブジェクトを走査して、それと関連付けられたスケルトン・モデルを生成する。次いで、このスケルトン・モデルを計算環境に供給することができ、計算環境はスケルトン・モデルを追跡し、スケルトン・モデルと関連付けられているアバターをレンダリングすることができ、更に、例えば、スケルトン・モデルから認識されたユーザーのジェスチャーに基づいて、計算環境において実行中のアプリケーションにおいて何の制御を実行すべきか決定することができる。ジェスチャー認識エンジンは、そのアーキテクチャーについては以下で更に詳しく説明するが、これを用いて、特定のジェスチャーがいつユーザーによって行われたのか判断する。
【０００９】
[0022]  図１Ａおよび図１Ｂは、ターゲット認識、分析、および追跡システム１０の構成の一実施形態例を、ゲームをプレーするユーザー１８と共に示す。一実施形態例では、目標認識、分析、および追跡システム１０は、ユーザー１８のようなヒトのターゲットを認識し、分析し、および／または追跡するために使うことができる。
【００１０】
[0023]  図１Ａに示すように、ターゲット認識、分析、および追跡システム１０は、計算環境１２を含む。計算環境１２は、コンピューター、ゲーミング・システムまたはコンソール等であればよい。一実施形態例によれば、ゲーミング・アプリケーション、ゲーミング以外のアプリケーション等のようなアプリケーションを実行するために計算環境１２を使うことができるように、計算環境１２はハードウェア・コンポーネントおよび／またはソフトウェア・コンポーネントを含むことができる。
【００１１】
[0024]  図１Ａに示すように、ターゲット認識、分析、および追跡システム１０は、更に、キャプチャー・デバイス２０を含むことができる。キャプチャー・デバイス２０は、例えば、ユーザー１８のような、一人以上のユーザーを視覚的に監視するために使うことができるカメラとすればよく、一人以上のユーザーによって行われるジェスチャーおよび／またはモーションを取り込み、分析し、そして追跡して、アプリケーションにおいて１つ以上の制御または動作を実行する、および／またはアバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターを動画化することができる。これについては、以下で更に詳しく説明する。
【００１２】
[0025]  一実施形態によれば、ターゲット認識、分析、および追跡システム１０は、テレビジョン、モニター、高品位テレビジョン（ＨＤＴＶ）等のような、ゲームまたはアプリケーションの映像(visual)および／または音声(audio)をユーザー１８のようなユーザーに与えることができるオーディオビジュアル・デバイス１６に接続することができる。例えば、計算環境１２は、グラフィクスカードのようなビデオ・アダプターおよび／またはサウンド・カードのようなオーディオ・アダプターを含むことができる。これらは、ゲーム・アプリケーション、ゲーム以外のアプリケーション等と関連のあるオーディオビジュアル信号を供給することができる。オーディオビジュアル・デバイス１６は、計算環境１２からオーディビジュアル信号を受け取ることができ、次いで、これらのオーディオビジュアル信号と関連付けられたゲームまたはアプリケーションの映像および／または音声をユーザー１８に出力することができる。一実施形態によれば、オーディオビジュアル・デバイス１６は、例えば、Ｓ−Ｖｉｄｅｏケーブル、同軸ケーブル、ＨＤＭＩケーブル、ＤＶＩケーブル、ＶＧＡケーブル等によって、計算環境１２に接続することができる。
【００１３】
[0026]  図１Ａおよび図１Ｂに示すように、ターゲット認識、分析、および追跡システム１０は、ユーザー１８のようなヒトのターゲットを認識、分析、および／または追跡するために使うことができる。例えば、ユーザー１８を、キャプチャー・デバイス２０を使って追跡し、ユーザー１８のジェスチャーおよび／またはモーションを取り込んで、アバター、画面上のキャラクター、画面上のオブジェクト等のような仮想キャラクターを動画化することができ、および／または計算環境１２によって実行されているアプリケーションに作用するために使うことができる制御として解釈することができる。このように、一実施形態によれば、ユーザー１８は彼または彼女の体を動かして、アプリケーションを制御すること、および／または仮想オブジェクトを動画化することができる。
【００１４】
[0027]  図１Ａおよび図１Ｂに示すように、一実施形態例では、計算環境１２において実行するアプリケーションは、ユーザー１８がプレーしているかもしれないボクシング・ゲームであってもよい。例えば、コンピューター環境１２は、オーディオビジュアル・デバイス１６を使って、ボクシングの相手３８の視覚的表現をユーザー１８に与えることができる。また、計算環境１２は、オーディオビジュアル・デバイス１６を使って、ユーザー１８が彼または彼女の動きで制御することができるプレーヤー・アバター２４の視覚表現も与えることができる。例えば、図１Ｂに示すように、ユーザー１８はプレーヤー・アバター２４にゲーム空間においてパンチを打たせるために、実空間おいてパンチを打つことができる。このように、一実施形態例によれば、計算環境１２、ならびにターゲット認識、分析、および追跡システム１０のキャプチャー・デバイス２０は、実空間におけるユーザー１８のパンチを認識および分析するために使うことができ、このパンチをゲーム空間におけるプレーヤー・アバター２４のゲーム制御として解釈することができるようになる。
【００１５】
[0028]  ユーザー１８による他の動きも、軽く叩く、行ったり来たりする、あちこち動き回る、防御する、ジャブする、または種々の異なる力のパンチを出すように制御するというように、プレーヤー・アバターを動画化するために用いられる他の制御または動作として解釈することができる。更に、動きの中には、プレーヤー・アバター２４を制御する以外の動作に対応することもできる制御として解釈してもよい場合もある。例えば、プレーヤーは、動きを使って、ゲームを終了する、一時停止する、またはセーブする、レベルを選択する、高スコアを見る、友人と通信する等を行うこともできる。
【００１６】
[0029]  実施形態例では、ユーザー１８のようなヒトのターゲットがオブジェクトを有することもできる。このような実施形態では、電子ゲームのユーザーがそのオブジェクトを保持していればよく、ゲームのパラメータを調節および／または制御するために、プレーヤーおよびオブジェクトのモーションを使うことができるようにするとよい。例えば、ラケットを保持しているプレーヤーのモーションを追跡し、電子スポーツ・ゲームにおける画面上のラケットを制御するために利用することができる。他の実施形態例では、オブジェクトを保持しているプレーヤーのモーションを追跡し、電子戦争ゲームにおける画面上の兵器を制御するために利用することができる。
【００１７】
[0030]  他の実施形態例では、ターゲット認識、分析、および追跡システム１０は、更に、ターゲットの動きを、ゲームの範囲の外側にあるオペレーティング・システムおよび／またはアプリケーション制御として解釈するために使うこともできる。例えば、オペレーティング・システムおよび／またはアプリケーションの事実上あらゆる制御可能な態様を、ユーザー１８のようなターゲットの動きによって制御することができる。
【００１８】
[0031]  図２は、ターゲット認識、分析、および追跡システム１０において使うことができるキャプチャー・デバイス２０の一実施形態例を示す。一実施形態例によれば、キャプチャー・デバイス２０は、例えば、飛行時間、構造化光、立体画像等を含む任意の適した技法によって、深度値を含むことができる深度画像を含む深度情報と共にビデオを取り込むように構成することができる。一実施形態によれば、キャプチャー・デバイス２０は、深度情報を「Ｚレイヤー」、または深度カメラからその視線に沿って延びるＺ軸に対して垂直となることができるレイヤーに編成することができる。
【００１９】
[0032]  図２に示すように、キャプチャー・デバイス２０は、画像カメラ・コンポーネント２２を含むことができる。一実施形態例によれば、画像カメラ・コンポーネント２２は、シーンの深度画像を取り込むことができる深度カメラとするとよい。深度カメラは、取り込まれたシーンの二次元（２Ｄ）画素エリアを含むことができ、この２Ｄ画素エリアにおける各画素は、カメラから取り込まれたシーンにおけるオブジェクトの、例えば、センチメートル、ミリメートル等の単位の長さまたは距離というような、深度値を表すことができる。
【００２０】
[0033]  図２に示すように、一実施形態例によれば、画像カメラ・コンポーネント２２は、シーンの深度画像を取り込むために使うことができるＩＲ発光コンポーネント２４、三次元（３Ｄ）カメラ２６、およびＲＧＢカメラ２８を含むことができる。例えば、飛行時間分析では、キャプチャー・デバイス２０のＩＲ発光コンポーネント２４は、シーンに向けて赤外線光を放出することができ、次いでセンサ（図示せず）を使って、そのシーンの中にある１つ以上のターゲットおよびオブジェクトの表面から散乱される光を、例えば、３Ｄカメラ２６および／またはＲＧＢカメラ２８を使って検出することができる。実施形態の中には、パルス状赤外線光を使って、発信光パルスと対応する入射光パルスとの間の時間を測定し、キャプチャー・デバイス２０からシーン内にあるターゲットまたはオブジェクト上における特定の場所までの物理的距離を判定するために使うことができるようにするとよい場合がある。加えて、他の実施形態例では、発信光波の位相を着信光波の位相と比較して、位相ずれを判定するとよい場合もある。次いで、位相ずれを使って、キャプチャー・デバイスからターゲットまたはオブジェクト上の特定の場所までの物理的距離を判定することができる。
【００２１】
[0034]  他の実施形態例によれば、例えば、散乱光パルス撮像を含む種々の技法によって、経時的な光の反射ビームの強度を分析することによって、飛行時間分析を使って、キャプチャー・デバイス２０からターゲットまたはオブジェクト上の特定の場所までの物理的距離を間接的に判定することができる。
【００２２】
[0035]  他の実施形態例によれば、キャプチャー・デバイス２０は、構造化光を使って深度情報を取り込むことができる。このような分析では、パターン光（即ち、格子パターン、縞パターンのような既知のパターンとして表示される光）を、例えば、ＩＲ発光コンポーネント２４によってシーンに向けて投射する。シーンにおいて１つ以上のターゲットまたはオブジェクトの表面に衝突したときに、それに応答して、パターンが変形する可能性がある。このようなパターンの変形を、例えば、３Ｄカメラ２６および／またはＲＧＢカメラ２８によって取り込むことができ、次いで分析して、キャプチャー・デバイスからターゲットまたはオブジェクト上における特定の場所までの物理的距離を判定することができる。
【００２３】
[0036]  他の実施形態によれば、キャプチャー・デバイス２０は、２つ以上の物理的に分離されたカメラを含むことができ、これらが異なる角度からのシーンを捕らえて、視覚的な立体像を得て、これを解明することによって深度情報を発生することができる。
【００２４】
[0037]  キャプチャー・デバイス２０は、更に、マイクロフォン３０を含むことができる。マイクロフォン３０は、音響を受信し電気信号に変換するトランスデューサまたはセンサを含むことができる。一実施形態によれば、マイクロフォン３０を使うと、ターゲット認識、分析、および追跡システム１０においてキャプチャー・デバイス２０と計算環境１２との間におけるフィードバックを低減することができる。加えて、マイクロフォン３０を使うと、ユーザーによって供給することもできるオーディオ信号を受信し、計算環境１２において実行することができるゲーム・アプリケーション、ゲーム以外のアプリケーション等のようなアプリケーションを制御することができる。
【００２５】
[0038]  一実施形態例では、キャプチャー・デバイス２０は、更に、画像カメラ・コンポーネント２２と動作的に通信することができるプロセッサー３２を含むことができる。プロセッサー３２は、標準化されたプロセッサー、特殊化されたプロセッサー、マイクロプロセッサー等を含むことができ、このプロセッサーは、深度画像を受け取る命令、この深度画像に適したターゲットが含まれている可能背があるか否か判断する命令、適したターゲットをそのターゲットのスケルトン表現またはモデルに変換する命令、あるいは任意の他の適した命令を実行することができる。
【００２６】
[0039]  更に、キャプチャー・デバイス２０は、メモリー・コンポーネント３４を含むことができる。メモリー・コンポーネント３４は、プロセッサー３２によって実行することができる命令、３ＤカメラまたはＲＧＢカメラによって取り込まれた画像またはフレーム、あるいは任意の他の適した情報、画像等を格納することができる。一実施形態例によれば、メモリー・コンポーネント３４は、ランダム・アクセス・メモリー（ＲＡＭ）、リード・オンリー・メモリー（ＲＯＭ）、キャッシュ、フラッシュ・メモリー、ハード・ディスク、または任意の他の適した記憶コンポーネントを含むことができる。図２に示すように、一実施形態では、メモリー・コンポーネント３４は、画像キャプチャー・コンポーネント２２およびプロセッサー３２と通信する別のコンポーネントとすることができる。他の実施形態によれば、メモリー・コンポーネント３４をプロセッサー３２および／または画像キャプチャー・コンポーネント２２に統合してもよい。
【００２７】
[0040]  図２に示すように、キャプチャー・デバイス２０は、通信リンク３６を通して、計算環境１２と通信状態に置くことができる。通信リンク３６は、例えば、ＵＳＢ接続、Firewire接続、イーサネット・ケーブル接続等を含む有線接続、および／またはワイヤレス８０２．１１ｂ、ｇ、ａ、またはｎ接続のようなワイヤレス接続とすることができる。一実施形態によれば、計算環境１２は、クロックをキャプチャー・デバイス２０に供給することができ、通信リンク３６を通して、例えば、いつシーンを取り込むか判断するために、このクロックを使うことができる。
【００２８】
[0041]  加えて、キャプチャー・デバイス２０は、例えば、３Ｄカメラ２６および／またはＲＧＢカメラ２８によって取り込まれた深度情報および画像、および／またはキャプチャー・デバイス２０によって生成することができるスケルトン・モデルを、計算環境１２に通信リンク３６を通して供給することができる。次いで、計算環境１２は、このスケルトン・モデル、深度情報、および取り込まれた画像を使って、例えば、ユーザーのジェスチャーを認識し、応答して、ゲームまたはワード・プロセッサーのようなアプリケーションを制御することができる。例えば、図２に示すように、計算環境１２は、ジェスチャー認識エンジン１９０を含むことができる。ジェスチャー認識エンジン１９０は、ジェスチャー・フィルターの集合体を含むことができ、各フィルターは、（ユーザーが動くに連れて）スケルトン・モデルによって実行することができるジェスチャーに関する情報を含む。カメラ２６、２８およびキャプチャー・デバイス２０によって取り込まれたスケルトン・モデルの形態のデーター、およびそれと関連付けられた動きを、ジェスチャー認識エンジン１９０の中にあるジェスチャー・フィルターと比較して、いつユーザー（スケルトン・モデルによって表現される）が１つ以上のジェスチャーを行ったのか特定することができる。これらのジェスチャーは、アプリケーションの種々の制御と関連付けることができる。つまり、計算環境１２は、ジェスチャー認識エンジン１９０を使って、スケルトン・モデルの動きを解釈し、その動きに基づいてアプリケーションを制御することができる。
【００２９】
[0042]  図３Ａは、図１Ａから図２の計算環境１２を実現するために使うことができる計算環境の一実施形態例を示す。この計算環境は、ゲーミング・コンソールのような、マルチメディア・コンソール１００とするとよい。図３Ａに示すように、マルチメディア・コンソール１００は、レベル１キャッシュ１０２、レベル２キャッシュ１０４、およびフラッシュＲＯＭ（リード・オンリー・メモリー）１０６を有する中央処理ユニット（ＣＰＵ）１０１を有する。レベル１キャッシュ１０２およびレベル２キャッシュ１０４は、一時的にデーターを格納し、こうしてメモリー・アクセス・サイクルの回数を減らすことによって、処理速度およびスループットを向上させる。ＣＰＵ１０１は、１つよりも多いコア、つまり、追加のレベル１およびレベル２キャッシュ１０２および１０４を有して設けることもできる。フラッシュＲＯＭ１０６は、実行可能コードを格納することができる。実行可能コードは、マルチメディア・コンソール１００の電源をオンにしたときに、ブート・プロセスの初期段階中にロードされる。
【００３０】
[0043]  グラフィクス処理ユニット（ＧＰＵ）１０８およびビデオ・エンコーダー／ビデオ・コデック（コーダー／デコーダー）１１４が、高速および高分解能グラフィクス処理のためにビデオ処理パイプラインを形成する。データーは、バスを通して、グラフィクス処理ユニット１０８からビデオ・エンコーダー／ビデオ・コデック１１４に伝達される。ビデオ処理パイプラインは、テレビジョンまたは他のディスプレイに送信するために、データーをＡ／Ｖ（オーディオ／ビデオ）ポート１４０に出力する。メモリー・コントローラー１１０がＧＰＵ１０８に接続されており、限定ではなく、ＲＡＭ（ランダム・アクセス・メモリー）のような、種々のタイプのメモリー１１２にプロセッサーがアクセスし易くなっている。
【００３１】
[0044]  マルチメディア・コンソール１００は、Ｉ／Ｏコントローラー１２０、システム管理コントローラー１２２、オーディオ処理ユニット１２３、ネットワーク・インターフェース・コントローラー１２４、第１ＵＳＢホスト・コントローラー１２６、第２ＵＳＢコントローラー１２８、およびフロント・パネルＩ／Ｏサブアセンブリ１３０を含む。好ましくは、これらをモジュール１１８に実装する。ＵＳＢコントローラー１２６および１２８は、周辺コントローラー１４２（１）〜１４２（２）、ワイヤレス・アダプター１４８、および外部メモリー・デバイス１４６（例えば、フラッシュ・メモリー、外部ＣＤ／ＤＶＤ  ＲＯＭドライブ、リムーバブル媒体等）のためのホストとしての役割を果たす。ネットワーク・インターフェース１２４および／またはワイヤレス・アダプター１４８は、ネットワーク（例えば、インターネット、ホーム・ネットワーク等）へのアクセスを与え、イーサネット・カード、モデム、Ｂｌｕｅｔｏｏｔｈモジュール、ケーブル・モデム等を含む広範囲の種々の有線またはワイヤレス・アダプター・コンポーネントの内任意のものとすることができる。
【００３２】
[0045]  システム・メモリー１４３は、ブート・プロセスの間にロードされるアプリケーション・データーを格納するために設けられている。メディア・ドライブ１４４が設けられており、ＤＶＤ／ＣＤドライブ、ハード・ドライブ、またはその他のリムーバブル・メディア・ドライブ等を備えることができる。メディア・ドライブ１４４は、マルチメディア・コンソール１００の内部にあっても外部にあってもよい。アプリエーション・データーは、実行、再生等のためにマルチメディア・コンソール１００によってメディア・ドライブ１４４を通してアクセスすることができる。メディア・ドライブ１４４は、シリアルＡＴＡバスまたはその他の高速接続（例えば、ＩＥＥＥ１３９４）のようなバスを通して、Ｉ／Ｏコントローラー１２０に接続されている。
【００３３】
[0046]  システム管理コントローラー１２２は、メディア・コンソール１００の利用可能性を確保することに関する種々のサービス機能を提供する。オーディオ処理ユニット１２３およびオーディオ・コデック１３２は、高忠実度およびステレオ処理を行う、対応のオーディオ処理パイプラインを形成する。オーディオ・データーは、通信リンクを通して、オーディオ処理ユニット１２３とオーディオ・コデック１３２との間で伝達される。オーディオ処理パイプラインは、外部オーディオ・プレーヤーまたはオーディオ処理能力を有するデバイスによる再生のために、データーをＡ／Ｖポート１４０に出力する。
【００３４】
[0047]  フロント・パネルＩ／Ｏサブアセンブリ１３０は、電力ボタン１５０およびイジェクト・ボタン１５２の機能をサポートするだけでなく、マルチメディア・コンソール１００の外面上に露出する任意のＬＥＤ（発光ダイオード）またはその他のインディケーターもサポートする。システム電源モジュール１３６が、マルチメディア・コンソール１００のコンポーネントに電力を供給する。ファン１３８は、マルチメディア・コンソール１００内部にある回路を冷却する。
【００３５】
[0048]  ＣＰＵ１０１、ＧＰＵ１０８、メモリー・コントローラー１１０、およびマルチメディア・コンソール１００内部にある種々のその他のコンポーネントは、１系統以上のバスを通して相互接続されている。これらのバスには、シリアルおよびパラレル・バス、メモリー・バス、周辺バス、および種々のバス・アーキテクチャーの内任意のものを使うプロセッサー・バスまたはローカル・バスが含まれる。一例として、このようなアーキテクチャーは、ペリフェラル・コンポーネント相互接続（ＰＣＩ）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバス等を含むことができる。
【００３６】
[0049]  マルチメディア・コンソール１００の電源をオンにすると、システム・メモリー１４３からメモリー１１２および／またはキャッシュ１０２、１０４にアプリケーション・データーをロードし、ＣＰＵ１０１において実行することができる。アプリケーションは、グラフィカル・ユーザー・インターフェースを提示することができる。グラフィカル・ユーザー・インターフェースは、マルチメディア・コンソール１００において利用可能な異なるタイプのメディアにナビゲートするときに、一貫性のあるユーザー体験を提供する。動作において、アプリケーションおよび／またはメディア・ドライブ１４４に含まれている他のメディアをメディア・ドライブ１４４から起動または再生して、マルチメディア・コンソール１００に追加の機能を設けることもできる。
【００３７】
[0050]  マルチメディア・コンソール１００は、単にシステムをテレビジョンまたはその他のディスプレイに接続することによって、スタンドアロン・システムとして動作させることができる。このスタンドアロン・モードでは、マルチメディア・コンソール１００は、一人以上のユーザーがシステムと相互作用を行い、ムービーを見ること、または音楽を聞くことを可能にする。しかしながら、ネットワーク・インターフェース１２４またはワイヤレス・アダプター１４８によって利用可能となるブロードバンド接続機能を統合することにより、マルチメディア・コンソール１００を更に大きなネットワーク・コミュニティにおける一構成要素(participant)として動作させることもできる。
【００３８】
[0051]  マルチメディア・コンソール１００の電源をオンにすると、マルチメディア・コンソールのオペレーティング・システムによって、設定されている量のハードウェア・リソースがシステムの使用のために確保される。これらのリソースは、メモリー（例えば、１６ＭＢ）、ＣＰＵおよびＧＰＵサイクル（例えば、５％）、ネットワーキング帯域幅（例えば、８ｋｂｓ）等の確保を含むことができる。これらのリソースは、システムのブート時に確保されるので、確保されたリソースは、アプリケーションの視点からは存在しない。
【００３９】
[0052]  特に、メモリーの確保は、起動カーネル、コンカレント・システム・アプリケーション、およびドライバーを含めるのに十分大きいことが好ましい。サーブされたＣＰＵの使用がそのシステム・アプリケーションによって用いられない場合、アイドル状態にあるスレッドが未使用サイクルの内任意のものを消費するように、ＣＰＵの確保を一定レベルに維持することが好ましい。
【００４０】
[0053]  ＧＰＵの確保に関して、ＧＰＵ割り込みを用いることによって、システム・アプリケーション（例えば、ポップアップ）によって発生される軽量メッセージを表示して、ポップアップをオーバーレイにレンダリングするコードをスケジューリングする。オーバーレイに用いられるメモリー量は、オーバーレイのエリア・サイズに依存し、オーバーレイは画面の解像度と共にスケーリングする(scale)ことが好ましい。コンカレント・システム・アプリケーションによってフル・ユーザー・インターフェースが用いられる場合、アプリケーションの解像度とは独立した解像度を使うことが好ましい。周波数を変更しＴＶの同期を取り直す必要性をなくすように、スケーラーを使ってこの解像度を設定するとよい。
【００４１】
[0054]  マルチメディア・コンソール１００がブートして、システム・リソースを確保した後、コンカレント・システム・アプリケーションが実行してシステム機能を提供する。システム機能は、前述の確保したシステム・リソースの内部で実行する１組のシステム・アプリケーションの中にカプセル化されている。オペレーティング・システム・カーネルは、システム・アプリケーション・スレッドと、ゲーミング・アプリケーション・スレッドとの間でスレッドを識別する。一貫したシステム・リソース・ビューをアプリケーションに提供するために、システム・アプリケーションは、所定の時点および間隔でＣＰＵ１０１において実行するようにスケジューリングされていることが好ましい。このスケジューリングは、コンソールにおいて実行しているゲーミング・アプリケーションに対するキャッシュの分裂(disruption)を最少に抑えるためにある。
【００４２】
[0055]  コンカレント・システム・アプリケーションがオーディオを必要とする場合、時間に敏感であるため、オーディオ処理を非同期にゲーミング・アプリケーションにスケジューリングする。マルチメディア・コンソール・アプリケーション管理部（以下で説明する）は、システム・アプリケーションがアクティブのとき、ゲーミング・アプリケーションのオーディオ・レベル（例えば、無音化、減衰）を制御する。
【００４３】
[0056]  入力デバイス（例えば、コントローラー１４２（１）および１４２（２））は、ゲーミング・アプリケーションおよびシステム・アプリケーションによって共有される。入力デバイスは、確保されたリソースではないが、システム・アプリケーションとマルチメディア・アプリケーションとの間で切り換えられて、各々がそのデバイスのフォーカス(a focus of the device)を有するようにする。アプリケーション管理部は、好ましくは、マルチメディア・アプリケーションの知識を用いずに入力ストリームの切換を制御し、ドライバーはフォーカス・スイッチ(focus switches)に関する状態情報を維持する。カメラ２６、２８およびキャプチャー・デバイス２０は、コンソール１００のための追加の入力デバイスを定めることができる。
【００４４】
[0057]  図３Ｂは、ターゲット認識、分析、および追跡システムにおいて１つ以上のジェスチャーを解釈するため、および／またはターゲット認識、分析、および追跡システムによって表示された、アバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターを動画化するために用いられる、図１Ａから図２に示した計算環境１２の他の実施形態例を示す。計算システム環境２２０は、適した計算環境の一例に過ぎず、本明細書において開示される主題の使用範囲または機能に関して、いかなる限定をも示唆する意図はない。また、計算環境２２０が、本明細書において例示されるいずれの１つのコンポーネントまたはコンポーネントの組み合わせに関して何らかの依存性または要件を有するように解釈してはならない。実施形態によっては、図示する種々の計算エレメントが、本開示の特定の態様をインスタンス化するように構成されている回路を含むこともあり得る。例えば、本開示において用いられる回路という用語は、ファームウェアまたはスイッチによって機能（１つまたは複数）を実行するように構成されている特殊ハードウェア・コンポーネントを含むことができる。別の実施形態例では、回路という用語は、機能（１つまたは複数）を実行するために動作可能なロジックを具現化するソフトウェア命令によって構成される汎用処理ユニット、メモリー等を含むことができる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、実装者(implementer)は、ロジックを具現化するソース・コードを書くことができ、ソース・コードを機械読み取り可能コードにコンパイルすることができ、この機械読み取り可能コードを汎用処理ユニットによって処理することができる。技術的現状では、ハードウェア、ソフトウェア、またはハードウェア／ソフトウェアの組み合わせの間には殆ど差がないというところまで発展していることを当業者は認めることができるので、特定の機能を実行するためにハードウェアまたはソフトウェアのどちらを選択するかということは、実装者に委ねられた設計選択事項である。更に具体的には、ソフトウェア・プロセスを等価のハードウェア構造に変換することができ、更にハードウェア構造自体を等価のソフトウェア・プロセスに変換することができることを、当業者は認めることができる。つまり、ハードウェアの実施態様およびソフトウェアの実施態様のどちらを選択するかということは、実装者に委ねられた設計選択事項の１つである。
【００４５】
[0058]  図３Ｂにおいて、計算環境２２０は、コンピューター２４１を含む。コンピューター２４１は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター２４１がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。システム・メモリー２２２は、リード・オンリー・メモリー（ＲＯＭ）２２３およびランダム・アクセス・メモリー（ＲＡＭ）２６０のような揮発性および／または不揮発性メモリーの形態で、コンピューター記憶媒体を含む。基本入出力システム２２４（ＢＩＯＳ）は、起動中のように、コンピューター２４１内のエレメント間におけるデーター転送を補助する基本的なルーチンを含み、通例ＲＯＭ２２３内に格納されている。ＲＡＭ２６０は、通例、処理ユニット２５９が直ちにアクセス可能であるデーターおよび／またはプログラム・モジュール、または現在これによって処理されているデーターおよび／またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図３Ｂは、オペレーティング・システム２２５、アプリケーション・プログラム２２６、その他のプログラム・モジュール２２７、およびプログラム・データー２２８を示す。
【００４６】
[0059]  また、コンピューター２４１は、その他のリムーバブル／非リムーバブル揮発性／不揮発性コンピューター記憶媒体も含むことができる。一例にすぎないが、図３Ｂは、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ２３８、リムーバブル不揮発性磁気ディスク２５４からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ２３９、ならびにＣＤ  ＲＯＭまたはその他の光媒体のようなリムーバブル不揮発性光ディスク２５３からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ２４０を示す。動作環境の一例において使用可能なその他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピューター記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれる。ハード・ディスク・ドライブ２３８は、通例、インターフェース２３４のような非リムーバブル・メモリー・インターフェースを介してシステム・バス２２１に接続され、磁気ディスク・ドライブ２３９および光ディスク・ドライブ２４０は、通例、インターフェース２３５のようなリムーバブル・メモリー・インターフェースによって、システム・バス２２１に接続する。
【００４７】
[0060]  先に論じ図３Ｂに示すドライブおよびそれらに関連するコンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューター２４１のその他のデーターを格納する。図３Ｂでは、例えば、ハード・ディスク・ドライブ２３８は、オペレーティング・システム２５８、アプリケーション・プログラム２５７、他のプログラム・モジュール２５６、およびプログラム・データー２５５を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム２２５、アプリケーション・プログラム２２６、他のプログラム・モジュール２２７、およびプログラム・データー２２８と同じでも異なっていても可能であることを注記しておく。オペレーティング・システム２５８、アプリケーション・プログラム２５７、他のプログラム・モジュール２５６、およびプログラム・データー２５５は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザーは、キーボード２５１、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス２５２のような入力デバイスによって、コマンドおよび情報をコンピューター２４１に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザー入力インターフェース２３６を介して、処理ユニット２５９に接続されている。ユーザー入力インターフェース２３６は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）によって接続することも可能である。カメラ２６、２８およびキャプチャー・デバイス２０は、コンソール１００の追加入力デバイスを定めることができる。モニター２４２またはその他のタイプの表示装置も、ビデオ・インターフェース２３２のようなインターフェースを介して、システム・バス２２１に接続されている。モニターに加えて、コンピューターは、スピーカー２４４およびプリンター２４３のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース２３３を通して接続することができる。
【００４８】
[0061]  コンピューター２４１は、リモート・コンピューター２４６のような１つ以上のリモート・コンピューターへの論理接続を使って、ネットワーク環境において動作することも可能である。リモート・コンピューター２４６は、パーソナル・コンピューター、サーバー、ルータ、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピューター２４１に関して先に説明したエレメントの多くまたは全てを含むが、図３Ｂにはメモリー記憶装置２４７のみを示す。図３Ｂに示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）２４５およびワイド・エリア・ネットワーク（ＷＡＮ）２４９を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネットおよびインターネットにおいては一般的である。
【００４９】
[0062]  ＬＡＮネットワーク環境で使う場合、コンピューター２４１は、ネットワーク・インターフェースまたはアダプター２３７を介してＬＡＮ２４５に接続する。ＷＡＮネットワーク環境で使う場合、コンピューター２４１は、通例、モデム２５０、またはインターネットのようなＷＡＮ２４９を通して通信を設定するその他の手段を含む。モデム２５０は、内蔵でも外付けでもよく、ユーザー入力インターフェース２３６またはその他の適切な機構を介してシステム・バス２２１に接続することができる。ネットワーク環境では、コンピューター２４１に関係付けて図示したプログラム・モジュール、またはその一部は、リモート・メモリー記憶装置に格納することもできる。一例として、そして限定ではなく、図３Ｂは、リモート・アプリケーション・プログラム２４８がメモリー・デバイス２４７に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを設定する他の手段も使用可能であることは認められよう。
***以上９３９から流用
[0063]  図４Ａは、キャプチャー・デバイス２０から生成することができるユーザーのスケルトン・マッピングの一例を示す。この実施形態では、種々の関節および骨が識別され、各手３０２、各前腕３０４、各肘３０６、各上腕二頭筋３０８、各肩３１０、各臀部３１２、各腿３１４、各膝３１６、各前肢３１８、各足３２０、頭部３２２、胴３２４、脊椎の最上部３２６および最下部３２８、ならびにウェスト３３０がある。もっと多くのポイントを追跡する場合、指またはつま先の骨および関節、あるいは鼻および目のような顔の個々の構造というような、追加の構造を識別すればよい。
【００５０】
[0064]  ユーザーは、彼の体を動かすことによって、ジェスチャーを行うことができる。ジェスチャーとは、ユーザーによるモーションまたはポーズから成り、画像データーとして取り込み、解析して意味を求めることができる。ジェスチャーは、ボールを投射のを真似するというようなモーションを含み、動的であってもよい。ジェスチャーは、人が胴体３２４の前で前腕３０４を組んだままにしているというような、静止ポーズであってもよい。また、ジェスチャーは、偽の剣を振るというように、小道具を組み込んでもよい。また、ジェスチャーは、手３０２同士を叩くというような、１つよりも多い体部分を含んでもよく、または人がその唇をすぼめるというような些細なモーションであてもよい。
【００５１】
[0065]  ジェスチャーは、一般的な計算コンテキストにおける入力に用いることができる。例えば、手３０２または他の体部分の種々のモーションは、階層リストにおいて上下にナビゲートする、ファイルを開く、ファイルを閉じる、ファイルをセーブするというような、共通するシステム全体のタスクに対応することもできる。また、ゲームによっては、ジェスチャーをビデオ・ゲーム特定のコンテキストで用いることもできる。例えば、運転ゲームでは、手３０２および足３２０の種々のモーションが、ある方向に車両を操縦すること、ギアをシフトすること、アクセルを踏むこと、およびブレーキをかけることに対応するとよい。
【００５２】
[0066]  ユーザーは、彼自身がその場で歩行または走行することによって、歩行または走行に対応するジェスチャーを生成することができる。ユーザーは、動くことなく歩行を模擬するうために、各足３１２〜３２０を交互に上げ下げすればよい。本システムは、各臀部３１２および各腿３１４を分析することによって、このジェスチャーを解析することができる。１つの臀部−膝の角度（垂直線に対して測定する。この場合、直立しているときの足の臀部−腿の角度は０度であり、前方に水平に延ばした足の臀部−腿の角度は９０度である）が、他方の腿に対してあるしきい値を超えたときに、歩進(step)を認識することができる。歩行または走行は、交互の足によるある回数の連続する歩進の後に、認識することができる。最新の２回の歩進間の時間は、周期と考えることができる。ある回数の周期の後、しきい値角度が満たされない場合、本システムは、歩行または走行ジェスチャーが停止したと判断することができる。
【００５３】
[0067]  「歩行または走行」ジェスチャーを仮定して、アプリケーションは、このジェスチャーと関連のあるパラメータに値を設定することができる。これらのパラメーターは、前述のしきい値角、歩行または走行ジェスチャーを開始するのに必要な歩進数、ジェスチャーを終了するために歩進が行われなかった周期の数、およびジェスチャーが歩行または走行か否か判断するしきい値周期を含むことができる。ユーザーが彼の足を素早く動かしたときの速い周期は走行に対応することができ、それよりも遅い周期は歩行に対応することができる。
【００５４】
[0068]  ジェスチャーには、１組のデフォルト・パラメーターを最初に関連付けることができ、アプリケーションは、それ自体のパラメーターで、デフォルト・パラメーターを無効にすることができる。このシナリオでは、アプリケーションはパラメーターを供給することを強制されないが、代わりに、アプリケーションが定めたパラメーターがない場合にジェスチャーを認識することを可能にする１組のデフォルト・パラメーターを使うことができる。
【００５５】
[0069]  ジェスチャーと関連付けることができる種々の出力がある。ジェスチャーが行われているか否かについてベースラインの「はいまたはいいえ」があるとよい。また、ユーザーの追跡されている動きがジェスチャーに対応する可能性に対応する、確実度レベルがあってもよい。これは、０および１の間で、０および１を含む浮動小数点数を範囲とする線形目盛りとすることができる。このジェスチャー情報を受け取ったアプリケーションが擬陽性を入力として受け入れることができない場合、少なくとも０．９５というような、高い確実度レベルを有する認識されたジェスチャーのみを用いるとよい。アプリケーションが、擬陽性を犠牲にしてでも、そのジェスチャーのあらゆるインスタンスを認識しなければならない場合、僅かに０．２よりも大きいというような、遙かに低い確実度レベルを少なくとも有するジェスチャーを用いてもよい。ジェスチャーは、最新の２回の歩進間の時間についての出力を有することができ、最初の歩進のみが登録されている場合、これを、−１のような、予約値に設定するとよい（何故なら、任意の２回の歩進の間の時間は、正でなければならないからである）。また、ジェスチャーは、最新の歩進間に達した最も高い腿の角についての出力も有することもできる。
【００５６】
[0070]  他のジェスチャー例に、「踵上げジャンプ」(heel lift jump)がある。この場合、ユーザーは、彼の踵を地面から上げるが、彼のつま先を付けたままにすることによって、このジェスチャーを行うことができる。あるいは、ユーザーは空中にジャンプすることもでき、この場合彼の両足３２０は完全に地上から離れている。本システムは、肩３１０、臀部３１２、および膝３１６の角度関係を分析することによって、このジェスチャーについてスケルトンを解析し、これらが、真っ直ぐに直立するときと等しい並び(alignment)の位置にあるか否か調べることができる。次いで、これらのポイントならびに上下の脊椎ポイント３２６および３２８を監視して、あらゆる上方向への加速度を求めることができる。十分な加速度の組み合わせがあると、ジャンプ・ジェスチャーをトリガーすることができる。
【００５７】
[0071]  この「踵上げジャンプ」ジェスチャーを仮定すると、アプリケーションは、このジェスチャーと関連のあるパラメーターに値を設定することができる。これらのパラメーターは、このジェスチャーをトリガーするためには、ユーザーの肩３１０、臀部３１２、および膝３１６の何らかの組み合わせが、どの位速く上に動かなければならないかを決定する前述の加速度しきい値、ならびに、ジャンプをまだトリガーすることができる肩３１０、臀部３１２、および膝の間の並びの最大角を含むことができる。
【００５８】
[0072]  出力は、確実度レベル、およびジャンプの時点におけるユーザーの体の角度を含むとよい。
[0073]  ジェスチャーを受け取るアプリケーションの特性(particulars)に基づいてそのジェスチャーについてのパラメーターを設定することは、ジェスチャーを精度高く識別するには重要である。ジェスチャーおよびユーザーの意図を適正に識別すると、疑いの余地のないユーザー体験を作り出すのに大いに役立つ。ジェスチャー認識システムが敏感過ぎ、手３０２の些細な前方へのモーションでさえも投げると解釈されると、ユーザーは苛々してくる可能性がある。何故なら、彼がジェスチャーを行う意図がないときにそのジェスチャーが認識されるからであり、つまり彼はシステムを制御できないからである。感度スペクトルのいずれの端部においても、ユーザーは適正に入力をシステムに供給することができないので、苛々してくることになる。
【００５９】
[0074]  ジェスチャーに対する他のパラメーターは、動いた距離とするとよい。ユーザーのジェスチャーが仮想環境におけるアバターの行為を制御する場合、そのアバターがボールからの腕の距離であってもよい。ユーザーがボールと相互作用しそれを掴みたい場合、ユーザーが、掴むジェスチャーを行いながら、彼の腕３０２〜３１０を最大限延ばすことが必要になる。この状況では、同様の掴むジェスチャーであっても、ユーザーが彼の腕３０２〜３１０を部分的に延ばすだけでは、ボールと相互作用するという結果には至らないようにするとよい。
【００６０】
[0075]  ジェスチャーまたはその一部が、それが行われなければならない空間のボリュームを、パラメーターとして有してもよい。この空間のボリュームは、通例、体に関して表現することができ、ジェスチャーが体の動きを含む。例えば、右利きのユーザーがフットボールを投げるジェスチャーは、右肩３１０ａよりも高い空間のボリューム、そして頭部３２２の投げる腕３０２ａ〜３１０ａと同じ側だけで認識されればよい。この投射ジェスチャーの場合のように、ボリュームの全ての境界を定める必要はない場合もある。この場合、体から遠ざかる外側の境界は定められないままにされており、ボリュームは定められずに広がるか、または監視されているシーンのエッジまで広がる。
[0076]  図４Ｂは、図２のジェスチャー認識エンジン１９０の一実施形態例を更に詳細に示す。図示のように、ジェスチャー認識エンジン１９０は、１つのジェスチャーまたは複数のジェスチャーを判定するために、少なくとも１つのフィルター４１８を備えることができる。フィルター４１８は、ジェスチャー４２６（以後、「ジェスチャー」と呼ぶ）を定める情報を、そのジェスチャーについてのパラメーター４２８、またはメタデーターと共に備えている。例えば、投げる場合、一方の手が体の背後から体の前を通過するモーションが含まれ、ユーザーの一方の手が体の背後から体の前を通過する動きを表す情報を含むジェスチャー４２６として実現することができる。この動きは、深度カメラによって取り込むことができる。次いで、このジェスチャー４２８に合わせて、パラメーター４２８を設定することができる。ジェスチャー４２６が「投げる」の場合、パラメーター４２８は、手が到達しなければならないしきい値速度、手が移動しなければならない距離（絶対的またはユーザー全体の大きさに対して相対的な距離）、および認識エンジンによる、そのジェスチャーが行われたことの確実度の格付けとすることができる。ジェスチャー４２６についてのこれらのパラメーター４２８は、アプリケーション間、１つのアプリケーションのコンテキスト間、または１つのアプリケーションの１つのコンテキスト内において経時的に変わっていってもよい。
【００６１】
[0077]  フィルターは、モジュール状または相互交換可能であるとよい。一実施形態では、フィルタは、複数の入力と複数の出力とを有し、これらの入力の各々がタイプを有し、これらの出力の各々がタイプを有する。この状況では、第１フィルタを、この第１フィルタと同じ数および同じタイプの入力と出力とを有する第２フィルタと交換することができ、認識エンジンのアーキテクチャーの他の態様を全く変更することはない。例えば、入力としてスケルトン・データーを取り込み、そのフィルタと関連のあるジェスチャーが行われている確実度と、操縦角度とを出力する駆動用第１フィルターがあってもよい。おそらくは第２駆動フィルタの方が効率的であり必要な処理リソースが少なくて済むために、この第１駆動フィルタを第２駆動フィルタと交換したい場合、第２フィルタが同じ入力および出力、即ち、スケルトン・データー型である１つの入力と、確実度型および角度型である２つの出力を有する限り、単に第１フィルタを第２フィルタと交換することによって、そうすることができる。
【００６２】
[0078]  フィルターは、パラメーターを有する必要はない。例えば、ユーザーの身長を戻す「ユーザー身長」フィルターが、調整することができるあらゆるパラメーターを考慮することはない。代わりの「ユーザー身長」フィルタが、ユーザーの身長を判定するときに、ユーザーの靴、髪型、帽子、および姿勢を考慮に入れるべきか否かというような、調整可能なパラメーターを有すればよい。
【００６３】
[0079]  フィルターへの入力は、関節において合体する骨によって形成される角度のような、ユーザーの関節位置についての関節データー、シーンからのＲＧＢカラー・データー、およびユーザーの態様の変化率、というような事項が含まれるとよい。フィルターからの出力は、所与のジェスチャーが行われる確実度、ジェスチャーのモーションが行われる速度、およびジェスチャーのモーションが行われた時刻というような事項を含むとよい。
【００６４】
[0080]  コンテキストは、風習コンテキスト(cultural context)であってもよく、そして環境コンテキストであってもよい。風習コンテキストとは、システムを使うユーザーの風習に言及する。風習が異なると、同様のジェスチャーを用いても、全く異なる意味を伝えることもあり得る。例えば、アメリカ人のユーザーが他のユーザーに「見る」または「自分の目を使う」ように指示したいとき、彼の目の遠位端に近い彼の頭の上に載せることがある。しかしながら、イタリア人にとって、このジェスチャーはマフィアを仄めかす(reference)と解釈されるかもしれない。
【００６５】
[0081]  同様に、１つのアプリケーションでも異なる環境間には、異なるコンテキストがある場合もある。自動車を運転することを伴うファースト・パーソン・シューター・ゲーム(first-person shooter game)を取り上げる。ユーザーが歩きながら、指を地面に向けて拳を作り、体から離れるように前方にその拳を広げると、パンチを打つジェスチャーを表すことができる。ユーザーが運転のコンテンツにある間では、その同じモーションが「ギア・シフト」モーションを表すこともある。また、１つ以上のメニュー環境がある場合もあり、その場合、ユーザーは彼のゲームをセーブすることができ、彼のキャラクターの装備間で選択することができ、または直接ゲーム・プレーを構成しない同様の行為を行うことができる。その環境では、この同じジェスチャーが、何かを選択するまたは他の画面に進むというような、第３の意味を有することもある。
【００６６】
[0082]  ジェスチャー認識エンジン１９０は、ゲーム・フィルター４１８に機能を与える基本認識エンジン４１６を有することができる。一実施形態では、認識エンジン４１６が実装する機能は、認識されたジェスチャーおよび他の入力を追跡する経時的入力アーカイブ、隠れマルコフ・モデルの実装（モデル化されるシステムは、未知のパラメーターを有するマルコフ・プロセスであると仮定される。このプロセスでは、現在の状態が、今後の状態を判定するために必要なあらゆる過去の状態情報をカプセル化するので、この目的のために他の過去の状態情報を維持しなくてもよい。隠れているパラメーターは、観察可能なデーターから判定される）、およびジェスチャー認識の特定の実例(instance)を解決するために必要とされる他の機能を含む。
【００６７】
[0083]  フィルター４１８は、基本認識エンジン４１６の上にロードおよび実装され、エンジン４１６によって全てのフィルター４１８に提供されるサービスを利用することができる。一実施形態では、基本認識エンジン４１６は、受け取ったデーターを処理して、それが任意のフィルター４１８の要件を満たすか否か判定する。入力を解析するというような、これらの提供されるサービスは、各フィルター４１８によってではなく、基本認識エンジン４１６によって１回提供されるので、このようなサービスは、ある時間期間に１回だけ処理されればよく、その期間の間フィルター４１８毎に１回処理されるのではないので、ジェスチャーを判定するために必要とされる処理が減少する。
【００６８】
[0084]  アプリケーションは、認識エンジン１９０によって提供されるフィルター４１８を用いることができ、またはそれ自体のフィルター４１８を設け、基本認識エンジン４１６にプラグインしてもよい。一実施形態では、全てのフィルタ４１８がこのプラグイン特性をイネーブルするために、共通のインターフェースを有する。更に、全てのフィルター４１８がパラメーター４２８を利用することができるので、以下で説明するような１つのジェスチャー・ツールを使って、フィルター・システム４１８全体をデバッグおよび調整することができる。
【００６９】
[0085]  これらのパラメーター４２８は、ジェスチャー・ツール４２０によって、アプリケーションに合わせてまたはアプリケーションのコンテキストに合わせて調整することができる。一実施形態では、ジェスチャー・ツール４２０は、複数のスライダー４２２を備えており、各スライダー４２２が１つのパラメーター４２８に対応する。また、ジェスチャー・ツール４２０は、体４２４の描画表現も備えている。パラメーター４２８が対応するスライダー４２２によって調節されるに連れて、体４２４は、これらのパラメーター４２８によってジェスチャーとして認識される行為、およびこれらのパラメーター４２８によってジェスチャーとして認識されるのではなく、そのまま識別される行為の双方を表すことができる。このジェスチャーのパラメーター４２８の可視化によって、ジェスチャーをデバッグし微調整する有効な手段が得られる。
【００７０】
[0086]  図５は、重なり合ったジェスチャーまたはフィルター４１８から作られた一層複雑なジェスチャーまたはフィルター４１８を示す。ジェスチャーは互いに重なり合うことができる。即ち、一度に１つよりも多いジェスチャーをユーザーが表すことができる。例えば、投射ジェスチャー(throw gesture)が行われるときに、投げる以外のあらゆる入力を禁止する、またはユーザーが動かずにいることを要求すると、むしろジェスチャーの成分が少なくなる（例えば、１本の腕のみを伴う投射ジェスチャーを行う間静止する）。ジェスチャーが重なる場合、ユーザーはジャンプのジェスチャーと投射ジェスチャーとを同時に行うことができ、これらのジェスチャー双方がジェスチャー・エンジンによって認識される。
【００７１】
[0087]  図５Ａは、重ね合わせの枠組み(stacking paradigm)による１つのジェスチャー・フィルター４１８を示す。ＩＦｉｌｔｅｒフィルタ５０２は、あらゆるジェスチャー・フィルターにおいて使うことができる基本的なフィルタ４１８である。ＩＦｉｌｔｅｒ５０２は、ユーザー位置データー５０４を取り込み、ジェスチャーが行われたことの確実度レベル５０６を出力する。また、この位置データー５０４をハンドル・フィルター５０８に供給する。ハンドル・フィルター５０８は、これを入力として取り込み、ユーザーが操縦している角度（例えば、ユーザーの現在の方位の右に４０度）５１０を出力する。
【００７２】
[0088]  図５Ｂは、フィルター４１８を図５Ａのジェスチャー・フィルターの上に重ねる更に複雑なジェスチャーを示す。ＩＦｉｌｔｅｒ５０２およびハンドル５０８に加えて、ＩＴｒａｃｋｉｎｇフィルター５１２がある。このフィルター５１２は、ＩＦｉｌｔｅｒ５０２から位置データー５０４を受け取り、ユーザーがジェスチャー５１４によって行った進みの量を出力する。また、ＩＴｒａｃｋｉｎｇ５１２は、位置データー５０４をＧｒｅａｓｅＬｉｇｈｔｎｉｎｇ５１６およびＥＢｒａｋｅ５１８に供給する。これらは、緊急ブレーキを使うというような、車両を運転するときに行われる場合がある他のジェスチャーに関するフィルター４１８である。
【００７３】
[0089]  図６は、ユーザーがフットボール・ビデオ・ゲームにおいて「フェア・キャッチ」を伝えるために行うことができるジェスチャー例を示す。これらの図は、様々な時点におけるユーザーを示し、図６Ａが最初の時点であり、図６Ｅが最後の時点である。これらの図の各々は、深度カメラ４０２によって取り込まれた画像データーのスナップショットまたはフレームに対応することができるが、必ずしも連続的な画像データーのフレームとは限らない。何故なら、深度カメラ４０２は、ユーザーが距離をカバーできるよりも素早くフレームを取り込むことができるからである。例えば、このジェスチャーは３秒の期間にわたって行われることがあり、深度カメラが毎秒４０フレームでデーターを取り込む場合、ユーザー６０２がこのフェア・キャッチ・ジェスチャーを行った間に、６０フレームの画像データーを取り込むことになる。
【００７４】
[0090]  図６Ａでは、ユーザー６０２が彼の腕６０４を彼の両側に下ろした状態で開始する。次いで、ユーザーは、図６Ｂに示すように、腕を彼の肩の上まで上げ、更に図６Ｃに示すように、ほぼ彼の頭まで上げる。そこから、図６Ｄに示すように、彼は彼の腕６０４を肩のレベルまで下げ、更に図６Ｅに示すように、ほぼ彼の頭のレベルに再度上げる。このジェスチャーが取り消されたこと、または他のジェスチャーが行われていることを伝えることができる中間位置(intervening position)が全く生ずることなく、システムがユーザー６０２によるこれらの位置を取り込むと、フェア・キャッチ・ジェスチャー・フィルターに、ユーザー６０２がフェア・キャッチ・ジェスチャーを行ったことの高い確実度レベルを出力させることができる。
【００７５】
[0091]  図７は、画像データーの各フレームが解析されてユーザーのスケルトン・マップが生成されるときの、図５の「フェア・キャッチ」ジェスチャー例を示す。ユーザーの深度画像からスケルトン・マップを生成し終えると、本システムは、ここで、そのユーザーの体が経時的にどのように動くか判定し、その判定からジェスチャーを解析することができる。
【００７６】
[0092]  図７Ａでは、ユーザーの肩３１０は彼の肘３０６よりも上にあり、一方、肘３０６は彼の頭３０２の上にある。ここで、肩３１０、肘３０６、および手３０２は、図７Ｂにおいて均一レベルにある。次いで、図７Ｃにおいて、本システムは、手３０２が肘よりも上にあり、肘が肩３１０の上にあることを検出する。図７Ｄでは、ユーザーは図７Ｂの位置に戻っており、肩３１０、肘３０６、および手３０２が均一レベルにある。図７Ｅに示す、このジェスチャーの最終位置では、ユーザーは図７Ｃの位置に戻り、手３０２が肘の上にあり、肘は肩３１０の上にある。
【００７７】
[0093]  いずれの１つの画像においてもユーザーが静止して見えるように、キャプチャ・デバイス２０が一連の静止画像を取り込む間、ユーザーは、このジェスチャーを行う間動いている（先に論じたような、静止ジェスチャーではない）。本システムは、各静止画像においてこの一連のポーズを取り込むことができ、このポーズから、ユーザーが行っている動きのジェスチャーの確実度レベルを判定することができる。
【００７８】
[0094]  前述のジェスチャーを行うとき、ユーザーが、彼の右肩３１０ａ、右肘３０６ａ、および右手３０２ａによって形成される角度を、例えば、１４０度と１４５度の間で作ることができる可能性は低い。したがって、このフェア・キャッチ・ジェスチャー４２６にフィルター４１８を使うアプリケーションは、アプリケーションの細目(specifics)に最良にサーブするように、関連のあるパラメーター４２８を調整することができる。例えば、図７Ｃおよび図７Ｅにおける位置は、ユーザーが彼の手３０２を彼の肩３１０よりも上に上げているときにはいつでも、肘３０６の位置には関係なく、認識することができる。もっと厳格な１組のパラメーターがある場合、両手３０２が頭３１０の上にあり、両肘３０６が双方共両肩３１０の上で頭３２２と手３０２の間になければならないこともある。加えて、フェア・キャッチ・ジェスチャー４２６のパラメーター４２８は、ユーザーが図７Ａの位置から図７Ｅの位置まで、１．５秒というような、指定された時間期間以内に動くことを要求することもあり、ユーザーが動いてこれらの位置を通るのに１．５秒よりも長くかかった場合、フェア・キャッチ４１８として認識されなくなり、非常に低い確実度レベルが出力される可能性がある。
【００７９】
[0095]  図８Ａから図８Ｃは、システムが認識した走行ジェスチャーを行っているユーザーを、異なる動きおよびポーズを取り込むことによって示す。
[0096]  図８Ａは、完全走行ジェスチャーを行っているユーザーを示す。ユーザー１８は、キャプチャ・デバイス２０によって取り込まれる。ユーザー１８は、同じ場所で走行することによって、即ち、彼の膝の各々を交互にほぼウェストの高さまで上げて、次いで足を地面まで下ろすことによって、この完全走行ジェスチャーを形成する。完全走行ジェスチャーのこのバージョンは、ユーザー１８が、ジェスチャーを構成するモーションを、彼がジェスチャーを続けたい期間だけ繰り返すということから、周期的ジェスチャーである。
【００８０】
[0097]  図８Ｂは、ショートカット走行ジェスチャーを行っているユーザーを示し、このショートカット走行ジェスチャーは、図８Ａの完全走行ジェスチャーの動きの部分集合を含む。ショートカット走行ジェスチャーのこのバージョンを行うには、ユーザー１８は、彼の膝がほぼ臀部のレベルになるように彼の足の一方を上げて、このポーズを維持する。このジェスチャー・ショートカットは、図８Ａの完全ジェスチャーの動きの内部分集合から成る。図８Ａにおけるユーザーは繰り返し彼の両膝を上げたり下ろしたりするが、図８Ｂでは、ユーザーは彼の膝を１回だけ上げてそのポーズを維持する。図８Ａの完全ジェスチャーは周期的な動きを伴うが、この実施形態では、ショートカット・ジェスチャーは、一連の繰り返しではない動きを伴うか、または一連の動きを伴うが、その一連全体は繰り返されない。一実施形態では、ユーザー１８がジェスチャーを終了したいとき、ユーザー１８は彼の膝を直立ポーズまで下ろす。一実施形態では、この膝を下ろす行為は、完全ジェスチャーの部分集合を構成することもできる。一実施形態では、計算環境１２は、ユーザー１８が彼の膝をほぼ臀部のレベルで、指定された時間量よりも長く維持したときに、このジェスチャーが、完全ジェスチャーを生成するのではなく、このジェスチャー・ショートカットを終了するためであると判断する。
【００８１】
[0098]  図８Ｃは、第２タイプのショートカット走行ジェスチャーを行っているユーザーを示す。この第２タイプのショートカット走行ジェスチャーは、図８Ａの完全ランニング・ジェスチャーとは別の動きを含む。ここでは、ユーザー１８は、一歩前に出て一方の足を他方の前に置き、双方の足を地面に付けて、彼が走行ジェスチャーを生成したい期間だけこのポーズを維持する。この位置は、図８Ａの完全走行ジェスチャーでは見られない。ユーザー１８は、このジェスチャーを終わらせるには、足を戻して直立姿勢になればよい。このジェスチャーは、図８Ｂのそれと同様であり、双方共、ジェスチャーを開始する動きを伴い、ジェスチャーを維持するためにポーズを維持し、ジェスチャーを終わらせる動きを伴う。
【００８２】
[0099]  図９は、ジェスチャー・ショートカットの動作手順例を示す。先に論じたように、計算機への１つのジェスチャー入力が、計算機によって、ユーザーによって行われた複数の方法の結果として認識することができる。一実施形態では、ユーザーによってジェスチャーを行うことができるこの複数の方法には、ジェスチャーの完全バージョンおよびジェスチャーのショートカットが含まれる。
【００８３】
[0100]  ジェスチャー・ショートカットは、種々のアプリケーション・コンテキストにおいて使うことができる。例えば、走行ジェスチャー・ショートカットは、陸上競技ゲームのような、走行を伴うアプリケーションにおいて使うことができる。アプリケーションのテキスト入力コンテキストでは、テキスト入力ショートカットを使うことができる。例えば、ユーザーは、手話ジェスチャー(sign language gesture)を使ってテキストを入力することができる。手話ジェスチャーの完全バージョンは、H-E-A-R-Tのように、単語の各文字を身振りで示すことを含むとよい。「ｈｅａｒｔ」の手話ジェスチャーのショートカットは、ユーザーが手を心臓の表現に形成するというように、心臓を示す１つのジェスチャーを含むとよい。このようなサイン言語は、アメリカ手話（ＡＳＬ：American Sign Language）を含むことができる。
【００８４】
[0101]  ジェスチャー・ショートカットは、対応する完全バージョンのジェスチャーとは異なる体部分を伴うのであってもよい。例えば、ユーザーが彼の脚部の使用を止めるが、走行ジェスチャーの完全バージョンが同じ位置で走ることを伴う場合、このジェスチャーのショートカットは、ユーザーの手で走るモーションを真似することを含めばよい。
【００８５】
[0102]  任意選択の動作９０２は、ジェスチャーのショートカットを定めることに対応するユーザー入力を受け取ることを示す。例えば、ユーザーは、計算機によって促されることによって、または彼がそのようにしたいことを計算機に指示することによって、モーションまたはポーズを取ることができ、ジェスチャーを行う１つの方法として、これがキャプチャー・デバイスによって取り込まれて格納される。
【００８６】
[0103]  一実施形態では、ユーザーが彼の動きまたはポーズによってジェスチャーのショートカットを定めた場合、次に本システムにおいてこのジェスチャー・ショートカットをリファインすることができる。例えば、フィルタおよび対応するパラメーターを使ってジェスチャーが認識される場合、ユーザーは、先に論じたような方法で、彼のジェスチャー・ショートカットのパラメーターを調整することができる。
【００８７】
[0104]  一実施形態では、ジェスチャーのショートカットが、第２ジェスチャーの完全バージョンに対応する。１つのジェスチャー・ショートカットが、複数の完全ジェスチャーに対応する場合もあり、ユーザーがショートカットを定めるときに、そのショートカットが複数の完全ジェスチャーに対応することを、ユーザーが示すことができる。例えば、テキスト・ファイルを印刷するコンテキストでは、ユーザーは、用紙の向きを縦にするように選択する完全ジェスチャー、４枚のコピーを印刷することを選択する完全ジェスチャー、および印刷するために特定のプリンターを選択するジェスチャーに対応する１つのジェスチャー・ショートカットを定めることができる。
【００８８】
[0105]  ジェスチャー・フィルターおよびパラメーターによってジェスチャーが認識される一実施形態では、ジェスチャーのショートカットおよびジェスチャーの完全バージョンが、同じジェスチャー・フィルターを使うこともできるが、１つ以上のパラメーターには異なる値が用いられる。例えば、「投球」ジェスチャーの完全バージョンでは、ユーザーが彼の手を彼の胴体の後ろからほぼ腕の長さだけ彼の胴体の前に動かすことが必要となることがある。ショートカットでは、手をそれほど後ろにまたは前に延ばす必要がなくなるように、手を動かさなければならない必要な距離を短縮することができる。これは、「最短の手の距離」についてのパラメーター値のような、１つまたは複数のパラメーター値を変更するために実施することができる。
【００８９】
[0106]  動作９０４は、キャプチャー・デバイスによって取り込まれたデーターを受け取ることを示し、このデーターは、ユーザーが行ったジェスチャーに対応する。キャプチャー・デバイスは、ユーザーが位置する距離における部屋の床から天井まで、および各側の壁までというように、ユーザーの全てを含むシーンを取り込むことができる。また、キャプチャー・デバイスは、ユーザーが机に向かって座っているときの腹部よりも上のユーザーというような、ユーザーの一部のみを含むシーンを取り込むこともできる。また、キャプチャー・デバイスは、ユーザーが彼または彼女の手に持っているプロップ・カメラ(prop camera)のような、ユーザーによって制御される物体を取り込むこともできる。
【００９０】
[0107]  任意選択動作９０６は、ジェスチャーのショートカットを使ってデーターを処理することを、アプリケーションから決定することを示す。アプリケーションは、何らかの方法で入力として用いられるショートカットを制限することもできる。例えば、陸上競技ゲームでは、走行はそのプロセスに統合されていると見なされることもあり、アプリケーションは走行ジェスチャーのショートカットを禁止またはディスエーブルし、ユーザーが走ることを望むときには、完全な走行ジェスチャーを行うようにユーザーに要求することもできる。対照的に、ファースト・パーソン・シューター・ゲームでは、走行は、ゲームの使用にとって付帯的と見なされることもあり、したがって、走行ジェスチャーのショートカットの使用を許可してもよい。このファースト・パーソン・シューター・ゲームでは、小火器を発射する操作は、このプロセスに統合されていると見なされることもあり、アプリケーションは、狙いを定めるジェスチャーや発火するジェスチャーのショートカットを禁止またはディスエーブルすることもできる。
【００９１】
[0108]  一実施形態では、ユーザーは、先に論じたように、ユーザーが同時に複数のジェスチャーを行うのと同様に、認識されたジェスチャーのショートカットおよびジェスチャーの完全バージョンの双方を行うことができる。ファースト・パーソン・シューターの例を用いると、ユーザーは、走行ジェスチャーのショートカット、および狙いを定めるジェスチャーの完全バージョンを同時に行うことができる。
【００９２】
[0109]  一実施形態では、ジェスチャーのショートカットを使ってデーターを処理するというこの決定は、ユーザーから発せられる。例えば、どのショートカットを処理するかは、ユーザーが選択したアプリケーションの難易度に対応することがある。ユーザーが最も低い難易度を選択した場合、全てのショートカットを処理することができる。ユーザーが難易度を上げていくに連れて、ショートカットを全く処理しない最高の難易度になるまで、処理することが許可されるショートカットの数が減少すればよい。
【００９３】
[0110]  この決定は、ユーザーの能力に適合するように、時間と共に変化してもよい。例えば、アプリケーション・セッションの開始時に、デフォルトで許可されているショートカットの設定を行っておき、セッションの間に、ユーザーがジェスチャーをうまく行う能力を示したとき、またはこのような能力の欠如を示したときに、許可されているショートカットを増加または減少させることができる。更に、セッション過程の間にユーザーが疲れるにつれて、または能力が増大するに連れて、許可されているショートカットを、ユーザーの現在の能力状態に対応するように、増加または減少させることができる。
【００９４】
[0111]  動作９０８は、ユーザーがジェスチャーのショートカットを行ったか否かに対応する出力を決定するために、データーを処理することを示し、このジェスチャーのショートカットは、ジェスチャーの完全バージョンに対応する。一実施形態では、この出力は、ジェスチャーが行われたことの確実度レベルを含むとよい。一実施形態では、これは、ジェスチャーの完全バージョンまたはジェスチャーのショートカットのどちらが観察されたのかについての指示を含むこともできる。
【００９５】
[0112]  動作９１０は、ジェスチャーのショートカットに対応する出力をアプリケーションに送ることを示す。現在の動作がアプリケーションによって行われると、処理されたユーザー入力を取り込みそれをアプリケーション内部動作にマッピングする、アプリケーションのコンポーネントに出力を送ることができる。
【００９６】
[0113]  任意選択の動作９１２は、ユーザーがジェスチャーの完全バージョンを行ったか否かに対応する出力を決定するためにデーターを処理し、ジェスチャーの完全バージョンに対応する出力をアプリケーションに送ることを示す。
【００９７】
[0114]  一実施形態では、ジェスチャーのショートカットが、ジェスチャーの完全バージョンを構成するユーザーの動きの部分集合を含むユーザーの動きを含む。
[0115]  一実施形態では、ジェスチャーのショートカットに対応する出力は、ユーザーがそのジェスチャーをトリガーしたことの高い可能性に対応し、ジェスチャーの完全バージョンい対応する出力は、ユーザーがそのジェスチャーをトリガーした高い可能性に対応し、アプリケーションは１つのユーザー・ジェスチャーのみを認識する。ジェスチャーのショートカットが、そのジェスチャーの完全バージョンの部分集合を含む場合、ユーザーがそのジェスチャーの完全バージョンを行うと、そのジェスチャーのショートカットも行うことになる。このため、１つの意図したジェスチャー入力に対して、２つのジェスチャーが認識される可能性がある。一実施形態では、ジェスチャーのショートカットおよびジェスチャーの完全バージョンの双方が、予め定められた時間期間以内に認識された場合（ジェスチャーおよび／またはユーザーにとって特定であってもよい時間期間）、一方のみが入力として用いられ、他方は無視される。
【００９８】
[0116]  一実施形態では、ジェスチャーのショートカットに対応する出力は、ユーザーがそのジェスチャーをトリガーしたことの高い可能性に対応し、ジェスチャーの完全バージョンに対応する出力は、ユーザーがそのジェスチャーをトリガーしたことの高い可能性に対応し、アプリケーションは、ジェスチャーに詳細を追加するために、ジェスチャーの完全バージョンに対応する出力を使う。ジェスチャーのショートカットが、アプリケーションによって入力として認識され処理された場合（対応するアニメーションまたは結果がディスプレイ・デバイス上に表示されるというような場合）、ジェスチャーのショートカットが処理されている間に、ジェスチャーの完全バージョンが認識され、この処理において、ジェスチャーの完全バージョンからの出力を使うことができる。
【００９９】
[0117]  例えば、「ジャンプ」ジェスチャーの完全バージョンは、ジャンプするユーザーを含むことができる。この「ジャンプ」ジェスチャーのショートカットは、ジェスチャーの完全バージョンの内初期のモーション、屈んで飛び上がるモーションを含み、ジェスチャーが行われた確実度レベルを出力することができる。ジャンプ・ジェスチャーのショートカットを観察した結果、アプリケーションは、ユーザーのアバターがジャンプしている様子を表示することによって、これを処理することができる。これが行われている間に、ユーザーが引き続き飛び上がって両足が地面から離れることによって、ジャンプ・ジェスチャーの完全バージョンを完成した場合、アプリケーションは、ユーザーが物理的にジャンプした高さを使って、対応する高さまでジャンプするアバターを表示し、現在処理されているジャンプのショートカットに詳細を追加することができる。ユーザーがジャンプのジェスチャーのショートカットのみを行った場合、アプリケーションはアバターにデフォルトの高さだけジャンプさせればよい。
【０１００】
[0118]  一実施形態では、ユーザーがジェスチャーのショートカットを行った場合、ユーザーがそのジェスチャーの完全バージョンを行った場合よりも、アプリケーション内部における少ない成果に対応してもよい。例えば、獲得したポイントによってユーザーの演技を格付けするスケートボード・ゲームでは、ユーザーがスケートボード・トリック・ジェスチャーのショートカットを使って、所与のトリックを行った場合、スケートボード・トリック・ジェスチャーの完全バージョンを使ってその所与のトリックを行ったときよりも低いポイントを受けるようにすることもできる。
結論
[0119]  以上、種々の図に示したような、好ましい態様に関連付けて、本開示について説明したが、他の同様の態様も用いることができること、あるいは本開示から逸脱することなく、その同じ機能を実行するために、記載した態様に変更や追加を行ってもよいことは言うまでもない。したがって、本開示をいずれの１つの態様にも限定してはならず、逆に、添付した特許請求の範囲にしたがって、その広さおよび範囲を解釈してしかるべきである。例えば、本明細書において記載した種々の手順は、ハードウェアまたはソフトウェア、あるいは双方の組み合わせで実現することができる。つまり、開示した実施形態の方法および装置、あるいはその中のある種の態様または部分は、フロッピー・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、または他の機械読み取り可能記憶媒体の内任意のものというような、有形媒体に具体化されるプログラム・コード（即ち、命令）の形態を取ることができる。プログラム・コードがコンピューターのようなマシンにロードされ実行されると、このマシンが、開示した実施形態を実施するように構成された装置となる。本明細書において明示的に説明した特定の実施態様に加えて、ここに開示した明細書を検討することによって、他の態様や実施態様も明白となろう。本明細書および図示した実施態様は、一例のみとして見なされることを意図している。
【図１Ａ】
0005775514.tif 000002
【図１Ｂ】
0005775514.tif 000003
【図２】
0005775514.tif 000004
【図３Ａ】
0005775514.tif 000005
【図３Ｂ】
0005775514.tif 000006
【図４Ａ】
0005775514.tif 000007
【図４Ｂ】
0005775514.tif 000008
【図５Ａ】
0005775514.tif 000009
【図５Ｂ】
0005775514.tif 000010
【図６Ａ】
0005775514.tif 000011
【図６Ｂ】
0005775514.tif 000012
【図６Ｃ】
0005775514.tif 000013
【図６Ｄ】
0005775514.tif 000014
【図６Ｅ】
0005775514.tif 000015
【図７Ａ】
0005775514.tif 000016
【図７Ｂ】
0005775514.tif 000017
【図７Ｃ】
0005775514.tif 000018
【図７Ｄ】
0005775514.tif 000019
【図７Ｅ】
0005775514.tif 000020
【図８Ａ】
0005775514.tif 000021
【図８Ｂ】
0005775514.tif 000022
【図８Ｃ】
0005775514.tif 000023
【図９】
0005775514.tif 000024