図1を参照して、本発明の実施形態における情報処理システムの構成の一例について説明する。
図1に示すように、本発明における情報処理システムの各種装置はネットワーク150を介して通信可能に接続されている。例えばPC100は、HMD101(HMD101A~HMD101Cの総称)と通信可能に接続されている。HMD101は、頭部装着型の表示装置(ヘッドマウントディスプレイ)である。
PC100には、HMD101により撮影される現実画像に重畳する3次元モデル(CGモデル/仮想オブジェクト/仮想物体)が記憶されている。
また、PC100は、自機の管理するHMD101(図1におけるHMD101A~101C)より現実画像を取得して、記憶部に記憶する。また、PC100はHMD101の位置姿勢を特定し、記憶する。HMD101の位置姿勢の特定方法は、特許文献1に記載されている、HMD101の撮影した現実画像中の二次元マーカを用いて特定可能である。また、特許文献2に記載されている、センサ(図1における光学センサ104)がHMD101に設置された光学式マーカの位置姿勢をHMD101の位置姿勢として検出し、それをPC100が当該センサで検出された位置姿勢の値を取得することで特定可能である。本実施形態においては、特許文献2に記載の方法用いてHMD101の位置姿勢を特定するものとする。
PC100では、HMD101の位置姿勢と、記憶部に記憶されている3次元モデル及び3次元モデルの位置姿勢の情報を用いて、現実画像に3次元モデルを重畳した複合現実画像(MR画像)を生成する。そして、当該複合現実画像をHMD101のディスプレイに表示させるべく、HMD101に送信する。HMD101は受信した複合現実画像をディスプレイに表示する。
また、PC100は、自機と通信可能に接続され管理されている各HMD101の視野角(視界の広さ)を示す値を記憶している。本実施形態においては、各HMD101の視野角は一律であり、HMD101の正面方向を基準に、水平方向60度・垂直方向40度の視野角であるものとする。以上が図1の説明である。
次に図2を参照して、本発明の実施形態における、各種装置のハードウェア構成の一例について説明する。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステム(OS)、その他各種装置の実行する機能を実現するために必要な各種プログラムが記憶されている。
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
本発明のPC100が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
入力コントローラ(入力C)205は、キーボードやマウス等のポインティングデバイス(入力デバイス209)からの入力を制御する。
また、入力デバイス209がタッチパネルの場合、ユーザがタッチパネルに表示されたアイコンやカーソルやボタンに合わせて押下(指等でタッチ)することにより、各種の指示を行うことができることとする。なお、タッチパネルは、マルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネルであってもよいこととする。
ビデオコントローラ(VC)206は、HMD101が備える右目・左目ディスプレイ222等の表示器への表示を制御する。右目・左目ディスプレイ222に対しては、例えば外部出力端子(例えば、Digital Visual Interface)を用いて出力される。また、右目・左目ディスプレイ222は、右目用のディスプレイと左目用のディスプレイとから構成されている。また、入力コントローラ(入力C)205は、PC100の備えるディスプレイ210(CRTディスプレイ等)の表示器への表示を制御する。なお、図2では、表示器はCRTディスプレイだけでなく、液晶ディスプレイ等の他の表示器であってもよい。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。また、通信I/Fコントローラ208は、ギガビットイーサネット(登録商標)等を通じて光学センサ104との通信も制御する。
汎用バス212は、HMD101の右目・左目ビデオカメラ221からの映像を取り込むために使用される。右目・左目ビデオカメラ221からは、外部入力端子(例えば、IEEE1394端子)を用いて入力される。右目・左目ビデオカメラ221は、右目用のビデオカメラと左目用のビデオカメラとから構成されている。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ上での表示を可能としている。また、CPU201は、ディスプレイ上の不図示のマウスカーソル等でのユーザ指示を可能とする。以上が図2の説明である。
次に図3を参照して、本発明の実施形態における各種装置の機能構成の一例について説明する。
撮影画像送信部301は、カメラで撮影した撮影画像(現実画像)をPC100に送信する。
撮影画像受信部311は、撮影画像を受信して随時RAM上に記憶する。位置姿勢記憶部312は、光学センサにより取得したHMD101の位置姿勢を記憶する。
MR画像生成部313は、現実に仮想物体の画像を重畳した重畳画像であるMR画像を生成する。MR画像送信部314は、生成したMR画像をHMD101において表示させるべく出力する。
共有画像記憶部315は、HMD101に設置されている不図示のレリーズボタンの押下を受け付けることにより、HMD101で表示中のMR画像を、レリーズボタン押下時のHMD101の位置姿勢と対応付けて、共有画像として外部メモリに記憶する。レリーズボタンの押下=表示中のMR画像の撮影及び保存指示である。
また、HMD101の視野内に(視野角の中に)他のHMD101が位置し、当該他のHMD101の仮想空間上の視点位置が現実空間のHMD101の位置と同じ仮想空間上の位置にない場合、つまり、視点位置を仮想空間上で移動している場合、当該視点位置を移動中のHMD101にPC100が送信している複合現実画像(動画)を、現在の当該他のHMD101の位置姿勢と対応付けて共有画像として外部メモリに記憶する。
現実空間位置判定部316は、あるHMD101と他のHMD101の現実空間上の位置が所定距離以内か判定する。つまり、当該判定により、あるHMD101から現実空間内において所定距離内に位置する他のHMD101を特定する処理部である。
仮想空間位置判定部317は、あるHMD101と他のHMD101の仮想空間上の視点位置が所定距離以内か判定する。つまり、当該判定により、あるHMD101から仮想空間内において所定距離内に位置する他のHMD101を特定する処理部である。また、あるHMD101と他のHMD101の視点位置が異なる仮想空間に位置するか判定する機能を備える。つまり当該判定機能により、視点位置が、あるHMD101と異なる仮想空間に位置する他のHMD101を特定することが可能である。
決定部318は、現実空間位置判定部316の判定結果に応じて、HMD101の視点位置を移動することを決定する。また、移動先の仮想空間上の位置を決定する。例えば、現実空間位置判定部316において、現実空間上でHMD101Aと所定距離内にある他のHMD101Bが特定された場合に、当該他のHMD101Bの仮想空間上の視点位置に、HMD101Aの視点位置を移動(変更)することを決定する。
MR画像生成部は、移動後の視点位置から見た仮想空間上のCG画像と、HMD101のカメラで撮像された現実画像とを合成してMR画像を生成する。MR画像送信部314は、視点位置移動後のMR画像をHMD101に送信する。
MR画像受信部303は、当該MR画像を受信し、表示部304は当該MR画像を表示する。
なお、本実施形態においては、311~318の各機能部の備える機能をPC100が備えているが、例えばこれらの構成をHMD101が備えるよう構成してもよいものとする。以上が図3の説明である。
次に図4を参照して、本発明の実施形態における、各種装置のモジュール構成の一例について説明する。
PC100は、オペレーティングシステム401(OS)、グラフィックエンジン402、複合現実感プラットフォーム403(MRプラットフォームともいう)、複合現実感アプリケーション404(MRアプリケーションやビューアアプリケーションともいう)で構成され、CPU201により制御されている。
オペレーティングシステム401は、HMD101の入出力を制御しカメラ221から入力インターフェースを介して得られた現実画像を複合現実感プラットフォーム403へ受け渡す。またグラフィックエンジン402で描画された複合現実画像を、出力インターフェースを介して、ディスプレイ222へ出力する。
グラフィックエンジン402は、外部メモリ211に記憶されている3次元モデルから描画する画像を生成し、現実画像に重畳し、合成する。描画に利用するエンジンは、例えば、OpenGLやDirectXなどの広く利用されているグラフィックエンジンでも、独自に開発したグラフィックエンジンでもよい。なお、本実施形態ではグラフィックライブラリとしてOpenGLを利用するものとする。
複合現実感プラットフォーム403は、光学センサ104からHMDに付与された複数の光マーカの位置姿勢を受信することでHMD101の位置姿勢を特定し、現実空間と仮想空間の位置合わせを行う。
なお、位置姿勢や位置合わせの技術は、既知の技術として開示されている、特開2002-32784、特開2006-072903、特開2007-166427等を用いて実現することが可能である。
なお、二次元マーカを使用せずに、HMD101に位置センサを備え、この位置センサを用いて三角測量により計測された位置をもとに、HMD101の位置や姿勢を特定して実現することも可能である。
複合現実感アプリケーション404は、複合現実感プラットフォーム403からHMD101の位置姿勢、3次元モデルの形状の情報、位置姿勢の情報を受け付け、グラフィックエンジン402に対して、3次元モデルの描画命令を発行する。この時、OpenGLのAPIを用いて、描画する3次元モデルの識別情報、位置姿勢の情報を設定した命令を発行する。以上が図4の説明である。
次に図5を参照して、本発明の実施形態における複合現実画像の生成及び表示処理について説明する。
PC100のCPU201は、ユーザ操作に応じて複合現実アプリケーション起動し、HMD101に指示を出してHMD101を起動する(ステップS501)。PC100のCPU201は、HMD101のカメラ221の機能を用いて現実画像の撮影を開始する(ステップS502)。HMD101は、撮影処理によって取得した現実画像をPC100に送信する(ステップS503)。
当該複合現実アプリケーションの起動及び撮影開始は、HMD101の起動操作(例えばHMD101に設置された不図示の起動ボタンの押下受付)を検知したことに応じて実行・開始することも可能である。
PC100のCPU201はHMD101より現実画像を受信し(ステップS504)、受信した現実画像を外部メモリ211に記憶する(ステップS505)。例えば、図6の現実画像テーブル630に示すように、現実画像の送信元のHMD101の識別情報であるHMD ID631と、現実画像632とを対応付けて記憶する。
PC100のCPU201は、光学センサ104からHMD101の位置姿勢を取得して(ステップS506)、外部メモリ211に記憶する(ステップS507)。例えば、図6のHMD情報610に示すように、HMD101の識別情報であるHMD ID611と、当該HMDの位置612(X,Y,Z座標)、姿勢(方向613及び角度614)を記憶する。
方向613及び角度614の例を図8に示す。方向613は、HMD101の視線方向である。方向613は、図8の800に示すように、3次元空間のXYZ方向の軸に基づく球801上の、視線方向と交差する点のXYZ座標によって示される。
角度614は、図8の810に示すような、HMD101の左右の傾きの角度である。HMD101が床面と平行な状態を角度614=0度とする。HMD101を装着した状態で頭部を左に傾けると+n度となり、HMD101を装着した状態で頭部を右に傾けると-n度となる。
また、ステップS507において、PC100のCPU201は、HMD101の属する(位置する)フロア(階)とルーム(部屋)の識別情報(ID)を特定して、フロア615、ルーム616にそれぞれ記憶する。フロア615、ルーム616はHMD101を装着したユーザの体験状況の属性情報である。
なお、フロア及びルーム自体の位置の情報は、例えば図6の660に示す形式でPC100の外部メモリ211に予め記憶されている。フロア661はフロアのIDである。ルーム662はフロア661に属する(位置する)部屋のIDである。
位置663は、ルーム662の示すルームの頂点位置を複数記憶している。当該頂点を、当該頂点が記憶されている順につなぐことでルームの形状(外枠)が特定可能である。つまり、位置663は、ルームの位置及び形状の情報である。当該形状(外枠)によって特定される、当該ルーム形状の内側の位置=ルームの中である。
PC100のCPU201は、HMD101の位置(X,Y,Z座標)とルームの位置(X,Y,Z座標)を用いて、HMD101が現在どのルームの中にあるかを特定し、特定されたHMD101が位置するルーム及びそのルームのフロアのIDをフロア615、ルーム616にそれぞれ記憶するものである。
PC100のCPU201は、外部メモリ211から仮想物体(ここでは3Dモデル)の情報を取得し、HMD101から受信した現実画像に重畳して複合現実画像を生成して(ステップS508)、HMD101に送信する(ステップS509)。
3Dモデルの情報は、例えば図6のモデル情報620に示す情報である(仮想オブジェクト記憶手段に該当)。モデル情報620は、予めPC100の外部メモリ211に記憶されている情報である。モデルID621は3Dモデルの識別情報である。
モデル名622は、3Dモデルのファイル名である。ファイルパス623は、ファイルが記憶されている場所を示す。位置624、姿勢(方向625、角度626)は、3Dモデルの仮想空間上の位置姿勢を示す。
PC100のCPU201は、HMDの現在の位置姿勢から、HMD101と同じ画角(視野角)を持つカメラが、モデル情報620の位置姿勢の3Dモデルを撮影した場合の、当該3Dモデルの画像を描画データ640として生成する。一例として、レンダリング済みのモデル画像とする。
そして、当該描画データを現実画像と合成することで、図6のMR画像テーブル650に示すMR画像(複合現実画像)を生成する。MR画像は、現実に仮想物体の画像を重畳した重畳画像である。
図7に現実空間及び仮想空間におけるカメラの様子と、MR画像の一例を示す。図7において、700は現実空間、710は仮想空間、720は現実空間と仮想空間を複合した複合現実空間(MR空間)である。
現実空間700と仮想空間710は、例えば同じ形状・同じ大きさの空間であり、703を原点として位置合わせがされているものとする。つまり、現実空間における位置(XYZ座標)及び姿勢と、仮想空間における位置姿勢は同じである。
現実空間700においてHMD101の位置姿勢が光学センサ104によって特定される。702は現実物体であり、700においてはHMD101のカメラ装置によって現実物体702の一部が撮影されている。撮影された現実画像(図6の632)の一例を701に示す。
仮想空間710において、仮想カメラ713は、HMD101の現実空間上の位置姿勢と同じ仮想空間上の位置姿勢で、仮想空間上に仮想的に配置される。仮想カメラはHMD101ごとに対応づけられて存在する。
HMD101のカメラ装置と仮想カメラ713の画角は同じである。PC100のCPU201は、仮想カメラ713の位置姿勢を、HMD101の現実空間上の位置姿勢に連動させて変更する。
仮想カメラ713は、仮想空間710の画像(動画)を撮影している。例えば仮想空間710には仮想物体712が配置されており、HMD101と同じ位置姿勢の仮想カメラ713は、仮想物体712を撮影している。711は仮想カメラ713が仮想空間710を撮影した仮想画像であり、711における712は、描画データ640の一例である。
PC100のCPU201は、現実画像701と仮想画像711(仮想画像711の中の描画データ)を重畳して、MR画像721(複合現実画像652)を生成して記憶する。
また、MR画像テーブル650の、MR画像を生成するために用いた現実画像の送信元のHMD(HMD ID651)と対応付けて記憶する。その後、HMD ID651の示すHMD101に、複合現実画像652を送信する(ステップS509)。
HMD101は、PC100から複合現実画像を受信し(ステップS510)、表示画面に表示する(ステップS511)。HMD101及びPC100は、複合現実アプリケーションの終了指示を受け付けるまで、ステップS502~S511の処理を繰り返し実行する。
つまり、HMD情報610におけるHMD101の位置姿勢の情報及び描画データ640は光学センサ104から位置姿勢が取得される都度更新される。また、現実画像632、複合現実画像652は、HMD101から新たな現実画像(動画の1フレーム)が受信される都度更新される。以上が図5の説明である。
次に図9を参照して、本発明の実施形態における、撮影画像の記録処理の流れについて説明する。ここでいう撮影画像の記録処理とは、撮影指示を受け付けた時点のHMD101の位置姿勢と撮影画像を記憶する処理である。
ステップS901では、PC100のCPU201は指示を受け付け、受け付けた指示がHMD101に表示中のMR画像の撮影・保存指示か判定する。
例えば、HMD101に設置された不図示のレリーズボタンの押下を受け付けた旨の情報をHMD101から受け付け、PC100が当該レリーズボタンの押下を検知した場合に、HMD101に表示中の画像の保存指示を受け付けたと判定する。ここでいう表示中の画像とはサーバ200によって生成されたMR画像である。
ここでは、画像の保存の操作(レリーズボタンの押下)を受け付けたのはHMD101Cであるものとする。
画像の保存指示を受け付けた場合、PC100のCPU201は、ステップS902で保存指示がされた時点でHMD101に表示していた画像を、保存指示がされた時点のHMD101の位置姿勢と対応付けて記憶する。
保存指示された画像は、共有画像情報1300に記憶されることで他のHMD101からも参照可能となる。つまり、複数のHMD101によって共有される共有画像として記憶される(撮影画像記憶手段に該当)。
例えば、図13の共有画像情報1300に撮影した画像の情報を記憶する。画像ID1301には、ステップS902で画像の保存指示がされた時点でHMD101に表示していたMR画像を記憶する。撮影者1302には、画像の保存指示がされた、画像ID1301の画像を表示していたHMDのIDを記憶する。また、画像の撮影日時を、撮影日時1306に記憶する。
ステップS903で、PC100のCPU201は、当該画像と対応付けて、HMD101の画像撮影当初の位置姿勢を、共有画像情報1300の1303~1305に記憶する。
位置1303には、画像の保存指示がされた時点の、撮影者1302の示すHMD101の位置を記憶する。
方向1304、角度1305には、画像の保存指示がされた時点の、撮影者1302の示すHMD101の向いている方向と、角度を記憶する。
また、ステップ904で、PC100のCPU201は、画像の保存指示がされた時点の、HMD101の位置するフロアと部屋の識別情報(ID)を、フロア1307、ルーム1308に記憶する。以上が図9の説明である。
以下、本発明について、まずHMD101Cが共有画像を撮像した時点の視点位置にHMD101Bの視点位置が移動され、その後、HMD101AとHMD101Bが所定距離内に入ることでHMD101Aの視点位置をHMD101Bの視点位置(HMD101Cが共有画像を撮像した時点の視点位置)に移動するものとして説明する。
次に図10を参照して、本発明の実施形態における処理の概要について説明する。
ステップS1001で、PC100のCPU201は、HMD101に共有画像を表示する表示処理を行う。当該表示処理の詳細については図11の説明で後述する。
ステップS1002で、PC100のCPU201は、視点位置の移動先決定の処理を実行する。当該移動先決定処理の詳細については図18の説明で後述する。
ステップS1003で、PC100のCPU201は、ステップS1002で決定された位置に、HMD101の仮想空間上の視点位置を移動する処理を行う。視点位置の移動処理の詳細は図12の説明で後述する。
ステップS1004で、PC100のCPU201は、HMD101がステップS1003で視点位置を移動している(視点位置が、現実空間と同じ仮想空間上の位置とは異なる、例えば他のHMD101の仮想空間上の視点位置に位置する)ことを、HMD101のHMD IDと対応付けて記憶する。
例えば、外部メモリ211に記憶されている図13の視点移動情報1330の中の対象のHMD101のHMDID1331に対応する視点移動フラグ1332を1に変更する。
視点移動フラグ1332=1の場合、HMD ID1331のHMD101は、当該HMD101の現実空間上の位置と異なる仮想空間上の位置(例えば過去に共有画像が撮像された時点の他のHMD101の仮想空間上の視点位置)に視点位置が変更されている状態を示す。
視点移動フラグ1332=0の場合、HMD ID1331のHMD101は、当該HMD101の現実空間上の位置と同じ仮想空間上の位置に視点位置が位置している状態を示す。視点位置の移動が終了された場合、視点位置をHMD101の現実空間上の位置と同じ仮想空間上に位置に戻し、フラグを0に変更するものとする。以上が図10の説明である。
次に図11を参照して、本発明の実施形態における、共有画像の表示処理の詳細について説明する。
共有画像の表示処理は、外部メモリに記憶されているHMD(HMDを装着したユーザ)の過去の位置を選択及び識別可能に表示する処理である。
ステップS1101で、PC100のCPU201は、共有画像の表示指示を受け付ける。例えば、HMD101に設置された不図示のボタンの押下を受け付け、当該ボタンが押下された旨の情報をHMD101がPC100に送信し、PC100がこれを検知することで共有画像の表示指示を受け付けるものとする。
PC100のCPU201は、共有画像の表示指示を受け付けた場合にステップS1101の処理を行う。
ステップS1101で、PC100のCPU201は、現在のHMD101のユーザの体験状況の属性を取得する。具体的には、ボタンが押下されたHMD101の現在のフロア615、ルーム616を取得する。
PC100のCPU201は、図13の1300に記憶された共有画像数分、ステップS1102~S1106の処理を繰り返す。つまり、全ての共有画像に対してステップS1102、S1103、S1104、S1105又はステップS1102、S1103、S1106の処理を適用する。
ステップS1102で、PC100のCPU201は、ステップS1103以下の処理を未適用の(未処理の)共有画像を1300から1つ取得し、処理中の画像としてRAM上に記憶する。
ステップS1103で、PC100のCPU201は、ステップS1102で取得した画像の属性と、ステップS1101で取得したHMD101の体験状況の属性とが一致するか判定する。ここでは、取得した共有画像とHMDが同じルームに位置しているか判定するものとする。
ステップS1103で2つのデータの属性が一致している(共有画像とHMDとが同じルームに位置している)と判定された場合、処理をステップS1104に移行する。ステップS1103で2つのデータの属性が一致していない(共有画像とHMDとが同じルームに位置していない)と判定された場合、処理をステップS1106に移行する。
ステップS1104で、PC100のCPU201は、HMD101と同じルームに位置すると判定された共有画像を、HMD101の位置姿勢に応じてHMD101に表示する共有画像として決定し、RAM上に記憶する。
ステップS1105で、PC100のCPU201は、外部メモリに予め記憶されているテンプレートの仮想オブジェクト(テンプレートモデル情報1310に図示)を取得する。
テンプレートの仮想オブジェクトの構成は、モデル情報620の構成と同じである。但し、まだ仮想空間に配置されていない状態のであり、モデルIDや位置姿勢の情報は未挿入の状態である。
ステップS1105で、PC100のCPU201は、追加表示モデル情報1320のテーブルを外部メモリに生成して、取得したテンプレートの仮想オブジェクトをコピーし、追加・記憶する。つまり、表示対象の仮想オブジェクトを生成する。
追加表示モデル情報1320は、HMD101ごと(ユーザごと)に、HMD101のIDと対応付けて作成・記憶・管理する。追加表示モデル情報1320は、モデル情報620に加えて、当該追加表示モデル情報1320に対応するHMD101(共有画像の表示指示がされたHMD101)のMR画像の生成に用いる仮想オブジェクトを記憶するテーブルである。他のHMD101のMR画像の生成には用いない。
なお、追加表示モデル情報1320におけるモデルIDには、追加表示モデル情報1320へのデータの追加時に新規の値を付与する。また、モデルの姿勢は一律同じ値を設定する。
PC100のCPU201は、ステップS1104でRAMに記憶した共有画像の位置を取得し、追加表示モデル情報1320に追加した仮想オブジェクトの位置として記憶する。そして、画像1321に、ステップS1102で取得した共有画像を記憶する。つまり、共有画像の仮想空間上の位置を決定する。
画像1321は、当該追加表示モデル情報1320に追加した仮想オブジェクトにテクスチャ画像として貼り付ける画像を記憶する記憶部である。
ステップS1106で、PC100のCPU201は、HMD101と同じルームに位置しないと判定された共有画像を、HMD101の共有画像一覧表示部に表示する共有画像として決定し、RAM上に記憶する。
PC100のCPU201は、全ての共有画像に対するS1102~S1106の処理が完了した場合には処理をステップS1107に移行する。
ステップS1107で、PC100のCPU201は、他のHMD101でリアルタイムに表示されている(他のHMD101に送信中の)動画を共有画像として特定し、選択可能に表示することを決定する決定処理を実行する。図18の処理については、視点位置の移動処理後に、図17の説明として後述する。
ステップS1108で、PC100のCPU201は、モデル情報620及び追加表示モデル情報1320を用いて、ステップS1101で共有画像の表示指示がされたHMD101のMR画像の生成・表示更新を行う。具体的には、図5のステップS506以降の処理を順次行い、ステップS508において、モデル情報620だけでなく、追加表示モデル情報1320の仮想オブジェクトも用いて描画データの生成及びHMD101の画面における表示位置(描画位置)を決定してMR画像を生成し、ステップS511まで処理を実行する。
また、ステップS1106で記憶された、HMD101と同じルームに位置しないと判定された共有画像があるか判定し、ある場合には、当該HMD101と同じルームに位置しないと判定された共有画像をHMD101に一覧表示する(一覧表示部に各共有画像を配置して表示する)。
以降、共有画像の表示を終了する指示を受け付けるまで、共有画像の一覧、又は/及び共有画像を貼り付けた仮想オブジェクトを用いたMR画像の生成・表示処理を継続する。以上が図11の説明である。
HMD101と同じルームの共有画像のみ記憶されている場合の共有画像の表示(共有画像がテクスチャとして貼り付けられた仮想オブジェクトの表示)の一例を、図15の1500に示す。テンプレートの仮想オブジェクトは、1505に示す共有画像の撮像位置(具体的には撮影位置から高さ方向において床に向けて垂直に伸ばした線と床が交差する点)を示す部分と、共有画像を貼り付ける1501~1504の部分とから成る。1501~1504には、HMD101と同じルームの共有画像が貼り付けられ、HMD101で表示される。
HMD101と別のルームの共有画像のみ記憶されている場合の共有画像の表示の一例を、図15の1510に示す。一覧表示部1511には、HMD101と別のルームの共有画像が選択可能に一覧表示されている。
HMD101と同じルームの共有画像と、HMD101と別のルームの共有画像の両方が記憶されている場合の共有画像の表示の一例を図16の1600に示す。
次にPC100のCPU201は、図11のステップS1102で、視点位置の移動先の決定処理を行う。
ここでは、HMD101Bのユーザによる共有画像の選択操作によって選択された共有画像を特定し、当該共有画像の撮像時点のHMDの位置(例:共有画像を撮像したHMD101Cの撮像時点の仮想空間上の位置)を、HMD101Bの視点位置の移動先として決定するものとする。例えば、後述する図18のステップS1809で共有画像の選択操作を受け付け、ステップS1810で選択された共有画像の撮像時点のHMDの位置を視点位置の移動先として決定するものである。
HMD101に一覧表示されている共有画像の場合、例えばHMD101に設置されているボタンを複数回押下することで選択中の共有画像を切り替え、ボタンの長押しを受け付けることで共有画像の選択確定をする。また、仮想空間上の当該共有画像の撮影位置に配置され、HMD101の位置姿勢に応じてHMD101に表示されている共有画像の場合、例えばHMD101の視線で選択を行う。具体的には、HMD101の視線方向と交差する共有画像(共有画像が貼り付けられた仮想オブジェクト)を選択し、当該交差している状態が所定時間以上(例:5秒以上)継続した場合に選択確定する。
本実施形態の説明においては、共有画像の選択、選択による移動先の位置の決定は、選択された共有画像の撮影位置への視点位置の移動指示と同義であるものとする。
次に図12を参照して、本発明の実施形態における、視点位置の移動処理の詳細について説明する。
視点位置を移動させるとは、現実空間におけるHMD101の動きと連動して移動・方向転換する仮想空間上の仮想のカメラの位置を、他の仮想空間上の位置に移動させるということである。例えば図14に示すように、HMD101に対応する仮想カメラ713の位置を、仮想空間において移動させる処理である。
現実空間のHMD101の視点が移動するわけではなく、仮想空間上の仮想の視点が移動だけであるため、現実の映像に重畳する仮想物体(CG)の表示のみが移動先の位置から見た仮想物体の表示に変更されることとなる。共有画像の位置は移動先の候補の位置である。
ステップS1201で、PC100のCPU201は、図10のステップS1002において選択された共有画像の位置姿勢を取得する。具体的には、図13の共有画像情報1300から対象の共有画像の位置1303、方向1304、角度1305を取得する。
ステップS1202で、PC100のCPU201は、ステップS1201で取得した位置姿勢情報からHMD101の仮想空間上の位置(視点位置)の移動先の位置を決定する。例えば、当該共有画像の位置1303を移動先の位置として決定する。
ステップS1203で、PC100のCPU201は、ステップS1202で決定した移動先の位置に、HMD101の仮想空間上の視点位置を変更する。つまり、ユーザの視点を指定された共有画像の位置に移動する。
ステップS1204で、PC100のCPU201は、HMD101のカメラが撮像している現在の現実画像と、移動先の仮想空間上の視点位置から見た仮想オブジェクトの画像を合成(重畳)して、MR画像を生成し、ステップS1205でHMD101に送信して表示させる。
以降、視点位置の移動を解除する操作がされるまで、現在の現実画像と、移動先の仮想空間上の視点位置から見た仮想オブジェクトの画像を合成してMR画像を生成し、HMD101に表示するものとする。以上が図12の説明である。
視点の移動前後の位置関係及びMR画像の状態を図14に示す。1400の1401は現実画像である。1410は仮想空間上のHMD101の視点位置(仮想カメラ)の移動の様子を示す。1411は視点位置の移動前の仮想空間の画像である。1420の1421は、視点位置移動後のMR画像の一例である。
次に、HMD101AとHMD101Bの接近に応じて、HMD101Aの仮想空間上の視点位置を、HMD101Bの視点位置(移動中の視点位置)に移動・変更する処理について説明する。
PC100のCPU201は、図10において、HMD101Aから共有画像の表示指示を受け付け、HMD101Aに対して図10の各処理を実行する。ステップS1001の処理として、図11のステップS1101~S1106の処理を実行し、処理をステップS1107に移行する。ステップS1101~S1106の処理の詳細は前述したためここでは説明省略する。
PC100のCPU201は、ステップS1007で、他のHMDに送信中の画像を共有画像として表示することを決定する決定処理を実行する。
ここで図17を参照して、本発明の実施形態における、他のHMDに送信中の画像を共有画像として表示することを決定する決定処理の詳細について説明する。
ステップS1701で、PC100のCPU201は、ステップS1101で共有画像の表示指示を受け付けたHMD101Aの他のHMD101を特定する。具体的には、HMD情報610の中の、HMD101B、HMD101Cの情報を取得し、HMD101のリストとしてRAM203に記憶する。また、HMD101B、HMD101Cの視点移動情報660も取得してRAM203に記憶する。
以降、取得した全ての他のHMD101(HMD101B、HMD101C)に対してステップS1702以降の処理を実行する。
ステップS1702で、PC100のCPU201は、未処理のHMD IDを1つ取得する。例えばHMD101BのIDを取得する。
ステップS1703で、PC100のCPU201は、現実空間において、HMD101の位置姿勢から見たHMD101Aの視野の中に、HMD101Bが存在するか判定する。視野の中に存在する場合には処理をステップS1704に移行する。視野の中に存在しない場合にはHMD101Bにかかる図17の処理を終了し、未処理のHMD ID(例えばHMD101C)をステップS1702で取得し、ステップS1703以降の処理を実行する。
ステップS1704で、PC100のCPU201は、視野の中に存在(位置)すると判定された他のHMD101(例えばHMD101B)の視点移動情報1330を参照し、視点移動フラグ1332が1か判定する。つまり、HMD101Bの仮想空間における視点位置が、当該HMD101Bの現実空間上の位置と異なる仮想空間上の位置(例えば過去に共有画像が撮像された時点の他のHMD101の仮想空間上の視点位置)に変更されている(移動中)か判定する。
HMD101Bの視点位置が変更中の場合、処理をステップS1705に移行する。視点位置が変更中でない場合、HMD101Bにかかる図17の処理を終了する。
ステップS1705で、PC100のCPU201は、HMD101Bに送信中のMR画像(動画)を取得する。そして、ステップS1706で、取得した画像を共有画像として記憶する。
具体的には、図6のMR画像テーブル650におけるHMD101Bの複合現実画像652を、複合現実画像652が更新される都度取得して、RAM203にコピーして記憶する。当該画像は動画の中の1フレーム(1コマ)であるため、複合現実画像652が更新される都度、画像を追加していく。つまり動画として記憶する。一例を図13の1340の1342に示す。動画には一意の画像ID1341を付与する。
そして、共有画像情報1300に当該動画のIDを1301に追加して記憶し、動画の再生端末(HMD101B)を1302に追加して記憶する。また、1303~1308には、現在のHMD101Bの仮想空間上の視点の位置姿勢、フロア、部屋番号を、HMD101Bの位置姿勢を取得する都度記憶・更新する。
なお、HMD101Bの仮想空間上における視点の位置姿勢は、HMD101Bの現実空間の位置姿勢に応じて変化する。よって、PC100のCPU201は、HMD101Bの視点位置が、HMD101Bのユーザによって選択された共有画像の撮像位置に移動した後の、HMD101Bの現実空間上の位置姿勢の変化を計測しておく。
そして、当該共有画像の撮像位置をX,Y,Z座標=0,0,0として規定し、当該共有画像の撮像位置に視点位置が移動してからのHMD101Bの現実空間上の位置姿勢の変化を、仮想空間上の当該共有画像の撮像位置に適用して、現在のHMD101Bの仮想空間上の視点位置・姿勢を計測、特定する。
例えば、HMD101Bの視点位置がX,Y,Z=1,1,5の位置に移動し、その後、HMD101が現実空間上においてX方向に2移動した場合、HMD101の仮想空間上における視点位置はX,Y,Z=3,1,5となる。
PC100のCPU201は、当該特定した値をHMD101Bの現在の仮想空間上の位置・姿勢として、順次、共有画像情報1300のD111に対応する位置姿勢に記憶・更新する。
ステップS1707で、PC100のCPU201は、外部メモリに予め記憶されているテンプレートの仮想オブジェクト(テンプレートモデル情報1310に図示)を取得する。そして、HMD101A用の追加表示モデル情報1320を生成して、取得したテンプレートの仮想オブジェクトをコピーし、追加・記憶する。
追加表示モデル情報1320におけるモデルIDには、追加表示モデル情報1320へのデータの追加時に新規の値を付与する。また、モデルの姿勢は一律同じ値を設定する。
そして、追加したテンプレートの仮想オブジェクトの位置には、HMD101Bの現実空間上の位置を、光学センサ104から新規の位置を取得する都度記憶・更新し、画像1321には、画像ID1301に記憶した動画(図13のD111)を、リアルタイムに記憶・更新する。つまり、共有画像の仮想空間上の位置を決定する。
この位置と画像の更新処理は、HMD101BがHMD101Aの視野から外れるか、HMD101Bの視点移動フラグが0になるまで継続する。以上が図17の説明である。
PC100のCPU201は、ステップS1108において、モデル情報620及び追加表示モデル情報1320を用いて、HMD101AのMR画像の生成・表示更新を行う。具体的には、図5のステップS506以降の処理を順次行い、ステップS508において、モデル情報620だけでなく、追加表示モデル情報1320の仮想オブジェクトも用いて描画データの生成及びHMD101の画面における表示位置(描画位置)を決定してMR画像を生成し、ステップS511まで処理を実行する。
例えば、図19の1900に示すMR画像を生成してHMD101Aに送信する。1901は、HMD101Bの位置に配置され、描画される、HMD101に送信中のMR画像1902(複合現実画像である動画)を選択可能に表示した仮想オブジェジェクトである。1903は、HMD101Aの画像の中心(HMD101の向いている方向)を示すカーソルである。
HMD101BがHMD101Aの視野内に存在しない場合のMR画像の一例を図19の1910に示す。
PC100のCPU201は、図11の処理終了後、図10のステップS1002の処理を実行する。具体的には、図18の視点位置の移動先の決定処理を実行する。
ここで図18を参照して、本発明の実施形態における、視点位置の移動先の決定処理の詳細について説明する。
ステップS1801で、PC100のCPU201は、HMD101A(HMD ID)を取得し、ステップS1802で、その他のHMD101(101B、101CのID)を取得する。
ステップS1803で、PC100のCPU201は、他のHMD101のうち未処理のHMDを取得する。例えばHMD101Bを取得するものとする。
ステップS1804で、PC100のCPU201は、HMD101Aの現実空間上の位置と、取得したHMD101Bの現実空間上の位置とが所定距離内か判定する。ここでいう処理距離とは、PC100の外部メモリに予め記憶されている値である。例えば2mとする。
ステップS1804で、PC100のCPU201は、HMD101Aの現実空間上の位置と、取得したHMD101Bの現実空間上の位置とが所定距離内である(2つのHMDの距離が所定距離より短い)と判定した場合、処理をステップS1805に移行する。所定距離以上ある場合は処理をステップS1811に移行する。
ステップS1805で、PC100のCPU201は、現実空間において、HMD101BがHMD101Aの視界の中に位置するか判定する。視界の中に位置する場合は処理をステップS1806に移行する。視界の外に位置する場合は処理をステップS1811に移行する。
ステップS1811では、PC100のCPU201は、全ての他のHMD101(HMD101AにとってのHMD101BとHMD101C)に対して、ステップS1804又はステップS1805の処理を適用したか判定し、適用済の場合は処理をステップS1809に移行し、未適用の場合は処理をステップS1803の前に戻して未処理のHMDを取得する。
ステップS1806で、PC100のCPU201は、HMD101Bの仮想空間上の視点位置にHMD101Aの仮想空間上の視点位置を移動させるための操作部の画像を生成し、HMD101Aに送信して、MR画像に重畳して表示させる(操作画面表示制御手段に該当)。
具体的には、図20の2000における、操作画面2001の「移動」ボタン2002、「キャンセル」ボタン2003を表示する。「移動」ボタン2002は、HMD101Aの仮想空間上の視点位置を、HMD101Aから所定距離内にある他のHMD101(101B)の仮想空間上の視点位置に移動して変更するためのボタンである。「キャンセル」ボタン2003は、当該移動を行わず、操作画面2001の表示を終了するボタンである。
PC100のCPU201は、例えばHMD101Aに設置されているボタンが複数回押下されることで「移動」ボタン2002、「キャンセル」ボタン2003の選択状態を切り替え、ボタンの長押しを受け付けることで選択確定することができる。
ステップS1807で、PC100のCPU201は、ユーザ操作を受け付けたか判定する。操作を受け付けた場合、ステップS1808に移行し、受け付けた操作が「移動」ボタン2002の選択操作か、「キャンセル」ボタン2003の選択操作か判定する。
「移動」ボタン2002の選択操作の場合は処理をステップS1812に移行し、「キャンセル」ボタン2003の選択操作の場合は処理をステップS1809に移行する。
ステップS1812で、PC100のCPU201は、HMD101Bの現在の仮想空間上の視点位置を取得し、HMD101Aの仮想空間上の視点位置の移動先に決定する。具体的には、共有画像情報1300の中の、リアルタイム動画(D111)と対応づけられているHMD101Bの仮想空間上の位置を特定して取得して、移動先に決定する(位置特定手段に該当)。
ステップS1809では、共有画像の選択操作を受け付けたか判定する。例えば、図19の1901や、図16の各共有画像(共有画像が貼り付けられた仮想オブジェクト)を選択可能である。
共有画像の選択操作を受け付けた場合は処理をステップS1810に移行し、当該選択を受け付けた共有画像に対応する仮想空間上の位置を取得し、HMD101の移動先の視点位置として決定する。例えば、共有画像が撮像された時点での、当該共有画像の撮像元であるHMDの仮想空間上の位置である。なお、図19の1901が選択された場合の移動先の位置の特定方法は、ステップS1812と同じである。以上が図18の説明である。
PC100は、図10のステップS1003の処理を実行し、HMD101Aの視点位置を、ステップS1810又はS1812で決定した位置に移動する。
以上説明したように、本発明によれば、ユーザ同士の距離に応じて、ユーザの視点位置の移動先を容易に決定可能とする仕組みを提供することができる。
例えば、HMD同士の距離に応じて、仮想空間上の視点位置を容易に決定可能となる。
なお、上述した実施形態においては、HMD101AとHMD101Bとの距離が所定距離内になった場合に、「移動」ボタン2002を表示し、「移動」ボタンの選択に応じて、HMD101Aの視点位置をHMD101Bの視点位置に変更するものとしたが、「移動」ボタン等の表示をすることなく、自動で、HMD101Aの視点位置を、HMD101Bの視点位置に変更し、操作の手間を省くようにしてもよい。
また、上述した実施形態においては、HMD101AとHMD101Bとの距離が所定距離内になった場合に、HMD101Aの視点位置をHMD101Bの視点位置に移動するものとしたが、HMD101Bの視点そのものではなく、HMD101Bに近い視点が得られれば十分な場合もある。よって、例えばHMD101AとHMD101Bとの距離が所定距離内になった場合に、HMD101Bの視点位置が属するフロアを特定し、当該フロアにHMD101Aの視点位置を移動する(地面から垂直方向にのみ視点位置を変更する)ようにしてもよい。フロア移動の際、移動後のフロアにおける視点位置の床面からの高さは、移動前のフロアにおける視点位置の床面からの高さと同じ高さに決定する。フロアが同じであれば、後は歩いてHMD101Bの視点位置に近づけばよいためである。
上述したように、HMD101AとHMD101Bが同じ仮想空間内(例:同じ仮想の部屋)にいる場合、HMD101AのユーザがHMD101Bのユーザの視点位置に歩いて近づくことができる。手間なのは、主に、歩いて移動するだけでは他のHMDのユーザの視点位置に近づくことができない場合である。
よって、例えば、HMD101AとHMD101Bが異なる仮想空間にいる場合に、HMD同士の距離に応じた視点位置の決定を行うようにしてもよい。
例えば、図18のステップS1803の後、ステップS1804の前に、ステップS1803で取得したHMD101Bが、HMD101Aと異なる仮想空間にいるか判定する。例えばHMD101Aの視点位置が属するフロアまたは部屋と、HMD101Bの視点位置が属するフロアまたは部屋が異なる場合に、異なる仮想空間にいると判定する。
HMD101Bが、HMD101Aと異なる仮想空間にいる場合は処理をステップS1804に移行し、同じフロアの同じ部屋にいる場合は処理をステップS1811に移行する。
これにより、現実空間を歩いて移動するだけでは所望のユーザの視点に近い画像が得られない場合に、ユーザ同士の距離に応じて、ユーザの視点位置の移動先を容易に決定可能とする仕組みを提供することができる。
なお、部屋が異なったとしても、HMD101AとHMD101Bの仮想空間上の距離が近い場合には、歩いてHMD101Bの近くに移動し、HMD101Bの視点に近い画像を得ることが可能である。
よって、例えばステップS1804でYESと判定された後に、HMD101AとHMD101Bの仮想空間上の距離が所定距離以内(例:5m以内)か判定し、所定距離より離れている場合には処理をステップS1805に移行し、初手距離以内の場合には処理をステップS1811に移行するようにしてもよい。
これにより、各ユーザの属する仮想空間が異なるか否かに関わらず、現実空間を歩いて移動するだけでは所望のユーザの視点に近い画像が得られない場合に、ユーザ同士の距離に応じて、ユーザの視点位置の移動先を容易に決定可能とする仕組みを提供することができる。
また、HMD101Bに現在送信中の画像だけでなく、HMD101が過去に撮像した共有画像を、HMD101と対応付けて、選択可能に表示してもよい。
図19の1901の選択を受け付けた場合、例えば図21の2100に示す、2101の仮想オブジェクトを生成して、1901の変わりに選択可能に配置する。2102は1902と同じ動画である。2103~2105は、HMD101Bが過去に撮像した共有画像であり、選択可能な画像である。PC100のCPU201は、選択された画像に応じた視点位置の移動先を特定して視点位置を移動させる。
また、上述した実施形態においては、図11のステップS1103で、HMD101と共有画像が同じ部屋の中にあるか判定するものとしたが、例えば、HMD101と共有画像が同じフロアにあるか判定するようしにてもよい。
具体的には、ステップS1103においてPC100のCPU201が、ステップS1101で取得したHMD101の位置するフロアと、ステップS1102で取得した共有画像に対応するフロアとが一致するか判定し、一致する場合は処理をステップS1104に移行し、一致しない場合は処理をステップ1106に移行する。
これにより、仮に一覧に表示する共有画像(過去の位置の識別情報)が多い場合であっても、一覧表示部を過剰に拡大してしまいHMDの表示領域を圧迫してしまう危険を低減できる。
また、図6の660に示す部屋の情報がない場合であっても、フロアの情報さえれば、ユーザと記録済の位置の関係に応じて適切に当該位置の選択部を表示することが可能となる。
また、上述した実施形態においては、共有画像として記憶するデータは静止画である画像として説明したが、例えば録画した動画像であってもよい。録画した動画の撮影場所=動画の録画が開始された時点(録画開始時点)の撮影者のHMDの位置とする。
以上、本発明の実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
例えば、図2に示すPC100の構成を全て備えるHMD101が、自機の機能をCPU201で実行して、上述した実施形態においてPC100の実行するものとして説明した処理の全てを、実行するようにしてもよい。
具体的には、HMD101とPC100が一体であり、1つの筐体として、HMD101のCPU201が、ステップS504~S509の処理及びその他の図のフローチャートに記載の処理を実行するよう構成してもよい。この場合、PC100の機能は各HMD101に備わり、各HMD101の記憶装置に、光学センサ104から取得された各HMD101の位置姿勢が記憶されるものとする。
また、PC100が1つではなく複数の装置から構成されてもよい。例えば、HMD101ごとにHMD101の位置姿勢をセンサから取得するPCが接続され、各PCと図1のPC100が接続され、各PCから各PCが管理するHMDのIDと位置姿勢を取得するようにしてもよい。また、各PCが共有画像をPC100にアップロードし、アップロードを受け付けたPC100が、アップロード元以外の他のPCに当該共有画像の共有画像情報1300を配信し、各PCに共有画像情報1300を記憶させるようにしてもよい。
なお、上述した実施形態においては、複合現実における視点移動と案内について説明したが、例えば視点移動及び経路案内の表示を、仮想現実や拡張現実の技術を用いて実現するようにしてもよい。
また、上述した実施形態においては、現実画像と仮想物体の描画データを重畳することで複合現実画像を生成するものとしたが、例えば透過型(シースルー型)のHMD101を採用し、透過率100%の現実画像に透過率0%の描画データを重ね合わせてディスプレイに表示し、現実の情報はディスプレイ越しに肉眼で確認できるような複合現実画像を生成・表示するようにしてもよい。
また、上述した実施形態においては、MR画像を生成するものとしたが、例えば仮想世界の画像のみを表示するようにしてもよい。つまり、複合現実ではなく、仮想現実の技術を用いて本発明を実現するようにしてもよい。
また、本発明におけるプログラムは、各図に示すフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は各図の処理方法をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは各図の各装置の処理方法ごとのプログラムであってもよい。
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、DVD-ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク、ソリッドステートドライブ等を用いることができる。
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。