(57)【要約】１対１ベースで、独立して、各アプリケーションによって、複合現実環境内の仮想コンテンツを管理および表示するためのアプローチが開示され、各仮想コンテンツは、それらのそれぞれのアプリケーションによって、本明細書において、「プリズム」と称される、有界のボリュームの中にレンダリングされる。各プリズムは、ユニバースアプリケーションが複合現実環境においてプリズムを管理および表示することを可能にする特性および属性を有し得、それによって、ユニバースアプリケーションは、複合現実環境においてプリズム自体を管理することによって、仮想コンテンツの設置および表示を管理し得る。
2021507402.tif 000002
【特許請求の範囲】
【請求項１】
仮想コンテンツを３Ｄ空間環境において表示する方法であって、前記方法は、
アプリケーションから、仮想コンテンツを３Ｄ空間環境において表示するための要求を受信することと、
プリズムを作成することであって、前記プリズムは、前記仮想コンテンツの境を前記プリズムの境界の内側に限るように構成された空間のボリュームである、ことと、
前記仮想コンテンツを前記アプリケーションから受信することと、
前記仮想コンテンツを前記プリズムの前記境界の内側にレンダリングすることと、
前記プリズムを前記３Ｄ空間環境におけるオブジェクトに関連付けることと
を含む、方法。
【請求項２】
前記プリズムの境界は、表示されない、請求項１に記載の方法。
【請求項３】
前記３Ｄ空間環境は、ユーザの物理的実世界環境である、請求項１に記載の方法。
【請求項４】
前記プリズムは、自動的に作成され、機能性の組を有する、請求項１に記載の方法。
【請求項５】
前記機能性の組は、前記プリズムと前記３Ｄ空間環境における前記オブジェクトとの間の関連付けを備えている、請求項４に記載の方法。
【請求項６】
前記機能性の組は、前記プリズムに関して許容される最小サイズ、前記プリズムに関して許容される最大サイズ、および前記プリズムをサイズ変更するためのアスペクト比のうちの１つ以上を備えている、請求項４に記載の方法。
【請求項７】
前記アプリケーションは、第１の仮想コンテンツを第１のプリズムの中に、第２の仮想コンテンツを第２のプリズムの中にレンダリングし、前記第１のプリズムおよび前記第２のプリズムは、異なるプリズムである、請求項１に記載の方法。
【請求項８】
前記プリズムは、前記３Ｄ空間環境における他のプリズムと重複しない、請求項７に記載の方法。
【請求項９】
前記プリズムは、前記３Ｄ空間環境におけるオブジェクトに関連して設置される、請求項１に記載の方法。
【請求項１０】
前記オブジェクトは、拡張現実デバイスのユーザである、請求項９に記載の方法。
【請求項１１】
前記プリズムは、
１つ以上の普遍的特徴と、
１つ以上のアプリケーション特定の特徴と
を備え、
前記１つ以上の普遍的特徴および前記１つ以上のアプリケーション特定の特徴は、事前に承認されたオプションのリストから選択される、請求項１に記載の方法。
【請求項１２】
前記１つ以上の普遍的特徴は、異なるアプリケーションが一貫した様式において互いに相互作用することを確実にする、請求項１１に記載の方法。
【請求項１３】
仮想コンテンツを３Ｄ空間環境において表示するためのディスプレイシステムであって、前記ディスプレイシステムは、請求項１−１２のいずれかに記載の方法を実装する手段を備えている、ディスプレイシステム。
【請求項１４】
複合現実システムを開始する方法であって、前記方法は、
ユーザの現在の場所を決定することと、
前記現在の場所において以前に展開されていた１つ以上のプリズムを読み出すことと、
前記１つ以上のプリズムを前記ユーザの前記現在の場所において復元することと、
前記ユーザの前記現在の場所において復元された前記１つ以上のプリズムを表示することと
を含む、方法。
【請求項１５】
複合現実システムにおいて仮想コンテンツのアプリケーション状態を管理する方法であって、前記方法は、
３Ｄボリュームを立体グリッドに分けることと、
前記立体グリッド内のユーザの第１の場所を決定することと、
前記３Ｄボリューム内のアプリケーションの第２の場所を決定することと、
前記３Ｄボリューム内の前記ユーザと前記アプリケーションとの間の距離を計算することと、
少なくとも部分的に前記ユーザと前記アプリケーションとの間の計算された前記距離に基づいて、前記アプリケーションの状態を修正することと
を含む、方法。
【請求項１６】
拡張現実環境においてアプリケーションを開き、それを設置する方法であって、前記方法は、
ユーザから、新しいコンテンツのための要求を示す第１のユーザ入力を受信することと、
アプリケーションを立ち上げ、前記コンテンツを生成することと、
３Ｄディスプレイボリューム管理ユニットのミニディスプレイボリュームを作成することであって、ページプレビューが、前記ミニディスプレイボリューム内に表示され、前記３Ｄディスプレイボリューム管理ユニットは、前記アプリケーションの前記立ち上げと同時に作成される、ことと、
前記ミニディスプレイボリュームの移動を示す第２のユーザ入力を受信することと、
前記拡張現実環境におけるある場所における前記ミニディスプレイボリュームの設置を示す第３のユーザ入力を受信することと、
前記ミニディスプレイボリュームの代わりに前記３Ｄディスプレイボリューム管理ユニットを前記場所において拡張させることと
を含み、
前記３Ｄディスプレイボリューム管理ユニットは、前記３Ｄディスプレイボリューム管理ユニット内に完全にロードされた前記コンテンツを表示する、方法。
【請求項１７】
仮想コンテンツを管理する方法であって、前記方法は、
コンテンツをコンテンツ生成アプリケーションから受信することと、
ユニバースアプリケーションによって、前記コンテンツを３Ｄ空間環境において表示することと、
前記３Ｄ空間環境において前記ユニバースアプリケーションによって、前記コンテンツの表示を絶えず管理することと
を含む、方法。
【請求項１８】
方法であって、前記方法は、
シーンに関するシーングラフにアクセスすることであって、前記シーングラフは、１つ以上の変換ツリーを備え、各ツリーは、複数のノードを備えている、ことと、
前記１つ以上の変換ツリー内の複数のノードからの１つ以上のノードにタグを追加することであって、タグ付けされた前記１つ以上のノードは、変換グループを形成し、タグ付けされた前記１つ以上のノードは、第１のタグ付けされたノードと第２のタグ付けされたノードとを備えている、ことと、
前記第１のタグ付けされたノードを移動させることと
を含み、
前記第１のタグ付けされたノードを移動させることは、前記第２のタグ付けされたノードが移動することを引き起こす、方法。
【請求項１９】
仮想コンテンツを３Ｄ共有空間において表示する方法であって、前記方法は、
第１のアプリケーションによって、仮想コンテンツを前記３Ｄ共有空間において生成することと、
第２のアプリケーションによって、前記第１のアプリケーションによって生成された前記仮想コンテンツを表示することと
を含み、
前記第１のアプリケーションと前記第２のアプリケーションとは、異なるアプリケーションである、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、１人以上のユーザのための双方向仮想または拡張現実環境を促進するように構成されたシステムおよび方法に関する。
【背景技術】
【０００２】
現代のコンピューティングおよびディスプレイ技術は、いわゆる「仮想現実」（ＶＲ）、「拡張現実」（ＡＲ）体験、および／または「複合現実」体験（以降、集合的に、「複合現実」および／または「ＭＲ」と称される）のためのシステムの開発を促進しており、デジタル的に再現された画像またはその一部が、現実であるように見える様式、またはそのように知覚され得る様式でユーザに提示される。ＶＲシナリオは、典型的に、他の実際の実世界の視覚的入力に対する透過性を伴わずに、デジタルまたは仮想画像情報の提示を伴う一方、ＡＲまたはＭＲシナリオは、典型的に、ユーザの周囲の実際の世界の可視化に対する拡張としてのデジタルまたは仮想画像情報の提示を伴い、それによって、デジタルまたは仮想画像（例えば、仮想コンテンツ）が、実世界の一部であるように見え得る。しかしながら、ＭＲは、仮想コンテンツをコンテキスト的に有意義な方法において統合し得る一方、ＡＲは、そうではないこともある。
【０００３】
したがって、複合現実環境における
仮想コンテンツを管理し、表示するためのアプローチの必要がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
いくつかの実施形態によると、各アプリケーションによって、独立して、１度に１つずつベースで複合現実環境内の仮想コンテンツを管理および表示する代わりに、各仮想コンテンツは、それらのそれぞれのアプリケーションによって、以降、「プリズム」と称され得る有界のボリュームの中にレンダリングされる。各プリズムは、時として、ユニバースアプリケーションと呼ばれるアプリケーションが複合現実環境内のプリズムを管理および表示することを可能にする特性および属性を有し得、それによって、ユニバースアプリケーションは、プリズム自体を管理することによって、複合現実環境において仮想コンテンツの設置および表示を管理し得る。
【０００５】
一実施形態は、仮想コンテンツを３Ｄ空間環境において表示する方法を対象とし、方法は、１）アプリケーションから、仮想コンテンツを３Ｄ空間環境において表示するための要求を受信することと、２）仮想コンテンツのディスプレイを管理するためのプリズムを作成することであって、プリズムは、仮想コンテンツの境をプリズムの境界の内側に限るように構成された空間の立方体および／または長方形ボリュームである、ことと、３）仮想コンテンツをアプリケーションから受信することと、４）仮想コンテンツをプリズムの境界の内側にレンダリングすることと、少なくとも部分的にユーザ入力に基づいて、プリズムを３Ｄ空間環境におけるオブジェクトに関連付けることと、６）プリズムを３Ｄ空間環境の中に定着することとを含む。
【０００６】
１つ以上の実施形態において、プリズムの境界の境界線は、表示されない。３Ｄ空間環境は、ユーザの物理的実世界環境であり得る。プリズムは、自動的に作成され、機能性の組を有し得る。機能性の組は、プリズムに関して許容される最小／最大サイズ、および／またはプリズムをサイズ変更するためのアスペクト比を備え得る。機能性の組は、プリズムと３Ｄ空間環境におけるオブジェクトとの間の関連付けを備え得る。アプリケーションは、追加の仮想コンテンツを追加のプリズムの中にレンダリングし得、各仮想コンテンツは、別個のプリズムの中にレンダリングされ得る。
【０００７】
１つ以上の実施形態において、プリズムは、３Ｄ空間環境における他のプリズムと重複しない。プリズムは、異なるアプリケーションが互いに適切に相互作用することを確実にするための１つ以上の普遍的特徴、および／または、１つ以上のアプリケーション特定の特徴を備え得、１つ以上の普遍的特徴および１つ以上のアプリケーション特定の特徴は、事前に承認されたオプションのリストから選択される。
【０００８】
別の実施形態は、仮想コンテンツを３Ｄ空間環境において表示するためのディスプレイシステムを対象とし、ディスプレイシステムは、拡張現実頭部搭載型ディスプレイシステムと、データを処理するための１つ以上のモジュールとを含み得、１つ以上のモジュールは、１つ以上のメモリに記憶され、１つ以上のモジュールは、１）アプリケーションから、仮想コンテンツを３Ｄ空間環境において表示するための要求を受信することと、２）プリズムを作成することであって、プリズムは、仮想コンテンツの境をプリズムの境界の内側に限るように構成された空間のボリュームである、ことと、３）仮想コンテンツをアプリケーションから受信することと、４）仮想コンテンツをプリズムの境界の内側にレンダリングすることと、５）プリズムを３Ｄ空間環境におけるオブジェクトに関連付けることとを実施するように構成される。
【０００９】
１つ以上の実施形態において、プリズムの境界の境界線は、表示されない。３Ｄ空間環境は、ユーザの物理的実世界環境であり得る。プリズムは、自動的に作成され、機能性の組を有し得る。機能性の組は、プリズムに関して許容される最小／最大サイズ、および／またはプリズムをサイズ変更するためのアスペクト比を備え得る。機能性の組は、プリズムと３Ｄ空間環境におけるオブジェクトとの間の関連付けを備え得る。アプリケーションは、追加の仮想コンテンツを追加のプリズムの中にレンダリングし得、各仮想コンテンツは、別個のプリズムの中にレンダリングされ得る。
【００１０】
１つ以上の実施形態において、プリズムは、３Ｄ空間環境における他のプリズムと重複しない。プリズムは、異なるアプリケーションが互いに適切に相互作用することを確実にするための１つ以上の普遍的特徴、および／または、１つ以上のアプリケーション特定の特徴を備え得、１つ以上の普遍的特徴および１つ以上のアプリケーション特定の特徴は、事前に承認されたオプションのリストから選択される。
【００１１】
別の実施形態は、複合現実システムを開始する方法を対象とし、方法は、ユーザの現在の場所を決定することと、現在の場所において以前に展開されていた１つ以上のプリズムを読み出すことと、１つ以上のプリズムをユーザの現在の場所において復元することと、ユーザの現在の場所において復元された１つ以上のプリズムを表示することとを含み得る。
【００１２】
１つ以上の実施形態において、プリズムは、アプリケーションからの仮想コンテンツがその中に表示された空間の立方体および／または長方形ボリュームであり、それは、２つ以上のプリズムの中にレンダリングし得る。言い換えると、いくつかの実施形態において、単一アプリケーションは、２つ以上のプリズムに対応し得る。いくつかの実施形態において、単一アプリケーションは、単一プリズムに対応する。プリズムは、ユーザの現在の場所に関するマルチアプリケーションシーングラフのサブツリーを表す。ユーザの現在の場所において以前に展開されていた１つ以上のプリズムを読み出すことは、例えば、外部データベースから、１つ以上のプリズムに関するインスタンスデータを読み出すことと、ローカルプリズムデータベースを１つ以上のプリズムに関するインスタンスデータで再構築することとを含み得、各プリズムのためのインスタンスデータは、プリズムを定義するプリズム属性のデータ構造を含み、プリズム属性は、場所、向き、範囲幅、範囲高さ、範囲深度、定着タイプ、および／または定着位置のうちの少なくとも１つを備え、各プリズムのためのインスタンスデータは、アプリケーションによってプリズムの中に以前にレンダリングされていた仮想コンテンツの状態情報を備えたアプリケーション特定の属性のキー／値ペアを含む。いくつかの実施形態において、データは、ローカルで記憶され、外部データベースは、必要とされない。
【００１３】
１つ以上の実施形態において、１つ以上のプリズムを復元することは、現在の場所において以前に展開されていた１つ以上のプリズムに対応するそれぞれのアプリケーションを立ち上げることと、以前に展開されていた１つ以上のプリズムに対応する１つ以上の新しいプリズムを作成することと、それぞれの仮想コンテンツを１つ以上の新しいプリズムの中にレンダリングすることとを含む。
【００１４】
１つ以上の実施形態において、ユーザが１つ以上のプリズムと相互作用すると、ユーザのローカルプリズムデータベースを更新されたプリズムインスタンスデータで更新することと、ローカルプリズムデータベースと外部データベースを同期させることとをさらに含む。
【００１５】
いくつかの実施形態は、複合現実システムにおいて仮想コンテンツのアプリケーション状態を管理する方法を対象とし、方法は、３Ｄボリュームを立体グリッドに分けることを含み得る。方法は、立体グリッド内のユーザの第１の場所を決定することも含み得る。方法は、３Ｄボリューム内のアプリケーションの第２の場所を決定することをさらに含み得る。方法は、３Ｄボリューム内のユーザとアプリケーションとの間の距離を計算することも含み得る。方法は、加えて、少なくとも部分的にユーザとアプリケーションとの間の計算された距離に基づいて、アプリケーションの状態を修正することを含み得る。
【００１６】
別の実施形態は、複合現実システムにおいて仮想コンテンツのアプリケーション状態を管理する方法を対象とし、方法は、立体グリッド内の１つ以上のアプリケーションの空間位置を記録することであって、１つ以上のアプリケーションは、１つ以上のそれぞれのプリズムの内側に表示されるコンテンツを提供し、立体グリッドは、ｘ、ｙ、およびｚ軸における物理的環境の大まかな表現に対応する、ことと、セル内に位置するアプリケーションを備えた立体グリッドのセルを識別することであって、セルの幅は、アクティブゾーンの半径以上である、ことと、複合現実デバイスを使用するユーザがセル内で移動するとき、セルおよび近傍セル内の各アプリケーションの既知の位置の距離を決定することと、少なくとも部分的にセルおよび近傍セル内の複合現実デバイスと各アプリケーションとの間の距離に基づいて、アプリケーションの状態を修正することとを含む。
【００１７】
１つ以上の実施形態において、アクティブゾーンの半径は、複合現実デバイスを使用するユーザの周囲の円形／球状エリアを定義し、ユーザは、円形／球体の中心に存在し得る。いくつかの実施形態において、アプリケーションの状態を修正することは、少なくとも部分的にアプリケーションが別のアプリケーションによって塞がれているかどうかに基づき得る。いくつかの実施形態において、アプリケーションの状態を修正することは、少なくとも部分的にユーザの頭部姿勢に基づく。ユーザの頭部姿勢は、ユーザの頭部の場所および／または向きの測定値である。頭部姿勢は、ユーザの動的に変化する頭部場所および向きに合致するようにシーンをレンダリングし、仮想／拡張／複合空間内における増加した没入感を提供するために使用されることができる。いくつかの実施形態において、頭部姿勢は、少なくとも部分的に頭部搭載型ディスプレイシステムまたはユーザの頭部上に搭載される慣性測定ユニットによって決定され得るが、他の好適な方法も、使用され得る。セル内の各アプリケーションの既知の位置の距離は、複合現実デバイスを使用するユーザがその中に存在するセルおよび近傍セルに関してのみ決定され得る。
【００１８】
１つ以上の実施形態において、バッファゾーンがアクティブゾーンの外部の周囲に存在し得、バッファゾーンは、アプリケーションの状態に対する断続な変化または高速変化を防止する。
【００１９】
別の実施形態は、複合現実システムにおいて、アプリケーションを仮想コンテンツを表示するためのランチャメニューから立ち上げる方法を対象とし、方法は、アプリケーションを開始するための要求を受信することと、ユニバースアプリケーションによって、仮想コンテンツを表示および管理するためのプリズムを作成することであって、プリズムは、アプリケーションが仮想コンテンツをレンダリングするための境界を有する立体ディスプレイ空間である、ことと、プリズムによって、ライフサイクルサービスを通して、アプリケーションを開始することと、プリズムによって、パッケージマネージャサービスを通して、アプリケーションの一意の識別子（ＵＩＤ）を決定することと、アプリケーションによって、リスナをユニバースアプリケーションに登録することと、ユニバースアプリケーションによって、アプリケーションのＵＩＤを決定することと、ユニバースアプリケーションによって、リスナのプリズムに関連付けることと、ユニバースアプリケーションによって、アプリケーションのリスナを使用して、プリズムをアプリケーションに割り当てることと、プリズムを複合現実システムの３Ｄ表示可能空間の一部内に設置することとを含む。
【００２０】
いくつかの実施形態は、拡張現実環境においてアプリケーションを開き、それを設置する方法を対象とし、方法は、ユーザから、コンテンツへの関心を示す第１のユーザ入力を受信することを含み得る。方法は、アプリケーションを立ち上げ、コンテンツを生成することも含み得る。方法は、３Ｄディスプレイボリューム管理ユニットのミニディスプレイボリュームを作成することをさらに含み得、ページプレビューが、ミニディスプレイボリューム内に表示され、ミニディスプレイボリューム管理ユニットは、アプリケーションの立ち上げと同時に作成される。方法は、ミニディスプレイボリュームの移動を示す第２のユーザ入力を受信することをさらに含み得る。方法は、拡張現実環境におけるある場所におけるミニディスプレイボリュームの設置を示す第３のユーザ入力を受信することと、ミニディスプレイボリュームの代わりに３Ｄディスプレイボリューム管理ユニットを場所において拡張させることとも含み得、３Ｄディスプレイボリューム管理ユニットは、３Ｄディスプレイボリューム管理ユニット内に完全にロードされたコンテンツを表示する。
【００２１】
１つ以上の実施形態において、第１のユーザ入力は、ウェブページ上のリンクの上でのカーソル移動であり得、第２のユーザ入力は、リンクの選択およびミニディスプレイボリュームの移動である。ミニディスプレイボリュームは、３Ｄディスプレイボリューム管理ユニットの初期デフォルトサイズであり得る。コンテンツは、ユーザがミニディスプレイボリュームを移動および設置する間にミニディスプレイボリュームの中にロードされ得る。場所は、拡張現実環境におけるオブジェクトに固定され得、オブジェクトは、ユーザである。
【００２２】
いくつかの実施形態は、仮想コンテンツを管理する方法を対象とし得、方法は、コンテンツをコンテンツ生成アプリケーションから受信することを含み得る。方法は、ユニバースアプリケーションによって、コンテンツを３Ｄ空間環境において表示することも含み得る。方法は、ユニバースアプリケーションによって、３Ｄ空間環境内のコンテンツの表示を絶えず管理することをさらに含み得る。
【００２３】
いくつかの実施形態は、シーンに関するシーングラフにアクセスすることを含む方法を対象とし得、シーングラフは、１つ以上の変換ツリーを備え、各ツリーは、複数のノードを備えている。方法は、１つ以上の変換ツリー内の複数のノードからの１つ以上のノードにタグを追加することも含み得、タグ付けされた１つ以上のノードは、変換グループを形成し、タグ付けされた１つ以上のノードは、第１のタグ付けされたノードおよび第２のタグ付けされたノードを備えている。方法は、第１のタグ付けされたノードを移動させることをさらに含み得、第１のタグ付けされたノードを移動させることは、第２のタグ付けされたノードが移動することを引き起こす。
【００２４】
別の実施形態は、仮想コンテンツを３Ｄ共有空間において表示する方法を対象とし、方法は、第１のアプリケーションによって、仮想コンテンツを３Ｄ共有空間において生成することと、第２のアプリケーションによって、第１のアプリケーションによって生成された仮想コンテンツを表示することとを含み得、第１のアプリケーションと第２のアプリケーションとは、異なるアプリケーションである。
【００２５】
いくつかの実施形態は、アプリケーションによるディスプレイカスタマイズの構成のための事前に承認されたオプションのリストから普遍的特徴およびアプリケーション選択型特徴をプリズムに割り当てる方法を対象とし得る。別の実施形態は、仮想コンテンツを１つ以上のプリズムの中に表示する方法を対象とし、１つ以上のプリズムは、互いに重複しない。別の実施形態は、少なくとも部分的にユーザに対するプリズムの相対的位置および場所に基づいて、プリズムの状態を変化させるための方法を対象とする。別の実施形態は、アプリケーションにおけるコンテンツ作成を管理し、別個のアプリケーションにおけるコンテンツ表示を管理する方法を対象とする。別の実施形態は、コンテンツをプリズムの中に提供するであろうアプリケーションを開き、同時に、プリズムを複合現実環境に設置する方法を対象とする。
【００２６】
いくつかの実施形態は、場所、向き、および範囲データを仮想コンテンツをプリズム内に表示するためのプリズムに割り当てる方法を対象とし得、仮想コンテンツは、３Ｄ仮想コンテンツである。
【００２７】
１つ以上の実施形態において、場所は、複合現実環境におけるプリズムの定着位置の座標である。範囲データは、プリズムのサイズを定義する。
【００２８】
いくつかの実施形態は、ランチャアプリケーションを複合現実環境内の実世界オブジェクトにピン固定する方法を対象とし得る。
【００２９】
１つ以上の実施形態において、ピン固定式ランチャアプリケーションは、プリズム内のアプリケーションのコンテンツをピン固定式ランチャアプリケーションと同じ場所に立ち上げる。
【００３０】
いくつかの実施形態は、挙動タイプを各プリズムに割り当てる方法を対象とし得、挙動タイプは、世界固定、ビルボード表示、エッジビルボード表示、追従頭部固定、外部センサに基づく追従、またはフェーディング（下でより詳細に説明される）のうちの少なくとも１つを備える。いくつかの実施形態は、ランチャアプリケーションの設置された場所に特定の最も使用されるコンテンツを識別する方法を対象とする。いくつかの実施形態は、設置式ランチャアプリケーションによってお気に入りアプリケーションを表示する方法を対象とし、お気に入りアプリケーションは、少なくとも部分的に設置式ランチャの場所に対する文脈に基づく。
【００３１】
本開示の追加のおよび他の目的、特徴、ならびに利点は、発明を実施するための形態、図面、および請求項に説明される。
【図面の簡単な説明】
【００３２】
図面は、本開示の好ましい実施形態の設計および有用性を図示し、類似要素は、共通参照番号によって参照される。本開示の上記および他の利点ならびに目的が、取得される方法をより深く理解するために、上で簡単に説明される本開示のより具体的説明が、付随の図面に図示されたその具体的実施形態を参照することによって与えられるであろう。これらの図面は、本開示の典型的実施形態のみを描写し、したがって、その範囲の限定と見なされないことを理解した上で、本開示は、付随の図面の使用を通して、追加の特異性および詳細とともに説明および解説されるであろう。
【００３３】
図面は、同様の参照番号を使用して、同様の要素を識別する。「１２０ａ」等の参照番号後の文字は、文章がその特定の参照番号を有する要素を具体的に指すことを示す。「１２０」等の後続文字を伴わない文章内の参照番号は、その参照番号を持つ図面内の要素のいずれかまたは全てを指す（例えば、文章内の「１２０」は、図面内の参照番号「１２０ａ」および／または「１２０ｂ」を指す）。
【００３４】
【図１】図１は、いくつかの実施形態による例示的ユーザの物理的環境および複合現実システムにおいて仮想コンテンツを管理および表示するためのシステムアーキテクチャを示す。
【００３５】
【図２】図２は、いくつかの実施形態による複合現実システムにおいて仮想コンテンツを管理および表示するためのシステムアーキテクチャを示す。
【００３６】
【図３】図３は、いくつかの実施形態によるプリズム／境界ボリュームを示す。
【００３７】
【図４】図４は、いくつかの実施形態によるアプリケーションを立ち上げ、仮想コンテンツを表示するためのランチャメニューを示す。
【００３８】
【図５】図５Ａ−５Ｂは、いくつかの実施形態によるパネルカルーセル変化を示す。
【００３９】
【図６】図６は、いくつかの実施形態による複合現実システムを開始するためのアプローチのためのフローチャートを示す。
【００４０】
【図７】図７は、いくつかの実施形態による仮想コンテンツを複合現実環境において表示するためのアプローチのためのフローチャートを示す。
【００４１】
【図８】図８は、いくつかの実施形態によるアプリケーション状態を管理するための略図である。
【００４２】
【図９】図９は、いくつかの実施形態によるユーザ場所に対するアプリケーション状態を管理するためのフローチャートを示す。
【００４３】
【図１０Ａ】図１０Ａは、いくつかの実施形態によるシーングラフのツリーノードを図示する。
【００４４】
【図１０Ｂ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｃ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｄ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｅ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｆ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｇ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｈ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｉ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｊ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｋ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｌ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｍ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｎ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｏ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｐ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｑ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｒ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｓ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｔ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｕ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｖ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｗ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｘ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｙ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０Ｚ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【図１０ＡＡ】図１０Ｂ−１０ＡＡは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
【００４５】
【図１１】図１１は、いくつかの実施形態による設置式ランチャの図を示す。
【００４６】
【図１２】図１２は、いくつかの実施形態によるランチャがアイドル／スリープ状態にある間に表示され得るコンテンツのタイプを示す。
【００４７】
【図１３】図１３は、いくつかの実施形態による二次ＵＩボリュームを示す。
【００４８】
【図１４】図１４は、いくつかの実施形態による身体動態の例を示す。
【００４９】
【図１５】図１５は、いくつかの実施形態による異なるタイプの身体動態を示す。
【００５０】
【図１６】図１６は、いくつかの実施形態による同時にアプリケーションを立ち上げ、複合現実環境内に設置するためのフローチャートを示す。
【００５１】
【図１７】図１７は、本開示の実施形態のうちの１つ以上を実装するために好適な例証的コンピューティングシステム１４００のブロック図である。
【発明を実施するための形態】
【００５２】
本開示は、複合現実システムにおいて仮想コンテンツを管理および表示することを対象とする。複数のアプリケーションが、互いに独立して、複合現実システムにおいて仮想コンテンツを管理することおよび表示することを可能にする代わりに、本開示の実施形態は、プリズムと呼ばれる３Ｄウィンドウを使用して、複合現実システムにおいて表示および管理されるべき仮想コンテンツ（例えば、方法および場所）を管理するユニバースアプリケーションを開示する。
【００５３】
本開示は、本開示のいくつかの実施形態が実践され得る例証的複合現実システムの説明を提供し、その後、複合現実システムにおいて仮想コンテンツを管理および表示するためのプロセスおよび機構の１つ以上の実施形態の説明が続く。
【００５４】
続く説明は、例証的複合現実システムに関し、本開示は、それを用いて実践され得る。しかしながら、本開示は、他のタイプのＡＲおよび仮想現実（ＶＲ）システムにおける用途にも適しており、したがって、本開示は、本明細書に開示される例証的システムのみに限定されないことを理解されたい。
【００５５】
図１は、例示的ユーザ物理的環境および複合現実システムにおいて仮想コンテンツを管理および表示するためのシステムアーキテクチャを示す。代表的環境１００は、頭部搭載型システム１６０を通してユーザ１０３によって視認されるようなユーザのランドスケープ１１０を含む。ユーザのランドスケープ１１０は、世界の３Ｄビューであり、ユーザ設置コンテンツが、実世界の上に合成され得る。代表的環境１００は、ネットワーク（図示せず）に動作可能に結合されるプロセッサ１７０を介して、ユニバースアプリケーション１３０にアクセスすることをさらに含む。プロセッサ１７０は、頭部搭載型システム１６０と別個の隔離されたコンポーネントとして示されるが、代替実施形態において、プロセッサ１７０は、頭部搭載型システム１６０の１つ以上のコンポーネントと統合され得、および／または、例えば、コンピューティングネットワーク（図示せず）および外部記憶デバイス１５０にアクセスするためのネットワーク等の代表的環境１００内の他のシステムコンポーネントの中に統合され得る。いくつかの実施形態において、プロセッサ１７０は、ネットワークに接続されないこともある。プロセッサ１７０は、頭部搭載型システム１６０、ローカル記憶デバイス１３７、アプリケーション１４０、コンピューティングネットワーク、および／または外部記憶デバイス１５０から受信されたビデオ、オーディオ、および／または他のデータ（例えば、深度カメラデータ）等の情報を受信および処理するためのソフトウェア（例えば、ユニバースアプリケーション１３０）で構成され得る。
【００５６】
ユニバースアプリケーション１３０は、３Ｄウィンドウマネージャであり得、それは、例えば、デスクトップコンピュータのディスプレイ画面上に表示される２Ｄウィンドウを管理するためのデスクトップコンピュータ上で起動する２Ｄウィンドウマネージャに類似する。しかしながら、ユニバースアプリケーション１３０（以降、「ユニバース」と称され得る）は、３Ｄ空間環境における仮想コンテンツ１１５の作成、設置、および表示のみならず、ユーザのランドスケープ１１０において表示される複数の仮想コンテンツ１１５間の相互作用も管理する。アプリケーション１４０からの仮想コンテンツ１１５は、以降、プリズム１１３と称され得る有界のボリュームおよび／または３Ｄウィンドウ等の１つ以上の３Ｄウィンドウディスプレイ管理ユニットの内側において、ユーザ１０３に提示される。
【００５７】
有界のボリューム／３Ｄウィンドウ／プリズム１１３は、空間内に位置付けられ、向けられ得る空間の長方形、立方体、円筒形、または任意の他の形状ボリュームであり得る。プリズム１１３は、境界を有する立体ディスプレイ空間であり得、コンテンツ（例えば、仮想コンテンツ）は、その中にレンダリング／表示され、境界は、表示されない。いくつかの実施形態において、境界は、表示され得る。プリズム１１３は、標準的基礎レベルの相互作用、および、アプリケーションのコンテンツおよびその設置の制御を提示し得る。プリズム１１３は、マルチアプリケーションシーングラフのサブツリーを表し得、それは、ユニバースの内側に内蔵され得るか、または、ユニバースの外部であるが、ユニバースによってアクセスされ得る。シーングラフは、ベクトルベースのグラフィック、編集アプリケーション、および現代のゲーム用ソフトウェアによって一般に使用される一般的データ構造であり、それは、グラフィカルシーンの論理、および多くの場合（必ずしもではないが）、空間表現を配列する。シーングラフは、コンテンツが、位置付けられ、その構造内で互いに対して変換される方法を定義するデータ構造と見なされ得る。アプリケーション１４０は、コンテンツを設置するためのプリズム１１３のインスタンスを与えられる。アプリケーションは、相対的設置アルゴリズムおよび恣意的変換を使用して、２Ｄ／３Ｄコンテンツをプリズム１１３内にレンダリングし得るが、ユニバースは、依然として、コンテンツ抽出等、総合的相互作用パターンを最終的に担い得る。複数のアプリケーションが、プリズム１１３を分離するプロセス境界を有するプリズム１１３を介して、ユニバースにレンダリングし得る。アプリケーションプロセスあたりｎ数の有界のボリューム／プリズム１１３が存在し得るが、それは、明示的に、各アプリケーションのために１つのみのプロセスが有界のボリューム／プリズム１１３毎に起動し得るｎ：１関係であるが、各々がそれら自身の有界のボリューム／プリズム１１３を伴って起動するｍ数のプロセスが存在し得る。
【００５８】
ユニバースは、２Ｄおよび／または３Ｄコンテンツのためのプリズム／分散型シーングラフアプローチを使用して動作する。ユニバースのシーングラフの一部は、レンダリングするための各アプリケーションのためにとって置かれる。アプリケーション、例えば、ランチャメニュー、ランドスケープ、または身体中心アプリケーションゾーン（全て下でより詳細に説明される）との各相互作用は、マルチアプリケーションシーングラフを通して行われ得る。各アプリケーションは、シーングラフのサブツリーを表す１〜ｎ個の直角プリズムを配分される。プリズムは、クライアント側アプリケーションによって配分されず、代わりに、例えば、ユーザが、コントローラ上のボタンをクリックすることによって、新しいアプリケーションをランドスケープ内に開くとき、ユニバースの内側のユーザの相互作用を通して作成される。いくつかの実施形態において、アプリケーションは、プリズムをユニバースから要求し得るが、要求は、否認され得る。いくつかの実施形態において、アプリケーションが、新しいプリズムを要求し、許可される場合、アプリケーションは、新しいプリズムをその他のプリズムのうちの１つに対して変換することのみ行い得る。
【００５９】
ユニバースは、アプリケーション１４０からの仮想コンテンツ１１５をプリズム１１３と呼ばれるオブジェクトに入れる。各アプリケーションプロセスまたはインスタンスは、その仮想コンテンツをそれ自身の個々のプリズム１１３またはプリズムの組の中にレンダリングし得る。ユニバースは、プリズム１１３が表示される（時として、ランドスケープと呼ばれる）世界空間を管理する。いくつかの実施形態において、ユニバースは、アプリケーションを壁および表面に取り付けること、プリズムを空間内の恣意的場所に設置すること、それらを複合現実システムの世界データベースに登録すること、および／または、複合現実システムの複数のユーザ間でのコンテンツの共有を制御することを行うための能力を提供する。
【００６０】
いくつかの実施形態において、プリズム１１３の目的は、挙動およびコンテンツのレンダリングおよび表示の制御を提供することである。ウィンドウが、２Ｄウィンドウ内の２Ｄコンテンツの場所、メニュー構造、および表示を定義するために使用され得る２Ｄディスプレイと同様、３Ｄ仮想ディスプレイにおいて、プリズムは、複合現実システム（例えば、ユニバース）が、例えば、コンテンツ場所、３Ｄウィンドウ挙動、および／またはメニュー構造に関連する制御を３Ｄコンテンツの表示の回りに包むことを可能にする。例えば、制御は、少なくとも、仮想コンテンツをユーザのランドスケープ１１０内の特定の場所に設置すること、仮想コンテンツをランドスケープ１１０から除去すること、仮想コンテンツをコピーすること、および／または、コピーを異なる場所に設置すること等を含み得る。いくつかの実施形態において、プリズムは、ユーザによって、かつユーザのみによって、作成および破棄され得る。これは、提供されるインターフェースの乱用を制御することに役立ち、ユーザがユーザのコンテンツの制御を維持することに役立つために明示的に行われ得る。加えて、いくつかの実施形態において、アプリケーション１４０は、それらのボリュームがランドスケープ内に設置される場所を把握せず、それらが存在することのみを把握する。いくつかの実施形態において、アプリケーションは、１つ以上のプリズムを要求し得、要求は、許可されることも、許可されないこともある。新しいプリズムが、作成された後、ユーザは、位置を変化させ得、および／または、アプリケーションは、新しいプリズムをアプリケーションに関連付けられた現在の既存のプリズムに対して自動的に位置付け得る。いくつかの実施形態において、ユニバースサービスを利用して、３Ｄコンテンツ（例えば、合成された３Ｄコンテンツ）をユニバースプロセスの中にレンダリングする各アプリケーション１４０は、最初に、リスナをユニバースに登録することを要求され得る。このリスナはユーザ移動およびそれらのプリズムとのユーザ相互作用に基づいて、レンダリングプリズムの作成および破棄を、アプリケーション１４０に知らせるために使用され得る。リスナは、メッセージをプロセス間通信システムから受信するインターフェースオブジェクトである。例えば、Ａｎｄｒｏｉｄオペレーティングシステムにおいて、リスナは、Ａｎｄｒｏｉｄ  Ｂｉｎｄｅｒインターフェースを通してメッセージを受信するオブジェクトである。しかしながら、任意のＩＰＣシステムが、Ｂｉｎｄｅｒが常時使用されるわけではないように、使用され得る。
【００６１】
いくつかの実施形態において、プリズムは、以下の相互作用のうちから作成され得る：（１）ユーザが、コンテンツを抽出可能ノード（下でさらに開示される）から抽出したこと、（２）ユーザが、アプリケーションをランチャから開始したこと、（３）ユーザが、ユーザが見るための許可を有するアプリケーションの設置されたインスタンスを含む近傍のパス可能世界マップタイルをダウンロードしたこと、（４）ユーザが、所与のアプリケーションがそのためのコンテンツをレンダリングしなければならないことをパス可能世界オブジェクト認識装置インフラストラクチャが検出したオブジェクトを含む近傍のパス可能世界マップタイルをダウンロードしたこと、および／または、（５）ユーザが、異なるアプリケーションにおいてハンドリングされなければならないディスパッチを別のアプリケーションからトリガしたこと。いくつかの実施形態において、パス可能世界モデルは、ユーザが、ユーザの世界の断片（例えば、周囲環境、相互作用等）を別のユーザに効果的にパスすることを可能にする。
【００６２】
抽出可能コンテンツは、プリズムの内側のコンテンツ（限定ではないが、アイコン、３Ｄアイコン、テキストディスプレイ内の単語、および／または画像を含む）であり、それは、入力デバイスを使用して、プリズムから外に引き出され、ランドスケープ内に設置され得る。例えば、プリズムは、販売のためのランニング用シューズを示すウェブページを表示することもある。ランニング用シューズを抽出するために、シューズは、入力デバイスを用いて、選択され、「引き出される」ことができる。新しいプリズムが、シューズを表す３Ｄモデルを用いて作成され、そのプリズムは、元々のリズムから外に、ユーザに向かって移動するであろう。任意の他のプリズムのように、ユーザは、入力デバイスを使用して、シューズを含む新しいプリズムをランドスケープの３Ｄ空間内で移動、拡大、収縮、または回転させ得る。抽出可能ノードは、抽出され得るものとしてタグ付けされている、プリズムのシーングラフにおけるノードである。ユニバースにおいて、コンテンツを抽出することは、抽出可能ノードを選択し、入力デバイスを使用して、コンテンツをプリズムから外に引き出すことを意味する。この引き出しを開始するための入力は、６自由度ポインティングデバイスを抽出可能コンテンツに照準し、入力デバイス上のトリガを引くことであり得る。
【００６３】
各ユーザのそれぞれの個々の複合現実システム（例えば、複合現実デバイス）は、ユーザが環境を通過するとき、またはその中に存在するとき、情報を捕捉し、それは、パス可能世界モデルを生産するための複合現実システムプロセスである。パス可能世界に関するさらなる詳細は、２０１４年３月１１日に出願され、「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＡＵＧＵＭＥＮＴＥＤ  ＡＮＤ  ＶＩＲＴＵＡＬ  ＲＥＡＬＩＴＹ」と題された、米国特許出願第１４／２０５，１２６号（参照することによって前述に組み込まれている）に説明される。個々の複合現実システムは、クラウドと称された共通または共有データ集合にパス可能世界モデルを通信またはパスし得る。個々の複合現実システムは、直接またはクラウドを介して、パス可能世界モデルを他のユーザに通信またはパスし得る。パス可能世界モデルは、少なくともユーザの視野を本質的に包含する情報を効率的に通信またはパスする能力を提供する。一実施形態において、システムは、パス可能世界を作成するために、姿勢および向き情報のみならず、上で説明される収集された３Ｄ点も使用する。いくつかの実施形態において、パス可能世界モデルは、ユーザがコンテンツ（例えば、仮想および／または物理的コンテンツ）を実世界と統合する能力を可能にする。パス可能世界システムは、１つ以上の複合現実システムまたは複合現実ユーザデバイスを含み得、それらは、クラウドネットワーク、パス可能世界モデル、オブジェクト認識装置の組、およびデータベース（例えば、外部データベース１５０）に接続することが可能である。パス可能世界モデルは、情報を複合現実ユーザデバイスから受信するように構成され、データをネットワークを通してそれらに伝送するようにも構成され得る。例えば、ユーザからの入力に基づいて、パス可能世界の一部は、１人のユーザから別のユーザにパスされ得る。パス可能世界モデルは、画像の集合、点、および他の情報（例えば、実世界情報）と見なされ得、それに基づいて、複合現実システムは、仮想世界をクラウド上に組み立て、更新し、および構築し、仮想世界の一部を種々のユーザに効果的にパスすることが可能である。例えば、複合現実ユーザデバイスから収集された実世界点の組が、パス可能世界モデルにおいて収集され得る。種々のオブジェクト認識装置が、パス可能世界モデルを通してクローリングし、オブジェクト、タグ画像等を認識し、意味情報をオブジェクトに取り付け得る。パス可能世界モデルは、データベースを使用して、その世界の知識を構築し、意味情報を取り付け、パス可能世界に関連付けられたデータを記憶し得る。
【００６４】
ユーザに可視であるが、その制御アプリケーションが現在インストールされていないプリズムの場合、ユニバースは、そのアプリケーションのための一時的プレースホルダをレンダリングし得、一時的プレースホルダは、相互作用されると、そのアプリケーションのためのアプリケーションストアページにユーザを向け直す。
【００６５】
いくつかの実施形態において、プリズムは、類似相互作用で破棄され得る：（１）ユーザが、パス可能世界マップタイルから、アプリケーションの設置されたインスタンスが揮発性メモリからアンロードされる（すなわち、除去される）まで十分に遠ざかったこと、（２）ユーザが、アプリケーションの設置されたインスタンスを破棄したこと、および／または、（３）アプリケーションは、プリズムが閉じられることを要求したこと。
【００６６】
いくつかの実施形態において、アプリケーションのためのプリズムが、可視ではない、および／または、ロードされていない場合、それらのプリズムに関連付けられたプロセスは、一時停止または終了され得る。そのアプリケーションのための設置されたプリズムが再び可視となると、プロセスは、再開され得る。プリズムも、隠され得るが、いくつかの実施形態において、それは、ユニバースおよびユーザの要請時にのみ発生し得る。いくつかの実施形態において、複数のプリズムが、同一の正確な場所に設置され得る。そのような実施形態において、ユニバースは、設置されたプリズムの１つのインスタンスのみを一度に１つの場所に示し、ユーザがその場所における次の可視要素（例えば、プリズム）に「スワイプ」する等のユーザ相互作用が検出されるまで、プリズム（およびその関連付けられたコンテンツ）の可視性を隠すことによって、レンダリングを管理し得る。
【００６７】
いくつかの実施形態において、各プリズム１１３は、メッシュ、テクスチャ、動画等の共有リソースのために、プリズム１１３の属性にアクセスし、シーングラフサブツリーにコンテンツを登録する方法を用いて、ボリュームリスナインターフェースを介して、アプリケーション１４０にエクスポーズされ得る。
【００６８】
いくつかの実施形態において、アプリケーション１４０は、所与のプリズム１１３が３Ｄ空間内に設置される場所を把握していないので、ボリュームリスナインターフェースは、例えば、手中心、ランドスケープ内に固定、身体中心等、所与のプリズムがユニバース内に存在する場所を定義することに役立つヒントの組へアクセッサメソッドを提供し得る。これらの属性は、加えて、プリズムの予期される挙動を規定し、ユーザ、アプリケーション１４０、またはユニバースのいずれかによって、限定された方式で制御され得る。所与のプリズムは、アプリケーションが所有する別のプリズムに対して位置付けられることができる。アプリケーションは、そのアプリケーションからのプリズムが設置されている間、プリズムが一緒にスナップすべきこと（その境界ボリュームの両側が接すること）を規定することができる。加えて、プリズムは、キー／値データ記憶のためのＡＰＩを提供し得る。これらのキー／値ペアのうちのいくつかは、権限が付与されたアプリケーションによってのみ書込可能である。
【００６９】
いくつかの実施形態において、アプリケーション１４０は、ユーザのランドスケープ１１０においてユーザ１０３に表示されるべきコンテンツを提供するクライアントソフトウェアアプリケーションである。例えば、アプリケーション１４０は、ビデオストリーミングアプリケーションであり得、ビデオデータは、２Ｄ平面表面上に表示されるようにユーザにストリーミングされ得る。別の例として、アプリケーション１４０は、Ｈａｌｃｙｏｎアプリケーションであり得、それは、ユーザのために穏やかで幸せかつ安らかであった過去の期間を示し得る物理的オブジェクトの３Ｄ結像を提供する。アプリケーション１４０は、ユーザがユーザのランドスケープ１１０に含むことを欲し得るコンテンツを提供する。ユニバースは、プリズム１１３を介して、アプリケーション１４０によって生成されたコンテンツの設置および管理を管理する。
【００７０】
非没入型のアプリケーションが、ユーザのランドスケープ１１０において実行されると／立ち上げられると、そのコンテンツ（例えば、仮想コンテンツ）は、プリズム１１３の内側にレンダリングされる。非没入型のアプリケーションは、共有３Ｄ環境においてコンテンツを１つ以上の他のアプリケーションと同時に起動することおよび／または表示することが可能であるアプリケーションであり得る。仮想コンテンツは、プリズムに含まれ得るが、ユーザは、依然として、例えば、オブジェクトの上でホーバーリングすること、それをクリックすること等、仮想コンテンツと相互作用し得る。プリズム１１３は、境界アプリケーション１４０の表示されるコンテンツの境界を限り得、したがって、異なるアプリケーション１４０は、互いに、またはユーザのランドスケープ１１０における他のオブジェクトに干渉しない。プリズム１１３は、ユーザの視野外またはユーザからあまりに遠く離れているアプリケーション１４０からの仮想コンテンツを中断、一時停止、および／または最小化するために有用な抽象化も提供し得る。
【００７１】
プリズム１１３は、ユーザのランドスケープ１１０内の種々のオブジェクトに定着させられ／取り付けられ／ピン固定され得、それは、別のプリズムにスナップすることまたは定着することを含む。例えば、仮想コンテンツ１１５（例えば、ビデオストリーミングアプリケーションからのビデオ１１５ａ）を表示するプリズム１１３ａは、垂直壁１１７ａに定着させられ得る。別の例として、Ｈａｌｃｙｏｎアプリケーションからの３Ｄツリー１１５ｂを表示するプリズム１１３ｂは、図１において、テーブル１１７ｂに定着させられるように示される。さらに、プリズム１１３は、ユーザ１０３に対して定着させられ得（例えば、身体中心）、仮想コンテンツ１１５を表示するプリズム１１３は、ユーザの身体が移動すると、プリズム１１３がユーザの身体の移動に対して移動するように、ユーザの身体に定着させられ得る。身体中心コンテンツは、ユーザに追従し、ユーザと位置的に一致したままである平面、メッシュ等のアプリケーションコンテンツであり得る。例えば、ユーザに追従するが、ランドスケープ１１０ではなく、ユーザの背骨に対して存在する小ダイアログボックス。加えて、プリズム１１３は、ユーザのランドスケープ１１０内に表示された仮想ディスプレイモニタ等の仮想オブジェクトに定着させられ得る。プリズム１１３は、下で開示された異なる方法において定着させられ得る。
【００７２】
ユニバースは、ユーザのためのプリズム１１３の属性および特性を記憶するためのローカルデータベース１３７を含み得る。記憶されたプリズム情報は、ユーザのランドスケープ１１０内でユーザによってアクティブにされたプリズムを含み得る。ローカルデータベース１３７は、クラウドまたは外部記憶設備において常駐し得る外部データベース１５０に動作可能に結合され得る。外部データベース１５０は、ユーザおよび他のユーザの複合現実環境についての情報を維持する持続的データベースであり得る。
【００７３】
例えば、ユーザが、新しいアプリケーションを立ち上げ、仮想コンテンツをユーザの物理的環境において表示すると、ローカルデータベース１３７は、ユニバースによって作成され、特定の場所に設置されたプリズムに対応する情報を記憶し得、アプリケーション１４０は、コンテンツをユーザのランドスケープ１１０内に表示されるようにプリズム１１３の中にレンダリングし得る。ローカルデータベース１３７に記憶されたプリズム１１３、仮想コンテンツ１１５、およびアプリケーション１４０に対応する情報は、持続的記憶のために、外部データベース１５０と同期させられ得る。
【００７４】
いくつかの実施形態において、持続的記憶は、複合現実システムがオフにされると、ローカルデータベース１３７に記憶されるデータが、消去され、削除され、または非持続性となり得るので、重要であり得る。したがって、ユーザが、複合現実システムをオンにすると、ユニバースは、複合現実システムがオフにされることに先立って、外部データベース１５０と同期し、ユーザ１０３およびユーザのランドスケープ１１０に対応するローカルデータベース１３７のインスタンスを読み出し得る。ローカルデータベース１３７は、外部データベース１５０のインスタンスであり得、ローカルデータベース１３７のインスタンスは、ユーザ１０３およびユーザの現在の環境に関連する情報を含む。外部データベース１５０は、加えて、他のユーザ、複数のユーザ、経時的に同一ユーザ、および／または他の環境のローカルデータベースのインスタンスを記憶し得る。外部データベース１５０は、仮想コンテンツを複合現実システムの複数のユーザ間で管理および共有するために使用される情報を含み得る一方、ローカルデータベース１３７は、ユーザ１０３に対応する情報を記憶し、維持する。
【００７５】
ユニバースは、アプリケーション１４０が仮想コンテンツ１１５をユーザのランドスケープ１１０上にレンダリングする必要がある度、アプリケーション１４０のためのプリズム１１３を作成し得る。いくつかの実施形態において、ユニバースによって作成されたプリズム１１３は、アプリケーション１４０が、表示のために、仮想コンテンツをレンダリングすることに焦点を当てることを可能にする一方、ユニバースは、アプリケーション１４０によってプリズムの境界内に表示される仮想コンテンツ１１５を有するプリズム１１３を作成し、その設置および表示を管理することに焦点を当てる。
【００７６】
ユーザのランドスケープ１１０内に表示されたアプリケーション１４０によってレンダリングされた各仮想コンテンツ１１５は、単一のプリズム１１３内で表示され得る。例えば、アプリケーション１４０が、２つの仮想コンテンツ（例えば、１１５ａおよび１１５ｂ）をユーザのランドスケープ１１０内に表示されるようにレンダリングする必要がある場合、アプリケーション１４０は、２つの仮想コンテンツ１１５ａおよび１１５ｂをレンダリングし得る。仮想コンテンツ１１５は、レンダリングされた仮想コンテンツのみを含むので、ユニバースは、仮想コンテンツ１１５ａおよび１１５ｂの各々に対応するために、それぞれ、プリズム１１３ａおよび１１３ｂを作成し得る。プリズム１１３は、仮想コンテンツ１１５の３Ｄウィンドウ管理属性および特性を含み、ユニバースが、プリズム１１３の内側の仮想コンテンツ１１５とユーザのランドスケープ１１０におけるプリズム１１３の設置および表示とを管理することを可能にし得る。
【００７７】
ユニバースは、ユーザ１０３が複合現実デバイスをオンにするとユーザ１０３に見える第１のアプリケーションであり得る。ユニバースは、少なくとも、（１）ユーザの世界ランドスケープをレンダリングすること、（２）平面アプリケーションの２Ｄウィンドウ管理および３Ｄウィンドウ（例えば、プリズム）管理、（３）アプリケーションランチャメニューを表示および実行すること、（４）ユーザが仮想コンテンツをユーザのランドスケープ１１０の中に設置することを可能にすること、および／または、（５）ユーザのランドスケープ１１０内のプリズム１１３の表示の異なる状態を管理することに関与し得る。
【００７８】
頭部搭載型システム１６０は、ユーザ１０３の眼の正面に位置付けられるディスプレイシステム（例えば、ユーザインターフェース）と、頭部搭載型システムに結合され、ユーザの外耳道に隣接して位置付けられるスピーカと、ユーザ感知システムと、環境感知システムと、プロセッサと（全て示されてない）を含む複合現実頭部搭載型システムであり得る。頭部搭載型システム１６０は、デジタル世界と相互作用し、それを体験するためのディスプレイシステム（例えば、ユーザインターフェース）をユーザ１０３に提示する。そのような相互作用は、ユーザおよびデジタル世界と、代表的環境１００とインターフェースをとる１人以上の他のユーザと、デジタルおよび物理的世界内のオブジェクトとを伴い得る。
【００７９】
ユーザインターフェースは、ユーザインターフェースを通したユーザ入力を介して、仮想コンテンツを視認すること、選択すること、位置付けること、および管理することを含み得る。ユーザインターフェースは、触覚的インターフェースデバイス、キーボード、マウス、ジョイスティック、運動捕捉コントローラ、光学追跡デバイス、オーディオ入力デバイス、スマートフォン、タブレット、または頭部搭載型システム１６０のうちの少なくとも１つまたはそれらの組み合わせであり得る。触覚的インターフェースデバイスは、人間が身体感覚および移動を通してコンピュータと相互作用することを可能にするデバイスである。触覚的は、アクションまたはプロセスをコンピューティングデバイス上で実施するための触知的フィードバックまたは他の身体感覚を包含する人間とコンピュータの相互作用技術のタイプを指す。
【００８０】
触覚的コントローラの例は、トーテム（図示せず）であり得る。いくつかの実施形態において、トーテムは、ヘッドセット１６０に対するその位置および向きを追跡するハンドヘルドコントローラである。この例において、トーテムは、ユーザが、トーテムを上または下に移動させることによって、（球状シェル上の）高度および方位角においてプリズムを移動させ得る６自由度（６ＤＯＦ）コントローラであり得る。いくつかの実施形態において、オブジェクトをより近くまたはより遠くに移動させるために、ユーザは、トーテム上のジョイスティックを使用して、プリズムを「押すこと」または「引くこと」を行い得るか、または、単に、トーテムを前方または後方に移動させ得る。これは、シェルの半径を変化させる効果を有し得る。いくつかの実施形態において、トーテム上の２つのボタンは、プリズムを拡大または収縮させ得る。いくつかの実施形態において、トーテム自体を回転させることは、プリズムを回転させ得る。他のトーテム操作および構成が、使用され得、上で説明される実施形態に限定されるべきではない。
【００８１】
ユーザ感知システムは、頭部搭載型システム１６０を装着しているユーザ１０３に関連するある特徴、特性、または情報を検出するために動作可能である１つ以上のセンサ１６２を含み得る。例えば、いくつかの実施形態において、センサ１６２は、例えば、縮瞳／散瞳、各瞳孔の角度測定／位置付け、真球度、（眼形状が経時的に変化するにつれた）眼形状、および他の解剖学的データのうちの１つ以上のもの等のユーザ１０３のリアルタイム光学特性／測定を検出することが可能なカメラまたは光学検出／走査回路を含み得る。このデータは、頭部搭載型システム１６０によってユーザの視認体験を向上させるために使用され得る情報（例えば、ユーザの視覚的焦点）を提供し得るか、または、それを計算するために使用され得る。
【００８２】
環境感知システムは、データをユーザのランドスケープ１１０から取得するための１つ以上のセンサ１６４を含み得る。センサ１６４によって検出されたオブジェクトまたは情報は、入力として、頭部搭載型システム１６０に提供され得る。いくつかの実施形態において、この入力は、仮想世界とのユーザ相互作用を表し得る。例えば、机（例えば、テーブル１８８）上の仮想キーボードを視認しているユーザ（例えば、ユーザ１０３）が、ユーザが仮想キーボード上でタイプしているかのように、その指を用いて、ジェスチャし得る。指移動の運動は、センサ１６４によって捕捉され、頭部搭載型システム１６０に入力として提供され得、入力は、仮想世界を変化させるか、または、新しい仮想オブジェクトを作成するために使用され得る。
【００８３】
センサ１６４は、例えば、概して、例えば、持続的および／または断続的に投影された赤外線構造化光を通してシーン情報を捕捉し、解釈するための外向きに面したカメラまたはスキャナを含み得る。環境感知システムは、静的オブジェクト、動的オブジェクト、人々、ジェスチャおよび種々の照明、大気および音響条件等を含む、ローカル環境からの１つ以上の要素を検出し、登録することによって、ユーザ１０３の周囲のユーザのランドスケープ１１０の１つ以上の要素をマッピングするために使用され得る。したがって、いくつかの実施形態において、環境感知システムは、ローカルコンピューティングシステム（例えば、プロセッサ１７０）に内蔵され、センサ１６４によって検出された１つ以上のオブジェクトまたは情報をデジタル的に再構築するように動作可能である画像ベースの３Ｄ再構築ソフトウェアを含み得る。
【００８４】
いくつかの実施形態において、環境感知システムは、運動捕捉データ（ジェスチャ認識を含む）、深度感知、顔認識、オブジェクト認識、固有オブジェクト特徴認識、音声／オーディオ認識および処理、音響源位置特定、雑音低減、赤外線または類似レーザ投影、ならびに、モノクロおよび／またはカラーＣＭＯＳセンサ（または他の類似センサ）、視野センサ、および種々の他の光学向上センサのうちの１つ以上を提供する。環境感知システムは、上で議論されるもの以外の他のコンポーネントを含み得ることを理解されたい。
【００８５】
上で述べられたように、プロセッサ１７０は、いくつかの実施形態において、頭部搭載型システム１６０の他のコンポーネントと統合された代表的環境１００のシステムの他のコンポーネントと統合され得るか、または、図１に示されるように、隔離されたデバイス（ウェアラブルまたはユーザ１０３から別個）であり得る。プロセッサ１７０は、物理的有線接続を通して、または、例えば、モバイルネットワーク接続（セルラー電話およびデータネットワークを含む）、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、または任意の他の無線接続プロトコル等の無線接続を通して、頭部搭載型システム１６０の種々のコンポーネントに接続され得る。プロセッサ１７０は、メモリモジュール、統合および／または追加のグラフィック処理ユニット、無線および／または有線インターネットコネクティビティ、ならびにソース（例えば、コンピューティングネットワークならびに頭部搭載型システム１６０からのユーザ感知システムおよび環境感知システム）からのデータを画像およびオーディオデータに変換することが可能なコーデックおよび／またはファームウェアを含み得、画像／ビデオおよびオーディオは、ユーザインターフェース（図示せず）を介して、ユーザ１０３に提示され得る。
【００８６】
プロセッサ１７０は、頭部搭載型システム１６０の種々のコンポーネントのためのデータ処理ならびに頭部搭載型システム１６０とユニバース、外部データベース１５０等のソフトウェアアプリケーションとの間のデータ交換をハンドリングする。例えば、プロセッサ１７０は、ユーザ１０３と、ソフトウェアアプリケーションを含むコンピューティングネットワークとの間のデータストリーミングをバッファおよび処理するために使用され、それによって、平滑で、連続し、かつ高忠実性のユーザ体験をもたらし得る。プロセッサ１７０は、プログラムコード命令の組を実行するように構成され得る。プロセッサ１７０は、プログラムコード命令の組を保持するためのメモリを含み得、その中で、プログラムコード命令の組は、仮想コンテンツを立体ディスプレイ空間内に表示することによって、仮想コンテンツを利用可能な３Ｄ表示可能空間の一部内に表示するためのプログラムコードを備え、立体ディスプレイ空間の境界は、表示されない。いくつかの実施形態において、プロセッサは、動作可能に結合された２つ以上のプロセッサであり得る。
【００８７】
いくつかの実施形態において、複合現実システムは、アプリケーションによる表示カスタマイズの構成のための事前に承認されたオプションのリストからの普遍的特徴およびアプリケーション選択型／アプリケーション特定の特徴をプリズムに割り当てるように構成され得る。例えば、普遍的特徴は、異なるアプリケーションがともに良好に相互作用することを確実にする。普遍的特徴のいくつかの例は、最大／最小サイズ、非重複プリズム（衝突挙動からの一時的重複を除外する）、プリズムの境界の外側でのコンテンツの非表示、アプリケーションがセンサまたは感知可能情報にアクセスすることを所望する場合、アプリケーションがユーザからの許可を必要とすることを含み得る。アプリケーション選択型／アプリケーション特定の特徴は、最適化されたアプリケーション体験をもたらす。アプリケーション選択型／アプリケーション特定の特徴は、最大／最小サイズ（システムからの限界内）、デフォルトサイズ（システムからの限界内）、身体動態のタイプ（例えば、下で議論された非固定／世界固定、ビルボード表示、エッジビルボード表示、追従／消極的頭部固定、外部センサに基づく追従、フェーディング）、子プリズム生成場所、子頭部姿勢ハイライト、子プリズム関係挙動、表面上挙動、独立変換制御、サイズ変更対拡大縮小、アイドル状態タイムアウト、衝突挙動、アプリケーションにアクセスするための許可／パスワード等を含み得る。別の実施形態において、複合現実システムは、仮想コンテンツを１つ以上のプリズムの中に表示するように構成され得、１つ以上のプリズムは、いくつかの実施形態において、互いに重複しない。いくつかの実施形態において、１つ以上のプリズムは、特定の相互作用を提供するために、重複し得る。いくつかの実施形態において、１つ以上のプリズムは、重複し得るが、同一アプリケーションからの他のプリズムとのみ重複する。別の実施形態において、複合現実システムは、少なくとも部分的にユーザに対するプリズムの相対的位置および場所に基づいて、プリズムの状態を変化させるように構成され得る。別の実施形態において、複合現実システムは、アプリケーションにおけるコンテンツ作成を管理し、別個のアプリケーションにおけるコンテンツ表示を管理するように構成され得る。別の実施形態において、複合現実システムは、アプリケーションを開くように構成され得、アプリケーションは、コンテンツをプリズムの中に提供し、同時に、プリズムを複合現実環境に設置するであろう。
【００８８】
いくつかの実施形態において、複合現実システムは、仮想コンテンツをプリズム内に表示するために、場所、向き、および範囲データをプリズムに割り当てるように構成され得、仮想コンテンツは、３Ｄ仮想コンテンツである。いくつかの実施形態において、複合現実システムは、ランチャアプリケーションを複合現実環境内の実世界オブジェクトにピン固定するように構成され得る。いくつかの実施形態において、複合現実システムは、挙動タイプを各プリズムに割り当てるように構成され得、挙動タイプは、世界固定、ビルボード表示、エッジビルボード表示、追従頭部固定、外部センサに基づく追従、またはフェーディング（下でより詳細に説明される）のうちの少なくとも１つを備える。いくつかの実施形態において、複合現実システムは、ランチャアプリケーションの設置された場所に特定の最も使用されるコンテンツまたはアプリケーションを識別し、その結果、例えば、最も頻繁に使用されるものから最も使用されないものにアプリケーションを並べ替えるように構成され得る。別の実施形態において、複合現実システムは、お気に入りアプリケーションを設置式ランチャアプリケーションに表示するように構成され得、お気に入りアプリケーションは、少なくとも部分的に設置式ランチャの場所に関するコンテキストに基づく。
【００８９】
図２は、いくつかの実施形態による複合現実システムにおいて仮想コンテンツを管理および表示するためのシステムアーキテクチャを示す。システム２００は、ユニバース１３０と、アプリケーション１４０と、アイコングリッドアプリケーション２６０と、ステータスバーアプリ２７０と、ソーシャルパネルアプリ２８０と、ストアパネルアプリ２９０とを含む。これらのアプリケーションは、基本レベルのアプリケーションをシステム２００上に表し得るが、しかしながら、いくつかの実施形態において、より多いまたはより少ないアプリケーションが、システム２００の一部であり得る。
【００９０】
上で図１において議論されるように、ユニバースは、従来のコンピュータデスクトップシステム等における２Ｄウィンドウを管理する２Ｄウィンドウマネージャに類似する３Ｄウィンドウ（例えば、プリズム）マネージャと見なされ得る。図２は、図１からのユニバースのさらなる詳細を提供し得る。ここで、ユニバースアプリケーション１３０は、ユニバースサーバ２０５と、ローダボリューム２１０と、二次ＵＩボリューム２２０と、ユニバースクライアント２２５と、ランチャアプリケーション２３０と、ユニバースサーバ２０５とを含み得る。ユニバースサーバ２０５は、マルチ並列処理のためのマルチスレッド式処理環境におけるユニバースの処理スレッドであり得る。
【００９１】
ローダボリューム２１０は、プレースホルダボリュームであり、それらは、ユニバースが仮想コンテンツをユーザのランドスケープ１１０内に表示するためのプリズムを作成している間、ユーザに表示される。例えば、ユーザがユーザのランドスケープ１１０内の特定の場所（例えば、ユーザのランドスケープ１１０の垂直壁上）に表示するためのアプリケーションを選択すると、ユニバースは、ユニバースがプリズムを設定し、仮想コンテンツをプリズムの中にレンダリングするためのアプリケーションを開始している間、ローダボリューム２１０をプレースホルダボリュームとしてデフォルトアイコンとともに表示し、ユニバースが表示のためのプリズムを設定中であることをユーザに示し得る。アプリケーションが、仮想コンテンツをユーザのランドスケープ内への表示のためにプリズムの中にレンダリングすることを終了すると、ローダボリューム２１０は、レンダリングされた仮想コンテンツを含む実際のプリズムと置換される。
【００９２】
いくつかの実施形態において、ユニバースが、仮想コンテンツを表示するためのアプリケーションを開始する間、ユーザ１０３は、ローダボリューム２１０を所望の異なる場所に移動させ得る。いくつかの実施形態において、ユーザは、ローダボリューム２１０を最初に選択されたローダボリューム／プリズムの場所と異なる場所に移動させ得る。ユニバースが、プリズムを作成することを終了し、アプリケーションが、仮想コンテンツをプリズムの中にレンダリングすると、ユニバースは、ユーザがローダボリューム２１０を設置する度、ローダボリューム２１０を仮想コンテンツを表示するプリズムと置換し得る。
【００９３】
二次ＵＩボリューム２２０は、プリズム１１３（例えば、その「親プリズム」）が作成されると作成され得る別のプリズムである。二次ＵＩボリューム２２０は、ユーザのために、プリズムの普遍的インターフェースを提供する。例えば、二次ＵＩボリューム２２０は、二次ＵＩボリューム２２０が、プリズムを管理する（例えば、閉じる／除去する、共有する、追従する、プリズムのコンテンツのスクリーンショットを撮影する等）ための機構を提供するので、ウィンドウドレッシングと見なされ得る。プリズムが、作成されると、プリズムがランチャの一部ではない（ランチャアプリケーションが、二次ＵＩボリュームを有していないこともある）場合、二次ＵＩボリューム２２０が、プリズムのために作成され得る。二次ＵＩボリューム２２０は、ユーザがプリズムと相互作用し、それを管理するための（閉じる／除去する、共有する、追従する、スクリーンショット等）グラフィカルユーザインターフェースアイコンを表示するための空間／ボリュームを提供する。二次ＵＩボリューム２２０は、親プリズムに関連付けられ、親プリズムとグループ化され得る。二次ＵＩボリューム２２０の寿命は、それが関連付けられる親プリズムの寿命が終了すると、終了する。
【００９４】
いくつかの実施形態において、二次ＵＩボリューム２２０は、少なくとも３つの状態を有し得る：（１）親プリズムの焦点がずれているとき、何も表示しない；（２）親プリズムの焦点が合っているとき、コンポーネントの「可視名」を表示する；および、（３）特定のユーザ相互作用（例えば、ハンドヘルドコントローラ（例えば、トーテムまたは他の好適なユーザ相互作用コントローラ）のホームボタンがある秒数にわたって保持されたこと）が検出されると、アプリケーションメニューオプションアイコンの「カルーセル」を表示し、カルーセルは、アイコンの集合を表示し、そのうちの１つは、プリズムを閉じるための大「Ｘ」アイコンであり得ること。いくつかの実施形態において、二次ＵＩボリューム２２０は、その親プリズムを介して、入力を受信する。言い換えると、親プリズムは、二次ＵＩボリューム２２０がそのカルーセルを表示しているかどうかを決定し得、表示している場合、親プリズムは、ユーザ入力を二次ＵＩに向け直す。二次ＵＩボリューム２２０のカルーセルは、下で開示される。
【００９５】
いくつかの実施形態において、ランチャは、複合現実システムのためのデフォルト「ホーム」メニューであり得る。ランチャは、コンテンツの複数のパネルをシステムステータスバーと並んで一緒にし得る。各パネルは、異なるコンテンツタイプを表し得る。アプリケーションは、ランチャから引き出され、迅速な復帰のために、ランドスケープの中にピン固定され得る。ランチャ自体も、場所毎のカスタマイズおよび／または迅速アクセスのために、ランドスケープの中に設置され得る。
【００９６】
ランチャ２３０は、新しいアプリケーションをユーザのランドスケープ１１０の中に立ち上げる能力をユーザに提供する。ランチャ２３０は、パネルと呼ばれる一連の身体中心プリズムから成るアプリケーションであり得る。パネルは、垂直および水平にスクロール可能であり得、ユーザは、例えば、スワイプ運動を用いて、パネル間で切り替え得る。いくつかの実施形態において、１つのパネル（例えば、中心パネル）が、一度に可視であり得、その２つの近傍パネルが、プレースホルダパネルとしてその側面において可視である。ユーザが、次のパネルにスワイプすると、プレースホルダパネルは、拡張し、完全パネルを示し得る。パネルは、アイコングリッドアプリケーション２６０と、ソーシャルパネル２８０と、ストアパネル２９０とを含み得る。いくつかの実施形態において、ユーザが、次のパネルにスワイプすると、パネルそれら自体は、移動または変化させられないが、代わりに、異なるパネル内のコンテンツ（例えば、アイコン）が、中心パネル（例えば、アクティブパネル）内および外に動画化され得る。さらに、アプリケーションは、下でさらに議論される、場所毎のカスタマイズのために、ランチャ２３０から引き出され、ユーザのランドスケープ１１０の中にピン固定され得る。
【００９７】
いくつかの実施形態において、アプリケーション１４０は、各アプリケーション１４０上の集中型レンダリングサービスクライアント２５０を介して、ユニバースと通信し得る。集中型レンダリングサービスクライアント２５０は、ユニバース１３０内のユニバースサーバ２０５と通信し得る。集中型レンダリングサービスクライアント２５０は、コンテンツを生成するアプリケーション１４０および他のアプリケーションが、ユーザのランドスケープ内への表示のために、ユニバースサーバ２０５を介してユニバースと通信することを可能にする集中型レンダリングシステムのクライアントサービスであり得る。
【００９８】
ユニバースサーバ２０５は、ユニバースが、ユーザのランドスケープ内に表示されるためのユニバースコンテンツを提供するアプリケーションと通信することを可能にする集中型レンダリングシステムのサービスを備え得る。いくつかの実施形態において、通信は、データをレンダリングすることより多く、例えば、入力データ、セキュリティ権限を要求すること、仮想キーボードを表示することまたは隠すことを要求すること等を備え得る。
【００９９】
いくつかの実施形態において、集中型レンダリングシステムは、複数のアプリケーションから単一ディスプレイ（例えば、複合現実システムにおけるユーザのランドスケープに）において表示されるためのグラフィカルデータを受信するためのハードウェアおよびソフトウェアリソース専用のシステムであり得る。集中型レンダリングシステムは、複数のアプリケーション１４０からのグラフィカルデータをシーングラフ等の「集中型」データ構造に組み合わせ、それは、複数のアプリケーションからのグラフィカルデータを現実的および効率的様式において反映させるシーンをディスプレイにレンダリングするために使用され得る。集中型レンダリングシステムを達成するために、いくつかの実施形態において、アプリケーションは、クライアントプリズム（例えば、図２からのクライアントプリズム２１５）と呼ばれるプリズムのローカル表現に変更を行い得る。これらの変更は、次いで、ユニバースサーバ２０５に送信され、サーバプリズムに記憶され得る。集中型レンダリングシステムは、次いで、更新されたデータをサーバプリズムにおいてレンダリングし得る。集中型レンダリングシステムは、以降、「Ｃａｌｉ」または「Ｋａｌｉ」システムと称され得る。ユニバースは、例えば、ユニバースが実世界におけるプリズムを管理し得るので、Ｃａｌｉサーバの拡張バージョンと見なされ得る。
【０１００】
いくつかの実施形態において、ユニバースのための仮想コンテンツ１１５を作成する各アプリケーション１４０は、それぞれのアプリケーション１４０の各々にインストールされた集中型レンダリングサービスクライアント２５０（以降、「Ｃａｌｉクライアント」と称され得る）を介して、集中型レンダリングシステムおよびユニバースと通信する。さらなる情報は、「ＣＥＮＴＲＡＬＩＺＥＤ  ＲＥＮＤＥＲＩＮＧ」と題され、２０１７年３月３０日に出願され、参照することによってその全体として本明細書に組み込まれる関連出願第６２／４７９，１３４号に開示され得る。集中型レンダリングシステムは、複数の異なるアプリケーションからの仮想コンテンツが適切に分析および処理されることを確実にし、必要な場合、仮想コンテンツが現実的様式においてユーザに表示されることを確実にすることによって、ユーザの体験を改良する。いくつかの実施形態において、ユニバースは、プリズムを管理すること等の追加の機能性を伴うＣａｌｉサーバのインスタンスである。いくつかの実施形態において、クライアントプリズムは、Ｃａｌｉクライアントボリュームのインスタンスであり、サーバプリズムは、Ｃａｌｉサーバボリュームのインスタンスであり、アプリオプションディスプレイをもたらすこと、プリズムがそのコンテンツをロードする間にローダボリュームを表示すること、他のプリズムと衝突することを行うための能力、および変換ツリーの一部である能力等、追加の機能性を伴う。
【０１０１】
クライアントプリズム２１５ａおよびクライアントプリズム２１５ｂは、アプリケーション１４０によって生成される仮想コンテンツを備え、仮想コンテンツは、ユーザのランドスケープ内に表示されるために、Ｃａｌｉクライアント２５０ａによってユニバースサーバ２０５に送信された。いくつかの実施形態において、アプリケーション１４０が、仮想コンテンツ１１５ａおよび１１５ｂに変更を行うと、仮想コンテンツへの変更は、クライアントプリズム２１５からユニバースサーバ２０５に通信され、その情報は、対応するサーバプリズムデータ構造１１３においてユニバースの内部に記憶される。いくつかの実施形態において、アプリケーション１４０は、仮想コンテンツ１１５ａが表示されるユーザのランドスケープ内の場所を把握していない。ユニバースは、クライアントプリズム２１５ａに関連付けられた対応するサーバプリズム１１３ａを介して、仮想コンテンツ１１５ａの表示場所を管理し得る（例えば、集中型レンダリングシステムによって処理された後の仮想コンテンツ１１５ａ）。アプリケーション１４０は、ユニバースサーバ２０５にアクセスすることによって、新しいプリズムを要求し得る。いくつかの実施形態において、ユニバースサーバ２０５は、ユーザのランドスケープ１１０内への表示のために仮想コンテンツを提供するアプリケーションからの集中型レンダリングサービスクライアント２５０と通信するユニバースにおけるソフトウェアモジュールであり得る。例えば、ユーザが、アプリケーションを立ち上げ、アプリケーションからの仮想コンテンツをユーザのランドスケープ内に表示することを欲するとき、アプリケーションは、ユーザのランドスケープ内に定着させられ得るプリズム内に表示されるために、集中型レンダリングサービスクライアントを介して、アプリケーションからユニバース上のユニバース集中型レンダリングサービスにユニバースへの仮想コンテンツを提供し得る。
【０１０２】
いくつかの実施形態において、アイコングリッドアプリケーション２６０は、最近のアプリケーションセクション（図示せず）および／または一般的アプリケーションセクション（図示せず）を備え得る。一般的アプリケーションセクションは、複合現実システム上にインストールされる各アプリケーションを表すアイコンを備える。一般的アプリケーションセクションは、最初に、インストールされたパッケージのリストを決定するためのパッケージマネージャ（図示せず）へのコールをデータ投入され得る。アイコンが、各パッケージにおける各アプリケーションのために追加される。パッケージマネージャがパッケージインストールおよびアンインストールをユニバースに通知すると、アイコングリッドアプリケーション２６０は、適宜、そのアイコンを調節する。パッケージマネージャサービスは、アプリケーションのインストールを管理し、それらのアプリケーションについての情報（それらの名称、アイコングラフィック、セキュリティ許可、実行可能ファイル、およびデータファイル等）を維持する。
【０１０３】
最近のアイコンセクションは、ディスク上のログから最初に再構築され、次いで、他のサービスからのコールによって更新され得る。パッケージ名は、ライフサイクルサービスがアプリケーション開始イベントをランチャに通知すること、および、パッケージマネージャがパッケージアンインストールイベントをランチャに通知することを行うと、ディスクにログ付けされ得る。ユーザは、立ち上げるためにアイコンを選定すること、または、ランドスケープの中に設置するためにアイコンを抽出することによって、アイコングリッドアプリケーション２６０と相互作用し得る。
【０１０４】
ライフサイクルサービスは、アプリケーションの開始、停止、スリープ、およびウェイクアップのプロセスを管理する集中型サービスであり得る。ライフサイクルサービスはまた、アプリケーションが予期せずに終了（クラッシュ）するときも把握する。これらのイベントのいずれかが発生すると、サービスのリスナは、通知され、ユニバースは、リスナのうちの１つである。ユニバースは、このサービスにアクセスし、アプリケーションを開始、停止、スリープ、およびウェイクアップする。いくつかの実施形態において、ライフサイクルサービスは、複合現実システム内で起動するアプリケーションプロセスのライフサイクルを制御するためのアプリケーションプログラミングインターフェース（ＡＰＩ）を提供する。ライフサイクルサービスは、許可の組を伴うアプリケーションバイナリを起動するための新しいプロセスを生成し、ＡＰＩをアプリケーションによって実装される所定のインターフェース上にコールし、それらのライフサイクルを制御し得る。ライフサイクルサービスは、リスナインターフェースも提供し、それを通して、他のモジュールは、開始／停止／一時停止／再開されているアプリケーションを記録し得る。ライフサイクルサービスは、ランチャまたはユニバースと別個のプログラムであり得る。いくつかの実施形態において、ライフサイクルサービスは、ミドルウェアであり得る。
【０１０５】
いくつかの実施形態において、図２に示されるように、アイコングリッドアプリケーション２６０は、集中型レンダリングサービスクライアント２５０ｂと、クライアントプリズム２１５ｃとを備える。上で議論されるように、いくつかの実施形態において、コンテンツをユーザのランドスケープ内に表示するアプリケーションは、ユニバースサーバ２０５と通信する集中型レンダリングサービスクライアント２５０を介して、それらのコンテンツをユニバースに送信し得る。ここで、ランチャメニューのために複合現実システム上にインストールされたアプリケーションのアイコンを提供するアイコングリッドアプリケーション２６０は、ユーザのランドスケープにおける表示のためのコンテンツを提供する任意の他のアプリケーションと同様である。しかしながら、いくつかの実施形態において、アイコングリッドアプリケーション内のアイコンは、ユーザによって選択されると、ユニバースに新しいアプリケーションを立ち上げること、始動させることを命令し得、その時点で、新しいアプリケーションは、アプリケーションが新しいプリズムの中に表示されるためのコンテンツを提供し得るように、新しいプリズムを作成する（例えば、ユニバースサーバ２０５を通して）ことをユニバースに要求し得る。アプリケーションがすでに実行している場合、ユニバースは、アプリケーションに、新しいプリズムを開くように要求し得る。
【０１０６】
ステータスバーアプリケーション２７０は、複合現実システムのためのステータスインジケータを備える。ステータスインジケータおよびステータスバーアプリケーション２７０は、ユーザによって調節可能ではないこともある。ステータスインジケータは、ＷｉＦｉサービスを動作させ、維持するための第１のサービス、Ｂｌｕｅｔｏｏｔｈ（登録商標）サービスを維持するための第２のサービス、およびステータスのための第３のサービスにクエリすることによって、最初にデータ投入され得る。これらのサービスが、ステータスバーアプリケーション２７０に更新されたステータスを通知すると、ステータスバーは、適宜、調節し得る。ステータスバーは、それらがシステム内の任意の場所から迅速かつ効率的に反応し得るユーザクイック一瞥情報を提供する。いくつかの実施形態において、ステータスバーは、ランチャの上方に表示され得る。ステータスバーにおける４つの主要なセクションは、（１）グローバル検索、（２）通知、（３）クイック設定、および、（４）電源であり得る。音楽、電話、共有等、追加の一時的セクションが、必要に応じて、ステータスバーに追加され得る。
【０１０７】
ユーザが、ランチャメニュー内にあるとき、ステータスバーは、一瞥アイコンに簡約される。ユーザが、上部までスワイプすると、動画をトリガし得、ステータスバーは、拡張し得る。ステータスバーは、ユーザがランチャパネルを通して左および右にスワイプし得る間、ランチャの上方に留まり得る。ステータスバーがハイライトされると、それは、拡張し、前方に動画化し得る。サブ選択ハイライトが、デフォルトで左に、例えば、グローバル検索上に現れ得る。より緊急コンテンツ（例えば、最近の通知、低バッテリ等）を有する他のセクションが存在する場合、サブ選択ハイライトが、代わりに、そのセクション上に現れ得る。
【０１０８】
ソーシャルパネルアプリケーション２８０は、ユーザが相互作用し得る一連の連絡先から成り得る。ソーシャルパネルは、利用可能な連絡先のための連絡先サービスへのコールを最初にデータ投入され得る。各連絡先は、ソーシャルパネルに追加され、ユーザにアイコンとして表示され得る。ソーシャルパネルアプリケーション２８０が、新しい連絡先、更新された連絡先、除去された連絡先イベントを受信すると、ソーシャルパネルアプリケーション２８０は、適宜、その連絡先情報を調節し得る。ユーザは、連絡先アイコンをクリックし、利用可能な種々の連絡先プロバイダを伴うオプションメニューをポップアップすることによって、連絡先アイコンと相互作用し得る。ユーザがプロバイダを選択すると、ランチャアプリケーションは、連絡先の情報を用いて、関連付けられたアプリケーションを開始し得る。
【０１０９】
ストアパネルアプリケーション２９０は、ユーザが複合現実システムのためのアプリケーション１４０を検索、ダウンロード、およびインストールすることを可能にし得る。ユーザがアプリケーションをダウンロードおよびインストールすることを要求すると、ランチャアプリケーション２３０は、ユーザの識別を識別確認サービス（図示せず）を用いて確認し得、次いで、パッケージマネージャを用いて、アプリケーションをインストールし得る。ライフサイクルサービスは、ユーザがアプリケーションをパネルから開始する場合、呼び出され得る。いくつかの実施形態において、ランチャ内の各パネルは、１つのランチャアプリケーションとしての代わりに、別個のアプリケーションとして機能し得る。
【０１１０】
いくつかの実施形態において、ユニバースクライアント２２５は、ユニバースのために特定のコンテンツをレンダリングする。ユニバースサーバ２０５は、第三者アプリケーションをレンダリングしない。これは、プリズム内のコンテンツが、ユニバースサーバ２０５ではなく、ユニバースクライアント２２５によってのみレンダリングされ得るからである。したがって、無限プリズム、ローダボリューム／プリズム、および／または二次ＵＩプリズムをレンダリングするために、サーバのためのそれらの特定のタイプのコンテンツをレンダリングするために、作業は、ユニバースクライアント２２５に委任される必要があり得る。無限プリズムは、例えば、２つのプリズムが衝突するとき、ユニバースによって、追加のグラフィックをプリズムの周囲にレンダリングするために使用され得る。無限プリズムは、下でさらに議論される。ローダプリズムおよび二次ＵＩプリズムにおいて、ある機能性を調整するために、ユニバースサーバ２０５とユニバースクライアント２２５との間に特定の通信が存在し得る。例えば、ユニバースサーバ２０５は、アプリケーションがロードを終了したことを伝えられ得る。ユニバースサーバ２０５は、次いで、クライアント側ローダプリズムにアプリケーションを現在ロードしていることを通知し得る。ローダプリズムは、動画を示すことによって、アプリケーションがロードを終了したことのイベントに反応する必要があるであろう。クライアント側ローダプリズムが、動画を示すことを終了すると、ローダプリズムは、それが動画化を終了したことをユニバースサーバ２０５に通知し得る。次いで、ユニバースサーバ２０５は、ローダプリズムを退けさせ、ローダプリズムを破棄し、ローダプリズムの代わりに、アプリプリズムをレンダリングされた動画で表示することによって、ローダプリズムが動画化を終了したことの通知に反応し得る。開示された内容は、ユニバースクライアント２２５が機能し得る方法の単に一例である。当業者は、ユニバースクライアント２２５がユニバース１３０を補助し得るときの他の例が存在し得ることを理解し得る。
【０１１１】
図３は、いくつかの実施形態による例示的境界ボリューム／プリズムを示す。アプリケーションコンテンツは、プリズムと呼ばれる１つ以上の境界ボリュームの内側においてユーザに提示される。上で議論されるように、非没入型のアプリケーションが、複合現実システム内で実行されるとき、そのコンテンツは、プリズムの内側にレンダリングされる。プリズムの属性および特性は、ユニバースがユーザのランドスケープ内のプリズムを一貫して管理することを可能にする。
【０１１２】
プリズム１１３のボリューム空間は、図３における破線で示されるように、クリアかつ決定的境界を有し得る。境界は、プリズム１１３の境界内にのみ表示されるための仮想コンテンツ１１５のための境界ボリュームを提供する。プリズムの境界は、プリズム内に表示されるアプリケーションからのコンテンツが、プリズム外およびユーザのランドスケープの中にオーバーフローすること、または、溢れることを防止する。プリズムの境界１１３は、ユーザにプリズム１１３内に表示される仮想コンテンツ１１５を見るとき、ユーザに表示されないこともある。これは、重要な特徴である。何故なら、ユーザのランドスケープ内で３Ｄコンテンツの現実的表示を維持するために、仮想コンテンツ１１５の境を限るプリズムの境界を示さないことが重要であるからである。当業者は、仮想コンテンツが、より現実的方法において、ユーザのランドスケープ内に表示されるように、仮想コンテンツ１１５を包み込むプリズムの境界を表示しないことの重要性を理解する。３Ｄウィンドウとは対照的に、２Ｄウィンドウの境界線および境界は、概して、表示され、したがって、２Ｄウィンドウを表示するコンピュータのユーザは、１つの２Ｄウィンドウ内のコンテンツと別の２Ｄウィンドウからのコンテンツを明確に区別し得る。しかしながら、いくつかの実施形態において、例えば、１つ以上のアプリケーションに関する問題をトラブルシュートすることに役立つために、プリズムの境界を少なくとも一時的に表示することが有利であり得る。
【０１１３】
アプリケーションは、ユニバースによって、コンテンツをその中に設置するためのプリズム１１３のインスタンスを与えられる。アプリケーションは、相対的設置アルゴリズムおよび／または恣意的変換を使用して、２Ｄおよび／または３Ｄコンテンツをプリズム１１３内にレンダリングし得るが、ユニバースは、依然として、コンテンツ抽出等の総合的相互作用パターンの管理を最終的に担う。複数のアプリケーションは、プリズム１１３を介して、ユニバースにプリズムを分離するプロセス境界をレンダリングし得る。
【０１１４】
ユニバース内に配分される各プリズムは、調節され得る関連付けられたキー／値属性の組を有し、キー／値属性の組は、挙動の種々のビットを決定するか、または、所与のプリズムが存在する理由についての情報を伝達し得る。いくつかの属性は、通常アプリケーションに関して、読み取り専用であるが、プライベートＡＰＩを伴うアプリケーションに関して、これらの属性は、書き込み可能である。プリズム１１３は、プリズム属性３１０と、アプリケーション特定の属性３２０と、仮想コンテンツ１１５とを備え得る。加えて、いくつかのプリズム１１３は、ユーザに追加のプリズム管理オプションを提供するための二次ＵＩボリューム３３０を備える。しかしながら、いくつかの実施形態において、プリズムは、例えば、これらの他のタイプのプリズム（例えば、ランチャメニュープリズム）が、二次ＵＩボリューム３３０によって提供される特徴を要求しないこともあるので、二次ＵＩボリューム３３０を有していないこともある。プリズムの境界のように、二次ＵＩボリューム３３０は、ユーザに表示されないこともある。ユーザが、プリズムに変更を行うことを欲すると、ユーザは、アプリケーションオプションメニューを表示するための要求を開始し得、アプリケーションオプションメニューは、プリズムのＵＩ制御を二次ＵＩボリュームのボリューム空間内に表示する。
【０１１５】
プリズムは、それらが保持するアプリケーションに応じて、それらのコンテンツのための適切なフィードバックおよび挙動を与えるために、異なる属性を要求し得る。アプリケーションデベロッパは、それらがそれらのアプリケーションを作成するとき、それらのプリズムのためにいくつかの事前にプログラムされたオプションから選択し得、したがって、それらのコンテンツは、それらの選好に基づいて、正しく表され得る。下記は、これらのオプションのうちのいくつかの例である。
【０１１６】
プリズム属性３１０は、少なくとも部分的にプリズムを定義し、ユニバースが、ユーザのランドスケープ内のプリズムを管理および維持することを可能にする。例えば、プリズム属性３１０は、デフォルトサイズ、最大サイズ、最小サイズ、定着／設置タイプ（例えば、ビルボード表示等に対するオプション）、定着タイプに対する所与のプリズムの挙動、定着場所、子プリズム生成場所、子頭部姿勢ハイライト、表面上挙動、独立変換制御、サイズ変更対縮尺変更インジケータ、アイドル状態タイムアウト変数等のうちの１つ以上を含み得る。プリズム属性３１０は、ユーザのランドスケープ内の一つ一つのプリズムを追跡し、管理する能力をユニバースにもたらす。ユーザのランドスケープ内に表示される仮想コンテンツを管理する単一のアプリケーションを有することは、ユーザのランドスケープ内に表示されるコンテンツが一貫し、かつ信頼性がある様式において表示されることを保証する。プリズム属性３１０のうちのいくつかは、下でさらに開示される。
【０１１７】
最大、最小、およびデフォルトサイズ：アプリケーションは、アプリケーションデベロッパによって規定された上側および下側境界を有し得る（随意に、ユニバースからの追加の限界を伴う）。加えて、アプリケーションデベロッパは、アプリケーションが最初に立ち上げられるとき、デフォルトサイズを有し得る。
【０１１８】
移動シーケンス中にビルボード表示するためのオプション：あるオブジェクト（例えば、平面状であるコンテンツ）において、移動シーケンス中、ユーザに向かってビルボード表示を行い、視認性およびより少ない管理を促すことは、道理にかなっている。例えば、平面表面上に表示されるあるコンテンツは、特定の場所および／またはオブジェクトに対して位置付けられ得るが、その向きは、平面表面上に表示されるコンテンツが、常時、平面表面上に表示されるコンテンツを視認するユーザの方向に面するように、自動的に算出される。他の随意の身体動態挙動も、これに追加され得る。
【０１１９】
子プリズム生成場所：プリズムは、子を生成し、フレキシブルなレイアウトを作成し得る。アプリケーションデベロッパは、子が親プリズムに対して生成され得る場所の応答範囲を決定することが可能であるべきである。
【０１２０】
子頭部姿勢ハイライト：アプリケーションは、子プリズム上の頭部姿勢ハイライトが別個のハイライトとして取り扱われ得るかどうか、または１つのユニットとして全ての子／親プリズムをハイライトし続けるかどうかを選定することが可能であり得る。
【０１２１】
子プリズム関係挙動：プリズムは、平行移動、回転、および拡大縮小において、それらの子プリズムがそれらに定着させられ得るかどうかを決定し、子プリズムが主要なプリズムとともに終わるであろうかどうかを選定し得る。
【０１２２】
表面上挙動：プリズムは、表面にスナップされ、それらがサイズ／スケール変化を欲するかどうかを決定するために、その表面にクエリし得る。表面が空所を有する場合、プリズムは、表面の全てまたはあるパーセンテージに適合するようにサイズ変更し、ユーザの視野（ＦＯＶ）に入り得る。
【０１２３】
独立変換制御：アプリケーションは、その平行移動、回転、および拡大縮小の独立制御を要求し得る。これは、アプリケーションが、それ自体を移動および変換することを可能にし得る。
【０１２４】
サイズ変更対拡大縮小：いくつかのアプリケーションは、それらのコンテンツのみを拡大縮小代わりに、それらの境界をサイズ変更することを選定し得る。これは、より多くのコンテンツがそれらの境界内に表示されるように適応し得る。これは、既存のコンピュータ２Ｄウィンドウのように機能し得る。
【０１２５】
アイドル状態タイムアウト：アプリケーションは、それらのアイドル状態に入るまでにかかる時間を選定することが可能であり得る。これは、アプリケーションが視野外にある場合でも、コンテンツを再生し続けることを望み得る状況をハンドリングし得る。例えば、ライブビデオを表示するアプリケーションは、ユーザが一時的に目を逸らす場合でも、コンテンツを表示し、オーディオを再生し続けることを望み得る。
【０１２６】
アプリケーション特定の属性３２０は、各プリズムのためのアプリケーション特定の状態情報を記憶したキー／値ペアのリストであり得る。キー／値ペアのリストは、アプリケーションに特定であり、キー／値ペアは、プリズム内に表示またはレンダリングされているアプリケーションのコンテンツの状態情報を提供する。キー／値ペアのリストは、プリズムの中にレンダリングするアプリケーションに応じて、各プリズムのために異なり得る。例えば、アプリケーションが、ビデオストリーミングアプリケーションである場合、いくつかのキー／値ペアは、ビデオ名、ビデオの視聴最大時間、ビデオを表示するためのアスペクト比等を含み得る。
【０１２７】
プリズム属性３１０およびアプリケーション特定の属性３２０の両方が、各プリズムのために、ローカルデータベース１３７のデータ構造に記憶され得る。プリズムデータは、ユーザが複合現実システムを動作させ、プリズムと相互作用している間、絶えず更新される。上で議論されるように、ローカルデータベース１３７のプリズムインスタンスデータは、周期的ベースで外部データベース１５０と同期することによって、持続し得る。いくつかの実施形態において、ローカルデータベース１３７および外部データベース１５０は、ほぼリアルタイムで同期させられ得る。
【０１２８】
ユーザがユニバースにおいてアプリケーションを立ち上げるとき、ユーザは、プリズムをランチャメニューから外に引き出し、結果として生じるボリュームを空間の中に設置し得る。アプリケーションアイコンをクリックする等のアプリケーションを立ち上げる他の方法も、使用され得る。いくつかの実施形態において、ユーザは、コントローラ／入力デバイス（例えば、トーテム）を上または下に移動させることによって、プリズムを（球状シェル上の）高度および方位角に移動させ得る。オブジェクトをより近くまたはより遠くに移動させるために、ユーザは、トーテム上のジョイスティックを使用して、プリズムを「押すこと」または「引くこと」を行い得るか、または、ユーザの指をトーテムのタッチセンサ式部分の上でスライドさせ得る。これは、シェルの半径を変化させる効果を有する。いくつかの実施形態において、トーテム上の２つのボタンは、プリズムを拡大または収縮させ得る。最後に、トーテム自体を回転させることは、プリズムを回転させ得る。これは、トーテムが６自由度（ＤＯＦ）を有し得ると仮定する。これは、例えば、ＶＲペインティングアプリケーションにおいて使用される種類の制御と一致するが、トーテムは、任意の好適なユーザ入力デバイスであり得る。
【０１２９】
いくつかの実施形態において、プリズムは、それらが他のプリズムと完全または部分的に交差するような方法でそれら自体が設置されることを可能にしないこともある。プリズムは全く交差しないか、または、正確に同じ場所（定着点）にない／能動的に表示しないが、プリズムは、下で議論されるように、物理学目的のために、わずかのみ重複し得ることを例外とする。２つ以上のプリズムが、正確に同じ場所に設置される場合、アクティブなアプリケーションが表示され、正確に同じ場所に定着させられた他のアプリケーションは、隠され得る。ユーザは、例えば、ボリューム内に表示されるドットによって、複数のアプリケーションがある場所にあることが分かり得る。例えば、３つのプリズム／アプリケーションが、特定のスポットにある場合、３つのドットがあり得る。ユーザが、３つのうちのアプリケーション＃２を視認する場合、第２のドットが明るくされ、他のドットが薄暗くされ得る。ユーザは、次いで、異なるアプリケーションを通して、スワイプまたはスクロールし得る。グラフィックは、切り替わり得、ドットは、更新され（例えば、アクティブなドットを明るくすることによって）、現在アクティブであるアプリケーションを示し得る。
【０１３０】
いくつかの実施形態において、いくつかのプリズムは、同一定着場所に共同設置され得る。一見すると、それは、奇妙に思え得る。アプリケーションをユーザのランドスケープ内に設置するために利用可能なあらゆる３Ｄ空間の中で、それらを同一スポットに設置する理由とは？実際に、それは、完全に道理にかなっている。例えば、仮想ボードゲームをプレーするためのユーザのお気に入りの場所は、台所のテーブル上であり得る。朝、ユーザは、朝食を食べている間、「Ｔｉｃｋｅｔ  Ｔｏ  Ｒｉｄｅ」をプレーすることを好み得る。しかし、ユーザが、仕事から帰宅時、ユーザは、「Ｒｉｓｋ」をコンピュータと対戦することを好み得る。ユーザは、同一スポットに位置する複数のボードゲームを有し、必要時、それらを切り替え得る。
【０１３１】
いくつかの実施形態において、プリズムは、空間の恣意的場所に設置され得る。この場合、プリズムは、立方体／長方形ボリュームの中心点によって定着させられ得る。しかし、（例えば、設置中）プリズムがランドスケープにおける水平表面の近傍に移動させられる場合、プリズムは、表面にスナップするように試み得る。定着点は、次いで、プリズムの底部平面の中心となり得る。同様、プリズムが、垂直表面（例えば、壁）に向かって移動させられる場合、それにスナップするように試み得、定着点は、垂直表面の隣にあるプリズムの側面となり得る。
【０１３２】
定着点の目的は、プリズムが定着させられる表面と互いに貫通しないように、プリズムを設置することであり得る。定着点も、定着させられるオブジェクトとともに移動し得る。複数のプリズムが、同じ場所を共有するとき、その場所は、定着点であり得、それらのそれぞれのボリュームの中心点ではない。アプリケーションは、それらが位置する場所を把握せず、把握する必要がないが、アプリケーションは、それらのそれぞれのプリズムに尋ね、それぞれのプリズムが定着させられている方法を確認し得る。アプリケーションは、有効である定着タイプも規定し得る。例えば、Ｈａｌｃｙｏｎを垂直表面に定着することは、道理にかなっていない。
【０１３３】
アプリケーションのためのコンテンツ（グラフィック）の全ては、プリズムのボリュームに含まれ得る。ユニバースは、プリズム外に延びているグラフィックを自動的にマスクアウトし得る。アプリケーションは、世界内の他のアプリケーションについて把握していないので、ユニバースは、異なるアプリケーションの異なるプリズム間で発生する相互作用を管理し得る。
【０１３４】
プリズムを設置するためのユーザインターフェース設計は、プリズムが設置状態で移動させられつつある間、プリズムが物理的方法において揺れるように要求し得る（紐上のオブジェクトのように）。異なるアプリケーションが欲するであろう物理的挙動の種類を予測することを試みる代わりに、プリズムは、設置されつつある間、移動情報をアプリケーションにフィードし得る（バインダインターフェースを通して）。アプリケーションは、次いで、適切に挙動し得る。
【０１３５】
それらが設置されつつあるとき、プリズム間にも物理的挙動が存在し得る。これは、アプリケーションの物性実装を無効にし得、アプリケーションは、移動データを受信することを停止し得る。
【０１３６】
プリズムは、最初、交差することに抵抗し得る。ユーザが、２つのプリズムを同じ場所の中に押し続ける場合、プリズムは、それが交差するプリズムの定着場所にスナップし得る。これは、弾力的で（例えば、互いに相互作用する石鹸の泡に類似する）、物理学に大まかに基づくように行われ得る。
【０１３７】
オーディオエミッタが、子ノードとしてアプリケーションのシーングラフ内に設置され得る。これらのノードは、ルートノード変換にローカルであり得る。したがって、プリズムは、移動させられ得、プリズムの移動は、アプリケーションがオーディオノードの変換を更新することを要求しない。ユニバースは、オーディオエミッタから世界空間への最終変換に関与し得る。プリズムも、オーディオノードをその境界に制約することに関与し得る。アプリケーションは、オーディオをそれらのそれぞれのプリズムの外の点から放出しないこともある。
【０１３８】
いくつかの実施形態において、オーディオを空間化することが望ましくないこともある。例えば、ユーザが、仮想ＴＶを壁に設置し、ＴＶ画像に集中させられている場合、ＴＶのオーディオは、修正なしでユーザに提供され得る。これは、より良好なオーディオ体験をユーザに提供する可能性が高い。周囲音の場合、オーディオ信号は、空間情報をすでに有している。音は、ＴＶに対する最適場所に設置された仮想スピーカから放出され得る。
【０１３９】
いくつかの実施形態において、ユーザによるオーディオ強度を制御するためのボタン押下時、ユニバースは、頭部姿勢をチェックし、ユーザが見ているプリズムを決定し、音量アップまたは音量ダウンイベントを対応するプリズムに送信し得る。プリズムは、その情報をプリズム内で起動されているアプリケーションに転送し得、アプリケーションは、それを解釈する方法を決定し得る。ランドスケープ内に焦点が合っているアプリケーションが存在しない場合、音量ボタン設定は、グローバル音量を調節し得る。
【０１４０】
いくつかの実施形態において、従来の２Ｄウィンドウとプリズム１１３との間の１つの差異は、２Ｄウィンドウにおいて、２Ｄウィンドウの境界を設定する境界線がユーザによって見えるように意図され、２Ｄウィンドウ内にコンテンツを含むための明確な境界線を提供し、２Ｄウィンドウの境界線外のコンテンツから分離することである。しかしながら、いくつかの実施形態において、３Ｄウィンドウ（例えば、プリズム１１３）の境界線は、見えないように意図される。全てのプリズムの輪郭（例えば、境界線）がユーザに見え得る場合、「現実」であるような錯覚を破壊し、その境界線が表示されるプリズム内に表示される仮想コンテンツは、現実である代わりに、コンピューティング／デジタル／仮想コンテンツのように見えるであろう。いくつかの実施形態において、境界線は、例えば、必要に応じて、ユーザ操作を有効にするために表示され得る。
【０１４１】
別の差異は、２Ｄウィンドウが、一般に、ユーザによって制御され、および／または、ユーザと相互作用されるように意図されることである。例えば、閉じるボタンが、常時、従来の２Ｄウィンドウの右上角に現れ得るか、または、メニューバーが、２Ｄウィンドウの上部境界線に表示され得る。しかしながら、プリズムにおいて、ユーザは、概して、プリズムおよびその境界と相互作用しない。代わりに、二次メニュー（例えば、アプリオプションメニュー）が、ユーザがオプションのリストからプリズムを制御および管理／操作するために、一時的にプルダウンされ得る。
【０１４２】
さらに、２Ｄウィンドウは、その周囲から独立している。例えば、コンピュータ画面上に表示されるものは、ユーザが画面を移動させる場合、自動的に変化しない。しかしながら、プリズムは、実世界との関連で設置される必要がある。例えば、各プリズムは、（１）壁、テーブル等の実環境内のオブジェクト、（２）プリズムが定着するための背景またはキャンバスを提供するために作成された仮想オブジェクト、および／または、（３）ユーザに対して、実世界の中に設置され得る。いくつかの実施形態において、プリズムは、パス可能世界および実世界との関連で設置され得る。
【０１４３】
なおもさらに、いくつかの実施形態において、プリズムは、互いに重複／相互貫通することを可能にされないこともあるが、プリズムが物理学目的のためにわずかのみ重複し得ることを例外とする。例えば、いくつかの実施形態において、２つ以上のプリズム内の仮想コンテンツが、衝突するとき、仮想コンテンツは、それらが互いに衝突するように見えるとき、２つの仮想コンテンツ間で跳ね返りを示すように見え得る。ここで、プリズムは、２つの仮想コンテンツ間の跳ね返りの効果を作成するために、わずかのみ重複し得る。いくつかの実施形態において、２つ以上のプリズムのための境界ボックスが、衝突するとき、プリズム、故に、プリズムのコンテンツは、跳ね返るように見え得る。しかしながら、コンピュータ上の２Ｄウィンドウは、重複し、多くの場合、２Ｄウィンドウは、互いの上にカスケード表示され、ユーザのビューから互いを隠し得る。いくつかの実施形態において、２つのプリズムが、ユーザのランドスケープ１１０内の同じ場所に定着させられる場合、プリズムのうちの１つは、表示され得るが、他のプリズムは、表示から最小化され、アイコンまたはテキストもしくは画像（または任意の他の視覚的インジケータ）が、別のプリズムが正確に同じ場所に定着させられていることをユーザに示すために表示される。いくつかの実施形態において、例えば、プリズムが衝突するとき、プリズムの周囲に追加のグラフィックをレンダリングするために、無限プリズムが実装され得る。いくつかの実施形態において、無限プリズムは、その境界が無限遠に設定されたプリズムであり得る。例えば、２つのプリズムが、衝突するほど近接する場合、ユニバースは、輝きを２つのプリズム間の空間の領域内にレンダリングし得る。これらの例外をハンドリングするために、ユニバースは、２つのプリズム、ユーザの視野全体（ユーザに現在見え得るもの）、ユーザの動眼視野全体（動き回る場合、ユーザに見え得るもの）等の周囲の／それを包囲する全ての空間を包含し得る無限プリズムを作成し得る。これは、ユニバースが、グラフィックを２つのプリズム間の任意の場所に引き出すことを可能にし得る。いくつかの実施形態において、無限プリズムは、いかようにも、衝突しない、または相互作用しないこともある。いくつかの実施形態において、無限プリズムは、二次ＵＩ等を有していない。いくつかの実施形態において、ユニバースのみが、無限プリズムへのアクセスを有し得る。無限プリズムは、ユニバース初期化時に作成され得、ユニバースがシャットダウンするまで、常時存在し得る。第２の例において、無限プリズムは、キャラクタ（例えば、アバタ、パーソナルアシスタント、蝶、動物等）を他のランドスケープアプリ間で移動させ、例えば、各アプリケーションの内容および／またはアプリケーションの使用方法をユーザに説明するために有用であり得る。
【０１４４】
図４は、いくつかの実施形態によるアプリケーションを立ち上げ、仮想コンテンツを表示するために、例えば、頭部搭載型システム１６０を装着しているユーザによって見られるような例示的ランチャメニューを示す。ランチャメニューは、ランチャメニューが他のアプリケーションを立ち上げることを要求する高度な権限により、それ自身のアプリケーションとして存在し得る。ランチャメニュー４００は、ステータスバー４１０を備え得、パネルと呼ばれる身体中心境界ボリューム（例えば、プリズム）を有し得る。いくつかの実施形態において、ランチャパネルは、単一アプリケーションの外観を与えるいくつかの異なるアプリケーションを備える。例えば、各パネルは、別個のアプリケーションであり得るが、単一ランチャアプリケーションの外観を与え得る。ユニバースは、ランチャメニュー呼び出し（例えば、ランチャメニューを開くための要求）中、各パネルのために、明示的作成コールを行ない得る。
【０１４５】
いくつかの実施形態において、別個のアプリケーションプロセスが、各パネルの中にレンダリングし得る。プロセスは、ユニバースの残りと同一コンテンツレンダリング技法を使用し得るが、いくつかの実施形態において、以下の例外のうちの１つ以上を伴う：（１）ランチャメニューは、他のアプリケーションの開始をトリガし得る；（２）ランチャメニューアイコンおよびウィジェットアイコンは、抽出され、ランドスケープ内に設置され得る（設置されたアイコンは、ショートカットと称され得る）；（３）ランチャメニュー自体が、ランドスケープ内に設置され、移動させられ得る；（４）コンテンツ抽出がランチャアイコン上で開始すると、ランチャは、ユーザの手、６自由度コントローラ、または他のコントローラに定着させられるプレースホルダコンテンツをロードし得、それによって、抽出が終了されると、ユニバースは、アプリケーションをプリズムの中に立ち上げ、それは、プレースホルダコンテンツに取って代わる；および、（５）ユーザは、ランチャメニュー内のパネル間でスワイプし、個々のパネルを拡張させ得る。いくつかの実施形態において、パネルは、カルーセルとして実装されないこともある。代わりに、ランチャパネルは、主要なパネルが、常時、中心パネルとして固定され、最小化されたパネルからのコンテンツが、ユーザが、左、右、上、または下にスワイプを実施するにつれて、中心パネル内外に動画化されるように、共同設置され得る。いくつかの実施形態において、ランチャアプリケーション自体は、ユーザによって、ユーザのパス可能世界内に設置され、それによって、ユーザのパス可能世界および／またはランドスケープ内にランチャショートカットまたは設置式ランチャを作成し得る。
【０１４６】
いくつかの実施形態において、ランチャメニュー４００は、一連の身体中心パネルをパネルカルーセルとして編成し得る。パネルカルーセルは、各パネルがそれ自身のアプリケーションプロセスを起動し、および／または、各パネルが別個のアプリケーションであるように、１つのパネルを一度に表示し得る。いくつかの実施形態において、１つのみの現在のパネル４０５が、拡張され、一度に可視であり得る。２つの身体中心プレースホルダパネル（例えば、４４０ａおよび４４０ｂ）は、現在の拡張されたパネル４０５の両側において、現在の拡張されたパネル４０５から固定距離にあり得る。プレースホルダパネル４４０ａおよび４４０ｂは、現在の拡張されたパネル４０５に隣接する簡約された形態の２つのパネルを表すユニバースによって作成された個々のプリズムであり得る。いくつかの実施形態において、ユーザが、次のパネルにスワイプすると、プレースホルダによって表されるパネルは、現在のパネルとなり得る。プレースホルダパネルの物理的モデルは、どのパネルが表されても、同一のままであり得る。いくつかの実施形態において、異なるパネルを表すプレースホルダ間の唯一の視覚的差異は、ラベル（例えば、図４に示されるように、最近およびソーシャル）である。他の実施形態は、同じ場所にあるが、パネルに特定の異なるアイコンを伴う異なるパネルを有し得る（図１１参照）。
【０１４７】
いくつかの実施形態において、ランチャメニュー４００は、パネルのフローを管理し、理想的に、左および右パネルをキャッシュする。パネルカルーセルは、最近アクセスされたアプリケーションパネル４２０と、一般的アプリケーションパネル４２５と、ソーシャルアプリケーションパネル４３０と、ストアパネル（図示せず）とを備え得る。最近アクセスされたアプリケーションパネル４２０は、ユーザによって最近アクセスされたアプリケーションのアイコンを備え得る。最近アクセスされたアプリケーションパネル４２０は、一般的アプリケーションパネル４２５のための現在のパネル４０５が現在表示されているとき、最小化された状態で示され得る。最近アクセスされたアプリケーションパネル４２０は、ユーザが、対応する方向（例えば、右）にスワイプし、最近アクセスされたアプリケーションパネル４２０を正面かつ中心に持って来ると、そのアイコンを示すように拡張され得るか、または、他の実施形態によると、それぞれのパネルに関するコンテンツは、中心パネルの内外に動画化し得る。いくつかの実施形態において、最近アクセスされたアプリケーションパネル４２０が、最初に表示され得、プリケーションパネル４２０は、アプリケーションのリングを備え得る。任意の数のパネルが、使用され得、それらのパネルは、任意の順序で表示され得る。パネルの順序および数は、ユーザ試験、ユーザの容易性、および／またはユーザ選好に基づき得る。
【０１４８】
いくつかの実施形態において、ソーシャルアプリケーションパネル４３０は、一般的アプリケーション４２５のための現在のパネル４０５（または任意の他のパネル）が現在表示されているとき、最小化された状態で示され得る。ソーシャルアプリケーションパネル４３０は、ユーザが、対応する方向（例えば、左）にスワイプし、ソーシャルアプリケーションパネル４３０を正面かつ中心に持って来る場合、そのアイコンを示すように拡張され得るか、または、いくつかの実施形態において、ソーシャルアプリケーションに関連付けられたコンテンツは、中心パネルの中に動画化／表示される一方、プレースホルダパネル上のラベルが、適宜、変化させられる。
【０１４９】
いくつかの実施形態において、一般的アプリケーションパネル４２５のアイコン４５０は、図２からのアイコングリッドアプリケーション２６０に類似するアイコングリッドアプリケーション内にアイコンを表し得る。アイコン４５０は、複合現実システムにインストールされたアプリケーションを表し得る。ユーザは、特定のアイコン４５０を選択することによって、アプリケーションを立ち上げ得る。いくつかの実施形態において、ユーザは、アイコン４５０をパネルから抽出し、アイコン４５０をユーザのランドスケープ内に設置し得、その時点で、ユニバースは、抽出されたアイコン４５０に対応するアプリケーションのための始動プロセスを開始し得る。対応するアプリケーションが、そのコンテンツのそのレンダリングを完了すると、抽出されたアイコン４５０は、プリズムと置換され得、アプリケーションのレンダリングされたコンテンツは、プリズム内に表示される。
【０１５０】
上で議論されるように、いくつかの実施形態において、ステータスバー４１０は、複合現実システムのステータスインジケータを備え得る。ステータスインジケータは、例えば、ＷｉＦｉサービスを動作および維持するための第１のサービス、Ｂｌｕｅｔｏｏｔｈ（登録商標）サービスを維持するための第２のサービス、およびステータスのための第３のサービスに最初にクエリすることによって、データ投入され得る。これらのサービスが、ステータスバーに更新されたステータスを通知すると、ステータスバーは、適宜、調節し得る。ステータスバーは、オーディオ音量、現在の時間、ＷｉＦｉ接続／強度、Ｂｌｕｅｔｏｏｔｈ（登録商標）、および電源等のサービスのためのステータスインジケータを含み得る。他のサービスは、上で述べられたサービスと組み合わせて、またはその代わりに、ステータスインジケータに含まれ得る。
【０１５１】
いくつかの実施形態において、アプリケーションをランチャメニュー４００から立ち上げるための要求に基づいて、アイコングリッドアプリケーションは、例えば、プリズムサービスおよび／またはユニバースサービスを通して、ユニバースと通信し、アプリケーションを開始し得る。ユニバースは、規定されたパッケージ名および／またはコンポーネント名を用いて、プリズムを作成し得る。ユニバースは、アプリケーションのリスナを使用して、プリズムをアプリケーションに与え得る。プリズムは、ここで、「設置モード」であり得る。ユーザが、プリズムを設置すると、ユーザは、任意の数の方法において、例えば、二次ＵＩアプリケーションオプションメニューを使用して、プリズムを修正し得る。
【０１５２】
図５Ａ−５Ｂは、いくつかの実施形態による例示的パネルカルーセル変化を示す。図５Ａは、ランチャメニューの例示的ビューを示し、ランチャメニューは、左から右へのスワイプ前の左５２０（例えば、図４からの４４０ａ）および右５３０（例えば、図４からの４４０ｂ）パネルとして表されるプレースホルダパネルを有する。現在のアクティブパネル５０５は、アイコングリッド内のアイコンをアクティブパネル５０５内の「ＢＢ」として描写する例示的アイコングリッドを示す。いくつかの実施形態において、アイコングリッドは、グリッド、リスト、１つ以上の行を伴う１つ以上の列、アイコンの円、および／または任意の他の形状を形成する１つ以上のアイコンであり得る。小パネル５３５は、パネルカルーセル内の利用可能なパネルを示す（いくつかの実施形態において、小パネル５３５は、ユーザに示されない）。パネル位置インジケータ５４０は、「Ｂ」パネルを指している「Ｃ」として表された中心パネルと、「Ａ」パネルを指している「Ｌ」として表された左パネルと、「Ｃ」パネルを指している「Ｒ」として表された右パネルとを示し、「Ｄ」パネルは、現在、ビュー内になく、したがって、パネル位置インジケータ５４０で指定されていない（いくつかの実施形態では、ユーザにも示されない）。
【０１５３】
図５Ｂは、左から右へのスワイプ後の図５Ａに示されるようなランチャメニューの例示的ビューを示す。新しいアクティブパネル５５５は、ここで、新しいアクティブパネル５５５のアイコングリッド内のアイコンとして「ＡＡ」を有する「Ａ」パネルである。２つのプレースホルダパネルである左５７０パネルは、「Ｄ」パネルを示し、右５８０パネルは、図５Ａにおける前のアクティブパネル５０５からの「Ｂ」パネルを示す。加えて、小パネル５８５は、ここで、パネルＡ、Ｂ、Ｃ、Ｄとして、利用可能なパネルをパネルカルーセル内に示す。しかしながら、パネル位置インジケータ５９０は、適宜、変化しており、ここで、「Ｃ」として表される中心パネルは、ここで、「Ａ」パネルを指しており、「Ｌ」として表される左パネルは、ここで、「Ｄ」パネルを指しており、「Ｒ」として表される右パネルは、ここで、「Ｂ」パネルを指していることを示す。
【０１５４】
いくつかの実施形態において、プレースホルダパネル自体は、一定のままであり得るが、ラベルのみが、変化する下にあるパネルを反映する。例えば、図４において、ユーザが、図５Ｂの左から右へのスワイプのように、左から右へのスワイプを実施した場合、新しいアクティブパネルは、「最近」のパネルとなり、右プレースホルダパネルは、「一般」の新しいパネルタイトルを用いて表示され、左プレースホルダパネルは、「ストア」の新しいパネルタイトルを用いて表示される（パネルカルーセルのみが、図４に開示される４つのパネルを有すると仮定する）。プレースホルダパネルの画像は、同一のままであり得るが、左および右プレースホルダパネルのタイトルは、適宜、変化し得る。パネルシフトは、ユーザ運動の切り替えアクション、例えば、左から右へのスワイプに基づき得る。当業者は、パネル間の切り替えの任意の他の方法も、使用され得ることを理解し得る。
【０１５５】
図６は、いくつかの実施形態による、複合現実システムの以前の使用後、複合現実システムを開始するためのアプローチのためのフローチャートを示す。始動プロセス６００は、ユーザが複合現実システムを以前に使用し、複合現実システムを電源オフにしてからある時間後、複合現実システムに電源投入する／それを開始するためのプロセスを示す。６１０において、複合現実システムは、ユーザの場所を識別し、頭部姿勢を確立し、ユーザ（例えば、ユーザの頭部）の場所および／または向きを決定する。頭部搭載型システム１６０は、少なくとも部分的にユーザの場所を決定するためのＧＰＳを含み得る。
【０１５６】
６２０において、ユニバースは、パス可能世界システム（例えば、外部データベース１５０）にアクセスし、現在のユーザのランドスケープ内に以前に表示されたプリズムのインスタンスを読み出し得る。パス可能世界は、インスタンスデータを返し得、したがって、ユニバースは、読み出されたプリズムインスタンスデータでユーザのローカルデータベース１３７を再構築することによって、プリズムの前の状態をユーザのランドスケープ内に再構築し得る。パス可能世界システムは、ユーザの環境についての情報、例えば、ユーザのランドスケープ１１０内で以前にアクティブであったプリズムのみならず、ユーザが以前にシステムをシャットダウンしたときの各プリズムの状態も持続的に記憶する。ローカルデータベース１３７に記憶されたユーザのプリズムインスタンスデータは、ユーザが複合現実システムをシャットダウンすると消去され得るので、複合現実システムの再開時、ローカルデータベース１３７内のユーザのプリズムインスタンスデータは、パス可能世界システム（例えば、図１からの外部データベース１５０）から読み出されたインスタンスデータに基づいて、再構築され得る。
【０１５７】
いくつかの実施形態において、インスタンスデータは、各プリズムのために、以下のうちの１つ以上を含み得る：（１）プリズム属性（プリズム属性は、場所、向き、範囲幅、範囲高さ、範囲深度、定着タイプ、および／または定着位置を備え得る）、および、（２）それぞれのアプリケーションによって以前にレンダリングされた仮想コンテンツの状態情報を備えたアプリケーション特定の属性。例えば、プリズムの中にレンダリングする、アプリケーションが、ビデオストリーミングアプリケーションである場合、アプリケーション特定の情報は、ビデオのタイトル、ビデオが再生された時点、およびレンダリングされているビデオのアスペクト比を含み得る。アプリケーション特定の情報は、各アプリケーションのための状態情報を記憶したキー／値ペアのリストであり得る。キー／値ペアのリストは、それぞれのアプリケーションに特定であり得、キー／値ペアは、プリズム内に表示またはレンダリングされているアプリケーションのコンテンツのための状態情報を提供し得る。
【０１５８】
いくつかの実施形態において、各ユーザ１０３が、それらのローカルデータベース１３７に記憶されたそれら自身のプリズムインスタンスデータを有し得る一方、マスタプリズムデータベースインスタンスデータは、パス可能世界システム（例えば、外部データベース１５０）に記憶され、複合現実システムの他のユーザのための他のプリズムインスタンスデータおよび／またはユーザの現在の場所に加えた他の場所のためのプリズムインスタンスデータを含む。複合現実システムのユーザのためのプリズムデータは、パス可能世界システムに記憶され得る。いくつかの実施形態において、第１のユーザは、第１のユーザのランドスケープからプリズム内に表示される仮想コンテンツを同じ場所（または、いくつかの実施形態において、第１のユーザと異なる物理的場所）で複合現実システムを使用している第２のユーザと共有することを欲し得る。プリズム情報は、第１のユーザのローカルデータベースにおいて、第１のユーザに利用可能であるので、プリズムを第２のユーザと共有すると、第１のユーザからのプリズムのためのインスタンスデータは、パス可能世界システムにアップロードされ得る。プリズムのためのインスタンスデータは、次いで、伝送されるか、または、第２のユーザによって読み出され得、第２のユーザのローカルデータベースに記憶され、第２のユーザのユニバースアプリケーションは、プリズムのインスタンスデータを第２のユーザのローカルデータベースの中に再構築し、その結果、プリズムを第２のユーザのランドスケープの中に表示し得る。
【０１５９】
６３０において、プリズムは、ユーザの現在の場所において復元され得る。ユーザの場所において以前に展開されたプリズムのためのインスタンスデータが、ユーザのローカルデータベース１３７において再構築されると、ユーザの現在の場所において以前に展開されたプリズムに対応するそれぞれのアプリケーションが、立ち上げられ得る。複合現実システムは、単に、始動するので、コンテンツを複合現実システムに以前に提供していたアプリケーションが開始される必要があり得るが、この時点において、コンテンツをユーザのランドスケープに以前に提供していたアプリケーションのみが、立ち上げられる必要がある。アプリケーションを立ち上げることの一部として、アプリケーションは、アプリケーションがコンテンツをレンダリングするためのプリズムをユニバースが作成することを要求し得、作成されるべきプリズムは、ユーザのランドスケープ内に表示するために、ユーザが複合現実システムをシャットダウンすることに先立って以前に展開されていたプリズムに対応する。アプリケーションが、立ち上げられ、プリズムが、作成されると、アプリケーションは、コンテンツをそれぞれのプリズムの中にレンダリングするために、コンテンツをユニバースに提供し得る。
【０１６０】
いくつかの実施形態において、１つのアプリケーションは、コンテンツをユーザの場所において展開される２つ以上のプリズムに提供し得る。そのような実施形態において、１つのアプリケーションは、１つのアプリケーションの複数のインスタンスまたはプロセスを展開し、１つのアプリケーションの各インスタンスまたはプロセスのために、コンテンツを１つ以上のプリズムの中にレンダリングし得る。
【０１６１】
６４０において、プリズムは、ユーザが複合現実システムをシャットダウンすることに先立ってプリズムが表示されていた場所において、ユーザのランドスケープの中に表示され得る。プリズムおよびプリズムの中にレンダリングするアプリケーションが、持続するので、複合現実システムは、少なくとも部分的にプリズムの各々の各プリズム属性に基づいて、ユーザのランドスケープの場所に、それぞれの仮想コンテンツとともに、プリズムを展開／表示することによって、ユーザのランドスケープを再構築し得る。いくつかの実施形態において、図２からのローダボリューム２１０等のプレースホルダプリズムが、始動時、現在ロードしているプリズムの場所に表示され得る。そのような実施形態において、新しいプリズムが作成され、復元されると、プレースホルダプリズムの代わりに、新しいプリズムを表示することは、プレースホルダプリズムの場所において、それぞれのプレースホルダプリズムを新しく作成されたプリズムと置換する単純なものであり得る。ランドスケープの代わりにユーザに定着させられるようにそれをマーキングする属性をプリズムが有する場合、そのプリズムは、ユーザの現在の位置に対する位置に復元され得る。
【０１６２】
いくつかの実施形態において、プリズム内にレンダリングするアプリケーションは、ユーザが複合現実システムを以前にシャットダウンしたときの状態と一致する状態において展開され得る。例えば、ユーザのランドスケープのユーザの視野は、展開された４つのプリズムを有しており、４つのプリズムのうちの１つは、スリープ状態にあるアプリケーションを有していた一方、他の３つのプリズムの各々は、能動的にレンダリングしていたアプリケーションを有していた。複合現実システムが、再開し、４つのプリズムが、表示されると、プリズムのうちの３つは、能動的にレンダリングする状態を有し得る一方、第４のプリズムは、ユーザが第４のプリズムのスリープ状態を再アクティブにするまで、スリープ状態にあるアプリケーションを有し得るか、または、プリズムは、ユーザがその近傍一般をルックインする場合、状態が能動的にレンダリングする状態に自動的に変更され得るように構成され得る。プリズムの状態の変更は、下でさらに開示される。いくつかの実施形態において、他の方法が、プリズムの状態を変更するために使用され得る。
【０１６３】
６５０において、ユーザのローカルデータベースは、ユーザがユーザのランドスケープ内のプリズムと相互作用するにつれて、絶えず（または規則的間隔において、もしくはイベントによってトリガされると）かつ自動的に、プリズム情報で更新され得る。例えば、あるプリズムのためのアプリケーションが、能動的にレンダリングする状態から、アクティブであるが非レンダリング状態またはスリープ状態に状態を変化させると、ユーザのローカルデータベースは、そのプリズム内のアプリケーションに関する更新された状態情報で更新される。ユーザのローカルデータベースからの更新された情報は、直ちにまたは周期的に、パス可能世界システム（例えば、外部データベース１５０）を更新し、パス可能世界システムがアプリケーションおよびユーザのランドスケープ内のプリズムの状態変化に伴って最新に保たれることを確実にし得る。当業者は、それが、単に、プリズム属性またはアプリケーション特定の属性が変更される方法および更新がローカルデータベース、次いで、外部データベースに行われる方法の一例であり、プリズムまたはコンテンツをプリズムに提供するアプリケーションへの多くの他の類似タイプの変更が行われ得ることを理解し得る。
【０１６４】
３Ｄ空間環境において表示される１つのアプリケーションからの仮想コンテンツを３Ｄ空間環境において表示される異なるアプリケーションからの仮想コンテンツからプライベートに保つが、依然として、それと相互作用可能であるようにする問題は、１つのプログラムにコンテンツ作成（例えば、図１からのアプリケーション１４０）を管理させ、別個のプログラム（例えば、図１からのユニバースアプリケーション１３０）にコンテンツ表示を管理させることによって、解決され得る。
【０１６５】
図７は、いくつかの実施形態によるユニバースアプリケーションによって、アプリケーションによって提供される仮想コンテンツを複合現実３Ｄ空間環境の中に表示するためのアプローチのためのフローチャートを示す。ステップ７１０において、ユーザのユニバースアプリケーションは、仮想コンテンツをユーザのランドスケープ（例えば、３Ｄ空間環境）内に表示するための要求を受信し得る。いくつかの実施形態において、要求は、ランチャメニューとのユーザ相互作用によって開始されていることもあり、ユーザは、アイコンをアイコングリッドから選定し、アプリケーションを立ち上げ、仮想コンテンツをユーザのランドスケープの中に提供する。上で議論されるように、１つのアプリケーション（例えば、図１からのアプリケーション１４０）は、コンテンツ作成を管理し、別個のアプリケーション（例えば、図１からのユニバースアプリケーション１３０）は、コンテンツ表示を管理し得る。この処理の分離は、複数のアプリケーションが、ユーザのランドスケープ内に表示するためのコンテンツを作成することを可能にし得る一方、コンテンツの表示の管理は、別個のアプリケーションによって管理され、ユーザのランドスケープ内に表示される複数の仮想コンテンツが、特に、仮想コンテンツが互いに相互作用し始めるとき、ユーザに正確かつ現実的に表示されることを確実にする。
【０１６６】
７２０において、ユニバースは、アプリケーションによって作成されたコンテンツがユーザのランドスケープにおけるプリズムの境界内に表示され得るように、プリズムを作成し得る。プリズムは、プリズムの立体空間の境界を定義する境界を含み得るが、プリズムの境界の境界線は、ユーザに表示されないこともあることに留意することが重要である。これは、ユーザのランドスケープ内に表示されるためのプリズムの内側にレンダリングされた仮想コンテンツが、ユーザのランドスケープ内の仮想コンテンツを視認するユーザに可能な限り現実であるように見えるべきであるので、重要であり得る。仮想コンテンツを境を限る境界立体空間の境界線がユーザに視認可能である場合、仮想コンテンツは、閉じ込められた空間内にコンピュータ生成されたように不可避的に見え得る。したがって、プリズムは、境界線および境界を含み、仮想コンテンツをプリズムの境界内に閉じ込め得るが、境界線は、ユーザに表示されないこともある。プリズムの境界線は、システム開発および試験中等、ある状況において、表示され得る。いくつかの実施形態において、プリズムの境界線／境界は、例えば、設置中、ユーザに表示され得、したがって、ユーザは、プリズムが位置するであろう場所をより容易に理解することができる。
【０１６７】
いくつかの実施形態において、単一アプリケーションが、ユーザによって、複数の仮想コンテンツをユーザのランドスケープ内に表示することを要求され得る。単一アプリケーションによって表示された各仮想コンテンツは、それ自身の個々のプリズムに関連付けられ、それによって表示され得るか、または、単一プリズムを共有し得る。したがって、いくつかの実施形態において、アプリケーションが、追加の仮想コンテンツが表示されることを要求する場合、ユニバースは、アプリケーションのための１つ以上の追加のプリズムを作成し得、追加のコンテンツの各々は、それ自身のプリズムがユーザのランドスケープ内に展開／定着させられることを要求し得る。
【０１６８】
作成されたプリズムは、コンテンツを表示することを要求するアプリケーションの一意の識別子を提供され得、それによって、アプリケーションがユーザのランドスケープ内に表示されるためのコンテンツを提供すると、ユニバースは、アプリケーションから受信されたコンテンツをレンダリングするためのプリズムを一意に識別することが可能であり得る。さらに、プリズムは、事前に決定された機能性の組を自動的に有するように作成され得、それらは、いくつかの実施形態において、アプリケーションおよび／またはユニバースによって事前決定され得る。例えば、機能性の組は、プリズムに関して許容されるデフォルト最小／最大サイズ、プリズムがユーザに対してユーザのランドスケープ内に定着させられ得る距離に基づいて、プリズムをサイズ変更するためのアスペクト比、プリズムをユーザのランドスケープ内に定着するための定着タイプ等を含み得る。機能性の組は、プリズム属性としてローカルデータベースに記憶され得る。さらに、プリズムの作成を呼び出すアプリケーションに応じて、あるアプリケーション特定の属性も、プリズムのために作成され得る。
【０１６９】
７３０において、ユニバースは、アプリケーションによって作成された仮想コンテンツを受信し得る。コンテンツの受信時、ユニバースは、表示されるべき仮想コンテンツをプリズムの境界内にレンダリングし得る。図２において上で議論されるように、いくつかの実施形態において、アプリケーションは、コンテンツを作成し得、コンテンツを集中型レンダリングサービスクライアントを介してユニバースに送信し得、集中型レンダリングサービスは、ユニバース内で起動する。その時点から、ユニバースは、コンテンツを表示することを要求するアプリケーションのために作成されたプリズムの中にレンダリングし得る。ユニバースは、プリズムがユーザのランドスケープ内に正しく表示されることを確実にすることにも関与し得る。例えば、ユニバースは、プリズムがユーザのランドスケープ内の他のプリズムと重複しないことを確実にし得る。ユニバースは、上で説明されるような例外（例えば、共通定着点）が適用されない限り、新しいプリズムが既存のプリズムまたは実世界コンテンツに対して重複位置に設置されることができないことを確実にする。ユニバースは、プリズムが重複する場所にプリズムをユーザが設置することを可能にしないこともある。いくつかの実施形態において、アプリケーションとのクライアント／サーバ通信は、必要ないこともある。オペレーティングシステム（例えば、レンダリングを管理するシステムの部分）が、マルチスレッドのために構成される場合、アプリケーションは、クライアント／サーバ構造を伴わずに、直接、それら自体をプリズムの中にレンダリングし得る。ユニバースサーバのような中央機関が、次いで、衝突、移動、入力等の管理に関与し得る。
【０１７０】
７４０において、特定のアプリケーションまたはプリズムに適用され得るユーザの入力またはデフォルト定着ルールのいずれかに基づいて、プリズムは、（１）ユーザのランドスケープ内の空間の中の固定場所、（２）ユーザのランドスケープ内の物理的オブジェクト、（３）ユーザのランドスケープ内に表示される仮想オブジェクト、または、（４）特定のオブジェクト（例えば、ユーザの身体または身体部分（以降、身体中心定着とも称される）に対する固定距離に関連付けられ得る。いくつかの実施形態において、身体中心定着は、ユーザの身体部分に対するものであるか（例えば、身体固定）、または、頭部／ビュー位置に対するものであり得る（例えば、頭部固定）。例えば、プリズムは、プリズムがユーザの身体に対して固定されるように、身体固定位置に関連付けられ得る。ユーザが、その頭部を移動させる場合、コンテンツは、移動しないこともあるが、ユーザが歩行する場合、プリズムは、ユーザに伴って移動し、ユーザの身体に対する固定位置を維持し得る。別の例として、プリズムは、プリズムがユーザの頭部または姿勢に対して固定されるように、頭部固定位置に関連付けられ得る。ユーザが、その頭部を回転させる場合、プリズムは、ユーザの頭部移動に対して移動し得る。ユーザが、歩行する場合も、コンテンツも、ユーザの頭部に対して移動し得る。
【０１７１】
７５０において、プリズムは、ユーザのランドスケープの中に設置／定着させられる。ユーザがアプリケーションを立ち上げられた方法に応じて、プリズムは、特定の定着／場所とすでに関連付けられていることもある。例えば、ユーザは、アプリケーションアイコンをランチャメニュー内のアイコングリッドからドラッグすることによって、アプリケーションを立ち上げ、アイコンをユーザのランドスケープ内の特定の場所上に設置していることもあり、その時点で、プリズムが、その場所に作成され得、コンテンツは、その特定の場所においてプリズムの中にレンダリングされる。
【０１７２】
図８は、いくつかの実施形態によるアプリケーション状態を管理するための略図の例を示す。拡張現実コンテンツを管理、レンダリング、および表示するための高コンピューティング負荷の問題は、ユーザ、およびいくつかの実施形態において、ユーザの視野に対するプリズムの相対的位置および場所に基づいて、プリズムの状態を自動的に変化させることによって、解決され得る。略図８００は、いくつかの実施形態によるユーザの場所の鳥瞰図を示す。ユーザ８０５は、ｘ、ｙ、およびｚ軸における惑星の大まかな表現（例えば、物理的環境）である立体グリッド内に存在するように示される。グリッド線が例証的目的のために、ユーザ８０５からプリズムまでの距離が８７０の異なるプリズム状態を有することを示すために示される。ここで、ユーザの現在の場所の２Ｄ表現が、描写されている。当業者は、この図がユーザの現在の場所の３Ｄ表現であり得ることを理解し得る。しかしながら、簡単にする目的のために、図８は、２Ｄ空間を示すように図示されている。
【０１７３】
ユーザ８０５は、３×３セルの外部ゾーン８１０の中心に存在するように示される。加えて、外部ゾーン８１０は、アクティブゾーン８２０と、バッファゾーン８３０とを備えた２つの円形エリアに分けられる。外部ゾーン８１０は、３×３セルのグリッドを備え、ユーザ８０５は、グリッドの中心に位置する。ユーザ８０５が、ユーザのランドスケープを通して移動すると、それぞれのアプリケーションに関連付けられた他のプリズムは、図８に描写されるように、種々のゾーンに進入し、退出し得る。アクティブゾーン８２０は、ユーザ８０５の周囲のエリア（例えば、円形エリア）を図示し、アクティブゾーン８２０内に位置するプリズムのあるプリズム状態８７０を示す。例えば、ユーザ８０５のアクティブゾーン８２０内のスリーププリズムは、始動する必要があるが、起動している他のプリズムは、それらの状態が、アクティブであるが、アクティブゾーン８２０内でレンダリングしていなくとも８７０ｂ、起動したままでなければならない。
【０１７４】
バッファゾーン８３０は、アクティブゾーン８２０よりユーザからさらに離れたゾーンである。このゾーン内のプリズムは、状態変化を必要としないこともある。例えば、起動しているプリズムは、例えば、バッファゾーン内に位置する１つのプリズムが、アクティブであるが、非レンダリングのプリズム状態８７０ｂを有するなど、起動したままである。別の例として、スリーププリズムは、スリープのプリズム状態８７０ａを伴うバッファゾーン８３０内の２つのプリズムにおけるように、スリープのままであり得る。バッファゾーン８３０外であるが、外部ゾーン８１０内にあるプリズムは、それらが状態を変化させる必要がないこともあるほどユーザ８０５から十分に離れているので、スリープ状態のままであり得る。最後に、外側関連セル８１５内に位置するプリズムは、それらが、ユーザ８０５がそれぞれのプリズムからより近い距離内に来るまで、それらの特定のプリズムを起動させないことによって、複合現実システムが処理リソースを節約することが有益であり得るほどユーザ８０５から遠く離れて位置するので、非ロード、スリープ、または背景のプリズム状態を有し得る。
【０１７５】
プリズム状態凡例８６０は、配色に基づいて、プリズムの種々の異なるプリズム状態を開示し、赤色プリズムは、スリープのプリズム状態８７０ａを示し、橙色プリズムは、アクティブであるが、非レンダリングプリズム状態８７０ｂを示し、緑色プリズムは、アクティブであり、レンダリングプリズム状態８７０ｃを示し、紫色プリズムは、非ロードプリズム状態８７０ｄを示し、青色プリズムは、アクティブであり、非レンダリングの背景のプリズム状態８７０ｅを示す。
【０１７６】
ユーザ８０５は、特定の視野８４０を有し得、視野８４０内のプリズムは、錐台８５０の中にあり得る。錐台は、ユーザ８０５の画面上で可視である（例えば、図１からの頭部搭載型システム１６０を介して）３Ｄ領域である。錐台８５０内でのプリズムの起動は、アクティブであり、レンダリングするプリズム状態８７０ｃを有するプリズムによって示されるように、レンダリングであるべきである。錐台８５０内に位置し、かつバッファゾーン８３０内に位置するスリープのプリズム状態８７０ａを伴う１つのプリズムが存在するので、その特定のプリズムは、その特定のプリズムがバッファゾーン８３０および錐台８５０の両方内に位置するとき、始動し、レンダリングし得る。いくつかの実施形態において、頭部姿勢錐台は、プリズムのレンダリングをカリングするために使用され得、錐台カリングは、プリズムの隠された表面等の隠された表面を決定する方法である。
【０１７７】
下記の表１は、プリズム状態変化チャートを図示し、第１の列の複数行は、現在のプリズムの状態を説明する。後続列の複数行は、後続列によって示されるように、プリズムが現在のゾーンから新しいゾーンの中に移動するときの現在の状態から新しい状態へのプリズム状態の変化を説明する。後続列の複数行における値は、プリズムからユーザ８０５までの相対的距離に基づいて、プリズムが変化し得る（全くではないにしても）、新しい状態を説明する。
【表１】
2021507402.tif 000003
【０１７８】
例えば、プリズムが、「スリープ」の現在の状態にあり、ユーザ８０５に対してプリズムをアクティブゾーン８２０内に設置し得るユーザ８０５の移動に基づく場合、プリズムのプリズム状態は、「アクティブであるが、非レンダリング」状態に変更され得る。何故なら、スリーププリズムがユーザ８０５のアクティブゾーン８２０内にあるとき、それが始動すべきであるからである。加えて、同一例に従って、プリズムが、「スリープ」の現在の状態にあり、プリズムがバッファゾーン８３０内かつ錐台８５０内に来ると、状態は、不変のままである。何故なら、バッファゾーン８３０内において、スリープアプリが、バッファゾーン８３０内かつ錐台８５０内であっても、スリープのままであるからである。しかしながら、そのスリーププリズムが、アクティブゾーン８２０の中かつ錐台８５０の中に遷移すると、プリズムは、始動し始め得、プリズム状態は、アクティブ、レンダリング状態８７０ｃに変化し得る。
【０１７９】
図９は、いくつかの実施形態によるユーザ場所に対するプリズム状態を管理するためのフローチャートを示す。９１０において、プリズムの空間位置は、立体グリッドで記録され得る。空間位置は、ユーザのランドスケープ内に設置／定着させられた特定のプリズムの定着場所であり得る。例えば、プリズムは、壁またはテーブル等のユーザのランドスケープ内のオブジェクトに定着させられ得る。別の例として、プリズムは、惑星地球の浮いている３Ｄ球体等、ユーザのランドスケープ内の任意の特定のオブジェクトに関連付けられていない空間内の固定場所に定着させられ得る。プリズムが、開始されると、その空間位置は、立体グリッドで記録され、立体グリッドは、プリズムのコンテンツがその中にレンダリングされ得るプリズムの場所を識別するための世界に対するｘ、ｙ、およびｚ軸を有し得る。ユーザのランドスケープの中に設置された各プリズムは、パス可能世界システムに記憶されるプリズムのデータ構造内に記憶される（例えば、立体グリッドとして）特定の場所を有し得る。立体グリッドは、上で議論されるように、ｘ、ｙおよびｚ軸フォーマットにおける、惑星の大まかな表現を表し得る。任意の他の妥当と思われる座標または相対的設置システムも、使用され得る。
【０１８０】
９２０において、３Ｄ空間エリアを表す立体グリッドのセルが、識別される。セルは、プリズムが空間的に互いに接近している場合、１つ以上のプリズムを含み得る。いくつかの実施形態において、セルの幅は、アクティブゾーンの半径以上であり得る。いくつかの実施形態において、セルの幅は、アクティブゾーンの半径未満であり得る。アクティブゾーンの半径は、複合現実デバイスを使用するユーザから事前に構成された距離（例えば、２５メートル）までの距離の測定値を示し、それは、図８に描写されるようなアクティブゾーン８２０としての空間の円形および／または球状（または他の好適な成形される）エリアを定義するであろう。代替として、立体グリッドは、所定の長さを有するセルに分割され、複合現実デバイスを使用するユーザからの距離に対応する境界および境界線をさらに確立し、本開示の実施形態を実装するための異なるゾーンを確立し得る。
【０１８１】
９３０において、複合現実デバイスを使用するユーザがある場所のセルに移動すると、そのセルおよび近傍セル内の各プリズムの既知の位置の距離が、決定される。複合現実デバイスを使用するユーザが、ユーザのランドスケープを通して移動すると、各プリズムの最後の既知の位置に対する距離チェックが、ユーザの近傍内のプリズムの状態を管理するためにチェックされる。世界中のプリズムにわたって距離チェックを実施することを防止するために、システムは、立体グリッドを使用し、検索／チェック／計算／決定を複合現実デバイスの周囲のセル（例えば、セルおよび近傍セル）のみに制限することによって、距離チェック／計算／決定の量を最小化し得る。いくつかの実施形態において、ユーザによって占有されるセル内のプリズムのみが、距離チェックされる。いくつかの実施形態において、ユーザによって占有されるセル、またはユーザによって占有されるセルに隣接するセル内のプリズムのみが、距離チェックされる。いくつかの実施形態において、ユーザのＦＯＶ／ビュー錐台内のセルの全て内のプリズムが、距離チェックされる。いくつかの実施形態において、ユーザの１０フィートまたは２５フィート内等、ユーザのある距離内のプリズムが、距離チェックされ得る。
【０１８２】
９４０において、プリズムとユーザとの間の距離に応じて、プリズムの状態は、修正され得る。距離に加え、異なるゾーンおよびユーザの視野に対するプリズムの現在の状態等の他の要因も、プリズムの状態が修正され得るかどうかを決定付け得る。例えば、プリズムの現在の状態が、スリープであり、ユーザが、プリズムがアクティブゾーン８２０内かつ錐台８５０内に位置する場所に移動する場合、プリズムの状態は、表１に従って、スリープ状態からアクティブおよびレンダリング状態に変更され得る。しかしながら、スリーププリズムが、バッファゾーン８３０内かつ錐台８５０内に位置する場合、プリズムの状態は、表１に従って、プリズムがバッファゾーンの中かつ錐台ゾーンの中に移動させられるとき、スリープの現在の状態がスリープ状態のままであるので、変更されないこともある。バッファゾーンは、上で開示されるように、主に、プリズムの状態への断続的変化または高速変化を防止する。ユーザの頭部姿勢は、ユーザの頭部姿勢が、ユーザの視野を定義することに役立ち、それが、最終的に、錐台ゾーン８５０の定義を補助するので、プリズムの状態を修正し得る。上で開示されるように、ユーザの頭部姿勢は、ユーザの頭部の場所および／または向きの測定である。頭部姿勢情報は、ユーザの動的に変化する頭部場所および向きに合致するようにシーンをレンダリングし、仮想／拡張／複合空間内での増加した没入感を提供するために使用されることができる。
【０１８３】
いくつかの実施形態において、壁は、ユーザをプリズムから分離し得、それによって、プリズムは、ユーザの距離がプリズムをアクティブゾーン８２０内に設置する場合でも、および／または、ユーザの視野方向がプリズムを錐台ゾーン８５０内に設置する場合でも、スリープ状態のままであり、プリズムの状態は、ユーザがプリズムを見ることを防止する壁の妨害により、スリープ状態から変更されないこともある。さらなる算出処理は、システムが、距離および頭部姿勢がプリズムのための状態変化を示し得る場合でも、プリズムを遮断する壁またはオブジェクト等の他の要因がプリズムの状態を不変に保ち得ることを認識することによって、回避され得る。
（プリズム関係およびグループ化の管理）
【０１８４】
いくつかの実施形態において、集中型レンダリングシステムは、より大きい（例えば、ユニバース空間）シーングラフの一部として、クライアントプリズム２１５を変換／管理するためのサポートを有していないこともある。ユニバースプリズムは、追加の論理および機能性を伴うクライアントプリズムのインスタンスであり得る。ユニバースにおいて、あるグループのクライアントプリズム２１５を変換する能力は、変換ツリーを介してハンドリングされ得る。例えば、ランチャの各パネルは、別個のアプリケーションであり得、各パネルは、それ自身のプリズムに対応する。ユニバースがランチャに関連付けられた複数のプリズムをグループにグループ化することが可能であることが有益であり得、したがって、複数のプリズムは、一緒に管理され得、それによって、グループ内の１つのプリズムが修正されると、グループ内の他のプリズムも、影響され得、したがって、同様に修正される必要があり得る。これは、複数のアプリケーションが、単一アプリケーションであるかのように見え、挙動することを有効にし得る。例えば、ランチャが、ユーザの身体に定着させられている（例えば、身体動態）場合、ユーザがその環境全体を通して移動すると、ランチャの場所のみならず、複数のプリズムに対応するそのパネルの場所も、グループとして修正／変換される必要があり得る。
【０１８５】
別の例として、プリズムを要求するアプリケーションは、アプリケーションのプリズムに比較的に近接して位置付けられた二次ＵＩ（閉じるボタン、ピン固定／ピン固定解除、設定等を伴う）を有し得る。ユニバースは、これらの２つのプリズムをグループとして一緒にグループ化し、２つのプリズムを２つのノードを有するグループとして管理し得る。階層／関係様式および／または論理グループ化構造における複数のプリズムの関連付けの管理は、変換ツリーおよび／またはグループツリー（下で議論される）を用いてハンドリングされ得る。
【０１８６】
いくつかの実施形態において、変換ツリーは、ユニバース内のプリズムおよび／またはプリズムのグループを変換／編成するように構成されたツリーデータ構造であり、中央レンダリングシステムによってレンダリングされ得る。変換ツリー構造は、ノードのシーングラフを有し得、各ノードは、プリズムに対応する移動可能ローカル空間を提供する。シーングラフのノードは、プリズムに対応し得る。プリズムは、ツリーノードであり得る。プリズムではない、他のツリーノードが存在し得る。これらの「他のツリーノード」は、コンテンツをグループ化するために、または中間変換として使用され得る。さらに、ノードは、１つのノードが変換されると、同じグループ内の他のノードがそれとともに変換されるように、他のノードとグループ化され得る。いくつかの実施形態において、グループツリーは、ノードのグループ化を管理し得る。
【０１８７】
グループツリーは、ノードの論理グループ化を記憶したツリーデータ構造であり得る。
【０１８８】
いくつかの実施形態において、プリズムは、重複せず、ユーザのランドスケープ内に表示された独立コンテンツとして取り扱われ得るので、これは、１つのアプリケーションからの仮想コンテンツが異なるアプリケーションからの仮想コンテンツと緊密に相互作用することが可能でないという問題を導入し得る。しかしながら、単一アプリケーションからの仮想コンテンツの周囲に緊密に適合する複数のより小さいプリズムを作成することが、この問題を解決し得る。例えば、単一アプリケーションのために開かれた複数のプリズムが存在し得るが、ユーザは、複数のプリズムを１つの単一化されたシステム（例えば、変換ツリーの親／子プリズム）として知覚し得る。加えて、プリズムは、いくつかのプリズムが本質的に互いのピアであり得るように、一緒にグループ化され得る。１つのアプリケーションからのコンテンツの全てが、大きなボックス内にある場合、より多くの「空気」または死空間がプリズム内に存在し得る。これは、異なるアプリケーションからのコンテンツがそれらのエリア内のコンテンツと相互作用することを防止し、したがって、あるタイプの「現実的」相互作用が生じることを防止し得る。
【０１８９】
例えば、相互作用は、２台の３Ｄ車の単純衝突であり得る。衝突は、２台の３Ｄ車がレンダリングされたプリズムの各々が、３Ｄ車に対して、プリズムの見えない境界間にユーザが実際に互いに接触した２台の車を見ることが可能ないこともあるほどの大きな「死空間」を有する場合、ユーザに対して「現実」であると思われないこともある。しかしながら、プリズムが、より小さく、３Ｄ車の各々の周囲に緊密に適合する場合、あるビュー角度からは、２台の３Ｄ車が、衝突の結果、互いに若干接触し、互いに跳ね返るかのように、ユーザに見え得る。
【０１９０】
図１０は、いくつかの実施形態によるシーングラフの例示的ツリーノードを示す。ツリーノード１０００は、ランチャメニューのための例示的ツリーノードを描写する。ユニバースノード１００２は、ユーザの複合現実システムのシーングラフのこのツリーノードにおけるルートノードである。複合現実システムが始動すると、ランチャアプリケーションは、ユーザにランチャメニューとして表示するために開始され得る。ランチャアプリケーションが、立ち上げられるにつれて、シーングラフにおけるランチャメニューの位置を表すランチャツリーノード１００４が、作成され得る。ランチャツリーノード１００４は、他のノードのための定着としての役割を果たし得、他のノードは、ランチャメニューに従属するか、または、ランチャメニューの子である。
【０１９１】
例えば、アイコングリッドアプリケーションも、立ち上げられ得る。アイコングリッドツリーノード１００９ａが、ランチャアプリケーションのシーングラフ識別子（ＳＧＩＤ）とともに、ツリーノードに追加され得る。アイコングリッドアプリケーションは、ランチャメニューのためのパネルのカルーセルの１つのパネルとして表示され得るので、アイコングリッドツリーノード１００９は、ランチャペーンとして標識されるダッシュ境界線で示される子ノード１００８内に描写されように、ランチャツリーノード１００４の子ノードであり得る。ランチャの従属アプリケーションのさらに多くが、立ち上げられ、ランチャツリーノード１００４の子ノード（例えば、最近アクセスされたアプリケーションツリーノード１０２７およびソーシャルアプリケーションツリーノード１０２９）としてツリーノードに追加され得る。ランチャメニューに関連付けられたノードのグループは、ランチャグループ１００６として一緒にグループ化され得る。
【０１９２】
ランチャメニューが、移動させられると（例えば、ビルボード表示）、ランチャグループ１００６内のノードは、グループとして移動させられ得る。ランチャノードを定着ノードとして設定することは、論理をランチャパネルのうちの１つに適用し、他の関連パネルのグループ化を維持するための最善を期待するのではなく、ランチャメニューを精密に位置付ける／ビルボード表示するための正確な手段を提供するために必要であり得る。子ノード（例えば、アイコングリッド、最近アクセスされたアプリケーション、およびソーシャルアプリケーション）は、ランチャツリーノードに対して自動的に再位置付けされる。ユニバースは、複数のプリズムのシーングラフ全体を所有し得る。いくつかの実施形態において、各プリズムは、ヌル親およびゼロ子から開始し、事実上、１つのノードを伴うシーングラフにし得る。いくつかの実施形態において、アプリケーションが、プリズムを要求すると、ユニバースは、（１）要求されるプリズムのためのノードと、（２）二次ＵＩのためのノードとを作成し得る。ユニバースは、次いで、二次ＵＩをプリズムに対して位置付け得る。いくつかの実施形態において、ユニバースは、二次ＵＩノードをプリズムノードの子として設置し得る。
（変換ツリー）
【０１９３】
上で議論されるように、変換ツリーは、ユニバース内のプリズムおよび／またはプリズムのグループを変換／編成するように構成されたツリーデータ構造である。変換ツリー構造は、ノードを備えたシーングラフと見なされ得、各ノードは、プリズムに対応し得る移動可能ローカル空間を提供する。シーングラフのノードは、プリズムに対応し得るか、または、あるグループのプリズムもしくは他のツリーノードを変換するためのみに使用されるノードであり得る。この場合、ノードは、１つのノードが変換されると、同じグループ内の他のノードがそれとともに変換されるように、親ノードの下で他のノードとグループ化され得る。いくつかの実施形態において、プリズムは、１つのみのプリズム（すなわち、それ自体）を伴う変換ツリーにおけるものであるが、１つのプリズムを別のプリズムを伴う親にする必要性が生じるとき、その能力がある。いくつかの実施形態において、プリズムシーングラフ／変換ツリーは、子プリズムがその親を変えるとき、子の世界変換が変化しないこともあるという点で、従来のシーングラフと異なり得る。例えば、プリズムが、ユーザの正面にレンダリングする場合、プリズムの親が変化すると、プリズムは、その現在の位置から移動しないであろう。いくつかの実施形態において、変換ツリー内の各プリズムの行列は、列優先であり得、それは、ツリー内のプリズムの世界行列の計算が、親変換をプリズムのローカル変換の左に付加することによって行われなければならないことを意味する。例えば、プリズムの世界変換は、親の世界変換×プリズムのローカル変換に等しくあり得る。
【０１９４】
いくつかの実施形態において、基本ツリー論理は、以下のうちの１つ以上のものとして定義され得る：（１）ノードは、それ自体を別のノードに対する子として設定し得る；（２）ノードは、異なるノードをそれ自体に対する子として設定し得る；（３）ノードは、その親を獲得し得る；（４）ノードは、その子を獲得し得る；（５）ノードは、その子のいずれかを除去し得る（これは、子を孤児にしない：それらは、単に、このノードの親に取り付くか、またはルートユニバースノードを含むツリー内の任意の他のノードに取り付き得、それは、それを世界空間内に置き得る）；および、（６）ノードは、その親を除去し得る。ノードの挿入および除去は、ノードおよびその子のローカル変換を更新し得る。これは、ノードの親を変化させることが、その世界変換を変化させず、実際、世界変換が保存され得ることを意味する。いくつかの実施形態において、ノードのローカル変換を変化させる任意の動作は、ノードおよびその子の世界変換を更新し得る。
【０１９５】
いくつかの実施形態において、変換ツリー内の各ノードは、以下の行列成分のうちの１つ以上を含み得る：（１）ローカル変換；（２）回転行列（これは、ローカル変換を算出するために使用され得る）；（３）スケールベクトル（これは、ローカル変換を算出するために使用され得る）；（４）位置ベクトル（これは、ローカル変換を算出するために使用され得る）；（５）ローカルから世界への変換（これは、便利のためにキャッシュされ得る）；および、（６）ローカルから世界への拡大縮小（これは、便利のためにキャッシュされ得る）。いくつかの実施形態において、ローカル変換は、その親ノードに適用される変換と見なされ得る。ノードが、親を有していない場合、ローカル変換は、ローカルから世界への変換に等しくあり得る。ローカル変換は、以下のように算出され得る。
ローカル変換＝位置×回転行列×スケール
【０１９６】
この式は、「その原点としての親ノードを使用して、それを最初に拡大縮小し、次いで、それを回転させ、次いで、その原点ノードに対してその位置を変化させることによって、このノードを変換する」と読み取られ得る。回転、拡大縮小、および位置付けは、それらのいずれかをインターフェースを通して別個に修正するためのゲッタ／セッタを提供することを容易にするために、別個に保たれ得る。ノードが位置を変化させると、子ノード世界変換は、それに伴って更新され得る。これらの行列が、順に乗算されると、次いで、ローカル／世界（ロカル・ツー・ワールド）行列が、構築され得る。効率目的のために、計算されたローカル／世界行列も、記憶され得る。いくつかの実施形態において、ノードのローカルから世界への変換を計算するために、以下の方程式が、使用され得る。
世界変換＝親世界変換×ローカル変換
【０１９７】
行列乗算の順序に留意されたい。いくつかの実施形態において、行列は、列優先であり、ｘ、ｙ、ｚおよび位置が各列にレイアウトされることを含意する。これは、親ノード行列が、常時、子行列の左に現れることを意味する。図１０Ｂは、小変換ツリー１０１０と各ノードのための各世界変換が計算される方法を図示する。
【０１９８】
変換ツリーを利用する他の好適な方法またはシステムが、使用され得る。
（グループツリー）
【０１９９】
いくつかの実施形態において、変換ツリーの追加の特徴は、変換ツリー内の任意のプリズムを任意の他のプリズムとグループ化する能力である。グループ内のプリズムは、同じまたは異なる変換ツリー内にあり得る。加えて、プリズムは、同じグループおよび変換ツリー内の別のプリズムの子または子孫であることができる。いくつかの実施形態において、変換が、グループ内のプリズムのうちの１つに適用されると、グループ内の他のプリズムの全てが、それとともに変換される。プリズムグループ論理は、グループメンバが属するどの変換ツリー内の変換を更新することにも対処する。グループ内にないが、そのグループ内にあるプリズムの子である任意のプリズムも、グループとともに変換し得る。グループ内のプリズムが、変換されると、その子も、変換される。例えば、プリズムＡおよびＢが、グループ内にあり、プリズムＣが、プリズムＢの子であるがグループ内になく、プリズムＢが、左に１メートル移動させられる場合、プリズムＢおよびＣの両方は、左に１メートル移動させられる。しかしながら、プリズムＣが、左に１メートル移動する場合、プリズムＣのみが、左に１メートル移動させられる。本開示は、従来のシーングラフといくつかの特徴を共有するが、追加の機能性／挙動も同様に有し得る：１）間接子孫とグループ化されるノードの間接子孫の能力（したがって、ノードと間接子孫とが同じ変換を受ける（それらがグループ化される場合））、および／または、２）全体的に別個の変換ツリー上に位置する２つのノードをグループ化する能力等。いくつかの実施形態において、間接子孫は、直接、親ノードに接続されない、例えば、可能性として、２つ以上の介在ノードによって分離されたノードであり得る。いくつかの実施形態において、グループ化論理は、現在のグループ内に属する全てのプリズムのためのルートグループノードを作成することによって実装され得る。同じグループ内の任意のプリズムが、グループ内の他のプリズムの子孫である場合、それらは、変換グループツリーにおいてもそれらのプリズムの子孫である。いくつかの実施形態において、別個のデータ構造が、グループのために作成されず、代わりに、グループが、プリズムに取り付けられる追加のフラグを有し得ることに留意されたい。いくつかの実施形態において、グループ内の任意のプリズムが変換される場合、変換が、計算され、ルートグループノードに適用され得る。この変換は、任意の他の変換のように、変換ツリーを伝搬し得、変換は、変換ツリー内の各子のみならず、グループ内の各プリズムも伝搬する。
【０２００】
以下は、ノードをグループツリーに追加すること、およびそれから除去することの種々の実施形態である。図１０Ｃ−１０Ｅは、新しいグループを作成するための一実施形態を図示する。図１０Ｃにおける変換ツリー１０２０に関して、本実施形態は、現在、別個の変換ツリー内にあるノードＡとＥとを一緒にグループ化するステップを図示するであろう。（１）ＡまたはＥがすでにグループ内にあるかどうかに関して、決定が行われる。現在、Ａも、Ｅも、グループ親を有しておらず、したがって、いずれも、グループ内にない。したがって、グループルートを作成する。図１０Ｄにおいて、グループルート１０２４を有するグループツリー１０２２が、作成される。（２）図１０Ｅに描写されるように、ＡおよびＥのグループ親をグループルート１０２４に割り当てる。（３）ＥがＡの先祖（または親）であるかどうかを決定する。Ａは、親を有しておらず、したがって、Ｅは、Ａの先祖ではない。（４）ＡがＥの先祖（または親）であるかどうかを決定する。Ｅは、親を有しておらず、したがって、Ａは、Ｅの先祖ではない。
【０２０１】
図１０Ｆ−１０Ｉは、新しいグループを作成するための別の実施形態を図示する。図１０Ｆにおける変換ツリー１０３０に関して、本実施形態は、ノードＡとＣとを一緒にグループ化するステップを図示し、ノードＣは、変換ツリー１０３０に描写されるように、ノードＡの子ノードである。（１）ＡまたはＣがすでにグループ内にあるかどうかに関して、決定が行われる。現在、Ａも、Ｃも、グループ親を有しておらず、したがって、いずれも、グループ内にない。したがって、グループルートを作成する。図１０Ｇにおいて、グループルート１０３４を有するグループツリー１０３２が、作成される。（２）ＡおよびＣのグループ親は、グループルート１０３４である。図１０Ｈに描写されるように、ＡおよびＣをグループルート１０３４に割り当てる。（３）ＣがＡの先祖（または親）であるかどうかを決定する。Ａは、親を有しておらず、したがって、Ｃは、Ａの先祖ではない。（４）ＡがＥの先祖（または親）であるかどうかを決定する。Ａは、Ｃの先祖である。したがって、Ｃのグループ親をＡに再度割り当てる。
【０２０２】
図１０Ｊ−１０Ｋは、非グループ化ノードを既存のグループに追加する実施形態を図示する。図１０Ｊにおける変換ツリー１０４０およびグループツリー１０４２に関して、本実施形態は、変換ツリー１０４０からのノードＣおよびＥを同じグループの中にグループ化するステップを図示する。（１）ＣまたはＥがすでにグループ内にあるかどうかを決定する。図１０Ｊに描写されるように、Ｅは、Ａとのグループ内にある。（２）Ｃのグループ親を決定する：Ｅと同じグループ内に属するＣの親または先祖を見出す。ここで、Ａは、Ｅとのグループ内にある。Ａは、Ｃの先祖である。Ｃのグループ親をＡに割り当てる（図１０Ｋ参照）。（３）Ｃがグループ内の任意の他のノードの先祖または親を有するかどうかを決定する。Ｃは、子を有していない。処理は、停止する。
【０２０３】
図１０Ｌ−１０Ｎは、非グループ化ノードを既存のグループに追加する別の実施形態を図示する。図１０Ｌにおける変換ツリー１０５０およびグループツリー１０５２に関して、本実施形態は、変換ツリー１０５０からのノードＢおよびＥを同じグループ（例えば、グループツリー１０５２）の中にグループ化するステップを図示する。（１）ＢまたはＥがすでにグループ内にあるかどうかを決定する。ここで、Ｅは、ＡおよびＣとのグループ内にある。（２）Ｅと同じグループ内に属するＢの親または先祖を見出すことによって、Ｂのグループ親を決定する。ここで、Ａは、Ｅとのグループ内にあり、Ｂの親である。Ｂのグループ親をＡに割り当てる（図１０Ｍ参照）。（３）Ｂがグループ内の他のノードのいずれかの親または先祖であるであるかどうかを決定する。ここで、Ｃは、Ｂの子または子孫である。Ｃのグループ親をＢに変更する（図１０Ｎ参照）。
【０２０４】
図１０Ｏ−１０Ｒは、非グループ化ノードを既存のグループに追加する別の実施形態を図示する。変換ツリー１０６０およびグループツリー１０６２に関して、本実施形態は、変換ツリー１０６０からのノードＡおよびＥを同じグループ（例えば、グループツリー１０６２）の中にグループ化するステップを図示する。（１）ＡまたはＥがすでにグループ内にあるかどうかを決定する。ここで、Ｅは、ＢおよびＦとのグループ内にある。（２）Ｅと同じグループ内に属するＡの親または先祖を見出すことによって、Ａのグループ親を決定する。ここで、Ａは、親を有しておらず、したがって、Ａをグループルート１０６４に割り当てる（図１０Ｐ参照）。（３）Ａがグループ内の他のノードのいずれかの親または先祖であるかどうかを決定する。ここで、Ａは、Ｂを子として見出す。したがって、Ｂは、そのグループ親をＡに設定する（図１０Ｑ参照）。加えて、Ａは、Ｆを子孫として見出す。ＡおよびＦは、同じグループ（例えば、グループツリー１０６２）内に属する。したがって、Ｆは、そのグループ親をＡに設定する（図１０Ｒ参照）。
【０２０５】
図１０Ｓ−１０Ｗは、グループ化ノードを別のグループに追加する実施形態を図示する。図１０Ｓにおける変換ツリー１０７０およびグループツリー１０７２に関して、本実施形態は、ノードＣおよびＧを同じグループの中にグループ化するステップを図示する。（１）ＣまたはＧがすでにグループ内にあるかどうかを決定する。ここで、Ｃは、Ｄとのグループ内にある。Ｇは、ＢおよびＦとのグループ内にある。（２）ＣおよびＧの両方がグループ内にあるので、最終グループをＣおよびＤのグループ（例えば、グループルート１０７４）であると恣意的に選定することによって、２つを単一グループの中にマージする。（３）古いグループルート１０７６の直系の子のみを追加する。これは、単に、ＢおよびＦをＣのグループに追加することを意味する。（４）ＢをＣのグループに追加する。（４ａ）Ｃと同じグループ内に属するＢの親または先祖を見出すことによって、Ｂのグループ親を決定する。ここで、グループ親が存在しない。したがって、Ｂをグループルート１０７４の子として追加する（図１０Ｔ参照）。（４ｂ）Ｂがグループ内の他のノードのいずれかの親または先祖であるかどうかを決定する。ここで、Ｂは、Ｃを子として見出す。ＢおよびＣは、同じグループ内に属する。Ｃは、そのグループ親をＢに設定する（図１０Ｕ参照）。（５）ＦをＣのグループに追加する（注記：これは、恣意的ではない。Ｇは、次に追加されるように選定されず、単に、Ｆとともに引き込まれるであろう）。（５ａ）Ｃと同じグループ内に属するＦの親または先祖を見出すことによって、Ｆのグループ親を決定する。ここで、Ｆは、Ｄを親として見出す。Ｆは、そのグループ親をＤに設定する（図１０Ｖ参照）。Ｇは、同じグループの中に自動的に置かれることに留意されたい。（５ｂ）Ｆがグループ内の他のノードのいずれかの親または先祖であるかどうかを決定する。ここで、Ｆは、Ｇを見出すが、Ｇの親は、すでにＦである。（６）古いグループルート１０７６を削除する（図１０Ｗ参照）。
（グループの変換）
【０２０６】
いくつかの実施形態において、グループ内に属するノードに直接適用された任意の変換は、グループをそれとともに変換し得る。グループノードに行われる間接変換は、グループを変換しないこともある。例えば、親ノードが、グループ内になく、その子が、グループ内にあり、親が、変換される場合、子のグループ内のノードは、子の変換が変化する場合でも、それとともに変換しない。グループ全体の移動が所望される場合、親が、グループに追加されるべきである。
【０２０７】
グループに適用するための変換を計算するために使用するための変換は、グループルートの各直系の子に適用されなければならない。
【０２０８】
図１０Ｘ−１０Ｙは、本開示のいくつかの実施形態によるサンプル計算を図示する。図１０Ｘに描写されるような所与の変換ツリー１０８０およびグループツリー１０８２に関して、本実施形態は、変換をノードＡに適用する。Ａは、グループツリー１０８２内に属するので、ノードＣ、Ｄ、およびＥは、ノードＡとともに変換されることが予期される。加えて、グループ内に属さない、ノードＢも、Ａの子であるので、グループとともに変換しなければならない。Ａの新世界行列をＭａｗ’として示すこととし、Ｍａｗ’は、「ｍａｔｒｉｘ  ａ  ｗｏｒｌｄ  ｎｅｗ」を表す。Ａの旧世界行列をＭａｗとして示すこととし、Ｍａｗは、「ｍａｔｒｉｘ  ａ  ｗｏｒｌｄ  ｏｌｄ」を表す。Ｍａｗ’を得るためにＡに適用するための行列をＭｇｗとして示すこととし、Ｍｇｗは、「ｍａｔｒｉｘ  ｇｒｏｕｐ  ｗｏｒｌｄ」を表す。目標は、グループルート（Ｍｇｗ）に設定できる行列を見出すことであり、それがノードＡの世界行列に適用されると、それは、ノードＡの新しい行列に等しいであろう。この同じ行列は、グループルートの他の直系の子にも適用される。
【０２０９】
図１０Ｙは、変換をノードＡに適用するためのサンプル計算を図示する。図１０Ｙから、ノードＡが、その行列が変化させられるものであるので、ノードＡに着目する。すなわち：
【０２１０】
Ｍａｗ’＝Ｍｇｗ×Ｍａｗ
【０２１１】
Ｍａｗ’およびＭａｗが既知であり、Ｍｇｗを解く
【０２１２】
Ｍｇｗ＝Ｍａｗ’×Ｍａｗ＾−１
【０２１３】
したがって、グループルートの各子ノードに関して、ノードの世界変換を：子ノード新世界行列＝Ｍｇｗ×（子ノード旧世界行列）に設定する。この例に関して、Ｍｇｗをグループルートの２つの直系の子、ＡおよびＥに適用する。
Ｍａｗ’＝Ｍｇｗ×Ｍａｗ
＝（Ｍａｗ’×Ｍａｗ＾−１）×Ｍａｗ
＝Ｍａｗ’
Ｍｅｗ’＝Ｍｇｗ×Ｍｅｗ
＝（Ｍａｗ’×Ｍａｗ−１）×Ｍｅｗ
【０２１４】
Ａの最終世界変換が所望されるＭａｗ’であることに留意されたい。変換は、変換ツリーを伝搬するので、全ての子ノード（同じグループの一部であるかどうかにかかわらず）が更新される。これは、ノードＢも更新されることを意味する。
【０２１５】
図１０Ｚ−１０ＡＡは、本開示のいくつかの実施形態によるサンプル計算を図示する。図１０Ｚに描写されるような所与の変換ツリー１０９０およびグループツリー１０９２に関して、本実施形態は、変換をノードＣに適用する。Ｃは、グループ内に属するので、ノードＡ、Ｄ、およびＥは、それとともに変換されることが予期される。加えて、グループ内に属していない、ノードＢも、Ａの子であるので、グループとともに変換しなければならない。Ｃの新世界行列をＭｃｗ’として示すものとし、Ｍｃｗ’は、「ｍａｔｒｉｘ  ｃ  ｗｏｒｌｄ  ｎｅｗ」を表す。Ｃの旧世界行列をＭｃｗとして示すものとし、Ｍｃｗは、「ｍａｔｒｉｘ  ｃ  ｗｏｒｌｄ  ｏｌｄ」を表す。Ｍａｗ’を得るためにｃに適用される行列をＭｇｗとして示すものとし、Ｍｇｗは、「ｍａｔｒｉｘ  ｇｒｏｕｐ」を表す。目標は、グループルート（Ｍｇｗ）に設定できる行列を見出すことであり、それがノードＣの世界行列に適用されると、それは、ノードＣの新しい行列に等しいであろう。この同じ行列は、グループ部屋の他の直系の子にも適用される。
【０２１６】
図１０ＡＡを参照すると、ノードＣが、その行列が変化させられるものであるので、ノードＣに着目する。したがって、Ｍｃｗ’＝Ｍｇｗ×Ｍｃｗである。Ｍｃｗ’およびＭｃｗが既知であるので、Ｍｇｗを解く。Ｍｇｗ＝Ｍｃｗ’×Ｍｃｗ＾−１．したがって、グループルートの各子ノードに関して、ノードの世界変換を「子ノード新世界行列＝Ｍｇｗ×（子ノード旧世界行列）に設定する。この例に関して、Ｍｃｗと等しいものを思い出されたい（Ｍｃｗ＝Ｍａ１×Ｍｂ１×Ｍｃ１）。それをＭｇｗ＝Ｍｃｗ×Ｍｃｗ＾−１と組み合わせると、Ｍｇｗ＝Ｍｃｗ’×（Ｍａ１×Ｍｂ１×Ｍｃ１）＾−１が得られ、それは、Ｍｇｗ＝Ｍｃｗ’×Ｍｃ１＾−１×Ｍｂ１＾−１×Ｍａ１＾−１である。ＡおよびＥは、ルートノードであるので、Ｍａｗ＝Ｍａ１およびＭｅｗ＝Ｍｅ１であることを覚えておかれたい。それによって、全てのノードの新しい変換を見出し得る。Ｍｇｗをグループルートの２つの直系の子、ＥおよびＡに適用する。
（Ｅは、変換ツリールートノードであり、したがって、Ｍｅｗ＝＝Ｍｅ１である）。
Ｍｅｗ’＝Ｍｇｗ×Ｍｅｗ
＝（Ｍｃｗ’×Ｍｃ１＾−１×Ｍｂ１＾−１×Ｍａ１＾−１）×Ｍｅｗ
＝（Ｍｃｗ’×Ｍｃ１＾−１×Ｍｂ＾−１×Ｍａ１＾−１）×Ｍｅｌ
（Ａは、変換ツリールートノードであり、したがって、Ｍａｗ＝＝Ｍａ１である）
Ｍａｗ’＝Ｍｇｗ×Ｍａｗ
＝（Ｍｃｗ’×Ｍｃ１＾−１×Ｍｂ１＾−１×Ｍａ１＾−１）×Ｍａｗ
＝（Ｍｃｗ’×Ｍｃ１＾−１×Ｍｂ１＾−１×Ｍａ１＾−１）×Ｍａ１
（Ａは、他のノードの親であるので、子ノードＢおよびＣの世界変換を更新する）
Ｍｂｗ’＝Ｍａｗ’×Ｍｂ１
＝（Ｍｃｗ’×Ｍｃ１＾−１×Ｍｂ１＾−１）×Ｍｂ１
＝Ｍｃｗ’×Ｍｃ１＾−１
Ｍｃｗ’＝Ｍｂｗ’×Ｍｃ１
＝（Ｍｃｗ’×Ｍｃ１＾−１）×Ｍｃ１
＝Ｍｃｗ’
ノードＣの最終世界変換が所望されるＭｃｗ’であることに留意されたい。
【０２１７】
いくつかの実施形態において、変換ツリーおよび変換グループ機能性は、ユニバース自体内で実装され得る。いくつかの実施形態において、他のアプリケーション（例えば、アプリケーション１４０、アイコングリッドアプリケーション２６０、ステータスバーアプリ２７０、ソーシャルパネルアプリ２８０、ストアパネルアプリ２９０等）が、ユニバースがこの機能性を管理し得るので、この種類の機能性を必要としないこともある。グループツリーおよび／または変換グループを利用する他の好適な方法またはシステムが、使用され得る。
（設置式ランチャ）
【０２１８】
いくつかの実施形態において、ユーザは、アプリケーションを立ち上げること、またはランチャを持続的にピン固定することを欲するランチャをそのランドスケープ内に設置することが可能であり得る。これは、ランチャがユーザの環境の自然な延長であることを可能にし、デジタルと物理的世界との間のクリア接続を作成する。その開いた状態にある設置式ランチャは、ある場所に取り付けられることを除き、通常ランチャと同じレイアウトおよび構造を有し得、拡大および／または縮小され得る。いくつかの実施形態において、ユーザが、設置式ランチャを作成すると、ユーザは、ランチャをその場所に持続的にピン固定するオプションを有する。この場合、ランチャは、ユーザがそれを移動または除去するまで、その場所に留まり得る。通常ランチャは、ランチャがピン固定されている場合でも、ユーザがホームボタンを押すと、依然として、生じ得る。いくつかの実施形態において、ユーザは、複数のランチャをピン固定することが可能である（したがって、例えば、ユーザは、それらをコンテンツを最も立ち上げる場所に置き得る）。ピン固定式ランチャは、その場所から立ち上げられた最近のアプリケーションを示し得る。これは、各ランチャが存在する空間に対して調整されることを可能にする。いくつかの実施形態において、ランチャアプリケーションをある場所にピン固定する挙動は、抽出可能コンテンツマネージャ（ＥＣＭ）によってシミュレートされ、ＥＣＭは、ランチャピン固定アイコンの外観を与える。これは、文字通り、アイコンを別個のプリズムの中にコピーし、ユーザがそのプリズムを移動させることを可能にすることによって行われる。
【０２１９】
いくつかの実施形態において、ランチャは、アプリケーションであり得、ランチャカルーセルおよびランチャメニューのパネルが別個のプリズムの内側に提示され得るので、プリズム自体は、ユーザのランドスケープ内に設置され得る。
【０２２０】
図１１は、いくつかの実施形態による設置式ランチャの例示的ビューを示す。図１１に示されるように、ランチャメニュー１１００は、アイコングリッドパネル１１２０と、最小化されたソーシャルパネル１１１０と、最小化されたストアパネル１１３０とを含み得る。アイコングリッドパネル１１２０は、ユーザが立ち上げ得るアプリケーションのアイコンを能動的に表示し得、最小化されたソーシャルパネル１１１０をアイコングリッドパネル１１２０の左に伴い、最小化されたストアパネル１１３０を右に伴う。画像アイコン１１４０は、ランチャが、特定の場所（この例において、腰掛の上）に設置されたことをユーザに示し得る。異なる画像アイコン１１４０は、設置式ランチャとは対照的に、ピン固定式ランチャを示し得る。いくつかの実施形態において、異なる数のパネルおよび／またはパネルのための異なるコンテンツが、使用され得る。
【０２２１】
いくつかの実施形態において、ピン固定式ランチャメニューは、持続的に記憶され、ユーザがランチャをその場所から移動または除去するまで、その場所にピン固定されたままであり得る。ユーザが複合現実システムをシャットダウンする場合でも、複合現実システムの再開時、ランチャメニューは、基準の組（ユーザがピン固定式ランチャメニューの近傍に存在する等）が満たされる場合、システムが完全に立ち上げられた後、その場所に表示され得る。いくつかの実施形態において、設置またはピン固定式ランチャから立ち上げられるアプリケーションは、ピン固定または設置式ランチャと同じ場所に生成および表示され得る。いくつかの実施形態において、ユーザが、ランドスケープアプリケーションを選択すると、ランチャは、消失し得、アプリケーション（例えば、プリズム）が、同じ場所に現れ得る。
【０２２２】
ユーザが、ランチャをその場所に持続的にピン固定するように選定する場合、ランチャは、ユーザがランチャをその場所から移動または除去するまで、そこに留まり得、ユーザは、ランチャと相互作用し、アプリケーションをその場所から立ち上げ得る。ユーザが、ランチャと相互作用しない場合、そのアイドル最小化状態に入り得る。ユーザが、ランチャと相互作用していないとき、設置またはピン固定式ランチャの状態は、最小化された／アイドル状態に変化させられ得る。ここから、設置式ランチャは、時間、主なストアコンテンツ、主なソーシャル連絡先、ブランデッド機会／体験、および／または他のコンテンツ等を示し得る。
【０２２３】
図１２は、いくつかの実施形態による設置式ランチャがアイドル／スリープ状態にある間、表示され得るコンテンツの例示的タイプを示す。その最小化／スリープ状態における設置式ランチャの標準的ビューは、現在の時間および日付を示す時間１２１０を表示し得る。ユーザが、頭部姿勢を用いて設置式ランチャの上でホーバーリングすると、および／または、設置式ランチャをクリック／選択すると、ランチャは、状態をスリープからアクティブおよびレンダリングに変化させ、その完全アクティブビューを立ち上げ、例えば、少なくとも、アイコングリッドおよび対応するパネルを示し得る。いくつかの実施形態において、主なストアコンテンツ１２２０が、標準的ビュー時間および日付１２１０の代わりに表示され得る。主なストアコンテンツ１２２０は、製品のクイック双方向瞥見を与えるアプリケーションの事前にダウンロードされたプレビューであり得る。表示され得る他のタイプのコンテンツは、例えば、子供の玩具１２３０または日常的メッセージを伴う風船１２４０等の魅力的体験を含み得る。これらの魅力的体験は、デバイスのユーザのためのコンテンツおよび創造性を含み得る。芸術家、音楽家、および情報発信者が、これらのコンテンツを作成し得る。
（二次ＵＩ−カルーセル内に表示されるアプリケーションオプション）
【０２２４】
図１３は、いくつかの実施形態による例示的二次ＵＩボリュームを示す。アプリケーションオプションメニュー１３１０は、プリズムの中にレンダリングされたアプリケーションによって提供されるコンテンツとのユーザが有し得る異なる相互作用を示し得る。アプリケーションオプションメニュー１３１０は、図２からの二次ＵＩボリューム２２０の立体空間内に表示され得る。いくつかの実施形態において、アプリケーションオプションメニューは、中心オブジェクトが常時ハイライトされたカルーセルであり得る。ユーザが、次のアイテムにスワイプすると、アイコンは、より見えるようになり、オプションを説明する適切なテキストを表示し得る。アプリケーションタイトル１３２０は、ユーザが、コンテンツを提供するアプリケーションを認識することに役立ち得る。ここで、例として、アプリケーションは、ウェブページを表示する２Ｄインターネットブラウザである。設定１３３０は、アプリケーション設定を表示し、および／またはユニバース設定アプリケーションに文脈的にリンクし得る。閉じるアプリケーション１３４０は、ユーザのランドスケープからアプリケーションを閉じ／除去し得る。共有１３５０は、ユーザが、このアプリケーションの他のユーザとの共有セッションを開始することを可能にし得る。ダウンロード１３６０は、プリズム内に表示されるコンテンツをダウンロードし得る。例えば、ユーザは、２Ｄインターネットブラウザ内に表示される物品をダウンロードすることを所望し得る。当業者は、アプリケーションオプションメニュー１３１０が、より多いオプションまたはより少ないオプションを含み得、開示および示されるものと異なる順序であり得ることを理解し得る。
（身体動態）
【０２２５】
身体動態は、ユーザの身体に対して定着させられた表示される仮想コンテンツが、管理され、ユーザに表示され得る方法を指す。
【０２２６】
図１４は、いくつかの実施形態による身体動態の例を示す。身体動態は、ユーザアプリケーション／ユーザインターフェース／コンテンツ１４８０がユーザ１４９０に関連して移動する方法を指し得る。異なる身体動態のタイプがあり、それらは、異なるタイプのユーザインターフェース効果を有し得る。身体動態タイプは、プリズムおよび／またはプリズム内のアプリケーションが、定着させられ、ユーザのランドスケープ内に表示される方法に関する定着タイプとも称され得る。
【０２２７】
図１５は、いくつかの実施形態による異なるタイプの身体動態を示す。身体動態のタイプの一例は、世界固定１５２０であり、身体動態が存在しない。いくつかの実施形態において、汎用プリズムが、世界固定され、ユーザが追従挙動をアプリケーションオプションからアクティブにするように選定しない限り、身体動態を有していないこともある。身体動態のタイプの別の例は、ビルボード表示１５３０である。いくつかの実施形態において、ビルボード表示は、アプリケーションコンテンツの角度および／または向きが、変化すると、ユーザに対して固定される向きおよび／または角度を維持する。相対的角度および／または向きが、任意の数の方法において決定され得る。例えば、仮想コンテンツは、事前に定義された前方または正面方向を有し得る。システムは、仮想コンテンツの前方ベクトルが頭部姿勢によって決定されるようなユーザの前方方向を指すことを要求し得る。いくつかの実施形態において、ビルボード表示挙動は、３Ｄ空間内に固定された場所を維持する一方、他の実施形態は、場所が変動することを可能にし得る。いくつかの実施形態において、ビルボード表示動態は、エッジビルボード表示１５４０も含み得、それは、ユーザが過度の斜角からコンテンツを視認するであろう場合のみ、ユーザに向かって方向転換を開始する。例えば、アプリケーションは、ユーザがウェブページをテキストを読み取ることを困難にする側方角度から見ている状態になるまで、静止したままである。アプリケーションは、プリズムの正面の平面表面から投影され円錐台をユーザが押す場所のエッジに追従する。エッジビルボード表示のためのパラメータ（例えば、アプリケーション特定のパラメータ）は、錐台角度、ユーザを中心とする、または円錐台をユーザが押す場所の縁に移動させる等の追従挙動、力場（押し）ブール値、力場アクティブ化距離、速さ、および／または反転ブール値を含み得る。
【０２２８】
追従１５５０の身体動態タイプは、別のタイプの身体動態である。いくつかの実施形態において、追従１５５０は、単一オブジェクト（例えば、プリズム）がユーザによって置かれ得る特定のモードであり、例えば、オブジェクトをユーザの頭部位置に一時的に取り付ける。これは、ユーザがオブジェクトがその頭部位置とともに移動することを欲するときに有用である。追従の特徴は、ユーザの頭部のピッチ（例えば、上／下回転）を無視することであり、それは、その物理的空間を見渡すためのより大きい自由度をユーザに与える。ユーザが、左または右を見る場合、オブジェクトは、その視野内で再度集中し得る。いくつかの実施形態において、この再集中は、線形補間値を有し、移動に時間がかかり、ユーザに幾分緩く取り付けられると感じる。いくつかの実施形態において、追従挙動は、ユーザの頭部移動を直接模倣し、例えば、１対１の移動で模倣し得る。いくつかの実施形態において、追従は、各プリズムのためにアプリケーションオプションメニューによってアクセスおよびアクティブにされ得る。いくつかの実施形態において、追従モードは、プリズムへのデフォルト割当であり、および／または、プリズムの非一時的属性であり得る（例えば、ユーザが、例えば、プリズムを適切に変化させるまで、追従プリズムとして固定される）。
【０２２９】
いくつかの実施形態において、追従１５５０の身体動態タイプは、消極的頭部固定１５６０および外部センサ１５７０等の２つの設定のうちの１つを有し得る。消極的頭部固定１５６０設定中、単一オブジェクト、プリズム、またはアプリケーションは、追従１５５０設定と同様、ユーザの頭部位置に取り付けられ得るが、しかしながら、ピッチパラメータは、ユーザが上下を見る場合、オブジェクトが同様に追従し得るように、ユーザによって固定されないこともある。外部センサ１５７０設定中、オブジェクト、プリズム、またはアプリケーションは、外部センサからのデータに基づいて、ユーザに追従し得る。いくつかの実施形態において、慣性測定ユニット（ＩＭＵ）が、ユーザのベルトパックユニットに含まれ得る。いくつかの実施形態において、ＩＭＵは、電子機器モジュール内のユニットであり、それは、角速度および線形加速データを収集し、それは、メインプロセッサに送信される。ＩＭＵ筐体は、２つの別個のセンサを含み得る。第１のセンサは、加速度計三回対称軸であり得る。これは、ユーザによって生産され、それに作用する、その軸の各々に沿った加速を説明する、３つのアナログ信号を生成し得る。第２のセンサは、角速度センサ三回対称軸であり得る。それも、３つのアナログ信号を出力し得る。これらの信号は、センサ軸の各々についてのユーザの角速度を説明し得る。このＩＭＵは、複合現実システムが、ユーザの頭部姿勢に対する必要がある代わりに、身体に対するプリズムを有することを可能にするであろう。
【０２３０】
フェーディング１５８０の身体動態設定に関して、クリッピング面前の規定された距離において、コンテンツが、消散／消失し始め得る。クリッピング面前の規定された距離において、いくつかの実施形態において、複合現実システムは、コンテンツをもはや快適にレンダリングしないこともある場合、および／または、ユーザがそのカットオフ点に近づくにつれて、コンテンツは、急激にオフになるのではなく、平滑にフェードアウトすべきである。いくつかの実施形態において、フェーディングは、ユーザがクリッピング面に近接するときに生じ得る（例えば、正確な測定は、ハードウェアに依存し得る）。ランドスケープ内の仮想コンテンツは、ユーザがコンテンツを通過する、またはそれに非常に近接するとき、この効果を有し得る。
（アプリケーションの同時立ち上げおよび設置）
【０２３１】
いくつかの実施形態において、アプリケーションを複合現実環境内に同時に立ち上げ、設置することが有益であり得る。一実施形態において、カーソルがウェブページの上を移動する度、ブラウザエンジンは、ヒットテストをウェブページコンテンツ上で実施し、カーソル位置下の内容を確認し得る。ヒットテストは、ウェブページ内の要素を検出し、次いで、要素の種類を分析し得る。全てのｈｔｍｌ要素は、異なるパラメータを有し得、それらのうちのいくつかは、全ての要素に共通であり、それらのうちのいくつかは、複数の要素に共通であり、それらのうちのいくつかは、要素特定である。リンクの場合、最も一般的および最も推奨される要素は、定着タグ＜ａｈｒｅｆ＝’ｍｙｌｉｎｋ’＞の使用である。この定着タグは、任意の要素、画像、またはテキストとともに使用され得る。任意の時点で、カーソルが現在置かれている要素タイプを要求し得る。ブラウザエンジンは、ヒットテストの結果をキャッシュし、ノードまたはノードタイプをブラウザアプリケーションにパスし得る。いくつかの実施形態において、ヒットテストの結果のこのキャッシュは、ユーザが抽出トリガを使用してリンクを選択すると、実施され得る。
【０２３２】
別の実施形態において、カーソルが、クリック可能なウェブページ内の任意の要素の上を移動させられると、ウェブエンジンは、ＡＰＩをブラウザアプリケーションに対してコールし、カーソルを「ａｒｒｏｗ」または「ｉ−ｂｅａｍ」から「ｈａｎｄ」に変化することを要求し得る。このＡＰＩがコールされると、ブラウザアプリケーションは、次いで、カーソルがある要素の種類についての情報を要求し得る。
【０２３３】
図１６は、いくつかの実施形態によるアプリケーションを複合現実環境内に同時に立ち上げ、設置するためのフローチャートを示す。１６１０において、ユーザは、カーソルをユーザのランドスケープ内のプリズムの内側に表示されるブラウザアプリケーション内に表示されるウェブページからのリンクに移動させ得る。カーソルは、マウス、トーテム等のハンドヘルドコントローラデバイス、または、ユーザの眼がウェブページ上に集中させられ、ユーザの頭部搭載型システムからのセンサが、ユーザがウェブページからのリンクを見ていることを検出し得る眼視線、または、任意の他の好適な方法のいずれかによって移動させられ得る。リンクは、ユニフォームリソースロケータ（ＵＲＬ）であり得る。リンクの上のカーソルの移動、および／または、リンクを有するウェブページ上に集中させられた眼視線（または任意の他の好適なユーザ選択方法）は、ユーザがリンクに対応するコンテンツに関心があり得ることを示すユーザ入力をコンテンツをレンダリングするアプリケーションに送信し得る。
【０２３４】
１６１５において、ウェブエンジンおよび／またはブラウザアプリケーションは、ユーザがカーソルまたは眼視線を用いて移動するリンクを検出し得る。リンクを検出すると、ウェブエンジンは、ユーザがコンテンツに関心があり得ることをブラウザアプリケーションに通知し得、それによって、ブラウザアプリケーションは、ミニディスプレイボリューム（例えば、ミニプリズム）を作成することをユニバースに要求し得る。ミニプリズムは、ブラウザアプリケーションがコンテンツをリンクからミニプリズムの中にロードするとき、ブラウザアプリケーションのためのプレースホルダプリズムとしての役割を果たす目的のために、標準的３Ｄディスプレイボリューム管理ユニット（例えば、プリズム）の初期デフォルトサイズであり得る。
【０２３５】
１６２０において、ユニバースは、ミニプリズムを作成し、ミニプリズムをロードし、ロードされているコンテンツのページプレビューを示し始める。１６２５において、ユーザは、抽出トリガを使用して、リンクを選択し、リンクが向けられたコンテンツを視認することにユーザが関心があることを示し得る。抽出トリガの使用は、ユーザがリンクに対応するコンテンツを視認することに非常に関心があり得ることをアプリケーションに示し得る。ブラウザは、ヒットテストの結果をキャッシュし、ノードまたはノードタイプをプリズムをロードするためのブラウザアプリケーションにパスし得る。１６３０において、ユーザは、ハンドヘルドコントローラを使用して、ミニプリズムをウェブページから移動させ得る。ミニプリズムのこの移動は、ユーザがミニプリズムを移動させていることを示すユーザ入力をユニバースに送信し得る。
【０２３６】
１６３５において、ミニプリズムは、設置モードにあり、ユーザは、ミニプリズムを移動させ、ミニプリズムをユーザのランドスケープ内のある場所に設置し得る。１６４０において、ユーザは、マウスボタンまたは抽出トリガを解放し、ミニプリズムをユーザのランドスケープ内のある場所に設置し得る。マウスボタンまたは抽出トリガの解放は、ミニプリズムが拡張現実環境（例えば、ユーザのランドスケープ）内のある場所に設置されたことを示すユーザ入力をユニバースに送信し得る。
【０２３７】
１６４５において、ミニプリズムは、ユーザに表示されるためにプリズム内に完全にロードされたリンクのページとともに、設置場所において、通常サイズ（例えば、ミニプリズムサイズではない）に拡張され得る。事実上、ユーザは、リンクを選択し、リンクのミニプリズムを複合現実環境に設置することによって、アプリケーションを拡張現実環境内に同時に開き／立ち上げ、設置することが可能である一方、背景において、複合現実システムは、表示のために、プリズムをロードおよび準備する。
【０２３８】
代替実施形態において、１６７０において、１６１５後、ユーザは、ミニプリズムが、アプリケーションによって要求され、１６７５において、ユニバースによって作成される前、抽出トリガを用いて、リンクを選択し得る。これは、ユーザが、実際に、表示のためにリンクからコンテンツを抽出することを決定する前、ミニプリズムを作成するシステム処理を低減させることに役立ち得る。
【０２３９】
代替実施形態において、１６８０において、ユーザが抽出トリガを用いてリンクを選択後、ユーザは、ミニプリズムを移動させずに、抽出トリガを解放し得る。本実施形態において、１６８５において、ミニプリズムをリンクからのコンテンツとともにプリズムが完全にロードされた標準的サイズに拡張させる代わりに、ユニバースは、単に、リンクを使用して、新しいタブをウェブブラウザアプリケーション内に作成し得、ユーザが、抽出トリガに匹敵するユーザ入力を用いて、リンクを選択しているとき、リンクのコンテンツは、すでにロードおよびキャッシュされている。
【０２４０】
開示された内容は、複合現実環境内の仮想コンテンツを管理および表示するためのシステムおよび方法である。特に、システムおよび方法は、プリズム等の３Ｄウィンドウを管理することによって、３Ｄウィンドウマネージャとして機能し得るユニバースアプリケーションを開示する。プリズムは、（例えば、ユーザによって）空間内に位置付けられる有界のボリュームである。アプリケーションは、ユニバースを介して、グラフィックをプリズムの中にレンダリングし得る。ユニバースは、Ｋａｌｉと協働して、シーングラフをレンダリングし、各プリズムの設置、拡大縮小等の完全制御を有する。いくつかの実施形態において、ユニバースは、プリズムを壁および表面に取り付け、プリズムをパス可能世界システムに登録し、および／または複合現実システムの複数のユーザ間でのコンテンツの共有を制御するための能力を提供し得る。いくつかの実施形態において、ユニバースは、プリズム自体も管理し（例えば、プリズムを作成する、設置および／または、スナッピングルールを管理する基本ユーザインターフェース制御、すなわち、閉じるボタン、アクションバー等を提供する）、プリズムの内側の内容に配慮せず、および／またはプリズムの記録を追跡する（例えば、プリズムを所有するアプリケーション、プリズムを設置するための場所、プリズムが定着させられる方法、すなわち、身体中心、世界固定等）。いくつかの実施形態において、プリズム挙動は、部分的に、定着に基づき得る。いくつかの実施形態において、プリズム挙動は、部分的に、設置（例えば、ユーザ相互作用を通したユーザ設置）および／または身体動態（例えば、ビルボード表示、身体中心、消極的頭部固定等）に基づき得る。
【０２４１】
ユニバースは、３Ｄウィンドウマネージャとして、標準的２Ｄウィンドウマネージャよりさらに多くの機能性を提供し得る。いくつかの実施形態において、３Ｄウィンドウマネージャとしてユニバースが提供し得る（例えば、２Ｄウィンドウマネージャに優る）１つ以上の追加の特徴（例えば、機能性）は、以下を含み得る。
【０２４２】
持続性：ユーザの台所カウンタ上に位置するアプリケーションは、ユーザがそれを変化させない限り、台所カウンタ上に現れ得る。ユーザは、システムがオン／オフにされる度、またはユーザが部屋を離れ、戻って来る度、アプリケーションを再度立ち上げる必要がないこともある。ユニバースは、プリズム情報をパス可能世界システムに記憶するので、ユニバースは、ユーザが、複合現実システムを使用し、ユーザの台所内のアプリケーションに近接近する度、ユーザの台所上に位置するアプリケーションを再開し得る。
【０２４３】
ユーザに対するアプリケーション状態：アプリケーションは、自動的に、開始、中断／一時停止、再開し、すなわち、明示的ユーザアクションが要求されない。ユーザ相互作用が、アプリケーションの動作状態を変化させるために要求される（例えば、ユーザが閉じるボタンをクリックする）、２Ｄウィンドウマネージャとは対照的である。
【０２４４】
局所性−実世界対２Ｄウィンドウ：２Ｄウィンドウマネージャは、画面が設置され得る場所にかかわらず、画面に制限され得る。しかしながら、複合現実環境内において、アプリケーションは、実世界との関連で、例えば、ユーザの環境内の物理的オブジェクト、ユーザの身体、固定場所等のような他のものに対して設置され得る。
【０２４５】
物理性：プリズムは、移動し得る。したがって、プリズムの移動および移動の追跡が、管理される必要がある（例えば、ユーザに対するビルボード表示／身体中心、消極的ビルボード表示、移動するときの上下揺、衝突跳ね返り等）。
【０２４６】
プライベートであるが、相互作用可能性である：２Ｄウィンドウは、プライベートであるが、それらは、相互作用しないか、または、それらは、相互作用するが、プライベートではない。しかしながら、ユニバースは、３Ｄウィンドウ（例えば、プリズム）のプライバシおよび相互作用の両方を有効にし得る。
（追加の実施形態）
【０２４７】
本開示の追加の実施形態が、下で説明される。これらの追加の実施形態は、上で開示される実施形態からの要素を組み込み得る。
１．複合現実システムを開始する方法であって、方法は、
ユーザの現在の場所を決定することと、
現在の場所において以前に展開されていた１つ以上のプリズムを読み出すことと、
１つ以上のプリズムをユーザの現在の場所において復元することと、
ユーザの現在の場所において復元された１つ以上のプリズムを表示することと、
を含む、方法。
２．プリズムは、アプリケーションからの仮想コンテンツが含まれた空間のボリュームである、実施形態１に記載の方法。
３．アプリケーションは、アプリケーションが２つ以上のプリズムの中にレンダリングするときのアプリケーションのアプリケーションインスタンスである、実施形態２に記載の方法。
４．プリズムは、シーングラフの一部を表し、シーングラフは、ユーザの現在の場所に対応する、実施形態１に記載の方法。
５．シーングラフは、第１のアプリケーションおよび第２のアプリケーションからのデータを備えている、実施形態４に記載の方法。
６．現在の場所において以前に展開されていた１つ以上のプリズムを読み出すことは、
１つ以上のプリズムに関するインスタンスデータを外部データベースから読み出すことと、
ローカルプリズムデータベースを１つ以上のプリズムに関するインスタンスデータで再構築することと
を含む、実施形態１に記載の方法。
７．各プリズムのためのインスタンスデータは、プリズムを定義するプリズム属性のデータ構造を含み、プリズム属性は、場所、向き、範囲幅、範囲高さ、範囲深度、身体動態、定着タイプ、または定着位置のうちの少なくとも１つを備えている、実施形態６に記載の方法。
８．各プリズムのためのインスタンスデータは、アプリケーションによってプリズムの中に以前にレンダリングされていた仮想コンテンツの状態情報を備えているアプリケーション特定の属性のデータを含む、実施形態７に記載の方法。
９．１つ以上のプリズムを復元することは、
現在の場所において以前に展開されていた１つ以上のプリズムに対応するそれぞれのアプリケーションを立ち上げることと、
以前に展開された１つ以上のプリズムに対応する１つ以上の新しいプリズムを作成することと、
それぞれの仮想コンテンツを１つ以上の新しいプリズムの中にレンダリングすることと、
を含む、実施形態１に記載の方法。
１０．プレースホルダプリズムを以前に展開された１つ以上のプリズムの場所に対応する場所に表示することをさらに含み、１つ以上のプリズムを表示することは、それぞれのプレースホルダプリズムをそれぞれの仮想コンテンツを有する１つ以上の新しいプリズムで置換することをさらに含む、実施形態９に記載の方法。
１１．ユーザが１つ以上のプリズムと相互作用すると、ユーザのローカルプリズムデータベースを更新されたプリズムインスタンスデータで更新することと、
ローカルプリズムデータベースを外部データベースと同期させることと
をさらに含む、実施形態１に記載の方法。
１２．仮想コンテンツを３Ｄ空間環境において表示する方法であって、方法は、
アプリケーションから、仮想コンテンツを３Ｄ空間環境において表示するための要求を受信することと、
プリズムを作成することであって、プリズムは、仮想コンテンツの境をプリズムの境界の内側に限るように構成された空間のボリュームである、ことと、
仮想コンテンツをアプリケーションから受信することと、
仮想コンテンツをプリズムの境界の内側にレンダリングすることと、
プリズムを３Ｄ空間環境におけるオブジェクトに関連付けることと
を含む、方法。
１３．プリズムの境界は、表示されない、実施形態１２に記載の方法。
１４．３Ｄ空間環境は、ユーザの物理的実世界環境である、実施形態１２に記載の方法。
１５．プリズムは、自動的に作成され、機能性の組を有する、実施形態１２に記載の方法。
１６．機能性の組は、プリズムと３Ｄ空間環境におけるオブジェクトとの間の関連付けを備えている、実施形態１５に記載の方法。
１７．機能性の組は、プリズムに関して許容される最小サイズ、プリズムに関して許容される最大サイズ、およびプリズムをサイズ変更するためのアスペクト比のうちの１つ以上を備えている、実施形態１５に記載の方法。
１８．アプリケーションは、第１の仮想コンテンツを第１のプリズムの中に、第２の仮想コンテンツを第２のプリズムの中にレンダリングし、第１のプリズムと第２のプリズムとは、異なるプリズムである、実施形態１２に記載の方法。
１９．プリズムは、３Ｄ空間環境における他のプリズムと重複しない、実施形態１８に記載の方法。
２０．プリズムは、３Ｄ空間環境におけるオブジェクトに関連して設置される、実施形態１２に記載の方法。
２１．オブジェクトは、拡張現実デバイスのユーザである、実施形態２０に記載の方法。
２２．プリズムは、
１つ以上の普遍的特徴と、
１つ以上のアプリケーション特定の特徴と、
を備え、１つ以上の普遍的特徴および１つ以上のアプリケーション特定の特徴は、事前に承認されたオプションのリストから選択される、実施形態１２に記載の方法。
２３．１つ以上の普遍的特徴は、異なるアプリケーションが一貫した様式において互いに相互作用することを確実にする、実施形態２２に記載の方法。
２４．複合現実システムにおいて仮想コンテンツのアプリケーション状態を管理する方法であって、方法は、
３Ｄボリュームを立体グリッドに分けることと、
立体グリッド内のユーザの第１の場所を決定することと、
３Ｄボリューム内のアプリケーションの第２の場所を決定することと、
３Ｄボリューム内のユーザとアプリケーションとの間の距離を計算することと、
少なくとも部分的にユーザとアプリケーションとの間の計算された距離に基づいて、アプリケーションの状態を修正することと
を含む、方法。
２５．アクティブゾーンの半径は、複合現実デバイスを使用するユーザの周囲に円形／球状エリアを定義する、実施形態２４に記載の方法。
２６．アクティブゾーンの外部の周囲のバッファゾーンをさらに含み、バッファゾーンは、アプリケーションの状態の断続または高速変化を防止する、実施形態２５に記載の方法。
２７．アプリケーションの状態を修正することは、少なくとも部分的にアプリケーションが別のアプリケーションによって塞がれるかどうかに基づく、実施形態２４に記載の方法。
２８．アプリケーションの状態を修正することは、少なくとも部分的にユーザの頭部姿勢に基づく、実施形態２４に記載の方法。
２９．セル内のアプリケーションの既知の位置の距離は、複合現実デバイスを使用しているユーザが中に存在するセルおよびその近傍セルに関してのみ決定される、実施形態２４に記載の方法。
３０．拡張現実環境においてアプリケーションを開き、それを設置する方法であって、方法は、
ユーザから、新しいコンテンツのための要求を示す第１のユーザ入力を受信することと、
アプリケーションを立ち上げ、コンテンツを生成することと、
３Ｄディスプレイボリューム管理ユニットのミニディスプレイボリュームを作成することであって、ページプレビューが、ミニディスプレイボリューム内に表示され、３Ｄディスプレイボリューム管理ユニットは、アプリケーションの立ち上げと同時に作成される、ことと、
ミニディスプレイボリュームの移動を示す第２のユーザ入力を受信することと、
拡張現実環境におけるある場所におけるミニディスプレイボリュームの設置を示す第３のユーザ入力を受信することと、
ミニディスプレイボリュームの代わりに３Ｄディスプレイボリューム管理ユニットを場所において拡張させることと
を含み、
３Ｄディスプレイボリューム管理ユニットは、３Ｄディスプレイボリューム管理ユニット内に完全にロードされたコンテンツを表示する、方法。
３１．第１のユーザ入力は、ウェブページ上のリンクの上でのカーソル移動である、実施形態３０に記載の方法。
３２．第２のユーザ入力は、リンクの選択およびミニディスプレイボリュームの移動である、実施形態３１に記載の方法。
３３．３Ｄディスプレイボリューム管理ユニットは、３Ｄディスプレイボリューム管理ユニットがミニディスプレイの代わりに拡張するとき、ミニディスプレイに取って代わる、実施形態３０に記載の方法。
３４．コンテンツは、ユーザがミニディスプレイを移動させている間に３Ｄディスプレイボリューム管理ユニットの中にロードされる、実施形態３０に記載の方法。
３５．場所は、拡張現実環境内のオブジェクトに固定される、実施形態３０に記載の方法。
３６．オブジェクトは、ユーザである、実施形態３５に記載の方法。
３７．仮想コンテンツを管理する方法であって、方法は、
コンテンツをコンテンツ生成アプリケーションから受信することと、
ユニバースアプリケーションによって、コンテンツを３Ｄ空間環境において表示することと、
３Ｄ空間環境においてユニバースアプリケーションによって、コンテンツの表示を絶えず管理することと
を含む、方法。
３８．本明細書に開示される本発明の概念のいずれかに従って、複合現実システムにおいて仮想コンテンツを管理および表示するためのシステム、方法、およびコンピュータプログラム製品。
３９．仮想コンテンツを立体ディスプレイ空間内に表示することによって、仮想コンテンツを利用可能な３Ｄ表示可能空間の一部内に表示することをさらに含み、立体ディスプレイ空間の境界は、表示されない、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
４０．アプリケーションによるディスプレイカスタマイズの構成のための事前に承認されたオプションのリストから、普遍的特徴およびアプリケーション選択型特徴をプリズムに割り当てることをさらに含む、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
４１．仮想コンテンツを１つ以上のプリズムの中に表示することをさらに含み、１つ以上のプリズムは、互いに重複しない、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
４２．少なくとも部分的にユーザに対するプリズムの相対的位置および場所に基づいて、プリズムの状態を変化させることをさらに含む、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
４３．アプリケーションにおけるコンテンツ作成を管理することと、別個のアプリケーションにおけるコンテンツ表示を管理することとをさらに含む、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
４４．プリズムを複合現実環境に設置する間、コンテンツをプリズムの中に提供するであろうアプリケーションを開くことをさらに含む、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
４５．プリズム内に仮想コンテンツを表示するために、場所、向き、および範囲データをプリズムに割り当てることをさらに含み、仮想コンテンツは、３Ｄ仮想コンテンツである、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
４６．場所は、複合現実環境におけるプリズムの定着位置の座標である、実施形態４５に記載のシステム、方法、およびコンピュータプログラム製品。
４７．向きは、プリズムがオブジェクトに対して回転させられる方法を定義し、オブジェクトは、壁である、実施形態４５に記載のシステム、方法、およびコンピュータプログラム製品。
４８．範囲データは、プリズムのサイズを定義する、実施形態４５に記載のシステム、方法、およびコンピュータプログラム製品。
４９．ランチャアプリケーションを複合現実環境内の実世界オブジェクトにピン固定することをさらに含む、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
５０．ピン固定式ランチャアプリケーションは、プリズム内のアプリケーションのコンテンツをピン固定式ランチャアプリケーションと同じ場所に立ち上げる、実施形態４９に記載のシステム、方法、およびコンピュータプログラム製品。
５１．挙動タイプを各プリズムに割り当てることをさらに含み、挙動タイプは、世界固定、ビルボード表示、エッジビルボード表示、追従頭部固定、外部センサに基づく追従、またはフェーディングのうちの少なくとも１つを備えている、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
５２．ランチャアプリケーションの設置された場所に特定の最も使用されるコンテンツを識別することをさらに含む、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
５３．設置式ランチャアプリケーションによって、お気に入りアプリケーションを表示することをさらに含み、お気に入りアプリケーションは、少なくとも部分的に設置式ランチャの場所に対する文脈に基づく、実施形態３８に記載のシステム、方法、およびコンピュータプログラム製品。
５４．方法であって、方法は、
シーンに関するシーングラフにアクセスすることであって、シーングラフは、１つ以上の変換ツリーを備え、各ツリーは、複数のノードを備えている、ことと、
１つ以上の変換ツリー内の複数のノードからの１つ以上のノードにタグを追加することであって、タグ付けされた１つ以上のノードは、変換グループを形成し、タグ付けされた１つ以上のノードは、第１のタグ付けされたノードと第２のタグ付けされたノードとを備えている、ことと、
第１のタグ付けされたノードを移動させることと
を含み、
第１のタグ付けされたノードを移動させることは、第２のタグ付けされたノードが移動することを引き起こす、方法。
５５．第２のタグ付けされたノードは、第１のタグ付けされたノードの直系の子孫ではない、実施形態５４に記載の方法。
５６．第１のタグ付けされたノードおよび第２のタグ付けされたノードは、同じ変換ツリーからのものではない、実施形態５４に記載の方法。
５７．前記複数のノードは、第１のノードと、第２のノードとを備え、方法は、第１のノードを第２のノードの親にすることをさらに含み、第１のノードを第２のノードの親にすることは、親にされたノードを移動させない、実施形態５４に記載の方法。
５８．仮想コンテンツを３Ｄ共有空間において表示する方法であって、方法は、
第１のアプリケーションによって、仮想コンテンツを３Ｄ共有空間において生成することと、
第２のアプリケーションによって、第１のアプリケーションによって生成された仮想コンテンツを表示することと
を含み、
第１のアプリケーションと第２のアプリケーションとは、異なるアプリケーションである、方法。
（システムアーキテクチャ概要）
【０２４８】
図１７は、本開示の実施形態のうちの１つ以上のものを実装するために好適な例証的コンピューティングシステム１４００のブロック図である。コンピューティングシステム１４００は、情報を通信するためのバス１４０６または他の通信機構を含み、それは、プロセッサ１４０７、メインメモリ１４０８（例えば、ＲＡＭ）、静的記憶デバイス１４０９（例えば、ＲＯＭ）、ディスクドライブ１４１０（例えば、磁気または光学）、通信インターフェース１４１４（例えば、モデムまたはＥｔｈｅｒｎｅｔ（登録商標）カード）、ディスプレイ１４１１（例えば、ＣＲＴまたはＬＣＤ）、入力デバイス１４１２（例えば、キーボード）、およびカーソル制御等のサブシステムおよびデバイスを相互接続する。
【０２４９】
いくつかの実施形態によると、コンピューティングシステム１４００は、プロセッサ１４０７がメインメモリ１４０８に含まれる１つ以上の命令の１つ以上の一続きを実行することによって、特定の動作を実施する。そのような命令は、静的記憶デバイス１４０９またはディスクドライブ１４１０等の別のコンピュータ読み取り可能／使用可能媒体から、メインメモリ１４０８の中に読み込まれ得る。代替実施形態において、有線回路が、本開示を実装するために、ソフトウェア命令の代わりに、またはそれと組み合わせて、使用され得る。したがって、実施形態は、ハードウェア回路および／またはソフトウェアの任意の具体的組み合わせに限定されない。一実施形態において、用語「論理」は、本開示の全部または一部を実装するために使用されるソフトウェアまたはハードウェアの任意の組み合わせを意味するものとする。
【０２５０】
用語「コンピュータ読み取り可能な媒体」または「コンピュータ使用可能媒体」は、本明細書で使用されるように、実行のために命令をプロセッサ１４０７に提供することに関わる任意の媒体を指す。そのような媒体は、限定ではないが、不揮発性媒体および揮発性媒体を含む多くの形態をとり得る。不揮発性媒体は、例えば、ディスクドライブ１４１０等の光学または磁気ディスクを含む。揮発性媒体は、メインメモリ１４０８等の動的メモリを含む。いくつかの実施形態において、システムは、ソリッドステートドライブ（ＳＳＤ）メモリを使用し得る。
【０２５１】
一般的形態のコンピュータ読み取り可能な媒体は、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、ＣＤ−ＲＯＭ、任意の他の光学媒体、パンチカード、紙テープ、孔のパターンを伴う任意の他の物理的媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ（登録商標）−ＥＰＲＯＭ、任意の他のメモリチップまたはカートリッジ、もしくはそこからコンピュータが読み取られ得る任意の他の媒体を含む。
【０２５２】
一実施形態において、本開示を実践するための一続きの命令の実行は、単一コンピューティングシステム１４００によって実施される。他の実施形態によると、通信リンク１４１５（例えば、ＬＡＮ、ＰＴＳＮ、または無線ネットワーク）によって結合された２つ以上のコンピューティングシステム１４００が、互いに協調して、本開示を実践するために要求される命令のシーケンスを実施し得る。
【０２５３】
コンピューティングシステム１４００は、通信インターフェース１４１４を介して、通信リンク１４１５を通して、プログラム、例えば、アプリケーションコードを含むメッセージ、データ、および命令を伝送および受信し得る。受信されたプログラムコードは、受信されると、および／または、後の実行のために、ディスクドライブ１４１０もしくは他の不揮発性記憶装置に記憶されると、プロセッサ１４０７によって実行され得る。コンピューティングシステム１４００は、データインターフェース１４３３を通して、外部記憶デバイス１４３１上のデータベース１４３２に通信し得る。
【０２５４】
前述の明細書において、本開示は、その具体的実施形態を参照して説明された。しかしながら、種々の修正および変更が、本開示のより広い精神および範囲から逸脱することなく、行われ得ることが、明白であろう。例えば、上で説明されるプロセスフローは、プロセスアクションの特定の順序を参照して説明される。しかしながら、説明されるプロセスアクションの多くの順序は、本開示の範囲または動作に影響を及ぼすことなく、変更され得る。明細書および図面は、故に、限定的ではなく、例証的意味と見なされるべきである。
【図１】
2021507402.tif 000004
【図２】
2021507402.tif 000005
【図３】
2021507402.tif 000006
【図４】
2021507402.tif 000007
【図５】
2021507402.tif 000008
【図６】
2021507402.tif 000009
【図７】
2021507402.tif 000010
【図８】
2021507402.tif 000011
【図９】
2021507402.tif 000012
【図１０Ａ】
2021507402.tif 000013
【図１０Ｂ】
2021507402.tif 000014
【図１０Ｃ】
2021507402.tif 000015
【図１０Ｄ】
2021507402.tif 000016
【図１０Ｅ】
2021507402.tif 000017
【図１０Ｆ】
2021507402.tif 000018
【図１０Ｇ】
2021507402.tif 000019
【図１０Ｈ】
2021507402.tif 000020
【図１０Ｉ】
2021507402.tif 000021
【図１０Ｊ】
2021507402.tif 000022
【図１０Ｋ】
2021507402.tif 000023
【図１０Ｌ】
2021507402.tif 000024
【図１０Ｍ】
2021507402.tif 000025
【図１０Ｎ】
2021507402.tif 000026
【図１０Ｏ】
2021507402.tif 000027
【図１０Ｐ】
2021507402.tif 000028
【図１０Ｑ】
2021507402.tif 000029
【図１０Ｒ】
2021507402.tif 000030
【図１０Ｓ】
2021507402.tif 000031
【図１０Ｔ】
2021507402.tif 000032
【図１０Ｕ】
2021507402.tif 000033
【図１０Ｖ】
2021507402.tif 000034
【図１０Ｗ】
2021507402.tif 000035
【図１０Ｘ】
2021507402.tif 000036
【図１０Ｙ】
2021507402.tif 000037
【図１０Ｚ】
2021507402.tif 000038
【図１０ＡＡ】
2021507402.tif 000039
【図１１】
2021507402.tif 000040
【図１２】
2021507402.tif 000041
【図１３】
2021507402.tif 000042
【図１４】
2021507402.tif 000043
【図１５】
2021507402.tif 000044
【図１６】
2021507402.tif 000045
【図１７】
2021507402.tif 000046
【国際調査報告】
2021507402.tif 000047
2021507402.tif 000048
2021507402.tif 000049
2021507402.tif 000050