以下、図面を参照して本発明の実施形態を詳細に説明する。
図1は、本発明の情報処理システムの構成の一例を示す。本発明の情報処理システムは、情報処理装置200、HMD100(ヘッドマウントディスプレイ100=表示装置)、光学式センサ104、選択デバイス105等から成るシステムが複数組み合わさることで構成される。情報処理装置200とHMD100、光学式センサ104、選択デバイス105は、図1に示すLAN101や、USB(Universal Serial Bus)ケーブル等を介して相互にデータ通信可能に接続されている。
情報処理装置200は、外部メモリ211内に、MR空間に配置して表示する仮想オブジェクトであり、複数の情報処理装置200に共通の仮想オブジェクトを記憶している。情報処理装置200は、HMD100から受信した現実画像に仮想オブジェクトを重畳した複合現実画像(MR画像)を生成して、HMD100に送信する。MR技術の仕組みの詳細については、前述した従来技術の通りである。
本発明の実施形態において、情報処理装置200は、自機に接続されるHMD100の数だけ、各HMD100用の仮想空間を記憶部に記憶、管理している。
情報処理装置200にはホスト端末である情報処理装置200−Bとクライアント端末である情報処理装置200−Aがある。情報処理装置200−Bは情報処理装置200−Aから受け付けた仮想オブジェクトの位置座標の変更(例えば、選択デバイス105に基づく仮想オブジェクトの移動指示)を受信して記憶部に当該変更後の座標を記憶し、当該記憶した座標位置に仮想オブジェクトを移動する処理を行う。当該位置・座標の変更の情報の共有、他の拠点の情報処理装置200から共有された移動後の座標に基づく仮想オブジェクトの配置・移動の処理により、例えば場所を異とする遠隔地間であっても、それぞれの拠点の情報処理装置で記憶しているMR空間上の仮想オブジェクトの位置・座標を同期させることができる。よって、各拠点でHMD100を装着しているユーザは共通の仮想空間とそれぞれの現実空間とを重畳したMR画像をHMD100を通して視認することが可能となる。情報処理装置200−Aと情報処理装置200−Bの機能は同じものとする。本実施例は便宜的に情報処理装置200−Bを報処理装置200−Aに対するホスト端末としたが、どちらの情報処理装置200でもホストの役割を行うことが可能である。よって情報処理装置200−Aと情報処理装置200−Bとそれぞれの用途が限定されることはない。
HMD100は、右目・左目ビデオカメラ221で撮影することにより得られた現実空間の画像データを情報処理装置200に送信する。そして情報処理装置200から受信した複合現実画像を右目・左目ディスプレイ222に表示する。各HMD100は、各情報処理装置200と直接的、又は間接的に接続されている(以下、説明の中で、情報処理装置と接続されている、という表現を用いる場合は、情報処理装置と直接接続されていることを示す)。
選択デバイス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に送信する。
拠点Aと拠点Bは、現実の世界において異なる空間・場所である。例えば、拠点A=東京支店の部屋、拠点B=大阪支店の部屋である。
尚、現実空間と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に格納されている。以上が図2の説明である。
次に図3を用いて情報処理装置200の機能構成について説明する。
情報処理装置200は、通信制御部301、仮想オブジェクト記憶部302、HMD情報取得部303、現実空間画像取得部304、着目点特定部305、距離特定部306、複合現実画像生成部307、仮想空間管理部308、表示制御部309、拠点判定部310を備えている。
通信制御部301は、PC200と通信可能に接続されているHMD100や光学式センサ104、および他の情報処理装置200との通信を制御する機能部である。通信制御部301は、前述したビデオコントローラ206、通信I/Fコントローラ208、汎用バス212等を通じてこれらの装置と情報の送受信を行う。
仮想オブジェクト記憶部302は、HMD100で現実画像と重畳して表示させるための仮想オブジェクトを記憶する機能部である。
HMD情報取得部303はHMD100の現実空間における位置及び向き(位置姿勢=ユーザの位置姿勢)を示す情報を光学式センサ104から取得する機能部である。現実空間画像取得部304は、HMD100の右目・左目ビデオカメラ221から現実空間画像を取得する機能部である(HMD100から、右目・左目ビデオカメラ221で撮像された現実画像を取得する)。
着目点特定部305は、例えば、HMD情報取得部303で取得したHMD100の現実空間における位置及び向きから、HMD100を装着しているユーザ(HMD100に対応するユーザ)の視線及び視線の先にあるユーザの着目点を特定する機能部である。着目点とは、例えば、HMDの位置からHMDの向きに伸ばした直線(視線)が最初にぶつかった仮想オブジェクト上の点であるものとする。
距離特定部306は、HMD100と着目点との距離を算出して特定する。また、ユーザ操作に応じて移動している仮想オブジェクトと着目点との距離を算出して特定する機能部である。なお、距離の算出の仕方は仮想空間上の2点間の座標を用いて計算する従来技術を用いるものとする。
複合現実画像生成部307は、HMD100の右目・左目ビデオカメラ221から送信される現実空間の画像と、HMD情報取得部303から取得したHMD100の位置向きに基づいて撮像した仮想空間の画像とを重畳した画像(複合現実画像=MR画像)を生成する機能部である。
仮想空間管理部308は、仮想空間における仮想オブジェクトの座標情報を管理する機能部である。各情報処理装置200は当該仮想空間管理部において、自機に接続される、自機と同じ拠点のHMDごとに、現実空間と位置あわせを行った仮想空間の座標や形状(を記憶管理しているものとする。つまり、自機に対応するHMD IDごとに、当該HMD IDに対応する仮想空間の形状や、現実空間の原点を基準とした仮想空間の原点座標を示すMR空間の情報を記憶している。よって、例えばHMD100−A1に対しては、HMD100−A1から取得した現実空間画像とHMD100−A1に対応する仮想空間に仮想オブジェクトを配置して撮像した仮想空間画像を合成した複合現実画像を送信し、表示させる。また、100−A2に対しては、HMD100−A2から取得した現実空間画像とHMD100−A2に対応する仮想空間に仮想オブジェクトを配置して撮像した仮想空間画像を合成した複合現実画像を送信し、表示させる。
また、クライアント端末である情報処理装置200−Aの場合は、仮想オブジェクトの移動指示をユーザから検知すると、当該移動指示による仮想オブジェクトの移動後の座標値をホスト端末である情報処理装置200−Bに対して送信する。ホスト端末である情報処理装置200−Bは、例えばクライアント端末である情報処理装置200−Aから送信される、仮想オブジェクトを移動した情報(仮想オブジェクトの座標が変更された旨を示す情報と移動後の座標)を受信すると、当該受信した移動後の座標を自機の記憶装置に記憶している当該仮想オブジェクトの座標値に上書きして更新する。また、仮に情報処理装置200−Aの他にクライアント端末としての情報処理装置200(例:不図示の情報処理装置200−C)が存在する場合は当該クライアント端末(情報処理装置200−C)に更新後の座標の情報を送信して共有する。情報処理装置200−Cは当該更新後の座標の情報を受信して、自機の外部メモリ上の当該仮想オブジェクトの座標の値を更新する。
表示制御部309は、HMD100の右目・左目ディスプレイ222に対して表示の制御を行う機能部である。拠点判定部310は、他拠点のHMDの着目点をHMDに表示すべく、着目点を特定するHMDが着目点表示対象のHMDと同じ拠点のHMDか他拠点のHMDかを判定する。
<第1の実施形態>
以下、図4〜図13を参照して本発明の第1の実施形態について説明する。
図4を参照して、本発明の実施形態におけるホスト機である情報処理装置200−B、クライアント機である情報処理装置200−Aによって行われる一連の処理について説明する。
ステップS401では、情報処理装置200−AのCPU201は、ユーザからのMRアプリケーションの起動指示を受け付けることにより、MRアプリケーションを起動させる。MRアプリケーションを起動したのち、処理をステップS402に移す。
ステップS402では、情報処理装置200−AのCPU201は、別の情報処理装置である情報処理装置200−Bに対して接続要求の送信を行う。尚、情報処理装置200−Bはこの時点で既に起動済みであるものとする。
ステップS403では、情報処理装置200−BのCPU201は、ステップS402で情報処理装置200−Aから送信された接続要求を受信する。
ステップS404では、情報処理装置200−BのCPU201は、接続要求の送信元の情報処理装置200−Aに対して、情報処理装置200−Bの外部メモリに記憶されている仮想オブジェクトのデータをすべて送信する。例えば、図9に示すオブジェクトテーブル900と、ファイルパス905に示すファイルとを送信する。これにより、以降は仮想オブジェクトの座標情報のやり取りだけで自機内に保存された仮想オブジェクトを当該座標の示す位置に配置し、HMD100への仮想オブジェクトのリアルタイムな表示制御(仮想オブジェクトの仮想空間上の位置の変更及び変更後の位置を用いたMR画像の生成)を行うことを可能にする。
具体的には、選択デバイス105Bの操作を受け付けた情報処理装置200−Bが当該操作に応じた仮想オブジェクトの移動を行い、当該移動を示す移動途中/移動後の仮想オブジェクトの座標903をリアルタイムで情報処理装置200−Aに送信することで、情報処理装置200−Aが当該仮想オブジェクト位置の変更、移動の表示制御をすることが可能となる。
また、ホスト端末である情報処理装置200−Bは、図7に示すような拠点情報700を外部メモリに記憶しており(拠点情報記憶手段に該当)、ステップS404で当該拠点情報も合わせて情報処理装置200−Aに送信するものとする。拠点情報700は、情報処理装置200が設置されている拠点であり各HMD100が所属する拠点の識別情報である拠点ID701と、各HMD100の識別情報であるHMD IDから構成されている。つまり、いずれのHMDがいずれの拠点に属するか(いずれの拠点の情報処理装置200に対応するか)を示す情報である。以上が図7の説明である。
ここで図9を参照して、仮想オブジェクトの情報を示すオブジェクトテーブル900について説明する。オブジェクトテーブル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の仮想オブジェクトは、X.Y.Z=000.000.000を原点とした仮想空間上の座標903=XX1.YY1.ZZ1に配置されている。原点は前述したキャリブレーションの時に設定されており、例えば仮想空間の原点と現実空間の原点が一致するMR空間が設定されているものとする。また、各座標903の座標値は、各仮想オブジェクトの中心点の座標であるものとする。
尚、選択デバイス105の座標903は、光学式センサにより補足されており、例えばユーザが選択デバイス105を移動させることで、当該移動に応じて座標値がリアルタイムに更新される。当該更新に用いる選択デバイス105のリアルタイムの座標903の情報は、光学式センサ104から情報処理装置200に送信され、情報処理装置200が、当該光学式センサ104から受信した座標の情報を、選択デバイス105の座標903に上書きすることで更新を行う。
サイズ(スケール)904は、各仮想オブジェクトの大きさを示す。ここではファイルパス905に記憶されている仮想オブジェクトのファイルに保存された仮想オブジェクトのサイズそのもの(拡大・縮小率=1倍)が記憶されているものとする。ファイルパス905は、各仮想オブジェクトのファイルが記憶されている、PC200の記憶領域上のアドレスを示す。各仮想オブジェクトのファイルは、情報処理装置200の、MR空間への仮想オブジェクトの配置・MR画像を生成するプログラムで読み取り可能な形式で記憶されている。例えばvrml形式で記憶されているものとする。
選択中フラグ906は、被選択用の仮想オブジェクトが選択デバイス105により選択されている状態か否かを示すフラグである。選択中フラグ906=0の場合、選択されていない状態であり、選択中フラグ906=1の場合、選択中であることを示す。
選択禁止フラグ907は、被選択用の仮想オブジェクトが選択デバイス105による選択を受け付けないように制御するためのフラグである。選択禁止フラグ907=0の場合、選択デバイス105の選択を受け付けることを可能とし、選択禁止フラグ907=1の場合には、選択デバイス105による選択を受け付けないように制御する。これにより、選択デバイス105で選択行為を行ったとしても、被選択用の仮想オブジェクトの移動を不可能とする効果がある。以上が図9の説明である。
図4の説明に戻る。ステップS405では、情報処理装置200−AのCPU201は、ステップS404で情報処理装置200−Bから送信されたオブジェクトテーブル900と、ファイルパス905に示すファイルとを受信して外部メモリに記憶する。また拠点情報700を受信して外部メモリに記憶する。
ステップS406では、情報処理装置200−AのCPU201は、光学式センサ104を用いてHMD100−Aに付された光学式マーカを検知し、MR空間上のHMD100−Aの位置や向き(位置情報及び向き情報)を取得する。取得したHMD100−Aの位置や向きは、情報処理装置200−Aの外部メモリに記憶されたHMD情報テーブル800に格納する。例えば図8に示すHMD情報テーブル800である。HMD情報テーブル800には、HMD ID801とHMD位置・向き802が格納されている。HMD ID801は、HMD100の識別情報である。HMD位置・向き802は、各HMDのMR空間上の座標情報と、向き情報(向き)を記憶している。当該HMD位置・向き801の座標と向きが、HMD100を装着したユーザの視線を示す。つまり、ユーザがどの位置からどの方向を見ているかを示す情報である。
ステップS413では、情報処理装置200−AのCPU201は、ステップS406で取得したHMD位置・向き802をホスト端末に共有すべく、HMD情報テーブル800の情報を情報処理装置200−Bに送信する。ステップS414では、情報処理装置200−BのCPU201は、当該HMD情報テーブル800の情報を受信して、ステップS415で外部メモリに記憶する。例えば、図8のHMD情報テーブル810に示すように、各情報処理装置200の管理しているHMD情報(HMD ID及びHMDの位置姿勢(位置・向き))を合わせて管理するリストに、ステップS414で受信した情報を追記する。既に同じHMD IDのレコードがある場合には、HMD当該同じHMD ID801の位置・向き802にステップS414で受信した位置・向きの値を上書きする。なお、HMD100−B1及びHMD100−B2の位置・向きの情報は、情報処理装置200−Bが自機に接続されている光学センサを用いて特定し、HMD情報テーブル810に格納している。HMD情報テーブル810は、情報処理装置200−Bと接続されたHMD100、及び情報処理装置200−Bと接続されたクライアント端末の管理するHMD100の位置姿勢を一括管理するテーブルである。
ステップS407では、情報処理装置200−AのCPU201は、HMD100−Aの右目・左目ビデオカメラ221から送信される現実空間画像を、取得し、RAM203等に記憶する。右目・左目ビデオカメラ221は、ユーザの右目に相当するビデオカメラと左目に相当するビデオカメラとの2つが存在するため、右目用と左目用の現実空間画像を取得する。
ステップS408では、情報処理装置200−AのCPU201は、仮想空間画像(仮想空間の画像)を取得しRAM203等に記憶する。
具体的には、ステップS407で格納したHMD100−Aの位置・向き802を読み出し、仮想空間上の仮想のカメラ(仮想空間上に配置され仮想空間を撮像する、HMD100と同じ画角を持つ仮想のカメラ)の位置及び向きに設定する。そして、当該仮想のカメラにより仮想空間を撮像・生成する。つまり、現実画像を含まない、仮想カメラの視点から見た、座標903に仮想オブジェクトを配置した仮想空間の画像を撮像。尚、前述した現実空間画像と同様に、HMD100−Aの右目・左目ディスプレイ222のそれぞれに表示するために右目用の仮想空間画像と左目用の仮想空間画像の2枚を取得する。
ステップS409では、情報処理装置200−AのCPU201は、ステップS407で取得した現実空間画像とステップS408で取得した仮想空間画像とをRAM203等から読み出し、複合現実画像生成部307を用いて当該現実空間画像に当該仮想空間画像を重畳し、複合現実画像を生成する。生成した複合現実画像はRAM203等に記憶する。前述したとおり、現実空間画像と仮想空間画像にはそれぞれ右目用と左目用の2枚ずつの画像がRAM203等に記憶されている。そして右目用の現実空間画像に右目用の仮想空間画像を重畳し、左目用の現実空間画像に左目用の仮想空間画像を重畳することで、より没入感の高い視覚をユーザは得ることができる。
ステップS410では、情報処理装置200−AのCPU201は、ステップS410で生成した右目用の複合現実画像と左目用の複合現実画像とをRAM203等から読み出し、HMD100−Aの右目・左目ディスプレイ222に表示させるように制御する。前述したように、右目用の複合現実画像を右目・左目ディスプレイ222の右目のディスプレイに表示するよう制御し、左目用の複合現実画像を右目・左目ディスプレイ222の左目のディスプレイに表示するよう制御する。つまり、HMD100−A(現実空間画像の送信元のHMD)に複合現実画像を送信して表示させる処理を行う。
ステップS411では、情報処理装置200−AのCPU201は、着目点の識別表示処理を実行する。当該着目点の識別表示処理は、あるHMDに、当該HMDとは別の拠点のHMDのユーザの着目点を当該あるHMDにおいて識別表示させる処理である。当該着目点の識別表示処理の詳細は図5の説明で後述する。例えば、拠点AのHMD100−Aには、拠点BのHMD100−Bのユーザの着目点をHMD100−Aにおいて識別表示する(同じ拠点のHMD100−Aのユーザの着目点は識別表示しない)。
ステップS412では、情報処理装置200−AのCPU201は、ユーザからMRアプリケーションの終了指示を受け付けたか否かを判定する。例えば情報処理装置200−Aの操作部においてアプリケーション終了ボタンの押下を受け付けるなど、ユーザからのアプリケーション終了指示を受け付けたと判定された場合には処理を終了させ、ユーザからのアプリケーション終了指示を受け付けなかったと判定された場合には処理をステップS406に戻す。以上が図4の説明である。
次に図5を参照して、本発明の第1の実施形態における着目点の識別表示処理の流れについて説明する。
ステップS501では、HMD100−Aは他者の着目点を識別表示する操作を受け付け、ステップS502で当該操作による着目点の識別表示の指示を情報処理装置200−Aに送信する。ステップS503で、情報処理装置200−Aは当該着目点の識別表示の指示を受け付ける。具体的には、HMD100−Aと接続された情報処理装置200−AのCPU201が、例えばHMD100−Aに設置された不図示のボタンが押下された(押下されている状態である)ことを検知・特定し、着目点の識別表示指示を受信したものと判断する。例えばHMD100−Aに設置された不図示のボタンが押下されていない状態の場合、ステップS504〜ステップS519の処理を行うことなく、図5の処理を終了する。
ステップS504では、報処理装置200−AのCPU201は、ステップS503で着目点の識別表示指示を受け付けたHMD100−A(例えばHMD100−A1)のHMD IDと、着目点の特定指示をホスト端末である情報処理装置200−Bに送信する。また、報処理装置200−AのCPU201はステップS505で、ステップS503で指示を受け付けた指示元のHMD100の位置姿勢(位置・向き802)をHMD情報テーブル800を参照して特定・取得する。
ステップS506では、情報処理装置200−BのCPU201は、ステップS504で送信された着目点の識別表示指示と当該指示の元となる操作がされたHMD100−A1の識別情報を受信する。ステップS507で、外部メモリに記憶されている拠点情報700と、HMDの位置姿勢のリスト(HMD情報テーブル810)を取得して、HMD100−A1以外の、リスト内の全てのHMDの情報に対してステップS508〜ステップS510の処理を行う。
ステップS508では、HMD情報テーブル810から未処理のHMDのデータを取得し、拠点情報700に基づいて、着目点の識別表示の操作がされたHMD100−AとステップS508で取得したHMDが異なる拠点のHMDか判定する(ステップS509)。
同じ拠点のHMDである場合(例えばHMD100−A2である場合/ステップS509でNO)であって、未処理のHMDの情報が残っている場合は、処理をステップS508に戻す。
他拠点のHMDである場合(例えばHMD100−B1である場合/ステップS509でYES)、処理をステップS510に移行し、着目点の特定処理を実行する。つまり、HMD100−A1とは異なる拠点BのHMD100−Bのユーザが着目しているMR空間上の座標(点)を特定する処理を行う。当該着目点の特定処理の詳細については図6の説明で後述する。
ここで図6を参照して、本発明の実施形態における、着目点の特定処理の詳細について説明する。
ステップS601では、情報処理装置200−BのCPU201は、図5のステップS509で他拠点のHMDであると判定された、例えばHMD100−B1の位置姿勢(座標・向き)の情報を、HMD情報テーブル810から取得する。
そして、ステップS602で当該HMD100−B1の位置姿勢、及び仮想空間に配置されている仮想オブジェクトの座標903に基づいて、HMD100−B1の位置からHMD100−B1の向く、HMD100−B1の正面方向に伸ばした直線(視線)が突き当たった(交差する)仮想オブジェクトを特定して、ステップS603で当該視線と最初にぶつかる(交差する)仮想オブジェクトの面上の点の座標を着目点として特定して記憶する。また、当該着目点を特定した時点でのHMD100−B1の位置姿勢の情報を記憶する。例えば図8の着目点情報820を外部メモリに記憶する。HMD100の位置(重心位置)に対して、どの方向がHMD100の正面方向(HMD100が向いている方向)かは予め決定され、外部メモリに記憶されている。
着目点情報820は、HMD ID821の示すHMD100が、仮想空間上のどの座標822に着目しているかを示す情報である。座標822=MR空間におけるHMD100の着目点の座標である。位置・向き823は、座標822を特定した時点におけるHMD ID821のHMDの位置姿勢の情報である。時刻824は、座標822、位置・向き823の値を記憶した日時の情報である。
情報処理装置200−BのCPU201は、所定時間(例えば3秒間)の間ステップS603による着目点の特定・記憶の処理を繰り返し行い、ステップS604で、HMD100−B1のユーザが所定時間の間同じ場所に着目していたか判定する。
具体的には、図6の処理を開始してから最初に特定したHMD100−B1の着目点の座標822と、最初に着目点が特定されてから3秒後に特定したHMD100−B1の着目点の座標822との仮想空間上の距離が所定の距離以内(例えば10cm以内)の場合に、所定時間の間同じ場所(近似する座標)に着目していたと判定する。当該所定時間及び所定距離の情報は、例えば図8の所定時間830、所定距離840に示す形式で、予め各情報処理装置200の外部メモリに記憶されているものとする。
図6の説明に戻る。所定時間同じ場所に着目していると判定した場合に(ステップS604でYES)、ステップS605で、図6の処理で最初に着目点が特定されてから3秒後に特定したHMD100−B1の着目点の座標を情報処理装置200−Aに通知する着目点として決定し、着目点の座標822に当該決定した着目点の座標を記憶する。また、当該着目点として決定した時点でのHMD100−B1の位置姿勢をHMD位置・向き823に、当該決定をした時点での日時を時刻824に記憶する。
尚、ここではステップS604で、HMD100−B1が所定時間の間同じ場所に着目していなかったと判定した場合、情報処理装置200−Aに通知する着目点を特定できなかった(決定できなかった)ものとして図6の処理を終了する。以上が図6の説明である。
図5の説明に戻る。情報処理装置200−BのCPU201は、HMD情報テーブル810の全てのHMDのデータに対してステップS508〜ステップS510の処理を実行した場合、処理をステップS511に移行して、図6のステップS605で決定して記憶した各HMDの着目点の座標822の情報と、各HMDの位置・向き823及びHMD IDを対応付けたリストを情報処理装置200−Aに送信する。
ステップS512では、情報処理装置200−Aは着目点の座標822と、HMD100−A1とは異なる拠点の(情報処理装置200−Aの管理下にない/対応していない)HMDの位置・向き823、HMD IDを受信して外部メモリに記憶する。そして、ステップS513、ステップS514の処理を全ての着目点の情報に対して実行する。
ステップS513では、情報処理装置200−Aは、ステップS512で受信したリストからHMD ID、着目点の座標、着目時のHMDの位置姿勢の組を1つ取得し、ステップS514で外部メモリから着目点識別オブジェクトを外部メモリから取得して、着目点の座標に応じて仮想空間上に配置する。
尚、当該ステップS514では、HMD100−A1用の仮想空間に対して、当該着目点識別オブジェクトの配置を行うものとする。つまり、着目点識別オブジェクトの表示操作をしていないHMD100−A2には当該着目点識別オブジェクトは表示されないように制御する(HMD100−A2用の仮想空間には着目点識別オブジェクトを配置しない)。
着目点識別オブジェクトとは、着目点を識別表示するために仮想空間上に配置する仮想オブジェクトであり、属性902に「着目点識別」の値が設定されているオブジェクトである。着目点識別オブジェクトの一例は図11の1104に示す。
図11の1100によれば、拠点BにおいてHMD100−B1の視線1102の先に仮想オブジェクト1101がある。情報処理装置200−BによりステップS605で決定された着目点の座標822は着目点1103を示す。1110は、HMD100−A1に表示される複合現実画像を示す。1104は着目点識別オブジェクトであり、拠点BにおいてHMD100−B1が着目している座標に配置されている。
尚、本実施形態の説明においては、着目点識別オブジェクト1104に当該着目点に着目しているHMD100の識別情報を対応付けて配置、表示している(1105)。当該HMD100の識別情報の表示方法は、例えば情報処理装置200−Aが、所定のサイズの直方体の仮想オブジェクトを生成して、着目点識別オブジェクトの位置に着目しているHMD100のHMD IDのテキスト画像をテクスチャ画像として貼り付ける(つまり仮想オブジェクト1105を生成する)。そして、当該仮想オブジェクト1105を着目点識別オブジェクトと対応付けて(例えば線の画像でつないで)、着目点識別オブジェクトの近傍の所定の位置に配置する。所定の位置とは、例えば着目点識別オブジェクトの配置位置(仮想空間上の座標)をX,Y,Z=0,0,0とした場合のX,Y,Z=XX,YY,ZZの座標として予め外部メモリに記憶しているものとする。
情報処理装置200−AのCPU201は、情報処理装置200−Bから受信した全ての着目点、着目点に着目しているHMDの情報に対してステップS513、S514の処理を実行した後、処理をステップS515に移行する。
ステップS515では、情報処理装置200−AのCPU201は、HMD100−A1から受信した現実空間画像と、ステップS505で取得したHMD100−A1の位置姿勢と同じ位置姿勢で仮想空間を撮像した仮想空間画像を取得し、ステップS516で、2つの画像を合成した複合現実画像を生成して、ステップS517でHMD100−A1に送信する。ステップS518でHMD100−A1が当該複合現実画像を受信して、ステップS519で表示画面に表示する。以上が図5の説明である。
以上説明したように、本発明によれば、ある空間のユーザの着目点を他の空間のユーザに共有することができる。
例えば、同じ拠点のユーザの着目点の情報を表示することなく、他の拠点のユーザの着目点を識別表示することで、ユーザにとって現実画像として見えていない他のユーザ(他の拠点にいるユーザ)の着目点を適切に通知することができる。
また、同じ建物にある複数の異なる部屋をそれぞれ拠点A、拠点Bとしてもよい。(本発明の課題は、MR空間における仮想オブジェクトの画像は共有できるが、現実空間が異なるために各々の現実空間画像を共有できないことで発生するためである。)
つまり、本発明によれば、例えば、同じ部屋のユーザの着目点の情報を表示することなく、他の部屋のユーザの着目点を識別表示することで、ユーザにとって現実には見えていない他のユーザの視点を適切に通知することができる。
また、例えば、同じ情報処理装置に対応するHMDの着目点の情報を通知することなく、他の情報処理装置のHMDの着目点を識別表示することができる。
尚、上述した本発明の実施形態においては、着目点識別オブジェクトは、図11の1104に示すような、着目点の座標に配置する仮想オブジェクトであるものとしたが、着目点識別オブジェクトの形状、配置方法はこれに限るものではない。
例えば、HMD100−B1の位置から着目点の位置に伸びる矢印型の仮想オブジェクトを着目点識別オブジェクトとして仮想空間上に配置するようにしてもよい。当該HMD100−B1の位置から着目点の位置に伸びる仮想オブジェクトを生成・配置することで、HMD100−B1のユーザがどこを見ているのかだけでなく、どこからどこを見ているのか(HMD100−B1の座標から着目点を見ている)をユーザに通知することができる。
当該矢印型の着目点識別オブジェクトの例、配置方法について説明する。
矢印型の着目点識別オブジェクトの例を図12の1200に示す。情報処理装置200−Aは、ステップS513において、ステップS512で受信したリストからHMD ID、着目点の座標、着目時のHMDの位置姿勢の組を1つ取得し、着目時のHMDの位置から着目点の座標までの距離の長さを特定し、特定した長さを持つ矢印型の仮想オブジェクト(着目点識別オブジェクト)を生成する。そして、当該矢印型の仮想オブジェクトを、矢印の始点(端の点/端点)をステップS512で受信したリスト内にある、着目点に着目時のHMDの仮想空間上の位置1202とし、矢印の終点(端の点/端点)を着目点の座標とした矢印型の着目点識別オブジェクト1201を生成して仮想空間に配置するものである。
情報処理装置200−Aは、ステップS515で当該矢印型の着目点識別オブジェクト1201を配置した仮想空間画像と現実画像を重畳して複合現実画像を生成し、ステップS516でHMD100−A1に送信する。よって、HMD100−B1のユーザがどこからどこを見ているのかを示す視線の情報(HMD100−B1の座標から着目点を見ていること)をHMD100A−1のユーザに通知することができる。
なお、図12の1105に示すように、着目点識別オブジェクト1201に対応付けて、当該着目点識別オブジェクト1201がいずれのHMD100−A1の視線を示しているのかを識別表示するようにしてもよい。当該仮想オブジェクト1105の生成、配置方法については上述したため詳細な説明は割愛する。
なお、図11の着目点識別オブジェクト1104と、図12の着目点識別オブジェクト1201を同時に空間上に配置して、現実画像に重畳するようにしてもよい。
また、上述した実施形態においては、HMD100から他者の着目点の識別表示をする旨の指示を受け付けた場合に、当該HMD100に対して着目点識別オブジェクトを表示するように制御したが、例えば、図13に示すような情報処理装置200に表示するモード設定画面1300において着目点識別オブジェクトの表示モードがオンに設定された場合に、情報処理装置200のCPU201が図5のステップS503〜ステップS520の処理を、自拠点のHMD100全てに対して実行するようにしてもよい。モード設定画面1300は、情報処理装置200のCPU201がユーザ操作に応じて表示する、情報処理装置200に接続されたHMD100の着目点識別オブジェクトの表示モードを設定するための画面である。各HMDに対応するONのチェックボックス1301又はOFFのチェックボックス1302にチェックが入っている状態で「OK」ボタン1303の押下を受け付けることで、情報処理装置200のCPU201は、「OK」ボタン1303の押下時点でのチェックボックスのチェックに従って各HMD100の着目点識別オブジェクトの表示モードを設定(ON又はOFF)の情報を外部メモリに記憶する。図13は、情報処理装置200−Aのモード設定画面の一例である。情報処理装置200−AのCPU201は、ステップS410の後、外部メモリに記憶された自機に対応するHMD100−A1、HMD100−A2の着目点識別オブジェクトの表示モードのON、OFFを特定し、モードがONになっているHMD100についてステップS504〜S519の処理を実行する。この場合、図5の説明で上述した、着目点識別表示の指示元のHMD=着目点識別オブジェクトの表示モードがONのHMDであるものとする。
また、上述した実施形態においては、HMDごとに仮想空間を記憶、管理しているものとして説明したが、例えば1つの仮想空間画像を複数のHMD100が参照している場合がある。つまり、1つの仮想空間内に2つ以上HMD100の位置姿勢に応じた2つ以上の仮想カメラを配置してそれぞれ仮想空間画像を撮像・取得し、それぞれ複合現実画像を生成して送信する場合である。当該複数のHMDが参照している仮想空間に、ステップS514で着目点識別オブジェクトを配置すると、HMD100−A1だけでなく、当該着目点識別オブジェクトの表示を所望していないHMD100−A2にまで着目点識別オブジェクトが重畳された複合現実画像が送付されてしまうことがある。よって、例えばステップS512でHMDの位置姿勢を取得した後、当該HMD100−A1に対応する仮想空間を他のHMD100も利用している場合には(過去に当該仮想空間を撮像した仮想空間画像をHMD100−A1以外のHMDの複合現実画像に利用している場合には)、ステップS513の処理の前に、HMD100−A1専用の新たな仮想空間を生成して外部メモリに記憶し、当該新たに生成した仮想空間にオブジェクトテーブル900の各オブジェクト及びステップS514での着目点識別オブジェクトを配置して複合現実画像を生成するようにしてもよい。当該新たな仮想空間は、例えばステップS512の時点でHMD100−A1に対応付けられていた仮想空間の情報をコピー(複製)するものである。
また、上述した実施形態においては、拠点情報=拠点IDとHMD IDとを対応付けた情報であるものとしたが、拠点(拠点に設置されている情報処理装置200)とHMDとの対応関係が分かればよいため、例えば図7の710に示すように、情報処理装置200のIPアドレスと、当該情報処理装置200に対応するHMD100のIPアドレスを対応付けた情報を各情報処理装置の外部メモリに記憶して(拠点情報記憶手段に該当)、拠点情報700の代わりに用いるようにしてもよい。なお、各装置は他装置との通信時に自装置のIPアドレスを通信相手の端末に送信するものとする。また、710の情報を用いてHMD100の拠点を特定する場合、情報処理装置200−Aは、HMD IDの代わりにHMD100から取得した当該HMD100のIPアドレスを情報処理装置200−Bに送信するものとする。情報処理装置200−Bは受信したIPアドレスの情報と、自装置の外部メモリに記憶されている710のIPアドレスの情報とを突合せることで、情報処理装置200−Aから受信したHMD100の情報がどの拠点のHMD100の情報かを特定することが可能となる。
また、通信にIPアドレスを含めることで、情報処理装置200のCPU201は、HMDの位置姿勢の取得元が光学センサである(自機が光学センサから直接位置姿勢を取得した)HMDと、他の情報処理装置200から位置姿勢を取得したHMDとが異なる拠点のHMDであることを特定可能である。よって、例えば情報処理装置200は、HMDの位置姿勢を受信するたびに当該位置姿勢の情報の送信元の装置のIPアドレスと当該HMDの識別情報及び位置姿勢とを対応付けて記憶し(拠点情報記憶手段に該当)、HMDの位置姿勢の送信元IPアドレスが情報処理装置200Aを示す=拠点AのHMD、拠点AのHMDの位置姿勢であり、HMDの位置姿勢の送信元IPアドレスが光学センサを示す=拠点BのHMD、拠点BのHMDの位置姿勢であると判定するようにしてもよい。
以上、本発明の第1の実施形態について説明した。
以下、本発明の他の実施形態の例について説明する。第1の実施形態の説明で上述した処理と共通処理については説明を割愛する。
<第2の実施形態>
以下、図14を参照して本発明の第2の実施形態について説明する。
第2の実施形態においては、ユーザの手が仮想オブジェクトに接触した場合に、当該接触した点を着目点とする。よって、ユーザの所望の位置を着目点として指定することができる。
第2の実施形態では、図4〜図5のステップS509までの処理を実行後(ステップS509でYES)、ステップS510の処理として図14の処理を実行する。図14の処理完了後、図5のステップS511以降の処理を実行する。
第2の実施形態においては、手の形状をした透明の仮想オブジェクト(属性902=手の仮想オブジェクト)を情報処理装置200の外部メモリに記憶しておき、ステップS409において情報処理装置200のCPU201が、HMD100から受信する現実空間画像の中からユーザの手を検出して、当該手を検出した画像上の位置とHMD100の画角・位置姿勢の情報から仮想空間上のユーザの手の位置・向きを特定して、当該特定した位置・向きの値に従って、仮想空間上に当該手の形状をした透明の仮想オブジェクトを現実空間のユーザの手の位置に重ねて配置する。
ステップS1401では、情報処理装置200−BのCPU201は、図5のステップS509で(HMD100−A1にとって)他拠点のHMDであると判定された、例えばHMD100−B1の位置姿勢(座標・向き)の情報を、HMD情報テーブル810から取得する。
ステップS1402では、当該HMD100−B1の最も近くにある属性902=手(不図示/HMD100−B1に対応するユーザの手)の仮想オブジェクトを特定し、ステップS1403で、当該手の仮想オブジェクトと属性902=被選択である他の仮想オブジェクトが接触しているか判定する。当該接触判定は、例えば手の仮想オブジェクトと他の仮想オブジェクトの距離が所定距離以下か判定し、所定距離以下の場合は接触していると判定し、所定距離以下でない場合は接触していないと判定することで実行する。当該所定距離の値は各情報処理装置200の外部メモリに予め記憶されているものとする。
接触していないと判定された場合は図14の処理を終了し、接触していると判定された場合は当該接触している点の座標(仮想空間上の座標)を、ステップS1401で特定したHMD100−B1の着目点として特定し、ステップS511で情報処理装置200−Aに通知する着目点として決定して、図8のHMD100−B1の着目点の座標822に着目点として特定した座標を記憶する。また、当該記憶の処理をした時点での日時を時刻824に、時刻824時点でのHMD100−B1の位置姿勢をHMD位置・向き823に記憶する。
第2の実施形態によれば、他の拠点のユーザが任意に選択した点を着目点とし、確認することができる。
例えば、ユーザの手が仮想オブジェクトに接触した場合に、当該接触した点を着目点とする。よって、ユーザの所望の位置を着目点として指定することができる。
なお、上述した第2の実施形態の説明においては、手の透明な仮想オブジェクトを用いて着目点を決定するものとしたが、例えば手の仮想オブジェクトの代わりに選択オブジェクトを用いるようにしてもよい。
<第3の実施形態>
以下、図15を参照して本発明の第3の実施形態について説明する。
第3の実施形態においては、所定の音声・言葉を検知した場合に、着目点を特定・決定する。よって、ユーザの所望のタイミングで着目点を特定・決定することができる。
第3の実施形態においては、HMD100にマイクが搭載されているものとする。例えばHMD100−A1のマイク装置で入力された音声情報は、情報処理装置200Aに送信され、記憶される。また、情報処理装置200AのCPU201は、図4のステップS413で当該HMD100−A1から取得して記憶している音声情報を、当該HMD100−A1のHMD IDと対応付けて情報処理装置200−Bに送信し、情報処理装置200−BのCPU201がこれ受信して、HMD IDに対応付けて記憶部に記憶する。
第3の実施形態では、図4〜図5のステップS509までの処理を実行後(ステップS509でYES)、ステップS510の処理として図15の処理を実行する。図15の処理完了後、図5のステップS511以降の処理を実行する。
ステップS1501では、情報処理装置200−BのCPU201は、図5のステップS509で他拠点のHMDであると判定された、例えばHMD100−B1の位置姿勢(座標・向き)の情報をHMD情報テーブル810から取得する。また、HMD100−B1に対応する(HMD100−B1のマイクから取得した)過去5秒間の音声情報を外部メモリから取得する。
ステップS1502では、情報処理装置200−BのCPU201は、ステップS1501で取得した音声情報を解析し、当該音声情報から所定のキーワードを検出できたか判定する。例えば「ここ」や「見て」等のキーワードを検出したか判定する。当該キーワードの情報は予め各情報処理装置200の外部メモリに記憶されているものとする。
キーワードを検出できなかった場合は図15の処理を終了する。キーワードを検出できた場合は、情報処理装置200−BのCPU201は、ステップS602及びステップS603と同じ要領で、ステップS1503でHMD100−B1の視線が突き当たる浅生オブジェクトを特定し、ステップS1504で当該視線が最初に突き当たる仮想オブジェクトの面上の点の座標を特定して、ステップS511で情報処理装置200−Aに通知する着目点として決定する。
第3の実施形態によれば、所定の音声・言葉を検知した場合に、着目点を特定・決定する。よって、ユーザの所望のタイミングで着目点を特定・決定することができる。
<第4の実施形態>
以下、本発明の第4の実施形態について説明する。
第4の実施形態においては、着目点識別オブジェクトの表示指示がされた時点で、他のHMDの視線が突き当たった仮想オブジェクト上の点を着目点とする。
つまり、図6のステップS603で特定した着目点を、ステップS511で情報処理装置200−Aに通知する着目点として決定し、外部メモリに記憶する。ステップS604.S605の処理は行わない。
よって、所定時間同じ場所を注視することなく、着目点を特定し、着目点識別オブジェクを仮想空間に配置、表示することができる。
<第5の実施形態>
以下、本発明の第5の実施形態について説明する。
第5の実施形態においては、着目点識別オブジェクトの表示指示をしたHMDの着目点を、他のHMDに識別表示する。
第5の実施形態では、図4のステップS401〜ステップS410の処理を実行後、ステップS411の処理として図16の処理を実行する。
ステップS1601では、HMD100−A1は自機の着目点(自機を装着したユーザの着目点)を他の拠点のHMD100に識別表示させる操作を受け付け、ステップS1602で当該操作による着目点の識別表示の指示を情報処理装置200−Aに送信する。ステップS1603で、情報処理装置200−Aは当該着目点の識別表示の指示を受け付ける。具体的には、HMD100−A1と接続された情報処理装置200−Aが、例えばHMD100−Aに設置された不図示の自機着目点表示ボタンが押下された旨の情報を検出し、着目点の識別表示指示を受信したものと判断する。
ステップS1604では、報処理装置200−AのCPU201は、ステップS503で着目点の識別表示指示を受け付けたHMD100−A(例えばHMD100−A1)のHMD IDと、位置姿勢(HMD情報テーブル800の情報)を取得し、ステップS1605で、情報処理装置200の外部メモリに記憶されているオブジェクトテーブル1800を取得して各仮想オブジェクトの座標を特定し、当該HMD100−A1の視線が最初に突き当たる仮想オブジェクトを特定する。
オブジェクトテーブル1800は、第1の実施形態におけるオブジェクトテーブル900に識別表示フラグ1808を追加したものである。1801〜1807は図9の901〜907と同じであるため説明は割愛する。識別表示フラグ1808は仮想オブジェクトに対応付けて記憶される、当該仮想オブジェクトにHMD100が着目した場合に当該着目点の情報を識別表示するか否かの設定を示す情報であり、各仮想オブジェクトに事前に設定されているものである。識別表示フラグ1808が「0」であれば着目点識別表示オブジェクトの表示はしない仮想オブジェクトであることを示す。識別表示フラグ1808が「1」であれば着目点識別表示オブジェクトの表示をする仮想オブジェクトであることを示す。
ステップS1606では、情報処理装置200−AのCPU201は、ステップS1605で特定した仮想オブジェクトの当該識別表示フラグ1808を参照し、ステップS1607では、識別表示フラグが着目点識別オブジェクトを表示することを示すか判定する。識別表示フラグが着目点識別オブジェクトを表示することを示していない(識別表示フラグ1808=0)場合、図16の処理を終了する。識別表示フラグが着目点識別オブジェクトを表示することを示す(識別表示フラグ1808=1)場合、ステップS1608で、HMD100−A1の視線が最初に突き当たる仮想オブジェクトの面上の点(座標)を着目点として特定する。
ステップS1609では、情報処理装置200−AのCPU201は、ステップS104で取得したHMD100−A1の位置姿勢の情報と、ステップS1608で特定した着目点の座標、及びHMD100−A1のHMD IDを情報処理装置200−Bに送信する。
ステップS1610では、情報処理装置200−BのCPU201は、ステップS1609で送信された各種情報を受信して外部メモリに記憶し、ステップS1611では、HMD100−B1、HMD100−B2の現実画像を取得して、また、当該受信した着目点の示す、HMD100−B1、HMD100−B2のそれぞれの仮想空間上の座標にオブジェクトテーブルから取得した着目点識別オブジェクト(例えば図17の1701)を配置して、それぞれのHMD100の位置姿勢に従って仮想空間画像を撮像(取得)する。
ステップS1612では、ステップS1611で取得した2つの画像を重畳(合成)して複合現実画像を生成し、ステップS1613で当該複合現実画像を各HMD100に送信する。図16では、HMD100−B1に複合現実画像を送信する例を示している。複合現実画像の例は図17に示す。また、着目点識別オブジェクトの配置・生成方法は第1の実施形態の説明で前述したため説明は割愛する。
つまり、情報処理装置200−Bは、自機に対応するHMD100−Bに対してのみ、HMD100−A1の着目点を識別表示させる処理を行う。
ステップS1614では、HMD100−B1は当該複合現実画像を受信して、ステップS1615で表示画面に表示する。
ステップS1616では、情報処理装置200−AのCPU201は、HMD100−A1から着目点識別表示の停止指示を受け付けたか判定する。具体的には、ステップS1601で押下されたHMD100−A1上のボタンが再度押下された旨の情報をHMD100−A1から受信した場合に、着目点識別表示の停止指示を受け付けたと判定する。着目点識別表示の停止指示を受け付けた場合(ステップS1616でYES)、ステップS1617で、着目点識別オブジェクトを非表示にするための非表示指示を情報処理装置200−Bに送信する。図16の処理を終了する。着目点識別表示の停止指示を受け付けていない場合(ステップS1616でNO)処理をステップS1604に戻す。
ステップS1618では、情報処理装置200−BのCPU201は、着目点識別オブジェクトを非表示にするための非表示指示を受け付けて、ステップS1619で、着目点識別オブジェクトを各HMD100−Bの仮想空間から削除する。以上が図16の説明である。
なお、図13のようなモード設定画面で着目点の識別表示モードがONになっているHMD100についてステップS1603で自機の着目点を他のHMD100に表示させる指示がされていると判断し、ステップS1604〜S1615の処理をするようにしてもよい。モード設定画面で着目点の識別表示モードがOFFになっている場合、ステップS1616で着目点の非表示の指示がされていると判定して処理をステップS1617に移行するものとする。
また、図16の処理と、図5の処理を並行して実行するようにしてもよい。
第5の実施形態によれば、着目点識別オブジェクトの表示指示をしたHMDの着目点を、他のHMDに識別表示させることができる。
つまり、自分がどこに着目しているのかを知ってほしいユーザが、自分がどこに着目しているのか他の拠点のユーザに通知することができる。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、HMD100は頭部装着式のものであってもよいし、手に持って使用する双眼鏡型のものであってもよい。また、HMDのディスプレイはシースルータイプのディスプレイであってもよい。シースルータイプの場合、透明なディスプレイ越しに現実空間が見えるため、ディスプレイ上に仮想空間の画像を表示させることであたかも現実空間画像に仮想空間画像を重畳したように見せる。
また、上述した複数の実施形態の処理は、自由に組み合わせ可能であり、同時並行的に実行・実現することが可能であるものとする。
また、本実施例では拠点Aと拠点Bにそれぞれ情報処理装置200が設置されている構成となっているが、1つの拠点Aに複数の情報処理装置200を設置しても構わないし、1つの拠点Aに1つの情報処理装置200を設置し、複数のHMD100を接続し、それぞれのMR空間を構築することで本発明を実施することもできる。一つの情報処理装置200で実施する場合には、情報処理装置200に複数のグラフィックボードを備える必要がある。
また、上述した実施形態においてはHMDの位置を特定する方法として光学式マーカと光学式センサを用いる形態をとったが、例えば特開2003−308514号に示すように、2次元マーカを複数用いることによりHMD100の位置姿勢を特定するようにしてもよいし、センサと2次元マーカの両方を用いてHMD100の位置姿勢を特定するようにしてもよい。
2次元マーカを用いてHMDの位置姿勢を特定する場合は、マーカの形状は問わないが、例えば正方形であり、全て同じサイズであるものとする。各マーカにはユニークなマーカ番号が埋め込まれているものとする。そして、HMD100に設けられたカメラで撮像した際に、個々のマーカが識別でき、デコードした際に、そのマーカ番号が得られるものとする。そして、位置検出用マーカについては、HMD100の位置姿勢がどのような状態であっても、内蔵するカメラの視野内に最低でも3つが含まれるように、予め既知の位置に貼り付けられているものとする。HMD100の位置姿勢を検出する原理は、例えば撮像した画像中の3つの位置検出用マーカ(その位置は既知)それぞれのサイズから、HMD100からそれぞれまでの位置検出用マーカまでの距離を求めるものである。そして、3つの位置検出用マーカから求めた3つの距離が重なる位置を、HMD100の位置として決定する。また、HMD100の姿勢は、撮像した画像中の3つの位置検出用マーカの配置から求めればよい。
なお、マーカの法線方向に視点があるとき、そのマーカ画像が正方形に見えることになる。そして、視点が法線方向からずれると、そのずれの度合いに応じて正方形が歪んで見える。つまり、この歪みから、視点の軸に対するマーカで規定される平面の向きが判明し、マーカのサイズから視点とマーカ間の距離を検出でき、マーカが貼り付けられた平面が規定できる。また、実施形態では、マーカには、互いに識別できる2つの印が設けられ、マーカの中心位置を原点とし、マーカで規定される上記の平面上の、原点からその印に向かう2つのベクトルを2軸、マーカの中心位置から法線方向の1軸で、局所的(ローカル)な3次元座標を規定する3軸を規定しているものとする。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせても実行可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。