(57)【特許請求の範囲】
【請求項１】
仮想粒子の集合を表す粒子集合データと、該集合内の各粒子の位置を表す位置データと、他の粒子が侵入できる領域である相互作用場を内部に含む各粒子の構造データとを記憶する記憶手段と、
前記粒子の集合の形状を表す形状データを生成する形状生成手段と、
前記粒子の集合に対するユーザからの指示情報を入力する入力手段と、
前記指示情報に従って、２つの粒子の相互作用場が交叉する場合に該２つの粒子の相互作用場の間における粒子間相互作用を計算する相互作用計算手段と、
前記粒子間相互作用の計算結果に従って、前記集合内の少なくとも一部の粒子の位置を変更することで、前記形状を動的に変化させる変形手段と、
前記形状データに基づく形状情報を出力する出力手段とを備えることを特徴とする、
コンピュータを用いた仮想粘土システム。
【請求項２】
前記相互作用計算手段は、１つの粒子の相互作用場と前記指示情報に基づく外因作用との間における外因相互作用をさらに計算することを特徴とする請求項１記載の仮想粘土システム。
【請求項３】
前記記憶手段は、前記粒子の相互作用場として、球体および立方体のうちいずれか一方の空間を表すデータを記憶することを特徴とする請求項１または２記載の仮想粘土システム。
【請求項４】
前記相互作用計算手段は、仮想的な物理法則に基づく近似計算を用いて前記粒子間相互作用および外因相互作用を計算することを特徴とする請求項２記載の仮想粘土システム。
【請求項５】
前記相互作用計算手段は、前記粒子の仮想的な弾性および粘性のうち少なくとも一方に基づいて前記粒子間相互作用を計算し、前記外因作用に対する仮想的な反作用に基づいて前記外因相互作用を計算することを特徴とする請求項４記載の仮想粘土システム。
【請求項６】
前記形状生成手段は、前記粒子の集合の表面を表す膜データを含む前記形状データを生成することを特徴とする請求項１乃至５のいずれかに記載の仮想粘土システム。
【請求項７】
前記入力手段は、前記指示情報として、前記粒子の生成、前記粒子の消去、前記粒子の集合の変形、前記粒子の位置の固定、固定解除、前記粒子のグループ化、グループ解除、前記粒子の集合の並進、前記粒子の集合の回転、前記粒子の集合のスケール変更、および前記粒子の集合の表面の整形のうち、少なくとも１つ以上の操作の指示を入力することを特徴とする請求項１乃至６のいずれかに記載の仮想粘土システム。
【請求項８】
前記出力手段は、前記形状情報を視覚的に表示する２次元表示手段および３次元表示手段のうちのいずれかを含むことを特徴とする請求項１乃至７のいずれかに記載の仮想粘土システム。
【請求項９】
前記粒子の集合が表す仮想的な物体の触覚情報を出力する触覚出力手段をさらに備えることを特徴とする請求項１乃至８のいずれかに記載の仮想粘土システム。
【請求項１０】
前記粒子の集合が表す仮想的な物体上で発生した力の情報を伝達する力出力手段をさらに備えることを特徴とする請求項１乃至９のいずれかに記載の仮想粘土システム。
【請求項１１】
前記入力手段は、２次元ポインティング手段、３次元ポインティング手段、前記ユーザの手の位置を検出する位置検出手段、力入力手段、画面上に表示されたオペレーションパネル手段、および前記ユーザのジェスチャを検出するジェスチャ検出手段のうちのいずれかであることを特徴とする請求項１乃至１０のいずれかに記載の仮想粘土システム。
【請求項１２】
前記位置検出手段およびジェスチャ検出手段は、複数の位置センサ手段を含むグローブ型デバイスであることを特徴とする請求項１１記載の仮想粘土システム。
【請求項１３】
仮想粒子の集合を表す粒子集合データと、該集合内の各粒子の位置を表す位置データと、他の粒子が侵入できる領域である相互作用場を内部に含む各粒子の構造データとを記憶する記憶手段と、
前記粒子の集合の形状を表す形状データを生成する形状生成手段と、
前記粒子の集合に対するユーザからの指示情報を入力する入力手段と、
前記指示情報に従って、２つの粒子の相互作用場が交叉する場合に該２つの粒子の相互作用場の間における粒子間相互作用を計算する相互作用計算手段と、
前記粒子間相互作用の計算結果に従って、前記集合内の少なくとも一部の粒子の位置を変更することで、前記形状を動的に変化させる変形手段と、
前記粒子の集合が表す仮想的な物体の触覚情報および該物体上で発生した力の情報のうち、少なくとも一方の情報を出力する出力手段とを備えることを特徴とする、
コンピュータを用いた仮想粘土システム。
【請求項１４】
記憶手段に記憶された仮想粒子の集合を表す粒子集合データと、該集合内の各粒子の位置を表す位置データとを用いて、該粒子の集合の形状を表す形状データを生成する機能と、
前記粒子の集合に対するユーザからの指示情報を入力する機能と、
前記記憶手段に記憶された、他の粒子が侵入できる領域である相互作用場を内部に含む各粒子の構造データを用いて、前記指示情報に従って、２つの粒子の相互作用場が交叉する場合に該２つの粒子の相互作用場の間における粒子間相互作用を計算する機能と、
前記粒子間相互作用の計算結果に従って、前記集合内の少なくとも一部の粒子の位置を変更することで、前記粒子の集合の形状を動的に変化させる機能と、
前記形状データに基づく形状情報を出力する機能と
をコンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１５】
記憶手段に記憶された仮想粒子の集合を表す粒子集合データと、該集合内の各粒子の位置を表す位置データとを用いて、該粒子の集合の形状を表す形状データを生成する機能と、
前記粒子の集合に対するユーザからの指示情報を入力する機能と、
前記記憶手段に記憶された、他の粒子が侵入できる領域である相互作用場を内部に含む各粒子の構造データを用いて、前記指示情報に従って、２つの粒子の相互作用場が交叉する場合に該２つの粒子の相互作用場の間における粒子間相互作用を計算する機能と、
前記粒子間相互作用の計算結果に従って、前記集合内の少なくとも一部の粒子の位置を変更することで、前記粒子の集合の形状を動的に変化させる機能と、
前記粒子の集合が表す仮想的な物体の触覚情報および該物体上で発生した力の情報のうち、少なくとも一方の情報を出力する機能と
をコンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１６】
形状生成手段が、記憶手段に記憶された仮想粒子の集合を表す粒子集合データと、該集合内の各粒子の位置を表す位置データとを用いて、該粒子の集合の形状を表す形状データを生成し、
入力手段が、前記粒子の集合に対するユーザからの指示情報を入力し、
相互作用計算手段が、前記記憶手段に記憶された、他の粒子が侵入できる領域である相互作用場を内部に含む各粒子の構造データを用いて、前記指示情報に従って、２つの粒子の相互作用場が交叉する場合に該２つの粒子の相互作用場の間における粒子間相互作用を計算し、
変形手段が、前記粒子間相互作用の計算結果に従って、前記集合内の少なくとも一部の粒子の位置を変更することで、前記粒子の集合の形状を動的に変化させ、
出力手段が、前記形状データに基づく形状情報を出力することを特徴とする、
コンピュータを用いたシミュレーション方法。
【請求項１７】
形状生成手段が、記憶手段に記憶された仮想粒子の集合を表す粒子集合データと、該集合内の各粒子の位置を表す位置データとを用いて、該粒子の集合の形状を表す形状データを生成し、
入力手段が、前記粒子の集合に対するユーザからの指示情報を入力し、
相互作用計算手段が、前記記憶手段に記憶された、他の粒子が侵入できる領域である相互作用場を内部に含む各粒子の構造データを用いて、前記指示情報に従って、２つの粒子の相互作用場が交叉する場合に該２つの粒子の相互作用場の間における粒子間相互作用を計算し、
変形手段が、前記粒子間相互作用の計算結果に従って、前記集合内の少なくとも一部の粒子の位置を変更することで、前記粒子の集合の形状を動的に変化させ、
出力手段が、前記粒子の集合が表す仮想的な物体の触覚情報および該物体上で発生した力の情報のうち、少なくとも一方の情報を出力することを特徴とする、
コンピュータを用いたシミュレーション方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータにより実現される仮想空間（サイバースペース）において、粘土のモデルを用いて物体の形状変化のシミュレーションを行うシステムとその方法に関する。
【０００２】
【従来の技術とその問題点】
製品をデザインする過程において、製品イメージを明確にするために、デザイナーは、しばしば、その模型を形成することがある。デザイナーは、製品の縮小模型から実物大模型まで、様々な大きさ／形状の模型を試行錯誤しながら形成し、最終的な製品のデザインを決定する。
【０００３】
デザインは、製品に商品としての価値を与える重要な要素であるため、最適なデザインを決定するために、多数の模型が形成される。しかし、模型形成は実際の素材（粘土・木材・紙など）を利用して行われるため、素材の加工に少なからぬ労力を要する。したがって、模型形成には、膨大なコスト（労力・時間）を要するという問題がある。
【０００４】
この模型形成の工程において、デザインの質を落とさずに労力・時間を軽減することができれば、製品コストの低下に繋がる。また、一方では、デザインに必要な他の工程にかける割り当て時間を、充分に取ることができるようになると見込まれる。
【０００５】
現実世界の素材を用いたデザインのみならず、コンピュータを用いて生成される仮想世界（バーチャルリアリティ）における仮想的な建造物や造形品の設計製作においても、同様なことがいえる。
【０００６】
また、近年では、３次元（３Ｄ）ＣＡＤ（computer-aided design ）や３Ｄグラフィクスなどにおいて、３Ｄの造形ソフトウェアも利用されている。しかし、この造形ソフトウェアは、２次元（２Ｄ）のドロー系のソフトウェアを継承しているために、物体の形状の作成時に２Ｄのポインティングデバイスによる強い制約を受けることがある。
【０００７】
また、３Ｄ物体の断面を利用した設計、並進複写や回転複写などを利用した３Ｄ物体の再現、曲面の一部を表すパッチを制御することによる３Ｄ物体の表面形成・曲面の操作などを行うこともある。
【０００８】
したがって、従来の造形ソフトウェアでは、複雑で非効率的な操作がユーザに要求され、一通りの操作手順を覚えるまでは、物体の形状を作成することは困難である。このように、３Ｄの造形ソフトウェアによれば、素材を加工する手間を省くことができるが、操作のための特殊技能の習得が必要であり、誰でも簡単に利用できるわけではないという問題がある。
【０００９】
本発明の課題は、コンピュータにより実現される仮想空間において、簡単な操作で、効率よく物体の形状のシミュレーションを行うことのできるシステムとその方法を提供することである。
【００１０】
【課題を解決するための手段】
図１は、本発明の仮想粘土システムの原理図である。図１の仮想粘土システムは、コンピュータを用いて実現され、入力手段１、変形手段２、記憶手段３、形状生成手段４、および出力手段５を備える。
【００１１】
記憶手段３は、仮想粒子の集合を表す粒子集合データと、その粒子の集合内の各粒子の位置を表す位置データとを記憶し、形状生成手段４は、上記粒子の集合の形状を表す形状データを生成する。また、入力手段１は、上記粒子の集合に対するユーザからの指示情報を入力し、変形手段２は、その指示情報に従って、上記集合内の少なくとも一部の粒子の位置を変更することで、上記形状を動的に変化させる。そして、出力手段５は、上記形状データに基づく形状情報を出力する。
【００１２】
仮想粒子の集合は、各粒子の位置を変更することで、その形状を自由に変化させることができ、仮想空間における粘土のような素材の性質をシミュレートする。記憶手段３には、粒子の集合に含まれる粒子の数や各粒子の識別子などを含む粒子集合データと、仮想空間における各粒子の位置を表す位置データが記憶されており、形状生成手段４は、各粒子の位置データをもとにして、集合全体が表す仮想的な物体の形状データを生成する。
【００１３】
入力手段１は、例えば、粒子の集合を変形させる指示情報を入力し、変形手段２は、それに従って、位置を変更すべき粒子とその移動量を計算する。これにより、集合内の粒子の一部または全部の位置データが変更され、形状生成手段４は、更新された位置データをもとにして、さらに形状データを生成する。そして、出力手段５は、生成された形状データに基づき、物体の形状情報を画像などの形で出力する。
【００１４】
このような仮想粘土システムによれば、連続的に指示情報が入力されたとき、各制御時刻における形状データが計算され、対応する形状情報が出力される。したがって、ユーザは、指示情報を入力しながら、仮想的な物体の形状の変化をリアルタイムで認識することができる。
【００１５】
また、物体の表面の情報だけでなく、その内部の構造を粒子の集合として表すことで、表面の変形操作を、各粒子の移動によりシミュレートすることができる。これにより、内部構造を持つ粘土をこねるような感覚で、直観的に変形操作を行うことが可能となり、指示情報の入力方法も簡単化される。また、出力手段５として、表示装置以外の出力装置を用いることで、仮想的な物体の触覚情報や物体上で発生した力の情報をユーザに伝達することもできる。
【００１６】
例えば、図１の入力手段１は、後述する図３の入力装置２３に対応し、変形手段２と形状生成手段４はＣＰＵ（中央処理装置）２１とメモリ２２に対応し、記憶手段３はメモリ２２に対応し、出力手段５は出力装置２４に対応する。
本発明の別の仮想粘土システムは、コンピュータを用いて実現され、入力手段１、変形手段２、記憶手段３、形状生成手段４、出力手段５、および相互作用計算手段を備える。記憶手段３は、仮想粒子の集合を表す粒子集合データと、その集合内の各粒子の位置を表す位置データと、他の粒子が侵入できる領域である相互作用場を内部に含む各粒子の構造データとを記憶する。形状生成手段４は、上記粒子の集合の形状を表す形状データを生成する。入力手段１は、上記粒子の集合に対するユーザからの指示情報を入力する。相互作用計算手段は、その指示情報に従って、２つの粒子の相互作用場が交叉する場合にそれらの粒子の相互作用場の間における粒子間相互作用を計算する。変形手段２は、粒子間相互作用の計算結果に従って、上記集合内の少なくとも一部の粒子の位置を変更することで、形状を動的に変化させる。出力手段５は、上記形状データに基づく形状情報を出力する。
【００１７】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
従来の模型形成では実際の素材を利用しているが、模型形成をコンピュータ上でシミュレートすれば、素材のコストや素材加工に要する時間を削減することができる。また、従来の造形ソフトウェアにおける操作とは別に、より現実世界に近いような操作性を実現できれば、一層、模型生成時間を短縮できる。このために必要な技術としては、次のようなものが挙げられる。
（１）コンピュータ上の仮想世界において、素材の物理的・物質的性質をシミュレートできること
（２）コンピュータ上の仮想世界において、現実世界の操作性をシミュレートできること
また、コンピュータ上で実現することの利点は、現実世界では実現不可能な操作を実現できる可能性があることである。
【００１８】
本発明においては、変形が容易で一定の形状を保持できる素材の代表として粘土を選び、コンピュータ上の素材として仮想的な粘土（以下、仮想粘土またはバーチャクレイ（Virtuaclay）と呼ぶ）を想定する。そして、コンピュータ上で、仮想的な物理法則の下に、仮想粘土の形状の変化をシミュレートする。図２は、このようなシミュレーションを行う仮想粘土システム（バーチャクレイシステム）を示している。
【００１９】
図２において、コンピュータ上の仮想空間１１に存在するバーチャクレイ１５は多数の粒子から成っており、バーチャクレイ１５のモデルとその内部状態がデータとして保持されている。ユーザは、制御情報入力装置１３から仮想空間１１に制御情報を入力し、感覚情報出力装置１２から感覚情報を受け取る。また、出力装置１４は、必要に応じて、バーチャクレイモデルのデータやその他のオブジェクトのデータを出力する。
【００２０】
オブジェクトとは、オブジェクト指向プログラミングにおける情報の単位であり、データとそれに適用される手続きであるメソッドとの組みを有する。オブジェクトに定義されたメソッドを実行することで、様々な情報処理が実現される。バーチャクレイシステムにおけるオブジェクトの詳細については、後述することにする。
【００２１】
制御情報入力装置１３は、バーチャクレイ１５を仮想的に加工するための指示を入力する装置であり、例えば、２Ｄ／３Ｄポインティングデバイス、インスツルメントグローブ、力入力装置が用いられる。また、感覚情報出力装置１２は、加工されたバーチャクレイ１５の形状等を出力する装置であり、例えば、２Ｄ／３Ｄ表示装置、触覚出力装置、力出力装置が用いられる。
【００２２】
２Ｄポインティングデバイスは、例えばマウスであり、３Ｄポインティングデバイスは、例えば、３Ｄの移動と回転を含む操作性を持つポインティングデバイスである。また、インスツルメントグローブは、仮想世界での様々な手の動きを可能にする３Ｄ位置センサー付きのグローブで、データグローブとも呼ばれる。各センサーは、指の位置と動きを正確に検出し、仮想世界での物体の移動や変形に反映させる。
【００２３】
また、力入力装置は、例えば、指サック状のジンバル（gimbal）の中に指先を入れて力を入力する装置で、指先の位置を入力する３Ｄ位置センサーとしても機能する。このような力入力装置は、力出力装置の機能を兼ねることもでき、素材からの反力をリアルタイムで指先にフィードバックする。これにより、ユーザは、仮想空間の物体の堅さや表面の摩擦等を感じることができる。
【００２４】
表示装置としては、通常のデスクトップ型のディスプレイ装置以外に、例えば、仮想世界を知覚（人工感覚）するためのヘッドマウントディスプレイが用いられる。また、触覚出力装置としては、例えば、インスツルメントグローブに装着されたバイブレータが用いられる。このような入出力装置を利用することで、仮想世界の素材加工操作と現実世界のそれとの差異が低減される。
【００２５】
バーチャクレイの物理的・物質的な性質をシミュレートするには様々な手法が考えられる。ここでは、必ずしも力学系を正確にシミュレートする必要はなく、リアルタイムなインタラクションが要求される点を考慮して、模型の自然な作成環境をシミュレートすればよい。この環境を支配する規則を近似物理法則または擬似物理法則と呼ぶことにし、それをコンピュータ上の近似計算で実現する。
【００２６】
粘土に対する変形操作としては、ちぎる、こねる、つける、引き延ばす、つまむ、合わせる、混ぜるなどが考えられるが、これらの操作機能を擬似物理法則の下で実現する。より具体的には、制御情報入力装置１３から指示される操作機能を、仮想空間１１における簡単な力学的基本要素の組合せで実現する。そして、これらの操作に伴う触覚または力覚の情報を、感覚情報出力装置１２を介して出力する。
【００２７】
このようなコンピュータ上のバーチャクレイシステムによれば、模型の複製、拡大・縮小、移動、さらには模型表面の平滑化、修正、変更、部品化、再利用などの操作を簡易に行うことができる。特に、拡大・縮小などは、現実の模型では不可能な操作であるが、小さなバーチャクレイで概形を作っておいてからそれを大きくして細部を加工する場合などに便利である。
【００２８】
本実施形態のバーチャクレイシステムは、例えば、図３に示すようなコンピュータ（情報処理装置）により実現される。図３の情報処理装置は、ＣＰＵ（中央処理装置）２１、メモリ２２、入力装置２３、出力装置２４、外部記憶装置２５、媒体駆動装置２６、ネットワーク接続装置２７を備え、それらの各装置はバス２８により互いに結合されている。
【００２９】
ＣＰＵ２１は、メモリ２２に格納されたプログラムを実行して、バーチャクレイシステムの処理を実現する。メモリ２２としては、例えばＲＯＭ（read only memory）、ＲＡＭ（random access memory）等が用いられる。
【００３０】
入力装置２３は、図２の制御情報入力装置１３やキーボードなどに相当し、ユーザからの操作指示の入力に用いられる。出力装置２４は、図２の感覚情報出力装置１２やプリンタなどに相当し、仮想世界の模型などの情報の出力に用いられる。
【００３１】
外部記憶装置２５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク（magneto-optical disk）装置等であり、プログラムやデータを保存することができる。また、作成された模型のデータを保存するデータベースとしても使用することができる。
【００３２】
媒体駆動装置２６は、可搬記録媒体２９を駆動し、その記憶内容にアクセスする。可搬記録媒体２９としては、メモリカード、フロッピーディスク、ＣＤ−ＲＯＭ（compact disk read only memory ）、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体を使用することができる。この可搬記録媒体２９には、データのほかに、バーチャクレイシステムの処理を行うプログラムが格納される。
【００３３】
ネットワーク接続装置２７は、ＬＡＮ（local area network）などの任意の通信ネットワークに接続され、通信に伴うデータ変換などを行う。情報処理装置は、ネットワーク接続装置２７を介して、ネットワークから必要な情報を受け取ることができる。
【００３４】
次に、バーチャクレイを実現する上で関連する技術を列挙する。
（１）３Ｄのパッチで物体の表面を形成し、制御点をインタラクティブに制御する。このアルゴリズムによる設計方法は、次の２つの文献に記載されている。
H. J. Lamousin and W. N. Waggenspack, Jr.,“NURBS-Based Free-Form Deformations, ”IEEE Computer Graphics and Applications, 11, pp.59-65,(1994).H. Qin and D. Terzopoulos,“D-NURBS: A Phisics-Based Framework for Geometric Design ”IEEE Transactions on Visualization and Computer Graphics, Vol. 2, No. 1, pp.85-96,(1996).
（２）体積という量を定義したソリッドモデルを想定し、変形時において体積を保存するという制約の下で、その形状を制御する。この技術については、次の文献に記載されている。
A. Rappoport, A. Sheffer and M. Bercovier,“Volume-Preserving Free-Form Solids, ”IEEE Transactions on Visualization and Computer Graphics, Vol. 2, No. 1, pp.19-27,(1996).
（３）高分子の構造を表示する際に、結合構造だけではなく、分子の表面を計算して、その空間に占める形状を表現する。この技術については、次の文献に記載されている。
A. Varshneym, F. P. Brooks, Jr. and W. V. Wright, “Computing Smooth Molecular Surfaces,”IEEE Computer Graphics and Applications, 9, pp.19-25,(1994).
（４）人の指などで可塑性のある物体を変形させる際の作用・反作用をシミュレートする。物体の弾性を指先の触覚に対して表現し、かつ、指先からの力を検出して、シミュレーション用のデータに変換するデバイスを通じて、変形の相互作用を実現する。この技術については、次の文献に記載されている。
K. Hirota and M. Hirose,“Providing Force Feedback in Virtual Environments, ”IEEE Computer Graphics and Applications, 9, pp.22-39,(1995).
（５）オブジェクト間のメッセージパッシングにより、多体問題の並列計算を行う。この技術については、次の文献に記載されている。
八杉昌宏＆米澤明憲，“Ｎ体問題の並列オブジェクト指向アルゴリズム，”日本ソフトウェア科学会第８回大会論文集，pp.405-408,(1992).
（６）仮想空間における物体と物理法則を定義し、指と物体および物体相互の干渉計算を行う体系的なソフトウェアを構築する。この技術については、次の文献に記載されている。
広田光一＆木島竜吾，“バーチャルリアリティ・ソフトウェア，”共立出版，仮想現実学への序曲，ｂｉｔ８月号別冊，pp.132-142,(1994).
この文献には、変形面とスイッチを用いた特殊なインタフェースを持つ電子粘土システムが紹介されているが、これは単に物体の表面の形状変化をシミュレートするシステムであり、内部に多数の粒子を持つ本発明のバーチャクレイとは本質的に異なる。
【００３５】
ここで、列挙した技術は、バーチャクレイシステム実現のための必須技術というわけではなく、現状においてこれらの技術を組み合わせることにより、バーチャクレイシステムが技術的に実施可能であることを示しているに過ぎない。
【００３６】
次に、本実施形態のバーチャクレイの技術が実装されるモデルについて説明する。このバーチャクレイのモデルと上述した関連技術を統合して、バーチャクレイシステムが実現される。
【００３７】
バーチャクレイは、小さな球体や立方体などの任意の形状の仮想粒子の集合として定義され、それがバーチャクレイの概形を形成する。各粒子は、符号や番号などの識別情報により区別し、粒子の集合の表面に皮膜を形成して、物体の形状を表すことにする。形状の変化は、各粒子の位置を変えることで制御される。
【００３８】
また、各粒子は機能的な近傍を備えており、粒子と粒子、粒子の近傍と近傍、粒子と外因作用（ユーザの指の動きなど）の間において、相互作用（インタラクション）が定義される。この相互作用としては、実際の物理法則による物理シミュレーションを用いてもよく、処理の高速化のために適当な擬似物理法則を利用してもよい。
【００３９】
図４は、バーチャクレイを構成する球形の仮想粒子の構造を示している。図４の粒子は、空間の位置情報として、ユークリッド座標系における中心位置の座標Ｘ＝（ｘ1 ，ｘ2 ，ｘ3 ）を有する。そして、その位置を中心に、複数の層から成る近傍構造３１を持っている。
【００４０】
例えば、最も内側の層３２は、核（Core）と呼ばれ、粒子の中心Ｘから半径ｒC の大きさで球状に広がっている。各粒子は他の粒子の核３２に侵入できない性質を持つ。これに対して、他の層は、相互作用場（Interaction field ）と呼ばれ、弾性や粘性といった他の粒子との間の相互作用を規定する。これらの層のうち最も外側のものは、中心Ｘから半径ｒI の大きさで球状に広がり、粒子の大きさを決定している。
【００４１】
このような近傍構造３１においては、より内側の層の性質がより外側の層の性質に優先される。したがって、弾性などの相互作用が定義された層であっても、他の粒子の核３２には侵入することができない。
【００４２】
近傍３１に割り付けられる擬似物理法則は、粒子−粒子相互作用、粒子−外因子相互作用として、相互作用の相手に応じて決められる。粒子−粒子相互作用は、粒子間の位置関係（距離）を媒介パラメータとして定義され、単に、引力、斥力、侵入禁止といった単純な性質にとどまらず、他の様々な性質を規定する。これにより、多様な材質のバーチャクレイが構成される。
【００４３】
例えば、引力層と斥力層を交互に持つような粒子を用いて、奇妙な手ごたえを持つ素材を表現することができる。また、特定の粒子とのみ引き合う／斥け合う性質を用いることで、フラクタル結晶構造のような状態を創り出すことができる。また、それに色付けすることで、陶器の釉薬のような面白い視覚的効果が得られる。
【００４４】
これらの相互作用による効果は、実際にシミュレーションにより確かめることができ、各ユーザは、思い思いに近傍構造３１を設計して、その情報をライブラリとして保存しておくことができる。ライブラリの情報は、必要に応じて呼び出されて、再利用される。
【００４５】
次に、図５から図９までを参照しながら、仮想粒子間の相互作用の例を説明する。
図５は、粒子の移動操作による隣接粒子への影響の伝播を示している。図５において、粒子Ｐの位置をＸ＝（ｘ1 ，ｘ2 ，ｘ3 ）とし、粒子Ｐに対する移動操作はベクトルΔＸ＝（Δｘ1 ，Δｘ2 ，Δｘ3 ）で表現されるものとする。この位置変更操作による粒子Ｐの移動後の位置Ｘ′は、Ｘ′＝Ｘ＋ΔＸにより計算される。粒子Ｐが移動することにより、粒子Ｐに接触していた粒子Ｑは次のように移動する。
【００４６】
まず、粒子Ｑの位置をＹ＝（ｙ1 ，ｙ2 ，ｙ3 ）とする。ＸとＹを結ぶ直線ＸＹに対してベクトルΔＸを垂直に射影して得られるベクトルを、ベクトルΔＹ＝Ｐｒｏｊ（ΔＸ，ＸＹ）とする。このベクトルΔＹが、粒子Ｑの移動操作のベクトルとなる。したがって、粒子Ｐの移動に伴う粒子Ｑの移動後の位置は、Ｙ′＝Ｙ＋ΔＹ＝Ｙ＋Ｐｒｏｊ（ΔＸ，ＸＹ）となる。粒子Ｒについても同様の計算が行われる。
【００４７】
図６は、移動操作に対する粒子の弾性（plasticity/elasticity ）を模した近傍の効果を示している。粒子間の弾性を模倣する規則は、上述の相互作用場の性質で実現される。今、２つの粒子ＰとＱの相互作用場が交叉していないとする。２つの粒子の相互作用場は、互いの相互作用場の侵入を許すが、より内部の核の侵入は許さない。移動操作により侵入される粒子をＰ、侵入する粒子をＱとし、次のような規則を割り付ける。
【００４８】
２つの粒子の中心Ｘ、Ｙを結ぶ直線をＰＱとし、粒子Ｑの場が粒子Ｐの場にＱ→Ｐ方向にｒだけ侵入した場合、適当な係数をｃP （０＜ｃP ＜１）として、粒子ＰをＱ→Ｐ方向にｃP ｒだけ移動させる。また、粒子Ｑは、適当な係数をｃQ （０＜ｃQ ＜１）として、Ｐ→Ｑ方向にｃQ ｒだけ押し戻され、そのＱ→Ｐ方向の移動量はｒ−ｃQ ｒとなる。その結果、粒子Ｐの中心ＸはＸ′の位置に移動し、粒子Ｑの中心ＹはＹ′の位置に移動する。典型的には、このような規則により粒子間の弾性が模倣される。
【００４９】
また、図７は、移動操作に対する粒子の粘性（viscosity ）を模した近傍の効果を示している。粒子間の粘性を模倣する規則も、相互作用場の性質で実現される。今、２つの粒子ＰとＱの相互作用場が交叉しているとする。粒子ＰがＱ→Ｐ方向にｒだけ移動すると、適当な係数をｄQ （０＜ｄQ ＜１）として、粒子ＱはＱ→Ｐ方向にｄQ ｒだけ移動する。その結果、粒子Ｐの中心ＸはＸ′の位置に移動し、粒子Ｑの中心ＹはＹ′の位置に移動する。このような規則により粒子間の粘性が模倣される。
【００５０】
図５に示したような移動操作とは逆に、接触している粒子を分離させるような操作も可能である。この場合も、上述の移動による変形と同様な計算を行うが、移動ベクトルの方向は逆になる。図５のような移動操作を粒子の押し込みと呼ぶならば、この移動操作は粒子の引き剥がしと呼ぶことができる。
【００５１】
図８は、粒子の引き剥がしによる隣接粒子への影響の伝播を示している。図８において、粒子Ｐの位置をＸとし、粒子Ｐに対する移動操作はベクトルΔＸで表現されるものとする。このとき、粒子Ｐの移動後の位置Ｘ′は、Ｘ′＝Ｘ＋ΔＸにより与えられる。粒子Ｐが移動することにより、粒子Ｐに接触していた粒子Ｑは次のように移動する。
【００５２】
粒子Ｑの位置をＹとし、ＸとＹを結ぶ直線ＸＹに対してベクトルΔＸを垂直に射影して得られるベクトルをＰｒｏｊ（ΔＸ，ＸＹ）とする。このとき、引き剥がしによる移動量の伝達率（transmission efficiency ）をｃT として、粒子Ｑの移動ベクトルを、ベクトルΔＹ＝ｃT Ｐｒｏｊ（ΔＸ，ＸＹ）とする。したがって、粒子Ｐの移動に伴う粒子Ｑの移動後の位置は、Ｙ′＝Ｙ＋ΔＹ＝Ｙ＋ｃT Ｐｒｏｊ（ΔＸ，ＸＹ）となる。粒子Ｒについても同様の計算が行われる。
【００５３】
移動量の伝達率ｃT は、図９に示すように、最初に移動する粒子から遠く離れるに従って急激に小さくなるように設定される。したがって、一定距離より遠く離れた粒子は、引き剥がしの影響を受けることはない。このような伝達率は、粘性を模倣した規則により実現することができる。このような引き剥がしの規則を用いて、いくつかの粒子を元の集合から分離する操作と、それによるバーチャクレイの変形を実現できる。
【００５４】
バーチャクレイを構成する仮想粒子の集合に対する操作としては、次のようなものが挙げられる。まず、表面の皮膜が連続したままの変形操作には、皮膜に穴を空けないような操作と、皮膜に穴を空けるような操作とがある。
【００５５】
皮膜に穴を空けない操作としては、例えば、任意の粒子の移動による変形、いくつかの粒子を固定したまま他の粒子を移動させるような変形が含まれ、後者の場合は、粒子集合内に、変形操作の影響を受けない部分集合を設定できる。また、粒子集合内の部分集合単位の移動による変形も考えられる。皮膜に穴を空ける操作の場合は、うがたれる穴を中心として、局所的に粒子集合の最外殻の位置が再計算される。
【００５６】
また、形状を変化させないアフィン変換による変形操作も、皮膜が連続したままの変形操作の１つである。この操作には、粒子集合の並進操作、回転操作、拡大／縮小操作などが含まれる。アフィン変換操作は、例えば、画面表示された操作パネル上での指示に対して割り当てられたり、データグローブを装着した手によるジェスチャに対して割り当てられたりする。
【００５７】
また、通常の操作の範囲で、変形を指示する入力に閾値を設定しておき、入力がしきい値より小さければアフィン変換を行うようにすることもできる。さらに、上述の部分集合単位で、アフィン変換による変形を行ってもよい。
【００５８】
次に、コネルという操作は、粒子の空間配置を均一にする操作で、粒子の数をを増減したり、粒子の近傍構造を変えたり、粒子の識別符号を置換したりする操作を含む。例えば、色の異なる２種類の粒子を含むバーチャクレイをコネルことにより、色の分布を均一にすることができる。
【００５９】
また、仮想的な道具を使用して、粒子集合を加工することも可能である。例えば、仮想的なマーカは、粒子集合の領域や境界を指定するために用いられ、仮想的な馬楝（ばれん）は、表面形状の変更／整形のために用いられ、力学的ファンは、風圧により表面形状を変化させるために用いられる。このような表面仕上げのために用いられる道具は、フィニッシャ（finisher）と呼ばれ、具体的には、粒子の位置データをフィルタリングすることで、それらをなめらかに配置する処理を行う。
【００６０】
さらに、各粒子に適用される擬似物理法則のパラメータ値を変更することで、バーチャクレイの特性を変更する操作を行うこともできる。例えば、温度の変化により粒子間の結合の強さを表すパラメータを変化させて、凝固、融解、気化などの現象をシミュレートすることができる。この場合、バーチャクレイを加熱する仮想的な道具として、ドライヤーを定義しておいてもよい。
【００６１】
また、粒子集合の接合操作と分割操作は、次のようにして行われる。２つの粒子集合を接合した場合、各集合に属する粒子は、図１０に示すように、同一の皮膜に覆われる場合と、図１１に示すように、異なる皮膜に覆われる場合とがある。
【００６２】
図１０の接合操作では、粒子集合Ｌ、Ｒを結合させると、これらに属する粒子は互いに混ざり合うのに対して、図１１の接合操作では、粒子集合Ｌ、Ｒは接触しているだけで、それらの粒子は混ざり合っていない。どちらの場合も、結合後の粒子は、次の変形操作を受ける際の基本単位として扱われる。
【００６３】
これに対して、粒子集合を分割する場合は、図１２に示すように、元の集合が２つ以上の部分集合に分けられ、部分集合同士が接触しないように、それぞれ、異なる皮膜で覆われる。この操作においては、まず、元の集合の最外殻の粒子において分離する位置を指定し、適当な規則を決めて分離境界を設定する。そして、境界上の粒子を部分集合に振り分け、それぞれの新しい最外殻粒子を決める。
【００６４】
このように様々な操作を仮想粒子集合に対して行うことで、バーチャクレイの外見が変化する。このバーチャクレイの外見を決めるのが皮膜であり、皮膜生成は、粒子集合に対する作用の一つとして定義される。皮膜の形状は、粒子集合の最外殻を成す粒子の位置により決められるが、その表面を表現するパッチとしては任意のものを採用することができる。また、粒子集合内の各粒子は、最外殻に位置するか否かを示す識別情報を持っている。
【００６５】
最外殻粒子の計算および皮膜表面のパッチの計算には、例えば、線形計画法を利用することができる。線形計画問題の代表的な解法として知られているシンプレックス法は、解を表す空間の許容領域の境界上に位置する頂点をたどって、最適解に到達する方法である。シンプレックス法に基づく最外殻粒子の計算方法の詳細は、上述の“Computing Smooth Molecular Surfaces ”に記述されているが、そのアルゴリズムについては後述することにする。
【００６６】
仮想粒子の集合が複雑な形状を有する場合、粒子の複雑な空間配置から最外殻を一度で計算する必要はなく、複雑なバーチャクレイの形状は、逐次的に生成されていく。局所的な変形で形状が変わることを考えれば、そのような変形が加えられる度にローカルに最外殻を更新することで、計算は簡単になる。
【００６７】
また、仮想粒子の集合の変形作用に対する反作用の計算も定義することができる。反作用の模倣に利用可能な量としては、粒子の平均移動ベクトル、粒子の仮想的な重さ（質量）、作用点となる最外殻の粒子の移動ベクトル、反作用の計算における近傍の相互作用のパラメータなどがある。
【００６８】
反作用の模倣に必要な計算方法としては、例えば、基本操作に対する反作用をテーブル化してメモリに格納しておき、該当する操作が行われたときにそれを参照する方法がある。この場合、音を出す、色を変化させる、手応え（反力）を出力するなどの反作用があらかじめ設定される。
【００６９】
また、粒子の平均移動ベクトル、仮想仕事量、仮想質量などから反作用を計算することもでき、近傍系の弾性や粘性による損失移動ベクトルから反作用を計算することもできる。
【００７０】
次に、図１３から図２１までを参照しながら、本実施形態のバーチャクレイシステムの構成をより詳細に説明する。
図１３は、バーチャクレイシステムのブロック図である。図１３のシステムは、図３に示したような情報処理装置を用いて実現され、入力装置２３として、２Ｄ／３Ｄポインティングデバイス（ＰＤ）４１、データグローブ（ＤＧ）４２、および力入力装置（ＦＩ）４３を備え、出力装置２４として、２Ｄ／３Ｄディスプレイ（ＤＳ）４４、バイブレータ（ＶＢ）４５、および力出力装置（ＦＯ）４６を備える。
【００７１】
また、メモリ２２上にはソフトウェアにより、２Ｄ／３Ｄポインティングデバイスのモデル（ＰＤ′）５１、データグローブのモデル（ＤＧ′）５２、力入力装置のモデル（ＦＩ′）５３、オペレーションパネルのモデル（ＯＰ′）５４、ジェスチャシステムのモデル（ＧＳ′）５５、バーチャクレイのモデル（ＶＣ′）５６、２Ｄ／３Ｄディスプレイのモデル（ＤＳ′）５７、バイブレータのモデル（ＶＢ′）５８、および力出力装置のモデル（ＦＯ′）５９が生成される。
【００７２】
ＰＤ′５１は、ＰＤ４１から入力された情報をＯＰ′５４、ＤＳ′５７、およびＶＣ′５６に伝え、ＤＧ′５２は、ＤＧ４２から入力された情報をＯＰ′５４、ＧＳ′５５、ＤＳ′５７、およびＶＣ′５６に伝え、ＦＩ′５３は、ＦＩ４３から入力された情報をＤＳ′５７およびＶＣ′５６に伝える。また、ＯＰ′５４は、ＰＤ′５１、ＤＧ′５２、およびＧＳ′５５から受け取った情報をＤＳ′５７およびＶＣ′５６に伝え、ＧＳ′５５は、ＤＧ′５２から受け取った情報をＯＰ′５４およびＤＳ′５７に伝える。
【００７３】
ＶＣ′５６は、粒子モデルを含み、操作（オペレーション）、ツール、粒子のパラメータなどの定義を、データや手続きとして持っている。オペレーションとしては、粒子生成（create）、粒子消去（discard ）、変形（deformation ）、固定（fix ）、固定解除（unfix ）、グループ化（group ）、グループ解除（ungroup ）、並進（translate ）、回転（rotate）、スケール変更（scale ）、皮膜生成（surface generation）などの手続きが定義される。
【００７４】
粒子生成とは、新たな粒子を生成する操作を表し、粒子消去とは、既存の粒子を消去する操作を表す。また、変形とは、粒子集合を変形する操作を表し、通常、各粒子の移動を伴う。また、固定とは、移動しない粒子の指定操作を表し、固定解除とは、その指定を解除する操作を表す。
【００７５】
また、グループ化とは、２つ以上の粒子集合を１つの集合に統合する操作を表し、グループ解除とは、１つの粒子集合を２つ以上の集合に分割する操作を表す。また、並進、回転、およびスケール変更は、粒子集合のアフィン変換操作を表し、皮膜生成とは、粒子集合の表面に皮膜を生成する操作を表す。
【００７６】
また、ツールとしては、グループ化およびグループ解除の際に粒子集合の境界を指定するマーカや、外形を整えるフィニッシャなどの手続きが定義され、粒子のパラメータとしては、核の半径ｒC 、相互作用場の半径ｒI 、弾性係数、粘性係数などが定義される。
【００７７】
ＶＣ′５６は、ＰＤ′５１、ＤＧ′５２、ＦＩ′５３、およびＯＰ′５４から受け取った情報に基づいて、対応する手続きを実行し、その結果得られた情報をＯＰ′５４、ＤＳ′５７、ＶＢ′５８、およびＦＯ′５９に伝える。
【００７８】
また、ＤＳ′５７は、ＰＤ′５１、ＤＧ′５２、ＦＩ′５３、ＯＰ′５４、ＧＳ′５５、およびＶＣ′５６から受け取った情報に基づき、ＤＳ４４に画像を表示させ、ＶＢ′５８は、ＶＣ′５６から受け取った情報に基づき、ＶＢ４５を振動させ、ＦＯ′５９は、ＶＣ′５６から受け取った情報に基づき、ＦＯ４６から力を出力させる。
【００７９】
ＶＣ′５６において、例えば、図１４に示すようなバーチャクレイモデルの粒子集合Ｐ（ｔS ）は、次のように記述される。
Ｐ（ｔS ）＝｛．．．，ｐi （ｔS ），ｐi+1 （ｔS ），．．．｝  （１）
ここで、ｐi （ｔS ）は、サンプリング時刻ｔS におけるｉ番目の粒子（ｉ＝１，２，３，．．．）の中心位置を表す３次元空間の座標であり、
ｐi （ｔS ）＝［ｘi （ｔS ），ｙi （ｔS ），ｚi （ｔS ）］T   （２）
と書ける。通常、粒子の位置が変化するのは、なんらかの操作が行われたときであるので、ｔS としては、操作入力があったときの時刻が採用されることになる。また、Ｐ（ｔS ）の外形を表す皮膜は、Ｓｕｒｆａｃｅ（Ｐ（ｔS ））と記述される。
【００８０】
別の粒子集合Ｑ（ｔS ）についても同様に、
Ｑ（ｔS ）＝｛．．．，ｑi （ｔS ），ｑi+1 （ｔS ），．．．｝  （３）
と記述され、その皮膜はＳｕｒｆａｃｅ（Ｑ（ｔS ））と記述される。以下では、特に断らない限り、位置座標やベクトルは３次元の量を表すものとする。
図１５は、ＰＤ４１の例とＤＳ４４の画面の例を示している。例えば、ユーザが２Ｄまたは３ＤのＰＤ４１を操作して、変位ベクトルΔｘpd（ｔS ）と変位操作の作用点の位置ｘpd（ｔS-1 ）の情報を入力する場合を考える。ＰＤ４１が２Ｄのマウスなどの場合、ｚ軸方向の変位はクリック回数またはクリック間隔などにより指定される。
【００８１】
各操作時刻ｔS におけるベクトルΔｘpd（ｔS ）が入力されると、ＰＤ′５１は、次式により、それらをモデルの世界の変位ベクトルΔｘ′pd（ｔS ）に変換する。
Δｘ′pd（ｔS ）＝Ｇａｉｎ（Δｘ′pd（ｔS ））＋Ｏｆｆｓｅｔ  （４）
ここで、Ｇａｉｎは適当な関数であり、Ｏｆｆｓｅｔは定数である。Ｇａｉｎの関数形は、実験により決められる。ｘpd（ｔS-1 ）もまた、（４）式と同様にして、仮想世界の座標ｘ′pd（ｔS-1 ）に変換される。
【００８２】
次に、ＶＣ′５６は、Δｘ′pd（ｔS ）とｘ′pd（ｔS-1 ）に基づき変形オペレーションを実行して、粒子集合Ｐ（ｔS ）を変形する。このとき、ＰＤ′５１の入力手続きとして、次のような計算が行われる。
Δｐi （ｔS ）＝Δｘ′pd（ｔS ），                            （５）
∀ｉ，｜ｘ′pd（ｔS-1 ）−ｐi （ｔS-1 ）｜＜ｒI ，
ｐi （ｔS-1 ）∈Ｐ（ｔS-1 ）
ここで、Δｐi （ｔS ）は、各粒子の移動ベクトルを表し、ｐi （ｔS-1 ）は、変位前の時刻ｔS-1 における粒子集合Ｐ（ｔS-1 ）の各粒子の位置を表す。したがって、ｘ′pd（ｔS-1 ）が相互作用場内に入っているような粒子のみが、ベクトルΔｘ′pd（ｔS ）の作用を受けて移動し、その他の粒子の位置は変化しない。
【００８３】
次に、ＶＣ′５６は、決められた変形アルゴリズムに従って、最初に移動した粒子の移動ベクトルΔｐi （ｔS ）の影響を、粒子集合Ｐ（ｔS-1 ）全体に反映させ、操作後の粒子集合Ｐ（ｔS ）を生成する。そして、皮膜生成オペレーションを実行して、Ｓｕｒｆａｃｅ（Ｐ（ｔS ））を生成し、その情報を出力する。
【００８４】
ＤＳ′５７は、Ｓｕｒｆａｃｅ（Ｐ（ｔS ））の情報に基づき、そのグラフィックデータを生成し、ＤＳ４４の画面に表示する。図１５では、時刻ｔS-1 における粒子集合Ｐ（ｔS-1 ）の形状が示されているが、粒子集合Ｐ（ｔS ）の形状も同様にして表示される。
【００８５】
次に、図１６は、ＤＧ４２上に装着されたＶＢ４５の例を示している。ＶＢ′５８は、ＶＣ′５６から粒子集合Ｐ（ｔS ）の情報を受け取り、ＤＧ′５２からモデルの世界におけるｋ番目のＶＢ４５の位置の座標情報ｘ′dg,k（ｔS ）を受け取る。ここで、ｋ＝１，２，３，４，５，６，７，８，９，１０であり、ｋ＝１，２，３，４，５は左手の各指に装着されたＶＢ４５に対応し、ｋ＝６，７，８，９，１０は右手の各指に装着されたＶＢ４５に対応する。そして、それらの情報に基づき、振動データを表す関数Ｖk （ｔS ）を次のように計算する。
Ｖk （ｔS ）＝Ｖk （Σi ｜ｐi （ｔS ）−ｘ′dg,k（ｔS ）｜），  （６）
∀ｉ，｜ｐi （ｔS ）−ｘ′dg,k（ｔS ）｜＜ｒI ，
ｐi （ｔS ）∈Ｐ（ｔS ）
ここで、｜ｐi （ｔS ）−ｘ′dg,k（ｔS ）｜は、ｐi （ｔS ）とｘ′dg,k（ｔS ）の距離を表し、Σi は、すべての粒子に関する総和を表す。したがって、Ｖk （ｔS ）は、各粒子とＶＢ４５の仮想的な位置との間の距離の総和をパラメータとする関数として定義され、その関数形は実験により決められる。また、ｘ′dg,k（ｔS ）がいずれかの粒子の相互作用場内に入っているようなＶＢ４５のみについて、Ｖk （ｔS ）が計算され、その他のＶＢ４５についてはＶk （ｔS ）は０に設定される。
【００８６】
こうして計算された振動データＶk （ｔS ）は、各ＶＢ４５に出力されて、それを振動させる。このようなＶＢ′５８によれば、仮想世界において、変形操作に伴って移動した粒子に触れたＶＢ４５のみが振動し、バーチャクレイに接触したときの感覚を表現することができる。
【００８７】
次に、図１７は、ＦＩ４３とＦＯ４６を兼ねる力入出力装置の例を示している。ＦＯ′５９は、ＶＣ′５６から粒子集合Ｐ（ｔS ）の情報を受け取り、ＦＩ′５３からモデルの世界におけるｋ番目の座標情報ｘ′f,k （ｔS ）を受け取る。ｘ′f,k （ｔS ）は、力入出力装置４７のジンバル４８の位置を表し、ｋ＝１，２，３，４，５は左手の各指先に対応し、ｋ＝６，７，８，９，１０は右手の各指に対応する。そして、それらの情報に基づき、力データを表す関数Ｆk （ｔS ）を次のように計算する。
Ｆk （ｔS ）＝Ｆk （Σi ｜ｐi （ｔS ）−ｘ′f,k （ｔS ）｜），  （７）
∀ｉ，｜ｐi （ｔS ）−ｘ′f,k （ｔS ）｜＜ｒI ，
ｐi （ｔS ）∈Ｐ（ｔS ）
ここで、Ｆk （ｔS ）は、各粒子とジンバル４８の仮想的な位置との間の距離の総和をパラメータとする関数として定義され、その関数形は実験により決められる。また、ｘ′f,k （ｔS ）がいずれかの粒子の相互作用場内に入っているようなジンバル４８のみについて、Ｆk （ｔS ）が計算され、その他のジンバル４８についてはＦk （ｔS ）は０に設定される。
【００８８】
こうして計算された力データＦk （ｔS ）は、ジンバル４８に出力されて、指先に力を与える。このようなＦＯ′５９によれば、仮想世界において、変形操作に伴って移動した粒子に触れた指先のみに反力が返され、バーチャクレイからの力の感覚を表現することができる。
【００８９】
次に、図１８は、ＤＧ４２の例を示している。ＤＧ４２上には、多数の位置センサが組込まれており、ｋ番目のセンサの位置座標は、ｘdg,k（ｔS ）と記述される。この場合、ｋの値の上限はセンサの個数に対応して決められる。ＤＧ′５２は、ＤＧ４２から各操作時刻におけるｘdg,k（ｔS ）の情報を受け取ると、（４）式と同様にして、それらをモデルの世界の座標情報ｘ′dg,k（ｔS ）に変換し、ＶＣ′５６とＤＳ′５７に渡す。
【００９０】
次に、ＶＣ′５６は、ｘ′dg,k（ｔS-1 ）、ｘ′dg,k（ｔS ）に基づき変形オペレーションを実行して、粒子集合Ｐ（ｔS ）を変形する。このとき、ＤＧ′５２の入力手続きとして、次のような計算が行われる。
Δｐi （ｔS ）＝ｘ′dg,k（ｔS ）−ｘ′dg,k（ｔS-1 ），        （８）
∀ｉ，｜ｘ′dg（ｔS ）−ｐi （ｔS-1 ）｜＜ｒI ，
ｐi （ｔS-1 ）∈Ｐ（ｔS-1 ）
ここでは、ｘ′dg（ｔS ）が相互作用場内に入っているような粒子のみが、移動ベクトルΔｐi （ｔS ）に従って移動し、その他の粒子の位置は変化しない。ベクトルΔｐi （ｔS ）は、ｘ′dg,k（ｔS ）とｘ′dg,k（ｔS-1 ）の差分として与えられる。
【００９１】
次に、ＶＣ′５６は、決められた変形アルゴリズムに従って、最初に移動した粒子の移動ベクトルΔｐi （ｔS ）の影響を、粒子集合Ｐ（ｔS-1 ）全体に反映させ、操作後の粒子集合Ｐ（ｔS ）を生成する。そして、皮膜生成オペレーションを実行して、Ｓｕｒｆａｃｅ（Ｐ（ｔS ））を生成し、その情報を出力する。
【００９２】
ＤＳ′５７は、Ｓｕｒｆａｃｅ（Ｐ（ｔS ））とｘ′dg,k（ｔS ）の情報に基づき、バーチャクレイと手のグラフィックデータを生成し、ＤＳ４４の画面に表示する。図１８では、時刻ｔS-1 における粒子集合Ｐ（ｔS-1 ）と手の形状が示されているが、時刻ｔS における粒子集合Ｐ（ｔS ）と手の形状も同様にして表示される。
【００９３】
次に、図１９は、力入出力装置４７から力を入力する例を示している。ＦＩ′５３は、力入出力装置４７からｋ番目の座標情報ｘf,k （ｔS-1 ）と、入力された力ベクトルｆin,k（ｔS-1 ）を受け取る。ｘf,k （ｔS ）は、図１７と同様に、力入出力装置４７のジンバル４８の位置を表し、ｆin,k（ｔS-1 ）は、その位置において入力された力を表す。ＦＩ′５３は、（４）式と同様にして、それらをモデルの世界の量ｘ′f,k （ｔS-1 ）、ｆ′in,k（ｔS-1 ）に変換し、ＶＣ′５６に渡す。
【００９４】
次に、ＶＣ′５６は、ｘ′f,k （ｔS-1 ）、ｆ′in,k（ｔS-1 ）に基づき変形オペレーションを実行して、粒子集合Ｐ（ｔS ）を変形する。このとき、ＦＩ′５３の入力手続きとして、次のような計算が行われる。
Δｐi （ｔS ）＝Ｄｉｓｐｌａｃｅｍｅｎｔ（ｆ′in,k（ｔS-1 ）），（９）
∀ｉ，｜ｘ′f,k （ｔS-1 ）−ｐi （ｔS-1 ）｜＜ｒI ，
ｐi （ｔS-1 ）∈Ｐ（ｔS-1 ）
ここでは、ｘ′f,k （ｔS-1 ）が相互作用場内に入っているような粒子のみが、移動ベクトルΔｐi （ｔS ）に従って移動し、その他の粒子の位置は変化しない。ベクトルΔｐi （ｔS ）は、ｆ′in,k（ｔS-1 ）をパラメータとする関数Ｄｉｓｐｌａｃｅｍｅｎｔにより計算される。Ｄｉｓｐｌａｃｅｍｅｎｔの関数形は、実験により決められる。
【００９５】
次に、ＶＣ′５６は、決められた変形アルゴリズムに従って、最初に移動した粒子の移動ベクトルΔｐi （ｔS ）の影響を、粒子集合Ｐ（ｔS-1 ）全体に反映させ、操作後の粒子集合Ｐ（ｔS ）を生成する。そして、皮膜生成オペレーションを実行して、Ｓｕｒｆａｃｅ（Ｐ（ｔS ））を生成し、その情報を出力する。ＤＳ′５７は、Ｓｕｒｆａｃｅ（Ｐ（ｔS ））の情報に基づき、バーチャクレイのグラフィックデータを生成し、ＤＳ４４の画面に表示する。
【００９６】
次に、図２０は、ＤＳ４４の画面に表示されたオペレーションパネルを示している。ＯＰ′５４には、ＶＣ′５６が持っているオペレーション、ツール、粒子のパラメータに対応する手続きがあらかじめ定義されており、それらがメニュー項目として、ＤＳ４４の画面に表示される。
【００９７】
図２０の画面には、オペレーションとして、ＣＲＥＡＴＥ、ＤＩＳＣＡＲＤ、ＢＩＧＧＥＲ、ＳＭＡＬＬＥＲ、ＧＲＯＵＰ、ＵＮＧＲＯＵＰ、ＴＲＡＮＳＬＡＴＥ、ＲＯＴＡＴＥなどの項目が表示され、ツールとして、ＭＡＲＫＥＲとＦＩＮＩＳＨＥＲの項目が表示され、パラメータとして、ＡＦＦＥＣＴ、ＵＮＡＦＦＥＣＴ、ＥＬＡＳＴＩＣＩＴＹ、およびＶＩＳＣＯＳＩＴＹの項目が表示されている。これらの項目のいずれかを指定することで、対応する動作が行われる。
【００９８】
ＣＲＥＡＴＥは、ＤＩＳＣＡＲＤ、ＢＩＧＧＥＲ、ＳＭＡＬＬＥＲ、ＧＲＯＵＰ、ＵＮＧＲＯＵＰ、ＴＲＡＮＳＬＡＴＥ、ＲＯＴＡＴＥは、それぞれ、粒子生成、粒子消去、拡大、縮小、グループ化、グループ解除、並進、回転、変形のオペレーションを表す。このうち、ＴＲＡＮＳＬＡＴＥとＲＯＴＡＴＥについては、それぞれ、並進の向きと回転軸の向きも明示される。
【００９９】
また、ＡＦＦＥＣＴは、粒子の相互作用場の半径ｒI とその性質の設定に用いられ、ＵＮＡＦＦＥＣＴは、粒子の核の半径ｒC とその性質の設定に用いられる。ＥＬＡＳＴＩＣＩＴＹとＶＩＳＣＯＳＩＴＹは、それぞれ、弾性係数と粘性係数の設定に用いられ、“＋”は性質を強める指示を表し、“−”は性質を弱める指示を表す。
【０１００】
ユーザがＰＤ４１またはＤＧ４２を用いて項目を指定すると、ＯＰ′５４は、ＰＤ′５１からｘ′pd（ｔS-1 ）を受け取り、ＤＧ′５２からｘ′dg,k（ｔS-1 ）を受け取る。そして、ｘ′pd（ｔS-1 ）またはｘ′dg,k（ｔS-1 ）が、画面上のいずれかの項目に対応する領域内にあるかどうかを判定し、その位置がいずれかの項目に対応していれば、該当項目の処理を行う。このとき、必要に応じて、ＶＣ′５６に処理を依頼する。
【０１０１】
例えば、ＧＲＯＵＰが指定されると、ＯＰ′５４は、指定された粒子集合Ｐ（ｔS-1 ）、Ｑ（ｔS-1 ）の情報をＶＣ′５６から受け取り、次のような演算を行う。
Ｇｒｏｕｐ（Ｐ（ｔS-1 ），Ｑ（ｔS-1 ））
＝｛Ｐ（ｔS ），Ｑ（ｔS ）｝，                                （１０）
Ｐ（ｔS ）＝Ｐ（ｔS-1 ），Ｑ（ｔS ）＝Ｑ（ｔS-1 ）
ここで、Ｇｒｏｕｐは、与えられた粒子集合をグループ化する演算子であり、グループ｛Ｐ（ｔS ），Ｑ（ｔS ）｝の情報は、ＶＣ′５６に出力される。これ以後、粒子集合Ｐ（ｔS ）とＱ（ｔS ）は１つの操作対象とみなされる。
【０１０２】
また、ＵＮＧＲＯＵＰが指定されると、ＯＰ′５４は、指定されたグループ｛Ｐ（ｔS-1 ），Ｑ（ｔS-1 ）｝の情報をＶＣ′５６から受け取り、次のような演算を行う。
ＵｎＧｒｏｕｐ（｛Ｐ（ｔS-1 ），Ｑ（ｔS-1 ）｝）
＝Ｐ（ｔS ），Ｑ（ｔS ），                                    （１１）
Ｐ（ｔS ）＝Ｐ（ｔS-1 ），Ｑ（ｔS ）＝Ｑ（ｔS-1 ）
ここで、ＵｎＧｒｏｕｐは、与えられたグループを解除する演算子であり、グループを解除された粒子集合Ｐ（ｔS ），Ｑ（ｔS ）の情報は、ＶＣ′５６に出力される。これ以後、粒子集合Ｐ（ｔS ）とＱ（ｔS ）は別々の操作対象とみなされる。
【０１０３】
また、ＴＲＡＮＳＬＡＴＥが指定されると、ＯＰ′５４は、指定された並進ベクトルｘC による並進オペレーションの実行を、ＶＣ′５６に依頼する。これを受けて、ＶＣ′５６は、次のような演算を行う。
Ｔｒａｎｓｌａｔｅ（｛．．．，ｐi （ｔS-1 ），．．．｝，ｘC ）
＝｛．．．，ｐi （ｔS ），．．．｝                            （１２）
ｐi （ｔS ）＝ｐi （ｔS-1 ）＋ｘC 
ここで、Ｔｒａｎｓｌａｔｅは、各粒子の位置座標ｐi （ｔS-1 ）にベクトルｘC を加算する演算子である。
【０１０４】
また、ＲＯＴＡＴＥが指定されると、ＯＰ′５４は、指定された回転ベクトルφC による回転オペレーションの実行を、ＶＣ′５６に依頼する。これを受けて、ＶＣ′５６は、次のような演算を行う。
Ｒｏｔａｔｅ（｛．．．，ｐi （ｔS-1 ），．．．｝，φC ）
＝｛．．．，ｐi （ｔS ），．．．｝                            （１３）
ｐi （ｔS ）＝Ｒ（φC ）ｐi （ｔS-1 ）
ここで、Ｒｏｔａｔｅは、各粒子の位置座標ｐi （ｔS-1 ）に、回転ベクトルφC により記述される回転行列Ｒ（φC ）を乗算する演算子である。
【０１０５】
また、ＢＩＧＧＥＲまたはＳＭＡＬＬＥＲが指定されると、ＯＰ′５４は、指定された定ベクトルｃによるスケール変更オペレーションの実行を、ＶＣ′５６に依頼する。これを受けて、ＶＣ′５６は、次のような演算を行う。
Ｓｃａｌｅ（｛．．．，ｐi （ｔS-1 ），．．．｝，ｃ）
＝｛．．．，ｐi （ｔS ），．．．｝                            （１４）
ｐi （ｔS ）＝ｄｉａｇ（ｃ）ｐi （ｔS-1 ）
ここで、Ｓｃａｌｅは、各粒子の位置座標ｐi （ｔS-1 ）に、ベクトルｃの各成分を対角要素とする対角行列ｄｉａｇ（ｃ）を乗算する演算子である。
【０１０６】
次に、図２１は、オペレーションをパネルなしで指定するためのジェスチャシステムを示している。この機能を利用する場合、ユーザはＤＧ４２を装着した手で、決められたジェスチャを行う。このとき、ＧＳ′５５は、ＤＧ′５２から各センサの位置の履歴情報｛．．．，ｘ′dg,k（ｔS-2 ），ｘ′dg,k（ｔS-1 ），．．．｝を受け取り、その情報が特定のジェスチャパターンと類似しているかどうかを判定する。
【０１０７】
ジェスチャパターンは、一定時間内における各センサの位置の変化を表す情報であり、並進ジェスチャパターン、回転ジェスチャパターン、拡大／縮小ジェスチャパターンなど、図２０に示した各メニュー項目に対応するパターンが用意される。ＧＳ′５５は、これらのジェスチャパターンをあらかじめデータとして保持しており、ジェスチャパターンと入力された履歴情報の類似度を計算して、それらを比較する。
【０１０８】
類似度が一定値以上であれば、そのジェスチャパターンに対応する項目が指定されたものとみなし、その項目の処理をＯＰ′５４に依頼する。また、そのジェスチャの表示をＤＳ′５７に依頼する。これを受けて、ＤＳ′５７は、対応するジェスチャの画像をＤＳ４４の画面に表示する。
【０１０９】
このように、本実施形態のバーチャクレイシステムによれば、２Ｄのポインティングデバイスおよびディスプレイの操作性によって制限を受けている３Ｄ  ＣＡＤや３Ｄグラフィクスなどの作業方法を、より直観的なものに進化させることができる。現在、入力装置として、データグローブ、３Ｄマウス、力入力装置などが普及しつつあり、出力装置として、ヘッドマウントディスプレイが一般化されつつあるので、バーチャクレイシステムにおいて、これらを利用することは容易である。
【０１１０】
また、粘土のような操作感を実現し、様々な形を直観的に生成する機能を、従来の３Ｄ  ＣＡＤや３Ｄグラフィクスのプラグインツールとして提供することもできる。その結果、実世界の３Ｄ物体のデザインや、あるいは仮想世界における建造物や造形品の設計製作にあたり、時間効率を高めることができる。
【０１１１】
次に、図２２から図７８までを参照しながら、バーチャクレイシステムにおける各処理と、それに伴うバーチャクレイの変化について、さらに詳細に説明する。以下では、システムのソフトウェアを、オブジェクト指向プログラミングにより構築するものとし、図１３のＰＤ′５１、ＤＧ′５２、ＦＩ′５３、ＯＰ′５４、ＧＳ′５５、ＶＣ′５６、ＤＳ′５７、ＶＢ′５８、およびＦＯ′５９のそれぞれに対応するオブジェクトを生成する。
【０１１２】
図２２は、このようなバーチャクレイシステムにおける一般的な処理のフローチャートである。システムは、起動されると、まず、メモリ２２上において上述の各オブジェクトを起動し、それらをメッセージ待ちの状態にする（ステップＳ１）。そして、オブジェクトがメッセージを受信したかどうかを判定する（ステップＳ２）。
【０１１３】
オブジェクトがメッセージを受信した場合は、そのメッセージに関する処理を行い（ステップＳ３）、オブジェクトの内部状態を更新して（ステップＳ４）、システム終了の指示が入力されたかどうかを判定する（ステップＳ５）。その指示がなければ、それが入力されるまでステップＳ２以降の処理を行う。また、ステップＳ２において、どのオブジェクトもメッセージを受信していない場合は、ステップＳ５の処理を行う。
【０１１４】
図２３は、オブジェクト間におけるメッセージの送受信処理のフローチャートである。送信側のオブジェクトは、メソッド実行を依頼するメッセージを配送した後（ステップＳ１１）、待機状態となる（ステップＳ１２）。
【０１１５】
また、受信側のオブジェクトは、メッセージを受信すると（ステップＳ２１）、指定されたメソッドを実行し（ステップＳ２２）、その結果に基づいてデータなどの内部状態を更新する（ステップＳ２３）。そして、必要な情報を、送信側のオブジェクトに返送したり、新たなメッセージを他のオブジェクトに配送したりして（ステップＳ２４）、待機状態となる。
【０１１６】
送信側オブジェクトと受信側オブジェクトの組合わせを、［送信側オブジェクト＞＞受信側オブジェクト］のように表すと、バーチャクレイシステムにおける主な組合わせは次のようになる。
［ＰＤ′＞＞ＶＣ′］，［ＰＤ′＞＞ＯＰ′］，［ＰＤ′＞＞ＤＳ′］，
［ＤＧ′＞＞ＶＣ′］，［ＤＧ′＞＞ＯＰ′］，［ＤＧ′＞＞ＧＳ′］，
［ＤＧ′＞＞ＤＳ′］，
［ＦＩ′＞＞ＶＣ′］，［ＦＩ′＞＞ＤＳ′］，
［ＯＰ′＞＞ＶＣ′］，［ＯＰ′＞＞ＤＳ′］，
［ＧＳ′＞＞ＯＰ′］，［ＧＳ′＞＞ＤＳ′］，
［ＶＣ′＞＞ＤＳ′］，［ＶＣ′＞＞ＶＢ′］，［ＶＣ′＞＞ＦＯ′］
もちろん、必要に応じて、上記組合わせ以外のオブジェクト間でメッセージを配送することも可能である。これらのオブジェクトと、図１３のＰＤ４１、ＤＧ４２、ＦＩ４３、ＤＳ４４、ＶＢ４５、およびＦＯ４６は、以下のようにして動作する。
【０１１７】
図２４は、ＰＤ４１の動作フローチャートである。ＰＤ４１は、ユーザに操作されることで動作を開始し（ステップＳ３１）、操作量を信号に変換する（ステップＳ３２）。そして、その信号をＰＤ′５１に出力して（ステップＳ３３）、次の操作待ちの状態になる（ステップＳ３４）。
【０１１８】
図２５は、ＤＧ４２の動作フローチャートである。ＤＧ４２は、ユーザの手に装着されて操作されることで動作を開始し（ステップＳ４１）、各センサの位置の変化を信号に変換する（ステップＳ４２）。そして、その信号をＤＧ′５２に出力して（ステップＳ４３）、次の操作待ちの状態になる（ステップＳ４４）。
【０１１９】
図２６は、ＦＩ４３の動作フローチャートである。ＦＩ４３は、ユーザの指先に装着されて操作されることで動作を開始し（ステップＳ５１）、指先の位置の変化を信号に変換する（ステップＳ５２）。そして、その信号をＦＩ′５３に出力して（ステップＳ５３）、次の操作待ちの状態になる（ステップＳ５４）。
【０１２０】
図２７は、ＰＤ′５１の動作フローチャートである。ＰＤ′５１は、ＰＤ４１からの信号を受け取って動作を開始し（ステップＳ６１）、信号の値からＰＤ′５１の位置（ポイント）の変移量を確定する（ステップＳ６２）。ＰＤ′５１の位置と変移量は、例えば、図１５の位置情報ｘ′pdと変位ベクトルΔｘ′pdに対応する。
【０１２１】
次に、ＰＤ′５１の位置情報を更新し（ステップＳ６３）、メッセージの宛先を確定する（ステップＳ６４）。宛先がＶＣ′５６の場合は、位置情報と変移量をＶＣ′５６に対するメッセージとして出力し（ステップＳ６５）、ＰＤ４１からの信号待ちの状態になる（ステップＳ６６）。また、宛先がＯＰ′５４の場合は、位置情報と変移量をＯＰ′５４に対するメッセージとして出力し（ステップＳ６７）、信号待ちの状態になる（ステップＳ６６）。
【０１２２】
図２８は、ＤＧ′５２の動作フローチャートである。ＤＧ′５２は、ＤＧ４２からの信号を受け取って動作を開始し（ステップＳ７１）、信号の値からＤＧ′５２のセンサの位置の変移量を確定する（ステップＳ７２）。ＤＧ′５２の位置と変移量は、例えば、図１８の位置情報ｘ′dg,kと、連続する２つの時刻間のｘ′dg,kの差に対応する。
【０１２３】
次に、ＤＧ′５２の位置情報を更新し（ステップＳ７３）、メッセージの宛先を確定する（ステップＳ７４）。宛先がＶＣ′５６の場合は、位置情報と変移量をＶＣ′５６に対するメッセージとして出力し（ステップＳ７５）、ＤＧ４２からの信号待ちの状態になる（ステップＳ７６）。また、宛先がＯＰ′５４の場合は、位置情報と変移量をＯＰ′５４に対するメッセージとして出力し（ステップＳ７７）、信号待ちの状態になる（ステップＳ７６）。
【０１２４】
図２９は、ＦＩ′５３の動作フローチャートである。ＦＩ′５３は、ＦＩ４３からの信号を受け取って動作を開始し（ステップＳ８１）、信号の値からＦＩ′５３の位置と入力された力を確定する（ステップＳ８２）。ＦＩ′５３の位置と力は、例えば、図１９の位置情報ｘ′f,k と力ベクトルｆ′in,kに対応する。
【０１２５】
次に、ＦＩ′５３の位置情報を更新し（ステップＳ８３）、メッセージの宛先を確定する（ステップＳ８４）。宛先がＶＣ′５６の場合は、位置情報と力情報をＶＣ′５６に対するメッセージとして出力し（ステップＳ８５）、ＦＩ４３からの信号待ちの状態になる（ステップＳ８６）。また、宛先がＯＰ′５４の場合は、位置情報と力情報をＯＰ′５４に対するメッセージとして出力し（ステップＳ８７）、信号待ちの状態になる（ステップＳ８６）。
【０１２６】
図３０は、ＯＰ′５４の動作フローチャートである。ＯＰ′５４は、ＤＳ４４の画面に表示されたオペレーションパネル（ＯＰ）から入力されるイベントを受け付け（ステップＳ９１）、それに基づき操作を確定する（ステップＳ９２）。そして、ＯＰ′５４からＶＣ′５６に対する操作をメッセージとしてＶＣ′５６に出力し（ステップＳ９３）、オペレーションパネルからのイベント待ちの状態になる（ステップＳ９４）。
【０１２７】
図３１は、ＶＣ′５６の動作フローチャートである。ＶＣ′５６は、ＰＤ′５１、ＤＧ′５２、ＦＩ′５３、またはＯＰ′５４からのメッセージを受け取って動作を開始し（ステップＳ１０１）、バーチャクレイに対する変形操作の作用点および移動量を確定する（ステップＳ１０２）。次に、変形操作を起動し（ステップＳ１０３）、作用点が相互作用場内に存在する粒子の移動処理を行い（ステップＳ１０４）、反作用を確定する（ステップＳ１０５）。
【０１２８】
次に、各粒子の位置を更新し（ステップＳ１０６）、最外殻粒子を更新する（ステップＳ１０７）。そして、バーチャクレイの表面情報（パッチ情報）を更新し（ステップＳ１０８）、その表面情報をＤＳ′５７に対するメッセージとして出力する（ステップＳ１０９）。また、反作用をＶＢ′５８またはＦＯ′５９に対するメッセージとして出力し（ステップＳ１１０）、次のメッセージ待ちの状態となる（ステップＳ１１１）。
【０１２９】
図３２および図３３は、図３１のステップＳ１０２、Ｓ１０３、Ｓ１０４、Ｓ１０５、およびＳ１０６における処理のフローチャートである。処理が開始されると、ＶＣ′５６は、まず、バーチャクレイの粒子集合の中で、ＰＤ′５１、ＤＧ′５２、ＦＩ′５３、またはＯＰ′５４により直接操作される粒子の部分集合Ｐ(0) を特定し、Ｐ(0) に含まれる各粒子の位置をｐi (0) とする（図３２、ステップＳ１２１）。例えば、図３４に示すような粒子集合において、移動作用６１が入力された場合、粒子６２が直接操作される粒子となる。
【０１３０】
次に、制御変数ｋを１とおき（ステップＳ１２２）、集合Ｐ(k-1) 内の各粒子に対する移動作用｛Δｐi (k-1) ｝から、各粒子の暫定的な位置ｐ′i を次式により計算する（ステップＳ１２３）。
ｐ′i ＝ｐi (k-1) ＋Δｐi (k-1)                             （１５）
次に、集合Ｐ(k-1) 内の各粒子の暫定的な位置ｐ′i における相互作用場間の相互作用と位置の調整規則を用いて調整を行い、調整後の位置ｐ″i を決定する（ステップＳ１２４）。
0003904671.tif 000002
ここで、（１６）式の右辺は位置ｐ′i を調整する演算を表し、ｎ（ｋ−１）は集合Ｐ(k-1) 内の粒子の個数を表す。調整規則としては、例えば、相互作用場間で交差が生じないという条件が用いられる。暫定的な移動の結果、２つ以上の粒子の相互作用場が交差している場合は、いずれか１つの粒子にその場所を占有させ、他の粒子の位置を変更する。
【０１３１】
例えば、交差している粒子の識別番号を比較して、その番号がより小さいもの（順位がより高いもの）にその場所を占有させることにする。図３４の場合は、集合Ｐ(0) に含まれる粒子の数は１個だけなので、調整の必要はなく、ｐ″i ＝ｐ′i となる。
【０１３２】
次に、集合Ｐ(k-1) の各粒子の移動ベクトルｖi (k-1) を次式により計算する（ステップＳ１２５）。
ｖi (k-1) ＝ｐ″i −ｐi (k-1)                               （１７）
そして、集合Ｐ(k-1) の各粒子に接触している他の粒子と、集合Ｐ(k-1) の各粒子がベクトルｖi (k-1) により移動することで新たに接触する他の粒子とから成る集合Ｐ(k) を特定する（ステップＳ１２６）。図３４の場合、粒子６２が移動することで、図３５に示されるようにして、その影響が段階的に他の粒子に伝播する。
【０１３３】
図３５において、細線の円は移動前の粒子の位置を表し、太線の円は移動後の粒子の位置を表す。ここで、粒子６２が属する集合Ｐ(0) を粒子層Ｌ１とすると、粒子６２に接触している２個の粒子が、集合Ｐ(1) に対応する粒子層Ｌ２に含まれることになる。以下同様に、粒子層Ｌｋ（ｋ＝１，２，３，４，５）の粒子は集合Ｐ(k-1) に含まれる。
【０１３４】
次に、集合Ｐ(k) の各粒子の相互作用場φj (k) と、それに接触する集合Ｐ(k-1) の粒子の相互作用場φi (k-1) および移動ベクトルｖi (k-1) とから、集合Ｐ(k) の各粒子に対する移動作用Δｐj (k) と、その粒子からの反作用Δｂj (k-1) を、次式により計算する（図３３、ステップＳ１２７）。
0003904671.tif 000003
ここで、ＰＲＯＪji（ｖi (k-1) ）は、ｐi (k-1) とｐj (k) を結ぶ直線上にベクトルｖi (k-1) を射影する関数であり、αjiとβjiは、相互作用場φj (k) 、φi (k-1) により決められる係数である。ただし、βjiの絶対値は１より十分に小さいものとする。
【０１３５】
次に、集合Ｐ(k) の各粒子から集合Ｐ(k-1) の各粒子への反作用｛Δｂ′i (k-1) ｝を求めて、次式により位置ｐ″i の変動を計算する。
ｐ′′′i ＝ｐ″i ＋Δｂ′i (k-1)                           （２０）
Δｂ′i (k-1) は、集合Ｐ(k) の各粒子からの反作用Δｂj (k-1) を、ｐi (k-1) とｐj (k) を結ぶ直線上に射影することで求められる。
【０１３６】
次に、集合Ｐ(k-1) 内の各粒子の暫定的な位置ｐ′′′i における相互作用場間の相互作用と、上述の調整規則を用いて調整を行い、調整後の位置ｐ′′′′i を決定する（ステップＳ１２９）。
0003904671.tif 000004
そして、ｐ′′′′i を最終的な位置ｐi (k-1) として確定する（ステップＳ１３０）。次に、すべての粒子の位置が確定したかどうかを調べ（ステップＳ１３１）、位置が確定していない粒子があれば、ｋ＝ｋ＋１とおいて（ステップＳ１３２）、ステップＳ１２３以降の処理を繰り返す。そして、すべての粒子の位置が確定すると、それらの情報により粒子位置を更新し、この処理を終了する。
【０１３７】
例えば、暫定的な移動により、図３６に示すように、粒子層Ｌ４の２つの粒子６３、６４が交差したとする。このとき、ＶＣ′５６は交差を解消するために、図３７に示すように、これらの粒子６３、６４の識別子ｋ、ｍを比較して、粒子６３の位置を変更することに決定する。
【０１３８】
粒子６３の位置の変更方法は色々考えられるが、ここでは、周辺の粒子６５、６６、６４、６７から遠ざかる向きのベクトルをそれぞれ求め、それらの合成ベクトル６８により、変更位置を決定する。こうして、図３８に示すように、各粒子の位置が確定される。
図３９は、図３１のステップＳ１０７における最外殻粒子の更新処理のフローチャートである。ここでは、シンプレックス法を用いて、最外殻粒子を決定する。処理が開始されると、ＶＣ′５６は、まず、図４０に示すように、粒子集合全体を取り囲むシンプレックス（単体）７１を計算する（ステップＳ１４１）。そして、各粒子の近傍を基本にして、２つの粒子間に相互作用がある場合に、互いの影響が等しくなるような平面を計算する（ステップＳ１４２）。
【０１３９】
次に、決定された平面を境界として、各粒子を囲む半空間を計算する（ステップＳ１４３）。図４０の粒子集合においては、粒子ａを囲む半空間は、粒子ａと粒子ｂの境界ａ＆ｂと、粒子ａと粒子ｃの境界ａ＆ｃと、粒子ａと粒子ｄの境界ａ＆ｄの３つの平面により区切られる。
【０１４０】
次に、各粒子を囲む凸包を決定する（ステップＳ１４４）。凸包とは、空間内の点の任意の部分集合を含む最小の凸集合であり、凸集合とは、空間内の点の部分集合であって、その任意の２点を結ぶ線分もまたその部分集合に含まれるという性質を持つ。したがって、粒子を囲む凸包とは、言い換えれば、粒子の近傍を含む最小の凸集合のことである。
【０１４１】
図４１において、粒子ａを囲む凸包７２は、平面ａ＆ｂ、ａ＆ｃ、ａ＆ｄ、およびシンプレックス７１の表面により決定される。同様にして、他の粒子を囲む凸包も、図４２に示すように決定される。
【０１４２】
次に、各粒子が最外殻粒子かどうかを判定する（ステップＳ１４５）。ここでは、粒子集合を取り囲むシンプレックスが、ある粒子の凸包の一部であれば、その粒子を最外殻粒子とする。そして、最外殻粒子の集合を、図３１のステップＳ１０８の処理に出力して（ステップＳ１４６）、処理を終了する。図４２の場合は、シンプレックス７１を含む凸包の中の粒子ａ、ｂ、ｅ、ｆ、ｃが、最外殻粒子となる。
【０１４３】
図４３は、ＦＯ′５９の動作フローチャートである。ＦＯ′５９は、ＶＣ′５６からのメッセージを受け取って動作を開始し（ステップＳ１５１）、作用点における反作用ベクトルを確定する（ステップＳ１５２）。
【０１４４】
次に、反作用ベクトルを力情報に変換する（ステップＳ１５３）。この力情報は、例えば、図１７の力データＦk に対応する。そして、力情報をＦＯ４６に対するメッセージとして出力し（ステップＳ１５４）、ＶＣ′５６からのメッセージ待ちの状態になる（ステップＳ１５５）。
【０１４５】
図４４は、ＶＢ′５８の動作フローチャートである。ＶＢ′５８は、ＶＣ′５６からのメッセージを受け取って動作を開始し（ステップＳ１６１）、作用点における反作用ベクトルを振動情報に変換する（ステップＳ１６２）。この振動情報は、例えば、図１６の振動データＶk に対応する。そして、振動情報をＶＢ４５に対するメッセージとして出力し（ステップＳ１６３）、ＶＣ′５６からのメッセージ待ちの状態になる（ステップＳ１６４）。
【０１４６】
図４５は、ＤＳ′５７の動作フローチャートである。ＤＳ′５７は、ＶＣ′５６からのメッセージを受け取って動作を開始し（ステップＳ１７１）、バーチャクレイの表面情報を確定し（ステップＳ１７２）、表面のレンダリング（rendering ）を行って、バーチャクレイの画像データを生成する（ステップＳ１７３）。この表面情報は、例えば、図１５のＳｕｒｆａｃｅに対応する。そして、画像データをＤＳ４４に対するメッセージ（画像信号）として出力し（ステップＳ１７４）、ＶＣ′５６からのメッセージ待ちの状態になる（ステップＳ１７５）。
【０１４７】
ＤＳ′５７は、ＶＣ′５６以外にも、ＰＤ′５１、ＤＧ′５２、ＦＩ′５３、ＯＰ′５４、およびＧＳ′５５からメッセージを受け取り、それに対応する画像データを生成して、ＤＳ４４に出力する。
【０１４８】
図４６は、ＦＯ４６の動作フローチャートである。ＦＯ４６は、ＦＯ′５９からのメッセージを受け取って動作を開始し（ステップＳ１８１）、力情報を確定する（ステップＳ１８２）。そして、力情報を提示し（ステップＳ１８３）、ＦＯ′５９からのメッセージ待ちの状態になる（ステップＳ１８４）。
【０１４９】
図４７は、ＶＢ４５の動作フローチャートである。ＶＢ４５は、ＶＢ′５８からのメッセージを受け取って動作を開始し（ステップＳ１９１）、振動情報を確定する（ステップＳ１９２）。そして、振動情報を提示し（ステップＳ１９３）、ＶＢ′５８からのメッセージ待ちの状態になる（ステップＳ１９４）。
【０１５０】
図４８は、ＤＳ４４の動作フローチャートである。ＤＳ４４は、ＤＳ′５７からのメッセージを受け取って動作を開始し（ステップＳ２０１）、画像信号を確定する（ステップＳ２０２）。そして、画像を表示し（ステップＳ２０３）、ＤＳ′５７からのメッセージ待ちの状態になる（ステップＳ２０４）。
【０１５１】
図４９は、バーチャクレイシステムによるシンプルな反作用の出力処理の例を示すフローチャートである。ＰＤ′５１またはＤＧ′５２からのメッセージにより、移動作用がＶＣ′５６の粒子に働くと（ステップＳ２１１）、ＶＣ′５６は、その移動作用と近傍の相互作用から、移動ベクトルｖを計算する（ステップＳ２１２）。
【０１５２】
次に、図５０に示すように、移動ベクトルｖの向きを反転した反転ベクトル−ｖを計算し（ステップＳ２１３）、反転ベクトル−ｖと移動作用の作用点の情報を、反作用メッセージとしてＶＢ′５８またはＦＯ′５９に配送する（ステップＳ２１４）。このメッセージを受け取ったＶＢ′５８またはＦＯ′５９は、その情報をもとにＶＢ４５またはＦＯ４６を駆動し（ステップＳ２１５）、処理を終了する。
【０１５３】
図５１から図５５までは、上述のような処理に基づくバーチャクレイの変形操作を示している。図５１は、ＤＳ４４に表示されたバーチャクレイの外形を示しており、ユーザは、ＰＤ４１、ＤＧ４２、またはＦＩ４３を操作することで、このバーチャクレイを変形することができる。
【０１５４】
バーチャクレイは、ＰＤ４１、ＤＧ４２、およびＦＩ４３からの作用を直接受けるだけでなく、ＤＳ４４に表示されたオペレーションパネル上の操作に基づく作用も受ける。これらの入力デバイスからは、変形操作の作用点と移動量の情報が入力される。
【０１５５】
ユーザによるＰＤ４１、ＤＧ４２、ＦＩ４３の操作は、それぞれ、図２４、２５、２６の動作に従って信号に変換され、それらのデバイスの制御オブジェクトＰＤ′５１、ＤＧ′５２、ＦＩ′５３に送信される。
【０１５６】
各オブジェクトＰＤ′５１、ＤＧ′５２、ＦＩ′５３は、それぞれ、図２７、２８、２９の処理に従って、入力デバイスからの信号をＶＣ′５６への操作メッセージに変換する。これらのオブジェクトは、入力デバイスの状態を判定したり、操作条件を判定したりすることで、変形操作のメッセージを生成し、ＶＣ′５６に送信する。また、必要に応じて、ＯＰ′５４への操作メッセージも送信される。
【０１５７】
ＯＰ′５４は、図３０の処理に従って、入力デバイスの操作により発生するイベントを確定し、ＶＣ′５６に対するメッセージ（変形操作の文脈では、変形メッセージ）を生成して送信する。
【０１５８】
図５２は、図５１のバーチャクレイを構成する粒子を示している。このバーチャクレイは、変形前の表面情報および変形作用による移動の前の仮想粒子の情報を持つ。以下、変形操作を図３１のフローチャートに従って説明する。
【０１５９】
変形操作の第１段階として、ＶＣ′５６は、各オブジェクトＰＤ′５１、ＤＧ′５２、ＦＩ′５３、ＯＰ′５４からのメッセージを受け取り（ステップＳ１０１）、メッセージの内容を処理して、移動操作の作用点と移動量を確定し（ステップＳ１０２）、変形操作を起動して、変形作用ベクトル８１を生成する（ステップＳ１０３）。
【０１６０】
次に、ＶＣ′５６は、第２段階として、図５３に示すような粒子の移動処理を行い（ステップＳ１０４）、反作用を確定し（ステップＳ１０５）、各粒子の位置を更新する（ステップＳ１０６）。図５３には、移動前の粒子の位置、移動後の粒子の位置、および反作用ベクトル８２が示されている。
【０１６１】
次に、ＶＣ′５６は、第３段階として、図５４に示すように、最外殻粒子を更新し（ステップＳ１０７）、バーチャクレイの表面情報を更新する（ステップＳ１０８）。この段階で、ＶＣ′５６は、表面情報をメッセージとしてＤＳ′５７へ送信し（ステップＳ１０９）、反作用をメッセージとしてＶＢ′５８またはＦＯ′５９へ送信する（ステップＳ１１０）。
【０１６２】
ＶＣ′５６から反作用のメッセージを受け取ったＦＯ′５９、ＶＢ′５８は、それぞれ、図４３、４４の処理に従ってメッセージを処理し、ＦＯ４６、ＶＢ４５に対して動作メッセージを送信する。また、ＶＣ′５６から表面情報のメッセージを受け取ったＤＳ′５７は、図４５の処理に従って、バーチャクレイの表面のレンダリングを行い、画像信号を生成し、それをメッセージとしてＤＳ４４に送信する。
【０１６３】
各出力デバイスＦＯ４６、ＶＢ４５、ＤＳ４４は、それぞれ、対応する制御オブジェクトＦＯ′５９、ＶＢ′５８、ＤＳ′５７からメッセージを受け取る。ＦＯ４６は、図４６動作に従って、力情報をユーザに提示し、ＶＢ４５は、図４７の動作に従って、振動情報をユーザに提示し、ＤＳ４４は、図４８の動作に従って、バーチャクレイの画像を表示する。こうして、ＤＳ４４の画面には、図５５に示すような変形後のバーチャクレイの表面が表示される。
【０１６４】
バーチャクレイの皮膜は、必ずしも、図５５に示されるような滑らかな曲面に限られず、移動後の粒子の位置に基づく任意の形状をとることができる。例えば、図５６に示されるように、最外殻粒子の表面に沿った曲面でもよく、図５７に示されるように、最外殻粒子の中心を頂点とする多面体でもよい。
【０１６５】
次に、図５８から図６８までは、図１２に示したように、バーチャクレイを仮想的にちぎる場合の変形操作の例を示している。時刻ｔs-1 において、バーチャクレイの各粒子が図５８に示すように配置されているとすると、ＶＣ′５６は、まず、図５９に示すように、直接「ちぎる」操作の対象となる粒子層Ｐ0 を決定し、その層の各粒子に同じ移動ベクトル９１を割り当てる。そして、移動の単位となる粒子層Ｐ1 、Ｐ2 、Ｐ3 を決定する。ここでは、層Ｐ0 から最も離れた層Ｐ3 の粒子９２の位置は固定しておく。
【０１６６】
次に、ＶＣ′５６は、図６０に示すように、層Ｐ0 の粒子を移動ベクトル９１により暫定的に移動させる。ここでは、すべての粒子が平行に移動し、位置を補正する必要がないので、暫定的な移動先がそのまま次の位置として確定する。次に、図６１に示すように、次の層Ｐ1 の移動ベクトル９３、９４を決定する。これらのベクトルの向きは、前の層のベクトル９１に依存して決まる。
【０１６７】
ＶＣ′５６は、このようにして、順次、各層で移動ベクトルを計算し、暫定的な粒子の位置をすべて決定する。粒子同士が重なる場合は位置を補正するが、この例では補正は起こらない。その結果、各粒子の位置は、図６２のようになる。
【０１６８】
次に、ＶＣ′５６は、図６３に示すように、層Ｐ3 の粒子９２が固定されていることによる反作用を合成し、関連する粒子を移動させる。この反作用は、粒子間の粘性などの相互作用により決定される。そして、各粒子の位置の調整を行い、最外殻粒子を決定して、皮膜を計算する。その結果、時刻ｔs におけるバーチャクレイの形状は、図６４のようになる。
【０１６９】
時刻ｔs において、さらに「ちぎる」操作が続けられている場合は、ＶＣ′５６は、図６５に示すように、移動ベクトル９５を計算し、図６６に示すように、粒子層を計算して、暫定的な移動を行う。そして、反作用を計算し、図６７に示すように、時刻ｔs+1 における各粒子の位置を決定する。
【０１７０】
そして、ＶＣ′５６は、最外殻粒子を決定し、皮膜を計算する。このとき、一定距離以上離れた粒子は、互いに異なる粒子集合として扱い、それぞれ、異なる皮膜で覆うことにする。その結果、時刻ｔs+1 におけるバーチャクレイの形状は、図６８に示すように、２つの皮膜９６、９７で表現される。こうして、図５８のバーチャクレイが２つに分割される。
【０１７１】
また、図６９から図７５までは、図１０に示したように、バーチャクレイを仮想的にくっつける場合の変形操作の例を示している。時刻ｔs-1 において、バーチャクレイの各粒子が図６９に示すように配置されているとすると、ＶＣ′５６は、まず、図７０に示すように、直接「くっつける」操作の対象となる粒子層Ｐ0 を決定し、その層の各粒子に移動ベクトル１０１、１０２を割り当てる。そして、移動の単位となる他の粒子層Ｐ1 を決定する。
【０１７２】
次に、ＶＣ′５６は、図７１に示すように、層Ｐ0 の粒子を移動ベクトル１０１、１０２により暫定的に移動させ、図７２に示すように、粒子同士の重なりがなくなるように位置を補正する。
【０１７３】
次に、図７３に示すように、次の層Ｐ1 の移動ベクトル１０３、１０４、１０５、１０６を決定する。これらのベクトルの向きは、前の層のベクトル１０１、１０２に依存して決まる。そして、図７４に示すように、移動ベクトル１０３、１０４、１０５、１０６により、層Ｐ1 の粒子を暫定的に移動させる。ここでは、粒子同士が重ならないので、補正は行われない。
【０１７４】
次に、ＶＣ′５６は、最外殻粒子を決定して、皮膜を計算する。その結果、時刻ｔs におけるバーチャクレイの形状は、図７５のようになり、図６９の２つのバーチャクレイが接合される。
【０１７５】
また、図７６から図７８までは、バーチャクレイを平行移動させる場合の操作の例を示している。時刻ｔs-1 において、バーチャクレイの各粒子が図７６に示すように配置されているとすると、ＶＣ′５６は、まず、図７７に示すように、すべての粒子に同じ移動ベクトル１１１を割り当てる。
【０１７６】
次に、ＶＣ′５６は、各粒子を移動ベクトル１１１により暫定的に移動させる。平行移動の場合は、位置の補正などは必要ないので、暫定的な移動先がそのまま次の位置として確定する。そして、最外殻粒子を決定して、皮膜を計算する。その結果、時刻ｔs におけるバーチャクレイは、図７８のようになる。
【０１７７】
以上説明した実施形態において、図１３のＰＤ′５１、ＤＧ′５２、ＦＩ′５３、ＯＰ′５４、ＧＳ′５５、ＶＣ′５６、ＤＳ′５７、ＶＢ′５８、およびＦＯ′５９を、オブジェクト指向プログラミングにより実現するものとしたが、これに限らず、任意のプログラミング方法を用いることができる。また、入出力装置は、図１３のＰＤ４１、ＤＧ４２、ＦＩ４３、ＤＳ４４、ＶＢ４５、およびＦＯ４６に限られることはなく、キーボードやプリンタなど、他の任意の装置を用いることができる。
【０１７８】
さらに、ユーザ端末と通信ネットワークにより結合されたホストコンピュータ上にバーチャクレイシステムを構築し、ユーザ端末からのアクセスにより、それを起動することもできる。この場合、必要な入出力装置はユーザ端末に備えられ、ネットワークを介して、入出力情報がやり取りされる。
【０１７９】
【発明の効果】
本発明によれば、ディスプレイに表示された物体の形状を簡単な操作で変更することができ、形状のシミュレーションが効率よく行われる。また、物体を構成する粒子に対して様々な性質を定義することができ、多様なシミュレーションが可能になる。
【図面の簡単な説明】
【図１】本発明における仮想粘土システムの原理図である。
【図２】バーチャクレイシステムを示す図である。
【図３】情報処理装置の構成図である。
【図４】仮想粒子の構造を示す図である。
【図５】仮想粒子の移動を示す図である。
【図６】移動操作に対する弾性を示す図である。
【図７】移動操作に対する粘性を示す図である。
【図８】粒子の引き剥がしによる移動を示す図である。
【図９】移動量の伝達率を示す図である。
【図１０】第１の接合操作を示す図である。
【図１１】第２の接合操作を示す図である。
【図１２】分割操作を示す図である。
【図１３】バーチャクレイシステムのブロック図である。
【図１４】バーチャクレイモデルを示す図である。
【図１５】ポインティングデバイスとディスプレイを示す図である。
【図１６】バイブレータを示す図である。
【図１７】力入出力装置による出力を示す図である。
【図１８】データグローブを示す図である。
【図１９】力入出力装置による入力を示す図である。
【図２０】オペレーションパネルを示す図である。
【図２１】ジェスチャシステムを示す図である。
【図２２】バーチャクレイシステムの処理のフローチャートである。
【図２３】メッセージ送受信処理のフローチャートである。
【図２４】ポインティングデバイスの動作フローチャートである。
【図２５】データグローブの動作フローチャートである。
【図２６】力入力装置の動作フローチャートである。
【図２７】オブジェクトＰＤ′の動作フローチャートである。
【図２８】オブジェクトＤＧ′の動作フローチャートである。
【図２９】オブジェクトＦＩ′の動作フローチャートである。
【図３０】オブジェクトＯＰ′の動作フローチャートである。
【図３１】オブジェクトＶＣ′の動作フローチャートである。
【図３２】移動処理のフローチャート（その１）である。
【図３３】移動処理のフローチャート（その２）である。
【図３４】粒子への移動作用を示す図である。
【図３５】他の粒子への移動の伝播を示す図である。
【図３６】相互作用場の交差を示す図である。
【図３７】粒子層内での交差の解消を示す図である。
【図３８】確定された位置を示す図である。
【図３９】最外殻粒子の更新処理のフローチャートである。
【図４０】粒子間の境界を示す図である。
【図４１】半空間と凸包を示す図である。
【図４２】凸包と最外殻粒子を示す図である。
【図４３】オブジェクトＦＯ′の動作フローチャートである。
【図４４】オブジェクトＶＢ′の動作フローチャートである。
【図４５】オブジェクトＤＳ′の動作フローチャートである。
【図４６】力出力装置の動作フローチャートである。
【図４７】バイブレータの動作フローチャートである。
【図４８】ディスプレイの動作フローチャートである。
【図４９】反作用の出力処理のフローチャートである。
【図５０】反作用を示す図である。
【図５１】変形前のバーチャクレイを示す図である。
【図５２】バーチャクレイの粒子を示す図である。
【図５３】粒子の移動を示す図である。
【図５４】最外殻粒子を示す図である。
【図５５】変形後のバーチャクレイを示す図である。
【図５６】粒子の表面に沿った皮膜を示す図である。
【図５７】多面体の皮膜を示す図である。
【図５８】「ちぎる」の第１段階を示す図である。
【図５９】「ちぎる」の第２段階を示す図である。
【図６０】「ちぎる」の第３段階を示す図である。
【図６１】「ちぎる」の第４段階を示す図である。
【図６２】「ちぎる」の第５段階を示す図である。
【図６３】「ちぎる」の第６段階を示す図である。
【図６４】「ちぎる」の第７段階を示す図である。
【図６５】「ちぎる」の第８段階を示す図である。
【図６６】「ちぎる」の第９段階を示す図である。
【図６７】「ちぎる」の第１０段階を示す図である。
【図６８】「ちぎる」の第１１段階を示す図である。
【図６９】「くっつける」の第１段階を示す図である。
【図７０】「くっつける」の第２段階を示す図である。
【図７１】「くっつける」の第３段階を示す図である。
【図７２】「くっつける」の第４段階を示す図である。
【図７３】「くっつける」の第５段階を示す図である。
【図７４】「くっつける」の第６段階を示す図である。
【図７５】「くっつける」の第７段階を示す図である。
【図７６】平行移動の第１段階を示す図である。
【図７７】平行移動の第２段階を示す図である。
【図７８】平行移動の第３段階を示す図である。
【符号の説明】
１  入力手段
２  変形手段
３  記憶手段
４  形状生成手段
５  出力手段
１１  仮想空間
１２  感覚情報出力装置
１３  制御情報入力装置
１４  データ出力装置
１５  バーチャクレイ
２１  ＣＰＵ
２２  メモリ
２３  入力装置
２４  出力装置
２５  外部記憶装置
２６  媒体駆動装置
２７  ネットワーク接続装置
２８  バス
２９  可搬記録媒体
３１  近傍
３２  核
４１  ポインティングデバイス
４２  データグローブ
４３  力入力装置
４４  ディスプレイ
４５  バイブレータ
４６  力出力装置
４７  力入出力装置
５１  ポインティングデバイスのモデル
５２  データグローブのモデル
５３  力入力装置のモデル
５４  オペレーションパネルのモデル
５５  ジェスチャシステムのモデル
５６  バーチャクレイのモデル
５７  ディスプレイのモデル
５８  バイブレータのモデル
５９  力出力装置のモデル
６１  移動作用ベクトル
６２、６３、６４、６５、６６、６７、９２  仮想粒子
６８、９１、９３、９４、９５、１０１、１０２、１０３、１０４、１０５、１０６、１１１  移動ベクトル
７１  シンプレックス
７２  凸包
８１  変形作用ベクトル
８２  反作用ベクトル
９６、９７  皮膜
【図１】
0003904671.tif 000005
【図２】
0003904671.tif 000006
【図３】
0003904671.tif 000007
【図４】
0003904671.tif 000008
【図５】
0003904671.tif 000009
【図６】
0003904671.tif 000010
【図７】
0003904671.tif 000011
【図８】
0003904671.tif 000012
【図９】
0003904671.tif 000013
【図１０】
0003904671.tif 000014
【図１１】
0003904671.tif 000015
【図１２】
0003904671.tif 000016
【図１３】
0003904671.tif 000017
【図１４】
0003904671.tif 000018
【図１５】
0003904671.tif 000019
【図１６】
0003904671.tif 000020
【図１７】
0003904671.tif 000021
【図１８】
0003904671.tif 000022
【図１９】
0003904671.tif 000023
【図２０】
0003904671.tif 000024
【図２１】
0003904671.tif 000025
【図２２】
0003904671.tif 000026
【図２３】
0003904671.tif 000027
【図２４】
0003904671.tif 000028
【図２５】
0003904671.tif 000029
【図２６】
0003904671.tif 000030
【図２７】
0003904671.tif 000031
【図２８】
0003904671.tif 000032
【図２９】
0003904671.tif 000033
【図３０】
0003904671.tif 000034
【図３１】
0003904671.tif 000035
【図３２】
0003904671.tif 000036
【図３３】
0003904671.tif 000037
【図３４】
0003904671.tif 000038
【図３５】
0003904671.tif 000039
【図３６】
0003904671.tif 000040
【図３７】
0003904671.tif 000041
【図３８】
0003904671.tif 000042
【図３９】
0003904671.tif 000043
【図４０】
0003904671.tif 000044
【図４１】
0003904671.tif 000045
【図４２】
0003904671.tif 000046
【図４３】
0003904671.tif 000047
【図４４】
0003904671.tif 000048
【図４５】
0003904671.tif 000049
【図４６】
0003904671.tif 000050
【図４７】
0003904671.tif 000051
【図４８】
0003904671.tif 000052
【図４９】
0003904671.tif 000053
【図５０】
0003904671.tif 000054
【図５１】
0003904671.tif 000055
【図５２】
0003904671.tif 000056
【図５３】
0003904671.tif 000057
【図５４】
0003904671.tif 000058
【図５５】
0003904671.tif 000059
【図５６】
0003904671.tif 000060
【図５７】
0003904671.tif 000061
【図５８】
0003904671.tif 000062
【図５９】
0003904671.tif 000063
【図６０】
0003904671.tif 000064
【図６１】
0003904671.tif 000065
【図６２】
0003904671.tif 000066
【図６３】
0003904671.tif 000067
【図６４】
0003904671.tif 000068
【図６５】
0003904671.tif 000069
【図６６】
0003904671.tif 000070
【図６７】
0003904671.tif 000071
【図６８】
0003904671.tif 000072
【図６９】
0003904671.tif 000073
【図７０】
0003904671.tif 000074
【図７１】
0003904671.tif 000075
【図７２】
0003904671.tif 000076
【図７３】
0003904671.tif 000077
【図７４】
0003904671.tif 000078
【図７５】
0003904671.tif 000079
【図７６】
0003904671.tif 000080
【図７７】
0003904671.tif 000081
【図７８】
0003904671.tif 000082