(58)【調査した分野】(Int.Cl.,DB名)
前記第1の仮想空間は、前記拡張現実デバイスにより定められる複数の仮想空間からのものであり、前記複数の仮想空間は、前記拡張現実デバイスの前記ユーザにしか見えない、請求項1に記載の方法。
1つ又は複数のプロセッサにより、前記拡張現実デバイスからのセンサ信号を用いて、実物理空間における前記物理的ディスプレイの偏向に応じて前記第1の仮想空間の寸法を調整することをさらに含む、請求項1〜8の何か1項に記載の方法。
前記拡張現実デバイスにより、第2の仮想空間を定めることであって、前記第2の仮想空間は、前記拡張現実デバイスにより生成される第2の空間境界により境界付けられ、前記第2の空間境界は前記拡張現実デバイスの前記ユーザにしか見えない、定めることと、
1つ又は複数のプロセッサにより、前記第2の仮想空間を前記複数のグラフィック・ドライバからの第2のグラフィック・ドライバと関連付けることと、
前記ビデオ・アダプタ・ハードウェア・カードにより、前記拡張現実デバイスから、第2の仮想空間選択ジェスチャを示す第2の信号を受け取ることであって、前記第2の仮想空間選択ジェスチャを示す前記第2の信号は、前記ユーザが前記第2の仮想空間を選択する第2の物理的運動を行うことに応答して、前記拡張現実デバイスにより生成される、受け取ることと、
前記ビデオ・アダプタ・ハードウェア・カードが前記第2の仮想空間選択ジェスチャを示す前記第2の信号を受け取ることに応答して、前記ビデオ・アダプタ・ハードウェア・カードが前記第1のグラフィック・ドライバを前記第2のグラフィック・ドライバに置き換えることにより、前記物理的ディスプレイ上に前記第2の仮想空間と関連したコンテンツを表示することであって、前記第1の仮想空間と関連したコンテンツは前記物理的ディスプレイから除去される、表示することと、
をさらに含む、請求項1〜9の何か1項に記載の方法。
前記第1の仮想空間は、前記拡張現実デバイスにより定められる複数の仮想空間からのものであり、前記複数の仮想空間内は前記拡張現実デバイスの前記ユーザにしか見えず、前記複数の仮想空間内に表示されるリアルタイム・コンテンツは、視認可能であり、前記物理的ディスプレイ上に表示されない、請求項15に記載のシステム。
【発明を実施するための形態】
【0013】
本発明は、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
【0014】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:即ち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令が記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って伝搬される電気信号などの、一時的信号自体として解釈されるべきではない。
【0015】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク及び/又は無線ネットワークなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【0016】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Java(登録商標)、Smalltalk、C++などのオブジェクト指向プログラミング言語、又は、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。Java及び全てのJavaベースの商標及びロゴは、Oracle社及び/又はその関連会社の商標又は登録商標である。
【0017】
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0018】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。
【0019】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
【0020】
ここで図を、特に
図1を参照すると、本発明の実施により及び/又はそれにおいて用いることができる例示的なシステム及びネットワークのブロック図が示される。コンピュータ102について及びコンピュータ102内に示される、描かれているハードウェア及びソフトウェアの両方を含む例示的なアーキテクチャの一部又は全ては、ソフトウェア配備サーバ150及び/又は拡張現実デバイス152により利用できることに留意されたい。
【0021】
例示的なコンピュータ102は、システム・バス106に結合されたプロセッサ104を含む。プロセッサ104は、各々が1つ又は複数のプロセッサ・コアを有する1つ又は複数のプロセッサを利用することができる。ディスプレイ110を駆動/サポートするビデオ・アダプタ108もまた、システム・バス106に結合される。本発明の1つ又は複数の実施形態において、ビデオ・アダプタ108は、ハードウェア・ビデオ・カードである。システム・バス106は、バス・ブリッジ112を介して入力/出力(I/O)バス114に結合される。I/Oインターフェース116は、I/Oバス114に結合される。I/Oインターフェース116は、キーボード118、マウス120、媒体トレイ122(CD−ROMドライブ、マルチメディア・インターフェース等のようなストレージ・デバイスを含むことができる)、送受信機124、及び外部USBポート126を含む、種々のI/Oデバイスとの通信を提供する。I/Oインターフェース116に接続されるポートの形式は、コンピュータ・アーキテクチャの当業者には周知のものとすることができるが、一実施形態においては、これらのポートの一部又は全ては、ユニバーサル・シリアル・バス(USB)ポートである。
【0022】
グラフィック・ドライバ109は、ビデオ・アダプタ108と(そうでない場合はその一部と)関連付けられる。グラフィック・ドライバ109は、一実施形態においては、オペレーティング・システム138の一部であり、ビデオ・アダプタ108(例えば、ビデオ・カード)がディスプレイ110上にどのようにテキスト及び画像を生成するかを制御するソフトウェアである。本発明の実施形態において、複数のグラフィック・ドライバ109をビデオ・アダプタ108と関連付けることができる。この実施形態において、以下に説明されるように、複数のグラフィック・ドライバ109の各々は、仮想空間の特定の領域及び/又は特定のアプリケーションと関連付けられる。
【0023】
示されるように、コンピュータ102は、ネットワーク・インターフェース130を用いて、ソフトウェア配備サーバ150と通信することができる。ネットワーク・インターフェース130は、ネットワーク・インターフェース・カード(NIC)等のようなハードウェア・ネットワーク・インターフェースである。ネットワーク128は、インターネットのような外部ネットワーク、又はイーサネット若しくは仮想プライベート・ネットワーク(VPN)のような内部ネットワークとすることができる。
【0024】
ハードドライブ・インターフェース132もまた、システム・バス106に結合される。ハードドライブ・インターフェース132は、ハードドライブ134とインターフェース接続する。一実施形態において、ハードドライブ134は、同じくシステム・バス106に結合されるシステム・メモリ136をポピュレートする。システム・メモリは、コンピュータ102における最下位レベルの揮発性メモリとして定義される。この揮発性メモリは、これらに限られるものではないが、キャッシュ・メモリ、レジスタ及びバッファを含む、付加的なより上位レベルの揮発性メモリ(図示せず)を含む。システム・メモリ136をポピュレートするデータは、コンピュータ102のオペレーティング・システム(OS)138及びアプリケーション・プログラム144を含む。
【0025】
OS138は、アプリケーション・プログラム144のようなリソースへのトランスペアレントなユーザ・アクセスを提供するためのシェル140を含む。一般に、シェル140は、インタープリタと、ユーザとオペレーティング・システムとの間のインターフェースとを提供するプログラムである。より具体的には、シェル140は、コマンドライン・ユーザ・インターフェースに又はファイルから入力されるコマンドを実行する。従って、シェル140は、コマンド・プロセッサとも呼ばれ、一般に、最上位レベルのオペレーティング・システム・ソフトウェア階層であり、コマンド・インタープリタとして働く。シェルは、システムのプロンプトを提供し、キーボード、マウス、又は他のユーザ入力媒体によって入力されたコマンドを解釈し、処理のために、解釈したコマンドを、適切なより下位レベルのオペレーティング・システム(例えば、カーネル142)に送る。シェル140は、テキスト・ベースのライン指向ユーザ・インターフェースであるが、本発明は、グラフィカル、音声、ジェスチャ等のような他のユーザ・インターフェース・モードも等しく良好にサポートすることに留意されたい。
【0026】
示されるように、OS138はまた、カーネル142も含み、このカーネル142は、メモリ管理、プロセス及びタスク管理、ディスク管理、マウス及びキーボード管理を含む、OS138の他の部分及びアプリケーション・プログラム144によって要求される必須サービスの提供を含む、より下位レベルのOS138の機能を含む。
【0027】
アプリケーション・プログラム144は、ブラウザ146などの例示的な形で示されるレンダラー(renderer)を含む。ブラウザ146は、ワールド・ワイド・ウェブ(WWW)のクライアント(即ち、コンピュータ102)が、ハイパーテキスト転送プロトコル(HTTP)メッセージングを用いてネットワーク・メッセージをインターネットとの間で受送信するのを可能にし、従って、ソフトウェア配備サーバ150及び他のコンピュータ・システムとの通信を可能にする、プログラム・モジュール及び命令を含む。
【0028】
コンピュータ102のシステム・メモリ(及び、ソフトウェア配備サーバ150のシステム・メモリ)内のアプリケーション・プログラム144はまた、拡張現実協調論理(augmented reality coordination logic、ARCL)148も含む。ARCL148は、
図2〜
図7に説明されるものを含む、下記に説明されるプロセスを実施するためのコードを含む。一実施形態において、コンピュータ102は、例えばオンデマンドで、ソフトウェア配備サーバ150からARCL148をダウンロードすることができ、ARCL148のコードは、実行のために必要とされるまでダウンロードされない。さらに、本発明の一実施形態においては、ソフトウェア配備サーバ150は、本発明と関連した機能(ARCL148の実行を含む)の全てを実行し、従って、コンピュータ102が、ARCL148を実行するために自分の内部コンピューティング・リソースを使用しなくても済むようにする。
【0029】
受送信機124(及び/又は、USBポート126のようないずれかの入力/出力(I/O)インターフェース)は、一対の拡張現実(AR)グラスのような拡張現実デバイス152と電子的に通信することができる。ARグラスは、着用者が、オーバーレイされた仮想現実(例えば、ヘッドアップ表示)により物理的現実を見ることを可能にするウェアラブル(wearable)電子デバイスである。従って、着用者/ユーザは、現実のもの(即ち、実物理空間における)と仮想のもの(即ち、コンピュータにより生成され、ヘッドアップ表示上に表示されるもの)の両方を見ることができ、それにより、現実(実世界の)がコンピュータにより生成される画像(仮想の)により「拡張される」。
【0030】
コンピュータ102内に示されるハードウェア要素は、網羅的であることを意図するものではなく、本発明により必要とされる重要なコンポーネントを強調表示するために表される。例えば、コンピュータ102は、磁気カセット、デジタル多用途ディスク(DVD)、ベルヌーイ・カートリッジ等のような代替的なメモリ・ストレージ・デバイスを含むことができる。これら及び他の変形は、本発明の趣旨及び範囲内にあるように意図される。
【0031】
ここで
図2を参照すると、物理的ディスプレイ上に仮想画像を選択的に表示するために使用される拡張現実デバイス200が提示される。
図2に示されるように、ユーザ204(例えば、拡張現実デバイス200の着用者)は、2つのタイプの画像を「見る」ことができる。
【0032】
ユーザ204が見る第1のタイプの画像は、拡張現実デバイス200の透明な部分を通して見られる実オブジェクト(real object)のものである。こうした実オブジェクトの例は、物理的ディスプレイ210(
図1のディスプレイ110に類似した)、及びコンピュータ202(
図1のコンピュータ102に類似した)により物理的ディスプレイ上に提示されるコンテンツ(例えば、アプリケーション、ウェブページ等)である。
【0033】
ユーザ204が見る第2のタイプの画像は、拡張現実デバイス200内の表示画面上でユーザに示される仮想画像のものである。本明細書で説明されるように、仮想画像は、それを通してユーザ204が実世界を見る拡張現実デバイス200の透明な部分の上にオーバーレイ表示する(overlay)ことができる。従って、これらのオーバーレイ表示された仮想画像により、現実が「拡張される」。ユーザ204に見える仮想画像の例は、これらに限定されるものではないが、仮想アプリケーション表示、仮想ウェブページ、仮想ビデオ・クリップ等を含み、その全てが拡張現実デバイス200により生成される。
【0034】
図2に示されるように、コンピュータ202内には、グラフィック・ドライバ209(
図1に示されるグラフィック・ドライバ109と類似した)がある。グラフィック・ドライバ209は、物理的ディスプレイ(例えば、物理的ディスプレイ210)上に画像を生成するソフトウェア・ユニットとして定義される。本発明の1つの実施形態において、グラフィック・ドライバ209の各々は、アプリケーション244(スプレッドシート、ビデオ・アプリケーション、ワード・プロセッシング・アプリケーション、ブラウザ等のような)の1つだけと関連付けされる。さらに、本発明の一実施形態において、アプリケーション244の完全バージョン及びその関連するグラフィック・ドライバは、拡張現実デバイス200に利用可能でない。むしろ、アプリケーション244の静止記述子画像だけが、拡張現実デバイス200上に表示される。しかしながら、本発明の別の実施形態においては、アプリケーション244の完全バージョン及びその関連するグラフィック・ドライバは、拡張現実デバイス200に利用可能であり、拡張現実デバイス200上に表示するために、アプリケーション244のリアルタイムの動的(可変の)コンテンツが利用可能である。
【0035】
ここで
図3を参照すると、本発明の1つ又は複数の実施形態による、
図2に示される拡張現実デバイス200の付加的な詳細が提示される。上述のように、拡張現実デバイス200は、透明な視認グラス302を含み、これを通して拡張現実デバイス200の着用者は、実(物理)世界を見ることができる。しかしながら、実世界のこのビューを仮想画像により拡張するために、オーバーレイ・プロジェクタ304は、透明な視認グラス上に画像を投影することができるので、拡張現実デバイス200のユーザ/視認者/着用者は、世界からの物理的な実オブジェクト及び拡張された仮想画像の両方を見ることになる。従って、
図2に示されるように、ユーザ204は、物理的ディスプレイ210(及びそこに生成されるアプリケーション244からのコンテンツ)、並びに仮想空間208内のもののような仮想画像の両方を見ることができる。
【0036】
仮想空間208は、2次元又は3次元とすることができる。例えば、
図3に示されるように、2次元(2−D)空間境界(spatial border)306が、2次元のみを境界付ける。従って、ユーザが空間を通ってユーザの手206を動かすと(
図2に示されるように)、システム(例えば、コンピュータ202)により、ユーザ204が見るような、2−Dの空間境界306の「後ろに(behind)」ある実空間におけるいずれの領域も、ユーザ204により選択される仮想空間208の一部であると考えられる。しかしながら、ユーザが、3−D空間境界308により定められる限られた3次元(3−D)空間を通ってユーザの手206を動かすと、システムは、その限られた3−D空間と関連したアクションのみを実施する。1つの仮想空間が別の仮想空間の前に(後ろに)ある場合、この3−Dフィーチャにより、種々の仮想空間がユーザ204の同じ視線に入ることが可能になる。
【0037】
従って、3−D空間境界308は、実空間の特定の容積を仮想空間として境界付ける。オーバーレイ・プロジェクタ304により透明な視認グラス302上に投影される画像が生成する錯視(optical illusion)のために、ユーザ204には、3−D空間境界308が実空間中に「浮いている」ように「見える」。ユーザ204が、3−D空間境界308により生成される仮想空間208を通って自分の手206(又は、杖、手袋、ポインタ等の他のオブジェクト)を動かすと、コンピュータ202は、(1)特定の仮想空間208、及び(2)ユーザの手206により行われるジェスチャ/動きと関連付けられたアクションで応答する。
【0038】
図3に戻ると、拡張現実デバイス200の3−D位置は、(1)ユーザ204がどこを見ているか、従って(2)どの仮想空間がユーザ204と関係するかを明らかにする/識別することが必要である。
【0039】
本発明の1つの実施形態において、拡張現実デバイス200の3−D位置は、拡張現実デバイス200の3−Dの動きを検出する3−D加速度計310により確立される。機械的運動を電気信号に変換する、圧電、圧電抵抗及び容量性コンポーネントを含む種々の電子デバイスを用いて、1つ又は複数の軸線における加速度運動を検出することができる。一実施形態において、3−D加速度計310は、微小電子機械システム(MEMS)の使用を組み込み、既知の質量の釣り合い重りを構成するマイクロレバーの偏向を測定する。
【0040】
本発明の一実施形態において、拡張現実デバイス200の3−D位置は、
図3に示される筋電(EMG)センサ312により求められる。EMGセンサ312は、
図2に示されるユーザ204により筋肉運動を検出するセンサである。つまり、拡張現実デバイス200の着用者が自分の頭の筋肉を動かすたびに、電気信号(即ち、神経細胞膜にわたる、イオン誘起された電位の変化)が、筋肉を制御する軸索(神経線維)に伝達される。運動ニューロン及びこれが神経支配する筋肉は、まとめて運動単位として知られる。運動ニューロンにより運動単位内の筋肉が収縮すると、これらの筋肉内で電気活動が刺激される。運動単位の運動ニューロン及び筋肉からの電気活動の合計は、運動単位活動電位(MUAP)を生成し、これがEMGセンサ312により測定される。処理論理(例えば、
図3に示されるマイクロプロセッサ314)により、測定されたMUAPを分析し、筋肉運動のレベルを特定する。つまり、電気信号は、筋肉が動かされている場所を特定するのに十分に特有のものである。着用者が自分の頭部を動かすと、一意のMUAPパターンが発生する。従って、EMGセンサ312によりリアルタイムで検出されるMUAPパターンを、特定の頭部位置についての既知の/格納されたMUAP読取値と比較する。この比較により、3−Dの実空間において拡張現実デバイス200がある位置を判定し、従って、生成される仮想空間208が突き止められる。
【0041】
図2に示されるユーザの手206の位置を判定するために、拡張現実デバイス200内の種々のデバイスを使用することができる。
【0042】
例えば、本発明の一実施形態において、モーション・センサ316は、ユーザの手206の動き及びユーザの手206の位置を検出する。モーション・センサ316は、ユーザの手206から送られる信号を感知する光学、マイクロ波、音響、及び/又は赤外線センサを使用する。例えば、ユーザの手206に着用している手袋(図示せず)上の光又は赤外線送信機をモーション・センサ316により検出し、ユーザ204が自分の手を動かしている位置を判定することができる。代替的に、音響信号を、モーション・センサ316から伝送し、モーション・センサ316に跳ね返すようにすることもできる。跳ね返った音響信号の方向及び音響信号の送信と受信の間の持続時間を用いることにより、拡張現実デバイス200は、ユーザの手206の3−D位置を判定することができる。同様に、電磁放射(例えば、赤外線光、可視光、無線周波数信号等)をモーション・センサ316から伝送し、モーション・センサ316に跳ね返すようにすることもできる。音響信号の使用と同様に、跳ね返った電磁放射の方向及び電磁放射の送信と受信の間の持続時間を用いることにより、拡張現実デバイス200は、ユーザの手206の3−D位置を判定することができる。
【0043】
本発明の一実施形態において、ユーザの手206の3−D位置は、受動型赤外線(IR)センサ318により検出される。ユーザの手206は、通常の人体の生理機能のために熱を発生させる。IR放射の強さ及び方向を検出することにより、IRセンサ318は、十分な情報/データをマイクロプロセッサ314に与え、IRセンサの読取値と既知の表/チャートとを比較することにより、ユーザの手206の3−D位置を判定する。
【0044】
本発明の一実施形態において、ユーザの手206の3−D位置は、カメラ320により検出される。カメラ320は、ユーザの手206のビデオ画像をキャプチャする。キャプチャされた画像のサイズを、ユーザの手206の既知のサイズと比較することにより、拡張現実デバイス200からユーザの手206までの距離が、マイクロプロセッサ314により求められる。拡張現実デバイス200の位置に対するユーザの手206の方向は、拡張現実デバイス200内の他のセンサ(例えば、3−D加速度計310)により判定することができる。
【0045】
図3はまた、I/Oカード322が、
図2に示されるコンピュータ202、ユーザ204により保持される電子デバイス等を含む他のデバイスとデータ/情報を交換することを可能にする入力/出力(I/O)カード322も示す。
【0046】
ここで
図4を参照すると、透明な視認グラス302を通した例示的なビュー(
図2に示される拡張現実デバイス200の着用が見るような)が示される。
図4に示されるように、拡張現実デバイス200のユーザ/着用者は、実オブジェクト及び仮想オブジェクトの両方を見る。実オブジェクトは、物理的ディスプレイ410(
図2に示される物理的ディスプレイ210に類似した)である。仮想オブジェクトは、示される複数の仮想空間408a〜408c(ここで「c」は任意の整数である)内にあり、
図2に示される仮想空間208に類似している。仮想空間408a〜408cの各々は、拡張現実デバイス200により生成される境界により境界付けられる。本発明の1つ又は複数の実施形態において、仮想空間408a〜408cの各々は、特定のグラフィック・ドライバ(例えば、
図2のグラフィック・ドライバ209からの)及び/又は特定のアプリケーション(例えば、
図2のアプリケーション244からの)と関連付けられる。つまり、一実施形態において、
図3のオーバーレイ・プロジェクタ304は、アプリケーション244により生成される画像を透明な視認グラス302上に投影し、これにより、仮想空間408a〜408c内のこれらの画像の外観(appearance)が生成される。一実施形態において、仮想空間408a〜408cからの各仮想空間は、特定のアプリケーションからのコンテンツを表示するための環境を提供する。一実施形態において、このコンテンツは、アプリケーションが生成するものの完全バージョンであり、一方、別の実施形態において、仮想空間408a〜408cは、アプリケーションのアイコンのための環境のみを提供する。
【0047】
例えば、仮想空間408aがウェブページと関連付けられると仮定する。一実施形態において、このウェブページは、リアルタイム・アクティブ・モードで、(透明な視認グラス302を介して)拡張現実デバイス200の着用者に視認可能である。つまり、仮想空間408a内に示される仮想画像上に、実際のモニタ上に表示されるものも表示される。しかしながら、他の実施形態においては、仮想空間408a内に、そのウェブページのアイコン、スナップショット、又は他の静止表示だけが表示される。
【0048】
いずれの実施形態においても(仮想空間408a内に動的ウェブページが表示されようと、又は仮想空間408a内にウェブページのアイコン画像だけが表示されようと)、本発明は、拡張現実デバイス200の着用者が、ウェブページを仮想空間(例えば、仮想空間408a内の)から実空間に(例えば、物理的ディスプレイ410上に)移動させることを可能にする。ユーザにより、種々のアクション(例えば、仮想空間408aを通ってユーザの手を物理的ディスプレイ410の方にスイープすることなど)を取ることができ、それにより、ウェブページが物理的ディスプレイ410上に表示される。仮想空間408aから物理的ディスプレイ410へのこのウェブページの表示の動きにより、コンピュータ202が、物理的ディスプレイ210/410上へのウェブページの表示を制御するだけでなく、キーボード又は他の入力(例えば、
図1に示されるキーボード118又はマウス120)を使用してウェブページ及びその表示を制御/操作することも可能になる。
【0049】
つまり、本発明は、ユーザが、アプリケーションと関連した仮想画像を物理的ディスプレイ上に移動することを可能にし、これにより、ユーザが、(1)物理的ディスプレイ上のアプリケーションのコンテンツを見ること、及び(2)物理的ディスプレイをサポートするコンピュータと関連したハードウェアを用いて、アプリケーション及びそのコンテンツを操作する能力を有することができるようにする。
【0050】
ここで
図5を参照すると、
図2に示される物理的ディスプレイ210が、仮想グラフィック・デバイス1〜4(仮想グラフィック・デバイス501a〜501d)として説明される4つの仮想空間に取り囲まれると仮定する。仮想グラフィック・デバイス501a〜501dの各々は、物理的ディスプレイ210自体と同じ仮想寸法を有することに留意されたい。つまり、仮想グラフィック・デバイス501a〜501dの各々について、拡張現実デバイス200の着用者が透明な視認グラス302上で見るものの寸法は、透明な視認グラス302を通して見られる物理的ディスプレイ410の寸法と合致するような大きさにされている。
【0051】
本発明の一実施形態において、物理的ディスプレイ210の見掛け上の寸法は、物理的ディスプレイ210上に見出される物理的マーカーから得られる。例えば、物理的ディスプレイ210の4つのコーナー部の各々に配置された4つのマーカー(三角形として示される)の1つである、
図5のマーカー503を考える。三角形/マーカーは、物理的ディスプレイ210の物理的ハウジング上に取り付けることができ、又は物理的ディスプレイ210の画面上に電子的に表示することができる。いずれの実施形態においても、
図3のカメラ320で、4つの三角形/マーカーを含む物理的ディスプレイ210の写真を撮る。次に、マイクロプロセッサ314は、キャプチャされた画像に対してエッジ検出アルゴリズムを実行し、4つの三角形/マーカーを識別する。4つの三角形/マーカーの位置により、マイクロプロセッサ314が、ユーザの視点による物理的ディスプレイ210の見掛け上のサイズを求めることが可能になる。ひとたび物理的ディスプレイ210のサイズ及び位置が確認されると、仮想現実において物理的ディスプレイ210を取り囲む拡張現実(AR)マーカー505は、物理的ディスプレイ210の画面位置及び配向を、仮想グラフィック・デバイス501a〜501dが配置される基底/基準位置として示す。
【0052】
図4及び
図5に示される例は、物理的ディスプレイ210が、拡張現実デバイス200の着用者の視線に対して直角である(即ち、垂直である)と仮定するが、時として、特に物理的ディスプレイ210がタブレット・コンピュータ又は他の可動デバイスの一部である場合、物理的ディスプレイが、ユーザ/着用者に向かって又はこれから遠ざかるように傾斜されることがある。こうした傾斜を補償するために、システムは、補償手順を用いる。
【0053】
従って、
図6において、物理的ディスプレイ210が点線609で示される高さを有すると仮定する。しかしながら、物理的ディスプレイ210が視認者604に向かって傾斜される場合、物理的ディスプレイ210が今や線610に沿って傾斜されているため、視線603に沿って見ている視認者604は、物理的ディスプレイ210を、線601で示される高さだけを有するものとして知覚する。(線610の長さと線609の長さは同じであることに留意されたい。)
【0054】
線610と線609との間の知覚される高さの差は、単に、物理的ディスプレイ210の傾斜により引き起こされる錯視にすぎない。
【0055】
配向角度を計算するために、余弦法則が用いられる。
【数1】
【0056】
従って、A(角607)の余弦は、線611までの線609の長さを線610の長さで除算したものに等しい。隣辺(adjacent)の長さは、線601のものと同じであり、これは拡張現実デバイス200内のカメラ320により撮られた傾斜した物理的ディスプレイ210の写真により測定される。斜辺(hypotenuse)の長さは、物理的ディスプレイ210の実際の高さであり、視線603に対して垂直な場合に物理的ディスプレイ210の写真を撮るカメラ320により得ることができ、又は物理的ディスプレイの寸法を含む、物理的ディスプレイから伝送される識別子(例えば、ユニバーサル・ユニーク識別子−UUID)により提供することができる。従って、この情報は、角A(角607)の値をもたらし、システムが、
図5に示される仮想グラフィック・デバイス501a〜501dのサイズを調整することを可能にする。
【0057】
ここで
図7を参照すると、物理的ディスプレイのために仮想空間内の特定の領域からのコンテンツをグラフィック・ドライバとペアリングするための、1つ又は複数のハードウェア・デバイスにより実施される1つ又は複数の動作の高レベルフローチャートが提示される。
【0058】
開始ブロック702の後、ブロック704に記載されるように、拡張現実デバイス(例えば、
図2の拡張現実デバイス200)は、第1の仮想空間(例えば、
図2の仮想空間208)を定める。第1の仮想空間は、拡張現実デバイスにより生成される第1の空間境界(例えば、
図3の3−D空間境界308)により境界付けられる。第1の空間境界は、
図3の透明な視認グラス302上に表示されるので、拡張現実デバイスのユーザにしか見えない。代替的な実施形態において、空間境界及びその関連した仮想グラフィック・デバイスは、第2のビデオ・ディスプレイのような第2のデバイスに伝送することができ、従って、複数の人が、拡張現実(
図3のオーバーレイ・プロジェクタ304により生成される)及び/又はユーザが現実の物理世界(
図3のカメラ320によりキャプチャされるような)から見るものを見ることが可能になる。
【0059】
ここでブロック706を参照すると、次に、1つ又は複数のプロセッサ(例えば、
図3のマイクロプロセッサ314又は
図1のプロセッサ104)は、第1の仮想空間を、複数のグラフィック・デバイスからの第1のグラフィック・ドライバと関連付け、グラフィック・ドライバは、物理的ディスプレイ上に画像を生成する。つまり、プロセッサは、特定の仮想空間(例えば、仮想空間208)を特定のグラフィック・ドライバ(
図2のグラフィック・ドライバ209からの)に割り当てる。従って、各仮想空間は、特定のアプリケーション/コンテンツ、及び特定のアプリケーション/コンテンツをサポートするグラフィック・ドライバに特有のものである。
【0060】
ここでブロック708を参照すると、ビデオ・アダプタ・ハードウェア・カード(例えば、
図1のビデオ・アダプタ108)は、拡張現実デバイスから、第1の仮想空間選択ジェスチャを示す第1の信号を受け取る。ユーザが、第1の仮想空間(即ち、ユーザに対して、仮想境界により境界付けられるように「見える」実空間内の領域)を通ってユーザの手を動かすといった、第1の仮想空間を選択する第1の物理的運動を行うことに応答して、拡張現実デバイスにより、第1の仮想空間選択ジェスチャを示す第1の信号が生成される。
【0061】
ブロック710に記載されるように、ビデオ・アダプタ・ハードウェア・カードが第1の仮想空間選択ジェスチャを示す第1の信号を受け取ることに応答して、ビデオ・アダプタ・ハードウェア・カードは、第1のグラフィック・ドライバを実施することにより、物理的ディスプレイ上に第1の仮想空間と関連したコンテンツを表示する。つまり、以前に仮想拡張デバイスを通してしか視認できなかったものは、物理的デバイス上に配置されず、それは、その物理的デバイスをサポートするコンピュータにより直接操作することができる。
【0062】
フローチャートは、終了ブロック712で終了する。
【0063】
本発明の実施形態において、第1の仮想空間は、拡張現実デバイスにより定められる複数の仮想空間からのものであり、複数の仮想空間は、拡張現実デバイスのユーザにしか見えない。つまり、拡張現実デバイスの使用により、複数の仮想空間が視認可能である(
図4及び
図5を参照されたい)。
【0064】
本発明の1つの実施形態において、物理的ディスプレイ上に表示されるリアルタイムのコンテンツは、拡張現実デバイス上に表示されない。つまり、この実施形態において、コンテンツが物理的ディスプレイ上に表示されるとき、このコンテンツは、拡張現実デバイスにより生成される仮想空間において、もはや見ることができない。むしろ、システムは、以前はコンテンツにあてられ、今は物理的ディスプレイ上に表示されているあらゆる仮想空間を削除する。
【0065】
本明細書で説明されるように、本発明の一実施形態において、第1の仮想空間選択ジェスチャは、第1の仮想空間を通るユーザの動きである。例えば、ユーザは、拡張現実デバイス上に表示される第1の仮想空間に相関する空間内の領域を通ってユーザの手を動かすことができる。しかしながら、別の実施形態においては、物理的ディスプレイ上に表示するために、その仮想空間内に提示されるコンテンツを選択するのに、単に拡張現実デバイスを特定の仮想空間に向けるだけで十分である。従って、ユーザは、特定の仮想空間が
図3に示される透明な視認グラス302の中心にくるように、ユーザの頭を動かすことができる。何らかの二次的動作(まばたきをする、又は単に拡張現実デバイスを、例えば3秒といった所定の時間より長く固定位置に保持するといった)をとることにより、システムは、物理的ディスプレイ上で表示するために、仮想空間及びその関連したアプリケーション/ドライバ/コンテンツを選択する。ユーザがどこを見ているか、及びどの仮想空間が見られているかの判断は、本明細書で特に
図3において説明される拡張現実デバイス200のコンポーネントにより達成される。
【0066】
本発明の1つの実施形態において、
図6に示されるように、1つ又は複数のプロセッサは、拡張現実からのセンサ信号を用いて、実物理空間における物理的ディスプレイの偏向に従って第1の仮想空間の寸法を調整することができる。
【0067】
本発明の1つの実施形態において、拡張現実デバイスは、該拡張現実デバイスにより生成される第2の空間境界により境界付けられる第2の仮想空間を定め、第2の空間境界は、拡張現実デバイスのユーザにしか見えない。次に、1つ又は複数のプロセッサは、第2の仮想空間を複数のグラフィック・ドライバからの第2のグラフィック・ドライバと関連付ける。ビデオ・アダプタ・ハードウェア・カードは、拡張現実デバイスから、第2の仮想空間選択ジェスチャを示す第2の信号を受け取り、ユーザが第2の仮想空間を選択する第2の物理的運動をすることに応答して、第2の信号は、拡張現実デバイスにより生成される第2の仮想空間選択ジェスチャを示す。ビデオ・アダプタ・ハードウェア・カードが、第2の仮想空間選択ジェスチャを示す第2の信号を受け取ることに応答して、ビデオ・アダプタ・ハードウェア・カードは、第1のグラフィック・ドライバを第2のグラフィック・ドライバに置き換え、第2の仮想空間と関連したコンテンツが、今や物理ディスプレイ上にあり、そして、第1の仮想空間と最初に関連付けられ、物理的ディスプレイに移動されたコンテンツは、今や物理的ディスプレイから除去される。つまり、第2の仮想空間は、物理的ディスプレイから、第1の仮想空間と最初に関連付けられたコンテンツを追い出すことができる。
【0068】
本発明の1つの実施形態において、ハードウェア・グラフィック・カードは、物理的ディスプレイ上の複数の位置決めアイコンを表示する(
図5に示されるマーカー503及び他の位置決め三角形を参照されたい)。
図5に説明されるように、1つ又は複数のプロセッサは、物理的ディスプレイ上の複数の位置決めアイコンに基づいて、物理的ディスプレイの知覚されたサイズを計算することができる。次に、拡張現実デバイスは、物理的ディスプレイの知覚されたサイズに合致するように、第1の仮想空間のサイズを調整することができる。
【0069】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【0070】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものに過ぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、操作、要素、及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、操作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【0071】
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、その機能を、明確に特許請求される他の特許請求された要素と組み合わせで実行するためのあらゆる構造、材料又は動作を含むことが意図されている。本発明の種々の実施形態の説明は、例証及び説明を目的として提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。本発明の範囲及び趣旨から逸脱しない多くの修正及び変形が、当業者には明らかになるであろう。実施形態は、本発明の原理及び実際的用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う実施形態に関して本発明を理解できるように、選択され、説明された。
【0072】
さらに、本開示において説明されるいずれの方法も、VHDL(VHSICハードウェア記述言語)プログラム及びVHDLチップを用いて実装できることに留意されたい。VHDLは、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)及び他の類似の電子デバイスのための例示的な設計入力言語である。従って、本明細書で説明されるいずれのソフトウェア実装方法も、ハードウェア・ベースのVHDLプログラムによってエミュレートすることができ、次にこれは、FPGAのようなVHDLチップに適用される。
【0073】
このように本出願の本発明の実施形態を詳細に説明し、その例証的な実施形態を参照すると、添付の特許請求の範囲に定められる本発明の範囲から逸脱することなく、修正及び変形が可能であることが明らかであろう。