情報処理方法および装置
【課題】 第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示する際に、現実物体にかかわらず第二の仮想物体の内部に触れることができるようにすることを目的とする。
【解決手段】 第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、第二の仮想物体から受ける力覚は、第一の仮想物体の第一の力覚発生モデルと第二の仮想物体の第二の力覚発生モデルとを用いて求められ、第一の力覚発生モデルは第一の仮想物体のコンピュータグラフィック情報に対応し、第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第一の仮想物体の形状が前記力覚デバイスの形状と異なっている。
【解決手段】 第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、第二の仮想物体から受ける力覚は、第一の仮想物体の第一の力覚発生モデルと第二の仮想物体の第二の力覚発生モデルとを用いて求められ、第一の力覚発生モデルは第一の仮想物体のコンピュータグラフィック情報に対応し、第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第一の仮想物体の形状が前記力覚デバイスの形状と異なっている。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するものに関する。
【背景技術】
【0002】
VR(バーチャルリアリティ)システムは、コンピュータの作り出す三次元CG(コンピュータ・グラフィクス)をHMD(ヘッドマウントディスプレイ)を装着したユーザに提示することで、仮想の空間をあたかも現実であるかのように感じさせるシステムである。HMDを利用したVRシステムでは、ユーザの頭部の動きに合わせてユーザに提示される三次元CGが変化するため、ユーザはあたかも自分の周囲に実際に三次元CGが存在しているかのように感じることができる。
【0003】
VRシステムでは、力覚デバイスと呼ばれる装置を用いて、ユーザに仮想の触感を与えることがある。力覚デバイスを用いることで、ユーザは実際には存在しない事物に仮想的に触っているかのような感触を感じることができる。力覚デバイスには機械式や糸の張力を用いた方式などさまざまな方式のものがある。(例えば非特許文献1)
また、近年、現実空間の映像に重ねて三次元CGを提示することで、VRでは見ることができなかった現実世界をユーザに提示する技術の開発もなされており、それらはMR(Mixed Reality、複合現実感)システムと呼ばれている(例えば、特許文献1参照)。
【0004】
MRシステムでは、HMD(ヘッドマウントディスプレイ)を用いることが一般的である。MRシステムでは、現実空間の画像と仮想空間の画像を合成して、HMDに表示することにより、複合現実感を実現する。MRシステムで用いるHMDの方式には半透過型のHMDに三次元CG等の画像を重畳する光学シースルー方式と、HMDに装着したビデオカメラで撮影した画像に三次元CG等の画像を合成した後、HMDに表示するビデオシースルー方式がある。
【0005】
MRシステムの用途としては、患者の体内の様子を透過しているように医師に提示する医療補助の用途や、工場において製品の組み立て手順を示すCGを実物に重ねて表示する作業補助の用途などが考えられている。
【0006】
MRシステムの一種として、特許文献2に示されるように、三次元CADデータから簡易的に試作された模型に重ねて、同じデータから作成された三次元CGを表示するものがある。この発明におけるシステムでは、ユーザは自らの手で三次元CGを動かすことができる。
【特許文献1】特開2001−195601号公報
【特許文献2】特開2005−107970号公報
【非特許文献1】田村博編「ヒューマン・インタフェース」オーム社,1998年5月30日,pp.238−241
【非特許文献2】Diego C.Ruspini et al,The Haptic Display of Complex Graphical Environments,SIGGRAPH 97 Proceedings,August 1997,pp.345−352.
【発明の開示】
【発明が解決しようとする課題】
【0007】
特許文献2に示される方法では,ユーザは実際には存在しない仮想の物体を見ながら、同じ形状の模型を手に持つことができる。つまり、仮想の物体を視覚的および力覚的に体感することができる。しかしながら、この方法では、ユーザが仮想の物体の内部に触れたり、一部を消したりといった感覚を得ることはできなかった。すなわち、現実に存在する模型の中にある仮想の物体に触れたり、現実に存在する模型の一部を消したりするような感覚を得ることはできなかった。
【0008】
本発明は、上記問題を解決するものであり、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示する際に、現実物体にかかわらず第二の仮想物体の内部に触れることができるようにすることを目的とする。
【課題を解決するための手段】
【0009】
本発明は、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、前記ユーザの視点の位置姿勢を取得する第一の取得工程と、前記力覚デバイスの位置姿勢を取得する第二の取得工程と、前記ユーザの視点の位置姿勢、前記力覚デバイスの位置姿勢および前記第一の仮想物体のコンピュータグラフィック情報に基づき、前記第一の仮想物体の第一の仮想画像を生成する第一仮想画像生成工程と、前記ユーザの視点の位置姿勢および前記第二の仮想物体のコンピュータグラフィック情報に基づき、前記第二の仮想物体の第二の仮想画像を生成する第二仮想画像生成工程と、前記第一の仮想画像および前記第二の仮想画像を現実空間の画像と合成し、ユーザに提示する提示工程とを有し、前記第二の仮想物体から受ける力覚は、前記第一の仮想物体の第一の力覚発生モデルと前記第二の仮想物体の第二の力覚発生モデルとを用いて求められ、前記第一の力覚発生モデルは前記第一の仮想物体のコンピュータグラフィック情報に対応し、該第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第一の仮想物体の形状が前記力覚デバイスの形状と異なっていることを特徴とする。
【発明の効果】
【0010】
本発明は、上記問題を解決するものであり、本発明によれば、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示する際に、現実物体にかかわらず第二の仮想物体の内部に触れることができるようにすることができる。
【発明を実施するための最良の形態】
【0011】
以下、添付の図面を参照して本発明の好適な実施例について説明する。
【実施例1】
【0012】
本実施例の視覚および力覚提示システムでは、現実物体に重ねて自動車の三次元CGを合成し、ユーザの装着しているHMDに表示する。また、自動車の三次元CGと同じ形状の力覚を、力覚デバイスを通してユーザに提示する。
【0013】
図4は本実施例の外観を示した図である。
【0014】
100はHMDであり、ユーザの頭部に装着されて使用される。HMD100は撮像部および表示部を内蔵し、撮像部(カメラ)で撮影した映像に三次元CGを重ねた合成映像を表示部に表示する。HMD100に内蔵される撮像部はあらかじめ内部パラメータが測定されている。
【0015】
401はテーブルである。テーブルは部屋に固定されており、テーブル上で複合現実感を体験することが出来る。
【0016】
121は力覚デバイス本体、121aは力覚デバイスの把持部である。ユーザは、あらかじめ定められた範囲の分だけ、手で自由に力覚デバイスの把持部121aの位置や姿勢を動かすことができる。力覚デバイス本体121と力覚デバイスの把持部121aは機械的に接続され、力覚デバイス本体121が力覚デバイスの把持部121aを駆動することによって、力覚デバイスの把持部121aを把持するユーザに上下方向、左右方向、奥行き方向の三自由度の力を感じさせることができる。力覚デバイス本体121はテーブル401の上に固定されている。
【0017】
403はユーザの手である。説明のため、ユーザの体の手以外の部分は図中に示していない。
【0018】
404は現実物体であり、自動車の模型である。この自動車の模型は、本実施例で表示する自動車の仮想物体の外装と同じ形状をしている。この模型の作成は、光造形などのラピッドプロトタイプ装置などによって可能である。
【0019】
本実施例では現実物体である模型と仮想物体が同じ形状であるものとしたが、これは本実施例の基本構成に必須のではなく、現実物体の形状と仮想物体の形状が異なっていてもよい。
【0020】
また、素材もどのようなもので構成されてもよい。たとえば、模型や厚紙、電子機器、各種の道具や器具などで構成されるものとしてよい。また、内部を空洞にして中に異なる重さの重りを入れられるようにしてもよいし、大きさや形状など、物理的な属性を変えられるような機構を備えてもよい。
【0021】
103は位置姿勢を計測するための構成であり、カメラ部103a,マーカ部103b,103c,103dからなる。マーカ部103bはHMD100に、マーカ部103cは力覚デバイスの把持部121aに、マーカ部103dは現実物体404に取り付けられている。マーカ部103b,マーカ部103c,マーカ部103dはそれぞれ異なる形状をしており、位置姿勢センサのカメラ部103aに備えられた、内部パラメータをあらかじめ求められた二つのカメラによって撮像される。三角測量などの手法を用いて、二つのカメラの各々によって撮像された画像から、マーカ部103b,マーカ部103c,マーカ部103dの,カメラ部103aに対する相対的な位置および姿勢を求める。位置姿勢センサのカメラ部103aは部屋に固定されている。
【0022】
図3は本実施例の構成を示したブロック図である。以下、図3を参照しながら本実施例の構成について説明する。
【0023】
100は図4でも示されているユーザが装着するビデオシースルー型のHMDであり、撮像部101と映像表示部102を有する。なお、本実施例では撮像部101と映像表示部102がHMD100に内蔵されるものとしたが、これは本実施例の基本構成に必須の要件ではなく、撮像部101と映像表示部102はそれぞれ別の場所に配置されるものとしてもよい。
【0024】
101は撮像部であり、CCDカメラ、CMOSカメラなどの撮像デバイスによって構成される。撮像部101によって撮影された映像は映像合成部111に送られる。
【0025】
102は映像表示部であり、小型の液晶表示デバイス等で構成される。映像表示部102は映像合成部111から送られてきた合成映像を表示する。
【0026】
103は図4にも示されている、内蔵する撮像素子によりマーカを撮影することによって任意の物体の位置および姿勢を計測する位置姿勢センサである。位置姿勢センサ103はあらかじめマーカを付けた任意の物体の位置姿勢信号を、HMD100を装着したユーザ視点の位置姿勢計測部104、現実物体の位置姿勢計測部105および力覚デバイスの位置姿勢計測部106に出力する。
【0027】
なお、本実施例では一つの位置姿勢センサ103から104〜106それぞれに位置姿勢信号を出力する。しかし、これは本実施例の基本構成に必須の要件ではない。たとえばユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106のそれぞれに別の位置姿勢センサを設置してもよい。
【0028】
また、本実施例では位置姿勢センサ103は光学式センサによって構成されているが、位置姿勢センサ103はあらかじめ定めた任意の物体の位置および姿勢を計測できる装置であればどのような装置で構成されてもよい。たとえば、磁気式の位置姿勢センサによって構成されてもよい。つまり、現実空間中のこれら三つの測定対象の位置姿勢が計測することが出来れば、いかなる構成でも良い。
【0029】
本実施例では、これらの位置姿勢センサ103は位置をxyz座標系におけるx座標,y座標,z座標の形で出力する。また,姿勢をz軸中心の回転であるロール角,x軸中心の回転であるピッチ角,y軸中心の回転であるヨー角で出力し,ヨー回転,ピッチ回転,ロール回転の順で測定対象を回転させると測定対象の姿勢が得られる。なお,以下の説明においては,四行四列の行列で示すことができる位置および姿勢の情報を、アルファベットの記号,たとえばMなどで表現する。この行列の中身について,位置姿勢センサ103によって得られた位置姿勢の値を例として説明する。
【0030】
位置姿勢センサによって得られるx座標,y座標,z座標の値をそれぞれx,y,zとすると、位置姿勢センサ103によって得られる位置を表す三次元ベクトルtは
【0031】
【数1】
【0032】
で表される。また、位置姿勢センサによって得られるロール角,ピッチ角,ヨー角の値をそれぞれr,p,yとすると,ロール角,ピッチ角,ヨー角から得られる三行三列の回転変換行列Rr,Rp,Ryは
【0033】
【数2】
【0034】
で表される。従って,姿勢を表す三行三列の回転変換行列Rは
【0035】
【数3】
【0036】
で表される。
【0037】
以上得られたtとRを用いて、位置姿勢センサから得られる位置と姿勢の両方を表現する四行四列の行列Mは、以下のように表現することができる。
【0038】
【数4】
【0039】
位置および姿勢がどのような形式で得られようと、上記のような四行四列の行列として表現できることは広く知られている。
【0040】
104はユーザ視点の位置姿勢計測部であり、位置姿勢センサ103からの位置姿勢信号を受信する。そして、ユーザが装着しているHMD100に取り付けられたマーカ部103bの位置姿勢を表す信号を使って、撮像部101のユーザ視点の位置姿勢情報を生成する。生成した位置姿勢情報は、HMDの映像表示に表示する映像中のCGの位置姿勢を算出するために、力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bに送られる。なお、本実施例においてはユーザ視点の位置姿勢計測部104の位置姿勢情報が位置姿勢センサ103のみから求められるものとした。しかし、それに加えて、撮像部101の撮影した映像を用いて位置姿勢情報の補正を行ってもよい。また、撮像部101の撮影した映像のみを用いてユーザ視点の位置姿勢計測部104の位置姿勢情報を求める構成としてもよい。
【0041】
105は現実物体の位置姿勢計測部であり、位置姿勢センサ103からの位置姿勢信号を受信する。そして、現実物体404に取り付けられたマーカ部103dの位置姿勢を表す信号を使って、現実物体404の位置姿勢情報を生成する。生成した現実物体404の位置姿勢情報はCGシーン管理部107および力覚シーン管理部108に送られる。
【0042】
106は力覚デバイスの位置姿勢計測部であり、位置姿勢センサ103からの位置姿勢信号を受信する。そして、力覚デバイスの把持部121aに取り付けられたマーカ部103cの位置姿勢を表す信号を使って、力覚デバイスの把持部121aの位置姿勢情報を生成する。生成した力覚デバイスの把持部121aの位置姿勢情報はCGシーン管理部107および力覚シーン管理部108に送られる。
【0043】
107はCGシーン管理部である。CGシーン管理部107は三次元CGの生成に必要な、仮想物体の三次元CGモデルの情報を管理する。三次元CGモデルの情報はさまざまな形式で記述することができるが、本実施例の三次元CGモデルの情報は、三次元CGモデルがポリゴンモデルで表されるVRML(Virtual Reality Modeling Language)ファイルで表現されている。また、VRMLファイルには、三次元CGモデルの位置および姿勢情報が格納されている。CGシーン管理部107に格納されているVRMLファイルは、力覚デバイスの把持部121aに重ねて表示される仮想物体の三次元CGモデルのVRMLファイルおよび現実物体404に重ねて表示される自動車の仮想物体の三次元CGモデルのVRMLファイルである。力覚デバイスの把持部121aに重ねて表示される仮想物体の三次元CGモデルのVRMLファイルは、力覚デバイスの位置姿勢計測部106から送られてくる位置姿勢情報によって更新される。自動車の仮想物体の三次元CGモデルのVRMLファイルは、現実物体の位置姿勢計測部105から送られてくる位置姿勢情報によって更新される。また、CGシーン管理部107の情報は力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bによって参照される。
【0044】
本実施例においては、自動車の三次元CGモデルは、多数の部品の三次元CGモデルから構成されており、外装や内装の三次元CGモデルを含む。また、それぞれの三次元CGモデルは半透明表示フラグを付加情報として持っている。半透明表示フラグとは、それぞれの三次元CGモデルが半透明表示の対象になるかどうかを示すフラグである。このフラグがTrueに設定されていれば半透明表示の対象になることを、Falseに設定されていれば対象にならないことを示す。初期状態においては、すべての三次元CGモデルについてこのフラグはFalseに設定されている。このフラグは、力覚シーン管理部108などから設定される。
【0045】
なお、本実施例においては、図9に示されるように、力覚デバイスの把持部121aを表す三次元CGモデル150の先端を、実際の形状よりも長く設定しておく。108は力覚シーン管理部である。力覚シーン管理部108は仮想物体間に発生する力の計算に必要な、仮想物体の力覚発生モデルの情報を管理する。力覚発生モデルの情報はさまざまな形式で記述することができるが、本実施例では、力覚発生モデルがポリゴンモデルで表されるVRMLファイルで記述されている。ただし、力覚発生モデルのVRMLファイルの中において、視覚的な属性を表す色や光源、テクスチャ等の属性情報は取り除かれており、仮に属性情報が含まれていたとしても無視される。また、力覚シーン管理部108にはVRMLファイルで表される力覚発生モデルの位置および姿勢情報が格納されている。本実施例では、格納されているVRMLファイルは、力覚デバイスの把持部121aの力覚発生モデルのVRMLファイルおよび現実物体404に重ねて表示される自動車の力覚発生モデルのVRMLファイルである。力覚シーン管理部108のVRMLの位置および姿勢情報は、現実物体の位置姿勢計測部105または力覚デバイスの位置姿勢計測部106から送られてくる位置姿勢情報によって更新される。力覚シーン管理部108の情報は力覚計算部120によって参照される。
【0046】
本実施例においては、自動車の力覚発生モデルは、多数の部品の力覚発生モデルから構成されており、外装や内装の力覚発生モデルを含む。また、それぞれの力覚発生モデルは力覚発生対象フラグを付加情報として持っている。力覚発生対象フラグとは、それぞれの力覚発生モデルが力覚発生の対象になるかどうかを示すフラグである。このフラグがTrueに設定されていれば力覚発生の対象になることを、Falseに設定されていれば対象にならないことを示す。初期状態においては、すべての力覚発生モデルについてこのフラグはTrueに設定されている。
【0047】
本実施例においては、図9に示されるように、力覚デバイスの把持部121aを表す力覚発生モデル150の先端を、実際の形状よりも長く設定しておく。
【0048】
110aは力覚デバイスのCG描画部であり、ユーザ視点の位置姿勢計測部104から撮像部101の位置姿勢情報、CGシーン管理部107から三次元CGシーン情報を受信して、撮像部101の撮像範囲に収まる力覚デバイスのCG映像を生成する。生成したCG映像は映像合成部111に送信される。
【0049】
110bは仮想物体のCG描画部であり、ユーザ視点の位置姿勢計測部104から撮像部101の位置姿勢情報、CGシーン管理部107から三次元CGシーン情報を受信して、撮像部101の撮像範囲に収まる仮想物体のCG映像を生成する。生成したCG映像は映像合成部111に送信される。
【0050】
111は映像合成部であり、撮像部101から受信した撮影映像上に、力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bから受信したCG映像を上書きすることにより、合成映像を生成する。合成した合成映像は映像表示部102に送出される。
【0051】
120は力覚計算部であり、力覚シーン管理部108から力覚シーン情報を受信して、力覚デバイスの把持部121aに発生すべき力覚を計算する。ここで、力覚の情報は、発生する力の向きと強さによって表現される。計算した力覚情報は力覚デバイス本体121に送られる。
【0052】
121は図4にも示されている、力覚デバイスであり、力覚計算部120から力覚情報を受信して、力覚デバイスの把持部121aに力を発生させる。なお、本実施例では、力覚デバイスとして複数のエンコーダ付きの制御モータを内蔵して構成された機械式のものを利用している。ただし、任意方向に力を発生できるデバイスであればどのようなデバイスで構成されてもよく、たとえば糸の張力を用いた方式による力覚デバイスで構成されてもよい。また、本実施例では、力覚デバイス121はテーブル401上に配置されているが、配置場所に制限はなく、たとえばユーザの体に装着されるものであってもよい。
【0053】
力覚デバイス本体121は内部に独自のデバイス座標系を持っている。よって、力覚計算部120は、力の情報を力覚デバイス本体121の座標系に変換し、力覚デバイス本体121が力覚デバイスの把持部121aに力を発生させる際には、力の情報はこの力覚デバイスの座標系で伝えられる。
【0054】
以上、図3を参照して本実施例の構成を説明した。
【0055】
なお、図3に示したユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106,CGシーン管理部107,力覚シーン管理部108,力覚デバイスのCG描画部110a,仮想物体のCG描画部110b,映像合成部111および力覚計算部120の少なくとも一部を独立した装置で実現することも可能である。もしくは、それぞれの機能を実現するソフトウェアを、一つもしくは複数のコンピュータにインストールし、コンピュータのCPUでソフトウェアを実行することで、それぞれの機能を実現しても良い。本実施例では、各部はそれぞれソフトウェアにより実現され、同一のコンピュータにインストールされているものとする。
【0056】
図1は、ユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106,CGシーン管理部107,力覚シーン管理部108,力覚デバイスのCG描画部110a,仮想物体のCG描画部110b,映像合成部111,力覚計算部120及び130のそれぞれの機能を,ソフトウェアを実行することで実現するためのコンピュータの基本構成を示す図である。
【0057】
CPU1001は、RAM1002やROM1003に格納されたプログラムやデータを用いてコンピュータ全体の制御を行うと共に、ユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106,CGシーン管理部107,力覚シーン管理部108,力覚デバイスのCG描画部110a,仮想物体のCG描画部110b,映像合成部111および力覚計算部120のそれぞれの機能を実現するソフトウェアの実行を制御する。
【0058】
RAM1002は、外部記憶装置1007や記憶媒体ドライブ1008からロードされたプログラムやデータを一時的に記憶するエリアを備えると共に、CPU1001が各種の処理を行うために必要とするワークエリアを備える。
【0059】
ROM1003は、一般にコンピュータのプログラムや設定データなどが格納されている。キーボード1004、マウス1005は入力デバイスであり、操作者はこれらを用いて、各種の指示をCPU1001に入力することができる。
【0060】
表示部1006は、CRTや液晶ディスプレイなどにより構成されており、例えば、映像表示部102に表示している映像を表示することができる。
【0061】
外部記憶装置1007は、ハードディスクドライブなどの大容量情報記憶装置として機能する装置であって、ここにOS(オペレーティングシステム)やCPU1001が実行するプログラム等を保存する。また本実施例の説明において、既知であると説明する情報はここに保存されており、必要に応じてRAM1002にロードされる。
【0062】
記憶媒体ドライブ1008は、CD−ROMやDVD−ROMなどの記憶媒体に記憶されているプログラムやデータをCPU1001からの指示に従って読み出して、RAM1002や外部記憶装置1007に出力する。
【0063】
I/F1009は、撮像部101を接続するためのアナログビデオポートあるいはIEEE1394等のデジタル入出力ポート、位置姿勢センサ103および力覚デバイス本体121を接続するためのRS232CあるいはUSB等のシリアルポート等によって構成される。それぞれから入力したデータはI/F1009を介してRAM1002に取り込まれる。映像合成部111及びユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106および力覚計算部120の機能の一部は、I/F1009によって実現される。
【0064】
上述した各構成要素は、バス1010によって接続され、相互にデータの送受信がなされる。
【0065】
図2は本実施例の処理手順を示したフローチャートである。本フローチャートに関わるプログラムは外部記憶装置1007に記憶され、ユーザがキーボード1004、マウス1005を使ってシステムの開始を指示したときにCPU1001がそのプログラムを読み出し、実行する。以下、図面を参照しながら、本実施例の処理手順を説明する。
【0066】
S100はキャリブレーションステップである。S100では、ユーザ視点の位置姿勢計測部104、現実物体の位置姿勢計測部105および力覚デバイスの位置姿勢計測部106が、位置姿勢センサ103が出力する位置姿勢信号から位置姿勢情報を計算できるように、初期設定を行う。また、力覚計算部120が力覚デバイス本体121に発生させる力を計算するための初期設定を行う。
【0067】
ここで、S100中の処理手順について図12を用いて説明する。
【0068】
S100が開始されると、まずS1201が実行される。S1201は位置姿勢センサのキャリブレーションを行うステップである。図10はS1201およびS1202中の処理を説明するための図である。901は、本実施例における世界座標系を表す。世界座標系901はテーブル401の隅に沿って設定されている。世界座標系401を設定するため、S1201では、ユーザがキャリブレーション器具103zをテーブル401の隅に配置する。キャリブレーション器具103zは3個のマーカが付属された、世界座標系を設定するための器具である。キャリブレーション器具103zに付属された3個のマーカの位置関係は既知である。そして、位置姿勢センサのカメラ部103aはあらかじめ内部パラメータを測定された二つのカメラを内蔵している。よって、図示しない位置姿勢センサのキャリブレーションボタンを押すことで、世界座標系901を設定することができる。以降、位置姿勢センサ103が出力する位置姿勢信号は、全て世界座標系901を基準として計測されたものとなる。S1201が終了したら、S1202に進む。
【0069】
S1202はHMDのキャリブレーションである。このステップにおいては、ユーザがキャリブレーションマーカ902をテーブル401の隅、すなわち世界座標系901に沿って配置する。キャリブレーションマーカ902はあらかじめ定められた模様を表面に印刷された、定められた大きさの矩形の紙片である。HMD100に内蔵される撮像部101はあらかじめ内部パラメータを測定されているため、撮像部101が捉える映像中にキャリブレーションマーカ902の全体が捉えられていれば、世界座標系901における撮像部101の位置および姿勢を求めることができる。一方、HMD100にはマーカ部103bが付属しており、マーカ部103bの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード1004およびマウス1005を用いて、ユーザがS1202の実行を指示したとき、撮像部101が捉える映像から求められる撮像部101の位置姿勢をHc、位置姿勢センサから求められるマーカ部103bの位置姿勢をHs、マーカ部103bから見た撮像部101の相対的な位置姿勢をHoとすると、
Ho=Hs−1・Hc
となる。
【0070】
ここで求められたHoは、ユーザ視点の位置姿勢計測部104に伝えられる。S1202が終了したら、S1203に進む。
【0071】
S1203は現実物体のキャリブレーションである。図11はS1203およびS1205中の処理を説明するための図である。図11中の1102は、テーブル401上にあらかじめ定められた現実物体404のキャリブレーション位置であり、テーブル401にあらかじめシールとして貼られている。現実物体のキャリブレーション位置1102は現実物体404を正射影した形状になっている。S1204の際には、ユーザがこの現実物体のキャリブレーション位置1102上に一致するように現実物体404をあらかじめ定められた向きで置く。現実物体404にはマーカ部103dが付属しており、マーカ部103dの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード1004およびマウス1005を用いて、ユーザがS1203の実行を指示したとき、あらかじめ定められた世界座標系901における現実物体のキャリブレーション位置1102の位置姿勢をBd、位置姿勢センサから求められるマーカ部103dの位置姿勢をBs、マーカ部103dから見た現実物体404の中心の相対的な位置姿勢をBoとすると、
Bo=Bs−1・Bd
となる。ここで求められたBoは、現実物体の位置姿勢計測部105に伝えられる。S1203が終了したら、S1204に進む。
【0072】
S1204は力覚デバイスのキャリブレーションである。S1204の際には、ユーザがこの力覚デバイス本体121をテーブル401上のあらかじめ定められた位置に置く。世界座標系901から見た力覚デバイス座標系の位置姿勢をDwとして表すと、Dwはマニュアルによる計測や計算によって求められ、キーボード1004やマウス1005を用いて力覚計算部120に入力される。
【0073】
S1205は力覚デバイス把持部のキャリブレーションである。図11中の1101は、テーブル401上にあらかじめ定められた力覚デバイスの把持部121aのキャリブレーション位置であり、テーブル401にあらかじめシールとして貼られている。力覚デバイスの把持部のキャリブレーション位置1101は力覚デバイスの把持部121aを正射影した形状になっている。S1205の際には、ユーザがこの力覚デバイスの把持部のキャリブレーション位置1101上にぴったりと一致するようにあらかじめ定められた向きで力覚デバイスの把持部121aを置く。力覚デバイスの把持部121aにはマーカ部103cが付属しており、マーカ部103cの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード1004およびマウス1005を用いて、ユーザがS1203の実行を指示したとき、あらかじめ定められた世界座標系901における力覚デバイスの把持部121aのキャリブレーション位置1101の位置姿勢をPd、位置姿勢センサから求められるマーカ部103cの位置姿勢をPs、マーカ部103cから見た力覚デバイスの把持部121aの先端の相対的な位置姿勢をPoとすると、
Po=Ps−1・Pd
となる。ここで求められたPoは、力覚デバイスの位置姿勢計測部106に伝えられる。
【0074】
S1205が終了したら、S100が終了され、S101およびS140が実行される。S140内の処理に関しては、別の図を用いて後述する。S101は、現実空間撮像ステップである。このステップでは撮像部101が現実空間の映像を撮影する。撮影した映像は映像合成部111に送られる。ここで撮影される映像は、図5に示されるようなものである。図5中には、力覚デバイスの把持部121a,マーカ部103c,マーカ部103d,現実物体404が捉えられている。S101が終わると,S102,S103およびS104が並行して実行される。
【0075】
S102はユーザ視点の位置姿勢計測ステップである。ここでは、ユーザ視点の位置姿勢計測部104が位置姿勢センサ103から送られてきている位置姿勢信号のうち、HMD100に取り付けられたマーカ部103bの位置姿勢を表す信号を使って、撮像部101の位置姿勢情報を生成する。求める撮像部101の位置姿勢をH、位置姿勢センサ103から求められるマーカ部103bの位置姿勢信号をHsnとすると、
H=Hsn・Ho
となる。求められた撮像部101の位置姿勢情報は力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bに送られる。
【0076】
S103は現実物体の位置姿勢計測ステップである。ここでは、現実物体の位置姿勢計測部105が位置姿勢センサ103から送られてきている位置姿勢信号のうち、現実物体404に取り付けられたマーカ部103dの位置姿勢を表す信号を使って、現実物体404の中心の位置姿勢情報を生成する。求める現実物体404の位置姿勢をB、103から求められるマーカ部103dの位置姿勢信号をBsnとすると、
B=Bsn・Bo
となる。求められた現実物体404の位置姿勢情報はCGシーン管理部107および力覚シーン管理部108に送られる。
【0077】
S104は力覚デバイスの位置姿勢計測ステップである。ここでは、力覚デバイスの位置姿勢計測部106が位置姿勢センサ103から送られてきている位置姿勢信号のうち、力覚デバイスの把持部121aに取り付けられたマーカ部103cの位置姿勢を表す信号を使って、力覚デバイスの把持部121aの先端の位置姿勢情報を生成する。求める力覚デバイスの把持部121aの位置姿勢をP、位置姿勢センサ103から求められるマーカ部103cの位置姿勢信号をPsnとすると、
P=Psn・Po
となる。求められた力覚デバイスの把持部121aの位置姿勢情報はCGシーン管理部107および力覚シーン管理部108に送られる。
【0078】
S102、S103およびS104が終わったらS110およびS120が実行される。
【0079】
S110はCGシーンの変更ステップである。S110では、CGシーン管理部107に格納されているVRMLファイルの三次元CGモデルの位置および姿勢情報が更新される。すなわち、現実物体404の位置姿勢情報が自動車を表す三次元CGモデルのVRMLファイルの位置姿勢情報として格納され、力覚デバイスの把持部121aの位置姿勢情報が力覚デバイスの把持部121aを表すVRMLファイルの位置姿勢情報として格納される。S110が終わったら、S111aおよびS111bが実行される。
【0080】
S111aは力覚デバイスのCG描画ステップである。S111aでは、力覚デバイスのCG描画部110aが撮像部101の位置姿勢情報を用いて、撮像部101の視点から見える仮想空間中の力覚デバイスの把持部121aを表すCG映像を生成する。生成されたCG映像は映像合成部111に送出される。S111aでは、CGシーン管理部107に格納されている三次元CGモデルの情報が参照される。
【0081】
S111bは仮想物体のCG描画ステップである。S111bでは、仮想物体のCG描画部110bが撮像部101の位置姿勢情報を用いて、撮像部101の視点から見える仮想空間中の仮想物体を表すCG映像を生成する。生成されたCG映像は映像合成部111に送出される。S111bでは、CGシーン管理部107に格納されている三次元CGモデルの情報が参照される。また、このステップにおいては、半透明表示フラグがTrueになっている三次元CGモデルは半透明で描画する。
【0082】
S111aおよびS111bが終わったら、S112に進む。図6は、この時点で生成されるCG映像を説明する図である。図6中で、601は力覚デバイスの把持部121aを表す三次元CG、602は自動車を表す三次元CGを示している。
【0083】
CGシーン管理部107に格納されている力覚デバイスの把持部121aを表す三次元CGモデルは、前述のように、力覚デバイスの把持部121aの実際の長さよりも先端の長い。そのため、図6に示されるように、力覚デバイスの把持部121aを表す三次元CG601は、実写映像である図5中の力覚デバイスの把持部121aよりも先端が長く描画されている。
【0084】
S112は映像合成ステップである。S112では、まず撮像部101から送出されてきた撮影映像が映像合成部111の画像バッファに書き込まれる。次に、力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bから送出されてきたCG映像が画像バッファに上書きされる。この結果、撮影映像を背景上に、仮想物体が描画された合成映像が生成される。図7は、この時点で得られる合成映像を説明する図である。生成された合成映像は映像表示部102に送出される。S112が終わったら、S113が実行される。
【0085】
S113は映像表示ステップである。S113では、映像表示部102に合成映像を表示する。
【0086】
S120は力覚シーンの更新ステップである。S120では、力覚シーン管理部108に格納されている力覚シーンの更新がなされる。すなわち、現実物体404の位置姿勢情報が自動車を表す力覚発生モデルの位置姿勢情報として格納され、力覚デバイスの把持部121aの位置姿勢情報が力覚デバイスの把持部121aを表す力覚発生モデルの位置姿勢情報として格納される。
【0087】
S113およびS120が終わったら、S121が実行される。
【0088】
S121はフラグリセット判定ステップである。ユーザがキーボード1004、マウス1005を使って半透明表示フラグおよび力覚発生フラグをリセットすることを指示していれば、S122に進む。そうでない場合には、S130に進む。
【0089】
S122はフラグリセットステップである。ここでは、CGシーン管理部107において、仮想空間中に存在するすべての三次元CGモデルの半透明表示フラグをFalseに設定する。また、力覚シーン管理部108において、すべての力覚発生モデルの力覚発生フラグをTrueに設定する。S122が終了したら、S130に進む。
【0090】
S130は終了判定ステップである。ユーザがキーボード1004、マウス1005を使ってシステムの終了を指示していればプログラムを終了し、指示していなければS101に進む。
【0091】
以上、図2を参照して、本実施例における処理手順を説明した。
【0092】
ここで、S140中の処理手順について説明する。S140では力覚シーンの情報を用いて、力覚デバイス本体121に力覚を発生させる。一般に、力覚デバイスが1000Hz以下の更新レートで力覚を提示すると、ユーザは力覚の不連続性を感じると言われているため、S140中のS201からS206に至るループは、1000Hz以上の更新レートで実行する。S140は上記条件を満たす手法であればさまざまな手法で実行されてよいが、本実施例では、力覚デバイスを用いるシステムにおいて広く用いられているVirtual Proxy法とペナルティ法を用いる。Virtual Proxy法については非特許文献2に記されている。
【0093】
Virtual Proxy法は、力覚デバイスの先端を任意の半径を持った球体で表現し、その球体と力覚発生の対象となる仮想の物体との衝突を調べることで、力覚デバイスの先端に発生する力覚を計算するためのベクトルを求める手法である。
【0094】
図14を用いて、Virtual Proxy法について説明する。1401は仮想物体の表面を表す。1402は力覚デバイスの先端の位置を表し、力覚デバイスの先端が仮想物体の内部に入り込んでしまっている状態を示している。1403は、力覚デバイスが本来あるべき位置を表す、Virtual Proxyである。1404は、力覚デバイスに発生する力を計算するためのベクトルを表す。Virtual Proxy法では、このように、本来力覚デバイスのあるべき位置をVirtual Proxyとして表し、実際の位置と比較することで、簡単に力覚を計算することが出来る。また、ペナルティ法は、仮想物体間に発生する反力の強さを求める手法である。
【0095】
図8は、S140中の処理手順を説明するフローチャートである。S140が開始されると、まずS201が実行される。
【0096】
S201では力覚シーンの取得がなされる。ここでは、力覚計算部120が力覚シーン管理部108から力覚シーンを取得する。S201が終了すると、S202に進む。
【0097】
S202では、力覚計算部120において、力覚デバイスの位置姿勢が、現実物体の座標系における位置姿勢情報に変換される。Virtual Proxy法では、力覚デバイスの先端の座標は、力覚発生の対象となる物体の座標系で表現しなければならず、この場合、力覚発生の対象となる物体の座標系は、現実物体404の座標系である。現実物体404の座標系における力覚デバイスの位置姿勢をPbとすると、
Pb=B−1・P
となる。S202が終了すると、S203aに進む。
【0098】
S203aは、力覚計算ループの始まりである。これは、力覚計算を、本実施例で存在する力覚発生モデルの数だけループすることを表し、S209が終わった後のS203bで終了判定される。S203bではS204,S205,S206,S207,S208およびS209の処理が力覚発生モデルの数だけ繰り返したかどうかが判定され,もし繰り返したことが確認されたらS210に進む。
【0099】
S204は力覚発生フラグのチェックが行われる。現在のループで力覚計算の対象になっている力覚発生モデルの、力覚発生フラグがTrueであればS205に、FalseであればS203bに進む。
【0100】
S205では、力覚計算部120が求められたPbと、現在のループで力覚計算の対象になっている力覚発生モデルを用いて、Virtual Proxy法を実行することで、力覚デバイスの把持部121aの先端に発生する力覚を計算するためのVirtual Proxyと力覚デバイスの位置との差を示すベクトルFwを計算する。S205が終了すると、S206に進む。
【0101】
S206では、力覚を計算するためのベクトルFwの判定が行われる。このFwの大きさがあらかじめ定められた定数である、通り抜け閾値J以上であるときにはS207に進む。Fwの大きさがJよりも小さいときにはS209に進む。この判定は、力覚デバイスが力覚発生モデルの内部にある程度の距離以上入り込んでしまった場合には、その力覚発生モデルを突き抜けて、もはやその力覚発生モデルからは力覚を発生させない、という判断をするための判定である。
【0102】
なお、ここでは、FwによってS207に行くかS209に行くかの判定を行ったが、この判定は別の方法でなされてもよい。たとえば、キーボード1004やマウス1005からの入力によって判定がなされてもよいし、S202で求めたPbの変化量、すなわち速度の大きさによって判定がなされてもよい。
【0103】
S207では、力覚発生フラグの設定が行われる。現在のループで力覚計算の対象になっている力覚モデルの力覚発生フラグをFalseに設定し、S208に進む。
【0104】
S208では、半透明表示フラグの設定をする。ここでは、力覚シーン管理部108が、CGシーン管理部107に、現在のループで力覚計算の対象になっている力覚発生モデルに対応する三次元CGモデルの半透明表示フラグをTrueに設定する。これにより、力覚を発生させない力覚発生モデルに対応する三次元CGモデルは、半透明で表示されることになる。S208が終わったらS203bに進む。
【0105】
S209では、S205で求められたベクトルを用いて、ペナルティ法で発生する力の強さを計算する。発生する力の強さをFとすると、
F=K・|Fw|
の式によって発生する力の強さを求める。ここで、Kはバネ定数であり、あらかじめ定められている。この式は、S205で求められたベクトルに比例する力、すなわちバネのような力が力覚デバイスに加えられることを表現している。ここまでで、発生する力のベクトルと強さ、すなわち力覚が求められた。S209が終わると、S203bに進む。
【0106】
S210は力覚合計ステップである。ここでは、S203aからS203bのループ中で計算された、力覚の情報をすべて合計する。合計された発生する力の情報は、力覚デバイス本体121に送られる。S210が終了すると、S211に進む。
【0107】
S211では、力覚の力覚デバイス座標系への変換が行われる。このステップでは、力覚計算部120が計算した世界座標系901における発生する力の情報を、力覚デバイス座標系における力の情報に変更する。力覚デバイス座標系における力の三自由度のベクトルFdは、世界座標系901から見た力覚デバイス座標系の位置姿勢Dwを用いて、
Fd=Dw−1・Fw
で表される。計算されたFd、および先に計算されたFは力覚デバイス本体121に送られる。S211が終わるとS212に進む。
【0108】
S212では、力覚提示が行われる。このステップでは、力覚デバイス本体121が力覚計算部120から得た発生する力の情報を取得し、その力覚デバイスの把持部121aにその力を発生させる。S212が終了すると、S213に進む。
【0109】
S213では、ユーザがキーボード1004、マウス1005を使ってシステムの終了を指示していればプログラムを終了し、指示していなければS201に進む。
【0110】
以上、図8を参照して、本実施例のS140における処理手順を説明した。
【0111】
本実施例によって、図13に示されるようなユーザの操作が可能になる。図13は、図7に示される状態から、ユーザがさらに力覚デバイスの把持部121aを自動車の内部に押し付けた結果として表示される状態を示している。図13において、1301は半透明に表示されている自動車の外装の三次元CGモデル、1302は半透明に表示されている自動車の外装の三次元CGモデル1301が半透明となったことによって見えるようになった、自動車に内装される仮想の椅子を示している。図13において、ユーザは力覚デバイスの把持部を表す三次元CG601で仮想の椅子1302に触れている。本実施例では、半透明に表示されている自動車の外装の三次元CGモデル1301の位置には、現実物体である自動車の模型が存在するわけであるから、自動車の模型と力覚デバイスが物理的に干渉してしまうため、自動車の模型の内部に触れることはできないはずである。しかし、本実施例では、力覚デバイスの把持部121aに、より先端の長い力覚デバイスの把持部を表す三次元CG601および力覚モデルを重畳している。よって、物理的干渉を起こさずに、力覚デバイスの把持部を表す三次元CGの先端を、自動車の模型の内部に侵入させることができる。そして、内部に侵入した力覚デバイスの把持部を表す三次元CGと、自動車の模型の内部の三次元CGとを用いて、力覚を計算する。これらのことにより、ユーザにあたかも現実物体の内部に触れられるかのような感覚を提示することが可能である。
【0112】
さらに、本実施例では、S206〜S208の処理により、把持部の位置に応じて、自動的に、自動車模型の三次元CGモデルの表示と、自動車模型に関連する力覚シーンを制御している。よって、ユーザは、把持部の位置に応じて自動的に自動車の模型の内部を操作することできる。
【0113】
また、ユーザが力覚デバイスの把持部121aを自動車の外に出し、キーボード1004、マウス1005を使って半透明表示フラグおよび力覚発生フラグをリセットすることを指示すれば、ユーザは再び自動車の外装に触れることができるようになる。本実施例では、半透明表示フラグおよび力覚発生フラグのリセットはユーザのマニュアル指示に応じて行う構成にしている。ユーザが把持部の先端を自動車の内部に侵入させた場合は、ユーザが内部を操作したいという意図をもっていると判断することができる。しかし、ユーザが把持部の先端を自動車の外部に移した場合は、ユーザが内部の操作を終了したいという意図をもっているとは判断することができない。そこで、本実施例では、リセットについてはユーザのマニュアル指示に応じて行う。これにより、自動車模型の外部に把持部を移すことにより、表示が変化してしまうことを防ぐことができる。これにより、把持部の位置に応じて、表示がめまぐるしく変化することを防ぐことができる。
【0114】
本実施例ではHMD100が撮像部101と映像表示部102を内蔵するビデオシースルー型のHMDであるものとしたが、これはユーザに現実世界と仮想世界の双方を提示することのできるデバイスであればどのようなもので構成されてもよく、たとえば光学シースルー型のHMDで構成されてもよい。その場合、図3中の撮像部101は必要なくなり、図2中のS101およびS112のステップは実行されない。また、ユーザの頭部に装着されるデバイスで構成される必要もなく、たとえば据え置き型の半透過型ディスプレイで構成されてもよい。その場合は、図3中の撮像部101、ユーザ視点の位置姿勢計測部104は必要なくなり、図2中のS101、S112およびS102のステップは実行されない。また、本実施例ではHMD100は撮像部101と映像表示部102を一つずつ持つ、単眼型のHMDを使用するものとしたが、撮像部101と映像表示部102をそれぞれ二つずつ持つ複眼型のHMDを使用してもよく、その場合は、図2に示される処理が両眼のそれぞれについて行われることになる。
【実施例2】
【0115】
前述の実施例では、現実物体404を把持して動かすことによって、仮想の物体を動かした。しかしながら、これは本実施例の基本構成に必須の要件ではなく、現実物体404は固定されてあるものでもよい。
【0116】
その場合、図2のS103の処理は必要なくなり、図3の105の構成も必要なくなる。
【実施例3】
【0117】
前述の実施例では、力覚デバイスの把持部に対応する力覚発生モデルおよび三次元CGモデルはあらかじめ定められていた。しかしながら、この力覚発生モデルおよび三次元CGモデルは、ユーザの指示によって変更がなされてもよい。たとえば、キーボード1004やマウス100を用いて力覚発生モデルおよび三次元CGモデルの大きさや長さを変更したり、力覚デバイスの把持部との位置関係が変更されてよい。
【0118】
ユーザが指示を出す手段もキーボード1004やマウス1005ではなく、たとえば力覚デバイスの把持部にダイヤルなどの入力装置を設置し、操作してもよい。
【0119】
このようにユーザが力覚発生モデルをコントロールできるようにすることで、ユーザが、簡単に仮想物体の所望の部位を操作することが出来る。
【実施例4】
【0120】
前述の実施例では、図7や図13に示されるように、力覚デバイスの把持部に対応する三次元CGモデルによって、実際の力覚デバイスの把持部は見えなくなっていた。そのため、実際の把持部の形状と、それに対応する三次元CGモデルの形状の差がわからなくなっていた。
【0121】
本実施例では、力覚デバイスの把持部の特定の部分に関して、異なる仮想画像を生成することによって、上述の問題を解決することが出来る。たとえば、形状に差がある部分に関しては色を変更して表示したり、形状が共通している部分に関しては半透明で表示する。
【実施例5】
【0122】
本実施例では、図15に示されるように、現実物体が存在する部分が消去されたかのような効果を得るための方法について述べる。図15では、自動車の外装の三次元CGモデル1501から、タイヤの部分が消去されている。図15中の1502は、本来自動車のタイヤがあった部分であるが、本実施例においては、ここには自動車の三次元CGも、現実物体404の実写映像も表示されていない。
【0123】
まず、CGシーン管理部107に、あらかじめ背景となる三次元CGモデルを用意する。本実施例では、テーブル401の三次元CGモデルを用意する。この三次元CGモデルについては、形状、色のいずれについても、現実物に近いものにする。また、現実物体404と全く同じ形の三次元CGモデルを用意する。この三次元CGモデルについては、形状は現実物体404と全く同じものである必要であるが、色はどのように設定されていてもよい。
【0124】
本実施例では、S111bの仮想物体のCG描画の際に、半透明描画フラグがついている三次元CGモデルについては、初めから描画を行わない。
【0125】
また、本実施例では、仮想物体のCG描画ステップS111bの後に、図18のフローチャートに示される、背景CGの描画ステップを実行する。背景CGの描画ステップが開始されると、まず、S1801において、仮想背景が描画される。本実施例においては、テーブル401の三次元CGモデルが描画される。S1801が終わると、S1802が実行される。
【0126】
S1802では、S1801で描画した画像のステンシルバッファに、現実物体と同じ形の三次元CGモデルを描画する。ここで、ステンシルバッファとは、画像のピクセルごとに用意された特殊なバッファ領域のことである。図16は、この時点で得られるステンシルバッファを表現した図である。図16中の1601は、現実物体404と同じ形の三次元CGを表している。S1802が終わると、S1803に進む。
【0127】
S1803では、S1802で得られたステンシルバッファ領域から、すでにCGが描画された領域を消去する。図17は、この時点で得られるステンシルバッファを表現した図である。S1803が終わると、S1804に進む。
【0128】
S1804では、S1801で得られた仮想背景のうち、S1803で得られたステンシルバッファ以外の領域を消去する。
【0129】
S1804が終了したら、背景CGの描画ステップを終了する。ここで得られた背景CGは、S112において実写映像と合成される。
【0130】
本実施例で述べた手法を用いることによって、図15に示されるように、現実物体が存在する部分が消去されたかのような効果を得ることができる。
【図面の簡単な説明】
【0131】
【図1】本実施例をソフトウェアで実現するためのコンピュータの基本構成を示す図
【図2】実施例1における処理手順を説明するためのフローチャート
【図3】実施例1における構成を説明するブロック図
【図4】実施例1の外観を示した図
【図5】実施例1において、S101で撮影される映像を説明する図
【図6】実施例1において、S111aおよびS111bで生成されるCG映像を説明する図
【図7】実施例1において、S112で生成される合成映像を説明する図
【図8】実施例1において、S140中の処理手順を説明するフローチャート
【図9】実施例1を説明するための図
【図10】実施例1において、S1201およびS1202中の処理を説明するための図
【図11】実施例1において、S1203およびS1205中の処理を説明するための図
【図12】実施例1において、S100中の処理手順を説明するフローチャート
【図13】実施例1を説明するための図
【図14】Virtual Proxy法を説明するための図
【図15】実施例5を説明するための図
【図16】実施例5において、S1802で得られるステンシルバッファを表現した図
【図17】実施例5において、S1803で得られるステンシルバッファを表現した図
【図18】実施例5における処理手順を説明するためのフローチャート
【技術分野】
【0001】
本発明は、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するものに関する。
【背景技術】
【0002】
VR(バーチャルリアリティ)システムは、コンピュータの作り出す三次元CG(コンピュータ・グラフィクス)をHMD(ヘッドマウントディスプレイ)を装着したユーザに提示することで、仮想の空間をあたかも現実であるかのように感じさせるシステムである。HMDを利用したVRシステムでは、ユーザの頭部の動きに合わせてユーザに提示される三次元CGが変化するため、ユーザはあたかも自分の周囲に実際に三次元CGが存在しているかのように感じることができる。
【0003】
VRシステムでは、力覚デバイスと呼ばれる装置を用いて、ユーザに仮想の触感を与えることがある。力覚デバイスを用いることで、ユーザは実際には存在しない事物に仮想的に触っているかのような感触を感じることができる。力覚デバイスには機械式や糸の張力を用いた方式などさまざまな方式のものがある。(例えば非特許文献1)
また、近年、現実空間の映像に重ねて三次元CGを提示することで、VRでは見ることができなかった現実世界をユーザに提示する技術の開発もなされており、それらはMR(Mixed Reality、複合現実感)システムと呼ばれている(例えば、特許文献1参照)。
【0004】
MRシステムでは、HMD(ヘッドマウントディスプレイ)を用いることが一般的である。MRシステムでは、現実空間の画像と仮想空間の画像を合成して、HMDに表示することにより、複合現実感を実現する。MRシステムで用いるHMDの方式には半透過型のHMDに三次元CG等の画像を重畳する光学シースルー方式と、HMDに装着したビデオカメラで撮影した画像に三次元CG等の画像を合成した後、HMDに表示するビデオシースルー方式がある。
【0005】
MRシステムの用途としては、患者の体内の様子を透過しているように医師に提示する医療補助の用途や、工場において製品の組み立て手順を示すCGを実物に重ねて表示する作業補助の用途などが考えられている。
【0006】
MRシステムの一種として、特許文献2に示されるように、三次元CADデータから簡易的に試作された模型に重ねて、同じデータから作成された三次元CGを表示するものがある。この発明におけるシステムでは、ユーザは自らの手で三次元CGを動かすことができる。
【特許文献1】特開2001−195601号公報
【特許文献2】特開2005−107970号公報
【非特許文献1】田村博編「ヒューマン・インタフェース」オーム社,1998年5月30日,pp.238−241
【非特許文献2】Diego C.Ruspini et al,The Haptic Display of Complex Graphical Environments,SIGGRAPH 97 Proceedings,August 1997,pp.345−352.
【発明の開示】
【発明が解決しようとする課題】
【0007】
特許文献2に示される方法では,ユーザは実際には存在しない仮想の物体を見ながら、同じ形状の模型を手に持つことができる。つまり、仮想の物体を視覚的および力覚的に体感することができる。しかしながら、この方法では、ユーザが仮想の物体の内部に触れたり、一部を消したりといった感覚を得ることはできなかった。すなわち、現実に存在する模型の中にある仮想の物体に触れたり、現実に存在する模型の一部を消したりするような感覚を得ることはできなかった。
【0008】
本発明は、上記問題を解決するものであり、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示する際に、現実物体にかかわらず第二の仮想物体の内部に触れることができるようにすることを目的とする。
【課題を解決するための手段】
【0009】
本発明は、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、前記ユーザの視点の位置姿勢を取得する第一の取得工程と、前記力覚デバイスの位置姿勢を取得する第二の取得工程と、前記ユーザの視点の位置姿勢、前記力覚デバイスの位置姿勢および前記第一の仮想物体のコンピュータグラフィック情報に基づき、前記第一の仮想物体の第一の仮想画像を生成する第一仮想画像生成工程と、前記ユーザの視点の位置姿勢および前記第二の仮想物体のコンピュータグラフィック情報に基づき、前記第二の仮想物体の第二の仮想画像を生成する第二仮想画像生成工程と、前記第一の仮想画像および前記第二の仮想画像を現実空間の画像と合成し、ユーザに提示する提示工程とを有し、前記第二の仮想物体から受ける力覚は、前記第一の仮想物体の第一の力覚発生モデルと前記第二の仮想物体の第二の力覚発生モデルとを用いて求められ、前記第一の力覚発生モデルは前記第一の仮想物体のコンピュータグラフィック情報に対応し、該第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第一の仮想物体の形状が前記力覚デバイスの形状と異なっていることを特徴とする。
【発明の効果】
【0010】
本発明は、上記問題を解決するものであり、本発明によれば、第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示する際に、現実物体にかかわらず第二の仮想物体の内部に触れることができるようにすることができる。
【発明を実施するための最良の形態】
【0011】
以下、添付の図面を参照して本発明の好適な実施例について説明する。
【実施例1】
【0012】
本実施例の視覚および力覚提示システムでは、現実物体に重ねて自動車の三次元CGを合成し、ユーザの装着しているHMDに表示する。また、自動車の三次元CGと同じ形状の力覚を、力覚デバイスを通してユーザに提示する。
【0013】
図4は本実施例の外観を示した図である。
【0014】
100はHMDであり、ユーザの頭部に装着されて使用される。HMD100は撮像部および表示部を内蔵し、撮像部(カメラ)で撮影した映像に三次元CGを重ねた合成映像を表示部に表示する。HMD100に内蔵される撮像部はあらかじめ内部パラメータが測定されている。
【0015】
401はテーブルである。テーブルは部屋に固定されており、テーブル上で複合現実感を体験することが出来る。
【0016】
121は力覚デバイス本体、121aは力覚デバイスの把持部である。ユーザは、あらかじめ定められた範囲の分だけ、手で自由に力覚デバイスの把持部121aの位置や姿勢を動かすことができる。力覚デバイス本体121と力覚デバイスの把持部121aは機械的に接続され、力覚デバイス本体121が力覚デバイスの把持部121aを駆動することによって、力覚デバイスの把持部121aを把持するユーザに上下方向、左右方向、奥行き方向の三自由度の力を感じさせることができる。力覚デバイス本体121はテーブル401の上に固定されている。
【0017】
403はユーザの手である。説明のため、ユーザの体の手以外の部分は図中に示していない。
【0018】
404は現実物体であり、自動車の模型である。この自動車の模型は、本実施例で表示する自動車の仮想物体の外装と同じ形状をしている。この模型の作成は、光造形などのラピッドプロトタイプ装置などによって可能である。
【0019】
本実施例では現実物体である模型と仮想物体が同じ形状であるものとしたが、これは本実施例の基本構成に必須のではなく、現実物体の形状と仮想物体の形状が異なっていてもよい。
【0020】
また、素材もどのようなもので構成されてもよい。たとえば、模型や厚紙、電子機器、各種の道具や器具などで構成されるものとしてよい。また、内部を空洞にして中に異なる重さの重りを入れられるようにしてもよいし、大きさや形状など、物理的な属性を変えられるような機構を備えてもよい。
【0021】
103は位置姿勢を計測するための構成であり、カメラ部103a,マーカ部103b,103c,103dからなる。マーカ部103bはHMD100に、マーカ部103cは力覚デバイスの把持部121aに、マーカ部103dは現実物体404に取り付けられている。マーカ部103b,マーカ部103c,マーカ部103dはそれぞれ異なる形状をしており、位置姿勢センサのカメラ部103aに備えられた、内部パラメータをあらかじめ求められた二つのカメラによって撮像される。三角測量などの手法を用いて、二つのカメラの各々によって撮像された画像から、マーカ部103b,マーカ部103c,マーカ部103dの,カメラ部103aに対する相対的な位置および姿勢を求める。位置姿勢センサのカメラ部103aは部屋に固定されている。
【0022】
図3は本実施例の構成を示したブロック図である。以下、図3を参照しながら本実施例の構成について説明する。
【0023】
100は図4でも示されているユーザが装着するビデオシースルー型のHMDであり、撮像部101と映像表示部102を有する。なお、本実施例では撮像部101と映像表示部102がHMD100に内蔵されるものとしたが、これは本実施例の基本構成に必須の要件ではなく、撮像部101と映像表示部102はそれぞれ別の場所に配置されるものとしてもよい。
【0024】
101は撮像部であり、CCDカメラ、CMOSカメラなどの撮像デバイスによって構成される。撮像部101によって撮影された映像は映像合成部111に送られる。
【0025】
102は映像表示部であり、小型の液晶表示デバイス等で構成される。映像表示部102は映像合成部111から送られてきた合成映像を表示する。
【0026】
103は図4にも示されている、内蔵する撮像素子によりマーカを撮影することによって任意の物体の位置および姿勢を計測する位置姿勢センサである。位置姿勢センサ103はあらかじめマーカを付けた任意の物体の位置姿勢信号を、HMD100を装着したユーザ視点の位置姿勢計測部104、現実物体の位置姿勢計測部105および力覚デバイスの位置姿勢計測部106に出力する。
【0027】
なお、本実施例では一つの位置姿勢センサ103から104〜106それぞれに位置姿勢信号を出力する。しかし、これは本実施例の基本構成に必須の要件ではない。たとえばユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106のそれぞれに別の位置姿勢センサを設置してもよい。
【0028】
また、本実施例では位置姿勢センサ103は光学式センサによって構成されているが、位置姿勢センサ103はあらかじめ定めた任意の物体の位置および姿勢を計測できる装置であればどのような装置で構成されてもよい。たとえば、磁気式の位置姿勢センサによって構成されてもよい。つまり、現実空間中のこれら三つの測定対象の位置姿勢が計測することが出来れば、いかなる構成でも良い。
【0029】
本実施例では、これらの位置姿勢センサ103は位置をxyz座標系におけるx座標,y座標,z座標の形で出力する。また,姿勢をz軸中心の回転であるロール角,x軸中心の回転であるピッチ角,y軸中心の回転であるヨー角で出力し,ヨー回転,ピッチ回転,ロール回転の順で測定対象を回転させると測定対象の姿勢が得られる。なお,以下の説明においては,四行四列の行列で示すことができる位置および姿勢の情報を、アルファベットの記号,たとえばMなどで表現する。この行列の中身について,位置姿勢センサ103によって得られた位置姿勢の値を例として説明する。
【0030】
位置姿勢センサによって得られるx座標,y座標,z座標の値をそれぞれx,y,zとすると、位置姿勢センサ103によって得られる位置を表す三次元ベクトルtは
【0031】
【数1】
【0032】
で表される。また、位置姿勢センサによって得られるロール角,ピッチ角,ヨー角の値をそれぞれr,p,yとすると,ロール角,ピッチ角,ヨー角から得られる三行三列の回転変換行列Rr,Rp,Ryは
【0033】
【数2】
【0034】
で表される。従って,姿勢を表す三行三列の回転変換行列Rは
【0035】
【数3】
【0036】
で表される。
【0037】
以上得られたtとRを用いて、位置姿勢センサから得られる位置と姿勢の両方を表現する四行四列の行列Mは、以下のように表現することができる。
【0038】
【数4】
【0039】
位置および姿勢がどのような形式で得られようと、上記のような四行四列の行列として表現できることは広く知られている。
【0040】
104はユーザ視点の位置姿勢計測部であり、位置姿勢センサ103からの位置姿勢信号を受信する。そして、ユーザが装着しているHMD100に取り付けられたマーカ部103bの位置姿勢を表す信号を使って、撮像部101のユーザ視点の位置姿勢情報を生成する。生成した位置姿勢情報は、HMDの映像表示に表示する映像中のCGの位置姿勢を算出するために、力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bに送られる。なお、本実施例においてはユーザ視点の位置姿勢計測部104の位置姿勢情報が位置姿勢センサ103のみから求められるものとした。しかし、それに加えて、撮像部101の撮影した映像を用いて位置姿勢情報の補正を行ってもよい。また、撮像部101の撮影した映像のみを用いてユーザ視点の位置姿勢計測部104の位置姿勢情報を求める構成としてもよい。
【0041】
105は現実物体の位置姿勢計測部であり、位置姿勢センサ103からの位置姿勢信号を受信する。そして、現実物体404に取り付けられたマーカ部103dの位置姿勢を表す信号を使って、現実物体404の位置姿勢情報を生成する。生成した現実物体404の位置姿勢情報はCGシーン管理部107および力覚シーン管理部108に送られる。
【0042】
106は力覚デバイスの位置姿勢計測部であり、位置姿勢センサ103からの位置姿勢信号を受信する。そして、力覚デバイスの把持部121aに取り付けられたマーカ部103cの位置姿勢を表す信号を使って、力覚デバイスの把持部121aの位置姿勢情報を生成する。生成した力覚デバイスの把持部121aの位置姿勢情報はCGシーン管理部107および力覚シーン管理部108に送られる。
【0043】
107はCGシーン管理部である。CGシーン管理部107は三次元CGの生成に必要な、仮想物体の三次元CGモデルの情報を管理する。三次元CGモデルの情報はさまざまな形式で記述することができるが、本実施例の三次元CGモデルの情報は、三次元CGモデルがポリゴンモデルで表されるVRML(Virtual Reality Modeling Language)ファイルで表現されている。また、VRMLファイルには、三次元CGモデルの位置および姿勢情報が格納されている。CGシーン管理部107に格納されているVRMLファイルは、力覚デバイスの把持部121aに重ねて表示される仮想物体の三次元CGモデルのVRMLファイルおよび現実物体404に重ねて表示される自動車の仮想物体の三次元CGモデルのVRMLファイルである。力覚デバイスの把持部121aに重ねて表示される仮想物体の三次元CGモデルのVRMLファイルは、力覚デバイスの位置姿勢計測部106から送られてくる位置姿勢情報によって更新される。自動車の仮想物体の三次元CGモデルのVRMLファイルは、現実物体の位置姿勢計測部105から送られてくる位置姿勢情報によって更新される。また、CGシーン管理部107の情報は力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bによって参照される。
【0044】
本実施例においては、自動車の三次元CGモデルは、多数の部品の三次元CGモデルから構成されており、外装や内装の三次元CGモデルを含む。また、それぞれの三次元CGモデルは半透明表示フラグを付加情報として持っている。半透明表示フラグとは、それぞれの三次元CGモデルが半透明表示の対象になるかどうかを示すフラグである。このフラグがTrueに設定されていれば半透明表示の対象になることを、Falseに設定されていれば対象にならないことを示す。初期状態においては、すべての三次元CGモデルについてこのフラグはFalseに設定されている。このフラグは、力覚シーン管理部108などから設定される。
【0045】
なお、本実施例においては、図9に示されるように、力覚デバイスの把持部121aを表す三次元CGモデル150の先端を、実際の形状よりも長く設定しておく。108は力覚シーン管理部である。力覚シーン管理部108は仮想物体間に発生する力の計算に必要な、仮想物体の力覚発生モデルの情報を管理する。力覚発生モデルの情報はさまざまな形式で記述することができるが、本実施例では、力覚発生モデルがポリゴンモデルで表されるVRMLファイルで記述されている。ただし、力覚発生モデルのVRMLファイルの中において、視覚的な属性を表す色や光源、テクスチャ等の属性情報は取り除かれており、仮に属性情報が含まれていたとしても無視される。また、力覚シーン管理部108にはVRMLファイルで表される力覚発生モデルの位置および姿勢情報が格納されている。本実施例では、格納されているVRMLファイルは、力覚デバイスの把持部121aの力覚発生モデルのVRMLファイルおよび現実物体404に重ねて表示される自動車の力覚発生モデルのVRMLファイルである。力覚シーン管理部108のVRMLの位置および姿勢情報は、現実物体の位置姿勢計測部105または力覚デバイスの位置姿勢計測部106から送られてくる位置姿勢情報によって更新される。力覚シーン管理部108の情報は力覚計算部120によって参照される。
【0046】
本実施例においては、自動車の力覚発生モデルは、多数の部品の力覚発生モデルから構成されており、外装や内装の力覚発生モデルを含む。また、それぞれの力覚発生モデルは力覚発生対象フラグを付加情報として持っている。力覚発生対象フラグとは、それぞれの力覚発生モデルが力覚発生の対象になるかどうかを示すフラグである。このフラグがTrueに設定されていれば力覚発生の対象になることを、Falseに設定されていれば対象にならないことを示す。初期状態においては、すべての力覚発生モデルについてこのフラグはTrueに設定されている。
【0047】
本実施例においては、図9に示されるように、力覚デバイスの把持部121aを表す力覚発生モデル150の先端を、実際の形状よりも長く設定しておく。
【0048】
110aは力覚デバイスのCG描画部であり、ユーザ視点の位置姿勢計測部104から撮像部101の位置姿勢情報、CGシーン管理部107から三次元CGシーン情報を受信して、撮像部101の撮像範囲に収まる力覚デバイスのCG映像を生成する。生成したCG映像は映像合成部111に送信される。
【0049】
110bは仮想物体のCG描画部であり、ユーザ視点の位置姿勢計測部104から撮像部101の位置姿勢情報、CGシーン管理部107から三次元CGシーン情報を受信して、撮像部101の撮像範囲に収まる仮想物体のCG映像を生成する。生成したCG映像は映像合成部111に送信される。
【0050】
111は映像合成部であり、撮像部101から受信した撮影映像上に、力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bから受信したCG映像を上書きすることにより、合成映像を生成する。合成した合成映像は映像表示部102に送出される。
【0051】
120は力覚計算部であり、力覚シーン管理部108から力覚シーン情報を受信して、力覚デバイスの把持部121aに発生すべき力覚を計算する。ここで、力覚の情報は、発生する力の向きと強さによって表現される。計算した力覚情報は力覚デバイス本体121に送られる。
【0052】
121は図4にも示されている、力覚デバイスであり、力覚計算部120から力覚情報を受信して、力覚デバイスの把持部121aに力を発生させる。なお、本実施例では、力覚デバイスとして複数のエンコーダ付きの制御モータを内蔵して構成された機械式のものを利用している。ただし、任意方向に力を発生できるデバイスであればどのようなデバイスで構成されてもよく、たとえば糸の張力を用いた方式による力覚デバイスで構成されてもよい。また、本実施例では、力覚デバイス121はテーブル401上に配置されているが、配置場所に制限はなく、たとえばユーザの体に装着されるものであってもよい。
【0053】
力覚デバイス本体121は内部に独自のデバイス座標系を持っている。よって、力覚計算部120は、力の情報を力覚デバイス本体121の座標系に変換し、力覚デバイス本体121が力覚デバイスの把持部121aに力を発生させる際には、力の情報はこの力覚デバイスの座標系で伝えられる。
【0054】
以上、図3を参照して本実施例の構成を説明した。
【0055】
なお、図3に示したユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106,CGシーン管理部107,力覚シーン管理部108,力覚デバイスのCG描画部110a,仮想物体のCG描画部110b,映像合成部111および力覚計算部120の少なくとも一部を独立した装置で実現することも可能である。もしくは、それぞれの機能を実現するソフトウェアを、一つもしくは複数のコンピュータにインストールし、コンピュータのCPUでソフトウェアを実行することで、それぞれの機能を実現しても良い。本実施例では、各部はそれぞれソフトウェアにより実現され、同一のコンピュータにインストールされているものとする。
【0056】
図1は、ユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106,CGシーン管理部107,力覚シーン管理部108,力覚デバイスのCG描画部110a,仮想物体のCG描画部110b,映像合成部111,力覚計算部120及び130のそれぞれの機能を,ソフトウェアを実行することで実現するためのコンピュータの基本構成を示す図である。
【0057】
CPU1001は、RAM1002やROM1003に格納されたプログラムやデータを用いてコンピュータ全体の制御を行うと共に、ユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106,CGシーン管理部107,力覚シーン管理部108,力覚デバイスのCG描画部110a,仮想物体のCG描画部110b,映像合成部111および力覚計算部120のそれぞれの機能を実現するソフトウェアの実行を制御する。
【0058】
RAM1002は、外部記憶装置1007や記憶媒体ドライブ1008からロードされたプログラムやデータを一時的に記憶するエリアを備えると共に、CPU1001が各種の処理を行うために必要とするワークエリアを備える。
【0059】
ROM1003は、一般にコンピュータのプログラムや設定データなどが格納されている。キーボード1004、マウス1005は入力デバイスであり、操作者はこれらを用いて、各種の指示をCPU1001に入力することができる。
【0060】
表示部1006は、CRTや液晶ディスプレイなどにより構成されており、例えば、映像表示部102に表示している映像を表示することができる。
【0061】
外部記憶装置1007は、ハードディスクドライブなどの大容量情報記憶装置として機能する装置であって、ここにOS(オペレーティングシステム)やCPU1001が実行するプログラム等を保存する。また本実施例の説明において、既知であると説明する情報はここに保存されており、必要に応じてRAM1002にロードされる。
【0062】
記憶媒体ドライブ1008は、CD−ROMやDVD−ROMなどの記憶媒体に記憶されているプログラムやデータをCPU1001からの指示に従って読み出して、RAM1002や外部記憶装置1007に出力する。
【0063】
I/F1009は、撮像部101を接続するためのアナログビデオポートあるいはIEEE1394等のデジタル入出力ポート、位置姿勢センサ103および力覚デバイス本体121を接続するためのRS232CあるいはUSB等のシリアルポート等によって構成される。それぞれから入力したデータはI/F1009を介してRAM1002に取り込まれる。映像合成部111及びユーザ視点の位置姿勢計測部104,現実物体の位置姿勢計測部105,力覚デバイスの位置姿勢計測部106および力覚計算部120の機能の一部は、I/F1009によって実現される。
【0064】
上述した各構成要素は、バス1010によって接続され、相互にデータの送受信がなされる。
【0065】
図2は本実施例の処理手順を示したフローチャートである。本フローチャートに関わるプログラムは外部記憶装置1007に記憶され、ユーザがキーボード1004、マウス1005を使ってシステムの開始を指示したときにCPU1001がそのプログラムを読み出し、実行する。以下、図面を参照しながら、本実施例の処理手順を説明する。
【0066】
S100はキャリブレーションステップである。S100では、ユーザ視点の位置姿勢計測部104、現実物体の位置姿勢計測部105および力覚デバイスの位置姿勢計測部106が、位置姿勢センサ103が出力する位置姿勢信号から位置姿勢情報を計算できるように、初期設定を行う。また、力覚計算部120が力覚デバイス本体121に発生させる力を計算するための初期設定を行う。
【0067】
ここで、S100中の処理手順について図12を用いて説明する。
【0068】
S100が開始されると、まずS1201が実行される。S1201は位置姿勢センサのキャリブレーションを行うステップである。図10はS1201およびS1202中の処理を説明するための図である。901は、本実施例における世界座標系を表す。世界座標系901はテーブル401の隅に沿って設定されている。世界座標系401を設定するため、S1201では、ユーザがキャリブレーション器具103zをテーブル401の隅に配置する。キャリブレーション器具103zは3個のマーカが付属された、世界座標系を設定するための器具である。キャリブレーション器具103zに付属された3個のマーカの位置関係は既知である。そして、位置姿勢センサのカメラ部103aはあらかじめ内部パラメータを測定された二つのカメラを内蔵している。よって、図示しない位置姿勢センサのキャリブレーションボタンを押すことで、世界座標系901を設定することができる。以降、位置姿勢センサ103が出力する位置姿勢信号は、全て世界座標系901を基準として計測されたものとなる。S1201が終了したら、S1202に進む。
【0069】
S1202はHMDのキャリブレーションである。このステップにおいては、ユーザがキャリブレーションマーカ902をテーブル401の隅、すなわち世界座標系901に沿って配置する。キャリブレーションマーカ902はあらかじめ定められた模様を表面に印刷された、定められた大きさの矩形の紙片である。HMD100に内蔵される撮像部101はあらかじめ内部パラメータを測定されているため、撮像部101が捉える映像中にキャリブレーションマーカ902の全体が捉えられていれば、世界座標系901における撮像部101の位置および姿勢を求めることができる。一方、HMD100にはマーカ部103bが付属しており、マーカ部103bの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード1004およびマウス1005を用いて、ユーザがS1202の実行を指示したとき、撮像部101が捉える映像から求められる撮像部101の位置姿勢をHc、位置姿勢センサから求められるマーカ部103bの位置姿勢をHs、マーカ部103bから見た撮像部101の相対的な位置姿勢をHoとすると、
Ho=Hs−1・Hc
となる。
【0070】
ここで求められたHoは、ユーザ視点の位置姿勢計測部104に伝えられる。S1202が終了したら、S1203に進む。
【0071】
S1203は現実物体のキャリブレーションである。図11はS1203およびS1205中の処理を説明するための図である。図11中の1102は、テーブル401上にあらかじめ定められた現実物体404のキャリブレーション位置であり、テーブル401にあらかじめシールとして貼られている。現実物体のキャリブレーション位置1102は現実物体404を正射影した形状になっている。S1204の際には、ユーザがこの現実物体のキャリブレーション位置1102上に一致するように現実物体404をあらかじめ定められた向きで置く。現実物体404にはマーカ部103dが付属しており、マーカ部103dの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード1004およびマウス1005を用いて、ユーザがS1203の実行を指示したとき、あらかじめ定められた世界座標系901における現実物体のキャリブレーション位置1102の位置姿勢をBd、位置姿勢センサから求められるマーカ部103dの位置姿勢をBs、マーカ部103dから見た現実物体404の中心の相対的な位置姿勢をBoとすると、
Bo=Bs−1・Bd
となる。ここで求められたBoは、現実物体の位置姿勢計測部105に伝えられる。S1203が終了したら、S1204に進む。
【0072】
S1204は力覚デバイスのキャリブレーションである。S1204の際には、ユーザがこの力覚デバイス本体121をテーブル401上のあらかじめ定められた位置に置く。世界座標系901から見た力覚デバイス座標系の位置姿勢をDwとして表すと、Dwはマニュアルによる計測や計算によって求められ、キーボード1004やマウス1005を用いて力覚計算部120に入力される。
【0073】
S1205は力覚デバイス把持部のキャリブレーションである。図11中の1101は、テーブル401上にあらかじめ定められた力覚デバイスの把持部121aのキャリブレーション位置であり、テーブル401にあらかじめシールとして貼られている。力覚デバイスの把持部のキャリブレーション位置1101は力覚デバイスの把持部121aを正射影した形状になっている。S1205の際には、ユーザがこの力覚デバイスの把持部のキャリブレーション位置1101上にぴったりと一致するようにあらかじめ定められた向きで力覚デバイスの把持部121aを置く。力覚デバイスの把持部121aにはマーカ部103cが付属しており、マーカ部103cの位置および姿勢は常に位置姿勢センサによって計測されている。今、キーボード1004およびマウス1005を用いて、ユーザがS1203の実行を指示したとき、あらかじめ定められた世界座標系901における力覚デバイスの把持部121aのキャリブレーション位置1101の位置姿勢をPd、位置姿勢センサから求められるマーカ部103cの位置姿勢をPs、マーカ部103cから見た力覚デバイスの把持部121aの先端の相対的な位置姿勢をPoとすると、
Po=Ps−1・Pd
となる。ここで求められたPoは、力覚デバイスの位置姿勢計測部106に伝えられる。
【0074】
S1205が終了したら、S100が終了され、S101およびS140が実行される。S140内の処理に関しては、別の図を用いて後述する。S101は、現実空間撮像ステップである。このステップでは撮像部101が現実空間の映像を撮影する。撮影した映像は映像合成部111に送られる。ここで撮影される映像は、図5に示されるようなものである。図5中には、力覚デバイスの把持部121a,マーカ部103c,マーカ部103d,現実物体404が捉えられている。S101が終わると,S102,S103およびS104が並行して実行される。
【0075】
S102はユーザ視点の位置姿勢計測ステップである。ここでは、ユーザ視点の位置姿勢計測部104が位置姿勢センサ103から送られてきている位置姿勢信号のうち、HMD100に取り付けられたマーカ部103bの位置姿勢を表す信号を使って、撮像部101の位置姿勢情報を生成する。求める撮像部101の位置姿勢をH、位置姿勢センサ103から求められるマーカ部103bの位置姿勢信号をHsnとすると、
H=Hsn・Ho
となる。求められた撮像部101の位置姿勢情報は力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bに送られる。
【0076】
S103は現実物体の位置姿勢計測ステップである。ここでは、現実物体の位置姿勢計測部105が位置姿勢センサ103から送られてきている位置姿勢信号のうち、現実物体404に取り付けられたマーカ部103dの位置姿勢を表す信号を使って、現実物体404の中心の位置姿勢情報を生成する。求める現実物体404の位置姿勢をB、103から求められるマーカ部103dの位置姿勢信号をBsnとすると、
B=Bsn・Bo
となる。求められた現実物体404の位置姿勢情報はCGシーン管理部107および力覚シーン管理部108に送られる。
【0077】
S104は力覚デバイスの位置姿勢計測ステップである。ここでは、力覚デバイスの位置姿勢計測部106が位置姿勢センサ103から送られてきている位置姿勢信号のうち、力覚デバイスの把持部121aに取り付けられたマーカ部103cの位置姿勢を表す信号を使って、力覚デバイスの把持部121aの先端の位置姿勢情報を生成する。求める力覚デバイスの把持部121aの位置姿勢をP、位置姿勢センサ103から求められるマーカ部103cの位置姿勢信号をPsnとすると、
P=Psn・Po
となる。求められた力覚デバイスの把持部121aの位置姿勢情報はCGシーン管理部107および力覚シーン管理部108に送られる。
【0078】
S102、S103およびS104が終わったらS110およびS120が実行される。
【0079】
S110はCGシーンの変更ステップである。S110では、CGシーン管理部107に格納されているVRMLファイルの三次元CGモデルの位置および姿勢情報が更新される。すなわち、現実物体404の位置姿勢情報が自動車を表す三次元CGモデルのVRMLファイルの位置姿勢情報として格納され、力覚デバイスの把持部121aの位置姿勢情報が力覚デバイスの把持部121aを表すVRMLファイルの位置姿勢情報として格納される。S110が終わったら、S111aおよびS111bが実行される。
【0080】
S111aは力覚デバイスのCG描画ステップである。S111aでは、力覚デバイスのCG描画部110aが撮像部101の位置姿勢情報を用いて、撮像部101の視点から見える仮想空間中の力覚デバイスの把持部121aを表すCG映像を生成する。生成されたCG映像は映像合成部111に送出される。S111aでは、CGシーン管理部107に格納されている三次元CGモデルの情報が参照される。
【0081】
S111bは仮想物体のCG描画ステップである。S111bでは、仮想物体のCG描画部110bが撮像部101の位置姿勢情報を用いて、撮像部101の視点から見える仮想空間中の仮想物体を表すCG映像を生成する。生成されたCG映像は映像合成部111に送出される。S111bでは、CGシーン管理部107に格納されている三次元CGモデルの情報が参照される。また、このステップにおいては、半透明表示フラグがTrueになっている三次元CGモデルは半透明で描画する。
【0082】
S111aおよびS111bが終わったら、S112に進む。図6は、この時点で生成されるCG映像を説明する図である。図6中で、601は力覚デバイスの把持部121aを表す三次元CG、602は自動車を表す三次元CGを示している。
【0083】
CGシーン管理部107に格納されている力覚デバイスの把持部121aを表す三次元CGモデルは、前述のように、力覚デバイスの把持部121aの実際の長さよりも先端の長い。そのため、図6に示されるように、力覚デバイスの把持部121aを表す三次元CG601は、実写映像である図5中の力覚デバイスの把持部121aよりも先端が長く描画されている。
【0084】
S112は映像合成ステップである。S112では、まず撮像部101から送出されてきた撮影映像が映像合成部111の画像バッファに書き込まれる。次に、力覚デバイスのCG描画部110aおよび仮想物体のCG描画部110bから送出されてきたCG映像が画像バッファに上書きされる。この結果、撮影映像を背景上に、仮想物体が描画された合成映像が生成される。図7は、この時点で得られる合成映像を説明する図である。生成された合成映像は映像表示部102に送出される。S112が終わったら、S113が実行される。
【0085】
S113は映像表示ステップである。S113では、映像表示部102に合成映像を表示する。
【0086】
S120は力覚シーンの更新ステップである。S120では、力覚シーン管理部108に格納されている力覚シーンの更新がなされる。すなわち、現実物体404の位置姿勢情報が自動車を表す力覚発生モデルの位置姿勢情報として格納され、力覚デバイスの把持部121aの位置姿勢情報が力覚デバイスの把持部121aを表す力覚発生モデルの位置姿勢情報として格納される。
【0087】
S113およびS120が終わったら、S121が実行される。
【0088】
S121はフラグリセット判定ステップである。ユーザがキーボード1004、マウス1005を使って半透明表示フラグおよび力覚発生フラグをリセットすることを指示していれば、S122に進む。そうでない場合には、S130に進む。
【0089】
S122はフラグリセットステップである。ここでは、CGシーン管理部107において、仮想空間中に存在するすべての三次元CGモデルの半透明表示フラグをFalseに設定する。また、力覚シーン管理部108において、すべての力覚発生モデルの力覚発生フラグをTrueに設定する。S122が終了したら、S130に進む。
【0090】
S130は終了判定ステップである。ユーザがキーボード1004、マウス1005を使ってシステムの終了を指示していればプログラムを終了し、指示していなければS101に進む。
【0091】
以上、図2を参照して、本実施例における処理手順を説明した。
【0092】
ここで、S140中の処理手順について説明する。S140では力覚シーンの情報を用いて、力覚デバイス本体121に力覚を発生させる。一般に、力覚デバイスが1000Hz以下の更新レートで力覚を提示すると、ユーザは力覚の不連続性を感じると言われているため、S140中のS201からS206に至るループは、1000Hz以上の更新レートで実行する。S140は上記条件を満たす手法であればさまざまな手法で実行されてよいが、本実施例では、力覚デバイスを用いるシステムにおいて広く用いられているVirtual Proxy法とペナルティ法を用いる。Virtual Proxy法については非特許文献2に記されている。
【0093】
Virtual Proxy法は、力覚デバイスの先端を任意の半径を持った球体で表現し、その球体と力覚発生の対象となる仮想の物体との衝突を調べることで、力覚デバイスの先端に発生する力覚を計算するためのベクトルを求める手法である。
【0094】
図14を用いて、Virtual Proxy法について説明する。1401は仮想物体の表面を表す。1402は力覚デバイスの先端の位置を表し、力覚デバイスの先端が仮想物体の内部に入り込んでしまっている状態を示している。1403は、力覚デバイスが本来あるべき位置を表す、Virtual Proxyである。1404は、力覚デバイスに発生する力を計算するためのベクトルを表す。Virtual Proxy法では、このように、本来力覚デバイスのあるべき位置をVirtual Proxyとして表し、実際の位置と比較することで、簡単に力覚を計算することが出来る。また、ペナルティ法は、仮想物体間に発生する反力の強さを求める手法である。
【0095】
図8は、S140中の処理手順を説明するフローチャートである。S140が開始されると、まずS201が実行される。
【0096】
S201では力覚シーンの取得がなされる。ここでは、力覚計算部120が力覚シーン管理部108から力覚シーンを取得する。S201が終了すると、S202に進む。
【0097】
S202では、力覚計算部120において、力覚デバイスの位置姿勢が、現実物体の座標系における位置姿勢情報に変換される。Virtual Proxy法では、力覚デバイスの先端の座標は、力覚発生の対象となる物体の座標系で表現しなければならず、この場合、力覚発生の対象となる物体の座標系は、現実物体404の座標系である。現実物体404の座標系における力覚デバイスの位置姿勢をPbとすると、
Pb=B−1・P
となる。S202が終了すると、S203aに進む。
【0098】
S203aは、力覚計算ループの始まりである。これは、力覚計算を、本実施例で存在する力覚発生モデルの数だけループすることを表し、S209が終わった後のS203bで終了判定される。S203bではS204,S205,S206,S207,S208およびS209の処理が力覚発生モデルの数だけ繰り返したかどうかが判定され,もし繰り返したことが確認されたらS210に進む。
【0099】
S204は力覚発生フラグのチェックが行われる。現在のループで力覚計算の対象になっている力覚発生モデルの、力覚発生フラグがTrueであればS205に、FalseであればS203bに進む。
【0100】
S205では、力覚計算部120が求められたPbと、現在のループで力覚計算の対象になっている力覚発生モデルを用いて、Virtual Proxy法を実行することで、力覚デバイスの把持部121aの先端に発生する力覚を計算するためのVirtual Proxyと力覚デバイスの位置との差を示すベクトルFwを計算する。S205が終了すると、S206に進む。
【0101】
S206では、力覚を計算するためのベクトルFwの判定が行われる。このFwの大きさがあらかじめ定められた定数である、通り抜け閾値J以上であるときにはS207に進む。Fwの大きさがJよりも小さいときにはS209に進む。この判定は、力覚デバイスが力覚発生モデルの内部にある程度の距離以上入り込んでしまった場合には、その力覚発生モデルを突き抜けて、もはやその力覚発生モデルからは力覚を発生させない、という判断をするための判定である。
【0102】
なお、ここでは、FwによってS207に行くかS209に行くかの判定を行ったが、この判定は別の方法でなされてもよい。たとえば、キーボード1004やマウス1005からの入力によって判定がなされてもよいし、S202で求めたPbの変化量、すなわち速度の大きさによって判定がなされてもよい。
【0103】
S207では、力覚発生フラグの設定が行われる。現在のループで力覚計算の対象になっている力覚モデルの力覚発生フラグをFalseに設定し、S208に進む。
【0104】
S208では、半透明表示フラグの設定をする。ここでは、力覚シーン管理部108が、CGシーン管理部107に、現在のループで力覚計算の対象になっている力覚発生モデルに対応する三次元CGモデルの半透明表示フラグをTrueに設定する。これにより、力覚を発生させない力覚発生モデルに対応する三次元CGモデルは、半透明で表示されることになる。S208が終わったらS203bに進む。
【0105】
S209では、S205で求められたベクトルを用いて、ペナルティ法で発生する力の強さを計算する。発生する力の強さをFとすると、
F=K・|Fw|
の式によって発生する力の強さを求める。ここで、Kはバネ定数であり、あらかじめ定められている。この式は、S205で求められたベクトルに比例する力、すなわちバネのような力が力覚デバイスに加えられることを表現している。ここまでで、発生する力のベクトルと強さ、すなわち力覚が求められた。S209が終わると、S203bに進む。
【0106】
S210は力覚合計ステップである。ここでは、S203aからS203bのループ中で計算された、力覚の情報をすべて合計する。合計された発生する力の情報は、力覚デバイス本体121に送られる。S210が終了すると、S211に進む。
【0107】
S211では、力覚の力覚デバイス座標系への変換が行われる。このステップでは、力覚計算部120が計算した世界座標系901における発生する力の情報を、力覚デバイス座標系における力の情報に変更する。力覚デバイス座標系における力の三自由度のベクトルFdは、世界座標系901から見た力覚デバイス座標系の位置姿勢Dwを用いて、
Fd=Dw−1・Fw
で表される。計算されたFd、および先に計算されたFは力覚デバイス本体121に送られる。S211が終わるとS212に進む。
【0108】
S212では、力覚提示が行われる。このステップでは、力覚デバイス本体121が力覚計算部120から得た発生する力の情報を取得し、その力覚デバイスの把持部121aにその力を発生させる。S212が終了すると、S213に進む。
【0109】
S213では、ユーザがキーボード1004、マウス1005を使ってシステムの終了を指示していればプログラムを終了し、指示していなければS201に進む。
【0110】
以上、図8を参照して、本実施例のS140における処理手順を説明した。
【0111】
本実施例によって、図13に示されるようなユーザの操作が可能になる。図13は、図7に示される状態から、ユーザがさらに力覚デバイスの把持部121aを自動車の内部に押し付けた結果として表示される状態を示している。図13において、1301は半透明に表示されている自動車の外装の三次元CGモデル、1302は半透明に表示されている自動車の外装の三次元CGモデル1301が半透明となったことによって見えるようになった、自動車に内装される仮想の椅子を示している。図13において、ユーザは力覚デバイスの把持部を表す三次元CG601で仮想の椅子1302に触れている。本実施例では、半透明に表示されている自動車の外装の三次元CGモデル1301の位置には、現実物体である自動車の模型が存在するわけであるから、自動車の模型と力覚デバイスが物理的に干渉してしまうため、自動車の模型の内部に触れることはできないはずである。しかし、本実施例では、力覚デバイスの把持部121aに、より先端の長い力覚デバイスの把持部を表す三次元CG601および力覚モデルを重畳している。よって、物理的干渉を起こさずに、力覚デバイスの把持部を表す三次元CGの先端を、自動車の模型の内部に侵入させることができる。そして、内部に侵入した力覚デバイスの把持部を表す三次元CGと、自動車の模型の内部の三次元CGとを用いて、力覚を計算する。これらのことにより、ユーザにあたかも現実物体の内部に触れられるかのような感覚を提示することが可能である。
【0112】
さらに、本実施例では、S206〜S208の処理により、把持部の位置に応じて、自動的に、自動車模型の三次元CGモデルの表示と、自動車模型に関連する力覚シーンを制御している。よって、ユーザは、把持部の位置に応じて自動的に自動車の模型の内部を操作することできる。
【0113】
また、ユーザが力覚デバイスの把持部121aを自動車の外に出し、キーボード1004、マウス1005を使って半透明表示フラグおよび力覚発生フラグをリセットすることを指示すれば、ユーザは再び自動車の外装に触れることができるようになる。本実施例では、半透明表示フラグおよび力覚発生フラグのリセットはユーザのマニュアル指示に応じて行う構成にしている。ユーザが把持部の先端を自動車の内部に侵入させた場合は、ユーザが内部を操作したいという意図をもっていると判断することができる。しかし、ユーザが把持部の先端を自動車の外部に移した場合は、ユーザが内部の操作を終了したいという意図をもっているとは判断することができない。そこで、本実施例では、リセットについてはユーザのマニュアル指示に応じて行う。これにより、自動車模型の外部に把持部を移すことにより、表示が変化してしまうことを防ぐことができる。これにより、把持部の位置に応じて、表示がめまぐるしく変化することを防ぐことができる。
【0114】
本実施例ではHMD100が撮像部101と映像表示部102を内蔵するビデオシースルー型のHMDであるものとしたが、これはユーザに現実世界と仮想世界の双方を提示することのできるデバイスであればどのようなもので構成されてもよく、たとえば光学シースルー型のHMDで構成されてもよい。その場合、図3中の撮像部101は必要なくなり、図2中のS101およびS112のステップは実行されない。また、ユーザの頭部に装着されるデバイスで構成される必要もなく、たとえば据え置き型の半透過型ディスプレイで構成されてもよい。その場合は、図3中の撮像部101、ユーザ視点の位置姿勢計測部104は必要なくなり、図2中のS101、S112およびS102のステップは実行されない。また、本実施例ではHMD100は撮像部101と映像表示部102を一つずつ持つ、単眼型のHMDを使用するものとしたが、撮像部101と映像表示部102をそれぞれ二つずつ持つ複眼型のHMDを使用してもよく、その場合は、図2に示される処理が両眼のそれぞれについて行われることになる。
【実施例2】
【0115】
前述の実施例では、現実物体404を把持して動かすことによって、仮想の物体を動かした。しかしながら、これは本実施例の基本構成に必須の要件ではなく、現実物体404は固定されてあるものでもよい。
【0116】
その場合、図2のS103の処理は必要なくなり、図3の105の構成も必要なくなる。
【実施例3】
【0117】
前述の実施例では、力覚デバイスの把持部に対応する力覚発生モデルおよび三次元CGモデルはあらかじめ定められていた。しかしながら、この力覚発生モデルおよび三次元CGモデルは、ユーザの指示によって変更がなされてもよい。たとえば、キーボード1004やマウス100を用いて力覚発生モデルおよび三次元CGモデルの大きさや長さを変更したり、力覚デバイスの把持部との位置関係が変更されてよい。
【0118】
ユーザが指示を出す手段もキーボード1004やマウス1005ではなく、たとえば力覚デバイスの把持部にダイヤルなどの入力装置を設置し、操作してもよい。
【0119】
このようにユーザが力覚発生モデルをコントロールできるようにすることで、ユーザが、簡単に仮想物体の所望の部位を操作することが出来る。
【実施例4】
【0120】
前述の実施例では、図7や図13に示されるように、力覚デバイスの把持部に対応する三次元CGモデルによって、実際の力覚デバイスの把持部は見えなくなっていた。そのため、実際の把持部の形状と、それに対応する三次元CGモデルの形状の差がわからなくなっていた。
【0121】
本実施例では、力覚デバイスの把持部の特定の部分に関して、異なる仮想画像を生成することによって、上述の問題を解決することが出来る。たとえば、形状に差がある部分に関しては色を変更して表示したり、形状が共通している部分に関しては半透明で表示する。
【実施例5】
【0122】
本実施例では、図15に示されるように、現実物体が存在する部分が消去されたかのような効果を得るための方法について述べる。図15では、自動車の外装の三次元CGモデル1501から、タイヤの部分が消去されている。図15中の1502は、本来自動車のタイヤがあった部分であるが、本実施例においては、ここには自動車の三次元CGも、現実物体404の実写映像も表示されていない。
【0123】
まず、CGシーン管理部107に、あらかじめ背景となる三次元CGモデルを用意する。本実施例では、テーブル401の三次元CGモデルを用意する。この三次元CGモデルについては、形状、色のいずれについても、現実物に近いものにする。また、現実物体404と全く同じ形の三次元CGモデルを用意する。この三次元CGモデルについては、形状は現実物体404と全く同じものである必要であるが、色はどのように設定されていてもよい。
【0124】
本実施例では、S111bの仮想物体のCG描画の際に、半透明描画フラグがついている三次元CGモデルについては、初めから描画を行わない。
【0125】
また、本実施例では、仮想物体のCG描画ステップS111bの後に、図18のフローチャートに示される、背景CGの描画ステップを実行する。背景CGの描画ステップが開始されると、まず、S1801において、仮想背景が描画される。本実施例においては、テーブル401の三次元CGモデルが描画される。S1801が終わると、S1802が実行される。
【0126】
S1802では、S1801で描画した画像のステンシルバッファに、現実物体と同じ形の三次元CGモデルを描画する。ここで、ステンシルバッファとは、画像のピクセルごとに用意された特殊なバッファ領域のことである。図16は、この時点で得られるステンシルバッファを表現した図である。図16中の1601は、現実物体404と同じ形の三次元CGを表している。S1802が終わると、S1803に進む。
【0127】
S1803では、S1802で得られたステンシルバッファ領域から、すでにCGが描画された領域を消去する。図17は、この時点で得られるステンシルバッファを表現した図である。S1803が終わると、S1804に進む。
【0128】
S1804では、S1801で得られた仮想背景のうち、S1803で得られたステンシルバッファ以外の領域を消去する。
【0129】
S1804が終了したら、背景CGの描画ステップを終了する。ここで得られた背景CGは、S112において実写映像と合成される。
【0130】
本実施例で述べた手法を用いることによって、図15に示されるように、現実物体が存在する部分が消去されたかのような効果を得ることができる。
【図面の簡単な説明】
【0131】
【図1】本実施例をソフトウェアで実現するためのコンピュータの基本構成を示す図
【図2】実施例1における処理手順を説明するためのフローチャート
【図3】実施例1における構成を説明するブロック図
【図4】実施例1の外観を示した図
【図5】実施例1において、S101で撮影される映像を説明する図
【図6】実施例1において、S111aおよびS111bで生成されるCG映像を説明する図
【図7】実施例1において、S112で生成される合成映像を説明する図
【図8】実施例1において、S140中の処理手順を説明するフローチャート
【図9】実施例1を説明するための図
【図10】実施例1において、S1201およびS1202中の処理を説明するための図
【図11】実施例1において、S1203およびS1205中の処理を説明するための図
【図12】実施例1において、S100中の処理手順を説明するフローチャート
【図13】実施例1を説明するための図
【図14】Virtual Proxy法を説明するための図
【図15】実施例5を説明するための図
【図16】実施例5において、S1802で得られるステンシルバッファを表現した図
【図17】実施例5において、S1803で得られるステンシルバッファを表現した図
【図18】実施例5における処理手順を説明するためのフローチャート
【特許請求の範囲】
【請求項1】
第一の仮想物体が重畳された力覚デバイスを用いて,現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、
前記ユーザの視点の位置姿勢を取得する第一の取得工程と、
前記力覚デバイスの位置姿勢を取得する第二の取得工程と、
前記ユーザの視点の位置姿勢、前記力覚デバイスの位置姿勢および前記第一の仮想物体のコンピュータグラフィック情報に基づき、前記第一の仮想物体の第一の仮想画像を生成する第一仮想画像生成工程と、
前記ユーザの視点の位置姿勢および前記第二の仮想物体のコンピュータグラフィック情報に基づき、前記第二の仮想物体の第二の仮想画像を生成する第二仮想画像生成工程と、
前記第一の仮想画像および前記第二の仮想画像を現実空間の画像と合成し、ユーザに提示する提示工程とを有し、
前記第二の仮想物体から受ける力覚は、前記第一の仮想物体の第一の力覚発生モデルと前記第二の仮想物体の第二の力覚発生モデルとを用いて求められ、
前記第一の力覚発生モデルは前記第一の仮想物体のコンピュータグラフィック情報に対応し、
該第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第一の仮想物体の形状が前記力覚デバイスの形状と異なっていることを特徴とする情報処理方法。
【請求項2】
更に、ユーザの指示に基づき、前記第一の力覚発生モデルと前記第二の力覚発生モデルとを設定する設定工程を有することを特徴とする請求項1に記載の情報処理方法。
【請求項3】
前記第一仮想画像生成工程は、前記力覚デバイスの特定部と該特定部以外の部分では、異なる方法で前記第一の仮想画像を生成することを特徴とする請求項1に記載の情報処理方法。
【請求項4】
前記第二の力覚発生モデルは前記第二の仮想物体のコンピュータグラフィック情報に対応し、
前記第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第二の仮想物体の形状が前記現実物体の形状と異なっていることを特徴とする請求項1に記載の情報処理方法。
【請求項5】
更に、前記現実物体の一部もしくは全部を消去するように、現実空間の背景を表すCGを描画する背景CG描画工程を有することを特徴とする請求項1に記載の情報処理方法。
【請求項6】
前記第二の仮想物体から受ける力覚は、前記第一の仮想物体の第一の力覚発生モデルと前記第二の仮想物体の第二の力覚発生モデルとを用いて、virtual proxy法により求めることを特徴とする請求項1に記載の情報処理方法。
【請求項7】
第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳される第二の仮想物体から受ける力覚をユーザに提示するための情報処理装置であって、
前記ユーザの視点の位置姿勢を取得する第一の取得手段と、
前記力覚デバイスの位置姿勢を取得する第二の取得手段と、
前記ユーザの視点の位置姿勢、前記力覚デバイスの位置姿勢および前記第一の仮想物体のコンピュータグラフィック情報に基づき、前記第一の仮想物体の第一の仮想画像を生成する第一仮想画像生成手段と、
前記ユーザの視点の位置姿勢および前記第二の仮想物体のコンピュータグラフィック情報に基づき、前記第二の仮想物体の第二の仮想画像を生成する第二仮想画像生成手段と、
前記第一の仮想画像および前記第二の仮想画像を現実空間の画像と合成し、ユーザに提示する提示手段とを有し、
前記第二の仮想物体から受ける力覚は、前記第一の仮想物体の第一の力覚発生モデルと前記第二の仮想物体の第二の力覚発生モデルとを用いて求められ、
前記第一の力覚発生モデルは前記第一の仮想物体のコンピュータグラフィック情報に対応し、
該第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第一の仮想物体の形状が前記力覚デバイスの形状と異なっていることを特徴とする情報処理装置。
【請求項8】
請求項1乃至6のいすれかに記載された情報処理方法をコンピュータ上で実現するためのプログラム。
【請求項9】
請求項1に記載された情報処理方法をコンピュータ上で実現するためのプログラムが格納されたコンピュータで読み取り可能な記録媒体。
【請求項1】
第一の仮想物体が重畳された力覚デバイスを用いて,現実物体に重畳された第二の仮想物体から受ける力覚をユーザに提示するための情報処理方法であって、
前記ユーザの視点の位置姿勢を取得する第一の取得工程と、
前記力覚デバイスの位置姿勢を取得する第二の取得工程と、
前記ユーザの視点の位置姿勢、前記力覚デバイスの位置姿勢および前記第一の仮想物体のコンピュータグラフィック情報に基づき、前記第一の仮想物体の第一の仮想画像を生成する第一仮想画像生成工程と、
前記ユーザの視点の位置姿勢および前記第二の仮想物体のコンピュータグラフィック情報に基づき、前記第二の仮想物体の第二の仮想画像を生成する第二仮想画像生成工程と、
前記第一の仮想画像および前記第二の仮想画像を現実空間の画像と合成し、ユーザに提示する提示工程とを有し、
前記第二の仮想物体から受ける力覚は、前記第一の仮想物体の第一の力覚発生モデルと前記第二の仮想物体の第二の力覚発生モデルとを用いて求められ、
前記第一の力覚発生モデルは前記第一の仮想物体のコンピュータグラフィック情報に対応し、
該第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第一の仮想物体の形状が前記力覚デバイスの形状と異なっていることを特徴とする情報処理方法。
【請求項2】
更に、ユーザの指示に基づき、前記第一の力覚発生モデルと前記第二の力覚発生モデルとを設定する設定工程を有することを特徴とする請求項1に記載の情報処理方法。
【請求項3】
前記第一仮想画像生成工程は、前記力覚デバイスの特定部と該特定部以外の部分では、異なる方法で前記第一の仮想画像を生成することを特徴とする請求項1に記載の情報処理方法。
【請求項4】
前記第二の力覚発生モデルは前記第二の仮想物体のコンピュータグラフィック情報に対応し、
前記第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第二の仮想物体の形状が前記現実物体の形状と異なっていることを特徴とする請求項1に記載の情報処理方法。
【請求項5】
更に、前記現実物体の一部もしくは全部を消去するように、現実空間の背景を表すCGを描画する背景CG描画工程を有することを特徴とする請求項1に記載の情報処理方法。
【請求項6】
前記第二の仮想物体から受ける力覚は、前記第一の仮想物体の第一の力覚発生モデルと前記第二の仮想物体の第二の力覚発生モデルとを用いて、virtual proxy法により求めることを特徴とする請求項1に記載の情報処理方法。
【請求項7】
第一の仮想物体が重畳された力覚デバイスを用いて、現実物体に重畳される第二の仮想物体から受ける力覚をユーザに提示するための情報処理装置であって、
前記ユーザの視点の位置姿勢を取得する第一の取得手段と、
前記力覚デバイスの位置姿勢を取得する第二の取得手段と、
前記ユーザの視点の位置姿勢、前記力覚デバイスの位置姿勢および前記第一の仮想物体のコンピュータグラフィック情報に基づき、前記第一の仮想物体の第一の仮想画像を生成する第一仮想画像生成手段と、
前記ユーザの視点の位置姿勢および前記第二の仮想物体のコンピュータグラフィック情報に基づき、前記第二の仮想物体の第二の仮想画像を生成する第二仮想画像生成手段と、
前記第一の仮想画像および前記第二の仮想画像を現実空間の画像と合成し、ユーザに提示する提示手段とを有し、
前記第二の仮想物体から受ける力覚は、前記第一の仮想物体の第一の力覚発生モデルと前記第二の仮想物体の第二の力覚発生モデルとを用いて求められ、
前記第一の力覚発生モデルは前記第一の仮想物体のコンピュータグラフィック情報に対応し、
該第一の仮想物体を用いて前記現実物体の内部を指示できるように、該第一の仮想物体の形状が前記力覚デバイスの形状と異なっていることを特徴とする情報処理装置。
【請求項8】
請求項1乃至6のいすれかに記載された情報処理方法をコンピュータ上で実現するためのプログラム。
【請求項9】
請求項1に記載された情報処理方法をコンピュータ上で実現するためのプログラムが格納されたコンピュータで読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2007−293413(P2007−293413A)
【公開日】平成19年11月8日(2007.11.8)
【国際特許分類】
【出願番号】特願2006−117732(P2006−117732)
【出願日】平成18年4月21日(2006.4.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成19年11月8日(2007.11.8)
【国際特許分類】
【出願日】平成18年4月21日(2006.4.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]