(57)【要約】【課題】触覚提示デバイスを用い、コンピュータ内の３次元モデルに触るアプリケーションにおいて、自ら動く物体に触る際に、ポインタが物体内部になってしまった場合の接触判定ができなかったという課題があり、高速に動態モデルとポインタの接触判定を行う技術が必要であった。【解決手段】キーフレームとなるポリゴンモデルを作成し（ステップ１００）、Ｏｃｔｒｅｅを作成する（ステップ１０２）ことにより接触判定の計算量を減らし、動態変形に対応したオフセットを利用（ステップ１０８）することにより、動態とポインタの接触判定を行って触覚を提示する（ステップ１２４）。【効果】高速に動態とポインタとの接触判定を行うことが可能となり、コンピュータ内に実現された動態に触覚提示デバイスを用いて触ることができるようになる。【選択図】　図１
2004081715.tif 000002
【特許請求の範囲】
【請求項１】
触覚提示手段を用い、コンピュータ内部の３次元形状の触覚を提示する方法において、
該３次元形状が動態である場合に、該動態の複数時点の形状の３次元モデルをキーフレームとして作成するステップと、
該複数の３次元モデルそれぞれについて、３次元モデルを構成するポリゴンを空間的階層的に分類したＯｃｔｒｅｅ（８分木）構造を作成するステップと、
該キーフレームにおける３次元モデルを用い、キーフレーム間のある時刻における該動態形状を補間により生成するステップと、
該Ｏｃｔｒｅｅから該触覚提示手段のポインタが存在する空間に属するポリゴンを抽出するステップと、
該抽出されたポリゴンと該触覚提示手段のポインタの接触判定を行う際に、該ポインタの位置を該動態の動きに合わせて仮想的に移動させるステップと、
該接触判定により接触があった場合に触覚を該触覚提示手段に提示するステップとを有することを特徴とした触覚提示方法。
【請求項２】
請求項１記載の触覚提示方法において、
さらに、補間によりキーフレームの３次元モデルから、キーフレーム間のある時刻における前記動態の画像（中間フレーム画像）を生成して表示するステップと、
該中間フレーム画像のレンダリング時間を予想し、画像表示時刻にレンダリングが間に合う中間フレームを求めてレンダリングするステップを有することを特徴とした触覚提示方法。
【請求項３】
請求項１記載の触覚提示方法であって、
さらに、前記動態の画像を表示する間隔と前記触覚提示を行う間隔を別々に設定するステップと、
画像表示については、画像表示時点における全ポリゴンの位置を補間により求めるステップと、
触覚提示については、前記触覚提示手段のポインタが存在するＯｃｔｒｅｅ空間に属するポリゴンについてのみ、触覚提示時点の位置を補間により求めるステップを有することを特徴とした触覚提示方法。
【請求項４】
請求項３記載の触覚提示方法において、
画像表示時点における全ポリゴンの位置を補間によって求めるステップは、
前記キーフレームにおける３次元モデルの２次補間により、該キーフレーム間のある時刻における３次元モデル形状を求めるステップを有することを特徴とした触覚提示方法。
【請求項５】
請求項１記載の触覚提示方法において、
キーフレームとなる動態の３次元モデルを作成するステップは、
実際に動態を計測する装置によりキーフレームとなる動態の形状を計測するステップと、
標準的な３次元モデルを該計測された動態形状にフィッティングさせるステップとからなることを特徴とした触覚提示方法。
【請求項６】
請求項１記載の触覚提示方法であって、
上記接触判定を行うステップにおいて、
該３次元モデルを構成するポリゴンと該触覚提示手段のポインタの接触はないと判定された場合に、
該ポリゴンを含む平面と該触覚提示手段のポインタが接触するかどうかを調べ、指定数以上の平面との接触が存在するかどうかを判定するステップと、
前記ステップにおいて指定数以上の平面との接触が存在した場合には、その直前の接触位置における触覚を触覚提示手段に提示するするステップとを有することを特徴とする触覚提示方法。
【請求項７】
触覚と物体形状を計算するための演算手段と、該演算手段による演算結果に基づいた触覚をユーザへ提示する手段と、該演算手段による演算結果に基づいた物体形状を表示するための表示手段からなる触覚提示装置において、
該演算手段は、記憶手段に記憶されたプログラムに基いて、該３次元形状が動態である場合に、該動態の複数時点の形状の３次元モデルをキーフレームとして作成し、該複数の３次元モデルそれぞれについて、３次元モデルを構成するポリゴンを空間的階層的に分類したＯｃｔｒｅｅ（８分木）構造を作成し、該キーフレームにおける３次元モデルを用い、キーフレーム間のある時刻における該動態形状を補間により生成し、該Ｏｃｔｒｅｅから該触覚提示手段のポインタが存在する空間に属するポリゴンを抽出し、該抽出されたポリゴンと該触覚提示手段のポインタの接触判定を行う際に、該ポインタの位置を該動態の動きに合わせて仮想的に移動させ、該接触判定により接触があった場合に触覚を該触覚提示手段に提示することを特徴とする触覚提示装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ内に表現された動く物体に触る感覚をシミュレーションする際の触覚提示方法に関し、主に定常的な自律動態として心臓を想定した触覚提示方法に関する。
【０００２】
【従来の技術】
本発明に関連する従来技術として、以下の文献が知られている。
▲１▼Ｃ．　Ｔａｒｒ，　Ｊ．　Ｋ．　Ｓａｌｉｓｂｕｒｙ，　“Ｈａｐｔｉｃ　Ｒｅｎｄｅｒｉｎｇ　ｏｆ　Ｖｉｓｃｏ−Ｅｌａｓｔｉｃ　ａｎｄ　Ｐｌａｓｔｉｃ　Ｓｕｒｆａｃｅｓ，”Ｐｒｏｃｅｅｄｉｎｇｓ　ｏｆ　ｔｈｅ　Ｓｅｃｏｎｄ　ＰＨＡＮＴｏＭ　Ｕｓｅｒｓ　Ｇｒｏｕｐ　Ｗｏｒｋｓｈｏｐ，　Ａ．Ｉ．　Ｔｅｃｈｎｉｃａｌ，Ｒｅｐｏｒｔ　Ｎｏ．　１６１７，　Ｍａｓｓａｃｈｕｓｅｔｔｓ　Ｉｎｓｔｉｔｕｔｅ　ｏｆ　Ｔｅｃｈｎｏｌｏｇｙ，　Ｃａｍｂｒｉｄｇｅ　Ｍａｓｓａｃｈｕｓｅｔｔｓ，　Ｊ．　Ｋ．　Ｓａｌｓｂｕｒｙ，　Ｍ．　Ａ．　Ｓｒｉｎｉｖａｓａｎ，　ｅｄｉｔｏｒｓ．　１９９７．
▲２▼Ａ．　Ｇｒｅｇｏｒｙ，　Ｍ．Ｃ．　Ｌｉｎ，　Ｓ．　Ｇｏｔｔｓｃｈａｌｋ，　ａｎｄ　Ｒ．　Ｔａｙｌｏｒ．　”Ａ　ｆｒａｍｅｗｏｒｋ　ｆｏｒ　ｆａｓｔ　ａｎｄ　ａｃｃｕｒａｔｅ　ｃｏｌｌｉｓｉｏｎ　ｄｅｔｅｃｔｉｏｎ　ｆｏｒ　ｈａｐｔｉｃ　ｉｎｔｅｒａｃｔｉｏｎ，”ＩＥＥＥ　Ｖｉｒｔｕａｌ　Ｒｅａｌｉｔｙ　Ｃｏｎｆｅｒｅｎｃｅ，　ｐｐ．　３８−４５，　１９９９．
触覚提示デバイスであるＳｅｎｓＡｂｌｅ社のＰＨＡＮＴＯＭを用いて、仮想物体をＰＨＡＮＴＯＭで触るのに応じて仮想物体が変形することを実現するための３次元サーフェスモデルについて文献▲１▼で述べられている。
また、ＰＨＡＮＴＯＭ用いて接触判定する際の計算を、ＯＢＢＴｒｅｅというボリューム境界の階層構造を利用することにより、高速に、かつ正確に行う方法について文献▲２▼に述べられている。
【０００３】
【発明が解決しようとする課題】
上記文献▲１▼▲２▼の従来技術は静止している物体を変形させることについて検討しているが、自ら動く物体に触ることは考慮されていない。
【０００４】
そのため、静止している物体を変形させる場合には考える必要がなかった、ポインタが物体変形により物体内部になってしまうことにより接触判定ができなくなっていたという課題が存在する。
。
【０００５】
本発明はそのような自律的に動く物体に触った感覚を発生させるための接触判定方法を提供することを主な目的としている。
【０００６】
【課題を解決するための手段】
上記の目的を達成するために、Ｏｃｔｒｅｅにより物体モデルを空間分割することにより接触判定するポリゴン数を減らし、さらに、物体の動きを考慮して、仮想的にポインタを物体外部へ移動させることにより接触判定を可能としたものである。
【０００７】
【発明の実施の形態】
以下、本発明の実施例として、図１、６を用いて、コンピュータ内に実現された動く心臓モデルを触覚デバイスにより触るアプリケーションを実現する１例について説明する。
【０００８】
図６は動く心臓を触っている例を示している。ＳｅｎｓＡｂｌｅ　Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＰＨＡＮＴｏＭなどの触覚提示デバイス５０をユーザの手５２で操作し、モニタ５４上に表示されたコンピュータ内に実現された動態である心臓モデル５６の表面について、ポインタ５８を動かすことにより触っているところを示している。触覚提示デバイス５０はモータなどの力により、仮想物体に触覚提示デバイスのポインタ（以下ポインタ）が触ったときに反力を返す機構を持っているものとする。
【０００９】
このアプリケーションを実現する方法について図１のフローに沿って説明する。
【００１０】
まず、心臓の動きが周期的であることを利用し、キーフレームの補間により動態を表現する。例えば心臓の動きが図２の状態１から状態５まで拡張するとき、その中間の状態３を状態１と状態５の形状を補間することにより形状を求めるものであるとする。そのため、まずキーフレームとなる状態１と状態５の心臓の３次元ポリゴンモデルを作成する（ステップ１００）。このモデルは心電図などに同期をかけて撮影したＸ線ＣＴやＭＲＩなどのデータを利用することにより、患者個人の形状や動きを反映することが可能である。
【００１１】
このとき、補間のためのキーフレームは、多くするほど患者個人の心臓の動きをより正確に反映することができる。
また、ポリゴンモデルがトポロジー的に一致している方が補間を容易に適用しやすいため、標準的な心臓モデルを作成しておき、それをＸ線ＣＴなどで撮影されたデータにマッチングするように変形させる方法により３次元モデルを作成してもよい。
【００１２】
次に、キーフレームとして作成した３次元ポリゴンモデル各々について、Ｏｃｔｒｅｅを作成する（ステップ１０２）。Ｏｃｔｒｅｅは図３に示すように、空間を階層的に８分割してゆき、その空間に属するポリゴンを階層的に記憶する公知の技術である。図３は３次元の心臓モデル１を含む直方体空間として１０を定義し、その直方体空間１０を８つの領域に分割する。例えば２段階のＯｃｔｒｅｅであれば、８分割された直方体空間の一つである空間１２に含まれるポリゴンの番号を空間１２のＯｃｔｒｅｅノードの下に記憶するものとする。もし、３段階のＯｃｔｒｅｅ構造を作成するのであれば、空間１２はさらに８つの空間に分割される。
【００１３】
このとき、分割された空間の境界をまたがったポリゴンについては、ポリゴンの一部でも存在する空間にはそのポリゴンが存在するとして重複して記憶するものとする。
【００１４】
この方法により、ポインタが空間１２にあるときには、Ｏｃｔｒｅｅを検索し、空間１２のＯｃｔｒｅｅノードに記憶されたポリゴンとの接触判定のみを行えば良いことになり、計算速度を向上できる。
続いて、触覚提示処理を開始する。触覚提示処理が終了するまで（ステップ１０４）ポインタとの接触判定と触覚提示を繰り返し、触覚提示処理の終了が入力されれば触覚提示を終了する。（ステップ１３０）。
【００１５】
ここで、画像を表示する周波数と触覚計算を行う周波数については違いがあることについて説明する。視覚的には３０Ｈｚ程度で表示すれば滑らかな動きが知覚されるが、触覚的には１０００Ｈｚ程度で触覚提示を行わなければ滑らかな動きとして知覚されない。そこで、上記の動態とポインタとの接触判定において、動態の動きを表示するのは３０Ｈｚとし、その表示間隔におけるある時刻において動態の形状をキーフレームの補間により求めて表示するものとし（ステップ１０５）、触覚に必要となる１０００Ｈｚの計算においては、動態とポインタの接触判定に必要となるＯｃｔｒｅｅノード内のポリゴンについてのみ補間計算により動態の形状を求めるものとする（ステップ１１９）。
【００１６】
本手法によれば、視覚的にも触覚的にも滑らかな動きを実現することができる。
【００１７】
また、キーフレーム間の形状（以下、中間形状）の補間には線形補間を用いても良いが、心臓の拍動のように、短時間での急激な形状変化は、１次の線形補間ではなく、２次補間を用いることにより実現することが可能である。キーフレーム間をｎ段階に分割するとき、段階ｍの３次元形状を求めることを考え、例えばある頂点座標のｘ座標値を求める場合、キーフレームにおける頂点のｘ座標値がｘ０，　ｘ１であったとすると、段階ｍにおけるｘ座標値ｘｍは以下の数１により求めることができる。
【００１８】
ｘｍ＝（（ｎ２−ｍ２）ｘ０＋ｍ２ｘ１）／ｎ２　（数式１）
さらに、上記中間形状を表示する際に、予定以上の時間がかかった場合には、次の中間形状を飛ばして、さらに次の中間形状を表示するようにすることで、全体としての拍動表示の周波数は一定とすることができる。
【００１９】
図８を用いて説明する。例えば、ステップ１０５における表示更新間隔を１／３０秒とし、拍動が１秒に１回として、最収縮期と最拡張期の２つをキーフレームとしたとき、２つのキーフレーム間を１５区間に分割して補間した中間形状を表示する必要がある。このときの各表示時刻をＴｎとするとき、例えば時刻Ｔ０でレンダリング予測時間８２を調べ、時刻Ｔ１以前に終わる予定であれば、時刻Ｔ１における形状のレンダリングを開始する（８０）。しかし実際には矢印８４のように１．５／３０秒かかってしまい、８６の時点で表示したとする。すると、次のレンダリング時間を予測し（矢印８８）、次に表示が間に合う時刻の形状として、時刻Ｔ２を飛ばして、時刻Ｔ３のときに表示すべき中間形状のレンダリングを開始する（９０）。表示は予定時刻よりも前にレンダリングが終了した場合には表示時刻まで待って表示し、予定時刻よりも遅くレンダリングが終了した場合には直ちに表示するものとする。レンダリング時間の予想は、直前のレンダリング時間を用いても良いし、過去のレンダリング時間の平均値などの統計量を用いても良い。以上の方法によれば、若干動きがぎこちなくなることはあるるが、拍動周期は一定に保った動態の表示が可能である。
【００２０】
このように、動態の動きをキーフレームの補間を利用して実現することにより、複雑な形状のモデルの動きを高速に計算することが可能であり、また、表示処理能力に応じてキーフレームの数を選択することでスケーラブルな対応が可能となる。
続いて、触覚提示の方法について説明をする。触覚提示をするためには、３次元ポリゴンモデルとポインタが接触したかの判定を行う必要がある。まずは、３次元ポリゴンモデルが動いていないことを想定して、接触判定を行う方法について図４を用いて説明する。
【００２１】
３次元ポリゴンモデルのあるポリゴン２０に着目して考える。ポリゴン２０は頂点２２、２４、２６からなり、その法線ベクトルＮが３４であるとする。このとき、ポインタが点Ｐ２６から点Ｑ２８へ移動したと考える。このとき、本来ポリゴン２０に接触する位置が点Ｒ３２であるとする。また、頂点２４から点Ｐ２６へのベクトルａを３６、頂点２４から点Ｑ２８へのベクトルｂを３８とする。
【００２２】
もし、図４のように点Ｐ２６と点Ｑ２８との間にポリゴン２０が存在するならば、内積を用いて以下の数２のようになるはずである。
【００２３】
ａ・Ｎ×ｂ・Ｎ≦０　（数式２）
もしも点Ｐ２６と点Ｑ２８との間にポリゴン２０が存在しないならば、数３のようになる。
【００２４】
ａ・Ｎ×ｂ・Ｎ＞００　（数式３）
以上のように、３次元ポリゴンモデルの形状が変わらなければ、数２、数３を用いて、ポインタの直前位置と、現在位置とから、接触判定を行うことができる。
【００２５】
次に、３次元ポリゴンモデルが自律的に動く場合へ対応する方法について図５を用いて説明する。
【００２６】
図５は心臓ポリゴンモデルの断面図である。左側は３次元心臓モデル１の表面に対して、ポインタが点Ａ４０の位置にあることを示している。右側は、３次元心臓モデルが状態１から状態３に変化し、心臓が拡張していることを示している。
【００２７】
このとき、点Ａ４０にもっとも近いポリゴンが状態１から状態３へ変化するときの移動量をポリゴン各頂点の平均値としたベクトルがｖ４４であるとし、点Ａ４０を点Ｂ４２の位置に仮想的に移動することを考える。
【００２８】
すると、ポインタを点Ａ４０の位置で保持していることを想定したとき、心臓が動くことにより、本来は接触が起こるはずなのに、図４を用いて説明した上記の方法では接触判定ができないことになる。そこで、心臓が動いた場合には、その動き量としてベクトルｖ４４を求め、点Ａ４０を仮想的に点Ｂ４２へ移動した点が直前のポインタ位置であったと仮定することにより、上記数２により接触判定を行うことが可能となる。
【００２９】
図１のフローチャートを使って上記手法を利用する方法を説明する。まず、ポインタの直前位置を取得し（ステップ１０６）、物体の変形によるオフセット移動量をポインタ直前位置に追加した位置を求める（ステップ１０８）。続いてポインタの現在位置を取得する（ステップ１１０）。現在時刻の物体の中間形状を生成するために必要となる２つのキーフレームを求め（ステップ１１２）、ポインタ現在位置の属するＯｃｔｒｅｅノードを求め（ステップ１１４）、各キーフレームのＯｃｔｒｅｅノードに含まれるポリゴンのリストを作成する（ステップ１１６）。ステップ１１６で作成したリスト内の全ポリゴンについて現時点の位置を補間により求め（ステップ１１９）、ポインタとの接触判定を数２、数３を用いて行い（ステップ１２０）、全てが終了したら（ステップ１１８）、ポリゴンとの接触があったかどうかを調べ（ステップ１２２）、接触した位置を求めて触覚を提示する（ステップ１２４）。
【００３０】
ここで、例えば触覚提示デバイスとしてＳｅｎｓＡｂｌｅ　Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＰＨＡＮＴＯＭを用いる場合には、ＧＨＯＳＴというライブラリを通じて、ポリゴンとの接触位置とポリゴンの法線ベクトルを指定することで、触覚提示デバイスを通して触覚を提示することが可能である。
ここでＯｃｔｒｅｅ境界における問題について図７を用いて説明する。
Ｏｃｔｒｅｅの最小レベルの直方体空間６０、６２があり、それぞれの直方体空間内に、ポリゴン６４、６６が存在しているとする。このとき、現在のポインタ位置が点Ｃ７０であり、動態の動きを考慮したオフセットを加えた直前のポインタ位置が点Ｄ７２であるとする。すると、この点Ｃ，点Ｄとポリゴンとの交点Ｅ６８は、ポリゴン６６上に存在することとなる。しかし、上記の手法によると、ポリゴンとの接触判定は、現在のポインタが存在するＯｃｔｒｅｅの直方体空間内にあるポリゴンとしか行わないため、ステップ１２２において接触がないと判定されてしまう。
【００３１】
そこでこのような場合には以下のような方法を取る。
ステップ１２２においてポリゴン内での接触がないと判定された場合においても、数２において、ポリゴンを含む平面とは接触するという判定があった場合（ステップ１２６）、触覚計算は１／１０００秒の間隔で行っていることを利用し、連続性を考慮することにより、オフセット前のポインタ直前位置を接触位置として触覚を提示する（ステップ１２８）。ここでステップ１２６における平面との接触判定は、その周囲のポリゴンのとの連続性を考慮すると、複数の平面との接触があるものと考えられるため、接触が検出された平面数があるしきい値以上ならば接触があるはずであるとすることにより、本当は接触しないはずのときに接触ありとしてしまう誤判定を減らすことが可能である。
【００３２】
本手法により、Ｏｃｔｒｅｅの境界においても、近似的に接触判定が可能となる。
【００３３】
ここで装置としての実施例を図６、９を用いて説明する。コンピュータ９２に、モニタ５４と触覚提示デバイス５０を接続する。コンピュータ内部の記憶装置９５には、上記の実施例のような、コンピュータ内の３次元物体（例えば心臓）の形状５６と、触覚提示デバイス５０のポインタ位置に応じた触覚を計算するプログラムを記憶しておき、演算装置９６によって、記憶装置９５に記憶されたプログラムにより、３次元物体の形状と触覚を計算する。計算された３次元物体の形状５６と触覚提示デバイスのポインタ５８をモニタ５４に表示する。また、計算された触覚を触覚提示デバイスにより提示する。以上の装置により、コンピュータ内に実現された心臓などの仮想的な動態を触覚提示デバイス５０により触ることが可能となる。
【００３４】
【発明の効果】
本発明によれば、自律的に動く物体の表面とポインタの接触判定を高速に行うことができるので、動態の触覚を実現することができる効果がある。
【００３５】
また、本発明によれば、キーフレームの補間による動態表現を利用できるため、レンダリング能力に応じたキーフレームの増減やレンダリング予想時間に応じたレンダリングフレームの制御により、計算機の能力に応じて適切に動態のリアルタイム表示に合わせた触覚を提示することが可能である。
【図面の簡単な説明】
【図１】本発明の１実施例のフローチャート。
【図２】動態として心臓の拡張期を示した図。
【図３】３次元モデルのＯｃｔｒｅｅによる空間分割を示した図。
【図４】ポリゴンとポインタの接触判定原理を示した図。
【図５】動態の動きに応じたポインタの仮想的な移動を示した断面図。
【図６】触覚提示デバイスを用いてコンピュータ内の３次元モデルをポインタで触っているところを示した図。
【図７】Ｏｃｔｒｅｅ境界での接触判定エラーを示した図。
【図８】補間による中間形状表示のレンダリング時間による制御を示した図。
【図９】触覚提示のための装置構成を示した図。
【符号の説明】
１０．Ｏｃｔｒｅｅのルート直方体、２０．接触判定するポリゴン、２６．直前のポインタ位置、２８．現在のポインタ位置、４４．仮想オフセットベクトル、５０．触覚提示デバイス、５６．コンピュータ内の３次元モデル、５８．触覚提示デバイスのポインタ、１０２．Ｏｃｔｒｅｅ作成ステップ、１０８．仮想オフセット追加ステップ、１２０．接触判定ステップ、１２４．触覚提示ステップ
【図１】
2004081715.tif 000003
【図２】
2004081715.tif 000004
【図３】
2004081715.tif 000005
【図４】
2004081715.tif 000006
【図５】
2004081715.tif 000007
【図６】
2004081715.tif 000008
【図７】
2004081715.tif 000009
【図８】
2004081715.tif 000010
【図９】
2004081715.tif 000011