説明

シミュレーション装置、シミュレート方法、ならびに、プログラム

【課題】 布状体と当該布状体が交差しない障害物との仮想3次元空間における移動をシミュレートするシミュレーション装置等を提供する。
【解決手段】 シミュレーション装置201の記憶部202は、線分状オブジェクトの端点の位置等の情報と障害物オブジェクトの位置等の情報を記憶し、計算部203は、所定の物理法則に基づいて、端点や障害物オブジェクトの微小時間後の端点の位置等を計算し、更新部204は、記憶部202に記憶される各オブジェクトの位置等の情報を計算された結果で更新し、補正部205は、端点が障害物オブジェクトに包含される場合、当該端点の位置を障害物オブジェクトの表面に補正し、出力部206は、所定の周期で各オブジェクトの様子を画面表示用に出力し、補正部205は、更新部204による更新が出力部206による出力の直前であればすべての端点について補正をし、そうでなければ一部の端点について補正をする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、布状体と当該布状体が交差しない障害物との仮想3次元空間における移動を模擬実験して、たとえばスカートが人の足にまとわりつくような状況を近似的に再現するのに好適な、シミュレーション装置、シミュレート方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【0002】
従来から、3次元グラフィックスの分野では、布などの動的に形状が変化するオブジェクトをシミュレート(simulate;模擬、模倣)するための技術が提案されている。このような技術はクロスアニメーション(cloth animation)と呼ばれることもあり、現実の物理現象のシミュレーション(simulation;模擬実験)に相当するものである。たとえば以下の文献に、その技術が開示されている。
【非特許文献1】こてつ、3D動きのアルゴリズム、PART2 人体と衣服のモデルの動作原理、Cマガジン2000年9月号、第20頁〜第23頁、ソフトバンクパブリッシング発行、2000年9月1日発行
【0003】
このような技術では、1枚の布を、当該布の表面状に配置されると想定される複数の質点と、質点同士を結ぶバネとでモデル化し、微分方程式や差分方程式を数値計算により解く技術を適用して、質点同士の距離からバネに生ずる張力を計算し、当該張力により各質点の微小時間における移動を求め、当該質点を移動させることによって、布の変形をシミュレートしていた。
【0004】
そして、[非特許文献1]には、質点のうち限られたものについて位置の拘束条件が課せられた場合(四角形の布の上端の2つの隅が固定されている場合)についてのシミュレーションの結果が開示されている。
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、リアルな3次元グラフィックスを実現するためには、スカートの布が人間の足にまとわりついたりする場合など、布状体と、当該布状態が交差しない障害物との移動をシミュレートする手法が強く求められている。
【0006】
一方で、上記のモデル化によれば、質点およびバネのいずれも、障害物にその一部や全部が包含されてはならない、という拘束条件が課せられることとなるが、このようなシミュレーションの結果を提示する分野によっては、近似的手法によって、高速なシミュレーションを可能にしたい、との要望も強い。
【0007】
本発明は、上記のような課題を解決するためになされたもので、布状体と当該布状体が交差しない障害物との仮想3次元空間における移動をシミュレーションして、たとえばスカートが人の足にまとわりつくような状況を近似的に再現するのに好適な、シミュレーション装置、シミュレート方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0009】
本発明の第1の観点に係るシミュレーション装置は、伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想3次元空間内で移動する様子をシミュレーションし、記憶部、計算部、更新部、補正部、出力部を備え、以下のように構成する。
【0010】
すなわち、記憶部は、当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、を記憶し、当該複数の端点のそれぞれに、当該複数の障害物オブジェクトのいずれかを補正用オブジェクトとして対応付けて記憶する。
【0011】
ここで、線分状オブジェクトは、バネをモデル化したものであり、線分状オブジェクトの端点は、質点をモデル化したものである。したがって、線分状オブジェクトとその端点によって、布状の物体をモデル化することなる。一方、障害物オブジェクトは、当該仮想3次元空間内で、当該布状の物体と衝突しうるものをモデル化したものである。たとえば、布状の物体が、スカートの布である場合、障害物オブジェクトは、人間の足に相当することになる。
【0012】
なお、障害物オブジェクトとしては、変形しないもののほか、変形するものを考えることができる。たとえば、人間の足をモデル化する場合には、片足をもも部、すね部、足首からつま先部の3つの変形しない内部オブジェクトに分割し、その間を関節により接続して自由度を制限し、外力や筋肉モデルによる内力が伝達されるようにする。
【0013】
一方、計算部は、記憶部に記憶された当該複数の端点のそれぞれの位置および速度情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する。
【0014】
線分状オブジェクトはバネをモデル化したものであるので、自然長より長くなれば(端点が遠ざかれば)、端点同士を引っ張り合う張力が生じ、自然長より短くなれば(端点が近付けば)、端点同士を離す方向の負の張力(反発力)が生じる。この張力の大きさは、バネの現在の長さとその自然長との差に比例することとするのがもっとも単純なモデルであるが、たとえば、しわになりやすい布をシミュレートするために反発力は一切生じないものとしたり、堅い布をシミュレートするために一定以上の長さになると極めて大きな反発力が生じるものとしたりすることができ、張力の決め方には種々の技法を採用することができる。
【0015】
一方、障害物オブジェクトは、一般の仮想3次元空間におけるオブジェクトの運動をシミュレートして、位置、姿勢を求めれば良い。また、障害物オブジェクトが複数の変形しない内部オブジェクトからなる場合は、内部オブジェクト同士の接続関係も考慮して外力や内力、接続関係の拘束条件等計算を行うことにより、それぞれの位置を求めれば、障害物オブジェクトがどのように変形するか判明する。
【0016】
さらに、更新部は、当該複数の端点のそれぞれが当該微小時間の後に移動すべきと計算された位置を、当該線分状オブジェクトの端点の位置および速度情報として記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置、速度および姿勢情報として記憶部に記憶させて、記憶部に記憶される情報を当該微小時間の後の情報に更新する。
【0017】
これによって、記憶部には、各オブジェクトの形状、位置、姿勢情報が記憶されることになる。
【0018】
そして、補正部は、更新部による更新が行われる毎に、当該複数の端点の一部または全部を補正の対象とし、当該補正の対象となる端点が当該複数の障害物オブジェクトのいずれかに包含されるか否かを判断し、包含される場合、当該包含される端点の位置を、当該端点に対応付けられて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、補正した位置を、当該端点の位置および速度情報として記憶部に記憶させ、記憶部に記憶される情報を補正する。
【0019】
上記の例でいえば、スカートが足の中に入り込むことはなく、布は足の表面にとどまる。これをシミュレートするために、本発明では、布の形状を表す端点(質点)を結ぶ線分状オブジェクトが、足の形状を表す障害物オブジェクトと交差するか否か、を判定するものとする。ここで、「交差」するか否かの判定には、後述するような種々の技術を採用することができる。
【0020】
本発明では、線分状オブジェクトが「いずれか」の障害物オブジェクトと交差する場合に、当該線分状オブジェクトの端点に対応付けられる補正用オブジェクトの表面の近傍に、当該端点を移動することによって、両者が交差しないように、位置を補正するのである。
【0021】
一方、出力部は、記憶部に記憶される当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置および姿勢情報と、から、これらのオブジェクトの様子を示す画像を所定の周期で生成して出力する。
【0022】
典型的には、所定の周期は、テレビジョン装置などの垂直同期信号の割り込み周期であり、生成された画像は一時的にフレームメモリに記憶され、垂直同期割り込みに合致したタイミングで、フレームメモリの情報が画面への表示用の信号に変換されて出力される。
【0023】
さらに、当該所定の周期は当該所定の微小時間の2倍以上の長さであり、補正部は、更新部による更新が出力部により画像が生成される直前の更新である場合、当該複数の端点の全部を補正の対象として補正を行い、更新部による更新が出力部により画像が生成される直前の更新でない場合、当該複数の端点の一部を補正の対象として補正を行う。
【0024】
これにより、重い計算処理を要する補正の処理を、画面表示等の直前ではすべての端点について行い、それ以外では一部の端点について行うことで、トレードオフの関係にあるより正確なシミュレーションと計算量の低減との適切な調整を図る。
【0025】
このように、本発明により、仮想3次元空間において、布状のオブジェクトが、ある形状を有するオブジェクトと衝突する様子を適切な計算量でシミュレートすることができるようになる。
【0026】
また、本発明のシミュレーション装置において、整数m (2≦m)、整数i (1≦i≦m)について、当該所定の周期は、当該所定の微小時間の(m+1)倍の長さであり、当該複数の端点は、記憶部に、1番目からm番目までのm個のグループに分類されて記憶され、更新部による更新が出力部により画像が生成される直前の更新(以下、「0番目の更新」という。)から数えてi番目の更新である場合、当該複数の端点のうち記憶部にi番目のグループに分類されて記憶される端点を補正の対象として補正を行うように構成することができる。
【0027】
本発明では、1回の周期において、端点を分類するm個のグループがそれぞれ1回ずつ補正され、画面表示の直前では、全端点について補正が行われる。したがって、本発明によれば、適切な補正を行いつつ計算量の低減を図ることができる。
【0028】
また、本発明のシミュレーション装置において、整数m (2≦m)、整数s、定数の整数Cについて、当該所定の周期は、当該所定の微小時間の(m+1)倍以上の長さであり、当該複数の端点は、記憶部に、1番目からm番目までのm個のグループに分類されて記憶され、更新部による更新が出力部により画像が生成される直前の更新でない更新のうち、s回目の更新である場合、当該複数の端点のうち記憶部に((s+C) mod m) + 1番目のグループに分類されて記憶される端点を補正の対象として補正を行うように構成することができる。
【0029】
本発明では、端点を分類するm個のグループがそれぞれ同じ程度の頻度で補正され、画面表示の直前では、全端点について補正が行われる。したがって、本発明によれば、適切な補正を行いつつ計算量の低減を図ることができる。
【0030】
また、本発明のシミュレーション装置において、記憶部は、当該複数の端点のそれぞれについて、当該端点が、当該端点と線分状オブジェクトを介して隣接する他の端点とは、異なるグループに分類されるように記憶するように構成することができる。
【0031】
本発明では、隣り合う端点を別のグループに分類することにより、端点のグループができるだけ均一に分散されることとなる。したがって、本発明によれば、計算量の低減を図りながら、より正確なシミュレーションを行うことができる。
【0032】
また、本発明のシミュレーション装置において、補正部は、当該補正の対象となる端点のそれぞれについて、当該端点の位置が、当該端点に対応付けられて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、当該補正用オブジェクトに包含される場合、当該端点の更新前の位置を当該補正用オブジェクトの当該更新による移動と同じ方向に同じ距離だけ移動した位置と、当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正するように構成することができる。
【0033】
すなわち、端点(質点、布の表面に配置される点)が、障害物の内部に含まれる(スカートの布の表面の点が足の中にめり込んでしまっている)場合に、「交差」が生じる、と判断するものである。
【0034】
本発明では、すべての障害物オブジェクトのそれぞれと、端点のそれぞれと、を順次対比して、包含されるか否かを判定するのではなく、端点のそれぞれについて、当該端点が、当該端点にあらかじめ対応付けられた補正用オブジェクト(障害物オブジェクトのいずれかである)に包含されるか否かを判断して「交差」を判定するので、計算処理を高速に行うことができる一方で、交差が生じる場合には、適切な場所に端点の位置を移動することができるようになる。
【0035】
また、本発明のシミュレーション装置であって、補正部は、当該補正の対象となる端点のそれぞれについて、当該端点の位置が、当該複数の障害物オブジェクトについて記憶部に記憶される形状、位置、速度および姿勢情報により、当該複数の障害物オブジェクトのいずれかに包含される場合、当該端点の更新前の位置を当該補正用オブジェクトの当該更新による移動と同じ方向に同じ距離だけ移動した位置と、当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正するように構成することができる。
【0036】
本発明においても、端点(質点、布の表面に配置される点)が、障害物の内部に含まれる(スカートの布の表面の点が足の中にめり込んでしまっている)場合に、「交差」が生じる、と判断するのは、上記のものと同様である。
【0037】
本発明では、すべての障害物オブジェクトのそれぞれと、端点のそれぞれと、を順次対比して、包含されるか否かを判定して、「交差」を判定するので、本発明によれば、より正確な交差判定ができる一方で、交差が生じる場合には、適切な場所に端点の位置を移動することができるようになる。
【0038】
また、本発明のシミュレーション装置において、記憶部に記憶される補正用オブジェクトの形状が円柱である場合、補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該円柱の中心軸のいずれかの点から開始され、当該中心軸に直交し、当該補正前の端点の位置を通過する半直線が、当該円柱の表面と交差する位置を、当該端点の補正後の位置とするように構成することができる。
【0039】
本発明は、補正用オブジェクトが円柱である場合の、端点の近傍を定める一つの手法を開示するものであり、本発明によれば、簡易に端点の位置の補正を行うことができるようになる。
【0040】
また、本発明のシミュレーション装置において、記憶部に記憶される補正用オブジェクトの形状が円柱である場合、補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該円柱の中心軸のいずれかの点から開始され、当該中心軸に直交し、当該補正前の端点の位置を通過する半直線が、当該円柱の表面と交差する位置からさらに所定の微小距離だけ進んだ位置を、当該端点の補正後の位置とするように構成することができる。
【0041】
本発明は、補正用オブジェクトが円柱である場合の、端点の近傍を定める一つの手法を開示するものであり、本発明によれば、簡易に端点の位置の補正を行うことができるようになる。
【0042】
また、本発明のシミュレーション装置において、記憶部に記憶される補正用オブジェクトの形状が多面体であり、当該多面体の面のうち、いずれか1つ以上が補正用面として設定される場合、補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該多面体の補正用面として設定された面のうち、当該端点に最も近いものに下ろした垂線が当該側面と交差する位置を、当該端点の補正後の位置とするように構成することができる。
【0043】
本発明は、補正用オブジェクトが多面体(直方体や角柱、角錐台、正多面体などの凸多面体のほか、凹多面体など、任意の形状の多面体)である場合の、端点の近傍を定める一つの手法を開示するものであり、本発明によっても、簡易に端点の位置の補正を行うことができるようになる。
【0044】
また、本発明のシミュレーション装置において、記憶部に記憶される補正用オブジェクトの形状が多面体であり、当該多面体の面のうち、いずれか1つ以上が補正用面として設定される場合、補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該多面体の補正用面として設定された面のうち、当該端点に最も近いものに下ろした垂線が当該補正用面と交差する位置からさらに所定の微小距離だけ進んだ位置を、当該端点の補正後の位置とするように構成することができる。
【0045】
本発明は、補正用オブジェクトが多面体(直方体や角柱、角錐台、正多面体などの凸多面体のほか、凹多面体など、任意の形状の多面体)である場合の、端点の近傍を定める一つの手法を開示するものであり、本発明によっても、簡易に端点の位置の補正を行うことができるようになる。
【0046】
本発明のその他の観点に係るシミュレート方法は、伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想3次元空間内で移動する様子をシミュレーションし、記憶部、計算部、更新部、補正部、出力部を備えるシミュレーション装置にて実行され、計算工程、更新工程、補正工程、出力工程を備え、以下のように構成する。
【0047】
ここで、記憶部には、当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、が記憶され、当該複数の端点のそれぞれが当該複数の障害物オブジェクトのいずれかに補正用オブジェクトとして対応付けて記憶される。
【0048】
さて、計算工程では、計算部が、記憶部に記憶された当該複数の端点のそれぞれの位置および速度情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する。
【0049】
一方、更新工程では、更新部が、当該複数の端点のそれぞれが当該微小時間の後に移動すべきと計算された位置を、当該線分状オブジェクトの端点の位置および速度情報として記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置、速度および姿勢情報として記憶部に記憶させて、記憶部に記憶される情報を当該微小時間の後の情報に更新する。
【0050】
さらに、補正工程では、更新部が、更新部による更新が行われる毎に、当該複数の端点の一部または全部を補正の対象とし、当該補正の対象となる端点が当該複数の障害物オブジェクトのいずれかに包含されるか否かを判断し、包含される場合、当該包含される端点の位置を、当該端点に対応付けられて記憶部に記憶される補正用オブジェクトの形状、位置、速度および姿勢情報により、補正した位置を、当該端点の位置および速度情報として記憶部に記憶させ、記憶部に記憶される情報を補正する。
【0051】
そして、出力工程では、出力部が、記憶部に記憶される当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置および姿勢情報と、から、これらのオブジェクトの様子を示す画像を所定の周期で生成して出力する。
【0052】
一方、当該所定の周期は当該所定の微小時間の2倍以上の長さである。
【0053】
さらに、補正工程では、更新工程による更新が出力工程により画像が生成される直前の更新である場合、当該複数の端点の全部を補正の対象として補正を行い、更新部による更新が出力部により画像が生成される直前の更新でない場合、当該複数の端点の一部を補正の対象として補正を行う。
【0054】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0055】
本発明によれば、布状体と当該布状体が交差しない障害物との仮想3次元空間における移動をシミュレートして、たとえばスカートが人の足にまとわりつくような状況を近似的に再現するのに好適な、シミュレーション装置、シミュレート方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【0056】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム装置として動作する情報処理装置に対して本発明が適用される実施形態を説明するが、各種のコンピュータ、PDA(Personal Data Assistants)、携帯電話などの情報処理装置においても同様に本発明を適用することができる。すなわち、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例1】
【0057】
図1は、本発明のシミュレーション装置が実現される典型的な情報処理装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【0058】
情報処理装置100は、CPU 101と、ROM 102と、RAM 103と、インターフェイス104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD−ROMドライブ108と、NIC(Network Interface Card)109と、音声処理部110とを備える。
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態のシミュレーション装置が実現される。
【0059】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0060】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0061】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0062】
インターフェイス104を介して接続されたコントローラ105は、ユーザがアクションゲームなどのゲーム実行の際に行う操作入力を受け付ける。
【0063】
インターフェイス104を介して着脱自在に接続された外部メモリ106には、対戦ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、対戦に伴うチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0064】
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データ、動画情報データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0065】
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)にバッファリング記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。このような画像処理部107の処理は、CPU 101の演算処理とは並行して行うことができる。
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0066】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。フォント情報は、ROM 102に記録されているが、DVD−ROMに記録された専用のフォント情報を利用することも可能である。
【0067】
このほか、DVD−ROMに記録された動画情報や、これをあらかじめRAM 103等に転送した場合の動画情報は、画像処理部107によって、画面の所定の領域にスーパーインポーズするような形式で、動画表示を行うことができる。
【0068】
さて、NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
【0069】
インターネット内のSNTPサーバにNIC 109を介して接続し、ここから情報を得ることによって現在の日時情報を得ることができる。また、各種のネットワークゲームのサーバ装置が、SNTPサーバと同様の機能を果たすように構成設定してもよい。
【0070】
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
【0071】
さらに、情報処理装置100には、インターフェース104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部110でのミキシング等の処理ができるようにする。情報処理装置100をゲーム装置として利用する場合には、マイク111から入力された音声データを指示入力データとして、コントローラ105のかわりに入力デバイスとして用いることも可能である。
【0072】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0073】
また、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置100にかえて、汎用のパーソナルコンピュータを利用することもできる。
【0074】
一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NICを備え、ゲームにおける画面表示には必ずしも特化していない画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっているのが一般的である。また、コントローラではなく、キーボードやマウスなどを入力装置として利用する。
したがって、このような一般的なコンピュータを、本発明のシミュレーション装置として動作させることも可能である。
【0075】
図2は、本発明の実施例に係るシミュレーション装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【0076】
シミュレーション装置201は、伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想3次元空間内で移動する様子をシミュレートし、記憶部202、計算部203、更新部204、補正部205、出力部206を備える。
【0077】
記憶部202は、当該複数の線分状オブジェクトの端点の位置および速度情報と、当該複数の障害物オブジェクトの形状、位置、速度および姿勢情報と、を記憶し、当該複数の端点のそれぞれに、当該複数の障害物オブジェクトのいずれかを補正用オブジェクトとして対応付けて記憶する。
【0078】
図3は、線分状オブジェクトとその端点の様子を示す説明図である。
【0079】
図3に示すように、布状の物体のモデル301として、バネのように振舞う線分状オブジェクト302を網目状に結合する。そして、その結合される端点303を質点とする。各端点303が均一に分布する場合には、当該布状の物体の質量を端点303の総数で割った質量を、各端点303の質点の質量とすれば良い。
【0080】
布状の物体が自然な状態(外力がかかっていない状態)のときの各質点の位置を決め、そのときの質点(端点)同士の距離を線分状オブジェクト302の自然長とする。したがって、自然長を適宜調整することによって、立体的な形状(たとえば、しわやひだのある形状)の布をモデル化することも可能である。
【0081】
図3(a)は、質点(端点303)を正三角形のメッシュの頂点に配置し、正三角形の辺に線分状オブジェクト302を配置する手法である。なお、有限要素法などで用いられる領域分割と同様、三角形の形状としては、必ずしも正三角形を利用する必要はなく、また、布状の物体の縁近傍では、正三角形を採用できない場合もある。このような場合には、できるだけ、正三角形に近い形状(細長くない形状)を採用することが望ましい。
【0082】
図3(b)は、質点(端点303)を格子点に配置し、格子点が頂点となる正方形のメッシュの辺に線分状オブジェクト302を配置する手法である。図3(a)、(b)の手法では、殆どの線分状オブジェクト302が同じ長さとなるため、計算の単純化を図ることが可能である。
【0083】
図3(c)は、図3(b)の手法に加えて、さらに、正方形のメッシュの対角線にも線分状オブジェクト302を配置する手法である。この手法では、長さの異なる2種類の線分状オブジェクト302を利用することとなるため、計算は少々複雑になるが、より自然な布の変形を表現することが可能となる。
【0084】
線分状オブジェクト302はバネをモデル化したものであるから、最も単純な手法では、自然長よりも伸びた場合は、その伸び長に比例する張力で端点同士が引っぱられ、自然長よりも縮んだ場合は、その縮み長に比例する反発力(負の張力)で端点同士が遠ざけられる方向に力が働くことになる。
【0085】
このように、線分状オブジェクト302は、バネをモデル化したものであり、線分状オブジェクト302の端点303は、質点をモデル化したものである。したがって、線分状オブジェクト302とその端点303によって、布状の物体をモデル化するのである。
【0086】
一方、障害物オブジェクトは、当該仮想3次元空間内で、当該布状の物体と衝突しうるものをモデル化したものである。たとえば、布状の物体が、スカートの布である場合、障害物オブジェクトは、人間の足に相当する。
【0087】
図4は、仮想3次元空間内における障害物オブジェクトと線分状オブジェクトの関係を示す説明図である。図4(a)は、仮想3次元空間内に、片足を模した形状のオブジェクトと線分状オブジェクトが配置される様子を示しており、図4(b)は、片足を模した形状のオブジェクトを、より単純な形状の障害物オブジェクトで表現した様子が示されている。
【0088】
本図に示すように、人間の片足の腿412、膝の関節413、脛414、足首の関節415、足首よりつま先までの足先416は、それぞれ、四角柱の障害物オブジェクト402a、球の障害物オブジェクト402b、円柱の障害物オブジェクト402c、球の障害物オブジェクト402d、台状体の障害物オブジェクト402eによって表現されている。
【0089】
この5つの障害物オブジェクト402については、四角柱402aの底面の中心は球402bに接し、円柱402cの底面の中心は球402bおよび球402dに接し、台状体402eの上面の所定の点が球402dに接する、という拘束条件のもとで運動をすることによって、人間の足をシミュレートしている。このほか、足をシミュレートするために、各部に加わる力や膝、足首を曲げ、伸ばそうとする力を種々の筋肉モデルによって設計して、内力や各種の外力が伝達されるようにして、物理シミュレーションを行うことができるようにしている。このような、人体の物理的なシミュレーションについては、種々の公知の技術を適用することができる。
【0090】
さて、本図に示すように、障害物オブジェクト402の外側には、線分状オブジェクト302およびその端点303により構成される布状の物体のモデル301が配置されることになる。
【0091】
スカートの布が人間の足にめり込むことがないのと同様、線分状オブジェクト302の端点303が障害物オブジェクト402にめり込むことがないようにしなければならない。
【0092】
一方、布状の物体を実際に三次元グラフィックス描画することを考えた場合、各メッシュの頂点(端点303)と障害物オブジェクト402との遠近を判定し、どちらがどちらの前にあるかを調べてから、Zバッファ法によりメッシュにテクスチャを貼り込むこととなる。
【0093】
したがって、線分状オブジェクト302の線分の一部が障害物オブジェクト402の表面にめり込むことがあったとしても、実用上は問題がないことが多い。この場合は、必要な精度で布状の物体をシミュレートできる程度にメッシュを細かくしておけば十分である。
【0094】
このように、以下の実施形態では、「線分状オブジェクト302と障害物オブジェクト402との交差」を、「障害物オブジェクト402の内部に線分状オブジェクト302のいずれかの端点が包含される」こととして取り扱うものとする。その詳細は後述する。
【0095】
もっとも、適用分野によっては、「交差しない」ということを、線分状オブジェクト302全体が常に障害物オブジェクト402よりも外側にある(少なくとも障害物オブジェクト402の表面に接する)ことによって定義した方が良いこともある。このような場合についても後述する。
【0096】
なお、上記の説明では、人間の腿、膝関節、脛、足首、足首より先つま先まで、の5つの部分を5個の障害物オブジェクト402として取り扱うこととしたが、これらを1個の変形する障害物オブジェクト402として取り扱っても良い。すなわち、1個の障害物オブジェクト402が、自由度を拘束する条件によって接続された複数の(単純な形状の)内部オブジェクトから構成されることとし、各内部オブジェクト同士は、種々の筋肉モデル等により内力が伝達されて、変形する、ということとするものである。
【0097】
さて、上述のように、記憶部202には、このような各種オブジェクトの位置情報、速度情報、姿勢情報、形状情報などが記憶されるほか、各種オブジェクトの物理シミュレーションに必要な各種の情報も記憶される。また、ユーザからのコントローラ105を介した指示入力も、一時的に記憶部202に記憶される。後述する計算部203は、記憶された情報を参照する。したがって、本実施形態では、RAM 103が記憶部202として機能する。
【0098】
図5は、本実施形態におけるシミュレーション処理の制御の流れを示す模式図である。以下、本図を参照して説明する。
【0099】
まず、CPU 101の制御の下、記憶部202に、各種情報の初期値が設定される(ステップS501)。これらの初期値は、外部メモリ106やDVD−ROMドライブ108に装着されたDVDから読み出すこととしても良いし、ユーザからのコントローラ105を介した指示入力により設定されることとしても良い。
【0100】
一方、計算部203は、記憶部202に記憶された当該複数の端点303のそれぞれの位置情報から、当該端点303同士を結ぶ線分状オブジェクト302の張力を計算する(ステップS502)。
【0101】
ここで、線分状オブジェクト302の自然長をL、考慮する端点303の仮想3次元空間401内における座標を(x1,y1,z1)と(x2,y2,z2)、線分状オブジェクト302のバネ定数をkとおくと、最も簡単なバネモデルの一つによれば、線分状オブジェクト302の張力の大きさFは、以下のように表現できる。
F = k(D - L)
ただし、Dは、現在の線分状オブジェクト302の長さであり、以下のように計算できる。
D = ((x2-x1)2+(y2-y1)2+(z2-z1)2)1/2
【0102】
したがって、座標(x1,y1,z1)にある質点(端点303)は、以下のベクトルで表現される力を受けることになる。
(F(x2-x1)/D,F(y2-y1)/D,F(z2-z1)/D)
【0103】
一方、座標(x2,y2,z2)にある質点(端点303)は、以下のベクトルで表現される力を受けることになる。
(-F(x2-x1)/D,-F(y2-y1)/D,-F(z2-z1)/D)
【0104】
張力の大きさFが正である場合はバネが端点同士を引き合う力が、負である場合はバネが端点同士を離し合う力が、それぞれ生じることを意味する。
【0105】
なお、バネにより生じる張力のモデル化は、上記の形態に限られず、種々の手法を採用することができる。たとえば、Dが一定の上限を超えた場合や一定の下限を下回った場合には、Fも所定の定数をとることとしたり、単なる比例ではなくより複雑な計算によって張力が計算されることとしたり、DとFとの関係が連続的に比例して変化するのではなく、階段状に不連続に変化するようにしても良い。
【0106】
ついで、計算部203は、各端点303について当該計算された張力の和をとって、当該端点303にかかる外力を計算し(ステップS503)、当該外力によって当該端点303が所定の微小時間の後に移動すべき位置を計算する(ステップS504)。上記のように、各線分状オブジェクト302のそれぞれについて張力を計算し、その総和をとれば、各質点(端点303)にかかる力がわかる。
【0107】
たとえば、図3(a)に示すモデルの場合、代表的な質点(端点303)には線分状オブジェクト302が6個集まっているので、これら6つの張力の総和を求める。図3(b)の場合は、線分状オブジェクト302が4個集まっているので、これら4つの張力の総和を求める。図3(c)の場合は、線分状オブジェクト302が8個集まっているので、これら8つの張力の総和を求める。
【0108】
このほか、質点(端点303)に外力がかかっている場合は、その力も可算する。外力としては、たとえば重力や風力などが考えられる。質点(端点303)の質量をmとし、重力加速度ベクトルをgとした場合、重力はmgとなる。
【0109】
さて、ある質点(端点303)にかかる力ベクトルをfであり、現在の記憶部302に記憶されている質点(端点303)の位置情報による位置ベクトルをr(上記の端点303の座標に対応する。)、速度情報による速度ベクトルをv、所定の微小時間をdtとするとき、当該端点303が所定の微小時間後に移動すべき位置を表す位置ベクトルr'および当該端点303の所定の微小時間後の速度を現わす速度ベクトルv'は、最も単純には、以下のように表現できる。
v' = v + f・dt/m;
r' = r + (v+v')・dt/2
= r + v・dt + f・dt2/(2m)
【0110】
これは、計算機を用いた積分の最も単純な構成であり、より詳細にシミュレーションを行うためには、たとえばRunge-Kutta法などの技術を適用することもできる。
【0111】
ここで、本シミュレーションの結果をゲームにおいて画面に表示する場合などには、この微小時間dtは、画面表示のリフレッシュレートに比例させることが望ましい。たとえば、一般的なゲーム装置では、垂直同期が60Hzで生じるので、微小時間dtは、1/60秒をさらに整数で割った時間とする。
【0112】
次に、計算部203は、記憶部に記憶された当該複数の障害物オブジェクト402のそれぞれの形状、位置、速度および姿勢情報から、当該障害物オブジェクト402が当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する(ステップS505)。
【0113】
障害物オブジェクト402にかかる力を求め、上記の質点(端点303)の場合と同様の計算を行えば良い。一方、障害物オブジェクト402は、一般の仮想3次元空間におけるオブジェクトの運動をシミュレートして、位置、姿勢を求めれば良い。また、障害物オブジェクト402が複数の変形しない内部オブジェクトからなる場合は、内部オブジェクト同士の接続関係も考慮して外力や内力、接続関係の拘束条件等計算を行うことにより、それぞれの位置を求めれば、障害物オブジェクト402がどのように変形するか判明する。
【0114】
なお、上記の計算では、障害物オブジェクト402や端点303が自由に運動できる場合を考えたが、これらが拘束されている場合もある。たとえば、スカートの上側の縁は人間の腰に固定されているし、旗の横の2頂点はポールに固定されている。そこで、このような拘束条件がある場合には、微分方程式を解いた結果を修正し、あるいは、微分方程式を解くまでもなく、次の位置を決定したりするのである。このような修正や決定の技法についても、公知の技術を採用することができる。
【0115】
このように、CPU 102は、RAM 103と共働して、計算部203として機能する。なお、ステップS502〜ステップS504の線分状オブジェクト302に関係する計算や、ステップS505の障害物オブジェクト402に関係する計算は、各オブジェクトについて独立に行うことができるため、ベクトル化が可能である。したがって、CPU 102が直接繰り返し計算を行う手法、ベクトル化指令やマルチメディア指令を用いて並列に計算を行う方法、並列数値演算コプロセッサを利用する手法など、種々の手法を採用することができる。
【0116】
さて、更新部204は、当該複数の端点303のそれぞれが当該微小時間の後に移動すべきと計算された位置を、当該線分状オブジェクト302の端点303の位置情報として記憶部202に記憶させ(ステップS506)、当該複数の障害物オブジェクト402のそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクト402の形状、位置、速度および姿勢情報として記憶部202に記憶させて(ステップS507)、記憶部202に記憶される情報を当該微小時間の後の情報に更新する。
【0117】
これによって、記憶部202には、各オブジェクトの形状、位置、姿勢情報が記憶されることになる。
【0118】
この段階では、微小時間dtだけ時間経過が起きたとしたときの、単純な物理シミュレーションを行ったのみであるため、ここで記憶部202に記憶される値によると、線分状オブジェクト302と障害物オブジェクト402とが「交差」していることがありうる。すなわち、障害物オブジェクト402に質点(端点303)がめり込んでいることがありうる。そこで、質点(端点303)の位置を補正するのが、補正部205の機能である。
【0119】
各質点(端点303)について、補正部205は、ステップS508〜ステップS512の以下の処理を繰り返す(ステップS508)。まず、今回の繰返し未処理の質点(端点303)を1つ取得し(ステップS509)、当該端点303が障害物にめり込んでいるか否かを判断する(ステップS510)。
【0120】
具体的には、次の(a)(b)の2種類の手法が考えられる。
(a)当該端点303の位置と、複数の障害物オブジェクト402のそれぞれと、を対比して、当該端点303が当該障害物オブジェクト402のいずれかに包含されているか否かを判定する。
【0121】
障害物オブジェクトの数が少ない場合に好適であり、交差するか否かをより適切に判断できる。
(b)当該端点303の位置と、複数の障害物オブジェクト402のうち、当該端点303に対応付けられる旨、記憶部202に記憶されているもの(以下、当該対応付けられている障害物オブジェクト402を「補正用オブジェクト」という。)と、を対比して、当該端点303が当該補正用オブジェクトに包含されるか否かを判定する。
【0122】
典型的には、1つの端点303には、補正用オブジェクトが1つ対応付けられる。なお、1つの端点303に複数の障害物オブジェクト402を対応付けたい場合には、当該対応付けたい複数の障害物オブジェクト402を内部オブジェクトとして持つ1つの障害物オブジェクトを補正用オブジェクトとし、当該補正用オブジェクトが変形することとすれば良い。
【0123】
たとえば、スカートの布が足にまとわりつく状況を考えればわかる通り、スカートのある領域は専ら腿にまとわりつき、ある領域は専ら膝に、ある領域は専ら脛にまとわりつく。したがって、このような状況下では、腿にまとわりつく領域の質点(端点303)の補正用オブジェクトは、四角柱の障害物オブジェクト402とする、等の対応付けをすれば良い。
【0124】
手法(a)(b)は、利用分野に応じて適宜選択すれば良い。
【0125】
そして、「交差」する、すなわち、当該端点303が障害物にめり込んでいると判定された場合(ステップS510;Yes)、当該端点303の位置情報を、当該補正用オブジェクトの形状、位置、速度および姿勢情報により補正して(ステップS511)、補正された結果の位置情報を記憶部202に記憶させ(ステップS512)、ステップS508に戻る。
【0126】
ここで、補正の手法について、具体的に説明する。代表的な手法は、以下の通りである。
(1)端点303の位置を、補正用オブジェクトの表面のうち、当該端点303に最も近い点もしくはその近傍に移動する。
(2)補正用オブジェクトに固定された座標系で考え、当該微小時間における端点303の位置の変化の経路が、補正用オブジェクトの表面と交わる点もしくはその近傍に移動する。
以下、順に説明する。
【0127】
まず、手法(1)は、補正用オブジェクトが、単純な形状であるときに特に容易に補正先の位置を求めることができる利点がある。
【0128】
図6は、手法(1)において、補正用オブジェクトが種々の形状の場合の、補正用オブジェクトと、端点303の補正前の位置と、補正後の位置との関係を示す説明図である。
【0129】
本図(a)に示すように、補正用オブジェクト601が球である場合は、球の中心611から端点303の補正前の位置602を通過する半直線を伸ばし、これが球面と交わった点603を補正後の位置とすれば良い。もしくは、当該球面内の交点からさらに所定の微小距離αだけ進んだ点604を補正後の位置としても良い。
【0130】
本図(b)では、補正用オブジェクトが多面体(各種の直方体、立方体、正多面体、角柱、角錐台、台状体なども含まれる。)である場合を考えている。この場合は、端点303の補正前の位置602から、多面体の各面612に垂線613を下ろし、当該垂線613が最小距離となる面612に対する垂線613の足、すなわち、垂線613と面612の交点を補正後の位置とすれば良い。もしくは、当該最小距離となった垂線613と当該面612との交点603からさらに所定の微小距離αだけ進んだ点604を補正後の位置としても良い。
【0131】
本図(c)では、補正用オブジェクトが円柱の場合を考えている。この場合は、円柱の中心軸614のいずれかの一点から始まる半直線615で、当該中心軸614と直交し、端点303を通過するものと、円柱の表面との交点603を補正後の位置とすれば良い。もしくは、当該半直線615が交点603からさらに所定の微小距離αだけ進んだ点604を補正後の位置としても良い。
【0132】
ここで採用する所定の微小距離αは、布状の物体のメッシュのサイズよりも小さいことが望ましい。すなわち、各線分状オブジェクト302の自然長の長さよりも小さい値としておくのが良い。
【0133】
次に、手法(2)は、端点303の物理モデルに基づく移動を追跡して、その経路が補正用オブジェクトと交わる交点を補正後の位置とするので、最も尤もらしい結果が得られるという利点がある。
【0134】
手法(2)を率直に実装する場合は、まず、補正用オブジェクト601に固定された移動座標系を考える。一般に当該移動座標系は、グローバル座標系に対して、更新の前後で移動ならびに回転している。
【0135】
次に、当該移動座標系内において、端点303が更新の前後でどのように移動するかを考える。移動座標系は、グローバル座標系に対して移動ならびに回転しており、端点303は、グローバル座標系に対して移動しているから、移動座標系内で、端点303は、移動ならびに回転することになる。
【0136】
しかしながら、移動ならびに回転する軌跡が、補正用オブジェクト601と交わる交点603を求めるのは、難しいことも多い。そこで、回転については無視することとし、補正用オブジェクト601の重心(もしくは中心や所定の代表点)の移動と、端点303の移動のみを考え、移動座標系は回転しないものとする手法を採用しても良い。すなわち、補正用オブジェクト601は、平行移動しているもの、として近似するのである。
【0137】
図7は、手法(2)において、そのような手法を採用した場合の考え方を示す説明図である。
【0138】
本手法では、補正用オブジェクト601は平行移動していると近似するのであるから、グローバル座標系においてその移動を表すベクトルをwとする。
【0139】
本図では、補正用オブジェクト601として円柱を考え、当該円柱の中心軸方向に各オブジェクトを平行投影した様子を図示している。したがって、本図では、補正用オブジェクト601の移動前(本図実線)と移動後(本図破線)は、いずれも円で表示されることとなる。
【0140】
一方、端点303は、グローバル座標系において、位置rからr'へ移動している。この位置r'は、移動後の補正用オブジェクト601の内側にある。
【0141】
ここで、端点303が補正用オブジェクト601と平行に移動したと過程すると、その移動先はグローバル座標系において、r+wである。この位置r+wは、移動後の補正用オブジェクト601の外側にある。
【0142】
そこで、グローバル座標系において、位置r+wと位置r'とを結ぶ線分621を考える。この線分621は、補正用オブジェクト601の外側と内側を結ぶのであるから、必ず補正用オブジェクト601と交わる交点603を持つはずである。そこで、交点603を、補正後の位置とするのである。
【0143】
また、位置r+wから始まり位置r'を通過する半直線622を考え、この半直線622が交点603からさらに所定の微小距離αだけ進んだ点604を補正後の位置としても良い。
【0144】
線分621と補正用オブジェクト601との交点603やさらに進んだ点604を求める手法については、公知の3次元グラフィックスにおける各種立体幾何の技術を適用することができる。
【0145】
なお、補正用オブジェクト601が姿勢も変えている場合には、当該線分621が補正用オブジェクト601との交点603を持たない場合もありうる。そのときは、当該線分621を伸ばした直線と補正用オブジェクト601との交点603のうち、r'に最も近い点やそのα近傍を補正後の位置とすれば良い。
【0146】
このように、CPU 102は、各種演算コプロセッサがある場合は、当該コプロセッサと共働し、RAM 103とも共働して、補正部205として機能する。
【0147】
なお、補正用オブジェクト601の表面のうち、交点603を探す際に、すべての表面を検討するのではなく、補正用面のみを検討する、という手法もありうる。
【0148】
上述の説明では、補正用オブジェクト601が有限長の円柱の場合であっても、天井と床の円は考慮せず、当該側面を含む無限長の円柱側面と線分や半直線等との交点を考慮していたが、これは、補正用面として、当該無限長の円柱側面を採用していることにほかならない。
【0149】
人間の足の部品を円柱で表す場合、天井と床の部分は人間の足の内部に相当するから、補正後の位置としてはふさわしくない。そこで、有限長の側面をそのまま無限に伸ばした無限長の円柱の側面を補正用面としていたのである。
【0150】
補正用オブジェクト601が多面体である場合、面の数が多すぎる場合には、当該補正用オブジェクト601を近似するもっと面の数の少ない多面体を考え、当該面の数の少ない近似多面体の表面を補正用面とするのである。
【0151】
近似多面体としては、たとえば、補正用オブジェクト601に外接する多面体を採用しても良いし、近似多面体の表面と補正用オブジェクト601の表面とが適宜交差するようなものを採用しても良い。
【0152】
このほか、補正用オブジェクト601の面のいずれかを適宜削除し、残った面をそのまま平面状に広げることによってできあがる新たな多面体を近似多面体としても良い。
【0153】
さて、このような処理によって、各端点303の位置情報等の更新(ステップS507)ならびに補正(ステップS508〜S512)が終了したら、前回の更新・補正と、今回の更新・補正との間に、垂直同期割り込みが発生したか否かを判断する(ステップS513)。
【0154】
発生した場合(ステップS513;Yes)、出力部206は、記憶部202に記憶される当該複数の線分状オブジェクト302の端点303の位置情報と、当該複数の障害物オブジェクト402の形状、位置および姿勢情報と、から、これらのオブジェクトの様子を示す画像を生成して、フレームメモリに出力する(ステップS514)。このように処理を行うことによって、垂直同期割り込みと同じ周期で、3次元グラフィックス画像が生成され、フレームメモリに蓄積される。
【0155】
フレームメモリに記憶された画像情報は、垂直同期割り込みの周期でビデオ信号に変換され画像処理部107に接続されるモニタへ出力される。これによって、本シミュレーション装置201により生成された仮想3次元空間の様子が、画面にアニメーション表示されることになる。
【0156】
ステップS514の処理終了後、もしくは、垂直同期割り込みが発生していない場合(ステップS513;No)、今回の繰返しの開始時点であるステップS502からの経過時間を取得し、当該経過時間が当該所定の微小時間dtとなるまで待機して(ステップS515)、ステップS502に戻る。当該待機時間の間には、たとえば、ユーザからの指示入力をチェックしたりする等、他の必要な処理を適宜実行することができる。
【0157】
これによって、微小時間dtが、更新部204による更新の時間間隔(すなわち、補正部205による補正の時間間隔)に等しくなるため、現実の時間が経過するのに合わせて、記憶部202に記憶されるオブジェクトの形状、位置、速度、姿勢情報が変化することとなる。したがって、垂直同期割り込みごとに画面表示を行えば、仮想3次元空間内の各オブジェクトが運動する様を、現実世界のものと同様に提示することができる。
【0158】
このように、本実施形態では、仮想3次元空間において、布状のオブジェクトが、ある形状を有するオブジェクトと衝突する様子をシミュレートすることができるようになる。
【0159】
さて、上記の説明では、端点303の位置の補正の処理の繰り返し(ステップS508〜S512)は、常に、すべての端点303について処理を行っていた。しかしながら、端点303の位置補正の計算は、一般に重い処理となることが多い。そこで、以下では、位置補正の処理をうまく省略する技術について説明する。
【0160】
すなわち、補正部205は、更新部204による更新が出力部206により画像が生成される直前の更新である場合、端点の全部を補正の対象とし、そうでない場合は、端点の一部を補正の対象とするのである。
【0161】
端点の一部を選択する手法としては、以下のようなものが考えられる。まず、微小時間dtを垂直同期割り込みの周期の1/(m+1)倍(mは2以上の整数)に等しいものとする。
【0162】
そして、端点303をm個のグループに分類する。この際、線分状オブジェクト302を介して互いに隣り合う端点303は、できるだけ異なるグループに属するように分類することが望ましい。また、端点303は、複数のグループに重複して含まれることとしても良い。
【0163】
また、i (1≦i≦m)番目のグループに含まれる端点303は、これによってモデル化される布状の物体にできるだけ均一に分散することが望ましい。上記のようにdtを決めると、1回の垂直同期周期の間に、更新はm+1回行われることになる。
【0164】
図8は、このような処理を行う場合の制御の流れを示すフローチャートであり、本制御の流れは、図5に示すものと共通するものが多いため、共通する部分については、同じステップ番号を採用することとし、以下、変更された部分を中心に図示して、共通する部分の大半は図示を省略している。
【0165】
まず、ステップS501における初期化では、RAM 103に用意された整数カウンタ変数sに適当な整数定数Cを設定しておく(ステップS501)。
【0166】
そして、線分状オブジェクト302の端点303の位置等の情報、および、障害物オブジェクト402の位置等の情報の更新(ステップS502〜ステップS507)が終了した後、前回の更新と、今回の更新との間に、垂直同期割り込みが発生したか否かを判定する(ステップS801)。
【0167】
発生していた場合(ステップS801;Yes)、すべての端点303を処理対象として、ステップS508〜S512と同様の補正処理を行う(ステップS802)。さらに、出力部206に3次元グラフィックス画像情報を出力させ(ステップS514)、待機して(ステップS515)、ステップS502に戻る。
【0168】
一方、発生していなかった場合(ステップS801;No)、(s mod m) + 1番目のグループに属する端点303のみを処理対象として、ステップS508〜S512と同様の補正処理を行う(ステップS803)。ここで、s mod mは、sをmで割ったときの余りを意味する。
【0169】
そして、カウンタ変数sの値を1増やし(ステップS804)、ステップS515に進む。
【0170】
これによって、1回の垂直同期周期の間に、各グループに対する補正が1回行われ(合計m回行われ)、垂直同期割り込みが生じた直後にすべての端点に対する補正が1回行われることになる。
【0171】
なお、dtを必ずしも垂直同期周期の1/(m+1)倍としなくとも良い。この場合は、カウンタ変数sの値に応じて、各グループに対する補正処理が均等に行われることになる。
【0172】
本態様では、補正処理を適切に間引くことによって、他の処理にCPU時間をまわすことができるようになる一方で、画像出力直前では全端点について補正を行うので、端点が障害物にめり込む事態は生じない。したがって、計算量と正確さのトレードオフを適切に考慮したシミュレーションを行うことができるようになる。
【実施例2】
【0173】
上記実施形態の一例においては、補正用オブジェクトの代表点(重心、中心等)の移動量のみを考慮し、補正用オブジェクトの回転量については考慮せずに、補正用オブジェクトに対する端点の移動の軌跡を求め、当該軌跡と補正用オブジェクトの表面の交点を求めて、端点の位置を当該交点に移動していた。
【0174】
本実施形態は、上記実施形態と同様の構成を採用するが、交点を求める際に、補正用オブジェクトの回転量も考慮する点が異なる。
【0175】
図9は、上記実施形態と本実施形態における、交点の求め方を説明する説明図である。なお、本図では、理解を容易にするため、各移動量や回転量は、誇張して記載してある。
【0176】
図9(a)には、端点303と補正用オブジェクト601の移動の様子を示す。図9(a)に示すように、端点303の移動前の位置901は、補正用オブジェクト601の移動前の位置911の外側にある。そして、端点303は移動後の位置902は、補正用オブジェクト601の移動後の位置912の内部に包含されることとなっている。そして、補正用オブジェクト601の移動前の位置911と移動後の位置912では、補正用オブジェクトは回転している。理解を容易にするため、移動前の位置は実線で、移動後の位置は1点破線で、それぞれ示している。
【0177】
図9(b)は、上記実施形態における交点の求め方を示すものである。すなわち、補正用オブジェクト601の移動後の位置912にかえて、補正用オブジェクト601は移動に際して回転しないものと近似して、その中心を平行移動した位置913(図中細い点線で示す。)に移動させる。
【0178】
そして、位置911から位置913への移動ベクトルと同じ量だけ、端点303の移動前の位置901を移動させ、位置902と位置903を結ぶ線分と、位置913に移動した補正用オブジェクト601との交点921を、端点303の補正後の位置とする(この位置は、補正用オブジェクト601を基準としている)。
【0179】
図9(c)は、本実施形態における交点の求め方を示すものである。すなわち、移動前の位置911における補正用オブジェクト601に対して、端点303の移動前の位置901の相対的な位置を考える(図中矢印と細い一点破線)。
【0180】
そして、このベクトル(図中、補正用オブジェクト601の中心から伸びる矢印)を、補正用オブジェクト601の移動量と回転量と同じだけ移動させる。これによって、微小時間が経過する前の端点303の補正用オブジェクト601に対する相対的な位置952が、(補正用オブジェクト601の微小時間経過後の移動先の位置912を基準として)求められる(図中矢印と細い一点破線の移動後)。
【0181】
そこで、位置902と位置952とを結ぶ線分と、位置912に移動した補正用オブジェクト601との交点953を、端点303の補正後の位置とする(この位置は、補正用オブジェクト601を基準としている)。
【0182】
なお、回転移動と平行移動の順序を変えたり、方向を逆にするなどした本手法と均等な手法を採用することもできる。このようにして、補正用オブジェクト601の表面に得られる交点として同じ位置のものを得る手法は、いずれも本発明の範囲に含まれる。
【0183】
本手法は、計算機の能力の制限から微小時間を長くとらざるを得ない場合や、上記実施形態のように本手法によれば、端点303の補正の間引きを行う場合に特に好適で、端点303が障害物オブジェクト402をすり抜けてしまうような状況を、できるだけ防止することができるようになる。
【産業上の利用可能性】
【0184】
以上説明したように、布状体と当該布状体が交差しない障害物との仮想3次元空間における移動をシミュレートして、たとえばスカートが人の足にまとわりつくような状況を近似的に再現するのに好適な、シミュレーション装置、シミュレート方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができ、たとえばゲームの分野において、上記のような状況の3次元グラフィックスを高速に表示する等に適用することができる。
【図面の簡単な説明】
【0185】
【図1】本発明の実施形態の1つに係るシミュレーション装置が実現される典型的な情報処理装置の概要構成を示す説明図である。
【図2】本発明の実施形態の1つに係るシミュレーション装置の概要構成を示す模式図である。
【図3】線分状オブジェクトとその端点の様子を示す説明図である。
【図4】仮想3次元空間内における障害物オブジェクトと線分状オブジェクトの関係を示す説明図である。
【図5】本実施形態におけるシミュレーション処理の制御の流れを示す模式図である。
【図6】補正用オブジェクトと、端点の補正前の位置と、補正後の位置との関係を示す説明図である。
【図7】補正用オブジェクトと、端点の補正前の位置と、補正後の位置との関係を示す説明図である。
【図8】本実施形態におけるシミュレーション処理の制御の流れを示す模式図である。
【図9】本発明の実施形態における補正において交点を求める手法を説明する説明図である。
【符号の説明】
【0186】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェイス
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
111 マイク
201 シミュレーション装置
202 記憶部
203 計算部
204 更新部
205 補正部
206 出力部
301 布状の物体のモデル
302 線分状オブジェクト
303 端点
401 仮想3次元空間
402 障害物オブジェクト
412 腿
413 膝の関節
414 脛
415 足首の関節
416 足先
601 補正用オブジェクト
602 補正前の位置
603 交点(補正後の位置の候補)
604 交点から進んだ位置(補正後の位置の候補)
611 球の中心
612 多面体の面
613 垂線
614 円柱の中心軸
615 半直線
621 線分
622 半直線

【特許請求の範囲】
【請求項1】
伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想3次元空間内で移動する様子をシミュレートするシミュレーション装置であって、
当該複数の線分状オブジェクトの端点の位置情報と、当該複数の障害物オブジェクトの形状、位置および姿勢情報と、を記憶し、当該複数の端点のそれぞれに、当該複数の障害物オブジェクトのいずれかを補正用オブジェクトとして対応付けて記憶する記憶部、
前記記憶部に記憶された当該複数の端点のそれぞれの位置情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、前記記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する計算部、
当該複数の端点のそれぞれが当該微小時間の後に移動すべきと前記計算された位置を、当該線分状オブジェクトの端点の位置情報として前記記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置および姿勢情報として前記記憶部に記憶させて、前記記憶部に記憶される情報を当該微小時間の後の情報に更新する更新部、
前記更新部による更新が行われる毎に、当該複数の端点の一部または全部を補正の対象とし、当該補正の対象となる端点が当該複数の障害物オブジェクトのいずれかに包含されるか否かを判断し、包含される場合、当該包含される端点の位置を、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置および姿勢情報により、補正した位置を、当該端点の位置情報として前記記憶部に記憶させ、前記記憶部に記憶される情報を補正する補正部、
前記記憶部に記憶される当該複数の線分状オブジェクトの端点の位置情報と、当該複数の障害物オブジェクトの形状、位置および姿勢情報と、から、これらのオブジェクトの様子を示す画像を所定の周期で生成して出力する出力部
を備え、
当該所定の周期は当該所定の微小時間の2倍以上の長さであり、
前記補正部は、前記更新部による更新が前記出力部により画像が生成される直前の更新である場合、当該複数の端点の全部を補正の対象として補正を行い、前記更新部による更新が前記出力部により画像が生成される直前の更新でない場合、当該複数の端点の一部を補正の対象として補正を行う
ことを特徴とするシミュレーション装置。
【請求項2】
請求項1に記載のシミュレーション装置であって、整数m (2≦m)、整数i (1≦i≦m)について、
当該所定の周期は、当該所定の微小時間の(m+1)倍の長さであり、
当該複数の端点は、前記記憶部に、1番目からm番目までのm個のグループに分類されて記憶され、
前記更新部による更新が前記出力部により画像が生成される直前の更新(以下、「0番目の更新」という。)から数えてi番目の更新である場合、当該複数の端点のうち前記記憶部にi番目のグループに分類されて記憶される端点を補正の対象として補正を行う
ことを特徴とする物。
【請求項3】
請求項1に記載のシミュレーション装置であって、整数m (2≦m)、整数s、定数の整数Cについて、
当該所定の周期は、当該所定の微小時間の(m+1)倍以上の長さであり、
当該複数の端点は、前記記憶部に、1番目からm番目までのm個のグループに分類されて記憶され、
前記更新部による更新が前記出力部により画像が生成される直前の更新でない更新のうち、s回目の更新である場合、当該複数の端点のうち前記記憶部に((s+C) mod m) + 1番目のグループに分類されて記憶される端点を補正の対象として補正を行う
ことを特徴とする物。
【請求項4】
請求項2または3に記載のシミュレーション装置であって、
前記記憶部は、当該複数の端点のそれぞれについて、当該端点が、当該端点と線分状オブジェクトを介して隣接する他の端点とは、異なるグループに分類されるように記憶する
ことを特徴とする物。
【請求項5】
請求項1から3のいずれか1項に記載のシミュレーション装置であって、
前記補正部は、当該補正の対象となる端点のそれぞれについて、当該端点の位置が、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置および姿勢情報により、当該補正用オブジェクトに包含される場合、当該端点の更新前の位置を当該補正用オブジェクトの当該更新による移動と同じ方向に同じ距離だけ移動した位置と、当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正する
ことを特徴とする物。
【請求項6】
請求項1から3のいずれか1項に記載のシミュレーション装置であって、
前記補正部は、当該補正の対象となる端点のそれぞれについて、当該端点の位置が、当該複数の障害物オブジェクトについて前記記憶部に記憶される形状、位置および姿勢情報により、当該複数の障害物オブジェクトのいずれかに包含される場合、当該端点の更新前の位置を当該補正用オブジェクトの当該更新による移動と同じ方向に同じ距離だけ移動した位置と、当該端点の更新後の位置と、を結ぶ線分が、当該補正用オブジェクトの表面と交差する位置に、当該端点の位置を補正する
ことを特徴とする物。
【請求項7】
請求項1から3のいずれか1項に記載のシミュレーション装置であって、
前記記憶部に記憶される補正用オブジェクトの形状が円柱である場合、
前記補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該円柱の中心軸のいずれかの点から開始され、当該中心軸に直交し、当該補正前の端点の位置を通過する半直線が、当該円柱の表面と交差する位置を、当該端点の補正後の位置とする
ことを特徴とする物。
【請求項8】
請求項1から3のいずれか1項に記載のシミュレーション装置であって、
前記記憶部に記憶される補正用オブジェクトの形状が円柱である場合、
前記補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該円柱の中心軸のいずれかの点から開始され、当該中心軸に直交し、当該補正前の端点の位置を通過する半直線が、当該円柱の表面と交差する位置からさらに所定の微小距離だけ進んだ位置を、当該端点の補正後の位置とする
ことを特徴とする物。
【請求項9】
請求項1から3のいずれか1項に記載のシミュレーション装置であって、
前記記憶部に記憶される補正用オブジェクトの形状が多面体であり、当該多面体の面のうち、いずれか1つ以上が補正用面として設定される場合、
前記補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該多面体の補正用面として設定された面のうち、当該端点に最も近いものに下ろした垂線が当該側面と交差する位置を、当該端点の補正後の位置とする
ことを特徴とする物。
【請求項10】
請求項1から3のいずれか1項に記載のシミュレーション装置であって、
前記記憶部に記憶される補正用オブジェクトの形状が多面体であり、当該多面体の面のうち、いずれか1つ以上が補正用面として設定される場合、
前記補正部は、当該補正用オブジェクトに対応付けられる端点の位置を補正する場合、当該多面体の補正用面として設定された面のうち、当該端点に最も近いものに下ろした垂線が当該補正用面と交差する位置からさらに所定の微小距離だけ進んだ位置を、当該端点の補正後の位置とする
ことを特徴とする物。
【請求項11】
伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想3次元空間内で移動する様子を模擬実験し、記憶部、計算部、更新部、補正部、出力部を備えるシミュレーション装置にて実行されるシミュレート方法であって、
前記記憶部には、当該複数の線分状オブジェクトの端点の位置情報と、当該複数の障害物オブジェクトの形状、位置および姿勢情報と、が記憶され、当該複数の端点のそれぞれが当該複数の障害物オブジェクトのいずれかに補正用オブジェクトとして対応付けて記憶され、
前記計算部が、前記記憶部に記憶された当該複数の端点のそれぞれの位置情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、前記記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する計算工程、
前記更新部が、当該複数の端点のそれぞれが当該微小時間の後に移動すべきと前記計算された位置を、当該線分状オブジェクトの端点の位置情報として前記記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置および姿勢情報として前記記憶部に記憶させて、前記記憶部に記憶される情報を当該微小時間の後の情報に更新する更新工程、
前記補正部が、前記更新部による更新が行われる毎に、当該複数の端点の一部または全部を補正の対象とし、当該補正の対象となる端点が当該複数の障害物オブジェクトのいずれかに包含されるか否かを判断し、包含される場合、当該包含される端点の位置を、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置および姿勢情報により、補正した位置を、当該端点の位置情報として前記記憶部に記憶させ、前記記憶部に記憶される情報を補正する補正工程、
前記出力部が、前記記憶部に記憶される当該複数の線分状オブジェクトの端点の位置情報と、当該複数の障害物オブジェクトの形状、位置および姿勢情報と、から、これらのオブジェクトの様子を示す画像を所定の周期で生成して出力する出力工程
を備え、
当該所定の周期は当該所定の微小時間の2倍以上の長さであり、
前記補正工程では、前記更新工程による更新が前記出力工程により画像が生成される直前の更新である場合、当該複数の端点の全部を補正の対象として補正を行い、前記更新部による更新が前記出力部により画像が生成される直前の更新でない場合、当該複数の端点の一部を補正の対象として補正を行う
ことを特徴とする方法。
【請求項12】
コンピュータに、伸縮する複数の線分状オブジェクトと、当該複数の線分状オブジェクトのいずれとも交差すべきでない複数の障害物オブジェクトと、が仮想3次元空間内で移動する様子を模擬実験させるプログラムであって、当該プログラムは、当該コンピュータを、
当該複数の線分状オブジェクトの端点の位置情報と、当該複数の障害物オブジェクトの形状、位置および姿勢情報と、を記憶し、当該複数の端点のそれぞれに、当該複数の障害物オブジェクトのいずれかを補正用オブジェクトとして対応付けて記憶する記憶部、
前記記憶部に記憶された当該複数の端点のそれぞれの位置情報から、当該端点同士を結ぶ線分状オブジェクトの張力を計算し、当該計算された張力によって当該端点が所定の微小時間の後に移動すべき位置を計算し、前記記憶部に記憶された当該複数の障害物オブジェクトのそれぞれの形状、位置および姿勢情報から、当該障害物オブジェクトが当該所定の微小時間の後にとるべき形状、位置および姿勢を所定の規則に基づいて計算する計算部、
当該複数の端点のそれぞれが当該微小時間の後に移動すべきと前記計算された位置を、当該線分状オブジェクトの端点の位置情報として前記記憶部に記憶させ、当該複数の障害物オブジェクトのそれぞれが当該微小時間の後にとるべき形状、位置および姿勢を当該障害物オブジェクトの形状、位置および姿勢情報として前記記憶部に記憶させて、前記記憶部に記憶される情報を当該微小時間の後の情報に更新する更新部、
前記更新部による更新が行われる毎に、当該複数の端点の一部または全部を補正の対象とし、当該補正の対象となる端点が当該複数の障害物オブジェクトのいずれかに包含されるか否かを判断し、包含される場合、当該包含される端点の位置を、当該端点に対応付けられて前記記憶部に記憶される補正用オブジェクトの形状、位置および姿勢情報により、補正した位置を、当該端点の位置情報として前記記憶部に記憶させ、前記記憶部に記憶される情報を補正する補正部、
前記記憶部に記憶される当該複数の線分状オブジェクトの端点の位置情報と、当該複数の障害物オブジェクトの形状、位置および姿勢情報と、から、これらのオブジェクトの様子を示す画像を所定の周期で生成して出力する出力部
として機能させ、
当該所定の周期は当該所定の微小時間の2倍以上の長さであり、
前記補正部は、前記更新部による更新が前記出力部により画像が生成される直前の更新である場合、当該複数の端点の全部を補正の対象として補正を行い、前記更新部による更新が前記出力部により画像が生成される直前の更新でない場合、当該複数の端点の一部を補正の対象として補正を行う
ように機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2006−146806(P2006−146806A)
【公開日】平成18年6月8日(2006.6.8)
【国際特許分類】
【出願番号】特願2004−339348(P2004−339348)
【出願日】平成16年11月24日(2004.11.24)
【出願人】(000105637)コナミ株式会社 (106)
【Fターム(参考)】