本開示の例示的な実施形態の特徴および利点は、以下の添付の図面を考慮に入れて、以下の詳細な説明から明らかになるであろう。
添付の図面全体を通して、同様の特徴が同様の参照番号によって識別されることに留意されたい。
以下の記載は、本開示の例示的な実施形態を個別にまたは組み合わせて含む、例示的なシステム、方法、技法、命令シーケンス、およびコンピューティングマシンプログラム製品を説明する。以下の記載では、説明の目的で、発明的主題の様々な実施形態の理解を提供するために、多数の特定の詳細が示されている。しかしながら、発明的主題の様々な実施形態がこれらの特定の詳細なしで実施され得ることは、当技術分野の当業者には明らかであろう。
本明細書の説明全体を通して使用される「コンテンツ(content)」という用語は、画像、ビデオ、オーディオ、テキスト、3Dモデル(例えば、テクスチャ、マテリアル、メッシュなどを含む)、アニメーション、ベクタグラフィックス(vector graphics)などを含む、あらゆる形態のメディアコンテンツアイテムを含むと理解されるべきである。
本明細書の説明全体を通して使用される「ゲーム」という用語は、デバイス上でビデオゲームを実行および提示するビデオゲームおよびアプリケーション、ならびにデバイス上でシミュレーションを実行および提示するアプリケーションを含むと理解されるべきである。「ゲーム」という用語は、デバイス上でゲームを作成および実行するために使用されるプログラミングコード(ソースコードまたは実行可能バイナリコードのいずれか)を含むことも理解されるべきである。
本明細書の説明全体を通して使用される「環境」という用語は、2Dデジタル環境(例えば、2Dビデオゲーム環境、2Dシミュレーション環境、2Dコンテンツ作成環境など)、3Dデジタル環境(例えば、3Dゲーム環境、3Dシミュレーション環境、3Dコンテンツ作成環境、仮想現実環境など)、およびデジタル(例えば、仮想)コンポーネントと実世界コンポーネントの両方を含む拡張現実環境を含むと理解されるべきである。
本明細書の説明全体を通して使用される「デジタルオブジェクト(digital object)」という用語は、環境内の任意のデジタルオブジェクトまたはデジタル要素を含むと理解される。デジタルオブジェクトは、環境内のほぼすべてのものを(例えば、対応するデータ構造で)表現することができ、それは、3Dモデルテクスチャ、背景(例えば、地形、空など)、ライト(lights)、カメラ、エフェクト(例えば、サウンドおよびビジュアル)、アニメーションなどを伴う、3Dモデル(例えば、キャラクタ、武器、シーン要素(例えば、建物、木、車、宝物など))を含む。「デジタルオブジェクト」という用語はまた、個々のデジタルオブジェクトのリンクされたグループを含むとも理解され得る。デジタルオブジェクトは、オブジェクトのプロパティと挙動とを説明するデータに関連付けられている。
本明細書の説明全体を通して使用される「アセット(asset)」、「ゲームアセット」、および「デジタルアセット」という用語は、デジタルオブジェクトを説明するために使用することができる、またはデジタルプロジェクト(例えば、ゲーム、映画、ソフトウェアアプリケーションを含む)の態様を説明するために使用することができる任意のデータを含むと理解される。例えば、アセットには、画像、3Dモデル(テクスチャ、リギング(rigging)など)、3Dモデルのグループ(例えば、シーン全体)、オーディオサウンド、ビデオ、アニメーション、3Dメッシュなどのためのデータを含めることができる。アセットを記述するデータは、ファイル内に格納されてもよく、ファイルのコレクション内に含まれてもよく、1つのファイル(例えば、圧縮ファイル)に圧縮されて格納されてもよく、または、メモリ内に格納されてもよい。アセットを記述するデータを使用して、ランタイム時にゲーム内の1つまたは複数のデジタルオブジェクトをインスタンス化することができる。
本明細書の説明全体を通して使用される「ランタイム(runtime)」という用語は、プログラム(例えば、アプリケーション、ビデオゲーム、シミュレーションなど)がランされている(running)かまたは実行している(例えば、プログラミングコードを実行している)時間を含むと理解されるべきである。この用語は、人間のユーザによって、または人工知能エージェントによってビデオゲームがプレイされている時間を含むと理解されるべきである。
本明細書の説明全体を通して使用される「クライアント」および「アプリケーションクライアント」という用語は、ネットワークを介したアクセスを含む、サーバ上のデータおよびサービスにアクセスすることができるソフトウェアクライアントまたはソフトウェアアプリケーションを含むと理解される。
本明細書の説明全体を通して、「複合現実」(MR : mixed reality)という用語は、仮想現実(VR : virtual reality)、拡張現実(AR : argmented reality)および拡張仮想(augmented virtuality)を含む、現実と仮想現実との間のスペクトル(spectrum)におけるすべての組み合わされた環境を含むと理解されるべきである。
比較的小型のデバイス上で大型の3Dモデルを視覚化する問題の解決策を提供することには、いくつかの課題がある。1つの課題は、デバイスで使用可能なメモリの合計よりも大型の3Dモデルを表示する能力に関する。別の課題は、グラフィックス能力が制限されているデバイス上でモデルを表示するときに、許容可能なフレームレートを維持する能力に関する。さらに別の課題は、ネットワークを介した3Dモデルデータの転送に関し得る。例えば、3Dモデルが、ネットワーク接続を介してすべてのデータを妥当な時間内に転送するとは考えられないほど大型になり得る(例えば、意味のあるデータをすばやく表示するために、モデルに含まれるオブジェクトを、ライブカメラビデオのフィードと組み合わせて表示できるように)。
これらの課題は、建築、エンジニアリング、建設、自動車、輸送、製造、医療など、大型3Dモデルを視覚化する必要があるドメインで生じる。これらの課題は、動的コンテンツに基づくビデオゲームのコンテキスト(context)でも生じる。例えば、オープンワールド(open-world)のビデオゲームは、メモリに制約のあるデバイス上で(例えば、大型3Dモデルで表現される)大きな世界を表示する必要があるため、同様の課題に直面する。世界をタイルにスライスし、すべてのジオメトリ、マテリアル、およびテクスチャをこれらのタイルにベイク処理してから、タイルをリモートデバイスにダウンロードするのが一般的な解決策である。それは、ビデオゲームの場合に適用できる。なぜなら、ゲームの世界は事前にわかっており、プレーヤの経路を予測できて、予想される瞬間に隣接するタイルの読み込みがトリガされるからである。この方法は、世界(例えば、大型3Dモデル)が事前にわからない場合や絶えず変化している場合、またはモデルを見ているユーザがあらゆる時間のあらゆる位置にランダムに移動できる場合には使用することはできない。タイル処理とベイク処理は、見ている3Dモデルがセッションごとに変化し、(例えば、エンジニア、設計者、建築家、顧客などによってなされる変更により)3Dモデル自体のコンテンツも変化するため、産業用途にはあまり適していない。
別の解決策は、サーバとリモートデバイスとの間で広いネットワーク帯域幅が利用可能である間に、3Dモデル全体を(例えば、サーバから)リモートデバイスのローカルストレージにコピーすることに関し得る。これには、リモートデバイスの大量のストレージを使い果たすこと、使用されない可能性のあるデータを転送すること(例えば、ユーザが3Dモデルの一部のみを視覚化する場合)、データがサーバで変更された場合にリモートデバイスで古いデータになること、という欠点がある。さらに、この解決策は、3Dモデルデータがリモートデバイスのローカルストレージに収まらない場合にはうまくいかない。
この問題の回避策は、3Dモデルをすべての方向で制限するクリッピングボックス(clipping box)を作成することである。これにより、クリッピングボックス内に収まらないものをすべてクリッピングすることにより、リモートデバイス上に表示する必要のあるジオメトリ、マテリアル、およびテクスチャのサイズが縮小される。このアプローチの欠点は、大型モデルの一部しか一度に視覚化できないことである。大型3Dモデルをより小型の3Dモデルにカットして、複数の不連続なエクスペリエンスを作成するには、複数のクリッピングボックスを作成する必要がある。
デバイス上にデジタルオブジェクトを表示する方法を開示する。3Dモデル内の一組のデジタルオブジェクトに対して、一組の固有の識別子と関連付けられている複数の位置と(a set of unique identifiers and associated positions)をダウンロードする。一組のデジタルオブジェクトの位置に対する仮想カメラの位置および向きを決定する。一組のデジタルオブジェクトの各デジタルオブジェクトについての可視性スコアを、仮想カメラの位置および向きに対するデジタルオブジェクトの位置に基づいて計算する。可視性スコアが最も高いデジタルオブジェクトに関連付けられているポリゴンメッシュを、そのポリゴンメッシュが存在していないことに基づいてダウンロードする。そのダウンロードでは、そのポリゴンメッシュに関連付けられている一組の固有の識別子のうちの固有の識別子を使用する。スコアが最も高いデジタルオブジェクトのポリゴンメッシュを、ディスプレイデバイス上でレンダリングして表示する。
本発明は、これらの方法を実行するデータ処理システムと、データ処理システム上で実行されるとシステムにこれらの方法を実行させるコンピュータ可読媒体とを含む、本明細書に記載の1つまたは複数の動作または動作のうちの1つまたは複数の組み合わせを実行する装置を含み、それら動作または動作の組み合わせは、非定型または非従来型の動作を含む。
本明細書に記載のシステムおよび方法は、例えば、それらがエンジニアおよびアーティストに多くの価値ある利益を提供することから、個別に、または1つまたは複数の追加のコンポーネントまたは動作と組み合わせた場合に、非定型または非従来型の1つまたは複数のコンポーネントまたは動作を含む。例えば、本明細書に記載のシステムおよび方法は、電話、タブレット、またはヘッドセットなどの限られたメモリ、グラフィックス、およびネットワーク能力を備えたデバイス上で大きな(例えば、ほぼ無限の)サイズの3Dモデルのビューイングを可能にし、そのビューイングは離れた場所で行われる。別の例として、本明細書に記載のシステムおよび方法は、3Dモデル内のオブジェクトのダウンロード順序を決定することによって大型3Dモデルの表示を単純化し、そのダウンロードは、リモートデバイス上の仮想カメラの位置および向き(例えば、物理的構造に対する位置および向き、またはGPS位置など)に基づいてサーバからリモートデバイスに行われる。別の例として、本明細書に記載のシステムおよび方法は、ポリゴンメッシュ、マテリアル、およびテクスチャがローカルメモリで利用可能になるのを待っている間、モデル内のオブジェクトのプレビュー内のプレースホルダ(placeholders)として最小バウンディングボックス(minimum bounding boxes)を表示することにより、大型3Dモデルの表示を単純化する。そのプレビューは、オブジェクトの色を表す色を使用して最小バウンディングボックスに色を付けることにより、任意選択で強調することができる。
ここで図面に目を向けると、本発明の実施形態による、リモートデバイス上に大型3Dモデルを表示するための、非定型もしくは非従来型のコンポーネントもしくは動作、またはそのようなコンポーネントもしくは動作の組み合わせを含む、システムおよび方法が図示されている。したがって、図1Aは、例示的なMRデジタルモデルディスプレイシステム100と、MRデジタルモデルディスプレイシステム機能をユーザ102に提供するように構成された関連デバイスとの図である。例示的な実施形態では、MRデジタルモデルディスプレイシステム100は、ユーザ102によって操作され得るMRデジタルモデルディスプレイデバイス104と、ネットワーク150(例えば、セルラーネットワーク、Wi‐Fiネットワーク、インターネットなど)を介してネットワーク通信で結合されたMRデジタルモデルディスプレイサーバデバイス130と、を含む。いくつかの実施形態では、MRデジタルモデルディスプレイデバイス104は、複合現実エクスペリエンスをユーザ102に提供することができる、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、ヘッドマウント仮想現実(VR)デバイス、またはヘッドマウント拡張現実(AR)デバイスなどのモバイルコンピューティングデバイスである。他の実施形態では、MRデジタルモデルディスプレイデバイス104は、複合現実エクスペリエンスをユーザ102に提供することができる、デスクトップコンピュータなどのコンピューティングデバイスである。
例示的な実施形態では、MRデジタルモデルディスプレイデバイス104は、1つまたは複数の中央処理装置(CPU : central processing unit)106と、グラフィックス処理装置(GPU : graphics processing unit)108と、を含む。処理デバイス106は、任意のタイプのプロセッサであり、複数の処理要素(図示せず)を含むプロセッサアセンブリであり、メモリ122にアクセスして、そこに格納された命令を取得し、その命令を実行する。その命令の実行時に、命令は、処理デバイス106に、図2を参照して本明細書で説明されるように一連のタスクを実行させることを実現する。MRデジタルモデルディスプレイデバイス104はまた、ネットワーク150を介して通信するための1つまたは複数のネットワークデバイス112(例えば、有線または無線ネットワークアダプタ)を含む。MRデジタルモデルディスプレイデバイス104は、動作中にユーザ102の近くの実世界のデジタルビデオを撮像するように構成され得る1つまたは複数のカメラデバイス114をさらに含む。MRデジタルモデルディスプレイデバイス104はまた、全地球測位システム(GPS : global position system)受信機(例えば、MRデジタルモデルディスプレイデバイス104のGPS位置を決定するため)、生体センサ(例えば、ユーザ102の生体測定データを取得するため)、動きまたは位置センサ(例えば、ユーザ102、MRデジタルモデルディスプレイデバイス104または他のオブジェクトの位置データを取得するため)、またはオーディオマイクロフォン(例えば、音声データを取得するため)などの1つまたは複数のセンサ116を含んでもよい。一部のセンサ116は、MRデジタルモデルディスプレイデバイス104の外部にあってもよく、MRデジタルモデルディスプレイデバイス104と無線通信するように構成されてもよい(例えば、マイクロソフト社(Microsoft)のKinect(登録商標)、Vive Tracer(登録商標)、MITのLidarセンサ、またはMITのワイヤレス感情検出器(wireless emotion detector))。
MRデジタルモデルディスプレイデバイス104はまた、処理デバイス106によって読み取り可能なデータ信号の形態で情報を入力するための、例えば、キーボードまたはキーパッド、マウス、ポインティングデバイス、タッチスクリーン、ハンドヘルドデバイス(例えば、ハンドモーショントラッキングデバイス)、マイクロフォン、カメラなどの1つまたは複数の入力デバイス118を含む。MRデジタルモデルディスプレイデバイス104は、タブレットもしくはスマートフォンのタッチスクリーン、またはVRもしくはAR HMDのレンズもしくはバイザー(visor)などの1つまたは複数のディスプレイデバイス120をさらに含み、これらは、仮想オブジェクトを実世界の景色と組み合わせてユーザ102に表示するように構成され得る。
MRデジタルモデルディスプレイデバイス104はまた、図2に関して説明したような動作を実行するように構成されたクライアントMRデジタルモデルディスプレイモジュール(「クライアントモジュール」)124を格納するように構成されたメモリ122を含む。メモリ122は、ランダムアクセスメモリ、読み取り専用または書き換え可能なメモリ、内部プロセッサキャッシュなどの任意のタイプのメモリデバイスとすることができる。一実施形態によれば、図1Aには示されていないが、メモリ122は、大量のデータを格納するためのローカルストレージデバイス(例えば、ハードディスクドライブ、SSDドライブ、およびメモリスティックを含む)と、データをすばやく取得するためのローカルキャッシュメモリ(例えば、RAMメモリ、GPUメモリ、CPUキャッシュ)と、にさらに分けられてもよい。
一実施形態によれば、メモリ122は、ディスプレイデバイス120と、また、入出力デバイス118などの他のハードウェアとも通信して複合現実環境をユーザ102に提示するゲームエンジン(例えば、CPU106またはGPU108によって実行される)も格納し得る。ゲームエンジン(図1Aには示されていない)は、典型的には、以下を提供する1つまたは複数のモジュールを含む。すなわち、仮想環境およびその中のデジタルオブジェクトのシミュレーション(例えば、デジタルオブジェクトのアニメーション、デジタルオブジェクトのアニメーション物理的現象、デジタルオブジェクトの衝突検出などを含む)、ディスプレイデバイス120を介して完全または部分的な仮想環境(例えば、ビデオゲーム環境またはシミュレーション環境を含む)をユーザに提供するための、仮想環境およびその中のデジタルオブジェクトのレンダリング、ネットワーキング、サウンドなど。一実施形態によれば、仮想環境のシミュレーションおよびレンダリングは分離され得、それぞれが独立して同時に実行され、その結果、レンダリングは常に仮想環境の最近の状態および仮想環境の現在の設定を使用して、インタラクティブなフレームレートでの視覚的表現を生成し、およびそれとは独立して、シミュレーションステップは、少なくともいくつかのデジタルオブジェクトの状態を(例えば、別のレートで)更新する。
例示的な実施形態によれば、カメラデバイス114およびセンサ116は、デバイス104を取り巻く環境(ビデオ、オーディオ、深度情報、GPS位置など)からデータを取得する。一実施形態によれば、クライアントMRデジタルモデルディスプレイモジュール124は、センサデータを直接分析するように、または外部のモジュール、アプリケーション、またはサービスによって処理され得る処理済みセンサデータを分析するように構成され得る。例えば、処理済みセンサデータは、オペレーティングシステムアプリケーションまたはSDK(例えば、ARCore(登録商標)およびARKit(登録商標))によって提供される、検出され識別されたオブジェクトのリアルタイムリスト、オブジェクト形状データ、深度マップなどを含んでもよい。
一実施形態によれば、MRデジタルモデルディスプレイサーバ130は、サーバMRデジタルモデルディスプレイモジュール(「サーバモジュール」)134を格納するメモリ132を含む。動作中、クライアントMRデジタルモデルディスプレイモジュール124およびサーバMRデジタルモデルディスプレイモジュール134は、図2に関して本明細書で説明される様々なMRデジタルモデル表示機能を実行する。より具体的には、いくつかの実施形態では、いくつかの機能は、図2に詳述される方法200に関して具体的に説明されるように、クライアントモジュール124内に実装され得、他の機能は、サーバモジュール134内に実装され得る。
一実施形態によれば、図1Bに示されるように、MRデジタルモデルディスプレイデバイス104は、拡張現実(AR)または仮想現実(VR)バイザー(例えば、Google Glass(登録商標)、HTC Vive(登録商標)、マイクロソフト社(Microsoft)のHoloLens(登録商標)、Playstation VR(登録商標)、Oculus Rift(登録商標)など)といった、ユーザ102が着用するヘッドマウントディスプレイ(HMD : head‐mounted desplay)デバイスである。例示的な実施形態では、ユーザ102(例えば、建設エンジニア)は、HMD MRデジタルモデルディスプレイデバイス104を着用している間に、VR環境または拡張現実(AR)環境を体験する。動作中、例示的な実施形態では、HMD MRデジタルモデルディスプレイデバイス104は、図1Bに示されるように、着用者102の頭部に、かつ着用者102の両眼の上に取り付けられる。着用者102は、本明細書に記載されるように、HMD104およびハンドヘルドデバイスを介して表示および編集され得る仮想環境を提示され得る。HMD MRデジタルモデルディスプレイデバイス104は、着用者102が自身の周囲(本明細書では「実世界」とも呼ばれる)を見ることができる透明または半透明のバイザー(または「1つのレンズ」または「複数のレンズ」)124を含む。他の実施形態(図1Bには示されていない)では、HMD MRデジタルモデルディスプレイデバイス104は、着用者102の実世界の景色を覆い隠し得、完全な仮想環境が表示される(例えば、カメラデバイス114からのビデオを使用して実世界を表現することを含む)不透明なバイザー124を含み得る。
一実施形態によれば、図1Bに示されるHMD MRデジタルモデルディスプレイデバイス104は、図1Aに関連して論じられたMRデジタルモデルディスプレイデバイス104と同様のコンポーネントを含む。例えば、図1Bに示されるHMD MRデジタルモデルディスプレイデバイス104は、ディスプレイデバイス120、ネットワーキングデバイス112、カメラデバイス114、CPU106、GPU108、メモリ122、センサ116、および1つまたは複数の入力デバイス118(図1Bには明示的に示されていない)を含む。例示的な実施形態では、ディスプレイデバイス120は、グラフィックス(例えば、仮想オブジェクト)をバイザー124上にレンダリングし得る。したがって、バイザー124は、ディスプレイデバイス120の出力がその上に現れる「スクリーン」または表面として機能し、それを通して着用者102は仮想コンテンツを体験する。ディスプレイデバイス120は、1つまたは複数のグラフィック処理ユニット(GPU)108によって駆動または制御され得る。GPU108は、ディスプレイデバイス120を介した出力のレンダリングを高速化するのを支援するグラフィック出力の態様を処理する。いくつかの実施形態によれば、ディスプレイデバイス120は、バイザー124を含み得る。
いくつかの実施形態では、MRデジタルモデルディスプレイデバイス104上のデジタルカメラデバイス(または単に「カメラ」)114は、着用者102の視野(FOV : field of view)の少なくとも一部を撮像するように向けられた前向きビデオ入力デバイスである。換言すれば、カメラ114は、HMDデバイス104の向きに基づいて実世界の画角を撮像する、または「見る」(例えば、着用者102がバイザー124を通して見たときに着用者102のFOVで見るものと同様である)。カメラデバイス114は、着用者102の周りの実世界のデジタルビデオ(例えば、視野、周辺景色、または着用者102の周りの360°眺望)を撮像するように構成され得る。いくつかの実施形態では、デジタルカメラデバイス114からの出力は、バイザー124に投影され得(例えば、不透明なバイザーの実施形態において)、また、追加の仮想コンテンツ(例えば、カメラ出力に追加される)を含み得る。いくつかの実施形態では、また、周囲の深度情報を取得する、HMD104上の深度カメラが有ってもよい。
いくつかの実施形態では、図1Bに示されるHMD MRデジタルモデルディスプレイデバイス104は、1つまたは複数のセンサ116を含み得るか、またはセンサとの有線または無線通信で結合され得る。例えば、HMD MRデジタルモデルディスプレイデバイス104は、HMD104の位置または向きを決定するように構成された動きまたは位置センサを含んでもよい。いくつかの実施形態では、HMD MRデジタルモデルディスプレイデバイス104は、オーディオ入力(例えば、ユーザ102の話し声)を取得するためのマイクロフォンを含み得る。
いくつかの実施形態では、ユーザ102は、ハンドトラッキングデバイス(hand tracking devices)(「ハンドヘルド(handhelds)」)(図1Bには別個に示されていない)(例えば、片手に1つずつ)を含む1つまたは複数の入力デバイス118を保持し得る。ハンドヘルドは、ユーザの手の絶対的または相対的な位置および向きに関する情報を提供し、そのため、手のジェスチャ情報を取得することが可能である。ハンドヘルドは、HMD MRデジタルモデルディスプレイデバイス104で直接動作するように構成され得る(例えば、有線または無線通信を介して)。いくつかの実施形態では、ハンドヘルドは、Oculus Touch(登録商標)ハンドコントローラ、HTC Vive(登録商標)ハンドトラッカー、またはPlaystation VR(登録商標)ハンドコントローラであり得る。ハンドヘルドはまた、ハンドヘルドに組み込まれた1つまたは複数のボタンまたはジョイスティックを含み得る。他の実施形態では、ユーザ102は、マヌスVR社(Manus VR)(オランダ)によって市販されているものなど、1つまたは複数のウェアラブルハンドトラッキングデバイス(例えば、モーショントラッキンググローブ、図示せず)を着用し得る。さらに他の実施形態では、ユーザ102の手の動きは、ハンドヘルドまたはウェアラブルハンドトラッキングデバイスなしで、またはそれに加えて、例えば、リープモーション社(Leap Motion,Inc.)(カリフォルニアの企業)によって市販されているものなどのハンド位置センサ(図示せず、例えば、ユーザの手の位置および向きを追跡する方法を使用して)を介して追跡し得る。そのようなハンドトラッキングデバイス(例えば、ハンドヘルド)は、動作中にユーザ102の1つまたは複数の手の位置を追跡する。
いくつかの実施形態では、MRデジタルモデルディスプレイシステム100および本明細書に記載の様々な関連ハードウェアおよびソフトウェアコンポーネントは、VRコンテンツの代わりに、またはそれに加えて(例えば、複合現実(MR)環境において)ARコンテンツを提供し得る。本明細書に記載のシステムおよび方法(例えば、図2に関して)は、ARコンテンツを用いて実行し得、したがって、本開示の範囲は、ARおよびVRアプリケーションの両方をカバーすることを理解されたい。
一実施形態によれば、図2は、リモートデバイス上に大型3Dモデルを表示するための方法200を示している。一実施形態によれば、方法200は、図1Aおよび図1Bに示されるように、MRデジタルモデルディスプレイシステム100を使用し得る。様々な実施形態では、示される方法要素のいくつかは、示されるものとは異なる順序で同時に実行されてもよく、または省略されてもよい。一実施形態によれば、大型3Dモデルは、一組のオブジェクトを含み得、サーバ(例えば、MRデジタルモデルディスプレイサーバ130など)上でホスト(例えば、格納)され得る。一実施形態によれば、大型3Dモデルは、多数の3Dオブジェクト(例えば、数千、数百万以上)を含み得るか、大容量の空間を占有するか、またはその両方であり得る。例えば、大型3Dモデルは、大きな構造物(例えば、建設現場、スポーツスタジアム)、または広い領域をカバーし、かつ、建築家、エンジニア、建設労働者、メンテナンスクルー、所有者、テナント、または見込み購入者が方法200を使用して視覚化し得る、より多数の小さなオブジェクトを含む建物を表現し得る。別の例では、大型3Dモデルは、自動車、ボート、電車、飛行機、または多数の部品を含んでおりかつエンジニアによって設計されているかまたは方法200を使用して販売員または見込み購入者によって視覚化されている任意の車両を表現し得る。一実施形態によれば、リモートデバイスは、MRデジタルモデルディスプレイデバイス104であり得る。ここで、「多」数または大サイズは、所定のまたは構成可能なカウント閾値またはサイズ閾値などの、カウント閾値またはサイズ閾値を超える数またはサイズであり得る。
一実施形態によれば、方法200の動作202において、サーバMRデジタルモデルディスプレイモジュール134は、サーバ130上の3Dモデルに含まれる各3Dオブジェクト用の3Dオブジェクトデータを受信して(例えば、サーバ130上のメモリ132に)格納する。一実施形態によれば、3Dオブジェクトデータは、3D作成ソフトウェア、アプリケーション、またはモジュールを使用して、作成者(例えば、アーティスト、エンジニア、建築家など)によって作成され得る。3Dオブジェクトデータは、固有の識別子、位置、向き、メタデータ、およびレンダリングデータを含み得る。3Dモデル内の3Dオブジェクトの位置および向きは、その3Dモデル内のその3Dオブジェクトの位置および方向を説明し得る(例えば、モデル座標系または世界座標系(world coordinate system)を使用して)。一実施形態によれば、固有の識別子は、任意の英数字値を含み得る。一実施形態によれば、レンダリングデータは、ポリゴンメッシュ、マテリアルデータ(例えば、色、テクスチャ、透明度および反射率データを含む)などを含む、3Dオブジェクトをレンダリングするために使用されるデータを含む。一実施形態によれば、メタデータは、CAD(computer-aided design : コンピュータ支援設計)内で使用される既知のデータフォーマットに対応する3Dオブジェクトを記述するデータを含み得る。例えば、メタデータは、BIM(building information modeling : ビルディングインフォメーションモデリング)フォーマットであり得る。一実施形態によれば、動作202に格納されたデータは、いつでも(例えば、方法200の実行中のいつでも)修正または更新されて、(例えば、建設計画の変化に基づいて)3Dモデルの変化を表現し得る。
一実施形態によれば、方法200の動作204において、クライアントMRデジタルモデルディスプレイモジュール124は、3Dモデル内の一組の格納された3Dオブジェクトの固有の識別子および関連付けられている位置データ(向きデータを含み得る)をダウンロードする。例えば、3Dモデル内に含まれるすべての格納された3Dオブジェクトの固有の識別子および関連付けられている位置データ(向きデータを含み得る)は、動作204の一部としてダウンロードされ得る。一実施形態によれば、動作204の一部として、識別子および位置データ(向きデータを含み得る)のみが3Dオブジェクトのためにダウンロードされる(例えば、BIMなどのメタデータ、およびポリゴンメッシュデータおよびマテリアルデータなどのレンダリングデータのダウンロードを除く)。別の実施形態によれば、動作204の一部として、識別子、位置データ(向きデータを含み得る)、およびメタデータのみが3Dオブジェクトのためにダウンロードされる(例えば、ポリゴンメッシュデータおよびマテリアルデータなどのレンダリングデータのダウンロードを除く)。
一実施形態によれば、方法200の動作206において、クライアントMRデジタルモデルディスプレイモジュール124は、3Dモデル内の3Dオブジェクトの位置に対する仮想カメラの位置および向きを決定する。一実施形態によれば、仮想カメラの位置および向きは、3Dモデル内の3Dオブジェクトの(例えば、向きを含み得る)位置(または、3Dモデルの位置)とともに、すべて、共通の座標系に関連付けられる。共通の座標系への関連付けは、本明細書に記載の方法200の外部の方法またはシステムによって実行され得る。例えば、共通の座標系には、緯度、経度、高度などのGPS情報によって与えられる座標が含まれ得る。
一実施形態によれば、仮想カメラの位置および向きは、サーバ130から事前定義された位置および事前定義された向きを受信することによって決定され得る。例えば、このワークフローは、設計ソフトウェアで「注目点(points of interest)」、「ウェイポイント(way points)」、または「視点(view points)」と典型的に呼ばれるものをサポートし、設計者は、設計ソフトウェアでカメラの位置および向きのペアを作成し、それらペアをサーバ130に公開し、これにより、見る者が方法200を使用して、事前定義されたカメラの位置および向きからシーンを見ることを可能にする。
一実施形態によれば、仮想カメラの位置および向きは、リモートデバイス104の位置および向き(例えば、リモートデバイス104の姿勢)を追跡し、仮想カメラ用のリモートデバイス104の追跡された位置および向きを使用することによって決定され得る。リモートデバイス104の位置および向きの決定は、デバイス上のセンサ116(例えば、GPS、Wi‐Fi、カメラ、加速度計、ジャイロスコープなど)からのデータを使用することによって達成され得る。一実施形態によれば、位置および向きの決定は、位置および向きを、3Dモデルおよびその中の3Dオブジェクトで共通の座標系に変換すること(例えば、デバイス104を3Dモデルと位置合わせすること)を含み得る。その変換(例えば、位置合わせ)は、方法200の外部のプロセスで行われ得る。
一実施形態によれば、仮想カメラの位置および向きは、仮想カメラが所定の制約を満たしながら3Dモデル内の最大数の3Dオブジェクトを見ることができるようにする仮想カメラの位置および向きを計算することによって決定され得る。その制約を使用して、ユーザが3Dモデルの良好な空間表現を取得できるデフォルトの位置を作成し得る。例えば、制約は、仮想カメラの位置が3Dモデルの外側にあるという要件、または位置が所定の高度(例えば、局所的な路面に対応する)にあるという要件などを含み得る。例えば、3Dモデルの建物全体を地上から見るための制約を選択してもよい。
一実施形態によれば、仮想カメラの位置および向きは、所定の経路(predetermined path)によって記述され得る。一実施形態によれば、所定の経路は、サーバ130上に格納され得る。一実施形態によれば、所定の経路は、リモートデバイス104を用いて(例えば、デバイス104がユーザによって経路に沿って移動されることによって)作成され得る。3Dモデルは依然として大きすぎて、リモートデバイス104に収まらないかまたは許容可能なフレームレートで表示されない可能性があるため、方法200とともに使用される場合、所定の経路が有用であり得る。さらに、3Dモデルは静的ではなく、設計プロセスの一部として(例えば、建築家やエンジニアによって)変更される可能性があるため、所定の経路は、異なる時間に異なるデータ(例えば、異なるオブジェクト)を示すことができる。
一実施形態によれば、動作206の一部として、仮想カメラの位置および向きの決定は、規則的または不規則的に実行され得る。例えば、位置および向きの決定は、規則的または不規則的な間隔で実行され得る。別の例として、位置および向きの決定は、構成可能な閾値を超える仮想カメラ(または追跡に基づくリモートデバイス)の動きによってトリガされ得る。
一実施形態によれば、方法200の動作208の一部として、クライアントMRデジタルモデルディスプレイモジュール124は、3Dモデル内の3Dオブジェクトのそれぞれについて可視性スコア(visibility score)を計算する。3Dオブジェクトについての可視性スコアは、仮想カメラの位置および向きに対する3Dオブジェクトの位置に基づき得る。3Dオブジェクトについての可視性スコアは、仮想カメラの位置および向きに対する3Dオブジェクトの向きに基づき得る。一実施形態によれば、3Dオブジェクトについての可視性スコアは、仮想カメラからの3Dオブジェクトの距離に部分的に基づき得る(例えば、より仮想カメラに近い3Dオブジェクトは、より高いスコアを有し得る)。一実施形態によれば、可視性スコアは、3Dオブジェクトのサイズに部分的に基づき得る(例えば、より大きなオブジェクトは、より高いスコアを有し得る)。3Dオブジェクトのサイズは、3Dオブジェクトに関連付けられているメタデータを使用するか、または3Dオブジェクトに関連付けられているバウンディングボックスを使用して決定され得る。一実施形態によれば、3Dオブジェクトについての可視性スコアは、仮想カメラの位置および向きから見たオブジェクトのオクルージョン(occlusion)の量(例えば、隠された表面積または体積のパーセンテージとして測定される)に部分的に基づき得る。例えば、よりオクルージョンが少ない3Dオブジェクトは、よりオクルージョンが多い3Dオブジェクトよりも可視性スコアが高くなり得る。一実施形態によれば、3Dオブジェクトのオクルージョンの量は、3Dオブジェクトについてのメタデータおよびバウンディングボックスデータまたはメタデータもしくはバウンディングボックスデータとともに、カメラおよび3Dオブジェクトの位置データを使用して決定され得る。一実施形態によれば、3Dオブジェクトについての可視性スコアは、仮想カメラのレンダリング錐台ビュー(rendering frustum view)内の3Dオブジェクトの位置に部分的に基づき得る。例えば、仮想カメラのレンダリング錐台ビュー画面の中心近くの3Dオブジェクトは、仮想カメラのレンダリング錐台ビュー画面の端近くの3Dオブジェクトよりも高い可視性スコアを持ち得る。一実施形態によれば、可視性スコアは、画面の高さに対する画面座標(例えば、仮想カメラの錐台ビュー画面)における3Dオブジェクトの相対的な高さに部分的に基づき得る。3Dオブジェクトの相対的な高さは、3Dオブジェクトに関連付けられているメタデータおよびバウンディングボックスデータまたはメタデータもしくはバウンディングボックスデータを使用して決定され得る。一実施形態によれば、可視性スコアは、画面の幅に対する画面座標(例えば、仮想カメラの錐台ビュー画面)における3Dオブジェクトの相対的な幅に部分的に基づき得る。3Dオブジェクトの相対的な幅は、3Dオブジェクトに関連付けられているメタデータおよびバウンディングボックスデータまたはメタデータもしくはバウンディングボックスデータを使用して決定され得る。一実施形態によれば、可視性スコアは、画面の面積に対する画面座標(例えば、仮想カメラの錐台ビュー画面)における3Dオブジェクトの相対的な面積に部分的に基づき得る。3Dオブジェクトの相対的な面積は、3Dオブジェクトに関連付けられているメタデータおよびバウンディングボックスデータまたはメタデータもしくはバウンディングボックスデータを使用して決定され得る。
一実施形態によれば、動作208の一部として、可視性スコアの決定は、規則的または不規則的に実行され得る。例えば、可視性スコアの決定は、規則的または不規則的な期間に実行され得る。別の実施形態によれば、可視性スコアの決定は、トリガに基づいて実行され得、トリガは、設定可能な閾値を超える仮想カメラ(または追跡に基づくリモートデバイス)の動きに基づき得る。したがって、可視性スコアの新しいセットが時間の経過とともに生成され得る(例えば、動作210、212、213、214、216、218、および220によって使用され得る)。
一実施形態によれば、方法200の動作210の一部として、クライアントMRデジタルモデルディスプレイモジュール124は、可視性スコアが最も高い、レンダリングされていない3Dオブジェクト(例えば、ディスプレイデバイス120上でレンダリングされていない3Dオブジェクト)用のレンダリングデータがローカルストレージ(例えば、メモリ122内)に存在するかどうかを判定する。方法200の動作212において、ローカルストレージにレンダリングデータが存在しないことに基づいて、クライアントMRデジタルモデルディスプレイモジュール124は、レンダリングされていない3Dオブジェクト用のレンダリングデータをサーバMRデジタルモデルディスプレイモジュール134からローカルストレージにダウンロードする。一実施形態によれば、動作212の間、クライアントMRデジタルモデルディスプレイモジュール124は、レンダリングされていない3Dオブジェクトに関連付けられている固有の識別子を使用して、サーバMRデジタルモデルディスプレイモジュール134からのレンダリングされていない3Dオブジェクト用のレンダリングデータを要求する。一実施形態によれば、動作212は、一度に複数のダウンロードが発生し得るように、非同期的に実行され得る。一実施形態によれば、方法の動作213において、クライアントMRデジタルモデルディスプレイモジュール124は、可視性スコアが次に高い、追加の3Dオブジェクト(additional 3D object)を判定することによって、動作210を再び実行する。一実施形態によれば、動作213は、動作210および動作212を介してループして、以下のリソース制限、すなわち、ローカルストレージに割り当てられたストレージの量が閾値を超えたこと、ローカルストレージに存在する3Dオブジェクトの数が閾値を超えたこと、または、MRデジタルモデルディスプレイデバイスによってダウンロードされたデータの量が閾値を超えたこと(なお、各閾値は、(例えば、開発者によって)所定または(例えば、管理者によって)設定可能である)のうちの1つが満たされるまで、可視性スコアが次に高い3Dオブジェクトを繰り返し検索およびダウンロードし得る(例えば、最も高いスコアから最も低いスコアまで)。一実施形態によれば、方法200は、リソース制限のうちの1つを満たしつつ、可視性スコアがより高い別の3Dオブジェクトがサーバ上に存在し、かつローカルストレージに存在しない場合、3Dオブジェクトに関連付けられているデータをローカルストレージから削除することを含み得る。
一実施形態によれば、方法200の動作214の一部として、クライアントMRデジタルモデルディスプレイモジュール124は、スコアが最も高い、レンダリングされていない3Dオブジェクト(例えば、ディスプレイデバイス120上でレンダリングされていない3Dオブジェクト)用のレンダリングデータがローカルスキャッシュメモリ(例えば、メモリ122内)に存在するかどうかを判定する。方法200の動作216において、ローカルキャッシュメモリにレンダリングデータが存在しないことに基づいて、クライアントMRデジタルモデルディスプレイモジュール124は、レンダリングされていない3Dオブジェクト用のレンダリングデータをローカルストレージからローカルキャッシュメモリにロードする。一実施形態によれば、動作216は、複数の3Dオブジェクトが一度にロードされ得るように、非同期的に実行され得る。一実施形態によれば、方法の動作218において、クライアントMRデジタルモデルディスプレイモジュール124は、可視性スコアが次に高い、追加のレンダリングされていない3Dオブジェクトをチェックすることによって動作214を再び実行する。一実施形態によれば、動作218は、動作214および動作216を介して、以下のリソース制限、すなわち、ローカルキャッシュメモリに割り当てられたメモリの量が閾値を超えたこと、ローカルキャッシュメモリに存在する3Dオブジェクトの数が閾値を超えたこと、または、表示画面120をリフレッシュするためのフレームレートが閾値を下回ったこと(なお、各閾値は、(例えば、開発者によって)所定または(例えば、管理者によって)設定可能である)のうちの1つが満たされるまで、可視性スコアが次に高い、レンダリングされていない3Dオブジェクトに対してループし得る(例えば、最も高いスコアから最も低いスコアまで)。
一実施形態によれば、方法200の一部として、動作210、212、および213は、動作214、216、および218と併合され得る。したがって、動作216において、決定された可視性スコアが最も高い3Dオブジェクトが、サーバ130からローカルメモリに直接ダウンロードされ得る。
一実施形態によれば、方法200の動作220の一部として、クライアントMRデジタルモデルディスプレイモジュール124は、レンダリングデータがローカルキャッシュメモリにある、可視性スコアが最も高い3Dオブジェクトをレンダリングして表示する。動作220の一部として、クライアントMRデジタルモデルディスプレイモジュール124は、3Dオブジェクト用のレンダリングデータ(例えば、ポリゴンメッシュ、マテリアルデータなど)を使用して、3Dオブジェクトをレンダリングする。一実施形態によれば、3Dオブジェクトは、ディスプレイデバイス120上に表示される。
一実施形態によれば、MRデジタルモデルディスプレイデバイス104は、MRデジタルモデルディスプレイサーバ130と同じデバイスであり得、ユーザが方法200を使用して同じデバイス上で大型3Dモデルをホスト(例えば、格納)および見ることを可能にする。
一実施形態によれば、MRデジタルモデルディスプレイデバイス104上のネットワーキングデバイス112およびMRデジタルモデルディスプレイサーバ130上のネットワーキングデバイス142は、セルラーデバイスであり得、3Dオブジェクトデータは、セルラーネットワークを介して転送され得る(例えば、動作204、212、および216中に)。このシナリオでは、VPN(virtual private network : 仮想プライベートネットワーク)を使用してローカルネットワーク経由で、またはインターネット経由でデータを転送することができる。
一実施形態によれば、MRデジタルモデルディスプレイサーバ130上のネットワーキングデバイス142は、ケーブルを使用して、3Dデータを、そのケーブルによって物理的に接続されているMRデジタルモデルディスプレイデバイス104上のネットワーキングデバイス112に転送し得る。
一実施形態によれば、MRデジタルモデルディスプレイデバイス104は、(例えば、図1Bに示されるように)複合現実デバイスであり得、動作220の一部として、MRデジタルモデルディスプレイデバイス104は、AR(拡張現実)またはVR(仮想現実)で大型3Dモデルを表示する。仮想カメラの位置および向きは、例えばジャイロスコープ、加速度計、およびカメラを含む、デバイス104上に存在する1つまたは複数のセンサ116によって決定される、MRデジタルモデルディスプレイデバイス104の位置および向き(例えば、姿勢)によって決定される。
一実施形態によれば、方法200の動作202は、大型3Dモデル内の各3Dオブジェクト用の最小バウンディングボックスを格納することを含む。一実施形態によれば、3Dオブジェクトの最小バウンディングボックスは、3Dオブジェクトの向き(例えば、3Dモデルまたは共通の座標に対する向き)を含む。一実施形態によれば、動作202はまた、バウンディングボックスの表現色(representative color)を格納することを含み得る。さらに、方法200の動作204は、固有の識別子、位置をダウンロードすること、および3Dオブジェクトの最小バウンディングボックスをダウンロードすることも含み得る。さらに、方法200の動作208は、最小バウンディングボックスの可視性スコアを計算することを含み得る。さらに、方法200の動作220は、レンダリングデータがローカルストレージに(例えば、動作212中に)ダウンロードされるのをまたはローカルメモリに(例えば、動作216中に)ロードされるのを待っている間、3Dオブジェクトの位置および向きで、デバイス104の画面上に3Dオブジェクトを表現する色で最小バウンディングボックスを表示することを含み得る。
一実施形態によれば、オブジェクト用のバウンディングボックスは、色で表示され得、色は、オブジェクト用のレンダリングデータのロード状態に基づく。例えば、第1の色は、オブジェクト用のレンダリングデータが完全ではないロード状態を表し得、第2の色は、オブジェクト用のレンダリングデータが現在のフレームに対して要求されるロード状態を表し得、第3の色は、オブジェクト用のレンダリングデータがバックログされる(backlogged)ロード状態を表し得、第4の色は、ロードエラーを表し得、第5の色は、オブジェクト用のレンダリングデータが削除されたロード状態を表し得る(例えば、リソース制限を満たしていることに基づいて)。
一実施形態によれば、方法200は、レンダリングデータとしてポリゴンメッシュデータを扱い得る。例えば、この方法は、サーバ130に格納し(例えば、動作202において)、サーバ130からデバイス104にダウンロードし(例えば、動作212)、ローカルキャッシュメモリにロードし(例えば、動作216)、3Dオブジェクト用のポリゴンメッシュに関連付けられているデータのみを表示し得る(例えば、動作220)。
一実施形態によれば、方法200は、レンダリングデータとしてポリゴンメッシュデータおよびマテリアルデータを扱い得る。例えば、この方法は、サーバ130に格納し(例えば、動作202において)、サーバ130からデバイス104にダウンロードし(例えば、動作212)、ローカルキャッシュメモリにロードし(例えば、動作216)、3Dオブジェクト用のポリゴンメッシュデータとマテリアルデータの両方を表示し得る(例えば、動作220)。
一実施形態によれば、大型3Dモデル内の複数の3Dオブジェクトは、複数のグループにセグメント化され得、各グループは、一組の3Dオブジェクトを含む。一実施形態によれば、方法200の動作208は、グループ内の各3Dオブジェクトについての可視性スコアを決定することと、グループに単一の可視性スコアを割り当てること(例えば、グループ内の各オブジェクトに単一の可視性スコアを割り当てること)と、を含み得る。例えば、単一の可視性スコアは、グループ内の3Dオブジェクトについての最も高い可視性スコアに対応し得る。
一実施形態によれば、3Dモデルを複数のオブジェクトのグループにセグメント化する動作は、以下のうちの1つを含み得る:複数の3Dオブジェクトをそれらの位置の近接性に基づいてグループ化すること、グループの最小バウンディングボックスのサイズを最小化することに基づいて複数の3Dオブジェクトをグループ化すること、複数のグループの最小バウンディングボックスの合計サイズを最小化することに基づいて複数の3Dオブジェクトをグループ化すること、複数のグループの最小バウンディングボックスの重なりを最小化することに基づいて複数の3Dオブジェクトをグループ化すること、または、グループ内のオブジェクトの総数が最小の所定の値を上回り、かつ最大の所定の値を下回ることを保証することに基づいて複数の3Dオブジェクトをグループ化すること。
一実施形態によれば、図3は、第1の球形オブジェクト302、第2の球形オブジェクト304、床オブジェクト306、第1の壁オブジェクト308、および第2の壁オブジェクト310を含む3D環境300(例えば、3Dモデル)の図である。図3に示される3D環境300は、方法の動作208に記載されているように、可視性スコアを決定するプロセスを示し得る。図3に示される3D環境300は、例示のみを目的としており、方法200(および特に動作208)は、はるかに数の多いオブジェクトを有する3D環境で使用され得る。図3に示される例では、仮想カメラ320は、環境300内のすべてのオブジェクトの上方に配置され、第1の球形オブジェクト302および第2の球形オブジェクト304に向けられている。図3の仮想カメラ320の位置および向きは、単に説明を簡単にするためのものであり、カメラ320は、環境内のどこにでも位置付けおよび方向付けられ得る。一実施形態によれば、および動作208の一部として、可視性スコアは、環境内のオブジェクト(302、304、306、308、および310)について決定され得る。一実施形態によれば、位置に基づいて、床オブジェクト306は、仮想カメラ320への近接性に基づいて、可視性スコアが最も高く、続いて第1の球形オブジェクト302については、可視性スコアが次に高く、続いて第1の壁オブジェクト308については、可視性スコアが次に高く、続いて第2の球形オブジェクト304については、可視性スコアが次に高く、続いて第2の壁オブジェクト310については、可視性スコアが次に高くなり得る。したがって、図3に示される環境300の場合、レンダリングデータは、サーバ130からローカルストレージにダウンロードされ(例えば、動作212の一部として)、ローカルストレージからローカルキャッシュに移動され、次いで、可視性スコアに基づいて、床オブジェクト306、第1の球形オブジェクト302、第1の壁オブジェクト308、第2の球形オブジェクト304、第2の壁オブジェクト310の順序でレンダリングされ得る。
例示的な実施形態によれば、かつ、図4に示されているのは、図2に記載された方法200を使用して表示された大型3Dモデルの図である。図4の眺望は、複数のテーブルおよび椅子を含む(仮想カメラが配置されている)大きな建物内のダイニングルームを示している。この図は、仮想カメラに最も近いテーブルおよび関連付けられている椅子(例えば、テーブル402A、402B、402C、および402D)が、仮想カメラの位置に近いために、可視性スコアが最も高く、完全にレンダリングされていることを示している。さらに、仮想カメラからわずかに離れた2列目のテーブルとそれらに関連付けられている椅子(例えば、404A、404B、404C)は、可視性スコアが次に高く、部分的にしかレンダリングされていない(一部の椅子は完全にレンダリングされており、その他はバウンディングボックスとして表示されている)。さらにカメラから離れたところに、可視性スコアがより低く、完全にバウンディングボックスとして表示されているテーブルおよびそれらに関連付けられている椅子がある(例えば、テーブル406A、406B、406C、および406Dを含む)。
別個のデータ信号接続を介して互いに通信する個別のコンポーネントのグループとしてブロック図に示されているが、様々な実施形態は、いくつかのコンポーネントが、ハードウェアまたはソフトウェアシステムの所与の機能または動作によって実装されており、図示されているデータパスの多くが、コンピュータアプリケーションまたはオペレーティングシステム内のデータ通信によって実装されている、ハードウェアおよびソフトウェアコンポーネントの組み合わせによって提供され得ることが当業者によって理解されるであろう。したがって、図示された構造は、本発明の様々な実施形態を教示することの効率のために提供される。
本開示は、方法として実行することができ、システム、コンピュータ可読媒体、または電気信号もしくは電磁信号で具体化することができることに留意されたい。上記に記載され、添付の図面に示されている実施形態は、例示のみを目的としている。本開示から逸脱することなく修正を行うことができることは、当技術分野の当業者には明らかであろう。このような修正は、可能な変形と見なされ、本開示の範囲内にある。
特定の実施形態は、論理またはいくつかのコンポーネント、モジュール、もしくはメカニズムを含むものとして本明細書に記載されている。モジュールは、ソフトウェアモジュール(例えば、機械可読媒体または送信信号で具体化されたコード)またはハードウェアモジュールのいずれかを構成し得る。「ハードウェアモジュール」は、特定の動作を実行できる有形のユニットであり得、特定の物理的な方法で構成または配置され得る。様々な例示的な実施形態では、1つまたは複数のコンピュータシステム(例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、またはサーバコンピュータシステム)またはコンピュータシステムの1つまたは複数のハードウェアモジュール(例えば、プロセッサまたはプロセッサのグループ)は、本明細書に記載される特定の動作を実行するように動作するハードウェアモジュールとして、ソフトウェア(例えば、アプリケーションまたはアプリケーション部分)によって構成され得る。
いくつかの実施形態では、ハードウェアモジュールは、機械的、電子的、またはそれらの任意の適切な組み合わせで実装され得る。例えば、ハードウェアモジュールには、特定の動作を実行するように永続的に構成された専用の回路またはロジックを含んでもよい。例えば、ハードウェアモジュールは、フィールドプログラマブルゲートアレイ(FPGA : field‐programmable gate array)または特定用途向け集積回路(ASIC : application specific integrated circuit)などの専用プロセッサであってもよい。ハードウェアモジュールはまた、特定の動作を実行するためにソフトウェアによって一時的に構成されるプログラマブルロジックまたは回路を含んでもよい。例えば、ハードウェアモジュールは、汎用プロセッサまたは他のプログラム可能なプロセッサ内に含まれるソフトウェアを含んでもよい。そのようなソフトウェアは、少なくとも一時的に、汎用プロセッサを専用プロセッサに変換し得る。ハードウェアモジュールを機械的に、専用の恒久的に構成された回路に、または一時的に構成された回路(例えば、ソフトウェアによって構成された)に実装する決定は、コストおよび時間の考慮によって決定され得ることが理解されよう。
したがって、「ハードウェアモジュール」という句は、特定の方法で、または本明細書に記載の特定の動作を実行するように、物理的に構築された、恒久的に構成された(例えば、ハードワイヤード)、または一時的に構成された(例えば、プログラムされた)エンティティである、有形のエンティティを包含すると理解されるべきである。本明細書で使用される場合、「ハードウェア実装モジュール」は、ハードウェアモジュールを指す。ハードウェアモジュールが一時的に構成される(例えば、プログラムされる)実施形態を考慮すると、ハードウェアモジュールのそれぞれは、任意のある時点で構成またはインスタンス化される必要はない。例えば、ハードウェアモジュールが、専用プロセッサになるようにソフトウェアによって構成された汎用プロセッサを含む場合、その汎用プロセッサは、異なる時間にそれぞれ異なる専用プロセッサ(例えば、異なるハードウェアモジュールを含む)として構成され得る。したがって、ソフトウェアは、例えば、ある時点で特定のハードウェアモジュールを構成し、異なる時点で異なるハードウェアモジュールを構成するように、1つまたは複数の特定のプロセッサを構成し得る。
ハードウェアモジュールは、他のハードウェアモジュールに情報を提供したり、他のハードウェアモジュールから情報を受信したりすることができる。したがって、説明されたハードウェアモジュールは、通信可能に結合されていると見なされ得る。複数のハードウェアモジュールが同時に存在する場合、通信は、2つ以上のハードウェアモジュール間または2つ以上のハードウェアモジュールのうちでの信号送信(例えば、適切な回路およびバスを介した)によって実現され得る。複数のハードウェアモジュールが異なる時間に構成またはインスタンス化される実施形態では、そのようなハードウェアモジュール間の通信は、例えば、複数のハードウェアモジュールがアクセスできるメモリ構造内の情報の格納および取得によって実現され得る。例えば、1つのハードウェアモジュールは、動作を実行し、その動作の出力を、それが通信可能に結合されているメモリデバイスに格納し得る。次に、さらなるハードウェアモジュールが、後で、メモリデバイスにアクセスして、格納された出力を取得および処理し得る。ハードウェアモジュールは、入力デバイスまたは出力デバイスとの通信を開始し得、リソース上で動作することができる(例えば、情報の収集)。
本明細書に記載の例示的な方法の様々な動作は、関連する動作を実行するように一時的に(例えば、ソフトウェアによって)または恒久的に構成された1つまたは複数のプロセッサによって、少なくとも部分的に実行され得る。一時的または恒久的に構成されているかどうかにかかわらず、そのようなプロセッサは、本明細書に記載の1つまたは複数の動作または機能を実行するように動作する、プロセッサ実装モジュールを構成し得る。本明細書で使用される場合、「プロセッサ実装モジュール」は、1つまたは複数のプロセッサを使用して実装されたハードウェアモジュールを指す。
同様に、本明細書に記載の方法は、少なくとも部分的にプロセッサで実装され得、特定の1つまたは複数のプロセッサがハードウェアの例である。例えば、方法の動作の少なくともいくつかは、1つまたは複数のプロセッサまたはプロセッサ実装モジュールによって実行され得る。さらに、1つまたは複数のプロセッサは、「クラウドコンピューティング」環境または「サービスとしてのソフトウェア」(SaaS : software as a service)での関連する動作のパフォーマンスをサポートするように動作し得る。例えば、動作の少なくともいくつかは、(プロセッサを含むマシンの例として)コンピュータのグループによって実行され得、これらの動作には、ネットワーク(例えば、インターネット)および1つまたは複数の適切なインターフェース(例えば、アプリケーションプログラムインターフェース(API : application program interface))を介してアクセスすることができる。
特定の動作のパフォーマンスは、単一のマシン内に存在するだけでなく、複数のマシンに展開されるプロセッサ間で分散され得る。いくつかの例示的な実施形態では、プロセッサまたはプロセッサ実装モジュールは、単一の地理的場所(例えば、住居環境、オフィス環境、またはサーバファーム内)に配置され得る。他の例示的な実施形態では、プロセッサまたはプロセッサ実装モジュールは、いくつかの地理的位置に分散され得る。
図5は、例示的なソフトウェアアーキテクチャ502を示すブロック図500であり、ソフトウェアアーキテクチャ502は、ゲーミングエンジン501と、MRデジタルモデルディスプレイシステム100のコンポーネントと、の両方または一方を提供するために、本明細書に記載の様々なハードウェアアーキテクチャと併せて使用され得る。図5は、ソフトウェアアーキテクチャの非限定的な例であり、本明細書に記載の機能を可能にするために、他の多くのアーキテクチャが実装され得ることが理解されよう。ソフトウェアアーキテクチャ502は、とりわけ、プロセッサ610、メモリ630、および入出力(I/O)コンポーネント650を含む、図6のマシン600などのハードウェア上で実行され得る。代表的なハードウェア層504が示され、例えば、図6のマシン600を表すことができる。代表的なハードウェア層504は、関連付けられている実行可能命令508を有する処理ユニット506を含む。実行可能命令508は、本明細書に記載の方法、モジュールなどの実装を含む、ソフトウェアアーキテクチャ502の実行可能命令を表す。ハードウェア層504はまた、実行可能命令508も含むメモリ/ストレージ510を含む。ハードウェア層504はまた、他のハードウェア512を備え得る。
図5の例示的なアーキテクチャでは、ソフトウェアアーキテクチャ502は、各層が特定の機能を提供する層のスタックとして概念化され得る。例えば、ソフトウェアアーキテクチャ502は、オペレーティングシステム514、ライブラリ516、フレームワークまたはミドルウェア518、アプリケーション520、およびプレゼンテーション層544などの層を含み得る。動作上、アプリケーション520およびレイヤ内の他のコンポーネントまたはアプリケーション520もしくはレイヤ内の他のコンポーネントは、ソフトウェアスタックを介してアプリケーションプログラミングインターフェース(API)コール524を呼び出し、メッセージ526として応答を受信し得る。示されている層は、本質的に代表的なものであり、すべてのソフトウェアアーキテクチャにすべての層があるわけではない。例えば、いくつかのモバイルまたは専用オペレーティングシステムは、フレームワーク/ミドルウェア518を提供しなくてもよいが、他のものはそのような層を提供してもよい。他のソフトウェアアーキテクチャは、追加の層または異なる層を含み得る。
オペレーティングシステム514は、ハードウェアリソースを管理し、共通のサービスを提供し得る。オペレーティングシステム514は、例えば、カーネル528、サービス530、およびドライバ532を含み得る。カーネル528は、ハードウェア層と他のソフトウェア層との間の抽象化層として機能し得る。例えば、カーネル528は、メモリ管理、プロセッサ管理(例えば、スケジューリング)、コンポーネント管理、ネットワーキング、セキュリティ設定などを担い得る。サービス530は、他のソフトウェア層に他の共通サービスを提供し得る。ドライバ532は、基礎となるハードウェアの制御またはインターフェースを担い得る。例えば、ドライバ532は、ハードウェア構成に応じて、ディスプレイドライバ、カメラドライバ、Bluetooth(登録商標)ドライバ、フラッシュメモリドライバ、シリアル通信ドライバ(例えば、ユニバーサルシリアルバス(USB : Universal Serial Bus)ドライバ)、Wi‐Fi(登録商標)ドライバ、オーディオドライバ、電力管理ドライバなどを含んでもよい。
ライブラリ516は、アプリケーション520および/または他のコンポーネントおよび/または層によって使用され得る共通のインフラストラクチャを提供し得る。ライブラリ516は、典型的には、他のソフトウェアモジュールが、基礎となるオペレーティングシステム514の機能(例えば、カーネル528、サービス530および/またはドライバ532)と直接インターフェースするよりも簡単な方法でタスクを実行できるようにする機能を提供する。ライブラリ616は、メモリ割り当て関数、文字列動作関数、数学関数などの関数を提供し得るシステムライブラリ534(例えば、C標準ライブラリ)を含み得る。さらに、ライブラリ516は、メディアライブラリ(例えば、MPEG4、H.264、MP3、AAC、AMR、JPG、PNGなどの様々なメディアフォーマットの提示および動作をサポートするためのライブラリ)、グラフィックスライブラリ(例えば、ディスプレイに2Dおよび3Dグラフィックコンテンツをレンダリングするために使用され得るOpenGLフレームワーク)、データベースライブラリ(例えば、様々なリレーショナルデータベース機能を提供し得るSQLite)、Webライブラリ(例えば、Webブラウジング機能を提供するWebKit)などの、APIライブラリ536を含み得る。ライブラリ516はまた、アプリケーション520および他のソフトウェアコンポーネント/モジュールに他の多くのAPIを提供するために、多種多様な他のライブラリ538を含み得る。
フレームワーク518(ミドルウェアとも呼ばれる)は、アプリケーション520および他のソフトウェアコンポーネント/モジュールまたはアプリケーション520もしくは他のソフトウェアコンポーネント/モジュールによって使用され得る高レベルの共通インフラストラクチャを提供する。例えば、フレームワーク/ミドルウェア518は、様々なグラフィックユーザインターフェース(GUI)機能、高レベルのリソース管理、高レベルの位置情報サービスなどを提供し得る。フレームワーク/ミドルウェア518は、アプリケーション520および他のソフトウェアコンポーネント/モジュールまたはアプリケーション520もしくは他のソフトウェアコンポーネント/モジュールによって利用され得る広範囲の他のAPIを提供し得、それらのいくつかは、特定のオペレーティングシステムまたはプラットフォームに固有であり得る。
アプリケーション520は、ビルトインアプリケーション540およびサードパーティアプリケーション542の両方または一方を含む。代表的なビルトインアプリケーション540の例には、連絡先アプリケーション、ブラウザアプリケーション、ブックリーダアプリケーション、ロケーションアプリケーション、メディアアプリケーション、メッセージングアプリケーション、および/またはゲームアプリケーションが含まれ得るが、これらに限定されない。サードパーティアプリケーション542には、特定のプラットフォームのベンダー以外のエンティティによってAndroid(登録商標)またはiOS(登録商標)ソフトウェア開発キット(SDK : software development kit)を使用して開発されたアプリケーションが含まれ得、サードパーティアプリケーション542は、iOS(登録商標)、Android(登録商標)、Windows(登録商標)Phone、またはその他のモバイルオペレーティングシステムなどのモバイルオペレーティングシステムでランされるモバイルソフトウェアであり得る。サードパーティアプリケーション542は、本明細書に記載の機能を容易にするために、オペレーティングシステム514などのモバイルオペレーティングシステムによって提供されるAPIコール524を呼び出し得る。
アプリケーション520は、ビルトインオペレーティングシステム機能(例えば、カーネル528、サービス530および/またはドライバ532)、ライブラリ516、またはフレームワーク/ミドルウェア518を使用して、システムのユーザと対話するためのユーザインターフェースを作成し得る。代替して、または追加して、いくつかのシステムでは、ユーザとの対話は、プレゼンテーション層544などのプレゼンテーション層を介して発生し得る。これらのシステムでは、アプリケーション/モジュールの「ロジック」を、ユーザと対話するアプリケーション/モジュールの態様から分離することができる。
一部のソフトウェアアーキテクチャは、仮想マシンを使用する。図5の例では、これは仮想マシン548によって示されている。仮想マシン548は、アプリケーション/モジュールがハードウェアマシン(例えば、図6のマシン600など)上で実行されているかのように実行することができるソフトウェア環境を作成する。仮想マシン548は、ホストオペレーティングシステム(例えば、オペレーティングシステム514)によってホストされ、典型的には、常にではないが、仮想マシン548の動作ならびにホストオペレーティングシステム(すなわち、オペレーティングシステム514)とのインターフェースを管理する仮想マシンモニタ546を有する。ソフトウェアアーキテクチャは、オペレーティングシステム(OS)550、ライブラリ552、フレームワーク554、アプリケーション556、および/またはプレゼンテーション層558などの仮想マシン548内で実行される。仮想マシン548内で実行されるソフトウェアアーキテクチャのこれらの層は、前述の対応する層と同じであってもよく、または異なっていてもよい。
図6は、いくつかの例示的な実施形態による、機械可読媒体(例えば、機械可読記憶媒体)から命令を読み込み、本明細書で論じる方法論のうちの任意の1つまたは複数を実行するように構成されたマシン600のコンポーネントを示すブロック図である。いくつかの実施形態では、マシン600は、MRデジタルモデルディスプレイデバイス104に類似している。具体的には、図6は、コンピュータシステムの例示的形態におけるマシン600の図表示を示しており、そのコンピュータシステム内で、本明細書で論じる方法論のうちの任意の1つまたは複数をマシン600に実施させるための命令616(例えば、ソフトウェア、プログラム、アプリケーション、アプレット、アプリまたは他の実行可能コード)が実行されてもよい。したがって、命令616は、本明細書に記載のモジュールまたはコンポーネントを実装するために使用され得る。命令は、一般的なプログラムされていないマシンを、記載の方法で説明かつ図示された機能を実行するようにプログラムされた特定のマシンに変換する。代替実施形態では、マシン600は、スタンドアロンデバイスとして動作するかまたは他のマシンに接続(例えば、ネットワーク化)されてもよい。ネットワーク化された構成では、マシン600は、サーバ/クライアントネットワーク環境内のサーバマシンもしくはクライアントマシンの能力内で、またはピアツーピア(もしくは分散型)ネットワーク環境内のピアマシンとして動作してもよい。マシン600は、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ(PC : personal computer)、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、セットトップボックス(STB : set‐top box)、携帯情報端末(PDA : personal digital assistant)、エンタテインメントメディアシステム、携帯電話、スマートフォン、モバイルデバイス、ウェアラブルデバイス(例えば、スマートウォッチ)、スマートホームデバイス(例えば、スマート家電)、他のスマートデバイス、ウェブアプライアンス、ネットワークルータ、ネットワークスイッチ、ネットワークブリッジ、または順次または別の方法で、マシン600によってとられるべき動作を指定する命令616を実行することができる任意のマシンを含んでもよいが、これらに限定されない。さらに、単一のマシン600のみが示されているが、「マシン」という用語は、本明細書で論じる方法論のうちの任意の1つまたは複数を行うために個別にまたは共同で命令616を実行するマシンの集合体も含むものとする。
マシン600は、バス602を介するなどして互いに通信するように構成されてもよい、プロセッサ610、メモリ630、および入出力(I/O)コンポーネント650を含んでもよい。例示的な実施形態では、プロセッサ610(例えば、中央処理装置(CPU)、縮小命令セット計算(RISC : reduced instruction set computing)プロセッサ、複合命令セット計算(CISC : complex instruction set computing)プロセッサ、グラフィック処理装置(GPU)、デジタル信号プロセッサ(DSP : digital signal processor)、特定用途向け集積回路(ASIC)、無線周波数集積回路(RFIC : radio‐frequency integrated circuit)、他のプロセッサまたはそれらの任意の好適な組み合わせ)は、例えば、命令616を実行してもよいプロセッサ612およびプロセッサ614を含んでもよい。「プロセッサ」という用語は、命令を同時に実行してもよい2つ以上の独立したプロセッサ(場合により「コア」と称する)を含んでもよいマルチコアプロセッサを含むことを意図している。図6は、マルチプロセッサを示すが、マシン600は、シングルコアを有するシングルプロセッサ、マルチコアを有するシングルプロセッサ(例えば、マルチコアプロセッサ)、シングルコアを有するマルチプロセッサ、マルチプルコアを有するマルチプロセッサまたはそれらの任意の組み合わせを含んでもよい。
メモリ/ストレージ630は、メインメモリ632、スタティックメモリ634、または他のメモリなどのメモリ、およびストレージユニット636を含み得、これらは両方とも、バス602を介するなどして、プロセッサ610にアクセス可能である。ストレージユニット636およびメモリ632、634は、本明細書に記載の方法論または機能のいずれか1つまたは複数を具体化する命令616を格納する。命令616はまた、マシン600による実行中、完全にまたは部分的に、メモリ632、634内、ストレージユニット636内、少なくとも1つのプロセッサ610内(例えば、プロセッサのキャッシュメモリ内)またはそれらの任意の好適な組み合わせ内に存在してもよい。したがって、メモリ632、634、ストレージユニット636およびプロセッサ610のメモリは、機械可読媒体638の例である。
本明細書で使用される場合、「機械可読媒体」は、命令およびデータを一時的または恒久的に記憶することができる装置を意味し、ランダムアクセスメモリ(RAM : random‐access memory)、読み取り専用メモリ(ROM : read‐only memory)、バッファメモリ、フラッシュメモリ、光媒体、磁気媒体、キャッシュメモリ、他の種類のストレージ(例えば、消去可能プログラマブル読み出し専用メモリ(EEPROM : erasable programmable read‐only memory))および/またはそれらの任意の好適な組み合わせを含んでもよいが、これらに限定されない。「機械可読媒体」という用語は、命令616を記憶することができる単一の媒体または複数の媒体(例えば、集中型もしくは分散型データベースまたは関連付けられているキャッシュおよびサーバ)を含むように解釈されるべきである。「機械可読媒体」という用語はまた、マシン(例えば、マシン600)によって実行するための命令(例えば、命令616)を格納することができる任意の媒体、または複数の媒体の組み合わせを含むと解釈され、命令は、マシン600の1つまたは複数のプロセッサ(例えば、プロセッサ610)によって実行されると、マシン600に、本明細書に記載されている、非定型もしくは非従来型の方法論もしくは動作、または方法論もしくは動作の非定型もしくは非従来型の組み合わせを含む、任意の1つまたは複数の方法論または動作を実行させる。したがって、「機械可読媒体」は、単一のストレージ装置またはデバイス、ならびに複数のストレージ装置またはデバイスを含む「クラウドベースの」ストレージシステムまたはストレージネットワークを指す。「機械可読媒体」という用語は、信号自体を除外する。
入出力(I/O)コンポーネント650は、入力を受信し、出力を提供し、出力を生成し、情報を送信し、情報を交換し、測定値を取り込むなどのための多種多様なコンポーネントを含んでもよい。特定のマシンに含まれる特定の入出力(I/O)コンポーネント650は、マシンの種類に依存することとなる。例えば、携帯電話などのポータブルマシンは、タッチ入力デバイスまたは他のそのような入力機構を含む可能性が高い一方で、ヘッドレスサーバマシンは、そのようなタッチ入力デバイスを含まない可能性が高い。入出力(I/O)コンポーネント650は、図6には示されていない他の多くのコンポーネントを含んでもよいことが理解されよう。入出力(I/O)コンポーネント650は、単に以下の議論を単純化するために機能に従ってグループ化されており、そのグループ化は決して限定的ではない。様々な例示的な実施形態では、入出力(I/O)コンポーネント650は、出力コンポーネント652および入力コンポーネント654を含み得る。出力コンポーネント652は、視覚的コンポーネント(例えば、プラズマディスプレイパネル(PDP : prasma display panel)、発光ダイオード(LED : light emitting diode)ディスプレイ、液晶ディスプレイ(LCD : liquid crystal display)、プロジェクタ、またはブラウン管(CRT : cathode ray tube)などのディスプレイ)、音響コンポーネント(例えば、スピーカ)、触覚コンポーネント(例えば、振動モータ、抵抗機構)、他の信号発生器などを含んでもよい。入力コンポーネント654は、英数字入力コンポーネント(例えば、キーボード、英数字入力を受信するように構成されたタッチスクリーン、光学式キーボードまたは他の英数字入力コンポーネント)、ポイントベースの入力コンポーネント(例えば、マウス、タッチパッド、トラックボール、ジョイスティック、モーションセンサまたは他のポインティング器具)、触覚入力コンポーネント(例えば、物理的ボタン、タッチまたはタッチジェスチャの位置と力または位置もしくは力を提供するタッチスクリーン、または他の触覚入力コンポーネント)、音声入力コンポーネント(例えば、マイクロフォン)などを含んでもよい。
さらなる例示的な実施形態では、入出力(I/O)コンポーネント650は、他の多様なコンポーネントの中から、バイオメトリックコンポーネント656、動きコンポーネント658、環境コンポーネント660または位置コンポーネント662を含んでもよい。例えば、バイオメトリックコンポーネント656は、表情(expressions)(例えば、手の表現、顔の表情、声の調子、身体のジェスチャまたはアイトラッキング)を検出し、生体信号(例えば、血圧、心拍数、体温、発汗または脳波)を測定し、人物を識別する(例えば、音声識別、網膜識別、顔識別、指紋識別または脳波図に基づく識別)などのコンポーネントを含んでもよい。動きコンポーネント658は、加速度センサコンポーネント(例えば、加速度計)、重力センサコンポーネント、回転センサコンポーネント(例えば、ジャイロスコープ)などを含んでもよい。環境コンポーネント660は、例えば、照度センサコンポーネント(例えば、光度計)、温度センサコンポーネント(例えば、周囲温度を検出する1つまたは複数の温度計)、湿度センサコンポーネント、圧力センサコンポーネント(例えば、気圧計)、音響センサコンポーネント(例えば、バックグラウンドノイズを検出する1つまたは複数のマイクロフォン)、近接センサコンポーネント(例えば、近くの物体を検出する赤外線センサ)、ガスセンサ(例えば、安全のために有害ガスの濃度を検出するか大気中の汚染物質を測定するためのガス検出センサ)、または周囲の物理的環境に対応する指標、測定値もしくは信号を提供してもよい他のコンポーネントを含んでもよい。位置コンポーネント662は、位置センサコンポーネント(例えば、全地球測位システム(GPS)受信機コンポーネント)、高度センサコンポーネント(例えば、高度計または高度が導出され得る気圧を検出する気圧計)、方位センサコンポーネント(例えば、磁力計)などを含んでもよい。
通信は、多種多様な技術を使用して実施してもよい。入出力(I/O)コンポーネント650は、カップリング682およびカップリング672を介して、それぞれネットワーク680またはデバイス670にマシン600を接続するように動作可能な通信コンポーネント664を含んでもよい。例えば、通信コンポーネント664は、ネットワーク680とインターフェースするためのネットワークインターフェースコンポーネントまたは他の適切なデバイスを含んでもよい。さらなる例では、通信コンポーネント664は、有線通信コンポーネント、無線通信コンポーネント、セルラー方式通信コンポーネント、近距離通信(NFC : near field communication)コンポーネント、Bluetooth(登録商標)コンポーネント(例えば、Bluetooth(登録商標)Low Energy)、Wi‐Fi(登録商標)コンポーネント、および他のモダリティを介した通信を提供するための他の通信コンポーネントを含んでもよい。デバイス670は、他のマシンまたは多種多様な周辺デバイス(例えば、ユニバーサルシリアルバス(USB : universal serial bus)を介して接続された周辺デバイス)のうちのいずれかであってもよい。
さらに、通信コンポーネント664は、識別子を検出してもよいか、または識別子を検出するように動作可能なコンポーネントを含んでもよい。例えば、通信コンポーネント664は、無線周波数識別(RFID : radio frequency identification)タグリーダコンポーネント、NFCスマートタグ検出コンポーネント、光学式リーダコンポーネント(例えば、ユニバーサルプロダクトコード(UPC : universal product code)バーコードなどの一次元バーコードを検出するための光学センサ、クイックレスポンス(QR : quick response)コード、Aztecコード、Data Matrix、Dataglyph、MaxiCode、PDF417、Ultra Code、UCC RSS‐2Dバーコード、および他の光学コードなどの多次元バーコード)、または音響検出コンポーネント(例えば、タグ付き音声信号を識別するためのマイクロフォン)を含んでもよい。加えて、インターネットプロトコル(IP : internet protocol)地理的位置情報による位置、Wi‐Fi(登録商標)信号三角測量による位置、特定の位置を示してもよいNFCビーコン信号を検出することによる位置など、様々な情報は、通信コンポーネント662を介して導出されてもよい。
本明細書を通して、複数のインスタンスは、単一のインスタンスとして説明されているコンポーネント、動作または構造を実装してもよい。1つまたは複数の方法の個々の動作は、別々の動作として図示および説明されているが、個々の動作のうちの1つまたは複数は、同時に実行されてもよく、動作が図示の順序で実行される必要はない。例示的な構成において別々のコンポーネントとして提示された構造および機能は、組み合わされた構造またはコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして提示された構造および機能は、別々のコンポーネントとして実装されてもよい。これらおよび他の変形、修正、追加および改良は、本明細書の主題の範囲内に含まれる。
本明細書に示された実施形態は、開示された教示を当業者が実施することを可能にするために十分に詳細に記載されている。本開示の範囲を逸脱することなく、構造上ならびに論理上の置き換えおよび変更を行い得るように、上記の記載から他の実施形態を利用し、引き出すことができる。したがって、「発明を実施するための形態」は、限定的な意味で解釈されるべきではなく、様々な実施形態の範囲は添付の特許請求の範囲とそのような特許請求の範囲が権利を与える等価物の全範囲によってのみ定義される。
本明細書で使用される場合、「または」という用語は、包括的または排他的な意味で解釈され得る。さらに、本明細書で単一インスタンスとして説明されているリソース、動作または構造のために複数インスタンスが提供され得る。加えて、様々なリソース、動作、モジュール、エンジンおよびデータストアの間の境界は、若干任意であり、特定の動作は、特定の例示的な構成の文脈で示されている。機能の他の割り当てが想定され、本開示の様々な実施形態の範囲内に含まれてもよい。一般に、例示的な構成において別々のリソースとして提示された構造および機能は、組み合わされた構造またはリソースとして実装されてもよい。同様に、単一のリソースとして提示された構造および機能は、別々のリソースとして実装されてもよい。これらおよび他の変形、修正、追加および改良は、添付の特許請求の範囲によって表される本開示の実施形態の範囲内に含まれる。したがって、本明細書および図面は、限定的な意味ではなく、例示的なものとして認識されるべきである。