(57)【特許請求の範囲】
【請求項１】
所定の仮想物体を定義し、この仮想物体に対する接触感を疑似的に体験させるためのシミュレーションを行う装置であって、
仮想物体を定義するための情報を設定する物体情報設定手段と、
オペレータから加えられた力に基いて三次元の任意方向に移動可能な作用点を有する作用部と、前記作用点の三次元座標系上での位置を検出する位置検出部と、与えられた力制御ベクトルに基いて前記作用点に加える力を発生させる力発生部と、を有する力トランスデューサと、
前記位置検出部が検出した作用点の位置と前記物体情報設定手段内の情報とに基づいて、前記作用点に加えるべき制御力を示す力制御ベクトルを求め、求めた力制御ベクトルを前記力トランスデューサへ与える制御を行う演算制御手段と、
を備え、
前記演算制御手段が、
前記位置検出部が検出した作用点の位置と前記物体情報設定手段内の情報とに基いて作用点近傍の仮想物体表面を認識する近傍表面認識部と、
前記近傍表面認識部が認識した仮想物体表面に立てた法線ベクトルに対して所定の角度θだけ傾斜した仮想法線ベクトルを定める仮想法線ベクトル演算部と、
前記仮想法線ベクトルの方向を向いた面反力を定義する面反力定義部と、
前記面反力に基いて前記作用点に加えるべき制御力を示す力制御ベクトルを求める力制御ベクトル演算部と、
を有することを特徴とする物体の接触感シミュレーション装置。
【請求項２】
請求項１に記載のシミュレーション装置において、
演算制御手段が、位置検出部が検出した作用点の位置と物体情報設定手段内の情報により定義された仮想物体の位置とに基いて、作用点が仮想物体の内部にあるか否かを判断する相互位置関係認識部を更に有し、
面反力定義部が、前記相互位置関係認識部により作用点が仮想物体の内部にあると判断された場合にのみ、面反力の定義を行うことを特徴とする物体の接触感シミュレーション装置。
【請求項３】
請求項２に記載のシミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、仮想物体の硬さを示すパラメータＫを設定し、
演算制御手段が、位置検出部が検出した作用点の位置と物体情報設定手段内の情報により定義された仮想物体の位置とに基いて、仮想物体の表面と作用点との距離ｄを求める距離演算部を更に有し、
面反力定義部が、前記パラメータＫと前記距離ｄとの積（Ｋ・ｄ）に基いて面反力の大きさを決定することを特徴とする物体の接触感シミュレーション装置。
【請求項４】
請求項１〜３のいずれかに記載のシミュレーション装置において、
物体情報設定手段が、仮想物体の形状を示す形状データと、それぞれが三次元の任意方向を向いた多数の仮想法線ベクトルを平面上に配置してなる仮想法線テクスチャとを設定し、
仮想法線ベクトル演算部が、前記仮想物体の表面に前記仮想法線テクスチャをマッピングすることにより仮想法線ベクトルを定めることを特徴とする物体の接触感シミュレーション装置。
【請求項５】
請求項４に記載のシミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、仮想物体の表面を二次元多角形の集合体として表現する形状データを設定し、
面反力定義部が、作用点Ｐを最も近い二次元多角形α上に投影して投影点Ｐｓを求め、この投影点Ｐｓの近傍に定義されている仮想法線ベクトルＮｖを用いて面反力を求める演算を行うことを特徴とする物体の接触感シミュレーション装置。
【請求項６】
請求項４または５に記載のシミュレーション装置において、
物体情報設定手段が、同一平面について重ねてマッピングするための複数の仮想法線テクスチャを設定し、
仮想法線ベクトル演算部が、仮想物体の表面近傍に、複数の仮想法線テクスチャを層構造をなすように重ねてマッピングし、作用点に最も近い層にマッピングされた仮想法線テクスチャを用いて仮想法線ベクトルを定めることを特徴とする物体の接触感シミュレーション装置。
【請求項７】
請求項４〜６のいずれかに記載のシミュレーション装置において、
物体情報設定手段が、所定の凹凸構造を有する面の各部に定義される法線に応じた方向を向いた仮想法線ベクトルを平面上に配置してなる仮想法線テクスチャを設定したことを特徴とする物体の接触感シミュレーション装置。
【請求項８】
請求項４〜６のいずれかに記載のシミュレーション装置において、
物体情報設定手段が、それぞれが三次元のランダム方向を向いた多数の仮想法線ベクトルを平面上に配置してなるランダムテクスチャを設定するか、あるいは、全体的にフラクタル揺らぎを含む多数の仮想法線ベクトルを平面上に配置してなるフラクタルテクスチャを設定したことを特徴とする物体の接触感シミュレーション装置。
【請求項９】
請求項１〜３のいずれかに記載のシミュレーション装置において、
仮想法線ベクトル演算部が、作用点の位置が変わるごとに、ランダムに、あるいは、所定の規則に基いて、仮想法線ベクトルを定めることを特徴とする物体の接触感シミュレーション装置。
【請求項１０】
請求項１〜９のいずれかに記載のシミュレーション装置において、
仮想物体を表示するためのディスプレイと、
物体情報設定手段内に設定された情報および位置検出部が検出した作用点の位置の情報に基いて、前記ディスプレイの画面上の所定の表示位置に仮想物体の形状および作用点を描画する物体形状描画手段と、
を更に設けたことを特徴とする物体の接触感シミュレーション装置。
【請求項１１】
請求項１〜１０のいずれかに記載のシミュレーション装置において、
ＸＹ平面上の任意の座標（ｘ，ｙ）に所定の濃度値が定義された関数Ａ（ｘ，ｙ）で表現される二次元原画像を格納した画像格納部と、
この関数Ａ（ｘ，ｙ）を変数ｘで偏微分して得られる関数θｘ（ｘ，ｙ）と変数ｙで偏微分して得られる関数θｙ（ｘ，ｙ）とを求める偏微分処理部と、
ＸＹ平面上の座標（ｘ，ｙ）の位置に、当該位置に立てた法線に対して、Ｘ軸方向に関数値θｘ（ｘ，ｙ）なる角度だけ傾斜し、Ｙ軸方向に関数値θｙ（ｘ，ｙ）なる角度だけ傾斜した仮想法線ベクトルを配置することにより仮想法線テクスチャを作成するテクスチャ作成部と、
を有する仮想法線テクスチャ作成手段を更に設けたことを特徴とする物体の接触感シミュレーション装置。
【請求項１２】
請求項１〜１０のいずれかに記載のシミュレーション装置における演算制御手段としてコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１３】
請求項１〜１１のいずれかに記載のシミュレーション装置において、
力トランスデューサの作用部を、オペレータの指先に嵌めて固定できる指サックにより構成したことを特徴とする物体の接触感シミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は物体の接触感シミュレーション装置に関し、特に、物体表面の微小な凹凸感や粗面感に対する接触感を疑似的に体験させるためのシミュレーションを行う装置に関する。
【０００２】
【従来の技術】
コンピュータを利用したシミュレーションは、種々の分野で採り入れられており、特に近年では、コンピュータの画像処理機能の向上により、いわゆるバーチャル・リアリティーと呼ばれている仮想現実の世界をディスプレイ画面上に表示するシミュレーション装置が普及してきている。この種のシミュレーション装置では、通常、オペレータは仮想の空間内を自由に移動することができ、オペレータの移動に伴ってディスプレイの表示画面がリアルタイムで描き換えられてゆく。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来のシミュレーション装置は、ディスプレイ上の映像などを利用して、オペレータの視覚を通じて仮想の世界を提示することに主眼が置かれており、オペレータの触覚を通じて仮想の世界を提示する機能に乏しい。もちろん、触覚を通じた疑似体験を提供することができるシミュレーション装置は、既にいくつかが提案されている。ところが、従来提案されているシミュレーション装置を用いて、表面に微小な凹凸構造が形成された物体に対する接触感を疑似的に体験させようとした場合、表面の凹凸構造を定義するための物体の形状データが膨大な量になるため、演算負荷がかなり重くなり、現在のところ実用化の目途が立っていない。
【０００４】
そこで本発明は、表面に微小な凹凸構造が形成された物体に対する接触感を、効率的な演算によって疑似的に体験させることができる物体の接触感シミュレーション装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
(1)   本発明の第１の態様は、所定の仮想物体を定義し、この仮想物体に対する接触感を疑似的に体験させるためのシミュレーションを行うことができる物体の接触感シミュレーション装置において、
仮想物体を定義するための情報を設定する物体情報設定手段と、
オペレータから加えられた力に基いて三次元の任意方向に移動可能な作用点を有する作用部と、作用点の三次元座標系上での位置を検出する位置検出部と、与えられた力制御ベクトルに基いて作用点に加える力を発生させる力発生部と、を有する力トランスデューサと、
位置検出部が検出した作用点の位置と物体情報設定手段内の情報とに基づいて、作用点に加えるべき制御力を示す力制御ベクトルを求め、求めた力制御ベクトルを力トランスデューサへ与える制御を行う演算制御手段と、
を設け、
演算制御手段に、
位置検出部が検出した作用点の位置と物体情報設定手段内の情報とに基いて作用点近傍の仮想物体表面を認識する近傍表面認識部と、
この近傍表面認識部が認識した仮想物体表面に立てた法線ベクトルに対して所定の角度θだけ傾斜した仮想法線ベクトルを定める仮想法線ベクトル演算部と、
仮想法線ベクトルの方向を向いた面反力を定義する面反力定義部と、
この面反力に基いて作用点に加えるべき制御力を示す力制御ベクトルを求める力制御ベクトル演算部と、
を設けるようにしたものである。
【０００６】
(2)   本発明の第２の態様は、上述の第１の態様に係る物体の接触感シミュレーション装置において、
演算制御手段が、位置検出部が検出した作用点の位置と物体情報設定手段内の情報により定義された仮想物体の位置とに基いて、作用点が仮想物体の内部にあるか否かを判断する相互位置関係認識部を更に有し、
面反力定義部が、相互位置関係認識部により作用点が仮想物体の内部にあると判断された場合にのみ、面反力の定義を行うようにしたものである。
【０００７】
(3)   本発明の第３の態様は、上述の第２の態様に係る物体の接触感シミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、仮想物体の硬さを示すパラメータＫを設定し、
演算制御手段が、位置検出部が検出した作用点の位置と物体情報設定手段内の情報により定義された仮想物体の位置とに基いて、仮想物体の表面と作用点との距離ｄを求める距離演算部を更に有し、
面反力定義部が、パラメータＫと距離ｄとの積（Ｋ・ｄ）に基いて面反力の大きさを決定するようにしたものである。
【０００８】
(4)   本発明の第４の態様は、上述の第１〜第３の態様に係る物体の接触感シミュレーション装置において、
物体情報設定手段が、仮想物体の形状を示す形状データと、それぞれが三次元の任意方向を向いた多数の仮想法線ベクトルを平面上に配置してなる仮想法線テクスチャとを設定し、
仮想法線ベクトル演算部が、仮想物体の表面に仮想法線テクスチャをマッピングすることにより仮想法線ベクトルを定めるようにしたものである。
【０００９】
(5)   本発明の第５の態様は、上述の第４の態様に係る物体の接触感シミュレーション装置において、
物体情報設定手段が、仮想物体を定義するための情報として、仮想物体の表面を二次元多角形の集合体として表現する形状データを設定し、
面反力定義部が、作用点Ｐを最も近い二次元多角形α上に投影して投影点Ｐｓを求め、この投影点Ｐｓの近傍に定義されている仮想法線ベクトルＮｖを用いて面反力を求める演算を行うようにしたものである。
【００１０】
(6)   本発明の第６の態様は、上述の第４または第５の態様に係る物体の接触感シミュレーション装置において、
物体情報設定手段が、同一平面について重ねてマッピングするための複数の仮想法線テクスチャを設定し、
仮想法線ベクトル演算部が、仮想物体の表面近傍に、複数の仮想法線テクスチャを層構造をなすように重ねてマッピングし、作用点に最も近い層にマッピングされた仮想法線テクスチャを用いて仮想法線ベクトルを定めるようにしたものである。
【００１１】
(7)   本発明の第７の態様は、上述の第４〜第６の態様に係る物体の接触感シミュレーション装置において、
物体情報設定手段が、所定の凹凸構造を有する面の各部に定義される法線に応じた方向を向いた仮想法線ベクトルを平面上に配置してなる仮想法線テクスチャを設定したものである。
【００１２】
(8)   本発明の第８の態様は、上述の第４〜第６の態様に係る物体の接触感シミュレーション装置において、
物体情報設定手段が、それぞれが三次元のランダム方向を向いた多数の仮想法線ベクトルを平面上に配置してなるランダムテクスチャを設定するか、あるいは、全体的にフラクタル揺らぎを含む多数の仮想法線ベクトルを平面上に配置してなるフラクタルテクスチャを設定したものである。
【００１３】
(9)   本発明の第９の態様は、上述の第１〜第３の態様に係る物体の接触感シミュレーション装置において、
仮想法線ベクトル演算部が、作用点の位置が変わるごとに、ランダムに、あるいは、所定の規則に基いて、仮想法線ベクトルを定めるようにしたものである。
【００１４】
(10)  本発明の第１０の態様は、上述の第１〜第９の態様に係る物体の接触感シミュレーション装置において、
仮想物体を表示するためのディスプレイと、
物体情報設定手段内に設定された情報および位置検出部が検出した作用点の位置の情報に基いて、ディスプレイの画面上の所定の表示位置に仮想物体の形状および作用点を描画する物体形状描画手段と、
を更に設けたものである。
【００１５】
(11)  本発明の第１１の態様は、上述の第１〜第１０の態様に係る物体の接触感シミュレーション装置において、
ＸＹ平面上の任意の座標（ｘ，ｙ）に所定の濃度値が定義された関数Ａ（ｘ，ｙ）で表現される二次元原画像を格納した画像格納部と、
この関数Ａ（ｘ，ｙ）を変数ｘで偏微分して得られる関数θｘ（ｘ，ｙ）と変数ｙで偏微分して得られる関数θｙ（ｘ，ｙ）とを求める偏微分処理部と、
ＸＹ平面上の座標（ｘ，ｙ）の位置に、当該位置に立てた法線に対して、Ｘ軸方向に関数値θｘ（ｘ，ｙ）なる角度だけ傾斜し、Ｙ軸方向に関数値θｙ（ｘ，ｙ）なる角度だけ傾斜した仮想法線ベクトルを配置することにより仮想法線テクスチャを作成するテクスチャ作成部と、
を有する仮想法線テクスチャ作成手段を更に設けるようにしたものである。
【００１６】
(12)  本発明の第１２の態様は、コンピュータを、上述の第１〜第１０の態様に係る物体の接触感シミュレーション装置における演算制御手段として機能させるためのプログラムを、コンピュータ読み取り可能な記録媒体に記録するようにしたものである。
【００１７】
(13)  本発明の第１３の態様は、上述の第１〜第１１の態様に係る物体の接触感シミュレーション装置において、
力トランスデューサの作用部を、オペレータの指先に嵌めて固定できる指サックにより構成したものである。
【００１８】
【発明の実施の形態】
§１．  装置の基本構成
以下、本発明を図示する実施形態に基いて説明する。図１は本発明の一実施形態に係る物体の接触感シミュレーション装置の基本構成を示すブロック図である。この装置では、所定の仮想物体が定義され、この仮想物体に対する接触感を疑似的に体験させるためのシミュレーションを行うことができる。この装置の構成要素は、図示のとおり、物体情報設定手段１０と、ディスプレイ２０と、物体形状描画手段３０と、演算制御手段４０と、力トランスデューサ５０と、仮想法線テクスチャ作成手段６０と、である。
【００１９】
物体情報設定手段１０は、仮想物体を定義するための種々の情報および仮想物体表面に適用される仮想法線ベクトルを定義するための情報を設定する機能を有する。オペレータが、この物体情報設定手段１０に対してデータやパラメータなどの情報を入力すると、入力された情報は、この物体情報設定手段１０内に格納され保持される。オペレータは、物体情報設定手段１０に対して設定したデータやパラメータを変更することにより、シミュレーションの条件設定を適宜変えることができる。この実施形態では、仮想物体を定義するための情報として、図示のように、形状データ，質感データ，光源データなる３種類のデータと、仮想物体の硬さを示すパラメータＫとを設定できるようにしており、仮想法線ベクトルを定義するための情報として、仮想法線テクスチャＴなるデータを設定できるようにしている。これらのデータやパラメータについては、後に詳述する。また、仮想法線テクスチャ作成手段６０は、物体情報設定手段１０内に設定される仮想法線テクスチャＴのデータを作成する処理を行う機能を有しており、この処理についても後述する。
【００２０】
ディスプレイ２０は、仮想物体を表示するための手段であり、図１では立方体形状の仮想物体Ｂが所定位置に表示されている状態が示されている。物体形状描画手段３０は、物体情報設定手段１０内に設定された情報（形状データ，質感データ，光源データ）に基いて、ディスプレイ２０の画面上の所定位置に仮想物体Ｂの形状を描画する機能を有する。なお、物体形状描画手段３０は、仮想物体Ｂだけでなく、後述する作用点Ｐの位置を、ディスプレイ２０の画面上に描画する機能を有しており、図示のとおり、ディスプレイ２０の画面上には、仮想物体Ｂとともに、作用点Ｐの位置が表示される。
【００２１】
力トランスデューサ５０は、作用部５１、位置検出部５２、力発生部５３を有しており、演算制御手段４０に接続されている。力トランスデューサ５０は、オペレータに対するマン・マシン・インターフェイスとして機能し、オペレータから与えられる操作量を入力するとともに、オペレータに対して力を返す働きをする。この実施形態では、力トランスデューサ５０は、１本の指としての機能を果たすことになり、仮想物体に対する接触感は、この指を介して体験することになる。
【００２２】
作用部５１上には、作用点Ｐが定義されており、この作用点Ｐはオペレータから加えられた力に基いて三次元の任意方向に移動可能となっている。図１のディスプレイ２０上に表示されている作用点Ｐは、この作用部５１上の作用点の位置である。位置検出部５２は、作用部５１上の作用点Ｐの三次元座標系上での位置を検出する機能を有する。具体的には、作用点Ｐの位置は、ｘ座標，ｙ座標，ｚ座標の３つの座標値として検出されることになる。ここでは、この３つの座標値によって示された作用点Ｐの位置をＰ（ｘ，ｙ，ｚ）なるデータで表わすことにする。
【００２３】
この作用点の位置を示すデータＰ（ｘ，ｙ，ｚ）は、演算制御手段４０に与えられ、更に、物体形状描画手段３０へと与えられる。物体形状描画手段３０は、前述したように、この位置を示すデータに基いて、ディスプレイ２０の画面上に作用点Ｐの位置を描画することになる。一方、演算制御手段４０は、位置検出部５２が検出した作用点Ｐの位置と物体情報設定手段１０内の情報により定義された仮想物体の位置とに基いて、作用点Ｐと仮想物体Ｂとの相互位置関係を認識し、その認識結果に応じて作用点Ｐに生じるべき反力（仮想物体側からオペレータ側へと返される力）を求める演算を行う。ここで行われる具体的な演算内容については後に詳述する。こうして、作用点Ｐに生じるべき反力が得られたら、この反力に基いて作用点Ｐに加えるべき制御力を示す力制御ベクトルＣが求められ、この力制御ベクトルＣを示すデータは、力トランスデューサ５０へ与えられる。力トランスデューサ５０内の力発生部５３は、演算制御手段４０から与えられた力制御ベクトルＣに基いて作用点Ｐに加える力を発生させる機能を有する。
【００２４】
§２．  物体情報設定手段に設定される情報
続いて、図１に示すシミュレーション装置において、物体情報設定手段１０内に設定される具体的な情報について説明する。前述したように、この実施形態では、形状データ，質感データ，光源データ，硬度を示すパラメータＫ，仮想法線テクスチャＴが設定される。
【００２５】
形状データは、仮想物体の三次元形状を特定するためのデータである。ここでは、仮想物体の表面を二次元多角形の集合体として表現するようにしており、二次元多角形の頂点座標を示す頂点テーブルと、各二次元多角形を構成する頂点の連結関係を示す面テーブルと、によって形状データを構成するようにしている。たとえば、図２(a) に示すような立方体からなる仮想物体を定義する場合を考える。この立方体は、６つの正方形の集合体として表現することができ、図に１〜８の番号を付した合計８個の頂点によって構成される。このような立方体についての形状データは、図２(b) に示す頂点テーブルと図２(c) に示す面テーブルによって構成できる。図２(a) に示す頂点テーブルは、８個の頂点のそれぞれについて、ＸＹＺ三次元座標系における位置座標を示している。図示の例では、図２(a) に示す立方体は、頂点１が座標系の原点に位置し、頂点１−２に沿った辺がＸ軸上、頂点１−４に沿った辺がＹ軸上、頂点１−５に沿った辺がＺ軸上に位置しており、一辺の長さが１となる立方体である。図２(b) の頂点テーブルは、単に８個の頂点の位置座標を示すものであり、仮想物体の形状は、実際には、図２(c) の面テーブルによって定義されることになる。この面テーブルは、この立方体を構成する６個の面▲１▼〜▲６▼の頂点構成を示しており、たとえば、面▲１▼は、頂点１−２−６−５を連結することにより形成される面になる。
【００２６】
このように、頂点テーブルと面テーブルとを用いれば、任意形状の仮想物体の表面を定義することができる。図２の例では、仮想物体の表面を四角形の集合体として定義したが、三角形や六角形など、用いる多角形はどのようなものでもかまわない。また、本発明を実施する上では、仮想物体の形状定義は必ずしも二次元多角形を用いる必要はない。たとえば、球や円錐などであれば、方程式を用いて定義することも可能であり、物体情報設定手段１０に設定される形状データは、数値、式を問わず、形状を定義することができる情報であればどのようなものでもかまわない。なお、ここに示す実施形態では、形状データは座標を示す情報（図２の例では、頂点テーブル内の各座標値）を含んでいるため、形状とともに位置を定義する情報として機能する。もちろん、形状データとは別個に位置を示すための位置データを設定するようにしてもよい。
【００２７】
物体情報設定手段１０に設定される質感データは、形状データによって定義された仮想物体の表面の質感を示すためのデータである。具体的には、仮想物体を構成する各面（図２の例では、面▲１▼〜▲６▼）についての環境色，拡散色，鏡面色，鏡面係数などの値が質感データとして設定される。また、光源データは、この仮想物体を照明するための光源の性質を示すデータであり、光源の形状（点，線，面），光源の位置，光源色などを示すデータが光源データとして設定される。この質感データおよび光源データは、ディスプレイ２０の画面上に、定義した仮想物体を表示するために利用されるデータである。物体形状描画手段３０は、この質感データおよび光源データを考慮して、仮想物体Ｂの形状を描画することになる。
【００２８】
一方、硬度を示すパラメータＫは、仮想物体の表面の硬さを左右する要素であり、後述するように、物体表面からの面反力の大きさを決定する係数として機能する。このパラメータＫは、仮想物体の個々の表面ごとにそれぞれ異なる値を設定することも可能であるが、本実施形態では、１つの仮想物体に対しては１つのパラメータＫのみを設定するようにしている。したがって、１つの仮想物体については、どの面についての硬さも同じであるが、異なる仮想物体については、それぞれ異なるパラメータＫを設定しているので、物体ごとに硬さの相違を体験することができる。もちろん、１つの仮想物体の面ごとに、これらの設定を変えれば、同一の仮想物体であっても、面ごとに異なる硬さを体験することができるようになる。
【００２９】
仮想法線テクスチャＴは、平面上にそれぞれ三次元の任意方向を向いた多数の仮想法線ベクトルを定義したデータであり、一般の絵柄データと同様に、仮想物体の表面にマッピングして用いられるため、本願では「テクスチャ」という文言を用いている。図３(a) は、この仮想法線テクスチャＴの概念を示す斜視図である。図示の例では、平面Ｓ上に三次元の任意方向を向いた多数の仮想法線ベクトルＮｖが定義されている。本発明では、これら仮想法線ベクトルＮｖの方向を示す情報を用いて、オペレータ側へと返される反力の演算が行われる。したがって、仮想法線ベクトルＮｖは、いずれも単位ベクトルとして定義すればよい。仮想法線ベクトルＮｖは、平面Ｓ上の任意の点に定義してもかまわないが、演算効率を高める上では、規則的な位置に定義するのが好ましい。ここに示す例では、縦横に所定ピッチで配置した格子点を定義し、各格子点上に仮想法線ベクトルＮｖを配置している。
【００３０】
図３(b) は、この平面Ｓ上に定義された１本の仮想法線ベクトルＮｖを示す側面図である。そもそも「法線」とは、所定の面に対して垂直な線を指すべきものであり、平面Ｓ上に立てた法線ベクトルＮは、図３(b) に示すように、平面Ｓに対して垂直な方向を向いたベクトルになる。これに対し、仮想法線ベクトルＮｖは、この本来の法線ベクトルに対して、所定角θだけ傾斜したベクトルである。このように、平面Ｓ上に定義された仮想法線ベクトルＮｖは、平面Ｓについての「法線」にはならないのにもかかわらず、「法線」なる文言を一部に用いている理由は、図示のとおり、仮想平面Ｓｖについての法線になっているためである。本発明の基本思想は、法線ベクトルＮの代わりに仮想法線ベクトルＮｖを用いることにより、本来は平面Ｓが定義されているにもかかわらず、オペレータに対しては、仮想平面Ｓｖを意識させるようなシミュレーションを行う点にある。この点については後に詳述する。なお、本明細書では、説明の便宜上、「仮想法線ベクトル」と言った場合、θ＝０に設定された法線ベクトルも含んだ概念を指すものとする。したがって、たとえば、図３(a) に示す多数の仮想法線ベクトルＮｖの中で、たまたまθ＝０に設定されていたため「仮想」ではなく「本当の」法線ベクトルに該当するものが含まれていた場合でも、「仮想法線ベクトル」の範疇に含まれるものとして取り扱うことにする。
【００３１】
この実施形態では、物体情報設定手段１０内に、このような仮想法線テクスチャＴが複数通り用意されており、各物体の形状データ内には、それぞれどの仮想法線テクスチャをどの面にどのような向きにマッピングすべきかを示すデータも付加されている。概念的には、図３(a) に示す仮想法線テクスチャＴは、一般の二次元絵柄と考えることができ、仮想物体の任意の表面にマッピングすることが可能である。
【００３２】
§３．  具体的な装置構成
図１に示すブロック図は、説明の便宜上、本発明に係る装置を機能要素の集合としてとらえ、個々の機能要素をブロックで示したものであり、実際には、このシミュレーション装置はコンピュータを利用して構築される。すなわち、図１に示す装置における物体情報設定手段１０、物体形状描画手段３０、演算制御手段４０、仮想法線テクスチャ作成手段６０は、汎用のコンピュータに、上述した各処理を実行するためのプログラムを組み込むことにより構成することができる。たとえば、物体情報設定手段１０に対するデータやパラメータの設定は、キーボードやマウスなどのコンピュータ用入力機器を用いて行うことができ、設定されたデータやパラメータはメモリや種々の記憶装置に格納されることになる。また、物体形状描画手段３０による描画機能や、演算制御手段４０および仮想法線テクスチャ作成手段６０による演算処理機能は、コンピュータに組み込まれたプログラムによって実現されることになり、このプログラムは、コンピュータ読み取り可能な記録媒体に記録して配布することが可能である。なお、ディスプレイ２０は、コンピュータ用の一般的なディスプレイ装置によって構成できる。
【００３３】
一方、力トランスデューサ５０は、オペレータの物理的操作をデジタルデータ（作用点の位置を示すデータ）に変換する第１の機能と、演算制御手段４０から与えられるデジタルデータ（力制御ベクトルＣを示すデータ）を物理的な力に変換してオペレータに与える第２の機能とを実行する物理的な構成要素である。一般的な物体に対する接触動作には、通常、指が用いられる。そこで、この実施形態では、上記機能が効果的に実行されるように、力トランスデューサ５０の作用部５１を、オペレータの指先に嵌めて固定できる指サックにより構成し、オペレータの指の動きに基いて作用点Ｐを移動できるようにするとともに、力制御ベクトルＣに基く制御力がこの指サックを介してオペレータの指に伝達されるように構成した。
【００３４】
図４は、この指サックの形態をした作用部５１を用いて構成される力トランスデューサ５０の機能を示すブロック図である。作用部５１は、ゴムなどの弾力性をもった材料で構成されており、オペレータは、この作用部５１を指の先端に装着して固定することができる。図示の例では、この作用部５１の先端部分に作用点Ｐが定義されている（もちろん、作用点Ｐは作用部５１のいずれの部分に定義してもかまわないが、操作性を向上する上では、指先位置に定義するのが好ましい）。本発明では、このような力トランスデューサを少なくとも１組用意する必要がある。
【００３５】
この力トランスデューサ５０において、作用部５１は三次元の自由度をもって移動可能な状態に支持されている必要がある。すなわち、作用点Ｐは、オペレータから加えられた力に基いて三次元の任意方向に移動可能な状態になっている必要がある（もちろん、作用点Ｐの移動可能空間は、所定の範囲内に制限されていてかまわない）。したがって、オペレータは、作用部５１を指先に装着した状態で、指先を三次元空間内の任意の方向に移動させることができる。位置検出部５２は、前述したように、作用点Ｐの三次元空間内の位置を、Ｐ（ｘ，ｙ，ｚ）なる３つの座標値からなるデータとしてリアルタイムで逐次検出する機能を有している。一方、力発生部５３は、演算制御手段４０からリアルタイムで逐次与えられる力制御ベクトルＣに基いて、力ｆを発生させ、これを作用点Ｐに逐次加える機能を果たす。ここで、作用点Ｐに加えられる力ｆは、力制御ベクトルＣの向きおよび大きさをもった力である。
【００３６】
結局、オペレータは、作用部５１を装着した指を任意の方向に動かすことが可能ではあるが、逆に、作用点Ｐに加わる力ｆを常に指先に受け、物体からの反力を感じることになる（もちろん、ｆ＝０の場合は、何ら反力は感じない）。
【００３７】
図５は、このような力トランスデューサ５０の具体的構成例を示す斜視図である。図では、力トランスデューサ５０の作用部５１（指サック）を右手の人差し指に装着した状態が示されている。この指の先端部分に作用点Ｐが定義されており、オペレータは、作用部５１を任意の方向に移動させながら、仮想物体に対する接触感を体感することができる。図示の力トランスデューサ５０では、複数のリンク機構を用いて、上述した２つの機能を実現している。すなわち、作用部５１は、複数の自在アームによって支持されているため、ある程度の範囲の空間内では、三次元の任意の方向に自由に移動させることが可能である。しかも、各自在アームの回転位置を検出する機構が備わっており、作用点Ｐの三次元座標値Ｐ（ｘ，ｙ，ｚ）を検出することができる。更に、各自在アームに力を加えるためのモータが用意されており、これらのモータを駆動することにより、作用点Ｐに任意の方向、任意の大きさの力を作用させることができる。
【００３８】
このような複数のリンク機構を用いた力トランスデューサは、既に公知の装置であるため、その構造や機構についての詳細な説明は省略する。市販の製品としては、たとえば、米国のセンサブル・デバイス社（SensAble Device Inc.）が「ＰＨＡＮＴｏＭ」なる商品名で販売している装置を利用することができる。結局、本発明に係る接触感シミュレーション装置は、図５に示すような力トランスデューサを、汎用コンピュータに接続し、所定のプログラムをこのコンピュータに組み込むことにより実現することが可能になる。
【００３９】
§４．  物体との接触による面反力の基本的な定義方法
続いて、物体からの反力の演算方法について述べる。いま、三次元座標系上の所定位置に、所定の仮想物体が定義されているものとする。この仮想物体は、実在の物体ではないので、たとえば、図５に示すような力トランスデューサ５０を用いた場合、この力トランスデューサ５０が設置されている三次元空間内のいずれかの位置に、仮想物体の存在が定義されているに過ぎない。ここで、オペレータが図５のような指サック状の作用部５１を人差し指に装着し、この作用部５１の先端に定義された作用点Ｐを移動させたところ、図６の側断面図に示すように、仮想物体Ｂ（αおよびβは、この仮想物体Ｂの表面を示す）の内部の位置に到達したとしよう。仮想物体Ｂは、実在の物体ではないので、もし、力トランスデューサ５０に対して何ら力制御ベクトルが与えられていなければ、オペレータは、作用点Ｐを自由に移動させることができるので、図６に示すように仮想物体Ｂの内部にまで作用点Ｐを動かすことは可能である。
【００４０】
ただ、実際には、このような作用点Ｐの動きは、仮想物体Ｂが実在の物体であった場合には矛盾する。すなわち、作用点が図示の点Ｐへ移動したということは、指先が物体の内部に侵入していることになり、物体が変形をしない限り、そのような作用点の移動は現実的には不可能である。もちろん、物体が弾性変形や塑性変形を生じるものとして、作用点が物体の内部に侵入した場合には、それに応じて物体の形状をリアルタイムで補正するという手法を採れば、図６に示すような作用点の移動に、現実的な矛盾は生じない。しかしながら、物体形状をリアルタイムで補正するには、膨大な演算処理が必要になり、特に、ディスプレイ２０上にリアルタイムで物体を描画する場合、かなり高機能なコンピュータが要求されることになる。そこで、本実施形態では、仮想物体Ｂは剛体から構成されており、形状は一切変化しないものとして取り扱っている。
【００４１】
このように、仮想物体Ｂを剛体として取り扱うと、図６における作用点Ｐの位置は、指先が剛体中にめり込んでいる状態に相当するため、現実の物理現象を忠実にシミュレートするという意味では、矛盾した移動になる。しかしながら、本発明の主眼は、オペレータに物体に対する接触感を体験させることにあるので、必ずしも現実の物理現象を忠実にシミュレートする必要はない。したがって、本発明では、図６に示すように、作用点Ｐが仮想物体Ｂの内部に侵入するような事象も認めることにする。ただし、オペレータに接触感を感じさせるためには、作用点Ｐが仮想物体Ｂの内部に侵入した際に、何らかの反力を作用点Ｐに戻してやる必要がある。このように、物体内部に作用点が移動したことに対して、物体側から作用点側に戻される反力を、ここでは面反力Ｆｓと呼ぶことにする。
【００４２】
本願発明者は、この面反力Ｆｓの大きさを、作用点Ｐとこれに最も近い仮想物体の表面αとの距離ｄに基いて決定すれば、非常に現実的な接触感をオペレータに与えられることを見出だした。すなわち、作用点Ｐを表面αに投影して投影点Ｐｓを定義し、この投影点Ｐｓと作用点Ｐとの距離をｄとする。そして、物体情報設定手段１０内に設定されている硬さを示すパラメータＫと、この距離ｄとの積（Ｋ・ｄ）を物体からの面反力Ｆｓの大きさと定義すれば、距離ｄ（すなわち、表面αからの深さ）が大きくなればなるほど、面反力Ｆｓは大きくなる。したがって、オペレータは、作用点Ｐをより深い位置へと移動させるためには、より大きな力（面反力Ｆｓに対抗する力）が必要になり、仮想物体の表面に対する接触感を得ることができる。また、面反力Ｆｓの絶対値は、パラメータＫに依存するため、大きなパラメータＫが設定されている面ほど硬く感じられ、小さなパラメータＫが設定されている面ほど柔らかく感じられることになる。
【００４３】
一方、面反力Ｆｓを作用させる方向は、作用点Ｐに最も近い物体表面αに立てた法線の向きとすればよい。すなわち、図６に示すように、投影点Ｐｓの位置において表面αに立てた単位ベクトルを法線ベクトルＮとすれば、面反力Ｆｓは、この法線ベクトルＮを用いた
Ｆｓ＝（Ｋ・ｄ）・Ｎ
なる式により、ベクトル量として与えられることになる。
【００４４】
結局、作用点Ｐと仮想物体Ｂとの相互位置関係を認識し、作用点Ｐが仮想物体Ｂの内部にあると判断された場合には、上記式に基いて、面反力Ｆｓをベクトル量として求める演算を行い、この面反力Ｆｓに相当する力制御ベクトルＣを力発生部５３に与えるようにすれば、作用点Ｐには、この面反力Ｆｓに相当する大きさおよび向きをもった力が作用することになる。これにより、オペレータは、仮想物体Ｂの面αの存在を触覚を通して認識することができるようになる。なお、作用点Ｐが仮想物体Ｂの外部にある場合には、面反力Ｆｓを戻す必要はないので、このような演算は不要である。
【００４５】
§５．  仮想法線ベクトルの適用による凹凸感表現方法
さて、仮想物体Ｂの表面αが図６に示すような位置に存在するのであれば、本来は、上述したように、この表面αに立てた法線ベクトルＮの方向に面反力Ｆｓを作用させるべきである。オペレータは、投影点Ｐｓから法線ベクトルＮの方向に返される面反力Ｆｓを指先で感じることにより、表面αの存在を認識することができるのである。
【００４６】
それでは、法線ベクトルＮの代わりに、仮想法線ベクトルＮｖを用いたらどうなるであろうか。図７は、投影点Ｐｓの位置において、法線に対して角度θだけ傾斜した仮想法線ベクトルＮｖを定義し、面反力Ｆｓを、この仮想法線ベクトルＮｖを用いて、
Ｆｓ＝（Ｋ・ｄ）・Ｎｖ
なる式により、ベクトル量として定義した状態を示す側断面図である。仮想法線ベクトルＮｖとして単位ベクトルを用いるようにすれば、図６に示す面反力Ｆｓと図７に示す面反力Ｆｓとは、大きさは全く同じになり、向きだけが異なることになる。この面反力の向きの違いにより、オペレータが触覚を通じて認識する面の向きにも違いが生じることになる。すなわち、図７に示す例では、投影点Ｐｓの位置に、平面αではなく仮想平面αｖが存在するような触覚感が得られることになる。このように、物体情報設定手段１０内の形状データにより実際に定義されている仮想物体Ｂが有する面は平面αであるにもかかわらず、仮想法線ベクトルＮｖを用いて面反力Ｆｓを演算するようにすれば、形状データとしては定義されていない仮想平面αｖに対する接触感を提示することが可能になる。
【００４７】
そこで、たとえば、側面図が図８のように表現される仮想法線テクスチャＴを用意してみる。この仮想法線テクスチャＴは、平面Ｓ上に７本の仮想法線ベクトルＮｖ１〜Ｎｖ７を定義したものである。なお、実際には、仮想法線テクスチャＴは二次元平面上に多数の仮想法線ベクトルＮｖを配置したものであるが、ここでは説明の便宜上、一次元的な配置のみを考えることにする。このような仮想法線テクスチャＴを、仮想物体Ｂを構成する平面α上にマッピングしておき、面反力Ｆｓを求める際には、投影点Ｐｓ上にマッピングされている仮想法線ベクトルを用いた演算を行うようにする。このようにすれば、図９の側断面図に示されているように、形状データとしては平面αの情報しか用意されていないにもかかわらず、オペレータは平面αの代わりに仮想曲面αｖを触覚を通じて認識することができるようになる。別言すれば、平面α上に形成された曲面状の窪みを認識することができるようになる。
【００４８】
逆に言えば、図９に示すような曲面状の窪みを表現したい場合には、このような窪み形成面上の各位置に定義される法線ベクトルを、仮想法線ベクトルＮｖ１〜Ｎｖ７として平面Ｓ上に配置することによって図８に示すような仮想法線テクスチャＴを作成し、これを物体情報設定手段１０内に格納しておき、実際のシミュレーション時には、この仮想法線テクスチャＴを平面α上にマッピングして、上述した手法により面反力Ｆｓを決定する処理を行えばよいことになる。より一般的に言えば、所定の凹凸構造を有する面の各部に定義される法線に応じた方向を向いた仮想法線ベクトルＮｖを、平面Ｓ上に配置してなる仮想法線テクスチャＴを用意しておき、これを仮想物体の表面にマッピングする処理を行い、作用点近傍にマッピングされた仮想法線ベクトルＮｖを用いて面反力Ｆｓを求めるようにすれば、上記凹凸構造に対する接触感を疑似的に体験させることができるようになる。
【００４９】
上述した本発明の手法は、３Ｄコンピュータグラフィックスの分野において、物体表面の細かな凹凸構造の陰影などを表現するためのいわゆるバンプマッピングと呼ばれる手法を応用したものである。この手法の最大のメリットは、演算負担を大幅に軽減させることができる点にある。
【００５０】
たとえば、物体の接触感シミュレーション装置において、図９に示すような窪み（バンプ）が多数形成された表面に対する接触感のシミュレーションを行うには、原理的には、そのような形状データを物体情報設定手段１０内に用意しておけばよい。しかしながら、このような自由曲面からなる窪みを形状データとして表現するには、膨大な情報量が必要になり、物体情報設定手段１０としては、かなり容量の大きな記憶装置が必要になる。また、演算制御手段４０は、物体情報設定手段１０内の形状データと、位置検出部５２が検出した作用点Ｐの位置座標Ｐ（ｘ，ｙ，ｚ）とに基いて、両者の相互位置関係を認識する必要がある。特に、本実施形態では、作用点Ｐが仮想物体Ｂの内部にあるか否かを判断する必要がある（前述したように、本実施形態では、作用点Ｐが仮想物体Ｂの内部にある場合にのみ、面反力Ｆｓがオペレータ側に返される）。ところが、形状データ内に、図９に示すような窪みの曲面データが含まれていると、内部にあるか否かの判断処理に多大な演算負担がかかることになり、リアルタイムでの処理を行うためには、演算制御手段４０としてかなり高性能のハードウエアが必要になる。
【００５１】
これに対し、本発明に係る手法を利用すれば、物体情報設定手段１０内の形状データとしては、二次元多角形の集合体を示すデータを用意すれば足りる。たとえば、図２(a) に示す立方体形状の仮想物体の場合には、図２(b) に示すような８頂点の座標を示すデータと、図２(c) に示すような面テーブルとが用意できれば足りる。このため、形状データとして必要な情報量は非常に少なくてすむ。また、作用点Ｐが内部にあるか否かの判断は、二次元多角形の集合体として定義される仮想物体Ｂに対して行えばよいため、演算負担も軽くてすむ。たとえば、図９に示す例の場合、作用点Ｐが平面αの上下どちらにあるかによって、内部か外部かを判断することができ、仮想曲面αｖについては考慮する必要はない。すなわち、微小な凹凸構造を考慮した複雑な内外判断を行う必要はなくなる。
【００５２】
もちろん、本発明に係る手法を採れば、仮想物体の形状データの他に、仮想法線テクスチャＴのデータが必要になるが、仮想法線テクスチャＴは、平面Ｓ上に配置された仮想法線ベクトルＮｖの向きを示すデータだけで表現できるので、大きな情報量は必要ない。なお、仮想法線テクスチャＴ上に定義される仮想法線ベクトルＮｖの密度は、表現したい凹凸構造の解像度とデータ量との兼ね合いから、妥当な密度に設定すればよい。図９に示すような自由曲面からなる滑らかな窪み構造を表現するためには、できるだけ高密度で多数の仮想法線ベクトルＮｖが配置された仮想法線テクスチャＴを用意するのが好ましいが、それなりにデータ量は増大することになる。
【００５３】
また、このように、仮想物体Ｂの情報と、仮想法線テクスチャＴの情報とを別個に用意しておき、必要に応じて、特定の仮想法線テクスチャを特定の仮想物体の特定の面にマッピングするという手法を採れば、同一の仮想物体の形状データを用いていたとしても、マッピングする仮想法線テクスチャを交換するだけで、種々の表面凹凸構造をもった仮想物体に対する接触感を体験することができるというメリットも得られる。
【００５４】
なお、上述の例では、図７に示すように、作用点Ｐを仮想物体の表面α上へ投影して投影点Ｐｓを求め、この投影点Ｐｓ上に定義されている仮想法線ベクトルＮｖを用いて面反力Ｆｓを求めるという説明を行ったが、実際には、図３(a) に示すように、仮想法線テクスチャＴ上には離散的に有限個の仮想法線ベクトルＮｖが定義されているだけであり、その密度は、上述したように、データ量との兼ね合いで決められることになる。したがって、実際には、投影点Ｐｓ（もしくは作用点Ｐ）の近傍にマッピングされた仮想法線ベクトルＮｖを用いて面反力を求める演算を行うようにすればよい。たとえば、図１０に示すように、投影点Ｐｓの近傍に４つの格子点Ｑ１〜Ｑ４が定義され、これら各格子点Ｑ１〜Ｑ４にそれぞれ仮想法線ベクトルＮｖ１〜Ｎｖ４が定義されていたとし、投影点Ｐｓと各格子点Ｑ１〜Ｑ４との距離がそれぞれＬ１〜Ｌ４であったとする。このような場合は、たとえば、投影点Ｐｓに最も近い格子点Ｑ２に定義された仮想法線ベクトルＮｖ２を用いるようにすればよい。あるいは、４つの仮想法線ベクトルＮｖ１〜Ｎｖ４の合成ベクトルを用いるようにしてもよい。この場合、距離Ｌ１〜Ｌ４を考慮して、より投影点Ｐｓに近い仮想法線ベクトルの成分がより多く含まれるようなベクトル合成を行うことも可能である。
【００５５】
また、図７に示す例では、作用点Ｐを平面αに垂直に投影して投影点Ｐｓを求めるようにしているが、平面αへの投影は必ずしも垂直にする必要はない。たとえば、図１１に示すように、作用点Ｐが過去の位置Ｐ０から図の矢印に示す方向に移動して、現在の位置に至った場合、この移動軌跡と逆方向に投影して投影点Ｐｓを求めるようにしてもかまわない（この場合、投影点Ｐｓは、移動軌跡と平面αとの交点になる）。要するに、本発明では、作用点Ｐの近傍に存在する物体表面上のいずれかの点について、仮想法線ベクトルＮｖを求め、面反力を作用させるようにすればよい。
【００５６】
§６．  仮想法線テクスチャの作成方法
既に述べたように、図１に示す仮想法線テクスチャ作成手段６０は、図３(a) に示すような仮想法線テクスチャＴを作成する機能を有し、作成された仮想法線テクスチャＴは、物体情報設定手段１０内に格納され、後に、演算制御手段４０によって、仮想物体の表面にマッピングされることになる。そこで、ここでは、仮想法線テクスチャ作成手段６０によって行われる仮想法線テクスチャＴの作成方法の一例を述べておく。
【００５７】
いま、図１２(a) に示すように、Ｘ軸方向に濃淡変化が現れる原画像パターン（グラデーションパターン）を用意する。図１２(b) は、この原画像パターンのＸ軸に沿った一次元的な濃淡変化を示すグラフである。図１２(a) に示す画像パターンは、図１２(b) のグラフでは、濃度値Ａ＝Ａ（ｘ）なる関数で表現されることになり、濃度値Ａは、Ｘ軸上の座標位置ｘ３において最大値をとる。いま、この関数Ａ＝Ａ（ｘ）を変数ｘで微分することにより、ｄＡ（ｘ）／ｄｘなる微分関数を求め、これに所定の係数ｋを乗じて、
θ＝ｋ・ｄＡ（ｘ）／ｄｘ
なる関数θ（ｘ）を定義する。なお、係数ｋは、θが０°を中心とした角度の値をとるような適当な値に設定されているものとする。図１２(c) はこのような微分関数θ（ｘ）を示すグラフである。
【００５８】
ここで、いくつかの関数値に着目してみると、θ（ｘ１）＝θ（ｘ３）＝θ（ｘ５）＝０°、θ（ｘ２）＝＋１５°、θ（ｘ４）＝−１５°となっている。そこで、図１２(d) に示すように、平面Ｓ上に、座標位置ｘ１〜ｘ５をプロットし、それぞれ法線に対して角度θ（ｘ）だけ傾斜した仮想法線ベクトルＮｖ１〜Ｎｖ５を定義してみる。すると、これらの仮想法線ベクトルは、図１２(a) に示す原画像パターンの濃淡変化に応じた方向を向いていることがわかる。仮に、図１２(a) に示す原画像パターンにおいて、濃度値の高い黒い部分は凹部を示し、濃度値の低い白い部分は凸部を示しているとすれば、この原画像パターンは、中央部分が窪んだなだらかな一次元凹凸構造を表現していることになり、図１２(d) に示す仮想法線ベクトルＮｖ１〜Ｎｖ５からなる一次元の仮想法線テクスチャは、原画像パターンに応じた一次元凹凸構造を触覚的に提示できることになる。
【００５９】
以上、説明の便宜上、一次元の原画像パターンについて述べたが、実際には、二次元平面上の凹凸構造を濃淡パターンとして表現した二次元原画像を用意すれば、図１３に示すように、この二次元原画像に基いて、二次元の仮想法線テクスチャを作成することができる。すなわち、まず、図１３(a) に示すように、二次元原画像が用意される。この原画像は、ＸＹ平面上の任意の座標（ｘ，ｙ）に所定の濃度値Ａ（ｘ，ｙ）が定義された関数として定義される。次に、この関数Ａ（ｘ，ｙ）を、図１３(b) に示すようにＸ方向に微分するとともに、図１３(c) に示すようにＹ方向に微分し、図１３(d) に示すようなＸ方向微分画像および図１３(e) に示すようなＹ方向微分画像を求める。図１３(d) に示すＸ方向微分画像は、関数Ａ（ｘ，ｙ）を変数ｘで偏微分して得られる関数θｘ（ｘ，ｙ）で示される画素値をもった画像であり、この関数θｘ（ｘ，ｙ）は、角度θに対応した画素値が得られるように、所定の係数ｋを用いて、
θｘ（ｘ，ｙ）＝ｋ・ｄＡ（ｘ，ｙ）／ｄｘ
なる式で求められることになる。同様に、図１３(e) に示すＸ方向微分画像は、関数Ａ（ｘ，ｙ）を変数ｙで偏微分して得られる関数θｙ（ｘ，ｙ）で示される画素値をもった画像であり、この関数θｙ（ｘ，ｙ）は、角度θに対応した画素値が得られるように、所定の係数ｋを用いて、
θｙ（ｘ，ｙ）＝ｋ・ｄＡ（ｘ，ｙ）／ｄｙ
なる式で求められることになる（なお、電子出願の制約上、明細書上では、偏微分記号の代わりに通常の微分記号ｄを用いている）。
【００６０】
このようにして、Ｘ方向微分画像とＹ方向微分画像とが得られたら、両画像の画素値に基いてＸ軸方向の傾斜角度およびＹ方向の傾斜角度を決めることにより、仮想法線ベクトルを定義すればよい。たとえば、ＸＹ平面上の座標（ｘ，ｙ）の位置には、当該位置に立てた法線に対して、Ｘ軸方向に関数値θｘ（ｘ，ｙ）なる角度だけ傾斜し、Ｙ軸方向に関数値θｙ（ｘ，ｙ）なる角度だけ傾斜した仮想法線ベクトルＮｖを配置するようにすればよい。こうして、ＸＹ平面上の個々の位置にそれぞれ仮想法線ベクトルを配置すれば、図１３(a) に示す二次元原画像の濃淡パターンに応じた二次元凹凸構造を触覚的に提示することが可能な仮想法線テクスチャを得ることができる。
【００６１】
なお、物体表面上に表現したい凹凸構造は、必ずしも特定の形状をもった窪み構造や隆起構造だけではない。たとえば、いわゆる梨子地と呼ばれている粗面構造を表現したい場合もある。この場合、オペレータに対しては、ザラザラした接触感を伝えることができれば足りる。このようなザラザラした接触感を生じさせるための仮想法線テクスチャが必要な場合、乱数を用いてランダムテクスチャを作成すればよい。すなわち、それぞれが三次元のランダム方向を向いた多数の仮想法線ベクトルを平面上に配置すれば、ランダムテクスチャを得ることができる。このランダムテクスチャ上の各仮想法線ベクトルには、その方向に関する周期性や規則性がないため、これをマッピングした仮想物体の表面では、ランダムな方向に面反力が作用することになり、結果的に、ザラザラした粗面構造を表現することができる。ランダムテクスチャの代わりに、全体的にフラクタル揺らぎを含む多数の仮想法線ベクトルを平面上に配置してなるフラクタルテクスチャを用いても、同様に、ザラザラした粗面構造を表現することができる。
【００６２】
§７．  本発明に係るシミュレーション装置の動作
続いて、本発明に係る物体の接触感シミュレーション装置の動作を、図１４に示す流れ図を参照しながら説明する。
【００６３】
まず、ステップＳ１において、仮想物体の定義が行われる。具体的には、§２で述べたように、仮想物体を定義するための形状データ、質感データ、光源データ、硬度を示すパラメータＫが、物体情報設定手段１０に対して設定されることになる。続くステップＳ２では、仮想法線テクスチャＴが作成される。これは、たとえば、§６で述べた手法により仮想法線テクスチャ作成手段６０を用いて、所望の仮想法線テクスチャＴを作成すればよい。実用上は、必要に応じて、複数種類の仮想法線テクスチャが作成されることになる。次のステップＳ３では、物体情報設定手段１０内に設定された仮想物体に対して、同じく物体情報設定手段１０内に設定された仮想法線テクスチャＴをマッピングする処理が、演算制御手段４０によって行われる。この実施形態では、§２で述べたように、各仮想物体は、二次元多角形の集合体として定義されているので、各二次元多角形に、それぞれ所定の仮想法線テクスチャを、所定の向きにマッピングする処理が行われることになる。このテクスチャマッピングの処理は、既に、公知のコンピュータグラフィックス技術であるため、ここでは詳しい説明は省略する。以上、ステップＳ１〜Ｓ３は、シミュレーションを行う前の準備段階の処理である。
【００６４】
さて、実際のシミュレーション動作は、ステップＳ４以下の手順によって行われる。これらの手順は、演算制御手段４０によって実行される手順である。まず、ステップＳ４において、作用点の現在位置Ｐ（ｘ，ｙ，ｚ）が、位置検出部５２から入力される。そして、ステップＳ５において、この作用点の現在位置が、仮想物体の内部か否かが判断される。既に述べたように、物体情報設定手段１０内に設定されている仮想物体の形状データは、三次元空間内での仮想物体の位置の情報を含んでいるので、作用点の現在位置Ｐの座標値を参照することにより、作用点が仮想物体の内部にあるか外部にあるかを判断することができる。ここで、作用点が仮想物体の外部にあると判断された場合には、再びステップＳ４の手順へ戻ることになる。別言すれば、作用点が仮想物体の内部に侵入するまで、ステップＳ６以降の手順（面反力を作用させる手順）は実行されないことになる。
【００６５】
作用点が仮想物体の内部にあるとの判断がなされたら、ステップＳ５からステップＳ６へと進み、作用点Ｐを最も近傍にある物体表面に投影して投影点Ｐｓを求め、この投影点Ｐｓ上の仮想法線ベクトルＮｖを認識する（投影点Ｐｓ上に仮想法線ベクトルが定義されていない場合は、図１０に示すように、近傍に定義された仮想法線ベクトルを利用する）。そして、次のステップＳ７において、面反力Ｆｓの演算が行われる。すなわち、作用点Ｐと物体表面との距離ｄと、硬度を示すパラメータＫと、ステップＳ６で認識した仮想法線ベクトルＮｖとにより、面反力Ｆｓは、
Ｆｓ＝（Ｋ・ｄ）・Ｎｖ
なる式によりベクトル量として求まることになる。
【００６６】
こうして、面反力Ｆｓが求まったら、ステップＳ８において、この面反力Ｆｓに基いて、作用点に加えるべき制御力を示す力制御ベクトルＣを決定し、この力制御ベクトルＣを力発生部５３に対して出力する。実際には、面反力ベクトルＦｓをそのまま力制御ベクトルＣとして出力すればよい。かくして、オペレータの指には、力発生部５３から力制御ベクトルＣに応じた制御力が加えられることになる。ここで、再びステップＳ４へ戻り、上述した処理が繰り返し実行される。
【００６７】
§８．  種々の変形例
以上、本発明を図示する実施形態に基いて説明したが、本発明は上述した実施形態に限定されるものではなく、この他にも種々の形態で実施可能である。以下にいくつかの変形例を述べておく。
【００６８】
(1)   上述の実施形態では、仮想物体の表面上に単一の仮想法線テクスチャＴをマッピングしているが、仮想物体の表面近傍に、複数の仮想法線テクスチャを層構造をなすように重ねてマッピングすることも可能である。たとえば、図１５は、仮想物体の表面である面α（０）上に仮想法線テクスチャＴ（０）をマッピングするとともに、面α（０）よりも距離ｄ１だけ深い位置に定義された面α（ｄ１）上に別な仮想法線テクスチャＴ（ｄ１）をマッピングし、更に、面α（０）よりも距離ｄ２だけ深い位置に定義された面α（ｄ２）上に別な仮想法線テクスチャＴ（ｄ２）をマッピングした例である。すなわち、面α（０）の近傍に、３枚の仮想法線テクスチャＴ（０），Ｔ（ｄ１），Ｔ（ｄ２）を層構造をなすように重ねてマッピングしたことになる。この場合、作用点に最も近い層にマッピングされた仮想法線テクスチャ上の仮想法線ベクトルを用いて面反力を求める演算を行うようにすればよい。
【００６９】
たとえば、図示の例の場合、作用点Ｐ（ｘ，ｙ，ｚ）に最も近い層が、面α（ｄ１）であったとすれば、作用点Ｐ（ｘ，ｙ，ｚ）を面α（ｄ１）に投影して投影点Ｐｓを求め、仮想法線テクスチャＴ（ｄ２）上の仮想法線ベクトルを用いて面反力を求める演算を行えばよい。このように、複数の仮想法線テクスチャを層構造をもって定義すると、立体的により複雑な凹凸構造を表現することが可能になる。
【００７０】
(2)   上述の実施形態では、予め物体情報設定手段１０内に所定の仮想法線テクスチャＴを用意しておき、演算制御手段４０内において、この仮想法線テクスチャＴを物体表面にマッピングする演算を行い、作用点近傍にマッピングされた仮想法線ベクトルを用いて面反力を求めるようにしていたが、本発明を実施するにあたり、仮想法線テクスチャは必ずしも用意する必要はない。本発明の基本概念は、作用点近傍の仮想物体表面αを認識し、この仮想物体表面αに立てた法線ベクトルＮに対して、所定の角度θだけ傾斜した仮想法線ベクトルＮｖを定め、この仮想法線ベクトルＮｖの方向を向いた面反力Ｆｓをオペレータに提示することにある。したがって、仮想法線ベクトルＮｖとしては、必ずしも予め定義されてマッピングされたものを用いる必要はない。
【００７１】
たとえば、いわゆる梨子地と呼ばれている粗面構造を表現したい場合であれば、前述したように、予めランダムテクスチャやフラクタルテクスチャを用意して、これをマッピングするような手法も可能であるが、その都度、ランダムにあるいはフラクタル揺らぎをもつように、所定の方向を向いた仮想法線ベクトルＮｖを発生させる作業を行ってもよい。すなわち、演算制御手段４０は、作用点Ｐの位置が変わるごとに、ランダムに、あるいは、所定の規則に基いて仮想法線ベクトルＮｖをその都度発生させる作業を行い、この発生させた仮想法線ベクトルを用いて面反力を求める演算を行えばよい。また、作用点Ｐの座標値に基いて周期的に方向が変わるような仮想法線ベクトルＮｖを発生させるようにすれば、周期的な凹凸構造を表現することも可能である。
【００７２】
(3)   §４では、面反力Ｆｓを定義する方法として、物体表面と作用点との距離ｄに基いて面反力の大きさを決定する方法を示したが、面反力Ｆｓの定義方法は、このような方法に限定されるものではない。たとえば、作用点が物体表面上を通過してからの経過時間に応じて、面反力Ｆｓの大きさを決定するような方法を採ることもできる。
【００７３】
(4)   上述の例では、１組の力トランスデューサ５０のみを用いているが、複数組の力トランスデューサ５０を用意すれば、仮想物体に対する把持動作を体験させることも可能である。図１６には、２組の力トランスデューサ５０を用い、両作用部５１（指サック）をそれぞれ親指と人差し指とに装着した状態が示されている。いずれも指の先端部分に作用点Ｐが定義されており、オペレータは、両作用部５１を任意の方向に移動させながら、仮想物体Ｂを把持する動作を体感することができる。また、仮想物体Ｂの把持動作には、仮想物体Ｂの表面に定義した摩擦係数を考慮したシミュレーションを行うことができる。
【００７４】
【発明の効果】
以上のとおり本発明に係る物体の接触感シミュレーション装置によれば、仮想物体の表面に仮想法線ベクトルを定義し、この仮想法線ベクトルの方向に所定の大きさの面反力を作用させるようにしたため、表面に微小な凹凸構造が形成された物体に対する接触感を、効率的な演算によって疑似的に体験させることができるようになる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る物体の接触感シミュレーション装置の基本構成を示すブロック図である。
【図２】図１に示すシミュレーション装置において定義された仮想物体およびその形状データの一例を示す図である。
【図３】図１に示すシミュレーション装置において定義された仮想法線テクスチャの一例を示す斜視図および側面図である。
【図４】図１に示すシミュレーション装置における力トランスデューサの機能を示すブロック図である。
【図５】図４に示す力トランスデューサの具体的な構成例を示す斜視図である。
【図６】本発明における面反力Ｆｓの求め方の基本概念を説明するための物体の側断面図である。
【図７】本発明において、仮想法線ベクトルＮｖを利用して面反力Ｆｓを求める手法を説明するための物体の側断面図である。
【図８】平面Ｓ上に定義された複数の仮想法線ベクトルＮｖから構成される仮想法線テクスチャＴを示す側面図である。
【図９】図８に示す仮想法線テクスチャＴを平面α上にマッピングすることにより体感することができる窪み状の仮想曲面αｖを示す側断面図である。
【図１０】作用点近傍の仮想法線ベクトルを適用する方法を示す平面図である。
【図１１】作用点Ｐに対する投影点Ｐｓを求める別な手法を示す側断面図である。
【図１２】本発明で用いる仮想法線テクスチャの作成方法の原理を示す図である。
【図１３】本発明で用いる仮想法線テクスチャの具体的な作成方法を示す図である。
【図１４】本発明に係るシミュレーション装置の動作手順を示す流れ図である。
【図１５】仮想物体の同一平面上に層構造をなすように複数の仮想法線テクスチャをマッピングした状態を示す斜視図である。
【図１６】２組の力トランスデューサを用いた本発明の構成を示す斜視図である。
【符号の説明】
１〜８…頂点
１０…物体情報設定手段
２０…ディスプレイ
３０…物体形状描画手段
４０…演算制御手段
５０…力トランスデューサ
５１…作用部
５２…位置検出部
５３…力発生部
６０…仮想法線テクスチャ作成手段
Ａ（ｘ）…濃度関数
Ｂ…仮想物体
Ｃ…力制御ベクトル
ｄ，ｄ０，ｄ１，ｄ２…作用点と仮想物体の表面との距離
Ｆｓ…面反力
ｆ…作用点Ｐに加わる力
Ｋ…硬さを示すパラメータ
Ｌ１〜Ｌ４…距離
Ｎ…法線ベクトル
Ｎｖ，Ｎｖ１〜Ｎｖ４…仮想法線ベクトル
Ｐ…作用点
Ｐ０…作用点の過去の位置
Ｐｓ…投影点
Ｐ（ｘ，ｙ，ｚ）…作用点Ｐの現時点の位置
Ｑ１〜Ｑ４…格子点
Ｓ…平面
Ｓｖ…仮想平面，仮想曲面
Ｔ，Ｔ（０），Ｔ（ｄ１），Ｔ（ｄ２）…仮想法線テクスチャ
α，β…仮想物体の表面
α（０），α（ｄ１），α（ｄ２）…表面近傍の層
θ…仮想法線ベクトルと法線ベクトルとのなす角度
【図１】
0003722994.tif 000002
【図２】
0003722994.tif 000003
【図３】
0003722994.tif 000004
【図４】
0003722994.tif 000005
【図５】
0003722994.tif 000006
【図６】
0003722994.tif 000007
【図７】
0003722994.tif 000008
【図８】
0003722994.tif 000009
【図９】
0003722994.tif 000010
【図１０】
0003722994.tif 000011
【図１１】
0003722994.tif 000012
【図１２】
0003722994.tif 000013
【図１３】
0003722994.tif 000014
【図１４】
0003722994.tif 000015
【図１５】
0003722994.tif 000016
【図１６】
0003722994.tif 000017