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

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

Info

Publication number
JP2008040800A
JP2008040800A JP2006214379A JP2006214379A JP2008040800A JP 2008040800 A JP2008040800 A JP 2008040800A JP 2006214379 A JP2006214379 A JP 2006214379A JP 2006214379 A JP2006214379 A JP 2006214379A JP 2008040800 A JP2008040800 A JP 2008040800A
Authority
JP
Japan
Prior art keywords
mode
objects
speed
collision
collision determination
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006214379A
Other languages
English (en)
Other versions
JP4425890B2 (ja
Inventor
Ryuichiro Okamoto
竜一郎 岡本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Konami Digital Entertainment Co Ltd
Original Assignee
Konami Digital Entertainment Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Konami Digital Entertainment Co Ltd filed Critical Konami Digital Entertainment Co Ltd
Priority to JP2006214379A priority Critical patent/JP4425890B2/ja
Publication of JP2008040800A publication Critical patent/JP2008040800A/ja
Application granted granted Critical
Publication of JP4425890B2 publication Critical patent/JP4425890B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract


【課題】仮想空間に配置されたオブジェクトの衝突と移動を簡易にシミュレートする技術を提供する。
【解決手段】仮想空間には複数のオブジェクトが配置され、シミュレーション装置400の記憶部401は、オブジェクトの位置、速度、モードを記憶し、衝突判定部402は、衝突判定モードのオブジェクト同士が衝突するか否かを、判定し、衝突更新部403は、衝突するオブジェクト同士のそれぞれの衝突後の速度を計算して計算結果で当該オブジェクトの速度を更新し、そのモードを通過モードに更新し、移動更新部404は、複数のオブジェクトのそれぞれの更新間隔時間後の位置および速度を計算して計算結果で当該オブジェクトの位置および速度を更新し、モード更新部405は、通過モードのオブジェクトについてモード復帰条件が満たされると、そのモードを衝突判定モードに更新する。
【選択図】図4

Description

本発明は、仮想空間に配置されるオブジェクトの移動や衝突を簡易な計算でシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
従来から、コンピュータグラフィックスやシミュレーションの分野では、仮想空間に配置されるオブジェクトの位置や速度を、当該仮想空間内の重力や外力に基づいて更新したり、オブジェクト同士の衝突をシミュレートする技術が提案されている。
このようなオブジェクトの運動および衝突のシミュレーション技術については、たとえば以下の文献に開示されている。
Mark Deloura編、川西 裕幸監訳、狩野智英飜訳、Game Programming Gems、2.2 剛体の運動方程式の数値積分(P.146−155)、4.5 3D衝突検出(P.376−387)、株式会社ボーンディジタル、2001年7月25日発行
このような技術においては、[非特許文献1]に開示されるように、現実世界の物理法則に基づく微分方程式を所定の時間の刻み幅(「ステップ時間」もしくは「更新間隔時間」と呼ぶことがある。)で数値積分する技術が用いられる。
また、衝突のシミュレーションでは、瞬間的に働く撃力という反発力を想定して、運動量保存則が成立するように、オブジェクトの速度を更新する。
オブジェクトの数が増加したときを考えると、数値積分の計算はオブジェクトの数に比例する計算量が必要となるが、あるオブジェクトと他のオブジェクトとの衝突判定についてはかなりの計算が必要になるとともに、衝突判定についてはオブジェクトの数の自乗に比例する計算量が必要となる。したがって、できるだけシミュレーションとしての自然さを維持したまま衝突判定の計算をできるだけ簡略化する技術が強く求められている。
本発明は、上記のような課題を解決するもので、仮想空間に配置されるオブジェクトの移動や衝突を簡易な計算でシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
本発明の第1の観点に係るシミュレーション装置は、仮想空間に配置される複数のオブジェクトの位置および速度をシミュレートし、記憶部、衝突判定部、衝突更新部、移動更新部、モード更新部を備えるように構成する。
すなわち、当該複数のオブジェクトの衝突と運動とをシミュレートする。仮想空間としては、3次元空間を考えるのが典型的であるが、たとえばピンボールゲームやパチンコゲームを実現するような場合、すなわち、略2次元空間内でのオブジェクトの衝突と運動とをシミュレートする場合にも、本発明の原理を適用することができる。
ここで、記憶部は、当該複数のオブジェクトのそれぞれについて、当該オブジェクトの位置および速度と、当該オブジェクトが衝突判定モードと通過モードとのいずれであるかを示す情報と、を記憶する。
オブジェクトの位置および速度は、仮想空間の次元数に合わせて、3次元ベクトルもしくは2次元ベクトルとして記憶するのが典型的である。また、オブジェクトのモードは、衝突判定モードと通過モードとのいずれかであり、前者の場合は衝突判定の対象とするが、後者の場合は衝突判定の対象としない。このようなモードの分別によって、計算処理の低減化を図る点に、本発明の特徴の一つがある。
一方、衝突判定部は、当該複数のオブジェクトのうち、少なくとも一方が衝突判定モードであるオブジェクト同士が衝突するか否かを、記憶された位置により判定する。
上記のように、通過モードのオブジェクトは、衝突判定の対象とされない。したがって、通過モードのオブジェクトの割合が大きくなればなるほど、衝突判定および衝突に伴う処理に要する計算の総量は、少なくなる。
衝突するか否かを判定する対象となるオブジェクト同士の組み合わせについては、以下のような2種類の態様がありうる。
(1)いずれか少なくとも一方が衝突判定モードであるオブジェクト同士については、他方が通過モードであるか衝突判定モードあるか否かにかかわらず、衝突判定を行う。
(2)両方とも衝突判定モードであるオブジェクト同士についてのみ、衝突判定を行う。
前者の場合は、より正確な衝突のシミュレーションが可能であり、後者の場合は、計算量をより抑制したシミュレーションが可能となる。したがって、いずれの態様を採用するか、は、用途に応じて適宜選択が可能である。
さらに、衝突更新部は、衝突すると判定されたオブジェクト同士のそれぞれの衝突後の速度を計算して、記憶部に記憶される当該オブジェクトの速度を当該衝突後の速度に更新し、当該オブジェクトのモードを通過モードに更新する。
衝突のシミュレーションについては、両オブジェクトの位置から衝突の際に両オブジェクトが変形すると想定される衝突平面を考え、衝突後の速度のうち衝突平面に対する法線成分は反発係数を乗じることにより求め、衝突平面に沿う成分は摩擦係数に基づいて求めるのが典型的であるが、その他の各種の衝突にともなう反発のモデルを採用することができる。
また、衝突したオブジェクト同士は、通過モードに移行する。すなわち、本発明では、「あるオブジェクトについての衝突が短時間に連続して生ずるのは極めて稀であるため、これを無視する。」との仮定をするモデル化を行うのである。
そして、移動更新部は、当該複数のオブジェクトのそれぞれについて、記憶された位置および速度により所定の更新間隔時間後の位置および速度を計算して、記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新する。
上記のように、衝突のシミュレーションは、衝突判定モードのオブジェクトについてのみ行うが、移動のシミュレーションは、モードが衝突判定モードか通過モードかにかかわらず、すべてのオブジェクトについて行う。
典型的には、各オブジェクトに印加される仮想空間の重力、各種の抵抗力(風力、摩擦力等。)、オブジェクト同士がバネなどの弾性体で連結されている場合はその弾性力などの総和、すなわち、当該オブジェクトに対する外力の総和を、当該オブジェクトの質量で割ることで、当該オブジェクトの加速度を求めることができる。求められた加速度に更新間隔時間を乗じて現在のオブジェクトの速度に加算すれば、更新間隔時間後のオブジェクトの速度が得られる。また、現在のオブジェクトの速度と更新間隔時間後のオブジェクトの速度の平均に更新間隔時間を乗じて、現在の位置に加算すれば、更新間隔時間後のオブジェクトの位置が得られる。
一方、モード更新部は、当該複数のオブジェクトのうち、通過モードのオブジェクトのそれぞれについて、所定のモード復帰条件が満たされている場合、記憶部に記憶される当該オブジェクトのモードを衝突判定モードに更新する。
すなわち、通過モードに移行したオブジェクトは、モード復帰条件が満たされると、衝突判定モードに復帰する。本発明では、「あるオブジェクトについての衝突が短時間に連続して生ずるのは極めて稀であるが、ある程度の時間が経過すれば衝突が生じうる」との仮定をするモデル化を行うのである。なお、モード復帰条件の種々に態様については後述する。
本発明によれば、衝突判定の対象となるオブジェクトの数を抑制することによって、オブジェクトの衝突と移動のシミュレーションをできるだけ少ない計算量で行うことができるようになる。
また、本発明のシミュレーション装置において、移動更新部は、当該複数のオブジェクトのうち、
(a)モードが、衝突判定モードのオブジェクトのそれぞれについて、記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新し、
(b)モードが、通過モードであるオブジェクトのそれぞれについて、記憶部に記憶される位置と速度を維持する
ように構成することができる。
上記の発明では、移動更新部は、全オブジェクトについて、更新間隔時間おきに位置と速度の更新を行っていたが、本発明では、通過モードのオブジェクトについては、更新間隔時間おきの位置と速度の更新は行わないこととする。
すなわち、本発明では、「衝突が生じてからモード復帰条件が満たされるまでの間」については、オブジェクトは事実上移動しない、とのモデル化を行う。
後述するように、オブジェクトが連続して通過モードとなっている時間の長さはある程度の短時間とするのが典型的であり、この「ある程度の短時間」は、「オブジェクトが互いに接触し合ってから、弾性変形して相手方のオブジェクトと押し合い、反発力によって逆向きに動き始め、相手方のオブジェクトから離れるまでに要する時間」に相当するものと考えることができる。
本発明によれば、上記発明の効果に加え、移動計算の対象となるオブジェクトの数を抑制することによって、オブジェクトの衝突と移動のシミュレーションをできるだけ少ない計算量で行うことができるようになる。
また、本発明のシミュレーション装置において、移動更新部は、当該複数のオブジェクトのうち、
(a)モードが、衝突判定モードのオブジェクトのそれぞれについて、記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新し、
(b)モードが、前回は衝突判定モードであり、今回は通過モードであるオブジェクトのそれぞれについて、次にモード復帰条件が満たされるまでの経過時間後の位置および速度を計算して、記憶部に記憶される当該オブジェクトの位置および速度を、当該経過時間後の位置および速度に更新し、
(c)モードが、前回も今回も通過モードであるオブジェクトのそれぞれについて、記憶部に記憶される位置と速度を維持する
ように構成することができる。
上記の発明では、移動更新部は、全オブジェクトについて、更新間隔時間おきに位置と速度の更新を行っていたが、本発明では、通過モードに移行したときに、「衝突が生じてからモード復帰条件が満たされるまでの経過時間」を求め、その間の移動をまとめて計算して、移動更新部におけるオブジェクトの位置と速度の計算の繰り返しの一部をスキップするものである。
すなわち、本発明では、「衝突が生じてからモード復帰条件が満たされるまでの間」については、オブジェクトに加えられる外力は事実上変化しない、とのモデル化を行う。後述するように、オブジェクトが連続して通過モードとなっている時間の長さはある程度の短時間とするのが典型的であるから、上記のモデル化が適当である場合も多いからである。
本発明によれば、上記の発明の効果に加え、移動計算の対象となるオブジェクトの繰り返しの数を抑制することによって、オブジェクトの衝突と移動のシミュレーションをできるだけ少ない計算量で行うことができるようになる。
また、本発明のシミュレーション装置において、モード更新部は、当該複数のオブジェクトのうち、通過モードのオブジェクトのそれぞれについて、当該オブジェクトのモードが、衝突判定モードから通過モードに移行してからの経過時間が、所定の通過維持時間に至ると、当該モード復帰条件が満たされるものとして、当該オブジェクトのモードを衝突判定モードに更新するように構成することができる。
すなわち、オブジェクトが一旦衝突すると、通過維持時間が経過するまでは、他のオブジェクトとの衝突は生じない、と仮定するモデル化を行うものである。衝突が生じてからの経過時間の計測は、各オブジェクトごとに行うのが典型的であるが、全オブジェクトについてまとめて行うこととしても良い。
本発明は上記発明の好適実施形態に係るもので、通過維持時間という衝突が連続して起きることが極めて珍しい時間を想定することによって、簡易かつ適切にオブジェクトの衝突と移動のシミュレーションを行うことができるようになる。
また、本発明のシミュレーション装置において、モード更新部は、当該複数のオブジェクトのうち、通過モードのオブジェクトのすべてについて、当該更新間隔時間の整数倍に等しいリフレッシュ時間おきに、当該モード復帰条件が満たされるものとして、当該通過モードのオブジェクトのそれぞれのモードを衝突判定モードに更新するように構成することができる。
たとえば、リフレッシュ時間として画面表示の時間間隔である垂直同期割り込みの周期を採用し、更新間隔時間として、当該周期の整数分の1の時間を採用した場合、垂直同期割り込みが生じるごとに全オブジェクトのモードを衝突判定モードに移行するものである。
本発明は、上記発明の好適実施形態に係るもので、全オブジェクトについて、リフレッシュ時間という更新間隔時間の整数倍の時間を想定し、リフレッシュ時間おきに全オブジェクトを衝突判定モードに設定することによって、簡易かつ適切にオブジェクトの衝突と移動のシミュレーションを行うことができるようになる。
また、本発明のシミュレーション装置は、画像生成部をさらに備え、画像生成部は、当該リフレッシュ時間おきに、当該仮想空間に配置される複数のオブジェクトの画像を、記憶された複数のオブジェクトの位置により生成するように構成することができる。
上記のように、リフレッシュ時間として垂直同期割り込みの周期を採用した場合には、リフレッシュ時間(もしくはその2倍〜3倍程度の整数倍)おきに仮想空間のオブジェクト配置から画像を生成し、これを順次表示することによって、オブジェクトの運動の様子をアニメーション表示するのである。
本発明によれば、仮想空間内でオブジェクトが衝突したり運動したりする様子のアニメーション画像を、簡易な計算で生成することができるようになる。
また、本発明のシミュレーション装置において、衝突更新部は、衝突すると判定されたオブジェクト同士のそれぞれについて、当該オブジェクトが所定のモード維持条件を満たす場合、当該オブジェクトのモードを通過モードに更新するのにかえて、当該オブジェクトのモードを衝突判定モードに維持するように構成することができる。
すなわち、モード維持条件を満たすオブジェクトについては、衝突した後も通過モードに移行せずに衝突判定モードのままとする手法である。モード維持条件は、そのオブジェクトの運動が激しい場合や、そのオブジェクトが注目されるべきオブジェクトである場合などに満たされるなどの態様を採用することができる。
本発明によれば、計算量を抑制しつつも、シミュレーションの精度に影響を与えやすいオブジェクトや、注目すべきオブジェクトについては、より正確なシミュレーションができるようになる。
本発明のその他の観点に係るシミュレーション方法は、仮想空間に配置される複数のオブジェクトの位置および速度をシミュレートし、当該複数のオブジェクトのそれぞれについて、当該オブジェクトの位置および速度と、当該オブジェクトが衝突判定モードと通過モードとのいずれであるかを示す情報と、を記憶する記憶部、衝突判定部、衝突更新部、移動更新部、モード更新部を備えるシミュレーション装置にて実行され、衝突判定工程、衝突更新工程、移動更新工程、モード更新工程を備え、以下のように構成する。
すなわち、衝突判定工程では、衝突判定部が、当該複数のオブジェクトのうち、少なくとも一方が衝突判定モードであるオブジェクト同士が衝突するか否かを、記憶された位置により判定する。
一方、衝突更新工程では、衝突更新部が、衝突すると判定されたオブジェクト同士のそれぞれの衝突後の速度を計算して、記憶部に記憶される当該オブジェクトの速度を当該衝突後の速度に更新し、当該オブジェクトのモードを通過モードに更新する。
さらに、移動更新工程では、移動更新部が、当該複数のオブジェクトのそれぞれについて、記憶された位置および速度により所定の更新間隔時間後の位置および速度を計算して、記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新する。
そして、モード更新工程では、モード更新部が、当該複数のオブジェクトのうち、通過モードのオブジェクトのそれぞれについて、所定のモード復帰条件が満たされている場合、記憶部に記憶される当該オブジェクトのモードを衝突判定モードに更新する。
本発明のその他の観点に係るプログラムは、コンピュータを上記のシミュレーション装置として機能させ、コンピュータに上記のシミュレーション方法を実行させるように構成する。
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
本発明によれば、仮想空間に配置されるオブジェクトの移動や衝突を簡易な計算でシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
図1は、プログラムを実行することにより、本発明のシミュレーション装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
情報処理装置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と、を備える。
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態のシミュレーション装置が実現される。
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
インターフェイス104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
インターフェイス104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
さらに、情報処理装置100には、インターフェイス104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部110でのミキシング等の処理ができるようにする。
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
以上で説明した情報処理装置100は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
たとえば、一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NICを備え、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用する。
(衝突のモデル)
以下では、本実施形態に係るシミュレーション装置にて想定するオブジェクト同士の衝突のモデルの種々の態様について説明する。本衝突モデルには、物理現象のシミュレーションをできるだけ忠実に行いたい場合のほか、計算を簡易に済ませるために尤もらしい近似を行う場合など、用途に合わせて種々適用することができる。
図2は、衝突するオブジェクト同士の位置関係を示す説明図である。以下、本図を参照して説明する。
本図に示すように、仮想空間201内に2つの球形のオブジェクトi 211、オブジェクトj 231が配置されており、原点203からオブジェクトi 211、オブジェクトj 231への位置ベクトル213、233を、それぞれr[i],r[j]とする。また、オブジェクトi 211、オブジェクトj 231の半径は、それぞれ、R[i],R[j]である。
したがって、
|r[i] - r[j]| ≦ R[i] + R[j]
が成立すると、オブジェクトi 211、オブジェクトj 231は現在衝突中である、ということになる。ここで、|p|はベクトルpの長さを意味する。
本図に示すように、オブジェクトi 211、オブジェクトj 231の速度ベクトル215、235を、それぞれv[i],v[j]とする。オブジェクトi 211に対するオブジェクトj 231の相対速度ベクトル251は、
v[j] - v[i]
であり、オブジェクトi 211に対するオブジェクトj 231の相対位置ベクトル252は、
r[j] - r[i]
であるが、相対速度ベクトル251と相対位置ベクトル252のなす角253(θ[j,i])が0度〜90度であれば、両者は離れつつあり、90度〜180度であれば、両者は近付きつつあることになる。
ここで、ベクトルp,qの内積をp・qと書くとすると、
(v[j] - v[i])・(r[j] - r[i]) = |v[j] - v[i]| |r[j] - r[i]| cosθ[j,i]
であるから、
(v[j] - v[i])・(r[j] - r[i])<0 … 衝突が始まりつつある。
(v[j] - v[i])・(r[j] - r[i])=0 … 現在衝突中。
(v[j] - v[i])・(r[j] - r[i])>0 … 衝突が終わりつつある。
のように考えることができる。
ここで、相対位置ベクトル252
r[j] - r[i]
と同じ向きの方向ベクトル254を
z[j,i] = (r[j] - r[i])/|r[j] - r[i]|
と書くこととする。
さて、本図は、オブジェクトi 211に対するオブジェクトj 231の相対位置ベクトル252
r[j] - r[i]
や、その方向ベクトル254
z[j,i]
に垂直な方向から、仮想空間201を見た様子を示している。
ここで、オブジェクトi 211、オブジェクトj 231の衝突が生じている仮想的な衝突平面261を考えることができる。本モデルでは、衝突平面261は、その法線ベクトルが方向ベクトル254に等しく、オブジェクトi 211、オブジェクトj 231の位置をその半径の比で内分する内分点262を通過すると考える。
そして、この方向ベクトル254(z[j,i])に直交する2つの単位方向ベクトル301、302(x[j,i],y[j,i])を考える。衝突平面261は、2つの単位方向ベクトル301、302(x[j,i],y[j,i])のいずれに対しても平行である。
まず、衝突平面261に垂直な方向の方向ベクトル254に直交する2つの単位方向ベクトル301、302と、(x[j,i],y[j,i])方向ベクトル254(z[j,i])と、は、衝突平面261に固定された座標系における座標軸の方向をあらわす方向ベクトルである。なお、方向ベクトル301、302(x[j,i],y[j,i])が平面を張り、その平面が衝突平面261に平行であれば、その方向は任意である。典型的には、方向ベクトル301、302(x[j,i],y[j,i])も互いに直交する。
図3は、各ベクトルの位置関係をさらに詳細に示す説明図である。以下、本図を参照して説明する。本図は、方向ベクトル302(y[j,i])に平行な視点・視線から当該仮想空間201内のベクトルを見たものである。したがって、方向ベクトル302(y[j,i])は点になるため、図示を省略している。また、衝突平面261は、直線で描かれることになる。
オブジェクトi 211、オブジェクトj 231の衝突前の速度ベクトル215、235(v[i],v[j])は、これらのベクトルx[j,i],y[j,i],z[j,i]を用いて、以下のように各成分に分解できる。
v[i] = (v[i]・x[j,i])x[j,i] + (v[i]・y[j,i])y[j,i] + (v[i]・z[j,i])z[j,i] = p x[j,i] + q y[j,i] + r z[j,i];
v[j] = (v[j]・x[j,i])x[j,i] + (v[j]・y[j,i])y[j,i] + (v[j]・z[j,i])z[j,i] = P x[j,i] + Q y[j,i] + R z[j,i]
ここで、オブジェクトi 211、オブジェクトj 231の衝突後の速度ベクトル215'、231'(v'[i],v'[j])を各成分に分解して以下のように表す。
v'[i] = p' x[j,i] + q' y[j,i] + r' z[j,i];
v'[j] = P' x[j,i] + Q' y[j,i] + R' z[j,i]
ここで、p,q,r,P,Q,R,p',q',r',P',Q',R'は、いずれもスカラー量である。
本モデルでは、オブジェクトi 211、オブジェクトj 231の間の衝突反発係数をe[j,i]、衝突摩擦係数をμ[j,i]とおく。衝突反発係数は、衝突平面261に垂直な速度成分に係る量であり、衝突摩擦係数は、衝突平面261に平行な速度成分に係る量である。これらの2つの係数の値は、いずれも0以上1以下である。
以下では、誤解の生じない限り、e[j,i]をeと書き、μ[j,i]をμと書くこととする。衝突摩擦係数について、
P' - p' = μ(P - p);
Q' - q' = μ(Q - q)
が成立し、衝突反発係数について、
R' - r' = -e(R - r)
が成立するものと想定する。
e = e[j,i]は、1であれば衝突しても完全弾性反発し、0であれば、反発せず一体化(接着・密着・合体)してしまうことを意味する。
μ = μ[j,i]は、0であれば摩擦力によって両者が一体化(接着・密着・合体)してしまい、1であれば摩擦力がまったく生じないことを意味する。
本モデルにおいて、オブジェクトi 211、オブジェクトj 231のそれぞれの質量w[i],w[j](以下、理解を容易にするため、誤解の生じない限り、w[i]をmと書き、w[j]をMと書くものとする。)としたとき、現実世界と同様に運動量保存則が成立すると考えると、
mp + MP = mp' + MP';
mq + MQ = mq' + MQ';
mr + MR = mr' + MR'
が成立する。
これらの方程式を解くことによって、p',q',r',P',Q',R'を求めることができる。すなわち、
p' = (m+μM)p/(m+M) + (1-μ)MP/(m+M);
q' = (m+μM)q/(m+M) + (1-μ)MQ/(m+M);
r' = (m-eM)r/(m+M) + (1+e)MR/(m+M);
P' = (M+μm)P/(m+M) + (1-μ)mp/(m+M);
Q' = (M+μm)Q/(m+M) + (1-μ)mq/(m+M);
R' = (M-em)R/(m+M) + (1+e)mr/(m+M)
である。
これにより、衝突後のオブジェクトi 211、オブジェクトj 231の速度ベクトル215',235'(v'[i],v'[j])を定めることができる。
このように、上記のモデルでは、2つのオブジェクトi 211、オブジェクトj 231を球形であると仮定し、衝突平面261の位置および向き(姿勢)をその位置関係から求め、衝突平面261を介して両者が衝突・反発し合うと仮定し、衝突反発係数と衝突摩擦係数を考慮するとともに、運動量保存則が成立するように物理現象をモデル化している。
たとえばオブジェクトの形状が球形でない場合は、重心同士の位置関係とオブジェクトの大まかな大きさから、当該オブジェクトを「球形」で近似して、このモデルを適用することができる。また、衝突平面261の位置および向きを、その他の手法によって定めても良い。
このほか、オブジェクト同士の衝突のシミュレーションを適用する用途によっては、さらに計算の簡略化を図ることができる。たとえば、宇宙空間を舞台にしたシューティングゲームで小惑星帯を背景とするときに、小惑星同士の衝突をシミュレーションしたいときなどは、必ずしも現実の物理法則に則ったシミュレーションが必要なわけではなく、ある程度尤もらしい近似が得られれば十分である。
このような場合には、以下のような近似解法を採用しても良い。まず、x[j,i],y[j,i]方向については、衝突に際して摩擦は生じないこととするのが最も単純である。すなわち、
p' = p,q' = q,P' = p,Q' = Q
とする。なお、このモデル化は、上記のモデルの単純な場合(μ[j,i] = 1)で、運動量保存則も維持される。
一方、z[j,i]方向については、反発の計算を簡略化することが考えられる。すなわち、
r' = -r,R' = -R
あるいは、
r' = R,R' = r
とする。これらのモデルでは、必ずしも運動量保存則が成立しないが、用途によっては、このような近似で十分な場合がある。
このほか、各オブジェクトの質量w[i],w[j]や衝突摩擦係数μ[j,i]、衝突反発係数e[j,i]が一定の定数であるとする等の手法もある。
また、上記の手法においてp,q,r,P,Q,Rを求めるには、グローバル座標系から方向ベクトルz[j,i]を座標軸の一つとするローカル座標系への座標変換が必要となる。このような座標変換の処理を簡易な計算で近似する手法もありうる。
すなわち、グローバル座標系における方向ベクトル254(z[j,i])の成分のうち、絶対値が最も大きい成分の軸を、衝突平面261の法線方向とするという手法である。グローバル座標系の軸の方向は、3×2の6種類ありうるので、その中からいずれかを、方向ベクトル254(z[j,i])の方向として近似する。そして、衝突平面261に平行な方向の軸は、グローバル座標系における残りの2つの軸に合わせる。
本手法では、グローバル座標系におけるオブジェクトi 211、オブジェクトj 231等の位置ベクトル213、233や速度ベクトル215、235に対する座標変換は、各成分の符号を反転させるか否か、という計算のみで行うことができる。
このように、衝突のシミュレーションには種々の計算を要するため、これを簡易化するために、以下に説明する「間引き」を行う。「間引き」では、一旦衝突が生じたら、そのオブジェクトについては、それに続く所定の時間(定数の場合もあるし、変数の場合もある。)だけ、衝突判定を行わないこととする。以下詳細に説明する。
(シミュレーション装置)
図4は、本実施形態に係るシミュレーション装置の概要構成を示す模式図である。以下、本図を参照して説明する。
本実施形態に係るシミュレーション装置400は、記憶部401、衝突判定部402、衝突更新部403、移動更新部404、モード更新部405、画像生成部406を備え、情報処理装置100上にてプログラムを実行することによって実現される。
記憶部401には、M個のオブジェクトのそれぞれの情報が、配列として記憶される。すなわち、以下のような情報である。
位置ベクトルr[0],r[1],…,r[M-1];
速度ベクトルv[0],v[1],…,v[M-1];
質量w[0],w[1],…,w[M-1];
大きさ(半径)R[0],R[1],…,R[M-1];
モードc[0],c[1],…,c[M-1]
ここで、モードc[0],c[1],c[M-1]のそれぞれには、当該オブジェクトの現在のモードが、「衝突判定モード」と「通過モード」のいずれであるかの情報が記録される。
このほか、仮想空間201内において各オブジェクトに印加される外力として、たとえば、重力、摩擦力、バネ等の弾性体で連結されている場合の弾性力、ロケットエンジンやジェットエンジンなどの推進力、粘性力などを想定することも可能である。
本実施形態では、当該オブジェクトに印加される外力ベクトルの総和もまた、記憶部401の配列に記憶することとする。すなわち、以下のような情報である。
外力ベクトルf[0],f[1],…,f[M-1]
本実施形態では、現在の仮想空間201の様子を表す画像を生成する周期、すなわちリフレッシュ時間Tは、垂直同期割り込みの整数倍とする。たとえば、垂直同期割り込み周期が1/60秒であるとき、T = 1/60 × 1 = 1/60秒、あるいは、T = 1/60 × 2 = 1/30秒とする、等である。
そして、リフレッシュ時間TをD個(Dは2以上の整数)に分割して、Δt = T/Dをシミュレーションにおけるステップ時間(更新時間間隔)とする。そして、現在のステップが、周期Tにおける何回目のステップに相当するか、を表すカウンタdと、最後に画像を生成した時刻tと、を記憶するための領域も用意する。時刻tの単位は、発生した垂直同期割り込みの回数を表すカウンタの値とするのが典型的であるが、その他の種々の単位を採用しても良い。
したがって、RAM 103は、記憶部401として機能する。
図5は、本シミュレーション装置400にて実行されるシミュレーション処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
本処理が開始されると、CPU 101は、記憶部401の各領域の初期化を行う(ステップS500)。初期化を行うための初期化データは、DVD−ROMドライブ108に装着されたDVD−ROMから読み出したり、乱数によって生成する等の手法を採用することができる。
オブジェクトのモードについてi = 0,1,…,M-1のそれぞれについて、
c[i]←衝突判定モード
と初期化するのが典型的である。ここで、「←」は代入を意味する。すなわち、本実施形態では、処理の開始時については、全オブジェクトについて、衝突判定を行うものとする。ただし、c[i]についての初期化処理は、後述するステップS502においても行われるので、省略しても良い。
また、
d←0;
t←現在時刻
とする。本実施形態では、後述するように、dが0である場合は画像生成を行うこととしている。
次に、CPU 101は、d = 0であるか否かを判定し(ステップS501)、d = 0である場合(ステップS501;Yes)、i = 0,1,…,M-1のそれぞれについて、
c[i]←衝突判定モード
と更新する(ステップS502)。
すなわち、本実施形態では、d = 0のときに、モード復帰条件が満たされ、全オブジェクトを衝突判定モードに移行する。したがって、CPU 101は、RAM 103と共働して、モード更新部405として機能する。
そして、時刻がt + Tになるまで待機する(ステップS503)。この待機の間は、他の各種の計算処理をコルーチン的に実行することも可能である。このほか、ユーザによるコントローラ105の操作に基づいて外力ベクトルf[0],f[1],…,f[M-1]を計算、更新したりする等の処理を行うことも可能である。
時刻tから時刻t + Tまでの間には、リフレッシュ時間Tを垂直同期割り込み周期で割った回数だけ、垂直同期割り込みが発生する。
そして、時刻tは、垂直同期割り込みが生じて画像生成を行った時刻を意味するから、時刻がt + Tになるまで待機する、ということもまた、画像生成のタイミングの直近の垂直同期割り込みが生じるまで待機することに相当する。
この待機が終了し、垂直同期割り込みが生じた後は、CPU 101は、t←t + Tを実行して、画像生成を行った最終時刻を更新する(ステップS504)。
さらに、画像生成部406は、RAM 103に記憶されるオブジェクトの情報を参照して、仮想空間201に配置されるオブジェクトの様子を表示する画像をフレームメモリ内に生成する(ステップS505)。
このような画像生成には、各種の3次元コンピュータグラフィックスの手法を適用することができる。典型的には、仮想空間の中に視点と視線を設定し、視線とオブジェクトを結ぶ線分が視線と直交する投射面と交差する位置を、当該オブジェクトが画像内に描画される位置とする透視投影を行うが、平行投影や曲線・曲面を用いた投影(たとえば魚眼レンズで見た様子を表示する場合等)などのグラフィックス技術を採用することもできる。
フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。このようにして、リフレッシュ時間おきに表示される画像を更新することにより、仮想空間201におけるオブジェクトの運動の様子をアニメーション表示するのである。
したがって、CPU 101は、RAM 103や画像処理部107と共同して、画像生成部406として機能する。
さて、画像が生成された(ステップS505)後、もしくは、d≠0である場合(ステップS501;No)、CPU 101は、衝突判定にともなう処理を開始する。この際、CPU 101は、RAM 103内もしくはCPU 101のレジスタにより表現される変数iおよび変数jを用いる。
i = 0,1,…,M-1のそれぞれについて、以下の処理を繰り返す(ステップS506〜)。まず、c[i]=衝突判定モードであるか否かを判定し(ステップS507)、そうでなければ(ステップS507;No)、iについての次の繰り返しステップに移行する。
一方、c[i]=衝突判定モードである場合(ステップS507;Yes)、j = i+1,i+2,…,M-1のそれぞれについて、以下の処理を繰り返す(ステップS508〜)。まず、c[j]=衝突判定モードであるか否かを判定し(ステップS509)、そうでなければ(ステップS509;No)、jについての次の繰り返しステップに移行する。
一方、c[j]=衝突判定モードである場合(ステップS509;Yes)、RAM 103内に記憶されているオブジェクトの情報
r[i],r[j],R[i],R[j]
から、i番目のオブジェクトとj番目のオブジェクトが衝突しているか否かを判定する(ステップS510)。判定の基準としては、上述の手法を採用することができる。したがって、CPU 101は、RAM 103と共同して、衝突判定部402として機能する。
上記のように、オブジェクトのモードは、衝突判定モードと通過モードとのいずれかであり、前者の場合は衝突判定の対象とするが、後者の場合は衝突判定の対象としない。このようなモードの分別によって、計算処理の低減化を図るのである。
衝突していない場合(ステップS510;No)、jについての次の繰り返しステップに移行する。
一方、i番目のオブジェクトとj番目のオブジェクトが衝突している場合(ステップS510;Yes)、上記の手法に基づいて、それぞれのオブジェクトの衝突後の速度ベクトルv'[i],v'[j]を計算する(ステップS511)。
上記のように、通過モードのオブジェクトは、衝突判定の対象とされない。したがって、通過モードのオブジェクトの割合が大きくなればなるほど、衝突判定および衝突に伴う処理に要する計算の総量は、少なくなる。
そして、
v[i]←v'[i];
v[j]←v'[j];
c[i]←通過モード;
c[j]←通過モード
を実行し、オブジェクトの速度を更新するとともに、モードを通過モードに変更する(ステップS512)。したがって、CPU 101は、RAM 103と共同して、衝突更新部403として機能する。
このように、本実施形態では、モードを変更することによって、「あるオブジェクトについての衝突が短時間に(次の画像生成時までに)連続して生ずるのは極めて稀であるため、これを無視する。」との仮定をするモデル化を行うのである。
さらに、両オブジェクトの現在位置r[i],r[j]、速度ベクトルv[i],v[j]、外力ベクトルf[i],f[j]、質量w[i],w[j]の情報に基づいて、経過時間δを
δ = (D-d)T/D = (D-d)Δt
として当該経過時間δだけ経過した後の、両オブジェクトの位置r'[i],r'[j]および速度v'[i],v'[j]を計算し(ステップS513)、
r[i]←r'[i];
r[j]←r'[j];
v[i]←v'[i];
v[j]←v'[j]
を実行して、オブジェクトの位置および速度を、次に画像を生成するタイミング時点の値に更新する(ステップS514)。したがって、CPU 101は、RAM 103と共同して、移動更新部404として機能する。
一般に、現在のオブジェクトの位置ベクトルr、速度ベクトルv、外力ベクトルf、オブジェクトの質量wのとき、これから経過時間δだけ経過した後の速度ベクトルv'および位置ベクトルr'は、以下のように(近似)計算することができる。
v' = v + (f/w)δ;
r' = r + ((v+v')/2)δ
ステップS513では、この(近似)計算を採用する。また、後述する位置更新の処理では、δの設定をΔtに変更して、この(近似)計算を採用する。
衝突したオブジェクトの位置と速度を更新(ステップS514)したら、ステップS515に進む。
さて、jについての繰り返し(〜ステップS515)と、iについての繰り返し(〜ステップS516)が終了したら、CPU 101は、位置の更新を行っていないオブジェクト、すなわち、衝突判定モードのままのオブジェクトについて、位置の更新を行う。すなわち、i = 0,1,…,M-1のそれぞれについて、以下の処理を繰り返す(ステップS517〜)。
まず、c[i]=衝突判定モードであるか否かを判定し(ステップS518)、そうでなければ(ステップS518;No)、iについての次の繰り返しステップに移行する。
一方、c[i]=衝突判定モードである場合(ステップS518;Yes)、
δ = Δt
として、当該経過時間δだけ経過した後の、オブジェクトの位置r'[i]と速度v'[i]を計算し(ステップS519)、
r[i]←r'[i];
v[i]←v'[i]
を実行して、当該オブジェクトの位置および速度を、更新時間間隔後の時点の値に更新して(ステップS520)、iについての繰り返し処理を続ける(〜ステップS521)。したがって、CPU 101は、RAM 103と共同して、移動更新部404として機能する。
iについての繰り返し処理が終了したら、CPU 101は、
d←(d+1)%D
を実行して(ステップS522)、カウンタを更新する。ここで、a%bは、aをbで割った余りを意味する。そして、ステップS501に戻る。
このように、本実施形態によれば、衝突判定の対象となるオブジェクトの数を抑制することによって、オブジェクトの衝突と移動のシミュレーションをできるだけ少ない計算量で行うことができるようになる。
上記実施形態では、オブジェクトのモードが衝突判定モードから通過モードに移行した場合に、ステップS513、S514において経過時間δを
δ = (D-d)T/D = (D-d)Δt
として、当該経過時間δだけ経過した後、すなわち、次に画像を生成するタイミング(次にモード復帰条件が満たされるタイミング)での両オブジェクトの位置r'[i],r'[j]および速度v'[i],v'[j]を計算することとしていた。
すなわち、「衝突が生じてからモード復帰条件が満たされるまでの間」については、オブジェクトに加えられる外力は事実上変化しない、とのモデル化を行っていた。
一方、ステップS519、S520において、
δ = Δt
として、当該経過時間δだけ経過した後の、オブジェクトの位置r'[i]と速度v'[i]を計算するのは、衝突判定モードのオブジェクトのみであり、通過モードについては、「すでに計算済である」として、ステップS518において事前に判断を行い、計算をスキップしていた。
しかしながら、オブジェクトの位置や速度の更新については、画像処理部107にベクトルプロセッサなど、オブジェクトごとの並列計算機能がある場合には、このような条件分岐を採用するのではなく、単純に位置や速度の計算・更新を行った方が良い場合もある。
このような場合には、ステップS513、S514における処理を省略するとともに、ステップS518における判断を省略し、ステップS517に続いてステップS519に進むようにフローを変更することとしても良い。
また、このような実施形態では、各種のループは、ベクトル化計算によって並列に計算することが望ましい。
このモデル化では、「衝突が生じてからモード復帰条件が満たされるまでの間」についても、オブジェクトに加えられる外力が変化するとのモデル化を行うことになる。
したがって、このような態様を採用した場合には、衝突計算については上記実施形態と同様の適切な近似を行うことができるとともに、オブジェクトの移動については、上記実施形態よりもより精密な近似を行うことができる。
このほか、単純にステップS513、S514における計算・更新の処理を省略するだけとする実施態様もありうる。これは、衝突そのものに要する時間を、(D-d)T/D = (D-d)Δtに近似する手法である。
すなわち、「衝突が生じてからモード復帰条件が満たされるまでの間」については、オブジェクトは事実上移動しない、とのモデル化を行う。
このとき、時間δは、「オブジェクトが互いに接触し合ってから、弾性変形して相手方のオブジェクトと押し合い、反発力によって逆向きに動き始め、相手方のオブジェクトから離れるまでに要する時間」に相当する。
この態様では、衝突後の位置と速度が、次の画像生成のタイミングまでそのまま維持されることとなる。アニメーションの映像の特殊効果の一つに、印象深いシーンを一定時間静止させて表示する「止め絵」という演出手法があるが、本実施形態は、衝突したオブジェクトについてこのような「止め絵」の効果を与えるものと考えることもできる。
また、ステップS513における計算において、経過時間δ=Δtとして計算を行う手法もありうる。すなわち、「衝突が生じてからモード復帰条件が満たされるまでの間」については、オブジェクトはシミュレーションの更新間隔時間分だけ移動し、それ以外の時間については「衝突中」とする手法である。これは、上記の態様2つの中庸をとるものである。
これらの態様では、簡易な計算を採用することによって、計算量を抑制しながら衝突のシミュレーションを適切に行うことができるようになる。
本発明によれば、上記発明の効果に加え、移動計算の対象となるオブジェクトの数を抑制することによって、オブジェクトの衝突と移動のシミュレーションをできるだけ少ない計算量で行うことができるようになる。
このほか、上記実施形態では、画像生成のタイミングでステップS502において全オブジェクトを衝突判定モードに移行することとしているが、オブジェクトごとに、通過モードから衝突判定モードに復帰するタイミングをずらすこととしても良い。
典型的には、全オブジェクトに共通の通過維持時間という定数を定める。そして、各オブジェクトについて、衝突判定モードから通過モードに移行した移行時刻も記録することする。
ステップS502においては、通過モードであるオブジェクトのうち、移行時刻に通過維持時間を加算した時刻が、現在時刻より前であるもの、すなわち、衝突判定モードから通過モードに移行した時刻から、通過維持時間が経過したオブジェクトについて、そのモードを衝突判定モードに復帰させるような繰り返し、判定、更新の処理を行うのである。
この形態におけるモデル化は、オブジェクトが一旦衝突すると、通過維持時間が経過するまでは、他のオブジェクトとの衝突は生じない、と仮定するものである。
このほか、リフレッシュ時間の間隔を画像生成のタイミング以外の適当な定数として、全オブジェクトについてまとめて、衝突判定モードへの復帰を行うこととしても良い。
これらの態様では、通過維持時間という衝突が連続して起きることが極めて珍しい時間を想定することによって、簡易かつ適切にオブジェクトの衝突と移動のシミュレーションを行うことができるようになる。
衝突するか否かを判定する対象となるオブジェクト同士の組み合わせについては、上述のように、以下のような2種類の態様がありうる。
(1)いずれか少なくとも一方が衝突判定モードであるオブジェクト同士については、他方が通過モードであるか衝突判定モードあるか否かにかかわらず、衝突判定を行う。
(2)両方とも衝突判定モードであるオブジェクト同士についてのみ、衝突判定を行う。
上記実施形態では、上記(2)の態様を採用しているが、上記(1)の態様を採用したい場合には、ステップS507の処理を省略し、ステップS509において、c[i]とc[j]の少なくとも一方が衝突判定モードである場合に、ステップS510に進むように、制御の流れを変更すれば良い。
本実施形態では、衝突判定の対象となるオブジェクトの個数の抑制の度合は、上記実施形態にくらべて弱いものの、より正確なシミュレーションが可能となる。したがって、計算能力がある程度高いものの、全オブジェクトについての衝突判定は避けたいような用途に好適である。
上記実施形態では、オブジェクトが衝突する場合に、ステップS512において、衝突するオブジェクトのモードを一律に通過モードに更新していたが、本実施形態では、他の手法を採用する。
すなわち、オブジェクトiとオブジェクトjのそれぞれについて、当該オブジェクトが所定のモード維持条件を満たしているか否かを判定し、満たしている場合には、当該オブジェクトのモードは、衝突判定モードのままとするものである。
モード維持条件としては、以下のような条件が考えられる。
(a)衝突後の速度の大きさが、所定の閾値よりも大きい。激しく運動するオブジェクトについては、衝突判定の対象とした方が良い用途がありうるからである。
(b)衝突前と衝突後の速度の変化が、所定の閾値よりも大きい。運動の様子が激変したオブジェクトについては、衝突判定の対象とした方が良い用途がありうるからである。
(c)常に衝突判定モードを維持するオブジェクトを想定する。たとえば、ゲームに本発明を適用する場合、プレイヤーが操作するキャラクターや敵キャラクターのうちの強いもの(「ボスキャラ」と呼ばれる。)については、常に衝突判定モードとし、通過モードには移行しないこととする態様である。一般に、オブジェクトが多数存在するのは、敵キャラクターのうちの弱いもの(「雑魚キャラ」と呼ばれる。)であるので、本態様でも十分な計算量抑制の効果が得られることも多い。
(d)上記条件(a)(b)(c)の適当な組み合わせ。
本実施形態では、オブジェクトの個数の抑制の度合は、上記実施形態にくらべて弱いものの、より正確なシミュレーションが可能となる。したがって、計算能力がある程度高いものの、全オブジェクトについての衝突判定は避けたいような用途に好適である。
以上説明したように、本発明によれば、仮想空間に配置されるオブジェクトの移動や衝突を簡易な計算でシミュレートするのに好適なシミュレーション装置、シミュレーション方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
プログラムを実行することにより、本発明のシミュレーション装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。 衝突するオブジェクト同士の位置関係を示す説明図である。 各ベクトルの位置関係をさらに詳細に示す説明図である。 本実施形態に係るシミュレーション装置の概要構成を示す模式図である。 本シミュレーション装置にて実行されるシミュレーション処理の制御の流れを示すフローチャートである。
符号の説明
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェイス
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
111 マイク
201 仮想空間
203 原点
211 オブジェクトi
213 オブジェクトiの位置ベクトル
215 オブジェクトiの速度ベクトル
231 オブジェクトj
233 オブジェクトjの位置ベクトル
235 オブジェクトjの速度ベクトル
251 相対速度ベクトル
252 相対位置ベクトル
253 相対速度ベクトルと相対位置ベクトルのなす角
254 相対位置ベクトルの方向ベクトル
261 衝突平面
262 内分点
301 方向ベクトル
302 方向ベクトル
400 シミュレーション装置
401 記憶部
402 衝突判定部
403 衝突更新部
404 移動更新部
405 モード更新部
406 画像生成部

Claims (10)

  1. 仮想空間に配置される複数のオブジェクトの位置および速度をシミュレートするシミュレーション装置であって、
    当該複数のオブジェクトのそれぞれについて、当該オブジェクトの位置および速度と、当該オブジェクトが衝突判定モードと通過モードとのいずれであるかを示す情報と、を記憶する記憶部、
    当該複数のオブジェクトのうち、少なくとも一方が衝突判定モードであるオブジェクト同士が衝突するか否かを、前記記憶された位置により判定する衝突判定部、
    前記衝突すると判定されたオブジェクト同士のそれぞれの衝突後の速度を計算して、前記記憶部に記憶される当該オブジェクトの速度を当該衝突後の速度に更新し、当該オブジェクトのモードを通過モードに更新する衝突更新部、
    当該複数のオブジェクトのそれぞれについて、前記記憶された位置および速度により所定の更新間隔時間後の位置および速度を計算して、前記記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新する移動更新部、
    当該複数のオブジェクトのうち、通過モードのオブジェクトのそれぞれについて、所定のモード復帰条件が満たされている場合、前記記憶部に記憶される当該オブジェクトのモードを衝突判定モードに更新するモード更新部
    を備えることを特徴とするシミュレーション装置。
  2. 請求項1に記載のシミュレーション装置であって、
    前記移動更新部は、当該複数のオブジェクトのうち、
    (a)モードが、衝突判定モードのオブジェクトのそれぞれについて、前記記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新し、
    (b)モードが、通過モードであるオブジェクトのそれぞれについて、前記記憶部に記憶される位置と速度を維持する
    ことを特徴とするシミュレーション装置。
  3. 請求項1に記載のシミュレーション装置であって、
    前記移動更新部は、当該複数のオブジェクトのうち、
    (a)モードが、衝突判定モードのオブジェクトのそれぞれについて、前記記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新し、
    (b)モードが、前回は衝突判定モードであり、今回は通過モードであるオブジェクトのそれぞれについて、次にモード復帰条件が満たされるまでの経過時間後の位置および速度を計算して、前記記憶部に記憶される当該オブジェクトの位置および速度を、当該経過時間後の位置および速度に更新し、
    (c)モードが、前回も今回も通過モードであるオブジェクトのそれぞれについて、前記記憶部に記憶される位置と速度を維持する
    ことを特徴とするシミュレーション装置。
  4. 請求項1から3のいずれか1項に記載のシミュレーション装置であって、
    前記モード更新部は、当該複数のオブジェクトのうち、通過モードのオブジェクトのそれぞれについて、当該オブジェクトのモードが、衝突判定モードから通過モードに移行してからの経過時間が、所定の通過維持時間に至ると、当該モード復帰条件が満たされるものとして、当該オブジェクトのモードを衝突判定モードに更新する
    ことを特徴とするシミュレーション装置。
  5. 請求項1から3のいずれか1項に記載のシミュレーション装置であって、
    前記モード更新部は、当該複数のオブジェクトのうち、通過モードのオブジェクトのすべてについて、当該更新間隔時間の整数倍に等しいリフレッシュ時間おきに、当該モード復帰条件が満たされるものとして、当該通過モードのオブジェクトのそれぞれのモードを衝突判定モードに更新する
    ことを特徴とするシミュレーション装置。
  6. 請求項5に記載のシミュレーション装置であって、
    当該リフレッシュ時間おきに、当該仮想空間に配置される複数のオブジェクトの画像を、前記記憶された複数のオブジェクトの位置により生成する画像生成部
    をさらに備えることを特徴とするシミュレーション装置。
  7. 請求項1から6のいずれか1項に記載のシミュレーション装置であって、
    前記衝突判定部は、当該複数のオブジェクトのうち、少なくとも一方が衝突判定モードであるオブジェクト同士が衝突するか否かを判定するのにかえて、両方が衝突判定モードであるオブジェクト同士が衝突するか否かを判定する
    ことを特徴とするシミュレーション装置。
  8. 請求項1から7のいずれか1項に記載のシミュレーション装置であって、
    前記衝突更新部は、前記衝突すると判定されたオブジェクト同士のそれぞれについて、当該オブジェクトが所定のモード維持条件を満たす場合、当該オブジェクトのモードを通過モードに更新するのにかえて、当該オブジェクトのモードを衝突判定モードに維持する
    ことを特徴とするシミュレーション装置。
  9. 仮想空間に配置される複数のオブジェクトの位置および速度をシミュレートするシミュレーション方法であって、当該複数のオブジェクトのそれぞれについて、当該オブジェクトの位置および速度と、当該オブジェクトが衝突判定モードと通過モードとのいずれであるかを示す情報と、を記憶する記憶部、衝突判定部、衝突更新部、移動更新部、モード更新部を備えるシミュレーション装置にて実行され、
    前記衝突判定部が、当該複数のオブジェクトのうち、少なくとも一方が衝突判定モードであるオブジェクト同士が衝突するか否かを、前記記憶された位置により判定する衝突判定工程、
    前記衝突更新部が、前記衝突すると判定されたオブジェクト同士のそれぞれの衝突後の速度を計算して、前記記憶部に記憶される当該オブジェクトの速度を当該衝突後の速度に更新し、当該オブジェクトのモードを通過モードに更新する衝突更新工程、
    前記移動更新部が、当該複数のオブジェクトのそれぞれについて、前記記憶された位置および速度により所定の更新間隔時間後の位置および速度を計算して、前記記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新する移動更新工程、
    前記モード更新部が、当該複数のオブジェクトのうち、通過モードのオブジェクトのそれぞれについて、所定のモード復帰条件が満たされている場合、前記記憶部に記憶される当該オブジェクトのモードを衝突判定モードに更新するモード更新工程
    を備えることを特徴とするシミュレーション方法。
  10. 仮想空間に配置される複数のオブジェクトの位置と速度をシミュレートさせるため、コンピュータを、
    当該複数のオブジェクトのそれぞれについて、当該オブジェクトの位置および速度と、当該オブジェクトが衝突判定モードと通過モードとのいずれであるかを示す情報と、を記憶する記憶部、
    当該複数のオブジェクトのうち、少なくとも一方が衝突判定モードであるオブジェクト同士が衝突するか否かを、前記記憶された位置により判定する衝突判定部、
    前記衝突すると判定されたオブジェクト同士のそれぞれの衝突後の速度を計算して、前記記憶部に記憶される当該オブジェクトの速度を当該衝突後の速度に更新し、当該オブジェクトのモードを通過モードに更新する衝突更新部、
    当該複数のオブジェクトのそれぞれについて、前記記憶された位置および速度により所定の更新間隔時間後の位置および速度を計算して、前記記憶部に記憶される当該オブジェクトの位置および速度を、当該更新間隔時間後の位置および速度に更新する移動更新部、
    当該複数のオブジェクトのうち、通過モードのオブジェクトのそれぞれについて、所定のモード復帰条件が満たされている場合、前記記憶部に記憶される当該オブジェクトのモードを衝突判定モードに更新するモード更新部
    として機能させることを特徴とするプログラム。
JP2006214379A 2006-08-07 2006-08-07 シミュレーション装置、シミュレーション方法、ならびに、プログラム Active JP4425890B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006214379A JP4425890B2 (ja) 2006-08-07 2006-08-07 シミュレーション装置、シミュレーション方法、ならびに、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006214379A JP4425890B2 (ja) 2006-08-07 2006-08-07 シミュレーション装置、シミュレーション方法、ならびに、プログラム

Publications (2)

Publication Number Publication Date
JP2008040800A true JP2008040800A (ja) 2008-02-21
JP4425890B2 JP4425890B2 (ja) 2010-03-03

Family

ID=39175726

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006214379A Active JP4425890B2 (ja) 2006-08-07 2006-08-07 シミュレーション装置、シミュレーション方法、ならびに、プログラム

Country Status (1)

Country Link
JP (1) JP4425890B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011010414A1 (ja) * 2009-07-21 2011-01-27 株式会社ソニー・コンピュータエンタテインメント ゲーム装置
JP2011518612A (ja) * 2008-04-24 2011-06-30 ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー メディアの実演にリアルタイムに参加するためのシステム及び方法並びにゲームシステム
JP2011186689A (ja) * 2010-03-05 2011-09-22 Konami Digital Entertainment Co Ltd 画像処理装置、画像処理方法及びプログラム
KR101068673B1 (ko) 2010-08-11 2011-09-28 한국과학기술원 충돌 스플래쉬 시뮬레이션 방법 및 장치
JP2012247832A (ja) * 2011-05-25 2012-12-13 Sony Computer Entertainment Inc 情報処理装置、情報処理方法、情報処理プログラム、情報処理プログラムを記憶したコンピュータ読み取り可能な記録媒体、厚み領域設定装置、厚み領域設定方法、厚み領域設定プログラム、厚み領域設定プログラムを記憶したコンピュータ読み取り可能な記録媒体、仮想空間における面に関するデータ構造
JP2013106701A (ja) * 2011-11-18 2013-06-06 Square Enix Co Ltd キャラクタの移動制御装置及びプログラム
JP5466786B1 (ja) * 2013-08-28 2014-04-09 株式会社 ディー・エヌ・エー 画像処理装置及び画像処理プログラム
JP2015046145A (ja) * 2014-01-24 2015-03-12 株式会社 ディー・エヌ・エー 画像処理装置及び画像処理プログラム

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904430B2 (en) 2008-04-24 2014-12-02 Sony Computer Entertainment America, LLC Method and apparatus for real-time viewer interaction with a media presentation
JP2011518612A (ja) * 2008-04-24 2011-06-30 ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー メディアの実演にリアルタイムに参加するためのシステム及び方法並びにゲームシステム
US10412456B2 (en) 2008-04-24 2019-09-10 Sony Interactive Entertainment, LLC Method and apparatus for real-time viewer interaction with a media presentation
US9584862B2 (en) 2008-04-24 2017-02-28 Sony Interactive Entertainment America Llc Method and apparatus for real-time viewer interaction with a media presentation
JP2016025876A (ja) * 2008-04-24 2016-02-12 ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー 動画表示にリアルタイムに参加するためのシステム及び方法並びにゲームシステム
US20120157201A1 (en) * 2009-07-21 2012-06-21 Sony Computer Entertainment Inc. Game Device
US8721444B2 (en) * 2009-07-21 2014-05-13 Sony Corporation Game device for performing operation object control and non-operation object control
WO2011010414A1 (ja) * 2009-07-21 2011-01-27 株式会社ソニー・コンピュータエンタテインメント ゲーム装置
JP2011186689A (ja) * 2010-03-05 2011-09-22 Konami Digital Entertainment Co Ltd 画像処理装置、画像処理方法及びプログラム
KR101068673B1 (ko) 2010-08-11 2011-09-28 한국과학기술원 충돌 스플래쉬 시뮬레이션 방법 및 장치
JP2012247832A (ja) * 2011-05-25 2012-12-13 Sony Computer Entertainment Inc 情報処理装置、情報処理方法、情報処理プログラム、情報処理プログラムを記憶したコンピュータ読み取り可能な記録媒体、厚み領域設定装置、厚み領域設定方法、厚み領域設定プログラム、厚み領域設定プログラムを記憶したコンピュータ読み取り可能な記録媒体、仮想空間における面に関するデータ構造
US9495485B2 (en) 2011-05-25 2016-11-15 Sony Corporation Information processing device, information processing method, computer readable storage medium storing information processing program, thickness area setting device, thickness area setting method, and computer readable storage medium storing thickness area setting program
JP2013106701A (ja) * 2011-11-18 2013-06-06 Square Enix Co Ltd キャラクタの移動制御装置及びプログラム
JP5466786B1 (ja) * 2013-08-28 2014-04-09 株式会社 ディー・エヌ・エー 画像処理装置及び画像処理プログラム
US9177531B2 (en) 2013-08-28 2015-11-03 DeNA Co., Ltd. Image processing device and non-transitory computer-readable storage medium storing image processing program
JP2015046145A (ja) * 2014-01-24 2015-03-12 株式会社 ディー・エヌ・エー 画像処理装置及び画像処理プログラム

Also Published As

Publication number Publication date
JP4425890B2 (ja) 2010-03-03

Similar Documents

Publication Publication Date Title
JP4425890B2 (ja) シミュレーション装置、シミュレーション方法、ならびに、プログラム
US9990754B1 (en) System for rendering using position based finite element simulation
US10022628B1 (en) System for feature-based motion adaptation
US8452721B2 (en) Region of interest tracking for fluid simulation
JP3863165B2 (ja) 音声出力装置、音声出力方法、ならびに、プログラム
US20050182610A1 (en) Water particle manipulation
KR100898671B1 (ko) 화상처리장치, 화상처리방법, 및, 프로그램을 기록한 컴퓨터 판독 가능한 정보기록매체
JP4037889B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP3926307B2 (ja) 3次元画像描画装置及び方法、プログラム、並びに記録媒体
WO2022127241A1 (zh) 虚拟球体的形变控制方法、装置、程序和可读介质
KR100950835B1 (ko) 화상생성장치, 화상생성방법 및 프로그램을 기록한 컴퓨터 판독 가능한 정보기록매체
JP6441843B2 (ja) ゲームプログラムおよびゲームシステム
JP4584203B2 (ja) 音声シミュレーション装置、音声シミュレーション方法、ならびに、プログラム
JP2002222435A (ja) 画像生成システム、プログラム及び情報記憶媒体
JP2004220273A (ja) 模擬実験装置、模擬実験方法、ならびに、プログラム
Song et al. A brief technical note on haptic jellyfish with Falcon and OpenGL
JP4113179B2 (ja) シミュレーション装置、シミュレート方法、ならびに、プログラム
JP4068093B2 (ja) シミュレーション装置、シミュレート方法、ならびに、プログラム
JP4210293B2 (ja) シミュレーション装置、シミュレーション方法、ならびに、プログラム
JP2019149153A (ja) リアルタイムアプリケーションにおける複数の接続されたボディのシミュレーション
Şener et al. The use of virtual reality in Yacht design and visualization
JP5155262B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
Hou et al. A prediction method using interpolation for smooth six-DOF haptic rendering in multirate simulation
Filipczuk et al. Real-time simulation of a sailboat
Kouřil Underwater excavation serious game

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090508

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090901

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090914

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091208

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091209

R150 Certificate of patent or registration of utility model

Ref document number: 4425890

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121218

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131218

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250