(57)【要約】【課題】  三次元仮想物体を意図した位置姿勢に素早く正確に配置すること。【解決手段】  現実物の一つの面に三次元仮想物体の面のうち、一つの面が平行になるように、三次元仮想物体を移動する。  このとき、現実物の面を構成する点や辺と三次元仮想物体の面を構成する点や辺が所定の位置関係になるように移動する。  さらに、現実物の面と三次元仮想物体の相対位置姿勢を調整する手段を用いて操作しやすい相対位置姿勢に調整する。  そして、現実物の面と三次元仮想物体の相対位置姿勢を保ちながら、現実物の移動に合わせて三次元仮想物体を移動させることで素早く正確に三次元仮想物体を配置する。【選択図】図１
2018132847.tif 000002
【特許請求の範囲】
【請求項１】
現実物の形状に対応する面である基準面を取得する基準面取得手段と、
前記基準面に関する少なくとも1つ以上の軸または点を取得する基準面情報取得手段と、
三次元仮想物体の面のうち、一つの面を対応面として選択する選択手段と、
前記対応面に関する少なくとも1つ以上の軸または点を取得する対応面情報取得手段と、
前記基準面に関する少なくとも1つ以上の前記軸または点と前記対応面に関する少なくとも1つ以上の軸または点とが所定の位置関係になるように前記三次元仮想物体の位置姿勢を設定する設定手段と、
前記基準面に対する前記対応面の相対位置姿勢を調整する調整手段と、
前記基準面の移動に応じて、前記三次元仮想物体の位置を移動する移動手段と、
前記移動手段によって移動された結果に基づいて、前記三次元仮想物体の位置姿勢を決定する決定手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記選択手段は、前記三次元仮想物体のバウンディングボックスを作成し、
該バウンディングボックスの面または前記三次元仮想物体の面のうち、いずれかの面を前記対応面として選択すること
を特徴とする請求項1に記載の情報処理装置。
【請求項３】
前記調整手段は、前記対応面の位置を前記基準面または前記対応面に関する少なくとも1つ以上の軸方向に平行移動することで調整すること
を特徴とする請求項１に記載の情報処理装置。 
【請求項４】
前記調整手段は、前記対応面の姿勢を前記基準面または前記対応面に関する少なくとも1つ以上の軸方向に回転することで調整すること
を特徴とする請求項１に記載の情報処理装置。 
【請求項５】
前記設定手段は、前記基準面と前記対応面を平行にし、かつ前記対応面に関する軸のいずれか1つ以上が前記基準面に関する軸のいずれか1つ以上と平行になるように設定すること
を特徴とする請求項1に記載の情報処理装置。 
【請求項６】
前記設定手段は、前記基準面と前記対応面を平行にし、かつ前記対応面に関する点のいずれか1つ以上が前記基準面に関する点のいずれか1つ以上と同じ位置になるように設定すること
を特徴とする請求項1に記載の情報処理装置。 
【請求項７】
前記調整手段は、前記基準面と前記対応面のうち、世界座標系のいずれかの平面または床面に最も近い位置にある辺同士の高さを一致させるように補正すること
を特徴とする請求項1に記載の情報処理装置。
【請求項８】
前記調整手段は、前記対応面に関する点のいずれか1つ以上が前記基準面に関する点のいずれか1つ以上と同じ位置になるように調整量を補正すること
を特徴とする請求項1に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複合現実感提示システムにおいて、三次元空間上での仮想物体の位置姿勢情報を設定する技術に関する。
【背景技術】
【０００２】
CADデータやCGなどの仮想的な三次元モデル（以後、三次元仮想物体と呼ぶ）を三次元空間上に配置する方法を考える。従来方法では、観察者はまず、ディスプレイ等の二次元画面に三次元仮想物体を二次元画像として投影し、擬似的な三次元空間上でキーボード等を用いて物体の位置姿勢の操作を行い、三次元仮想物体の配置を設定していた。しかし、この方法では、二次元画像への投影時に、三次元仮想物体の情報が欠落してしまい、三次元仮想物体を直観的に操作し、配置することが難しい場合がある。この問題を解決するために、複合現実感（Mixed Reality:MR)技術（例えば、特許文献1）を用いて、三次元仮
想物体を三次元空間上で操作して配置する方法が試みられている。
【０００３】
三次元仮想物体を三次元の現実空間内で操作する方法の例としては、6自由度位置姿勢計測装置（例えば、Polhemus社のFASTRAK(登録商標)センサのスタイラス）を用いる方法がある。この方法では、観察者は、6自由度位置姿勢計測装置から出力される位置姿勢変化分を取り出し、その変化分を三次元仮想物体の移動回転量として三次元仮想物体の配置を設定する（特許文献1）。
【０００４】
観察者に提示する手段としては、HMD（Head Mounted Display)などが用いられる。このHMDにより、観察者は、現実空間と三次元仮想物体との位置関係を容易に把握し、三次元仮想物体の配置の設定を行うことが出来る。
【０００５】
特許文献1のような手法で、観察者が、現実物体と現実物体の形状を模した三次元仮想物体の配置が同じになるように、三次元仮想物体の位置姿勢を設定しようとする場合を考える。このとき、6自由度位置姿勢計測装置により三次元仮想物体を操作する際に面ではなく点で操作するため、姿勢が一意に定まらず短時間で正確に三次元仮想物体の位置姿勢を設定することは難しい。
【０００６】
そこで、特許文献2では現実物体(手など)の面の情報を取得し、情報取得した面と三次元仮想物体の特定の面が平行に接するように現実物と三次元仮想物体の相対位置姿勢を設定する。そして、現実物の位置姿勢の変化を6自由度位置姿勢計測装置で計測し、現実物体が移動しても、設定された現実物と三次元仮想物体の相対位置姿勢を保つように三次元仮想物体を移動させる。これにより、三次元仮想物体を点ではなく(現実物体の)面で操作でき、現実物体の面の位置姿勢を変えることで仮想物体の位置姿勢を変更し、狙った位置姿勢に三次元仮想物体を配置することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2004-62758号公報
【特許文献２】特開2016-99839号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献２のような手法では、三次元仮想物体と現実物体の面同士が平行に接するようにはしているが、その時の三次元仮想物体と現実物体の相対位置姿勢が必ずしも扱いやすい姿勢になるとは限らない。
【０００９】
例えば、図2のように現実物体である直方体200の右側の平面202に対して、三次元仮想物体である直方体201の左側の平面203を平行に接するよう設定する場合を考える。このとき、直方体200の右側の平面202と直方体201の左側の平面203の相対位置姿勢の設定方法は複数のパターンが考えられる。図2(a)の場合には平面202の面の中心位置と平面203の面の中心位置が一致し、かつ、平面202を構成する辺と平面203を構成する辺が平行になっている。
【００１０】
図2(b)の場合には平面202を構成する頂点の位置と平面203の面の中心位置が一致し、かつ、平面202を構成する辺と平面203を構成する辺が平行になっている。図2(c)の場合には平面202を構成する頂点の位置202と平面203を構成する頂点の位置203が一致し、平面202を構成する辺と平面203を構成する辺が平行になっている。また、図2(d)の場合には平面202を構成する辺の中心位置と平面203を構成する辺の中心位置が一致し、かつ、平面202を構成する辺と平面203を構成する辺が平行になっている。また、図2(e)の場合には、平面202の面の中心位置と平面203の面の中心位置が一致し、かつ、平面202を構成する辺と平面203を構成する辺の間の角度が45度になるように設定されている。このように平面同士を平行に接するように設定する場合にも色々な設定方法が考えられる。
【００１１】
この図2のような平面同士の相対位置姿勢の例を用いて、図3のように三次元仮想物体である直方体201を配置することを考える。図3では直方体201の底面が床面301の上に接するように配置されている。このように直方体201を配置するために、図2の各例を用いて直方体201の位置姿勢を変更する場合、各例によって作業の行いやすさに差が出る。例えば、図2(a)や図2(b)の例では、直方体201の底面が現実物である直方体200の底面より下側にある。
【００１２】
そのため、床面301に直方体201の底面を合わせようとすると、直方体200の底面が床面301に平行になり、かつ直方体201の底面の高さが床面301に合うように直方体200を空中で調整しなければならない。空中で現実物を水平に保つことは道具などを使わない限り容易ではないので、精度高く直方体201を配置することは困難になる。また、図2(e)のように直方体200と直方体201の底面の傾きが異なる場合には、直方体201の底面が床面301と平行になるように直方体200を傾けながら高さも調節する必要がある。
【００１３】
これに対して、図2(c)や図2(d)では直方体200の底面と直方体201の底面は平行でかつ同じ高さにある。この場合には、直方体200を床面301の上に置いて、床面の上で直方体200を移動させるだけで目標の位置姿勢に直方体201を配置することができる。
【００１４】
このように、目標とする三次元仮想物体の位置姿勢や、三次元仮想物体と現実物の形状、周辺の環境(図3の例では床面301)によって、どのような三次元仮想物体と現実物の相対位置姿勢が操作しやすいかが異なる。そのため、各条件において、狙った位置姿勢に短時間で正確に三次元仮想物体を配置しやすいように三次元仮想物体と現実物体の相対位置姿勢を決定または調整できる必要がある。
【課題を解決するための手段】
【００１５】
現実物の形状に対応する面である基準面を取得する取得手段と、
前記基準面に関する少なくとも1つ以上の軸または点を取得する基準面情報取得手段と、
三次元仮想物体の面のうち、一つの面を対応面として選択する選択手段と、
前記対応面に関する少なくとも1つ以上の軸または点を取得する対応面情報取得手段と、
前記基準面に関する少なくとも1つ以上の前記軸または点と前記対応面に関する少なくとも1つ以上の軸または点とが所定の位置関係になるように前記三次元仮想物体の位置姿勢を設定する設定手段と、
前記基準面に対する前記対応面の相対位置および相対姿勢の少なくとも1つ以上を調整する調整手段と、
前記基準面の移動に応じて、前記三次元仮想物体の位置を移動する移動手段と、
前記移動手段によって移動された結果に基づいて、前記三次元仮想物体の位置姿勢を決定する決定手段と、
を有することを特徴とする情報処理装置。
【発明の効果】
【００１６】
本発明によれば、より短時間で三次元仮想物体の位置姿勢を正確に設定することが可能になる。
【図面の簡単な説明】
【００１７】
【図１】第3の実施形態の相対位置姿勢の補正処理の一例を示す図である。
【図２】三次元仮想物体の一面と現実物の一面が平行に接するようにした場合の組み合わせを示した図
【図３】三次元仮想物体の配置の一例を示す図
【図４】ハードウェア構成を示す図である。
【図５】第1の実施形態の機能構成を示す図である。
【図６】第1の実施形態の処理を示すフローチャートである。
【図７】第1の実施形態の使用状況の一例を示す図である。
【図８】第1の実施形態の基準面の一例を示す図である。
【図９】第1の実施形態の対応面の一例を示す図である。
【図１０】第1の実施形態の設定手段506の処理の一例と、調整手段507に関わる表示方法の一例を示す図である。
【図１１】本発明の効果を説明するための図である。
【図１２】本発明の効果を説明するための図である。
【図１３】マニピュレータ1000の一例を示す図である。
【図１４】第2の実施形態の効果を説明するための図である。
【図１５】第2の実施形態の機能構成を示す図である。
【図１６】第2の実施形態の処理を示すフローチャートである。
【図１７】第2の実施形態の使用状況の一例を示す図である。
【図１８】第3の実施形態の処理を示すフローチャートである。
【図１９】第3の実施形態の相対位置姿勢の補正処理の一例を示す図である。
【発明を実施するための形態】
【００１８】
［実施例１］
図4は、情報処理装置400のハードウェア構成を示す図である。情報処理装置400は、CPU401、RAM402、ROM403、HDD404、インターフェース405、システムバス406から構成され、HMD407が接続されている。
【００１９】
CPU401は、RAM402をワークメモリとして、ROM403に格納されたプログラムを実行し、システムバス406を介して後述する各構成を統括的に制御する。これにより、後述する様々な処理が実行される。HDD404は、二次記憶装置としての役割を持つ。CPU401は、HDD404からのデータ読み出し、およびHDD404へのデータ書き込みが可能である。なお、二次記憶装置は、HDDの他、光ディスクドライブ等の記憶デバイスでもよい。インターフェース405は、HMD407などの外部機器とのデータのやり取りを行う。
【００２０】
HMD407は、撮影部408、409と表示部410、411とから構成され、撮影部408、409の撮影画像や後述の合成画像を表示部410、411に表示する。なお、本発明は情報処理装置400にHMD407が接続されている場合に限定されず、現実物体の撮影画像を取得できる構成であれば適用可能である。また、HMD407に含まれる表示部410、411の代わりに、ディスプレイを表示部として用いる構成でも可能である。
【００２１】
入力部412は、ユーザーからの入力をシステムに渡すためのものであり、マウスやキーボード、コントローラやボタン、マイク、タッチパネルなどを指す。なお、情報処理装置400の構成要素は上記以外にも存在するが、本発明の主眼ではないので、説明を省略する。
【００２２】
図5は、本実施形態にかかる情報処理装置400の機能構成を示す図である。また、図6は、本実施形態の処理の流れを示すフローチャートである。本実施例では図6のフローチャートを、撮像部408、409から撮影像が送られる度に繰り返し処理する。以下では、図5と図6を参照して、本実施形態の処理の流れを説明する。また、図7は本実施例の使用時の状況の一例を示す図であり、三次元仮想物体702の位置姿勢を、コントロール装置701を用いて変更する場合を示した図である。
【００２３】
ステップS600では、画像取得手段500が撮像部408、409からそれぞれ撮像画像を取得する。以下、撮像部408、409から取得した撮像画像をまとめて、「ステレオ画像」と記述することがある。ステップS601では、位置姿勢算出手段501がステップS500において取得したステレオ画像のそれぞれから撮像部408、409の位置姿勢を算出する。
【００２４】
ステレオ画像から撮像部408、409の位置姿勢を算出する手段として、指標を用いる手法が存在する。これは図7のようにHMD407の撮像部408、409で指標700を撮影し、指標700に対する撮像部408、409の位置姿勢を算出する手法である。この他の撮影画像をもとに撮像部408や撮像部409の位置姿勢を求める手法としてはSLAM(Simultaneous Localization and Mapping)が存在する。
【００２５】
また、本実施例では、撮像部408、409の撮影像から撮像部408、409の位置姿勢を求める手法を示しているが、磁気センサやジャイロセンサなどのセンサを用いて位置姿勢を求めてもよい。また、センサから得られる情報と撮影像を組み合わせて位置姿勢を推定してもよく、撮像部408、409の位置姿勢を求めることができる任意の手段を用いることができる。
【００２６】
ステップS602では、選択手段502が、RAM402に記録されている情報や入力部412からの情報に基づいて、三次元仮想物体702の位置姿勢を変更する処理を行う操作が行われたかを調べる。ここで、入力部412からの入力とはキーボードによるコマンド選択やマウスを用いたGUI(Graphical User Interface)操作、音声認識による操作などによって三次元仮想物体702の位置姿勢を変更するモードに切り替える処理を指す。三次元仮想物体702の位置姿勢を変更する処理が行われている場合にはステップS603へ、行われていない場合にはステップS614へ進む。
【００２７】
ステップS603では、基準面取得手段503がステップS500において取得したステレオ画像から基準面の位置姿勢を算出する。ここでの基準面とは、三次元仮想物体を任意の位置姿勢に配置する際に、三次元仮想物体の位置姿勢を変更するために用いる現実物に対応する面を指す。
【００２８】
本実施例では、図8のように基準面として三次元仮想物体操作用のコントロール装置701に存在する直方体の面800を基準面として用いる場合について示す。基準面の位置姿勢算出の手法としては、コントロール装置701の面800に指標700と異なる指標801を貼り、指標801の位置姿勢を撮影像から推定する手法がある。このとき、図8のように基準面として用いる面800以外の面にも指標を張っておき、各指標間の相対位置姿勢を事前に計算しておくことで、指標801が検出できないときでも指標801の位置姿勢を他の指標から推定することもできる。
【００２９】
なお、基準面の位置姿勢の計算は指標を用いた手法に限らず、ステレオマッチングやSfM(Structure from Motion)などの現実物の形状や位置を推定する技術を用いて得られた結果から、平面領域を推定してもよい。また、撮像部408、409の位置姿勢の計算同様にセンサを用いてもよく、任意の手法で基準面の位置姿勢を求めることができる。また、基準面も本実施例のコントロール装置701の面800のような平面に限らず、特許文献2のように手の形状を平面で近似して基準面とすることができ、任意の現実物を基準面とすることができる。
【００３０】
ステップS604では、基準面情報取得手段504が基準面の情報を取得する。ここでの基準面の情報とは基準面を構成する辺や頂点の位置、辺に平行な軸、法線などを指す。本実施例の図7、8のような場合には、指標801の位置姿勢がステップS603で取得できているので、指標801の位置姿勢と、事前に計測した指標801に対する平面800の辺や頂点の相対位置姿勢から計算することができる。また、指標を用いず、現実物の形状を推定して基準面の位置姿勢を求めるような場合には、推定された形状から基準面の辺や頂点の位置姿勢を求めることができる。
【００３１】
ステップS605では、選択手段502がRAM402に記録されている情報から、三次元仮想物体702の位置姿勢を変更する際の三次元仮想物体702と基準面である面800の相対位置姿勢を設定済みか調べる。設定済みであればステップS609へ、設定済みでなければステップS606へ進む。
【００３２】
ステップS606では、選択手段502がRAM402に記録されている情報や入力部412からの情報に基づいて、基準面である面800に対して所定の位置関係になるように設定する三次元仮想物体702上の対応面を選択する。対応面の選択候補となる面に関しては後で詳細を記述する。選択の手段としては、ステップS602同様にキーボードによるコマンド選択やマウスを用いたGUI操作、音声認識による操作などによる選択を行う。
また、ステップS606になった段階で既に過去に対応面を選択済みであればその面をそのまま用いることもできる。
【００３３】
ここから対応面の選択候補について詳細を説明する。対応面の選択候補としては、三次元仮想物体702を構成する面と、三次元仮想物体702を囲むように構成されたバウンディングボックスの面を利用することができる。具体的には図9のように三次元仮想物体702を構成する面900や面901を対応面として使用することができる。また、バウンディングボックスを作り、バウンディングボックスの一面を用いることもできる。
【００３４】
バウンディングボックスの作り方としては、AABB(Axis-Aligned Bounding box) やOBB(Oriented Bounding box)などがある。AABBでは三次元仮想物体702を構成する頂点のうち、ある座標系の各軸方向において最大値、最小値を持つ頂点を求めて、各軸方向の最大値、最小値を用いた直方体を形成することで作成することができる。AABBの計算に用いる座標系は、三次元仮想物体702の形状を定義するときに用いるローカル座標系902や撮像部408、409の位置姿勢を決めるための指標700で定義される座標系703 (以下、世界座標系と記述する)を用いることができる。
【００３５】
これにより得られたバウンディングボックス904のうちの一面(例えば面903)を対応面として利用する。また、OBBは三次元仮想物体702を構成する頂点のローカル座標系902での座標値を使って主成分分析して、三次元仮想物体702の傾きに合った座標系907を求め、座標系907の各軸でAABBのように最大値、最小値を算出することで作成できる。これにより得られるバウンディングボックス905の一面(例えば面906)を対応面として利用する。
【００３６】
ステップS607では、対応面情報取得手段505がステップS606で選択された対応面の情報を取得する。ここでの対応面の情報とは基準面の情報同様、対応面を構成する辺や頂点の位置、辺に平行な軸、法線などを指す。これらは三次元仮想物体702の形状情報やバウンディングボックス904や905の算出過程の情報から容易に得ることができる。ステップS608では、設定手段506がステップS603やS604で得た基準面の位置姿勢や基準面の情報、ステップS608で得た対応面の情報から、基準面と対応面が所定の相対位置姿勢になるように三次元仮想物体702の位置姿勢を変える。
【００３７】
ここで所定の相対位置姿勢とは、基準面と対応面が平行になり、面同士が接する状態を指す。その上で、基準面の各点や辺または辺に平行な軸と対応面の点または辺、辺に平行な軸が所定の位置関係になるように設定する。これは具体的には図2(a)のように面の中心同士が同じ位置になるようにしたり、各面の辺同士が平行になるようにしたりすることができる。また、図2(b)のように一方の面202の頂点と他方の面203の中心の位置を合わせたり、図2(d)のように各面の辺の中点同士を合わせたりしてもよく、各面に関する情報を用いて定義できる任意の位置関係を用いることができる。
【００３８】
このような処理を用いることによって、例えば三次元仮想物体702のバウンディングボックスの面906を対応面として、面800を基準面として利用する場合には図10(a)のように三次元仮想物体702と面800の相対位置姿勢を決定することができる。図10(a)は面906と面800の面の中心位置が一致し、面の各辺同士が平行になるように配置した場合の図である。
【００３９】
なお、本実施例では基準面と対応面が平行になり、面同士が接する状態を利用しているが、これに限るものではなく面の法線同士の間の角度が任意の角度になる場合や面同士が平行だが接していない場合など任意の相対位置姿勢を用いることができる。
【００４０】
ステップS609では、調整手段507が入力部412からの情報に基づいて、ステップS608で設定された三次元仮想物体702と基準面である面800の間の相対位置姿勢を調整するかどうかを判定する。調整を行う場合にはステップS610へ、調整を行わない場合にはステップS611へ進む。ステップS610では、調整手段507が入力部412からの情報に基づいて、ステップS608で設定された三次元仮想物体702と基準面である面800の間の相対位置姿勢を調整する。調整手段の一例としてはマニピュレータを用いた調整が存在する。
【００４１】
マニピュレータとは、表示映像に三次元仮想物体702の位置や姿勢、スケールを変化させる操作に対応する映像を表示し、マウスのドラッグ操作に応じて対応する処理を行えるGUIのことを指す。図13はマニピュレータの例を示した図であり、図13(a)はマニピュレータの表示例を、図13(b)はマニピュレータを操作する際の様子を、図13(c)はマニピュレータの操作結果を示している。
【００４２】
例えば図13(a)のように平行移動用のマニピュレータ1000を表示している場合、図13(b)のようにマウスカーソル1300でマニピュレータ1000の１つの矢印を選択し、ドラッグすると矢印の向きに三次元仮想物体702を移動させることができる。その結果として図13(c)のように三次元仮想物体702の位置を初期位置1301から操作後位置1302に変更することができる。
【００４３】
このようなマニピュレータ1000を用いる場合、図10(b)のように三次元仮想物体702のバウンディングボックス905の各軸に平行な平行移動用のマニピュレータ1000を表示する。そして、これをマウスで選択、ドラッグすることで相対位置姿勢を調整することができる。なお、今回の例では平行移動用のマニピュレータ1000を示したが、回転用のマニピュレータや平行移動と回転を組み合わせたマニピュレータを用いてもよい。
【００４４】
例えば回転用のマニピュレータを用いる場合、図10(d)のようにバウンディングボックス905の各軸周りへの回転に対応する環状の矢印を組み合わせた回転用マニピュレータ1001を表示する。そして、この回転用マニピュレータ1001のいずれかを選択、ドラッグすることで基準面に対する三次元仮想物体702の姿勢を調整する。
【００４５】
また、マニピュレータに用いる軸の向きも、バウンディングボックス905の軸の向きに限らず、対応面や基準面の辺や法線に平行な軸を用いたり、三次元仮想物体702のローカル座標系の軸向きを用いたり、世界座標系の軸向きを用いたりしてもよい。回転用のマニピュレータを用いる場合の回転の中心も、基準面や対応面を構成する頂点や面の中心点、三次元仮想物体702の重心など任意の点を用いることができる。また、マニピュレータの表示位置や表示方法に関しても任意の表示位置や表示方法を用いることができる。例えば、表示位置は図10(b)では基準面である面800の中心に表示しているが、三次元仮想物体702の中心に表示したり、三次元仮想物体702に重ならないように表示したりしてもよい。また、表示方法も半透明で表示したり、三次元仮想物体702やコントロール装置701との前後関係がわかるように図10(c)のように表示したりしてもよい。
【００４６】
また、調整手段として、マニピュレータ以外にもキーボードを用いて直接調整量を入力するようなGUIを用いたり、音声認識を用いて調整量を指示したりすることなどもできる。
【００４７】
ステップS611では、移動手段508がコントロール装置701の位置姿勢変化に応じて三次元仮想物体702の位置姿勢を変更する。この変更の際には、ステップS608で設定された三次元仮想物体702と基準面の間の相対位置姿勢を、ステップS610で調整した結果得られる三次元仮想物体702と基準面の間の相対位置姿勢を維持するように三次元仮想物体702の位置姿勢を変更する。これにより、コントロール装置701を動かすことで三次元仮想物体702を任意の位置姿勢に移動させることができる。
【００４８】
ステップS612では、決定手段509が入力部412からの情報に基づいて、三次元仮想物体702の位置姿勢を決定するかを判定する。ステップS602同様にキーボードによるコマンド選択やマウスを用いたGUI操作、音声認識による操作などにより位置姿勢を決定するかを判定する。三次元仮想物体702の位置姿勢を決定する場合にはステップS613を、決定しない場合にはステップS614へ進む。
【００４９】
ステップS613では、決定手段509が現在の基準面の位置姿勢や、基準面と三次元仮想物体702の相対位置姿勢をもとにステップS611で移動された三次元仮想物体702の位置姿勢を、三次元仮想物体702の配置位置姿勢としてRAM402に記録する。そして、次の撮影像が送られてきた場合には、ステップS602で配置変更の処理に進まないようにRAM402の内容を書き換えてステップS614へ進むようにする。
【００５０】
ステップS614では、画像合成手段510が、現在の三次元仮想物体702の位置姿勢を用いて、撮像部408、409から得られた撮影像に三次元仮想物体702の描画画像を合成する。この際に、ステップS610を通ってからステップS614に進んできている場合などでは、GUIやマニピュレータ1000やマウスカーソル1300などの操作に必要な情報も合成する。そして、合成された画像を表示部410、411に表示する。
【００５１】
以上のような処理を用いることによって、三次元仮想物体702の位置姿勢を、現実物（コントロール装置701）を用いて任意の位置姿勢に素早く正確に配置することができる。
【００５２】
例えば、三次元仮想物体702を図11のように床面301の上に面900が接するように配置したい場合には、図10(a)のように三次元仮想物体702のバウンディングボックス905の一面906を基準面である面800と合わせる。その後、平行移動用のマニピュレータ1000を用いて面800の辺と面906の辺を一致させるように移動させることで図12のようにする。
【００５３】
これにより、面1200の裏側の面である面1201を床面301に合わせるようにコントロール装置701を移動させるだけで、三次元仮想物体702を目標の位置姿勢に配置することができる。このように、本発明によれば、三次元仮想物体702の位置姿勢変更時に操作をしやすい位置姿勢になるように三次元仮想物体702と現実物の相対位置姿勢を設定・変更することが可能になる。その結果素早く正確に目標の位置姿勢に三次元仮想物体702を配置することができる。
【００５４】
［実施例２］
第１の実施形態では任意の位置姿勢に三次元仮想物体702を配置する場合を説明した。この実施形態を用いて、三次元仮想物体702を図14(a)のように三次元仮想物体702と同じ形状の現実物（モック1400）に重ね合わせる場合や、三次元仮想物体702を他の現実物にくっつける場合を考える。他の現実物にくっつける例としては、三次元仮想物体702をはめ込めるような形状の穴を空けた現実物の枠組み1401に三次元仮想物体702をはめ込む場合などがある。
【００５５】
これらの場合には、例えば三次元仮想物体702の位置姿勢をモック1400に重なるように変更した後に、もしモック1400を動かしてしまうと三次元仮想物体702とモック1400の位置姿勢が合わなくなってしまう。これは三次元仮想物体702がモック1400の動きに追従して移動しないためである。
【００５６】
そこで、第２の実施形態では、三次元仮想物体702を重ねたり、くっつけたり、特定の相対位置姿勢を保たせたりしたい現実物の位置姿勢を取得し、現実物の動きに三次元仮想物体702を追従させる場合を説明する。
【００５７】
図15は、本実施形態にかかる情報処理装置400の機能構成を示す図である。第１の実施形態に加えて、対象現実物位置姿勢取得手段1500が追加されている。また、図16は、本実施形態の処理の流れを示すフローチャートである。第１の実施形態に加えて、ステップS1600が追加されている。また、ステップS600からS614までのうち、ステップS613とS614以外は、第１の実施形態と同じであるため、説明を省略する。また、ステップS613はステップS1601、ステップS614はステップS1602に切り替わっている。
【００５８】
本実施例でも第１の実施例同様に、図16のフローチャートを、撮像部408、409から撮影像が送られる度に繰り返し処理する。以下では、図15と図16を参照して、本実施形態の処理の流れを説明する。また、図17は本実施例の使用時の状況の一例を示す図であり、図7の状況に加えて、三次元仮想物体702を重ね合わせるモック1400が存在する。
【００５９】
ステップS1600では、対象現実物位置姿勢取得手段1500が、三次元仮想物体702との相対値姿勢が所定の位置姿勢になるようにしたい現実物の位置姿勢を取得する。なお、以下の文ではこのような現実物を対象現実物と記述する。図17の例では対象現実物にはモック1400が相当する。 
【００６０】
対象現実物の位置姿勢の取得は、ステップS603の基準面の位置姿勢と同様の手法を用いることができる。例えば図17のよう対象現実物の位置姿勢推定用の指標1700を張ったり、位置姿勢センサなどのセンサを利用したりすることができる。ステップS1601では、決定手段509が現在の基準面の位置姿勢や、基準面と三次元仮想物体702の相対位置姿勢を基に移動した三次元仮想物体702の位置姿勢と、対象現実物の位置姿勢から対象現実物と三次元仮想物体702の相対位置姿勢を計算する。
【００６１】
これにより、三次元仮想物体702の位置姿勢決定時の対象現実物と三次元仮想物体702の相対位置姿勢をRAM402に記録することができる。そして、対象現実物を移動させた場合にも記録された相対位置姿勢と対象現実物の位置姿勢から、三次元仮想物体702が対象現実物に追従して移動するように位置姿勢を更新することができる。ステップS1602では、画像合成手段510が、現在の三次元仮想物体702の位置姿勢を用いて、撮像部408、409から得られた撮影像に三次元仮想物体702の描画画像を合成する。
【００６２】
ここでの現在の三次元仮想物体702の位置姿勢とは、ステップS611で決まる位置姿勢または、ステップS1601で決まる対象現実物と三次元仮想物体702の相対位置姿勢と対象現実物の位置姿勢を用いて決まる三次元仮想物体702の位置姿勢を指す。また、本実施例でも第１の実施形態同様にGUIやマニピュレータ1000やマウスカーソル1300などの操作に必要な情報も合成する。そして、合成された画像を表示部410、411に表示する。
【００６３】
以上のような処理により、移動可能な現実物に対して三次元仮想物体702を所定の相対位置姿勢に配置する場合にも、素早く正確に配置することができる。
【００６４】
［実施例３］
第３の実施形態では、第１、第２の実施形態における調整手段507の処理を補正する処理を追加する。これにより、三次元仮想物体702の位置姿勢変更時に操作をしやすい位置姿勢になるように三次元仮想物体702と基準面の相対位置姿勢を変更する際の処理を容易にする。なお、本実施形態にかかる情報処理装置400の機能構成は第１、第２の実施形態と同様である。
【００６５】
下記では、第1の実施形態に調整手段507の処理を補正する処理を追加する場合の例を示す。図18は、本実施形態の処理の流れを示すフローチャートである。第１の実施形態のフローチャートに加えて、ステップS1800が追加されている。また、ステップS600からS614までは第１の実施形態と同じであるため、説明を省略する。ステップS1800では、調整手段507がステップS610により設定された三次元仮想物体702と基準面である面800の間の相対位置姿勢を補正する。例えば、マニピュレータ1000を用いてステップS610で相対位置姿勢を調整した場合について説明する。
【００６６】
ステップS608によって、図19(b)のように基準面である面800とバウンディングボックス905の面906の中心位置が一致し、かつ各面の辺が平行になるように設定されたとする。そして、ステップS610でマニピュレータ1000のうち矢印1900を選択してドラッグした場合、ステップS1800で面800と面906の辺のうち矢印1900の方向にある辺同士が一致するように移動量を補正し、図19(a)のようにする。逆に、図19(b)の状況で矢印1901を選択してドラッグした場合には、面800と面906の辺のうち矢印1901の方向にある辺同士が一致するように移動量を補正し、図19(c)のようにする。
【００６７】
このように、面の中心同士や辺同士、または一方の面の中心と他方の面の辺の中心が一致する移動量になるようにステップS610での調整量を補正する処理を行う。なお、ステップS1800での補正はマニピュレータ1000による調整量を補正する場合に限定するものではない。例えばキーボードによるコマンド選択や音声認識による操作により調整が行われた際の調整量を補正する処理を行ってもよい。また、ステップS610による調整結果を踏まえつつ、他の方向への相対位置姿勢の補正を行ってもよい。
【００６８】
例えば、基準面の位置姿勢が変化している場合に、ある時点で基準面の辺のうち床面301に最も近い辺と、対応面辺のうち床面301に最も近い辺の床面301からの高さが一致するように補正してもよい。
【００６９】
具体的には、ステップS610により図1(a)のようにバウンディングボックス905の一面906の中心位置と、面800の辺2000の中心位置が一致するように調整されたとする。この状態から図1(b)のように基準面800が回転した場合に、ステップS610で調整された相対位置姿勢を維持しつつ、床面301に最も近い辺の床面301からの高さが一致するように補正する。この結果と図1(b)の三次元仮想物体702のような位置姿勢になる。図1(b)では面906の中心が辺2000上にあり、かつ面906と面800の床面301に近い側の辺の高さが一致するように補正されている。
【００７０】
このような処理をする場合の床面301に近い辺を求める手段として、図7の指標700の位置姿勢である世界座標系703を用いることができる。世界座標系のうちの1軸は指標700に垂直な方向、2軸は指標700に平行な方向に定義されるように世界座標系703を定義していれば、指標700に平行な方向に定義された2軸により床面301を推定することができる。また、世界座標系703の代わりに加速度センサなどの重力方向を求めることができるセンサを用いることもできる。
【００７１】
以上のような処理により、三次元仮想物体702と基準面の相対位置姿勢を調整する際に、ユーザーが少ない操作で素早く基準面の辺と対応面の辺の高さを揃えたり、面の中心同士を合わせたりすることができる。その結果、三次元仮想物体702を意図した位置姿勢に配置する際に、三次元仮想物体702と基準面の相対位置姿勢の調整が素早くできる。そして、三次元仮想物体702を意図した位置姿勢に配置する作業も素早くできるようになる。
【００７２】
［他の実施形態］
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７４】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７５】
本発明を上記記憶媒体に適用する場合、その記憶媒体には先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【符号の説明】
【００７６】
905  バウンディングボックス
906  面
800  基準面
301  床面
2000  辺
【図１】
2018132847.tif 000003
【図２】
2018132847.tif 000004
【図３】
2018132847.tif 000005
【図４】
2018132847.tif 000006
【図５】
2018132847.tif 000007
【図６】
2018132847.tif 000008
【図７】
2018132847.tif 000009
【図８】
2018132847.tif 000010
【図９】
2018132847.tif 000011
【図１０】
2018132847.tif 000012
【図１１】
2018132847.tif 000013
【図１２】
2018132847.tif 000014
【図１３】
2018132847.tif 000015
【図１４】
2018132847.tif 000016
【図１５】
2018132847.tif 000017
【図１６】
2018132847.tif 000018
【図１７】
2018132847.tif 000019
【図１８】
2018132847.tif 000020
【図１９】
2018132847.tif 000021