(57)【要約】 【課題】  布状体と当該布状体が交差しない障害物との仮想３次元空間における移動をシミュレートするシミュレーション装置２０１等を提供する。【解決手段】  シミュレーション装置２０１の記憶部２０２は、線分状オブジェクトの端点の位置等の情報と障害物オブジェクトの位置等の情報を記憶し、計算部２０３は、所定の物理法則に基づいて、線分状オブジェクトに生ずる張力から微小時間後の端点の位置等を計算し、微小時間後の障害物オブジェクトの位置等を計算し、更新部２０４は、記憶部２０２に記憶される各オブジェクトの位置等の情報を計算された結果で更新し、補正部２０５は、端点が障害物オブジェクトに包含されてしまう場合、線分状オブジェクトが障害物オブジェクトに交差すると判断して、当該端点の位置を障害物オブジェクトの表面もしくはその近傍の外側に補正する。【選択図】  図２
2006146807.tif 000002
【特許請求の範囲】
【請求項１】
伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想３次元空間内で移動する様子をシミュレートするシミュレーション装置であって、
当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、を記憶し、当該複数の端点のそれぞれに、当該複数の障害物オブジェクトのいずれかを補正用オブジェクトとして対応付けて記憶する記憶部、
前記記憶部に記憶された当該複数の端点のそれぞれの位置および速度情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、前記記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する計算部、
当該複数の端点のそれぞれが当該微小時間の後に移動すべきと前記計算された位置を、当該線分状オブジェクトの端点の位置および速度情報として前記記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置、速度および姿勢情報として前記記憶部に記憶させて、前記記憶部に記憶される情報を当該微小時間の後の情報に更新する更新部、
前記更新部による更新が行われる毎に、当該複数の線分状オブジェクトが当該複数の障害物オブジェクトのいずれかに交差するか否かを判断し、交差する場合、当該交差する線分状オブジェクトの端点の位置を、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、補正した位置を、当該端点の位置および速度情報として前記記憶部に記憶させ、前記記憶部に記憶される情報を補正する補正部
を備えることを特徴とするシミュレーション装置。
【請求項２】
請求項１に記載のシミュレーション装置であって、
前記補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該補正用オブジェクトに包含される場合、当該端点の位置を、当該補正用オブジェクトの表面のうち当該端点の近傍の位置に補正する
ことを特徴とする物。
【請求項３】
請求項１に記載のシミュレーション装置であって、
前記補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該複数の障害物オブジェクトについて前記記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該複数の障害物オブジェクトのいずれかに包含される場合、当該端点の位置を、当該端点に対応付けられて前記記憶部に記憶される当該補正用オブジェクトの表面のうち当該端点の近傍の位置に補正する
ことを特徴とする物。
【請求項４】
請求項１に記載のシミュレーション装置であって、
前記補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該補正用オブジェクトに包含される場合、当該端点の更新前の位置を当該補正用オブジェクトの当該更新による移動と同じ方向に同じ距離だけ移動した位置と、当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正する
ことを特徴とする物。
【請求項５】
請求項１に記載のシミュレーション装置であって、
前記補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該複数の障害物オブジェクトについて前記記憶部に記憶される形状、位置、速度および姿勢情報により、当該複数の障害物オブジェクトのいずれかに包含される場合、当該端点の更新前の位置を当該補正用オブジェクトの当該更新による移動と同じ方向に同じ距離だけ移動した位置と、当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正する
ことを特徴とする物。
【請求項６】
請求項１に記載のシミュレーション装置であって、
前記補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該補正用オブジェクトに包含される場合、当該補正用オブジェクトに固定された座標系において、当該補正用オブジェクトに対する当該端点の更新前の位置と、当該補正用オブジェクトに対する当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正する
ことを特徴とする物。
【請求項７】
請求項１に記載のシミュレーション装置であって、
前記補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該複数の障害物オブジェクトについて前記記憶部に記憶される形状、位置、速度および姿勢情報により、当該複数の障害物オブジェクトのいずれかに包含される場合、当該補正用オブジェクトに固定された座標系において、当該補正用オブジェクトに対する当該端点の更新前の位置と、当該補正用オブジェクトに対する当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正する
ことを特徴とする物。
【請求項８】
請求項１から３のいずれか１項に記載のシミュレーション装置であって、
前記記憶部に記憶される補正用オブジェクトの形状が円柱である場合、
前記補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該円柱の中心軸のいずれかの点から開始され、当該中心軸に直交し、当該補正前の端点の位置を通過する半直線が、当該円柱の表面と交差する位置を、当該端点の補正後の位置とする
ことを特徴とする物。
【請求項９】
請求項１から３のいずれか１項に記載のシミュレーション装置であって、
前記記憶部に記憶される補正用オブジェクトの形状が円柱である場合、
前記補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該円柱の中心軸のいずれかの点から開始され、当該中心軸に直交し、当該補正前の端点の位置を通過する半直線が、当該円柱の表面と交差する位置からさらに所定の微小距離だけ進んだ位置を、当該端点の補正後の位置とする
ことを特徴とする物。
【請求項１０】
請求項１から３のいずれか１項に記載のシミュレーション装置であって、
前記記憶部に記憶される補正用オブジェクトの形状が多面体であり、当該多面体の面のうち、いずれか１つ以上が補正用面として設定される場合、
前記補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該多面体の補正用面として設定された面のうち、当該端点に最も近いものに下ろした垂線が当該補正用面と交差する位置を、当該端点の補正後の位置とする
ことを特徴とする物。
【請求項１１】
請求項１から３のいずれか１項に記載のシミュレーション装置であって、
前記記憶部に記憶される補正用オブジェクトの形状が多面体であり、当該多面体の面のうち、いずれか１つ以上が補正用面として設定される場合、
前記補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該多面体の補正用面として設定された面のうち、当該端点に最も近いものに下ろした垂線が当該補正用面と交差する位置からさらに所定の微小距離だけ進んだ位置を、当該端点の補正後の位置とする
ことを特徴とする物。
【請求項１２】
伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想３次元空間内で移動する様子をシミュレートし、記憶部、計算部、更新部、補正部を備えるシミュレーション装置にて実行されるシミュレート方法であって、
前記記憶部には、当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、が記憶され、当該複数の端点のそれぞれが当該複数の障害物オブジェクトのいずれかに補正用オブジェクトとして対応付けて記憶され、
前記計算部が、前記記憶部に記憶された当該複数の端点のそれぞれの位置および速度情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、前記記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する計算工程、
前記更新部が、当該複数の端点のそれぞれが当該微小時間の後に移動すべきと前記計算された位置を、当該線分状オブジェクトの端点の位置および速度情報として前記記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置、速度および姿勢情報として前記記憶部に記憶させて、前記記憶部に記憶される情報を当該微小時間の後の情報に更新する更新工程、
前記補正部が、前記更新工程による更新が行われる毎に、当該複数の線分状オブジェクトが当該複数の障害物オブジェクトのいずれかに交差するか否かを判断し、交差する場合、当該交差する線分状オブジェクトの端点の位置を、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、補正した位置を、当該端点の位置および速度情報として前記記憶部に記憶させ、前記記憶部に記憶される情報を補正する補正工程
を備えることを特徴とする方法。
【請求項１３】
コンピュータに、伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想３次元空間内で移動する様子をシミュレーションさせるプログラムであって、当該プログラムは、当該コンピュータを、
当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、を記憶し、当該複数の端点のそれぞれに、当該複数の障害物オブジェクトのいずれかを補正用オブジェクトとして対応付けて記憶する記憶部、
前記記憶部に記憶された当該複数の端点のそれぞれの位置および速度情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、前記記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する計算部、
当該複数の端点のそれぞれが当該微小時間の後に移動すべきと前記計算された位置を、当該線分状オブジェクトの端点の位置および速度情報として前記記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置、速度および姿勢情報として前記記憶部に記憶させて、前記記憶部に記憶される情報を当該微小時間の後の情報に更新する更新部、
前記更新部による更新が行われる毎に、当該複数の線分状オブジェクトが当該複数の障害物オブジェクトのいずれかに交差するか否かを判断し、交差する場合、当該交差する線分状オブジェクトの端点の位置を、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、補正した位置を、当該端点の位置および速度情報として前記記憶部に記憶させ、前記記憶部に記憶される情報を補正する補正部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、布状体と当該布状体が交差しない障害物との仮想３次元空間における移動をシミュレートして、たとえばスカートが人の足にまとわりつくような状況を近似的に再現するのに好適な、シミュレーション装置、シミュレート方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、３次元グラフィックスの分野では、布などの動的に形状が変化するオブジェクトをシミュレート（simulate；模擬、模倣）するための技術が提案されている。このような技術はクロスアニメーション（cloth animation）と呼ばれることもあり、現実の物理現象のシミュレーション（simulation；模擬実験）に相当するものである。たとえば以下の文献に、その技術が開示されている。
【非特許文献１】こてつ、３Ｄ動きのアルゴリズム、ＰＡＲＴ２  人体と衣服のモデルの動作原理、Ｃマガジン２０００年９月号、第２０頁〜第２３頁、ソフトバンクパブリッシング発行、２０００年９月１日発行
【０００３】
このような技術では、１枚の布を、当該布の表面状に配置されると想定される複数の質点と、質点同士を結ぶバネとでモデル化し、微分方程式や差分方程式を数値計算により解く技術を適用して、質点同士の距離からバネに生ずる張力を計算し、当該張力により各質点の微小時間における移動を求め、当該質点を移動させることによって、布の変形をシミュレートしていた。
【０００４】
そして、[非特許文献１]には、質点のうち限られたものについて位置の拘束条件が課せられた場合（四角形の布の上端の２つの隅が固定されている場合）についてのシミュレーションの結果が開示されている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、リアルな３次元グラフィックスを実現するためには、スカートの布が人間の足にまとわりついたりする場合など、布状体と、当該布状態が交差しない障害物との移動をシミュレートする手法が強く求められている。
【０００６】
一方で、上記のモデル化によれば、質点およびバネのいずれも、障害物にその一部や全部が包含されてはならない、という拘束条件が課せられることとなるが、このようなシミュレーションの結果を提示する分野によっては、近似的手法によって、高速なシミュレーションを可能にしたい、との要望も強い。
【０００７】
本発明は、上記のような課題を解決するためになされたもので、布状体と当該布状体が交差しない障害物との仮想３次元空間における移動をシミュレートして、たとえばスカートが人の足にまとわりつくような状況を近似的に再現するのに好適な、シミュレーション装置、シミュレート方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００９】
本発明の第１の観点に係るシミュレーション装置は、伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想３次元空間内で移動する様子をシミュレートし、記憶部、計算部、更新部、補正部を備え、以下のように構成する。
【００１０】
すなわち、記憶部は、当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、を記憶し、当該複数の端点のそれぞれに、当該複数の障害物オブジェクトのいずれかを補正用オブジェクトとして対応付けて記憶する。
【００１１】
ここで、線分状オブジェクトは、バネをモデル化したものであり、線分状オブジェクトの端点は、質点をモデル化したものである。したがって、線分状オブジェクトとその端点によって、布状の物体をモデル化することなる。一方、障害物オブジェクトは、当該仮想３次元空間内で、当該布状の物体と衝突しうるものをモデル化したものである。たとえば、布状の物体が、スカートの布である場合、障害物オブジェクトは、人間の足に相当することになる。
【００１２】
なお、障害物オブジェクトとしては、変形しないもののほか、変形するものを考えることができる。たとえば、人間の足をモデル化する場合には、片足をもも部、すね部、足首からつま先部の３つの変形しない内部オブジェクトに分割し、その間を関節により接続して自由度を制限し、外力や筋肉モデルによる内力が伝達されるようにする。
【００１３】
一方、計算部は、記憶部に記憶された当該複数の端点のそれぞれの位置および速度情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する。
【００１４】
線分状オブジェクトはバネをモデル化したものであるので、自然長より長くなれば（端点が遠ざかれば）、端点同士を引っ張り合う張力が生じ、自然長より短くなれば（端点が近付けば）、端点同士を離す方向の負の張力（反発力）が生じる。この張力の大きさは、バネの現在の長さとその自然長との差に比例することとするのがもっとも単純なモデルであるが、たとえば、しわになりやすい布をシミュレートするために反発力は一切生じないものとしたり、堅い布をシミュレートするために一定以上の長さになると極めて大きな反発力が生じるものとしたりすることができ、張力の決め方には種々の技法を採用することができる。
【００１５】
一方、障害物オブジェクトは、一般の仮想３次元空間におけるオブジェクトの運動をシミュレートして、位置、姿勢を求めれば良い。また、障害物オブジェクトが複数の変形しない内部オブジェクトからなる場合は、内部オブジェクト同士の接続関係も考慮して外力や内力、接続関係の拘束条件等計算を行うことにより、それぞれの位置を求めれば、障害物オブジェクトがどのように変形するか判明する。
【００１６】
さらに、更新部は、当該複数の端点のそれぞれが当該微小時間の後に移動すべきと計算された位置を、当該線分状オブジェクトの端点の位置および速度情報として記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置、速度および姿勢情報として記憶部に記憶させて、記憶部に記憶される情報を当該微小時間の後の情報に更新する。
【００１７】
これによって、記憶部には、各オブジェクトの形状、位置、姿勢情報が記憶されることになる。
【００１８】
そして、補正部は、更新部による更新が行われる毎に、当該複数の線分状オブジェクトが当該複数の障害物オブジェクトのいずれかに交差するか否かを判断し、交差する場合、当該交差する線分状オブジェクトの端点の位置を、当該端点に対応付けられて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、補正した位置を、当該端点の位置および速度情報として記憶部に記憶させ、記憶部に記憶される情報を補正する。
【００１９】
上記の例でいえば、スカートが足の中に入り込むことはなく、布は足の表面にとどまる。これをシミュレートするために、本発明では、布の形状を表す端点（質点）を結ぶ線分状オブジェクトが、足の形状を表す障害物オブジェクトと交差するか否か、を判定するものとする。ここで、「交差」するか否かの判定には、後述するような種々の技術を採用することができる。
【００２０】
本発明では、線分状オブジェクトが「いずれか」の障害物オブジェクトと交差する場合に、当該線分状オブジェクトの端点に対応付けられる補正用オブジェクトの表面の近傍に、当該端点を移動することによって、両者が交差しないように、位置を補正するのである。
【００２１】
このように、本発明により、仮想３次元空間において、布状のオブジェクトが、ある形状を有するオブジェクトと衝突する様子をシミュレートすることができるようになる。
【００２２】
なお、当該所定の微小時間を、更新部による更新の時間間隔（すなわち、補正部による補正の時間間隔）に等しいようにすれば、リアルタイムのシミュレーション、すなわち、現実の時間が経過するのと同じように、記憶部に記憶される形状、位置、姿勢情報が変化することとなる。したがって、これらの情報が補正されるごとに画面表示を行えば、仮想３次元空間内の各オブジェクトが運動する様を、現実世界のものと同様に提示することができる。
【００２３】
また、本発明のシミュレーション装置において、補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該端点に対応付けられて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該補正用オブジェクトに包含される場合、当該端点の位置を、当該補正用オブジェクトの表面のうち当該端点の近傍の位置に補正するように構成することができる。
【００２４】
すなわち、端点（質点、布の表面に配置される点）が、障害物の内部に含まれる（スカートの布の表面の点が足の中にめり込んでしまっている）場合に、「交差」が生じる、と判断するものである。
【００２５】
本発明では、すべての障害物オブジェクトのそれぞれと、端点のそれぞれと、を順次対比して、包含されるか否かを判定するのではなく、端点のそれぞれについて、当該端点が、当該端点にあらかじめ対応付けられた補正用オブジェクト（障害物オブジェクトのいずれかである）に包含されるか否かを判断して「交差」を判定するので、計算処理を高速に行うことができる一方で、交差が生じる場合には、適切な場所に端点の位置を移動することができるようになる。
【００２６】
また、本発明のシミュレーション装置において、補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該複数の障害物オブジェクトについて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該複数の障害物オブジェクトのいずれかに包含される場合、当該端点の位置を、当該端点に対応付けられて記憶部に記憶される当該補正用オブジェクトの表面のうち当該端点の近傍の位置に補正するように構成することができる。
【００２７】
本発明においても、端点（質点、布の表面に配置される点）が、障害物の内部に含まれる（スカートの布の表面の点が足の中にめり込んでしまっている）場合に、「交差」が生じる、と判断するのは、上記のものと同様である。
【００２８】
本発明では、すべての障害物オブジェクトのそれぞれと、端点のそれぞれと、を順次対比して、包含されるか否かを判定して、「交差」を判定するので、本発明によれば、より正確な交差判定ができる一方で、交差が生じる場合には、適切な場所に端点の位置を移動することができるようになる。
【００２９】
また、本発明のシミュレーション装置において、補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該端点に対応付けられて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該補正用オブジェクトに包含される場合、当該端点の更新前の位置を当該補正用オブジェクトの当該更新による移動と同じ方向に同じ距離だけ移動した位置と、当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正するように構成することができる。
【００３０】
本発明では、端点がこれに対応付けられる補正用オブジェクトに包含されることとなる場合、端点の元の位置を補正用オブジェクトの（典型的には重心もしくは中心の）移動と同じ方向に同じ距離だけ移動した位置と更新後の位置とを結ぶ線分と、更新後の補正用オブジェクトの表面と、の交点に、当該端点の位置を移動するので、本発明によれば、適切な場所に端点の位置を補正することができるようになる。
【００３１】
また、本発明のシミュレーション装置において、補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該複数の障害物オブジェクトについて記憶部に記憶される形状、位置、速度および姿勢情報により、当該複数の障害物オブジェクトのいずれかに包含される場合、当該端点の更新前の位置を当該補正用オブジェクトの当該更新による移動と同じ方向に同じ距離だけ移動した位置と、当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正するように構成することができる。
【００３２】
本発明では、端点がいずれかの障害物オブジェクトに包含されることとなる場合、端点の元の位置をこれに対応付けられる補正用オブジェクトの（典型的には重心もしくは中心の）移動と同じ方向に同じ距離だけ移動した位置と更新後の位置とを結ぶ線分と、更新後の補正用オブジェクトの表面と、の交点に、当該端点の位置を移動するので、本発明によれば、より適切な場所に端点の位置を補正することができるようになる。
【００３３】
また、本発明のシミュレーション装置において、補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該端点に対応付けられて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該補正用オブジェクトに包含される場合、当該補正用オブジェクトに固定された座標系において、当該補正用オブジェクトに対する当該端点の更新前の位置と、当該補正用オブジェクトに対する当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正するように構成することができる。
【００３４】
本発明では、端点がこれに対応付けられる補正用オブジェクトに包含されることとなる場合、補正用オブジェクトに固定された座標系における当該微小時間での端点の移動軌跡と補正用オブジェクトの表面との交点を求め、当該交点の位置に当該端点の位置を移動するので、適切な場所に端点の位置を補正することができる。
【００３５】
また、本発明のシミュレーション装置において、補正部は、当該複数の端点のそれぞれについて、当該端点の位置が、当該複数の障害物オブジェクトについて記憶部に記憶される形状、位置、速度および姿勢情報により、当該複数の障害物オブジェクトのいずれかに包含される場合、当該補正用オブジェクトに固定された座標系において、当該補正用オブジェクトに対する当該端点の更新前の位置と、当該補正用オブジェクトに対する当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正するように構成することができる。
【００３６】
本発明では、端点がいずれかの障害物オブジェクトに包含されることとなる場合、補正用オブジェクトに固定された座標系における当該微小時間での端点の移動軌跡と補正用オブジェクトの表面との交点を求め、当該交点の位置に当該端点の位置を移動するので、適切な場所に端点の位置を補正することができる。
【００３７】
また、本発明のシミュレーション装置において、記憶部に記憶される補正用オブジェクトの形状が円柱である場合、補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該円柱の中心軸のいずれかの点から開始され、当該中心軸に直交し、当該補正前の端点の位置を通過する半直線が、当該円柱の表面と交差する位置を、当該端点の補正後の位置とするように構成することができる。
【００３８】
本発明は、補正用オブジェクトが円柱である場合の、端点の近傍を定める一つの手法を開示するものであり、本発明によれば、簡易に端点の位置の補正を行うことができるようになる。
【００３９】
また、本発明のシミュレーション装置において、記憶部に記憶される補正用オブジェクトの形状が円柱である場合、補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該円柱の中心軸のいずれかの点から開始され、当該中心軸に直交し、当該補正前の端点の位置を通過する半直線が、当該円柱の表面と交差する位置からさらに所定の微小距離だけ進んだ位置を、当該端点の補正後の位置とするように構成することができる。
【００４０】
本発明は、補正用オブジェクトが円柱である場合の、端点の近傍を定める一つの手法を開示するものであり、本発明によっても、簡易に端点の位置の補正を行うことができるようになる。
【００４１】
また、本発明のシミュレーション装置において、記憶部に記憶される補正用オブジェクトの形状が多面体であり、当該多面体の面のうち、いずれか１つ以上が補正用面として設定される場合、補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該多面体の補正用面として設定された面のうち、当該端点に最も近いものに下ろした垂線が当該補正用面と交差する位置を、当該端点の補正後の位置とするように構成することができる。
【００４２】
本発明は、補正用オブジェクトが多面体（直方体や角柱、角錐台、正多面体などの凸多面体のほか、凹多面体など、任意の形状の多面体）である場合の、端点の近傍を定める一つの手法を開示するものであり、本発明によっても、簡易に端点の位置の補正を行うことができるようになる。
【００４３】
また、本発明のシミュレーション装置において、記憶部に記憶される補正用オブジェクトの形状が多面体であり、当該多面体の面のうち、いずれか１つ以上が補正用面として設定される場合、補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該多面体の補正用面として設定された面のうち、当該端点に最も近いものに下ろした垂線が当該補正用面と交差する位置からさらに所定の微小距離だけ進んだ位置を、当該端点の補正後の位置とするように構成することができる。
【００４４】
本発明は、補正用オブジェクトが多面体（直方体や角柱、角錐台、正多面体などの凸多面体のほか、凹多面体など、任意の形状の多面体）である場合の、端点の近傍を定める一つの手法を開示するものであり、本発明によっても、簡易に端点の位置の補正を行うことができるようになる。
【００４５】
本発明の他の観点に係るシミュレート方法は、伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想３次元空間内で移動する様子をシミュレートし、記憶部、計算部、更新部、補正部を備えるシミュレーション装置にて実行され、計算工程、更新工程、補正工程を備える。
【００４６】
ここで、記憶部には、当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、が記憶され、当該複数の端点のそれぞれが当該複数の障害物オブジェクトのいずれかに補正用オブジェクトとして対応付けて記憶される。
【００４７】
一方、計算工程では、計算部が、記憶部に記憶された当該複数の端点のそれぞれの位置および速度情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する。
【００４８】
さらに、更新工程では、更新部が、当該複数の端点のそれぞれが当該微小時間の後に移動すべきと計算された位置を、当該線分状オブジェクトの端点の位置および速度情報として記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置、速度および姿勢情報として記憶部に記憶させて、記憶部に記憶される情報を当該微小時間の後の情報に更新する。
【００４９】
そして、補正工程では、補正部が、更新工程による更新が行われる毎に、当該複数の線分状オブジェクトが当該複数の障害物オブジェクトのいずれかに交差するか否かを判断し、交差する場合、当該交差する線分状オブジェクトの端点の位置を、当該端点に対応付けられて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、補正した位置を、当該端点の位置および速度情報として記憶部に記憶させ、記憶部に記憶される情報を補正する。
【００５０】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００５１】
本発明によれば、布状体と当該布状体が交差しない障害物との仮想３次元空間における移動をシミュレートして、たとえばスカートが人の足にまとわりつくような状況を近似的に再現するのに好適な、シミュレーション装置、シミュレート方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００５２】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム装置として動作する情報処理装置に対して本発明が適用される実施形態を説明するが、各種のコンピュータ、ＰＤＡ（Personal Data Assistants）、携帯電話などの情報処理装置においても同様に本発明を適用することができる。すなわち、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００５３】
図１は、本発明のシミュレーション装置が実現される典型的な情報処理装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【００５４】
情報処理装置１００は、ＣＰＵ  １０１と、ＲＯＭ  １０２と、ＲＡＭ  １０３と、インターフェイス１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０とを備える。
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態のシミュレーション装置が実現される。
【００５５】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００５６】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００５７】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００５８】
インターフェイス１０４を介して接続されたコントローラ１０５は、ユーザがアクションゲームなどのゲーム実行の際に行う操作入力を受け付ける。
【００５９】
インターフェイス１０４を介して着脱自在に接続された外部メモリ１０６には、対戦ゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、対戦に伴うチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００６０】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データ、動画情報データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００６１】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）にバッファリング記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。このような画像処理部１０７の処理は、ＣＰＵ  １０１の演算処理とは並行して行うことができる。
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００６２】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。フォント情報は、ＲＯＭ  １０２に記録されているが、ＤＶＤ−ＲＯＭに記録された専用のフォント情報を利用することも可能である。
【００６３】
このほか、ＤＶＤ−ＲＯＭに記録された動画情報や、これをあらかじめＲＡＭ  １０３等に転送した場合の動画情報は、画像処理部１０７によって、画面の所定の領域にスーパーインポーズするような形式で、動画表示を行うことができる。
【００６４】
さて、ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００６５】
インターネット内のＳＮＴＰサーバにＮＩＣ  １０９を介して接続し、ここから情報を得ることによって現在の日時情報を得ることができる。また、各種のネットワークゲームのサーバ装置が、ＳＮＴＰサーバと同様の機能を果たすように構成設定してもよい。
【００６６】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
音声処理部１１０では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００６７】
さらに、情報処理装置１００には、インターフェース１０４を介してマイク１１１を接続することができる。この場合、マイク１１１からのアナログ信号に対しては、適当なサンプリング周波数でＡ／Ｄ変換を行い、ＰＣＭ形式のディジタル信号として、音声処理部１１０でのミキシング等の処理ができるようにする。情報処理装置１００をゲーム装置として利用する場合には、マイク１１１から入力された音声データを指示入力データとして、コントローラ１０５のかわりに入力デバイスとして用いることも可能である。
【００６８】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００６９】
また、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置１００にかえて、汎用のパーソナルコンピュータを利用することもできる。
【００７０】
一般的なコンピュータは、上記情報処理装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭドライブ、および、ＮＩＣを備え、ゲームにおける画面表示には必ずしも特化していない画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっているのが一般的である。また、コントローラではなく、キーボードやマウスなどを入力装置として利用する。
したがって、このような一般的なコンピュータを、本発明のシミュレーション装置として動作させることも可能である。
【００７１】
図２は、本発明の実施例に係るシミュレーション装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００７２】
シミュレーション装置２０１は、伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想３次元空間内で移動する様子をシミュレートし、記憶部２０２、計算部２０３、更新部２０４、補正部２０５、出力部２０６を備える。
【００７３】
記憶部２０２は、当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、を記憶し、当該複数の端点のそれぞれに、当該複数の障害物オブジェクトのいずれかを補正用オブジェクトとして対応付けて記憶する。
【００７４】
図３は、線分状オブジェクトとその端点の様子を示す説明図である。
【００７５】
図３に示すように、布状の物体のモデル３０１として、バネのように振舞う線分状オブジェクト３０２を網目状に結合する。そして、その結合される端点３０３を質点とする。各端点３０３が均一に分布する場合には、当該布状の物体の質量を端点３０３の総数で割った質量を、各端点３０３の質点の質量とすれば良い。
【００７６】
布状の物体が自然な状態（外力がかかっていない状態）のときの各質点の位置を決め、そのときの質点（端点）同士の距離を線分状オブジェクト３０２の自然長とする。したがって、自然長を適宜調整することによって、立体的な形状（たとえば、しわやひだのある形状）の布をモデル化することも可能である。
【００７７】
図３（ａ）は、質点（端点３０３）を正三角形のメッシュの頂点に配置し、正三角形の辺に線分状オブジェクト３０２を配置する手法である。なお、有限要素法などで用いられる領域分割と同様、三角形の形状としては、必ずしも正三角形を利用する必要はなく、また、布状の物体の縁近傍では、正三角形を採用できない場合もある。このような場合には、できるだけ、正三角形に近い形状（細長くない形状）を採用することが望ましい。
【００７８】
図３（ｂ）は、質点（端点３０３）を格子点に配置し、格子点が頂点となる正方形のメッシュの辺に線分状オブジェクト３０２を配置する手法である。図３（ａ）、（ｂ）の手法では、殆どの線分状オブジェクト３０２が同じ長さとなるため、計算の単純化を図ることが可能である。
【００７９】
図３（ｃ）は、図３（ｂ）の手法に加えて、さらに、正方形のメッシュの対角線にも線分状オブジェクト３０２を配置する手法である。この手法では、長さの異なる２種類の線分状オブジェクト３０２を利用することとなるため、計算は少々複雑になるが、より自然な布の変形を表現することが可能となる。
【００８０】
線分状オブジェクト３０２はバネをモデル化したものであるから、最も単純な手法では、自然長よりも伸びた場合は、その伸び長に比例する張力で端点同士が引っぱられ、自然長よりも縮んだ場合は、その縮み長に比例する反発力（負の張力）で端点同士が遠ざけられる方向に力が働くことになる。
【００８１】
このように、線分状オブジェクト３０２は、バネをモデル化したものであり、線分状オブジェクト３０２の端点３０３は、質点をモデル化したものである。したがって、線分状オブジェクト３０２とその端点３０３によって、布状の物体をモデル化するのである。
【００８２】
一方、障害物オブジェクトは、当該仮想３次元空間内で、当該布状の物体と衝突しうるものをモデル化したものである。たとえば、布状の物体が、スカートの布である場合、障害物オブジェクトは、人間の足に相当する。
【００８３】
図４は、仮想３次元空間内における障害物オブジェクトと線分状オブジェクトの関係を示す説明図である。図４（ａ）は、仮想３次元空間内に、片足を模した形状のオブジェクトと線分状オブジェクトが配置される様子を示しており、図４（ｂ）は、片足を模した形状のオブジェクトを、より単純な形状の障害物オブジェクトで表現した様子が示されている。
【００８４】
本図に示すように、人間の片足の腿４１２、膝の関節４１３、脛４１４、足首の関節４１５、足首よりつま先までの足先４１６は、それぞれ、四角柱の障害物オブジェクト４０２ａ、球の障害物オブジェクト４０２ｂ、円柱の障害物オブジェクト４０２ｃ、球の障害物オブジェクト４０２ｄ、台状体の障害物オブジェクト４０２ｅによって表現されている。
【００８５】
この５つの障害物オブジェクト４０２については、四角柱４０２ａの底面の中心は球４０２ｂに接し、円柱４０２ｃの底面の中心は球４０２ｂおよび球４０２ｄに接し、台状体４０２ｅの上面の所定の点が球４０２ｄに接する、という拘束条件のもとで運動をすることによって、人間の足をシミュレートしている。このほか、足をシミュレートするために、各部に加わる力や膝、足首を曲げ、伸ばそうとする力を種々の筋肉モデルによって設計して、内力や各種の外力が伝達されるようにして、物理シミュレーションを行うことができるようにしている。このような、人体の物理的なシミュレーションについては、種々の公知の技術を適用することができる。
【００８６】
さて、本図に示すように、障害物オブジェクト４０２の外側には、線分状オブジェクト３０２およびその端点３０３により構成される布状の物体のモデル３０１が配置されることになる。
【００８７】
スカートの布が人間の足にめり込むことがないのと同様、線分状オブジェクト３０２の端点３０３が障害物オブジェクト４０２にめり込むことがないようにしなければならない。
【００８８】
一方、布状の物体を実際に三次元グラフィックス描画することを考えた場合、各メッシュの頂点（端点３０３）と障害物オブジェクト４０２との遠近を判定し、どちらがどちらの前にあるかを調べてから、Ｚバッファ法によりメッシュにテクスチャを貼り込むこととなる。
【００８９】
したがって、線分状オブジェクト３０２の線分の一部が障害物オブジェクト４０２の表面にめり込むことがあったとしても、実用上は問題がないことが多い。この場合は、必要な精度で布状の物体をシミュレートできる程度にメッシュを細かくしておけば十分である。
【００９０】
このように、以下の実施形態では、「線分状オブジェクト３０２と障害物オブジェクト４０２との交差」を、「障害物オブジェクト４０２の内部に線分状オブジェクト３０２のいずれかの端点が包含される」こととして取り扱うものとする。その詳細は後述する。
【００９１】
もっとも、適用分野によっては、「交差しない」ということを、線分状オブジェクト３０２全体が常に障害物オブジェクト４０２よりも外側にある（少なくとも障害物オブジェクト４０２の表面に接する）ことによって定義した方が良いこともある。このような場合についても後述する。
【００９２】
なお、上記の説明では、人間の腿、膝関節、脛、足首、足首より先つま先まで、の５つの部分を５個の障害物オブジェクト４０２として取り扱うこととしたが、これらを１個の変形する障害物オブジェクト４０２として取り扱っても良い。すなわち、１個の障害物オブジェクト４０２が、自由度を拘束する条件によって接続された複数の（単純な形状の）内部オブジェクトから構成されることとし、各内部オブジェクト同士は、種々の筋肉モデル等により内力が伝達されて、変形する、ということとするものである。
【００９３】
さて、上述のように、記憶部２０２には、このような各種オブジェクトの位置情報、速度情報、姿勢情報、形状情報などが記憶されるほか、各種オブジェクトの物理シミュレーションに必要な各種の情報も記憶される。また、ユーザからのコントローラ１０５を介した指示入力も、一時的に記憶部２０２に記憶される。後述する計算部２０３は、記憶された情報を参照する。したがって、本実施形態では、ＲＡＭ  １０３が記憶部２０２として機能する。
【００９４】
図５は、本実施形態におけるシミュレーション処理の制御の流れを示す模式図である。以下、本図を参照して説明する。
【００９５】
まず、ＣＰＵ  １０１の制御の下、記憶部２０２に、各種情報の初期値が設定される（ステップＳ５０１）。これらの初期値は、外部メモリ１０６やＤＶＤ−ＲＯＭドライブ１０８に装着されたＤＶＤから読み出すこととしても良いし、ユーザからのコントローラ１０５を介した指示入力により設定されることとしても良い。
【００９６】
一方、計算部２０３は、記憶部２０２に記憶された当該複数の端点３０３のそれぞれの位置情報から、当該端点３０３同士を結ぶ線分状オブジェクト３０２の張力を計算する（ステップＳ５０２）。
【００９７】
ここで、線分状オブジェクト３０２の自然長をL、考慮する端点３０３の仮想３次元空間４０１内における座標を(x1,y1,z1)と(x2,y2,z2)、線分状オブジェクト３０２のバネ定数をkとおくと、最も簡単なバネモデルの一つによれば、線分状オブジェクト３０２の張力の大きさFは、以下のように表現できる。
F = k(D - L)
ただし、Dは、現在の線分状オブジェクト３０２の長さであり、以下のように計算できる。
D = ((x2-x1)2+(y2-y1)2+(z2-z1)2)1/2
【００９８】
したがって、座標(x1,y1,z1)にある質点（端点３０３）は、以下のベクトルで表現される力を受けることになる。
(F(x2-x1)/D，F(y2-y1)/D，F(z2-z1)/D)
【００９９】
一方、座標(x2,y2,z2)にある質点（端点３０３）は、以下のベクトルで表現される力を受けることになる。
(-F(x2-x1)/D，-F(y2-y1)/D，-F(z2-z1)/D)
【０１００】
張力の大きさFが正である場合はバネが端点同士を引き合う力が、負である場合はバネが端点同士を離し合う力が、それぞれ生じることを意味する。
【０１０１】
なお、バネにより生じる張力のモデル化は、上記の形態に限られず、種々の手法を採用することができる。たとえば、Dが一定の上限を超えた場合や一定の下限を下回った場合には、Fも所定の定数をとることとしたり、単なる比例ではなくより複雑な計算によって張力が計算されることとしたり、DとFとの関係が連続的に比例して変化するのではなく、階段状に不連続に変化するようにしても良い。
【０１０２】
ついで、計算部２０３は、各端点３０３について当該計算された張力の和をとって、当該端点３０３にかかる外力を計算し（ステップＳ５０３）、当該外力によって当該端点３０３が所定の微小時間の後に移動すべき位置を計算する（ステップＳ５０４）。上記のように、各線分状オブジェクト３０２のそれぞれについて張力を計算し、その総和をとれば、各質点（端点３０３）にかかる力がわかる。
【０１０３】
たとえば、図３（ａ）に示すモデルの場合、代表的な質点（端点３０３）には線分状オブジェクト３０２が６個集まっているので、これら６つの張力の総和を求める。図３（ｂ）の場合は、線分状オブジェクト３０２が４個集まっているので、これら４つの張力の総和を求める。図３（ｃ）の場合は、線分状オブジェクト３０２が８個集まっているので、これら８つの張力の総和を求める。
【０１０４】
このほか、質点（端点３０３）に外力がかかっている場合は、その力も可算する。外力としては、たとえば重力や風力などが考えられる。質点（端点３０３）の質量をmとし、重力加速度ベクトルをgとした場合、重力はmgとなる。
【０１０５】
さて、ある質点（端点３０３）にかかる力ベクトルをfであり、現在の記憶部３０２に記憶されている質点（端点３０３）の位置情報による位置ベクトルをr（上記の端点３０３の座標に対応する。）、速度情報による速度ベクトルをv、所定の微小時間をdtとするとき、当該端点３０３が所定の微小時間後に移動すべき位置を表す位置ベクトルr'および当該端点３０３の所定の微小時間後の速度を現わす速度ベクトルv'は、最も単純には、以下のように表現できる。
v' = v + f・dt/m；
r' = r + (v+v')・dt/2
= r + v・dt + f・dt2/(2m)
【０１０６】
これは、計算機を用いた積分の最も単純な構成であり、より詳細にシミュレーションを行うためには、たとえばRunge-Kutta法などの技術を適用することもできる。
【０１０７】
ここで、本シミュレーションの結果をゲームにおいて画面に表示する場合などには、この微小時間dtは、画面表示のリフレッシュレートに比例させることが望ましい。たとえば、一般的なゲーム装置では、垂直同期が６０Ｈｚで生じるので、微小時間dtは、１／６０秒をさらに整数で割った時間とする。
【０１０８】
次に、計算部２０３は、記憶部に記憶された当該複数の障害物オブジェクト４０２のそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクト４０２が当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する（ステップＳ５０５）。
【０１０９】
障害物オブジェクト４０２にかかる力を求め、上記の質点（端点３０３）の場合と同様の計算を行えば良い。一方、障害物オブジェクト４０２は、一般の仮想３次元空間におけるオブジェクトの運動をシミュレートして、位置、姿勢を求めれば良い。また、障害物オブジェクト４０２が複数の変形しない内部オブジェクトからなる場合は、内部オブジェクト同士の接続関係も考慮して外力や内力、接続関係の拘束条件等計算を行うことにより、それぞれの位置を求めれば、障害物オブジェクト４０２がどのように変形するか判明する。
【０１１０】
なお、上記の計算では、障害物オブジェクト４０２や端点３０３が自由に運動できる場合を考えたが、これらが拘束されている場合もある。たとえば、スカートの上側の縁は人間の腰に固定されているし、旗の横の２頂点はポールに固定されている。そこで、このような拘束条件がある場合には、微分方程式を解いた結果を修正し、あるいは、微分方程式を解くまでもなく、次の位置を決定したりするのである。このような修正や決定の技法についても、公知の技術を採用することができる。
【０１１１】
このように、ＣＰＵ  １０２は、ＲＡＭ  １０３と共働して、計算部２０３として機能する。なお、ステップＳ５０２〜ステップＳ５０４の線分状オブジェクト３０２に関係する計算や、ステップＳ５０５の障害物オブジェクト４０２に関係する計算は、各オブジェクトについて独立に行うことができるため、ベクトル化が可能である。したがって、ＣＰＵ  １０２が直接繰り返し計算を行う手法、ベクトル化指令やマルチメディア指令を用いて並列に計算を行う方法、並列数値演算コプロセッサを利用する手法など、種々の手法を採用することができる。
【０１１２】
さて、更新部２０４は、当該複数の端点３０３のそれぞれが当該微小時間の後に移動すべきと計算された位置を、当該線分状オブジェクト３０２の端点３０３の位置情報として記憶部２０２に記憶させ（ステップＳ５０６）、当該複数の障害物オブジェクト４０２のそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクト４０２の形状、位置、速度および姿勢情報として記憶部２０２に記憶させて（ステップＳ５０７）、記憶部２０２に記憶される情報を当該微小時間の後の情報に更新する。
【０１１３】
これによって、記憶部２０２には、各オブジェクトの形状、位置、姿勢情報が記憶されることになる。
【０１１４】
この段階では、微小時間dtだけ時間経過が起きたとしたときの、単純な物理シミュレーションを行ったのみであるため、ここで記憶部２０２に記憶される値によると、線分状オブジェクト３０２と障害物オブジェクト４０２とが「交差」していることがありうる。すなわち、障害物オブジェクト４０２に質点（端点３０３）がめり込んでいることがありうる。そこで、質点（端点３０３）の位置を補正するのが、補正部２０５の機能である。
【０１１５】
各質点（端点３０３）について、補正部２０５は、ステップＳ５０８〜ステップＳ５１２の以下の処理を繰り返す（ステップＳ５０８）。まず、今回の繰返し未処理の質点（端点３０３）を１つ取得し（ステップＳ５０９）、当該端点３０３が障害物にめり込んでいるか否かを判断する（ステップＳ５１０）。
【０１１６】
具体的には、次の（ａ）（ｂ）の２種類の手法が考えられる。
（ａ）当該端点３０３の位置と、複数の障害物オブジェクト４０２のそれぞれと、を対比して、当該端点３０３が当該障害物オブジェクト４０２のいずれかに包含されているか否かを判定する。
【０１１７】
障害物オブジェクトの数が少ない場合に好適であり、交差するか否かをより適切に判断できる。
（ｂ）当該端点３０３の位置と、複数の障害物オブジェクト４０２のうち、当該端点３０３に対応付けられる旨、記憶部２０２に記憶されているもの（以下、当該対応付けられている障害物オブジェクト４０２を「補正用オブジェクト」という。）と、を対比して、当該端点３０３が当該補正用オブジェクトに包含されるか否かを判定する。
【０１１８】
典型的には、１つの端点３０３には、補正用オブジェクトが１つ対応付けられる。なお、１つの端点３０３に複数の障害物オブジェクト４０２を対応付けたい場合には、当該対応付けたい複数の障害物オブジェクト４０２を内部オブジェクトとして持つ１つの障害物オブジェクトを補正用オブジェクトとし、当該補正用オブジェクトが変形することとすれば良い。
【０１１９】
たとえば、スカートの布が足にまとわりつく状況を考えればわかる通り、スカートのある領域は専ら腿にまとわりつき、ある領域は専ら膝に、ある領域は専ら脛にまとわりつく。したがって、このような状況下では、腿にまとわりつく領域の質点（端点３０３）の補正用オブジェクトは、四角柱の障害物オブジェクト４０２とする、等の対応付けをすれば良い。
【０１２０】
手法（ａ）（ｂ）は、利用分野に応じて適宜選択すれば良い。
【０１２１】
そして、「交差」する、すなわち、当該端点３０３が障害物にめり込んでいると判定された場合（ステップＳ５１０；Ｙｅｓ）、当該端点３０３の位置情報を、当該補正用オブジェクトの形状、位置、速度および姿勢情報により補正して（ステップＳ５１１）、補正された結果の位置情報を記憶部２０２に記憶させ（ステップＳ５１２）、ステップＳ５０８に戻る。
【０１２２】
ここで、補正の手法について、具体的に説明する。代表的な手法は、以下の通りである。
（１）端点３０３の位置を、補正用オブジェクトの表面のうち、当該端点３０３に最も近い点もしくはその近傍に移動する。
（２）補正用オブジェクトに固定された座標系で考え、当該微小時間における端点３０３の位置の変化の経路が、補正用オブジェクトの表面と交わる点もしくはその近傍に移動する。
以下、順に説明する。
【０１２３】
まず、手法（１）は、補正用オブジェクトが、単純な形状であるときに特に容易に補正先の位置を求めることができる利点がある。
【０１２４】
図６は、手法（１）において、補正用オブジェクトが種々の形状の場合の、補正用オブジェクトと、端点３０３の補正前の位置と、補正後の位置との関係を示す説明図である。
【０１２５】
本図（ａ）に示すように、補正用オブジェクト６０１が球である場合は、球の中心６１１から端点３０３の補正前の位置６０２を通過する半直線を伸ばし、これが球面と交わった点６０３を補正後の位置とすれば良い。もしくは、当該球面内の交点からさらに所定の微小距離αだけ進んだ点６０４を補正後の位置としても良い。
【０１２６】
本図（ｂ）では、補正用オブジェクトが多面体（各種の直方体、立方体、正多面体、角柱、角錐台、台状体なども含まれる。）である場合を考えている。この場合は、端点３０３の補正前の位置６０２から、多面体の各面６１２に垂線６１３を下ろし、当該垂線６１３が最小距離となる面６１２に対する垂線６１３の足、すなわち、垂線６１３と面６１２の交点を補正後の位置とすれば良い。もしくは、当該最小距離となった垂線６１３と当該面６１２との交点６０３からさらに所定の微小距離αだけ進んだ点６０４を補正後の位置としても良い。
【０１２７】
本図（ｃ）では、補正用オブジェクトが円柱の場合を考えている。この場合は、円柱の中心軸６１４のいずれかの一点から始まる半直線６１５で、当該中心軸６１４と直交し、端点３０３を通過するものと、円柱の表面との交点６０３を補正後の位置とすれば良い。もしくは、当該半直線６１５が交点６０３からさらに所定の微小距離αだけ進んだ点６０４を補正後の位置としても良い。
【０１２８】
ここで採用する所定の微小距離αは、布状の物体のメッシュのサイズよりも小さいことが望ましい。すなわち、各線分状オブジェクト３０２の自然長の長さよりも小さい値としておくのが良い。
【０１２９】
次に、手法（２）は、端点３０３の物理モデルに基づく移動を追跡して、その経路が補正用オブジェクトと交わる交点を補正後の位置とするので、最も尤もらしい結果が得られるという利点がある。
【０１３０】
手法（２）を率直に実装する場合は、まず、補正用オブジェクト６０１に固定された移動座標系を考える。一般に当該移動座標系は、グローバル座標系に対して、更新の前後で移動ならびに回転している。
【０１３１】
次に、当該移動座標系内において、端点３０３が更新の前後でどのように移動するかを考える。移動座標系は、グローバル座標系に対して移動ならびに回転しており、端点３０３は、グローバル座標系に対して移動しているから、移動座標系内で、端点３０３は、移動ならびに回転することになる。
【０１３２】
しかしながら、移動ならびに回転する軌跡が、補正用オブジェクト６０１と交わる交点６０３を求めるのは、難しいことも多い。そこで、回転については無視することとし、補正用オブジェクト６０１の重心（もしくは中心や所定の代表点）の移動と、端点３０３の移動のみを考え、移動座標系は回転しないものとする手法を採用しても良い。すなわち、補正用オブジェクト６０１は、平行移動しているもの、として近似するのである。
【０１３３】
図７は、手法（２）において、そのような手法を採用した場合の考え方を示す説明図である。
【０１３４】
本手法では、補正用オブジェクト６０１は平行移動していると近似するのであるから、グローバル座標系においてその移動を表すベクトルをwとする。
【０１３５】
本図では、補正用オブジェクト６０１として円柱を考え、当該円柱の中心軸方向に各オブジェクトを平行投影した様子を図示している。したがって、本図では、補正用オブジェクト６０１の移動前（本図実線）と移動後（本図破線）は、いずれも円で表示されることとなる。
【０１３６】
一方、端点３０３は、グローバル座標系において、位置rからr'へ移動している。この位置r'は、移動後の補正用オブジェクト６０１の内側にある。
【０１３７】
ここで、端点３０３が補正用オブジェクト６０１と平行に移動したと過程すると、その移動先はグローバル座標系において、r+wである。この位置r+wは、移動後の補正用オブジェクト６０１の外側にある。
【０１３８】
そこで、グローバル座標系において、位置r+wと位置r'とを結ぶ線分６２１を考える。この線分６２１は、補正用オブジェクト６０１の外側と内側を結ぶのであるから、必ず補正用オブジェクト６０１と交わる交点６０３を持つはずである。そこで、交点６０３を、補正後の位置とするのである。
【０１３９】
また、位置r+wから始まり位置r'を通過する半直線６２２を考え、この半直線６２２が交点６０３からさらに所定の微小距離αだけ進んだ点６０４を補正後の位置としても良い。
【０１４０】
線分６２１と補正用オブジェクト６０１との交点６０３やさらに進んだ点６０４を求める手法については、公知の３次元グラフィックスにおける各種立体幾何の技術を適用することができる。
【０１４１】
なお、補正用オブジェクト６０１が姿勢も変えている場合には、当該線分６２１が補正用オブジェクト６０１との交点６０３を持たない場合もありうる。そのときは、当該線分６２１を伸ばした直線と補正用オブジェクト６０１との交点６０３のうち、r'に最も近い点やそのα近傍を補正後の位置とすれば良い。
【０１４２】
このように、ＣＰＵ  １０２は、各種演算コプロセッサがある場合は、当該コプロセッサと共働し、ＲＡＭ  １０３とも共働して、補正部２０５として機能する。
【０１４３】
なお、補正用オブジェクト６０１の表面のうち、交点６０３を探す際に、すべての表面を検討するのではなく、補正用面のみを検討する、という手法もありうる。
【０１４４】
上述の説明では、補正用オブジェクト６０１が有限長の円柱の場合であっても、天井と床の円は考慮せず、当該側面を含む無限長の円柱側面と線分や半直線等との交点を考慮していたが、これは、補正用面として、当該無限長の円柱側面を採用していることにほかならない。
【０１４５】
人間の足の部品を円柱で表す場合、天井と床の部分は人間の足の内部に相当するから、補正後の位置としてはふさわしくない。そこで、有限長の側面をそのまま無限に伸ばした無限長の円柱の側面を補正用面としていたのである。
【０１４６】
補正用オブジェクト６０１が多面体である場合、面の数が多すぎる場合には、当該補正用オブジェクト６０１を近似するもっと面の数の少ない多面体を考え、当該面の数の少ない近似多面体の表面を補正用面とするのである。
【０１４７】
近似多面体としては、たとえば、補正用オブジェクト６０１に外接する多面体を採用しても良いし、近似多面体の表面と補正用オブジェクト６０１の表面とが適宜交差するようなものを採用しても良い。
【０１４８】
このほか、補正用オブジェクト６０１の面のいずれかを適宜削除し、残った面をそのまま平面状に広げることによってできあがる新たな多面体を近似多面体としても良い。
【０１４９】
さて、このような処理によって、各端点３０３の位置情報等の更新（ステップＳ５０７）ならびに補正（ステップＳ５０８〜Ｓ５１２）が終了したら、前回の更新・補正と、今回の更新・補正との間に、垂直同期割り込みが発生したか否かを判断する（ステップＳ５１３）。
【０１５０】
発生した場合（ステップＳ５１３；Ｙｅｓ）、出力部２０６は、記憶部２０２に記憶される当該複数の線分状オブジェクト３０２の端点３０３の位置情報と、当該複数の障害物オブジェクト４０２の形状、位置および姿勢情報と、から、これらのオブジェクトの様子を示す画像を生成して、フレームメモリに出力する（ステップＳ５１４）。このように処理を行うことによって、垂直同期割り込みと同じ周期で、３次元グラフィックス画像が生成され、フレームメモリに蓄積される。
【０１５１】
フレームメモリに記憶された画像情報は、垂直同期割り込みの周期でビデオ信号に変換され画像処理部１０７に接続されるモニタへ出力される。これによって、本シミュレーション装置２０１により生成された仮想３次元空間の様子が、画面にアニメーション表示されることになる。
【０１５２】
ステップＳ５１４の処理終了後、もしくは、垂直同期割り込みが発生していない場合（ステップＳ５１３；Ｎｏ）、今回の繰返しの開始時点であるステップＳ５０２からの経過時間を取得し、当該経過時間が当該所定の微小時間dtとなるまで待機して（ステップＳ５１５）、ステップＳ５０２に戻る。当該待機時間の間には、たとえば、ユーザからの指示入力をチェックしたりする等、他の必要な処理を適宜実行することができる。
【０１５３】
これによって、微小時間dtが、更新部２０４による更新の時間間隔（すなわち、補正部２０５による補正の時間間隔）に等しくなるため、現実の時間が経過するのに合わせて、記憶部２０２に記憶されるオブジェクトの形状、位置、速度、姿勢情報が変化することとなる。したがって、垂直同期割り込みごとに画面表示を行えば、仮想３次元空間内の各オブジェクトが運動する様を、現実世界のものと同様に提示することができる。
【０１５４】
このように、本実施形態では、仮想３次元空間において、布状のオブジェクトが、ある形状を有するオブジェクトと衝突する様子をシミュレートすることができるようになる。
【０１５５】
さて、上記の説明では、端点３０３の位置の補正の処理の繰り返し（ステップＳ５０８〜Ｓ５１２）は、常に、すべての端点３０３について処理を行っていた。しかしながら、端点３０３の位置補正の計算は、一般に重い処理となることが多い。そこで、以下では、位置補正の処理をうまく省略する技術について説明する。
【０１５６】
すなわち、補正部２０５は、更新部２０４による更新が出力部２０６により画像が生成される直前の更新である場合、端点の全部を補正の対象とし、そうでない場合は、端点の一部を補正の対象とするのである。
【０１５７】
端点の一部を選択する手法としては、以下のようなものが考えられる。まず、微小時間dtを垂直同期割り込みの周期の1/(m+1)倍（mは２以上の整数）に等しいものとする。
【０１５８】
そして、端点３０３をm個のグループに分類する。この際、線分状オブジェクト３０２を介して互いに隣り合う端点３０３は、できるだけ異なるグループに属するように分類することが望ましい。また、端点３０３は、複数のグループに重複して含まれることとしても良い。
【０１５９】
また、i (1≦i≦m)番目のグループに含まれる端点３０３は、これによってモデル化される布状の物体にできるだけ均一に分散することが望ましい。上記のようにdtを決めると、１回の垂直同期周期の間に、更新はm+1回行われることになる。
【０１６０】
図８は、このような処理を行う場合の制御の流れを示すフローチャートであり、本制御の流れは、図５に示すものと共通するものが多いため、共通する部分については、同じステップ番号を採用することとし、以下、変更された部分を中心に図示して、共通する部分の大半は図示を省略している。
【０１６１】
まず、ステップＳ５０１における初期化では、ＲＡＭ  １０３に用意された整数カウンタ変数sに適当な整数定数Cを設定しておく（ステップＳ５０１）。
【０１６２】
そして、線分状オブジェクト３０２の端点３０３の位置等の情報、および、障害物オブジェクト４０２の位置等の情報の更新（ステップＳ５０２〜ステップＳ５０７）が終了した後、前回の更新と、今回の更新との間に、垂直同期割り込みが発生したか否かを判定する（ステップＳ８０１）。
【０１６３】
発生していた場合（ステップＳ８０１；Ｙｅｓ）、すべての端点３０３を処理対象として、ステップＳ５０８〜Ｓ５１２と同様の補正処理を行う（ステップＳ８０２）。さらに、出力部２０６に３次元グラフィックス画像情報を出力させ（ステップＳ５１４）、待機して（ステップＳ５１５）、ステップＳ５０２に戻る。
【０１６４】
一方、発生していなかった場合（ステップＳ８０１；Ｎｏ）、(s mod m) + 1番目のグループに属する端点３０３のみを処理対象として、ステップＳ５０８〜Ｓ５１２と同様の補正処理を行う（ステップＳ８０３）。ここで、s mod mは、sをmで割ったときの余りを意味する。
【０１６５】
そして、カウンタ変数sの値を１増やし（ステップＳ８０４）、ステップＳ５１５に進む。
【０１６６】
これによって、１回の垂直同期周期の間に、各グループに対する補正が１回行われ（合計m回行われ）、垂直同期割り込みが生じた直後にすべての端点に対する補正が１回行われることになる。
【０１６７】
なお、dtを必ずしも垂直同期周期の1/(m+1)倍としなくとも良い。この場合は、カウンタ変数sの値に応じて、各グループに対する補正処理が均等に行われることになる。
【０１６８】
本態様では、補正処理を適切に間引くことによって、他の処理にＣＰＵ時間をまわすことができるようになる一方で、画像出力直前では全端点について補正を行うので、端点が障害物にめり込む事態は生じない。したがって、計算量と正確さのトレードオフを適切に考慮したシミュレーションを行うことができるようになる。
【実施例２】
【０１６９】
上記実施形態の一例においては、補正用オブジェクトの代表点（重心、中心等）の移動量のみを考慮し、補正用オブジェクトの回転量については考慮せずに、補正用オブジェクトに対する端点の移動の軌跡を求め、当該軌跡と補正用オブジェクトの表面の交点を求めて、端点の位置を当該交点に移動していた。
【０１７０】
本実施形態は、上記実施形態と同様の構成を採用するが、交点を求める際に、補正用オブジェクトの回転量も考慮する点が異なる。
【０１７１】
図９は、上記実施形態と本実施形態における、交点の求め方を説明する説明図である。なお、本図では、理解を容易にするため、各移動量や回転量は、誇張して記載してある。
【０１７２】
図９（ａ）には、端点３０３と補正用オブジェクト６０１の移動の様子を示す。図９（ａ）に示すように、端点３０３の移動前の位置９０１は、補正用オブジェクト６０１の移動前の位置９１１の外側にある。そして、端点３０３は移動後の位置９０２は、補正用オブジェクト６０１の移動後の位置９１２の内部に包含されることとなっている。そして、補正用オブジェクト６０１の移動前の位置９１１と移動後の位置９１２では、補正用オブジェクトは回転している。理解を容易にするため、移動前の位置は実線で、移動後の位置は１点破線で、それぞれ示している。
【０１７３】
図９（ｂ）は、上記実施形態における交点の求め方を示すものである。すなわち、補正用オブジェクト６０１の移動後の位置９１２にかえて、補正用オブジェクト６０１は移動に際して回転しないものと近似して、その中心を平行移動した位置９１３（図中細い点線で示す。）に移動させる。
【０１７４】
そして、位置９１１から位置９１３への移動ベクトルと同じ量だけ、端点３０３の移動前の位置９０１を移動させ、位置９０２と位置９０３を結ぶ線分と、位置９１３に移動した補正用オブジェクト６０１との交点９２１を、端点３０３の補正後の位置とする（この位置は、補正用オブジェクト６０１を基準としている）。
【０１７５】
図９（ｃ）は、本実施形態における交点の求め方を示すものである。すなわち、移動前の位置９１１における補正用オブジェクト６０１に対して、端点３０３の移動前の位置９０１の相対的な位置を考える（図中矢印と細い一点破線）。
【０１７６】
そして、このベクトル（図中、補正用オブジェクト６０１の中心から伸びる矢印）を、補正用オブジェクト６０１の移動量と回転量と同じだけ移動させる。これによって、微小時間が経過する前の端点３０３の補正用オブジェクト６０１に対する相対的な位置９５２が、（補正用オブジェクト６０１の微小時間経過後の移動先の位置９１２を基準として）求められる（図中矢印と細い一点破線の移動後）。
【０１７７】
そこで、位置９０２と位置９５２とを結ぶ線分と、位置９１２に移動した補正用オブジェクト６０１との交点９５３を、端点３０３の補正後の位置とする（この位置は、補正用オブジェクト６０１を基準としている）。
【０１７８】
なお、回転移動と平行移動の順序を変えたり、方向を逆にするなどした本手法と均等な手法を採用することもできる。このようにして、補正用オブジェクト６０１の表面に得られる交点として同じ位置のものを得る手法は、いずれも本発明の範囲に含まれる。
【０１７９】
本手法は、計算機の能力の制限から微小時間を長くとらざるを得ない場合や、上記実施形態のように本手法によれば、端点３０３の補正の間引きを行う場合に特に好適で、端点３０３が障害物オブジェクト４０２をすり抜けてしまうような状況を、できるだけ防止することができるようになる。
【産業上の利用可能性】
【０１８０】
以上説明したように、布状体と当該布状体が交差しない障害物との仮想３次元空間における移動をシミュレートして、たとえばスカートが人の足にまとわりつくような状況を近似的に再現するのに好適な、シミュレーション装置、シミュレート方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができ、たとえばゲームの分野において、上記のような状況の３次元グラフィックスを高速に表示する等に適用することができる。
【図面の簡単な説明】
【０１８１】
【図１】本発明の実施形態の１つに係るシミュレーション装置が実現される典型的な情報処理装置の概要構成を示す説明図である。
【図２】本発明の実施形態の１つに係るシミュレーション装置の概要構成を示す模式図である。
【図３】線分状オブジェクトとその端点の様子を示す説明図である。
【図４】仮想３次元空間内における障害物オブジェクトと線分状オブジェクトの関係を示す説明図である。
【図５】本実施形態におけるシミュレーション処理の制御の流れを示す模式図である。
【図６】補正用オブジェクトと、端点の補正前の位置と、補正後の位置との関係を示す説明図である。
【図７】補正用オブジェクトと、端点の補正前の位置と、補正後の位置との関係を示す説明図である。
【図８】本実施形態におけるシミュレーション処理の制御の流れを示す模式図である。
【図９】本発明の実施形態における補正において交点を求める手法を説明する説明図である。
【符号の説明】
【０１８２】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
１１１  マイク
２０１  シミュレーション装置
２０２  記憶部
２０３  計算部
２０４  更新部
２０５  補正部
２０６  出力部
３０１  布状の物体のモデル
３０２  線分状オブジェクト
３０３  端点
４０１  仮想３次元空間
４０２  障害物オブジェクト
４１２  腿
４１３  膝の関節
４１４  脛
４１５  足首の関節
４１６  足先
６０１  補正用オブジェクト
６０２  補正前の位置
６０３  交点（補正後の位置の候補）
６０４  交点から進んだ位置（補正後の位置の候補）
６１１  球の中心
６１２  多面体の面
６１３  垂線
６１４  円柱の中心軸
６１５  半直線
６２１  線分
６２２  半直線
【図１】
2006146807.tif 000003
【図２】
2006146807.tif 000004
【図３】
2006146807.tif 000005
【図４】
2006146807.tif 000006
【図５】
2006146807.tif 000007
【図６】
2006146807.tif 000008
【図７】
2006146807.tif 000009
【図８】
2006146807.tif 000010
【図９】
2006146807.tif 000011