(57)【特許請求の範囲】
【請求項１】
１つ以上のプロセッサ、非一時的メモリ、画像センサ、ディスプレイ、及び１つ以上の入力デバイスを備える電子デバイスにおいて、
前記画像センサの視野内のオブジェクトのメディアキャプチャプレビューにオーバーレイされた、第１の外観状態のレチクル要素を前記ディスプレイ上に表示することであって、前記画像センサの前記視野内の前記オブジェクトが変化したときに、前記メディアキャプチャプレビューが変化する、ことと、
前記メディアキャプチャプレビュー内の平面を検出することと、
前記平面の検出に応じて、前記メディアキャプチャプレビューにオーバーレイされた第２の外観状態の前記レチクル要素を前記ディスプレイ上に表示することであって、前記レチクル要素が、前記第２の外観状態で表示されている間に、前記平面の範囲の一部のインジケーションに対応する、ことと、
を含む、方法。
【請求項２】
前記検出された平面が、前記レチクル要素に近接している、請求項１に記載の方法。
【請求項３】
前記検出された平面が、前記レチクル要素の閾値距離内にある、請求項１に記載の方法。
【請求項４】
前記レチクル要素の前記第１の外観状態から前記レチクル要素の前記第２の外観状態への遷移アニメーションを表示することを更に含み、前記遷移アニメーションは、前記検出された平面の向きに一致するように前記レチクル要素の向きを調整することに対応する、
請求項１に記載の方法。
【請求項５】
前記レチクル要素が前記第２の外観状態で表示されている間に、前記検出された平面のサイズに対応するように前記レチクル要素のサイズを修正すること、
を更に含む、請求項１に記載の方法。
【請求項６】
前記レチクル要素が前記第２の外観状態で表示されている間に、前記１つ以上の入力デバイスを介して、前記レチクル要素のサイズを調整することに対応する第１のユーザ入力を検出することと、
前記第１のユーザ入力の検出に応じて、前記検出された平面と、前記第１のユーザ入力の方向、前記第１のユーザ入力の大きさ、又は前記第１のユーザ入力の速度のうちの少なくとも１つとに基づいて、前記レチクル要素の前記サイズを修正することと、
を更に含む、請求項１に記載の方法。
【請求項７】
前記レチクル要素が前記第２の外観状態で表示されている間に、前記１つ以上の入力デバイスを介して、オブジェクト選択インタフェースから拡張現実又は仮想現実オブジェクトを選択することに対応する第２のユーザ入力を検出することと、
前記第２のユーザ入力の検出に応じて、前記検出された平面に対して前記メディアキャプチャプレビューにオーバーレイされた前記選択された拡張現実又は仮想現実オブジェクトを前記ディスプレイ上に表示することと、
を更に含む、請求項１に記載の方法。
【請求項８】
前記検出された平面に対して前記メディアキャプチャプレビューにオーバーレイされた、前記選択された拡張又は仮想相対オブジェクトを表示することが、
前記平面の向きに基づいて、前記選択された拡張現実又は仮想現実オブジェクトに回転を適用することを含む、請求項７に記載の方法。
【請求項９】
前記第２のユーザ入力の検出に応じて、前記メディアキャプチャプレビューにオーバーレイされた前記レチクル要素の表示を停止すること、
を更に含む、請求項７に記載の方法。
【請求項１０】
前記１つ以上の入力デバイスを介して、前記拡張現実又は仮想現実オブジェクトとの対話に対応する第３のユーザ入力を検出することと、
前記第３のユーザ入力の検出に応じて、前記第３のユーザ入力の１つ以上の特性に少なくとも部分的に基づいて、前記拡張現実又は仮想現実オブジェクトを修正することと、
を更に含む、請求項７に記載の方法。
【請求項１１】
ディスプレイと、
画像センサと、
１つ以上の入力デバイスと、
非一時的メモリと、
１つ以上のプロセッサと、
を備える電子デバイスであって、
前記１つ以上のプロセッサは、
前記画像センサの視野内のオブジェクトであって、前記画像センサの前記視野内の前記オブジェクトが変化したときに、メディアキャプチャプレビューが変化する、前記画像センサの視野内のオブジェクトの前記メディアキャプチャプレビューにオーバーレイされた、第１の外観状態のレチクル要素を前記ディスプレイ上に表示し、
前記メディアキャプチャプレビュー内の平面を検出し、
前記平面の検出に応じて、前記メディアキャプチャプレビューにオーバーレイされた第２の外観状態の前記レチクル要素であって、前記レチクル要素が、前記第２の外観状態で表示されている間に、前記平面の範囲の一部のインジケーションに対応する、前記レチクル要素を前記ディスプレイ上に表示する、ように構成されている、電子デバイス。
【請求項１２】
前記検出された平面が、前記レチクル要素に近接している、請求項１１に記載の電子デバイス。
【請求項１３】
前記検出された平面が、前記レチクル要素の閾値距離内にある、請求項１１に記載の電子デバイス。
【請求項１４】
前記１つ以上のプロセッサは、前記レチクル要素の前記第１の外観状態から前記レチクル要素の前記第２の外観状態への遷移アニメーションを表示するように更に構成されており、前記遷移アニメーションは、前記検出された平面の向きに一致するように前記レチクル要素の向きを調整することに対応する、
請求項１１に記載の電子デバイス。
【請求項１５】
前記１つ以上のプロセッサは、前記レチクル要素が前記第２の外観状態で表示されている間に、前記検出された平面のサイズに対応するように前記レチクル要素のサイズを修正するように更に構成されている、
請求項１１に記載の電子デバイス。
【請求項１６】
前記１つ以上のプロセッサは、前記レチクル要素が前記第２の外観状態で表示されている間に、前記１つ以上の入力デバイスを介して、前記レチクル要素のサイズを調整することに対応する第１のユーザ入力を検出し、
前記第１のユーザ入力の検出に応じて、前記検出された平面と、前記第１のユーザ入力の方向、前記第１のユーザ入力の大きさ、又は前記第１のユーザ入力の速度のうちの少なくとも１つとに基づいて、前記レチクル要素の前記サイズを修正する、ように更に構成されている、
請求項１１に記載の電子デバイス。
【請求項１７】
前記１つ以上のプロセッサは、前記レチクル要素が前記第２の外観状態で表示されている間に、前記１つ以上の入力デバイスを介して、オブジェクト選択インタフェースから拡張現実又は仮想現実オブジェクトを選択することに対応する第２のユーザ入力を検出し、
前記第２のユーザ入力の検出に応じて、前記検出された平面に対して前記メディアキャプチャプレビューにオーバーレイされた前記選択された拡張現実又は仮想現実オブジェクトを前記ディスプレイ上に表示する、ように更に構成されている、
請求項１１に記載の電子デバイス。
【請求項１８】
前記１つ以上のプロセッサは、前記平面の向きに基づいて、前記選択された拡張現実又は仮想現実オブジェクトに回転を適用することによって、前記検出された平面に対して前記メディアキャプチャプレビューにオーバーレイされた、前記選択された拡張又は仮想相対オブジェクトを表示するように構成されている、
請求項１７に記載の電子デバイス。
【請求項１９】
前記１つ以上のプロセッサは、前記第２のユーザ入力の検出に応じて、前記メディアキャプチャプレビューにオーバーレイされた前記レチクル要素の表示を停止するように更に構成されている、
請求項１７に記載の電子デバイス。
【請求項２０】
前記１つ以上のプロセッサは、前記１つ以上の入力デバイスを介して、前記拡張現実又は仮想現実オブジェクトとの対話に対応する第３のユーザ入力を検出し、
前記第３のユーザ入力の検出に応じて、前記第３のユーザ入力の１つ以上の特性に少なくとも部分的に基づいて、前記拡張現実又は仮想現実オブジェクトを修正する、ように更に構成されている、
請求項１７に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、概して、検出された平面及び／又は四分木が仮想基体として使用されることを可能にする電子デバイスを含むが、これらに限定されない、シーン内の平面及び／又は四分木を検出することに関する。
【背景技術】
【０００２】
マッピングされていないシーン又は動的なシーン内に拡張現実／仮想現実（ＡＲ／ＶＲ）オブジェクトを配置することは、少なくともユーザエクスペリエンスの視点から課題を提示する。ＡＲ／ＶＲオブジェクトが、好適な仮想基体を用いることなくシーン内に配置されると、ＡＲ／ＶＲオブジェクトが、シーン内にある現実世界の表面に固定されない場合がある。したがって、ＡＲ／ＶＲが空中で浮遊するか、現実世界のオブジェクトを遮蔽するか、又は現実世界のオブジェクトと衝突する場合がある。これによって、現実味も真実味もない、乏しいユーザエクスペリエンスがもたらされる。
【０００３】
以下に記載される実施形態では、この課題は、ＡＲ／ＶＲオブジェクトが配置される仮想基体を提供するために、シーン内の平面又は四分木を検出し、それらの範囲を判定することによって解決される。
【発明の概要】
【０００４】
いくつかの実施形態によれば、方法は、１つ以上のプロセッサ、非一時的メモリ、画像センサ、ディスプレイ、及び１つ以上の入力デバイスを備える電子デバイスで実行される。方法は、画像センサの視野内のオブジェクトのメディアキャプチャプレビューにオーバーレイされた、第１の外観状態のレチクル要素をディスプレイ上に表示することを含み、ここで、画像センサの視野内のオブジェクトが変化したときに、メディアキャプチャプレビューは変化する。方法は、メディアキャプチャプレビュー内の平面を検出することと、平面の検出に応じて、メディアキャプチャプレビューにオーバーレイされた第２の外観状態のレチクル要素をディスプレイ上に表示することと、を含み、レチクル要素は、第２の外観状態で表示されている間に、平面の範囲の一部のインジケーションに対応する。
【０００５】
いくつかの実施形態によれば、方法は、１つ以上のプロセッサ及び非一時的メモリを備える電子デバイスにおいて実行される。方法は、複数の画像のセットを取得することと、複数の画像のセットのそれぞれについて、３次元点群を合成することと、それぞれの３次元点群を使用して平面を構築することと、３次元点群にわたる平面のマージされたセットを特徴付ける四分木のマージされたセットを生成することと、を含む。
【０００６】
いくつかの実施形態によれば、電子デバイスは、ディスプレイ、１つ以上の入力デバイス、１つ以上のプロセッサ、非一時的メモリ、及び１つ以上のプログラムを含み、１つ以上のプログラムは非一時的メモリに記憶され、１つ以上のプロセッサによって実行されるように構成され、１つ以上のプログラムは、本明細書に開示される方法のいずれかの動作を実行する又は実行を引き起こす命令を含む。いくつかの実施形態によれば、非一時的コンピュータ可読記憶媒体は、命令を内部に記憶し、命令はディスプレイ及び１つ以上の入力デバイスを備える電子デバイスの１つ以上のプロセッサによって実行されると、デバイスに本明細書に開示される方法のいずれかの動作を実行させる又は実行を引き起こす。いくつかの実施形態によれば、電子デバイスは、ディスプレイ、１つ以上の入力デバイス、及び本明細書に開示される方法のいずれかの動作を実行する又は実行を引き起こす手段を含む。いくつかの実施形態によれば、ディスプレイ及び１つ以上の入力デバイスを備える電子デバイスにおいて使用するための情報処理装置は、本明細書に開示される方法のいずれかの動作を実行する又は引き起こす手段を含む。
【図面の簡単な説明】
【０００７】
説明される様々な実施形態をより良く理解するため、以下の図面と併せて、以下の「発明を実施するための形態」が参照されるべきであり、類似の参照番号は、以下の図の全てを通じて、対応する部分を指す。
【０００８】
【図１Ａ】いくつかの実施形態に係る、タッチ感知ディスプレイを備えるポータブル多機能デバイスを示すブロック図である。
【図１Ｂ】いくつかの実施形態に係る、イベント処理のための例示的な構成要素を示すブロック図である。
【図２】いくつかの実施形態に係る、タッチスクリーンを有するポータブル多機能デバイスを示す。
【図３】いくつかの実施形態に係る、ディスプレイ及びタッチ感知面を備える例示的な多機能デバイスのブロック図である。
【図４Ａ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｂ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｃ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｄ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｅ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｆ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｇ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｈ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｉ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｊ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｋ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｌ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図４Ｍ】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。
【図５Ａ】いくつかの実施形態に係る、四分木のセットを生成するための例示的な抽象ブロック図を示す。
【図５Ｂ】いくつかの実施形態に係る、四分木のセットを生成するための例示的な抽象ブロック図を示す。
【図６Ａ】いくつかの実施形態に係る、仮想基体を検出するための例示的なユーザインタフェースを示す。
【図６Ｂ】いくつかの実施形態に係る、仮想基体を検出するための例示的なユーザインタフェースを示す。
【図６Ｃ】いくつかの実施形態に係る、仮想基体を検出するための例示的なユーザインタフェースを示す。
【図６Ｄ】いくつかの実施形態に係る、仮想基体を検出するための例示的なユーザインタフェースを示す。
【図６Ｅ】いくつかの実施形態に係る、仮想基体を検出するための例示的なユーザインタフェースを示す。
【図６Ｆ】いくつかの実施形態に係る、仮想基体を検出するための例示的なユーザインタフェースを示す。
【図６Ｇ】いくつかの実施形態に係る、仮想基体を検出するための例示的なユーザインタフェースを示す。
【図７】いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置する方法のフロー図を示す。
【図８】いくつかの実施形態に係る、仮想基体として使用するための四分木のマージされたセットを生成する方法のフロー図を示す。
【図９】いくつかの実施形態に係る、仮想基体として使用するための四分木のセットを生成する方法のフロー図を示す。
【図１０】いくつかの実施形態に係る、仮想基体として使用するための四分木のマージされたセットを生成する方法のフロー図を示す。
【図１１】いくつかの実施形態に係る、コンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【０００９】
以下に説明する実施形態では、画像センサの視野内のシーンのメディアキャプチャプレビューを表示している間に、メディアキャプチャプレビューにオーバーレイされたレチクル要素は、第１の外観状態から第２の外観に遷移して、シーン内で平面が検出されたという視覚的な合図を提供する。以下に説明する実施形態では、第２の外観状態で表示されている間に、レチクル要素は、検出された平面の範囲を示す。したがって、以下に説明する実施形態は、仮想基体として使用される検出された平面に対して、拡張現実／仮想現実（ＡＲ／ＶＲ）オブジェクトをシーン内に配置する際に、より短い時間及びより少ないユーザ入力しか必要とされないシームレスなユーザエクスペリエンスを提供する。またこれは、ユーザがデバイスをより迅速かつ効率的に使用することを可能にすることで、電力使用量を低減し、デバイスのバッテリ寿命を改善する。
【００１０】
以下に説明する実施形態では、異なる視点又は視野についての平面又は四分木のセットは、時間次元にわたり相関されて、四分木のマージされたセットが取得され、それらが次に仮想基体として使用される。したがって、以下に説明する実施形態は、経時的なシーンの異なる視野に基づいて、仮想基体の正確な範囲を識別するプロセスを提供する。したがって、以下に説明する実施形態は、四分木（又はそれに関連付けられた平面）のマージされたセットに対して、ＡＲ／ＶＲオブジェクトをシーン内に配置する際に、より短い時間及びより少ないユーザ入力しか必要とされないシームレスなユーザエクスペリエンスを提供する。またこれは、ユーザがデバイスをより迅速かつ効率的に使用することを可能にすることで、電力使用量を低減し、デバイスのバッテリ寿命を改善する。
【００１１】
以下では、図１Ａ〜図１Ｂ、図２、図３及び図１１は、例示的なデバイスの説明を提供する。図７は、仮想基体を検出し、仮想基体の上にオブジェクトを配置する方法のフロー図を示す。図４Ａ〜図４Ｍにおけるユーザインタフェースは、図７におけるプロセスを説明するために使用される。図８〜図１０は、仮想基体として使用するための四分木のセットを生成する方法のフロー図を示す。図５Ａ〜図５Ｂにおける抽象ブロック図及び図６Ａ〜図６Ｇにおけるユーザインタフェースは、図８〜図１０におけるプロセスを示すために使用される。
例示的なデバイス
【００１２】
ここで、添付図面に実施例が示される実施形態への詳細な参照が行われる。以下の詳細な説明では、説明される様々な実施形態の完全な理解を提供するために数多くの具体的な詳細が記載されている。しかしながら、記載されている様々な実施形態は、これらの具体的な詳細を伴わずとも実践し得ることが、当業者には明らかであろう。他の例では、周知の方法、手順、構成要素、回路、及びネットワークは、実施形態の態様を不必要に不明瞭にしないよう詳細には説明されていない。
【００１３】
本明細書では、第１、第２などの用語は、いくつかの実施例で、様々な要素を説明するために使用されるが、これらの要素は、それらの用語によって限定されるべきではないことも理解されるであろう。これらの用語は、ある要素を別の要素と区別するためにのみ使用される。例えば、説明されている様々な実施形態の範囲から逸脱することなく、第１の接触は、第２の接触と称することができ、同様に、第２の接触は、第１の接触と称し得る。第１の接触及び第２の接触は両方とも接触であるが、文脈がそうではないことを明確に示さない限り、それらは同じ接触ではない。
【００１４】
本明細書に記載する様々な実施形態の説明で使用される術語は、特定の実施形態を説明することのみを目的とし、限定的であることは意図されていない。記載する様々な実施形態の説明及び添付の特許請求の範囲では、単数形の「ａ（１つ、一）」、「ａｎ（１つ、一）」、及び「ｔｈｅ（その、この）」は、文脈上別途明白に記載しない限り、複数形も同様に含むことが意図される。また、本明細書で使用されるとき、用語「及び／又は」は、関連する列挙された項目のうちの１つ以上のいずれか及び全ての考えられる組み合わせを指し、かつこれを含むことを理解されたい。用語「ｉｎｃｌｕｄｅｓ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｃｏｍｐｒｉｓｅｓ（含む、備える）」、及び／又は「ｃｏｍｐｒｉｓｉｎｇ（含む、備える）」は、本明細書で使用する場合、述べられた特徴、整数、ステップ、動作、要素、及び／又は構成要素の存在を指定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、及び／又はそれらのグループの存在又は追加を除外しないことが更に理解されるであろう。
【００１５】
本明細書に記載される場合、用語「ｉｆ（〜の場合）」は、任意選択で、文脈に依存して「ｗｈｅｎ（〜のとき）」、「ｕｐｏｎ（〜すると）」、「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｒｍｉｎｉｎｇ（〜と判定したことに応じて）」、又は「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｃｔｉｎｇ（〜を検出したことに応じて）」を意味するものと解釈される。同様に、「〜と判定された場合（if it is determined）」又は「［記載の状態又はイベント］が検出された場合（if[a stated condition or event]is detected）」という語句は、任意選択的に、文脈に応じて、「〜と判定したとき（upon determining）」若しくは「〜と判定したことに応じて（in response to determining）」、又は「［記載の状態又はイベント］を検出したとき（upon detecting[the stated condition or event]）」若しくは「［記載の状態又はイベント］を検出したことに応じて（in response to detecting[the stated condition or event]）」を意味すると解釈される。
【００１６】
電子デバイス、そのようなデバイス用のユーザインタフェース、及びそのようなデバイスを使用する関連するプロセスの実施形態が説明される。いくつかの実施形態では、デバイスは、ＰＤＡ機能及び／又は音楽プレーヤ機能などの他の機能も含む、携帯電話などのポータブル通信デバイスである。ポータブル多機能デバイスの例示的な実施形態は、Ｃｕｐｅｒｔｉｎｏ、ＣａｌｉｆｏｒｎｉａのＡｐｐｌｅ  Ｉｎｃ．からのｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）デバイスを含むが、これらに限定されない。タッチ感知面（例えば、タッチスクリーンディスプレイ及び／又はタッチパッド）を有するラップトップ又はタブレットコンピュータなどの他のポータブル電子デバイスが任意選択で使用される。いくつかの実施形態では、デバイスはポータブル通信デバイスではなく、タッチ感知面（例えば、タッチスクリーンディスプレイ及び／又はタッチパッド）を有するデスクトップコンピュータであることも理解されたい。
【００１７】
以下の論考では、ディスプレイ及びタッチ感知面を含む電子デバイスについて説明する。しかしながら、電子デバイスは任意選択で、物理キーボード、マウス、及び／又はジョイスティックなどの、１つ以上の他の物理ユーザインタフェースデバイスを含むことを理解されたい。
【００１８】
このデバイスは、典型的には、描画アプリケーション、プレゼンテーションアプリケーション、ワードプロセッシングアプリケーション、ウェブサイト作成アプリケーション、ディスクオーサリングアプリケーション、スプレッドシートアプリケーション、ゲームアプリケーション、電話アプリケーション、ビデオ会議アプリケーション、電子メールアプリケーション、インスタントメッセージングアプリケーション、トレーニングサポートアプリケーション、写真管理アプリケーション、デジタルカメラアプリケーション、デジタルビデオカメラアプリケーション、ウェブブラウジングアプリケーション、デジタル音楽再生アプリケーション、及び／又はデジタルビデオ再生アプリケーションのうちの１つ以上などの、様々なアプリケーションをサポートする。
【００１９】
本デバイス上で実行される様々なアプリケーションは、タッチ感知面などの、少なくとも１つの共通の物理ユーザインタフェースデバイスを、任意選択的に使用する。タッチ感知面の１つ以上の機能、並びにデバイス上に表示される対応する情報は、アプリケーションごとに、及び／又はそれぞれのアプリケーション内で、任意選択的に、調節及び／又は変更される。このように、デバイスの共通の物理アーキテクチャ（タッチ感知面など）は、任意選択的に、ユーザにとって直観的かつ分かり易いユーザインタフェースを備える様々なアプリケーションをサポートする。
【００２０】
ここで、タッチ感知ディスプレイを備えるポータブルデバイスの実施形態に注意を向ける。図１Ａは、いくつかの実施形態に係る、タッチ感知ディスプレイシステム１１２を備えるポータブル多機能デバイス１００を示すブロック図である。タッチ感知ディスプレイシステム１１２は、便宜上「タッチスクリーン」と呼ばれる場合もあれば、単にタッチ感知ディスプレイと呼ばれる場合もある。デバイス１００は、メモリ１０２（任意選択で、１つ以上のコンピュータ可読記憶媒体を含む）、メモリコントローラ１２２、１つ以上の処理ユニット（ＣＰＵ）１２０、周辺機器インタフェース１１８、ＲＦ回路１０８、オーディオ回路１１０、スピーカ１１１、マイクロフォン１１３、入出力（Ｉ／Ｏ）サブシステム１０６、その他の入力又は制御デバイス１１６、及び外部ポート１２４を含む。デバイス１００は、任意選択で、１つ以上の光センサ１６４を含む。デバイス１００は、任意選択で、デバイス１００（例えば、デバイス１００のタッチ感知ディスプレイシステム１１２などのタッチ感知面）上の接触の強度を検出するための、１つ以上の強度センサ１６５を含む。デバイス１００は、任意選択で、デバイス１００上で触知出力を生成する（例えばデバイス１００のタッチ感知ディスプレイシステム１１２又はデバイス３００のタッチパッド３５５などのタッチ感知面上で触知出力を生成する）１つ以上の触知出力生成器１６３を含む。これらの構成要素は、任意選択で、１つ以上の通信バス又は信号線１０３を介して通信する。
【００２１】
本明細書及び特許請求の範囲で使用されるように、用語「触知出力」は、ユーザの触覚でユーザによって検出されることになる、デバイスの従前の位置に対するそのデバイスの物理的変位、デバイスの構成要素（例えば、タッチ感知面）の、そのデバイスの別の構成要素（例えば、筐体）に対する物理的変位、又は、デバイスの質量中心に対する構成要素の変位を指す。例えば、デバイス又はデバイスの構成要素が、タッチに敏感なユーザの表面（例えば、ユーザの手の指、手のひら、又は他の部分）に接触している状況では、物理的変位によって生成された触知出力は、そのデバイス又はデバイスの構成要素の物理的特性の認識される変化に相当する触感として、ユーザによって解釈されることになる。例えば、タッチ感知面（例えば、タッチ感知ディスプレイ又はトラックパッド）の移動は、ユーザによって、物理アクチュエータボタンの「ダウンクリック」又は「アップクリック」として、任意選択的に解釈される。いくつかの場合、ユーザの動作により物理的に押された（例えば、変位された）タッチ感知面に関連付けられた物理アクチュエータボタンの移動がない時でさえ、ユーザは「ダウンクリック」又は「アップクリック」などの触感を感じる。別の例として、タッチ感知面の移動は、タッチ感知面の平滑度に変化がない場合であっても、ユーザによって、そのタッチ感知面の「粗さ」として、任意選択的に解釈又は感知される。そのようなユーザによるタッチの解釈は、ユーザの個人的な感覚認知に左右されるが、大多数のユーザに共通する、多くのタッチの感覚認知が存在する。したがって、触知出力が、ユーザの特定の感覚認知（例えば、「アップクリック」「ダウンクリック」、「粗さ」）に対応するものと記述される場合、別途記載のない限り、生成された触知出力は、典型的な（又は、平均的な）ユーザの記述された感覚認知を生成するデバイス、又はデバイスの構成要素の物理的変位に対応する。
【００２２】
デバイス１００は、ポータブル多機能デバイスの一例に過ぎず、デバイス１００は、任意選択で、示されているものよりも多くの構成要素又は少ない構成要素を有するか、任意選択で、２つ以上の構成要素を組み合わせるか、又は、任意選択で、それらの構成要素の異なる構成若しくは配置を有すると理解されたい。図１Ａに示された様々な構成要素は、１つ以上の信号処理回路及び／又は特定用途向け集積回路を含む、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせで実装される。
【００２３】
メモリ１０２は、任意選択で、高速ランダムアクセスメモリを含み、また任意選択で、１つ以上の磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステートメモリデバイスなどの不揮発性メモリも含む。ＣＰＵ（単数又は複数）１２０及び周辺機器インタフェース１１８などのデバイス１００の他の構成要素によるメモリ１０２へのアクセスは、任意選択で、メモリコントローラ１２２により制御される。
【００２４】
デバイスの入力及び出力周辺機器を、ＣＰＵ（単数又は複数）１２０及びメモリ１０２に結合させるために、周辺機器インタフェース１１８を使用することができる。１つ以上のプロセッサ１２０は、メモリ１０２に記憶された様々なソフトウェアプログラム及び／又は命令セットを動作させるか、又は実行して、デバイス１００のための様々な機能を実行し、データを処理する。
【００２５】
いくつかの実施形態では、周辺機器インタフェース１１８、ＣＰＵ（単数又は複数）１２０、及びメモリコントローラ１２２は、任意選択で、チップ１０４などの単一チップに実装される。いくつかの他の実施形態では、それらは、任意選択で、別々のチップに実装される。
【００２６】
ＲＦ（無線周波数）回路１０８は、電磁信号とも呼ばれるＲＦ信号を受信及び送信する。ＲＦ回路１０８は、電気信号を電磁信号に、又は電磁信号を電気信号に変換し、電磁信号を介して通信ネットワーク及び他の通信デバイスと通信する。ＲＦ回路１０８は、任意選択で、これらの機能を実行するための周知の回路を含み、それらの回路としては、限定するものではないが、アンテナシステム、ＲＦ送受信機、１つ以上の増幅器、同調器、１つ以上の発振器、デジタルシグナルプロセッサ、ＣＯＤＥＣチップセット、加入者識別モジュール（ＳＩＭ）カード、メモリなどが挙げられる。ＲＦ回路１０８は、任意選択で、Ｂｌｕｅｔｏｏｔｈ（登録商標）ネットワークなどのパーソナルエリアネットワーク（ＰＡＮ）、８０２．１１ｘＷｉ−Ｆｉネットワークなどのローカルエリアネットワーク（ＬＡＮ）、及び／又は４Ｇセルラネットワークなどのワイドエリアネットワーク（ＷＡＮ）と通信する。
【００２７】
オーディオ回路１１０、スピーカ１１１、及びマイクロフォン１１３は、ユーザとデバイス１００との間のオーディオインタフェースを提供する。オーディオ回路１１０は、周辺機器インタフェース１１８からオーディオデータを受信し、このオーディオデータを電気信号に変換し、この電気信号をスピーカ１１１に伝送する。スピーカ１１１は、電気信号を人間の可聴音波に変換する。また、オーディオ回路１１０は、マイクロフォン１１３によって音波から変換された電気信号を受信する。オーディオ回路１１０は、電気信号をオーディオデータに変換し、このオーディオデータを処理のために周辺機器インタフェース１１８に伝送する。オーディオデータは、任意選択で、周辺機器インタフェース１１８によって、メモリ１０２及び／若しくはＲＦ回路１０８から取得され、かつ／又はメモリ１０２及び／若しくはＲＦ回路１０８に伝送される。いくつかの実施形態では、オーディオ回路１１０は、ヘッドセットジャック（例えば、２１２、図２）も含む。ヘッドセットジャックは、オーディオ回路１１０と、出力専用ヘッドホン又は出力（例えば片耳又は両耳用のヘッドホン）及び入力（例えばマイクロフォン）の両方を備えるヘッドセットなどの着脱可能なオーディオ入出力周辺機器との間のインタフェースを提供する。
【００２８】
Ｉ／Ｏサブシステム１０６は、タッチ感知ディスプレイシステム１１２及びその他の入力又は制御デバイス１１６などのデバイス１００における入出力周辺機器を周辺機器インタフェース１１８と結合する。Ｉ／Ｏサブシステム１０６は、任意選択で、ディスプレイコントローラ１５６、光センサコントローラ１５８、強度センサコントローラ１５９、触覚フィードバックコントローラ１６１、及び他の入力若しくは制御デバイスのための１つ以上の入力コントローラ１６０を含む。１つ以上の入力コントローラ１６０は、他の入力若しくは制御デバイス１１６から電気信号を受信する、又は、他の入力若しくは制御デバイス１１６に電気信号を送信する。他の入力又は制御デバイス１１６は、任意選択で、物理的ボタン（例えば、プッシュボタン、ロッカボタンなど）、ダイヤル、スライダスイッチ、ジョイスティック、クリックホイールなどを含む。いくつかの代替的実施形態では、入力コントローラ（単数又は複数）１６０は、任意選択で、キーボード、赤外線ポート、ＵＳＢポート、スタイラス、及び／又はマウスなどのポインタデバイスのうちのいずれかに結合される（又は、いずれにも結合されない）。１つ以上のボタン（例えば、２０８、図２）は、任意選択で、スピーカ１１１及び／又はマイクロフォン１１３の音量制御のためのアップ／ダウンボタンを含む。１つ以上のボタンは、任意選択で、プッシュボタン（例えば、２０６、図２）を含む。
【００２９】
タッチ感知ディスプレイシステム１１２は、デバイスとユーザとの間の入力インタフェース及び出力インタフェースを提供する。ディスプレイコントローラ１５６は、タッチ感知ディスプレイシステム１１２から電気信号を受信し、及び／又はタッチ感知ディスプレイシステム１１２に電気信号を送信する。タッチ感知ディスプレイシステム１１２は、ユーザに視覚出力を表示する。この視覚出力は、任意選択で、グラフィック、テキスト、アイコン、ビデオ、及びそれらの任意の組み合わせ（「グラフィック」と総称する）を含む。いくつかの実施形態では、視覚出力の一部又は全ては、ユーザインタフェースオブジェクトに対応する。
【００３０】
タッチ感知ディスプレイシステム１１２は、触覚／触知の接触に基づくユーザからの入力を受け付けるタッチ感知面、センサ、又はセンサのセットを有する。（メモリ１０２内の任意の関連付けられたモジュール及び／又は命令セットとともに）タッチ感知ディスプレイシステム１１２及びディスプレイコントローラ１５６は、タッチ感知ディスプレイシステム１１２における接触（及び、接触の任意の移動又は中断）を検出し、検出された接触をタッチ感知ディスプレイシステム１１２上に表示されるユーザインタフェースオブジェクト（例えば、１つ以上のソフトキー、アイコン、ウェブページ、又は画像）との相互作用に変換する。例示的な実施形態では、タッチ感知ディスプレイシステム１１２とユーザとの間の接触点は、ユーザの指又はスタイラスに対応する。
【００３１】
タッチ感知ディスプレイシステム１１２は、任意選択で、ＬＣＤ（液晶ディスプレイ）技術、ＬＰＤ（発光ポリマディスプレイ）技術、又はＬＥＤ（発光ダイオード）技術を使用するが、他の実施形態では、他のディスプレイ技術が使用される。タッチ感知ディスプレイシステム１１２及びディスプレイコントローラ１５６は、任意選択で、容量技術、抵抗性技術、赤外線技術、及び表面音響波技術、並びに、タッチ感知ディスプレイシステム１１２との１つ以上の接触点を判定するための他の近接センサアレイ又は他の要素を含むが、これらに限定されない、現在既知の又は後に開発される複数のタッチ感知技術のうちのいずれかを使用して、接触及びその任意の移動又は中断を検出する。例示的な実施形態では、Ｃｕｐｅｒｔｉｎｏ、ＣａｌｉｆｏｒｎｉａのＡｐｐｌｅ  Ｉｎｃ．からのｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）などにおいて見られるような、投影型相互容量感知技術が使用される。
【００３２】
タッチ感知ディスプレイシステム１１２は、任意選択で、１００ｄｐｉを超えるビデオ解像度を有する。いくつかの実施形態では、タッチスクリーンのビデオ解像度は、４００ｄｐｉを超える（例えば、５００ｄｐｉ、８００ｄｐｉ、又はそれより高い）。ユーザは、任意選択で、スタイラス、指などの任意の適切なオブジェクト又は付属物を使用して、タッチ感知ディスプレイシステム１１２と接触する。いくつかの実施形態では、ユーザインタフェースは、指に基づく接触及びジェスチャで機能するように設計されるが、これらは、タッチスクリーン上での指の接触面積がスタイラスの接触面積よりも大きいことに起因して、スタイラスに基づく入力よりも精度が低い場合がある。いくつかの実施形態では、デバイスは、指に基づく粗い入力を、ユーザによって所望されているアクションを実行するための、正確なポインタ／カーソルの位置又はコマンドに変換する。
【００３３】
いくつかの実施形態では、タッチスクリーンに加えて、デバイス１００は、任意選択で、特定の機能をアクティブ化又は非アクティブ化するためのタッチパッドを含む。いくつかの実施形態では、タッチパッドは、タッチスクリーンとは異なり、視覚出力を表示しない、デバイスのタッチ感知エリアである。タッチパッドは、任意選択で、タッチ感知ディスプレイシステム１１２とは別個のタッチ感知面であるか、又はタッチスクリーンによって形成されたタッチ感知面の拡張部である。
【００３４】
デバイス１００は、様々な構成要素に電力を供給する電力システム１６２も含む。電力システム１６２は、任意選択で、電力管理システム、１つ以上の電源（例えば、バッテリ、交流（ＡＣ））、再充電システム、停電検出回路、電力コンバータ又は電力インバータ、電力状態インジケータ（例えば、発光ダイオード（ＬＥＤ））、並びにポータブルデバイス内での電力の生成、管理、及び分配に関連付けられた任意の他の構成要素を含む。
【００３５】
デバイス１００は、任意選択で、１つ以上の光センサ１６４（本明細書では「画像センサ」又は「カメラアセンブリ」と呼ばれる場合もある）も含む。図１Ａは、Ｉ／Ｏサブシステム１０６内の光センサコントローラ１５８に結合された光センサを示す。光センサ（単数又は複数）１６４は、任意選択で、電荷結合デバイス（ＣＣＤ）又は相補型金属酸化膜半導体（ＣＭＯＳ）フォトトランジスタを含む。光センサ（単数又は複数）１６４は、１つ以上のレンズを通じて投影された、周囲環境からの光を受信し、この光を画像を表すデータに変換する。撮像モジュール１４３（カメラモジュールとも呼ばれる）と連携して、光センサ（単数又は複数）１６４は、任意選択で、静止画像及び／又はビデオをキャプチャする。いくつかの実施形態では、タッチスクリーンを静止画像及び／又はビデオ画像の取得のためのビューファインダとして使用することができるように、光センサは、デバイスの前面におけるタッチ感知ディスプレイシステム１１２の反対である、デバイス１００の背面に配置される。いくつかの実施形態では、ユーザの画像が取得されるように（例えば、自撮りのため、ユーザがタッチスクリーン上で他のビデオ会議参加者を見ている間のビデオ会議のためなど）、別の光センサがデバイスの前面に配置される。
【００３６】
デバイス１００は、任意選択で、１つ以上の接触強度センサ１６５も含む。図１Ａは、Ｉ／Ｏサブシステム１０６内の強度センサコントローラ１５９に結合された接触強度センサを示す。接触強度センサ（単数又は複数）１６５は、任意選択で、１つ以上のピエゾ抵抗ひずみゲージ、容量式力センサ、電気式力センサ、圧電式力センサ、光学式力センサ、容量式タッチ感知面、又は他の強度センサ（例えば、タッチ感知面上の接触の力（若しくは圧力）を測定するために使用されるセンサ）を含む。接触強度センサ（単数又は複数）１６５は、周囲環境から接触強度情報（例えば、圧力情報又は圧力情報の代用となる情報）を受信する。いくつかの実施形態では、少なくとも１つの接触強度センサは、タッチ感知面（例えばタッチ感知ディスプレイシステム１１２）と並置される、又はそれに近接される。いくつかの実施形態では、少なくとも１つの接触強度センサは、デバイス１００の前面に位置するタッチスクリーンディスプレイシステム１１２の反対である、デバイス１００の背面に配置される。
【００３７】
デバイス１００は、任意選択で、１つ以上の近接センサ１６６も含む。図１Ａは、周辺機器インタフェース１１８に結合された、近接センサ１６６を示す。あるいは、近接センサ１６６は、Ｉ／Ｏサブシステム１０６内の入力コントローラ１６０に結合される。いくつかの実施形態では、近接センサは、（例えば、ユーザが通話を行っているときに）多機能デバイスがユーザの耳の近くに配置されると、タッチ感知ディスプレイシステム１１２をターンオフ及び使用禁止にする。
【００３８】
デバイス１００は、任意選択で、１つ以上の触知出力生成器１６３を含む。図１Ａは、Ｉ／Ｏサブシステム１０６内の触覚フィードバックコントローラ１６１に結合された触知出力生成器を示す。触知出力生成器（単数又は複数）１６３は、任意選択で、スピーカ若しくは他のオーディオ構成要素などの１つ以上の電気音響デバイス、及び／又はモータ、ソレノイド、電気活性ポリマ、圧電アクチュエータ、静電アクチュエータ、若しくは他の触知出力生成構成要素（例えば、デバイス上で電気信号を触知出力に変換する構成要素）などの、エネルギーを直線運動に変換する電気機械デバイスを含む。触知出力生成器（単数又は複数）１６３は、触覚フィードバックモジュール１３３から触知フィードバック生成命令を受信し、デバイス１００のユーザが感知できる触知出力をデバイス１００上で生成する。いくつかの実施形態では、少なくとも１つの触知出力生成器は、タッチ感知面（例えば、タッチ感知ディスプレイシステム１１２）に配置されているか、又はそれに近接しており、任意選択で、タッチ感知面を垂直方向（例えば、デバイス１００の表面の内／外）に、又は水平方向（例えば、デバイス１００の表面と同じ平面内の前後）に動かすことによって、触知出力を生成する。いくつかの実施形態では、少なくとも１つの触知出力生成器センサは、デバイス１００の前面に位置するタッチ感知ディスプレイシステム１１２の反対である、デバイス１００の背面に配置される。
【００３９】
デバイス１００は、任意選択で、デバイスの位置（例えば、姿勢）に関する情報を取得するための、１つ以上の加速度計１６７、ジャイロスコープ１６８、及び／又は磁気計１６９（例えば、慣性測定ユニット（inertial measurement unit、ＩＭＵ）の一部として）も含む。図１Ａは、周辺機器インタフェース１１８に結合されたセンサ１６７、１６８、及び１６９を示す。あるいは、センサ１６７、１６８、及び１６９は、任意選択で、Ｉ／Ｏサブシステム１０６内の入力コントローラ１６０に結合される。いくつかの実施形態では、情報は、１つ以上の加速度計から受信されたデータの分析に基づいて、縦長ビュー又は横長ビュー内でタッチスクリーンディスプレイ上に表示される。デバイス１００は、任意選択で、デバイス１００の場所に関する情報を取得するためのＧＰＳ（若しくはＧＬＯＮＡＳＳ又は他の全地球的航法システム）受信機を含む。
【００４０】
いくつかの実施形態では、メモリ１０２に記憶されたソフトウェア構成要素は、オペレーティングシステム１２６、通信モジュール（又は、命令セット）１２８、接触／動きモジュール（又は、命令セット）１３０、グラフィックモジュール（又は、命令セット）１３２、触覚フィードバックモジュール（又は、命令セット）１３３、テキスト入力モジュール（又は、命令セット）１３４、全地球測位システム（ＧＰＳ）モジュール（又は、命令セット）１３５、及びアプリケーション（又は、命令セット）１３６を含む。更に、いくつかの実施形態では、図１Ａ及び図３に示すように、メモリ１０２は、デバイス／グローバル内部状態１５７を記憶する。デバイス／グローバル内部状態１５７は、現在アクティブ状態のアプリケーションがある場合に、どのアプリケーションがアクティブであるかを示す、アクティブアプリケーション状態、アプリケーション、ビュー、又は他の情報がタッチ感知ディスプレイシステム１１２の様々な領域を占有していることを示す表示状態、デバイスの様々なセンサ及び他の入力又は制御デバイス１１６から取得される情報を含むセンサ状態、並びにデバイスの位置及び／又は姿勢に関する場所情報及び／若しくは位置情報、のうちの１つ以上を含む。
【００４１】
オペレーティングシステム１２６（例えば、ｉＯＳ、ＭａｃＯＳ、Ｄａｒｗｉｎ、ＬＩＮＵＸ、ＵＮＩＸ（登録商標）、ＷＩＮＤＯＷＳ（登録商標）、又はＶｘＷｏｒｋｓなどの組み込みオペレーティングシステム）は、汎用システムタスク（例えば、メモリ管理、記憶デバイス制御、電力管理など）を制御及び管理するための様々なソフトウェア構成要素及び／又はドライバを含み、様々なハードウェア構成要素とソフトウェア構成要素との間の通信を促進する。
【００４２】
通信モジュール１２８は、１つ以上の外部ポート１２４を介する他のデバイスとの通信を容易にし、ＲＦ回路１０８及び／又は外部ポート１２４が受信したデータを処理するための様々なソフトウェア構成要素も含む。外部ポート１２４（例えばユニバーサルシリアルバス（ＵＳＢ）、ＦＩＲＥＷＩＲＥ（登録商標）など）は、直接的に、又はネットワーク（例えばインターネット、無線ＬＡＮなど）を介して間接的に、他のデバイスに結合されるように適合されている。いくつかの実施形態では、外部ポートは、Ｃｕｐｅｒｔｉｎｏ、ＣａｌｉｆｏｒｎｉａのＡｐｐｌｅ  Ｉｎｃ．からのいくつかのｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）デバイスにおいて使用される３０ピンコネクタと同一若しくは類似した、及び／又は互換性のあるマルチピン（例えば、３０ピン）コネクタである。いくつかの実施形態では、外部ポートは、Ｃｕｐｅｒｔｉｎｏ、ＣａｌｉｆｏｒｎｉａのＡｐｐｌｅ  Ｉｎｃ．からのいくつかのｉＰｈｏｎｅ（登録商標）、ｉＰｏｄ  Ｔｏｕｃｈ（登録商標）、及びｉＰａｄ（登録商標）デバイスにおいて使用されるＬｉｇｈｔｎｉｎｇコネクタと同一若しくは類似した、及び／又は互換性のあるＬｉｇｈｔｎｉｎｇコネクタである。
【００４３】
接触／動きモジュール１３０は、任意選択で、タッチ感知ディスプレイシステム１１２との接触（ディスプレイコントローラ１５６と連携して）、及び他のタッチ感知デバイス（例えば、タッチパッド又は物理クリックホイール）との接触を検出する。接触／動きモジュール１３０は、接触が発生したかどうかの判定（例えば、フィンガダウンイベントの検出）、接触の強度（例えば、接触の力若しくは圧力、又は、接触の力若しくは圧力に代わるもの）の判定、タッチ感知面にわたる接触の移動及びその移動の追跡（例えば、１つ以上のフィンガドラッグイベントの検出）があるかどうかの判定、並びに接触が解消されたかどうか（例えば、フィンガアップイベント又は接触の中断の検出）の判定などの、（例えば、指又はスタイラスによる）接触の検出に関係する様々な動作を実行するための、ソフトウェア構成要素を含む。接触／動きモジュール１３０は、タッチ感知面から接触データを受信する。一連の接触データによって表される、接触点の移動を判定することは、任意選択で、接触点の速さ（大きさ）、速度（大きさ及び方向）、及び／又は加速度（大きさ及び／又は方向の変化）を判定することを含む。これらの動作は、任意選択で、単一の接触（例えば、１本の指の接触若しくはスタイラスの接触）、又は複数の同時接触（例えば、「マルチタッチ」／複数の指の接触及び／若しくはスタイラスの接触）に適用される。いくつかの実施形態では、接触／動きモジュール１３０及びディスプレイコントローラ１５６は、タッチパッド上の接触を検出する。
【００４４】
接触／動きモジュール１３０は、任意選択で、ユーザによって入力されたジェスチャを検出する。タッチ感知面上の異なるジェスチャは、異なる接触パターン（例えば検出される接触の異なる動き、タイミング、及び／又は強度）を有する。したがって、ジェスチャは、任意選択で、特定の接触パターンを検出することによって検出される。例えば、指のタップジェスチャを検出することは、フィンガダウンイベントを検出し、続いて（例えば、アイコンの位置での）そのフィンガダウンイベントと同一の位置（又は、実質的に同一の位置）でのフィンガアップ（リフトオフ）イベントを検出することを含む。別の実施例として、タッチ感知面上の指のスワイプジェスチャを検出することは、フィンガダウンイベントを検出し、続いて１つ以上の指のドラッグイベントを検出し、その後、フィンガアップ（リフトオフ）イベントを検出することを含む。同様に、タップ、スワイプ、ドラッグ、及び他のジェスチャは、任意選択で、スタイラスに対して、スタイラスに対する特定の接触パターンを検出することにより、検出される。
【００４５】
グラフィックモジュール１３２は、表示されるグラフィックの視覚的影響（例えば、輝度、透明度、彩度、コントラスト、又は他の視覚特性）を変更するための構成要素を含む、タッチ感知ディスプレイシステム１１２又は他のディスプレイ上でグラフィックをレンダリング及び表示するための様々な既知のソフトウェア構成要素を含む。本明細書で使用される場合、用語「グラフィック」は、テキスト、ウェブページ、アイコン（ソフトキーを含むユーザインタフェースオブジェクトなど）、デジタル画像、ビデオ、及びアニメーションなどを含むがこれらに限定されない、ユーザに対して表示することができるいずれかのオブジェクトを含む。
【００４６】
いくつかの実施形態では、グラフィックモジュール１３２は、使用されることになるグラフィックを表すデータを記憶する。各グラフィックには、任意選択で、対応するコードが割り当てられる。グラフィックモジュール１３２は、アプリケーションなどから、必要に応じて、座標データ及び他のグラフィック特性データと共に表示されることとなるグラフィックを指定する１つ以上のコードを受信し、次にディスプレイコントローラ１５６に出力するスクリーンの画像データを生成する。
【００４７】
触覚フィードバックモジュール１３３は、デバイス１００とのユーザ対話に応じて、デバイス１００上の１つ以上の場所で触知出力を生成するために、触知出力生成器（単数又は複数）１６３によって使用される命令を生成するための、様々なソフトウェア構成要素を含む。
【００４８】
任意選択でグラフィックモジュール１３２の構成要素であるテキスト入力モジュール１３４は、様々なアプリケーション（例えば、連絡先モジュール１３７、電子メールモジュール１４０、ＩＭモジュール１４１、ウェブブラウザモジュール１４７、及びテキスト入力を受け取る任意の他のアプリケーション）でテキストを入力するためのソフトキーボードを提供する。
【００４９】
ＧＰＳモジュール１３５は、デバイスの位置を判定し、この情報を様々なアプリケーションで使用するために（例えば、ロケーションベースのダイヤルに使用するための電話１３８へ、ピクチャ／ビデオのメタデータとしてカメラ１４３へ、並びに気象ウィジェット、地方のイエローページウィジェット、及び地図／ナビゲーションウィジェットなどのロケーションベースのサービスを提供するアプリケーションへ）提供する。
【００５０】
アプリケーション１３６は、任意選択で、以下のモジュール（若しくは命令セット）、又はそれらのサブセット若しくはスーパーセットを含む：連絡先モジュール１３７（アドレス帳又は連絡先リストと呼ばれる場合もある）、電話モジュール１３８、ビデオ会議モジュール１３９、電子メールクライアントモジュール１４０、インスタントメッセージング（ＩＭ）モジュール１４１、健康／トレーニングモジュール１４２、静止画像及び／又はビデオ画像のためのカメラモジュール１４３、画像管理モジュール１４４、ウェブブラウザモジュール１４７、カレンダモジュール１４８、任意選択で天気ウィジェット、株価ウィジェット、計算機ウィジェット、アラーム時計ウィジェット、辞書ウィジェット、及びユーザによって取得された他のウィジェット、並びにユーザ作成ウィジェットのうちの１つ以上を含むウィジェットモジュール１４９、ユーザ作成ウィジェットを作成するためのウィジェット作成モジュール１５０、検索モジュール１５１、任意選択でビデオプレーヤモジュールと音楽プレーヤモジュールとから構成されたビデオ及び音楽プレーヤモジュール１５２、メモモジュール１５３、地図モジュール１５４、及び／又はオンラインビデオモジュール１５５。
【００５１】
任意選択でメモリ１０２に記憶される他のアプリケーション１３６の例としては、他のワードプロセッシングアプリケーション、他の画像編集アプリケーション、描画アプリケーション、プレゼンテーションアプリケーション、ＪＡＶＡ（登録商標）対応アプリケーション、暗号化、デジタル著作権管理、音声認識、及び音声複製が挙げられる。
【００５２】
上記特定されたモジュール及びアプリケーションの各々は、上記説明された１つ以上の機能、並びに本出願で説明される方法（例えば、コンピュータにより実行される方法、及び本明細書で説明される他の情報処理方法）を実行する実行可能な命令セットに対応する。それらのモジュール（すなわち、命令セット）は、別々のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、よって、それらのモジュールの様々なサブセットは、任意選択で、様々な実施形態において、組み合わされ、又はその他の方式で再配置される。いくつかの実施形態では、メモリ１０２は、任意選択で、上記で特定したモジュール及びデータ構造のサブセットを記憶する。更に、メモリ１０２は、任意選択で、上記で説明されていない追加のモジュール及びデータ構造を記憶する。
【００５３】
いくつかの実施形態では、デバイス１００は、そのデバイスにおける所定の機能のセットの動作がタッチスクリーン及び／又はタッチパッドのみを通じて実行されるデバイスである。デバイス１００が動作するための主要な入力コントロールデバイスとしてタッチスクリーン及び／又はタッチパッドを使用することによって、デバイス１００における物理的な入力コントロールデバイス（プッシュボタン、ダイヤルなど）の数は任意選択で削減される。
【００５４】
タッチスクリーン及び／又はタッチパッドを通じてのみ実行される所定の機能のセットは、任意選択で、ユーザインタフェース間のナビゲーションを含む。いくつかの実施形態では、タッチパッドは、ユーザによってタッチされたときに、デバイス１００上に表示される任意のユーザインタフェースから、メインメニュー、ホームメニュー、又はルートメニューにデバイス１００をナビゲートする。このような実施形態では、「メニューボタン」は、タッチパッドを使用して実装される。いくつかの他の実施形態では、メニューボタンは、タッチパッドではなく、物理的なプッシュボタン又は他の物理的な入力コントロールデバイスである。
【００５５】
図１Ｂは、いくつかの実施形態に係る、イベント処理のための例示的な構成要素を示すブロック図である。いくつかの実施形態では、メモリ１０２（図１Ａ）又は３７０（図３）は、イベントソート部１７０（例えば、オペレーティングシステム１２６内）及びそれぞれのアプリケーション１３６−１（例えば、上述したアプリケーション１３６、１３７〜１５５、３８０〜３９０のうちのいずれか）を含む。
【００５６】
イベントソート部１７０は、イベント情報を受信し、イベント情報が配信されるアプリケーション１３６−１及びアプリケーション１３６−１のアプリケーションビュー１９１を判定する。イベントソート部１７０は、イベントモニタ１７１及びイベントディスパッチャモジュール１７４を含む。いくつかの実施形態では、アプリケーション１３６−１は、アプリケーションがアクティブ又は実行中のとき、タッチ感知ディスプレイシステム１１２上で表示される現在のアプリケーションビュー（単数又は複数）を示すアプリケーション内部状態１９２を含む。いくつかの実施形態では、デバイス／グローバル内部状態１５７は、どのアプリケーション（単数又は複数）が現在アクティブであるかを判定するためにイベントソート部１７０によって使用され、アプリケーション内部状態１９２は、イベント情報が配信されるアプリケーションビュー１９１を判定するためにイベントソート部１７０によって使用される。
【００５７】
いくつかの実施形態では、アプリケーション内部状態１９２は、アプリケーション１３６−１が実行を再開するときに使用される再開情報、アプリケーション１３６−１によって表示されている又は表示される準備ができている情報を示すユーザインタフェース状態情報、ユーザがアプリケーション１３６−１の以前の状態又はビューに戻ることを可能にする状態待ち行列、及びユーザが行った以前のアクションのリドゥ／アンドゥ待ち行列のうちの１つ以上などの追加の情報を含む。
【００５８】
イベントモニタ１７１は、周辺機器インタフェース１１８からイベント情報を受信する。イベント情報は、サブイベント（例えば、マルチタッチジェスチャの一部としての、タッチ感知ディスプレイシステム１１２上のユーザのタッチ）についての情報を含む。周辺機器インタフェース１１８は、Ｉ／Ｏサブシステム１０６、あるいは、近接センサ１６６、加速度計（単数若しくは複数）１６７、ジャイロスコープ（単数若しくは複数）１６８、磁気計（単数若しくは複数）１６９、及び／又は（オーディオ回路１１０を介する）マイクロフォン１１３などのセンサから受信する情報を送信する。周辺機器インタフェース１１８がＩ／Ｏサブシステム１０６から受信する情報は、タッチ感知ディスプレイシステム１１２又はタッチ感知面からの情報を含む。
【００５９】
いくつかの実施形態では、イベントモニタ１７１は、所定の間隔で周辺機器インタフェース１１８に要求を送信する。それに応じて、周辺機器インタフェース１１８は、イベント情報を伝送する。他の実施形態では、周辺機器インタフェース１１８は、重要なイベント（例えば、所定のノイズ閾値を上回り、及び／又は所定の期間よりも長い入力を受信すること）が存在するときのみ、イベント情報を送信する。
【００６０】
いくつかの実施形態では、イベントソート部１７０は、ヒットビュー判定モジュール１７２及び／又はアクティブイベント認識部判定モジュール１７３を含む。
【００６１】
ヒットビュー判定モジュール１７２は、タッチ感知ディスプレイシステム１１２が２つ以上のビューを表示するとき、１つ以上のビュー内のどこにおいてサブイベントが行われるかを判定するためのソフトウェア手順を提供する。ビューは、ユーザがディスプレイ上で見ることができる制御要素及び他の要素から構成されている。
【００６２】
アプリケーションに関連付けられたユーザインタフェースの別の態様は、本明細書ではアプリケーションビュー又はユーザインタフェースウィンドウと呼ばれることもあるビューのセットであり、その中で情報が表示され、タッチに基づくジェスチャが生じる。タッチが検出される（それぞれのアプリケーションの）アプリケーションビューは、任意選択で、アプリケーションのプログラム階層又はビュー階層内のプログラムレベルに対応する。例えば、タッチが検出される最下位レベルビューは、任意選択で、ヒットビューと呼ばれ、また、適切な入力として認識されるイベントのセットは、任意選択で、タッチに基づくジェスチャを開始する最初のタッチのヒットビューに少なくとも部分的に基づいて判定される。
【００６３】
ヒットビュー判定モジュール１７２は、タッチに基づくジェスチャのサブイベントに関連する情報を受信する。アプリケーションが階層状に構成された複数のビューを有するときには、ヒットビュー判定モジュール１７２は、サブイベントを処理すべき、階層内の最下位のビューとしてのヒットビューを特定する。ほとんどの状況では、ヒットビューは、開始するサブイベント（すなわち、イベント又は潜在的なイベントを形成する一連のサブイベントにおける最初のサブイベント）が発生する最下位レベルのビューである。ヒットビューがヒットビュー判定モジュールによって特定されると、ヒットビューは典型的には、それがヒットビューとして特定された同一のタッチ又は入力元に関連する全てのサブイベントを受信する。
【００６４】
アクティブイベント認識部判定モジュール１７３は、ビュー階層内のどのビュー（単数又は複数）がサブイベントの特定のシーケンスを受信すべきかを判定する。いくつかの実施形態では、アクティブイベント認識部判定モジュール１７３は、ヒットビューのみがサブイベントの特定のシーケンスを受信すべきであると判定する。他の実施形態では、アクティブイベント認識部判定モジュール１７３は、サブイベントの物理位置を含む全てのビューがアクティブに関わりがあるビューであると判定し、したがって、全てのアクティブに関わりがあるビューが、サブイベントの特定のシーケンスを受信すべきであると判定する。他の実施形態では、タッチサブイベントが１つの特定のビューに関連付けられたエリアに完全に限定された場合でも、階層内の上位のビューは、依然としてアクティブに関わりがあるビューであり続ける。
【００６５】
イベントディスパッチャモジュール１７４は、イベント情報をイベント認識部（例えばイベント認識部１８０）にディスパッチする。アクティブイベント認識部判定モジュール１７３を含むいくつかの実施形態では、イベントディスパッチャモジュール１７４は、アクティブイベント認識部判定モジュール１７３により判定されたイベント認識部にイベント情報を配信する。いくつかの実施形態では、イベントディスパッチャモジュール１７４は、それぞれのイベント受信部モジュール１８２によって取得されたイベント情報をイベント待ち行列に記憶する。
【００６６】
いくつかの実施形態では、オペレーティングシステム１２６は、イベントソート部１７０を含む。あるいは、アプリケーション１３６−１がイベントソート部１７０を含む。更に他の実施形態では、イベントソート部１７０は、独立型のモジュール、又は接触／動きモジュール１３０などの、メモリ１０２に記憶された別のモジュールの一部である。
【００６７】
いくつかの実施形態では、アプリケーション１３６−１は、それぞれがアプリケーションのユーザインタフェースのそれぞれのビュー内で発生するタッチイベントを処理する命令を含む、複数のイベント処理部１９０及び１つ以上のアプリケーションビュー１９１を含む。アプリケーション１３６−１の各アプリケーションビュー１９１は、１つ以上のイベント認識部１８０を含む。典型的には、それぞれのアプリケーションビュー１９１は、複数のイベント認識部１８０を含む。他の実施形態では、イベント認識部１８０のうちの１つ以上は、ユーザインタフェースキット、又は、アプリケーション１３６−１が方法及び他の属性を継承する上位レベルのオブジェクトなどの、別個のモジュールの一部である。いくつかの実施形態では、それぞれのイベント処理部１９０は、データ更新部１７６、オブジェクト更新部１７７、ＧＵＩ更新部１７８、及び／又はイベントソート部１７０から受信されたイベントデータ１７９、のうちの１つ以上を含む。イベント処理部１９０は、任意選択で、アプリケーション内部状態１９２を更新するために、データ更新部１７６、オブジェクト更新部１７７、又はＧＵＩ更新部１７８を利用し、又は呼び出す。あるいは、アプリケーションビュー１９１のうちの１つ以上は、１つ以上のそれぞれのイベント処理部１９０を含む。また、いくつかの実施形態では、データ更新部１７６、オブジェクト更新部１７７、及びＧＵＩ更新部１７８のうちの１つ以上は、それぞれのアプリケーションビュー１９１に含まれる。
【００６８】
それぞれのイベント認識部１８０は、イベントソート部１７０からイベント情報（例えば、イベントデータ１７９）を受信し、イベント情報からイベントを特定する。イベント認識部１８０は、イベント受信部１８２及びイベント比較部１８４を含む。いくつかの実施形態では、イベント認識部１８０は少なくとも、メタデータ１８３、及びイベント配信命令１８８（任意選択で、サブイベント配信命令を含む）のうちのサブセットも含む。
【００６９】
イベント受信部１８２は、イベントソート部１７０からイベント情報を受信する。イベント情報は、サブイベントについての情報、例えば、タッチ又はタッチの移動についての情報を含む。サブイベントに応じて、イベント情報は、サブイベントの位置などの追加の情報も含む。サブイベントがタッチの動きに関わるとき、イベント情報は、任意選択で、サブイベントの速度及び方向も含む。いくつかの実施形態では、イベントは、１つの向きから別の向きへの（例えば、縦向きから横向きへ、又はその逆の）デバイスの回転を含み、イベント情報は、デバイスの現在の向き（デバイスの姿勢とも呼ぶ）についての対応する情報を含む。
【００７０】
イベント比較部１８４は、イベント情報を、定義済みのイベント又はサブイベントの定義と比較し、その比較に基づいて、イベント又はサブイベントを判定するか、あるいはイベント又はサブイベントの状態を判定若しくは更新する。いくつかの実施形態では、イベント比較部１８４は、イベント定義１８６を含む。イベント定義１８６は、例えば、イベント１（１８７−１）、及びイベント２（１８７−２）などのイベント（例えば、所定のサブイベントのシーケンス）の定義を含む。いくつかの実施形態では、イベント１８７におけるサブイベントは、例えば、タッチの始め、タッチの終わり、タッチの移動、タッチの中止、及び複数のタッチを含む。一実施例では、イベント１（１８７−１）についての定義は、表示されたオブジェクト上のダブルタップである。ダブルタップは、例えば、表示されたオブジェクト上の予め定められた段階についての第１のタッチ（タッチの始め）、予め定められた段階についての第１のリフトオフ（タッチの終わり）、表示されたオブジェクト上の予め定められた段階についての第２のタッチ（タッチの始め）、及び予め定められた段階についての第２のリフトオフ（タッチの終わり）を含む。別の実施例では、イベント２（１８７−２）の定義は、表示されたオブジェクト上のドラッグである。ドラッグは、例えば、表示されたオブジェクト上の予め定められた段階についてのタッチ（又は、接触）、タッチ感知ディスプレイシステム１１２を横切るタッチの移動、及びタッチのリフトオフ（タッチの終わり）を含む。いくつかの実施形態では、イベントは、１つ以上の関連付けられたイベント処理部１９０に関する情報も含む。
【００７１】
いくつかの実施形態では、イベント定義１８７は、それぞれのユーザインタフェースオブジェクトについてのイベントの定義を含む。いくつかの実施形態では、イベント比較部１８４は、どのユーザインタフェースオブジェクトがサブイベントに関連付けられているかを判定するヒットテストを実行する。例えば、３つのユーザインタフェースオブジェクトがタッチ感知ディスプレイシステム１１２上で表示されるアプリケーションビューにおいて、タッチ感知ディスプレイシステム１１２上でタッチが検出されたとき、イベント比較部１８４は、３つのユーザインタフェースオブジェクトのうちのどれがタッチ（サブイベント）と関連付けられているかを判定するためにヒットテストを実行する。表示された各オブジェクトが、それぞれのイベント処理部１９０に関連付けられている場合、イベント比較部は、ヒットテストの結果を用いて、どのイベント処理部１９０をアクティブ化すべきかを判定する。例えば、イベント比較部１８４は、ヒットテストをトリガするサブイベント及びオブジェクトに関連付けられたイベント処理部を選択する。
【００７２】
いくつかの実施形態では、それぞれのイベント１８７の定義は、一連のサブイベントがイベント認識部のイベントタイプに対応するかどうかが判定されるまで、イベント情報の配信を遅らせる遅延アクションも含む。
【００７３】
それぞれのイベント認識部１８０が、一連のサブイベントはイベント定義１８６のいずれのイベントとも一致しないと判定した場合には、それぞれのイベント認識部１８０は、イベント不可能、イベント失敗、又はイベント終了の状態になり、その後は、タッチに基づくジェスチャの後続のサブイベントを無視する。この状況では、ヒットビューについてアクティブのままである他のイベント認識部があれば、そのイベント認識部は、進行中のタッチに基づくジェスチャのサブイベントの追跡及び処理を続行する。
【００７４】
いくつかの実施形態では、それぞれのイベント認識部１８０は、イベント配信システムがどのようにサブイベント配信を実行すべきかをアクティブに関与しているイベント認識部に示す構成可能なプロパティ、フラグ、及び／又はリストを有するメタデータ１８３を含む。いくつかの実施形態では、メタデータ１８３は、イベント認識部が互いにどのように対話するか、又はイベント認識部が互いにどのように対話することができるようになっているかを示す構成可能なプロパティ、フラグ、及び／又はリストを含む。いくつかの実施形態では、メタデータ１８３は、サブイベントがビュー階層又はプログラム階層における多様なレベルに配信されるかを示す構成可能なプロパティ、フラグ、及び／又はリストを含む。
【００７５】
いくつかの実施形態では、それぞれのイベント認識部１８０は、イベントの１つ以上の特定のサブイベントが認識されるときに、イベントに関連付けられたイベント処理部１９０をアクティブ化する。いくつかの実施形態では、それぞれのイベント認識部１８０は、イベントに関連付けられたイベント情報をイベント処理部１９０に配信する。イベント処理部１９０をアクティブ化することは、それぞれのヒットビューにサブイベントを送信する（及び、送信を延期する）こととは別個である。いくつかの実施形態では、イベント認識部１８０は、認識したイベントに関連付けられたフラグを投入し、そのフラグに関連付けられたイベント処理部１９０は、そのフラグを捕らえ、所定のプロセスを実行する。
【００７６】
いくつかの実施形態では、イベント配信命令１８８は、イベント処理部をアクティブ化することなくサブイベントについてのイベント情報を配信するサブイベント配信命令を含む。代わりに、サブイベント配信命令は、一連のサブイベントに関連付けられたイベント処理部に、又はアクティブに関与しているビューにイベント情報を配信する。一連のサブイベント又はアクティブに関与しているビューに関連付けられたイベント処理部は、イベント情報を受信し、所定の処理を実行する。
【００７７】
いくつかの実施形態では、データ更新部１７６は、アプリケーション１３６−１で使用されるデータを作成及び更新する。例えば、データ更新部１７６は、連絡先モジュール１３７で使用される電話番号を更新するか、又はビデオプレーヤモジュール１４５で使用されるビデオファイルを記憶する。いくつかの実施形態では、オブジェクト更新部１７７は、アプリケーション１３６−１で使用されるオブジェクトを作成及び更新する。例えば、オブジェクト更新部１７６は、新たなユーザインタフェースオブジェクトを作成するか、又はユーザインタフェースオブジェクトの位置を更新する。ＧＵＩ更新部１７８は、ＧＵＩを更新する。例えば、ＧＵＩ更新部１７８は、表示情報を準備し、タッチ感知ディスプレイ上に表示するために表示情報をグラフィックモジュール１３２に送信する。
【００７８】
いくつかの実施形態では、イベント処理部（単数又は複数）１９０は、データ更新部１７６、オブジェクト更新部１７７、及びＧＵＩ更新部１７８を含むか又はそれらへのアクセスを有する。いくつかの実施形態では、データ更新部１７６、オブジェクト更新部１７７、及びＧＵＩ更新部１７８は、それぞれのアプリケーション１３６−１又はアプリケーションビュー１９１の単一のモジュールに含まれる。他の実施形態では、それらは、２つ以上のソフトウェアモジュールに含まれる。
【００７９】
タッチ感知ディスプレイ上のユーザのタッチのイベント処理に関する前述の記載は、入力デバイスを用いて多機能デバイス１００を動作させるための他の形態のユーザ入力にも適用されるが、その全てがタッチスクリーン上で開始されるわけではないことを理解されたい。例えば、キーボードの単一又は複数の押圧若しくは保持と任意選択で連携される、マウスの移動及びマウスボタンの押圧、タッチパッド上のタップ、ドラッグ、スクロールなどの接触の移動、ペンスタイラス入力、デバイスの移動、口頭による命令、検出された目の動き、バイオメトリック入力、並びに／又はそれらの任意の組み合わせが、任意選択で、認識されるべきイベントを定義するサブイベントに対応する入力として利用される。
【００８０】
図２は、いくつかの実施形態に係る、タッチスクリーン（例えば、タッチ感知ディスプレイシステム１１２、図１Ａ）を有するポータブル多機能デバイス１００を示す。タッチスクリーンは、任意選択で、ユーザインタフェース（ＵＩ）２００内に１つ以上のグラフィックを表示する。本実施形態、並びに以下で説明される他の実施形態では、ユーザは、例えば、１本以上の指２０２（図には正確な縮尺では描かれていない）又は１つ以上のスタイラス２０３（図には正確な縮尺では描かれていない）を使用して、グラフィック上でジェスチャを実施することによって、それらのグラフィックのうちの１つ以上を選択することが可能となる。いくつかの実施形態では、１つ以上のグラフィックの選択は、ユーザが、その１つ以上のグラフィックとの接触を中断する場合に実施される。いくつかの実施形態では、ジェスチャは、任意選択で、１回以上のタップ、１回以上のスワイプ（左から右へ、右から左へ、上向きに及び／若しくは下向きに）、並びに／又は、デバイス１００と接触した指のローリング（右から左へ、左から右へ、上向きに及び／若しくは下向きに）を含む。いくつかの実施装形態又は状況では、グラフィックとの不測の接触は、そのグラフィックを選択しない。例えば、選択に対応するジェスチャがタップである場合、アプリケーションアイコンの上をスイープするスワイプジェスチャは、任意選択で、対応するアプリケーションを選択しない。
【００８１】
デバイス１００は、任意選択で、「ホーム」又はメニューボタン２０４などの１つ以上の物理的ボタンも含む。前述のように、メニューボタン２０４は、任意選択で、デバイス１００上で任意選択で実行される、アプリケーションのセットにおける任意のアプリケーション１３６にナビゲートするために使用される。あるいは、いくつかの実施形態では、メニューボタンは、タッチスクリーンディスプレイ上で表示されるＧＵＩ内のソフトキーとして実装される。
【００８２】
いくつかの実施形態では、デバイス１００は、タッチスクリーンディスプレイ、メニューボタン２０４、デバイスへの電源供給のオン／オフ及びデバイスのロックのためのプッシュボタン２０６、ボリューム調節ボタン（単数又は複数）２０８、加入者識別モジュール（ＳＩＭ）カードスロット２１０、ヘッドセットジャック２１２、及びドッキング／充電用外部ポート１２４を含む。プッシュボタン２０６は、任意選択で、ボタンを押し下げて、所定の期間にわたってボタンを押し下げた状態に保持することによって、デバイスの電源をオン／オフするため、ボタンを押し下げて、所定の期間が経過する前にボタンを解放することによって、デバイスをロックするため、及び／又はデバイスをロック解除する、若しくはロック解除プロセスを開始するために、使用される。いくつかの実施形態では、デバイス１００は、マイクロフォン１１３を介して、一部の機能をアクティブ化又は非アクティブ化するための口頭入力も受け入れる。デバイス１００は、任意選択で、タッチ感知ディスプレイシステム１１２上の接触強度を検出するための１つ以上の接触強度センサ１６５、及び／又はデバイス１００のユーザに対する触知出力を生成するための１つ以上の触知出力生成器１６３も含む。
【００８３】
図３は、いくつかの実施形態に係る、ディスプレイ及びタッチ感知面を有する例示的な多機能デバイスのブロック図である。デバイス３００は、ポータブル型である必要はない。いくつかの実施形態では、デバイス３００は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、マルチメディア再生デバイス、ナビゲーションデバイス、教育的デバイス（子供の学習玩具など）、ゲームシステム、又は制御デバイス（例えば、家庭用又は業務用のコントローラ）である。デバイス３００は、典型的には、１つ以上の処理ユニット（ＣＰＵ）３１０、１つ以上のネットワーク又は他の通信インタフェース３６０、メモリ３７０、及びこれらの構成要素を相互接続する１つ以上の通信バス３２０を含む。通信バス３２０は、任意選択で、システム構成要素間の通信を相互接続及び制御する回路（チップセットと呼ばれることもある）を含む。デバイス３００は、典型的にはタッチスクリーンディスプレイであるディスプレイ３４０を含む、入出力（Ｉ／Ｏ）インタフェース３３０を含む。Ｉ／Ｏインタフェース３３０は、任意選択で、キーボード及び／又はマウス（又は他のポインティングデバイス）３５０並びにタッチパッド３５５、デバイス３００上に触知出力を生成するための触知出力生成器３５７（例えば、図１Ａを参照して上記で説明された触知出力生成器（単数又は複数）１６３に類似する）、センサ３５９（例えば、図１Ａを参照して上記で説明されたセンサ１１２、１６４、１６５、１６６、１６７、１６８、及び１６９に類似する、タッチ感知センサ、光センサ、接触強度センサ、近接センサ、加速度センサ、姿勢センサ、及び／又は磁気センサ）も含む。メモリ３７０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、又は他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含み、任意選択で、１つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステート記憶デバイスなどの不揮発性メモリを含む。メモリ３７０は、任意選択で、ＣＰＵ（単数又は複数）３１０からリモートに位置する１つ以上の記憶デバイスを含む。いくつかの実施形態では、メモリ３７０は、ポータブル多機能デバイス１００（図１Ａ）のメモリ１０２に記憶されたプログラム、モジュール、及びデータ構造に類似するプログラム、モジュール、及びデータ構造、又はそれらのサブセットを記憶する。更に、メモリ３７０は、任意選択で、ポータブル多機能デバイス１００のメモリ１０２に存在しない追加のプログラム、モジュール、及びデータ構造を記憶する。例えば、デバイス３００のメモリ３７０は、任意選択で、描画モジュール３８０、プレゼンテーションモジュール３８２、ワードプロセッシングモジュール３８４、ウェブサイト作成モジュール３８６、ディスクオーサリングモジュール３８８、及び／又はスプレッドシートモジュール３９０を記憶するが、ポータブル多機能デバイス１００（図１Ａ）のメモリ１０２は、任意選択で、それらのモジュールを記憶しない。
【００８４】
上記で特定された図３における要素の各々は、任意選択で、前述のメモリデバイスのうちの１つ以上に記憶される。上記で特定されたモジュールの各々は、上記で説明された機能を実行する命令セットに対応する。上記で特定されたモジュール又はプログラム（すなわち、命令セット）は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、したがって、それらのモジュールの様々なサブセットは、任意選択で、様々な実施形態において組み合わされるか、又はその他の方式で再配置される。いくつかの実施形態では、メモリ３７０は、任意選択で、上記で特定されたモジュール及びデータ構造のサブセットを記憶する。更に、メモリ３７０は、任意選択で、上記で説明されていない追加のモジュール及びデータ構造を記憶する。
ユーザインタフェース及び関連付けられた処理
【００８５】
ここで、ディスプレイ、タッチ感知面、及び任意選択で、タッチ感知面との接触強度を検出する１つ以上のセンサを備えるポータブル多機能デバイス（ＰＭＤ）１００などの電子デバイス、又は１つ以上のプロセッサ、非一時的メモリ、ディスプレイ、及び入力デバイスを備えるデバイス３００上で実装することができるユーザインタフェース（「ＵＩ」）及び関連付けられたプロセスの実施形態に注意を向ける。
【００８６】
以下の実施例は、主に指入力（例えば、指の接触、指のタップジェスチャ、指のスワイプジェスチャなど）を参照して与えられるが、いくつかの実施形態では、それらの指の入力のうちの１つ以上は、別の入力デバイスからの入力（例えば、マウスに基づく入力又はスタイラス入力）に置き換えられると理解されたい。例えば、スワイプジェスチャは、任意選択で、（例えば、接触の代わりの）マウスクリックに続く、（例えば、接触の移動の代わりの）スワイプの経路に沿ったカーソルの移動に置き換えられる。別の実施例として、タップジェスチャは、任意選択で、（例えば、接触の検出に続く、接触の検出の停止の代わりの）カーソルがタップジェスチャの位置の上に位置する間のマウスクリックに置き換えられる。同様に、複数のユーザ入力が同時に検出されるとき、複数のコンピュータマウスは、任意選択で、同時に使用されるか、又はマウス及び指の接触が、任意選択で、同時に使用されることを理解されたい。
【００８７】
図４Ａ〜図４Ｍは、いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置するための例示的なユーザインタフェースを示す。これらの図でのユーザインタフェースは、図７での処理を含む後述の処理を説明するために使用される。以下の実施例のうちのいくつかは、（タッチ感知面及びディスプレイが組み合わされた）タッチスクリーンディスプレイ上での入力を参照して説明されるが、いくつかの実施形態では、デバイスは、ディスプレイとは別個の入力デバイス（例えば、別個のタッチパッド及びディスプレイを備えるラップトップ、又は別個のマウス及びディスプレイを備えるデスクトップ）を介した入力を検出する。
【００８８】
図４Ａに示されるように、デバイス１００は、平面を検出し、平面の上に拡張現実及び／又は仮想現実（ＡＲ／ＶＲ）オブジェクトを配置するために提供されたメディアキャプチャ／対話インタフェース４０２を表示する。いくつかの実施形態によれば、メディアキャプチャ／対話インタフェース４０２は、画像センサの視野の変化と共に変化する、デバイスの画像センサの視野内のオブジェクトを含むシーンのメディアキャプチャプレビューに対応する。例えば、図４Ａでは、メディアキャプチャプレビューは、室内にテーブル４１５がある部屋への開かれた出入口を含む。
【００８９】
図４Ａでは、メディアキャプチャ／対話インタフェース４０２は、（例えば、接触ジェスチャ又は選択ジェスチャによる）その選択に応じて画像をキャプチャするために提供されたスナップショットアフォーダンス４０４ａ、（例えば、接触ジェスチャ又は選択ジェスチャによる）その選択に応じて（例えば、図４Ｅ〜図４Ｆに示されるように）オブジェクト選択インタフェースを表示するために提供されたＡＲ／ＶＲオブジェクトメニューアフォーダンス４０４ｂ、及び（例えば、接触ジェスチャ又は選択ジェスチャによる）その選択に応じてオプションメニュー並びに／又はセッティングメニューを表示するために提供されたオプションアフォーダンス４０４ｃを含む。図４Ａでは、メディアキャプチャ／対話インタフェース４０２は、第１の外観状態４１０で表示されたレチクル要素も含む。図４Ａに示されるように、第１の外観状態４１０では、レチクル要素は、不透明な角を有するが、辺を有さない透明な矩形に対応する。いくつかの実施形態では、レチクル要素は、矩形、楕円形、多角形、拡大鏡、十字線などに対応する。
【００９０】
図４Ａ〜図４Ｂは、デバイス１００の画像センサの視野の変化に基づいて、メディアキャプチャ／対話インタフェース４０２が更新されるシーケンスを示す。例えば、図４Ｂでは、メディアキャプチャプレビューは、室内にテーブル４１５がある部屋の２つの壁を含む。したがって、デバイス１００の視点又は展望点は、図４Ａと図４Ｂとの間で変化する。
【００９１】
図４Ｂ〜図４Ｃは、レチクル要素の外観状態が、レチクル要素に近接した平面の検出に応じて、第１の外観状態から第２の外観状態に変化するシーケンスを示す。例えば、デバイス１００は、テーブル４１５に関連付けられた平面を検出する。この実施例を続けると、平面の検出に応じて、デバイス１００は、レチクル要素を第１の外観状態４１０から第２の外観状態４１０’に変更する。図４Ｃに示されるように、第２の外観状態４１０’において、レチクル要素は、点線の辺を有する網掛けの矩形に対応する。いくつかの実施形態では、第２の外観状態４１０’において、レチクル要素の辺は明滅又は点滅する。いくつかの実施形態では、第２の外観状態４１０’において、レチクル要素の辺は、時計回り又は反時計回りに明滅又は点滅する。いくつかの実施形態によれば、第２の外観状態４１０’で表示されている間、レチクル要素は、デバイス１００がシーン内の平面を検出したという視覚的な合図を提供する。いくつかの実施形態によれば、第２の外観状態４１０’で表示されている間に、レチクル要素は、テーブル４１５に関連付けられた検出された平面の範囲の一部の視覚的なインジケーションを提供する。
【００９２】
図４Ｃ〜図４Ｄは、レチクル要素の外観状態が、平面の向きの検出に応じて、第２の外観状態から第３の外観状態に変化するシーケンスを示す。例えば、図４Ｄでは、デバイス１００は、レチクル要素をテーブル４１５に関連付けられた検出された平面の向きに回転させる及び／又は位置合わせすることによって、レチクル要素を第３の外観状態４１０’’で表示する。
【００９３】
図４Ｄ〜図４Ｅは、レチクル要素の外観状態が、平面のより大きい範囲の検出に応じて、第３の外観状態から第４の外観状態に変化するシーケンスを示す。例えば、図４Ｅでは、デバイス１００は、その範囲が以前に検出されたものよりも大きいことを示す平面に関連付けられた追加の点の検出に応じてレチクル要素の面積を拡大することによって、レチクル要素を第４の外観状態４１０’’’で表示する。
【００９４】
図４Ｅ〜図４Ｇは、ＡＲ／ＶＲオブジェクトが、検出された平面に対してシーン内に配置されるシーケンスを示す。図４Ｅに示されるように、デバイス１００は、ＡＲ／ＶＲオブジェクトメニューアフォーダンス４０４ｂに対応する場所において、接触４１２（例えば、タップジェスチャ又は選択ジェスチャ）を検出する。図４Ｆに示されるように、デバイス１００は、図４ＥにおけるＡＲ／ＶＲオブジェクトメニューアフォーダンス４０４ｂの選択の検出に応じて、メディアキャプチャ／対話インタフェース４０２上にオーバーレイされたオブジェクト選択インタフェース４７２を表示する。
【００９５】
図４Ｆでは、オブジェクト選択インタフェース４７２は、形状、動物、及び輸送それぞれに関連付けられた複数のＡＲ／ＶＲオブジェクトカテゴリタブ４７４ａ、４７４ｂ、及び４７４ｃを含む。図４Ｆでは、形状に関連付けられたＡＲ／ＶＲオブジェクトカテゴリタブ４７４ａが目下選択されている。結果として、オブジェクト選択インタフェース４７２は、形状カテゴリに関連付けられた複数のユーザ選択可能ＡＲ／ＶＲオブジェクト４７６ａ、４７６ｂ、４７６ｃ、４７６ｄ、４７６ｅ、及び４７６ｆ（本明細書では、「ユーザ選択可能なＡＲ／ＶＲオブジェクト４７６」と総称することもある）を含む。いくつかの実施形態では、ユーザ選択可能なＡＲ／ＶＲオブジェクト４７６のそれぞれは、名前、プレビュー画像、関連メタデータなどに関連付けられる。図４Ｆでは、オブジェクト選択インタフェース４７２は、（例えば、接触ジェスチャ又は選択ジェスチャによる）その選択に応じてＡＲ／ＶＲオブジェクトの追加のカテゴリを表示するために提供された追加のカテゴリアフォーダンス４７８も含む。
【００９６】
図４Ｆに示されるように、デバイス１００は、ユーザ選択可能ＡＲ／ＶＲオブジェクト４７６ｆ（例えば、直方体オブジェクト）に対応する場所において、接触４１４（例えば、タップジェスチャ又は選択ジェスチャ）を検出する。図４Ｇに示されるように、デバイス１００は、図４Ｆにおけるユーザ選択可能ＡＲ／ＶＲオブジェクト４７６ｆの選択の検出に応じて、検出された平面に対して、シーン内に直方体ＡＲ／ＶＲオブジェクト４２０を表示する。いくつかの実施形態では、デバイスは、検出された平面の幾何学的中心（例えば、重心）に直方体ＡＲ／ＶＲオブジェクト４２０を表示する。
【００９７】
図４Ｇ〜図４Ｈは、直方体ＡＲ／ＶＲオブジェクト４２０のサイズを拡大するシーケンスを示す。図４Ｇに示されるように、デバイス１００は、直方体ＡＲ／ＶＲオブジェクト４２０における接触４１６ａ及び４１６ｂによる逆ピンチジェスチャを検出する。図４Ｈに示されるように、デバイス１００は、図４Ｇにおける逆ピンチジェスチャの検出に応じて、検出された平面に対して、シーン内の直方体ＡＲ／ＶＲオブジェクト４２０のサイズを拡大する。
【００９８】
図４Ｈ〜図４Ｉは、直方体ＡＲ／ＶＲオブジェクト４２０が、検出された平面に対して移動するシーケンスを示す。図４Ｈに示されるように、デバイス１００は、直方体ＡＲ／ＶＲオブジェクト４２０における接触４１８によるタップアンドドラッグジェスチャを検出する。図４Ｉに示されるように、デバイス１００は、図４Ｈにおけるタップアンドドラッグジェスチャの検出に応じて、検出された平面に対して、直方体ＡＲ／ＶＲオブジェクト４２０をテーブル４１５の手前の辺４２３の近くに表示する。
【００９９】
図４Ｉ〜図４Ｊは、直方体ＡＲ／ＶＲオブジェクト４２０の向きが変更されるシーケンスを示す。図４Ｉに示されるように、デバイス１００は、直方体ＡＲ／ＶＲオブジェクト４２０における接触４２２ａ及び４２２ｂによる反時計回り回転ジェスチャを検出する。図４Ｊに示されるように、デバイス１００は、図４Ｉにおける反時計回り回転ジェスチャの検出に応じて、検出された平面に対して、シーン内で直方体ＡＲ／ＶＲオブジェクト４２０を反時計回りに回転させる。
【０１００】
図４Ｊ〜図４Ｋは、直方体ＡＲ／ＶＲオブジェクト４２０が直方体ＡＲ／ＶＲオブジェクト４３０ａ及び４３０ｂに分割されるシーケンスを示す。図４Ｊに示されるように、デバイス１００は、直方体ＡＲ／ＶＲオブジェクト４２０の中間の手前の上辺４２７に対応する場所における接触４２４による所定の対話ジェスチャ（例えば、シングルタップジェスチャ又はダブルタップジェスチャ）を検出する。図４Ｋに示されるように、デバイス１００は、図４Ｈにおける対話ジェスチャの位置に基づいて直方体ＡＲ／ＶＲオブジェクト４２０を直方体ＡＲ／ＶＲオブジェクト４３０ａ及び４３０ｂに分割し、検出された平面に対して、直方体ＡＲ／ＶＲオブジェクト４３０ａ及び４３０ｂを表示する。
【０１０１】
図４Ｋ〜図４Ｌは、デバイス１００の画像センサの視野の変化に基づいて、メディアキャプチャ／対話インタフェース４０２が更新されるシーケンスを示す。例えば、図４Ｌでは、メディアキャプチャプレビューは、室内にテーブル４１５がある部屋の単一の壁を含む。したがって、デバイス１００の視点又は展望点が変化し、それに従って直方体ＡＲ／ＶＲオブジェクト４３０ａ及び４３０ｂの視点が変化する。
【０１０２】
図４Ｌ〜図４Ｍは、レチクル要素の外観状態が、レチクル要素の辺とのユーザ入力対話の検出に応じて、第４の外観状態から第５の外観状態に変化するシーケンスを示す。図４Ｌに示されるように、デバイス１００は、接触４２６によるタップアンドドラッグジェスチャを検出し、それによって、レチクル要素の辺４４２は、テーブル４１５の辺４４４に向かってドラッグされる。例えば、図４Ｍでは、デバイス１００は、図４Ｌにおけるタップアンドドラッグジェスチャの検出に応じて、レチクル要素のサイズを拡大することによって、レチクル要素を第５の外観状態４１０’’’’で表示する。
【０１０３】
図５Ａは、いくつかの実施形態に係る、四分木のセットを生成するためのプロセス５００に関連付けられた抽象ブロック図を示す。関連する特徴が示されているが、当業者は、本明細書に開示される例示的な実施形態のより適切な態様を曖昧にしないよう、簡潔にするために様々な他の特徴が示されていないことを、本開示から理解されよう。例えば、いくつかの実施形態では、プロセス５００において、四分木のセット５２５は、時間にわたって異なる基準点／展望点（例えば、カメラ位置又は視野）においてキャプチャされた画像のセットから構築された平面のセット５２０ａ、５２０ｂ〜５２０ｎをマージすることによって生成される。
【０１０４】
図５Ａに示されるように、デバイス１００又はその構成要素（例えば、図１１における画像キャプチャ制御モジュール１１５０）は、第１の基準点／展望点５０２ａに対して画像の第１のセット５０４ａ（例えば、画像データ）を取得する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、画像の第１のセット５０４ａに基づいて、第１の３次元（３ｄ）点群５０６ａを合成する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、第１の３ｄ点群５０６ａに基づいて、平面の第１のセット５２０ａを構築する。例えば、デバイス１００は、当該技術分野における既知のアルゴリズム又は技術（例えば、最小二乗法、主成分分析、自己位置推定・環境地図作成（ＳＬＡＭ）など）に従って、第１の３ｄ点群５０６ａに平面をフィットさせることによって、平面の第１のセット５２０ａを構築する。
【０１０５】
同様に、図５Ａに示されるように、デバイス１００又はその構成要素（例えば、図１１における画像キャプチャ制御モジュール１１５０）は、第２の基準点／展望点５０２ｂに対して画像の第２のセット５０４ｂを取得する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、画像の第２のセット５０４ｂに基づいて、第２の３ｄ点群５０６ｂを合成する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、第２の３ｄ点群５０６ｂに基づいて、平面の第２のセット５２０ｂを構築する。
【０１０６】
同様に、図５Ａに示されるように、デバイス１００又はその構成要素（例えば、図１１における画像キャプチャ制御モジュール１１５０）は、第ｎの基準点／展望点５０２ｎに対して画像の第ｎのセット５０４ｎを取得する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、画像の第ｎのセット５０４ｎに基づいて、第ｎの３ｄ点群５０６ｎを合成する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、第ｎの３ｄ点群５０６ｎに基づいて、平面の第ｎのセット５２０ｎを構築する。
【０１０７】
いくつかの実施形態によれば、デバイス１００又はその構成要素（例えば、図１１における相関モジュール１１６２）は、平面の第１のセット５２０ａ、平面の第２のセット５２０ｂ〜平面の第ｎのセット５２０ｎを相関させて、平面のマージされたセットを生成する。次に、いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、平面のマージされたセットに基づいて、四分木のセット５２５を生成する。例えば、デバイス１００は、当該技術分野において既知のアルゴリズム又は技術に従って、四分木のセット５２５を生成する。
【０１０８】
図５Ｂは、いくつかの実施形態に係る、四分木のセットを生成するためのプロセス５５０に関連付けられた抽象ブロック図を示す。関連する特徴が示されているが、当業者は、本明細書に開示される例示的な実施形態のより適切な態様を曖昧にしないよう、簡潔にするために様々な他の特徴が示されていないことを、本開示から理解されよう。例えば、いくつかの実施形態では、プロセス５５０において、四分木のマージされたセット５４０は、時間にわたって異なる基準点／展望点（例えば、カメラ位置又は視野）に関連付けられた３ｄ点群から構築された四分木のセット５３０ａ、５３０ｂ〜５３０ｎをマージすることによって生成される。
【０１０９】
図５Ｂに示されるように、デバイス１００又はその構成要素（例えば、図１１における画像キャプチャ制御モジュール１１５０）は、第１の基準点／展望点５０２ａに対して画像の第１のセット５０４ａ（例えば、画像データ）を取得する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、画像の第１のセット５０４ａに基づいて、第１の３ｄ点群５０６ａを合成する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、第１の３ｄ点群５０６ａ及び／又は画像の第１のセット５０４ａに基づいて、平面の第１のセット５２０ａを構築する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、平面の第１のセット５２０ａ及び／又は第１の３ｄ点群５０６ａに基づいて、四分木の第１のセット５３０ａを生成する。例えば、デバイス１００は、図１０を参照して説明する詳細に従って、四分木の第１のセット５３０ａを生成する。
【０１１０】
同様に、図５Ｂに示されるように、デバイス１００又はその構成要素（例えば、図１１における画像キャプチャ制御モジュール１１５０）は、第２の基準点／展望点５０２ｂに対して画像の第２のセット５０４ｂを取得する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、画像の第２のセット５０４ｂに基づいて、第２の３ｄ点群５０６ｂを合成する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、第２の３ｄ点群５０６ｂ及び／又は画像の第２のセット５０４ｂに基づいて、平面の第２のセット５２０ｂを構築する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、平面の第２のセット５２０ｂ及び／又は第２の３ｄ点群５０６ｂに基づいて、四分木の第２のセット５３０ｂを生成する。
【０１１１】
同様に、図５Ｂに示されるように、デバイス１００又はその構成要素（例えば、図１１における画像キャプチャ制御モジュール１１５０）は、第ｎの基準点／展望点５０２ｎに対して画像の第ｎのセット５０４ｎを取得する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、画像の第ｎのセット５０４ｎに基づいて、第ｎの３ｄ点群５０６ｎを合成する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、第ｎの３ｄ点群５０６ｎ及び／又は画像の第ｎのセット５０４ｎに基づいて、平面の第ｎのセット５２０ｎを構築する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、平面の第ｎのセット５２０ｎ及び／又は第ｎの３ｄ点群５０６ｎに基づいて、四分木の第ｎのセット５３０ｎを生成する。
【０１１２】
いくつかの実施形態によれば、デバイス１００又はその構成要素（例えば、図１１における相関モジュール１１６２）は、四分木の第１のセット５３０ａ、四分木の第２のセット５３０ｂ〜四分木の第ｎのセット５３０ｎを相関させて、四分木のマージされたセット５４０を生成する。例えば、デバイス１００は、図１０を参照して説明する詳細に従って、四分木のマージされたセット５４０を生成する。
【０１１３】
図６Ａ〜図６Ｇは、いくつかの実施形態に係る、仮想基体を検出するための例示的なユーザインタフェースを示す。これらの図でのユーザインタフェースは、図８〜図１０におけるプロセスを含む、後述のプロセスを説明するために使用される。以下の実施例のうちのいくつかは、（タッチ感知面とディスプレイとを組み合わせた）タッチスクリーンディスプレイ上での入力を参照して説明されるが、いくつかの実施形態では、デバイスは、図４Ｂに示されるように、ディスプレイ４５０とは別個のタッチ感知面４５１上で入力を検出する。
【０１１４】
いくつかの実施形態では、デバイス１００は、図６Ｇにおけるメディアキャプチャ／対話インタフェース６５２と同様のユーザインタフェース内に、図６Ａ〜図６Ｈにおいて実行されるステップを表示する。いくつかの実施形態では、デバイス１００は、図６Ａ〜図６Ｈにおけるステップを実行するが、表示はせず、その代わりに、図６Ｇにおけるメディアキャプチャ／対話インタフェース６５２内に、結果として生じる平面６５０ａ、６５０ｂ、６５０ｃ、及び６５０ｄを表示する。
【０１１５】
図６Ａに示されるように、デバイス１００は、シーン内の複数の点のクラスタ６０５ａ、６０５ｂ、６０５ｃ、及び６０５ｄを検出する。例えば、点のクラスタ６０５ａは、シーン内の第１のテーブル６０４ａに対応する。例えば、点のクラスタ６０５ｂは、シーン内の床の一部に対応する。例えば、点のクラスタ６０５ｃは、シーン内の床の別の一部に対応する。例えば、点のクラスタ６０５ｄは、シーン内の第２のテーブル６０４ｂに対応する。いくつかの実施形態によれば、デバイス１００は、シーンの複数の画像を取得し、点のクラスタ６０５ａ、６０５ｂ、６０５ｃ、及び６０５ｄを含むシーンにおいて特定された点の３次元（３ｄ）点群を合成する。いくつかの実施形態では、デバイス１００又はその構成要素（例えば、図１１における座標変換モジュール１１５４）は、デバイス座標６０２ｂに関連付けられた画像空間と、ワールド座標６０２ａに関連付けられた３ｄ空間（例えば、図６Ａ〜図６Ｇにおける部屋又はシーン）との間の変換を実行するために、ワールド座標６０２ａ及びデバイス座標６０２ｂを追跡する。
【０１１６】
図６Ｂに示されるように、３ｄ点群に関連付けられた３ｄ座標空間において、デバイス１００は、図６Ａにおける点のクラスタ６０５ａ、６０５ｂ、６０５ｃ、及び６０５ｄに基づいて、複数の平面６１０ａ、６１０ｂ、６１０ｃ、及び６１０ｄ（例えば、無限平面）を構築する（例えば、特定する）。いくつかの実施形態では、デバイス１００は、当該技術分野において既知のアルゴリズム又は技術（例えば、最小二乗法、主成分分析、自己位置推定・環境地図作成（ＳＬＡＭ）など）に従って、３ｄ点群における点のクラスタ６０５ａ、６０５ｂ、６０５ｃ、及び６０５ｄに無限平面をフィットさせることによって、複数の平面６１０ａ、６１０ｂ、６１０ｃ、及び６１０ｄを構築する。
【０１１７】
図６Ｃに示されるように、３ｄ点群を合成するために使用される複数の画像に関連付けられた２次元（２ｄ）座標空間において、デバイス１００は、図６Ａにおける点のクラスタ６０５ａ、６０５ｂ、６０５ｃ、及び６０５ｄ内の点を三角分割する。
【０１１８】
図６Ｄに示されるように、２ｄ座標空間において、デバイス１００は、図６Ｂにおける複数の平面６１０ａ、６１０ｂ、６１０ｃ、及び６１０ｄに基づいて、同じ平面に関連付けられていない点を有する三角形を除去して、複数の制約付き三角分割領域６２０ａ、６２０ｂ、６２０ｃ、及び６２０ｄを取得する。
【０１１９】
図６Ｅに示されるように、デバイス１００は、複数の制約付き三角分割領域６２０ａ、６２０ｂ、６２０ｃ、及び６２０ｄを再び３ｄ座標空間に投影し、複数の制約付き三角分割領域６２０ａ、６２０ｂ、６２０ｃ、及び６２０ｄを方形化して、四分木６３０ａ、６３０ｂ、６３０ｃ、及び６３０ｄを取得する。図６Ｅでは、四分木６３０ａ、６３０ｂ、６３０ｃ、及び６３０ｄは、その範囲に基づいて、バウンディングボックスによって囲まれている。
【０１２０】
図６Ｆに示されるように、追加の点の検出により、第１のテーブル６０４ａに関連付けられた四分木６３０ａは、そのサイズが状態６３０ａ’に拡大されており、床に関連付けられた四分木６３０ｂ及び６３０ｃは、四分木６３０ｅにマージされており、第２テーブル６０４ｂに関連付けられた四分木６３０ｄは、そのサイズが状態６３０ｄ’に拡大されており、シーン内の部屋の壁に関連付けられた新たな四分木６３０ｆが検出されている。
【０１２１】
図６Ｇに示されるように、デバイス１００は、平面を検出し、平面の上に拡張現実及び／又は仮想現実（ＡＲ／ＶＲ）オブジェクトを配置するために提供されたメディアキャプチャ／対話インタフェース６５２を表示する。いくつかの実施形態によれば、メディアキャプチャ／対話インタフェース６５２は、画像センサの視野の変化と共に変化する、デバイスの画像センサの視野内のオブジェクトを含むシーンのメディアキャプチャプレビューに対応する。例えば、図６Ｇでは、メディアキャプチャプレビューは、テーブル６０４ａ及び６０４ｂを有する図６Ａ〜図６Ｆに示されたシーンを含む。いくつかの実施形態によれば、図６Ｇにおけるメディアキャプチャ／対話インタフェース６５２は、図４Ａ〜図４Ｍにおけるメディアキャプチャ／対話インタフェース４０２に類似又は適合する。
【０１２２】
図６Ｇでは、メディアキャプチャ／対話インタフェース６５２は、（例えば、接触ジェスチャ又は選択ジェスチャによる）その選択に応じて画像をキャプチャするために提供されたスナップショットアフォーダンス６５４ａ、（例えば、接触ジェスチャ又は選択ジェスチャによる）その選択に応じてオブジェクト選択インタフェースを表示するために提供されたＡＲ／ＶＲオブジェクトメニューアフォーダンス６５４ｂ、及び（例えば、接触ジェスチャ又は選択ジェスチャによる）その選択に応じてオプションメニュー並びに／又はセッティングメニューを表示するために提供されたオプションアフォーダンス６５４ｃを含む。図６Ｇでは、ユーザインタフェース６０２は、図６Ｆにおける四分木６３０ａ’、６３０ｄ’、６３０ｅ、及び６３０ｆのバウンディングボックスにそれぞれ対応する平面範囲６５０ａ、６５０ｂ、６５０ｃ、及び６５０ｄも含む。
【０１２３】
図６Ｇに示されるように、平面範囲６５０ａ、６５０ｂ、６５０ｃ、及び６５０ｄのそれぞれは、固有の外観、パターン、塗り潰し、及び／又は同様のものと共に表示される。いくつかの実施形態によれば、平面範囲６５０ａ、６５０ｂ、６５０ｃ、及び６５０ｄのそれぞれは、その上にＡＲ／ＶＲオブジェクトを（例えば、図４Ｆ〜図４Ｇに示されるように）配置することができ、またその上でＡＲ／ＶＲオブジェクトを（例えば、図４Ｇ〜図４Ｋに示されるように）操作することができる仮想基体に対応する。いくつかの実施形態では、平面範囲６５０ａ、６５０ｂ、６５０ｃ、及び６５０ｄのそれぞれは、平面がシーン内で検出されたという視覚的な合図を提供する。いくつかの実施形態では、平面範囲６５０ａ、６５０ｂ、６５０ｃ、及び６５０ｄのそれぞれは、関連付けられた検出された四分木の範囲の一部の視覚的なインジケーションを提供する。
【０１２４】
図７は、いくつかの実施形態に係る、仮想基体を検出し、仮想基体の上にオブジェクトを配置する方法７００のフローチャート表現である。いくつかの実施形態では（また、一実施例として下記で詳述するように）、方法７００は、１つ以上のプロセッサ、非一時的メモリ、画像センサ又はカメラアセンブリ、ディスプレイ、及び１つ以上の入力デバイスを含む、図１における電子デバイス１００又は図３におけるデバイス３００などの電子デバイス（又はその一部）によって実行される。例えば、ディスプレイ及び１つ以上の入力デバイスは、タッチスクリーンディスプレイに組み合わされる。この実施例では、電子デバイスは、スマートフォン又はタブレットに対応する。別の実施例では、ディスプレイ及び１つ以上の入力デバイスは別個である。この実施例では、電子デバイスは、ラップトップコンピュータ又はデスクトップコンピュータに対応する。例えば、電子デバイスは、着用型コンピューティングデバイス、スマートフォン、タブレット、ラップトップコンピュータ、デスクトップコンピュータ、キオスク、セットトップボックス（ＳＴＢ）、オーバーザトップ（ＯＴＴ）ボックス、ゲーム機、及び／又は同様のものに対応する。
【０１２５】
いくつかの実施形態では、方法７００は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの好適な組み合わせを含む処理ロジックによって実行される。いくつかの実施形態では、方法７００は、非一時的コンピュータ可読記憶媒体（例えば、非一時的メモリ）に記憶されたコード、プログラム、又は命令を実行する１つ以上のプロセッサによって実行される。方法７００における一部の動作は、任意選択で組み合わされ、及び／又は、一部の動作の順序は、任意選択で変更される。簡潔に述べると、方法７００は、シーン内の平面の検出に応じて、レチクル要素を第１の外観状態から第２の外観状態に変更することと、検出された平面に対して、シーン内に拡張現実／仮想現実（ＡＲ／ＶＲ）オブジェクトを配置することと、ユーザ入力に基づいて、ＡＲ／ＶＲオブジェクトを修正／操作することと、を含む。
【０１２６】
方法７００は、ブロック７０２において、電子デバイスが、第１の外観状態にあるメディアキャプチャプレビューにオーバーレイされたレチクル要素を表示することから開始される。例えば、図４Ｂでは、デバイス１００は、室内にテーブル４１５及び２つの壁がある部屋に対応するシーンのメディアキャプチャプレビューを含むメディアキャプチャ／対話インタフェース４０２を表示する。この実施例を続けると、図４Ｂでは、メディアキャプチャ／対話インタフェース４０２は、第１の外観状態４１０で表示されたレチクル要素も含む。いくつかの実施形態では、第１の外観状態４１０では、レチクル要素は、不透明な角を有するが、辺を有さない透明な矩形に対応する。いくつかの実施形態では、レチクル要素は、矩形、楕円形、多角形、拡大鏡、十字線などに対応する。
【０１２７】
方法７００は、ブロック７０４において、電子デバイスが、シーンデータを取得することで継続される。いくつかの実施形態によれば、デバイス１００又はその構成要素（例えば、図１１における画像キャプチャ制御モジュール１１５０）は、画像センサ又はカメラアセンブリで、第１の基準点／展望点（例えば、カメラ位置又は視野）からシーンの２つ以上の画像をキャプチャすることによって、シーンデータ（例えば、画像データ）を取得する。
【０１２８】
方法７００は、ブロック７０６において、電子デバイスが、シーンデータに基づいて平面を検出することで継続される。例えば、デバイスは、シーンデータ内の平坦な表面（例えば、床、壁、テーブル上面など）を検出する。いくつかの実施形態によれば、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、シーンデータを処理することによって少なくとも１つの平面を検出する。例えば、図４Ｂを参照すると、デバイス１００は、テーブル４１５の上面に対応する平面を検出する。いくつかの実施形態では、平面の全体はレチクル要素内にある。いくつかの実施形態では、平面の少なくとも一部はレチクル要素内にある。いくつかの実施形態では、平面はレチクル要素の範囲よりも大きい。いくつかの実施形態では、平面はレチクル要素の範囲よりも小さい。いくつかの実施形態では、２つ以上の平面の検出に応じて、デバイスは、２つ以上の検出された平面に近接した位置において、複数のレチクル要素を第２の外観状態で表示する。
【０１２９】
方法７００は、ブロック７０８において、電子デバイスが、平面の検出を示す第２の外観状態でレチクル要素を表示することで継続される。例えば、図４Ｃでは、デバイス１００は、レチクル要素に近接したテーブル４１５の上面に関連付けられた平面の検出に応じて、レチクル要素を第１の外観状態４１０から第２の外観状態４１０’に変更する。いくつかの実施形態では、第２の外観状態では、レチクル要素は、不透明な又は点滅する辺を有する透明な矩形として表示される。いくつかの実施形態では、第２の外観状態では、レチクル要素は、不透明な又は点滅する辺を有する部分的に透明な矩形として表示される。いくつかの実施形態では、第２の外観状態で表示されている間に、レチクル要素は、ＡＲ／ＶＲオブジェクトのための仮想基体として使用することができる平面が検出されたという視覚的な合図を提供する。いくつかの実施形態では、第２の外観状態で表示されている間に、レチクル要素は、ＡＲ／ＶＲオブジェクトのための仮想基体として使用することができる検出された平面の境界の視覚的な合図も提供する。
【０１３０】
いくつかの実施形態では、デバイスは、第１の外観状態で表示されている間に、検出された平面がレチクル要素に近接しているという判定に従って、レチクル要素を第１の外観状態から第２の外観状態に遷移させる。いくつかの実施形態によれば、検出された平面がシーンデータに関連付けられた画像空間（例えば、デバイス座標に関連付けられた２次元空間）上に投影され、少なくとも所定数のピクセルがレチクル要素と検出された平面とで重複する場合、検出された平面は、レチクル要素に近接している。いくつかの実施形態によれば、レチクル要素がシーンに関連付けられた現実世界空間（例えば、ワールド座標に関連付けられた３次元空間）上に投影され、少なくとも所定数のピクセルがレチクル要素と検出された平面とで重複する場合、検出された平面は、レチクル要素に近接している。
【０１３１】
いくつかの実施形態では、デバイスは、第１の外観状態で表示されている間に、検出された平面がレチクル要素の閾値距離内にあるという判定に従って、レチクル要素を第１の外観状態から第２の外観状態に遷移させる。いくつかの実施形態によれば、検出された平面がデバイスの所定の距離内にある場合、検出された平面は、レチクル要素の閾値距離内にある。
【０１３２】
いくつかの実施形態では、ブロック７１２によって表されるように、デバイスは、レチクル要素を検出された平面の向きに位置合わせする。例えば、図４Ｄでは、デバイス１００は、レチクル要素をテーブル４１５に関連付けられた検出された平面の向きに回転させる及び／又は位置合わせすることによって、レチクル要素を第３の外観状態４１０’’で表示する。いくつかの実施形態では、レチクル要素は、検出された平面のヨー、ピッチ、及び／又はローに位置合わせされる。
【０１３３】
いくつかの実施形態では、ブロック７１４によって表されるように、デバイスは、レチクル要素を拡大する。例えば、図４Ｅでは、デバイス１００は、その範囲が以前に検出されたものよりも大きいことを示す平面に関連付けられた追加の点の検出に応じてレチクル要素の面積を拡大することによって、レチクル要素を第４の外観状態４１０’’’で表示する。いくつかの実施形態では、レチクル要素は、平面の検出されたサイズに拡げられる。いくつかの実施形態では、レチクル要素は、平面の検出されたサイズに縮められる。いくつかの実施形態では、レチクル要素が第２の外観状態で表示されている間に、レチクル要素のサイズは、追加の点の検出に基づいた、検出された平面のサイズの変化と共に、動的に変化する。
【０１３４】
例えば、デバイスは、ピンチジェスチャ、ピンチアウトジェスチャ、タップアンドドラッグジェスチャなどのレチクル要素の１つ以上の寸法の変更に対応するユーザ入力を検出する。例えば、図４Ｌ〜図４Ｍは、レチクル要素の寸法が図４Ｌにおけるレチクル要素上でのタップアンドドラッグジェスチャの検出に応じて変更される（例えば、レチクル要素の高さが、テーブル４１５の手前の辺４４４に向かって移動される）シーケンスを示す。いくつかの実施形態では、ユーザ入力は、検出された平面の境界内のレチクル要素のサイズを修正する。したがって、いくつかの実施形態では、ユーザ入力は、検出された平面の範囲を超えてレチクル要素をリサイズしない。
【０１３５】
方法７００は、ブロック７１６において、電子デバイスが、拡張現実及び／又は仮想現実（ＡＲ／ＶＲ）オブジェクトをシーン内に配置する第１のユーザ入力を検出することで継続される。例えば、図４Ｆでは、デバイス１００は、オブジェクト選択インタフェース４７２内のユーザ選択可能ＡＲ／ＶＲオブジェクト４７６ｆ（例えば、直方体オブジェクト）に対応する場所において、接触４１４（例えば、タップジェスチャ又は選択ジェスチャ）を検出する。いくつかの実施形態では、デバイスは、所定のアフォーダンス（例えば、ＡＲ／ＶＲオブジェクトメニューアフォーダンス４０４ｂ）の選択に応じて、オブジェクト選択インタフェース（例えば、ポップオーバー又はプルダウンメニュー／パネル）を表示する。
【０１３６】
方法７００は、ブロック７１８において、電子デバイスが、検出された平面に対して、シーン内にＡＲ／ＶＲオブジェクトを表示することで継続される。例えば、図４Ｇに示されるように、デバイス１００は、図４Ｆにおけるユーザ選択可能ＡＲ／ＶＲオブジェクト４７６ｆの選択の検出に応じて、検出された平面に対して、シーン内に直方体ＡＲ／ＶＲオブジェクト４２０を表示する。いくつかの実施形態では、ＡＲ／ＶＲオブジェクトは、検出された平面の幾何学的中心（例えば、重心）に表示される。いくつかの実施形態では、検出された平面に対して、シーン内にＡＲ／ＶＲオブジェクトを配置した後、デバイス１００はレチクル要素を除去する。いくつかの実施形態では、デバイス１００は、ＡＲ／ＶＲオブジェクトを表示するときに、オクルージョン及びクラッタを低減するためにレチクル要素を除去する。いくつかの実施形態では、デバイスは、検出された平面の向きに基づいて、ＡＲ／ＶＲオブジェクトに回転（例えば、ヨー、ピッチ、及び／又はロール）を適用する。
【０１３７】
方法７００は、ブロック７２０において、電子デバイスが、ＡＲ／ＶＲオブジェクトとの対話により配置を行う第２のユーザ入力を検出することで継続される。一実施例として、図４Ｇでは、デバイス１００は、直方体ＡＲ／ＶＲオブジェクト４２０における接触４１６ａ及び４１６ｂによる逆ピンチジェスチャを検出する。別の実施例として、図４Ｈでは、デバイス１００は、直方体ＡＲ／ＶＲオブジェクト４２０における接触４１８によるタップアンドドラッグジェスチャを検出する。更に別の実施例として、図４Ｉでは、デバイス１００は、直方体ＡＲ／ＶＲオブジェクト４２０における接触４２２ａ及び４２２ｂによるツーフィンガ反時計回り回転ジェスチャを検出する。更に別の実施例として、図４Ｉでは、デバイス１００は、直方体ＡＲ／ＶＲオブジェクト４２０における接触４２４によるワンフィンガタップジェスチャを検出する。
【０１３８】
方法７００は、ブロック７２２において、電子デバイスが、第２のユーザ入力の１つ以上の特性に基づいて、ＡＲ／ＶＲオブジェクトを修正することで継続される。一実施例として、図４Ｈ〜４Ｉは、図４Ｈにおける直方体ＡＲ／ＶＲオブジェクト４２０上でのタップアンドドラッグジェスチャの検出に応じて、直方体ＡＲ／ＶＲオブジェクト４２０がテーブル４１５の手前の辺４２３に近づくように移動するシーケンスを示す。いくつかの実施形態では、第２のユーザ入力の１つ以上の特性は、入力形式（例えば、音声コマンド、ピンチジェスチャ、逆ピンチジェスチャ、タップアンドフラッグジェスチャ、スワイプジェスチャ、ワンフィンガタップジェスチャ、ツーフィンガタップジェスチャ、ワンフィンガダブルタップジェスチャ、ツーフィンガダブルタップジェスチャなど）、入力方向、入力の大きさ、入力速度、及び／又は同様のものに対応する。
【０１３９】
いくつかの実施形態では、１つ以上の特性は入力形式に対応する。例えば、第３のユーザ入力がタップアンドドラッグジェスチャに対応する場合、デバイスは、検出された平面に対してＡＲ／ＶＲオブジェクトの位置を修正する。いくつかの実施形態では、タップアンドドラッグジェスチャが、ＡＲ／ＶＲオブジェクトを検出された平面の外側に移動させる場合、デバイスは、ＡＲ／ＶＲオブジェクトを次の最も近い平面（例えば、床面）上に表示する。いくつかの実施形態では、タップアンドドラッグジェスチャが、ＡＲ／ＶＲオブジェクトを検出された平面の外側に移動させる場合、デバイスは、検出された平面の縁部におけるＡＲ／ＶＲオブジェクトの表示を維持する。別の実施例では、第３のユーザ入力がピンチジェスチャに対応する場合、デバイスは、ＡＲ／ＶＲオブジェクトのサイズを修正する。別の実施例では、第３のユーザ入力が所定のジェスチャに対応する場合、デバイスは、ＡＲ／ＶＲオブジェクトと共に所定のアニメーションを表示するか、又はＡＲ／ＶＲオブジェクト上での所定の動作を実行する。いくつかの実施形態では、デバイスは、ＡＲ／ＶＲオブジェクトと共に所定のアニメーションを表示するか、又はＡＲ／ＶＲオブジェクトに対してデバイスの距離に基づいて、ＡＲ／ＶＲオブジェクト上での所定の動作を実行する。いくつかの実施形態では、デバイスの位置がＡＲ／ＶＲオブジェクトに対して変化すると、デバイスは、ＡＲ／ＶＲオブジェクトの視点を維持する（例えば、サイズを拡大／縮小する、ＡＲ／ＶＲオブジェクトの異なる角度を示す、など）。
【０１４０】
いくつかの実施形態では、ブロック７２４によって表されるように、デバイスは、ＡＲ／ＶＲオブジェクトを回転させる。例えば、図４Ｉ〜図４Ｊは、図４Ｉにおける直方体ＡＲ／ＶＲオブジェクト４２０上での反時計回り回転ジェスチャの検出に応じて、直方体ＡＲ／ＶＲオブジェクト４２０の向きが変更されるシーケンスを示す。
【０１４１】
いくつかの実施形態では、ブロック７２６によって表されるように、デバイスは、ＡＲ／ＶＲオブジェクトをリサイズする。例えば、図４Ｇ〜図４Ｈは、図４Ｇにおける直方体ＡＲ／ＶＲオブジェクト４２０上での逆ピンチジェスチャの検出に応じて、直方体ＡＲ／ＶＲオブジェクト４２０のサイズを拡大するシーケンスを示す。
【０１４２】
いくつかの実施形態では、ブロック７２８によって表されるように、デバイスは、ＡＲ／ＶＲオブジェクトに関連付けられた挙動をトリガする。いくつかの実施形態では、挙動は、ＡＲ／ＶＲ動物を可愛がって吠えさせる若しくは泣き声を出させること、ＡＲ／ＶＲ車をタップしてクラクションを鳴らす若しくはエンジン回転数を上げること、ＡＲ／ＶＲ立方体をハンマーのようにタップしてキューブを半分に割ること、ＡＲ／ＶＲ火山をタップして噴火させること、及び／又は同様のこと、などのＡＲ／ＶＲオブジェクト上で実行される所定のアニメーション又は動作に対応する。例えば、図４Ｊ〜４Ｋは、図４Ｊにおける直方体ＡＲ／ＶＲオブジェクト４２０上での所定の対話ジェスチャの検出に応じて、直方体ＡＲ／ＶＲオブジェクト４２０が直方体ＡＲ／ＶＲオブジェクト４３０ａ及び４３０ｂに分割されるシーケンスを示す。
【０１４３】
図８は、いくつかの実施形態に係る、仮想基体として使用するための四分木のマージされたセットを生成する方法８００のフローチャート表現である。いくつかの実施形態では（また、一実施例として下記で詳述するように）、方法８００は、１つ以上のプロセッサ及び非一時的メモリを含む、図１における電子デバイス１００又は図３におけるデバイス３００などの電子デバイス（又はその一部）によって実行される。いくつかの実施形態では、デバイスは、任意選択で、ディスプレイ、画像センサ又はカメラアセンブリ、及び１つ以上の入力デバイス（例えば、タッチスクリーンディスプレイ、タッチパッド、マウス、キーボード、物理的ボタン、マイクロフォンなど）を含む。例えば、ディスプレイ及び１つ以上の入力デバイスは、タッチスクリーンディスプレイに組み合わされる。この実施例では、電子デバイスは、スマートフォン又はタブレットに対応する。別の実施例では、ディスプレイ及び１つ以上の入力デバイスは別個である。この実施例では、電子デバイスは、ラップトップコンピュータ又はデスクトップコンピュータに対応する。例えば、電子デバイスは、着用型コンピューティングデバイス、スマートフォン、タブレット、ラップトップコンピュータ、デスクトップコンピュータ、キオスク、セットトップボックス（ＳＴＢ）、オーバーザトップ（ＯＴＴ）ボックス、ゲーム機、及び／又は同様のものに対応する。
【０１４４】
いくつかの実施形態では、方法８００は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの好適な組み合わせを含む処理ロジックによって実行される。いくつかの実施形態では、方法８００は、非一時的コンピュータ可読記憶媒体（例えば、非一時的メモリ）に記憶されたコード、プログラム、又は命令を実行する１つ以上のプロセッサによって実行される。方法８００における一部の動作は、任意選択で組み合わされ、及び／又は、一部の動作の順序は、任意選択で変更される。簡潔に述べると、方法８００は、異なる基準点／展望点についての複数の画像のセットを取得することと、複数の画像のセットのそれぞれについて、３ｄ点群を合成することと、それぞれの３ｄ点群を使用して平面を構築することと、３ｄ点群にわたる平面のマージされたセットを特徴付ける四分木のセットを生成することと、を含む。
【０１４５】
方法８００は、ブロック８０２において、電子デバイスが、異なる基準点／展望点についての複数の画像のセットを取得することから開始される。例えば、図５Ａ〜図５Ｂに示されるように、デバイス１００又はその構成要素（例えば、図１１における画像キャプチャ制御モジュール１１５０）は、基準点／展望点５０２ａ、５０２ｂ〜５０２ｎそれぞれについての画像のセット（例えば、画像データ）５０４ａ、５０４ｂ〜５０４ｎをそれぞれ取得する。いくつかの実施形態では、画像のセットのそれぞれは、２つ以上の画像を含む。いくつかの実施形態では、画像のセットのそれぞれは、異なる基準点／展望点（例えば、異なるカメラ位置又は視野）に対応する。
【０１４６】
方法８００は、ブロック８０４において、電子デバイスが、複数の画像のセットのそれぞれについての３次元（３ｄ）点群を合成することで継続される。例えば、図５Ａ〜図５Ｂに示されるように、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、基準点／展望点５０２ａ、５０２ｂ〜５０２ｎそれぞれについての画像のセット５０４ａ、５０４ｂ〜５０４ｎに基づいて、３次元（３ｄ）点群５０６ａ、５０６ｂ〜５０６ｎを合成する。いくつかの実施形態では、デバイス１００は、画像の各セットについての点のセットを特定し、３ｄ空間内にそれらの点を配置することによって、当該技術分野において既知のアルゴリズム又は技術に従って、３ｄ点群を合成する。
【０１４７】
方法８００は、ブロック８０６において、電子デバイスが、それぞれの３ｄ点群を使用して平面を構築することで継続される。例えば、図５Ａ〜図５Ｂに示されるように、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、３ｄ点群５０６ａ、５０６ｂ〜５０６ｎそれぞれに基づいて、平面のセット５２０ａ、５２０ｂ〜５２０ｎを構築する。いくつかの実施形態では、デバイス１００は、当該技術分野における既知のアルゴリズム又は技術（例えば、最小二乗法、主成分分析、自己位置推定・環境地図作成（ＳＬＡＭ）など）に従って、３ｄ点群に平面を構築する（例えば、フィットさせる）。
【０１４８】
方法８００は、ブロック８０８において、電子デバイスが、３ｄ点群にわたる平面のマージされたセットを特徴付ける四分木のセットを生成することで継続される。例えば、図５Ａに示されるように、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、経時的に３ｄ点群５０６ａ、５０６ｂ〜５０６ｎにわたる平面のマージされたセットを特徴付ける四分木のセット５２５を生成する。例えば、図５Ｂに示されるように、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、経時的に３ｄ点群５０６ａ、５０６ｂ〜５０６ｎにわたる平面のマージされたセットを特徴付ける四分木のマージされたセット５４０を生成する。いくつかの実施形態では、デバイス１００は、当該技術分野において既知のアルゴリズム又は技術に従って、四分木のセットを生成する。いくつかの実施形態によれば、当該技術分野における当業者には理解されるように、方法８００は、シーンを特徴付ける八分木の生成にも適用可能である。
【０１４９】
いくつかの実施形態では、ブロック８１０によって表されるように、デバイスは、３ｄ点群のそれぞれについての平面のセットを生成し、平面のセットを相関させることによって、平面のマージされたセットを生成する。いくつかの実施形態では、ブロック８１２によって表されるように、デバイスは、平面のマージされたセットに基づいて、四分木のセットを生成する。例えば、図５Ａに示されるように、デバイス１００又はその構成要素（例えば、図１１における相関モジュール１１６２）は、平面の第１のセット５２０ａ、平面の第２のセット５２０ｂ〜平面の第ｎのセット５２０ｎを相関させて、平面のマージされたセットを生成する。次に、図５Ａにおける実施例を続けると、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、平面のマージされたセットに基づいて、四分木のセット５２５を生成する。
【０１５０】
いくつかの実施形態では、ブロック８１４によって表されるように、デバイスは、関連付けられた平面に基づいて、３ｄ点群のそれぞれについての四分木の中間セットを生成する。いくつかの実施形態では、ブロック８１６によって表されるように、デバイスは、四分木の中間セットを相関させることによって、四分木のセットを生成する。例えば、図５Ｂに示されるように、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、平面のセット５２０ａ、５２０ｎ〜５２０ｎ及び／又は３ｄ点群５０６ａ、５０６ｂ〜５０６ｎそれぞれに基づいて、四分木のセット５３０ａ、５３０ｂ〜５３０ｎを生成する。次に、図５Ｂにおける実施例を続けると、デバイス１００又はその構成要素（例えば、図１１における相関モジュール１１６２）は、四分木のセット５３０ａ、５３０ｂ〜５３０ｎを相関させて、四分木のマージされたセット５４０を生成する。
【０１５１】
図９は、いくつかの実施形態に係る、仮想基体として使用するための四分木のセットを生成する方法９００のフローチャート表現である。いくつかの実施形態では（また、一実施例として下記で詳述するように）、方法９００は、１つ以上のプロセッサ、非一時的メモリ、任意選択の画像センサ又はカメラアセンブリ、任意選択のディスプレイ、及び１つ以上の任意選択の入力デバイスを含む、図１における電子デバイス１００又は図３におけるデバイス３００などの電子デバイス（又はその一部）によって実行される。例えば、電子デバイスは、着用型コンピューティングデバイス、スマートフォン、タブレット、ラップトップコンピュータ、デスクトップコンピュータ、キオスク、セットトップボックス（ＳＴＢ）、オーバーザトップ（ＯＴＴ）ボックス、ゲーム機、及び／又は同様のものに対応する。
【０１５２】
いくつかの実施形態では、方法９００は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの好適な組み合わせを含む処理ロジックによって実行される。いくつかの実施形態では、方法９００は、非一時的コンピュータ可読記憶媒体（例えば、非一時的メモリ）に記憶されたコード、プログラム、又は命令を実行する１つ以上のプロセッサによって実行される。方法９００における一部の動作は、任意選択で組み合わされ、及び／又は、一部の動作の順序は、任意選択で変更される。簡潔に述べると、方法９００は、異なる基準点／展望点についての複数の平面のセットを生成することと、平面のセットを相関させて、経時的に平面のマージされたセットを取得することと、平面のマージされたセットに基づいて、四分木のセットを生成することと、を含む。
【０１５３】
方法９００は、ブロック９０２において、電子デバイスが、基準点Ｘ（例えば、期間又はカメラ位置）についての画像のセットに基づいて、３次元（３ｄ）点群を取得することから開始される。一実施例として、図５Ａでは、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、第ｎの基準点／展望点５０２ｎ（例えば、基準点Ｘ）に対して画像の第ｎのセット５０４ｎに基づいて、第ｎの３ｄ点群５０６ｎを合成する。例えば、デバイス１００は、画像の第ｎのセット５０４ｎ内の点を特定し、当該技術分野において既知のアルゴリズム又は技術に従って、デバイス座標に関連付けられた画像空間内の点の場所をワールド座標に変換することによって、ワールド座標に対して点を配置することによって、第ｎの３ｄ点群５０６ｎを合成する。
【０１５４】
方法９００は、ブロック９０４において、電子デバイスが、基準点Ｘについての３ｄ点群に平面をフィットさせることで継続される。一実施例として、図５Ａでは、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、第ｎの３ｄ点群５０６ｎに基づいて、平面の第ｎのセット５２０ｎを構築する。例えば、デバイス１００は、当該技術分野における既知のアルゴリズム又は技術（例えば、最小二乗法、主成分分析、自己位置推定・環境地図作成（ＳＬＡＭ）など）に従って、第ｎの３ｄ点群５０６ｎに平面をフィットさせることによって、平面の第ｎのセット５２０ｎを構築する。
【０１５５】
方法９００は、ブロック９０６において、電子デバイスが、基準点Ｘ、Ｘ−１、Ｘ−２〜Ｘ−Ｎについての３ｄ点群にフィットされた平面をマージ、拡大、及び／又は補正することによって、時間累積された平面のセットを取得することで継続される。一実施例として、図５Ａでは、デバイス１００又はその構成要素（例えば、図１１における相関モジュール１１６２）は、（例えば、基準点Ｘ−２に関連付けられた）平面の第１のセット５２０ａ、（例えば、基準点Ｘ−１に関連付けられた）平面の第２のセット５２０ｂ〜（例えば、基準点Ｘに関連付けられた）平面の第ｎのセット５２０ｎを相関させて、平面のマージされたセットを生成する。例えば、基準点Ｘ、Ｘ−１、Ｘ−２〜Ｘ−Ｎについての３ｄ点群にフィットされた平面のセットを相関させることは、平面を拡大することと、平面をマージすることと、並びに／若しくは、基準点Ｘ、Ｘ−１、Ｘ−２〜Ｘ−Ｎについての３ｄ点群にフィットされた平面の位置、サイズ及び／又は向きの特定された類似性及び／又は差異に基づいて、時間次元にわたり平面のサイズ又は向きを補正することと、を含む。いくつかの実施形態では、平面のセットを相関させることによって、サイズが経時的に変化する動的な平面が補正される。いくつかの実施形態では、追加の関連付けられた点が経時的に検出されると、平面のセットを相関させることによって、平面が拡大される。いくつかの実施形態では、２つ以上の平面が経時的に同一の平面の一部であると判定されると、平面のセットを相関させることによって、平面がマージされる。
【０１５６】
方法９００は、ブロック９０８において、電子デバイスが、時間累積された平面のセットに基づいて、四分木のセットを生成することで継続される。一実施例として、図５Ａでは、デバイス１００又はその構成要素（例えば、図１１における四分木生成モジュール１１６０）は、ブロック９０６からの平面のマージされたセットに基づいて、四分木のセット５２５を生成する。例えば、デバイス１００は、当該技術分野において既知のアルゴリズム又は技術に従って、四分木のセット５２５を生成する。
【０１５７】
図１０は、いくつかの実施形態に係る、四分木のマージされたセットを生成する方法１０００のフローチャート表現である。いくつかの実施形態では（また、一実施例として下記で詳述するように）、方法１０００は、１つ以上のプロセッサ、非一時的メモリ、任意選択の画像センサ又はカメラアセンブリ、任意選択のディスプレイ、及び１つ以上の任意選択の入力デバイスを含む、図１における電子デバイス１００又は図３におけるデバイス３００などの電子デバイス（又はその一部）によって実行される。例えば、電子デバイスは、着用型コンピューティングデバイス、スマートフォン、タブレット、ラップトップコンピュータ、デスクトップコンピュータ、キオスク、セットトップボックス（ＳＴＢ）、オーバーザトップ（ＯＴＴ）ボックス、ゲーム機、及び／又は同様のものに対応する。
【０１５８】
いくつかの実施形態では、方法１０００は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの好適な組み合わせを含む処理ロジックによって実行される。いくつかの実施形態では、方法１０００は、非一時的コンピュータ可読記憶媒体（例えば、非一時的メモリ）に記憶されたコード、プログラム、又は命令を実行する１つ以上のプロセッサによって実行される。方法１０００における一部の動作は、任意選択で組み合わされ、及び／又は、一部の動作の順序は、任意選択で変更される。簡潔に述べると、方法１０００は、異なる基準点／展望点についての四分木のセットを生成することと、四分木のセットを相関させて、経時的に四分木のマージされたセットを取得することと、を含む。
【０１５９】
方法１０００は、ブロック１００２において、電子デバイスが、基準点Ｘ（例えば、期間又はカメラ位置）についての画像のセットに基づいて、３次元（３ｄ）点群を取得することから開始される。一実施例として、図５Ｂでは、デバイス１００又はその構成要素（例えば、図１１における点群合成モジュール１１５６）は、第ｎの基準点／展望点５０２ｎ（例えば、基準点Ｘ）に対して画像の第ｎのセット５０４ｎに基づいて、第ｎの３ｄ点群５０６ｎを合成する。例えば、デバイス１００は、画像の第ｎのセット５０４ｎ内の点を特定し、当該技術分野において既知のアルゴリズム又は技術に従って、デバイス座標に関連付けられた画像空間内の点の場所をワールド座標に変換することによって、ワールド座標に対して点を配置することによって、第ｎの３ｄ点群５０６ｎを合成する。
【０１６０】
方法１０００は、ブロック１００４において、電子デバイスが、基準点Ｘについての３ｄ点群に平面をフィットさせることで継続される。一実施例として、図５Ｂでは、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、（例えば、基準点Ｘに関連付けられた）第ｎの３ｄ点群５０６ｎに基づいて、平面の第ｎのセット５２０ｎを構築する。例えば、デバイス１００は、当該技術分野における既知のアルゴリズム又は技術（例えば、最小二乗法、主成分分析、自己位置推定・環境地図作成（ＳＬＡＭ）など）に従って、第ｎの３ｄ点群５０６ｎに平面をフィットさせることによって、平面の第ｎのセット５２０ｎを構築する。図６Ｂに示されるように、例えば、３ｄ点群に関連付けられた３ｄ座標空間において、デバイス１００は、図６Ａにおける点のクラスタ６０５ａ、６０５ｂ、６０５ｃ、及び６０５ｄに基づいて、複数の平面６１０ａ、６１０ｂ、６１０ｃ、及び６１０ｄ（例えば、無限平面）を構築する（例えば、特定する）。
【０１６１】
方法１０００は、ブロック１００６において、電子デバイスが、基準点Ｘについての画像のセットに関連付けられた２次元（２ｄ）座標空間内で３ｄ点群に関連付けられた点を三角分割することで継続される。図６Ｃに示されるように、例えば、３ｄ点群を合成するために使用される複数の画像に関連付けられた２次元（２ｄ）座標空間において、デバイス１００は、図６Ａにおける点のクラスタ６０５ａ、６０５ｂ、６０５ｃ、及び６０５ｄ内の点を三角分割する。
【０１６２】
方法１０００は、ブロック１００８において、電子デバイスが、３ｄ点群にフィットされた平面と相関されない２ｄ座標空間内の三角形を除去して、基準点Ｘについての制約付き三角分割領域を取得することで継続される。図６Ｄに示されるように、例えば、２ｄ座標空間において、デバイス１００は、図６Ｂにおける複数の平面６１０ａ、６１０ｂ、６１０ｃ、及び６１０ｄに基づいて、同じ平面に関連付けられていない点を有する三角形を除去して、複数の制約付き三角分割領域６２０ａ、６２０ｂ、６２０ｃ、及び６２０ｄを取得する。
【０１６３】
いくつかの実施形態では、電子デバイスは、図１０に示される順序に従って、ブロック１００４、１００６、１００８、及び１０１０に対応する動作を順次実行する。いくつかの実施形態では、電子デバイスは、図１０に示される順序とは異なる順序に従って、ブロック１００４、１００６、１００８、及び１０１０に対応する動作を順次実行する。いくつかの実施形態では、電子デバイスは、ブロック１００４、１００６、１００８、及び１０１０に対応する動作を並列に実行する。
【０１６４】
方法１０００は、ブロック１０１０において、電子デバイスが３ｄ点群に関連付けられた３ｄ座標空間上に制約付き三角分割領域を投影することで継続される。方法１０００は、ブロック１０１２において、電子デバイスが、基準点Ｘについての制約付き三角分割領域に基づいて、四分木のセットを生成することで継続される。一実施例として、図５Ｂでは、デバイス１００又はその構成要素（例えば、図１１における平面フィッティングモジュール１１５８）は、平面の第ｎのセット５２０ｎ及び／又は第ｎの３ｄ点群５０６ｎに基づいて、（例えば、基準点Ｘに関連付けられた）四分木の第ｎのセット５３０ｎを生成する。例えば、デバイス１００は、当該技術分野において既知のアルゴリズム又は技術に従って、四分木の第ｎのセット５３０ｎを生成する。図６Ｅに示されるように、例えば、デバイス１００は、複数の制約付き三角分割領域６２０ａ、６２０ｂ、６２０ｃ、及び６２０ｄを再び３ｄ座標空間に投影し、複数の制約付き三角分割領域６２０ａ、６２０ｂ、６２０ｃ、及び６２０ｄを方形化して、四分木６３０ａ、６３０ｂ、６３０ｃ、及び６３０ｄを取得する。図６Ｅでは、四分木６３０ａ、６３０ｂ、６３０ｃ、及び６３０ｄは、その範囲に基づいて、バウンディングボックスによって囲まれている。
【０１６５】
方法１０００は、ブロック１０１４において、電子デバイスが、基準点Ｘ−１、Ｘ−２〜Ｘ−Ｎの四分木のセットに基づいて、基準点Ｘについての四分木のセットの一部をマージ、拡大、及び／又は補正することで継続される。一実施例として、図５Ｂでは、デバイス１００又はその構成要素（例えば、図１１における相関モジュール１１６２）は、（例えば、基準点Ｘ−２に関連付けられた）四分木の第１のセット５３０ａ、（例えば、基準点Ｘ−１に関連付けられた）四分木の第２のセット５３０ｂ〜（例えば、基準点Ｘに関連付けられた）四分木の第ｎのセット５３０ｎを相関させて、四分木のマージされたセット５４０を生成する。
【０１６６】
例えば、基準点Ｘ、Ｘ−１、Ｘ−２〜Ｘ−Ｎについての四分木のセットを相関させることは、四分木平面、四分木をマージすることと、並びに／若しくは、基準点Ｘ、Ｘ−１、Ｘ−２〜Ｘ−Ｎについての四分木のセットの位置、サイズ及び／又は向きの特定された類似性及び／又は差異に基づいて、時間次元にわたり四分木のサイズ又は向きを補正することと、を含む。いくつかの実施形態では、四分木のセットを相関させることによって、サイズが経時的に変化する動的な平面に関連付けられた四分木が補正される。いくつかの実施形態では、追加の関連付けられた点が経時的に検出されると、四分木のセットを相関させることによって、四分木が拡大される。いくつかの実施形態では、２つ以上の四分木が経時的に同一の四分木の一部であると判定されると、四分木のセットを相関させることによって、四分木がマージされる。いくつかの実施形態では、四分木のマージされたセットにおける各四分木は、実質的に水平な平面、実質的に垂直な平面、又は３つの自由度のうちの１つ以上に従って角度付けされた平面のうちの１つのインジケーションを提供する。いくつかの実施形態では、マージされた四分木のセットのそれぞれは、仮想基体に対応する。
【０１６７】
図１１は、いくつかの実施形態に係る、コンピューティングデバイス１１００のブロック図である。いくつかの実施形態では、コンピューティングデバイス１１００は、図１におけるデバイス１００又は図３におけるデバイス３００の少なくとも一部に対応し、上記で説明された機能性のうちの１つ以上を実行する。特定の特徴が示されているが、当業者は、本明細書に開示される実施形態のより適切な態様を曖昧にしないよう、簡潔にするために様々な他の特徴が示されていないことを、本開示から理解されよう。そのために、非限定的な実施例として、いくつかの実施形態では、コンピューティングデバイス１１００は、１つ以上の処理ユニット（ＣＰＵ）１１０２（例えば、プロセッサ）、１つ以上の入出力（Ｉ／Ｏ）インタフェース１１０３（例えば、ネットワークインタフェース、入力デバイス、出力デバイス、及び／又はセンサインタフェース）、メモリ１１１０、プログラミングインタフェース１１０５、及びこれら及び様々な他の構成要素を相互接続するための１つ以上の通信バス１１０４を含む。
【０１６８】
いくつかの実施形態では、通信バス１１０４は、システム構成要素を相互接続し、システム構成要素間の通信を制御する回路を含む。メモリ１１１０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、又は他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含み、いくつかの実施形態では、１つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステート記憶デバイスなどの不揮発性メモリを含む。メモリ１１１０は、任意選択で、ＣＰＵ（単数又は複数）１１０２からリモートに位置する１つ以上の記憶デバイスを含む。メモリ１１１０は、非一時的コンピュータ可読記憶媒体を含む。更に、いくつかの実施形態では、メモリ１１１０又はメモリ１１１０の非一時的コンピュータ可読記憶媒体は、任意選択のオペレーティングシステム１１２０、画像キャプチャ制御モジュール１１５０、画像処理モジュール１１５２、座標変換モジュール１１５４、点群合成モジュール１１５６、平面フィッティングモジュール１１５８、四分木生成モジュール１１６０、相関モジュール１１６２、並びに拡張現実及び／又は仮想現実（ＡＲ／ＶＲ）処理モジュール１１６４、を含むプログラム、モジュール及びデータ構造、又はそれらのサブセットを記憶する。いくつかの実施形態では、１つ以上の命令は、論理メモリ及び非一時的メモリの組み合わせに含まれる。オペレーティングシステム１１２０は、様々な基本システムサービスを処理するための及びハードウェア依存タスクを実行するための手順を含む。
【０１６９】
いくつかの実施形態では、画像キャプチャ制御モジュール１１５０は、画像をキャプチャするか、又は画像データを取得するための画像センサ又はカメラアセンブリの機能性を制御するように構成される。そのために、画像キャプチャ制御モジュール１１５０は、命令セット１１５１ａ並びにヒューリスティック及びメタデータ１１５１ｂを含む。
【０１７０】
いくつかの実施形態では、画像処理モジュール１１５２は、画像センサ又はカメラアセンブリから生画像データを前処理する（例えば、ＲＡＷ画像データをＲＧＢ画像データ又はＹＣｂＣｒ画像データに変換する）ように構成される。そのために、画像処理モジュール１１５２は、命令セット１１５３ａ並びにヒューリスティック及びメタデータ１１５３ｂを含む。
【０１７１】
いくつかの実施形態では、座標変換モジュール１１５４は、ワールド座標及びデバイス座標を維持するように構成される。いくつかの実施形態では、座標変換モジュール１１５４は、座標セット間で変換を行うようにも構成される。そのために、座標変換モジュール１１５４は、命令セット１１５５ａ並びにヒューリスティック及びメタデータ１１５５ｂを含む。
【０１７２】
いくつかの実施形態では、点群合成モジュール１１５６は、２つ以上の画像に基づいて、基準点／展望点（例えば、カメラ位置）についての３次元（３ｄ）点群を合成するように構成される。そのために、点群合成モジュール１１５６は、命令セット１１５７ａ並びにヒューリスティック及びメタデータ１１５７ｂを含む。
【０１７３】
いくつかの実施形態では、平面フィッティングモジュール１１５８は、それぞれの３ｄ点群についての平面のセットを（例えば、最小二乗法、主成分分析、自己位置推定・環境地図作成（ＳＬＡＭ）など、によって）構築する（例えば、フィットさせる）ように構成される。そのために、平面フィッティングモジュール１１５８は、命令セット１１５９ａ並びにヒューリスティック及びメタデータ１１５９ｂを含む。
【０１７４】
いくつかの実施形態では、四分木生成モジュール１１６０は、それぞれの３ｄ点群についての四分木のセットを生成するように構成される。そのために、四分木生成モジュール１１６０は、命令セット１１６１ａ並びにヒューリスティック及びメタデータ１１６１ｂを含む。
【０１７５】
いくつかの実施形態では、相関モジュール１１６２は、時間次元にわたる異なる基準点／展望点についての四分木のセットを相関させて、四分木のマージされたセットを取得するように構成される。いくつかの実施形態では、相関モジュール１１６２は、時間次元にわたる異なる基準点／展望点についての平面のセットを相関させて、平面のマージされたセットを取得するように構成される。そのために、相関モジュール１１６２は、命令セット１１６３ａ並びにヒューリスティック及びメタデータ１１６３ｂを含む。
【０１７６】
いくつかの実施形態では、ＡＲ／ＶＲ処理モジュール１１６４は、検出された平面及び／又は四分木の視覚的なインジケーションを表示するように構成される。いくつかの実施形態では、ＡＲ／ＶＲ処理モジュール１１６４は、ＡＲ／ＶＲオブジェクトを表示及び修正するように構成される。そのために、ＡＲ／ＶＲ処理モジュール１１６４は、命令セット１１６５ａ並びにヒューリスティック及びメタデータ１１６５ｂを含む。
【０１７７】
画像キャプチャ制御モジュール１１５０、画像処理モジュール１１５２、座標変換モジュール１１５４、点群合成モジュール１１５６、平面フィッティングモジュール１１５８、四分木生成モジュール１１６０、相関モジュール１１６２、及びＡＲ／ＶＲ処理モジュール１１６４は、単一のコンピューティングデバイス１１００に存在するものとして示されているが、他の実施形態では、画像キャプチャ制御モジュール１１５０、画像処理モジュール１１５２、座標変換モジュール１１５４、点群合成モジュール１１５６、平面フィッティングモジュール１１５８、四分木生成モジュール１１６０、相関モジュール１１６２、及びＡＲ／ＶＲ処理モジュール１１６４の任意の組み合わせが、様々な実施形態における別個のコンピューティングデバイスに存在できることを理解されたい。例えば、いくつかの実施形態では、画像キャプチャコントロールモジュール１１５０、画像処理モジュール１１５２、座標変換モジュール１１５４、点群合成モジュール１１５６、平面フィッティングモジュール１１５８、四分木生成モジュール１１６０、相関モジュール１１６２、及びＡＲ／ＶＲ処理モジュール１１６４のそれぞれは、別個のコンピューティングデバイス又はクラウドに存在する。
【０１７８】
更に、図１１は、本明細書に開示される実施形態の構造概略とは対照的に、特定の実装形態に存在する様々な特徴の機能的説明を更に意図している。当業者によって認識されるように、別々に示されたアイテムを組み合わせることができ、一部のアイテムを分離することができる。例えば、図１１に別々に示されるいくつかの機能モジュールは、単一のモジュール内に実装することができ、単一の機能ブロックの様々な機能は、様々な実装形態において１つ以上の機能ブロックによって実装することができる。モジュールの実際の数並びに特定の機能の分割及びそれらにどのように機能が割り当てられるかは、実施形態によって異なり、特定の実施形態のために選択されたハードウェア、ソフトウェア及び／又はファームウェアの特定の組み合わせに部分的に依存することができる。
【０１７９】
本開示は、様々な特徴を説明するが、そのどの特徴も単独で、本明細書に開示される利点に関与することはない。当業者には明らかであるように、本明細書に開示される様々な特徴は、組み合わせることができる、修正することができる、又は省略することができることが理解されるであろう。本明細書に具体的に開示されるもの以外の他の組み合わせ及びサブ組み合わせは、当業者には明らかであり、本開示の一部を成すことが意図される。様々な方法が、様々なフローチャートステップ及び／又は段階に関連して、本明細書に開示される。多くの場合、フローチャートに示される複数のステップ及び／又は段階が単一のステップ及び／又は段階として実行できるように、特定のステップ及び／又は段階は、一緒に組み合わせることができることが理解されるであろう。また、特定のステップ及び／又は段階は、別個に実行される追加のサブ構成要素に分割することができる。場合によっては、ステップ及び／又は段階の順序は再配置することができ、特定のステップ及び／又は段階は完全に省略することができる。また、本明細書に開示される方法は、本明細書に示して開示されるそれらの方法への追加のステップ及び／又は段階も実行できるように非限定的であると理解されるべきである。
【０１８０】
本明細書に開示される方法及びタスクの一部又は全ては、コンピュータシステムによって実行することができ、完全に自動化することができる。コンピュータシステムとして、いくつかの場合、説明される機能を実行するためにネットワークを介して通信及び相互運用する複数の別個のコンピュータ又はコンピューティングデバイス（例えば、物理サーバ、ワークステーション、ストレージアレイなど）を含むことができる。このようなコンピューティングデバイスのそれぞれは、典型的には、メモリ又は他の非一時的コンピュータ可読記憶媒体又はデバイスに記憶されたプログラム命令又はモジュールを実行するプロセッサ（又は複数のプロセッサ）を含む。本明細書に開示される様々な機能は、そのようなプログラム命令において具現化することができ、それにもかかわらず、開示される機能の一部又は全ては、代替的に、コンピュータシステムの特定用途向け回路（例えば、ＡＳＩＣ又はＦＰＧＡ又はＧＰ−ＧＰＵｓ）に実装することができる。コンピュータシステムが複数のコンピューティングデバイスを含む場合、これらのデバイスは、同一の場所に配置することができるが、必ずしもそうである必要はない。開示された方法及びタスクの結果は、異なる状態に変換することによって、ソリッドステートメモリチップ及び／又は磁気ディスクなどの物理記憶デバイスに永続的に記憶することができる。
【０１８１】
本開示は、本明細書に示す実施形態に限定されることを意図するものではない。本開示に開示される実施形態に対する様々な修正は、当業者には容易に明らかになり得、本明細書で定義される一般的な原理は、本開示の趣旨又は範囲から逸脱することなく他の実施形態に適用することができる。本明細書で提供される本発明の教示は、他の方法及びシステムに適用することができ、上記で説明された方法及びシステムに限定されるものではなく、上記で説明された様々な実施形態の要素及び作用を組み合わせて更なる実施形態を提供することができる。したがって、本明細書に開示される新規な方法及びシステムは、様々な他の形態で具現化することができ、更に、本明細書に開示される方法及びシステムの形態の様々な省略、置換、及び変更は、本開示の趣旨から逸脱することなく行うことができる。添付の特許請求の範囲及びそれらの等価物は、本開示の範囲及び趣旨に含まれるようなそのような形態又は修正を網羅することを意図している。
【図１Ａ】
0006812579.tif 000002
【図１Ｂ】
0006812579.tif 000003
【図２】
0006812579.tif 000004
【図３】
0006812579.tif 000005
【図４Ａ】
0006812579.tif 000006
【図４Ｂ】
0006812579.tif 000007
【図４Ｃ】
0006812579.tif 000008
【図４Ｄ】
0006812579.tif 000009
【図４Ｅ】
0006812579.tif 000010
【図４Ｆ】
0006812579.tif 000011
【図４Ｇ】
0006812579.tif 000012
【図４Ｈ】
0006812579.tif 000013
【図４Ｉ】
0006812579.tif 000014
【図４Ｊ】
0006812579.tif 000015
【図４Ｋ】
0006812579.tif 000016
【図４Ｌ】
0006812579.tif 000017
【図４Ｍ】
0006812579.tif 000018
【図５Ａ】
0006812579.tif 000019
【図５Ｂ】
0006812579.tif 000020
【図６Ａ】
0006812579.tif 000021
【図６Ｂ】
0006812579.tif 000022
【図６Ｃ】
0006812579.tif 000023
【図６Ｄ】
0006812579.tif 000024
【図６Ｅ】
0006812579.tif 000025
【図６Ｆ】
0006812579.tif 000026
【図６Ｇ】
0006812579.tif 000027
【図７】
0006812579.tif 000028
【図８】
0006812579.tif 000029
【図９】
0006812579.tif 000030
【図１０】
0006812579.tif 000031
【図１１】
0006812579.tif 000032