(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスに結合された第1および第2のプロジェクタから画像を投影する方法であって、
前記第1および第2のプロジェクタの近傍におけるシーンのシーン画像をキャプチャするステップと、
前記第1および第2のプロジェクタの前記近傍において、センサアレイを用いて、空間データをキャプチャするステップと、
キャプチャされたシーン画像を解析して、身体部分を認識するステップと、
前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を異なる場所に投影するステップと、
音声コマンドを認識するか否かを判定するステップと、
前記音声コマンドが認識された場合に、ジェスチャコマンドを前記音声コマンドの確認として認識するか否かを判定するステップと、
前記ジェスチャコマンドが前記音声コマンドの確認と認識された場合に、タスクを実行するステップと
を含む方法。
【請求項２】
前記第1および前記第2のプロジェクタが、ピコプロジェクタである、請求項1に記載の方法。
【請求項３】
前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影するステップが、前記プロジェクタの前記近傍におけるユーザの前の表面上に画像を投影するステップを含む、請求項1に記載の方法。
【請求項４】
前記プロジェクタの前記近傍におけるユーザに適した垂直または水平表面上で、前記投影画像の向きを設定するステップ
をさらに含む、請求項1に記載の方法。
【請求項５】
前記認識された身体部分の動きを追跡するステップと、
検出アルゴリズムを前記追跡された動きに適用して、所定のジェスチャーを検出するステップと、
前記検出された所定のジェスチャーに対応するコマンドを適用するステップと、
前記適用されたコマンドに応答して、前記投影画像を修正するステップと
をさらに含む、請求項1に記載の方法。
【請求項６】
キャプチャされた画像を解析して、身体部分を認識するステップが、
解剖学的解析を前記画像に適用して、前記キャプチャされた画像内のオブジェクトが解剖学的モデルの一部分に適合するかどうかを判定するステップ
を含む、請求項5に記載の方法。
【請求項７】
前記投影画像が、仮想入力デバイスのものであり、
前記検出された所定のジェスチャーに対応するコマンドを適用するステップが、ユーザ入力デバイスのものに整合するコマンドを適用するステップを含む、請求項5に記載の方法。
【請求項８】
前記検出された所定のジェスチャーに対応するコマンドを適用するステップが、仮想オブジェクトを移動させることに対応するコマンドを適用するステップを含み、前記適用されたコマンドに応答して、前記投影画像を修正するステップが、前記所定のジェスチャーを検出することに応答して、前記仮想オブジェクトを第1のロケーションから第2のロケーションへ移動するように表示するステップを含む、請求項5に記載の方法。
【請求項９】
前記方法が、
前記第1のプロジェクタを前記第2のプロジェクタに、背中合わせの構成で、前記第1および第2のプロジェクタの外部におけるコネクタを介して接続するステップをさらに含み、前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影するステップが、少なくとも2つの画像をほぼ反対方向に投影するステップを含む、請求項1に記載の方法。
【請求項１０】
前記方法が、
前記第1のプロジェクタを第3のプロジェクタに、前記プロジェクタの外部におけるコネクタを介して接続するステップと、
前記第3のプロジェクタを前記第2のプロジェクタに、前記プロジェクタの外部におけるコネクタを介して接続するステップとをさらに含み、前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影するステップが、少なくとも3つの投影画像を、それらの画像がほぼ90度だけ分離されるように投影するステップを含む、請求項1に記載の方法。
【請求項１１】
前記方法が、
前記第1のプロジェクタを第3のプロジェクタおよび第4のプロジェクタに、前記プロジェクタの外部におけるコネクタを介して接続するステップと、
前記第3および第4のプロジェクタを前記第2のプロジェクタに、前記プロジェクタの外部におけるコネクタを介して接続するステップとをさらに含み、前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影するステップが、4つの画像を、それらの画像がほぼ90度だけ分離されるように投影するステップを含む、請求項1に記載の方法。
【請求項１２】
コンピューティングデバイスに結合された第1および第2のプロジェクタから仮想オブジェクトを投影する方法であって、
前記第1および第2のプロジェクタの近傍における画像を受け取るステップと、
解剖学的モデルに従い、前記画像において検出されたユーザの身体部分の位置と方向を追跡するステップと、
前記ユーザの身体部分の前記位置と方向から、投影表面に対する前記ユーザの閲覧方向と位置を決定するステップと、
前記仮想オブジェクトの形、サイズ、もしくは方向のうちの少なくとも１つを投影表面に対する前記ユーザの閲覧方向と位置に従って決定するステップと、
前記仮想オブジェクトを、前記決定された形、サイズ、もしくは方向のうちの少なくとも１つで、前記第1および前記第2のプロジェクタにより前記投影表面に投影するステップと
を含む方法。
【請求項１３】
前記第1および前記第2のプロジェクタが、ピコプロジェクタである、請求項12に記載の方法。
【請求項１４】
画像を投影するためのプロジェクタシステムであって、
第1のプロジェクタと、
第2のプロジェクタと、
前記第1および第2のプロジェクタに結合されたコンピューティングデバイスとを備え、前記コンピューティングデバイスが、
メモリと、
前記メモリに結合されたプロセッサとを備え、
前記第1および第2のプロジェクタの近傍におけるシーンのシーン画像をキャプチャすること、
前記第1および第2のプロジェクタの前記近傍における空間データをキャプチャすること、
キャプチャされたシーン画像を解析して、身体部分を認識すること、
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせること、
音声コマンドを認識するか否かを判定すること、
前記音声コマンドが認識された場合に、ジェスチャコマンドを前記音声コマンドの確認として認識するか否かを判定すること、および
前記ジェスチャコマンドが前記音声コマンドの確認と認識された場合に、タスクを実行することを含む動作を実行するためのプロセッサ実行可能命令で、前記プロセッサが構成され、
前記第1および前記第2のプロジェクタの各々から投影される画像が異なる場所に投影される、
プロジェクタシステム。
【請求項１５】
前記第1および前記第2のプロジェクタが、ピコプロジェクタである、請求項14に記載のプロジェクタシステム。
【請求項１６】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、前記プロジェクタの前記近傍におけるユーザの前の表面上に画像を投影することを、前記プロジェクタに行わせることを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項14に記載のプロジェクタシステム。
【請求項１７】
前記プロジェクタの前記近傍におけるユーザに適した垂直または水平表面上で、前記投影画像の向きを設定することを、前記第1および第2のプロジェクタの各々に行わせること
をさらに含む動作を実行するためのプロセッサ実行可能命令で、前記プロセッサが構成される、請求項14に記載のプロジェクタシステム。
【請求項１８】
前記認識された身体部分の動きを追跡すること、
検出アルゴリズムを前記追跡された動きに適用して、所定のジェスチャーを検出すること、
前記検出された所定のジェスチャーに対応するコマンドを適用すること、および
前記適用されたコマンドに応答して、前記投影画像を修正することを、前記プロジェクタに行わせること
をさらに含む動作を実行するためのプロセッサ実行可能命令で、前記プロセッサが構成される、請求項14に記載のプロジェクタシステム。
【請求項１９】
キャプチャされた画像を解析して、身体部分を認識することが、
解剖学的解析を前記画像に適用して、前記キャプチャされた画像内のオブジェクトが解剖学的モデルの一部分に適合するかどうかを判定すること
を含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項18に記載のプロジェクタシステム。
【請求項２０】
画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、仮想入力デバイスの画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることを含み、
前記検出された所定のジェスチャーに対応するコマンドを適用することが、ユーザ入力デバイスのものに整合するコマンドを適用することを含む
ようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項18に記載のプロジェクタシステム。
【請求項２１】
前記検出された所定のジェスチャーに対応するコマンドを適用することが、仮想オブジェクトを移動させることに対応するコマンドを適用することを含み、
前記適用されたコマンドに応答して、前記投影画像を修正することを、前記プロジェクタに行わせることが、前記所定のジェスチャーを検出することに応答して、前記仮想オブジェクトを第1のロケーションから第2のロケーションへ移動するように表示することを含む
ようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項18に記載のプロジェクタシステム。
【請求項２２】
前記第1のプロジェクタが前記第2のプロジェクタに、背中合わせの構成で、前記第1および第2のプロジェクタの外部におけるコネクタを介して接続され、前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、少なくとも2つの画像をほぼ反対方向に投影することを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項14に記載のプロジェクタシステム。
【請求項２３】
前記プロジェクタシステムが、
第3のプロジェクタであり、前記第1および第2のプロジェクタの各々に、前記プロジェクタの外部におけるコネクタを介して接続され、前記コンピューティングデバイスに結合された第3のプロジェクタをさらに備え、前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、少なくとも3つの投影画像を、それらの画像がほぼ90度だけ分離されるように投影することを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項14に記載のプロジェクタシステム。
【請求項２４】
前記プロジェクタシステムが、
前記コンピューティングデバイスに結合された第3のプロジェクタと、
前記コンピューティングデバイスに結合された第4のプロジェクタと
をさらに備え、前記第1および第2のプロジェクタの各々が、前記第3および第4のプロジェクタの各々に、前記プロジェクタの外部におけるコネクタを介して接続され、前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、ほぼ90度だけ分離された4つの画像を投影することを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項14に記載のプロジェクタシステム。
【請求項２５】
仮想オブジェクトを投影するためのプロジェクタシステムであって、
第1のプロジェクタと、
第2のプロジェクタと、
前記第1および第2のプロジェクタに結合されたコンピューティングデバイスとを備え、前記コンピューティングデバイスが、
メモリと、
前記メモリに結合されたプロセッサとを備え、
前記第1および第2のプロジェクタの近傍におけるシーンの画像を受け取ること、
解剖学的モデルに従い、前記画像において検出されたユーザの身体部分の位置と方向を追跡すること、
前記ユーザの身体部分の前記位置と方向から、投影表面に対する前記ユーザの閲覧方向と位置を決定すること、
仮想オブジェクトの形、サイズ、もしくは方向のうちの少なくとも１つを投影表面に対する前記ユーザの閲覧方向と位置に従って決定すること、
前記第1および前記第2のプロジェクタにより、前記仮想オブジェクトを前記決定された形、サイズ、もしくは方向のうちの少なくとも１つで前記投影表面に投影すること
を含む動作を実行するためのプロセッサ実行可能命令で、前記プロセッサが構成される、
プロジェクタシステム。
【請求項２６】
前記第1および前記第2のプロジェクタが、ピコプロジェクタである、請求項25に記載のプロジェクタシステム。
【請求項２７】
第1のプロジェクタおよび第2のプロジェクタの近傍におけるシーンのシーン画像をキャプチャするための手段と、
前記第1および第2のプロジェクタの前記近傍における空間データをキャプチャするための手段と、
キャプチャされたシーン画像を解析して、身体部分を認識するための手段と、
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段と、
音声コマンドを認識するか否かを判定する手段と、
前記音声コマンドが認識された場合に、ジェスチャコマンドを前記音声コマンドの確認として認識するか否かを判定する手段と、
前記ジェスチャコマンドが前記音声コマンドの確認と認識された場合に、タスクを実行する手段と
を備え、
前記第1および前記第2のプロジェクタの各々から投影される画像が異なる場所に投影される、
コンピューティングデバイス。
【請求項２８】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段が、前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、ピコプロジェクタに行わせるための手段を備える、請求項27に記載のコンピューティングデバイス。
【請求項２９】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段が、前記プロジェクタの前記近傍におけるユーザの前の表面上に画像を投影することを、前記プロジェクタに行わせるための手段を備える、請求項27に記載のコンピューティングデバイス。
【請求項３０】
前記プロジェクタの前記近傍におけるユーザに適した垂直または水平表面上で、前記投影画像の向きを設定することを、前記第1および第2のプロジェクタの各々に行わせるための手段
をさらに備える、請求項27に記載のコンピューティングデバイス。
【請求項３１】
前記認識された身体部分の動きを追跡するための手段と、
検出アルゴリズムを前記追跡された動きに適用して、所定のジェスチャーを検出するための手段と、
前記検出された所定のジェスチャーに対応するコマンドを適用するための手段と、
前記適用されたコマンドに応答して、前記投影画像を修正することを、前記プロジェクタに行わせるための手段と
をさらに備える、請求項27に記載のコンピューティングデバイス。
【請求項３２】
キャプチャされた画像を解析して、身体部分を認識するための手段が、解剖学的解析を前記画像に適用して、前記キャプチャされた画像内のオブジェクトが解剖学的モデルの一部分に適合するかどうかを判定するための手段を備える、請求項31に記載のコンピューティングデバイス。
【請求項３３】
画像を投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段が、仮想入力デバイスの画像を投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段を備え、
前記検出された所定のジェスチャーに対応するコマンドを適用するための手段が、ユーザ入力デバイスのものに整合するコマンドを適用するための手段を備える、請求項31に記載のコンピューティングデバイス。
【請求項３４】
前記検出された所定のジェスチャーに対応するコマンドを適用するための手段が、仮想オブジェクトを移動させることに対応するコマンドを適用するための手段を備え、
前記適用されたコマンドに応答して、前記投影画像を修正することを、前記プロジェクタに行わせるための手段が、前記所定のジェスチャーを検出することに応答して、前記仮想オブジェクトを第1のロケーションから第2のロケーションへ移動するように表示するための手段を備える、請求項31に記載のコンピューティングデバイス。
【請求項３５】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段が、少なくとも2つの画像をほぼ反対方向に投影するための手段を備える、請求項27に記載のコンピューティングデバイス。
【請求項３６】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段が、少なくとも3つの投影画像を、3つの異なるプロジェクタから、それらの画像がほぼ90度だけ分離されるように投影するための手段を備える、請求項27に記載のコンピューティングデバイス。
【請求項３７】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段が、4つの画像を、4つの異なるプロジェクタから、それらの画像がほぼ90度だけ分離されるように投影するための手段を備える、請求項27に記載のコンピューティングデバイス。
【請求項３８】
第1のプロジェクタおよび第2のプロジェクタの近傍におけるシーンの画像を受け取るための手段と、
解剖学的モデルに従い、前記画像において検出されたユーザの身体部分の位置と方向を追跡する手段と、
前記ユーザの身体部分の前記位置と方向から、投影表面に対する前記ユーザの閲覧方向と位置を決定する手段と、
仮想オブジェクトの形、サイズ、もしくは方向のうちの少なくとも１つを投影表面に対する前記ユーザの閲覧方向と位置に従って決定する手段と、
第1および第2のプロジェクタにより、前記投影表面に、前記仮想オブジェクトを前記決定された形、サイズ、もしくは方向のうちの少なくとも１つで投影する手段と
を備える、
コンピューティングデバイス。
【請求項３９】
決定された形状および向きで前記仮想オブジェクトを投影することを、前記第1および第2のプロジェクタの各々に行わせるための手段が、前記仮想オブジェクトを投影することを、ピコプロジェクタに行わせるための手段を備える、請求項38に記載のコンピューティングデバイス。
【請求項４０】
メモリと、
前記メモリに結合されたプロセッサとを備え、
第1のプロジェクタおよび第2のプロジェクタの近傍におけるシーンのシーン画像をキャプチャすること、
前記第1および第2のプロジェクタの前記近傍における空間データをキャプチャすること、
キャプチャされたシーン画像を解析して、身体部分を認識すること、
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせること、
音声コマンドを認識するか否かを判定すること、
前記音声コマンドが認識された場合に、ジェスチャコマンドを前記音声コマンドの確認として認識するか否かを判定すること、および
前記ジェスチャコマンドが前記音声コマンドの確認と認識された場合に、タスクを実行すること
を含む動作を実行するためのプロセッサ実行可能命令で、前記プロセッサが構成され、
前記第1および前記第2のプロジェクタの各々から投影される画像が異なる場所に投影される、
コンピューティングデバイス。
【請求項４１】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、画像を投影することを、ピコプロジェクタに行わせることを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項40に記載のコンピューティングデバイス。
【請求項４２】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、前記プロジェクタの前記近傍におけるユーザの前の表面上に画像を投影することを、前記プロジェクタに行わせることを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項40に記載のコンピューティングデバイス。
【請求項４３】
前記プロジェクタの前記近傍におけるユーザに適した垂直または水平表面上で、前記投影画像の向きを設定することを、前記第1および第2のプロジェクタの各々に行わせること
をさらに含む動作を実行するためのプロセッサ実行可能命令で、前記プロセッサが構成される、請求項40に記載のコンピューティングデバイス。
【請求項４４】
前記認識された身体部分の動きを追跡すること、
検出アルゴリズムを前記追跡された動きに適用して、所定のジェスチャーを検出すること、
前記検出された所定のジェスチャーに対応するコマンドを適用すること、および
前記適用されたコマンドに応答して、前記投影画像を修正することを、前記プロジェクタに行わせること
をさらに含む動作を実行するためのプロセッサ実行可能命令で、前記プロセッサが構成される、請求項40に記載のコンピューティングデバイス。
【請求項４５】
キャプチャされた画像を解析して、身体部分を認識することが、
解剖学的解析を前記画像に適用して、前記キャプチャされた画像内のオブジェクトが解剖学的モデルの一部分に適合するかどうかを判定すること
を含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項44に記載のコンピューティングデバイス。
【請求項４６】
画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、仮想入力デバイスの画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることを含み、
前記検出された所定のジェスチャーに対応するコマンドを適用することが、ユーザ入力デバイスのものに整合するコマンドを適用することを含む
ようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項44に記載のコンピューティングデバイス。
【請求項４７】
前記検出された所定のジェスチャーに対応するコマンドを適用することが、仮想オブジェクトを移動させることに対応するコマンドを適用することを含み、
前記適用されたコマンドに応答して、前記投影画像を修正することを、前記プロジェクタに行わせることが、前記所定のジェスチャーを検出することに応答して、前記仮想オブジェクトを第1のロケーションから第2のロケーションへ移動するように表示することを含む
ようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項44に記載のコンピューティングデバイス。
【請求項４８】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、少なくとも2つの画像をほぼ反対方向に投影することを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項40に記載のコンピューティングデバイス。
【請求項４９】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、少なくとも3つの投影画像を、3つの異なるプロジェクタから、それらの画像がほぼ90度だけ分離されるように投影することを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項40に記載のコンピューティングデバイス。
【請求項５０】
前記認識された身体部分に基づいて決定された形状および向きで画像を投影することを、前記第1および第2のプロジェクタの各々に行わせることが、4つの画像を、4つの異なるプロジェクタから、それらの画像がほぼ90度だけ分離されるように投影することを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項40に記載のコンピューティングデバイス。
【請求項５１】
メモリと、
前記メモリに結合されたプロセッサとを備え、
第1のプロジェクタおよび第2のプロジェクタの近傍におけるシーンの画像を受け取ること、
解剖学的モデルに従い、前記画像において検出されたユーザの身体部分の位置と方向を追跡すること、
前記ユーザの身体部分の前記位置と方向から、投影表面に対する前記ユーザの閲覧方向と位置を決定すること、
仮想オブジェクトの形、サイズ、もしくは方向のうちの少なくとも１つを投影表面に対する前記ユーザの閲覧方向と位置に従って決定すること、
前記第1および前記第2のプロジェクタにより、前記投影表面に、前記仮想オブジェクトを前記決定された形、サイズ、もしくは方向のうちの少なくとも１つで前記投影表面に投影すること
を含む動作を実行するためのプロセッサ実行可能命令で、前記プロセッサが構成された、
コンピューティングデバイス。
【請求項５２】
前記仮想オブジェクトを投影することを、ピコプロジェクタに行わせることを含むようなプロセッサ実行可能命令で、前記プロセッサが構成される、請求項51に記載のコンピューティングデバイス。
【請求項５３】
第1および第2のプロジェクタから画像を投影するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した、非一時的コンピュータ可読記憶媒体であって、前記動作が、
第1のプロジェクタおよび第2のプロジェクタの近傍におけるシーンのシーン画像をキャプチャすること、
前記第1および第2のプロジェクタの前記近傍における空間データをキャプチャすること、
キャプチャされたシーン画像を解析して、身体部分を認識すること、
前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影すること、
音声コマンドを認識するか否かを判定すること、
前記音声コマンドが認識された場合に、ジェスチャコマンドを前記音声コマンドの確認として認識するか否かを判定すること、および
前記ジェスチャコマンドが前記音声コマンドの確認と認識された場合に、タスクを実行すること
を含み、
前記第1および前記第2のプロジェクタの各々から投影される画像が異なる場所に投影されるものである、
非一時的コンピュータ可読記憶媒体。
【請求項５４】
前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影することが、ピコプロジェクタから画像を投影することを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項５５】
前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影することが、前記プロジェクタの前記近傍におけるユーザの前の表面上に画像を投影することを、前記プロジェクタに行わせることを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項５６】
前記プロジェクタの前記近傍におけるユーザに適した垂直または水平表面上で、前記投影画像の向きを設定すること
を含む動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項５７】
前記認識された身体部分の動きを追跡すること、
検出アルゴリズムを前記追跡された動きに適用して、所定のジェスチャーを検出すること、
前記検出された所定のジェスチャーに対応するコマンドを適用すること、および
前記適用されたコマンドに応答して、前記投影画像を修正することを、前記プロジェクタに行わせること
を含む動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項５８】
キャプチャされた画像を解析して、身体部分を認識することが、
解剖学的解析を前記画像に適用して、前記キャプチャされた画像内のオブジェクトが解剖学的モデルの一部分に適合するかどうかを判定すること
を含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項57に記載の非一時的コンピュータ可読記憶媒体。
【請求項５９】
前記第1および前記第2のプロジェクタの各々から画像を投影することが、前記第1および前記第2のプロジェクタの各々から、仮想入力デバイスの画像を投影することを含み、
前記検出された所定のジェスチャーに対応するコマンドを適用することが、ユーザ入力デバイスのものに整合するコマンドを適用することを含む
ような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項57に記載の非一時的コンピュータ可読記憶媒体。
【請求項６０】
前記検出された所定のジェスチャーに対応するコマンドを適用することが、仮想オブジェクトを移動させることに対応するコマンドを適用することを含み、
前記適用されたコマンドに応答して、前記投影画像を修正することを、前記プロジェクタに行わせることが、前記所定のジェスチャーを検出することに応答して、前記仮想オブジェクトを第1のロケーションから第2のロケーションへ移動するように表示することを含む
ような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項57に記載の非一時的コンピュータ可読記憶媒体。
【請求項６１】
前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影することが、少なくとも2つの画像をほぼ反対方向に投影することを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項６２】
前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影することが、少なくとも3つの投影画像を、3つの異なるプロジェクタから、それらの画像がほぼ90度だけ分離されるように投影することを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項６３】
前記認識された身体部分に基づいて決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から画像を投影することが、4つの画像を、4つの異なるプロジェクタから、それらの画像がほぼ90度だけ分離されるように投影することを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項53に記載の非一時的コンピュータ可読記憶媒体。
【請求項６４】
第1および第2のプロジェクタから仮想オブジェクトを投影するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した、非一時的コンピュータ可読記憶媒体であって、前記動作が、
第1のプロジェクタおよび第2のプロジェクタの近傍におけるシーンの画像を受け取ること、
解剖学的モデルに従い、前記画像において検出されたユーザの身体部分の位置と方向を追跡すること、
前記ユーザの身体部分の前記位置と方向から、投影表面に対する前記ユーザの閲覧方向と位置を決定すること、
前記仮想オブジェクトの形、サイズ、もしくは方向のうちの少なくとも１つを投影表面に対する前記ユーザの閲覧方向と位置に従って決定すること、
前記仮想オブジェクトを、前記決定された形、サイズ、もしくは方向のうちの少なくとも１つで、前記第1および前記第2のプロジェクタにより前記投影表面に投影すること
を含む、
非一時的コンピュータ可読記憶媒体。
【請求項６５】
前記決定された形状および向きで、前記第1および前記第2のプロジェクタの各々から前記仮想オブジェクトを投影することが、ピコプロジェクタから前記仮想オブジェクトを投影することを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項64に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連特許出願の相互参照
本特許出願は、その内容全体がすべての目的のために参照により本明細書に組み込まれている、2011年3月29日に出願した「Systems and Methods for Gesture Driven Interaction for Digitally Augmented Physical Spaces」という名称の米国仮特許出願第61/468,937号の優先権の利益を主張する。
【０００２】
本出願は、仮想オブジェクトまたはインターフェースを選択された物理的表面上に配置し、単一のユーザまたは複数のユーザが共同作業して物理的表面上の仮想オブジェクトを見て、仮想オブジェクトと対話できるようにすることができる、ヘッドマウントディスプレイを使用した拡張もしくは仮想現実システム、または、スマートフォンもしくはタブレットなど、他のモバイルデバイスに関する。
【背景技術】
【０００３】
ますます、人々は、プレゼンテーション、文書、ビデオ、グラフ、および写真を含む様々なメディア上で、世界中で共同作業している。一般に、会議室における大型のフラットパネルディスプレイは、マイクロソフト(登録商標)PowerPoint(登録商標)プレゼンテーションを含むメディアを見るための優れたソースである。加えて、いくつかの家具は、ユーザがテーブルトップの表面上で直接ビデオを見ることができるように、タッチスクリーン入力デバイスを含むことがある。しばしば、そのような大型の部材は極めて高価であり、リモートロケーションにいるユーザ間の共同作業のために制限されたサポートを提供する。個人は、これらの制限から抜け出し、同じロケーションにいるユーザとリモートユーザの両方の間で共有される大型画面の仮想または拡張現実体験を得ることができることから、恩恵を受けるようになる。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な実施形態は、コンピューティングデバイスに結合された第1および第2のプロジェクタから画像を投影する方法を含み、この方法は、第1および第2のプロジェクタの近傍におけるシーンのシーン画像をキャプチャするステップと、第1および第2のプロジェクタの近傍において、センサアレイを用いて、空間データをキャプチャするステップと、キャプチャされたシーン画像を解析して、身体部分を認識するステップと、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影するステップとを含む。一実施形態では、第1および第2のプロジェクタが、ピコプロジェクタであり得る。さらなる実施形態では、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影するステップが、プロジェクタの近傍におけるユーザの前の表面上に画像を投影するステップを含み得る。一実施形態では、この方法は、プロジェクタの近傍におけるユーザに適した垂直または水平表面上で、投影画像の向きを設定するステップを含み得る。さらなる実施形態では、この方法は、認識された身体部分の動きを追跡するステップと、検出アルゴリズムを追跡された動きに適用して、所定のジェスチャーを検出するステップと、検出された所定のジェスチャーに対応するコマンドを適用するステップと、適用されたコマンドに応答して、投影画像を修正するステップとを含み得る。さらなる実施形態では、キャプチャされた画像を解析して、身体部分を認識するステップが、解剖学的解析を画像に適用して、キャプチャされた画像内のオブジェクトが解剖学的モデルの一部分に適合するかどうかを判定するステップを含み得る。さらなる実施形態では、投影画像が、仮想入力デバイスのものであってもよく、検出された所定のジェスチャーに対応するコマンドを適用するステップが、ユーザ入力デバイスのものに整合するコマンドを適用するステップを含み得る。さらなる実施形態では、検出された所定のジェスチャーに対応するコマンドを適用するステップが、仮想オブジェクトを移動させることに対応するコマンドを適用するステップを含んでもよく、適用されたコマンドに応答して、投影画像を修正するステップが、所定のジェスチャーを検出することに応答して、仮想オブジェクトを第1のロケーションから第2のロケーションへ移動するように表示するステップを含み得る。さらなる実施形態では、この方法は、第1のプロジェクタを第2のプロジェクタに、背中合わせの構成で、第1および第2のプロジェクタの外部におけるコネクタを介して接続するステップを含んでもよく、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影するステップが、少なくとも2つの画像をほぼ反対方向に投影するステップを含み得る。さらなる実施形態では、この方法は、第1のプロジェクタを第3のプロジェクタに、それらのプロジェクタの外部におけるコネクタを介して接続するステップと、第3のプロジェクタを第2のプロジェクタに、それらのプロジェクタの外部におけるコネクタを介して接続するステップとを含んでもよく、認識された身体部分に基づいて決定された形状および向きで、第1���よび第2のプロジェクタの各々から画像を投影するステップが、少なくとも3つの投影画像を、それらの画像がほぼ90度だけ分離されるように投影するステップを含み得る。さらなる実施形態では、この方法は、第1のプロジェクタを第3のプロジェクタおよび第4のプロジェクタに、それらのプロジェクタの外部におけるコネクタを介して接続するステップと、第3および第4のプロジェクタを第2のプロジェクタに、それらのプロジェクタの外部におけるコネクタを介して接続するステップとを含んでもよく、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影するステップが、4つの画像を、それらの画像がほぼ90度だけ分離されるように投影するステップを含み得る。さらなる実施形態では、この方法は、シーン内で基準点を定義するステップと、第1および第2のプロジェクタの各々の向きを、定義された基準点に基づいて決定するステップと、定義された基準点と、第1および第2のプロジェクタの向きとに基づいて、投影画像の向きを設定するステップとを含み得る。さらなる実施形態では、シーン内で基準点を定義するステップが、接続点によって第1のプロジェクタを第2のプロジェクタに接続するステップと、接続点を基準点として定義するステップとを含み得る。
【０００５】
さらなる実施形態は、第1のヘッドまたはボディマウントカメラと、第1のヘッドまたはボディマウントディスプレイと、第1の送受信機と、第1のカメラ、第1のディスプレイ、および第1の送受信機に結合された第1のヘッドまたはボディマウントデバイスプロセッサとを含み得る、第1のヘッドまたはボディマウントデバイス、ならびに、第2のヘッドまたはボディマウントカメラと、第2のヘッドまたはボディマウントディスプレイと、第2の送受信機と、第2のカメラ、第2のディスプレイ、および第2の送受信機に結合された第2のヘッドまたはボディマウントデバイスプロセッサとを備える、第2のヘッドまたはボディマウントデバイスを含み得る、システムを含む。さらなる実施形態では、第1および第2のヘッドまたはボディマウントデバイスは、上記で説明した方法動作に対応する様々な動作を実行するためのプロセッサ実行可能命令で構成され得る。なおさらなる実施形態は、メモリと、メモリに結合されたサーバプロセッサとを含み得る、サーバを含んでもよく、サーバプロセッサが、仮想オブジェクトを第1および第2のヘッドまたはボディマウントデバイスの各々へ、ネットワークを介して送信することを含む、動作を実行するためのサーバ実行可能命令で構成される。
【０００６】
さらなる実施形態は、上記で説明した方法に対応する様々な動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを含み得る、コンピューティングデバイスを含む。さらなる実施形態は、上記で説明した方法動作に対応する機能を実行するための様々な手段を含み得る、コンピューティングデバイスを含む。
【０００７】
さらなる実施形態は、上記で説明した方法動作に対応する様々な動作をプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶した、非一時的プロセッサ可読記憶媒体を含む。
【０００８】
本明細書に組み込まれ、本明細書の一部を成す、添付の図面は、本発明の例示的実施形態を説明し、上記の全般的な説明および下記の詳細な説明とともに、本発明の特徴を説明する役割を果たす。
【図面の簡単な説明】
【０００９】
【図１】様々な実施形態とともに使用するのに好適な、仮想オブジェクトが物理的表面上にアンカーされた、ヘッドマウントデバイスの図である。
【図２】テーブルのところで互いに並んで立ち、仮想オブジェクトと対話するために2つのヘッドマウントデバイスを装着している、2人のユーザの図である。
【図３】テーブルを挟んで互いに向かい合って座り、仮想オブジェクトと対話するために2つのヘッドマウントデバイスを装着している、2人のユーザの図であり、仮想オブジェクトの向きが各ユーザにとって正しく設定されている図である。
【図４】2つのヘッドマウントデバイスを装着し、共同作業し、各ユーザにとって正しく向きが設定されている同じ仮想オブジェクトを調査している、2つの異なるリモートロケーションにいる2人のユーザの図である。
【図５Ａ】仮想オブジェクトと対話し、仮想オブジェクトを生成するための、ヘッドマウントデバイスのいくつかの構成要素のハイレベル構成要素ブロック図である。
【図５Ｂ】別の実施形態による、ヘッドマウントデバイスを装着するユーザがサーバと通信できるようにするシステムのハイレベル構成要素ブロック図である。
【図６】ヘッドマウントデバイスを使用して、仮想オブジェクトをアンカー表面上にアンカーするための、一実施形態の方法のプロセスフロー図であり、仮想オブジェクトがヘッドマウントディスプレイ上のアンカー表面に固定されたままである図である。
【図７Ａ】ヘッドマウントデバイスのディスプレイ内で可視の物理的表面上に仮想オブジェクトをアンカーするための、一実施形態の方法のプロセスフロー図である。
【図７Ｂ】入力コマンドによって、少なくとも2つの異なるアンカーポイントまたはアンカー表面間で仮想オブジェクトを移動させるための、一実施形態の方法のプロセスフロー図である。
【図８Ａ】ヘッドマウントデバイスが、仮想オブジェクトが物理的表面上にアンカーされるように見えるように仮想オブジェクトを投影するため、および、第2の仮想オブジェクトが第2のユーザにとって異なる物理的表面上にアンカーされるように見えるように、第2の仮想オブジェクトを第2のヘッドマウントデバイス上で投影するための、一実施形態の方法のプロセスフロー図である。
【図８Ｂ】各ユーザの視点にとって正しく向きが設定されている共有仮想オブジェクトをレンダリングする、一実施形態の方法のプロセスフロー図である。
【図９Ａ】仮想オブジェクトを物理的表面上にアンカーするための、一実施形態の方法のプロセスフロー図である。
【図９Ｂ】第2のデバイスを使用して、座標マップを使用して第2の仮想オブジェクトを異なる物理的表面上にアンカーするための、一実施形態の方法のプロセスフロー図である。
【図１０】データをリンクおよび共有するための他のヘッドマウントデバイスを発見するための、一実施形態の方法のプロセスフロー図である。
【図１１】ユーザからのジェスチャーと音声の両方を、ヘッドマウントデバイスを制御するための確認された入力コマンドとして認識するための、一実施形態の方法のプロセスフロー図である。
【図１２】ユーザの画像をキャプチャするヘッドマウントデバイスを使用して、ジェスチャーを入力コマンドとして認識するための、一実施形態の方法のプロセスフロー図である。
【図１３】画像内のあるオブジェクトのレンダリングを制御するための、一実施形態の方法のプロセスフロー図である。
【図１４】ヘッドマウントデバイスを使用して、ユーザに関連付けられた画像をキャプチャし、ユーザの特徴および他の個人の特徴を検出し、他の個人の特徴が検出されるとき、仮想オブジェクトをふさがないように、仮想オブジェクトを他の個人の特徴の上に重ね合わせるための、一実施形態の方法のプロセスフロー図である。
【図１５】仮想オブジェクトをユーザの手とともに示し、他の個人の手が仮想オブジェクトをふさいでおり、他の個人の手が透明に見えるように、仮想オブジェクトが他の個人の手の上に重ね合わせられて表示される、ヘッドマウントディスプレイ出力の上面図である。
【図１６】センサがヘッドマウントデバイスにおいてデータをキャプチャする間に、ソフトウェアがモバイル通信デバイス上で実行されるように、高速ワイヤレスデータリンクを介してモバイル通信デバイスと通信するヘッドマウントデバイスの側面図である。
【図１７】ヘッドマウントデバイスを使用して、モバイル通信デバイスにワイヤレスにリンクしてデータを交換するための、一実施形態の方法のプロセスフロー図である。
【図１８】ヘッドマウントデバイスを使用して、エリアを走査し、エリアのパラメータを計算し、別のデバイスによるアクセスのために、計算されたエリアのパラメータを共有メモリにアップロードするための、一実施形態の方法のプロセスフロー図である。
【図１９】ヘッドマウントデバイスを使用して、エリアの3次元モデルを生成し、ロケーションデータを用いてデータにタグ付けし、他のデバイスとデータを共有するためにモデルをアップロードするための、一実施形態の方法のプロセスフロー図である。
【図２０】ヘッドマウントデバイスを使用して、アプリケーションをサーバ上で実行し、他のデバイスとデータを共有するための、一実施形態の方法のプロセスフロー図である。
【図２１】ヘッドマウントデバイスを使用して、他のデバイスとデータを共有するため、および、共同作業のために、ディレクトリによって他のヘッドマウントデバイスを発見するための、一実施形態の方法のプロセスフロー図である。
【図２２】走査したデータを交換し、互いと共同作業するために、共有サービスにアクセスする、2つのヘッドマウントデバイスを示す図である。
【図２３】走査したデータを交換し、互いと共同作業するために、共有メモリにアクセスする、2つのヘッドマウントデバイスを示す図である。
【図２４】ヘッドマウントデバイスを使用して、エリアを走査し、仮想オブジェクトをレンダリングし、ロケーションデータを用いて、計算されたパラメータにタグ付けし、タグ付けされたパラメータを他のヘッドマウントデバイスの利益のために共有メモリにアップロードするための、一実施形態の方法のプロセスフロー図である。
【図２５Ａ】共有データをクラウドサーバに提供するため、および、新しいデバイスが、共有データを利用してエリアを走査およびマップ作成できるようにするために、クラウドサーバと通信するいくつかのモバイルデバイスのハイレベル図である。
【図２５Ｂ】第2のヘッドマウントデバイスによって仮想オブジェクトをレンダリングするために使用するために、タグ付けおよび走査されたパラメータをクラウドサーバに記憶する方法のプロセスフロー図である。
【図２６】ヘッドマウントデバイスを使用して、仮想オブジェクトをディスプレイ上でレンダリングするため、および、仮想オブジェクトを、ディスプレイ上で身体部分上に重ね合わせるための、実施形態の方法のプロセスフロー図である。
【図２７】ヘッドマウントデバイスを使用して、仮想オブジェクトをディスプレイ上でレンダリングするため、および、仮想オブジェクトを、ディスプレイ上で身体部分上に重ね合わせるための、実施形態の方法のプロセスフロー図である。
【図２８Ａ】ヘッドマウントデバイスを使用して、仮想オブジェクトをディスプレイ上でレンダリングするため、および、仮想オブジェクトを、ディスプレイ上で身体部分上に重ね合わせるための、実施形態の方法のプロセスフロー図である。
【図２８Ｂ】ヘッドマウントデバイスを使用して、仮想オブジェクトをディスプレイ上でレンダリングするため、および、仮想オブジェクトを、ディスプレイ上で身体部分上に重ね合わせるための、実施形態の方法のプロセスフロー図である。
【図２９】ヘッドマウントデバイスとクラウドサーバとを使用して、走査および計算されたデータパラメータをいくつかの他のヘッドマウントデバイスと共有するための、一実施形態の方法のプロセスフロー図である。
【図３０】2つの異なるヘッドマウントデバイスとサーバとを使用して、データを共有し、仮想オブジェクト入力デバイスを使用する2つの異なるソフトウェアアプリケーションを使用して共同作業し、それによって、2つの異なるソフトウェアアプリケーション間で競合が解決されるようにするための、一実施形態の方法のプロセスフロー図である。
【図３１】データを共有し、異なるソフトウェアアプリケーションを使用して共同作業する、数人のユーザのハイレベルブロック図である。
【図３２】2つの異なるコンピューティングデバイスを使用して、データを共有し、2つの異なるワードプロセシングアプリケーションを使用して共同作業するための、一実施形態の方法のプロセスフロー図である。
【図３３】ヘッドマウントデバイスを使用して、ジェスチャーと音声コマンドの両方を認識するため、および、第1のコマンドと第2のコマンドとが連続して検出されるとき、それらのコマンドを確認された入力コマンドとして処理するための、実施形態の方法のプロセスフロー図である。
【図３４】ヘッドマウントデバイスを使用して、ジェスチャーと音声コマンドの両方を認識するため、および、第1のコマンドと第2のコマンドとが連続して検出されるとき、それらのコマンドを確認された入力コマンドとして処理するための、実施形態の方法のプロセスフロー図である。
【図３５】ヘッドマウントデバイスを使用して、ジェスチャーコマンドを認識して、「仮想オブジェクト入力デバイス」を生成された仮想オブジェクト上にレンダリングし、ユーザが仮想入力デバイスを使用して仮想オブジェクトを制御できるようにするための、実施形態の方法のプロセスフロー図である。
【図３６】ヘッドマウントデバイスを使用して、ジェスチャーコマンドを認識して、「仮想オブジェクト入力デバイス」を生成された仮想オブジェクト上にレンダリングし、ユーザが仮想入力デバイスを使用して仮想オブジェクトを制御できるようにするための、実施形態の方法のプロセスフロー図である。
【図３７】ジェスチャー追跡カメラ、ならびに/または、(1つまたは複数の)RGBおよび距離測定カメラを使用して、仮想オブジェクト上でアイコンを選択するためにユーザの指によって制御される仮想ポインタデバイスである「仮想オブジェクト入力デバイス」を提供する、一実施形態のハイレベルブロック図である。
【図３８】ヘッドマウントデバイスとサーバとを使用して、データを共有し、ユーザ共同作業を可能にするための、ピアツーピアベースのシステムのハイレベルブロック図である。
【図３９】ヘッドマウントデバイスとサーバとを使用して、データを共有し、ユーザ共同作業を可能にするための、中央クラウド構成ベースのシステムのハイレベルブロック図である。
【図４０Ａ】ジェスチャー追跡カメラとカメラとを使用して、仮想ポインタデバイスを形成する「仮想オブジェクト入力デバイス」を提供する、一実施形態のシステムのハイレベルブロック図であり、ただし、仮想オブジェクトがヘッドマウントディスプレイ上で大きくレンダリングされ得る図である。
【図４０Ｂ】ジェスチャーを検出し、ユーザのための投影を出力することができるモジュール式のピコプロジェクタを使用して、仮想オブジェクトをレンダリングする別の実施形態を示す図である。
【図４０Ｃ】ジェスチャーを検出し、ユーザのための投影を出力することができるモジュール式のピコプロジェクタを使用して、仮想オブジェクトをレンダリングする別の実施形態を示す図である。
【図４０Ｄ】1つまたは複数のジェスチャーを検出することによって、ユーザにとって好都合なロケーションで、ピコプロジェクタを用いて画像を投影する、一実施形態の方法のプロセスフロー図である。
【図４１】様々な実施形態とともに使用するのに好適な、モバイルコンピューティングデバイスの構成要素ブロック図である。
【図４２】様々な実施形態とともに使用するのに好適な、サーバコンピューティングデバイスの構成要素ブロック図である。
【発明を実施するための形態】
【００１０】
様々な実施形態が、添付の図面を参照して詳細に説明される。可能な場合には必ず、同じ参照番号は、図面全体にわたって同じまたは同様の部分を指すために使用されることになる。特定の例および実装形態に行われる参照は、説明を目的とし、本発明の範囲または本特許請求の範囲を限定することは意図されない。
【００１１】
「例示的な」という言葉は、「例、実例、または例示として機能すること」を意味するために本明細書で使用される。本明細書に「例示的」と記載されるいかなる実装形態も、必ずしも他の実装形態よりも好ましいまたは有利であると解釈されるべきではない。
【００１２】
本明細書で使用する「モバイルデバイス」および「ハンドヘルドデバイス」という用語は、セルラー電話、スマートフォン、タブレットコンピュータ、携帯情報端末(PDA)、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、全地球測位システム(GPS)受信機、ワイヤレスゲームコントローラ、ネットブック、ならびに、プログラマブルプロセッサおよびメモリを含み、ワイヤレス通信ネットワークと通信し、ウェブブラウザを有するように構成される同様の個人電子デバイスのうちの、いずれか1つを指す。
【００１３】
本明細書で使用する「コンピュータ」、「パーソナルコンピュータ」、および「コンピューティングデバイス」という用語は、既知の、または今後開発される任意のプログラマブルコンピュータシステムを指す。好ましい実施形態では、コンピュータは、本明細書で説明されるようなネットワークに結合される。コンピュータシステムは、本明細書で説明されるプロセスを実行するためのプロセッサ実行可能ソフトウェア命令で構成され得る。
【００１４】
本明細書で使用する「構成要素」、「モジュール」、および「システム」という用語は、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連のエンティティを指すことが意図されている。たとえば、構成要素は、限定されないが、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラムおよび/またはコンピュータであってよい。例として、サーバ上で動作しているアプリケーションとそのサーバの両方が、構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在してよく、1つの構成要素を1つのコンピュータに局在化すること、および/または2つ以上のコンピュータ間に分散することが可能である。
【００１５】
本明細書で使用する「ヘッドマウントデバイス」(HMD)という用語は、距離センサデータをキャプチャし、モバイルプロセッサにリンクされたディスプレイ能力を有するデバイスを指し、モバイルプロセッサは、ヘッドマウントデバイスに対して別個のデバイスであってもよく、図16に示すようなものであってもよい。一実施形態では、ヘッドマウントデバイス10は、モバイルデバイスCPU(たとえば、セル電話、タブレットコンピュータ、スマートフォンなどのプロセッサ)のためのアクセサリーであってもよく、ヘッドマウントデバイス制御システム1610(図では「VIRT制御システム」)の主要な処理は、モバイルデバイス1605のプロセッサ上で実行される。別の実施形態では、ヘッドマウントデバイスは、プロセッサと、メモリと、ディスプレイと、カメラとを備え得る。一実施形態では、ヘッドマウントデバイス10は、環境(たとえば、部屋など)から情報を走査または収集するための1つまたは複数のセンサ(たとえば、深度センサ、カメラなど)と、収集された情報を別のデバイス(たとえば、サーバ、第2のモバイルデバイスなど)へ送信するための回路とを含む、モバイルデバイス(たとえば、スマートフォンなど)であり得る。
【００１６】
別の実施形態では、ヘッドマウントデバイスは、インターネット、ローカルワイヤレスネットワーク、または別のコンピューティングデバイスと接続するための、ワイヤレスインターフェースを含み得る。別の実施形態では、ピコプロジェクタがヘッドマウントデバイス内で関連付けられて、表面上への画像の投影が可能にされ得る。ヘッドマウントデバイスは、好ましくは軽量であり、デバイスの装着を不快に感じさせ得る重い構成要素の使用を回避するように構築される。ヘッドマウントデバイスはまた、音声/ジェスチャー入力をユーザから受信するようにも動作可能であり得る。そのようなジェスチャー入力または音声入力は、口頭のボイスコマンドまたは認識されたユーザジェスチャーであってもよく、コンピューティングデバイスによって認識されるとき、対応するコマンドをそのデバイスに実行させることができる。
【００１７】
「ピアツーピアネットワーク」という用語は、いかなる形態の知られているピアツーピアネットワーク技術、または将来開発され得るピアツーピアネットワーク技術をも包含するように意図される。いくつかの実施形態は、ハイパーテキスト転送プロトコル(HTTP)メッセージングを利用するピアツーピアネットワークに言及するが、そのような言及は、単に例として機能するように意図され、特許請求の範囲を任意の特定のネットワーキング技術に限定するように意図されない。
【００１８】
言及しやすいように、様々な実施形態の機能を示す例は、ネットワークを、第1および第2のネットワークもしくはユーザと呼び、または、ネットワークおよびユーザAおよびBと呼ぶことがある。たとえば、第1のユーザは「ユーザA」と呼ばれることがあり、第2のユーザは「ユーザB」と呼ばれることがある。図面および説明におけるそのような言及は、任意であり、ネットワークおよびユーザの言及を簡略化するために使用され、したがって、特許請求の範囲を2つのネットワークのみもしくは2人のユーザのみに限定するように意図されず、または、特定のユーザを特定のネットワークに限定するように意図されず、その理由は、様々な実施形態が任意の数のネットワークおよびユーザをサポートするからである。
【００１９】
いくつかの構成要素およびモジュールを含み得るシステムに関して、様々な実施形態を提示する。様々なシステムが、追加の構成要素、モジュールなどを含んでもよく、かつ、各図に関連して論じられる構成要素、モジュールなどのすべてを含むとは限らないことを理解し、諒解されたい。これらの手法の組合せも使用され得る。
【００２０】
図1を参照すると、様々な実施形態は、コンピューティングデバイスとの対話および他のユーザとの共同作業を容易にすることができる拡張現実体験を提供するために、ヘッドマウントデバイス10が、アンカーされる表面16上に表示された仮想オブジェクト14をレンダリングすることを可能にする。様々な実施形態は、ヘッドマウントまたはボディマウント(たとえば、ユーザの首、肩、もしくは腕に、またはハンドヘルド)であるカメラを用いて、画像をキャプチャすることを含み得る。参照しやすいように、本明細書および特許請求の範囲で使用する「ボディマウント」という用語は、ヘッドマウントを包含する。一実施形態では、このカメラは、ヘッドマウントまたはボディマウントのステレオカメラであってもよく、プロセッサがステレオ画像の三角法による解析を通して画像内のオブジェクトまでの距離を推定するように解析することができる画像データを生成することができる。代替的にまたは追加として、ヘッドマウントデバイスは、画像内の様々な表面までの距離を測定することができる、1つまたは複数の距離測定センサ(たとえば、レーザーまたは音波距離計)を含み得る。以下でより詳細に説明するように、様々な実施形態では、多種多様なタイプの距離測定センサおよびアルゴリズムが、ユーザによって見られるシーン内のオブジェクトまでの距離を測定するために、測定すべき撮像されたシーンにおいて使用され得る。また、2つ以上のセンサおよび2つ以上のタイプのセンサが、ヘッドマウントデバイスにおいて使用され得る。したがって、説明しやすいように、および一貫性のために、ヘッドマウントデバイス上に含まれ得る様々な組合せおよびタイプの距離測定センサを、本明細書では総称して、または個々に「距離センサ」と呼ぶ。
【００２１】
さらに、ヘッドマウントデバイス10は、加速度計、ジャイロスコープ、磁気センサ、光学センサ、機械的もしくは電子的レベルセンサ、および慣性センサなど、向きセンサを含んでもよく、これらのセンサは、単体または組合せで、(たとえば、重力の向きを検知することによって)デバイスの上/下/レベルの向きに関して、および、したがって、ユーザの頭の(および、その閲覧パースペクティブからの)位置/向きに関して、データをデバイスのプロセッサに供給することができる。さらに、ヘッドマウントデバイスは、左/右の向きおよび動きに関して、データをデバイスのプロセッサに供給することができる、電子コンパスおよび加速度計などの回転向きセンサを含み得る。総称して、ヘッドマウントデバイス(および、したがって、ユーザの閲覧パースペクティブ)の上/下および回転の向きに関するデータを供給するように構成されたセンサ(加速度計、ジャイロスコープ、磁気センサ、光学センサ、機械的もしくは電子的レベルセンサ、慣性センサ、および電子コンパスを含む)を、本明細書では「向きセンサ」と呼ぶ。
【００２２】
システムは、カメラによって撮像され得るジェスチャーを通して行われ得る、ユーザ入力を認識し、撮像されたシーン内で仮想オブジェクトを位置決めするための表面またはロケーションを識別するように構成され得る。画像内の認識されたオブジェクトまでの距離は、ステレオ画像および/または距離センサから収集されたデータから決定され得る。ヘッドマウントデバイス10は、図16を参照して以下でより詳細に説明するように、スマートフォンまたは他のモバイルデバイスにおけるものなど、ヘッドマウントデバイスとは別個であり得るモバイルプロセッサに画像および距離センサデータを供給し、モバイルプロセッサからディスプレイ情報を受信することができる。ヘッドマウントデバイスの向きを周囲に対して設定し、様々な表面までの距離および様々な表面の向きを決定するこのプロセスを、数人のユーザによって装着されている各デバイスによって、表示された仮想オブジェクトが各ユーザにとって適切なパースペクティブから各ユーザによって見られるように、達成することができる。さらに、走査された3次元(3D)環境のトポグラフィにおける変化を常に参照し、したがって、同時位置特定およびマップ作成(SLAM:Simultaneous Location and Mapping)動作を実行することによって、各ヘッドマウントデバイスが空間内で動くとき、それ自体の位置および画角を三角測量することができるように、このプロセスを連続的に達成することができる。
【００２３】
一実施形態では、ヘッドマウントデバイス10は、キャプチャされた画像内で第1のアンカー表面16を示す第1のユーザ入力を受信することができる。この入力は、ボタン押下、ヘッドマウントカメラの視野内で実行された認識可能なジェスチャー、所定の時間期間にわたって比較的動きのないままである画像として認識されたユーザによる集中的な凝視、または他の認識可能な入力の形態など、様々なユーザ入力のうちの任意のものであり得る。第1のアンカー表面16は、ヘッドマウントデバイス10のカメラによって取得された画像中にある第1の表面に対応し得る。ヘッドマウントデバイス10に結合されたか、またはヘッドマウントデバイス10内のプロセッサは、仮想オブジェクト14を生成し、仮想オブジェクト14のディスプレイロケーションに対応する、ヘッドマウントまたはボディマウントカメラに対する距離および向きを含む、ディスプレイに関連のあるパラメータを計算することができる。ユーザが、指定されたアンカー表面にアンカーされた仮想オブジェクト14を表示することを選択するとき、ヘッドマウントデバイス10に結合されたか、またはヘッドマウントデバイス10内のプロセッサは、仮想オブジェクト14をディスプレイ上に(または、プロジェクタを通して)レンダリングして、仮想オブジェクトがディスプレイを通して見られるとき、第1のアンカー表面16上にあるように見えるようにすることができる。仮想オブジェクト14は、たとえば、テキスト、グラフィックス、画像、および3D形状を含む、任意の仮想オブジェクト14であり得る。このようにして提示されるとき、周囲の環境内の指定されたロケーションに/上に位置する仮想オブジェクトの投影は、仮想現実の体験を作り出し、仮想オブジェクトとのユーザ対話を可能にすることができる。様々な実施形態は、仮想オブジェクトおよびデジタルアセット(文書、ピクチャ、ビデオなど)との自然な対話を可能にする。仮想オブジェクトおよびデジタルアセットとのそのような自然な対話には、ジェスチャー制御、タッチ操作、仮想オブジェクトのタッチされた部分を強調することなどが含まれ得る。認識可能なジェスチャーは、ヘッドマウントデバイスによってアクセス可能なジェスチャー辞書の形態で記憶または編成され得る。そのようなジェスチャー辞書は、突くこと、軽くたたくこと、タップ、押すこと、案内、フリック、ターン、回転、つかんで引くこと、画像をパンするために両手のひらを開くこと、描画(たとえば、フィンガーペインティング)、指で形状を作ること(たとえば、「OK」サイン)、およびスワイプを含み得る、ジェスチャーを認識するための動きデータまたはパターンを記憶することができ、それらのジェスチャーのすべては、生成された表示内の仮想オブジェクトの見かけのロケーションで、見かけのロケーションにごく接近して、または、見かけのロケーションの(ユーザに関する)方向をアドレス指定して達成され得る。このようにして、様々な実施形態は、ジェスチャー制御または他の好適な制御入力方法を含み得る、仮想オブジェクトとの自然な対話を可能にする。
【００２４】
様々な実施形態は、異なるタイプのヘッドマウントディスプレイを使用して実施され得る。いくつかのヘッドマウントディスプレイは、ユーザがディスプレイを超えてシーンを見ることを可能にする、半透明であってもよく、投影画像は、背景シーン上に重ね合わせられるように見える。他の実施形態では、ヘッドマウントディスプレイは、部屋のユーザの視野を完全にブロックする。この実施形態では、ヘッドマウントディスプレイは、仮想または拡張現実体験を提供する。室内のオブジェクトを見るために、ユーザによって装着された1つまたは複数のカメラによって取得された画像を使用して、部屋のビューをヘッドマウントディスプレイ上に投影することができる。この実施形態では、仮想オブジェクトが、ヘッドマウントディスプレイ上に投影された画像に追加され、それによって、カメラによって取得された実際の画像と同じくらい現実のように見え得る。
【００２５】
ヘッドマウントディスプレイが不透明である(すなわち、完全にふさがれる)実施形態では、ヘッドマウントデバイス10は、ユーザの前のシーンの画像を、ディスプレイ内に含まれた14における仮想オブジェクトとともに、選択されたアンカー表面16にアンカーされるように見えるように表示することができる。この実施形態では、イメージングセンサおよびヘッドマウントデバイスは、不透明なディスプレイ上に、ユーザの前のシーンの画像を投影する。ユーザがそのシーンにナビゲートするために、ユーザは、ヘッドマウントカメラから取得された画像をヘッドマウントディスプレイ上で見る。このことは、特に、ユーザが自分の両手を制御ジェスチャーの一部として動かしているとき、ユーザの両手のディスプレイ画像にレンダリングすることを含み得る。仮想オブジェクト14が特定の表面にアンカーされる場合、仮想オブジェクトは、ユーザがアンカー表面から目をそらしているとき、ディスプレイ内で見えなくなる。ヘッドマウントディスプレイは、ボディマウントカメラから取得された画像を含む、ヘッドマウントデバイスによって生成された画像を提示するので、システムは、仮想オブジェクトが背景の前に現れるように、シーンの部分を表示することができる。したがって、この実装形態では、仮想画像がユーザの両手の前でヘッドマウントディスプレイ上に提示される場合、ユーザの両手はユーザにとって可視でなくなる。結果として、仮想オブジェクトは、立体および不透明であるように見え得る。この実施形態は、同じディスプレイ上に提示された仮想オブジェクトと組み合わされた、ユーザにより装着されたカメラによって取得された実際の画像を表示すること含む、仮想または拡張現実体験を提供する。
【００２６】
ヘッドマウントディスプレイが半透明である(すなわち、ユーザがディスプレイを通して背景シーンを見ることができる)実施形態では、ヘッドマウントデバイス10は、生成された仮想オブジェクトが、ユーザによってディスプレイを通して見られるとき、第1のアンカー表面16にアンカーされるように見えるように、それらの仮想オブジェクトを表示することができる。このようにして、ユーザは、部分透明ヘッドマウントディスプレイを用いてシーンを見ることができ、そこで、デスク、テーブル、および壁のような実世界のオブジェクトが、同じく可視のシーン内に仮想オブジェクトを配置するヘッドマウントディスプレイを通して部分的に可視である。可視の仮想オブジェクト14は、実世界オブジェクト16にアンカーまたは接続され得る。この実施形態は、ディスプレイがシースルーまたはビデオシースルーであり、仮想オブジェクトが実際のロケーション内または実際の表面上に固定されるように見えるディスプレイを通して、ユーザが実世界を見ることを可能にする、拡張現実体験を提供する。
【００２７】
たとえば、仮想オブジェクト14は、薄型テレビに似ていてもよく、図1に示すように、実世界オブジェクトまたは実世界の壁16に接続され、または「アンカー」してもよい。ユーザが自分の頭を動かすとき、仮想オブジェクト14は、通常、ユーザの視野とともにディスプレイ10上で動くようになる。しかしながら、この実施形態では、ユーザが自分の頭を回した場合、実世界のフラットパネルディスプレイが表面上にとどまるようになる状態と同様に、仮想オブジェクト14は、アンカー表面16上にとどまるように見える。
【００２８】
一実施形態では、ユーザは、ユーザが第1のアンカー表面を選択した方法と同様の方法で、アンカー表面16を移動させることができる。ユーザは、あるタスクでは、異なるアンカー表面が好ましくなることを発見することがある。ヘッドマウントデバイス10は、第1のアンカー表面16とは異なる、画像内の新しいまたは第2のアンカー表面16を示す、第2の入力(入力デバイスからのジェスチャー、音声など)を受信することができる。第2のアンカー表面16は、画像中にある第2の異なる表面に対応し得る。さらに、第1および第2のアンカー表面は、隣接していなくてもよく、第1の表面は、第2の/代替的表面が指定されるとき、ヘッドマウントデバイスカメラの視野内になくてもよい。たとえば、1つの表面は、図2に示すように、デスクトップ16であり得るが、別の表面は、図1に示すように、水平の壁16または天井であり得る。たとえば、第1のユーザは、第1のアンカー表面16を個人使用のために選択し、次いで、異なる地理的ロケーションにおける第2のユーザのために、第2のアンカー表面16を選択することができる。一実施形態では、ユーザ入力は、音声入力、有形の入力デバイス(キーボードもしくはマウス)を使用して与えられた入力、検出されたジェスチャーであってもよく、または、異なるユーザによって与えられてもよい。ヘッドマウントデバイス10内の、またはヘッドマウントデバイス10に結合されたプロセッサは、第2のアンカー表面16に対応する、ヘッドマウントまたはボディマウントカメラに対する距離および向きを含む、パラメータを計算することができる。ヘッドマウントデバイス10内の、またはヘッドマウントデバイス10に結合されたプロセッサは、次いで、生成された仮想オブジェクト14を表示して、仮想オブジェクトがユーザにとって、選択された第2のアンカー表面16にアンカーされるように見えるようにすることができる。別の実施形態では、ヘッドマウントデバイス10の代わりに、またはそれに加えて、ピコプロジェクタを使用して、仮想オブジェクト14を選択されたアンカー表面16上に投影することができる。ピコプロジェクタは、別個のモジュール式のデバイスであってもよく、または、ヘッドマウントデバイス10内に含まれてもよい。
【００２９】
図1は、ヘッドマウントデバイス10を使用するユーザを示す。ヘッドマウントデバイス10は、ユーザが、壁12など、近くの表面を仮想の「フラットパネル画面」16として指定できるようにすることができる。ユーザは、入力コマンドを使用して、近くの表面16を識別することができる。複数のユーザが、共通のネットワークまたはデータベースに接続されたヘッドマウントデバイス10を装備しているとき、それらのユーザの一部または全部は、同じ仮想オブジェクト14を同時に見ることができ、それによって、仮想オブジェクトが実世界オブジェクトであるかのように、仮想オブジェクトに関する共同作業およびグループの議論が可能になる。
【００３０】
ヘッドマウントデバイス10のディスプレイを駆動するプロセッサは、生成された仮想オブジェクト14の表示画像を連続的に更新し、ユーザが自分の頭を回し、選択されたアンカー表面16に対して動くとき、仮想オブジェクト14がアンカー表面16にアンカーされるように見えるようにすることができる。したがって、ユーザが室内で動き、歩き回るとき、仮想オブジェクト14は、物理的表面16上で固定されたままであるように見え得る。この印象を維持することの一部として、プロセッサは、仮想オブジェクト14の外観を修正し、その形状、サイズ、および向きがアンカー表面のユーザの閲覧パースペクティブに適合するようにすることができる。仮想オブジェクトの形状、サイズ、および向きを調整することは、没入型の仮想または拡張現実体験の提供を助けることができる。ユーザが、仮想オブジェクト14を別のアンカー表面へ移動させるためにあらかじめ定義された特定の入力を入力するのでない限り、仮想オブジェクト14は、静的で、一見するとアンカー表面に付着されたままであり得る。このことは、ユーザのグループの中の共同作業にとって有益であることがあり、その理由は、仮想オブジェクト14が、各ユーザのロケーションおよび閲覧パースペクティブにかかわらず、会話のための共同作業的な焦点であり得るからである。たとえば、第1のユーザは、アンカー表面上でメディアを読み、または、第2のユーザによって与えられたプレゼンテーションを見ることができる。このことは、第1のユーザが、混乱することなく、アンカー表面16を室内の異なる表面またはオブジェクトに変更できることを除いて、フラットパネル画面と同様に、仮想オブジェクト14が実世界または物理的なオブジェクトであるという外観を第1のユーザに与えるようになる。
【００３１】
非限定的な例では、仮想オブジェクト14は、共同作業向けのソフトウェアアプリケーションのディスプレイ出力であり得る。たとえば、仮想オブジェクト14は、テキスト、メディア、テレビジョンチャネル、映画、文書ワードプロセシングアプリケーション、電子メール、ビデオ、電話通話、ソーシャルネットワーク投稿、RSSフィードなどを含み得る。そのようなオブジェクトは、いかなる表面もディスプレイとして機能することができることを除いて、それらのオブジェクトが従来のフラットパネルディスプレイ上に現れ得る方法と同様に、アンカー表面に、またはアンカー表面上に固定されるように見えるように、ディスプレイ上に提示され得る。加えて、選択された表面にアンカーされた仮想オブジェクトのサイズをユーザによって制御して、表示されたオブジェクトをより大きく、またはより小さくすることができる。別の実施形態では、仮想オブジェクト14は、非平面および非矩形表面上にレンダリングされるか、または、球形もしくは一見すると3次元の形状を用いてレンダリングされるなど、異なる外観を有してもよい。ヘッドマウントディスプレイ上の仮想オブジェクト14の提示は、ユーザが、オブジェクトが物理的環境の一部であるかのように、オブジェクトを見て、オブジェクトと対話することを可能にする。一実施形態では、仮想オブジェクト14は、各ユーザにとって異なって見え得る。
【００３２】
一実施形態では、仮想オブジェクト14は、物理的表面16にアンカーされていない3次元モデルであってもよい。この実施形態では、仮想オブジェクト14は、空間内に浮いているように見える3次元モデルであってもよい。この実施形態では、ユーザは、自由空間内で表示された仮想オブジェクト14を見ることができ、仮想オブジェクト14は、壁、床、家具などに対するものであり得る、自由空間内で選択された3次元位置にアンカーされる。この実施形態では、仮想オブジェクト14が空間内の特定のロケーションにアンカーされるとき、ユーザが自分の頭を動かし、アンカーロケーションの周囲、および、したがって仮想オブジェクトの周囲を動くとき、そのオブジェクトが動くように見えないようになる。たとえば、仮想オブジェクト14は、自由空間内で所定の3-D座標にアンカーされるように見えるように、部分透明ディスプレイ上に提示され得る。この実施形態では、ディスプレイは、システムが仮想オブジェクト14を自由に浮くものとして表示するべきである場所または座標をユーザが入力するための、プロンプトを表示することができる。プロセッサは、検出されたジェスチャー(たとえば、指で空間内の点を指す)を介して入力コマンドを認識することができ、または、仮想オブジェクト14を自由空間内で自由に浮くものとして配置するための音声コマンドを認識することができる。プロセッサは、指示された空間点にアンカーされた仮想オブジェクト14を表示することができ、または、仮想オブジェクト14をヘッドマウントディスプレイのある位置に接続して、仮想オブジェクト14が空間内で浮いている錯覚を有するようにすることができる。ユーザが、自由空間内で仮想オブジェクト14に対して動くとき、仮想オブジェクト14のパースペクティブ、サイズ、および向きもまた、それに応じて変化し得る。たとえば、仮想オブジェクト14は、壁に隣接して、または地面より上で浮いている外部、および窓の外側に位置する空き空間にアンカーされ得る。このようにして、ユーザは、室内で自由に浮いている仮想オブジェクト14の周囲を歩くことによって、仮想オブジェクト14のすべての側面を検査することができる。
【００３３】
様々な実施形態では、仮想オブジェクト14を空間内で選択されたアンカー表面または点にアンカーするための入力は、いくつかの異なる方法で与えられ得る。たとえば、ヘッドマウントデバイス10に関連付けられたカメラ、または、ヘッドマウントデバイス10に動作可能に接続された第2のカメラはまた、ユーザの動きを追跡することもできる。プロセッサは、画像を受信することができ、検出アルゴリズムを追跡された動きに適用して、ユーザによって行われた所定のジェスチャーを検出することができる。たとえば、ユーザは表面を指すことができ、そのことを、システムはプロセッサへの特定の入力として解釈することができる。
【００３４】
たとえば、ユーザは、ジェスチャーを用いて、室内の特定の実世界の表面がアンカー表面となるように意図されることを示すことができる。プロセッサは、所定のジェスチャーが検出されるとき、所定のジェスチャーに対応するコマンドを実行することができる。たとえば、プロセッサは、ユーザが特定の表面を指していることを検出することができる。プロセッサは、表面を検出し、ユーザの視線に対する表面の角度を決定し、仮想オブジェクト14を、決定された表面の角度に整合する向きおよびパースペクティブで、ユーザが指した特定の表面上にアンカーすることができる。
【００３５】
たとえば、ユーザは、デスクトップ表面を指すことがある。プロセッサは、ユーザの動きを追跡中であってもよく、検出アルゴリズムを追跡された画像に適用することができる。システムが、人差し指が指しており、残りの指が握りこぶしを作っている、伸ばされたユーザの腕を撮像するとき、プロセッサは、そのような画像をユーザジェスチャーとして認識し、対応するコマンドを適用して、仮想オブジェクト14を、ユーザが指しているデスクトップ上にアンカーすることができる。たとえば、ユーザの指の端部がある表面に接触して、その表面をアンカー表面として識別する場合、ヘッドマウントデバイスは、仮想オブジェクト14を、その表面にアンカーされるように表示することができる。
【００３６】
別の例では、ユーザは、仮想オブジェクト14を移動させて、異なるアンカー表面16上に「配置」することを希望することがある。このことを達成するために、ユーザは、ヘッドマウントデバイス10に結合されたプロセッサが認識できる、第2の所定のジェスチャーを提供または実行することができる。第2の所定のジェスチャーは、キャプチャされた画像内である表面をアンカー表面16として指定するための一般的なコマンドなど、第1のアンカー表面を指定するために使用されたものと同じであってもよく、または、異なるジェスチャーであってもよい。多数の異なるジェスチャーが行われてもよく、本開示の範囲内である。たとえば、検出される所定のジェスチャーは、「OK」サイン、握りこぶし、開いた手、1本の指で指すこと、2本の指で指すこと、3本もしくは4本の指で指すこと、差し伸ばした手、手の回転、手を振ること、1本もしくは複数の指の動き、身体部分の動き(たとえば、足の動き)、または他の任意の動きであってもよい。
【００３７】
また、アンカー表面16の指定、および他の入力またはコマンドは、ヘッドマウントデバイス10上の、もしくはヘッドマウントデバイス10に結合された、または、次にはヘッドマウントデバイスに結合されたプロセッサに結合された、マイクロフォンによって受信された入力を用いて、口頭で与えられ得る。ヘッドマウントデバイス内の、またはヘッドマウントデバイスに結合されたプロセッサは、音声信号をマイクロフォンから受信することができ、音声認識プロセスを使用して、そのような信号を処理することができる。プロセッサは、口頭のコマンドを認識するために、受信された音声信号を、メモリに記憶された1つまたは複数のコマンドの音声パターンと比較することができる。たとえば、プロセッサは、数個の所定のコマンドワードを求めて、音声入力を監視することができる。このようにして、ユーザは、コマンドキーワードを言うことなく、仮想オブジェクトについて議論するためになど、同僚および他のネットワークユーザと話すことができる。プロセッサは、検出アルゴリズムを受信された音声に適用し、特定のあらかじめ定義された音声コマンド、または、あらかじめ定義された注意コマンド(たとえば、「コンピュータ」または「実行する」など)によって続けられたコマンドのみに応答するようにすることができる。たとえば、ユーザは、「画像をデスクの上にアンカーする」と言い、仮想オブジェクトをヘッドマウントデバイスカメラの視界内のデスクにアンカーすることを、プロセッサに行わせることができる。ヘッドマウントデバイス10内の、またはヘッドマウントデバイス10に結合されたプロセッサは、これらの口頭の言葉をコマンド入力として認識し、対応するアクションを実施して、仮想オブジェクト14をデスクまたはアンカー表面16「上」にアンカーすることができる。
【００３８】
別の実施形態では、プロセッサは、コマンド入力を検出するが、次いで、いかなるコマンドを実施するよりも前に、確認を待機するようにプログラムされてもよい。この確認は、意図的でないジェスチャーによって、または、オブジェクトに関するグループ共同作業中の不注意の音声コマンドによって、仮想オブジェクト14を不注意に移動させることを回避するために有利であり得る。この実施形態では、仮想オブジェクト14は、確認または確認コマンドが受信されるのでない限り、コマンドに応答して配置、移動、または表面にアンカーされるようにならない。たとえば、プロセッサは、カメラからの画像を処理して、ジェスチャーコマンドを識別すること、および/または、マイクロフォンから受信された音声信号を処理して、単一の言葉もしくは文などの口頭のコマンドを識別することができる。ジェスチャーまたは口語のコマンドが認識されるとき、プロセッサは、コマンドを確認するようにユーザに促し、確認入力を待機することができ、確認入力は、ボタン押下、口頭の言葉、物理的ジェスチャー、またはそれらの組合せの形態であり得る。プロセッサが、適切な確認または確認コマンドを認識するとき、第1の認識されたジェスチャーに関連付けられたコマンドまたは可聴コマンドを実行することができる。確認コマンドが受信されない場合、プロセッサは、検出されたジェスチャーまたは可聴コマンドを無視することができる。
【００３９】
別の実施形態では、カメラ付きのスマートフォンなど、モバイルコンピューティングデバイスは、ヘッドマウントディスプレイを装着していないユーザのための「マジックレンズ」として動作することができる。この実施形態では、ワイヤレスデータリンクを介してシステムに接続されたコンピューティングデバイスをもつユーザは、仮想オブジェクトをデバイスのディスプレイ上で見ることができる。このことは、ヘッドマウントデバイスのないそれらのユーザが、ヘッドマウントディスプレイ上での見え方と同様に、アンカー表面など、画像内の仮想オブジェクトおよび構造を見ることを可能にする。たとえば、第1のユーザは、ヘッドマウントディスプレイ上で壁に接続された仮想オブジェクト14を見ることができ、ヘッドマウントディスプレイは、画像データを第2のユーザのスマートフォンまたはPDAディスプレイに通信し、第2のユーザが仮想オブジェクト14を、壁または他の表面上にアンカーされているように見えるように見ることができるようにする。別の実施形態では、モジュール式のピコプロジェクタが、モバイルデバイスにリンクされ、仮想オブジェクトの画像を投影するために使用されてもよい。
【００４０】
様々な実施形態では、ヘッドマウントデバイス10は、2つ以上のデバイス間のデータの交換を可能にするワイヤレス通信機能を含んで、2人以上のユーザが文書、ファイル、および仮想オブジェクトと対話し、それらについて共同作業することを可能にする。このようにして、ヘッドマウントデバイス10は、ユーザが様々なパースペクティブから3次元仮想オブジェクトと対話し、それらを見ることを可能にする、仮想または拡張現実体験を提供するなどして、仮想オブジェクト上での複数のユーザによる共同作業を容易にすることができる。そのような共同作業体験を可能にするために、ヘッドマウントデバイス10は、3次元仮想オブジェクトモデルおよび/またはデータセットを、それらのそれぞれのディスプレイ上でレンダリングするために、互いに送信することができる。ヘッドマウントデバイス10はまた、座標マップ、ならびに、3次元仮想オブジェクトモデルおよび/またはデータセットなどのデータファイルを、ネットワークサーバなどの他のコンピューティングデバイスから受信することもできる。また、共同作業に関わるヘッドマウントデバイスのうちの1つまたは複数によって生成された画像データが、非参加者によって使用されるヘッドマウントデバイス、または、スマートフォンもしくはタブレットコンピュータなど、他のモバイルデバイスへ送信され、そこで表示されてもよく、他者が仮想または拡張現実体験において共同作業を見ることが可能にされ得る。ヘッドマウントデバイスを装着し、または、スマートフォンもしくはタブレットなど、別のモバイルデバイスを使用して、共同作業セッションを見る他者は、仮想オブジェクトおよびそれらとのユーザ対話を見るだけでなく、ヘッドマウントデバイスユーザのうちの1人によって見られる仮想拡張を用いた、制限された対話機能を有することができる。この制限された対話は、拡張に接触して効果を引き起こすこと、対話型エリアまたはアンカーポイントを物理的表面上で定義すること(新しい拡張を共有された体験に効果的に追加すること)、ならびに、ジェスチャーおよび/または音声入力を介して、共有された複合現実シーンと対話することを含み得る。仮想体験におけるそのような変更のいずれも、他のユーザによって装着されたヘッドマウントディスプレイに反映され得る。
【００４１】
図2は、第1のヘッドマウントデバイス10aおよび第2のヘッドマウントデバイス10bを使用して、デスクテーブルトップ16など、表面にアンカーされた仮想オブジェクトを見ている、2人のユーザを示す。図示の例では、アンカー表面16は、デスクトップ表面16に対応し、デスクトップ表面16は、第1のヘッドマウントデバイス10aによって表示された画像内に位置する。ヘッドマウントデバイス10aは、この図では仮想画面として示される仮想オブジェクト14aを生成し、仮想オブジェクト14aを、デスクトップ表面16に接続されたかのように表示することができる。第1のユーザが左側、右側、または後方を見る場合、仮想オブジェクト14aは、ヘッドマウントデバイス10aの視界内で移動しないようになり、代わりに、所定の場所にアンカーされたデスクトップ表面16上に表示されたままになる。たとえば、仮想オブジェクト14aは、第1のユーザがアンカー表面16から目をそらす場合、ヘッドマウントデバイス画面内にもはや現れないようになる。また、仮想オブジェクト14aは、アンカー表面16がフラットパネルディスプレイだった場合に現れるであろうような向き、形状、およびサイズで第1のユーザに提示され得る。したがって、仮想オブジェクト14aは、オブジェクトの形状をユーザのパースペクティブからアンカー表面上に投影することから生じる形状およびサイズで表示され得る。このことを達成するため、ヘッドマウントデバイス10a内の、またはヘッドマウントデバイス10aに結合されたプロセッサは、仮想オブジェクト画像をアンカー表面に、またはその上に生成するために、ヘッドマウントまたはボディマウントカメラ10aおよび距離センサに対する距離および向きを含む、形状パラメータを計算することができる。そのような計算は、よく知られているベクトル投影アルゴリズムを実施して、ヘッドマウントディスプレイに提示される画像を生じることができる。通常の体験(たとえば、通常のユークリッド幾何学的な投影)に整合する画像のベクトル処理を適用し、生じた仮想オブジェクト14bを、同じくユーザがディスプレイを越えてオブジェクトを見ることを可能にする半透明ディスプレイ上に提示することによって、その結果は、仮想オブジェクトが実際のオブジェクトとして振る舞うように見えるように、ユーザの感覚をだ
ますことができる。
【００４２】
共同作業の目的のために、第2のユーザは、第2のヘッドマウントデバイス10bを装着して、同じ物理的空間内で同じ仮想オブジェクトを見ることができる。第2のヘッドマウントデバイス10b内の、または第2のヘッドマウントデバイス10bに結合されたプロセッサは、仮想オブジェクトをユーザにより選択されたアンカー表面16上にレンダリングすることができる。第2のヘッドマウントデバイス10bは、仮想オブジェクト14bを、第1のヘッドマウントデバイス10a用に指定されたものと同じアンカー表面または位置上に表示することができる。第2のユーザはまた、第2のヘッドマウントデバイス10bを通して見られるように、仮想オブジェクト14bをレンダリングするための、異なる位置またはアンカー表面を指定することもできる。第2のヘッドマウントデバイス10bが、仮想オブジェクト14bを第2のユーザのパースペクティブからアンカー表面上に適切にレンダリングできるようにするために、第1のヘッドマウントデバイスから第2のヘッドマウントデバイスへ送信されるデータは、形状またはオブジェクトデータを含み得る。このデータは、第2のヘッドマウントデバイスプロセッサが、第2のユーザの閲覧パースペクティブに対応する仮想オブジェクトの表示画像をレンダリングできるようにすることができる。仮想オブジェクトデータは、幾何モデル、座標、およびフィルデータ、または、第2のヘッドマウントデバイス10b内のプロセッサにおいて実装された3次元オブジェクトレンダリングモジュール内で使用され得る同様のレンダリングデータの形態であり得る。
【００４３】
いくつかの実装形態または状況では、第2のヘッドマウントデバイス10bは、アンカー表面16にアンカーされた仮想オブジェクトを示す、第1のヘッドマウントデバイス10aからの画像データを受信することができる。そのような場合、第2のヘッドマウントデバイス10b内の、または第2のヘッドマウントデバイス10bに結合されたプロセッサは、ワイヤレスデータリンクを介して第1のヘッドマウントデバイス10aによって生成されたビデオデータを受信し、受信されたビデオデータを出力ビデオ画像として単に表示することができる。この適用例では、第2のユーザは、第1のユーザのパースペクティブから、第2のヘッドマウントディスプレイ上のシーンおよびアンカーされた仮想オブジェクト14aを見る。したがって、この実装形態では、第2のユーザは、映画またはTVビデオのように、第1のユーザの閲覧体験を体験することができる。この第1のユーザパースペクティブは、第1のユーザが第2のユーザに、トレーニングのために何かを行う方法を示しているか、または、第2のユーザが第1のユーザのアクティビティを監督中であるときなど、いくつかの状況では極めて有用であり得る。この状況では、データリンクを介して送られるデータは、単純なビデオおよび音声ストリームであってもよく、第2のヘッドマウントデバイスは、仮想オブジェクトのさらなる処理またはレンダリングを用いて、受信された画像をヘッドマウントディスプレイ上に単に投影することができる。以下で説明するように、第1のヘッドマウントデバイスからのビデオおよび画像データはまた、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、または大型ビデオディスプレイなど、他のコンピューティングデバイスにも(たとえば、ネットワーク、サーバ、またはピアツーピアワイヤレスデータリンクを介して)送信されて、他者が第1のユーザの仮想/拡張現実体験を見て、共有することが可能にされ得る。
【００４４】
第2のヘッドマウントデバイス10bは、仮想オブジェクト14bをデスクトップ表面16上に表示することができる。代替として、第2のユーザは、仮想オブジェクト14が表示されるべき別のアンカー表面を指定することができる。仮想オブジェクト14aが第1のアンカー表面16上に表示されるとき、第2のヘッドマウントデバイス10bは、オブジェクトのサイズおよび形状を、第2のユーザのパースペクティブに適するように見えるように修正することができる。たとえば、2人のユーザがテーブルまたはデスクの両側で同じオブジェクトを見ている場合、そのオブジェクトは、まさに実際のオブジェクトであるかのように、ユーザの一方にとって逆さまに見え得る。代替として、両方のユーザが、同じオブジェクトを同様に見ることができるので、両方ともが、正しい側が上になっているそのオブジェクトを見るようになる。
【００４５】
たとえば、第2のユーザ10bがデスクトップアンカー表面16に近づく場合、仮想オブジェクト14bはより大きくなり得る。第2のユーザ10bがデスクトップアンカー表面16から離れる場合、仮想オブジェクト14bはより小さくなり得る。さらに、第2のユーザ10bがディスプレイを水平方向に対して回転させる場合、仮想オブジェクト14bは、同様に回転を補償して、デスクトップアンカー表面16にアンカーされるように見え得る。さらなる例として、ユーザは、オブジェクト14bを閉じるか、またはディスプレイから除去するために、仮想オブジェクトをわきに払いのけるかのように腕をさっと払う、仮想オブジェクトの周囲で指を閉じる、または、仮想オブジェクト14bをパンチするなど、自分の腕および手を用いて、オブジェクト14bと対話するように見える方法で動くことができる。さらなる例として、第2のユーザ10bは、仮想オブジェクト14bを引っ張るか、または押すように試みるジェスチャーを実行することができ、この引っ張るか、または押すことは、入力コマンドとして解釈され得る。上述のように、認識可能なジェスチャーは、ジェスチャー辞書に記憶されてもよく、ジェスチャー辞書は、突くこと、軽くたたくこと、タップ、押すこと、案内、フリック、ターン、回転、つかんで引くこと、画像をパンするために両手のひらを開くこと、描画(たとえば、フィンガーペインティング)、指で形状を作ること(たとえば、「OK」サイン)、およびスワイプを含み得る、ジェスチャーを認識するための動きデータまたはパターンを記憶することができ、それらのジェスチャーのすべては、生成された表示内の仮想オブジェクトの見かけのロケーションで、または見かけのロケーションにごく接近して達成され得る。このようにして、ユーザは、実世界オブジェクトに好適となるジェスチャーを使用して、表面16にアンカーされた仮想オブジェクト14bと対話し、それによって、仮想オブジェクトとの対話を直観的にし、学習しやすくすることができる。
【００４６】
以下でより詳細に説明する一実施形態では、ヘッドマウントディスプレイをプロジェクタで置き換えて、画像が表面上に投影されるようにすることができる。そのような実施形態では、ユーザの操作および体験は、上記で説明したようにヘッドマウントディスプレイを使用することと同様であり得る。また、新しい画像提示技術が開発されるにつれて、実世界のアンカー表面とともに、ユーザによってユーザのパースペクティブから見られた仮想オブジェクトをレンダリングするために、そのような技術が様々な実施形態とともに実施され得る。
【００４７】
図3は、ヘッドマウントデバイス10a、10bを装着している2人のユーザが互いに向かい合っているにもかかわらず、仮想オブジェクト14aが各ユーザにとって上側が上に見える(すなわち、逆さまではない)ように、2人のユーザに提示された仮想オブジェクトを示す。この仮想オブジェクトの自動向き設定(self-orientation)は、両方のユーザがオブジェクトデータ(たとえば、棒グラフ)を正しく見ることを可能にする。
【００４８】
上述のように、仮想オブジェクト14a、14bのこの提示は、ヘッドマウントデバイス10aがヘッドマウントまたはボディマウントカメラを利用して、テーブル16の画像をキャプチャすることによって、達成され得る。画像は、ヘッドマウントディスプレイ10aで表示され得るか、または、テーブルは、半透明ディスプレイを通して見られ得る。第1のユーザのための仮想オブジェクト14aは、ヘッドマウントデバイス10a上で表示され得る。第1のユーザは、第1のヘッドマウントデバイス10aを使用して、第2の仮想オブジェクト14bが第2のユーザのために生成されるべきであることを示す、信号を構築することができる。第1のユーザはまた、キャプチャされた画像内でアンカー表面16を示す入力を供給することもできる。ヘッドマウントデバイス10a内の、またはヘッドマウントデバイス10aに結合されたプロセッサは、第1のユーザによって選択されたアンカーデスクトップ表面16に対応する、ヘッドマウントまたはボディマウントカメラ10aに対する距離および向きを含む、パラメータを計算することができる。ヘッドマウントデバイス10aは、生成された仮想オブジェクト14aがアンカー表面16にアンカーされ、第1の向きを含むように、仮想オブジェクト14aを表示する。第1の仮想オブジェクト14aは、次いで、第1のアンカー表面16aに接続されるかのように、第1のヘッドマウントディスプレイ10a上のディスプレイによって表示され得る。
【００４９】
図3では、第2のヘッドマウントデバイス10bを装着する第2のユーザが、第1のユーザに向かい合って座っている。第2のヘッドマウントデバイス10bは、アンカー表面16となるべきデスクトップを選択するための入力を受信することができ、または、第1のヘッドマウントデバイス10aから、選択されたアンカー表面16を識別するデータを受信することができる。この情報を使用して、第2のヘッドマウントデバイス10bは、正しい側が上になるように見えるように、および、第2のユーザにとって適切なパースペクティブで向きが再設定された仮想オブジェクト14bの表示を生成することができる。この表示を生成するために、第2のヘッドマウントデバイス10bは、そのコンテンツならびにその全体的な形状および向きに関するデータなど、レンダリングされるべき仮想オブジェクトに関するデータを受信することができる。第2のヘッドマウントデバイス10bは、第1のユーザによって選択されたアンカー表面(または、第2のユーザによって選択された別のアンカー表面)を使用して、仮想オブジェクトを表示するためのロケーション、向き、およびパースペクティブを決定することができる。このことは、オブジェクトの適切な上部と、レンダリングされたオブジェクトの適切なパースペクティブを生じるアンカー表面に適合するためのオブジェクトの投影の角度とを決定することを含み得る。したがって、図3に示すように、第2のユーザは、デスクトップ表面16にアンカーされているが、第2のユーザのパースペクティブからは正しい側が上である、同じ仮想オブジェクト14bを見る。
【００５０】
代替実施形態では、第1のヘッドマウントデバイス10a、または、両方のヘッドマウントデバイスと通信している別のコンピューティングデバイスは、第2のヘッドマウントデバイス10bのための仮想オブジェクト14bの適切な向きおよびパースペクティブを決定することができる。この場合、第1のヘッドマウントデバイス10aは、デバイスが第2のユーザの、または第2のヘッドマウントデバイス10bの向きを決定できるようにするために十分な情報を受信することができる。たとえば、第2のユーザの画像が、第1のヘッドマウントデバイス上のカメラによってキャプチャされ、解剖学的モデルを使用して処理されて、第2のユーザの位置および閲覧パースペクティブが決定され得る。第1のヘッドマウントデバイス10aは、次いで、決定されたユーザの向きに基づいて、第2のユーザ10bのために仮想オブジェクト14bの向きを正しく設定する方法で、仮想オブジェクトデータを第2のヘッドマウントデバイスへ送信することができる。
【００５１】
様々な実施形態では、第2のユーザは、第2のヘッドマウントデバイス10bに入力を供給して、仮想オブジェクト14bの向き、サイズ、および形状(たとえば、パースペクティブ)を制御または変更することができる。たとえば、検出されたジェスチャー入力コマンドを利用する第2のユーザは、仮想オブジェクト14bの角をドラッグして、仮想オブジェクト14bをより大きく、またはより小さくすることができる。別の例として、第2のユーザは、仮想オブジェクト14bを最小化し、新しいアプリケーションまたは仮想オブジェクトを開くことができる。
【００５２】
図4に示すように、同じ仮想オブジェクトを見る2人のユーザは、同じ室内にいる必要はない。たとえば、第1のロケーション、たとえば、英国のケンブリッジで第1のヘッドマウントデバイス10aを装着する第1のユーザは、第1のアンカー表面16a(たとえば、壁)上にアンカーされた仮想オブジェクト14a(たとえば、プレゼンテーションまたはグラフ)を見て、第2のロケーション、たとえば、カリフォルニア州サンディエゴで第2のヘッドマウントデバイス10bを装着する第2のユーザとともに、仮想オブジェクトに関して共同作業することができ、第2のユーザは、テーブルトップなど、極めて異なるアンカー表面16bにアンカーされた仮想オブジェクト14bを見ることができる。ヘッドマウントデバイス10aは、デバイス10aおよび10bを相互接続し、ワイヤードまたはワイヤレス通信リンクによってユーザがリソースを共有できるようにする、当技術分野で知られているいずれかのコンピュータネットワークを介して、第2のヘッドマウントデバイス10bと通信することができる。
【００５３】
たとえば、第1のヘッドマウントデバイス10aは、通信ネットワークを介して、第2のヘッドマウントデバイス10bのための第2の仮想オブジェクト14bの向きを正しく設定する信号と、第2のユーザ10bのために向きが設定された第2の仮想オブジェクト14bを生成する信号とを送信することができる。第2のヘッドマウントデバイス10bは、通信ネットワークから信号を受信することができ、第2のユーザ10bのための第2の仮想オブジェクト14bを生成することができる。
【００５４】
別の実施形態では、第1のユーザおよび/または第2のユーザの画像を、ヘッドマウントまたはボディマウントカメラによって経時的にキャプチャして、仮想オブジェクトの適切な向きを決定するために使用することができる。解剖学的解析をキャプチャされた画像に適用して、指定されたアンカー表面に対してなど、ユーザの現在の姿勢および向きを決定することができる。たとえば、画像を、メモリに記憶された解剖学的データと比較して、画像内の身体部分を検出し、ユーザの向きを決定することができる。第2のヘッドマウントデバイス10bのための第2の仮想オブジェクト14bは、第1のユーザ(すなわち、第1のユーザにとって見える方法で第2のユーザに画像を提示するために)、または第2のユーザ(すなわち、第2のユーザの姿勢に好適な方法で画像を提示するために)のいずれかの画像内で検出された身体部分に基づいて、正しく向きが設定され得る。たとえば、第2のユーザの画像が、キャプチャされ、追跡され、メモリに記憶された解剖学的データと比較され得、そこで、第2のユーザの頭、肩、腕、胴、脚、または、いずれかの他の身体部分もしくはその一部分が検出され得る。第2のヘッドマウントデバイス10bは、検出された身体部分に基づいて、仮想オブジェクトの向きを設定することができる。第2の仮想オブジェクト14bは、第1の向きで向きが設定され、表示され得る。
【００５５】
ある時間期間の後で、第2のユーザが動くことがあり、第1の向きが、異なる向きおよびそのユーザの新しいロケーションに基づいて、適切でないことがある。たとえば、画像中にある認識されたオブジェクトをもつ第2のアンカー表面16bに対応する、第2のヘッドマウントまたはボディマウントカメラ10bに対する距離および向きを含む、パラメータが計算され得る。そのような動きの後、第2の仮想オブジェクト14bのための決定された向きに対応する、画像サイズおよび向きが決定され得る。第2のヘッドマウントデバイス10bは、次いで、第2の仮想オブジェクト14bが第2のアンカー表面16bにアンカーおよび接続されるように見えるように、生成された第2の仮想オブジェクト14bを表示することができる。たとえば、検出された身体部分が利用されて、どこで第2のユーザが見ているかが決定されてもよく、第2の仮想オブジェクト14bは、どこで第2のユーザが見ているかに基づいて、正しく向きが設定され得る。
【００５６】
別の実施形態では、検出された身体部分が利用されて、第2のユーザが座っているか、立っているかが判定され得る。その判定に基づいて、第2の仮想オブジェクト14bが、第2のユーザに隣接する平坦面にアンカーされ、その上で向きが設定されるように、生成され得る。検出された身体部分に基づいて、第2のユーザが立っていると判定される場合、第2の仮想オブジェクト14bは、第2のユーザに隣接する垂直面上に生成され得る。
【００５７】
図4の例示では、アンカー表面16aは、ヘッドマウントデバイス10aによって表示された画像内に位置する壁である。第1のユーザでは、ヘッドマウントデバイス10aは、仮想オブジェクト14aを生成し、壁表面16に固定または接続され、第1のユーザにとって正しい側が上になるように向きが設定されるかのように、仮想オブジェクト14aを表示することができる。ヘッドマウントデバイス10aのプロセッサは、ヘッドマウントデバイス10aから、第1のユーザによってアンカー表面として選択された壁16までの距離および向きを含む、仮想オブジェクトをレンダリングするためのパラメータを計算することができる。ヘッドマウントデバイス10aは、インターネットなどのネットワークを介して第2のヘッドマウントデバイス10bにデータを通信するためにルータと通信するように構成された送受信機に結合される、モバイルCPUを含んでもよく、またはモバイルCPUに結合され得る。同様に、第2のヘッドマウントデバイス10bもまた、インターネット、イントラネット、ワイヤレスネットワーク、または、任意の他の適切な遠隔通信ネットワークなど、ネットワークを介してデータを送信/受信するためにネットワークと通信するための送受信機を含み得る。
【００５８】
第1のヘッドマウントデバイス10aおよび第2のヘッドマウントデバイス10bのいずれかは、共同作業セッションを開始し、インターネットなどのネットワークを介して、他のヘッドマウントデバイスに関連付けられたIPアドレスにメッセージを送ることによってなど、そのようなセッションを求める要求を他のものに送ることができる。別の実施形態では、ヘッドマウントデバイス10aは、2つのデバイス10aと10bとの間でリソースを共有するためのサービスを実行するためのプログラム命令を含むサーバを介して、第2のヘッドマウントデバイス10bと通信することができる。
【００５９】
一例として、ともにヘッドマウントデバイスを装備した第1のユーザと第2のユーザとの間の共同作業セッションは、次のように進み得る。アセットまたは仮想オブジェクトが一方のユーザによって表面に追加またはアンカーされるとき、そのユーザのヘッドマウントデバイスは、他方のユーザのヘッドマウントデバイスへ、以前に選択されたアンカー表面上にすでに表示された既存のアセットまたは仮想オブジェクトに対する方法で、新しいアセットまたはオブジェクトの好ましい配置を示すメッセージを、送信することができる。元のアンカー表面上に両方のオブジェクトのための不十分な空間がある場合、この新しいアセットまたはオブジェクトの好ましい配置が次いで、システムによって自動的に、または、ユーザ入力(たとえば、認識された動きジェスチャー)を通してユーザによって上書きされ得る。同じくまたは代替的に、ユーザの一方または両方は、新しいアセットまたは仮想オブジェクトを自分の好みの位置または表面に手動で再位置決めするために、入力またはジェスチャーを実行することができる。
【００６０】
別の実施形態では、第1のヘッドマウントデバイス10aは、第2のヘッドマウントデバイス10bへ、仮想オブジェクト14bの好ましいまたは提案された配置を指示する、メッセージを送出することができる。たとえば、第1のユーザは、仮想オブジェクト14bの好ましい配置がデスク16b上または壁上で行われるべきであることを示すことができる。たとえば、第1のヘッドマウントデバイス10aから、「壁表面が好ましい」または「デスクトップ表面が好ましい」を示すメッセージが、第2のヘッドマウントデバイス10bへ送られ得る。第2のヘッドマウントデバイス10bは、第2の仮想オブジェクト14bをディスプレイ上で生成することができる。このメッセージはまた、第2のユーザのために仮想オブジェクト14の向きを正しく設定するための、1つまたは複数のプログラム命令をも含み得る。第2のヘッドマウントデバイス10bは、デスクトップをアンカー表面16bとして選択するための入力を受信することができ、または、第1ヘッドマウントデバイス10aから、アンカー表面16が壁として選択されるというデータを受信することができる。後者の代替形態の場合、第2のヘッドマウントデバイス10b内の、または第2のヘッドマウントデバイス10bに結合されたプロセッサは、デバイス上のカメラによって取得された画像内で、同等の壁を検出することができる。プログラム命令はまた、ユーザが別のユーザから提案されたアンカー表面を受け入れまたは拒否するために、プロセッサにも通信され得る。ヘッドマウントディスプレイ10bは、提案されたアンカー表面を受け入れるため、または拒否するための、口頭の音声信号の形態の入力コマンドを、第2のユーザから受信することができる。第2のヘッドマウントデバイス10bは、第2の仮想オブジェクト14bの好ましい配置を示すメッセージを受信することができ、第2のユーザは、第2の仮想オブジェクト14bの好ましい配置を確認または拒否する入力を、第2のヘッドマウントデバイス10bに供給することができる。たとえば、第2のユーザは、第2の仮想オブジェクト14bを回転させて向きを再設定したいという希望を示す入力を供給することができる。プロセッサは、距離および向きを、第2の仮想オブジェクト14bについての入力に基づいて決定することができ、第2の仮想オブジェクト1
4bを、所望の向きで生成することができる。
【００６１】
第2のヘッドマウントデバイス10bは、仮想オブジェクト14bを、第2のロケーションにおけるデスクトップ表面16b上で表示することができる。第2のユーザは、アンカー表面16bに適合させるために仮想オブジェクト14bの向き、サイズ、および形状を変更するための入力をさらに供給することができる。仮想オブジェクト14bは、同じ仮想オブジェクト14aのように見え、共同作業が両方のユーザ間で行われ得る。一方のユーザによって一方のロケーションで行われた変更は、第1のロケーションと第2のロケーションの両方を更新することができ、両方で表示され得、すなわち、一方のロケーションにおける仮想オブジェクト14aへの変更は、他方のロケーションに表示された仮想オブジェクト14bに反映されるようになる。たとえば、第2のユーザは、仮想オブジェクト14b上で棒グラフを削除することができ、仮想オブジェクト14a上の同じ棒グラフもまた、第1のロケーションで削除され得る。
【００６２】
さらに別の実施形態では、第3のヘッドマウントデバイスを装着する第3のユーザが、共同作業に加入し、第3のユーザによって選択されたか、または、第1のユーザもしくは第2のユーザのいずれかによって提案された表面上で、表示された仮想オブジェクトをアンカーすることができる。また、前述のように、共同作業に関わるヘッドマウントデバイスのうちの1つまたは複数によって生成された画像データが、非参加者によって使用される他のヘッドマウントデバイス、または、スマートフォンもしくはタブレットなど、他のコンピューティングデバイスへ送信され、そこで表示され得る。この実施形態は、他者が仮想または拡張現実体験において共同作業を見ることを可能にする。ヘッドマウントデバイスを装着し、または、スマートフォンもしくはタブレットコンピュータなど、別のモバイルデバイスを使用して、共同作業セッションを見る他者は、仮想オブジェクトおよびそれらとのユーザ対話を見るだけでなく、ヘッドマウントデバイスユーザのうちの1人によって見られる仮想拡張を用いた、制限された対話機能を有することができる。この制限された対話は、拡張に接触して効果を引き起こすこと、対話型エリアまたはアンカーポイントを物理的表面上で定義すること(新しい拡張を共有された体験に効果的に追加すること)、ならびに、ジェスチャーおよび/または音声入力を介して、共有された複合現実シーンと対話することを含み得る。仮想体験におけるそのような変更のいずれも、他のユーザによって装着されたヘッドマウントディスプレイに反映され得る。
【００６３】
一実施形態では、第2のヘッドマウントデバイス10bを装着する第2のユーザは、新しい仮想オブジェクトを個人データ空間(たとえば、クラウドまたはモバイルデバイス)から呼び出すための入力を供給し、新しい仮想オブジェクトを共有ディスプレイに追加して、第1のユーザもまた新しい仮想オブジェクトを第1のヘッドマウントデバイス10aで見るようにすることができる。一実施形態では、第1のヘッドマウントデバイス10aは、第3の仮想オブジェクトが存在することをユーザに通知し、第3の仮想オブジェクトを受け入れて表示するためのユーザ入力またはコマンドを要求する、プロンプトを受信することができる。ユーザは、新しい仮想オブジェクトをアンカーするための新しい物理的表面を選択することができ、または、第2のユーザによって選択されたアンカー表面を受け入れることができる。
【００６４】
一実施形態では、ヘッドマウントデバイス10a内の、またはヘッドマウントデバイス10aに結合されたプロセッサは、仮想オブジェクト14のためのスタンバイロケーションを示す入力を受信することができる。スタンバイロケーションは、仮想オブジェクト14の初期状態が実世界表面にアンカーまたは固定されないものとして表示され得る、ロケーションであってもよい。スタンバイロケーションは、実世界オブジェクトに接続されていないディスプレイ上で仮想オブジェクト14が「自由に浮いている」、ロケーションであってもよい。代替として、スタンバイロケーションは、画像中にある異なるアンカー表面16、たとえば、天井、または、ユーザにとって繰り返され、なじみのあるロケーションであり得る。スタンバイロケーションは、ユーザが仮想オブジェクト14をアンカー表面にアンカーするためにさらなるアクションを取るまで、オブジェクトが「記憶」され得る、場所または表面であってもよい。ヘッドマウントデバイス10a内の、またはヘッドマウントデバイス10aに結合されたプロセッサは、スタンバイロケーションに対応する、ヘッドマウントまたはボディマウントカメラに対する距離および向きを含む、パラメータを計算することができ、プロセッサは、スタンバイロケーションのために適切なパースペクティブで仮想オブジェクト14を表示することができる。スタンバイロケーションは、自由に浮くように表示されてもよく、ユーザが自分の頭を回し、室内を動き回るとき、可動となり、画像内の表面に接続されていないように見えてもよい。
【００６５】
一実施形態では、ヘッドマウントデバイス10a内の、またはヘッドマウントデバイス10aに結合されたプロセッサは、フルカラービデオカメラであり得る1つまたは複数のヘッドマウントまたはボディマウントカメラを用いて、画像をキャプチャすることができる。撮像されたシーン内のオブジェクトまでの距離は、ステレオカメラアセンブリを介して取得された2つ(以上)の画像の三角法による処理を介して、決定され得る。代替的にまたは追加として、ヘッドマウントデバイスは、デバイスから画像内のオブジェクトおよび表面までの距離を測定する距離センサを使用して、空間データ(すなわち、画像内のオブジェクトまでの距離)を取得することができる。一実施形態では、距離センサは、赤外光放出器(たとえば、レーザーまたはダイオード)および赤外線センサであってもよい。この実施形態では、ヘッドマウントデバイスは、赤外光を、デバイスのカメラの視界内のオブジェクトから反射するパルスまたは構造化光パターンとして投影することができる。反射された赤外線レーザー光が、センサで受信され得、空間データが、放出された光と受信された光との間で測定された時間または位相シフトに基づいて計算され得る。別の実施形態では、距離センサは、超音波放出器および受信機であってもよい。この実施形態では、ヘッドマウントデバイスは、超音波パルスを放出することができ、超音波パルスは、デバイスのカメラの視界内のオブジェクトから反射する。超音波受信機は、反射された超音波を検知し、音響放射と、受信された、反射された超音波との間で測定された時間に基づいて、空間データを計算する。第3の実施形態では、オブジェクトまでの距離は、ビデオストリーム内の後続の画像内の角度の変化をユーザの頭の動きとして測定すること、および、三角法による解析を画像のシーケンスに適用することによって、推定され得る。動きおよび/または相対位置センサをヘッドマウントデバイスに含めることによって、視角の変化をカメラ位置の変化と相関させることができ、そこから、三角法によるアルゴリズムを使用して、オブジェクト/表面距離およびロケーションが計算され得る。これらの距離測定方法のいかなる組合せも、ヘッドマウントデバイスによって取得される距離測定値をさらに改善するために組み合わせることができる。
【００６６】
一実施形態では、ヘッドマウントデバイス10内の、またはヘッドマウントデバイス10に結合されたプロセッサは、空間データをメモリに記憶することができ、キャプチャされたビデオと測定または計算された空間データとに基づいて、デバイスの近傍内のオブジェクトおよび表面の3次元マップを構築することができる。この3次元マップは、近傍内の、もしくはネットワークを介して接続された他のヘッドマウントデバイスと共有され、および/またはサーバにアップロードされ得る。そのような3次元マップデータを共有することは、他のヘッドマウントデバイス10b(または、より詳細には、他のヘッドマウントデバイス内の、もしくは他のヘッドマウントデバイスに結合されたプロセッサ)が、部屋を撮像および処理する必要なしに、指定されたアンカー表面にアンカーされた仮想オブジェクトをレンダリングすることを、支援することができる。そのような3次元マップデータの共有はまた、複数のヘッドマウントデバイスが複数のユーザの近傍のマップ全体を共同作業的に作成し、同じ環境を複数回走査する必要を回避する(すなわち、3次元マップは一度生成されるだけでよい)ことによって、いずれか1つのヘッドマウントデバイスに課せられる作業負荷を低減することを、可能にすることもできる。さらなる適用例では、第1のユーザの近傍のオブジェクトの3次元マップなど、画像および空間データの共有は、他のユーザが遠く離れて位置するときでも、第1のユーザと同じ画像を見ることを可能にすることができる。たとえば、第2のデバイスは、キャプチャされた空間データに対応するデータが送信され得るマップを利用して、第2のヘッドマウントデバイスを装着する別のユーザが第1のユーザと同じ方法で仮想オブジェクト14を表示できるようにすることができる。
【００６７】
上記で説明したように、ヘッドマウントデバイス10aまたは10bに関連付けられたディスプレイは、部分透明であってもよく、または、ユーザの視野の全部または一部分を実質的にふさいでもよい。別の実施形態では、ヘッドマウントデバイス10aのディスプレイは、ユーザの片目が妨害されずに部屋を見ることができるように、単眼ディスプレイの形態などで、ユーザの視覚の一部分のみをふさぐように、片目のみの上に位置決めされてもよい。別の実施形態では、ヘッドマウントデバイス10aまたは10bは、仮想オブジェクト14aまたは14bのコンテンツをコンピューティングデバイスディスプレイに出力して、ヘッドマウントまたはボディマウントカメラによって取得された画像および任意の仮想オブジェクトが従来のコンピュータディスプレイ上で一緒に見られるようにすることができる。
【００６８】
上述のように、ヘッドマウントディスプレイは、画像を表面上に投影するプロジェクタで、または、開発され得る他の画像生成技術で置き換えられてもよい。そのような実施形態では、ユーザの操作および体験は、上記で説明したようにヘッドマウントディスプレイを使用したものと同様であり得る。
【００６９】
図5Aは、ヘッドマウントデバイス10の実施形態に含まれ得る構成要素を示す。図5Bは、ヘッドマウントデバイス10がシステムの一部として動作することができる方法を示し、このシステムでは、センサアレイ500がモバイルプロセッサ507にデータを供給することができ、モバイルプロセッサ507は、本明細書で説明する様々な実施形態の動作を実行し、データをサーバ564に通信し、データをサーバ564から受信する。ヘッドマウントデバイス10のプロセッサ507は、2つ以上のプロセッサ(もしくは、マルチコアプロセッサ)を含んでもよく、コアプロセッサは、全体的な制御機能を実行することができるが、コプロセッサは、アプリケーションを実行し、アプリケーションプロセッサと呼ばれることがあることに留意されたい。コアプロセッサおよびアプリケーションプロセッサは、マルチコアプロセッサなど、同じマイクロチップパッケージ内、または別個のチップ内に構成されてもよい。また、プロセッサ507は、ワイヤレス通信(すなわち、モデムプロセッサ)、ナビゲーション(たとえば、GPS受信機内のプロセッサ)、およびグラフィックス処理(たとえば、グラフィックスプロセッシングユニット、すなわち「GPU」)など、他の機能に関連付けられたプロセッサとともに、同じマイクロチップパッケージ内パッケージ化されてもよい。
【００７０】
ヘッドマウントデバイス10は、インターネットへのアクセスをもつパーソナルコンピュータおよびモバイルデバイスなど、他のコンピューティングデバイスを含み得る、通信システムまたはネットワークと通信することができる。そのようなパーソナルコンピュータおよびモバイルデバイスは、アンテナ551と、送信機/受信機または送受信機552と、プロセッサがワイヤレス通信ネットワークを介してデータを送り、受信することを可能にするために、プロセッサ507に結合されたアナログデジタル変換器553とを含み得る。たとえば、セルラー電話などのモバイルデバイスは、ワイヤレス通信ネットワーク(たとえば、Wi-Fiまたはセルラー電話データ通信ネットワーク)を介して、インターネットにアクセスすることができる。そのようなワイヤレス通信ネットワークは、インターネットに結合されたゲートウェイまたはインターネットアクセスサーバに結合された、複数の基地局を含み得る。パーソナルコンピュータは、インターネットゲートウェイ(図示せず)を介したワイヤード接続によって、または、ワイヤレス通信ネットワークによってなど、いずれかの従来の方法でインターネットに結合され得る。
【００７１】
図5Aを参照すると、ヘッドマウントデバイス10は、いくつかのソフトウェアモジュール510〜550で構成され得る制御システムプロセッサ507に結合された、シーンセンサ500と音声センサ505とを含み得る。一実施形態では、プロセッサ507またはシーンセンサ500は、解剖学的特徴認識アルゴリズムを画像に適用して、1つまたは複数の解剖学的特徴を検出することができる。制御システムに関連付けられたプロセッサ507は、1つまたは複数のジェスチャーを認識し、認識されたジェスチャーを入力コマンドとして処理するために、検出された解剖学的特徴をレビューすることができる。たとえば、以下でより詳細に説明するように、ユーザは、仮想オブジェクトを閉じるために、仮想オブジェクトを指さすなど、入力コマンドに対応する動きジェスチャーを実行することができる。この例示的なジェスチャーを認識することに応答して、プロセッサ507は、仮想オブジェクトをディスプレイから除去することができる。別の例として、ユーザは、ディスプレイ上に提示された命令またはオプションを確認するために、片手で人差し指を親指に触れるようにして、「OK」サインを作ることができる。
【００７２】
ステレオカメラと、向きセンサ(たとえば、加速度計および電子コンパス)と、距離センサとを含み得るシーンセンサ500は、3次元シーン情報を解釈するように構成され得る、プロセッサ507内に実装されたシーンマネージャ510に、シーンに関係するデータ(たとえば、画像)を供給することができる。様々な実施形態では、シーンセンサ500は、(後述のような)ステレオカメラと、距離センサとを含んでもよく、距離センサは、赤外線カメラのためにシーンを明るくするための赤外光放出器を含み得る。たとえば、図5Aに示す一実施形態では、シーンセンサ500は、ステレオ画像を収集するためのステレオred-green-blue(RGB)カメラ503aと、構造化赤外光放出器503cによって供給され得る赤外光においてシーンを撮像するように構成された赤外線カメラ503bとを含み得る。以下で説明するように、構造化赤外光放出器は、赤外線カメラ503bによって撮像され得る赤外光のパルスを放出するように構成されてもよく、受信されたピクセルの時間が記録され、飛行時間型計算を使用して画像要素までの距離を決定するために使用される。総称して、ステレオRGBカメラ503a、赤外線カメラ503b、および赤外線放出器503cは、RGB-D(Dは距離を表す)カメラ503と呼ばれることがある。
【００７３】
シーンマネージャモジュール510は、ステレオカメラからの距離と、表面向き情報とを含む、画像内のオブジェクトの3次元再構成を生じるために、シーンセンサ500によって供給された距離測定値および画像を走査することができる。一実施形態では、シーンセンサ500、および、より詳細にはRGB-Dカメラ503は、ユーザおよびヘッドマウントデバイス10の視界に整合された方向を指すことができる。シーンセンサ500は、全身3次元モーションキャプチャおよびジェスチャー認識を実現することができる。シーンセンサ500は、単色CMOSセンサなど、赤外線カメラ503bと組み合わされた赤外光放出器503cを有し得る。シーンセンサ500は、3次元ビデオデータをキャプチャするステレオカメラ503aをさらに含み得る。シーンセンサ500は、周囲光、日光、または完全な暗闇で動作することができ、本明細書で説明するRGB-Dカメラを含み得る。シーンセンサ500は、近赤外(NIR)パルス照明構成要素、ならびに、高速ゲーティング機構をもつ画像センサを含み得る。パルス信号は、ピクセルごとに収集され、そこからパルスが反射されたロケーションに対応し得るものであり、キャプチャされた被写体上の対応する点までの距離を計算するために使用され得る。
【００７４】
別の実施形態では、シーンセンサ500は、他の距離測定技術(すなわち、異なるタイプの距離センサ)を使用して、画像内のオブジェクトの距離をキャプチャすることができ、たとえば、超音波エコーロケーション、レーダー、立体画像の三角測量などである。上記で説明したように、一実施形態では、シーンセンサ500は、測距カメラ、フラッシュLIDARカメラ、飛行時間型(ToF)カメラ、および/またはRGB-Dカメラ503を含んでもよく、これらのカメラは、レンジゲートToF検知、RF変調ToF検知、パルス光ToF検知、および投影光ステレオ検知のうちの少なくとも1つを使用して、オブジェクトまでの距離を決定することができる。別の実施形態では、シーンセンサ500は、ステレオカメラ503aを使用して、シーンのステレオ画像をキャプチャし、画像内に含まれているキャプチャされたピクセルの輝度に基づいて、距離を決定することができる。上述のように、一貫性のために、これらのタイプの距離測定センサおよび技法のいずれか1つまたはすべてを、本明細書では概して「距離センサ」と呼ぶ。異なる能力および分解能の複数のシーンセンサが、物理的環境のマップ作成、および、環境内のユーザの位置の正確な追跡を助けるために存在してもよい。
【００７５】
ヘッドマウントデバイス10はまた、マイクロフォンまたはマイクロフォンアレイなど、音声センサ505をも含み得る。音声センサ505は、ヘッドマウントデバイス10が音声を記録し、音響源の位置特定および周囲雑音抑圧を実施することを可能にする。音声センサ505は、音声をキャプチャし、音声信号を音声デジタルデータに変換することができる。制御システムに関連付けられたプロセッサは、音声デジタルデータをレビューし、音声認識アルゴリズムを適用して、そのデータを検索可能なテキストデータに変換することができる。プロセッサはまた、ある認識されたコマンドまたはキーワードについて生成されたテキストデータをレビューし、認識されたコマンドまたはキーワードを入力コマンドとして使用して、1つまたは複数のタスクを実行することもできる。たとえば、ユーザは、「仮想オブジェクトをアンカーする」などのコマンドを話して、表示された仮想オブジェクトを選択された表面上にアンカーすることができる。たとえば、ユーザは、「アプリケーションを閉じる」と話して、ディスプレイ上に表示されたアプリケーションを閉じることができる。
【００７６】
ヘッドマウントデバイス10はまた、ディスプレイ540をも含み得る。ディスプレイ540は、シーンセンサ500内のカメラによって取得されたか、または、ヘッドマウントデバイス10内の、もしくはヘッドマウントデバイス10に結合されたプロセッサによって生成された画像を表示することができる。一実施形態では、ディスプレイ540は、マイクロディスプレイであってもよい。ディスプレイ540は、完全にふさがれたディスプレイであってもよい。別の実施形態では、ディスプレイ540は、ユーザがそれを見通して周囲の部屋を見ることができる画面上に画像を表示することができる、半透明のディスプレイであってもよい。ディスプレイ540は、単眼またはステレオ(すなわち、双眼)構成で構成され得る。代替として、ヘッドマウントデバイス10は、頭に装着されたヘルメットマウントディスプレイデバイス、またはヘルメットの一部であってもよく、片目の前(単眼)または両目の前(すなわち、双眼もしくはステレオディスプレイ)に小型ディスプレイ540光学素子を有してもよい。代替として、ヘッドマウントデバイス10はまた、2つのディスプレイユニット540を含んでもよく、ディスプレイユニット540は、小型であり、陰極線管(CRT)ディスプレイ、液晶ディスプレイ(LCD)、液晶オンシリコン(LCos)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、単純な微小電気機械システム(MEMS)デバイスである干渉変調器(IMOD)素子に基づいたミラソルディスプレイ、導光ディスプレイおよび導波ディスプレイ、ならびに、存在している他のディスプレイ技術および開発され得る他のディスプレイ技術のうちのいずれか1つまたは複数であってもよい。別の実施形態では、ディスプレイ540は、全体の総合分解能を高め、視界を拡大するために、複数のマイクロディスプレイ540を備え得る。
【００７７】
ヘッドマウントデバイス10はまた、音声出力デバイス550を含んでもよく、音声出力デバイス550は、音声を出力するための、まとめて参照番号550として示されるヘッドフォンおよび/またはスピーカーであってもよい。ヘッドマウントデバイス10はまた、制御機能をヘッドマウントデバイス10に提供し、ならびに、仮想オブジェクト14などの画像を生成することができる、1つまたは複数のプロセッサをも含み得る。たとえば、デバイス10は、コアプロセッサ、アプリケーションプロセッサ、グラフィックスプロセッサ、およびナビゲーションプロセッサを含み得る。代替として、ヘッドマウントデバイス10は、スマートフォンまたは他のモバイルコンピューティングデバイスにおけるプロセッサなど、別個のプロセッサに結合され得る。ビデオ/音声出力は、プロセッサによって、または、ヘッドマウントデバイス10に(ワイヤもしくはワイヤレスネットワークを介して)接続されるモバイルCPUによって処理され得る。ヘッドマウントデバイス10はまた、シーンマネージャブロック510と、ユーザ制御ブロック515と、表面マネージャブロック520と、音声マネージャブロック525と、情報アクセスブロック530とを含んでもよく、これらのブロックは、個別の回路モジュールであってもよく、または、プロセッサ内でソフトウェアモジュールとして実装されてもよい。ヘッドマウントデバイス10は、ローカルメモリと、リモートメモリ555からデジタルデータを受信するために、他のデバイスまたはローカルのワイヤレスもしくはワイヤードネットワークと通信するための、ワイヤレスまたはワイヤードインターフェースとをさらに含み得る。システム内でリモートメモリ555を使用することで、デバイス内のメモリチップおよび回路基板を減らすことによって、ヘッドマウントデバイス10がより軽量になり得るようにすることができる。
【００７８】
コントローラのシーンマネージャブロック510は、シーンセンサ500からデータを受信し、物理的環境の仮想表現を構築することができる。たとえば、レーザーを使用して、室内のオブジェクトから反射され、カメラにおいてキャプチャされるレーザー光を放出することができ、光の往復時間が、室内の様々なオブジェクトおよび表面までの距離を計算するために使用される。そのような距離測定値を使用して、室内のオブジェクトのロケーション、サイズ、および形状を決定し、シーンのマップを生成することができる。マップが編成されると、シーンマネージャブロック510は、そのマップを他の生成されたマップにリンクして、所定のエリアのより大きいマップを形成することができる。一実施形態では、シーンおよび距離データが、サーバまたは他のコンピューティングデバイスに送信されてもよく、サーバまたは他のコンピューティングデバイスは、いくつかのヘッドマウントデバイスから(および、ユーザがシーン内で動き回った時間とともに)受信された画像、距離、およびマップデータに基づいて、融合または統合されたマップを生成することができる。そのような統合マップデータは、ヘッドマウントデバイスプロセッサへのワイヤレスデータリンクを介して利用可能にされる。他のマップは、インスタントデバイスによって、もしくは他のヘッドマウントデバイスによって走査されたマップであってもよく、または、クラウドサービスから受信されてもよい。シーンマネージャ510は、シーンセンサ500からのデータに基づいて、表面を識別し、ユーザの現在位置を追跡することができる。ユーザ制御ブロック515は、システムへのユーザ制御入力を収集することができ、たとえば、音声コマンド、ジェスチャー、および入力デバイス(たとえば、キーボード、マウス)である。一実施形態では、ユーザ制御ブロック515は、シーンマネージャ510によって識別されたユーザ身体部分の動きを解釈するために、ジェスチャー辞書を含み、またはジェスチャー辞書にアクセスするように構成され得る。上述のように、ジェスチャー辞書は、突くこと、軽くたたくこと、タップ、押すこと、案内、フリック、ターン、回転、つかんで引くこと、画像をパンするために両手のひらを開くこと、描画(たとえば、フィンガーペインティング)、指で形状を作ること(たとえば、「OK」サイン)、およびスワイプを含み得る、ジェスチャーを認識するための動きデータまたはパターンを記憶することができ、それらのジェスチャーのすべては、生成された表示内の仮想オブジェクトの見かけのロケーションで、または見かけのロケーションにごく接近して達成され得る。ユーザ制御ブロック515はまた、複合コマンドを認識することもできる。これには、2つ以上のコマンドが含まれ得る。たとえば、ジェスチャーおよびサウンド(たとえば、拍手)またはボイス制御コマンド(たとえば、行われ、ボイスコマンドまたは口頭の言葉と組み合わされた、検出された手のジェスチャーを「OK」して、操作を確認する)である。ユーザ制御515が識別されるとき、コントローラは、デバイス10の別の下位構成要素に要求を与えることができる。
【００７９】
ヘッドマウントデバイス10はまた、表面マネージャブロック520をも含み得る。表面マネージャブロック520は、(シーンマネージャブロック510によって管理されるような)キャプチャされた画像と、距離センサからの測定値とに基づいて、シーン内の表面の位置を連続的に追跡することができる。表面マネージャブロック520はまた、キャプチャされた画像内の表面上にアンカーされる仮想オブジェクトの位置を連続的に更新することもできる。表面マネージャブロック520は、アクティブな表面およびウィンドウを担当することができる。音声マネージャブロック525は、音声入力および音声出力のための制御命令を与えることができる。音声マネージャブロック525は、ヘッドフォンおよびスピーカー550に送出される音声ストリームを構築することができる。
【００８０】
情報アクセスブロック530は、デジタル情報へのアクセスを仲介するための制御命令を与えることができる。データは、ヘッドマウントデバイス10上のローカルメモリ記憶媒体上に記憶され得る。データはまた、アクセス可能なデジタルデバイス上のリモートデータ記憶媒体555上に記憶されてもよく、または、データは、ヘッドマウントデバイス10によってアクセス可能である分散クラウド記憶メモリ上に記憶されてもよい。情報アクセスブロック530は、データストア555と通信し、データストア555は、メモリ、ディスク、リモートメモリ、クラウドコンピューティングリソース、または内蔵メモリ555であってもよい。
【００８１】
図6は、ユーザ入力に基づいて、アンカーされる表面上に仮想オブジェクトをレンダリングするための、一実施形態の方法600を示す。方法600は、方法600の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法600において、ブロック601で、プロセッサは、ヘッドマウントデバイスの向きに関して、ヘッドマウントデバイスセンサからデータを受信すると、開始することができる。ブロック602で、プロセッサは、ヘッドマウントデバイス上、または、ユーザの肩もしくは身体上のステレオカメラから、データを受信することができる。ブロック603で、プロセッサは、受信されたステレオ画像内のオブジェクトの距離および向きデータを計算することができる。ブロック604で、プロセッサは、距離および向きセンサ、ならびにカメラからのデータを使用して、表示のためのコンテンツを処理することができる。
【００８２】
判定ブロック605で、プロセッサは、ユーザ入力またはジェスチャーコマンドをレビューして、仮想オブジェクトを画像内でアンカーするかどうかを判定することができる。たとえば、キーパッドまたはタッチスクリーン入力など、ユーザ入力が入力デバイスから受信され得る。別の例として、ユーザ入力は、画像内に位置する、指示された表面上に、仮想オブジェクトをアンカーしたいという希望を示すジェスチャーなど、画像のシーケンス中で認識された、検出されたジェスチャーの形態で受信され得る。ユーザ入力の第3の例は、ヘッドマウントデバイス上のマイクロフォンによって受信され得る音声コマンドであり得る。ユーザ入力は、仮想オブジェクトを特定のロケーションにアンカーするための入力が、第2のユーザのヘッドマウントデバイスから受信されるべきであることを示す、コマンドであり得る。たとえば、入力は、共同作業セッション中に、第2のヘッドマウントデバイス10bから受信され得る。
【００８３】
プロセッサが、仮想オブジェクトを特定のロケーション(たとえば、アンカー表面16)にアンカーするための入力を受信していると判定する場合(すなわち、判定ブロック605=「Yes」)、ブロック606で、プロセッサは、ユーザの位置からの、アンカー表面に対する仮想オブジェクトの距離および向きを決定することができる。たとえば、ヘッドマウントデバイス10は、アンカー表面16が輪郭とユーザからのある距離とを含むと決定することができる。一般に、仮想オブジェクト14は、プロセッサがオブジェクトの画像を生成するために使用することができる、3次元数学的モデル(たとえば、球、円錐、円柱など)、3次元データセット(たとえば、頂点、次元、ならびに、他の座標および材料データを定義するデータテーブル)、または両方の組合せの形態などの、3次元仮想オブジェクトであり得る。プロセッサが、アンカー表面16上に接続された仮想オブジェクト14を表示できるようにするために、仮想オブジェクト14は、仮想オブジェクトをアンカー表面16上に重ね合わせるためのサイズ、閲覧パースペクティブ、および向きに調整され得る。たとえば、3次元仮想オブジェクトは、従来のディスプレイ上に提示されるために2次元画像として、または、ヘッドマウントデバイス上の3Dディスプレイ上に提示されるために2つのわずかに異なる2次元画像として、レンダリングされることが必要となる。
【００８４】
ブロック607で、プロセッサは、仮想オブジェクトを仮想空間に、アンカーされる表面に接続されるように見えるようにするパースペクティブ、向き、およびサイズで配置するために、仮想オブジェクトを処理することができる。ブロック608で、プロセッサは、仮想オブジェクトをヘッドマウントデバイスディスプレイ上にレンダリングすることができる。
【００８５】
たとえば、ディスプレイは、画像のある特徴がディスプレイを通して可視である、半透明ディスプレイであり得る。仮想オブジェクト14は、ディスプレイ上の画像の特徴に重ね合わせられ、または追加され、ユーザが動くとき、仮想オブジェクト14が所望のアンカーされる表面にアンカーまたは固定されたままであるようにすることができる。代替として、仮想オブジェクト14aは、自由空間にアンカーされ得る。たとえば、仮想オブジェクト14aは、窓の外側に位置してもよく、または、仮想オブジェクト14aは、空中もしくは地上のある距離で浮遊させられてもよい。
【００８６】
プロセッサが、仮想オブジェクトをアンカーするための入力を受信していないと判定する場合(すなわち、判定ブロック605=「No」)、ユーザの準備ができてないか、または、ユーザが仮想オブジェクトをアンカー表面にアンカーすることを望まないことを示すことがあり、プロセッサは、仮想オブジェクトをスタンバイロケーションにレンダリングすることができる。代替として、ブロック609で、ユーザは、仮想オブジェクト14をレンダリングしないように選択することができる。
【００８７】
仮想オブジェクトを、アンカー表面上など、シーン内にレンダリングするプロセスを連続的に実行して、ユーザが自分の頭を回し、動き回るときでも、仮想オブジェクトが静止して見えるようにすることができる。上述のように、ヘッドマウントデバイスの向きを周囲に対して設定し、様々な表面までの距離、および、様々な表面の相対的な向きを決定するプロセスは、向きセンサ(たとえば、加速度計およびジャイロスコープ)を監視すること、ならびに、走査された3次元(3D)環境のトポグラフィにおける変化を常に参照し、したがって、同時位置特定およびマップ作成(SLAM)動作を実行することによって、デバイスが空間内で動くとき、それ自体の位置および画角を三角測量することによって、連続的に達成することができる。
【００８８】
図7Aは、アンカーされた仮想オブジェクトとともに画像をレンダリングするための、一実施形態の方法700を示す。方法700は、方法700の動作を実行するためのプロセッサ実行可能命令をもつプロセッサを有する、コンピューティングデバイス内で実施され得る。方法700において、仮想オブジェクト14は、ユーザの位置が部屋などのエリアを通って動くとき、アンカーされ得る。たとえば、ユーザは、室内で歩き回り、動き回ることがあるが、室内の表面上の仮想オブジェクトの表示されたロケーションは、固定されたままであり得る。方法700において、ブロック701で、プロセッサは、ユーザのロケーションの座標、室内のユーザの位置(たとえば、様々な表面からの距離)に関係する情報、およびユーザの頭の向きに関係する情報など、ユーザ位置データを受信することによって、動作を開始することができる。ブロック701で受信された位置データは、距離センサ(たとえば、高速ゲーティング機構を用いて、ユーザの閲覧パースペクティブ内で表面に当たって跳ね返る、放出された赤外線信号の往復時間を計算するように構成された、赤外線放出器/受信機)を含む、様々な範囲のセンサデータから計算され得る。代替または追加として、位置データは、GPS受信機ユニット(地理的座標を返すことができる)、既知のロケーション(たとえば、セルラー電話塔)における送信機からのRF信号の三角測量、第2のヘッドマウントデバイスから受信された入力(たとえば、2人のユーザの相対位置に関する分離距離および/または情報を提供する)などによって供給され得る。位置データはまた、シーン画像および距離センサデータに基づいて計算され、または、クラウドコンピューティング構成におけるサーバからダウンロードされ得る。代替的にまたは追加として、ユーザは、物理的な住所および/もしくは部屋番号を入力すること、または、マップディスプレイ上に触れるか、もしくはクリックして、ユーザの位置をマップ上で示すことによってなど、ユーザのロケーションの座標を入力することができる。ブロック702で、プロセッサは、受信されたカメラ画像内のオブジェクトの距離および向きデータを計算することができる。ブロック703で、プロセッサは、アンカーされた仮想オブジェクトに対するユーザの位置を計算することができる。
【００８９】
図5Aのシーンセンサ500は、近赤外(NIR)パルス照明構成要素を採用することができる。シーンセンサ500はまた、高速ゲーティング機構をもつ画像センサを有してもよい。他の画像センサもまた、本明細書で説明するシーンセンサ500内で実装され得る。赤外パルスの既知の速度、座標、センサ500のゲーティングを用いた照明器からの赤外パルス波放出のタイミングに基づいて、所望の距離範囲内から反射された信号がキャプチャされる。この実施形態では、赤外パルスの到着時間が、ピクセルごとに収集され、センサから画像内の各点までの距離を計算するために使用され得る。そのような画像の処理は、コンピュータネットワークを介してシーンセンサ500に接続される、リモートプロセッサを使用して実行され得る。方法700は、ヘッドマウントディスプレイ上で実施されることに限定されず、ヘッドマウントディスプレイまたはボディマウントセンサと通信している、モバイル通信デバイス(たとえば、スマートフォン)または固定されたコンピューティングデバイス(たとえば、パーソナルコンピュータもしくはサーバ)など、別のコンピューティングデバイスとともに使用され得る。
【００９０】
判定ブロック704で、プロセッサは、ユーザまたはアンカー表面の位置が変化しているかどうかを判定することができる。たとえば、ユーザは、壁などの表面上、または自由空間内で画像をアンカーすることがあり、ユーザは、別のユーザとの共同作業中に壁から離れるように歩き、したがって、位置を変更することがある。位置が変化している場合(すなわち、判定ブロック704=「Yes」)、ユーザがアンカーされた仮想オブジェクトから離れるように動いているか、またはアンカー表面が動いていることを示し、ブロック705で、プロセッサは、新しい位置に基づいて、アンカーされた仮想オブジェクトの変化を決定および計算することができる。ブロック706で、プロセッサは、画像を、アンカーされた仮想オブジェクトとともにヘッドマウントディスプレイ上にレンダリングすることができる。プロセッサが、仮想オブジェクトが動いていないと判定する場合(すなわち、判定ブロック704=「No」)、アンカーされた仮想オブジェクトはそのままレンダリングされ得る。ブロック706で、プロセッサは、ヘッドマウントディスプレイ上の現在位置について、画像内で仮想オブジェクトをレンダリングすることができる。
【００９１】
図7Bは、仮想オブジェクトをアンカー表面間で移動させるための一実施形態の方法720を示す。方法720は、方法720の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。仮想オブジェクトを第1のアンカー表面上にアンカーする、第1の入力が供給され得る。後で、プロセッサは、仮想オブジェクトを第2の異なるアンカー表面上にアンカーするための第2の入力を受信することができる。方法720において、ブロック707で、プロセッサは、画像をキャプチャすることによって、動作を開始することができる。ブロック708で、プロセッサは、空間データをキャプチャし、画像内のオブジェクトを認識することができる。ブロック709で、プロセッサは、画像内のオブジェクトの距離パラメータを決定することができる。ブロック710で、プロセッサは、画像内のアンカー表面を示す入力を受信することができる。
【００９２】
たとえば、プロセッサは、入力デバイスから入力を受信することができ、または、ジェスチャー入力を検出することができ、または、画像内で仮想オブジェクト14をアンカーするためのボイスコマンドを受信することができる。ブロック711で、プロセッサは、オブジェクトモデルおよび/またはオブジェクト画像データセットを使用することによってなど、表示される仮想オブジェクト14を生成することができる。ブロック712で、プロセッサは、アンカー表面に対応する距離および向きを含む、パラメータを計算することができ、それらのパラメータに整合する仮想オブジェクトの画像を、閲覧者のパースペクティブと一致するように調整することができる。ブロック713で、プロセッサは、仮想オブジェクトがアンカー表面に接続されるように見えるように、仮想オブジェクトをヘッドマウントディスプレイ上に表示することができる。
【００９３】
ユーザは、他のユーザとの共同作業的なプロセスの選好またはニーズのために、アンカー表面を変更することを選択することがある。様々な実施形態は、各ユーザが、その上で仮想オブジェクト14を見るための同じまたは異なるアンカー表面を選択できるようにする。そのため、判定ブロック714で、プロセッサは、ユーザ入力(たとえば、ボタン、認識された動きジェスチャー、および/または口頭のコマンド)を監視し、仮想オブジェクト14のための第2の異なるアンカー表面を示す第2の入力が受信されるかどうかを判定することができる。第2の入力が受信されない場合(すなわち、判定ブロック714=「No」)、プロセッサは、ブロック711に戻り、第1のアンカー表面に接続された画像内の仮想オブジェクトの生成を継続することができる。
【００９４】
第2の入力が受信される場合(すなわち、判定ブロック714=「Yes」)、ブロック715で、プロセッサは、新しいアンカー表面を示す1つまたは複数の入力を検出することができる。新しいアンカー表面が示されるとき、プロセッサは、ブロック715で選択された新しいアンカー表面に対応する距離および向きを含むパラメータを計算することができ、ブロック716で、プロセッサは、仮想オブジェクト14が第1のアンカー表面から第2の新しいアンカー表面へ移動されるように見えるように、ヘッドマウントディスプレイ上に提示された画像を生成することができる。ブロック717で、プロセッサは、ユーザの位置、および、したがって閲覧パースペクティブの変化に対応するように、仮想オブジェクトの画像を修正することができる。たとえば、ユーザがより近くへ歩く場合、仮想オブジェクト画像サイズは増大し得る。ユーザが仮想オブジェクトからある距離だけ離れるように歩く場合、仮想オブジェクトの画像サイズは低減し得る。ブロック717で、ユーザの閲覧パースペクティブにおける変化に適合するように仮想オブジェクトの画像を修正し、ならびに、判定ブロック714でユーザ入力を監視するプロセスは、共同作業セッション全体を通して連続的なプロセスにおいて実行され続け得る。
【００９５】
図8Aは、たとえば、部屋などのエリア内で、2人のユーザのためのアンカーされた仮想オブジェクトとともに画像をレンダリングするための、一実施形態の方法800を示す。この実施形態では、表示された、アンカーされた仮想オブジェクト14は、選択されたアンカー表面にアンカーされたままである。方法800は、方法800の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。
【００９６】
方法800において、ブロック801で、プロセッサは、距離センサからのデータ、カメラデータ、および計算された距離データを使用して、画像を処理することによって、動作を開始することができる。ブロック802で、プロセッサは、パラメータを計算することができ、仮想オブジェクトをアンカー表面に固定し、ヘッドマウントディスプレイ上に提示される画像内で仮想オブジェクトを固定することができる。ブロック803で、プロセッサは、仮想オブジェクトとともに表示するために画像をレンダリングすることができる。ブロック804で、プロセッサは、画像および/または仮想オブジェクトデータを第2のヘッドマウントディスプレイへ送信するように、送信機/受信機または送受信機を制御することができる。ブロック804で、第1のヘッドマウントデバイスは、仮想オブジェクトを定義する3次元モデルおよび/または3次元データセットを、第2のヘッドマウントデバイスへ、第2のデバイスが同じ仮想オブジェクトの画像を生成できるようにするフォーマットで、送信することができる。また、ブロック804で、プロセッサは、位置座標情報を含むマップを第2のヘッドマウントデバイスへ送信することができる。ヘッドマウントデバイスは、部屋座標マップをサーバからアップロードおよび/もしくはダウンロードすることができ、または、第2のヘッドマウントデバイスへマップを直接送信することができる。ブロック805で、第2のプロセッサは、第2のヘッドマウントディスプレイ上で投影するために、仮想オブジェクトの画像をレンダリングすることができる。画像は、ブロック802で第1のユーザによって選択されたアンカー表面にアンカーまたは固定された仮想オブジェクトを含み得る。たとえば、第1のユーザは、仮想オブジェクトをデスクトップ表面上にアンカーすることができる。ブロック805で、プロセッサは、画像をレンダリングすることができる。レンダリングされた画像内で、仮想オブジェクトはデスクトップ表面上に現れるようになり、その理由は、デスクトップ表面がブロック802で入力によって、第1のユーザによって選択されたからである。
【００９７】
様々な実施形態では、第2のヘッドマウントデバイスは、第1のヘッドマウントデバイスのユーザによって指定されたものと同じアンカー表面、または、第2のユーザによって識別された異なるアンカー表面のいずれかにアンカーされた、仮想オブジェクトの画像を表示することができる。ブロック806で、第2のヘッドマウントデバイスでは、第2のプロセッサは、表示画像内のどこに、アンカーされた仮想オブジェクトがレンダリングされるべきであるかを決定するために、第2のユーザが見ているロケーションおよび向き(ヘッドマウントデバイスの向きに関係する)を決定することができる。たとえば、第2のユーザが、第1のユーザによって指定されたアンカー表面を見ている場合、第2のヘッドマウントデバイスは、ヘッドマウントディスプレイ内で仮想オブジェクトの画像をレンダリングすることができる。しかしながら、第2のユーザが、そのアンカー表面から目をそらしている場合、第2のヘッドマウントデバイスは、仮想オブジェクトの画像をレンダリングしないようになり、その理由は、そのアンカー表面が、ヘッドマウントディスプレイ上で提示されたユーザの視界の外側になるからである。
【００９８】
ユーザの頭およびヘッドマウントデバイスの向きを決定することは、第2のユーザによって装着されたカメラによる画像、および、第2のユーザのヘッドマウントデバイスの向きセンサ(たとえば、傾斜計、ジャイロスコープ、および/または加速度計)からのデータをキャプチャすること、ならびに、この情報を処理して、第2のユーザの視角およびパースペクティブを推論することによって達成され得る。上記で説明したように、走査された3次元(3D)環境のトポグラフィにおける変化を常に参照し、したがって、同時位置特定およびマップ作成(SLAM)動作を実行することによって、各ヘッドマウントデバイスが空間内で動くとき、それ自体の位置および画角を三角測量することができるように、このプロセスを連続的に達成することができる。また、第2のユーザの解剖学的構造の一部分が、第2のユーザのヘッドマウントまたはボディマウントカメラからの画像内でキャプチャされる場合、このことはまた、検出アルゴリズムをキャプチャされた画像に適用して、身体部分を認識し、その認識から、身体部分の視界がどこに位置するかを推論することをも含み得る。
【００９９】
ブロック807では、プロセッサは、仮想オブジェクトデータを処理して、オブジェクトの画像をレンダリングする際に使用するための画像データを生成することができる。この動作において、プロセッサは、仮想オブジェクトを第2のユーザのパースペクティブから適切にレンダリングすることができ、そのため、第2のユーザは、快適にコンテンツを読み、仮想オブジェクトを見ることができる。ブロック808で、プロセッサは、ユーザに対するアンカー表面のロケーションおよび向きに基づいて、第2のヘッドマウントディスプレイ内で画像を生成することができる。
【０１００】
判定ブロック809で、プロセッサは、第2のユーザが新しいアンカー表面を決定したいかどうかを判定することができる。この判定は、仮想オブジェクト14を画像内でアンカーしたいという希望を示す入力信号を受信することから行われ得る。たとえば、第2のユーザは、現在のアンカー表面よりも、異なる表面上に画像をアンカーすることを望むことがある。たとえば、画像は、複数のユーザとの共同作業的プロセス中に壁に固定され、次いでデスクトップへ移動させられることがある。
【０１０１】
上述のように、第2のヘッドマウントデバイスのユーザは、アンカー表面を変更することを選択し、したがって、仮想オブジェクトの画像を、第2のユーザによって指定された別の表面へ移動させることができる。ヘッドマウントデバイスプロセッサが、仮想オブジェクトを新しい表面上にアンカーしたいという希望を示すユーザ入力を受信する場合(すなわち、判定ブロック809=「Yes」)、第2のユーザが仮想オブジェクト14のための新しいアンカーを決定することを希望することを示し、ブロック810で、プロセッサは、第2の所定の表面上の仮想オブジェクトの新しいアンカーの距離および向きパラメータを決定することができる。ブロック811で、プロセッサは、仮想オブジェクトを新しいアンカー表面のパラメータに変更または修正することができる。ブロック812で、プロセッサは、距離および向きに基づいて、仮想オブジェクト14を処理することができる。ブロック813で、第2のプロセッサは、第2のアンカー表面上に固定された、アンカーされた仮想オブジェクトとともに、画像をヘッドマウントディスプレイ上にレンダリングすることができる。
【０１０２】
プロセッサが、仮想オブジェクトを新しい表面上にアンカーしたいという希望を示すユーザ入力を受信しない場合(すなわち、判定ブロック809=「No」)、ブロック807で、プロセッサは、アンカー位置に変更はないが、第2のユーザのパースペクティブのためにレンダリングされるように、仮想オブジェクトをレンダリングのために処理することができる。同様の方法で、第1のユーザまたは第2のユーザは、別の仮想オブジェクトを追加し、追加の仮想オブジェクトを第3のアンカー表面上にアンカーすることができる。
【０１０３】
図8Bは、第1のユーザの視点から第1のユーザのディスプレイ上に、および、第2のユーザの視点のために別のディスプレイ上に出力される画像内で、アンカーされた仮想オブジェクトの向きを正しく設定するための、一実施形態の方法815を示す。方法815は、この方法の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法815において、ブロック820で、プロセッサは、ユーザが部屋を走査するとき、画像データを受信し、その画像データを処理して、仮想オブジェクトのためのアンカーとして機能するために好適な表面を含む、表面を識別/認識することができる。たとえば、プロセッサは、ヘッドマウントまたはボディマウントデバイスから画像をキャプチャすることができる。そのようなヘッドまたはボディマウントデバイスのプロセッサはまた、距離センサなど、他のタイプのセンサから、室内のオブジェクトの距離および向きに関する情報を受信することもできる。ブロック822で、プロセッサは、レンダリングのために仮想オブジェクトを生成中である別のコンピュータからなど、ヘッドマウントディスプレイ上に表示するための仮想オブジェクトを選択することができる。ブロック824で、プロセッサは、その上で仮想オブジェクトをアンカーするための表面を示す入力を、ユーザから受信することができる。ブロック826で、プロセッサは、仮想オブジェクトを第1のアンカー表面にアンカーするために、仮想オブジェクトの向きを設定し、ブロック828で、仮想オブジェクトの画像を第1のヘッドマウントディスプレイ上に生成することができる。ブロック830で、プロセッサはまた、ユーザの頭の動きを補償し、または適応させるためなど、ユーザの動きを補償するために、仮想オブジェクトのロケーションおよび向きを更新することもできる。
【０１０４】
判定ブロック832で、第1のヘッドマウントデバイスのプロセッサは、第1のヘッドマウントデバイスによって選択またはレンダリングされたコンテンツが、第2のデバイスへ送信されるようになるかどうかを判定することができる。そうでない場合(すなわち、判定ブロック832=「No」)、プロセッサは、ブロック820へ戻り、ユーザが動くか、または自分の頭を回すときでも、仮想オブジェクトが同じ表面にアンカーされたままであるように見える連続的な表示を生成するために、プロセスを繰り返すことができる。
【０１０５】
プロセッサが、第1のヘッドマウントデバイスによって生成された、選択されたコンテンツが、第2のヘッドマウントデバイスと共有されるべきであると判定する場合(すなわち、判定ブロック832=「Yes」)、任意のブロック834で、第1のヘッドマウントデバイスのプロセッサは、第2のアンカー表面を示す第2の入力を第2のユーザから受信することができる。任意のブロック836で、プロセッサは、場合によっては、仮想オブジェクトを識別された第2のアンカー表面にアンカーするために、ディスプレイ位置および向きを決定するための計算を実行することができる。任意のブロック838で、第1のヘッドマウントデバイスまたは第2のヘッドマウントデバイスのプロセッサは、センサデータおよび取得された画像に基づいて、本明細書で説明する方法を使用することによってなど、第2のユーザの視覚的な向きを決定することができる。上述のように、ヘッドマウントデバイスの向きを周囲に対して設定し、様々な表面までの距離、および、様々な表面の相対的な向きを決定するプロセスは、向きセンサ(たとえば、加速度計およびジャイロスコープ)を監視すること、ならびに、走査された3次元(3D)環境のトポグラフィにおける変化を常に参照し、したがって、同時位置特定およびマップ作成(SLAM)動作を実行することによって、デバイスが空間内で動くとき、それ自体の位置および画角を三角測量することによって、連続的に達成することができる。
【０１０６】
さらなる実施形態では、第1のヘッドマウントデバイス内のプロセッサは、それ自体のステレオカメラによって取得された第2のユーザの画像に基づいて、および、解剖学的モデルを使用して、第2のユーザの向きを決定することができる。任意のブロック840で、第1のヘッドマウントデバイスは、ブロック838で決定された第2のユーザの向きに基づく向きにおいて、仮想オブジェクトに関するデータを第2のヘッドマウントデバイスへ送信することができる。第2のヘッドマウントデバイスは、次いで、本明細書で説明したように、仮想オブジェクトの画像を第2のヘッドマウントディスプレイ上にレンダリングすることができる。ユーザの向きを決定し、表示を生成するこのプロセスは、ループにおいて継続し、第1のユーザおよび第2のユーザが動き、自分の頭を回す間、画像が選択された表面にアンカーされるように見え続けるようにすることができる。
【０１０７】
様々な実施形態では、いずれかのヘッドマウントデバイスが、第2のユーザのための適切なパースペクティブで仮想オブジェクトをレンダリングすることを可能にする計算を実行することができる。たとえば、第1のヘッドマウントデバイスのプロセッサは、第2のユーザのための第2の仮想オブジェクトの向きを正しく設定する方法で、仮想オブジェクトデータを供給するデータを、第2のヘッドマウントデバイスへ送信することができる。第1のヘッドマウントデバイスによって仮想オブジェクトの向きを設定するプロセスは、第2のヘッドマウントデバイスから第1のヘッドマウントデバイスへ送信される、決定された第2のユーザの向きに基づいてもよい。言い換えれば、第2のヘッドマウントデバイスは、その位置および向きについて、第1のヘッドマウントデバイスに通知することができ、第1のヘッドマウントデバイスは、この情報を使用して、仮想オブジェクトデータの向きを設定することができる。代替として、第1のヘッドマウントデバイスは、第2のユーザの画像に基づいて、第2のヘッドマウントデバイスの向きを決定し、この決定を使用して、仮想オブジェクトデータの向きを設定することができる。たとえば、プロセッサは、第2のユーザの画像を経時的にキャプチャすること、および、解剖学的解析をそれらの画像に適用して、画像内の身体部分を検出することによって、仮想オブジェクトのための適切な向きを決定することができる。この情報を使用して、第1のヘッドマウントデバイスのプロセッサは、仮想オブジェクトに関するデータを第2のヘッドマウントデバイスへ送信して、そのプロセッサが、第2のユーザのパースペクティブに整合する第2のアンカー表面に位置決めされた仮想オブジェクトの画像をレンダリングできるようにすることができる。
【０１０８】
プロセッサはまた、視野内の検出された身体部分および構造に基づいて、第2の仮想オブジェクトの向きを設定することもできる。たとえば、第2のユーザの頭、首、および胴が、第1のヘッドマウントデバイスによってキャプチャされた画像内で検出されることがあり、第1のヘッドマウントデバイスのプロセッサは、第2のユーザによってアンカー表面として選択されるか、またはすでに選択されている、第2のユーザのすぐ近くの水平の壁または垂直のテーブルがあると決定することができる。別の例として、第1のヘッドマウントデバイスのプロセッサは、第2のユーザの頭、首、および胴を取得された画像内で認識し、それらの身体部分の位置から、第2のユーザが仮想オブジェクトに関連付けられたテキストを読むことができるように、仮想オブジェクトの向きがどのように設定されるべきであるかを決定することができる。たとえば、第2のユーザの頭および胴の画像を解析して、水平(たとえば、肩から肩へ)および垂直(たとえば、胴から頭へ)の座標軸を定義することができ、その座標軸を次いで使用して、仮想オブジェクトをレンダリングするために適切な向きを決定することができる。加えて、ヘッドマウントディスプレイ上に提示される仮想オブジェクトの各ピクセルの第2のユーザの頭および胴からの距離に関してなど、仮想オブジェクト画像の視角が決定され得る。この処理は、第2のユーザのパースペクティブからの仮想オブジェクト上の様々な表面の視野角に整合する、オブジェクト輝度を変化させることを含み得る。
【０１０９】
別の実施形態では、プロセッサは、第2のユーザの画像を経時的にキャプチャすることができ、解剖学的解析をそれらの画像に適用して、画像内の身体部分を検出することができる。たとえば、第2のユーザの両目(または、ヘッドマウントデバイス)と鼻とが検出され得る。プロセッサは、身体部分を利用し、第2のユーザが見ているロケーションを決定し、第2のユーザがどこを見ているかに基づいて、第2の仮想オブジェクトの向きを設定することができる。さらに別の実施形態では、プロセッサは、キャプチャされた画像から、第2のユーザが座っているか、立っているかを判定することができる。プロセッサは、立っている場合、第2のユーザに隣接した平坦面にアンカーされるように、第2の仮想オブジェクトを生成することができる。座っている場合、プロセッサは、第2のユーザに隣接した近くの表面にアンカーされるように見えるように、第2の仮想オブジェクトを生成することができる。
【０１１０】
ブロック832で、プロセッサが、第1のユーザから第2のユーザへコンテンツを送出しないように判定する場合(すなわち、判定ブロック832=「No」)、プロセッサは、ブロック828で、第1のユーザのために仮想オブジェクトを表示することができ、ブロック830で、第1のユーザの動きについて、仮想オブジェクトを更新することができる。
【０１１１】
一実施形態では、プロセッサは、第2のユーザのための第2の仮想オブジェクトの向きを正しく設定する信号を通信することができる。プロセッサはまた、第2のユーザのための向きが設定された第2の仮想オブジェクトを生成する信号を通信することもできる。これらは、通信ネットワークへ通信され得る。通信ネットワークは、その信号を受信することができ、第2の仮想オブジェクトが、第1のユーザからある距離だけ離れた第2のユーザのために生成され得る。たとえば、第1のユーザおよび第2のユーザは、同じ室内または異なる都市に位置することがある。さらに別の実施形態では、第2のユーザは、仮想オブジェクトを移動させるか、または向きを再設定するための、検出されたジェスチャーまたは音声コマンドによって、追加の入力を供給することができる。プロセッサはまた、第2の仮想オブジェクトの好ましい配置を確認するか、拒否するかを示す入力を、第2のユーザから受信することもできる。第2のユーザはまた、必要に応じて、仮想オブジェクトを回転させて向きを再設定するための入力を、供給することもできる。
【０１１２】
ヘッドマウントデバイスを装着する2人以上のユーザ間で共有された体験を可能にすることに加えて、共同作業に関わるヘッドマウントデバイスのうちの1つまたは複数によって生成された画像データが、非参加者によって使用されるヘッドマウントデバイス、または、スマートフォンもしくはタブレットコンピュータなど、他のモバイルデバイスへ送信され、そこで表示されてもよく、他者が仮想または拡張現実体験において共同作業を見ることが可能にされ得る。上記で説明したように、ヘッドマウントデバイスを装着し、または、スマートフォンもしくはタブレットなど、別のモバイルデバイスを使用して、共同作業セッションを見る他者は、仮想オブジェクトおよびそれらとのユーザ対話を見るだけでなく、ヘッドマウントデバイスユーザのうちの1人によって見られる仮想拡張を用いた、制限された対話機能を有することができる。この制限された対話は、拡張に接触して効果を引き起こすこと、対話型エリアまたはアンカーポイントを物理的表面上で定義すること(新しい拡張を共有された体験に効果的に追加すること)、ならびに、ジェスチャーおよび/または音声入力を介して、共有された複合現実シーンと対話することを含み得る。仮想体験におけるいかなるそのような変更も、他のユーザによって装着されたヘッドマウントディスプレイに反映され得る。
【０１１３】
図9Aは、大きく離れたロケーションにおける2人のユーザのために、アンカーされた仮想オブジェクトの画像をレンダリングするための、一実施形態の方法900を示す。たとえば、一方のユーザは、カリフォルニア州サンディエゴに位置することがあり、第2のユーザは、たとえば、英国のケンブリッジなど、第2のロケーションに位置することがある。しかしながら、両方のロケーションにおいて、表示された、アンカーされた仮想オブジェクト14は、画像の所定のエリアに固定された各ロケーションにおけるアンカー表面にアンカーされたままである。いくつかの実施形態では、あるユーザが、複数の他のユーザのための仮想オブジェクトのためのアンカー表面を選択することができる。図9Aに示す方法900は、方法900の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法900のブロック901で、プロセッサは、距離センサからのデータ、カメラデータ、および計算された距離データを使用して、画像を処理することによって、動作を開始することができる。
【０１１４】
図5Aを参照して上記で説明したシーンセンサ500は、近赤外(NIR)パルス放出器503cと、反射された赤外パルスについての飛行時間情報を決定することが可能な高速ゲーティング機構をもつ赤外線カメラ503bとを含み得る。放出器503cからの赤外線放出パルスの光速およびタイミングと、赤外線カメラ503bのゲーティングとに基づいて、キャプチャされた画像内のオブジェクトまでの距離が、受信されたパルスのタイミングに基づいて決定され得る。パルス信号を、画像内のピクセルごとに、またはピクセルのグループについて収集し、距離センサからシーン内のオブジェクトまでの距離を決定するために使用することができ、その距離は、記憶媒体に記録および記憶され得る。
【０１１５】
ブロック902で、プロセッサは、画像内のアンカーされた仮想オブジェクトを表示するためのパラメータを計算することができる。仮想オブジェクトは、入力がプロセッサによって受信された後、所定の表面に固定されるように意図されてもよく、計算されたパラメータは、所望の表面に関係し得る。ブロック903で、プロセッサは、画像を、仮想オブジェクトとともに表示するためにレンダリングすることができる。ブロック904で、プロセッサは、部屋座標マップをサーバへアップロードおよび/またはダウンロードするように、送信機/受信機または送受信機を制御することができる。そのような座標マップは、ヘッドマウントデバイスが好都合な座標系内で室内の構造のロケーションを決定できるようにする、いずれかの形態の位置定義情報であり得る。たとえば、正方形の部屋を、そのような部屋座標マップのためにデカルト座標で定義することができ、X寸法およびY寸法は、床の主軸に対応し、Z座標は、垂直寸法(すなわち、床から天井)に対応する。ヘッドマウントデバイス内のカメラおよび他のセンサ(ならびに/または、ボディマウントカメラ)は、壁、床、および天井など、部屋の主要な構造寸法を位置特定することができるので、部屋座標の向きは、部屋の壁および床に容易に整合され得る。このようにして、システムは、(たとえば、GPSセンサからの)地理的座標、またはコンパス座標に関係する必要がない。一方、ユーザが外部、または、好都合なデカルト基準系のない空間内にいるとき、デカルト座標は、GPS座標およびコンパス座標に整合され得る。
【０１１６】
識別された座標基準系を用いて、ユーザから(たとえば、距離センサおよび/またはステレオ画像の処理から)様々な座標定義表面(たとえば、壁、床、および天井)まで、ならびに、ヘッドマウントディスプレイの視野内の様々なオブジェクトおよび表面までの距離測定値を使用することによって、ユーザの視野内の構造および表面が識別され、または座標系にリンクされ得る。簡単な幾何学的座標変換アルゴリズムを次いで使用して、オブジェクトおよび表面のユーザ相対座標を、全体的な部屋座標マップに変換することができる。したがって、この処理の結果は、全体的な基準系内で室内のオブジェクトまたは表面ごとに、座標ベクトル(たとえば、3つの座標距離)のデータセットを生成することであり得る。ヘッドマウントデバイスは、この座標データベースを使用して、室内のそれ自体のロケーションを決定することができる。次いで、部屋についての座標データベース内のそれ自体のロケーションを知り、プロセッサは、簡単なデカルト座標変換アルゴリズムを使用して、ヘッドマウントデバイスから室内のすべてのオブジェクトおよび表面までの距離および方向を計算することができる。ユーザが屋外にいる状況では、全体的な基準系は、地理的座標に基づいてもよく、地理的座標は、任意に選択され、GPSシステム測定値に結び付けられるか、または、GPSシステム測定値から決定され得る。
【０１１７】
別の実施形態では、部屋座標マップは、デバイスのプロセッサに結合されたメモリなど、ヘッドマウントデバイスにとってアクセス可能なローカルメモリに、または、ヘッドマウントデバイスにワイヤレス結合されたモバイルコンピューティングデバイス(たとえば、スマートフォン)に記憶され得る。ブロック916で、仮想オブジェクトは、ディスプレイ上で第1のアンカーされる表面上にレンダリングされてもよく、プロセッサは、ユーザがヘッドマウントディスプレイを移動および回転させるとき、仮想オブジェクトを第1のアンカーされる表面上にレンダリングし続けることができる。ブロック917で、通信および共同作業のために、音声リンクが、第1のヘッドマウント音声デバイスと第2のヘッドマウント音声デバイスとの間で確立され得る。
【０１１８】
図9Bを参照すると、ブロック905で、第1のユーザからある地理的距離だけ離れて位置することがある、第2のヘッドマウントデバイス内のプロセッサは、第2のユーザのロケーションおよび閲覧の向きを決定することができる。このことは、座標ロケーションデータ、コンパスデータ、および加速度計データを取得して、ヘッドマウントデバイスのロケーションおよび視角を決定することを含む、本明細書で説明する位置特定方法のいずれかを使用して達成され得る。場合によっては、第2のヘッドマウントデバイスは、画像内に存在するユーザの身体の一部分を認識することによって、その視角を決定し、その決定から、解剖学的モデルを使用して、可能性のある閲覧パースペクティブを推論することができる。別の実施形態では、第2のユーザは、その上で仮想オブジェクトをレンダリングするための表面を指定するため、および、ユーザの閲覧パースペクティブを示すための入力を供給することができる。ブロック906で、プロセッサは、第2のユーザのパースペクティブからの表示のために適切に仮想オブジェクトをレンダリングするために、仮想オブジェクトを処理することができる。ブロック907で、プロセッサは、第2のユーザのロケーションおよび向きに基づいて、第2のヘッドマウントディスプレイ内で画像を生成することができる。
【０１１９】
判定ブロック908で、第2のヘッドマウントデバイスのプロセッサは、第2のユーザが表示画像内で仮想オブジェクトをアンカーするために新しいアンカー表面を選択したいかどうかを、判定することができる。たとえば、第2のユーザは、物理的デスクトップなど、共同作業中に好都合であり得る、表示画像内の表面上に、画像をアンカーすることを望むことがある。一実施形態では、仮想オブジェクトは、たとえば、レンダリングされた画像内で現れ得る仮想テーブルなど、仮想の物理的表面上にアンカーされ得る。
【０１２０】
プロセッサが、第2のユーザが(たとえば、入力を介して)仮想オブジェクトのためのアンカー表面を変更することを希望すると判定する場合(すなわち、判定ブロック908=「Yes」)、ブロック909で、プロセッサは、新たに指定されたアンカー表面の距離および向きパラメータを決定することができる。ブロック910で、プロセッサは、アンカー表面(デスクトップ)のパラメータに基づいて、仮想オブジェクトのレンダリングを変更し、ブロック911で、第2の所定の表面のアンカー表面の距離および向きに基づいて、仮想オブジェクトを処理することができる。ブロック912で、第2のプロセッサは、画像を、第2のヘッドマウントデバイスのディスプレイ内でアンカー表面上に、アンカーされた仮想オブジェクトとともにレンダリングすることができる。
【０１２１】
ブロック913で、第2のヘッドマウントディスプレイを装着するユーザから受信された仮想オブジェクトの更新が、レンダリングのために、第1のヘッドマウントディスプレイへ送信され得る。このようにして、2つのヘッドマウントディスプレイのユーザは、共同作業セッション中に、仮想オブジェクトと共同作業的に対話することができる。これらの更新は、2つのヘッドマウントデバイス間で送信され、各デバイスが、いずれのユーザによって行われたすべての変更も反映する、更新された仮想画像を表示するようにすることができる。たとえば、ワードプロセシングアプリケーションでは、仮想オブジェクトは、共同作業的な方法で両方のユーザからの変更を反映することができる。ブロック914で、音声リンクが、第2のヘッドマウントデバイスと第1のヘッドマウントデバイスとの間で確立され得る。これらのユーザは、音声リンクを利用して、互いと、ならびに他のユーザと、音声会議フォーマットで話すことができる。この会議は、2つの異なる地理的ロケーションにおけるディスプレイ上で仮想オブジェクトを見ているとき、同時に行われ得る。一実施形態では、ヘッドマウントデバイスは、ビデオおよび音声会議ソフトウェアを使用することができる。
【０１２２】
プロセッサが、第2のユーザが仮想オブジェクトを新しいロケーションにアンカーすることを望まないと判定する場合(すなわち、判定ブロック908=「No」)、ブロック915で、プロセッサは、仮想オブジェクトをレンダリングすることができる。たとえば、第2のユーザは、単に、仮想オブジェクトを元のアンカー表面上に、または、ヘッドマウントディスプレイ上で自由に浮く配置で表示することを選択することができる。たとえば、ブロック915で、プロセッサは、仮想オブジェクトを「スタンバイモード」で表示することができる。
【０１２３】
図10は、第1のヘッドマウントデバイスと第2のヘッドマウントデバイスとの間でピアツーピア発見を開始するための、一実施形態の方法1000を示す。方法1000は、方法1000の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。2つのヘッドマウントデバイスがピアツーピア通信リンクを通してリンクされると、2つのヘッドマウントデバイスは、リソースを共有することができ、それらのデバイス間でデータを共有および交換することができる。方法1000は、ヘッドマウントデバイスを互いにリンクさせることに限定されず、1つまたは複数のヘッドマウントデバイスとリンクすることができる他のコンピューティングデバイスに適用可能であり得る。一実施形態では、ヘッドマウントデバイス10は、CPUを有するモバイルデバイス(たとえば、電話、タブレットなど)のアクセサリーとして動作可能であってもよく、方法1000における動作の一部分は、モバイルデバイスのCPUによって実行され得るが、ヘッドマウントデバイスは、「端末」として機能して、より少ない動作を実行することができ、ワイヤレスインターフェースを介してモバイルデバイスからの出力を受信することができる。たとえば、処理が第1のモバイルデバイス上で実行されてもよく、ディスプレイ出力が、アンカーされた仮想オブジェクトの可視画像を生成するヘッドマウントディスプレイに送出され得る。
【０１２４】
方法1000のブロック1002で、プロセッサは、全地球測位ユニット(GPS)もしくは任意の他の宇宙ベースの全地球航法衛星システム(GNSS)受信機など、ヘッドマウントデバイスに関連付けられた位置特定デバイス、または、ヘッドマウントデバイスに関連付けられたナビゲーションデバイスから、位置データを受信することができる。たとえば、位置特定デバイスは、無線ネットワーク基地局からロケーションを決定するデバイスであり得る。別の実施形態では、ヘッドマウントデバイスは、クラウドサーバなどのローカルデバイスから、または、ワイヤレス通信ネットワーク基地局から、ローカル位置データを受信することができる。さらなる実施形態では、ユーザは、ヘッドマウントデバイスが新しいロケーションに入りつつあること、および/または、新しい共同作業セッションを開始中であることを示す入力(たとえば、ボイスコマンドまたはボタン押下)を供給することができる。さらなる実施形態では、ヘッドマウントデバイスは、他のデバイスからピアネットワーク広告を受信し、新しい広告から、デバイスが新しいロケーションに入っていると決定することができる。
【０１２５】
判定ブロック1004で、プロセッサは、第1のヘッドマウントデバイスが新しいロケーションに入っているかどうかを、位置データまたは他の指示に基づいて判定することができる。そうである場合(すなわち、判定ブロック1004=「Yes」)、ブロック1006で、ヘッドマウントデバイスは、他のコンピューティングデバイスまたはヘッドマウントデバイスが近傍にあり、ワイヤレスデータ接続によってリンクされ得るかどうかを判定するために、ピアツーピア発見を開始することができる。ブロック1006でピアツーピア発見を開始するプロセスは、リンクされ得るデバイスから応答が受信されるまで(すなわち、判定ブロック1008=「No」である限り)、継続することができる。ピアツーピア通信リンクを確立することが可能なデバイスが識別されるとき(すなわち、判定ブロック1008=「Yes」)、ブロック1010で、ピアツーピア通信リンクがネゴシエートされてもよく、ブロック1012で、双方向通信が2つのデバイス間で確立され得る。
【０１２６】
ブロック1014で、ヘッドマウントデバイスは、ともに通信リンクを確立しているコンピューティングデバイスから、マップデータを受信することができる。この動作において、ヘッドマウントデバイスは、他のコンピューティングデバイス(たとえば、別のヘッドマウントデバイス、別のコンピューティングデバイスまたは遠くのサーバなど)上に記憶されているいずれかのマップデータをダウンロードし、ヘッドマウントデバイスが新しいロケーション内で直ちにデバイス自体の向きを設定できるようにすることができる。たとえば、ヘッドマウントデバイスがともに通信リンクを確立しているコンピューティングデバイスが、ネットワークまたはインターネットへのアクセスを有する場合、マップデータがリモートサーバから(たとえば、「クラウド」から)ダウンロードされ得る。ヘッドマウントデバイスはまた、それ自体の内部メモリを走査して、新しいロケーションについてのマップデータがすでにメモリに記憶されているかどうかを判定することもできる。マップデータがメモリに記憶されている場合、ブロック1014における動作の一部として、ヘッドマウントデバイスは、そのマップデータの一部を、ともに通信リンクが確立されているコンピューティングデバイスと共有することができる。また、マップデータを交換する前に、通信するヘッドマウントデバイスは、互いに近いかどうかを判定し、マップデータを共有することが一方または両方のデバイスプロセッサの処理負荷を低減するようになるように互いに十分近い場合にのみ、マップ、距離、および向きデータを交換することができる。したがって、ヘッドマウントデバイスおよびリンクされたコンピューティングデバイスが同じ室内にない場合、他方のデバイスに無関係となるロケーション、マップ、または向きデータを共有することは、意味をなさないことがある。
【０１２７】
ブロック1016で、プロセッサは、ヘッドマウントまたはボディマウントステレオカメラからのデータ、ならびに、距離センサによって取得され得る距離測定値を受信することができる。ブロック1018で、プロセッサは、マップおよびシーン内でデバイスの向きを設定するために、ブロック1014で受信された任意のマップデータを、カメラ画像および任意の距離測定値とともに使用することができる。場合によっては、ブロック1018で、プロセッサは、受信されたマップデータ内に現れない、画像内で見られる任意のアイテムまたは構造についての3次元マップデータを、生成または更新することができる。マップデータが別のコンピューティングデバイスから受信されず、デバイスがメモリ内にそのロケーションについてのマップを有していなかった場合、ブロック1018で、プロセッサは、新しいマップを生成することができる。
【０１２８】
ブロック1020で、ヘッドマウントデバイスプロセッサは、カメラによって取得された画像を、距離センサおよび向きセンサを含む様々なセンサからのデータを使用して、処理することができる。この処理は、デバイスがマップデータ内の座標またはロケーション内でそれ自体の位置を特定できるようにすることができる。この処理はまた、仮想オブジェクトをレンダリングする際に使用するための、アンカー表面までの距離およびアンカー表面の向きを決定することをも含み得る。
【０１２９】
ブロック1022で、ヘッドマウントデバイスプロセッサは、リンクされたコンピューティングデバイスが共同作業において使用され得る表示を生成できるようにするために、ディスプレイおよび仮想オブジェクトデータをそれらのデバイスと交換することができる。ブロック1024で、ヘッドマウントデバイスは、様々な実施形態に関して本明細書で説明したように、仮想オブジェクトをアンカー表面上に表示すること、ユーザコマンドジェスチャーを検出し、それに応答すること、ならびに、変更および入力を他の結合されたコンピューティングデバイスに通信することによってなど、ユーザの共同作業のサポートを開始することができる。
【０１３０】
図11は、認識されたジェスチャーおよび検出された音声を入力コマンドとして処理するための、一実施形態の方法1100を示す。ジェスチャーおよび検出された音声は、ヘッドマウントディスプレイ上でタスクおよび命令を実行することができる。方法1100は、方法1100の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。
【０１３１】
この実施形態の方法では、認識されたユーザジェスチャーなど、ある形態で受信されたユーザ入力コマンドが、マイクロフォンによって受信されたバーバルコマンドなど、別の形態のユーザ入力によって確認され得る。たとえば、ヘッドマウントデバイスのプロセッサが、画像データを処理してジェスチャーを認識することによってなど、第1のコマンドを認識する場合、プロセッサは、短い時間期間にわたって、認識された第1のコマンドを確認する第2のコマンドを求めて、他のユーザ入力を監視することができる。この実施形態では、プロセッサは、第1の認識されたユーザ入力に対応するアクションを実施し、またはタスク実行することを、そのアクションまたはタスクが第2のユーザ入力によって確認されるのでない限り、行わないことがある。第2のユーザ入力は、マイクロフォンによって受信されたボイスコマンド、または、ボディマウントカメラによって収集された画像内で認識される第2のジェスチャーであってもよい。いくつかの通常のユーザの動きがコマンドジェスチャーとして誤って解釈され、ジェスチャーコマンドが実行される前にユーザがそれらを確認すること、および、意図しないコマンドが実行されることを防ぐことが必要となることがあるので、この実施形態は有用であり得る。確認ユーザ入力を待機するプロセスは、ユーザによって行われたジェスチャーが画像内で認識されるか、または、プロセッサがバーバルコマンドを受信していると考えるとき、呼び出され得る。一般に、この2コマンド確認プロセスは、偶然生じるジェスチャーまたは不注意に話されたコマンドが、ヘッドマウントデバイスによって意図的でなく作用され得るという状況を、回避することができる。代わりに、ヘッドマウントデバイスは、アクションを取る前に、第2のコマンドを待つようになる。この2コマンドプロセスはまた、認識されたコマンドに関連付けられたアクションが、1つのコンテンツを削除するような、望ましくないまたは非可逆的であり得る動作を含むときなど、認識されるコマンドのタイプに基づいて実施されてもよい。
【０１３２】
方法1100のブロック1101で、プロセッサは、ヘッドマウントデバイスの向きに関するセンサデータを受信することによって、動作を開始することができる。ブロック1102で、プロセッサは、キャプチャされた画像に関して、カメラからのデータを受信することができる。ブロック1103で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。ブロック1104で、プロセッサは、センサデータ、カメラデータ、および距離センサデータを使用して、画像を処理することができる。ブロック1105で、プロセッサは、画像中に含まれている仮想オブジェクトとともに、画像をディスプレイ上にレンダリングすることができる。
【０１３３】
ブロック1106で、いずれかの解剖学的特徴がカメラの視野内に含まれているかどうかを判定するために、カメラデータが処理され得る。一般に、いずれかの特徴が人間の部分であるとして認識されるかどうかを判定するために、解剖学的特徴検出アルゴリズムが、キャプチャされたカメラ画像データに適用され得る。たとえば、解剖学的認識アルゴリズムは、ボディマウントカメラから受信された画像を走査して、5本の指をもつ手、および腕など、解剖学的特徴が認識されるかどうかを判定することができる。解剖学的特徴を認識するプロセスはまた、キャプチャされた画像内のユーザの腕の角度など、それらの向きを決定することもできる。認識された解剖学的特徴の位置および向きが、ある時間期間にわたって画像内で追跡され、ユーザジェスチャーのデータベースまたは辞書と比較されて、追跡された解剖学的特徴の動きが、認識されたジェスチャーに対応すると決定され得る。ユーザジェスチャーが認識される場合、プロセッサは、検出されたジェスチャーに応答して、コマンドを出力することができる。たとえば、コマンドは、ソフトウェアアプリケーションを開くことができ、または、ソフトウェアアプリケーションに信号もしくは入力を供給することができる。
【０１３４】
ユーザジェスチャーを認識するプロセスは、判定ブロック1107で、認識された解剖学的特徴の動きを、ジェスチャー辞書に維持され得るものなど、あらかじめ定義された解剖学的動きのデータベースと比較することによって、達成され得る。たとえば、手などの身体部分が、キャプチャされた画像内で認識されることがあり、その動きが所定の時間間隔にわたって追跡され得る。たとえば、プロセッサが、解剖学的モデルを使用して、ユーザの手および指がボディマウントカメラの前に位置し、2本の指が伸ばされ、3本の指がユーザの手のひらに向けて下向きに閉じられていることを認識する場合、プロセッサは、ユーザの手および指のこの向きをジェスチャー辞書と比較することによって、プロセッサがアクションを取ることを希望することをユーザが表していると決定することができる。プロセッサは、画像パターンおよび動きを、ジェスチャー辞書に記憶された動きデータまたはパターンと比較することによって、身体部分ジェスチャーの構成を認識することができる。そのようなジェスチャー辞書は、突くこと、軽くたたくこと、タップ、押すこと、案内、フリック、ターン、回転、つかんで引くこと、画像をパンするために両手のひらを開くこと、描画(たとえば、フィンガーペインティング)、指で形状を作ること(たとえば、「OK」サイン)、およびスワイプを含み得る、動きについてのジェスチャーデータを記憶することができ、それらのジェスチャーのすべては、生成された表示内の仮想オブジェクトの見かけのロケーションで、または見かけのロケーションにごく接近して達成され得る。ヘッドマウントディスプレイが、カメラ画像データ内で、ジェスチャー辞書内のエントリに適合するジェスチャーを認識する場合(すなわち、判定ブロック1107=「Yes」)、ブロック1108で、プロセッサは、認識されたジェスチャーに対応する入力コマンドを処理することができる。ブロック1109で、入力コマンドは、プロセッサによって実行され得る。入力はまた、ソフトウェアアプリケーションもしくはコンピューティングデバイスに通信される任意の信号もしくはデータ、または、指示を与えるための信号であってもよい。
【０１３５】
ここでも、上記で説明したように、認識されたジェスチャーに基づくコマンドの実行は、第2の確認ユーザ入力が受信されるまで、実施されないことがある。したがって、そのような実施形態では、コマンドを実行する代わりに、ブロック1109で、プロセッサは、ユーザが認識されたジェスチャーコマンドを確認するためのプロンプトを表示(または、トーンを発生)することができる。判定ブロック1110で、プロセッサは、ジェスチャーコマンドの認識の後にくる短い期間にわたって、いずれかの音声(または、他のユーザ入力)がマイクロフォンから受信されるかどうかを判定することができる。音声がその時間期間内に受信される場合、プロセッサは、音声を処理して、検出されたジェスチャーを確認するために確認コマンドが話されたかどうかを判定することができる。このことを達成するために、マイクロフォンから受信された音声入力がデジタル化されてもよく、得られたデータが、1つまたは複数の入力コマンドに対応する言葉を求めて、ボイスコマンド認識データベースと比較され得る。音声入力が、コマンド確認に対応するボイスコマンドパターンに適合すると、プロセッサが判定するとき(すなわち、判定ブロック1110=「Yes」)、ブロック1111で、プロセッサは、その音声に対応するアクションを生じる入力コマンドを処理することができる。ブロック1112で、プロセッサは、認識されたコマンドを実行することができ、ブロック1113で、指示または認識されたタスクがヘッドマウントディスプレイ上に表示され得る。
【０１３６】
たとえば、ユーザは、指さすことによって、仮想オブジェクト14を物理的表面上にアンカーするためのジェスチャーを行うことができる。このジェスチャーを認識すると、プロセッサは、コマンドを確認するようにユーザに要求する、ヘッドマウントディスプレイに提示された可聴音またはメッセージなど、プロンプト生成することができる。そうするために、ユーザは、「オーケー」、「確認」、または「そうする」のような言葉を話して、ヘッドマウントデバイスによって認識されたジェスチャーコマンドが実行されるべきであることを確認することができる。したがって、プロセッサが確認または可聴コマンドを検出するとき、プロセッサは、ヘッドマウントディスプレイに、ユーザが指さしている物理的表面上にアンカーされた仮想オブジェクトを示す画像を提示することができる。
【０１３７】
口頭の音声コマンドに対応するとして認識される音声が受信されない場合(すなわち、判定ブロック1110=「No」)、プロセッサは、検出されたジェスチャーが不注意によるものであったと決定することができ、プロセッサは、認識されたジェスチャーおよび入力コマンドを無視することができ、ブロック1106で、解剖学的ジェスチャーを探してカメラデータを処理し続けることができる。
【０１３８】
判定ブロック1107に戻ると、プロセッサが、画像データ内でジェスチャーを認識しない場合(すなわち、判定ブロック1107=「No」)、ブロック1106で、プロセッサは、さらなる追加の時間間隔にわたって、解剖学的ジェスチャーを求めてカメラデータを処理し続けることができる。ブロック1113で、プロセッサは、ジェスチャーが認識されていないことを示すタスク識別子またはアイコンを、ヘッドマウントディスプレイ上に表示することができる。代替として、プロセッサは、ジェスチャーコマンドが受信されるとすぐに、タスク識別子またはアイコンを表示することができ、タスク識別子またはアイコンは、バーバルコマンドまたは「OK」ジェスチャーコマンドなど、確認コマンドをユーザが出すためのプロンプトとして機能することができる。
【０１３９】
別の実施形態では、異なる第1のコマンドおよび第2のコマンドが使用され得る。別の実施形態では、プロセッサが、音声コマンドを最初に検出し、受信された画像内で確認ジェスチャーコマンドを探し、判定ブロック1107および1110で実行される動作を有効に交換するように構成され得る。さらなる実施形態では、ボタン押下などとの組合せでの可聴コマンドなど、2つ以上のタイプの確認入力が必要とされ得る。
【０１４０】
図12は、認識されたジェスチャーを入力コマンドとして処理して、ヘッドマウントデバイス上でソフトウェアタスクを実行するための、一実施形態の方法1200を示す。方法1200は、方法1200の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。
【０１４１】
方法1200において、ブロック1201で、プロセッサは、ヘッドマウントデバイス10の向きに関するセンサデータを受信することによって、動作を開始することができる。ブロック1202で、プロセッサは、ステレオカメラからのステレオ画像データ、ならびに、上記で説明したヘッドマウントデバイス10中に含まれるいずれかの距離センサからのデータを受信することができる。したがって、ブロック1202で、プロセッサは、カメラの視界内の画像および表面までの距離に関して、ヘッドマウントデバイスによって収集されたすべての情報を取得することができる。ブロック1203で、プロセッサは、キャプチャされた画像内のオブジェクトの距離および向きデータを計算することができる。これらの計算は、ステレオ画像がブロック1202で供給されるときに、よく知られている三角法、距離データを供給するために距離センサが使用されるときに、直接測定、および、センサから取得された距離情報とステレオ画像から計算された距離情報との組合せを使用することができる。ブロック1204で、プロセッサは、距離センサデータ、カメラデータ、ならびに、距離および向きデータを使用して、画像を処理することができる。ブロック1205で、プロセッサは、画像をヘッドマウントディスプレイ上で仮想オブジェクトとともにレンダリングすることができる。ブロック1206で、カメラデータが、プロセッサによって追跡され得る。キャプチャされた画像が処理されてもよく、プロセッサは、解剖学的特徴が、キャプチャされた画像内に含まれているかどうかを判定することができる。プロセッサは、解剖学的特徴検出アルゴリズムをキャプチャされた画像に適用して、いずれかの特徴または少なくとも1つの身体部分がデータ内に位置するかどうかを判定することができる。プロセッサは、ある時間間隔にわたってその身体部分を追跡して、所定のジェスチャーが認識されるかどうかを判定することができる。
【０１４２】
判定ブロック1207で、プロセッサは、いずれかのジェスチャーが、キャプチャされた画像内で認識されるかどうかを判定することができる。そうである場合(すなわち、判定ブロック1207=「Yes」)、プロセッサがジェスチャーを画像内で認識していることを示し、ブロック1208で、プロセッサは、判定されたジェスチャーをメモリに記憶されている入力コマンドと実質的に適合させることができる。ブロック1209で、プロセッサは、検出されたジェスチャーに対応する入力コマンドを実行することができる。ブロック1210で、プロセッサは、入力コマンドに対応するタスクを実行することができる。プロセッサが、認識されたジェスチャーがないという判断に達する場合(すなわち、判定ブロック1207=「No」)、ブロック1211で、プロセッサは、キャプチャされた画像を追跡すること、および、検出アルゴリズムをキャプチャされた画像に適用することを継続して、入力を求めて追跡することができる。
【０１４３】
図13は、オブジェクトを立体画像内で検出し、その検出と検出されたオブジェクトの解釈とに基づいて、興味深い視覚的仮想現実効果を提供するための、一実施形態の方法1300を示す。方法1300は、「見なされた本質的オブジェクト」をヘッドマウントディスプレイ上に表示することができるが、方法1300は、他の「非本質的オブジェクト」を透明としてヘッドマウントディスプレイ上にレンダリングすることができる。方法1300は、方法1300の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法1300において、ブロック1301で、プロセッサは、カメラおよびヘッドマウントデバイスの向きに関するセンサデータを受信することによって、動作を開始することができる。ブロック1302で、プロセッサは、画像をキャプチャし、カメラからのデータを受信することができる。ブロック1303で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。ブロック1304で、プロセッサは、距離センサデータ、カメラデータ、向き、および距離データを使用して、画像を処理することができる。
【０１４４】
ブロック1305で、プロセッサは、画像をディスプレイ上に仮想オブジェクト14とともにレンダリングすることができる。判定ブロック1306で、プロセッサは、いずれかのオブジェクトが画像内で認識されるかどうかを判定することができる。たとえば、解剖学的検出アルゴリズムが、検出された画像およびデータに適用されて、身体部分が画像内で検出されるかどうかが判定され得る。たとえば、解剖学的または骨格検出アルゴリズムが、キャプチャされた画像に適用されて、可視として、または透明としてレンダリングされ得る腕または手などの身体部分が検出され得る。プロセッサが、他のオブジェクトが検出されると判定する場合(すなわち、判定ブロック1306=「Yes」)、オブジェクトが検出されることを示し、プロセッサは、そのオブジェクトが画像から省略されているかのように見えるようにするために、仮想オブジェクトをそのオブジェクトの上に重ね合わせることによって、そのオブジェクトを透明にレンダリングするかどうかを判定することができる。
【０１４５】
様々な実施形態では、仮想オブジェクトには、様々な透明度特性がもたらされ得る。いくつかの実施形態では、仮想オブジェクトは、実世界オブジェクト(腕、手、指、および顔)のアウトライン上に現れるように表示され得る。そのような実施形態では、仮想オブジェクトは、実世界オブジェクトに適合するか、または実世界オブジェクトの上を覆うように、形状が変更され得る。このようにして、実世界オブジェクトは、ヘッドマウントディスプレイ上に出力された画像内で「シースルー」であるように見える。一実施形態では、不要なオブジェクトが壁またはテーブルの前にある場合、その壁および/またはテーブルに似ている仮想オブジェクトを生成して、仮想の壁/テーブルを不要なオブジェクトの上に重ね合わせることができる。プロセッサが、他のオブジェクトが検出されないと判定する場合(すなわち、判定ブロック1306=「No」)、ブロック1310で、プロセッサは継続し、画像を仮想オブジェクトとともにレンダリングすることができる。
【０１４６】
判定ブロック1307で、プロセッサは、画像内で認識されたいずれかのオブジェクトが必要であるかどうかを判定することができる。たとえば、見なされた「必要なオブジェクト」は表示され得るが、他の見なされた「不要なオブジェクト」は、画像からそのオブジェクトを省略するために、透明にレンダリングされ得る。たとえば、見なされた必要なオブジェクトは、画像内のユーザ自身の手であり得るが、不要であると見なされる別のオブジェクトは、仮想オブジェクトの上に位置する第2の個人の手であり得る。不要なオブジェクトは、アウトラインの形態で表示されてもよく、仮想オブジェクトが不要なオブジェクトの上に重ね合わせられる。「必要」および「不要」という用語は、ドロップダウンメニュー、または、凝視検出、ヘッドマウントもしくはボディマウントカメラによって認識され得る、手で指し示すジェスチャーなど、ユーザが選好を示すためのいずれかのサポートされたジェスチャーもしくは方法を利用して、ユーザによって任意にプログラムおよび選択され得る。ユーザは、「他のユーザの特徴」を透明として表示し、「自分の特徴を常に」表示するように、ヘッドマウントデバイスをプログラムすることができ、逆もまた同様である。プロセッサが、オブジェクトが必要であると判定する場合(すなわち、判定ブロック1307=「Yes」)、ブロック1310で、プロセッサは、必要なオブジェクトおよび仮想オブジェクトとともに、画像をレンダリングするためのプログラム命令を与えることができる。たとえば、ユーザ自身の手が、必要であると見なされ、画像内で表示され得る。「必要」および「不要」という用語は、任意のパラメータであり、ユーザによって決定され得る。たとえば、ユーザは、セットアップ動作手順において、必要であるオブジェクトと、不要であり、透明としてレンダリングされるべきであるオブジェクトとを示すことができる。たとえば、ユーザは、ドロップダウンメニューおよび入力デバイスを使用して、ユーザの手が必要であること、および、画像内の他のユーザの身体部分が必要ではないことを決定することができる。たとえば、多数の異なるユーザが画像中に存在し、アンカーされた仮想オブジェクト上で共同作業していることがある。シーンは、多数のユーザおよび多数の仮想オブジェクトで散らかされることがある。したがって、共同作業を向上させるために、散乱を緩和するように、一部のユーザが透明にレンダリングされてもよい。
【０１４７】
プロセッサが、オブジェクトが不要であると判定する場合(すなわち、判定ブロック1307=「No」)、ブロック1308で、プロセッサは、画像を、透明としてのオブジェクトとともにレンダリングすることができる。ブロック1309で、プロセッサはまた、仮想オブジェクトを、透明としてレンダリングされた不要なオブジェクトとともに、または、不要なオブジェクトの上に表示された仮想オブジェクトとともに、表示することもできる。別の実施形態では、オブジェクトが仮想オブジェクト14をふさぐときにのみ、オブジェクトが部分透明にレンダリングされてもよく、オブジェクトが仮想オブジェクト14をふさがないとき、オブジェクトが立体にレンダリングされてもよい。
【０１４８】
図14は、画像シーン内に現れ得る手、腕、および他の人間の特徴(たとえば、ユーザおよび別の個人のもの)を考慮して、画像をヘッドマウントディスプレイ上にレンダリングするための、一実施形態の方法1400を示す。この実施形態では、ヘッドマウントデバイスプロセッサは、仮想オブジェクトが表示されるべきシーンの画像をキャプチャすること、解剖学的モデルを使用して画像を処理することによってなど、キャプチャされた画像中に存在する身体部分を認識すること、および、認識された身体部分に基づいて、仮想オブジェクトの表示を調整することができる。表示の調整は、仮想オブジェクトを認識された身体部分の前に、後ろに、または認識された身体部分と混合されるようにレンダリングすることを含み得る。たとえば、プロセッサは、仮想オブジェクトを、ユーザの特徴(たとえば、手および腕)が仮想オブジェクトをふさぐ場所で部分透明として、ユーザの特徴が仮想オブジェクトをふさがないところで不透明としてレンダリングすることができる。このようにして、ユーザは、自分の手を、仮想オブジェクトの画像の近傍で見ることができるが、仮想オブジェクトの残りは、現実であるかのように立体に見える。代替として、プロセッサは、ユーザ自身の特徴が仮想オブジェクトの前またはその上に現れる(すなわち、立体)が、別の個人の手および腕(ならびに、他の身体部分)が透明にレンダリングされるように、仮想オブジェクトをレンダリングして、別の個人の手および腕が仮想オブジェクトの画像によって不可視にされる(すなわち、仮想オブジェクトが、他の人の手/腕の、ユーザの視野をブロックする)ように、または、仮想オブジェクトが他の人の手および腕を通して見られるようにすることができる。
【０１４９】
たとえば、ヘッドマウントまたはボディマウントカメラは、ユーザおよび別の個人の手および腕を含むシーンの画像をキャプチャすることがある。デバイスのプロセッサは、解剖学的アルゴリズムをキャプチャされた画像データに適用して、キャプチャされた画像内の身体部分を認識することができる。たとえば、プロセッサは、画像形状を解剖学的モデルと比較することによって、ユーザの手および第2の個人の手をキャプチャされた画像内で検出することができる。
【０１５０】
両者の両手が、仮想オブジェクトをふさぐことがある。たとえば、5本の指および手のサイズデータが、画像についてレビューされ得る。プロセッサは、キャプチャされた画像で上から下に向けられる手が、第2の個人の手であるが、キャプチャされた画像内で下から上に向けられる他の手が、ユーザの手であると推論することができる。追加として、プロセッサは、認識されたオブジェクトの距離データをキャプチャして、推論を編成することができる。たとえば、プロセッサが、解剖学的特徴(たとえば、腕および手)がユーザから少なくとも所定の距離(12フィート)離れていると決定するとき、プロセッサは、この情報から、それらの特徴が別の個人に属すると推論することができる。追加の感知パラメータもまた可能であり、本開示の範囲内である。たとえば、オブジェクトの高さ、オブジェクトの向き、およびオブジェクトのサイズがすべて利用され得る。
【０１５１】
方法1400において、ブロック1401で、プロセッサは、カメラの向きに関するセンサデータを受信することによって、動作を開始することができる。ブロック1402で、プロセッサは、カメラからデータを受信することができる。ブロック1403で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。ブロック1404で、プロセッサは、距離センサデータ、カメラデータ、画像の向き、および距離データを使用して、キャプチャされた画像を処理することができる。判定ブロック1405で、プロセッサは、画像内で、ユーザの特徴、たとえば、ユーザの手、腕、脚、胴などに対応するオブジェクトが認識されるかどうかを判定することができる。この判定は、キャプチャされた画像内でオブジェクトを認識することによって、解剖学的解析を画像に適用すること、認識されたオブジェクトを、メモリに記憶された骨格モデルと比較すること、および、認識されたオブジェクトを骨格モデルと比較することに応答して、認識されたオブジェクトのいずれかが骨格モデルの一部分に適合するかどうかを判定することを含み得る。骨格モデルは、人間の骨格の主要な関節、骨、および肢についての相対位置情報を含み得る。
【０１５２】
ある人の特徴が画像内で認識される場合(すなわち、判定ブロック1405=「Yes」)、ブロック1409で、プロセッサは、画像を、仮想オブジェクトおよび画像内のユーザの特徴とともにレンダリングすることができる。ユーザの特徴が画像内で検出されない場合(すなわち、判定ブロック1405=「No」)、判定ブロック1406で、プロセッサは、その特徴が第2の個人の特徴であるかどうかを判定することができる。
【０１５３】
判定ブロック1406で、プロセッサは、第2の個人の特徴が検出されるかどうかを判定することができる。この判定は、キャプチャされた画像中に存在する身体部分を認識することに応答して、その身体部分が第1の個人に属するか、第2の個人に属するかを判定すること、仮想オブジェクトのロケーションおよび包含されたエリアを決定すること、ならびに、認識された身体部分が、仮想オブジェクトによって包含されたエリアの少なくとも一部分に重なるかどうかを判定することを含み得る。これらの特徴は、プロセッサによって透明にレンダリングされ得る。プロセッサは、仮想オブジェクトを検出された特徴上に生成し、重ね合わせることによって、オブジェクトを省略することができる。たとえば、プロセッサは、仮想オブジェクトをディスプレイ上で第2の個人の手の上にレンダリングすることができる。そうである場合(すなわち、判定ブロック1406=「Yes」)、第2の個人の手が画像内で検出され、必要ではないことを示し、ブロック1407で、プロセッサは、仮想オブジェクトを画像内で、第2の個人の手の上に重ね合わせられるようにレンダリングすることができる。
【０１５４】
プロセッサが、オブジェクトが第2の個人の手であるかどうかを判定できない場合(すなわち、判定ブロック1406=「No」)、ブロック1408で、プロセッサは、画像を仮想オブジェクトとともにレンダリングすることができる。プロセッサは、画像内で所望のオブジェクトに対応するいくつかのピクセルを決定し、次いで、所望のオブジェクトのアウトラインが表示されるように残すが、画像内でピクセルを仮想オブジェクト14で置き換えることができる。アウトラインサイズは変わることがあり、オブジェクト画像の長さの約1パーセントを含み得る。
【０１５５】
図15は、ヘッドマウントデバイス10のディスプレイ出力の例示の、ハイレベルのトップダウン図を示す。ディスプレイ出力は、仮想オブジェクト14を示す。仮想オブジェクト14は、データを出力する仮想フラットパネル画面として示される。この実施形態では、仮想画面は、いくつかの棒グラフをもつグラフィカルテーブルを出力する。複数のユーザは、仮想現実設定において仮想オブジェクト上で共同作業することができ、その設定において、仮想オブジェクト14は、ディスプレイの出力においてのみ現れるが、閲覧者にとって有形の実際のオブジェクトであるように見える。
【０１５６】
図示の例では、プロセッサは、ユーザの特徴または手1502を検出し、2人の他の個人の特徴または手1500および1501を、立体画像内で仮想オブジェクト14の上で検出する。図15に示すように、ユーザの手は、プロセッサによって、ディスプレイ内で本質的要素として表示されることが可能となる。ユーザの手は、仮想オブジェクト14上に現れるようになり、仮想オブジェクト14をふさぐようになる。加えて、2人の他の個人の特徴は、仮想オブジェクト14の部分上に一見すると透明にレンダリングされてもよく、その理由は、これらの要素が本質的でないと見なされ、ヘッドマウントデバイス10のユーザの視野を混乱させることがあり、または散らかすことがあるからである。仮想オブジェクト14は、プロセッサによって、手1500および1501の上に重ね合わせられ、合うように表示され、手1500および1501が、生成された仮想オブジェクト14をふさがないようにすることができる。
【０１５７】
図示の例では、第2のユーザの手1501がプロセッサによって、「透明」として、および、仮想オブジェクト14の上にレンダリングされた第2の個人の手1501のアウトラインによって示されるように、レンダリングされる。通常はふさがれるべきである仮想オブジェクト14の部分は、第2の個人の手1501上に直接レンダリングされ得る。図示の例では、第2のユーザの手1501は、透明であるように見え、手1501のアウトラインのみが示される。他のユーザの手1502は、図示の例では「立体オブジェクト」としてレンダリングされ、それらの手1502が、仮想オブジェクト14の上にレンダリングされ、仮想オブジェクト14をふさいでいる。図示の例では、手1502は立体であるように見え、仮想オブジェクト14は下部で可視でないことがある。一実施形態では、他の個人の手が検出され、手1500および1501のアウトラインとともにレンダリングされ得る。手1500および1501の残りは、仮想オブジェクト14の下にレンダリングされるものとして示される。
【０１５８】
ヘッドマウントまたはボディマウントカメラは、画像をキャプチャし、解剖学的モデルをキャプチャされた画像データに適用して、身体部分を認識することができる。たとえば、これは、仮想オブジェクト14の上の、ユーザの手1502、および第2の個人の手1500、および第3の個人の手1501であり得る。たとえば、5本の指、手のサイズデータ、腕の一部分、手の向き、指の向き、距離データ、および向きデータがレビューされ得る。プロセッサは、画像の上部から向けられ、画像の下部に向かって伸びている手が、第2の個人の手1500であると推論することができる。プロセッサはまた、画像の右側から向けられ、カメラ1501からある距離だけ離れている手が、他の個人の手1501であると推論することもできる。プロセッサはまた、画面の下部から上に伸びるように向けられている第3のセットの手1502が、解剖学的モデルに整合して、ヘッドマウントデバイス10の向きに対して、距離範囲内であり、画像内に位置する場合、ユーザの手であると推論することもできる。追加の感知パラメータもまた、身体部分を認識する際にプロセッサによって使用され得る。たとえば、ユーザの手または腕が追跡されているとき、プロセッサは、表示画像内のすべての他の手が他のユーザに属すると推論することができ、したがって、プロセッサは、ヘッドマウントディスプレイ上に提示された画像内で、それらの残りの手をアウトラインまたは透明としてレンダリングすることができる。
【０１５９】
図16は、処理リソースを活用するために高速データリンク上でモバイルデバイス1605と通信する、ヘッドマウントデバイス1600の別の実施形態を示す。図16は、ヘッドマウントデバイス1600のいくつかの下位構成要素を示す。ヘッドマウントデバイス1600は、モバイルCPU(電話、タブレットなど)のアクセサリーとして動作可能であってもよく、主要な処理はモバイルCPU上で実行される。一般に、ヘッドマウントデバイス1600は、ユーザの頭の周囲に快適に装着されるために可能な限り軽量にされ得る。ヘッドマウントデバイス1600は、モバイルデバイス1605の処理およびデータ記憶リソースを活用することができ、VIRT制御システム1610は、モバイルデバイス1605上で実行しているソフトウェアアプリケーション内で実装され得る。モバイルデバイス1605は、処理をモバイルデバイス1605で実行することによって、ヘッドマウントデバイス1600の処理機能を提供し、メモリを増大し、バッテリー寿命を節約することができる。
【０１６０】
ヘッドマウントデバイス1600は、プロセッサに接続されたシーンセンサ(RGB-Dカメラ)1615を備える。ヘッドマウントデバイス1600はまた、音声センサ(マイクロフォン)1620、および立体視ディスプレイ1625をも含み得る。ディスプレイ1625は、半透明OLEDビデオディスプレイ1625であってもよい。ヘッドマウントデバイス1600はまた、スピーカーを含むイヤバッドを含んでもよく、または、代替として、一対のヘッドフォン1630を含んでもよい。別の実施形態では、ヘッドマウントデバイス1600は、軽量になるように余分な装備をいっさい除いたデバイス1600を備えてもよい。デバイス1600は、ワイヤレスインターフェースと、シーンセンサ1615と、バッテリーと、ディスプレイ1625とを備え得る。ワイヤレスインターフェースは、VIRT制御システム1610を実行するように構成され得るモバイルデバイス1605内のプロセッサにデータを通信し、ヘッドマウント装置がユーザにとって軽量および快適のままであるようにすることができる。図41を参照して、以下でより詳細に説明するように、モバイルデバイス1605は、プロセッサとメモリとを含み、一実施形態では、プロセッサは、ヘッドマウントデバイス1600と相互動作するように構成され得るVIRT制御ソフトウェアモジュール1610とともに構成され得る。モバイルデバイス1605およびヘッドマウントデバイス1600は、ワイヤードまたはワイヤレスであり得る高速データリンク1612を使用して通信することができる。たとえば、高速データリンク1612は、Bluetooth(登録商標)、Wi-Fi(登録商標)、QualcommのPeanut(登録商標)、およびZigBee(登録商標)ワイヤレスプロトコルのうちのいずれか1つまたは複数から選択された、短距離ワイヤレスデータリンク1612であり得る。
【０１６１】
たとえば、センサデータは、センサ1615、1620、および1630を利用してキャプチャされ、デジタルデータに変換され得る。デジタルデータは、ワイヤレスデバイスに通信されてもよく、デジタルデータは、リンクに沿って、モバイルデバイス1605上で動作可能な制御システム1610に通信され得る。制御システム1610は、検知されたデータを処理することができ、ディスプレイデータをレンダリングすることができる。たとえば、制御システム1610は、走査画像と、エリアの距離データとを受信し、仮想オブジェクトを室内の少なくとも1つの表面上に生成することができる。ディスプレイデータは、リンクに沿って通信され戻され、ヘッドマウントディスプレイ1625上に出力され得る。
【０１６２】
図17は、モバイルデバイスとヘッドマウントデバイスとの間の高速リンクを使用して、モバイルデバイスへのセンサデータ処理のオフロードを可能にするための、一実施形態の方法1700を示す。方法1700は、方法1700の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。ブロック1701で、プロセッサは、ヘッドマウントデバイスおよびそのカメラの向きに関するセンサデータを受信することができる。ブロック1702で、プロセッサは、デバイスのカメラから画像データを受信することができる。判定ブロック1704で、プロセッサは、ヘッドマウントデバイスとワイヤレス通信し、処理およびメモリストレージを支援することが可能な、モバイルデバイスが存在するかどうかを判定することができる。Noの場合(すなわち、判定ブロック=「No」)、ブロック1710で、他の実施形態で説明したように、画像がヘッドマウントデバイスによって処理され得る。
【０１６３】
ヘッドマウントデバイスとワイヤレス通信し、処理およびメモリストレージを支援することが可能な、モバイルデバイスが存在する場合(すなわち、判定ブロック=「Yes」)、ブロック1705で、ヘッドマウントデバイスは、モバイルデバイスプロセッサによって処理するために、センサデータをモバイルデバイスへ送ることができる。ブロック1706で、モバイルデバイスプロセッサは、受信されたデータに基づいて、画像内のオブジェクトについての距離および向きデータを計算することができる。ブロック1707で、モバイルデバイスプロセッサは、ヘッドマウントデバイスから受信されたセンサデータおよびカメラデータを使用して、画像データを処理することができる。ブロック1708で、モバイルデバイスプロセッサは、ヘッドマウントデバイスから受信されたセンサデータおよび画像データを使用して、仮想オブジェクトのためのディスプレイデータを生成し、生成されたディスプレイデータをヘッドマウントデバイスへ送信することができる。ブロック1709で、そのヘッドマウントデバイスは、モバイルデバイスから受信されたディスプレイデータを使用して、画像をヘッドマウントディスプレイ上にレンダリングすることができる。このプロセスは、ブロック1701へ戻ることによって継続することができるが、ヘッドマウントデバイスが、モバイルデバイスが存在すると判定すると(すなわち、判定ブロック=「Yes」)、判定は現在のセッションでは繰り返されないことがある。
【０１６４】
図18は、データを共有ユーザメモリに通信して、第2のヘッドマウントデバイスが共有データにアクセスできるようにするための方法1800を示す。方法1800は、画像をレンダリングするための処理時間を軽減することができ、または、仮想オブジェクトを適切に向きが設定されたディスプレイ上に生成するための処理時間を軽減することができる。たとえば、プロセッサは、いくつかの実施形態では、画像データを処理することができ、また、画像データ、または、仮想オブジェクトをより高速にレンダリングするために記憶媒体からロケーションデータを受信することもできる。方法1800は、方法1800の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。
【０１６５】
方法1800において、プロセッサは、カメラの向きに関するセンサデータを受信することによって、動作を開始することができる。ブロック1802で、映像がキャプチャされてもよく、プロセッサは、ステレオ画像データをカメラから受信することができる。ブロック1803で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。ブロック1804で、プロセッサは、センサからの画像データを処理することができる。ブロック1805で、画像が仮想オブジェクトとともにレンダリングされ得る。ブロック1806で、データをリモート記憶媒体と共有し、別のヘッドマウントデバイスが共有データを受信し、共有データを利用できるようにするかどうかに関して、判定が行われ得る。たとえば、他のヘッドマウントデバイスは、位置データを取得することができ、または、共有データを使用して、画像および仮想オブジェクトをレンダリングすることができる。
【０１６６】
プロセッサが、データをリモート記憶媒体と共有するように判定する場合(すなわち、判定1806=「Yes」)、ブロック1807で、データが共有メモリに通信され得る。プロセッサが、データをリモート記憶媒体と共有しないように判定する場合(すなわち、判定ブロック1812=「No」)、プロセッサはブロック1801へ継続して、データをキャプチャし続けることができる。第2のヘッドマウントデバイス10bは、ブロック1808で、記憶媒体からのデータにアクセスすることができ、ブロック1809で、データを受信することができる。ブロック1810で、距離データが計算されてもよく、ブロック1811で、画像が処理され得る。判定ブロック1812で、第2のヘッドマウントデバイス10bによってアグリゲートされるデータを共有するための判定に達し得る。たとえば、データは、走査されたセンサデータ、または、共同作業するための他のデータであってもよい。データは、プロセッサによって送信され、記憶媒体に記憶され得る。プロセッサが、第2のヘッドマウントデバイスによってアグリゲートされたデータを共有するように判断する場合(すなわち、判定ブロック1812=「Yes」)、ブロック1813で、データが共有メモリに通信され得る。プロセッサが、第2のヘッドマウントデバイスによってアグリゲートされたデータを共有しないように判断する場合(すなわち、判定ブロック1812=「No」)、プロセッサはブロック1809へ継続して、画像に関するデータを受信し続けることができる。
【０１６７】
図19は、通信ネットワークを介してデータを共有するため、および、複数のデバイスによって使用するための、一実施形態の方法1900を示す。ヘッドマウントデバイス10は、リソースを第2のモバイル通信デバイス10bと共有することができる。方法1900は、方法1900の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。
【０１６８】
方法1900において、プロセッサは、カメラの向きに関するセンサデータを受信することによって、動作を開始することができる。ブロック1902で、プロセッサは、カメラからステレオ画像データを受信することができる。ブロック1903で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。プロセッサは、画像データと、位置および向きデータとを変換することができる。データは、第2のヘッドマウントデバイスが使用するために、位置データを用いてタグ付けされ得る。第2のヘッドマウントデバイスは、距離、画像、およびタグ付けされた位置データを受信することができる。第2のヘッドマウントデバイスは、最小の処理で画像を画像内の仮想オブジェクトとともにレンダリングするために、データを利用することができる。
【０１６９】
ブロック1904で、プロセッサは、画像内のオブジェクトにタグ付けして、タグ付けされた情報を幾何学的3次元モデルにおいて記憶することができる。タグは、GPSデバイスから取得され得る地理的位置データを備え得る。一実施形態では、位置データは、室内のオブジェクトと、互いに対するオブジェクトの相対位置とを記述することができる。別の実施形態では、各オブジェクトに、オブジェクトの向きを含むGPS座標が割り当てられ得る。一実施形態では、タグは、少なくとも4つの分離された位置座標を備え得る。さらなる実施形態では、仮想オブジェクトに関連付けられたデータもまた、位置データを用いてタグ付けされ得る。ブロック1905で、プロセッサは、センサデータ、カメラデータ、画像の向き、および距離データを使用して、画像を処理することができる。ブロック1906で、プロセッサは、モデルにおける物理的環境をレンダリングすることができる。モデルは、プロセッサによって記憶媒体にアップロードおよび送信されてもよく、記憶媒体は、他のヘッドマウントデバイス、または他のヘッドマウントデバイスに接続された別個のプロセッサによってアクセス可能であり得る。本明細書で説明するように、ヘッドマウントデバイスは、外部のプロセッサおよび記憶媒体(たとえば、スマートフォン、パーソナルコンピュータ、または、ローカルワイヤレスネットワークを介してアクセス可能なサーバ)を活用することによって、軽量となるように構成され得る。第2のヘッドマウントデバイスは、その位置を決定することができ、現在位置に関係する走査データにアクセスするための記憶媒体への要求を形成することができる。記憶媒体は、この要求を受信することができる。記憶媒体は、位置に基づいて、データをヘッドマウントデバイスに通信することができる。
【０１７０】
判定ブロック1907で、プロセッサは、データを共有するかどうかを判定することができる。そうである場合(すなわち、判定ブロック1907=「Yes」)、プロセッサは、データを共有し、データを、第2のユーザに関連付けられたモバイルデバイスに通信することができ(ブロック1908)、または、コンピューティングデバイスが記憶媒体からのデータを要求することができる場合、記憶媒体に通信することができる。たとえば、記憶媒体は、別のコンピューティングデバイス、サーバ、またはネットワーク分散コンピューティングデバイスを含み得る。プロセッサが、データを共有しないように判定する場合(すなわち、判定ブロック1907=「No」)、プロセッサはブロック1901へ継続して、ブロック1902で、カメラの向きに関してセンサからデータを受信すること、および、画像をキャプチャすることを継続することができる。ブロック1908で、第2のヘッドマウントデバイスは、共有データにアクセスすることができる。ブロック1909で、プロセッサは、仮想オブジェクトをレンダリングするための処理の量を減らしながら、共有データを利用して、仮想オブジェクトを表示することができる。
【０１７１】
図20は、サーバを使用して、仮想オブジェクトをレンダリングするために少なくとも2つのヘッドマウントデバイス間で位置座標データおよび走査データを共有するための、一実施形態の方法2000を示す。たとえば、プロセッサは、複数のデバイスが共有データを取得することによって、画像データ、位置データ、向きデータ、距離データを処理し、画像内で仮想オブジェクトをより迅速にレンダリングできるように、それらのデバイスが使用するために通信ネットワーク上でデータを共有することができ、または、ソフトウェアアプリケーション間の共同作業のために有用な他のデータを共有することができる。たとえば、あるユーザは、メモリに記憶された別のユーザのファイルにアクセスすることが可能であり得る。方法2000は、プロセッサが他のデバイスと共同作業し、リソースを共有することを可能にする。方法2000は、方法2000の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。ブロック2001で、プロセッサは、第1のヘッドマウントデバイスに関連付けられたアプリケーションを実行することによって、動作を開始することができる。
【０１７２】
ブロック2002で、プロセッサは、ヘッドマウントデバイスに関連付けられる入力/出力チャネルを開くことができる。プロセッサは、ブロック2003で、第2のヘッドマウントデバイスを用いてアプリケーションを実行し、ブロック2004で、チャネルを開いて、チャネルを介して通信することができる。ブロック2005で、プロセッサは、共有サーバ上でアプリケーションを実行することができる。ブロック2007で、プロセッサは、RFチャネルを使用して、サーバおよび両方のヘッドマウントデバイスへの接続を作成することができる。ブロック2008で、プロセッサは、第1および第2のヘッドマウントデバイスと、サーバとを使用して、共同作業することができる。ブロック2009で、プロセッサは、音声データを共有することができる。ブロック2010で、プロセッサは、サーバにおいてデータファイルを共有し、文書を同期させることができる。ブロック2011で、プロセッサは、新しいコマンドを求めて、モバイルデバイスにおいて音声ジェスチャーを検出することができる。
【０１７３】
また、上記で説明したように、ヘッドマウントデバイスのうちの1つまたは複数によって生成された画像および音声データの、サーバとの共有は、他者が、サーバからの画像および音声データを受信するヘッドマウントデバイスを装着することによって、参加者と同じものを見聞きすることによって、仮想または拡張現実体験における共同作業を観察することを可能にすることができる。観察者のヘッドマウントデバイス間、および、サーバと参加者のヘッドマウントデバイスとの間の双方向通信を可能にすることによって、ヘッドマウントデバイスを装着する観察者はまた、ヘッドマウントディスプレイにおいて見られる仮想オブジェクトと対話する能力を有することもできる。仮想オブジェクトとの観察者の対話は、拡張に接触して効果を引き起こすこと、対話型エリアまたはアンカーポイントを物理的表面上で定義すること(新しい拡張を共有された体験に効果的に追加すること)、ならびに、ジェスチャーおよび/または音声入力を介して、共有された複合現実シーンと対話することを含み得る。観察者によって行われた仮想体験におけるそのような変更のいずれも、参加者および他の観察者によって装着されたヘッドマウントディスプレイに反映され得る。
【０１７４】
図21は、サーバを使用して、識別可能ディレクトリを介して、少なくとも2つのデバイス間でデータを共有する、一実施形態の方法2100を示す。ディレクトリは、所定のエリア内で他の可能なデバイスおよびヘッドマウントデバイスを識別することができる。ヘッドマウントデバイスがあるエリアに入ると、ヘッドマウントデバイスは、アドレス情報をディレクトリ上に登録することができ、記憶することができ、ディレクトリは、他のヘッドマウントデバイスと共有され得る。代替実施形態では、または、実施形態の可能な実装形態では、走査機能が、スマートフォンなどの付属のプロセッサユニットによって実行され得る。別個のデバイスによるエリアの走査の使用は、軽量ヘッドマウントデバイスが使用されるとき、特に適切であり得る。このようにして、ヘッドマウントデバイスは、中央ロケーションから、他のヘッドマウントデバイスが共同作業のために、および走査リソースを共有するために利用可能であるかどうかを、迅速に判定することができる。方法2100は、方法2100の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。ディレクトリは、利用可能なデバイスについての情報を提供するコンピュータ可読データであり得る。これは、複数のデバイスによって使用するために、通信ネットワーク上でデータを共有することを容易にする。たとえば、ディレクトリは、その位置を知っているデバイス10が、仮想オブジェクト14をレンダリングするために、ディレクトリをチェックして、走査データを取得できるように、ディレクトリに関連付けられたジオタグをもつビル内の走査エリアについての情報を含み得る。たとえば、データは、仮想オブジェクト14についてのデータを含んでもよく、エリア内の1つまたは複数の表面についてのデータ、向きデータ、オブジェクト位置データ、または、迅速に取得され得る、いずれかの他の有用もしくはプロセッサ集約的なデータを含み得る。
【０１７５】
実施形態の方法2100は、共同作業およびリソースの共有を可能にして、ヘッドマウントデバイス自体によって実行される処理の量を最小限に抑える。方法2100において、ブロック2101で、プロセッサは、アプリケーションを実行中であり得る第1のヘッドマウントデバイスから、共同作業するための入力要求を受信することによって、動作を開始することができる。ブロック2102で、プロセッサは、共同作業のために、近くのデバイスを求めてピアツーピア検索を開始することができる。判定ブロック2103で、プロセッサは、発見されたデバイスと共同作業するかどうかを判定することができる。そうである場合(すなわち、判定ブロック2103=「Yes」)、プロセッサは、デバイス間の接続を作成することができる。プロセッサは、双方向通信リンクを使用して共同作業することができる。ブロック2104で、通信リンクが、第1のヘッドマウントデバイス10aと第2のヘッドマウントデバイス10bと間に形成され得る。
【０１７６】
プロセッサは、サーバ内のディレクトリにアクセスすることができる。ブロック2105で、ディレクトリをする利用するプロセッサは、ディレクトリを走査することによって、他のユーザが共同作業に応じられるかどうかを判定することができる。判定ブロック2106で、プロセッサは、新しいユーザを選択するかどうかを判定することができる。プロセッサは、入力に基づいて、または判断ルールエンジンに基づいて、1つまたは複数のあらかじめ定義された関係ルールに基づいて共同作業することができる新しいユーザを選択するかどうかを判定することができる。プロセッサが、新しいユーザを選択するように判定する場合(すなわち、判定ブロック2106=「Yes」)、プロセッサは、判定ブロック2107に進んで、共同作業するために新しいユーザへの接続を作成するかどうかを判定することができる。判定ブロック2107で、プロセッサは、新しいユーザと共同作業するかどうかを判定することができる。プロセッサが、新しいユーザと共同作業するように判定する場合(すなわち、判定ブロック2107=「Yes」)、ブロック2108で、プロセッサは、関連のあるデバイスへの接続を作成することができ、第1のヘッドマウントデバイスおよび第2のヘッドマウントデバイスを使用して共同作業することができる。
【０１７７】
プロセッサが新しいユーザと共同作業しないように判定する場合(すなわち、判定ブロック2107=「No」)、ブロック2109で、プロセッサは、さらなるユーザが予想されないという内容、および既存の参加者とともに共同作業を開始するための、メッセージをユーザに出力するようになる。プロセッサが新しいユーザを選択しないように判定する場合(すなわち、判定ブロック2106=「No」)、プロセッサは、共同作業が拒絶されると仮定するようになる。ブロック2109で、プロセッサは、さらなるユーザが予想されないという内容、および既存の参加者とともに共同作業を開始するための、メッセージを出力することができる。
【０１７８】
図22は、2つの異なる地理的ロケーションに位置する、第1のヘッドマウントデバイス2205および第2のヘッドマウントデバイス2210のハイレベル図を示す。図22は、第1のヘッドマウントデバイス2205および第2のヘッドマウントデバイス2210のいくつかの構成要素、および、ヘッドマウントデバイス2205とヘッドマウントデバイス2210との間でデータ交換機能を提供することができるVIRTサービス構成要素2265をも示す。第1のヘッドマウントデバイス2205および第2のヘッドマウントデバイス2210は、走査エリアの3次元マップを含むデジタルアセットを共有して、新しいロケーションに入る新しいヘッドマウントデバイスにおける処理を減らすことができる。この共有はバッテリー寿命を延ばすことができ、迅速な方法で画像のレンダリングを支援することができる。別の実施形態では、あるユーザの走査された3次元マップは、第2のユーザのマップを補うことができる。別の実施形態では、あるユーザのマップは、第2のユーザのマップと入れ替わることができる。さらなる実施形態では、あるユーザのマップを参照および使用して、別のものの走査データをチェックすることができる。たとえば、この参照は、所定の時間フレーム内で行われ得る。
【０１７９】
時間フレームの満了時、または、処理制約が負担になる場合、第2のユーザは、第1のユーザのマップを利用することができる。別の実施形態では、第1のヘッドマウントデバイス2205および第2のヘッドマウントデバイス2210は、互いに対して2つの遠い地理的ロケーションに位置することがあり、同様のエリアを走査しないことがある。したがって、デジタルアセットおよび仮想オブジェクトがヘッドマウントデバイス2205とヘッドマウントデバイス2210との間で共有されるようになる間、マップデータを共有する必要がないことがあり、その理由は、そのような情報が共同作業に関連のあるようにならないからである。代わりに、3次元マップの共有は、ヘッドマウントデバイス2205およびヘッドマウントデバイス2210がエリアを走査することが必要とされる、すぐ近くに、または同じビル内に位置するユーザにとって、最も有用であり得る。
【０１８０】
第1のユーザは、ディスプレイ2215と、スピーカー2220と、画像シーンセンサ2225と、音声センサ2230とを有し得る、第1のヘッドマウントディスプレイデバイス2205を操作する。第1のヘッドマウントデバイス2205はまた、ワイヤレスまたはワイヤードインターフェース2260と、いくつかの制御構成要素を含むコントローラとを含み得る。別の実施形態では、ヘッドマウントデバイスは、ディスプレイ2215と、ワイヤレスインターフェース2260と、バッテリー(図示せず)と、スピーカー2220と、マイクロフォン/音声センサ2230とを備え得る。構成要素には、シーンマネージャブロック2235と、ユーザ制御ブロック2240と、表面マネージャブロック2245と、音声マネージャブロック2250と、情報アクセスブロック2255とが含まれる。
【０１８１】
第2のユーザもまた、同様の構成要素を含む、第2のヘッドマウントデバイス2210を操作する。第2のデバイス2210は、ディスプレイ2215aと、スピーカー2220aと、画像シーンセンサ2225aと、音声センサ2230aとを有し得る。第2のデバイス2210はまた、ワイヤレスまたはワイヤードインターフェース2260aと、コントローラとを含み得る。コントローラは、シーンマネージャ2235aと、ユーザ制御ブロック2240aと、表面マネージャブロック2245aと、音声マネージャブロック2250aと、情報アクセスブロック2255aとを含む、いくつかの制御構成要素を含む。
【０１８２】
デバイス2205および2210の各々は、デバイス2205および2210の各々のためのサービス機能を提供することができる制御プロバイダ2265と通信する。制御プロバイダ2265は、2つのデバイス2205および2210を支援することができ、デバイス2205および2210が軽量のままであり、必ずしも計算集約的な処理をローカルで実行する必要があるとは限らないように、それらのデバイスに代わってサービスを提供することができる。いずれかの2つの、インターネットに接続されたデバイスと同様に、制御プロバイダ2265は、ファイアウォール2285および2285aを実装して、それらのデバイスをハッキング攻撃およびマルウェアから保護することが必要となり得る(たとえば、ローカルソフトウェア、インターネットサービスプロバイダ、および/または企業サービスプロバイダによって提供され得る)。ファイアウォール2285および2285aは、制御プロバイダ2265へのアクセスを制限する。別の実施形態では、ファイアウォール2285および2285aは、任意であり、不在である。
【０１８３】
制御プロバイダ2265は、ディレクトリ2280を含んでもよく、ディレクトリ2280は、デバイス2205および2210への識別およびルーティング情報を含む、多数のデバイスに関係するデータを維持する。制御プロバイダ2265はまた、シーン記憶ブロック2270をも含み得る。シーン記憶ブロック2270は、走査画像の表面および輪郭情報に関係するデータを処理する。表面および輪郭データは、距離、形状、および向きデータを含み得る。シーン記憶ブロック2270は、第1のユーザが第1のエリアのマップを作成し、そのデータを第2のユーザのヘッドマウントデバイスの利益のために記憶して、より迅速にシーンをレンダリングし、または、走査されたデータパラメータを検証することを可能にすることができる。制御プロバイダ2265は、デジタルアセットの共有を可能にする。制御プロバイダ2265は、最適化され得る、ワイヤレスインターフェース2260と2260aとの間の通信リンクを提供することができる。制御プロバイダ2265はまた、異なるネットワークトポロジー、ファイアウォール、およびIPアドレス指定アーキテクチャによる接続性を可能にすることもできる。
【０１８４】
各デバイス2205および2210は、ロケーションデータを、マップ作成および走査画像と走査表面とに関係して収集されたデータに埋め込むことができる。たとえば、第1のヘッドマウントデバイス2205は、室内のオブジェクトを含む部屋を走査することができる。この走査は、オブジェクトについての位置データと、オブジェクトの輪郭データと、オブジェクトからヘッドマウントデバイスまでの距離データと、ヘッドマウントデバイスおよびオブジェクトの向きデータとの、アグリゲーションおよび集合を生じ得る。この走査はデータを生じることができ、このデータがルータ2275に通信され得る。データとともに、第1のヘッドマウントデバイス2205のプロセッサは、ロケーションデータを走査データに埋め込むことができる。ロケーションデータは、経度、緯度、および高度の座標であり得る。第1のヘッドマウントデバイス2205は、ローカルの物理的環境内の各表面を指定する。プロセッサは、どの共有データが各表面上に配置され得るかを識別し、別のデバイスが迅速にデータを探して利用することが可能であり得るようにすることが可能であってもよい。
【０１８５】
第1のヘッドマウントデバイス2205は、クラウドベースのサービス2265にデータを書き込むことができる。そのようなサービス2265は、ヘッドマウントデバイスのための計算、ソフトウェア、データアクセス、および記憶サービスを提供することができる。ヘッドマウントデバイスは、サービス2265の物理的ロケーションおよび構成のエンドユーザ知識を必要としない。クラウドベースのサービスに2265は、その上に記憶されたルックアップディレクトリ2280を有し得る。サービス2265は、サーバ上に存在する。サービス2265のリソースは、ヘッドマウントデバイス上で実行可能なウェブアプリケーション/ウェブサービスを介して、インターネット上で、きめの細かいセルフサービスに基づいて、ヘッドマウントデバイスに動的にプロビジョンされ得る。サービス2265は、オフサイトのサードパーティプロバイダ上に位置してもよい。ディレクトリ2280は、第1のデバイス2205を支援し、リモートユーザ2205と2210との間でルータ2275を介した接続性を可能にする。このようにして、第2のヘッドマウントデバイス2210は、ヘッドマウントデバイス2210が特定のロケーションにあると決定することができ、そのロケーションをルータ2275に通信することができる。サービス2265は、動的にスケーラブルなリソースのプロビジョニングを含み得る。プログラムがユーザ自身のヘッドマウントデバイス上にローカルでインストールされたかのように、ユーザがウェブブラウザを通してアクセスおよび使用することができる、ウェブベースのツールまたはアプリケーションが、ヘッドマウントデバイスにロードされ得る。サービス2265は、インターネットを介してアプリケーションを配信することができ、それらのアプリケーションは、ウェブブラウザからアクセスされるが、ソフトウェアおよびデータは、リモートロケーションにおけるサーバ上に記憶されている。サービス2265は、共有データセンターを通して送信され、ヘッドマウントデバイスにとって単一のアクセスポイントとして見え得る。応答して、第1のヘッドマウントデバイス2205から生成された、シーンストア2270からのデータが、シーンマネージャブロック2235aおよび表面マネージャブロック2245aへ送信されて、画像をレンダリングするための
追加の計算処理が回避され得る。第2のヘッドマウントデバイス2210は、シーンセンサブロック2225aによって生成されたデータを検証することができ、または、シーンストアブロック2270から送信されたデータを利用して、画像をディスプレイ2215a上にレンダリングして、画像をレンダリングするための追加の計算処理を回避することができる。
【０１８６】
図23は、第1のヘッドマウントデバイス2205のためのハイレベル図を示す。第1のヘッドマウントデバイス2205は、第2のヘッドマウントデバイス2210に極めて接近して位置してもよい。ヘッドマウントデバイス2205および2210は、1つまたは複数の高速ワイヤレスデータリンクを介して、データを交換することができる。第1のヘッドマウントディスプレイデバイス2205は、ディスプレイ2215と、スピーカー2220と、画像シーンセンサ2225と、音声センサ2230とを有し得る。第1のヘッドマウントデバイス2205はまた、ユーザデータストア2301へのワイヤードインターフェース接続を含んでもよく、そこでデータがアクセスのために書き込まれ得る。第1のデバイス2205はまた、共有データ記憶2302へのワイヤードまたはワイヤレス接続を含んでもよく、共有データ記憶2302は、第2のモバイル通信デバイスがアクセスすることができるメモリであり得る。第1のデバイス2205はまた、シーンマネージャ2235と、ユーザ制御ブロック2240と、表面マネージャブロック2245と、音声マネージャブロック2250と、情報アクセスブロック2255とを含む、いくつかの制御構成要素を含む、コントローラを有してもよい。
【０１８７】
第2のユーザもまた、第1のヘッドマウントデバイス2205と同様の構成要素を含む、第2のヘッドマウントデバイス2210を操作する。第2のデバイス2210は、ディスプレイ2215aと、スピーカー2220aと、画像シーンセンサ2225aと、音声センサ2230aとを有し得る。第2のデバイス2210はまた、ワイヤレスまたはワイヤードインターフェースをも含み得る。第2のデバイス2210は、ユーザデータストアメモリ2303にデータを書き込み、ユーザデータストアメモリ2303からデータを読み取ることができる。第2のデバイス2210はまた、第1のデバイス2205によってアクセス可能な共有データストアメモリ2302へのデータを読み取り、書き込むこともできる。第2のデバイス2210はまた、いくつかの制御構成要素またはモジュールを含むコントローラをも有し得る。第2のデバイス2210は、シーンマネージャブロック2235aと、ユーザ制御ブロック2240aと、表面マネージャブロック2245aと、音声マネージャブロック2250aと、情報アクセスブロック2255aとを含み得る。
【０１８８】
この点について、ユーザは、指定されている走査表面データのセットを共有することができる。ユーザは、仮想オブジェクトとして表面上に配置される仮想アセットと対話することができる。第1のデバイス2205および第2のデバイス2210は、ローカルの高速ワイヤレスデータキャリア(たとえば、Wi-Fi(登録商標)、Qualcomm(登録商標)Peanut(登録商標)短距離通信規格、およびQualcomm(登録商標)FlashLinQ(登録商標))上で通信することができる。追加のユーザが存在する場合、デバイス2205、2210は、ピアツーピア接続、またはブロードキャスト、ユニキャスト、もしくはマルチキャストを介して、さらに通信することができる。
【０１８９】
図24は、サーバを使用して、ロケーション情報を用いてデータにタグ付けし、ディレクトリを介して、タグ付けされたデータを少なくとも2つのヘッドマウントデバイス間で共有する、一実施形態の方法2400を示す。方法2400は、方法2400の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。ディレクトリは、走査された3次元マップについての情報を提供することができる。たとえば、ヘッドマウントデバイスは、赤外光を放出し、高速ゲーティング機構を介して赤外光の飛行時間を計算することができ、ヘッドマウントデバイス10からのあるオブジェクトの距離を決定するために、この計算を記憶することができる。加えて、ヘッドマウントデバイス10は、エリアを走査して、オブジェクトの向きを決定し、表面、およびオブジェクトの構造情報、ならびに、高さ、幅、長さ、および距離情報を決定することができる。
【０１９０】
方法2400のブロック2401で、プロセッサは、ヘッドマウントデバイスからデータを受信することによって、動作を開始することができる。ブロック2402で、プロセッサは、画像データを受信することができる。ブロック2403で、プロセッサは、距離および向きを計算することができる。ブロック2404で、プロセッサは、コンテンツを表示のために処理することができる。ブロック2405で、プロセッサは、画像を、表示画像内に含まれた仮想オブジェクトとともにレンダリングすることができる。判定ブロック2406で、プロセッサは、別のヘッドマウントデバイスが画像データを利用できるように、ロケーション情報を用いて画像にタグ付けするかどうかを判定することができる。
【０１９１】
第2のデバイスは、画像データを計算することができ、第1のデバイス走査機能をリソースとして利用して、走査されたパラメータを参照として検証することができる、第2のプロセッサを含み得る。別の実施形態では、第2のデバイスは、走査データをインポートすることができる。インポートされたデータを使用して、第2のデバイスは、表示画像を、表示画像内の少なくとも1つの表面上にアンカーされた仮想オブジェクトとともに、レンダリングすることができる。このことは、第2のヘッドマウントデバイス10bがあるロケーションに入るとき、行われ得る。第2のヘッドマウントデバイス10bは、あるエリア、たとえば室内のそのロケーションを決定し、次いでロケーションデータを通信し、それによって、第1のヘッドマウントデバイス10の走査データを求める要求を形成することができる。
【０１９２】
プロセッサが、ロケーション情報を用いて画像にタグ付けするように判断する場合(すなわち、判定ブロック2406=「Yes」)、ブロック2407で、プロセッサは、ディレクトリのためのロケーション情報を用いて走査データにタグ付けし、データをサーバ上に記憶して、別のヘッドマウントデバイス10bが走査データにアクセスできるようにすることができる。一代替では、データをサーバ上に記憶する代わりに、ブロック2407で、データが、共有ネットワークを介してアクセス可能なメモリなど、共有メモリに記憶され得る。プロセッサが、ロケーション情報を用いて画像にタグ付けしないように判断する場合(すなわち、判定ブロック2406=「No」)、ブロック2408で、プロセッサは、共有データを利用するために他のデバイスが利用可能でないと決定することができ、今のユーザのために仮想オブジェクトをレンダリングするために、エリアの走査を継続するようになる。
【０１９３】
図25Aは、3つのモバイルデバイス2501、2502、および2503と、サーバ2504とをもつ、システム2500の一実施形態を示す。デバイス2501〜2503およびサーバ2504は、走査データおよびマップ情報を交換する。マップは、部屋の走査されたパラメータを含み得る。マップは、画像内のオブジェクトの形状およびサイズを含む、フラットスクリーンディスプレイ2530およびテーブル2532など、画像内の表面の識別を含み得る。マップはまた、オブジェクトがデバイスから位置する距離および角度、または、部屋もしくは任意の座標にリンクされた基準系内の座標位置をも含み得る。たとえば、マップは、部屋の特定の隅を定義する3つの軸(たとえば、長さ、幅、高さ)に沿ってなど、3つの直交する座標軸に沿って、原点からのメートル数で、オブジェクトのロケーションを識別することができる。マップは、オブジェクトがキャプチャされたデバイスの3次元位置およびロケーションに関係する、ヘッダを含み得る。マップデータは、デバイスが画像データを走査する各位置から、サーバ2504へアップロードされてもよく、サーバは、すべてのヘッドマウントデバイスから、およびすべてのロケーションからの、距離測定値および画像を使用して、部屋にリンクされた基準系に基づいて、マップを構築することができる。そうするために、サーバ2504は、すべての受信されたロケーションデータにおいて座標変換を実行して、オブジェクトを部屋の長さ、幅および高さ座標に対して位置特定するためになど、距離測定値を、ヘッドマウントデバイス中心の球座標(すなわち、ヘッドマウントデバイスから各オブジェクトまでの距離および角度)から、任意の直線座標系へ変換することができる。そのような座標変換を達成するための数学およびアルゴリズムは、当技術分野でよく知られている。
【０１９４】
システム2500の実施形態は、ヘッドマウントデバイスに限定されないが、代わりに、異なるコンピューティングデバイスにさらに適用可能であり得る。代替として、ヘッドマウントデバイス10は、モバイルCPU(電話、タブレットなど)のアクセサリーであってもよく、主要な処理がモバイルCPU上で実行され、データがモバイル電話とヘッドマウントデバイス(図示せず)とによって、それらの間で交換される。図25Aは、中央データベースサーバ2504を使用して、迅速に画像を走査およびレンダリングするために、どのように共同作業が行われ得るかを示す。たとえば、デバイス2501、2502、および2503は、飛行時間計算によって、室内のオブジェクトおよび表面までの距離を測定するために、光または超音波を放出および検知するためのデバイスを含み得る。別の実施形態では、RGB-Dカメラが、画像データをキャプチャすることができる。デバイス2501、2502、および2503は、走査データを利用して、仮想オブジェクトを生成し、仮想オブジェクトを画像の少なくとも1つの表面上にアンカーし、仮想オブジェクトを、キャプチャされた画像とともにレンダリングして、仮想または拡張現実体験を提供することができる。
【０１９５】
第1のデバイス2501は、部分的なマップを作成し、マップをサーバ2504にアップロードすることができる。部分的なマップは、ロケーション52.23.0.14の画像内の第1のオブジェクトおよび第2のオブジェクトに関係するデータを含み得る。マップは、ロケーションを識別するヘッダを含み得る。マップはまた、デバイス2501からの距離、オブジェクトの長さ、オブジェクトの幅、およびオブジェクトの高さ、オブジェクトの向き、ならびに、壁、天井、戸口などからのオブジェクトの距離を含む、走査画像についての実質的なデータをも含み得る。各オブジェクトの個々の座標および位置データもまた、マップに記録および記憶され得る。
【０１９６】
第2のデバイス2502は、座標(52.23.0.14)によってそのロケーションをサーバ2504に報告することができ、この座標は、第1のデバイス2501によってすでに走査されていることがある、所定のロケーションに対応する。第2のデバイス2502は、ロケーションデータをサーバ2504にアップロードすることができる。サーバ2504は、ロケーションデータを受信することができる。第2のデバイス2502は、部分的なマップが利用可能であるというメッセージを受信することができる。第2のデバイス2502は、第1のデバイス2501によって形成された部分的なマップをダウンロードすることができる。実質的に同時に、第2のデバイス2502は、部屋の異なる部分を走査中であってもよい。たとえば、第2のデバイス2502は、第1のテーブルに隣接する部屋の一部分を走査することができる。第2のデバイス2502は、走査データを利用し、走査データをダウンロードされたマップとマージして、表示画像を仮想オブジェクトとともにレンダリングすることができる。第2のデバイス2502はまた、更新されたマップをサーバ2504にアップロードすることもできる。
【０１９７】
第3のデバイス2503もまた、そのロケーションデータ52.23.0.14を、要求の形態で供給することができる。サーバ2504は、ロケーションデータ52.23.0.14および座標を受信し、適切なデータセットを選択し、走査データのデータセットをマップの形態で第3のデバイス2503へ送信することができる。第3のデバイス2503は、第1のデバイス2501の走査データと、第2のデバイス2502の走査データとを含む、マップデータをダウンロードすることができ、第2のデバイス2502の走査データは、第1のデバイス2501の走査データを補うことができる。別の実施形態では、このデータが補わないことがあり、代わりに、第2のデバイス2502は、第1のデータセットが正確であるかどうかを判定するために走査することができ、そのデータセットを検証することができる。別の実施形態では、そのデータが不正確である場合、第2のデバイス2502は、第1のデバイス2501の走査データを置き換えることができる。
【０１９８】
第3のデバイス2503は、マップを利用して、表示画像を仮想オブジェクトとともにレンダリングすることができる。図示のように、第3のデバイス2503は、更新されたマップを利用して、薄型テレビ2530およびテーブル2532を含む、画像内のオブジェクトのロケーションを迅速に決定することができる。第3のデバイス2503は、画像データをさらにキャプチャすることができ、部屋の新しいエリアを走査することができ、また、マップの更新に対応するデータをサーバ2504にアップロードすることもできる。このようにして、デバイス2501、2502および2503の各々は、画像全体をローカルで処理する必要がなく、仮想オブジェクトおよび表示画像をより迅速にレンダリングするためのサービスを取得することができる。
【０１９９】
デバイス2501、2502および2503の各々と、サーバ2504とは、迅速にマップを受信し、走査データおよびマップ構成要素をつなぎ合わせて、迅速にシーンをレンダリングするために、互いに最適化され得る。たとえば、デバイス2501が新しいロケーションにあり、記録された走査画像がなかった場合、デバイス2501は、エリア全体を走査することができる。たとえば、デバイス2501は、代替として、走査データが古く、しばらく前に記録されたと決定することができる。デバイス2501は、走査データが古いと決定し、エリア全体を走査するように判断することができる。
【０２００】
代替として、デバイス2501は、走査データが生じてからの時間をしきい値と比較することができ、エリア全体を走査するかどうかの判定を行うことができる。たとえば、デバイス2501は、部屋全体を走査するための時間を計算することができ、部屋全体を走査するための時間が、処理要件に基づく所定の限度を上回る場合、古いマップを受け入れるか、または拒否することができる。代替として、デバイス2501は、他のデバイス2502、2503のロケーションを監視し、監視されたロケーションに基づいて、走査画像を受信するための要求を形成することができる。たとえば、デバイス2501は、デバイス2502、2503が遠く離れて位置する異なる遠いエリアにあり、マップを求める要求が、無関係なデータ(有用でない)をレンダリングする可能性があり、要求を編成することが不要であると、決定することができる。さらに別の実施形態では、いくつかのデバイス2501、2502および2503が存在する場合、より迅速な方法で部屋を走査するために、各デバイスは、室内の異なるエリアを走査することができる。
【０２０１】
図25Bは、ヘッドマウントディスプレイ上に仮想オブジェクトを生成するために利用されるデータのクラウド記憶および検索のための、一実施形態の方法2506を示す。方法2506は、方法2506の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。仮想オブジェクトを生成することは、仮想画像を室内の1つまたは複数の表面にアンカーするために、オブジェクトの距離、オブジェクトの形状、および、オブジェクトの向きを決定するために、室内の表面の集中的な走査を必要とすることがある。いくつかのヘッドマウントデバイスは、データをローカルで処理することを回避し、走査データを検証するために、それらのロケーションをクラウドにダウンロードし、仮想オブジェクトを表面上にレンダリングすることを支援するための正確なデータを即時に受信することができる。方法2506において、ブロック2508で、プロセッサは、ヘッドマウントまたはボディマウントカメラを用いて、ユーザの画像をキャプチャすることによって、動作を開始することができる。ブロック2510で、プロセッサは、部屋のエリアを走査するためのプログラム命令を与えて、センサアレイを用いて空間データをキャプチャすることができる。このことは、赤外光放出デバイスを用いて走査すること、および、表面から反射された赤外光の飛行時間を測定することによって達成され得る。
【０２０２】
このデータはまた、部屋の3次元マップを生成することができるプロセッサにも供給され得る。ブロック2512で、プロセッサは、キャプチャされた画像内でオブジェクトを認識することができ、キャプチャされた画像内のオブジェクトの距離パラメータを決定することができ、また、画像内に含まれている表面の向きを決定することもできる。ブロック2514で、プロセッサは、仮想オブジェクトを生成することができる。一実施形態では、仮想オブジェクト14は、コンテンツを出す共同作業的フラットスクリーン3次元オブジェクト14に似ていてもよい。仮想オブジェクト14は、画像内の表面16にアンカーされてもよく、ユーザは、部屋を歩き回ることができるが、仮想オブジェクトが所望のアンカー表面にアンカーされたままになるように、仮想オブジェクト表示パラメータが変化する。プロセッサは、ブロック2516で、仮想オブジェクトを表示するための距離および向きを含むパラメータを計算することができ、ブロック2518で、計算されたパラメータにタグ付けし、計算されたパラメータをクラウドサーバにアップロードすることができる。プロセッサは、ジオタグであり得るロケーションタグを用いて、計算されたパラメータをタグ付けすることができる。別の実施形態では、ジオタグは、緯度座標、経度座標、高度座標、方位座標、距離座標、および精度データを含み得る。ジオタグは、地理的識別メタデータを、様々なアップロードされるパラメータに追加する。ジオタグは、ユーザが、走査エリアの3次元マップ内で幅広いロケーション固有の情報を発見する際に役立つことがある。
【０２０３】
判定ブロック2520で、プロセッサは、第2のヘッドマウントデバイスが、特定のロケーションのためにより高速に仮想オブジェクトを生成するために、補足的な共有データを受信するためのロケーションに入っているかどうかを判定することができる。たとえば、第2のヘッドマウントデバイスは、同じ室内にあることがあり、信号を第1のヘッドマウントデバイスに発することができ、または、信号をクラウドサーバに発することができ、クラウドサーバは、第2のデバイスが特定のロケーションに入っていると決定する。画像を処理することは、いくつかのデバイスにとっては負担になり得る。また、部屋を走査することもまた、時間がかかり得る。第2のヘッドマウントデバイスは、したがって、第1のヘッドマウントデバイスがすでに行っている作業を利用し、オブジェクトおよび室内の表面に関係して計算されたパラメータを受信して、第2のユーザのための仮想オブジェクトをより高速に生成することができる。
【０２０４】
プロセッサが、第2のヘッドマウントデバイスが新しい部屋に入っていると判定する場合(すなわち、判定ブロック2520=「Yes」)、ブロック2522で、第2のヘッドマウントデバイスは、ナビゲーションデバイスからそのロケーションデータを送信することができ、タグ付けされた計算されたパラメータをサーバからダウンロードすることができる。ブロック2524で、第2のヘッドマウントデバイスのプロセッサは、アクセスおよびタグ付けされた計算されたパラメータを使用して、仮想オブジェクトを生成することができる。プロセッサが、ロケーションを変更していないと判定する場合(すなわち、判定ブロック2520=「No」)、プロセッサは、別の第3のヘッドマウントデバイスがすでにエリアを走査し、アンカーされた仮想オブジェクト生成した場合、計算されたパラメータが正しいことを検証するための動作を実行することができる。ブロック2526で、第1のヘッドマウントデバイスは、ナビゲーションデバイスからそのロケーションを送信することができ、計算されたパラメータをサーバからダウンロードすることができる。ブロック2528で、プロセッサは、サーバからダウンロードされた計算されたパラメータを用いて、計算されたパラメータを検証することができる。
【０２０５】
別の実施形態では、オブジェクトの距離および向きを含む、計算されたパラメータの代わりに、特定のエリアの3次元マップが形成され、クラウドサーバにアップロードされ得る。タグまたはロケーションデータが、ヘッダの形態で3次元マップメッセージに埋め込まれてもよく、3次元マップは、第2のヘッドマウントデバイスによるアクセスのためにクラウドサーバに送信および記憶され得る。たとえば、第2のヘッドマウントデバイスがあるエリアに入るとき、第2のヘッドマウントデバイスは、そのロケーション座標をアップロードすることができ、部屋または所定のエリアの3次元マップをダウンロードすることができる。第2のヘッドマウントデバイスは、画像内でオブジェクトを認識することができ、3次元マップを利用して、画像内のオブジェクトの距離パラメータを決定することができる。このことは、空間データの最小の処理と、第2のヘッドマウントコンピューティングデバイスにおいてキャプチャされた画像とを用いて行われ得る。別の実施形態では、メタデータがクラウドサーバに記憶され得る。メタデータは、異なるヘッドマウントデバイスによってアクセスされ得る、キャプチャされたオブジェクトの距離および向きを含み得る。メタデータはまた、室内のオブジェクトのロケーションに関係する屋内ロケーションデータと、そのデータが古いかどうかを判定するためにプロセッサが使用することができる指示とを含み得る。
【０２０６】
図26は、解剖学的モデルを追跡された画像に適用および比較することによって、追跡された画像内で検出される、検出された身体部分上に重ね合わせられた仮想オブジェクトを表示するための、一実施形態の方法2600を示す。方法2600は、方法2600の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法2600のブロック2601で、プロセッサは、デバイスの向きに関するデータを供給するセンサ(たとえば、加速度計、ジャイロスコープ、電子コンパスなど)を含むヘッドマウントデバイスから、データを受信することによって、動作を開始することができる。ブロック2602で、プロセッサは、画像データを受信することができる。ブロック2603で、プロセッサは、距離および向きを計算し、ブロック2604で、距離センサデータ、カメラデータ、向きデータ、および距離データを利用して、コンテンツを表示のために処理することができる。ブロック2605で、プロセッサは、画像を仮想オブジェクトとともにレンダリングすることができる。
【０２０７】
判定ブロック2606で、ヘッドマウントディスプレイの表示画像中に含まれている、検出された身体部分の表面上に、仮想オブジェクトを重ね合わせるかどうかに関する判断に達し得る。プロセッサが、検出された身体部分の表面上に、仮想オブジェクトを重ね合わせるように判断する場合(すなわち、判定ブロック2606=「Yes」)、ブロック2607で、プロセッサは、仮想オブジェクトを身体部分上に重ね合わせることができる。プロセッサが、検出された身体部分の表面上に、仮想オブジェクトを重ね合わせないように判断する場合(すなわち、判定ブロック2606=「No」)、ブロック2608で、プロセッサは、オブジェクトを身体部分上に重ね合わせないようにし、身体部分が仮想オブジェクトをふさぐことを可能にすることができ、または、仮想オブジェクトをディスプレイの異なるロケーションにレンダリングすることができる。たとえば、仮想オブジェクトは、プロセッサによって受信されたユーザによる入力に従って重ね合わせられてもよい。
【０２０８】
図27は、画像を追跡すること、および、解剖学的モデルを追跡された画像に適用して、画像中に含まれている身体部分を検出することによって、ユーザの手が仮想オブジェクト上でふさがれ得る、一実施形態の方法2700を示す。方法2700のブロック2701で、プロセッサは、向きに関するデータを供給するセンサを含むヘッドマウントデバイスから、データを受信することによって、動作を開始することができる。ブロック2702で、プロセッサは、画像を追跡することができる。ブロック2703で、プロセッサは、解剖学的モデルを追跡された画像に適用することができる。ブロック2704で、プロセッサは、ユーザの手を識別し、ブロック2705で、画像をレンダリングすることができる。たとえば、プロセッサは、追跡された画像内で底部から上向きに生じる指、手、および腕を、ユーザの手として識別することができる。一方、同時に、解剖学的または骨格追跡アルゴリズムが適用されて、第2の身体部分が検出され得る。第2の身体部分もまた、指、手、および腕を含むことがある。プロセッサは、画像内で上部において生じ、下向きに伸びる第2の身体部分が、別のユーザの身体部分であり得ると推論することができる。加えて、プロセッサは、画像内のサイズおよび向きに基づいて、ユーザから遠く離れ過ぎた所定の距離である腕および手が、別のユーザの決定された身体部分であり得ると推論することができる。
【０２０９】
判定ブロック2706で、ユーザの手を仮想オブジェクト上でふさぐかどうかに関する判断に達し得る。プロセッサが、ユーザの手を仮想オブジェクト上にレンダリングするように判定する場合(すなわち、判定ブロック2706=「Yes」)、ブロック2707で、プロセッサは、仮想オブジェクト上でのユーザの手の選択的なオクルージョンを用いて、仮想オブジェクトをレンダリングすることができる。たとえば、ユーザの手は、仮想オブジェクトを閲覧者からブロックすることがある。ブロック2708で、画像がプロセッサによって更新され得る。プロセッサが、ユーザの手を仮想オブジェクト上にレンダリングしないように判定する場合(すなわち、判定ブロック2706=「No」)、ブロック2709で、プロセッサは、ユーザの身体部分上に重ね合わせられた仮想オブジェクトを表示し、身体部分が透明に見えるようにする。たとえば、ユーザは、自分の手を仮想オブジェクト上に走らせることができる。しかしながら、ユーザの手が仮想オブジェクトをブロックしているはずであるという事実にもかかわらず、仮想オブジェクト上のコンテンツが見えるままになるように、仮想オブジェクトが身体部分上に表示され、手の表面上に重ね合わせられてもよい。コマンドが検出され、検出されたジェスチャーまたは入力コマンドによってユーザから確認されると、ブロック2709で、その入力は、検出されたコマンドのタスクおよびアクションの実行を生じ、仮想オブジェクトコンテンツが更新され得る。
【０２１０】
図28Aは、第2の個人の手が、仮想オブジェクト上で透明またはないようにレンダリングされ得る、一実施形態の方法2800を示す。方法2800は、方法2800の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法2800において、ブロック2801で、プロセッサは、向きに関するデータを供給するセンサを含むヘッドマウントデバイスから、データを受信することによって、動作を開始することができる。ブロック2802で、プロセッサは、キャプチャされた画像を追跡することができる。ブロック2803で、プロセッサは、解剖学的モデルを追跡された画像に適用することができる。たとえば、解剖学的モデルは、追跡されたオブジェクトを骨格モデルと比較して、画像中に含まれているいずれかの身体部分があるかどうかを判定する、骨格追跡アルゴリズムであってもよい。あるオブジェクトがプロセッサによって、身体部分であると検出されない場合、プロセッサはそのオブジェクトを無視することができる。
【０２１１】
ブロック2804で、プロセッサは、ユーザの手および第2の個人の手を識別することができる。ブロック2805で、プロセッサは、画像を、画像中に含まれているアンカー表面上に、たとえば、デスクトップ上または壁にレンダリングすることができる。判定ブロック2806で、プロセッサは、仮想オブジェクトを身体部分上に重ね合わせるかどうかを判定することができる。プロセッサが、仮想オブジェクトを身体部分上に重ね合わせるように判定する場合(すなわち、判定ブロック2806=「Yes」)、ブロック2807で、プロセッサは、第2の個人の手を仮想オブジェクト上で透明もしくはないようにレンダリングすることができ、または、身体部分が仮想オブジェクトをふさぐとき、仮想オブジェクトは、身体部分が透明に見えるように、身体部分の上面の上に表示され得る。別の実施形態では、仮想オブジェクトが身体部分の表面上に重ね合わせられて、身体部分のアウトラインがなお可視のままであってもよい。ブロック2808で、仮想オブジェクトの表示画像がプロセッサによって、身体部分のコンテンツおよび動きの変化を考慮するように更新され得る。プロセッサが、仮想オブジェクトを身体部分上に重ね合わせないように判定する場合(すなわち、判定ブロック2806=「No」)、ブロック2809で、プロセッサは、仮想オブジェクトを表示し、ユーザの動きについて、仮想オブジェクトを更新するようになる。
【０２１２】
図28Bは、プロセッサが、どの手がユーザの手であるか、および、どの手が他のユーザの手であるかを推論することができ、他のユーザの手が仮想オブジェクトをふさぐとき、プロセッサが、他のユーザの手を透明またはないものとしてレンダリングすることができる、一実施形態の方法2810を示す。方法2810は、方法2810の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法2810において、ブロック2811で、プロセッサは、キャプチャされた画像データを含む、ヘッドマウントデバイスからのデータを受信することによって、動作を開始することができる。ブロック2812で、プロセッサは、センサアレイを用いて、空間データをキャプチャすることができる。ブロック2813で、プロセッサは、画像内のオブジェクトを認識し、画像内のオブジェクトの距離パラメータを決定することができる。ブロック2814で、プロセッサは、画像を処理して、オブジェクトを追跡することができ、プロセッサは、骨格モデルによる解剖学的解析を、追跡された画像に適用することができる。このことは、カメラがユーザに装着されるとき、または、別のユーザがセンサの視界で部分的にのみ可視である場合、部分的な解剖学的構造の識別を含み得る。たとえば、解剖学的モデルは、追跡されたオブジェクトを骨格モデルと比較して、画像中に含まれているいずれかの身体部分があるかどうかを判定する、骨格追跡アルゴリズムであってもよい。あるオブジェクトがプロセッサによって、身体部分であると検出されない場合、プロセッサはそのオブジェクトを無視することができる。たとえば、プロセッサは、解剖学的解析を画像に適用して、身体部分が画像内にあるかどうかを判定することができる。プロセッサは、メモリ内に記憶された解剖学的または骨格モデルを参照し、そのモデルを、ビデオ画像内の追跡されたオブジェクトと比較することができる。記憶された骨格モデルは、解剖学的データ、たとえば、人間の骨格における主要な関節、骨、および肢の相対位置、ならびに他のデータを含み得る。プロセッサは、画像内の追跡されたオブジェクトを、記憶された骨格モデルと比較して、身体部分が画像内にあるかどうかを判定することができる。
【０２１３】
たとえば、プロセッサは、腕、および、第1の向きで手から伸びる何本かの指、または、腕とともに、画像の下部から上向きに進む手首および指を検出することによって、ユーザの腕を検出することができる。プロセッサは、第2の腕、および、第2の異なる向きで第2の手から伸びる第2の何本かの指、または、腕とともに、画像の上部から下向きに進む手首および指を検出することによって、第2の個人の腕を検出することができる。別の実施形態では、プロセッサは、追跡された画像を向き、オブジェクトサイズ、ユーザからの距離についてレビューすることによって、または、画像内の身体部分の数をカウントすることによって、ユーザの身体部分と別の者の身体部分との間で区別することができる。
【０２１４】
ブロック2815で、プロセッサは、画像を、画像内のアンカーされた仮想オブジェクトとともにレンダリングすることができる。判定ブロック2816で、プロセッサは、検出された身体部分がユーザに属するか、別の個人に属するかを判定することができる。プロセッサは、仮想オブジェクトを別のユーザの身体部分上に重ね合わせることができる。表示画像内で、ユーザの手のみが仮想オブジェクトをふさぐが、他の手、腕、および身体部分は、仮想オブジェクトをふさがないようになり、透明に見えるようになる。
【０２１５】
ユーザは、他のユーザの身体部分が透明としてレンダリングされるように、他のユーザの身体部分上に重ね合わせられるように仮想オブジェクトを見ることができる。プロセッサは、他の個人の身体部分に関連のある、画像内のエリアを決定することができ、他の個人の身体部分が、アンカーされた仮想オブジェクトをふさぐときにのみ、仮想オブジェクトを画像上に表示することができる。プロセッサが、検出された身体部分がユーザに属すると判定する場合(すなわち、判定ブロック2816=「Yes」)、ブロック2817で、プロセッサは、ユーザの身体部分が画像をふさぐとき、ユーザの身体部分を立体としてレンダリングすることができる。プロセッサが、検出された身体部分が別の個人に属すると判定する場合(すなわち、判定ブロック2816=「No」)、ブロック2818で、プロセッサは、その身体部分が仮想オブジェクトをふさぐとき、仮想オブジェクト、またはその一部分を、検出された身体部分上に重ね合わせられるように表示するようになる。
【０２１６】
たとえば、プロセッサは、他の個人の身体部分上のエリアとして(ピクセルで)定義された、画像内のエリアを決定することができる。プロセッサは、そのエリア上で、重ね合わせられた仮想オブジェクト形成し、仮想オブジェクトを、身体部分の周囲上にレンダリングしないようにすることができる。身体部分が、アンカーされた仮想オブジェクト上に位置するとき、第2の個人の身体部分のアウトラインがなお示され、レンダリングされ得る。したがって、アウトラインは、アンカーされた仮想オブジェクト上で可視であり得るが、残りは透明としてレンダリングされ得る。ブロック2819で、プロセッサは、身体部分のコンテンツおよび動きの変化を考慮するように、仮想オブジェクトをユーザの動きについて更新することができる。たとえば、プロセッサは、アンカーされた仮想オブジェクトを、表面上の長方形の仮想ディスプレイとして表示することができる。上記で説明したように、プロセッサは、キャプチャされた画像を解析して、ユーザジェスチャーを検出することができる。第2の個人およびユーザによる、アンカーされた仮想オブジェクトとの、一見すると仮想現実対話が行われ得る。別の実施形態では、プロセッサは、第3の個人の身体部分を検出することができる。プロセッサは、第3の個人の身体部分が、アンカーされた仮想オブジェクト上に位置するとき、第3の個人の身体部分上に重ね合わせられた仮想オブジェクトを表示することができる。プロセッサはまた、身体部分が、アンカーされた仮想オブジェクトから離れて位置し、仮想オブジェクトをふさいでいないと決定されるとき、第3の個人の身体部分上に重ね合わせられた仮想オブジェクトを表示しないこともあり、その身体部分が表示され得るようにすることもできる。
【０２１７】
図29は、データがサーバから複数のデバイスへ送信されて、サービスが提供され、ヘッドマウントデバイスにおける処理が軽減され得る、一実施形態の方法2900を示す。方法2900は、方法2900の動作を実行するためのプロセッサ実行可能命令で構成された、サーバおよび1つまたは複数のヘッドマウントデバイスを含み得る、図25Aを参照して上記で説明したようなシステム内で実施され得る。方法2900において、ブロック2901で、サーバ2504は、空間データおよび画像に関するデータを供給するセンサを含むヘッドマウントデバイスから、画像およびロケーションデータを受信することができる。ブロック2902で、プロセッサは、データが走査されたロケーションに関係する位置情報とともに、データをサーバにアップロードすることができる。サーバは、走査データをいくつかの異なるヘッドマウントデバイスに出力することができる。ブロック2903で、プロセッサは、データを第2のヘッドマウントディスプレイに、参照として出力することができる。
【０２１８】
ブロック2904で、プロセッサは、データを第3のヘッドマウントデバイスに出力して、第3のヘッドマウントデバイスの走査データを補い、キャプチャされた走査データを検証することができる。ブロック2905で、サーバは、データを第4のヘッドマウントデバイスに出力して、そのデバイス上に存在するデータを向上させることができ、ブロック2906で、サーバは、データをアップロードして、バッテリー電力および処理を節約することができる。実質的に同時に、ヘッドマウントデバイスの各々は、エリア内のオブジェクトについての情報を決定するために、エリアのそれ自体の走査を実施中であってもよい。たとえば、ヘッドマウントデバイスは、エリアを走査して、画像内のオブジェクトの形状および寸法を決定することができ、エリアを走査して、画像内のオブジェクトの向き、および、画像内の表面の相対位置を決定することができ、これらの決定は、没入型の仮想または拡張現実体験のために、仮想オブジェクトをアンカーするために有用であり得る。判定ブロック2907で、プロセッサは、更新された走査位置データをデバイスからサーバに、サーバ上で記憶するためにアップロードするかどうかを判定することができる。プロセッサが、走査位置データをサーバにアップロードするように判定する場合(すなわち、判定ブロック2907=「Yes」)、プロセッサは、更新されたデータをアップロードし、ヘッドマウントデバイスの走査データを、サーバ上に記憶されたデータとマージおよび結合することができる。プロセッサが、走査位置データをサーバにアップロードしないように判定する場合(すなわち、判定ブロック2907=「No」)、ブロック2908で、プロセッサは、仮想オブジェクトを表示し、仮想オブジェクトをユーザの動きについて更新することができる。
【０２１９】
別の代替実施形態では、図29のプロセッサは、「マジックレンズ」として動作することができる。このようにして、室内の物理的表面上に表示された仮想オブジェクトを、従来のスマートフォンまたはコンピューティングデバイス上で見ることができる。そのようなスマートフォンは、データをサーバに出力することができ、サーバにさらにリンクすることができる。ヘッドマウントデバイスのない、モバイル通信デバイスを使用しているユーザは、モバイル通信デバイスまたはスマートフォンを使用して、ヘッドマウントディスプレイを装着しているユーザと共同作業することができる。たとえば、ユーザは、スマートフォンのディスプレイを見ることによって、物理的表面上にアンカーされた仮想オブジェクトの出力を見ることができ、ワイヤレス音声リンクを介して、ヘッドマウントディスプレイを利用しているユーザに通信することができる。
【０２２０】
スマートフォンは、セルラーデータリンク(たとえば、3G、4G、LTE、UTMSなど)など、ワイヤレスRFリンクを介して、サーバに動作可能に接続され得る。スマートフォンは、画像をスマートフォンのディスプレイ上に出力することができる。その画像は、別のユーザのヘッドマウントディスプレイ出力に厳密に対応し得る。スマートフォンのディスプレイを見ているユーザは、物理的表面上に示された拡張および仮想オブジェクトを見ることができる。この表示は、スマートフォンのディスプレイ上で2次元または3次元で行われ得る。スマートフォンはまた、信号をサーバから受信するために、モバイル通信デバイスおよびワイヤレスインターフェースを使用して、ヘッドマウントデバイス10と共同作業するように動作可能であってもよい。代替として、スマートフォンは、短距離通信プロトコルを使用して、ヘッドマウントデバイス10から直接、RFデータ信号を受信することができる。このようにして、ユーザは、スマートフォンを保持し、共同作業のためにヘッドマウントディスプレイのユーザの仮想または拡張現実体験を見ることができる。この実施形態では、スマートフォンは、本明細書で説明するものに類似した方法を使用して、画像を操作して、近くの表面に対してスマートフォン自体の位置および向きを修正することができる。
【０２２１】
図30は、ユーザが、2つのヘッドマウントデバイスを使用して共同作業中であり得る、一実施形態の方法3000を示す。2つのヘッドマウントデバイスは、2つの異なるソフトウェアプロバイダからの、異なる互換性のないソフトウェアアプリケーションを実行中であり得る。一般に、第1のワードプロセッサを使用する第1のユーザは、第2の異なる互換性のないワードプロセッサを使用する別のユーザと、共同作業的な方式で同時に作業することができない。方法3000では、プロセッサは、データを調停および変換して、第1のソフトウェアアプリケーションを使用する第1のユーザと、第2のソフトウェアアプリケーションを使用する第2のユーザとが、互いと共同作業し、リアルタイムで可視であるデータを入力できるようにすることができる。
【０２２２】
方法3000は、ヘッドマウントデバイスに限定されず、他のタイプのコンピューティングデバイスにおいて実施され得る。方法3000において、プロセッサは、ブロック3001で第1のアプリケーションを開き、ブロック3002で第2のアプリケーションを開くことによって、動作を開始することができる。判定ブロック3003で、プロセッサは、他のデバイスと共同作業するかどうかを判断することができる。プロセッサが、他のデバイスと共同作業するように判断する場合(すなわち、判定ブロック3003=「Yes」)、ブロック3004で、プロセッサは、それらのデバイス間で共同作業し、双方向通信を行うことができる。プロセッサが、他のデバイスと共同作業しないように判断する場合(すなわち、判定ブロック3003=「No」)、ブロック3010で、プロセッサは、仮想オブジェクトを表示し、仮想オブジェクトをユーザの動きについて更新するようになる。
【０２２３】
ブロック3005で、プロセッサは、仮想画面を仮想オブジェクトとしてレンダリングするようになる。仮想画面は、ソフトウェアアプリケーションのディスプレイ出力を提供することができる。仮想画面は、少なくとも2人の異なるユーザによって入力された変更について更新することができる。ブロック3006で、プロセッサは、競合解決プログラムを、2つの異なるソフトウェアアプリケーションに対して適用するようになる。競合解決は、第3の汎用ソフトウェアプログラムにロードされ得る汎用フォーマットへの、2つの互換性のないソフトウェアプログラムの入力および出力の変換を行うことができ、第3の汎用ソフトウェアプログラムは、変更を汎用フォーマットにおいて調停し、調停されたデータを第1および第2の互換性のないフォーマットに戻すように変換する。第3のソフトウェアプログラムは、汎用フォーマットを、変更をレンダリングするために、および、元のネイティブプログラムにおけるユーザによって可視であり得る、第1および第2のソフトウェアプログラムに戻す変換を行うことができる。
【０２２４】
たとえば、データが、第1のユーザの入力に関係して第1のソフトウェアプログラムから収集され、汎用フォーマットに通信され、第3のソフトウェアプログラムに通信され得る。次に、データが、第2のユーザの入力に関係して第2のソフトウェアプログラムから収集され、汎用フォーマットに通信され、第3のソフトウェアプログラムに通信され得る。
【０２２５】
第3のソフトウェアプログラムは、変更を調停することができ、変更をメモリに記憶することができる。ここで、ユーザの各々は、文書に対する互いの変更をリアルタイムで見ることを望む。第3のソフトウェアプログラムは、変更を、第1および第2のソフトウェアプログラムの各々によって理解されるフォーマットに変換することができる。第3のソフトウェアプログラムは、変換された変更を第1および第2のソフトウェアプログラムに戻すように出力し、ユーザの各々が自分のネイティブプログラムのフォーマッティングで全変更を見ることができるようにすることができる。ブロック3007で、プロセッサはまた、変更の著者を識別することもできる。ブロック3008で、プロセッサは、文書マップを更新し、ブロック3009で、文書画像を仮想オブジェクトとしてレンダリングするようになり、ブロック3005で、プロセッサは、仮想画面を更新することができる。
【０２２６】
図31は、参照番号3100、3101および3102として示されるコンピューティングデバイスを操作する、3人の異なるユーザのハイレベルブロック図を示す。各々は、異なるソフトウェアアプリケーションを使用中であり得る。ソフトウェアプログラムの各々からのデータが、サーバ3103上に記憶され得る。たとえば、第1のローカル変更は、従来知られているような関連のあるソフトウェアプログラムにおいて行われ得る。第2のリモート変更もまた行われ、共有記憶媒体3106に書き込まれ得る。たとえば、第2のリモートデータ変更は、ライブラリ3104に通信され得る。ライブラリ3104は、各アプリケーションからの入力データおよび出力データを、リモート変更から、汎用ソフトウェアプログラムによって入力および読み取ることができる汎用フォーマットに変換することができる。汎用フォーマットは、ライブラリ3104上に記憶されてもよく、記憶媒体3106上で共有文書フォーマットに書き込まれ得る。
【０２２７】
記憶媒体3106上に記憶された共有文書フォーマットは、それらの変更を単一の汎用プログラムにアグリゲートすることができる。単一の汎用プログラムはまた、単一のデータストリームにおいて、各ユーザによってレンダリングされた変更を、ソフトウェアアプリケーションの各々へ戻すように、関連のあるソフトウェアアプリケーションに固有で理解され得るフォーマットで変換および出力し、各ユーザ3100、3101、および3102が他のユーザによって行われた変更を見ることができるようにすることもできる。
【０２２８】
たとえば、共有文書フォーマット3106は、ソフトウェアプログラムの入力および出力の、第3の独立したソフトウェアプログラム3106にロードされ得る汎用フォーマットへの変換を行うことができる、競合解決機能を含み得る。そこで、ユーザのすべてからの変更が入力および記憶される。いくつかの異なるソフトウェアワードプロセシングプログラムの変換は、サーバ3103上に記憶され得る。プロセッサは、変更のすべてを有する汎用フォーマットを、第1、第2および第3のソフトウェアプログラム3100、3101および3102に戻すように変換して、その中の変更をレンダリングし、示すことができる。
【０２２９】
図32は、ユーザが、2つのコンピュータシステムを使用して共同作業中であり得る、一実施形態の方法3200を示す。これらのユーザは、2つの異なるソフトウェアプロバイダからの、異なる互換性のないソフトウェアアプリケーションを利用して、互いと共同作業中であり得る。方法3200は、いずれかおよびすべての変更が、複数の異なる互換性のないコンピュータソフトウェアアプリケーションを利用しているユーザによって可視であるように、データの入力および出力を調停することができる。
【０２３０】
方法3200において、プロセッサは、ブロック3201で第1のアプリケーションを開き、ブロック3202で第2のアプリケーションを開くことによって、動作を開始することができる。判定ブロック3203で、デバイスからサーバへ共同作業するかどうかに関する判断に達し得る。プロセッサが、サーバと共同作業するように判定する場合(すなわち、判定ブロック3203=「Yes」)、プロセッサは、共同作業のためのプログラム命令を出力し、それらのデバイス間で双方向通信を行うことができる(ブロック3204)。たとえば、互換性のないソフトウェアアプリケーションの各々における変更がローカルでレンダリングされ、また、リモートロケーションへ送信されてもよく、そこで、それらの変更が、第3のソフトウェアプログラムにアグリゲートおよび入力され得る。プロセッサが、サーバと共同作業しないように判定する場合(すなわち、判定ブロック3203=「No」)、ブロック3210で、プロセッサは、双方向通信をデバイス間で確立しないようになり、画面をレンダリングし、非共同作業的な方法で行われた変更を更新するようになる。
【０２３１】
ブロック3205で、プロセッサは、画面をレンダリングし、画面を変更について更新するようになる。たとえば、ソフトウェアアプリケーションの各々における変更がリモートロケーションへ送信されてもよく、そこで、それらの変更が、第3の互換性のあるソフトウェアプログラムにアグリゲートおよび入力される。ブロック3206で、プロセッサは、競合解決プログラムを、2つの異なるソフトウェアアプリケーションに対して適用するようになる。それらの変更は、次いで、ネイティブフォーマットに変換され、次いで、ユーザの各々へ、それぞれのアプリケーション上の表示のためにネイティブフォーマットで送信される。ブロック3207で、プロセッサは、変更の著者を識別するようになる。ブロック3208で、プロセッサは、文書画像を更新し、文書画像をレンダリングするようになる。ブロック3209で、プロセッサは、文書画像を更新するようになる。
【０２３２】
図33は、音声コマンドが、検出されたジェスチャーを使用して処理および確認され得る、一実施形態の方法3300を示す。方法3300は、方法3300の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法3300において、ブロック3301で、プロセッサは、ヘッドマウントデバイスの向きに関するデータを供給するセンサから、走査データを受信することによって、動作を開始することができる。ブロック3302で、プロセッサは、画像に関して、カメラから画像データを受信することができる。ブロック3303で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。ブロック3304で、プロセッサは、センサからのデータ、カメラデータ、および距離データを使用して、画像を処理することができ、ブロック3305で、プロセッサは、画像を仮想オブジェクトとともにレンダリングすることができる。加えて、ブロック3305で、プロセッサは、ユーザの動きを追跡して、実行されるべきであるジェスチャー入力コマンドがあるかどうかを判定することができる。ブロック3306で、プロセッサは、音声信号を受信することができる。
【０２３３】
判定ブロック3307で、プロセッサは、ユーザによって話された音声コマンドが認識されるかどうかを判定することができる。たとえば、ユーザは、仮想オブジェクトのサイズを、ディスプレイ上にレンダリングされたより大きい仮想オブジェクトへと拡大することを希望することがあり、「仮想オブジェクトを拡大する」という言葉を話すことがある。たとえば、ユーザは、代替として、仮想オブジェクトの形状を、長方形から異なる形状に変更することを望むことがあり、「仮想オブジェクトを楕円形に変更する」という言葉を話すことがある。他の同様のコマンドもまた想定され、可能であり、本開示の範囲内である。プロセッサが、ユーザによって話された音声コマンドを認識する場合(すなわち、判定ブロック3307=「Yes」)、ブロック3308で、プロセッサは、所定の時間期間にわたって、ジェスチャーを求めて、ビデオデータを追跡することができる。ジェスチャーコマンドは、第1の音声コマンドを確認するために利用され得る。たとえば、ユーザが話し中であることがあり、第2のユーザに話す文中で単に不注意に「拡大」および「仮想オブジェクト」に言及することがあり、その言及は、マイクロフォンによって受信され、プロセッサに通信され得る。その後、コマンドをむやみに実行する代わりに、検出されたジェスチャーの形態で確認が待たれてもよい。たとえば、ユーザは、ある方向を指すことができ、または、ユーザは、親指で人差し指を整え、残りの指を伸ばして、「O.K.」サインを出すことができる。この第2のコマンドは、第1のコマンドを確認するようになる。判定ブロック3309で、プロセッサは、ジェスチャーが音声コマンドを確認するように認識されるかどうかを判定することができる。プロセッサが、ジェスチャーが音声コマンドを確認中であると認識する場合(すなわち、判定ブロック3309=「Yes」)、ブロック3310で、プロセッサはタスクを実行することができる。
【０２３４】
プロセッサが、ユーザによって話された音声コマンドを認識しない場合(すなわち、判定ブロック3307=「No」)、プロセッサは、音声を受信し続けることができる。プロセッサが、ジェスチャーが音声コマンドを確認中であると認識しない場合(すなわち、判定ブロック3309=「No」)、プロセッサは、音声データを受信および解析し続けることができる。たとえば、ユーザが話し中であることがあり、第2のユーザに話す文中で、単に不注意に「拡大」および「仮想オブジェクト」に言及することがある。しかしながら、確認が、検出されたジェスチャーの形態(指をさすこと、O.K.サイン、伸ばされた手)で検出されない場合、プロセッサは、第1のコマンドを実行しないようになり、単に、追加の新しいコマンドを求めて音声を監視し続けることができる。多数のジェスチャーが、確認を与えることができ、本明細書で開示するいかなるものにも限定されない。また、(たとえば、音声認識による)バーバルコマンド、および、(たとえば、キーボード上での)ユーザのボタン押下によって入力されたコマンドが、プロセッサによって受け入れられ、処理され得る。たとえば、バーバルコマンドが、ジェスチャーコマンドと同じ情報を確認または表すために受け入れられてもよく、それによって、ヘッドマウントデバイスおよびシステムが、より正確にユーザの意図を解釈できるようになる。
【０２３５】
図34は、ジェスチャーコマンドが、検出された音声コマンドを使用して処理および確認され得る、一実施形態の方法3400を示し、上記で開示したものとは異なる順序の動作であり得る。方法3400は、方法3400の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法3400において、ブロック3401で、プロセッサは、向きに関するデータを供給するセンサを含むヘッドマウントデバイスから、データを受信することによって、動作を開始することができる。ブロック3402で、プロセッサは、画像に関して、カメラからデータを受信することができる。
【０２３６】
ブロック3403で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。ブロック3404で、プロセッサは、向きセンサからのデータ、カメラデータ、および距離データを使用して、画像を処理することができる。ブロック3405で、プロセッサは、画像を仮想オブジェクトとともにレンダリングすることができ、ブロック3406で、プロセッサは、ユーザの動きを追跡するように、カメラを制御することができる。
【０２３７】
判定ブロック3407で、たとえば、指をさす、拍手する、指を鳴らす、親指と指をつなぐことによって「O.K.ジェスチャー」をすることを含む、1つまたは複数の選択されたジェスチャーを認識することによって、ジェスチャーコマンドを認識するかどうかに関する判断に達し得る。このことは、追跡されたビデオデータに適用され得る解剖学的モデルを使用して実行され得る。ジェスチャーが検出される場合(すなわち、判定ブロック3407=「Yes」)、ブロック3408で、プロセッサは、ある時間期間にわたってコマンドを求めて音声データを追跡して、検出されたジェスチャーコマンドを確認することができる。
【０２３８】
判定ブロック3409で、音声コマンドをジェスチャーコマンドの確認として認識するかどうかに関する判断に達し得る。確認が受信される場合(すなわち、判定ブロック3409=「Yes」)、ブロック3410で、プロセッサはタスクを実行することができる。
【０２３９】
ジェスチャーが認識されない場合(すなわち、判定ブロック3407=「No」)、その場合は、ジェスチャーが不注意に検出されるときに起こり得るものであり、プロセッサは、新しいジェスチャーコマンドを求めて、キャプチャされたビデオ画像を追跡し続けることができる。また、音声確認が認識されない場合(すなわち、判定ブロック3409=「No」)、プロセッサは、ビデオの受信およびビデオの追跡を続けることができ、確認が検出されなかったとき、ジェスチャーコマンドを無視する。また、前述のバーバルコマンド、および、ユーザのボタン押下によって入力されたコマンドは、ヘッドマウントデバイスおよびシステムがより正確にユーザの意図を解釈できるようにするために、プロセッサによって単独で、またはジェスチャーコマンドとともに受け入れられ、処理され得る。
【０２４０】
図35は、ジェスチャーコマンドが処理および認識され得る、一実施形態の方法3500を示す。ジェスチャーコマンドに応答して、プロセッサは、「仮想入力デバイス」を仮想オブジェクト上にレンダリングし、ユーザが仮想入力デバイスを利用して仮想オブジェクトを操作できるようにすることができる。仮想入力デバイスは、ユーザの動きを追跡することによって制御され得る、生成された仮想オブジェクトであり得る。たとえば、仮想オブジェクトは、仮想ポインタ、またはアイコン、または、ユーザによって選択された任意の他の制御可能な仮想オブジェクトであってもよい。
【０２４１】
方法3500は、方法3500の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。たとえば、入力デバイスは、仮想現実ポインタオブジェクトであり得る。ポインタは、ジェスチャー/追跡カメラと、アンカー表面に接続された仮想オブジェクトとから測定された視線において、自動的に生成され得る。方法3500において、ブロック3501で、プロセッサは、向きに関するデータを供給するセンサを含むヘッドマウントデバイスから、データを受信することによって、動作を開始することができる。ブロック3502で、プロセッサは、ステレオ画像に関して、カメラから、キャプチャされた画像データを受信することができる。
【０２４２】
ブロック3503で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。ブロック3504で、プロセッサは、向きセンサからのデータ、カメラデータ、および距離データを使用して、画像を処理することができる。ブロック3505で、プロセッサは、画像を仮想オブジェクトとともにレンダリングすることができ、ブロック3506で、プロセッサは、ユーザの動きを追跡するように、カメラを制御することができる。
【０２４３】
判定ブロック3507で、プロセッサは、解剖学的認識アルゴリズムを追跡された画像に適用することによってなど、ジェスチャーコマンドが認識されるかどうかを判定することができる。プロセッサは、画像内で、指をさす、拍手する、指を鳴らす、親指と指をつなぐことによって「O.K.ジェスチャー」をすることなどを含む、1つまたは複数の選択されたジェスチャーを認識することができる。プロセッサがジェスチャーを認識する場合(すなわち、判定ブロック3507=「Yes」)、ブロック3508で、プロセッサは、仮想ポインタタスクを実行するための指示を有し得る。
【０２４４】
ポインタは、ディスプレイ上に3次元で表示され、仮想オブジェクト上に配置され、ユーザがテキストを強調し、選択し、入力コマンドを作成し、入力をヘッドマウントデバイスのプロセッサに供給することを可能にすることができる、「入力デバイス関連仮想オブジェクト」(マウスアイコン、レーザーポインタ仮想オブジェクト、矢印入力デバイス)であってもよい。判定ブロック3508で、ポインタタスクを実行するかどうかに関する判断に達し得る。プロセッサが、ポインタタスクを実行するように判定する場合(すなわち、判定ブロック3508=「Yes」)、ブロック3509で、プロセッサは、タスクを実行することができ、ポインタのタイプが、複数の異なる仮想入力デバイスから選択され得る。ブロック3510で、ヘッドマウントまたはボディマウントカメラから、ユーザの指まで、および仮想オブジェクトまでのベクトルが、計算され得る。ブロック3511で、ベクトルが使用されて、ポインタが仮想オブジェクト上にレンダリングされ得る。ブロック3512で、仮想オブジェクトおよび仮想入力デバイスの表示が更新され得る。
【０２４５】
プロセッサが、ジェスチャーを認識しない場合(すなわち、判定ブロック3507=「No」)、プロセッサは、所定のジェスチャーを認識するために、ビデオ画像を処理し続けることができる。また、プロセッサが、ポインタタスクを実行しないように判定する場合(すなわち、判定ブロック3508=「No」)、プロセッサは、タスクが実行されないようになるので、ビデオを追跡し続け、ジェスチャーコマンドを無視することができる。
【０２４６】
図36は、ジェスチャーコマンドが認識および処理され得、入力コマンドを与えるために、3次元仮想現実タイプの入力デバイスが仮想オブジェクト上にレンダリングされ得る、一実施形態の方法3600を示す。加えて、プロセッサは、特徴/身体部分が仮想オブジェクトをふさぐとき、透明にレンダリングされ得る、個人の特徴を認識することができる。方法3600は、方法3600の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。たとえば、入力デバイスは、ヘッドマウントディスプレイ上にのみ表示される仮想現実ポインタオブジェクトであり得る。このオブジェクトは、ディスプレイ上に表示されてもよく、ジェスチャー/追跡カメラから、アンカー表面上に接続される仮想オブジェクトまで測定され得る、視線において、またはベクトルにおいて生成され得る。たとえば、ベクトルは、カメラ/またはユーザの指からディスプレイ上の仮想オブジェクトまで形成され得る。仮想ポインタオブジェクトは、ベクトルに接続されるように配置および表示され得る。ユーザは、1つもしくは複数の検出されたジェスチャー、音声コマンドによって、入力デバイスによって、または別の入力コマンドによって、仮想ポインタオブジェクトを制御することができる。方法3600において、プロセッサは、ブロック3601で、ステレオ画像に関して、カメラからデータを受信することによって、動作を開始することができる。
【０２４７】
ブロック3602で、プロセッサは、画像内のオブジェクトの距離および向きを計算することができる。ブロック3603で、プロセッサは、向きセンサからのデータ、カメラデータ、および距離データを使用して、画像を処理することができる。ブロック3604で、プロセッサは、画像を仮想オブジェクトとともにレンダリングすることができる。ブロック3605で、プロセッサは、解剖学的アルゴリズムを追跡された画像に、検出された身体部分に適用することによって、ユーザの動きを追跡するように、カメラを制御するための命令を与えることができ、所定の時間間隔にわたって、身体部分を追跡することができる。
【０２４８】
判定ブロック3606で、プロセッサは、ジェスチャーコマンドが認識されるかどうかを判断することができ、この認識は、ジェスチャー辞書における1つまたは複数のジェスチャーの中で、追跡された画像内の形状および動きとの適合があるとき、起こり得るものであり、プロセッサは、検出されたジェスチャーを、ソフトウェアアプリケーションを実行するため、またはあるあらかじめ定義されたアクションを取るための入力コマンドと相関させることができる。プロセッサがジェスチャーを認識する場合(すなわち、判定ブロック3606=「Yes」)、ブロック3607で、プロセッサは、ポインタタスクを実行することができる。
【０２４９】
ポインタは、ヘッドマウントディスプレイ上に表示される仮想入力デバイス(マウスアイコン、レーザーポインタ仮想オブジェクト)であってもよい。仮想入力デバイスは、ユーザがテキストを強調し、ハイパーリンクを選択し、入力コマンドを編成し、仮想オブジェクトに対する入力を形成することを可能にすることができる、仮想オブジェクトに関連付けられ得る。たとえば、仮想入力デバイスは、ヘッドマウントディスプレイ上に表示された3次元の仮想現実矢印であり得る。そのような実施形態では、その矢印は、ユーザジェスチャーに応答して、ディスプレイ上の自由空間内で移動可能であり得る。たとえば、ユーザが手を左側に動かすことに応答して、システムは、ヘッドマウントディスプレイ上で左側に動く矢印の画像をレンダリングすることができる。別の例として、ユーザは、コマンドを入力することがあり、矢印は、そのコマンドが実行されることを示すことがある。たとえば、ユーザは、矢印が仮想オブジェクト上の隣接テキストであるとき、「選択する」という言葉を話すことがあり、矢印は、そのテキストが選択されることを示すことがある。
【０２５０】
判定ブロック3607で、プロセッサは、ポインタタスクを実行するかどうか、および、仮想入力デバイスオブジェクトをいくつかのあらかじめ定義された代替物(たとえば、矢印、ポインタデバイス、または様々な仮想アイコン)から選択するかどうかを判定することができる。そうである場合(すなわち、判定ブロック3607=「Yes」)、ブロック3608で、プロセッサは、タスクを実行することができ、仮想入力デバイスが、メモリに記憶された様々なポインタタイプのアレイから選択され得る。ブロック3609で、カメラからユーザの手まで、および仮想オブジェクトまでのベクトルが、計算され得る。仮想入力デバイスは、計算されたベクトル上に直接レンダリングおよび配置されてもよく、仮想または拡張現実体験をもたらすために、ユーザの手の動きを追跡することによって、ディスプレイ上で移動可能であり得る。ブロック3610で、仮想現実入力デバイス/ポインタが使用されて、ディスプレイ上で仮想オブジェクトの一部分が移動され、選択され、拡大され、または強調され得る。
【０２５１】
ブロック3611で、場合によっては、ユーザの特徴が仮想オブジェクトと接触してもよく、仮想オブジェクトをふさいでもよい。たとえば、ユーザの手が、仮想オブジェクト上を通過することがあり、ユーザの視点からの仮想オブジェクトのビューをふさぐか、またはブロックすることがあり、好適でないことがある。プロセッサは、仮想オブジェクトをユーザの身体部分上に重ね合わせ、ユーザの身体部分がディスプレイ上で仮想オブジェクトをふさいでいるはずであるとしても、仮想オブジェクトがユーザにとって可視のままであり得るようにすることができる。このようにして、身体部分を、一見すると透明であるようにレンダリングすることができ、身体部分のアウトラインのみが示される。ブロック3612で、ベクトルが使用されて、ポインタが仮想オブジェクト上にレンダリングされ得る。ブロック3613で、仮想入力デバイスが更新され得る。ブロック3614で、仮想入力デバイスが、仮想オブジェクトとともに表示され得る。
【０２５２】
ジェスチャーコマンドが認識されない場合(すなわち、判定ブロック3606=「No」)、プロセッサがジェスチャーを認識するかどうかを判定するために、プロセッサはビデオを追跡し続けることができる。また、プロセッサが、ポインタを実行または使用しないように判断する場合(すなわち、判定ブロック3607=「No」)、プロセッサは、ビデオを追跡し続けることができ、仮想入力デバイスを生成および表示しないようになる。
【０２５３】
図37は、ヘッドマウントディスプレイ3704上で可視である、仮想オブジェクト現実入力デバイスまたは仮想ポインタ3706を含む、システム3700のハイレベル図、および、仮想オブジェクト14のハイレベル図を示す。ヘッドマウントディスプレイ3704は、プロセッサと、アンテナを含むワイヤレス通信デバイスと(図示せず)を含み得る。図5Aを参照しながら上記で説明したように、ヘッドマウントデバイス3704は、アプリケーションプロセッサと呼ばれることがある、アプリケーションを実行するためのコプロセッサを含み得る、コアプロセッサを含み得る。
【０２５４】
ヘッドマウントデバイス3704はまた、通信(たとえば、ワイヤレスモデムプロセッサ)、ナビゲーション(たとえば、GPS受信機プロセッサ)、およびグラフィックス(たとえば、グラフィックスプロセッサユニット(GPU))を含む、重要なデバイス能力に関連付けられた複数のピアプロセッサをも含み得る。ヘッドマウントデバイス3704はまた、セルラー送受信機またはモデム(図示せず)を含んでもよく、セルラー送受信機またはモデムは、多くの場合、その主要なタスクがワイヤレス通信を管理することである1つまたは複数のプロセッサを含む。ヘッドマウントデバイス3704はまた、別個の送受信機チップであり得るWi-Fiモデム(図示せず)など、他のタイプのワイヤレス通信ネットワーク上で通信するための他のワイヤレス送受信機を含んでもよく、その場合、別個のプログラマブルプロセッサをも含み得る。組込み型プログラマブルプロセッサを有する他のワイヤレス送受信機(図示せず)が、近距離通信(NFC)リンク、Bluetooth(登録商標)リンク、および、他のワイヤレスプロトコルに基づくリンクなど、他のタイプのワイヤレス通信リンクに接続するために含まれ得る。
【０２５５】
通信プロセッサに加えて、ヘッドマウントデバイス3704はまた、専用プロセッサを有し得るGPS受信機(図示せず)をも含み得る。また、グラフィックスプロセッサが、高解像度グラフィックスを提供するために含まれ得る。ヘッドマウントデバイス3704はまた、USBポートなど、ワイヤード通信に関連付けられたプロセッサをも含み得る。図5Aを参照しながら上記で説明したように、ヘッドマウントディスプレイ3701は、それ自体がRGBカメラ3704aを赤外線カメラ3704bおよび構造化赤外光赤外線放出器3704cに結合することができる、RGB-Dカメラシステムを含み得る。
【０２５６】
プロセッサは、ヘッドマウントまたはボディマウントカメラ3701からユーザの指3705まで、および、指3705から仮想オブジェクト14までキャプチャされ得る、ベクトルを測定する。このベクトルを使用して、入力デバイス仮想オブジェクト3706が生成されてもよく、ベクトル上に配置され得る。仮想入力デバイス3706が生成されてもよく、仮想入力デバイス3706の向きが計算され得る。仮想入力デバイス3706は、アンカー表面3703に接続するように生成されてもよく、アンカー表面3703は、仮想オブジェクト14が接続されるところであり得る。この実施形態では、仮想オブジェクト14は、極めて大きいサイズ、たとえば、ヘッドマウントディスプレイ上で表示されるようなビルのサイズに表示するために、レンダリングされ得る。仮想入力デバイス3706を使用するユーザは、仮想オブジェクトまたはその仮想オブジェクト14とともに表示されたコンテンツの、テキストまたは部分を選択することができる。
【０２５７】
図38は、第2のヘッドマウントデバイスが、第1のヘッドマウントデバイスによる実施のために、ポインティング座標およびジェスチャー制御をどのように供給することができるかを示す、第1のヘッドマウントデバイスシステム3800および第2のヘッドマウントデバイスシステム3800aのハイレベル図を示す。プライマリヘッドマウントデバイスシステム3800は、第1のヘッドマウントまたはボディマウントカメラアレイ3801と、ピアツーピアベースの配置とともに動作可能な第1のプロセッサ3804とを含み得る。第1のプロセッサ3804は、ホストプロセッサとして動作可能であってもよく、第2のプロセッサ3805は、セカンダリシステムとして動作可能であり得る。第2のヘッドマウントデバイスシステム3800aは、プライマリシステム3800から、表示のために、生成された画像を受信するシステムとして働くことができる。第2のヘッドマウントデバイスシステム3800aは、ヘッドマウントまたはボディマウントカメラアレイ3802と、第2のプロセッサ3805とを含み得る。ディスプレイシステム3803もまた、ユーザが3次元画像を見るために設けられてもよい。ヘッドマウントまたはボディマウントカメラアレイ3801は、画像および距離データを第1のプロセッサ3804に供給することができ、第1のプロセッサ3804は、画像データを生成し、ディスプレイシステム3803に供給する。プライマリプロセッサ3804は、画像を第2のプロセッサ3805に供給することができ、第2のヘッドマウントデバイスは、ポイント座標およびジェスチャー制御をプライマリプロセッサ3804に供給することができる。画像および距離データがプロセッサ3804および3805に供給され、それによって、プライマリプロセッサは、仮想オブジェクトを生成し、画像をディスプレイシステム3803上に表示し、また、画像を表示のために第2のプロセッサ3805にも通信する。第2のプロセッサ3805は、アンカー表面のロケーションを指すこと、またはオブジェクトを動かすこと、および制御コマンドなど、ユーザジェスチャーをユーザ入力として検出し、それらのポイントおよびジェスチャー制御を第1のプロセッサに供給することができ、そこで入力が処理され得る。
【０２５８】
図39は、ポイントおよびジェスチャー制御ならびに画像データ情報が、クラウドサーバ3906上に記憶され、クラウドサーバ3906によって(たとえば、マルチキャストにおいて)他のものに中継され得る、クラウド構成において動作するシステム3900を示す。このシステムは、仮想オブジェクトおよびディスプレイデータが、共同作業するヘッドマウントディスプレイシステム3900aおよび3900bにワイヤレス通信され得るようにする。システム3900はまた、他のヘッドマウントデバイスを含む、他のコンピューティングデバイスが、共同作業するヘッドマウントディスプレイシステム3900aと3900bとの間で行われるデータ交換を監視することも可能にする。このようにして、共同作業を、より幅広いオーディエンスによって見ることができる。
【０２５９】
システム3900は、中央サーバ3906上で動作可能な中央プロセッサを含み得る。第1のヘッドマウントデバイス3900aは、ヘッドマウントまたはボディマウントカメラ3902と、第1のプロセッサ3903とを含み得る。第2のヘッドマウントデバイス3900bは、ヘッドマウントまたはボディマウントカメラ3904を、第2のプロセッサ3905とともに含み得る。ディスプレイシステム3901もまた、設けられ得る。画像が、サーバ3906からディスプレイシステム3901に供給され得る。画像はまた、第1のプロセッサ3903にも供給され得る。第1のプロセッサ3903は、ジェスチャー、ポイント座標、距離データ、画像データ、向きデータ、および感知パラメータを含む、データをサーバ3906へ送信する。画像はまた、第2のプロセッサ3905にも供給され得る。第2のプロセッサ3905もまた、ジェスチャー、ポイント座標、距離データ、画像データ、向きデータ、および感知パラメータを含む、データをサーバ3906に供給することができる。中央サーバ3906上で動作可能な中央プロセッサは、サービスをヘッドマウントデバイスに供給して、仮想ポインタオブジェクトおよび仮想オブジェクトをレンダリングするための第1のプロセッサ3903および第2のプロセッサ3905における計算処理を軽減することができる。
【０２６０】
たとえば、第1のユーザシステム3900aは、赤外光を用いてエリア走査することができ、ゲーティング機構への反射された赤外光の飛行時間を測定することができる。これは、所定のエリア内のオブジェクトの形状を決定するために利用されてもよく、また、オブジェクトの距離パラメータを決定するためにも利用され得る。第1のユーザシステム3900aは、距離パラメータをサーバ3906にワイヤレス通信することができる。クラウドサーバ3906は、走査データを利用して、仮想オブジェクトを含む画像を生成することができる。仮想オブジェクトは、画像内で生成され、ディスプレイシステム3901および第2のヘッドマウントデバイス3900bに、所定のエリアの走査データとともにワイヤレス通信され得る。
【０２６１】
再び図37を参照すると、ヘッドマウントデバイスによって追跡され得るジェスチャーの一例は、仮想オブジェクトを示すかまたは選択する、指さしジェスチャーである。たとえば、ユーザは、指3705で仮想オブジェクト14を指すことができ、ヘッドマウントディスプレイのカメラシステムは、ヘッドマウントまたはボディマウントカメラ3708からユーザの指3705まで、および、指3705から仮想オブジェクト14までのベクトルを決定することができる。このベクトルを使用して、プロセッサは、入力デバイス仮想オブジェクトを生成することができる。
【０２６２】
たとえば、ヘッドマウントディスプレイ上に表示するための仮想オブジェクト14の向きが決定され得る。仮想入力デバイスオブジェクト14は、アンカー表面3703に接続されてもよく、ユーザが仮想入力デバイスオブジェクト14を制御できるように、仮想オブジェクト14に接続してもよい。仮想オブジェクト14は、ヘッドマウントディスプレイ上にレンダリングされた画像内のアンカー表面3703上にアンカーされ得る。この実施形態では、仮想オブジェクト14が表示のためにレンダリングされてもよく、仮想オブジェクト入力デバイスを使用して、ユーザは、仮想オブジェクト14のテキストまたは部分を選択することができ、このテキストまたは部分は、ジェスチャー追跡カメラ3708を利用して、追跡されたビデオおよびキャプチャされたジェスチャーを用いて認識される。この実施形態では、仮想入力デバイスオブジェクト14は、ユーザの周囲の、または、ユーザがその周囲を歩き回ることができる、移動可能な3次元オブジェクトとして表示され得る。仮想オブジェクト14は、ビルのサイズなど、表示画像内で極めて大きい仮想オブジェクトとしてレンダリングされ得る。ユーザは、仮想入力デバイスを利用して、表示画像内で極めて大きい仮想オブジェクト14上の空間内の位置を指定することができる。
【０２６３】
図40Aから図40Bは、モバイルスマートフォン4010にワイヤレスに接続され得、表面上で投影画像を生成することができ、そこで入力コマンドを与えるためにユーザのジェスチャーが利用され得る、ピコプロジェクタ4005で、図1に示すヘッドマウントディスプレイデバイス10が置き換えられ、または補われ得る、別の実施形態を示す。この実施形態では、ユーザは、いかなるヘッドマウント装置も装着せず、単に水平または垂直表面上で投影画像を見ることができる。ハンドヘルドプロジェクタ4005(ポケットプロジェクタ4005、モバイルプロジェクタ、またはピコプロジェクタとしても知られる)は、図40Bに示す仮想オブジェクト14aを出力するために、ハンドヘルドデバイス4010とともに使用され得る。ハンドヘルドプロジェクタ4005は、デジタル画像14aを、図1に示す壁16、または図40Bに示すデスクトップ16aなど、任意の近くの閲覧表面16上に投影することができる、小型のハードウェアおよびソフトウェアを含み得る。
【０２６４】
ピコプロジェクタ4005は、バッテリー4015と、電子マザーボード4025と、ダイオードレーザー、レーザーまたは他の光源4030と、コンバイナ光学素子4035と、走査ミラー4040とを含み得る。ハンドヘルドプロジェクタ4005における構成要素の様々な構成が可能であり、本開示の範囲内である。プロセッサ4020は、マザーボード4025に結合され得る。プロセッサ4020は、ミラー4040および光学素子4035を利用してプロセッサ4020によって制御される場合、画像を出力するように、レーザーダイオード4030およびプロジェクタを制御することができる。
【０２６５】
図40Aを参照すると、ピコプロジェクタ4005は、プロジェクタ要素4006と、入力センサ4007と、コネクタ4008と、モバイルデバイス4010または他のコンピューティングデバイスに接続するためのワイヤレスインターフェース4009とを含み得る。入力検知ピコプロジェクタは、同じタイプの他のユニットに、モジュール方式で接続され得る。プロジェクタは、ユーザ間のリアルタイムのローカルデジタル共同作業のために、仮想オブジェクト14aおよび14bとしてレンダリングされた、複数の、位置認識のある、共有された投影ディスプレイを作成することができる。ピコプロジェクタ4005は、第1のユーザのための画像をキャプチャし、解剖学的アルゴリズムをキャプチャされた画像に適用することができる。プロセッサは、第1のユーザを検出し、第1の仮想オブジェクト14aを、第1のユーザのための好都合なロケーションにおけるデスクトップ表面16上に投影することができる。ピアツーピアもしくは他のRFワイヤレス通信リンクを使用する、または、キャプチャされた画像データを使用するピコプロジェクタ4005は、第2のユーザが共同作業に加入していることを検出することができる。ピコプロジェクタ4005は、キャプチャされた画像データに基づいて、第2のユーザのために正しく向きが設定された第2の仮想オブジェクト14bを出力することができる。
【０２６６】
各プロジェクタ4005は、モバイルコンピューティングデバイス4010(もしくは、他のコンピューティングデバイス)に、高速ワイヤレスデータリンク(たとえば、4G、Wi-Fi、もしくはBluetooth(登録商標))を介して接続することができ、および/または、ピアツーピア通信プロトコルを介してリンクされ得る。各プロジェクタ4005はまた、モバイルコンピューティングデバイス4010(または、他のコンピューティングデバイス)にも、ワイヤードデータリンクを介してリンクされ得る。モバイルコンピューティングデバイス4010は、ピコプロジェクタ4005のための処理ユニットおよびデータ記憶デバイスとして働くことができ、投影画像を生成し、その画像をピコプロジェクタ4005に通信することができる。ピコプロジェクタ4005は、代替として、各プロジェクタ4005のハウジング上の戦略的に位置決めされたコネクタ4008を介してなど、他のピコプロジェクタに物理的に接続することができる。たとえば、2つのピコプロジェクタ4005は、それぞれのコネクタ4008を介して接続することができる。コネクタ4008は、2つのピコプロジェクタ4005が互いに接続されるとき、ピコプロジェクタ4005の各々のための基準データ点を与えることができる。ピコプロジェクタ4005は、投影画像を表面16a上に表示することができ、表面16aは、基準データ点から所定の距離であり得る。
【０２６７】
各プロジェクタ4005のハウジングにおける接続4008は、両方の物理的サポートを提供することができ、各プロジェクタのワイヤレス接続されたモバイルコンピューティングデバイス4010間の通信をブリッジする、プロジェクタ4005間の高速データリンクのための回路を含み得る。コネクタ4008および回路は、USB、Firewire(登録商標)、または、当技術分野で知られている任意の他の高速コネクタ4008をサポートすることができる。
【０２６８】
加えて、これらの接続は、図40Aに示すコネクタ4008を介して接続された他のプロジェクタに対する、各プロジェクタの物理的向きに関して、ソフトウェアに基準データ点を与えることができる。コネクタ4008は、インターフェースソフトウェアと、プロジェクタ4005にわたってデジタルアセットを転送するための能力とを提供するために使用され得る。プロジェクタ4005は、仮想オブジェクト14aを表面上への投影として出力することができる。プロジェクタ4005はまた、キャプチャされた画像データを使用して、追跡のため、およびジェスチャー認識のために、画像内のオブジェクトを検知することもできる。投影画像14aは、仮想タッチスクリーン14aであってもよく、また、仮想オブジェクト上で仮想入力デバイスを含んでもよい。投影画像に関連付けられたジェスチャーが検出されてもよく、プロセッサは、検出されたジェスチャーに基づいて、入力コマンドを編成することができる。このジェスチャー認識機能は、ユーザが仮想入力デバイスを制御中であり得るという、シミュレートされた外観を与えることができる。
【０２６９】
図40Bは、第1の仮想オブジェクト14aおよび第2の仮想オブジェクト14bをレンダリングする、ピコプロジェクタ4005を示す。一実施形態では、単一のピコプロジェクタ4005が、各ユーザのための少なくとも2つの異なる画像を投影することができる。別の実施形態では、ピコプロジェクタ4005は、第2のピコプロジェクタと嵌合されてもよく、その嵌合が、2つのプロジェクタ間の電子的接続を完成する。2つの異なるピコプロジェクタ4005は、モバイルコンピューティングデバイス4010または他の利用可能なコンピューティングデバイスとワイヤレスに接続することができ、各々は、各ユーザに1つずつ、2つの異なる画像を出力することができる。モバイルコンピューティングデバイス4010にリンクされたプロジェクタ4005は、各モバイルコンピューティングデバイス4010のプロセッサを使用して、仮想オブジェクト14aおよび14bをレンダリングすることができる。モバイルコンピューティングデバイス4010のプロセッサと、画像センサとは、仮想オブジェクト14aおよび14bをレンダリングするために、および、ユーザの各々のために仮想オブジェクト14aおよび14bの正しい向きを決定するために、各ユーザに関連付けられたパラメータを検出することができる。
【０２７０】
入力センサ4007は、画像を電子信号に変換することができる。電子信号は、異なる色および強度をもつ光源を、異なる光路に沿って駆動することができる。コンバイナ光学素子4035において、異なる光路が、いくつかの色を示す1つの経路に結合され得る。ミラー4040は、画像をピクセルごとに反射し、画像を投影する。ハンドヘルドプロジェクタ4005は、閲覧表面16の物理的特性にかかわらず、明瞭な画像を投影することができる。たとえば、仮想オブジェクト14aの投影画像は、ワードプロセシングアプリケーションをもつキーボードなど、「仮想オブジェクト入力デバイス」であり得る。ユーザのジェスチャーは、仮想オブジェクト14a〜14c上の入力デバイスロケーションに対応して検出され、1つまたは複数の入力コマンドとして認識され得る。
【０２７１】
図示の実施形態では、画像は、仮想オブジェクト14aを、図40Bに示す表面16a上に投影することができ、ユーザは、仮想オブジェクト14aを物理的表面16a上にアンカーすることができる。ユーザが、センサ4007の出力に基づいて動くとき、仮想オブジェクト14aは、形状、向きおよびサイズが変化して、物理的表面16aにアンカーされたままであり得る。たとえば、ユーザは、センサ4007によって、プロジェクタ4005に対して後方もしくは前方、または左もしくは右に動いているとして検出され得る。入力センサ4007は、ユーザによる位置変更を通信することができ、プロセッサ4020は、投影画像をより大きくもしくはより小さくなるように、またはそれ以上に、投影画像をユーザの新しいロケーションに関連付けられた快適な閲覧ロケーションへと、制御することができる。たとえば、投影画像は、水平表面から垂直表面へ移動して、ユーザを追ってもよい。
【０２７２】
スマートフォンなどのモバイルコンピューティングデバイス4010は、プロジェクタ4005のジェスチャーユーザインターフェース機能をサポートするように構成されてもよく、プロジェクタ4005は、コンピュータ生成画像(プレゼンテーションスライド、テキスト文書、または写真など)を投影表面16上に投影する。モバイルコンピューティングデバイス4010に結合されたカメラ(画像センサ)4007(図40A)は、その視界が表示画像の少なくとも一部分を包含するように位置決めされ得る。別の実施形態では、ユーザはまた、レーザーポインタを使用して、表示画像上にレーザースポットを配置することもでき、レーザースポットは、カメラ4007によって検出され得る。
【０２７３】
カメラ4007は、レーザースポットのデジタル画像と、表示画像の少なくとも一部分とを取得し、カメラ画像をモバイルコンピューティングデバイス4010のプロセッサ4020に、画像内のレーザースポットのロケーションとともに供給することができる。モバイルコンピューティングデバイス4010のプロセッサ4020は、カメラ4007によって生成された画像(本明細書では「受信カメラ画像」と呼ぶ)を解析して、投影表面16上に投影されているディスプレイコンテンツの少なくとも一部分を認識し、コンテンツに対するレーザースポットのロケーションを決定するための、ソフトウェア命令で構成され得る。レーザーポインタが明るい光線を特定の波長で出すので、レーザースポットは、プロセッサ4020によって容易に認識され、強度および/または色成分に基づいて、投影画像とは区別され得る。カメラ4007は、レーザースポットの動きを追跡し、その動きをあらかじめ定義されたレーザージェスチャーに相関させるように、さらに構成され得る。レーザージェスチャーが認識されるとき、プロセッサ4020は、対応する機能を実行することができる。
【０２７４】
図40Cは、1人または複数の検出されたユーザに基づいて、複数の異なる投影画像を出力するプロジェクタの、ハイレベル図である。図40Cは、モバイル通信デバイスプロセッサ4010(図40A)を使用して、共同作業に加入している追加のユーザの追跡された画像から、ジェスチャーを検出する、プロジェクタ4005を示す。新しいユーザを検出したことに応答して、プロセッサは、第3のユーザに正しく向けられる、第3の仮想オブジェクト14cを、モジュール方式でレンダリングすることができる。同様に、追加のユーザが加入し、検出される場合、プロセッサは、第4の仮想オブジェクト(図示せず)をモジュール方式でレンダリングすることができ、そこで、少なくとも2つの投影画像が同じコンテンツおよび画像をレンダリングすることができる。さらに、第3または第4のユーザは、モバイルコンピューティングデバイス4010を使用して、投影画像14a、14bおよび14cの表示を変更することができる。たとえば、ユーザは、第3のオブジェクト14cを閉じ、異なるコンテンツを有する新しいオブジェクトを開くことができる。
【０２７５】
プロジェクタ4005を使用して、高度に可搬である大型の入力および表示環境を提供することによって、モバイルユーザエクスペリエンスが向上され得る。複数のユーザのためのデジタル共同作業環境が、モバイルデバイス4010を使用することによって、アドホックな方法でセットアップされ得る。プロジェクタ4005における物理的コネクタ4008は、プロジェクタ間の相対位置認識を与えることができる。位置データは、高い精度で与えられ得る。これによって、ユーザが、複数の投影された仮想オブジェクト14a〜14cを使用した、共同作業的なデータ提示および操作を容易に作り出すことが可能になる。
【０２７６】
図40Dは、検出されたオブジェクト/ジェスチャーに基づいて、ユーザにとって好都合な方法で画像を投影するための、一実施形態の方法4045を示す。方法4045は、方法4045の動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有する、コンピューティングデバイス内で実施され得る。方法4045において、ブロック4046および4047で、プロセッサは、ユーザの画像をキャプチャすることができ、センサアレイを用いて空間データをキャプチャすることができる。ブロック4048で、プロセッサは、画像内のオブジェクトを認識し、画像内のオブジェクトまでの距離を決定することができる。ブロック4049で、プロセッサは、画像内のオブジェクトを追跡することができ、解剖学的解析を適用して、画像内に身体部分があるかどうかを判定することができる。
【０２７７】
たとえば、プロセッサは、解剖学的解析をキャプチャされた画像に適用して、キャプチャされた画像が頭および肩、胴、ならびに腕など、または、ユーザもしくはユーザが見ている方向を示すようになる任意の他の身体部分を含むかどうかを判定することができる。身体部分が検出される場合、プロセッサは、経時的に検出された身体部分が、メモリに(たとえば、ジェスチャー辞書に)記憶されたジェスチャーに適合するかどうかを判定することができ、ジェスチャーが認識されるとき、コマンドを適用することができる。一実施形態では、ピコプロジェクタは、画像を特定のロケーションに投影し、ユーザが投影画像を好都合に見て、投影画像と対話できるようにすることができる。たとえば、頭および肩が画像内にあると判定される場合、ピコプロジェクタは、画像を、ユーザに好都合に近い壁またはテーブルトップ上に投影することができる。
【０２７８】
さらなる実施形態では、ユーザは、ユーザの手および指を区別すること、ならびに動きジェスチャーを認識することにおいて役立つために、有色であるか、または、距離センサとカメラの一方もしくは両方によって認識され得る反射性の特徴を特色とする、一方または両方の手または手首の手袋、リング、ブレスレット、および/または他のアイテムをつけるか、または着用してもよい。たとえば、ユーザは、指の各々で異なる色が示されている手袋を着用することがあり、ヘッドマウントデバイスは、指の色の各々を、シーン画像のピクセル内のそれらのそれぞれの赤-緑-青強度値に基づいて認識するように構成され得る。
【０２７９】
ブロック4050および4051で、プロセッサは、第1および第2の信号をそれぞれの第1および第2のピコプロジェクタから受信して、ピコプロジェクタとプロセッサとの間でリンクし、データを通信する。たとえば、ピコプロジェクタは、モバイル通信デバイスとリンクし、モバイル通信デバイスメモリに関連付けられたメモリのデータコンテンツがアクセスおよび表示され、または共有され得るようにすることができる。判定ブロック4052で、プロセッサは、検出された身体部分に基づいて、ピコプロジェクタからの画像を投影するかどうかを判定する。そうである場合(すなわち、判定ブロック4052=「Yes」)、ブロック4053で、プロセッサは、ユーザにとって好都合な表面における投影画像を利用して、コンテンツを表示することができる。ブロック4054で、プロセッサは、ピコプロジェクタ間のワイヤレスデータリンクを介して、ユーザ間でデータを共有することができる。たとえば、画像ファイル、ワードプロセシングファイル、電子メール、または任意の他のデータが、投影画像として共有または表示され得る。プロセッサが、検出された身体部分に基づいて、画像を投影しないように判定する場合(すなわち、判定ブロック4052=「No」)、ブロック4055および4056で、プロセッサは、画像を投影するためのプロンプトを表示し、画像を好都合な方法で投影することができる。たとえば、ピコプロジェクタは、入力が受信されるまで、投影を投影することを遅らせることができ、ユーザは投影画像を手動で検出することができる。投影画像は、仮想オブジェクトを含んでもよく、ヘッドマウントデバイスは、投影された仮想オブジェクト画像と対話するか、またはそれに関係するユーザの手のジェスチャーを、ユーザ入力として認識するように構成され得る。そのような実施形態では、プロセッサは、投影された仮想入力デバイスを利用するときに行われる、認識された手のジェスチャーに対応する、コマンドを適用することができる。
【０２８０】
たとえば、ユーザの手の追跡された動きとともに移動され得る、仮想マウスまたは仮想ポインタが表示され得る。加えて、検出されたジェスチャーを使用して、プロセッサは、投影画像の向きを垂直または水平表面上で正しく設定することができる。このようにして、投影画像は、検出された身体部分に基づいて、正しい側が上になるように投影され得る。たとえば、第1のピコプロジェクタは、第2のピコプロジェクタに背中合わせの構成で接続されてもよく、これらのプロジェクタは、少なくとも2つの異なる投影画像を投影することができ、それらの投影画像は、互いに対して少なくとも180度だけ分離される。さらに別の実施形態では、プロセッサは、基準点を定義し、基準点に基づいて、第1および第2のプロジェクタの各々の向きを決定することができる。プロセッサは、投影画像の向きを、ユーザのために、基準点と、第1および第2のプロジェクタの向きとに基づいて設定することができる。
【０２８１】
別の実施形態では、プロセッサは、第3のユーザを検出し、少なくとも第3の投影画像を、検出された身体部分に基づいて投影することができる。また、プロセッサは、共同作業のために、第3のユーザに関連付けられた第3のコンピューティングデバイスから、データを受信することができる。別の実施形態では、第4のピコプロジェクタが設けられてもよく、少なくとも4つの異なる投影画像が与えられ得る。
【０２８２】
様々な実施形態は、コンピューティングデバイスに結合された第1および第2のピコプロジェクタの近傍におけるシーンの画像をキャプチャすること、センサアレイを用いて、第1および第2のプロジェクタの近傍における空間データをキャプチャすること、キャプチャされたシーン画像を解析して、身体部分を認識すること、ならびに、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影することによって、第1および第2のプロジェクタから画像を投影する方法を含み得る。一実施形態では、第1および第2のプロジェクタは、ピコプロジェクタであり得る。さらなる実施形態では、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影することは、画像を、プロジェクタの近傍におけるユーザの前の表面上に投影することを含み得る。
【０２８３】
さらなる実施形態では、この方法は、プロジェクタの近傍におけるユーザに適した垂直または水平表面上で、投影画像の向きを設定することを含み得る。さらなる実施形態では、この方法は、認識された身体部分の動きを追跡すること、検出アルゴリズムを追跡された動きに適用して、所定のジェスチャーを検出すること、検出された所定のジェスチャーに対応するコマンドを適用すること、および、適用されたコマンドに応答して、投影画像を修正することを含み得る。さらなる実施形態では、キャプチャされた画像を解析して、身体部分を認識することは、解剖学的解析を画像に適用して、キャプチャされた画像内のオブジェクトが解剖学的モデルの一部分に適合するかどうかを判定することを含み得る。
【０２８４】
さらなる実施形態では、投影画像は、仮想入力デバイスのものであってもよく、検出された所定のジェスチャーに対応するコマンドを適用することは、ユーザ入力デバイスのものに整合するコマンドを適用することを含み得る。さらなる実施形態では、検出された所定のジェスチャーに対応するコマンドを適用することは、仮想オブジェクトを移動させることに対応するコマンドを適用することを含んでもよく、適用されたコマンドに応答して、投影画像を修正することは、所定のジェスチャーを検出することに応答して、仮想オブジェクトを第1のロケーションから第2のロケーションへ移動するように表示することを含み得る。さらなる実施形態では、この方法は、第1のプロジェクタを第2のプロジェクタに、背中合わせの構成で、各プロジェクタの外部におけるコネクタを介して接続することを含んでもよく、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影することは、少なくとも2つの画像をほぼ反対方向に投影することを含み得る。
【０２８５】
さらなる実施形態では、この方法は、第1のプロジェクタを第3のプロジェクタに、それらのプロジェクタの外部におけるコネクタを介して接続すること、および、第3のプロジェクタを第2のプロジェクタに、それらのプロジェクタの外部におけるコネクタを介して接続することを含んでもよく、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影することは、少なくとも3つの投影画像を、それらの画像がほぼ90度だけ分離されるように投影することを含み得る。
【０２８６】
さらなる実施形態では、この方法は、第1のプロジェクタを第3のプロジェクタおよび第4のプロジェクタに、それらのプロジェクタの外部におけるコネクタを介して接続すること、ならびに、第3のおよび第4のプロジェクタを第2のプロジェクタに、それらのプロジェクタの外部におけるコネクタを介して接続することを含んでもよく、認識された身体部分に基づいて決定された形状および向きで、第1および第2のプロジェクタの各々から画像を投影することは、4つの画像を、それらの画像がほぼ90度だけ分離されるように投影することを含み得る。
【０２８７】
さらなる実施形態では、この方法は、シーン内で基準点を定義すること、第1および第2のプロジェクタの各々の向きを、定義された基準点に基づいて決定すること、ならびに、投影画像の向きを、定義された基準点と、第1および第2のプロジェクタの向きとに基づいて設定することを含み得る。さらなる実施形態では、シーン内で基準点を定義することは、接続点によって第1のプロジェクタを第2のプロジェクタに接続すること、および、接続点を基準点として定義することを含み得る。
【０２８８】
様々な実施形態は、ボディマウントカメラを用いて、画像をキャプチャすること、ボディマウントセンサアレイを用いて、空間データをキャプチャすること、キャプチャされた画像内でオブジェクトを認識すること、キャプチャされた画像内で、画像内にある第1の表面に対応する第1のアンカー表面を示す第1のユーザ入力を受信すること、第1のアンカー表面に対応する、ボディマウントカメラに対する距離および向きを含む、パラメータを計算すること、仮想オブジェクトが選択された第1のアンカー表面にアンカーされるように見えるように、仮想オブジェクトを表示すること、第1のアンカー表面とは異なる、キャプチャされた画像内の第2のアンカー表面を示す第2の入力を受信することであり、第2のアンカー表面が画像内にある第2の表面に対応し、第1および第2の表面が異なること、第2のアンカー表面に対応する、ボディマウントカメラに対する距離および向きを含む、パラメータを計算すること、ならびに、仮想オブジェクトがユーザにとって、選択された第2のアンカー表面にアンカーされるように、および、第1のアンカー表面から移動されるように見えるように、仮想オブジェクトを表示することによって、仮想画像を拡張現実システムにおいてレンダリングする方法を含み得る。
【０２８９】
一実施形態では、この方法は、生成された仮想オブジェクトの表示を連続的に更新し、ユーザが自分の頭を回し、選択された第1または第2のアンカー表面に対して動くとき、仮想オブジェクトが選択された第1または第2のアンカー表面にアンカーされるように見えるようにすることを含み得る。さらなる実施形態では、仮想オブジェクトを表示することは、仮想ヘッドマウントディスプレイを表示することを含み得る。この方法は、ビデオ画像を、選択された第1または第2のアンカー表面にアンカーされたヘッドマウントディスプレイ上で見えているように出力することをさらに含み得る。さらなる実施形態では、仮想オブジェクトがユーザにとって、選択された第2のアンカー表面にアンカーされ、第1のアンカー表面から移動されるように見えるように、生成された仮想オブジェクトを表示することは、仮想オブジェクトを、フラットスクリーンディスプレイに似ている長方形をした仮想オブジェクトとして生成すること、および、生成された仮想オブジェクトを、半透明ディスプレイ上に表示することであり、仮想オブジェクトが、半透明ディスプレイを通して可視の実世界表面上に重ね合わせられることを含み得る。
【０２９０】
さらなる実施形態では、第1または第2のアンカー表面は、室内の壁を含んでもよく、仮想オブジェクトは、ユーザが室内を動き回るとき、室内の壁にアンカーされたままである。さらなる実施形態では、仮想オブジェクトが選択された第1または第2のアンカー表面にアンカーされるように見えるように、生成された仮想オブジェクトを表示することは、仮想オブジェクトが第1または第2のアンカー表面に接触しているように見えるように、および、第1または第2のアンカー表面が、アンカーされた仮想オブジェクトのための厳密な支点であるように見えるように、仮想オブジェクトを生成することを含み得る。さらなる実施形態では、仮想オブジェクトが選択されたアンカー表面にアンカーされるように見えるように、生成された仮想オブジェクトを表示することは、仮想オブジェクトが第1または第2のアンカー表面から離間しているが、固定位置で、第1または第2のアンカー表面に対して離間して浮かんでいるように見えるように、仮想オブジェクトを生成することを含み得る。
【０２９１】
さらなる実施形態では、この方法は、キャプチャされた空間データ、生成された仮想オブジェクト、および画像によるデータを、第2のヘッドマウントディスプレイへ送信することを含み得る。さらなる実施形態では、この方法は、マイクロフォンを利用して、ユーザから音声を受信すること、検出アルゴリズムを、受信された音声に適用して、所定の音声信号を検出すること、および、所定の音声信号が検出されるとき、あらかじめ定義されたユーザ入力を実施することを含み得る。さらなる実施形態では、検出アルゴリズムを、受信された音声に適用して、所定の音声信号を検出することは、検出アルゴリズムを、受信された音声に適用して、あらかじめ定義されたユーザ入力に対応する、ユーザによって話された所定の音声信号を検出することを含み得る。さらなる実施形態では、検出された所定の音声信号に対応する、あらかじめ定義されたユーザ入力は、第1の入力、第2の入力、または、第1の入力および第2の入力のうちの1つの確認のうちの1つである。
【０２９２】
さらなる実施形態では、この方法は、ヘッドマウントディスプレイとともにマウントおよび配設されるボディマウントカメラを用いて、画像をキャプチャすること、ならびに、仮想オブジェクトをヘッドマウントディスプレイ上に表示することを含み得る。さらなる実施形態では、ボディマウントカメラおよびヘッドマウントディスプレイは、ボディマウントデバイスを含む。この方法は、ボディマウントデバイスと第2のボディマウントデバイスとの間でワイヤレスデータリンクを確立すること、音声データを第2のボディマウントデバイスから、ワイヤレスデータリンクを介して受信すること、および、受信された音声データを使用して、音声をユーザに出力することをさらに含み得る。さらなる実施形態では、この方法は、ビデオデータを、ワイヤレスデータリンクを介して受信すること、および、受信されたビデオデータを使用して、ヘッドマウントディスプレイ上で、第2のボディマウントデバイスから受信された、ビデオ画像を出力することを含んでもよく、ビデオは、アンカーされた仮想オブジェクトを表示する。
【０２９３】
さらなる実施形態では、ビデオデータを、ワイヤレスデータリンクを介して受信することは、仮想オブジェクトについての3次元モデルデータ、アンカリング表面についての3次元データ、アンカリング点についての3次元データ、3次元深度データ、および3次元距離データのうちの、1つまたは複数を受信することを含み得る。さらなる実施形態では、この方法は、仮想オブジェクトのためのスタンバイロケーションを示す第3の入力を受信することであり、スタンバイロケーションは、第1および第2のアンカー表面とは異なること、スタンバイロケーションに対応する、ボディマウントカメラに対する距離および向きを含む、パラメータを計算すること、ならびに、仮想オブジェクトをスタンバイロケーションに表示することを含み得る。さらなる実施形態では、スタンバイロケーションは、ディスプレイ上で自由に浮いているように表示され、ユーザが自分の頭を回し、動くとき、仮想オブジェクトがディスプレイ上で移動可能なように、および画像内の表面に接続されていないように見える。
【０２９４】
さらなる実施形態では、ボディマウントカメラを用いて、画像をキャプチャすることは、フルカラービデオカメラによってビデオデータをキャプチャすることを含んでもよく、ボディマウントセンサアレイを用いて、空間データをキャプチャすることは、画像内のオブジェクトまでの距離を決定するために、距離センサを利用して、空間データをキャプチャすることを含み得る。さらなる実施形態では、ボディマウントセンサアレイを用いて、空間データをキャプチャすることは、赤外線レーザーおよび赤外線センサを使用して、画像内のオブジェクトの距離情報をキャプチャすることを含み得る。さらなる実施形態では、この方法は、キャプチャされたビデオデータと、計算された空間データとに基づいて、3次元マップを構築することを含み得る。さらなる実施形態では、この方法は、ボディマウントカメラを利用して、ユーザの動きを追跡すること、検出アルゴリズムを追跡されたユーザの動きに適用して、所定のジェスチャーを検出すること、および、所定のジェスチャーが検出されるとき、所定のジェスチャーに対応するコマンドを実行することを含み得る。
【０２９５】
さらなる実施形態では、検出される所定のジェスチャーは、「OK」サイン、握りこぶし、開いた手、1本の指を用いて指すこと、2本の指を用いて指すこと、3本または4本の指を用いて指すこと、差し伸ばした手、手の回転、手を振ること、1本または複数本の指の動き、身体部分または足の動き、および、それらの任意の組合せからなるグループから選択される。さらなる実施形態では、所定のジェスチャーは、ジェスチャー辞書から検索される。さらなる実施形態では、ジェスチャー辞書は、突くジェスチャー、軽くたたくジェスチャー、またはターゲット選択もしくはトグリングのためのタップジェスチャー、画面上で画面オブジェクトを案内するための押すジェスチャー、画面オブジェクトに勢いを与えるためのフリックジェスチャー、画面オブジェクトを回転させるためのターンジェスチャー、ズーム動作のためのつかむジェスチャーもしくは引くジェスチャー、パンする動作のための両手の動きのジェスチャー、画面オブジェクトのサイズを変更するための、両手を別々に描画する(drawing hands apart)ジェスチャー、および、メディアを通して水平にスクロールするか、もしくは左右に動かすためのスワイプジェスチャーのうちの、1つまたは複数を定義する。
【０２９６】
さらなる実施形態では、キャプチャされた画像内の第1のアンカー表面を示す第1の入力を受信することは、キャプチャされた画像内の表面をアンカー表面として指定するためのコマンドに対応する、ユーザによって行われた第1の所定のジェスチャーを検出すること、および、そのコマンドを適用することを含んでもよく、仮想オブジェクトを画像内でアンカーするための第2の入力を受信することは、アンカー表面をキャプチャされた画像内の別の表面に移動させるためのコマンドに対応する、ユーザによって行われた第2の所定のジェスチャーを検出すること、および、そのコマンドを適用することを含んでもよい。さらなる実施形態では、第1の検出された所定のジェスチャーまたは第2の検出された所定のジェスチャーのいずれかは、ユーザがキャプチャされた画像内の表面を指すことを含み得る。さらなる実施形態では、この方法は、第1の入力が受信された後、ユーザの動きを追跡することを継続すること、検出アルゴリズムを追跡された動きに適用して、第1の入力を確認するユーザ入力に対応する第3の所定のジェスチャーを検出すること、および、第3の所定のジェスチャーに応答して、仮想オブジェクトを選択されたアンカー表面にアンカーすることを含み得る。
【０２９７】
様々な実施形態は、シーン内の表面およびオブジェクトのロケーションに関するデータを、第1のボディマウントセンサデバイスから収集された画像および空間データに基づいて生成すること、シーンの3次元マップを、生成されたデータに基づいて生成すること、地理的識別メタデータを、シーンの3次元マップに追加すること、地理的識別メタデータおよび3次元マップをメモリに記憶すること、ならびに、地理的識別メタデータおよび3次元マップのうちの少なくとも一部分を、第2のボディマウントセンサデバイスへ送信することによって、拡張現実システムにおいて使用するための空間データを記憶する方法を含み得る。一実施形態では、シーン内の表面およびオブジェクトのロケーションに関するデータを、第1のボディマウントセンサデバイスから収集された画像および空間データに基づいて生成することは、ボディマウントカメラを用いて、シーンのシーン画像をキャプチャすること、ボディマウントセンサアレイを用いて、シーン内のオブジェクトの空間データをキャプチャすること、キャプチャされたシーン画像内でオブジェクトを認識すること、ならびに、第1のボディマウントセンサデバイスから、シーン画像内で認識されたオブジェクトまでの距離を決定することを含んでもよく、地理的識別メタデータを、シーンの3次元マップに追加することは、決定された距離を、シーン画像内で認識されたオブジェクトに関連付けることを含んでもよい。
【０２９８】
一実施形態では、この方法は、第2のボディマウントセンサデバイスのロケーションを決定することを含んでもよく、地理的識別メタデータおよび3次元マップのうちの少なくとも一部分を、第2のボディマウントセンサデバイスへ送信することは、第2のボディマウントセンサデバイスのロケーションに関連する地理的識別メタデータおよび3次元マップのうちの一部分を送信することを含んでもよい。さらなる実施形態では、この方法は、地理的識別メタデータおよび3次元マップのうちの送信された部分を、第2のボディマウントセンサデバイスにおいて受信すること、ならびに、地理的識別メタデータおよび3次元マップのうちの受信された部分に部分的に基づいて、仮想画像を第2のボディマウントセンサデバイス上のディスプレイ上に生成することを含み得る。
【０２９９】
さらなる実施形態では、この方法は、第2のボディマウントセンサデバイスのロケーションを決定すること、シーン内の表面およびオブジェクトのロケーションに関するデータを、第2のボディマウントセンサデバイスから収集された画像および空間データに基づいて生成すること、ならびに、地理的識別メタデータおよび3次元マップを、第2のボディマウントセンサデバイスによって生成されたデータに基づいて改善することを含み得る。さらなる実施形態では、地理的識別メタデータを、シーンの3次元マップに追加することは、ジオタグを用いて3次元マップにタグ付けすることを含み得る。さらなる実施形態では、シーン内の表面およびオブジェクトのロケーションに関するデータを、第1のボディマウントセンサデバイスから収集された画像および空間データに基づいて生成すること、シーンの3次元マップを、生成されたデータに基づいて生成すること、ならびに、地理的識別メタデータを、シーンの3次元マップに追加することは、第1のボディマウントセンサデバイス内のプロセッサにおいて達成される。
【０３００】
さらなる実施形態では、この方法は、第1のボディマウントセンサデバイスによって収集された画像および空間データを、第1のボディマウントセンサデバイスと通信しているプロセッサに中継することを含んでもよく、シーン内の表面およびオブジェクトのロケーションに関するデータを、第1のボディマウントセンサデバイスから収集された画像および空間データに基づいて生成すること、シーンの3次元マップを、生成されたデータに基づいて生成すること、ならびに、地理的識別メタデータを、シーンの3次元マップに追加することは、第1のボディマウントセンサデバイスと通信しているプロセッサにおいて達成される。さらなる実施形態では、この方法は、第1のボディマウントセンサデバイスによって収集された画像および空間データを、ネットワークを介してサーバへ送信することを含んでもよく、シーン内の表面およびオブジェクトのロケーションに関するデータを、第1のボディマウントセンサデバイスから収集された画像および空間データに基づいて生成すること、シーンの3次元マップを、生成されたデータに基づいて生成すること、ならびに、地理的識別メタデータを、シーンの3次元マップに追加することは、第1のボディマウントセンサデバイスから受信された画像および空間データに基づいて、サーバにおいて達成される。
【０３０１】
さらなる実施形態では、この方法は、第2のボディマウントセンサデバイスのロケーションを決定すること、ならびに、地理的識別メタデータおよび3次元マップの一部分を求めて、要求を第2のボディマウントセンサデバイスからサーバへ送信することであり、この要求は、第2のボディマウントセンサデバイスの決定されたロケーションを含むことを含んでもよく、地理的識別メタデータおよび3次元マップのうちの少なくとも一部分を、第2のボディマウントセンサデバイスへ送信することは、サーバから第2のボディマウントセンサデバイスへ、第2のボディマウントセンサデバイスのロケーションに関連する、地理的識別メタデータおよび3次元マップのうちの一部分を送信することを含んでもよい。さらなる実施形態では、シーンの3次元マップを生成することは、シーン内の3次元表面の数学的表現を生じること、および、地理的識別メタデータを数学的表現に書き込むことを含み得る。さらなる実施形態では、地理的識別メタデータおよび3次元マップをメモリに記憶することは、数学的表現を、第1および第2のボディマウントセンサデバイスによってアクセス可能なサーバ上に記憶することを含み得る。
【０３０２】
さらなる実施形態では、シーン内の表面およびオブジェクトのロケーションに関するデータを、第1のボディマウントセンサデバイスから収集された画像および空間データに基づいて生成することは、第1のボディマウントセンサデバイスのロケーションを決定すること、ボディマウントカメラを用いて、シーンのシーン画像をキャプチャすること、ボディマウントセンサアレイを用いて、シーン内のオブジェクトの空間データをキャプチャすること、キャプチャされたシーン画像内でオブジェクトを認識すること、および、シーン画像内で認識されたオブジェクトのロケーションを決定することを含んでもよく、地理的識別メタデータを、シーンの3次元マップに追加することは、決定されたロケーションを、シーン画像内で認識されたオブジェクトに関連付けることを含んでもよい。さらなる実施形態では、画像内で認識されたオブジェクトのロケーションを決定することは、第1のボディマウントセンサデバイスの決定されたロケーションに対するオブジェクトのロケーションを決定することを含み得る。さらなる実施形態では、画像内で認識されたオブジェクトのロケーションを決定することは、第1のボディマウントセンサデバイスのロケーションを決定することにおいて使用された座標系内で、オブジェクトのロケーションを決定することを含み得る。
【０３０３】
様々な実施形態は、仮想オブジェクトが表示されるべきであるシーンの画像をキャプチャすること、キャプチャされた画像中に存在する身体部分を認識すること、および、仮想オブジェクトの表示を、認識された身体部分に基づいて調整することによって、画像を拡張現実システムにおいてレンダリングする方法を含み得る。一実施形態では、仮想オブジェクトの表示を調整することは、認識された身体部分に重なる仮想オブジェクトの一部分を識別すること、および、認識された身体部分が、仮想オブジェクトの識別された部分をふさぐように見えるように、識別された部分を抑制することを含み得る。さらなる実施形態では、仮想オブジェクトの表示を調整することは、認識された身体部分に重なる仮想オブジェクトの一部分を識別すること、および、仮想オブジェクトの識別された部分が、認識された身体部分をふさぐように見えるように、仮想オブジェクトを認識された身体部分上に重ね合わせることを含み得る。
【０３０４】
さらなる実施形態では、表示された仮想オブジェクトを調整することは、仮想オブジェクトが、認識された身体部分を通して可視であるように、および、認識された身体部分が半透明に見えるように、認識された身体部分に重なる仮想オブジェクトの表示された部分を調整することを含み得る。さらなる実施形態では、この方法は、ボディマウント半透明ディスプレイを装着している個人が、ディスプレイを通してシーンを見ることができるように構成された、ボディマウント半透明ディスプレイ上に、仮想オブジェクトを表示することを含み得る。さらなる実施形態では、仮想オブジェクトが表示されるべきであるシーンの画像をキャプチャすることは、第1の個人によって装着されたボディマウントカメラを用いて、画像をキャプチャすることを含み得る。この方法は、第1の個人によって装着されたボディマウントセンサアレイを用いて、空間データをキャプチャすること、キャプチャされた画像内でオブジェクトを認識すること、および、キャプチャされた画像内で認識されたオブジェクトまでの距離を決定することをさらに含み得る。さらなる実施形態では、この方法は、ボディマウント半透明ディスプレイを装着している個人にとって、シーンが可視であるように、仮想オブジェクトおよびキャプチャされた画像をヘッドマウントディスプレイ上に表示することを含み得る。
【０３０５】
さらなる実施形態では、キャプチャされた画像中に存在する身体部分を認識することは、解剖学的解析をキャプチャされた画像に適用することを含み得る。さらなる実施形態では、解剖学的解析を画像に適用することは、キャプチャされた画像内でオブジェクトを認識すること、認識されたオブジェクトを、メモリに記憶された骨格モデルと比較することであり、記憶された骨格モデルが、人間の骨格の主要な関節、骨、および肢についての相対位置情報を含むこと、ならびに、認識されたオブジェクトを骨格モデルと比較することに応答して、認識されたオブジェクトのいずれかが骨格モデルの一部分に適合するかどうかを判定することを含み得る。さらなる実施形態では、この方法は、キャプチャされた画像中に存在する身体部分を認識することに応答して、身体部分が第1の個人に属するか、第2の個人に属するかを判定すること、仮想オブジェクトのロケーションおよび包含されたエリアを決定すること、ならびに、認識された身体部分が、仮想オブジェクトによって包含されたエリアの少なくとも一部分に重なるかどうかを判定することを含み得る。
【０３０６】
さらなる実施形態では、身体部分が第1の個人に属するか、第2の個人に属するかを判定することは、認識された身体部分の向きに基づいて、身体部分が第1の個人に属するか、第2の個人に属するかを判定することを含み得る。さらなる実施形態では、身体部分が第1の個人に属するか、第2の個人に属するかを判定することは、ボディマウントカメラからの認識された身体部分の距離に基づいて、身体部分が第1の個人または第2の個人に属すると判定することを含み得る。さらなる実施形態では、身体部分が第1の個人に属するか、第2の個人に属するかを判定することは、キャプチャされた画像内であると判定される身体部分の数に基づいて、身体部分が第1の個人または第2の個人に属すると判定することを含み得る。
【０３０７】
さらなる実施形態では、仮想オブジェクトの表示を調整することは、身体部分が第2の個人に属すると判定されるとき、第2の個人の認識された身体部分上に重ね合わせられた仮想オブジェクトを表示すること、および、身体部分が第1の個人に属すると判定されるとき、仮想オブジェクトが認識された身体部分の下に位置するように見えるように、仮想オブジェクトを表示することを含み得る。さらなる実施形態では、仮想オブジェクトが認識された身体部分の下に位置するように見えるように、仮想オブジェクトを表示することは、認識された身体部分に重なる仮想オブジェクトの部分をレンダリングしないことを含み得る。さらなる実施形態では、この方法は、仮想オブジェクトによって包含されたディスプレイエリアに重なる、第2の個人の認識された身体部分の部分のアウトラインを、アウトラインがディスプレイ内で仮想オブジェクトの上で可視であるように表示することを含み得る。
【０３０８】
様々な実施形態は、各々がボディマウントカメラとヘッドマウントディスプレイとを含む、第1および第2のボディマウントデバイスによって、画像を拡張現実システムにおいてレンダリングする方法を含み得る。この方法は、第1のボディマウントデバイスのボディマウントカメラを用いて、シーンの第1のシーン画像をキャプチャすること、第1のボディマウントデバイスのヘッドマウントディスプレイ上に、仮想オブジェクトの第1の画像を表示することであり、第1の画像が、仮想オブジェクトを、第1のボディマウントデバイスのユーザに適する第1の向きで、キャプチャされた第1のシーン画像内の第1のアンカー表面にアンカーされるように表示すること、および、第2のボディマウントデバイスのヘッドマウントディスプレイ上に、仮想オブジェクトの第2の画像を表示することであり、第2の画像が、仮想オブジェクトを、第2のボディマウントデバイスのユーザに適する第2の向きで、第2のアンカー表面にアンカーされるように表示することを含み得る。
【０３０９】
さらなる実施形態では、この方法は、仮想オブジェクトを、第1のボディマウントデバイスから第2のボディマウントデバイスへ送ること、仮想オブジェクトを、第2のボディマウントデバイスにおいて受信すること、第2のボディマウントデバイスのボディマウントカメラを用いて、シーンの第2のシーン画像をキャプチャすること、および、キャプチャされた第2のシーン画像を解析して、第2のボディマウントデバイスのユーザが見ている方向に近い方向である、第2のシーン画像内の好適なアンカー表面を識別することを含んでもよく、第2のボディマウントデバイスのヘッドマウントディスプレイ上に、第2の画像を表示することは、仮想オブジェクトが、識別された好適なアンカー表面にアンカーされるように、第2の画像を表示することを含み得る。一実施形態では、この方法は、仮想オブジェクトの向きを示す信号を、第1のボディマウントデバイスから第2のボディマウントデバイスへ送信することを含んでもよく、第2の画像を表示することは、仮想オブジェクトの向きが、第1のボディマウントデバイスから受信された信号に部分的に基づいて設定されるように、第2の画像を表示することを含み得る。
【０３１０】
さらなる実施形態では、この方法は、仮想オブジェクトの好ましい向きを示す信号を、第1のボディマウントデバイスから第2のボディマウントデバイスへ送信すること、第2のボディマウントデバイスのユーザに、示された好ましい向きを通知すること、および、第2のボディマウントデバイスのユーザから、示された好ましい向きを受け入れるか、または拒否する入力を受信することを含んでもよく、第2のボディマウントデバイスのヘッドマウントディスプレイ上に、仮想オブジェクトの第2の画像を表示することは、受信された入力が、示された好ましい向きを受け入れるとき、仮想オブジェクトの向きが、示された好ましい向きに部分的に基づいて設定されるように、および、受信された入力が、示された好ましい向きを拒否するとき、仮想オブジェクトの向きが、示された好ましい向きとは異なるように設定されるように、第2の画像を表示することを含み得る。
【０３１１】
さらなる実施形態では、第1のアンカー表面および第2のアンカー表面は、同じ表面である。さらなる実施形態では、この方法は、仮想オブジェクトを、第1のボディマウントデバイスから第2のボディマウントデバイスへ送信することを含んでもよく、第2のボディマウントデバイスのヘッドマウントディスプレイ上に、仮想オブジェクトの第2の画像を表示することは、第2の画像を、第2の向きで第1のアンカー表面にアンカーされるように表示することを含み得る。さらなる実施形態では、第1および第2のボディマウントデバイスは、異なるロケーションに位置し、この方法は、仮想オブジェクトを第1および第2のボディマウントデバイスの各々へ、ネットワークを介して送信することをさらに含み得る。
【０３１２】
さらなる実施形態では、この方法は、第2のボディマウントデバイスのボディマウントカメラを用いて、第2のシーン画像をキャプチャすること、および、第2のボディマウントデバイス上で、キャプチャされた第2のシーン画像内の第2のアンカー表面を示す入力を受信することであり、示された第2のアンカー表面は、第1のアンカー表面とは異なることを含んでもよく、第2のボディマウントデバイスのヘッドマウントディスプレイ上に、第2の画像を表示することは、示された第2のアンカー表面と第2のボディマウントデバイスのユーザとに適する構成において、仮想オブジェクトを、示された第2のアンカー表面にアンカーされるように表示することを含み得る。さらなる実施形態では、この方法は、第2の仮想オブジェクトを、第2のボディマウントデバイスから第1のボディマウントデバイスへ送信すること、および、第3の画像を、第1のボディマウントデバイスのヘッドマウントディスプレイ上に表示することであり、第3の画像が、第2の仮想オブジェクトを第1のアンカー表面にアンカーされるように表示することを含み得る。
【０３１３】
さらなる実施形態は、上記で説明した様々な実施形態の方法および/または動作に対応する様々な動作を実行するように構成された、システム、サーバ、および/またはコンピューティングデバイスを含み得る。なおさらなる実施形態は、上記で説明した様々な実施形態の方法および/または動作に対応する動作をプロセッサに実行させるための、プロセッサ実行可能命令を記憶した、非一時的プロセッサ可読記憶媒体を含み得る。
【０３１４】
図41は、実施形態のいずれかとともに使用するのに好適な、受信機デバイスのシステムブロック図である。典型的な受信機デバイス4100は、内部メモリ4102と、ディスプレイ4103と、スピーカー4154とに結合された、プロセッサ4101を含み得る。加えて、受信機デバイス4100は、プロセッサ4101に結合されたワイヤレスデータリンクおよび/またはセルラー電話送受信機4105と、プロセッサ4101に結合されたモバイルマルチメディアブロードキャスト受信機4106とに接続され得る、電磁放射を送信および受信するためのアンテナ4104を含み得る。受信機デバイス4100は、一般に、ユーザ入力を受信するためのメニュー選択ボタンまたはロッカースイッチ4108をも含む。
【０３１５】
様々な実施形態は、図42に示すサーバ4200のような、様々な市販のサーバデバイスのいずれにおいても実装され得る。そのようなサーバ4200は、通常、揮発性メモリ4202と、ディスクドライブ4203のような大容量の不揮発性メモリとに結合された、プロセッサ4201を含み得る。サーバ4200はまた、プロセッサ4201に結合された、フロッピー（登録商標）ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ4206をも含み得る。サーバ4200はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワークなど、ネットワーク4205とデータ接続を確立するための、プロセッサ4201に結合されたネットワークアクセスポート4204をも含み得る。
【０３１６】
プロセッサ3903、3905、4101、4201は、上記で説明した様々な実施形態の機能を含む、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップであり得る。いくつかのデバイスでは、ワイヤレス通信機能専用の1つのプロセッサおよび他のアプリケーションを実行することに専用の1つのプロセッサのような、多重プロセッサ3903、3905、4101が提供され得る。一般的には、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ4101、4201にロードされる前に、内部メモリ4102、4202、4203内に記憶され得る。プロセッサ4101、4201は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。多くのデバイスでは、内部メモリは、揮発性メモリ、またはフラッシュメモリなどの不揮発性メモリ、または両方の混合であり得る。本明細書では、メモリへ一般的な言及は、内部メモリ、またはデバイスに差し込まれるリムーバブルメモリと、プロセッサ3903、3905、4101、4201自体の中のメモリとを含む、プロセッサ3903、3905、4101、4201によってアクセス可能なメモリを指す。
【０３１７】
上記の方法の説明およびプロセスフロー図は、単に説明に役立つ例として提供され、様々な実施形態のステップが提示された順番で実行されなければならないことを求めるまたは暗示するものではない。当業者なら諒解するように、上記の実施形態におけるステップの順番は、任意の順番で実行可能である。「その後」、「次いで」、「次」などの言葉は、前記ステップの順番を限定するものではなく、これらの言葉は読者に本方法の説明を案内するために単に使用される。さらに、たとえば、冠詞「a」、「an」または「the」などを使用した単数形での請求要素への言及は、その要素を単数に限定するものとして解釈されるべきではない。
【０３１８】
本明細書で開示する実施形態に関して説明する、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して上記で説明されている。そのような機能がハードウェアまたはソフトウェアとして実装されるかどうかは、特定のアプリケーションおよび全体的なシステムに課せられた設計制約に依存する。当業者は、各特定のアプリケーションについて様々なやり方で記載された機能を実装することができるが、そのような実装の決定は、本発明の範囲からの逸脱をもたらすものとして解釈されるべきではない。
【０３１９】
本明細書で開示した実施形態に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。代替的に、いくつかのステップまたは方法が、所与の機能に固有の回路によって実行され得る。
【０３２０】
1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして非一時的コンピュータ可読媒体上に記憶され得る。本明細書で開示する方法またはアルゴリズムのステップは、非一時的コンピュータ可読媒体上に常駐し得る、実行されるプロセッサ実行可能なソフトウェアモジュールで実施され得る。非一時的コンピュータ可読媒体は、コンピュータによってアクセスされ得る任意の記憶媒体を含む。限定ではなく例として、そのような非一時的コンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを搬送もしくは記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー（登録商標）ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せも非一時的コンピュータ可読媒体の範囲内に含めるべきである。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的な機械可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の、1つまたは任意の組合せ、またはそのセットとして存在し得る。
【０３２１】
開示される実施形態の上記の説明は、当業者が本発明を作成または使用できるようにするために、提供される。これらの実施形態への様々な修正が当業者には容易に明らかになることになり、本明細書に定義する一般原理は、本発明の趣旨および範囲を逸脱することなしに他の実施形態に適用され得る。したがって、本発明は、本明細書に示す実施形態に限定されるものではなく、以下の特許請求の範囲および本明細書で開示する原理および新規の特徴に一致する最大の範囲を与えられるものである。
【符号の説明】
【０３２２】
10  ヘッドマウントデバイス、ヘッドマウントディスプレイデバイス
10a  第1のヘッドマウントデバイス、ヘッドマウントまたはボディマウントカメラ、ヘッドマウントデバイス、ヘッドマウントディスプレイ
10b  第2のヘッドマウントデバイス、第2のユーザ、ヘッドマウントデバイス、第2のヘッドマウントまたはボディマウントカメラ、ヘッドマウントディスプレイ、第2のモバイル通信デバイス
12  壁
14  仮想オブジェクト、共同作業的フラットスクリーン3次元オブジェクト、仮想入力デバイスオブジェクト
14a  仮想オブジェクト、第1の仮想オブジェクト、デジタル画像、投影画像、仮想タッチスクリーン
14b  仮想オブジェクト、第2の仮想オブジェクト
14c  仮想オブジェクト、第3の仮想オブジェクト
16  アンカーされる表面、第1のアンカー表面、アンカー表面、実世界オブジェクト、実世界の壁、第2のアンカー表面、デスクトップ、水平の壁、フラットパネルスクリーン、近くの表面、物理的表面、デスクテーブルトップ、デスクトップ表面、デスクトップアンカー表面、表面、テーブル、アンカーデスクトップ表面、壁表面、壁、閲覧表面、投影表面
16a  第1のアンカー表面、アンカー表面、デスクトップ、表面、物理的表面
16b  アンカー表面、第2のアンカー表面、デスク、デスクトップ表面
500  センサアレイ、シーンセンサ
503  RGB-Dカメラ
503a  ステレオred-green-blue(RGB)カメラ、ステレオカメラ
503b、3704b  赤外線カメラ
503c  構造化赤外光放出器、赤外光放出器、近赤外(NIR)パルス放出器
505  音声センサ
507  モバイルプロセッサ、プロセッサ、制御システムプロセッサ
510  シーンマネージャ、シーンマネージャモジュール、シーンマネージャブロック
515  ユーザ制御ブロック、ユーザ制御
520、2245、2245a  表面マネージャブロック
525、2250、2250a  音声マネージャブロック
530、2255、2255a  情報アクセスブロック
540  ディスプレイ、小型ディスプレイ、ディスプレイユニット、マイクロディスプレイ
550  音声出力デバイス
551、4104  アンテナ
552  送信機/受信機または送受信機
553  アナログデジタル変換器
555  リモートメモリ、リモートデータ記憶媒体、データストア、内蔵メモリ
564、3103、4200  サーバ
1500、1501、1502  手
1600  ヘッドマウントデバイス
1605  モバイルデバイス
1610  ヘッドマウントデバイス制御システム、VIRT制御システム、VIRT制御ソフトウェアモジュール、制御システム
1612  高速データリンク、短距離ワイヤレスデータリンク
1615  シーンセンサ(RGB-Dカメラ)
1620、2230、2230a  音声センサ、マイクロフォン
1625  立体視ディスプレイ、半透明OLEDビデオディスプレイ、ヘッドマウントディスプレイ
1630  ヘッドフォン、センサ
2205  第1のヘッドマウントデバイス、ヘッドマウントデバイス、第1のヘッドマウントディスプレイデバイス、リモートユーザ
2210  第2のヘッドマウントデバイス、ヘッドマウントデバイス、リモートユーザ
2215、2215a、4103  ディスプレイ
2220、2220a、4154  スピーカー
2225  画像シーンセンサ
2225a  画像シーンセンサ、シーンセンサブロック
2235、2235a  シーンマネージャブロック
2240、2240a  ユーザ制御ブロック
2260、2260a  ワイヤレスまたはワイヤードインターフェース
2265  VIRTサービス構成要素、制御プロバイダ、クラウドベースのサービス
2270  シーン記憶ブロック、シーンストア、シーンストアブロック
2275  ルータ
2280  ディレクトリ、ルックアップディレクトリ
2285、2285a  ファイアウォール
2301  ユーザデータストア
2302  共有データ記憶、共有データストアメモリ
2303  ユーザデータストアメモリ
2500、3700、3900  システム
2501  モバイルデバイス、第1のデバイス
2502  モバイルデバイス、第2のデバイス
2503  モバイルデバイス、第3のデバイス
2504  サーバ、中央データベースサーバ
2530  フラットスクリーンディスプレイ、薄型テレビ
2532  テーブル
3100  コンピューティングデバイス、ユーザ、第1のソフトウェアプログラム
3101  コンピューティングデバイス、ユーザ、第2のソフトウェアプログラム
3102  コンピューティングデバイス、ユーザ、第3のソフトウェアプログラム
3104  ライブラリ
3106  共有記憶媒体、共有文書フォーマット、第3の独立したソフトウェアプログラム
3701  ヘッドマウントディスプレイ、ヘッドマウントまたはボディマウントカメラ
3703  アンカー表面
3704  ヘッドマウントディスプレイ、ヘッドマウントデバイス
3704a  RGBカメラ
3704c  構造化赤外光赤外線放出器
3705  指
3706  仮想オブジェクト現実入力デバイスまたは仮想ポインタ、入力デバイス仮想オブジェクト、仮想入力デバイス
3708  ヘッドマウントまたはボディマウントカメラ、ジェスチャー追跡カメラ
3800  第1のヘッドマウントデバイスシステム、プライマリヘッドマウントデバイスシステム、プライマリシステム
3800a  第2のヘッドマウントデバイスシステム
3801  第1のヘッドマウントまたはボディマウントカメラアレイ
3802  ヘッドマウントまたはボディマウントカメラアレイ
3803、3901  ディスプレイシステム
3804  第1のプロセッサ、プライマリプロセッサ
3805、3905  第2のプロセッサ
3900a  ヘッドマウントディスプレイシステム、第1のヘッドマウントデバイス、第1のユーザシステム
3900b  ヘッドマウントディスプレイシステム、第2のヘッドマウントデバイス
3902、3904  ヘッドマウントまたはボディマウントカメラ
3903  第1のプロセッサ
3906  クラウドサーバ、中央サーバ
4005  ピコプロジェクタ、ハンドヘルドプロジェクタ、ポケットプロジェクタ
4006  プロジェクタ要素
4007  入力センサ、カメラ
4008  コネクタ、接続
4009  ワイヤレスインターフェース
4010  モバイルスマートフォン、ハンドヘルドデバイス、モバイルデバイス、モバイルコンピューティングデバイス、モバイル通信デバイスプロセッサ
4015  バッテリー
4020、4101、4201  プロセッサ
4025  電子マザーボード
4030  ダイオードレーザー、レーザーまたは他の光源、レーザーダイオード
4035  コンバイナ光学素子
4040  走査ミラー
4100  受信機デバイス
4102  内部メモリ
4105  ワイヤレスデータリンクおよび/またはセルラー電話送受信機
4106  モバイルマルチメディアブロードキャスト受信機
4108  メニュー選択ボタンまたはロッカースイッチ
4202  揮発性メモリ、内部メモリ
4203  ディスクドライブ、内部メモリ
4204  ネットワークアクセスポート
4205  ネットワーク
4206  フロッピー（登録商標）ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
【図１】
0005960796.tif 000002
【図２】
0005960796.tif 000003
【図３】
0005960796.tif 000004
【図５Ａ】
0005960796.tif 000005
【図５Ｂ】
0005960796.tif 000006
【図６】
0005960796.tif 000007
【図７Ａ】
0005960796.tif 000008
【図７Ｂ】
0005960796.tif 000009
【図８Ａ】
0005960796.tif 000010
【図８Ｂ】
0005960796.tif 000011
【図９Ａ】
0005960796.tif 000012
【図９Ｂ】
0005960796.tif 000013
【図１０】
0005960796.tif 000014
【図１１】
0005960796.tif 000015
【図１２】
0005960796.tif 000016
【図１３】
0005960796.tif 000017
【図１４】
0005960796.tif 000018
【図１５】
0005960796.tif 000019
【図１６】
0005960796.tif 000020
【図１７】
0005960796.tif 000021
【図１８】
0005960796.tif 000022
【図１９】
0005960796.tif 000023
【図２０】
0005960796.tif 000024
【図２１】
0005960796.tif 000025
【図２２】
0005960796.tif 000026
【図２３】
0005960796.tif 000027
【図２４】
0005960796.tif 000028
【図２５Ａ】
0005960796.tif 000029
【図２５Ｂ】
0005960796.tif 000030
【図２６】
0005960796.tif 000031
【図２７】
0005960796.tif 000032
【図２８Ａ】
0005960796.tif 000033
【図２８Ｂ】
0005960796.tif 000034
【図２９】
0005960796.tif 000035
【図３０】
0005960796.tif 000036
【図３１】
0005960796.tif 000037
【図３２】
0005960796.tif 000038
【図３３】
0005960796.tif 000039
【図３４】
0005960796.tif 000040
【図３５】
0005960796.tif 000041
【図３６】
0005960796.tif 000042
【図３７】
0005960796.tif 000043
【図３８】
0005960796.tif 000044
【図３９】
0005960796.tif 000045
【図４０Ａ】
0005960796.tif 000046
【図４０Ｂ】
0005960796.tif 000047
【図４０Ｃ】
0005960796.tif 000048
【図４０Ｄ】
0005960796.tif 000049
【図４１】
0005960796.tif 000050
【図４２】
0005960796.tif 000051
【図４】
0005960796.tif 000052