(57)【特許請求の範囲】
【請求項１】
システムであって、
１つまたは複数のコンピュータプロセッサと、
１つまたは複数のコンピュータメモリと、
前記１または複数のコンピュータメモリに組み込まれた一組の命令であって、ユーザの混合現実対応デバイス上の混合現実環境内で複数のコンテキストアプリケーションを実施するための複数の動作を実行させるように前記１つまたは複数のコンピュータプロセッサを設定する前記１つまたは複数の命令と、を備え、
前記複数の動作は、
前記混合現実対応デバイスのセンサによって捕捉される少なくとも１つの現実世界のオブジェクトの１つまたは複数の属性にオブジェクト認識アルゴリズムを適用することにより、前記混合現実環境内の少なくとも１つの現実世界のオブジェクトを識別すること、
前記複数のコンテキストアプリケーションの第１のコンテキストアプリケーションを使用して、第１の組のコンテキストトリガーと前記複数のコンテキストアプリケーションのうちの第２のコンテキストアプリケーションとの間の関連付けを決定することであって、前記第１のコンテキストアプリケーションはランチャーアプリケーションである、前記関連付けを決定すること、
前記第１の組のコンテキストトリガーのうちの少なくとも１つが満足されたとの判定に基づいて前記第２のコンテキストアプリケーションを開始することであって、前記第１の組のコンテキストトリガーのうちの少なくとも１つが満足されたとの判定は、前記混合現実対応デバイスのセンサによって捕捉された周囲に対応するリアルタイムデータの分析に基づくものであり、前記混合現実環境において前記第２のコンテキストアプリケーションに関連する少なくとも１つの仮想オブジェクトを提示することを含む前記第２のコンテキストアプリケーションを開始すること、
前記少なくとも１つの仮想オブジェクトとのユーザの対話が、前記第２のコンテキストアプリケーションに関連付けられた第２の組のコンテキストトリガーを満足するとの判定に基づいて前記第２のコンテキストアプリケーション内で機能を呼び出すことであって、前記少なくとも１つの仮想オブジェクトとのユーザの対話が、前記第２のコンテキストアプリケーションに関連付けられた第２の組のコンテキストトリガーを満足するとの判定は、前記第２のコンテキストアプリケーションによって定義された対話ルールに基づくものである、前記呼び出すこと、を備える、システム。
【請求項２】
前記オブジェクト認識アルゴリズムを適用することは、
人工知能を使用して、前記混合現実環境内の前記少なくとも１つの現実世界のオブジェクトの識別を実行することを含む、請求項１に記載のシステム。
【請求項３】
前記第２のコンテキストアプリケーションによる前記少なくとも１つの仮想オブジェクトを提示することは、
前記ユーザと、第２の混合現実対応デバイス上で実行される前記第２のコンテキストアプリケーションに関連付けられた共有表示層との間の対応に基づく、請求項１に記載のシステム。
【請求項４】
前記ユーザの対話は、前記少なくとも１つの現実世界のオブジェクトをコントローラとして使用することを含む、請求項１に記載のシステム。
【請求項５】
前記第２のコンテキストアプリケーションを開始することは、
減損現実技術を適用して前記混合現実対応デバイス上の前記少なくとも１つの現実世界のオブジェクトの描写を変更することを含む、請求項１に記載のシステム。
【請求項６】
前記少なくとも１つの現実世界のオブジェクトをコントローラとして使用することは、
前記現実世界のオブジェクトを３次元で操作して、前記第２のコンテキストアプリケーション内のアクションを制御することを含み、
前記アクションは、前記第２のコンテキストアプリケーションのアプリケーションプログラムインタフェースを使用して定義される、請求項４に記載のシステム。
【請求項７】
前記第１の組のコンテキストトリガーは、前記識別することの時刻に関するデータ、前記混合現実対応デバイスの位置に関するデータ、および前記混合現実環境内で識別される追加の一組の現実世界のオブジェクトに関するデータのうちの少なくとも２つを含む複数の要素の組み合わせを含む、請求項１に記載のシステム。
【請求項８】
方法であって、
一組の命令を１または複数のコンピュータメモリに組み込むことであって、前記一組の命令は、ユーザの混合現実対応デバイス上の混合現実環境内で複数のコンテキストアプリケーションを実施するための複数の動作を実行させるように１つまたは複数のコンピュータプロセッサを設定する、前記組み込むこと、
前記一組の命令を実行して前記１つまたは複数のコンピュータプロセッサに前記複数の動作を実行させること、を備え、
前記複数の動作は、
前記混合現実対応デバイスのセンサによって捕捉される少なくとも１つの現実世界のオブジェクトの１つまたは複数の属性にオブジェクト認識アルゴリズムを適用することにより、前記混合現実環境内の少なくとも１つの現実世界のオブジェクトを識別すること、
前記複数のコンテキストアプリケーションの第１のコンテキストアプリケーションを使用して、第１の組のコンテキストトリガーと前記複数のコンテキストアプリケーションのうちの第２のコンテキストアプリケーションとの間の関連付けを決定することであって、前記第１のコンテキストアプリケーションはランチャーアプリケーションである、前記関連付けを決定すること、
前記第１の組のコンテキストトリガーのうちの少なくとも１つが満足されたとの判定に基づいて前記第２のコンテキストアプリケーションを開始することであって、前記第１の組のコンテキストトリガーのうちの少なくとも１つが満足されたとの判定は、前記混合現実対応デバイスのセンサによって捕捉された周囲に対応するリアルタイムデータの分析に基づくものであり、前記混合現実環境において前記第２のコンテキストアプリケーションに関連する少なくとも１つの仮想オブジェクトを提示することを含む前記第２のコンテキストアプリケーションを開始すること、
前記少なくとも１つの仮想オブジェクトとのユーザの対話が、前記第２のコンテキストアプリケーションに関連付けられた第２の組のコンテキストトリガーを満足するとの判定に基づいて前記第２のコンテキストアプリケーション内で機能を呼び出すことであって、前記少なくとも１つの仮想オブジェクトとのユーザの対話が、前記第２のコンテキストアプリケーションに関連付けられた第２の組のコンテキストトリガーを満足するとの判定は、前記第２のコンテキストアプリケーションによって定義された対話ルールに基づくものである、前記呼び出すこと、を備える、方法。
【請求項９】
前記オブジェクト認識アルゴリズムを適用することは、
人工知能を使用して、前記混合現実環境内の前記少なくとも１つの現実世界のオブジェクトの識別を実行することを含む、請求項８に記載の方法。
【請求項１０】
前記第２のコンテキストアプリケーションによる前記少なくとも１つの仮想オブジェクトを提示することは、
前記ユーザと、第２の混合現実対応デバイス上で実行される前記第２のコンテキストアプリケーションに関連付けられた共有表示層との間の対応に基づく、請求項８に記載の方法。
【請求項１１】
前記ユーザの対話は、前記少なくとも１つの現実世界のオブジェクトをコントローラとして使用することを含む、請求項８に記載の方法。
【請求項１２】
前記第２のコンテキストアプリケーションを開始することは、
減損現実技術を適用して前記混合現実対応デバイス上の前記少なくとも１つの現実世界のオブジェクトの描写を変更することを含む、請求項８に記載の方法。
【請求項１３】
前記少なくとも１つの現実世界のオブジェクトをコントローラとして使用することは、
前記現実世界のオブジェクトを３次元で操作して、前記第２のコンテキストアプリケーション内のアクションを制御することを含み、
前記アクションは、前記第２のコンテキストアプリケーションのアプリケーションプログラムインタフェースを使用して定義される、請求項１１に記載の方法。
【請求項１４】
前記第１の組のコンテキストトリガーは、前記識別することの時刻に関するデータ、前記混合現実対応デバイスの位置に関するデータ、および前記混合現実環境内で識別される追加の一組の現実世界のオブジェクトに関するデータのうちの少なくとも２つを含む複数の要素の組み合わせを含む、請求項８に記載の方法。
【請求項１５】
一組の命令を備える非一時的マシン可読媒体であって、
前記一組の命令は、ユーザの混合現実対応デバイス上の混合現実環境内で複数のコンテキストアプリケーションを実施するための複数の動作を実行させるように１つまたは複数のコンピュータプロセッサを設定し、
前記複数の動作は、
前記混合現実対応デバイスのセンサによって捕捉される少なくとも１つの現実世界のオブジェクトの１つまたは複数の属性にオブジェクト認識アルゴリズムを適用することにより、前記混合現実環境内の少なくとも１つの現実世界のオブジェクトを識別すること、
前記複数のコンテキストアプリケーションの第１のコンテキストアプリケーションを使用して、第１の組のコンテキストトリガーと前記複数のコンテキストアプリケーションのうちの第２のコンテキストアプリケーションとの間の関連付けを決定することであって、前記第１のコンテキストアプリケーションはランチャーアプリケーションである、前記関連付けを決定すること、
前記第１の組のコンテキストトリガーのうちの少なくとも１つが満足されたとの判定に基づいて前記第２のコンテキストアプリケーションを開始することであって、前記第１の組のコンテキストトリガーのうちの少なくとも１つが満足されたとの判定は、前記混合現実対応デバイスのセンサによって捕捉された周囲に対応するリアルタイムデータの分析に基づくものであり、前記混合現実環境において前記第２のコンテキストアプリケーションに関連する少なくとも１つの仮想オブジェクトを提示することを含む前記第２のコンテキストアプリケーションを開始すること、
前記少なくとも１つの仮想オブジェクトとのユーザの対話が、前記第２のコンテキストアプリケーションに関連付けられた第２の組のコンテキストトリガーを満足するとの判定に基づいて前記第２のコンテキストアプリケーション内で機能を呼び出すことであって、前記少なくとも１つの仮想オブジェクトとのユーザの対話が、前記第２のコンテキストアプリケーションに関連付けられた第２の組のコンテキストトリガーを満足するとの判定は、前記第２のコンテキストアプリケーションによって定義された対話ルールに基づくものである、前記呼び出すこと、を備える、非一時的マシン可読媒体。
【請求項１６】
前記オブジェクト認識アルゴリズムを適用することは、
人工知能を使用して、前記混合現実環境内の前記少なくとも１つの現実世界のオブジェクトの識別を実行することを含む、請求項１５に記載の非一時的マシン可読媒体。
【請求項１７】
前記第２のコンテキストアプリケーションによる前記少なくとも１つの仮想オブジェクトを提示することは、
前記ユーザと、第２の混合現実対応デバイス上で実行される前記第２のコンテキストアプリケーションに関連付けられた共有表示層との間の対応に基づく、請求項１５に記載の非一時的マシン可読媒体。
【請求項１８】
前記ユーザの対話は、前記少なくとも１つの現実世界のオブジェクトをコントローラとして使用することを含む、請求項１５に記載の非一時的マシン可読媒体。
【請求項１９】
前記第２のコンテキストアプリケーションを開始することは、
減損現実技術を適用して前記混合現実対応デバイス上の前記少なくとも１つの現実世界のオブジェクトの描写を変更することを含む、請求項１５に記載の非一時的マシン可読媒体。
【請求項２０】
前記少なくとも１つの現実世界のオブジェクトをコントローラとして使用することは、
前記現実世界のオブジェクトを３次元で操作して、前記第２のコンテキストアプリケーション内のアクションを制御することを含み、
前記アクションは、前記第２のコンテキストアプリケーションのアプリケーションプログラムインタフェースを使用して定義される、請求項１８に記載の非一時的マシン可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示される主題は、概して、コンピュータシステムの技術分野に関し、より具体的には、仮想現実環境または混合現実環境におけるコンテキストアプリケーションを実行するためのコンピュータシステムおよび方法に関する。
【背景技術】
【０００２】
仮想現実（ＶＲ）と拡張現実（ＡＲ）とその周辺の技術は急速に成長し成熟している。ＶＲおよびＡＲは、主にヘッドマウントディスプレイ（head mounted display:HMD）を装着し、任意選択でハンドトラッキングおよび入力デバイスを装着することで経験される。たとえば、ＡＲを使用すると、ＨＭＤは、装着者を取り巻く現実世界の環境と連動して仮想オブジェクトを統合するように構成され得る。いくつかの既知のＡＲシステムは、ＨＭＤを介して環境に関する情報を装着者に提供するソフトウェアツールも含む。
【図面の簡単な説明】
【０００３】
添付の図面の様々なものは、本開示の例示的な実施形態を単に示すものであり、その範囲を限定すると見なすことはできない。
本明細書で提供される見出しは単に便宜上のものであり、使用される用語の範囲または意味に必ずしも影響を与えるわけではない。図中の類似の番号は類似の構成要素を示す。
【図１】ユーザにＭＲコンテキストアプリケーション機能を提供するように構成された例示的なＭＲコンテキストアプリケーション（アプリ）システムおよび関連するデバイスの図である。
【図２】ユーザ（または「装着者」）によって装着され、ＭＲシステムのユーザデバイスとして機能するように構成された例示的なＨＭＤの図である。
【図３】ユーザがＭＲシステムにより提供されるＭＲ環境を経験するときにコンテキストアプリケーションをユーザに提供するための例示的な方法のフローチャートである。
【図４】ＭＲシステムによって評価される現実世界環境の一例を示す。
【図５】ユーザデバイスを介してＭＲシステムによりユーザに提示されるＭＲ環境を示す。
【図６】ユーザデバイスを介してＭＲシステムによりユーザに提示されるＭＲ環境を示す。
【図７】ユーザデバイスを介してＭＲシステムによりユーザに提示される現実世界環境内のＭＲシステムにより検出された調理用鍋の一例を示す。
【図８Ａ】異なるコンテキストアプリケーションを提供する２つの例示的な層を示す。
【図８Ｂ】異なるコンテキストアプリケーションを提供する２つの例示的な層を示す。
【図９】一実施形態による、ＭＲシステムによってユーザデバイスを介してユーザに提示されるシリアルボックスのゲームを示すＭＲ環境の一例を示す図である。
【図１０Ａ】一実施形態による、名刺によって制御されるコンテキストアプリケーションを示すユーザデバイスを介してＭＲシステムによってユーザに提示されるＭＲ環境の一例を示す。
【図１０Ｂ】一実施形態による、名刺によって制御されるコンテキストアプリケーションを示すユーザデバイスを介してＭＲシステムによってユーザに提示されるＭＲ環境の一例を示す。
【図１０Ｃ】一実施形態による、名刺によって制御されるコンテキストアプリケーションを示すユーザデバイスを介してＭＲシステムによってユーザに提示されるＭＲ環境の一例を示す。
【図１０Ｄ】一実施形態による、名刺によって制御されるコンテキストアプリケーションを示すユーザデバイスを介してＭＲシステムによってユーザに提示されるＭＲ環境の一例を示す。
【図１１】本明細書に記載されるＶＲツールおよび開発環境を提供するために、本明細書に記載される様々なハードウェアアーキテクチャと併せて使用され得る代表的なソフトウェアアーキテクチャを示すブロック図である。
【図１２】マシン可読媒体（例えば、マシン可読記憶媒体）から命令を読み取り、本明細書で論じるＶＲ方法の任意の１つまたは複数を実行することができる、ある例示的な実施形態によるマシンの構成要素を示すブロック図である。
【発明を実施するための形態】
【０００４】
以下の説明は、本開示の例示的な実施形態を構成するシステム、方法、技術、命令シーケンス、および計算機プログラム製品を記載する。以下の説明では、説明の目的で、本発明の主題の様々な実施形態の理解を促すために、多数の具体的な詳細が述べられている。しかしながら、本発明の主題の実施形態がこれらの具体的な詳細なしで実施されてもよいことは当業者には明らかであろう。
【０００５】
本明細書では、混合現実（mixed reality:MR）システムおよびそれに関連する方法について説明される。ＭＲシステムは、ＭＲ環境内のコンテキストアプリケーション（contextual application）を検出してユーザに提示するように構成されている。例示的な実施形態では、ユーザ（例えば、ＨＭＤの装着者、またはスマートフォン、タブレット、または他のＭＲ対応デバイスを保持している人）は、ＭＲデバイスを介してＭＲシステムによって提示されるＭＲ環境を経験する。ＭＲ環境は、ＭＲシステムによって提示される仮想コンテンツとともに、現実世界（例えば、周囲の環境）のビュー（view）を含む。ＭＲデバイスは、いくつかの実施形態では、任意選択で深さデータを含む、ユーザの周囲の現実世界のデジタルの映像または画像を取得するように構成された前方カメラを含み、ＭＲシステムは、本明細書に記載されるＭＲの特徴のいくつかを提供するために解析する。
【０００６】
動作中、ＭＲシステムは、さまざまなコンテキスト基準（contextual criteria）に基づいてコンテキストアプリケーションをトリガーする。より具体的には、一実施形態では、ＭＲシステムは、ＭＲシステムによって満足されていると認識されると、ＭＲシステムにＭＲ環境内のユーザに対するコンテキストアプリケーションの実行および提示を開始させるコンテキスト基準（本明細書では、「トリガー条件」または「コンテキストトリガー」ともいう）を識別する。
【０００７】
例えば、アプリケーショントリガーの一例は、ＭＲシステムによってユーザが台所または食料品店にいると判断したとき、および調理材料が近くで認識されたとき（例えば、ユーザが食器棚や棚の上の缶詰を見ているとき）に、レシピアプリケーションを開始するように構成され得る。言い換えれば、コンテキスト基準は、ユーザの周囲からの情報に依存する１組の基準である。このような基準は、たとえば、ユーザの位置、ユーザに対する現実世界のオブジェクトの近接度、ユーザアクションの特定の状態、絶対時間または相対時間、またはそれらの組み合わせを含む。そのため、アプリケーショントリガーのコンテキスト基準は、ユーザが自分自身を見つけるリアルタイムコンテキスト（例えば、周囲）を見る。そのような例では、缶詰上に提示される見込みのあるレシピを示すアイコンなど、特定の現実世界のオブジェクトに近接する仮想オブジェクトをＭＲシステムに提示させるように、コンテキストアプリケーションは構成され得る。そのため、ユーザは、仮想オブジェクト、つまりコンテキストアプリケーションと対話して、コンテキストアプリケーションによって識別されるレシピを確認できる。
【０００８】
様々なアプリケーショントリガーに関連し得る様々な実世界オブジェクトの存在を検出するために、いくつかの実施形態では、ＭＲシステムは、ＭＲデバイス（例えば、ＭＲデバイスからのライブデジタルビデオフィード上の画像処理）からのセンサデータを使用してオブジェクト検出を実行する。ＭＲシステムは、例えば、家具（例えば、椅子、テーブル、家具）、構造的建築構成要素（例えば、ドア、窓、屋根）、または家庭用品（例えば、食料品、電化製品）などの三次元オブジェクトを認識するように構成され得る。ＭＲシステムは、これらのサイズ、形状、テクスチャ、場所、およびオブジェクトに現れる可能性のある様々な視覚的マーキングに基づいて、オブジェクトを識別し得る。例えば、円筒形オブジェクトは、ユーザのキッチン内の位置に基づいて缶詰であると判定され、さらに缶詰のラベルの部分画像に基づいてキノコのスープの缶であると判定されてもよい。いくつかの実施形態では、訓練されたニューラルネットワークによってカメラ深度感知情報を３次元モデルにマッチングさせることが、トリガーを検出するために使用される。
【０００９】
ＭＲシステムがユーザの近くのさまざまなオブジェクトを決定すると、ＭＲシステムは、検出されたオブジェクトをさまざまなアプリケーショントリガー（たとえば、各トリガーの基準）と比較する。ＭＲシステムが、アプリケーショントリガーが（例えば、基準例の１つとして）近くのオブジェクトの１つと関連し、そうでなければ、アプリケーショントリガーのすべてのコンテキスト基準を満たすと判断すると、ＭＲシステムは、アプリケーショントリガーによって識別されるコンテキストアプリケーションを開始する。さらに、いくつかの実施形態では、アプリケーショントリガーは、トリガーされたアプリケーションにおいてさまざまなアクションを開始するように構成されてもよい。例えば、上記の例示的なアプリケーショントリガーは、検出された調理材料の１つまたは複数が使用されるレシピを提示するレシピアプリケーションを開始するように構成されてもよい。そのため、ＭＲシステムは、ＭＲ環境においてアプリケーションのコンテキストベースのトリガーを提示する。
【００１０】
例示的な実施形態では、ユーザのＭＲ対応デバイス上の混合現実（ＭＲ）環境において複数のコンテキストアプリケーションを実装する方法が開示される。少なくとも１つの現実世界のオブジェクトは、ＭＲ対応デバイスのセンサによって取得された少なくとも１つの現実世界のオブジェクトの１つ以上の属性にオブジェクト認識アルゴリズムを適用することにより、ＭＲ環境で識別される。複数のコンテキストアプリケーションの第１のコンテキストアプリケーションは、第１の組のコンテキストトリガーと、複数のコンテキストアプリケーションのうちの第２のコンテキストアプリケーションとの間の関連付けを決定するために使用される。第２のコンテキストアプリケーションは、少なくとも１つのコンテキストトリガーが満たされたことに基づいて開始される。機能は、第２のコンテキストアプリケーションに関連付けられた第２の組のコンテキストトリガーを満たす少なくとも１つの仮想オブジェクトとのユーザの対話に基づいて、第２のコンテキストアプリケーションにおいて呼び出される。
【００１１】
以下の説明では、「モジュール」という用語は、ソフトウェア、ハードウェア、またはファームウェア（またはそれらの任意の組み合わせ）コンポーネントを広く指す。モジュールは典型的には、指定された入力を使用して有用なデータまたはその他の出力を生成できる機能コンポーネントである。モジュールは自己完結型である場合とそうでない場合がある。アプリケーションプログラム（「アプリケーション」とも呼ばれる）は、１つ以上のモジュールを含むか、または、モジュールは、１つ以上のアプリケーションプログラムを含み得る。例示的な実施形態では、本明細書に記載される様々なモジュールのそれぞれは、単に一般的なコンピューティングコンポーネントではなく、その代わりに、本明細書に記載されている一つ以上の特殊化された機能または動作（または機能や動作の組み合わせ）を実施する（例えば、特化されたプログラミングロジック）コンポーネントである。
【００１２】
図１は、ユーザ１０２にＭＲコンテキストアプリケーション機能を提供するように構成された例示的なＭＲコンテキストアプリケーション（アプリ）システム１００および関連するデバイスの図である。例示的な実施形態では、ＭＲコンテキストアプリシステム１００は、ユーザ１０２によって操作されるユーザデバイス１０４と、ネットワーク１５０（例えば、セルラーネットワーク、Ｗｉ−Ｆｉネットワーク、インターネットなど）を介してユーザデバイス１０４とネットワーク通信するように結合されたサーバ１３０とを含む。ユーザデバイス１０４は、混合現実経験をユーザ１０２に提供できるコンピューティングデバイスである。いくつかの実施形態では、ユーザデバイス１０４は、（例えば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）、ＨＴＣ  Ｖｉｖｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  ＨｏｌｏＬｅｎｓ（登録商標）などの）拡張現実（ＡＲ）または仮想現実（ＶＲ）バイザー（ｖｉｓｏｒ）など、ユーザ１０２によって装着される頭部装着型ディスプレイ（head-mounted display:HMD）デバイスである。他の実施形態では、ユーザデバイス１０４は、スマートフォンまたはタブレットコンピュータなどのモバイルコンピューティングデバイスである。
【００１３】
例示的な実施形態では、ユーザデバイス１０４は、１つまたは複数の中央処理部（ＣＰＵ）１０６、グラフィック処理装置（ＧＰＵ）１０８、およびホログラフィック処理装置（holographic processing units:HPU）１１０を含む。また、ユーザデバイス１０４は、ネットワーク１５０を介して通信するための１つまたは複数のネットワークデバイス１１２（たとえば、有線または無線ネットワークアダプタ）を含む。ユーザデバイス１０４はさらに、動作中にユーザ１０２の近くの現実世界のデジタルの映像を取得するように構成され得る１つ以上のカメラデバイス１１４を含む。ユーザデバイス１０４はまた、（例えば、ユーザデバイス１０４のＧＰＳの場所を判定するための）全地球測位システム（ＧＰＳ）受信機、（例えば、ユーザ１０２の生体認証データを捕捉するための）生体認証センサ、（例えば、ユーザ１０２もしくは他のオブジェクトの位置データを捕捉するための）運動もしくは位置センサ、または（例えば、音声データを捕捉するための）音声マイクなど、１つ以上のセンサ１１６を含み得る。いくつかのセンサ１１６は、（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）、Ｖｉｖｅ  Ｔｒａｃｋｅｒ（商標）、ＭＩＴのＬｉｄａｒセンサ、またはＭＩＴの無線感情検出器で使用されるものなどの）ユーザデバイス１０４の外部にあり、ユーザデバイス１０４と無線通信するように構成され得る。
【００１４】
ユーザデバイス１０４はまた、例えば、キーボードまたはキーパッド、マウス、ポインティングデバイス、タッチスクリーン、またはハンドヘルドデバイス（例えば、ハンドモーショントラッキングデバイス（hand motion tracking device））などの１つ以上の入力デバイス１１８を含む。ユーザデバイス１０４はさらに、タブレットまたはスマートフォンのタッチスクリーン、ＶＲまたはＡＲ  ＨＭＤのレンズまたはバイザーなどの一つ以上のディスプレイデバイス１２０を含み、これらは現実世界のビューに関連して仮想オブジェクトをユーザ１０２に表示するように構成され得る。
【００１５】
また、ユーザデバイス１０４は、クライアントＭＲコンテキストアプリモジュール（「クライアントモジュール」）１２４を格納するように構成されたメモリ１２２を含む。さらに、サーバ１３０は、サーバＭＲコンテキストアプリモジュール（「サーバモジュール」）１３４を格納するメモリ１３２を含む。動作中、クライアントＭＲコンテキストアプリモジュール１２４およびサーバＭＲコンテキストアプリモジュール１３４は、本明細書で説明される様々なコンテキストアプリ機能を実行する。より具体的には、いくつかの実施形態では、いくつかの機能がクライアントモジュール１２４内に実装され、他の機能がサーバモジュール１３４内に実装され得る。
【００１６】
例えば、ユーザデバイス１０４（例えば、ＨＭＤ）上で実行されるクライアントモジュール１２４は、カメラデバイス１１４またはセンサ１１６からデータを取得して、アプリケーショントリガーに関連するトリガー条件を満足したことを検出するように構成され得る。他の実施形態では、サーバモジュール１３４は、取得されたデータを処理して、トリガー条件を満足していることを検出し得る。例示的な実施形態では、カメラデバイス１１４およびセンサ１１６は、映像、音声、深度情報、ＧＰＳ位置などの周囲の環境からデータを取得する。クライアントモジュール１２４は、センサデータを直接分析するか、または処理されたセンサデータ（例えば、検出および識別されたオブジェクト、オブジェクト形状データ、深度マップなどのリアルタイムリスト）を分析するように構成され得る。クライアントモジュール１２４は、例えば、ユーザデバイス１０４の近くのオブジェクト、位置、シンボル、ロゴ、画像、音、または基準マーカーを含む特定の物理的オブジェクトまたは表面の識別子の存在を含む、データ内の特定のトリガー条件を検索し得る。
【００１７】
例示的な実施形態では、各アプリケーショントリガー構成は、１つまたは複数のトリガー条件、アプリケーションがユーザと対話する方法のためのアプリケーションロジックまたは対話メカニズム、および、例えば、ＭＲエクスペリエンスを提供するためにユーザに表示される２Ｄ／３Ｄビジュアルおよび音声を含むアセットバンドル（asset bundle）を含む。アプリケーショントリガー構成は、クライアントモジュール１２４内、またはサーバ１３０またはデータベース１４０内に格納されてもよい。いくつかの実施形態では、トリガー条件は、時間制限（例えば、特定の時刻または過去の出来事からの相対的な時間）、位置または位置制限（例えば、ユーザ装置１０４が、特定の位置内にあるか、または特定タイプのオブジェクトの特定の距離内にあるか、または別のオブジェクトまたは音の特定の距離内にある特定のオブジェクトを検出する）、またはそれらの様々な組み合わせを含み得る。
【００１８】
トリガー条件を検出すると、ＭＲシステム１００は、関連するアプリケーショントリガーによって識別されたコンテキストアプリケーションを開始する。たとえば、コーヒーマシンでシリアル番号を検出すると、コーヒーアプリが起動したり、またはテーブルでマーカーを検出すると、コンピューターゲームが起動する。いくつかの実施形態では、ＭＲシステム１００は、コンテキストアプリケーションおよび関連データを格納するように構成され得るアプリデータベース１４０も含み得る。そのようなコンテキストアプリケーションの実行は、（たとえば、ユーザ１０２の視野内の関連する現実世界のオブジェクトに関連して）仮想オブジェクトを作成してユーザ１０２に表示することを含み得る。これらの仮想オブジェクトは、コンテキストアプリケーションに関連付けられ、仮想オブジェクトとのユーザの対話により、以下でさらに詳しく説明するように、関連付けられたコンテキストアプリケーションによるさらなるアクションを発生させる。
【００１９】
図２は、ユーザ（または「装着者」）２１０によって装着され、ＭＲシステム１００のユーザデバイス１０４として機能するように構成された例示的なＨＭＤ２２０の図である。いくつかの実施形態では、ＨＭＤ２２０は、ユーザデバイス１０４に類似しており、図２ではすべてが別個に識別されているわけではないが、ユーザデバイス１０４のコンポーネントのいずれかまたはすべてを含み得る。この例示的な実施形態では、ＨＭＤデバイス２２０は、透明または半透明のバイザー（「レンズ」または「複数のレンズ」）２２２を含み、このバイザーを通して装着者２１０は周囲（また、本明細書では「現実世界」とも呼ばれる）を見る。他の実施形態では、ＨＭＤデバイス２２０は、装着者２１０の現実世界の視界を覆い隠し得る不透明なバイザー２２２を含み得るが、デジタルカメラデバイス２３０からの入力を介して装着者２１０の周囲のビューを提示し得る。
【００２０】
例示的な実施形態では、ＨＭＤ２２０はまた、バイザー２２２上にグラフィックス（例えば、仮想オブジェクト）をレンダリングするディスプレイデバイス２２８を含む。そのようなものとして、バイザー２２２は、ディスプレイデバイス２２８の出力が現れる「スクリーン」または表面として働き、それを通して装着者２１０は仮想コンテンツを経験する。ディスプレイデバイス２２８は、１つまたは複数のＧＰＵ２２６またはＨＰＵによって駆動または制御される。ＧＰＵ２２６は、ディスプレイデバイス２２８を通じた出力のレンダリングの高速化を支援するグラフィカル出力のアスペクト（aspect）を処理する。いくつかの実施形態では、バイザー２２２およびディスプレイプロセッサ２２８は、ディスプレイデバイス１２０およびＧＰＵ１０８またはＨＰＵ１１０と同様であってもよい。
【００２１】
例示的な実施形態では、ＨＭＤデバイス２２０は、本明細書で説明する動作および方法のいくつかを実行する（例えば、クライアントモジュール１２４を実行する）中央プロセッサ２２４も含む。ＨＭＤデバイス２２０はまた、（例えば、耳２１６を介して）装着者２１０に音声出力を提示するように構成されたオーディオデバイス２５０を含む。別個に示されていないが、ＨＭＤデバイス２２０は、ネットワークデバイス１１２と同様のネットワークデバイスも含み、動作中にサーバ１３０またはアプリデータベース１４０と通信してもよい。
【００２２】
いくつかの実施形態では、ＨＭＤデバイス２２０は、デジタルカメラデバイス２３０を含む。デジタルカメラデバイス（または単に「カメラ」）２３０は、装着者２１０の視野（field of view:FOV）の少なくとも一部をカバーするように配向された正面映像入力デバイスである。言い換えれば、カメラ２３０は、ＨＭＤデバイス２２０の向きに基づいて（例えば、バイザー２２２を通して見るときに装着者２１０が装着者２１０のＦＯＶで見るものに類似する）現実世界の視野角を撮像するかまたは見る（see）。カメラデバイス２３０からのデジタル映像が分析されて、装着者２１０の近くのオブジェクトのタイプを検出するか、またはそれらのオブジェクトまでの距離を決定するなど、様々なトリガー条件を検出し得る。いくつかの実施形態では、デジタルカメラデバイス２３０からの出力は、（例えば、不透明なバイザーの実施形態において）バイザー２２２に投影され、（例えば、カメラ出力に追加される）追加の仮想コンテンツも含み得る。
【００２３】
いくつかの実施形態では、ＨＭＤデバイス２２０は、（図２に別々に示されていない）一つ以上のセンサ１１６を含んでもよく、またはセンサ１１２との有線または無線通信（例えば、装着者２１０が装着される手首装着型デバイスとの近距離通信（near-field communication:NFC））で結合されてもよい。例えば、ＨＭＤ２２０は、ＨＭＤ２２０の位置または向きを決定するように構成された運動または位置センサを含み得る。
【００２４】
動作中、図２に示すように、ＨＭＤ２２０は、装着者２１０の両目２１４を覆って取り付けられる。ＨＭＤ２２０が映像およびセンサデータを取得および分析すると、クライアントモジュール１２４は、様々なアプリケーショントリガーに関連するトリガー条件を検出する。特定のアプリケーショントリガーのトリガー条件が満足されると、ＨＭＤ２２０は、関連するコンテキストアプリケーションを実行する。いくつかのコンテキストアプリケーションは、ＨＭＤ２２０に追加の仮想コンテンツ（例えば、仮想オブジェクト）を装着者２１０に表示させ、装着者２１０がそれらの仮想オブジェクトと対話することを可能にし得る。そのような対話は、仮想オブジェクトに関連付けられた追加の機能処理のためにコンテキストアプリケーションをさらに関与させることができる。そのようなものとして、ＨＭＤ２２０は、装着者２１０が混合現実環境を経験する場合、装着者２１０にコンテキストアプリケーション機能を提供する。
【００２５】
いくつかの実施形態では、ＨＭＤ２２０は、完全没入型のＶＲ環境を提供してもよい。そのようなものとして、ＭＲシステム１００は、コンテキスト基準が満足されたときに仮想環境内でユーザ２１０にコンテキストアプリケーションを提示させるアプリケーショントリガーを起動することができる仮想オブジェクトを検出する。例えば、ユーザ２１０は、道路（street）ならびに一連の店およびレストランを含む仮想環境を経験している場合がある。ユーザ２１０は、仮想ピザハット（登録商標）レストランを通過し、それにより、クライアントモジュール１２４は、仮想レストランの存在を検出し、実際のピザハットの会社に関連するコンテキストアプリケーションをダウンロードし、ユーザ２１０にアプリを提供することができる。それにより、ユーザ２１０は、仮想環境内に提示されたコンテキストアプリケーションを通じて、本物のレストランから本物のピザを注文することができる。
【００２６】
一実施形態では、クライアントモジュール１２４は、継続的に実行され、サーバ１３０と通信し、例えば、ＧＰＳ座標、時刻、環境内の認識されたオブジェクト、認識された基準マーカー（例：イメージ）、または生の映像などのコンテキストデータを送信する。サーバ１３０は、例えば、クライアントモジュール１２４が物理オブジェクトによってトリガーされるＭＲアプリを含まない特定の地理的エリアの３Ｄオブジェクト検出を無効するなど、クライアントモジュール１２４の性能を最適化するためのルールを含み得る。クライアントモジュール１２４は、コンテキストアプリランチャー（contextual app launcher）およびスケジューラとして動作することができ、したがって、本明細書では「ＭＲオペレーティングシステム」と呼称され得る。クライアントモジュール１２４は、コンテキストアプリの圧縮パッケージを（例えば、サーバ１３０から）ストリーミングし、アプリをローカルで解凍および実行し得る。クライアントモジュール１２４は、アプリのルール（たとえば、対話およびレンダリングルールを規定するスクリプト）を実行し、それに応じてオーディオおよびビジュアルアセットをレンダリングする。ビジュアルアセットは、たとえば、ユーザが潜在的に対話できる仮想オブジェクトになる人工的な（synthetic）３Ｄモデルまたは２Ｄ画像である。オーディオアセットは、空間化された３Ｄサウンドエフェクトまたは音楽、またはモノラルサウンドである。アプリケーション対話ルールの一部として、触覚応答も開始されてもよい。
【００２７】
いくつかの実施形態では、クライアントモジュール１２４は、同時に２つ以上のコンテキストアプリを実行し得る。たとえば、コーヒーマグカップがユーザの視界にあり、午後６時であると仮定する。それにより、特定のアプリは、マグカップによってトリガーされ（たとえば、マグカップの周囲に３Ｄのアニメートされた複数のパーティクル、およびマグカップの中に飛び込むイルカやマグカップの外に飛び出すイルカを表示する）、別のアプリは、現在の時間によってトリガーされる（例えば、ローカルニュースを再生する仮想テレビ画面を表示する）。クライアントモジュール１２４は、複数のアプリをスケジューリングし、起動し、停止し、該当する場合はそれらを同時に実行する。
【００２８】
対話ルールは、アプリが複数のユーザアクションに応答する方法を定義する。複数のユーザアクションは、例えば、音声コマンド、物理的ジェスチャ（腕または体の動き、視線の動き、まばたきなど）、入力デバイス１１８との対話（例えば、コントローラ、３Ｄマウスなど）、または対話式ディスプレイデバイス１２０上のアクションであってもよい。複数のユーザアクションに対する応答は、たとえば、レンダリングされたビジュアル（例えば、２Ｄ／３Ｄオブジェクト）、音声、または触覚フィードバックの変更である。
【００２９】
図３は、ユーザ１０２がＭＲシステム１００によって提供されるＭＲ環境を経験するときにコンテキストアプリケーションをユーザ１０２に提供するための例示的な方法３００のフローチャートである。例示的な実施形態では、ユーザ１０２は、現実世界環境を移動する（例えば、部屋の中を歩き回ったり、道路を歩いたりする）ときに図２に示されるＨＭＤ２２０を装着する。ユーザ１０２が現実世界環境を経験すると、ＨＭＤ２２０上の様々なセンサ１１６（例えば、カメラデバイス２３０）は、その環境の入力データを取得する（動作３１０を参照）。動作３２０で、クライアントモジュール１２４は、入力データを分析して、アプリケーショントリガーのトリガー条件３０２を検出する（動作３２０を参照）。トリガー条件３０２は、特定のアプリケーショントリガーを監視する前に、トリガーおよびアプリデータベース１４０に格納され、そこから検索されてもよい。
【００３０】
いくつかの実施形態では、１つ以上のトリガー条件３０２は、環境内の特定のタイプの現実世界のオブジェクトの検出を含み得る。例えば、クライアントモジュール１２４は、カメラビデオを分析して、椅子またはボックス（box）などの３次元（３Ｄ）オブジェクトを検出し得る。したがって、動作３１０は、現実世界環境内の３Ｄオブジェクトを識別して、そのようなトリガー条件３０２を検出することを含み得る。動作３１０は、人工知能オブジェクト認識アルゴリズムを使用して、ユーザの環境内の複数のオブジェクトを識別することを含むことができる。これらのオブジェクト（例えば、オブジェクト上に表示されるロゴや情報、ユーザ１０２からの距離）に関する３Ｄオブジェクトおよび他の情報が識別されると、これらの３Ｄオブジェクトのオブジェクト情報がトリガー条件３０２と比較され、特定のアプリケーショントリガーに対するすべてのトリガー条件が満たされるかどうかが検出される。
【００３１】
いくつかの実施形態では、アプリケーショントリガーのトリガー条件３０２は、（例えば、先験的に（a priori））ＨＭＤ２２０に事前ロードされてもよく、クライアントモジュール１２４は、それらの特定のトリガー条件を検出するように構成されてもよい（例えば、動作３２０で）。他の実施形態では、アプリケーショントリガーの特定のトリガー条件を事前にロードすることなくさまざまな現在の状態が検出され、ＭＲシステム１００は、（例えば、帰納的に（a posteriori））現在の条件がアプリケーショントリガーに関連する１組のトリガー条件に一致し、満たすと判定し得る。
【００３２】
クライアントモジュール１２４が、特定のアプリケーショントリガーのトリガー条件３０２が満たされたことを検出すると、クライアントモジュール１２４は、アプリケーショントリガーのアプリデータをダウンロードし（動作３３０を参照）、そのアプリケーショントリガーに関連付けられたコンテキストアプリケーションの実行を開始する（動作３４０を参照）。たとえば、コンテキストアプリケーションは、特定の現実世界のオブジェクトに関連して表示されるビジュアルまたはサウンドを識別し得る。いくつかの実施形態では、動作３４０でコンテキストアプリケーションを実行することは、（例えば、図５〜図１０Ｄに示すように）アプリに関連付けられた１つ以上の仮想オブジェクトを作成し、それらの仮想オブジェクトをＭＲ環境内のユーザ１０２に提示することを含み得る。そのような仮想オブジェクトは、（たとえば、トリガー条件で識別されたオブジェクトの１つの上または近くで）特定の現実世界のオブジェクトに関連して表示されてもよい。これらの仮想オブジェクトは、様々な対話動作で（例えば、アプリデータ３０４に基づいて）構成され、ユーザ１０２は、それを介して、アプリによって提供される機能をさらに起動し得る。
【００３３】
動作３５０で、クライアントモジュール１２４は、アプリの実行中にトリガー条件を検出し続ける。いくつかの実施形態では、アクティブなアプリケーショントリガーとは独立して、またはアクティブなトリガーに関連する追加の（例えば、ネストされた（nested））アプリケーショントリガーとして、追加のアプリケーショントリガーが、ロードおよび／または検出され得る。たとえば、第１のトリガーがアクティブ化される（たとえば、第１の仮想オブジェクトが作成および表示される）と、その親アプリケーショントリガーは、第２の子アプリケーショントリガーの監視を開始し得る。つまり、子アプリケーショントリガーは、親アプリケーショントリガーがアクティブになった後にのみ、監視および検出されるように構成され得る。
【００３４】
動作３６０で、クライアントモジュール１２４は、既存または変化するトリガー条件に基づいて、アプリの実行を調整し得る。たとえば、「Ｃａｒｔｅ  Ｂｌａｎｃｈｅアプリ」は、プライベートリアリティ層でアクティブであり、ユーザ１００の家、および家の延長部分またはおそらくリビングルームのみを含む容積の範囲内のＧＰＳ座標というトリガー条件を含み得る。複数の対話アクションは、（１）スタートアップ時に、テーブルの表面にカードのデッキをレンダリングすること、（２）スタートアップ時に、複数の他のユーザ１００が参加することを許可し、その後、近くのユーザ１００にセッションに参加するように通知をトリガーすること、（３）任意のユーザ１００が任意のカードをタップした（たとえば、テーブルに物理的に触れるか、またはカードが空中に浮いている場合、仮想カードが表示されている場所を指で検出した）ときに、カードを裏返しにするアニメーションを設定すること、（４）任意のユーザがカードを拾う（例えば、カードが表示されている場所に手で拾うジェスチャを実行する）とき、カードを動かし始めて、ユーザ１００の手に追従させること、（５）任意のユーザがカードを落とすとき、仮想３Ｄオブジェクトをレンダリングしてサウンドを再生すること、を含み得る。
【００３５】
図４は、ＭＲシステム１００によって評価され得る現実世界環境４００の一例を示す。例示的な実施形態では、現実世界環境４００は、キッチンキャビネット４１０を含む。キッチンキャビネットの内部には、シリアルボックス４１２と２つの缶のスープ４１４Ａ、４１４Ｂがある。ここに示す例では、図４は、キッチンキャビネット４１０の正面図を示す。動作において、ユーザ１０２は、ユーザデバイス１０４を動作させながら、示されているようにキッチンキャビネット４１０およびその内容物を見ることができる。いくつかの実施形態では、ユーザ１０２は、ＨＭＤ２２０を装着していてもよい。他の実施形態では、ユーザ１０２は、スマートフォンまたはタブレットを保持していてもよい。したがって、図５および図６にさらに示されるように、ユーザデバイス１０４は、キャビネット４１０のデジタルビデオおよびカメラデバイス１１４を介したコンテンツなどの現実世界環境４００からセンサデータを収集する。
【００３６】
図５および図６は、ユーザデバイス１０４を介してＭＲシステム１００によってユーザ１０２に提示されるようなＭＲ環境５００を示す。例示的な実施形態では、ユーザ１０２は、現実世界環境４００を見ながら、ＨＭＤ２２０を装着する。さらに、図５および図６に示すように、ＭＲシステム１００（たとえば、クライアントモジュール１２４）は、ＭＲ環境５００内の様々な仮想オブジェクトを提示する。したがって、ＭＲ環境５００は、現実世界の環境４００のビューと様々な仮想オブジェクトとの両方を含むことを理解されたい。
【００３７】
第１の時点で、図５に示すように、ＭＲ環境５００は、いくつかのレシピインジケータオブジェクト５１０Ａ、５１０Ｂ、５１０Ｃ（集合的に、複数のオブジェクト５１０）を含む。例示的な実施形態では、複数のオブジェクト５１０は、ＨＭＤ２２０によって提示される複数の仮想オブジェクトであり、それらが関係する特定の現実世界のオブジェクト（例えば、シリアルボックス４１２およびスープの缶４１４）上に位置する「星」として現れる。
【００３８】
動作中、オブジェクト５１０を表示する前に、クライアントモジュール１２４は、ＨＭＤ２２０から入力データ（例えば、カメラ２３０からのデジタル映像）をリアルタイムで取得し、（例えば、３Ｄオブジェクト検出技術を使用して）三つの現実世界のオブジェクト４１２、４１４Ａ、４１４Ｂの存在を検出する。さらに、クライアントモジュール１２４は、（例えば、円柱としてのオブジェクトの形状、およびスープ４１４Ａの缶に現れるラベルの分析に基づいて）スープ４１４Ａの２つの缶のうちの１つがキノコスープの缶であることも決定する。クライアントモジュール１２４は、トリガーおよびアプリデータベースを検索し、このタイプのオブジェクト（例えば、缶詰、マッシュルームスープの缶、調理材料）が特定のコンテキストアプリケーション（例えば、レシピアプリケーション）に関連付けられていることを決定する。さらに、クライアントモジュール１２４は、コンテキストアプリケーションを実行して、この特定の調理材料がレシピに関連付けられているかどうか、およびそのようなレシピがいくつあるか（例えば、調理材料の種類に基づいて、マッシュルームスープを含むレシピ）を決定することができる。
【００３９】
図５に示す例では、コンテキストアプリケーションは、スープ４１４Ａの缶を含む３つのレシピを識別する。したがって、クライアントモジュール１２４は、仮想オブジェクト５１０Ｂ（例えば、アプリが見つけた３つのレシピを表す「３枚のカード」というテキストを含む星形オブジェクト）を生成し、関連付けられた現実世界のオブジェクト（例えば、スープ４１４Ａの缶）の位置にその仮想オブジェクト５１０Ｂを表示する。
【００４０】
同様に、ＭＲシステム１００は、シリアルボックス４１２およびスープの他の缶４１４Ｂに関連付けられたレシピの数を判定し、それらの現実世界のオブジェクト４１２、４１４Ｂのための仮想オブジェクト５１０Ａ、５１０Ｃを生成し、それらの仮想オブジェクト５１０Ａ、５１０Ｃを、関連付けられた現実世界のオブジェクトの複数の位置にそれぞれ表示する。この例では、コンテキストアプリは、シリアルボックス４１２に関連付けられた１つのレシピと、スープの他の缶４１４Ｂに関連付けられた２つのレシピを識別する。
【００４１】
例示的な実施形態では、複数の仮想オブジェクト５１０の各々は、１つまたは複数の事前定義された対話アクションを含む。各対話アクションは、ユーザアクション（例えば、手のジェスチャ、注視フォーカス）を識別し、ユーザが実行すると、相互のアプリケーション応答（例えば、ビジュアルレンダリング、オーディオ再生、触覚フィードバック）を生じさせる。この例では、各レシピオブジェクト５１０は、仮想オブジェクト５１０がユーザ１０２の手５０２によってタッチされたときに、関連するレシピを表示するためにコンテキストアプリと連動する「タッチ（touch）」対話アクションを含む。いくつかの実施形態では、複数の仮想オブジェクト５１０は、（例えば、現実世界のオブジェクト上に重ねられる）３Ｄ座標空間内の静的な位置に配置されて、ユーザ１００は、仮想オブジェクト５１０に関連する任意のタッチジェスチャをアクティブにするために、そのオブジェクト自体にタッチするかまたはほぼ物理的にタッチしなければならない。いくつかの実施形態では、複数の仮想オブジェクト５１０は、ユーザ１００と、関連する現実世界のオブジェクトとの間に配置され、現実世界のオブジェクトの視線において、仮想オブジェクト５１０は、ユーザ１００の視点から物理オブジェクトに「接触（on）」しているように見え、複数の仮想オブジェクト５１０がユーザ１００の腕の届くところでは、ユーザ１００は、現実世界のオブジェクトの腕の届くところにいなくても仮想オブジェクト５１０と対話できる。このため、ユーザ１００が移動すると、仮想オブジェクト５１０を再配置して、ユーザ１００が見る現実世界のオブジェクトと一直線上に仮想オブジェクト５１０を維持してもよい。
【００４２】
例示的な実施形態では、ユーザ１０２は、スープの缶４１４Ａに関連付けられた仮想オブジェクト５１０Ｂにタッチして、マッシュルームスープに関連付けられた複数のレシピの表示をアクティブ化する。図６は、ＭＲ環境５００内でのこのタッチ動作に対する相互応答を示す。例示的な実施形態では、タッチ動作に応答して、ＭＲシステム１００は、３つのレシピカードオブジェクト６１０Ａ、６１０Ｂ、６１０Ｃ（まとめて、複数のレシピカード６１０）を表示し、各レシピのレシピカードオブジェクト６１０Ａ、６１０Ｂ、６１０Ｃは、コンテキストアプリケーションによって識別される。各レシピカード６１０は仮想オブジェクトであり、関連する現実世界のオブジェクト（例えば、スープの缶４１４Ａ）または親仮想オブジェクト（例えば、レシピインジケータオブジェクト５１０Ｂ）の上または近くに表示され得る。いくつかの実施形態では、レシピカードオブジェクト６１０は、ユーザ１０２がレシピに関する重要な情報を迅速に見ることができるように、レシピのタイトル、調理時間、または必要な他の主要な材料など、基本的なレシピに関する要約情報を識別してもよい。
【００４３】
レシピインジケータオブジェクト５１０と同様に、複数のレシピカードオブジェクト６１０のそれぞれは、（たとえば、コンテキストアプリケーションの機能に対応する）１つまたは複数の対話アクションおよび関連する相互応答を含み得る。レシピカードオブジェクト６１０上で実行された対話アクションに対する相互応答の複数の例は、関連したレシピに関する詳細なレシピ情報（例えば、材料のリスト、調理方法、提供される人数、調理時間、必要な調理器具、皿など）を表示すること、（例えば、現在の在庫に基づいて、又は、近くにあると特定された他の材料に基づいて）材料のリストと、存在する材料のリストとを比較して不足している材料を判定すること、又は段階的な調理指示を開始すること、を含む。例示的な実施形態では、ユーザ１０２はレシピカード６１０Ｃを選択し、コンテキストアプリケーションは、ＭＲシステム１００およびＭＲ環境５００を介して段階的な調理指示をユーザ１０２に提供する。別の実施形態によれば、レシピカードオブジェクト６１０は、オブジェクト自体の仮想コピーとして（例えば、異なるレシピをそれぞれ示す複数のスープ缶として）現れてもよく、事前定義された対話アクションは、複数のオブジェクト６１０から選択するため、ユーザが物理的な缶を利用すること（例えば、缶を移動させること）を含む。この例では、各レシピオブジェクト６１０は、缶の物理的オブジェクトが複数の仮想オブジェクト６１０のうちの１つと同じ位置及び向きに配置されたときに、関連するレシピを表示するためにコンテキストアプリと連動する「タッチ」対話アクションを含む。缶の物理的オブジェクトは、コントローラとして使用され、具体的にはこの場合、セレクタとして使用される。
【００４４】
この段階的な調理指示の例では、ＭＲシステム１００は、（例えば、ＧＰＳ位置、部屋の視覚的画像認識、またはストーブ、冷蔵庫などの現実世界のオブジェクト検出に基づいて）ユーザ１０２が自宅の台所にいると判定する。さらに、ＭＲシステム１００は、レシピによって特定される他の調理材料、器具、皿、鍋、平鍋、または調理器具など、レシピに関連する近くの現実世界のオブジェクトを同様に検出することができる。コンテキストアプリケーションは、このようなオブジェクトに関連付けられている追加のアプリケーショントリガーを識別してアクティブにすることができる。
【００４５】
いくつかの実施形態では、コンテキストアプリケーションは、経時的に達成するための一組のステップまたは目標を含み得る。たとえば、コンテキストアプリケーションは３つの層を有し、第１の層は、複数のプロセスを開始する複数のトリガー条件を含み、第２の層は、（例えば、ネストされた複数のコンテキストアプリケーションを用いて）経時的に達成する複数の目標を含み、第３の層は、完了（例えば、親コンテキストアプリケーションを終了するための一組の完了基準）を識別する。
【００４６】
いくつかの実施形態では、ユーザを取り囲む位置の画像ベースの照合が、トリガーを検出するために使用される。実施形態では、その位置に物理的に存在する会社（例えば、レンガとモルタルの建物または店）などのエンティティは、画像マッチングで使用される位置の画像を作成する。エンティティによって作成された画像（または画像から抽出された任意の画像照合情報）は、トリガー条件を検出するプロセス３２０において画像照合で使用する複数のトリガー条件３０２の一部としてサーバに保存できる。画像は、建物または店舗の外観画像、建物または店舗の内部からの画像、店舗内の製品の画像を含み得る。動作において、ユーザがその位置でＭＲデバイス１０４を移動させると、デバイスからの映像データ（例えば、映像の複数のフレーム）が、エンティティによって作成された複数の画像と比較され、比較は、（例えば、トリガーの一部として）マッチングするものを見つけて、１つ以上のコンテキストアプリケーションの実行を開始するために、画像照合技術を用いる。一実施形態によれば、複数の検出トリガー条件３２０は、画像認識／照合のための人工知能を使用して画像照合プロセスを完了する人工知能エージェントを含む。例示的な実施形態では、人工知能は、（例えば、３次元オブジェクトに関連付けられた１つ以上の属性に基づいて）３次元の現実世界の環境で３次元オブジェクトを識別する機械学習技術の適用を含む。例示的な実施形態では、機械学習技術に組み込まれる１つ以上の属性は、サイズ、形状、色、テクスチャ、位置、向き、（例えば、現実世界の環境における他の仮想オブジェクトに関連する）コンテキスト、位置（例えば、ＧＰＳまたは他の位置情報）、寸法（高さ、幅、奥行きなど）などを含み得る。
【００４７】
いくつかの実施形態では、トリガーにリンクされたコンテキストアプリケーションは、そのトリガーに関連付けられた広告またはゲームを起動するように構成され得る。この実施形態では、アプリケーションデータ３０４は、広告データまたはゲームデータを含み得る。例として、スターバックス社などの会社を検討し、さらに、第１の場所にある特定の第１のコーヒーショップと、第２の場所にある第２のコーヒーショップを検討する。個人（例えば、従業員または請負業者）は、第１のコーヒーショップ（例えば、屋内、屋外、製品のショット（shot））の写真と、第２のコーヒーショップの写真を撮影し、トリガー条件３０２の一部として写真を含む。動作において、ユーザは、第１のコーヒーショップの外装に近づき、ユーザデバイス１０４は、第１のコーヒーショップの外装の映像データを収集する。トリガー条件を検出するための動作３２０の間、映像データは、（例えば、トリガー条件３０２で）第１のコーヒーショップの写真と比較され、トリガーが発見された場合、第１のコーヒーショップのコンテキストアプリケーション（例えば、広告）がデバイス１０４上で実行され、たとえば、ユーザにポイントを提供したり、第１のコーヒーショップに入ったユーザに割引を提供したりすることが考えられる。さらに、ユーザが第１のコーヒーショップに入った場合、ユーザデバイス１０４は、第１のコーヒーショップの内部の映像データを収集して、ユーザが入ってコンテキストアプリケーションの要件（例えば、コーヒーショップに入るという条件）を満たしたことを確認する。第１のコーヒーショップ内に入ると、コンテキストアプリは、ユーザデバイス１０４からのデータを監視し続けて、内部の映像データに基づいてさらなるトリガーを検出し、さらに追加のポイントまたは店舗内の商品の割引をユーザに提供する。エンティティのすべての位置に対して単一のコンテキストアプリケーションが存在し、たとえば、第１のコーヒーショップのコンテキストアプリケーションと、第２のコーヒーショップのコンテキストアプリケーションは同じにすることができる。エンティティの個々の位置ごとに１つのコンテキストアプリケーションが存在し、たとえば、第１のコーヒーショップのコンテキストアプリケーションは、第２のコーヒーショップのコンテキストアプリケーションとは異なる場合がある。
【００４８】
いくつかの実施形態では、訓練されたニューラルネットワークによってカメラ深度感知情報を３次元モデルにマッチングしたユーザが、トリガーを検出するために使用される。
図７は、現実世界の環境４００内でＭＲシステム１００によって検出された例示的な調理用平鍋７１０を示す。例示的な実施形態では、図６に関して上述したようにアクティブにされた例示的なレシピは、レシピの準備指示の「ステップ１」における平鍋の使用を示す。したがって、段階的指示のコンテキストアプリケーションが起動されると、コンテキストアプリケーションは、準備指示の「ステップ１」のための平鍋オブジェクトの検出を含むアプリケーショントリガーを識別し得る。
【００４９】
平鍋７１０は、例えば、ユーザ１０２のキッチンのコンロに置いていてあり、ＭＲシステム１００によって現実世界の環境４００の３Ｄオブジェクトとして認識されてもよい。ＭＲシステム１００が平鍋７１０を検出すると、「ステップ１」の調理指示が開始される。例示的な実施形態では、ＭＲシステム１００は、この調理ステップおよびＭＲ環境５００内の平鍋７１０に関連する追加の仮想オブジェクトを提示する。より具体的には、ＭＲシステム１００は、平鍋７１０に対して仮想タイマー７１２を表示する。仮想タイマー７１２は、平鍋７１２の周囲の（例えば、６０秒または６０分を表す）ダイヤルマーカー（dial marker）と、平鍋７１２の中心にある１つ以上のアーム（arm）７１６とを含む。
【００５０】
動作中、「ステップ１」は、平鍋７１０を６０秒間予熱することを特定してもよく、または平鍋７１０内のマッシュルームスープを弱火で１５分間加熱することを特定してもよい。したがって、仮想タイマー７１２は、示された時間に基づいてカウントダウンまたはカウントアップするように構成され、それにより、「ステップ１」によって要求される時間の視覚的表示を提供し、ユーザ１０２がそのステップの完了まで追跡できる。同様に、コンテキストアプリケーションに関連して、ＭＲシステム１００は、ユーザ１０２がアプリケーションを終了させるか、またはコンテキストアプリケーションが完了するまで、トリガー条件を検出し、ユーザ１０２と対話し続ける。
【００５１】
図８Ａおよび８Ｂは、異なるコンテキストアプリケーションを提供する２つの例の層を示す。図８Ａでは、ＭＲシステム１００は、スポンサー層に関連付けられた仮想オブジェクトと現実世界のオブジェクトとの両方を含むＭＲ環境８００を提示する。例示的な実施形態では、ユーザ１０２は、エッフェル塔８０２（例えば、環境８００内の現実世界のオブジェクト）を見ながら、ＨＭＤ２２０を装着する。さらに、エッフェル塔のスポンサー（例えば、パリ議会）は、仮想ツアーオブジェクト８０４によって表されるエッフェル塔（例えば、観光ＭＲアプリケーション）のツアーアプリケーションに関連するコンテキストアプリケーションを作成した。
【００５２】
動作中、ユーザ１０２がエッフェル塔８０２を見ると、ＭＲシステム１００は、（例えば、画像認識を用いて、またはユーザ装置１０４の位置および視野に基づいて）ユーザ１０２が塔８０２を見ていることを検出する。さらに、ＭＲシステム１００は、クライアントモジュール１２４が現在スポンサー層を提示するように構成されること、およびスポンサー層がエッフェル塔８０２に関連付けられたコンテキストアプリケーションを含むことを決定する。したがって、ＭＲシステム１００は、塔８０２の近くのＨＭＤ２２０内に仮想ツアーオブジェクト８０４（例えば、花火）を作成および表示し、ユーザ１０２がコンテキストアプリケーションを起動できるようにする。
【００５３】
図８Ｂでは、クライアントモジュール１２４は、ユーザ生成層を提示するように構成されている。例示的な実施形態では、ユーザ生成層は、他のユーザ１０２によって公開されたコンテキストアプリケーションを含み得る。例えば、ローカルアーティストは、仮想オブジェクト８０６によって表されるように、塔８０２の近くのユーザ１０２のためにＭＲアートワークビューイング（MR art work viewing）を利用可能にするコンテキストアプリケーションを作成してもよい。動作中、ユーザ１０２がエッフェル塔８０２を見るとき、またはユーザ１０２が（例えば、アーティストによって設定された）特定の場所の近くにいるとき、ＭＲシステム１００は、クライアントモジュール１２４が現在ユーザ生成層を提示するように構成されること、およびユーザ生成層がエッフェル塔８０２またはその特定の場所に関連するコンテキストアプリケーションを含むことを決定する。したがって、ＭＲシステム１００は、仮想オブジェクト８０６を作成および表示し、ユーザ１０２が関連するユーザ生成コンテキストアプリケーションを起動できるようにする。
【００５４】
一実施形態に従って、再び図３を参照すると、動作３４０でコンテキストアプリケーションを実行することは、表示されたアプリケーションをユーザ１０２の環境内のオブジェクト（例えば、トリガーオブジェクト）の物理的寸法にモーフィングすること（morphing）、およびコンテキストアプリケーション内のアスペクトを制御するために（たとえば、ゲームキャラクタのモーションを制御するために）オブジェクトのリアルタイムの（例えば、物理的）動作を使用することを含む。モーフィングは、オブジェクトのタイプ、形状、寸法、および動作のいずれかを検出すること、およびオブジェクトが環境内を移動するときに、オブジェクトのサイズおよび向きに適合するようにコンテキストアプリケーションの表示を調整することを含む。この動作は、３次元の回転と３次元の移動とを含む。例えば、動作３１０において、クライアントモジュール１２４は、ユーザが長方形のシリアルボックスを保持していることを検出し、その特定のボックスのために設計された特定のゲーム、または任意のシリアルボックス上でプレイすることができる汎用シリアルボックスゲームのいずれかに対するコンテキストトリガーとして作用する。図９は、ユーザ１０２が彼の手（９０２Ａおよび９０２Ｂ）の間でシリアルボックス９００を保持している一例を示す環境の一人称斜視図である。この例では、静的な従来の迷路ゲーム９０４（例えば、伝統的に鉛筆で完成するもの）がボックス９００の裏面に印刷される。シリアルボックス９００は、混合現実のゲームコンテキストアプリケーションのトリガーとして機能し、クライアントモジュール１２４は、静的に印刷されたゲームバージョンの上に、迷路ゲームの混合現実バージョンを表示する（ゲームの混合現実バージョンは、図９に別々に示されていない）。クライアントモジュール１２４は、（例えば、図３に関連して説明した動作３３０による）アプリケーションデータをダウンロードし、検出されたオブジェクトの形状、寸法および向きを用いて、ユーザの手にあるボックスの寸法および向きにゲームをモーフィングしてゲームを表示する。クライアントモジュール１２４は、カメラによる物体検出を含む任意の好適な方法を用いて、または物体を追跡するために奥行きカメラを用いてもしくは手の追跡情報を用いて、ボックス９００の動きを追跡する。クライアントモジュール１２４は、ボックス９００の動きを取得し、ボックス９００の背面に配置される拡張現実表示（例えば、仮想オブジェクト）を生成するために、コンテキストアプリケーションから物理特性および挙動を適用する。この例では、ボックス９００の検出された動きが使用されて、迷路を横断する第１のキャラクタ９０６Ａを制御する。ユーザがシリアルボックス９００を手（９０２Ａおよび９０２Ｂ）で動かすと、クライアントモジュール１２４は、ゲームキャラクタ９０６Ａを、ボックス９００の動きにリンクされたコンテキストアプリケーション内でプログラムされたキャラクタの行動に従って動かす。６自由度すべてに対するボックス９００の正確な動きは、ゲーム内の経路に沿って第１のキャラクタ９０６Ａ（およびその後に第２のキャラクタ９０６Ｂ）を動かすために使用される。ボックス９００���右にジャークする（jerking）などのボックス９００の特別な動きが使用されて、キャラクタの動きを開始するなど、キャラクタ９０６Ａに特定のアクションを生じさせることができ、またボックス９００を垂直にジャークすると、キャラクタ９０６Ａが迷路９０４を横断するときにジャンプさせることができる。一実施形態によれば、アプリケーションの動的命令は、アプリケーションの表示にしたがって表示され得る。例えば、図９に示すボックスでは、２つの動的アニメーション９０８Ａおよび９０８Ｂが、第１のキャラクタ９０６Ａに（９０８Ａに示す）移動および（９０８Ｂに示す）ジャンプをさせるためにボックス９００をどのように動かすのかをユーザ１０２に教示する。一実施形態によれば、コンテキストアプリケーションは、複数のアプリケーショントリガーに従って時間とともに変化するようにプログラムされ得る。アプリケーショントリガーには、ゲームの仕組み（例えば、迷路の経路、迷路のタイプ、キャラクタのスキン／アニメーション）が毎日変わるように日付を含み、またゲームの種類も（例えば、迷路ゲームからパズルゲームへ）変更され得る。
【００５５】
一実施形態によれば、ユーザを取り囲む環境内の特定のタイプまたは形状（例えば、シリアルボックス、スープ缶、牛乳パック、ポストカード、名刺など）のオブジェクトに適用され得る変形可能メッシュコントローラ（deformable mesh controller）を作成して使用する方法が提供される。変形可能メッシュコントローラは、ＭＲコンテキストアプリモジュール１２４によって、ユーザを取り巻く環境内で検出された（たとえば、トリガーとして）オブジェクトに適用される。変形可能メッシュコントローラは、変形可能メッシュコントローラが適用されるオブジェクトの動きと状態によって開始および変更（制御など）される動作を有することができる。変形可能メッシュコントローラのサイズおよび形状がクライアントモジュール１２４によって修正され、変形可能メッシュコントローラが適用されるオブジェクトの正確なサイズおよび形状にモーフィングされるように、変形可能メッシュコントローラを動的に（例えば、ＭＲコンテキストアプリケーションモジュール１２４が動作している間）修正され得る。オブジェクトの正確なサイズと形状への変形可能メッシュコントローラのモーフィング（たとえば、変形）は、ＨＭＤ２２０からのセンサデータを含むデータから得られるオブジェクトを記述するデータを使用して実施される。オブジェクトによってトリガーされるＭＲコンテキストアプリケーションは、デジタルオブジェクトを表示するプラットフォームとして、オブジェクトに適用される変形可能メッシュコントローラを使用できる。たとえば、シリアルボックスゲームの汎用コントロールを備えた（たとえば、ビデオゲーム開発者によって作成される）変形可能メッシュコントローラは、サイズやブランドに関係なく、シリアルボックスに適用され得る。同様に、スープ缶などの円筒形オブジェクト用に作成された変形可能メッシュコントローラは、ソフトドリンク缶にも適用され得る。
【００５６】
一実施形態によれば、変形可能メッシュコントローラを定義するデータは、アプリデータ３０４に含まれる。方法３００からのプロセス３２０は、変形可能メッシュコントローラがモジュール１２４によって適用される制御オブジェクトとして機能することができる少なくとも１つのオブジェクトを検出することを含み得る。方法３００からのプロセス３３０は、データベース１４０から変形可能メッシュコントローラのデータを（例えば、ネットワーク１５０を介して）ダウンロードすることを含むことができる。方法３００からのプロセス３４０は、モジュール１２４に、制御オブジェクトの正確なサイズおよび形状に変形可能メッシュコントローラをモーフィングする（例えば、変形させる）ことを含み得る。方法３００からのプロセス３５０は、制御オブジェクトの動きおよび向きを経時的に監視し、それとともに変形可能メッシュコントローラを移動させる（たとえば、変形可能メッシュコントローラをオブジェクトに取り付ける）モジュール１２４を含む。プロセス３５０は、ユーザと制御オブジェクトとの対話を監視することも含む。方法３００のプロセス３６０において、モジュール１２４は、この対話に基づいてトリガーされたアプリケーションの実行を調整する。
【００５７】
一実施形態によれば、図１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄに示されているものは、混合現実のためのコンテキストアプリケーションのコントローラとして使用される特定の物理オブジェクトを示す一例である。この例では、コンテキストアプリケーションは、第１の人物が操作する名刺１００６によってトリガーされて制御される。この例では、名刺は、第２の人物に属し、サーバＭＲコンテキストアプリケーションモジュール１３４をトリガーして（例えば、名刺および第２の人物に関連している）特定のアプリケーションをクライアントＭＲコンテキストアプリケーションモジュール１２４に送信して実行させる特定のアプリケーショントリガーである。この例では、特定のアプリケーションは、第２の人物のＬｉｎｋｅｄＩｎ（登録商標）データにアクセスできるＬｉｎｋｅｄＩｎ（登録商標）アプリケーションの混合現実バージョンである。この名刺は、アプリケーションのコントローラとして（第１の人物との対話を介して）使用される。特定の方向および特定の方法での名刺の移動、名刺のタップ、名刺のスワイプ、および名刺の注視を含む、名刺との特定の対話が用いられて、アプリケーションを制御する。対話の一部は、アイ・トラッキングテクノロジとハンド・トラッキングテクノロジを使用して決定され得る。たとえば、対話は、（例えば、メニューおよび機能の）アプリケーション内でのスクロール、選択、開閉コントロール（opening and closing control）の開始に用いられる。たとえば、図１０Ａ〜１０Ｄに示すように、第１の人物が、名刺を手に取ってＬｉｎｋｅｄＩｎ（登録商標）アプリケーションを開始する。図１０Ａ〜１０Ｄは、第１の人物の視点で示され、たとえば、混合現実ＨＭＤ２２０を装着して見る。図１０Ａに示されるように、第１の人物は、ランプ１００２および名刺１００６が載ったテーブル１０００の前に立って見ている。第１の人物の手１０１０は、名刺１００６に手を伸ばしている。ＨＭＤ２２０上で（バックグラウンドで）実行されているＭＲコンテキストアプリで、クライアントＭＲコンテキストアプリモジュール１２４は、オブジェクト認識を使用して、少なくとも第１の人物の手１０１０および第２の人物の名刺１００６を検出する。ＭＲコンテキストアプリモジュール１２４は、オブジェクトが認識されたことをユーザに確認するために、オブジェクトの周りに破線のボックスを表示する。幾つかの実施形態では、破線のボックスは、認識されたオブジェクトの説明ラベルと信頼度を含み得る。例えば、破線のボックス１０１２は、ユーザの手１０１０の周りに表示され、認識されたオブジェクトが手であるという９８％の信頼度を示し、破線のボックス１００４は、ランプ１００２の周りに表示され、認識されたオブジェクトがランプであるという９７％の信頼度を示し、破線のボックス１００８は、名刺１００６の周りに表示され、認識されたオブジェクトが名刺であるという９４％の信頼度を示す。図１０Ｂは、ＭＲコンテキストモジュール１２４が名刺１００６上の記載および画像を認識できるように、ユーザＨＭＤ２２０に十分近い位置に名刺１００６を保持する第１の人物の手１０１０を示す。図１０Ｂに示すように、クライアントＭＲコンテキストアプリケーションモジュール１２４は、インスタンスセグメンテーションを使用して、名刺１００６に関連する会社名１０２０、ユーザ名１０２２、および連絡先詳細１０２４を判定し、複数のセグメント（例えば、着色された半透明のボックス１０１４、１０１６及び１９１８）を強調表示する。ＭＲコンテキストアプリケーションモジュール１２４は、互いに近接した名刺１００６および手１０１０（例えば、名刺１００６が、手１０１０によって保持されている）を、（例えば、図３に関して説明したプロセス３２０にしたがって）名刺アプリケーションに対するトリガーとして判定する。次いで、ＭＲコンテキストアプリモジュール１２４は、（例えば、図３に記載の方法３００のプロセス３３０および３４０に従って）名刺アプリケーションのデータをダウンロードして実行するであろう。ダウンロードされた名刺アプリケーションに応じて、ＨＭＤ２２０を使用してオプションを選択するか、または混合現実で表示されるメニューを開いたりするために、名刺１００６はピッチングされ得る（pitched）（例えば、名刺の表面に対して上下に動かされる）。例示的な実施形態によれば、図１０Ｃは、名刺アプリケーションの実行中にＨＭＤ２２０を通して見た名刺１００６を示す。図１０Ｃに示される例示的な実施形態において、ＭＲコンテキストアプリケーションモジュール１２４によって実行される名刺アプリケーションは、減損現実（diminished reality）を使用して名刺上のコンテンツ（例えば、会社名１０２０、ユーザ名１０２２、および連絡先詳細１０２４）を消去し（例えば、覆う）、それらをユーザ名１０２２、ＬｉｎｋｅｄＩｎ（登録商標）オプションリンク１０２６および「Ｃｏｎｎｅｃｔ」オプションリンク１０２８のデジタル表示で置き換える（例えば、連絡先詳細１０２４を使用して第２の人物に電話をかけるための電話アプリにリンクする）。図１０Ｃにおいて、名刺は、「Ｃｏｎｎｅｃｔ」１０２８を有する下向き矢印と、「ＬｉｎｋｅｄＩｎ  ｐｒｏｆｉｌｅ」１０２６を有する上向き矢印とを示す。ＭＲコンテキストアプリモジュール１２４は、名刺アプリケーションによる応答を開始する新しいトリガーを検出するために、名刺１００６および手１０１０を（例えば、図３に記載の方法３００のプロセス３５０の一部として）監視し続ける。例えば、図１０Ｄに示すように、（例えば、素早い動きで）名刺を上方にピッチングすることは、名刺アプリケーション内のトリガーとして認識されて第２の人物のＬｉｎｋｅｄＩｎ（登録商標）アカウント詳細１０３０に接続して表示し、ＬｉｎｋｅｄＩｎ（登録商標）アカウント詳細１０３０は、（例えば、図３に関して記載される方法３００からのプロセス３６０の一部として）名刺１００６の上部から飛び出しているように表示される。名刺アプリケーション内で説明されている他の動きは、ＭＲコンテキストアプリモジュール１２４に他のアクションを実行させる。たとえば、名刺を素早く上下に振ると、名刺アプリケーションが終了され、すべてのデジタル表示されたオブジェクトが削除され、名刺１００６の現実世界の表示に戻る。別例として、下方への動きにより、ＨＭＤ２２０は、連絡先詳細１０２４を使用して、（たとえば、適切に装着されている場合）第２の人物への携帯電話通話を開始してもよい。
【００５８】
図９および１０に示す例では、減損現実技術が使用されて、表面を視覚的にクリアにし、ユーザの視点から既存の物理的アイテムを除去する。その後、拡張現実技術が使用されて、物理的なオブジェクトの上部にあるユーザの視界に仮想オブジェクトを追加する。例えば、図９では、減損現実が使用されてシリアルボックスの背面をクリアし、動的仮想迷路ゲームをボックス上に表示させることができる。
【００５９】
いくつかの実施形態では、ＭＲシステム１００は、階層化されたコンテキストアプリケーションをユーザ１０２に提供してもよい。より具体的には、ＭＲシステム１００は、コンテキストアプリケーションの様々な「現実層（reality layer）」を提供し、異なるユーザ１０２は、同じ物理的環境において同じかまたは異なるコンテキストアプリケーションを経験することができる。例えば、いくつかの実施形態では、「共有層（shared layer）」（または「共有公開フィード（shared public feed）」）である。いくつかの実施形態では、共有層は、現実世界の位置の「スポンサー」（例えば、所有者、管理者）によって提供されるコンテンツを含み、その前提（例えば、店舗やレストランの物理的境界、ジオフェンスエリア（geo-fenced area）、ローカルＷｉ−Ｆｉネットワークの範囲内、または法的所有権の境界内）において起動されるＭＲコンテキストアプリケーションを作成することができる。いくつかの実施形態では、共有層は、ユーザがスポンサーとなっているコンテンツを含み得る。このように、すべてのユーザ１０２は、（例えば、場合によりオプトアウトまたはオプトインの現実（opt-out or opt-in reality）として特定の場所を訪問する場合）共有層を介して様々なスポンサーのコンテキストアプリケーションを経験することができ、スポンサーが、提示されるコンテンツをコントロールする。
【００６０】
いくつかの実施形態では、ＭＲシステム１００は、コンテキストアプリケーションの追加の層を提供し得る。例えば、ＭＲシステム１００は、ユーザ１０２に、自身の「プライベート層」内または「ユーザ生成層（user-generated layer）」（例えば、ユーザ生成コンテンツを含む）内でコンテキストアプリケーションを作成および公開させてもよい。したがって、ユーザ１０２は、他の層のコンテキストアプリケーションの代わりに、またはそれに加えて、プライベート層のコンテキストアプリケーションを経験し得る。いくつかの実施形態では、ＭＲシステム１００は、スポンサーがコンテキストアプリケーションの階層化された層を提供することを可能にしてもよい。例えば、特定のスポンサーは、（例えば、上記したように）その場所を訪れるすべての人に「パブリック層」を提供し、また、（例えば、サービスへの加入に基づいて、または購入したコンテンツに基づいて）スポンサーの従業員またはメンバーのみが経験する「従業員層」または「メンバー限定層」を提供し得る。
【００６１】
いくつかの実施形態では、複数の層が同時に経験されてもよい。例えば、ＭＲシステム１００は、共有層のコンテンツとユーザ自身のプライベート層のコンテンツの両方を、任意の場所のユーザに同時に提供してもよい。いくつかの実施形態では、ＭＲシステム１００は、特定の場所または特定の時間にユーザ１０２が利用可能な層の選択をユーザ１０２に提示し得る。
【００６２】
本明細書では、ある特定の実施形態が、ロジックまたはいくつかの構成要素、モジュール、または機構を含むものとして記載されている。モジュールは、ソフトウェアモジュール（例えば、機械可読記体において具体化されるコード）またはハードウェアモジュールのいずれかを構築し得る。「ハードウェアモジュール」は、ある特定の動作を実施することができる有形のユニットであり、ある特定の物理的な方法で構成または配置され得る。様々な例示的な実施形態では、１つ以上のコンピュータシステム（例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、もしくはサーバコンピュータシステム）またはコンピュータシステムの１つ以上のハードウェアモジュール（例えば、プロセッサもしくは一群のプロセッサ）は、本明細書に記載される、ある特定の動作を実施するように動作するハードウェアモジュールとして、ソフトウェア（例えば、アプリケーションまたはアプリケーション部分）によって構成され得る。
【００６３】
いくつかの実施形態では、ハードウェアモジュールは、機械的に、電子的に、またはこれらの任意の好適な組み合わせで実装され得る。例えば、ハードウェアモジュールは、ある特定の動作を実施するように永続的に構成された専用の回路または論理を含み得る。例えば、ハードウェアモジュールは、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）などの専用プロセッサであり得る。ハードウェアモジュールはまた、ある特定の動作を実施するために、ソフトウェアによって一時的に構成されたプログラム可能な論理または回路を含み得る。例えば、ハードウェアモジュールは、汎用プロセッサまたは他のプログラム可能なプロセッサによって実行されるソフトウェアを含み得る。このようなソフトウェアによって構成されると、ハードウェアモジュールは、構成された機能を実行するために独自に調整された特定のマシン（またはマシンの特定の部品を）となり、汎用プロセッサではない。ハードウェアモジュールを、専用および永続的に構成された回路、または一時的に構成された（例えば、ソフトウェアによって構成された）回路に機械的に実装する決定は、コストおよび時間の考慮によって進められ得ることが理解されよう。
【００６４】
したがって、「ハードウェアモジュール」という表現は、ある特定の方法で動作するか、または本明細書に記載されるある特定の動作を実施するように、物理的に構築されるか、永続的に構成される（例えば、配線で接続される）か、または一時的に構成される（例えば、プログラムされる）実体である有形の実体を包含するように理解されるべきである。
【００６５】
本明細書で使用される場合、「ハードウェア実装モジュール」とは、ハードウェアモジュールを指す。ハードウェアモジュールが一時的に構成される（例えば、プログラムされる）実施形態を考慮すると、ハードウェアモジュールの各々は、時間内の任意の１つのインスタンスにおいて構成またはインスタンス化される必要はない。例えば、ハードウェアモジュールが、特定用途向けプロセッサになるように、ソフトウェアによって構成された汎用プロセッサを含む場合、汎用プロセッサは、異なる時間にそれぞれ異なる特定用途向けプロセッサ（例えば、異なるハードウェアモジュールを含む）として構成され得る。したがって、ソフトウェアは、例えば、時間の１つのインスタンスにおいて特定のハードウェアモジュールを構築し、時間の異なるインスタンスにおいて異なるハードウェアモジュールを構築するように、特定のプロセッサ（複数可）を構成する。
【００６６】
ハードウェアモジュールは、他のハードウェアモジュールに情報を提供し、他のハードウェアモジュールから情報を受信することができる。
したがって、記載されるハードウェアモジュールは、通信可能に連結されていると見なされ得る。複数のハードウェアモジュールが同時に存在する場合、通信は、ハードウェアモジュールのうちの２つ以上の間で、またはそれらの中で信号伝送を介して（例えば、適切な回路およびバスを介して）達成され得る。複数のハードウェアモジュールが異なる時間において構成またはインスタンス化される実施形態では、かかるハードウェアモジュール間の通信は、例えば、複数のハードウェアモジュールがアクセス権を有するメモリ構造内の情報の記憶および検索を通じて達成され得る。例えば、１つのハードウェアモジュールは、動作を実施し、その動作の出力を通信可能に連結されたメモリデバイスに記憶することができる。次いで、さらなるハードウェアモジュールが、その後になって、メモリデバイスにアクセスして、記憶された出力を検索および処理することができる。ハードウェアモジュールはまた、入力デバイスまたは出力デバイスとの通信を開始することができ、リソースに対して動作（例えば、情報の収集）することができる。
【００６７】
本明細書に記載される例示的な方法の様々な動作は、少なくとも部分的に、関連する動作を実施するように（例えば、ソフトウェアによって）一時的に構成されるか、または永続的に構成される１つ以上のプロセッサによって実施され得る。
【００６８】
一時的または永続的に構成されるかどうかにかかわらず、かかるプロセッサは、本明細書に記載される１つ以上の動作または機能を実施するように動作するプロセッサ実装モジュールを構築し得る。本明細書で使用される場合、「プロセッサ実装モジュール」とは、１つ以上のプロセッサを使用して実装されるハードウェアモジュールを指す。
【００６９】
同様に、本明細書に記載される方法は、少なくとも部分的にプロセッサ実装型であり得、特定のプロセッサ（複数可）は、ハードウェアの一例である。例えば、ある方法の動作のうちの少なくともいくつかを、１つ以上のプロセッサまたはプロセッサ実装モジュールによって実施することができる。さらに、１つ以上のプロセッサはまた、「クラウドコンピューティング」環境で、または「サービスとしてのソフトウェア」（ＳａａＳ）として関連する動作の性能をサポートするように動作し得る。例えば、動作のうちの少なくともいくつかを、（プロセッサを含むマシンの例として）一群のコンピュータによって実施することができ、これらの動作は、ネットワーク（例えば、インターネット）、および１つ以上の適切なインタフェース（例えば、アプリケーションプログラムインタフェース（ＡＰＩ））を介してアクセス可能である。
【００７０】
ある特定の動作の性能を、単一のマシン内にあるだけでなく、いくつかのマシンにわたって展開されるプロセッサ間で分散させることができる。いくつかの例示的な実施形態では、プロセッサまたはプロセッサ実装モジュールは、単一の地理的な場所（例えば、家庭環境、オフィス環境、またはサーバファーム内）に位置し得る。他の例示的な実施形態では、プロセッサまたはプロセッサ実装モジュールを、いくつかの地理的な場所にわたって分散させることができる。
【００７１】
図１〜図１０Ｄに関連して説明されたモジュール、方法、アプリケーションなどは、マシンおよび関連するソフトウェアアーキテクチャのコンテキストでいくつかの実施形態で具体化される。以下のセクションでは、開示された実施形態での使用に適した代表的な１つまたは複数のソフトウェアアーキテクチャおよびマシン（たとえば、ハードウェア）アーキテクチャについて説明する。
【００７２】
ソフトウェアアーキテクチャは、ハードウェアアーキテクチャと組み合わせて使用されて、特定の目的に合わせたデバイスおよびマシンを作成する。たとえば、特定のソフトウェアアーキテクチャと組み合わせた特定のハードウェアアーキテクチャは、携帯電話、タブレットデバイスなどのモバイルデバイスを作成する。わずかに異なるハードウェアとソフトウェアのアーキテクチャによって、「物のインターネット」で使用するスマートデバイスが得られる。さらに別の組み合わせでは、クラウドコンピューティングアーキテクチャ内で使用するサーバコンピュータが生成される。当業者であれば、本明細書に記載のシステムおよび方法を本開示とは異なるコンテキストで実施する方法を容易に理解できるため、このようなソフトウェアおよびハードウェアアーキテクチャのすべての組み合わせが本明細書に提示されるわけではない。
【００７３】
図１１は、本明細書に記載されるＶＲツールおよび開発環境を提供するために、本明細書に記載される様々なハードウェアアーキテクチャ１１０２と併せて使用され得る代表的なソフトウェアアーキテクチャを示すブロック図１１００である。図１１は、ソフトウェアアーキテクチャの非限定的な例であり、本明細書に記載の機能を容易にするために他の多くのアーキテクチャが実装され得ることが理解されよう。ソフトウェアアーキテクチャ１１０２は、とりわけ、プロセッサ１２１０、メモリ１２３０、およびＩ／Ｏコンポーネント１２５０を含む、図１２のマシン１２００のようなハードウェア上で実行することができる。代表的なハードウェア層１１０４が示されており、これは、例えば、図１２のマシン１２００を表すことができる。代表的なハードウェア層１１０４は、関連する実行可能命令１１０８を有する１つ以上の処理ユニット１１０６を含む。実行可能な命令１１０８は、図１〜１０Ｄの方法、モジュールなどの実装形態を含む、ソフトウェアアーキテクチャ１１０２の実行可能な命令を表す。ハードウェア層１１０４は、実行可能命令１１０８を有するメモリまたは記憶装置モジュール１１１０も含む。ハードウェア層９０４は、マシン１２００の一部として示される他のハードウェアなど、ハードウェア層１１０４の他のハードウェアを示す１１１２によって示されるような他のハードウェアも含み得る。
【００７４】
図１１の例示的アーキテクチャでは、ソフトウェア１１０２は、各層が特定の機能を提供する層のスタックとして概念化することができる。例えば、ソフトウェア１１０２は、オペレーティングシステム１１１４、ライブラリ１１１６、フレームワークまたはミドルウェア１１１８、アプリケーション１１２０、およびプレゼンテーション層１１２２などの層を含むことができる。動作上、アプリケーション１１２０または層内の他のコンポーネントは、ソフトウェアスタックを介してアプリケーションプログラミングインタフェース（ＡＰＩ）コール（call）１１２４を呼び出し、ＡＰＩコール１１２４に応答してメッセージ１１２６として示される応答、戻り値などを受信することができる。示された層は本質的に代表的なものであり、全てのソフトウェアアーキテクチャが全ての層を有するわけではない。例えば、いくつかのモバイルまたは特殊用途のオペレーティングシステムは、フレームワーク／ミドルウェア層９１８を提供しないかもしれないが、他のものはそのような層を提供するかもしれない。他のソフトウェアアーキテクチャは、追加の層または異なる層を含み得る。
【００７５】
オペレーティングシステム１１１４は、ハードウェアリソースを管理し、共通のサービスを提供することができる。オペレーティングシステム１１１４は、例えば、カーネル１１２８、サービス１１３０、およびドライバ１１３２を含み得る。カーネル１１２８は、ハードウェア層と他のソフトウェア層との間の抽象化層として機能することができる。例えば、カーネル１１２８は、メモリ管理、プロセッサ管理（例えば、スケジューリング）、コンポーネント管理、ネットワーキング、セキュリティ設定などを担当してもよい。サービス１１３０は、他のソフトウェア層に他の共通サービスを提供することができる。ドライバ１１３２は、基礎となるハードウェアを制御またはインタフェースすることを担当し得る。例えば、ドライバ１１３２は、ハードウェア構成に応じて、ディスプレイドライバ、カメラドライバ、ブルートゥース（登録商標）ドライバ、フラッシュメモリドライバ、シリアル通信ドライバ（例えば、ユニバーサルシリアルバス（ＵＳＢ）ドライバなど）、Ｗｉ−Ｆｉ（登録商標）ドライバ、オーディオドライバ、電源管理ドライバなどを含み得る。
【００７６】
ライブラリ１１１６は、アプリケーション１１２０または他のコンポーネントまたは層によって利用され得る共通のインフラストラクチャを提供することができる。ライブラリ１１１６は、典型的には、他のソフトウェアモジュールが、基礎となるオペレーティングシステム１１１４の機能（例えば、カーネル１１２８、サービス１１３０、またはドライバ１１３２）と直接インタフェースするよりも簡単な方法でタスクを実行することを可能にする機能を提供し得る。ライブラリ９１６は、メモリ割り当て機能、文字列操作機能、数学的機能などの機能を提供することができるシステムライブラリ１１３４（例えば、Ｃ標準ライブラリ）を含むことができる。さらに、ライブラリ１１１６は、メディアライブラリ（例えば、ＭＰＲＥＧ４、Ｈ．２６４、ＭＰ３、ＡＡＣ、ＡＭＲ、ＪＰＧ、ＰＮＧなどの様々なメディアフォーマットの提示および操作をサポートするためのライブラリ）、グラフィックライブラリ（例えば、ディスプレイ上の２Ｄおよび３Ｄグラフィックコンテンツをレンダリングするために使用できるＯｐｅｎＧＬフレームワーク）、データベースライブラリ（例えば、様々なリレーショナルデータベース機能を提供できるＳＱＬｉｔｅ）、ウェブライブラリ（例えば、ウェブブラウジング機能を提供することができるＷｅｂＫｉｔ）などのＡＰＩライブラリ１１３６を含むことができる。ライブラリ９１６は、アプリケーション９２０および他のソフトウェアコンポーネント／モジュールに、他の多くのＡＰＩを提供するための多種多様な他のライブラリ１１３８も含み得る。
【００７７】
フレームワーク１１１８（ミドルウェアとも呼ばれる）は、アプリケーション１１２０または他のソフトウェアコンポーネント／モジュールによって使用され得るより高いレベルの共通インフラストラクチャを提供する。例えば、フレームワーク１１１８は、様々なグラフィックユーザインタフェース（ＧＵＩ）機能、高レベルのリソース管理、高レベルの位置識別サービスなどを提供することができる。フレームワーク１１１８は、アプリケーション１１２０または他のソフトウェアコンポーネント／モジュール（それらのうちのいくつかは特定のオペレーティングシステムまたはプラットフォームに固有のもの）によって使用され得る広範囲の他のＡＰＩを提供し得る。
【００７８】
アプリケーション１１２０は、ビルトインアプリケーション１１４０またはサードパーティアプリケーション１１４２を含む。代表的なビルトインアプリケーション９４０の例は、連絡先アプリケーション、ブラウザアプリケーション、ブックリーダーアプリケーション、ロケーションアプリケーション、メディアアプリケーション、メッセージングアプリケーション、ＭＲアプリケーション１１０１、またはゲームアプリケーションを含み得るが、それらに限定されない。サードパーティアプリケーション１１４２は、組み込みアプリケーションのいずれか、ならびに他の広範なアプリケーションを含み得る。特定の例では、サードパーティアプリケーション１１４２（例えば、特定のプラットフォームのベンダ以外のエンティティによるＡｎｄｒｏｉｄ（登録商標）またはｉＯＳ（登録商標）ソフトウェア開発キット（ＳＤＫ）を用いて開発されたアプリケーション）は、ｉＯＳ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）フォン、または他のモバイルオペレーティングシステムなどのモバイルオペレーティングシステム上で実行されるモバイルソフトウェアであり得る。特定の例では、サードパーティアプリケーション１１４２は、本明細書に記載の機能を容易にするために、オペレーティングシステム１１１４などのモバイルオペレーティングシステムによって提供されるＡＰＩコール１１２４を呼び出すことができる。
【００７９】
アプリケーション１１２０は、ビルトインオペレーティングシステム機能（例えば、カーネル１１２８、サービス１１３０、またはドライバ１１３２）、ライブラリ４１６（例えば、システム１１３４、ＡＰＩ１１３６、および他のライブラリ１１３８）、またはフレームワーク／ミドルウェア１１１８を使用して、システムのユーザと対話するためのユーザインタフェースを作成することができる。代替的に、または追加的に、いくつかのシステムでは、ユーザとの対話は、プレゼンテーション層１１４４などのプレゼンテーション層を介して行われ得る。これらのシステムでは、アプリケーション／モジュールの「ロジック」は、ユーザと対話するアプリケーション／モジュールの態様から切り離すことが可能である。
【００８０】
あるソフトウェアアーキテクチャは、仮想マシンを使用する。図１１の例では、これは仮想マシン１１４８によって示されている。仮想マシンは、アプリケーション／モジュールがハードウェアマシン（例えば、図１２のマシンなど）上で実行されているかのように実行することができるソフトウェア環境を作成する。仮想マシン１１４８は、ホストオペレーティングシステム（図１１のオペレーティングシステム１１１４）によってキャストされ、通常、必ずというわけではないが、仮想マシンの動作ならびにホストオペレーティングシステム（つまり、オペレーティングシステム１１１４）とのインタフェースを管理する仮想マシンモニタ１１４６を有する。オペレーティングシステム１１５０、ライブラリ１１５２、フレームワークまたはミドルウェア１１５４、アプリケーション１１５６、プレゼンテーション層１１５８などのソフトウェアアーキテクチャが仮想マシン内で実行される。仮想マシン１１４８内で実行されるソフトウェアアーキテクチャのこれらの層は、前述の対応する層と同じでもよく、または異なっていてもよい。
【００８１】
例示的な実施形態では、ＭＲアプリケーション１１０１は、アプリケーション１１２０層内のアプリケーションとして動作する。しかし、いくつかの実施形態では、ＭＲアプリケーション１１０１は、他のソフトウェア層、または複数のソフトウェア層（例えば、フレームワーク１１１８およびアプリケーション１１２０）、または本明細書に記載のシステムおよび方法を可能にする任意のアーキテクチャで動作し得る。
【００８２】
図１２は、マシン可読媒体１２３８（例えば、マシン可読記憶媒体）から命令を読み取り、本明細書で論じるＶＲ方法の任意の１つまたは複数を実行することができる、ある例示的な実施形態によるマシン１０００の構成要素を示すブロック図である。具体的には、図１２は、その中でマシン１２００に本明細書で論じられる方法またはオペレーションのうちの任意の１つまたは複数を実行させるための命令１２１６（例えば、ソフトウェア、ソフトウェアモジュール、プログラム、アプリケーション、アプレット、アプリ、または他の実行可能なコード）が実行され得るコンピュータシステムの例示の形態におけるマシン１２００の概略図を示す。たとえば、複数の命令により、マシンは、図３で説明した１つ以上のオペレーションを実行し得る。命令は、一般的なプログラムされていないマシンを、説明された方法で説明され示された機能を実行するようにプログラムされた特定のマシンに変換する。代替の実施形態では、マシン１２００は、スタンドアロンデバイスとして動作するか、または他のマシンに結合されてもよい（例えばネットワーク接続されてもよい）。ネットワーク化されたデプロイメントでは、マシン１２００は、サーバ−クライアントネットワーク環境ではサーバ機器またはクライアント機器のキャパシティで、またはピアツーピア（または分散）ネットワーク環境ではピア機器として動作することができる。マシン１２００は、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ（ＰＣ）、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、セットトップボックス（ＳＴＢ）、パーソナルデジタルアシスタント（ＰＤＡ）、エンターテイメントメディアシステム、携帯電話、スマートフォン、モバイルデバイス、ウェアラブルデバイス（例えばスマートウォッチ）、スマートホームデバイス（例えばスマート電化製品）、その他のスマートデバイス、ウェブ電化製品、ネットワークルータ、ネットワークスイッチ、ネットワークブリッジ、またはマシン１２００によってとられるべき動作を指定する命令１２１６を順次または他の方法で実行することができる任意のマシンを含み得るが、これに限定されない。さらに、単一のマシン１２００のみが示されているが、「マシン」という用語は、命令１２１６を個別にまたは共同で実行して本明細書で論じる方法のうちの任意の１つまたは複数を実行するマシン１２００の集合も含むものと解釈されるべきである。
【００８３】
マシン１２００は、バス１２０２を介するなどして互いに通信するように構成され得るプロセッサ１２１０、メモリ１２３０、およびＩ／Ｏコンポーネント１２５０を含み得る。例示の実施形態では、プロセッサ１２１０（例えば、中央処理装置（ＣＰＵ）、縮小命令セット計算（ＲＩＳＣ）プロセッサ、複合命令セット計算（ＣＩＳＣ）プロセッサ、グラフィック処理ユニット（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、無線周波数集積回路（ＲＦＩＣ）、他のプロセッサ、またはそれらの任意の適切な組み合わせ）は、例えば、命令１２１６を実行することができるプロセッサ１２１２およびプロセッサ１２１４を含み得る。用語「プロセッサ」は、同時に命令を実行することができる２つ以上の独立したプロセッサ（時に「コア」と呼ばれる）を含むことができるマルチコアプロセッサを含むことを意図している。図１２は、複数のプロセッサを示すが、マシン１２００は、単一のコアを有する単一のプロセッサ、複数のコアを有する単一のプロセッサ（例えば、マルチコアプロセッサ）、単一のコアを有する複数のプロセッサ、複数のコアを有する複数のプロセッサ、またはそれらの任意の組み合わせを含み得る。
【００８４】
メモリまたは記憶装置１２３０は、メインメモリ、または他のメモリ記憶装置などのメモリ１２３２、ならびに記憶装置ユニット１２３６を含むことができ、両方ともバス１２０２を介するなどして、プロセッサ１２１０にアクセス可能である。記憶装置ユニット１２３６およびメモリ１２３２は、本明細書に記載の方法または機能のうちの任意の１つまたは複数を具体化する命令１２１６を格納する。命令１２１６は、マシン１２００によるその実行中、メモリ１２３２内、記憶装置ユニット１２３６内、プロセッサ１２１０のうちの少なくとも一つ内（例えば、プロセッサのキャッシュメモリ内）、またはそれらの任意の適切な組合せ内に、完全にまたは部分的に存在し得る。従って、メモリ１２３２、記憶装置ユニット１２３６、およびプロセッサ１２１０のメモリは、マシン可読媒体の例である。
【００８５】
本明細書で使用される「マシン可読媒体」は、命令およびデータを一時的または恒久的に格納することができるデバイスを意味し、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、バッファメモリ、フラッシュメモリ、光学メディア、磁気メディア、キャッシュメモリ、他の種類の記憶装置（例えば、消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ））またはそれらの任意の適切な組み合わせを含み得るが、これらに限定されない。「マシン可読媒体」という用語は、命令１２１６を格納することができる単一の媒体または複数の媒体（例えば、集中型または分散型データベース、または関連するキャッシュおよびサーバ）を含むと解釈されるべきである。「マシン可読媒体」という用語は、マシン（例えば、マシン１２００）による実行のための命令（例えば、命令１２１６）を格納することができる任意の媒体、または複数の媒体の組み合わせを含むものとし、命令は、マシン１２００の１つまたは複数のプロセッサ（例えば、プロセッサ１２１０）により実行されると、マシン１２００に本明細書に記載の方法のうちの任意の１つまたは複数を実行させる。したがって、「マシン可読媒体」は、単一の記憶装置またはデバイス、ならびに複数の記憶装置またはデバイスを含む「クラウドベースの」記憶システムまたは記憶ネットワークを指す。「機械可読媒体」という用語は、一時的な信号自体を除く。
【００８６】
Ｉ／Ｏコンポーネント１２５０は、入力を受信し、出力を提供し、出力を生成し、情報を送信し、情報を交換し、測定値を捕捉するなどのための多種多様な構成要素を含み得る。特定のマシンに含まれる特定のＩ／Ｏコンポーネント１２５０は、マシンの種類に依存する。例えば、携帯電話などの携帯機器は、タッチ入力デバイスまたは他のそのような入力機構を含む可能性があり、ヘッドレスサーバ機器は、そのようなタッチ入力デバイスを含まない可能性が高いであろう。Ｉ／Ｏコンポーネント１２５０は、図１２には示されていない他の多くの構成要素を含み得ることが理解されよう。Ｉ／Ｏコンポーネント１２５０は、単に以下の説明を単純化するために機能に従ってグループ化されており、そのグループ化は決して限定的なものではない。様々な例示的実施形態では、Ｉ／Ｏコンポーネント１２５０は、出力コンポーネント１２５２および入力コンポーネント１２５４を含み得る。出力コンポーネント１２５２は、視覚的構成要素（例えば、プラズマディスプレイパネル（ＰＤＰ）、発光ダイオード（ＬＥＤ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）、プロジェクタ、陰極線管（ＣＲＴ））、またはヘッドマウントディスプレイ（ＨＭＤ）デバイスのようなウェアラブルデバイス、音響部品（例えばスピーカ）、触覚部品（例えば振動モータ、抵抗機構）、その他の信号発生器などを含み得る。入力コンポーネント１２５４は、英数字入力構成要素（例えば、キーボード、英数字入力を受け取るように構成されたタッチスクリーン、フォトオプティカルキーボード、または他の英数字入力構成要素）、ポイントベースの入力構成要素（例えば、マウス、タッチパッド、トラックボール、ジョイスティック、モーションセンサ、またはその他のポインティングデバイス）、触覚入力コンポーネント（例えば、物理ボタン、タッチまたはタッチジェスチャの位置または力を提供するタッチスクリーン、またはその他の触覚入力構成要素）、モーション感知入力コンポーネント（例えば、ハンドコントローラ）、音声入力部品（例えば、マイク）などを含み得る。
【００８７】
さらなる例示的実施形態では、Ｉ／Ｏコンポーネント１２５０は、他の様々なコンポーネントの中で、バイオメトリックコンポーネント１２５６、モーションコンポーネント１２５８、環境コンポーネント１２６０、または位置コンポーネント１２６２を含み得る。例えば、バイオメトリックコンポーネント１２５６は、表情（例えば、手の表情、顔の表情、声の表情、身体のジェスチャ、または目の動き）を検出し、生体信号（例えば、血圧、心拍数、体温、発汗、または脳波）を測定し、人物を識別（例えば、音声識別、網膜識別、顔識別、指紋識別、または脳波に基づく識別）する等のための構成要素を含み得る。モーションコンポーネント１２５８は、加速度センサ構成要素（例えば、加速度計）、重力センサ構成要素、回転センサ構成要素（例えば、ジャイロスコープ）、位置検出構成要素などを含み得る。環境コンポーネント１２６０は、例えば、照明センサ構成要素（例えば、光度計）、温度センサ構成要素（例えば、周囲温度を検出する１つまたは複数の温度計）、湿度センサ構成要素、圧力センサ構成要素（例えば、気圧計）、音響センサ構成要素（例えば、背景雑音を検出する１つまたは複数のマイクロフォン）、近接センサ構成要素（例えば、近くの物体を検出する赤外線センサ）、ガスセンサ（例えば、安全のために有害ガスの濃度を検出するための、または大気中の汚染物質を測定するためのガス検出センサ）、または周囲の物理的環境に対応する標示、測定値、または信号を提供することができる他の構成要素を含み得る。位置コンポーネント１２６２は、位置センサ構成要素（例えば、全地球測位システム（ＧＰＳ）受信機部品）、高度センサ構成要素（例えば、高度が導出され得る気圧を検出する高度計または気圧計）、方位センサ構成要素（例えば、磁力計）などを含み得る。
【００８８】
通信は、多種多様な技術を使用して実施することができる。Ｉ／Ｏコンポーネント１２５０は、カップリング（coupling）１２８２およびカップリング１２７２を介してそれぞれマシン１２００をネットワーク１２８０またはデバイス１２７０に結合するように動作可能な通信コンポーネント１２６４を含み得る。例えば、通信コンポーネント１２６４は、ネットワーク１２８０とインタフェースするためのネットワークインタフェース構成要素または他の適切なデバイスを含み得る。さらなる例では、通信コンポーネント１２６４は、有線通信構成要素、無線通信構成要素、セルラ通信構成要素、近距離無線通信（ＮＦＣ）構成要素、Ｂｌｕｅｔｏｏｔｈ（登録商標）構成要素（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）ＬｏｗＥｎｅｒｇｙ）、Ｗｉ−Ｆｉ（登録商標）構成要素、および他のモダリティを介して通信を提供するための他の通信構成要素を含み得る。デバイス１２７０は、他のマシンまたは多種多様な周辺デバイス（例えば、ユニバーサルシリアルバス（ＵＳＢ）を介して結合された周辺デバイス）のうちのいずれかであり得る。
【００８９】
様々な実施形態では、ネットワーク１０８０の一つ以上の部分は、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、ローカルエリアネットワーク（ＬＡＮ）、無線ＬＡＮ（無線ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ＷＡＮ（ＷＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、インターネット、インターネットの一部、公衆交換電話ネットワーク（ＰＳＴＮ）の一部、ＰＯＴＳ（Plain Old Telephone Service）ネットワークの一部、セルラ電話ネットワーク、無線ネットワーク、Ｗｉ−Ｆｉ（登録商標）ネットワーク、他のタイプのネットワーク、または二つ以上のそのようなネットワークの組み合わせであってもよい。例えば、ネットワーク１２８０又はネットワーク１２８０の一部は、無線又はセルラーネットワークを含んでもよく、カップリング１２８２は、ＣＤＭＡ（Code Division Multiple Access）接続、ＧＳＭ（Global System for Mobile communications）接続、又は他のタイプのセルラ又は無線カップリングであってもよい。この例では、カップリング１２８２は、シングルキャリア無線伝送技術（１ｘＲＴＴ）、ＥＶＤＯ（Evolution-Data Optimized）技術、汎用パケット無線サービス（General Packet Radio Service）技術、ＥＤＧＥ（Enhanced Data rates for GSM Evolution）技術、３Ｇを含む３ＧＰＰ（third Generation Partnership Project）、第４世代無線（４Ｇ）ネットワーク、ＵＭＴＳ（Universal Mobile Telecommunications System）、ＨＳＰＡ（High Speed Packet Access）、ＷｉＭＡＸ（Worldwide Interoperability for Microwave Access）、ＬＴＥ（Long Term Evolution)標準、様々な標準設定組織によって定義された他の規格、他の長距離プロトコル、または他のデータ転送技術のいずれかのタイプのデータ転送技術を実施してもよい。
【００９０】
複数の命令１２１６は、ネットワークインタフェースデバイス（例えば、通信コンポーネント１２６４に含まれるネットワークインタフェースコンポーネント）を介した伝送媒体を使用し、かつ多数の転送プロトコル（例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ））のうちの任意のものを利用して、ネットワーク１２８０を介して送信または受信され得る。同様に、複数の命令１２１６は、デバイス１２７０へのカップリング１２７２（例えば、ピアツーピアカップリング）を介して、伝送媒体を使用して送信または受信され得る。「伝送媒体（transmission medium）」という用語は、マシン１２００による実行のための複数の命令１２１６を記憶し、符号化し、又は運ぶことができる任意の無形媒体（intangible medium）を含むものとし、このようなソフトウェアの通信を可能とするためのデジタル又はアナログの通信信号又は他の無形媒体を含む。
【００９１】
この明細書全体を通して、複数のインスタンスは、単一のインスタンスとして記述された構成要素、動作、または構造を実装することができる。
１つ以上の方法の個々の動作は別個の動作として図示および説明されているが、個々の動作の１つ以上を同時に実施することができ、図示の順序で動作を実施する必要はない。例示的な構成で個別の構成要素として提示される構造および機能性は、組み合わせた構造または構成要素として実装され得る。同様に、単一の構成要素として提示されている構造および機能性は、個別の構成要素として実装され得る。これらおよび他の変形、修正、追加および改良は、本明細書中の主題の範囲内に入る。
【００９２】
本発明の主題の概要を特定の例示的な実施形態を参照して説明したが、本開示のより広い範囲の実施形態から逸脱することなく、これらの実施形態に対して様々な修正および変更を加えることができる。本発明の主題のそのような実施形態は、単に便宜上、個々にまたは集合的に「発明」という用語によって本明細書において言及され得るが、これは、本出願の範囲を、任意の単一の開示または発明概念（もし実際に複数が開示されているならば）に自発的に限定することを意図するものではない。
【００９３】
本明細書に示された実施形態は、当業者が開示された教示を実施することを可能にするために十分に詳細に記載されている。本開示の範囲から逸脱することなく、構造的および論理的な置換および変更を行うことができるように、他の実施形態が使用され、かつそこから導出されることが可能である。従って、詳細な説明は限定的な意味で解釈されるべきではなく、様々な実施形態の範囲は添付の特許請求の範囲とそのような特許請求の範囲が権利を与える等価物の全範囲によってのみ定義される。
【００９４】
本明細書で使用されるとき、用語「または」は、包括的または排他的な意味で解釈され得る。さらに、本明細書で単一のインスタンスとして説明されているリソース、動作、または構造のために複数のインスタンスを提供することができる。さらに、様々なリソース、動作、モジュール、エンジン、およびデータストア間の境界はいくぶん任意であり、特定の動作は特定の例示的な構成のコンテキストで示される。機能の他の割り当ても想定されており、本開示の様々な実施形態の範囲内にあり得る。一般に、例示的な構成において別々のリソースとして提示された構造および機能は、組み合わされた構造またはリソースとして実装され得る。同様に、単一のリソースとして提示された構造および機能は、別々のリソースとして実装されてもよい。これらおよび他の変形、修正、追加、および改良は、添付の特許請求の範囲によって表される本開示の実施形態の範囲内に含まれる。従って、本明細書および図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。
【図１】
0006828189.tif 000002
【図２】
0006828189.tif 000003
【図３】
0006828189.tif 000004
【図４】
0006828189.tif 000005
【図５】
0006828189.tif 000006
【図６】
0006828189.tif 000007
【図７】
0006828189.tif 000008
【図８Ａ】
0006828189.tif 000009
【図８Ｂ】
0006828189.tif 000010
【図９】
0006828189.tif 000011
【図１０Ａ】
0006828189.tif 000012
【図１０Ｂ】
0006828189.tif 000013
【図１０Ｃ】
0006828189.tif 000014
【図１０Ｄ】
0006828189.tif 000015
【図１１】
0006828189.tif 000016
【図１２】
0006828189.tif 000017