特許第5985619号(P5985619)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5985619
(24)【登録日】2016年8月12日
(45)【発行日】2016年9月6日
(54)【発明の名称】仮想環境におけるオブジェクトの制御
(51)【国際特許分類】
   G06T 19/00 20110101AFI20160823BHJP
【FI】
   G06T19/00 600
【請求項の数】9
【全頁数】30
(21)【出願番号】特願2014-514530(P2014-514530)
(86)(22)【出願日】2012年6月4日
(65)【公表番号】特表2014-517413(P2014-517413A)
(43)【公表日】2014年7月17日
(86)【国際出願番号】US2012040796
(87)【国際公開番号】WO2012170361
(87)【国際公開日】20121213
【審査請求日】2015年5月25日
(31)【優先権主張番号】61/493,787
(32)【優先日】2011年6月6日
(33)【優先権主張国】US
(31)【優先権主張番号】13/281,596
(32)【優先日】2011年10月26日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100153028
【弁理士】
【氏名又は名称】上田 忠
(74)【代理人】
【識別番号】100120112
【弁理士】
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100147991
【弁理士】
【氏名又は名称】鳥居 健一
(74)【代理人】
【識別番号】100119781
【弁理士】
【氏名又は名称】中村 彰吾
(74)【代理人】
【識別番号】100162846
【弁理士】
【氏名又は名称】大牧 綾子
(74)【代理人】
【識別番号】100173565
【弁理士】
【氏名又は名称】末松 亮太
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(72)【発明者】
【氏名】ウィロビー,クリストファー・ハーレー
(72)【発明者】
【氏名】エバート,ジェフリー・ジーザス
(72)【発明者】
【氏名】クラーク,ジャスティン・アヴラム
(72)【発明者】
【氏名】ヒンドル,ベン・ジョン
(72)【発明者】
【氏名】サーレット,ピーター・グレン
(72)【発明者】
【氏名】ディーゲロ,ジョエル
【審査官】 真木 健彦
(56)【参考文献】
【文献】 特表2006−514366(JP,A)
【文献】 特開2008−033521(JP,A)
【文献】 特開2001−043400(JP,A)
【文献】 特表2012−528398(JP,A)
【文献】 米国特許出願公開第2007/0211067(US,A1)
【文献】 山中 修,Softimage3Dで大作アニメーションを作ろう!,dpi 第6巻 第1号,日本,株式会社毎日コミュニケーションズ,1998年 1月10日,第6巻 第1号,P.122-127
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
G06T 13/40
A63F 13/00 − 13/98
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のコンピューティングデバイスによって使用されたときに、前記1つまたは複数のコンピューティングデバイスに方法を実行させるコンピュータ使用可能な命令を記憶する1つまたは複数のコンピュータ記憶媒体であって、前記方法が、
仮想環境においてオブジェクトを特定する(identifying)テップと、
前記オブジェクトと関連付けるための、オブジェクトスケルトンを特定するステップであって、当該オブジェクトスケルトンが、前記オブジェクトの1つ又は複数の特性に基づいて特定されるものと、
オブジェクトスケルトン(skeleton)を前記オブジェクトにマッピングするステップであり、前記オブジェクトスケルトンが事前に定義されたテンプレートであり、当該テンプレートが、1つ又は複数の関節角度を有し、当該関節角度が、1つ又は複数の関節の間の角度の大きさを表すものと、
ユーザスケルトンを受信するステップであり、前記ユーザスケルトンがユーザのスケルトンの画像であり、当該ユーザのスケルトンが、1つ又は複数の関節角度を有する、ステップと、
前記オブジェクトが前記ユーザによって制御されるように、前記ユーザスケルトンを前記オブジェクトスケルトンにマッピングするステップと
を含み、
前記ユーザスケルトンを前記オブジェクトスケルトンにマッピングするステップが、
前記ユーザスケルトンの関節位置を、前記オブジェクトスケルトンの関節のスケールにマッピングするステップであって、前記関節位置の動きに応じて前記オブジェクトが伸ばさせられ、前記関節位置が、前記オブジェクトの複数の関節を、非線形的に制御するものを含む、
1つまたは複数のコンピュータ記憶媒体。
【請求項2】
前記オブジェクトスケルトンを前記オブジェクトにマッピングするステップが、
前記オブジェクトスケルトンの中心(center)を特定するサブステップと、
前記オブジェクトの重心(center of mass)を特定するサブステップと、
前記オブジェクトスケルトンの前記中心を前記オブジェクトの前記重心上へと置く(imposing)サブステップとを含む、請求項1に記載の1つまたは複数のコンピュータ記憶媒体。
【請求項3】
前記方法が、前記オブジェクトスケルトンにぴったりと一致するように前記オブジェクトのサイズを変更するステップ
をさらに含む、請求項2に記載の1つまたは複数のコンピュータ記憶媒体。
【請求項4】
前記オブジェクトスケルトンにぴったりと一致するように前記オブジェクトのサイズを変更するステップが、
前記オブジェクトの底部(bottom)を前記オブジェクトスケルトンの底部と位置合わせ(aligning)するサブステップと、
前記オブジェクトの最上部(top)が前記オブジェクトの前記最上部の下方の(below)所定の距離となるように前記オブジェクトの最上部を前記オブジェクトスケルトンの前記最上部と位置合わせするサブステップと
を含む、請求項3に記載の1つまたは複数のコンピュータ記憶媒体。
【請求項5】
前記オブジェクトスケルトンの前記最上部の下方の前記所定の距離が、前記オブジェクトスケルトンの前記最上部の10パーセント(10%)下方である、請求項4に記載の1つまたは複数のコンピュータ記憶媒体。
【請求項6】
前記オブジェクトは、前記オブジェクトの動作が前記ユーザの動作を忠実に反映するように前記ユーザによって制御される、請求項1に記載の1つまたは複数のコンピュータ記憶媒体。
【請求項7】
仮想環境においてオブジェクトを制御するためのシステムであって、
1つまたは複数のプロセッサおよび1つまたは複数のコンピュータ可読記憶媒体に関係付けられたコンピューティングデバイスと、
前記コンピューティングデバイスにつなげられたデータストアと、
制御エンジンであり、
オブジェクトを特定し、
ユーザスケルトンおよびオブジェクトスケルトンを含む1つまたは複数のスケルトンを特定し、各スケルトンが、1つ又は複数の関節角度を有し、関節角度が、1つ又は複数の関節の間の角度の大きさを表し、前記オブジェクトスケルトンが、前記オブジェクトの1つ又は複数の特性に基づいて特定され、
前記ユーザスケルトンの前記1つ又は複数の関節角度を、前記オブジェクトスケルトンの、前記対応する1つ又は複数の関節角度にマッピングし、
前記ユーザスケルトンの関節位置を、前記オブジェクトスケルトンの関節のスケールにマッピングし、前記オブジェクトが、前記関節位置の動きに応じて伸ばされ、前記関節位置が、前記オブジェクトの複数の関節を、非線形的に制御し、
オブジェクトが前記ユーザスケルトンの動作を忠実に反映するように操作されるように前記オブジェクトスケルトンを管理する
制御エンジンと
を備えた、システム。
【請求項8】
前記制御エンジンが、前記ユーザの姿勢を複数のテンプレート姿勢と比較し、前記ユーザの前記姿勢と対応する前記複数のテンプレート姿勢のうちの1つを特定することによって、前記複数のテンプレート姿勢から前記ユーザスケルトンを特定する、請求項7に記載のシステム。
【請求項9】
1つまたは複数のコンピューティングデバイスによって使用されたときに、前記1つまたは複数のコンピューティングデバイスに方法を実行させるコンピュータ使用可能な命令を記憶する1つまたは複数のコンピュータ記憶媒体であって、前記方法が、
仮想環境においてオブジェクトを特定するステップであり、前記オブジェクトが仮想形態へとディジタル化されている実世界オブジェクトである、ステップと、
前記オブジェクトと関連付けるための、オブジェクトスケルトンを特定するステップであって、前記オブジェクトが、前記オブジェクトの1つ又は複数の特性に基づいて特定されるものと、
前記オブジェクトの重心を特定し、オブジェクトスケルトンの中心を前記オブジェクトの前記重心上へと置くことによって、前記オブジェクトスケルトンを前記オブジェクトにマッピングするステップであり、前記オブジェクトスケルトンが事前に定義されたテンプレートである、ステップと、
前記オブジェクトスケルトンの底部が前記オブジェクトの底部と位置合わせされるように、前記オブジェクトスケルトンのサイズに対応するように前記オブジェクトのサイズを変更するステップと、
ユーザスケルトンを受信するステップであり、前記ユーザスケルトンがユーザのスケルトンであり、前記ユーザスケルトンが、ユーザの姿勢によって特定され、ユーザスケルトンの情報が、当該姿勢の1つ又は複数の関節角度を含む、ステップと、
前記オブジェクトスケルトンの1つまたは複数の関節角度が前記ユーザスケルトンの1つまたは複数の関節角度の少なくとも1つを忠実に反映するように、前記ユーザスケルトンを前記オブジェクトスケルトンにマッピングするステップであり、1つの関節角度が1つまたは複数の関節間の角度の大きさ(a degree of an angle)を表し、
前記オブジェクトが、前記ユーザスケルトンの姿勢の関節位置の動きに応じて伸ばされ、前記関節位置が、前記オブジェクトの複数の関節を、非線形的に制御する、ステップと、
前記ユーザの動作を特定するステップと、
前記ユーザの前記動作を特定するステップに応じて、前記オブジェクトの動作が前記ユーザの前記動作を忠実に反映するように、前記オブジェクトを動かすステップとを含む、
1つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願発明の一実施例は、例えば、仮想環境におけるオブジェクトの制御に関する。
【背景技術】
【0002】
[0001]仮想環境は、近年著しい進歩を遂げている。これらの進歩につれて、仮想環境との相互作用を高めたいというユーザからの要求が増加してきている。ウェブカメラに基づく頭部追跡を使用する所定のモデルのリアルタイム制御は、いくつかのビデオチャットアプリケーションにおいて現在利用可能であり、それにより、ユーザは、ユーザの頭部の位置を追跡することによって仮想アバターの頭部を制御し、ユーザの音声を使用してアバターの口を制御することが可能になる。それにもかかわらずこのケースでは、アバターは、事前に決められており、追跡は、頭部に限定され、ユーザの頭部の向きとアバターの頭部の向きとの間の単純な1対1マッピングが使用される。実世界から受信され、仮想オブジェクトへとディジタル化されたオブジェクトを、ユーザが十分に制御することを可能にするモデルは、現在のところ存在しない。言い換えると、オブジェクトは、事前に決められていない。さらに、ユーザの身体を使用して全体の仮想オブジェクト(例えば、手足、頭部、等)を制御するのにユーザのスケルトンの追跡情報を利用することは、利用可能ではない。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本願発明の一実施例は、例えば、仮想環境におけるオブジェクトの制御に関する。
【課題を解決するための手段】
【0004】
[0002]この「発明の概要」は、「発明を実施するための形態」において下記にさらに説明される概念の選択を単純化した形態で紹介するために提供される。この「発明の概要」は、特許請求した主題の鍵となる特徴または本質的な特徴を特定することを目的とせず、特許請求した主題の範囲を決定する際に補助として使用されることも目的としない。
【0005】
[0003]本発明の実施形態は、とりわけ、仮想環境においてオブジェクトを制御するためのシステム、方法、およびコンピュータ記憶媒体に関する。実世界オブジェクトは、以降に詳細に説明されるように、ディジタル化され得、例えば、ゲームシステムによって受信可能である。一実施形態では、実世界オブジェクトは、無生物オブジェクト(例えば、椅子、ボール、動物のぬいぐるみ、等)、ペット(例えば、猫)、等などの人間でないオブジェクトである。一旦、ディジタル化したオブジェクトが受信されると、オブジェクトがユーザによって制御されるように、オブジェクトおよび人間ユーザのさまざまなスケルトンのマッピングが実行可能である。言い換えると、ユーザの動作は、仮想環境においてオブジェクトの動作を制御することができる。
【0006】
[0004]本発明は、添付した図面を参照して下記に詳細に説明される。
【図面の簡単な説明】
【0007】
図1】[0005]本発明の実施形態を実装する際に使用するのに適した例示的なコンピューティング環境のブロック図である。
図2】[0006]本発明の一実施形態による、仮想環境においてオブジェクトを制御するための環境を示すブロック図である。
図3】[0007]本発明の一実施形態による、ディジタル化のためにオブジェクトを提示するユーザの図である。
図4】[0008]本発明の一実施形態による、オブジェクトをディジタル化するための作業の流れの図である。
図5】[0009]図5Aは、本発明の一実施形態による、ディジタル化のためにオブジェクトを提示するユーザのカメラ視野像である。図5Bは、本発明の一実施形態による、ディジタル化のためにオブジェクトを提示するユーザのカメラ視野像である。
図6】[0010]本発明の一実施形態による、オブジェクトをディジタル化するために利用可能なセグメント化した深さ画像である。
図7】[0011]本発明の一実施形態による、深さと色のオフセットの図である。
図8】[0012]本発明の一実施形態による、オブジェクトをディジタル化するために利用可能なソースカラー画像である。
図9】[0013]本発明の一実施形態による、取り込んだオブジェクトの色セグメント化の図である。
図10】[0014]本発明の一実施形態による、ディジタル化すべきオブジェクトを保持するために指図を与えるユーザインターフェース(UI)の図である。
図11】本発明の一実施形態による、ディジタル化すべきオブジェクトを保持するために指図を与えるユーザインターフェース(UI)の図である。
図12】[0015]本発明の一実施形態による、オブジェクトの三次元(3D)ポイントクラウド構成の図である。
図13】[0016]本発明の一実施形態による、位置を合わせたポイントシートの2つの視野の図である。
図14】[0017]本発明の一実施形態による、最終的なポイントクラウド構成の図である。
図15】[0018]本発明の一実施形態による、ユーザに表示されたディジタル化したオブジェクトの確認画像を表示するUIの図である。
図16】[0019]本発明の一実施形態による、取り込んだ画像のメッシュ出力の図である。
図17】[0020]本発明の一実施形態による、オブジェクトのスムージングし処理した画像である。
図18】[0021]本発明の一実施形態による、UV座標を有する画像である。
図19】[0022]本発明の一実施形態による、最終的なテクスチャマップのセクションへと描かれた前向きの三角形エッジの図である。
図20】[0023]図20Aは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。図20Bは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。図20Cは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。図20Dは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。図20Eは、本発明の一実施形態による、生成したスケルトンの構造の骨に加えられた重み付けを示す図である。
図21】[0024]図21Aは、本発明の一実施形態による、輝度/彩度処理前の画像の図である。図21Bは、本発明の一実施形態による、輝度/彩度処理後の画像である。
図22】[0025]図22Aは、本発明の一実施形態による、ソース画像の図である。図22Bは、本発明の一実施形態による、エッジがフィルタリングされた後の出力画像である。
図23】[0026]図23Aは、本発明の一実施形態による、エッジ修復フィルタが背景色になる色を見つけた場合の画像の図である。図23Bは、本発明の一実施形態による、エッジ修復フィルタが対象になる色を見つけた場合の画像である。
図24】[0027]図24Aは、本発明の一実施形態による、エッジから問題となる領域までの距離を示す画像である。図24Bは、本発明の一実施形態による、計算した背景確率値を示す画像である。
図25】[0028]一実施形態による、最終的な合成テクスチャマップの図である。
図26】[0029]図26Aは、本発明の一実施形態による、マスクされた値の図である。図26Bは、本発明の一実施形態による、ひどくぼけた頂点の色の図である。
図27】[0030]図27Aは、本発明の一実施形態による、テクスチャだけを有するメッシュの図である。図27Bは、本発明の一実施形態による、頂点の色がマスク値によって混ぜ合わさったテクスチャを有するメッシュの図である。
図28】[0031]本発明の一実施形態による、ディジタル化したオブジェクトの最終的なレンダリングの図である。
図29】[0032]本発明の一実施形態による、仮想環境においてオブジェクトを制御するための方法を示す流れ図である。
図30】[0033]本発明の一実施形態による、仮想環境においてオブジェクトを制御するための方法を示す流れ図である。
【発明を実施するための形態】
【0008】
[0034]本発明の主題は、法的要件を満たすように本明細書において特異性と共に説明される。しかしながら、説明それ自体は、本発明の範囲を限定することを目的としない。むしろ、特許請求した主題が、他の方法でも具体化されて、他の現在の技術または将来の技術と協働して、本明細書に説明するものとは異なるステップまたは類似のステップの組合せを含み得ることが企図される。その上、「ステップ」および/または「ブロック」という用語が、利用する方法のさまざまな要素を含むように本明細書においては使用され得るが、これらの用語は、個々のステップの順序が明確に記載されない限りおよび記載されるときを除いて、本明細書中に開示したさまざまなステップ間でいずれかの特定の順序を示唆するようには解釈されるべきではない。
【0009】
[0035]本発明の実施形態は、とりわけ、仮想環境においてオブジェクトを制御するためのシステム、方法、およびコンピュータ記憶媒体を対象とする。実世界オブジェクトは、以降に詳細に説明されるように、ディジタル化され得、例えば、ゲームシステムによって受信可能である。一実施形態では、実世界オブジェクトは、無生物オブジェクト(例えば、椅子、ボール、動物のぬいぐるみ、等)、ペット(例えば、猫)、等などの人間でないオブジェクトである。一旦、ディジタル化したオブジェクトが受信されると、オブジェクトがユーザによって制御されるように、オブジェクトおよびユーザのさまざまなスケルトンのマッピングが実行可能である。言い換えると、ユーザの動作は、仮想環境においてオブジェクトの動作を制御することができる。
【0010】
[0036]したがって、本発明の一実施形態は、1つまたは複数のコンピューティングデバイスによって使用されるときに、仮想環境においてオブジェクトを制御するための方法をコンピューティングデバイスに実行させるコンピュータ使用可能な命令を記憶する1つまたは複数のコンピュータ記憶媒体を対象とする。本方法は、仮想環境においてオブジェクトを特定するステップを含む。オブジェクトは、任意の人間でないオブジェクトであってもよい。オブジェクトスケルトンは、オブジェクトにマッピングされる。オブジェクトスケルトンは、事前に定義されたテンプレートであってもよく、オブジェクトおよび/またはオブジェクトスケルトンは、相互にぴったりと合うように調節され得る。ユーザスケルトンは、受信され、オブジェクトスケルトンにマッピングされる。ユーザスケルトンは、ユーザのスケルトンの画像である。一旦、ユーザスケルトンがオブジェクトスケルトンにマッピングされると、オブジェクトは、ユーザによって制御される。特に、ユーザの動作は、仮想環境においてオブジェクトの動作を制御する。
【0011】
[0037]本発明の別の一実施形態では、仮想環境においてオブジェクトを制御するためのプロセッサおよびメモリを備えたシステムを対象とする。本システムは、1つまたは複数のプロセッサおよび1つまたは複数のコンピュータ可読記憶媒体に関係付けられたコンピューティングデバイス、コンピューティングデバイスにつなげられたデータストア、ならびにユーザスケルトンおよびオブジェクトスケルトンを含む1つまたは複数のスケルトンを特定し、ユーザスケルトンをオブジェクトスケルトンにマッピングし、オブジェクトがユーザスケルトンの動作を忠実に反映するように操作されるようにオブジェクトスケルトンを管理する制御エンジンを備える。
【0012】
[0038]本発明のさらに別の一実施形態は、1つまたは複数のコンピューティングデバイスによって使用されたときに、仮想環境においてオブジェクトを制御するための方法をコンピューティングデバイスに実行させるコンピュータ使用可能な命令を記憶する1つまたは複数のコンピュータ記憶媒体を対象とする。方法は、仮想環境においてオブジェクトを特定するステップを含む。オブジェクトは、仮想環境において仮想形態へとディジタル化されてきている実世界オブジェクトである。オブジェクトスケルトンは、オブジェクトの重心を特定し、オブジェクトスケルトンの中心をオブジェクトの重心上へと置くことによってオブジェクトにマッピングされる。オブジェクトは、オブジェクトスケルトンの底部がオブジェクトの底部と位置合わせされるように、オブジェクトスケルトンのサイズに対応するようにサイズを変更される。ユーザスケルトンは、次に受信され、オブジェクトスケルトンの1つまたは複数の関節角度がユーザスケルトンの1つまたは複数の関節角度を忠実に反映するように、オブジェクトスケルトンにマッピングされる。ユーザの動作は、特定され、ユーザの動作を特定するステップに応じて、オブジェクトの動作がユーザの動作を忠実に反映するように、オブジェクトを動かす。
【0013】
[0039]本発明の実施形態の概要を手短に説明すると、本発明の実施形態が実装され得る例示的な動作環境が、本発明のさまざまな態様についての概括的なコンテキストを提供するために下記に説明される。特に、最初に図1を参照すると、本発明の実施形態を実装するための例示的な動作環境が示され、全体としてコンピューティングデバイス100と示される。コンピューティングデバイス100は、適したコンピューティング環境のほんの一例であり、本発明の使用または機能の範囲に関して何らかの限定を示唆しないものとする。コンピューティングデバイス100が、示したコンポーネントのいずれか1つまたは組合せに関係する何らかの依存性または必要条件を有するように解釈されるべきではない。
【0014】
[0040]本発明は、コンピュータ、またはパーソナルデータアシスタントもしくは他のハンドヘルドデバイスなどの他のマシンによって実行される、プログラムモジュールなどのコンピュータ実行可能な命令を含むコンピュータコードまたはマシン使用可能な命令の概括的なコンテキストにおいて説明することができる。概して、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含むプログラムモジュールとは、特定のタスクを実行するまたは特定の抽象データタイプを実装するコードを言う。本発明は、ハンドヘルドデバイス、家庭用電気製品、汎用コンピュータ、より専門的なコンピューティングデバイス、等を含むさまざまなシステム構成において実行可能である。本発明はまた、通信ネットワーク介してリンクされたリモート処理デバイスによってタスクが実行される分散型コンピューティング環境において実行可能である。
【0015】
[0041]図1を参照すると、コンピューティングデバイス100は、下記のデバイス、すなわちメモリ112、1つまたは複数のプロセッサ114、1つまたは複数のプレゼンテーションコンポーネント116、入力/出力(I/O)ポート118、入力/出力コンポーネント120、および例示の電源122、を直接的にまたは間接的につなげるバス110を含む。バス110は、何であろうとも(アドレスバス、データバス、またはこれらの組合せなどの)1つまたは複数のバスを表す。図1のさまざまなブロックが明確化のために線で示されるが、実際には、描かれたさまざまなコンポーネントは、それほど明確ではなく、例えて言えば、線は、さらに正確な表現をすれば、灰色であり曖昧であるはずである。例えば、I/Oコンポーネントになる表示デバイスなどのプレゼンテーションコンポーネントを考えることができる。また、プロセッサはメモリを有する。発明者らは、このようなものが本技術の本質であることを認識し、図1の図が本発明の1つまたは複数の実施形態とともに使用されることが可能な例示的なコンピューティングデバイスの単なる例示であることを繰り返して述べる。下記のすべてが、図1および「コンピューティングデバイス」への言及の範囲内であると考えられるので、「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルドデバイス」、等などのカテゴリー間で、区別は行われない。
【0016】
[0042]コンピューティングデバイス100は、典型的にはさまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピューティングデバイス100によってアクセスされることが可能な任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体の両方、リムーバブル媒体とノンリムーバブル媒体の両方を含む。例として、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装された揮発性媒体および不揮発性媒体の両者、リムーバブル媒体およびノンリムーバブル媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、ディジタル多用途ディスク(DVD)もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用されること可能であり、コンピューティングデバイス100によってアクセスされ得る任意の他の媒体を含むが、これらに限定されない。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュールまたは、搬送波もしくは他のトランスポート機構などの変調されたデータ信号中の他のデータを組み込み、そして任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内に情報をエンコードするような方式で1つまたは複数の信号の特性を設定したまたは変更した信号を意味する。例として、限定するのではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体ならびに、アコースティック媒体、RF媒体、赤外媒体、および他のワイヤレス媒体などのワイヤレス媒体を含む。上記のいずれかの組合せもまた、コンピュータ可読媒体の範囲内にやはり含まれるべきである。
【0017】
[0043]メモリ112は、揮発性メモリおよび/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。メモリは、リムーバブル、ノンリムーバブル、またはこれらの組合せであってもよい。例示的なハードウェアデバイスは、固体メモリ、ハードドライブ、光ディスクドライブ、等を含む。コンピューティングデバイス100は、メモリ112またはI/Oコンポーネント120などのさまざまなエンティティからデータを読み出す1つまたは複数のプロセッサを含む。(1つまたは複数の)プレゼンテーションコンポーネント116は、ユーザまたは他のデバイスにデータ表示を提示する。例示的なプレゼンテーションコンポーネントは、表示デバイス、スピーカ、印刷コンポーネント、振動コンポーネント、等を含む。
【0018】
[0044]I/Oポート118は、コンピューティングデバイス100がI/Oコンポーネント120を含む他のデバイスに論理的につなげられることを可能にし、他のデバイスのいくつかは、ビルトインであってもよい。例示のコンポーネントは、マイクロフォン、ジョイスティック、ゲームパッド、衛星用パラボラアンテナ、スキャナ、プリンタ、ワイヤレスデバイス、等を含む。
【0019】
[0045]前に示したように、本発明の実施形態は、仮想環境においてオブジェクトを制御することを対象とする。ここで図2に転じて、ブロック図は、本発明の実施形態が利用可能な例示的なコンピューティングシステム200を図説することを提供する。本明細書において説明するこの配置および他の配置が例としてのみ示されることを理解すべきである。別の配置および要素(例えば、マシン、インターフェース、機能、順序、および機能のグループ分け、等)が、示したものに加えてまたは代わりに使用されても、いくつかの要素は、完全に省略されてもよい。さらに、本明細書において説明する要素の多くは、別個の要素もしくは分散型要素として、または他のコンポーネントとともに、ならびに任意の適した組合せおよび場所に実装可能な機能エンティティである。1つまたは複数のエンティティによって実行されるように本明細書において説明するさまざまな機能は、ハードウェア、ファームウェア、および/またはソフトウェアによって実行可能である。例えば、さまざまな機能は、メモリ内に記憶された命令を実行するプロセッサによって実行可能である。
【0020】
[0046]示されていない他のコンポーネントの中で、コンピューティングシステム200は、概してネットワーク210、データストア220、および制御エンジン230を含む。制御エンジン230は、下記に説明する機能を実行するために専用デバイスの形態を取ることができ、例えば、ネットワークアクセスデバイス、ゲームシステム、等、またはこれらの任意の組合せへと一体化され得る。コンピューティングシステム200のコンポーネントは、ネットワーク210を介して相互に通信することができ、ネットワークは、限定ではなく、1つもしくは複数のローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)を含むことができる。このようなネットワーク環境は、事務所、会社規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて普通である。任意の数のコンピューティングデバイスおよび制御エンジンが本発明の実施形態の範囲内でコンピューティングシステム200の中に採用され得ることを、理解すべきである。1つのデバイス/インターフェースまたは分散型環境において協働する複数のデバイス/インターフェースを、各々が含むことができる。例えば、制御エンジン230は、分散型環境内に配置された複数のデバイスおよび/またはモジュールを含むことができ、これらは本明細書において説明する制御エンジン230の機能を全体として与える。加えて、示されていない他のコンポーネント/モジュールもまた、コンピューティングシステム200内に含まれることがある。
【0021】
[0047]いくつかの実施形態では、示したコンポーネント/モジュールのうちの1つまたは複数は、スタンドアロンアプリケーションとして実装され得る。別の実施形態では、示したコンポーネント/モジュールのうちの1つまたは複数は、インターネットベースのサービスとして、またはゲームシステムの内部のモジュールとして制御エンジン230を介して実装され得る。図2に示されたコンポーネント/モジュールは、性質においておよび数において例示的であり、限定するようには解釈すべきでないことが、当業者には理解されるであろう。任意の数のコンポーネント/モジュールが、本発明の実施形態の範囲内で所望の機能を実現するために採用されことがある。さらに、コンポーネント/モジュールは、任意の数のサーバまたはクライアントコンピューティングデバイス上に設置され得る。単に例として、制御エンジン230は、ゲームシステム、サーバ、サーバのクラスタ、または1つもしくは複数の残りのコンポーネントからは遠くのコンピューティングデバイス内に存在することがある。
【0022】
[0048]本明細書において説明するこの配置および他の配置が例としてのみ示されることが理解されるはずである。別の配置ならびに要素(例えば、マシン、インターフェース、機能、順序、および機能のグループ分け、等)が、示したものに加えてまたは代わりに使用されても、いくつかの要素は、完全に省略されてもよい。さらに、本明細書において説明する要素の多くは、個別の要素もしくは分散型要素として、または他のコンポーネント/モジュールとともに、ならびに任意の適した組合せおよび場所に実装可能な機能エンティティである。1つまたは複数のエンティティによって実行されるように本明細書において説明するさまざまな機能は、ハードウェア、ファームウェア、および/またはソフトウェアによって実行可能である。例えば、さまざまな機能は、メモリ内に記憶された命令を実行するプロセッサによって実行可能である。
【0023】
[0049]概して、システム200は、仮想環境におけるオブジェクトが実世界ユーザによって制御される環境を示す。下記にさらに詳細に説明するように、本発明の実施形態は、ディジタル化したオブジェクトを受信するステップおよびスケルトンをオブジェクトにマッピングするステップを提供する。本発明のさらなる実施形態は、ユーザが仮想環境においてオブジェクトを制御するように、ユーザスケルトンをオブジェクトにマッピングするステップを提供する。
【0024】
[0050]制御エンジン230は、仮想環境においてオブジェクトを管理するように構成され、その結果、オブジェクトは、ユーザによって制御され得る。仮想環境におけるオブジェクトは、ペット、動物のぬいぐるみ、椅子、等などの任意の人間でないオブジェクトであってもよい。制御エンジン230は、受信コンポーネント231、特定コンポーネント232、マッピングコンポーネント233、および表示コンポーネント234を含む。コンポーネントの各々は、ユーザが仮想環境においてオブジェクトを制御することを、制御エンジン230が容易にすることを可能にするように構成される。
【0025】
[0051]受信コンポーネント231は、とりわけ、ディジタル化されているオブジェクトを受信するように構成され得る。オブジェクトは、一実施形態では、実世界オブジェクトである。実施形態では、オブジェクトは、任意の人間でない、実世界オブジェクトである。ディジタル化とは、本明細書において使用するとき、概して、システム200に提供された実世界オブジェクトを特定し、実世界オブジェクトを仮想オブジェクトへと処理するプロセスを言う。
【0026】
[0052]図3は、一実施形態による、オブジェクト306のディジタル表示を作るためのユーザ304のための環境300の図である。具体的に、環境300は、コンピューティングデバイス302へタコの人形として示されたオブジェクト306を提示するユーザ304を示し、コンピューティングデバイス302は、2つのカメラすなわちカラーカメラ308および深さカメラ310を搭載している。環境300において、コンピューティングデバイス302は、Microsoft Corporation(登録商標)によって作られたMicrosoft Kinect(商標)などのゲームコンソールである。コンピューティングデバイス302上のカメラは、オブジェクト306を含む1つまたは複数の画像を取り込む。カラーカメラ308は、画像用の色データを取り込み、深さカメラ310は、深さデータを取り込む。代替実施形態では、コンピューティングデバイス302は、色データおよび深さデータの両方を取り込む1つのカメラを有するだけであってもよい。
【0027】
[0053]図示しないが、ユーザ304は、裏側の画像を取り込むために、コンピューティングデバイスにオブジェクト306の裏側を提示することができ、裏側画像は、表側画像と結合され、オブジェクト306の3D表示を生成するために使用され得る。オブジェクトの別の視野の追加画像もまたより完全な3Dディジタル化をもたらすために取り込まれることがある。
【0028】
[0054]図4は、一実施形態による、オブジェクトをディジタル化するための作業の流れ400の図である。最初に、402において示したように、ユーザは、画像が撮られるように、コンピューティングデバイス上のカメラにオブジェクトを提示する。コンピューティングデバイスは、いくつかの実施形態では、画像の最適画像を取り込むために特定の領域へとオブジェクトを動かすようにユーザに指示することができる。例えば、ディスプレイ上に外形線を形成し、ユーザおよびオブジェクトのリアルタイム画像を示し、次に外形線へとオブジェクトを動かすようにユーザに指示する。一旦、初期画像が撮られると、404において示したように、コンピューティングデバイスは、取り込むためにオブジェクトの裏側を提示するようにユーザに指示することができる。裏側を取り込むための指図は、コンピューティングデバイスによって同様に行われることがある。取り込まれた各画像について、色データおよび深さデータが、記憶され、表示されるオブジェクトをディジタル化するために使用される。その上、複数の画像が、オブジェクトの前側像および裏側像用に取り込まれることがある。例えば、コンピューティングデバイスは、10枚の前面画像および10枚の裏面画像を撮るように、そしておそらく前面の10枚を一緒におよび裏面の10枚を一緒にマージするように、または画像をディジタル化するために20枚すべてを使用するように構成され得る。10枚の画像が、オブジェクトをディジタル化するための画像の理想的な数であるように示しているが、別の実施形態は、異なる数の取り込んだ画像を使用することができる。
【0029】
[0055]一旦、オブジェクトの前面画像および裏面画像がカメラによって取り込まれると、一実施形態は、406において示したように、カメラまでの画像内で最も近接した点を画像の深さデータを使用して検索することによって、オブジェクトをディジタル化することを始める。ユーザは、ユーザの前にディジタル化するオブジェクトをおそらく保持し、そのためオブジェクトは、他のものよりもカメラに近いはずである。図3に戻って、ユーザ304が自分の前にオブジェクト306を保持し、そのため、コンピューティングデバイス302により近いことに気付くことがある。画像内で最も近接したオブジェクトの場所を見つけることは、画像に関係する深さデータを使用して実現されることがあり、いくつかの実施形態は、前側画像および裏側画像の両者について処理を実行し、両者の中で最も近接したオブジェクトを特定する。
【0030】
[0056]408において示したように、画像内で特定された最も近接したオブジェクトは、次に、オブジェクト端がどこであるかを特定するためにエッジを検索される。深さデータは、画像中のオブジェクトのエッジの位置を見つけるために再び使用される。エッジ検索は、最も近接した点から外へ向かって始められ、複数の点の深さの著しい違いを探す。例えば、図3中のタコのエッジは、ユーザ304の肩を表す隣接する点よりもほぼ0.5メートル近い点を有することがある。このような著しい違いは、隣接する点がオブジェクトの一部ではなく、したがってさらに先のディジタル化ステップには含まれるべきではないという読み取り可能な信号を表す。このような方法でオブジェクトのすべてのエッジの位置を見つけることは、コンピューティングデバイスが画像内のオブジェクトを特定することを可能にする。
【0031】
[0057]一旦、オブジェクトが決定されると、一実施形態は、画像の残り(すなわち、オブジェクトとして特定されない画像の部分)に関係する色データをオフに切り替える。いくつかの実施形態では、複数の画像(例えば、オブジェクトの前面の10枚の画像および裏面の10枚の画像)を取り込むことが必要である場合があり、そのため、410において示したように、スムージング技術が、フレーム間の見つけたエッジを混ぜ合わせるために必要とされることがある。例えば、オブジェクトは、フレーム1とフレーム4との間で動くことがあり、そのためフレーム間のエッジのスムージングが、オブジェクトの正確な表示を得るために必要とされることがある。加えて、ノイズ、低解像度、および深さと色の位置合わせにおける不完全性がまた、エッジの追加のスムージングおよび/またはフィルタリングを必要とさせることがある。
【0032】
[0058]一実施形態では、412において示したように、結果として得られたスムージングしおよび/またはフィルタリングしたオブジェクトは、確認のためにユーザに提示される。ユーザは、次に、結果として得られたオブジェクトを受容するまたは拒絶することが可能である。受容された場合には、追加の処理が、オブジェクトをディジタル化するために続くことがある。拒絶された場合には、実施形態は、オブジェクトの新しい写真を撮ることによって処理全体を始めるかどうかをユーザに問い合わせることができる、または単純にオブジェクトを再スムージングするまたは再フィルタリングすることができる。
【0033】
[0059]最終的に、前面画像および裏面画像は、3Dでのオブジェクトのポイントクラウド構成を生成するために使用される。図12に詳細に示される「ポイントクラウド構成」は、特定されたオブジェクトの各点またはピクセルの深さを用いて、3D空間へのオブジェクトの前面画像および/または裏面画像のマッピングである。ポイントクラウド構成は、オブジェクトのさらに先のディジタル化の際に使用される。
【0034】
[0060]図5図27は、ディジタル化プロセスにおけるさまざまなステップの画像を示し、さまざまな実施形態によって使用される処理を図説するために下記にさらに詳細に論じられる。具体的に、図5Aおよび図5Bは、一実施形態による、ディジタル化のためにオブジェクトを提示するユーザのカメラ視野像である。図示した実施形態では、オブジェクトの2つの視野が取り込まれる。カラーカメラは、対象になるオブジェクトの周りの640×480の色ウィンドウを得るためにフレームの中心上にズームインされ、色ウィンドウの角は、次に(角が、対象になるオブジェクトの前面にあると仮定して)深さフレーム座標へと変換される。一致する160×120のウィンドウが、次に、深さフレームから捉えられる。(カメラまでの対象になるオブジェクトの距離に依存して)この事前フレームウィンドウ調節を用いないと、深さウィンドウおよび色ウィンドウは、可能な限り十分には重ならないことがある。その上、生の色および生の深さは、深さと色の位置合わせまたは色と深さの位置合わせを実行しないで取り込まれる。さまざまな他の解像度が代わりに使用され得るので、この解像度数およびウィンドウは、単に例示の目的で与えられる。
【0035】
[0061]一実施形態では、深さ画像は、対象になるオブジェクトにセグメント化される。そうするために、カメラに最も近接した深さピクセルが、このような点が対象になるオブジェクト上にあると仮定して、検索され、見つけられる。この実施形態は、次に、見つけた最も近接した点から外へ向かって、深さエッジ(すなわち、深さがオブジェクトの前面から遠すぎる場合、または深さデータがない場合)にぶつかるまで塗りつぶす。加えて、大きな勾配の領域の周りでありかつ非常に少ない隣接点しか有さない点は、除かれることがある。結果は、図6に示したように、対象になるオブジェクト上にある深さピクセルのマスク(本明細書においては「セグメント化した深さ画像」と呼ばれる)である。セグメント化した深さ画像は、深さフレーム(10のリングバッファサイズで出荷されたBAB/GOE)のリングバッファ中に記憶され、最も古い深さフレームを書き換え、すべてのフレームを全体として平均して最終的な深さ画像を得る。一実施形態では、セグメント化した深さピクセルだけが、最終的な平均に寄与する。結果として、ノイズはスムージングされ、より安定なオブジェクトエッジをもたらし、オブジェクトの複数の部分がノイズまたはIR反射の悪い物質のために点滅しセグメント化から外れるシナリオを改善する。
【0036】
[0062]図7は、一実施形態による、深さと色のオフセットの図である。図示したように、一実施形態は、緑色点を表す緑色(最上部の右角に示される)、赤色(下側左角に示される)、およびその間に2つの混合色を有する深さと色のオフセットテーブルを作る。各ピクセルの深さ空間座標と色空間座標との間のオフセットは、色セグメント化およびメッシュ処理中に迅速なルックアップのためにテーブル中に記憶され、同様に、特定のカメラの較正設定にかかわらず、2枚の取り込んだカラー画像だけを使用して出力メッシュを完全に再生することを助ける。オブジェクトセグメント化の外のテーブルの領域は、外に向かうセグメント化のエッジのところのオフセットをコピーすることによって埋められることがある。エッジにおけるコピーしたオフセットは、深さ画像へと投影された出力メッシュ中の頂点が深さセグメント化の境界線の外側になるケースを取り扱うために後で使用され得る。
【0037】
[0063]一実施形態に従って、図8は、ソースカラー画像であり、図9は、取り込んだオブジェクトの色セグメント化の図である。深さ空間におけるセグメント化から始めると、一実施形態は、星形分配パターンを使用して、各々のセグメント化した深さピクセルを320×240の色セグメント化バッファへと分配する。結果として得られたパターンは、次に、640×480へと「アップサンプル」され、ソース深さピクセルが「理想的な」距離からどれだけ遠いかを記述する「理想からの距離」値が、次に各々のセグメント化した色ピクセルについて計算される。理想的な距離は、可能な限り色/深さデータを多く取得するために、ユーザが対象になるオブジェクトをどれだけカメラに近づけて保持すべきかを、深さカメラの前面クリップ平面を横切らずに表す。これらの値は、取込みプロセス中にユーザへのフィードバックとして表示され得る。理想からさらに遠くのピクセルは、理想に近いピクセルよりももっとひどくぼかされ汚されることがある。理想からの距離値は、リアルタイムプレビューのために使用されるカラー画像のアルファチャネルへと最終的にはコピーされる。
【0038】
[0064]図10および図11は、一実施形態による、ディジタル化されるオブジェクトを保持するための指図を与えるユーザインターフェース(UI)の図である。図10は、図示した実施形態が、セグメント化したピクセルの数、カメラまでの距離、カメラ視野の中心からの距離、ピクセル安定性、オブジェクトサイズを解析し、オブジェクトをどのようにして最良の位置に置くかについての視覚フィードバックおよびテキストフィードバックを与えることを示す。フィードバックは、スクリーン上の外形線の形態であってもよい。図11は、上記のものと同じプロセスを使用する、対象になるオブジェクトの裏面の画像の色データおよび深さデータを示す。一実施形態は、セグメント化した前面取込み画像の外形線を使用してオブジェクトを正しく向けるようにユーザに指図する。前面取込み画像および裏面取込み画像が後で自動的に位置合わせ可能であるという理由で、ユーザは、正確に外形線を一致させなければならないことはない。
【0039】
[0065]図12は、一実施形態による、ポイントクラウド構成を示す。この時点で、2つの色データ画像および深さデータ画像は、対象になるオブジェクトへとセグメント化されている。これらの画像を使用して、対象になるオブジェクトの表面上の点のポイントクラウド構成が、作られることが可能であり、三角形メッシュを再構成するために後で使用され得る。前面深さ画像中のセグメント化したピクセルは、3Dポイント「シート」へと変換される。一実施形態では、位置は、深さデータを使用して深さ画像空間からモデル空間へと投影されずに、原点はシートの裏面中心である。シートのエッジは、追加の点を加えることによって裏に向かって突き出し、オブジェクトの側面を形成する。オブジェクトがどれだけ「深い」かを推測するために、BAB/GOEでは、突き出した距離についての一定値が使用される。
【0040】
[0066]同様に、裏面深さ画像からの3Dポイントシートは、原点として前面取込み画像の裏面中心を使用して作られる。図13は、一実施形態による、位置を合わせられたポイントシートの2つの視野である。シートの位置を合わせるために、初期変換は、上向きの軸の周りで180度このシートを回転して計算され、その結果、ポイントクラウドの裏面を形成する。一実施形態では、前面シートおよび裏面シートのエッジを可能な限り近くに位置を合わせる別の変換が、計算される。位置合わせプロセスは、裏面シートの重心が前面シートの重心と一致するように裏面シートを移動することがある。ブルートフォース反復は、次に、各前面エッジ点からその最も近接した裏面エッジ点までの距離の総和として計算される「位置合わせ誤差」値を最小にするために、移動および回転の範囲全体にわたって使用される。反復は、マルチパス(各パスで、1回に1つ各々の移動および回転軸についての最良値を計算することを試みる)で行われることがあり、各軸を横切る検索は、効率性のために2段の階層的な手法を使用して行われる。最近接点検索は、3Dセル空間区分を使用して加速される。一実施形態はまた、高速のきめ細かい位置合わせ用の反復最近接点(「ICP」)アルゴリズムを実装する、または代替で、より優れた制御の必要性が、ブルートフォース法反復だけの使用を指示することがある。
【0041】
[0067]裏面シート中に対応する点を有さない前面シートからの点は、最も近い裏面点を見つけるために各前面点から後ろに向かって検索するために抜粋されることがある。同じように、前面シート中に対応する点を有さない裏面シートからの点は、抜粋されることがある。これが、ユーザの手が取込み画像内にあるが、取込み画像間で位置を変える場合に、またはオブジェクトが前面取込み画像と裏面取込み画像との間で形状を変える場合に生じることがあるような、前面取込み画像と裏面取込み画像との間で一致しないシートの部分を取り除く。
【0042】
[0068]一実施形態では、残りの点は、最終的なポイントクラウドへと一緒にマージされ、点に対する法線は、各点およびその右隣りと下隣りによって形成される平面を使用して計算される。図14は、一実施形態による、最終的なポイントクラウド構成を示す。
【0043】
[0069]確認画像は、図15に示したように、次に、ユーザに提示され得る。確認画像は、シート位置合わせおよび点抜粋の結果を組み入れて、取込み、位置合わせ、または抜粋がひどく失敗したケースを検出すること、および構成プロセスの残りを経ずに再び取り込むことをユーザに可能にする。画像は、最終的なポイントクラウド中の点を前面カラー画像および裏面カラー画像のアルファチャネルへと投影しかつ分配し、位置合わせ変換に基づいて裏面画像を回転し、ある追加の画像のクリーンアップを行うことによって、作られる。
【0044】
[0070]表面再構成ステップは、最終的なポイントクラウドを撮り、三角形メッシュを生成する。図16は、表面再構成を用いたメッシュ出力の図を示す。これは、メモリと時間の両方においてディジタル化の計算的に見て最も激しい部分である場合があり、いくつかの実施形態では、ほぼ20,000点の典型的なポイントクラウドデータに対して10〜20秒かかる。穴埋めの量は、制御下にメモリ使用量を保つために再構成中には制限され得るが、ポイントクラウド中に大きな穴がある場合には、このような制限は、水漏れの多いメッシュのような状態を結果としてもたらすことがある。
【0045】
[0071]図17は、一実施形態による、オブジェクトのスムージングし処理した画像である。頂点隣接リストが作られ、面法線および頂点法線が計算される。次に、一実施形態は、ラプラスアルゴリズムを使用して、いくつかの制約をスムージングする。結果として、オブジェクトの側面は丸められ、ノイズが除去され、ポイントシートが完全には整列していな領域は、クリーンアップされる。
【0046】
[0072]ポイントクラウドの品質に応じて、表面再構成は、単一の大きなメッシュの代わりに形状の小さな「島」を作ることが可能である。一実施形態は、接続されたコンポーネントのラベルを使用して、島を見つけ、その体積を計算し、最も大きな島よりも著しく小さな島を除去する。
【0047】
[0073]各頂点について、一実施形態は、その頂点の法線と前面取込み視野方向および裏面取込み視野方向との間のドット積を考察する。前面視野方向は、モデル空間の負のZ軸に沿うことがあり、裏面視野方向は、シート位置合わせプロセスの結果に依存することがあり、正のZ軸に沿わないことがある。結果として、いくつかの頂点は、前面取込み視野および裏面取込み視野の両方に見られことがあり、いくつかの頂点は、どちらの視野にも見られないことがある。いくつかの頂点は、その法線が裏面よりも前面に向いている場合には「前面」として分類されることがあり、逆もまた同様である。これはやはり、「シーム」頂点(すなわち、オブジェクトの前面視野および裏面視野にまたがる頂点)の位置決定を可能にする。
【0048】
[0074]最終的なメッシュ上へと適用するテクスチャマップを作るために、一実施形態は、前面取込み画像からのカラー画像をテクスチャの最上部に置き、裏面取込み画像からのカラー画像を前面取込み画像のすぐ下に置く。テクスチャの最上部部分からのテクセルは、次に、主として前向きの三角形上へとマッピングされ、主として裏向きの三角形についても同様である。頂点は、最初には、ちょうど前面裏面のシームに沿った前面三角形と裏面三角形との間で共有されることがあり、後に、これらの共有された頂点は、複製されることがあり、その結果、前面三角形と対比して裏面三角形にテクスチャの異なる部分をマッピングする。
【0049】
[0075]一実施形態に従って、図18は、UV座標を有する画像を示し、図19は、最終的なテクスチャマップの一部へと描かれた前向きの三角形エッジの図を示す。UV座標を計算するために、前向き三角形は、前面取込みカラー画像が置かれるテクスチャの最上部部分にマッピングされ、底部についても同様である。頂点位置は、深さカメラの空間内にあるが、カラー画像は、カラーカメラの空間内にあり、そのため、前面深さ画像/裏面深さ画像上へと頂点を投影した後で、一実施形態は、深さと色のオフセットテーブルを使用して、座標をカラーカメラ空間へと変換する。
【0050】
[0076]一実施形態では、メッシュは、中心位置を変更され、上向きの軸に関してミラーリングされ、最大幅/高さアスペクト比を守るためにスケーリングされる。取り込んだカラー画像および深さ画像は、実際の物理的なオブジェクトと比較するためにミラーリングされ、そのために別のミラーリングが、これを反転するために使用される。スケルトンは、最適化されることがあり、アニメーションが、幅の広いオブジェクトよりもむしろ背の高いオブジェクトに対して追加されることがあり、そのため、幅/高さアスペクト比制限が、ある種のスケルトンとは一致しない幅の広いオブジェクトをアニメ化することによって生じるアーティファクト上に境界線を引く。
【0051】
[0077]一実施形態では、1つのスケルトンが、オブジェクトのすべてのアニメーションに対して使用される。スケルトンは、対象になるオブジェクトがはるかに多くの形状を有することを必要とせずに、動き(歩くこと、ジャンプすること、はうこと、ダンスすること、左右を見ること、等)の良い範囲を与える骨を有することができる。
【0052】
[0078]ディジタル化した画像に肌を付けるために、メッシュは、スケーリングし直され、位置決めされ、その結果、スケルトンは、最上部の骨がオブジェクトの最上部からある割合(例えば、ほぼ90%)に位置し(最上部の骨をオブジェクトの「頭部」の大雑把に内側に置き)、底部の骨をオブジェクトの底部範囲のところに置いた状態で、その内側にぴったりと一致する。骨インデックスが、次に計算されることが可能であり、各頂点への上向きの軸に沿って最も近い骨を見つけることによってスケルトンに重みが付け加えられ、フォールオフ曲線を使用して骨を重み付けする。図20A図20Eは、一実施形態による、生成したスケルトン構造のさまざまな骨に加えられた重み付けを示す図である。オブジェクトにスケルトンを適用することは、下記に詳細に論じられる。
【0053】
[0079]カラー画像および/または深さ画像は、ノイズを減少させ品質を向上させるために処理される。処理は、一実施形態では、前面画像および裏面画像に独立に行われ、結果が、最終的なテクスチャマップへとマージされ、このマップは追加の処理を必要とすることがある。いくつかの実験およびアーティストからのフィードバックの後で、下記のステップが最適であることが見出された。sRGB色を線形空間へと変換し、「グレイワールド」自動ホワイトバランスを適用し、エッジアーティファクトを修復し、輝度値および彩度値を計算し、輝度に対してバイラテラルフィルタリング、ヒストグラムイコライゼーション、およびシャープニングを適用し、彩度に中央値フィルタリングを適用し、sRGBに変換して戻し、最後に、画像のセグメント化していない領域へと外に向かって色のエッジを延伸する。他のステップが、追加されてもよく、上記のいくつかは、別の実施形態では削除されてもよい。
【0054】
[0080]図21Aおよび図21Bは、一実施形態による、輝度/彩度処理前後の画像を示す。独立に輝度/彩度を処理することは、輝度画像中の詳細を保存しながら彩度をはるかに強くフィルタリングすることを可能にし、これは画像をノイズ除去することに効果的である。ヒストグラムイコライゼーションは、露出の悪い画像を補償するために非常に軽く適用され得る。
【0055】
[0081]図22Aおよび図22Bは、一実施形態による、ソース画像およびエッジがフィルタリングされた後の出力画像を示す。一実施形態では、「エッジ修復フィルタ」は、実際には背景からでありオブジェクト自体ではないものに由来する対象になるオブジェクトのエッジのところの色を置き換えるように試みる。悪い色は、深さ画像の比較的低い解像度および大きなノイズならびに不完全な深さと色の位置合わせに起因して紛れ込むことがある。エッジ修復フィルタは、オブジェクトエッジのすぐ周りのピクセルの「議論の領域」上に動作する。議論の領域の内側のピクセルは、明確に対象になるオブジェクトの一部分であり、もっと外部のピクセルは背景の一部分であるという仮定を使用すると、「背景確率」値は、議論の領域のピクセルごとに計算され、高確率背景ピクセルを内側の色に対して混ぜるために使用される。
【0056】
[0082]図23Aおよび図23Bは、一実施形態による、エッジ修復フィルタが背景色および対象になる色を見つける画像を示す。対象になる色は、外側から議論の領域へと外挿される。
【0057】
[0083]図24Aおよび図24Bは、一実施形態による、エッジから議論の領域までの距離および計算した背景確率値を示す画像である。さらにその上、図25は、一実施形態による、最終処理をしていない画像上にテクスチャ加工を行った画像の最終的な合成テクスチャマップを示す。
【0058】
[0084]前面画像および裏面画像を一緒に置くことから生じるシームは、修復される必要がある場合がある。メッシュ処理のわずかな残りは、前面と裏面シームの近くでありかつ取込み中にカラーカメラに見えない領域内のオブジェクトの外見を改善するために使用される。最初に、テクスチャ色が頂点においてどれだけ「悪い」かを表す頂点ごとのマスク値が計算される。この値は、(前面画像および裏面画像が接触するが、概して、上手く並んでない)シームまでの距離と、(カメラ視野から遠くに向いている表面に起因して、およびやはり不十分なテクセル密度から、テクスチャ色が分解される)取り込んだ画像のいずれかに対して頂点がどれだけ裏に向いているかとの積である。これらの値は、頂点色アルファチャネル内に記憶され得る。次に、表面色のぼかしたバージョンが、計算され、頂点色RGBチャネル中に記憶される。これらの色は、(細部においては低いが)かなり良い品質である。修復を必要とする負のアーティファクトは、比較的局在化され、高い頻度のものであり、ぼかすことは、より全体的な、低い頻度の色を与える。
【0059】
[0085]図26Aおよび図26Bは、一実施形態による、マスクした値およびひどくぼけた頂点の色を示す。実行時間において、マスク値は、一実施形態では、ソーステクスチャとぼけた頂点の色とを混ぜ合わせるために使用される。図27Aおよび図27Bは、一実施形態による、テクスチャだけを有するメッシュ(図27A)および頂点の色がマスク値によって混ぜ合わさったメッシュ(図27B)を示す。
【0060】
[0086]図28は、一実施形態による、ディジタル化したオブジェクトの最終的なレンダリングを示す。一実施形態では、一旦、最終的なメッシュおよびテクスチャが完成すると、Unreal Engine3メッシュが、作られ、環境ならびにリム照明、自己遮蔽、およびアニメーションでレンダリングされる。GOEアプリもまた、Nuiスケルトンをスケルトン上へとマッピングすることによってオブジェクトをアバター化することを可能にする。
【0061】
[0087]図2に戻って、受信コンポーネント231は、ユーザスケルトン情報を受信するようにさらに構成され得る。ユーザスケルトン情報とは、本明細書において使用するとき、概して、ユーザのスケルトンを特定するデータを言う。特に、関節角度、関節位置、等は、ユーザスケルトン情報中に含まれる。一実施形態では、受信コンポーネント231は、オブジェクトおよびユーザスケルトン情報を受信するように構成されたカメラの形態を取ることができる。追加の実施形態では、カメラは、ゲームシステムのカメラである。
【0062】
[0088]特定コンポーネント232は、とりわけ、仮想環境においてオブジェクト(例えば、受信コンポーネント231によって受信されているディジタル化されたオブジェクト)、ユーザスケルトン、オブジェクトスケルトン、等を特定するように構成され得る。オブジェクトスケルトンとは、本明細書において使用するとき、概して、仮想環境においてオブジェクト上に置くためのスケルトンを言う。一実施形態では、1つのシステムが定義したテンプレートオブジェクトスケルトンが、仮想環境においてオブジェクトを制御するために使用される。代替実施形態では、複数のシステムが定義したテンプレートが、仮想環境においてオブジェクト上に置くために利用可能である場合がある。追加の実施形態では、オブジェクトスケルトンは、下記により詳細に説明するように、ユーザの動きのデモンストレーションに基づいてリアルタイムで作られてもよい。
【0063】
[0089]最初に、一旦、オブジェクトがシステム200によって受信されると、特定コンポーネント232は、オブジェクトと関係付けるためにオブジェクトスケルトンを特定することができる。1つのシステムが定義したテンプレートオブジェクトスケルトンが、オブジェクトと関係付けるために利用可能であると仮定すると、特定コンポーネント232は、オブジェクトと関係付けるために1つのシステムが定義したテンプレートオブジェクトスケルトンを特定することができる。
【0064】
[0090]あるいは、複数のオブジェクトスケルトンが利用可能である場合には、特定コンポーネント232は、オブジェクトの1つまたは複数の特性を特定することができる。オブジェクトの1つまたは複数の特性は、オブジェクトの手足の数、オブジェクトの形状、オブジェクトのサイズ(例えば、長さ、幅、等)、等を含むことができるが、これらに限定されない。1つまたは複数の特性は、次に、特定コンポーネント232によって利用されることがあり、複数のオブジェクトスケルトンのうちの、オブジェクトの1つまたは複数の特性と対応する1つまたは複数のオブジェクトスケルトンを特定することができる。例えば、オブジェクトが2つの手足を有すると特定される場合には、2つの手足を有するオブジェクトスケルトンは、4つの手足を有するオブジェクトスケルトンよりもオブジェクトに対してよい一致である。
【0065】
[0091]追加の実施形態では、オブジェクトスケルトンは、ユーザの自由度に基づいてリアルタイムで作られることがある。例えば、ユーザは、その手足を使用することによって特定コンポーネント232に対して動きをデモンストレーションすることができる。動作における自由度(すなわち、関節)をデモンストレーションすることによって、オブジェクトスケルトンは、ユーザの関節情報に基づいてリアルタイムで作られることがある。
【0066】
[0092]特定コンポーネント232はまた、ユーザのユーザスケルトンを特定するように構成され得る。実施形態では、ユーザは、人間のユーザである。ユーザスケルトンは、例えば、Microsoft Corporation(登録商標)によって作られたMicrosoft Kinetic(商標)システムなどのゲームシステムへと集積された、例えば、スケルトン追跡技術を使用して特定され得る。特定コンポーネント232は、システム200の画像内のユーザを特定することができる。ユーザは、画像の各ピクセルおよび特定コンポーネント232からの各ピクセルの距離によって画像内で特定され得る。例えば、ユーザの各ピクセルは、特定コンポーネント232からほぼ等距離であるはずであるが、ユーザの背後のランプは、特定コンポーネント232からはユーザとは異なる距離であるはずである。加えて、ユーザの形状が、画像内のユーザを特定するために使用され得る。これらの技術を使用して、ユーザは、次に、背景から分離され得る。
【0067】
[0093]一旦、ユーザが画像内で特定されると(すなわち、背景から分離されると)、ユーザのユーザスケルトンは、特定され得る。ユーザスケルトンは、ユーザの姿勢を特定することによって特定され得る。ユーザの姿勢とは、本明細書において使用されるとき、概して、ユーザの画像が取り込まれる時点でのユーザの位置を言う。ユーザの姿勢の中で、姿勢の関節角度、姿勢の関節位置、等を含むが、これらに限定されないユーザスケルトン情報が、特定される。ユーザの姿勢、およびその中のユーザスケルトン情報は、例えば、データストア220から入手可能である1つまたは複数のテンプレート姿勢に対して比較され得る。比較は、ユーザの姿勢の関節角度および関節位置をテンプレート姿勢の関節角度および関節位置と比較することができる。この情報を比較することによって、テンプレート姿勢に最も近い一致が特定され得る。最も近い一致は、ユーザスケルトンに関係付けられることがある。
【0068】
[0094]マッピングコンポーネント233は、とりわけ、オブジェクトスケルトンをオブジェクトにおよびユーザスケルトンをオブジェクトにマッピングするように構成され得る。最初に、オブジェクトスケルトンは、仮想環境においてオブジェクトにマッピングされ得る。前に説明したように、オブジェクトスケルトンは、1つまたは複数のテンプレートオブジェクトスケルトンから選択され得る。マッピングコンポーネント233は、オブジェクトスケルトンの中心を特定することによってオブジェクトスケルトンをオブジェクトにマッピングすることができる。マッピングコンポーネント233はやはり、仮想環境においてオブジェクトの重心を特定することができる。マッピングコンポーネント233は、次にオブジェクトスケルトンの中心をオブジェクトの重心にマッピングすることができる。
【0069】
[0095]想像できるように、オブジェクトスケルトンは、システムが定義したテンプレートスケルトンであるので、オブジェクトにぴったりと一致しないことがある(すなわち、オブジェクトは、オブジェクトスケルトンよりも大きいことも小さいこともある)。一実施形態では、オブジェクトは、オブジェクトスケルトンにぴったりと一致するようにサイズを変更される。オブジェクトスケルトンにぴったりと一致するようにオブジェクトのサイズを変更することは、オブジェクトの底部をユーザスケルトンの底部と位置合わせすることを含むことができるが、これに限定されない。実施形態では、オブジェクトの底部およびユーザスケルトンの底部は、相互に正確に位置合わせされる。次に、オブジェクトの最上部は、オブジェクトスケルトンの最上部と位置合わせされ得る。オブジェクトスケルトンの最上部がオブジェクトの最上部の下方の所定の距離となるように、オブジェクトの最上部は、オブジェクトスケルトンと位置合わせされ得る。オブジェクトスケルトンの最上部は、オブジェクトの頭部であると思われるオブジェクトの一部分を占めるオブジェクトの最上部の下方の所定の距離に位置合わせされ得る。一実施形態では、所定の距離は、オブジェクトの最上部の10パーセント(10%)下方である。所定の距離は、承認されたユーザによって指定される任意の距離であってもよい。
【0070】
[0096]一代替実施形態では、オブジェクトスケルトンは、オブジェクトのサイズを変更するよりもむしろオブジェクトにぴったりと一致するようにサイズを変更される。オブジェクトスケルトンは、このように、オブジェクトスケルトンの底部およびオブジェクトの底部が位置合わせされるように、オブジェクトと位置合わせされるはずである。オブジェクトスケルトンの最上部はまた、オブジェクトスケルトンの最上部がオブジェクトの最上部の下方の所定の距離となるように、オブジェクトの最上部と位置合わせされ得る。実施形態では、所定の距離は、オブジェクトの最上部の10パーセント(10%)下方である。所定の距離は、承認されたユーザによって指定される任意の距離であってもよい。
【0071】
[0097]一旦、マッピングコンポーネント233がオブジェクトスケルトンをオブジェクトにマッピングすると、ユーザスケルトンは、オブジェクトスケルトンにマッピングされ得る。ユーザスケルトンをオブジェクトスケルトンにマッピングすることは、1対1マッピング(1:1)であってもよく、1:1マッピングでなくてもよい。1:1マッピングは、ユーザスケルトンおよびオブジェクトスケルトン内の同じ数の関節を示す。この状況では、ユーザスケルトンの関節角度は、オブジェクトスケルトンの対応する関節角度にマッピングされ、その結果、オブジェクトスケルトンが、ユーザスケルトンの関節角度を忠実に反映する。
【0072】
[0098]しかしながら、時には、マッピングは、1:1マッピングでないことがあり、オブジェクトスケルトンおよびユーザスケルトンが、異なる数の関節を有することを意味する。このケースでは、いくつかの関節の動きを誇張し、他の関節の動きを抑えることが望ましいことがある。加えて、1つの関節の動作が、オブジェクトスケルトン内の違った関節にマッピングされ得る。例えば、オブジェクトが象であると仮定する。明らかに、ユーザは、象の鼻を有さず、象は、ユーザの腕と同じように働く腕を有さない。ユーザスケルトンの腕の動作は、例えば、象の鼻にマッピングされ得る。このように、象の鼻は、ユーザの腕の動作に従って応答するであろう。
【0073】
[0099]また、マッピングは、角度対角度である必要はない。例えば、関節位置(例えば、ユーザがどれだけ高く自分の手を持ち上げるか)は、オブジェクトスケルトンの関節のスケールでマッピングされることがあり、自分の手を持ち上げるユーザに応じて上に向かってオブジェクトに伸ばさせる。加えて、ユーザ関節角度は、さらに手の込んだ多関節アニメーションを制御するために使用されることがあり、そのため、1つのユーザ関節位置は、非線形の様式で複数のオブジェクト関節を制御するはずである。
【0074】
[00100]一旦、ユーザスケルトンがオブジェクトスケルトンにマッピングされると、仮想環境におけるオブジェクトは、実世界ユーザを忠実に反映する。例えば、ユーザが自分の右腕を持ち上げる場合には、オブジェクトは、マッピングに従って同じやり方で反応するであろう(例えば、マッピングは、同様にオブジェクトにその右腕を持ち上げさせる1:1であってもよく、またはマッピングは、ユーザの右腕の動作にマッピングされてきている別の動作でオブジェクトに応答させる1:1でなくてもよい)。
【0075】
[00101]制御エンジン230は、ユーザが動くたびにデータが更新されるように、リアルタイムで動作することがある。特に、ユーザスケルトンは、ユーザが動くたびに毎回更新され得る。これはまた、オブジェクトスケルトンへのユーザスケルトンの再マッピングを生じさせることがある。これがリアルタイムで起きているので、オブジェクトは、ユーザによって制御されたままであり、マッピングに従ってユーザの動作に応答し続けるであろう。
【0076】
[00102]表示コンポーネント234は、オブジェクトを表示するように構成される。表示されたオブジェクトは、マッピングに従って、ユーザの動作に応答するであろう。
[00103]ここで図29を参照すると、本発明の一実施形態に従って、仮想環境においてオブジェクトを制御するための全体にわたる方法2900を示す流れ図が提供される。最初に、ブロック2910において示したように、オブジェクトは、仮想環境において特定される。以前に示したように、オブジェクトは、実世界から仮想環境へと受信された任意の人間でないオブジェクトであってもよい。オブジェクトスケルトンは、ブロック2920においてオブジェクトにマッピングされる。オブジェクトスケルトンは、オブジェクトにぴったりと一致するようにサイズを変更された、システムが定義したオブジェクトスケルトンテンプレートである場合がある。あるいは、オブジェクトは、オブジェクトスケルトンにぴったりと一致するようにサイズを変更されてもよい。ブロック2930において、ユーザのユーザスケルトンが受信される。実世界ユーザのユーザスケルトンが受信され、関節の数、関節角度、関節位置、等を含むスケルトン情報が、特定され得る。ブロック2940において、ユーザスケルトンは、オブジェクトがユーザによって制御されるように、オブジェクトスケルトンにマッピングされる。特に、ユーザの動作は、オブジェクトの動作を制御する。
【0077】
[00104]ここで図30を参照すると、本発明の一実施形態に従って、仮想環境においてオブジェクトを制御するための全体にわたる方法3000を示す流れ図が提供される。最初に、ブロック3010において示したように、オブジェクトが、仮想環境において特定される。実施形態では、オブジェクトは、ディジタル化されてきており、仮想環境において受信されてきている実世界オブジェクトである場合がある。ブロック3020において、オブジェクトの重心を特定し、オブジェクトスケルトンの中心をオブジェクトの重心上へと置くことによって、オブジェクトスケルトンは、オブジェクトにマッピングされる。オブジェクトおよび/またはオブジェクトスケルトンは、次に、ブロック3030において、オブジェクトスケルトンの底部がオブジェクトの底部と位置合わせされるように、ぴったりと一致するようにサイズを変更され得る。ユーザのユーザスケルトンは、ブロック3040において受信される。ユーザスケルトンは、ブロック3050において、オブジェクトスケルトンの1つまたは複数の関節角度がユーザスケルトンの1つまたは複数の関節角度を忠実に反映するように、オブジェクトスケルトンにマッピングされる。ブロック3060において、ユーザの動作が特定され、ブロック3070において、オブジェクトの動作がユーザの動作を忠実に反映するように、オブジェクトは動く。
【0078】
[00105]本発明は、特定の実施形態に関して記載されてきており、これは、すべてに関して限定的であるというよりはむしろ例示的であることを目的としている。代替実施形態は、本発明がその範囲から乖離せずに関係する当業者には明らかになるであろう。
【0079】
[00106]本発明はさまざまな変形形態および代替構成の影響を受けやすいが、本発明のある種の図示した実施形態は、図面に示され、上に詳細に記述されてきている。しかしながら、開示した特定の形態に本発明を限定するものではなく、対照的に、目的は、本発明の精神および範囲内になるすべての変形形態、代替構成、および等価物を包含することであることを、理解すべきである。
【0080】
[00107]上記から、本発明が、システムおよび方法に対して明らかであり本質的である他の利点とともに、上に述べたすべての目的および目標を達成するようによく適合されていることが分かるであろう。ある種の構成および部分的組合せが有用なものであり、他の構成および部分的組合せを参照せずに利用される場合があることが理解されるであろう。これは、特許請求の範囲によって予期され、特許請求の範囲の範囲内である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13A-13B】
図14
図15
図16
図17
図18
図19
図20A-20E】
図21A
図21B
図22A
図22B
図23A
図23B
図24A
図24B
図25
図26A-26B】
図27A-27B】
図28
図29
図30