(57)【特許請求の範囲】
【請求項１】
現実物体に重畳された仮想物体の内側を、指示具を用いて指示するための情報処理装置であって、
撮像装置で現実空間における物体を撮像した撮像画像を入力する画像入力手段と、
前記撮像装置の位置姿勢を入力する撮像位置姿勢入力手段と、
前記物体の位置姿勢を入力する物体位置姿勢入力手段と、
ユーザが操作する指示具の位置姿勢を入力する指示具位置姿勢入力手段と、
前記現実空間と対応する仮想空間において、前記物体の前記撮像画像上の領域に重畳するための外装と、該外装の内側に内装を有する３次元モデルを入力するモデル入力手段と、
前記撮像装置の位置姿勢および前記物体の位置姿勢に基づいて、該物体の位置姿勢に対応する位置姿勢で前記仮想空間に配置した前記３次元モデルの物体仮想画像を生成する物体仮想画像生成手段と、
前記撮像装置の位置姿勢および前記指示具の位置姿勢に基づいて、該指示具の位置姿勢に対応する位置姿勢で前記仮想空間に該指示具の先端から延長した形状で配置され、該延長した形状により前記外装を貫いて前記内装を指示するための指示仮想物体を配置した指示仮想画像を生成する指示仮想画像生成手段と、
前記撮像画像に、前記物体仮想画像および前記指示仮想画像の両方を重畳した重畳画像を生成する重畳手段と、
前記重畳画像を前記ユーザに提示する提示手段と、
前記指示仮想物体で前記３次元モデルの内装を指示するときに、前記指示具に力覚を発生させる力覚発生手段と
を有する
ことを特徴とする情報処理装置。
【請求項２】
前記力覚発生手段が、ｖｉｒｔｕａｌ  ｐｒｏｘｙ法を用いて、前記指示仮想物体で前記３次元モデルの外装に触れたときにも、前記指示具に力覚を発生させることを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記外装は、前記物体と同じ形状であることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記物体仮想画像生成手段が、前記３次元モデルの内装を不透明にし、外装を半透明にした物体仮想画像を生成することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記物体は、ユーザによって把持可能であることを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
現実物体に重畳された仮想物体の内側を、指示具を用いて指示するための情報処理装置が行う情報処理方法であって、
前記情報処理装置の画像入力手段が、撮像装置で現実空間における物体を撮像した撮像画像を入力する画像入力工程と、
前記情報処理装置の撮像位置姿勢入力手段が、前記撮像装置の位置姿勢を入力する撮像位置姿勢入力工程と、
前記情報処理装置の物体位置姿勢入力手段が、前記物体の位置姿勢を入力する物体位置姿勢入力工程と、
前記情報処理装置の指示具位置姿勢入力手段が、ユーザが操作する指示具の位置姿勢を入力する指示具位置姿勢入力工程と、
前記情報処理装置のモデル入力手段が、前記現実空間と対応する仮想空間において、前記物体の前記撮像画像上の領域に重畳するための外装と、該外装の内側に内装を有する３次元モデルを入力するモデル入力工程と、
前記情報処理装置の物体仮想画像生成手段が、前記撮像装置の位置姿勢および前記物体の位置姿勢に基づいて、該物体の位置姿勢に対応する位置姿勢で前記仮想空間に配置した前記３次元モデルの物体仮想画像を生成する物体仮想画像生成工程と、
前記情報処理装置の指示仮想画像生成手段が、前記撮像装置の位置姿勢および前記指示具の位置姿勢に基づいて、該指示具の位置姿勢に対応する位置姿勢で前記仮想空間に該指示具の先端から延長した形状で配置され、該延長した形状により前記外装を貫いて前記内装を指示するための指示仮想物体を配置した指示仮想画像を生成する指示仮想画像生成工程と、
前記情報処理装置の重畳手段が、前記撮像画像に、前記物体仮想画像および前記指示仮想画像の両方を重畳した重畳画像を生成する重畳工程と、
前記情報処理装置の提示手段が、前記重畳画像を前記ユーザに提示する提示工程と
前記情報処理装置の力覚発生手段が、前記指示仮想物体で前記３次元モデルの内装を指示するときに、前記指示具に力覚を発生させる力覚発生工程と
を有することを特徴とする情報処理方法。
【請求項７】
請求項６に記載された情報処理方法をコンピュータ上で実現するためのプログラム。
【請求項８】
請求項６に記載された情報処理方法をコンピュータ上で実現するためのプログラムが格納されたコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するものに関する。
【背景技術】
【０００２】
ＶＲ（バーチャルリアリティ）システムは、コンピュータの作り出す三次元ＣＧ（コンピュータ・グラフィクス）をＨＭＤ（ヘッドマウントディスプレイ）を装着したユーザに提示することで、仮想の空間をあたかも現実であるかのように感じさせるシステムである。ＨＭＤを利用したＶＲシステムでは、ユーザの頭部の動きに合わせてユーザに提示される三次元ＣＧが変化するため、ユーザはあたかも自分の周囲に実際に三次元ＣＧが存在しているかのように感じることができる。
【０００３】
ＶＲシステムでは、力覚デバイスと呼ばれる装置を用いて、ユーザに仮想の触感を与えることがある。力覚デバイスを用いることで、ユーザは実際には存在しない事物に仮想的に触っているかのような感触を感じることができる。力覚デバイスには機械式や糸の張力を用いた方式などさまざまな方式のものがある。（例えば非特許文献１）
また、近年、現実空間の映像に重ねて三次元ＣＧを提示することで、ＶＲでは見ることができなかった現実世界をユーザに提示する技術の開発もなされており、それらはＭＲ（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ、複合現実感）システムと呼ばれている（例えば、特許文献１参照）。
【０００４】
ＭＲシステムでは、ＨＭＤ（ヘッドマウントディスプレイ）を用いることが一般的である。ＭＲシステムでは、現実空間の画像と仮想空間の画像を合成して、ＨＭＤに表示することにより、複合現実感を実現する。ＭＲシステムで用いるＨＭＤの方式には半透過型のＨＭＤに三次元ＣＧ等の画像を重畳する光学シースルー方式と、ＨＭＤに装着したビデオカメラで撮影した画像に三次元ＣＧ等の画像を合成した後、ＨＭＤに表示するビデオシースルー方式がある。
【０００５】
ＭＲシステムの用途としては、患者の体内の様子を透過しているように医師に提示する医療補助の用途や、工場において製品の組み立て手順を示すＣＧを実物に重ねて表示する作業補助の用途などが考えられている。
【０００６】
ＭＲシステムの一種として、特許文献２に示されるように、三次元ＣＡＤデータから簡易的に試作された模型に重ねて、同じデータから作成された三次元ＣＧを表示するものがある。この発明におけるシステムでは、ユーザは自らの手で三次元ＣＧを動かすことができる。
【特許文献１】特開２００１−１９５６０１号公報
【特許文献２】特開２００５−１０７９７０号公報
【非特許文献１】田村博編「ヒューマン・インタフェース」オーム社，１９９８年５月３０日，ｐｐ．２３８−２４１
【非特許文献２】Ｄｉｅｇｏ  Ｃ．Ｒｕｓｐｉｎｉ  ｅｔ  ａｌ，Ｔｈｅ  Ｈａｐｔｉｃ  Ｄｉｓｐｌａｙ  ｏｆ  Ｃｏｍｐｌｅｘ  Ｇｒａｐｈｉｃａｌ  Ｅｎｖｉｒｏｎｍｅｎｔｓ，ＳＩＧＧＲＡＰＨ  ９７  Ｐｒｏｃｅｅｄｉｎｇｓ，Ａｕｇｕｓｔ  １９９７，ｐｐ．３４５−３５２．
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献２に示される方法では，ユーザは実際には存在しない仮想の物体を見ながら、同じ形状の模型を手に持つことができる。つまり、仮想の物体を視覚的および力覚的に体感することができる。しかしながら、この方法では、ユーザが仮想の物体の内部に触れたり、一部を消したりといった感覚を得ることはできなかった。すなわち、現実に存在する模型の中にある仮想の物体に触れたり、現実に存在する模型の一部を消したりするような感覚を得ることはできなかった。
【０００８】
本発明は、上記問題を解決するものであり、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示する際に、現実物体にかかわらず第二の仮想物体の内部に触れることができるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、現実物体に重畳された仮想物体の内側を、指示具を用いて指示するための情報処理装置であって、撮像装置で現実空間における物体を撮像した撮像画像を入力する画像入力手段と、前記撮像装置の位置姿勢を入力する撮像位置姿勢入力手段と、前記物体の位置姿勢を入力する物体位置姿勢入力手段と、ユーザが操作する指示具の位置姿勢を入力する指示具位置姿勢入力手段と、前記現実空間と対応する仮想空間において、前記物体の前記撮像画像上の領域に重畳するための外装と、該外装の内側に内装を有する３次元モデルを入力するモデル入力手段と、前記撮像装置の位置姿勢および前記物体の位置姿勢に基づいて、該物体の位置姿勢に対応する位置姿勢で前記仮想空間に配置した前記３次元モデルの物体仮想画像を生成する物体仮想画像生成手段と、前記撮像装置の位置姿勢および前記指示具の位置姿勢に基づいて、該指示具の位置姿勢に対応する位置姿勢で前記仮想空間に該指示具の先端から延長した形状で配置され、該延長した形状により前記外装を貫いて前記内装を指示するための指示仮想物体を配置した指示仮想画像を生成する指示仮想画像生成手段と、前記撮像画像に、前記物体仮想画像および前記指示仮想画像の両方を重畳した重畳画像を生成する重畳手段と、前記重畳画像を前記ユーザに提示する提示手段と、前記指示仮想物体で前記３次元モデルの内装を指示するときに、前記指示具に力覚を発生させる力覚発生手段とを有することを特徴とする。
【発明の効果】
【００１０】
本発明は、上記問題を解決するものであり、本発明によれば、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示する際に、現実物体にかかわらず第二の仮想物体の内部に触れることができるようにすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、添付の図面を参照して本発明の好適な実施例について説明する。
【実施例１】
【００１２】
本実施例の視覚および力覚提示システムでは、現実物体に重ねて自動車の三次元ＣＧを合成し、ユーザの装着しているＨＭＤに表示する。また、自動車の三次元ＣＧと同じ形状の力覚を、力覚デバイスを通してユーザに提示する。
【００１３】
図４は本実施例の外観を示した図である。
【００１４】
１００はＨＭＤであり、ユーザの頭部に装着されて使用される。ＨＭＤ１００は撮像部および表示部を内蔵し、撮像部（カメラ）で撮影した映像に三次元ＣＧを重ねた合成映像を表示部に表示する。ＨＭＤ１００に内蔵される撮像部はあらかじめ内部パラメータが測定されている。
【００１５】
４０１はテーブルである。テーブルは部屋に固定されており、テーブル上で複合現実感を体験することが出来る。
【００１６】
１２１は力覚デバイス本体、１２１ａは力覚デバイスの把持部である。ユーザは、あらかじめ定められた範囲の分だけ、手で自由に力覚デバイスの把持部１２１ａの位置や姿勢を動かすことができる。力覚デバイス本体１２１と力覚デバイスの把持部１２１ａは機械的に接続され、力覚デバイス本体１２１が力覚デバイスの把持部１２１ａを駆動することによって、力覚デバイスの把持部１２１ａを把持するユーザに上下方向、左右方向、奥行き方向の三自由度の力を感じさせることができる。力覚デバイス本体１２１はテーブル４０１の上に固定されている。
【００１７】
４０３はユーザの手である。説明のため、ユーザの体の手以外の部分は図中に示していない。
【００１８】
４０４は現実物体であり、自動車の模型である。この自動車の模型は、本実施例で表示する自動車の仮想物体の外装と同じ形状をしている。この模型の作成は、光造形などのラピッドプロトタイプ装置などによって可能である。
【００１９】
本実施例では現実物体である模型と仮想物体が同じ形状であるものとしたが、これは本実施例の基本構成に必須のではなく、現実物体の形状と仮想物体の形状が異なっていてもよい。
【００２０】
また、素材もどのようなもので構成されてもよい。たとえば、模型や厚紙、電子機器、各種の道具や器具などで構成されるものとしてよい。また、内部を空洞にして中に異なる重さの重りを入れられるようにしてもよいし、大きさや形状など、物理的な属性を変えられるような機構を備えてもよい。
【００２１】
１０３は位置姿勢を計測するための構成であり、カメラ部１０３ａ，マーカ部１０３ｂ，１０３ｃ，１０３ｄからなる。マーカ部１０３ｂはＨＭＤ１００に、マーカ部１０３ｃは力覚デバイスの把持部１２１ａに、マーカ部１０３ｄは現実物体４０４に取り付けられている。マーカ部１０３ｂ，マーカ部１０３ｃ，マーカ部１０３ｄはそれぞれ異なる形状をしており、位置姿勢センサのカメラ部１０３ａに備えられた、内部パラメータをあらかじめ求められた二つのカメラによって撮像される。三角測量などの手法を用いて、二つのカメラの各々によって撮像された画像から、マーカ部１０３ｂ，マーカ部１０３ｃ，マーカ部１０３ｄの，カメラ部１０３ａに対する相対的な位置および姿勢を求める。位置姿勢センサのカメラ部１０３ａは部屋に固定されている。
【００２２】
図３は本実施例の構成を示したブロック図である。以下、図３を参照しながら本実施例の構成について説明する。
【００２３】
１００は図４でも示されているユーザが装着するビデオシースルー型のＨＭＤであり、撮像部１０１と映像表示部１０２を有する。なお、本実施例では撮像部１０１と映像表示部１０２がＨＭＤ１００に内蔵されるものとしたが、これは本実施例の基本構成に必須の要件ではなく、撮像部１０１と映像表示部１０２はそれぞれ別の場所に配置されるものとしてもよい。
【００２４】
１０１は撮像部であり、ＣＣＤカメラ、ＣＭＯＳカメラなどの撮像デバイスによって構成される。撮像部１０１によって撮影された映像は映像合成部１１１に送られる。
【００２５】
１０２は映像表示部であり、小型の液晶表示デバイス等で構成される。映像表示部１０２は映像合成部１１１から送られてきた合成映像を表示する。
【００２６】
１０３は図４にも示されている、内蔵する撮像素子によりマーカを撮影することによって任意の物体の位置および姿勢を計測する位置姿勢センサである。位置姿勢センサ１０３はあらかじめマーカを付けた任意の物体の位置姿勢信号を、ＨＭＤ１００を装着したユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５および力覚デバイスの位置姿勢計測部１０６に出力する。
【００２７】
なお、本実施例では一つの位置姿勢センサ１０３から１０４〜１０６それぞれに位置姿勢信号を出力する。しかし、これは本実施例の基本構成に必須の要件ではない。たとえばユーザ視点の位置姿勢計測部１０４，現実物体の位置姿勢計測部１０５，力覚デバイスの位置姿勢計測部１０６のそれぞれに別の位置姿勢センサを設置してもよい。
【００２８】
また、本実施例では位置姿勢センサ１０３は光学式センサによって構成されているが、位置姿勢センサ１０３はあらかじめ定めた任意の物体の位置および姿勢を計測できる装置であればどのような装置で構成されてもよい。たとえば、磁気式の位置姿勢センサによって構成されてもよい。つまり、現実空間中のこれら三つの測定対象の位置姿勢が計測することが出来れば、いかなる構成でも良い。
【００２９】
本実施例では、これらの位置姿勢センサ１０３は位置をｘｙｚ座標系におけるｘ座標，ｙ座標，ｚ座標の形で出力する。また，姿勢をｚ軸中心の回転であるロール角，ｘ軸中心の回転であるピッチ角，ｙ軸中心の回転であるヨー角で出力し，ヨー回転，ピッチ回転，ロール回転の順で測定対象を回転させると測定対象の姿勢が得られる。なお，以下の説明においては，四行四列の行列で示すことができる位置および姿勢の情報を、アルファベットの記号，たとえばＭなどで表現する。この行列の中身について，位置姿勢センサ１０３によって得られた位置姿勢の値を例として説明する。
【００３０】
位置姿勢センサによって得られるｘ座標，ｙ座標，ｚ座標の値をそれぞれｘ，ｙ，ｚとすると、位置姿勢センサ１０３によって得られる位置を表す三次元ベクトルｔは
【００３１】
【数１】
0004795091.tif 000002
【００３２】
で表される。また、位置姿勢センサによって得られるロール角，ピッチ角，ヨー角の値をそれぞれｒ，ｐ，ｙとすると，ロール角，ピッチ角，ヨー角から得られる三行三列の回転変換行列Ｒｒ，Ｒｐ，Ｒｙは
【００３３】
【数２】
0004795091.tif 000003
【００３４】
で表される。従って，姿勢を表す三行三列の回転変換行列Ｒは
【００３５】
【数３】
0004795091.tif 000004
【００３６】
で表される。
【００３７】
以上得られたｔとＲを用いて、位置姿勢センサから得られる位置と姿勢の両方を表現する四行四列の行列Ｍは、以下のように表現することができる。
【００３８】
【数４】
0004795091.tif 000005
【００３９】
位置および姿勢がどのような形式で得られようと、上記のような四行四列の行列として表現できることは広く知られている。
【００４０】
１０４はユーザ視点の位置姿勢計測部であり、位置姿勢センサ１０３からの位置姿勢信号を受信する。そして、ユーザが装着しているＨＭＤ１００に取り付けられたマーカ部１０３ｂの位置姿勢を表す信号を使って、撮像部１０１のユーザ視点の位置姿勢情報を生成する。生成した位置姿勢情報は、ＨＭＤの映像表示に表示する映像中のＣＧの位置姿勢を算出するために、力覚デバイスのＣＧ描画部１１０ａおよび仮想物体のＣＧ描画部１１０ｂに送られる。なお、本実施例においてはユーザ視点の位置姿勢計測部１０４の位置姿勢情報が位置姿勢センサ１０３のみから求められるものとした。しかし、それに加えて、撮像部１０１の撮影した映像を用いて位置姿勢情報の補正を行ってもよい。また、撮像部１０１の撮影した映像のみを用いてユーザ視点の位置姿勢計測部１０４の位置姿勢情報を求める構成としてもよい。
【００４１】
１０５は現実物体の位置姿勢計測部であり、位置姿勢センサ１０３からの位置姿勢信号を受信する。そして、現実物体４０４に取り付けられたマーカ部１０３ｄの位置姿勢を表す信号を使って、現実物体４０４の位置姿勢情報を生成する。生成した現実物体４０４の位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【００４２】
１０６は力覚デバイスの位置姿勢計測部であり、位置姿勢センサ１０３からの位置姿勢信号を受信する。そして、力覚デバイスの把持部１２１ａに取り付けられたマーカ部１０３ｃの位置姿勢を表す信号を使って、力覚デバイスの把持部１２１ａの位置姿勢情報を生成する。生成した力覚デバイスの把持部１２１ａの位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【００４３】
１０７はＣＧシーン管理部である。ＣＧシーン管理部１０７は三次元ＣＧの生成に必要な、仮想物体の三次元ＣＧモデルの情報を管理する。三次元ＣＧモデルの情報はさまざまな形式で記述することができるが、本実施例の三次元ＣＧモデルの情報は、三次元ＣＧモデルがポリゴンモデルで表されるＶＲＭＬ（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）ファイルで表現されている。また、ＶＲＭＬファイルには、三次元ＣＧモデルの位置および姿勢情報が格納されている。ＣＧシーン管理部１０７に格納されているＶＲＭＬファイルは、力覚デバイスの把持部１２１ａに重ねて表示される仮想物体の三次元ＣＧモデルのＶＲＭＬファイルおよび現実物体４０４に重ねて表示される自動車の仮想物体の三次元ＣＧモデルのＶＲＭＬファイルである。力覚デバイスの把持部１２１ａに重ねて表示される仮想物体の三次元ＣＧモデルのＶＲＭＬファイルは、力覚デバイスの位置姿勢計測部１０６から送られてくる位置姿勢情報によって更新される。自動車の仮想物体の三次元ＣＧモデルのＶＲＭＬファイルは、現実物体の位置姿勢計測部１０５から送られてくる位置姿勢情報によって更新される。また、ＣＧシーン管理部１０７の情報は力覚デバイスのＣＧ描画部１１０ａおよび仮想物体のＣＧ描画部１１０ｂによって参照される。
【００４４】
本実施例においては、自動車の三次元ＣＧモデルは、多数の部品の三次元ＣＧモデルから構成されており、外装や内装の三次元ＣＧモデルを含む。また、それぞれの三次元ＣＧモデルは半透明表示フラグを付加情報として持っている。半透明表示フラグとは、それぞれの三次元ＣＧモデルが半透明表示の対象になるかどうかを示すフラグである。このフラグがＴｒｕｅに設定されていれば半透明表示の対象になることを、Ｆａｌｓｅに設定されていれば対象にならないことを示す。初期状態においては、すべての三次元ＣＧモデルについてこのフラグはＦａｌｓｅに設定されている。このフラグは、力覚シーン管理部１０８などから設定される。
【００４５】
なお、本実施例においては、図９に示されるように、力覚デバイスの把持部１２１ａを表す三次元ＣＧモデル１５０の先端を、実際の形状よりも長く設定しておく。１０８は力覚シーン管理部である。力覚シーン管理部１０８は仮想物体間に発生する力の計算に必要な、仮想物体の力覚発生モデルの情報を管理する。力覚発生モデルの情報はさまざまな形式で記述することができるが、本実施例では、力覚発生モデルがポリゴンモデルで表されるＶＲＭＬファイルで記述されている。ただし、力覚発生モデルのＶＲＭＬファイルの中において、視覚的な属性を表す色や光源、テクスチャ等の属性情報は取り除かれており、仮に属性情報が含まれていたとしても無視される。また、力覚シーン管理部１０８にはＶＲＭＬファイルで表される力覚発生モデルの位置および姿勢情報が格納されている。本実施例では、格納されているＶＲＭＬファイルは、力覚デバイスの把持部１２１ａの力覚発生モデルのＶＲＭＬファイルおよび現実物体４０４に重ねて表示される自動車の力覚発生モデルのＶＲＭＬファイルである。力覚シーン管理部１０８のＶＲＭＬの位置および姿勢情報は、現実物体の位置姿勢計測部１０５または力覚デバイスの位置姿勢計測部１０６から送られてくる位置姿勢情報によって更新される。力覚シーン管理部１０８の情報は力覚計算部１２０によって参照される。
【００４６】
本実施例においては、自動車の力覚発生モデルは、多数の部品の力覚発生モデルから構成されており、外装や内装の力覚発生モデルを含む。また、それぞれの力覚発生モデルは力覚発生対象フラグを付加情報として持っている。力覚発生対象フラグとは、それぞれの力覚発生モデルが力覚発生の対象になるかどうかを示すフラグである。このフラグがＴｒｕｅに設定されていれば力覚発生の対象になることを、Ｆａｌｓｅに設定されていれば対象にならないことを示す。初期状態においては、すべての力覚発生モデルについてこのフラグはＴｒｕｅに設定されている。
【００４７】
本実施例においては、図９に示されるように、力覚デバイスの把持部１２１ａを表す力覚発生モデル１５０の先端を、実際の形状よりも長く設定しておく。
【００４８】
１１０ａは力覚デバイスのＣＧ描画部であり、ユーザ視点の位置姿勢計測部１０４から撮像部１０１の位置姿勢情報、ＣＧシーン管理部１０７から三次元ＣＧシーン情報を受信して、撮像部１０１の撮像範囲に収まる力覚デバイスのＣＧ映像を生成する。生成したＣＧ映像は映像合成部１１１に送信される。
【００４９】
１１０ｂは仮想物体のＣＧ描画部であり、ユーザ視点の位置姿勢計測部１０４から撮像部１０１の位置姿勢情報、ＣＧシーン管理部１０７から三次元ＣＧシーン情報を受信して、撮像部１０１の撮像範囲に収まる仮想物体のＣＧ映像を生成する。生成したＣＧ映像は映像合成部１１１に送信される。
【００５０】
１１１は映像合成部であり、撮像部１０１から受信した撮影映像上に、力覚デバイスのＣＧ描画部１１０ａおよび仮想物体のＣＧ描画部１１０ｂから受信したＣＧ映像を上書きすることにより、合成映像を生成する。合成した合成映像は映像表示部１０２に送出される。
【００５１】
１２０は力覚計算部であり、力覚シーン管理部１０８から力覚シーン情報を受信して、力覚デバイスの把持部１２１ａに発生すべき力覚を計算する。ここで、力覚の情報は、発生する力の向きと強さによって表現される。計算した力覚情報は力覚デバイス本体１２１に送られる。
【００５２】
１２１は図４にも示されている、力覚デバイスであり、力覚計算部１２０から力覚情報を受信して、力覚デバイスの把持部１２１ａに力を発生させる。なお、本実施例では、力覚デバイスとして複数のエンコーダ付きの制御モータを内蔵して構成された機械式のものを利用している。ただし、任意方向に力を発生できるデバイスであればどのようなデバイスで構成されてもよく、たとえば糸の張力を用いた方式による力覚デバイスで構成されてもよい。また、本実施例では、力覚デバイス１２１はテーブル４０１上に配置されているが、配置場所に制限はなく、たとえばユーザの体に装着されるものであってもよい。
【００５３】
力覚デバイス本体１２１は内部に独自のデバイス座標系を持っている。よって、力覚計算部１２０は、力の情報を力覚デバイス本体１２１の座標系に変換し、力覚デバイス本体１２１が力覚デバイスの把持部１２１ａに力を発生させる際には、力の情報はこの力覚デバイスの座標系で伝えられる。
【００５４】
以上、図３を参照して本実施例の構成を説明した。
【００５５】
なお、図３に示したユーザ視点の位置姿勢計測部１０４，現実物体の位置姿勢計測部１０５，力覚デバイスの位置姿勢計測部１０６，ＣＧシーン管理部１０７，力覚シーン管理部１０８，力覚デバイスのＣＧ描画部１１０ａ，仮想物体のＣＧ描画部１１０ｂ，映像合成部１１１および力覚計算部１２０の少なくとも一部を独立した装置で実現することも可能である。もしくは、それぞれの機能を実現するソフトウェアを、一つもしくは複数のコンピュータにインストールし、コンピュータのＣＰＵでソフトウェアを実行することで、それぞれの機能を実現しても良い。本実施例では、各部はそれぞれソフトウェアにより実現され、同一のコンピュータにインストールされているものとする。
【００５６】
図１は、ユーザ視点の位置姿勢計測部１０４，現実物体の位置姿勢計測部１０５，力覚デバイスの位置姿勢計測部１０６，ＣＧシーン管理部１０７，力覚シーン管理部１０８，力覚デバイスのＣＧ描画部１１０ａ，仮想物体のＣＧ描画部１１０ｂ，映像合成部１１１，力覚計算部１２０及び１３０のそれぞれの機能を，ソフトウェアを実行することで実現するためのコンピュータの基本構成を示す図である。
【００５７】
ＣＰＵ１００１は、ＲＡＭ１００２やＲＯＭ１００３に格納されたプログラムやデータを用いてコンピュータ全体の制御を行うと共に、ユーザ視点の位置姿勢計測部１０４，現実物体の位置姿勢計測部１０５，力覚デバイスの位置姿勢計測部１０６，ＣＧシーン管理部１０７，力覚シーン管理部１０８，力覚デバイスのＣＧ描画部１１０ａ，仮想物体のＣＧ描画部１１０ｂ，映像合成部１１１および力覚計算部１２０のそれぞれの機能を実現するソフトウェアの実行を制御する。
【００５８】
ＲＡＭ１００２は、外部記憶装置１００７や記憶媒体ドライブ１００８からロードされたプログラムやデータを一時的に記憶するエリアを備えると共に、ＣＰＵ１００１が各種の処理を行うために必要とするワークエリアを備える。
【００５９】
ＲＯＭ１００３は、一般にコンピュータのプログラムや設定データなどが格納されている。キーボード１００４、マウス１００５は入力デバイスであり、操作者はこれらを用いて、各種の指示をＣＰＵ１００１に入力することができる。
【００６０】
表示部１００６は、ＣＲＴや液晶ディスプレイなどにより構成されており、例えば、映像表示部１０２に表示している映像を表示することができる。
【００６１】
外部記憶装置１００７は、ハードディスクドライブなどの大容量情報記憶装置として機能する装置であって、ここにＯＳ（オペレーティングシステム）やＣＰＵ１００１が実行するプログラム等を保存する。また本実施例の説明において、既知であると説明する情報はここに保存されており、必要に応じてＲＡＭ１００２にロードされる。
【００６２】
記憶媒体ドライブ１００８は、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記憶されているプログラムやデータをＣＰＵ１００１からの指示に従って読み出して、ＲＡＭ１００２や外部記憶装置１００７に出力する。
【００６３】
Ｉ／Ｆ１００９は、撮像部１０１を接続するためのアナログビデオポートあるいはＩＥＥＥ１３９４等のデジタル入出力ポート、位置姿勢センサ１０３および力覚デバイス本体１２１を接続するためのＲＳ２３２ＣあるいはＵＳＢ等のシリアルポート等によって構成される。それぞれから入力したデータはＩ／Ｆ１００９を介してＲＡＭ１００２に取り込まれる。映像合成部１１１及びユーザ視点の位置姿勢計測部１０４，現実物体の位置姿勢計測部１０５，力覚デバイスの位置姿勢計測部１０６および力覚計算部１２０の機能の一部は、Ｉ／Ｆ１００９によって実現される。
【００６４】
上述した各構成要素は、バス１０１０によって接続され、相互にデータの送受信がなされる。
【００６５】
図２は本実施例の処理手順を示したフローチャートである。本フローチャートに関わるプログラムは外部記憶装置１００７に記憶され、ユーザがキーボード１００４、マウス１００５を使ってシステムの開始を指示したときにＣＰＵ１００１がそのプログラムを読み出し、実行する。以下、図面を参照しながら、本実施例の処理手順を説明する。
【００６６】
Ｓ１００はキャリブレーションステップである。Ｓ１００では、ユーザ視点の位置姿勢計測部１０４、現実物体の位置姿勢計測部１０５および力覚デバイスの位置姿勢計測部１０６が、位置姿勢センサ１０３が出力する位置姿勢信号から位置姿勢情報を計算できるように、初期設定を行う。また、力覚計算部１２０が力覚デバイス本体１２１に発生させる力を計算するための初期設定を行う。
【００６７】
ここで、Ｓ１００中の処理手順について図１２を用いて説明する。
【００６８】
Ｓ１００が開始されると、まずＳ１２０１が実行される。Ｓ１２０１は位置姿勢センサのキャリブレーションを行うステップである。図１０はＳ１２０１およびＳ１２０２中の処理を説明するための図である。９０１は、本実施例における世界座標系を表す。世界座標系９０１はテーブル４０１の隅に沿って設定されている。世界座標系４０１を設定するため、Ｓ１２０１では、ユーザがキャリブレーション器具１０３ｚをテーブル４０１の隅に配置する。キャリブレーション器具１０３ｚは３個のマーカが付属された、世界座標系を設定するための器具である。キャリブレーション器具１０３ｚに付属された３個のマーカの位置関係は既知である。そして、位置姿勢センサのカメラ部１０３ａはあらかじめ内部パラメータを測定された二つのカメラを内蔵している。よって、図示しない位置姿勢センサのキャリブレーションボタンを押すことで、世界座標系９０１を設定することができる。以降、位置姿勢センサ１０３が出力する位置姿勢信号は、全て世界座標系９０１を基準として計測されたものとなる。Ｓ１２０１が終了したら、Ｓ１２０２に進む。
【００６９】
Ｓ１２０２はＨＭＤのキャリブレーションである。このステップにおいては、ユーザがキャリブレーションマーカ９０２をテーブル４０１の隅、すなわち世界座標系９０１に沿って配置する。キャリブレーションマーカ９０２はあらかじめ定められた模様を表面に印刷された、定められた大きさの矩形の紙片である。ＨＭＤ１００に内蔵される撮像部１０１はあらかじめ内部パラメータを測定されているため、撮像部１０１が捉える映像中にキャリブレーションマーカ９０２の全体が捉えられていれば、世界座標系９０１における撮像部１０１の位置および姿勢を求めることができる。一方、ＨＭＤ１００にはマーカ部１０３ｂが付属しており、マーカ部１０３ｂの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード１００４およびマウス１００５を用いて、ユーザがＳ１２０２の実行を指示したとき、撮像部１０１が捉える映像から求められる撮像部１０１の位置姿勢をＨｃ、位置姿勢センサから求められるマーカ部１０３ｂの位置姿勢をＨｓ、マーカ部１０３ｂから見た撮像部１０１の相対的な位置姿勢をＨｏとすると、
Ｈｏ＝Ｈｓ−１・Ｈｃ
となる。
【００７０】
ここで求められたＨｏは、ユーザ視点の位置姿勢計測部１０４に伝えられる。Ｓ１２０２が終了したら、Ｓ１２０３に進む。
【００７１】
Ｓ１２０３は現実物体のキャリブレーションである。図１１はＳ１２０３およびＳ１２０５中の処理を説明するための図である。図１１中の１１０２は、テーブル４０１上にあらかじめ定められた現実物体４０４のキャリブレーション位置であり、テーブル４０１にあらかじめシールとして貼られている。現実物体のキャリブレーション位置１１０２は現実物体４０４を正射影した形状になっている。Ｓ１２０４の際には、ユーザがこの現実物体のキャリブレーション位置１１０２上に一致するように現実物体４０４をあらかじめ定められた向きで置く。現実物体４０４にはマーカ部１０３ｄが付属しており、マーカ部１０３ｄの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード１００４およびマウス１００５を用いて、ユーザがＳ１２０３の実行を指示したとき、あらかじめ定められた世界座標系９０１における現実物体のキャリブレーション位置１１０２の位置姿勢をＢｄ、位置姿勢センサから求められるマーカ部１０３ｄの位置姿勢をＢｓ、マーカ部１０３ｄから見た現実物体４０４の中心の相対的な位置姿勢をＢｏとすると、
Ｂｏ＝Ｂｓ−１・Ｂｄ
となる。ここで求められたＢｏは、現実物体の位置姿勢計測部１０５に伝えられる。Ｓ１２０３が終了したら、Ｓ１２０４に進む。
【００７２】
Ｓ１２０４は力覚デバイスのキャリブレーションである。Ｓ１２０４の際には、ユーザがこの力覚デバイス本体１２１をテーブル４０１上のあらかじめ定められた位置に置く。世界座標系９０１から見た力覚デバイス座標系の位置姿勢をＤｗとして表すと、Ｄｗはマニュアルによる計測や計算によって求められ、キーボード１００４やマウス１００５を用いて力覚計算部１２０に入力される。
【００７３】
Ｓ１２０５は力覚デバイス把持部のキャリブレーションである。図１１中の１１０１は、テーブル４０１上にあらかじめ定められた力覚デバイスの把持部１２１ａのキャリブレーション位置であり、テーブル４０１にあらかじめシールとして貼られている。力覚デバイスの把持部のキャリブレーション位置１１０１は力覚デバイスの把持部１２１ａを正射影した形状になっている。Ｓ１２０５の際には、ユーザがこの力覚デバイスの把持部のキャリブレーション位置１１０１上にぴったりと一致するようにあらかじめ定められた向きで力覚デバイスの把持部１２１ａを置く。力覚デバイスの把持部１２１ａにはマーカ部１０３ｃが付属しており、マーカ部１０３ｃの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード１００４およびマウス１００５を用いて、ユーザがＳ１２０３の実行を指示したとき、あらかじめ定められた世界座標系９０１における力覚デバイスの把持部１２１ａのキャリブレーション位置１１０１の位置姿勢をＰｄ、位置姿勢センサから求められるマーカ部１０３ｃの位置姿勢をＰｓ、マーカ部１０３ｃから見た力覚デバイスの把持部１２１ａの先端の相対的な位置姿勢をＰｏとすると、
Ｐｏ＝Ｐｓ−１・Ｐｄ
となる。ここで求められたＰｏは、力覚デバイスの位置姿勢計測部１０６に伝えられる。
【００７４】
Ｓ１２０５が終了したら、Ｓ１００が終了され、Ｓ１０１およびＳ１４０が実行される。Ｓ１４０内の処理に関しては、別の図を用いて後述する。Ｓ１０１は、現実空間撮像ステップである。このステップでは撮像部１０１が現実空間の映像を撮影する。撮影した映像は映像合成部１１１に送られる。ここで撮影される映像は、図５に示されるようなものである。図５中には、力覚デバイスの把持部１２１ａ，マーカ部１０３ｃ，マーカ部１０３ｄ，現実物体４０４が捉えられている。Ｓ１０１が終わると，Ｓ１０２，Ｓ１０３およびＳ１０４が並行して実行される。
【００７５】
Ｓ１０２はユーザ視点の位置姿勢計測ステップである。ここでは、ユーザ視点の位置姿勢計測部１０４が位置姿勢センサ１０３から送られてきている位置姿勢信号のうち、ＨＭＤ１００に取り付けられたマーカ部１０３ｂの位置姿勢を表す信号を使って、撮像部１０１の位置姿勢情報を生成する。求める撮像部１０１の位置姿勢をＨ、位置姿勢センサ１０３から求められるマーカ部１０３ｂの位置姿勢信号をＨｓｎとすると、
Ｈ＝Ｈｓｎ・Ｈｏ
となる。求められた撮像部１０１の位置姿勢情報は力覚デバイスのＣＧ描画部１１０ａおよび仮想物体のＣＧ描画部１１０ｂに送られる。
【００７６】
Ｓ１０３は現実物体の位置姿勢計測ステップである。ここでは、現実物体の位置姿勢計測部１０５が位置姿勢センサ１０３から送られてきている位置姿勢信号のうち、現実物体４０４に取り付けられたマーカ部１０３ｄの位置姿勢を表す信号を使って、現実物体４０４の中心の位置姿勢情報を生成する。求める現実物体４０４の位置姿勢をＢ、１０３から求められるマーカ部１０３ｄの位置姿勢信号をＢｓｎとすると、
Ｂ＝Ｂｓｎ・Ｂｏ
となる。求められた現実物体４０４の位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【００７７】
Ｓ１０４は力覚デバイスの位置姿勢計測ステップである。ここでは、力覚デバイスの位置姿勢計測部１０６が位置姿勢センサ１０３から送られてきている位置姿勢信号のうち、力覚デバイスの把持部１２１ａに取り付けられたマーカ部１０３ｃの位置姿勢を表す信号を使って、力覚デバイスの把持部１２１ａの先端の位置姿勢情報を生成する。求める力覚デバイスの把持部１２１ａの位置姿勢をＰ、位置姿勢センサ１０３から求められるマーカ部１０３ｃの位置姿勢信号をＰｓｎとすると、
Ｐ＝Ｐｓｎ・Ｐｏ
となる。求められた力覚デバイスの把持部１２１ａの位置姿勢情報はＣＧシーン管理部１０７および力覚シーン管理部１０８に送られる。
【００７８】
Ｓ１０２、Ｓ１０３およびＳ１０４が終わったらＳ１１０およびＳ１２０が実行される。
【００７９】
Ｓ１１０はＣＧシーンの変更ステップである。Ｓ１１０では、ＣＧシーン管理部１０７に格納されているＶＲＭＬファイルの三次元ＣＧモデルの位置および姿勢情報が更新される。すなわち、現実物体４０４の位置姿勢情報が自動車を表す三次元ＣＧモデルのＶＲＭＬファイルの位置姿勢情報として格納され、力覚デバイスの把持部１２１ａの位置姿勢情報が力覚デバイスの把持部１２１ａを表すＶＲＭＬファイルの位置姿勢情報として格納される。Ｓ１１０が終わったら、Ｓ１１１ａおよびＳ１１１ｂが実行される。
【００８０】
Ｓ１１１ａは力覚デバイスのＣＧ描画ステップである。Ｓ１１１ａでは、力覚デバイスのＣＧ描画部１１０ａが撮像部１０１の位置姿勢情報を用いて、撮像部１０１の視点から見える仮想空間中の力覚デバイスの把持部１２１ａを表すＣＧ映像を生成する。生成されたＣＧ映像は映像合成部１１１に送出される。Ｓ１１１ａでは、ＣＧシーン管理部１０７に格納されている三次元ＣＧモデルの情報が参照される。
【００８１】
Ｓ１１１ｂは仮想物体のＣＧ描画ステップである。Ｓ１１１ｂでは、仮想物体のＣＧ描画部１１０ｂが撮像部１０１の位置姿勢情報を用いて、撮像部１０１の視点から見える仮想空間中の仮想物体を表すＣＧ映像を生成する。生成されたＣＧ映像は映像合成部１１１に送出される。Ｓ１１１ｂでは、ＣＧシーン管理部１０７に格納されている三次元ＣＧモデルの情報が参照される。また、このステップにおいては、半透明表示フラグがＴｒｕｅになっている三次元ＣＧモデルは半透明で描画する。
【００８２】
Ｓ１１１ａおよびＳ１１１ｂが終わったら、Ｓ１１２に進む。図６は、この時点で生成されるＣＧ映像を説明する図である。図６中で、６０１は力覚デバイスの把持部１２１ａを表す三次元ＣＧ、６０２は自動車を表す三次元ＣＧを示している。
【００８３】
ＣＧシーン管理部１０７に格納されている力覚デバイスの把持部１２１ａを表す三次元ＣＧモデルは、前述のように、力覚デバイスの把持部１２１ａの実際の長さよりも先端の長い。そのため、図６に示されるように、力覚デバイスの把持部１２１ａを表す三次元ＣＧ６０１は、実写映像である図５中の力覚デバイスの把持部１２１ａよりも先端が長く描画されている。
【００８４】
Ｓ１１２は映像合成ステップである。Ｓ１１２では、まず撮像部１０１から送出されてきた撮影映像が映像合成部１１１の画像バッファに書き込まれる。次に、力覚デバイスのＣＧ描画部１１０ａおよび仮想物体のＣＧ描画部１１０ｂから送出されてきたＣＧ映像が画像バッファに上書きされる。この結果、撮影映像を背景上に、仮想物体が描画された合成映像が生成される。図７は、この時点で得られる合成映像を説明する図である。生成された合成映像は映像表示部１０２に送出される。Ｓ１１２が終わったら、Ｓ１１３が実行される。
【００８５】
Ｓ１１３は映像表示ステップである。Ｓ１１３では、映像表示部１０２に合成映像を表示する。
【００８６】
Ｓ１２０は力覚シーンの更新ステップである。Ｓ１２０では、力覚シーン管理部１０８に格納されている力覚シーンの更新がなされる。すなわち、現実物体４０４の位置姿勢情報が自動車を表す力覚発生モデルの位置姿勢情報として格納され、力覚デバイスの把持部１２１ａの位置姿勢情報が力覚デバイスの把持部１２１ａを表す力覚発生モデルの位置姿勢情報として格納される。
【００８７】
Ｓ１１３およびＳ１２０が終わったら、Ｓ１２１が実行される。
【００８８】
Ｓ１２１はフラグリセット判定ステップである。ユーザがキーボード１００４、マウス１００５を使って半透明表示フラグおよび力覚発生フラグをリセットすることを指示していれば、Ｓ１２２に進む。そうでない場合には、Ｓ１３０に進む。
【００８９】
Ｓ１２２はフラグリセットステップである。ここでは、ＣＧシーン管理部１０７において、仮想空間中に存在するすべての三次元ＣＧモデルの半透明表示フラグをＦａｌｓｅに設定する。また、力覚シーン管理部１０８において、すべての力覚発生モデルの力覚発生フラグをＴｒｕｅに設定する。Ｓ１２２が終了したら、Ｓ１３０に進む。
【００９０】
Ｓ１３０は終了判定ステップである。ユーザがキーボード１００４、マウス１００５を使ってシステムの終了を指示していればプログラムを終了し、指示していなければＳ１０１に進む。
【００９１】
以上、図２を参照して、本実施例における処理手順を説明した。
【００９２】
ここで、Ｓ１４０中の処理手順について説明する。Ｓ１４０では力覚シーンの情報を用いて、力覚デバイス本体１２１に力覚を発生させる。一般に、力覚デバイスが１０００Ｈｚ以下の更新レートで力覚を提示すると、ユーザは力覚の不連続性を感じると言われているため、Ｓ１４０中のＳ２０１からＳ２０６に至るループは、１０００Ｈｚ以上の更新レートで実行する。Ｓ１４０は上記条件を満たす手法であればさまざまな手法で実行されてよいが、本実施例では、力覚デバイスを用いるシステムにおいて広く用いられているＶｉｒｔｕａｌ  Ｐｒｏｘｙ法とペナルティ法を用いる。Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法については非特許文献２に記されている。
【００９３】
Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法は、力覚デバイスの先端を任意の半径を持った球体で表現し、その球体と力覚発生の対象となる仮想の物体との衝突を調べることで、力覚デバイスの先端に発生する力覚を計算するためのベクトルを求める手法である。
【００９４】
図１４を用いて、Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法について説明する。１４０１は仮想物体の表面を表す。１４０２は力覚デバイスの先端の位置を表し、力覚デバイスの先端が仮想物体の内部に入り込んでしまっている状態を示している。１４０３は、力覚デバイスが本来あるべき位置を表す、Ｖｉｒｔｕａｌ  Ｐｒｏｘｙである。１４０４は、力覚デバイスに発生する力を計算するためのベクトルを表す。Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法では、このように、本来力覚デバイスのあるべき位置をＶｉｒｔｕａｌ  Ｐｒｏｘｙとして表し、実際の位置と比較することで、簡単に力覚を計算することが出来る。また、ペナルティ法は、仮想物体間に発生する反力の強さを求める手法である。
【００９５】
図８は、Ｓ１４０中の処理手順を説明するフローチャートである。Ｓ１４０が開始されると、まずＳ２０１が実行される。
【００９６】
Ｓ２０１では力覚シーンの取得がなされる。ここでは、力覚計算部１２０が力覚シーン管理部１０８から力覚シーンを取得する。Ｓ２０１が終了すると、Ｓ２０２に進む。
【００９７】
Ｓ２０２では、力覚計算部１２０において、力覚デバイスの位置姿勢が、現実物体の座標系における位置姿勢情報に変換される。Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法では、力覚デバイスの先端の座標は、力覚発生の対象となる物体の座標系で表現しなければならず、この場合、力覚発生の対象となる物体の座標系は、現実物体４０４の座標系である。現実物体４０４の座標系における力覚デバイスの位置姿勢をＰｂとすると、
Ｐｂ＝Ｂ−１・Ｐ
となる。Ｓ２０２が終了すると、Ｓ２０３ａに進む。
【００９８】
Ｓ２０３ａは、力覚計算ループの始まりである。これは、力覚計算を、本実施例で存在する力覚発生モデルの数だけループすることを表し、Ｓ２０９が終わった後のＳ２０３ｂで終了判定される。Ｓ２０３ｂではＳ２０４，Ｓ２０５，Ｓ２０６，Ｓ２０７，Ｓ２０８およびＳ２０９の処理が力覚発生モデルの数だけ繰り返したかどうかが判定され，もし繰り返したことが確認されたらＳ２１０に進む。
【００９９】
Ｓ２０４は力覚発生フラグのチェックが行われる。現在のループで力覚計算の対象になっている力覚発生モデルの、力覚発生フラグがＴｒｕｅであればＳ２０５に、ＦａｌｓｅであればＳ２０３ｂに進む。
【０１００】
Ｓ２０５では、力覚計算部１２０が求められたＰｂと、現在のループで力覚計算の対象になっている力覚発生モデルを用いて、Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法を実行することで、力覚デバイスの把持部１２１ａの先端に発生する力覚を計算するためのＶｉｒｔｕａｌ  Ｐｒｏｘｙと力覚デバイスの位置との差を示すベクトルＦｗを計算する。Ｓ２０５が終了すると、Ｓ２０６に進む。
【０１０１】
Ｓ２０６では、力覚を計算するためのベクトルＦｗの判定が行われる。このＦｗの大きさがあらかじめ定められた定数である、通り抜け閾値Ｊ以上であるときにはＳ２０７に進む。Ｆｗの大きさがＪよりも小さいときにはＳ２０９に進む。この判定は、力覚デバイスが力覚発生モデルの内部にある程度の距離以上入り込んでしまった場合には、その力覚発生モデルを突き抜けて、もはやその力覚発生モデルからは力覚を発生させない、という判断をするための判定である。
【０１０２】
なお、ここでは、ＦｗによってＳ２０７に行くかＳ２０９に行くかの判定を行ったが、この判定は別の方法でなされてもよい。たとえば、キーボード１００４やマウス１００５からの入力によって判定がなされてもよいし、Ｓ２０２で求めたＰｂの変化量、すなわち速度の大きさによって判定がなされてもよい。
【０１０３】
Ｓ２０７では、力覚発生フラグの設定が行われる。現在のループで力覚計算の対象になっている力覚モデルの力覚発生フラグをＦａｌｓｅに設定し、Ｓ２０８に進む。
【０１０４】
Ｓ２０８では、半透明表示フラグの設定をする。ここでは、力覚シーン管理部１０８が、ＣＧシーン管理部１０７に、現在のループで力覚計算の対象になっている力覚発生モデルに対応する三次元ＣＧモデルの半透明表示フラグをＴｒｕｅに設定する。これにより、力覚を発生させない力覚発生モデルに対応する三次元ＣＧモデルは、半透明で表示されることになる。Ｓ２０８が終わったらＳ２０３ｂに進む。
【０１０５】
Ｓ２０９では、Ｓ２０５で求められたベクトルを用いて、ペナルティ法で発生する力の強さを計算する。発生する力の強さをＦとすると、
Ｆ＝Ｋ・｜Ｆｗ｜
の式によって発生する力の強さを求める。ここで、Ｋはバネ定数であり、あらかじめ定められている。この式は、Ｓ２０５で求められたベクトルに比例する力、すなわちバネのような力が力覚デバイスに加えられることを表現している。ここまでで、発生する力のベクトルと強さ、すなわち力覚が求められた。Ｓ２０９が終わると、Ｓ２０３ｂに進む。
【０１０６】
Ｓ２１０は力覚合計ステップである。ここでは、Ｓ２０３ａからＳ２０３ｂのループ中で計算された、力覚の情報をすべて合計する。合計された発生する力の情報は、力覚デバイス本体１２１に送られる。Ｓ２１０が終了すると、Ｓ２１１に進む。
【０１０７】
Ｓ２１１では、力覚の力覚デバイス座標系への変換が行われる。このステップでは、力覚計算部１２０が計算した世界座標系９０１における発生する力の情報を、力覚デバイス座標系における力の情報に変更する。力覚デバイス座標系における力の三自由度のベクトルＦｄは、世界座標系９０１から見た力覚デバイス座標系の位置姿勢Ｄｗを用いて、
Ｆｄ＝Ｄｗ−１・Ｆｗ
で表される。計算されたＦｄ、および先に計算されたＦは力覚デバイス本体１２１に送られる。Ｓ２１１が終わるとＳ２１２に進む。
【０１０８】
Ｓ２１２では、力覚提示が行われる。このステップでは、力覚デバイス本体１２１が力覚計算部１２０から得た発生する力の情報を取得し、その力覚デバイスの把持部１２１ａにその力を発生させる。Ｓ２１２が終了すると、Ｓ２１３に進む。
【０１０９】
Ｓ２１３では、ユーザがキーボード１００４、マウス１００５を使ってシステムの終了を指示していればプログラムを終了し、指示していなければＳ２０１に進む。
【０１１０】
以上、図８を参照して、本実施例のＳ１４０における処理手順を説明した。
【０１１１】
本実施例によって、図１３に示されるようなユーザの操作が可能になる。図１３は、図７に示される状態から、ユーザがさらに力覚デバイスの把持部１２１ａを自動車の内部に押し付けた結果として表示される状態を示している。図１３において、１３０１は半透明に表示されている自動車の外装の三次元ＣＧモデル、１３０２は半透明に表示されている自動車の外装の三次元ＣＧモデル１３０１が半透明となったことによって見えるようになった、自動車に内装される仮想の椅子を示している。図１３において、ユーザは力覚デバイスの把持部を表す三次元ＣＧ６０１で仮想の椅子１３０２に触れている。本実施例では、半透明に表示されている自動車の外装の三次元ＣＧモデル１３０１の位置には、現実物体である自動車の模型が存在するわけであるから、自動車の模型と力覚デバイスが物理的に干渉してしまうため、自動車の模型の内部に触れることはできないはずである。しかし、本実施例では、力覚デバイスの把持部１２１ａに、より先端の長い力覚デバイスの把持部を表す三次元ＣＧ６０１および力覚モデルを重畳している。よって、物理的干渉を起こさずに、力覚デバイスの把持部を表す三次元ＣＧの先端を、自動車の模型の内部に侵入させることができる。そして、内部に侵入した力覚デバイスの把持部を表す三次元ＣＧと、自動車の模型の内部の三次元ＣＧとを用いて、力覚を計算する。これらのことにより、ユーザにあたかも現実物体の内部に触れられるかのような感覚を提示することが可能である。
【０１１２】
さらに、本実施例では、Ｓ２０６〜Ｓ２０８の処理により、把持部の位置に応じて、自動的に、自動車模型の三次元ＣＧモデルの表示と、自動車模型に関連する力覚シーンを制御している。よって、ユーザは、把持部の位置に応じて自動的に自動車の模型の内部を操作することできる。
【０１１３】
また、ユーザが力覚デバイスの把持部１２１ａを自動車の外に出し、キーボード１００４、マウス１００５を使って半透明表示フラグおよび力覚発生フラグをリセットすることを指示すれば、ユーザは再び自動車の外装に触れることができるようになる。本実施例では、半透明表示フラグおよび力覚発生フラグのリセットはユーザのマニュアル指示に応じて行う構成にしている。ユーザが把持部の先端を自動車の内部に侵入させた場合は、ユーザが内部を操作したいという意図をもっていると判断することができる。しかし、ユーザが把持部の先端を自動車の外部に移した場合は、ユーザが内部の操作を終了したいという意図をもっているとは判断することができない。そこで、本実施例では、リセットについてはユーザのマニュアル指示に応じて行う。これにより、自動車模型の外部に把持部を移すことにより、表示が変化してしまうことを防ぐことができる。これにより、把持部の位置に応じて、表示がめまぐるしく変化することを防ぐことができる。
【０１１４】
本実施例ではＨＭＤ１００が撮像部１０１と映像表示部１０２を内蔵するビデオシースルー型のＨＭＤであるものとしたが、これはユーザに現実世界と仮想世界の双方を提示することのできるデバイスであればどのようなもので構成されてもよく、たとえば光学シースルー型のＨＭＤで構成されてもよい。その場合、図３中の撮像部１０１は必要なくなり、図２中のＳ１０１およびＳ１１２のステップは実行されない。また、ユーザの頭部に装着されるデバイスで構成される必要もなく、たとえば据え置き型の半透過型ディスプレイで構成されてもよい。その場合は、図３中の撮像部１０１、ユーザ視点の位置姿勢計測部１０４は必要なくなり、図２中のＳ１０１、Ｓ１１２およびＳ１０２のステップは実行されない。また、本実施例ではＨＭＤ１００は撮像部１０１と映像表示部１０２を一つずつ持つ、単眼型のＨＭＤを使用するものとしたが、撮像部１０１と映像表示部１０２をそれぞれ二つずつ持つ複眼型のＨＭＤを使用してもよく、その場合は、図２に示される処理が両眼のそれぞれについて行われることになる。
【実施例２】
【０１１５】
前述の実施例では、現実物体４０４を把持して動かすことによって、仮想の物体を動かした。しかしながら、これは本実施例の基本構成に必須の要件ではなく、現実物体４０４は固定されてあるものでもよい。
【０１１６】
その場合、図２のＳ１０３の処理は必要なくなり、図３の１０５の構成も必要なくなる。
【実施例３】
【０１１７】
前述の実施例では、力覚デバイスの把持部に対応する力覚発生モデルおよび三次元ＣＧモデルはあらかじめ定められていた。しかしながら、この力覚発生モデルおよび三次元ＣＧモデルは、ユーザの指示によって変更がなされてもよい。たとえば、キーボード１００４やマウス１００を用いて力覚発生モデルおよび三次元ＣＧモデルの大きさや長さを変更したり、力覚デバイスの把持部との位置関係が変更されてよい。
【０１１８】
ユーザが指示を出す手段もキーボード１００４やマウス１００５ではなく、たとえば力覚デバイスの把持部にダイヤルなどの入力装置を設置し、操作してもよい。
【０１１９】
このようにユーザが力覚発生モデルをコントロールできるようにすることで、ユーザが、簡単に仮想物体の所望の部位を操作することが出来る。
【実施例４】
【０１２０】
前述の実施例では、図７や図１３に示されるように、力覚デバイスの把持部に対応する三次元ＣＧモデルによって、実際の力覚デバイスの把持部は見えなくなっていた。そのため、実際の把持部の形状と、それに対応する三次元ＣＧモデルの形状の差がわからなくなっていた。
【０１２１】
本実施例では、力覚デバイスの把持部の特定の部分に関して、異なる仮想画像を生成することによって、上述の問題を解決することが出来る。たとえば、形状に差がある部分に関しては色を変更して表示したり、形状が共通している部分に関しては半透明で表示する。
【実施例５】
【０１２２】
本実施例では、図１５に示されるように、現実物体が存在する部分が消去されたかのような効果を得るための方法について述べる。図１５では、自動車の外装の三次元ＣＧモデル１５０１から、タイヤの部分が消去されている。図１５中の１５０２は、本来自動車のタイヤがあった部分であるが、本実施例においては、ここには自動車の三次元ＣＧも、現実物体４０４の実写映像も表示されていない。
【０１２３】
まず、ＣＧシーン管理部１０７に、あらかじめ背景となる三次元ＣＧモデルを用意する。本実施例では、テーブル４０１の三次元ＣＧモデルを用意する。この三次元ＣＧモデルについては、形状、色のいずれについても、現実物に近いものにする。また、現実物体４０４と全く同じ形の三次元ＣＧモデルを用意する。この三次元ＣＧモデルについては、形状は現実物体４０４と全く同じものである必要であるが、色はどのように設定されていてもよい。
【０１２４】
本実施例では、Ｓ１１１ｂの仮想物体のＣＧ描画の際に、半透明描画フラグがついている三次元ＣＧモデルについては、初めから描画を行わない。
【０１２５】
また、本実施例では、仮想物体のＣＧ描画ステップＳ１１１ｂの後に、図１８のフローチャートに示される、背景ＣＧの描画ステップを実行する。背景ＣＧの描画ステップが開始されると、まず、Ｓ１８０１において、仮想背景が描画される。本実施例においては、テーブル４０１の三次元ＣＧモデルが描画される。Ｓ１８０１が終わると、Ｓ１８０２が実行される。
【０１２６】
Ｓ１８０２では、Ｓ１８０１で描画した画像のステンシルバッファに、現実物体と同じ形の三次元ＣＧモデルを描画する。ここで、ステンシルバッファとは、画像のピクセルごとに用意された特殊なバッファ領域のことである。図１６は、この時点で得られるステンシルバッファを表現した図である。図１６中の１６０１は、現実物体４０４と同じ形の三次元ＣＧを表している。Ｓ１８０２が終わると、Ｓ１８０３に進む。
【０１２７】
Ｓ１８０３では、Ｓ１８０２で得られたステンシルバッファ領域から、すでにＣＧが描画された領域を消去する。図１７は、この時点で得られるステンシルバッファを表現した図である。Ｓ１８０３が終わると、Ｓ１８０４に進む。
【０１２８】
Ｓ１８０４では、Ｓ１８０１で得られた仮想背景のうち、Ｓ１８０３で得られたステンシルバッファ以外の領域を消去する。
【０１２９】
Ｓ１８０４が終了したら、背景ＣＧの描画ステップを終了する。ここで得られた背景ＣＧは、Ｓ１１２において実写映像と合成される。
【０１３０】
本実施例で述べた手法を用いることによって、図１５に示されるように、現実物体が存在する部分が消去されたかのような効果を得ることができる。
【図面の簡単な説明】
【０１３１】
【図１】本実施例をソフトウェアで実現するためのコンピュータの基本構成を示す図
【図２】実施例１における処理手順を説明するためのフローチャート
【図３】実施例１における構成を説明するブロック図
【図４】実施例１の外観を示した図
【図５】実施例１において、Ｓ１０１で撮影される映像を説明する図
【図６】実施例１において、Ｓ１１１ａおよびＳ１１１ｂで生成されるＣＧ映像を説明する図
【図７】実施例１において、Ｓ１１２で生成される合成映像を説明する図
【図８】実施例１において、Ｓ１４０中の処理手順を説明するフローチャート
【図９】実施例１を説明するための図
【図１０】実施例１において、Ｓ１２０１およびＳ１２０２中の処理を説明するための図
【図１１】実施例１において、Ｓ１２０３およびＳ１２０５中の処理を説明するための図
【図１２】実施例１において、Ｓ１００中の処理手順を説明するフローチャート
【図１３】実施例１を説明するための図
【図１４】Ｖｉｒｔｕａｌ  Ｐｒｏｘｙ法を説明するための図
【図１５】実施例５を説明するための図
【図１６】実施例５において、Ｓ１８０２で得られるステンシルバッファを表現した図
【図１７】実施例５において、Ｓ１８０３で得られるステンシルバッファを表現した図
【図１８】実施例５における処理手順を説明するためのフローチャート
【図１】
0004795091.tif 000006
【図２】
0004795091.tif 000007
【図３】
0004795091.tif 000008
【図４】
0004795091.tif 000009
【図５】
0004795091.tif 000010
【図６】
0004795091.tif 000011
【図７】
0004795091.tif 000012
【図８】
0004795091.tif 000013
【図９】
0004795091.tif 000014
【図１０】
0004795091.tif 000015
【図１１】
0004795091.tif 000016
【図１２】
0004795091.tif 000017
【図１３】
0004795091.tif 000018
【図１４】
0004795091.tif 000019
【図１５】
0004795091.tif 000020
【図１６】
0004795091.tif 000021
【図１７】
0004795091.tif 000022
【図１８】
0004795091.tif 000023