以下、図面を参照しながら、本発明の実施形態の一例について説明する。
図1は、本発明の実施形態におけるMRシステムのシステム構成を示す図である。MRシステムは、複合現実感(Mixed Reality、以下、MR)をユーザに提供するシステムである。MRシステムは、情報処理装置101と、HMD102と、光学式センサ104とを含む。情報処理装置101にHMD102と光学式センサ104とが接続されており、情報処理装置101はこれらと相互にデータ通信可能に有線または無線で接続されている。尚、図1のシステム上に接続される各種端末の構成は一例であり、用途や目的に応じて様々な構成例がある。
情報処理装置101は、パーソナルコンピュータのような汎用的な装置である。情報処理装置101は、HMD102で撮像された現実空間の画像(以下、現実空間画像)と、情報処理装置101で生成された仮想空間の画像(以下、仮想空間画像)とを重畳した画像(以下、複合現実画像)を生成し、HMD102に送信する。MRの技術に関しては従来技術を用いるため、詳細な説明は省略する。
HMD102は、いわゆるヘッドマウントディスプレイである。HMD102は、ユーザの頭部に装着するディスプレイ装置であり、右目用と左目用のビデオカメラと、右目用と左目用のディスプレイを備えている。HMD102は、HMD102のビデオカメラで撮像された現実空間画像を情報処理装置101に送信する。そして、情報処理装置101から送信されてきた複合現実画像を受信し、ディスプレイに表示する。更に、右目用と左目用のビデオカメラとディスプレイを設けているので、視差によって立体感を得ることができる。尚、HMD102で撮像する現実空間画像、及び表示する複合現実画像は、動画形式が望ましいが、所定の間隔で撮像された画像であってもよい。
光学式センサ104は、現実空間を撮像し、光学式マーカ103の位置及び姿勢を特定する撮像装置である。本実施形態では、光学式センサ104はHMD102が備える光学式マーカ103を検出し、HMD102の位置や姿勢を検出する。光学式マーカ103は、入射してきた光を入射してきた方向に対して反射する反射マーカを用いる。また、どのような状況下でも光学式マーカ103を検出できるように、光学式センサ104を複数設置することが望ましい。尚、本実施形態では光学式センサ104とHMD102が備える光学式マーカ103を用いてHMD102の位置・姿勢を取得するが、HMD102の位置及び姿勢が検出できればどのような形態でも構わない。例えば、磁気センサを用いてもよいし、HMD102で撮像された映像を解析して位置及び姿勢を特定してもよい。
図2は、情報処理装置101のハードウェア構成を示す図である。尚、図2の情報処理装置101のハードウェアの構成は一例であり、用途や目的に応じて様々な構成例がある。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムや、各種装置の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。ROM202、外部メモリ211、RAM203は記憶手段として動作する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボードやマウス等のポインティングデバイス(入力デバイス210)からの入力を制御する。
ビデオコントローラ(VC)206は、HMD102が備える右目・左目ディスプレイ222やディスプレイ212等の表示器への表示を制御する。右目・左目ディスプレイ222に対しては、例えば外部出力端子(例えば、Digital Visual Interface)を用いて出力される。また、右目・左目ディスプレイ222は、右目用のディスプレイと左目用のディスプレイとから構成されている。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。また、通信I/Fコントローラ208は、ギガビットイーサネット(登録商標)等を通じて光学式センサ104との通信も制御する。
汎用バス209は、HMD102の右目・左目ビデオカメラ221からの映像を取り込むために使用される。右目・左目ビデオカメラ221からは、外部入力端子(例えば、IEEE1394端子)を用いて入力される。右目・左目ビデオカメラ221は、右目用のビデオカメラと左目用のビデオカメラとから構成されている。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ上での表示を可能としている。また、CPU201は、ディスプレイ上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明の情報処理装置101が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
図3は、情報処理装置101の機能構成を示す図である。尚、図3の情報処理装置101の機能構成は一例であり、用途や目的に応じて様々な構成例がある。
情報処理装置101は機能部として、通信制御部301、位置・姿勢取得部302、現実空間画像取得部303、二次元マーカ検出部304、仮想空間管理部305、接触検知部306、対応付け管理部307、仮想空間画像取得部308、複合現実画像生成部309、表示制御部310を備えている。
通信制御部301は、情報処理装置101と通信可能なHMD102と光学式センサ104との各種情報の送受信を行う機能部である。通信制御部301は、前述したビデオコントローラ206、通信I/Fコントローラ208、汎用バス209等を通じてこれらの装置と情報の送受信を行う。
位置・姿勢取得部302は、光学式マーカ103を備える装置の現実空間における位置及び姿勢を示す情報を光学式センサ104から取得する機能部である。本実施形態では、HMD102が光学式マーカ103を備えているため、位置・姿勢取得部302はHMD102の位置及び姿勢(HMD102を装着しているユーザの位置及び姿勢。以下同じ。)を示す情報を取得する。また、位置・姿勢取得部302は、現実空間画像取得部303で右目・左目ビデオカメラ221から取得した右目用の現実空間画像と左目用の現実空間画像とを用いて、三角測量等の方法により、現実空間の物体の位置及び姿勢を特定することもできる。
現実空間画像取得部303は、HMD102の右目・左目ビデオカメラ221から現実空間画像を取得する機能部である。
二次元マーカ検出部304は、現実空間画像取得部303で取得した現実空間画像から、二次元マーカを検出する機能部である。現実空間画像から二次元マーカの特徴量を抽出し、更に当該二次元マーカの大きさや傾きを検出する。そして、検出した大きさや傾き、更にはHMD102の位置及び姿勢を用いて、現実空間における二次元マーカの位置及び姿勢を特定する。
仮想空間管理部305は、情報処理装置101において仮想空間を生成し、当該仮想空間に三次元モデルから成るオブジェクトを配置する機能部である。仮想空間管理部305で使用する各オブジェクトは、情報処理装置101の外部メモリ211等に記憶されており、これらを適宜読み出して仮想空間を生成する。
接触検知部306は、仮想空間に配置されたオブジェクト同士の接触や現実空間の物体とオブジェクトとの接触を検知する機能部である。仮想空間に配置されたオブジェクト同士の接触は、当該オブジェクトの位置及び姿勢に応じてオブジェクト同士が接触しているか否かを検知する。また、現実物体とオブジェクトとの接触を検知する場合には、当該現実物体の位置及び姿勢と、当該オブジェクトの位置及び姿勢とを用いて、接触しているか否かを検知する。
対応付け管理部307は、二次元マーカとオブジェクトとの対応付けを管理する機能部である。二次元マーカと当該二次元マーカがHMD102で撮像されたときに表示されるオブジェクトとは、後述する二次元マーカ情報テーブル500(図5参照)で対応づいている。この対応関係を削除したり、または対応付けたりすることができる。
仮想空間画像取得部308は、情報処理装置101で生成する仮想空間の画像を取得する機能部である。仮想空間画像取得部308が仮想空間の画像を取得する場合には、位置・姿勢取得部302で取得したHMD102の位置及び姿勢に基づいて仮想空間上の視点を決定し、当該視点から見た場合の仮想空間画像を生成し、これを取得する。
複合現実画像生成部309は、現実空間画像取得部303で取得した現実空間画像に仮想空間画像取得部308で取得した仮想空間画像を重畳することにより、複合現実画像を生成する機能部である。
表示制御部310は、情報処理装置101に接続されたHMD102の右目・左目ディスプレイ222や情報処理装置101に接続されたディスプレイ212における各種情報の表示制御を行う機能部である。
次に、本発明の実施形態における情報処理装置101によって行われる一連の処理について、図4に示すフローチャートを用いて説明する。
まずステップS401では、情報処理装置101のCPU201は、HMD102の右目・左目ビデオカメラ221から現実空間画像を取得し、RAM203に記憶する(現実空間画像取得手段)。更にステップS402では、情報処理装置101のCPU201は、HMD102の位置及び姿勢を取得し、同じくRAM203に記憶する。前述した通り、HMD102が備える光学式マーカ103を光学式センサ104が検知することで特定した位置及び姿勢を、当該光学式センサ104から取得する。
ステップS403では、情報処理装置101のCPU201は、ステップS401で取得した現実空間画像をRAM203から読み出し、当該現実空間画像から二次元マーカを抽出する。二次元マーカの抽出方法は従来技術であるが、例えば現実空間画像に対してパターン認識等で二次元マーカが備える特徴的な図形等を抽出すればよい。
ステップS404では、情報処理装置101のCPU201は、ステップS403で抽出した二次元マーカに対応するオブジェクトが存在するか否かを判定する。二次元マーカごとに特徴点が存在する。この特徴点に応じて二次元マーカそれぞれを識別し、識別した二次元マーカに対応するオブジェクトの有無を判定する。より具体的には、二次元マーカの特徴点が、二次元マーカ情報テーブル500(図5参照)の二次元マーカ特徴点502に格納されている。よって、ステップS403で抽出した二次元マーカの特徴点と、二次元マーカ特徴点502とを比較し、一致するレコード(以下、二次元マーカ情報)を特定する。そして、特定した二次元マーカ情報にオブジェクトID503が格納されているか否かを判定すればよい。オブジェクトID503が格納されていれば、ステップS403で抽出した二次元マーカに対応するオブジェクトが存在するということになる。
二次元マーカ情報テーブル500(図5参照)は、情報処理装置101の外部メモリ211等に記憶されているテーブルである。二次元マーカ情報テーブル500は、二次元マーカID501、二次元マーカ特徴点502、オブジェクトID503、オブジェクト保存場所504から構成される。二次元マーカID501は、二次元マーカごとに割り振られる一意な識別情報である。二次元マーカ特徴点502は、当該二次元マーカが示す図形等の特徴点を示す情報である。オブジェクトID503は、当該二次元マーカに対応するオブジェクトを識別するための情報である。オブジェクト保存場所504は、当該二次元マーカに対応するオブジェクトが保存されているファイルパスを示す。二次元マーカ情報テーブル500に格納されている情報は一例であり、これ以外の情報が格納されてもよい。
ステップS404に説明を戻す。ステップS403で抽出した二次元マーカに対応するオブジェクトが存在すると判定した場合には、ステップS405に処理を進める。ステップS403で抽出した二次元マーカに対応するオブジェクトが存在しないと判定した場合には、ステップS408に処理を進める。
ステップS405では、情報処理装置101のCPU201は、ステップS403で抽出した二次元マーカに対応するオブジェクトを外部メモリ211等から取得する。二次元マーカに対応するオブジェクトは、当該二次元マーカに対応する二次元マーカ情報のオブジェクト保存場所504が示す場所に格納されている。
ステップS406では、情報処理装置101のCPU201は、二次元マーカの位置及び姿勢を特定する(位置姿勢特定手段)。二次元マーカの位置及び姿勢は、HMD102の右目・左目ビデオカメラ221で撮像した右目用の現実空間画像と左目用の現実空間画像と、更にステップS402で取得したHMD102の位置及び姿勢とを用いて、三角測量等の手法によって算出する。二次元マーカの位置及び姿勢の特定方法は従来技術であるので、詳細な説明は省略する。
ステップS407では、情報処理装置101のCPU201は、ステップS405で取得したオブジェクトを仮想空間に配置する(三次元モデル配置手段)。ステップS406で二次元マーカの位置及び姿勢を特定しているので、この位置及び姿勢を用いて仮想空間上のどの位置にオブジェクトを配置するのかを決定する。そして、決定した位置及び姿勢に当該オブジェクトを配置する。
例えば、図6は二次元マーカが検出された場合に、当該二次元マーカに対応するオブジェクトが配置される一例を示している。現実空間に配置される物体である現実物体601に二次元マーカを付しておき、これをHMD102の右目・左目ビデオカメラ221で撮像すると、当該二次元マーカに対応するオブジェクト602を取得し、当該二次元マーカの位置及び姿勢に応じてオブジェクト602を重畳する。その結果、重畳例603に示すような形態となる。
このように、二次元マーカに対応するオブジェクトは、現実空間に存在する二次元マーカの位置及び姿勢に応じて、仮想空間上のどの位置及び姿勢で配置されるのかが決定される。そのため、二次元マーカを移動すれば、それに伴って対応するオブジェクトも移動することになる。
ステップS408では、情報処理装置101のCPU201は、仮想空間に配置されたオブジェクトの動作を図7に示す操作デバイスによって制御するための処理を実行する。オブジェクト制御処理の詳細は、後述する図8に示す。
図7の操作デバイス701は、現実物体に接触しているか否かを検知可能なデバイスである。操作デバイス701は、現実物体またはオブジェクトを挟み込むことが可能であり、挟み込んだ際に操作デバイス701の内側に備えられた接触センサ702が反応することで、情報処理装置101に操作デバイス701が現実物体と接触しているか否かを示す信号を送信する。操作デバイス701は情報処理装置101の汎用バス209等に接続することで利用する。尚、接触センサ702は、物体に触れているか否かが通知できればどのようなセンサでもよい。
ステップS409では、情報処理装置101のCPU201は、仮想空間を撮像することにより仮想空間画像を取得し、RAM203等に記憶する(仮想空間画像生成手段)。より具体的には、まずステップS402で取得したHMD102の位置及び姿勢をRAM203等から読み出し、当該位置及び姿勢に対応する仮想空間上の位置及び姿勢を特定する。そして、特定した仮想空間上の位置及び姿勢で仮想空間上に仮想のカメラ(視点)を設置し、当該カメラにより仮想空間を撮像する。これにより仮想空間画像を生成する。尚、HMD102の右目・左目ディスプレイ222のそれぞれに表示するために右目用の仮想空間画像と左目用の仮想空間画像の2枚を取得する。
ステップS410では、情報処理装置101のCPU201は、ステップS401で取得した現実空間画像とステップS409で取得した仮想空間画像とをRAM203等から読み出す。そして、当該現実空間画像に当該仮想空間画像を重畳し、複合現実画像を生成する(複合現実画像生成手段)。生成した複合現実画像はRAM203等に記憶する。尚、前述した通り、現実空間画像と仮想空間画像とは右目用と左目用の2枚ずつがRAM203等に記憶されているので、右目用の現実空間画像に右目用の仮想空間画像を重畳し、左目用の現実空間画像に左目用の仮想空間画像を重畳する。
ステップS411では、情報処理装置101のCPU201は、ステップS410で生成した複合現実画像をRAM203等から読み出し、ビデオコントローラ206を通じてHMD102の右目・左目ディスプレイ222に表示する。RAM203等に記憶された複合現実画像は、右目用と左目用の2枚が存在する。そのため、右目用の複合現実画像を右目・左目ディスプレイ222の右目のディスプレイに表示するよう制御し、左目用の複合現実画像を右目・左目ディスプレイ222の左目のディスプレイに表示するよう制御する。
ステップS412では、情報処理装置101のCPU201は、HMD102を装着しているユーザに複合現実感を提示する処理(前述したステップS401乃至ステップS411)の終了指示があったか否かを判定する。例えば、前述したステップS401乃至ステップS411の処理を実行する情報処理装置101のアプリケーションの停止指示や終了指示があったか否かを判定する。終了指示があったと判定した場合には、本一連の処理を終了する。終了指示があったと判定しなかった場合、すなわち終了指示がなかった場合にはステップS401に処理を戻し、終了指示があるまでステップS401乃至ステップS411を繰り返す。
次に、オブジェクト制御処理について、図8に示すフローチャートを用いて説明する。
ステップS801では、情報処理装置101のCPU201は、操作デバイス701からの信号を取得する。そして、ステップS802では、情報処理装置101のCPU201は、ステップS801で受信した信号に応じて、操作デバイス701が現実物体と接触しているか否かを判定する。本実施形態では特に、操作デバイス701に備える接触センサ702の両方から接触している旨を示す信号が送られてきていれば、現実物体と接触していると判定する。これは、操作デバイス701が現実物体やオブジェクトを挟み込む仕様であり、片方だけが接触していても挟み込んだと言えないからである。操作デバイス701が現実物体と接触していると判定した場合には、オブジェクト制御処理を終了する。操作デバイス701が現実物体と接触していないと判定した場合には、ステップS803に処理を進める。
ステップS803では、情報処理装置101のCPU201は、ステップS401で取得した現実空間画像をRAM203から取得し、操作デバイス701といずれかのオブジェクトとが接触しているか否かを解析する。いずれかのオブジェクトとは、仮想空間に配置されているオブジェクトを示す。右目・左目ビデオカメラ221から取得した右目用の現実空間画像と左目用の現実空間画像とHMD102の位置及び姿勢とを用いて三角測量等の手法により操作デバイス701の位置及び姿勢を特定し、対象のオブジェクトの位置及び姿勢と比較することで操作デバイス701と接触しているか否かを解析する。特に操作デバイス701の接触センサ702の近傍を黄緑や赤といった識別が容易な色で着色しておけば、より精度よく解析することができる。
ステップS804では、情報処理装置101のCPU201は、ステップS803で解析した結果、操作デバイス701といずれかのオブジェクトとが接触しているか否かを判定する。操作デバイス701といずれかのオブジェクトとが接触していると判定した場合には、ステップS805に処理を進める。操作デバイス701といずれのオブジェクトにも接触していないと判定した場合には、オブジェクト制御処理を終了する。
ステップS805では、情報処理装置101のCPU201は、ステップS804で接触していると判定したオブジェクトが二次元マーカに対応するオブジェクトであるか否かを判定する。接触していると判定したオブジェクトのオブジェクトIDがオブジェクトID503に含まれるか否かに応じて判定すればよい。二次元マーカに対応するオブジェクトであると判定した場合には、ステップS806に処理を進める。二次元マーカに対応するオブジェクトでないと判定した場合には、ステップS808に処理を進める。
ステップS806では、情報処理装置101のCPU201は、接触したオブジェクトに対応する二次元マーカの二次元マーカ情報を特定する。接触したオブジェクトのオブジェクトIDを持つ二次元マーカ情報を二次元マーカ情報テーブル500から検索して、特定すればよい。
ステップS807では、情報処理装置101のCPU201は、ステップS806で特定した二次元マーカ情報に含まれるオブジェクトID503とオブジェクト保存場所504とに格納されている情報を削除する(対応関係削除手段)。
ステップS807の処理について図9と図10を用いて説明する。図9は、操作デバイス701を用いてオブジェクト602を挟み込んでいる様子を示す図である。現実物体601に付された二次元マーカに対応するオブジェクト602が表示されており、操作デバイス701が現実物体601には接触しないで、オブジェクト602だけに接触させている状態である。二次元マーカに対応するオブジェクト602は、通常現実物体601よりも多少大きめに作成されている。よって、現実物体601には接触せずにオブジェクト602だけを接触することができる。
このオブジェクト602を挟み込んだまま(指定したまま)、操作デバイス701を移動させた図が図10である。従来であれば、二次元マーカに対応するオブジェクトは二次元マーカを移動させることで追従して移動させることができたが、本実施形態では操作デバイス701と接触しているオブジェクトは二次元マーカに対応するオブジェクトであっても移動させることができる。この処理を実行するために、ステップS807で説明した通り、二次元マーカとそれに対応するオブジェクトとの対応付けを解除(削除)しなければならない。そこで、当該二次元マーカの二次元マーカ情報が含むオブジェクトID503とオブジェクト保存場所504をそれぞれ「NULL」とし、何も対応付いていない状態にする。つまり、図10の下部にある二次元マーカ情報が示すような状態にする。こうすれば、前述したステップS405で二次元マーカに対応するオブジェクトが取得されなくなる。
図8の説明に戻る。ステップS808では、情報処理装置101のCPU201は、操作デバイス701の位置及び姿勢を特定する。ステップS803で特定されているので、これを用いればよい。
ステップS809では、情報処理装置101のCPU201は、ステップS808で特定した操作デバイス701の位置及び姿勢を用いて、接触したオブジェクトを配置する位置及び姿勢を決定し、当該位置及び姿勢で当該オブジェクトを仮想空間に配置する(仮想空間上の位置及び姿勢を変更する)(位置姿勢変更手段)。こうすることにより、二次元マーカの位置及び姿勢に応じて配置されていたオブジェクトは二次元マーカの位置及び姿勢には関わらない位置及び姿勢を持つことになる。
ステップS810では、情報処理装置101のCPU201は、操作デバイス701によって指定されたオブジェクトが、現実空間にある二次元マーカと重畳する位置であるか否かを判定する(判定手段)。ステップS809で設定されたオブジェクトの位置と、現実空間画像から特定される二次元マーカの位置とを用いて、オブジェクトが二次元マーカと重畳する位置にあるか否かを判定する。二次元マーカの位置を特定する方法は、前述した通りであるので説明は省略する。操作デバイス701によって指定されたオブジェクトが、現実空間にある二次元マーカと重畳する位置であると判定した場合、ステップS811に処理を進める。操作デバイス701によって指定されたオブジェクトが、現実空間にある二次元マーカと重畳する位置でないと判定した場合、オブジェクト制御処理を終了する。
ステップS811では、情報処理装置101のCPU201は、操作デバイス701によって指定させているオブジェクトが重畳する二次元マーカの二次元マーカ情報を特定する。二次元マーカから二次元マーカ情報を特定する方法は、ステップS404で説明した通りである。
ステップS812では、情報処理装置101のCPU201は、ステップS806で特定した二次元マーカ情報のオブジェクトID503とオブジェクト保存場所504に、操作デバイス701によって指定されているオブジェクトのオブジェクトIDとオブジェクトの保存場所とを格納する(対応付け手段)。そして、当該オブジェクトの位置及び姿勢を削除する。こうすることで、再度二次元マーカにオブジェクトを対応づけることができる。すなわち、図11に示すように、操作デバイス701によって指定しているオブジェクト602を二次元マーカが付された現実物体601に重畳させると、当該オブジェクト602と二次元マーカとが対応づく。つまり、図11にも示すようにオブジェクトID503とオブジェクト保存場所504に当該オブジェクト602のオブジェクトIDとオブジェクト602の保存場所を格納することで、対応付けを行う。尚、本実施形態の説明では、同じオブジェクトを再度対応付けしているが、まったく別のオブジェクトであってもよい。
以上のように、操作デバイス701を用いることで、二次元マーカに対応するオブジェクトの対応付けを解除したり、二次元マーカにオブジェクトを対応付けたりすることが可能となる。
次に別の実施形態として、マウス等の入力デバイス210を用いる第2の実施形態について説明をする。
第2の実施形態では図12に示すような入力デバイスを用いる。この入力デバイス210には、HMD102と同様に光学式センサ1201が備えられている。つまり、この光学式センサ1201によって現実空間における入力デバイス210の位置及び姿勢が特定できる。前述した実施形態の場合、現実空間画像を解析することによって操作デバイス701の位置及び姿勢を特定していたが、光学式センサ1201を用いることにより、より精度高く位置及び姿勢を特定することができるようになる。尚、第2の実施形態ではマウスを用いた例として説明をするが、情報処理装置101に信号を通知可能なボタンを備えるデバイスであれば、なんでもよい。以下、この入力デバイス210を用いた第2の実施形態について説明する。
第2の実施形態のシステム構成、ハードウェア構成、機能構成は前述した実施形態と同様であるので説明は省略する。また、前述した実施形態の図4に示すフローチャートも同様であるので説明は省略する。
次に、第2の実施形態におけるオブジェクト制御処理について、図13を用いて説明する。
ステップS1301では、情報処理装置101のCPU201は、マウス等の入力デバイス210の位置及び姿勢を取得する。前述した通り、入力デバイス210には光学式マーカが備えられているので、ステップS402と同様に位置及び姿勢を特定する。
ステップS1302では、情報処理装置101のCPU201は、ステップS1301で取得した位置及び姿勢を用いて、入力デバイス210に重畳させるような形態で他のオブジェクトとの接触判定用のオブジェクト(以下、カーソルオブジェクト)を配置する。図14に示すように、入力デバイス210に重畳するようカーソルオブジェクト1401を配置する。入力デバイス210を移動させれば、当該カーソルオブジェクト1401も追従してくる。
ステップS1303では、情報処理装置101のCPU201は、マウス等の入力デバイス210でクリックされることにより発生する信号を取得する。そして、ステップS1304では、情報処理装置101のCPU201は、ステップS1303で取得した信号により、マウス等の入力デバイス210によりクリック操作がなされたか否かを判定する。クリック操作がなされたと判定した場合には、ステップS1305に処理を進める。クリック操作がなされなかったと判定した場合には、オブジェクト制御処理を終了する。
ステップS1305では、情報処理装置101のCPU201は、ステップS1302で配置したカーソルオブジェクトが仮想空間上に配置された他のオブジェクトと接触しているか否かを判定する。カーソルオブジェクトの位置及び姿勢と、対象のオブジェクトの位置及び姿勢とを比較することで、接触しているか否かを判定すればよい。ステップS1302で配置したカーソルオブジェクトが仮想空間上に配置された他のオブジェクトと接触していると判定した場合、ステップS1307に処理を進める。ステップS1302で配置したカーソルオブジェクトが仮想空間上に配置された他のオブジェクトと接触していないと判定した場合に、ステップS1309に処理を進める。
ステップS1307では、情報処理装置101のCPU201は、接触したオブジェクトに対応する二次元マーカの二次元マーカ情報を特定する。接触したオブジェクトのオブジェクトIDを持つ二次元マーカ情報を二次元マーカ情報テーブル500から検索して、特定すればよい。
ステップS1308では、情報処理装置101のCPU201は、ステップS1307で特定した二次元マーカ情報に含まれるオブジェクトID503とオブジェクト保存場所504とに格納されている情報を削除する。
ステップS1308の処理について図15を用いて説明する。オブジェクト602にカーソルオブジェクトを接触させてクリックし、入力デバイス210を移動した図が図15である。前述した実施形態と同様に第2の実施形態でも入力デバイス210のカーソルオブジェクトと接触しているオブジェクトは二次元マーカに対応するオブジェクトであっても移動させることができる。この処理を実行するために、ステップS1308で説明した通り、二次元マーカとそれに対応するオブジェクトとの対応付けを解除(削除)しなければならない。そこで、当該二次元マーカの二次元マーカ情報が含むオブジェクトID503とオブジェクト保存場所504をそれぞれ「NULL」とし、何も対応付いていない状態にする。つまり、図15の下部にある二次元マーカ情報が示すような状態にする。こうすれば、前述したステップS405で二次元マーカに対応するオブジェクトが取得されなくなる。
ステップS1309では、情報処理装置101のCPU201は、ステップS1301で特定した入力デバイス210の位置及び姿勢を用いて、接触したオブジェクトを配置する位置及び姿勢を決定し、当該位置及び姿勢で当該オブジェクトを仮想空間に配置する(仮想空間上を移動させる)。こうすることにより、二次元マーカの位置及び姿勢に応じて配置されていたオブジェクトは二次元マーカの位置及び姿勢には関わらない位置及び姿勢を持つことになる。
ステップS1310では、情報処理装置101のCPU201は、入力デバイス210によって指定されたオブジェクトが、現実空間にある二次元マーカと重畳する位置であるか否かを判定する。ステップS1309で設定されたオブジェクトの位置と、現実空間画像から特定される二次元マーカの位置とを用いて、オブジェクトが二次元マーカと重畳する位置にあるか否かを判定する。二次元マーカの位置を特定する方法は、前述した通りであるので説明は省略する。入力デバイス210によって指定されたオブジェクトが、現実空間にある二次元マーカと重畳する位置であると判定した場合、ステップS1311に処理を進める。入力デバイス210によって指定されたオブジェクトが、現実空間にある二次元マーカと重畳する位置でないと判定した場合、オブジェクト制御処理を終了する。
ステップS1311では、情報処理装置101のCPU201は、入力デバイス210によって指定させているオブジェクトが重畳する二次元マーカの二次元マーカ情報を特定する。二次元マーカから二次元マーカ情報を特定する方法は、ステップS404で説明した通りである。
ステップS1312では、情報処理装置101のCPU201は、ステップS1307で特定した二次元マーカ情報のオブジェクトID503とオブジェクト保存場所504に、操作デバイス701によって指定されているオブジェクトのオブジェクトIDとオブジェクトの保存場所とを格納する。そして、当該オブジェクトの位置及び姿勢を削除する。こうすることで、再度二次元マーカにオブジェクトを対応づけることができる。すなわち、図16に示すように、入力デバイス210によって指定しているオブジェクト602を二次元マーカが付された現実物体601に重畳させると、当該オブジェクト602と二次元マーカとが対応づく。つまり、図16にも示すようにオブジェクトID503とオブジェクト保存場所504に当該オブジェクト602のオブジェクトIDとオブジェクト602の保存場所を格納することで、対応付けを行う。尚、本実施形態の説明では、同じオブジェクトを再度対応付けしているが、まったく別のオブジェクトであってもよい。
以上のように、入力デバイス210を用いることで、二次元マーカに対応するオブジェクトの対応付けを解除したり、二次元マーカにオブジェクトを対応付けたりすることが可能となる。
以上説明したように、本実施形態によれば、複合現実感を提示する仕組みにおいて、三次元モデルを表示可能な二次元マーカの位置及び姿勢に関わらず、当該三次元モデルの位置及び姿勢を変更することの可能な効果を奏する。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。