(57)【要約】 【課題】仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートする技術を提供する。【解決手段】記憶部７０２は、仮想空間内で仮想弾性体に連結される支持オブジェクトや質点オブジェクトの位置等を記憶し、支持計算部７０３は、更新間隔時間経過による支持オブジェクトの位置等の変化を表す支持変化量を計算し、支持修正部７０４は、支持変化量を所定の閾値を超えないように修正した支持修正量を計算し、質点計算部７０５は、支持オブジェクトが支持修正量だけ移動した位置等にあると仮定して、質点オブジェクトの支持オブジェクトに対する更新間隔時間経過後の位置を表す質点変化量を計算し、支持更新部７０６は、支持変化量により支持オブジェクトの位置等を更新し、質点更新部７０７は、更新後の支持オブジェクトの位置等と質点変化量により質点オブジェクトの位置を更新する。【選択図】図６
2008003824.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間に配置される支持オブジェクトの位置および姿勢、ならびに、複数の質点オブジェクトの位置をシミュレートするシミュレーション装置であって、
当該仮想空間において、当該複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結され、
当該支持オブジェクトの位置および姿勢と、当該複数の質点オブジェクトの位置と、を記憶する記憶部、
更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する支持計算部、
前記計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する支持修正部、
前記記憶された当該支持オブジェクトの位置および姿勢から前記計算された支持修正量だけ移動した位置および姿勢と、前記記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、
（ａ）当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力を計算し、
（ｂ）当該更新間隔時間が経過した後の、当該支持オブジェクトに対する当該質点オブジェクトの相対的な位置を表す質点変化量を、当該計算された力から計算する
質点計算部、
前記記憶部に記憶される支持オブジェクトの位置および姿勢から前記計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する支持更新部、
前記記憶部に記憶される複数の質点オブジェクトの位置のそれぞれを、前記位置および姿勢が更新された当該支持オブジェクトの位置から、当該質点オブジェクトに対して前記計算された質点変化量だけ移動した位置で、当該質点オブジェクトの位置を更新する質点更新部
とを備えるシミュレーション装置。
【請求項２】
請求項１に記載のシミュレーション装置であって、
前記支持修正部は、前記計算された支持変化量を、単調増加し極限が当該所定の閾値以下である内分関数に適用して、当該支持修正量を計算する
ことを特徴とするシミュレーション装置。
【請求項３】
請求項２に記載のシミュレーション装置であって、
前記支持修正部における内分関数は、当該支持変化量のうち位置の変化量に対して適用される位置内分関数と、当該支持変化量のうち姿勢の変化量に対して適用される姿勢内分関数と、からなり、
当該位置内分関数は、当該位置の変化量の上限値に０以上１以下の係数を乗じる単調増加関数であり、
当該姿勢内分関数は、当該姿勢の変化に係る軸周りの回転角の上限値に０以上１以下の係数を乗じる単調増加関数である
ことを特徴とするシミュレーション装置。
【請求項４】
請求項３に記載のシミュレーション装置であって、
前記質点計算部は、当該位置内分関数に係る係数の逆数もしくは当該係数の逆数の自乗を当該仮想弾性体の弾性係数に乗じて、当該質点変化量を計算する
ことを特徴とするシミュレーション装置。
【請求項５】
請求項１から４のいずれか１項に記載のシミュレーション装置であって、
前記記憶される複数の質点オブジェクトを頂点とするポリゴンに所定のテクスチャを貼り込んで、当該支持オブジェクトと、当該支持オブジェクトに連結される可変形オブジェクトと、の画像を生成する画像生成部
をさらに備えることを特徴とするシミュレーション装置。
【請求項６】
仮想空間に配置される支持オブジェクトの位置および姿勢、ならびに、複数の質点オブジェクトの位置をシミュレートするシミュレーション方法であって、
当該支持オブジェクトの位置および姿勢と、当該複数の質点オブジェクトの位置と、を記憶する記憶部、支持計算部、支持修正部、質点計算部、支持更新部、質点更新部を備えるシミュレーション装置にて実行され、
当該仮想空間において、当該複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結され、
前記支持計算部が、更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する支持計算工程、
前記支持修正部が、前記計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する支持修正工程、
前記質点計算部が、前記記憶された当該支持オブジェクトの位置および姿勢から前記計算された支持修正量だけ移動した位置および姿勢と、前記記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、
（ａ）当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力を計算し、
（ｂ）当該更新間隔時間が経過した後の、当該支持オブジェクトに対する当該質点オブジェクトの相対的な位置を表す質点変化量を、当該計算された力から計算する
質点計算工程、
前記支持更新部が、前記記憶部に記憶される支持オブジェクトの位置および姿勢から前記計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する支持更新工程、
前記質点更新部が、前記記憶部に記憶される複数の質点オブジェクトの位置のそれぞれを、当該位置および姿勢が更新された支持オブジェクトの位置から、当該質点オブジェクトに対して前記計算された質点変化量だけ移動した位置で、当該質点オブジェクトの位置を更新する質点更新工程
とを備えるシミュレーション方法。
【請求項７】
仮想空間に配置される支持オブジェクトの位置および姿勢、ならびに、複数の質点オブジェクトの位置をコンピュータにシミュレートさせるプログラムであって、
当該仮想空間において、当該複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結され、
当該プログラムは、当該コンピュータを、
仮想空間内に配置される支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置と、を記憶する記憶部、
更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する支持計算部、
前記計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する支持修正部、
前記記憶された当該支持オブジェクトの位置および姿勢から前記計算された支持修正量だけ移動した位置および姿勢と、前記記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、
（ａ）当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力を計算し、
（ｂ）当該更新間隔時間が経過した後の、当該支持オブジェクトに対する当該質点オブジェクトの相対的な位置を表す質点変化量を、当該計算された力から計算する
質点計算部、
前記記憶部に記憶される支持オブジェクトの位置および姿勢から前記計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する支持更新部、
前記記憶部に記憶される複数の質点オブジェクトの位置のそれぞれを、当該位置および姿勢が更新された支持オブジェクトの位置から、当該質点オブジェクトに対して前記計算された質点変化量だけ移動した位置で、当該質点オブジェクトの位置を更新する質点更新部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、コンピュータグラフィックス（Computer Graphics；ＣＧ）において、人間のキャラクターが着ているマントやスカートなど、形状可変で柔軟な布や紙などをシミュレートする技術が提案されている。キャラクターの位置や姿勢（一般には、仮想空間においてキャラクターを構成する部材を表すオブジェクトの位置、および、姿勢。ここで、「姿勢」とは、基準となるある座標系の各座標軸に対する、当該キャラクターや当該オブジェクトに固定された座標系の各座標軸の向きの相違を意味する。）が変化すると、その縁等がキャラクターに連結された布等の形状も変化するからである。このような技術は、以下の文献に開示されている。
【特許文献１】特開２００５−０９９９５２号公報
【０００３】
[特許文献１]では、布・衣服・毛髪等の柔軟な物体を複数の四角形ポリゴンで構成し、その頂点を仮想的な質点として、隣り合う質点の間を仮想的なバネで連結したモデルにより、その形状を求めるクロスシミュレーション関連技術が開示されている。この際には、所定の更新間隔時間（典型的には、垂直同期割り込み周期）おきに微分方程式を数値積分して解くことになる。
【０００４】
ここで、更新間隔時間とは、数値積分の分野では「ステップ時間」「時間刻み幅」とも呼ばれ、微小時間であることが必要とされるが、「微小」の程度は適用分野に応じて様々であり、更新間隔時間を短かくすればするほど、シミュレーションの誤差は小さくなるが、数値積分に要する計算量が多くなる。
【０００５】
また、クロスシミュレーションにおいては、質点の数を増やせば増やすほど、布等の形状をそれだけ正確にシミュレートできる、とも考えられるが、質点の数を増やせばそれだけ、数値積分に要する計算量が多くなる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、計算速度が遅く計算資源が限定された情報処理装置などにおいてこのようなシミュレーションを行う場合には、この更新間隔時間をできるだけ長くし、質点の数をできるだけ少くして、計算を簡易に済ませたいという要望は大きい。
【０００７】
一方で、更新間隔時間を長くしたり、質点の数を少なくしたりした場合に、プレイヤーなどに操作されるキャラクターに布などのオブジェクトが連結されている場合にキャラクターの動きが激しいと、バネが過度に長くなり、現実の布などの形状からかけ離れたものとなってしまう、という問題が生じる。
【０００８】
このようなシミュレーションをリアルタイムに行う必要がないＣＧ映画製作では、更新間隔時間をより短くしたり、質点の数を増やすことによってこの問題を解決することも不可能ではないが、ゲーム装置においてシミュレーションを行う場合には、リアルタイム性が必要となるため、更新間隔時間をより短くしたり質点の数を増やす手法を採用することはできず、新たな技術が求められている。
【０００９】
本発明は、上記のような課題を解決するもので、仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１１】
本発明の第１の観点に係るシミュレーション装置は、記憶部、支持計算部、支持修正部、質点計算部、支持更新部、質点更新部を備え、以下のように構成する。
【００１２】
ここで、シミュレーションの対象は、仮想空間内に配置される支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置であり、当該仮想空間内において、複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結されている。
【００１３】
また、記憶部は、仮想空間内に配置される支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置と、を記憶する。
【００１４】
スカートをあらわす布等の物体は、仮想空間では、典型的には、仮想弾性体（仮想的なバネ等）によって互いに二次元面的に連結された質点オブジェクトにより表現され、その縁の一部は、キャラクターの胴体をあらわす支持オブジェクトに連結されている。
【００１５】
人間がはいていない状態のスカートは、二次元平面としての広がりを有するが、人間がスカートをはくと、全体の形状は概ね円錐台の斜面の形状となり、しわやひだができて凹凸も生じるため、質点オブジェクトの位置は実際には三次元的な分布を呈する。
【００１６】
すなわち、ここでいう「二次元面的」とは、ある基本状態において、ある質点オブジェクトは、その周囲に配置される質点オブジェクトとの間で仮想弾性体により連結される、という意味である。
【００１７】
ここで、支持オブジェクトについては、仮想空間内における位置および姿勢（向き）を記憶する必要があるが、質点オブジェクトについては、位置がわかれば十分なことが多い。もちろん、シミュレートされる物体の種類によっては、質点オブジェクトにもついて姿勢の情報をさらに管理することとしても良い。
【００１８】
一方、支持計算部は、更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する。
【００１９】
ここで考慮されるのは、支持オブジェクトに与えられる外力やユーザからの指示入力の種類などのパラメータであり、現実世界の物理法則に対応する法則に基づいて、物理シミュレーションを行って更新間隔時間後の支持オブジェクトの位置および姿勢を計算する。このときには、外力として、重力や風力などを想定することもありうる。
【００２０】
なお、質点オブジェクトと支持オブジェクトとを結ぶ仮想弾性体による弾性力は、一般には小さいと考えられるので、支持オブジェクトの位置および姿勢の変化を計算する場合には、当該弾性力を無視する手法を採用しても良いことが多い。
【００２１】
支持変化量としては、支持オブジェクトに固定される座標系の原点がグローバル座標系においてどれだけ移動するかを表す位置の変化量と、支持オブジェクトに固定される座標系の姿勢がグローバル座標系においてどれだけ回転するかを表す姿勢の変化量の２つを想定するのが典型的である。
【００２２】
一方、支持修正部は、計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する。
【００２３】
支持変化量の大きさが所定の閾値を超えた場合には、仮想弾性体の変形量がきわめて大きくなり、現実に即したシミュレーションができなくなる可能性が高い。そこで、仮想弾性体の変形量を抑えるために、支持変化量よりも小さい支持修正量を考え、これに基づいて、後述するように、クロスシミュレーションを行うのである。
【００２４】
さらに、質点計算部は、記憶された当該支持オブジェクトの位置および姿勢から計算された支持修正量だけ移動した位置および姿勢と、記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、
（ａ）当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力を計算し、
（ｂ）当該更新間隔時間が経過した後の、当該支持オブジェクトに対する当該質点オブジェクトの相対的な位置を表す質点変化量を、当該計算された力から計算する。
【００２５】
すなわち、本来ならば大きく変化したはずの支持オブジェクトの位置と姿勢の変化を適宜修正してある程度の大きさに抑制し、抑制された位置および姿勢の変化に基づいて、各質点オブジェクト、特に、支持オブジェクトに連結される質点オブジェクトの位置の変化を計算する。支持オブジェクトの位置や姿勢が変化すると、支持オブジェクトと質点オブジェクトとを連結する仮想弾性体の長さも変化する。したがって、この長さの変化に応じた弾性力が質点オブジェクトに印加される。この際に、重力や風力を考慮にいれて計算を行うこともできる。また、質点変化量を計算するための座標系としては、支持オブジェクトに固定された座標系を採用することが望ましい。
【００２６】
一方、支持更新部は、記憶部に記憶される支持オブジェクトの位置および姿勢から計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する。
【００２７】
支持オブジェクトについては、計算された支持変化量に基づいて、その位置および姿勢を更新する、というものである。
【００２８】
さらに、質点更新部は、記憶部に記憶される複数の質点オブジェクトの位置のそれぞれを、位置および姿勢が更新された当該支持オブジェクトの位置から、当該質点オブジェクトに対して計算された質点変化量だけ移動した位置で、当該質点オブジェクトの位置を更新する。
【００２９】
質点オブジェクトについては、まず支持変化量だけ移動することにより、支持オブジェクトに固定される座標系における座標を変化させないままに移動する。そして、当該支持オブジェクトに固定される座標系において、その質点オブジェクトについて計算された質点変化量に基づいて、その質点オブジェクトの位置を移動させるのである。
【００３０】
本発明によれば、支持オブジェクトと質点オブジェクトを連結する仮想弾性体の長さが長くなりすぎるためにシミュレーション結果が不自然になることを防止し、クロスシミュレーションの時間単位である更新間隔時間がある程度長くとも、適切なクロスシミュレーションを行うことができるようになる。
【００３１】
また、本発明のシミュレーション装置において、支持修正部は、計算された支持変化量を、単調増加し極限が当該所定の閾値以下である内分関数に適用して、当該支持修正量を計算するように構成することができる。
【００３２】
たとえば、支持変化量のうち位置に係る変化量について考えた場合には、支持オブジェクトの現在の位置と、現在の位置に当該位置に係る変化量だけ加算した位置と、を内分する位置が、現在の位置に支持修正量の位置に係る部分だけ加算した位置と一致するようにする。
【００３３】
また、支持変化量のうち姿勢に係る変化量について考えた場合には、当該変化量は、ある軸のまわりをある回転角度だけ回転させることとして表現されるが、修正量に係る回転角度を０度と当該角度を内分する角度にすることによって、内分を行うことができる。
【００３４】
本発明は、上記発明の好適実施形態に係るものであり、支持修正量を支持変化量から求める際に、適切な関数を選択することで、所定の閾値を超えないように計算することができるようになる。
【００３５】
また、本発明のシミュレーション装置において、支持修正部における内分関数は、当該支持変化量のうち位置の変化量に対して適用される位置内分関数と、当該支持変化量のうち姿勢の変化量に対して適用される姿勢内分関数と、からなり、当該位置内分関数は、当該位置の変化量の上限値に０以上１以下の係数を乗じる単調増加関数であり、当該姿勢内分関数は、当該姿勢の変化に係る軸周りの回転角の上限値に０以上１以下の係数を乗じる単調増加関数であるように構成することができる。
【００３６】
本発明は、上記発明の好適実施形態にかかるものであり、支持変化量に対して０と１との間の係数を乗じることで、支持修正量を求めるため、容易に支持修正量を計算することができるようになる。
【００３７】
また、本発明のシミュレーション装置において、質点計算部は、当該位置内分関数に係る係数の逆数もしくは当該係数の逆数の自乗を当該仮想弾性体の弾性係数に乗じて、当該質点変化量を計算するように構成することができる。
【００３８】
シミュレーションの適用分野によっては、上記発明で十分な精度のシミュレーションができる場合も多いが、上記発明では、質点オブジェクトの移動についての時間の進みは、シミュレーション時間に対して遅くなるものと考えられる。そこで、質点オブジェクトに印加される外力に対して、修正のための係数の逆数等を乗じることにより、外力の大きさを大きくし、質点オブジェクトの移動を速くして、シミュレーション時間に対する遅れを補償するものである。
【００３９】
外力としては、仮想弾性体による弾性力を想定するが、重力や風力などが印加される場合には、当該重力や風力についても同様に係数の逆数等を乗じることにより、遅れを補償することとしても良い。
【００４０】
本発明によれば、質点オブジェクトに印加される外力に係数の逆数等を乗じることにより、質点オブジェクトの移動の時間的な遅れを補償して、よりリアルな運動をさせることができるようになる。
【００４１】
また、本発明のシミュレーション装置は、画像生成部を備え、画像生成部は、記憶される複数の質点オブジェクトを頂点とするポリゴンに所定のテクスチャを貼り込んで、当該支持オブジェクトと、当該支持オブジェクトに連結される可変形オブジェクトと、の画像を生成するように構成することができる。
【００４２】
本発明は、上記発明の好適実施形態に係るものであり、質点オブジェクトを頂点とするポリゴンがスカートなどの形状に合わせて定義されており、当該ポリゴンに布などの表面の質感を表すテクスチャを貼り込むことにより、柔らかに形状を変化させる可変形オブジェクトを生成することができるようになる。
【００４３】
本発明のその他の観点に係るシミュレーション方法は、仮想空間内に配置される支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置をシミュレーションの対象とし、複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結されている。
【００４４】
そして、当該シミュレーション方法は、支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置と、を記憶する記憶部、支持計算部、支持修正部、質点計算部、支持更新部、質点更新部を備えるシミュレーション装置にて実行され、支持計算工程、支持修正工程、質点計算工程、支持更新工程、質点更新工程を備え、以下のように構成する。
【００４５】
すなわち、支持計算工程では、支持計算部が、更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する。
【００４６】
一方、支持修正工程では、支持修正部が、計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する。
【００４７】
さらに、質点計算工程では、質点計算部が、記憶された当該支持オブジェクトの位置および姿勢に計算された支持修正量だけ移動した位置および姿勢と、記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力による当該更新間隔時間の経過による当該質点オブジェクトの当該支持オブジェクトを基準とする相対的な位置を表す質点変化量を計算する。
【００４８】
そして、支持更新工程では、支持更新部が、記憶部に記憶される支持オブジェクトの位置および姿勢から計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する。
【００４９】
一方、質点更新工程では、質点更新部が、記憶部に記憶される複数の質点オブジェクトの位置のそれぞれに対して、当該位置から計算された支持変化量だけ移動し、さらに当該質点オブジェクトに対して計算された質点変化量だけ当該位置および姿勢が更新された支持オブジェクトを基準に移動した位置で、当該質点オブジェクトの位置を更新する。
【００５０】
本発明のその他の観点に係るプログラムは、コンピュータを上記のシミュレーション装置として機能させ、コンピュータに上記のシミュレーション方法を実行させるように構成する。
【００５１】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００５２】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００５３】
本発明によれば、仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００５４】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００５５】
図１は、プログラムを実行することにより、本発明のシミュレーション装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００５６】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）  １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェイス１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）ドライブ１０８と、ＮＩＣ（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）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００７１】
さらに、情報処理装置１００には、インターフェイス１０４を介してマイク１１１を接続することができる。この場合、マイク１１１からのアナログ信号に対しては、適当なサンプリング周波数でＡ／Ｄ変換を行い、ＰＣＭ形式のディジタル信号として、音声処理部１１０でのミキシング等の処理ができるようにする。
【００７２】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００７３】
以上で説明した情報処理装置１００は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
【００７４】
たとえば、一般的なコンピュータは、上記情報処理装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭドライブ、および、ＮＩＣを備え、情報処理装置１００よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ１０５ではなく、キーボードやマウスなどを入力装置として利用する。
【００７５】
図２は、仮想空間内に配置される支持オブジェクト、質点オブジェクト、仮想弾性体および各座標系の関係を示す説明図である。以下、本図を参照して説明する。
【００７６】
本図に示すように、キャラクターの胴体に相当する支持オブジェクト２０１には、連結点２１２に仮想弾性体２１１の一端が連結され、仮想弾性体２１１の他端は、質点オブジェクト２０６に連結されている。また、質点オブジェクト２０６同士も仮想弾性体２１１を介して連結されている。このようにして、互いに質点オブジェクト２０６同士は、全体としてスカートやマントの布のような形状をなしている。
【００７７】
仮想空間２３１内には、グローバル座標系２３６のほか、支持オブジェクト２０１に固定されているローカル座標系２４１が用意されており、グローバル座標系２３６とローカル座標系２４１との間の変換は、原点の移動と座標系の回転の２つに還元することができる。
【００７８】
支持オブジェクト２０１は、ユーザの指示入力等に基づいて移動したり、情報処理装置１００が所定のアルゴリズムに基づいて制御するキャラクターに相当するものである。したがって、仮想空間２３１内を適宜移動したり、その姿勢（グローバル座標系２３６に対してローカル座標系２４１がどの軸廻りにどれだけ回転しているか、に相当する。）を変化させることができる。またこの際に、仮想空間２３１内に想定された物理法則にしたがうこととし、重力や風力、摩擦力などの影響を受けるようにモデル化することができる。
【００７９】
質点オブジェクト２０６は、布の単位面積あたりの質量をモデル化するものであり、質点オブジェクト２０６が均等に分布されている場合には、それぞれに布全体の質量を質点オブジェクト２０６の個数で割った質量が割り当てられる。もっとも、割り当てる質量は、質点オブジェクト２０６の分布密度やモデル化の対象となる布の形状などの特徴によって適宜変更が可能である。
【００８０】
さて、このような仮想弾性体２１１には、自然長が割り当てられている。自然長とは、もっとも自然な形状のときの長さであり、スカートの布などを表現する場合には、平面状に均等に布を広げた場合の質点オブジェクト２０６同士の距離を、その質点オブジェクト２０６同士を連結する仮想弾性体２１１の自然長とするのが一般的である。
【００８１】
仮想弾性体２１１の長さ（当該仮想弾性体２１１が連結する質点オブジェクト２０６同士の距離）が自然長より長くなると、その長くなった距離に所定のバネ定数を乗じた力の弾性力（質点オブジェクト２０６同士を引き寄せる方向の引力）が発生する。一方、自然長より短くなると、その短くなった距離に所定のバネ定数を乗じた力の弾性力（質点オブジェクト２０６同士を遠ざける方向の反発力）が発生する。
【００８２】
支持オブジェクト２０１と質点オブジェクト２０６を連結する仮想弾性体２１１は、支持オブジェクト２０１の移動にともなって質点オブジェクト２０６群を移動させるための弾性力を発生させる点で、重要な役割を果たす。一方、仮想空間２３１内の物理法則をシミュレートする際の時間の刻み幅（更新間隔時間）が長いと、当該仮想弾性体２１１の長さが異常に長くなってしまい、このような場合には、モデル化された布の表現が極めて不自然になってしまう。本実施形態では、このような状況を簡易に抑制する手法を採用する。
【００８３】
なお、本図に示す例では、スカートを表現するため、質点オブジェクト２０６を扇形状に仮想弾性体２１１が連結しているが、適用分野や形状によって、その他の連結手法を用いることとしても良い。
【００８４】
図３は、仮想弾性体と質点オブジェクトの種々の連結の様子を示す説明図である。以下、本図を参照して説明する。
【００８５】
本図（ａ）に示す例では、格子点状に質点オブジェクト２０６が配置され、仮想弾性体２１１が質点オブジェクト２０６を頂点とする正方形の辺の位置に配置されて、隣り合う質点オブジェクト２０６同士を連結している。最も単純な連結手法の一例である。
【００８６】
本図（ｂ）に示す例では、本図（ａ）に示す例において、さらに、正方形の対角する頂点の間（対角線）も仮想弾性体２１１が連結している。本図（ａ）に示す連結手法にくらべて、斜め方向の変形がより自然となるという特徴を有する。
【００８７】
本図（ｃ）に示す例は、質点オブジェクト２０６同士を連結する仮想弾性体２１１が三角形の辺をなすようにするものであり、有限要素法におけるメッシュの区切り方に類似するものである。形状が正方形に限定されないため、布が任意の形状となるような場合にも適用が可能である。
【００８８】
以下では、支持オブジェクト２０１および質点オブジェクト２０６の物理モデルについて、簡単に説明する。図４は、支持オブジェクト２０１や質点オブジェクト２０６等の、一般的なオブジェクトに関する位置や姿勢の変化のシミュレートの手法を示す説明図である。以下、本図を参照して説明する。
【００８９】
ある時点tにおいて、質量m(t)のオブジェクト４０１には、重心４０２に対して印加される重力４５１ m(t)gのほか、仮想弾性体２１１等により重心４０２から離れた位置に印加される外力４５２ f1(t)，…， fN(t)が、影響を与える。
【００９０】
これらの重力４５１や複数の外力４５２のベクトル総和F(t)は、
F(t) = m(t)g + Σi=1N fi(t)
【００９１】
であるから、これをオブジェクト４０１の質量m(t)で割ると、オブジェクト４０１の加速度ベクトル
a(t) = F(t)/m(t)
が求められる。
【００９２】
ある時点tにおけるオブジェクト４０１の重心４０２の位置ベクトルr(t)（基準点４０３を基準とする。）と速度ベクトルv(t)が判明している場合には、これより更新間隔時間Δtだけ後の時刻t+Δtにおける速度ベクトルv(t+Δt)は、
v(t+Δt) = v(t) + a(t)Δt
と近似表現することができる。また、位置ベクトルr(t+Δt)は、
r(t+Δt) = (v(t) + v(t+Δt))Δt/2
のように近似計算できる。この計算を繰り返すことにより、任意の時点rでのオブジェクト４０１の重心の位置r(t)をシミュレートすることができる。
【００９３】
一方、姿勢の変化については、重心から離れた位置に印加される外力４５２を考慮する。すなわち、時刻tにおけるオブジェクト４０１の角速度ベクトルω(t)は、当該回転ベクトルω(t)を軸に、単位時間あたり|ω(t)|の角度だけ、オブジェクト４０１が回転しようとしていることをあらわす。また、オブジェクト４０１の姿勢ベクトルθ(t)は、角速度ベクトルω(t)を積分したものと考えることができる。
【００９４】
なお、グローバル座標系２３６にローカル座標系２４１の各軸の方向を一致させた後に、この姿勢ベクトルθ(t)を軸に、角度|θ(t)|だけ回転させると、時刻tにおけるローカル座標系２４１の姿勢が得られるのである。
【００９５】
一方、複数の外力４５２をベクトルf1(t)，…， fN(t)とし、重心４０２から、外力４５２が印加される場所への変位４５３をベクトルs1(t)，…， sN(t)とすると、当該オブジェクト４０１に対する与えられるトルクL(t)は、
L(t) = Σi=1N si(t)×fi(t)
と表現することができ、オブジェクト４０１の慣性モーメント行列をM(t)とすると、
L(t) = M(t)(ω(t+Δt) - ω(t))/Δt
が成立するから、
ω(t+Δt) = ω(t) + M(t)-1L(t)Δt
と近似表現することができる。また、姿勢ベクトルn(t+Δt)についても同様に、
n(t+Δt) = (ω(t+Δt) + ω(t))Δt/2
と近似計算が可能である。
【００９６】
一般に、位置ベクトルrを軸ベクトルc = (cx，cy，cz)の周りで角度ψだけ回転させた結果r'を求めるには、クォータニオンを利用したり、回転行列を利用することが可能である。以下では、クォータニオンを用いる手法について説明する。
【００９７】
さて、この回転を表すクォータニオンCは、
C = (cxsin(ψ/2)，cysin(ψ/2)，czsin(ψ/2)，cos(ψ/2))
と表現することができる。
【００９８】
また、位置ベクトルr = (rx，ry，rz)に対するクォータニオンRは、
R = (rx，ry，rz，0)
と表現することができる。
【００９９】
すると、クォータニオンCによって、クォータニオンRを回転させる演算は、位置ベクトルr'に対するクォータニオンをR'としたとき、
R' = C R C*
と表現できる。ここで・*はクォータニオンの共役である。
R' = (rx'，ry'，rz'，rw')
であれば、
r' = (rx'，ry'，rz')
である。このほか、回転行列を用いる手法を利用しても良い。
【０１００】
以下、ベクトルcを軸にベクトルrを角度|c|だけ回転させる演算を、spin(c,r)のように表記するものとする。
【０１０１】
さて、図５は、上記のような物理モデルにしたがって、位置や姿勢の変化が計算されたときの様子を示す説明図である。以下、本図を参照して説明する。
【０１０２】
本図には、支持オブジェクト２０１と質点オブジェクト２０６のそれぞれの位置の関係を図示する。ここでは、理解を容易にするため、質点オブジェクト２０６は支持オブジェクト２０１に仮想弾性体２１１を介して直接連結されているもの１つだけを図示し、縮尺率を適宜変更して、大袈裟に記載している。
【０１０３】
また、理解を容易にするため、グローバル座標系２３６のＺ軸とローカル座標系２４１のｚ軸は平行であり、支持オブジェクト２０１は、グローバル座標系２３６のＸ−Ｙ平面（ローカル座標系２４１のｘ−ｙ平面）内を移動して位置を変化させ、ｚ軸（Ｚ軸）まわりに回転して姿勢を変化させた場合を例にあげる。また、連結点２１２は、ローカル座標系２４１におけるｘ軸上に配置されているものとする。
【０１０４】
上記のように、支持オブジェクト２０１について、時刻tにおける状況から時刻t+Δtにおける状況を近似計算すれば、本図に示すように、支持オブジェクト２０１の時刻tにおける位置r(t)および姿勢θ(t)と時刻t+Δtにおける位置r(t+Δt)および姿勢θ(t+Δt)が判明する。これらの差が、支持変化量である。
【０１０５】
本図では、時刻tと時刻t+Δtにおける支持オブジェクト２０１における位置の差のベクトルをΔr、姿勢（回転ベクトルであるため、回転する角で図示している。）の差のベクトルをΔθと表している。
【０１０６】
すると、連結点２１２の時刻t+Δtにおける位置q(t+Δt)は、以下のように、時刻t+Δtにおけるローカル座標系２４１の原点（支持オブジェクト２０１の位置）から見て、ローカル座標系２４１の原点まわりにΔθだけ回転した位置、ということになる。
q(t+Δt) = r(t) + Δr + spin(Δθ,q(t)-r(t))
【０１０７】
ここで、質点オブジェクト２０６の位置p(t)から位置p(t+Δt)を求める場合の状況を考える。質点オブジェクト２０６に印加される弾性力の大きさおよび向きは、質点オブジェクト２０６（位置p(t)）から連結点２１２（位置q(t)）への変位ベクトル（q(t)-p(t)）によって定まる、とするのが、従来のシミュレーションの手法である。
【０１０８】
しかしながら、この変位ベクトルが、時刻tと時刻t+Δtとで、大きく異なると、すなわち、q(t+Δt)-p(t+Δt)とq(t)-p(t)が大きく異なると、シミュレーションが不自然になってしまう。このような状況が生じる場合として、ΔrやΔθが大きい場合が考えられる。そこで、本実施形態では、以下のような手法を採用する。
【０１０９】
まず、|Δr|および|Δθ|の大きさに対して、それぞれ上限値Rおよび上限値Θを定めておく。これらの値は、シミュレーションが不自然にならないような適切な値を、たとえば実際に模擬実験を行うことによって定めることができる。
【０１１０】
つぎに、値域が０から１に向かって単調に増加する関数h(・)を用意する。すなわち、h(・)は、以下のような性質を見たす関数である。
h(0) = 0
limx→∞ h(x) = 1
a<b ⇒ h(a)≦h(b)
【０１１１】
このような関数としては、
h(x) = x  (0≦x≦1)
= 1  (1<x)
や、適当な定数Hを用いた
h(x) = 2・arctan(H・x)/π
などのほか、階段状に変化する関数を採用することもできる。
【０１１２】
そして、支持修正量のうち、位置に係る支持修正量Δsおよび姿勢に係る支持修正量Δψを
Δs = R h(|Δr|) Δr/|Δr|
Δψ = Θ h(|Δθ|) Δθ/|Δθ|
のように定める。Δs，Δψは、それぞれ、Δr，Δθのそれぞれと原点の間を内分するベクトル、すなわち、Δr，Δθのそれぞれの方向ベクトルにΔr/|Δr|，Δθ/|Δθ|に上限値R，Θを乗じ、さらに０以上１以下の係数を乗じたものである。
【０１１３】
そして、支持オブジェクト２０１が、位置r(t)+Δs、姿勢θ(t)+Δψにあるものと仮想的に考えて、このときの仮想連結点５０１の位置Q(t)を求める。すなわち、
Q(t) = r(t) + Δs + spin(Δψ,q(t)-r(t))
となる。
【０１１４】
仮想連結点５０１の位置Q(t)は、時刻tにおける連結点２１２の位置と、時刻t+Δtにおける連結点２１２の位置と、を、内分する位置（線分上で内分する場合もあるし、曲線上で内分する場合もある。）と考えることができる。
【０１１５】
そして、質点オブジェクト２０６の時刻tにおける位置p(t)から、時刻t+Δtにおける位置p(t+Δt)を求める際には、質点オブジェクト２０６は仮想弾性体２１１によって仮想連結点５０１と連結されている、と考えるのである。すなわち、q(t)-p(t)でもq(t+Δt)-p(t)でもなく、Q(t)-p(t)に基づいて質点オブジェクト２０６に対する当該仮想弾性体２１１による弾性力を求めるのである。
【０１１６】
Q(t)の位置はq(t+Δt)の位置よりもq(t)に近いから、支持オブジェクト２０１の位置が大きく変化してしまったとしても、Q(t)-p(t)の変化はある程度抑制することができる。したがって、仮想弾性体２１１が不自然に長く伸びてしまうような状況は防止できるのである。
【０１１７】
このように、仮想連結点５０１に基づいて質点オブジェクト２０６に対する外力を求めることとする。本図では、仮想連結点５０１に連結される仮想弾性体２１１による外力５１１と、他の質点オブジェクト２０６に連結される仮想弾性体２１１による外力５１２、５１３、５１４とが表示されている。
【０１１８】
上記の物理モデルと、質点オブジェクト２０６の位置p(t)と、これらの外力から、時刻t+Δtにおける仮想的な位置を求めることができる。これは、支持オブジェクト２０１が少ししか動いていない、と仮想的に考えた場合の、質点オブジェクト２０６の移動先に相当する。この移動先の仮想的な位置５２１をu(t+Δt)とする。
【０１１９】
しかしながら、支持オブジェクト２０１の本来の移動を考えれば、位置u(t+Δt)をそのままp(t+Δt)とするのでは、支持オブジェクト２０１と離れすぎてしまうこととなる。そこで、以下のような考え方を採用する。
【０１２０】
まず、質点オブジェクト２０６の支持オブジェクト２０１に対する位置（質点変化量）は、
u(t+Δt) - (r(t)+Δs)
【０１２１】
と表現することができる。
【０１２２】
時刻t+Δtには、支持オブジェクト２０１の重心自体は、
r(t+Δt) = r(t) + Δr
に移動しており、しかも、
Δθ
だけ回転しているのであるから、
p(t+Δt) = r(t) + Δr + spin(Δθ,u(t+Δt)-(r(t)+Δs))
を、新たな質点オブジェクト２０６の位置とする。これが本実施形態の特徴の一つである。
【０１２３】
このとき、質点オブジェクト２０６の更新間隔時間後の速度は、
(p(t+Δt)-p(t))/Δt
とすれば良い。
【０１２４】
本実施形態によれば、更新間隔時間Δtが少々長い場合や、質点オブジェクト２０６の数が少ない場合であっても、不自然でないクロスシミュレーションを実現することができる。
【０１２５】
なお、本実施形態では、質点オブジェクト２０６と支持オブジェクト２０１との間のインタラクションが実質的に小さくなっている。そこで、用途によっては、これを簡易に補償したい場合もある。
【０１２６】
このような場合には、質点オブジェクト２０６と支持オブジェクト２０１とを連結している仮想弾性体２１１のバネ係数にh(|Δr|)やh(|Δr|)2等を乗じて、仮想弾性体２１１の弾性力を仮想的に大きくすることとしても良い。
【０１２７】
本手法によれば、支持オブジェクト２０１の位置や視線の変化量を仮想的に小さくしたことを、バネ定数を仮想的に大きくすることで、埋め合わせることができるようになる。
【０１２８】
本実施形態によれば、従来から広く用いられている剛体や質点、バネなどの物理モデルの計算を簡易に修正して、時間の刻み幅が大きな場合や質点の数を減らした場合であっても、リアルに運動のシミュレーションを行うことができるようになる。以下では、具体的なシミュレーション装置の構成について説明する。
【０１２９】
図６は、本実施形態に係るシミュレーション装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【０１３０】
本実施形態に係るシミュレーション装置７０１は、記憶部７０２、支持計算部７０３、支持修正部７０４、質点計算部７０５、支持更新部７０６、質点更新部７０７、画像生成部７０８を備える。
【０１３１】
ここで、記憶部７０２は、ＲＡＭ  １０３等によって実現され、
支持オブジェクト２０１の現在時刻における位置、速度、姿勢、角速度、質量、慣性モーメント、
複数の質点オブジェクト２０６の現在時刻における位置、速度、質量、
複数の仮想弾性体２１１のそれぞれが連結する質点オブジェクト２０６同士の関係、もしくは、質点オブジェクト２０６と支持オブジェクト２０１の連結点の位置、
複数の仮想弾性体２１１の自然長、バネ定数、
重力や風力などの外力の分布、
現在の時刻、時刻の刻み幅（更新間隔時間）、
支持オブジェクト２０１の表面や質点オブジェクト２０６のメッシュを構成するポリゴンと、当該ポリゴンに貼り付けられるテクスチャ
などの情報を記憶する。
【０１３２】
図７は、本シミュレーション装置７０１にて実行されるシミュレーション処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０１３３】
処理が開始されると、ＣＰＵ  １０１は、ＲＡＭ  １０３に用意された記憶部７０２を初期化して、適切な初期値を与える（ステップＳ８０１）。
【０１３４】
ついで、支持計算部７０３は、支持オブジェクト２０１の現在の位置r(t)および姿勢θ(t)や、各種の外力の状況等から、上記の計算手法に基づいて、支持変化量Δr，Δθを求める（ステップＳ８０２）。したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３と共働して、支持計算部７０３として機能する。
【０１３５】
さらに、支持修正部７０４は、求められたΔr，Δθ等から、上記の計算手法に基づいて、支持修正量Δs，Δψを求める（ステップＳ８０３）。したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３と共働して、支持修正部７０４として機能する。
【０１３６】
さらに、質点計算部７０５は、各質点オブジェクトについて（ステップＳ８０４）、上記のように求められたΔs，Δψ等から、上記の計算手法に基づいて、それぞれの質点オブジェクト２０６に対する質点変化量u(t+Δt)を求める（ステップＳ８０５）処理を繰り返す（ステップＳ８０６）。この際に、他の質点オブジェクト２０６とのみ連結され、支持オブジェクト２０１とは連結されていない質点オブジェクト２０６については、通常のクロスシミュレーションによる計算と同様の手法を採用する。したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３と共働して、質点計算部７０５として機能する。
【０１３７】
ついで、支持更新部７０６は、求められた支持変化量Δr，Δθ等に基づいて記憶部７０２に記憶される支持オブジェクト２０１の位置や姿勢、速度や角速度の情報を、上記のような計算によって得られたr(t+Δt)，θ(t+Δt)，v(t+Δt)，ω(t+Δt)の値に更新する（ステップＳ８０７）。したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３と共働して、支持更新部７０６として機能する。
【０１３８】
質点更新部７０７は、それぞれの質点オブジェクト２０６に対して（ステップＳ８０８）、記憶部７０２に記憶される当該質点オブジェクト２０６の位置、速度の情報を、上記のような計算によって得られた更新間隔時間後の位置p(t+Δt)、および、質点オブジェクト速度(p(t+Δt)-p(t))/Δtの値に更新する（ステップＳ８０９）ことを繰り返す（ステップＳ８１０）。したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３と共働して、質点更新部７０７として機能する。
【０１３９】
さらに、画像生成部７０８は、ＲＡＭ  １０３内の情報に基づいて、支持オブジェクト２０１の表面や質点オブジェクト２０６を頂点とするポリゴンに、テクスチャ情報を貼り付けて、仮想空間２３１の様子を表す画像をＲＡＭ  １０３内のフレームバッファに生成する（ステップＳ８１１）。したがって、ＣＰＵ  １０１は、画像処理部１０７およびＲＡＭ  １０３と共働して、画像生成部７０８として機能する。本処理については、各種の３次元グラフィックスの技術を適用することが可能である。
【０１４０】
そして、垂直同期割り込みが生じるまで待機する（ステップＳ８１２）。この間は、他の処理をコルーチン的に実行することが可能である。
【０１４１】
垂直同期割り込みが発生したら、仮想空間２３１における時刻を、更新間隔時間（垂直同期割り込み周期）だけ増やして、時刻を更新する（ステップＳ８１３）。なお、画像生成については、適宜間引くことも可能である。このときは、時刻の更新における更新間隔時間も、間引いた数に応じて調整する。
【０１４２】
そして、画像処理部１０７は、ＣＰＵ  １０１の制御の下、フレームバッファの内容をフレームメモリに転送して、生成された画像を画面に表示し（ステップＳ８１４）、ステップＳ８０２に戻る。
【０１４３】
このような処理を行うことにより、本実施形態のシミュレーション装置７０１は、更新間隔時間の幅が長い場合や質点オブジェクト２０６の数を少なくした場合であっても、簡易な計算によってクロスシミュレーションを行うことができるようになる。
【０１４４】
なお、上記実施形態では、支持変化量を計算すると（ステップＳ８０２）、必ず支持修正量を計算する（ステップＳ８０３）こととした上で、仮想連結点５０１の位置を求め、ローカル座標系２４１基準の質点変化量を計算することとしているが（ステップＳ８０５）、常にこのような処理を行うのではなく、従来の手法と適宜使い分けることも可能である。
【０１４５】
すなわち、支持変化量を計算した後、当該支持変化量が所定の閾値より大きければ、上記実施形態の処理を行うが、そうでなければ、仮想連結点５０１の位置を求める処理などは行わず、従来のクロスシミュレーションの技術を適用する、というものである。すなわち、後者の場合には、グローバル座標系２３６基準で現在の質点オブジェクト２０６の位置と更新間隔時間経過後の連結点２１２の位置との差から、仮想弾性体２１１による弾性力を求めて、質点オブジェクト２０６の位置を更新する。ここで、前者の処理は計算量が多く、後者の処理は計算量が少ない。
【０１４６】
したがって、このような態様を採用した場合には、更新間隔時間を短くしたり質点オブジェクト２０６の数を減らしたことによる影響が大きくなると想定される場合（支持変化量が所定の閾値より大きい場合）のみ、ローカル座標系２４１基準の処理を行い、そうでなければ、計算量が少ないグローバル座標系２３６基準の処理を行うことによって、情報処理装置１００における処理速度を適切に高速に保つことができるようになる。
【産業上の利用可能性】
【０１４７】
以上説明したように、本発明によれば、仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【０１４８】
【図１】プログラムを実行することにより、本発明のシミュレーション装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。
【図２】仮想空間内に配置される支持オブジェクト、質点オブジェクト、仮想弾性体および各座標系の関係を示す説明図である。
【図３】仮想弾性体と質点オブジェクトの種々の連結の様子を示す説明図である。
【図４】支持オブジェクトや質点オブジェクト等の、一般的なオブジェクトに関する位置や姿勢の変化のシミュレートの手法を示す説明図である。
【図５】物理モデルにしたがって、位置や姿勢の変化が計算されたときの様子を示す説明図である。
【図６】本実施形態に係るシミュレーション装置の概要構成を示す説明図である。
【図７】本シミュレーション装置にて実行されるシミュレーション方法の処理の流れを示すフローチャートである。
【符号の説明】
【０１４９】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
１１１  マイク
２０１  支持オブジェクト
２０６  質点オブジェクト
２１１  仮想弾性体
２１２  連結点
２３１  仮想空間
２３６  グローバル座標系
２４１  ローカル座標系
４０１  オブジェクト
４０２  重心
４０３  基準点
４５１  重力
４５２  外力
４５３  変位
５０１  仮想連結点
５１１  外力
５１２  外力
５１３  外力
５１４  外力
７０１  シミュレーション装置
７０２  記憶部
７０３  支持計算部
７０４  支持修正部
７０５  質点計算部
７０６  支持更新部
７０７  質点更新部
７０８  画像生成部
【図１】
2008003824.tif 000003
【図２】
2008003824.tif 000004
【図３】
2008003824.tif 000005
【図４】
2008003824.tif 000006
【図５】
2008003824.tif 000007
【図６】
2008003824.tif 000008
【図７】
2008003824.tif 000009