(58)【調査した分野】(Int.Cl.,DB名)
前記第1のハンドヘルド電子デバイスは前記HMDに作動的に結合されており、前記第2のハンドヘルド電子デバイスは前記HMDに作動的に結合されている、請求項1に記載の方法。
前記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定するステップは、前記第1のハンドヘルド電子デバイスの検出された第1の位置に対する前記第1のハンドヘルド電子デバイスの検出された第2の位置と、前記第2のハンドヘルド電子デバイスの検出された第1の位置に対する前記第2のハンドヘルド電子デバイスの検出された第2の位置とに基づいて、前記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定するステップを含む、請求項1または2に記載の方法。
前記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定するステップは、前記操作デバイスの作動の解除の検出と、前記操作デバイスの作動の解除の検出に対応する時点で検出された、前記第1のハンドヘルド電子デバイスの第2の位置および前記第2のハンドヘルド電子デバイスの第2の位置の検出に応じて、前記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定するステップをさらに含む、請求項3に記載の方法。
前記第1のハンドヘルド電子デバイスは前記HMDに作動的に結合されており、前記第2のハンドヘルド電子デバイスは前記HMDに作動的に結合されている、請求項8に記載のシステム。
コンピュータ読取可能プログラムであって、前記コンピュータ読取可能プログラムは命令のシーケンスを有し、前記命令のシーケンスは、プロセッサによって実行されると前記プロセッサに方法を実行させ、前記方法は、
ヘッドマウントディスプレイ(HMD)デバイスのディスプレイに仮想環境を表示するステップと、
前記HMDの外部における第1のジェスチャー入力を、第1のハンドヘルド電子デバイスの検出された第1の位置と、第2のハンドヘルド電子デバイスの検出された第1の位置とに基づいて、検出するステップと、
前記第1のジェスチャー入力の検出に応じて、仮想注記面を生成するステップと、
前記HMDの外部における第2のジェスチャー入力を、前記第1のハンドヘルド電子デバイスの検出された第2の位置と、前記第2のハンドヘルド電子デバイスの検出された第2の位置とに基づいて、検出するステップと、
前記第2のジェスチャー入力の検出に応じて、前記仮想環境における第1の仮想オブジェクトとして前記仮想注記面を表示するステップと、
前記第1のハンドヘルド電子デバイスまたは前記第2のハンドヘルド電子デバイスのうちの少なくとも一方の操作デバイスの作動の解除を検出するステップと、
前記検出した操作デバイスの作動の解除に応じて、前記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定するステップと、
前記仮想環境における第2の仮想オブジェクトとして前記仮想注記面を表示するステップとを含む、コンピュータ読取可能プログラム。
【発明を実施するための形態】
【0009】
詳細な説明
たとえばヘッドマウントディスプレイ(HMD)デバイスを装着して拡張および/または仮想現実環境に没入しているユーザは、仮想環境を探検し、さまざまな異なるタイプの入力を通じて仮想環境とのやり取りを行うことができる。これらの入力は、たとえば、HMDとは別の1つ以上の電子デバイスの操作、および/またはHMD自体の操作、および/または手/腕のジェスチャー、目/頭部による注視などを含み得る。上記HMDとは別の1つ以上の電子デバイスの操作は、たとえば、1つ以上の電子デバイスに対する入力、1つ以上の電子デバイスを動かすこと、および/または1つ以上の電子デバイスの位置を変更することを含み得る。いくつかの実装例において、電子デバイスに対する入力は、上記電子デバイスの入力装置またはユーザインターフェイスを介して行うことができる。上記HMDの操作は、たとえば、HMDの対応する入力装置またはインターフェイスを介して行うことができる、HMDに入力を与えることを含み得る。ユーザは、各種電子デバイスを、HMDとは別にまたはHMDとともに操作することにより、仮想環境において所望のアクションを生じさせることができる。ユーザは、仮想環境に没入している間に、たとえば、スケッチ、図形、またはその他の種類の表記の形態で、情報を記録しなければならない場合がある。この情報の記録は、現実世界においてはペン、紙、ホワイトボードなどを用いて実現されるであろう。仮想環境から出ることなく多種多様な情報の視覚的表現を同様のやり方で記録できることにより、ユーザの仮想体験を高度なものにすることが可能である。情報、たとえば2次元のスケッチおよびその他の種類の情報などを仮想面上で捕捉できることにより、仮想環境内の複数のユーザの間での共同作業を容易にすることが可能であり、そうすると仮想環境におけるユーザの体験はさらに高度なものになる。
【0010】
本明細書に記載の実装例に係るシステムおよび方法において、拡張および/または仮想現実環境に没入しているユーザは、この仮想環境の中に仮想注記面(virtual notation surface)を生じさせる(たとえば実体化する、生成する)ことができる。仮想環境において、この仮想注記面は、ユーザが実現する設定されたジェスチャーまたはその他の種類の入力コマンドの検出に応じて生成することができる。注記面は、たとえば、メモ、スケッチなどといったユーザの注釈を受けることができ、これらの注釈は、ユーザが、たとえばコントローラ、仮想ペンもしくはペイントブラシ、手/指などの仮想マーキング手段を用いて仮想注記面を操作したことに応じて、入力される。これらの注釈は、たとえば、現実世界において同様の種類の情報を記録する必要が生じたときにユーザが従うであろうプロセスと幾分似ている、2次元の仮想面上における2次元のスケッチまたはその他のメモまたはその他の種類のマーキングであってもよい。仮想面上で受けた注釈は、このユーザおよび/または次のユーザによる将来の参照のために格納し保存することができ、このユーザおよび/または次のユーザが、更新する、さらに注釈を与える、および/またはそうでなければ修正することができる。仮想注記面の大きさおよび/または形状は、ユーザの操作に応じて調整することができる。これらの仮想注記面の大きさおよび/または形状を変更できることで、特定の仮想マーキング手段の比較的大きな入力規模に対応することができ、また、それによって生じた仮想面上の注釈を、注釈の入力後に仮想注記面の大きさおよび/または規模をさらに調整することで、粒度が改善されている縮小された規模で表示することもできる。このようにして、ユーザと仮想環境の間により柔軟性が高いインターフェイスが提供される。
【0011】
図1は、HMD100を装着しているユーザを第三者の視点で見た図である。この例の第三者の視点で見た図において、ユーザは、拡張/仮想現実システムが動作可能である物理空間400の中で、HMD100のディスプレイに表示された仮想シーンを見ながら仮想環境に没入している。この仮想シーンはHMD100の内部においてユーザから見ることができるが、
図1ではHMD100のディスプレイ上でユーザに対して表示される仮想シーンを表したもの500を示している。これは単に説明および図示を容易にするために過ぎない。ユーザは、HMD100に作動的に結合されてHMD100と通信することが可能な1つ以上の外部コンピューティングデバイス200とやり取りすることができる。これにより、外部デバイス200とHMD100との間の通信およびデータのやり取りが可能になる。1つ以上の外部コンピューティングデバイス200とHMD100とを作動的に結合することは、たとえば、1つ以上の外部コンピューティングデバイス200とHMD100との間に通信接続を設けることを含み得る。外部デバイス200がユーザ入力を受けると、ユーザは、外部デバイス200が受けた入力に基づいてHMD100が生成した仮想シーン500の中の仮想オブジェクトとやり取りすることができる。
図1に示す例において、HMD100と作動的に結合された外部デバイス200は、ハンドヘルド電子デバイス200またはハンドヘルドコントローラ200である。いくつかの実装例において、複数のハンドヘルド電子デバイス200、たとえば、ユーザの第1の手で保持される第1のコントローラおよびユーザの第2の手で保持される第2のコントローラを、ユーザは、HMD100が生成した仮想環境の仮想要素とのやり取りのために、操作することができる。いくつかの実装例において、たとえばマウス、キーボード、ジョイスティックなどのようなその他の外部デバイス200は、HMD100に作動的に結合されることにより、仮想環境におけるやり取りのためのユーザ入力を受けることができる。いくつかの実装例において、このシステムは、たとえばユーザの腕および/または手、および/またはその他の体の部分といったその他の入力デバイスの検出および追跡位置および/または検出された向きに基づいて、仮想環境におけるやり取りのためのユーザ入力を検出することができる。
【0012】
図2A〜
図2Bは、本明細書に記載の実装例に係る、ユーザが装着する一例としてのHMD100の斜視図であり、
図3は、本明細書に記載の実装例に係る、拡張/仮想現実システムの一例のブロック図である。
図2A〜
図2Bおよび
図3を、本明細書において示すシステムおよび方法の各種実装例の記述に従い、より詳しく説明する。
【0013】
以下、設定されたジェスチャー、たとえばHMD100の外部で実現される設定されたジェスチャーの検出に応じて仮想注記面を生成することができる実装例について説明する。これらの仮想注記面、または以下で簡単に仮想面と呼ぶ面は、ユーザが実現する各種操作に応じて、たとえば、ユーザがハンドヘルド電子デバイスといった外部デバイス200を用いて仮想面とやり取りすることで、大きさおよび/または形状および/または表面の外形が調整されるように構成することができる。仮想面は、たとえばユーザが外部デバイス200を介して仮想面とやり取りすることによって与える仮想注釈を受けるように構成することができる。仮想注釈は、たとえば、テキスト、スケッチ、その他の仮想注記面から取り出された情報の形態で仮想面に与えられる任意の種類のマーキング、および、ユーザが所望するその他の種類の注釈を含み得る。
【0014】
図4A〜
図4Eは、検出されたユーザのジェスチャーに応じて仮想環境内で仮想注記面が生成される実装例を示す。この例において、ユーザはHMD100が生成した仮想環境に没入しており、HMD100は、一対のハンドヘルド電子デバイスまたはコントローラ200Aおよび200Bを含む外部デバイス200に作動的に結合されて、仮想環境内の仮想オブジェクト、要素、特徴などとのユーザのやり取りに関連する情報を交換する。先に述べたように、例示されるコントローラ200Aおよび200Bの代わりにまたはこれらに加えて、その他の種類の外部コンピューティングデバイスがHMD100に作動的に結合されてもよい。
【0015】
図4Aは、たとえばHMD100のディスプレイ140上の、ユーザが見ている仮想シーン500または仮想環境500を示しており、ユーザを表したものも示しているが、単に説明および図示を容易にするために過ぎない。この例において、ユーザは、HMD100を装着しており、HMD100に作動的に結合されたまたはHMD100とペアリングされた第1および第2のコントローラ200Aおよび200Bを保持している。ユーザは、
図4Aに示す例に示される仮想環境500を体験している間に、たとえば仮想環境500の体験中に行った観察に基づいて、たとえばテキスト形式、スケッチ、またはその他のやり方で、後に参照するための覚書としてメモを取ることにより、その他のユーザなどと共有する情報を記録することが、有用であることを見出す場合がある。
【0016】
いくつかの実装例において、仮想環境500は、実質的にHMD100の範囲の中で、たとえば先に述べたようにHMD100のディスプレイ140上で、ユーザに対して表示することができる。この状況では、たとえば書込面上にマーキング手段(紙の上にペン/鉛筆、ホワイトボード上にマーカーなど)を用いて、覚書、メッセージ、スケッチなどを記録する従来の方法は、実用的でない場合がある。なぜなら、こうした従来の方法の場合、ユーザは仮想体験を中断し一時的に仮想環境500から出なければならないからである。本明細書に記載の実装例に係るシステムおよび方法において、ユーザは、仮想環境500において仮想注記面(または、以下説明を容易にするために簡単に仮想面と呼ぶ)を実体化させることができる。次に、ユーザは、仮想環境500から出ることなく、この仮想面に、たとえば、テキスト、スケッチなどで注釈を与えることができる。注釈が与えられた仮想面を、上記ユーザ、および/または、同一の仮想環境500内、および/または異なる仮想環境内、および/または仮想環境外のその他のユーザが、後に参照できるよう、格納しアクセスできるようにしてもよい。注釈が与えられた仮想面、および/または注釈が与えられた仮想面上に記録された注記を、1つの仮想面上に集約してもよく、および/または複数の仮想面を仮想的に接続または連結することによって複合仮想面を形成してもよい。注釈が与えられた仮想面を格納すること、格納された仮想面に後でアクセスすること、異なる仮想面の注記を集約させることおよび/または複数の仮想面を連結することが可能であるということは、現実世界において共同作業を行うユーザが従うプロセスと幾分似ており、ユーザの生産性を改善しユーザの体験を高度にする。このようにして、HMD100をより便利に使用することが可能である。さらに、HMD100を介して表示される仮想環境500とのやり取りおよびHMD100自体とのやり取りが改善される。
【0017】
図4Bに示すように、ユーザは、仮想環境500に没入している間に、設定されたジェスチャーを実現できる。システムは、この設定されたジェスチャーを検出することができ、仮想面600を実体化するためのコマンドに対応するジェスチャーとして認識することができる。
図4Bに示す例において、ユーザは、第1および第2のコントローラ200Aおよび200Bを、設定されたやり方で第1の位置まで運ぶことができる。この第1の位置は、システムが検出し得る設定されたやり方で第1および第2のコントローラ200Aおよび200Bが配置される位置である。
図4Bに示す例において、第1および第2のコントローラ200Aおよび200Bは、設定されたジェスチャーの開始としてシステムが検出し得る設定されたやり方で並べられている。
図4Bに示す第1の位置は、第1および第2のコントローラ200Aおよび200Bの第1の位置の配置の一例に過ぎない。第1の位置を含む設定されたジェスチャーは、たとえばユーザの好み、工場設定などに基づく第1および第2のコントローラ200Aおよび200Bのその他の相対位置に基づいて、設定および検出されてもよい。第1および第2のコントローラ200Aおよび200Bが第1の位置にある状態で、ユーザは、たとえばコントローラ200A、200Bのうちの一方または双方の上のトリガまたはボタンなどの操作デバイス205A、205Bの作動といった入力を、与えることができる。第1および第2のコントローラ200Aおよび200Bをこの第1のジェスチャー位置にした状態で操作デバイス205A、205Bのうちの一方または双方を作動させると、システムはこの作動をユーザ入力コマンドとして検出して仮想面600を生成することができる。いくつかの実装例において、コントローラ200A、200Bの相対的な位置は、コントローラ200A、200B内の位置/方位センサにより、および/またはHMD100内の画像センサおよびシステムのその他のコンポーネントにより、検出することができ、および/またはコントローラ200A、200B内のセンサならびにHMD100内のセンサおよびシステム内のその他のコンポーネントが提供するデータを組み合わせたものにより、第1および第2のコントローラ200Aおよび200Bの位置および向きが追跡される。
【0018】
ユーザがコントローラ200A、200Bを動かして引き離す(すなわち互いから遠ざける)と、コントローラ200A、200Bの移動によって定められる対応するジェスチャー入力を、HMD100が、
図4Bに示す実装例に係るコントローラ200A、200Bの移動に応じて検出することができる。この検出は、たとえば上記例のようにセンサを使用して行うことができる。ジェスチャー入力の検出に応じて、仮想面600を実体化することができ、たとえば、HMD100によって仮想環境500に表示することができる。加えて、仮想面600の大きさを、
図4Cおよび
図4Dに示すように、ユーザがコントローラ200A、200Bを動かし続けることによって調整することができる。たとえば、コントローラ200A、200Bの移動は、仮想環境に対して実行されて仮想面600の大きさの調整をHMD100に行わせる、ユーザのさらなるジェスチャーまたはやり取りとして、検出される。いくつかの実装例において、コントローラ200A、200Bを動かし続けながら、ユーザは、操作デバイス205Aおよび/または205Bのうちの一方または双方を、(たとえばボタンまたはトリガを押された状態に保つことによって)作動状態に保つことで、仮想面600の大きさおよび/または形状の調整の継続を望んでいることを示すことができる。たとえば操作デバイス205A、205Bの作動の解除が検出されたことで、ユーザが仮想面600を所望の大きさおよび/または形状で実体化することを終えたことが検出されると、仮想面600は、
図4Eに示すように、テキスト、スケッチなどの形態のユーザ入力をいつでも受けることができる。この例において、仮想面600の大きさおよび/または形状は、システムが、操作デバイス205A、205Bの作動の解除が検出された時点における第1のコントローラ200Aの第2の位置と第2のコントローラ200Bの第2の位置とに基づいて、決定することができる。このようにして、ユーザは、容易に、HMD100が表示した仮想環境500とやり取りすることができ、仮想環境500とさらにやり取りするために仮想面600をHMD100に表示させることができる。したがって、HMD100を簡単かつ効果的に使用することが可能である。
【0019】
図4A〜
図4Eに示す例において、仮想面600は実質的に矩形である。これは、単に説明および図示を容易にするための、仮想面600の外縁形状の一例に過ぎない。仮想面600の外縁は、他の形状によって定められてもよく、たとえば
図4Fおよび
図4Gに示されるような、円形、楕円形、三角形、台形といった規則的な形状であってもよく、および/または、たとえば
図4Hに示されるような不規則な外縁によって定められてもよく、および/または、異なる外縁を組み合わせたものによって定められてもよい。いくつかの実装例において、仮想面600の外縁形状は、たとえばユーザの好みまたは工場設定に基づいて予め設定されてもよい。いくつかの実装例において、仮想面600の外縁形状は、ユーザがたとえば第1の位置のコントローラ200Aおよび200Bを用いるなどして仮想面600を生成するときに選択してもよい。いくつかの実装例において、仮想面600の外縁形状は、仮想面600の生成後において、たとえば仮想面600に注釈を与える前または仮想面600に注釈を与えた後または仮想面600に注釈を与える前と与えた後に、操作または変更してもよい。
【0020】
図4A〜
図4Hに示す例において、仮想面600の表面の外形は、実質的に平坦な面によって定められているが、これは単に説明および図示を容易にするために過ぎない。仮想面600の表面の外形は、たとえば湾曲した外形、角度が付けられたまたは折り曲げられた外形などのような、その他の外形によって定められてもよく、および/または不規則な外形によって定められてもよく、および/または異なる外形を組み合わせたものによって定められてもよい。いくつかの実装例において、仮想面600の外形は、たとえばユーザの好みまたは工場設定に基づいて予め設定されてもよい。いくつかの実装例において、仮想面600の外形は、ユーザがたとえば第1の位置のコントローラ200Aおよび200Bを用いるなどして仮想面600を生成するときに選択してもよい。いくつかの実装例において、仮想面600の外形は、仮想面600の生成後において、たとえば仮想面600に注釈を与える前または仮想面600に注釈を与えた後または仮想面600に注釈を与える前と与えた後に、操作または変更してもよい。
【0021】
いくつかの実装例において、ユーザは、たとえばコントローラ200A、200B、その位置および向きがシステムによって追跡される手/指のうちの一方もしくは双方といったマーキング手段、または、その位置および向きがシステムによって追跡されるその他の指定されたマーキング手段を用いて、仮想面600に注釈を与えることができる。たとえば、
図5Aに示すように、仮想面600が実体化されていつでも注釈を与えることができる状態になると、システムは、仮想面600に与えられる注釈に対応するコントローラ200A、200Bのうちの一方の移動を検出することができる。いくつかの実装例において、コントローラ200A、200Bそれぞれの操作デバイス205A、205Bのうちの一方のユーザによる作動などの特定の初期化アクション、たとえばボタンまたはトリガを押すことにより、仮想面600に仮想のマーキングおよび/または注釈を与えるために各コントローラ200A、200Bを初期化することができる。
【0022】
図5Aに示す例において、第2のコントローラ200Bの操作デバイス205Bを作動させることにより、第2のコントローラ200Bを初期化して、仮想面600に対する注釈を開始することができる。
図5Bに示されるように、ユーザは、操作デバイス205Bを作動状態に保ちつつ、第2のコントローラ200Bの移動に基づいて仮想面600に与えられる注釈を定めるように、第2のコントローラ200Bを動かすまたは表現することができる。いくつかの実装例において、注釈は、ユーザが操作デバイス205Bを作動状態に保ちつつコントローラ200Bを所望のパターンで動かしたときに仮想面600に仮想的に表示されてもよい。いくつかの実装例において、注釈は、操作デバイス205Bの作動の解除後に仮想面600に仮想的に表示されてもよい。ユーザは、再び操作デバイス205Bを作動させるまたは押し下げることにより、仮想面600に注釈を与えるためにコントローラ200Bを初期化し、次に、
図5Cに示すようにコントローラ200Bを所望のパターンまたは輪郭を描くように動かして希望通りに仮想面600にさらに注釈を与えることにより、現在表示されている仮想面600にさらに注釈を与えることができる。
図5Bおよび
図5Cに示す例では、第2のコントローラ200Bを作動させ動かすことによって仮想面600に注釈を与えている。しかしながら、上述のように、仮想面600の注釈は、第1のコントローラ200Aの作動および移動に応じて、および/または第1のコントローラ200Aおよび第2のコントローラ200B双方を作動および移動させることにより、および/または第1のコントローラ200Aおよび/または第2のコントローラ200Bに加えてまたはその代わりに別の仮想マーキング手段を作動および移動させることにより、与えてもよい。
【0023】
いくつかの実装例において、ユーザが、上記のやり方で仮想面600に注釈を与える前または与えた後のいずれかにおいて、仮想面600の大きさおよび/または形状および/または向きを調整したい場合がある。仮想面600の大きさおよび/または形状は、たとえば仮想面600をさらに仮想的に操作することによって調整できる。たとえば、
図5Dに示すように、第1のコントローラ200Aを仮想面600の左端に置き第2のコントローラ200Bを仮想面600の右端に置いた状態で、ユーザは、第1のコントローラ200Aの操作デバイス205Aおよび第2のコントローラ200Bの操作デバイス205Bを作動させ、左端および右端を、
図5Cに示す配置から
図5Dに示す配置まで移動させればよい。同様に、
図5Eに示すように、第1のコントローラ200Aを仮想面600の上端に置き第2のコントローラ200Bを仮想面600の下端に置いた状態で、ユーザは、第1のコントローラ200Aの操作デバイス205Aおよび第2のコントローラ200Bの操作デバイス205Bを作動させ、上端および下端を、
図5Cおよび
図5Dに示す配置から
図5Eに示す配置まで、互いに向かって移動させればよい。ユーザは、仮想面600の端部のうちの1つのみの位置を、同様に、コントローラ200A、200Bのうちの一方を作動させ、仮想面600のある端部における第1の位置から第2の位置まで移動させることにより、対応する仮想面600の大きさ/形状の調整を行うことができる。ユーザはこの大きさおよび/または形状の調整を、たとえば操作デバイス205A、205Bを解除することによって終了させることができる。
【0024】
先に述べたように、
図5A〜
図5Eに示す一例としての仮想面600の外縁形状が矩形であるのは、単に説明および図示を容易にするために過ぎない。しかしながら、異なる外縁形状によって定められる仮想面600の大きさおよび/または形状も、
図5A〜
図5Eに記載のやり方と同様のやり方で調整することができる。たとえば、
図5Fに示すように、実質的に円形の外縁によって定められる仮想面600を、第1および第2のコントローラ200Aおよび200Bの相対的な移動に応じて調整することができ、たとえばその大きさおよび/または形状を、拡大することができる。
図5Gに示す例において、不規則な形状の外縁によって定められる仮想面600を、第1および第2のコントローラ200Aおよび200Bの移動に応じて調整することができ、たとえばその大きさおよび/または形状を、調整して縮小することができる。
【0025】
いくつかの実装例において、仮想面600の大きさおよび/または形状を調整することにより、仮想面600上の注釈の大きさおよび/または形状もそれに応じて調整することができる。たとえば、
図6Aに示すように、第1のコントローラ200Aを仮想面600の下側の角部に置き、第2のコントローラ200Bを、その反対側の、仮想面600の上側の角部に置いた状態で、ユーザは、第1のコントローラ200Aの操作デバイス205Aおよび第2のコントローラ200Bの操作デバイス205Bを作動させ、仮想面600の対向する下側の角と上側の角とを動かして互いに近づけることにより、それに比例して、仮想面600および仮想面600で受けた注釈の大きさおよびスケールを、
図6Aに示す配置から
図6Bに示す配置まで小さくすることができる。仮想面600および注釈の大きさおよび/またはスケールの拡大は、たとえば、対向する角部を、たとえば
図6Bに示す配置から
図6Aに示す配置まで、互いから遠ざかる方向に移動させることにより、実現することができる。
【0026】
いくつかの実装例において、仮想面600の向きを、第1および第2のコントローラ200Aおよび200Bの相対的な移動に応じて調整することができる。
図6Cに示す例では、第1および第2のコントローラ200Aおよび200Bを相対的に移動させた結果、仮想面600は実質的に鉛直面において回転する。
図6Dに示す例では、コントローラ200Aおよび200Bを相対的に移動させた結果、仮想面600の向きが、実質的に鉛直面から実質的に水平面に変化する。仮想面600の向きのその他多数の変更を、第1および第2のコントローラ200Aおよび200Bを相対的に移動させることによって行うことができる。仮想面600の向きのこれらの変更は、さまざまな外縁形状によって定められるおよび/または表面外形が異なる仮想面に対し、このやり方で行うことができる。
【0027】
状況によっては、複数のユーザからアクセスでき複数のユーザ間の共同作業のために利用できる複数の仮想面があることが有用な場合がある。たとえば、
図7Aに示すように、第1の物理空間内の第1のユーザAと、第2の物理空間(または第1のユーザがいる第1の物理空間)内の第2のユーザBとが、共有仮想環境550に没入している場合がある。
図7Aに示す例において、第1のユーザAを表したものおよび第2のユーザBを表したものが共有仮想空間550内に示されているが、これは単に説明および図示を容易にするために過ぎない。この例において、第1のユーザAは第1および第2のコントローラA1およびA2を操作しており、第2のユーザは第1および第2のコントローラB1およびB2を操作している。共有仮想環境550内の第1のユーザAおよび第2のユーザBは、アクセス、検討、修正、共同作業などのために、複数の仮想注記面600(特に仮想面600A、600B、600C、600Dおよび600E)を利用することができる。
【0028】
図7Bに示すように、第1のユーザA(または第2のユーザB)は、検討用として、仮想面600のうちの1つ、たとえば仮想面600Cを、たとえばコントローラA1、A2のうちの一方または双方を用いて仮想面600Cを選択することにより、選択することができる。第1のユーザAは、選択した仮想面600Cを検討するときに、選択した仮想面600Cを、たとえば
図5D〜
図5Eおよび
図6A〜
図6Bについて先に述べたやり方で、たとえば拡大することができる。第1のユーザAは、たとえば
図5A〜
図5Cについて先に述べたやり方で、覚書、スケッチ、またはその他の注釈を仮想面600Cに追加することもできる。
【0029】
第2のユーザBは、第1のユーザAによって注釈が与えられた仮想面600Cを、共有仮想環境550の中で、実質的に同時に、または後で、見ることができ、仮想面600Cをさらに修正するかそうでなければ仮想面600Cに注釈を与えることができる。たとえば、第1のユーザAが残した、公園の追加(add park)を提案する覚書に応じて、第2のユーザBは、
図7Dに示すように公園情報を含む仮想面600Eを選択することもできる。第2のユーザBは、仮想面600Eに格納された情報を用いて、
図7Eに示すように仮想面600Cにさらに注釈を加えることができる。そうすると、第1のユーザAは、
図7Fに示すようにさらに注釈が加えられた仮想面600Cを、共有仮想環境550の中で、実質的にリアルタイムで、または後で、格納された仮想面600Cにアクセスすることにより、検討のために利用することができる。
【0030】
図4A〜
図4H、
図5A〜
図5G、
図6A〜
図6D、および
図7A〜
図7Fについて先に述べたやり方で、仮想注記面600を実体化し、現在体験している仮想環境に必ずしも関係がある訳ではない、仮想の覚書および/または注釈および/またはスケッチを、仮想面600に与える、調整する、または格納することができる。仮想面600に格納された仮想の注釈は、現在の仮想環境500の外部で、および/またはその他の仮想環境の中で、および/または仮想環境に没入していないときに、上記ユーザおよび/またはその他のユーザから共同作業のためにアクセスできるよう、格納することができる。
【0031】
状況によっては、たとえば仮想面600および/または仮想面600に追加しようとするオブジェクトのような、仮想のオブジェクトまたは特徴が、仮想空間550の中でユーザが仮想的に到達できる範囲の外側にある場合がある。同様に、状況によっては、ユーザが、たとえば仮想面600および/またはその他の仮想オブジェクトといった仮想のオブジェクトまたは特徴を、比較的近傍の領域から、ユーザから遠く離れた仮想位置まで移動させることにより、他のタスク用に近傍の仮想空間を空にしたい場合がある。いくつかの実装例において、仮想オブジェクトを、仮想空間500内で比較的遠方の位置から比較的近傍の位置まで移動させること、および/または仮想空間500内で比較的近傍の位置から比較的遠方の位置まで移動させることは、実行する移動に対応するジェスチャーを検出したことに応じて実現できる。
【0032】
図7Gは、物理空間内で、上述のようにHMD100によって生成されHMD100の内部でユーザに対して表示された仮想環境および仮想オブジェクトとの間でやり取りをするユーザを、第三者の視点で見た図である。
図7Gに示す例において、ユーザは、たとえば上述のやり方で仮想環境の中に仮想面600を生じさせており、仮想遠方領域において複数の仮想オブジェクト700がユーザに対して表示されている。仮想面に対して直接マーキングもしくは描画もしくは書込を行うことに加えてまたはその代わりに、ユーザは、たとえば仮想面600に追加するまたは含めるために仮想オブジェクト700のうちの1つ以上を選択することによって、仮想面600に注釈を与えるもしくは描画するもしくはマーキングする、そうでなければ追加することを、選択できる。
【0033】
先に述べたように、仮想オブジェクト700は、遠方の仮想領域にあり、かつユーザから仮想的に届く範囲の外側にある。仮想面600に注釈または図形を与えるために仮想オブジェクト700のうちの1つを選択する場合、ユーザは、仮想オブジェクト700を、たとえば、選択する特定の仮想オブジェクト700Aにハンドヘルド電子デバイス200を向けることによって選択することができる。
図7Gに示す例において、ハンドヘルド電子デバイス200から仮想オブジェクト700Aに向けられた仮想ビーム201が示されている。これは、ハンドヘルド電子デバイス200の向きのターゲットが仮想オブジェクト700Aとの仮想交点にあることを表す仮想視覚表示をユーザに対して示す。いくつかの実装例において、これを他のやり方でユーザに示してもよい。他のやり方は、たとえば、ハンドヘルド電子デバイス200の向きのターゲットを示すカーソルまたはドット、ターゲットである仮想オブジェクトを強調表示するまたは見た目において他の変化を生じさせることなどである。仮想オブジェクト700Aが選択されたことは、たとえば、ハンドヘルド電子デバイス200の操作デバイスの作動、仮想オブジェクト700A上での一時停止時間(dwell time)が予め設定された一時停止時間のしきい値以上であることなどに基づいて、検出することができる。
【0034】
仮想オブジェクト700Aが選択されたことが検出されると、ユーザは、選択した仮想オブジェクト700Aの所望の移動を示すジェスチャーを実施することができる。たとえば、ユーザは、
図7Hに示すように回転またはひねりのジェスチャーを実施することにより、選択した仮想オブジェクト700Aを、たとえば、遠方仮想領域から近傍仮想領域まで、ユーザに近づくように引き寄せることにより、選択した仮想オブジェクト700Aとの間でやり取りを行うことができるようにする。
図7Hに示す例において、ユーザは、反時計回りのジェスチャーを実施することにより、選択した仮想オブジェクト700Aを引き寄せているが、これは単に説明および図示を容易にするために過ぎない。しかしながら、選択された仮想オブジェクト700Aをユーザに近づけるために実施されるジェスチャーは、たとえば、時計回りの動きもしくはジェスチャー、または、ハンドヘルド電子デバイス200を保持しているユーザの腕および/または手をユーザに近づける動きもしくはジェスチャーであってもよく、または、その他のこのようなジェスチャーおよび/または動きであってもよい。
【0035】
ユーザは、選択した仮想オブジェクト700Aがユーザが希望する仮想位置または場所に来るまで、たとえばハンドヘルド電子デバイス200の操作デバイスを作動位置にした状態で、ジェスチャーを、たとえばユーザの腕/手およびハンドヘルド電子デバイス200の回転位置を、維持してもよい。ユーザは、その他の追加のジェスチャーを実施することにより、たとえば、選択した仮想オブジェクト700Aを縦方向および/または横方向などに移動させてもよい。
図7Iに示す例において、ユーザは、選択した仮想オブジェクトを、遠方仮想領域から近傍仮想領域まで移動させるとともに、選択した仮想オブジェクト700Aを横方向に移動させることにより、選択した仮想オブジェクト700Aを用いて仮想面600に注釈を与えている。
図7Iに示すユーザおよび/または上述のように共同作業をしている別のユーザが、上述のように追加の数字/形状(figure)、オブジェクト、テキストなどを用いて仮想面600に注釈をさらに与えてもよく、および/または、上述のように仮想面600の大きさおよび/または形状および/または外形を調整してもよい。
【0036】
同様のやり方で、仮想オブジェクトを、たとえば比較的近傍の領域から比較的遠方の領域まで移動させることができる。たとえば、ユーザは、仮想面600に注釈を与えた後で、注釈付きの仮想面600を移動させて、近傍の仮想領域の空間を新たなタスクのために空けたい場合がある。ユーザは、たとえば上述のやり方で、
図7Jに示すように仮想環境において選択した仮想オブジェクトを示す、注釈付きの仮想面600を選択することができる。仮想面600を選択したことが検出されると、ユーザは、選択した仮想面600の所望の動きを示すジェスチャーを実施することができる。たとえば、ユーザは、
図7Kに示すように回転またはひねるジェスチャーを実施することにより、選択した仮想面600を、ユーザから遠ざけるように、近傍の仮想領域から遠方の仮想領域まで移動させる。
図7Kに示す例において、ユーザは、時計回りのジェスチャーを実施することにより、選択した仮想面600をユーザから遠ざけているが、これは単に説明および図示を容易にするために過ぎない。しかしながら、選択された仮想面600をユーザから遠ざけるために実施されるジェスチャーは、たとえば、反時計回りの動きもしくはジェスチャー、または、ハンドヘルド電子デバイス200を保持しているユーザの腕および/または手の、ユーザから離れる方向の動きもしくはジェスチャー、または、その他のこのようなジェスチャーおよび/または動きであってもよい。ユーザは、
図7Lに示すように、選択した仮想面600がユーザが希望する仮想位置または場所に来るまで、たとえばハンドヘルド電子デバイス200の操作デバイスを作動位置にした状態で、ジェスチャーを、たとえばユーザの腕/手およびハンドヘルド電子デバイス200の回転位置を、維持してもよい。ユーザは、その他の追加のジェスチャーを実施することにより、たとえば、選択した仮想面600を縦方向および/または横方向などに移動させてもよい。
【0037】
本明細書に記載の実装例に係る、拡張および/または仮想現実環境において仮想注釈面を実体化する方法800を、
図8に示す。
【0038】
ユーザは、たとえばコンピューティングデバイスを用いて拡張現実および/または仮想現実環境を生成することにより、拡張現実体験および/または仮想現実体験を開始することができ、上記コンピューティングデバイスは、たとえば、1つ以上の外部デバイスに作動的に結合されたまたはペアリングされた上記ヘッドマウントディスプレイデバイスを含むシステムなどである(ブロック810)。システムは、仮想注記面を実体化する、たとえば表示することを求めるユーザ入力コマンドに対応する設定されたユーザジェスチャーを検出することができ(ブロック820)、検出した設定ユーザジェスチャーに応じて仮想注記面を実体化することができる(ブロック830)。
図4A〜
図4Cについて説明したように、検出されるジェスチャーは、たとえば、ヘッドマウントディスプレイデバイスに作動的に結合された1つ以上の外部デバイスまたはコントローラの移動および/または配置を通して実現されるジェスチャーであってもよく、上記1つ以上の外部デバイスの操作デバイスの作動も含み得る。システムは、仮想注記面の実体化、すなわち対応するプロセスが完了したことを、たとえば
図4C〜
図4Hについて先に説明したように外部デバイスまたはコントローラの操作デバイスの解除の検出に応じて、検出することができる(ブロック840)。システムは、ユーザの注記入力を検出することができ(ブロック850)、選択された仮想注記面に注記を与えることが完了したことをシステムが検出するまで(ブロック870)、検出したユーザの注記入力に応じて、選択された仮想注記面に注釈を与えることができる(ブロック860)。
図5A〜
図5C、
図6A〜
図6D、および
図7A〜
図7Lについて先に説明したように、検出されたユーザの注記は、たとえば、外部デバイスまたはコントローラの操作デバイスの検出された作動、および、外部デバイスまたはコントローラの移動に対応していてもよい。注記の完了をシステムが検出することは、操作デバイスの作動の解除を検出することを含み得る。このプロセスは、現在の拡張現実および/または仮想現実体験が終了したと判断されるまで、続けることができる(ブロック880)。
【0039】
本明細書に記載の実装例に係るシステムおよび方法では、検出したジェスチャーに応じて、仮想注釈面または仮想シートまたは仮想ホワイトボードを、拡張および/または仮想現実環境において実体化することができる。ユーザは、仮想注釈面に注釈を与え、仮想注釈面を調整し、格納し、検討し、修正することができ、現在の仮想環境、および/または別の仮想環境、および/または仮想環境の外部における、その他のユーザとの共同作業を可能にする。
【0040】
図2Aおよび
図2Bは、たとえば
図1に示す例においてユーザが装着しているHMD100などの、一例としてのHMDの斜視図である。HMD100は、フレーム120に結合されたハウジング110を含んでいてもよく、音声出力デバイス130は、たとえばヘッドホンに搭載されたスピーカを含み、音声出力デバイス130もフレーム120に結合されている。
図2Bでは、ハウジング110に収容されている構成要素のうちのいくつかを見ることができるように、ハウジング110の前面部分110aがハウジング110のベース部分110bから離れるように回転されている。ハウジング110の前面部分110aの内側に面する側には、ディスプレイ140が装着されてもよい。前面部分110aがハウジング110のベース部分110bに対して閉鎖位置にあるとき、ハウジング110内であってユーザの眼とディスプレイ140との間にレンズ150が装着されてもよい。HMD100は、さまざまなセンサを含む検知システム160と、HMD100の動作を容易にするためにプロセッサ190およびさまざまな制御システムデバイスを含む制御システム170とを含んでもよい。たとえば、いくつかの実装例では、検知システム160は、さまざまな異なるタイプのセンサ(たとえば、加速度計、ジャイロスコープ、磁気計など)を含む慣性測定ユニット(IMU)162を含んでもよい。HMD100の位置および向きは、IMU162によって与えられるデータに基づいて検出され、追跡されてもよい。そうすると、システムは、ユーザの頭部の注視方向および動きを検出し追跡することができる。カメラ180が、ユーザの物理的位置、および/または、HMD100と通信する/HMD100に作動的に結合された他の外部デバイスの物理的位置の追跡を助けるために使用し得る静止画および/または動画を、取り込んでもよい。取り込まれた画像も、ユーザに対し、パススルーモードでディスプレイ140上に表示されてもよい。
【0041】
いくつかの実装例では、HMD100は、視線の方向および移動を検出して追跡するためにたとえば1つ以上のセンサを含む視線追跡装置165Aを含んでもよい。センサ165Aによって取り込まれた画像は、ユーザの視線の方向および移動を検出して追跡するように処理されてもよく、検出され追跡された視線は、ユーザ入力として処理されて、没入型仮想体験における対応するやり取りに変換されてもよい。
【0042】
本明細書に記載の実装例に係るシステムのブロック図が
図3に示されている。このシステムは、第1の電子デバイス300(たとえば、
図1および
図2A〜
図2Bに関連して上記したHMDなど)と、第1の電子デバイス300と通信する少なくとも1つの第2の電子デバイス302(たとえば、
図1に関連して上記したハンドヘルド電子デバイスまたは他の外部デバイスなど)とを含んでもよい。上述のように、
図3には第2の電子デバイス302が1つ示されているが、それは単に説明および図示を容易にするために過ぎず、2つ以上の第2の電子デバイス302が第1の電子デバイス300に作動的に結合されてもよい。
【0043】
第1の電子デバイス300は、検知システム3
70と制御システム3
80とを含んでもよく、検知システム3
70および制御システム3
80はそれぞれ
図2Aおよび
図2Bに示される検知システム160および制御システム170と同様であってもよい。検知システム3
70は、たとえば光センサ、オーディオセンサ、画像センサ、距離/近接センサ、およびIMU、および/または他のセンサおよび/またはセンサのさまざまな組み合わせを含む、さまざまなタイプのセンサを含んでもよい。制御システム3
80は、たとえば電源/一時停止制御装置、オーディオおよびビデオ制御装置、光学制御装置、移行制御装置、および/または、他のこのような装置および/または装置のさまざまな組み合わせを含んでもよい。検知システム3
70および/または制御システム3
80は、特定の実装例に応じて、より多くのデバイスを含んでもよく、またはより少ないデバイスを含んでもよい。検知システム3
70および/または制御システム3
80に含まれる要素は、たとえば
図2Aおよび
図2Bに示されるHMD100以外のHMD内に異なる物理的配置(たとえば、異なる物理的位置)を有してもよい。また、第1の電子デバイス300は、検知システム3
70および制御システム3
80と通信するプロセッサ390を含んでもよい。プロセッサ390は、検知システム3
70から受信した入力を処理し、検出した入力に対応する命令を実行してもよい。また、第1の電子デバイス300は、メモリ38
5と、第1の電子デバイス300と別の外部デバイス(たとえば、第2の電子デバイス302など)との間の通信を提供する通信モジュール3
95とを含んでもよい。
【0044】
第2の電子デバイス302は、第2の電子デバイス302と、第2の電子デバイス302の外部の別のデバイス(たとえば、第1の電子デバイス300など)との間の通信およびデータ交換を提供する通信モジュール306を含んでもよい。いくつかの実装例では、第2の電子デバイス302の特定の構成(すなわち、ハンドヘルド電子デバイスまたはコントローラ対キーボードまたはマウス)に応じて、第2の電子デバイス302は、検知システム304を含んでもよく、たとえば、検知システム304は、たとえばカメラおよびマイクロフォンに含まれるような画像センサおよびオーディオセンサ、IMU、ハンドヘルド電子デバイスまたはスマートフォンのタッチセンサ面に含まれるようなタッチセンサ、ならびに他のこのようなセンサおよび/またはセンサのさまざまな組み合わせを含む。プロセッサ309は、第2の電子デバイス302の検知システム304およびコントローラ305と通信してもよく、コントローラ305は、メモリ308へのアクセスを有し、第2の電子デバイス302の動作全体を制御する。
【0045】
上述の通り、HMD100によって生成された仮想現実環境に没入しているときに、仮想環境から出なくてもメモを取るまたはスケッチすることが可能であり、かつ、このメモまたはスケッチを後で参照するために保存することおよび/またはこのメモまたはスケッチを別のユーザと共有することが可能であることから、仮想環境におけるユーザの体験を高度なものにすることができる。仮想注記面に記録するこのメモもしくはスケッチまたはその他の情報が体験中の仮想環境に関係があるか否かに関係なく、このメモまたはスケッチを仮想環境から出ずに実現できるので、ユーザは、仮想体験が妨害および/または中断されることなく、引き続き仮想環境に接続されているまたは仮想環境内に留まることができる。これにより、ユーザは、現実世界の環境において、メモ用紙、ホワイトボード、付箋などにメモ書きおよびスケッチすることができるのと同様の機能を、仮想環境において得ることができる。このように、本明細書に記載の実装例に係るシステムおよび方法において、仮想注記面は、たとえば設定されたユーザジェスチャーなどのユーザ入力に応じて、仮想環境内で実体化することができる。仮想注記面の大きさおよび/または形状は、たとえばユーザが仮想注記面に情報を入力する前および/またはその後で、ユーザ入力に応じて調整することができる。
【0046】
図9は、本明細書に記載されている技術とともに使用され得るコンピュータデバイス1000およびモバイルコンピュータデバイス1050の一例を示す。コンピューティングデバイス1000は、プロセッサ1002と、メモリ1004と、ストレージデバイス1006と、メモリ1004および高速拡張ポート1010に接続する高速インターフェイス1008と、低速バス1014およびストレージデバイス1006に接続する低速インターフェイス1012とを含む。コンポーネント1002,1004,1006,1008,1010および1012の各々は、さまざまなバスを用いて相互接続され、共通のマザーボード上に搭載される場合もあれば、適宜他の態様で搭載される場合もある。プロセッサ1002は、コンピューティングデバイス1000内で実行するために命令を処理し得て、当該命令は、高速インターフェイス1008に結合されたディスプレイ1016などの外部入出力デバイス上にGUIのためのグラフィック情報を表示するための、メモリ1004内またはストレージデバイス1006上に格納された命令を含む。他の実装例では、複数のメモリおよび複数タイプのメモリとともに、複数のプロセッサおよび/または複数のバスが適宜使用されてもよい。また、複数のコンピューティングデバイス1000が接続されてもよく、各デバイスは、(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
【0047】
メモリ1004は、コンピューティングデバイス1000内の情報を格納する。一実装例では、メモリ1004は、単一の揮発性メモリユニットまたは複数の揮発性メモリユニットである。別の実装例では、メモリ1004は、単一の不揮発性メモリユニットまたは複数の不揮発性メモリユニットである。また、メモリ1004は、磁気ディスクまたは光ディスクなどの別の形態のコンピュータ読取可能な媒体であってもよい。
【0048】
ストレージデバイス1006は、コンピューティングデバイス1000に大容量ストレージを提供することができる。一実装例では、ストレージデバイス1006は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、テープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくは他の構成内のデバイスを含むデバイスのアレイなどのコンピュータ読取可能な媒体であってもよく、またはコンピュータ読取可能な媒体を含んでもよい。コンピュータプログラム製品は、情報担体内で有形に実施され得る。コンピュータプログラム製品は、実行されたときに上記の方法などの1つ以上の方法を実行する命令も含んでもよい。情報担体は、メモリ1004、ストレージデバイス1006またはメモリオンプロセッサ1002などのコンピュータまたは機械読取可能な媒体である。
【0049】
高速コントローラ1008は、コンピューティングデバイス1000のための帯域幅を多く使用する動作を管理するのに対して、低速コントローラ1012は、帯域幅をそれほど使用しない動作を管理する。このような機能の割り当ては、例示に過ぎない。一実装例では、高速コントローラ1008は、メモリ1004、ディスプレイ1016(たとえば、グラフィックスプロセッサまたは加速装置を介して)、および高速拡張ポート1010に結合され、高速拡張ポート1010は、さまざまな拡張カード(図示せず)を受け付け得る。当該実装例では、低速コントローラ1012は、ストレージデバイス1006および低速拡張ポート1014に結合される。さまざまな通信ポート(たとえば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、ワイヤレスイーサネット)を含み得る低速拡張ポートは、たとえばネットワークアダプタを介して、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータなどのネットワーキングデバイスなどの1つ以上の入出力デバイスに結合されてもよい。
【0050】
コンピューティングデバイス1000は、図に示されるように複数の異なる形態で実現されてもよい。たとえば、コンピューティングデバイス1000は、標準的なサーバ1020として実現されてもよく、またはこのようなサーバのグループの状態で複数回実現されてもよい。また、コンピューティングデバイス1000は、ラックサーバシステム1024の一部として実現されてもよい。また、コンピューティングデバイス1000は、ラップトップコンピュータ1022などのパーソナルコンピュータとして実現されてもよい。代替的に、コンピューティングデバイス1000からのコンポーネントは、デバイス1050などのモバイルデバイス(図示せず)内の他のコンポーネントと組み合わせられてもよい。このようなデバイスの各々は、コンピューティングデバイス1000,1050のうちの1つ以上を含んでもよく、システム全体が、互いに通信する複数のコンピューティングデバイス1000,1050で構成されてもよい。
【0051】
コンピューティングデバイス1050は、いくつかあるコンポーネントの中で特に、プロセッサ1052と、メモリ1064と、ディスプレイ1054などの入出力デバイスと、通信インターフェイス1066と、送受信機1068とを含む。デバイス1050は、さらなるストレージを提供するためにマイクロドライブまたは他のデバイスなどのストレージデバイスも備えていてもよい。コンポーネント1050,1052,1064,1054,1066および1068の各々は、さまざまなバスを使用して相互接続され、コンポーネントのうちのいくつかは、共通のマザーボード上に搭載される場合もあれば、適宜他の態様で搭載される場合もある。
【0052】
プロセッサ1052は、メモリ1064に格納された命令を含む命令をコンピューティングデバイス1050内で実行することができる。プロセッサは、別々の複数のアナログプロセッサおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサは、たとえば、ユーザインターフェイスの制御、デバイス1050によって実行されるアプリケーション、およびデバイス1050による無線通信などの、デバイス1050の他のコンポーネントの連携を提供してもよい。
【0053】
プロセッサ1052は、ディスプレイ1054に結合された制御インターフェイス1058およびディスプレイインターフェイス1056を介してユーザと通信し得る。ディスプレイ1054は、たとえばTFT LCD(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)もしくはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス1056は、ディスプレイ1054を駆動してグラフィック情報および他の情報をユーザに提示するための適切な回路を備え得る。制御インターフェイス1058は、ユーザからコマンドを受信し、当該コマンドを変換してプロセッサ1052に送信し得る。また、デバイス1050と他のデバイスとの近接エリア通信を可能にするために、外部インターフェイス1062がプロセッサ1052と通信するように設けられてもよい。外部インターフェイス1062は、たとえば、いくつかの実現例では有線通信を提供してもよく、または他の実現例では無線通信を提供してもよく、複数のインターフェイスも使用してもよい。
【0054】
メモリ1064は、コンピューティングデバイス1050内の情報を格納する。メモリ1064は、コンピュータ読取可能な媒体、揮発性メモリユニットまたは不揮発性メモリユニットのうちの1つ以上として実現されてもよい。また、拡張メモリ1074が設けられて、拡張インターフェイス1072を介してデバイス1050に接続されてもよく、拡張インターフェイス572は、たとえばSIMM(Single In Line Memory Module:シングル・インライン・メモリ・モジュール)カードインターフェイスを含み得る。このような拡張メモリ1074は、デバイス1050に対して追加の記憶領域を提供してもよく、またはデバイス1050のためにアプリケーションもしくは他の情報を格納してもよい。具体的には、拡張メモリ1074は、上記のプロセスを実行または補完するための命令を含んでもよく、セキュリティ保護された情報も含んでもよい。したがって、たとえば、拡張メモリ1074は、デバイス1050のためのセキュリティモジュールとして提供されてもよく、デバイス1050の安全な使用を可能にする命令でプログラムされてもよい。また、ハッキングできない態様でSIMMカードに識別情報を載せるなど、追加情報とともに、セキュリティ保護されたアプリケーションがSIMMカードを介して提供されてもよい。
【0055】
以下に記載するように、メモリは、たとえばフラッシュメモリおよび/またはNVRAMメモリを含んでもよい。一実装例では、コンピュータプログラム製品は、情報担体内で有形に実施される。コンピュータプログラム製品は、実行されたときに上記の方法などの1つ以上の方法を実行する命令を含む。情報担体は、たとえば送受信機1068または外部インターフェイス1062の上方に受けられ得るメモリ1064、拡張メモリ1074またはメモリオンプロセッサ1052などのコンピュータまたは機械読取可能な媒体である。
【0056】
デバイス1050は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス1066を介して無線通信してもよい。通信インターフェイス1066は、とりわけGSM(登録商標)音声電話、SMS、EMSもしくはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000またはGPRSなどのさまざまなモードまたはプロトコルの下での通信を提供し得る。このような通信は、たとえば無線周波数送受信機1068を介して行われてもよい。また、ブルートゥース、Wi−Fiまたは他のこのような送受信機(図示せず)などを用いて狭域通信が行われてもよい。また、GPS(グローバルポジショニングシステム)受信機モジュール1070は、さらなるナビゲーションおよび位置関連の無線データをデバイス1050に提供し得て、当該データは、デバイス1050上で実行されるアプリケーションによって適宜使用され得る。
【0057】
また、デバイス1050は、音声コーデック1060を用いて可聴に通信してもよく、音声コーデック1060は、音声情報をユーザから受信し、当該音声情報を使用可能なデジタル情報に変換し得る。さらに、音声コーデック1060は、話者を介するなどして、たとえばデバイス1050の受話器においてユーザのために可聴音を生成し得る。このような音は、音声電話からの音声を含んでもよく、記録された音(たとえば、音声メッセージ、音楽ファイルなど)を含んでもよく、デバイス1050上で動作するアプリケーションによって生成された音も含んでもよい。
【0058】
コンピューティングデバイス1050は、図に示されるように複数の異なる形態で実現されてもよい。たとえば、コンピューティングデバイス1050は、携帯電話1080として実現されてもよい。また、コンピューティングデバイス1050は、スマートフォン1082、パーソナルデジタルアシスタントまたは他の同様のモバイルデバイスの一部として実現されてもよい。
【0059】
本明細書に記載されているシステムおよび技術のさまざまな実装例は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/または、それらの組み合わせで実現されてもよい。これらのさまざまな実装例は、プログラム可能なシステム上で実行可能および/または解釈可能である1つ以上のコンピュータプログラムでの実装例を含み得て、当該プログラム可能なシステムは、少なくとも1つのプログラム可能なプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含み、当該少なくとも1つのプログラム可能なプロセッサは、ストレージシステムとデータおよび命令を送受信するように結合された特殊目的または汎用プロセッサであってもよい。
【0060】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)は、プログラム可能なプロセッサのための機械命令を含み、高水準手続き型および/もしくはオブジェクト指向プログラミング言語で実現されてもよく、ならびに/またはアセンブリ/機械言語で実現されてもよい。本明細書で使用される「機械読取可能な媒体」「コンピュータ読取可能な媒体」という用語は、機械読取可能な信号として機械命令を受信する機械読取可能な媒体を含む、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device:PLD))を指す。「機械読取可能な信号」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用される任意の信号を指す。
【0061】
ユーザとの対話を提供するために、本明細書に記載されているシステムおよび技術は、コンピュータ上で実現されてもよく、当該コンピュータは、ユーザに対して情報を表示するためのディスプレイデバイス(たとえば、CRT(cathode ray tube:陰極線管)またはLCD(liquid crystal display:液晶ディスプレイ)モニタ)と、キーボードと、ユーザが入力をコンピュータに提供することができるポインティングデバイス(たとえば、マウスまたはトラックボール)とを有する。ユーザとの対話を提供するために他の種類のデバイスも使用されてもよい。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバックまたは触覚フィードバック)であってもよく、ユーザからの入力は、音響入力、音声入力または触知可能入力を含む任意の形態で受信されてもよい。
【0062】
本明細書に記載されているシステムおよび技術は、バックエンドコンポーネント(たとえば、データサーバ)を含むコンピューティングシステムで実現されてもよく、またはミドルウェアコンポーネント(たとえば、アプリケーションサーバ)を含むコンピューティングシステムで実現されてもよく、またはフロントエンドコンポーネント(たとえば、ユーザが本明細書に記載されているシステムおよび技術の実装例と対話することができるグラフィカルユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータ)を含むコンピューティングシステムで実現されてもよく、またはこのようなバックエンドコンポーネント、ミドルウェアコンポーネントまたはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムで実現されてもよい。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体(たとえば、通信ネットワーク)によって相互接続されてもよい。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、およびインターネットが挙げられる。
【0063】
コンピューティングシステムは、クライアントとサーバとを含み得る。クライアントおよびサーバは、一般に互いに離れており、通常は通信ネットワークを介して対話する。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれのコンピュータ上で実行されて互いにクライアント−サーバ関係を有することによって生じる。
【0064】
いくつかの実装例では、
図9に示されるコンピューティングデバイスは、バーチャルリアリティに接続されるセンサ(VRヘッドセット/HMD装置1090)を含んでもよい。たとえば、
図9に示されるコンピューティングデバイス1050または他のコンピューティングデバイス上に含まれる1つ以上のセンサは、VRヘッドセット1090に入力を提供してもよく、または一般に、VR空間に入力を提供してもよい。これらのセンサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、バイオメトリックセンサ、温度センサ、湿度センサおよび周囲光センサを含み得るが、これらに限定されるものではない。コンピューティングデバイス1050は、これらのセンサを使用して、VR空間におけるコンピューティングデバイスの絶対位置および/または検出された回転を判断してもよく、絶対位置および/または回転は、その後、VR空間への入力として使用されてもよい。たとえば、コンピューティングデバイス1050は、コントローラ、レーザポインタ、キーボード、武器などの仮想オブジェクトとしてVR空間に組み込まれてもよい。VR空間に組み込まれる場合のユーザによるコンピューティングデバイス/仮想オブジェクトの位置決めにより、ユーザは、VR空間内で仮想オブジェクトが特定の態様で見られるようにコンピューティングデバイスを位置決めすることができる。たとえば、仮想オブジェクトがレーザポインタに相当する場合、ユーザは、まるでそれが実際のレーザポインタであるかのようにコンピューティングデバイスを操作することができる。ユーザは、コンピューティングデバイスを左右、上下、円の形などに移動させて、レーザポインタを使用するのと同様の態様でデバイスを使用することができる。
【0065】
いくつかの実装例では、コンピューティングデバイス1050上に含まれるかまたはコンピューティングデバイス1050に接続される1つ以上の入力デバイスがVR空間への入力として使用されてもよい。入力デバイスは、タッチスクリーン、キーボード、1つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイクロフォン、入力機能を有するイヤホンもしくはバッド、ゲームコントローラ、または他の接続可能な入力デバイスを含み得るが、これらに限定されるものではない。コンピューティングデバイスがVR空間に組み込まれる場合にコンピューティングデバイス1050上に含まれる入力デバイスと対話するユーザは、VR空間において特定のアクションを生じさせることができる。
【0066】
いくつかの実装例では、コンピューティングデバイス1050のタッチスクリーンは、VR空間においてタッチパッドとして描写されてもよい。ユーザは、コンピューティングデバイス1050のタッチスクリーンと対話することができる。対話は、たとえばVRヘッドセット1090においては、VR空間における描写されたタッチパッド上での移動として描写される。描写された移動は、VR空間における仮想オブジェクトを制御することができる。
【0067】
いくつかの実装例では、コンピューティングデバイス1050上に含まれる1つ以上の出力デバイスは、VR空間におけるVRヘッドセット1090のユーザに出力および/またはフィードバックを提供してもよい。この出力およびフィードバックは、視覚的なもの、戦術的なもの、または音声によるものであってもよい。この出力および/またはフィードバックは、振動、1つ以上のライトもしくはストロボをオンおよびオフにすることもしくは点滅および/もしくは明滅させること、警報を鳴らすこと、チャイムを鳴らすこと、曲を流すこと、および音声ファイルの再生を含み得るが、これらに限定されるものではない。出力デバイスは、振動モータ、振動コイル、圧電装置、静電装置、発光ダイオード(LED)、ストロボおよびスピーカを含み得るが、これらに限定されるものではない。
【0068】
いくつかの実装例では、コンピューティングデバイス1050は、コンピュータによって生成された3D環境における別のオブジェクトとして現れてもよい。ユーザとコンピューティングデバイス1050との対話(たとえば、タッチスクリーンを回転させること、タッチスクリーンを揺さぶること、タッチスクリーンに触れること、タッチスクリーン上で指をスワイプすること)は、VR空間におけるオブジェクトとの対話であると解釈することができる。VR空間におけるレーザポインタの例では、コンピューティングデバイス1050は、コンピュータによって生成された3D環境における仮想レーザポインタとして現れる。ユーザがコンピューティングデバイス1050を操作すると、VR空間内のユーザは、レーザポインタが動くのを見る。ユーザは、VR環境でのコンピューティングデバイス1050との対話からのフィードバックをコンピューティングデバイス1050またはVRヘッドセット1090で受信する。
【0069】
いくつかの実装例では、コンピューティングデバイス1050は、タッチスクリーンを含んでもよい。たとえば、ユーザは、タッチスクリーン上で起こることとVR空間で起こることとを似せることができる特定の態様でタッチスクリーンと対話することができる。たとえば、ユーザは、ピンチタイプ動作を使用して、タッチスクリーン上に表示されたコンテンツを拡大/縮小してもよい。タッチスクリーン上でのこのピンチタイプ動作は、VR空間において提供される情報を拡大/縮小させることができる。別の例では、コンピューティングデバイスは、コンピュータによって生成された3D環境における仮想書籍として描写されてもよい。VR空間において、書籍のページがVR空間に表示されてもよく、タッチスクリーン上でユーザの指をスワイプすることは、仮想書籍のページをめくる/さっとめくることであると解釈することができる。各ページがめくられる/さっとめくられると、ページコンテンツの変化を見ることに加えて、ユーザは、書籍のページをめくる音などの音声フィードバックを提供されてもよい。
【0070】
いくつかの実装例では、コンピューティングデバイス(たとえば、マウス、キーボード)に加えて、1つ以上の入力デバイスが、コンピュータによって生成された3D環境内に描写されてもよい。描写された入力デバイス(たとえば、描写されたマウス、描写されたキーボード)は、VR空間内に描写されたとおりに使用されて、VR空間におけるオブジェクトを制御することができる。
【0071】
コンピューティングデバイス1000は、さまざまな形態のデジタルコンピュータおよびデバイスを表すよう意図されており、これらのデジタルコンピュータおよびデバイスは、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータを含むが、これらに限定されるものではない。コンピューティングデバイス1050は、パーソナルデジタルアシスタント、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスなどのさまざまな形態のモバイルデバイスを表すよう意図されている。ここに示されている構成要素、それらの接続および関係、ならびにそれらの機能は、単に例示的であるよう意図されており、本明細書に記載および/またはクレームされている発明の実装例を限定することを意図したものではない。
【0072】
さらに他の実装例を以下の例に要約する。
例1:ヘッドマウントディスプレイ(HMD)デバイスのディスプレイに仮想環境を表示するステップと、上記HMDの外部における第1のジェスチャー入力を検出するステップと、上記第1のジェスチャー入力の検出に応じて、仮想注記面を生成するステップと、上記HMDの外部における第2のジェスチャー入力を検出するステップと、上記第2のジェスチャー入力の検出に応じて、上記仮想環境における仮想オブジェクトとして上記仮想注記面を表示するステップと、上記HMDの外部における第3のジェスチャー入力を検出するステップと、上記第3のジェスチャー入力の検出に応じて、上記仮想注記面に注釈を与えるステップと、上記注釈が与えられた仮想注記面を、上記仮想環境における仮想オブジェクトとして表示するステップとを含む、方法。
【0073】
例2:上記第1のジェスチャー入力を検出するステップは、上記HMDに作動的に結合された第1のハンドヘルド電子デバイスの第1の位置を検出するステップと、上記HMDに作動的に結合された第2のハンドヘルド電子デバイスの第1の位置を検出するステップと、上記検出した第1のハンドヘルド電子デバイスの第1の位置と、上記検出した第2のハンドヘルド電子デバイスの第1の位置とに基づいて、上記第1のジェスチャー入力を検出するステップとを含む、例1に記載の方法。
【0074】
例3:上記第1のジェスチャー入力を検出するステップは、上記第1のハンドヘルド電子デバイスまたは上記第2のハンドヘルド電子デバイスのうちの少なくとも一方の操作デバイスの作動を検出するステップをさらに含む、例2に記載の方法。
【0075】
例4:上記第2のジェスチャー入力を検出するステップは、上記第1のハンドヘルド電子デバイスの第2の位置を検出するステップと、上記第2のハンドヘルド電子デバイスの第2の位置を検出するステップと、上記検出した第1のハンドヘルド電子デバイスの第1の位置に対する上記検出した第1のハンドヘルド電子デバイスの第2の位置と、上記検出した第2のハンドヘルド電子デバイスの第1の位置に対する上記検出した第2のハンドヘルド電子デバイスの第2の位置とに基づいて、上記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定するステップとを含む、例3に記載の方法。
【0076】
例5:上記第2のジェスチャー入力を検出するステップは、上記第1のハンドヘルド電子デバイスまたは上記第2のハンドヘルド電子デバイスのうちの少なくとも一方の操作デバイスの作動の解除を検出するステップと、上記操作デバイスの作動の解除の検出と、上記操作デバイスの作動の解除の検出に対応する時点で検出された、上記第1のハンドヘルド電子デバイスの第2の位置および上記第2のハンドヘルド電子デバイスの第2の位置の検出に応じて、上記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定するステップとをさらに含む、例4に記載の方法。
【0077】
例6:上記第3のジェスチャー入力を検出するステップおよび上記仮想注記面に注釈を与えるステップは、マーキング手段の移動を検出し追跡するステップと、上記検出したマーキング手段の移動に基づいて上記仮想注記面に注釈を与えるステップとを含む、例1〜例5のうちのいずれか1つに記載の方法。
【0078】
例7:上記検出したマーキング手段の移動に基づいて上記仮想注記面に注釈を与えるステップは、上記マーキング手段の操作デバイスの作動を検出するステップと、上記検出した操作デバイスの作動に応じて、上記マーキング手段の移動の追跡を開始するステップと、上記操作デバイスの作動の解除を検出するステップと、上記検出した操作デバイスの解除に応じて、上記マーキング手段の移動の追跡を終了するステップとを含む、例6に記載の方法。
【0079】
例8:上記検出したマーキング手段の移動に基づいて上記仮想注記面に注釈を与えるステップは、上記追跡したマーキング手段の移動に対応する輪郭を検出するステップと、上記検出したマーキング手段の移動の輪郭に対応する輪郭を用いて上記仮想注記面に注釈を与えるステップとをさらに含む、例7に記載の方法。
【0080】
例9:システムであって、仮想現実環境を生成するように構成されたコンピューティングデバイスを備え、上記コンピューティングデバイスは、実行可能な命令を格納するメモリと、プロセッサとを含み、上記プロセッサは、上記命令を実行することにより、上記コンピューティングデバイスに、ヘッドマウントディスプレイ(HMD)デバイスのディスプレイに仮想環境を表示することと、上記HMDの外部における第1のジェスチャー入力を検出することと、上記第1のジェスチャー入力の検出に応じて、仮想注記面を生成することと、上記HMDの外部における第2のジェスチャー入力を検出することと、上記第2のジェスチャー入力の検出に応じて、上記仮想環境における仮想オブジェクトとして上記仮想注記面を表示することと、上記HMDの外部における第3のジェスチャー入力を検出することと、上記第3のジェスチャー入力の検出に応じて、上記仮想注記面に注釈を与えることと、上記注釈が与えられた仮想注記面を、上記仮想環境における仮想オブジェクトとして表示することとを実行させるように構成されている。
【0081】
例10:上記第1のジェスチャー入力の検出において、上記命令は、上記コンピューティングデバイスに、上記HMDに作動的に結合された第1のハンドヘルド電子デバイスの第1の位置を検出することと、上記HMDに作動的に結合された第2のハンドヘルド電子デバイスの第1の位置を検出することと、上記検出した第1のハンドヘルド電子デバイスの第1の位置と、上記検出した第2のハンドヘルド電子デバイスの第1の位置とに基づいて、上記第1のジェスチャー入力を検出することとを実行させる、例9に記載のシステム。
【0082】
例11:上記第1のジェスチャー入力の検出において、上記命令は、上記コンピューティングデバイスに、上記第1のハンドヘルド電子デバイスまたは上記第2のハンドヘルド電子デバイスのうちの少なくとも一方の操作デバイスの作動を検出することをさらに実行させる、例10に記載のシステム。
【0083】
例12:上記第2のジェスチャー入力の検出において、上記命令は、上記コンピューティングデバイスに、上記第1のハンドヘルド電子デバイスの第2の位置を検出することと、上記第2のハンドヘルド電子デバイスの第2の位置を検出することと、上記検出した第1のハンドヘルド電子デバイスの第1の位置に対する上記検出した第1のハンドヘルド電子デバイスの第2の位置と、上記検出した第2のハンドヘルド電子デバイスの第1の位置に対する上記検出した第2のハンドヘルド電子デバイスの第2の位置とに基づいて、上記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定することとを実行させる、例11に記載のシステム。
【0084】
例13:上記第2のジェスチャー入力の検出において、上記命令は、上記コンピューティングデバイスに、上記第1のハンドヘルド電子デバイスまたは上記第2のハンドヘルド電子デバイスのうちの少なくとも一方の操作デバイスの作動の解除を検出することと、上記操作デバイスの作動の解除の検出と、上記操作デバイスの作動の解除の検出に対応する時点で検出された、上記第1のハンドヘルド電子デバイスの第2の位置および上記第2のハンドヘルド電子デバイスの第2の位置の検出に応じて、上記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定することとを実行させる、例12に記載のシステム。
【0085】
例14:上記第3のジェスチャー入力の検出および上記仮想注記面に注釈を与えることにおいて、上記命令は、上記コンピューティングデバイスに、マーキング手段の移動を検出し追跡することと、上記検出したマーキング手段の移動に基づいて上記仮想注記面に注釈を与えることとを実行させる、例9〜例13のうちの1つに記載のシステム。
【0086】
例15:上記検出したマーキング手段の移動に基づいて上記仮想注記面に注釈を与えることにおいて、上記命令は、上記コンピューティングデバイスに、上記マーキング手段の操作デバイスの作動を検出することと、上記検出した操作デバイスの作動に応じて、上記マーキング手段の移動の追跡を開始することと、上記操作デバイスの作動の解除を検出することと、上記検出した操作デバイスの解除に応じて、上記マーキング手段の移動の追跡を終了することとを実行させる、例14に記載のシステム。
【0087】
例16:上記検出したマーキング手段の移動に基づいて上記仮想注記面に注釈を与えることにおいて、上記命令は、上記コンピューティングデバイスに、上記追跡したマーキング手段の移動に対応する輪郭を検出することと、上記検出したマーキング手段の移動の輪郭に対応する輪郭を用いて上記仮想注記面に注釈を与えることとを実行させる、例15に記載のシステム。
【0088】
例17:非一時的なコンピュータ読取可能媒体上で実施されるコンピュータプログラムプロダクトであって、上記コンピュータ読取可能媒体は命令のシーケンスを格納し、上記命令のシーケンスは、プロセッサによって実行されると上記プロセッサに方法を実行させ、上記方法は、ヘッドマウントディスプレイ(HMD)デバイスのディスプレイに仮想環境を表示するステップと、上記HMDの外部における第1のジェスチャー入力を検出するステップと、上記第1のジェスチャー入力の検出に応じて、仮想注記面を生成するステップと、上記HMDの外部における第2のジェスチャー入力を検出するステップと、上記第2のジェスチャー入力の検出に応じて、上記仮想環境における仮想オブジェクトとして上記仮想注記面を表示するステップと、上記HMDの外部における第3のジェスチャー入力を検出するステップと、上記第3のジェスチャー入力の検出に応じて、上記仮想注記面に注釈を与えるステップと、上記注釈が与えられた仮想注記面を上記仮想環境における仮想オブジェクトとして表示するステップとを含む。
【0089】
例18:上記第1のジェスチャー入力を検出するステップは、上記HMDに作動的に結合された第1のハンドヘルド電子デバイスの第1の位置を検出するステップと、上記HMDに作動的に結合された第2のハンドヘルド電子デバイスの第1の位置を検出するステップと、上記第1のハンドヘルド電子デバイスまたは上記第2のハンドヘルド電子デバイスのうちの少なくとも一方の操作デバイスの第1の作動を検出するステップと、上記検出した第1のハンドヘルド電子デバイスの第1の位置と、上記検出した第2のハンドヘルド電子デバイスの第1の位置と、上記検出した操作デバイスの第1の作動とに基づいて、上記第1のジェスチャー入力を検出するステップとを含む、例17に記載のコンピュータプログラムプロダクト。
【0090】
例19:上記第2のジェスチャー入力を検出するステップは、上記第1のジェスチャー入力の検出後に、上記操作デバイスの第1の作動の解除を検出するステップと、上記操作デバイスの第1の作動の解除が検出された時点における上記第1のハンドヘルド電子デバイスの第2の位置を検出するステップと、上記操作デバイスの第1の作動の解除が検出された時点における上記第2のハンドヘルド電子デバイスの第2の位置を検出するステップと、上記検出した第1のハンドヘルド電子デバイスの第1の位置に対する上記検出した第1のハンドヘルド電子デバイスの第2の位置と、上記検出した第2のハンドヘルド電子デバイスの第1の位置に対する上記検出した第2のハンドヘルド電子デバイスの第2の位置とに基づいて、上記仮想注記面の大きさまたは形状のうちの少なくとも一方を設定するステップとを含む、例18に記載のコンピュータプログラムプロダクト。
【0091】
例20:上記第3のジェスチャー入力を検出するステップおよび上記仮想注記面に注釈を与えるステップは、上記操作デバイスの第2の作動を検出するステップと、上記検出した操作デバイスの第2の作動に応じて、上記第1のハンドヘルド電子デバイスまたは上記第2のハンドヘルド電子デバイスのうちの少なくとも一方の移動を追跡するステップと、上記操作デバイスの第2の作動の解除を検出するステップと、上記検出した操作デバイスの第2の作動の解除に応じて、上記第1のハンドヘルド電子デバイスまたは上記第2のハンドヘルド電子デバイスのうちの少なくとも一方の移動の追跡を終了するステップと、上記操作デバイスの第2の作動の検出と上記操作デバイスの第2の作動の解除の検出との間において追跡した、上記第1のハンドヘルド電子デバイスまたは上記第2のハンドヘルド電子デバイスのうちの少なくとも一方の移動に対応する輪郭を用いて、上記仮想注記面に注釈を与えるステップとを含む、例19に記載のコンピュータプログラムプロダクト。
【0092】
複数の実施形態について説明してきた。しかし、本明細書の精神および範囲から逸脱することなくさまざまな変更をなし得ることが理解されるであろう。
【0093】
また、図面に示される論理フローは、望ましい結果を達成するために、示されている特定の順序またはシーケンシャルな順序を必要としない。また、記載されているフローに他のステップが設けられてもよく、または記載されているフローからステップが削除されてもよく、記載されているシステムに他の構成要素が追加されてもよく、または記載されているシステムから構成要素が除去されてもよい。したがって、他の実施形態も以下の特許請求の範囲の範囲内である。
【0094】
記載されている実装例の特定の特徴について、本明細書に記載されているように説明してきたが、多くの変形、置換、変更および等価物が当業者に想起されるであろう。したがって、添付の特許請求の範囲は、実装例の範囲内に入る全てのこのような変形および変更を包含するよう意図されているということが理解されるべきである。それらは限定としてではなく単に一例として提示されており、形態および詳細のさまざまな変更がなされてもよいということが理解されるべきである。本明細書に記載されている装置および/または方法のいずれの部分も、相互排他的な組み合わせを除いて、いかなる組み合わせで組み合わせられてもよい。本明細書に記載されている実装例は、記載されているさまざまな実装例の機能、構成要素および/または特徴のさまざまな組み合わせおよび/または下位組み合わせを含み得る。
拡張現実および/または仮想現実システムにおいて、検出したジェスチャーに応じて、仮想注釈面または仮想シートまたは仮想ホワイトボードを、実体化することができる。ユーザは、仮想注釈面に注釈を与え、仮想注釈面を調整し、格納し、検討し、修正することができ、現在の仮想環境、および/または別の仮想環境、および/または仮想環境の外部における、その他のユーザとの共同作業を可能にする。