(57)【特許請求の範囲】
【請求項１】
１つまたは複数のコンピューティングデバイスによって使用されたときに、前記１つまたは複数のコンピューティングデバイスに方法を実行させるコンピュータ使用可能な命令を記憶する１つまたは複数のコンピュータ記憶媒体であって、前記方法が、
仮想環境においてオブジェクトを特定する(identifying)ステップと、
前記オブジェクトと関連付けるための、オブジェクトスケルトンを特定するステップであって、当該オブジェクトスケルトンが、前記オブジェクトの1つ又は複数の特性に基づいて特定されるものと、
オブジェクトスケルトン(skeleton)を前記オブジェクトにマッピングするステップであり、前記オブジェクトスケルトンが事前に定義されたテンプレートであり、当該テンプレートが、1つ又は複数の関節角度を有し、当該関節角度が、1つ又は複数の関節の間の角度の大きさを表すものと、
ユーザスケルトンを受信するステップであり、前記ユーザスケルトンがユーザのスケルトンの画像であり、当該ユーザのスケルトンが、1つ又は複数の関節角度を有する、ステップと、
前記オブジェクトが前記ユーザによって制御されるように、前記ユーザスケルトンを前記オブジェクトスケルトンにマッピングするステップと、
を含み、
前記ユーザスケルトンを前記オブジェクトスケルトンにマッピングするステップが、
前記ユーザスケルトンの関節位置を、前記オブジェクトスケルトンの関節のスケールにマッピングするステップであって、前記関節位置の動きに応じて前記オブジェクトが伸ばさせられ、前記関節位置が、前記オブジェクトの複数の関節を、非線形的に制御するものを含む、
１つまたは複数のコンピュータ記憶媒体。
【請求項２】
前記オブジェクトスケルトンを前記オブジェクトにマッピングするステップが、
前記オブジェクトスケルトンの中心(center)を特定するサブステップと、
前記オブジェクトの重心(center of mass)を特定するサブステップと、
前記オブジェクトスケルトンの前記中心を前記オブジェクトの前記重心上へと置く(imposing)サブステップとを含む、請求項１に記載の１つまたは複数のコンピュータ記憶媒体。
【請求項３】
前記方法が、前記オブジェクトスケルトンにぴったりと一致するように前記オブジェクトのサイズを変更するステップ
をさらに含む、請求項２に記載の１つまたは複数のコンピュータ記憶媒体。
【請求項４】
前記オブジェクトスケルトンにぴったりと一致するように前記オブジェクトのサイズを変更するステップが、
前記オブジェクトの底部(bottom)を前記オブジェクトスケルトンの底部と位置合わせ(aligning)するサブステップと、
前記オブジェクトの最上部(top)が前記オブジェクトの前記最上部の下方の(below)所定の距離となるように前記オブジェクトの最上部を前記オブジェクトスケルトンの前記最上部と位置合わせするサブステップと
を含む、請求項３に記載の１つまたは複数のコンピュータ記憶媒体。
【請求項５】
前記オブジェクトスケルトンの前記最上部の下方の前記所定の距離が、前記オブジェクトスケルトンの前記最上部の１０パーセント（１０％）下方である、請求項４に記載の１つまたは複数のコンピュータ記憶媒体。
【請求項６】
前記オブジェクトは、前記オブジェクトの動作が前記ユーザの動作を忠実に反映するように前記ユーザによって制御される、請求項１に記載の１つまたは複数のコンピュータ記憶媒体。
【請求項７】
仮想環境においてオブジェクトを制御するためのシステムであって、
１つまたは複数のプロセッサおよび１つまたは複数のコンピュータ可読記憶媒体に関係付けられたコンピューティングデバイスと、
前記コンピューティングデバイスにつなげられたデータストアと、
制御エンジンであり、
オブジェクトを特定し、
ユーザスケルトンおよびオブジェクトスケルトンを含む１つまたは複数のスケルトンを特定し、各スケルトンが、1つ又は複数の関節角度を有し、関節角度が、1つ又は複数の関節の間の角度の大きさを表し、前記オブジェクトスケルトンが、前記オブジェクトの1つ又は複数の特性に基づいて特定され、
前記ユーザスケルトンの前記1つ又は複数の関節角度を、前記オブジェクトスケルトンの、前記対応する1つ又は複数の関節角度にマッピングし、
前記ユーザスケルトンの関節位置を、前記オブジェクトスケルトンの関節のスケールにマッピングし、前記オブジェクトが、前記関節位置の動きに応じて伸ばされ、前記関節位置が、前記オブジェクトの複数の関節を、非線形的に制御し、
オブジェクトが前記ユーザスケルトンの動作を忠実に反映するように操作されるように前記オブジェクトスケルトンを管理する、
制御エンジンと、
を備えた、システム。
【請求項８】
前記制御エンジンが、前記ユーザの姿勢を複数のテンプレート姿勢と比較し、前記ユーザの前記姿勢と対応する前記複数のテンプレート姿勢のうちの１つを特定することによって、前記複数のテンプレート姿勢から前記ユーザスケルトンを特定する、請求項７に記載のシステム。
【請求項９】
１つまたは複数のコンピューティングデバイスによって使用されたときに、前記１つまたは複数のコンピューティングデバイスに方法を実行させるコンピュータ使用可能な命令を記憶する１つまたは複数のコンピュータ記憶媒体であって、前記方法が、
仮想環境においてオブジェクトを特定するステップであり、前記オブジェクトが仮想形態へとディジタル化されている実世界オブジェクトである、ステップと、
前記オブジェクトと関連付けるための、オブジェクトスケルトンを特定するステップであって、前記オブジェクトが、前記オブジェクトの1つ又は複数の特性に基づいて特定されるものと、
前記オブジェクトの重心を特定し、オブジェクトスケルトンの中心を前記オブジェクトの前記重心上へと置くことによって、前記オブジェクトスケルトンを前記オブジェクトにマッピングするステップであり、前記オブジェクトスケルトンが事前に定義されたテンプレートである、ステップと、
前記オブジェクトスケルトンの底部が前記オブジェクトの底部と位置合わせされるように、前記オブジェクトスケルトンのサイズに対応するように前記オブジェクトのサイズを変更するステップと、
ユーザスケルトンを受信するステップであり、前記ユーザスケルトンがユーザのスケルトンであり、前記ユーザスケルトンが、ユーザの姿勢によって特定され、ユーザスケルトンの情報が、当該姿勢の1つ又は複数の関節角度を含む、ステップと、
前記オブジェクトスケルトンの１つまたは複数の関節角度が前記ユーザスケルトンの１つまたは複数の関節角度の少なくとも１つを忠実に反映するように、前記ユーザスケルトンを前記オブジェクトスケルトンにマッピングするステップであり、１つの関節角度が１つまたは複数の関節間の角度の大きさ(a degree of an angle)を表し、
前記オブジェクトが、前記ユーザスケルトンの姿勢の関節位置の動きに応じて伸ばされ、前記関節位置が、前記オブジェクトの複数の関節を、非線形的に制御する、ステップと、
前記ユーザの動作を特定するステップと、
前記ユーザの前記動作を特定するステップに応じて、前記オブジェクトの動作が前記ユーザの前記動作を忠実に反映するように、前記オブジェクトを動かすステップとを含む、
１つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明の一実施例は、例えば、仮想環境におけるオブジェクトの制御に関する。
【背景技術】
【０００２】
[0001]仮想環境は、近年著しい進歩を遂げている。これらの進歩につれて、仮想環境との相互作用を高めたいというユーザからの要求が増加してきている。ウェブカメラに基づく頭部追跡を使用する所定のモデルのリアルタイム制御は、いくつかのビデオチャットアプリケーションにおいて現在利用可能であり、それにより、ユーザは、ユーザの頭部の位置を追跡することによって仮想アバターの頭部を制御し、ユーザの音声を使用してアバターの口を制御することが可能になる。それにもかかわらずこのケースでは、アバターは、事前に決められており、追跡は、頭部に限定され、ユーザの頭部の向きとアバターの頭部の向きとの間の単純な１対１マッピングが使用される。実世界から受信され、仮想オブジェクトへとディジタル化されたオブジェクトを、ユーザが十分に制御することを可能にするモデルは、現在のところ存在しない。言い換えると、オブジェクトは、事前に決められていない。さらに、ユーザの身体を使用して全体の仮想オブジェクト（例えば、手足、頭部、等）を制御するのにユーザのスケルトンの追跡情報を利用することは、利用可能ではない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本願発明の一実施例は、例えば、仮想環境におけるオブジェクトの制御に関する。
【課題を解決するための手段】
【０００４】
[0002]この「発明の概要」は、「発明を実施するための形態」において下記にさらに説明される概念の選択を単純化した形態で紹介するために提供される。この「発明の概要」は、特許請求した主題の鍵となる特徴または本質的な特徴を特定することを目的とせず、特許請求した主題の範囲を決定する際に補助として使用されることも目的としない。
【０００５】
[0003]本発明の実施形態は、とりわけ、仮想環境においてオブジェクトを制御するためのシステム、方法、およびコンピュータ記憶媒体に関する。実世界オブジェクトは、以降に詳細に説明されるように、ディジタル化され得、例えば、ゲームシステムによって受信可能である。一実施形態では、実世界オブジェクトは、無生物オブジェクト（例えば、椅子、ボール、動物のぬいぐるみ、等）、ペット（例えば、猫）、等などの人間でないオブジェクトである。一旦、ディジタル化したオブジェクトが受信されると、オブジェクトがユーザによって制御されるように、オブジェクトおよび人間ユーザのさまざまなスケルトンのマッピングが実行可能である。言い換えると、ユーザの動作は、仮想環境においてオブジェクトの動作を制御することができる。
【０００６】
[0004]本発明は、添付した図面を参照して下記に詳細に説明される。
【図面の簡単な説明】
【０００７】
【図１】[0005]本発明の実施形態を実装する際に使用するのに適した例示的なコンピューティング環境のブロック図である。
【図２】[0006]本発明の一実施形態による、仮想環境においてオブジェクトを制御するための環境を示すブロック図である。
【図３】[0007]本発明の一実施形態による、ディジタル化のためにオブジェクトを提示するユーザの図である。
【図４】[0008]本発明の一実施形態による、オブジェクトをディジタル化するための作業の流れの図である。
【図５】[0009]図５Ａは、本発明の一実施形態による、ディジタル化のためにオブジェクトを提示するユーザのカメラ視野像である。図５Ｂは、本発明の一実施形態による、ディジタル化のためにオブジェクトを提示するユーザのカメラ視野像である。
【図６】[0010]本発明の一実施形態による、オブジェクトをディジタル化するために利用可能なセグメント化した深さ画像である。
【図７】[0011]本発明の一実施形態による、深さと色のオフセットの図である。
【図８】[0012]本発明の一実施形態による、オブジェクトをディジタル化するために利用可能なソースカラー画像である。
【図９】[0013]本発明の一実施形態による、取り込んだオブジェクトの色セグメント化の図である。
【図１０】[0014]本発明の一実施形態による、ディジタル化すべきオブジェクトを保持するために指図を与えるユーザインターフェース（ＵＩ）の図である。
【図１１】本発明の一実施形態による、ディジタル化すべきオブジェクトを保持するために指図を与えるユーザインターフェース（ＵＩ）の図である。
【図１２】[0015]本発明の一実施形態による、オブジェクトの三次元（３Ｄ）ポイントクラウド構成の図である。
【図１３】[0016]本発明の一実施形態による、位置を合わせたポイントシートの２つの視野の図である。
【図１４】[0017]本発明の一実施形態による、最終的なポイントクラウド構成の図である。
【図１５】[0018]本発明の一実施形態による、ユーザに表示されたディジタル化したオブジェクトの確認画像を表示するＵＩの図である。
【図１６】[0019]本発明の一実施形態による、取り込んだ画像のメッシュ出力の図である。
【図１７】[0020]本発明の一実施形態による、オブジェクトのスムージングし処理した画像である。
【図１８】[0021]本発明の一実施形態による、ＵＶ座標を有する画像である。
【図１９】[0022]本発明の一実施形態による、最終的なテクスチャマップのセクションへと描かれた前向きの三角形エッジの図である。
【図２０】[0023]図２０Ａは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。図２０Ｂは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。図２０Ｃは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。図２０Ｄは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。図２０Ｅは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。
【図２１】[0024]図２１Ａは、本発明の一実施形態による、輝度／彩度処理前の画像の図である。図２１Ｂは、本発明の一実施形態による、輝度／彩度処理後の画像である。
【図２２】[0025]図２２Ａは、本発明の一実施形態による、ソース画像の図である。図２２Ｂは、本発明の一実施形態による、エッジがフィルタリングされた後の出力画像である。
【図２３】[0026]図２３Ａは、本発明の一実施形態による、エッジ修復フィルタが背景色になる色を見つけた場合の画像の図である。図２３Ｂは、本発明の一実施形態による、エッジ修復フィルタが対象になる色を見つけた場合の画像である。
【図２４】[0027]図２４Ａは、本発明の一実施形態による、エッジから問題となる領域までの距離を示す画像である。図２４Ｂは、本発明の一実施形態による、計算した背景確率値を示す画像である。
【図２５】[0028]一実施形態による、最終的な合成テクスチャマップの図である。
【図２６】[0029]図２６Ａは、本発明の一実施形態による、マスクされた値の図である。図２６Ｂは、本発明の一実施形態による、ひどくぼけた頂点の色の図である。
【図２７】[0030]図２７Ａは、本発明の一実施形態による、テクスチャだけを有するメッシュの図である。図２７Ｂは、本発明の一実施形態による、頂点の色がマスク値によって混ぜ合わさったテクスチャを有するメッシュの図である。
【図２８】[0031]本発明の一実施形態による、ディジタル化したオブジェクトの最終的なレンダリングの図である。
【図２９】[0032]本発明の一実施形態による、仮想環境においてオブジェクトを制御するための方法を示す流れ図である。
【図３０】[0033]本発明の一実施形態による、仮想環境においてオブジェクトを制御するための方法を示す流れ図である。
【発明を実施するための形態】
【０００８】
[0034]本発明の主題は、法的要件を満たすように本明細書において特異性と共に説明される。しかしながら、説明それ自体は、本発明の範囲を限定することを目的としない。むしろ、特許請求した主題が、他の方法でも具体化されて、他の現在の技術または将来の技術と協働して、本明細書に説明するものとは異なるステップまたは類似のステップの組合せを含み得ることが企図される。その上、「ステップ」および／または「ブロック」という用語が、利用する方法のさまざまな要素を含むように本明細書においては使用され得るが、これらの用語は、個々のステップの順序が明確に記載されない限りおよび記載されるときを除いて、本明細書中に開示したさまざまなステップ間でいずれかの特定の順序を示唆するようには解釈されるべきではない。
【０００９】
[0035]本発明の実施形態は、とりわけ、仮想環境においてオブジェクトを制御するためのシステム、方法、およびコンピュータ記憶媒体を対象とする。実世界オブジェクトは、以降に詳細に説明されるように、ディジタル化され得、例えば、ゲームシステムによって受信可能である。一実施形態では、実世界オブジェクトは、無生物オブジェクト（例えば、椅子、ボール、動物のぬいぐるみ、等）、ペット（例えば、猫）、等などの人間でないオブジェクトである。一旦、ディジタル化したオブジェクトが受信されると、オブジェクトがユーザによって制御されるように、オブジェクトおよびユーザのさまざまなスケルトンのマッピングが実行可能である。言い換えると、ユーザの動作は、仮想環境においてオブジェクトの動作を制御することができる。
【００１０】
[0036]したがって、本発明の一実施形態は、１つまたは複数のコンピューティングデバイスによって使用されるときに、仮想環境においてオブジェクトを制御するための方法をコンピューティングデバイスに実行させるコンピュータ使用可能な命令を記憶する１つまたは複数のコンピュータ記憶媒体を対象とする。本方法は、仮想環境においてオブジェクトを特定するステップを含む。オブジェクトは、任意の人間でないオブジェクトであってもよい。オブジェクトスケルトンは、オブジェクトにマッピングされる。オブジェクトスケルトンは、事前に定義されたテンプレートであってもよく、オブジェクトおよび／またはオブジェクトスケルトンは、相互にぴったりと合うように調節され得る。ユーザスケルトンは、受信され、オブジェクトスケルトンにマッピングされる。ユーザスケルトンは、ユーザのスケルトンの画像である。一旦、ユーザスケルトンがオブジェクトスケルトンにマッピングされると、オブジェクトは、ユーザによって制御される。特に、ユーザの動作は、仮想環境においてオブジェクトの動作を制御する。
【００１１】
[0037]本発明の別の一実施形態では、仮想環境においてオブジェクトを制御するためのプロセッサおよびメモリを備えたシステムを対象とする。本システムは、１つまたは複数のプロセッサおよび１つまたは複数のコンピュータ可読記憶媒体に関係付けられたコンピューティングデバイス、コンピューティングデバイスにつなげられたデータストア、ならびにユーザスケルトンおよびオブジェクトスケルトンを含む１つまたは複数のスケルトンを特定し、ユーザスケルトンをオブジェクトスケルトンにマッピングし、オブジェクトがユーザスケルトンの動作を忠実に反映するように操作されるようにオブジェクトスケルトンを管理する制御エンジンを備える。
【００１２】
[0038]本発明のさらに別の一実施形態は、１つまたは複数のコンピューティングデバイスによって使用されたときに、仮想環境においてオブジェクトを制御するための方法をコンピューティングデバイスに実行させるコンピュータ使用可能な命令を記憶する１つまたは複数のコンピュータ記憶媒体を対象とする。方法は、仮想環境においてオブジェクトを特定するステップを含む。オブジェクトは、仮想環境において仮想形態へとディジタル化されてきている実世界オブジェクトである。オブジェクトスケルトンは、オブジェクトの重心を特定し、オブジェクトスケルトンの中心をオブジェクトの重心上へと置くことによってオブジェクトにマッピングされる。オブジェクトは、オブジェクトスケルトンの底部がオブジェクトの底部と位置合わせされるように、オブジェクトスケルトンのサイズに対応するようにサイズを変更される。ユーザスケルトンは、次に受信され、オブジェクトスケルトンの１つまたは複数の関節角度がユーザスケルトンの１つまたは複数の関節角度を忠実に反映するように、オブジェクトスケルトンにマッピングされる。ユーザの動作は、特定され、ユーザの動作を特定するステップに応じて、オブジェクトの動作がユーザの動作を忠実に反映するように、オブジェクトを動かす。
【００１３】
[0039]本発明の実施形態の概要を手短に説明すると、本発明の実施形態が実装され得る例示的な動作環境が、本発明のさまざまな態様についての概括的なコンテキストを提供するために下記に説明される。特に、最初に図１を参照すると、本発明の実施形態を実装するための例示的な動作環境が示され、全体としてコンピューティングデバイス１００と示される。コンピューティングデバイス１００は、適したコンピューティング環境のほんの一例であり、本発明の使用または機能の範囲に関して何らかの限定を示唆しないものとする。コンピューティングデバイス１００が、示したコンポーネントのいずれか１つまたは組合せに関係する何らかの依存性または必要条件を有するように解釈されるべきではない。
【００１４】
[0040]本発明は、コンピュータ、またはパーソナルデータアシスタントもしくは他のハンドヘルドデバイスなどの他のマシンによって実行される、プログラムモジュールなどのコンピュータ実行可能な命令を含むコンピュータコードまたはマシン使用可能な命令の概括的なコンテキストにおいて説明することができる。概して、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含むプログラムモジュールとは、特定のタスクを実行するまたは特定の抽象データタイプを実装するコードを言う。本発明は、ハンドヘルドデバイス、家庭用電気製品、汎用コンピュータ、より専門的なコンピューティングデバイス、等を含むさまざまなシステム構成において実行可能である。本発明はまた、通信ネットワーク介してリンクされたリモート処理デバイスによってタスクが実行される分散型コンピューティング環境において実行可能である。
【００１５】
[0041]図１を参照すると、コンピューティングデバイス１００は、下記のデバイス、すなわちメモリ１１２、１つまたは複数のプロセッサ１１４、１つまたは複数のプレゼンテーションコンポーネント１１６、入力／出力（Ｉ／Ｏ）ポート１１８、入力／出力コンポーネント１２０、および例示の電源１２２、を直接的にまたは間接的につなげるバス１１０を含む。バス１１０は、何であろうとも（アドレスバス、データバス、またはこれらの組合せなどの）１つまたは複数のバスを表す。図１のさまざまなブロックが明確化のために線で示されるが、実際には、描かれたさまざまなコンポーネントは、それほど明確ではなく、例えて言えば、線は、さらに正確な表現をすれば、灰色であり曖昧であるはずである。例えば、Ｉ／Ｏコンポーネントになる表示デバイスなどのプレゼンテーションコンポーネントを考えることができる。また、プロセッサはメモリを有する。発明者らは、このようなものが本技術の本質であることを認識し、図１の図が本発明の１つまたは複数の実施形態とともに使用されることが可能な例示的なコンピューティングデバイスの単なる例示であることを繰り返して述べる。下記のすべてが、図１および「コンピューティングデバイス」への言及の範囲内であると考えられるので、「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルドデバイス」、等などのカテゴリー間で、区別は行われない。
【００１６】
[0042]コンピューティングデバイス１００は、典型的にはさまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピューティングデバイス１００によってアクセスされることが可能な任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体の両方、リムーバブル媒体とノンリムーバブル媒体の両方を含む。例として、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装された揮発性媒体および不揮発性媒体の両者、リムーバブル媒体およびノンリムーバブル媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用されること可能であり、コンピューティングデバイス１００によってアクセスされ得る任意の他の媒体を含むが、これらに限定されない。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュールまたは、搬送波もしくは他のトランスポート機構などの変調されたデータ信号中の他のデータを組み込み、そして任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内に情報をエンコードするような方式で１つまたは複数の信号の特性を設定したまたは変更した信号を意味する。例として、限定するのではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体ならびに、アコースティック媒体、ＲＦ媒体、赤外媒体、および他のワイヤレス媒体などのワイヤレス媒体を含む。上記のいずれかの組合せもまた、コンピュータ可読媒体の範囲内にやはり含まれるべきである。
【００１７】
[0043]メモリ１１２は、揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。メモリは、リムーバブル、ノンリムーバブル、またはこれらの組合せであってもよい。例示的なハードウェアデバイスは、固体メモリ、ハードドライブ、光ディスクドライブ、等を含む。コンピューティングデバイス１００は、メモリ１１２またはＩ／Ｏコンポーネント１２０などのさまざまなエンティティからデータを読み出す１つまたは複数のプロセッサを含む。（１つまたは複数の）プレゼンテーションコンポーネント１１６は、ユーザまたは他のデバイスにデータ表示を提示する。例示的なプレゼンテーションコンポーネントは、表示デバイス、スピーカ、印刷コンポーネント、振動コンポーネント、等を含む。
【００１８】
[0044]Ｉ／Ｏポート１１８は、コンピューティングデバイス１００がＩ／Ｏコンポーネント１２０を含む他のデバイスに論理的につなげられることを可能にし、他のデバイスのいくつかは、ビルトインであってもよい。例示のコンポーネントは、マイクロフォン、ジョイスティック、ゲームパッド、衛星用パラボラアンテナ、スキャナ、プリンタ、ワイヤレスデバイス、等を含む。
【００１９】
[0045]前に示したように、本発明の実施形態は、仮想環境においてオブジェクトを制御することを対象とする。ここで図２に転じて、ブロック図は、本発明の実施形態が利用可能な例示的なコンピューティングシステム２００を図説することを提供する。本明細書において説明するこの配置および他の配置が例としてのみ示されることを理解すべきである。別の配置および要素（例えば、マシン、インターフェース、機能、順序、および機能のグループ分け、等）が、示したものに加えてまたは代わりに使用されても、いくつかの要素は、完全に省略されてもよい。さらに、本明細書において説明する要素の多くは、別個の要素もしくは分散型要素として、または他のコンポーネントとともに、ならびに任意の適した組合せおよび場所に実装可能な機能エンティティである。１つまたは複数のエンティティによって実行されるように本明細書において説明するさまざまな機能は、ハードウェア、ファームウェア、および／またはソフトウェアによって実行可能である。例えば、さまざまな機能は、メモリ内に記憶された命令を実行するプロセッサによって実行可能である。
【００２０】
[0046]示されていない他のコンポーネントの中で、コンピューティングシステム２００は、概してネットワーク２１０、データストア２２０、および制御エンジン２３０を含む。制御エンジン２３０は、下記に説明する機能を実行するために専用デバイスの形態を取ることができ、例えば、ネットワークアクセスデバイス、ゲームシステム、等、またはこれらの任意の組合せへと一体化され得る。コンピューティングシステム２００のコンポーネントは、ネットワーク２１０を介して相互に通信することができ、ネットワークは、限定ではなく、１つもしくは複数のローカルエリアネットワーク（ＬＡＮ）および／またはワイドエリアネットワーク（ＷＡＮ）を含むことができる。このようなネットワーク環境は、事務所、会社規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて普通である。任意の数のコンピューティングデバイスおよび制御エンジンが本発明の実施形態の範囲内でコンピューティングシステム２００の中に採用され得ることを、理解すべきである。１つのデバイス／インターフェースまたは分散型環境において協働する複数のデバイス／インターフェースを、各々が含むことができる。例えば、制御エンジン２３０は、分散型環境内に配置された複数のデバイスおよび／またはモジュールを含むことができ、これらは本明細書において説明する制御エンジン２３０の機能を全体として与える。加えて、示されていない他のコンポーネント／モジュールもまた、コンピューティングシステム２００内に含まれることがある。
【００２１】
[0047]いくつかの実施形態では、示したコンポーネント／モジュールのうちの１つまたは複数は、スタンドアロンアプリケーションとして実装され得る。別の実施形態では、示したコンポーネント／モジュールのうちの１つまたは複数は、インターネットベースのサービスとして、またはゲームシステムの内部のモジュールとして制御エンジン２３０を介して実装され得る。図２に示されたコンポーネント／モジュールは、性質においておよび数において例示的であり、限定するようには解釈すべきでないことが、当業者には理解されるであろう。任意の数のコンポーネント／モジュールが、本発明の実施形態の範囲内で所望の機能を実現するために採用されことがある。さらに、コンポーネント／モジュールは、任意の数のサーバまたはクライアントコンピューティングデバイス上に設置され得る。単に例として、制御エンジン２３０は、ゲームシステム、サーバ、サーバのクラスタ、または１つもしくは複数の残りのコンポーネントからは遠くのコンピューティングデバイス内に存在することがある。
【００２２】
[0048]本明細書において説明するこの配置および他の配置が例としてのみ示されることが理解されるはずである。別の配置ならびに要素（例えば、マシン、インターフェース、機能、順序、および機能のグループ分け、等）が、示したものに加えてまたは代わりに使用されても、いくつかの要素は、完全に省略されてもよい。さらに、本明細書において説明する要素の多くは、個別の要素もしくは分散型要素として、または他のコンポーネント／モジュールとともに、ならびに任意の適した組合せおよび場所に実装可能な機能エンティティである。１つまたは複数のエンティティによって実行されるように本明細書において説明するさまざまな機能は、ハードウェア、ファームウェア、および／またはソフトウェアによって実行可能である。例えば、さまざまな機能は、メモリ内に記憶された命令を実行するプロセッサによって実行可能である。
【００２３】
[0049]概して、システム２００は、仮想環境におけるオブジェクトが実世界ユーザによって制御される環境を示す。下記にさらに詳細に説明するように、本発明の実施形態は、ディジタル化したオブジェクトを受信するステップおよびスケルトンをオブジェクトにマッピングするステップを提供する。本発明のさらなる実施形態は、ユーザが仮想環境においてオブジェクトを制御するように、ユーザスケルトンをオブジェクトにマッピングするステップを提供する。
【００２４】
[0050]制御エンジン２３０は、仮想環境においてオブジェクトを管理するように構成され、その結果、オブジェクトは、ユーザによって制御され得る。仮想環境におけるオブジェクトは、ペット、動物のぬいぐるみ、椅子、等などの任意の人間でないオブジェクトであってもよい。制御エンジン２３０は、受信コンポーネント２３１、特定コンポーネント２３２、マッピングコンポーネント２３３、および表示コンポーネント２３４を含む。コンポーネントの各々は、ユーザが仮想環境においてオブジェクトを制御することを、制御エンジン２３０が容易にすることを可能にするように構成される。
【００２５】
[0051]受信コンポーネント２３１は、とりわけ、ディジタル化されているオブジェクトを受信するように構成され得る。オブジェクトは、一実施形態では、実世界オブジェクトである。実施形態では、オブジェクトは、任意の人間でない、実世界オブジェクトである。ディジタル化とは、本明細書において使用するとき、概して、システム２００に提供された実世界オブジェクトを特定し、実世界オブジェクトを仮想オブジェクトへと処理するプロセスを言う。
【００２６】
[0052]図３は、一実施形態による、オブジェクト３０６のディジタル表示を作るためのユーザ３０４のための環境３００の図である。具体的に、環境３００は、コンピューティングデバイス３０２へタコの人形として示されたオブジェクト３０６を提示するユーザ３０４を示し、コンピューティングデバイス３０２は、２つのカメラすなわちカラーカメラ３０８および深さカメラ３１０を搭載している。環境３００において、コンピューティングデバイス３０２は、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ（登録商標）によって作られたＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（商標）などのゲームコンソールである。コンピューティングデバイス３０２上のカメラは、オブジェクト３０６を含む１つまたは複数の画像を取り込む。カラーカメラ３０８は、画像用の色データを取り込み、深さカメラ３１０は、深さデータを取り込む。代替実施形態では、コンピューティングデバイス３０２は、色データおよび深さデータの両方を取り込む１つのカメラを有するだけであってもよい。
【００２７】
[0053]図示しないが、ユーザ３０４は、裏側の画像を取り込むために、コンピューティングデバイスにオブジェクト３０６の裏側を提示することができ、裏側画像は、表側画像と結合され、オブジェクト３０６の３Ｄ表示を生成するために使用され得る。オブジェクトの別の視野の追加画像もまたより完全な３Ｄディジタル化をもたらすために取り込まれることがある。
【００２８】
[0054]図４は、一実施形態による、オブジェクトをディジタル化するための作業の流れ４００の図である。最初に、４０２において示したように、ユーザは、画像が撮られるように、コンピューティングデバイス上のカメラにオブジェクトを提示する。コンピューティングデバイスは、いくつかの実施形態では、画像の最適画像を取り込むために特定の領域へとオブジェクトを動かすようにユーザに指示することができる。例えば、ディスプレイ上に外形線を形成し、ユーザおよびオブジェクトのリアルタイム画像を示し、次に外形線へとオブジェクトを動かすようにユーザに指示する。一旦、初期画像が撮られると、４０４において示したように、コンピューティングデバイスは、取り込むためにオブジェクトの裏側を提示するようにユーザに指示することができる。裏側を取り込むための指図は、コンピューティングデバイスによって同様に行われることがある。取り込まれた各画像について、色データおよび深さデータが、記憶され、表示されるオブジェクトをディジタル化するために使用される。その上、複数の画像が、オブジェクトの前側像および裏側像用に取り込まれることがある。例えば、コンピューティングデバイスは、１０枚の前面画像および１０枚の裏面画像を撮るように、そしておそらく前面の１０枚を一緒におよび裏面の１０枚を一緒にマージするように、または画像をディジタル化するために２０枚すべてを使用するように構成され得る。１０枚の画像が、オブジェクトをディジタル化するための画像の理想的な数であるように示しているが、別の実施形態は、異なる数の取り込んだ画像を使用することができる。
【００２９】
[0055]一旦、オブジェクトの前面画像および裏面画像がカメラによって取り込まれると、一実施形態は、４０６において示したように、カメラまでの画像内で最も近接した点を画像の深さデータを使用して検索することによって、オブジェクトをディジタル化することを始める。ユーザは、ユーザの前にディジタル化するオブジェクトをおそらく保持し、そのためオブジェクトは、他のものよりもカメラに近いはずである。図３に戻って、ユーザ３０４が自分の前にオブジェクト３０６を保持し、そのため、コンピューティングデバイス３０２により近いことに気付くことがある。画像内で最も近接したオブジェクトの場所を見つけることは、画像に関係する深さデータを使用して実現されることがあり、いくつかの実施形態は、前側画像および裏側画像の両者について処理を実行し、両者の中で最も近接したオブジェクトを特定する。
【００３０】
[0056]４０８において示したように、画像内で特定された最も近接したオブジェクトは、次に、オブジェクト端がどこであるかを特定するためにエッジを検索される。深さデータは、画像中のオブジェクトのエッジの位置を見つけるために再び使用される。エッジ検索は、最も近接した点から外へ向かって始められ、複数の点の深さの著しい違いを探す。例えば、図３中のタコのエッジは、ユーザ３０４の肩を表す隣接する点よりもほぼ０．５メートル近い点を有することがある。このような著しい違いは、隣接する点がオブジェクトの一部ではなく、したがってさらに先のディジタル化ステップには含まれるべきではないという読み取り可能な信号を表す。このような方法でオブジェクトのすべてのエッジの位置を見つけることは、コンピューティングデバイスが画像内のオブジェクトを特定することを可能にする。
【００３１】
[0057]一旦、オブジェクトが決定されると、一実施形態は、画像の残り（すなわち、オブジェクトとして特定されない画像の部分）に関係する色データをオフに切り替える。いくつかの実施形態では、複数の画像（例えば、オブジェクトの前面の１０枚の画像および裏面の１０枚の画像）を取り込むことが必要である場合があり、そのため、４１０において示したように、スムージング技術が、フレーム間の見つけたエッジを混ぜ合わせるために必要とされることがある。例えば、オブジェクトは、フレーム１とフレーム４との間で動くことがあり、そのためフレーム間のエッジのスムージングが、オブジェクトの正確な表示を得るために必要とされることがある。加えて、ノイズ、低解像度、および深さと色の位置合わせにおける不完全性がまた、エッジの追加のスムージングおよび／またはフィルタリングを必要とさせることがある。
【００３２】
[0058]一実施形態では、４１２において示したように、結果として得られたスムージングしおよび／またはフィルタリングしたオブジェクトは、確認のためにユーザに提示される。ユーザは、次に、結果として得られたオブジェクトを受容するまたは拒絶することが可能である。受容された場合には、追加の処理が、オブジェクトをディジタル化するために続くことがある。拒絶された場合には、実施形態は、オブジェクトの新しい写真を撮ることによって処理全体を始めるかどうかをユーザに問い合わせることができる、または単純にオブジェクトを再スムージングするまたは再フィルタリングすることができる。
【００３３】
[0059]最終的に、前面画像および裏面画像は、３Ｄでのオブジェクトのポイントクラウド構成を生成するために使用される。図１２に詳細に示される「ポイントクラウド構成」は、特定されたオブジェクトの各点またはピクセルの深さを用いて、３Ｄ空間へのオブジェクトの前面画像および／または裏面画像のマッピングである。ポイントクラウド構成は、オブジェクトのさらに先のディジタル化の際に使用される。
【００３４】
[0060]図５〜図２７は、ディジタル化プロセスにおけるさまざまなステップの画像を示し、さまざまな実施形態によって使用される処理を図説するために下記にさらに詳細に論じられる。具体的に、図５Ａおよび図５Ｂは、一実施形態による、ディジタル化のためにオブジェクトを提示するユーザのカメラ視野像である。図示した実施形態では、オブジェクトの２つの視野が取り込まれる。カラーカメラは、対象になるオブジェクトの周りの６４０×４８０の色ウィンドウを得るためにフレームの中心上にズームインされ、色ウィンドウの角は、次に（角が、対象になるオブジェクトの前面にあると仮定して）深さフレーム座標へと変換される。一致する１６０×１２０のウィンドウが、次に、深さフレームから捉えられる。（カメラまでの対象になるオブジェクトの距離に依存して）この事前フレームウィンドウ調節を用いないと、深さウィンドウおよび色ウィンドウは、可能な限り十分には重ならないことがある。その上、生の色および生の深さは、深さと色の位置合わせまたは色と深さの位置合わせを実行しないで取り込まれる。さまざまな他の解像度が代わりに使用され得るので、この解像度数およびウィンドウは、単に例示の目的で与えられる。
【００３５】
[0061]一実施形態では、深さ画像は、対象になるオブジェクトにセグメント化される。そうするために、カメラに最も近接した深さピクセルが、このような点が対象になるオブジェクト上にあると仮定して、検索され、見つけられる。この実施形態は、次に、見つけた最も近接した点から外へ向かって、深さエッジ（すなわち、深さがオブジェクトの前面から遠すぎる場合、または深さデータがない場合）にぶつかるまで塗りつぶす。加えて、大きな勾配の領域の周りでありかつ非常に少ない隣接点しか有さない点は、除かれることがある。結果は、図６に示したように、対象になるオブジェクト上にある深さピクセルのマスク（本明細書においては「セグメント化した深さ画像」と呼ばれる）である。セグメント化した深さ画像は、深さフレーム（１０のリングバッファサイズで出荷されたＢＡＢ／ＧＯＥ）のリングバッファ中に記憶され、最も古い深さフレームを書き換え、すべてのフレームを全体として平均して最終的な深さ画像を得る。一実施形態では、セグメント化した深さピクセルだけが、最終的な平均に寄与する。結果として、ノイズはスムージングされ、より安定なオブジェクトエッジをもたらし、オブジェクトの複数の部分がノイズまたはＩＲ反射の悪い物質のために点滅しセグメント化から外れるシナリオを改善する。
【００３６】
[0062]図７は、一実施形態による、深さと色のオフセットの図である。図示したように、一実施形態は、緑色点を表す緑色（最上部の右角に示される）、赤色（下側左角に示される）、およびその間に２つの混合色を有する深さと色のオフセットテーブルを作る。各ピクセルの深さ空間座標と色空間座標との間のオフセットは、色セグメント化およびメッシュ処理中に迅速なルックアップのためにテーブル中に記憶され、同様に、特定のカメラの較正設定にかかわらず、２枚の取り込んだカラー画像だけを使用して出力メッシュを完全に再生することを助ける。オブジェクトセグメント化の外のテーブルの領域は、外に向かうセグメント化のエッジのところのオフセットをコピーすることによって埋められることがある。エッジにおけるコピーしたオフセットは、深さ画像へと投影された出力メッシュ中の頂点が深さセグメント化の境界線の外側になるケースを取り扱うために後で使用され得る。
【００３７】
[0063]一実施形態に従って、図８は、ソースカラー画像であり、図９は、取り込んだオブジェクトの色セグメント化の図である。深さ空間におけるセグメント化から始めると、一実施形態は、星形分配パターンを使用して、各々のセグメント化した深さピクセルを３２０×２４０の色セグメント化バッファへと分配する。結果として得られたパターンは、次に、６４０×４８０へと「アップサンプル」され、ソース深さピクセルが「理想的な」距離からどれだけ遠いかを記述する「理想からの距離」値が、次に各々のセグメント化した色ピクセルについて計算される。理想的な距離は、可能な限り色／深さデータを多く取得するために、ユーザが対象になるオブジェクトをどれだけカメラに近づけて保持すべきかを、深さカメラの前面クリップ平面を横切らずに表す。これらの値は、取込みプロセス中にユーザへのフィードバックとして表示され得る。理想からさらに遠くのピクセルは、理想に近いピクセルよりももっとひどくぼかされ汚されることがある。理想からの距離値は、リアルタイムプレビューのために使用されるカラー画像のアルファチャネルへと最終的にはコピーされる。
【００３８】
[0064]図１０および図１１は、一実施形態による、ディジタル化されるオブジェクトを保持するための指図を与えるユーザインターフェース（ＵＩ）の図である。図１０は、図示した実施形態が、セグメント化したピクセルの数、カメラまでの距離、カメラ視野の中心からの距離、ピクセル安定性、オブジェクトサイズを解析し、オブジェクトをどのようにして最良の位置に置くかについての視覚フィードバックおよびテキストフィードバックを与えることを示す。フィードバックは、スクリーン上の外形線の形態であってもよい。図１１は、上記のものと同じプロセスを使用する、対象になるオブジェクトの裏面の画像の色データおよび深さデータを示す。一実施形態は、セグメント化した前面取込み画像の外形線を使用してオブジェクトを正しく向けるようにユーザに指図する。前面取込み画像および裏面取込み画像が後で自動的に位置合わせ可能であるという理由で、ユーザは、正確に外形線を一致させなければならないことはない。
【００３９】
[0065]図１２は、一実施形態による、ポイントクラウド構成を示す。この時点で、２つの色データ画像および深さデータ画像は、対象になるオブジェクトへとセグメント化されている。これらの画像を使用して、対象になるオブジェクトの表面上の点のポイントクラウド構成が、作られることが可能であり、三角形メッシュを再構成するために後で使用され得る。前面深さ画像中のセグメント化したピクセルは、３Ｄポイント「シート」へと変換される。一実施形態では、位置は、深さデータを使用して深さ画像空間からモデル空間へと投影されずに、原点はシートの裏面中心である。シートのエッジは、追加の点を加えることによって裏に向かって突き出し、オブジェクトの側面を形成する。オブジェクトがどれだけ「深い」かを推測するために、ＢＡＢ／ＧＯＥでは、突き出した距離についての一定値が使用される。
【００４０】
[0066]同様に、裏面深さ画像からの３Ｄポイントシートは、原点として前面取込み画像の裏面中心を使用して作られる。図１３は、一実施形態による、位置を合わせられたポイントシートの２つの視野である。シートの位置を合わせるために、初期変換は、上向きの軸の周りで１８０度このシートを回転して計算され、その結果、ポイントクラウドの裏面を形成する。一実施形態では、前面シートおよび裏面シートのエッジを可能な限り近くに位置を合わせる別の変換が、計算される。位置合わせプロセスは、裏面シートの重心が前面シートの重心と一致するように裏面シートを移動することがある。ブルートフォース反復は、次に、各前面エッジ点からその最も近接した裏面エッジ点までの距離の総和として計算される「位置合わせ誤差」値を最小にするために、移動および回転の範囲全体にわたって使用される。反復は、マルチパス（各パスで、１回に１つ各々の移動および回転軸についての最良値を計算することを試みる）で行われることがあり、各軸を横切る検索は、効率性のために２段の階層的な手法を使用して行われる。最近接点検索は、３Ｄセル空間区分を使用して加速される。一実施形態はまた、高速のきめ細かい位置合わせ用の反復最近接点（「ＩＣＰ」）アルゴリズムを実装する、または代替で、より優れた制御の必要性が、ブルートフォース法反復だけの使用を指示することがある。
【００４１】
[0067]裏面シート中に対応する点を有さない前面シートからの点は、最も近い裏面点を見つけるために各前面点から後ろに向かって検索するために抜粋されることがある。同じように、前面シート中に対応する点を有さない裏面シートからの点は、抜粋されることがある。これが、ユーザの手が取込み画像内にあるが、取込み画像間で位置を変える場合に、またはオブジェクトが前面取込み画像と裏面取込み画像との間で形状を変える場合に生じることがあるような、前面取込み画像と裏面取込み画像との間で一致しないシートの部分を取り除く。
【００４２】
[0068]一実施形態では、残りの点は、最終的なポイントクラウドへと一緒にマージされ、点に対する法線は、各点およびその右隣りと下隣りによって形成される平面を使用して計算される。図１４は、一実施形態による、最終的なポイントクラウド構成を示す。
【００４３】
[0069]確認画像は、図１５に示したように、次に、ユーザに提示され得る。確認画像は、シート位置合わせおよび点抜粋の結果を組み入れて、取込み、位置合わせ、または抜粋がひどく失敗したケースを検出すること、および構成プロセスの残りを経ずに再び取り込むことをユーザに可能にする。画像は、最終的なポイントクラウド中の点を前面カラー画像および裏面カラー画像のアルファチャネルへと投影しかつ分配し、位置合わせ変換に基づいて裏面画像を回転し、ある追加の画像のクリーンアップを行うことによって、作られる。
【００４４】
[0070]表面再構成ステップは、最終的なポイントクラウドを撮り、三角形メッシュを生成する。図１６は、表面再構成を用いたメッシュ出力の図を示す。これは、メモリと時間の両方においてディジタル化の計算的に見て最も激しい部分である場合があり、いくつかの実施形態では、ほぼ２０，０００点の典型的なポイントクラウドデータに対して１０〜２０秒かかる。穴埋めの量は、制御下にメモリ使用量を保つために再構成中には制限され得るが、ポイントクラウド中に大きな穴がある場合には、このような制限は、水漏れの多いメッシュのような状態を結果としてもたらすことがある。
【００４５】
[0071]図１７は、一実施形態による、オブジェクトのスムージングし処理した画像である。頂点隣接リストが作られ、面法線および頂点法線が計算される。次に、一実施形態は、ラプラスアルゴリズムを使用して、いくつかの制約をスムージングする。結果として、オブジェクトの側面は丸められ、ノイズが除去され、ポイントシートが完全には整列していな領域は、クリーンアップされる。
【００４６】
[0072]ポイントクラウドの品質に応じて、表面再構成は、単一の大きなメッシュの代わりに形状の小さな「島」を作ることが可能である。一実施形態は、接続されたコンポーネントのラベルを使用して、島を見つけ、その体積を計算し、最も大きな島よりも著しく小さな島を除去する。
【００４７】
[0073]各頂点について、一実施形態は、その頂点の法線と前面取込み視野方向および裏面取込み視野方向との間のドット積を考察する。前面視野方向は、モデル空間の負のＺ軸に沿うことがあり、裏面視野方向は、シート位置合わせプロセスの結果に依存することがあり、正のＺ軸に沿わないことがある。結果として、いくつかの頂点は、前面取込み視野および裏面取込み視野の両方に見られことがあり、いくつかの頂点は、どちらの視野にも見られないことがある。いくつかの頂点は、その法線が裏面よりも前面に向いている場合には「前面」として分類されることがあり、逆もまた同様である。これはやはり、「シーム」頂点（すなわち、オブジェクトの前面視野および裏面視野にまたがる頂点）の位置決定を可能にする。
【００４８】
[0074]最終的なメッシュ上へと適用するテクスチャマップを作るために、一実施形態は、前面取込み画像からのカラー画像をテクスチャの最上部に置き、裏面取込み画像からのカラー画像を前面取込み画像のすぐ下に置く。テクスチャの最上部部分からのテクセルは、次に、主として前向きの三角形上へとマッピングされ、主として裏向きの三角形についても同様である。頂点は、最初には、ちょうど前面裏面のシームに沿った前面三角形と裏面三角形との間で共有されることがあり、後に、これらの共有された頂点は、複製されることがあり、その結果、前面三角形と対比して裏面三角形にテクスチャの異なる部分をマッピングする。
【００４９】
[0075]一実施形態に従って、図１８は、ＵＶ座標を有する画像を示し、図１９は、最終的なテクスチャマップの一部へと描かれた前向きの三角形エッジの図を示す。ＵＶ座標を計算するために、前向き三角形は、前面取込みカラー画像が置かれるテクスチャの最上部部分にマッピングされ、底部についても同様である。頂点位置は、深さカメラの空間内にあるが、カラー画像は、カラーカメラの空間内にあり、そのため、前面深さ画像／裏面深さ画像上へと頂点を投影した後で、一実施形態は、深さと色のオフセットテーブルを使用して、座標をカラーカメラ空間へと変換する。
【００５０】
[0076]一実施形態では、メッシュは、中心位置を変更され、上向きの軸に関してミラーリングされ、最大幅／高さアスペクト比を守るためにスケーリングされる。取り込んだカラー画像および深さ画像は、実際の物理的なオブジェクトと比較するためにミラーリングされ、そのために別のミラーリングが、これを反転するために使用される。スケルトンは、最適化されることがあり、アニメーションが、幅の広いオブジェクトよりもむしろ背の高いオブジェクトに対して追加されることがあり、そのため、幅／高さアスペクト比制限が、ある種のスケルトンとは一致しない幅の広いオブジェクトをアニメ化することによって生じるアーティファクト上に境界線を引く。
【００５１】
[0077]一実施形態では、１つのスケルトンが、オブジェクトのすべてのアニメーションに対して使用される。スケルトンは、対象になるオブジェクトがはるかに多くの形状を有することを必要とせずに、動き（歩くこと、ジャンプすること、はうこと、ダンスすること、左右を見ること、等）の良い範囲を与える骨を有することができる。
【００５２】
[0078]ディジタル化した画像に肌を付けるために、メッシュは、スケーリングし直され、位置決めされ、その結果、スケルトンは、最上部の骨がオブジェクトの最上部からある割合（例えば、ほぼ９０％）に位置し（最上部の骨をオブジェクトの「頭部」の大雑把に内側に置き）、底部の骨をオブジェクトの底部範囲のところに置いた状態で、その内側にぴったりと一致する。骨インデックスが、次に計算されることが可能であり、各頂点への上向きの軸に沿って最も近い骨を見つけることによってスケルトンに重みが付け加えられ、フォールオフ曲線を使用して骨を重み付けする。図２０Ａ〜図２０Ｅは、一実施形態による、生成したスケルトン構造のさまざまな骨に加えられた重み付けを示す図である。オブジェクトにスケルトンを適用することは、下記に詳細に論じられる。
【００５３】
[0079]カラー画像および／または深さ画像は、ノイズを減少させ品質を向上させるために処理される。処理は、一実施形態では、前面画像および裏面画像に独立に行われ、結果が、最終的なテクスチャマップへとマージされ、このマップは追加の処理を必要とすることがある。いくつかの実験およびアーティストからのフィードバックの後で、下記のステップが最適であることが見出された。ｓＲＧＢ色を線形空間へと変換し、「グレイワールド」自動ホワイトバランスを適用し、エッジアーティファクトを修復し、輝度値および彩度値を計算し、輝度に対してバイラテラルフィルタリング、ヒストグラムイコライゼーション、およびシャープニングを適用し、彩度に中央値フィルタリングを適用し、ｓＲＧＢに変換して戻し、最後に、画像のセグメント化していない領域へと外に向かって色のエッジを延伸する。他のステップが、追加されてもよく、上記のいくつかは、別の実施形態では削除されてもよい。
【００５４】
[0080]図２１Ａおよび図２１Ｂは、一実施形態による、輝度／彩度処理前後の画像を示す。独立に輝度／彩度を処理することは、輝度画像中の詳細を保存しながら彩度をはるかに強くフィルタリングすることを可能にし、これは画像をノイズ除去することに効果的である。ヒストグラムイコライゼーションは、露出の悪い画像を補償するために非常に軽く適用され得る。
【００５５】
[0081]図２２Ａおよび図２２Ｂは、一実施形態による、ソース画像およびエッジがフィルタリングされた後の出力画像を示す。一実施形態では、「エッジ修復フィルタ」は、実際には背景からでありオブジェクト自体ではないものに由来する対象になるオブジェクトのエッジのところの色を置き換えるように試みる。悪い色は、深さ画像の比較的低い解像度および大きなノイズならびに不完全な深さと色の位置合わせに起因して紛れ込むことがある。エッジ修復フィルタは、オブジェクトエッジのすぐ周りのピクセルの「議論の領域」上に動作する。議論の領域の内側のピクセルは、明確に対象になるオブジェクトの一部分であり、もっと外部のピクセルは背景の一部分であるという仮定を使用すると、「背景確率」値は、議論の領域のピクセルごとに計算され、高確率背景ピクセルを内側の色に対して混ぜるために使用される。
【００５６】
[0082]図２３Ａおよび図２３Ｂは、一実施形態による、エッジ修復フィルタが背景色および対象になる色を見つける画像を示す。対象になる色は、外側から議論の領域へと外挿される。
【００５７】
[0083]図２４Ａおよび図２４Ｂは、一実施形態による、エッジから議論の領域までの距離および計算した背景確率値を示す画像である。さらにその上、図２５は、一実施形態による、最終処理をしていない画像上にテクスチャ加工を行った画像の最終的な合成テクスチャマップを示す。
【００５８】
[0084]前面画像および裏面画像を一緒に置くことから生じるシームは、修復される必要がある場合がある。メッシュ処理のわずかな残りは、前面と裏面シームの近くでありかつ取込み中にカラーカメラに見えない領域内のオブジェクトの外見を改善するために使用される。最初に、テクスチャ色が頂点においてどれだけ「悪い」かを表す頂点ごとのマスク値が計算される。この値は、（前面画像および裏面画像が接触するが、概して、上手く並んでない）シームまでの距離と、（カメラ視野から遠くに向いている表面に起因して、およびやはり不十分なテクセル密度から、テクスチャ色が分解される）取り込んだ画像のいずれかに対して頂点がどれだけ裏に向いているかとの積である。これらの値は、頂点色アルファチャネル内に記憶され得る。次に、表面色のぼかしたバージョンが、計算され、頂点色ＲＧＢチャネル中に記憶される。これらの色は、（細部においては低いが）かなり良い品質である。修復を必要とする負のアーティファクトは、比較的局在化され、高い頻度のものであり、ぼかすことは、より全体的な、低い頻度の色を与える。
【００５９】
[0085]図２６Ａおよび図２６Ｂは、一実施形態による、マスクした値およびひどくぼけた頂点の色を示す。実行時間において、マスク値は、一実施形態では、ソーステクスチャとぼけた頂点の色とを混ぜ合わせるために使用される。図２７Ａおよび図２７Ｂは、一実施形態による、テクスチャだけを有するメッシュ（図２７Ａ）および頂点の色がマスク値によって混ぜ合わさったメッシュ（図２７Ｂ）を示す。
【００６０】
[0086]図２８は、一実施形態による、ディジタル化したオブジェクトの最終的なレンダリングを示す。一実施形態では、一旦、最終的なメッシュおよびテクスチャが完成すると、Ｕｎｒｅａｌ  Ｅｎｇｉｎｅ３メッシュが、作られ、環境ならびにリム照明、自己遮蔽、およびアニメーションでレンダリングされる。ＧＯＥアプリもまた、Ｎｕｉスケルトンをスケルトン上へとマッピングすることによってオブジェクトをアバター化することを可能にする。
【００６１】
[0087]図２に戻って、受信コンポーネント２３１は、ユーザスケルトン情報を受信するようにさらに構成され得る。ユーザスケルトン情報とは、本明細書において使用するとき、概して、ユーザのスケルトンを特定するデータを言う。特に、関節角度、関節位置、等は、ユーザスケルトン情報中に含まれる。一実施形態では、受信コンポーネント２３１は、オブジェクトおよびユーザスケルトン情報を受信するように構成されたカメラの形態を取ることができる。追加の実施形態では、カメラは、ゲームシステムのカメラである。
【００６２】
[0088]特定コンポーネント２３２は、とりわけ、仮想環境においてオブジェクト（例えば、受信コンポーネント２３１によって受信されているディジタル化されたオブジェクト）、ユーザスケルトン、オブジェクトスケルトン、等を特定するように構成され得る。オブジェクトスケルトンとは、本明細書において使用するとき、概して、仮想環境においてオブジェクト上に置くためのスケルトンを言う。一実施形態では、１つのシステムが定義したテンプレートオブジェクトスケルトンが、仮想環境においてオブジェクトを制御するために使用される。代替実施形態では、複数のシステムが定義したテンプレートが、仮想環境においてオブジェクト上に置くために利用可能である場合がある。追加の実施形態では、オブジェクトスケルトンは、下記により詳細に説明するように、ユーザの動きのデモンストレーションに基づいてリアルタイムで作られてもよい。
【００６３】
[0089]最初に、一旦、オブジェクトがシステム２００によって受信されると、特定コンポーネント２３２は、オブジェクトと関係付けるためにオブジェクトスケルトンを特定することができる。１つのシステムが定義したテンプレートオブジェクトスケルトンが、オブジェクトと関係付けるために利用可能であると仮定すると、特定コンポーネント２３２は、オブジェクトと関係付けるために１つのシステムが定義したテンプレートオブジェクトスケルトンを特定することができる。
【００６４】
[0090]あるいは、複数のオブジェクトスケルトンが利用可能である場合には、特定コンポーネント２３２は、オブジェクトの１つまたは複数の特性を特定することができる。オブジェクトの１つまたは複数の特性は、オブジェクトの手足の数、オブジェクトの形状、オブジェクトのサイズ（例えば、長さ、幅、等）、等を含むことができるが、これらに限定されない。１つまたは複数の特性は、次に、特定コンポーネント２３２によって利用されることがあり、複数のオブジェクトスケルトンのうちの、オブジェクトの１つまたは複数の特性と対応する１つまたは複数のオブジェクトスケルトンを特定することができる。例えば、オブジェクトが２つの手足を有すると特定される場合には、２つの手足を有するオブジェクトスケルトンは、４つの手足を有するオブジェクトスケルトンよりもオブジェクトに対してよい一致である。
【００６５】
[0091]追加の実施形態では、オブジェクトスケルトンは、ユーザの自由度に基づいてリアルタイムで作られることがある。例えば、ユーザは、その手足を使用することによって特定コンポーネント２３２に対して動きをデモンストレーションすることができる。動作における自由度（すなわち、関節）をデモンストレーションすることによって、オブジェクトスケルトンは、ユーザの関節情報に基づいてリアルタイムで作られることがある。
【００６６】
[0092]特定コンポーネント２３２はまた、ユーザのユーザスケルトンを特定するように構成され得る。実施形態では、ユーザは、人間のユーザである。ユーザスケルトンは、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ（登録商標）によって作られたＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｔｉｃ（商標）システムなどのゲームシステムへと集積された、例えば、スケルトン追跡技術を使用して特定され得る。特定コンポーネント２３２は、システム２００の画像内のユーザを特定することができる。ユーザは、画像の各ピクセルおよび特定コンポーネント２３２からの各ピクセルの距離によって画像内で特定され得る。例えば、ユーザの各ピクセルは、特定コンポーネント２３２からほぼ等距離であるはずであるが、ユーザの背後のランプは、特定コンポーネント２３２からはユーザとは異なる距離であるはずである。加えて、ユーザの形状が、画像内のユーザを特定するために使用され得る。これらの技術を使用して、ユーザは、次に、背景から分離され得る。
【００６７】
[0093]一旦、ユーザが画像内で特定されると（すなわち、背景から分離されると）、ユーザのユーザスケルトンは、特定され得る。ユーザスケルトンは、ユーザの姿勢を特定することによって特定され得る。ユーザの姿勢とは、本明細書において使用されるとき、概して、ユーザの画像が取り込まれる時点でのユーザの位置を言う。ユーザの姿勢の中で、姿勢の関節角度、姿勢の関節位置、等を含むが、これらに限定されないユーザスケルトン情報が、特定される。ユーザの姿勢、およびその中のユーザスケルトン情報は、例えば、データストア２２０から入手可能である１つまたは複数のテンプレート姿勢に対して比較され得る。比較は、ユーザの姿勢の関節角度および関節位置をテンプレート姿勢の関節角度および関節位置と比較することができる。この情報を比較することによって、テンプレート姿勢に最も近い一致が特定され得る。最も近い一致は、ユーザスケルトンに関係付けられることがある。
【００６８】
[0094]マッピングコンポーネント２３３は、とりわけ、オブジェクトスケルトンをオブジェクトにおよびユーザスケルトンをオブジェクトにマッピングするように構成され得る。最初に、オブジェクトスケルトンは、仮想環境においてオブジェクトにマッピングされ得る。前に説明したように、オブジェクトスケルトンは、１つまたは複数のテンプレートオブジェクトスケルトンから選択され得る。マッピングコンポーネント２３３は、オブジェクトスケルトンの中心を特定することによってオブジェクトスケルトンをオブジェクトにマッピングすることができる。マッピングコンポーネント２３３はやはり、仮想環境においてオブジェクトの重心を特定することができる。マッピングコンポーネント２３３は、次にオブジェクトスケルトンの中心をオブジェクトの重心にマッピングすることができる。
【００６９】
[0095]想像できるように、オブジェクトスケルトンは、システムが定義したテンプレートスケルトンであるので、オブジェクトにぴったりと一致しないことがある（すなわち、オブジェクトは、オブジェクトスケルトンよりも大きいことも小さいこともある）。一実施形態では、オブジェクトは、オブジェクトスケルトンにぴったりと一致するようにサイズを変更される。オブジェクトスケルトンにぴったりと一致するようにオブジェクトのサイズを変更することは、オブジェクトの底部をユーザスケルトンの底部と位置合わせすることを含むことができるが、これに限定されない。実施形態では、オブジェクトの底部およびユーザスケルトンの底部は、相互に正確に位置合わせされる。次に、オブジェクトの最上部は、オブジェクトスケルトンの最上部と位置合わせされ得る。オブジェクトスケルトンの最上部がオブジェクトの最上部の下方の所定の距離となるように、オブジェクトの最上部は、オブジェクトスケルトンと位置合わせされ得る。オブジェクトスケルトンの最上部は、オブジェクトの頭部であると思われるオブジェクトの一部分を占めるオブジェクトの最上部の下方の所定の距離に位置合わせされ得る。一実施形態では、所定の距離は、オブジェクトの最上部の１０パーセント（１０％）下方である。所定の距離は、承認されたユーザによって指定される任意の距離であってもよい。
【００７０】
[0096]一代替実施形態では、オブジェクトスケルトンは、オブジェクトのサイズを変更するよりもむしろオブジェクトにぴったりと一致するようにサイズを変更される。オブジェクトスケルトンは、このように、オブジェクトスケルトンの底部およびオブジェクトの底部が位置合わせされるように、オブジェクトと位置合わせされるはずである。オブジェクトスケルトンの最上部はまた、オブジェクトスケルトンの最上部がオブジェクトの最上部の下方の所定の距離となるように、オブジェクトの最上部と位置合わせされ得る。実施形態では、所定の距離は、オブジェクトの最上部の１０パーセント（１０％）下方である。所定の距離は、承認されたユーザによって指定される任意の距離であってもよい。
【００７１】
[0097]一旦、マッピングコンポーネント２３３がオブジェクトスケルトンをオブジェクトにマッピングすると、ユーザスケルトンは、オブジェクトスケルトンにマッピングされ得る。ユーザスケルトンをオブジェクトスケルトンにマッピングすることは、１対１マッピング（１：１）であってもよく、１：１マッピングでなくてもよい。１：１マッピングは、ユーザスケルトンおよびオブジェクトスケルトン内の同じ数の関節を示す。この状況では、ユーザスケルトンの関節角度は、オブジェクトスケルトンの対応する関節角度にマッピングされ、その結果、オブジェクトスケルトンが、ユーザスケルトンの関節角度を忠実に反映する。
【００７２】
[0098]しかしながら、時には、マッピングは、１：１マッピングでないことがあり、オブジェクトスケルトンおよびユーザスケルトンが、異なる数の関節を有することを意味する。このケースでは、いくつかの関節の動きを誇張し、他の関節の動きを抑えることが望ましいことがある。加えて、１つの関節の動作が、オブジェクトスケルトン内の違った関節にマッピングされ得る。例えば、オブジェクトが象であると仮定する。明らかに、ユーザは、象の鼻を有さず、象は、ユーザの腕と同じように働く腕を有さない。ユーザスケルトンの腕の動作は、例えば、象の鼻にマッピングされ得る。このように、象の鼻は、ユーザの腕の動作に従って応答するであろう。
【００７３】
[0099]また、マッピングは、角度対角度である必要はない。例えば、関節位置（例えば、ユーザがどれだけ高く自分の手を持ち上げるか）は、オブジェクトスケルトンの関節のスケールでマッピングされることがあり、自分の手を持ち上げるユーザに応じて上に向かってオブジェクトに伸ばさせる。加えて、ユーザ関節角度は、さらに手の込んだ多関節アニメーションを制御するために使用されることがあり、そのため、１つのユーザ関節位置は、非線形の様式で複数のオブジェクト関節を制御するはずである。
【００７４】
[00100]一旦、ユーザスケルトンがオブジェクトスケルトンにマッピングされると、仮想環境におけるオブジェクトは、実世界ユーザを忠実に反映する。例えば、ユーザが自分の右腕を持ち上げる場合には、オブジェクトは、マッピングに従って同じやり方で反応するであろう（例えば、マッピングは、同様にオブジェクトにその右腕を持ち上げさせる１：１であってもよく、またはマッピングは、ユーザの右腕の動作にマッピングされてきている別の動作でオブジェクトに応答させる１：１でなくてもよい）。
【００７５】
[00101]制御エンジン２３０は、ユーザが動くたびにデータが更新されるように、リアルタイムで動作することがある。特に、ユーザスケルトンは、ユーザが動くたびに毎回更新され得る。これはまた、オブジェクトスケルトンへのユーザスケルトンの再マッピングを生じさせることがある。これがリアルタイムで起きているので、オブジェクトは、ユーザによって制御されたままであり、マッピングに従ってユーザの動作に応答し続けるであろう。
【００７６】
[00102]表示コンポーネント２３４は、オブジェクトを表示するように構成される。表示されたオブジェクトは、マッピングに従って、ユーザの動作に応答するであろう。
[00103]ここで図２９を参照すると、本発明の一実施形態に従って、仮想環境においてオブジェクトを制御するための全体にわたる方法２９００を示す流れ図が提供される。最初に、ブロック２９１０において示したように、オブジェクトは、仮想環境において特定される。以前に示したように、オブジェクトは、実世界から仮想環境へと受信された任意の人間でないオブジェクトであってもよい。オブジェクトスケルトンは、ブロック２９２０においてオブジェクトにマッピングされる。オブジェクトスケルトンは、オブジェクトにぴったりと一致するようにサイズを変更された、システムが定義したオブジェクトスケルトンテンプレートである場合がある。あるいは、オブジェクトは、オブジェクトスケルトンにぴったりと一致するようにサイズを変更されてもよい。ブロック２９３０において、ユーザのユーザスケルトンが受信される。実世界ユーザのユーザスケルトンが受信され、関節の数、関節角度、関節位置、等を含むスケルトン情報が、特定され得る。ブロック２９４０において、ユーザスケルトンは、オブジェクトがユーザによって制御されるように、オブジェクトスケルトンにマッピングされる。特に、ユーザの動作は、オブジェクトの動作を制御する。
【００７７】
[00104]ここで図３０を参照すると、本発明の一実施形態に従って、仮想環境においてオブジェクトを制御するための全体にわたる方法３０００を示す流れ図が提供される。最初に、ブロック３０１０において示したように、オブジェクトが、仮想環境において特定される。実施形態では、オブジェクトは、ディジタル化されてきており、仮想環境において受信されてきている実世界オブジェクトである場合がある。ブロック３０２０において、オブジェクトの重心を特定し、オブジェクトスケルトンの中心をオブジェクトの重心上へと置くことによって、オブジェクトスケルトンは、オブジェクトにマッピングされる。オブジェクトおよび／またはオブジェクトスケルトンは、次に、ブロック３０３０において、オブジェクトスケルトンの底部がオブジェクトの底部と位置合わせされるように、ぴったりと一致するようにサイズを変更され得る。ユーザのユーザスケルトンは、ブロック３０４０において受信される。ユーザスケルトンは、ブロック３０５０において、オブジェクトスケルトンの１つまたは複数の関節角度がユーザスケルトンの１つまたは複数の関節角度を忠実に反映するように、オブジェクトスケルトンにマッピングされる。ブロック３０６０において、ユーザの動作が特定され、ブロック３０７０において、オブジェクトの動作がユーザの動作を忠実に反映するように、オブジェクトは動く。
【００７８】
[00105]本発明は、特定の実施形態に関して記載されてきており、これは、すべてに関して限定的であるというよりはむしろ例示的であることを目的としている。代替実施形態は、本発明がその範囲から乖離せずに関係する当業者には明らかになるであろう。
【００７９】
[00106]本発明はさまざまな変形形態および代替構成の影響を受けやすいが、本発明のある種の図示した実施形態は、図面に示され、上に詳細に記述されてきている。しかしながら、開示した特定の形態に本発明を限定するものではなく、対照的に、目的は、本発明の精神および範囲内になるすべての変形形態、代替構成、および等価物を包含することであることを、理解すべきである。
【００８０】
[00107]上記から、本発明が、システムおよび方法に対して明らかであり本質的である他の利点とともに、上に述べたすべての目的および目標を達成するようによく適合されていることが分かるであろう。ある種の構成および部分的組合せが有用なものであり、他の構成および部分的組合せを参照せずに利用される場合があることが理解されるであろう。これは、特許請求の範囲によって予期され、特許請求の範囲の範囲内である。
【図１】
0005985619.tif 000002
【図２】
0005985619.tif 000003
【図３】
0005985619.tif 000004
【図４】
0005985619.tif 000005
【図５】
0005985619.tif 000006
【図６】
0005985619.tif 000007
【図７】
0005985619.tif 000008
【図８】
0005985619.tif 000009
【図９】
0005985619.tif 000010
【図１０】
0005985619.tif 000011
【図１１】
0005985619.tif 000012
【図１２】
0005985619.tif 000013
【図１３Ａ−１３Ｂ】
0005985619.tif 000014
【図１４】
0005985619.tif 000015
【図１５】
0005985619.tif 000016
【図１６】
0005985619.tif 000017
【図１７】
0005985619.tif 000018
【図１８】
0005985619.tif 000019
【図１９】
0005985619.tif 000020
【図２０Ａ−２０Ｅ】
0005985619.tif 000021
【図２１Ａ】
0005985619.tif 000022
【図２１Ｂ】
0005985619.tif 000023
【図２２Ａ】
0005985619.tif 000024
【図２２Ｂ】
0005985619.tif 000025
【図２３Ａ】
0005985619.tif 000026
【図２３Ｂ】
0005985619.tif 000027
【図２４Ａ】
0005985619.tif 000028
【図２４Ｂ】
0005985619.tif 000029
【図２５】
0005985619.tif 000030
【図２６Ａ−２６Ｂ】
0005985619.tif 000031
【図２７Ａ−２７Ｂ】
0005985619.tif 000032
【図２８】
0005985619.tif 000033
【図２９】
0005985619.tif 000034
【図３０】
0005985619.tif 000035