図1を参照して、本発明の実施形態における、情報処理システムの構成の一例について説明する。図1は、本発明の実施形態における、情報処理システムの構成の一例を示す図である。
本発明の情報処理システムは、PC100、HMD101(ヘッドマウントディスプレイ101)、マーカ102、仮想オブジェクト103、高解像度カメラ104、現実物体105等から構成される。PC100とHMD101(表示装置)は、図1に示すLAN150や、USB(Universal Serial Bus)等を介して相互にデータ通信可能に接続されている。
マーカ102には、MR空間(複合現実空間)上の位置情報が対応付けられており、HMD101に搭載されるビデオカメラでマーカ102を撮像することで、当該撮像されたマーカ102の中心点とマーカ102の面積(画像中の大きさ)を用いて、HMD101のMR空間上の位置・姿勢(撮像方向)を特定することが可能である。
本実施形態においては、マーカの位置=マーカの中心点とする。また、本実施形態においては、当該位置・姿勢の特定処理はPC100のCPUが実行するものとする。マーカ102の位置・面積・識別応報は、PC100の外部メモリに予め記憶されているものとする。
また、図1にはマーカがマーカ102のみ記載されているが、例えば、複数のマーカをHMDの周辺(MR空間を設定する現実空間上の壁・床等)に配置して、各マーカに位置情報を対応付けてPC100の外部メモリに記憶しておき、当該マーカのいずれかを撮像することで、HMD101のMR空間上の位置・姿勢を特定することが可能である。HMD101の位置・姿勢の方法はどのようなものでも構わない。
尚、本発明の実施形態において、マーカ102は、HMD101がMR空間上にある現実物体に接近したか否かの判定にも用いられるものとする。当該判定、及び判定結果に応じた処理については後述する。
また、PC100の外部メモリには、MR空間上に配置するCG(仮想オブジェクト)の情報がMR空間上の位置・姿勢の情報と対応付けて記憶されている。PC100は、HMD101のビデオカメラにより撮像された画像を取得して、当該HMD101の位置・姿勢の情報を用いて、当該取得した画像に、CG(仮想オブジェクト)の画像を重畳して、MR画像(重畳画像/複合現実画像)を生成する(複合現実画像生成)。
PC100は当該MR画像をHMD101に送信して、HMD101はディスプレイに当該MR画像を表示する。
上述した、HMD101の位置及び姿勢の特定・算出の具体的な方法、及び、MR画像の生成方法は既知の技術であり、例えば、参考文献(特開2000−350860号公報)にも記載されているため、ここでは説明を割愛する。
高解像度カメラ104は、HMD101に設置された単眼カメラである。本発明の実施形態においては、当該高解像度カメラ104は、HMD101に内蔵されたビデオカメラ(後述の221、222)と比較して、高解像度の画像を取得・出力可能であるものとする。以下、HMD101に内蔵されたビデオカメラを、当該高解像度カメラ104と比較して、低解像度カメラと記載するものとする。
仮想オブジェクト103は、MR空間上に配置されたCGモデルである。当該仮想オブジェクト103は、PC100の外部メモリに、MR空間上の位置の情報と対応付けて記憶されている。
例えば、MRの技術を用いて、機械の内部機構(例えばエンジン)としての現実物体105と、当該内部機構を覆う外装板としての仮想オブジェクト103のようなCGを、HMD101に表示し、実際に現実物体としての外装板が取り付けられた場合に、当該内部機構の整備を行う整備者が当該内部機構の整備を行うことができるかシュミレーションすることが考えられる。
しかしながら、上述したように、解像度の低い画像の出力しかできない低解像度カメラの出力画像では、仮想オブジェクト103の開閉部に整備者の腕が入るか否か程度のおおまかな状態については、HMD101のディスプレイにMR画像を表示させ、HMD101を装着したユーザが開閉部の開いた箇所に腕を入れこむことで確認可能だが、ねじ穴のような細かい部分については、画像が荒いために確認が難しい。
例えば、ねじ穴そのものの状態を詳細に確認したい場合、ユーザは、都度HMD101を頭部から取り外して、ねじ穴を確認する必要があり手間である。
これに対し、本発明の第1の実施形態においては、高解像度のカメラを準備し、HMD101が現実物体に一定以上接近した場合(現実物体を詳細に確認しようと、ユーザが、現実物体に接近した場合)に、現実物体をユーザに確認させるべく、HMD101のディスプレイに出力する画像を低解像度カメラからの出力画像から、高解像度カメラからの出力画像に切替える処理を行う。
以上が図1の、本発明の実施形態における、情報処理システムの構成の一例についての説明である。
次に図2を参照して、本発明の実施形態における、PC100、HMD101のハードウェア構成の一例について説明する。図2は、本発明の実施形態における、PC100、HMD101のハードウェア構成の一例を示す図である。尚、図2のPC100とHMD101のハードウェアの構成は一例であり、用途や目的に応じて様々な構成例がある。
まず、PC100は、CPU201、ROM202、RAM203、システムバス204、入力コントローラ205、ビデオコントローラ206、メモリコントローラ207、通信I/Fコントローラ208、入力デバイス209、ディスプレイ210、外部メモリ211等を備える。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211には、CPU501の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムや、各種装置の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボードやマウス250等のポインティングデバイスからの入力を制御する。
ビデオコントローラ(VC)206は、ディスプレイ210等の表示器への表示を制御する。表示器は液晶ディスプレイでもCRTでも構わない。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明のPC100が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
次に、HMD101は、右目ビデオカメラ221、左目ビデオカメラ222、右目ディスプレイ223、左目ディスプレイ224、コントローラ225等を備える。
右目ビデオカメラ221と、左目ビデオカメラ222は、現実世界を撮影するビデオカメラである。右目ビデオカメラ221は、右目ディスプレイ223に表示するための画像を撮影し、左目ビデオカメラ222は、左目ディスプレイ224に表示するための画像を撮影する。撮影された画像(現実空間画像)は、コントローラ225がPC100に送信し、通信I/Fコントローラ208を通じてPC100が受信する。
PC100から通信I/Fコントローラ208を通じて複合現実画像が送信されると、コントローラ225が受信し、受信した複合現実画像を右目ディスプレイ223と左目ディスプレイ224に表示させる。この時、右目ビデオカメラ221で撮影された現実空間画像に基づいて生成された複合現実画像は、右目ディスプレイ223に表示し、左目ビデオカメラ222で撮影された現実空間画像に基づいて生成された複合現実画像は、左目ディスプレイ224に表示する。以上が図2の、本発明の実施形態における、PC100、HMD101のハードウェア構成の一例についての説明である。
次に図3を参照して、本発明の実施形態における、各種装置の機能構成の一例について説明する。図3は、本発明の実施形態における、各種装置の機能構成の一例を示す図である。
PC100は、オブジェクトの描画位置を特定するPlatformアプリケーションと、当該特定した情報を用いてオブジェクトを描画し、MR画像を生成するViewerアプリケーションを備える。
撮像画像受信部301は、HMD101の撮像処理部で撮像された画像(現実画像/撮像画像)であって、撮像画像送信部312で送信された現実画像を受信する受信部である。位置姿勢特定部302は、例えば、HMD101から受信した現実画像に写るマーカ(例えばマーカ102)の中心点の位置・面積からHMD101の位置・姿勢を特定する。
被写体距離算出部303は、例えば、HMD101から受信した現実画像に写るマーカ(例えばマーカ102)の中心点の位置(中心位置)・面積から、HMD101とマーカ102との距離(例えば、マーカ102の中心位置からHMD101の所定の位置までの距離)を算出して特定する。
カメラ切替判定部304は、HMD101が被写体(例えば、現実物体/撮像対象物)に所定以上接近したか否かを判定し、当該判定結果に応じて、HMD101に出力する画像を、低解像度カメラからの画像(低解像度画像)から高解像度カメラからの画像(高解像度画像)に切替えるか否か、高解像度画像から低解像度画像に切替えるか否か、を判定する判定部である。
カメラ切替処理部305は、当該カメラ切替判定部304における判定結果に応じて、HMD101に出力する画像の切替処理を行う。つまり、使用するカメラの切替処理を行う。
仮想オブジェクト記憶部306は、仮想オブジェクト(CGモデル)を、MR空間上の位置と対応付けて記憶する記憶部である。当該MR空間上の位置は、別途PC100の外部メモリに記憶されたMR空間上の原点座標からの相対位置である。
仮想オブジェクト表示制御部307は、仮想オブジェクトの表示・非表示を制御する制御部である。つまり、MR画像を生成するか否かを決定する。
例えば、HMD101が所定以上現実物体に接近した場合、HMD101を装着したユーザは、現実物体の詳細を確認したいものと考えられるため、仮想オブジェクトの表示(MR画像のHMD101への出力)は不要として、仮想オブジェクトを表示しない、高解像度の現実画像をHMD101に送信し、HMD101が所定距離、現実物体と離れている場合、HMD101を装着したユーザは、現実物体を含めた空間全体の状態を確認したいものと考えられるため、現実物体周辺の(HMD101の視野角内の)仮想オブジェクトを表示したMR画像を生成してHMD101に送信するものとする。
MR画像生成部308は、MR画像を生成する生成部である。画像送信部309は、HMD101に、現実画像、又は、現実画像を用いて生成したMR画像を送信する送信部である。
画像受信部313は、当該画像の受信部である。画像表示部314は、当該画像の表示部である。以上が図3の、本発明の実施形態における、各種装置の機能構成の一例についての説明である。
次に図7を参照して、本発明の実施形態における、各種データテーブルの構成の一例について説明する。図7は、本発明の実施形態における、各種データテーブルの構成の一例を示す図である。図7の各種データは、PC100の外部メモリに記憶されている。
HMD位置姿勢情報700は、HMDの位置701、姿勢702から構成されている。HMD位置姿勢情報700は、PC100のCPU201が、例えば、HMD101から取得する画像の中のマーカの中心位置(中心点)・面積などを用いて随時算出し、当該算出された値に随時更新されるものとする。
被写体情報710は、被写体である現実物体の位置情報を示す。ここでは、現実物体に添付されたマーカの位置=現実物体の位置とする。マーカID711は、マーカを一意に識別するための識別情報である。位置712は、当該マーカのMR空間上の位置の情報である。当該被写体情報710は、PC100の外部メモリに予め記憶されているものとする。
尚、上述した図7の説明においては、被写体情報710は=HMD101のカメラで撮像された現実画像中のマーカ画像(HMD101の位置姿勢、画像中のマーカの画像の大きさ・ベクトル等)から特定された、現実物体に添付されたマーカの位置=現実物体のMR空間上の位置とするものとしたが、現実物体の位置が確認できればよいため、例えば予めPC100の外部メモリに現実物体のMR空間上の位置情報として被写体情報710に示す情報を記憶しておき、当該記憶している情報を被写体情報710の代わりに利用して、PC100のCPU201が本発明の各フローチャートの処理を実行するようにしてもよい。
仮想オブジェクト情報720は、仮想オブジェクトの識別情報であるオブジェクトID721と、位置722を対応付けて記憶している。仮想オブジェクト情報720は、PC100の外部メモリに予め記憶されているものとする。
切替条件730は、PC100のCPU201が、HMD101に送信する画像を、低解像度画像から高解像度画像に、高解像度画像から低解像度画像に切替える閾値である条件を記憶している。切替条件730は、PC100の外部メモリに予め記憶されているものとする。
ここでは、HMD101の位置である位置701と、被写体情報710の位置712が示す現実物体の位置との距離が、距離731以内になった場合に、HMD101に送信する画像を、低解像度画像から高解像度画像に切替える(変更する)。また、位置701と位置712の距離が、距離731より大きくなった場合に、HMD101に送信する画像を、高解像度画像から低解像度画像に切替える(変更する)。
また、角度732に角度を示す数値が挿入(記憶)されている場合、HMD101の位置701及び姿勢702と、現実物体の位置である位置712を用いて、現実物体(位置712の示す位置)が、HMD101の向いているベクトル(姿勢ベクトル)に向けての所定範囲内(図15における範囲1501)にあるかどうかを、角度732の値を用いてPC100のCPU201が判定し、位置701と位置712の距離が距離731以内であって、且つ、現実物体(位置712の示す位置)が、HMD101の向いているベクトルに向けての所定範囲内にある場合に、HMD101に送信する画像を低解像度画像から高解像度画像に切替える(変更する)。
図15は、HMD101の位置・姿勢(姿勢ベクトル)、現実物体の位置(例えばマーカ102の位置)、HMD101の向いているベクトルに向けての所定範囲(範囲1501)の位置関係の一例を示している。
PC100のCPU201は、HMDの位置701と現実物体の位置712の距離が距離731より大きい場合、又は、位置701と位置712の距離が距離731以内であっても現実物体(位置712の示す位置)が、HMD101の所定範囲内(範囲1501)にない場合には、HMD101に送信する画像を高解像度画像から低解像度画像に切替える(変更する)ものとする。
現実物体(位置712の示す位置)が、HMD101の所定範囲内(範囲1501)にある場合とは、例えば、HMD101の視野(HMD101に設置されたカメラの画角内)に現実物体があるということである。反対に、現実物体(位置712の示す位置)が、HMD101の所定範囲内(範囲1501)にない場合とは、例えば、HMD101の視野(HMD101に設置されたカメラの画角内)に現実物体がないということである。HMD101に送信する画像を高解像度画像から低解像度画像に切替える(変更する)のは、HMD101を装着したユーザが現実物体を視認して、例えば現実物体の詳細な外観を確認したい場合であるため、現実物体がユーザの視野内にない場合には通信負荷・MR画像生成の処理負荷が高解像度画像よりも低い低解像度画像をHMD101に送信し、現実物体がユーザの視野にある場合には低解像度画像に比べて当該現実物体の詳細な画像が確認できる高い解像度画像をHMD101に送信するようにしている。つまり、ユーザが現実物体の詳細を確認しようとしているか否かに応じて低解像度画像と高解像度画像を使い分けることで、不要な通信負荷または処理負荷を低減することができる。
当該現実物体105(マーカ102)がHMD101の所定範囲内(範囲1501)にあるか否かの判定方法については図5の説明で後述する。
以上が図7の、本発明の実施形態における、各種データテーブルの構成の一例についての説明である。尚、後述する図5の説明においては、当該角度732の値が記憶されているものとして説明する。
以下、図4〜図7を用いて、本発明の第1の実施形態について説明する。
次に図4を参照して、本発明の実施形態における、本発明の実施形態における、画像切替処理の概要について説明する。図4は、本発明の実施形態における、画像切替処理の概要を示すフローチャートである。
PC100のCPU201は、HMD101から画像データ(現実画像)を取得する(ステップS401)。
ここでは、HMD101の低解像度カメラと高解像度カメラ104の画像の両方を取得しているものとする。つまり、低解像度カメラ(HMD101)及び高解像度カメラ104は、撮像した画像を、継続してPC100に送信しているものとする。PC100は低解像度カメラと高解像度カメラ104の画像の両方を取得して外部メモリに記憶し(画像記憶手段/記憶手段)、いずれか一方の画像をHMD101に送信する画像として決定して、当該決定した画像を読み出し、HMD101に送信する処置を行うものである。
PC100のCPU201は、カメラ切替処理(使用する画像の切替えを行うか否かの決定・切替処理)を行う(ステップS402)。尚、ここでは、カメラ切替処理で、HMD101と被写体(例えば現実物体)の距離が所定の距離以上接近した場合(所定の距離より短い場合/所定の距離以下の値の場合)、高解像度の画像を使用するものとし、HMD101と被写体(例えば現実物体)の距離が所定の距離より離れている(所定の距離より長い場合/所定の距離以上の値の場合)、低解像度の画像を使用するものとする。カメラ切替処理の詳細については図5の説明で後述する。
次に図5を参照して、本発明の実施形態における、画像切替処理の詳細について説明する。図5は、本発明の実施形態における、画像切替処理の詳細を示すフローチャートである。
PC100のCPU201は、HMD101の位置と姿勢の情報(図7のHMD位置姿勢情報700)を取得(計測)する(ステップS501/撮像位置取得手段)。そして観察対象(被写体/ここでは現実物体105)の位置情報を取得する(ステップS502)。例えば、ここではマーカ102の位置=図7の位置712の情報とし、現実物体105の位置である当該位置712を取得する。
PC100のCPU201は、HMD101の位置から現実物体105の位置(マーカ102の位置)までの距離を算出し(ステップS503/距離特定手段)、カメラを切替える条件(使用する画像を切替える条件)である切替条件730を取得する(ステップS504)。
PC100のCPU201は、HMD101の位置から現実物体105の位置までの距離が、所定の距離(切替条件730における距離731)以内か判定し(ステップS505/HMD101の位置から現実物体105の位置までの距離の値が所定の値に達したか(達しているか)判定し)、所定の距離以内でない場合(ステップS505でNO)、低解像度画像(低解像度カメラから取得した画像)をHMD101に送信する画像として使用することを決定する(ステップS511)。
HMD101の位置から現実物体105の位置までの距離が、所定の距離以内の場合(ステップS505でYES)、処理をステップS506に移行し、HMD101から現実物体の位置712への向きベクトルを算出する(ステップS506)。
そして、HMD101の姿勢ベクトルである姿勢702(図7)の値を取得して、姿勢702の示すベクトルと、HMD101から現実物体の位置712への向きベクトルの成す角度を算出する(ステップS507)。
PC100のCPU201は、HMD101の向いている方向における所定範囲内(範囲1501内)に、現実物体105(マーカ102)が含まれるか判定すべく、当該判定の基準となる角度の情報(図7の角度732)を取得する(ステップS508)。
そして、ステップS507で算出した角度が、角度732(ここでは30°)以内か判定し(ステップS509/範囲判定手段/所定の範囲内か判定し))、30°以内である場合(ステップS509でYES)、現実物体がHMD101の向いている方向の所定範囲(範囲1501)内にあるものと判断し、処理をステップS510に移行する。
ステップS507で算出した角度が、30°以内でない場合(ステップS509でNO)、現実物体がHMD101の向いている方向の(範囲1501)内にない(つまり、ユーザは現実物体の詳細を確認しようとしていない=現実物体の画像を精細に表示する必要がない)ものと判断し、処理をステップS511に移行する。
ステップS510では、PC100のCPU201は、高解像度画像(高解像度カメラ104から取得した画像)をHMD101に送信する画像として使用することを決定する(ステップS510)。
以下、上述した距離・角度の値の具体的な計算方法について記載する。
HMDの位置をHpx,Hpy,Hpz、姿勢(向き/姿勢ベクトル/方向単位ベクトル)をHdx,Hdy,Hdzとする。また、現実物体の位置(現実物体に付加されたマーカ(例えばマーカ102)の位置)をTpx,Tpy,Tpzとする。
また、HMDが現実物体を真正面に見た場合の姿勢(方向単位ベクトル)Dx,Dy,Dzは
で求まる。
HdとDの成す角度θが小さければHMDが正面に近い向きであることが計算できる。例えば、ここで0≦θ≦180とすると
でθを求めることができる。
以上が図5の、本発明の実施形態における、画像切替処理の詳細についての説明である。
これにより、HMDの位置情報を用いて、利用する異なる解像度の画像を、容易に切替え可能な仕組みを提供することができる。
図4の説明に戻る。ステップS402の切替え処理(図5)の結果、使用する画像が低解像度画像か高解像度画像かを判定する(ステップS403)。
使用する画像=高解像度画像の場合、当該高解像度画像をHMD101のディスプレイに表示させるべく、HMD101に送信する(ステップS404)。
使用する画像=低解像度画像の場合、当該低解像度画像を用いて、仮想オブジェクトを重畳したMR画像を生成し(ステップS405)、HMD101のディスプレイに表示させるべく、HMD101に送信する(ステップS406)。
つまり、カメラ切替処理で、HMD101と被写体(例えば現実物体)の距離が所定の距離以上接近した場合(所定の距離より短い場合/所定の距離以下の値の場合)、高解像度の画像をHMD101に送信し、HMD101と被写体(例えば現実物体)の距離が所定の距離より離れている(所定の距離より長い場合/所定の距離以上の値の場合)、低解像度の画像を用いてMR画像を生成し、当該MR画像をHMD101に送信するものである。
例えば、高解像度画像を送信する場合、図6の610のような、現実物体611を撮像した高解像度画像(高解像度カメラ104から取得した画像)をHMD101に送信する。また、低解像度画像を送信する場合、図6の600のような、低解像度画像(HMD101のカメラから取得した画像)に仮想オブジェクトを重畳したMR画像(現実物体601に仮想オブジェクト602を重畳した画像)を、HMD101に送信する。以上が図4の、本発明の実施形態における、本発明の実施形態における、画像切替処理の概要についての説明である。
当該MR画像を生成するか否かの切替え処理により、高解像度画像を用いてMR画像を生成する処理負荷を軽減することができる。
高解像度画像の場合、低解像度画像に比べて画像の送受信自体の通信負荷が増加する。これに追加してMR画像の生成処理(仮想オブジェクトの位置の特定、仮想オブジェクトの読み出し、描画の処理)を行うと更に通信の負荷が増加してしまう。
上述したように、高解像度画像を送信する場合(HMDから所定距離内に現実物体がある場合)には、MR画像の生成処理を行わず、低解像度画像を送信する場合(HMDから所定距離内に現実物体がない場合)にはMR画像の生成処理を行うことで、当該処理負荷を軽減することができる。
また、例えば、HMD101が現実物体に対して至近距離まで接近した場合、カメラで撮像した画像の中に仮想オブジェクトが存在しないことが考えられる。
また、ユーザが現実物体の詳細確認を所望する場合、周辺に仮想オブジェクトが配置されて(描画/重畳)されていると、当該確認の邪魔になってしまうことが考えられる。
上述したように、高解像度画像を送信する場合(HMDから所定距離内に現実物体がある場合)には、MR画像の生成処理を行わず、低解像度画像を送信する場合(HMDから所定距離内に現実物体がない場合)にはMR画像の生成処理を行うことで、ユーザにとって不要な仮想オブジェクトの利用に関する処理(仮想オブジェクトの位置の特定、仮想オブジェクトの読み出し、描画の処理)を省略し、処理負荷を軽減することができる。
また、高解像度画像に対して仮想オブジェクトを重畳しない処理を行う場合、単純にHMD101と現実物体とが所定距離内にある場合に仮想オブジェクトを描画しない現実画像をHMD101に送信するようにすると、例えば、HMD101を装着したユーザの背後に現実物体がある場合であっても、ユーザが見ている全ての仮想オブジェクトが視界から消えてしまい不便である。本発明では、例えば図5のステップS509の判定を行うことで例えばユーザの視界内に現実物体がある場合に仮想オブジェクトを描画しない高解像度画像をHMD101に送信して表示させ、ユーザの視界内に現実物体がない場合には低解像度画像を用いたMR画像をHMD101に送信して表示させることで、当該不便さをユーザに感じさせないように画像の切り替えを行っている。
また、HMD101が近づいたとしても詳細を確認させる必要がない現実物体がMR空間上に存在することが考えられる。
例えば、図20の被写体情報2000の切替フラグ2001のように、現実物体に対して(ここでは現実物体に貼付されたマーカのIDに対して)当該現実物体とHMD101が所定距離内にある場合に低解像度を高解像度画像に切り替えるか、低解像度画像をそのまま利用するかを切り替えるかを設定しておき、当該設定に従って、当該現実物体とHMD101が所定距離内にある場合にいずれの解像度の画像(いずれのカメラから取得した画像)を用いるか決定することで、高解像度画像で詳細を確認させる必要がある現実物体とHMD101が所定距離内にある場合に高解像度画像をHMD101に送信して表示させ、高解像度画像で詳細を確認させる必要がない現実物体とHMD101が所定距離内にある場合には低解像度画像をHMD101に送信して表示させることができる。
尚、図20の各データテーブルは予めPC100の外部メモリに記憶されているものとする。図20のマーカID711、位置712は図7のマーカID711、位置712と同じであるためここでは説明を割愛する。切替フラグ2001=ONの現実物体は、高解像度画像をHMD101に表示させるべき現実物体であり、切替フラグ2001=OFFの現実物体は、高解像度画像をHMD101に表示させるべき現実物体でないものとする。
切替フラグ2001を用いた具体的な処理について説明する。PC100のCPU201は、ステップS505で、HMD101の位置から現実物体105の位置までの距離が、所定の距離(切替条件730における距離731)以内であると判定した場合に、当該現実物体を示すID(マーカID711)に対応する切替フラグ2001を参照して、当該現実物体が、HMD101と近づいたことで高解像度画像をHMD101に表示させるべき現実物体か判定する。
高解像度画像をHMD101に表示させるべき現実物体である(切替フラグ2001=ONである)と判定した場合には処理をステップS506に移行し、高解像度画像をHMD101に表示させるべき現実物体でない(切替フラグ2001=OFFである)と判定した場合には処理をステップS511に移行する。
当該切替フラグ2001を用いることにより、高解像度画像で詳細を確認させる必要がある現実物体とHMD101が所定距離内にある場合に高解像度画像をHMD101に送信して表示させ、高解像度画像で詳細を確認させる必要がない現実物体とHMD101が所定距離内にある場合には低解像度画像をHMD101に送信して表示させることができる。
尚、上述した、MR画像を生成するか否かの切替え処理による、高解像度画像を用いたMR画像生成の処理負荷軽減をしない場合は、例えば、高解像度画像か低解像度画像かに関わらず、MR画像を生成してHMD101に送信するようにしてもよい。
つまり、ステップS510で利用が決定された高解像度画像に対してCG(仮想オブジェクト)を重畳してMR画像を生成し、HMD101に送信するようにしてもよい。この場合、ステップS510、S511で利用が決定された画像を用いて、必ずMR画像を生成してHMD101に送信するため、ステップS403の判定を行わず、ステップS511の処理後に処理をステップS405に移行する。また、ステップS510の処理後に上述した高解像度画像を用いたMR画像の生成後、当該MR画像をHMD101に送信する処理を行うものである。
これにより、高解像度画像であっても、低解像度画像であっても、ユーザにMR画像を提示することができる。
以上、本発明の第1の実施形態について説明した。
次に、本発明の第2の実施形態について説明する。
本発明の第2の実施形態においては、カメラの向いている方向に位置する開閉部の開閉に応じて、高解像度画像と低解像度画像を切替える処理を行う。
例えば、仮想オブジェクトの開閉部が開いた場合(開閉部を開く操作を受け付けた場合/開いている状態の場合)、ユーザが、当該開閉部の先にある画像をより詳細に確認したいと考えられるため、HMD101のディスプレイに表示する画像を高解像度画像に変更すべく、HMD101に高解像度画像を送信する。
仮想オブジェクトの開閉部が閉じた場合(開閉部を閉じる操作を受け付けた場合/閉じられている状態の場合)、ユーザが、当該開閉部の先にある画像の確認を完了した、または、当該開閉部の先にある画像の詳細確認を所望していないと考えられるため、HMD101のディスプレイに表示する画像を低解像度画像に変更すべく、HMD101に低解像度画像を送信する。具体的な処理手順については図8を参照して説明する。
ここで図8を参照して、本発明の第2の実施形態における、画像切替処理の詳細について説明する。図8は本発明の第2の実施形態における、画像切替処理の詳細を示すフローチャートである。
尚、図8の処理は上述した第1の実施形態における図5の処理の代わりに、図4のステップS402のタイミングで、PC100のCPU201により実行される。図4の各処理の内容は、第1の実施形態で説明した内容と同一のため、説明は割愛する。
PC100のCPU201は、HMD101の位置を取得し(位置取得手段)、HMD101の向いている方向(HMD101に設置されたカメラの向いている方向)に開閉部が存在するか判定する(ステップS801)。
当該開閉部が存在するか否かの判定は、例えば、HMD101の位置及び姿勢のベクトルと、開閉部のMR空間上の位置情報を用いて行われる。当該開閉部のMR空間上の位置の情報は、図9のように、PC100の外部メモリに予め記憶されている。当該開閉部が画像中にあるかどうかは、例えば、上述した第1の実施形態における、現実物体の位置(Tpx,Tpy,Tpz)を開閉部位置902に置き換える(開閉部位置=Tpx,Tpy,Tpzとする)ことで特定・判定するものとする。
ここで図9を参照して、本発明の第2の実施形態における、データテーブルの構成の一例について説明する。図9は、本発明の第2の実施形態における、データテーブルの構成の一例を示す図である。
図9のデータテーブル900は、PC100の外部メモリに予め記憶されている、開閉部の位置及び開閉状態(開閉状況)を示すテーブルである。
オブジェクトID901は、開閉部を備える仮想オブジェクト(CGモデル)の識別情報である。開閉部位置902は、開閉部のMR空間上の座標位置を示す。例えば、オブジェクトID901の中で開閉機構を備える部位(開閉機構を構成するCGモデルの集合)の中心位置であるものとする。例えば図14でいう、1401の位置である。図14は、本発明の実施形態における、開閉部の開閉の様子の一例を示す図である。
開閉状態903は、開閉部の開閉状態を示す。openの場合、開閉部が開いている状態、closeの場合、開閉部が閉じている状態を示す。当該開閉状態903のステータスは、例えば、ユーザからの当該開閉部の開閉操作を受け付けた場合に、PC100のCPU201により更新される。
例えば、オブジェクトID901の示す仮想オブジェクトに対しユーザの手が触れた場合に、随時、当該オブジェクトIDに対応する開閉部の開閉状態を切替えるものとする。(開閉部が開いている状態で、仮想オブジェクトにユーザの手が触れた場合は、開閉状態903をopenに、開閉部が閉じている状態で、仮想オブジェクトにユーザの手が触れた場合は、開閉状態903をcloseにする)
尚、ユーザの手が仮想オブジェクトに触れたかどうかの判定技術は既知である。例えば、手の位置を検出するためのマーカを添付した手袋をユーザに装着させて撮像することで、当該マーカの位置・大きさ・角度から手の位置、角度を検出し、当該手の位置が仮想オブジェクトの位置から所定の距離範囲内にあるかどうかを判断し、所定の距離範囲内にある場合に手が仮想オブジェクトに触れていると判断するものである。既知の技術であるため、ここでは説明を割愛する。
尚、本発明の実施形態においては、PC100にCPU201が、HMD101又は高解像度カメラ104から取得する現実画像とHMD101の位置情報を用いて、当該判断を行うものとする。以上が図9の、本発明の第2の実施形態における、データテーブルの構成の一例についての説明である。
図8の説明に戻る。PC100のCPU201は、ステップS801で、HMD101の向いている方向に開閉部が存在しない(検出されなかった)と判定した場合(ステップS801でNO)、低解像度画像をHMD101に送信する画像として使用することを決定する(ステップS804/解像度決定)。
HMD101の向いている方向に開閉部が存在すると判定した場合(ステップS801でYES)、当該開閉部の開閉状態903を参照し、当該開閉部が開いているか否かを判定する(ステップS802/開閉判定手段)。開閉部が閉じられている場合(ステップS802でNO)、処理をステップS804に移行する。
開閉部が開かれている場合(ステップS802でYES)、PC100のCPU201は、高解像度画像をHMD101に送信する画像として使用することを決定する(ステップS803/解像度決定)。そして、処理を図4のステップS403に移行する。ステップS403以降の処理は第1の実施形態と同様であるため説明は割愛する。
これにより、開閉部の開閉状態に応じて、利用する異なる解像度の画像を、容易に切替え可能な仕組みを提供することができる。
尚、上述した実施形態においては、ステップS403の判定処理により、MR画像を生成するか否かを決定し、HMD101に、低解像度画像にCGを描画したMR画像、又はCGを描画しない現実画像としての高解像度画像を送信しているが、当該処理は、画像の送信方法の1手法である。よって、高解像度画像か低解像度画像かに関わらず、MR画像を生成してHMD101に送信するようにしてもよい。
尚、開いていたとしても高解像度画像を表示させる必要がない開閉部がMR空間上に存在することが考えられる。例えば、開閉部の先に現実物体が配置されていない場合や、配置されている現実物体がユーザにとって外観を詳細に確認したい現実物体ではない場合である。
例えば、図20のデータテーブル2010の切替フラグ2011のように、開閉部に対して(データテーブル2010内の各開閉部のデータに対して)当該開閉部を検出した場合に低解像度を高解像度画像に切り替えるか、低解像度画像をそのまま利用するかを切り替えるかを設定しておき、当該設定に従っていずれの解像度の画像(いずれのカメラから取得した画像)を用いるか決定することで、高解像度画像を表示させる必要がある開閉部が開いている場合に高解像度画像をHMD101に送信して表示させ、高解像度画像を表示させる必要がない開閉部については例え開いていたとしても低解像度画像をHMD101に送信して表示させる処理をすることができる。
尚、図20の各データテーブルは予めPC100の外部メモリに記憶されているものとする。図20のオブジェクトID901、開閉部位置902、開閉状態903は図9のオブジェクトID901、開閉部位置902、開閉状態903と同じであるためここでは説明を割愛する。
切替フラグ2011=ONの開閉部は、高解像度画像を表示させる必要がある開閉部であり、切替フラグ2011=OFFの開閉部は、高解像度画像を表示させる必要がない開閉部であるものとする。
切替フラグ2011を用いた具体的な処理について説明する。PC100のCPU201は、ステップS801で開閉部を検出したと判定した場合(ステップS801でYES)、当該検出した開閉部に対応する切替フラグ2011を参照して、当該開閉部が、開いている場合に高解像度画像を表示させる必要がある開閉部か判定する。
高解像度画像を表示させる必要がある開閉部である(切替フラグ2001=ONである)と判定した場合には処理をステップS802に移行し、例え開いていたとしても高解像度画像を表示させる必要がない開閉部である(切替フラグ2001=OFFである)と判定した場合には処理をステップS5804に移行する。
当該切替フラグ2011を用いることにより、開いている場合に高解像度画像を表示させる必要がある開閉部を検出した場合には高解像度画像をHMD101に送信して表示させ、え開いていたとしても高解像度画像を表示させる必要がない開閉部を検出した場合には低解像度画像をHMD101に送信して表示させることができる。
以上が本発明の第2の実施形態の説明である。
次に、本発明の第3の実施形態について説明する。
本発明の第3の実施形態においては、カメラの向いている所定範囲(範囲1501)内に位置する開閉部の開閉と、当該開閉部の先の情報に応じて、高解像度画像と低解像度画像を切替える処理を行う。
例えば、仮想オブジェクトの開閉部が開いた場合(開閉部を開く操作を受け付けた場合/開いている状態の場合)で、当該開閉部の先に現実物体が存在する場合に、ユーザが、当該開閉部の先にある現実物体の画像をより詳細に確認したいと考えられるため、HMD101のディスプレイに表示する画像を高解像度画像に変更すべく、HMD101に高解像度画像を送信する。
仮想オブジェクトの開閉部が閉じた場合(開閉部を閉じる操作を受け付けた場合/閉じられている状態の場合)、又は、開閉部は開いているが当該開閉部の先に現実物体が存在しない場合に、ユーザが、当該開閉部の先にある現実物体の画像確認を完了した、または、当該開閉部の先にある現実物体の画像の詳細確認を所望していないと考えられるため、HMD101のディスプレイに表示する画像を低解像度画像に変更すべく、HMD101に低解像度画像を送信する。具体的な処理手順については図10を参照して説明する。
ここで図10を参照して、本発明の第3の実施形態における、画像切替処理の詳細について説明する。図10は、本発明の第3の実施形態における、画像切替処理の詳細を示すフローチャートである。
尚、図10の処理は上述した第1の実施形態における図5の処理の代わりに、図4のステップS402のタイミングで、PC100のCPU201により実行される。
図4の各処理の内容は、第1の実施形態で説明した内容と同一のため、説明は割愛する。また、図10のステップS1001及び1002の処理は、第2の実施形態における図8のステップS801、S802の処理と同じであるため、説明は割愛する。
PC100のCPU201は、ステップS1002で、HMD101の向いている方向にある開閉部が開かれていると判定した場合、当該開閉部より先の所定の距離範囲内に、現実物体が存在するか否かを判定する(ステップS1003/存在判定手段)。
当該開閉部より先の所定の距離範囲内に現実物体が存在するか否かの判定は、例えば、HMD101の位置及び開閉部のMR空間上の位置、図11の物体間距離1100の距離(所定の距離範囲)の情報を用いて行われる。
図11の物体間距離は、PC100の外部メモリに予め記憶されている、HMD101から見て、開閉部より先(奥/向こう側)の所定の距離範囲内に、現実物体が存在するか否かの判定に用いられる、当該所定の距離範囲の情報である。
つまり、図16でいう、範囲1501内のライン1601からライン1602までの間の範囲内に、現実物体が存在するか判定する。図16は、HMD101の位置・姿勢(姿勢ベクトル)、現実物体の位置(例えばマーカ102の位置)、HMD101の向いているベクトルに向けての所定範囲(範囲1501)、HMD101から見て開閉部より先の所定距離範囲(物体間距離1100によって示されるライン1601からライン1602の間の、範囲1501に含まれる範囲)の関係の一例を示している。
図10の説明に戻る。
PC100のCPU201は、開閉部より先の所定の距離範囲内に現実物体(例えばマーカ102)が存在しないと判定した場合(ステップS1003でNO)、処理をステップS1005に移行し、低解像度画像(低解像度カメラから取得した画像)をHMD101に送信する画像として使用することを決定する(ステップS1005/解像度決定)。
開閉部より先の所定の距離範囲内に現実物体(例えばマーカ102)が存在すると判定した場合(ステップS1003でYES)、PC100のCPU201は、高解像度画像(高解像度カメラ104から取得した画像)をHMD101に送信する画像として使用することを決定する(ステップS1004/解像度決定)。
その後、処理を図4のステップS403に移行する。ステップS403以降の処理は上述したため、ここでは説明を割愛する。以上が図10の、本発明の第3の実施形態における、画像切替処理の詳細についての説明である。
次に、本発明の第4の実施形態について説明する。
本発明の第4の実施形態においては、HMDと現実物体が所定距離と開閉部の開閉状態に応じて、高解像度画像と低解像度画像を切替える処理を行う。つまり、上述した第1の実施形態と、第2の実施形態又は第3の実施形態の処理を組み合わせた実施形態である。
例えば、HMD101を装着したユーザが現実物体を確認しようと開閉部を開けて、現実物体の近くに移動した場合に、現実物体の詳細を確認させるため、高解像度画像に切り替える。
以下、図19を参照して、本発明の第4の実施形態における、画像切替処理の詳細について説明する。図19においては、一例として第1の実施形態(図5)の処理と、第3の実施形態(図10)の処理とを組み合わせた処理の流れを説明する。
図19の処理は、図4のステップS402において、第1の実施形態における図5の処理の代わりにPC100のCPU201によって実行される。
図19におけるステップS501〜S509の処理は図5のステップS501〜S509の処理と同じであるため説明は省略する。
PC100のCPU201は、ステップS509において、ステップS507で算出した角度が角度732(ここでは30°)以内か判定し(ステップS509/範囲判定手段/所定の範囲内か判定し))、30°以内である場合(ステップS509でYES)、現実物体がHMD101の向いている方向の所定範囲(範囲1501)内にあるものと判断して処理をステップS1001に移行する。30°以内でない場合(ステップS509でNO)、現実物体がHMD101の向いている方向の所定範囲(範囲1501)内にないものと判断して処理をステップS1005に移行する。
ステップS1001〜S1005の処理は図10のステップS1001〜S1005の処理と同じであるため説明は省略する。以上が図19の説明である。
尚、第1の実施形態と第2の実施形態を組み合わせた処理を行う場合は、図19のステップS1003をスキップして、ステップS1002でHMD101の向いている方向にある開閉部が開かれていると判定した場合に(ステップS1002でYES)処理をステップS1004に移行するものとする。
本発明の第4の実施形態によれば、HMDと現実物体が所定距離と開閉部の開閉状態に応じて、高解像度画像と低解像度画像を切替える処理をすることができる。
また、図19のステップS1003の処理を実行することで、HMDと現実物体が所定距離と、開閉部の開閉状態と、開閉部と現実物体の位置関係に応じて、高解像度画像と低解像度画像を切替える処理をすることができる。
尚、第4の実施形態においても、例えば第1の実施形態及び第2の実施形態で上述したタイミングで、図20の切替フラグ2001、切替フラグ2011を用いた高解像度画像と低解像度画像の切り替え処理を行うことが可能である。
切替フラグ2001に基づく切り替え処理を優先するか切替フラグ2011に基づく切り替え処理を優先するかは、PC100の表示画面に表示される不図示の設定画面において自由に設定・変更可能であるものとする。
以上が本発明の第4の実施形態の説明である。
尚、上述した実施形態においては、ステップS403の判定処理により、MR画像を生成するか否かを決定し、HMD101に、低解像度画像にCGを描画したMR画像、又はCGを描画しない現実画像としての高解像度画像を送信しているが、当該処理は、画像の送信方法の1手法である。よって、高解像度画像か低解像度画像かに関わらず、MR画像を生成してHMD101に送信するようにしてもよい。
これにより、カメラの向いている方向の所定範囲(範囲1501)内に位置する開閉部の開閉と、当該開閉部の先の情報に応じて、高解像度画像と低解像度画像を切替える処理を行う。
尚、上述した実施形態を組み合わせて、利用する異なる解像度の画像を切替えるようにしてもよい。
例えば、HMD101から現実物体までの所定の距離が所定距離以内であって(第1の実施形態)、且つ、検出された開閉部が開かれている場合に(第2の実施形態)、利用する画像を高解像度画像に切替えるようにしてもよい。この場合、例えば、図5のステップS509でYESの場合に、処理を図8のステップS801に移行し、ステップS509でNOの場合には、処理をステップS804に移行するようにする。図8の処理終了後、処理を図4のステップS403に移行する。当該処理はPC100のCPU201が実行する。
また、各実施形態においては、範囲1501から現実物体又は開閉部が外れた場合に(HMD101が範囲1501に現実物体又は開閉部を含めない方向に回転・移動した場合に)、低解像度画像を使用することを決定し、MR画像を生成してHMD101に送信するものとしたが、例えば、当該HMD101の位置・方向に関わらず、高解像度画像の画像への切替え(ステップS510、S803、S1004)が行われてから、所定の時間が経過した場合に、当該利用する画像を低解像度画像に切替えるようにしてもよい。
こうすることで、高解像度画像をHMD101に送信し続けることによるPC100の処理負荷や、通信負荷、又は/及び、高解像度画像をディスプレイに表示し続けることによるHMD101の処理負荷を軽減することができる。各実施形態の組み合わせは、上述した組み合わせに限るものではない。
また、本発明の実施形態においては、現実物体を囲う外装が仮想オブジェクト(仮想オブジェクト103)であるものとしたが、例えば、当該現実物体を囲う外装自体が現実物体である場合でも、各実施形態における処理と同様の処理を適用するようにしてもよい。
外装が現実物体である場合、図12、図13に示すように、現実物体である外装板に二次元マーカを貼付し、前述のマーカ102の位置の特定方法と同様の方法で、当該二次元マーカの位置(例えば、当該二次元マーカの位置=外装板の位置とする)を特定することができる。
また、図12に示すように、開閉部の表面と開閉部近くの外装に二次元マーカを貼付して、当該2つのマーカを対応付けてPC100の外部メモリに記憶しておき、カメラから取得した画像において、当該2つのマーカのうち1しか検出されない場合には、開閉部が開いていると判定し、当該2つのマーカが2つとも検出される場合には、開閉部が閉じていると判定するものである。
また、図13に示すように、開閉部の表面と裏面に二次元マーカを貼付して、カメラから取得した画像において、裏面の二次元マーカが検出されている場合には、開閉部が開いていると判定し、表面の二次元マーカが検出されている場合には、開閉部が閉じていると判定するようにしてもよい。開閉部の開閉の判定方法はこれらに限るものではない。
また、上述した各実施形態においては、低解像度画像を利用する場合(HMDから所定距離内に現実物体がない場合/開閉部が閉じている場合/開閉部が開いていない、又は開いているが開閉部より先に現実物体が存在しない場合)に、MR画像を生成する(仮想オブジェクトを描画/重畳する)処理を行い、高解像度画像を利用する場合(HMDから所定距離内に現実物体がある場合/開閉部が開いている場合/開閉部が開いており、開閉部より先に現実物体が存在する場合)に、MR画像を生成しない(仮想オブジェクトを描画/重畳しない)処理を行ったが、例えば、高解像度画像を利用する場合であっても、仮想オブジェクトを透明化(例えば半透明化/図17に図示)してMR画像を生成し、HMD101に送信するようにしてもよい。この場合、仮想オブジェクトの透過率はPC100の外部メモリに予め記憶されており、ステップS403で高解像度画像を利用すると判定された場合に、当該透過率の情報に従って描画対象の仮想オブジェクトを透過して、高解像度画像に重畳し、MR画像の生成を行う。そして、HMD101に当該MR画像を生成する。
こうすることで、現実物体の確認を阻害することなく、MR画像を提供することができる。
また、第2の実施形態・第3の実施形態において、開閉部がオブジェクトである場合に、高解像度画像を利用するにあたり当該開閉部(仮想オブジェクト)を描画せずにHMD101に画像を送信してしまうと、ユーザは開閉部(仮想オブジェクト)が見えなくなってしまうため、当該仮想オブジェクトに触れることで開閉部を閉じることができなくなってしまう。
上述したように、高解像度画像であっても仮想オブジェクトを半透明化したMR画像を生成してHMDに送信することで、ユーザに仮想オブジェクトを視認させ、仮想オブジェクトに対する操作を可能にすることができる。
また、ステップS404の前に、図18に示すように、現実物体から所定距離1811以内にある仮想オブジェクトを透過したMR画像を生成してHMD101に送信するようにしてもよい。具体的には、画像の最前面のレイヤに、当該所定距離1811を半径とする、仮想オブジェクト(CG)を描画しない領域を規定する球状のマスクオブジェクトを、マーカ102(現実物体)の位置を中心として配置して、MR画像を生成する。
当該所定距離1811の情報は、予めPC100の外部メモリに記憶されており、当該マスクオブジェクトの生成及び配置、MR画像の生成処理は、当該所定距離1811の情報を用いて、PC100のCPU201が行うものとする。
これにより、ユーザが詳細に確認したい現実物体の周辺に位置するCGのみを表示しないようにすることができ、当該現実物体の確認を容易にすることができる。
また、上述した実施形態においては、現実物体までの距離が短い場合(所定の値以内である場合)に、現実物体を精細に表示するため、高解像度画像をHMDに送信するものとしたが、例えば、反対に、現実物体がHMDの近くにある場合には画像の解像度が低くとも現実物体を確認可能だが、現実物体がHMDから遠い位置にある場合画像の解像度が低いと当該現実物体を視認できない、また、詳細に確認できない場合が考えられる。
よって、例えば、上述の実施形態における、図5のステップS510の処理とステップS511の処理を入れ替えて、それぞれの処理のタイミングで、PC100のCPU201が、現実物体がHMD101の位置から所定距離以内にあり、且つ、範囲1501内にある場合に、低解像度画像を、HMD101に送信するために利用する画像として決定し、現実物体がHMD101の位置から所定距離以内にない場合には、高解像度画像を、HMD101に送信するために利用する画像として決定するようにしてもよい。
これにより、遠方の被写体の画像を精細に表示させることができる。
以上説明したように、本発明によれば、HMDの位置情報を用いて、利用する異なる解像度の画像を、容易に切替え可能な仕組みを提供することができる。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
上述した本発明の実施形態においては、HMD101に高解像度カメラ104が1つ設置されているものとしたが、複数(例えば2つ)の高解像度カメラ104をHMD101に設置するようにしてもよい。
また、HMD101は、GOOGLE GLASS(登録商標)のようなシースルー型の端末であってもよい(本発明におけるHMD101は、シースルー型の端末も含むものとする)。
例えば、図1に示す各種端末、マーカ等の構成は一例であり、用途や目的に応じて様々な構成例がある。例えば、赤外線カメラ(不図示)をHMD101の周辺に設置して、HMD101に設置された光マーカ(オプティカルマーカ)を撮影し、撮影した結果取得したHMD101の位置姿勢の情報(座標の情報)をPC100に送信することでHMD101の位置・姿勢の情報を特定するようにしてもよい。
また、磁場を発生させるトランスミッター(不図示)を用いて、HMD101の位置や姿勢を特定することも可能である。この場合、トランスミッターは磁場を発生し、発生した磁場をHMD101に備えられたレシーバが受信する。受信した磁場に関する情報をPC100に送信すると、磁場の強さからHMD101の位置や姿勢をPC100が特定するものとする。これにより、マーカが検出できない場合であってもHMDの位置・姿勢を特定可能である。
このように、HMD101の位置や姿勢を特定するためには、マーカやセンサ(赤外線、磁場)を用いる場合がある。HMD101の位置や姿勢を特定できれば、どのような形態でも構わない。
また、上述した実施形態においては、ステップS505、ステップS509、S1003において、判定対象の距離が“所定の値以内であるか”を判定しているが、例えば、“所定の値より小さいか”判定するようにしてもよい。例えば、所定の値より小さい場合=ステップS505でYES、ステップS509でYES、ステップS1003でYES、であるものとし、判定対象の距離が所定の値以上の場合=ステップS505でNO、ステップS509でNO、ステップS1003でNO、であるものとする。
本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。