(57)【特許請求の範囲】
【請求項１】
コンピュータグラフィクスによるシミュレーションとしてオブジェクトをモデリングする方法であって、該モデリングするコンピュータのプロセッサが、
粒子からモデリングされた第１オブジェクトと粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出するステップと、
前記隣接領域に対して格子を定義するステップと、
前記格子の格子点に格納された情報を用いて、前記隣接領域における前記第１オブジェクトと前記第２オブジェクトとの間の作用力を算出するステップと、
前記作用力に基づいて前記第１オブジェクトと前記第２オブジェクトをモデリングするステップと、
を含み、
前記格子を定義するステップは、
前記隣接領域で前記第１オブジェクト又は前記第２オブジェクトの輪郭と前記輪郭に隣接する前記格子の格子点との距離値を抽出するステップと、
前記抽出された距離値を前記格子点に格納するステップと、
を含む、
オブジェクトをモデリングする方法。
【請求項２】
前記作用力を算出するステップは、
前記隣接領域で前記第１オブジェクトの粒子と前記第２オブジェクトの粒子との間に衝突が発生したか否かを判断するステップと、
前記判断結果に基づいて、前記第１オブジェクトの粒子と前記第２オブジェクトの粒子との間の作用力を算出するステップと、
を含む、
請求項１に記載のオブジェクトをモデリングする方法。
【請求項３】
前記衝突が発生したか否かを判断するステップは、前記第１オブジェクトの粒子の位置に隣接する格子点に格納された距離値を用いて前記衝突が発生したか否かを判断するステップを含む、
請求項２に記載のオブジェクトをモデリングする方法。
【請求項４】
前記衝突が発生したか否かを判断するステップは、前記第１オブジェクトの粒子が体積保存条件を満足するか否かをさらに考慮する、
請求項３に記載のオブジェクトをモデリングする方法。
【請求項５】
前記作用力を算出するステップは、
前記衝突が発生したと判断される場合、前記隣接領域で前記第１オブジェクトの粒子と前記第２オブジェクトの粒子のうち衝突が発生した第１オブジェクトの粒子を検出するステップと、
前記検出された第１オブジェクトの粒子の位置を再定義するステップと、
前記第１オブジェクトの粒子の再定義された位置に基づいて、前記衝突によって前記第２オブジェクトに及ぼす作用力を算出するステップと、
を含む、
請求項２または３に記載のオブジェクトをモデリングする方法。
【請求項６】
前記検出された第１オブジェクトの粒子の位置を再定義するステップは、前記検出された第１オブジェクトの粒子の位置を前記第２オブジェクトを貫通しない位置に再定義するステップを含む、
請求項５に記載のオブジェクトをモデリングする方法。
【請求項７】
前記検出された第１オブジェクトの粒子の位置を再定義するステップは、
前記検出された第１オブジェクトの粒子を含むセルに該当する格子点に格納された距離値及び傾斜度を用いて、前記第２オブジェクトを貫通しない前記第１オブジェクトの粒子の移動方向及び最短移動距離を算出するステップと、
前記算出された移動方向及び最短移動距離により前記第１オブジェクトの粒子の位置を移動させるステップと、
を含む、
請求項５または６に記載のオブジェクトをモデリングする方法。
【請求項８】
前記格子点に格納された距離値及び前記算出された最短移動距離を用いて前記第１オブジェクトの粒子の移動速度を算出するステップと、
前記算出された移動速度を前記検出された第１オブジェクトの粒子を含むセルに該当する格子点に格納するステップと、
をさらに含む、
請求項７に記載のオブジェクトをモデリングする方法。
【請求項９】
前記衝突によって前記第２オブジェクトに及ぼす作用力を算出するステップは、
前記第１オブジェクトの粒子の再定義された位置で前記第１オブジェクトの粒子が前記第２オブジェクトから受けると推定される力を算出するステップと、
前記推定される力に基づいて前記衝突によって前記第２オブジェクトに及ぼす作用力を算出するステップと、
を含む、
請求項５に記載のオブジェクトをモデリングする方法。
【請求項１０】
前記算出された作用力を、前記第１オブジェクトの粒子の再定義された位置に該当する格子の格子点に格納するステップをさらに含む、
請求項９に記載のオブジェクトをモデリングする方法。
【請求項１１】
前記第１オブジェクトと前記第２オブジェクトは互いに異種である、
請求項１乃至１０いずれか一項に記載のオブジェクトをモデリングする方法。
【請求項１２】
前記第１オブジェクトは流体であり、前記第２オブジェクトは変形体である、
請求項１１に記載のオブジェクトをモデリングする方法。
【請求項１３】
請求項１乃至１２いずれか一項に記載の方法を実行させるためのプログラムが記録されたコンピュータ読み出し可能な記録媒体。
【請求項１４】
粒子からモデリングされた第１オブジェクトと、粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出し、前記隣接領域に対して格子を定義する格子変換モジュールと、
前記格子の格子点に格納された情報を用いて前記隣接領域における前記第１オブジェクトと前記第２オブジェクトとの間の作用力を算出し、前記作用力に基づいて前記第１オブジェクトと前記第２オブジェクトをモデリングするオブジェクトモデリングモジュールと、
前記格子変換モジュール及び前記オブジェクトモデリングモジュールを制御するプロセッサと、
を含み、
前記格子変換モジュールは、前記隣接領域で前記第１オブジェクト又は前記第２オブジェクトの輪郭と前記輪郭に隣接する前記格子の格子点との距離値を抽出し、前記抽出された距離値を前記格子の格子点に格納する、
オブジェクトをモデリングする装置。
【請求項１５】
粒子からモデリングされた第１オブジェクトと、粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出し、前記隣接領域に対して格子を定義する格子変換モジュールと、
前記格子の格子点に格納された情報を用いて前記隣接領域における前記第１オブジェクトと前記第２オブジェクトとの間の作用力を算出し、前記作用力に基づいて前記第１オブジェクトと前記第２オブジェクトをモデリングするオブジェクトモデリングモジュールと、
前記格子変換モジュール及び前記オブジェクトモデリングモジュールを制御するプロセッサと、
を含み、
前記オブジェクトモデリングモジュールは、
前記隣接領域で前記第１オブジェクトの粒子と前記第２オブジェクトの粒子との間に衝突が発生したか否かを判断する判断部と、
前記判断結果に基づいて、前記隣接領域で前記第１オブジェクトの粒子と前記第２オブジェクトの粒子のうち衝突が発生した第１オブジェクトの粒子を検出する検出部と、
前記検出された第１オブジェクトの粒子の位置を再定義する再定義部と、
前記第１オブジェクトの粒子の再定義された位置に基づいて、前記衝突によって前記第２オブジェクトに及ぼす作用力を算出する算出部と、
を含む、
オブジェクトをモデリングする装置。
【請求項１６】
前記再定義部は、前記検出された第１オブジェクトの粒子を含むセルに該当する格子点に格納された距離値及び傾斜度を用いて、前記第２オブジェクトを貫通しない前記第１オブジェクトの粒子の移動方向及び最短移動距離を算出し、前記算出された移動方向及び最短移動距離により前記第１オブジェクトの粒子の位置を移動させる、
請求項１５に記載のオブジェクトをモデリングする装置。
【請求項１７】
前記算出部は、前記第１オブジェクトの粒子の再定義された位置で前記第１オブジェクトの粒子が前記第２オブジェクトから受けると推定される力を算出し、前記推定される力に基づいて前記衝突によって前記第２オブジェクトに及ぼす作用力を算出し、前記算出された作用力を、前記衝突が発生した第１オブジェクトの粒子を含むセルに該当する格子の格子点に格納する、
請求項１５または１６に記載のオブジェクトをモデリングする装置。
【請求項１８】
オブジェクトをモデリングする装置において、
前記モデリングする装置の動作を制御するプログラムを記録するメモリと、
前記プログラムを駆動させる１つ以上のプロセッサと、
を含み、
前記プログラムは、
粒子からモデリングされた第１オブジェクトと粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出し、前記隣接領域に対して複数のセルを含む格子を定義し、前記格子の格子点に格納された情報を用いて前記隣接領域における算出した前記第１オブジェクトと前記第２オブジェクトとの間の作用力に基づいて前記第１オブジェクトと前記第２オブジェクトをモデリングし、かつ、
前記隣接領域で前記第１オブジェクト又は前記第２オブジェクトの輪郭と前記輪郭に隣接する前記格子の格子点との距離値を抽出し、前記抽出された距離値を前記格子の格子点に格納する、
オブジェクトをモデリングする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクトをモデリングする方法及び装置に関する。
【背景技術】
【０００２】
コンピュータグラフィックス（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ；ＣＧ）分野、特に、視覚効果（Ｖｉｓｕａｌ  Ｅｆｆｅｃｔｓ；ＶＦＸ）分野の流体シミュレーションに関して、流体の流動を数値的に解決しようとする研究が続けて行われている。ナビエ-ストークス方程式（Ｎａｖｉｅｒ−Ｓｔｏｋｅｓ  Ｅｑｕａｔｉｏｎ）は流体を極めて小さい粒子の和として見て、それぞれの粒子が相互にどのように作用して動くかを示すものである。ナビエ−ストークス方程式は理想的な状況を仮定する場合、より簡単なベルヌーイ定理（Ｂｅｒｎｏｕｌｌｉ’ｓ  ｐｒｉｎｃｉｐｌｅ）に変わることがある。ナビエ−ストークス方程式に基づいた流体モデリングの現実的な再現のためには、非圧縮性条件を満足しなければならない。
【０００３】
また、変形体に対するシミュレーションは、モデルの反応がリアルタイムに行われると同時に、目で観測するのに自然な程度の算出に関する正確性が保証されなければならない。そのために変形体の物理的特性、境界条件、外部で作用する力などを考慮したモデルが主に利用されている。
【０００４】
コンピュータグラフィックス分野で流体に対するシミュレーション及び変形体に対するシミュレーションがそれぞれ個別的になされているが、流体及び変形体が混在して互いに影響を及ぼす環境が一般的である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、異種の特性を有するオブジェクト間に隣接する領域に対して格子を活用することで、固体シミュレーションと流体シミュレーションとを分離し、固体及び流体それぞれのモデリング時に求められる体積保存などのような制約条件を個別的に達成することである。
【０００６】
本発明の他の目的は、相対モデリングモジュールが背景格子に格納した情報を用いて自身のモデリング時に反映することで、固体及び流体間の相互作用をリアルタイム処理し、流体及び流体と混合した固体を写実的にモデリングすることである。
【課題を解決するための手段】
【０００７】
一実施形態によると、オブジェクトをモデリングする方法は、粒子からモデリングされた第１オブジェクトと粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出するステップと、前記隣接領域に対して格子を定義するステップと、前記格子の格子点に格納された情報を用いて、前記隣接領域における前記第１オブジェクトと前記第２オブジェクトとの間の作用力を算出するステップと、前記作用力に基づいて前記第１オブジェクトと前記第２オブジェクトをモデリングするステップとを含む。
【０００８】
前記格子を定義するステップは、前記隣接領域で前記第１オブジェクト又は前記第２オブジェクトの輪郭と前記輪郭に隣接する前記格子の格子点との距離値を抽出するステップと、前記抽出された距離値を前記格子点に格納するステップとを含んでもよい。
【０００９】
前記作用力を算出するステップは、前記隣接領域で前記第１オブジェクトの粒子と前記第２オブジェクトの粒子との間に衝突が発生したか否かを判断するステップと、前記判断結果に基づいて、前記第１オブジェクトの粒子と前記第２オブジェクトの粒子との間の作用力を算出するステップとを含んでもよい。
【００１０】
前記衝突が発生したか否かを判断するステップは、前記第１オブジェクトの粒子の位置に隣接する格子点に格納された距離値を用いて前記衝突が発生したか否かを判断するステップを含んでもよい。
【００１１】
前記衝突が発生したか否かを判断するステップは、前記第１オブジェクトの粒子が体積保存条件を満足するか否かをさらに考慮してもよい。
【００１２】
前記作用力を算出するステップは、前記衝突が発生したと判断される場合、前記隣接領域で前記第１オブジェクトの粒子と前記第２オブジェクトの粒子のうち衝突が発生した第１オブジェクトの粒子を検出するステップと、前記検出された第１オブジェクトの粒子の位置を再定義するステップと、前記第１オブジェクトの粒子の再定義された位置に基づいて、前記衝突によって前記第２オブジェクトに及ぼす作用力を算出するステップとを含んでもよい。
【００１３】
前記検出された第１オブジェクトの粒子の位置を再定義するステップは、前記検出された第１オブジェクトの粒子の位置を前記第２オブジェクトを貫通しない位置に再定義するステップを含んでもよい。
【００１４】
前記検出された第１オブジェクトの粒子の位置を再定義するステップは、前記検出された第１オブジェクトの粒子を含むセルに該当する格子点に格納された距離値及び傾斜度を用いて、前記第２オブジェクトを貫通しない前記第１オブジェクトの粒子の移動方向及び最短移動距離を算出するステップと、前記算出された移動方向及び最短移動距離により前記第１オブジェクトの粒子の位置を移動させるステップとを含んでもよい。
【００１５】
前記格子点に格納された距離値及び前記算出された最短移動距離を用いて前記第１オブジェクトの粒子の移動速度を算出するステップと、前記算出された移動速度を前記検出された第１オブジェクトの粒子を含むセルに該当する格子点に格納するステップと、をさらに含んでもよい。
【００１６】
前記衝突によって前記第２オブジェクトに及ぼす作用力を算出するステップは、前記第１オブジェクトの粒子の再定義された位置で前記第１オブジェクトの粒子が前記第２オブジェクトから受けると推定される力を算出するステップと、前記推定される力に基づいて前記衝突によって前記第２オブジェクトに及ぼす作用力を算出するステップとを含んでもよい。
【００１７】
前記算出された作用力を、前記第１オブジェクトの粒子の再定義された位置に該当する格子の格子点に格納するステップをさらに含んでもよい。
【００１８】
前記第１オブジェクトと前記第２オブジェクトは互いに異種であってもよい。
【００１９】
前記第１オブジェクトは流体であり、前記第２オブジェクトは変形体であってもよい。
【００２０】
一実施形体に係るモデリングする装置は、粒子からモデリングされた第１オブジェクトと、粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出し、前記隣接領域に対して格子を定義する格子変換モジュールと、前記格子の格子点に格納された情報を用いて前記隣接領域における前記第１オブジェクトと前記第２オブジェクトとの間の作用力を算出し、前記作用力に基づいて前記第１オブジェクトと前記第２オブジェクトをモデリングするオブジェクトモデリングモジュールと、前記格子変換モジュール及び前記オブジェクトモデリングモジュールを制御するプロセッサとを含む。
【００２１】
前記格子変換モジュールは、前記隣接領域で前記第１オブジェクト又は前記第２オブジェクトの輪郭と前記輪郭に隣接する前記格子の格子点との距離値を抽出し、前記抽出された距離値を前記格子の格子点に格納してもよい。
【００２２】
前記オブジェクトモデリングモジュールは、前記隣接領域で前記第１オブジェクトの粒子と前記第２オブジェクトの粒子との間に衝突が発生したか否かを判断する判断部と、前記判断結果に基づいて、前記隣接領域で前記第１オブジェクトの粒子と前記第２オブジェクトの粒子のうち衝突が発生した第１オブジェクトの粒子を検出する検出部と、前記検出された第１オブジェクトの粒子の位置を再定義する再定義部と、前記第１オブジェクトの粒子の再定義された位置に基づいて、前記衝突によって前記第２オブジェクトに及ぼす作用力を算出する算出部とを含んでもよい。
【００２３】
前記再定義部は、前記検出された第１オブジェクトの粒子を含むセルに該当する格子点に格納された距離値及び傾斜度を用いて、前記第２オブジェクトを貫通しない前記第１オブジェクトの粒子の移動方向及び最短移動距離を算出し、前記算出された移動方向及び最短移動距離により前記第１オブジェクトの粒子の位置を移動させてもよい。
【００２４】
前記算出部は、前記第１オブジェクトの粒子の再定義された位置で前記第１オブジェクトの粒子が前記第２オブジェクトから受けると推定される力を算出し、前記推定される力に基づいて前記衝突によって前記第２オブジェクトに及ぼす作用力を算出し、前記算出された作用力を、前記衝突が発生した第１オブジェクトの粒子を含むセルに該当する格子の格子点に格納してもよい。
【００２５】
一実施形態に係るオブジェクトをモデリングする装置は、前記モデリングする装置の動作を制御するプログラムを記録するメモリと、前記プログラムを駆動させる１つ以上のプロセッサとを含み、前記プログラムは、粒子からモデリングされた第１オブジェクトと粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出し、前記隣接領域に対して複数のセルを含む格子を定義し、前記格子の格子点に格納された情報を用いて前記隣接領域における算出した前記第１オブジェクトと前記第２オブジェクトとの間の作用力に基づいて前記第１オブジェクトと前記第２オブジェクトをモデリングする。
【発明の効果】
【００２６】
本発明によると、異種の特性を有するオブジェクト間に隣接する領域に対して格子を活用することで、固体シミュレーションと流体シミュレーションを分離し、固体及び流体それぞれのモデリング時に求められる体積保存などのような制約条件を個別的に達成することができる。
【００２７】
本発明によると、相対モデリングモジュールが背景格子に格納した情報を用いて自身のモデリング時に反映することで、固体及び流体間の相互作用をリアルタイム処理することができ、流体及び流体と混合した固体を写実的にモデリングすることができる。
【図面の簡単な説明】
【００２８】
【図１】一実施形態に係るオブジェクトをモデリングする方法が用いられる隣接領域を示す図である。
【図２】一実施形態に係るオブジェクトをモデリングする方法を示したフローチャートである。
【図３】一実施形態に係るオブジェクトをモデリングする方法により隣接領域に対して格子を定義する方法を説明するための図である。
【図４】一実施形態に係るオブジェクトをモデリングする方法により第１オブジェクトと第２オブジェクトとの間の作用力を算出する方法を示したフローチャートである。
【図５】一実施形態に係るオブジェクトをモデリングする方法により第１オブジェクトと第２オブジェクトとの間の作用力を算出する方法を説明するための図である。
【図６】一実施形態に係るオブジェクトをモデリングする装置のブロック図である。
【図７】他の実施形態に係るモデリング装置のブロック図である。
【図８】他の実施形態によりオブジェクトをモデリングする方法を示す図である。
【図９】他の実施形態に係るモデリング装置で隣接領域及び作用力を処理する過程を各モジュールの動作順により示す図である。
【図１０】他の実施形態に係るモデリング装置で格子モジュールの中継を介して流体と変形体との間の相互作用を処理する過程を説明するための図である。
【図１１】他の実施形態に係るモデリング装置の動作方法を示したフローチャートである。
【図１２】他の実施形態に係るモデリング装置で流体モデリングモジュールの動作方法を示したフローチャートである。
【図１３】他の実施形態に係るモデリング装置で変形体モデリングモジュールの動作方法を示したフローチャートである。
【図１４】他の実施形態に係るモデリング装置で格子モジュールの動作方法を示したフローチャートである。
【発明を実施するための形態】
【００２９】
以下で説明する実施形態は、添付の図面を参照して説明する。各図面で提示された同一の参照符号は同一の部材を示す。
【００３０】
以下で説明する実施形態は様々な変更が加えられてもよい。以下で説明する実施形態は実施形態に対して限定しようとするものではなく、これに対する全ての変更、均等物ないし代替物を含むものとして理解しなければならない。
【００３１】
実施形態で用いる用語は、単に特定の実施形態を説明するために用いられたものとして、実施形態を限定しようとする意図は有しない。単数の表現は文脈の上、明白に相異に意味しない限り複数の表現を含む。本明細書で、「含む」又は「有する」などの用語は明細書上に記載された特徴、数字、ステップ、動作、構成要素、部品又はこれを組み合わせたものが存在することを指定しようとするものであって、１つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品又はこれを組み合わせたものなどの存在又は付加の可能性を予め排除しないものとして理解しなければならない。
【００３２】
相異に定義されない限り、技術的であるか科学的な用語を含み、ここで用いられる全ての用語は、実施形態が属する技術分野で通常の知識を有する者によって一般的に理解されるものと同じ意味を有する。一般的に用いられる予め定義されているような用語は、関連技術の文脈の上に有する意味と一致する意味を有するものと解釈するべきであって、本出願で明白に定義しない限り、理想的であるか過度に形式的な意味として解釈されることはない。
【００３３】
また、添付図面を参照して説明することにおいて、図面符号に関係なく同一の構成要素は同一の参照符号を付与し、それに対する重複説明は省略することにする。実施形態の説明において関連の公知技術に対する具体的な説明が実施形態の要旨を不要に曖昧にすると判断される場合、その詳細な説明を省略する。
【００３４】
図１は、一実施形態に係るオブジェクトをモデリングする方法が用いられる隣接領域を示す図である。図１を参照すると、水又は油のような流体１３０に浮いている変形体（例えば、ダック人形）１１０が示されている。ここで、変形体１１０と流体１３０はそれぞれ粒子によってモデリングされ、以下で、変形体１１０は変形体粒子を、流体１３０は流体粒子を含むことを意味するものとして用いる。「変形体１１０」は剛体（Ｒｉｇｉｄ  ｂｏｄｙ）及び柔体（Ｓｏｆｔ  Ｂｏｄｙ）を全て含む意味として理解される。また、変形体１１０と流体１３０の輪郭を含む一定領域を「隣接領域」又は「相互作用領域」と呼ぶことにする。
【００３５】
一実施形態では変形体１１０と流体１３０がともに存在する場合、隣接領域に対して格子１５０を定義し、格子１５０に基づいて物理法則を適用することで、変形体１１０と流体１３０との間の相互作用が精密に反映されるようにする。格子１５０は、一定の連結関係を有するメッシュ（Ｍｅｓｈ）形態の資料構造であってもよく、変形体１１０と流体１３０が相互間の物理量をやり取りする通路であってもよい。格子１５０は複数のセル１５１を含んでもよく、格子１５０の格子点には変形体１１０のレベルセット（Ｌｅｖｅｌ  ｓｅｔ）情報がスカラー（Ｓｃａｌａｒ）値に格納されてもよい。レベルセット情報は、格子１５０で符号のある距離値として、格子１５０内における変形体１１０の位置を示すために用いてもよい。レベルセット情報は、変形体１１０の輪郭を基準にして変形体１１０の格子点が外部にあるか内部にあるかを示す。
【００３６】
例えば、変形体１１０と流体１３０が互いに衝突した場合、変形体１１０は、流体１３０との衝突によって形状がゆがんだり速度が減少することがあり、流体１３０にはしぶきが発生することがある。ここで、流体１３０は、変形体１１０が占める空間を避けて流動する。格子１５０は、変形体１１０と流体１３０の衝突領域、流体１３０でしぶきが発生する領域、及び変形体１１０がゆがんで空間で新しく占める領域などのように、変形体１１０と流体１３０との間の相互作用が発生する領域を全て含む。以上で説明した相互作用は、流体と変形体のように異種（ｈｅｔｅｒｏｇｅｎｅｏｕｓ）オブジェクトだけではなく、水と油のような同種（ｈｏｍｏｇｅｎｅｏｕｓ）オブジェクトにも同一に適用されてもよい。一実施形態は、粒子基盤でモデリングされたオブジェクト間の輪郭を含む隣接領域に対して格子１５０を用いて作用力を算出することで、相互作用による運動量を精密に格納することができる。
【００３７】
図２は、一実施形態に係るオブジェクトをモデリングする方法を示したフローチャートである。図２を参照すると、一実施形態に係るオブジェクトをモデリングする装置（以下、モデリング装置）は、粒子からモデリングされた第１オブジェクトと粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出する（Ｓ２１０）。粒子基盤でオブジェクトをモデリングする場合、モデリング装置はいずれか１つの粒子の周辺粒子を検索してもよい。検索された周辺粒子が互いに異なる物理量を有する互いに異なるオブジェクトに該当する場合、モデリング装置は、いずれか１つの粒子及び互いに異なるオブジェクトとして判断された粒子を含む領域を隣接領域として定義する。モデリング装置は隣接領域を検出してもよい。
【００３８】
モデリング装置は、ステップＳ２１０で検出した隣接領域に対して格子を定義する（Ｓ２２０）。例えば、検出された隣接領域に含まれたオブジェクト粒子は、複数のセルを含む格子に分けられてもよい。ステップＳ２２０でモデリング装置は、隣接領域で第１オブジェクト又は第２オブジェクトの輪郭と、輪郭に隣接する格子の格子点との垂直距離（値）を抽出してもよい。モデリング装置は、抽出された距離値を格子点に格納してもよい。格子点に格納された距離値をレベルセット（ｌｅｖｅｌ  ｓｅｔ）情報とも呼んでもよい。一実施形態で格子を定義する具体的な方法は図３を参照して説明する。
【００３９】
モデリング装置は、格子の格子点に格納された情報を用いて隣接領域における第１オブジェクトと第２オブジェクトとの間の作用力を算出する（Ｓ２３０）。ステップＳ２３０でモデリング装置は、隣接領域で格子のセル単位に第１オブジェクトの粒子と第２オブジェクトの粒子との間に衝突が発生したか否かを判断する。モデリング装置は、判断結果に基づいて第１オブジェクトの粒子と第２オブジェクトの粒子との間の作用力を算出する。ここで、第１オブジェクトは流体であり、第２オブジェクトは変形体であってもよい。また、第１オブジェクトと第２オブジェクトは互いに同種であってもよく異種であってもよい。一実施形態において、第１オブジェクトと第２オブジェクトとの間の作用力を算出する具体的な方法は図４及び図５を参照して説明する。
【００４０】
モデリング装置は、ステップＳ２３０で算出した作用力に基づいて、第１オブジェクトと第２オブジェクトをモデリングする（Ｓ２４０）。ステップＳ２４０においてモデリング装置は、ステップＳ２３０で算出した作用力を用いて粒子からモデリングされた第１オブジェクト及び第２オブジェクトの形状又は動きをより精密に補正することができる。
【００４１】
図３は、一実施形態に係るオブジェクトをモデリングする方法により隣接領域に対して格子を定義する方法を説明するための図である。
【００４２】
粒子からモデリングされた変形体３０１と粒子からモデリングされた流体３０３との間の隣接領域３０５を検出（３１０）した後、モデリング装置は、検出された隣接領域３０５に対して格子３０７を定義したり、格子構造に示す格子化を行う（３３０）。格子化によって、例えば、２Ｄの場合は１つのセルに４つの粒子が含まれ、３Ｄの場合には１つのセルに８個の粒子が含まれてもよい。
【００４３】
格子３０７の格子点３０９には各格子点で最も近い変形体３０１の輪郭までの距離値のレベルセット情報が格納されている。例えば、格子点３１１には、変形体３０１の輪郭から格子点３１１までの垂直距離値であるｄ１が格納され、格子点３１３には変形体３０１の輪郭から格子点３１３までの垂直距離値であるｄ２が格納されている。格子点３０９に格納された距離値が（＋）である場合は当該格子点が変形体３０１の外部にあることを示し、格納された距離値が（−）である場合は当該格子点が変形体３０１の内部にあることを示す。モデリング方法により、（＋）と（−）は反対に定義されることもある。モデリング装置は、レベルセット情報に基づいて傾斜度を算出し、必要に応じてレベルセット情報を幾何学的正規化（Ｇｅｏｍｅｔｒｉｃ  Ｎｏｒｍａｌ）情報に変換してもよい。
【００４４】
格子３０７の各格子点３０９にはレベルセット情報とは別に、流体３０３の粒子が変形体３０１から受けた作用力が線形補間により算出されて格納されてもよい。格納された作用力は、後ほど変形体３０１の粒子をモデリングするために用いてもよい。また、各格子点３０９には流体３０３粒子の速度値が格納され、格納された速度値は、流体３０３粒子が受ける抗力（Ｄｒａｇ  Ｆｏｒｃｅ）を算出するために用いてもよい。
【００４５】
図３を参照して説明したように、モデリング装置は、格子点がオブジェクトの輪郭からどの程度離れており、輪郭の内部又は外部にあるかを確認することができる。
【００４６】
図４は、一実施形態に係るオブジェクトをモデリングする方法により第１オブジェクトと第２オブジェクトとの間の作用力を算出する方法を示したフローチャートである。
【００４７】
図４を参照すると、一実施形態に係るモデリング装置は、隣接領域で第１オブジェクトの粒子と第２オブジェクトの粒子との間に衝突が発生したか否かを判断する（Ｓ４１０）。ステップＳ４１０で、モデリング装置は、第１オブジェクトの粒子の位置に隣接する格子点に格納された距離値を用いて衝突が発生したか否かを判断する。ここで、モデリング装置は、格子のセル単位で衝突が発生したか否かを判断する。例えば、第１オブジェクト（流体）の粒子と第２オブジェクト（変形体）の粒子が同じ位置にオーバーラッピングされた状態、言い換えれば、流体粒子が変形体粒子を貫通する位置にあれば、粒子間に衝突が発生したと判断する。
【００４８】
また、ステップＳ４１０において、モデリング装置は、第１オブジェクトの粒子が体積保存条件を満足するか否かをさらに考慮する。例えば、第１オブジェクトが流体であり、第２オブジェクトが変形体であれば、衝突によって第１オブジェクトと第２オブジェクトとの間に変化が発生しても第１オブジェクトの流体の全体的な体積は保存しなければならない。したがって、一実施形態では、衝突時に格子点に格納された距離値の他にも流体の全体的な体積が衝突以前と同一に保持されるかを共に考慮する。
【００４９】
ステップＳ４１０において、衝突が発生していないと判断される場合、モデリング装置は、衝突処理のためのステップＳ４２０〜ステップＳ４４０の実行をスキップ（ｓｋｉｐ）する。
【００５０】
ステップＳ４１０において、衝突が発生したと判断される場合、モデリング装置は、隣接領域で第１オブジェクトの粒子と第２オブジェクトの粒子のうち衝突が発生した第１オブジェクトの粒子を検出する（Ｓ４２０）。ここで、衝突が発生した第１オブジェクトの粒子は単数又は複数であってもよい。モデリング装置は、ステップＳ４２０で検出した第１オブジェクトの粒子の位置を再定義する（Ｓ４３０）。モデリング装置は、検出された第１オブジェクトの粒子の位置を第２オブジェクト（の粒子）を貫通しない位置として再定義する。例えば、第１オブジェクトが流体であり、第２オブジェクトが変形体であれば、この衝突時に流体粒子は変形体（粒子）を貫通することなく避けて流動しなければならない。したがって、モデリング装置は、流体粒子と変形体粒子との間に衝突が発生した場合、流体粒子が変形体粒子を貫通しない位置にあるようモデリングしてもよい。
【００５１】
ステップＳ４３０において、モデリング装置は、ステップＳ４２０で検出した第１オブジェクトの粒子を含むセルに該当する格子点に格納された距離値及び傾斜度を用いて、第２オブジェクトを貫通しない第１オブジェクトの粒子の移動方向及び最短移動距離を算出する。モデリング装置は、算出された移動方向及び最短移動距離により第１オブジェクトの粒子の位置を移動させる。ここで、モデリング装置は、格子点に格納された距離値及び算出された最短移動距離を用いて第１オブジェクトの粒子の移動速度を算出し、算出した移動速度を検出した第１オブジェクトの粒子を含むセルに該当する格子点に格納してもよい。
【００５２】
モデリング装置は、第１オブジェクトの粒子の再定義された位置に基づいて、衝突により第２オブジェクトに及ぼす作用力を算出する（Ｓ４４０）。ステップＳ４４０において、モデリング装置は、第１オブジェクトの粒子の再定義された位置で第１オブジェクトの粒子が第２オブジェクトから受けると推定される力を算出し、推定される力に基づいて衝突により第２オブジェクトに及ぼす作用力を算出してもよい。モデリング装置は算出された作用力を、第１オブジェクトの粒子の再定義された位置に該当する格子の格子点に分けて格納することができる。
【００５３】
図５は、一実施形態に係るオブジェクトをモデリングする方法により第１オブジェクトと第２オブジェクトとの間の作用力を算出する方法を説明するための図である。図５において、５１０の各格子点には（＋）又は（−）のような符号が表示されていることが分かる。モデリング装置は、格子点に格納された値を補間して第１オブジェクトの粒子、言い換えれば、流体粒子の位置から変形体輪郭までの距離値を算出する。算出された値の符号が（−）であれは衝突状態を示し、（＋）であれば衝突が発生していない状態を示す。このように、格子点に格納されている距離値が流体粒子の位置でどのような値を有するかを、補間により算出する過程を「格子値クエリ（ｑｕｅｒｙ）」と呼ぶ。
【００５４】
モデリング装置は、各格子点に格納された符号値によって第１オブジェクト（例えば、流体）と第２オブジェクト（例えば、変形体）との間の衝突が発生したかを判断する。モデリング装置は、各流体粒子の位置で周辺の４個の格子点に格納された距離値をサンプリングしてもよい。モデリング装置は、各流体粒子の周辺にある格子点に格納された値を線形補間し、流体粒子と変形体輪郭の粒子との距離を把握する。ここで、サンプリングされた距離値が、例えば、＋０．５ｎｍであると仮定すれば、これは流体粒子の中心が変形体の輪郭から０．５ｎｍ離れていることを意味する。もし、流体粒子の半径が０．５ｎｍであれば、流体粒子は変形体輪郭と接している状態であり、流体粒子の半径が１．０ｎｍであれば、流体粒子は変形体と衝突した状態、言い換えれば、流体粒子が変形体粒子を貫通した位置である。このような場合、モデリング装置は、当該流体粒子の位置を変形体粒子を貫通しない位置に再定義して流体粒子の衝突を処理する。
【００５５】
例えば、変形体粒子と流体粒子の衝突によって５３０のように流体粒子が変形体の内部に該当する第１位置５３１にあることを検出した場合、モデリング装置は、流体粒子を第１位置５３１から変形体粒子を貫通しない第２位置５３３に移動させる。ここで、モデリング装置は、粒子を含むセルに該当する格子点に格納された距離値及び傾斜度を用いて、変形体粒子を貫通しない流体粒子の移動方向及び最短移動距離を算出することができる。
【００５６】
モデリング装置は、算出された移動方向及び最短移動距離により流体粒子を衝突が発生しない位置に移動させる。モデリング装置は、例えば、流体粒子を含むセルに該当する格子点に格納された距離値が（−）から（＋）になる傾斜方向（ここで、水平方向に右側から左側方向に、垂直方向に上方から下方向に）に最短距離を移動させて流体粒子と変形体粒子との間に衝突が発生しないようにする。
【００５７】
モデリング装置は、流体粒子が受ける衝撃量に対応する力を変形体に伝達することで、変形体と流体との間の衝突により流体粒子が受けたと推定される力を変形体に対する反作用力として反映する。５５０から流体粒子が５３３の位置に移動した場合、流体粒子が受けたと推定される力は、作用・反作用の法則により、５５１のように変形体に対応する方向に同じ大きさとして作用してもよい。ここで、流体粒子が受けたと推定される力は、流体粒子の初期位置と後の位置、移動速度などが分かる場合に一般的な物理公式を用いて算出してもよい。
【００５８】
変形体に作用する反作用力により、流体粒子の上に変形体が浮かび上がるようにモデリングしてもよい。モデリング装置は、変形体に及ぼす作用力を流体粒子の再定義された位置５３３に該当するセルの格子点に格納してもよい。ここで、変形体に及ぼす作用力は、格子点から当該流体粒子までの距離に応じて各格子点に相異に格納されてもよい。例えば、格子点５７３のように、当該格子点から流体粒子までの距離が遠い場合には最も小さい値が割り当てられ、格子点５７２のように、当該格子点から流体粒子までの距離が近い場合には最も大きい値が割り当てられてもよい。また、格子点５７１と格子点５７４には格子点５７３よりも大きく、格子点５７２よりも小さい値が割り当てられる。各格子点に割り当てられる作用力は、矢印の長さ又は大きさのように表現されてもよい。最も大きい作用力が作用する格子点５７２には、矢印の長さ又は大きさが大きく表現され、最も小さい作用力が作用する格子点５７３には矢印の長さ又は大きさが小さく表現される。
【００５９】
モデリング装置は、上述した方式で変形体に及ぼす作用力を、当該の流体粒子を含むセルの格子点に分けて格納してもよい。上述した５１０及び５３０の過程により、モデリング装置は流体と変形体との間の外見上の衝突をモデリングし、５５０過程により流体と変形体との間に作用する作用力をモデリングすることができる。
【００６０】
図６は、一実施形態に係るオブジェクトをモデリングする装置のブロック図である。図６を参照すると、一実施形態に係るモデリング装置６００は、格子変換モジュール６１０、オブジェクトモデリングモジュール６３０、及びプロセッサ６５０を含む。
【００６１】
格子変換モジュール６１０は、粒子からモデリングされた第１オブジェクトと粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出し、隣接領域に対して格子を定義する。格子変換モジュール６１０は、隣接領域で第１オブジェクト又は第２オブジェクトの輪郭と輪郭に隣接する格子の格子点との距離値を抽出し、抽出された距離値を格子の格子点に格納してもよい。
【００６２】
オブジェクトモデリングモジュール６３０は、格子の格子点に格納された情報を用いて隣接領域における第１オブジェクトと第２オブジェクトとの間の作用力を算出し、作用力に基づいて第１オブジェクトと第２オブジェクトをモデリングしてもよい。オブジェクトモデリングモジュール６３０は、判断部６３１、検出部６３３、再定義部６３５、及び算出部６３７を含む。判断部６３１は、隣接領域で第１オブジェクトの粒子と第２オブジェクトの粒子との間に衝突が発生したか否かを判断する。検出部６３３は、判断部６３１の判断結果に基づいて、隣接領域で第１オブジェクトの粒子と第２オブジェクトの粒子のうち衝突が発生した第１オブジェクトの粒子を検出する。再定義部６３５は、検出部６３３によって検出された第１オブジェクトの粒子の位置を再定義する。再定義部６３５は、検出された第１オブジェクトの粒子を含むセルに該当する格子点に格納された距離値及び傾斜度を用いて、第２オブジェクトを貫通しない第１オブジェクトの粒子の移動方向及び最短移動距離を算出する。再定義部６３５は、算出された移動方向及び最短移動距離に応じて第１オブジェクトの粒子の位置を移動させる。
【００６３】
算出部６３７は、第１オブジェクトの粒子の再定義された位置に基づいて、衝突によって第１オブジェクトが第２オブジェクトに及ぼす作用力を算出する。算出部６３７は、第１オブジェクトの粒子の再定義された位置で第１オブジェクトの粒子が第２オブジェクトから受けると推定される力を算出し、推定される力に基づいて衝突により第２オブジェクトに及ぼす作用力を算出する。算出部６３７は、算出された作用力を、衝突が発生した第１オブジェクトの粒子を含むセルに該当する格子の格子点に格納してもよい。
【００６４】
プロセッサ６５０は、格子変換モジュール６１０及びオブジェクトモデリングモジュール６３０を制御する。実施形態に係るオブジェクトモデリングモジュール６３０は、変形体をモデリングするモジュールと流体をモデリングするモジュールにそれぞれ分類して構成し、このような実施形態は図９を参照して説明する。
【００６５】
図７は、他の実施形態に係るモデリング装置のブロック図である。図７を参照すると、他の実施形態に係るモデリング装置７００は、メモリ７１０、プロセッサ７３０及び通信部７５０を含む。
【００６６】
メモリ７１０は、粒子からモデリングされたオブジェクトをモデリングする装置７００の動作を制御するプログラムを記録する。
【００６７】
プロセッサ７３０は、メモリ７１０に格納されたプログラムを駆動させ、１つ又は複数であってもよい。ここで、プログラムは、粒子からモデリングされた第１オブジェクトと粒子からモデリングされた第２オブジェクトとの間の隣接領域を検出し、隣接領域に対して複数のセルを含む格子を定義する。プログラムは、格子の格子点に格納された情報を用いて、隣接領域における算出した第１オブジェクトと第２オブジェクトとの間の作用力に基づいて第１オブジェクトと第２オブジェクトをモデリングしてもよい。
【００６８】
通信部７５０は、粒子からモデリングされたオブジェクトをモデリングする装置７００の動作に必要な情報を送受信する。
【００６９】
図８は、他の実施形態によりオブジェクトをモデリングする方法を示す図である。図８を参照すると、流体と変形体の粒子が分布した場合、流体と変形体との間の相互作用領域に対する演算によって相互作用された粒子分布の結果を取得する過程が示されている。相互作用領域に対する演算は次のように行われる。
【００７０】
モデリング装置は、流体と変形体との間の隣接領域を検出し（Ｓ８１０）、隣接領域に対して格子を定義する（Ｓ８３０）。モデリング装置は、格子の格子点に格納された情報を用いて隣接領域における流体と変形体との間の相互作用力を処理する（Ｓ８５０）。
【００７１】
一実施形態で流体と変形体との間の相互作用力を処理する過程は次の通りである。モデリング装置は、第１オブジェクトの粒子と第２オブジェクトの粒子との間に衝突が発生した場合、例えば、図５に示す５１０及び５３０を参照して説明したように、第１オブジェクトの粒子を第２オブジェクトを互いに貫通しない位置に移動させることによって衝突を処理する（Ｓ８５１）。モデリング装置は流体に作用する作用力を処理し（Ｓ８５３）、流体に対する処理結果を用いて変形体に作用する作用力を処理する（Ｓ８５５）。モデリング装置は、流体に作用する作用力を流体モデリングモジュールを用いて処理し、変形体に作用する作用力を変形体モデリングモジュールを用いて処理する。
【００７２】
図９は、他の実施形態に係るモデリング装置で隣接領域及び作用力を処理する過程を各モジュールの動作順により示す図である。図９を参照すると、他の実施形態に係るモデリング装置は、タイムステップ選択部９１０、格子モジュール９２０、変形体モデリングモジュール９３０、及び流体モデリングモジュール９４０を含む。
【００７３】
タイムステップ選択部９１０は、流体粒子と変形体粒子の間の相互作用をモデリングするタイムステップ（ｔｉｍｅ  ｓｔｅｐ）を選択する。例えば、モデリングが行われる１周期を１秒と仮定すると、モデリング装置は、１秒の間の変形体と流体との間の相互作用を一回にモデリングすることなく、０．５秒あるいは０．３秒単位のように徐々にモデリングしてもよい。ここで、タイムステップは、１周期を０．５秒あるいは０．３秒単位のように何回のステップに分けるかを決定する過程である。タイムステップは、タイムステップ選択部９１０あるいはモデリング装置のユーザによって適切な値に選択されてもよい。
【００７４】
また、タイムステップ選択部９１０は、変形体モデリングモジュール９３０及び流体モデリングモジュール９４０に対してそれぞれ個別的にタイムステップを設定してもよい。モデリング装置は、タイムステップ選択部９１０を介して、どのような時間における流体粒子又は変形体粒子の動きをモデリングするかを選択してもよい。
【００７５】
格子モジュール９２０は、タイムステップ選択部９１０で選択されたタイムステップにより流体モデリングモジュール９４０から情報を受信する。ここで、格子モジュール９２０が流体モデリングモジュール９４０から受信する情報は、例えば、流体粒子が受ける作用力及び流体粒子の最終速度などを含んでもよい。ここで、流体粒子が受ける作用力は制約力のように表現されてもよい。
【００７６】
格子モジュール９２０は、流体モデリングモジュール９４０から受信した情報を加工して変形体モデリングモジュール９３０に提供する。格子モジュール９２０が加工して変形体モデリングモジュール９３０に提供した情報は、流体フィールドに含まれた流体粒子と変形体との間の相互作用力であってもよい。ここで、相互作用力は、例えば、変形体に対する流体粒子の反作用力及び抗力などのように変形体に対する流体粒子の作用力として理解してもよい。
【００７７】
変形体モデリングモジュール９３０は、格子モジュール９２０から受信した相互作用力を変形体に対する形状モデルに反映する。変形体モデリングモジュール９３０は、相互作用力が反映された形状モデルから変形体の形状情報を生成してもよい。変形体モデリングモジュール９３０は、格子モジュール９２０に変形体の形状情報を提供してもよい。
【００７８】
格子モジュール９２０は、変形体の形状情報から変形体の輪郭に関する情報を把握する。格子モジュール９２０は、形状情報を用いて変形体に対する流体粒子の作用力を算出してもよい。格子モジュール９２０は、流体モデリングモジュール９４０に形状情報を送信してもよい。
【００７９】
流体モデリングモジュール９４０は、形状情報を用いて流体粒子と変形体との間の衝突によって流体粒子が受ける制約力及び流体粒子の最終速度を算出する。流体モデリングモジュール９４０は、流体粒子が受ける制約力及び流体粒子の最終速度を再び格子モジュール９２０に提供してもよい。
【００８０】
一実施形態において、相対モデリングモジュール（例えば、流体の場合には変形体モデリングモジュール９３０、変形体の場合には流体モデリングモジュール９４０）が格子モジュール９２０に格納した情報をフィードバックし、自身のオブジェクト粒子のモデリング時に反映することで、変形体と流体との間の相互作用をリアルタイムに処理することができる。
【００８１】
一実施形態によると、変形体と流体との間の相互作用をリアルタイムに処理することで、高品質の現実的な映像再現を必要とする映画の特殊効果のみならず、リアルタイムが最も重要とされるゲームやモバイルＵＩ分野で流体及び流体と混合した変形体の事実的なモデリングを可能にする。
【００８２】
図１０は、他の実施形態に係るモデリング装置で格子モジュールの中継を介して流体と変形体との間の相互作用を処理する過程を説明するための図である。図１０を参照すると、流体モデリングモジュール１０１０、格子モジュール１０３０及び変形体モデリングモジュール１０５０が示されている。
【００８３】
流体モデリングモジュール１０１０は、モデリングステップにおいて、例えば、重力のような外力を処理し、流体フィールドの粘性をモデリングした後、流体粒子の位置を更新する。流体モデリングモジュール１０１０は、流体フィールドに含まれた各流体粒子が変形体と衝突したか否か、及び流体粒子の体積又は密度が体積保存条件を満足するかを判断して流体粒子をモデリングする。例えば、流体フィールドに含まれた各流体粒子が変形体と衝突し、衝突時の流体粒子の体積が体積保存条件を満足すると仮定する。流体モデリングモジュール１０１０は、流体粒子が受ける制約力及び流体粒子の最終速度を算出する。流体モデリングモジュール１０１０は、例えば、衝突及び体積保存条件がない場合に流体粒子に作用する力と、衝突及び体積保存条件がある場合に流体粒子に作用する力とを比較して、流体粒子が受ける制約力を算出してもよい。流体モデリングモジュール１０１０は、前で算出した制約力及び流体粒子の最終速度に関する情報を格子モジュール１０３０に提供してもよい。
【００８４】
格子モジュール１０３０は、流体モデリングモジュール１０１０と変形体モデリングモジュール１０５０が相手側のモデリングモジュールの存在を非明示的に認識するように助けることができる。格子モジュール１０３０は流体粒子の作用力を変形体モデリングモジュール１０５０に提供し、変形体の形状情報を流体モデリングモジュール１０１０に提供してもよい。流体粒子の作用力は、変形体に対する流体粒子の反作用力及び抗力を含んでもよい。格子モジュール１０３０は、流体粒子と変形体が予め設定された距離以内に隣接する場合、制約力及び流体粒子の最終速度に基づいて作用力を算出してもよい。
【００８５】
格子モジュール１０３０は、流体粒子には変形体の形状情報を伝達し、変形体の形状モデルには流体が受けた相互作用と抵抗力を送信して、各モデリングモジュール１０１０、１０５０が物理的に正しい相互作用結果を導き出すようにする。格子モジュール１０３０は、相互作用が正しく送信されるように最小限の流体と変形体が隣接する領域を対象に動作する。
【００８６】
変形体モデリングモジュール１０５０は、流体と同様に重力、弾性力などをモデリングした後、格子モジュール１０３０を参照して流体との相互作用領域で発生した力を追加的に反映してもよい。変形体モデリングモジュール１０５０は距離フィールドで、形状モデルに作用力を適用して形状モデルの最終位置を決定する。ここで、作用力は変形体に対する流体粒子の作用力を考慮したものであり、作用力によって流体粒子による摩擦力と抵抗を変形体に反映してもよい。変形体モデリングモジュール１０５０は、形状モデルの最終位置で変形体及び流体粒子の間の衝突を考慮し、形状モデル及び流体粒子を除いた変形体の障害物が体積保存条件を満足するよう変形体の形状情報を生成してもよい。変形体モデリングモジュール１０５０は、変形体の形状モデル及び変形体の障害物が体積保存条件を満足するように変形体の形状情報を生成する。ここで、変形体の形状モデルは、変形体に対する流体粒子の作用力が反映されたものであってもよい。変形体モデリングモジュール１０５０は形状情報を、例えば、格子で符号のある距離値に自身の位置を示すレベルセット情報として格子モジュール１０３０に送信してもよい。
【００８７】
一実施形態によると、流体モデリングモジュール１０１０及び変形体モデリングモジュール１０５０を分離して変形体及び流体それぞれの粒子モデリング時に求められる体積保存などのような制約条件を個別的に達成することができる。
【００８８】
また、一実施形態において、流体モデリングモジュール１０１０及び変形体モデリングモジュール１０５０は、それぞれのモデリングを独自に実行しながら変形体と流体との間の相互作用領域については格子モジュール１０３０によって融合処理することができる。実施形態において、格子モジュール１０３０以外に仮想の格子化が用いられてもよい。
【００８９】
図１１は、他の実施形態に係るモデリング装置の動作方法を示したフローチャートである。図１１を参照すると、一実施形態に係るモデリング装置は、流体フィールド（ｆｌｕｉｄ  ｆｉｅｌｄ）に含まれた流体粒子と変形体粒子との間の衝突及び流体粒子が第１制約条件の体積保存条件が満足されるか否かを判断する（Ｓ１１１０）。
【００９０】
ステップＳ１１１０の判断結果に応じて、モデリング装置は、流体粒子が受ける制約力及び流体粒子の最終速度を算出する（Ｓ１１２０）。流体粒子と変形体粒子が衝突する場合、モデリング装置は、流体粒子を変形体を貫通しない最終位置に移動させる。モデリング装置は、最終位置で流体粒子が体積保存条件を満足するようにモデリングした後、流体粒子が受ける制約力及び流体粒子の最終速度を算出する。また、モデリング装置は、形状情報を用いて制約力及び流体粒子の最終速度を算出してもよい。
【００９１】
モデリング装置は、ステップＳ１１２０で算出した制約力及び最終速度を用いて変形体に対する流体粒子の作用力を算出する（Ｓ１１３０）。作用力は反作用力及び抗力を含んでもよい。ステップＳ１１３０でモデリング装置は、制約力に基づいて変形体に対する流体粒子の反作用力を算出する。ここで、反作用力は、形状情報をさらに用いて算出されてもよい。モデリング装置は、制約力を反映した流体粒子の最終位置における最終速度に基づいて変形体に対する流体粒子の抗力を算出してもよい。その他にも、モデリング装置は、流体粒子と変形体粒子が予め設定された距離内に隣接するか否かを判断し、判断結果に応じて作用力を算出してもよい。
【００９２】
モデリング装置は、変形体の形状モデル及び流体粒子を除いた変形体の障害物が体積保存条件を満足するように変形体の形状情報を生成する（Ｓ１１４０）。変形体の形状モデルは、変形体に対する流体粒子の作用力が反映されたものである。ステップＳ１１４０でモデリング装置は、形状モデルに作用力を適用し、作用力を適用した結果に応じて形状モデルの最終位置を決定する。モデリング装置は、形状モデルの最終位置で形状モデル及び変形体の障害物が体積保存条件を満足するように変形体の形状情報を生成する。
【００９３】
図１２は、他の実施形態に係るモデリング装置で流体モデリングモジュールの動作方法を示したフローチャートである。図１２を参照すると、一実施形態に係る流体モデリングモジュールは、流体フィールドで流体粒子に影響を与える外力及び流体フィールドの粘性を反映して流体粒子の位置を算出する（Ｓ１２１０）。ステップＳ１２１０において、流体モデリングモジュールは、流体粒子の間の運動量格納方程式（ｍｏｍｅｎｔｕｍ  ｅｑｕａｔｉｏｎ）を算出してもよい。流体モデリングモジュールは、例えば、第１粒子に隣接する第２粒子を考慮して第１粒子に対する運動量格納方程式を算出し、第１粒子及び第２粒子を含む全ての粒子に対する密度、外力及び粘性などを算出してもよい。流体モデリングモジュールは、運動量格納方程式の算出結果を用いて、第１粒子及び第２粒子それぞれに対して非圧縮性制約条件を満足する変化量を算出してもよい。非圧縮性制約条件は、流体内部の体積の不変条件を意味し、一定の流体フィールド内で粒子速度を反映した粒子間の出入り量制御及び流体と変形体との間の相互作用による輪郭の高精密なモデリングを可能にする。流体モデリングモジュールは、流体粒子それぞれの流体フィールドにおけるダイバージェンス（ｄｉｖｅｒｇｅｎｃｅ）を求め、ダイバージェンスが「０」になるようにして非圧縮性制約条件を満たすことができる。流体モデリングモジュールは、算出された変化量に応じて流体粒子の位置を算出してもよい。
【００９４】
ステップＳ１２１０の以前に、流体モデリングモジュールは、流体をモデリングするための粒子を初期化してもよい。初期化過程でモデリング装置は、例えば、一定空間又は領域にある流体を示す粒子量、密度、速度及び位置などの情報を初期化してもよい。
【００９５】
流体モデリングモジュールは、流体フィールドに含まれた流体粒子と変形体との間の衝突が発生したかを判断する（Ｓ１２２０）。
【００９６】
ステップＳ１２２０で衝突が発生したと判断される場合、流体モデリングモジュールは、流体粒子の位置を変形体を貫通しない最終位置に移動させる（Ｓ１２３０）。流体モデリングモジュールは、最終位置で流体粒子が第１制約条件（例えば、体積保存条件）を満足するようにモデリングする（Ｓ１２４０）。流体モデリングモジュールは、衝突によって流体粒子が受ける制約力を算出し（Ｓ１２５０）、最終位置で流体粒子の最終速度を算出する（Ｓ１２６０）。ステップＳ１２５０及びステップＳ１２６０において、流体モデリングモジュールは、格子モジュールから受信した変形体の形状情報を用いて制約力及び流体粒子の最終速度を算出してもよい。流体モデリングモジュールは、流体粒子が受ける制約力及び流体粒子の最終速度に関する情報を格子モジュールに提供する（Ｓ１２７０）。
【００９７】
ステップＳ１２２０において、衝突が発生しないと判断された場合、流体モデリングモジュールは動作を終了したり、又はステップＳ１２１０で算出された流体粒子の位置を格子モジュールに提供してもよい。
【００９８】
図１３は、他の実施形態に係るモデリング装置で変形体モデリングモジュールの動作方法を示したフローチャートである。図１３を参照すると、一実施形態に係る変形体モデリングモジュールは、外力を反映して変形体に対する粒子基盤の形状モデルをモデリングする（Ｓ１３１０）。変形体モデリングモジュールは、ステップＳ１３１０でモデリングされた形状モデルに変形体に対する流体粒子の作用力を反映する（Ｓ１３２０）。変形体モデリングモジュールは、作用力の適用結果に応じて形状モデルの最終位置を決定する（Ｓ１３３０）。
【００９９】
変形体モデリングモジュールは、変形体と流体粒子の間の衝突が発生したかを判断する（Ｓ１３４０）。
【０１００】
ステップＳ１３４０で衝突が発生したと判断された場合、変形体モデリングモジュールは、形状モデルの最終位置で形状モデル及び変形体の障害物が第２制約条件が満足されるようにモデリングする（Ｓ１３５０）。変形体モデリングモジュールは、ステップＳ１３５０でモデリングされた変形体の形状モデルに対する形状情報を生成する（Ｓ１３６０）。変形体モデリングモジュールは、ステップＳ１３６０で生成された形状情報を格子モジュールに送信する（Ｓ１３７０）。
【０１０１】
ステップＳ１３４０において、衝突が発生していないと判断された場合、変形体モデリングモジュールは形状モデルに対する形状情報を生成し（Ｓ１３６０）、形状情報を格子モジュールに送信する（Ｓ１３７０）。
【０１０２】
図１４は、他の実施形態に係るモデリング装置で格子モジュールの動作方法を示したフローチャートである。図１４を参照すると、一実施形態に係る格子モジュールは、変形体モデリングモジュールから変形体の形状情報を受信する（Ｓ１４１０）。格子モジュールは、変形体の形状情報を流体モデリングモジュールに提供する（Ｓ１４２０）。格子モジュールは流体モデリングモジュールから、流体粒子が受ける制約力及び流体粒子の最終速度を受信する（Ｓ１４３０）。格子モジュールは、変形体の形状情報及び流体粒子が受ける制約力を用いて変形体に対する流体粒子の反作用力を算出する（Ｓ１４４０）。格子モジュールは、流体粒子の最終位置での最終速度に基づいて変形体に対する流体粒子の抗力を算出する（Ｓ１４５０）。格子モジュールは、反作用力及び抗力を含む流体粒子の作用力を変形体モデリングモジュールに提供する（Ｓ１４６０）。
【０１０３】
以上で説明された装置は、ハードウェア構成要素、ソフトウェア構成要素、及び／又はハードウェア構成要素及びソフトウェア構成要素の組合せで実現してもよい。例えば、プロセッサ、コントローラ、ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）、デジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、マイクロコンピュータ、ＦＰＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ａｒｒａｙ）、ＰＬＵ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｕｎｉｔ）、マイクロプロセッサー、または、命令（ｉｎｓｔｒｕｃｔｉｏｎ）を実行して応答できる異なる装置のように、１つ以上の汎用コンピュータまたは特殊目的のコンピュータを用いて実現されてもよい。処理装置は、オペレーティングシステム（ＯＳ）及び前記オペレーティングシステム上で行われる１つ以上のソフトウェアアプリケーションを実行してもよい。また、処理装置は、ソフトウェアの実行に応答してデータをアクセス、格納、操作、処理及び生成してもよい。理解の便宜のために、処理装置は１つ使用されるものと説明される場合もあるが、当該の技術分野で通常の知識を有する者は、処理装置が複数の処理要素（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）及び／又は複数類型の処理要素を含んでいることが分かる。例えば、処理装置は、複数のプロセッサまたは１つのプロセッサ及び１つのコントローラを含んでもよい。また、並列プロセッサ（ｐａｒａｌｌｅｌ  ｐｒｏｃｅｓｓｏｒ）のような、他の処理構成も可能である。
【０１０４】
ソフトウェアはコンピュータプログラム、コード、命令、またはこのうちの１つ以上の組合せを含んでもよく、希望の通りに動作するよう処理装置を構成したり独立的または結合的に処理装置を命令してもよい。ソフトウェア及び／又はデータは、処理装置によって解釈されたり処理装置に命令またはデータを提供するためどのような類型の機械、構成要素、物理的装置、仮想装置、コンピュータ格納媒体または装置、送信される信号波に永久的または一時的に具体化できる。ソフトウェアは、ネットワークに接続されたコンピュータシステム上に分散し、分散された方法で格納されたり実行されてもよい。ソフトウェア及びデータは１つ以上のコンピュータで読み出し可能な記録媒体に格納されてもよい。
【０１０５】
実施形態に係る方法は、多様なコンピュータ手段を介して様々な処理を実行することができるプログラム命令の形態で実現され、コンピュータで読取可能な記録媒体に記録されてもよい。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうち１つまたはその組合せを含んでもよい。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、光ディスクのような光磁気媒体、及びＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれてもよい。プログラム命令の例には、コンパイラによって作られるような機械語コードだけでなく、インタープリタなどを用いてコンピュータによって実行できる高級言語コードが含まれる。前記したハードウェア装置は、本発明の動作を行うために１つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同様である。
【０１０６】
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
【０１０７】
したがって、本発明の範囲は、開示された実施形態に限定されるものではなく、特許請求の範囲だけではなく特許請求の範囲と均等なものなどによって定められるものである。
【符号の説明】
【０１０８】
７００：モデリング装置
７１０：メモリ
７３０：プロセッサ
７５０：通信部
【図１】
0006663183.tif 000002
【図２】
0006663183.tif 000003
【図３】
0006663183.tif 000004
【図４】
0006663183.tif 000005
【図５】
0006663183.tif 000006
【図６】
0006663183.tif 000007
【図７】
0006663183.tif 000008
【図８】
0006663183.tif 000009
【図９】
0006663183.tif 000010
【図１０】
0006663183.tif 000011
【図１１】
0006663183.tif 000012
【図１２】
0006663183.tif 000013
【図１３】
0006663183.tif 000014
【図１４】
0006663183.tif 000015