キャラクターにアニメーションまたはモーションを加えるシステムおよび方法
ユーザーの生のモーションおよび予め記録されたモーションを使って、画面上のオブジェクト、アバター、画面上のキャラクター等のような仮想キャラクターを動画化することができる。例えば、ユーザーの生のモーションを取り込むことができ、予め記録されたアーティストが制作したモーション、予め記録されたユーザーのモーション、および/またはプログラム制御される変換というような予め記録されたモーションを受け取ることができる。次いで、生のモーションを仮想キャラクターの第1部分に適用することができ、予め記録されたモーションを仮想キャラクターの第2部分に適用することができ、こうして、生のモーションおよび予め記録されたモーションの組み合わせを使って、仮想キャラクターを動画化することができる。
【発明の詳細な説明】
【従来技術】
【0001】
[0001] コンピューター・ゲーム、マルチメディア・アプリケーション等のような多くの計算アプリケーションは、アバターまたはキャラクターを含み、これらは、典型的なモーション・キャプチャー技法を使って動画化される。例えば、ゴルフ・ゲームを開発するとき、モーション・キャプチャー機器を有するスタジオにプロのゴルファーを連れてくることができる。モーション・キャプチャー機器は、例えば、スタジオ内の特定ポイントに向けられている複数のカメラを含む。次いで、プロのゴルファーに、複数のポイント・インディケーターを有するモーション・キャプチャー・スーツを着用させる。モーション・キャプチャー・スーツは、カメラが、例えば、プロのゴルファーのゴルフをするモーションを取り込むことができるように構成され、カメラによって追跡させることができる。次いで、これらのモーションを、ゴルフ・ゲームの開発中に、アバターまたはキャラクターに適用することができる。ゴルフ・ゲームが完成したとき、アバターまたはキャラクターは、ゴルフ・ゲームの実行中にプロのゴルファーのモーションで動画化することができる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
生憎、典型的なモーション・キャプチャー技法は、費用がかかり、特定のアプリケーションの開発に結びつけられており、実際のプレーヤーまたはアプリケーションのユーザーと関連付けられたモーションを含まない。
【課題を解決するための手段】
【0003】
[0002] 本明細書において開示するのは、アニメーションを混合する(blend)するシステムおよび方法である。例えば、一実施形態では、ユーザーの生のモーションを取り込み、アーティストが生成した予め記録されたモーションというような予め記録されたモーション、予め記録されたユーザーのモーション、および/またはプログラムで制御された変換を受けることができる。次いで、生のモーションを仮想キャラクターの第1部分に適用することができ、予め記録されたモーションをこの仮想キャラクターの第2部分に適用することができ、仮想キャラクターが生のモーションおよび予め記録されたモーションの組み合わせで動画化されるようにすることができる。一実施形態によれば、生のモーションおよび/または予め記録されたモーションは、ユーザーからのジェスチャーを受けたことに応答して、仮想キャラクターに適用することができ、ジェスチャーにはアニメーション・コマンドを関連付けることができる。加えて、仮想キャラクターは、予め記録されたユーザーのモーション、および予め記録されたアーティストが生成したモーションというような、予め記録されたモーションの組み合わせで、例えば、予め記録されたユーザーのモーションを仮想キャラクターの第1部分に適用し、予め記録されたアーティストが生成したモーションを仮想キャラクターの第2部分に適用することによって、動画化されていてもよい。
【0004】
[0003] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使われることを意図するのでもない。更に、特許請求する主題は、本開示のいずれの部分に記されている実施形態のうちいずれかの欠点を解決するものにも、また全ての欠点を解決するものにも限定されないものとする。
【図面の簡単な説明】
【0005】
【図1A】図1Aは、ターゲット認識、分析、および追跡システムの一実施形態例を、ゲームをプレーするユーザーと共に示す。
【図1B】図1Bは、ターゲット認識、分析、および追跡システムの一実施形態例を、ゲームをプレーするユーザーと共に示す。
【図2】図2は、ターゲット認識、分析、および追跡システムにおいて使うことができるキャプチャー・デバイスの一実施形態例を示す。
【図3】図3は、ターゲット認識、分析、および追跡システムにおいて1つ以上のジェスチャーを解釈するため、および/またはターゲット認識、分析、および追跡システムによって表示された仮想キャラクターを動画化するために使うことができる計算環境の一実施形態例を示す。
【図4】図4は、ターゲット認識、分析、および追跡システムにおいて1つ以上のジェスチャーを解釈するため、および/またはターゲット認識、分析、および追跡システムによって表示された仮想キャラクターを動画化するために使うことができる計算環境の他の実施形態例を示す。
【図5】図5は、ユーザーのモーション・キャプチャー・ファイルを生成し適用する方法例の流れ図を示す。
【図6】図6は、ユーザーと関連付けられたヒトのターゲットを含む画像の一実施形態例を示す。
【図7】図7は、ユーザーと関連付けられたヒトのターゲットに生成することができるモデルの一実施形態例を示す。
【図8A】図8Aは、モーション・キャプチャー・ファイル内に種々の時点において取り込むことができるユーザーと関連付けられたモデルの一実施形態例を示す。
【図8B】図8Bは、モーション・キャプチャー・ファイル内に種々の時点において取り込むことができるユーザーと関連付けられたモデルの一実施形態例を示す。
【図9A】図9Aは、種々の時点におけるモデルに基づいて動画化することができる仮想キャラクターのモデルの一実施形態例を示す。
【図9B】図9Bは、種々の時点におけるモデルに基づいて動画化することができる仮想キャラクターのモデルの一実施形態例を示す。
【図10A】図10Aは、動画化することができる仮想キャラクターの一実施形態例を示す。
【図10B】図10Bは、動画化することができる仮想キャラクターの一実施形態例を示す。
【図11A】図11Aは、動画化することができる仮想キャラクターの他の一実施形態例を示す。
【図11B】図11Bは、動画化することができる仮想キャラクターの他の一実施形態例を示す。
【図11C】図11Cは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図11D】図11Dは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図11E】図11Eは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図11F】図11Fは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図12A】図12Aは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図12B】図12Bは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【発明を実施するための形態】
【0006】
[0016] 本明細書において説明するように、ユーザーは、ゲーム・コンソール、コンピューター等のような計算環境において実行するアプリケーションを制御することができ、および/またはアバター、画面上のキャラクター、画面上のオブジェクト等というような仮想キャラクターを、1つ以上のジェスチャーおよび/または動きを行うことによって動画化することができる。一実施形態によれば、ジェスチャーおよび/または動きを、例えば、キャプチャー・デバイスによって受けることができる。例えば、キャプチャー・デバイスは、シーンの深度画像を取り込むことができる。一実施形態では、キャプチャー・デバイスは、そのシーンにおける1つ以上のターゲットまたはオブジェクトが、ユーザーのようなヒトのターゲットに対応するか否か判断することができる。次に、ヒトのターゲットに対応する各ターゲットまたはオブジェクトを走査して、スケルトン・モデル、メッシュ・ヒト・モデル等のような、それと関連付けられたモデルを生成することができる。一実施形態例では、このモデルを追跡することができ、追跡されたモデルのモーション・キャプチャー・ファイルを生成することができ、ユーザーのモデルと関連付けられた仮想キャラクターまたはオブジェクトをレンダリングし、ユーザーのモデルと関連付けられた生のモーションおよび/または予め記録されているモーションによって、仮想キャラクターまたはオブジェクトを動画化することができ、および/または計算環境において実行中のアプリケーションにおいて、例えば、追跡したモデルに基づいて、どの制御を行うべきか決定することができる。
【0007】
[0017] 図1Aおよび図1Bは、ターゲット認識、分析、および追跡システム10の構成の一実施形態例を、ゲームをプレーするユーザー18と共に示す。一実施形態例では、目標認識、分析、および追跡システム10は、ユーザー18のようなヒトのターゲットを認識し、分析し、および/または追跡するために使うことができる。
【0008】
[0018] 図1Aに示すように、ターゲット認識、分析、および追跡システム10は、計算環境12を含む。計算環境12は、コンピューター、ゲーミング・システムまたはコンソール等であればよい。一実施形態例によれば、ゲーミング・アプリケーション、ゲーミング以外のアプリケーション等のようなアプリケーションを実行するために計算環境12を使うことができるように、計算環境12はハードウェア・コンポーネントおよび/またはソフトウェア・コンポーネントを含むことができる。一実施形態では、計算環境12は、標準化されたプロセッサー、特殊化されたプロセッサー、マイクロプロセッサー等のようなプロセッサーを含むことができ、このプロセッサーは、例えば、ユーザーの生のモーションを取り込み、予め記録されているモーションを受け取り、生のモーションを仮想オブジェクトの第1部分に適用し、予め記録されているモーションを仮想オブジェクトの第2部分に適用する命令、あるいは任意の他の適した命令を含む、命令を実行することができる。これについては、以下で更に詳しく説明する。
【0009】
[0019] 図1Aに示すように、ターゲット認識、分析、および追跡システム10は、更に、キャプチャー・デバイス20を含むことができる。キャプチャー・デバイス20は、例えば、ユーザー18のような、一人以上のユーザーを視覚的に監視するために使うことができるカメラとすればよく、一人以上のユーザーによって行われるジェスチャーおよび/またはモーションを取り込み、分析し、そして追跡して、アプリケーションにおいて1つ以上の制御または動作を実行する、および/またはアバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターを動画化することができる。これについては、以下で更に詳しく説明する。
【0010】
[0020] 一実施形態によれば、ターゲット認識、分析、および追跡システム10は、テレビジョン、モニター、高品位テレビジョン(HDTV)等のような、ゲームまたはアプリケーションの映像(visual)および/または音声(audio)をユーザー18のようなユーザーに与えることができるオーディオビジュアル・デバイス16に接続することができる。例えば、計算環境12は、グラフィクスカードのようなビデオ・アダプターおよび/またはサウンド・カードのようなオーディオ・アダプターを含むことができる。これらは、ゲーム・アプリケーション、ゲーム以外のアプリケーション等と関連のあるオーディオビジュアル信号を供給することができる。オーディオビジュアル・デバイス16は、計算環境12からオーディビジュアル信号を受け取ることができ、次いで、これらのオーディオビジュアル信号と関連付けられたゲームまたはアプリケーションの映像および/または音声をユーザー18に出力することができる。一実施形態によれば、オーディオビジュアル・デバイス16は、例えば、S−Videoケーブル、同軸ケーブル、HDMIケーブル、DVIケーブル、VGAケーブル等によって、計算環境12に接続することができる。
【0011】
[0021] 図1Aおよび図1Bに示すように、ターゲット認識、分析、および追跡システム10は、ユーザー18のようなヒトのターゲットを認識、分析、および/または追跡するために使うことができる。例えば、ユーザー18を、キャプチャー・デバイス20を使って追跡し、ユーザー18のジェスチャーおよび/またはモーションを取り込んで、アバター、画面上のキャラクター、画面上のオブジェクト等のような仮想キャラクターを動画化することができ、および/または計算環境12によって実行されているアプリケーションに作用するために使うことができる制御として解釈することができる。このように、一実施形態によれば、ユーザー18は彼または彼女の体を動かして、アプリケーションを制御すること、および/または仮想オブジェクトを動画化することができる。
【0012】
[0022] 図1Aおよび図1Bに示すように、一実施形態例では、計算環境12において実行するアプリケーションは、ユーザー18がプレーしているかもしれないボクシング・ゲームであってもよい。例えば、コンピューター環境12は、オーディオビジュアル・デバイス16を使って、ボクシングの相手38の視覚的表現をユーザー18に与えることができる。また、計算環境12は、オーディオビジュアル・デバイス16を使って、ユーザー18が彼または彼女の動きで制御することができるプレーヤー・アバター40の視覚表現も与えることができる。例えば、図1Bに示すように、ユーザー18はプレーヤー・アバター40にゲーム空間においてパンチを打たせるために、実空間おいてパンチを打つことができる。このように、一実施形態例によれば、計算環境12、ならびにターゲット認識、分析、および追跡システム10のキャプチャー・デバイス20は、実空間におけるユーザー18のパンチを認識および分析するために使うことができ、このパンチをゲーム空間におけるプレーヤー・アバター40のゲーム制御として解釈することができ、および/またはパンチのモーションを使って、ゲーム空間におけるプレーヤー・アバター40を動画化することができる。
【0013】
[0023] ユーザー18による他の動きも、軽く叩く、行ったり来たりする、あちこち動き回る、防御する、ジャブする、または種々の異なる力のパンチを出すように制御するというように、プレーヤー・アバターを動画化するために用いられる他の制御または動作として解釈することができる。更に、動きの中には、プレーヤー・アバター40を制御する以外の動作に対応することもできる制御として解釈してもよい場合もある。例えば、プレーヤーは、動きを使って、ゲームを終了する、一時停止する、またはセーブする、レベルを選択する、高スコアを見る、友人と通信する等を行うこともできる。加えて、ユーザー18のモーションの最大範囲が利用可能であり、アプリケーションと相互作用するために任意の適した方法で使って、分析することができる。
【0014】
[0024] 実施形態例では、ユーザー18のようなヒトのターゲットがオブジェクトを有することもできる。このような実施形態では、電子ゲームのユーザーがそのオブジェクトを保持しているとよく、ゲームのパラメータを調節および/または制御するために、プレーヤーおよびオブジェクトのモーションを使うことができるようにするとよい。例えば、ラケットを保持しているプレーヤーのモーションを追跡し、電子スポーツ・ゲームにおける画面上のラケットを制御するために利用することができる。他の実施形態例では、オブジェクトを保持しているプレーヤーのモーションを追跡し、電子戦争ゲームにおける画面上の兵器を制御するために利用することができる。
【0015】
[0025] 他の実施形態例では、ターゲット認識、分析、および追跡システム10は、更に、ターゲットの動きを、ゲームの範囲の外側にあるオペレーティング・システムおよび/またはアプリケーション制御として解釈するために使うこともできる。例えば、オペレーティング・システムおよび/またはアプリケーションの事実上あらゆる制御可能な態様を、ユーザー18のようなターゲットの動きによって制御することができる。
【0016】
[0026] 図2は、ターゲット認識、分析、および追跡システム10において使うことができるキャプチャー・デバイス20の一実施形態例を示す。一実施形態例によれば、キャプチャー・デバイス20は、例えば、飛行時間、構造化光、立体画像等を含む任意の適した技法によって、深度値を含むことができる深度画像を含む深度情報と共にビデオを取り込むように構成することができる。一実施形態によれば、キャプチャー・デバイス20は、深度情報を「Zレイヤー」、または深度カメラからその視線に沿って延びるZ軸に対して垂直となることができるレイヤーに編成することができる。
【0017】
[0027] 図2に示すように、キャプチャー・デバイス20は、画像カメラ・コンポーネント22を含むことができる。一実施形態例によれば、画像カメラ・コンポーネント22は、シーンの深度画像を取り込むことができる深度カメラとするとよい。深度カメラは、取り込まれたシーンの二次元(2D)画素エリアを含むことができ、この2D画素エリアにおける各画素は、カメラから取り込まれたシーンにおけるオブジェクトの、例えば、センチメートル、ミリメートル等の単位の長さまたは距離というような、深度値を表すことができる。
【0018】
[0028] 図2に示すように、一実施形態例によれば、画像カメラ・コンポーネント22は、シーンの深度画像を取り込むために使うことができるIR発光コンポーネント24、三次元(3D)カメラ26、およびRGBカメラ28を含むことができる。例えば、飛行時間分析では、キャプチャー・デバイス20のIR発光コンポーネント24は、シーンに向けて赤外線光を放出することができ、次いでセンサ(図示せず)を使って、そのシーンの中にある1つ以上のターゲットおよびオブジェクトの表面から散乱される光を、例えば、3Dカメラ26および/またはRGBカメラ28を使って検出することができる。実施形態の中には、パルス状赤外線光を使って、発信光パルスと対応する入射光パルスとの間の時間を測定し、キャプチャー・デバイス20からシーン内にあるターゲットまたはオブジェクト上における特定の場所までの物理的距離を判定するために使うことができるようにするとよい場合がある。加えて、他の実施形態例では、発信光波の位相を着信光波の位相と比較して、位相ずれを判定するとよい場合もある。次いで、位相ずれを使って、キャプチャー・デバイスからターゲットまたはオブジェクト上の特定の場所までの物理的距離を判定することができる。
【0019】
[0029] 他の実施形態例によれば、例えば、散乱光パルス撮像を含む種々の技法によって、経時的な光の反射ビームの強度を分析することによって、飛行時間分析を使って、キャプチャー・デバイス20からターゲットまたはオブジェクト上の特定の場所までの物理的距離を間接的に判定することができる。
【0020】
[0030] 他の実施形態例によれば、キャプチャー・デバイス20は、構造化光を使って深度情報を取り込むことができる。このような分析では、パターン光(即ち、格子パターン、縞パターンのような既知のパターンとして表示される光)を、例えば、IR発光コンポーネント24によってシーンに向けて投射する。シーンにおいて1つ以上のターゲットまたはオブジェクトの表面に衝突したときに、それに応答して、パターンが変形する可能性がある。このようなパターンの変形を、例えば、3Dカメラ26および/またはRGBカメラ28によって取り込むことができ、次いで分析して、キャプチャー・デバイスからターゲットまたはオブジェクト上における特定の場所までの物理的距離を判定することができる。
【0021】
[0031] 他の実施形態によれば、キャプチャー・デバイス20は、2つ以上の物理的に分離されたカメラを含むことができ、これらが異なる角度からのシーンを捕らえて、視覚的な立体像を得て、これを解明することによって深度情報を発生することができる。
【0022】
[0032] キャプチャー・デバイス20は、更に、マイクロフォン30を含むことができる。マイクロフォン30は、音響を受信し電気信号に変換するトランスデューサまたはセンサを含むことができる。一実施形態によれば、マイクロフォン30を使うと、ターゲット認識、分析、および追跡システム10においてキャプチャー・デバイス20と計算環境12との間におけるフィードバックを低減することができる。加えて、マイクロフォン30を使うと、ユーザーによって供給することもできるオーディオ信号を受信し、計算環境12において実行することができるゲーム・アプリケーション、ゲーム以外のアプリケーション等のようなアプリケーションを制御することができる。
【0023】
[0033] 一実施形態例では、キャプチャー・デバイス20は、更に、画像カメラ・コンポーネント22と動作的に通信することができるプロセッサー32を含むことができる。プロセッサー32は、標準化されたプロセッサー、特殊化されたプロセッサー、マイクロプロセッサー等を含むことができ、例えば、ユーザーの生のモーションを取り込む命令、予め記録されているモーションを受け取る命令、生のモーションを仮想オブジェクトの第1部分に適用し、予め記録されているモーションを仮想オブジェクトの第2部分に適用する命令、あるいは任意の他の適した命令を実行することができる。これについては、以下で更に詳しく説明する。
【0024】
[0034] 更に、キャプチャー・デバイス20は、メモリー・コンポーネント34を含むことができる。メモリー・コンポーネント34は、プロセッサー32によって実行することができる命令、3DカメラまたはRGBカメラによって取り込まれた画像またはフレーム、あるいは任意の他の適した情報、画像等を格納することができる。一実施形態例によれば、メモリー・コンポーネント34は、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)、キャッシュ、フラッシュ・メモリー、ハード・ディスク、または任意の他の適した記憶コンポーネントを含むことができる。図2に示すように、一実施形態では、メモリー・コンポーネント34は、画像キャプチャー・コンポーネント22およびプロセッサー32と通信する別のコンポーネントとすることができる。他の実施形態によれば、メモリー・コンポーネント34をプロセッサー32および/または画像キャプチャー・コンポーネント22に統合してもよい。
【0025】
[0035] 図2に示すように、キャプチャー・デバイス20は、通信リンク36を通して、計算環境12と通信状態に置くことができる。通信リンク36は、例えば、USB接続、Firewire接続、イーサネット・ケーブル接続等を含む有線接続、および/またはワイヤレス802.11b、g、a、またはn接続のようなワイヤレス接続とすることができる。一実施形態によれば、計算環境12は、クロックをキャプチャー・デバイス20に供給することができ、通信リンク36を通して、例えば、いつシーンを取り込むか判断するために、このクロックを使うことができる。
【0026】
[0036] 加えて、キャプチャー・デバイス20は、例えば、3Dカメラ26および/またはRGBカメラ28によって取り込まれた深度情報および画像、および/またはキャプチャー・デバイス20によって生成することができるスケルトン・モデルを、計算環境12に通信リンク36を通して供給することができる。次いで、計算環境12は、このモデル、深度情報、および取り込まれた画像を使って、例えば、ゲームまたはワード・プロセッサーのようなアプリケーションを制御すること、および/または画面上のキャラクター、アバター、画面上のオブジェクト等のような仮想キャラクターを動画化することができる。例えば、図2に示すように、計算環境12は、ジェスチャー・ライブラリー190を含むことができる。ジェスチャー・ライブラリー190は、ジェスチャー・フィルターの集合体を含むことができ、各集合体は、(ユーザーが動くに連れて)スケルトン・モデルによって実行することができるジェスチャーに関する情報を含む。カメラ26、28およびキャプチャー・デバイス20によって取り込まれたスケルトン・モデルの形態のデーター、およびそれと関連付けられた動きを、ジェスチャー・ライブラリー190の中にあるジェスチャー・フィルターと比較して、いつユーザー(スケルトン・モデルによって表現される)が1つ以上のジェスチャーを行ったのか特定することができる。これらのジェスチャーは、アプリケーションの種々の制御と関連付けることができる。つまり、計算環境12は、ジェスチャー・ライブラリー190を使って、スケルトン・モデルの動きを解釈し、その動きに基づいてアプリケーションを制御することができる。
【0027】
[0037] 図3は、ターゲット認識、分析、および追跡システムにおいて1つ以上のジェスチャーを解釈するため、および/またはターゲット認識、分析、および追跡システムによって表示された、アバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターを動画化するために使うことができる計算環境の一実施形態例を示す。図1Aから図2に関して先に説明した計算環境12のような計算環境は、ゲーミング・コンソールのような、マルチメディア・コンソール100とするとよい。図3に示すように、マルチメディア・コンソール100は、レベル1キャッシュ102、レベル2キャッシュ104、およびフラッシュROM(リード・オンリー・メモリー)106を有する中央処理ユニット(CPU)101を有する。レベル1キャッシュ102およびレベル2キャッシュ104は、一時的にデーターを格納し、こうしてメモリー・アクセス・サイクルの回数を減らすことによって、処理速度およびスループットを向上させる。CPU101は、1つよりも多いコア、つまり、追加のレベル1およびレベル2キャッシュ102および104を有して設けることもできる。フラッシュROM106は、実行可能コードを格納することができる。実行可能コードは、マルチメディア・コンソール100の電源をオンにしたときに、ブート・プロセスの初期段階中にロードされる。
【0028】
[0038] グラフィクス処理ユニット(GPU)108およびビデオ・エンコーダー/ビデオ・コデック(コーダー/デコーダー)114が、高速および高分解能グラフィクス処理のためにビデオ処理パイプラインを形成する。データーは、バスを通して、グラフィクス処理ユニット108からビデオ・エンコーダー/ビデオ・コデック114に伝達される。ビデオ処理パイプラインは、テレビジョンまたは他のディスプレイに送信するために、データーをA/V(オーディオ/ビデオ)ポート140に出力する。メモリー・コントローラー110がGPU108に接続されており、限定ではなく、RAM(ランダム・アクセス・メモリー)のような、種々のタイプのメモリー112にプロセッサーがアクセスし易くしている。
【0029】
[0039] マルチメディア・コンソール100は、I/Oコントローラー120、システム管理コントローラー122、オーディオ処理ユニット123、ネットワーク・インターフェース・コントローラー124、第1USBホスト・コントローラー126、第2USBコントローラー128、およびフロント・パネルI/Oサブアセンブリ130を含む。好ましくは、これらをモジュール118に実装する。USBコントローラー126および128は、周辺コントローラー142(1)〜142(2)、ワイヤレス・アダプター148、および外部メモリー・デバイス146(例えば、フラッシュ・メモリー、外部CD/DVD ROMドライブ、リムーバブル媒体等)のためのホストとしての役割を果たす。ネットワーク・インターフェース124および/またはワイヤレス・アダプター148は、ネットワーク(例えば、インターネット、ホーム・ネットワーク等)へのアクセスを与え、イーサネット・カード、モデム、Bluetoothモジュール、ケーブル・モデム等を含む広範囲の種々の有線またはワイヤレス・アダプター・コンポーネントのうち任意のものとすることができる。
【0030】
[0040] システム・メモリー143は、ブート・プロセスの間にロードされるアプリケーション・データーを格納するために設けられている。メディア・ドライブ144が設けられており、DVD/CDドライブ、ハード・ドライブ、またはその他のリムーバブル・メディア・ドライブ等を備えることができる。メディア・ドライブ144は、マルチメディア・コンソール100の内部にあっても外部にあってもよい。アプリエーション・データーは、実行、再生等のためにマルチメディア・コンソール100によってメディア・ドライブ144を通してアクセスすることができる。メディア・ドライブ144は、シリアルATAバスまたはその他の高速接続(例えば、IEEE1394)のようなバスを通して、I/Oコントローラー120に接続されている。
【0031】
[0041] システム管理コントローラー122は、メディア・コンソール100の利用可能性を確保することに関する種々のサービス機能を提供する。オーディオ処理ユニット123およびオーディオ・コデック132は、高忠実度およびステレオ処理を行う、対応のオーディオ処理パイプラインを形成する。オーディオ・データーは、通信リンクを通して、オーディオ処理ユニット123とオーディオ・コデック132との間で伝達される。オーディオ処理パイプラインは、外部オーディオ・プレーヤーまたはオーディオ処理能力を有するデバイスによる再生のために、データーをA/Vポート140に出力する。
【0032】
[0042] フロント・パネルI/Oサブアセンブリ130は、電力ボタン150およびイジェクト・ボタン152の機能をサポートするだけでなく、マルチメディア・コンソール100の外面上に露出する任意のLED(発光ダイオード)またはその他のインディケーターもサポートする。システム電源モジュール136が、マルチメディア・コンソール100のコンポーネントに電力を供給する。ファン138は、マルチメディア・コンソール100内部にある回路を冷却する。
【0033】
[0043] CPU101、GPU108、メモリー・コントローラー110、およびマルチメディア・コンソール100内部にある種々のその他のコンポーネントは、1系統以上のバスを通して相互接続されている。これらのバスには、シリアルおよびパラレル・バス、メモリー・バス、周辺バス、および種々のバス・アーキテクチャーのうち任意のものを使うプロセッサー・バスまたはローカル・バスが含まれる。一例として、このようなアーキテクチャーは、ペリフェラル・コンポーネント相互接続(PCI)バス、PCI−Expressバス等を含むことができる。
【0034】
[0044] マルチメディア・コンソール100の電源をオンにすると、システム・メモリー143からメモリー112および/またはキャッシュ102、104にアプリケーション・データーをロードし、CPU101において実行することができる。アプリケーションは、グラフィカル・ユーザー・インターフェースを提示することができる。グラフィカル・ユーザー・インターフェースは、マルチメディア・コンソール100において利用可能な異なるタイプのメディアにナビゲートするときに、一貫性のあるユーザー体験を提供する。動作において、アプリケーションおよび/またはメディア・ドライブ144に含まれている他のメディアをメディア・ドライブ144から起動または再生して、マルチメディア・コンソール100に追加の機能を設けることもできる。
【0035】
[0045] マルチメディア・コンソール100は、単にシステムをテレビジョンまたはその他のディスプレイに接続することによって、スタンドアロン・システムとして動作させることができる。この単独モードでは、マルチメディア・コンソール100は、一人以上のユーザーがシステムと相互作用を行い、ムービーを見ること、または音楽を聞くことを可能にする。しかしながら、ネットワーク・インターフェース124またはワイヤレス・アダプター148によって利用可能となるブロードバンド接続機能を統合することにより、マルチメディア・コンソール100を更に大きなネットワーク・コミュニティにおける一員(participant)として動作させることもできる。
【0036】
[0046] マルチメディア・コンソール100の電源をオンにすると、マルチメディア・コンソールのオペレーティング・システムによって、設定されている量のハードウェア・リソースがシステムの使用のために確保される。これらのリソースは、メモリー(例えば、16MB)、CPUおよびGPUサイクル(例えば、5%)、ネットワーキング帯域幅(例えば、8kbs)等の確保を含むことができる。これらのリソースは、システムのブート時に確保されるので、確保されたリソースは、アプリケーションの視点からは存在しない。
【0037】
[0047] 特に、メモリーの確保は、起動カーネル、コンカレント・システム・アプリケーション、およびドライバーを含めるのに十分大きいことが好ましい。サーブされたCPUの使用がそのシステム・アプリケーションによって用いられない場合、アイドル状態にあるスレッドが未使用サイクルのうち任意のものを消費するように、CPUの確保を一定レベルに維持することが好ましい。
【0038】
[0048] GPUの確保に関して、GPU割り込みを使うことによって、システム・アプリケーション(例えば、ポップアップ)によって発生される軽量メッセージを表示して、ポップアップをオーバーレイにレンダリングするコードをスケジューリングする。オーバーレイに用いられるメモリー量は、オーバーレイのエリア・サイズに依存し、オーバーレイは画面の解像度と共にスケーリングする(scale)ことが好ましい。コンカレント・システム・アプリケーションによってフル・ユーザー・インターフェースが用いられる場合、アプリケーションの解像度とは独立した解像度を使うことが好ましい。周波数を変更しTVの同期を取り直す必要性をなくすように、スケーラーを使ってこの解像度を設定するとよい。
【0039】
[0049] マルチメディア・コンソール100がブートして、システム・リソースを確保した後、コンカレント・システム・アプリケーションが実行してシステム機能を提供する。システム機能は、前述の確保したシステム・リソースの内部で実行する1組のシステム・アプリケーションの中にカプセル化されている。オペレーティング・システム・カーネルは、システム・アプリケーション・スレッドと、ゲーミング・アプリケーション・スレッドとの間でスレッドを識別する。一貫したシステム・リソース・ビューをアプリケーションに提供するために、システム・アプリケーションは、所定の時点および間隔でCPU101において実行するようにスケジューリングされていることが好ましい。このスケジューリングは、コンソールにおいて実行しているゲーミング・アプリケーションに対するキャッシュの分裂(disruption)を最少に抑えるためにある。
【0040】
[0050] コンカレント・システム・アプリケーションがオーディオを必要とする場合、時間に敏感であるため、オーディオ処理を非同期にゲーミング・アプリケーションにスケジューリングする。マルチメディア・コンソール・アプリケーション・マネージャー(以下で説明する)は、システム・アプリケーションがアクティブのとき、ゲーミング・アプリケーションのオーディオ・レベル(例えば、無音化、減衰)を制御する。
【0041】
[0051] 入力デバイス(例えば、コントローラー142(1)および142(2))は、ゲーミング・アプリケーションおよびシステム・アプリケーションによって共有される。入力デバイスは、確保されたリソースではないが、システム・アプリケーションとマルチメディア・アプリケーションとの間で切り換えられて、各々がそのデバイスのフォーカス(a focus of the device)を有するようにする。アプリケーション・マネージャは、好ましくは、マルチメディア・アプリケーションの知識を用いずに入力ストリームの切換を制御し、ドライバーはフォーカス・スイッチ(focus switches)に関する状態情報を維持する。カメラ26、28およびキャプチャー・デバイス20は、コンソール100のための追加の入力デバイスを定めることができる。
【0042】
[0052] 図4は、ターゲット認識、分析、および追跡システムにおいて1つ以上のジェスチャーを解釈するため、および/またはターゲット認識、分析、および追跡システムによって表示された、アバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターを動画化するために用いられる、図1Aから図2に示した計算環境12の他の実施形態例を示す。計算システム環境220は、適した計算環境の一例に過ぎず、本明細書において開示される主題の使用範囲または機能に関して、いかなる限定をも示唆する意図はない。また、計算環境220が、本明細書において例示されるいずれの1つのコンポーネントまたはコンポーネントの組み合わせに関して何らかの依存性または要件を有するように解釈してはならない。実施形態によっては、図示する種々の計算エレメントが、本開示の特定の態様をインスタンス化するように構成されている回路を含むこともあり得る。例えば、本開示において用いられる回路という用語は、ファームウェアまたはスイッチによって機能(1つまたは複数)を実行するように構成されている特殊ハードウェア・コンポーネントを含むことができる。別の実施形態例では、回路という用語は、機能(1つまたは複数)を実行するために動作可能なロジックを具現化するソフトウェア命令によって構成される汎用処理ユニット、メモリー等を含むことができる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、実装者(implementer)は、ロジックを具現化するソース・コードを書くことができ、ソース・コードを機械読み取り可能コードにコンパイルすることができ、この機械読み取り可能コードを汎用処理ユニットによって処理することができる。技術的現状では、ハードウェア、ソフトウェア、またはハードウェア/ソフトウェアの組み合わせの間には殆ど差がないというところまで発展していることを当業者は認めることができるので、特定の機能を実行するためにハードウェアまたはソフトウェアのどちらを選択するかということは、実装者に委ねられた設計選択事項である。更に具体的には、ソフトウェア・プロセスを等価のハードウェア構造に変換することができ、更にハードウェア構造自体を等価のソフトウェア・プロセスに変換することができることを、当業者は認めることができる。つまり、ハードウェアの実施態様およびソフトウェアの実施態様のどちらを選択するかということは、実装者に委ねられた設計選択事項の1つである。
【0043】
[0053] 図4において、計算環境220は、コンピューター241を含む。コンピューター241は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター241がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。システム・メモリー222は、リード・オンリー・メモリー(ROM)223およびランダム・アクセス・メモリー(RAM)260のような揮発性および/または不揮発性メモリーの形態で、コンピューター記憶媒体を含む。基本入出力システム224(BIOS)は、起動中のように、コンピューター241内のエレメント間におけるデーター転送を補助する基本的なルーチンを含み、通例ROM223内に格納されている。RAM260は、通例、処理ユニット259が直ちにアクセス可能であるデーターおよび/またはプログラム・モジュール、または現在これによって処理されているデーターおよび/またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図4は、オペレーティング・システム225、アプリケーション・プログラム226、その他のプログラム・モジュール227、およびプログラム・データー228を示す。
【0044】
[0054] また、コンピューター241は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例にすぎないが、図4は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ238、リムーバブル不揮発性磁気ディスク254からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ239、ならびにCD ROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク253からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ240を示す。動作環境の一例において使用可能なその他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ238は、通例、インターフェース234のような非リムーバブル・メモリー・インターフェースを介してシステム・バス221に接続され、磁気ディスク・ドライブ239および光ディスク・ドライブ240は、通例、インターフェース235のようなリムーバブル・メモリー・インターフェースによって、システム・バス221に接続する。
【0045】
[0055] 先に論じ図4に示すドライブおよびそれらに関連するコンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューター241のその他のデーターを格納する。図4では、例えば、ハード・ディスク・ドライブ238は、オペレーティング・システム258、アプリケーション・プログラム257、他のプログラム・モジュール256、およびプログラム・データー255を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム225、アプリケーション・プログラム226、他のプログラム・モジュール227、およびプログラム・データー228と同じでも異なっていても可能であることを注記しておく。オペレーティング・システム258、アプリケーション・プログラム257、他のプログラム・モジュール256、およびプログラム・データー255は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザーは、キーボード251、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス252のような入力デバイスによって、コマンドおよび情報をコンピューター241に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザー入力インターフェース236を介して、処理ユニット259に接続されている。ユーザー入力インターフェース236は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)によって接続することも可能である。カメラ26、28およびキャプチャー・デバイス20は、コンソール100の追加入力デバイスを定めることができる。モニター242またはその他のタイプの表示装置も、ビデオ・インターフェース232のようなインターフェースを介して、システム・バス221に接続されている。モニターに加えて、コンピューターは、スピーカー244およびプリンター243のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース233を通して接続することができる。
【0046】
[0056] コンピューター241は、リモート・コンピューター246のような1つ以上のリモート・コンピューターへの論理接続を使って、ネットワーク環境において動作することも可能である。リモート・コンピューター246は、パーソナル・コンピューター、サーバー、ルータ、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピューター241に関して先に説明したエレメントの多くまたは全てを含むが、図4にはメモリー記憶装置247のみを示す。図4に示す論理接続は、ローカル・エリア・ネットワーク(LAN)245およびワイド・エリア・ネットワーク(WAN)249を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネットおよびインターネットにおいては一般的である。
【0047】
[0057] LANネットワーク環境で使う場合、コンピューター241は、ネットワーク・インターフェースまたはアダプター237を介してLAN245に接続する。WANネットワーク環境で使う場合、コンピューター241は、通例、モデム250、またはインターネットのようなWAN249を通して通信を設定するその他の手段を含む。モデム250は、内蔵でも外付けでもよく、ユーザー入力インターフェース236またはその他の適切な機構を介してシステム・バス221に接続することができる。ネットワーク環境では、コンピューター241に関係付けて図示したプログラム・モジュール、またはその一部は、リモート・メモリー記憶装置に格納することもできる。一例として、そして限定ではなく、図4は、リモート・アプリケーション・プログラム248がメモリー・デバイス247に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを設定する他の手段も使用可能であることは認められよう。
【0048】
[0058] 図5は、アニメーションを混合するする方法例300の流れ図を示す。方法例300は、例えば、図1Aから図4に関して説明したターゲット認識、分析、および追跡システム10のキャプチャー・デバイス20および/または計算環境12を使って実現することができる。一実施形態例では、方法例300は、プログラム・コード(即ち、命令)の形態を取ることができ、例えば、図1Aから図4に関して説明したターゲット認識、分析、および追跡システム10のキャプチャー・デバイス20および/または計算環境12によって実行することができる。
【0049】
[0059] 一実施形態によれば、305において、画像を受け取ることができる。例えば、ターゲット認識、分析、および追跡システムは、図1Aから図2に関して先に説明したキャプチャー・デバイス20のような、キャプチャー・デバイスを含むことができる。キャプチャー・デバイスは、1つ以上のターゲットを含むこともあるシーンを取り込むまたは観察することができる。一実施形態例では、キャプチャー・デバイスは、飛行時間分析、構造化光分析、ステレオ映像分析等のような任意の適した技法を使って、RGB画像、深度画像等のような画像を入手するように構成されている深度カメラとするとよい。
【0050】
[0060] 例えば、一実施形態では、画像は深度画像を含むことができる。深度画像は、複数の被観察画素とすることができ、各被観察画像は、被観察深度値を有する。例えば、深度画像は、取り込まれたシーンの二次元(2D)画素エリアを含むことができ、2D画素エリアにおける各画層は、キャプチャー・デバイスから取り込まれたシーンにおけるオブジェクトの、例えば、センチメートル、ミリメートル等を単位とする長さまたは距離というような深度値を表すことができる。
【0051】
[0061] 図6は、305において受け取ることができる深度画像400の一実施形態例を示す。一実施形態例によれば、深度画像400は、例えば、図2に関して先に説明したキャプチャー・デバイス20の3Dカメラ26および/またはRGBカメラ28によって取り込まれたシーンの画像またはフレームとすることができる。図6に示すように、深度画像400は、例えば、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーに対応するヒト・ターゲット402と、取り込まれたシーンの中にある壁、テーブル、モニター等のような1つ以上の非ヒト・ターゲット404とを含むことができる。前述のように、深度画像400は、複数の被観察画素を含むことができ、各被観察画素には、観察された深度値が関連付けられている。例えば、深度画像400は、取り込まれたシーンの二次元(2D)画素エリアを含むことができ、この2D画素エリアの中にある各画素は、キャプチャー・デバイスからの取り込まれたシーンの中にあるターゲットまたはオブジェクトの、例えば、センチメートル、ミリメートル等を単位とする長さまたは距離のような深度値を表すことができる。一実施形態では、当該深度画像400の画素の異なる色が、キャプチャー・デバイスからのヒト・ターゲット402および非ヒト・ターゲット404の異なる距離に対応するように、および/または視覚的に描画するように、深度画像400に着色することもできる。例えば、一実施形態によれば、キャプチャー・デバイスに最も近いターゲットと関連付けられた画素には、深度画像では赤および/またはオレンジ色の濃淡で着色することができ、一方離れたターゲットと関連付けられた画素には、深度画像において緑および/または青の濃淡で着色することができる。
【0052】
[0062] 再び図5を参照すると、一実施形態では、305において画像を受け取ったときに、この画像を更に低い処理分解能にダウンサンプルして、深度画像を一層使いやすくすること、および/または計算オーバーヘッドを減らして、更に素早く処理できるようにすることもできる。加えて、1つ以上の高分散および/またはノイズの多い深度値を深度画像から除去すること、および/または平滑化することもできる。失われた深度情報および/または除去した深度情報の部分は、補充することおよび/または再生することができ、および/またはスケルトン・モデルのようなモデルを生成するために深度情報を使うことができるように、受け取った深度情報に対して任意の他の適した処理を実行することもできる。これについては、以下で更に詳しく説明する。
【0053】
[0063] 310において、画像におけるユーザーのモデルを生成することができる。例えば、画像を受け取ったとき、ターゲット認識、分析、および追跡システムは、深度画像の中にある各ターゲットまたはオブジェクトを塗りつぶし(flood filling)、塗りつぶした各ターゲットまたはオブジェクトを、種々の位置またはポーズのヒトの体モデルと関連付けられたパターンと比較することによって、例えば、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーに対応する、図6に関して先に説明したヒト・ターゲット402のようなヒト・ターゲットが深度画像に含むか否か判断することができる。塗りつぶされたターゲットまたはオブジェクトがパターンと一致した場合、これを分離し、走査して、例えば、種々の体部分の測定値を含む値を判定することができる。一実施形態例によれば、次いで、走査に基づいて、スケルトン・モデル、メッシュ・モデル等のようなモデルを生成することができる。例えば、一実施形態によれば、走査によって決定することができる測定値を、1つ以上のデーター構造に格納することができ、このデーター構造は、モデルにおける1つ以上の関節を定めるために使うことができる。1つ以上の関節は、ヒトの体部分に対応することができる1つ以上の骨を定めるために使うことができる。
【0054】
[0064] 図7は、310にいてユーザーについて生成することができるモデル500の一実施形態例を示す。一実施形態例によれば、モデル500は、1つ以上のデーター構造を含むことができ、このデーター構造は、例えば、図6に関して先に説明した深度画像400におけるヒト・ターゲット402のような、深度画像におけるユーザーと関連付けられたヒト・ターゲットの三次元モデルを表すことができる。一実施形態では、ユーザーと関連付けられたヒト・ターゲットの各体部分は、モデル500の関節および骨を定める数学的ベクトルとして特徴付けることができる。
【0055】
[0065] 図7に示すように、モデル500は、1つ以上の関節j1〜j18を含むことができる。一実施形態例によれば、関節j1〜j18の各々は、それらの間に定められる1つ以上の体部分が、互いに対してまたは他の1つ以上の体部分に対して動くことを可能にする。例えば、ヒト・ターゲットを表すモデルは、複数の剛体の体部分および/または変形可能な体部分を含むことができ、これらの体部分は、「骨」のような1つ以上の構造的部材と、隣接する骨の交点に位置する関節j1〜j18とによって定めることができる。関節j1〜j18は、骨および関節j1〜j18と関連付けられている種々の体部分が、互いに独立して動くことを可能にすることができる。例えば、図7に示す関節j7およびj11間に定められている骨は、前腕に対応することができ、この前腕は、例えば、ふくらはぎに対応することができる関節j15およびj17間に定められている骨とは独立して動かすことができる。
【0056】
[0066] 前述のように、体部分の各々は、図7に示す関節および骨を定める、X値、Y値、およびZ値を有する数学的ベクトルとして特徴付けることができる。一実施形態例では、図7に示す、骨と関連付けられたベクトルの交点は、関節j1〜j18と関連付けられたそれぞれのポイントを定めることができる。
【0057】
[0067] 再度図5を参照すると、315において、ユーザーと関連付けられたモデルのリアル・タイムのモーション、即ち、生のモーションを取り込むことができる。例えば、モデルを追跡して、ユーザーのモーションを真似するように、モデルを調節するまたは動かすことができる。このようなユーザーと関連付けられたモデルの調節またはモーションは、リアル・タイムで取り込むことができる。加えて、このような調節またはモーションは、アバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターに適用することもできる。これについては、以下で更に詳しく説明する。
[0068] 一実施形態によれば、図7に関して先に説明したモデル500のようなモデルは、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーの一表現とするとよい。ターゲット認識、分析、および追跡システムは、ユーザー18からの動きを観察するまたは取り込むことができ、その動きを使ってモデル500を調節するまたは動かして、315においてモデル500の調節またはモーションを取り込むことができるようにする。
【0058】
[0069] 例えば、図1Aから図2に関して先に説明したキャプチャー・デバイス20のようなキャプチャー・デバイスは、シーンの深度画像、RGB画像のような複数の画像を観察するまたは取り込むことができ、モデルを調節するために使うことができる。一実施形態によれば、画像の各々は、定められた頻度に基づいて観察するまたは取り込むことができる。例えば、キャプチャー・デバイスは、シーンの新たな画像を、ミリ秒毎、マイクロ秒毎等で観察するまたは取り込むことができる。
【0059】
[0070] 画像の各々を受け取ると、個々の画像と関連付けられた情報を、モデルと関連付けられた情報と比較して、ユーザーが動きを行った可能性があるか否か判断することができる。例えば、一実施形態では、合成深度画像のような合成画像に、モデルをラスタライズ (rasterize)することができる。合成画像における画素を、受け取った画像の各々におけるヒト・ターゲットと関連付けられた画素と比較して、受け取った画像におけるヒト・ターゲットが動いたか否か判断することができる。
【0060】
[0071] 一実施形態例によれば、合成画像と受け取った画像との間における画素の比較に基づいて、1つ以上の力ベクトル(force vector)を計算することができる。次いで、モデルの関節のような1つ以上の力を受ける態様に、1つ以上の力を加えてまたはマッピングして、実空間にいるヒト・ターゲットまたはユーザーのポーズに一層密接に対応するポーズに、モデルを調節するまたは動かすことができる。
【0061】
[0072] 被追跡モデルの調節またはモーションを、次に315において取り込むことができる。一実施形態では、被追跡モデルの調節またはモーションを、モーション・キャプチャー・ファイルに記録することができる。例えば、ターゲット認識、分析、および追跡システムは、手を振るモーション、ゴルフのスイングのような振り回すモーション、パンチを打つモーション、歩くモーション、走るモーション等のような、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーに特定の1つ以上のモーションを含むことができるモーション・キャプチャー・ファイルをレンダリングおよび格納することができる。一実施形態によれば、モーション・キャプチャー・ファイルは、被追跡モデルと関連付けられたX、Y、Z値を含むベクトルのような情報に基づいてリアル・タイムで生成することができ、モデルに適用することができる、ユーザーによって行われる動きの1つ以上のフレームを含むことができる。更に、モーション・キャプチャー・ファイルにおけるモデルのモーションは、アバター、画面上オブジェクト、画面上キャラクター等のような仮想キャラクターに、リアル・タイムで、または生で適用することもできる。加えて、モーション・キャプチャー・ファイルにおけるモデルのモーションは、モーション・キャプチャー・ファイルを仮想オブジェクトまたはキャラクターに今後の時点において適用することができるように、格納するまたは予め記録しておくこともできる。これについては、以下で更に詳しく説明する。
【0062】
[0073] 図8Aおよび図8Bは、モーション・キャプチャー・ファイル内に種々の時点において取り込むことができる、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーと関連付けられたモデル500の一実施形態例を示す。図8Aおよび図8Bに示すように、図7に関して先に説明したモデル500は、前述のように種々の時点におけるユーザーの動きに基づいて、調節するまたは動かすことができる。例えば、図8Aに示すように、モデル500の関節j3、j7、およびj11、ならびにそれらの間に定められる骨は、ユーザーが彼または彼女の右前腕を上げたときに、例えば、前述のように1つ以上の力ベクトルを関節j3、j7、およびj11に適用することによって、ポーズ502を表すように、調節するまたは動かすことができる。図8Aに示すようにユーザーが彼または彼女の右前腕を上げた後、ユーザー18のようなユーザーは、次に彼または彼女の左前腕を上げることができる。図8Bに示すように、モデル500を次にポーズ502からポーズ504に調節して、ユーザーが彼または彼女の左前腕を上げたときに、例えば、前述のように1つ以上の力ベクトルを関節j4、j8、およびj12に適用することによって、モデル500の関節j4、j8、およびj12ならびにそれらの間に定められている骨を調節するまたは動かすことができるようにする。図8Aおよび図8Bにおいてポーズ502および504によって示されるように、モデル500に適用することができる調節またはモーションは、前述のように、モーション・キャプチャー・ファイルのそれぞれのフレームに、315において取り込むことができる。
【0063】
[0074] 再度図5を参照すると、予め記録されているモーションを320において受け取ることができる。例えば、ターゲット認識、分析、および追跡システムは、画面上ゲーム・キャラクター、アバター、画面上オブジェクト等のような仮想キャラクターについて予め記録されているモーションを受け取ることができる。一実施形態では、予め記録されているモーションは、アプリケーション開発者によって作成された仮想キャラクターまたはオブジェクトのためにアーティストが制作した仮想キャラクターまたはオブジェクト、および/またはアプリケーション開発者によって作成された入力デバイス制御のアニメーションまたはモーション、ラグ・ドール(rag doll)のアニメーションまたはモーション等の、アーティストが制作したアニメーションまたはモーション・キャプチャー・ファイルとすることができる。他の実施形態によれば、予め記録されているモーションは、ターゲット認識、分析、および追跡システムのユーザーと関連付けられているモデルのモーション・キャプチャー・ファイルとすることができ、前述のように、今後の使用のために格納することもできる。
【0064】
[0075] 図9Aおよび図9Bは、種々の時点における、または320において予め記録されているアーティストが制作したモーションとして受け取ることができる種々のフレームにおける、ケンタウルのような仮想オブジェクトまたはキャラクターについてのキャラクター・モデル600の一実施形態例を示す。図9Aおよび図9Bに示すように、キャラクター・モデル600は1つ以上の関節j1’〜j20’を含むことができる。一実施形態では、関節j1’〜j20’の各々は、1つ以上の体部分を定めることができる。これらの体部分は、関節j1’〜j20’における1つ以上の他の体部分と関係付けて、またはこれらとは独立して動くことができ、仮想オブジェクトまたはキャラクターを動画化することができる。これについては、以下で更に詳しく説明する。
【0065】
[0076] 加えて、一実施形態例によれば、キャラクター・モデル600の関節j1’〜j20’の各々は、種々の時点において、または予め記録されているアーティスト制作アニメーションまたはモーション・キャプチャー・ファイルのそれぞれのフレームにおいて、予め記録されているアーティスト制作アニメーションまたはモーション・キャプチャー・ファイルの中に、対応するアニメーション・トラック(animation track)を有することもできる。例えば、図9Aに示すように、キャラクター・モデル600の関節j16’、j18’、およびj20’、ならびにそれらの間に定められた体部分は、各々、予め記録されているアーティスト制作アニメーションまたはモーション・キャプチャー・ファイルにおける第1時点または第1フレームにおいて、アニメーション・トラック(animation track)を有することができ、その結果、予め記録されているアーティスト制作アニメーションまたはモーション・ファイルにおけるキャラクター・モデル600のポーズ602が生ずることができる。次いで、関節j16’、j18’、およびj20’は、予め記録されているアーティスト制作アニメーションまたはモーション・ファイルにおけるキャラクター・モデル600の関節j16’、j18’、およびj20’についてのアニメーション・トラックの各々について、後続の第2時点または第2の後続フレームにおけるポーズ604を表すように調節することができる。
【0066】
[0077] 再度図5を参照すると、325において、モデルのモーション、および/または予め記録されているモーションを、仮想オブジェクトまたはキャラクターに適用することができる。例えば、ターゲット認識、分析、および追跡システムは、ユーザーの1つ以上のリアル・タイムまたは生のモーション、および/またはユーザーの予め記録されているモーションを、仮想オブジェクトまたはキャラクターの少なくとも一部にマッピングすることができ、この仮想オブジェクトまたはキャラクターを動画化して、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーによって行われる動きを真似させるようにすることができる。加えて、ターゲット認識、分析、および追跡システムは、1つ以上の予め記録されているアーティスト制作アニメーションまたはモーションおよび/または1つ以上の予め記録されているプログラム制御変換を、仮想オブジェクトまたはキャラクターの少なくとも一部にマッピングすることができ、この仮想オブジェクトまたはキャラクターを動画化して、予め記録されているアーティスト制作モーションおよび/または予め記録されているプログラム制御変換をまねるようにすることができる。
【0067】
[0078] 図10Aおよび図10Bは、325において適用された、ユーザーの生のモーションおよび/または予め記録されているモーションを有することができる、仮想キャラクター700の一実施形態例を示す。図10Aおよび図10Bに示すように、キャラクター700は、例えば、ゲーム・アプリケーションにおけるキャラクターとすることもできる、ケンタウルを含むことができる。一実施形態によれば、仮想キャラクター700は、ユーザーと関連付けられたモデルを追跡して得られた生のモーション、および予め記録されているアーティスト制作モーションのような、予め記録されているモーションを使って、325において動画化することができる。例えば、仮想キャラクター700の第1部分Aは、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーによって行われる生のモーションを使って動画化することができ、第2部分Bは、予め記録されているアーティスト制作モーションを使って動画化することができる。
【0068】
[0079] 一実施形態例によれば、図7から図8Bに関して先に説明したように、ユーザーと関連付けられたモデル500の関節j1〜j12を、仮想キャラクター700の第1部分Aにマッピングすることができ、図9Aおよび図9Bに関して先に説明したように、キャラクター・モデル600の関節j9’〜j20’を、仮想キャラクター700の第2部分Bにマッピングすることができ、ユーザーが行うことができる生のモーションを真似するように第1部分Aを動画化し、仮想キャラクター700と関連付けられたキャラクター・モデル600のようなキャラクター・モデルのアニメーションをまねるように、第2部分Bを動画化することができるようになる。例えば、図8Aおよび図8Bに示したモデル500の関節j4、j8、およびj12、ならびにその間に定められている骨を、仮想キャラクター700の左肩、左肘、および左手首、ならびにそれらの間に定められている対応する体部分にマッピングすることができ、図10Aおよび図10Bに示す仮想キャラクター700の第1部分Aが、ユーザーが彼または彼女の左腕を動かしている姿と関連付けられる、図8Aおよび図8Bに示した関節j4、j8、およびj12のポーズ502および504を真似することができるようになる。加えて、図9Aおよび図9Bに示したキャラクター・モデル600の関節j16’、j18’、およびj20’ならびにそれらの間に定められている骨を、仮想キャラクター700の前左臀部(front left hip)、前左膝、および前左踝、ならびにそれらの間に定められる対応する体部分にマッピングすることができ、図10Aおよび図10Bに示した仮想キャラクター700の第2部分Bが、左前足を伸ばしているケンタウルのモデルの図9Aおよび図9Bに示した関節j16’、j18’、およびj20’のポーズ602および604を真似することができるようになる。このように、一実施形態例によれば、仮想キャラクター700は、ユーザーと関連付けられたモデル500の生のモーションを、仮想キャラクターまたはオブジェクトと関連付けられたキャラクター・モデル600の予め記録されているモーションと混合して、含むことができる。
【0069】
[0080] 一実施形態では、生のモーションおよび予め記録されているモーションによって仮想キャラクター700を動画化するには、ターゲット認識、分析、および追跡システムは、仮想キャラクター700の第1部分Aに対応するキャラクター・モデル600の関節および/または体部分と関連付けられているアニメーションまたはモーションの追跡をディスエーブルすればよい。加えて、ターゲット認識、分析、および追跡システムは、仮想キャラクター700の第2部分Bに対応する、モーション・キャプチャー・ファイルにおけるモデル500の関節と関連付けられているアニメーションまたはモーションをディスエーブルしてもよい。ターゲット認識、分析、および追跡システムは、次いで、モーション・キャプチャー・ファイルの中にある、ユーザーと関連付けられているモデル500のアニメーションまたはモーションを、キャラクター・モデル600のアニメーションまたはモーション・トラックと混合して、ユーザーと関連付けられているモデル500のモーションによって、第1部分Aを動画化し、仮想キャラクター700と関連付けられているキャラクター・モデル500のアニメーションまたはモーションで、第2部分を動画化することができる。
【0070】
[0081] 例えば、ターゲット認識、分析、およびターゲット・システムは、キャラクター・モデル600の関節j1’〜j8’のアニメーションまたはモーション・トラック、ならびにユーザーと関連付けられているモデル500の関節j13〜j18のアニメーションまたはモーションをディスエーブルすることができる。次に、ターゲット認識、分析、およびターゲット・システムは、キャラクター・モデル600と、ユーザーと関連付けられているモデル500とのアニメーションおよびモーションを混合して、仮想キャラクター700の第1部分Aが、ユーザーによる動きを真似することができ、仮想キャラクター700の第2部分Bが、図10Aおよび図10Bに示すような、キャラクター・モデルの予め記録されているアニメーションまたはモーションを真似することができるようになる。
【0071】
[0082] 図11A〜図11Fは、325において、ユーザーの生のモーションおよび/または予め記録されているモーションが適用された仮想キャラクター800の他の実施形態例を示す。図11A〜図11Fに示すように、仮想キャラクター800は、例えば、ゲーム・アプリケーションにおけるキャラクターとしてもよいロボットを含むことができる。一実施形態によれば、仮想キャラクター800は、325において、ユーザーと関連付けられた被追跡モデルの生のモーション、および/またはユーザーと関連付けられたモデルの格納されているモーションまたはアーティストが制作した予め記録されているモーションというような、予め記録されているモーションを使って動画化することができる。例えば、仮想キャラクター800の第1部分A’は、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーによって行われる生のモーションを使って動画化することができ、および/または第2部分B’は、モーション・キャプチャー・ファイルに予め記録されているユーザーのモーションまたはアーティストが制作した予め記録されているモーションを使って動画化することができる。
【0072】
[0083] 一実施形態によれば、生のおよび/または予め記録されているモーションあるいはアニメーションは、ユーザーから受けたジェスチャーに応答して、仮想キャラクター800に適用することができる。例えば、315において取り込むことができる、ユーザーと関連付けられたモデルのリアル・タイムまたは生のモーションが、325において、仮想キャラクター800の動きまたはアニメーションを制御するために使うことができるジェスチャーを含むことができる。
【0073】
[0084] 一実施形態例では、ユーザーと関連付けられているモデルを調節して、彼または彼女の左腕を上げているユーザーを真似して、そして315において取り込むことができるように、ユーザーが彼または彼女の左腕を上げることができる。例えば、図7から図8Bに関して先に説明したモデル500の関節j4、j8、およびj12は、ユーザーが彼または彼女の左腕を上げたことを反映するように調節することができる。次いで、ターゲット認識、分析、および追跡システムは、持ち上げられた左腕と関連付けられたジェスチャーを解釈し、ターゲット認識、分析、および追跡システムが、予め記録されているモーションまたは生のモーションを、仮想キャラクター800の第1部分A’のような少なくとも一部に適用することができ、ユーザーによって持ち上げられた左腕と関連付けられたジェスチャーに応答して、仮想キャラクター800の第1部分A’等のような少なくとも一部に適用されている、予め記録されているモーションまたは生のモーションから切り替えることができる。
【0074】
[0085] 例えば、一実施形態によれば、ユーザーが彼または彼女の左腕を上げたことに応答して、例えば、ユーザーと関連付けられているモデル500に行われた調節に基づいて仮想キャラクター800を動画化し、図11Bに示すように、ユーザーが彼または彼女の左腕を上げたという生のモーションを、例えば、仮想キャラクター800の第1部分A’に適用することができるようになる。即ち、ユーザーが彼または彼女の左腕を上げたことに応答して、ユーザーと関連付けられているモデル500の関節j4、j8、およびj12を、仮想キャラクター800の左腕にマッピングすることができ、仮想キャラクター800の第1部分A’を、ユーザーが彼または彼女の上半身によって行う生のモーションによって動画化することができるようになる。加えて、ユーザーによる彼または彼女の上半身のその後の動きも、仮想キャラクター800に適用することができる。例えば、ユーザーが彼または彼女の右前腕を上げると、ユーザーが彼または彼女の右前腕を上げた生のモーションを、モデル500の関節j7およびj11に適用することができる。これらの生のモーションは、次に、前述のように仮想キャラクター800に適用され、仮想キャラクター800が、図11Cに示すように、彼または彼女の左前腕を上げるように動画化させるまたは動かすことができるようになる。このように、一実施形態によれば、受け取ったジェスチャーに応答して、仮想キャラクター800の少なくとも一部を、ユーザーと関連付けられたモデル500に適用することができるユーザーの動きを真似するように動画化することができる。
【0075】
[0086] 同様に、ユーザーが彼または彼女の左足を上げると、ユーザーと関連付けられているモデルは、ユーザーが彼または彼女の左足を上げる動作を真似することができ、315においてこのモデルを取り込むことができるようになる。例えば、図7から図8Bに関して先に説明したモデル500の関節j14、j16、およびj18は、ユーザーが彼または彼女の左足を上げたことを反映するように調節することができる。ターゲット認識、分析、および追跡システムは、次に、上げられた左足と関連のあるジェスチャーを解釈することができ、ターゲット認識、分析、および追跡システムが、ユーザーによって上げられた左足と関連のあるジェスチャーに応答して、予め記録されているモーションまたは生のモーションを、仮想キャラクター800の第2部分B’のような少なくとも一部に適用することができ、仮想キャラクター800の第2部分B’のような少なくとも一部に適用されている、予め記録されているモーションまたは生のモーションから切り替えること等ができるようになる。
【0076】
[0087] 例えば、一実施形態によれば、ユーザーが彼または彼女の左足を上げたことに応答して、仮想キャラクター800の第2部分B’を、モーション・キャプチャー・ファイルに取り込まれているユーザーと関連付けられているモデル500の予め記録されている歩行運動、または図11Dから図11Fに示すような、アーティストが制作した歩行アニメーションというような、予め記録されている歩行運動を使って動画化することができる。即ち、ユーザーが彼または彼女の左足を上げたことに応答して、格納されているモーション・キャプチャー・ファイルの中にあるモデル500の関節j13〜j18を、仮想キャラクター800の右足および左足それぞれにマッピングすることができ、仮想キャラクター800の第2部分B’を、ユーザーが行った歩行運動を予め記録したものによって動画化することができる。あるいは、ユーザーが彼または彼女の左足を上げたことに応答して、キャラクター・モデルの関節および/または体部分を、仮想キャラクター800の右足および左足それぞれにマッピングすることができ、仮想キャラクター800の第2部分B’を、アーティストが制作して予め記録されている歩行運動によって動画化することができる。
【0077】
[0088] 一実施形態では、仮想キャラクター800に適用されるアニメーションを制御することができる後続のジェスチャーを受け取ることができるまで、ユーザーの生のモーションおよび/または予め記録されているモーションを、例えば、仮想キャラクター800の第1および第2部分A’およびB’に適用することができる。例えば、ユーザーが彼または彼女の右および左腕双方を上げるというような後続のジェスチャーを受け取ることができるまで、ユーザーの生のモーションを、仮想キャラクター800の第1部分A’に適用することができる。後続のジェスチャーを受け取ると、仮想キャラクター800の第1部分A’を静止させるか、あるいは、例えば、前述のモーション・キャプチャー・ファイルの中に予め記録されているユーザーのモーションまたはアーティストが生成し予め記録されているアニメーションというような、予め記録されているモーションを使って動画化されるように切り替えることができる。
【0078】
[0089] 一実施形態例によれば、ユーザーが彼または彼女の左手を上げたことに応答して、ユーザーが彼または彼女の上半身によって行った生のモーションを使って仮想キャラクター800の第1部分A’を動画化するには、ターゲット認識、分析、および追跡システムは、ユーザーの下半身と関連付けられているモデル500の関節j13〜j18のような、関節および/または体部分のアニメーションまたはモーションをディスエーブルすることができる。加えて、ユーザーが彼または彼女の左足を上げたことに応答して、予め記録されている歩行運動を使って仮想キャラクター800の第2部分B’を動画化するには、ターゲット認識、分析、および追跡システムは、仮想キャラクター800またはユーザーと関連付けられたキャラクター・モデルの上半身と関連付けられたキャラクター・モデルまたはモデル500の関節および/または体部分のアニメーションまたはモーションをディスエーブルすることができる。ターゲット認識、分析、および追跡システムは、次に、キャラクター・モデル600の予め記録されている歩行運動をイネーブルしこれと、ユーザーの上半身のイネーブルされている生のアニメーションまたはモーションを混合することができ、ユーザーが彼または彼女の左腕を上げたことに応答して、第1部分A’をユーザーの上半身の生のモーションを使って、図11Dから図11Fに示すような予め記録されている歩行運動によって動画化することができる。
【0079】
[0090] 加えて、一実施形態では、ユーザーが双方の腕を上げるというような後続のジェスチャーを受け取ったことに応答して、例えば、仮想キャラクター800の第1部分A’に適用されているユーザーの生のモーションを、予め記録されているモーションと切り替えることができ、ターゲット認識、分析、および追跡システムは、例えば、15〜20フレームのような所定数のフレームに渡って移り変わり(transition)を混合することができ、仮想キャラクターの第1部分A’が、生のモーションと予め記録されているモーションとの間で滑らかに移り変わることができるようにする。例えば、生のモーションにおけるモデル500の関節および/または体部分の各々を、15〜20フレームにわたる予め記録されているモーションにおける、対応する関節および/または体部分と混合することができる。このように、モーション・キャプチャー・ファイルにおける生のモーションの第1フレームにおけるモデル500の上半身と関連のある各関節を、予め記録されているモーションまたはアニメーションの第1フレームにおけるキャラクター・モデルの各対応する関節および/または体部分と混合することができる。次いで、生のモーションは、所定数のフレームの後に、徐々に消えて行き、仮想キャラクター800の第1部分A’が、予め記録されているモーションまたはアニメーションを使って動画化されるようにすることができる。
【0080】
[0091] 図12Aおよび図12Bは、ユーザーの生のモーションおよび/または325において適用されたプログラム制御変形を有することができるゲーム・キャラクター900の一実施形態例を示す。図12Aおよび図12Bに示すように、ゲーム・キャラクター900は、例えば、フットボール・ゲーム・アプリケーションにおけるキャラクターとしてもよい、フットボール・プレーヤーを含むことができる。一実施形態によれば、ゲーム・キャラクター900は、325において、ユーザーと関連付けられた被追跡モデルの生のモーション、および入力デバイスによって制御されるアニメーションまたはモーション、ラグ・ドール(rag doll)のアニメーションまたはモーション等のようなプログラム制御変換を使って動画化することができる。例えば、ゲーム・キャラクター900の腕906aおよび906bのような第1部分は、図1Aおよび図1Bに関して説明したユーザー18のようなユーザーが彼または彼女の腕によって行った生のモーションによって、制御または動画化することができる。一実施形態例によれば、図12Aおよび図12Bに示すゲーム・キャラクター900の残りの体部分の各々のような第2部分には、予め記録されているプログラム制御変形が適用されていてもよい。
【0081】
[0092] 一実施形態では、予め記録されているプログラム制御変形は、ゴール・ベース(goal based)アニメーションまたはモーションを含むことができる。このアニメーションまたはモーションは、物理的過程を使って、ゲーム・キャラクター900のようなゲーム・キャラクターがアプリケーションにおいてそのゴールに到達することを可能にすることができる。例えば、ゲーム・キャラクター900は、ワイド・レシーバーとすることができ、パスを捕球するために、フットボール・ゲーム・アプリケーションにおいて設けられているフットボール競技場において、特定の位置に到達して得点を得ることができる。この予め記録されているプログラム制御変形は、例えば、ゲーム・キャラクター900に自動的にその位置に到達させることができる物理的過程を使って、アニメーションまたはモーションを含むことができる。
【0082】
[0093] 加えて、他の実施形態例によれば、ゲーム・キャラクター900は、図12Aおよび図12Bに示すように、相手チームのゲーム・キャラクターによってタックルされてもよい。プログラム制御変形は、フットボール・ゲーム・アプリケーションにおいて所与の位置でゲーム・キャラクター900にタックルするように位置付けることができるラグ・ドールに基づいて、予め記録されているアニメーションまたはモーションを含むことができる。例えば、プログラム制御変形のモーションまたはアニメーションは、ゲーム・キャラクター900が、敵のプレーヤーの位置と関連付けられたラグ・ドールによってタックルされたと考えたときのゲーム・キャラクター900の反応に基づく物理的過程の計算に基づいて生成することができる、ラグ・ドールのアニメーションまたはモーションを含むことができる。
【0083】
[0094] このように、一実施形態では、腕906aおよび906bには、ユーザーの腕の生のモーションを適用することができ、ゲーム・キャラクター900の残りの体部分は、ゲーム・キャラクター900にタックルする敵のプレーヤーと関連付けられたラグ・ドールのアニメーションまたはモーションのプログラム制御変換によって動画化することができ、ユーザーは、図12Aおよび図12Bに示すように、捕球を行うように腕906aおよび906bを制御し続けることができ、体の残りの部分は、敵のプレーヤーによって実際にタックルされたプレーヤーと同様に反応することができる。
【0084】
[0095] このように、一実施形態例では、図5に示した325において、1つ以上の生のモーションまたはモーション・キャプチャー・ファイルに予め記録されているモーションに応答して、 画面上のキャラクターの視覚的外観を変化させることができる。例えば、ゲーミング・コンソールにおいて電子ゲームをプレーしている図1Aおよび図1Bに関して先に説明したユーザー18のようなゲーム・プレーヤーを、本明細書において記載したように、ゲーミング・コンソールによって追跡することができる。ゲーム・プレーヤーが腕を振ると、ゲーミング・コンソールはこのモーションを追跡し、次いでこの追跡したモーションに応答して、ユーザーと関連付けられているモデルを調節することができる。前述のように、被追跡モデルを更にモーション・キャプチャー・ファイルに取り込むこともできる。次いで、モーション・キャプチャー・ファイルを、例えば、画面上のキャラクターの上半身部分に適用することができ、ユーザーが彼らの腕を振る実際のモーションを真似るように、画面上のキャラクターを動画化することができるようになる。加えて、アーティストが生成した予め記録されているモーション、またはプログラム制御変換を、生のモーションまたはモーション・キャプチャー・ファイルに予め記録されているモーションと混合することもできる。例えば、実施形態例によれば、画面上のキャラクターは、例えば、ユーザーが彼または彼女の腕をリアル・タイムで、または生で振るのと全く同様に、ゲームにおいて、ゴルフ・クラブ、バットを振る、またはパンチを打つように動画化することができ、そして予め記録されている走行、歩行、あるいはバイクのモーションまたはアニメーションに取り込むことができるプロの競技者と同様に、画面上のキャラクターが走行する、歩行する、またはバイクに乗るように動画化することができる。
【0085】
[0096] 尚、本明細書において記載した構成および/または手法は、本質的に例示であること、そしてこれら具体的な実施形態または例を限定と見なしてはならないことは言うまでもない。本明細書において記載したこれら具体的なルーチンおよび方法は、任意の数の処理方策のうち1つ以上を表すことができる。したがって、例示した種々の動作(act)は、例示したシーケンスで、他のシーケンスで、並行して等で実行することができる。同様に、前述のプロセスの順序も変更することができる。
【0086】
[0097] 本開示の主題は、本明細書において開示した種々のプロセス、システムおよび構成、ならびに他の特徴、機能、動作、および/または特性のあらゆる新規でかつ非明示的なコンビネーションおよびサブコンビネーション、更にはそのいずれの均等物および全ての均等物も含むこととする。
【従来技術】
【0001】
[0001] コンピューター・ゲーム、マルチメディア・アプリケーション等のような多くの計算アプリケーションは、アバターまたはキャラクターを含み、これらは、典型的なモーション・キャプチャー技法を使って動画化される。例えば、ゴルフ・ゲームを開発するとき、モーション・キャプチャー機器を有するスタジオにプロのゴルファーを連れてくることができる。モーション・キャプチャー機器は、例えば、スタジオ内の特定ポイントに向けられている複数のカメラを含む。次いで、プロのゴルファーに、複数のポイント・インディケーターを有するモーション・キャプチャー・スーツを着用させる。モーション・キャプチャー・スーツは、カメラが、例えば、プロのゴルファーのゴルフをするモーションを取り込むことができるように構成され、カメラによって追跡させることができる。次いで、これらのモーションを、ゴルフ・ゲームの開発中に、アバターまたはキャラクターに適用することができる。ゴルフ・ゲームが完成したとき、アバターまたはキャラクターは、ゴルフ・ゲームの実行中にプロのゴルファーのモーションで動画化することができる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
生憎、典型的なモーション・キャプチャー技法は、費用がかかり、特定のアプリケーションの開発に結びつけられており、実際のプレーヤーまたはアプリケーションのユーザーと関連付けられたモーションを含まない。
【課題を解決するための手段】
【0003】
[0002] 本明細書において開示するのは、アニメーションを混合する(blend)するシステムおよび方法である。例えば、一実施形態では、ユーザーの生のモーションを取り込み、アーティストが生成した予め記録されたモーションというような予め記録されたモーション、予め記録されたユーザーのモーション、および/またはプログラムで制御された変換を受けることができる。次いで、生のモーションを仮想キャラクターの第1部分に適用することができ、予め記録されたモーションをこの仮想キャラクターの第2部分に適用することができ、仮想キャラクターが生のモーションおよび予め記録されたモーションの組み合わせで動画化されるようにすることができる。一実施形態によれば、生のモーションおよび/または予め記録されたモーションは、ユーザーからのジェスチャーを受けたことに応答して、仮想キャラクターに適用することができ、ジェスチャーにはアニメーション・コマンドを関連付けることができる。加えて、仮想キャラクターは、予め記録されたユーザーのモーション、および予め記録されたアーティストが生成したモーションというような、予め記録されたモーションの組み合わせで、例えば、予め記録されたユーザーのモーションを仮想キャラクターの第1部分に適用し、予め記録されたアーティストが生成したモーションを仮想キャラクターの第2部分に適用することによって、動画化されていてもよい。
【0004】
[0003] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使われることを意図するのでもない。更に、特許請求する主題は、本開示のいずれの部分に記されている実施形態のうちいずれかの欠点を解決するものにも、また全ての欠点を解決するものにも限定されないものとする。
【図面の簡単な説明】
【0005】
【図1A】図1Aは、ターゲット認識、分析、および追跡システムの一実施形態例を、ゲームをプレーするユーザーと共に示す。
【図1B】図1Bは、ターゲット認識、分析、および追跡システムの一実施形態例を、ゲームをプレーするユーザーと共に示す。
【図2】図2は、ターゲット認識、分析、および追跡システムにおいて使うことができるキャプチャー・デバイスの一実施形態例を示す。
【図3】図3は、ターゲット認識、分析、および追跡システムにおいて1つ以上のジェスチャーを解釈するため、および/またはターゲット認識、分析、および追跡システムによって表示された仮想キャラクターを動画化するために使うことができる計算環境の一実施形態例を示す。
【図4】図4は、ターゲット認識、分析、および追跡システムにおいて1つ以上のジェスチャーを解釈するため、および/またはターゲット認識、分析、および追跡システムによって表示された仮想キャラクターを動画化するために使うことができる計算環境の他の実施形態例を示す。
【図5】図5は、ユーザーのモーション・キャプチャー・ファイルを生成し適用する方法例の流れ図を示す。
【図6】図6は、ユーザーと関連付けられたヒトのターゲットを含む画像の一実施形態例を示す。
【図7】図7は、ユーザーと関連付けられたヒトのターゲットに生成することができるモデルの一実施形態例を示す。
【図8A】図8Aは、モーション・キャプチャー・ファイル内に種々の時点において取り込むことができるユーザーと関連付けられたモデルの一実施形態例を示す。
【図8B】図8Bは、モーション・キャプチャー・ファイル内に種々の時点において取り込むことができるユーザーと関連付けられたモデルの一実施形態例を示す。
【図9A】図9Aは、種々の時点におけるモデルに基づいて動画化することができる仮想キャラクターのモデルの一実施形態例を示す。
【図9B】図9Bは、種々の時点におけるモデルに基づいて動画化することができる仮想キャラクターのモデルの一実施形態例を示す。
【図10A】図10Aは、動画化することができる仮想キャラクターの一実施形態例を示す。
【図10B】図10Bは、動画化することができる仮想キャラクターの一実施形態例を示す。
【図11A】図11Aは、動画化することができる仮想キャラクターの他の一実施形態例を示す。
【図11B】図11Bは、動画化することができる仮想キャラクターの他の一実施形態例を示す。
【図11C】図11Cは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図11D】図11Dは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図11E】図11Eは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図11F】図11Fは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図12A】図12Aは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【図12B】図12Bは、動画化することができる仮想キャラクターの他の実施形態例を示す。
【発明を実施するための形態】
【0006】
[0016] 本明細書において説明するように、ユーザーは、ゲーム・コンソール、コンピューター等のような計算環境において実行するアプリケーションを制御することができ、および/またはアバター、画面上のキャラクター、画面上のオブジェクト等というような仮想キャラクターを、1つ以上のジェスチャーおよび/または動きを行うことによって動画化することができる。一実施形態によれば、ジェスチャーおよび/または動きを、例えば、キャプチャー・デバイスによって受けることができる。例えば、キャプチャー・デバイスは、シーンの深度画像を取り込むことができる。一実施形態では、キャプチャー・デバイスは、そのシーンにおける1つ以上のターゲットまたはオブジェクトが、ユーザーのようなヒトのターゲットに対応するか否か判断することができる。次に、ヒトのターゲットに対応する各ターゲットまたはオブジェクトを走査して、スケルトン・モデル、メッシュ・ヒト・モデル等のような、それと関連付けられたモデルを生成することができる。一実施形態例では、このモデルを追跡することができ、追跡されたモデルのモーション・キャプチャー・ファイルを生成することができ、ユーザーのモデルと関連付けられた仮想キャラクターまたはオブジェクトをレンダリングし、ユーザーのモデルと関連付けられた生のモーションおよび/または予め記録されているモーションによって、仮想キャラクターまたはオブジェクトを動画化することができ、および/または計算環境において実行中のアプリケーションにおいて、例えば、追跡したモデルに基づいて、どの制御を行うべきか決定することができる。
【0007】
[0017] 図1Aおよび図1Bは、ターゲット認識、分析、および追跡システム10の構成の一実施形態例を、ゲームをプレーするユーザー18と共に示す。一実施形態例では、目標認識、分析、および追跡システム10は、ユーザー18のようなヒトのターゲットを認識し、分析し、および/または追跡するために使うことができる。
【0008】
[0018] 図1Aに示すように、ターゲット認識、分析、および追跡システム10は、計算環境12を含む。計算環境12は、コンピューター、ゲーミング・システムまたはコンソール等であればよい。一実施形態例によれば、ゲーミング・アプリケーション、ゲーミング以外のアプリケーション等のようなアプリケーションを実行するために計算環境12を使うことができるように、計算環境12はハードウェア・コンポーネントおよび/またはソフトウェア・コンポーネントを含むことができる。一実施形態では、計算環境12は、標準化されたプロセッサー、特殊化されたプロセッサー、マイクロプロセッサー等のようなプロセッサーを含むことができ、このプロセッサーは、例えば、ユーザーの生のモーションを取り込み、予め記録されているモーションを受け取り、生のモーションを仮想オブジェクトの第1部分に適用し、予め記録されているモーションを仮想オブジェクトの第2部分に適用する命令、あるいは任意の他の適した命令を含む、命令を実行することができる。これについては、以下で更に詳しく説明する。
【0009】
[0019] 図1Aに示すように、ターゲット認識、分析、および追跡システム10は、更に、キャプチャー・デバイス20を含むことができる。キャプチャー・デバイス20は、例えば、ユーザー18のような、一人以上のユーザーを視覚的に監視するために使うことができるカメラとすればよく、一人以上のユーザーによって行われるジェスチャーおよび/またはモーションを取り込み、分析し、そして追跡して、アプリケーションにおいて1つ以上の制御または動作を実行する、および/またはアバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターを動画化することができる。これについては、以下で更に詳しく説明する。
【0010】
[0020] 一実施形態によれば、ターゲット認識、分析、および追跡システム10は、テレビジョン、モニター、高品位テレビジョン(HDTV)等のような、ゲームまたはアプリケーションの映像(visual)および/または音声(audio)をユーザー18のようなユーザーに与えることができるオーディオビジュアル・デバイス16に接続することができる。例えば、計算環境12は、グラフィクスカードのようなビデオ・アダプターおよび/またはサウンド・カードのようなオーディオ・アダプターを含むことができる。これらは、ゲーム・アプリケーション、ゲーム以外のアプリケーション等と関連のあるオーディオビジュアル信号を供給することができる。オーディオビジュアル・デバイス16は、計算環境12からオーディビジュアル信号を受け取ることができ、次いで、これらのオーディオビジュアル信号と関連付けられたゲームまたはアプリケーションの映像および/または音声をユーザー18に出力することができる。一実施形態によれば、オーディオビジュアル・デバイス16は、例えば、S−Videoケーブル、同軸ケーブル、HDMIケーブル、DVIケーブル、VGAケーブル等によって、計算環境12に接続することができる。
【0011】
[0021] 図1Aおよび図1Bに示すように、ターゲット認識、分析、および追跡システム10は、ユーザー18のようなヒトのターゲットを認識、分析、および/または追跡するために使うことができる。例えば、ユーザー18を、キャプチャー・デバイス20を使って追跡し、ユーザー18のジェスチャーおよび/またはモーションを取り込んで、アバター、画面上のキャラクター、画面上のオブジェクト等のような仮想キャラクターを動画化することができ、および/または計算環境12によって実行されているアプリケーションに作用するために使うことができる制御として解釈することができる。このように、一実施形態によれば、ユーザー18は彼または彼女の体を動かして、アプリケーションを制御すること、および/または仮想オブジェクトを動画化することができる。
【0012】
[0022] 図1Aおよび図1Bに示すように、一実施形態例では、計算環境12において実行するアプリケーションは、ユーザー18がプレーしているかもしれないボクシング・ゲームであってもよい。例えば、コンピューター環境12は、オーディオビジュアル・デバイス16を使って、ボクシングの相手38の視覚的表現をユーザー18に与えることができる。また、計算環境12は、オーディオビジュアル・デバイス16を使って、ユーザー18が彼または彼女の動きで制御することができるプレーヤー・アバター40の視覚表現も与えることができる。例えば、図1Bに示すように、ユーザー18はプレーヤー・アバター40にゲーム空間においてパンチを打たせるために、実空間おいてパンチを打つことができる。このように、一実施形態例によれば、計算環境12、ならびにターゲット認識、分析、および追跡システム10のキャプチャー・デバイス20は、実空間におけるユーザー18のパンチを認識および分析するために使うことができ、このパンチをゲーム空間におけるプレーヤー・アバター40のゲーム制御として解釈することができ、および/またはパンチのモーションを使って、ゲーム空間におけるプレーヤー・アバター40を動画化することができる。
【0013】
[0023] ユーザー18による他の動きも、軽く叩く、行ったり来たりする、あちこち動き回る、防御する、ジャブする、または種々の異なる力のパンチを出すように制御するというように、プレーヤー・アバターを動画化するために用いられる他の制御または動作として解釈することができる。更に、動きの中には、プレーヤー・アバター40を制御する以外の動作に対応することもできる制御として解釈してもよい場合もある。例えば、プレーヤーは、動きを使って、ゲームを終了する、一時停止する、またはセーブする、レベルを選択する、高スコアを見る、友人と通信する等を行うこともできる。加えて、ユーザー18のモーションの最大範囲が利用可能であり、アプリケーションと相互作用するために任意の適した方法で使って、分析することができる。
【0014】
[0024] 実施形態例では、ユーザー18のようなヒトのターゲットがオブジェクトを有することもできる。このような実施形態では、電子ゲームのユーザーがそのオブジェクトを保持しているとよく、ゲームのパラメータを調節および/または制御するために、プレーヤーおよびオブジェクトのモーションを使うことができるようにするとよい。例えば、ラケットを保持しているプレーヤーのモーションを追跡し、電子スポーツ・ゲームにおける画面上のラケットを制御するために利用することができる。他の実施形態例では、オブジェクトを保持しているプレーヤーのモーションを追跡し、電子戦争ゲームにおける画面上の兵器を制御するために利用することができる。
【0015】
[0025] 他の実施形態例では、ターゲット認識、分析、および追跡システム10は、更に、ターゲットの動きを、ゲームの範囲の外側にあるオペレーティング・システムおよび/またはアプリケーション制御として解釈するために使うこともできる。例えば、オペレーティング・システムおよび/またはアプリケーションの事実上あらゆる制御可能な態様を、ユーザー18のようなターゲットの動きによって制御することができる。
【0016】
[0026] 図2は、ターゲット認識、分析、および追跡システム10において使うことができるキャプチャー・デバイス20の一実施形態例を示す。一実施形態例によれば、キャプチャー・デバイス20は、例えば、飛行時間、構造化光、立体画像等を含む任意の適した技法によって、深度値を含むことができる深度画像を含む深度情報と共にビデオを取り込むように構成することができる。一実施形態によれば、キャプチャー・デバイス20は、深度情報を「Zレイヤー」、または深度カメラからその視線に沿って延びるZ軸に対して垂直となることができるレイヤーに編成することができる。
【0017】
[0027] 図2に示すように、キャプチャー・デバイス20は、画像カメラ・コンポーネント22を含むことができる。一実施形態例によれば、画像カメラ・コンポーネント22は、シーンの深度画像を取り込むことができる深度カメラとするとよい。深度カメラは、取り込まれたシーンの二次元(2D)画素エリアを含むことができ、この2D画素エリアにおける各画素は、カメラから取り込まれたシーンにおけるオブジェクトの、例えば、センチメートル、ミリメートル等の単位の長さまたは距離というような、深度値を表すことができる。
【0018】
[0028] 図2に示すように、一実施形態例によれば、画像カメラ・コンポーネント22は、シーンの深度画像を取り込むために使うことができるIR発光コンポーネント24、三次元(3D)カメラ26、およびRGBカメラ28を含むことができる。例えば、飛行時間分析では、キャプチャー・デバイス20のIR発光コンポーネント24は、シーンに向けて赤外線光を放出することができ、次いでセンサ(図示せず)を使って、そのシーンの中にある1つ以上のターゲットおよびオブジェクトの表面から散乱される光を、例えば、3Dカメラ26および/またはRGBカメラ28を使って検出することができる。実施形態の中には、パルス状赤外線光を使って、発信光パルスと対応する入射光パルスとの間の時間を測定し、キャプチャー・デバイス20からシーン内にあるターゲットまたはオブジェクト上における特定の場所までの物理的距離を判定するために使うことができるようにするとよい場合がある。加えて、他の実施形態例では、発信光波の位相を着信光波の位相と比較して、位相ずれを判定するとよい場合もある。次いで、位相ずれを使って、キャプチャー・デバイスからターゲットまたはオブジェクト上の特定の場所までの物理的距離を判定することができる。
【0019】
[0029] 他の実施形態例によれば、例えば、散乱光パルス撮像を含む種々の技法によって、経時的な光の反射ビームの強度を分析することによって、飛行時間分析を使って、キャプチャー・デバイス20からターゲットまたはオブジェクト上の特定の場所までの物理的距離を間接的に判定することができる。
【0020】
[0030] 他の実施形態例によれば、キャプチャー・デバイス20は、構造化光を使って深度情報を取り込むことができる。このような分析では、パターン光(即ち、格子パターン、縞パターンのような既知のパターンとして表示される光)を、例えば、IR発光コンポーネント24によってシーンに向けて投射する。シーンにおいて1つ以上のターゲットまたはオブジェクトの表面に衝突したときに、それに応答して、パターンが変形する可能性がある。このようなパターンの変形を、例えば、3Dカメラ26および/またはRGBカメラ28によって取り込むことができ、次いで分析して、キャプチャー・デバイスからターゲットまたはオブジェクト上における特定の場所までの物理的距離を判定することができる。
【0021】
[0031] 他の実施形態によれば、キャプチャー・デバイス20は、2つ以上の物理的に分離されたカメラを含むことができ、これらが異なる角度からのシーンを捕らえて、視覚的な立体像を得て、これを解明することによって深度情報を発生することができる。
【0022】
[0032] キャプチャー・デバイス20は、更に、マイクロフォン30を含むことができる。マイクロフォン30は、音響を受信し電気信号に変換するトランスデューサまたはセンサを含むことができる。一実施形態によれば、マイクロフォン30を使うと、ターゲット認識、分析、および追跡システム10においてキャプチャー・デバイス20と計算環境12との間におけるフィードバックを低減することができる。加えて、マイクロフォン30を使うと、ユーザーによって供給することもできるオーディオ信号を受信し、計算環境12において実行することができるゲーム・アプリケーション、ゲーム以外のアプリケーション等のようなアプリケーションを制御することができる。
【0023】
[0033] 一実施形態例では、キャプチャー・デバイス20は、更に、画像カメラ・コンポーネント22と動作的に通信することができるプロセッサー32を含むことができる。プロセッサー32は、標準化されたプロセッサー、特殊化されたプロセッサー、マイクロプロセッサー等を含むことができ、例えば、ユーザーの生のモーションを取り込む命令、予め記録されているモーションを受け取る命令、生のモーションを仮想オブジェクトの第1部分に適用し、予め記録されているモーションを仮想オブジェクトの第2部分に適用する命令、あるいは任意の他の適した命令を実行することができる。これについては、以下で更に詳しく説明する。
【0024】
[0034] 更に、キャプチャー・デバイス20は、メモリー・コンポーネント34を含むことができる。メモリー・コンポーネント34は、プロセッサー32によって実行することができる命令、3DカメラまたはRGBカメラによって取り込まれた画像またはフレーム、あるいは任意の他の適した情報、画像等を格納することができる。一実施形態例によれば、メモリー・コンポーネント34は、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)、キャッシュ、フラッシュ・メモリー、ハード・ディスク、または任意の他の適した記憶コンポーネントを含むことができる。図2に示すように、一実施形態では、メモリー・コンポーネント34は、画像キャプチャー・コンポーネント22およびプロセッサー32と通信する別のコンポーネントとすることができる。他の実施形態によれば、メモリー・コンポーネント34をプロセッサー32および/または画像キャプチャー・コンポーネント22に統合してもよい。
【0025】
[0035] 図2に示すように、キャプチャー・デバイス20は、通信リンク36を通して、計算環境12と通信状態に置くことができる。通信リンク36は、例えば、USB接続、Firewire接続、イーサネット・ケーブル接続等を含む有線接続、および/またはワイヤレス802.11b、g、a、またはn接続のようなワイヤレス接続とすることができる。一実施形態によれば、計算環境12は、クロックをキャプチャー・デバイス20に供給することができ、通信リンク36を通して、例えば、いつシーンを取り込むか判断するために、このクロックを使うことができる。
【0026】
[0036] 加えて、キャプチャー・デバイス20は、例えば、3Dカメラ26および/またはRGBカメラ28によって取り込まれた深度情報および画像、および/またはキャプチャー・デバイス20によって生成することができるスケルトン・モデルを、計算環境12に通信リンク36を通して供給することができる。次いで、計算環境12は、このモデル、深度情報、および取り込まれた画像を使って、例えば、ゲームまたはワード・プロセッサーのようなアプリケーションを制御すること、および/または画面上のキャラクター、アバター、画面上のオブジェクト等のような仮想キャラクターを動画化することができる。例えば、図2に示すように、計算環境12は、ジェスチャー・ライブラリー190を含むことができる。ジェスチャー・ライブラリー190は、ジェスチャー・フィルターの集合体を含むことができ、各集合体は、(ユーザーが動くに連れて)スケルトン・モデルによって実行することができるジェスチャーに関する情報を含む。カメラ26、28およびキャプチャー・デバイス20によって取り込まれたスケルトン・モデルの形態のデーター、およびそれと関連付けられた動きを、ジェスチャー・ライブラリー190の中にあるジェスチャー・フィルターと比較して、いつユーザー(スケルトン・モデルによって表現される)が1つ以上のジェスチャーを行ったのか特定することができる。これらのジェスチャーは、アプリケーションの種々の制御と関連付けることができる。つまり、計算環境12は、ジェスチャー・ライブラリー190を使って、スケルトン・モデルの動きを解釈し、その動きに基づいてアプリケーションを制御することができる。
【0027】
[0037] 図3は、ターゲット認識、分析、および追跡システムにおいて1つ以上のジェスチャーを解釈するため、および/またはターゲット認識、分析、および追跡システムによって表示された、アバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターを動画化するために使うことができる計算環境の一実施形態例を示す。図1Aから図2に関して先に説明した計算環境12のような計算環境は、ゲーミング・コンソールのような、マルチメディア・コンソール100とするとよい。図3に示すように、マルチメディア・コンソール100は、レベル1キャッシュ102、レベル2キャッシュ104、およびフラッシュROM(リード・オンリー・メモリー)106を有する中央処理ユニット(CPU)101を有する。レベル1キャッシュ102およびレベル2キャッシュ104は、一時的にデーターを格納し、こうしてメモリー・アクセス・サイクルの回数を減らすことによって、処理速度およびスループットを向上させる。CPU101は、1つよりも多いコア、つまり、追加のレベル1およびレベル2キャッシュ102および104を有して設けることもできる。フラッシュROM106は、実行可能コードを格納することができる。実行可能コードは、マルチメディア・コンソール100の電源をオンにしたときに、ブート・プロセスの初期段階中にロードされる。
【0028】
[0038] グラフィクス処理ユニット(GPU)108およびビデオ・エンコーダー/ビデオ・コデック(コーダー/デコーダー)114が、高速および高分解能グラフィクス処理のためにビデオ処理パイプラインを形成する。データーは、バスを通して、グラフィクス処理ユニット108からビデオ・エンコーダー/ビデオ・コデック114に伝達される。ビデオ処理パイプラインは、テレビジョンまたは他のディスプレイに送信するために、データーをA/V(オーディオ/ビデオ)ポート140に出力する。メモリー・コントローラー110がGPU108に接続されており、限定ではなく、RAM(ランダム・アクセス・メモリー)のような、種々のタイプのメモリー112にプロセッサーがアクセスし易くしている。
【0029】
[0039] マルチメディア・コンソール100は、I/Oコントローラー120、システム管理コントローラー122、オーディオ処理ユニット123、ネットワーク・インターフェース・コントローラー124、第1USBホスト・コントローラー126、第2USBコントローラー128、およびフロント・パネルI/Oサブアセンブリ130を含む。好ましくは、これらをモジュール118に実装する。USBコントローラー126および128は、周辺コントローラー142(1)〜142(2)、ワイヤレス・アダプター148、および外部メモリー・デバイス146(例えば、フラッシュ・メモリー、外部CD/DVD ROMドライブ、リムーバブル媒体等)のためのホストとしての役割を果たす。ネットワーク・インターフェース124および/またはワイヤレス・アダプター148は、ネットワーク(例えば、インターネット、ホーム・ネットワーク等)へのアクセスを与え、イーサネット・カード、モデム、Bluetoothモジュール、ケーブル・モデム等を含む広範囲の種々の有線またはワイヤレス・アダプター・コンポーネントのうち任意のものとすることができる。
【0030】
[0040] システム・メモリー143は、ブート・プロセスの間にロードされるアプリケーション・データーを格納するために設けられている。メディア・ドライブ144が設けられており、DVD/CDドライブ、ハード・ドライブ、またはその他のリムーバブル・メディア・ドライブ等を備えることができる。メディア・ドライブ144は、マルチメディア・コンソール100の内部にあっても外部にあってもよい。アプリエーション・データーは、実行、再生等のためにマルチメディア・コンソール100によってメディア・ドライブ144を通してアクセスすることができる。メディア・ドライブ144は、シリアルATAバスまたはその他の高速接続(例えば、IEEE1394)のようなバスを通して、I/Oコントローラー120に接続されている。
【0031】
[0041] システム管理コントローラー122は、メディア・コンソール100の利用可能性を確保することに関する種々のサービス機能を提供する。オーディオ処理ユニット123およびオーディオ・コデック132は、高忠実度およびステレオ処理を行う、対応のオーディオ処理パイプラインを形成する。オーディオ・データーは、通信リンクを通して、オーディオ処理ユニット123とオーディオ・コデック132との間で伝達される。オーディオ処理パイプラインは、外部オーディオ・プレーヤーまたはオーディオ処理能力を有するデバイスによる再生のために、データーをA/Vポート140に出力する。
【0032】
[0042] フロント・パネルI/Oサブアセンブリ130は、電力ボタン150およびイジェクト・ボタン152の機能をサポートするだけでなく、マルチメディア・コンソール100の外面上に露出する任意のLED(発光ダイオード)またはその他のインディケーターもサポートする。システム電源モジュール136が、マルチメディア・コンソール100のコンポーネントに電力を供給する。ファン138は、マルチメディア・コンソール100内部にある回路を冷却する。
【0033】
[0043] CPU101、GPU108、メモリー・コントローラー110、およびマルチメディア・コンソール100内部にある種々のその他のコンポーネントは、1系統以上のバスを通して相互接続されている。これらのバスには、シリアルおよびパラレル・バス、メモリー・バス、周辺バス、および種々のバス・アーキテクチャーのうち任意のものを使うプロセッサー・バスまたはローカル・バスが含まれる。一例として、このようなアーキテクチャーは、ペリフェラル・コンポーネント相互接続(PCI)バス、PCI−Expressバス等を含むことができる。
【0034】
[0044] マルチメディア・コンソール100の電源をオンにすると、システム・メモリー143からメモリー112および/またはキャッシュ102、104にアプリケーション・データーをロードし、CPU101において実行することができる。アプリケーションは、グラフィカル・ユーザー・インターフェースを提示することができる。グラフィカル・ユーザー・インターフェースは、マルチメディア・コンソール100において利用可能な異なるタイプのメディアにナビゲートするときに、一貫性のあるユーザー体験を提供する。動作において、アプリケーションおよび/またはメディア・ドライブ144に含まれている他のメディアをメディア・ドライブ144から起動または再生して、マルチメディア・コンソール100に追加の機能を設けることもできる。
【0035】
[0045] マルチメディア・コンソール100は、単にシステムをテレビジョンまたはその他のディスプレイに接続することによって、スタンドアロン・システムとして動作させることができる。この単独モードでは、マルチメディア・コンソール100は、一人以上のユーザーがシステムと相互作用を行い、ムービーを見ること、または音楽を聞くことを可能にする。しかしながら、ネットワーク・インターフェース124またはワイヤレス・アダプター148によって利用可能となるブロードバンド接続機能を統合することにより、マルチメディア・コンソール100を更に大きなネットワーク・コミュニティにおける一員(participant)として動作させることもできる。
【0036】
[0046] マルチメディア・コンソール100の電源をオンにすると、マルチメディア・コンソールのオペレーティング・システムによって、設定されている量のハードウェア・リソースがシステムの使用のために確保される。これらのリソースは、メモリー(例えば、16MB)、CPUおよびGPUサイクル(例えば、5%)、ネットワーキング帯域幅(例えば、8kbs)等の確保を含むことができる。これらのリソースは、システムのブート時に確保されるので、確保されたリソースは、アプリケーションの視点からは存在しない。
【0037】
[0047] 特に、メモリーの確保は、起動カーネル、コンカレント・システム・アプリケーション、およびドライバーを含めるのに十分大きいことが好ましい。サーブされたCPUの使用がそのシステム・アプリケーションによって用いられない場合、アイドル状態にあるスレッドが未使用サイクルのうち任意のものを消費するように、CPUの確保を一定レベルに維持することが好ましい。
【0038】
[0048] GPUの確保に関して、GPU割り込みを使うことによって、システム・アプリケーション(例えば、ポップアップ)によって発生される軽量メッセージを表示して、ポップアップをオーバーレイにレンダリングするコードをスケジューリングする。オーバーレイに用いられるメモリー量は、オーバーレイのエリア・サイズに依存し、オーバーレイは画面の解像度と共にスケーリングする(scale)ことが好ましい。コンカレント・システム・アプリケーションによってフル・ユーザー・インターフェースが用いられる場合、アプリケーションの解像度とは独立した解像度を使うことが好ましい。周波数を変更しTVの同期を取り直す必要性をなくすように、スケーラーを使ってこの解像度を設定するとよい。
【0039】
[0049] マルチメディア・コンソール100がブートして、システム・リソースを確保した後、コンカレント・システム・アプリケーションが実行してシステム機能を提供する。システム機能は、前述の確保したシステム・リソースの内部で実行する1組のシステム・アプリケーションの中にカプセル化されている。オペレーティング・システム・カーネルは、システム・アプリケーション・スレッドと、ゲーミング・アプリケーション・スレッドとの間でスレッドを識別する。一貫したシステム・リソース・ビューをアプリケーションに提供するために、システム・アプリケーションは、所定の時点および間隔でCPU101において実行するようにスケジューリングされていることが好ましい。このスケジューリングは、コンソールにおいて実行しているゲーミング・アプリケーションに対するキャッシュの分裂(disruption)を最少に抑えるためにある。
【0040】
[0050] コンカレント・システム・アプリケーションがオーディオを必要とする場合、時間に敏感であるため、オーディオ処理を非同期にゲーミング・アプリケーションにスケジューリングする。マルチメディア・コンソール・アプリケーション・マネージャー(以下で説明する)は、システム・アプリケーションがアクティブのとき、ゲーミング・アプリケーションのオーディオ・レベル(例えば、無音化、減衰)を制御する。
【0041】
[0051] 入力デバイス(例えば、コントローラー142(1)および142(2))は、ゲーミング・アプリケーションおよびシステム・アプリケーションによって共有される。入力デバイスは、確保されたリソースではないが、システム・アプリケーションとマルチメディア・アプリケーションとの間で切り換えられて、各々がそのデバイスのフォーカス(a focus of the device)を有するようにする。アプリケーション・マネージャは、好ましくは、マルチメディア・アプリケーションの知識を用いずに入力ストリームの切換を制御し、ドライバーはフォーカス・スイッチ(focus switches)に関する状態情報を維持する。カメラ26、28およびキャプチャー・デバイス20は、コンソール100のための追加の入力デバイスを定めることができる。
【0042】
[0052] 図4は、ターゲット認識、分析、および追跡システムにおいて1つ以上のジェスチャーを解釈するため、および/またはターゲット認識、分析、および追跡システムによって表示された、アバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターを動画化するために用いられる、図1Aから図2に示した計算環境12の他の実施形態例を示す。計算システム環境220は、適した計算環境の一例に過ぎず、本明細書において開示される主題の使用範囲または機能に関して、いかなる限定をも示唆する意図はない。また、計算環境220が、本明細書において例示されるいずれの1つのコンポーネントまたはコンポーネントの組み合わせに関して何らかの依存性または要件を有するように解釈してはならない。実施形態によっては、図示する種々の計算エレメントが、本開示の特定の態様をインスタンス化するように構成されている回路を含むこともあり得る。例えば、本開示において用いられる回路という用語は、ファームウェアまたはスイッチによって機能(1つまたは複数)を実行するように構成されている特殊ハードウェア・コンポーネントを含むことができる。別の実施形態例では、回路という用語は、機能(1つまたは複数)を実行するために動作可能なロジックを具現化するソフトウェア命令によって構成される汎用処理ユニット、メモリー等を含むことができる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、実装者(implementer)は、ロジックを具現化するソース・コードを書くことができ、ソース・コードを機械読み取り可能コードにコンパイルすることができ、この機械読み取り可能コードを汎用処理ユニットによって処理することができる。技術的現状では、ハードウェア、ソフトウェア、またはハードウェア/ソフトウェアの組み合わせの間には殆ど差がないというところまで発展していることを当業者は認めることができるので、特定の機能を実行するためにハードウェアまたはソフトウェアのどちらを選択するかということは、実装者に委ねられた設計選択事項である。更に具体的には、ソフトウェア・プロセスを等価のハードウェア構造に変換することができ、更にハードウェア構造自体を等価のソフトウェア・プロセスに変換することができることを、当業者は認めることができる。つまり、ハードウェアの実施態様およびソフトウェアの実施態様のどちらを選択するかということは、実装者に委ねられた設計選択事項の1つである。
【0043】
[0053] 図4において、計算環境220は、コンピューター241を含む。コンピューター241は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター241がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。システム・メモリー222は、リード・オンリー・メモリー(ROM)223およびランダム・アクセス・メモリー(RAM)260のような揮発性および/または不揮発性メモリーの形態で、コンピューター記憶媒体を含む。基本入出力システム224(BIOS)は、起動中のように、コンピューター241内のエレメント間におけるデーター転送を補助する基本的なルーチンを含み、通例ROM223内に格納されている。RAM260は、通例、処理ユニット259が直ちにアクセス可能であるデーターおよび/またはプログラム・モジュール、または現在これによって処理されているデーターおよび/またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図4は、オペレーティング・システム225、アプリケーション・プログラム226、その他のプログラム・モジュール227、およびプログラム・データー228を示す。
【0044】
[0054] また、コンピューター241は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例にすぎないが、図4は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ238、リムーバブル不揮発性磁気ディスク254からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ239、ならびにCD ROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク253からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ240を示す。動作環境の一例において使用可能なその他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ238は、通例、インターフェース234のような非リムーバブル・メモリー・インターフェースを介してシステム・バス221に接続され、磁気ディスク・ドライブ239および光ディスク・ドライブ240は、通例、インターフェース235のようなリムーバブル・メモリー・インターフェースによって、システム・バス221に接続する。
【0045】
[0055] 先に論じ図4に示すドライブおよびそれらに関連するコンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューター241のその他のデーターを格納する。図4では、例えば、ハード・ディスク・ドライブ238は、オペレーティング・システム258、アプリケーション・プログラム257、他のプログラム・モジュール256、およびプログラム・データー255を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム225、アプリケーション・プログラム226、他のプログラム・モジュール227、およびプログラム・データー228と同じでも異なっていても可能であることを注記しておく。オペレーティング・システム258、アプリケーション・プログラム257、他のプログラム・モジュール256、およびプログラム・データー255は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザーは、キーボード251、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス252のような入力デバイスによって、コマンドおよび情報をコンピューター241に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザー入力インターフェース236を介して、処理ユニット259に接続されている。ユーザー入力インターフェース236は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)によって接続することも可能である。カメラ26、28およびキャプチャー・デバイス20は、コンソール100の追加入力デバイスを定めることができる。モニター242またはその他のタイプの表示装置も、ビデオ・インターフェース232のようなインターフェースを介して、システム・バス221に接続されている。モニターに加えて、コンピューターは、スピーカー244およびプリンター243のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース233を通して接続することができる。
【0046】
[0056] コンピューター241は、リモート・コンピューター246のような1つ以上のリモート・コンピューターへの論理接続を使って、ネットワーク環境において動作することも可能である。リモート・コンピューター246は、パーソナル・コンピューター、サーバー、ルータ、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピューター241に関して先に説明したエレメントの多くまたは全てを含むが、図4にはメモリー記憶装置247のみを示す。図4に示す論理接続は、ローカル・エリア・ネットワーク(LAN)245およびワイド・エリア・ネットワーク(WAN)249を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネットおよびインターネットにおいては一般的である。
【0047】
[0057] LANネットワーク環境で使う場合、コンピューター241は、ネットワーク・インターフェースまたはアダプター237を介してLAN245に接続する。WANネットワーク環境で使う場合、コンピューター241は、通例、モデム250、またはインターネットのようなWAN249を通して通信を設定するその他の手段を含む。モデム250は、内蔵でも外付けでもよく、ユーザー入力インターフェース236またはその他の適切な機構を介してシステム・バス221に接続することができる。ネットワーク環境では、コンピューター241に関係付けて図示したプログラム・モジュール、またはその一部は、リモート・メモリー記憶装置に格納することもできる。一例として、そして限定ではなく、図4は、リモート・アプリケーション・プログラム248がメモリー・デバイス247に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを設定する他の手段も使用可能であることは認められよう。
【0048】
[0058] 図5は、アニメーションを混合するする方法例300の流れ図を示す。方法例300は、例えば、図1Aから図4に関して説明したターゲット認識、分析、および追跡システム10のキャプチャー・デバイス20および/または計算環境12を使って実現することができる。一実施形態例では、方法例300は、プログラム・コード(即ち、命令)の形態を取ることができ、例えば、図1Aから図4に関して説明したターゲット認識、分析、および追跡システム10のキャプチャー・デバイス20および/または計算環境12によって実行することができる。
【0049】
[0059] 一実施形態によれば、305において、画像を受け取ることができる。例えば、ターゲット認識、分析、および追跡システムは、図1Aから図2に関して先に説明したキャプチャー・デバイス20のような、キャプチャー・デバイスを含むことができる。キャプチャー・デバイスは、1つ以上のターゲットを含むこともあるシーンを取り込むまたは観察することができる。一実施形態例では、キャプチャー・デバイスは、飛行時間分析、構造化光分析、ステレオ映像分析等のような任意の適した技法を使って、RGB画像、深度画像等のような画像を入手するように構成されている深度カメラとするとよい。
【0050】
[0060] 例えば、一実施形態では、画像は深度画像を含むことができる。深度画像は、複数の被観察画素とすることができ、各被観察画像は、被観察深度値を有する。例えば、深度画像は、取り込まれたシーンの二次元(2D)画素エリアを含むことができ、2D画素エリアにおける各画層は、キャプチャー・デバイスから取り込まれたシーンにおけるオブジェクトの、例えば、センチメートル、ミリメートル等を単位とする長さまたは距離というような深度値を表すことができる。
【0051】
[0061] 図6は、305において受け取ることができる深度画像400の一実施形態例を示す。一実施形態例によれば、深度画像400は、例えば、図2に関して先に説明したキャプチャー・デバイス20の3Dカメラ26および/またはRGBカメラ28によって取り込まれたシーンの画像またはフレームとすることができる。図6に示すように、深度画像400は、例えば、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーに対応するヒト・ターゲット402と、取り込まれたシーンの中にある壁、テーブル、モニター等のような1つ以上の非ヒト・ターゲット404とを含むことができる。前述のように、深度画像400は、複数の被観察画素を含むことができ、各被観察画素には、観察された深度値が関連付けられている。例えば、深度画像400は、取り込まれたシーンの二次元(2D)画素エリアを含むことができ、この2D画素エリアの中にある各画素は、キャプチャー・デバイスからの取り込まれたシーンの中にあるターゲットまたはオブジェクトの、例えば、センチメートル、ミリメートル等を単位とする長さまたは距離のような深度値を表すことができる。一実施形態では、当該深度画像400の画素の異なる色が、キャプチャー・デバイスからのヒト・ターゲット402および非ヒト・ターゲット404の異なる距離に対応するように、および/または視覚的に描画するように、深度画像400に着色することもできる。例えば、一実施形態によれば、キャプチャー・デバイスに最も近いターゲットと関連付けられた画素には、深度画像では赤および/またはオレンジ色の濃淡で着色することができ、一方離れたターゲットと関連付けられた画素には、深度画像において緑および/または青の濃淡で着色することができる。
【0052】
[0062] 再び図5を参照すると、一実施形態では、305において画像を受け取ったときに、この画像を更に低い処理分解能にダウンサンプルして、深度画像を一層使いやすくすること、および/または計算オーバーヘッドを減らして、更に素早く処理できるようにすることもできる。加えて、1つ以上の高分散および/またはノイズの多い深度値を深度画像から除去すること、および/または平滑化することもできる。失われた深度情報および/または除去した深度情報の部分は、補充することおよび/または再生することができ、および/またはスケルトン・モデルのようなモデルを生成するために深度情報を使うことができるように、受け取った深度情報に対して任意の他の適した処理を実行することもできる。これについては、以下で更に詳しく説明する。
【0053】
[0063] 310において、画像におけるユーザーのモデルを生成することができる。例えば、画像を受け取ったとき、ターゲット認識、分析、および追跡システムは、深度画像の中にある各ターゲットまたはオブジェクトを塗りつぶし(flood filling)、塗りつぶした各ターゲットまたはオブジェクトを、種々の位置またはポーズのヒトの体モデルと関連付けられたパターンと比較することによって、例えば、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーに対応する、図6に関して先に説明したヒト・ターゲット402のようなヒト・ターゲットが深度画像に含むか否か判断することができる。塗りつぶされたターゲットまたはオブジェクトがパターンと一致した場合、これを分離し、走査して、例えば、種々の体部分の測定値を含む値を判定することができる。一実施形態例によれば、次いで、走査に基づいて、スケルトン・モデル、メッシュ・モデル等のようなモデルを生成することができる。例えば、一実施形態によれば、走査によって決定することができる測定値を、1つ以上のデーター構造に格納することができ、このデーター構造は、モデルにおける1つ以上の関節を定めるために使うことができる。1つ以上の関節は、ヒトの体部分に対応することができる1つ以上の骨を定めるために使うことができる。
【0054】
[0064] 図7は、310にいてユーザーについて生成することができるモデル500の一実施形態例を示す。一実施形態例によれば、モデル500は、1つ以上のデーター構造を含むことができ、このデーター構造は、例えば、図6に関して先に説明した深度画像400におけるヒト・ターゲット402のような、深度画像におけるユーザーと関連付けられたヒト・ターゲットの三次元モデルを表すことができる。一実施形態では、ユーザーと関連付けられたヒト・ターゲットの各体部分は、モデル500の関節および骨を定める数学的ベクトルとして特徴付けることができる。
【0055】
[0065] 図7に示すように、モデル500は、1つ以上の関節j1〜j18を含むことができる。一実施形態例によれば、関節j1〜j18の各々は、それらの間に定められる1つ以上の体部分が、互いに対してまたは他の1つ以上の体部分に対して動くことを可能にする。例えば、ヒト・ターゲットを表すモデルは、複数の剛体の体部分および/または変形可能な体部分を含むことができ、これらの体部分は、「骨」のような1つ以上の構造的部材と、隣接する骨の交点に位置する関節j1〜j18とによって定めることができる。関節j1〜j18は、骨および関節j1〜j18と関連付けられている種々の体部分が、互いに独立して動くことを可能にすることができる。例えば、図7に示す関節j7およびj11間に定められている骨は、前腕に対応することができ、この前腕は、例えば、ふくらはぎに対応することができる関節j15およびj17間に定められている骨とは独立して動かすことができる。
【0056】
[0066] 前述のように、体部分の各々は、図7に示す関節および骨を定める、X値、Y値、およびZ値を有する数学的ベクトルとして特徴付けることができる。一実施形態例では、図7に示す、骨と関連付けられたベクトルの交点は、関節j1〜j18と関連付けられたそれぞれのポイントを定めることができる。
【0057】
[0067] 再度図5を参照すると、315において、ユーザーと関連付けられたモデルのリアル・タイムのモーション、即ち、生のモーションを取り込むことができる。例えば、モデルを追跡して、ユーザーのモーションを真似するように、モデルを調節するまたは動かすことができる。このようなユーザーと関連付けられたモデルの調節またはモーションは、リアル・タイムで取り込むことができる。加えて、このような調節またはモーションは、アバター、画面上のキャラクター、画面上のオブジェクト等のような、仮想キャラクターに適用することもできる。これについては、以下で更に詳しく説明する。
[0068] 一実施形態によれば、図7に関して先に説明したモデル500のようなモデルは、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーの一表現とするとよい。ターゲット認識、分析、および追跡システムは、ユーザー18からの動きを観察するまたは取り込むことができ、その動きを使ってモデル500を調節するまたは動かして、315においてモデル500の調節またはモーションを取り込むことができるようにする。
【0058】
[0069] 例えば、図1Aから図2に関して先に説明したキャプチャー・デバイス20のようなキャプチャー・デバイスは、シーンの深度画像、RGB画像のような複数の画像を観察するまたは取り込むことができ、モデルを調節するために使うことができる。一実施形態によれば、画像の各々は、定められた頻度に基づいて観察するまたは取り込むことができる。例えば、キャプチャー・デバイスは、シーンの新たな画像を、ミリ秒毎、マイクロ秒毎等で観察するまたは取り込むことができる。
【0059】
[0070] 画像の各々を受け取ると、個々の画像と関連付けられた情報を、モデルと関連付けられた情報と比較して、ユーザーが動きを行った可能性があるか否か判断することができる。例えば、一実施形態では、合成深度画像のような合成画像に、モデルをラスタライズ (rasterize)することができる。合成画像における画素を、受け取った画像の各々におけるヒト・ターゲットと関連付けられた画素と比較して、受け取った画像におけるヒト・ターゲットが動いたか否か判断することができる。
【0060】
[0071] 一実施形態例によれば、合成画像と受け取った画像との間における画素の比較に基づいて、1つ以上の力ベクトル(force vector)を計算することができる。次いで、モデルの関節のような1つ以上の力を受ける態様に、1つ以上の力を加えてまたはマッピングして、実空間にいるヒト・ターゲットまたはユーザーのポーズに一層密接に対応するポーズに、モデルを調節するまたは動かすことができる。
【0061】
[0072] 被追跡モデルの調節またはモーションを、次に315において取り込むことができる。一実施形態では、被追跡モデルの調節またはモーションを、モーション・キャプチャー・ファイルに記録することができる。例えば、ターゲット認識、分析、および追跡システムは、手を振るモーション、ゴルフのスイングのような振り回すモーション、パンチを打つモーション、歩くモーション、走るモーション等のような、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーに特定の1つ以上のモーションを含むことができるモーション・キャプチャー・ファイルをレンダリングおよび格納することができる。一実施形態によれば、モーション・キャプチャー・ファイルは、被追跡モデルと関連付けられたX、Y、Z値を含むベクトルのような情報に基づいてリアル・タイムで生成することができ、モデルに適用することができる、ユーザーによって行われる動きの1つ以上のフレームを含むことができる。更に、モーション・キャプチャー・ファイルにおけるモデルのモーションは、アバター、画面上オブジェクト、画面上キャラクター等のような仮想キャラクターに、リアル・タイムで、または生で適用することもできる。加えて、モーション・キャプチャー・ファイルにおけるモデルのモーションは、モーション・キャプチャー・ファイルを仮想オブジェクトまたはキャラクターに今後の時点において適用することができるように、格納するまたは予め記録しておくこともできる。これについては、以下で更に詳しく説明する。
【0062】
[0073] 図8Aおよび図8Bは、モーション・キャプチャー・ファイル内に種々の時点において取り込むことができる、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーと関連付けられたモデル500の一実施形態例を示す。図8Aおよび図8Bに示すように、図7に関して先に説明したモデル500は、前述のように種々の時点におけるユーザーの動きに基づいて、調節するまたは動かすことができる。例えば、図8Aに示すように、モデル500の関節j3、j7、およびj11、ならびにそれらの間に定められる骨は、ユーザーが彼または彼女の右前腕を上げたときに、例えば、前述のように1つ以上の力ベクトルを関節j3、j7、およびj11に適用することによって、ポーズ502を表すように、調節するまたは動かすことができる。図8Aに示すようにユーザーが彼または彼女の右前腕を上げた後、ユーザー18のようなユーザーは、次に彼または彼女の左前腕を上げることができる。図8Bに示すように、モデル500を次にポーズ502からポーズ504に調節して、ユーザーが彼または彼女の左前腕を上げたときに、例えば、前述のように1つ以上の力ベクトルを関節j4、j8、およびj12に適用することによって、モデル500の関節j4、j8、およびj12ならびにそれらの間に定められている骨を調節するまたは動かすことができるようにする。図8Aおよび図8Bにおいてポーズ502および504によって示されるように、モデル500に適用することができる調節またはモーションは、前述のように、モーション・キャプチャー・ファイルのそれぞれのフレームに、315において取り込むことができる。
【0063】
[0074] 再度図5を参照すると、予め記録されているモーションを320において受け取ることができる。例えば、ターゲット認識、分析、および追跡システムは、画面上ゲーム・キャラクター、アバター、画面上オブジェクト等のような仮想キャラクターについて予め記録されているモーションを受け取ることができる。一実施形態では、予め記録されているモーションは、アプリケーション開発者によって作成された仮想キャラクターまたはオブジェクトのためにアーティストが制作した仮想キャラクターまたはオブジェクト、および/またはアプリケーション開発者によって作成された入力デバイス制御のアニメーションまたはモーション、ラグ・ドール(rag doll)のアニメーションまたはモーション等の、アーティストが制作したアニメーションまたはモーション・キャプチャー・ファイルとすることができる。他の実施形態によれば、予め記録されているモーションは、ターゲット認識、分析、および追跡システムのユーザーと関連付けられているモデルのモーション・キャプチャー・ファイルとすることができ、前述のように、今後の使用のために格納することもできる。
【0064】
[0075] 図9Aおよび図9Bは、種々の時点における、または320において予め記録されているアーティストが制作したモーションとして受け取ることができる種々のフレームにおける、ケンタウルのような仮想オブジェクトまたはキャラクターについてのキャラクター・モデル600の一実施形態例を示す。図9Aおよび図9Bに示すように、キャラクター・モデル600は1つ以上の関節j1’〜j20’を含むことができる。一実施形態では、関節j1’〜j20’の各々は、1つ以上の体部分を定めることができる。これらの体部分は、関節j1’〜j20’における1つ以上の他の体部分と関係付けて、またはこれらとは独立して動くことができ、仮想オブジェクトまたはキャラクターを動画化することができる。これについては、以下で更に詳しく説明する。
【0065】
[0076] 加えて、一実施形態例によれば、キャラクター・モデル600の関節j1’〜j20’の各々は、種々の時点において、または予め記録されているアーティスト制作アニメーションまたはモーション・キャプチャー・ファイルのそれぞれのフレームにおいて、予め記録されているアーティスト制作アニメーションまたはモーション・キャプチャー・ファイルの中に、対応するアニメーション・トラック(animation track)を有することもできる。例えば、図9Aに示すように、キャラクター・モデル600の関節j16’、j18’、およびj20’、ならびにそれらの間に定められた体部分は、各々、予め記録されているアーティスト制作アニメーションまたはモーション・キャプチャー・ファイルにおける第1時点または第1フレームにおいて、アニメーション・トラック(animation track)を有することができ、その結果、予め記録されているアーティスト制作アニメーションまたはモーション・ファイルにおけるキャラクター・モデル600のポーズ602が生ずることができる。次いで、関節j16’、j18’、およびj20’は、予め記録されているアーティスト制作アニメーションまたはモーション・ファイルにおけるキャラクター・モデル600の関節j16’、j18’、およびj20’についてのアニメーション・トラックの各々について、後続の第2時点または第2の後続フレームにおけるポーズ604を表すように調節することができる。
【0066】
[0077] 再度図5を参照すると、325において、モデルのモーション、および/または予め記録されているモーションを、仮想オブジェクトまたはキャラクターに適用することができる。例えば、ターゲット認識、分析、および追跡システムは、ユーザーの1つ以上のリアル・タイムまたは生のモーション、および/またはユーザーの予め記録されているモーションを、仮想オブジェクトまたはキャラクターの少なくとも一部にマッピングすることができ、この仮想オブジェクトまたはキャラクターを動画化して、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーによって行われる動きを真似させるようにすることができる。加えて、ターゲット認識、分析、および追跡システムは、1つ以上の予め記録されているアーティスト制作アニメーションまたはモーションおよび/または1つ以上の予め記録されているプログラム制御変換を、仮想オブジェクトまたはキャラクターの少なくとも一部にマッピングすることができ、この仮想オブジェクトまたはキャラクターを動画化して、予め記録されているアーティスト制作モーションおよび/または予め記録されているプログラム制御変換をまねるようにすることができる。
【0067】
[0078] 図10Aおよび図10Bは、325において適用された、ユーザーの生のモーションおよび/または予め記録されているモーションを有することができる、仮想キャラクター700の一実施形態例を示す。図10Aおよび図10Bに示すように、キャラクター700は、例えば、ゲーム・アプリケーションにおけるキャラクターとすることもできる、ケンタウルを含むことができる。一実施形態によれば、仮想キャラクター700は、ユーザーと関連付けられたモデルを追跡して得られた生のモーション、および予め記録されているアーティスト制作モーションのような、予め記録されているモーションを使って、325において動画化することができる。例えば、仮想キャラクター700の第1部分Aは、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーによって行われる生のモーションを使って動画化することができ、第2部分Bは、予め記録されているアーティスト制作モーションを使って動画化することができる。
【0068】
[0079] 一実施形態例によれば、図7から図8Bに関して先に説明したように、ユーザーと関連付けられたモデル500の関節j1〜j12を、仮想キャラクター700の第1部分Aにマッピングすることができ、図9Aおよび図9Bに関して先に説明したように、キャラクター・モデル600の関節j9’〜j20’を、仮想キャラクター700の第2部分Bにマッピングすることができ、ユーザーが行うことができる生のモーションを真似するように第1部分Aを動画化し、仮想キャラクター700と関連付けられたキャラクター・モデル600のようなキャラクター・モデルのアニメーションをまねるように、第2部分Bを動画化することができるようになる。例えば、図8Aおよび図8Bに示したモデル500の関節j4、j8、およびj12、ならびにその間に定められている骨を、仮想キャラクター700の左肩、左肘、および左手首、ならびにそれらの間に定められている対応する体部分にマッピングすることができ、図10Aおよび図10Bに示す仮想キャラクター700の第1部分Aが、ユーザーが彼または彼女の左腕を動かしている姿と関連付けられる、図8Aおよび図8Bに示した関節j4、j8、およびj12のポーズ502および504を真似することができるようになる。加えて、図9Aおよび図9Bに示したキャラクター・モデル600の関節j16’、j18’、およびj20’ならびにそれらの間に定められている骨を、仮想キャラクター700の前左臀部(front left hip)、前左膝、および前左踝、ならびにそれらの間に定められる対応する体部分にマッピングすることができ、図10Aおよび図10Bに示した仮想キャラクター700の第2部分Bが、左前足を伸ばしているケンタウルのモデルの図9Aおよび図9Bに示した関節j16’、j18’、およびj20’のポーズ602および604を真似することができるようになる。このように、一実施形態例によれば、仮想キャラクター700は、ユーザーと関連付けられたモデル500の生のモーションを、仮想キャラクターまたはオブジェクトと関連付けられたキャラクター・モデル600の予め記録されているモーションと混合して、含むことができる。
【0069】
[0080] 一実施形態では、生のモーションおよび予め記録されているモーションによって仮想キャラクター700を動画化するには、ターゲット認識、分析、および追跡システムは、仮想キャラクター700の第1部分Aに対応するキャラクター・モデル600の関節および/または体部分と関連付けられているアニメーションまたはモーションの追跡をディスエーブルすればよい。加えて、ターゲット認識、分析、および追跡システムは、仮想キャラクター700の第2部分Bに対応する、モーション・キャプチャー・ファイルにおけるモデル500の関節と関連付けられているアニメーションまたはモーションをディスエーブルしてもよい。ターゲット認識、分析、および追跡システムは、次いで、モーション・キャプチャー・ファイルの中にある、ユーザーと関連付けられているモデル500のアニメーションまたはモーションを、キャラクター・モデル600のアニメーションまたはモーション・トラックと混合して、ユーザーと関連付けられているモデル500のモーションによって、第1部分Aを動画化し、仮想キャラクター700と関連付けられているキャラクター・モデル500のアニメーションまたはモーションで、第2部分を動画化することができる。
【0070】
[0081] 例えば、ターゲット認識、分析、およびターゲット・システムは、キャラクター・モデル600の関節j1’〜j8’のアニメーションまたはモーション・トラック、ならびにユーザーと関連付けられているモデル500の関節j13〜j18のアニメーションまたはモーションをディスエーブルすることができる。次に、ターゲット認識、分析、およびターゲット・システムは、キャラクター・モデル600と、ユーザーと関連付けられているモデル500とのアニメーションおよびモーションを混合して、仮想キャラクター700の第1部分Aが、ユーザーによる動きを真似することができ、仮想キャラクター700の第2部分Bが、図10Aおよび図10Bに示すような、キャラクター・モデルの予め記録されているアニメーションまたはモーションを真似することができるようになる。
【0071】
[0082] 図11A〜図11Fは、325において、ユーザーの生のモーションおよび/または予め記録されているモーションが適用された仮想キャラクター800の他の実施形態例を示す。図11A〜図11Fに示すように、仮想キャラクター800は、例えば、ゲーム・アプリケーションにおけるキャラクターとしてもよいロボットを含むことができる。一実施形態によれば、仮想キャラクター800は、325において、ユーザーと関連付けられた被追跡モデルの生のモーション、および/またはユーザーと関連付けられたモデルの格納されているモーションまたはアーティストが制作した予め記録されているモーションというような、予め記録されているモーションを使って動画化することができる。例えば、仮想キャラクター800の第1部分A’は、図1Aおよび図1Bに関して先に説明したユーザー18のようなユーザーによって行われる生のモーションを使って動画化することができ、および/または第2部分B’は、モーション・キャプチャー・ファイルに予め記録されているユーザーのモーションまたはアーティストが制作した予め記録されているモーションを使って動画化することができる。
【0072】
[0083] 一実施形態によれば、生のおよび/または予め記録されているモーションあるいはアニメーションは、ユーザーから受けたジェスチャーに応答して、仮想キャラクター800に適用することができる。例えば、315において取り込むことができる、ユーザーと関連付けられたモデルのリアル・タイムまたは生のモーションが、325において、仮想キャラクター800の動きまたはアニメーションを制御するために使うことができるジェスチャーを含むことができる。
【0073】
[0084] 一実施形態例では、ユーザーと関連付けられているモデルを調節して、彼または彼女の左腕を上げているユーザーを真似して、そして315において取り込むことができるように、ユーザーが彼または彼女の左腕を上げることができる。例えば、図7から図8Bに関して先に説明したモデル500の関節j4、j8、およびj12は、ユーザーが彼または彼女の左腕を上げたことを反映するように調節することができる。次いで、ターゲット認識、分析、および追跡システムは、持ち上げられた左腕と関連付けられたジェスチャーを解釈し、ターゲット認識、分析、および追跡システムが、予め記録されているモーションまたは生のモーションを、仮想キャラクター800の第1部分A’のような少なくとも一部に適用することができ、ユーザーによって持ち上げられた左腕と関連付けられたジェスチャーに応答して、仮想キャラクター800の第1部分A’等のような少なくとも一部に適用されている、予め記録されているモーションまたは生のモーションから切り替えることができる。
【0074】
[0085] 例えば、一実施形態によれば、ユーザーが彼または彼女の左腕を上げたことに応答して、例えば、ユーザーと関連付けられているモデル500に行われた調節に基づいて仮想キャラクター800を動画化し、図11Bに示すように、ユーザーが彼または彼女の左腕を上げたという生のモーションを、例えば、仮想キャラクター800の第1部分A’に適用することができるようになる。即ち、ユーザーが彼または彼女の左腕を上げたことに応答して、ユーザーと関連付けられているモデル500の関節j4、j8、およびj12を、仮想キャラクター800の左腕にマッピングすることができ、仮想キャラクター800の第1部分A’を、ユーザーが彼または彼女の上半身によって行う生のモーションによって動画化することができるようになる。加えて、ユーザーによる彼または彼女の上半身のその後の動きも、仮想キャラクター800に適用することができる。例えば、ユーザーが彼または彼女の右前腕を上げると、ユーザーが彼または彼女の右前腕を上げた生のモーションを、モデル500の関節j7およびj11に適用することができる。これらの生のモーションは、次に、前述のように仮想キャラクター800に適用され、仮想キャラクター800が、図11Cに示すように、彼または彼女の左前腕を上げるように動画化させるまたは動かすことができるようになる。このように、一実施形態によれば、受け取ったジェスチャーに応答して、仮想キャラクター800の少なくとも一部を、ユーザーと関連付けられたモデル500に適用することができるユーザーの動きを真似するように動画化することができる。
【0075】
[0086] 同様に、ユーザーが彼または彼女の左足を上げると、ユーザーと関連付けられているモデルは、ユーザーが彼または彼女の左足を上げる動作を真似することができ、315においてこのモデルを取り込むことができるようになる。例えば、図7から図8Bに関して先に説明したモデル500の関節j14、j16、およびj18は、ユーザーが彼または彼女の左足を上げたことを反映するように調節することができる。ターゲット認識、分析、および追跡システムは、次に、上げられた左足と関連のあるジェスチャーを解釈することができ、ターゲット認識、分析、および追跡システムが、ユーザーによって上げられた左足と関連のあるジェスチャーに応答して、予め記録されているモーションまたは生のモーションを、仮想キャラクター800の第2部分B’のような少なくとも一部に適用することができ、仮想キャラクター800の第2部分B’のような少なくとも一部に適用されている、予め記録されているモーションまたは生のモーションから切り替えること等ができるようになる。
【0076】
[0087] 例えば、一実施形態によれば、ユーザーが彼または彼女の左足を上げたことに応答して、仮想キャラクター800の第2部分B’を、モーション・キャプチャー・ファイルに取り込まれているユーザーと関連付けられているモデル500の予め記録されている歩行運動、または図11Dから図11Fに示すような、アーティストが制作した歩行アニメーションというような、予め記録されている歩行運動を使って動画化することができる。即ち、ユーザーが彼または彼女の左足を上げたことに応答して、格納されているモーション・キャプチャー・ファイルの中にあるモデル500の関節j13〜j18を、仮想キャラクター800の右足および左足それぞれにマッピングすることができ、仮想キャラクター800の第2部分B’を、ユーザーが行った歩行運動を予め記録したものによって動画化することができる。あるいは、ユーザーが彼または彼女の左足を上げたことに応答して、キャラクター・モデルの関節および/または体部分を、仮想キャラクター800の右足および左足それぞれにマッピングすることができ、仮想キャラクター800の第2部分B’を、アーティストが制作して予め記録されている歩行運動によって動画化することができる。
【0077】
[0088] 一実施形態では、仮想キャラクター800に適用されるアニメーションを制御することができる後続のジェスチャーを受け取ることができるまで、ユーザーの生のモーションおよび/または予め記録されているモーションを、例えば、仮想キャラクター800の第1および第2部分A’およびB’に適用することができる。例えば、ユーザーが彼または彼女の右および左腕双方を上げるというような後続のジェスチャーを受け取ることができるまで、ユーザーの生のモーションを、仮想キャラクター800の第1部分A’に適用することができる。後続のジェスチャーを受け取ると、仮想キャラクター800の第1部分A’を静止させるか、あるいは、例えば、前述のモーション・キャプチャー・ファイルの中に予め記録されているユーザーのモーションまたはアーティストが生成し予め記録されているアニメーションというような、予め記録されているモーションを使って動画化されるように切り替えることができる。
【0078】
[0089] 一実施形態例によれば、ユーザーが彼または彼女の左手を上げたことに応答して、ユーザーが彼または彼女の上半身によって行った生のモーションを使って仮想キャラクター800の第1部分A’を動画化するには、ターゲット認識、分析、および追跡システムは、ユーザーの下半身と関連付けられているモデル500の関節j13〜j18のような、関節および/または体部分のアニメーションまたはモーションをディスエーブルすることができる。加えて、ユーザーが彼または彼女の左足を上げたことに応答して、予め記録されている歩行運動を使って仮想キャラクター800の第2部分B’を動画化するには、ターゲット認識、分析、および追跡システムは、仮想キャラクター800またはユーザーと関連付けられたキャラクター・モデルの上半身と関連付けられたキャラクター・モデルまたはモデル500の関節および/または体部分のアニメーションまたはモーションをディスエーブルすることができる。ターゲット認識、分析、および追跡システムは、次に、キャラクター・モデル600の予め記録されている歩行運動をイネーブルしこれと、ユーザーの上半身のイネーブルされている生のアニメーションまたはモーションを混合することができ、ユーザーが彼または彼女の左腕を上げたことに応答して、第1部分A’をユーザーの上半身の生のモーションを使って、図11Dから図11Fに示すような予め記録されている歩行運動によって動画化することができる。
【0079】
[0090] 加えて、一実施形態では、ユーザーが双方の腕を上げるというような後続のジェスチャーを受け取ったことに応答して、例えば、仮想キャラクター800の第1部分A’に適用されているユーザーの生のモーションを、予め記録されているモーションと切り替えることができ、ターゲット認識、分析、および追跡システムは、例えば、15〜20フレームのような所定数のフレームに渡って移り変わり(transition)を混合することができ、仮想キャラクターの第1部分A’が、生のモーションと予め記録されているモーションとの間で滑らかに移り変わることができるようにする。例えば、生のモーションにおけるモデル500の関節および/または体部分の各々を、15〜20フレームにわたる予め記録されているモーションにおける、対応する関節および/または体部分と混合することができる。このように、モーション・キャプチャー・ファイルにおける生のモーションの第1フレームにおけるモデル500の上半身と関連のある各関節を、予め記録されているモーションまたはアニメーションの第1フレームにおけるキャラクター・モデルの各対応する関節および/または体部分と混合することができる。次いで、生のモーションは、所定数のフレームの後に、徐々に消えて行き、仮想キャラクター800の第1部分A’が、予め記録されているモーションまたはアニメーションを使って動画化されるようにすることができる。
【0080】
[0091] 図12Aおよび図12Bは、ユーザーの生のモーションおよび/または325において適用されたプログラム制御変形を有することができるゲーム・キャラクター900の一実施形態例を示す。図12Aおよび図12Bに示すように、ゲーム・キャラクター900は、例えば、フットボール・ゲーム・アプリケーションにおけるキャラクターとしてもよい、フットボール・プレーヤーを含むことができる。一実施形態によれば、ゲーム・キャラクター900は、325において、ユーザーと関連付けられた被追跡モデルの生のモーション、および入力デバイスによって制御されるアニメーションまたはモーション、ラグ・ドール(rag doll)のアニメーションまたはモーション等のようなプログラム制御変換を使って動画化することができる。例えば、ゲーム・キャラクター900の腕906aおよび906bのような第1部分は、図1Aおよび図1Bに関して説明したユーザー18のようなユーザーが彼または彼女の腕によって行った生のモーションによって、制御または動画化することができる。一実施形態例によれば、図12Aおよび図12Bに示すゲーム・キャラクター900の残りの体部分の各々のような第2部分には、予め記録されているプログラム制御変形が適用されていてもよい。
【0081】
[0092] 一実施形態では、予め記録されているプログラム制御変形は、ゴール・ベース(goal based)アニメーションまたはモーションを含むことができる。このアニメーションまたはモーションは、物理的過程を使って、ゲーム・キャラクター900のようなゲーム・キャラクターがアプリケーションにおいてそのゴールに到達することを可能にすることができる。例えば、ゲーム・キャラクター900は、ワイド・レシーバーとすることができ、パスを捕球するために、フットボール・ゲーム・アプリケーションにおいて設けられているフットボール競技場において、特定の位置に到達して得点を得ることができる。この予め記録されているプログラム制御変形は、例えば、ゲーム・キャラクター900に自動的にその位置に到達させることができる物理的過程を使って、アニメーションまたはモーションを含むことができる。
【0082】
[0093] 加えて、他の実施形態例によれば、ゲーム・キャラクター900は、図12Aおよび図12Bに示すように、相手チームのゲーム・キャラクターによってタックルされてもよい。プログラム制御変形は、フットボール・ゲーム・アプリケーションにおいて所与の位置でゲーム・キャラクター900にタックルするように位置付けることができるラグ・ドールに基づいて、予め記録されているアニメーションまたはモーションを含むことができる。例えば、プログラム制御変形のモーションまたはアニメーションは、ゲーム・キャラクター900が、敵のプレーヤーの位置と関連付けられたラグ・ドールによってタックルされたと考えたときのゲーム・キャラクター900の反応に基づく物理的過程の計算に基づいて生成することができる、ラグ・ドールのアニメーションまたはモーションを含むことができる。
【0083】
[0094] このように、一実施形態では、腕906aおよび906bには、ユーザーの腕の生のモーションを適用することができ、ゲーム・キャラクター900の残りの体部分は、ゲーム・キャラクター900にタックルする敵のプレーヤーと関連付けられたラグ・ドールのアニメーションまたはモーションのプログラム制御変換によって動画化することができ、ユーザーは、図12Aおよび図12Bに示すように、捕球を行うように腕906aおよび906bを制御し続けることができ、体の残りの部分は、敵のプレーヤーによって実際にタックルされたプレーヤーと同様に反応することができる。
【0084】
[0095] このように、一実施形態例では、図5に示した325において、1つ以上の生のモーションまたはモーション・キャプチャー・ファイルに予め記録されているモーションに応答して、 画面上のキャラクターの視覚的外観を変化させることができる。例えば、ゲーミング・コンソールにおいて電子ゲームをプレーしている図1Aおよび図1Bに関して先に説明したユーザー18のようなゲーム・プレーヤーを、本明細書において記載したように、ゲーミング・コンソールによって追跡することができる。ゲーム・プレーヤーが腕を振ると、ゲーミング・コンソールはこのモーションを追跡し、次いでこの追跡したモーションに応答して、ユーザーと関連付けられているモデルを調節することができる。前述のように、被追跡モデルを更にモーション・キャプチャー・ファイルに取り込むこともできる。次いで、モーション・キャプチャー・ファイルを、例えば、画面上のキャラクターの上半身部分に適用することができ、ユーザーが彼らの腕を振る実際のモーションを真似るように、画面上のキャラクターを動画化することができるようになる。加えて、アーティストが生成した予め記録されているモーション、またはプログラム制御変換を、生のモーションまたはモーション・キャプチャー・ファイルに予め記録されているモーションと混合することもできる。例えば、実施形態例によれば、画面上のキャラクターは、例えば、ユーザーが彼または彼女の腕をリアル・タイムで、または生で振るのと全く同様に、ゲームにおいて、ゴルフ・クラブ、バットを振る、またはパンチを打つように動画化することができ、そして予め記録されている走行、歩行、あるいはバイクのモーションまたはアニメーションに取り込むことができるプロの競技者と同様に、画面上のキャラクターが走行する、歩行する、またはバイクに乗るように動画化することができる。
【0085】
[0096] 尚、本明細書において記載した構成および/または手法は、本質的に例示であること、そしてこれら具体的な実施形態または例を限定と見なしてはならないことは言うまでもない。本明細書において記載したこれら具体的なルーチンおよび方法は、任意の数の処理方策のうち1つ以上を表すことができる。したがって、例示した種々の動作(act)は、例示したシーケンスで、他のシーケンスで、並行して等で実行することができる。同様に、前述のプロセスの順序も変更することができる。
【0086】
[0097] 本開示の主題は、本明細書において開示した種々のプロセス、システムおよび構成、ならびに他の特徴、機能、動作、および/または特性のあらゆる新規でかつ非明示的なコンビネーションおよびサブコンビネーション、更にはそのいずれの均等物および全ての均等物も含むこととする。
【特許請求の範囲】
【請求項1】
モーションを混合するコンピューター実装方法であって、
ユーザーの生のモーションを取り込むステップ(315)と、
予め記録されたモーションを受け取るステップ(320)と、
前記生のモーションを仮想キャラクターの第1部分に適用し、前記予め記録されたモーションを前記仮想キャラクターの第2部分に適用するステップ(325)と、
を含む、コンピューター実装方法。
【請求項2】
請求項1記載のコンピューター実装方法であって、更に、
画像を受け取るステップ(305)であって、前記画像が、前記ユーザーと関連付けられたヒト・ターゲットを含む、ステップと、
前記受け取った画像における前記ヒト・ターゲットに基づいて、前記ユーザーのモデルを生成するステップ(310)と、
を含む、コンピューター実装方法。
【請求項3】
請求項2記載のコンピューター実装方法において、前記生のモーションを仮想キャラクターの第1部分に適用し、前記予め記録されたモーションを前記仮想キャラクターの第2部分に適用するステップ(325)が、更に、
前記仮想キャラクターの1つ以上の体部分を、前記ユーザーのモデルにおける1つ以上の関節にマッピングするステップと、
前記仮想キャラクターの1つ以上の体部分を、前記予め記録されたモーションと関連付けられたキャラクター・モデルの1つ以上の体部分にマッピングするステップと、
を含む、コンピューター実装方法。
【請求項4】
請求項3記載のコンピューター実装方法において、 前記生のモーションを仮想キャラクターの第1部分に適用し、前記予め記録されたモーションを前記仮想キャラクターの第2部分に適用するステップ(325)が、更に、
前記仮想キャラクターの前記第2部分における前記1つ以上の体部分に対応する前記ユーザーのモデルにおける1つ以上の関節をディスエーブルするステップと、
前記仮想キャラクターの前記第1部分における前記1つ以上の体部分に対応する前記予め記録されたモーションと関連付けられた前記キャラクター・モデルにおける1つ以上の関節をディスエーブルするステップと、
前記ユーザーのモデルにおける前記1つ以上の関節および前記キャラクター・モデルにおける前記1つ以上の関節をディスエーブルすることに応答して、前記ユーザーの前記調節したモデルと関連付けられた前記生のモーションを、前記キャラクター・モデルと関連付けられた前記予め記録されたモーションと混合するステップと、
前記仮想キャラクターの前記第1部分および前記第2部分を、前記混合された生のモーションおよび予め記録されたモーションを使って動画化するステップと、
を含む、コンピューター実装方法。
【請求項5】
請求項1記載のコンピューター実装方法であって、更に、前記ユーザーからジェスチャーを受け取るステップ(315)を含み、前記ジェスチャーが、アニメーションを前記仮想キャラクターに適用するコマンドと関連付けられた、コンピューター実装方法。
【請求項6】
請求項5記載のコンピューター実装方法において、前記生のモーションおよび前記予め記録されたモーションのうち少なくとも1つが、前記ユーザーからの前記ジェスチャーの受け取りに応答して、前記仮想キャラクターの前記第1および第2部分のそれぞれに適用される(325)、コンピューター実装方法。
【請求項7】
モーションを混合するためのコンピューター実行可能命令が格納されたコンピューター読み取り可能記憶媒体(34、110、143、222)であって、前記コンピューター実行可能命令が、
予め記録されたモーションを仮想キャラクター(700、800)に適用する命令と、
ユーザー(18)から第1ジェスチャーを受け取る命令と、
ユーザー(18)から生のモーションを取り込む命令と、
前記第1ジェスチャーを受け取ったことに応答して、前記仮想キャラクター(700、800)の少なくとも一部に、前記生のモーションを適用する命令と、
を含む、コンピューター読み取り可能記憶媒体。
【請求項8】
請求項7記載のコンピューター読み取り可能記憶媒体であって、更に、前記ユーザー(18)から第2ジェスチャーを受け取る命令を含む、コンピューター読み取り可能記憶媒体。
【請求項9】
請求項8記載のコンピューター読み取り可能記憶媒体であって、更に、前記第2ジェスチャーを受け取ったことに応答して、前記仮想キャラクター(700、800)の前記部分に、前記予め記録されたモーションを適用する命令を含む、コンピューター読み取り可能記憶媒体。
【請求項10】
請求項9記載のコンピューター読み取り可能記憶媒体において、前記第2ジェスチャーを受け取ったことに応答して、前記仮想キャラクター(700、800)の前記部分に、前記予め記録されたモーションを適用する命令が、更に、
所定数のフレームにわたって、前記ユーザー(18)の前記生のモーションを、前記予め記録されたモーションと混合する命令と、
前記所定数のフレームにわたって、前記混合された生のモーションおよび予め記録されたモーションにより、前記仮想キャラクター(800)を動画化する命令と、
前記所定数のフレームの後、前記予め記録されたモーションにより前記仮想キャラクター(800)を動画化する命令と、
を含む、コンピューター読み取り可能記憶媒体。
【請求項11】
モーションを混合するシステム(10)であって、
プロセッサー(32、101、259)を含み、該プロセッサー(32、101、259)が、コンピューター実行可能命令を実行し該コンピューター実行可能命令が、
ユーザー(18)の予め記録されたモーションおよび生のモーションを受け取る命令と、
仮想キャラクター(700)の1つ以上の体部分を、前記生のモーションと関連付けられた前記ユーザー(18)の第1モデル(500)における1つ以上の関節にマッピングする命令と、
前記仮想キャラクター(700)の1つ以上の体部分を、前記予め記録されたモーションと関連付けられた第2モデル(600)の1つ以上の体部分にマッピングする命令と、
前記予め記録されたモーションおよび前記生のモーションにより、前記仮想キャラクター(700)を動画化する命令と、
を含む、システム。
【請求項12】
請求項11記載のシステムにおいて、予め記録されたモーションが、前記ユーザー(18)の予め記録されたモーション、アーティストが制作したモーション、およびプログラム制御された変換のうち少なくとも1つを含む、システム。
【請求項13】
請求項11記載のシステムにおいて、前記予め記録されたモーションおよび前記生のモーションにより、前記仮想キャラクター(700)を動画化する命令が、更に、
前記仮想キャラクター(700)の第2部分における前記1つ以上の体部分に対応する、前記ユーザー(18)の前記第1モデル(500)における1つ以上の関節をディスエーブルする命令と、
前記仮想キャラクター(700)の第1部分における前記1つ以上の体部分に対応する前記予め記録されたモーションと関連付けられた、前記第2モデル(600)における1つ以上の関節をディスエーブルする命令と、
前記ユーザー(18)の前記第1モデル(500)における前記1つ以上の関節と、前記第2モデル(600)における前記1つ以上の関節とをディスエーブルしたことに応答して、前記ユーザー(18)の前記第1モデル(500)と関連付けられた前記生のモーションを、前記第2モデル(600)と関連付けられた前記予め記録されたモーションと混合する命令と、
前記混合した生のモーションおよび予め記録されたモーションにより、前記仮想キャラクター(700)の前記第1部分および前記第2部分を動画化する命令と、
を含む、システム。
【請求項14】
請求項11記載のシステムであって、更に、前記ユーザー(18)からジェスチャーを受け取る命令を含み、前記ジェスチャーが、アニメーションを前記仮想キャラクター(700)に適用するコマンドと関連付けられた、システム。
【請求項15】
請求項14記載のシステムにおいて、前記ユーザー(18)からの前記ジェスチャーを受け取ったことに応答して、前記仮想キャラクター(700)が、前記生のモーションおよび前記予め記録されたモーションにより動画化される、システム。
【請求項1】
モーションを混合するコンピューター実装方法であって、
ユーザーの生のモーションを取り込むステップ(315)と、
予め記録されたモーションを受け取るステップ(320)と、
前記生のモーションを仮想キャラクターの第1部分に適用し、前記予め記録されたモーションを前記仮想キャラクターの第2部分に適用するステップ(325)と、
を含む、コンピューター実装方法。
【請求項2】
請求項1記載のコンピューター実装方法であって、更に、
画像を受け取るステップ(305)であって、前記画像が、前記ユーザーと関連付けられたヒト・ターゲットを含む、ステップと、
前記受け取った画像における前記ヒト・ターゲットに基づいて、前記ユーザーのモデルを生成するステップ(310)と、
を含む、コンピューター実装方法。
【請求項3】
請求項2記載のコンピューター実装方法において、前記生のモーションを仮想キャラクターの第1部分に適用し、前記予め記録されたモーションを前記仮想キャラクターの第2部分に適用するステップ(325)が、更に、
前記仮想キャラクターの1つ以上の体部分を、前記ユーザーのモデルにおける1つ以上の関節にマッピングするステップと、
前記仮想キャラクターの1つ以上の体部分を、前記予め記録されたモーションと関連付けられたキャラクター・モデルの1つ以上の体部分にマッピングするステップと、
を含む、コンピューター実装方法。
【請求項4】
請求項3記載のコンピューター実装方法において、 前記生のモーションを仮想キャラクターの第1部分に適用し、前記予め記録されたモーションを前記仮想キャラクターの第2部分に適用するステップ(325)が、更に、
前記仮想キャラクターの前記第2部分における前記1つ以上の体部分に対応する前記ユーザーのモデルにおける1つ以上の関節をディスエーブルするステップと、
前記仮想キャラクターの前記第1部分における前記1つ以上の体部分に対応する前記予め記録されたモーションと関連付けられた前記キャラクター・モデルにおける1つ以上の関節をディスエーブルするステップと、
前記ユーザーのモデルにおける前記1つ以上の関節および前記キャラクター・モデルにおける前記1つ以上の関節をディスエーブルすることに応答して、前記ユーザーの前記調節したモデルと関連付けられた前記生のモーションを、前記キャラクター・モデルと関連付けられた前記予め記録されたモーションと混合するステップと、
前記仮想キャラクターの前記第1部分および前記第2部分を、前記混合された生のモーションおよび予め記録されたモーションを使って動画化するステップと、
を含む、コンピューター実装方法。
【請求項5】
請求項1記載のコンピューター実装方法であって、更に、前記ユーザーからジェスチャーを受け取るステップ(315)を含み、前記ジェスチャーが、アニメーションを前記仮想キャラクターに適用するコマンドと関連付けられた、コンピューター実装方法。
【請求項6】
請求項5記載のコンピューター実装方法において、前記生のモーションおよび前記予め記録されたモーションのうち少なくとも1つが、前記ユーザーからの前記ジェスチャーの受け取りに応答して、前記仮想キャラクターの前記第1および第2部分のそれぞれに適用される(325)、コンピューター実装方法。
【請求項7】
モーションを混合するためのコンピューター実行可能命令が格納されたコンピューター読み取り可能記憶媒体(34、110、143、222)であって、前記コンピューター実行可能命令が、
予め記録されたモーションを仮想キャラクター(700、800)に適用する命令と、
ユーザー(18)から第1ジェスチャーを受け取る命令と、
ユーザー(18)から生のモーションを取り込む命令と、
前記第1ジェスチャーを受け取ったことに応答して、前記仮想キャラクター(700、800)の少なくとも一部に、前記生のモーションを適用する命令と、
を含む、コンピューター読み取り可能記憶媒体。
【請求項8】
請求項7記載のコンピューター読み取り可能記憶媒体であって、更に、前記ユーザー(18)から第2ジェスチャーを受け取る命令を含む、コンピューター読み取り可能記憶媒体。
【請求項9】
請求項8記載のコンピューター読み取り可能記憶媒体であって、更に、前記第2ジェスチャーを受け取ったことに応答して、前記仮想キャラクター(700、800)の前記部分に、前記予め記録されたモーションを適用する命令を含む、コンピューター読み取り可能記憶媒体。
【請求項10】
請求項9記載のコンピューター読み取り可能記憶媒体において、前記第2ジェスチャーを受け取ったことに応答して、前記仮想キャラクター(700、800)の前記部分に、前記予め記録されたモーションを適用する命令が、更に、
所定数のフレームにわたって、前記ユーザー(18)の前記生のモーションを、前記予め記録されたモーションと混合する命令と、
前記所定数のフレームにわたって、前記混合された生のモーションおよび予め記録されたモーションにより、前記仮想キャラクター(800)を動画化する命令と、
前記所定数のフレームの後、前記予め記録されたモーションにより前記仮想キャラクター(800)を動画化する命令と、
を含む、コンピューター読み取り可能記憶媒体。
【請求項11】
モーションを混合するシステム(10)であって、
プロセッサー(32、101、259)を含み、該プロセッサー(32、101、259)が、コンピューター実行可能命令を実行し該コンピューター実行可能命令が、
ユーザー(18)の予め記録されたモーションおよび生のモーションを受け取る命令と、
仮想キャラクター(700)の1つ以上の体部分を、前記生のモーションと関連付けられた前記ユーザー(18)の第1モデル(500)における1つ以上の関節にマッピングする命令と、
前記仮想キャラクター(700)の1つ以上の体部分を、前記予め記録されたモーションと関連付けられた第2モデル(600)の1つ以上の体部分にマッピングする命令と、
前記予め記録されたモーションおよび前記生のモーションにより、前記仮想キャラクター(700)を動画化する命令と、
を含む、システム。
【請求項12】
請求項11記載のシステムにおいて、予め記録されたモーションが、前記ユーザー(18)の予め記録されたモーション、アーティストが制作したモーション、およびプログラム制御された変換のうち少なくとも1つを含む、システム。
【請求項13】
請求項11記載のシステムにおいて、前記予め記録されたモーションおよび前記生のモーションにより、前記仮想キャラクター(700)を動画化する命令が、更に、
前記仮想キャラクター(700)の第2部分における前記1つ以上の体部分に対応する、前記ユーザー(18)の前記第1モデル(500)における1つ以上の関節をディスエーブルする命令と、
前記仮想キャラクター(700)の第1部分における前記1つ以上の体部分に対応する前記予め記録されたモーションと関連付けられた、前記第2モデル(600)における1つ以上の関節をディスエーブルする命令と、
前記ユーザー(18)の前記第1モデル(500)における前記1つ以上の関節と、前記第2モデル(600)における前記1つ以上の関節とをディスエーブルしたことに応答して、前記ユーザー(18)の前記第1モデル(500)と関連付けられた前記生のモーションを、前記第2モデル(600)と関連付けられた前記予め記録されたモーションと混合する命令と、
前記混合した生のモーションおよび予め記録されたモーションにより、前記仮想キャラクター(700)の前記第1部分および前記第2部分を動画化する命令と、
を含む、システム。
【請求項14】
請求項11記載のシステムであって、更に、前記ユーザー(18)からジェスチャーを受け取る命令を含み、前記ジェスチャーが、アニメーションを前記仮想キャラクター(700)に適用するコマンドと関連付けられた、システム。
【請求項15】
請求項14記載のシステムにおいて、前記ユーザー(18)からの前記ジェスチャーを受け取ったことに応答して、前記仮想キャラクター(700)が、前記生のモーションおよび前記予め記録されたモーションにより動画化される、システム。
【図1A】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9A】
【図9B】
【図10A】
【図10B】
【図11A】
【図11B】
【図11C】
【図11D】
【図11E】
【図11F】
【図12A】
【図12B】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9A】
【図9B】
【図10A】
【図10B】
【図11A】
【図11B】
【図11C】
【図11D】
【図11E】
【図11F】
【図12A】
【図12B】
【公表番号】特表2012−528390(P2012−528390A)
【公表日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2012−513147(P2012−513147)
【出願日】平成22年5月22日(2010.5.22)
【国際出願番号】PCT/US2010/035885
【国際公開番号】WO2010/138428
【国際公開日】平成22年12月2日(2010.12.2)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.BLUETOOTH
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公表日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願日】平成22年5月22日(2010.5.22)
【国際出願番号】PCT/US2010/035885
【国際公開番号】WO2010/138428
【国際公開日】平成22年12月2日(2010.12.2)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.BLUETOOTH
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]