(57)【要約】【課題】  現実空間と仮想空間とを合成した複合現実空間を観察している観察者に、この複合現実空間中に配置される仮想物体を、より直感的に操作可能とさせるための技術を提供すること。【解決手段】  観察者の手に装着されている手持ちセンサの位置姿勢を観察者が観察する対象の仮想物体の位置姿勢として設定し（Ｓ２０６）、位置姿勢が設定された仮想物体を観察者の視点から見た場合の画像を生成して（Ｓ２０８）、現実空間に重畳させて観察者に提供する（Ｓ２１１）。【選択図】  図１１
2005251118.tif 000002
【特許請求の範囲】
【請求項１】
現実空間中に仮想物体を重畳させて観察者に提供する画像処理方法であって、
前記観察者の視点の位置姿勢を計測する為のセンサの計測結果に基づいて、当該視点の位置姿勢を計算する第１の計算工程と、
前記観察者の手に装着されている手持ちセンサにより計測された結果に基づいて、当該手持ちセンサの位置姿勢を求める第２の計算工程と、
前記第２の計算工程で計算された位置姿勢を、前記観察者が観察する対象の仮想物体の位置姿勢として設定する設定工程と、
前記設定工程で位置姿勢が設定された仮想物体を前記第１の計算工程で求めた位置姿勢の視点から見た場合の画像を生成して、現実空間に重畳させて前記観察者に提供する提供工程とを備え、
更に前記提供工程では、
前記仮想物体における一部分が指示された場合、当該一部分が前記視点の位置姿勢から見えるように前記仮想物体の向きを変化させた前記仮想物体を前記第１の計算工程で求めた位置姿勢の視点から見た場合の画像を生成して、現実空間に重畳させて前記観察者に提供することを特徴とする画像処理方法。
【請求項２】
前記設定工程では、前記観察者が観察する対象の仮想物体の重心の位置姿勢として、前記第２の計算工程で計算された位置姿勢を設定することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記提供工程では、前記仮想物体の重心位置と前記一部分の位置とを結ぶベクトルが、前記仮想物体の重心位置と前記観察者の視点位置とを結ぶベクトルと略一致するように、前記仮想物体を回転させることを特徴とする請求項１に記載の画像処理方法。
【請求項４】
前記提供工程では、前記仮想物体の画像を生成する際、前記一部分以外を半透明にした画像を生成することを特徴とする請求項３に記載の画像処理方法。
【請求項５】
現実空間中に仮想物体を重畳させて観察者に提供する画像処理装置であって、
前記観察者の視点の位置姿勢を計測する為のセンサの計測結果に基づいて、当該視点の位置姿勢を計算する第１の計算手段と、
前記観察者の手に装着されている手持ちセンサにより計測された結果に基づいて、当該手持ちセンサの位置姿勢を求める第２の計算手段と、
前記第２の計算手段によって計算された位置姿勢を、前記観察者が観察する対象の仮想物体の位置姿勢として設定する設定手段と、
前記設定手段によって位置姿勢が設定された仮想物体を前記第１の計算手段によって求めた位置姿勢の視点から見た場合の画像を生成して、現実空間に重畳させて前記観察者に提供する提供手段とを備え、
更に前記提供手段は、
前記仮想物体における一部分が指示された場合、当該一部分が前記視点の位置姿勢から見えるように前記仮想物体の向きを変化させた前記仮想物体を前記第１の計算手段によって求めた位置姿勢の視点から見た場合の画像を生成して、現実空間に重畳させて前記観察者に提供することを特徴とする画像処理装置。
【請求項６】
コンピュータに、請求項１乃至４の何れか１項に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項７】
請求項６に記載のプログラムを格納することを特徴とする、コンピュータ読みとり可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実空間中に仮想物体を重畳させて観察者に提供する為の技術に関するものである。
【背景技術】
【０００２】
ＭＲ、ＡＲ技術は実写映像とＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）とを合成し、仮想のＣＧ物体が利用者の前に存在するかのように見せる為の技術である。
【０００３】
ＭＲ技術の典型的なアプリケーションでは、利用者はビデオシースルー型のＨＭＤを装着する。ＨＭＤ内のディスプレイには、ＨＭＤの前面のカメラからの映像と、計算機が作成したＣＧ映像が合成される。ＣＧ映像は、位置センサにより測定した利用者の視点の位置姿勢に応じて描かれるため、利用者にはあたかも現実空間に仮想のＣＧが存在するかのように見える。
【０００４】
実際のＭＲ技術の応用としては、図１に示すような工業デザインの検証が挙げられる。図１は、ＣＡＤモデル（プリンタのトナーカートリッジのＣＡＤモデル）１００を上記ＣＧ物体として表示し、ＣＡＤモデルのプレビューに使用している様子を示す図である。このとき、上述の通り、このＣＡＤモデルをプレビューする利用者は、自身の頭部に上記ＨＭＤ（Head Mount Display）を装着する必要がある。
【０００５】
図２は、ＨＭＤの構成を示す図である。
【０００６】
同図に示すＨＭＤはビデオシースルー方式のＨＭＤである。ＨＭＤは、右目カメラ１１１０、左目カメラ１１１１、ＨＭＤ内蔵位置センサ１１２０、右目ＬＣＤ１１３０、左目ＬＣＤ１１３１からなる。
【０００７】
利用者はＨＭＤを自身の頭部に装着してＣＡＤモデルをプレビューする。このとき、図３に示す如く、ＨＭＤ内の各ＬＣＤ１１３０、１１３１には、各カメラ１１１０、１１１１で撮影された実写映像と、ＣＧ画像として描かれたＣＡＤモデル３００が合成されて表示される。
【０００８】
図４は、複数人により観察できる、ＭＲ技術を使用したＣＡＤビューワの機器構成を示す図である。ここでは３人（４ａ〜４ｃ）同時にＣＡＤモデル４０００をプレビューしているが、３人のそれぞれに対する機器の構成はほぼ同一である。
【０００９】
利用者４ｂを例に取ると、ＨＭＤ１１００に備わっているカメラにより撮影された実写映像は計算機１３００にキャプチャされ、内部でＣＡＤモデル４０００のＣＧと合成される。合成した画像は映像信号としてＨＭＤ１１００に送られる。
【００１０】
計算機１３００は位置センサ１２００から、ＨＭＤ１１００の３次元での位置を知ることができる。計算機１３００はこの位置情報から、画面中にどのようにＣＡＤモデル４０００のＣＧを描画するかを決める。
【００１１】
実写映像の上にＣＡＤモデル４０００が合成されることで、利用者にはあたかもＣＡＤモデル４０００がその場にあるかのように観測される。
【特許文献１】特開２００２−２７１６９３号公報
【特許文献２】特開２００３−３０３３５６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら先に示したＭＲ技術を使ったＣＡＤモデルのプレビューでは、表示しているＣＡＤモデル４０００を直感的に移動させることが難しかった。
【００１３】
先に説明したように計算機１３００は、ＣＡＤモデルの描画位置をＨＭＤの位置情報から決めていた。つまり図４の例では、ＨＭＤ１１００を移動させると、ＬＣＤ１１３０，１１３１の画面上でのＣＡＤモデル４０００の位置は変わるが、ＣＡＤモデル４０００は常にあらかじめ設定しておいた机の上に描画される。
【００１４】
しかし、ＣＡＤモデル４０００をいろいろな方向から見るためには、ＣＡＤモデル４０００が常に机の上に描画されるのでは不都合である。例えばＣＡＤモデル４０００の底面を見たい場合、なんらかの方法でＣＡＤモデル４０００の描画位置を変更しなければならない。
【００１５】
従来、ＣＡＤモデル４０００の描画位置の変更は、計算機１３００にＣＡＤモデル４０００を向けたい方向を入力する必要があった。そのためには向けたい方向のベクトルや角度を数値で入力する必要があり、直感的にモデルを移動させられるとは言いがたかった。
【００１６】
このことは多人数でＣＡＤモデル４０００を見るような際に、特に問題になっていた。例えばＣＡＤモデルとして特定の部品を利用者全員で見たい場合、どのようにモデルを置けばよいか相談し、計算機１３００を操作するのでは使い勝手が悪かった。
【００１７】
またもう一つの問題点として、ＣＡＤモデル４０００に新しい部品を追加、削除したとき、追加、削除した部品がどこにあるのかわからなくなることがあげられる。追加、削除した部品が利用者からみてＣＡＤモデル４０００の裏側にある場合、ＣＡＤモデル４０００にどんな変更が加えられたかを把握することが難しかった。
【００１８】
本発明は以上の問題に鑑みてなされたものであり、現実空間と仮想空間とを合成した複合現実空間を観察している観察者に、この複合現実空間中に配置される仮想物体を、より直感的に操作可能とさせるための技術を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明の目的を達成するために、例えば本発明の画像処理方法は以下の構成を備える。
【００２０】
すなわち、現実空間中に仮想物体を重畳させて観察者に提供する画像処理方法であって、
前記観察者の視点の位置姿勢を計測する為のセンサの計測結果に基づいて、当該視点の位置姿勢を計算する第１の計算工程と、
前記観察者の手に装着されている手持ちセンサにより計測された結果に基づいて、当該手持ちセンサの位置姿勢を求める第２の計算工程と、
前記第２の計算工程で計算された位置姿勢を、前記観察者が観察する対象の仮想物体の位置姿勢として設定する設定工程と、
前記設定工程で位置姿勢が設定された仮想物体を前記第１の計算工程で求めた位置姿勢の視点から見た場合の画像を生成して、現実空間に重畳させて前記観察者に提供する提供工程とを備え、
更に前記提供工程では、
前記仮想物体における一部分が指示された場合、当該一部分が前記視点の位置姿勢から見えるように前記仮想物体の向きを変化させた前記仮想物体を前記第１の計算工程で求めた位置姿勢の視点から見た場合の画像を生成して、現実空間に重畳させて前記観察者に提供することを特徴とする。
【００２１】
本発明の目的を達成するために、例えば本発明の画像処理装置は以下の構成を備える。
【００２２】
すなわち、現実空間中に仮想物体を重畳させて観察者に提供する画像処理装置であって、
前記観察者の視点の位置姿勢を計測する為のセンサの計測結果に基づいて、当該視点の位置姿勢を計算する第１の計算手段と、
前記観察者の手に装着されている手持ちセンサにより計測された結果に基づいて、当該手持ちセンサの位置姿勢を求める第２の計算手段と、
前記第２の計算手段によって計算された位置姿勢を、前記観察者が観察する対象の仮想物体の位置姿勢として設定する設定手段と、
前記設定手段によって位置姿勢が設定された仮想物体を前記第１の計算手段によって求めた位置姿勢の視点から見た場合の画像を生成して、現実空間に重畳させて前記観察者に提供する提供手段とを備え、
更に前記提供手段は、
前記仮想物体における一部分が指示された場合、当該一部分が前記視点の位置姿勢から見えるように前記仮想物体の向きを変化させた前記仮想物体を前記第１の計算手段によって求めた位置姿勢の視点から見た場合の画像を生成して、現実空間に重畳させて前記観察者に提供することを特徴とする。
【発明の効果】
【００２３】
本発明の構成により、現実空間と仮想空間とを合成した複合現実空間を観察している観察者に、この複合現実空間中に配置される仮想物体を、より直感的に操作させることができる。
【発明を実施するための最良の形態】
【００２４】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００２５】
図８は、本実施形態に係るシステムの外観図である。同図では、システムと共に、このシステムを利用している観察者を示している。なお、同図では観察者の数を３としているが、以下の説明はこれに限定するものではない。
【００２６】
本実施形態に係るシステムは、現実空間中に仮想物体（ＣＧモデル）を重畳させて観察者に提供する周知のＭＲ技術を用いて、観察者の観察対象である仮想物体に対して、観察者がその位置や姿勢の変更といった各種の操作をより簡便にするためのものである。以下、本実施形態に係るシステムについて詳細に説明する。
【００２７】
同図において１０００，２０００，３０００はそれぞれ観察者で、本システムを用いて、現実空間中に仮想物体を重畳させた空間（複合現実空間）を観察する。それぞれの観察者の頭部には周知のＨＭＤ１１００，２１００，３１００が装着されており、それぞれの観察者は自身の頭部に装着されたＨＭＤにより、複合現実空間の画像を見ることができる。
【００２８】
それぞれの観察者に提供する複合現実空間の画像は、それぞれのＨＭＤに接続されている計算機１３００，２３００，３３００により生成される。
【００２９】
ここで、それぞれの観察者に対して複合現実空間の画像を生成して提供する為の装置の構成については実施的には同じであるので、以下の説明では観察者１０００に対して複合現実空間の画像を提供する装置の構成について説明するが、同様の説明は特に断らない限り、それ以外の観察者２０００，３０００に対しても同様に適用可能である。
【００３０】
観察者１０００は自身の頭部にＨＭＤ１１００を装着しており、ＭＲ技術では周知の通り、観察者１０００はこのＨＭＤにより自身の頭部の位置姿勢に応じた複合現実空間の画像を見ることができる。
【００３１】
また、観察者１０００は手持ちセンサ５０００を手に持っている。本実施形態では手持ちセンサ５０００は観察者１０００、２０００、３０００の何れかが持っていればよいが、本実施形態では観察者１０００のみが持っているものとする。
【００３２】
なお、手持ちセンサ５０００は必ずしも手に「持つ」必要はなく、手に「装着」していればよい。手持ちセンサ５０００は、後述する３次元センサ固定局１２１０との相対位置姿勢を計測し、その計測結果を示す信号を後述する３次元センサ本体１２００に出力する。
【００３３】
３次元センサ固定局１２１０は、磁気センサの場合、ＨＭＤ１１００に備わっている後述のセンサ、手持ちセンサ５０００がそれぞれの位置姿勢の計測を行うために検知する磁界を発生する。以下の説明では便宜上、センサは全て磁気センサものを用いることとするが、その他のセンサ、例えば、超音波センサなどを用いても以下の説明は実質的には同じである。
【００３４】
３次元センサ本体１２００は、ＨＭＤ１１００に備わっている後述のセンサ、３次元センサ固定局１２１０、手持ちセンサ５０００を制御し、ＨＭＤ１１００に備わっている後述のセンサ、手持ちセンサ５０００が計測した結果をデータとして計算機１３００に出力する。
【００３５】
計算機１３００は例えばＰＣ（パーソナルコンピュータ）やＷＳ（ワークステーション）等により構成されており、観察者１０００に自身の頭部の位置姿勢に応じた複合現実空間の画像を提供するための各種の処理を行う。また、計算機１３００はネットワークハブ６０００に接続されており、他の計算機２３００，３３００とのデータ通信を行うことができ、例えば手持ちセンサ５０００により計測された結果を計算機１３００から計算機２３００，３３００に送信することができる。
【００３６】
図９は、観察者１０００に対して複合現実空間の画像を提供する為の装置の基本構成を示す図である。
【００３７】
ＨＭＤ１１００はＨＭＤ内蔵センサ１１２０，右目カメラ１１１０、左目カメラ１１１１、右目ＬＣＤ１１３０，左目ＬＣＤ１１３１により構成されている。ＨＭＤ内蔵センサ１１２０は、３次元センサ固定局１２１０から発せられる磁界を検知し、検知した磁界の強度を示す信号を３次元センサ本体１２００に出力する。
【００３８】
手持ちセンサ５０００は、上述の通り、観察者１０００の手に装着されているもので、その位置姿勢は観察者１０００の手が動くことにより変化する。手持ちセンサ５０００は、３次元センサ固定局１２１０から発せられる磁界を検知し、検知した磁界の強度を示す信号を３次元センサ本体１２００に出力する。
【００３９】
３次元センサ本体１２００は、ＨＭＤ内蔵センサ１１２０、手持ちセンサ５０００から受けた信号の強度に基づいて、センサ座標系（世界座標系（現実空間中の１点を原点とし、この原点で互いに直交する３軸をそれぞれｘ、ｙ、ｚ軸とする座標系）における位置がわかっている所定位置を原点とし、この原点で互いに直交する３軸をそれぞれｘ、ｙ、ｚ軸とする座標系）におけるＨＭＤ内蔵センサ１１２０、手持ちセンサ５０００の位置姿勢を示すデータを求め、計算機１３００に出力する。
【００４０】
右目カメラ１１１０、左目カメラ１１１１はそれぞれ、ＨＭＤ１１００を頭部に装着する観察者１０００の右目、左目から見える現実空間の動画像を撮像するものである。右目カメラ１１１０、左目カメラ１１１１のそれぞれにより撮像された動画像を構成する各フレームの画像データは計算機１３００に出力する。
【００４１】
右目ＬＣＤ１１３０、左目ＬＣＤ１１３１はそれぞれ、右目カメラ１１１０、左目カメラ１１１１のそれぞれによって撮像された現実空間に、計算機１３００が生成した仮想物体の画像を重畳させた画像（複合現実空間の画像）を表示するものであり、これにより、ＨＭＤ１１００を頭部に装着した観察者１０００は、自身の右目、左目に対応する複合現実空間の画像を眼前に見ることができる。
【００４２】
次に計算機１３００について説明する。
【００４３】
シリアルＩ／Ｏ１３１０は、３次元センサ本体１２００から出力されるデータを受ける為のインターフェースとして機能するものであり、受けたデータはメモリ１３０２に出力される。なお、このデータは上述の取り、ＨＭＤ内蔵センサ１１２０や手持ちセンサ５０００のセンサ座標系における位置姿勢を示すデータである。本実施形態ではこの位置姿勢は、位置（ｘ、ｙ、ｚ）を示すデータと、姿勢（ｒｏｌｌ，ｐｉｔｃｈ，ｙａｗ）を示すデータにより構成されているものとする。すなわち、ＨＭＤ内蔵センサ１１２０、手持ちセンサ５０００は、６自由度の計測センサである。
【００４４】
なお、位置姿勢を表現する方法は他にも考えられ、これに限定するものではない。
【００４５】
ここで、メモリ１３０２には、世界座標系における予め計測された３次元センサ固定局１２１０の位置姿勢を示すデータ（オフセットデータ）が記憶されている。従って、このオフセットデータを用いれば周知の通り、センサ座標系における任意の位置姿勢を、世界座標系における位置姿勢に変換することができるので、ＣＰＵ１３０１は、オフセットデータと、シリアルＩ／Ｏ１３１０を介してメモリ１３０２に入力された「センサ座標系におけるＨＭＤ内蔵センサ１１２０の位置姿勢を示すデータ」とを用いれば、「世界座標系におけるＨＭＤ内蔵センサ１１２０の位置姿勢」を求めることができるし、オフセットデータと、シリアルＩ／Ｏ１３１０を介してメモリ１３０２に入力された「センサ座標系における手持ちセンサ５０００の位置姿勢を示すデータ」とを用いれば、「世界座標系における手持ちセンサ５０００の位置姿勢」を求めることができる。
【００４６】
このような座標変換による位置姿勢の計算技術については周知の技術であるので、これ以上の説明は省略する。
【００４７】
ビデオキャプチャカード１３２０、１３２１はそれぞれ、右目カメラ１１１０、左目カメラ１１１１から入力される、各フレームの画像を受けるためのインターフェースとして機能するものであり、受けた画像は順次メモリ１３０２に出力する。本実施形態では、各フレームの画像はＮＴＳＣに準拠したものであるとするが、これに限定するものではない。
【００４８】
ビデオカード１３３０，１３３１はそれぞれ、ＣＰＵ１３０１が後述する処理により生成した右目、左目に対応する複合現実空間の画像を右目ＬＣＤ１１３０、左目ＬＣＤ１１３１に出力するためのインターフェースとして機能するものであり、右目、左目に対応する複合現実空間の画像はそれぞれ、ＶＧＡに準拠した画像信号としてビデオカード１３３０、１３３１を介して右目ＬＣＤ１１３０、左目ＬＣＤ１１３１に出力される。
【００４９】
ＣＰＵ１３０１は、計算機１３００全体の制御を行うと共に、他の計算機２３００，３３００とのデータ通信を制御したり、計算機１３００が行うべき後述の各処理を実行する。このような処理の実行は、メモリ１３０２に記憶されている各種のプログラムやデータを実行することでなされる。
【００５０】
メモリ１３０２は、ＣＰＵ１３０１が各種の処理を実行するために使用するワークエリアや、ＣＰＵ１３０１に各種の処理を実行させるためのプログラムやデータを記憶するためのエリア、また、シリアルＩ／Ｏ１３１０、ビデオキャプチャカード１３２０、１３２１を介して入力される各種のデータを一時的に記憶するためのエリアを備える。
【００５１】
ネットワークＩ／Ｆ（インターフェース）１３９０は、計算機１３００を通信路を介して上記ネットワークハブ６０００に接続するためのインターフェースとして機能するものであり、このネットワークＩ／Ｆ１３９０を介して計算機１３００は他の計算機２３００、３３００とのデータ通信を行うことができる。
【００５２】
ＰＣＩブリッジ１３０３は、ＣＰＵ１３０１、メモリ１３０２、ネットワークＩ／Ｆ１３９０がつながっているバスと、シリアルＩ／Ｏ１３１０、ビデオキャプチャカード１３２０、１３２１，ビデオカード１３３０、１３３１を繋ぐバスとを電気的に繋ぐためのものである。
【００５３】
次に、以上の構成を備える各装置によって、観察者１０００に複合現実空間の画像を提示する処理について説明する。また、以下の説明における「仮想物体」は、観察者１０００が観察しようとする対象の仮想物体である。すなわち、よく観察するために、その位置姿勢を観察者１０００が簡便に変更するための仮想物体である。
【００５４】
３次元センサ本体１２００は常に手持ちセンサ５０００、ＨＭＤ内蔵センサ１１２０から出力される信号を受け、受けた信号に応じたデータ、すなわち、センサ座標系における位置姿勢を示すデータに変換して計算機１３００に出力する。計算機１３００のＣＰＵ１３０１は、上記オフセットデータとシリアルＩ／Ｏ１３１０を介してメモリ１３０２に入力されたデータとを用いて、世界座標系における手持ちセンサ５０００の位置姿勢、世界座標系におけるＨＭＤ内蔵センサ１１２０の位置姿勢を計算する。計算結果を示すデータは後述する処理で用いるために、一時的にメモリ１３０２に記憶させておく。
【００５５】
図５は、手持ちセンサ５０００の構成例を示す図である。手持ちセンサ５０００は、３次元センサ固定局１２１０からの磁界を検知するセンサ部５００１と、このセンサ部５００１のカバーとして機能するセンサカバー５００２と、観察者１０００が手に持つ部分の手持ち部５００３とから成る。
【００５６】
一方、右目カメラ１１１０、左目カメラ１１１１は常に、ＨＭＤ１１００の位置姿勢（換言すれば、観察者１０００の頭部の位置姿勢）に応じて見える現実空間の動画像を撮像するので、この動画像を構成する各フレームの画像はデータとしてビデオキャプチャカード１３２０、１３２１を介して順次メモリ１３０２に入力される。
【００５７】
ＣＰＵ１３０１は、先に計算したＨＭＤ内蔵センサ１１２０の世界座標系における位置姿勢に、ＨＭＤ内蔵センサ１１２０と左目カメラ１１１１との位置姿勢のずれ（予め計測し、その計測結果を示すデータはメモリ１３０２に記憶されている）を加算して、世界座標系における左目カメラ１１１１の位置姿勢を求め、求めた位置姿勢から見える仮想物体の画像を生成する。
【００５８】
ここで、仮想物体の位置姿勢には、手持ちセンサ５０００の世界座標系における位置姿勢を設定する。すなわち、観察者１０００は、手持ちセンサ５０００を任意の位置姿勢に移動させることで、仮想物体の位置姿勢を任意に設定することができる。
【００５９】
これにより、世界座標系における手持ちセンサ５０００の位置姿勢に仮想物体を配置することができる。なお、仮想物体の位置姿勢の決定処理の詳細については後述する。
【００６０】
そしてＣＰＵ１３０１は仮想物体の配置後、世界座標系における左目カメラ１１１１の位置姿勢から見える仮想物体の画像を生成する。また、仮想物体の画像を生成する際には、仮想物体に関するデータ（例えば、仮想物体の形状に関するデータ、色やテクスチャに関するデータなど）を用いるのであるが、このデータはメモリ１３０２に記憶されている。
【００６１】
そしてＣＰＵ１３０１は、上記処理により生成した仮想物体の画像を、先にメモリ１３０２にビデオキャプチャカード１３２１から入力された「観察者の左目から見える現実空間の画像」上に重畳させる。これにより、観察者１０００の左目から見た現実空間に、観察者１０００の左目から見た仮想物体を重畳させた上記複合現実空間画像を生成することができるので、ＣＰＵ１３０１は生成した複合現実空間の画像をビデオカード１３３１を介してＨＭＤ１１００の左目ＬＣＤ１１３１に出力する。これにより、ＨＭＤ１１００の左目ＬＣＤ１１３１には、観察者１０００の左目から見た複合現実空間の画像が表示される。
【００６２】
なお、右目ＬＣＤ１１３０に観察者１０００の右目から見た複合現実空間の画像を表示させる処理についても、上記左目の場合と同様にして行う。すなわち、ＣＰＵ１３０１は、先に計算したＨＭＤ内蔵センサ１１２０の世界座標系における位置姿勢に、ＨＭＤ内蔵センサ１１２０と右目カメラ１１１０との位置姿勢のずれ（予め計測し、その計測結果を示すデータはメモリ１３０２に記憶されている）を加算して、世界座標系における右目カメラ１１１０の位置姿勢を求め、求めた位置姿勢から見える仮想物体の画像を生成する。
【００６３】
そして生成した仮想物体の画像を、先にメモリ１３０２にビデオキャプチャカード１３２０から入力された「観察者の右目から見える現実空間の画像」上に重畳させる。これにより、観察者１０００の右目から見た現実空間に、観察者１０００の右目から見た仮想物体を重畳させた上記複合現実空間画像を生成することができるので、ＣＰＵ１３０１は生成した複合現実空間の画像をビデオカード１３３０を介してＨＭＤ１１００の右目ＬＣＤ１１３０に出力する。これにより、ＨＭＤ１１００の右目ＬＣＤ１１３０には、観察者１０００の右目から見た複合現実空間の画像が表示される。
【００６４】
以上の処理により、右目ＬＣＤ１１３０、左目ＬＣＤ１１３１にはそれぞれ、観察者１０００の右目、左目から見える複合現実空間の画像が表示されるので、ＨＭＤ１１００を観察者１０００は自身の頭部の位置姿勢に応じた複合現実空間の画像を眼前に見ることができる。
【００６５】
図６は、手持ちセンサ５０００の位置姿勢が設定された仮想物体の表示例を示す図である。同図左は、仮想物体を表示していない状態を示しており、同図右は、手持ちセンサ５０００の位置姿勢が設定された仮想物体４０００の表示例を示している。同図では、仮想物体４０００の重心位置（予め決められており、仮想物体に関するデータに含められている）を、手持ちセンサ５０００の位置に合わせている。
【００６６】
以上の処理により、観察者１０００は、観察しようとする仮想物体の位置姿勢を、手持ちセンサ５０００を持った手を動かすだけで変更することができるので、より直感的に仮想物体の位置姿勢を変更することができ、仮想物体をよく観察することができる。
【００６７】
図１０は、計算機１３００を起動した際にＣＰＵ１３０１が行う処理のフローチャートである。
【００６８】
先ず、ＨＭＤ１１００の右目カメラ１１１０、左目カメラ１１１１のカメラパラメータ（画角や焦点距離など）から、projection matrixを作成し、メモリ１３０２にデータとして記憶しておく（ステップＳ１００）。ここでprojection matrixとは、周知の通り、仮想空間中の物体を表示面に投影して画像を生成するための投影行列である。このprojection matrixを生成しておくことでこのprojection matrixを用いて生成した仮想物体の画像と、右目カメラ１１１０、左目カメラ１１１１により撮像された現実空間の画像とを合成した場合に、それぞれの画像間で画角や焦点距離などの整合性がとれる。
【００６９】
次に、仮想物体のローカル座標（仮想物体をＣＧソフトなどで作成する際にこの仮想物体について設定する原点、及びこの原点で互いに直交する軸をそれぞれｘ、ｙ、ｚ軸とすることで規定される座標系）での重心（ｇｘ、ｇｙ、ｇｚ）を求める。そして（−ｇｘ、−ｇｙ、−ｇｚ）だけ平行移動する変換行列ＭＧを作成する（ステップＳ１０１）。この変換行列ＭＧを仮想物体に適用すれば、仮想物体の重心をローカル座標の原点とすることができる。
【００７０】
次に、仮想物体の方向補正行列ＭＤに単位行列を代入する（ステップＳ１０２）。仮想物体の方向補正行列ＭＤは、手持ちセンサ５０００に対して、仮想物体がどのような方向を向いているかを示している。初期状態ではＭＤには単位行列が入っているので、手持ちセンサ５０００と仮想物体とは同じ方向を向いている。
【００７１】
このＭＤに回転を表す行列を設定することで、図７に示す如く、指定された部品を利用者の方向に向けることができる。
【００７２】
このＭＤは計算機１３００のみが保持している（より具体的には計算機１３００のメモリ１３０２のみが保持している）行列であり、この行列は、計算機１３００のＣＰＵ１３０１が求めた、世界座標系における手持ちセンサ５０００の位置姿勢と共に、計算機２３００、３３００に送信される。
【００７３】
また、移動中フラグをＦＡＬＳＥに設定する（ステップＳ１０２）。移動中フラグは、図７に示す如く、仮想物体が回転中であるか否かを示すためのフラグである。その詳細については後述するが、その使用用途は、指定された部品を観察者の方向に向けるアニメーション動作を実行するかどうかの判断に使用する。
【００７４】
以上の処理が、計算機１３００が起動した際に実行される。
【００７５】
図１１は、上記処理の後に、ＣＰＵ１３０１、及びその他の各部が、複合現実空間の画像を生成して観察者１０００に提示する為の処理のフローチャートである。なお、上述の通り、右目ＬＣＤ１１３０に複合現実空間の画像を表示するための処理、左目ＬＣＤ１１３１に複合現実空間の画像を表示するための処理は何れも実質的には同じであり、その何れも図１１に示したフローチャートに従っている。
【００７６】
従って、以下の説明では、右目ＬＣＤ１１３０に複合現実空間の画像を表示するための処理を例にとって説明するが、左目ＬＣＤ１１３１に複合現実空間の画像を表示する場合についても、係る処理は同じである。
【００７７】
右目カメラ１１１０により撮像された現実空間の動画像を構成する各フレームの画像（ビデオ映像）は、ビデオキャプチャカード１３２０を介して計算機１３００に入力されるので、ＣＰＵ１３０１はこれをメモリ１３０２に順次入力し（ステップＳ２００）、メモリ１３０２上に設けられているビデオバッファに書き込む（ステップＳ２０１）。本実施形態では、各フレームの画像は、１フレーム（２フィールド）分、６４０×４８０ピクセルでもって右目カメラ１１１０から入力されるが、これに限定するものではない。
【００７８】
一方、シリアルＩ／Ｏ１３１０を介して、３次元センサ本体１２００から、ＨＭＤ内蔵センサ１１２０が計測した位置姿勢を示すデータが入力されるので、ＣＰＵ１３０１はこのデータと上記オフセットデータとを用いて周知の計算により、世界座標系におけるＨＭＤ内蔵センサ１１２０の位置姿勢を求め、求めた位置姿勢に、ＨＭＤ内蔵センサ１１２０と右目カメラ１１１０との位置姿勢のずれのデータを加算して、世界座標系における右目カメラ１１１０の位置姿勢を求める（ステップＳ２０２）。
【００７９】
次に、上記projection matrixや右目カメラ１１１０の位置姿勢などに応じて、周知のviewing matrixを生成し、生成したviewing matrixのデータをメモリ１３０２に記録する（ステップＳ２０３）。このviewing matrixは周知の通り、仮想物体を見る仮想カメラの位置姿勢を右目カメラ１１１０の位置姿勢に一致させるためのものである。
【００８０】
また、シリアルＩ／Ｏ１３１０を介して、３次元センサ本体１２００から、手持ちセンサ５０００が計測した位置姿勢を示すデータが入力されるので、ＣＰＵ１３０１はこのデータと上記オフセットデータとを用いて周知の計算により、世界座標系における手持ちセンサ５０００の位置姿勢を求める（ステップＳ２０４）。より具体的には、世界座標系における原点から世界座標系における手持ちセンサ５０００の位置姿勢への変換行列ＳＴを求める処理を行う。求めた変換行列ＳＴのデータはメモリ１３０２に記録される。
【００８１】
また、この変換行列ＳＴのデータは、ネットワークＩ／Ｆ１３９０、ネットワークハブ６０００を介してその他の計算機２３００，３３００に出力される。
【００８２】
次に、仮想物体の方向調整行列ＭＤを更新する（ステップＳ２０５）。これは先に図７で示したように、指定した部品を観察者１０００の方向に向けるアニメーションを実現するための処理である。
【００８３】
図１５は、このステップＳ２０５における処理の詳細を示すフローチャートである。
【００８４】
先ず、ＣＰＵ１３０１は、仮想物体が回転中であるか否かを示すフラグを参照し、このフラグがＴＲＵＥであるか否かを判断する（ステップＳ４００）。このフラグがＦＡＬＳＥである場合には仮想物体は回転していない、すなわち、回転する必要がないので、同図のフローチャートに従った処理を終了し、図１１のステップＳ２０６に処理をリターンする。
【００８５】
一方、このフラグがＴＲＵＥである場合、処理をステップＳ４０１に進め、仮想物体を回転させたい角度（方向補正目標値）ＲＡと、現在の仮想物体の角度（方向補正現在値）ＲＣのとの差が閾値θより小さいか否かを判断する（ステップＳ４０１）。本実施形態では閾値θとして「３度」とするが、これに限定されるものではない。また、角度ＲＡについては後述する。
【００８６】
上記差がθよりも小さい場合には、処理をステップＳ４０２に進め、回転が終了したものと判断し、フラグの値をＦＡＬＳＥに更新し（ステップＳ４０２）、同図のフローチャートに従った処理を終了し、図１１のステップＳ２０６に処理をリターンする。
【００８７】
一方、上記差がθ以上である場合には、処理をステップＳ４０３に進め、現在の仮想物体の角度ＲＣにθを加算して更新する処理を行う（ステップＳ４０３）。そして、上記方向調整行列ＭＤに、「仮想物体の回転軸を示すベクトルＲＶを中心にθだけ回転する変換行列」を乗じて行列ＭＤを更新する処理を行う（ステップＳ４０４）。
【００８８】
従って、ベクトルＲＶを軸に、仮想物体を回転させ、仮想物体の所望の部分（例えば仮想物体において観察者１０００が選択した一部分）が観察者１０００に見えるような角度になる場合、この角度が上記角度ＲＡに相当する。
【００８９】
以上説明したステップＳ２０５における処理を繰り返し行うことで、仮想物体の所望の部分を観察者１０００に向けるアニメーションを実現させることができる。
【００９０】
図１１に戻って、仮想物体の位置姿勢を示す行列であるworld matrixを以下の式に従って求める（ステップＳ２０６）。
【００９１】
ＭＤ・ＭＧ・ＳＴ
ここで、ＭＤは仮想物体の方向補正行列、ＭＧは仮想物体の重心をローカル座標の原点に移動させる変換行列である。これにより求まる行列world matrixは、仮想物体の重心位置を、手持ちセンサ５０００の位置姿勢に一致させる為のものである。
【００９２】
次に、上記フラグがＴＲＵＥであるか否かを判断する（ステップＳ２０７）。フラグがＦＡＬＳＥである場合、処理をステップＳ２０８に進め、ＣＰＵ１３０１は、仮想物体の画像をworld matrix等を用いて周知の技術により生成する（ステップＳ２０８）。この画像は上述の通り、世界座標系における右目カメラ１１１０の位置姿勢に応じて見える仮想物体の画像である。生成した仮想物体の画像はメモリ１３０２上でレンダリングする。
【００９３】
一方、ステップＳ２０７で、フラグがＴＲＵＥである場合、処理をステップＳ２０９に進める。ステップＳ２０９，Ｓ２１０ではそれぞれ、仮想物体の所望の部分の画像、所望の部分ではない部分の画像をステップＳ２０８と同様にしてレンダリングするのであるが、ステップＳ２１０でのレンダリングは、レンダリング対象の画像を半透明にしてレンダリングする。レンダリング対象の画像を半透明形式にする技術については周知のものであるので、ここでの説明は省略する。
【００９４】
以上のステップＳ２０８、もしくはステップＳ２０９，Ｓ２１０の何れの処理を行っても、メモリ１３０２上には仮想物体の画像がレンダリングされるのであるが、メモリ１３０２には先に現実空間の画像が格納されており、ステップＳ２０８、もしくはステップＳ２０９，Ｓ２１０の何れでも、この現実空間の画像上に仮想物体の画像をレンダリングする。これにより、結果としてメモリ１３０２上には、現実空間の画像上に仮想物体の画像が重畳された画像、すなわち、複合現実空間の画像が生成されるので、ＣＰＵ１３０１はこの複合現実空間の画像のデータを、ビデオカード１３３０のフレームバッファに出力する（ステップＳ２１１）。その結果、ビデオカード１３３０のフレームバッファの画像は右目ＬＣＤ１１３０に出力される
以上の処理を繰り返し行うことにより、観察者１０００は、観察しようとする仮想物体の位置姿勢を、手持ちセンサ５０００を持った手を動かすだけで変更することができるので、より直感的に仮想物体の位置姿勢を変更することができ、仮想物体をよく観察することができる。
【００９５】
また上述の通り、計算機１３００が求めた、世界座標系における手持ちセンサ５０００の位置姿勢、すなわち、行列ＳＴのデータを他の計算機２３００，３３００に送信することにより、計算機２３００，３３００は計算機１３００と同様の処理を行う（上記処理において行列ＳＴを求める処理の代わりに、計算機１３００から行列ＳＴのデータを受ける処理を行う）ことにより、観察者２０００、３０００に対して、観察者１０００が手持ちセンサ５０００でもってその位置や姿勢を操作している仮想物体を見せることができる。
【００９６】
次に、仮想物体の一部分を観察者が指示（選択）した場合に、選択した部分を観察者１０００に見えるように、仮想物体を回転させる処理について説明する。
【００９７】
仮想物体の一部分とは、例えば、仮想物体を構成する部品などである。また、その指示（選択）手段については、例えば、予め選択されているものでも良いし、計算機１３００のオペレータが計算機１３００に備わっているキーボードやマウスなどを用いて指示するようにしても良いし、その指示方法は特に限定するものではない。また、仮想物体の一部分とは、観察者１０００に指示されたものに限定するものではなく、仮想物体に追加した部品や、削除した部品などであっても良い。すなわち、仮想物体の一部分とは、観察者１０００が観察する対象の部分であって、これが何であるかは特に限定するものではない。
【００９８】
例えば仮想モデルが図１４に示す如く、複数の部品（同図では各立方体に相当）により構成されており、且つこの仮想物体を紙面手前から観察者１０００が観察しており、同図において４１００で示す部品が選択された場合、観察者１０００はこの部品４１００を観察したいのであるから、この部品４１００をより見やすくするために、仮想物体を回転させ、部品４１００が紙面手前にくるようにしたい。以下では同図の仮想物体を例に取り説明するが、以下の説明の本質はこれに限定されるものではないことは明らかである。
【００９９】
図１２は、仮想物体の一部分が指示されている場合に、この一部分を観察者に対して向けるべく、仮想物体を回転させる処理のフローチャートである。同図のフローチャートに従った処理は、仮想物体の一部が選択された際に、図１５のフローチャートにおいて、ステップＳ４００の前で行われるものである。
【０１００】
先ず、ＣＰＵ１３０１は、選択された部品４１００の重心位置（部品４１００の位置）を求める（ステップＳ３００）。この重心位置は、例えば部品４１００がポリゴンにより構成されている場合には、各ポリゴンの頂点位置の平均値で近似する。
【０１０１】
次に、ＣＰＵ１３０１は、ステップＳ３００で求めた重心位置と、仮想物体全体の重心位置とを結ぶベクトルＰＤを求める（ステップＳ３０１）。ベクトルＰＤは、選択された部品４１００が、現在どの方向を向いているかを示すものである。
【０１０２】
次に、ＣＰＵ１３０１は、世界座標系におけるＨＭＤ内蔵センサ１１２０の位置（この位置を元に、例えば右目カメラ１１１０の世界座標系における位置や左目カメラ１１１１の世界座標系における位置を計算し、これらの位置を用いても良いが、観察者１０００の「視点位置」とする位置であることが好ましい）と、仮想物体の重心位置とを結ぶベクトルＵＤを求める（ステップＳ３０２）。なお、本実施形態の場合には、観察者は３人いるので、それぞれの観察者の頭部に装着されているＨＭＤに備わっているＨＭＤ内蔵センサの世界座標系における位置を取得し、取得した３つの位置を平均化した位置を求め、求めた位置と仮想物体の重心位置とを結ぶベクトルを上記ベクトルＵＤとして求める。ベクトルＵＤは、部品４１００を向けるべき方向を示すものである。
【０１０３】
次に、ＣＰＵ１３０１は、ベクトルＰＤとベクトルＵＤとがなす角ＲＡをそれぞれのベクトルの内積を計算することにより求める（ステップＳ３０３）。ＲＡは、仮想物体を回転させる角度（方向補正目標値）となる。次に、ＣＰＵ１３０１は、ベクトルＰＤとベクトルＵＤとの外積を計算し、それぞれのベクトルに垂直なベクトルＲＶを求める（ステップＳ３０４）。ベクトルＲＶは、仮想物体を回転させるときの回転軸となる。図１３は、上記各ベクトルＲＶ、ＵＤ、ＰＤを示す図である。
【０１０４】
次に、ＣＰＵ１３０１は、角度ＲＡが１８０度より大きかった場合には（ステップＳ３０５）、回転の向きを逆にするため、回転軸ＲＶの向きを反転させ、角度ＲＡを「１８０度−ＲＡ」に更新する（ステップＳ３０６）。
【０１０５】
次に、現在何度だけ仮想物体を回転させたかを示す角ＲＣ（方向補正現在値）を０度に設定し、仮想物体を回転させている途中であることを示すフラグをＴＲＵＥにする（ステップＳ３０７）。
【０１０６】
そして処理を、図１５のステップＳ４００に進める。
【０１０７】
すなわち、この処理では、仮想物体の重心位置と部品４１００の位置とを結ぶベクトルが、仮想物体の重心位置と観察者の視点位置とを結ぶベクトルと略一致するように、仮想物体を回転させている。
【０１０８】
以上の処理により、部品４１００を、手持ちセンサ５０００の位置で仮想物体の重心を中心に回転させて、観察者１０００側に向けることができる。
【０１０９】
以上の説明により、本実施形態によって、手持ちセンサの位置を変えたり、向きを変えることで、仮想物体を自由な角度から眺めることができる。
【０１１０】
また、手持ちセンサの位置は、仮想物体の重心と一致している。重心が一致しているため、観察者は「手持ちセンサで仮想モデルを持っている」という感覚で仮想物体を操作することができる。
【０１１１】
また仮想モデルを構成する一部分（部品）を選択すると、その部品が観察者側に向くよう仮想物体を重心を中心に回転させることができる。また、観察者が複数人のときには、最も多くの観察者に見える方向に仮想物体を回転させることができる。これにより、仮想物体の検討などをスムーズに行うことができる。
【０１１２】
また仮想物体が見やすい方向に回転している間は、仮想物体の選択された部品以外の部分は半透明に表示する。これにより選択した部品をよりわかりやすく観察者に提示できる。
【０１１３】
なお、本実施形態では、仮想物体の位置姿勢として上記world matrixが示す位置姿勢を設定していたが、単純に、手持ちセンサ５０００の位置姿勢をそのまま設定しても良い。  また、本実施形態では、選択した部品の画像以外を半透明にして表示したが、選択した部品以外を半透明にして表示するか否かを切り替えるようにしても良いし、選択した部品以外を所定の色でもって表示するようにしても良いし、選択した部品、選択した部品以外をどのようにして表示するかの表示形態は特に限定するものではない。
【０１１４】
また、ＨＭＤの位置姿勢を求める方法は上記方法に限定するものではなく、右目カメラ１１１０、左目カメラ１１１１が撮像した画像中の世界座標系における位置が既知であるマーカなどから周知の技術によりＨＭＤの姿勢を推定してもよい。
【０１１５】
また、本実施形態では、仮想物体を重心位置を中心として回転させたが、回転の中心位置は重心位置に限定するものではなく、仮想物体中の任意の１点でも良いし、その中心位置の設定は特に限定するもではない。
【０１１６】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１１７】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１８】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１９】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１２０】
【図１】ＣＡＤモデル（プリンタのトナーカートリッジのＣＡＤモデル）１００をＣＧ物体として表示し、ＣＡＤモデルのプレビューに使用している様子を示す図である。
【図２】ＨＭＤの構成を示す図である。
【図３】ＨＭＤ内の各ＬＣＤ１１３０、１１３１に表示される、各カメラ１１１０、１１１１で撮影された実写映像と、ＣＧ画像として描かれたＣＡＤモデル３００が合成された画像を示す図である。
【図４】複数人により観察できる、ＭＲ技術を使用したＣＡＤビューワの機器構成を示す図である。
【図５】手持ちセンサ５０００の構成例を示す図である。
【図６】手持ちセンサ５０００の位置姿勢が設定された仮想物体の表示例を示す図である。
【図７】指定された部品を利用者の方向に向ける様子を示す図である。
【図８】本発明の実施形態に係るシステムの外観図である。
【図９】観察者１０００に対して複合現実空間の画像を提供する為の装置の基本構成を示す図である。
【図１０】計算機１３００を起動した際にＣＰＵ１３０１が行う処理のフローチャートである。
【図１１】ＣＰＵ１３０１、及びその他の各部が、複合現実空間の画像を生成して観察者１０００に提示する為の処理のフローチャートである。
【図１２】仮想物体の一部分が指示されている場合に、この一部分を観察者に対して向けるべく、仮想物体を回転させる処理のフローチャートである。
【図１３】各ベクトルＲＶ、ＵＤ、ＰＤを示す図である。
【図１４】複数の部品（同図では各立方体に相当）により構成されている仮想物体を示す図である。
【図１５】ステップＳ２０５における処理の詳細を示すフローチャートである。
【図１】
2005251118.tif 000003
【図２】
2005251118.tif 000004
【図３】
2005251118.tif 000005
【図４】
2005251118.tif 000006
【図５】
2005251118.tif 000007
【図６】
2005251118.tif 000008
【図７】
2005251118.tif 000009
【図８】
2005251118.tif 000010
【図９】
2005251118.tif 000011
【図１０】
2005251118.tif 000012
【図１１】
2005251118.tif 000013
【図１２】
2005251118.tif 000014
【図１３】
2005251118.tif 000015
【図１４】
2005251118.tif 000016
【図１５】
2005251118.tif 000017