JP2021507402A - 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム - Google Patents

複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム Download PDF

Info

Publication number
JP2021507402A
JP2021507402A JP2020534227A JP2020534227A JP2021507402A JP 2021507402 A JP2021507402 A JP 2021507402A JP 2020534227 A JP2020534227 A JP 2020534227A JP 2020534227 A JP2020534227 A JP 2020534227A JP 2021507402 A JP2021507402 A JP 2021507402A
Authority
JP
Japan
Prior art keywords
prism
application
user
content
prisms
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020534227A
Other languages
English (en)
Other versions
JP7196179B2 (ja
Inventor
ジュン テイト−ガンス,
ジュン テイト−ガンス,
エリック ノーマン イスキス,
エリック ノーマン イスキス,
マーク アシュリー ラシュトン,
マーク アシュリー ラシュトン,
デイビッド ウィリアム ホーバー,
デイビッド ウィリアム ホーバー,
ジェイ ディー, プラヴィーン バブ
ジェイ ディー, プラヴィーン バブ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Magic Leap Inc
Original Assignee
Magic Leap Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Magic Leap Inc filed Critical Magic Leap Inc
Publication of JP2021507402A publication Critical patent/JP2021507402A/ja
Priority to JP2022199311A priority Critical patent/JP7476292B2/ja
Application granted granted Critical
Publication of JP7196179B2 publication Critical patent/JP7196179B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2004Aligning objects, relative positioning of parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras

Abstract

1対1ベースで、独立して、各アプリケーションによって、複合現実環境内の仮想コンテンツを管理および表示するためのアプローチが開示され、各仮想コンテンツは、それらのそれぞれのアプリケーションによって、本明細書において、「プリズム」と称される、有界のボリュームの中にレンダリングされる。各プリズムは、ユニバースアプリケーションが複合現実環境においてプリズムを管理および表示することを可能にする特性および属性を有し得、それによって、ユニバースアプリケーションは、複合現実環境においてプリズム自体を管理することによって、仮想コンテンツの設置および表示を管理し得る。

Description

本開示は、概して、1人以上のユーザのための双方向仮想または拡張現実環境を促進するように構成されたシステムおよび方法に関する。
現代のコンピューティングおよびディスプレイ技術は、いわゆる「仮想現実」(VR)、「拡張現実」(AR)体験、および/または「複合現実」体験(以降、集合的に、「複合現実」および/または「MR」と称される)のためのシステムの開発を促進しており、デジタル的に再現された画像またはその一部が、現実であるように見える様式、またはそのように知覚され得る様式でユーザに提示される。VRシナリオは、典型的に、他の実際の実世界の視覚的入力に対する透過性を伴わずに、デジタルまたは仮想画像情報の提示を伴う一方、ARまたはMRシナリオは、典型的に、ユーザの周囲の実際の世界の可視化に対する拡張としてのデジタルまたは仮想画像情報の提示を伴い、それによって、デジタルまたは仮想画像(例えば、仮想コンテンツ)が、実世界の一部であるように見え得る。しかしながら、MRは、仮想コンテンツをコンテキスト的に有意義な方法において統合し得る一方、ARは、そうではないこともある。
したがって、複合現実環境における
仮想コンテンツを管理し、表示するためのアプローチの必要がある。
いくつかの実施形態によると、各アプリケーションによって、独立して、1度に1つずつベースで複合現実環境内の仮想コンテンツを管理および表示する代わりに、各仮想コンテンツは、それらのそれぞれのアプリケーションによって、以降、「プリズム」と称され得る有界のボリュームの中にレンダリングされる。各プリズムは、時として、ユニバースアプリケーションと呼ばれるアプリケーションが複合現実環境内のプリズムを管理および表示することを可能にする特性および属性を有し得、それによって、ユニバースアプリケーションは、プリズム自体を管理することによって、複合現実環境において仮想コンテンツの設置および表示を管理し得る。
一実施形態は、仮想コンテンツを3D空間環境において表示する方法を対象とし、方法は、1)アプリケーションから、仮想コンテンツを3D空間環境において表示するための要求を受信することと、2)仮想コンテンツのディスプレイを管理するためのプリズムを作成することであって、プリズムは、仮想コンテンツの境をプリズムの境界の内側に限るように構成された空間の立方体および/または長方形ボリュームである、ことと、3)仮想コンテンツをアプリケーションから受信することと、4)仮想コンテンツをプリズムの境界の内側にレンダリングすることと、少なくとも部分的にユーザ入力に基づいて、プリズムを3D空間環境におけるオブジェクトに関連付けることと、6)プリズムを3D空間環境の中に定着することとを含む。
1つ以上の実施形態において、プリズムの境界の境界線は、表示されない。3D空間環境は、ユーザの物理的実世界環境であり得る。プリズムは、自動的に作成され、機能性の組を有し得る。機能性の組は、プリズムに関して許容される最小/最大サイズ、および/またはプリズムをサイズ変更するためのアスペクト比を備え得る。機能性の組は、プリズムと3D空間環境におけるオブジェクトとの間の関連付けを備え得る。アプリケーションは、追加の仮想コンテンツを追加のプリズムの中にレンダリングし得、各仮想コンテンツは、別個のプリズムの中にレンダリングされ得る。
1つ以上の実施形態において、プリズムは、3D空間環境における他のプリズムと重複しない。プリズムは、異なるアプリケーションが互いに適切に相互作用することを確実にするための1つ以上の普遍的特徴、および/または、1つ以上のアプリケーション特定の特徴を備え得、1つ以上の普遍的特徴および1つ以上のアプリケーション特定の特徴は、事前に承認されたオプションのリストから選択される。
別の実施形態は、仮想コンテンツを3D空間環境において表示するためのディスプレイシステムを対象とし、ディスプレイシステムは、拡張現実頭部搭載型ディスプレイシステムと、データを処理するための1つ以上のモジュールとを含み得、1つ以上のモジュールは、1つ以上のメモリに記憶され、1つ以上のモジュールは、1)アプリケーションから、仮想コンテンツを3D空間環境において表示するための要求を受信することと、2)プリズムを作成することであって、プリズムは、仮想コンテンツの境をプリズムの境界の内側に限るように構成された空間のボリュームである、ことと、3)仮想コンテンツをアプリケーションから受信することと、4)仮想コンテンツをプリズムの境界の内側にレンダリングすることと、5)プリズムを3D空間環境におけるオブジェクトに関連付けることとを実施するように構成される。
1つ以上の実施形態において、プリズムの境界の境界線は、表示されない。3D空間環境は、ユーザの物理的実世界環境であり得る。プリズムは、自動的に作成され、機能性の組を有し得る。機能性の組は、プリズムに関して許容される最小/最大サイズ、および/またはプリズムをサイズ変更するためのアスペクト比を備え得る。機能性の組は、プリズムと3D空間環境におけるオブジェクトとの間の関連付けを備え得る。アプリケーションは、追加の仮想コンテンツを追加のプリズムの中にレンダリングし得、各仮想コンテンツは、別個のプリズムの中にレンダリングされ得る。
1つ以上の実施形態において、プリズムは、3D空間環境における他のプリズムと重複しない。プリズムは、異なるアプリケーションが互いに適切に相互作用することを確実にするための1つ以上の普遍的特徴、および/または、1つ以上のアプリケーション特定の特徴を備え得、1つ以上の普遍的特徴および1つ以上のアプリケーション特定の特徴は、事前に承認されたオプションのリストから選択される。
別の実施形態は、複合現実システムを開始する方法を対象とし、方法は、ユーザの現在の場所を決定することと、現在の場所において以前に展開されていた1つ以上のプリズムを読み出すことと、1つ以上のプリズムをユーザの現在の場所において復元することと、ユーザの現在の場所において復元された1つ以上のプリズムを表示することとを含み得る。
1つ以上の実施形態において、プリズムは、アプリケーションからの仮想コンテンツがその中に表示された空間の立方体および/または長方形ボリュームであり、それは、2つ以上のプリズムの中にレンダリングし得る。言い換えると、いくつかの実施形態において、単一アプリケーションは、2つ以上のプリズムに対応し得る。いくつかの実施形態において、単一アプリケーションは、単一プリズムに対応する。プリズムは、ユーザの現在の場所に関するマルチアプリケーションシーングラフのサブツリーを表す。ユーザの現在の場所において以前に展開されていた1つ以上のプリズムを読み出すことは、例えば、外部データベースから、1つ以上のプリズムに関するインスタンスデータを読み出すことと、ローカルプリズムデータベースを1つ以上のプリズムに関するインスタンスデータで再構築することとを含み得、各プリズムのためのインスタンスデータは、プリズムを定義するプリズム属性のデータ構造を含み、プリズム属性は、場所、向き、範囲幅、範囲高さ、範囲深度、定着タイプ、および/または定着位置のうちの少なくとも1つを備え、各プリズムのためのインスタンスデータは、アプリケーションによってプリズムの中に以前にレンダリングされていた仮想コンテンツの状態情報を備えたアプリケーション特定の属性のキー/値ペアを含む。いくつかの実施形態において、データは、ローカルで記憶され、外部データベースは、必要とされない。
1つ以上の実施形態において、1つ以上のプリズムを復元することは、現在の場所において以前に展開されていた1つ以上のプリズムに対応するそれぞれのアプリケーションを立ち上げることと、以前に展開されていた1つ以上のプリズムに対応する1つ以上の新しいプリズムを作成することと、それぞれの仮想コンテンツを1つ以上の新しいプリズムの中にレンダリングすることとを含む。
1つ以上の実施形態において、ユーザが1つ以上のプリズムと相互作用すると、ユーザのローカルプリズムデータベースを更新されたプリズムインスタンスデータで更新することと、ローカルプリズムデータベースと外部データベースを同期させることとをさらに含む。
いくつかの実施形態は、複合現実システムにおいて仮想コンテンツのアプリケーション状態を管理する方法を対象とし、方法は、3Dボリュームを立体グリッドに分けることを含み得る。方法は、立体グリッド内のユーザの第1の場所を決定することも含み得る。方法は、3Dボリューム内のアプリケーションの第2の場所を決定することをさらに含み得る。方法は、3Dボリューム内のユーザとアプリケーションとの間の距離を計算することも含み得る。方法は、加えて、少なくとも部分的にユーザとアプリケーションとの間の計算された距離に基づいて、アプリケーションの状態を修正することを含み得る。
別の実施形態は、複合現実システムにおいて仮想コンテンツのアプリケーション状態を管理する方法を対象とし、方法は、立体グリッド内の1つ以上のアプリケーションの空間位置を記録することであって、1つ以上のアプリケーションは、1つ以上のそれぞれのプリズムの内側に表示されるコンテンツを提供し、立体グリッドは、x、y、およびz軸における物理的環境の大まかな表現に対応する、ことと、セル内に位置するアプリケーションを備えた立体グリッドのセルを識別することであって、セルの幅は、アクティブゾーンの半径以上である、ことと、複合現実デバイスを使用するユーザがセル内で移動するとき、セルおよび近傍セル内の各アプリケーションの既知の位置の距離を決定することと、少なくとも部分的にセルおよび近傍セル内の複合現実デバイスと各アプリケーションとの間の距離に基づいて、アプリケーションの状態を修正することとを含む。
1つ以上の実施形態において、アクティブゾーンの半径は、複合現実デバイスを使用するユーザの周囲の円形/球状エリアを定義し、ユーザは、円形/球体の中心に存在し得る。いくつかの実施形態において、アプリケーションの状態を修正することは、少なくとも部分的にアプリケーションが別のアプリケーションによって塞がれているかどうかに基づき得る。いくつかの実施形態において、アプリケーションの状態を修正することは、少なくとも部分的にユーザの頭部姿勢に基づく。ユーザの頭部姿勢は、ユーザの頭部の場所および/または向きの測定値である。頭部姿勢は、ユーザの動的に変化する頭部場所および向きに合致するようにシーンをレンダリングし、仮想/拡張/複合空間内における増加した没入感を提供するために使用されることができる。いくつかの実施形態において、頭部姿勢は、少なくとも部分的に頭部搭載型ディスプレイシステムまたはユーザの頭部上に搭載される慣性測定ユニットによって決定され得るが、他の好適な方法も、使用され得る。セル内の各アプリケーションの既知の位置の距離は、複合現実デバイスを使用するユーザがその中に存在するセルおよび近傍セルに関してのみ決定され得る。
1つ以上の実施形態において、バッファゾーンがアクティブゾーンの外部の周囲に存在し得、バッファゾーンは、アプリケーションの状態に対する断続な変化または高速変化を防止する。
別の実施形態は、複合現実システムにおいて、アプリケーションを仮想コンテンツを表示するためのランチャメニューから立ち上げる方法を対象とし、方法は、アプリケーションを開始するための要求を受信することと、ユニバースアプリケーションによって、仮想コンテンツを表示および管理するためのプリズムを作成することであって、プリズムは、アプリケーションが仮想コンテンツをレンダリングするための境界を有する立体ディスプレイ空間である、ことと、プリズムによって、ライフサイクルサービスを通して、アプリケーションを開始することと、プリズムによって、パッケージマネージャサービスを通して、アプリケーションの一意の識別子(UID)を決定することと、アプリケーションによって、リスナをユニバースアプリケーションに登録することと、ユニバースアプリケーションによって、アプリケーションのUIDを決定することと、ユニバースアプリケーションによって、リスナのプリズムに関連付けることと、ユニバースアプリケーションによって、アプリケーションのリスナを使用して、プリズムをアプリケーションに割り当てることと、プリズムを複合現実システムの3D表示可能空間の一部内に設置することとを含む。
いくつかの実施形態は、拡張現実環境においてアプリケーションを開き、それを設置する方法を対象とし、方法は、ユーザから、コンテンツへの関心を示す第1のユーザ入力を受信することを含み得る。方法は、アプリケーションを立ち上げ、コンテンツを生成することも含み得る。方法は、3Dディスプレイボリューム管理ユニットのミニディスプレイボリュームを作成することをさらに含み得、ページプレビューが、ミニディスプレイボリューム内に表示され、ミニディスプレイボリューム管理ユニットは、アプリケーションの立ち上げと同時に作成される。方法は、ミニディスプレイボリュームの移動を示す第2のユーザ入力を受信することをさらに含み得る。方法は、拡張現実環境におけるある場所におけるミニディスプレイボリュームの設置を示す第3のユーザ入力を受信することと、ミニディスプレイボリュームの代わりに3Dディスプレイボリューム管理ユニットを場所において拡張させることとも含み得、3Dディスプレイボリューム管理ユニットは、3Dディスプレイボリューム管理ユニット内に完全にロードされたコンテンツを表示する。
1つ以上の実施形態において、第1のユーザ入力は、ウェブページ上のリンクの上でのカーソル移動であり得、第2のユーザ入力は、リンクの選択およびミニディスプレイボリュームの移動である。ミニディスプレイボリュームは、3Dディスプレイボリューム管理ユニットの初期デフォルトサイズであり得る。コンテンツは、ユーザがミニディスプレイボリュームを移動および設置する間にミニディスプレイボリュームの中にロードされ得る。場所は、拡張現実環境におけるオブジェクトに固定され得、オブジェクトは、ユーザである。
いくつかの実施形態は、仮想コンテンツを管理する方法を対象とし得、方法は、コンテンツをコンテンツ生成アプリケーションから受信することを含み得る。方法は、ユニバースアプリケーションによって、コンテンツを3D空間環境において表示することも含み得る。方法は、ユニバースアプリケーションによって、3D空間環境内のコンテンツの表示を絶えず管理することをさらに含み得る。
いくつかの実施形態は、シーンに関するシーングラフにアクセスすることを含む方法を対象とし得、シーングラフは、1つ以上の変換ツリーを備え、各ツリーは、複数のノードを備えている。方法は、1つ以上の変換ツリー内の複数のノードからの1つ以上のノードにタグを追加することも含み得、タグ付けされた1つ以上のノードは、変換グループを形成し、タグ付けされた1つ以上のノードは、第1のタグ付けされたノードおよび第2のタグ付けされたノードを備えている。方法は、第1のタグ付けされたノードを移動させることをさらに含み得、第1のタグ付けされたノードを移動させることは、第2のタグ付けされたノードが移動することを引き起こす。
別の実施形態は、仮想コンテンツを3D共有空間において表示する方法を対象とし、方法は、第1のアプリケーションによって、仮想コンテンツを3D共有空間において生成することと、第2のアプリケーションによって、第1のアプリケーションによって生成された仮想コンテンツを表示することとを含み得、第1のアプリケーションと第2のアプリケーションとは、異なるアプリケーションである。
いくつかの実施形態は、アプリケーションによるディスプレイカスタマイズの構成のための事前に承認されたオプションのリストから普遍的特徴およびアプリケーション選択型特徴をプリズムに割り当てる方法を対象とし得る。別の実施形態は、仮想コンテンツを1つ以上のプリズムの中に表示する方法を対象とし、1つ以上のプリズムは、互いに重複しない。別の実施形態は、少なくとも部分的にユーザに対するプリズムの相対的位置および場所に基づいて、プリズムの状態を変化させるための方法を対象とする。別の実施形態は、アプリケーションにおけるコンテンツ作成を管理し、別個のアプリケーションにおけるコンテンツ表示を管理する方法を対象とする。別の実施形態は、コンテンツをプリズムの中に提供するであろうアプリケーションを開き、同時に、プリズムを複合現実環境に設置する方法を対象とする。
いくつかの実施形態は、場所、向き、および範囲データを仮想コンテンツをプリズム内に表示するためのプリズムに割り当てる方法を対象とし得、仮想コンテンツは、3D仮想コンテンツである。
1つ以上の実施形態において、場所は、複合現実環境におけるプリズムの定着位置の座標である。範囲データは、プリズムのサイズを定義する。
いくつかの実施形態は、ランチャアプリケーションを複合現実環境内の実世界オブジェクトにピン固定する方法を対象とし得る。
1つ以上の実施形態において、ピン固定式ランチャアプリケーションは、プリズム内のアプリケーションのコンテンツをピン固定式ランチャアプリケーションと同じ場所に立ち上げる。
いくつかの実施形態は、挙動タイプを各プリズムに割り当てる方法を対象とし得、挙動タイプは、世界固定、ビルボード表示、エッジビルボード表示、追従頭部固定、外部センサに基づく追従、またはフェーディング(下でより詳細に説明される)のうちの少なくとも1つを備える。いくつかの実施形態は、ランチャアプリケーションの設置された場所に特定の最も使用されるコンテンツを識別する方法を対象とする。いくつかの実施形態は、設置式ランチャアプリケーションによってお気に入りアプリケーションを表示する方法を対象とし、お気に入りアプリケーションは、少なくとも部分的に設置式ランチャの場所に対する文脈に基づく。
本開示の追加のおよび他の目的、特徴、ならびに利点は、発明を実施するための形態、図面、および請求項に説明される。
図面は、本開示の好ましい実施形態の設計および有用性を図示し、類似要素は、共通参照番号によって参照される。本開示の上記および他の利点ならびに目的が、取得される方法をより深く理解するために、上で簡単に説明される本開示のより具体的説明が、付随の図面に図示されたその具体的実施形態を参照することによって与えられるであろう。これらの図面は、本開示の典型的実施形態のみを描写し、したがって、その範囲の限定と見なされないことを理解した上で、本開示は、付随の図面の使用を通して、追加の特異性および詳細とともに説明および解説されるであろう。
図面は、同様の参照番号を使用して、同様の要素を識別する。「120a」等の参照番号後の文字は、文章がその特定の参照番号を有する要素を具体的に指すことを示す。「120」等の後続文字を伴わない文章内の参照番号は、その参照番号を持つ図面内の要素のいずれかまたは全てを指す(例えば、文章内の「120」は、図面内の参照番号「120a」および/または「120b」を指す)。
図1は、いくつかの実施形態による例示的ユーザの物理的環境および複合現実システムにおいて仮想コンテンツを管理および表示するためのシステムアーキテクチャを示す。
図2は、いくつかの実施形態による複合現実システムにおいて仮想コンテンツを管理および表示するためのシステムアーキテクチャを示す。
図3は、いくつかの実施形態によるプリズム/境界ボリュームを示す。
図4は、いくつかの実施形態によるアプリケーションを立ち上げ、仮想コンテンツを表示するためのランチャメニューを示す。
図5A−5Bは、いくつかの実施形態によるパネルカルーセル変化を示す。
図6は、いくつかの実施形態による複合現実システムを開始するためのアプローチのためのフローチャートを示す。
図7は、いくつかの実施形態による仮想コンテンツを複合現実環境において表示するためのアプローチのためのフローチャートを示す。
図8は、いくつかの実施形態によるアプリケーション状態を管理するための略図である。
図9は、いくつかの実施形態によるユーザ場所に対するアプリケーション状態を管理するためのフローチャートを示す。
図10Aは、いくつかの実施形態によるシーングラフのツリーノードを図示する。
図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。 図10B−10AAは、いくつかの実施形態による種々の変換ツリーおよびグループツリーを図示する。
図11は、いくつかの実施形態による設置式ランチャの図を示す。
図12は、いくつかの実施形態によるランチャがアイドル/スリープ状態にある間に表示され得るコンテンツのタイプを示す。
図13は、いくつかの実施形態による二次UIボリュームを示す。
図14は、いくつかの実施形態による身体動態の例を示す。
図15は、いくつかの実施形態による異なるタイプの身体動態を示す。
図16は、いくつかの実施形態による同時にアプリケーションを立ち上げ、複合現実環境内に設置するためのフローチャートを示す。
図17は、本開示の実施形態のうちの1つ以上を実装するために好適な例証的コンピューティングシステム1400のブロック図である。
本開示は、複合現実システムにおいて仮想コンテンツを管理および表示することを対象とする。複数のアプリケーションが、互いに独立して、複合現実システムにおいて仮想コンテンツを管理することおよび表示することを可能にする代わりに、本開示の実施形態は、プリズムと呼ばれる3Dウィンドウを使用して、複合現実システムにおいて表示および管理されるべき仮想コンテンツ(例えば、方法および場所)を管理するユニバースアプリケーションを開示する。
本開示は、本開示のいくつかの実施形態が実践され得る例証的複合現実システムの説明を提供し、その後、複合現実システムにおいて仮想コンテンツを管理および表示するためのプロセスおよび機構の1つ以上の実施形態の説明が続く。
続く説明は、例証的複合現実システムに関し、本開示は、それを用いて実践され得る。しかしながら、本開示は、他のタイプのARおよび仮想現実(VR)システムにおける用途にも適しており、したがって、本開示は、本明細書に開示される例証的システムのみに限定されないことを理解されたい。
図1は、例示的ユーザ物理的環境および複合現実システムにおいて仮想コンテンツを管理および表示するためのシステムアーキテクチャを示す。代表的環境100は、頭部搭載型システム160を通してユーザ103によって視認されるようなユーザのランドスケープ110を含む。ユーザのランドスケープ110は、世界の3Dビューであり、ユーザ設置コンテンツが、実世界の上に合成され得る。代表的環境100は、ネットワーク(図示せず)に動作可能に結合されるプロセッサ170を介して、ユニバースアプリケーション130にアクセスすることをさらに含む。プロセッサ170は、頭部搭載型システム160と別個の隔離されたコンポーネントとして示されるが、代替実施形態において、プロセッサ170は、頭部搭載型システム160の1つ以上のコンポーネントと統合され得、および/または、例えば、コンピューティングネットワーク(図示せず)および外部記憶デバイス150にアクセスするためのネットワーク等の代表的環境100内の他のシステムコンポーネントの中に統合され得る。いくつかの実施形態において、プロセッサ170は、ネットワークに接続されないこともある。プロセッサ170は、頭部搭載型システム160、ローカル記憶デバイス137、アプリケーション140、コンピューティングネットワーク、および/または外部記憶デバイス150から受信されたビデオ、オーディオ、および/または他のデータ(例えば、深度カメラデータ)等の情報を受信および処理するためのソフトウェア(例えば、ユニバースアプリケーション130)で構成され得る。
ユニバースアプリケーション130は、3Dウィンドウマネージャであり得、それは、例えば、デスクトップコンピュータのディスプレイ画面上に表示される2Dウィンドウを管理するためのデスクトップコンピュータ上で起動する2Dウィンドウマネージャに類似する。しかしながら、ユニバースアプリケーション130(以降、「ユニバース」と称され得る)は、3D空間環境における仮想コンテンツ115の作成、設置、および表示のみならず、ユーザのランドスケープ110において表示される複数の仮想コンテンツ115間の相互作用も管理する。アプリケーション140からの仮想コンテンツ115は、以降、プリズム113と称され得る有界のボリュームおよび/または3Dウィンドウ等の1つ以上の3Dウィンドウディスプレイ管理ユニットの内側において、ユーザ103に提示される。
有界のボリューム/3Dウィンドウ/プリズム113は、空間内に位置付けられ、向けられ得る空間の長方形、立方体、円筒形、または任意の他の形状ボリュームであり得る。プリズム113は、境界を有する立体ディスプレイ空間であり得、コンテンツ(例えば、仮想コンテンツ)は、その中にレンダリング/表示され、境界は、表示されない。いくつかの実施形態において、境界は、表示され得る。プリズム113は、標準的基礎レベルの相互作用、および、アプリケーションのコンテンツおよびその設置の制御を提示し得る。プリズム113は、マルチアプリケーションシーングラフのサブツリーを表し得、それは、ユニバースの内側に内蔵され得るか、または、ユニバースの外部であるが、ユニバースによってアクセスされ得る。シーングラフは、ベクトルベースのグラフィック、編集アプリケーション、および現代のゲーム用ソフトウェアによって一般に使用される一般的データ構造であり、それは、グラフィカルシーンの論理、および多くの場合(必ずしもではないが)、空間表現を配列する。シーングラフは、コンテンツが、位置付けられ、その構造内で互いに対して変換される方法を定義するデータ構造と見なされ得る。アプリケーション140は、コンテンツを設置するためのプリズム113のインスタンスを与えられる。アプリケーションは、相対的設置アルゴリズムおよび恣意的変換を使用して、2D/3Dコンテンツをプリズム113内にレンダリングし得るが、ユニバースは、依然として、コンテンツ抽出等、総合的相互作用パターンを最終的に担い得る。複数のアプリケーションが、プリズム113を分離するプロセス境界を有するプリズム113を介して、ユニバースにレンダリングし得る。アプリケーションプロセスあたりn数の有界のボリューム/プリズム113が存在し得るが、それは、明示的に、各アプリケーションのために1つのみのプロセスが有界のボリューム/プリズム113毎に起動し得るn:1関係であるが、各々がそれら自身の有界のボリューム/プリズム113を伴って起動するm数のプロセスが存在し得る。
ユニバースは、2Dおよび/または3Dコンテンツのためのプリズム/分散型シーングラフアプローチを使用して動作する。ユニバースのシーングラフの一部は、レンダリングするための各アプリケーションのためにとって置かれる。アプリケーション、例えば、ランチャメニュー、ランドスケープ、または身体中心アプリケーションゾーン(全て下でより詳細に説明される)との各相互作用は、マルチアプリケーションシーングラフを通して行われ得る。各アプリケーションは、シーングラフのサブツリーを表す1〜n個の直角プリズムを配分される。プリズムは、クライアント側アプリケーションによって配分されず、代わりに、例えば、ユーザが、コントローラ上のボタンをクリックすることによって、新しいアプリケーションをランドスケープ内に開くとき、ユニバースの内側のユーザの相互作用を通して作成される。いくつかの実施形態において、アプリケーションは、プリズムをユニバースから要求し得るが、要求は、否認され得る。いくつかの実施形態において、アプリケーションが、新しいプリズムを要求し、許可される場合、アプリケーションは、新しいプリズムをその他のプリズムのうちの1つに対して変換することのみ行い得る。
ユニバースは、アプリケーション140からの仮想コンテンツ115をプリズム113と呼ばれるオブジェクトに入れる。各アプリケーションプロセスまたはインスタンスは、その仮想コンテンツをそれ自身の個々のプリズム113またはプリズムの組の中にレンダリングし得る。ユニバースは、プリズム113が表示される(時として、ランドスケープと呼ばれる)世界空間を管理する。いくつかの実施形態において、ユニバースは、アプリケーションを壁および表面に取り付けること、プリズムを空間内の恣意的場所に設置すること、それらを複合現実システムの世界データベースに登録すること、および/または、複合現実システムの複数のユーザ間でのコンテンツの共有を制御することを行うための能力を提供する。
いくつかの実施形態において、プリズム113の目的は、挙動およびコンテンツのレンダリングおよび表示の制御を提供することである。ウィンドウが、2Dウィンドウ内の2Dコンテンツの場所、メニュー構造、および表示を定義するために使用され得る2Dディスプレイと同様、3D仮想ディスプレイにおいて、プリズムは、複合現実システム(例えば、ユニバース)が、例えば、コンテンツ場所、3Dウィンドウ挙動、および/またはメニュー構造に関連する制御を3Dコンテンツの表示の回りに包むことを可能にする。例えば、制御は、少なくとも、仮想コンテンツをユーザのランドスケープ110内の特定の場所に設置すること、仮想コンテンツをランドスケープ110から除去すること、仮想コンテンツをコピーすること、および/または、コピーを異なる場所に設置すること等を含み得る。いくつかの実施形態において、プリズムは、ユーザによって、かつユーザのみによって、作成および破棄され得る。これは、提供されるインターフェースの乱用を制御することに役立ち、ユーザがユーザのコンテンツの制御を維持することに役立つために明示的に行われ得る。加えて、いくつかの実施形態において、アプリケーション140は、それらのボリュームがランドスケープ内に設置される場所を把握せず、それらが存在することのみを把握する。いくつかの実施形態において、アプリケーションは、1つ以上のプリズムを要求し得、要求は、許可されることも、許可されないこともある。新しいプリズムが、作成された後、ユーザは、位置を変化させ得、および/または、アプリケーションは、新しいプリズムをアプリケーションに関連付けられた現在の既存のプリズムに対して自動的に位置付け得る。いくつかの実施形態において、ユニバースサービスを利用して、3Dコンテンツ(例えば、合成された3Dコンテンツ)をユニバースプロセスの中にレンダリングする各アプリケーション140は、最初に、リスナをユニバースに登録することを要求され得る。このリスナはユーザ移動およびそれらのプリズムとのユーザ相互作用に基づいて、レンダリングプリズムの作成および破棄を、アプリケーション140に知らせるために使用され得る。リスナは、メッセージをプロセス間通信システムから受信するインターフェースオブジェクトである。例えば、Androidオペレーティングシステムにおいて、リスナは、Android Binderインターフェースを通してメッセージを受信するオブジェクトである。しかしながら、任意のIPCシステムが、Binderが常時使用されるわけではないように、使用され得る。
いくつかの実施形態において、プリズムは、以下の相互作用のうちから作成され得る:(1)ユーザが、コンテンツを抽出可能ノード(下でさらに開示される)から抽出したこと、(2)ユーザが、アプリケーションをランチャから開始したこと、(3)ユーザが、ユーザが見るための許可を有するアプリケーションの設置されたインスタンスを含む近傍のパス可能世界マップタイルをダウンロードしたこと、(4)ユーザが、所与のアプリケーションがそのためのコンテンツをレンダリングしなければならないことをパス可能世界オブジェクト認識装置インフラストラクチャが検出したオブジェクトを含む近傍のパス可能世界マップタイルをダウンロードしたこと、および/または、(5)ユーザが、異なるアプリケーションにおいてハンドリングされなければならないディスパッチを別のアプリケーションからトリガしたこと。いくつかの実施形態において、パス可能世界モデルは、ユーザが、ユーザの世界の断片(例えば、周囲環境、相互作用等)を別のユーザに効果的にパスすることを可能にする。
抽出可能コンテンツは、プリズムの内側のコンテンツ(限定ではないが、アイコン、3Dアイコン、テキストディスプレイ内の単語、および/または画像を含む)であり、それは、入力デバイスを使用して、プリズムから外に引き出され、ランドスケープ内に設置され得る。例えば、プリズムは、販売のためのランニング用シューズを示すウェブページを表示することもある。ランニング用シューズを抽出するために、シューズは、入力デバイスを用いて、選択され、「引き出される」ことができる。新しいプリズムが、シューズを表す3Dモデルを用いて作成され、そのプリズムは、元々のリズムから外に、ユーザに向かって移動するであろう。任意の他のプリズムのように、ユーザは、入力デバイスを使用して、シューズを含む新しいプリズムをランドスケープの3D空間内で移動、拡大、収縮、または回転させ得る。抽出可能ノードは、抽出され得るものとしてタグ付けされている、プリズムのシーングラフにおけるノードである。ユニバースにおいて、コンテンツを抽出することは、抽出可能ノードを選択し、入力デバイスを使用して、コンテンツをプリズムから外に引き出すことを意味する。この引き出しを開始するための入力は、6自由度ポインティングデバイスを抽出可能コンテンツに照準し、入力デバイス上のトリガを引くことであり得る。
各ユーザのそれぞれの個々の複合現実システム(例えば、複合現実デバイス)は、ユーザが環境を通過するとき、またはその中に存在するとき、情報を捕捉し、それは、パス可能世界モデルを生産するための複合現実システムプロセスである。パス可能世界に関するさらなる詳細は、2014年3月11日に出願され、「SYSTEM AND METHOD FOR AUGUMENTED AND VIRTUAL REALITY」と題された、米国特許出願第14/205,126号(参照することによって前述に組み込まれている)に説明される。個々の複合現実システムは、クラウドと称された共通または共有データ集合にパス可能世界モデルを通信またはパスし得る。個々の複合現実システムは、直接またはクラウドを介して、パス可能世界モデルを他のユーザに通信またはパスし得る。パス可能世界モデルは、少なくともユーザの視野を本質的に包含する情報を効率的に通信またはパスする能力を提供する。一実施形態において、システムは、パス可能世界を作成するために、姿勢および向き情報のみならず、上で説明される収集された3D点も使用する。いくつかの実施形態において、パス可能世界モデルは、ユーザがコンテンツ(例えば、仮想および/または物理的コンテンツ)を実世界と統合する能力を可能にする。パス可能世界システムは、1つ以上の複合現実システムまたは複合現実ユーザデバイスを含み得、それらは、クラウドネットワーク、パス可能世界モデル、オブジェクト認識装置の組、およびデータベース(例えば、外部データベース150)に接続することが可能である。パス可能世界モデルは、情報を複合現実ユーザデバイスから受信するように構成され、データをネットワークを通してそれらに伝送するようにも構成され得る。例えば、ユーザからの入力に基づいて、パス可能世界の一部は、1人のユーザから別のユーザにパスされ得る。パス可能世界モデルは、画像の集合、点、および他の情報(例えば、実世界情報)と見なされ得、それに基づいて、複合現実システムは、仮想世界をクラウド上に組み立て、更新し、および構築し、仮想世界の一部を種々のユーザに効果的にパスすることが可能である。例えば、複合現実ユーザデバイスから収集された実世界点の組が、パス可能世界モデルにおいて収集され得る。種々のオブジェクト認識装置が、パス可能世界モデルを通してクローリングし、オブジェクト、タグ画像等を認識し、意味情報をオブジェクトに取り付け得る。パス可能世界モデルは、データベースを使用して、その世界の知識を構築し、意味情報を取り付け、パス可能世界に関連付けられたデータを記憶し得る。
ユーザに可視であるが、その制御アプリケーションが現在インストールされていないプリズムの場合、ユニバースは、そのアプリケーションのための一時的プレースホルダをレンダリングし得、一時的プレースホルダは、相互作用されると、そのアプリケーションのためのアプリケーションストアページにユーザを向け直す。
いくつかの実施形態において、プリズムは、類似相互作用で破棄され得る:(1)ユーザが、パス可能世界マップタイルから、アプリケーションの設置されたインスタンスが揮発性メモリからアンロードされる(すなわち、除去される)まで十分に遠ざかったこと、(2)ユーザが、アプリケーションの設置されたインスタンスを破棄したこと、および/または、(3)アプリケーションは、プリズムが閉じられることを要求したこと。
いくつかの実施形態において、アプリケーションのためのプリズムが、可視ではない、および/または、ロードされていない場合、それらのプリズムに関連付けられたプロセスは、一時停止または終了され得る。そのアプリケーションのための設置されたプリズムが再び可視となると、プロセスは、再開され得る。プリズムも、隠され得るが、いくつかの実施形態において、それは、ユニバースおよびユーザの要請時にのみ発生し得る。いくつかの実施形態において、複数のプリズムが、同一の正確な場所に設置され得る。そのような実施形態において、ユニバースは、設置されたプリズムの1つのインスタンスのみを一度に1つの場所に示し、ユーザがその場所における次の可視要素(例えば、プリズム)に「スワイプ」する等のユーザ相互作用が検出されるまで、プリズム(およびその関連付けられたコンテンツ)の可視性を隠すことによって、レンダリングを管理し得る。
いくつかの実施形態において、各プリズム113は、メッシュ、テクスチャ、動画等の共有リソースのために、プリズム113の属性にアクセスし、シーングラフサブツリーにコンテンツを登録する方法を用いて、ボリュームリスナインターフェースを介して、アプリケーション140にエクスポーズされ得る。
いくつかの実施形態において、アプリケーション140は、所与のプリズム113が3D空間内に設置される場所を把握していないので、ボリュームリスナインターフェースは、例えば、手中心、ランドスケープ内に固定、身体中心等、所与のプリズムがユニバース内に存在する場所を定義することに役立つヒントの組へアクセッサメソッドを提供し得る。これらの属性は、加えて、プリズムの予期される挙動を規定し、ユーザ、アプリケーション140、またはユニバースのいずれかによって、限定された方式で制御され得る。所与のプリズムは、アプリケーションが所有する別のプリズムに対して位置付けられることができる。アプリケーションは、そのアプリケーションからのプリズムが設置されている間、プリズムが一緒にスナップすべきこと(その境界ボリュームの両側が接すること)を規定することができる。加えて、プリズムは、キー/値データ記憶のためのAPIを提供し得る。これらのキー/値ペアのうちのいくつかは、権限が付与されたアプリケーションによってのみ書込可能である。
いくつかの実施形態において、アプリケーション140は、ユーザのランドスケープ110においてユーザ103に表示されるべきコンテンツを提供するクライアントソフトウェアアプリケーションである。例えば、アプリケーション140は、ビデオストリーミングアプリケーションであり得、ビデオデータは、2D平面表面上に表示されるようにユーザにストリーミングされ得る。別の例として、アプリケーション140は、Halcyonアプリケーションであり得、それは、ユーザのために穏やかで幸せかつ安らかであった過去の期間を示し得る物理的オブジェクトの3D結像を提供する。アプリケーション140は、ユーザがユーザのランドスケープ110に含むことを欲し得るコンテンツを提供する。ユニバースは、プリズム113を介して、アプリケーション140によって生成されたコンテンツの設置および管理を管理する。
非没入型のアプリケーションが、ユーザのランドスケープ110において実行されると/立ち上げられると、そのコンテンツ(例えば、仮想コンテンツ)は、プリズム113の内側にレンダリングされる。非没入型のアプリケーションは、共有3D環境においてコンテンツを1つ以上の他のアプリケーションと同時に起動することおよび/または表示することが可能であるアプリケーションであり得る。仮想コンテンツは、プリズムに含まれ得るが、ユーザは、依然として、例えば、オブジェクトの上でホーバーリングすること、それをクリックすること等、仮想コンテンツと相互作用し得る。プリズム113は、境界アプリケーション140の表示されるコンテンツの境界を限り得、したがって、異なるアプリケーション140は、互いに、またはユーザのランドスケープ110における他のオブジェクトに干渉しない。プリズム113は、ユーザの視野外またはユーザからあまりに遠く離れているアプリケーション140からの仮想コンテンツを中断、一時停止、および/または最小化するために有用な抽象化も提供し得る。
プリズム113は、ユーザのランドスケープ110内の種々のオブジェクトに定着させられ/取り付けられ/ピン固定され得、それは、別のプリズムにスナップすることまたは定着することを含む。例えば、仮想コンテンツ115(例えば、ビデオストリーミングアプリケーションからのビデオ115a)を表示するプリズム113aは、垂直壁117aに定着させられ得る。別の例として、Halcyonアプリケーションからの3Dツリー115bを表示するプリズム113bは、図1において、テーブル117bに定着させられるように示される。さらに、プリズム113は、ユーザ103に対して定着させられ得(例えば、身体中心)、仮想コンテンツ115を表示するプリズム113は、ユーザの身体が移動すると、プリズム113がユーザの身体の移動に対して移動するように、ユーザの身体に定着させられ得る。身体中心コンテンツは、ユーザに追従し、ユーザと位置的に一致したままである平面、メッシュ等のアプリケーションコンテンツであり得る。例えば、ユーザに追従するが、ランドスケープ110ではなく、ユーザの背骨に対して存在する小ダイアログボックス。加えて、プリズム113は、ユーザのランドスケープ110内に表示された仮想ディスプレイモニタ等の仮想オブジェクトに定着させられ得る。プリズム113は、下で開示された異なる方法において定着させられ得る。
ユニバースは、ユーザのためのプリズム113の属性および特性を記憶するためのローカルデータベース137を含み得る。記憶されたプリズム情報は、ユーザのランドスケープ110内でユーザによってアクティブにされたプリズムを含み得る。ローカルデータベース137は、クラウドまたは外部記憶設備において常駐し得る外部データベース150に動作可能に結合され得る。外部データベース150は、ユーザおよび他のユーザの複合現実環境についての情報を維持する持続的データベースであり得る。
例えば、ユーザが、新しいアプリケーションを立ち上げ、仮想コンテンツをユーザの物理的環境において表示すると、ローカルデータベース137は、ユニバースによって作成され、特定の場所に設置されたプリズムに対応する情報を記憶し得、アプリケーション140は、コンテンツをユーザのランドスケープ110内に表示されるようにプリズム113の中にレンダリングし得る。ローカルデータベース137に記憶されたプリズム113、仮想コンテンツ115、およびアプリケーション140に対応する情報は、持続的記憶のために、外部データベース150と同期させられ得る。
いくつかの実施形態において、持続的記憶は、複合現実システムがオフにされると、ローカルデータベース137に記憶されるデータが、消去され、削除され、または非持続性となり得るので、重要であり得る。したがって、ユーザが、複合現実システムをオンにすると、ユニバースは、複合現実システムがオフにされることに先立って、外部データベース150と同期し、ユーザ103およびユーザのランドスケープ110に対応するローカルデータベース137のインスタンスを読み出し得る。ローカルデータベース137は、外部データベース150のインスタンスであり得、ローカルデータベース137のインスタンスは、ユーザ103およびユーザの現在の環境に関連する情報を含む。外部データベース150は、加えて、他のユーザ、複数のユーザ、経時的に同一ユーザ、および/または他の環境のローカルデータベースのインスタンスを記憶し得る。外部データベース150は、仮想コンテンツを複合現実システムの複数のユーザ間で管理および共有するために使用される情報を含み得る一方、ローカルデータベース137は、ユーザ103に対応する情報を記憶し、維持する。
ユニバースは、アプリケーション140が仮想コンテンツ115をユーザのランドスケープ110上にレンダリングする必要がある度、アプリケーション140のためのプリズム113を作成し得る。いくつかの実施形態において、ユニバースによって作成されたプリズム113は、アプリケーション140が、表示のために、仮想コンテンツをレンダリングすることに焦点を当てることを可能にする一方、ユニバースは、アプリケーション140によってプリズムの境界内に表示される仮想コンテンツ115を有するプリズム113を作成し、その設置および表示を管理することに焦点を当てる。
ユーザのランドスケープ110内に表示されたアプリケーション140によってレンダリングされた各仮想コンテンツ115は、単一のプリズム113内で表示され得る。例えば、アプリケーション140が、2つの仮想コンテンツ(例えば、115aおよび115b)をユーザのランドスケープ110内に表示されるようにレンダリングする必要がある場合、アプリケーション140は、2つの仮想コンテンツ115aおよび115bをレンダリングし得る。仮想コンテンツ115は、レンダリングされた仮想コンテンツのみを含むので、ユニバースは、仮想コンテンツ115aおよび115bの各々に対応するために、それぞれ、プリズム113aおよび113bを作成し得る。プリズム113は、仮想コンテンツ115の3Dウィンドウ管理属性および特性を含み、ユニバースが、プリズム113の内側の仮想コンテンツ115とユーザのランドスケープ110におけるプリズム113の設置および表示とを管理することを可能にし得る。
ユニバースは、ユーザ103が複合現実デバイスをオンにするとユーザ103に見える第1のアプリケーションであり得る。ユニバースは、少なくとも、(1)ユーザの世界ランドスケープをレンダリングすること、(2)平面アプリケーションの2Dウィンドウ管理および3Dウィンドウ(例えば、プリズム)管理、(3)アプリケーションランチャメニューを表示および実行すること、(4)ユーザが仮想コンテンツをユーザのランドスケープ110の中に設置することを可能にすること、および/または、(5)ユーザのランドスケープ110内のプリズム113の表示の異なる状態を管理することに関与し得る。
頭部搭載型システム160は、ユーザ103の眼の正面に位置付けられるディスプレイシステム(例えば、ユーザインターフェース)と、頭部搭載型システムに結合され、ユーザの外耳道に隣接して位置付けられるスピーカと、ユーザ感知システムと、環境感知システムと、プロセッサと(全て示されてない)を含む複合現実頭部搭載型システムであり得る。頭部搭載型システム160は、デジタル世界と相互作用し、それを体験するためのディスプレイシステム(例えば、ユーザインターフェース)をユーザ103に提示する。そのような相互作用は、ユーザおよびデジタル世界と、代表的環境100とインターフェースをとる1人以上の他のユーザと、デジタルおよび物理的世界内のオブジェクトとを伴い得る。
ユーザインターフェースは、ユーザインターフェースを通したユーザ入力を介して、仮想コンテンツを視認すること、選択すること、位置付けること、および管理することを含み得る。ユーザインターフェースは、触覚的インターフェースデバイス、キーボード、マウス、ジョイスティック、運動捕捉コントローラ、光学追跡デバイス、オーディオ入力デバイス、スマートフォン、タブレット、または頭部搭載型システム160のうちの少なくとも1つまたはそれらの組み合わせであり得る。触覚的インターフェースデバイスは、人間が身体感覚および移動を通してコンピュータと相互作用することを可能にするデバイスである。触覚的は、アクションまたはプロセスをコンピューティングデバイス上で実施するための触知的フィードバックまたは他の身体感覚を包含する人間とコンピュータの相互作用技術のタイプを指す。
触覚的コントローラの例は、トーテム(図示せず)であり得る。いくつかの実施形態において、トーテムは、ヘッドセット160に対するその位置および向きを追跡するハンドヘルドコントローラである。この例において、トーテムは、ユーザが、トーテムを上または下に移動させることによって、(球状シェル上の)高度および方位角においてプリズムを移動させ得る6自由度(6DOF)コントローラであり得る。いくつかの実施形態において、オブジェクトをより近くまたはより遠くに移動させるために、ユーザは、トーテム上のジョイスティックを使用して、プリズムを「押すこと」または「引くこと」を行い得るか、または、単に、トーテムを前方または後方に移動させ得る。これは、シェルの半径を変化させる効果を有し得る。いくつかの実施形態において、トーテム上の2つのボタンは、プリズムを拡大または収縮させ得る。いくつかの実施形態において、トーテム自体を回転させることは、プリズムを回転させ得る。他のトーテム操作および構成が、使用され得、上で説明される実施形態に限定されるべきではない。
ユーザ感知システムは、頭部搭載型システム160を装着しているユーザ103に関連するある特徴、特性、または情報を検出するために動作可能である1つ以上のセンサ162を含み得る。例えば、いくつかの実施形態において、センサ162は、例えば、縮瞳/散瞳、各瞳孔の角度測定/位置付け、真球度、(眼形状が経時的に変化するにつれた)眼形状、および他の解剖学的データのうちの1つ以上のもの等のユーザ103のリアルタイム光学特性/測定を検出することが可能なカメラまたは光学検出/走査回路を含み得る。このデータは、頭部搭載型システム160によってユーザの視認体験を向上させるために使用され得る情報(例えば、ユーザの視覚的焦点)を提供し得るか、または、それを計算するために使用され得る。
環境感知システムは、データをユーザのランドスケープ110から取得するための1つ以上のセンサ164を含み得る。センサ164によって検出されたオブジェクトまたは情報は、入力として、頭部搭載型システム160に提供され得る。いくつかの実施形態において、この入力は、仮想世界とのユーザ相互作用を表し得る。例えば、机(例えば、テーブル188)上の仮想キーボードを視認しているユーザ(例えば、ユーザ103)が、ユーザが仮想キーボード上でタイプしているかのように、その指を用いて、ジェスチャし得る。指移動の運動は、センサ164によって捕捉され、頭部搭載型システム160に入力として提供され得、入力は、仮想世界を変化させるか、または、新しい仮想オブジェクトを作成するために使用され得る。
センサ164は、例えば、概して、例えば、持続的および/または断続的に投影された赤外線構造化光を通してシーン情報を捕捉し、解釈するための外向きに面したカメラまたはスキャナを含み得る。環境感知システムは、静的オブジェクト、動的オブジェクト、人々、ジェスチャおよび種々の照明、大気および音響条件等を含む、ローカル環境からの1つ以上の要素を検出し、登録することによって、ユーザ103の周囲のユーザのランドスケープ110の1つ以上の要素をマッピングするために使用され得る。したがって、いくつかの実施形態において、環境感知システムは、ローカルコンピューティングシステム(例えば、プロセッサ170)に内蔵され、センサ164によって検出された1つ以上のオブジェクトまたは情報をデジタル的に再構築するように動作可能である画像ベースの3D再構築ソフトウェアを含み得る。
いくつかの実施形態において、環境感知システムは、運動捕捉データ(ジェスチャ認識を含む)、深度感知、顔認識、オブジェクト認識、固有オブジェクト特徴認識、音声/オーディオ認識および処理、音響源位置特定、雑音低減、赤外線または類似レーザ投影、ならびに、モノクロおよび/またはカラーCMOSセンサ(または他の類似センサ)、視野センサ、および種々の他の光学向上センサのうちの1つ以上を提供する。環境感知システムは、上で議論されるもの以外の他のコンポーネントを含み得ることを理解されたい。
上で述べられたように、プロセッサ170は、いくつかの実施形態において、頭部搭載型システム160の他のコンポーネントと統合された代表的環境100のシステムの他のコンポーネントと統合され得るか、または、図1に示されるように、隔離されたデバイス(ウェアラブルまたはユーザ103から別個)であり得る。プロセッサ170は、物理的有線接続を通して、または、例えば、モバイルネットワーク接続(セルラー電話およびデータネットワークを含む)、Wi−Fi、Bluetooth(登録商標)、または任意の他の無線接続プロトコル等の無線接続を通して、頭部搭載型システム160の種々のコンポーネントに接続され得る。プロセッサ170は、メモリモジュール、統合および/または追加のグラフィック処理ユニット、無線および/または有線インターネットコネクティビティ、ならびにソース(例えば、コンピューティングネットワークならびに頭部搭載型システム160からのユーザ感知システムおよび環境感知システム)からのデータを画像およびオーディオデータに変換することが可能なコーデックおよび/またはファームウェアを含み得、画像/ビデオおよびオーディオは、ユーザインターフェース(図示せず)を介して、ユーザ103に提示され得る。
プロセッサ170は、頭部搭載型システム160の種々のコンポーネントのためのデータ処理ならびに頭部搭載型システム160とユニバース、外部データベース150等のソフトウェアアプリケーションとの間のデータ交換をハンドリングする。例えば、プロセッサ170は、ユーザ103と、ソフトウェアアプリケーションを含むコンピューティングネットワークとの間のデータストリーミングをバッファおよび処理するために使用され、それによって、平滑で、連続し、かつ高忠実性のユーザ体験をもたらし得る。プロセッサ170は、プログラムコード命令の組を実行するように構成され得る。プロセッサ170は、プログラムコード命令の組を保持するためのメモリを含み得、その中で、プログラムコード命令の組は、仮想コンテンツを立体ディスプレイ空間内に表示することによって、仮想コンテンツを利用可能な3D表示可能空間の一部内に表示するためのプログラムコードを備え、立体ディスプレイ空間の境界は、表示されない。いくつかの実施形態において、プロセッサは、動作可能に結合された2つ以上のプロセッサであり得る。
いくつかの実施形態において、複合現実システムは、アプリケーションによる表示カスタマイズの構成のための事前に承認されたオプションのリストからの普遍的特徴およびアプリケーション選択型/アプリケーション特定の特徴をプリズムに割り当てるように構成され得る。例えば、普遍的特徴は、異なるアプリケーションがともに良好に相互作用することを確実にする。普遍的特徴のいくつかの例は、最大/最小サイズ、非重複プリズム(衝突挙動からの一時的重複を除外する)、プリズムの境界の外側でのコンテンツの非表示、アプリケーションがセンサまたは感知可能情報にアクセスすることを所望する場合、アプリケーションがユーザからの許可を必要とすることを含み得る。アプリケーション選択型/アプリケーション特定の特徴は、最適化されたアプリケーション体験をもたらす。アプリケーション選択型/アプリケーション特定の特徴は、最大/最小サイズ(システムからの限界内)、デフォルトサイズ(システムからの限界内)、身体動態のタイプ(例えば、下で議論された非固定/世界固定、ビルボード表示、エッジビルボード表示、追従/消極的頭部固定、外部センサに基づく追従、フェーディング)、子プリズム生成場所、子頭部姿勢ハイライト、子プリズム関係挙動、表面上挙動、独立変換制御、サイズ変更対拡大縮小、アイドル状態タイムアウト、衝突挙動、アプリケーションにアクセスするための許可/パスワード等を含み得る。別の実施形態において、複合現実システムは、仮想コンテンツを1つ以上のプリズムの中に表示するように構成され得、1つ以上のプリズムは、いくつかの実施形態において、互いに重複しない。いくつかの実施形態において、1つ以上のプリズムは、特定の相互作用を提供するために、重複し得る。いくつかの実施形態において、1つ以上のプリズムは、重複し得るが、同一アプリケーションからの他のプリズムとのみ重複する。別の実施形態において、複合現実システムは、少なくとも部分的にユーザに対するプリズムの相対的位置および場所に基づいて、プリズムの状態を変化させるように構成され得る。別の実施形態において、複合現実システムは、アプリケーションにおけるコンテンツ作成を管理し、別個のアプリケーションにおけるコンテンツ表示を管理するように構成され得る。別の実施形態において、複合現実システムは、アプリケーションを開くように構成され得、アプリケーションは、コンテンツをプリズムの中に提供し、同時に、プリズムを複合現実環境に設置するであろう。
いくつかの実施形態において、複合現実システムは、仮想コンテンツをプリズム内に表示するために、場所、向き、および範囲データをプリズムに割り当てるように構成され得、仮想コンテンツは、3D仮想コンテンツである。いくつかの実施形態において、複合現実システムは、ランチャアプリケーションを複合現実環境内の実世界オブジェクトにピン固定するように構成され得る。いくつかの実施形態において、複合現実システムは、挙動タイプを各プリズムに割り当てるように構成され得、挙動タイプは、世界固定、ビルボード表示、エッジビルボード表示、追従頭部固定、外部センサに基づく追従、またはフェーディング(下でより詳細に説明される)のうちの少なくとも1つを備える。いくつかの実施形態において、複合現実システムは、ランチャアプリケーションの設置された場所に特定の最も使用されるコンテンツまたはアプリケーションを識別し、その結果、例えば、最も頻繁に使用されるものから最も使用されないものにアプリケーションを並べ替えるように構成され得る。別の実施形態において、複合現実システムは、お気に入りアプリケーションを設置式ランチャアプリケーションに表示するように構成され得、お気に入りアプリケーションは、少なくとも部分的に設置式ランチャの場所に関するコンテキストに基づく。
図2は、いくつかの実施形態による複合現実システムにおいて仮想コンテンツを管理および表示するためのシステムアーキテクチャを示す。システム200は、ユニバース130と、アプリケーション140と、アイコングリッドアプリケーション260と、ステータスバーアプリ270と、ソーシャルパネルアプリ280と、ストアパネルアプリ290とを含む。これらのアプリケーションは、基本レベルのアプリケーションをシステム200上に表し得るが、しかしながら、いくつかの実施形態において、より多いまたはより少ないアプリケーションが、システム200の一部であり得る。
上で図1において議論されるように、ユニバースは、従来のコンピュータデスクトップシステム等における2Dウィンドウを管理する2Dウィンドウマネージャに類似する3Dウィンドウ(例えば、プリズム)マネージャと見なされ得る。図2は、図1からのユニバースのさらなる詳細を提供し得る。ここで、ユニバースアプリケーション130は、ユニバースサーバ205と、ローダボリューム210と、二次UIボリューム220と、ユニバースクライアント225と、ランチャアプリケーション230と、ユニバースサーバ205とを含み得る。ユニバースサーバ205は、マルチ並列処理のためのマルチスレッド式処理環境におけるユニバースの処理スレッドであり得る。
ローダボリューム210は、プレースホルダボリュームであり、それらは、ユニバースが仮想コンテンツをユーザのランドスケープ110内に表示するためのプリズムを作成している間、ユーザに表示される。例えば、ユーザがユーザのランドスケープ110内の特定の場所(例えば、ユーザのランドスケープ110の垂直壁上)に表示するためのアプリケーションを選択すると、ユニバースは、ユニバースがプリズムを設定し、仮想コンテンツをプリズムの中にレンダリングするためのアプリケーションを開始している間、ローダボリューム210をプレースホルダボリュームとしてデフォルトアイコンとともに表示し、ユニバースが表示のためのプリズムを設定中であることをユーザに示し得る。アプリケーションが、仮想コンテンツをユーザのランドスケープ内への表示のためにプリズムの中にレンダリングすることを終了すると、ローダボリューム210は、レンダリングされた仮想コンテンツを含む実際のプリズムと置換される。
いくつかの実施形態において、ユニバースが、仮想コンテンツを表示するためのアプリケーションを開始する間、ユーザ103は、ローダボリューム210を所望の異なる場所に移動させ得る。いくつかの実施形態において、ユーザは、ローダボリューム210を最初に選択されたローダボリューム/プリズムの場所と異なる場所に移動させ得る。ユニバースが、プリズムを作成することを終了し、アプリケーションが、仮想コンテンツをプリズムの中にレンダリングすると、ユニバースは、ユーザがローダボリューム210を設置する度、ローダボリューム210を仮想コンテンツを表示するプリズムと置換し得る。
二次UIボリューム220は、プリズム113(例えば、その「親プリズム」)が作成されると作成され得る別のプリズムである。二次UIボリューム220は、ユーザのために、プリズムの普遍的インターフェースを提供する。例えば、二次UIボリューム220は、二次UIボリューム220が、プリズムを管理する(例えば、閉じる/除去する、共有する、追従する、プリズムのコンテンツのスクリーンショットを撮影する等)ための機構を提供するので、ウィンドウドレッシングと見なされ得る。プリズムが、作成されると、プリズムがランチャの一部ではない(ランチャアプリケーションが、二次UIボリュームを有していないこともある)場合、二次UIボリューム220が、プリズムのために作成され得る。二次UIボリューム220は、ユーザがプリズムと相互作用し、それを管理するための(閉じる/除去する、共有する、追従する、スクリーンショット等)グラフィカルユーザインターフェースアイコンを表示するための空間/ボリュームを提供する。二次UIボリューム220は、親プリズムに関連付けられ、親プリズムとグループ化され得る。二次UIボリューム220の寿命は、それが関連付けられる親プリズムの寿命が終了すると、終了する。
いくつかの実施形態において、二次UIボリューム220は、少なくとも3つの状態を有し得る:(1)親プリズムの焦点がずれているとき、何も表示しない;(2)親プリズムの焦点が合っているとき、コンポーネントの「可視名」を表示する;および、(3)特定のユーザ相互作用(例えば、ハンドヘルドコントローラ(例えば、トーテムまたは他の好適なユーザ相互作用コントローラ)のホームボタンがある秒数にわたって保持されたこと)が検出されると、アプリケーションメニューオプションアイコンの「カルーセル」を表示し、カルーセルは、アイコンの集合を表示し、そのうちの1つは、プリズムを閉じるための大「X」アイコンであり得ること。いくつかの実施形態において、二次UIボリューム220は、その親プリズムを介して、入力を受信する。言い換えると、親プリズムは、二次UIボリューム220がそのカルーセルを表示しているかどうかを決定し得、表示している場合、親プリズムは、ユーザ入力を二次UIに向け直す。二次UIボリューム220のカルーセルは、下で開示される。
いくつかの実施形態において、ランチャは、複合現実システムのためのデフォルト「ホーム」メニューであり得る。ランチャは、コンテンツの複数のパネルをシステムステータスバーと並んで一緒にし得る。各パネルは、異なるコンテンツタイプを表し得る。アプリケーションは、ランチャから引き出され、迅速な復帰のために、ランドスケープの中にピン固定され得る。ランチャ自体も、場所毎のカスタマイズおよび/または迅速アクセスのために、ランドスケープの中に設置され得る。
ランチャ230は、新しいアプリケーションをユーザのランドスケープ110の中に立ち上げる能力をユーザに提供する。ランチャ230は、パネルと呼ばれる一連の身体中心プリズムから成るアプリケーションであり得る。パネルは、垂直および水平にスクロール可能であり得、ユーザは、例えば、スワイプ運動を用いて、パネル間で切り替え得る。いくつかの実施形態において、1つのパネル(例えば、中心パネル)が、一度に可視であり得、その2つの近傍パネルが、プレースホルダパネルとしてその側面において可視である。ユーザが、次のパネルにスワイプすると、プレースホルダパネルは、拡張し、完全パネルを示し得る。パネルは、アイコングリッドアプリケーション260と、ソーシャルパネル280と、ストアパネル290とを含み得る。いくつかの実施形態において、ユーザが、次のパネルにスワイプすると、パネルそれら自体は、移動または変化させられないが、代わりに、異なるパネル内のコンテンツ(例えば、アイコン)が、中心パネル(例えば、アクティブパネル)内および外に動画化され得る。さらに、アプリケーションは、下でさらに議論される、場所毎のカスタマイズのために、ランチャ230から引き出され、ユーザのランドスケープ110の中にピン固定され得る。
いくつかの実施形態において、アプリケーション140は、各アプリケーション140上の集中型レンダリングサービスクライアント250を介して、ユニバースと通信し得る。集中型レンダリングサービスクライアント250は、ユニバース130内のユニバースサーバ205と通信し得る。集中型レンダリングサービスクライアント250は、コンテンツを生成するアプリケーション140および他のアプリケーションが、ユーザのランドスケープ内への表示のために、ユニバースサーバ205を介してユニバースと通信することを可能にする集中型レンダリングシステムのクライアントサービスであり得る。
ユニバースサーバ205は、ユニバースが、ユーザのランドスケープ内に表示されるためのユニバースコンテンツを提供するアプリケーションと通信することを可能にする集中型レンダリングシステムのサービスを備え得る。いくつかの実施形態において、通信は、データをレンダリングすることより多く、例えば、入力データ、セキュリティ権限を要求すること、仮想キーボードを表示することまたは隠すことを要求すること等を備え得る。
いくつかの実施形態において、集中型レンダリングシステムは、複数のアプリケーションから単一ディスプレイ(例えば、複合現実システムにおけるユーザのランドスケープに)において表示されるためのグラフィカルデータを受信するためのハードウェアおよびソフトウェアリソース専用のシステムであり得る。集中型レンダリングシステムは、複数のアプリケーション140からのグラフィカルデータをシーングラフ等の「集中型」データ構造に組み合わせ、それは、複数のアプリケーションからのグラフィカルデータを現実的および効率的様式において反映させるシーンをディスプレイにレンダリングするために使用され得る。集中型レンダリングシステムを達成するために、いくつかの実施形態において、アプリケーションは、クライアントプリズム(例えば、図2からのクライアントプリズム215)と呼ばれるプリズムのローカル表現に変更を行い得る。これらの変更は、次いで、ユニバースサーバ205に送信され、サーバプリズムに記憶され得る。集中型レンダリングシステムは、次いで、更新されたデータをサーバプリズムにおいてレンダリングし得る。集中型レンダリングシステムは、以降、「Cali」または「Kali」システムと称され得る。ユニバースは、例えば、ユニバースが実世界におけるプリズムを管理し得るので、Caliサーバの拡張バージョンと見なされ得る。
いくつかの実施形態において、ユニバースのための仮想コンテンツ115を作成する各アプリケーション140は、それぞれのアプリケーション140の各々にインストールされた集中型レンダリングサービスクライアント250(以降、「Caliクライアント」と称され得る)を介して、集中型レンダリングシステムおよびユニバースと通信する。さらなる情報は、「CENTRALIZED RENDERING」と題され、2017年3月30日に出願され、参照することによってその全体として本明細書に組み込まれる関連出願第62/479,134号に開示され得る。集中型レンダリングシステムは、複数の異なるアプリケーションからの仮想コンテンツが適切に分析および処理されることを確実にし、必要な場合、仮想コンテンツが現実的様式においてユーザに表示されることを確実にすることによって、ユーザの体験を改良する。いくつかの実施形態において、ユニバースは、プリズムを管理すること等の追加の機能性を伴うCaliサーバのインスタンスである。いくつかの実施形態において、クライアントプリズムは、Caliクライアントボリュームのインスタンスであり、サーバプリズムは、Caliサーバボリュームのインスタンスであり、アプリオプションディスプレイをもたらすこと、プリズムがそのコンテンツをロードする間にローダボリュームを表示すること、他のプリズムと衝突することを行うための能力、および変換ツリーの一部である能力等、追加の機能性を伴う。
クライアントプリズム215aおよびクライアントプリズム215bは、アプリケーション140によって生成される仮想コンテンツを備え、仮想コンテンツは、ユーザのランドスケープ内に表示されるために、Caliクライアント250aによってユニバースサーバ205に送信された。いくつかの実施形態において、アプリケーション140が、仮想コンテンツ115aおよび115bに変更を行うと、仮想コンテンツへの変更は、クライアントプリズム215からユニバースサーバ205に通信され、その情報は、対応するサーバプリズムデータ構造113においてユニバースの内部に記憶される。いくつかの実施形態において、アプリケーション140は、仮想コンテンツ115aが表示されるユーザのランドスケープ内の場所を把握していない。ユニバースは、クライアントプリズム215aに関連付けられた対応するサーバプリズム113aを介して、仮想コンテンツ115aの表示場所を管理し得る(例えば、集中型レンダリングシステムによって処理された後の仮想コンテンツ115a)。アプリケーション140は、ユニバースサーバ205にアクセスすることによって、新しいプリズムを要求し得る。いくつかの実施形態において、ユニバースサーバ205は、ユーザのランドスケープ110内への表示のために仮想コンテンツを提供するアプリケーションからの集中型レンダリングサービスクライアント250と通信するユニバースにおけるソフトウェアモジュールであり得る。例えば、ユーザが、アプリケーションを立ち上げ、アプリケーションからの仮想コンテンツをユーザのランドスケープ内に表示することを欲するとき、アプリケーションは、ユーザのランドスケープ内に定着させられ得るプリズム内に表示されるために、集中型レンダリングサービスクライアントを介して、アプリケーションからユニバース上のユニバース集中型レンダリングサービスにユニバースへの仮想コンテンツを提供し得る。
いくつかの実施形態において、アイコングリッドアプリケーション260は、最近のアプリケーションセクション(図示せず)および/または一般的アプリケーションセクション(図示せず)を備え得る。一般的アプリケーションセクションは、複合現実システム上にインストールされる各アプリケーションを表すアイコンを備える。一般的アプリケーションセクションは、最初に、インストールされたパッケージのリストを決定するためのパッケージマネージャ(図示せず)へのコールをデータ投入され得る。アイコンが、各パッケージにおける各アプリケーションのために追加される。パッケージマネージャがパッケージインストールおよびアンインストールをユニバースに通知すると、アイコングリッドアプリケーション260は、適宜、そのアイコンを調節する。パッケージマネージャサービスは、アプリケーションのインストールを管理し、それらのアプリケーションについての情報(それらの名称、アイコングラフィック、セキュリティ許可、実行可能ファイル、およびデータファイル等)を維持する。
最近のアイコンセクションは、ディスク上のログから最初に再構築され、次いで、他のサービスからのコールによって更新され得る。パッケージ名は、ライフサイクルサービスがアプリケーション開始イベントをランチャに通知すること、および、パッケージマネージャがパッケージアンインストールイベントをランチャに通知することを行うと、ディスクにログ付けされ得る。ユーザは、立ち上げるためにアイコンを選定すること、または、ランドスケープの中に設置するためにアイコンを抽出することによって、アイコングリッドアプリケーション260と相互作用し得る。
ライフサイクルサービスは、アプリケーションの開始、停止、スリープ、およびウェイクアップのプロセスを管理する集中型サービスであり得る。ライフサイクルサービスはまた、アプリケーションが予期せずに終了(クラッシュ)するときも把握する。これらのイベントのいずれかが発生すると、サービスのリスナは、通知され、ユニバースは、リスナのうちの1つである。ユニバースは、このサービスにアクセスし、アプリケーションを開始、停止、スリープ、およびウェイクアップする。いくつかの実施形態において、ライフサイクルサービスは、複合現実システム内で起動するアプリケーションプロセスのライフサイクルを制御するためのアプリケーションプログラミングインターフェース(API)を提供する。ライフサイクルサービスは、許可の組を伴うアプリケーションバイナリを起動するための新しいプロセスを生成し、APIをアプリケーションによって実装される所定のインターフェース上にコールし、それらのライフサイクルを制御し得る。ライフサイクルサービスは、リスナインターフェースも提供し、それを通して、他のモジュールは、開始/停止/一時停止/再開されているアプリケーションを記録し得る。ライフサイクルサービスは、ランチャまたはユニバースと別個のプログラムであり得る。いくつかの実施形態において、ライフサイクルサービスは、ミドルウェアであり得る。
いくつかの実施形態において、図2に示されるように、アイコングリッドアプリケーション260は、集中型レンダリングサービスクライアント250bと、クライアントプリズム215cとを備える。上で議論されるように、いくつかの実施形態において、コンテンツをユーザのランドスケープ内に表示するアプリケーションは、ユニバースサーバ205と通信する集中型レンダリングサービスクライアント250を介して、それらのコンテンツをユニバースに送信し得る。ここで、ランチャメニューのために複合現実システム上にインストールされたアプリケーションのアイコンを提供するアイコングリッドアプリケーション260は、ユーザのランドスケープにおける表示のためのコンテンツを提供する任意の他のアプリケーションと同様である。しかしながら、いくつかの実施形態において、アイコングリッドアプリケーション内のアイコンは、ユーザによって選択されると、ユニバースに新しいアプリケーションを立ち上げること、始動させることを命令し得、その時点で、新しいアプリケーションは、アプリケーションが新しいプリズムの中に表示されるためのコンテンツを提供し得るように、新しいプリズムを作成する(例えば、ユニバースサーバ205を通して)ことをユニバースに要求し得る。アプリケーションがすでに実行している場合、ユニバースは、アプリケーションに、新しいプリズムを開くように要求し得る。
ステータスバーアプリケーション270は、複合現実システムのためのステータスインジケータを備える。ステータスインジケータおよびステータスバーアプリケーション270は、ユーザによって調節可能ではないこともある。ステータスインジケータは、WiFiサービスを動作させ、維持するための第1のサービス、Bluetooth(登録商標)サービスを維持するための第2のサービス、およびステータスのための第3のサービスにクエリすることによって、最初にデータ投入され得る。これらのサービスが、ステータスバーアプリケーション270に更新されたステータスを通知すると、ステータスバーは、適宜、調節し得る。ステータスバーは、それらがシステム内の任意の場所から迅速かつ効率的に反応し得るユーザクイック一瞥情報を提供する。いくつかの実施形態において、ステータスバーは、ランチャの上方に表示され得る。ステータスバーにおける4つの主要なセクションは、(1)グローバル検索、(2)通知、(3)クイック設定、および、(4)電源であり得る。音楽、電話、共有等、追加の一時的セクションが、必要に応じて、ステータスバーに追加され得る。
ユーザが、ランチャメニュー内にあるとき、ステータスバーは、一瞥アイコンに簡約される。ユーザが、上部までスワイプすると、動画をトリガし得、ステータスバーは、拡張し得る。ステータスバーは、ユーザがランチャパネルを通して左および右にスワイプし得る間、ランチャの上方に留まり得る。ステータスバーがハイライトされると、それは、拡張し、前方に動画化し得る。サブ選択ハイライトが、デフォルトで左に、例えば、グローバル検索上に現れ得る。より緊急コンテンツ(例えば、最近の通知、低バッテリ等)を有する他のセクションが存在する場合、サブ選択ハイライトが、代わりに、そのセクション上に現れ得る。
ソーシャルパネルアプリケーション280は、ユーザが相互作用し得る一連の連絡先から成り得る。ソーシャルパネルは、利用可能な連絡先のための連絡先サービスへのコールを最初にデータ投入され得る。各連絡先は、ソーシャルパネルに追加され、ユーザにアイコンとして表示され得る。ソーシャルパネルアプリケーション280が、新しい連絡先、更新された連絡先、除去された連絡先イベントを受信すると、ソーシャルパネルアプリケーション280は、適宜、その連絡先情報を調節し得る。ユーザは、連絡先アイコンをクリックし、利用可能な種々の連絡先プロバイダを伴うオプションメニューをポップアップすることによって、連絡先アイコンと相互作用し得る。ユーザがプロバイダを選択すると、ランチャアプリケーションは、連絡先の情報を用いて、関連付けられたアプリケーションを開始し得る。
ストアパネルアプリケーション290は、ユーザが複合現実システムのためのアプリケーション140を検索、ダウンロード、およびインストールすることを可能にし得る。ユーザがアプリケーションをダウンロードおよびインストールすることを要求すると、ランチャアプリケーション230は、ユーザの識別を識別確認サービス(図示せず)を用いて確認し得、次いで、パッケージマネージャを用いて、アプリケーションをインストールし得る。ライフサイクルサービスは、ユーザがアプリケーションをパネルから開始する場合、呼び出され得る。いくつかの実施形態において、ランチャ内の各パネルは、1つのランチャアプリケーションとしての代わりに、別個のアプリケーションとして機能し得る。
いくつかの実施形態において、ユニバースクライアント225は、ユニバースのために特定のコンテンツをレンダリングする。ユニバースサーバ205は、第三者アプリケーションをレンダリングしない。これは、プリズム内のコンテンツが、ユニバースサーバ205ではなく、ユニバースクライアント225によってのみレンダリングされ得るからである。したがって、無限プリズム、ローダボリューム/プリズム、および/または二次UIプリズムをレンダリングするために、サーバのためのそれらの特定のタイプのコンテンツをレンダリングするために、作業は、ユニバースクライアント225に委任される必要があり得る。無限プリズムは、例えば、2つのプリズムが衝突するとき、ユニバースによって、追加のグラフィックをプリズムの周囲にレンダリングするために使用され得る。無限プリズムは、下でさらに議論される。ローダプリズムおよび二次UIプリズムにおいて、ある機能性を調整するために、ユニバースサーバ205とユニバースクライアント225との間に特定の通信が存在し得る。例えば、ユニバースサーバ205は、アプリケーションがロードを終了したことを伝えられ得る。ユニバースサーバ205は、次いで、クライアント側ローダプリズムにアプリケーションを現在ロードしていることを通知し得る。ローダプリズムは、動画を示すことによって、アプリケーションがロードを終了したことのイベントに反応する必要があるであろう。クライアント側ローダプリズムが、動画を示すことを終了すると、ローダプリズムは、それが動画化を終了したことをユニバースサーバ205に通知し得る。次いで、ユニバースサーバ205は、ローダプリズムを退けさせ、ローダプリズムを破棄し、ローダプリズムの代わりに、アプリプリズムをレンダリングされた動画で表示することによって、ローダプリズムが動画化を終了したことの通知に反応し得る。開示された内容は、ユニバースクライアント225が機能し得る方法の単に一例である。当業者は、ユニバースクライアント225がユニバース130を補助し得るときの他の例が存在し得ることを理解し得る。
図3は、いくつかの実施形態による例示的境界ボリューム/プリズムを示す。アプリケーションコンテンツは、プリズムと呼ばれる1つ以上の境界ボリュームの内側においてユーザに提示される。上で議論されるように、非没入型のアプリケーションが、複合現実システム内で実行されるとき、そのコンテンツは、プリズムの内側にレンダリングされる。プリズムの属性および特性は、ユニバースがユーザのランドスケープ内のプリズムを一貫して管理することを可能にする。
プリズム113のボリューム空間は、図3における破線で示されるように、クリアかつ決定的境界を有し得る。境界は、プリズム113の境界内にのみ表示されるための仮想コンテンツ115のための境界ボリュームを提供する。プリズムの境界は、プリズム内に表示されるアプリケーションからのコンテンツが、プリズム外およびユーザのランドスケープの中にオーバーフローすること、または、溢れることを防止する。プリズムの境界113は、ユーザにプリズム113内に表示される仮想コンテンツ115を見るとき、ユーザに表示されないこともある。これは、重要な特徴である。何故なら、ユーザのランドスケープ内で3Dコンテンツの現実的表示を維持するために、仮想コンテンツ115の境を限るプリズムの境界を示さないことが重要であるからである。当業者は、仮想コンテンツが、より現実的方法において、ユーザのランドスケープ内に表示されるように、仮想コンテンツ115を包み込むプリズムの境界を表示しないことの重要性を理解する。3Dウィンドウとは対照的に、2Dウィンドウの境界線および境界は、概して、表示され、したがって、2Dウィンドウを表示するコンピュータのユーザは、1つの2Dウィンドウ内のコンテンツと別の2Dウィンドウからのコンテンツを明確に区別し得る。しかしながら、いくつかの実施形態において、例えば、1つ以上のアプリケーションに関する問題をトラブルシュートすることに役立つために、プリズムの境界を少なくとも一時的に表示することが有利であり得る。
アプリケーションは、ユニバースによって、コンテンツをその中に設置するためのプリズム113のインスタンスを与えられる。アプリケーションは、相対的設置アルゴリズムおよび/または恣意的変換を使用して、2Dおよび/または3Dコンテンツをプリズム113内にレンダリングし得るが、ユニバースは、依然として、コンテンツ抽出等の総合的相互作用パターンの管理を最終的に担う。複数のアプリケーションは、プリズム113を介して、ユニバースにプリズムを分離するプロセス境界をレンダリングし得る。
ユニバース内に配分される各プリズムは、調節され得る関連付けられたキー/値属性の組を有し、キー/値属性の組は、挙動の種々のビットを決定するか、または、所与のプリズムが存在する理由についての情報を伝達し得る。いくつかの属性は、通常アプリケーションに関して、読み取り専用であるが、プライベートAPIを伴うアプリケーションに関して、これらの属性は、書き込み可能である。プリズム113は、プリズム属性310と、アプリケーション特定の属性320と、仮想コンテンツ115とを備え得る。加えて、いくつかのプリズム113は、ユーザに追加のプリズム管理オプションを提供するための二次UIボリューム330を備える。しかしながら、いくつかの実施形態において、プリズムは、例えば、これらの他のタイプのプリズム(例えば、ランチャメニュープリズム)が、二次UIボリューム330によって提供される特徴を要求しないこともあるので、二次UIボリューム330を有していないこともある。プリズムの境界のように、二次UIボリューム330は、ユーザに表示されないこともある。ユーザが、プリズムに変更を行うことを欲すると、ユーザは、アプリケーションオプションメニューを表示するための要求を開始し得、アプリケーションオプションメニューは、プリズムのUI制御を二次UIボリュームのボリューム空間内に表示する。
プリズムは、それらが保持するアプリケーションに応じて、それらのコンテンツのための適切なフィードバックおよび挙動を与えるために、異なる属性を要求し得る。アプリケーションデベロッパは、それらがそれらのアプリケーションを作成するとき、それらのプリズムのためにいくつかの事前にプログラムされたオプションから選択し得、したがって、それらのコンテンツは、それらの選好に基づいて、正しく表され得る。下記は、これらのオプションのうちのいくつかの例である。
プリズム属性310は、少なくとも部分的にプリズムを定義し、ユニバースが、ユーザのランドスケープ内のプリズムを管理および維持することを可能にする。例えば、プリズム属性310は、デフォルトサイズ、最大サイズ、最小サイズ、定着/設置タイプ(例えば、ビルボード表示等に対するオプション)、定着タイプに対する所与のプリズムの挙動、定着場所、子プリズム生成場所、子頭部姿勢ハイライト、表面上挙動、独立変換制御、サイズ変更対縮尺変更インジケータ、アイドル状態タイムアウト変数等のうちの1つ以上を含み得る。プリズム属性310は、ユーザのランドスケープ内の一つ一つのプリズムを追跡し、管理する能力をユニバースにもたらす。ユーザのランドスケープ内に表示される仮想コンテンツを管理する単一のアプリケーションを有することは、ユーザのランドスケープ内に表示されるコンテンツが一貫し、かつ信頼性がある様式において表示されることを保証する。プリズム属性310のうちのいくつかは、下でさらに開示される。
最大、最小、およびデフォルトサイズ:アプリケーションは、アプリケーションデベロッパによって規定された上側および下側境界を有し得る(随意に、ユニバースからの追加の限界を伴う)。加えて、アプリケーションデベロッパは、アプリケーションが最初に立ち上げられるとき、デフォルトサイズを有し得る。
移動シーケンス中にビルボード表示するためのオプション:あるオブジェクト(例えば、平面状であるコンテンツ)において、移動シーケンス中、ユーザに向かってビルボード表示を行い、視認性およびより少ない管理を促すことは、道理にかなっている。例えば、平面表面上に表示されるあるコンテンツは、特定の場所および/またはオブジェクトに対して位置付けられ得るが、その向きは、平面表面上に表示されるコンテンツが、常時、平面表面上に表示されるコンテンツを視認するユーザの方向に面するように、自動的に算出される。他の随意の身体動態挙動も、これに追加され得る。
子プリズム生成場所:プリズムは、子を生成し、フレキシブルなレイアウトを作成し得る。アプリケーションデベロッパは、子が親プリズムに対して生成され得る場所の応答範囲を決定することが可能であるべきである。
子頭部姿勢ハイライト:アプリケーションは、子プリズム上の頭部姿勢ハイライトが別個のハイライトとして取り扱われ得るかどうか、または1つのユニットとして全ての子/親プリズムをハイライトし続けるかどうかを選定することが可能であり得る。
子プリズム関係挙動:プリズムは、平行移動、回転、および拡大縮小において、それらの子プリズムがそれらに定着させられ得るかどうかを決定し、子プリズムが主要なプリズムとともに終わるであろうかどうかを選定し得る。
表面上挙動:プリズムは、表面にスナップされ、それらがサイズ/スケール変化を欲するかどうかを決定するために、その表面にクエリし得る。表面が空所を有する場合、プリズムは、表面の全てまたはあるパーセンテージに適合するようにサイズ変更し、ユーザの視野(FOV)に入り得る。
独立変換制御:アプリケーションは、その平行移動、回転、および拡大縮小の独立制御を要求し得る。これは、アプリケーションが、それ自体を移動および変換することを可能にし得る。
サイズ変更対拡大縮小:いくつかのアプリケーションは、それらのコンテンツのみを拡大縮小代わりに、それらの境界をサイズ変更することを選定し得る。これは、より多くのコンテンツがそれらの境界内に表示されるように適応し得る。これは、既存のコンピュータ2Dウィンドウのように機能し得る。
アイドル状態タイムアウト:アプリケーションは、それらのアイドル状態に入るまでにかかる時間を選定することが可能であり得る。これは、アプリケーションが視野外にある場合でも、コンテンツを再生し続けることを望み得る状況をハンドリングし得る。例えば、ライブビデオを表示するアプリケーションは、ユーザが一時的に目を逸らす場合でも、コンテンツを表示し、オーディオを再生し続けることを望み得る。
アプリケーション特定の属性320は、各プリズムのためのアプリケーション特定の状態情報を記憶したキー/値ペアのリストであり得る。キー/値ペアのリストは、アプリケーションに特定であり、キー/値ペアは、プリズム内に表示またはレンダリングされているアプリケーションのコンテンツの状態情報を提供する。キー/値ペアのリストは、プリズムの中にレンダリングするアプリケーションに応じて、各プリズムのために異なり得る。例えば、アプリケーションが、ビデオストリーミングアプリケーションである場合、いくつかのキー/値ペアは、ビデオ名、ビデオの視聴最大時間、ビデオを表示するためのアスペクト比等を含み得る。
プリズム属性310およびアプリケーション特定の属性320の両方が、各プリズムのために、ローカルデータベース137のデータ構造に記憶され得る。プリズムデータは、ユーザが複合現実システムを動作させ、プリズムと相互作用している間、絶えず更新される。上で議論されるように、ローカルデータベース137のプリズムインスタンスデータは、周期的ベースで外部データベース150と同期することによって、持続し得る。いくつかの実施形態において、ローカルデータベース137および外部データベース150は、ほぼリアルタイムで同期させられ得る。
ユーザがユニバースにおいてアプリケーションを立ち上げるとき、ユーザは、プリズムをランチャメニューから外に引き出し、結果として生じるボリュームを空間の中に設置し得る。アプリケーションアイコンをクリックする等のアプリケーションを立ち上げる他の方法も、使用され得る。いくつかの実施形態において、ユーザは、コントローラ/入力デバイス(例えば、トーテム)を上または下に移動させることによって、プリズムを(球状シェル上の)高度および方位角に移動させ得る。オブジェクトをより近くまたはより遠くに移動させるために、ユーザは、トーテム上のジョイスティックを使用して、プリズムを「押すこと」または「引くこと」を行い得るか、または、ユーザの指をトーテムのタッチセンサ式部分の上でスライドさせ得る。これは、シェルの半径を変化させる効果を有する。いくつかの実施形態において、トーテム上の2つのボタンは、プリズムを拡大または収縮させ得る。最後に、トーテム自体を回転させることは、プリズムを回転させ得る。これは、トーテムが6自由度(DOF)を有し得ると仮定する。これは、例えば、VRペインティングアプリケーションにおいて使用される種類の制御と一致するが、トーテムは、任意の好適なユーザ入力デバイスであり得る。
いくつかの実施形態において、プリズムは、それらが他のプリズムと完全または部分的に交差するような方法でそれら自体が設置されることを可能にしないこともある。プリズムは全く交差しないか、または、正確に同じ場所(定着点)にない/能動的に表示しないが、プリズムは、下で議論されるように、物理学目的のために、わずかのみ重複し得ることを例外とする。2つ以上のプリズムが、正確に同じ場所に設置される場合、アクティブなアプリケーションが表示され、正確に同じ場所に定着させられた他のアプリケーションは、隠され得る。ユーザは、例えば、ボリューム内に表示されるドットによって、複数のアプリケーションがある場所にあることが分かり得る。例えば、3つのプリズム/アプリケーションが、特定のスポットにある場合、3つのドットがあり得る。ユーザが、3つのうちのアプリケーション#2を視認する場合、第2のドットが明るくされ、他のドットが薄暗くされ得る。ユーザは、次いで、異なるアプリケーションを通して、スワイプまたはスクロールし得る。グラフィックは、切り替わり得、ドットは、更新され(例えば、アクティブなドットを明るくすることによって)、現在アクティブであるアプリケーションを示し得る。
いくつかの実施形態において、いくつかのプリズムは、同一定着場所に共同設置され得る。一見すると、それは、奇妙に思え得る。アプリケーションをユーザのランドスケープ内に設置するために利用可能なあらゆる3D空間の中で、それらを同一スポットに設置する理由とは?実際に、それは、完全に道理にかなっている。例えば、仮想ボードゲームをプレーするためのユーザのお気に入りの場所は、台所のテーブル上であり得る。朝、ユーザは、朝食を食べている間、「Ticket To Ride」をプレーすることを好み得る。しかし、ユーザが、仕事から帰宅時、ユーザは、「Risk」をコンピュータと対戦することを好み得る。ユーザは、同一スポットに位置する複数のボードゲームを有し、必要時、それらを切り替え得る。
いくつかの実施形態において、プリズムは、空間の恣意的場所に設置され得る。この場合、プリズムは、立方体/長方形ボリュームの中心点によって定着させられ得る。しかし、(例えば、設置中)プリズムがランドスケープにおける水平表面の近傍に移動させられる場合、プリズムは、表面にスナップするように試み得る。定着点は、次いで、プリズムの底部平面の中心となり得る。同様、プリズムが、垂直表面(例えば、壁)に向かって移動させられる場合、それにスナップするように試み得、定着点は、垂直表面の隣にあるプリズムの側面となり得る。
定着点の目的は、プリズムが定着させられる表面と互いに貫通しないように、プリズムを設置することであり得る。定着点も、定着させられるオブジェクトとともに移動し得る。複数のプリズムが、同じ場所を共有するとき、その場所は、定着点であり得、それらのそれぞれのボリュームの中心点ではない。アプリケーションは、それらが位置する場所を把握せず、把握する必要がないが、アプリケーションは、それらのそれぞれのプリズムに尋ね、それぞれのプリズムが定着させられている方法を確認し得る。アプリケーションは、有効である定着タイプも規定し得る。例えば、Halcyonを垂直表面に定着することは、道理にかなっていない。
アプリケーションのためのコンテンツ(グラフィック)の全ては、プリズムのボリュームに含まれ得る。ユニバースは、プリズム外に延びているグラフィックを自動的にマスクアウトし得る。アプリケーションは、世界内の他のアプリケーションについて把握していないので、ユニバースは、異なるアプリケーションの異なるプリズム間で発生する相互作用を管理し得る。
プリズムを設置するためのユーザインターフェース設計は、プリズムが設置状態で移動させられつつある間、プリズムが物理的方法において揺れるように要求し得る(紐上のオブジェクトのように)。異なるアプリケーションが欲するであろう物理的挙動の種類を予測することを試みる代わりに、プリズムは、設置されつつある間、移動情報をアプリケーションにフィードし得る(バインダインターフェースを通して)。アプリケーションは、次いで、適切に挙動し得る。
それらが設置されつつあるとき、プリズム間にも物理的挙動が存在し得る。これは、アプリケーションの物性実装を無効にし得、アプリケーションは、移動データを受信することを停止し得る。
プリズムは、最初、交差することに抵抗し得る。ユーザが、2つのプリズムを同じ場所の中に押し続ける場合、プリズムは、それが交差するプリズムの定着場所にスナップし得る。これは、弾力的で(例えば、互いに相互作用する石鹸の泡に類似する)、物理学に大まかに基づくように行われ得る。
オーディオエミッタが、子ノードとしてアプリケーションのシーングラフ内に設置され得る。これらのノードは、ルートノード変換にローカルであり得る。したがって、プリズムは、移動させられ得、プリズムの移動は、アプリケーションがオーディオノードの変換を更新することを要求しない。ユニバースは、オーディオエミッタから世界空間への最終変換に関与し得る。プリズムも、オーディオノードをその境界に制約することに関与し得る。アプリケーションは、オーディオをそれらのそれぞれのプリズムの外の点から放出しないこともある。
いくつかの実施形態において、オーディオを空間化することが望ましくないこともある。例えば、ユーザが、仮想TVを壁に設置し、TV画像に集中させられている場合、TVのオーディオは、修正なしでユーザに提供され得る。これは、より良好なオーディオ体験をユーザに提供する可能性が高い。周囲音の場合、オーディオ信号は、空間情報をすでに有している。音は、TVに対する最適場所に設置された仮想スピーカから放出され得る。
いくつかの実施形態において、ユーザによるオーディオ強度を制御するためのボタン押下時、ユニバースは、頭部姿勢をチェックし、ユーザが見ているプリズムを決定し、音量アップまたは音量ダウンイベントを対応するプリズムに送信し得る。プリズムは、その情報をプリズム内で起動されているアプリケーションに転送し得、アプリケーションは、それを解釈する方法を決定し得る。ランドスケープ内に焦点が合っているアプリケーションが存在しない場合、音量ボタン設定は、グローバル音量を調節し得る。
いくつかの実施形態において、従来の2Dウィンドウとプリズム113との間の1つの差異は、2Dウィンドウにおいて、2Dウィンドウの境界を設定する境界線がユーザによって見えるように意図され、2Dウィンドウ内にコンテンツを含むための明確な境界線を提供し、2Dウィンドウの境界線外のコンテンツから分離することである。しかしながら、いくつかの実施形態において、3Dウィンドウ(例えば、プリズム113)の境界線は、見えないように意図される。全てのプリズムの輪郭(例えば、境界線)がユーザに見え得る場合、「現実」であるような錯覚を破壊し、その境界線が表示されるプリズム内に表示される仮想コンテンツは、現実である代わりに、コンピューティング/デジタル/仮想コンテンツのように見えるであろう。いくつかの実施形態において、境界線は、例えば、必要に応じて、ユーザ操作を有効にするために表示され得る。
別の差異は、2Dウィンドウが、一般に、ユーザによって制御され、および/または、ユーザと相互作用されるように意図されることである。例えば、閉じるボタンが、常時、従来の2Dウィンドウの右上角に現れ得るか、または、メニューバーが、2Dウィンドウの上部境界線に表示され得る。しかしながら、プリズムにおいて、ユーザは、概して、プリズムおよびその境界と相互作用しない。代わりに、二次メニュー(例えば、アプリオプションメニュー)が、ユーザがオプションのリストからプリズムを制御および管理/操作するために、一時的にプルダウンされ得る。
さらに、2Dウィンドウは、その周囲から独立している。例えば、コンピュータ画面上に表示されるものは、ユーザが画面を移動させる場合、自動的に変化しない。しかしながら、プリズムは、実世界との関連で設置される必要がある。例えば、各プリズムは、(1)壁、テーブル等の実環境内のオブジェクト、(2)プリズムが定着するための背景またはキャンバスを提供するために作成された仮想オブジェクト、および/または、(3)ユーザに対して、実世界の中に設置され得る。いくつかの実施形態において、プリズムは、パス可能世界および実世界との関連で設置され得る。
なおもさらに、いくつかの実施形態において、プリズムは、互いに重複/相互貫通することを可能にされないこともあるが、プリズムが物理学目的のためにわずかのみ重複し得ることを例外とする。例えば、いくつかの実施形態において、2つ以上のプリズム内の仮想コンテンツが、衝突するとき、仮想コンテンツは、それらが互いに衝突するように見えるとき、2つの仮想コンテンツ間で跳ね返りを示すように見え得る。ここで、プリズムは、2つの仮想コンテンツ間の跳ね返りの効果を作成するために、わずかのみ重複し得る。いくつかの実施形態において、2つ以上のプリズムのための境界ボックスが、衝突するとき、プリズム、故に、プリズムのコンテンツは、跳ね返るように見え得る。しかしながら、コンピュータ上の2Dウィンドウは、重複し、多くの場合、2Dウィンドウは、互いの上にカスケード表示され、ユーザのビューから互いを隠し得る。いくつかの実施形態において、2つのプリズムが、ユーザのランドスケープ110内の同じ場所に定着させられる場合、プリズムのうちの1つは、表示され得るが、他のプリズムは、表示から最小化され、アイコンまたはテキストもしくは画像(または任意の他の視覚的インジケータ)が、別のプリズムが正確に同じ場所に定着させられていることをユーザに示すために表示される。いくつかの実施形態において、例えば、プリズムが衝突するとき、プリズムの周囲に追加のグラフィックをレンダリングするために、無限プリズムが実装され得る。いくつかの実施形態において、無限プリズムは、その境界が無限遠に設定されたプリズムであり得る。例えば、2つのプリズムが、衝突するほど近接する場合、ユニバースは、輝きを2つのプリズム間の空間の領域内にレンダリングし得る。これらの例外をハンドリングするために、ユニバースは、2つのプリズム、ユーザの視野全体(ユーザに現在見え得るもの)、ユーザの動眼視野全体(動き回る場合、ユーザに見え得るもの)等の周囲の/それを包囲する全ての空間を包含し得る無限プリズムを作成し得る。これは、ユニバースが、グラフィックを2つのプリズム間の任意の場所に引き出すことを可能にし得る。いくつかの実施形態において、無限プリズムは、いかようにも、衝突しない、または相互作用しないこともある。いくつかの実施形態において、無限プリズムは、二次UI等を有していない。いくつかの実施形態において、ユニバースのみが、無限プリズムへのアクセスを有し得る。無限プリズムは、ユニバース初期化時に作成され得、ユニバースがシャットダウンするまで、常時存在し得る。第2の例において、無限プリズムは、キャラクタ(例えば、アバタ、パーソナルアシスタント、蝶、動物等)を他のランドスケープアプリ間で移動させ、例えば、各アプリケーションの内容および/またはアプリケーションの使用方法をユーザに説明するために有用であり得る。
図4は、いくつかの実施形態によるアプリケーションを立ち上げ、仮想コンテンツを表示するために、例えば、頭部搭載型システム160を装着しているユーザによって見られるような例示的ランチャメニューを示す。ランチャメニューは、ランチャメニューが他のアプリケーションを立ち上げることを要求する高度な権限により、それ自身のアプリケーションとして存在し得る。ランチャメニュー400は、ステータスバー410を備え得、パネルと呼ばれる身体中心境界ボリューム(例えば、プリズム)を有し得る。いくつかの実施形態において、ランチャパネルは、単一アプリケーションの外観を与えるいくつかの異なるアプリケーションを備える。例えば、各パネルは、別個のアプリケーションであり得るが、単一ランチャアプリケーションの外観を与え得る。ユニバースは、ランチャメニュー呼び出し(例えば、ランチャメニューを開くための要求)中、各パネルのために、明示的作成コールを行ない得る。
いくつかの実施形態において、別個のアプリケーションプロセスが、各パネルの中にレンダリングし得る。プロセスは、ユニバースの残りと同一コンテンツレンダリング技法を使用し得るが、いくつかの実施形態において、以下の例外のうちの1つ以上を伴う:(1)ランチャメニューは、他のアプリケーションの開始をトリガし得る;(2)ランチャメニューアイコンおよびウィジェットアイコンは、抽出され、ランドスケープ内に設置され得る(設置されたアイコンは、ショートカットと称され得る);(3)ランチャメニュー自体が、ランドスケープ内に設置され、移動させられ得る;(4)コンテンツ抽出がランチャアイコン上で開始すると、ランチャは、ユーザの手、6自由度コントローラ、または他のコントローラに定着させられるプレースホルダコンテンツをロードし得、それによって、抽出が終了されると、ユニバースは、アプリケーションをプリズムの中に立ち上げ、それは、プレースホルダコンテンツに取って代わる;および、(5)ユーザは、ランチャメニュー内のパネル間でスワイプし、個々のパネルを拡張させ得る。いくつかの実施形態において、パネルは、カルーセルとして実装されないこともある。代わりに、ランチャパネルは、主要なパネルが、常時、中心パネルとして固定され、最小化されたパネルからのコンテンツが、ユーザが、左、右、上、または下にスワイプを実施するにつれて、中心パネル内外に動画化されるように、共同設置され得る。いくつかの実施形態において、ランチャアプリケーション自体は、ユーザによって、ユーザのパス可能世界内に設置され、それによって、ユーザのパス可能世界および/またはランドスケープ内にランチャショートカットまたは設置式ランチャを作成し得る。
いくつかの実施形態において、ランチャメニュー400は、一連の身体中心パネルをパネルカルーセルとして編成し得る。パネルカルーセルは、各パネルがそれ自身のアプリケーションプロセスを起動し、および/または、各パネルが別個のアプリケーションであるように、1つのパネルを一度に表示し得る。いくつかの実施形態において、1つのみの現在のパネル405が、拡張され、一度に可視であり得る。2つの身体中心プレースホルダパネル(例えば、440aおよび440b)は、現在の拡張されたパネル405の両側において、現在の拡張されたパネル405から固定距離にあり得る。プレースホルダパネル440aおよび440bは、現在の拡張されたパネル405に隣接する簡約された形態の2つのパネルを表すユニバースによって作成された個々のプリズムであり得る。いくつかの実施形態において、ユーザが、次のパネルにスワイプすると、プレースホルダによって表されるパネルは、現在のパネルとなり得る。プレースホルダパネルの物理的モデルは、どのパネルが表されても、同一のままであり得る。いくつかの実施形態において、異なるパネルを表すプレースホルダ間の唯一の視覚的差異は、ラベル(例えば、図4に示されるように、最近およびソーシャル)である。他の実施形態は、同じ場所にあるが、パネルに特定の異なるアイコンを伴う異なるパネルを有し得る(図11参照)。
いくつかの実施形態において、ランチャメニュー400は、パネルのフローを管理し、理想的に、左および右パネルをキャッシュする。パネルカルーセルは、最近アクセスされたアプリケーションパネル420と、一般的アプリケーションパネル425と、ソーシャルアプリケーションパネル430と、ストアパネル(図示せず)とを備え得る。最近アクセスされたアプリケーションパネル420は、ユーザによって最近アクセスされたアプリケーションのアイコンを備え得る。最近アクセスされたアプリケーションパネル420は、一般的アプリケーションパネル425のための現在のパネル405が現在表示されているとき、最小化された状態で示され得る。最近アクセスされたアプリケーションパネル420は、ユーザが、対応する方向(例えば、右)にスワイプし、最近アクセスされたアプリケーションパネル420を正面かつ中心に持って来ると、そのアイコンを示すように拡張され得るか、または、他の実施形態によると、それぞれのパネルに関するコンテンツは、中心パネルの内外に動画化し得る。いくつかの実施形態において、最近アクセスされたアプリケーションパネル420が、最初に表示され得、プリケーションパネル420は、アプリケーションのリングを備え得る。任意の数のパネルが、使用され得、それらのパネルは、任意の順序で表示され得る。パネルの順序および数は、ユーザ試験、ユーザの容易性、および/またはユーザ選好に基づき得る。
いくつかの実施形態において、ソーシャルアプリケーションパネル430は、一般的アプリケーション425のための現在のパネル405(または任意の他のパネル)が現在表示されているとき、最小化された状態で示され得る。ソーシャルアプリケーションパネル430は、ユーザが、対応する方向(例えば、左)にスワイプし、ソーシャルアプリケーションパネル430を正面かつ中心に持って来る場合、そのアイコンを示すように拡張され得るか、または、いくつかの実施形態において、ソーシャルアプリケーションに関連付けられたコンテンツは、中心パネルの中に動画化/表示される一方、プレースホルダパネル上のラベルが、適宜、変化させられる。
いくつかの実施形態において、一般的アプリケーションパネル425のアイコン450は、図2からのアイコングリッドアプリケーション260に類似するアイコングリッドアプリケーション内にアイコンを表し得る。アイコン450は、複合現実システムにインストールされたアプリケーションを表し得る。ユーザは、特定のアイコン450を選択することによって、アプリケーションを立ち上げ得る。いくつかの実施形態において、ユーザは、アイコン450をパネルから抽出し、アイコン450をユーザのランドスケープ内に設置し得、その時点で、ユニバースは、抽出されたアイコン450に対応するアプリケーションのための始動プロセスを開始し得る。対応するアプリケーションが、そのコンテンツのそのレンダリングを完了すると、抽出されたアイコン450は、プリズムと置換され得、アプリケーションのレンダリングされたコンテンツは、プリズム内に表示される。
上で議論されるように、いくつかの実施形態において、ステータスバー410は、複合現実システムのステータスインジケータを備え得る。ステータスインジケータは、例えば、WiFiサービスを動作および維持するための第1のサービス、Bluetooth(登録商標)サービスを維持するための第2のサービス、およびステータスのための第3のサービスに最初にクエリすることによって、データ投入され得る。これらのサービスが、ステータスバーに更新されたステータスを通知すると、ステータスバーは、適宜、調節し得る。ステータスバーは、オーディオ音量、現在の時間、WiFi接続/強度、Bluetooth(登録商標)、および電源等のサービスのためのステータスインジケータを含み得る。他のサービスは、上で述べられたサービスと組み合わせて、またはその代わりに、ステータスインジケータに含まれ得る。
いくつかの実施形態において、アプリケーションをランチャメニュー400から立ち上げるための要求に基づいて、アイコングリッドアプリケーションは、例えば、プリズムサービスおよび/またはユニバースサービスを通して、ユニバースと通信し、アプリケーションを開始し得る。ユニバースは、規定されたパッケージ名および/またはコンポーネント名を用いて、プリズムを作成し得る。ユニバースは、アプリケーションのリスナを使用して、プリズムをアプリケーションに与え得る。プリズムは、ここで、「設置モード」であり得る。ユーザが、プリズムを設置すると、ユーザは、任意の数の方法において、例えば、二次UIアプリケーションオプションメニューを使用して、プリズムを修正し得る。
図5A−5Bは、いくつかの実施形態による例示的パネルカルーセル変化を示す。図5Aは、ランチャメニューの例示的ビューを示し、ランチャメニューは、左から右へのスワイプ前の左520(例えば、図4からの440a)および右530(例えば、図4からの440b)パネルとして表されるプレースホルダパネルを有する。現在のアクティブパネル505は、アイコングリッド内のアイコンをアクティブパネル505内の「BB」として描写する例示的アイコングリッドを示す。いくつかの実施形態において、アイコングリッドは、グリッド、リスト、1つ以上の行を伴う1つ以上の列、アイコンの円、および/または任意の他の形状を形成する1つ以上のアイコンであり得る。小パネル535は、パネルカルーセル内の利用可能なパネルを示す(いくつかの実施形態において、小パネル535は、ユーザに示されない)。パネル位置インジケータ540は、「B」パネルを指している「C」として表された中心パネルと、「A」パネルを指している「L」として表された左パネルと、「C」パネルを指している「R」として表された右パネルとを示し、「D」パネルは、現在、ビュー内になく、したがって、パネル位置インジケータ540で指定されていない(いくつかの実施形態では、ユーザにも示されない)。
図5Bは、左から右へのスワイプ後の図5Aに示されるようなランチャメニューの例示的ビューを示す。新しいアクティブパネル555は、ここで、新しいアクティブパネル555のアイコングリッド内のアイコンとして「AA」を有する「A」パネルである。2つのプレースホルダパネルである左570パネルは、「D」パネルを示し、右580パネルは、図5Aにおける前のアクティブパネル505からの「B」パネルを示す。加えて、小パネル585は、ここで、パネルA、B、C、Dとして、利用可能なパネルをパネルカルーセル内に示す。しかしながら、パネル位置インジケータ590は、適宜、変化しており、ここで、「C」として表される中心パネルは、ここで、「A」パネルを指しており、「L」として表される左パネルは、ここで、「D」パネルを指しており、「R」として表される右パネルは、ここで、「B」パネルを指していることを示す。
いくつかの実施形態において、プレースホルダパネル自体は、一定のままであり得るが、ラベルのみが、変化する下にあるパネルを反映する。例えば、図4において、ユーザが、図5Bの左から右へのスワイプのように、左から右へのスワイプを実施した場合、新しいアクティブパネルは、「最近」のパネルとなり、右プレースホルダパネルは、「一般」の新しいパネルタイトルを用いて表示され、左プレースホルダパネルは、「ストア」の新しいパネルタイトルを用いて表示される(パネルカルーセルのみが、図4に開示される4つのパネルを有すると仮定する)。プレースホルダパネルの画像は、同一のままであり得るが、左および右プレースホルダパネルのタイトルは、適宜、変化し得る。パネルシフトは、ユーザ運動の切り替えアクション、例えば、左から右へのスワイプに基づき得る。当業者は、パネル間の切り替えの任意の他の方法も、使用され得ることを理解し得る。
図6は、いくつかの実施形態による、複合現実システムの以前の使用後、複合現実システムを開始するためのアプローチのためのフローチャートを示す。始動プロセス600は、ユーザが複合現実システムを以前に使用し、複合現実システムを電源オフにしてからある時間後、複合現実システムに電源投入する/それを開始するためのプロセスを示す。610において、複合現実システムは、ユーザの場所を識別し、頭部姿勢を確立し、ユーザ(例えば、ユーザの頭部)の場所および/または向きを決定する。頭部搭載型システム160は、少なくとも部分的にユーザの場所を決定するためのGPSを含み得る。
620において、ユニバースは、パス可能世界システム(例えば、外部データベース150)にアクセスし、現在のユーザのランドスケープ内に以前に表示されたプリズムのインスタンスを読み出し得る。パス可能世界は、インスタンスデータを返し得、したがって、ユニバースは、読み出されたプリズムインスタンスデータでユーザのローカルデータベース137を再構築することによって、プリズムの前の状態をユーザのランドスケープ内に再構築し得る。パス可能世界システムは、ユーザの環境についての情報、例えば、ユーザのランドスケープ110内で以前にアクティブであったプリズムのみならず、ユーザが以前にシステムをシャットダウンしたときの各プリズムの状態も持続的に記憶する。ローカルデータベース137に記憶されたユーザのプリズムインスタンスデータは、ユーザが複合現実システムをシャットダウンすると消去され得るので、複合現実システムの再開時、ローカルデータベース137内のユーザのプリズムインスタンスデータは、パス可能世界システム(例えば、図1からの外部データベース150)から読み出されたインスタンスデータに基づいて、再構築され得る。
いくつかの実施形態において、インスタンスデータは、各プリズムのために、以下のうちの1つ以上を含み得る:(1)プリズム属性(プリズム属性は、場所、向き、範囲幅、範囲高さ、範囲深度、定着タイプ、および/または定着位置を備え得る)、および、(2)それぞれのアプリケーションによって以前にレンダリングされた仮想コンテンツの状態情報を備えたアプリケーション特定の属性。例えば、プリズムの中にレンダリングする、アプリケーションが、ビデオストリーミングアプリケーションである場合、アプリケーション特定の情報は、ビデオのタイトル、ビデオが再生された時点、およびレンダリングされているビデオのアスペクト比を含み得る。アプリケーション特定の情報は、各アプリケーションのための状態情報を記憶したキー/値ペアのリストであり得る。キー/値ペアのリストは、それぞれのアプリケーションに特定であり得、キー/値ペアは、プリズム内に表示またはレンダリングされているアプリケーションのコンテンツのための状態情報を提供し得る。
いくつかの実施形態において、各ユーザ103が、それらのローカルデータベース137に記憶されたそれら自身のプリズムインスタンスデータを有し得る一方、マスタプリズムデータベースインスタンスデータは、パス可能世界システム(例えば、外部データベース150)に記憶され、複合現実システムの他のユーザのための他のプリズムインスタンスデータおよび/またはユーザの現在の場所に加えた他の場所のためのプリズムインスタンスデータを含む。複合現実システムのユーザのためのプリズムデータは、パス可能世界システムに記憶され得る。いくつかの実施形態において、第1のユーザは、第1のユーザのランドスケープからプリズム内に表示される仮想コンテンツを同じ場所(または、いくつかの実施形態において、第1のユーザと異なる物理的場所)で複合現実システムを使用している第2のユーザと共有することを欲し得る。プリズム情報は、第1のユーザのローカルデータベースにおいて、第1のユーザに利用可能であるので、プリズムを第2のユーザと共有すると、第1のユーザからのプリズムのためのインスタンスデータは、パス可能世界システムにアップロードされ得る。プリズムのためのインスタンスデータは、次いで、伝送されるか、または、第2のユーザによって読み出され得、第2のユーザのローカルデータベースに記憶され、第2のユーザのユニバースアプリケーションは、プリズムのインスタンスデータを第2のユーザのローカルデータベースの中に再構築し、その結果、プリズムを第2のユーザのランドスケープの中に表示し得る。
630において、プリズムは、ユーザの現在の場所において復元され得る。ユーザの場所において以前に展開されたプリズムのためのインスタンスデータが、ユーザのローカルデータベース137において再構築されると、ユーザの現在の場所において以前に展開されたプリズムに対応するそれぞれのアプリケーションが、立ち上げられ得る。複合現実システムは、単に、始動するので、コンテンツを複合現実システムに以前に提供していたアプリケーションが開始される必要があり得るが、この時点において、コンテンツをユーザのランドスケープに以前に提供していたアプリケーションのみが、立ち上げられる必要がある。アプリケーションを立ち上げることの一部として、アプリケーションは、アプリケーションがコンテンツをレンダリングするためのプリズムをユニバースが作成することを要求し得、作成されるべきプリズムは、ユーザのランドスケープ内に表示するために、ユーザが複合現実システムをシャットダウンすることに先立って以前に展開されていたプリズムに対応する。アプリケーションが、立ち上げられ、プリズムが、作成されると、アプリケーションは、コンテンツをそれぞれのプリズムの中にレンダリングするために、コンテンツをユニバースに提供し得る。
いくつかの実施形態において、1つのアプリケーションは、コンテンツをユーザの場所において展開される2つ以上のプリズムに提供し得る。そのような実施形態において、1つのアプリケーションは、1つのアプリケーションの複数のインスタンスまたはプロセスを展開し、1つのアプリケーションの各インスタンスまたはプロセスのために、コンテンツを1つ以上のプリズムの中にレンダリングし得る。
640において、プリズムは、ユーザが複合現実システムをシャットダウンすることに先立ってプリズムが表示されていた場所において、ユーザのランドスケープの中に表示され得る。プリズムおよびプリズムの中にレンダリングするアプリケーションが、持続するので、複合現実システムは、少なくとも部分的にプリズムの各々の各プリズム属性に基づいて、ユーザのランドスケープの場所に、それぞれの仮想コンテンツとともに、プリズムを展開/表示することによって、ユーザのランドスケープを再構築し得る。いくつかの実施形態において、図2からのローダボリューム210等のプレースホルダプリズムが、始動時、現在ロードしているプリズムの場所に表示され得る。そのような実施形態において、新しいプリズムが作成され、復元されると、プレースホルダプリズムの代わりに、新しいプリズムを表示することは、プレースホルダプリズムの場所において、それぞれのプレースホルダプリズムを新しく作成されたプリズムと置換する単純なものであり得る。ランドスケープの代わりにユーザに定着させられるようにそれをマーキングする属性をプリズムが有する場合、そのプリズムは、ユーザの現在の位置に対する位置に復元され得る。
いくつかの実施形態において、プリズム内にレンダリングするアプリケーションは、ユーザが複合現実システムを以前にシャットダウンしたときの状態と一致する状態において展開され得る。例えば、ユーザのランドスケープのユーザの視野は、展開された4つのプリズムを有しており、4つのプリズムのうちの1つは、スリープ状態にあるアプリケーションを有していた一方、他の3つのプリズムの各々は、能動的にレンダリングしていたアプリケーションを有していた。複合現実システムが、再開し、4つのプリズムが、表示されると、プリズムのうちの3つは、能動的にレンダリングする状態を有し得る一方、第4のプリズムは、ユーザが第4のプリズムのスリープ状態を再アクティブにするまで、スリープ状態にあるアプリケーションを有し得るか、または、プリズムは、ユーザがその近傍一般をルックインする場合、状態が能動的にレンダリングする状態に自動的に変更され得るように構成され得る。プリズムの状態の変更は、下でさらに開示される。いくつかの実施形態において、他の方法が、プリズムの状態を変更するために使用され得る。
650において、ユーザのローカルデータベースは、ユーザがユーザのランドスケープ内のプリズムと相互作用するにつれて、絶えず(または規則的間隔において、もしくはイベントによってトリガされると)かつ自動的に、プリズム情報で更新され得る。例えば、あるプリズムのためのアプリケーションが、能動的にレンダリングする状態から、アクティブであるが非レンダリング状態またはスリープ状態に状態を変化させると、ユーザのローカルデータベースは、そのプリズム内のアプリケーションに関する更新された状態情報で更新される。ユーザのローカルデータベースからの更新された情報は、直ちにまたは周期的に、パス可能世界システム(例えば、外部データベース150)を更新し、パス可能世界システムがアプリケーションおよびユーザのランドスケープ内のプリズムの状態変化に伴って最新に保たれることを確実にし得る。当業者は、それが、単に、プリズム属性またはアプリケーション特定の属性が変更される方法および更新がローカルデータベース、次いで、外部データベースに行われる方法の一例であり、プリズムまたはコンテンツをプリズムに提供するアプリケーションへの多くの他の類似タイプの変更が行われ得ることを理解し得る。
3D空間環境において表示される1つのアプリケーションからの仮想コンテンツを3D空間環境において表示される異なるアプリケーションからの仮想コンテンツからプライベートに保つが、依然として、それと相互作用可能であるようにする問題は、1つのプログラムにコンテンツ作成(例えば、図1からのアプリケーション140)を管理させ、別個のプログラム(例えば、図1からのユニバースアプリケーション130)にコンテンツ表示を管理させることによって、解決され得る。
図7は、いくつかの実施形態によるユニバースアプリケーションによって、アプリケーションによって提供される仮想コンテンツを複合現実3D空間環境の中に表示するためのアプローチのためのフローチャートを示す。ステップ710において、ユーザのユニバースアプリケーションは、仮想コンテンツをユーザのランドスケープ(例えば、3D空間環境)内に表示するための要求を受信し得る。いくつかの実施形態において、要求は、ランチャメニューとのユーザ相互作用によって開始されていることもあり、ユーザは、アイコンをアイコングリッドから選定し、アプリケーションを立ち上げ、仮想コンテンツをユーザのランドスケープの中に提供する。上で議論されるように、1つのアプリケーション(例えば、図1からのアプリケーション140)は、コンテンツ作成を管理し、別個のアプリケーション(例えば、図1からのユニバースアプリケーション130)は、コンテンツ表示を管理し得る。この処理の分離は、複数のアプリケーションが、ユーザのランドスケープ内に表示するためのコンテンツを作成することを可能にし得る一方、コンテンツの表示の管理は、別個のアプリケーションによって管理され、ユーザのランドスケープ内に表示される複数の仮想コンテンツが、特に、仮想コンテンツが互いに相互作用し始めるとき、ユーザに正確かつ現実的に表示されることを確実にする。
720において、ユニバースは、アプリケーションによって作成されたコンテンツがユーザのランドスケープにおけるプリズムの境界内に表示され得るように、プリズムを作成し得る。プリズムは、プリズムの立体空間の境界を定義する境界を含み得るが、プリズムの境界の境界線は、ユーザに表示されないこともあることに留意することが重要である。これは、ユーザのランドスケープ内に表示されるためのプリズムの内側にレンダリングされた仮想コンテンツが、ユーザのランドスケープ内の仮想コンテンツを視認するユーザに可能な限り現実であるように見えるべきであるので、重要であり得る。仮想コンテンツを境を限る境界立体空間の境界線がユーザに視認可能である場合、仮想コンテンツは、閉じ込められた空間内にコンピュータ生成されたように不可避的に見え得る。したがって、プリズムは、境界線および境界を含み、仮想コンテンツをプリズムの境界内に閉じ込め得るが、境界線は、ユーザに表示されないこともある。プリズムの境界線は、システム開発および試験中等、ある状況において、表示され得る。いくつかの実施形態において、プリズムの境界線/境界は、例えば、設置中、ユーザに表示され得、したがって、ユーザは、プリズムが位置するであろう場所をより容易に理解することができる。
いくつかの実施形態において、単一アプリケーションが、ユーザによって、複数の仮想コンテンツをユーザのランドスケープ内に表示することを要求され得る。単一アプリケーションによって表示された各仮想コンテンツは、それ自身の個々のプリズムに関連付けられ、それによって表示され得るか、または、単一プリズムを共有し得る。したがって、いくつかの実施形態において、アプリケーションが、追加の仮想コンテンツが表示されることを要求する場合、ユニバースは、アプリケーションのための1つ以上の追加のプリズムを作成し得、追加のコンテンツの各々は、それ自身のプリズムがユーザのランドスケープ内に展開/定着させられることを要求し得る。
作成されたプリズムは、コンテンツを表示することを要求するアプリケーションの一意の識別子を提供され得、それによって、アプリケーションがユーザのランドスケープ内に表示されるためのコンテンツを提供すると、ユニバースは、アプリケーションから受信されたコンテンツをレンダリングするためのプリズムを一意に識別することが可能であり得る。さらに、プリズムは、事前に決定された機能性の組を自動的に有するように作成され得、それらは、いくつかの実施形態において、アプリケーションおよび/またはユニバースによって事前決定され得る。例えば、機能性の組は、プリズムに関して許容されるデフォルト最小/最大サイズ、プリズムがユーザに対してユーザのランドスケープ内に定着させられ得る距離に基づいて、プリズムをサイズ変更するためのアスペクト比、プリズムをユーザのランドスケープ内に定着するための定着タイプ等を含み得る。機能性の組は、プリズム属性としてローカルデータベースに記憶され得る。さらに、プリズムの作成を呼び出すアプリケーションに応じて、あるアプリケーション特定の属性も、プリズムのために作成され得る。
730において、ユニバースは、アプリケーションによって作成された仮想コンテンツを受信し得る。コンテンツの受信時、ユニバースは、表示されるべき仮想コンテンツをプリズムの境界内にレンダリングし得る。図2において上で議論されるように、いくつかの実施形態において、アプリケーションは、コンテンツを作成し得、コンテンツを集中型レンダリングサービスクライアントを介してユニバースに送信し得、集中型レンダリングサービスは、ユニバース内で起動する。その時点から、ユニバースは、コンテンツを表示することを要求するアプリケーションのために作成されたプリズムの中にレンダリングし得る。ユニバースは、プリズムがユーザのランドスケープ内に正しく表示されることを確実にすることにも関与し得る。例えば、ユニバースは、プリズムがユーザのランドスケープ内の他のプリズムと重複しないことを確実にし得る。ユニバースは、上で説明されるような例外(例えば、共通定着点)が適用されない限り、新しいプリズムが既存のプリズムまたは実世界コンテンツに対して重複位置に設置されることができないことを確実にする。ユニバースは、プリズムが重複する場所にプリズムをユーザが設置することを可能にしないこともある。いくつかの実施形態において、アプリケーションとのクライアント/サーバ通信は、必要ないこともある。オペレーティングシステム(例えば、レンダリングを管理するシステムの部分)が、マルチスレッドのために構成される場合、アプリケーションは、クライアント/サーバ構造を伴わずに、直接、それら自体をプリズムの中にレンダリングし得る。ユニバースサーバのような中央機関が、次いで、衝突、移動、入力等の管理に関与し得る。
740において、特定のアプリケーションまたはプリズムに適用され得るユーザの入力またはデフォルト定着ルールのいずれかに基づいて、プリズムは、(1)ユーザのランドスケープ内の空間の中の固定場所、(2)ユーザのランドスケープ内の物理的オブジェクト、(3)ユーザのランドスケープ内に表示される仮想オブジェクト、または、(4)特定のオブジェクト(例えば、ユーザの身体または身体部分(以降、身体中心定着とも称される)に対する固定距離に関連付けられ得る。いくつかの実施形態において、身体中心定着は、ユーザの身体部分に対するものであるか(例えば、身体固定)、または、頭部/ビュー位置に対するものであり得る(例えば、頭部固定)。例えば、プリズムは、プリズムがユーザの身体に対して固定されるように、身体固定位置に関連付けられ得る。ユーザが、その頭部を移動させる場合、コンテンツは、移動しないこともあるが、ユーザが歩行する場合、プリズムは、ユーザに伴って移動し、ユーザの身体に対する固定位置を維持し得る。別の例として、プリズムは、プリズムがユーザの頭部または姿勢に対して固定されるように、頭部固定位置に関連付けられ得る。ユーザが、その頭部を回転させる場合、プリズムは、ユーザの頭部移動に対して移動し得る。ユーザが、歩行する場合も、コンテンツも、ユーザの頭部に対して移動し得る。
750において、プリズムは、ユーザのランドスケープの中に設置/定着させられる。ユーザがアプリケーションを立ち上げられた方法に応じて、プリズムは、特定の定着/場所とすでに関連付けられていることもある。例えば、ユーザは、アプリケーションアイコンをランチャメニュー内のアイコングリッドからドラッグすることによって、アプリケーションを立ち上げ、アイコンをユーザのランドスケープ内の特定の場所上に設置していることもあり、その時点で、プリズムが、その場所に作成され得、コンテンツは、その特定の場所においてプリズムの中にレンダリングされる。
図8は、いくつかの実施形態によるアプリケーション状態を管理するための略図の例を示す。拡張現実コンテンツを管理、レンダリング、および表示するための高コンピューティング負荷の問題は、ユーザ、およびいくつかの実施形態において、ユーザの視野に対するプリズムの相対的位置および場所に基づいて、プリズムの状態を自動的に変化させることによって、解決され得る。略図800は、いくつかの実施形態によるユーザの場所の鳥瞰図を示す。ユーザ805は、x、y、およびz軸における惑星の大まかな表現(例えば、物理的環境)である立体グリッド内に存在するように示される。グリッド線が例証的目的のために、ユーザ805からプリズムまでの距離が870の異なるプリズム状態を有することを示すために示される。ここで、ユーザの現在の場所の2D表現が、描写されている。当業者は、この図がユーザの現在の場所の3D表現であり得ることを理解し得る。しかしながら、簡単にする目的のために、図8は、2D空間を示すように図示されている。
ユーザ805は、3×3セルの外部ゾーン810の中心に存在するように示される。加えて、外部ゾーン810は、アクティブゾーン820と、バッファゾーン830とを備えた2つの円形エリアに分けられる。外部ゾーン810は、3×3セルのグリッドを備え、ユーザ805は、グリッドの中心に位置する。ユーザ805が、ユーザのランドスケープを通して移動すると、それぞれのアプリケーションに関連付けられた他のプリズムは、図8に描写されるように、種々のゾーンに進入し、退出し得る。アクティブゾーン820は、ユーザ805の周囲のエリア(例えば、円形エリア)を図示し、アクティブゾーン820内に位置するプリズムのあるプリズム状態870を示す。例えば、ユーザ805のアクティブゾーン820内のスリーププリズムは、始動する必要があるが、起動している他のプリズムは、それらの状態が、アクティブであるが、アクティブゾーン820内でレンダリングしていなくとも870b、起動したままでなければならない。
バッファゾーン830は、アクティブゾーン820よりユーザからさらに離れたゾーンである。このゾーン内のプリズムは、状態変化を必要としないこともある。例えば、起動しているプリズムは、例えば、バッファゾーン内に位置する1つのプリズムが、アクティブであるが、非レンダリングのプリズム状態870bを有するなど、起動したままである。別の例として、スリーププリズムは、スリープのプリズム状態870aを伴うバッファゾーン830内の2つのプリズムにおけるように、スリープのままであり得る。バッファゾーン830外であるが、外部ゾーン810内にあるプリズムは、それらが状態を変化させる必要がないこともあるほどユーザ805から十分に離れているので、スリープ状態のままであり得る。最後に、外側関連セル815内に位置するプリズムは、それらが、ユーザ805がそれぞれのプリズムからより近い距離内に来るまで、それらの特定のプリズムを起動させないことによって、複合現実システムが処理リソースを節約することが有益であり得るほどユーザ805から遠く離れて位置するので、非ロード、スリープ、または背景のプリズム状態を有し得る。
プリズム状態凡例860は、配色に基づいて、プリズムの種々の異なるプリズム状態を開示し、赤色プリズムは、スリープのプリズム状態870aを示し、橙色プリズムは、アクティブであるが、非レンダリングプリズム状態870bを示し、緑色プリズムは、アクティブであり、レンダリングプリズム状態870cを示し、紫色プリズムは、非ロードプリズム状態870dを示し、青色プリズムは、アクティブであり、非レンダリングの背景のプリズム状態870eを示す。
ユーザ805は、特定の視野840を有し得、視野840内のプリズムは、錐台850の中にあり得る。錐台は、ユーザ805の画面上で可視である(例えば、図1からの頭部搭載型システム160を介して)3D領域である。錐台850内でのプリズムの起動は、アクティブであり、レンダリングするプリズム状態870cを有するプリズムによって示されるように、レンダリングであるべきである。錐台850内に位置し、かつバッファゾーン830内に位置するスリープのプリズム状態870aを伴う1つのプリズムが存在するので、その特定のプリズムは、その特定のプリズムがバッファゾーン830および錐台850の両方内に位置するとき、始動し、レンダリングし得る。いくつかの実施形態において、頭部姿勢錐台は、プリズムのレンダリングをカリングするために使用され得、錐台カリングは、プリズムの隠された表面等の隠された表面を決定する方法である。
下記の表1は、プリズム状態変化チャートを図示し、第1の列の複数行は、現在のプリズムの状態を説明する。後続列の複数行は、後続列によって示されるように、プリズムが現在のゾーンから新しいゾーンの中に移動するときの現在の状態から新しい状態へのプリズム状態の変化を説明する。後続列の複数行における値は、プリズムからユーザ805までの相対的距離に基づいて、プリズムが変化し得る(全くではないにしても)、新しい状態を説明する。
例えば、プリズムが、「スリープ」の現在の状態にあり、ユーザ805に対してプリズムをアクティブゾーン820内に設置し得るユーザ805の移動に基づく場合、プリズムのプリズム状態は、「アクティブであるが、非レンダリング」状態に変更され得る。何故なら、スリーププリズムがユーザ805のアクティブゾーン820内にあるとき、それが始動すべきであるからである。加えて、同一例に従って、プリズムが、「スリープ」の現在の状態にあり、プリズムがバッファゾーン830内かつ錐台850内に来ると、状態は、不変のままである。何故なら、バッファゾーン830内において、スリープアプリが、バッファゾーン830内かつ錐台850内であっても、スリープのままであるからである。しかしながら、そのスリーププリズムが、アクティブゾーン820の中かつ錐台850の中に遷移すると、プリズムは、始動し始め得、プリズム状態は、アクティブ、レンダリング状態870cに変化し得る。
図9は、いくつかの実施形態によるユーザ場所に対するプリズム状態を管理するためのフローチャートを示す。910において、プリズムの空間位置は、立体グリッドで記録され得る。空間位置は、ユーザのランドスケープ内に設置/定着させられた特定のプリズムの定着場所であり得る。例えば、プリズムは、壁またはテーブル等のユーザのランドスケープ内のオブジェクトに定着させられ得る。別の例として、プリズムは、惑星地球の浮いている3D球体等、ユーザのランドスケープ内の任意の特定のオブジェクトに関連付けられていない空間内の固定場所に定着させられ得る。プリズムが、開始されると、その空間位置は、立体グリッドで記録され、立体グリッドは、プリズムのコンテンツがその中にレンダリングされ得るプリズムの場所を識別するための世界に対するx、y、およびz軸を有し得る。ユーザのランドスケープの中に設置された各プリズムは、パス可能世界システムに記憶されるプリズムのデータ構造内に記憶される(例えば、立体グリッドとして)特定の場所を有し得る。立体グリッドは、上で議論されるように、x、yおよびz軸フォーマットにおける、惑星の大まかな表現を表し得る。任意の他の妥当と思われる座標または相対的設置システムも、使用され得る。
920において、3D空間エリアを表す立体グリッドのセルが、識別される。セルは、プリズムが空間的に互いに接近している場合、1つ以上のプリズムを含み得る。いくつかの実施形態において、セルの幅は、アクティブゾーンの半径以上であり得る。いくつかの実施形態において、セルの幅は、アクティブゾーンの半径未満であり得る。アクティブゾーンの半径は、複合現実デバイスを使用するユーザから事前に構成された距離(例えば、25メートル)までの距離の測定値を示し、それは、図8に描写されるようなアクティブゾーン820としての空間の円形および/または球状(または他の好適な成形される)エリアを定義するであろう。代替として、立体グリッドは、所定の長さを有するセルに分割され、複合現実デバイスを使用するユーザからの距離に対応する境界および境界線をさらに確立し、本開示の実施形態を実装するための異なるゾーンを確立し得る。
930において、複合現実デバイスを使用するユーザがある場所のセルに移動すると、そのセルおよび近傍セル内の各プリズムの既知の位置の距離が、決定される。複合現実デバイスを使用するユーザが、ユーザのランドスケープを通して移動すると、各プリズムの最後の既知の位置に対する距離チェックが、ユーザの近傍内のプリズムの状態を管理するためにチェックされる。世界中のプリズムにわたって距離チェックを実施することを防止するために、システムは、立体グリッドを使用し、検索/チェック/計算/決定を複合現実デバイスの周囲のセル(例えば、セルおよび近傍セル)のみに制限することによって、距離チェック/計算/決定の量を最小化し得る。いくつかの実施形態において、ユーザによって占有されるセル内のプリズムのみが、距離チェックされる。いくつかの実施形態において、ユーザによって占有されるセル、またはユーザによって占有されるセルに隣接するセル内のプリズムのみが、距離チェックされる。いくつかの実施形態において、ユーザのFOV/ビュー錐台内のセルの全て内のプリズムが、距離チェックされる。いくつかの実施形態において、ユーザの10フィートまたは25フィート内等、ユーザのある距離内のプリズムが、距離チェックされ得る。
940において、プリズムとユーザとの間の距離に応じて、プリズムの状態は、修正され得る。距離に加え、異なるゾーンおよびユーザの視野に対するプリズムの現在の状態等の他の要因も、プリズムの状態が修正され得るかどうかを決定付け得る。例えば、プリズムの現在の状態が、スリープであり、ユーザが、プリズムがアクティブゾーン820内かつ錐台850内に位置する場所に移動する場合、プリズムの状態は、表1に従って、スリープ状態からアクティブおよびレンダリング状態に変更され得る。しかしながら、スリーププリズムが、バッファゾーン830内かつ錐台850内に位置する場合、プリズムの状態は、表1に従って、プリズムがバッファゾーンの中かつ錐台ゾーンの中に移動させられるとき、スリープの現在の状態がスリープ状態のままであるので、変更されないこともある。バッファゾーンは、上で開示されるように、主に、プリズムの状態への断続的変化または高速変化を防止する。ユーザの頭部姿勢は、ユーザの頭部姿勢が、ユーザの視野を定義することに役立ち、それが、最終的に、錐台ゾーン850の定義を補助するので、プリズムの状態を修正し得る。上で開示されるように、ユーザの頭部姿勢は、ユーザの頭部の場所および/または向きの測定である。頭部姿勢情報は、ユーザの動的に変化する頭部場所および向きに合致するようにシーンをレンダリングし、仮想/拡張/複合空間内での増加した没入感を提供するために使用されることができる。
いくつかの実施形態において、壁は、ユーザをプリズムから分離し得、それによって、プリズムは、ユーザの距離がプリズムをアクティブゾーン820内に設置する場合でも、および/または、ユーザの視野方向がプリズムを錐台ゾーン850内に設置する場合でも、スリープ状態のままであり、プリズムの状態は、ユーザがプリズムを見ることを防止する壁の妨害により、スリープ状態から変更されないこともある。さらなる算出処理は、システムが、距離および頭部姿勢がプリズムのための状態変化を示し得る場合でも、プリズムを遮断する壁またはオブジェクト等の他の要因がプリズムの状態を不変に保ち得ることを認識することによって、回避され得る。
(プリズム関係およびグループ化の管理)
いくつかの実施形態において、集中型レンダリングシステムは、より大きい(例えば、ユニバース空間)シーングラフの一部として、クライアントプリズム215を変換/管理するためのサポートを有していないこともある。ユニバースプリズムは、追加の論理および機能性を伴うクライアントプリズムのインスタンスであり得る。ユニバースにおいて、あるグループのクライアントプリズム215を変換する能力は、変換ツリーを介してハンドリングされ得る。例えば、ランチャの各パネルは、別個のアプリケーションであり得、各パネルは、それ自身のプリズムに対応する。ユニバースがランチャに関連付けられた複数のプリズムをグループにグループ化することが可能であることが有益であり得、したがって、複数のプリズムは、一緒に管理され得、それによって、グループ内の1つのプリズムが修正されると、グループ内の他のプリズムも、影響され得、したがって、同様に修正される必要があり得る。これは、複数のアプリケーションが、単一アプリケーションであるかのように見え、挙動することを有効にし得る。例えば、ランチャが、ユーザの身体に定着させられている(例えば、身体動態)場合、ユーザがその環境全体を通して移動すると、ランチャの場所のみならず、複数のプリズムに対応するそのパネルの場所も、グループとして修正/変換される必要があり得る。
別の例として、プリズムを要求するアプリケーションは、アプリケーションのプリズムに比較的に近接して位置付けられた二次UI(閉じるボタン、ピン固定/ピン固定解除、設定等を伴う)を有し得る。ユニバースは、これらの2つのプリズムをグループとして一緒にグループ化し、2つのプリズムを2つのノードを有するグループとして管理し得る。階層/関係様式および/または論理グループ化構造における複数のプリズムの関連付けの管理は、変換ツリーおよび/またはグループツリー(下で議論される)を用いてハンドリングされ得る。
いくつかの実施形態において、変換ツリーは、ユニバース内のプリズムおよび/またはプリズムのグループを変換/編成するように構成されたツリーデータ構造であり、中央レンダリングシステムによってレンダリングされ得る。変換ツリー構造は、ノードのシーングラフを有し得、各ノードは、プリズムに対応する移動可能ローカル空間を提供する。シーングラフのノードは、プリズムに対応し得る。プリズムは、ツリーノードであり得る。プリズムではない、他のツリーノードが存在し得る。これらの「他のツリーノード」は、コンテンツをグループ化するために、または中間変換として使用され得る。さらに、ノードは、1つのノードが変換されると、同じグループ内の他のノードがそれとともに変換されるように、他のノードとグループ化され得る。いくつかの実施形態において、グループツリーは、ノードのグループ化を管理し得る。
グループツリーは、ノードの論理グループ化を記憶したツリーデータ構造であり得る。
いくつかの実施形態において、プリズムは、重複せず、ユーザのランドスケープ内に表示された独立コンテンツとして取り扱われ得るので、これは、1つのアプリケーションからの仮想コンテンツが異なるアプリケーションからの仮想コンテンツと緊密に相互作用することが可能でないという問題を導入し得る。しかしながら、単一アプリケーションからの仮想コンテンツの周囲に緊密に適合する複数のより小さいプリズムを作成することが、この問題を解決し得る。例えば、単一アプリケーションのために開かれた複数のプリズムが存在し得るが、ユーザは、複数のプリズムを1つの単一化されたシステム(例えば、変換ツリーの親/子プリズム)として知覚し得る。加えて、プリズムは、いくつかのプリズムが本質的に互いのピアであり得るように、一緒にグループ化され得る。1つのアプリケーションからのコンテンツの全てが、大きなボックス内にある場合、より多くの「空気」または死空間がプリズム内に存在し得る。これは、異なるアプリケーションからのコンテンツがそれらのエリア内のコンテンツと相互作用することを防止し、したがって、あるタイプの「現実的」相互作用が生じることを防止し得る。
例えば、相互作用は、2台の3D車の単純衝突であり得る。衝突は、2台の3D車がレンダリングされたプリズムの各々が、3D車に対して、プリズムの見えない境界間にユーザが実際に互いに接触した2台の車を見ることが可能ないこともあるほどの大きな「死空間」を有する場合、ユーザに対して「現実」であると思われないこともある。しかしながら、プリズムが、より小さく、3D車の各々の周囲に緊密に適合する場合、あるビュー角度からは、2台の3D車が、衝突の結果、互いに若干接触し、互いに跳ね返るかのように、ユーザに見え得る。
図10は、いくつかの実施形態によるシーングラフの例示的ツリーノードを示す。ツリーノード1000は、ランチャメニューのための例示的ツリーノードを描写する。ユニバースノード1002は、ユーザの複合現実システムのシーングラフのこのツリーノードにおけるルートノードである。複合現実システムが始動すると、ランチャアプリケーションは、ユーザにランチャメニューとして表示するために開始され得る。ランチャアプリケーションが、立ち上げられるにつれて、シーングラフにおけるランチャメニューの位置を表すランチャツリーノード1004が、作成され得る。ランチャツリーノード1004は、他のノードのための定着としての役割を果たし得、他のノードは、ランチャメニューに従属するか、または、ランチャメニューの子である。
例えば、アイコングリッドアプリケーションも、立ち上げられ得る。アイコングリッドツリーノード1009aが、ランチャアプリケーションのシーングラフ識別子(SGID)とともに、ツリーノードに追加され得る。アイコングリッドアプリケーションは、ランチャメニューのためのパネルのカルーセルの1つのパネルとして表示され得るので、アイコングリッドツリーノード1009は、ランチャペーンとして標識されるダッシュ境界線で示される子ノード1008内に描写されように、ランチャツリーノード1004の子ノードであり得る。ランチャの従属アプリケーションのさらに多くが、立ち上げられ、ランチャツリーノード1004の子ノード(例えば、最近アクセスされたアプリケーションツリーノード1027およびソーシャルアプリケーションツリーノード1029)としてツリーノードに追加され得る。ランチャメニューに関連付けられたノードのグループは、ランチャグループ1006として一緒にグループ化され得る。
ランチャメニューが、移動させられると(例えば、ビルボード表示)、ランチャグループ1006内のノードは、グループとして移動させられ得る。ランチャノードを定着ノードとして設定することは、論理をランチャパネルのうちの1つに適用し、他の関連パネルのグループ化を維持するための最善を期待するのではなく、ランチャメニューを精密に位置付ける/ビルボード表示するための正確な手段を提供するために必要であり得る。子ノード(例えば、アイコングリッド、最近アクセスされたアプリケーション、およびソーシャルアプリケーション)は、ランチャツリーノードに対して自動的に再位置付けされる。ユニバースは、複数のプリズムのシーングラフ全体を所有し得る。いくつかの実施形態において、各プリズムは、ヌル親およびゼロ子から開始し、事実上、1つのノードを伴うシーングラフにし得る。いくつかの実施形態において、アプリケーションが、プリズムを要求すると、ユニバースは、(1)要求されるプリズムのためのノードと、(2)二次UIのためのノードとを作成し得る。ユニバースは、次いで、二次UIをプリズムに対して位置付け得る。いくつかの実施形態において、ユニバースは、二次UIノードをプリズムノードの子として設置し得る。
(変換ツリー)
上で議論されるように、変換ツリーは、ユニバース内のプリズムおよび/またはプリズムのグループを変換/編成するように構成されたツリーデータ構造である。変換ツリー構造は、ノードを備えたシーングラフと見なされ得、各ノードは、プリズムに対応し得る移動可能ローカル空間を提供する。シーングラフのノードは、プリズムに対応し得るか、または、あるグループのプリズムもしくは他のツリーノードを変換するためのみに使用されるノードであり得る。この場合、ノードは、1つのノードが変換されると、同じグループ内の他のノードがそれとともに変換されるように、親ノードの下で他のノードとグループ化され得る。いくつかの実施形態において、プリズムは、1つのみのプリズム(すなわち、それ自体)を伴う変換ツリーにおけるものであるが、1つのプリズムを別のプリズムを伴う親にする必要性が生じるとき、その能力がある。いくつかの実施形態において、プリズムシーングラフ/変換ツリーは、子プリズムがその親を変えるとき、子の世界変換が変化しないこともあるという点で、従来のシーングラフと異なり得る。例えば、プリズムが、ユーザの正面にレンダリングする場合、プリズムの親が変化すると、プリズムは、その現在の位置から移動しないであろう。いくつかの実施形態において、変換ツリー内の各プリズムの行列は、列優先であり得、それは、ツリー内のプリズムの世界行列の計算が、親変換をプリズムのローカル変換の左に付加することによって行われなければならないことを意味する。例えば、プリズムの世界変換は、親の世界変換×プリズムのローカル変換に等しくあり得る。
いくつかの実施形態において、基本ツリー論理は、以下のうちの1つ以上のものとして定義され得る:(1)ノードは、それ自体を別のノードに対する子として設定し得る;(2)ノードは、異なるノードをそれ自体に対する子として設定し得る;(3)ノードは、その親を獲得し得る;(4)ノードは、その子を獲得し得る;(5)ノードは、その子のいずれかを除去し得る(これは、子を孤児にしない:それらは、単に、このノードの親に取り付くか、またはルートユニバースノードを含むツリー内の任意の他のノードに取り付き得、それは、それを世界空間内に置き得る);および、(6)ノードは、その親を除去し得る。ノードの挿入および除去は、ノードおよびその子のローカル変換を更新し得る。これは、ノードの親を変化させることが、その世界変換を変化させず、実際、世界変換が保存され得ることを意味する。いくつかの実施形態において、ノードのローカル変換を変化させる任意の動作は、ノードおよびその子の世界変換を更新し得る。
いくつかの実施形態において、変換ツリー内の各ノードは、以下の行列成分のうちの1つ以上を含み得る:(1)ローカル変換;(2)回転行列(これは、ローカル変換を算出するために使用され得る);(3)スケールベクトル(これは、ローカル変換を算出するために使用され得る);(4)位置ベクトル(これは、ローカル変換を算出するために使用され得る);(5)ローカルから世界への変換(これは、便利のためにキャッシュされ得る);および、(6)ローカルから世界への拡大縮小(これは、便利のためにキャッシュされ得る)。いくつかの実施形態において、ローカル変換は、その親ノードに適用される変換と見なされ得る。ノードが、親を有していない場合、ローカル変換は、ローカルから世界への変換に等しくあり得る。ローカル変換は、以下のように算出され得る。
ローカル変換=位置×回転行列×スケール
この式は、「その原点としての親ノードを使用して、それを最初に拡大縮小し、次いで、それを回転させ、次いで、その原点ノードに対してその位置を変化させることによって、このノードを変換する」と読み取られ得る。回転、拡大縮小、および位置付けは、それらのいずれかをインターフェースを通して別個に修正するためのゲッタ/セッタを提供することを容易にするために、別個に保たれ得る。ノードが位置を変化させると、子ノード世界変換は、それに伴って更新され得る。これらの行列が、順に乗算されると、次いで、ローカル/世界(ロカル・ツー・ワールド)行列が、構築され得る。効率目的のために、計算されたローカル/世界行列も、記憶され得る。いくつかの実施形態において、ノードのローカルから世界への変換を計算するために、以下の方程式が、使用され得る。
世界変換=親世界変換×ローカル変換
行列乗算の順序に留意されたい。いくつかの実施形態において、行列は、列優先であり、x、y、zおよび位置が各列にレイアウトされることを含意する。これは、親ノード行列が、常時、子行列の左に現れることを意味する。図10Bは、小変換ツリー1010と各ノードのための各世界変換が計算される方法を図示する。
変換ツリーを利用する他の好適な方法またはシステムが、使用され得る。
(グループツリー)
いくつかの実施形態において、変換ツリーの追加の特徴は、変換ツリー内の任意のプリズムを任意の他のプリズムとグループ化する能力である。グループ内のプリズムは、同じまたは異なる変換ツリー内にあり得る。加えて、プリズムは、同じグループおよび変換ツリー内の別のプリズムの子または子孫であることができる。いくつかの実施形態において、変換が、グループ内のプリズムのうちの1つに適用されると、グループ内の他のプリズムの全てが、それとともに変換される。プリズムグループ論理は、グループメンバが属するどの変換ツリー内の変換を更新することにも対処する。グループ内にないが、そのグループ内にあるプリズムの子である任意のプリズムも、グループとともに変換し得る。グループ内のプリズムが、変換されると、その子も、変換される。例えば、プリズムAおよびBが、グループ内にあり、プリズムCが、プリズムBの子であるがグループ内になく、プリズムBが、左に1メートル移動させられる場合、プリズムBおよびCの両方は、左に1メートル移動させられる。しかしながら、プリズムCが、左に1メートル移動する場合、プリズムCのみが、左に1メートル移動させられる。本開示は、従来のシーングラフといくつかの特徴を共有するが、追加の機能性/挙動も同様に有し得る:1)間接子孫とグループ化されるノードの間接子孫の能力(したがって、ノードと間接子孫とが同じ変換を受ける(それらがグループ化される場合))、および/または、2)全体的に別個の変換ツリー上に位置する2つのノードをグループ化する能力等。いくつかの実施形態において、間接子孫は、直接、親ノードに接続されない、例えば、可能性として、2つ以上の介在ノードによって分離されたノードであり得る。いくつかの実施形態において、グループ化論理は、現在のグループ内に属する全てのプリズムのためのルートグループノードを作成することによって実装され得る。同じグループ内の任意のプリズムが、グループ内の他のプリズムの子孫である場合、それらは、変換グループツリーにおいてもそれらのプリズムの子孫である。いくつかの実施形態において、別個のデータ構造が、グループのために作成されず、代わりに、グループが、プリズムに取り付けられる追加のフラグを有し得ることに留意されたい。いくつかの実施形態において、グループ内の任意のプリズムが変換される場合、変換が、計算され、ルートグループノードに適用され得る。この変換は、任意の他の変換のように、変換ツリーを伝搬し得、変換は、変換ツリー内の各子のみならず、グループ内の各プリズムも伝搬する。
以下は、ノードをグループツリーに追加すること、およびそれから除去することの種々の実施形態である。図10C−10Eは、新しいグループを作成するための一実施形態を図示する。図10Cにおける変換ツリー1020に関して、本実施形態は、現在、別個の変換ツリー内にあるノードAとEとを一緒にグループ化するステップを図示するであろう。(1)AまたはEがすでにグループ内にあるかどうかに関して、決定が行われる。現在、Aも、Eも、グループ親を有しておらず、したがって、いずれも、グループ内にない。したがって、グループルートを作成する。図10Dにおいて、グループルート1024を有するグループツリー1022が、作成される。(2)図10Eに描写されるように、AおよびEのグループ親をグループルート1024に割り当てる。(3)EがAの先祖(または親)であるかどうかを決定する。Aは、親を有しておらず、したがって、Eは、Aの先祖ではない。(4)AがEの先祖(または親)であるかどうかを決定する。Eは、親を有しておらず、したがって、Aは、Eの先祖ではない。
図10F−10Iは、新しいグループを作成するための別の実施形態を図示する。図10Fにおける変換ツリー1030に関して、本実施形態は、ノードAとCとを一緒にグループ化するステップを図示し、ノードCは、変換ツリー1030に描写されるように、ノードAの子ノードである。(1)AまたはCがすでにグループ内にあるかどうかに関して、決定が行われる。現在、Aも、Cも、グループ親を有しておらず、したがって、いずれも、グループ内にない。したがって、グループルートを作成する。図10Gにおいて、グループルート1034を有するグループツリー1032が、作成される。(2)AおよびCのグループ親は、グループルート1034である。図10Hに描写されるように、AおよびCをグループルート1034に割り当てる。(3)CがAの先祖(または親)であるかどうかを決定する。Aは、親を有しておらず、したがって、Cは、Aの先祖ではない。(4)AがEの先祖(または親)であるかどうかを決定する。Aは、Cの先祖である。したがって、Cのグループ親をAに再度割り当てる。
図10J−10Kは、非グループ化ノードを既存のグループに追加する実施形態を図示する。図10Jにおける変換ツリー1040およびグループツリー1042に関して、本実施形態は、変換ツリー1040からのノードCおよびEを同じグループの中にグループ化するステップを図示する。(1)CまたはEがすでにグループ内にあるかどうかを決定する。図10Jに描写されるように、Eは、Aとのグループ内にある。(2)Cのグループ親を決定する:Eと同じグループ内に属するCの親または先祖を見出す。ここで、Aは、Eとのグループ内にある。Aは、Cの先祖である。Cのグループ親をAに割り当てる(図10K参照)。(3)Cがグループ内の任意の他のノードの先祖または親を有するかどうかを決定する。Cは、子を有していない。処理は、停止する。
図10L−10Nは、非グループ化ノードを既存のグループに追加する別の実施形態を図示する。図10Lにおける変換ツリー1050およびグループツリー1052に関して、本実施形態は、変換ツリー1050からのノードBおよびEを同じグループ(例えば、グループツリー1052)の中にグループ化するステップを図示する。(1)BまたはEがすでにグループ内にあるかどうかを決定する。ここで、Eは、AおよびCとのグループ内にある。(2)Eと同じグループ内に属するBの親または先祖を見出すことによって、Bのグループ親を決定する。ここで、Aは、Eとのグループ内にあり、Bの親である。Bのグループ親をAに割り当てる(図10M参照)。(3)Bがグループ内の他のノードのいずれかの親または先祖であるであるかどうかを決定する。ここで、Cは、Bの子または子孫である。Cのグループ親をBに変更する(図10N参照)。
図10O−10Rは、非グループ化ノードを既存のグループに追加する別の実施形態を図示する。変換ツリー1060およびグループツリー1062に関して、本実施形態は、変換ツリー1060からのノードAおよびEを同じグループ(例えば、グループツリー1062)の中にグループ化するステップを図示する。(1)AまたはEがすでにグループ内にあるかどうかを決定する。ここで、Eは、BおよびFとのグループ内にある。(2)Eと同じグループ内に属するAの親または先祖を見出すことによって、Aのグループ親を決定する。ここで、Aは、親を有しておらず、したがって、Aをグループルート1064に割り当てる(図10P参照)。(3)Aがグループ内の他のノードのいずれかの親または先祖であるかどうかを決定する。ここで、Aは、Bを子として見出す。したがって、Bは、そのグループ親をAに設定する(図10Q参照)。加えて、Aは、Fを子孫として見出す。AおよびFは、同じグループ(例えば、グループツリー1062)内に属する。したがって、Fは、そのグループ親をAに設定する(図10R参照)。
図10S−10Wは、グループ化ノードを別のグループに追加する実施形態を図示する。図10Sにおける変換ツリー1070およびグループツリー1072に関して、本実施形態は、ノードCおよびGを同じグループの中にグループ化するステップを図示する。(1)CまたはGがすでにグループ内にあるかどうかを決定する。ここで、Cは、Dとのグループ内にある。Gは、BおよびFとのグループ内にある。(2)CおよびGの両方がグループ内にあるので、最終グループをCおよびDのグループ(例えば、グループルート1074)であると恣意的に選定することによって、2つを単一グループの中にマージする。(3)古いグループルート1076の直系の子のみを追加する。これは、単に、BおよびFをCのグループに追加することを意味する。(4)BをCのグループに追加する。(4a)Cと同じグループ内に属するBの親または先祖を見出すことによって、Bのグループ親を決定する。ここで、グループ親が存在しない。したがって、Bをグループルート1074の子として追加する(図10T参照)。(4b)Bがグループ内の他のノードのいずれかの親または先祖であるかどうかを決定する。ここで、Bは、Cを子として見出す。BおよびCは、同じグループ内に属する。Cは、そのグループ親をBに設定する(図10U参照)。(5)FをCのグループに追加する(注記:これは、恣意的ではない。Gは、次に追加されるように選定されず、単に、Fとともに引き込まれるであろう)。(5a)Cと同じグループ内に属するFの親または先祖を見出すことによって、Fのグループ親を決定する。ここで、Fは、Dを親として見出す。Fは、そのグループ親をDに設定する(図10V参照)。Gは、同じグループの中に自動的に置かれることに留意されたい。(5b)Fがグループ内の他のノードのいずれかの親または先祖であるかどうかを決定する。ここで、Fは、Gを見出すが、Gの親は、すでにFである。(6)古いグループルート1076を削除する(図10W参照)。
(グループの変換)
いくつかの実施形態において、グループ内に属するノードに直接適用された任意の変換は、グループをそれとともに変換し得る。グループノードに行われる間接変換は、グループを変換しないこともある。例えば、親ノードが、グループ内になく、その子が、グループ内にあり、親が、変換される場合、子のグループ内のノードは、子の変換が変化する場合でも、それとともに変換しない。グループ全体の移動が所望される場合、親が、グループに追加されるべきである。
グループに適用するための変換を計算するために使用するための変換は、グループルートの各直系の子に適用されなければならない。
図10X−10Yは、本開示のいくつかの実施形態によるサンプル計算を図示する。図10Xに描写されるような所与の変換ツリー1080およびグループツリー1082に関して、本実施形態は、変換をノードAに適用する。Aは、グループツリー1082内に属するので、ノードC、D、およびEは、ノードAとともに変換されることが予期される。加えて、グループ内に属さない、ノードBも、Aの子であるので、グループとともに変換しなければならない。Aの新世界行列をMaw’として示すこととし、Maw’は、「matrix a world new」を表す。Aの旧世界行列をMawとして示すこととし、Mawは、「matrix a world old」を表す。Maw’を得るためにAに適用するための行列をMgwとして示すこととし、Mgwは、「matrix group world」を表す。目標は、グループルート(Mgw)に設定できる行列を見出すことであり、それがノードAの世界行列に適用されると、それは、ノードAの新しい行列に等しいであろう。この同じ行列は、グループルートの他の直系の子にも適用される。
図10Yは、変換をノードAに適用するためのサンプル計算を図示する。図10Yから、ノードAが、その行列が変化させられるものであるので、ノードAに着目する。すなわち:
Maw’=Mgw×Maw
Maw’およびMawが既知であり、Mgwを解く
Mgw=Maw’×Maw^−1
したがって、グループルートの各子ノードに関して、ノードの世界変換を:子ノード新世界行列=Mgw×(子ノード旧世界行列)に設定する。この例に関して、Mgwをグループルートの2つの直系の子、AおよびEに適用する。
Maw’=Mgw×Maw
=(Maw’×Maw^−1)×Maw
=Maw’
Mew’=Mgw×Mew
=(Maw’×Maw−1)×Mew
Aの最終世界変換が所望されるMaw’であることに留意されたい。変換は、変換ツリーを伝搬するので、全ての子ノード(同じグループの一部であるかどうかにかかわらず)が更新される。これは、ノードBも更新されることを意味する。
図10Z−10AAは、本開示のいくつかの実施形態によるサンプル計算を図示する。図10Zに描写されるような所与の変換ツリー1090およびグループツリー1092に関して、本実施形態は、変換をノードCに適用する。Cは、グループ内に属するので、ノードA、D、およびEは、それとともに変換されることが予期される。加えて、グループ内に属していない、ノードBも、Aの子であるので、グループとともに変換しなければならない。Cの新世界行列をMcw’として示すものとし、Mcw’は、「matrix c world new」を表す。Cの旧世界行列をMcwとして示すものとし、Mcwは、「matrix c world old」を表す。Maw’を得るためにcに適用される行列をMgwとして示すものとし、Mgwは、「matrix group」を表す。目標は、グループルート(Mgw)に設定できる行列を見出すことであり、それがノードCの世界行列に適用されると、それは、ノードCの新しい行列に等しいであろう。この同じ行列は、グループ部屋の他の直系の子にも適用される。
図10AAを参照すると、ノードCが、その行列が変化させられるものであるので、ノードCに着目する。したがって、Mcw’=Mgw×Mcwである。Mcw’およびMcwが既知であるので、Mgwを解く。Mgw=Mcw’×Mcw^−1.したがって、グループルートの各子ノードに関して、ノードの世界変換を「子ノード新世界行列=Mgw×(子ノード旧世界行列)に設定する。この例に関して、Mcwと等しいものを思い出されたい(Mcw=Ma1×Mb1×Mc1)。それをMgw=Mcw×Mcw^−1と組み合わせると、Mgw=Mcw’×(Ma1×Mb1×Mc1)^−1が得られ、それは、Mgw=Mcw’×Mc1^−1×Mb1^−1×Ma1^−1である。AおよびEは、ルートノードであるので、Maw=Ma1およびMew=Me1であることを覚えておかれたい。それによって、全てのノードの新しい変換を見出し得る。Mgwをグループルートの2つの直系の子、EおよびAに適用する。
(Eは、変換ツリールートノードであり、したがって、Mew==Me1である)。
Mew’=Mgw×Mew
=(Mcw’×Mc1^−1×Mb1^−1×Ma1^−1)×Mew
=(Mcw’×Mc1^−1×Mb^−1×Ma1^−1)×Mel
(Aは、変換ツリールートノードであり、したがって、Maw==Ma1である)
Maw’=Mgw×Maw
=(Mcw’×Mc1^−1×Mb1^−1×Ma1^−1)×Maw
=(Mcw’×Mc1^−1×Mb1^−1×Ma1^−1)×Ma1
(Aは、他のノードの親であるので、子ノードBおよびCの世界変換を更新する)
Mbw’=Maw’×Mb1
=(Mcw’×Mc1^−1×Mb1^−1)×Mb1
=Mcw’×Mc1^−1
Mcw’=Mbw’×Mc1
=(Mcw’×Mc1^−1)×Mc1
=Mcw’
ノードCの最終世界変換が所望されるMcw’であることに留意されたい。
いくつかの実施形態において、変換ツリーおよび変換グループ機能性は、ユニバース自体内で実装され得る。いくつかの実施形態において、他のアプリケーション(例えば、アプリケーション140、アイコングリッドアプリケーション260、ステータスバーアプリ270、ソーシャルパネルアプリ280、ストアパネルアプリ290等)が、ユニバースがこの機能性を管理し得るので、この種類の機能性を必要としないこともある。グループツリーおよび/または変換グループを利用する他の好適な方法またはシステムが、使用され得る。
(設置式ランチャ)
いくつかの実施形態において、ユーザは、アプリケーションを立ち上げること、またはランチャを持続的にピン固定することを欲するランチャをそのランドスケープ内に設置することが可能であり得る。これは、ランチャがユーザの環境の自然な延長であることを可能にし、デジタルと物理的世界との間のクリア接続を作成する。その開いた状態にある設置式ランチャは、ある場所に取り付けられることを除き、通常ランチャと同じレイアウトおよび構造を有し得、拡大および/または縮小され得る。いくつかの実施形態において、ユーザが、設置式ランチャを作成すると、ユーザは、ランチャをその場所に持続的にピン固定するオプションを有する。この場合、ランチャは、ユーザがそれを移動または除去するまで、その場所に留まり得る。通常ランチャは、ランチャがピン固定されている場合でも、ユーザがホームボタンを押すと、依然として、生じ得る。いくつかの実施形態において、ユーザは、複数のランチャをピン固定することが可能である(したがって、例えば、ユーザは、それらをコンテンツを最も立ち上げる場所に置き得る)。ピン固定式ランチャは、その場所から立ち上げられた最近のアプリケーションを示し得る。これは、各ランチャが存在する空間に対して調整されることを可能にする。いくつかの実施形態において、ランチャアプリケーションをある場所にピン固定する挙動は、抽出可能コンテンツマネージャ(ECM)によってシミュレートされ、ECMは、ランチャピン固定アイコンの外観を与える。これは、文字通り、アイコンを別個のプリズムの中にコピーし、ユーザがそのプリズムを移動させることを可能にすることによって行われる。
いくつかの実施形態において、ランチャは、アプリケーションであり得、ランチャカルーセルおよびランチャメニューのパネルが別個のプリズムの内側に提示され得るので、プリズム自体は、ユーザのランドスケープ内に設置され得る。
図11は、いくつかの実施形態による設置式ランチャの例示的ビューを示す。図11に示されるように、ランチャメニュー1100は、アイコングリッドパネル1120と、最小化されたソーシャルパネル1110と、最小化されたストアパネル1130とを含み得る。アイコングリッドパネル1120は、ユーザが立ち上げ得るアプリケーションのアイコンを能動的に表示し得、最小化されたソーシャルパネル1110をアイコングリッドパネル1120の左に伴い、最小化されたストアパネル1130を右に伴う。画像アイコン1140は、ランチャが、特定の場所(この例において、腰掛の上)に設置されたことをユーザに示し得る。異なる画像アイコン1140は、設置式ランチャとは対照的に、ピン固定式ランチャを示し得る。いくつかの実施形態において、異なる数のパネルおよび/またはパネルのための異なるコンテンツが、使用され得る。
いくつかの実施形態において、ピン固定式ランチャメニューは、持続的に記憶され、ユーザがランチャをその場所から移動または除去するまで、その場所にピン固定されたままであり得る。ユーザが複合現実システムをシャットダウンする場合でも、複合現実システムの再開時、ランチャメニューは、基準の組(ユーザがピン固定式ランチャメニューの近傍に存在する等)が満たされる場合、システムが完全に立ち上げられた後、その場所に表示され得る。いくつかの実施形態において、設置またはピン固定式ランチャから立ち上げられるアプリケーションは、ピン固定または設置式ランチャと同じ場所に生成および表示され得る。いくつかの実施形態において、ユーザが、ランドスケープアプリケーションを選択すると、ランチャは、消失し得、アプリケーション(例えば、プリズム)が、同じ場所に現れ得る。
ユーザが、ランチャをその場所に持続的にピン固定するように選定する場合、ランチャは、ユーザがランチャをその場所から移動または除去するまで、そこに留まり得、ユーザは、ランチャと相互作用し、アプリケーションをその場所から立ち上げ得る。ユーザが、ランチャと相互作用しない場合、そのアイドル最小化状態に入り得る。ユーザが、ランチャと相互作用していないとき、設置またはピン固定式ランチャの状態は、最小化された/アイドル状態に変化させられ得る。ここから、設置式ランチャは、時間、主なストアコンテンツ、主なソーシャル連絡先、ブランデッド機会/体験、および/または他のコンテンツ等を示し得る。
図12は、いくつかの実施形態による設置式ランチャがアイドル/スリープ状態にある間、表示され得るコンテンツの例示的タイプを示す。その最小化/スリープ状態における設置式ランチャの標準的ビューは、現在の時間および日付を示す時間1210を表示し得る。ユーザが、頭部姿勢を用いて設置式ランチャの上でホーバーリングすると、および/または、設置式ランチャをクリック/選択すると、ランチャは、状態をスリープからアクティブおよびレンダリングに変化させ、その完全アクティブビューを立ち上げ、例えば、少なくとも、アイコングリッドおよび対応するパネルを示し得る。いくつかの実施形態において、主なストアコンテンツ1220が、標準的ビュー時間および日付1210の代わりに表示され得る。主なストアコンテンツ1220は、製品のクイック双方向瞥見を与えるアプリケーションの事前にダウンロードされたプレビューであり得る。表示され得る他のタイプのコンテンツは、例えば、子供の玩具1230または日常的メッセージを伴う風船1240等の魅力的体験を含み得る。これらの魅力的体験は、デバイスのユーザのためのコンテンツおよび創造性を含み得る。芸術家、音楽家、および情報発信者が、これらのコンテンツを作成し得る。
(二次UI−カルーセル内に表示されるアプリケーションオプション)
図13は、いくつかの実施形態による例示的二次UIボリュームを示す。アプリケーションオプションメニュー1310は、プリズムの中にレンダリングされたアプリケーションによって提供されるコンテンツとのユーザが有し得る異なる相互作用を示し得る。アプリケーションオプションメニュー1310は、図2からの二次UIボリューム220の立体空間内に表示され得る。いくつかの実施形態において、アプリケーションオプションメニューは、中心オブジェクトが常時ハイライトされたカルーセルであり得る。ユーザが、次のアイテムにスワイプすると、アイコンは、より見えるようになり、オプションを説明する適切なテキストを表示し得る。アプリケーションタイトル1320は、ユーザが、コンテンツを提供するアプリケーションを認識することに役立ち得る。ここで、例として、アプリケーションは、ウェブページを表示する2Dインターネットブラウザである。設定1330は、アプリケーション設定を表示し、および/またはユニバース設定アプリケーションに文脈的にリンクし得る。閉じるアプリケーション1340は、ユーザのランドスケープからアプリケーションを閉じ/除去し得る。共有1350は、ユーザが、このアプリケーションの他のユーザとの共有セッションを開始することを可能にし得る。ダウンロード1360は、プリズム内に表示されるコンテンツをダウンロードし得る。例えば、ユーザは、2Dインターネットブラウザ内に表示される物品をダウンロードすることを所望し得る。当業者は、アプリケーションオプションメニュー1310が、より多いオプションまたはより少ないオプションを含み得、開示および示されるものと異なる順序であり得ることを理解し得る。
(身体動態)
身体動態は、ユーザの身体に対して定着させられた表示される仮想コンテンツが、管理され、ユーザに表示され得る方法を指す。
図14は、いくつかの実施形態による身体動態の例を示す。身体動態は、ユーザアプリケーション/ユーザインターフェース/コンテンツ1480がユーザ1490に関連して移動する方法を指し得る。異なる身体動態のタイプがあり、それらは、異なるタイプのユーザインターフェース効果を有し得る。身体動態タイプは、プリズムおよび/またはプリズム内のアプリケーションが、定着させられ、ユーザのランドスケープ内に表示される方法に関する定着タイプとも称され得る。
図15は、いくつかの実施形態による異なるタイプの身体動態を示す。身体動態のタイプの一例は、世界固定1520であり、身体動態が存在しない。いくつかの実施形態において、汎用プリズムが、世界固定され、ユーザが追従挙動をアプリケーションオプションからアクティブにするように選定しない限り、身体動態を有していないこともある。身体動態のタイプの別の例は、ビルボード表示1530である。いくつかの実施形態において、ビルボード表示は、アプリケーションコンテンツの角度および/または向きが、変化すると、ユーザに対して固定される向きおよび/または角度を維持する。相対的角度および/または向きが、任意の数の方法において決定され得る。例えば、仮想コンテンツは、事前に定義された前方または正面方向を有し得る。システムは、仮想コンテンツの前方ベクトルが頭部姿勢によって決定されるようなユーザの前方方向を指すことを要求し得る。いくつかの実施形態において、ビルボード表示挙動は、3D空間内に固定された場所を維持する一方、他の実施形態は、場所が変動することを可能にし得る。いくつかの実施形態において、ビルボード表示動態は、エッジビルボード表示1540も含み得、それは、ユーザが過度の斜角からコンテンツを視認するであろう場合のみ、ユーザに向かって方向転換を開始する。例えば、アプリケーションは、ユーザがウェブページをテキストを読み取ることを困難にする側方角度から見ている状態になるまで、静止したままである。アプリケーションは、プリズムの正面の平面表面から投影され円錐台をユーザが押す場所のエッジに追従する。エッジビルボード表示のためのパラメータ(例えば、アプリケーション特定のパラメータ)は、錐台角度、ユーザを中心とする、または円錐台をユーザが押す場所の縁に移動させる等の追従挙動、力場(押し)ブール値、力場アクティブ化距離、速さ、および/または反転ブール値を含み得る。
追従1550の身体動態タイプは、別のタイプの身体動態である。いくつかの実施形態において、追従1550は、単一オブジェクト(例えば、プリズム)がユーザによって置かれ得る特定のモードであり、例えば、オブジェクトをユーザの頭部位置に一時的に取り付ける。これは、ユーザがオブジェクトがその頭部位置とともに移動することを欲するときに有用である。追従の特徴は、ユーザの頭部のピッチ(例えば、上/下回転)を無視することであり、それは、その物理的空間を見渡すためのより大きい自由度をユーザに与える。ユーザが、左または右を見る場合、オブジェクトは、その視野内で再度集中し得る。いくつかの実施形態において、この再集中は、線形補間値を有し、移動に時間がかかり、ユーザに幾分緩く取り付けられると感じる。いくつかの実施形態において、追従挙動は、ユーザの頭部移動を直接模倣し、例えば、1対1の移動で模倣し得る。いくつかの実施形態において、追従は、各プリズムのためにアプリケーションオプションメニューによってアクセスおよびアクティブにされ得る。いくつかの実施形態において、追従モードは、プリズムへのデフォルト割当であり、および/または、プリズムの非一時的属性であり得る(例えば、ユーザが、例えば、プリズムを適切に変化させるまで、追従プリズムとして固定される)。
いくつかの実施形態において、追従1550の身体動態タイプは、消極的頭部固定1560および外部センサ1570等の2つの設定のうちの1つを有し得る。消極的頭部固定1560設定中、単一オブジェクト、プリズム、またはアプリケーションは、追従1550設定と同様、ユーザの頭部位置に取り付けられ得るが、しかしながら、ピッチパラメータは、ユーザが上下を見る場合、オブジェクトが同様に追従し得るように、ユーザによって固定されないこともある。外部センサ1570設定中、オブジェクト、プリズム、またはアプリケーションは、外部センサからのデータに基づいて、ユーザに追従し得る。いくつかの実施形態において、慣性測定ユニット(IMU)が、ユーザのベルトパックユニットに含まれ得る。いくつかの実施形態において、IMUは、電子機器モジュール内のユニットであり、それは、角速度および線形加速データを収集し、それは、メインプロセッサに送信される。IMU筐体は、2つの別個のセンサを含み得る。第1のセンサは、加速度計三回対称軸であり得る。これは、ユーザによって生産され、それに作用する、その軸の各々に沿った加速を説明する、3つのアナログ信号を生成し得る。第2のセンサは、角速度センサ三回対称軸であり得る。それも、3つのアナログ信号を出力し得る。これらの信号は、センサ軸の各々についてのユーザの角速度を説明し得る。このIMUは、複合現実システムが、ユーザの頭部姿勢に対する必要がある代わりに、身体に対するプリズムを有することを可能にするであろう。
フェーディング1580の身体動態設定に関して、クリッピング面前の規定された距離において、コンテンツが、消散/消失し始め得る。クリッピング面前の規定された距離において、いくつかの実施形態において、複合現実システムは、コンテンツをもはや快適にレンダリングしないこともある場合、および/または、ユーザがそのカットオフ点に近づくにつれて、コンテンツは、急激にオフになるのではなく、平滑にフェードアウトすべきである。いくつかの実施形態において、フェーディングは、ユーザがクリッピング面に近接するときに生じ得る(例えば、正確な測定は、ハードウェアに依存し得る)。ランドスケープ内の仮想コンテンツは、ユーザがコンテンツを通過する、またはそれに非常に近接するとき、この効果を有し得る。
(アプリケーションの同時立ち上げおよび設置)
いくつかの実施形態において、アプリケーションを複合現実環境内に同時に立ち上げ、設置することが有益であり得る。一実施形態において、カーソルがウェブページの上を移動する度、ブラウザエンジンは、ヒットテストをウェブページコンテンツ上で実施し、カーソル位置下の内容を確認し得る。ヒットテストは、ウェブページ内の要素を検出し、次いで、要素の種類を分析し得る。全てのhtml要素は、異なるパラメータを有し得、それらのうちのいくつかは、全ての要素に共通であり、それらのうちのいくつかは、複数の要素に共通であり、それらのうちのいくつかは、要素特定である。リンクの場合、最も一般的および最も推奨される要素は、定着タグ<ahref=’mylink’>の使用である。この定着タグは、任意の要素、画像、またはテキストとともに使用され得る。任意の時点で、カーソルが現在置かれている要素タイプを要求し得る。ブラウザエンジンは、ヒットテストの結果をキャッシュし、ノードまたはノードタイプをブラウザアプリケーションにパスし得る。いくつかの実施形態において、ヒットテストの結果のこのキャッシュは、ユーザが抽出トリガを使用してリンクを選択すると、実施され得る。
別の実施形態において、カーソルが、クリック可能なウェブページ内の任意の要素の上を移動させられると、ウェブエンジンは、APIをブラウザアプリケーションに対してコールし、カーソルを「arrow」または「i−beam」から「hand」に変化することを要求し得る。このAPIがコールされると、ブラウザアプリケーションは、次いで、カーソルがある要素の種類についての情報を要求し得る。
図16は、いくつかの実施形態によるアプリケーションを複合現実環境内に同時に立ち上げ、設置するためのフローチャートを示す。1610において、ユーザは、カーソルをユーザのランドスケープ内のプリズムの内側に表示されるブラウザアプリケーション内に表示されるウェブページからのリンクに移動させ得る。カーソルは、マウス、トーテム等のハンドヘルドコントローラデバイス、または、ユーザの眼がウェブページ上に集中させられ、ユーザの頭部搭載型システムからのセンサが、ユーザがウェブページからのリンクを見ていることを検出し得る眼視線、または、任意の他の好適な方法のいずれかによって移動させられ得る。リンクは、ユニフォームリソースロケータ(URL)であり得る。リンクの上のカーソルの移動、および/または、リンクを有するウェブページ上に集中させられた眼視線(または任意の他の好適なユーザ選択方法)は、ユーザがリンクに対応するコンテンツに関心があり得ることを示すユーザ入力をコンテンツをレンダリングするアプリケーションに送信し得る。
1615において、ウェブエンジンおよび/またはブラウザアプリケーションは、ユーザがカーソルまたは眼視線を用いて移動するリンクを検出し得る。リンクを検出すると、ウェブエンジンは、ユーザがコンテンツに関心があり得ることをブラウザアプリケーションに通知し得、それによって、ブラウザアプリケーションは、ミニディスプレイボリューム(例えば、ミニプリズム)を作成することをユニバースに要求し得る。ミニプリズムは、ブラウザアプリケーションがコンテンツをリンクからミニプリズムの中にロードするとき、ブラウザアプリケーションのためのプレースホルダプリズムとしての役割を果たす目的のために、標準的3Dディスプレイボリューム管理ユニット(例えば、プリズム)の初期デフォルトサイズであり得る。
1620において、ユニバースは、ミニプリズムを作成し、ミニプリズムをロードし、ロードされているコンテンツのページプレビューを示し始める。1625において、ユーザは、抽出トリガを使用して、リンクを選択し、リンクが向けられたコンテンツを視認することにユーザが関心があることを示し得る。抽出トリガの使用は、ユーザがリンクに対応するコンテンツを視認することに非常に関心があり得ることをアプリケーションに示し得る。ブラウザは、ヒットテストの結果をキャッシュし、ノードまたはノードタイプをプリズムをロードするためのブラウザアプリケーションにパスし得る。1630において、ユーザは、ハンドヘルドコントローラを使用して、ミニプリズムをウェブページから移動させ得る。ミニプリズムのこの移動は、ユーザがミニプリズムを移動させていることを示すユーザ入力をユニバースに送信し得る。
1635において、ミニプリズムは、設置モードにあり、ユーザは、ミニプリズムを移動させ、ミニプリズムをユーザのランドスケープ内のある場所に設置し得る。1640において、ユーザは、マウスボタンまたは抽出トリガを解放し、ミニプリズムをユーザのランドスケープ内のある場所に設置し得る。マウスボタンまたは抽出トリガの解放は、ミニプリズムが拡張現実環境(例えば、ユーザのランドスケープ)内のある場所に設置されたことを示すユーザ入力をユニバースに送信し得る。
1645において、ミニプリズムは、ユーザに表示されるためにプリズム内に完全にロードされたリンクのページとともに、設置場所において、通常サイズ(例えば、ミニプリズムサイズではない)に拡張され得る。事実上、ユーザは、リンクを選択し、リンクのミニプリズムを複合現実環境に設置することによって、アプリケーションを拡張現実環境内に同時に開き/立ち上げ、設置することが可能である一方、背景において、複合現実システムは、表示のために、プリズムをロードおよび準備する。
代替実施形態において、1670において、1615後、ユーザは、ミニプリズムが、アプリケーションによって要求され、1675において、ユニバースによって作成される前、抽出トリガを用いて、リンクを選択し得る。これは、ユーザが、実際に、表示のためにリンクからコンテンツを抽出することを決定する前、ミニプリズムを作成するシステム処理を低減させることに役立ち得る。
代替実施形態において、1680において、ユーザが抽出トリガを用いてリンクを選択後、ユーザは、ミニプリズムを移動させずに、抽出トリガを解放し得る。本実施形態において、1685において、ミニプリズムをリンクからのコンテンツとともにプリズムが完全にロードされた標準的サイズに拡張させる代わりに、ユニバースは、単に、リンクを使用して、新しいタブをウェブブラウザアプリケーション内に作成し得、ユーザが、抽出トリガに匹敵するユーザ入力を用いて、リンクを選択しているとき、リンクのコンテンツは、すでにロードおよびキャッシュされている。
開示された内容は、複合現実環境内の仮想コンテンツを管理および表示するためのシステムおよび方法である。特に、システムおよび方法は、プリズム等の3Dウィンドウを管理することによって、3Dウィンドウマネージャとして機能し得るユニバースアプリケーションを開示する。プリズムは、(例えば、ユーザによって)空間内に位置付けられる有界のボリュームである。アプリケーションは、ユニバースを介して、グラフィックをプリズムの中にレンダリングし得る。ユニバースは、Kaliと協働して、シーングラフをレンダリングし、各プリズムの設置、拡大縮小等の完全制御を有する。いくつかの実施形態において、ユニバースは、プリズムを壁および表面に取り付け、プリズムをパス可能世界システムに登録し、および/または複合現実システムの複数のユーザ間でのコンテンツの共有を制御するための能力を提供し得る。いくつかの実施形態において、ユニバースは、プリズム自体も管理し(例えば、プリズムを作成する、設置および/または、スナッピングルールを管理する基本ユーザインターフェース制御、すなわち、閉じるボタン、アクションバー等を提供する)、プリズムの内側の内容に配慮せず、および/またはプリズムの記録を追跡する(例えば、プリズムを所有するアプリケーション、プリズムを設置するための場所、プリズムが定着させられる方法、すなわち、身体中心、世界固定等)。いくつかの実施形態において、プリズム挙動は、部分的に、定着に基づき得る。いくつかの実施形態において、プリズム挙動は、部分的に、設置(例えば、ユーザ相互作用を通したユーザ設置)および/または身体動態(例えば、ビルボード表示、身体中心、消極的頭部固定等)に基づき得る。
ユニバースは、3Dウィンドウマネージャとして、標準的2Dウィンドウマネージャよりさらに多くの機能性を提供し得る。いくつかの実施形態において、3Dウィンドウマネージャとしてユニバースが提供し得る(例えば、2Dウィンドウマネージャに優る)1つ以上の追加の特徴(例えば、機能性)は、以下を含み得る。
持続性:ユーザの台所カウンタ上に位置するアプリケーションは、ユーザがそれを変化させない限り、台所カウンタ上に現れ得る。ユーザは、システムがオン/オフにされる度、またはユーザが部屋を離れ、戻って来る度、アプリケーションを再度立ち上げる必要がないこともある。ユニバースは、プリズム情報をパス可能世界システムに記憶するので、ユニバースは、ユーザが、複合現実システムを使用し、ユーザの台所内のアプリケーションに近接近する度、ユーザの台所上に位置するアプリケーションを再開し得る。
ユーザに対するアプリケーション状態:アプリケーションは、自動的に、開始、中断/一時停止、再開し、すなわち、明示的ユーザアクションが要求されない。ユーザ相互作用が、アプリケーションの動作状態を変化させるために要求される(例えば、ユーザが閉じるボタンをクリックする)、2Dウィンドウマネージャとは対照的である。
局所性−実世界対2Dウィンドウ:2Dウィンドウマネージャは、画面が設置され得る場所にかかわらず、画面に制限され得る。しかしながら、複合現実環境内において、アプリケーションは、実世界との関連で、例えば、ユーザの環境内の物理的オブジェクト、ユーザの身体、固定場所等のような他のものに対して設置され得る。
物理性:プリズムは、移動し得る。したがって、プリズムの移動および移動の追跡が、管理される必要がある(例えば、ユーザに対するビルボード表示/身体中心、消極的ビルボード表示、移動するときの上下揺、衝突跳ね返り等)。
プライベートであるが、相互作用可能性である:2Dウィンドウは、プライベートであるが、それらは、相互作用しないか、または、それらは、相互作用するが、プライベートではない。しかしながら、ユニバースは、3Dウィンドウ(例えば、プリズム)のプライバシおよび相互作用の両方を有効にし得る。
(追加の実施形態)
本開示の追加の実施形態が、下で説明される。これらの追加の実施形態は、上で開示される実施形態からの要素を組み込み得る。
1.複合現実システムを開始する方法であって、方法は、
ユーザの現在の場所を決定することと、
現在の場所において以前に展開されていた1つ以上のプリズムを読み出すことと、
1つ以上のプリズムをユーザの現在の場所において復元することと、
ユーザの現在の場所において復元された1つ以上のプリズムを表示することと、
を含む、方法。
2.プリズムは、アプリケーションからの仮想コンテンツが含まれた空間のボリュームである、実施形態1に記載の方法。
3.アプリケーションは、アプリケーションが2つ以上のプリズムの中にレンダリングするときのアプリケーションのアプリケーションインスタンスである、実施形態2に記載の方法。
4.プリズムは、シーングラフの一部を表し、シーングラフは、ユーザの現在の場所に対応する、実施形態1に記載の方法。
5.シーングラフは、第1のアプリケーションおよび第2のアプリケーションからのデータを備えている、実施形態4に記載の方法。
6.現在の場所において以前に展開されていた1つ以上のプリズムを読み出すことは、
1つ以上のプリズムに関するインスタンスデータを外部データベースから読み出すことと、
ローカルプリズムデータベースを1つ以上のプリズムに関するインスタンスデータで再構築することと
を含む、実施形態1に記載の方法。
7.各プリズムのためのインスタンスデータは、プリズムを定義するプリズム属性のデータ構造を含み、プリズム属性は、場所、向き、範囲幅、範囲高さ、範囲深度、身体動態、定着タイプ、または定着位置のうちの少なくとも1つを備えている、実施形態6に記載の方法。
8.各プリズムのためのインスタンスデータは、アプリケーションによってプリズムの中に以前にレンダリングされていた仮想コンテンツの状態情報を備えているアプリケーション特定の属性のデータを含む、実施形態7に記載の方法。
9.1つ以上のプリズムを復元することは、
現在の場所において以前に展開されていた1つ以上のプリズムに対応するそれぞれのアプリケーションを立ち上げることと、
以前に展開された1つ以上のプリズムに対応する1つ以上の新しいプリズムを作成することと、
それぞれの仮想コンテンツを1つ以上の新しいプリズムの中にレンダリングすることと、
を含む、実施形態1に記載の方法。
10.プレースホルダプリズムを以前に展開された1つ以上のプリズムの場所に対応する場所に表示することをさらに含み、1つ以上のプリズムを表示することは、それぞれのプレースホルダプリズムをそれぞれの仮想コンテンツを有する1つ以上の新しいプリズムで置換することをさらに含む、実施形態9に記載の方法。
11.ユーザが1つ以上のプリズムと相互作用すると、ユーザのローカルプリズムデータベースを更新されたプリズムインスタンスデータで更新することと、
ローカルプリズムデータベースを外部データベースと同期させることと
をさらに含む、実施形態1に記載の方法。
12.仮想コンテンツを3D空間環境において表示する方法であって、方法は、
アプリケーションから、仮想コンテンツを3D空間環境において表示するための要求を受信することと、
プリズムを作成することであって、プリズムは、仮想コンテンツの境をプリズムの境界の内側に限るように構成された空間のボリュームである、ことと、
仮想コンテンツをアプリケーションから受信することと、
仮想コンテンツをプリズムの境界の内側にレンダリングすることと、
プリズムを3D空間環境におけるオブジェクトに関連付けることと
を含む、方法。
13.プリズムの境界は、表示されない、実施形態12に記載の方法。
14.3D空間環境は、ユーザの物理的実世界環境である、実施形態12に記載の方法。
15.プリズムは、自動的に作成され、機能性の組を有する、実施形態12に記載の方法。
16.機能性の組は、プリズムと3D空間環境におけるオブジェクトとの間の関連付けを備えている、実施形態15に記載の方法。
17.機能性の組は、プリズムに関して許容される最小サイズ、プリズムに関して許容される最大サイズ、およびプリズムをサイズ変更するためのアスペクト比のうちの1つ以上を備えている、実施形態15に記載の方法。
18.アプリケーションは、第1の仮想コンテンツを第1のプリズムの中に、第2の仮想コンテンツを第2のプリズムの中にレンダリングし、第1のプリズムと第2のプリズムとは、異なるプリズムである、実施形態12に記載の方法。
19.プリズムは、3D空間環境における他のプリズムと重複しない、実施形態18に記載の方法。
20.プリズムは、3D空間環境におけるオブジェクトに関連して設置される、実施形態12に記載の方法。
21.オブジェクトは、拡張現実デバイスのユーザである、実施形態20に記載の方法。
22.プリズムは、
1つ以上の普遍的特徴と、
1つ以上のアプリケーション特定の特徴と、
を備え、1つ以上の普遍的特徴および1つ以上のアプリケーション特定の特徴は、事前に承認されたオプションのリストから選択される、実施形態12に記載の方法。
23.1つ以上の普遍的特徴は、異なるアプリケーションが一貫した様式において互いに相互作用することを確実にする、実施形態22に記載の方法。
24.複合現実システムにおいて仮想コンテンツのアプリケーション状態を管理する方法であって、方法は、
3Dボリュームを立体グリッドに分けることと、
立体グリッド内のユーザの第1の場所を決定することと、
3Dボリューム内のアプリケーションの第2の場所を決定することと、
3Dボリューム内のユーザとアプリケーションとの間の距離を計算することと、
少なくとも部分的にユーザとアプリケーションとの間の計算された距離に基づいて、アプリケーションの状態を修正することと
を含む、方法。
25.アクティブゾーンの半径は、複合現実デバイスを使用するユーザの周囲に円形/球状エリアを定義する、実施形態24に記載の方法。
26.アクティブゾーンの外部の周囲のバッファゾーンをさらに含み、バッファゾーンは、アプリケーションの状態の断続または高速変化を防止する、実施形態25に記載の方法。
27.アプリケーションの状態を修正することは、少なくとも部分的にアプリケーションが別のアプリケーションによって塞がれるかどうかに基づく、実施形態24に記載の方法。
28.アプリケーションの状態を修正することは、少なくとも部分的にユーザの頭部姿勢に基づく、実施形態24に記載の方法。
29.セル内のアプリケーションの既知の位置の距離は、複合現実デバイスを使用しているユーザが中に存在するセルおよびその近傍セルに関してのみ決定される、実施形態24に記載の方法。
30.拡張現実環境においてアプリケーションを開き、それを設置する方法であって、方法は、
ユーザから、新しいコンテンツのための要求を示す第1のユーザ入力を受信することと、
アプリケーションを立ち上げ、コンテンツを生成することと、
3Dディスプレイボリューム管理ユニットのミニディスプレイボリュームを作成することであって、ページプレビューが、ミニディスプレイボリューム内に表示され、3Dディスプレイボリューム管理ユニットは、アプリケーションの立ち上げと同時に作成される、ことと、
ミニディスプレイボリュームの移動を示す第2のユーザ入力を受信することと、
拡張現実環境におけるある場所におけるミニディスプレイボリュームの設置を示す第3のユーザ入力を受信することと、
ミニディスプレイボリュームの代わりに3Dディスプレイボリューム管理ユニットを場所において拡張させることと
を含み、
3Dディスプレイボリューム管理ユニットは、3Dディスプレイボリューム管理ユニット内に完全にロードされたコンテンツを表示する、方法。
31.第1のユーザ入力は、ウェブページ上のリンクの上でのカーソル移動である、実施形態30に記載の方法。
32.第2のユーザ入力は、リンクの選択およびミニディスプレイボリュームの移動である、実施形態31に記載の方法。
33.3Dディスプレイボリューム管理ユニットは、3Dディスプレイボリューム管理ユニットがミニディスプレイの代わりに拡張するとき、ミニディスプレイに取って代わる、実施形態30に記載の方法。
34.コンテンツは、ユーザがミニディスプレイを移動させている間に3Dディスプレイボリューム管理ユニットの中にロードされる、実施形態30に記載の方法。
35.場所は、拡張現実環境内のオブジェクトに固定される、実施形態30に記載の方法。
36.オブジェクトは、ユーザである、実施形態35に記載の方法。
37.仮想コンテンツを管理する方法であって、方法は、
コンテンツをコンテンツ生成アプリケーションから受信することと、
ユニバースアプリケーションによって、コンテンツを3D空間環境において表示することと、
3D空間環境においてユニバースアプリケーションによって、コンテンツの表示を絶えず管理することと
を含む、方法。
38.本明細書に開示される本発明の概念のいずれかに従って、複合現実システムにおいて仮想コンテンツを管理および表示するためのシステム、方法、およびコンピュータプログラム製品。
39.仮想コンテンツを立体ディスプレイ空間内に表示することによって、仮想コンテンツを利用可能な3D表示可能空間の一部内に表示することをさらに含み、立体ディスプレイ空間の境界は、表示されない、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
40.アプリケーションによるディスプレイカスタマイズの構成のための事前に承認されたオプションのリストから、普遍的特徴およびアプリケーション選択型特徴をプリズムに割り当てることをさらに含む、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
41.仮想コンテンツを1つ以上のプリズムの中に表示することをさらに含み、1つ以上のプリズムは、互いに重複しない、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
42.少なくとも部分的にユーザに対するプリズムの相対的位置および場所に基づいて、プリズムの状態を変化させることをさらに含む、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
43.アプリケーションにおけるコンテンツ作成を管理することと、別個のアプリケーションにおけるコンテンツ表示を管理することとをさらに含む、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
44.プリズムを複合現実環境に設置する間、コンテンツをプリズムの中に提供するであろうアプリケーションを開くことをさらに含む、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
45.プリズム内に仮想コンテンツを表示するために、場所、向き、および範囲データをプリズムに割り当てることをさらに含み、仮想コンテンツは、3D仮想コンテンツである、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
46.場所は、複合現実環境におけるプリズムの定着位置の座標である、実施形態45に記載のシステム、方法、およびコンピュータプログラム製品。
47.向きは、プリズムがオブジェクトに対して回転させられる方法を定義し、オブジェクトは、壁である、実施形態45に記載のシステム、方法、およびコンピュータプログラム製品。
48.範囲データは、プリズムのサイズを定義する、実施形態45に記載のシステム、方法、およびコンピュータプログラム製品。
49.ランチャアプリケーションを複合現実環境内の実世界オブジェクトにピン固定することをさらに含む、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
50.ピン固定式ランチャアプリケーションは、プリズム内のアプリケーションのコンテンツをピン固定式ランチャアプリケーションと同じ場所に立ち上げる、実施形態49に記載のシステム、方法、およびコンピュータプログラム製品。
51.挙動タイプを各プリズムに割り当てることをさらに含み、挙動タイプは、世界固定、ビルボード表示、エッジビルボード表示、追従頭部固定、外部センサに基づく追従、またはフェーディングのうちの少なくとも1つを備えている、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
52.ランチャアプリケーションの設置された場所に特定の最も使用されるコンテンツを識別することをさらに含む、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
53.設置式ランチャアプリケーションによって、お気に入りアプリケーションを表示することをさらに含み、お気に入りアプリケーションは、少なくとも部分的に設置式ランチャの場所に対する文脈に基づく、実施形態38に記載のシステム、方法、およびコンピュータプログラム製品。
54.方法であって、方法は、
シーンに関するシーングラフにアクセスすることであって、シーングラフは、1つ以上の変換ツリーを備え、各ツリーは、複数のノードを備えている、ことと、
1つ以上の変換ツリー内の複数のノードからの1つ以上のノードにタグを追加することであって、タグ付けされた1つ以上のノードは、変換グループを形成し、タグ付けされた1つ以上のノードは、第1のタグ付けされたノードと第2のタグ付けされたノードとを備えている、ことと、
第1のタグ付けされたノードを移動させることと
を含み、
第1のタグ付けされたノードを移動させることは、第2のタグ付けされたノードが移動することを引き起こす、方法。
55.第2のタグ付けされたノードは、第1のタグ付けされたノードの直系の子孫ではない、実施形態54に記載の方法。
56.第1のタグ付けされたノードおよび第2のタグ付けされたノードは、同じ変換ツリーからのものではない、実施形態54に記載の方法。
57.前記複数のノードは、第1のノードと、第2のノードとを備え、方法は、第1のノードを第2のノードの親にすることをさらに含み、第1のノードを第2のノードの親にすることは、親にされたノードを移動させない、実施形態54に記載の方法。
58.仮想コンテンツを3D共有空間において表示する方法であって、方法は、
第1のアプリケーションによって、仮想コンテンツを3D共有空間において生成することと、
第2のアプリケーションによって、第1のアプリケーションによって生成された仮想コンテンツを表示することと
を含み、
第1のアプリケーションと第2のアプリケーションとは、異なるアプリケーションである、方法。
(システムアーキテクチャ概要)
図17は、本開示の実施形態のうちの1つ以上のものを実装するために好適な例証的コンピューティングシステム1400のブロック図である。コンピューティングシステム1400は、情報を通信するためのバス1406または他の通信機構を含み、それは、プロセッサ1407、メインメモリ1408(例えば、RAM)、静的記憶デバイス1409(例えば、ROM)、ディスクドライブ1410(例えば、磁気または光学)、通信インターフェース1414(例えば、モデムまたはEthernet(登録商標)カード)、ディスプレイ1411(例えば、CRTまたはLCD)、入力デバイス1412(例えば、キーボード)、およびカーソル制御等のサブシステムおよびデバイスを相互接続する。
いくつかの実施形態によると、コンピューティングシステム1400は、プロセッサ1407がメインメモリ1408に含まれる1つ以上の命令の1つ以上の一続きを実行することによって、特定の動作を実施する。そのような命令は、静的記憶デバイス1409またはディスクドライブ1410等の別のコンピュータ読み取り可能/使用可能媒体から、メインメモリ1408の中に読み込まれ得る。代替実施形態において、有線回路が、本開示を実装するために、ソフトウェア命令の代わりに、またはそれと組み合わせて、使用され得る。したがって、実施形態は、ハードウェア回路および/またはソフトウェアの任意の具体的組み合わせに限定されない。一実施形態において、用語「論理」は、本開示の全部または一部を実装するために使用されるソフトウェアまたはハードウェアの任意の組み合わせを意味するものとする。
用語「コンピュータ読み取り可能な媒体」または「コンピュータ使用可能媒体」は、本明細書で使用されるように、実行のために命令をプロセッサ1407に提供することに関わる任意の媒体を指す。そのような媒体は、限定ではないが、不揮発性媒体および揮発性媒体を含む多くの形態をとり得る。不揮発性媒体は、例えば、ディスクドライブ1410等の光学または磁気ディスクを含む。揮発性媒体は、メインメモリ1408等の動的メモリを含む。いくつかの実施形態において、システムは、ソリッドステートドライブ(SSD)メモリを使用し得る。
一般的形態のコンピュータ読み取り可能な媒体は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD−ROM、任意の他の光学媒体、パンチカード、紙テープ、孔のパターンを伴う任意の他の物理的媒体、RAM、PROM、EPROM、FLASH(登録商標)−EPROM、任意の他のメモリチップまたはカートリッジ、もしくはそこからコンピュータが読み取られ得る任意の他の媒体を含む。
一実施形態において、本開示を実践するための一続きの命令の実行は、単一コンピューティングシステム1400によって実施される。他の実施形態によると、通信リンク1415(例えば、LAN、PTSN、または無線ネットワーク)によって結合された2つ以上のコンピューティングシステム1400が、互いに協調して、本開示を実践するために要求される命令のシーケンスを実施し得る。
コンピューティングシステム1400は、通信インターフェース1414を介して、通信リンク1415を通して、プログラム、例えば、アプリケーションコードを含むメッセージ、データ、および命令を伝送および受信し得る。受信されたプログラムコードは、受信されると、および/または、後の実行のために、ディスクドライブ1410もしくは他の不揮発性記憶装置に記憶されると、プロセッサ1407によって実行され得る。コンピューティングシステム1400は、データインターフェース1433を通して、外部記憶デバイス1431上のデータベース1432に通信し得る。
前述の明細書において、本開示は、その具体的実施形態を参照して説明された。しかしながら、種々の修正および変更が、本開示のより広い精神および範囲から逸脱することなく、行われ得ることが、明白であろう。例えば、上で説明されるプロセスフローは、プロセスアクションの特定の順序を参照して説明される。しかしながら、説明されるプロセスアクションの多くの順序は、本開示の範囲または動作に影響を及ぼすことなく、変更され得る。明細書および図面は、故に、限定的ではなく、例証的意味と見なされるべきである。

Claims (19)

  1. 仮想コンテンツを3D空間環境において表示する方法であって、前記方法は、
    アプリケーションから、仮想コンテンツを3D空間環境において表示するための要求を受信することと、
    プリズムを作成することであって、前記プリズムは、前記仮想コンテンツの境を前記プリズムの境界の内側に限るように構成された空間のボリュームである、ことと、
    前記仮想コンテンツを前記アプリケーションから受信することと、
    前記仮想コンテンツを前記プリズムの前記境界の内側にレンダリングすることと、
    前記プリズムを前記3D空間環境におけるオブジェクトに関連付けることと
    を含む、方法。
  2. 前記プリズムの境界は、表示されない、請求項1に記載の方法。
  3. 前記3D空間環境は、ユーザの物理的実世界環境である、請求項1に記載の方法。
  4. 前記プリズムは、自動的に作成され、機能性の組を有する、請求項1に記載の方法。
  5. 前記機能性の組は、前記プリズムと前記3D空間環境における前記オブジェクトとの間の関連付けを備えている、請求項4に記載の方法。
  6. 前記機能性の組は、前記プリズムに関して許容される最小サイズ、前記プリズムに関して許容される最大サイズ、および前記プリズムをサイズ変更するためのアスペクト比のうちの1つ以上を備えている、請求項4に記載の方法。
  7. 前記アプリケーションは、第1の仮想コンテンツを第1のプリズムの中に、第2の仮想コンテンツを第2のプリズムの中にレンダリングし、前記第1のプリズムおよび前記第2のプリズムは、異なるプリズムである、請求項1に記載の方法。
  8. 前記プリズムは、前記3D空間環境における他のプリズムと重複しない、請求項7に記載の方法。
  9. 前記プリズムは、前記3D空間環境におけるオブジェクトに関連して設置される、請求項1に記載の方法。
  10. 前記オブジェクトは、拡張現実デバイスのユーザである、請求項9に記載の方法。
  11. 前記プリズムは、
    1つ以上の普遍的特徴と、
    1つ以上のアプリケーション特定の特徴と
    を備え、
    前記1つ以上の普遍的特徴および前記1つ以上のアプリケーション特定の特徴は、事前に承認されたオプションのリストから選択される、請求項1に記載の方法。
  12. 前記1つ以上の普遍的特徴は、異なるアプリケーションが一貫した様式において互いに相互作用することを確実にする、請求項11に記載の方法。
  13. 仮想コンテンツを3D空間環境において表示するためのディスプレイシステムであって、前記ディスプレイシステムは、請求項1−12のいずれかに記載の方法を実装する手段を備えている、ディスプレイシステム。
  14. 複合現実システムを開始する方法であって、前記方法は、
    ユーザの現在の場所を決定することと、
    前記現在の場所において以前に展開されていた1つ以上のプリズムを読み出すことと、
    前記1つ以上のプリズムを前記ユーザの前記現在の場所において復元することと、
    前記ユーザの前記現在の場所において復元された前記1つ以上のプリズムを表示することと
    を含む、方法。
  15. 複合現実システムにおいて仮想コンテンツのアプリケーション状態を管理する方法であって、前記方法は、
    3Dボリュームを立体グリッドに分けることと、
    前記立体グリッド内のユーザの第1の場所を決定することと、
    前記3Dボリューム内のアプリケーションの第2の場所を決定することと、
    前記3Dボリューム内の前記ユーザと前記アプリケーションとの間の距離を計算することと、
    少なくとも部分的に前記ユーザと前記アプリケーションとの間の計算された前記距離に基づいて、前記アプリケーションの状態を修正することと
    を含む、方法。
  16. 拡張現実環境においてアプリケーションを開き、それを設置する方法であって、前記方法は、
    ユーザから、新しいコンテンツのための要求を示す第1のユーザ入力を受信することと、
    アプリケーションを立ち上げ、前記コンテンツを生成することと、
    3Dディスプレイボリューム管理ユニットのミニディスプレイボリュームを作成することであって、ページプレビューが、前記ミニディスプレイボリューム内に表示され、前記3Dディスプレイボリューム管理ユニットは、前記アプリケーションの前記立ち上げと同時に作成される、ことと、
    前記ミニディスプレイボリュームの移動を示す第2のユーザ入力を受信することと、
    前記拡張現実環境におけるある場所における前記ミニディスプレイボリュームの設置を示す第3のユーザ入力を受信することと、
    前記ミニディスプレイボリュームの代わりに前記3Dディスプレイボリューム管理ユニットを前記場所において拡張させることと
    を含み、
    前記3Dディスプレイボリューム管理ユニットは、前記3Dディスプレイボリューム管理ユニット内に完全にロードされた前記コンテンツを表示する、方法。
  17. 仮想コンテンツを管理する方法であって、前記方法は、
    コンテンツをコンテンツ生成アプリケーションから受信することと、
    ユニバースアプリケーションによって、前記コンテンツを3D空間環境において表示することと、
    前記3D空間環境において前記ユニバースアプリケーションによって、前記コンテンツの表示を絶えず管理することと
    を含む、方法。
  18. 方法であって、前記方法は、
    シーンに関するシーングラフにアクセスすることであって、前記シーングラフは、1つ以上の変換ツリーを備え、各ツリーは、複数のノードを備えている、ことと、
    前記1つ以上の変換ツリー内の複数のノードからの1つ以上のノードにタグを追加することであって、タグ付けされた前記1つ以上のノードは、変換グループを形成し、タグ付けされた前記1つ以上のノードは、第1のタグ付けされたノードと第2のタグ付けされたノードとを備えている、ことと、
    前記第1のタグ付けされたノードを移動させることと
    を含み、
    前記第1のタグ付けされたノードを移動させることは、前記第2のタグ付けされたノードが移動することを引き起こす、方法。
  19. 仮想コンテンツを3D共有空間において表示する方法であって、前記方法は、
    第1のアプリケーションによって、仮想コンテンツを前記3D共有空間において生成することと、
    第2のアプリケーションによって、前記第1のアプリケーションによって生成された前記仮想コンテンツを表示することと
    を含み、
    前記第1のアプリケーションと前記第2のアプリケーションとは、異なるアプリケーションである、方法。
JP2020534227A 2017-12-22 2018-12-18 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム Active JP7196179B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022199311A JP7476292B2 (ja) 2017-12-22 2022-12-14 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762610101P 2017-12-22 2017-12-22
US62/610,101 2017-12-22
PCT/US2018/066331 WO2019126238A1 (en) 2017-12-22 2018-12-18 Methods and system for managing and displaying virtual content in a mixed reality system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022199311A Division JP7476292B2 (ja) 2017-12-22 2022-12-14 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム

Publications (2)

Publication Number Publication Date
JP2021507402A true JP2021507402A (ja) 2021-02-22
JP7196179B2 JP7196179B2 (ja) 2022-12-26

Family

ID=66950554

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020534227A Active JP7196179B2 (ja) 2017-12-22 2018-12-18 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム
JP2022199311A Active JP7476292B2 (ja) 2017-12-22 2022-12-14 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022199311A Active JP7476292B2 (ja) 2017-12-22 2022-12-14 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム

Country Status (9)

Country Link
US (3) US11024086B2 (ja)
EP (1) EP3729382A4 (ja)
JP (2) JP7196179B2 (ja)
KR (2) KR102556889B1 (ja)
CN (1) CN111684495A (ja)
AU (1) AU2018388581A1 (ja)
CA (1) CA3084149A1 (ja)
IL (2) IL300465A (ja)
WO (1) WO2019126238A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7455985B2 (ja) 2020-02-10 2024-03-26 マジック リープ, インコーポレイテッド 複合現実環境における3次元コンテナに対する身体中心コンテンツ位置付け

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10867445B1 (en) * 2016-11-16 2020-12-15 Amazon Technologies, Inc. Content segmentation and navigation
US10664993B1 (en) 2017-03-13 2020-05-26 Occipital, Inc. System for determining a pose of an object
CA3060209A1 (en) 2017-05-01 2018-11-08 Magic Leap, Inc. Matching content to a spatial 3d environment
US10769233B2 (en) 2017-06-13 2020-09-08 Open Text Corporation Systems and methods for communication across multiple browser pages for an application
CN111684495A (zh) 2017-12-22 2020-09-18 奇跃公司 用于在混合现实系统中管理和显示虚拟内容的方法和系统
IL301443A (en) 2018-02-22 2023-05-01 Magic Leap Inc A browser for mixed reality systems
IL301281A (en) * 2018-02-22 2023-05-01 Magic Leap Inc Shoot an object with physical manipulation
CA3092884A1 (en) * 2018-03-27 2019-10-03 Spacedraft Pty Ltd A media content planning system
WO2019213111A1 (en) * 2018-04-30 2019-11-07 Meta View, Inc. System and method for presenting virtual content in an interactive space
US11095947B2 (en) * 2018-06-12 2021-08-17 Number 9, LLC System for sharing user-generated content
JP7445642B2 (ja) 2018-08-13 2024-03-07 マジック リープ, インコーポレイテッド クロスリアリティシステム
US11227435B2 (en) 2018-08-13 2022-01-18 Magic Leap, Inc. Cross reality system
CN109254660B (zh) * 2018-08-31 2020-11-17 歌尔光学科技有限公司 内容显示方法、装置及设备
JP2022512600A (ja) 2018-10-05 2022-02-07 マジック リープ, インコーポレイテッド 任意の場所における場所特有の仮想コンテンツのレンダリング
US11341676B2 (en) * 2019-02-05 2022-05-24 Google Llc Calibration-free instant motion tracking for augmented reality
CN110287764B (zh) * 2019-05-06 2022-01-11 深圳大学 姿势预测方法、装置、计算机设备和存储介质
JP7311643B2 (ja) 2019-06-21 2023-07-19 マジック リープ, インコーポレイテッド モード式ウィンドウを介したセキュアな認可
US11048760B1 (en) * 2019-07-31 2021-06-29 Splunk Inc. Techniques for placing content in and applying layers in an extended reality environment
US11429263B1 (en) * 2019-08-20 2022-08-30 Lenovo (Singapore) Pte. Ltd. Window placement based on user location
US11151770B2 (en) * 2019-09-23 2021-10-19 Facebook Technologies, Llc Rendering images using declarative graphics server
CN110908504B (zh) * 2019-10-10 2021-03-23 浙江大学 一种增强现实博物馆协作交互方法与系统
CN114616534A (zh) 2019-10-15 2022-06-10 奇跃公司 具有无线指纹的交叉现实系统
WO2021076757A1 (en) 2019-10-15 2021-04-22 Magic Leap, Inc. Cross reality system supporting multiple device types
CN114600064A (zh) 2019-10-15 2022-06-07 奇跃公司 具有定位服务的交叉现实系统
WO2021089006A1 (zh) * 2019-11-08 2021-05-14 华为技术有限公司 数字空间的管理方法、装置与设备
JP2023504775A (ja) 2019-11-12 2023-02-07 マジック リープ, インコーポレイテッド 位置特定サービスおよび共有場所ベースのコンテンツを伴うクロスリアリティシステム
US11442593B2 (en) * 2019-12-06 2022-09-13 Magic Leap, Inc. Dynamic browser stage
EP4073763A4 (en) * 2019-12-09 2023-12-27 Magic Leap, Inc. CROSS-REALLY SYSTEM WITH SIMPLIFIED PROGRAMMING OF VIRTUAL CONTENT
US11799736B2 (en) * 2019-12-27 2023-10-24 Digital Guardian Llc Systems and methods for investigating potential incidents across entities in networked environments
US11756509B2 (en) * 2020-01-27 2023-09-12 Magic Leap, Inc. Enhanced state control for anchor-based cross reality applications
US11562525B2 (en) 2020-02-13 2023-01-24 Magic Leap, Inc. Cross reality system with map processing using multi-resolution frame descriptors
US11410395B2 (en) 2020-02-13 2022-08-09 Magic Leap, Inc. Cross reality system with accurate shared maps
WO2021163295A1 (en) 2020-02-13 2021-08-19 Magic Leap, Inc. Cross reality system with prioritization of geolocation information for localization
CN115461787A (zh) 2020-02-26 2022-12-09 奇跃公司 具有快速定位的交叉现实系统
US11763517B1 (en) * 2020-02-27 2023-09-19 Apple Inc. Method and device for visualizing sensory perception
WO2021173390A1 (en) * 2020-02-27 2021-09-02 Qsinx Management Llc Connecting spatially distinct settings
WO2021222371A1 (en) 2020-04-29 2021-11-04 Magic Leap, Inc. Cross reality system for large scale environments
US20220070235A1 (en) 2020-08-28 2022-03-03 Tmrw Foundation Ip S.Àr.L. System and method enabling interactions in virtual environments with virtual presence
US11176755B1 (en) * 2020-08-31 2021-11-16 Facebook Technologies, Llc Artificial reality augments and surfaces
US11227445B1 (en) 2020-08-31 2022-01-18 Facebook Technologies, Llc Artificial reality augments and surfaces
US20220134222A1 (en) * 2020-11-03 2022-05-05 Nvidia Corporation Delta propagation in cloud-centric platforms for collaboration and connectivity
US11113893B1 (en) 2020-11-17 2021-09-07 Facebook Technologies, Llc Artificial reality environment with glints displayed by an extra reality device
US11409405B1 (en) 2020-12-22 2022-08-09 Facebook Technologies, Llc Augment orchestration in an artificial reality environment
WO2022259253A1 (en) * 2021-06-09 2022-12-15 Alon Melchner System and method for providing interactive multi-user parallel real and virtual 3d environments
US11762952B2 (en) 2021-06-28 2023-09-19 Meta Platforms Technologies, Llc Artificial reality application lifecycle
CN113791687B (zh) * 2021-09-15 2023-11-14 咪咕视讯科技有限公司 Vr场景中的交互方法、装置、计算设备及存储介质
US11798247B2 (en) 2021-10-27 2023-10-24 Meta Platforms Technologies, Llc Virtual object structures and interrelationships
US11748944B2 (en) 2021-10-27 2023-09-05 Meta Platforms Technologies, Llc Virtual object structures and interrelationships
US11747890B2 (en) * 2021-11-02 2023-09-05 Disney Enterprises, Inc. Augmented reality enhanced interactive robotic animation
WO2023102139A1 (en) * 2021-12-02 2023-06-08 Apple Inc. User interface modes for three-dimensional display
US20230260233A1 (en) * 2022-02-14 2023-08-17 Meta Platforms Technologies, Llc Coordination of Interactions of Virtual Objects
US20230367611A1 (en) * 2022-05-10 2023-11-16 Meta Platforms Technologies, Llc World-Controlled and Application-Controlled Augments in an Artificial-Reality Environment
US11947862B1 (en) 2022-12-30 2024-04-02 Meta Platforms Technologies, Llc Streaming native application content to artificial reality devices

Family Cites Families (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923318A (en) 1996-04-12 1999-07-13 Zhai; Shumin Finger manipulatable 6 degree-of-freedom input device
US6720949B1 (en) 1997-08-22 2004-04-13 Timothy R. Pryor Man machine interfaces and applications
US6629065B1 (en) * 1998-09-30 2003-09-30 Wisconsin Alumni Research Foundation Methods and apparata for rapid computer-aided design of objects in virtual reality and other environments
US9208270B2 (en) * 2000-08-02 2015-12-08 Comsol Ab System and method for establishing bidirectional links between multiphysics modeling and design systems
US7043695B2 (en) * 2000-09-19 2006-05-09 Technion Research & Development Foundation Ltd. Object positioning and display in virtual environments
WO2004038657A2 (en) 2002-10-22 2004-05-06 Artoolworks Tracking a surface in a 3-dimensional scene using natural visual features of the surface
JP4447865B2 (ja) * 2003-08-01 2010-04-07 ソニー株式会社 地図表示システム、地図データ加工装置、地図表示装置及び地図表示方法
JP4212564B2 (ja) * 2005-02-28 2009-01-21 ザイオソフト株式会社 画像処理方法および画像処理プログラム
US20070074125A1 (en) 2005-09-26 2007-03-29 Microsoft Corporation Preview information for web-browsing
US7595810B2 (en) 2006-03-22 2009-09-29 Apple Inc. Methods of manipulating a screen space of a display device
US20080115081A1 (en) 2006-11-09 2008-05-15 Microsoft Corporation Enhanced windows management feature
US20090028142A1 (en) 2007-07-25 2009-01-29 Schmidt Brian K Streaming data content in a network
US8245241B2 (en) * 2007-10-02 2012-08-14 International Business Machines Corporation Arrangements for interactivity between a virtual universe and the world wide web
US8191001B2 (en) * 2008-04-05 2012-05-29 Social Communications Company Shared virtual area communication environment based apparatus and methods
US10872322B2 (en) 2008-03-21 2020-12-22 Dressbot, Inc. System and method for collaborative shopping, business and entertainment
US9952673B2 (en) * 2009-04-02 2018-04-24 Oblong Industries, Inc. Operating environment comprising multiple client devices, multiple displays, multiple users, and gestural control
US20160077677A1 (en) 2008-05-20 2016-03-17 Israel Valdes Apparatus and method for user configurable content
US8924862B1 (en) 2008-09-05 2014-12-30 Cisco Technology, Inc. Optimizing desktop sharing for wireless clients during networked collaboration
KR101082487B1 (ko) 2010-01-29 2011-11-11 키위플 주식회사 객체 인식시스템 및 이를 이용하는 객체 인식 방법
US20130278631A1 (en) 2010-02-28 2013-10-24 Osterhout Group, Inc. 3d positioning of augmented reality information
US20120212484A1 (en) * 2010-02-28 2012-08-23 Osterhout Group, Inc. System and method for display content placement using distance and location information
US9069577B2 (en) 2010-11-23 2015-06-30 Apple Inc. Grouping and browsing open windows
EP2691935A1 (en) 2011-03-29 2014-02-05 Qualcomm Incorporated System for the rendering of shared digital interfaces relative to each user's point of view
US9354899B2 (en) 2011-04-18 2016-05-31 Google Inc. Simultaneous display of multiple applications using panels
CN103702726B (zh) 2011-05-23 2016-01-13 乐高公司 玩具搭建系统、产生构建指令的方法和数据处理系统
US8912979B1 (en) 2011-07-14 2014-12-16 Google Inc. Virtual window in head-mounted display
US9734633B2 (en) * 2012-01-27 2017-08-15 Microsoft Technology Licensing, Llc Virtual environment generating system
US9671566B2 (en) 2012-06-11 2017-06-06 Magic Leap, Inc. Planar waveguide apparatus with diffraction element(s) and system employing same
US9069455B2 (en) 2012-06-22 2015-06-30 Microsoft Technology Licensing, Llc 3D user interface for application entities
US20130342572A1 (en) 2012-06-26 2013-12-26 Adam G. Poulos Control of displayed content in virtual environments
US9292085B2 (en) 2012-06-29 2016-03-22 Microsoft Technology Licensing, Llc Configuring an interaction zone within an augmented reality environment
WO2014031899A1 (en) 2012-08-22 2014-02-27 Goldrun Corporation Augmented reality virtual content platform apparatuses, methods and systems
US9461876B2 (en) 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction
US9070194B2 (en) 2012-10-25 2015-06-30 Microsoft Technology Licensing, Llc Planar surface detection
US9407824B2 (en) 2012-11-01 2016-08-02 Google Inc. Multi-directional content capture on mobile devices
KR101984915B1 (ko) 2012-12-03 2019-09-03 삼성전자주식회사 증강 현실 컨텐츠 운용 방법 및 이를 지원하는 단말기와 시스템
US9317972B2 (en) 2012-12-18 2016-04-19 Qualcomm Incorporated User interface for augmented reality enabled devices
CA2896985A1 (en) 2013-01-03 2014-07-10 Meta Company Extramissive spatial imaging digital eye glass for virtual or augmediated vision
US20140200863A1 (en) 2013-01-11 2014-07-17 The Regents Of The University Of Michigan Monitoring proximity of objects at construction jobsites via three-dimensional virtuality in real-time
US20140225922A1 (en) 2013-02-11 2014-08-14 Rocco A. Sbardella System and method for an augmented reality software application
JP2014157466A (ja) 2013-02-15 2014-08-28 Sony Corp 情報処理装置及び記憶媒体
GB201303707D0 (en) 2013-03-01 2013-04-17 Tosas Bautista Martin System and method of interaction for mobile devices
KR102516124B1 (ko) 2013-03-11 2023-03-29 매직 립, 인코포레이티드 증강 및 가상 현실을 위한 시스템 및 방법
US20140267228A1 (en) * 2013-03-14 2014-09-18 Microsoft Corporation Mapping augmented reality experience to various environments
NZ751593A (en) 2013-03-15 2020-01-31 Magic Leap Inc Display system and method
US20140282274A1 (en) 2013-03-15 2014-09-18 Qualcomm Incorporated Detection of a gesture performed with at least two control objects
US20150277699A1 (en) 2013-04-02 2015-10-01 Cherif Atia Algreatly Interaction method for optical head-mounted display
KR20140133361A (ko) 2013-05-10 2014-11-19 삼성전자주식회사 디스플레이 장치 및 그 ui 화면 제공 방법
US10262462B2 (en) 2014-04-18 2019-04-16 Magic Leap, Inc. Systems and methods for augmented and virtual reality
US9129430B2 (en) 2013-06-25 2015-09-08 Microsoft Technology Licensing, Llc Indicating out-of-view augmented reality images
US10861224B2 (en) 2013-07-23 2020-12-08 Hover Inc. 3D building analyzer
WO2015033377A1 (ja) 2013-09-06 2015-03-12 株式会社マーズフラッグ 情報処理装置、検索サーバ、ウェブサーバ及びコンピュータプログラム
US20180225885A1 (en) 2013-10-01 2018-08-09 Aaron Scott Dishno Zone-based three-dimensional (3d) browsing
KR101512084B1 (ko) 2013-11-15 2015-04-17 한국과학기술원 가상현실 기반의 3차원 웹 검색 인터페이스를 제공하는 웹 검색 시스템 및 그 제공 방법
US9354778B2 (en) * 2013-12-06 2016-05-31 Digimarc Corporation Smartphone-based methods and systems
US9411422B1 (en) 2013-12-13 2016-08-09 Audible, Inc. User interaction with content markers
US20150185825A1 (en) 2013-12-30 2015-07-02 Daqri, Llc Assigning a virtual user interface to a physical object
US20150206343A1 (en) 2014-01-17 2015-07-23 Nokia Corporation Method and apparatus for evaluating environmental structures for in-situ content augmentation
US9201578B2 (en) 2014-01-23 2015-12-01 Microsoft Technology Licensing, Llc Gaze swipe selection
KR102184402B1 (ko) 2014-03-06 2020-11-30 엘지전자 주식회사 글래스 타입의 이동 단말기
US10203762B2 (en) 2014-03-11 2019-02-12 Magic Leap, Inc. Methods and systems for creating virtual and augmented reality
US20150302651A1 (en) 2014-04-18 2015-10-22 Sam Shpigelman System and method for augmented or virtual reality entertainment experience
US9361732B2 (en) * 2014-05-01 2016-06-07 Microsoft Technology Licensing, Llc Transitions between body-locked and world-locked augmented reality
US9971853B2 (en) 2014-05-13 2018-05-15 Atheer, Inc. Method for replacing 3D objects in 2D environment
US20150331240A1 (en) 2014-05-15 2015-11-19 Adam G. Poulos Assisted Viewing Of Web-Based Resources
US10156967B2 (en) 2014-05-31 2018-12-18 Apple Inc. Device, method, and graphical user interface for tabbed and private browsing
CN106937531B (zh) * 2014-06-14 2020-11-06 奇跃公司 用于产生虚拟和增强现实的方法和系统
US9858720B2 (en) * 2014-07-25 2018-01-02 Microsoft Technology Licensing, Llc Three-dimensional mixed-reality viewport
US20160027214A1 (en) 2014-07-25 2016-01-28 Robert Memmott Mouse sharing between a desktop and a virtual world
US9734634B1 (en) 2014-09-26 2017-08-15 A9.Com, Inc. Augmented reality product preview
US10726593B2 (en) * 2015-09-22 2020-07-28 Fyusion, Inc. Artificially rendering images using viewpoint interpolation and extrapolation
JP6581348B2 (ja) 2014-11-21 2019-09-25 キヤノン株式会社 情報処理装置、情報処理方法、およびプログラム
JP5767386B1 (ja) 2014-12-15 2015-08-19 株式会社コロプラ ヘッドマウントディスプレイシステム、ヘッドマウントディスプレイへ表示するための方法、及びプログラム
US10335677B2 (en) 2014-12-23 2019-07-02 Matthew Daniel Fuchs Augmented reality system with agent device for viewing persistent content and method of operation thereof
US20160300392A1 (en) * 2015-04-10 2016-10-13 VR Global, Inc. Systems, media, and methods for providing improved virtual reality tours and associated analytics
WO2016176511A1 (en) 2015-04-29 2016-11-03 Data Cocoon LLC Tessellated data visualization system
JP6780642B2 (ja) 2015-06-15 2020-11-04 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
EP3113106A1 (en) 2015-07-02 2017-01-04 Nokia Technologies Oy Determination of environmental augmentation allocation data
KR20170005602A (ko) 2015-07-06 2017-01-16 삼성전자주식회사 증강현실 및 가상현실의 통합적 제공 방법 및 이를 사용하는 전자 장치
WO2017030306A1 (en) 2015-08-18 2017-02-23 Samsung Electronics Co., Ltd. Method and system for bookmarking a webpage
US10057078B2 (en) * 2015-08-21 2018-08-21 Samsung Electronics Company, Ltd. User-configurable interactive region monitoring
US10318225B2 (en) 2015-09-01 2019-06-11 Microsoft Technology Licensing, Llc Holographic augmented authoring
CN108139803B (zh) 2015-10-08 2021-04-20 Pcms控股公司 用于动态显示器配置的自动校准的方法及系统
KR102641655B1 (ko) 2015-10-20 2024-02-27 매직 립, 인코포레이티드 3차원 공간에서 가상 객체들 선택
TWI567691B (zh) 2016-03-07 2017-01-21 粉迷科技股份有限公司 立體空間的場景編輯方法與系統
US20170256096A1 (en) * 2016-03-07 2017-09-07 Google Inc. Intelligent object sizing and placement in a augmented / virtual reality environment
CN109310476B (zh) 2016-03-12 2020-04-03 P·K·朗 用于手术的装置与方法
US10373381B2 (en) 2016-03-30 2019-08-06 Microsoft Technology Licensing, Llc Virtual object manipulation within physical environment
US10268266B2 (en) 2016-06-29 2019-04-23 Microsoft Technology Licensing, Llc Selection of objects in three-dimensional space
CN109643373B (zh) 2016-06-30 2023-06-27 奇跃公司 估计3d空间中的姿态
US10489978B2 (en) 2016-07-26 2019-11-26 Rouslan Lyubomirov DIMITROV System and method for displaying computer-based content in a virtual or augmented environment
WO2018031621A1 (en) 2016-08-11 2018-02-15 Magic Leap, Inc. Automatic placement of a virtual object in a three-dimensional space
US20180082480A1 (en) 2016-09-16 2018-03-22 John R. White Augmented reality surgical technique guidance
EP3523783A4 (en) 2016-10-05 2019-10-16 Magic Leap, Inc. SYSTEMS AND METHOD FOR SURFACE MODELING
US11290572B2 (en) 2016-11-07 2022-03-29 Constructive Labs System and method for facilitating sharing of virtual three-dimensional space
US10271043B2 (en) 2016-11-18 2019-04-23 Zspace, Inc. 3D user interface—360-degree visualization of 2D webpage content
US10599823B2 (en) * 2016-11-18 2020-03-24 Invensense, Inc. Systems and methods for coordinating applications with a user interface
US20180150204A1 (en) 2016-11-30 2018-05-31 Google Inc. Switching of active objects in an augmented and/or virtual reality environment
WO2018176010A2 (en) 2017-03-24 2018-09-27 Inmentis, Llc Social media system with navigable, artificial-intelligence-based graphical user interface with broadcasting
CA3060209A1 (en) 2017-05-01 2018-11-08 Magic Leap, Inc. Matching content to a spatial 3d environment
US10304251B2 (en) * 2017-06-15 2019-05-28 Microsoft Technology Licensing, Llc Virtually representing spaces and objects while maintaining physical properties
US10719870B2 (en) 2017-06-27 2020-07-21 Microsoft Technology Licensing, Llc Mixed reality world integration of holographic buttons in a mixed reality device
US20190005724A1 (en) 2017-06-30 2019-01-03 Microsoft Technology Licensing, Llc Presenting augmented reality display data in physical presentation environments
US10444975B2 (en) 2017-07-18 2019-10-15 Google Llc Graphical icon manipulation
US10803663B2 (en) * 2017-08-02 2020-10-13 Google Llc Depth sensor aided estimation of virtual reality environment boundaries
CN111684495A (zh) 2017-12-22 2020-09-18 奇跃公司 用于在混合现实系统中管理和显示虚拟内容的方法和系统
IL301281A (en) 2018-02-22 2023-05-01 Magic Leap Inc Shoot an object with physical manipulation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7455985B2 (ja) 2020-02-10 2024-03-26 マジック リープ, インコーポレイテッド 複合現実環境における3次元コンテナに対する身体中心コンテンツ位置付け

Also Published As

Publication number Publication date
IL275461B2 (en) 2023-07-01
IL275461A (en) 2020-08-31
KR102556889B1 (ko) 2023-07-17
CN111684495A (zh) 2020-09-18
IL300465A (en) 2023-04-01
KR20230108356A (ko) 2023-07-18
US20230386154A1 (en) 2023-11-30
EP3729382A1 (en) 2020-10-28
IL275461B1 (en) 2023-03-01
CA3084149A1 (en) 2019-06-27
KR20200100150A (ko) 2020-08-25
US11024086B2 (en) 2021-06-01
EP3729382A4 (en) 2021-01-20
JP7196179B2 (ja) 2022-12-26
US20190197785A1 (en) 2019-06-27
JP7476292B2 (ja) 2024-04-30
WO2019126238A1 (en) 2019-06-27
AU2018388581A1 (en) 2020-07-23
US11830151B2 (en) 2023-11-28
JP2023036711A (ja) 2023-03-14
US20210248831A1 (en) 2021-08-12

Similar Documents

Publication Publication Date Title
JP7476292B2 (ja) 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム
US11386623B2 (en) Methods, systems, and computer program product for managing and displaying webpages in a virtual three-dimensional space with a mixed reality system
US11425220B2 (en) Methods, systems, and computer program products for implementing cross-platform mixed-reality applications with a scripting framework
CN103324393B (zh) 用于应用实体的3d用户接口
US11609675B2 (en) Placement of objects in an augmented reality environment
US20230333864A1 (en) Management framework for mixed reality devices
JPH10507020A (ja) 電子ファイル・システムにおける情報アクセスのためのユーザ画定可能な図形インターフェース
US11887229B2 (en) Method and system for populating a digital environment using a semantic map
Liu et al. Handheld vs. head-mounted AR interaction patterns for museums or guided tours
US20240126406A1 (en) Augment Orchestration in an Artificial Reality Environment
US20240137417A1 (en) Methods, systems, and computer program products for implementing cross-platform mixed-reality applications with a scripting framework
Zhang Virtual reality application in data visualization and analysis
Blackman et al. The Unity Editor
CN116600173A (zh) 元宇宙直播间的虚拟资源的编辑方法、装置、设备及介质

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
R150 Certificate of patent or registration of utility model

Ref document number: 7196179

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150