(57)【特許請求の範囲】
【請求項１】
作業者が描画した仮想物体を変形させる境界要素法による変形シミュレーション方法であって、
作業者が仮想物体を描画する仮想物体描画段階と、
前記仮想物体描画段階の間に、境界要素法の行列の組み立てを実行する行列組み立て段階と、
仮想物体描画段階の終了後に仮想物体の初期境界条件を決定する初期境界条件決定段階と、
作業者が仮想物体を変形させる操作を行なったときに仮想物体の境界条件を設定する境界条件設定段階と、
前記行列組み立て段階で組み立てられた行列を前記境界条件設定段階で設定された境界条件に従って連立方程式としその解を得る連立方程式計算段階と、
前記連立方程式計算段階で得られた解を反映して仮想物体が変形した状態を描画する仮想物体変形状態描画段階と、を備え、
前記連立方程式計算段階が、下記の［ａ］〜［ｃ］のいずれか、または２つ以上の組み合わせによって行なわれることを特徴とする、仮想物体の変形シミュレーション方法。
［ａ］前記連立方程式の解を得ながら、D.L. Jamesの手法の前処理計算を行なう。
［ｂ］D.L. Jamesの手法の前処理計算が一部完了している場合は、D.L.Jamesの手法により前記連立方程式の解を得る。
［ｃ］D.L. Jamesの手法の前処理計算が全て完了している場合は、D.L.Jamesの手法により前記連立方程式の解を得る。  
【請求項２】
請求項１記載の仮想物体の変形シミュレーション方法の、前記行列組み立て段階において、組み立てるべき行列の各要素を描画された仮想物体の積分領域ごとの計算結果に分けることにより、組み立てるべき行列を２つの行列に分けて保存しておき、仮想物体の描画が完了したら前記２つの行列の和を取ることにより、境界要素法の行列の組み立てが完成することを特徴とする仮想物体の変形シミュレーション方法。
【請求項３】
請求項１または２記載の仮想物体の変形シミュレーション方法の、前記連立方程式計算段階において、D.L. Jamesの手法の前処理計算を実行する際、1回の連立方程式の計算に対して、D.L. Jamesの手法の前処理計算で求める行列のうちの任意の１列の値を求めることを特徴とする仮想物体の変形シミュレーション方法。
【請求項４】
請求項３記載の仮想物体の変形シミュレーション方法の、前記連立方程式計算段階において、D.L.Jamesの手法の前処理計算のための連立方程式の計算と、境界要素法の解を得るための連立方程式の計算を実行する際にGaussの消去法を用いることで、共通する計算部分に関して、同時に処理することを特徴とする仮想物体の変形シミュレーション方法。
【請求項５】
請求項１〜４のいずれかに記載の仮想物体の変形シミュレーション方法の、前記連立方程式計算段階において、D.L. Jamesの手法の前処理計算が必要な２つの行列に対して、一方の行列の前処理計算がi列（ｉは自然数）に対するものであれば、次にもう一方の行列のi列に対する前処理計算を行ない、２つの行列の同じ列の要素を連続して計算することを特徴とする仮想物体の変形シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上の仮想物体に対して、仮想物体の変形シミュレーションを行う際の仮想物体の構築時及び変形時のシミュレーション方法に関する。
【背景技術】
【０００２】
コンピュータ上に再現された仮想物体を扱うための技術が多く提案されている。その中で、仮想物体を変形させるための技術を扱う分野がある。例えば、コンピュータ上に仮想球体を描画し、ユーザが仮想球体を突くなどの操作をした際に、仮想球体がゴムのような変形をする場合の変形挙動を与えるための計算処理方法やそのシステムなどがそれにあたる。これらの技術により、コンピュータグラフィックス（CG）のデザイナーが仮想物体の動作（変形した形状など）を予めデザイン・作成をしておかなくとも、自動的に変形した形状を生成することが可能となる。
【０００３】
このような変形を再現する方法として、物理シミュレーション法が用いられることが多い。物理シミュレーション法は具体的には、有限要素法や境界要素法、粒子法のような工学の分野で用いられる方法のことを指す。特許文献１では有限要素法による変位シミュレーション方法が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−０１１４６０号公報
【非特許文献】
【０００５】
【非特許文献１】D.L. James, D.K. Pai,  "ARTDEFO:Accurate real time deformable objects," ACM SIGGRAPH99, pp.65-72, 1999.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
変形の再現のための物理シミュレーション法の多くは、解を得るために長時間の計算処理が必要になる。そのため、インタラクティブな変形処理をさせるためには、計算の簡略化や前処理が行われる。本来の物理シミュレーションの場合は現実の現象を寸分違わず再現しようとするが、ゲームなどでのCGではそこまでの正確さは要求されないので計算誤差の発生と引き換えに計算処理を減らすことを、計算の簡略化と呼ぶ。また、前処理とは、変形の計算で必要な計算処理の一部を予め計算してメモリやハードディスクドライブ（HDD）に保存しておき、変形の計算の際にメモリやHDDから計算済みのデータを読み出して、計算コストを削減する方法のことである。
【０００７】
これら変形のための物理シミュレーションを、インタラクティブなアプリケーションで利用する場合の「計算の簡略化」と「前処理」の影響は以下のようになる。ここでインタラクティブなアプリケーションとは、ユーザがマウスなどの入力デバイスを用いて仮想物体を描き、描いた仮想物体をユーザがマウスなどの入力機器で操作することで変形操作する場合とする。図１はこの一例を模式的に示したもので、仮想物体を描画し（図１（ａ）〜（ｄ））、描画終了後にその物体を押すことによって変形する様子（図１（ｅ））を表している。
【０００８】
この場合、計算の簡略化はほとんど影響がないと考えられる（変形可能な条件に制限が発生するため、変形させる物体や変形させ方によっては影響がでることはある）。それに対して、前処理はインタラクティブ性を損なわせてしまう可能性がある。これは、CGの物理シミュレーションとして従来利用されてきた方法では、ユーザによる描画と変形操作の間に前処理のための計算時間が必要なためである。この前処理は操作を受け付けない待ち時間となり、ユーザは操作を停止しなければならない。インタラクティブなアプリケーションの場合では、たとえこの前処理の時間が３０秒であったとしても、ユーザに対してストレスを与えてしまう。
【０００９】
本発明では、物理シミュレーション法として境界要素法を用いる。境界要素法とは、グリーンの定理を用いて、解くべき対象である偏微分方程式を、境界上の積分方程式の問題に置き換えて解く手法である。この時、解くべき問題の次元が一つ下がるため、その分だけ計算量が減り、誤差も減らせる。境界要素法も前処理が必要で、この場合の前処理は、境界要素法の「行列の組み立て」、及び、組み立てた行列を連立方程式にして解く「行列の解の計算」の２種類である。本発明では、これら２つの前処理において、待ち時間を発生させないことを課題とする。
【課題を解決するための手段】
【００１０】
以上の課題を解決するために、本発明の請求項１においては、作業者が描画した仮想物体を変形させる境界要素法による変形シミュレーション方法であって、
作業者が仮想物体を描画する仮想物体描画段階と、
前記仮想物体描画段階の間に、境界要素法の行列の組み立てを実行する行列組み立て段階と、
仮想物体描画段階の終了後に仮想物体の初期境界条件を決定する初期境界条件決定段階と、
作業者が仮想物体を変形させる操作を行なったときに仮想物体の境界条件を設定する境界条件設定段階と、
前記行列組み立て段階で組み立てられた行列を前記境界条件設定段階で設定された境界条件に従って連立方程式としその解を得る連立方程式計算段階と、
前記連立方程式計算段階で得られた解を反映して仮想物体が変形した状態を描画する仮想物体変形状態描画段階と、を備え、
前記連立方程式計算段階が、下記の［ａ］〜［ｃ］のいずれか、または２つ以上の組み合わせによって行なわれることを特徴とする、仮想物体の変形シミュレーション方法、としたものである。
【００１１】
［ａ］前記連立方程式の解を得ながら、D.L. Jamesの手法の前処理計算を行なう。
［ｂ］D.L. Jamesの手法の前処理計算が一部完了している場合は、D.L.Jamesの手法により前記連立方程式の解を得る。
［ｃ］D.L. Jamesの手法の前処理計算が全て完了している場合は、D.L.Jamesの手法により前記連立方程式の解を得る。
【００１２】
また請求項２においては、請求項１記載の仮想物体の変形シミュレーション方法の、前記行列組み立て段階において、組み立てるべき行列の各要素を描画された仮想物体の積分領域ごとの計算結果に分けることにより、組み立てるべき行列を２つの行列に分けて保存しておき、仮想物体の描画が完了したら前記２つの行列の和を取ることにより、境界要素法の行列の組み立てが完成することを特徴とする仮想物体の変形シミュレーション方法としたものである。
【００１３】
また請求項３においては、請求項１または２記載の仮想物体の変形シミュレーション方法の、前記連立方程式計算段階において、D.L. Jamesの手法の前処理計算を実行する際、1回の連立方程式の計算に対して、D.L. Jamesの手法の前処理計算で求める行列のうちの任意の１列の値を求めることを特徴とする仮想物体の変形シミュレーション方法としたものである。
【００１４】
また請求項４においては、請求項３記載の仮想物体の変形シミュレーション方法の、前記連立方程式計算段階において、D.L. Jamesの手法の前処理計算のための連立方程式の計算と、境界要素法の解を得るための連立方程式の計算を実行する際にGaussの消去法を用いることで、共通する計算部分に関して、同時に処理することを特徴とする仮想物体の変形シミュレーション方法としたものである。
【００１５】
また請求項５においては、請求項１〜４のいずれかに記載の仮想物体の変形シミュレーション方法の、前記連立方程式計算段階において、D.L. Jamesの手法の前処理計算が必要な２つの行列に対して、一方の行列の前処理計算がi列（ｉは自然数）に対するものであれば、次にもう一方の行列のi列に対する前処理計算を行ない、２つの行列の同じ列の要素を連続して計算することを特徴とする仮想物体の変形シミュレーション方法としたものである。
【００１６】
以上の手段により本発明では、「行列の組み立て」及び「行列の解の計算」の前処理を、仮想物体の描画や変形操作といった他の操作と並行して実行することで待ち時間をなくす。ここで、ユーザが仮想物体を描画している状態を「描画プロセス」、ユーザが仮想物体を操作することで変形させている状態を「操作プロセス」と呼ぶことにする。「行列の組み立て」は、「描画プロセス」において実行され、「行列の解の計算」は、「操作プロセス」において実行される。
【００１７】
「描画プロセス」時の前処理に関しては、一般的には仮想物体を描画し終わった後に境界要素法の「行列を組み立て」を実行していたが、本発明では描画と並行して「行列の組み立て」を行ってしまうことで、描画後の待ち時間がないようにする。さらに、描画時に修正作業を行える機能を実装する。そのために行列を2つに分割し、積分領域ごとに行列の組み立てを行った結果の値を保存することで描画の修正作業を可能にする。
【００１８】
「操作プロセス」における前処理は、境界要素法の連立方程式の解法に何を利用するのかに大きく依存している。例えば、連立方程式の解法として一般的に知られているGaussの消去法やヤコビ法などでは前処理の必要がない。前処理を行う方法としては、D.L. Jamesの手法（非特許文献１参照）がある。D.L.Jamesの手法の特徴としては、連立方程式を解く計算コストは小さいが、前処理に膨大な計算コストが必要となる。前処理に必要な計算コストを除いた場合、連立方程式を解く計算コストはD.L.Jamesの手法の方が小さくなる。
【００１９】
本発明の課題は前処理の計算時間を無くす（作業者に計算時間を意識させない）ことであるため、前処理に多くの時間がかかるD.L. Jamesの手法をそのまま用いることはできない。しかし、前処理の必要のないGaussの消去法などは、D.L. Jamesの手法と比較して計算コストが大きい。そこで本発明は、始めに前処理の必要のない解法を用いて計算処理を行い、同時にD.L.Jamesの手法の前処理の一部を実行する。複数回に分けて前処理を実行することで、作業者に前処理のための待ち時間を意識させることなく前処理の計算ができ、D.L.Jamesの手法を使用可能にできる。また、連立方程式の解法にGaussの消去法を用いた場合、境界要素法の連立方程式の計算とD.L. Jamesの手法の前処理の計算の多くの部分を並行して実行できる。さらに、前処理がすべて終わっていなかったとしても、条件によってはD.L.Jamesの手法を利用できるため、さらなる計算の高速化が行える。
【発明の効果】
【００２０】
本発明は、境界要素法の実行に必要な前処理を、仮想物体の描画や変形操作と同時に計算することで、前処理による待ち時間なしに境界要素法の計算が行える。そのため利用ユーザは、仮想物体の描画から操作による仮想物体の変形までの一連の作業を停止することなく行える。
【図面の簡単な説明】
【００２１】
【図１】本発明を利用する状況の例を表す説明図。
【図２】本発明に関わるシステム構成を表すブロック図。
【図３】境界要素法の計算手順を表すチャート図。
【図４】仮想物体の形状の一例を表す説明図。
【図５】円形の仮想物体が、頂点と直線から構成されていることを表す説明図。
【図６】境界要素法の計算時の境界条件を表す説明図。
【図７】本発明の計算の流れを表したチャート図。
【図８】描画プロセスにおけるユーザの描画操作とその際の行列の組み立ての計算手順を表した説明図。
【図９】行列の組み立ての計算時における積分領域を表すための説明図。
【図１０】ユーザが仮想物体を描画する際の頂点と積分領域を表した説明図。
【図１１】正方形型の仮想物体の初期状態（初期の境界条件）と、ユーザが操作したことによる変形の様子を表した説明図。
【図１２】Gaussの消去法を行った際に同時に前処理を行う場合の計算手順を表した説明図。
【発明を実施するための形態】
【００２２】
本発明に関わるシステムは、図２に示すようにCPU（中央演算処理装置）とメモリ、HDD（ハードディスクドライブ）からなるコンピュータ、ディスプレイなどの表示装置、マウスやキーボードなどの入力装置からなり、また、Webサービスで利用する場合には、コンピュータに通信機器を持たせ、ネットワーク経由でWebサーバに接続できるとする。
【００２３】
はじめに、本発明で利用する境界要素法の基本的な計算手順について述べる。本発明における境界要素法として、線形弾性物体に対する境界要素法を用いる。この場合の手順を図３に示す。
【００２４】
まず、はじめに仮想物体の形状を決定する（図３のステップＳ３−１）。境界要素法の実行で必要な仮想物体は、２次元の場合であれば、閉じた１本の曲線から構成され、かつ、曲線は交わらないものである。また３次元の場合も、閉じた1つの曲面から構成され、かつ、面が交差しないものとなる。図４は、２次元の場合の仮想物体の形状の例を示す。このような幾何学的な図形でなく、フリーハンドでの描画曲線から構成されるものであっても問題ない。そして、これらの曲線や曲面は、頂点と直線または面の集合から構成されているとする。図５は、２次元の円形状の仮想物体の一例であり、頂点と直線から構成されていることを示す。
【００２５】
次に、仮想物体の形状を元に境界要素法で使用する行列を組み立てる（図３のステップＳ３−２）。境界要素法の行列は以下の数式で表すことができる。
【数１】
0005391759.tif 000002
Ｈ，Ｇは、ともにｎ×ｎの行列である。ただし、ｎは頂点数×次元数（２次元の場合は２、３次元の場合は３）である。また、Ｕ，Ｔはｎ×１の行列である。ここで、行列の組み立てとは、Ｈ，Ｇの値を求めることを指す。Ｈ，Ｇの成分は、仮想物体の表面上を積分する（２次元の場合は線積分、３次元の場合は面積分となる）ことで求めることができる。具体的には、以下の式（境界積分方程式）を解くことになる。
【数２】
0005391759.tif 000003
ここで、２次元の場合は、
【数３】
0005391759.tif 000004
また、３次元の場合は、
【数４】
0005391759.tif 000005
である。ここでＰ，Ｑは仮想物体表面上の点、Ｃは境界の形状と性質に依存する値、ｕｉ，ｔｉは点ＰまたはＱにおけるｉ方向の変位及び力、νはPoisson比、μはせん断弾性係数、ｒはＰ，Ｑ間の距離、ｎは法線である。（参考文献：結城良治, 木須博行, "境界要素法による弾性解析",培風館, 1987. また、一般的な境界要素法の書籍に書かれている）。
【００２６】
次に、境界条件を設定する（図３のステップＳ３−３）。境界条件は、変位と力の２種類がある。境界条件は、各頂点に対して変位または力のうちの一方を定数として設定し、もう一方を未知の値として設定する。そして、境界要素法を最後まで実行することによって未知の値が求まる。
【００２７】
境界条件の与え方の一例としては、仮想物体を地面に固定するとしたら、地面に接する頂点の変位と、ユーザが操作したい頂点の変位を定数とする。その他の頂点は、変位を未知の値にする。
【００２８】
例えば図６は、正方形状（点線）の仮想物体を地面に固定して、図の右上側の角にある頂点を、矩形物体を使って押した場合の境界条件の設定例を示している。下側（地面と接している）の頂点、および矩形物体によって押されている頂点の変位は定数とし、その他の頂点は変位を未知の値としている。これら境界条件の値は、数１のＵ，Ｔに格納され、Ｕは変位、Ｔは力の値が入る。
【００２９】
次に、数１から連立方程式を組み立てる（図３のステップＳ３−４）。連立方程式は、ＨＵ＝ＧＴに対して境界条件を与えることにより組み立てられる。境界条件の設定の際に、各頂点で変位と力のうち一方を定数、もう一方を未知の値としたため、ｎ個の未知の値が存在する。ＨＵ＝ＧＴからｎ個の式を立てられる、ｎ個の未知の値は連立方程式の解として求めることができる。未知の値を左辺に移行すれば、ＨＵ＝ＧＴは以下の連立方程式となる。
【数５】
0005391759.tif 000006
ここで、Ａはｎ×ｎの行列、Ｘ，Ｚはｎ×１の行列であり、Ａ，Ｚは定数のみの成分からなる行列、Ｘは未知の値のみの成分からなる行列である。そして、数５のＡＸ＝Ｚの連立方程式を解く事によって未知の変位や力の値が求まる（図３のステップＳ３−５）。以上が本発明で使用する境界要素法の概要になる。
【００３０】
次に、本発明の詳細について説明する。本発明は図７に示したように描画プロセスと操作プロセスからなる。描画プロセスは、ユーザが仮想物体を描画する上で必要となる作業のためのプロセスである。
【００３１】
描画プロセスでは、ユーザがマウスなどの入力デバイスを用いて仮想物体の形状を作成し、それと並行して境界要素法の前処理となるＨＵ＝ＧＴの行列の組み立ての計算を行う。また、初期の境界条件の決定（地面に接する頂点は変位を定数として与えておく等）までを行う。
【００３２】
操作プロセスは、ユーザの操作により仮想物体を操作・変形するプロセスである。ユーザの操作による境界条件の設定（ユーザが操作する頂点の変位を定数として与える等）を行う。そして、与えた境界条件に対して連立方程式（数５）を組み立て、解を得る。
【００３３】
連立方程式を解くための方法は、D.L. Jamesの手法を利用するのに必要な前処理が完了している場合にはD.L.Jamesの手法を用いる。ここで、前処理についての条件として、すべて完了しているか、一部の前処理結果のみでD.L. Jamesの手法が実行できる場合とする。また、D.L.Jamesの手法が利用できない場合には、連立方程式を解き、並行してD.L. Jamesの前処理の一部を計算する。
【００３４】
はじめに、描画プロセスの詳細について説明する。従来の方法では、仮想物体の形状を決定した後に数１のＨ，Ｇの行列を組み立てていたため、組み立ての前処理を実行するための待ち時間が必要であったが、本発明では仮想物体の描画と行列の組み立てを同時に行う。つまり、図８のように仮想物体を少し描画したら、更新された分だけ行列の組み立てを行うといった作業を繰り返す。このことで、行列の組み立てに必要な計算を分散することができ、前処理のための待ち時間をユーザに意識させないことが可能となる。
【００３５】
行列の組み立ての計算手順は、以下のようになる。行列の組み立てには、数２と数３または数２と数４を実行する必要がある。これらの式は、ある頂点に対して仮想物体の表面を積分する計算が行われることを意味する。例として、図９のような領域Ａ〜Ｈの積分領域に分けられた仮想物体に対する積分を考えてみる。この場合、行列Ｈのｉ行目Ｈｉは以下の式で表すことができる。
【数６】
0005391759.tif 000007
この式は行列Ｇに対しても同様に成り立つ。数６は、どの積分領域から計算を始めても計算結果は変わらないため、描画途中であっても行列の組み立てが可能なことがわかる。
【００３６】
仮想物体の描画の過程の一例を、図１０に示す。図１０（ａ）のように頂点１、頂点２、領域Ａが決定されている場合では、頂点１に対する領域Ａの積分、頂点２に対する領域Ａの積分の実行が可能である。さらに、図１０（ｂ）のように頂点３が追加された場合、頂点１〜３に対する領域Ａ，Ｂの積分が実行可能である。ただし、頂点１〜２に対する領域Ａの計算はすでに行われているので、頂点１〜２に対する領域Ｂ、頂点３に対する領域Ａ，Ｂの積分のみ実行すればよい。図１０（ｃ）のように、さらに頂点４が追加された場合には、頂点１〜３に対する領域Ｃの積分及び頂点４に対する領域Ａ〜Ｃの積分を実行していく。同様に頂点及び領域が追加されるたびに、追加された頂点や領域に対する積分のみを行っていけばよい。
【００３７】
このように描画により増えた領域や頂点に対してのみ積分処理を行うことができ、描画と行列の組み立てが並行して実行できる。
【００３８】
次に、図形の修正について述べる。描画中には仮想物体の形状の修正作業が発生すると考えられる。そのため、ユーザに対する利便性の向上から図形の修正機能を持たせる。従来法ならば、図形の描画後に行列Ｈ，Ｇの組み立てを行うため、修正を行っても問題はない。しかし、本発明は図形の描画と行列Ｈ，Ｇの組み立てを並行して実行しているため、図形の修正を行った際には計算途中の行列Ｈ，Ｇの値も修正しなければならない。
【００３９】
このとき重要なことは、数６の１つの成分の値は、２つの積分領域に依存していることである。図９を例にとって考えてみると、積分の実行のためには領域上の任意の点の座標が必要となるが、領域Ａ上の任意の点の座標は頂点１と頂点２から求めており、また、領域Ｂ上の任意の点であれば、座標は頂点２と頂点３から求めている。そのため、１つの頂点が２つの積分領域に対して影響を及ぼすことになる。従って、図１０（ｄ）のように頂点５まで描画した後、修正のために頂点５を削除（同時に領域Ｄも削除される）したとしても、行列Ｈ，Ｇの領域Ｄに依存する値のみを削除することはできない。
【００４０】
修正作業を実現するための簡単な方法としては、計算途中の全ての値を保存しておくことが考えられる。つまり、先程の図１０（ｄ）で頂点５を削除した場合の例では、頂点１〜２まで描画した場合の結果、頂点１〜３まで描画した場合の結果、・・・、とすべての状態での行列の値を保存しておく。この方法ならば、頂点５を削除したとしても頂点４まで描画したデータを読み出すだけで行列の修正ができる。
【００４１】
しかし、この方法では、図１０（ｄ）のように頂点５まで描いたものの、頂点３を修正したいといった場合には対応できない。なぜなら頂点１，２，４，５と領域Ａ，Ｄのみの積分結果のデータは存在しないためである。
【００４２】
そこで本発明では、Ｈ，Ｇを、それぞれ２つの行列に保存するようにする。例えば、数６では、１列目の値は頂点ｉに対する「領域Ｈ，Ａの積分結果」となっているので、これを、頂点ｉに対する「領域Ａの積分結果」と「領域Ｈの積分結果」の２つの値に分解し、それぞれ別に保存する。他の成分についても同様に２つに分けることができる。従って、２つの行列があれば保存できる。
【００４３】
また、逆に、
「領域Ｈ，Ａの積分結果」の値＝「領域Ｈの積分結果」の値＋「領域Ａの積分結果」の値
で計算できるため、２つの行列の和を求めるだけで、行列Ｈ，Ｇの値が求まる。２つの行列には領域ごとの積分の値が格納されているため、例えば先程の例で頂点５を削除する場合には領域Ｄに対応する値を、頂点３を削除する場合には領域Ｂ，Ｃに対応する値を削除するだけで良い。そして、仮想物体の描画の完了後には、最終処理として２つの行列の和を求めてＨ，Ｇの行列の組み立ては完成する。以上が描画プロセスである。
【００４４】
操作プロセスでは、組み立てたＨＵ＝ＧＴの式（数１）を連立方程式の形（数５のＡＸ＝Ｚ）にして解く。数１から数５への式変形は、与える境界条件に依存する。
【００４５】
連立方程式の計算は、次の３つの段階で構成される。第１段階では連立方程式を数値解析により解く。そして、同時にD.L. Jamesの手法の計算で必要な前処理の一部を実行する。この際、Gaussの消去法を用いれば効率的に計算できる。第２段階では、D.L.Jamesの手法を用いる。境界条件によっては前処理の計算がすべては完了していなくともD.L. Jamesの手法を利用できる。第３段階は、前処理がすべて完了している条件とし、D.L.Jamesの手法を利用する。前処理が完了したため、あらゆる境界条件に対してもD.L. Jamesの手法を用いることができる。第２段階から、再び第１段階に戻ることはあるが、第３段階の条件を満たしたら、以降はすべて第３段階で計算を行う。
【００４６】
D.L. Jamesの手法の概要を述べる。まず、図１１のような状態を考える。図１１は正方形型の仮想物体に対して適用する場合であり、黒塗りの丸は変位を定数として境界条件を与えた頂点、白抜きの丸は変位を未知の値として境界条件を与えた頂点を表す。図１１（ａ）は、初期の境界条件を表す。次に図１１（ｂ）のように、ユーザが矩形物体を用いて仮想物体の右上側の角にある頂点を操作したとする。それに伴い、押されている仮想物体の右上の頂点の変位が定数となる。そして、連立方程式の解を得ることで変位未知の頂点の変位の値が求まり、仮想物体が変形した様子を示している。
【００４７】
図７の操作プロセスで示したとおり、まず初期境界条件を決定する。これは、ユーザによる変形操作が行われていない状態の境界条件を与えることが適している（原理上はどのような境界条件であってもかまわないが、ほとんどの場合でこの境界条件が最も計算量を小さくできる）。図１１（ａ）では、仮想物体の下方の頂点の変位を定数とし、他の箇所では変位を未知の値としている。この境界条件を与えた場合の数５を以下の式とする。
【数７】
0005391759.tif 000008
次に、ユーザが操作を行った場合を考える。図１１（ｂ）のように、ユーザの操作によって、境界条件は下側及びユーザの操作点に対応する頂点では変位が定数、他の頂点では変位が未知の値という境界条件へと変化する。このときの数５を以下のように記述する。
【数８】
0005391759.tif 000009
数８の未知の値X1が求めるべき解である。この解を得るために、D.L. Jamesの手法では以下の2つの式を順に実行する。
【数９】
0005391759.tif 000010
【数１０】
0005391759.tif 000011
【００４８】
ここで、δＵ，δＴは変位及び力の初期境界条件からの変化量、δＡは初期境界条件に対するＡの変化量を示し、つまりδＡ＝Ａ１−Ａ０である。Ｉ，Ｅは単位行列を表す。また、右上の添え字Ｔは転置行列、左下の添え字ＣはδＡの成分の中ですべての値が０となる列を削除したサブ行列を表し、サブ行列の行数はｎとなるが列数はｎよりも小さな値をとる。
【００４９】
D.L. Jamesの手法は、数９〜数１０を解くことである。このとき、前処理として計算する値は、数９の右辺第2項と第3項の「Ａ０の逆行列の計算」及び「Ａ０の逆行列とHまたはＧとの積の計算」となる。つまり、数９の
【数１１】
0005391759.tif 000012
の2つの値の計算結果を予め計算する。また数９の値だけでなく、数１０のＡ０の逆行列とδＡＣとの積の値も数１１の計算結果から求めることができるため、数１１の前処理により、数９及び数１０は低い計算コストとなる。
【００５０】
連立方程式の計算の第１段階について述べる。この第１段階では、与えられた境界条件に対して数８の連立方程式を組み立て解く。また、同時にD.L. Jamesの手法における数１１の前処理を実行する。ただし、数１１は逆行列の計算を含んでおり、かつ、正方行列と正方行列の積も求めなければならないため、計算量はかなり大きい。そこで、数１１を求めるための処理を行列の列の数であるｎ個に分割して求める。この場合の計算法は次のようにする。
【００５１】
まず、以下の式を考える。
【数１２】
0005391759.tif 000013
ここで、Ｙは成分が未知の値からなるｎ×１の行列、Ｗは任意の定数からなるｎ×１の行列とし、その他の値は数７〜数１１と同様とする。数１２は、Ｗに値を与えれば連立方程式の形となりＹの値が求まる。Ｙの値は、以下の式で書くことができる。
【数１３】
0005391759.tif 000014
仮に、Ｗの成分のｉ行目の値が１で、それ以外の値が０であったとする。すると、
【数１４】
0005391759.tif 000015
となる。数１２の連立方程式を解くことでＹの値が求まるので、右辺のｉ列の値が求まり、数１１の前処理の一部を実行できたことになる。
【００５２】
また、連立方程式の解法にGaussの消去法を用いたとする。この場合、数１２に対するGaussの消去法の計算と、数８に対するGaussの消去法の計算は、計算処理に共通部分が多い。このことを利用すれば計算を高速化できる。これは、Ａ１，Ａ０の値は、ユーザの与えた境界条件と初期境界条件との違いにしか依存しないため、ほとんどの列の値が同じになるためである。従って、共通部分は一方のみ演算すればよい。図１２は、演算の例を示している。
【００５３】
図１２にあるように一般的なGaussの消去法では、行列を操作することによって係数部分を単位行列にし、そのときの右辺の値が連立方程式の解となる。Ａ１，Ａ０には、例えば図１２のように成分の値の共通部分が存在する。Ａ１，Ａ０に対してGaussの消去法を適用する場合、はじめに図に示すように共通の値のみに対して単位行列を作る操作を行う。共通部分に関しては同じ演算となるため、どちらか一方のみ計算すればよく、計算時間を短縮できる。共通部分以外に関しては、それぞれで異なった演算を行う。
【００５４】
以上の操作により、数８の解の計算とD.L. Jamesの手法の前処理の計算を同時に効率よく計算できる。Ｇに対しても同様に計算できる。ここで重要な点として、数１１の２つの値は、片方の行列のｉ列を計算したら、次にもう片方の行列のｉ列の計算を行うといったように、交互に計算していく方が効率が良い。その理由は次の第２段階の説明で述べる。
【００５５】
操作プロセスの第２段階では、前処理がすべては終わっていなくともD.L. Jamesの手法が利用可能な条件が存在するため、その場合にD.L.Jamesの手法を利用する。数９、数１０の２つの式を計算できる条件が、ここでいう利用可能な条件となる。この条件を明らかにするために図１１を例にとり、はじめに数９について考えてみる。
【００５６】
数９右辺第１項は、初期の境界条件でＺ０の値を０としておけば０となり、計算に影響しない。通常、Ｚ０の値はこのように設定する。δＵは、ユーザにより操作された頂点に対応する成分でのみ０以外の値を持つ。このとき、０以外の値を持つ成分がｋ行とｌ行であったとする（２つに限らず、複数の行が０以外の値を持つことはある）。すると、数９右辺第２項で必要な前処理は、δＵの係数のうちのｋ列とｌ列の成分の値のみとなり、これらの値がわかっていれば計算できる。数９右辺第３項では、各頂点に働く力δＴを０としておけば、数９右辺第３項は０となる。
【００５７】
次に、数１０について考える。数１０で前処理が必要な値は、以下の値である。
【数１５】
0005391759.tif 000016
それぞれの値の意味は、数１０と同様である。結局、数１５は以下の式となる。
【数１６】
0005391759.tif 000017
数１６右辺第１項が前処理の必要な式である。右下の添え字Cはサブ行列を表しているが、今回の例ではｋ列とｌ列の値からなるｎ×２のサブ行列を指すことになる。この場合、以下の式が成り立つ。
【数１７】
0005391759.tif 000018
なぜなら、はじめの境界要素法の説明（数１から数５への変形）で述べたように、Ａ１はＨまたはＧの成分に負の符号をつけた値から構成される。従って、Ａ１のｋ列とｌ列は境界条件として変位が定数となり、変位が定数の場合にはＧ列の成分から構成されるため、Ｇのｋ列とｌ列の負の値と等しくなる。
【００５８】
以上のように、一部の前処理のみであってもD.L. Jamesの手法が利用できる。また、例で述べてきたように、ｋ列とｌ列に対して、数１１の２つの値を両方計算しておかなければ実行できないため、１段階目の前処理の計算を行う場合には、２つの値を交互に計算しておく方が効率が良い。
【００５９】
操作プロセスの第３段階は、D.L. Jamesの手法のみを使って解を得る。第３段階に移行する条件は、数１１の２つの値が求まり、前処理が終わっていることである。
【００６０】
以上が操作プロセスとなる。操作プロセスでは、前処理をせずにかつ最終的に高速な計算を実現するために、はじめは連立方程式を解くことで境界要素法の解を得ると同時にD.L. Jamesの手法のための前処理の計算が行われており、前処理を終えればD.L. Jamesの手法が実行できる。また、前処理の計算はGaussの消去法を用いれば、共通する計算部分を持たせ効率よく計算できる。さらに、境界条件によっては、D.L.Jamesの手法は前処理がすべては計算されていなくとも実行可能なことから、前処理がすべて終わらなくともD.L. Jamesの手法を実行できる機能を有している。
【符号の説明】
【００６１】
１０・・・変形前の仮想物体
１１・・・変形後の仮想物体
【図１】
0005391759.tif 000019
【図２】
0005391759.tif 000020
【図３】
0005391759.tif 000021
【図４】
0005391759.tif 000022
【図５】
0005391759.tif 000023
【図６】
0005391759.tif 000024
【図７】
0005391759.tif 000025
【図８】
0005391759.tif 000026
【図９】
0005391759.tif 000027
【図１０】
0005391759.tif 000028
【図１１】
0005391759.tif 000029
【図１２】
0005391759.tif 000030