以下、図面を参照して、本発明の実施形態を詳細に説明する。
図1は、本発明の情報処理システムは、情報処理装置200、HMD100(ヘッドマウントディスプレイ)、光学式センサ104、選択デバイス105等から構成され、同一の構成を持つ複数の情報処理システムからなるものである。情報処理装置200とHMD100、光学式センサ104、選択デバイス105は、図1に示すLAN101や、USB(Universal Serial Bus)等を介して相互にデータ通信可能に接続されている。尚、本実施例では拠点Aと拠点Bにそれぞれ情報処理装置200が設置されている構成となっているが、1つの拠点Aに複数の情報処理装置200を設置しても構わないし、1つの拠点Aに一つの情報処理装置200を設置し、複数のHMD100を接続し、それぞれのMR空間を構築することで本発明を実施することもできる。一つの情報処理装置200で実施する場合には、情報処理装置200に複数のグラフィックボードを備える必要がある。
情報処理装置200は、外部メモリ211内に、MR空間に配置して表示する仮想オブジェクトであり、複数の情報処理装置200に共通の仮想オブジェクトを記憶している。情報処理装置200は、HMD100から受信した現実画像に仮想オブジェクトを重畳した複合現実画像(MR画像)を生成して、HMDに送信する。MR技術の仕組みの詳細については、前述した従来技術の通りである。HMDは頭部装着式のものであってもよいし、メガネ式のものであってもよい。
情報処理装置200にはセカンダリの情報処理装置200−Aとプライマリの情報処理装置200−Bがある。情報処理装置200−Bは情報処理装置200−Aから受け付けた仮想オブジェクトの位置座標の変更(例えば、選択デバイス105に基づく仮想オブジェクトの移動指示)を受信し、他の情報処理装置200に当該位置座標の変更を通知する役割を担う。これにより、例えば場所を異とする遠隔地間でのMR空間の共有であっても、共有しているユーザは共通の仮想空間とそれぞれの現実空間とを重畳した画像をHMD100を通して視認することが可能となる。情報処理装置200−Aと情報処理装置200−Bの機能は同じものとし、本実施例は便宜的に情報処理装置200−Bをプライマリとしたが、どちらの情報処理装置200でもプライマリの役割を行うことが可能である。よって情報処理装置200−Aと情報処理装置200−Bとそれぞれの用途が限定されることはない。
HMD100は、右目・左目ビデオカメラ221で撮影することにより得られた現実空間の画像データを情報処理装置200に送信する。そして情報処理装置200から受信した複合現実画像を右目・左目ディスプレイ222に表示する。
選択デバイス105は、MR空間上に配置された仮想オブジェクトを選択して、移動するためのデバイスである。例えば、図10に示す選択デバイス105である。選択デバイス105は選択ボタン1001と光学式マーカ103を備える。選択ボタン1001の押下を受け付けると、情報処理装置200は選択デバイス105の位置から一定の範囲(図10で示す1002の範囲内)にある仮想オブジェクトの位置座標を選択デバイス105の位置座標と同期させる。これによりユーザは選択ボタン1001を押下することで選択デバイス105の一定の距離にある仮想オブジェクトを移動させることを可能にする。選択ボタン1001の押下が検知されなくなるのを検知すると、仮想オブジェクトと選択デバイス105の位置座標の同期を中止する。
HMD100と選択デバイス105には、それぞれ光学式マーカ103が設置されており、光学式センサ104が当該光学式マーカ103を撮影(検知・検出)することで、HMD100と選択デバイス105の位置向き(座標X,Y,Z)を特定し、情報処理装置200に送信することができる。
尚、現実空間とMR空間(原点座標X,Y,Z=0,0,0を原点として、仮想オブジェクトを配置した仮想空間)との位置合わせ(キャリブレーション)は既に行われているものとして、以下、本発明の実施形態について説明する。
図2は、情報処理装置200のハードウェア構成を示す図である。尚、図2の情報処理装置200のハードウェアの構成は一例であり、用途や目的に応じて様々な構成例がある。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムや、各種装置の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボードやマウス等のポインティングデバイス(入力デバイス209)からの入力を制御する。
ビデオコントローラ(VC)206は、HMD100が備える右目・左目ディスプレイ222等の表示器への表示を制御する。右目・左目ディスプレイ222に対しては、例えば外部出力端子(例えば、Digital Visual Interface)を用いて出力される。また、右目・左目ディスプレイ222は、右目用のディスプレイと左目用のディスプレイとから構成されている。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。また、通信I/Fコントローラ208は、ギガビットイーサネット(登録商標)等を通じて光学式センサ104との通信も制御する。
汎用バス212は、HMD100の右目・左目ビデオカメラ221からの映像を取り込むために使用される。右目・左目ビデオカメラ221からは、外部入力端子(例えば、IEEE1394端子)を用いて入力される。右目・左目ビデオカメラ221は、右目用のビデオカメラと左目用のビデオカメラとから構成されている。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ上での表示を可能としている。また、CPU201は、ディスプレイ上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明の情報処理装置200が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
次に図3を用いて情報処理装置200の機能構成について説明する。
情報処理装置200は、通信制御部301、仮想オブジェクト記憶部302、HMD情報取得部303、現実空間画像取得部304、HMD視線特定部305、距離特定部306、複合現実画像生成部307、仮想空間管理部308、表示制御部309、HMD視界判定部310を備えている。
通信制御部301は、通信可能に接続されているHMD100や光学式センサ104、および他の情報処理装置200との通信を制御することが可能な機能部である。通信制御部301は、前述したビデオコントローラ206、通信I/Fコントローラ208、汎用バス212等を通じてこれらの装置と情報の送受信を行う。
仮想オブジェクト記憶部302は、HMD100で現実画像と重畳するための仮想オブジェクトを記憶する機能部である。
HMD情報取得部303はHMD100の現実空間における位置及び向きを示す情報を光学式センサ104から取得する機能部である。現実空間画像取得部304は、HMD100の右目・左目ビデオカメラ221から現実空間画像を取得する機能部である。
HMD視線特定部305は、HMD情報取得部303で取得したHMD100の現実空間における位置及び向きからHMD100を装着しているユーザの視線を特定する機能部である。
距離特定部306は、HMD100と指定ポイントモデルとの距離を算出することで特定したり、移動対象となった仮想オブジェクトと指定ポイントモデルとの距離を算出する機能部である。なお、距離の算出の仕方は仮想空間上の2点間の座標を用いて計算する従来技術を用いるものとする。
複合現実画像生成部307は、HMD100の右目・左目ビデオカメラ221から送信される現実空間の画像とHMD情報取得部303から取得したHMD100の位置向きに基づく仮想空間の画像とを重畳した画像を生成する機能部である。
仮想空間管理部308は、仮想空間における仮想オブジェクトの座標情報を管理する機能部である。情報処理装置200がプライマリの情報処理装置200であれば、セカンダリの情報処理装置200から送信される共通の仮想オブジェクトの座標情報を他のセカンダリの情報処理装置200に対して、通信制御部301を用いて制御するなどの管理を行う。情報処理装置200がセカンダリの情報処理装置200であれば仮想オブジェクトの移動指示をユーザから検知すると、当該移動指示による仮想オブジェクトの座標情報をプライマリの情報処理装置200に対して送信する。
表示制御部309は、HMD100の右目・左目ディスプレイ222に対して表示の制御を行う機能部である。
次に、本発明の実施形態におけるプライマリ機である情報処理装置200−B、セカンダリ機である情報処理装置200−Aによって行われる一連の処理について、図4に示すフローチャートを用いて説明する。
ステップS401では、情報処理装置200−AのCPU201は、ユーザからのMRアプリケーションの起動指示を受け付けることにより、MRアプリケーションを起動させる。MRアプリケーションを起動したのち、処理をステップS402に移す。
ステップS402では、情報処理装置200−AのCPU201は、別の情報処理装置である情報処理装置200−Aに対して接続要求の送信を行う。
ステップS403では、情報処理装置200−BのCPU201は、ステップS402で情報処理装置200−Aから送信された接続要求を受信する。
ステップS404では、情報処理装置200−BのCPU201は、接続要求の送信元の情報処理装置200−Aに対して、仮想オブジェクトのデータをすべて送信する。例えば、図9に示すオブジェクトテーブル900と、ファイルパス905に示すファイルとを送信する。これにより、仮想オブジェクトの座標情報のやり取りだけで、仮想オブジェクトのリアルタイムな表示制御を行うことを可能にする。
図9に示すオブジェクトテーブル900は、オブジェクトID901、属性902、座標903、サイズ904、ファイルパス905、選択中フラグ906、選択禁止フラグ907とが格納されている。
オブジェクトID901は、各仮想オブジェクトのデータの識別情報である。属性902は、各仮想オブジェクトが、選択デバイス105に対応する仮想オブジェクト(選択デバイス)か、選択デバイス105の仮想オブジェクトに接触することで選択される選択対象の仮想オブジェクト(被選択)か、HMDの視線と仮想オブジェクトとの交点に設置される指定ポイントか、を示す情報である。
座標903は、各仮想オブジェクトの、MR空間上の配置位置(X.Y.Z=000.000.000 を原点とするXYZ座標)を示す。図9によれば、オブジェクトID=M111の座標903=XX1.YY1.ZZ1のため、オブジェクトID=M111の仮想オブジェクトは、MR空間上の当該座標が示す座標に配置されていることとなる。原点は前述したキャリブレーションの時に設定されるものとする。各座標903の座標値は、各仮想オブジェクトの中心点の座標であるものとする。
尚、選択デバイス105の座標903は、光学式センサにより補足されており、例えばユーザが選択デバイス105を移動させることで、当該座標903がリアルタイムに更新される。当該更新に用いる選択デバイス105のリアルタイムの座標903の情報は、光学式センサ104から情報処理装置200に送信され、情報処理装置200が、当該光学式センサ104から受信した座標の情報を、選択デバイス105の座標903に上書きすることで更新を行う。
サイズ(スケール)904は、各仮想オブジェクトの大きさを示す。ファイルパス905は、各仮想オブジェクトのファイルが記憶されている記憶領域上のアドレスを示す。
選択中フラグ906は、被選択用の仮想オブジェクトが選択デバイス105により選択されている状態か否かを示すフラグである。選択中フラグ906=0の場合、選択されていない状態であり、選択中フラグ906=1の場合、選択中であることを示す。
選択禁止フラグ907は、被選択用の仮想オブジェクトが選択デバイス105による選択を受け付けないように制御するためのフラグである。選択禁止フラグ907=0の場合、選択デバイス105の選択を受け付けることを可能とし、選択禁止フラグ907=1の場合には、選択デバイス105による選択を受け付けないように制御する。これにより、選択デバイス105で選択行為を行ったとしても、被選択用の仮想オブジェクトの移動を不可能とする効果がある。
ステップS405では、情報処理装置200−BのCPU201は、ステップS403で受信をした接続要求の送信元の情報処理装置200−Aに対して接続の許可を行う。これにより、情報処理装置200−Aと情報処理装置200−Bは相互に共通の仮想オブジェクトを表示し、情報処理装置200−Bで仮想オブジェクトの移動指示を選択デバイス105により行われたとしてもリアルタイムで情報処理装置―Aで当該仮想オブジェクトの移動を表示可能にする。
ステップS406では、情報処理装置200−AのCPU201は、ステップS404で情報処理装置200−Bから送信されたオブジェクトテーブル900と、ファイルパス905に示すファイルとを受信する。
ステップS407では、情報処理装置200−AのCPU201は、光学式センサ104を用いてHMD100−Aに付された光学式マーカを検知し、MR空間上のHMD100−Aの位置や向き(位置情報及び向き情報)を取得する(取得手段)。取得したHMD100−Aの位置や向きは、HMD情報テーブル800に格納する。例えば図8に示すHMD情報テーブル800である。HMD情報テーブル800には、HMD位置・向き801が格納されている。HMD位置・向き801は、HMDのMR空間上の座標情報と、向き情報(向き)を記憶している。向き情報(向き)はユーザの視線方向と同一の向きを示す情報(視線情報)を格納する。
ステップS408では、情報処理装置200−AのCPU201は、HMD100−Aの右目・左目ビデオカメラ221から送信される現実空間画像を、取得し、RAM203等に記憶する。右目・左目ビデオカメラ221は、ユーザの右目に相当するビデオカメラと左目に相当するビデオカメラとの2つが存在するため、右目用と左目用の現実空間画像を取得する。
ステップS409では、情報処理装置200−AのCPU201は、仮想空間画像(仮想空間の画像)を取得しRAM203等に記憶する。より具体的には、ステップS407で格納したHMD100−Aの位置・向き801を読み出し、当該HMD位置・向きに対応する仮想空間上のHMD100−Aの位置及び向きを特定する。そして、特定した仮想空間上の位置及び向きで仮想空間上に仮想のカメラ(視点)を設置し、当該カメラにより仮想空間を撮像する。これにより、仮想空間画像を生成する。尚、前述した現実空間画像と同様に、HMD100−Aの右目・左目ディスプレイ222のそれぞれに表示するために右目用の仮想空間画像と左目用の仮想空間画像の2枚を取得する。
ステップS410では、情報処理装置200−AのCPU201は、ステップS408で取得した現実空間画像とステップS409で取得した仮想空間画像とをRAM203等から読み出し、複合現実画像生成部307を用いて当該現実空間画像に当該仮想空間画像を重畳し、複合現実画像を生成する。生成した複合現実画像はRAM203等に記憶する。前述したとおり、現実空間画像と仮想空間画像にはそれぞれ右目用と左目用の2枚ずつの画像がRAM203等に記憶されている。そして右目用の現実空間画像に右目用の仮想空間画像を重畳し、左目用の現実空間画像に左目用の仮想空間画像を重畳することで、より没入感の高い視覚をユーザは得ることができる。
ステップS411では、情報処理装置200−AのCPU201は、ステップS410で生成した右目用の複合現実画像と左目用の複合現実画像とをRAM203等から読み出し、HMD100−Aの右目・左目ディスプレイ222に表示させるように制御する。前述したように、右目用の複合現実画像を右目・左目ディスプレイ222の右目のディスプレイに表示するよう制御し、左目用の複合現実画像を右目・左目ディスプレイ222の左目のディスプレイに表示するよう制御する。
ステップS412では、情報処理装置200−AのCPU201は、ユーザから事前に視線による指定ポイントモデルを表示させるか否かの指示を受け付けたか否かに応じて、指定ポイントモデルの表示指示を受け付けたか否かを判定する。例えば図15に示す指定ポイントモデル表示指示受付画面1500のような画面をディスプレイ210に表示させ、はいボタン1501の押下を受け付けた場合には指定ポイントモデルの表示指示を受け付けたと判定し、いいえボタン1502の押下を受け付けた場合には、指定ポイントモデルの非表示指示を受け付けたと判定する。指定ポイントモデルの表示指示を受け付けたと判定した場合には処理をステップS413に進め、指定ポイントモデルの表示指示を受け付けなかったと判定した場合には処理をステップS415に進める。
ステップS413では、情報処理装置200−AのCPU201は、情報処理装置200−Aに接続されたHMD100−Aと情報処理装置200−Bに接続されたHMD100−Bのそれぞれの、右目・左目ディスプレイに指定ポイントモデルを表示させるための処理である指定ポイントモデル表示処理を行う。指定ポイントモデル表示処理の詳細は後の図5で詳細に説明を行う。指定ポイントモデル表示処理を行ったあと、処理をステップS415に進め、情報処理装置200−BはステップS414の処理を行う。
ステップS414では、情報処理装置200−BのCPU201は、仮想オブジェクトをステップS413で表示された指定ポイントモデルの位置まで移動させる処理である仮想オブジェクト移動処理を行う。仮想オブジェクト移動処理の詳細は後の図6にて詳細に説明を行う。仮想オブジェクト移動処理を行った後、処理をステップS415に進める。
ステップS415では、情報処理装置200−AのCPU201は、ユーザからMRアプリケーションの終了指示を受け付けたか否かを判定する。例えばアプリケーション終了ボタンの押下を受け付けるなど、ユーザからのアプリケーション終了指示を受け付けたと判定された場合には処理を終了させ、ユーザからのアプリケーション終了指示を受け付けなかったと判定された場合には処理をステップS407に戻す。
以上により、例えば遠隔地にいるユーザなどの他のユーザを視認することができない状態であっても、HMD100−Aを装着したユーザAの視線によりユーザAが仮想空間上のどこを見ているのかを把握することができるという効果をもたらす。更にHMD100−Bを装着したユーザBはHMD100−Aを装着したユーザAの視線をもとにして、指定ポイントモデルを視認することが可能になるため、仮想オブジェクトの指定ポイントモデルへの移動を容易にすることが可能な仕組みを提供している。
次に、図4に示す指定ポイントモデル表示処理の詳細を図5に示すフローチャートを用いて説明する。
ステップS501では、情報処理装置200−AのCPU201は、ステップS407で取得しRAM203等に記憶されたHMD100−Aの視線を読み込む。例えば図8に示すHMD位置・向き801に格納された、向きを示す情報である。
ステップS502では、情報処理装置200−AのCPU201は、ステップS501っで読み込んだHMD100−Aの視線により、仮想空間上に配置された仮想オブジェクトを特定する。HMD100−Aから延びる視線が最初に突き当たった(交差した)仮想オブジェクトのオブジェクトID901を特定する。
ステップS503では、情報処理装置200−AのCPU201は、HMD100−Aから延びる視線が最初に突き当たった仮想オブジェクトとの交点の座標(仮想空間上の位置座標)を算出し取得する(特定手段)。取得した交点の座標はRAM203等に記憶しておく。
なお、仮想オブジェクトの当たり判定を示す領域を実際の仮想オブジェクトの大きさより少し大きめにして規定しておき、仮想オブジェクトを容易に特定できるようにしてもよい。
ステップS504では、情報処理装置200−AのCPU201は、ステップS501で読み込んだHMD100−AのHMD位置・向き801の情報と、ステップS503で取得した交点の座標を情報処理装置200−Bに対して送信する。これらの情報を情報処理装置200−Bに対して送信することにより、情報処理装置200−Bでも指定ポイントモデルを表示することが可能になる。
ステップS505では、情報処理装置200−AのCPU201は、ステップS501で読み込んだHMD100−AのHMD位置・向き801の情報と、ステップS503で取得した交点の座標をもとにして仮想空間画像上に指定ポイントモデルを表示する。表示は、ステップS410のように現実空間の画像に仮想空間画像を重畳することで表示をさせる。指定ポイントモデルは、オブジェクトテーブル900のオブジェクトID901=M444の指定ポイントモデルを使用する。ステップS503で取得した交点の座標が座標903に格納されることにより、ステップS503で取得した交点の座標に対して指定ポイントモデルを表示する。ステップS407で取得しRAM203等に記憶されたHMD100−Aの視線の向きで指定ポイントモデルを表示するように制御するものとする。なお、指定ポイントモデルの表示位置の特定は光学式マーカ103を設けた物理的なオブジェクトを光学式センサ104で検知することで特定する方法もある。
例えば、図11に示す指定ポイントモデルイメージ1100である。指定ポイントモデルイメージ1100には情報処理装置200−Aが生成するMR空間(拠点A)と情報処理装置200−Bが生成するMR空間(拠点B)のイメージが描画されている。交点1103に対してHMD100−Aの視線の向きで表示された指定ポイントモデルが、図11に示す指定ポイントモデル1102である。視線の向きを表示することにより、他のユーザがどの方向から仮想オブジェクトのどの部分を見ているのかを容易に通知することができる。
ステップS506では、情報処理装置200−BのCPU201は、ステップS504で情報処理装置200−Aから送信されたHMD100−AのHMD位置・向き801の情報と、交点の座標とを受信する。受信したのち、処理をステップS507に進める。
ステップS507では、情報処理装置200−BのCPU201は、ステップS506で受信したHMD位置・向き801と、交点の座標とを情報処理装置200−A以外のセカンダリ機の情報処理装置200に対して配信する。これにより複数のセカンダリ機の情報処理装置200でも情報処理装置200−Aでの指定ポイントモデルの位置を共有することができる。
ステップS508では、情報処理装置200−BのCPU201は、ステップS506で受信したHMD100−AのHMD位置・向き801の情報と、交点の座標をもとに、指定ポイントモデルを仮想空間画像上に重畳表示する(表示制御手段)。重畳表示することで仮想オブジェクトを識別可能に表示する。指定ポイントモデルの表示方法は、ステップS505と同様であるので割愛する。図11に示す指定ポイントモデルイメージ1100の拠点Bに示す図が指定ポイントモデルの表示イメージである。拠点Bには仮想オブジェクトを指し示すように指定ポイントモデル1104が表示される。指定ポイントモデル1104が表示されることで、指定ポイントモデル1104が指す仮想オブジェクトをユーザに識別可能に視認させることを可能とする効果もある。指定ポイントモデル1104は、本実施例では矢印状のものとしたが、仮想オブジェクトを識別可能とする方法はこれに限定されない。視線との交点を持つ仮想オブジェクトの色を変えたり、当該仮想オブジェクト以外を半透明にしたりするなど様々な方法が含まれるものである。
なお、指定ポイントモデルはHMD100から仮想オブジェクトまでのベクトルを示す矢印状の仮想オブジェクトとしたが、HMD100の視線と仮想オブジェクトとの交点を識別表示するような構成としてもよい。詳細は後の第2の実施形態で説明する。
本発明は常時ユーザの視線を取得することでリアルタイムに指定ポイントモデルを表示する構成となっているが、ユーザの手が仮想オブジェクトに接触したことを検知し、接触を検知した時点でのユーザの視線に基づいて指定ポイントモデルを表示させるような仕組みにしても構わない。
以上の処理によると、HMD100−Aを装着したユーザAの視線に基づいて仮想空間上の位置を特定し、特定した位置を基にしてユーザAがどこを見ているのかをHMD100−Bを装着したユーザBが把握することができるという効果がある。
次に図4に示す仮想オブジェクト移動処理の詳細を図6に示すフローチャートを用いて説明する。
ステップS601では、情報処理装置200−BのCPU201は、選択デバイス105からの仮想オブジェクトの移動指示である移動操作信号を選択デバイス105から受け付ける(移動指示受付手段)。具体的には、図10に示す選択デバイス105の選択ボタン1001の押下を受け付けることで、移動操作信号を受信する。
ステップS602では、情報処理装置200−BのCPU201は、ステップS601で移動操作信号を受け付けた時の選択デバイス105の現実空間上の座標情報を取得する。取得した選択デバイス105の現実空間上の座標情報はRAM203に記憶しておく。選択デバイス105の座標情報の取得方法は前述したとおり、光学式センサ104を用いる。
ステップS603では、情報処理装置200−BのCPU201は、ステップS602で取得した選択デバイス105の現実空間上の座標情報に基づいて、当該座標情報に対応する仮想空間上の所定の領域内に仮想オブジェクトがあるか否かを判定する。具体的には、所定の領域とはオブジェクトテーブル900のサイズ904に示す領域であって、選択デバイス105の座標903を基準とするサイズ904に示す範囲を所定の領域とする。この所定の領域内に仮想オブジェクトが接触していると判定された場合には処理をステップS604に進め、所定の領域内に仮想オブジェクトが接触していないと判定された場合には処理をステップS601に戻す。
ステップS604では、情報処理装置200−BのCPU201は、ステップS603で接触していると判定された仮想オブジェクトのオブジェクトID901を特定し、当該オブジェクトID901に対応する選択中フラグ906を0から1にする。
ステップS605では、情報処理装置200−BのCPU201は、ステップS604で特定したオブジェクトID901に対応する座標903の値を、選択デバイス105の座標903と同期させる。例えばオブジェクトID901=M222が特定された場合には、M222に対応する座標903をM444の座標903(XX4、YY4、ZZ4)として上書きする。これにより、選択デバイス105と移動対象の仮想オブジェクトの座標が一致するためユーザの選択デバイス105の挙動に合わせて仮想オブジェクトが移動しているようにHMD100−Bで表示することが可能である。
また、選択デバイス105で仮想オブジェクトが移動されると、移動された仮想オブジェクトの座標903をプライマリ機の情報処理装置200に送信し、プライマリ機の情報処理装置200はセカンダリ機の情報処理装置200に対して配信する。これにより、1つの情報処理装置200で仮想オブジェクトの移動指示が行われたとしても複数の情報処理装置200の間でも当該仮想オブジェクトの位置座標の同期を行うことが可能になる。
ステップS606では、情報処理装置200−BのCPU201は、HMD100−Bの座標を取得する。具体的には、ステップS407と同様に光学式センサ104を用いてHMD100−Bに付された光学式マーカを検知し、MR空間上のHMD100−Bの位置や向きを取得する。取得した情報は、HMD情報テーブル800のHMD位置・向き801に格納する。
ステップS607では、情報処理装置200−BのCPU201は、ステップS606で取得したHMD100−Bの座標情報とステップS506で受信した指定ポイントモデルの座標情報に基づいて、2つの座標情報が示す2点間の距離(a)を算出する(距離特定手段)。算出した距離(a)はRAM203等に記憶しておく。
ステップS608では、情報処理装置200−BのCPU201は、ステップS607で取得した距離(a)が閾値以内か否かを判定する。閾値以内か否かの判定は図16に示している事前に設定された閾値テーブル1600のHMDの閾値1601に基づいて判定する。図16のHMDの閾値1601では5メートルという値が設定されているので、HMD100−Bと指定ポイントモデルの座標が示す距離が5メートル以内かを判定する。HMD100−Bと指定ポイントモデルの座標が示す距離閾値を超えると判定された場合には処理をステップS609に進め、閾値以内であると判定された場合には、処理をステップS610に進める。これにより、ユーザが指定ポイントモデルに近づくことで矢印ではなく距離で指定ポイントモデルとの間隔を図ることが可能になる。
ステップS609では、情報処理装置200−BのCPU201は、距離(a)の値をHMD100−Bで表示する。表示は、ステップS410のように現実空間の画像に仮想空間画像を重畳することで表示をさせる。例えば図12に示す距離表示イメージ1200である。閾値以内の範囲であればユーザは指定ポイントモデルを視認することが可能のため、指定ポイントモデルまでの距離を表示することで、ユーザは指定ポイントモデルまでの距離を把握することが可能になる。
ステップS610では、情報処理装置200−BのCPU201は、ステップS606で取得したHMD100−Bの座標情報と、ステップS506で受信した指定ポイントモデルの座標情報との2点からなるベクトルを特定する(ベクトル特定手段)。
ステップS611では、情報処理装置200−BのCPU201は、ステップS610で特定したベクトルに基づいて、矢印を表示させる。表示は、ステップS410のように現実空間の画像に仮想空間画像を重畳することで表示をさせる。矢印はオブジェクトテーブル900に格納されている仮想オブジェクトである矢印オブジェクトを用いるものとする。矢印オブジェクトを、ステップS610で特定したベクトル方向の向きにし、ステップS410のように仮想空間画像として更に重畳させ複合現実画像を生成し、HMD100−Bで表示させるように制御する。例えば図13に示す矢印表示イメージ1300である。矢印表示イメージ1300には図示してあるように矢印1301が表示されている。これにより、ユーザは指定ポイントモデルまでの距離が遠く離れていたとしても、矢印に沿って移動することで指定ポイントモデルまで到達することができる。
ステップS612では、情報処理装置200−BのCPU201は、指定ポイントモデルへの仮想オブジェクトの移動処理を行う。詳細は後の図7に示すフローチャートを用いて説明を行う。
以上の処理により、所定の距離に応じて指定ポイントモデルまでの矢印か距離の表示を切り替えることでユーザに適切な誘導を行うことを可能とする。
次に図7を用いて、図6に示す指定ポイントへの到達処理の詳細について説明を行う。
ステップS701では、情報処理装置200−BのCPU201は、ステップS602で取得した選択デバイス105の座標情報と、ステップS506で受信した指定ポイントモデルの座標情報に基づいて、2つの座標情報が示す2点間の距離(b)を算出する(距離特定手段)。距離(b)を算出したのち、処理をステップS702に進める。
ステップS702では、情報処理装置200−BのCPU201は、ステップS701で算出した値(b)と、外部メモリ211に記憶される閾値テーブル1600の仮想オブジェクトの閾値1602とを比較する。(b)が外部メモリ211に記憶される閾値テーブル1600の仮想オブジェクトの閾値1602以内であると判定された場合には処理をステップS705に移す。(b)が外部メモリ211に記憶される閾値テーブル1600の仮想オブジェクトの閾値1602以内ではないと判定された場合には処理をステップS703に移す。例えば、図14に示す仮想オブジェクト移動イメージ1400を用いて説明する。選択デバイス105で選択され移動中の仮想オブジェクトが、所定の領域1201に接した場合に、選択デバイス105との同期が解消され、指定ポイントモデルのある位置に仮想オブジェクトが設置される。
ステップS703では、情報処理装置200−BのCPU201は、選択デバイス105から解除信号を受信したか否かを判定する。解除信号は例えば選択ボタン1001の押下が検知されなくなるなどによって受け付ける。選択デバイス105から解除信号を受信したと判定した場合には処理をステップS704に進め、選択デバイス105から解除信号を受信しなかったと判定した場合には処理をステップS606に戻す。
ステップS704では、情報処理装置200−BのCPU201は、選択デバイス105と座標を同期している仮想オブジェクト(選択中フラグ906が1の仮想オブジェクト)の座標903の選択デバイス105との同期を解除する。
ステップS705では、情報処理装置200−BのCPU201は、選択中フラグ906が「1」の仮想オブジェクトの座標903を指定ポイントモデルの座標903と同期させる。これにより、指定ポイントモデルの座標に仮想オブジェクトを固定することができる。
ステップS706では、情報処理装置200−BのCPU201は、ステップS705で指定ポイントモデルの座標903と同期させた仮想オブジェクトのオブジェクトID901に対応する選択禁止フラグ907を1にし、選択中フラグ906を1から0とする。(移動制御手段)
前述したとおり、選択禁止フラグ907がたっている間は選択デバイス105による選択を受け付けない。
ステップS707では、情報処理装置200−BのCPU201は、事前に設定した所定時間(所定の時間)経過したか否かを判定する。事前に設定した所定時間を経過したと判定された場合には、処理をステップS708に進める。事前に設定した所定時間を経過しないと判定された場合には、処理をステップS707に戻す。
ステップS708では、情報処理装置200−BのCPU201は、ステップS706で立てた選択禁止フラグ907を0に戻す。
以上で本発明の第1の実施形態の説明を終了する。次に本発明の第2の実施形態の説明を開始する。
第1の実施形態では、HMD100−Aを装着したユーザAの視線に基づいて仮想空間上の位置を特定し、特定した位置とユーザAのHMD100−Aの位置の2点に基づいて矢印状の仮想オブジェクトを表示した。これにより、どの方向からユーザAが特定した位置を覗いているのかを他のユーザが把握することができる。
第2の実施形態の特徴は以下の通りである。第2の実施形態は、HMD100−Aを装着したユーザAの視線に基づいて特定した仮想空間上の位置に、方向の概念を持たない仮想オブジェクト(マーク状の仮想オブジェクト)を、重畳表示させることを特徴としている。さらに、視線方向を読み込んだHMD100では視線を示す指定ポイントモデルを表示させないことでHMD100の視認性を向上させることを特徴としている。また、HMD100の視線方向の最も近い仮想オブジェクトが指定ポイントモデルを表示すべき仮想オブジェクトか否かを判定することにより、指定ポイントモデルの表示を制御させることを特徴としている。
第2の実施形態では、システム構成、ハードウェア構成、機能構成、画面例、テーブルは第1の実施形態と下記の変更点を除き同様とする。変更点としては、図5を図17に変更、図9を図19に変更、図11を図18に変更したものである。
これより図17と図18の説明を行う。
図17は、本発明の第2の実施形態における指定ポイントモデル表示処理の詳細な処理の流れを説明するフローチャートである。
ステップS1701からステップS1702までは図5に示すステップS501からステップS502と同様の処理であるため、説明を省略する。
図17のフローチャートでは、図5のステップS505に対応する処理を削除している。これにより、拠点Aのユーザ(本実施形態であればHMD100−Aを装着しているユーザA)のHMD100に、指定ポイントモデルを表示させないことにより、ユーザの視界に不要な指定ポイントモデルを表示させないことを可能とするものである。拠点Bのユーザが装着するHMD100−Bでは、拠点Aのユーザの視線から特定される指定ポイントモデルが表示される。
また、第2の実施形態では指定ポイントモデルをマーク状のものとしたが、識別表示することができれば第1の実施形態のように矢印状のものを用いてもよい。
ステップS1703では、情報処理装置200−AのCPU201は、図19のオブジェクトテーブル1900を参照する。オブジェクトテーブル1900は図9に示すオブジェクトテーブル900に視線表示フラグ1908を追加したものである。視線表示フラグ1908は事前に設定されているものであり、視線表示フラグ1908が「0」であれば指定ポイントモデルを表示しない仮想オブジェクトであることを示しており、「1」であれば指定ポイントモデルを表示する仮想オブジェクトであることを示すものである。
ステップS1704では、情報処理装置200−AのCPU201は、ステップS1702で特定した仮想オブジェクトの視線表示フラグ1908を確認し、視線表示フラグ1908が「0」であれば処理をステップS1702に戻し、視線表示フラグ1908が「1」であれば処理をステップS1705に進める。
このように、仮想オブジェクトごとに設定を設けることで、仮想オブジェクトによっては指定ポイントモデルを表示させないことが可能となる効果がある。
ステップS1705からステップS1708までの処理はステップS503乃至504、ステップS506乃至507と同様のため、説明を省略する。上述したようにステップS505は削除している。
ステップS1709では、情報処理装置200−BのCPU201は、ステップS1705で受信した交点の座標(視点と交差する仮想オブジェクト上の座標)に所定の指定ポイントモデル(仮想オブジェクト)を重畳して表示する。
例えば図18に示すイメージである。図18は識別表示イメージ1800である。視線をもとに仮想オブジェクトの位置座標を特定した(他のHMDに見ている対象を通知する)HMD100−Aには指定ポイントモデル1801を表示せず、HMD100−Aとは異なるHMD100であるHMD100−Bでは指定ポイントモデル1801を表示する。指定ポイントモデル1801が表示されることにより仮想オブジェクトを識別可能に表示させることができる。指定ポイントモデル1801は図18のイメージに限定されず、仮想オブジェクトと視線との交点を識別可能にできればこれに限定されない。また、仮想オブジェクトを識別可能にする効果もある。
これにより、HMD100−Aを装着するユーザの視認性向上をもたらす効果がある。
第2の実施形態では、矢印状の指定ポイントモデル以外の表示形態で記載をしたが、矢印状の指定ポイントモデルで上述の処理を実施してもよい。
以上の処理により、指定ポイントモデルの所定の範囲内に選択デバイス105で選択し移動中の仮想オブジェクトが近づいた時には、ユーザが簡単に指定ポイントモデルのある座標に仮想オブジェクトを配置することを可能とする。さらに所定時間選択禁止にすることでユーザは選択デバイス105による選択解除指示を行わなくとも、指定ポイントモデルのある座標に仮想オブジェクトを配置することを可能としている。
以上、本実施例により、第1の仮想空間上の所望の位置を、第1のヘッドマウントディスプレイの視線によって特定することにより、第2のヘッドマウントディスプレイで識別可能に表示させることの可能な効果を奏する。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせても実行可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。