(57)【要約】【課題】  仮想物体の操作方法を適宜切り替え可能にし、正確、かつ、効率的に仮想物体の操作を行うこと。【解決手段】  撮像部位置姿勢計測部１０２０は現実空間、仮想空間で共有される視点の位置姿勢を取得し、操作部位置姿勢計測部１０７０は操作部１１００の位置姿勢を計測し、仮想物体操作部１０８０はパラメータを操作部１１００の位置姿勢を用いて、選択された操作方法で操作し、仮想画像生成部１１１０は操作されたパラメータに従った位置姿勢の仮想物体の、視点の位置姿勢から見える画像を生成し、表示部１０３０は上記視点から見える現実空間に重畳させて観察者に提示する。【選択図】  図８
2005107972.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間の画像を生成し、現実空間に重畳させて観察者に提示する複合現実空間提示方法であって、
前記現実空間、及び前記仮想空間で共有される視点の位置姿勢を取得する取得工程と、
前記仮想空間における仮想物体の位置姿勢を示すパラメータを操作するための操作部の位置姿勢を計測する第１の計測工程と、
前記操作部による前記パラメータの操作方法を、予め設けられた２つ以上の操作方法の中から選択する選択工程と、
前記パラメータを、前記第１の計測工程で計測された前記操作部の位置姿勢を用いて、前記選択工程で選択された操作方法で操作する操作工程と、
前記操作工程で操作された前記パラメータに従った位置姿勢の前記仮想物体の、前記取得工程で取得された前記視点の位置姿勢から見える画像を生成する生成工程と、
前記生成工程で生成した画像を、前記視点から見える前記現実空間に重畳させて前記観察者に提示する提示工程と
を備えることを特徴とする複合現実空間提示方法。
【請求項２】
更に前記視点としての撮像装置により前記現実空間の画像を撮像する撮像工程を備え、
前記取得工程では、前記撮像装置の位置姿勢を計測することで得、
前記提示工程では、前記撮像工程で撮像された前記現実空間の画像上に前記生成工程で生成した画像を合成して前記観察者に提示することを特徴とする請求項１に記載の複合現実空間提示方法。
【請求項３】
前記選択工程では、
前記操作部の位置姿勢の変化量をそのまま前記パラメータに反映させる第１の操作方法、
前記操作部の位置姿勢の変化量を所望の平面に拘束して前記パラメータに反映させる第２の操作方法、
前記操作部における所定の位置から前記操作部の姿勢に基づく方向に延長する直線と所望の平面との交点の位置に前記仮想物体が位置し、かつ平面に拘束するように、前記パラメータを操作する第３の操作方法、
前記操作部と前記仮想物体との位置姿勢関係が固定するように、前記パラメータに反映させる第４の操作方法
のうち、１つを選択することを特徴とする請求項１又は２に記載の複合現実空間提示方法。
【請求項４】
前記選択工程で前記第１の操作方法が選択された場合、
前記操作工程では、前記操作部の位置の変化量、姿勢の変化量を求め、求めた当該２つの変化量を用いて、前記仮想物体の位置姿勢の変化量を求め、求めた当該変化量を用いて、前記仮想物体の次の位置姿勢を示すパラメータを求めることを特徴とする請求項３に記載の複合現実空間提示方法。
【請求項５】
前記選択工程で前記第２の操作方法が選択された場合、
前記操作工程では、前記操作部の位置の変化量、姿勢の変化量を求め、当該２つの変化量と前記所望の平面を示すデータを用いて、前記所望の平面に拘束された前記仮想物体の位置姿勢の変化量を求め、求めた当該変化量を用いて、前記仮想物体の次の位置姿勢を示すパラメータを求めることを特徴とする請求項３に記載の複合現実空間提示方法。
【請求項６】
前記選択工程で前記第３の操作方法が選択された場合、
前記操作工程では、前記直線と前記所望の平面との交点の位置を求め、求めた当該位置を用いて前記仮想物体の位置を示すパラメータを求め、
更に、前記操作部の姿勢の変化量を求め、当該変化量と前記所望の平面を示すデータを用いて、前記所望の平面に拘束された前記仮想物体の姿勢の変化量を求め、求めた当該変化量、及び前記位置を示すパラメータを用いて、前記仮想物体の次の位置姿勢を示すパラメータを求めることを特徴とする請求項３に記載の複合現実空間提示方法。
【請求項７】
前記選択工程で前記第４の操作方法が選択された場合、
前記操作工程では、前記第１の計測工程で計測した前記仮想物体の位置姿勢を示すパラメータを用いて、前記仮想物体の位置姿勢の変化量を求め、求めた当該変化量を用いて、前記仮想物体の次の位置姿勢を示すパラメータを求めることを特徴とする請求項３に記載の複合現実空間提示方法。
【請求項８】
前記選択工程では、前記操作部による前記パラメータの操作方法を、前記仮想物体と所望の平面との距離を求め、求めた当該距離と所定の閾値との大小比較の結果によって、予め設けられた２つ以上の操作方法の中から選択することを特徴とする請求項３乃至７のいずれか１項に記載の複合現実感提示方法。
【請求項９】
前記選択工程では、前記操作部による前記パラメータの操作方法を、前記操作部による操作対象の仮想物体に応じて、予め設けられた２つ以上の操作方法の中から選択することを特徴とする請求項３乃至７のいずれか１項に記載の複合現実感提示方法。
【請求項１０】
更に、前記操作工程による処理対象の仮想物体を選択する方法を切り替える切り替え工程を更に備えることを特徴とする請求項１乃至９のいずれか１項に記載の複合現実空間提示方法。
【請求項１１】
仮想空間の画像を生成し、現実空間に重畳させて観察者に提示する複合現実空間提示装置であって、
前記現実空間、及び前記仮想空間で共有される視点の位置姿勢を取得する取得手段と、
前記仮想空間における仮想物体の位置姿勢を示すパラメータを操作するための操作手段と、
前記操作手段の位置姿勢を計測する第１の計測手段と、
前記操作部による前記パラメータの操作方法を、予め設けられた２つ以上の操作方法の中から選択する選択手段と、
前記パラメータを、前記第１の計測手段が計測した前記操作部の位置姿勢を用いて、前記選択手段が選択した操作方法で操作する操作手段と、
前記操作手段が操作した前記パラメータに従った位置姿勢の前記仮想物体の、前記取得手段が取得した前記視点の位置姿勢から見える画像を生成する生成手段と、
前記生成手段が生成した画像を、前記視点から見える前記現実空間に重畳させて前記観察者に提示する提示手段と
を備えることを特徴とする複合現実空間提示装置。
【請求項１２】
コンピュータに、請求項１乃至１０のいずれか１項に記載の複合現実感提示方法を実行させることを特徴とするプログラム。
【請求項１３】
請求項１２に記載のプログラムを格納する、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばコンピュータグラフィクスによる仮想画像を現実の空間に融合させて観察者に提示する複合現実感提示システムにおいて、３次元空間上での仮想物体の操作を行う方法に関するものである。
【背景技術】
【０００２】
従来、CADデータなどの仮想的な3次元モデルを操作する場合には、CRTモニタなどに3次元空間画像を２次元画像として投影し、擬似3次元空間においてマウス、キーボード等で物体の形状操作を行っていた。しかし、２次元平面への投影時に、3次元物体の情報が欠落してしまうため、3次元物体を直感的に操作することが難しい場合がある。この問題を解決するために、仮想現実感（Virtual Reality: VR）技術を用いて、3次元の物体を3次元空間上で操作することが試みられている。
【０００３】
3次元空間での入力装置として、マウス、キーボードの代わりに磁気センサなどの6自由度位置姿勢計測装置を備えた入力装置が用いられている。しかし、入力装置を扱う人間の手と仮想空間における操作物体との相対位置が掴みにくいという問題から、近年では複合現実感（Mixed Reality: MR）技術を利用して、現実空間と仮想物体との位置関係が把握できる状態で操作を行う方法も考えられている。
【０００４】
この複合現実感技術（例えば、非特許文献１を参照）とは、現実空間上にCG等の非現実空間（仮想空間）画像を重畳、もしくは合成し、ユーザに提示する技術である。ユーザに提示する手段としては、HMD（Head Mounted Display）などが用いられる。この複合現実感技術を利用すると、現実空間上の自分の手の位置がHMDを通して確認できるため、操作対象の仮想物体との位置関係を容易に把握することができる。
【非特許文献１】「H. Tamura, H. Yamamoto and A. Katayama: "Mixed reality: Future dreams seen at the border between real and virtual worlds," Computer Graphics and Applications, vol.21, no.6, pp.64-70, 2001.」
【発明の開示】
【発明が解決しようとする課題】
【０００５】
複合現実感技術を用いて仮想物体の操作を行う場合に、6自由度位置姿勢計測装置を備えた入力装置の値をそのまま物体の3次元位置及び姿勢として操作する（以降、この操作方法を直接操作と呼ぶ）と、短時間で意図した位置及び姿勢にならない場合がある。
【０００６】
例えば、仮想物体が机の上に置かれていることを想定して、物体をこの机の天板に沿って移動・回転させたい場合や、仮想物体を6自由度位置姿勢計測装置を持った手の移動範囲よりも大きく移動させたい場合などである。天板に沿って物体を動かす場合は、人間の手の6自由度動作入力では、手のぶれなどに起因して仮想物体が天板から浮いてしまったり、天板にめり込んでしまうため、短時間で正確に操作を行うことは難しい。
【０００７】
また、仮想物体を大きく移動させたい場合、6自由度位置姿勢計測装置の可動範囲制限などから、移動操作を複数回に分けて実行する必要があり、短時間での操作ができない問題がある。
【０００８】
本発明は、以上の問題に鑑みて成されたものであり、仮想物体の操作方法を適宜切り替え可能にし、正確、かつ、効率的に仮想物体の操作を行うことを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的を達成するために、例えば本発明の複合現実空間提示方法は以下の構成を備える。
【００１０】
即ち、仮想空間の画像を生成し、現実空間に重畳させて観察者に提示する複合現実空間提示方法であって、
前記現実空間、及び前記仮想空間で共有される視点の位置姿勢を取得する取得工程と、
前記仮想空間における仮想物体の位置姿勢を示すパラメータを操作するための操作部の位置姿勢を計測する第１の計測工程と、
前記操作部による前記パラメータの操作方法を、予め設けられた２つ以上の操作方法の中から選択する選択工程と、
前記パラメータを、前記第１の計測工程で計測された前記操作部の位置姿勢を用いて、前記選択工程で選択された操作方法で操作する操作工程と、
前記操作工程で操作された前記パラメータに従った位置姿勢の前記仮想物体の、前記取得工程で取得された前記視点の位置姿勢から見える画像を生成する生成工程と、
前記生成工程で生成した画像を、前記視点から見える前記現実空間に重畳させて前記観察者に提示する提示工程と
を備えることを特徴とする。
【００１１】
本発明の目的を達成するために、例えば本発明の複合現実空間提示装置は以下の構成を備える。
【００１２】
即ち、仮想空間の画像を生成し、現実空間に重畳させて観察者に提示する複合現実空間提示装置であって、
前記現実空間、及び前記仮想空間で共有される視点の位置姿勢を取得する取得手段と、
前記仮想空間における仮想物体の位置姿勢を示すパラメータを操作するための操作手段と、
前記操作手段の位置姿勢を計測する第１の計測手段と、
前記操作部による前記パラメータの操作方法を、予め設けられた２つ以上の操作方法の中から選択する選択手段と、
前記パラメータを、前記第１の計測手段が計測した前記操作部の位置姿勢を用いて、前記選択手段が選択した操作方法で操作する操作手段と、
前記操作手段が操作した前記パラメータに従った位置姿勢の前記仮想物体の、前記取得手段が取得した前記視点の位置姿勢から見える画像を生成する生成手段と、
前記生成手段が生成した画像を、前記視点から見える前記現実空間に重畳させて前記観察者に提示する提示手段と
を備えることを特徴とする。
【発明の効果】
【００１３】
本発明の構成により、仮想物体の操作方法を適宜切り替え可能にし、正確、かつ、効率的に仮想物体の操作を行うことができる。
【発明を実施するための最良の形態】
【００１４】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１５】
［第１の実施形態］
まず、従来の複合現実空間における仮想物体の操作方法として、位置姿勢入力装置の出力値から位置姿勢変化分を取り出し、その変化分をそのまま仮想物体の移動回転量として利用する操作方法を説明する。図４は従来の操作方法である直接操作を行っている様子を示す模式図である。同図において２０１０は仮想物体、１１００は操作者が仮想物体２０１０を操作するためのインターフェースとして機能する操作部である。
【００１６】
同図は、操作者が操作部１１００を手に持ち、これを同図矢印４００の如く回転させると、この回転と同じ回転（同図矢印４０１で示す回転）を仮想物体２０１０に反映させている状態を示している。同様に、操作部１１００の移動についても、同じ移動成分が仮想物体２０１０に反映される。このように直接操作は、操作部１１００の位置姿勢の変化分をそのまま仮想物体２０１０に反映させる目的で利用する。
【００１７】
以下説明する本実施形態に係る複合現実空間提示システムによれば、従来の図４に示すような直接操作だけではなく、状況に応じて適宜仮想物体の操作方法を選択することを許容する。そしてこれにより、正確、かつ、効率的に仮想物体を操作させることを実現する。
【００１８】
＜構成＞
図１は本実施形態に係る複合現実空間提示システムの機能構成を示すブロック図である。また図２は、この複合現実空間提示システムの模式図である。尚、図１と図２とで同じ部分については同じ番号を付けている。
【００１９】
ＨＭＤ１０００には、撮像部１０１０、撮像部位置姿勢計測部１０２０、表示部１０３０が取り付けられ、夫々はＨＭＤ本体１０００に固定されている。
【００２０】
本実施形態では図２に示すように、撮像部１０１０と表示部１０３０とは夫々２つずつＨＭＤ本体１０００内に設けられており、撮像部１０１０Ｒ、表示部１０３０Ｒは右目用、撮像部１０１０Ｌ、表示部１０３０Ｌは左目用のものである。これにより、このＨＭＤ１０００を頭部に装着した観察者の右目と左目には、それぞれ独立した画像を提示することができ、ステレオでもって画像を提示することができる。
【００２１】
本実施形態では、撮像部１０１０Ｒが撮像した現実空間の画像と、後段のワークステーション２０４０が生成した右目用の仮想空間の画像とが重畳された画像（この重畳画像を以下、ＭＲ画像と呼称する）を表示部１０３０Ｒにより右目に提示し、撮像部１０１０Ｌが撮像した現実空間の画像と、後段のワークステーション２０４０が生成した左目用の仮想空間の画像とが重畳された画像を表示部１０３０Ｌにより左目に提示するので、結果として観察者はＭＲ画像をステレオでもって観察することができる。なお、以下説明する処理の本質はステレオでもってＭＲ画像を観察者に提示することに限定するものではなく、撮像部、表示部を右目、左目で共有した場合（即ち観察者がモノラル画像を観察する場合）であっても良いことは以下の説明より明らかである。
【００２２】
また、観察者にＭＲ画像を提示するための手段として本実施形態ではＨＭＤを用いるが、この装置に限定するものではなく、撮像部と撮像部位置姿勢計測部１０２０が固定され、表示部１０３０をユーザが観察可能な装置であれば良い。
【００２３】
なお、以下、特に右目用、左目用に限定する説明でない限りは、撮像部、表示部は１０１０，１０３０でもって示す（Ｒ、Ｌは付けない）ものとする。
【００２４】
撮像部位置姿勢計測部１０２０は、自身の位置姿勢を計測するためのもので（最終的には、視点としての撮像部の位置姿勢を求めるためのもの）、本実施形態では磁気センサ型のものを用いる。この磁気センサ（撮像部位置姿勢計測部１０２０）としては例えば、Polhemus社のFASTRAKセンサが好適である。この磁気センサは図２に示すように、現実空間上に配置された磁界発生装置２０２０から発生した磁界を受け、受けた磁界の変化をセンサコントローラ２０３０に送る。このコントローラ２０３０は、磁界発生装置２０２０を原点とする座標系における撮像部位置姿勢計測部１０２０の位置姿勢を求める。
【００２５】
またセンサコントローラ２０３０は、操作部１１００の操作部位置姿勢計測部１０７０から入力した位置姿勢信号をデータとして後段のワークステーション２０４０に出力する処理も行う。
【００２６】
そしてこの位置姿勢のデータをワークステーション２０４０に出力し、周知の計算を行うことにより、世界座標系（現実空間中の１点を原点とし、この原点から互いに直交する３つの軸を設定することにより設定される座標系）における撮像部１０１０の位置姿勢を求めることができる。このような、磁気センサを用いての撮像部１０１０の世界座標系における位置姿勢の計測方法については周知のものであるので、ここでの説明は省略する。
【００２７】
なお、撮像部位置姿勢計測部１０２０に適用可能なセンサは磁気センサに限定するものではなく、他の種類のセンサでも良い。例えば光学センサ、画像処理による撮像部位置姿勢推定など、撮像部の位置姿勢を計測できるものであれば撮像部位置姿勢計測部１０２０には適応可能である。
【００２８】
撮像画像の取得部１０４０は、撮像部１０１０によって撮像された現実空間の撮像画像を画像データとして保持する。
【００２９】
撮像部位置姿勢推定部１０５０では、撮像部位置姿勢計測部１０２０で得られた位置姿勢の計測値を基に撮像部１０１０の位置姿勢の推定を行う。この推定には、撮像画像の取得部１０４０に保持されている画像中から、現実空間中での位置が既知である特徴点を用いて高精度に求める方法や、センサの誤差を推定して修正する方法などを適応してもよい。いずれにせよ、この撮像部位置姿勢推定部１０５０により、撮像部１０１０の世界座標系における位置姿勢を求め（推定し）、これを以下の計算に用いるものとする。
【００３０】
操作部１１００は、操作者が仮想物体２０１０の操作を行うタイミングを指示するためのイベント入力部１０６０と、操作部１１００自体の位置姿勢を計測するための操作部位置姿勢計測部１０７０から構成される。この操作部位置姿勢計測部１０７０が計測する操作部１１００の位置姿勢は説明を簡単にするために、世界座標系におけるものとするが、それ以外の座標系のものであっても、世界座標系における位置姿勢に変換可能であればよい。また、操作部位置姿勢計測部１０７０には物体の位置姿勢計測が可能な装置であれば適用可能であり、例えば、光学センサ、ジャイロと超音波センサの組み合わせによるものや、画像の特徴から位置姿勢を計測するものであっても良い。
【００３１】
この操作部１１００は、本実施形態では前述のFASTRAKセンサのスタイラスを使用する。このスタイラスにはボタンが１つ装備され、このボタンをイベント入力部１０６０として利用する。しかし、このイベント入力部１０６０を用いて指示する情報を、他の装置、例えば、ワークステーション２０４０の不図示のキーボードやマウスを用いて入力しても良い。従って、以下の説明でイベント入力部１０６０を用いて入力する情報は、操作者以外のものが入力するようにしても良い。
【００３２】
本実施形態では、このイベント入力部１０６０を、複合現実空間（実際には仮想空間）にいくつか設置した仮想物体の内、操作対象として１つを選択する為に用いるものとする。このイベント入力部１０６０の使用については後述する。
【００３３】
仮想物体操作部１０８０は、操作部１１００による仮想物体の操作結果を決定する。図３は、仮想物体操作部１０８０の詳細な構成を構成を示すブロック図である。
【００３４】
物体選択部３０１０は、複合現実空間中に複数設置している仮想物体の中から、操作を行う対象の仮想物体の選択／解除を行う。なお、この物体選択部３０１０は、記憶部１０９０に記憶されている２種類の選択方法夫々を示す設定データのうち、事前に選択された方の設定データに従った選択方法に従って操作を行う対象の仮想物体の選択／解除を行う。
【００３５】
この２種類の選択方法の内、一方は、図１１に示すように、操作部１１００における所定の位置（例えば操作部位置姿勢計測部１０７０が計測する操作部１１００の位置）から所定半径内の領域１１０１０と交わる仮想物体のうち、一番近いものを選択するという選択方法（以下では直接選択方法と呼ぶ）である。この選択方法によれば、仮想物体２０１０を選択する場合に、この仮想物体２０１０に操作部１１００を近づけるだけ、もしくは近づけた状態でイベント入力部１０６０、もしくはワークステーション２０４０の不図示のキーボードやマウスによってイベントを入力することで選択できる。なお、領域１１０１０の形状やその位置については特に限定するものではない。
【００３６】
また、上記２種類の選択方法の内、他方は、図１２に示すように、操作部１１００における所定の位置（例えば操作部位置姿勢計測部１０７０が計測する操作部１１００の位置）を始点とし、操作部位置姿勢計測部１０７０が計測する操作部１１００の姿勢方向に延長する直線（光線）１２０１０を想定し、その光線１２０１０上にある仮想物体のうち一番近い仮想物体を選択する方法（以下では光線選択方法と呼ぶ）である。この光線選択方法は、遠くに存在する物体を選択するのに適している。
【００３７】
従ってこの２つの選択方法を示す設定データが記憶部１０９０に記憶されており、事前に何れかの設定データがイベント入力部１０６０、もしくはワークステーション２０４０の不図示のキーボードやマウスを用いて選択されている。従って物体選択部３０１０は、この選択された選択方法に従って、操作部１１００によってどの仮想物体が選択／解除されているかを判断する。なお、解除の方法については後述する。
【００３８】
直接操作部３０２０、平面拘束操作部３０３０、光線平面拘束操作部３０４０、固定操作部３０５０は、それぞれ、物体選択部３０１０が仮想物体を選択している場合に、この仮想物体の操作を行うために機能するものである。
【００３９】
ここで、「仮想物体の操作」とは、操作部位置姿勢計測部１０７０によって計測した位置姿勢の変化分のうち、位置成分の行列Ｗｔ、姿勢成分の行列Ｗｒを用いて位置姿勢変換行列ΔＭを生成し、仮想物体の位置姿勢（３次元配置情報）を示す行列Ｍに積算することで、次にフレームにおける仮想物体の位置姿勢を示す行列Ｍ’を求めることを示す（以下の式１を参照）。
【００４０】
【数１】
2005107972.tif 000003
【００４１】
即ち「仮想物体の操作」とは、仮想物体に係るパラメータを操作することを示す。ここではこの「パラメータ」とは、仮想物体の位置姿勢を示す行列を示す。この行列Ｍ’を表すデータは記憶部１０９０に記憶され、仮想画像生成部１１１０が仮想物体の画像を生成する際に用いられる。
仮想物体の位置姿勢を示す行列Ｍ、位置変化成分を示す行列Ｗｔ、姿勢変化成分を示す行列Ｗｒは夫々、４ｘ４の行列である。行列Ｍはあらかじめ仮想物体の初期位置姿勢として記憶部１０９０に記憶されている。位置姿勢変換行列ΔＭは、行列Ｗｔ、Ｗｒを用いて算出される行列である。Ｗｔ、Ｗｒは、操作部位置姿勢計測部１０７０からの出力として得られる。
【００４２】
【数２】
2005107972.tif 000004
【００４３】
【数３】
2005107972.tif 000005
【００４４】
式２はＷｔ、式３はＷｒを示す式で、夫々の行列の成分は夫々周知の通り、操作部位置姿勢計測部１０７０による位置姿勢の計測値に基づいて決まるものである。
以下で詳しく説明する、直接操作部３０２０、平面拘束操作部３０３０、光線平面拘束操作部３０４０、固定操作部３０５０の４つの操作部は夫々異なる操作則でもって仮想物体を操作するものであり、事前に記憶部１０９０に設定される設定データにより、このうちの１つの操作部の使用が許可される。なお、どの操作部を用いても当然、その目的は選択中の仮想物体の位置や姿勢を変化させる、換言すればこれらを示す行列Ｗｔ、Ｗｒを変更することであるから、結果的には、操作後の仮想物体の位置姿勢を求めるためのΔＭを求めることが、何れの操作部を用いてもその目的となる。
【００４５】
以下では、この４つの夫々の操作部を用いた場合に、ΔＭを求める方法について説明する。
【００４６】
＜直接操作部＞
直接操作部３０２０は、図４に示すように、操作部１１００の移動と回転をそのまま、仮想物体２０１０の移動回転操作に反映させる為のものである。従って、上記４つの操作部のうち直接操作部３０２０を選択した場合、直接操作部３０２０は、現在のフレームにおいて操作部位置姿勢計測部１０７０が計測した仮想物体の位置姿勢の位置変化成分を示す行列Ｗｔ、姿勢変化成分を示す行列Ｗｒ、そして１つ前のフレームにおいて操作部位置姿勢計測部１０７０が計測した仮想物体の位置姿勢の位置変化成分を示す行列Ｗｔ−１、姿勢変化成分を示す行列Ｗｒ−１、を用いて、以下の式に従って行列ΔＭを求める。
【００４７】
【数４】
2005107972.tif 000006
【００４８】
ΔＷｒは、行列Ｗｒ−１と行列Ｗｒとの差分行列を示すもので、以下の式５に従って求めることができる。
【００４９】
【数５】
2005107972.tif 000007
【００５０】
また、ΔＷｔは、行列Ｗｔ−１と行列Ｗｔとの差分行列を示すもので、以下の式６に従って求めることができる。
【００５１】
【数６】
2005107972.tif 000008
【００５２】
従って、直接操作部３０２０は、式５，６に従って先ずΔＷｔ、ΔＷｒを求め、そしてこのΔＷｔ、ΔＷｒを用いて、式４に従ってΔＭを求める。なお直接操作部３０２０は、ΔＷｒ、ΔＷｔには、仮想物体２０１０に操作を加えない間は、単位行列を設定し、操作を開始した時点から差分計算を開始する。例えば、ＷｔとＷｔ−１とが同じであればΔＷｔを単位行列とする。また、ＷｒとＷｒ−１とが同じであればΔＷｒを単位行列とする。
そしてこのようにして求めた行列ΔＭのデータを記憶部１０９０に出力する。なお、以上の処理では、ΔＷｒ、ΔＷｔは独立に計算することができるため、ユーザがイベント入力部１０６０、もしくはワークステーション２０４０の不図示のキーボードやマウスによって指示を与え、操作方法選択状態データを記憶部１０９０に格納することにより、操作部１１００の回転操作のみの仮想物体への反映、操作部１１００の平行移動操作のみの仮想物体への反映を操作時にユーザが選択することができる。
【００５３】
＜平面拘束操作部＞
平面拘束操作部３０３０は、操作部１１００の移動回転操作を、予め指定した平面２０５０に拘束して仮想物体の移動回転操作に反映させる操作方法を提供する。例えば、平面２０５０上に沿って仮想物体２０１０を動かす場合などに有効な操作方法である。
【００５４】
図１３は、平面拘束操作部３０３０を用いた仮想物体２０１０の操作方法を説明する図である。図１３では、仮想物体２０１０が選択されているものとし、操作部１１００を同図矢印１３０２０、矢印１３０３０に示す如く移動、回転させた場合に、仮想物体２０１０の位置姿勢の変化を示している。
【００５５】
平面拘束操作部３０３０によって仮想物体２０１０が操作されると、操作部１１００の移動成分と回転成分は、平面拘束操作部３０３０によって、予め指定してある平面２０５０に沿った２次元平行移動成分と、平面２０５０の法線に平行な直線を軸とした１軸の回転成分に変換される。この２次元平行移動成分と１軸回転成分が平面拘束操作部３０３０によって仮想物体２０１０の位置姿勢に反映され、仮想物体２０１０の位置姿勢は平面２０５０に沿って操作される。ここで拘束する平面２０５０は以下の式７で表現されるものとする。
【００５６】
【数７】
2005107972.tif 000009
【００５７】
ここで、Ｎ：（ｎｘ、ｎｙ、ｎｚ）はこの平面Ｓ（２０５０）の法線ベクトルを表し、Ｐ１：（ｐ１ｘ、ｐ１ｙ、ｐ１ｚ）は平面Ｓ（２０５０）上の点を示している。この平面Ｓの式を示すデータは記憶部１０９０が保持しているものとする。
このとき、平面拘束操作部３０３０は、行列ΔＭを以下の式８に従って算出する。
【００５８】
【数８】
2005107972.tif 000010
【００５９】
ここで、ΔＷｒ’は平面Ｓの法線に平行な直線を軸とする回転に拘束された差分回転変換行列である。この行列ΔＷｒ’は、まず前述のΔＷｒの行列から回転軸ベクトルＡと回転角ｇを計算する。これらは、以下の式によって得られる。
【００６０】
【数９】
2005107972.tif 000011
【００６１】
【数１０】
2005107972.tif 000012
【００６２】
次に、以下の式１１に従った計算、即ち、ベクトルＡ とベクトルＮとの内積値を求め、求めた内積値を回転角ｇと積算してｇ’を求める計算を行う。
【００６３】
【数１１】
2005107972.tif 000013
【００６４】
その結果、この回転角ｇ’だけ、平面２０５０の法線ベクトルＮを軸として回転するとする。すなわちΔＷｒ’は、以下の式で表すことができる。
【００６５】
【数１２】
2005107972.tif 000014
【００６６】
一方、ΔＷｔ’は、平面２０５０に拘束される２次元平行移動変換を表す。このΔＷｔ’については、先ず図１６に示す如く、前述のΔＷｔの平行移動成分のベクトルＴ（Δｔ１、Δｔ２、Δｔ３）の始点Ｐｓ（即ち、１つ前のフレームにおける操作部１１００の位置）を（ｐｓ１、ｐｓ２、ｐｓ３）としたときに、ベクトルＴの終点（ｐｓ１＋Δｔ１、ｐｓ２＋Δｔ２、ｐｓ３＋Δｔ３）を平面２０５０に素直に投影した点Ｐｅ（ｐｅ１、ｐｅ２、ｐｅ３）を以下の式１３に従って求める。
【００６７】
【数１３】
2005107972.tif 000015
【００６８】
これにより、平面２０５０に拘束する平行移動変換行列ΔＷｔ’は以下の式１４で表すことができる。
【００６９】
【数１４】
2005107972.tif 000016
【００７０】
なお、平面２０５０の式を示すデータ（例えば法線ベクトルＮの成分データ、点Ｐ１の座標データ）は記憶部１０９０が記憶している。なお、この平面の式は動的に変化させてもよく、その場合は、平面の式を示すデータを動的に更新すればよい。
従って、平面拘束操作部３０３０は、式９〜１１に従ってΔＷｒ’を求め、式１３，１４に従ってΔＷｔ’を求める。そして、このΔＷｔ’、ΔＷｒ’を用いて、式８に従ってΔＭを求める。なお平面拘束操作部３０３０は、ΔＷｒ’、ΔＷｔ’には、仮想物体２０１０に操作を加えない間は、単位行列を設定し、操作を開始した時点から差分計算を開始する。例えば、式１３で求めたｐｅ１、ｐｅ２、ｐｅ３の何れも、前のフレームのそれと比べて同じであればΔＷｔ’を単位行列とする。また、上記ｇ’の値が、前のフレームと同じであればΔＷｒ’を単位行列とする。
【００７１】
そしてこのようにして求めた行列ΔＭのデータを記憶部１０９０に出力する。なお、以上の処理では、ΔＷｒ’、ΔＷｔ’は独立に計算することができるため、ユーザがイベント入力部１０６０、もしくはワークステーション２０４０の不図示のキーボードやマウスによって指示を与え、操作方法選択状態データを記憶部１０９０に格納することにより、操作部１１００の回転操作のみの仮想物体への反映、操作部１１００の平行移動操作のみの仮想物体への反映を操作時にユーザが選択することができる。
【００７２】
＜光線平面拘束操作部＞
光線平面拘束操作部３０４０は、操作部１１００における所定の位置（例えば操作部位置姿勢計測部１０７０が計測する操作部１１００の位置）を始点とし、操作部位置姿勢計測部１０７０が計測する操作部１１００の姿勢方向に延長する直線（光線）（図１２における光線１２０１０）を想定し、その光線１２０１０と平面２０５０との交点の位置に仮想物体を移動させる操作方法を提供する。
【００７３】
例えば、仮想物体２０１０が遠くに配置されている場合、この仮想物体２０１０を平面２０５０に沿って操作部１１００（または操作者）に近づけるなど、遠くに配置されている仮想物体を平面に沿って大きく移動させる場合に有効な操作方法である。
【００７４】
図１４は、光線平面拘束操作部３０４０を用いた仮想物体２０１０の操作方法を説明する図である。図１４では、仮想物体２０１０が選択されているものとし、操作部１１００を同図矢印１３０２０に示す如く移動、回転させた場合の、仮想物体２０１０の位置姿勢の変化を示している。
【００７５】
光線平面拘束操作部３０４０によって仮想物体２０１０を操作する場合、操作部１１００の移動成分と回転成分は、光線平面拘束操作部３０４０によって、光線１４０１０と予め指定してある平面２０５０との交点に拘束されるような２次元平行移動成分と、平面２０５０の法線に平行な直線を軸とした１軸の回転成分に変換される。この２次元平行移動成分と１軸回転成分が光線平面拘束操作部３０４０によって仮想物体２０１０の位置姿勢に反映され、仮想物体２０１０の位置姿勢はこの２次元平行移動成分と１軸回転成分に拘束されて操作される。
【００７６】
なお、この光線１４０１０は、必ずしも操作部１１００の指す方向に固定されるものではなく、操作部１１００を中心とした操作部座標系（操作部１１００における所定の位置（例えば操作部位置姿勢計測部１０７０が計測する操作部１１００の位置）を原点とし、この原点の位置から互いに直交する３つの軸により形成される座標系）における方向ベクトルとして入力することで、自由に方向を変更することができるようにしてもよい。
【００７７】
ここで、この操作部座標系は上述の通り、原点位置、３つの軸方向を予め設定することで形成されるものであるが、例えば操作部位置姿勢計測部１０７０が計測する操作部１１００の位置をこの座標系の原点とする場合、この原点の世界座標系における位置姿勢（換言すれば、上記３つの軸の姿勢）は操作部位置姿勢計測部１０７０が計測する姿勢成分として計測されるので、結果として原点の世界座標系における位置、上記３つの軸の世界座標系における姿勢を得ることができる。
【００７８】
従って、現在操作部位置姿勢計測部１０７０により計測した原点位置、３軸の姿勢を用いれば、周知の技術により、世界座標系における位置姿勢を操作部座標系における位置姿勢に変換する為の行列Ｍｃｓを求めることができる。
【００７９】
よって本実施形態では、操作部座標系における位置姿勢を得るためには、世界座標系における位置姿勢を得、この位置姿勢を行列Ｍｃｓにより変換して操作部座標系における位置姿勢に変換して得るものとするが、操作部位置姿勢計測部１０７０が計測する操作部１１００の位置姿勢がどの座標系によるものであるかなどに応じて、この操作部座標系における位置姿勢を得る方法は異なる。しかし、この操作部座標系における位置姿勢を求める方法については本処理の本質ではないし、周知の技術であることから、ここでの詳細な説明は省略する。
【００８０】
このとき、光線平面拘束操作部３０４０は、行列ΔＭを以下の式１５に従って算出する。
【００８１】
【数１５】
2005107972.tif 000017
【００８２】
ここで、ΔＷｒ’については、平面拘束操作部３０３０による求め方と同様の方法で光線平面拘束操作部３０４０が求めるものとする。一方、Ｗｔ’については光線平面拘束操作部３０４０は以下説明する手順に従って求めるものとする。
まず、光線１４０１０の上記操作部座標系における方向ベクトルをＬ（ｌ１，ｌ２，ｌ３）とし、このベクトルＬをＷｒ・Ｗｔによって世界座標系に座標変換したベクトルをＬ’（ｌ’１，ｌ’２，ｌ’３）とする。なお、方向ベクトルＬが操作部１１００の指す方向に向いているとした場合、例えば、操作部１１００の世界座標系における位置姿勢は操作部位置姿勢計測部１０７０により計測されるので、この位置姿勢を上記行列Ｍｃｓにより変換して得る。
【００８３】
また、このベクトルＬ’は以下の式１６に従って求められる。
【００８４】
【数１６】
2005107972.tif 000018
【００８５】
このベクトルＬ’の直線は以下の式１７に表される。
【００８６】
【数１７】
2005107972.tif 000019
【００８７】
ここで、（ｘ１、ｙ１、ｚ１）は、操作部座標系における原点を（０，０，０）とし、この原点の座標値をＷｒ・Ｗｔによって変換した座標値、即ち、操作部座標系における原点の世界座標系における座標値を示す。なお、以下では操作部座標系における原点を「計測点」と呼称する場合がある。
また、式１７で表される直線上の任意の点の座標（ｘ、ｙ、ｚ）は以下の式１８でもって表される。
【００８８】
【数１８】
2005107972.tif 000020
【００８９】
ここでｍは媒介変数である。ここで、式１８と式７から、平面Ｓと式１７で表される直線との交点を求める為の媒介変数ｍの値を求め、求めた媒介変数ｍの値を式１８に代入することで、交点の座標Ｉ（ｉ１、ｉ２、ｉ３）を求めることができる。
そして、求めた交点の座標を用いて、平面２０５０と光線１４０１０との交点に拘束される平行移動変換行列Ｗｔ’は以下の式１９でもって表すことができる。
【００９０】
【数１９】
2005107972.tif 000021
【００９１】
なお、平面２０５０の式を示すデータ（例えば法線ベクトルＮの成分データ、点Ｐ１の座標データ）は記憶部１０９０が記憶している。なお、この平面の式は動的に変化させてもよく、その場合は、平面の式を示すデータを動的に更新すればよい。
この平面２０５０を操作時に変更する場合の仮想物体２０１０の状態を図１７に示す。図１７に示す例では、（１）、（２）、（３）の順番で操作部１１００の位置姿勢を変化させている。仮想物体１７０５０のモデル座標系１７０２０の原点は、図１７で示すように、仮想物体１７０５０の一角に原点を設け、互いに直交する３つの軸を仮想物体の各辺に合わせるようにするものとする。操作部１１００が（２）の状態であるとき、光線平面拘束操作部３０４０は、仮想物体１７０５０が現実空間の壁１７０４０に埋もれないようにするため、仮想物体２０１０の形状とあらかじめ記憶部１０９０に設定されている現実空間の情報に基づいて、現在の操作に利用している拘束平面１７０３０を新たな拘束平面１７０６０に更新する。ここで、平面１７００３０，１７００４０のデータは平面２０５０と同様に記憶部１０９０に記憶されているものとする。
【００９２】
この場合の新たな拘束平面１７０６０は、壁１７０４０に平行で、モデル座標１７０２０の原点を通る平面となる。拘束平面１７０６０に更新することにより、操作部１１００を（３）の位置に動かすと、仮想物体１７０５０は壁１７０４０に沿って（５）の位置から（６）の位置に移動する。
【００９３】
従って、光線平面拘束操作部３０４０は、式９〜１１に従ってΔＷｒ’を求め、式１６〜１９に従ってＷｔ’を求める。そして、このＷｔ’、ΔＷｒ’を用いて、式１５に従ってΔＭを求める。なお光線平面拘束操作部３０４０は、ΔＷｒ’、Ｗｔ’には、仮想物体２０１０に操作を加えない間は、単位行列を設定し、操作を開始した時点から差分計算を開始する。例えば、求めた媒介変数ｍの値が前のフレームのそれと比べて同じであればＷｔ’を単位行列とする。また、上記ｇ’の値が、前のフレームと同じであればΔＷｒ’を単位行列とする。
【００９４】
そしてこのようにして求めた行列ΔＭのデータを記憶部１０９０に出力する。なお、以上の処理では、ΔＷｒ’、Ｗｔ’は独立に計算することができるため、ユーザがイベント入力部１０６０、もしくはワークステーション２０４０の不図示のキーボードやマウスによって指示を与え、操作方法選択状態データを記憶部１０９０に格納することにより、操作部１１００の回転操作のみの仮想物体への反映、操作部１１００の平行移動操作のみの仮想物体への反映を操作時にユーザが選択することができる。
【００９５】
＜固定操作部＞
固定操作部３０５０は、操作部１１００との相対位置姿勢が固定されるような移動回転を仮想物体に反映させる操作方法を提供する。例えば、仮想物体２０１０を操作部１１００で掴んで観察するなど、直感的な操作が必要な場合に有効な操作方法である。
【００９６】
図１５は、固定操作部３０５０を用いた仮想物体２０１０の操作方法を説明する図である。同図において１５０１０は上記操作部座標系を示す。同図では、操作部座標系の原点位置を操作部１１００の先端の位置としている。
【００９７】
図１５では、仮想物体２０１０が選択されているものとし、操作部１１００を同図矢印１５０３０に示す如く移動、回転させた場合に、仮想物体２０１０の位置姿勢の変化（同図矢印１５０２０で示す如く変化）を示している。より具体的には、操作部１１００を操作部座標系１５０１０のｘ軸周りに回転させると、仮想物体２０１０は、操作部座標系１５０１０のｘ軸を中心として同図矢印１５０２０で示す如く、操作部１１００が回転した角度だけ回転変換を受ける。
【００９８】
平行移動に関しても同様に、操作部１１００との相対位置を保つような平行移動変換を受ける。操作部１１００の世界座標系における移動成分と回転成分は、４ｘ４の座標変換行列に変換され、仮想物体２０１０の世界座標系上での位置姿勢を表す４ｘ４の行列に積算することにより操作部１１００と仮想物体２０１０の相対位置が固定されるような操作となる。
【００９９】
このとき、固定操作部３０５０は、行列ΔＭを以下の式２０に従って算出する。
【０１００】
【数２０】
2005107972.tif 000022
【０１０１】
また、遠くの仮想物体２０１０をこの固定操作部３０５０で操作する場合に、平行移動変換量が大きすぎて扱いが難しい状況があるため、操作部１１００と仮想物体２０１０との両者の位置間の距離を拡大または縮小させる平行移動変換をΔＭに加えてもよい。
以上の４つの操作部により、様々な種類の操作方法を操作者に提供することができる。
【０１０２】
図１に戻って、記憶部１０９０は、仮想物体の形状や色などの仮想物体を描画するためのデータ、配置データ、モデル選択状態データ、選択方法選択状態データ、操作方法選択状態データ、拘束平面データ、現実空間における平面（図２の机２０５０、図１７の床１７０３０、壁１７０４０等）を描画するためのデータ、本実施形態の装置の実行に必要なデータ等を記憶する。仮想物体の配置情報などは、操作部１１００の位置姿勢の変化や、イベント入力部１０６０により変更が加えられる。
【０１０３】
モデル選択状態データとは、どのモデル（仮想物体）が選択状態／非選択状態にあるのかを示すデータであって、例えば各仮想物体に対して１ビットのデータを割り当て、このデータの値が１であれば選択されている、０であれば選択されていない、というように、各仮想物体に対する選択状態／非選択状態を判断する為に用いる。
【０１０４】
選択方法選択状態データとは、直接選択方法、光線選択方法の何れが現在選択されているのかを示すデータで、例えばＭＲ画像を観察者に提示する処理の前段でこのデータには、ワークステーション２０４０を用いて直接選択方法、光線選択方法の何れかが設定されている。
【０１０５】
操作方法選択状態データとは、上記４つの操作部のうち、現在どの選択部が選択されているのかを示すデータで、例えばＭＲ画像を観察者に提示する処理の前段でこのデータには、ワークステーション２０４０を用いて上記４つの操作部のうち用いる操作部の何れかが設定されている。
【０１０６】
また、直接操作、平面拘束操作、光線平面拘束操作の３つの操作選択部に関しては、加えて「平行移動操作のみの反映」、「回転操作のみの反映」の選択が可能になる。つまり、以下の１０通りの操作方法が設定可能である。
【０１０７】
・  直接操作
・  直接操作＋平行移動操作のみの反映
・  直接操作＋回転操作のみの反映
・  平面拘束操作
・  平面拘束操作＋平行移動操作のみの反映
・  平面拘束操作＋回転操作のみの反映
・  光線平面拘束操作
・  光線平面拘束操作＋平行移動操作のみの反映
・  光線平面拘束操作＋回転操作のみの反映
・  固定操作
仮想画像生成部１１１０は、撮像部位置姿勢推定部１０５０が出力する撮像部１０１０の世界座標系における位置姿勢を、仮想空間と現実空間とで共有される視点の位置姿勢と見なした場合に、この視点の位置姿勢から見える仮想物体の画像を、記憶部１０９０が記憶する、この仮想物体を描画するためのデータを用いて生成（描画）する。
【０１０８】
画像合成部１１２０は、撮像画像の取得部１０４０から得られる現実空間の撮像画像と、仮想画像生成部１１１０から得られる仮想物体の画像（仮想空間の画像）とを合成した画像を生成し、出力する。この合成については、撮像画像の取得部１０４０で取得した画像の上に仮想画像生成部１１１０からの仮想画像を重畳することにより行われる。
【０１０９】
ＭＲ画像出力部１１３０は、画像合成部１１２０から出力された合成画像、即ちＭＲ画像をＨＭＤ１０００の表示部１０３０に出力する。これにより、表示部１０３０には、ＨＭＤ１０００の位置姿勢に応じた現実空間の画像、及び仮想空間の画像とが重畳された画像が表示され、このＨＭＤ１０００を頭部に装着したユーザに、このＭＲ画像を提示することができる。
【０１１０】
なお、図１において、撮像画像の取得部１０４０、撮像部位置姿勢推定部１０５０、仮想物体操作部１０８０、記憶部１０９０、仮想画像生成部１１１０、画像合成部１１２０、ＭＲ画像出力部１１３０はワークステーション２０４０の機能構成に含まれるものとする。
【０１１１】
＜ワークステーション２０４０の構成＞
図２３は、このワークステーション２０４０の基本構成を示す図である。同図において２３０１はＣＰＵで、ＲＡＭ２３０２やＲＯＭ２３０３に格納されているプログラムやデータを用いて、ワークステーション２０４０全体の制御を行うと共に、上記ＭＲ画像を生成し、ＨＭＤ１０００の表示部１０３０に出力するまでの一連の処理を実行する。
【０１１２】
２３０２はＲＡＭで、外部記憶装置２３０７や記憶媒体ドライブ装置２３０８からロードされたプログラムやデータを一時的に記憶するためのエリアを備えると共に、ＣＰＵ２３０１が各種の処理を実行するために用いるワークエリアも備える。
【０１１３】
２３０３はＲＯＭで、ブートプログラムなど、本装置全体の制御を行うためのプログラムやデータ等を格納する。
【０１１４】
２３０４、２３０５は夫々キーボード、マウスで、各種の指示をＣＰＵ２３０１に入力することができる。
【０１１５】
２３０６は表示部で、ＣＲＴや液晶画面などにより構成されており、ワークステーション２０４０の状態情報や上記処理により生成したＭＲ画像等を表示することができる。
【０１１６】
２３０７はハードディスクドライブ装置等に代表される大容量情報記憶装置で、ここにＯＳ（オペレーティングシステム）や、ＣＰＵ２３０１が上記ＭＲ画像を生成して表示部１０３０に出力するまでの一連の処理を実行する為に必要なプログラムやデータを格納する。格納する格納するプログラムやデータはＲＡＭ２３０２に読み出され、ＣＰＵ２３０１の実行対象となる。
【０１１７】
尚、図１に示した撮像部位置姿勢推定部１０５０、仮想物体操作部１０８０、仮想画像生成部１１１０、画像合成部１１２０、ＭＲ画像出力部１１３０はプログラムにより実装しても良く、その場合、このプログラムを外部記憶装置２３０７に保存しておき、必要に応じてＲＡＭ２３０２に読み出し、ＣＰＵ２３０１がこれを実行することにより、ワークステーション２０４０は、以上説明したＭＲ画像を生成して表示部１０３０に出力するまでの一連の処理を実行することができる。
【０１１８】
また、外部記憶装置２３０７に保存するデータには、上記記憶部１０９０が記憶しているデータ群を含むものとする。即ち、上記外部記憶装置２３０７は記憶部１０９０としての機能をも有する。
【０１１９】
２３０８は記憶媒体ドライブ装置で、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されているプログラムやデータを読み出し、ＲＡＭ２３０２や外部記憶装置２３０７に出力する。なお、上記外部記憶装置２３０７に保存されているプログラムやデータをこの記憶媒体に記録しておき、記憶媒体ドライブ装置２３０８がこの記憶媒体からこのプログラムやデータをＲＡＭ２３０２に読み出し、ＣＰＵ２３０１がこれを実行するようにしても良い。
【０１２０】
２３０９はＩ／Ｆ（インターフェース）で、ＨＭＤ１０００やセンサコントローラ２０３０をワークステーション２０４０に接続するためのもので、Ｉ／Ｆ２３０９を介してワークステーション２０４０からＨＭＤ１０００の表示部１０３０にＭＲ画像を送信したり、ＨＭＤ１０００の撮像部１０１０から現実空間の撮像画像を受信したり、センサコントローラ２０３０から位置姿勢データを受信したりすることができる。
【０１２１】
尚、以上の構成はワークステーション以外にも、例えばＰＣ（パーソナルコンピュータ）であっても良いので、ワークステーション２０４０の代わりにＰＣを用いても良いし、ワークステーション２０４０を用いることに限定するものではない。
【０１２２】
＜処理の手順＞
以下では、１フレーム分のＭＲ画像を生成して表示部１０３０に出力するまでに、ワークステーション２０４０が行う処理について、同処理のフローチャートである図５を参照して、説明する。従って、図５に示すフローチャートに従った処理を繰り返し行うことで、複数のフレームのＭＲ画像を生成し、ＨＭＤ１０００の表示部１０３０に出力することができる。なお、、図５に示したフローチャートに従ったプログラムはＲＡＭ２３０２にロードされ、ＣＰＵ２３０１がこれを実行することで、ワークステーション２０４０は、同図フローチャートに従った処理を実行することになる。
【０１２３】
先ずステップＳ５０１０においては、撮像部１０１０が撮像した現実空間の撮像画像を撮像画像の取得部１０４０に入力する。
【０１２４】
ステップＳ５０２０においては、撮像部位置姿勢計測部１０２０による計測値を撮像部位置姿勢推定部１０５０に入力し、撮像部１０１０の世界座標系における位置姿勢を推定する。推定した位置姿勢情報を基に、世界座標系における撮像部１０１０の位置姿勢を示すための４×４のビューイング変換行列Ｍｃを生成する。ビューイング変換行列Ｍｃ、及びその求め方については周知の技術であるので、ここでの説明は省略する。
【０１２５】
次に、ステップＳ５０３０においては、操作部１１００の位置姿勢を操作部位置姿勢計測部１０７０にて計測し、Ｗｒ、Ｗｔを得る。
【０１２６】
ステップＳ５０４０においては、記憶部１０９０に記憶されている選択方法選択状態データを参照し、現在設定されている選択方法が直接選択方法、もしくは光線選択方法の何れであるかを判断する。
【０１２７】
ステップＳ５０５０においては、イベント入力部１０６０から仮想物体を選択する指示を示すイベントが入力されたか否かを判断する。要するに、イベント入力部１０６０がボタンである場合、このボタンが押下されたか否かを判断する。イベント入力部１０６０が指示されると、物体選択部３０１０はこのイベントを発行する。
【０１２８】
イベント入力部１０６０が指示され、イベントが発行された場合には処理をステップＳ５０６０に進め、発行されていない場合には処理をステップＳ５０８０に進める。
【０１２９】
ステップＳ５０６０においては、記憶部１０９０を参照し、現在選択されている仮想物体が存在するかを判定する。これは例えば上記モデル選択状態データを参照し、各仮想物体に対するこのデータが示すものが「選択されている」か否かをチェックする。
【０１３０】
ここで、既に選択されている仮想物体が存在する場合には処理をステップＳ５０７０に進め、存在しない場合には処理をステップＳ５０９０に進める。
【０１３１】
現在選択されている仮想物体が存在する場合、入力されたイベントは現在選択されている仮想物体の選択解除であると解釈され、ステップＳ５０７０で、仮想物体の選択を解除する。即ち、この仮想物体に対するモデル選択状態データを「選択されていない」旨のデータに書き換える。即ち、イベント入力部１０６０は、その指示毎に、「選択」、「非選択」を交互に指示するものである（選択対象の仮想物体が、選択可能な状態にある場合）。
【０１３２】
一方、現在選択されている仮想物体が存在しない場合には、ステップＳ５０９０において、操作部１１００の位置から所定サイズの領域（指定領域）内に仮想物体が存在するか否かを判断する。これは例えば、仮想物体の座標位置がＲＡＭ２３０２にデータとして管理されているのであるから、この位置と、操作部位置姿勢計測部１０７０が計測した操作部１１００の位置とを参照し、操作部１１００の位置から所定サイズの領域以内に仮想物体の位置が含まれるか否かを判断することにより、実現可能である。
【０１３３】
そしてこの判断処理の結果、指定領域内に仮想物体が存在しない場合には処理をステップＳ５１１０に進める。一方、存在する場合には処理をステップＳ５１００に進める。
【０１３４】
ステップＳ５１００では、操作部１１００による操作により、仮想物体の位置姿勢の変更操作（仮想物体の位置、及び／又は姿勢を示すパラメータの変更処理）を行うのであるが、このステップＳ５１００における処理の詳細については図６を用いて後述する。
【０１３５】
ステップＳ５１１０においては、仮想画像生成部１１１０によって、記憶部１０９０に記憶されている仮想物体を描画するためのデータを用いて、３次元仮想空間における仮想物体を生成し、これをステップＳ５０２０によって得られたビューイング変換行列Ｍｃによって変換し、さらに既知であるプロジェクション行列によってスクリーン座標系に投影する処理を行う。即ち、ＨＭＤ１０００の表示部１０３０に表示するための仮想物体の画像の生成を行う。
【０１３６】
ステップＳ５１２０においては、画像合成部１１２０が、ステップＳ５０１０で得られた現実空間の撮像画像に、ステップＳ５１１０で得られた仮想物体の画像を重畳し、後段のＭＲ画像出力部１１３０に出力し、ＭＲ画像出力部１１３０はこれをＨＭＤ１０００の表示部１０３０に出力する処理を行う。これにより、表示部１０３０にはこのＭＲ画像が表示される。
【０１３７】
ステップＳ５０８０においては、ステップＳ５０６０と同様に、記憶部１０９０を参照し、現在選択されている仮想物体が存在するかを判定する。存在する場合には、処理をステップＳ５１００に進め、存在しない場合には処理をステップＳ５１１０に進める。
【０１３８】
図６は、ステップＳ５１００における処理の詳細を示すフローチャートである。
【０１３９】
ステップＳ６０１０では、記憶部１０９０に設定された操作方法選択状態データを参照して、用いるべき操作部として直接操作部３０２０が選択されているか否かを判断する。直接操作部３０２０が選択されている場合には処理をステップＳ６０２０に進め、直接操作部３０２０は、以上説明した直接操作部３０２０によるΔＭの生成処理を行い、次のフレームにおける仮想物体の位置姿勢を示す行列Ｍ’の生成処理を行う。ステップＳ６０２０における処理の詳細については図７を用いて後述する。
【０１４０】
一方、ステップＳ６０１０で直接操作部３０２０が選択されていないと判断した場合には処理をステップＳ６０３０に進め、平面拘束操作部３０３０が選択されているか否かを判断する。平面拘束操作部３０３０が選択されている場合には処理をステップＳ６０４０に進め、平面拘束操作部３０３０は、以上説明した平面拘束操作部３０３０によるΔＭの生成処理を行い、次のフレームにおける仮想物体の位置姿勢を示す行列Ｍ’の生成処理を行う。ステップＳ６０３０における処理の詳細については図８を用いて後述する。
【０１４１】
一方、ステップＳ６０３０で平面拘束操作部３０３０が選択されていないと判断した場合には処理をステップＳ６０５０に進め、光線平面拘束操作部３０４０が選択されているか否かを判断する。光線平面拘束操作部３０４０が選択されている場合には処理をステップＳ６０６０に進め、光線平面拘束操作部３０４０は、以上説明した光線平面拘束操作部３０４０によるΔＭの生成処理を行い、次のフレームにおける仮想物体の位置姿勢を示す行列Ｍ’の生成処理を行う。ステップＳ６０６０における処理の詳細については図９を用いて後述する。
【０１４２】
一方、ステップＳ６０５０で光線平面拘束操作部３０４０が選択されていないと判断した場合には処理をステップＳ６０７０に進め、固定操作部３０５０が選択されていると判断し、固定操作部３０５０は、以上説明した固定操作部３０５０によるΔＭの生成処理を行い、次のフレームにおける仮想物体の位置姿勢を示す行列Ｍ’の生成処理を行う。ステップＳ６０７０における処理の詳細については図１０を用いて後述する。
【０１４３】
図７は、上記ステップＳ６０２０における処理の詳細を示すフローチャートである。上述の通り、ステップＳ６０２０における処理は直接操作部３０２０が行うものである。
【０１４４】
ステップＳ７０２０では、ΔＷｒを計算するか否かを判断する。例えば、記憶部１０９０に格納された操作方法選択状態データを参照して「平行移動操作のみの反映」がユーザによって選択されていない場合、ΔＷｒを計算すると判断する。計算すると判断した場合には処理をステップＳ７０３０に進め、ＲＡＭ２３０２に一時的に記憶させているＷｒ−１、Ｗｒのデータを用いて式５に従ってΔＷｒを求める処理を行う。
【０１４５】
一方、ΔＷｒは計算しないと判断した場合には、処理をステップＳ７０２５に進め、ΔＷｒには単位行列を設定する。
【０１４６】
そして次に、ステップＳ７０４０では、ΔＷｔを計算するか否かを判断する。例えば、記憶部１０９０に格納された操作方法選択状態データを参照して「回転操作のみの反映」がユーザによって選択されていない場合、ΔＷｔを計算すると判断する。計算すると判断した場合には処理をステップＳ７０５０に進め、ＲＡＭ２３０２に一時的に記憶させているＷｔ−１、Ｗｔのデータを用いて式６に従ってΔＷｔを求める処理を行う。
【０１４７】
一方、ΔＷｔは計算しないと判断した場合には、処理をステップＳ７０４５に進め、ΔＷｔには単位行列を設定する。
【０１４８】
次にステップＳ７０６０では、以上求めたΔＷｒ、ΔＷｔを用いて式４に従ってΔＭを求め、更に式１に従ってＭ’を求める。求めたＭ’のデータはＲＡＭ２３０２に出力される。
【０１４９】
図８は、上記ステップＳ６０３０における処理の詳細を示すフローチャートである。上述の通り、ステップＳ６０３０における処理は平面拘束操作部３０３０が行うものである。
【０１５０】
ステップＳ８０２０では、ΔＷｒ’を計算するか否かを判断する。例えば、記憶部１０９０に格納された操作方法選択状態データを参照して「平行移動操作のみの反映」がユーザによって選択されていない場合、ΔＷｒ’を計算すると判断する。計算すると判断した場合には処理をステップＳ８０３０に進め、式９〜１１に従ってΔＷｒ’を求める処理を行う。
【０１５１】
一方、ΔＷｒ’は計算しないと判断した場合には、処理をステップＳ８０２５に進め、ΔＷｒ’には単位行列を設定する。
【０１５２】
そして次に、ステップＳ８０４０では、ΔＷｔ’を計算するか否かを判断する。例えば、記憶部１０９０に格納された操作方法選択状態データを参照して「回転操作のみの反映」がユーザによって選択されていない場合には、ΔＷｔ’を計算すると判断する。計算すると判断した場合には処理をステップＳ７０５０に進め、式１３，１４に従ってΔＷｔ’を求める処理を行う。
【０１５３】
一方、ΔＷｔ’は計算しないと判断した場合には、処理をステップＳ８０４５に進め、ΔＷｔ’には単位行列を設定する。
【０１５４】
次にステップＳ８０６０では、以上求めたΔＷｒ’、ΔＷｔ’を用いて式８に従ってΔＭを求め、更に式１に従ってＭ’を求める。求めたＭ’のデータはＲＡＭ２３０２に出力される。
【０１５５】
図９は、上記ステップＳ６０６０における処理の詳細を示すフローチャートである。上述の通り、ステップＳ６０６０における処理は光線平面拘束操作部３０４０が行うものである。
【０１５６】
ステップＳ９０２０では、ΔＷｒ’を計算するか否かを判断する。例えば、記憶部１０９０に格納された操作方法選択状態データを参照して「平行移動操作のみの反映」がユーザによって選択されていない場合、ΔＷｒ’を計算すると判断する。計算すると判断した場合には処理をステップＳ９０３０に進め、式９〜１１に従ってΔＷｒ’を求める処理を行う。
【０１５７】
一方、ΔＷｒ’は計算しないと判断した場合には、処理をステップＳ９０２５に進め、ΔＷｒ’には単位行列を設定する。
【０１５８】
そして次に、ステップＳ９０４０では、Ｗｔ’を計算するか否かを判断する。例えば、記憶部１０９０に格納された操作方法選択状態データを参照して「回転操作のみの反映」がユーザによって選択されていない場合には、Ｗｔ’を計算すると判断する。計算すると判断した場合には処理をステップＳ９０５０に進め、式７，１７，１８に従って光線と平面との交点を求める処理を行う。そしてステップＳ９０６０で、求めた交点を式１９で示す行列Ｗｔ’としてＲＡＭ２３０２に保持する。
【０１５９】
一方、Ｗｔ’は計算しないと判断した場合には、処理をステップＳ９０４５に進め、Ｗｔ’には単位行列を設定する。
【０１６０】
次にステップＳ８０７０では、以上求めたΔＷｒ’、Ｗｔ’を用いて式１５に従ってΔＭを求め、更に式１に従ってＭ’を求める。求めたＭ’のデータはＲＡＭ２３０２に出力される。
【０１６１】
図１０は、上記ステップＳ６０７０における処理の詳細を示すフローチャートである。上述の通り、ステップＳ６０７０における処理は固定操作部３０５０が行うものである。
【０１６２】
ステップＳ１００１０では、式２０に従ってΔＭを求める。そしてステップＳ１００２０では、ステップＳ１００１０で求めたΔＭを用いて、式１に従って行列Ｍ’を求める。求めたＭ’のデータはＲＡＭ２３０２に出力される。
【０１６３】
以上の説明により、本実施形態は、操作部と仮想物体との距離などに応じて複数の操作方法の中から１つを選択し、選択した操作方法でもって仮想物体を操作できるので、高い利便性でもって、より的確に仮想物体を操作することができる。
【０１６４】
尚、本実施形態では、ＨＭＤ１０００はビデオシースルー型のものをと用いているが、光学シースルー型のものを用いても良い。この場合、当然ＨＭＤ１０００には撮像部１０１０は備わっておらず、これに伴い、撮像画像の取得部１０４０、画像合成部１１２０も備わっていない。よって、仮想画像生成部１１１０により生成された仮想空間の画像はＭＲ画像出力部１１３０により表示部１０３０に出力される。ＨＭＤ１０００が光学シースルー型であれば表示部１０３０を介して現実空間が見えるので、ＨＭＤ１０００を頭部に装着した操作者は、表示部１０３０に表示された向こう側の現実空間が見えると共に、この現実空間に重なって表示部１０３０に表示された仮想空間の画像を見ることができ、結果として、観察者の目には現実空間と仮想空間とを重畳したものを提示することができる。
【０１６５】
又当然であるが、ＨＭＤ１０００の位置、及び／又は姿勢を固定するのであれば、撮像部位置姿勢計測部１０２０、撮像部位置姿勢計測部１０５０は必要なく、その場合、ＨＭＤ１０００の世界座標系における位置、及び／又は姿勢は予め計測し、計測した位置、及び／又は姿勢のデータを予め記憶部１０９０に記憶させておき、必要に応じて用いればよい。
【０１６６】
又、本実施形態では仮想物体の操作方法として直接選択方法、光線操作方法の２つを用いたが、これ以上の数の操作方法を適用しても良いし、この２つの操作方法に限定されるものではない。
【０１６７】
［第２の実施形態］
第１の実施形態では、選択方法選択状態データ、操作方法選択状態データはＭＲ画像を観察者に提示する処理の前段で、ワークステーション２０４０により予め設定されたものであった。当然、これらのデータはワークステーション２０４０を操作すれば変更でき、選択方法や操作方法を変更することはできるのであるが、ＨＭＤ１０００を頭部に装着している観察者がリアルタイムにこれらを変更することは、操作部１１００の構成上できなかった。本実施形態では、操作部１１００にこれらを変更するための操作部を新たに設けることで、選択方法や操作方法を観察者がリアルタイムに変更できるシステムを示す。
【０１６８】
図２４は、本実施形態で用いる操作部を示す図である。同図において図１と同じ部分については同じ番号を付けており、その説明を省略する。同図において２４００は操作部本体である。この操作部２４００は図２に示す操作部１１００の代わりとして用いられるので、センサコントローラ２０３０に接続されている。
【０１６９】
２４０１は直接選択方法、光線選択方法の何れかを選択するための操作部で、この操作部２４０１が例えばボタンであるとすると、押下する度に、現在使用する選択方法が直接選択方法、光線選択方法と交互に切り替わる。そしてこの切り替えた旨の信号は後段のセンサコントローラ２０３０を介してワークステーション２０４０に通知されるので、ワークステーション２０４０のＣＰＵ２３０１は、ＲＡＭ２３０２に記憶している選択方法選択状態データを、通知された信号が示す旨に切り替える。これにより、ＨＭＤ１０００を頭部に装着している操作者は、手に持っている操作部２４０１を操作することで選択方法選択状態データを更新することができ、選択方法を直接選択方法、光線選択方法の何れかにリアルタイムに変更することができる。
【０１７０】
２４０２は仮想物体を操作するために用いる上記４つの操作部（直接操作部３０２０、平面拘束操作部３０３０、光線平面拘束操作部３０４０、固定操作部３０５０）のうち何れかを選択するための操作部で、この操作部２４０２が例えばボタンであるとすると、押下する度に、上記４つの操作部のうち、アクティブになる１つが順番に切り替わる。そしてアクティブになる操作部が、選択された操作部となる。即ち、現在使用する操作方法が順次切り替わる。そしてこの切り替えた旨の信号は後段のセンサコントローラ２０３０を介してワークステーション２０４０に通知されるので、ワークステーション２０４０のＣＰＵ２３０１は、ＲＡＭ２３０２に記憶している操作方法選択状態データを、通知された信号が示す旨に切り替える。これにより、ＨＭＤ１０００を頭部に装着している操作者は、手に持っている操作部２４０２を操作することで操作方法選択状態データを更新することができ、操作方法を直接操作部３０２０による操作、平面拘束操作部３０３０による操作、光線平面拘束操作部３０４０による操作、固定操作部３０５０による操作の何れかにリアルタイムに変更することができる。
【０１７１】
２４０３は操作部２４０１，２４０２によって切り替わった選択方法、操作方法を表示するための表示部で、現在選択されている選択方法、操作方法を数値や文字などで表示する。
【０１７２】
以上説明した操作部を用いることで、ＨＭＤ１０００を頭部に装着した操作者は手に持っている操作部２４００に備わっている操作部２４０１、２４０２を操作することで、リアルタイムに選択方法、操作方法を切り替えることができるので、操作者は適宜、自分の好みに応じて切り替えることができるので、より高い利便性でもって、より的確に仮想物体を操作することができる。
【０１７３】
［第３の実施形態］
本実施形態では、上記４つの操作部（直接操作部３０２０、平面拘束操作部３０３０、光線平面拘束操作部３０４０、固定操作部３０５０）をワークステーション２０４０側で判断して切り替える。その場合、第１の実施形態と異なるのは、図１における仮想物体操作部の構成である。
【０１７４】
図１８は、本実施形態に係る仮想物体操作部の機能構成を示すブロック図である。同図において、図３と同じ部分については同じ番号を付けており、その説明は省略する。
【０１７５】
操作方法決定部１８０１は、記憶部１０９０内の現実空間の情報、仮想物体２０１０の位置姿勢情報、操作部１１００の位置姿勢情報から、現在の状況に最適な操作方法を選択する。
【０１７６】
図１９は、本実施形態に係る仮想物体操作部により行われる仮想物体操作処理（ステップＳ５１００）の詳細を示すフローチャートである。図６と同じ部分については同じ番号を付けており、その説明を省略する。図１９に示すフローチャートは、図６に示すフローチャートにおいて、ステップＳ６０１０の前にステップＳ１９０１を加えたものである。
【０１７７】
ステップＳ１９０１では、操作方法決定部１８０１が、記憶部１０９０内の現実空間の情報、仮想物体２０１０の位置姿勢情報、操作部１１００の位置姿勢情報から、現在の状況に最適な操作方法を選択する。
【０１７８】
図２０はステップＳ１９０１の処理の詳細を示すフローチャートである。
【０１７９】
ステップＳ２００１０では、記憶部１０９０内の仮想物体２０１０と現実空間の平面（２０５０、１７０３０、１７０４０等）との距離を算出し、距離が閾値以下の値であれば、処理をステップＳ２００３０に進める。一方、この距離が閾値以上の値であれば、処理をステップＳ２００２０に進める。ここで、仮想物体と平面との距離の計算についてであるが、仮想物体の位置姿勢のデータは常に得られるものであり、平面のデータは上述の通り記憶部１０９０に記憶されているので、平面と仮想物体との直線距離はこれらのデータを用いれば計算することができる。
【０１８０】
ステップＳ２００２０では、これから用いるべき操作方法を固定操作部３０５０を用いた操作方法に設定する。即ち、記憶部１０９０に記憶されている操作方法選択状態データを、固定操作部３０５０を用いた操作方法を表すデータに更新する。これにより、以下、固定操作部３０５０を用いた操作方法により、仮想物体を操作することができる。
【０１８１】
ステップＳ２００３０では、記憶部１０９０に記憶されている選択方法選択状態データを参照し、このデータが直接選択方法を示すデータであるかどうかを判定し、直接選択方法を示すデータである場合には、処理をステップＳ２００５０に進め、一方、選択方法選択状態データが光線選択方法を示すデータであった場合には、処理をステップＳ２００４０に進める。
【０１８２】
ステップＳ２００４０では、これから用いるべき操作方法を平面拘束操作部３０３０を用いた操作方法に設定する。即ち、記憶部１０９０に記憶されている操作方法選択状態データを、平面拘束操作部３０３０を用いた操作方法を表すデータに更新する。これにより、以下、平面拘束操作部３０３０を用いた操作方法により、仮想物体を操作することができる。
【０１８３】
ステップＳ２００５０では、これから用いるべき操作方法を光線平面拘束操作部３０４０を用いた操作方法に設定する。即ち、記憶部１０９０に記憶されている操作方法選択状態データを、光線平面拘束操作部３０４０を用いた操作方法を表すデータに更新する。これにより、以下、光線平面拘束操作部３０４０を用いた操作方法により、仮想物体を操作することができる。
【０１８４】
以上の処理により、上記４つの操作部のうち使用する操作部を状況に応じて選択することができる。なお、４つの操作部のうちいずれを用いるかの判断基準は図２０に示したような、平面と仮想物体との距離が閾値以上であるか否か以外であっても良く、これに限定されるものではない。
【０１８５】
以下では、別の判断基準について説明する。
【０１８６】
図２１は、別の判断基準を説明するための図である。同図では、現実空間の机２０５０の仮想物体上に、ロボットの形状を有する仮想物体２１０３０、及びダイアルの形状を有する仮想物体２１０２０Ａ、２１０２０Ｂが配置されている。ロボットの仮想物体２１０３０に対しては、操作者が直接的に操作しやすいように、固定操作部３０５０による操作が選択されている方が好ましい。また、ダイアルの仮想物体２１０２０Ａ、２１０２０Ｂは、その位置を移動させることなく、回転させるために用いるものであるので、机のオブジェクト２０５０上から浮いたり、位置が移動することは避けたい。従って、このダイアルの仮想物体２１０２０Ａ、２１０２０Ｂに対しては、平面拘束操作部３０３０による操作のうち、回転操作のみを与えることが好ましい。
【０１８７】
従って、ここでは用いるべき操作部を、操作対象として選択する仮想物体によって切り替える。
【０１８８】
図２２は、用いるべき操作部を、操作対象として選択する仮想物体によって切り替える場合における操作方法決定部１８０１が行う処理のフローチャートである。即ち、図２２はこの場合のステップＳ１９０１の処理の詳細を示すフローチャートである。
【０１８９】
先ず、ステップＳ２２０１０では、操作部１１００によって選択されている仮想物体が、ロボットの仮想物体２１０３０であるか否かを判定する。この判定処理では、上記モデル選択状態データを参照する。
【０１９０】
上述の通り、各仮想物体にはこのモデル選択状態データが割り当てられており、このモデル選択状態データには上記ステップＳ５０９０で、操作部１１００の位置から所定サイズの領域（指定領域）内に仮想物体が存在すると判断する、即ち、この仮想物体が存在すると判断した場合には「選択されている」旨のデータがセットされる。従って、各仮想物体に対するモデル選択状態データに「選択されている」、「選択されていない」のいずれかの旨のデータがセットされた後に、ステップＳ２２０１０では、このセット後のロボットの仮想物体２１０３０のモデル選択状態データを参照する処理を行い、この参照したモデル選択状態データが「選択されている」旨を示すデータであるか否かを判断する。
【０１９１】
そしてロボットの仮想物体２１０３０のモデル選択状態データが「選択されている」旨を示すデータであれば処理をステップＳ２２０２０に進め、ロボットの仮想物体２１０３０のモデル選択状態データが「選択されていない」旨を示すデータであれば処理をステップＳ２２０３０に進める。
【０１９２】
ステップＳ２２０２０では、これから用いるべき操作方法を固定操作部３０５０を用いた操作方法に設定する。即ち、記憶部１０９０に記憶されている操作方法選択状態データを、固定操作部３０５０を用いた操作方法を表すデータに更新する。これにより、ロボットの仮想物体２１０３０を操作する場合には固定操作部３０５０を用いた操作方法が設定されることになる。
【０１９３】
ステップＳ２２０３０では、操作部１１００によって選択されている仮想物体が、ダイアルの仮想物体２１０２０Ａ、又は２１０２０Ｂであるか否かを判定する。この判定処理では、上記ステップＳ２２０１０と同様にしてモデル選択状態データを参照する。即ち、ダイアルの仮想物体２１０２０Ａ、２１０２０Ｂのモデル選択状態データを参照する処理を行い、この参照したモデル選択状態データが「選択されている」旨を示すデータであるか否かを判断する。
【０１９４】
そしてダイアルの仮想物体２１０２０Ａ、又は２１０２０Ｂが選択されていれば処理をステップＳ２２０４０に進め、ダイアルの仮想物体２１０２０Ａ、２１０２０Ｂのいずれも選択されていない場合には本処理を終了する。
【０１９５】
ステップＳ２２０４０では、これから用いるべき操作方法を平面拘束操作部３０３０を用いた操作方法に設定する。即ち、記憶部１０９０に記憶されている操作方法選択状態データを、平面拘束操作部３０３０を用いた操作方法を表すデータに更新する。これにより、以下、ダイアルの仮想物体２１０２０Ａ、又は２１０２０Ｂを操作する場合には平面拘束操作部３０３０を用いた操作方法が設定されることになる。
【０１９６】
なお、上述の通り、ダイアルの仮想物体に対する操作としては、位置の変更は行わずに回転のみを行うことが好ましいので、ステップＳ２２０４０では更に、平面拘束操作部３０３０による操作のうち、回転操作のみをダイアルの仮想物体２１０２０Ａ、２１０２０Ｂのうち選択した方に反映させるようにする。
【０１９７】
このように、上記４つの操作部のうちいずれを用いるかの判断基準は様々なものがあり、これ以外の判断基準を考えることも可能である。
【０１９８】
［その他の実施形態］
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１９９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２００】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２０１】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０２０２】
【図１】本発明の第１の実施形態に係る複合現実空間提示システムの機能構成を示すブロック図である。
【図２】図１に示す複合現実空間提示システムの模式図である。
【図３】仮想物体操作部１０８０の詳細な構成を構成を示すブロック図である。
【図４】従来の操作方法である直接操作を行っている様子を示す模式図である。
【図５】１フレーム分のＭＲ画像を生成して表示部１０３０に出力するまでに、ワークステーション２０４０が行う処理のフローチャートである。
【図６】ステップＳ５１００における処理の詳細を示すフローチャートである。
【図７】ステップＳ６０２０における処理の詳細を示すフローチャートである。
【図８】ステップＳ６０３０における処理の詳細を示すフローチャートである。
【図９】ステップＳ６０６０における処理の詳細を示すフローチャートである。
【図１０】ステップＳ６０７０における処理の詳細を示すフローチャートである。
【図１１】直接選択方法を説明するための図である。
【図１２】光線操作方法を説明するための図である。
【図１３】平面拘束操作部３０３０を用いた仮想物体２０１０の操作方法を説明する図である。
【図１４】光線平面拘束操作部３０４０を用いた仮想物体２０１０の操作方法を説明する図である。
【図１５】固定操作部３０５０を用いた仮想物体２０１０の操作方法を説明する図である。
【図１６】平面拘束操作部３０３０が、ΔＷｔ’を求めるための処理を説明するための図である。
【図１７】平面２０５０を操作時に変更する場合の仮想物体２０１０の状態を示す図である。
【図１８】本発明の第３の実施形態に係る仮想物体操作部の機能構成を示すブロック図である。
【図１９】本発明の第３の実施形態に係る仮想物体操作部により行われる仮想物体操作処理（ステップＳ５１００）の詳細を示すフローチャートである。
【図２０】ステップＳ１９０１の処理の詳細を示すフローチャートである。
【図２１】別の判断基準を説明するための図である。
【図２２】用いるべき操作部を、操作対象として選択する仮想物体によって切り替える場合における操作方法決定部１８０１が行う処理のフローチャートである。
【図２３】ワークステーション２０４０の基本構成を示す図である。
【図２４】本発明の第２の実施形態で用いる操作部を示す図である。
【図１】
2005107972.tif 000023
【図２】
2005107972.tif 000024
【図３】
2005107972.tif 000025
【図４】
2005107972.tif 000026
【図５】
2005107972.tif 000027
【図６】
2005107972.tif 000028
【図７】
2005107972.tif 000029
【図８】
2005107972.tif 000030
【図９】
2005107972.tif 000031
【図１０】
2005107972.tif 000032
【図１１】
2005107972.tif 000033
【図１２】
2005107972.tif 000034
【図１３】
2005107972.tif 000035
【図１４】
2005107972.tif 000036
【図１５】
2005107972.tif 000037
【図１６】
2005107972.tif 000038
【図１７】
2005107972.tif 000039
【図１８】
2005107972.tif 000040
【図１９】
2005107972.tif 000041
【図２０】
2005107972.tif 000042
【図２１】
2005107972.tif 000043
【図２２】
2005107972.tif 000044
【図２３】
2005107972.tif 000045
【図２４】
2005107972.tif 000046