(57)【要約】【課題】  複合現実感装置において、形状・大きさが同一である現実モデルと仮想モデルとを正確に一致させる為の技術を提供すること。【解決手段】  ステップＳ１０３０では、ユーザが操作するスタイラスの現実空間における位置姿勢を算出し、スタイラスが現実空間中の現実物体の表面上に位置することを検知する。ステップＳ１０４０では、検知時に算出された位置に対応する仮想空間中の位置に仮想指標を配置する。ステップＳ１０６０では、配置した仮想指標を含む仮想空間の画像を現実空間に重畳させて表示する。【選択図】    図８
2005227876.tif 000002
【特許請求の範囲】
【請求項１】
現実空間に、仮想空間の画像を重畳させて表示する画像処理方法であって、
ユーザが操作するスタイラスの前記現実空間における位置姿勢を算出する算出工程と、
前記スタイラスが前記現実空間中の現実物体の表面上に位置することを検知する検知工程と、
前記検知工程での検知時に前記算出工程で算出された位置に対応する前記仮想空間中の位置に仮想指標を配置する配置工程と、
前記配置工程で配置した前記仮想指標を含む仮想空間の画像を前記現実空間に重畳させて表示する表示工程と
を備えることを特徴とする画像処理方法。
【請求項２】
前記表示工程では更に、前記現実物体をモデリングすることにより得られる仮想物体を表示することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
更に、
前記仮想物体の位置を、前記検知工程での検知時に前記算出工程で算出された姿勢を方向ベクトルとする直線に沿って、前記検知工程での検知時に前記算出工程で算出された位置と前記仮想物体の位置との距離を減少させる方向に移動させる移動工程と、
前記検知工程での検知結果により、前記スタイラスが前記現実空間中の現実物体の表面上に位置していない場合に、前記算出工程で算出された姿勢と、当該姿勢よりも従前に算出された姿勢との差分を求め、当該求めた差分に応じて前記仮想物体の姿勢を変更する姿勢変更工程と
を備えることを特徴とする請求項２に記載の画像処理方法。
【請求項４】
更に、
前記仮想物体の姿勢を、前記仮想空間中の１点を支点として、もしくは２点を結ぶ線分を軸として、前記検知工程での検知時に前記算出工程で算出された位置と前記仮想物体の位置との距離を減少させる方向に回転させる回転工程と、
前記検知工程での検知結果により、前記スタイラスが前記現実空間中の現実物体の表面上に位置していない場合に、前記算出工程で算出された姿勢と、当該姿勢よりも従前に算出された姿勢との差分を求め、当該求めた差分に応じて前記仮想物体の姿勢を変更する姿勢変更工程と
を備えることを特徴とする請求項２に記載の画像処理方法。
【請求項５】
更に、
前記検知工程での検知時に前記算出工程で算出された位置を保持する保持工程と、
前記保持工程で保持する位置が所定箇所数以上となった場合には、当該所定箇所数以上の位置を用いて、前記仮想物体の位置姿勢を算出する位置姿勢算出工程と
を備えることを特徴とする請求項２に記載の画像処理方法。
【請求項６】
前記検知工程では、前記ユーザが前記スタイラスを前記現実空間中の現実物体の表面上に位置させたときに前記スタイラスから送信される信号を検知することで、前記スタイラスが前記現実空間中の現実物体の表面上に位置したことを検知することを特徴とする請求項１に記載の画像処理方法。
【請求項７】
現実空間に、仮想空間の画像を重畳させて表示する画像処理装置であって、
ユーザが操作するスタイラスの前記現実空間における位置姿勢を算出する算出手段と、
前記スタイラスが前記現実空間中の現実物体の表面上に位置することを検知する検知手段と、
前記検知手段による検知時に前記算出手段が算出した位置に対応する前記仮想空間中の位置に仮想指標を配置する配置手段と、
前記配置手段が配置した前記仮想指標を含む仮想空間の画像を前記現実空間に重畳させて表示する表示手段と
を備えることを特徴とする画像処理装置。
【請求項８】
コンピュータに請求項１乃至６の何れか１項に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項９】
請求項８に記載のプログラムを格納することを特徴とする、コンピュータ読みとり可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実空間に、仮想空間の画像を重畳させて表示する為の技術に関するものである。
【背景技術】
【０００２】
現実空間と仮想空間とを違和感なく自然に結合する複合現実感（ＭＲ：Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）の技術を応用した装置が盛んに提案されている。これらの複合現実感提示装置は、カメラなどの撮像装置によって撮影した現実空間の画像に対し、コンピュータグラフィックス（ＣＧ：Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）で描画した仮想空間の画像を結合し、ヘッドマウントディスプレイ（ＨＭＤ：Ｈｅａｄ−Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）などの表示装置に表示することで、現実空間と仮想空間とが融合された複合現実空間を複合現実感装置のユーザに提示している。
【０００３】
また近年、３次元ＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）やラピッド・プロトタイピング技術の発達により、コンピュータ上のＣＡＤで作成した形状モデルデータから、実物のモックアップを比較的短時間で、自動的に作成できるようになっている。
【０００４】
しかし、ラピッド・プロトタイピング造形装置で作成した現実のモックアップモデル（以下、現実モデルと表記する）は、形状こそＣＡＤで作成した形状モデル（以下、仮想モデルと表記する）と同一であるが、材質については、造形に用いる素材に制約される。そのため、この現実モデルでは、色や質感、模様などの特性については、仮想モデルを反映していない。そこで、複合現実感装置を用いて、現実モデルを作成した元の仮想モデルをＣＧで描画し、現実モデルに重畳してユーザに表示することによって、仮想モデルの色や質感、模様などの特性を現実モデルに反映させることができる。
【０００５】
このような複合現実感装置において要求されるのは、仮想空間に表示する仮想モデルを、現実空間中に存在する現実モデルに正確に一致させた状態で表示することである。この場合、ＣＡＤで作成した仮想モデルから現実モデルが作成されるため、形状・大きさについては両モデルは同一であると言える。しかし、複合現実空間で両モデルを一致させるためには、現実空間と仮想空間との整合を正確に行うことに加え、現実モデルが存在する現実空間中での位置・姿勢と、仮想モデルを配置する仮想空間中での位置・姿勢とを正確に一致させなければならない。すなわち、まず、現実空間の座標系と仮想空間の座標系を完全に一致させ、その後に、現実モデルと仮想モデルが存在する座標を一致させる必要がある。
【０００６】
前者については、従来から多くの取り組みが行われており、特許文献１，２などが示している方法で、現実空間と仮想空間とを正確に整合させるための位置合わせを実現することができる。
【０００７】
後者については、従来、現実モデルの位置・姿勢をあらかじめ何らかの方法で測定し、仮想モデルを配置する位置・姿勢にもその測定値を設定することが行われてきた。
【０００８】
現実モデルの位置・姿勢を測定する方法には、３次元位置姿勢センサなどの計測装置を用いる方法や、現実モデルに３次元位置が既知であるマーカを複数貼り、カメラなどの撮像装置で現実モデルを撮影した画像から、画像処理によりマーカを抽出して、マーカが抽出されたマーカの画像座標と３次元位置との対応から現実モデルの位置・姿勢を算出する方法が知られている。
【特許文献１】特開２００２−２２９７３０号公報
【特許文献２】特開２００３−２６９９１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、上記いずれの方法においても、測定した現実モデルの位置・姿勢をそのまま仮想モデルに適用するだけでは、現実モデルと仮想モデルとを厳密に一致させることは困難である。計測装置を用いる方法では、仮想モデルの表面上のある１点について、対応する現実モデルの点の位置を正確に測定しなければならない。しかし、仮想モデル上の点に対応する現実モデルの点を見つけることは難しい。
【００１０】
また、画像処理による方法では、まず、画像処理で抽出可能なマーカを用意し、貼ったマーカの３次元位置を正確に測定しなければならない。この３次元位置の精度が、最終的に算出する位置・姿勢の精度に大きく影響する。また、マーカの抽出精度も照明環境などに大きく左右される。
【００１１】
また、現実モデルにセンサを設置することが不可能であったり、マーカを貼り付けることが許されないような場合、現実モデルの位置・姿勢を正確に測定することはほぼ不可能である。
【００１２】
現実モデルの位置・姿勢を直接測定することが困難である場合には、逆に、仮想モデルの位置・姿勢をあらかじめ規定しておき、その位置・姿勢に現実モデルを設置する方法が採られる。しかし、この方法においても、配置した現実モデルの位置・姿勢に誤差が生じることが多い。そのため、現実モデルを大まかに配置した後で、仮想モデルの位置・姿勢を微調整することによって、最終的に現実モデルと仮想モデルを一致させる方法も考えられる。
【００１３】
しかし、一般的な複合現実感システムでは、仮想空間の画像は、現実空間の画像の上に重畳して表示される。そのため、システムのユーザには、常に現実モデルの手前に仮想モデルが存在するように観測され、現実モデルと仮想モデルとの間の位置関係を把握することは困難である。とりわけ、仮想モデルの位置・姿勢を微調整するためには、両者の正確な位置関係を把握する必要があるため、大きな障害となっていた。
【００１４】
本発明は以上の問題に鑑みてなされたものであり、複合現実感装置において、形状・大きさが同一である現実モデルと仮想モデルとを正確に一致させる為の技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の目的を達成するために、例えば本発明の画像処理方法は以下の構成を備える。
【００１６】
すなわち、現実空間に、仮想空間の画像を重畳させて表示する画像処理方法であって、
ユーザが操作するスタイラスの前記現実空間における位置姿勢を算出する算出工程と、
前記スタイラスが前記現実空間中の現実物体の表面上に位置することを検知する検知工程と、
前記検知工程での検知時に前記算出工程で算出された位置に対応する前記仮想空間中の位置に仮想指標を配置する配置工程と、
前記配置工程で配置した前記仮想指標を含む仮想空間の画像を前記現実空間に重畳させて表示する表示工程と
を備えることを特徴とする。
【００１７】
本発明の目的を達成するために、例えば本発明の画像処理装置は以下の構成を備える。
【００１８】
すなわち、現実空間に、仮想空間の画像を重畳させて表示する画像処理装置であって、
ユーザが操作するスタイラスの前記現実空間における位置姿勢を算出する算出手段と、
前記スタイラスが前記現実空間中の現実物体の表面上に位置することを検知する検知手段と、
前記検知手段による検知時に前記算出手段が算出した位置に対応する前記仮想空間中の位置に仮想指標を配置する配置手段と、
前記配置手段が配置した前記仮想指標を含む仮想空間の画像を前記現実空間に重畳させて表示する表示手段と
を備えることを特徴とする。
【発明の効果】
【００１９】
本発明の構成により、形状・大きさが同一である現実モデルと仮想モデルとを正確に一致させる為の技術を提供することができる。
【発明を実施するための最良の形態】
【００２０】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００２１】
［第１の実施形態］
図１は、本実施形態に係る複合現実感提示システムの基本構成を示すブロック図である。
【００２２】
図１において、演算処理部１００は、ＰＣ（パーソナルコンピュータ）やＷＳ（ワークステーション）などのコンピュータにより構成されている。演算処理部１００はその内部にＣＰＵ１０１、ＲＡＭ１０２、画像出力装置１０３、システムバス１０４、ディスク装置１０５、入力装置１０６、画像入力装置１０７を備える。
【００２３】
ＣＰＵ１０１は、ＲＡＭ１０２にロードされたプログラムやデータを用いて演算装置１００全体の制御を行うとともに、複合現実空間の画像を生成して提示するための各処理等を行う。ＣＰＵ１０１はシステムバス１０４に接続され、ＲＡＭ１０２、画像出力装置１０３、ディスク装置１０５、入力装置１０６、画像入力装置１０７と相互に通信することが可能である。
【００２４】
ＲＡＭ１０２は、メモリ等の主記憶装置によって実現される。ＲＡＭ１０２は、システムバス１０４を介して、ディスク装置１０５からロードされたプログラムやデータ、プログラムの制御情報、画像入力装置１０７から入力した現実空間の画像データ等を格納するためのエリアを備えるとともに、ＣＰＵ１０１が各種の処理を行う際に必要とするワークエリアを備える。
【００２５】
ＲＡＭ１０２に入力されるデータには例えば、仮想空間における仮想物体（ＣＧモデル）やその配置等に係る仮想空間データ、センサ計測値、センサ較正データ等がある。仮想空間データには、仮想空間中に配置する仮想物体や後述の仮想指標の画像に関するデータ、またその配置に関するデータ等が含まれる。
【００２６】
画像出力装置１０３は、グラフィックスカードなどの機器によって実現される。一般的に、画像出力装置１０３は図示しないグラフィックスメモリを保持している。ＣＰＵ１０１によってプログラムを実行することで生成された画像情報は、システムバス１０４を介して、画像出力装置１０３が保持するグラフィックスメモリに書き込まれる。画像出力装置１０３は、グラフィックスメモリに書き込まれた画像情報を適切な画像信号に変換して表示装置２０１に送出する。グラフィックスメモリは必ずしも画像出力装置１０３が保持する必要はなく、ＲＡＭ１０２内の一部のエリアによってグラフィックスメモリの機能を実現してもよい。
【００２７】
システムバス１０４は、演算処理部１００を構成する各機器が接続され、各機器が相互に通信するための通信路である。
【００２８】
ディスク装置１０５は、ハードディスク等の補助記憶装置によって実現される。ディスク装置１０５は、ＣＰＵ１０１に各種の処理を実行させるためのプログラムやデータ、プログラムの制御情報、仮想空間データ、センサ較正データなどを保持しており、これらは必要に応じてＣＰＵ１０１の制御により、ＲＡＭ１０２にロードされる。
【００２９】
入力装置１０６は、各種インタフェース機器によって実現される。すなわち演算処理部１００に接続された機器からの信号をデータとして入力し、システムバス１０４を介して、ＣＰＵ１０１やＲＡＭ１０２に入力する。また、入力装置１０６はキーボードやマウスなどの機器を備え、ＣＰＵ１０１に対するユーザからの各種の指示を受け付ける。
【００３０】
画像入力装置１０７は、キャプチャカードなどの機器によって実現される。すなわち撮像装置３０２から送出される現実空間の画像を入力し、システムバス１０４を介して、ＲＡＭ１０２に画像データを書き込む。なお、後述する頭部装着部２００が光学シースルー方式のものである場合（撮像装置２０２が備わっていない場合）には、画像入力装置１０７は具備しなくてもよい。
【００３１】
頭部装着部２００は、所謂ＨＭＤ本体であって、周知の通り、複合現実空間を体感するユーザの頭部に装着するためのもので、その装着の際、表示装置２０１がユーザの眼前に位置するように装着する。頭部装着部２００は表示装置２０１、撮像装置２０２、センサ３０１から構成される。本実施形態では、頭部装着部２００を構成する装置をユーザが装着しているが、ユーザが複合現実空間を体験できる形態であれば、頭部装着部２００は必ずしもユーザが装着する必要はない。
【００３２】
表示装置２０１は、ビデオシースルー型ＨＭＤに備わっているディスプレイに相当するもので、画像出力装置１０３から送出される画像信号に従った画像を表示する。上述の通り、表示装置２０１は頭部装着部２００を頭部に装着したユーザの眼前に位置しているので、この表示装置２０１に画像を表示することで、この画像をユーザに提供することができる。
【００３３】
なお、ユーザに画像を提供するためにはこれ以外にも考えられ、例えば演算処理部１００に据え置き型の表示装置を接続し、この表示装置に画像出力装置１０３から送出される画像信号を出力させ、ユーザにこの画像信号に従った画像を見せるようにしても良い。
【００３４】
撮像装置２０２は、ＣＣＤカメラなどの１つ以上の撮像装置によって実現される。撮像装置２０２はユーザの視点（例えば目）から見た現実空間の画像を撮像するために用いられる。そのため、撮像装置２０２はユーザの視点の位置に近い場所に装着することが望ましいが、ユーザの視点から見た画像が取得できる手段であれば、これに限定されない。撮像装置２０２が撮像した現実空間の画像は画像信号として画像入力装置１０７に送出される。なお、表示装置２０１に光学シースルー型の表示装置を用いる場合には、ユーザは表示装置２０１を透過する現実空間を直接観察することになるため、撮像装置２０２は具備しなくてもよい。
【００３５】
センサ３０１は６自由度の位置姿勢計測装置として機能するものであり、ユーザの視点の位置姿勢を計測するためのものである。センサ３０１はセンサ制御装置３０３による制御に基づいて計測処理を行う。センサ３０１は計測した結果をセンサ制御装置３０３に信号として出力する。センサ制御装置３０３は受けた信号に基づいて、計測した結果を数値データとして演算処理部１００の入力装置１０６に出力する。
【００３６】
スタイラス３０２は、ペンに似た形状をしたセンサであり、ユーザが手に持って使用する。図２はスタイラス３０２の形状および構成を示す図である。スタイラス３０２は、センサ制御装置３０３の制御により、先端部３０５の位置姿勢を計測し、その計測結果を信号としてセンサ制御装置３０３に送出する。以下では先端部３０５の位置姿勢をスタイラス３０２の位置姿勢と表記する。
【００３７】
また、スタイラス３０２には押しボタンスイッチ３０４が１つ以上取り付けられている。押しボタンスイッチ３０４が押下されたときには、押下されたことを示す信号がセンサ制御装置３０３へ送出される。なお、複数のスイッチ３０４が１つのスタイラス３０２に備わっている場合には、どのボタンが押下されたのかを示す信号がスタイラス３０２からセンサ制御装置３０３に送出される。
【００３８】
センサ制御装置３０３は、センサ３０１、スタイラス３０２に制御命令を送出し、また、センサ３０１、スタイラス３０２から位置姿勢の計測値や押しボタンスイッチ３０４の押下に係る情報を取得する。取得した情報は入力装置１０６に送出する。
【００３９】
本実施形態では、頭部装着部２００を頭部に装着しているユーザはスタイラス３０２を手に持ち、スタイラス３０２で現実モデルの表面に触れるようにして用いる。ここで現実モデルとは、現実空間に実在する物体のことである。
【００４０】
図３はスタイラス３０２で現実モデルの表面に触れる様子を示した図である。ここで、現実モデル４０１はその形状がすでにモデリングされており、現実モデル４０１と同一形状かつ同一サイズの仮想モデルが得られている。図４は現実モデル４０１をモデリングすることで得られる仮想モデル４０２を、現実モデル４０１と並べて示した図である。
【００４１】
同一形状かつ同一サイズの現実モデル４０１と仮想モデル４０２を用意する方法としては、例えば、ＣＡＤツールなどで仮想モデル４０２のモデリングを行った後、ラピッド・プロトタイピング造形装置などを用いることによって、仮想モデル４０２から現実モデル４０１を作成する方法がある。また、現実に存在する現実モデル４０１を３次元物体モデリング装置などで計測し、現実モデル４０１から仮想モデル４０２を作成する方法がある。
【００４２】
いずれにせよ、このような仮想モデルのデータは、上記仮想空間データに含められてディスク装置１０５に保存されており、必要に応じてＲＡＭ１０２にロードされている。
【００４３】
以上の構成を備える、本実施形態に係るシステムの基本的な動作について説明する。以下の処理を開始する前段では先ず、現実空間と仮想空間とを整合させる必要がある。そのためには、システムを起動する前にあらかじめ較正を行い、センサ較正情報を求めておく必要がある。求めるセンサ較正情報は、現実空間座標系と仮想空間座標系との間の３次元座標変換、及びユーザの視点位置姿勢とセンサ３０１が計測する位置姿勢との間の３次元座標変換である。このような較正情報は予め求めておき、ＲＡＭ１０２に記憶させておく。
【００４４】
なお、特開２００２−２２９７３０号公報、特開２００３−２６９９１３号公報には、これらの変換パラメータを求め、センサ較正を行う方法について説明されている。本実施形態においても従来と同様にして、較正情報を用いて、センサ３０１から得られる位置姿勢情報をユーザの視点の位置姿勢に変換したり、仮想空間における位置姿勢を現実空間における位置姿勢に変換したりする。
【００４５】
システムが起動すると、撮像装置２０２は現実空間の動画像を撮像し、撮像した動画像を構成する各フレームのデータは演算処理部１００の画像入力装置１０７を介してＲＡＭ１０２に入力される。
【００４６】
一方、センサ３０１により計測された結果はセンサ制御装置３０３により演算処理部１００の入力装置１０７を介してＲＡＭ１０２に入力されるので、ＣＰＵ１０１はこの結果から上記較正情報を用いた周知の計算によりユーザの視点位置姿勢を求め、求めた視点位置姿勢に応じて見える仮想空間の画像を周知の技術により生成する。なお、ＲＡＭ１０２には仮想空間を描画するためのデータが予めロードされているので、仮想空間の画像を生成する際には、このデータが用いられる。なお、所定の視点から見える仮想空間の画像を生成する処理については周知の技術であるので、ここでの説明は省略する。
【００４７】
このような処理により生成される仮想空間の画像は、先にＲＡＭ１０２に入力された現実空間の画像上にレンダリングする。これにより、ＲＡＭ１０２上には現実空間の画像に仮想空間の画像を重畳させた画像（複合現実空間画像）が生成される。
【００４８】
そしてＣＰＵ１０１はこの複合現実空間画像を画像出力装置１０３を介して頭部装着部２００の表示装置２０１に出力する。これにより、頭部装着部２００を頭部に装着するユーザの眼前には複合現実空間画像が表示されるので、このユーザは複合現実空間を体感することができる。
【００４９】
本実施形態では、現実空間の画像には現実モデル４０１、スタイラス３０２が含まれており、仮想空間の画像には仮想モデル４０２、後述のスタイラス仮想指標が含まれている。このような現実空間の画像にこのような仮想空間の画像を重畳させた複合現実空間画像が表示装置２０１に表示される。図５は表示装置２０１に表示される複合現実空間画像の一例を示す図である。
【００５０】
図５において、スタイラス仮想指標４０３は、スタイラス３０２の先端部３０５の位置に重畳して描画されるＣＧであり、先端部３０５の位置姿勢を示している。先端部３０５の位置姿勢は、スタイラス３０２により計測されたものを上記較正情報でもって変換したものである。従ってスタイラス仮想指標４０３は、スタイラス３０２により計測された位置に、スタイラス３０２により計測された姿勢でもって配置されることになる。
【００５１】
ここで、現実空間と仮想空間とが正確に整合している状態では、先端部３０５の位置とスタイラス仮想指標４０３の位置とは正確に一致する。よって、できるだけ先端部３０５に近い位置にスタイラス仮想指標４０３を配置させるために、現実空間と仮想空間を整合させる、すなわち、上述の通り、上記較正情報を求めておく必要がある。
【００５２】
一般的な複合現実感システムでは、ＣＧは常に現実空間の画像上に表示されるため、先端部３０５が仮想モデル４０２に遮蔽されて観測できないような場合が生じるが、以上の処理により、ユーザは、スタイラス仮想指標４０３によって、先端部３０５の位置を把握することができる。
【００５３】
図５ではスタイラス仮想指標４０３は三角形の形状をしているが、先端部３０５の位置姿勢を表現できる形状であれば、いかなる形状でもよい。例えば、スタイラス３０２の姿勢を用いて、先端部３０５からスタイラス３０２の軸方向に仮想の光線を出すことで、先端部３０５と仮想モデル４０２との位置関係を把握しやすくしてもよい。この場合には、仮想の光線がスタイラス仮想指標４０３となる。
【００５４】
ユーザは手に持っているスタイラス３０２の先端部３０５が現実モデル４０１の表面に触れたときに、押しボタンスイッチ３０４を押すことができる。ここで、ユーザが押しボタンスイッチ３０４を押すと、スタイラス３０２からセンサ制御装置３０３を介して「押しボタンスイッチ３０４が押下された旨を示す信号」が入力装置１０７に送出されるので、ＣＰＵ１０１はこの信号を検知すると、検知時にスタイラス３０２から得られた位置を上記較正情報を用いて仮想空間中の位置に変換し、変換した位置にマーカとしての仮想指標を配置する。この配置位置は換言すれば、スイッチ３０４が押下されたときのスタイラス仮想指標４０３が配置されている位置に相当する。
【００５５】
なお、スタイラス３０２の先端部３０５に圧電素子などの圧力センサを設け、この圧力センサが先端部３０５が現実モデル４０１の表面に接触したことを検知し、その旨の信号をセンサ制御装置３０３を介してＣＰＵ１０１に通知し、ＣＰＵ１０１がこの通知を受けると上記マーカを表示させるようにしてもよい。この場合、押しボタンスイッチ３０４は不要となる。
【００５６】
このように、先端部３０５が現実モデル４０１の表面に接触したことをＣＰＵ１０１に通知する手段については様々な形態が考えられ、特に限定するものではない。
【００５７】
図６は図５に示した画面においてマーカが表示された場合の画面の表示例を示す図である。マーカ４０４は先端部３０５が現実モデル４０１の表面に触れたときに表示されるため、マーカ４０４は常に現実モデル４０１の表面上に存在する。すなわち、マーカ４０４は、仮想空間において、現実モデル４０１の表面の位置を示している。このマーカ４０４を適当な間隔で数多く取ることによって、仮想空間上で現実モデル４０１の形状を把握することができる。
【００５８】
図７はマーカ４０４を数多く配置した場合の複合現実空間画像を示す図である。
【００５９】
一般的な複合現実感システムでは、ＣＧは常に現実空間の画像上に表示されるため、仮想モデル４０２が現実モデル４０１に遮蔽されて観測できないような場合が生じる。とりわけ、現実モデル４０１と仮想モデル４０２との大まかな位置合わせがなされている状態から、さらに微調整を行うような場合に、仮想モデル４０２が現実モデル４０１に遮蔽されて観測できないようでは、現実モデル４０１と仮想モデル４０２との位置関係を把握することは困難である。
【００６０】
しかし、以上の処理により、スタイラス３０２が接触した現実モデル４０１の表面位置に対応する仮想空間中の位置には、マーカが表示され、且つこのマーカは仮想物体であるので現実物体に隠蔽されることなくユーザに提示することができる。
【００６１】
図８は、以上説明した、本実施形態に係るシステムが行う、複合現実空間画像を生成して表示させるための処理のフローチャートである。なお、同図のフローチャートに従ったプログラムは、ディスク装置１０５内に保存されており、ＣＰＵ１０１の制御によってＲＡＭ１０２にロードされる。そしてＣＰＵ１０１がこのプログラムを実行することで、本実施形態に係る演算処理部１００は、以下説明する各種の処理を実行する。
【００６２】
まず、ステップＳ１０１０では、システムの起動するために必要な初期化を行う。必要な初期化には、構成機器の初期化処理、仮想空間データやセンサ較正情報など以下の処理で用いられるデータ群をディスク装置１０５からＲＡＭ１０２に読み出す処理が含まれる。
【００６３】
次に、ステップＳ１０２０からステップＳ１０６０までの処理については、複合現実空間画像を生成する為に必要な一連の処理過程であり、ステップＳ１０２０からステップＳ１０６０までの処理をまとめてフレームと呼ぶ。フレームに対する処理を１回実施するとき、これを１フレームと呼ぶ。すなわち、ステップＳ１０２０からステップＳ１０６０までの処理を１回実行することを「１フレーム」と呼ぶ。なお、フレーム内の処理の一部について、以下の条件が満たされる限りにおいては、フレーム内の処理の順序を変更してもよい。
【００６４】
すなわち、ステップＳ１０４０の処理はステップＳ１０３０の処理の後に行われなければならない。ステップＳ１０５０の処理はステップＳ１０２０の処理の後に行われなければならない。ステップＳ１０６０の処理はステップＳ１０５０の処理の後に行われなければならない。ステップＳ１０６０の処理はステップＳ１０４０の処理の後に行われなければならない。
【００６５】
ステップＳ１０２０では、画像入力装置１０７が、撮像装置２０２が撮影した現実空間の画像（実写画像）を入力し、ＲＡＭ１０２に書き込む。この現実空間の画像は上述の通り、ユーザの視点から見える現実空間の画像である。
【００６６】
ステップＳ１０３０では、入力装置１０６は、センサ計測部３００が出力した計測値を取得する。ＣＰＵ１０１は、取得した計測値を、上記較正情報を用いて、ユーザの視点の位置姿勢に変換し、ＲＡＭ１０２に書き込む。また、スタイラス３０２の計測値も取得し、上記較正情報を用いて適切な位置姿勢に変換し、ＲＡＭ１０２に書き込む。
【００６７】
また、ステップＳ１０３０では、ユーザからの操作情報についても入力装置１０７に入力し、ＲＡＭ１０２に書き込む。ここでいう操作情報とは、スタイラス３０２の押しボタンスイッチ３０４が押されたか否かを示す情報、入力装置１０６が備えるキーボード、マウス等の入力機器に対する入力情報である。
【００６８】
更にステップＳ１０３０では、ＣＰＵ１０１は上記操作情報を解釈する。例えば、キーボードのある特定のキーについて、「仮想空間に係るデータをディスク装置１０５に保存する」、「仮想モデル４０２をＸ軸正方向に０．１移動させる」などのように、あらかじめ規定の機能を割り当てておき、ユーザが該当するキーを押下したときに、ＣＰＵ１０１は割り当てられた機能を以降の処理で実行すると解釈する。
【００６９】
次に、ステップＳ１０４０では、ステップＳ１０３０で解釈した内容に基づいて仮想空間を更新する。仮想空間の更新には、以下の処理が含まれる。
【００７０】
ステップＳ１０３０において、押しボタンスイッチ３０４が押されたと判断された場合には、ＣＰＵ１０１は、マーカ４０４を、このときにスタイラス３０２により計測された位置を上記較正情報を用いて変換した仮想空間中の位置に配置する。当然、これによりＲＡＭ１０２に保持している仮想空間の状態は更新される。
【００７１】
一方、ステップＳ１０３０において、「仮想モデル４０２の位置姿勢の変更」に該当する操作が行われたと判断された場合には、ＣＰＵ１０１は、仮想空間データに含まれる仮想モデル４０２の位置姿勢のデータを、変更指示に従って変更する。当然、これによりＲＡＭ１０２に保持している仮想空間の状態は更新される。
【００７２】
また、ステップＳ１０３０において、「仮想空間の保存」に該当する操作が行われたと判断された場合には、ＣＰＵ１０１は、ＲＡＭ１０２上に保持している仮想空間データをディスク装置１０５に出力する。
【００７３】
このように、ステップＳ１０４０では、ステップＳ１０３０で入力された各種の情報に応じて仮想空間の状態を変更したり、そのデータを保存したりするが、ステップＳ１０４０における更新処理はこれのみに基づくものではなく、その他にも例えば、動的に仮想空間中の仮想物体がその位置や姿勢を変更する場合（当然、そのためのプログラムがＲＡＭ１０２にロードされており、ＣＰＵ１０１がこれを実行することによりなされる）にも、仮想空間の状態は更新される。
【００７４】
以上のようにして更新された仮想空間に係るデータはＲＡＭ１０２に一時的に記憶されている。
【００７５】
図８に戻って、次にステップＳ１０５０では、ステップＳ１０２０でＲＡＭ１０２に書き込んだ現実空間の画像はＣＰＵ１０１により読み出され、画像出力装置１０３（のグラフィックスメモリ）に出力され、そこで格納される。なお、表示装置２０１に光学シースルー型の表示装置を用いる場合には、ステップＳ１０５０の処理は行わなくてもよい。
【００７６】
次に、ステップＳ１０６０では、ＣＰＵ１０１は、ステップＳ１０３０で取得された計測値およびステップＳ１０５０において更新した仮想空間データを用いて、周知の技術により、ユーザの視点位置姿勢に応じて見える仮想空間の画像をＲＡＭ１０２上にレンダリングし、レンダリング後、レンダリング済みの画像を画像出力装置１０３（のグラフィックスメモリ）に出力する。
【００７７】
レンダリングされた仮想空間の画像には当然、上記スタイラス仮想指標４０３のＣＧ、及びマーカ４０４も含まれているのであるが、スタイラス仮想指標４０３をレンダリングする際には、仮想空間画像上で、先端部３０５の位置姿勢に応じた位置姿勢でもってレンダリングする。
【００７８】
マーカ４０４のレンダリングについては、他の仮想物体のレンダリングと同様であって、仮想空間中に配置したマーカをユーザの視点位置姿勢でもって見える画像をレンダリングすることによりなされる。
【００７９】
このようにして仮想空間の画像は画像出力装置１０３のレンダリングメモリに出力されるのであるが、このレンダリングメモリには先にステップＳ１０５０で、現実空間の画像が格納されているので、仮想空間の画像はこの現実空間の画像上にレンダリングされる。従って結果としてレンダリングメモリには、現実空間に仮想空間の画像が重畳された画像、すなわち、複合現実空間の画像が生成される。
【００８０】
そしてステップＳ１０６０では更に、ＣＰＵ１０１の制御により、画像出力装置１０３のレンダリングメモリに生成された複合現実空間の画像を頭部装着部２００の表示装置２０１に出力する処理を行う。なお、表示装置２０１に光学シースルー型の表示装置を用いる場合には、ステップＳ１０５０において現実空間の画像の画像出力装置１０３のレンダリングメモリへの出力処理は行っていないので、画像出力装置１０３は仮想空間の画像のみを表示装置２０１に出力する。
【００８１】
これにより、ユーザの眼前に位置する表示装置２０１には、図５〜７に示す如く、現実空間に仮想空間の画像が重畳されており、且つこの画像上の、スタイラス３０２が現実物体と接触した位置にはマーカ４０４が表示されているので、ユーザは複合現実空間を体感できるとともに、現実物体の形状やサイズなど、現実物体に係る視覚的情報が現実モデル４０１による隠蔽なしに確認することができる。
【００８２】
そして以上のステップＳ１０１０からステップＳ１０６０までの処理を終了する旨の指示が入力装置１０７から入力されたことをＣＰＵ１０１が検知しない限りは、処理をステップＳ１０７０からステップＳ１０２０に戻し、以降の処理を繰り返す。
【００８３】
通常、１フレームの処理は数ミリ秒から数１００ミリ秒程度以内に行われる。ユーザが自身の視点の位置姿勢を変更する、押しボタンスイッチ３０２を押す、仮想モデル４０２の位置姿勢を変更する、などの操作を行った場合、その操作は即時実行され、実行結果は表示装置２０１にリアルタイムで反映される。
【００８４】
そのため、仮想モデル４０２の位置姿勢を決定するときにも、ユーザは実際に仮想モデル４０２の位置姿勢の値を変化させ、その結果を確認しながら、現実モデル４０１の位置姿勢に近づけるように、繰り返し調整を行うことができる。
【００８５】
なお、本実施形態では、現実モデル４０１の形状を現実モデル４０１に隠蔽されることなくユーザに把握させるために、マーカ４０４を表示することが１つの特徴であるため、場合によっては仮想モデル４０２の表示は行わないようにしても良い。その場合、仮想モデル４０２の位置姿勢を微調整する際に、ユーザは入力装置１０７を用いてＣＰＵ１０１に指示を入力し、仮想モデル４０２を表示させる。
【００８６】
［第２実施形態］
本実施形態に係るシステムの構成については第１の実施形態と同じ、すなわち、図１に示した構成を備えるが、スタイラス３０２については、本実施形態ではスイッチ３０４に加え、先端部３０５に圧電素子などの圧力センサを設けている。すなわち本実施形態に係るスタイラス３０２は、先端部３０５が現実モデル４０１の表面に接触したか否かを信号でもってＣＰＵ１０１に通知することができる。
【００８７】
本実施形態では、ユーザは、スタイラス３０２を用いて、仮想モデル４０２の位置姿勢を変化させ、仮想モデル４０２を現実モデル４０１に一致させるように調整することができる。なお、本実施形態に係る演算処理部１００のＣＰＵ１０１が実行する処理のフローチャートは図８に示したフローチャートに従ったものであるが、スタイラス３０２の先端部３０５が現実モデル４０１の表面に触れたときに（スタイラス３０２から（より具体的には圧力センサから）、先端部３０５が現実モデル４０１の表面に接触したことを示す信号がＣＰＵ１０１に通知され、ＣＰＵ１０１がこれを検知したときに）、ユーザが押しボタンスイッチ３０４を押すと、ステップＳ１０４０において、以下の処理が行われる点が第１の実施形態とは異なる。
【００８８】
まず、ステップＳ１０３０において取得されるスタイラス３０２の先端部３０５の位置と仮想モデル４０２の形状データを参照し、仮想モデル４０２を構成する面の中で、先端部３０５の位置との距離が最小になる面を選ぶ。例えば仮想モデル４０２がポリゴンなどの面でもって形成されている場合には、先端部３０５との距離が最も小さいポリゴンを選択すれば良い。なお、面に相当するのはポリゴンに限定するものではなく、仮想モデル４０２を構成する所定サイズの要素であればよい。
【００８９】
以下では、先端部３０５を表す点をＰ、先端部３０５との距離が最小となる面をＳ、ＰとＳの距離をｄとして表記する。
【００９０】
次に、仮想モデル４０２の位置を、距離ｄが０になるように（距離ｄを減少させる方向に）、ある特定の軸Ａに沿って移動させる。この軸Ａは、ステップＳ１０３０において取得されるスタイラス３０２の姿勢を方向ベクトルとする直線とする。
【００９１】
図９は仮想モデル４０２を軸Ａに沿って移動させる様子を示す図である。なお、本実施形態では、スタイラス３０２の方向を軸Ａとして定めたが、面Ｓの法線を軸Ａと定めてもよい。その場合、仮想モデル４０２を構成する各面の法線は、仮想空間データ中の、この仮想モデル４０２を描画するためのデータの一部として含められているので、このデータを参照することで、面Ｓの法線は取得可能である。
【００９２】
以上の処理により、ユーザがスタイラス３０２の先端部３０５を現実物体４０１の表面上に接触させた状態でスイッチ３０４を押下すると、仮想モデル４０２が上記軸Ａに沿って移動し、現実モデル４０１と点Ｐにおいて接触する。
【００９３】
この処理によって仮想モデル４０２の位置が現実モデル４０１と一致しない場合は、ユーザは、また別の点Ｐをスタイラス３０２で触れ、押しボタンスイッチ３０４を押す。このように複数のフレームで点Ｐを定め、同様の処理を繰り返し行うことにより、仮想モデル４０２の位置を位置現実モデル４０１に近づけてゆくことができる。
【００９４】
図１０〜図１３には、このようにして仮想モデル４０２の位置を現実モデル４０１に近づけてゆく様子が示されている。図１０〜図１３の中で、灰色で示される立方体が現実モデル４０１、波線で示される立方体が仮想モデル４０２である。図中の星印が点Ｐを示す。
【００９５】
図１０では、現実モデル４０１の右側面の星印を点Ｐと定め、仮想モデル４０２を右方向に移動させている様子を示している。図１１は仮想モデル４０２を右方向に移動させた結果について示している。
【００９６】
図１２では、現実モデル４０１の上面の星印を点Ｐと定め、仮想モデル４０２を下方向に移動させている様子を示している。図１３は仮想モデル４０２を下方向に移動させ、仮想モデル４０２の位置が現実モデル４０１に一致した結果について示している。
【００９７】
スタイラス３０２の先端部３０５が現実モデル４０１の表面に触れていないときに（スタイラス３０２から（より具体的には圧力センサから）、先端部３０５が現実モデル４０１の表面に接触していないことを示す信号がＣＰＵ１０１に通知され、ＣＰＵ１０１がこれを検知したときに）、ユーザが押しボタンスイッチ３０４を押すと、スタイラス３０２の先端部３０５の現在の姿勢と１つ前のフレームでの姿勢との差分を計算し、その差分を仮想モデル４０２の姿勢に加算し、姿勢を変更する。
【００９８】
これにより、ユーザが、スタイラス３０２の先端部３０５が現実モデル４０１の表面に触れていない状態で押しボタンスイッチ３０４を押しながら、スタイラス３０２の姿勢を変えることによって、その姿勢の変化量は仮想モデル４０２に反映される。押しボタンスイッチ３０４を離すと、仮想モデル４０２の姿勢は、押しボタンスイッチ３０４を離したときの姿勢に固定される。
【００９９】
すなわち、ユーザは、スタイラス３０２の先端部３０５が現実モデル４０１の表面に触れている状態で、押しボタンスイッチ３０４を押すことによって、仮想モデル４０２の位置を調整することができる。また、スタイラス３０２の先端部３０５が現実モデル４０１の表面に触れていない状態で、押しボタンスイッチ３０４を押し、スタイラス３０２の姿勢を変更することで、仮想モデル４０２の姿勢を調整することができる。
【０１００】
［第３実施形態］
本実施形態では、第２の実施形態とは異なる方法でもって仮想モデル４０２の位置姿勢を変化させ、仮想モデル４０２を現実モデル４０１に一致させるように調整する。なお、本実施形態に係るシステムの構成については第２の実施形態と同じであり、且つ本実施形態に係る演算処理部１００のＣＰＵ１０１が実行する処理のフローチャートは図８に示したフローチャートに従ったものであるが、スタイラス３０２の先端部３０５が現実モデル４０１の表面に触れたときに（スタイラス３０２から（より具体的には圧力センサから）、先端部３０５が現実モデル４０１の表面に接触したことを示す信号がＣＰＵ１０１に通知され、ＣＰＵ１０１がこれを検知したときに）、ユーザが押しボタンスイッチ３０４を押すと、ステップＳ１０４０において、以下の処理が行われる点が第２の実施形態とは異なる。
【０１０１】
まず、ステップＳ１０３０において取得されるスタイラス３０２の先端部３０５の位置と仮想モデル４０２の形状データを参照し、仮想モデル４０２を構成する面の中で、先端部３０５の位置との距離が最小になる面を選ぶ。例えば仮想モデル４０２がポリゴンなどの面でもって形成されている場合には、先端部３０５との距離が最も小さいポリゴンを選択すれば良い。なお、面に相当するのはポリゴンに限定するものではなく、仮想モデル４０２を構成する所定サイズの要素であればよい。
【０１０２】
以下では、先端部３０５を表す点をＰ、先端部３０５との距離が最小となる面をＳ、ＰとＳの距離をｄとして表記する。
【０１０３】
次に、仮想モデル４０２の位置を、距離ｄが０になるように（距離ｄを減少させる方向に）、ある特定の１点Ｑを支点として、あるいは特定の２点Ｑ、Ｒを結ぶ線分を軸として回転させる。この特定の点Ｑ、Ｒは、ユーザがスタイラス３０２で任意の点を指し示すことで設定してもよいし、過去のフレームで設定した点Ｐを設定してもよい。
【０１０４】
図１４は、現実モデル４０１の右側面の星印を点Ｐ、現実モデル４０１の左下頂点の星印を点Ｑ（この点において、現実モデル４０１と仮想モデル４０２とは一致している）と定め、仮想モデル４０２を点Ｑを支点として回転させている様子を示す図である。
【０１０５】
その他の処理については、第２の実施形態と同じである。
【０１０６】
［第４実施形態］
本実施形態では、上記実施形態とは異なる方法でもって、仮想モデル４０２の位置姿勢を変化させ、仮想モデル４０２を現実モデル４０１に一致させるように調整する。より具体的にはユーザは、仮想モデル４０２上の定められた複数の点（特徴点と呼ぶ）を現実モデル４０１上の対応する点に、定められた順序でスタイラス３０２で触れることによって、特徴点の対応づけを行い、仮想モデル４０２を現実モデル４０１に自動的に一致させることができる。
【０１０７】
なお、本実施形態に係るシステムの構成については第２の実施形態と同じであり、且つ本実施形態に係る演算処理部１００のＣＰＵ１０１が実行する処理のフローチャートは、図８のフローチャートにおいて、ステップＳ１０３０からステップＳ１０５０の処理を、図１５に示すフローチャートに置き換えたものである。
【０１０８】
図１５は、本実施形態に係るシステムが行う、複合現実空間画像を生成して表示させるための処理のフローチャートにおいて、仮想モデル４０２の位置姿勢を変化させ、仮想モデル４０２を現実モデル４０１に一致させるように調整する為の処理部分を抜粋したものである。
【０１０９】
まず、システムの起動に先立ち、仮想モデル４０２を作成する段階で、仮想モデル４０２の表面上に特徴点を４点以上設定する。ただし、全ての特徴点が同一平面上に存在してはならない。これらの特徴点は、ユーザが、現実モデル４０１上の対応する特徴点を、スタイラス３０２で触れ、対応づけを行うことになる。そのため、辺の隅や突起、窪みなど、現実モデル４０１上で識別が容易である点を選択することが望ましい。
【０１１０】
また、ユーザが特徴点の対応づけを行う順序についても、仮想モデル４０２を作成する段階で指定する。これらの特徴点に係るデータは、ディスク装置１０５に保存しておく。特徴点に係るデータは、特徴点の３次元座標または仮想モデル４０２を構成するポリゴンの頂点ＩＤと、対応づけの順序との組から構成され、この組が特徴点数だけ記述されている。
【０１１１】
ステップＳ１０３０において、ユーザから「特徴点対応づけ」に該当する操作が行われた場合には、これまでに登録された特徴点のデータを破棄し、特徴点登録モードに移行する。
【０１１２】
ステップＳ１０３１では、特徴点登録モードに移行している場合には、ステップＳ１０３２に進む。そうでない場合には、ステップＳ１０４０に進む。
【０１１３】
ステップＳ１０３２では、これまでに登録された特徴点の数を調べ、規定値よりも少ない場合には、ステップＳ１０３３に進む。そうでない場合には、ステップＳ１０３４に進む。
【０１１４】
ステップＳ１０３３では、ステップＳ１０３０において、押しボタンスイッチ３０４が押されている場合には、取得された先端部３０５の位置を特徴点として登録する。スイッチ３０４が押下されたときの位置を得る処理については上記実施形態と同じである。
【０１１５】
また、特徴点の登録処理は、先端部３０５に圧電素子などの圧力センサを設け、先端部３０５が現実モデル４０１の表面に接触したことを検知して、押しボタンスイッチ３０２が押され、ＣＰＵ１０１がこれを検知した場合に行うとしても良い。押しボタンスイッチ３０２が押されていない場合には、ステップＳ１０３３では何もせず、ステップＳ１０４０に進む。
【０１１６】
ステップＳ１０３４では、登録された特徴点から、仮想モデル４０２の位置姿勢を算出する。仮想モデル４０２の位置姿勢の算出は、例えば以下のようにして行う。
【０１１７】
仮想モデル４０２上で定めた特徴点をＰｋとし、座標をｐｋ＝（Ｘｋ、Ｙｋ、Ｚｋ、１）Ｔと表現する。また、先端部３０５によってＰｋの座標を計測したときの計測値をｑｋ＝（ｘｋ、ｙｋ、ｚｋ、１）Ｔとする。また、ｐｋを特徴点数だけ並べた行列をＰ＝（ｐ１、ｐ２、、、、ｐｎ）とする。ここでｎは特徴点数であり、ｎ≧４である。また同様に、Ｑ＝（ｑ１、ｑ２、、、、ｑｎ）とする。
【０１１８】
このとき、ＰとＱの関係をＱ＝ＭＰと記述できる。ここでＭは４行４列の行列であり、点ｐｋをｑｋに変換する３次元座標変換を表す。すなわち、仮想モデル４０２に対してＭで表される変換を適用することで、現実モデル４０１に一致させることができる。このＭは以下の式から求めることができる。
【０１１９】
Ｍ＝Ｑ（ＰＴＰ）−１ＰＴ
ここで（ＰＴＰ）−１ＰＴはＰの疑似逆行列を表す。
【０１２０】
ステップＳ１０３５では、特徴点登録モードを解除し、ステップＳ１０５０に進む。
［第５実施形態］
第５実施形態では、仮想モデル４０２の位置姿勢を調整するモードと、仮想モデル４０２の位置姿勢を調整しないモードとを随時切り替えることができる。本実施形態においても図８に示したフローチャートに従った処理を行うのであるが、ステップＳ１０３０において、ユーザから「仮想モデル４０２の位置姿勢調整モード移行」に該当する操作が行われた場合に次に行うべき処理は、第１乃至４の実施形態と同じである。
【０１２１】
一方、ステップＳ１０３０において、ユーザから「仮想モデル４０２の位置姿勢非調整モード移行」に該当する操作が行われた場合は、ステップＳ１０４０において、押しボタンスイッチ３０４が押されていても、仮想指標４０４の登録を行わない。さらに、ステップＳ１０６０において、スタイラス仮想指標４０３、仮想指標４０４の描画を行わない。また、第２乃至４の実施形態の処理は行わない。
【０１２２】
すなわち本実施形態では、通常の複合現実感の処理と、仮想モデル４０２の調整処理とを、同一の複合現実感装置内で切り替えて使用することができる。
【０１２３】
［その他の実施形態］
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１２４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２５】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２６】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１２７】
【図１】本発明の第１の実施形態に係る複合現実感提示システムの基本構成を示すブロック図である。
【図２】スタイラス３０２の形状および構成を示す図である。
【図３】スタイラス３０２で現実モデルの表面に触れる様子を示した図である。
【図４】現実モデル４０１をモデリングすることで得られる仮想モデル４０２を、現実モデル４０１と並べて示した図である。
【図５】表示装置２０１に表示される複合現実空間画像の一例を示す図である。
【図６】図５に示した画面においてマーカが表示された場合の画面の表示例を示す図である。
【図７】マーカ４０４を数多く配置した場合の複合現実空間画像を示す図である。
【図８】本発明の第１の実施形態に係るシステムが行う、複合現実空間画像を生成して表示させるための処理のフローチャートである。
【図９】仮想モデル４０２を軸Ａに沿って移動させる様子を示す図である。
【図１０】現実モデル４０１の右側面の星印を点Ｐと定め、仮想モデル４０２を右方向に移動させている様子を示す図である。
【図１１】仮想モデル４０２を右方向に移動させた結果を示す図である。
【図１２】現実モデル４０１の上面の星印を点Ｐと定め、仮想モデル４０２を下方向に移動させている様子を示す図である。
【図１３】仮想モデル４０２を下方向に移動させ、仮想モデル４０２の位置が現実モデル４０１に一致した結果を示す図である。
【図１４】現実モデル４０１の右側面の星印を点Ｐ、現実モデル４０１の左下頂点の星印を点Ｑと定め、仮想モデル４０２を点Ｑを支点として回転させている様子を示す図である。
【図１５】本発明の第４の実施形態に係るシステムが行う、複合現実空間画像を生成して表示させるための処理のフローチャートにおいて、仮想モデル４０２の位置姿勢を変化させ、仮想モデル４０２を現実モデル４０１に一致させるように調整する為の処理部分を抜粋したものである。
【図１】
2005227876.tif 000003
【図２】
2005227876.tif 000004
【図３】
2005227876.tif 000005
【図４】
2005227876.tif 000006
【図５】
2005227876.tif 000007
【図６】
2005227876.tif 000008
【図７】
2005227876.tif 000009
【図８】
2005227876.tif 000010
【図９】
2005227876.tif 000011
【図１０】
2005227876.tif 000012
【図１１】
2005227876.tif 000013
【図１２】
2005227876.tif 000014
【図１３】
2005227876.tif 000015
【図１４】
2005227876.tif 000016
【図１５】
2005227876.tif 000017