(57)【要約】  挿入コンテンツについて影を生成するためのシステムおよび方法を提供する。挿入コンテンツは、物理的空間の画像に挿入される拡張現実コンテンツを含み得る。方法の一例は、コンテンツを挿入すべき画像内の場所を決定することを含み得る。たとえば、コンテンツは骨格アニメーションシステムからの骨格関節を含み得る。方法の一例は、骨格関節に基づいて、表面平面上にバウンディングボックスを生成することと、骨格関節関節に基づいて、表面平面上の影中心点の場所を求めることとをさらに含み得る。たとえば、表面平面は画像に基づいて識別され得る。方法の一例はまた、バウンディングボックスおよび影中心点の場所に基づいて、表面平面上に影エンティティを生成することと、影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、影エンティティをレンダリングすることとを含み得る。
2020537200.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
コンテンツを挿入すべき画像内の場所を決定することを備え、前記コンテンツは骨格アニメーションモデルを含み、前記方法はさらに、
前記骨格アニメーションモデルからの複数の骨格関節に基づいて、表面平面上にバウンディングボックスを生成することと、
前記複数の関節に基づいて、前記表面平面上の影中心点の場所を求めることと、
前記バウンディングボックスおよび前記影中心点の場所に基づいて、影エンティティを生成することと、
前記影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、前記影エンティティをレンダリングすることとを備える、方法。
【請求項２】
前記コンテンツをレンダリングされた前記影エンティティの上に重畳することと、
前記コンテンツおよびレンダリングされた前記影エンティティを前記画像に挿入して拡張画像を生成することと、
前記拡張画像を表示することとをさらに備える、請求項１に記載の方法。
【請求項３】
前記画像を表示することと、
挿入された前記コンテンツおよびレンダリングされた前記影エンティティを、表示された前記画像の上に重畳することとをさらに備える、請求項１に記載の方法。
【請求項４】
前記画像に基づいて前記表面平面を識別することをさらに備え、前記コンテンツは拡張現実コンテンツであり、前記コンテンツを挿入すべき画像内の場所を決定することは、前記表面平面に基づいて前記画像内の前記場所を決定することを含む、請求項１に記載の方法。
【請求項５】
前記表面平面は、前記画像内に識別される床に対応する、請求項１に記載の方法。
【請求項６】
前記影エンティティはポリゴンを含む、請求項１に記載の方法。
【請求項７】
前記ポリゴンは、前記バウンディングボックスによって取囲まれる長円形状のポリゴンである、請求項６に記載の方法。
【請求項８】
前記長円形状のポリゴンの長軸および前記長円形状のポリゴンの短軸は前記影中心点の場所で交差する、請求項７に記載の方法。
【請求項９】
前記ポリゴンは、前記バウンディングボックスの角によって規定される四辺形ポリゴンである、請求項６に記載の方法。
【請求項１０】
前記影エンティティをレンダリングすることは、前記影中心点の場所からの距離に基づいて画素値を求めることを含む、請求項１に記載の方法。
【請求項１１】
前記画素値を求めることは、前記影中心点の場所からの距離に基づく非線形のラジアルフォールオフを用いて画素の透明度値を計算することを含む、請求項１０に記載の方法。
【請求項１２】
命令が格納された非一時的なコンピュータ可読記憶媒体であって、前記命令は、少なくとも１つのプロセッサによって実行されると、コンピューティングシステムに少なくとも、
コンテンツを挿入すべき画像内の場所を決定させ、前記コンテンツは骨格アニメーションモデルを含み、さらに、
前記画像に基づいて表面平面を識別させ、
前記骨格アニメーションモデルからの複数の骨格関節に基づいて、前記表面平面上にバウンディングボックスを生成させ、
前記複数の関節に基づいて、前記表面平面上の影中心点の場所を求めさせ、
前記バウンディングボックスおよび前記影中心点の場所に基づいて、影エンティティを生成させ、
前記影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、前記影エンティティをレンダリングさせるように構成される、非一時的なコンピュータ可読記憶媒体。
【請求項１３】
前記システムに前記コンテンツを挿入すべき画像内の場所を決定させる前記命令は、前記システムに前記コンテンツのための場所を識別するユーザ入力を受信させる命令を含む、請求項１２に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記システムに前記影中心点の場所を求めさせる前記命令は、前記システムに前記複数の関節を前記表面平面上に投影させる命令を含む、請求項１２に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記影中心点の場所は、投影された前記複数の関節の中点を計算することに基づいて求められる、請求項１４に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記影中心点の場所は、前記複数の関節の質量中心に基づいて求められる、請求項１４に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記質量中心は、前記複数の関節を等しく重み付けすることに基づいて求められる、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記質量中心は、前記表面平面からの距離に基づいて前記複数の関節を重み付けすることに基づいて求められる、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
前記コンテンツは、前記複数の関節を囲むポリゴンメッシュをさらに含む、請求項１２に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２０】
前記システムに、前記骨格アニメーションモデルからの複数の骨格関節に基づいて、前記表面平面上にバウンディングボックスを生成させる前記命令は、前記システムに、前記骨格アニメーションモデルと関連付けられたデータ構造に基づいて、前記骨格アニメーションモデルから複数の骨格関節を識別させる命令を含み、前記複数の骨格関節は、前記骨格アニメーションモデルの骨格関節のすべては含まない、請求項１２に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２１】
システムであって、
カメラアセンブリと、
少なくとも１つのプロセッサと、
命令を格納しているメモリとを備え、前記命令は、前記少なくとも１つのプロセッサによって実行されると、前記システムに、
前記カメラアセンブリを用いて画像を取込ませ、
前記画像に基づいて表面平面を識別させ、
複数の関節を有する骨格によって部分的に規定されるポリゴンメッシュを含むコンテンツを挿入すべき場所を決定させ、
前記複数の関節に基づいて、前記コンテンツのためのバウンディングボックスを前記表面平面上に生成させ、
前記複数の関節を前記表面平面上に投影して、投影された前記複数の関節の位置を平均することに基づいて、前記コンテンツの質量中心の場所を求めさせ、
前記バウンディングボックスおよび前記質量中心の場所に基づいて、前記表面平面上にシャドウポリゴンを生成させ、
前記質量中心の場所にラジアルフォールオフ関数を適用することに基づく透明度値を用いて、前記シャドウポリゴンをレンダリングさせ、
挿入された前記コンテンツをレンダリングされた前記シャドウポリゴンの上に重畳させる、システム。
【請求項２２】
前記シャドウポリゴンは、前記バウンディングボックスの中に含まれる、かつ前記質量中心の場所で交差する第１の軸および第２の軸を含む、長円形状のポリゴンである、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１７年１０月４日に出願された米国出願番号第６２／５６８，０８３号に基づく優先権を主張する、かつ２０１７年１０月４日に出願された米国出願番号第６２／５６８，１１５号に基づく優先権を主張する、２０１８年１０月３日に出願され「挿入コンテンツについての影（SHADOWS FOR INSERTED CONTENT）」と題された米国非仮特許出願番号第１６／１５０，７９４号の継続出願であり、それに基づく優先権を主張する。これらの開示全体を本明細書に引用により援用する。
【０００２】
本願は、２０１８年１０月３日に出願された米国出願番号第１６／１５０，８１３号に関し、その全体を本明細書に引用により援用する。
【背景技術】
【０００３】
背景
コンテンツは画像またはユーザの視野に挿入され得る。たとえば、拡張現実（augmented reality：ＡＲ）システムは、コンテンツを挿入することによってユーザ用の没入型拡張環境を生成し得る。没入型拡張環境は、コンピュータ生成コンテンツを現実世界のユーザの視野に重ね合わせることによって生成することができる。たとえば、コンピュータ生成コンテンツは、ラベル、テキスト情報、画像、スプライト、および３次元エンティティを含み得る。これらの画像は、現実世界の物体を重畳しているように見えるようにユーザの視野内の位置に表示され得る。同様に、コンピュータ生成コンテンツは表示画像の上に重畳され得る。挿入コンテンツは、表示画像を重畳する影を生成し得る。影を生成する既存の技法は、リアルタイムのＡＲアプリケーションでの使用には不十分な場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
概要
本開示では、挿入コンテンツについて影を生成するためのシステムおよび方法を記載する。たとえば、挿入コンテンツは、物理的空間の画像に挿入される拡張現実コンテンツを含み得る。
【課題を解決するための手段】
【０００５】
ある局面は、方法であって、コンテンツを挿入すべき画像内の場所を決定することを含み、コンテンツは骨格アニメーションモデルを含み、当該方法はさらに、骨格アニメーションモデルからの複数の骨格関節に基づいて、表面平面上にバウンディングボックスを生成することと、複数の関節に基づいて、表面平面上の影中心点の場所を求めることと、バウンディングボックスおよび影中心点の場所に基づいて、影エンティティを生成することと、影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、影エンティティをレンダリングすることとを含む方法である。
【０００６】
別の局面は、命令が格納された非一時的なコンピュータ可読記憶媒体であって、当該命令は、少なくとも１つのプロセッサによって実行されると、コンピューティングシステムに少なくとも、コンテンツを挿入すべき画像内の場所を決定させ、コンテンツは骨格アニメーションモデルを含み、さらに、画像に基づいて表面平面を識別させ、骨格アニメーションモデルからの複数の骨格関節に基づいて、表面平面上にバウンディングボックスを生成させ、複数の関節に基づいて、表面平面上の影中心点の場所を求めさせ、バウンディングボックスおよび影中心点の場所に基づいて、影エンティティを生成させ、影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、影エンティティをレンダリングさせるように構成される非一時的なコンピュータ可読記憶媒体である。
【０００７】
１つ以上の実装例の詳細を添付の図面および以下の説明に記載する。その他の特徴は、説明および図面から、ならびに特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【０００８】
【図１】実装例に係るシステムを示すブロック図である。
【図２】図１のＨＭＤの一例を通してユーザがＡＲ環境を体験している物理的空間の一例の三人称視点図である。
【図３Ａ】本明細書に記載の実装例に従う、ヘッドマウントディスプレイデバイスおよびコントローラの一例を示す図である。
【図３Ｂ】本明細書に記載の実装例に従う、ヘッドマウントディスプレイデバイスおよびコントローラの一例を示す図である。
【図３Ｃ】本明細書に記載の実装例に従う、ヘッドマウントディスプレイデバイスおよびコントローラの一例を示す図である。
【図４】携帯型電子機器の一例を介してＡＲ環境を体験しているユーザの概略図である。
【図５】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成する方法の一例の図である。
【図６】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成する方法の一例の図である。
【図７Ａ】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
【図７Ｂ】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
【図７Ｃ】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
【図７Ｄ】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
【図７Ｅ】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
【図７Ｆ】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
【図７Ｇ】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
【図７Ｈ】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
【図８】本明細書に記載の技法を実現するために使用され得るコンピュータデバイスおよびモバイルコンピュータデバイスの一例を示す図である。
【発明を実施するための形態】
【０００９】
詳細な説明
以下に本開示の非限定的な例について詳細に述べるが、それらの例は添付の図面に示されている。これらの例を、同様の参照番号は同様の要素を指す図面を参照して以下に説明する。同様の参照番号が示されている場合、対応する説明は繰返さない。興味のある読者は、同様の要素の説明については以前に述べた図面を参照されたい。
【００１０】
拡張現実（ＡＲ）システムは、ユーザを囲んでいる物理的空間のユーザの知覚にコンピュータ生成コンテンツを挿入するシステムを含む。コンピュータ生成コンテンツは、ラベル、テキスト情報、画像、スプライト、および３次元エンティティを含み得る。いくつかの実装例では、コンテンツは娯楽目的で、教育目的で、または情報提供を目的として挿入される。
【００１１】
ＡＲシステムの一例は、カメラとディスプレイ装置とを含むスマートフォンなどの携帯型電子機器である。携帯型電子機器はカメラを用いて画像を取込み、カメラによって取込まれた画像の上に重畳されるコンピュータ生成コンテンツを含むＡＲ画像をディスプレイ装置上に表示し得る。
【００１２】
ＡＲシステムの別の例として、ユーザが装着するヘッドマウントディスプレイ（head-mounted display：ＨＭＤ）がある。ＨＭＤは、ユーザの目の前に位置決めされるディスプレイ装置を含む。たとえば、ＨＭＤは、ユーザにはディスプレイ装置が表示するコンテンツしか見えないようにユーザの視野全体を遮る場合がある。いくつかの例では、ディスプレイ装置は、ユーザの片目に１つずつ見える、２つの異なる画像を表示するように構成される。たとえば、視差によって３次元のシーンの感覚を生じさせるために、一方の画像のコンテンツの少なくとも一部は他方の画像内の同じコンテンツに対してややオフセットしている場合がある。いくつかの実装例では、ＨＭＤはチャンバを含み、このチャンバの中に、ＨＭＤを介して携帯型電子機器のディスプレイ装置を見ることができるように、スマートフォンなどの携帯型電子機器が配置され得る。
【００１３】
ＡＲシステムの別の例として、ＨＭＤの装着中にユーザが物理的空間を見ることができるＨＭＤがある。当該ＨＭＤは、ユーザの視野の上に重畳されるコンピュータ生成コンテンツを表示するマイクロディスプレイ装置を含み得る。たとえば、当該ＨＭＤは、物理的空間からの光がユーザの目に届くことを可能にしつつ、マイクロディスプレイ装置が表示する画像をユーザの目に向けて反射する結合器を含む、少なくとも部分的に透明なバイザーを含み得る。
【００１４】
コンピュータ生成コンテンツが画像に挿入されると、コンテンツがより現実的に見えるようにコンテンツの周りにまたは下に影が生成され得る。たとえば、３次元モデルは、大面積の頭上の光源によって生成されたように見えるソフトな影を用いてレンダリングされ得る。ポイントライト／ディレクショナルライトの場所に関する情報は物理的空間では入手不可能な場合があるため、これらのソフトな影は、ポイントライト／ディレクショナルライトで生成され得るハードな影よりも好ましい場合がある。
【００１５】
ＡＲシステムは、２４フレーム／秒（ＦＰＳ）、３０ＦＰＳ、６０ＦＰＳ、またはその他の速度などの高速でリアルタイムでユーザに表示される画像をリフレッシュする必要があり得る。影を生成する旧来の技法では、物理的空間におけるライティングを判別または推定する必要があり得る。しかし、画像からシーン内のライティングを判別または推定することは、非常に多くの計算（またはプロセッササイクル）を必要とし得るため、許容可能なフレームレートでＡＲシステム上でリアルタイムで行なうことはできない。旧来の技法の中には、環境におけるライティングについての事前情報を必要とするものもあるが、当該情報はＡＲシステムが用いられる環境の多くでは入手不可能であり得る。本明細書にさらに記載する技法は、旧来の技法よりも少ないプロセッササイクルを用いつつ、環境ライティングの事前知識を必要とせずに、現実感があるように挿入コンテンツについて影を生成することを可能にする。さらに、本明細書に記載の技法が必要とする処理サイクルの数が減るので、これらの技法は、旧来の技法が必要とするよりも少ない電力を用いつつ、取込み画像／映像に現実感があるようにコンテンツを挿入することを可能にし得る。挿入コンテンツについてライティングを推定して影を提供するのに必要な電力のこのような減少は、電池式のモバイル機器を含むＡＲシステムにおいて特に重要であり得る。
【００１６】
ＡＲシステムの一例は、ユーザを囲んでいる物理的空間の画像を取込む。当該システムは次に、画像内の地面または床などの表面平面を識別し、コンテンツを挿入すべき場所を決定し得る。たとえば、当該システムは、コンテンツのためのスクリーン上の場所を示すユーザ入力を受信してもよい。コンテンツは、ユーザによって示された場所に、またはユーザによって示された場所の下の、識別された表面平面上の場所に配置されてもよい。コンテンツは、たとえば、骨格アニメーションモデルを用いてアニメーション化される３次元モデルを含んでもよい。骨格アニメーションモデルは、メッシュと、メッシュをアニメーション化して位置決めするために用いられる接続された１組の骨格関節（スケルトンまたはリグと称され得る）とを含んでもよい。骨格関節は３次元座標として表わされてもよい。いくつかの実装例では、３次元座標は骨格アニメーションモデルの共通の始点に関して定義される。骨格アニメーションモデルはまた、関節同士を接続するセグメントを規定する接続データを格納してもよい。これらセグメントは骨格の骨と類似していてもよい。関節同士を接続するセグメントは、関節の少なくともいくつかの周りに動いてもよいし、または回転してもよい。これらの動きによって、骨格アニメーションモデルの外面メッシュの対応する変化が生じてもよい。セグメントが動くまたは回転すると、接続された関節およびセグメントも動いてもよいし、または回転してもよい。いくつかの実装例では、関節（たとえば骨格関節）は骨格アニメーションモデルの関節の近似であり得る。いくつかの実装例では、１つ以上の関節はコンテンツ（たとえばオブジェクト）の長手方向部材同士の交差点にあり得るか、または当該交差点を含み得る。いくつかの実装例では、骨格はフレームであり得るか、またはフレームと称され得る。
【００１７】
次に、システムは、コンテンツに基づいて表面平面上にバウンディングボックスおよび影中心点（たとえば影中間点）を生成してもよい。たとえば、バウンディングボックスは、コンテンツ（または平面上の関節の投影）と関連付けられた骨格アニメーションモデルのすべての関節を取囲む表面平面上の矩形状であってもよい。影中心点は関節の質量中心であってもよい。たとえば、質量中心は、関節の位置（または関節が表面平面上に投影された後の関節の位置）を平均することによって計算されてもよい。いくつかの実装例では、質量中心はおおよその質量中心であり得る。関節は等しく重み付けされてもよいし、表面平面からの距離などのその他の因子に基づいて重み付けされてもよい。いくつかの実装例では、バウンディングボックスおよび影中心点を生成するためにすべての関節を用いるわけではない。たとえば、いくつかの実装例では、挿入コンテンツは、バウンディングボックスおよび影中心点を生成する際に用いるべき関節のサブセット（すなわち関節ホワイトリスト）を識別してもよい。いくつかの実装例では、挿入コンテンツは、バウンディングボックスおよび影中心点を生成する際に除外すべき関節のサブセット（すなわち関節ブラックリスト）を識別してもよい。たとえば、挿入コンテンツは、関節ブラックリストまたは関節ホワイトリストを含むデータ構造と関連付けられてもよい。挿入コンテンツの骨格関節の各々は、（たとえばバウンディングボックスおよび影中心点を生成する際に）影を生成するためにその関節を用いるべきか否かを示すブール値を含んでもよい。
【００１８】
バウンディングボックスおよび影中心点に基づいて、表面平面上にシャドウポリゴンが生成されてもよい。シャドウポリゴンはさまざまな形状を有してもよい。たとえば、シャドウポリゴンは、バウンディングボックス内に収まり、かつ影中心点で交差する第１および第２の軸を含む楕円形状を有してもよい。本説明の大半は楕円形状に関するが、形状は任意の種類の長円形状であり得る。
【００１９】
レンダリング時、シャドウポリゴンは透明度値（たとえばアルファ値）でシェーディングされてもよい。透明度値は、影中心点からの距離とともに増加する（すなわち、シャドウポリゴンは影中心点から離れるにつれてさらに透明になり、したがってさらに見えにくくなる）。いくつかの例では、透明度値は影中心点からの距離に基づいて非線形的に増加する。シャドウポリゴンは次に、挿入すべきコンテンツの後ろに配置され得る。次に、挿入されたコンテンツおよび生成された影がユーザに提示されてもよい（たとえば、ユーザを囲んでいる物理的空間の取込み画像の上に重畳されてもよい、ユーザの視野内に配置された光結合器の上に投影／表示されてもよい、等）。
【００２０】
本明細書に記載の多くの例は視覚コンテンツをＡＲ環境に挿入するＡＲシステムに関するが、コンテンツは本明細書に記載の技法を用いてその他のシステムにも挿入されてもよい。たとえば、本明細書に記載の技法を用いてコンテンツを画像または映像に挿入してもよい。
【００２１】
図１は、実装例に係るシステム１００を示すブロック図である。システム１００は、システム１００のユーザ用の拡張現実（ＡＲ）環境を生成する。いくつかの実装例では、システム１００は、コンピューティングデバイス１０２と、ヘッドマウントディスプレイデバイス（ＨＭＤ）１０４と、ＡＲコンテンツソース１０６とを含む。ネットワーク１０８も図示されており、これを介してコンピューティングデバイス１０２はＡＲコンテンツソース１０６と通信を行なってもよい。
【００２２】
コンピューティングデバイス１０２は、メモリ１１０と、プロセッサアセンブリ１１２と、通信モジュール１１４と、センサシステム１１６と、ディスプレイ装置１１８とを含んでもよい。メモリ１１０は、ＡＲアプリケーション１２０と、ＡＲコンテンツ１２２と、画像バッファ１２４と、画像分析器１２６と、コンテンツ分析器１２８と、影エンジン１３０とを含んでもよい。コンピューティングデバイス１０２はまた、無線通信プロトコルを用いてコンピューティングデバイス１０２と通信を行なうコントローラなどのさまざまなユーザ入力コンポーネント（図示せず）を含んでもよい。いくつかの実装例では、コンピューティングデバイス１０２は、ＨＭＤ１０４を介してユーザにＡＲコンテンツを提供または出力するように構成され得るモバイル機器（たとえばスマートフォン）である。たとえば、コンピューティングデバイス１０２とＨＭＤ１０４とは、有線接続（たとえば、ユニバーサル・シリアル・バス（ＵＳＢ）ケーブル）を介して、または、無線通信プロトコル（たとえば、任意のＷｉＦｉプロトコル、任意のＢｌｕｅＴｏｏｔｈ（登録商標）プロトコル、Ｚｉｇｂｅｅ（登録商標）など）を介して通信を行なってもよい。いくつかの実装例では、コンピューティングデバイス１０２は、ＨＭＤ１０４のコンポーネントであり、ＨＭＤ１０４の筐体の中に収容されてもよい。
【００２３】
メモリ１１０は、１つ以上の非一時的なコンピュータ可読記憶媒体を含み得る。メモリ１１０は、ユーザ用のＡＲ環境を生成するために使用できる命令とデータとを格納してもよい。
【００２４】
プロセッサアセンブリ１１２は、ＡＲ環境を生成することに関連するさまざまなタスクを実行するための、メモリ１１０に格納された命令など、命令を実行可能な１つ以上のデバイスを含む。たとえば、プロセッサアセンブリ１１２は、ＣＰＵ（central processing unit）および／またはＧＰＵ（graphics processor unit）を含んでもよい。たとえば、ＧＰＵが存在する場合、影を生成することまたは影を表わすポリゴンをシェーディングすることなど、いくつかの画像／映像レンダリングタスクをＣＰＵからＧＰＵに肩代わりさせてもよい。
【００２５】
通信モジュール１１４は、ＡＲコンテンツソース１０６など、他のコンピューティングデバイスと通信を行なうための１つ以上のデバイスを含む。通信モジュール１１４は、ネットワーク１０８など、無線または有線ネットワークを介して通信を行なってもよい。
【００２６】
センサシステム１１６は、カメラアセンブリ１３２など、さまざまなセンサを含んでもよい。センサシステム１１６の実装例はまた、たとえば、慣性運動装置（inertial motion unit：ＩＭＵ）１３４、光センサ、音声センサ、画像センサ、距離センサおよび／もしくは近接センサ、静電容量型センサなどの接触センサ、タイマ、ならびに／またはその他のセンサおよび／もしくはセンサのさまざまな組合せを含む、その他のセンサを含んでもよい。
【００２７】
ＩＭＵ１３４は、コンピューティングデバイス１０２および／またはＨＭＤ１０４の動作、動き、および／または加速度を検出する。ＩＭＵ１３４は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のそのようなセンサなど、さまざまな異なる種類のセンサを含んでもよい。ＩＭＵ１３４に含まれるセンサが提供するデータに基づいて、ＨＭＤ１０４の位置および向きを検出および追跡してもよい。ＨＭＤ１０４の検出された位置および向きによって、システムは、ユーザの視線方向および頭部の動きを検出および追跡でき得る。
【００２８】
いくつかの実装例では、ＡＲアプリケーションは、センサシステム１１６を用いて、物理的空間内のユーザの場所および向きを判断してもよく、ならびに／または物理的空間内の特徴もしくは物体を認識してもよい。
【００２９】
カメラアセンブリ１３２は、コンピューティングデバイス１０２の周りの物理的空間の画像および／または映像を取込む。カメラアセンブリ１３２は１つ以上のカメラを含んでもよい。カメラアセンブリ１３２は赤外線カメラをさらに含んでもよい。
【００３０】
ＡＲアプリケーション１２０は、ＨＭＤならびに／または、ディスプレイ装置１１８、スピーカ、および／もしくはその他の出力装置などのコンピューティングデバイス１０２の１つ以上の出力装置を介してＡＲコンテンツをユーザに提示または提供してもよい。いくつかの実装例では、ＡＲアプリケーション１２０はメモリ１１０に格納された命令を含み、当該命令は、プロセッサアセンブリ１１２によって実行されると、プロセッサアセンブリ１１２に本明細書に記載の動作を行なわせる。たとえば、ＡＲアプリケーション１２０は、たとえば、ＡＲコンテンツ１２２および／またはＡＲコンテンツソース１０６から受信したＡＲコンテンツなど、ＡＲコンテンツに基づいてユーザ用にＡＲ環境を生成および提示してもよい。ＡＲコンテンツ１２２は、ＨＭＤ１０４においてユーザの視野の一部に表示され得る画像または映像などのコンテンツを含んでもよい。ＡＲ環境はまた、物理的（現実世界）環境および物理的（現実世界）エンティティの少なくとも一部を含んでも良い。たとえば、影は、ユーザが位置している物理的空間にコンテンツがより良く適合するように生成されてもよい。コンテンツは、物理的空間のさまざまな部分を重畳するオブジェクトを含んでもよい。コンテンツは、平坦な画像としてまたは３次元（３Ｄ）オブジェクトとしてレンダリングされてもよい。３Ｄオブジェクトは、ポリゴンメッシュとして表わされる１つ以上のオブジェクトを含んでもよい。ポリゴンメッシュは、色および画像などのさまざまな表面テクスチャと関連付けられてもよい。
【００３１】
ＡＲアプリケーション１２０は、画像バッファ１２４、画像分析器１２６、コンテンツ分析器１２８、および影エンジン１３０を用いて、ＡＲコンテンツ１２２に基づいてＨＭＤ１０４を介して表示するための画像を生成してもよい。たとえば、カメラアセンブリ１３２によって取込まれた１つ以上の画像が画像バッファ１２４に格納されてもよい。いくつかの実装例では、画像バッファ１２４は１つ以上の画像を格納するように構成されているメモリ１１０の領域である。いくつかの実装例では、コンピューティングデバイス１０２は、カメラアセンブリ１３２によって取込まれた画像をテクスチャとして画像バッファ１２４内に格納する。これに代えて、またはこれに加えて、画像バッファは、ＧＰＵ上の専用のランダムアクセスメモリ（ＲＡＭ）など、プロセッサアセンブリ１１２と一体型の記憶場所をさらに含んでもよい。
【００３２】
画像分析器１２６は、コンテンツがその上に位置決めされ得る表面平面の場所など、画像のさまざまな特性を求めてもよい。いくつかの実装例では、表面平面は、地面、床、または挿入すべきコンテンツなどのオブジェクトがその上に配置され得るその他の表面に対応する実質的に水平な平面である。
【００３３】
ＡＲアプリケーション１２０はコンテンツを挿入すべき場所を決定してもよい。たとえば、ＡＲアプリケーションは、コンテンツを挿入するための場所を識別するようにユーザを促してから、コンテンツのためのスクリーン上の場所を示すユーザ入力を受信してもよい。ＡＲアプリケーションは、そのユーザ入力に基づいて、挿入コンテンツの場所を決定してもよい。たとえば、コンテンツが挿入される場所はユーザによって示された場所であってもよい。いくつかの実装例では、当該場所は、ユーザによって示された場所を、画像内の床または地面などの表面に対応する平面にマッピングすることによって（たとえば、ユーザによって示された場所の下にある画像分析器１２６によって識別された平面上の場所を見つけることによって）決定される。当該場所はまた、カメラアセンブリによって取込まれた以前の画像内のコンテンツについて決定された場所に基づいて決定されてもよい（たとえば、ＡＲアプリケーションは、コンテンツに、画像内に取込まれた物理的空間内に識別される表面を横切って移動させてもよい）。
【００３４】
コンテンツ分析器１２８は次に、決定された場所で挿入すべきコンテンツのさまざまな特性を求めてもよい。たとえば、コンテンツは、３Ｄモデル、および関節を含む骨格アニメーションモデルと関連付けられてもよい。骨格アニメーションモデルは３Ｄモデルの内部に配置されてもよく、骨格の一部またはすべての周りの３Ｄモデルの一部の動きを可能にしてもよい。一例として、コンテンツ分析器１２８は、骨格アニメーションモデルの関節の少なくともいくつかの場所に基づいて、表面平面上のバウンディングボックスおよび影中心点を求めてもよい。たとえば、骨格関節は表面平面上に投影されてもよい。少なくともいくつかの実施形態では、関節は、（たとえば、関節の３Ｄ位置の高さ成分（すなわち、表面がＸ−Ｚ面に平行である場合はＹ成分）を捨てることによって、または高さ成分を平面の高さと等しく設定することによって）頭上の光源から生じたように見える影を生成するために頭上の位置から投影される。いくつかの実装例では、すべての関節を用いてバウンディングボックスが生成されて影中心点が識別される。いくつかの実装例では、関節のサブセットを用いてバウンディングボックスが生成されて影中心点が識別される（たとえば、挿入コンテンツは使用すべきまたは除外すべき関節を識別してもよい）。いくつかの実装例では、影中心点はオブジェクトの中心になくてもよい。
【００３５】
バウンディングボックスは、投影された関節をすべて含む表面上の矩形であってもよい。少なくともいくつかの実装例では、当該矩形は３Ｄ座標系の軸と並んでいる（たとえば、表面がＸ−Ｚ面に平行である場合は、当該矩形の辺はＸ軸またはＺ軸のいずれかと並んでいる）。
【００３６】
影中心点はさまざまな方法で求めることができる。たとえば、影中心点は、投影された関節の空間的な中点であり得る。影中心点は、投影された関節の質量中心（すなわち、投影された関節の平均位置）として計算することもできる。いくつかの実装例では、質量中心を計算する目的で関節に重みが割当てられてもよい。たとえば、重みは表面からの距離に基づいて割当てられ得る（たとえば、表面に近い関節は表面から遠い関節よりも高い重みを有する）。いくつかの実装例では、ブラックリストにのっていない関節はすべて、表面からの距離に基づいて反比例して重み付けされる。
【００３７】
影エンジン１３０は、挿入すべきコンテンツについて１つ以上の影を生成してもよい。いくつかの実装例では、影エンジン１３０は、コンテンツ分析器１２８によって求められたバウンディングボックスおよび影中心点に基づいてシャドウポリゴンを生成する。当該シャドウポリゴンは、暗色（たとえば黒色）と、影中心点からの距離に基づいて変化する透明度値とを有してもよい。いくつかの実装例では、透明度値は、中心点からの距離に基づいて非線形フォールオフを適用することによって求められる。非線形フォールオフによって、ポリゴンの中心に近い画素は低い透明度値を有し、ポリゴンのエッジに近い画素は高い透明度値を有し得る。少なくともいくつかの実装例では、ポリゴンのエッジ上の画素は完全に透明である。
【００３８】
いくつかの実装例では、影エンジン１３０はその他の技法を用いて影を生成してもよい。たとえば、影エンジン１３０は影マップを用いて影を生成してもよい。影マップを生成する技法の一例が、Williams, Lance. “Casting Curved Shadows on Curved Surfaces.” ACM Siggraph Computer Graphics, Vol. 12, No. 3, ACM, 1978に記載されている。影マップによって生成された影は、バウンディングボックスおよび影中心点を用いて生成された影と組合されてもよい。いくつかの実装例では、これら２つの技法（またはさらには追加の技法）を用いて生成された影同士は、挿入コンテンツまでの距離に基づいてこれら２つの技法を用いて生成された影を重み付けすることによって組合される。たとえば、挿入コンテンツがカメラアセンブリ１３２に近い場合は、影マップを用いて生成された影は重く重み付けされてもよい。さらに、影を生成するその他の技法が用いられて同様に組合され（重み付けされ）てもよい。たとえば、骨格の個々の関節に基づいて追加の影が生成されてもよい。挿入コンテンツがカメラアセンブリ１３２から遠い場合は、（たとえば、影マップを用いて生成された影の代わりになるために）これらの追加の影に大きい重みが与えられてもよい。
【００３９】
いくつかの実装例では、画像分析器１２６、コンテンツ分析器１２８、および影エンジン１３０はメモリ１１０に格納された命令を含んでもよく、当該命令は、プロセッサアセンブリ１１２によって実行されると、プロセッサアセンブリ１１２に本明細書に記載の動作を行なわせて、（たとえばＨＭＤ１０４を介して）ユーザに表示される１つのまたは一連の画像を生成させる。
【００４０】
ＡＲアプリケーション１２０は、カメラアセンブリ１３２、ＩＭＵ１３４、および／またはセンサシステム１１６のその他のコンポーネントから受信した入力に基づいて、ＡＲ環境を更新してもよい。たとえば、ＩＭＵ１３４は、コンピューティングデバイス１０２および／またはＨＭＤ１０４の動作、動き、および／または加速度を検出してもよい。ＩＭＵ１３４は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のそのようなセンサなど、さまざまな異なる種類のセンサを含んでもよい。ＨＭＤ１０４の位置および向きは、ＩＭＵ１３４に含まれるセンサが提供するデータに基づいて検出および追跡されてもよい。ＨＭＤ１０４の検出された位置および向きによって、システムは、物理的空間内のユーザの位置および向きを検出および追跡でき得る。検出された位置および向きに基づいて、ＡＲアプリケーション１２０は、ＡＲ環境を更新し、環境内のユーザの変更された向きおよび／または位置を反映してもよい。
【００４１】
図１ではコンピューティングデバイス１０２とＨＭＤ１０４とは別個のデバイスとして示されているが、いくつかの実装例では、コンピューティングデバイス１０２がＨＭＤ１０４を含んでもよい。いくつかの実装例では、図１に示されるように、コンピューティングデバイス１０２はケーブルを介してＨＭＤ１０４と通信を行なう。たとえば、コンピューティングデバイス１０２は、映像信号および／または音声信号を、ユーザに表示するためにＨＭＤ１０４に送信してもよく、ＨＭＤ１０４は、動作情報、位置情報、および／または向き情報をコンピューティングデバイス１０２に送信してもよい。
【００４２】
ＡＲコンテンツソース１０６は、ＡＲコンテンツを生成および出力してもよく、ＡＲコンテンツは、コンピューティングデバイス１０２など、１つ以上のコンピューティングデバイスに、ネットワーク１０８を介して配布または送られてもよい。実装例では、ＡＲコンテンツは、３次元シーンおよび／または画像を含む。さらに、ＡＲコンテンツは、１つ以上のコンピューティングデバイスにストリーム配信または配布される音声信号／映像信号を含んでもよい。ＡＲコンテンツはまた、コンピューティングデバイス１０２上で実行されて３Ｄシーン、音声信号、および／または映像信号を生成するＡＲアプリケーションを含んでもよい。
【００４３】
ネットワーク１０８は、インターネット、ローカルエリアネットワーク（local area network：ＬＡＮ）、ワイヤレスローカルエリアネットワーク（wireless local area network：ＷＬＡＮ）、および／またはその他のネットワークであってもよい。コンピューティングデバイス１０２は、たとえば、音声信号／映像信号を受信してもよく、音声信号／映像信号は、説明的な実装例におけるＡＲコンテンツの一部として、ネットワークを介して提供されてもよい。
【００４４】
図２は、ユーザがＨＭＤ１０４の一例を通してＡＲ環境２０２を体験している物理的空間２００の一例の三人称視点図である。ＡＲ環境２０２は、コンピューティングデバイス１０２のＡＲアプリケーション１２０によって生成され、ＨＭＤ１０４を通してユーザに表示される。
【００４５】
ＡＲ環境２０２は、物理的空間２００の画像上に表示される挿入コンテンツ２０４を含む。この例では、コンテンツ２０４は、ＡＲ環境２０２における床の表現上に影２０６を生成している亀である。この影は本明細書に記載の技法に従って生成される。
【００４６】
いくつかの実装例では、ＡＲ環境２０２は、単一画像として、またはユーザの視野のすべてもしくは実質的にすべてを占める一対の立体画像としてユーザに提供され、ＨＭＤ１０４を介してユーザに表示される。その他の実装例では、ＡＲ環境は、ユーザの視野の少なくとも一部を占める少なくとも部分的に透明な結合器上に挿入コンテンツ２０４および生成された影２０６を表示／投影することによって、ユーザに提供される。たとえば、ＨＭＤ１０４の一部は透明であってもよく、ユーザがＨＭＤ１０４の装着中にこれらの一部を通して物理的空間２００を見ることができるようにしてもよい。
【００４７】
図３Ａおよび図３Ｂは、たとえば図２のユーザが装着しているＨＭＤ１０４などのＨＭＤ３００の一例の斜視図であり、図３Ｃは、ＨＭＤ３００を制御するおよび／またはＨＭＤ３００と対話するためのハンドヘルド電子機器３０２をの一例を示す。
【００４８】
ハンドヘルド電子機器３０２は、機器３０２の内部部品を受ける筐体３０３と、ユーザがアクセスできる、筐体３０３の外側のユーザインターフェイス３０４とを含んでもよい。ユーザインターフェイス３０４は、ユーザのタッチ入力を受けるように構成されたタッチセンシティブ面３０６を含んでもよい。ユーザインターフェイス３０４はまた、たとえば、作動ボタン、ノブ、ジョイスティックなどの、ユーザが操作するその他の部品を含んでもよい。いくつかの実装例では、ユーザインターフェイス３０４の少なくとも一部はタッチスクリーンとして構成されてもよく、ユーザインターフェイス３０４のその一部は、ユーザインターフェイス項目をユーザに表示するように、かつタッチセンシティブ面３０６上でユーザからのタッチ入力を受けるように構成される。ハンドヘルド電子機器３０２はまた、たとえば、ユーザインターフェイス３０４において受信したユーザ入力に応答して、筐体３０３のポートを通って、たとえばビームまたは光線などを選択的に発光するように構成された光源３０８を含んでもよい。
【００４９】
ＨＭＤ３００は、フレーム３２０に結合された筐体３１０を含んでもよく、さらに、たとえばヘッドフォンに搭載されたスピーカを含む音声出力装置３３０がフレーム３２０に結合されている。図３Ｂでは、筐体３１０の前部３１０ａは、筐体３１０に収容されている部品の一部が見えるように、筐体３１０の基部３１０ｂから回転させている。ディスプレイ３４０が、筐体３１０の前部３１０ａの内部に面する側に装着されてもよい。レンズ３５０が、筐体３１０の内部において、前部３１０ａが筐体３１０の基部３１０ｂに対して閉じられた位置にあるときにユーザの目とディスプレイ３４０との間になるように搭載されてもよい。いくつかの実装例では、ＨＭＤ３００は、さまざまなセンサを含む検知システム３６０と、プロセッサ３９０およびＨＭＤ３００の操作を容易にするさまざまな制御システム装置を含む制御システム３７０とを含んでもよい。
【００５０】
いくつかの実装例では、ＨＭＤ３００は、静止画および動画を取込むためのカメラ３８０を含んでもよい。カメラ３８０によって取込まれた画像は、現実世界、または拡張環境に対する物理的空間におけるユーザおよび／もしくはハンドヘルド電子機器３０２の物理的な位置の追跡を助けるために用いられてもよく、ならびに／またはユーザに対してパススルーモードでディスプレイ３４０に表示することで、ユーザが、ＨＭＤ３００を外すことなく、そうでなければＨＭＤ３００の構成を変更して筐体３１０を動かしてユーザの視線から外すことなく、拡張環境を一時的に出て物理的環境に戻ることができるようにしてもよい。
【００５１】
たとえば、いくつかの実装例では、検知システム３６０は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のそのようなセンサなど、さまざまな異なる種類のセンサを含む慣性計測装置（inertial measurement unit：ＩＭＵ）３６２を含んでもよい。ＩＭＵ３６２に含まれるセンサが提供するデータに基づいて、ＨＭＤ３００の位置および向きを検出および追跡してもよい。ＨＭＤ３００の検出された位置および向きによって、システムは、ユーザの視線方向および頭部の動きを検出および追跡でき得る。
【００５２】
いくつかの実装例では、ＨＭＤ３００は、ユーザの目線を検出および追跡するための視線追跡装置３６５を含んでもよい。視線追跡装置３６５は、たとえば瞳孔など、たとえばユーザの目の特定の部分など、ユーザの目の画像を取込んで、ユーザの視線の方向および動きを検出および追跡するための、たとえば１つの画像センサ３６５Ａまたは複数の画像センサ３６５Ａを含んでもよい。いくつかの実装例では、ＨＭＤ３００は、検出された視線が、没入型仮想体験における対応する対話に変換されるユーザ入力として処理されるように構成されてもよい。
【００５３】
いくつかの実装例では、ＨＭＤ３００は、筐体３１０のチャンバの内部に着脱可能に配置されるスマートフォンなどの携帯型電子機器を含む。たとえば、ディスプレイ３４０およびカメラ３８０は携帯型電子機器によって提供されてもよい。チャンバを（図３Ａに示されるように）閉じると、ユーザが各目で（携帯型電子機器によって提供される）ディスプレイ３４０の少なくとも一部を見ることができるように、ディスプレイ３４０がレンズ３５０と並ぶ。カメラ３８０は、ＨＭＤ３００の携帯型電子機器が筐体３１０内に配置されている間に画像を取込むことができるように、筐体３１０の開口と並んでもよい。
【００５４】
図４は、携帯型電子機器４０２の一例を介してＡＲ環境２０２を体験しているユーザの概略図である。携帯型電子機器４０２はコンピューティングデバイス１０２の一例である。携帯型電子機器４０２はスマートフォン、タブレット、またはその他の種類の携帯型コンピューティングデバイスであってもよい。この例では、ユーザは携帯型電子機器のディスプレイ装置４１８を介してＡＲ環境を体験している。たとえば、ディスプレイ装置４１８は画像および／または映像を表示可能なスクリーンを含んでもよい。
【００５５】
図５は、本明細書に記載の実装例に従う、挿入コンテンツについて影を生成する方法５００の一例の図である。この方法５００は、たとえばコンピューティングデバイス１０２によって行なわれてユーザ用のＡＲ環境を提供してもよい。
【００５６】
動作５０２において、画像を受信する。画像を受信することは、カメラアセンブリ１３２などのカメラアセンブリで画像を取込むことを含んでもよい。画像を受信することは、記憶場所に格納されている以前に取込まれた画像にアクセスすることを含んでもよい。画像はまた、ネットワークを介してアクセス可能なサーバなど、別のコンピューティングデバイスから受信してもよい。
【００５７】
動作５０４において、画像内で表面平面を識別する。表面平面はさまざまな画像処理技術を用いて識別されてもよい。たとえば、表面平面は、画像の実質的に平面の領域を識別することによって識別されてもよい。いくつかの実装例では、表面平面は、複数の画像（たとえば、物理的空間の映像ストリームからの一連の画像）の分析に基づいて生成されてもよい。表面平面は、地面、床、またはその上にオブジェクトが配置され得るその他の表面（たとえばテーブル、カウンター、棚）に対応してもよい。
【００５８】
動作５０６において、挿入すべきコンテンツの場所を決定する。いくつかの実装例では、挿入すべきコンテンツはＡＲコンテンツである。少なくともいくつかの実装例では、コンテンツはポリゴンメッシュなどの１つ以上の３次元モデルを含む。ポリゴンメッシュは、互いに接続された複数の関節を含む骨格アニメーションモデルと関連付けられてもよい。骨格アニメーションモデルによって、関節の少なくともいくつかの周りの動きまたは回転が可能になってもよい。これらの動きによって、ポリゴンメッシュの一部の対応する動きまたは変形が生じてもよい。
【００５９】
挿入すべきコンテンツの場所は、たとえば、受信した画像内に実質的に平面の表面を識別し、識別した表面上にコンテンツを位置決めすることによって決定されてもよい。挿入すべきコンテンツの場所はまた、少なくとも部分的にユーザ入力によって決定されてもよい。たとえば、ユーザは、コンテンツを挿入すべき画像内の場所を識別してもよい。いくつかの実装例では、コンテンツは、ユーザによって識別された場所に対応する水平面上の場所（たとえば、コンテンツが当該平面上に位置決めされるようにユーザによって識別された位置の下の場所）に配置されてもよい。コンテンツの場所はまた、以前の画像（すなわち、カメラアセンブリによって取込まれた映像の以前のフレーム）内のコンテンツの場所に基づいて決定されてもよい。たとえば、コンテンツは物理的空間に対して動き回ってもよい（たとえば、図２に示されるコンピュータで生成された亀の画像コンテンツは、床を這うように進んでもよい）。
【００６０】
動作５０８において、関節に基づいてコンテンツのためのバウンディングボックスを生成する。関節は、動作５０４において識別された表面平面上に上から投影されてもよい。いくつかの実装例では、関節の３Ｄ位置の垂直成分を無視してバウンディングボックスを計算してもよい。いくつかの実装例では、バウンディングボックスは関節を境界付ける（囲む）四辺形である。バウンディングボックスは、たとえば矩形であってもよい。いくつかの実装例では、関節のサブセットを用いてバウンディングボックスが求められる。たとえば、挿入コンテンツは、バウンディングボックスを生成するために使用すべきまたは使用から除外すべき関節のいくつかを識別するデータ構造と関連付けられてもよい。
【００６１】
動作５１０において、関節に基づいて影中心点の場所を求める。たとえば、影中心点の場所は、表面平面上に投影された関節の位置に基づいて求められる。いくつかの実装例では、影中心点は関節の空間的な中点である。いくつかの実装例では、影中心点は点の質量中心として計算される。たとえば、関節は等しく重み付けされてもよく、中心点の場所は関節の位置を平均することによって求められる。いくつかの実装例では、関節は表面平面からの距離（たとえば高さ）に基づいて重み付けされ、中心点の場所は関節の位置の重み付け平均として求められる。（少なくとも動作５０８に関して上述した）バウンディングボックスを生成することと同様に、いくつかの実装例では、関節のサブセットを用いて影中心点の場所を求めてもよい。
【００６２】
動作５１２において、バウンディングボックスおよび影中心点に基づいて表面平面上に影エンティティを生成する。たとえば、影エンティティは、バウンディングボックスによって取囲まれるポリゴンであってもよい。少なくともいくつかの実装例では、影エンティティは、影中心点で交差する第１の軸および第２の軸を有する楕円形状のポリゴンである。楕円形状のポリゴンは、０本、１本、または２本の対称軸を有してもよい。いくつかの実装例では、矩形ポリゴンなど、その他の形状を有するポリゴンが用いられてもよい。さらに、いくつかの実装例では、楕円形状のポリゴンは一般に、楕円に近似するように配置される複数の直線を用いて表わされる。
【００６３】
動作５１４において、影中心点に基づいて求めた画素値を用いて影エンティティをレンダリングする。いくつかの実装例では、影エンティティの画素は、黒色などの暗色でレンダリングされ、変化する透明度（たとえばアルファ値）を有する。画素の透明度値は、画素と中心点との間の距離に基づいて求められてもよい。いくつかの実装例では、透明度値はまた、画素値からポリゴンのエッジまでの距離に基づいている。たとえば、透明度値は、影中心点からポリゴンのエッジまでの距離の割合として表わされる画素の場所に基づくラジアルフォールオフ関数を用いて求められてもよい。いくつかの実装例では、ポリゴンのエッジ上の画素（１００％）は完全に透明になり、影中心点にある画素（０％）は完全に不透明になる。いくつかの実装例では、ラジアルフォールオフは線形である。その他の実装例では、ラジアルフォールオフは非線形である。たとえば、ポリゴンエッジまでの経路の５０％未満にある画素については、影エンティティが実質的に不透明であるように透明度値が低くなり得るが、ポリゴンエッジまでの経路の５０％を超えるところにある画素は、透明度が急激に増加する。いくつかの実装例では、画素値は画素の色を含み得る。
【００６４】
影エンティティがレンダリングされると、挿入コンテンツが影の前に追加され得る。そして、影エンティティおよび挿入コンテンツの双方が動作５０２において受信した画像の上に重畳されて拡張画像が生成され得る。そして拡張画像はユーザに表示されて拡張環境を提供し得る。さらに、レンダリングされた影エンティティおよび挿入コンテンツは透明な結合器表面上に投影されてもよく、当該表面上で物理的空間のユーザの視野上に表示されることになる。この例では、レンダリングされた影エンティティの前に挿入コンテンツを追加することを記載しているが、いくつかの実装例では、挿入コンテンツおよび影エンティティは共にレンダリングされ、見えるようになる影エンティティの部分のみが実際にレンダリングされる。
【００６５】
図６は、本明細書に記載の実装例に従う、挿入コンテンツについて影を生成する方法６００の一例の図である。この方法６００は、たとえばコンピューティングデバイス１０２によって行なわれてユーザ用のＡＲ環境を提供してもよい。
【００６６】
動作６０２において、画像を取込む。たとえば、画像は、コンピューティングデバイス１０２などのコンピューティングデバイスのカメラアセンブリによって取込まれてもよい。取込まれた画像はテクスチャとして画像バッファ１２４に格納されてもよい。画像７００の一例を図７Ａに示す。
【００６７】
動作６０４において、画像内で表面平面を識別する。上述のように、表面平面は画像内の地面または床に対応してもよい。画像７００内に識別された表面平面７０２の一例を図７Ａに示す。
【００６８】
動作６０６において、挿入されるコンテンツのための場所を決定する。いくつかの実装例では、コンテンツは、複数の関節を有する骨格によって少なくとも部分的に規定されるポリゴンメッシュを含む。上述のように、当該場所は、ユーザ入力、表面平面の場所、および／または以前の画像内のコンテンツの場所に基づくなど、さまざまな方法で決定されてもよい。図７Ｂは、画像７００の上に重畳された、決定された場所の一例におけるコンテンツ７０４の一例を示す。図７Ｃは表面平面７０２上のコンテンツ７０４を上面図から示し、図７Ｄは関節７０８を含む骨格７０６（フレームとも称され得る）を示す。
【００６９】
動作６０８において、複数の関節に基づいてコンテンツのためのバウンディングボックスを表面平面上に生成する。上述のように、バウンディングボックスは、関節のすべてまたは実質的にすべてを境界付ける（含む）表面平面（たとえばＸ−Ｚ面）上の矩形であってもよい。図７Ｅは、関節７０８を境界付ける表面平面７０２上のバウンディングボックス７１０の一例を示す。上述のように、挿入コンテンツと関連付けられたデータ構造は、バウンディングボックスを生成する際に含めるべきまたは使用から除外すべき関節のサブセットを識別してもよい。
【００７０】
動作６１０において、複数の関節に基づいて表面平面上の質量中心の場所を求める。上述のように、関節は等しく重み付けされてもよく、質量中心は関節の平均位置として求められる。あるいは、関節は、表面平面の上方の距離など、さまざまな因子によって重み付けされてもよい。図７Ｅは、関節７０８の質量中心の場所として求められる表面平面７０２上の影中心点７１２の一例を示す。いくつかの実装例では、挿入コンテンツと関連付けられたデータ構造が、関節についての重み付け値を提供してもよいし、または質量中心を求める際に含めるべきもしくは使用から除外すべき関節のサブセットを識別してもよい。
【００７１】
動作６１２において、バウンディングボックスおよび質量中心の場所に基づいて、楕円形状のシャドウポリゴンを表面平面上に生成する。上述のように、楕円はバウンディングボックスの中に収まるようにサイズ決めされてもよく、質量中心の場所で交差する第１の軸および第２の軸を有してもよい。図７Ｆは楕円形状の（たとえば長円形状の）シャドウポリゴン７１４の一例を示す。
【００７２】
動作６１４において、質量中心の場所からのラジアルフォールオフに基づく透明度値を用いてシャドウポリゴンをレンダリングする。上述のように、ラジアルフォールオフは線形でも非線形でもよい。図７Ｇはレンダリングされた楕円形状のシャドウポリゴン７１６の一例を示す。
【００７３】
動作６１６において、レンダリングされたシャドウポリゴンの前にコンテンツを挿入する。影エンティティおよび挿入コンテンツの双方が動作６０２において取込まれた画像の上に重畳されて拡張画像が生成され得る。拡張画像７５０の一例を図７Ｈに示す。拡張画像７５０は、画像７００の上に重畳されたコンテンツ７０４およびレンダリングされた楕円形状のシャドウポリゴン７１６を含む。
【００７４】
図８は、本明細書に記載の技法とともに用いられ得るコンピュータデバイス１０００およびモバイルコンピュータデバイス１０５０の一例を示す。コンピューティングデバイス１０００は、プロセッサ１００２と、メモリ１００４と、記憶装置１００６と、メモリ１００４および高速拡張ポート１０１０に接続する高速インターフェイス１００８と、低速バス１０１４および記憶装置１００６に接続する低速インターフェイス１０１２とを含む。コンポーネント１００２，１００４，１００６，１００８，１０１０および１０１２の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。プロセッサ１００２は、コンピューティングデバイス１０００内で実行される命令を処理可能であり、当該命令は、ＧＵＩのためのグラフィカル情報を、高速インターフェイス１００８に結合されたディスプレイ１０１６などの外部入出力デバイス上に表示するために、メモリ１００４内または記憶装置１００６上に格納された命令を含む。その他の実装例では、複数のプロセッサおよび／または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用されてもよい。また、複数のコンピューティングデバイス１０００が接続されてもよく、各デバイスは（たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして）必要な動作の一部を提供する。
【００７５】
メモリ１００４は、情報をコンピューティングデバイス１０００内に格納する。一実装例では、メモリ１００４は１つまたは複数の揮発性メモリユニットである。別の実装例では、メモリ１００４は１つまたは複数の不揮発性メモリユニットである。メモリ１００４はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ可読媒体であってもよい。
【００７６】
記憶装置１００６は、コンピューティングデバイス１０００のための大容量記憶を提供可能である。一実装例では、記憶装置１００６は、フロッピー（登録商標）ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくはその他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ可読媒体であってもよいし、当該コンピュータ可読媒体を含んでもよい。コンピュータプログラムプロダクトが情報担体において有形に具体化され得る。コンピュータプログラムプロダクトはまた、実行されると上述の方法のような１つ以上の方法を行なう命令を含んでもよい。情報担体は、メモリ１００４、記憶装置１００６、またはプロセッサ１００２上のメモリといった、コンピュータ可読媒体または機械可読媒体である。
【００７７】
高速コントローラ１００８はコンピューティングデバイス１０００のための帯域幅集約的な動作を管理するのに対して、低速コントローラ１０１２はより低い帯域幅集約的な動作を管理する。機能のそのような割当ては例示にすぎない。一実装例では、高速コントローラ１００８は、メモリ１００４、ディスプレイ１０１６に（たとえば、グラフィックスプロセッサまたはアクセラレータを介して）、および、さまざまな拡張カード（図示せず）を受付け得る高速拡張ポート１０１０に結合される。この実装例では、低速コントローラ１０１２は、記憶装置１００６および低速拡張ポート１０１４に結合される。さまざまな通信ポート（たとえば、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ、Ｅｔｈｅｒｎｅｔ（登録商標）、無線Ｅｔｈｅｒｎｅｔ）を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの１つ以上の入出力デバイスに、または、スイッチもしくはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合されてもよい。
【００７８】
コンピューティングデバイス１０００は、図に示すように多くの異なる形態で実現されてもよい。たとえばそれは、標準サーバ１０２０として、またはそのようなサーバのグループで複数回実現されてもよい。それはまた、ラックサーバシステム１０２４の一部として実現されてもよい。加えて、それは、ラップトップコンピュータ１０２２などのパーソナルコンピュータにおいて実現されてもよい。これに代えて、コンピューティングデバイス１０００からのコンポーネントは、デバイス１０５０などのモバイル機器（図示せず）におけるその他のコンポーネントと組合されてもよい。そのようなデバイスの各々は、コンピューティングデバイス１０００，１０５０のうちの１つ以上を含んでもよく、システム全体が、互いに通信する複数のコンピューティングデバイス１０００，１０５０で構成されてもよい。
【００７９】
コンピューティングデバイス１０５０は、数あるコンポーネントの中でも特に、プロセッサ１０５２と、メモリ１０６４と、ディスプレイ１０５４などの入出力デバイスと、通信インターフェイス１０６６と、送受信機１０６８とを含む。デバイス１０５０にはまた、追加の格納を提供するために、マイクロドライブまたはその他のデバイスなどの記憶装置が設けられてもよい。コンポーネント１０５０，１０５２，１０６４，１０５４，１０６６および１０６８の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。
【００８０】
プロセッサ１０５２は、メモリ１０６４に格納された命令を含む、コンピューティングデバイス１０５０内の命令を実行可能である。プロセッサは、別個の複数のアナログプロセッサおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス１０５０が実行するアプリケーション、およびデバイス１０５０による無線通信の制御といった、デバイス１０５０のその他のコンポーネント同士の連携を提供してもよい。
【００８１】
プロセッサ１０５２は、ディスプレイ１０５４に結合された制御インターフェイス１０５８およびディスプレイインターフェイス１０５６を介してユーザと通信を行なってもよい。ディスプレイ１０５４は、たとえば、ＴＦＴ  ＬＣＤ（Thin-Film-Transistor Liquid Crystal Display：薄膜トランジスタ液晶ディスプレイ）、またはＯＬＥＤ（Organic Light Emitting Diode：有機発光ダイオード）ディスプレイ、またはその他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス１０５６は、ディスプレイ１０５４を駆動してグラフィカル情報およびその他の情報をユーザに提示するための適切な回路を含んでもよい。制御インターフェイス１０５８は、ユーザからコマンドを受信し、それらをプロセッサ１０５２に送出するために変換してもよい。加えて、デバイス１０５０とその他のデバイスとの近接通信を可能にするように、外部インターフェイス１０６２がプロセッサ１０５２と通信した状態で提供されてもよい。外部インターフェイス１０６２は、たとえば、いくつかの実装例では有線通信を提供してもよく、またはその他の実装例では無線通信を提供してもよく、また複数のインターフェイスが使用されてもよい。
【００８２】
メモリ１０６４は、情報をコンピューティングデバイス１０５０内に格納する。メモリ１０６４は、１つもしくは複数のコンピュータ可読媒体、１つもしくは複数の揮発性メモリユニット、または、１つもしくは複数の不揮発性メモリユニット、の１つ以上として実現され得る。拡張メモリ１０７４も提供されて、拡張インターフェイス１０７２を介してデバイス１０５０に接続されてもよく、拡張インターフェイス１０７２は、たとえばＳＩＭＭ（Single In-Line Memory Module）カードインターフェイスを含んでもよい。そのような拡張メモリ１０７４は、デバイス１０５０に余分の格納スペースを提供してもよく、または、デバイス１０５０のためのアプリケーションもしくはその他の情報も格納してもよい。具体的には、拡張メモリ１０７４は、上述のプロセスを実行または補足するための命令を含んでもよく、セキュアな情報も含んでもよい。このため、たとえば、拡張メモリ１０７４はデバイス１０５０のためのセキュリティモジュールとして提供されてもよく、デバイス１０５０のセキュアな使用を許可する命令でプログラムされてもよい。加えて、ハッキング不可能な態様でＳＩＭＭカード上に識別情報を乗せるといったように、セキュアなアプリケーションが追加情報とともにＳＩＭＭカードを介して提供されてもよい。
【００８３】
メモリはたとえば、以下に述べるように、フラッシュメモリおよび／またはＮＶＲＡＭメモリを含んでもよい。一実装例では、コンピュータプログラムプロダクトが情報担体において有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述の方法のような１つ以上の方法を行なう命令を含む。情報担体は、メモリ１０６４、拡張メモリ１０７４、またはプロセッサ１０５２上のメモリといった、コンピュータ可読媒体または機械可読媒体であり、たとえば送受信機１０６８または外部インターフェイス１０６２を通して受信され得る。
【００８４】
デバイス１０５０は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス１０６６を通して無線通信を行なってもよい。通信インターフェイス１０６６は、とりわけ、ＧＳＭ（登録商標）音声通話、ＳＭＳ、ＥＭＳ、またはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ（登録商標）、ＣＤＭＡ２０００、またはＧＰＲＳといった、さまざまなモードまたはプロトコル下での通信を提供してもよい。そのような通信は、たとえば、無線周波数送受信機１０６８を介して生じてもよい。加えて、Ｂｌｕｅｔｏｏｔｈ、Ｗｉ−Ｆｉ、またはその他のそのような送受信機（図示せず）を使用するなどして、短距離通信が生じてもよい。加えて、ＧＰＳ（Global Positioning System：全地球測位システム）受信機モジュール１０７０が、追加のナビゲーション関連および位置関連の無線データをデバイス１０５０に提供してもよく、このデータは、デバイス１０５０上で実行されるアプリケーションによって適宜使用されてもよい。
【００８５】
デバイス１０５０はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック１０６０を使用して、音声通信を行なってもよい。音声コーデック１０６０は同様に、たとえばデバイス１０５０のハンドセットにおいて、スピーカを介すなどして、ユーザに聞こえる音を生成してもよい。そのような音は、音声電話からの音声を含んでもよく、録音された音（たとえば、音声メッセージ、音楽ファイルなど）を含んでもよく、またデバイス１０５０上で動作するアプリケーションが生成する音を含んでもよい。
【００８６】
コンピューティングデバイス１０５０は、図に示すように多くの異なる形態で実現されてもよい。たとえばそれは、携帯電話１０８０として実現されてもよい。それはまた、スマートフォン１０８２、携帯情報端末、またはその他の同様のモバイル機器の一部として実現されてもよい。
【００８７】
本明細書に記載のシステムおよび技法のさまざまな実装例は、デジタル電子回路、集積回路、特別設計されたＡＳＩＣ（application specific integrated circuit：特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはそれらの組合せにおいて実現され得る。これらのさまざまな実装例は、少なくとも１つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および／または解釈可能な１つ以上のコンピュータプログラムにおける実装例を含み得る。このプロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータおよび命令を受信するとともに、これらにデータおよび命令を送信するように結合されてもよい。
【００８８】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知）は、プログラマブルプロセッサのための機械命令を含んでおり、高レベル手続き型言語および／もしくはオブジェクト指向プログラミング言語で、ならびに／またはアセンブリ／機械言語で実現され得る。本明細書において使用する「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令および／またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラムプロダクト、装置および／またはデバイス（たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス（Programmable Logic Device：ＰＬＤ））を指し、機械命令を機械可読信号として受信する機械可読媒体を含む。「機械可読信号」という用語は、機械命令および／またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
【００８９】
ユーザとの対話を提供するために、本明細書に記載のシステムおよび技法は、情報をユーザに表示するためのディスプレイ装置（ＬＥＤ（発光ダイオード）、またはＯＬＥＤ（有機ＬＥＤ）、もしくはＬＣＤ（液晶ディスプレイ）モニタ／スクリーン）と、ユーザが入力をコンピュータに提供できるようにするキーボードおよびポインティングデバイス（たとえば、マウスまたはトラックボール）とを有するコンピュータ上で実現され得る。その他の種類のデバイスを使用してユーザとの対話を提供することもできる。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック（たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック）であり得る。ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。
【００９０】
本明細書に記載のシステムおよび技法は、（たとえばデータサーバとしての）バックエンドコンポーネントを含む、またはミドルウェアコンポーネント（たとえばアプリケーションサーバ）を含む、またはフロントエンドコンポーネント（たとえば、ユーザが本明細書に記載のシステムおよび技法の実装例と対話できるようにするグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ）を含む、または、そのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実現され得る。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信（たとえば通信ネットワーク）によって相互接続され得る。通信ネットワークの例として、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、およびインターネットがある。
【００９１】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的には通信ネットワークを通して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
【００９２】
いくつかの実装例では、図８に示されるコンピューティングデバイスは、ＡＲヘッドセット／ＨＭＤデバイス１０９０とインターフェイス接続して物理的空間の内部の挿入コンテンツを見るための拡張環境を生成するセンサを含み得る。たとえば、図８に示されるコンピューティングデバイス１０５０またはその他のコンピューティングデバイス上に含まれる１つ以上のセンサは、入力をＡＲヘッドセット１０９０に提供し得、または一般に、入力をＡＲ空間に提供し得る。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、生体認証センサ、温度センサ、湿度センサ、および周囲光センサを含み得るものの、それらに限定されない。コンピューティングデバイス１０５０はこれらのセンサを使用して、ＡＲ空間におけるコンピューティングデバイスの絶対位置および／または検出された回転を判断可能である。当該位置および／または回転は次に、ＡＲ空間への入力として使用され得る。たとえば、コンピューティングデバイス１０５０は、コントローラ、レーザポインタ、キーボード、武器などの仮想オブジェクトとしてＡＲ空間に組込まれてもよい。ＡＲ空間に組込まれた場合のコンピューティングデバイス／仮想オブジェクトのユーザによる位置付けは、ユーザが、ＡＲ空間において仮想オブジェクトをある態様で見るようにコンピューティングデバイスを位置付けることを可能にし得る。たとえば、仮想オブジェクトがレーザポインタを表わす場合、ユーザは、コンピューティングデバイスを、実際のレーザポインタであるかのように操作することができる。ユーザはコンピューティングデバイスをたとえば左右に、上下に、円形に動かして、レーザポインタを使用するのと同様の態様でデバイスを使用することができる。
【００９３】
いくつかの実装例では、コンピューティングデバイス１０５０上に含まれるまたはコンピューティングデバイス１０５０に接続される１つ以上の入力デバイスは、ＡＲ空間への入力として使用され得る。入力デバイスは、タッチスクリーン、キーボード、１つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイク、入力機能性を有するイヤホンもしくは小型イヤホン、ゲーミングコントローラ、またはその他の接続可能な入力デバイスを含み得るものの、それらに限定されない。コンピューティングデバイスがＡＲ空間に組込まれた場合にコンピューティングデバイス１０５０上に含まれる入力デバイスと対話するユーザは、特定のアクションをＡＲ空間に生じさせることができる。
【００９４】
いくつかの実装例では、コンピューティングデバイス１０５０のタッチスクリーンは、ＡＲ空間においてタッチパッドとしてレンダリングされ得る。ユーザは、コンピューティングデバイス１０５０のタッチスクリーンと対話することができる。対話は、たとえばＡＲヘッドセット１０９０において、ＡＲ空間におけるレンダリングされたタッチパッド上の動きとしてレンダリングされる。レンダリングされた動きは、ＡＲ空間において仮想オブジェクトを制御することができる。
【００９５】
いくつかの実装例では、コンピューティングデバイス１０５０上に含まれる１つ以上の出力デバイスは、ＡＲ空間においてＡＲヘッドセット１０９０のユーザに出力および／またはフィードバックを提供することができる。出力およびフィードバックは、視覚、触覚、または音声によるものであり得る。出力および／またはフィードバックは、振動、１つ以上のライトまたはストロボをオンオフすることもしくは点滅および／または明滅させること、アラームを鳴らすこと、チャイムを鳴らすこと、歌を演奏すること、ならびに音声ファイルを演奏することを含み得るものの、それらに限定されない。出力デバイスは、振動モータ、振動コイル、圧電デバイス、静電デバイス、発光ダイオード（ＬＥＤ）、ストロボ、およびスピーカを含み得るものの、それらに限定されない。
【００９６】
いくつかの実装例では、コンピューティングデバイス１０５０は、コンピュータが生成した３Ｄ環境において別のオブジェクトのように見えてもよい。ユーザによるコンピューティングデバイス１０５０との対話（たとえば、タッチスクリーンを回転させること、振動させること、タッチスクリーンに触れること、指でタッチスクリーンをスワイプすること）は、ＡＲ空間におけるオブジェクトとの対話と解釈され得る。ＡＲ空間におけるレーザポインタの例では、コンピューティングデバイス１０５０は、コンピュータが生成した３Ｄ環境において仮想レーザポインタのように見える。ユーザがコンピューティングデバイス１０５０を操作すると、ユーザはＡＲ空間においてレーザポインタの動きを見る。ユーザは、コンピューティングデバイス１０５０上またはＡＲヘッドセット１０９０上で、ＡＲ環境におけるコンピューティングデバイス１０５０との対話からフィードバックを受信する。
【００９７】
いくつかの実装例では、コンピューティングデバイス１０５０はタッチスクリーンを含んでもよい。たとえば、ユーザは、タッチスクリーン上で生じることを模倣してＡＲ空間内で生じさせることができる特定のやり方で、タッチスクリーンと対話することができる。たとえば、ユーザは、つまむ（pinching）タイプの動きを用いて、タッチスクリーン上に表示されているコンテンツの大きさを変えてもよい。このタッチスクリーン上におけるつまむタイプの動きは、ＡＲ空間内で提供されている情報の大きさを変えることができる。別の例において、コンピューティングデバイスは、コンピュータによって生成された３Ｄ環境における仮想ブックとしてレンダリングされてもよい。ＡＲ空間では、このブックのページがＡＲ空間に表示され、ユーザの指でタッチスクリーンをスワイプすることは、仮想ブックのページを裏返す／めくることと解釈され得る。各ページを裏返す／めくると、ページの内容が変わるのが見え、それに加えて、本のページを裏返す音などの音声フィードバックがユーザに提供されてもよい。
【００９８】
いくつかの実装例では、コンピューティングデバイスに加えて１つ以上の入力デバイス（たとえばマウス、キーボード）が、コンピュータが生成した３Ｄ環境においてレンダリングされ得る。レンダリングされた入力デバイス（たとえば、レンダリングされたマウス、レンダリングされたキーボード）は、ＡＲ空間においてオブジェクトを制御するために、ＡＲ空間においてレンダリングされたとして使用され得る。
【００９９】
コンピューティングデバイス１０００は、さまざまな形態のデジタルコンピュータおよびデバイスを表わすよう意図されている。これらのデジタルコンピュータおよびデバイスは、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他の適切なコンピュータを含むものの、それらに限定されない。コンピューティングデバイス１０５０は、携帯情報端末、携帯電話、スマートフォン、およびその他の同様のコンピューティングデバイスといった、さまざまな形態のモバイル機器を表わすよう意図されている。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は、単なる例示であるよう意図されており、本文書に記載のおよび／または特許請求の範囲に記載の本発明の実装例を限定するよう意図されてはいない。
【０１００】
多くの実施形態を説明してきた。しかしながら、明細書の精神および範囲から逸脱することなくさまざまな変形がなされ得ることが理解されるであろう。
【０１０１】
加えて、図面に示す論理フローは、所望の結果を達成するために、示された特定の順序または順番を必要としない。加えて、説明されたフローに対してその他のステップが提供されてもよく、またはステップが除去されてもよく、説明されたシステムに対してその他のコンポーネントが追加されてもよく、または除去されてもよい。したがって、その他の実施形態は以下の特許請求の範囲内にある。
【０１０２】
本明細書に記載の通り、記載されている実装例の特定の特徴を説明してきたが、ここで、当業者は、数多くの変形、代替形、変更、および均等物を想到するであろう。したがって、以下の特許請求の範囲が、すべてのこのような変形および変更を実装例の範囲に含まれるとしてカバーすることを意図していることが、理解されるであろう。これらの実装例は限定ではなく専ら例示を目的として示されており形態および詳細事項にさまざまな変更を加えることができることが、理解されねばならない。本明細書に記載の装置および／または方法はいずれの部分も、相互に相容れない組合せを除いて、何らかの組合せが可能である。本明細書に記載の実装例は、記載されているさまざまな実装例の機能、構成要素および／または特徴のさまざまな組合せおよび／または下位の組合せを含み得る。
【図１】
2020537200.tif 000003
【図２】
2020537200.tif 000004
【図３Ａ】
2020537200.tif 000005
【図３Ｂ】
2020537200.tif 000006
【図３Ｃ】
2020537200.tif 000007
【図４】
2020537200.tif 000008
【図５】
2020537200.tif 000009
【図６】
2020537200.tif 000010
【図７Ａ】
2020537200.tif 000011
【図７Ｂ】
2020537200.tif 000012
【図７Ｃ】
2020537200.tif 000013
【図７Ｄ】
2020537200.tif 000014
【図７Ｅ】
2020537200.tif 000015
【図７Ｆ】
2020537200.tif 000016
【図７Ｇ】
2020537200.tif 000017
【図７Ｈ】
2020537200.tif 000018
【図８】
2020537200.tif 000019
【手続補正書】
【提出日】令和2年5月27日(2020.5.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
コンテンツを挿入すべき画像内の場所を決定することを備え、前記コンテンツは骨格アニメーションモデルを含み、前記方法はさらに、
前記骨格アニメーションモデルからの複数の骨格関節に基づいて、表面平面上にバウンディングボックスを生成することと、
前記複数の関節に基づいて、前記表面平面上の影中心点の場所を求めることと、
前記バウンディングボックスおよび前記影中心点の場所に基づいて、影エンティティを生成することと、
前記影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、前記影エンティティをレンダリングすることとを備える、方法。
【請求項２】
前記コンテンツをレンダリングされた前記影エンティティの上に重畳することと、
前記コンテンツおよびレンダリングされた前記影エンティティを前記画像に挿入して拡張画像を生成することと、
前記拡張画像を表示することとをさらに備える、請求項１に記載の方法。
【請求項３】
前記画像を表示することと、
挿入された前記コンテンツおよびレンダリングされた前記影エンティティを、表示された前記画像の上に重畳することとをさらに備える、請求項１に記載の方法。
【請求項４】
前記画像に基づいて前記表面平面を識別することをさらに備え、前記コンテンツは拡張現実コンテンツであり、前記コンテンツを挿入すべき画像内の場所を決定することは、前記表面平面に基づいて前記画像内の前記場所を決定することを含む、請求項１に記載の方法。
【請求項５】
前記表面平面は、前記画像内に識別される床に対応する、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記影エンティティはポリゴンを含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記ポリゴンは、前記バウンディングボックスによって取囲まれる長円形状のポリゴンである、請求項６に記載の方法。
【請求項８】
前記長円形状のポリゴンの長軸および前記長円形状のポリゴンの短軸は前記影中心点の場所で交差する、請求項７に記載の方法。
【請求項９】
前記ポリゴンは、前記バウンディングボックスの角によって規定される四辺形ポリゴンである、請求項６に記載の方法。
【請求項１０】
前記影エンティティをレンダリングすることは、前記影中心点の場所からの距離に基づいて画素値を求めることを含む、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
前記画素値を求めることは、前記影中心点の場所からの距離に基づく非線形のラジアルフォールオフを用いて画素の透明度値を計算することを含む、請求項１０に記載の方法。
【請求項１２】
命令が格納された非一時的なコンピュータ可読記憶媒体であって、前記命令は、少なくとも１つのプロセッサによって実行されると、コンピューティングシステムに少なくとも、
コンテンツを挿入すべき画像内の場所を決定させ、前記コンテンツは骨格アニメーショ
ンモデルを含み、さらに、
前記画像に基づいて表面平面を識別させ、
前記骨格アニメーションモデルからの複数の骨格関節に基づいて、前記表面平面上にバウンディングボックスを生成させ、
前記複数の関節に基づいて、前記表面平面上の影中心点の場所を求めさせ、
前記バウンディングボックスおよび前記影中心点の場所に基づいて、影エンティティを生成させ、
前記影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、前記影エンティティをレンダリングさせるように構成される、非一時的なコンピュータ可読記憶媒体。
【請求項１３】
前記システムに前記コンテンツを挿入すべき画像内の場所を決定させる前記命令は、前記システムに前記コンテンツのための場所を識別するユーザ入力を受信させる命令を含む、請求項１２に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記システムに前記影中心点の場所を求めさせる前記命令は、前記システムに前記複数の関節を前記表面平面上に投影させる命令を含む、請求項１２または１３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記影中心点の場所は、投影された前記複数の関節の中点を計算することに基づいて求められる、請求項１４に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記影中心点の場所は、前記複数の関節の質量中心に基づいて求められる、請求項１４に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記質量中心は、前記複数の関節を等しく重み付けすることに基づいて求められる、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記質量中心は、前記表面平面からの距離に基づいて前記複数の関節を重み付けすることに基づいて求められる、請求項１６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
前記コンテンツは、前記複数の関節を囲むポリゴンメッシュをさらに含む、請求項１２〜１８のいずれか１項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２０】
前記システムに、前記骨格アニメーションモデルからの複数の骨格関節に基づいて、前記表面平面上にバウンディングボックスを生成させる前記命令は、前記システムに、前記骨格アニメーションモデルと関連付けられたデータ構造に基づいて、前記骨格アニメーションモデルから複数の骨格関節を識別させる命令を含み、前記複数の骨格関節は、前記骨格アニメーションモデルの骨格関節のすべては含まない、請求項１２〜１９のいずれか１項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２１】
システムであって、
カメラアセンブリと、
少なくとも１つのプロセッサと、
命令を格納しているメモリとを備え、前記命令は、前記少なくとも１つのプロセッサによって実行されると、前記システムに、
前記カメラアセンブリを用いて画像を取込ませ、
前記画像に基づいて表面平面を識別させ、
複数の関節を有する骨格によって部分的に規定されるポリゴンメッシュを含むコンテンツを挿入すべき場所を決定させ、
前記複数の関節に基づいて、前記コンテンツのためのバウンディングボックスを前記表面平面上に生成させ、
前記複数の関節を前記表面平面上に投影して、投影された前記複数の関節の位置を平均することに基づいて、前記コンテンツの質量中心の場所を求めさせ、
前記バウンディングボックスおよび前記質量中心の場所に基づいて、前記表面平面上にシャドウポリゴンを生成させ、
前記質量中心の場所にラジアルフォールオフ関数を適用することに基づく透明度値を用いて、前記シャドウポリゴンをレンダリングさせ、
挿入された前記コンテンツをレンダリングされた前記シャドウポリゴンの上に重畳させる、システム。
【請求項２２】
前記シャドウポリゴンは、前記バウンディングボックスの中に含まれる、かつ前記質量中心の場所で交差する第１の軸および第２の軸を含む、長円形状のポリゴンである、請求項２１に記載のシステム。
【請求項２３】
コンピュータによって実行されるプログラムであって、前記プログラムは、前記コンピュータに、請求項１〜１１のいずれか１項に記載の方法を実行させる、プログラム。
【国際調査報告】
2020537200.tif 000020
2020537200.tif 000021
2020537200.tif 000022