IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ グーグル インコーポレイテッドの特許一覧

特許7008730画像に挿入される画像コンテンツについての影生成
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-13
(45)【発行日】2022-01-25
(54)【発明の名称】画像に挿入される画像コンテンツについての影生成
(51)【国際特許分類】
   G06T 19/00 20110101AFI20220118BHJP
   G06T 15/60 20060101ALI20220118BHJP
【FI】
G06T19/00 600
G06T15/60
【請求項の数】 23
(21)【出願番号】P 2019566264
(86)(22)【出願日】2018-10-04
(65)【公表番号】
(43)【公表日】2020-12-17
(86)【国際出願番号】 US2018054360
(87)【国際公開番号】W WO2019070971
(87)【国際公開日】2019-04-11
【審査請求日】2020-05-27
(31)【優先権主張番号】62/568,083
(32)【優先日】2017-10-04
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/568,115
(32)【優先日】2017-10-04
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/150,794
(32)【優先日】2018-10-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ニューランダー,アイバン
【審査官】山▲崎▼ 雄介
(56)【参考文献】
【文献】特開2006-285511(JP,A)
【文献】特表2015-509230(JP,A)
【文献】米国特許第08537233(US,B1)
【文献】特開2010-055131(JP,A)
【文献】特開2002-042165(JP,A)
【文献】特開平09-047576(JP,A)
【文献】特開2008-305241(JP,A)
【文献】国際公開第2014/091824(WO,A1)
【文献】特表2013-517579(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00-19/20
G06T 15/00-15/87
(57)【特許請求の範囲】
【請求項1】
方法であって、
コンテンツを挿入すべき画像内の場所を決定することを備え、前記コンテンツは骨格アニメーションモデルを含み、前記方法はさらに、
前記骨格アニメーションモデルからの少なくとも3以上の骨格関節に基づいて、表面平面上にバウンディングボックスを生成することと、
前記少なくとも3以上骨格関節に基づいて、前記表面平面上の影中心点の場所を求めることと、
前記バウンディングボックスおよび前記影中心点の場所に基づいて、影エンティティを生成することと、
前記影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、前記影エンティティをレンダリングすることとを備える、方法。
【請求項2】
前記コンテンツをレンダリングされた前記影エンティティの上に重畳することと、
前記コンテンツおよびレンダリングされた前記影エンティティを前記画像に挿入して拡張画像を生成することと、
前記拡張画像を表示することとをさらに備える、請求項1に記載の方法。
【請求項3】
前記画像を表示することと、
挿入された前記コンテンツおよびレンダリングされた前記影エンティティを、表示された前記画像の上に重畳することとをさらに備える、請求項1に記載の方法。
【請求項4】
前記画像に基づいて前記表面平面を識別することをさらに備え、前記コンテンツは拡張現実コンテンツであり、前記コンテンツを挿入すべき画像内の場所を決定することは、前記表面平面に基づいて前記画像内の前記場所を決定することを含む、請求項1に記載の方法。
【請求項5】
前記表面平面は、前記画像内に識別される床に対応する、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記影エンティティはポリゴンを含む、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記ポリゴンは、前記バウンディングボックスによって取囲まれる長円形状のポリゴンである、請求項6に記載の方法。
【請求項8】
前記長円形状のポリゴンの長軸および前記長円形状のポリゴンの短軸は前記影中心点の場所で交差する、請求項7に記載の方法。
【請求項9】
前記ポリゴンは、前記バウンディングボックスの角によって規定される四辺形ポリゴンである、請求項6に記載の方法。
【請求項10】
前記影エンティティをレンダリングすることは、前記影中心点の場所からの距離に基づいて画素値を求めることを含む、請求項1~9のいずれか1項に記載の方法。
【請求項11】
前記画素値を求めることは、前記影中心点の場所からの距離に基づく非線形のラジアルフォールオフを用いて画素の透明度値を計算することを含む、請求項10に記載の方法。
【請求項12】
命令が格納された非一時的なコンピュータ可読記憶媒体であって、前記命令は、少なくとも1つのプロセッサによって実行されると、コンピューティングシステムに少なくとも、
コンテンツを挿入すべき画像内の場所を決定させ、前記コンテンツは骨格アニメーションモデルを含み、さらに、
前記画像に基づいて表面平面を識別させ、
前記骨格アニメーションモデルからの少なくとも3以上の骨格関節に基づいて、前記表面平面上にバウンディングボックスを生成させ、
前記少なくとも3以上骨格関節に基づいて、前記表面平面上の影中心点の場所を求めさせ、
前記バウンディングボックスおよび前記影中心点の場所に基づいて、影エンティティを生成させ、
前記影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、前記影エンティティをレンダリングさせるように構成される、非一時的なコンピュータ可読記憶媒体。
【請求項13】
前記システムに前記コンテンツを挿入すべき画像内の場所を決定させる前記命令は、前記システムに前記コンテンツのための場所を識別するユーザ入力を受信させる命令を含む、請求項12に記載の非一時的なコンピュータ可読記憶媒体。
【請求項14】
前記システムに前記影中心点の場所を求めさせる前記命令は、前記システムに前記少なくとも3以上骨格関節を前記表面平面上に投影させる命令を含む、請求項12または13に記載の非一時的なコンピュータ可読記憶媒体。
【請求項15】
前記影中心点の場所は、投影された前記少なくとも3以上骨格関節の中点を計算することに基づいて求められる、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記影中心点の場所は、前記少なくとも3以上骨格関節の質量中心に基づいて求められる、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項17】
前記質量中心は、前記少なくとも3以上骨格関節を等しく重み付けすることに基づいて求められる、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
【請求項18】
前記質量中心は、前記表面平面からの距離に基づいて前記少なくとも3以上骨格関節を重み付けすることに基づいて求められる、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記コンテンツは、前記少なくとも3以上骨格関節を囲むポリゴンメッシュをさらに含む、請求項12~18のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
前記システムに、前記骨格アニメーションモデルからの前記少なくとも3以上の骨格関節に基づいて、前記表面平面上にバウンディングボックスを生成させる前記命令は、前記システムに、前記骨格アニメーションモデルと関連付けられたデータ構造に基づいて、前記骨格アニメーションモデルから前記少なくとも3以上の骨格関節を識別させる命令を含み、前記少なくとも3以上の骨格関節は、前記骨格アニメーションモデルの骨格関節のすべては含まない、請求項12~19のいずれか1項に記載の非一時的なコンピュータ可読記憶媒体。
【請求項21】
システムであって、
カメラアセンブリと、
少なくとも1つのプロセッサと、
命令を格納しているメモリとを備え、前記命令は、前記少なくとも1つのプロセッサによって実行されると、前記システムに、
前記カメラアセンブリを用いて画像を取込ませ、
前記画像に基づいて表面平面を識別させ、
少なくとも3以上の関節を有する骨格によって部分的に規定されるポリゴンメッシュを含むコンテンツを挿入すべき場所を決定させ、
前記少なくとも3以上の関節に基づいて、前記コンテンツのためのバウンディングボックスを前記表面平面上に生成させ、
前記少なくとも3以上の関節を前記表面平面上に投影して、投影された前記少なくとも3以上の関節の位置を平均することに基づいて、前記コンテンツの質量中心の場所を求めさせ、
前記バウンディングボックスおよび前記質量中心の場所に基づいて、前記表面平面上にシャドウポリゴンを生成させ、
前記質量中心の場所にラジアルフォールオフ関数を適用することに基づく透明度値を用いて、前記シャドウポリゴンをレンダリングさせ、
挿入された前記コンテンツをレンダリングされた前記シャドウポリゴンの上に重畳させる、システム。
【請求項22】
前記シャドウポリゴンは、前記バウンディングボックスの中に含まれる、かつ前記質量中心の場所で交差する第1の軸および第2の軸を含む、長円形状のポリゴンである、請求項21に記載のシステム。
【請求項23】
コンピュータによって実行されるプログラムであって、前記プログラムは、前記コンピュータに、請求項1~11のいずれか1項に記載の方法を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2017年10月4日に出願された米国出願番号第62/568,083号に基づく優先権を主張する、かつ2017年10月4日に出願された米国出願番号第62/568,115号に基づく優先権を主張する、2018年10月3日に出願され「挿入コンテンツについての影(SHADOWS FOR INSERTED CONTENT)」と題された米国非仮特許出願番号第16/150,794号の継続出願であり、それに基づく優先権を主張する。これらの開示全体を本明細書に引用により援用する。
【0002】
本願は、2018年10月3日に出願された米国出願番号第16/150,813号に関し、その全体を本明細書に引用により援用する。
【背景技術】
【0003】
背景
コンテンツは画像またはユーザの視野に挿入され得る。たとえば、拡張現実(augmented reality:AR)システムは、コンテンツを挿入することによってユーザ用の没入型拡張環境を生成し得る。没入型拡張環境は、コンピュータ生成コンテンツを現実世界のユーザの視野に重ね合わせることによって生成することができる。たとえば、コンピュータ生成コンテンツは、ラベル、テキスト情報、画像、スプライト、および3次元エンティティを含み得る。これらの画像は、現実世界の物体を重畳しているように見えるようにユーザの視野内の位置に表示され得る。同様に、コンピュータ生成コンテンツは表示画像の上に重畳され得る。挿入コンテンツは、表示画像を重畳する影を生成し得る。影を生成する既存の技法は、リアルタイムのARアプリケーションでの使用には不十分な場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
概要
本開示では、挿入コンテンツについて影を生成するためのシステムおよび方法を記載する。たとえば、挿入コンテンツは、物理的空間の画像に挿入される拡張現実コンテンツを含み得る。
【課題を解決するための手段】
【0005】
ある局面は、方法であって、コンテンツを挿入すべき画像内の場所を決定することを含み、コンテンツは骨格アニメーションモデルを含み、当該方法はさらに、骨格アニメーションモデルからの複数の骨格関節に基づいて、表面平面上にバウンディングボックスを生成することと、複数の関節に基づいて、表面平面上の影中心点の場所を求めることと、バウンディングボックスおよび影中心点の場所に基づいて、影エンティティを生成することと、影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、影エンティティをレンダリングすることとを含む方法である。
【0006】
別の局面は、命令が格納された非一時的なコンピュータ可読記憶媒体であって、当該命令は、少なくとも1つのプロセッサによって実行されると、コンピューティングシステムに少なくとも、コンテンツを挿入すべき画像内の場所を決定させ、コンテンツは骨格アニメーションモデルを含み、さらに、画像に基づいて表面平面を識別させ、骨格アニメーションモデルからの複数の骨格関節に基づいて、表面平面上にバウンディングボックスを生成させ、複数の関節に基づいて、表面平面上の影中心点の場所を求めさせ、バウンディングボックスおよび影中心点の場所に基づいて、影エンティティを生成させ、影中心点の場所に少なくとも部分的に基づいて求められた画素値を用いて、影エンティティをレンダリングさせるように構成される非一時的なコンピュータ可読記憶媒体である。
【0007】
1つ以上の実装例の詳細を添付の図面および以下の説明に記載する。その他の特徴は、説明および図面から、ならびに特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【0008】
図1】実装例に係るシステムを示すブロック図である。
図2図1のHMDの一例を通してユーザがAR環境を体験している物理的空間の一例の三人称視点図である。
図3A】本明細書に記載の実装例に従う、ヘッドマウントディスプレイデバイスおよびコントローラの一例を示す図である。
図3B】本明細書に記載の実装例に従う、ヘッドマウントディスプレイデバイスおよびコントローラの一例を示す図である。
図3C】本明細書に記載の実装例に従う、ヘッドマウントディスプレイデバイスおよびコントローラの一例を示す図である。
図4】携帯型電子機器の一例を介してAR環境を体験しているユーザの概略図である。
図5】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成する方法の一例の図である。
図6】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成する方法の一例の図である。
図7A】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
図7B】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
図7C】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
図7D】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
図7E】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
図7F】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
図7G】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
図7H】本明細書に記載の実装例に従う、挿入コンテンツについて影を生成するステップの概略図である。
図8】本明細書に記載の技法を実現するために使用され得るコンピュータデバイスおよびモバイルコンピュータデバイスの一例を示す図である。
【発明を実施するための形態】
【0009】
詳細な説明
以下に本開示の非限定的な例について詳細に述べるが、それらの例は添付の図面に示されている。これらの例を、同様の参照番号は同様の要素を指す図面を参照して以下に説明する。同様の参照番号が示されている場合、対応する説明は繰返さない。興味のある読者は、同様の要素の説明については以前に述べた図面を参照されたい。
【0010】
拡張現実(AR)システムは、ユーザを囲んでいる物理的空間のユーザの知覚にコンピュータ生成コンテンツを挿入するシステムを含む。コンピュータ生成コンテンツは、ラベル、テキスト情報、画像、スプライト、および3次元エンティティを含み得る。いくつかの実装例では、コンテンツは娯楽目的で、教育目的で、または情報提供を目的として挿入される。
【0011】
ARシステムの一例は、カメラとディスプレイ装置とを含むスマートフォンなどの携帯型電子機器である。携帯型電子機器はカメラを用いて画像を取込み、カメラによって取込まれた画像の上に重畳されるコンピュータ生成コンテンツを含むAR画像をディスプレイ装置上に表示し得る。
【0012】
ARシステムの別の例として、ユーザが装着するヘッドマウントディスプレイ(head-mounted display:HMD)がある。HMDは、ユーザの目の前に位置決めされるディスプレイ装置を含む。たとえば、HMDは、ユーザにはディスプレイ装置が表示するコンテンツしか見えないようにユーザの視野全体を遮る場合がある。いくつかの例では、ディスプレイ装置は、ユーザの片目に1つずつ見える、2つの異なる画像を表示するように構成される。たとえば、視差によって3次元のシーンの感覚を生じさせるために、一方の画像のコンテンツの少なくとも一部は他方の画像内の同じコンテンツに対してややオフセットしている場合がある。いくつかの実装例では、HMDはチャンバを含み、このチャンバの中に、HMDを介して携帯型電子機器のディスプレイ装置を見ることができるように、スマートフォンなどの携帯型電子機器が配置され得る。
【0013】
ARシステムの別の例として、HMDの装着中にユーザが物理的空間を見ることができるHMDがある。当該HMDは、ユーザの視野の上に重畳されるコンピュータ生成コンテンツを表示するマイクロディスプレイ装置を含み得る。たとえば、当該HMDは、物理的空間からの光がユーザの目に届くことを可能にしつつ、マイクロディスプレイ装置が表示する画像をユーザの目に向けて反射する結合器を含む、少なくとも部分的に透明なバイザーを含み得る。
【0014】
コンピュータ生成コンテンツが画像に挿入されると、コンテンツがより現実的に見えるようにコンテンツの周りにまたは下に影が生成され得る。たとえば、3次元モデルは、大面積の頭上の光源によって生成されたように見えるソフトな影を用いてレンダリングされ得る。ポイントライト/ディレクショナルライトの場所に関する情報は物理的空間では入手不可能な場合があるため、これらのソフトな影は、ポイントライト/ディレクショナルライトで生成され得るハードな影よりも好ましい場合がある。
【0015】
ARシステムは、24フレーム/秒(FPS)、30FPS、60FPS、またはその他の速度などの高速でリアルタイムでユーザに表示される画像をリフレッシュする必要があり得る。影を生成する旧来の技法では、物理的空間におけるライティングを判別または推定する必要があり得る。しかし、画像からシーン内のライティングを判別または推定することは、非常に多くの計算(またはプロセッササイクル)を必要とし得るため、許容可能なフレームレートでARシステム上でリアルタイムで行なうことはできない。旧来の技法の中には、環境におけるライティングについての事前情報を必要とするものもあるが、当該情報はARシステムが用いられる環境の多くでは入手不可能であり得る。本明細書にさらに記載する技法は、旧来の技法よりも少ないプロセッササイクルを用いつつ、環境ライティングの事前知識を必要とせずに、現実感があるように挿入コンテンツについて影を生成することを可能にする。さらに、本明細書に記載の技法が必要とする処理サイクルの数が減るので、これらの技法は、旧来の技法が必要とするよりも少ない電力を用いつつ、取込み画像/映像に現実感があるようにコンテンツを挿入することを可能にし得る。挿入コンテンツについてライティングを推定して影を提供するのに必要な電力のこのような減少は、電池式のモバイル機器を含むARシステムにおいて特に重要であり得る。
【0016】
ARシステムの一例は、ユーザを囲んでいる物理的空間の画像を取込む。当該システムは次に、画像内の地面または床などの表面平面を識別し、コンテンツを挿入すべき場所を決定し得る。たとえば、当該システムは、コンテンツのためのスクリーン上の場所を示すユーザ入力を受信してもよい。コンテンツは、ユーザによって示された場所に、またはユーザによって示された場所の下の、識別された表面平面上の場所に配置されてもよい。コンテンツは、たとえば、骨格アニメーションモデルを用いてアニメーション化される3次元モデルを含んでもよい。骨格アニメーションモデルは、メッシュと、メッシュをアニメーション化して位置決めするために用いられる接続された1組の骨格関節(スケルトンまたはリグと称され得る)とを含んでもよい。骨格関節は3次元座標として表わされてもよい。いくつかの実装例では、3次元座標は骨格アニメーションモデルの共通の始点に関して定義される。骨格アニメーションモデルはまた、関節同士を接続するセグメントを規定する接続データを格納してもよい。これらセグメントは骨格の骨と類似していてもよい。関節同士を接続するセグメントは、関節の少なくともいくつかの周りに動いてもよいし、または回転してもよい。これらの動きによって、骨格アニメーションモデルの外面メッシュの対応する変化が生じてもよい。セグメントが動くまたは回転すると、接続された関節およびセグメントも動いてもよいし、または回転してもよい。いくつかの実装例では、関節(たとえば骨格関節)は骨格アニメーションモデルの関節の近似であり得る。いくつかの実装例では、1つ以上の関節はコンテンツ(たとえばオブジェクト)の長手方向部材同士の交差点にあり得るか、または当該交差点を含み得る。いくつかの実装例では、骨格はフレームであり得るか、またはフレームと称され得る。
【0017】
次に、システムは、コンテンツに基づいて表面平面上にバウンディングボックスおよび影中心点(たとえば影中間点)を生成してもよい。たとえば、バウンディングボックスは、コンテンツ(または平面上の関節の投影)と関連付けられた骨格アニメーションモデルのすべての関節を取囲む表面平面上の矩形状であってもよい。影中心点は関節の質量中心であってもよい。たとえば、質量中心は、関節の位置(または関節が表面平面上に投影された後の関節の位置)を平均することによって計算されてもよい。いくつかの実装例では、質量中心はおおよその質量中心であり得る。関節は等しく重み付けされてもよいし、表面平面からの距離などのその他の因子に基づいて重み付けされてもよい。いくつかの実装例では、バウンディングボックスおよび影中心点を生成するためにすべての関節を用いるわけではない。たとえば、いくつかの実装例では、挿入コンテンツは、バウンディングボックスおよび影中心点を生成する際に用いるべき関節のサブセット(すなわち関節ホワイトリスト)を識別してもよい。いくつかの実装例では、挿入コンテンツは、バウンディングボックスおよび影中心点を生成する際に除外すべき関節のサブセット(すなわち関節ブラックリスト)を識別してもよい。たとえば、挿入コンテンツは、関節ブラックリストまたは関節ホワイトリストを含むデータ構造と関連付けられてもよい。挿入コンテンツの骨格関節の各々は、(たとえばバウンディングボックスおよび影中心点を生成する際に)影を生成するためにその関節を用いるべきか否かを示すブール値を含んでもよい。
【0018】
バウンディングボックスおよび影中心点に基づいて、表面平面上にシャドウポリゴンが生成されてもよい。シャドウポリゴンはさまざまな形状を有してもよい。たとえば、シャドウポリゴンは、バウンディングボックス内に収まり、かつ影中心点で交差する第1および第2の軸を含む楕円形状を有してもよい。本説明の大半は楕円形状に関するが、形状は任意の種類の長円形状であり得る。
【0019】
レンダリング時、シャドウポリゴンは透明度値(たとえばアルファ値)でシェーディングされてもよい。透明度値は、影中心点からの距離とともに増加する(すなわち、シャドウポリゴンは影中心点から離れるにつれてさらに透明になり、したがってさらに見えにくくなる)。いくつかの例では、透明度値は影中心点からの距離に基づいて非線形的に増加する。シャドウポリゴンは次に、挿入すべきコンテンツの後ろに配置され得る。次に、挿入されたコンテンツおよび生成された影がユーザに提示されてもよい(たとえば、ユーザを囲んでいる物理的空間の取込み画像の上に重畳されてもよい、ユーザの視野内に配置された光結合器の上に投影/表示されてもよい、等)。
【0020】
本明細書に記載の多くの例は視覚コンテンツをAR環境に挿入するARシステムに関するが、コンテンツは本明細書に記載の技法を用いてその他のシステムにも挿入されてもよい。たとえば、本明細書に記載の技法を用いてコンテンツを画像または映像に挿入してもよい。
【0021】
図1は、実装例に係るシステム100を示すブロック図である。システム100は、システム100のユーザ用の拡張現実(AR)環境を生成する。いくつかの実装例では、システム100は、コンピューティングデバイス102と、ヘッドマウントディスプレイデバイス(HMD)104と、ARコンテンツソース106とを含む。ネットワーク108も図示されており、これを介してコンピューティングデバイス102はARコンテンツソース106と通信を行なってもよい。
【0022】
コンピューティングデバイス102は、メモリ110と、プロセッサアセンブリ112と、通信モジュール114と、センサシステム116と、ディスプレイ装置118とを含んでもよい。メモリ110は、ARアプリケーション120と、ARコンテンツ122と、画像バッファ124と、画像分析器126と、コンテンツ分析器128と、影エンジン130とを含んでもよい。コンピューティングデバイス102はまた、無線通信プロトコルを用いてコンピューティングデバイス102と通信を行なうコントローラなどのさまざまなユーザ入力コンポーネント(図示せず)を含んでもよい。いくつかの実装例では、コンピューティングデバイス102は、HMD104を介してユーザにARコンテンツを提供または出力するように構成され得るモバイル機器(たとえばスマートフォン)である。たとえば、コンピューティングデバイス102とHMD104とは、有線接続(たとえば、ユニバーサル・シリアル・バス(USB)ケーブル)を介して、または、無線通信プロトコル(たとえば、任意のWiFiプロトコル、任意のBlueTooth(登録商標)プロトコル、Zigbee(登録商標)など)を介して通信を行なってもよい。いくつかの実装例では、コンピューティングデバイス102は、HMD104のコンポーネントであり、HMD104の筐体の中に収容されてもよい。
【0023】
メモリ110は、1つ以上の非一時的なコンピュータ可読記憶媒体を含み得る。メモリ110は、ユーザ用のAR環境を生成するために使用できる命令とデータとを格納してもよい。
【0024】
プロセッサアセンブリ112は、AR環境を生成することに関連するさまざまなタスクを実行するための、メモリ110に格納された命令など、命令を実行可能な1つ以上のデバイスを含む。たとえば、プロセッサアセンブリ112は、CPU(central processing unit)および/またはGPU(graphics processor unit)を含んでもよい。たとえば、GPUが存在する場合、影を生成することまたは影を表わすポリゴンをシェーディングすることなど、いくつかの画像/映像レンダリングタスクをCPUからGPUに肩代わりさせてもよい。
【0025】
通信モジュール114は、ARコンテンツソース106など、他のコンピューティングデバイスと通信を行なうための1つ以上のデバイスを含む。通信モジュール114は、ネットワーク108など、無線または有線ネットワークを介して通信を行なってもよい。
【0026】
センサシステム116は、カメラアセンブリ132など、さまざまなセンサを含んでもよい。センサシステム116の実装例はまた、たとえば、慣性運動装置(inertial motion unit:IMU)134、光センサ、音声センサ、画像センサ、距離センサおよび/もしくは近接センサ、静電容量型センサなどの接触センサ、タイマ、ならびに/またはその他のセンサおよび/もしくはセンサのさまざまな組合せを含む、その他のセンサを含んでもよい。
【0027】
IMU134は、コンピューティングデバイス102および/またはHMD104の動作、動き、および/または加速度を検出する。IMU134は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のそのようなセンサなど、さまざまな異なる種類のセンサを含んでもよい。IMU134に含まれるセンサが提供するデータに基づいて、HMD104の位置および向きを検出および追跡してもよい。HMD104の検出された位置および向きによって、システムは、ユーザの視線方向および頭部の動きを検出および追跡でき得る。
【0028】
いくつかの実装例では、ARアプリケーションは、センサシステム116を用いて、物理的空間内のユーザの場所および向きを判断してもよく、ならびに/または物理的空間内の特徴もしくは物体を認識してもよい。
【0029】
カメラアセンブリ132は、コンピューティングデバイス102の周りの物理的空間の画像および/または映像を取込む。カメラアセンブリ132は1つ以上のカメラを含んでもよい。カメラアセンブリ132は赤外線カメラをさらに含んでもよい。
【0030】
ARアプリケーション120は、HMDならびに/または、ディスプレイ装置118、スピーカ、および/もしくはその他の出力装置などのコンピューティングデバイス102の1つ以上の出力装置を介してARコンテンツをユーザに提示または提供してもよい。いくつかの実装例では、ARアプリケーション120はメモリ110に格納された命令を含み、当該命令は、プロセッサアセンブリ112によって実行されると、プロセッサアセンブリ112に本明細書に記載の動作を行なわせる。たとえば、ARアプリケーション120は、たとえば、ARコンテンツ122および/またはARコンテンツソース106から受信したARコンテンツなど、ARコンテンツに基づいてユーザ用にAR環境を生成および提示してもよい。ARコンテンツ122は、HMD104においてユーザの視野の一部に表示され得る画像または映像などのコンテンツを含んでもよい。AR環境はまた、物理的(現実世界)環境および物理的(現実世界)エンティティの少なくとも一部を含んでも良い。たとえば、影は、ユーザが位置している物理的空間にコンテンツがより良く適合するように生成されてもよい。コンテンツは、物理的空間のさまざまな部分を重畳するオブジェクトを含んでもよい。コンテンツは、平坦な画像としてまたは3次元(3D)オブジェクトとしてレンダリングされてもよい。3Dオブジェクトは、ポリゴンメッシュとして表わされる1つ以上のオブジェクトを含んでもよい。ポリゴンメッシュは、色および画像などのさまざまな表面テクスチャと関連付けられてもよい。
【0031】
ARアプリケーション120は、画像バッファ124、画像分析器126、コンテンツ分析器128、および影エンジン130を用いて、ARコンテンツ122に基づいてHMD104を介して表示するための画像を生成してもよい。たとえば、カメラアセンブリ132によって取込まれた1つ以上の画像が画像バッファ124に格納されてもよい。いくつかの実装例では、画像バッファ124は1つ以上の画像を格納するように構成されているメモリ110の領域である。いくつかの実装例では、コンピューティングデバイス102は、カメラアセンブリ132によって取込まれた画像をテクスチャとして画像バッファ124内に格納する。これに代えて、またはこれに加えて、画像バッファは、GPU上の専用のランダムアクセスメモリ(RAM)など、プロセッサアセンブリ112と一体型の記憶場所をさらに含んでもよい。
【0032】
画像分析器126は、コンテンツがその上に位置決めされ得る表面平面の場所など、画像のさまざまな特性を求めてもよい。いくつかの実装例では、表面平面は、地面、床、または挿入すべきコンテンツなどのオブジェクトがその上に配置され得るその他の表面に対応する実質的に水平な平面である。
【0033】
ARアプリケーション120はコンテンツを挿入すべき場所を決定してもよい。たとえば、ARアプリケーションは、コンテンツを挿入するための場所を識別するようにユーザを促してから、コンテンツのためのスクリーン上の場所を示すユーザ入力を受信してもよい。ARアプリケーションは、そのユーザ入力に基づいて、挿入コンテンツの場所を決定してもよい。たとえば、コンテンツが挿入される場所はユーザによって示された場所であってもよい。いくつかの実装例では、当該場所は、ユーザによって示された場所を、画像内の床または地面などの表面に対応する平面にマッピングすることによって(たとえば、ユーザによって示された場所の下にある画像分析器126によって識別された平面上の場所を見つけることによって)決定される。当該場所はまた、カメラアセンブリによって取込まれた以前の画像内のコンテンツについて決定された場所に基づいて決定されてもよい(たとえば、ARアプリケーションは、コンテンツに、画像内に取込まれた物理的空間内に識別される表面を横切って移動させてもよい)。
【0034】
コンテンツ分析器128は次に、決定された場所で挿入すべきコンテンツのさまざまな特性を求めてもよい。たとえば、コンテンツは、3Dモデル、および関節を含む骨格アニメーションモデルと関連付けられてもよい。骨格アニメーションモデルは3Dモデルの内部に配置されてもよく、骨格の一部またはすべての周りの3Dモデルの一部の動きを可能にしてもよい。一例として、コンテンツ分析器128は、骨格アニメーションモデルの関節の少なくともいくつかの場所に基づいて、表面平面上のバウンディングボックスおよび影中心点を求めてもよい。たとえば、骨格関節は表面平面上に投影されてもよい。少なくともいくつかの実施形態では、関節は、(たとえば、関節の3D位置の高さ成分(すなわち、表面がX-Z面に平行である場合はY成分)を捨てることによって、または高さ成分を平面の高さと等しく設定することによって)頭上の光源から生じたように見える影を生成するために頭上の位置から投影される。いくつかの実装例では、すべての関節を用いてバウンディングボックスが生成されて影中心点が識別される。いくつかの実装例では、関節のサブセットを用いてバウンディングボックスが生成されて影中心点が識別される(たとえば、挿入コンテンツは使用すべきまたは除外すべき関節を識別してもよい)。いくつかの実装例では、影中心点はオブジェクトの中心になくてもよい。
【0035】
バウンディングボックスは、投影された関節をすべて含む表面上の矩形であってもよい。少なくともいくつかの実装例では、当該矩形は3D座標系の軸と並んでいる(たとえば、表面がX-Z面に平行である場合は、当該矩形の辺はX軸またはZ軸のいずれかと並んでいる)。
【0036】
影中心点はさまざまな方法で求めることができる。たとえば、影中心点は、投影された関節の空間的な中点であり得る。影中心点は、投影された関節の質量中心(すなわち、投影された関節の平均位置)として計算することもできる。いくつかの実装例では、質量中心を計算する目的で関節に重みが割当てられてもよい。たとえば、重みは表面からの距離に基づいて割当てられ得る(たとえば、表面に近い関節は表面から遠い関節よりも高い重みを有する)。いくつかの実装例では、ブラックリストにのっていない関節はすべて、表面からの距離に基づいて反比例して重み付けされる。
【0037】
影エンジン130は、挿入すべきコンテンツについて1つ以上の影を生成してもよい。いくつかの実装例では、影エンジン130は、コンテンツ分析器128によって求められたバウンディングボックスおよび影中心点に基づいてシャドウポリゴンを生成する。当該シャドウポリゴンは、暗色(たとえば黒色)と、影中心点からの距離に基づいて変化する透明度値とを有してもよい。いくつかの実装例では、透明度値は、中心点からの距離に基づいて非線形フォールオフを適用することによって求められる。非線形フォールオフによって、ポリゴンの中心に近い画素は低い透明度値を有し、ポリゴンのエッジに近い画素は高い透明度値を有し得る。少なくともいくつかの実装例では、ポリゴンのエッジ上の画素は完全に透明である。
【0038】
いくつかの実装例では、影エンジン130はその他の技法を用いて影を生成してもよい。たとえば、影エンジン130は影マップを用いて影を生成してもよい。影マップを生成する技法の一例が、Williams, Lance. “Casting Curved Shadows on Curved Surfaces.” ACM Siggraph Computer Graphics, Vol. 12, No. 3, ACM, 1978に記載されている。影マップによって生成された影は、バウンディングボックスおよび影中心点を用いて生成された影と組合されてもよい。いくつかの実装例では、これら2つの技法(またはさらには追加の技法)を用いて生成された影同士は、挿入コンテンツまでの距離に基づいてこれら2つの技法を用いて生成された影を重み付けすることによって組合される。たとえば、挿入コンテンツがカメラアセンブリ132に近い場合は、影マップを用いて生成された影は重く重み付けされてもよい。さらに、影を生成するその他の技法が用いられて同様に組合され(重み付けされ)てもよい。たとえば、骨格の個々の関節に基づいて追加の影が生成されてもよい。挿入コンテンツがカメラアセンブリ132から遠い場合は、(たとえば、影マップを用いて生成された影の代わりになるために)これらの追加の影に大きい重みが与えられてもよい。
【0039】
いくつかの実装例では、画像分析器126、コンテンツ分析器128、および影エンジン130はメモリ110に格納された命令を含んでもよく、当該命令は、プロセッサアセンブリ112によって実行されると、プロセッサアセンブリ112に本明細書に記載の動作を行なわせて、(たとえばHMD104を介して)ユーザに表示される1つのまたは一連の画像を生成させる。
【0040】
ARアプリケーション120は、カメラアセンブリ132、IMU134、および/またはセンサシステム116のその他のコンポーネントから受信した入力に基づいて、AR環境を更新してもよい。たとえば、IMU134は、コンピューティングデバイス102および/またはHMD104の動作、動き、および/または加速度を検出してもよい。IMU134は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のそのようなセンサなど、さまざまな異なる種類のセンサを含んでもよい。HMD104の位置および向きは、IMU134に含まれるセンサが提供するデータに基づいて検出および追跡されてもよい。HMD104の検出された位置および向きによって、システムは、物理的空間内のユーザの位置および向きを検出および追跡でき得る。検出された位置および向きに基づいて、ARアプリケーション120は、AR環境を更新し、環境内のユーザの変更された向きおよび/または位置を反映してもよい。
【0041】
図1ではコンピューティングデバイス102とHMD104とは別個のデバイスとして示されているが、いくつかの実装例では、コンピューティングデバイス102がHMD104を含んでもよい。いくつかの実装例では、図1に示されるように、コンピューティングデバイス102はケーブルを介してHMD104と通信を行なう。たとえば、コンピューティングデバイス102は、映像信号および/または音声信号を、ユーザに表示するためにHMD104に送信してもよく、HMD104は、動作情報、位置情報、および/または向き情報をコンピューティングデバイス102に送信してもよい。
【0042】
ARコンテンツソース106は、ARコンテンツを生成および出力してもよく、ARコンテンツは、コンピューティングデバイス102など、1つ以上のコンピューティングデバイスに、ネットワーク108を介して配布または送られてもよい。実装例では、ARコンテンツは、3次元シーンおよび/または画像を含む。さらに、ARコンテンツは、1つ以上のコンピューティングデバイスにストリーム配信または配布される音声信号/映像信号を含んでもよい。ARコンテンツはまた、コンピューティングデバイス102上で実行されて3Dシーン、音声信号、および/または映像信号を生成するARアプリケーションを含んでもよい。
【0043】
ネットワーク108は、インターネット、ローカルエリアネットワーク(local area network:LAN)、ワイヤレスローカルエリアネットワーク(wireless local area network:WLAN)、および/またはその他のネットワークであってもよい。コンピューティングデバイス102は、たとえば、音声信号/映像信号を受信してもよく、音声信号/映像信号は、説明的な実装例におけるARコンテンツの一部として、ネットワークを介して提供されてもよい。
【0044】
図2は、ユーザがHMD104の一例を通してAR環境202を体験している物理的空間200の一例の三人称視点図である。AR環境202は、コンピューティングデバイス102のARアプリケーション120によって生成され、HMD104を通してユーザに表示される。
【0045】
AR環境202は、物理的空間200の画像上に表示される挿入コンテンツ204を含む。この例では、コンテンツ204は、AR環境202における床の表現上に影206を生成している亀である。この影は本明細書に記載の技法に従って生成される。
【0046】
いくつかの実装例では、AR環境202は、単一画像として、またはユーザの視野のすべてもしくは実質的にすべてを占める一対の立体画像としてユーザに提供され、HMD104を介してユーザに表示される。その他の実装例では、AR環境は、ユーザの視野の少なくとも一部を占める少なくとも部分的に透明な結合器上に挿入コンテンツ204および生成された影206を表示/投影することによって、ユーザに提供される。たとえば、HMD104の一部は透明であってもよく、ユーザがHMD104の装着中にこれらの一部を通して物理的空間200を見ることができるようにしてもよい。
【0047】
図3Aおよび図3Bは、たとえば図2のユーザが装着しているHMD104などのHMD300の一例の斜視図であり、図3Cは、HMD300を制御するおよび/またはHMD300と対話するためのハンドヘルド電子機器302をの一例を示す。
【0048】
ハンドヘルド電子機器302は、機器302の内部部品を受ける筐体303と、ユーザがアクセスできる、筐体303の外側のユーザインターフェイス304とを含んでもよい。ユーザインターフェイス304は、ユーザのタッチ入力を受けるように構成されたタッチセンシティブ面306を含んでもよい。ユーザインターフェイス304はまた、たとえば、作動ボタン、ノブ、ジョイスティックなどの、ユーザが操作するその他の部品を含んでもよい。いくつかの実装例では、ユーザインターフェイス304の少なくとも一部はタッチスクリーンとして構成されてもよく、ユーザインターフェイス304のその一部は、ユーザインターフェイス項目をユーザに表示するように、かつタッチセンシティブ面306上でユーザからのタッチ入力を受けるように構成される。ハンドヘルド電子機器302はまた、たとえば、ユーザインターフェイス304において受信したユーザ入力に応答して、筐体303のポートを通って、たとえばビームまたは光線などを選択的に発光するように構成された光源308を含んでもよい。
【0049】
HMD300は、フレーム320に結合された筐体310を含んでもよく、さらに、たとえばヘッドフォンに搭載されたスピーカを含む音声出力装置330がフレーム320に結合されている。図3Bでは、筐体310の前部310aは、筐体310に収容されている部品の一部が見えるように、筐体310の基部310bから回転させている。ディスプレイ340が、筐体310の前部310aの内部に面する側に装着されてもよい。レンズ350が、筐体310の内部において、前部310aが筐体310の基部310bに対して閉じられた位置にあるときにユーザの目とディスプレイ340との間になるように搭載されてもよい。いくつかの実装例では、HMD300は、さまざまなセンサを含む検知システム360と、プロセッサ390およびHMD300の操作を容易にするさまざまな制御システム装置を含む制御システム370とを含んでもよい。
【0050】
いくつかの実装例では、HMD300は、静止画および動画を取込むためのカメラ380を含んでもよい。カメラ380によって取込まれた画像は、現実世界、または拡張環境に対する物理的空間におけるユーザおよび/もしくはハンドヘルド電子機器302の物理的な位置の追跡を助けるために用いられてもよく、ならびに/またはユーザに対してパススルーモードでディスプレイ340に表示することで、ユーザが、HMD300を外すことなく、そうでなければHMD300の構成を変更して筐体310を動かしてユーザの視線から外すことなく、拡張環境を一時的に出て物理的環境に戻ることができるようにしてもよい。
【0051】
たとえば、いくつかの実装例では、検知システム360は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のそのようなセンサなど、さまざまな異なる種類のセンサを含む慣性計測装置(inertial measurement unit:IMU)362を含んでもよい。IMU362に含まれるセンサが提供するデータに基づいて、HMD300の位置および向きを検出および追跡してもよい。HMD300の検出された位置および向きによって、システムは、ユーザの視線方向および頭部の動きを検出および追跡でき得る。
【0052】
いくつかの実装例では、HMD300は、ユーザの目線を検出および追跡するための視線追跡装置365を含んでもよい。視線追跡装置365は、たとえば瞳孔など、たとえばユーザの目の特定の部分など、ユーザの目の画像を取込んで、ユーザの視線の方向および動きを検出および追跡するための、たとえば1つの画像センサ365Aまたは複数の画像センサ365Aを含んでもよい。いくつかの実装例では、HMD300は、検出された視線が、没入型仮想体験における対応する対話に変換されるユーザ入力として処理されるように構成されてもよい。
【0053】
いくつかの実装例では、HMD300は、筐体310のチャンバの内部に着脱可能に配置されるスマートフォンなどの携帯型電子機器を含む。たとえば、ディスプレイ340およびカメラ380は携帯型電子機器によって提供されてもよい。チャンバを(図3Aに示されるように)閉じると、ユーザが各目で(携帯型電子機器によって提供される)ディスプレイ340の少なくとも一部を見ることができるように、ディスプレイ340がレンズ350と並ぶ。カメラ380は、HMD300の携帯型電子機器が筐体310内に配置されている間に画像を取込むことができるように、筐体310の開口と並んでもよい。
【0054】
図4は、携帯型電子機器402の一例を介してAR環境202を体験しているユーザの概略図である。携帯型電子機器402はコンピューティングデバイス102の一例である。携帯型電子機器402はスマートフォン、タブレット、またはその他の種類の携帯型コンピューティングデバイスであってもよい。この例では、ユーザは携帯型電子機器のディスプレイ装置418を介してAR環境を体験している。たとえば、ディスプレイ装置418は画像および/または映像を表示可能なスクリーンを含んでもよい。
【0055】
図5は、本明細書に記載の実装例に従う、挿入コンテンツについて影を生成する方法500の一例の図である。この方法500は、たとえばコンピューティングデバイス102によって行なわれてユーザ用のAR環境を提供してもよい。
【0056】
動作502において、画像を受信する。画像を受信することは、カメラアセンブリ132などのカメラアセンブリで画像を取込むことを含んでもよい。画像を受信することは、記憶場所に格納されている以前に取込まれた画像にアクセスすることを含んでもよい。画像はまた、ネットワークを介してアクセス可能なサーバなど、別のコンピューティングデバイスから受信してもよい。
【0057】
動作504において、画像内で表面平面を識別する。表面平面はさまざまな画像処理技術を用いて識別されてもよい。たとえば、表面平面は、画像の実質的に平面の領域を識別することによって識別されてもよい。いくつかの実装例では、表面平面は、複数の画像(たとえば、物理的空間の映像ストリームからの一連の画像)の分析に基づいて生成されてもよい。表面平面は、地面、床、またはその上にオブジェクトが配置され得るその他の表面(たとえばテーブル、カウンター、棚)に対応してもよい。
【0058】
動作506において、挿入すべきコンテンツの場所を決定する。いくつかの実装例では、挿入すべきコンテンツはARコンテンツである。少なくともいくつかの実装例では、コンテンツはポリゴンメッシュなどの1つ以上の3次元モデルを含む。ポリゴンメッシュは、互いに接続された複数の関節を含む骨格アニメーションモデルと関連付けられてもよい。骨格アニメーションモデルによって、関節の少なくともいくつかの周りの動きまたは回転が可能になってもよい。これらの動きによって、ポリゴンメッシュの一部の対応する動きまたは変形が生じてもよい。
【0059】
挿入すべきコンテンツの場所は、たとえば、受信した画像内に実質的に平面の表面を識別し、識別した表面上にコンテンツを位置決めすることによって決定されてもよい。挿入すべきコンテンツの場所はまた、少なくとも部分的にユーザ入力によって決定されてもよい。たとえば、ユーザは、コンテンツを挿入すべき画像内の場所を識別してもよい。いくつかの実装例では、コンテンツは、ユーザによって識別された場所に対応する水平面上の場所(たとえば、コンテンツが当該平面上に位置決めされるようにユーザによって識別された位置の下の場所)に配置されてもよい。コンテンツの場所はまた、以前の画像(すなわち、カメラアセンブリによって取込まれた映像の以前のフレーム)内のコンテンツの場所に基づいて決定されてもよい。たとえば、コンテンツは物理的空間に対して動き回ってもよい(たとえば、図2に示されるコンピュータで生成された亀の画像コンテンツは、床を這うように進んでもよい)。
【0060】
動作508において、関節に基づいてコンテンツのためのバウンディングボックスを生成する。関節は、動作504において識別された表面平面上に上から投影されてもよい。いくつかの実装例では、関節の3D位置の垂直成分を無視してバウンディングボックスを計算してもよい。いくつかの実装例では、バウンディングボックスは関節を境界付ける(囲む)四辺形である。バウンディングボックスは、たとえば矩形であってもよい。いくつかの実装例では、関節のサブセットを用いてバウンディングボックスが求められる。たとえば、挿入コンテンツは、バウンディングボックスを生成するために使用すべきまたは使用から除外すべき関節のいくつかを識別するデータ構造と関連付けられてもよい。
【0061】
動作510において、関節に基づいて影中心点の場所を求める。たとえば、影中心点の場所は、表面平面上に投影された関節の位置に基づいて求められる。いくつかの実装例では、影中心点は関節の空間的な中点である。いくつかの実装例では、影中心点は点の質量中心として計算される。たとえば、関節は等しく重み付けされてもよく、中心点の場所は関節の位置を平均することによって求められる。いくつかの実装例では、関節は表面平面からの距離(たとえば高さ)に基づいて重み付けされ、中心点の場所は関節の位置の重み付け平均として求められる。(少なくとも動作508に関して上述した)バウンディングボックスを生成することと同様に、いくつかの実装例では、関節のサブセットを用いて影中心点の場所を求めてもよい。
【0062】
動作512において、バウンディングボックスおよび影中心点に基づいて表面平面上に影エンティティを生成する。たとえば、影エンティティは、バウンディングボックスによって取囲まれるポリゴンであってもよい。少なくともいくつかの実装例では、影エンティティは、影中心点で交差する第1の軸および第2の軸を有する楕円形状のポリゴンである。楕円形状のポリゴンは、0本、1本、または2本の対称軸を有してもよい。いくつかの実装例では、矩形ポリゴンなど、その他の形状を有するポリゴンが用いられてもよい。さらに、いくつかの実装例では、楕円形状のポリゴンは一般に、楕円に近似するように配置される複数の直線を用いて表わされる。
【0063】
動作514において、影中心点に基づいて求めた画素値を用いて影エンティティをレンダリングする。いくつかの実装例では、影エンティティの画素は、黒色などの暗色でレンダリングされ、変化する透明度(たとえばアルファ値)を有する。画素の透明度値は、画素と中心点との間の距離に基づいて求められてもよい。いくつかの実装例では、透明度値はまた、画素値からポリゴンのエッジまでの距離に基づいている。たとえば、透明度値は、影中心点からポリゴンのエッジまでの距離の割合として表わされる画素の場所に基づくラジアルフォールオフ関数を用いて求められてもよい。いくつかの実装例では、ポリゴンのエッジ上の画素(100%)は完全に透明になり、影中心点にある画素(0%)は完全に不透明になる。いくつかの実装例では、ラジアルフォールオフは線形である。その他の実装例では、ラジアルフォールオフは非線形である。たとえば、ポリゴンエッジまでの経路の50%未満にある画素については、影エンティティが実質的に不透明であるように透明度値が低くなり得るが、ポリゴンエッジまでの経路の50%を超えるところにある画素は、透明度が急激に増加する。いくつかの実装例では、画素値は画素の色を含み得る。
【0064】
影エンティティがレンダリングされると、挿入コンテンツが影の前に追加され得る。そして、影エンティティおよび挿入コンテンツの双方が動作502において受信した画像の上に重畳されて拡張画像が生成され得る。そして拡張画像はユーザに表示されて拡張環境を提供し得る。さらに、レンダリングされた影エンティティおよび挿入コンテンツは透明な結合器表面上に投影されてもよく、当該表面上で物理的空間のユーザの視野上に表示されることになる。この例では、レンダリングされた影エンティティの前に挿入コンテンツを追加することを記載しているが、いくつかの実装例では、挿入コンテンツおよび影エンティティは共にレンダリングされ、見えるようになる影エンティティの部分のみが実際にレンダリングされる。
【0065】
図6は、本明細書に記載の実装例に従う、挿入コンテンツについて影を生成する方法600の一例の図である。この方法600は、たとえばコンピューティングデバイス102によって行なわれてユーザ用のAR環境を提供してもよい。
【0066】
動作602において、画像を取込む。たとえば、画像は、コンピューティングデバイス102などのコンピューティングデバイスのカメラアセンブリによって取込まれてもよい。取込まれた画像はテクスチャとして画像バッファ124に格納されてもよい。画像700の一例を図7Aに示す。
【0067】
動作604において、画像内で表面平面を識別する。上述のように、表面平面は画像内の地面または床に対応してもよい。画像700内に識別された表面平面702の一例を図7Aに示す。
【0068】
動作606において、挿入されるコンテンツのための場所を決定する。いくつかの実装例では、コンテンツは、複数の関節を有する骨格によって少なくとも部分的に規定されるポリゴンメッシュを含む。上述のように、当該場所は、ユーザ入力、表面平面の場所、および/または以前の画像内のコンテンツの場所に基づくなど、さまざまな方法で決定されてもよい。図7Bは、画像700の上に重畳された、決定された場所の一例におけるコンテンツ704の一例を示す。図7Cは表面平面702上のコンテンツ704を上面図から示し、図7Dは関節708を含む骨格706(フレームとも称され得る)を示す。
【0069】
動作608において、複数の関節に基づいてコンテンツのためのバウンディングボックスを表面平面上に生成する。上述のように、バウンディングボックスは、関節のすべてまたは実質的にすべてを境界付ける(含む)表面平面(たとえばX-Z面)上の矩形であってもよい。図7Eは、関節708を境界付ける表面平面702上のバウンディングボックス710の一例を示す。上述のように、挿入コンテンツと関連付けられたデータ構造は、バウンディングボックスを生成する際に含めるべきまたは使用から除外すべき関節のサブセットを識別してもよい。
【0070】
動作610において、複数の関節に基づいて表面平面上の質量中心の場所を求める。上述のように、関節は等しく重み付けされてもよく、質量中心は関節の平均位置として求められる。あるいは、関節は、表面平面の上方の距離など、さまざまな因子によって重み付けされてもよい。図7Eは、関節708の質量中心の場所として求められる表面平面702上の影中心点712の一例を示す。いくつかの実装例では、挿入コンテンツと関連付けられたデータ構造が、関節についての重み付け値を提供してもよいし、または質量中心を求める際に含めるべきもしくは使用から除外すべき関節のサブセットを識別してもよい。
【0071】
動作612において、バウンディングボックスおよび質量中心の場所に基づいて、楕円形状のシャドウポリゴンを表面平面上に生成する。上述のように、楕円はバウンディングボックスの中に収まるようにサイズ決めされてもよく、質量中心の場所で交差する第1の軸および第2の軸を有してもよい。図7Fは楕円形状の(たとえば長円形状の)シャドウポリゴン714の一例を示す。
【0072】
動作614において、質量中心の場所からのラジアルフォールオフに基づく透明度値を用いてシャドウポリゴンをレンダリングする。上述のように、ラジアルフォールオフは線形でも非線形でもよい。図7Gはレンダリングされた楕円形状のシャドウポリゴン716の一例を示す。
【0073】
動作616において、レンダリングされたシャドウポリゴンの前にコンテンツを挿入する。影エンティティおよび挿入コンテンツの双方が動作602において取込まれた画像の上に重畳されて拡張画像が生成され得る。拡張画像750の一例を図7Hに示す。拡張画像750は、画像700の上に重畳されたコンテンツ704およびレンダリングされた楕円形状のシャドウポリゴン716を含む。
【0074】
図8は、本明細書に記載の技法とともに用いられ得るコンピュータデバイス1000およびモバイルコンピュータデバイス1050の一例を示す。コンピューティングデバイス1000は、プロセッサ1002と、メモリ1004と、記憶装置1006と、メモリ1004および高速拡張ポート1010に接続する高速インターフェイス1008と、低速バス1014および記憶装置1006に接続する低速インターフェイス1012とを含む。コンポーネント1002,1004,1006,1008,1010および1012の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。プロセッサ1002は、コンピューティングデバイス1000内で実行される命令を処理可能であり、当該命令は、GUIのためのグラフィカル情報を、高速インターフェイス1008に結合されたディスプレイ1016などの外部入出力デバイス上に表示するために、メモリ1004内または記憶装置1006上に格納された命令を含む。その他の実装例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用されてもよい。また、複数のコンピューティングデバイス1000が接続されてもよく、各デバイスは(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
【0075】
メモリ1004は、情報をコンピューティングデバイス1000内に格納する。一実装例では、メモリ1004は1つまたは複数の揮発性メモリユニットである。別の実装例では、メモリ1004は1つまたは複数の不揮発性メモリユニットである。メモリ1004はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ可読媒体であってもよい。
【0076】
記憶装置1006は、コンピューティングデバイス1000のための大容量記憶を提供可能である。一実装例では、記憶装置1006は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくはその他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ可読媒体であってもよいし、当該コンピュータ可読媒体を含んでもよい。コンピュータプログラムプロダクトが情報担体において有形に具体化され得る。コンピュータプログラムプロダクトはまた、実行されると上述の方法のような1つ以上の方法を行なう命令を含んでもよい。情報担体は、メモリ1004、記憶装置1006、またはプロセッサ1002上のメモリといった、コンピュータ可読媒体または機械可読媒体である。
【0077】
高速コントローラ1008はコンピューティングデバイス1000のための帯域幅集約的な動作を管理するのに対して、低速コントローラ1012はより低い帯域幅集約的な動作を管理する。機能のそのような割当ては例示にすぎない。一実装例では、高速コントローラ1008は、メモリ1004、ディスプレイ1016に(たとえば、グラフィックスプロセッサまたはアクセラレータを介して)、および、さまざまな拡張カード(図示せず)を受付け得る高速拡張ポート1010に結合される。この実装例では、低速コントローラ1012は、記憶装置1006および低速拡張ポート1014に結合される。さまざまな通信ポート(たとえば、USB、Bluetooth、Ethernet(登録商標)、無線Ethernet)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入出力デバイスに、または、スイッチもしくはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合されてもよい。
【0078】
コンピューティングデバイス1000は、図に示すように多くの異なる形態で実現されてもよい。たとえばそれは、標準サーバ1020として、またはそのようなサーバのグループで複数回実現されてもよい。それはまた、ラックサーバシステム1024の一部として実現されてもよい。加えて、それは、ラップトップコンピュータ1022などのパーソナルコンピュータにおいて実現されてもよい。これに代えて、コンピューティングデバイス1000からのコンポーネントは、デバイス1050などのモバイル機器(図示せず)におけるその他のコンポーネントと組合されてもよい。そのようなデバイスの各々は、コンピューティングデバイス1000,1050のうちの1つ以上を含んでもよく、システム全体が、互いに通信する複数のコンピューティングデバイス1000,1050で構成されてもよい。
【0079】
コンピューティングデバイス1050は、数あるコンポーネントの中でも特に、プロセッサ1052と、メモリ1064と、ディスプレイ1054などの入出力デバイスと、通信インターフェイス1066と、送受信機1068とを含む。デバイス1050にはまた、追加の格納を提供するために、マイクロドライブまたはその他のデバイスなどの記憶装置が設けられてもよい。コンポーネント1050,1052,1064,1054,1066および1068の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。
【0080】
プロセッサ1052は、メモリ1064に格納された命令を含む、コンピューティングデバイス1050内の命令を実行可能である。プロセッサは、別個の複数のアナログプロセッサおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス1050が実行するアプリケーション、およびデバイス1050による無線通信の制御といった、デバイス1050のその他のコンポーネント同士の連携を提供してもよい。
【0081】
プロセッサ1052は、ディスプレイ1054に結合された制御インターフェイス1058およびディスプレイインターフェイス1056を介してユーザと通信を行なってもよい。ディスプレイ1054は、たとえば、TFT LCD(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)、またはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、またはその他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス1056は、ディスプレイ1054を駆動してグラフィカル情報およびその他の情報をユーザに提示するための適切な回路を含んでもよい。制御インターフェイス1058は、ユーザからコマンドを受信し、それらをプロセッサ1052に送出するために変換してもよい。加えて、デバイス1050とその他のデバイスとの近接通信を可能にするように、外部インターフェイス1062がプロセッサ1052と通信した状態で提供されてもよい。外部インターフェイス1062は、たとえば、いくつかの実装例では有線通信を提供してもよく、またはその他の実装例では無線通信を提供してもよく、また複数のインターフェイスが使用されてもよい。
【0082】
メモリ1064は、情報をコンピューティングデバイス1050内に格納する。メモリ1064は、1つもしくは複数のコンピュータ可読媒体、1つもしくは複数の揮発性メモリユニット、または、1つもしくは複数の不揮発性メモリユニット、の1つ以上として実現され得る。拡張メモリ1074も提供されて、拡張インターフェイス1072を介してデバイス1050に接続されてもよく、拡張インターフェイス1072は、たとえばSIMM(Single In-Line Memory Module)カードインターフェイスを含んでもよい。そのような拡張メモリ1074は、デバイス1050に余分の格納スペースを提供してもよく、または、デバイス1050のためのアプリケーションもしくはその他の情報も格納してもよい。具体的には、拡張メモリ1074は、上述のプロセスを実行または補足するための命令を含んでもよく、セキュアな情報も含んでもよい。このため、たとえば、拡張メモリ1074はデバイス1050のためのセキュリティモジュールとして提供されてもよく、デバイス1050のセキュアな使用を許可する命令でプログラムされてもよい。加えて、ハッキング不可能な態様でSIMMカード上に識別情報を乗せるといったように、セキュアなアプリケーションが追加情報とともにSIMMカードを介して提供されてもよい。
【0083】
メモリはたとえば、以下に述べるように、フラッシュメモリおよび/またはNVRAMメモリを含んでもよい。一実装例では、コンピュータプログラムプロダクトが情報担体において有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述の方法のような1つ以上の方法を行なう命令を含む。情報担体は、メモリ1064、拡張メモリ1074、またはプロセッサ1052上のメモリといった、コンピュータ可読媒体または機械可読媒体であり、たとえば送受信機1068または外部インターフェイス1062を通して受信され得る。
【0084】
デバイス1050は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス1066を通して無線通信を行なってもよい。通信インターフェイス1066は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、さまざまなモードまたはプロトコル下での通信を提供してもよい。そのような通信は、たとえば、無線周波数送受信機1068を介して生じてもよい。加えて、Bluetooth、Wi-Fi、またはその他のそのような送受信機(図示せず)を使用するなどして、短距離通信が生じてもよい。加えて、GPS(Global Positioning System:全地球測位システム)受信機モジュール1070が、追加のナビゲーション関連および位置関連の無線データをデバイス1050に提供してもよく、このデータは、デバイス1050上で実行されるアプリケーションによって適宜使用されてもよい。
【0085】
デバイス1050はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック1060を使用して、音声通信を行なってもよい。音声コーデック1060は同様に、たとえばデバイス1050のハンドセットにおいて、スピーカを介すなどして、ユーザに聞こえる音を生成してもよい。そのような音は、音声電話からの音声を含んでもよく、録音された音(たとえば、音声メッセージ、音楽ファイルなど)を含んでもよく、またデバイス1050上で動作するアプリケーションが生成する音を含んでもよい。
【0086】
コンピューティングデバイス1050は、図に示すように多くの異なる形態で実現されてもよい。たとえばそれは、携帯電話1080として実現されてもよい。それはまた、スマートフォン1082、携帯情報端末、またはその他の同様のモバイル機器の一部として実現されてもよい。
【0087】
本明細書に記載のシステムおよび技法のさまざまな実装例は、デジタル電子回路、集積回路、特別設計されたASIC(application specific integrated circuit:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せにおいて実現され得る。これらのさまざまな実装例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実装例を含み得る。このプロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信するとともに、これらにデータおよび命令を送信するように結合されてもよい。
【0088】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知)は、プログラマブルプロセッサのための機械命令を含んでおり、高レベル手続き型言語および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ/機械言語で実現され得る。本明細書において使用する「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラムプロダクト、装置および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device:PLD))を指し、機械命令を機械可読信号として受信する機械可読媒体を含む。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
【0089】
ユーザとの対話を提供するために、本明細書に記載のシステムおよび技法は、情報をユーザに表示するためのディスプレイ装置(LED(発光ダイオード)、またはOLED(有機LED)、もしくはLCD(液晶ディスプレイ)モニタ/スクリーン)と、ユーザが入力をコンピュータに提供できるようにするキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを有するコンピュータ上で実現され得る。その他の種類のデバイスを使用してユーザとの対話を提供することもできる。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であり得る。ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。
【0090】
本明細書に記載のシステムおよび技法は、(たとえばデータサーバとしての)バックエンドコンポーネントを含む、またはミドルウェアコンポーネント(たとえばアプリケーションサーバ)を含む、またはフロントエンドコンポーネント(たとえば、ユーザが本明細書に記載のシステムおよび技法の実装例と対話できるようにするグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ)を含む、または、そのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実現され得る。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信(たとえば通信ネットワーク)によって相互接続され得る。通信ネットワークの例として、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、およびインターネットがある。
【0091】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的には通信ネットワークを通して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0092】
いくつかの実装例では、図8に示されるコンピューティングデバイスは、ARヘッドセット/HMDデバイス1090とインターフェイス接続して物理的空間の内部の挿入コンテンツを見るための拡張環境を生成するセンサを含み得る。たとえば、図8に示されるコンピューティングデバイス1050またはその他のコンピューティングデバイス上に含まれる1つ以上のセンサは、入力をARヘッドセット1090に提供し得、または一般に、入力をAR空間に提供し得る。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、生体認証センサ、温度センサ、湿度センサ、および周囲光センサを含み得るものの、それらに限定されない。コンピューティングデバイス1050はこれらのセンサを使用して、AR空間におけるコンピューティングデバイスの絶対位置および/または検出された回転を判断可能である。当該位置および/または回転は次に、AR空間への入力として使用され得る。たとえば、コンピューティングデバイス1050は、コントローラ、レーザポインタ、キーボード、武器などの仮想オブジェクトとしてAR空間に組込まれてもよい。AR空間に組込まれた場合のコンピューティングデバイス/仮想オブジェクトのユーザによる位置付けは、ユーザが、AR空間において仮想オブジェクトをある態様で見るようにコンピューティングデバイスを位置付けることを可能にし得る。たとえば、仮想オブジェクトがレーザポインタを表わす場合、ユーザは、コンピューティングデバイスを、実際のレーザポインタであるかのように操作することができる。ユーザはコンピューティングデバイスをたとえば左右に、上下に、円形に動かして、レーザポインタを使用するのと同様の態様でデバイスを使用することができる。
【0093】
いくつかの実装例では、コンピューティングデバイス1050上に含まれるまたはコンピューティングデバイス1050に接続される1つ以上の入力デバイスは、AR空間への入力として使用され得る。入力デバイスは、タッチスクリーン、キーボード、1つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイク、入力機能性を有するイヤホンもしくは小型イヤホン、ゲーミングコントローラ、またはその他の接続可能な入力デバイスを含み得るものの、それらに限定されない。コンピューティングデバイスがAR空間に組込まれた場合にコンピューティングデバイス1050上に含まれる入力デバイスと対話するユーザは、特定のアクションをAR空間に生じさせることができる。
【0094】
いくつかの実装例では、コンピューティングデバイス1050のタッチスクリーンは、AR空間においてタッチパッドとしてレンダリングされ得る。ユーザは、コンピューティングデバイス1050のタッチスクリーンと対話することができる。対話は、たとえばARヘッドセット1090において、AR空間におけるレンダリングされたタッチパッド上の動きとしてレンダリングされる。レンダリングされた動きは、AR空間において仮想オブジェクトを制御することができる。
【0095】
いくつかの実装例では、コンピューティングデバイス1050上に含まれる1つ以上の出力デバイスは、AR空間においてARヘッドセット1090のユーザに出力および/またはフィードバックを提供することができる。出力およびフィードバックは、視覚、触覚、または音声によるものであり得る。出力および/またはフィードバックは、振動、1つ以上のライトまたはストロボをオンオフすることもしくは点滅および/または明滅させること、アラームを鳴らすこと、チャイムを鳴らすこと、歌を演奏すること、ならびに音声ファイルを演奏することを含み得るものの、それらに限定されない。出力デバイスは、振動モータ、振動コイル、圧電デバイス、静電デバイス、発光ダイオード(LED)、ストロボ、およびスピーカを含み得るものの、それらに限定されない。
【0096】
いくつかの実装例では、コンピューティングデバイス1050は、コンピュータが生成した3D環境において別のオブジェクトのように見えてもよい。ユーザによるコンピューティングデバイス1050との対話(たとえば、タッチスクリーンを回転させること、振動させること、タッチスクリーンに触れること、指でタッチスクリーンをスワイプすること)は、AR空間におけるオブジェクトとの対話と解釈され得る。AR空間におけるレーザポインタの例では、コンピューティングデバイス1050は、コンピュータが生成した3D環境において仮想レーザポインタのように見える。ユーザがコンピューティングデバイス1050を操作すると、ユーザはAR空間においてレーザポインタの動きを見る。ユーザは、コンピューティングデバイス1050上またはARヘッドセット1090上で、AR環境におけるコンピューティングデバイス1050との対話からフィードバックを受信する。
【0097】
いくつかの実装例では、コンピューティングデバイス1050はタッチスクリーンを含んでもよい。たとえば、ユーザは、タッチスクリーン上で生じることを模倣してAR空間内で生じさせることができる特定のやり方で、タッチスクリーンと対話することができる。たとえば、ユーザは、つまむ(pinching)タイプの動きを用いて、タッチスクリーン上に表示されているコンテンツの大きさを変えてもよい。このタッチスクリーン上におけるつまむタイプの動きは、AR空間内で提供されている情報の大きさを変えることができる。別の例において、コンピューティングデバイスは、コンピュータによって生成された3D環境における仮想ブックとしてレンダリングされてもよい。AR空間では、このブックのページがAR空間に表示され、ユーザの指でタッチスクリーンをスワイプすることは、仮想ブックのページを裏返す/めくることと解釈され得る。各ページを裏返す/めくると、ページの内容が変わるのが見え、それに加えて、本のページを裏返す音などの音声フィードバックがユーザに提供されてもよい。
【0098】
いくつかの実装例では、コンピューティングデバイスに加えて1つ以上の入力デバイス(たとえばマウス、キーボード)が、コンピュータが生成した3D環境においてレンダリングされ得る。レンダリングされた入力デバイス(たとえば、レンダリングされたマウス、レンダリングされたキーボード)は、AR空間においてオブジェクトを制御するために、AR空間においてレンダリングされたとして使用され得る。
【0099】
コンピューティングデバイス1000は、さまざまな形態のデジタルコンピュータおよびデバイスを表わすよう意図されている。これらのデジタルコンピュータおよびデバイスは、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他の適切なコンピュータを含むものの、それらに限定されない。コンピューティングデバイス1050は、携帯情報端末、携帯電話、スマートフォン、およびその他の同様のコンピューティングデバイスといった、さまざまな形態のモバイル機器を表わすよう意図されている。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は、単なる例示であるよう意図されており、本文書に記載のおよび/または特許請求の範囲に記載の本発明の実装例を限定するよう意図されてはいない。
【0100】
多くの実施形態を説明してきた。しかしながら、明細書の精神および範囲から逸脱することなくさまざまな変形がなされ得ることが理解されるであろう。
【0101】
加えて、図面に示す論理フローは、所望の結果を達成するために、示された特定の順序または順番を必要としない。加えて、説明されたフローに対してその他のステップが提供されてもよく、またはステップが除去されてもよく、説明されたシステムに対してその他のコンポーネントが追加されてもよく、または除去されてもよい。したがって、その他の実施形態は以下の特許請求の範囲内にある。
【0102】
本明細書に記載の通り、記載されている実装例の特定の特徴を説明してきたが、ここで、当業者は、数多くの変形、代替形、変更、および均等物を想到するであろう。したがって、以下の特許請求の範囲が、すべてのこのような変形および変更を実装例の範囲に含まれるとしてカバーすることを意図していることが、理解されるであろう。これらの実装例は限定ではなく専ら例示を目的として示されており形態および詳細事項にさまざまな変更を加えることができることが、理解されねばならない。本明細書に記載の装置および/または方法はいずれの部分も、相互に相容れない組合せを除いて、何らかの組合せが可能である。本明細書に記載の実装例は、記載されているさまざまな実装例の機能、構成要素および/または特徴のさまざまな組合せおよび/または下位の組合せを含み得る。
図1
図2
図3A
図3B
図3C
図4
図5
図6
図7A
図7B
図7C
図7D
図7E
図7F
図7G
図7H
図8