説明

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

【課題】仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートする技術を提供する。
【解決手段】記憶部702は、仮想空間内で仮想弾性体に連結される支持オブジェクトや質点オブジェクトの位置等を記憶し、支持計算部703は、更新間隔時間経過による支持オブジェクトの位置等の変化を表す支持変化量を計算し、支持修正部704は、支持変化量を所定の閾値を超えないように修正した支持修正量を計算し、質点計算部705は、支持オブジェクトが支持修正量だけ移動した位置等にあると仮定して、質点オブジェクトの支持オブジェクトに対する更新間隔時間経過後の位置を表す質点変化量を計算し、支持更新部706は、支持変化量により支持オブジェクトの位置等を更新し、質点更新部707は、更新後の支持オブジェクトの位置等と質点変化量により質点オブジェクトの位置を更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【0002】
従来から、コンピュータグラフィックス(Computer Graphics;CG)において、人間のキャラクターが着ているマントやスカートなど、形状可変で柔軟な布や紙などをシミュレートする技術が提案されている。キャラクターの位置や姿勢(一般には、仮想空間においてキャラクターを構成する部材を表すオブジェクトの位置、および、姿勢。ここで、「姿勢」とは、基準となるある座標系の各座標軸に対する、当該キャラクターや当該オブジェクトに固定された座標系の各座標軸の向きの相違を意味する。)が変化すると、その縁等がキャラクターに連結された布等の形状も変化するからである。このような技術は、以下の文献に開示されている。
【特許文献1】特開2005−099952号公報
【0003】
[特許文献1]では、布・衣服・毛髪等の柔軟な物体を複数の四角形ポリゴンで構成し、その頂点を仮想的な質点として、隣り合う質点の間を仮想的なバネで連結したモデルにより、その形状を求めるクロスシミュレーション関連技術が開示されている。この際には、所定の更新間隔時間(典型的には、垂直同期割り込み周期)おきに微分方程式を数値積分して解くことになる。
【0004】
ここで、更新間隔時間とは、数値積分の分野では「ステップ時間」「時間刻み幅」とも呼ばれ、微小時間であることが必要とされるが、「微小」の程度は適用分野に応じて様々であり、更新間隔時間を短かくすればするほど、シミュレーションの誤差は小さくなるが、数値積分に要する計算量が多くなる。
【0005】
また、クロスシミュレーションにおいては、質点の数を増やせば増やすほど、布等の形状をそれだけ正確にシミュレートできる、とも考えられるが、質点の数を増やせばそれだけ、数値積分に要する計算量が多くなる。
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、計算速度が遅く計算資源が限定された情報処理装置などにおいてこのようなシミュレーションを行う場合には、この更新間隔時間をできるだけ長くし、質点の数をできるだけ少くして、計算を簡易に済ませたいという要望は大きい。
【0007】
一方で、更新間隔時間を長くしたり、質点の数を少なくしたりした場合に、プレイヤーなどに操作されるキャラクターに布などのオブジェクトが連結されている場合にキャラクターの動きが激しいと、バネが過度に長くなり、現実の布などの形状からかけ離れたものとなってしまう、という問題が生じる。
【0008】
このようなシミュレーションをリアルタイムに行う必要がないCG映画製作では、更新間隔時間をより短くしたり、質点の数を増やすことによってこの問題を解決することも不可能ではないが、ゲーム装置においてシミュレーションを行う場合には、リアルタイム性が必要となるため、更新間隔時間をより短くしたり質点の数を増やす手法を採用することはできず、新たな技術が求められている。
【0009】
本発明は、上記のような課題を解決するもので、仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0011】
本発明の第1の観点に係るシミュレーション装置は、記憶部、支持計算部、支持修正部、質点計算部、支持更新部、質点更新部を備え、以下のように構成する。
【0012】
ここで、シミュレーションの対象は、仮想空間内に配置される支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置であり、当該仮想空間内において、複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結されている。
【0013】
また、記憶部は、仮想空間内に配置される支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置と、を記憶する。
【0014】
スカートをあらわす布等の物体は、仮想空間では、典型的には、仮想弾性体(仮想的なバネ等)によって互いに二次元面的に連結された質点オブジェクトにより表現され、その縁の一部は、キャラクターの胴体をあらわす支持オブジェクトに連結されている。
【0015】
人間がはいていない状態のスカートは、二次元平面としての広がりを有するが、人間がスカートをはくと、全体の形状は概ね円錐台の斜面の形状となり、しわやひだができて凹凸も生じるため、質点オブジェクトの位置は実際には三次元的な分布を呈する。
【0016】
すなわち、ここでいう「二次元面的」とは、ある基本状態において、ある質点オブジェクトは、その周囲に配置される質点オブジェクトとの間で仮想弾性体により連結される、という意味である。
【0017】
ここで、支持オブジェクトについては、仮想空間内における位置および姿勢(向き)を記憶する必要があるが、質点オブジェクトについては、位置がわかれば十分なことが多い。もちろん、シミュレートされる物体の種類によっては、質点オブジェクトにもついて姿勢の情報をさらに管理することとしても良い。
【0018】
一方、支持計算部は、更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する。
【0019】
ここで考慮されるのは、支持オブジェクトに与えられる外力やユーザからの指示入力の種類などのパラメータであり、現実世界の物理法則に対応する法則に基づいて、物理シミュレーションを行って更新間隔時間後の支持オブジェクトの位置および姿勢を計算する。このときには、外力として、重力や風力などを想定することもありうる。
【0020】
なお、質点オブジェクトと支持オブジェクトとを結ぶ仮想弾性体による弾性力は、一般には小さいと考えられるので、支持オブジェクトの位置および姿勢の変化を計算する場合には、当該弾性力を無視する手法を採用しても良いことが多い。
【0021】
支持変化量としては、支持オブジェクトに固定される座標系の原点がグローバル座標系においてどれだけ移動するかを表す位置の変化量と、支持オブジェクトに固定される座標系の姿勢がグローバル座標系においてどれだけ回転するかを表す姿勢の変化量の2つを想定するのが典型的である。
【0022】
一方、支持修正部は、計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する。
【0023】
支持変化量の大きさが所定の閾値を超えた場合には、仮想弾性体の変形量がきわめて大きくなり、現実に即したシミュレーションができなくなる可能性が高い。そこで、仮想弾性体の変形量を抑えるために、支持変化量よりも小さい支持修正量を考え、これに基づいて、後述するように、クロスシミュレーションを行うのである。
【0024】
さらに、質点計算部は、記憶された当該支持オブジェクトの位置および姿勢から計算された支持修正量だけ移動した位置および姿勢と、記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、
(a)当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力を計算し、
(b)当該更新間隔時間が経過した後の、当該支持オブジェクトに対する当該質点オブジェクトの相対的な位置を表す質点変化量を、当該計算された力から計算する。
【0025】
すなわち、本来ならば大きく変化したはずの支持オブジェクトの位置と姿勢の変化を適宜修正してある程度の大きさに抑制し、抑制された位置および姿勢の変化に基づいて、各質点オブジェクト、特に、支持オブジェクトに連結される質点オブジェクトの位置の変化を計算する。支持オブジェクトの位置や姿勢が変化すると、支持オブジェクトと質点オブジェクトとを連結する仮想弾性体の長さも変化する。したがって、この長さの変化に応じた弾性力が質点オブジェクトに印加される。この際に、重力や風力を考慮にいれて計算を行うこともできる。また、質点変化量を計算するための座標系としては、支持オブジェクトに固定された座標系を採用することが望ましい。
【0026】
一方、支持更新部は、記憶部に記憶される支持オブジェクトの位置および姿勢から計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する。
【0027】
支持オブジェクトについては、計算された支持変化量に基づいて、その位置および姿勢を更新する、というものである。
【0028】
さらに、質点更新部は、記憶部に記憶される複数の質点オブジェクトの位置のそれぞれを、位置および姿勢が更新された当該支持オブジェクトの位置から、当該質点オブジェクトに対して計算された質点変化量だけ移動した位置で、当該質点オブジェクトの位置を更新する。
【0029】
質点オブジェクトについては、まず支持変化量だけ移動することにより、支持オブジェクトに固定される座標系における座標を変化させないままに移動する。そして、当該支持オブジェクトに固定される座標系において、その質点オブジェクトについて計算された質点変化量に基づいて、その質点オブジェクトの位置を移動させるのである。
【0030】
本発明によれば、支持オブジェクトと質点オブジェクトを連結する仮想弾性体の長さが長くなりすぎるためにシミュレーション結果が不自然になることを防止し、クロスシミュレーションの時間単位である更新間隔時間がある程度長くとも、適切なクロスシミュレーションを行うことができるようになる。
【0031】
また、本発明のシミュレーション装置において、支持修正部は、計算された支持変化量を、単調増加し極限が当該所定の閾値以下である内分関数に適用して、当該支持修正量を計算するように構成することができる。
【0032】
たとえば、支持変化量のうち位置に係る変化量について考えた場合には、支持オブジェクトの現在の位置と、現在の位置に当該位置に係る変化量だけ加算した位置と、を内分する位置が、現在の位置に支持修正量の位置に係る部分だけ加算した位置と一致するようにする。
【0033】
また、支持変化量のうち姿勢に係る変化量について考えた場合には、当該変化量は、ある軸のまわりをある回転角度だけ回転させることとして表現されるが、修正量に係る回転角度を0度と当該角度を内分する角度にすることによって、内分を行うことができる。
【0034】
本発明は、上記発明の好適実施形態に係るものであり、支持修正量を支持変化量から求める際に、適切な関数を選択することで、所定の閾値を超えないように計算することができるようになる。
【0035】
また、本発明のシミュレーション装置において、支持修正部における内分関数は、当該支持変化量のうち位置の変化量に対して適用される位置内分関数と、当該支持変化量のうち姿勢の変化量に対して適用される姿勢内分関数と、からなり、当該位置内分関数は、当該位置の変化量の上限値に0以上1以下の係数を乗じる単調増加関数であり、当該姿勢内分関数は、当該姿勢の変化に係る軸周りの回転角の上限値に0以上1以下の係数を乗じる単調増加関数であるように構成することができる。
【0036】
本発明は、上記発明の好適実施形態にかかるものであり、支持変化量に対して0と1との間の係数を乗じることで、支持修正量を求めるため、容易に支持修正量を計算することができるようになる。
【0037】
また、本発明のシミュレーション装置において、質点計算部は、当該位置内分関数に係る係数の逆数もしくは当該係数の逆数の自乗を当該仮想弾性体の弾性係数に乗じて、当該質点変化量を計算するように構成することができる。
【0038】
シミュレーションの適用分野によっては、上記発明で十分な精度のシミュレーションができる場合も多いが、上記発明では、質点オブジェクトの移動についての時間の進みは、シミュレーション時間に対して遅くなるものと考えられる。そこで、質点オブジェクトに印加される外力に対して、修正のための係数の逆数等を乗じることにより、外力の大きさを大きくし、質点オブジェクトの移動を速くして、シミュレーション時間に対する遅れを補償するものである。
【0039】
外力としては、仮想弾性体による弾性力を想定するが、重力や風力などが印加される場合には、当該重力や風力についても同様に係数の逆数等を乗じることにより、遅れを補償することとしても良い。
【0040】
本発明によれば、質点オブジェクトに印加される外力に係数の逆数等を乗じることにより、質点オブジェクトの移動の時間的な遅れを補償して、よりリアルな運動をさせることができるようになる。
【0041】
また、本発明のシミュレーション装置は、画像生成部を備え、画像生成部は、記憶される複数の質点オブジェクトを頂点とするポリゴンに所定のテクスチャを貼り込んで、当該支持オブジェクトと、当該支持オブジェクトに連結される可変形オブジェクトと、の画像を生成するように構成することができる。
【0042】
本発明は、上記発明の好適実施形態に係るものであり、質点オブジェクトを頂点とするポリゴンがスカートなどの形状に合わせて定義されており、当該ポリゴンに布などの表面の質感を表すテクスチャを貼り込むことにより、柔らかに形状を変化させる可変形オブジェクトを生成することができるようになる。
【0043】
本発明のその他の観点に係るシミュレーション方法は、仮想空間内に配置される支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置をシミュレーションの対象とし、複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結されている。
【0044】
そして、当該シミュレーション方法は、支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置と、を記憶する記憶部、支持計算部、支持修正部、質点計算部、支持更新部、質点更新部を備えるシミュレーション装置にて実行され、支持計算工程、支持修正工程、質点計算工程、支持更新工程、質点更新工程を備え、以下のように構成する。
【0045】
すなわち、支持計算工程では、支持計算部が、更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する。
【0046】
一方、支持修正工程では、支持修正部が、計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する。
【0047】
さらに、質点計算工程では、質点計算部が、記憶された当該支持オブジェクトの位置および姿勢に計算された支持修正量だけ移動した位置および姿勢と、記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力による当該更新間隔時間の経過による当該質点オブジェクトの当該支持オブジェクトを基準とする相対的な位置を表す質点変化量を計算する。
【0048】
そして、支持更新工程では、支持更新部が、記憶部に記憶される支持オブジェクトの位置および姿勢から計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する。
【0049】
一方、質点更新工程では、質点更新部が、記憶部に記憶される複数の質点オブジェクトの位置のそれぞれに対して、当該位置から計算された支持変化量だけ移動し、さらに当該質点オブジェクトに対して計算された質点変化量だけ当該位置および姿勢が更新された支持オブジェクトを基準に移動した位置で、当該質点オブジェクトの位置を更新する。
【0050】
本発明のその他の観点に係るプログラムは、コンピュータを上記のシミュレーション装置として機能させ、コンピュータに上記のシミュレーション方法を実行させるように構成する。
【0051】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【0052】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0053】
本発明によれば、仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【0054】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例1】
【0055】
図1は、プログラムを実行することにより、本発明のシミュレーション装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【0056】
情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory) 102と、RAM(Random Access Memory)103と、インターフェイス104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD−ROM(Digital Versatile Disc ROM)ドライブ108と、NIC(Network Interface Card)109と、音声処理部110と、マイク111と、を備える。
【0057】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態のシミュレーション装置が実現される。
【0058】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0059】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0060】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0061】
インターフェイス104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【0062】
インターフェイス104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0063】
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0064】
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0065】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0066】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0067】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【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】
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【0070】
音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
【0071】
さらに、情報処理装置100には、インターフェイス104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部110でのミキシング等の処理ができるようにする。
【0072】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0073】
以上で説明した情報処理装置100は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
【0074】
たとえば、一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NICを備え、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用する。
【0075】
図2は、仮想空間内に配置される支持オブジェクト、質点オブジェクト、仮想弾性体および各座標系の関係を示す説明図である。以下、本図を参照して説明する。
【0076】
本図に示すように、キャラクターの胴体に相当する支持オブジェクト201には、連結点212に仮想弾性体211の一端が連結され、仮想弾性体211の他端は、質点オブジェクト206に連結されている。また、質点オブジェクト206同士も仮想弾性体211を介して連結されている。このようにして、互いに質点オブジェクト206同士は、全体としてスカートやマントの布のような形状をなしている。
【0077】
仮想空間231内には、グローバル座標系236のほか、支持オブジェクト201に固定されているローカル座標系241が用意されており、グローバル座標系236とローカル座標系241との間の変換は、原点の移動と座標系の回転の2つに還元することができる。
【0078】
支持オブジェクト201は、ユーザの指示入力等に基づいて移動したり、情報処理装置100が所定のアルゴリズムに基づいて制御するキャラクターに相当するものである。したがって、仮想空間231内を適宜移動したり、その姿勢(グローバル座標系236に対してローカル座標系241がどの軸廻りにどれだけ回転しているか、に相当する。)を変化させることができる。またこの際に、仮想空間231内に想定された物理法則にしたがうこととし、重力や風力、摩擦力などの影響を受けるようにモデル化することができる。
【0079】
質点オブジェクト206は、布の単位面積あたりの質量をモデル化するものであり、質点オブジェクト206が均等に分布されている場合には、それぞれに布全体の質量を質点オブジェクト206の個数で割った質量が割り当てられる。もっとも、割り当てる質量は、質点オブジェクト206の分布密度やモデル化の対象となる布の形状などの特徴によって適宜変更が可能である。
【0080】
さて、このような仮想弾性体211には、自然長が割り当てられている。自然長とは、もっとも自然な形状のときの長さであり、スカートの布などを表現する場合には、平面状に均等に布を広げた場合の質点オブジェクト206同士の距離を、その質点オブジェクト206同士を連結する仮想弾性体211の自然長とするのが一般的である。
【0081】
仮想弾性体211の長さ(当該仮想弾性体211が連結する質点オブジェクト206同士の距離)が自然長より長くなると、その長くなった距離に所定のバネ定数を乗じた力の弾性力(質点オブジェクト206同士を引き寄せる方向の引力)が発生する。一方、自然長より短くなると、その短くなった距離に所定のバネ定数を乗じた力の弾性力(質点オブジェクト206同士を遠ざける方向の反発力)が発生する。
【0082】
支持オブジェクト201と質点オブジェクト206を連結する仮想弾性体211は、支持オブジェクト201の移動にともなって質点オブジェクト206群を移動させるための弾性力を発生させる点で、重要な役割を果たす。一方、仮想空間231内の物理法則をシミュレートする際の時間の刻み幅(更新間隔時間)が長いと、当該仮想弾性体211の長さが異常に長くなってしまい、このような場合には、モデル化された布の表現が極めて不自然になってしまう。本実施形態では、このような状況を簡易に抑制する手法を採用する。
【0083】
なお、本図に示す例では、スカートを表現するため、質点オブジェクト206を扇形状に仮想弾性体211が連結しているが、適用分野や形状によって、その他の連結手法を用いることとしても良い。
【0084】
図3は、仮想弾性体と質点オブジェクトの種々の連結の様子を示す説明図である。以下、本図を参照して説明する。
【0085】
本図(a)に示す例では、格子点状に質点オブジェクト206が配置され、仮想弾性体211が質点オブジェクト206を頂点とする正方形の辺の位置に配置されて、隣り合う質点オブジェクト206同士を連結している。最も単純な連結手法の一例である。
【0086】
本図(b)に示す例では、本図(a)に示す例において、さらに、正方形の対角する頂点の間(対角線)も仮想弾性体211が連結している。本図(a)に示す連結手法にくらべて、斜め方向の変形がより自然となるという特徴を有する。
【0087】
本図(c)に示す例は、質点オブジェクト206同士を連結する仮想弾性体211が三角形の辺をなすようにするものであり、有限要素法におけるメッシュの区切り方に類似するものである。形状が正方形に限定されないため、布が任意の形状となるような場合にも適用が可能である。
【0088】
以下では、支持オブジェクト201および質点オブジェクト206の物理モデルについて、簡単に説明する。図4は、支持オブジェクト201や質点オブジェクト206等の、一般的なオブジェクトに関する位置や姿勢の変化のシミュレートの手法を示す説明図である。以下、本図を参照して説明する。
【0089】
ある時点tにおいて、質量m(t)のオブジェクト401には、重心402に対して印加される重力451 m(t)gのほか、仮想弾性体211等により重心402から離れた位置に印加される外力452 f1(t),…, fN(t)が、影響を与える。
【0090】
これらの重力451や複数の外力452のベクトル総和F(t)は、
F(t) = m(t)g + Σi=1N fi(t)
【0091】
であるから、これをオブジェクト401の質量m(t)で割ると、オブジェクト401の加速度ベクトル
a(t) = F(t)/m(t)
が求められる。
【0092】
ある時点tにおけるオブジェクト401の重心402の位置ベクトルr(t)(基準点403を基準とする。)と速度ベクトル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でのオブジェクト401の重心の位置r(t)をシミュレートすることができる。
【0093】
一方、姿勢の変化については、重心から離れた位置に印加される外力452を考慮する。すなわち、時刻tにおけるオブジェクト401の角速度ベクトルω(t)は、当該回転ベクトルω(t)を軸に、単位時間あたり|ω(t)|の角度だけ、オブジェクト401が回転しようとしていることをあらわす。また、オブジェクト401の姿勢ベクトルθ(t)は、角速度ベクトルω(t)を積分したものと考えることができる。
【0094】
なお、グローバル座標系236にローカル座標系241の各軸の方向を一致させた後に、この姿勢ベクトルθ(t)を軸に、角度|θ(t)|だけ回転させると、時刻tにおけるローカル座標系241の姿勢が得られるのである。
【0095】
一方、複数の外力452をベクトルf1(t),…, fN(t)とし、重心402から、外力452が印加される場所への変位453をベクトルs1(t),…, sN(t)とすると、当該オブジェクト401に対する与えられるトルクL(t)は、
L(t) = Σi=1N si(t)×fi(t)
と表現することができ、オブジェクト401の慣性モーメント行列を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
と近似計算が可能である。
【0096】
一般に、位置ベクトルrを軸ベクトルc = (cx,cy,cz)の周りで角度ψだけ回転させた結果r'を求めるには、クォータニオンを利用したり、回転行列を利用することが可能である。以下では、クォータニオンを用いる手法について説明する。
【0097】
さて、この回転を表すクォータニオンCは、
C = (cxsin(ψ/2),cysin(ψ/2),czsin(ψ/2),cos(ψ/2))
と表現することができる。
【0098】
また、位置ベクトルr = (rx,ry,rz)に対するクォータニオンRは、
R = (rx,ry,rz,0)
と表現することができる。
【0099】
すると、クォータニオンCによって、クォータニオンRを回転させる演算は、位置ベクトルr'に対するクォータニオンをR'としたとき、
R' = C R C*
と表現できる。ここで・*はクォータニオンの共役である。
R' = (rx',ry',rz',rw')
であれば、
r' = (rx',ry',rz')
である。このほか、回転行列を用いる手法を利用しても良い。
【0100】
以下、ベクトルcを軸にベクトルrを角度|c|だけ回転させる演算を、spin(c,r)のように表記するものとする。
【0101】
さて、図5は、上記のような物理モデルにしたがって、位置や姿勢の変化が計算されたときの様子を示す説明図である。以下、本図を参照して説明する。
【0102】
本図には、支持オブジェクト201と質点オブジェクト206のそれぞれの位置の関係を図示する。ここでは、理解を容易にするため、質点オブジェクト206は支持オブジェクト201に仮想弾性体211を介して直接連結されているもの1つだけを図示し、縮尺率を適宜変更して、大袈裟に記載している。
【0103】
また、理解を容易にするため、グローバル座標系236のZ軸とローカル座標系241のz軸は平行であり、支持オブジェクト201は、グローバル座標系236のX−Y平面(ローカル座標系241のx−y平面)内を移動して位置を変化させ、z軸(Z軸)まわりに回転して姿勢を変化させた場合を例にあげる。また、連結点212は、ローカル座標系241におけるx軸上に配置されているものとする。
【0104】
上記のように、支持オブジェクト201について、時刻tにおける状況から時刻t+Δtにおける状況を近似計算すれば、本図に示すように、支持オブジェクト201の時刻tにおける位置r(t)および姿勢θ(t)と時刻t+Δtにおける位置r(t+Δt)および姿勢θ(t+Δt)が判明する。これらの差が、支持変化量である。
【0105】
本図では、時刻tと時刻t+Δtにおける支持オブジェクト201における位置の差のベクトルをΔr、姿勢(回転ベクトルであるため、回転する角で図示している。)の差のベクトルをΔθと表している。
【0106】
すると、連結点212の時刻t+Δtにおける位置q(t+Δt)は、以下のように、時刻t+Δtにおけるローカル座標系241の原点(支持オブジェクト201の位置)から見て、ローカル座標系241の原点まわりにΔθだけ回転した位置、ということになる。
q(t+Δt) = r(t) + Δr + spin(Δθ,q(t)-r(t))
【0107】
ここで、質点オブジェクト206の位置p(t)から位置p(t+Δt)を求める場合の状況を考える。質点オブジェクト206に印加される弾性力の大きさおよび向きは、質点オブジェクト206(位置p(t))から連結点212(位置q(t))への変位ベクトル(q(t)-p(t))によって定まる、とするのが、従来のシミュレーションの手法である。
【0108】
しかしながら、この変位ベクトルが、時刻tと時刻t+Δtとで、大きく異なると、すなわち、q(t+Δt)-p(t+Δt)とq(t)-p(t)が大きく異なると、シミュレーションが不自然になってしまう。このような状況が生じる場合として、ΔrやΔθが大きい場合が考えられる。そこで、本実施形態では、以下のような手法を採用する。
【0109】
まず、|Δr|および|Δθ|の大きさに対して、それぞれ上限値Rおよび上限値Θを定めておく。これらの値は、シミュレーションが不自然にならないような適切な値を、たとえば実際に模擬実験を行うことによって定めることができる。
【0110】
つぎに、値域が0から1に向かって単調に増加する関数h(・)を用意する。すなわち、h(・)は、以下のような性質を見たす関数である。
h(0) = 0
limx→∞ h(x) = 1
a<b ⇒ h(a)≦h(b)
【0111】
このような関数としては、
h(x) = x (0≦x≦1)
= 1 (1<x)
や、適当な定数Hを用いた
h(x) = 2・arctan(H・x)/π
などのほか、階段状に変化する関数を採用することもできる。
【0112】
そして、支持修正量のうち、位置に係る支持修正量Δsおよび姿勢に係る支持修正量Δψを
Δs = R h(|Δr|) Δr/|Δr|
Δψ = Θ h(|Δθ|) Δθ/|Δθ|
のように定める。Δs,Δψは、それぞれ、Δr,Δθのそれぞれと原点の間を内分するベクトル、すなわち、Δr,Δθのそれぞれの方向ベクトルにΔr/|Δr|,Δθ/|Δθ|に上限値R,Θを乗じ、さらに0以上1以下の係数を乗じたものである。
【0113】
そして、支持オブジェクト201が、位置r(t)+Δs、姿勢θ(t)+Δψにあるものと仮想的に考えて、このときの仮想連結点501の位置Q(t)を求める。すなわち、
Q(t) = r(t) + Δs + spin(Δψ,q(t)-r(t))
となる。
【0114】
仮想連結点501の位置Q(t)は、時刻tにおける連結点212の位置と、時刻t+Δtにおける連結点212の位置と、を、内分する位置(線分上で内分する場合もあるし、曲線上で内分する場合もある。)と考えることができる。
【0115】
そして、質点オブジェクト206の時刻tにおける位置p(t)から、時刻t+Δtにおける位置p(t+Δt)を求める際には、質点オブジェクト206は仮想弾性体211によって仮想連結点501と連結されている、と考えるのである。すなわち、q(t)-p(t)でもq(t+Δt)-p(t)でもなく、Q(t)-p(t)に基づいて質点オブジェクト206に対する当該仮想弾性体211による弾性力を求めるのである。
【0116】
Q(t)の位置はq(t+Δt)の位置よりもq(t)に近いから、支持オブジェクト201の位置が大きく変化してしまったとしても、Q(t)-p(t)の変化はある程度抑制することができる。したがって、仮想弾性体211が不自然に長く伸びてしまうような状況は防止できるのである。
【0117】
このように、仮想連結点501に基づいて質点オブジェクト206に対する外力を求めることとする。本図では、仮想連結点501に連結される仮想弾性体211による外力511と、他の質点オブジェクト206に連結される仮想弾性体211による外力512、513、514とが表示されている。
【0118】
上記の物理モデルと、質点オブジェクト206の位置p(t)と、これらの外力から、時刻t+Δtにおける仮想的な位置を求めることができる。これは、支持オブジェクト201が少ししか動いていない、と仮想的に考えた場合の、質点オブジェクト206の移動先に相当する。この移動先の仮想的な位置521をu(t+Δt)とする。
【0119】
しかしながら、支持オブジェクト201の本来の移動を考えれば、位置u(t+Δt)をそのままp(t+Δt)とするのでは、支持オブジェクト201と離れすぎてしまうこととなる。そこで、以下のような考え方を採用する。
【0120】
まず、質点オブジェクト206の支持オブジェクト201に対する位置(質点変化量)は、
u(t+Δt) - (r(t)+Δs)
【0121】
と表現することができる。
【0122】
時刻t+Δtには、支持オブジェクト201の重心自体は、
r(t+Δt) = r(t) + Δr
に移動しており、しかも、
Δθ
だけ回転しているのであるから、
p(t+Δt) = r(t) + Δr + spin(Δθ,u(t+Δt)-(r(t)+Δs))
を、新たな質点オブジェクト206の位置とする。これが本実施形態の特徴の一つである。
【0123】
このとき、質点オブジェクト206の更新間隔時間後の速度は、
(p(t+Δt)-p(t))/Δt
とすれば良い。
【0124】
本実施形態によれば、更新間隔時間Δtが少々長い場合や、質点オブジェクト206の数が少ない場合であっても、不自然でないクロスシミュレーションを実現することができる。
【0125】
なお、本実施形態では、質点オブジェクト206と支持オブジェクト201との間のインタラクションが実質的に小さくなっている。そこで、用途によっては、これを簡易に補償したい場合もある。
【0126】
このような場合には、質点オブジェクト206と支持オブジェクト201とを連結している仮想弾性体211のバネ係数にh(|Δr|)やh(|Δr|)2等を乗じて、仮想弾性体211の弾性力を仮想的に大きくすることとしても良い。
【0127】
本手法によれば、支持オブジェクト201の位置や視線の変化量を仮想的に小さくしたことを、バネ定数を仮想的に大きくすることで、埋め合わせることができるようになる。
【0128】
本実施形態によれば、従来から広く用いられている剛体や質点、バネなどの物理モデルの計算を簡易に修正して、時間の刻み幅が大きな場合や質点の数を減らした場合であっても、リアルに運動のシミュレーションを行うことができるようになる。以下では、具体的なシミュレーション装置の構成について説明する。
【0129】
図6は、本実施形態に係るシミュレーション装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【0130】
本実施形態に係るシミュレーション装置701は、記憶部702、支持計算部703、支持修正部704、質点計算部705、支持更新部706、質点更新部707、画像生成部708を備える。
【0131】
ここで、記憶部702は、RAM 103等によって実現され、
支持オブジェクト201の現在時刻における位置、速度、姿勢、角速度、質量、慣性モーメント、
複数の質点オブジェクト206の現在時刻における位置、速度、質量、
複数の仮想弾性体211のそれぞれが連結する質点オブジェクト206同士の関係、もしくは、質点オブジェクト206と支持オブジェクト201の連結点の位置、
複数の仮想弾性体211の自然長、バネ定数、
重力や風力などの外力の分布、
現在の時刻、時刻の刻み幅(更新間隔時間)、
支持オブジェクト201の表面や質点オブジェクト206のメッシュを構成するポリゴンと、当該ポリゴンに貼り付けられるテクスチャ
などの情報を記憶する。
【0132】
図7は、本シミュレーション装置701にて実行されるシミュレーション処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0133】
処理が開始されると、CPU 101は、RAM 103に用意された記憶部702を初期化して、適切な初期値を与える(ステップS801)。
【0134】
ついで、支持計算部703は、支持オブジェクト201の現在の位置r(t)および姿勢θ(t)や、各種の外力の状況等から、上記の計算手法に基づいて、支持変化量Δr,Δθを求める(ステップS802)。したがって、CPU 101は、RAM 103と共働して、支持計算部703として機能する。
【0135】
さらに、支持修正部704は、求められたΔr,Δθ等から、上記の計算手法に基づいて、支持修正量Δs,Δψを求める(ステップS803)。したがって、CPU 101は、RAM 103と共働して、支持修正部704として機能する。
【0136】
さらに、質点計算部705は、各質点オブジェクトについて(ステップS804)、上記のように求められたΔs,Δψ等から、上記の計算手法に基づいて、それぞれの質点オブジェクト206に対する質点変化量u(t+Δt)を求める(ステップS805)処理を繰り返す(ステップS806)。この際に、他の質点オブジェクト206とのみ連結され、支持オブジェクト201とは連結されていない質点オブジェクト206については、通常のクロスシミュレーションによる計算と同様の手法を採用する。したがって、CPU 101は、RAM 103と共働して、質点計算部705として機能する。
【0137】
ついで、支持更新部706は、求められた支持変化量Δr,Δθ等に基づいて記憶部702に記憶される支持オブジェクト201の位置や姿勢、速度や角速度の情報を、上記のような計算によって得られたr(t+Δt),θ(t+Δt),v(t+Δt),ω(t+Δt)の値に更新する(ステップS807)。したがって、CPU 101は、RAM 103と共働して、支持更新部706として機能する。
【0138】
質点更新部707は、それぞれの質点オブジェクト206に対して(ステップS808)、記憶部702に記憶される当該質点オブジェクト206の位置、速度の情報を、上記のような計算によって得られた更新間隔時間後の位置p(t+Δt)、および、質点オブジェクト速度(p(t+Δt)-p(t))/Δtの値に更新する(ステップS809)ことを繰り返す(ステップS810)。したがって、CPU 101は、RAM 103と共働して、質点更新部707として機能する。
【0139】
さらに、画像生成部708は、RAM 103内の情報に基づいて、支持オブジェクト201の表面や質点オブジェクト206を頂点とするポリゴンに、テクスチャ情報を貼り付けて、仮想空間231の様子を表す画像をRAM 103内のフレームバッファに生成する(ステップS811)。したがって、CPU 101は、画像処理部107およびRAM 103と共働して、画像生成部708として機能する。本処理については、各種の3次元グラフィックスの技術を適用することが可能である。
【0140】
そして、垂直同期割り込みが生じるまで待機する(ステップS812)。この間は、他の処理をコルーチン的に実行することが可能である。
【0141】
垂直同期割り込みが発生したら、仮想空間231における時刻を、更新間隔時間(垂直同期割り込み周期)だけ増やして、時刻を更新する(ステップS813)。なお、画像生成については、適宜間引くことも可能である。このときは、時刻の更新における更新間隔時間も、間引いた数に応じて調整する。
【0142】
そして、画像処理部107は、CPU 101の制御の下、フレームバッファの内容をフレームメモリに転送して、生成された画像を画面に表示し(ステップS814)、ステップS802に戻る。
【0143】
このような処理を行うことにより、本実施形態のシミュレーション装置701は、更新間隔時間の幅が長い場合や質点オブジェクト206の数を少なくした場合であっても、簡易な計算によってクロスシミュレーションを行うことができるようになる。
【0144】
なお、上記実施形態では、支持変化量を計算すると(ステップS802)、必ず支持修正量を計算する(ステップS803)こととした上で、仮想連結点501の位置を求め、ローカル座標系241基準の質点変化量を計算することとしているが(ステップS805)、常にこのような処理を行うのではなく、従来の手法と適宜使い分けることも可能である。
【0145】
すなわち、支持変化量を計算した後、当該支持変化量が所定の閾値より大きければ、上記実施形態の処理を行うが、そうでなければ、仮想連結点501の位置を求める処理などは行わず、従来のクロスシミュレーションの技術を適用する、というものである。すなわち、後者の場合には、グローバル座標系236基準で現在の質点オブジェクト206の位置と更新間隔時間経過後の連結点212の位置との差から、仮想弾性体211による弾性力を求めて、質点オブジェクト206の位置を更新する。ここで、前者の処理は計算量が多く、後者の処理は計算量が少ない。
【0146】
したがって、このような態様を採用した場合には、更新間隔時間を短くしたり質点オブジェクト206の数を減らしたことによる影響が大きくなると想定される場合(支持変化量が所定の閾値より大きい場合)のみ、ローカル座標系241基準の処理を行い、そうでなければ、計算量が少ないグローバル座標系236基準の処理を行うことによって、情報処理装置100における処理速度を適切に高速に保つことができるようになる。
【産業上の利用可能性】
【0147】
以上説明したように、本発明によれば、仮想空間に配置された柔軟な布や紙など、形状可変なオブジェクトの形状の変化を簡易にシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【0148】
【図1】プログラムを実行することにより、本発明のシミュレーション装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。
【図2】仮想空間内に配置される支持オブジェクト、質点オブジェクト、仮想弾性体および各座標系の関係を示す説明図である。
【図3】仮想弾性体と質点オブジェクトの種々の連結の様子を示す説明図である。
【図4】支持オブジェクトや質点オブジェクト等の、一般的なオブジェクトに関する位置や姿勢の変化のシミュレートの手法を示す説明図である。
【図5】物理モデルにしたがって、位置や姿勢の変化が計算されたときの様子を示す説明図である。
【図6】本実施形態に係るシミュレーション装置の概要構成を示す説明図である。
【図7】本シミュレーション装置にて実行されるシミュレーション方法の処理の流れを示すフローチャートである。
【符号の説明】
【0149】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェイス
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
111 マイク
201 支持オブジェクト
206 質点オブジェクト
211 仮想弾性体
212 連結点
231 仮想空間
236 グローバル座標系
241 ローカル座標系
401 オブジェクト
402 重心
403 基準点
451 重力
452 外力
453 変位
501 仮想連結点
511 外力
512 外力
513 外力
514 外力
701 シミュレーション装置
702 記憶部
703 支持計算部
704 支持修正部
705 質点計算部
706 支持更新部
707 質点更新部
708 画像生成部

【特許請求の範囲】
【請求項1】
仮想空間に配置される支持オブジェクトの位置および姿勢、ならびに、複数の質点オブジェクトの位置をシミュレートするシミュレーション装置であって、
当該仮想空間において、当該複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結され、
当該支持オブジェクトの位置および姿勢と、当該複数の質点オブジェクトの位置と、を記憶する記憶部、
更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する支持計算部、
前記計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する支持修正部、
前記記憶された当該支持オブジェクトの位置および姿勢から前記計算された支持修正量だけ移動した位置および姿勢と、前記記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、
(a)当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力を計算し、
(b)当該更新間隔時間が経過した後の、当該支持オブジェクトに対する当該質点オブジェクトの相対的な位置を表す質点変化量を、当該計算された力から計算する
質点計算部、
前記記憶部に記憶される支持オブジェクトの位置および姿勢から前記計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する支持更新部、
前記記憶部に記憶される複数の質点オブジェクトの位置のそれぞれを、前記位置および姿勢が更新された当該支持オブジェクトの位置から、当該質点オブジェクトに対して前記計算された質点変化量だけ移動した位置で、当該質点オブジェクトの位置を更新する質点更新部
とを備えるシミュレーション装置。
【請求項2】
請求項1に記載のシミュレーション装置であって、
前記支持修正部は、前記計算された支持変化量を、単調増加し極限が当該所定の閾値以下である内分関数に適用して、当該支持修正量を計算する
ことを特徴とするシミュレーション装置。
【請求項3】
請求項2に記載のシミュレーション装置であって、
前記支持修正部における内分関数は、当該支持変化量のうち位置の変化量に対して適用される位置内分関数と、当該支持変化量のうち姿勢の変化量に対して適用される姿勢内分関数と、からなり、
当該位置内分関数は、当該位置の変化量の上限値に0以上1以下の係数を乗じる単調増加関数であり、
当該姿勢内分関数は、当該姿勢の変化に係る軸周りの回転角の上限値に0以上1以下の係数を乗じる単調増加関数である
ことを特徴とするシミュレーション装置。
【請求項4】
請求項3に記載のシミュレーション装置であって、
前記質点計算部は、当該位置内分関数に係る係数の逆数もしくは当該係数の逆数の自乗を当該仮想弾性体の弾性係数に乗じて、当該質点変化量を計算する
ことを特徴とするシミュレーション装置。
【請求項5】
請求項1から4のいずれか1項に記載のシミュレーション装置であって、
前記記憶される複数の質点オブジェクトを頂点とするポリゴンに所定のテクスチャを貼り込んで、当該支持オブジェクトと、当該支持オブジェクトに連結される可変形オブジェクトと、の画像を生成する画像生成部
をさらに備えることを特徴とするシミュレーション装置。
【請求項6】
仮想空間に配置される支持オブジェクトの位置および姿勢、ならびに、複数の質点オブジェクトの位置をシミュレートするシミュレーション方法であって、
当該支持オブジェクトの位置および姿勢と、当該複数の質点オブジェクトの位置と、を記憶する記憶部、支持計算部、支持修正部、質点計算部、支持更新部、質点更新部を備えるシミュレーション装置にて実行され、
当該仮想空間において、当該複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結され、
前記支持計算部が、更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する支持計算工程、
前記支持修正部が、前記計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する支持修正工程、
前記質点計算部が、前記記憶された当該支持オブジェクトの位置および姿勢から前記計算された支持修正量だけ移動した位置および姿勢と、前記記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、
(a)当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力を計算し、
(b)当該更新間隔時間が経過した後の、当該支持オブジェクトに対する当該質点オブジェクトの相対的な位置を表す質点変化量を、当該計算された力から計算する
質点計算工程、
前記支持更新部が、前記記憶部に記憶される支持オブジェクトの位置および姿勢から前記計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する支持更新工程、
前記質点更新部が、前記記憶部に記憶される複数の質点オブジェクトの位置のそれぞれを、当該位置および姿勢が更新された支持オブジェクトの位置から、当該質点オブジェクトに対して前記計算された質点変化量だけ移動した位置で、当該質点オブジェクトの位置を更新する質点更新工程
とを備えるシミュレーション方法。
【請求項7】
仮想空間に配置される支持オブジェクトの位置および姿勢、ならびに、複数の質点オブジェクトの位置をコンピュータにシミュレートさせるプログラムであって、
当該仮想空間において、当該複数の質点オブジェクトのそれぞれは、当該支持オブジェクトもしくは当該複数の質点オブジェクトのうち他の質点オブジェクトと仮想弾性体を介して連結され、
当該プログラムは、当該コンピュータを、
仮想空間内に配置される支持オブジェクトの位置および姿勢と、複数の質点オブジェクトの位置と、を記憶する記憶部、
更新間隔時間の経過による当該支持オブジェクトの位置および姿勢の変化を表す支持変化量を計算する支持計算部、
前記計算された支持変化量を所定の閾値を超えないように修正した支持修正量を計算する支持修正部、
前記記憶された当該支持オブジェクトの位置および姿勢から前記計算された支持修正量だけ移動した位置および姿勢と、前記記憶された当該複数の質点オブジェクトの位置と、から、当該複数の質点オブジェクトのそれぞれについて、
(a)当該質点オブジェクトが連結される仮想弾性体が当該質点オブジェクトに及ぼす力を計算し、
(b)当該更新間隔時間が経過した後の、当該支持オブジェクトに対する当該質点オブジェクトの相対的な位置を表す質点変化量を、当該計算された力から計算する
質点計算部、
前記記憶部に記憶される支持オブジェクトの位置および姿勢から前記計算された支持変化量だけ移動した位置および姿勢で、当該支持オブジェクトの位置および姿勢を更新する支持更新部、
前記記憶部に記憶される複数の質点オブジェクトの位置のそれぞれを、当該位置および姿勢が更新された支持オブジェクトの位置から、当該質点オブジェクトに対して前記計算された質点変化量だけ移動した位置で、当該質点オブジェクトの位置を更新する質点更新部
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2008−3824(P2008−3824A)
【公開日】平成20年1月10日(2008.1.10)
【国際特許分類】
【出願番号】特願2006−172207(P2006−172207)
【出願日】平成18年6月22日(2006.6.22)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】