JP3542795B1 - Simulation experiment apparatus, simulation experiment method, and program - Google Patents

Simulation experiment apparatus, simulation experiment method, and program Download PDF

Info

Publication number
JP3542795B1
JP3542795B1 JP2003006186A JP2003006186A JP3542795B1 JP 3542795 B1 JP3542795 B1 JP 3542795B1 JP 2003006186 A JP2003006186 A JP 2003006186A JP 2003006186 A JP2003006186 A JP 2003006186A JP 3542795 B1 JP3542795 B1 JP 3542795B1
Authority
JP
Japan
Prior art keywords
collision
speed
update
time
unit
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.)
Expired - Fee Related
Application number
JP2003006186A
Other languages
Japanese (ja)
Other versions
JP2004220273A (en
Inventor
昌二 森
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 Corp
Original Assignee
Konami Corp
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 Corp filed Critical Konami Corp
Priority to JP2003006186A priority Critical patent/JP3542795B1/en
Application granted granted Critical
Publication of JP3542795B1 publication Critical patent/JP3542795B1/en
Publication of JP2004220273A publication Critical patent/JP2004220273A/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

【課題】仮想空間内における2つのオブジェクトの衝突をシミュレートする模擬実験装置等を提供する。
【解決手段】模擬実験装置601の記憶部602は、仮想空間における第1オブジェクト、第2オブジェクトの位置および速度を記憶し、表示部603は、両オブジェクトの画像を記憶された位置に表示し、入力受付部604は、第1オブジェクトの移動指示入力を受け付け、第1更新部605は、当該移動指示入力にしたがって第1オブジェクトについて記憶された位置・速度を更新し、第2更新部606は、所定の規則にしたがって、第2オブジェクト302について記憶された位置・速度を更新し、衝突更新部607は、両オブジェクトが衝突している場合、所定の時点から衝突に至るまでの第1オブジェクトの位置や速度の履歴を考慮して、衝突後の当該第2オブジェクトの位置・速度を計算して前記記憶された位置・速度を更新する。
【選択図】 図6
A simulation experiment apparatus for simulating a collision of two objects in a virtual space is provided.
A storage unit 602 of a simulation experiment apparatus 601 stores positions and velocities of a first object and a second object in a virtual space, and a display unit 603 displays images of both objects at stored positions. The input reception unit 604 receives a movement instruction input of the first object, the first update unit 605 updates the position / speed stored for the first object according to the movement instruction input, and the second update unit 606 In accordance with a predetermined rule, the position / velocity stored for the second object 302 is updated, and when the two objects collide, the collision update unit 607 determines the position of the first object from the predetermined time point to the collision. The position / velocity of the second object after the collision is calculated and the stored position / velocity is updated in consideration of the history of speed .
[Selection] Figure 6

Description

【0001】
【発明の属する技術分野】
本発明は、仮想空間内における2つのオブジェクトの衝突をシミュレートする模擬実験装置、模擬実験方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【0002】
【従来の技術】
従来から、物体と物体との衝突という物理現象のモデル化を行い、当該現象をコンピュータによってシミュレート(模擬実験)する技術が提案されている。このような模擬実験技術の最も基礎となるのは、2つの物体の衝突における運動量保存の法則、ならびに、エネルギー保存の法則という物理法則である。このような衝突という物理現象は、コンピュータグラフィックスの分野やコンピュータゲームの分野でも注目を集めている。
【0003】
しかしながら、衝突という物理現象には、まだ科学的に未解明の部分も多く、上記のような法則のみによって衝突という現象を完全にシミュレートすることはできない。衝突では、各種の摩擦力や弾性体の振舞いなど、種々の物理現象が関係しているからである。
【0004】
【発明が解決しようとする課題】
したがって、これらの分野では、自然法則に則った衝突、これを見る人間にとって自然に見える衝突をいかに実現するか、が求められている。また、リアルタイムで衝突現象をコンピュータにシミュレートさせる際には、単純なモデル化により演算を高速に行うことも必要である。したがって、用途に応じて必要にして十分な衝突のモデル化を行う技術が求められている。
【0005】
本発明は、仮想空間内における2つのオブジェクトの衝突をシミュレートする模擬実験装置、模擬実験方法、ならびに、これらをコンピュータによって実現するプログラムを提供することを目的とする。
【0006】
【課題を解決するための手段】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0007】
本発明の第1の観点に係る模擬実験装置は、記憶部と、表示部と、入力受付部と、第1更新部と、第2更新部と、衝突更新部と、を備え、以下のように構成する。
【0008】
すなわち、記憶部は、仮想空間における第1オブジェクトの位置および速度と、第2オブジェクトの位置および速度と、を記憶する。すなわち、本模擬実験装置は、記憶部に記憶される位置および速度といった情報に基づいて、仮想空間内における第1オブジェクトと第2オブジェクトとの移動と衝突の模擬実験を行う。このほか、これらのオブジェクトの姿勢や質量、有する燃料などの種々の情報を記憶することとし、これらをさらに模擬実験に反映することとしてもよい。
【0009】
一方、表示部は、当該第1オブジェクトと、当該第2オブジェクトと、の画像を、そのそれぞれについて記憶された位置に表示する。すなわち、表示部が所定のタイミングで表示画面の更新を行うこととすれば、模擬実験において、第1オブジェクトと、第2オブジェクトと、が、時間とともに移動していく様子が表示されることになる。
【0010】
さらに、入力受付部は、当該第1オブジェクトの移動指示入力を受け付ける。ユーザからの指示入力は、第1オブジェクトに加える力や撃力、各種のエネルギーなどの物理的なパラメータに対応するものとするのが典型的であるが、たとえばコンピュータゲームにおいては、ゲーム世界の設定に応じたパラメータを採用しても良い。
【0011】
そして、第1更新部は、入力を受け付けられた移動指示入力にしたがって当該第1オブジェクトについて記憶された位置および/または速度を更新する。これによって、ユーザが仮想空間内における第1オブジェクトの移動を制御することとなる。上記のように、第1オブジェクトに対して与える力や撃力を移動指示入力とするときは、第1更新部によって、第1オブジェクトの加速度や運動量変化が計算され、これによって第1オブジェクトの速度や位置が更新される。
【0012】
一方、第2更新部は、所定の規則にしたがって、当該第2オブジェクトについて記憶された位置および/または速度を更新する。当該所定の法則は、たとえば物理学の一般的な法則によるものであり、典型的には、「第2オブジェクトは、外力が与えられない限り等速直線運動を行う」「第2オブジェクトは、速度の自乗に比例する抵抗力(粘性力)を受ける」「第2オブジェクトの加速度は、外力に比例する」などの法則である。ただし、仮想世界を舞台とするコンピュータゲーム等においては、当該ゲーム世界の設定に応じた規則を採用しても良い。
【0013】
さらに、衝突更新部は、当該第1オブジェクトと、当該第2オブジェクトと、が、衝突するか否かを判定し、当該第1オブジェクトが移動中に衝突する旨判定された場合、以下のパラメータ
(a)当該第1オブジェクトの位置および/または速度、
(b)所定の時点から衝突に至るまでの当該第1オブジェクトの位置および/または速度の履歴、
(c)当該第2オブジェクトの位置および/または速度、
により、衝突後の当該第2オブジェクトの位置および/または速度を計算して記憶された位置および/または速度を更新する。すなわち、上記パラメータ(a)、(b)、(c)を用いて、衝突という物理現象をモデル化することとなる。
【0014】
本発明により、ユーザの操作によりその移動が制御できる第1オブジェクトが移動中に第2オブジェクトと衝突した場合に、当該衝突によって当該第2オブジェクトの位置や速度がどのように変化するか、を、パラメータ(a)、(b)、(c)を用いてモデル化することができるようになる。
【0015】
また、本発明の模擬実験装置において、衝突更新部は、当該パラメータ(b)の「所定の時点」として
(p)当該第1オブジェクトが最後に移動を開始した時点、
(q)当該第1オブジェクトが最後に移動の向きと同じ向きに移動を開始した時点、
(r)現在から所定の時間だけ過去に遡った時点、
(s)上記時点(p)(q)(r)のいずれか複数のうち、直近の時点、
のいずれか1つを用いて、位置および/または速度を計算するように構成することができる。
【0016】
本発明は、上記模擬実験装置の好適実施形態の1つであり、第1オブジェクトの「履歴」を、過去のどの時点まで追跡するかを定めるものである。本発明により、第1オブジェクトの位置や速度の履歴を維持すべき時間の開始点を定めることができるので、たとえば、当該履歴を記憶する領域を節約するなどの効果を得ることができる。
【0017】
また、本発明の模擬実験装置において、衝突更新部は、パラメータ(b)の「当該第1オブジェクトの位置および/または速度の履歴」として
(x)当該所定の時点から現在までの経過時間、
(y)当該所定の時点から現在までの移動距離、
(z)当該所定の時点から現在までの速度の自乗の時間積分値、
のいずれか1つを用いて、衝突後の位置および/または速度を計算するように構成することができる。
【0018】
本発明は、上記模擬実験装置の好適実施形態の1つであり、第1オブジェクトの「履歴」として、どのようなパラメータを用いるか、を定めるものである。本発明により、自然法則に則ったもの、あるいは、人間にとって自然に見えるものに近似する衝突現象をシミュレートすることができる。
【0019】
また、本発明の模擬実験装置において、前記衝突更新部は、さらに、当該第1オブジェクトが移動中に衝突する旨判定された場合、パラメータ(a)、(b)、(c)により衝突後の当該第1オブジェクトの位置および/または速度を計算して前記記憶された位置および/または速度を更新するように構成することができる。したがって、本模擬実験装置においては、衝突により、第2オブジェクトのみならず、第1オブジェクトの位置や速度も影響を受けるようにシミュレートを行う。
【0020】
本発明により、ユーザが操作する第1オブジェクトについても、衝突によってその位置や速度が変化するような模擬実験を行うことができる。たとえば、コンピュータゲームにおいては、ユーザが操作する第1オブジェクトが、第2オブジェクトと衝突した際に、第1オブジェクト自身の位置や速度が変化し、これに伴なう力や撃力をユーザにフィードバックするような態様に応用することもできる。
【0021】
本発明のその他の観点に係る模擬実験方法は、表示工程と、入力受付工程と、第1更新工程と、第2更新工程と、衝突更新工程と、とを備え、仮想空間における第1オブジェクトの位置および速度と、第2オブジェクトの位置および速度と、を記憶する記憶部を用い、以下のように構成する。
【0022】
すなわち、表示工程では、当該第1オブジェクトと、当該第2オブジェクトと、の画像を、そのそれぞれについて記憶された位置に表示する。一方、入力受付工程では、当該第1オブジェクトの移動指示入力を受け付ける。さらに、第1更新工程では、入力を受け付けられた移動指示入力にしたがって当該第1オブジェクトについて記憶された位置および/または速度を更新する。そして、第2更新工程では、所定の規則にしたがって、当該第2オブジェクトについて記憶された位置および/または速度を更新する。
【0023】
一方、衝突更新工程では、当該第1オブジェクトと、当該第2オブジェクトと、が、衝突するか否かを判定し、当該第1オブジェクトが移動中に衝突する旨判定された場合、以下のパラメータ
(a)当該第1オブジェクトの位置および/または速度、
(b)所定の時点から衝突に至るまでの当該第1オブジェクトの位置および/または速度の履歴、
(c)当該第2オブジェクトの位置および/または速度、
により、衝突後の当該第2オブジェクトの位置および/または速度を計算して記憶された位置および/または速度を更新する。
【0024】
本発明のその他の観点に係るプログラムは、コンピュータを上記模擬実験装置として機能させ、もしくは、コンピュータに上記模擬実験方法を実行させるように構成する。また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記録媒体に記録することができる。上記プログラムは、当該プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記録媒体は、当該コンピュータとは独立して配布・販売することができる。
【0025】
【発明の実施の形態】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム装置に本発明が適用される実施形態を説明するが、各種のコンピュータ、PDA(Personal Data Assistants)、携帯電話などの情報処理装置においても同様に本発明を適用することができる。すなわち、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0026】
(発明の実施形態)
図1は、本発明の実施形態の1つに係る模擬実験装置が実現される典型的なゲーム装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【0027】
ゲーム装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、インターフェース104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD(Digital Versatile Disk)−ROMドライブ108と、NIC(Network Interface Card)109と、を備える。
【0028】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、ゲーム装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の模擬実験装置が実現される。
【0029】
CPU 101は、ゲーム装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。
【0030】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、ゲーム装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータを記録される。
【0031】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。
【0032】
インターフェース104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【0033】
図2は、コントローラ105の外観を示す説明図である。以下、本図を参照して説明する。
【0034】
コントローラ105の左方には、上下左右を示す操作入力を行うのに利用される↑ボタン201、↓ボタン202、←ボタン203、→ボタン204が配置されている。
【0035】
ユーザは、これらの↑ボタン201、↓ボタン202、←ボタン203、→ボタン204を押圧操作することにより、ユーザが操作するオブジェクトに対して力や撃力に相当するパラメータを指示入力することが可能となる。
【0036】
右方には、決定操作入力を行うのに利用される○ボタン205、取消操作入力を行うのに利用される×ボタン206、メニュー表示等の指示入力を行うのに利用される△ボタン207、その他の指示入力を行うのに利用される□ボタン208が配置されている。
【0037】
中央には、SELECTボタン209、STARTボタン210のほか、アナログ入力の開始・停止を指示するためのANALOGボタン211、および、アナログ入力が有効か無効かを表示するためのインジケータ212が配置されている。
【0038】
また中央下部には、上下左右に限らない方向に大きさを伴う指示入力を行うためのジョイスティック213、214が配置されている。ジョイスティック213、214には、ひずみゲージが配備され、これらがどの方向にどれだけ曲げられているか、を検知することができる。
【0039】
これらのジョイスティック213、214を操作した場合に、その曲げる程度と向きに応じてオブジェクトに対して与える力や撃力に相当するパラメータを指示入力するような形態を採用することもできる。
【0040】
さらに、上方には、各種の指示入力に用いることができるL1ボタン215、L2ボタン216、R1ボタン217、R2ボタン218が配置されている。
【0041】
コントローラ105の各ボタン201〜208、215〜218には、圧力センサが配備され、アナログ入力が有効となっている場合には、いずれのボタンが押圧操作されているかを検知することができるほか、ユーザの押圧操作の圧力の大きさを0〜255の256段階で得ることができる。
【0042】
図1に戻り、インターフェース104を介して脱自在に接続された外部メモリ106には、ゲームの進行状態を示すデータ、チャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0043】
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0044】
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0045】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0046】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0047】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。フォント情報は、ROM 102に記録されているが、DVD−ROMに記録された専用のフォント情報を利用することも可能である。
【0048】
NIC 109は、ゲーム装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integraged Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line Modem)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
【0049】
インターネット内のSNTPサーバにNIC 109を介して接続し、ここから情報を得ることによって現在の日時情報を得ることができる。また、各種のネットワークゲームのサーバ装置が、SNTPサーバと同様の機能を果たすように構成設定してもよい
【0050】
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【0051】
このほか、ゲーム装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0052】
(衝突の基本的なモデル)
仮想空間内におけるオブジェクトの衝突については、自然界における衝突に対する種々のモデル化を採用することにより、自然法則に則った衝突、これを見る人間にとって自然に見える衝突をシミュレートすることができると考えられる。ここでは、本発明で適用できる最も単純なモデルから順に説明する。
【0053】
図3は、第1オブジェクトと第2オブジェクトの衝突の瞬間の様子を示す説明図である。第1オブジェクト301と、第2オブジェクト302とは、接点303にて衝突している。第1オブジェクト301の表面の接点303における法線ベクトル311と、第2オブジェクト302の表面の接点303における法線ベクトル312とは、同一直線上にあり、互いに逆向きとなっている。
【0054】
図3には、第1オブジェクト301の速度ベクトル321と、第2オブジェクト302の速度ベクトル322と、が図示されている。本実施形態では、第1オブジェクト301の質量に対して第2オブジェクト302の質量が極めて小さいとしてモデル化を行う。この場合、ちょうど光が鏡面で反射するように、第1オブジェクト301は衝突による影響をほとんど受けず、第2オブジェクト302が衝突によって「反射」することとなり、第1オブジェクト301の速度ベクトル321の如何に関わらず、第2オブジェクト302の衝突後の速度ベクトルが定まることとなる。
【0055】
図3には、第2オブジェクトの衝突後の速度ベクトル332も図示されている。第2オブジェクト302は、法線ベクトル311、法線ベクトル312を法線とし、接点303を通る平面において「反射」する。すなわち、光の鏡面における反射と同じように、入射角と反射角が等しいこととなる。したがって、衝突後の速度ベクトル332が法線ベクトル311となす角は、衝突前の速度ベクトル322が法線ベクトル311となす角に等しく、衝突後の速度ベクトル332、法線ベクトル311、衝突前の速度ベクトル322は、同じ平面内にあることとなる。
【0056】
すなわち、衝突後の速度ベクトル332の法線ベクトル311方向の成分は、衝突前の速度ベクトル322の法線ベクトル311方向の成分に−1を乗じたものである。さらに、衝突後の速度ベクトル332の法線ベクトル311に直行する方向の成分は、衝突前の速度ベクトル322の法線ベクトル311に直行する方向の成分と同じである。そして、「衝突前の速度ベクトル322と法線ベクトル311との外積」と「衝突後の速度ベクトル332と法線ベクトル311との外積」との外積は、零ベクトルである。
【0057】
これは、衝突の際の第1オブジェクト301と第2オブジェクト302との間の摩擦や衝撃によって、エネルギーの損失が生じない、と仮定した場合の衝突のモデルであり、ゲームの分野においては、このモデル化は、従来のブロック崩しゲームにおいて適用されていると考えられる。図4は、いわゆるブロック崩しゲームの動作画面を示す説明図である。
【0058】
ユーザは、ゲーム装置100のコントローラ105を操作することにより、画面401内の反射板402を左右のみに移動させることができる。反射板402が、第1オブジェクト301に相当する。ブロック崩しゲームでは、反射板402の移動の指示入力についても単純化がされていることが多い。たとえば、以下のような反射板402のモデル化を採用することができる。
(1)→ボタン204で右方向に、←ボタン203で左方向に一定の速度で移動する。
(2)→ボタン204で右方向に、←ボタン203で左方向に加速する。これは、反射板402に対して力や撃力を与えたことに相当する。
(3)→ボタン204で右方向に、←ボタン203で左方向に加速するが、一定の速度に達すると、それ以上は加速しなくなる。これは、空気などの粘性摩擦をさらに考慮した場合に相当する。
【0059】
一方、第2オブジェクト302に相当するものは、ボール403である。ボール403は、反射板に衝突すると、上記のような「反射」のモデルにしたがって、衝突後の移動を決める。また、ボール403は、静止しているブロック404や壁405に衝突すると、そこでも「反射」し、衝突を受けたブロック404は消滅する。一方、反射板402でボール403を「反射」させることができず、ボール403が反射板402の後方(図の下方)に行き過ぎてしまった場合は、ゲームオーバーとなる。このようにして、ブロック404がすべて消えるまでの経過を楽しむのが、ブロック崩しゲームである。
【0060】
さて、このような衝突のモデル化では、摩擦力と第1オブジェクト301の移動を考慮していない。たとえば、反射板402が左に移動しているときに、図中真上から真下へボール504が移動してきて反射板402に衝突すると、ボール403はそのまま真上に「反射」していく。ところが、現実の物理現象においては、衝突の瞬間の反射板402(テニスや卓球のラケットに相当する)の移動の方向によって、ボール403そのものの衝突後の移動の軌跡が異なる。たとえば、上記の例では、ボール403は、反射板402の移動速度に応じて、衝突後に左方向の速度成分を持つのが、自然法則に則っており、ユーザにとっても自然な振舞いと感じられるはずである。
【0061】
そこで、このような衝突現象を、以下のようなモデル化により近似して、できるだけ少ない計算量で自然な衝突をシミュレートすることとする。以下、具体的な手法について説明するが、一般的に、上記反射板402とボール403の3次元空間内での衝突を考えて説明する。3次元空間内の振舞いは容易に2次元空間に射影することができるすなわち、ベクトルの所定の方向の成分を0とすれば、ブロック崩しにおけるような2次元空間の衝突に本モデルを適用することができる。
【0062】
本実施形態においては、第1オブジェクト301の移動の履歴をも考慮して第2オブジェクト302の衝突後の速度ベクトルを決定する。図5は、第1オブジェクト(反射板)301と、第2オブジェクト(ボール)302と、の、衝突の様子を示す説明図である。
【0063】
第1オブジェクト301と第2オブジェクト302との接点303における第1オブジェクト301の法線ベクトルはnである。第2オブジェクト302の衝突前の速度ベクトル322はvであり、衝突後の速度ベクトル332はv’である。また、第2オブジェクト302が、上記モデルのように「反射」したものと考えた場合の衝突後の速度ベクトル333をwとする。
【0064】
上記のように、wは、nとvとが張る平面内と平行であり、n、vがなす角と、n、wがなす角と、は等しく、|v| = |w|であり、vのn方向の成分と、wのn方向の成分は、大きさが等しくて逆向きである。
【0065】
本実施形態では、速度ベクトルwに対して第1オブジェクト301の移動の履歴や、衝突の際の第1オブジェクト301の速度ベクトルを考慮して修正δを加えて、速度ベクトルv’を得る。すなわち、v’ = w + δである。以下では、時刻tによる履歴を考慮するため、第1オブジェクト301の速度ベクトルをs(t)と書くこととする。
【0066】
ゲーム装置100などの計算機で、第1オブジェクト301の移動の履歴を考慮する場合には、そのRAM 103に履歴を一時的に記憶することとなるが、記憶領域には限界があるほか、あまりに多くの履歴を考慮の対象とすると、CPU 101における計算時間が多大なものとなってしまう。したがって、衝突の時刻をt = Bとしたときに、t = Bから多くともある限界時間Lまで過去にさかのぼった時刻を、考慮する履歴の開始時刻とすることが望ましい。すなわち、考慮する履歴の開始時刻をt = Aとすると、B−A ≦ Lである。
【0067】
なお、現実の自然界における衝突は一瞬で生ずるものではない。ごく短いが、衝突にも時間がかかる。したがって、上記のように、履歴を時刻t = A〜t = Bの間について考慮するのは、自然界のモデル化・近似として、十分に意味がある。
【0068】
第1オブジェクト301の速度ベクトルは、考慮する履歴の開始時刻にはs(A)であり、衝突時はs(B)となる。本実施形態では、Aおよびδを決定すれば、第2オブジェクト302の衝突後の速度ベクトル331v’が求まることとなる。以下、これらの決定の手法について説明する。
【0069】
(考慮する履歴の開始時刻)
以下では、まず、時刻Aの決定手法について述べることとする。最も簡単な手法は、以下の2つである。
(1)A = Bとする。すなわち、衝突時刻t = Bにおける第1オブジェクト301の移動の様子のみを考慮する。
(2)A = B − Lとする。すなわち、衝突時刻t = Bから過去に一定時間Lだけ遡った時点t = A = B − Lから、衝突時刻t = Bまでの時刻を考慮する。
【0070】
手法(1)は、衝突が極めて短時間で行われる、ということを重要視したものであり、衝突のモデル化としては単純なものであるが、適用分野によっては近似計算としてこれで十分な場合もある。手法(2)は、衝突までの一定時間の履歴を考慮する、というもので、RAM 103に、第1オブジェクト301の速度ベクトルs(t)の履歴を、時間Lだけ保存しておけば良い、という点で、コンピュータによる管理計算が容易になる利点がある。
【0071】
このほか、以下のような手法も考えられる。
(3)a < t ≦ Bの任意の時刻tについて、第1条件s(B)・s(t) > 0が成立し、第2条件s(B)・s(a) = 0が成立する時刻aをAとする。なお、演算「・」はベクトルの内積を意味する。すなわち、衝突の時刻の第1オブジェクト301の速度ベクトルと同じ速度成分が生じ始める最近の時刻をAとする。ブロック崩しゲームの例でいえば、反射板402が右に移動している際にボール403が反射板402に衝突した場合は、その衝突前に反射板402が右に移動し始めた時刻から、履歴を考慮する、というものである。
【0072】
(4)a < t ≦ Bの任意の時刻tについて、第1条件|s(t)| > 0が成立し、第2条件|s(a)| = 0が成立する時刻aをAとする。すなわち、衝突に至るまでの移動を開始した時刻aをAとする。ブロック崩しゲームの場合には、反射板402は1次元の移動しかしないため、本手法によって得られるAは、手法(3)と一致することとなる。
【0073】
(5)上記手法(3)や(4)において、速度ベクトルs(t)のかわりに、加速度ベクトルds(t)/dt = α(t)を用いる。
(6)上記手法(3)〜(5)のいずれかを採用し、得られたaがa < B − Lである場合には、A = B − Lとする。これは、衝突の時刻t = Bから過去t = B−Lまで遡って履歴を考慮し、この間は当該第1条件が常に成立する場合、A = B − Lとすることと等価である。
(7)上記手法(2)〜(5)のいずれか複数を採用し、それぞれの手法で得られたAのうち、最大のもの(時刻t = Bに直近のもの)を、Aとして採用する。
【0074】
本発明では、このような種々の技術により、時刻Aを決定する。
【0075】
(修正量の決定方法)
修正量δは、以下に述べる種々の技術によって決定することができる。
(1)衝突時の第1オブジェクト301の速度ベクトルs(B)によって定める。典型的には、所定の正の定数kを用いて、
δ = k S(B)
とする。すなわち、修正量δは、衝突時の第1オブジェクト301の速度ベクトルに比例することとなる。
【0076】
(2)上記のように決定された時刻Aと、所定の正の定数kを用いて、
δ = k∫ s(t)dt
とする。すなわち、修正量δは、時刻t = Aから時刻t = Bまでの間の第1オブジェクト301の変位ベクトルに比例することとなる。これは、修正量δの大きさが、時刻t = Aから時刻t = Bの移動距離に比例することを意味する。
【0077】
(3)上記のように決定された時刻Aと、所定の正の定数kを用いて、
δ = (k∫ |s(t)|dt) s(B)
もしくは、
δ = (k∫ |s(t)|dt) ∫ s(t)dt
とする。
【0078】
(4)上記(1)〜(3)のいずれかの技術を用いて、一旦δを求めた後、当該δの大きさ|δ|を調べ、これを所定の正の定数Δと比較したときに、|δ|>Δである場合には、δと同じ方向・向きで、大きさがΔのベクトル
(Δ/|δ|)δ
を、改めて修正量δとして用いる。これは、第1オブジェクト301が衝突時に移動しているときに第2オブジェクト302に与える影響の大きさに、上限があるものとする技法である。
【0079】
(5)上記(1)〜(3)のいずれかの技術を用いて、一旦δを求めてv’ = w
+ δによりv’を求めた後、
(|v|/|v’|) v’
を、改めて衝突後の第2オブジェクト302の速度ベクトル322として採用する。これは、第1オブジェクト301が衝突時に第2オブジェクト302に与える影響は、その速度ベクトルの向きのみを変更するものであって、大きさは変更しない、というモデル化に対応する。
【0080】
これらの技術においては、時間積分を用いているが、適当な時間ごとに物理現象を更新することで模擬実験を行っている場合には、連続量の積分ではなく、離散値の積分を用いれば良い。たとえば、上記の(2)の技術を利用した場合であって、時刻t = Aからt = Bまでのs(t)の履歴を、ベクトル列
,…s
として記録していた場合を考える。すなわち、時間(B−A)/Nごとに、物理現象の規則の適用や種々の更新を行う場合である。
【0081】
この場合、上記積分は、
δ = Σi=1 (B−A)/N
によって得ることができる。尚、更新の時間間隔を可変とした場合、たとえば、各オブジェクトのその時間間隔における移動量が、所定の値よりも大きい場合に、時間間隔をより短くして更新計算をやり直す場合にも、同様の技術を適用することができる。
【0082】
(模擬実験装置の実施形態)
図6は、本発明の実施の形態の1つに係る模擬実験装置であって、上記のような手法を用いるものの概要構成を示す模式図である。当該模擬実験装置は、図1に示すゲーム装置100などの情報処理装置上に実現される。図7は、当該模擬実験装置において実行される模擬実験方法の処理の流れを示すフローチャートである。
【0083】
本実施形態の模擬実験装置601は、記憶部602と、表示部603と、入力受付部604と、第1更新部605と、第2更新部606と、衝突更新部607と、とを備える。
【0084】
模擬実験は、時間間隔pごとに更新されるものとする。ゲーム装置100上に模擬実験装置601が実現される場合、時間間隔pとしてモニタの同期タイミングと同じ間隔(たとえば、垂直同期信号の割込と同じタイミング。)を採用すると、オブジェクトの移動の様子が滑らかにモニタに表示されることとなる。
【0085】
まず、記憶部602は、仮想空間における第1オブジェクト301の位置および速度と、第2オブジェクト302の位置および速度と、を記憶する。第1オブジェクト301の速度の履歴は、最新のものから1 + L/p個分を記憶する必要がある。たとえば、速度ベクトルを記憶する配列を用意し、これをリングバッファ状に利用することにより、これを実現することができる。したがって、RAM 103が記憶部602として機能することとなる。
【0086】
まず、表示部603は、当該第1オブジェクト301と、当該第2オブジェクト302と、の画像を、そのそれぞれについて記憶された位置に表示する(ステップS701)。したがって、画像処理部107が表示部603として機能することとなる。ブロック崩しゲームに本発明を適用する場合には2次元の画像処理が行われ、テニスゲームや卓球ゲームなどの3次元モデルに基づいたゲームに本発明を適用する場合には、上記のような3次元の画像処理を行う。
【0087】
そして、入力受付部604は、当該第1オブジェクト301の移動指示入力を受け付ける(ステップS702)。したがって、コントローラ105は、入力受付部604として機能する。尚、CPU 101が所定のアルゴリズムによって計算して取得したものを移動指示入力として採用することも可能である。たとえば、乱数により移動指示入力を決定したり、第1オブジェクト301と第2オブジェクト302との位置関係や速度などを考慮して、適宜移動指示入力を決定するなど、第1オブジェクト301に対してオートプレイを行う場合であっても、本発明を適用することができる。
【0088】
ついで、第1更新部605は、入力を受け付けられた移動指示入力にしたがって当該第1オブジェクト301について記憶された位置および/または速度を更新する(ステップS703)。移動指示入力があった場合は、これを上記のモデル化によって力や撃力として考えて、第1オブジェクト301の速度ベクトルを更新し、また、速度ベクトルに時間間隔pを乗じることによって変位ベクトルを求めて、これと現在位置の位置ベクトルを加算することにより、新たな位置ベクトルを求め、これら得られた新たな位置ベクトルおよび速度ベクトルを、記憶部602に記憶させる。また、速度ベクトルについては、上記のリングバッファに追加する。したがって、CPU 101は、第1更新部605として機能する。
【0089】
第2更新部606は、所定の規則にしたがって、当該第2オブジェクト302について記憶された位置および/または速度を更新する(ステップS704)。現在の第2オブジェクト302の速度ベクトルに時間間隔pを乗じれば、変位ベクトルが求められ、これと現在位置の位置ベクトルとを加算することにより、新たな位置ベクトルが求められるのは、上記第1更新部605の場合と同様である。したがって、CPU 101は、第2更新部606として機能する。
【0090】
なお、第1更新部605および第2更新部606における更新の計算処理においては、さらに、これらのオブジェクトが存在する仮想空間における粘性力や摩擦力などを考慮しても良い。
【0091】
ついで、衝突更新部607は、当該第1オブジェクト301と、当該第2オブジェクト302と、が、衝突するか否かを判定する(ステップS705)。衝突していない場合(ステップS705;No),ステップS701に戻る。一方、衝突している場合(ステップS705;Yes)、上記の各種の技術を採用して、第2オブジェクト302の衝突後の速度ベクトルを求めてこれを記憶部602に記憶させて更新し(ステップS705)、ステップS701に戻る。したがって、CPU 101は、衝突更新部607として機能する。
【0092】
衝突しているか否かは、最も簡単には、第1オブジェクト301と、第2オブジェクト302と、の距離が、所定の値よりも小さいか否かによって判断できるが、このような衝突判定のアルゴリズムについては、種々の公知の技術を採用することができる。
【0093】
このほか、ステップS703およびステップS704において求められた変位ベクトルの大きさが、所定の閾値(典型的には、各オブジェクトのサイズやその定数倍)よりも大きい場合には、いわゆる「すりぬけ」が生ずる可能性があるため、時間間隔pをもっと短くして、両オブジェクトの変位ベクトルの計算をやり直す、という手法を採用することもできる。
【0094】
上記説明においては、理解を容易にするため、2つのオブジェクトについての移動や衝突を考えているが、ブロック崩しゲームの場合には、反射板402、ボール403、ブロック404、壁405などの種々のオブジェクトについて、上記フローと同様に移動や衝突の処理を行えば良い。また、ブロック崩しゲームには、ブロック404や壁405が移動したり回転したりするバリエーションがあるが、この場合は、ブロック404や壁405を第1オブジェクト301として考え、コンピュータによって計算される移動指示入力によって、これらのオブジェクトがオートプレイされる、と考えることができる。
【0095】
(第1オブジェクトが受ける影響)
従来のブロック崩しゲームでは、ボール403が衝突しても反射板402の位置や速度には影響が及ばないのが一般的であった。本実施形態は、このような影響を考えて、現実の物理現象にさらに近似したシミュレーションを可能にしようとするものである。
【0096】
第1オブジェクト301が衝突によって受ける影響は、第2オブジェクト302が衝突によって受ける影響の反作用であると考えられる。第2オブジェクト302の速度ベクトルは、衝突によってv’ − vだけ変化したのであるから、第1オブジェクト301が受ける影響は、ある正の定数hを使って、h(v − v’)と考えることができる。hは、第1オブジェクト301と第2オブジェクト302の質量比に相当する定数である。
【0097】
衝突前の第1オブジェクト301の速度ベクトルはs(B)であるから、衝突後の第1オブジェクト301の速度ベクトルを
s(B) + h(v − v’)
に更新すれば良い。
【0098】
ブロック崩しゲームでは反射板402は左右にしか移動できない。したがって、ベクトルh(v − v’)に上下方向の成分がある場合には、以下のような技術を採用することができる。
(1)上下方向の成分は無視する。
(2)h(v − v’)の左右方向の成分が0でない場合は、そちらの方向にベクトルh(v − v’)を回転させて、これとs(B)との和を衝突後の速度ベクトルとする。(3)h(v − v’)の左右方向の成分が0でない場合は、上下方向の成分の大きさ分(もしくはその定数倍)だけ、左右方向の成分を大きくする。
【0099】
また、h(v − v’)の大きさに応じて、ゲーム装置100の音声処理部110を駆動して発生させる衝突音の音量を変化させたり、コントローラ105に振動子が組み込まれている場合には、h(v − v’)の大きさに応じて振動子を振動させて、衝突の度合をユーザに知らせる態様を採用することもできる。
【0100】
【発明の効果】
以上説明したように、本発明によれば、仮想空間内における2つのオブジェクトの衝突をシミュレートする模擬実験装置、模擬実験方法、ならびに、これらをコンピュータによって実現するプログラムを提供することができる。
【図面の簡単な説明】
【図1】本発明の実施形態に係る模擬実験装置が実現される典型的なゲーム装置の概要構成を示す模式図である。
【図2】当該ゲーム装置におけるコントローラの外観を示す説明図である。
【図3】第1オブジェクトと第2オブジェクトの衝突の瞬間の様子を示す説明図である。
【図4】いわゆるブロック崩しゲームの動作画面を示す説明図である。
【図5】第1オブジェクトと、第2オブジェクトと、の、衝突の様子を示す説明図である。
【図6】本発明の実施形態に係る模擬実験装置の概要構成を示す模式図である。
【図7】当該模擬実験装置にて実行される模擬実験方法の手順を示すフローチャートである。
【符号の説明】
100 ゲーム装置
101 CPU
102 ROM
103 RAM
104 インターフェース
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
201 ↑ボタン
202 ↓ボタン
203 ←ボタン
204 →ボタン
205 ○ボタン
206 ×ボタン
207 △ボタン
208 □ボタン
209 SELECTボタン
210 STARTボタン
211 ANALOGボタン
212 インジケータ
213 ジョイスティック
214 ジョイスティック
215 L1ボタン
216 L2ボタン
217 R1ボタン
218 R2ボタン
301 第1オブジェクト
302 第2オブジェクト
303 接点
311 第1オブジェクトの接点における法線ベクトル
312 第2オブジェクトの接点における法線ベクトル
322 第2オブジェクトの衝突直前の速度ベクトル
332 第2オブジェクトの衝突直後の速度ベクトル
333 第2オブジェクトが「反射」した場合の衝突直後の速度ベクトル
401 画面
402 反射板
403 ボール
404 ブロック
405 壁
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a simulation experiment apparatus that simulates a collision between two objects in a virtual space, a simulation experiment method, and a program that realizes these on a computer.
[0002]
[Prior art]
Conventionally, a technique has been proposed in which a physical phenomenon of collision between an object and an object is modeled, and the phenomenon is simulated by a computer (simulation experiment). The basis of such a simulation experiment technique is a law of conservation of momentum in the collision of two objects, and a physical law called a law of conservation of energy. Such a physical phenomenon of collision has attracted attention in the field of computer graphics and computer games.
[0003]
However, the physical phenomenon of collision still has many unexplained scientific aspects, and the phenomenon of collision cannot be completely simulated only by the above-mentioned laws. This is because the collision involves various physical phenomena such as various frictional forces and elastic body behavior.
[0004]
[Problems to be solved by the invention]
Therefore, in these fields, there is a demand for how to realize a collision in accordance with the laws of nature and a collision that looks natural to humans who see it. In addition, when a collision phenomenon is simulated by a computer in real time, it is also necessary to perform calculation at high speed by simple modeling. Therefore, there is a need for a technique for performing sufficient collision modeling as required according to the application.
[0005]
An object of the present invention is to provide a simulation experiment apparatus, a simulation experiment method, and a program for realizing these by a computer that simulate the collision of two objects in a virtual space.
[0006]
[Means for Solving the Problems]
In order to achieve the above object, the following invention is disclosed in accordance with the principle of the present invention.
[0007]
A simulation experiment apparatus according to a first aspect of the present invention includes a storage unit, a display unit, an input reception unit, a first update unit, a second update unit, and a collision update unit, and is as follows. Configure.
[0008]
That is, the storage unit stores the position and speed of the first object in the virtual space and the position and speed of the second object. That is, the simulation experiment apparatus performs a simulation experiment of movement and collision between the first object and the second object in the virtual space based on information such as the position and speed stored in the storage unit. In addition, it is possible to store various information such as the posture and mass of these objects and the fuel they have, and to reflect these in simulation experiments.
[0009]
On the other hand, a display part displays the image of the said 1st object and the said 2nd object in the position memorize | stored about each. That is, if the display unit updates the display screen at a predetermined timing, it is displayed that the first object and the second object move with time in the simulation experiment. .
[0010]
Further, the input reception unit receives a movement instruction input of the first object. Typically, the instruction input from the user corresponds to physical parameters such as a force applied to the first object, a striking force, and various energies. For example, in a computer game, setting of the game world It is also possible to adopt parameters according to
[0011]
Then, the first updating unit updates the position and / or speed stored for the first object in accordance with the movement instruction input accepted. As a result, the user controls the movement of the first object in the virtual space. As described above, when the force or striking force applied to the first object is used as the movement instruction input, the first updating unit calculates the acceleration or momentum change of the first object, and thereby the speed of the first object. And the position is updated.
[0012]
On the other hand, the second updating unit updates the position and / or speed stored for the second object according to a predetermined rule. The predetermined law is based on, for example, a general law of physics. Typically, “the second object performs a constant-velocity linear motion unless an external force is applied”, “the second object The law is such that “the resistance force (viscous force) is proportional to the square of” and “the acceleration of the second object is proportional to the external force”. However, in a computer game or the like set in a virtual world, rules according to the setting of the game world may be adopted.
[0013]
Further, the collision update unit determines whether or not the first object and the second object collide, and when it is determined that the first object collides during movement, the following parameter is set:
(A) the position and / or speed of the first object;
(B) a history of the position and / or speed of the first object from a predetermined point in time until a collision;
(C) the position and / or speed of the second object,
The position and / or speed of the second object after the collision is calculated to update the stored position and / or speed. That is, a physical phenomenon called collision is modeled using the parameters (a), (b), and (c).
[0014]
According to the present invention, when a first object whose movement can be controlled by a user operation collides with a second object during movement, how the position and speed of the second object change due to the collision, It becomes possible to model using the parameters (a), (b), and (c).
[0015]
In the simulation experiment apparatus according to the present invention, the collision update unit sets the “predetermined time” of the parameter (b)
(P) When the first object starts moving last,
(Q) When the first object finally starts moving in the same direction as the direction of movement,
(R) When going back to the past by a predetermined time from the present,
(S) The most recent time point out of any one of the above time points (p), (q), and (r),
Any one of these can be used to calculate position and / or velocity.
[0016]
The present invention is one of the preferred embodiments of the above-described simulation experiment apparatus, and determines to what point in the past the “history” of the first object is tracked. According to the present invention, it is possible to determine the starting point of time when the history of the position and speed of the first object should be maintained. For example, an effect of saving an area for storing the history can be obtained.
[0017]
Moreover, in the simulation apparatus of the present invention, the collision update unit uses the parameter (b) “history of the position and / or speed of the first object”.
(X) Elapsed time from the predetermined time to the present,
(Y) the moving distance from the predetermined time point to the present time;
(Z) a time integral value of the square of the speed from the predetermined time point to the present time;
Can be configured to calculate post-impact position and / or velocity.
[0018]
The present invention is one of the preferred embodiments of the simulation experiment apparatus, and determines what parameter is used as the “history” of the first object. According to the present invention, it is possible to simulate a collision phenomenon that approximates a natural law or something that looks natural to humans.
[0019]
Moreover, in the simulation apparatus of the present invention, the collision update unit further determines that the first object after the collision by parameters (a), (b), and (c) when it is determined that the first object collides during movement. The position and / or velocity of the first object can be calculated to update the stored position and / or velocity. Therefore, in this simulation experimental apparatus, simulation is performed so that not only the second object but also the position and speed of the first object are affected by the collision.
[0020]
According to the present invention, it is possible to perform a simulation experiment in which the position and speed of the first object operated by the user change due to a collision. For example, in a computer game, when the first object operated by the user collides with the second object, the position and speed of the first object itself change, and the accompanying force and power are fed back to the user. It can also be applied to such an embodiment.
[0021]
A simulation experiment method according to another aspect of the present invention includes a display process, an input reception process, a first update process, a second update process, and a collision update process, and includes a first object in a virtual space. A storage unit that stores the position and speed and the position and speed of the second object is used and configured as follows.
[0022]
That is, in the display step, the images of the first object and the second object are displayed at the positions stored for the respective images. On the other hand, in the input receiving step, a movement instruction input of the first object is received. Further, in the first update step, the position and / or speed stored for the first object is updated in accordance with the movement instruction input that has been accepted. In the second update step, the position and / or speed stored for the second object is updated according to a predetermined rule.
[0023]
On the other hand, in the collision update step, it is determined whether or not the first object and the second object collide, and if it is determined that the first object collides during movement, the following parameters are set:
(A) the position and / or speed of the first object;
(B) a history of the position and / or speed of the first object from a predetermined point in time until a collision;
(C) the position and / or speed of the second object,
The position and / or speed of the second object after the collision is calculated to update the stored position and / or speed.
[0024]
A program according to another aspect of the present invention is configured to cause a computer to function as the simulation experiment apparatus or to cause the computer to execute the simulation experiment method. The program of the present invention can be recorded on a computer-readable information recording medium such as a compact disk, flexible disk, hard disk, magneto-optical disk, digital video disk, magnetic tape, and semiconductor memory. The above program can be distributed and sold via a computer communication network independently of the computer on which the program is executed. The information recording medium can be distributed and sold independently of the computer.
[0025]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below. In the following, for ease of understanding, an embodiment in which the present invention is applied to a game device will be described. However, the present invention is similarly applied to information processing devices such as various computers, PDAs (Personal Data Assistants), and mobile phones. Can be applied. That is, the embodiment described below is for explanation, and does not limit the scope of the present invention. Therefore, those skilled in the art can employ embodiments in which each or all of these elements are replaced with equivalent ones, and these embodiments are also included in the scope of the present invention.
[0026]
(Embodiment of the Invention)
FIG. 1 is a schematic diagram showing a schematic configuration of a typical game device in which a simulation experimental device according to one embodiment of the present invention is realized. Hereinafter, a description will be given with reference to FIG.
[0027]
The game apparatus 100 includes a CPU (Central Processing Unit) 101, a ROM (Read Only Memory) 102, a RAM (Random Access Memory) 103, an interface 104, a controller 105, an external memory 106, an image processing unit 107, and the like. , A DVD (Digital Versatile Disk) -ROM drive 108 and a NIC (Network Interface Card) 109.
[0028]
When a DVD-ROM storing a game program and data is loaded into the DVD-ROM drive 108 and the game apparatus 100 is turned on, the program is executed, and the simulation experiment apparatus of the present embodiment is realized. The
[0029]
The CPU 101 controls the overall operation of the game apparatus 100 and is connected to each component to exchange control signals and data.
[0030]
The ROM 102 stores an IPL (Initial Program Loader) that is executed immediately after the power is turned on, and when this is executed, the program recorded on the DVD-ROM is read out to the RAM 103 and execution by the CPU 101 is started. The The ROM 102 stores an operating system program and various data necessary for operation control of the entire game apparatus 100.
[0031]
The RAM 103 is for temporarily storing data and programs, and holds programs and data read from the DVD-ROM and other data necessary for game progress and chat communication.
[0032]
The controller 105 connected via the interface 104 receives an operation input performed when the user executes the game.
[0033]
FIG. 2 is an explanatory diagram showing the appearance of the controller 105. Hereinafter, a description will be given with reference to FIG.
[0034]
On the left side of the controller 105, there are arranged an ↑ button 201, a ↓ button 202, a ← button 203, and a → button 204 that are used to perform an operation input indicating up, down, left, and right.
[0035]
The user can instruct and input parameters corresponding to the force and the struck force to the object operated by the user by pressing these ↑ button 201, ↓ button 202, ← button 203, and → button 204. It becomes.
[0036]
On the right side, a ○ button 205 used to input a decision operation, a × button 206 used to input a cancel operation, a Δ button 207 used to input an instruction such as a menu display, A square button 208 used for inputting other instructions is arranged.
[0037]
In addition to the SELECT button 209 and the START button 210, an ANALOG button 211 for instructing start / stop of analog input and an indicator 212 for displaying whether the analog input is valid or invalid are arranged in the center. .
[0038]
In addition, joysticks 213 and 214 for inputting an instruction with a size in a direction not limited to up, down, left, and right are arranged at the lower center. The joysticks 213 and 214 are provided with strain gauges, and can detect how much they are bent in which direction.
[0039]
When these joysticks 213 and 214 are operated, it is possible to adopt a form in which a parameter corresponding to the force or striking force applied to the object is instructed according to the degree and direction of bending.
[0040]
Further, an L1 button 215, an L2 button 216, an R1 button 217, and an R2 button 218 that can be used for inputting various instructions are disposed above.
[0041]
Each button 201-208, 215-218 of the controller 105 is provided with a pressure sensor, and when analog input is enabled, it can detect which button is pressed, The magnitude of the pressure of the user's pressing operation can be obtained in 256 steps from 0 to 255.
[0042]
Returning to FIG. 1, the external memory 106 detachably connected via the interface 104 stores data indicating the progress of the game, chat communication log (record) data, and the like in a rewritable manner. The user can record these data in the external memory 106 as appropriate by inputting an instruction via the controller 105.
[0043]
A DVD-ROM mounted on the DVD-ROM drive 108 stores a program for realizing the game and image data and audio data associated with the game. Under the control of the CPU 101, the DVD-ROM drive 108 performs a reading process on the DVD-ROM loaded therein, reads out necessary programs and data, and these are temporarily stored in the RAM 103 or the like.
[0044]
The image processing unit 107 processes the data read from the DVD-ROM by an image arithmetic processor (not shown) included in the CPU 101 or the image processing unit 107, and then processes the processed data on a frame memory ( (Not shown). The image information recorded in the frame memory is converted into a video signal at a predetermined synchronization timing and output to a monitor (not shown) connected to the image processing unit 107. Thereby, various image displays are possible.
[0045]
The image calculation processor can execute a two-dimensional image overlay calculation, a transparency calculation such as α blending, and various saturation calculations at high speed.
[0046]
In addition, the polygon information arranged in the virtual three-dimensional space and added with various kinds of texture information is rendered by the Z buffer method, and a rendering image obtained by overlooking the polygon arranged in the virtual three-dimensional space from a predetermined viewpoint position is obtained. High speed execution of the obtained operation is also possible.
[0047]
Further, the CPU 101 and the image arithmetic processor operate in a coordinated manner, so that a character string can be drawn as a two-dimensional image in a frame memory or drawn on the surface of each polygon according to font information that defines the character shape. is there. The font information is recorded in the ROM 102, but it is also possible to use dedicated font information recorded in the DVD-ROM.
[0048]
The NIC 109 is used to connect the game apparatus 100 to a computer communication network (not shown) such as the Internet, and conforms to the 10BASE-T / 100BASE-T standard used when configuring a LAN (Local Area Network). Therefore, an analog modem for connecting to the Internet using a telephone line, an ISDN (Integrated Services Digital Network) modem, an ADSL (Asymmetric Digital Subscriber Modem) modem, and a cable television line for connecting to the Internet. A cable modem or the like and an interface (not shown) that mediates between these and the CPU 101 are configured.
[0049]
The current date and time information can be obtained by connecting to an SNTP server in the Internet via the NIC 109 and obtaining information therefrom. Further, various network game server devices may be configured and configured to perform the same functions as the SNTP server.
[0050]
The audio processing unit 110 converts audio data read from the DVD-ROM into an analog audio signal and outputs the analog audio signal from a speaker (not shown) connected thereto. Further, under the control of the CPU 101, sound effects and music data to be generated during the progress of the game are generated, and sound corresponding to this is output from the speaker.
[0051]
In addition, the game apparatus 100 uses a large-capacity external storage device such as a hard disk so as to perform the same functions as the ROM 102, the RAM 103, the external memory 106, the DVD-ROM attached to the DVD-ROM drive 108, and the like. It may be configured.
[0052]
(Basic model of collision)
For object collisions in the virtual space, it is thought that by adopting various modeling for collisions in the natural world, it is possible to simulate collisions according to the laws of nature and those that appear natural to humans who see them. . Here, the simplest model applicable in the present invention will be described in order.
[0053]
FIG. 3 is an explanatory diagram showing a state of the moment of collision between the first object and the second object. The first object 301 and the second object 302 collide at the contact point 303. The normal vector 311 at the contact point 303 on the surface of the first object 301 and the normal vector 312 at the contact point 303 on the surface of the second object 302 are on the same straight line and are opposite to each other.
[0054]
FIG. 3 shows the velocity vector 321 of the first object 301 and the velocity vector 322 of the second object 302. In the present embodiment, modeling is performed on the assumption that the mass of the second object 302 is extremely small with respect to the mass of the first object 301. In this case, the first object 301 is hardly affected by the collision so that the light is reflected by the mirror surface, and the second object 302 is “reflected” by the collision, and the velocity vector 321 of the first object 301 is changed. Regardless, the velocity vector after the collision of the second object 302 is determined.
[0055]
FIG. 3 also shows a velocity vector 332 after the collision of the second object. The second object 302 is “reflected” on a plane passing through the contact 303 with the normal vector 311 and the normal vector 312 as normals. That is, the incident angle and the reflection angle are equal as in the case of reflection of light on the mirror surface. Therefore, the angle formed by the velocity vector 332 after the collision with the normal vector 311 is equal to the angle formed by the velocity vector 322 before the collision with the normal vector 311, and the velocity vector 332, the normal vector 311 after the collision, The velocity vector 322 will be in the same plane.
[0056]
That is, the component in the normal vector 311 direction of the velocity vector 332 after the collision is obtained by multiplying the component in the normal vector 311 direction of the velocity vector 322 before the collision by -1. Further, the component in the direction orthogonal to the normal vector 311 of the velocity vector 332 after the collision is the same as the component in the direction orthogonal to the normal vector 311 of the velocity vector 322 before the collision. The outer product of “the outer product of the velocity vector 322 and the normal vector 311 before the collision” and “the outer product of the velocity vector 332 and the normal vector 311 after the collision” is a zero vector.
[0057]
This is a collision model when it is assumed that there is no energy loss due to friction or impact between the first object 301 and the second object 302 in the event of a collision. Modeling is considered to be applied in the conventional block breaking game. FIG. 4 is an explanatory diagram showing an operation screen of a so-called block breaking game.
[0058]
The user can move the reflector 402 in the screen 401 only to the left and right by operating the controller 105 of the game apparatus 100. The reflection plate 402 corresponds to the first object 301. In the block breaking game, the instruction input for moving the reflector 402 is often simplified. For example, the following modeling of the reflector 402 can be adopted.
(1) Move at a constant speed in the right direction with the → button 204 and in the left direction with the ← button 203.
(2) Accelerate in the right direction with the → button 204 and in the left direction with the ← button 203. This corresponds to applying a force or a striking force to the reflector 402.
(3) The button 204 accelerates to the right and the ← button 203 accelerates to the left, but when reaching a certain speed, the button no longer accelerates. This corresponds to a case where viscous friction such as air is further considered.
[0059]
On the other hand, a ball 403 corresponds to the second object 302. When the ball 403 collides with the reflecting plate, the movement after the collision is determined according to the “reflection” model as described above. Further, when the ball 403 collides with the stationary block 404 or the wall 405, the ball 403 is also “reflected” there, and the block 404 that has received the collision disappears. On the other hand, if the ball 403 cannot be “reflected” by the reflector 402 and the ball 403 goes too far behind the reflector 402 (downward in the figure), the game is over. In this way, enjoying the progress until all the blocks 404 disappear is a block breaking game.
[0060]
Now, in such collision modeling, the frictional force and the movement of the first object 301 are not considered. For example, when the reflecting plate 402 is moving to the left and the ball 504 moves from directly above to below in the drawing and collides with the reflecting plate 402, the ball 403 "reflects" directly above. However, in an actual physical phenomenon, the movement trajectory of the ball 403 itself after the collision differs depending on the direction of movement of the reflector 402 (corresponding to tennis or table tennis racket) at the moment of collision. For example, in the above example, the ball 403 has a velocity component in the left direction after the collision according to the moving speed of the reflector 402, which is in accordance with the laws of nature and should be felt as a natural behavior for the user. It is.
[0061]
Therefore, such a collision phenomenon is approximated by the following modeling to simulate a natural collision with as little calculation as possible. Hereinafter, a specific method will be described. In general, the reflection plate 402 and the ball 403 will be described in consideration of a collision in a three-dimensional space. The behavior in the three-dimensional space can be easily projected into the two-dimensional space, that is, if the component in the predetermined direction of the vector is set to 0, this model is applied to the collision in the two-dimensional space as in block breaking. Can do.
[0062]
In the present embodiment, the velocity vector after the collision of the second object 302 is determined in consideration of the movement history of the first object 301. FIG. 5 is an explanatory diagram showing a state of collision between the first object (reflecting plate) 301 and the second object (ball) 302.
[0063]
The normal vector of the first object 301 at the contact point 303 between the first object 301 and the second object 302 is n. The velocity vector 322 before the collision of the second object 302 is v, and the velocity vector 332 after the collision is v ′. Also, let w be the velocity vector 333 after the collision when the second object 302 is considered to be “reflected” like the above model.
[0064]
As described above, w is parallel to the plane formed by n and v, the angle formed by n and v is equal to the angle formed by n and w, and | v | = | w | The component of v in the n direction and the component of w in the n direction are equal in size and are opposite to each other.
[0065]
In the present embodiment, the velocity vector v ′ is obtained by adding a correction δ to the velocity vector w in consideration of the movement history of the first object 301 and the velocity vector of the first object 301 at the time of collision. That is, v ′ = w + δ. Hereinafter, in order to consider the history at time t, the velocity vector of the first object 301 is written as s (t).
[0066]
When considering the movement history of the first object 301 in a computer such as the game apparatus 100, the history is temporarily stored in the RAM 103, but the storage area is limited and too much. If the history is taken into consideration, the calculation time in the CPU 101 will be long. Therefore, when the time of the collision is t = B, it is desirable that the time going back from the time t = B to the limit time L at most in the past is the start time of the history to be considered. That is, assuming that the start time of the history to be considered is t = A, B−A ≦ L.
[0067]
Note that a collision in the actual natural world does not occur in an instant. Although it is very short, it takes time to collide. Therefore, as described above, considering the history between time t = A and t = B is sufficiently meaningful as modeling / approximation of the natural world.
[0068]
The velocity vector of the first object 301 is s (A) at the start time of the history to be considered, and s (B) at the time of collision. In this embodiment, if A and δ are determined, the velocity vector 331v ′ after the collision of the second object 302 is obtained. Hereinafter, these determination methods will be described.
[0069]
(Start time of history to consider)
In the following, first, a method for determining time A will be described. The simplest methods are the following two.
(1) A = B. That is, only the movement of the first object 301 at the collision time t = B is considered.
(2) A = B−L. That is, the time from the time point t = A = B−L, which is a predetermined time L before the collision time t = B, to the collision time t = B is considered.
[0070]
Method (1) emphasizes that collisions occur in a very short time, and is simple as a collision modeling, but may be sufficient as an approximate calculation depending on the application field. There is also. Method (2) is to consider the history of a certain time until the collision, and the history of the velocity vector s (t) of the first object 301 only needs to be stored in the RAM 103 for the time L. In this respect, there is an advantage that management calculation by a computer becomes easy.
[0071]
In addition, the following methods are also conceivable.
(3) For any time t where a <t ≦ B, the first condition s (B) · s (t)> 0 is satisfied, and the second condition s (B) · s (a) = 0 is satisfied. Let time a be A. The operation “·” means an inner product of vectors. That is, let A be the most recent time at which the same velocity component as the velocity vector of the first object 301 at the time of the collision starts to occur. In the example of the block breaking game, if the ball 403 collides with the reflector 402 while the reflector 402 is moving to the right, from the time when the reflector 402 starts to move to the right before the collision, The history is taken into account.
[0072]
(4) Let A be the time a at which the first condition | s (t) |> 0 is satisfied and the second condition | s (a) | = 0 is satisfied at any time t where a <t ≦ B. . That is, A is the time a at which the movement until the collision is started. In the case of a block breaking game, the reflector 402 is only one-dimensionally moved, and therefore A obtained by this method coincides with the method (3).
[0073]
(5) In the above methods (3) and (4), the acceleration vector ds (t) / dt = α (t) is used instead of the velocity vector s (t).
(6) When any one of the above methods (3) to (5) is adopted and a obtained is a <B−L, A = B−L. This is equivalent to considering the history retroactively from the time t = B of the collision to the past t = B−L, and setting A = B−L when the first condition is always satisfied during this time.
(7) Any one of the above methods (2) to (5) is adopted, and the largest one (the one closest to time t = B) among A obtained by each method is adopted as A. .
[0074]
In the present invention, the time A is determined by such various techniques.
[0075]
(How to determine the amount of correction)
The correction amount δ can be determined by various techniques described below.
(1) It is determined by the velocity vector s (B) of the first object 301 at the time of collision. Typically, using a predetermined positive constant k,
δ = k S (B)
And That is, the correction amount δ is proportional to the velocity vector of the first object 301 at the time of collision.
[0076]
(2) Using the time A determined as described above and a predetermined positive constant k,
δ = k∫A Bs (t) dt
And That is, the correction amount δ is proportional to the displacement vector of the first object 301 between time t = A and time t = B. This means that the magnitude of the correction amount δ is proportional to the moving distance from time t = A to time t = B.
[0077]
(3) Using the time A determined as described above and a predetermined positive constant k,
δ = (k∫A B| S (t) |2dt) s (B)
Or
δ = (k∫A B| S (t) |2dt) ∫A Bs (t) dt
And
[0078]
(4) When once obtaining δ using any one of the techniques (1) to (3) above, then examining the magnitude | δ | of the δ and comparing it with a predetermined positive constant Δ If | δ |> Δ, a vector with the same direction and orientation as δ and a magnitude of Δ
(Δ / | δ |) δ
Is again used as the correction amount δ. This is a technique in which there is an upper limit to the magnitude of the influence on the second object 302 when the first object 301 is moving at the time of collision.
[0079]
(5) Using the technique of any one of (1) to (3) above, δ is once calculated and v ′ = w
After obtaining v ′ by + δ,
(| V | / | v '|) v'
Is again adopted as the velocity vector 322 of the second object 302 after the collision. This corresponds to the modeling that the influence of the first object 301 on the second object 302 at the time of collision is to change only the direction of the velocity vector and not to change the magnitude.
[0080]
In these technologies, time integration is used. However, if simulation experiments are performed by updating physical phenomena at appropriate times, discrete integration is used instead of continuous integration. good. For example, in the case of using the technique (2) described above, the history of s (t) from time t = A to t = B is represented as a vector sequence.
s0, ... sN
Assuming that it was recorded as That is, it is a case where the application of physical phenomenon rules and various updates are performed every time (B−A) / N.
[0081]
In this case, the above integral is
δ = Σi = 1 N  si  (BA) / N
Can be obtained by: The same applies to the case where the update time interval is variable, for example, when the amount of movement of each object in the time interval is greater than a predetermined value, and the update calculation is repeated with a shorter time interval. The technology can be applied.
[0082]
(Embodiment of simulation experiment apparatus)
FIG. 6 is a schematic diagram showing a schematic configuration of a simulation experiment apparatus according to one embodiment of the present invention, which uses the above-described method. The simulation experiment apparatus is realized on an information processing apparatus such as the game apparatus 100 shown in FIG. FIG. 7 is a flowchart showing a flow of processing of a simulation experiment method executed in the simulation experiment apparatus.
[0083]
The simulation experiment apparatus 601 of this embodiment includes a storage unit 602, a display unit 603, an input reception unit 604, a first update unit 605, a second update unit 606, and a collision update unit 607.
[0084]
The simulation experiment is updated every time interval p. When the simulation experiment apparatus 601 is realized on the game apparatus 100, if the same interval as the monitor synchronization timing (for example, the same timing as the interrupt of the vertical synchronization signal) is adopted as the time interval p, the state of the movement of the object will be described. It will be displayed smoothly on the monitor.
[0085]
First, the storage unit 602 stores the position and speed of the first object 301 and the position and speed of the second object 302 in the virtual space. The speed history of the first object 301 needs to be stored for 1 + L / p from the latest. For example, this can be realized by preparing an array for storing the velocity vector and using it as a ring buffer. Therefore, the RAM 103 functions as the storage unit 602.
[0086]
First, the display unit 603 displays the images of the first object 301 and the second object 302 at the positions stored for each of them (step S701). Therefore, the image processing unit 107 functions as the display unit 603. When the present invention is applied to a block breaking game, two-dimensional image processing is performed, and when the present invention is applied to a game based on a three-dimensional model such as a tennis game or a table tennis game, the above 3 Perform dimensional image processing.
[0087]
Then, the input receiving unit 604 receives a movement instruction input of the first object 301 (step S702). Therefore, the controller 105 functions as the input receiving unit 604. In addition, it is also possible to employ | adopt as a movement instruction | indication input what CPU101 calculated and acquired with the predetermined | prescribed algorithm. For example, the movement instruction input is determined by a random number, or the movement instruction input is appropriately determined in consideration of the positional relationship and speed between the first object 301 and the second object 302. Even when playing, the present invention can be applied.
[0088]
Next, the first updating unit 605 updates the position and / or speed stored for the first object 301 in accordance with the movement instruction input that has been accepted (step S703). When there is a movement instruction input, this is considered as force or striking force by the above modeling, the velocity vector of the first object 301 is updated, and the displacement vector is calculated by multiplying the velocity vector by the time interval p. Then, a new position vector is obtained by adding this and the position vector of the current position, and the obtained new position vector and velocity vector are stored in the storage unit 602. Further, the velocity vector is added to the ring buffer. Therefore, the CPU 101 functions as the first update unit 605.
[0089]
The second update unit 606 updates the position and / or speed stored for the second object 302 according to a predetermined rule (step S704). The displacement vector is obtained by multiplying the current velocity vector of the second object 302 by the time interval p, and a new position vector is obtained by adding this to the position vector of the current position. This is the same as in the case of the one update unit 605. Therefore, the CPU 101 functions as the second update unit 606.
[0090]
In addition, in the update calculation process in the first update unit 605 and the second update unit 606, a viscous force, a frictional force, and the like in a virtual space where these objects exist may be further taken into consideration.
[0091]
Next, the collision update unit 607 determines whether or not the first object 301 and the second object 302 collide (step S705). If there is no collision (step S705; No), the process returns to step S701. On the other hand, if there is a collision (step S705; Yes), the above-described various techniques are adopted to obtain the velocity vector after the collision of the second object 302, and this is stored in the storage unit 602 and updated (step). S705), the process returns to step S701. Therefore, the CPU 101 functions as the collision update unit 607.
[0092]
The simplest way to determine whether or not there is a collision is whether or not the distance between the first object 301 and the second object 302 is smaller than a predetermined value. As for, various known techniques can be employed.
[0093]
In addition, when the magnitude of the displacement vector obtained in step S703 and step S704 is larger than a predetermined threshold (typically, the size of each object or a constant multiple thereof), so-called “slip-out” occurs. Since there is a possibility, it is also possible to adopt a method in which the time interval p is further shortened and the displacement vectors of both objects are calculated again.
[0094]
In the above description, the movement and collision of two objects are considered for ease of understanding. However, in the case of a block breaking game, various objects such as a reflector 402, a ball 403, a block 404, and a wall 405 are used. The object may be processed for movement and collision as in the above flow. In the block breaking game, there are variations in which the block 404 and the wall 405 move and rotate. In this case, the block 404 and the wall 405 are considered as the first object 301, and the movement instruction calculated by the computer is used. It can be considered that these objects are auto-played by input.
[0095]
(Effects of the first object)
In the conventional block breaking game, even if the ball 403 collides, the position and speed of the reflector 402 are generally not affected. The present embodiment is intended to enable a simulation that further approximates an actual physical phenomenon in consideration of such influences.
[0096]
The influence that the first object 301 is affected by the collision is considered to be a reaction of the influence that the second object 302 receives by the collision. Since the velocity vector of the second object 302 has changed by v′−v due to the collision, the influence on the first object 301 is considered to be h (v−v ′) using a certain positive constant h. Can do. h is a constant corresponding to the mass ratio of the first object 301 and the second object 302.
[0097]
Since the velocity vector of the first object 301 before the collision is s (B), the velocity vector of the first object 301 after the collision is
s (B) + h (v−v ′)
Update to.
[0098]
In the block breaking game, the reflector 402 can move only to the left and right. Therefore, when the vector h (v−v ′) has a vertical component, the following technique can be employed.
(1) The vertical component is ignored.
(2) If the horizontal component of h (v−v ′) is not 0, the vector h (v−v ′) is rotated in that direction and the sum of this vector and s (B) is collided The velocity vector of (3) When the horizontal component of h (v−v ′) is not 0, the horizontal component is increased by the size of the vertical component (or a constant multiple thereof).
[0099]
In addition, the volume of the collision sound generated by driving the sound processing unit 110 of the game apparatus 100 is changed according to the magnitude of h (v−v ′), or a vibrator is incorporated in the controller 105 In this case, it is possible to adopt a mode in which the vibrator is vibrated according to the size of h (v−v ′) to inform the user of the degree of collision.
[0100]
【The invention's effect】
As described above, according to the present invention, it is possible to provide a simulation experiment apparatus, a simulation experiment method, and a program for realizing these by a computer that simulate the collision of two objects in a virtual space.
[Brief description of the drawings]
FIG. 1 is a schematic diagram showing a schematic configuration of a typical game device in which a simulation experiment device according to an embodiment of the present invention is realized.
FIG. 2 is an explanatory diagram showing an appearance of a controller in the game device.
FIG. 3 is an explanatory diagram showing a state of a moment of collision between a first object and a second object.
FIG. 4 is an explanatory diagram showing an operation screen of a so-called block breaking game.
FIG. 5 is an explanatory diagram showing a state of collision between a first object and a second object.
FIG. 6 is a schematic diagram showing a schematic configuration of a simulation experimental apparatus according to an embodiment of the present invention.
FIG. 7 is a flowchart showing a procedure of a simulation experiment method executed in the simulation experiment apparatus.
[Explanation of symbols]
100 game devices
101 CPU
102 ROM
103 RAM
104 interface
105 controller
106 External memory
107 Image processing unit
108 DVD-ROM drive
109 NIC
110 Speech processing unit
201 ↑ button
202 ↓ button
203 ← button
204 → button
205 ○ button
206 x button
207 button
208 □ button
209 SELECT button
210 START button
211 ANALOG button
212 Indicator
213 Joystick
214 Joystick
215 L1 button
216 L2 button
217 R1 button
218 R2 button
301 First object
302 second object
303 contacts
311 Normal vector at the point of contact of the first object
312 Normal vector at the contact point of the second object
322 Velocity vector just before second object collision
332 Velocity vector immediately after collision of second object
333 Velocity vector immediately after collision when the second object “reflects”
401 screen
402 reflector
403 balls
404 blocks
405 wall

Claims (5)

記憶部と、表示部と、入力受付部と、第1更新部と、第2更新部と、衝突更新部と、を備える模擬実験装置であって、
前記記憶部は、仮想空間における第1オブジェクトの位置および速度と、第2オブジェクトの位置および速度と、を記憶し、
前記表示部は、当該第1オブジェクトと、当該第2オブジェクトと、の画像を、そのそれぞれについて前記記憶された位置に表示し、
前記入力受付部は、当該第1オブジェクトの移動指示入力を受け付け、
前記第1更新部は、前記入力を受け付けられた移動指示入力にしたがって当該第1オブジェクトについて前記記憶された位置および/または速度を更新し、
前記第2更新部は、所定の規則にしたがって、当該第2オブジェクトについて前記記憶された位置および/または速度を更新し、
前記衝突更新部は、当該第1オブジェクトと、当該第2オブジェクトと、が、衝突するか否かを判定し、当該第1オブジェクトが移動中に衝突する旨判定された場合、以下のパラメータ
(a)当該第1オブジェクトの位置および/または速度、
(b)所定の時点から衝突に至るまでの当該第1オブジェクトの位置および/または速度の履歴、
(c)当該第2オブジェクトの位置および/または速度、
により、衝突後の当該第2オブジェクトの位置および/または速度を計算して前記記憶された位置および/または速度を更新し、
前記衝突更新部は、パラメータ(b)の「当該第1オブジェクトの位置および/または速度の履歴」として、当該所定の時点から現在までの速度の自乗の時間積分値を用いて、衝突後の位置および/または速度を計算する
ことを特徴とするもの。
A simulation experiment apparatus comprising a storage unit, a display unit, an input receiving unit, a first update unit, a second update unit, and a collision update unit,
The storage unit stores the position and speed of the first object in the virtual space and the position and speed of the second object,
The display unit displays images of the first object and the second object at the stored positions for each of the images,
The input receiving unit receives a movement instruction input of the first object,
The first update unit updates the stored position and / or speed for the first object in accordance with the movement instruction input accepted for the input,
The second update unit updates the stored position and / or speed of the second object according to a predetermined rule,
The collision update unit determines whether or not the first object and the second object collide, and when it is determined that the first object collides during movement, the following parameter (a ) The position and / or speed of the first object,
(B) a history of the position and / or speed of the first object from a predetermined point in time until a collision;
(C) the position and / or speed of the second object,
To update the stored position and / or velocity by calculating the position and / or velocity of the second object after the collision,
The collision update unit uses a time integral value of the square of the speed from the predetermined time point to the present time as the “history of the position and / or speed of the first object” of the parameter (b), and the position after the collision And / or calculating speed.
請求項1に記載の模擬実験装置であって、The simulation experiment apparatus according to claim 1,
前記衝突更新部は、当該パラメータ(b)の「所定の時点」として  The collision update unit, as the “predetermined time” of the parameter (b)
(p)当該第1オブジェクトが最後に移動を開始した時点、  (P) When the first object starts moving last,
(q)当該第1オブジェクトが最後に移動の向きと同じ向きに移動を開始した時点、  (Q) When the first object finally starts moving in the same direction as the direction of movement,
(r)現在から所定の時間だけ過去に遡った時点  (R) A point in time going back in the past by a predetermined time
のいずれか複数のうち、直近の時点を用いて、位置および/または速度を計算する  Calculate position and / or velocity using the most recent point in time
ことを特徴とするもの。  It is characterized by that.
請求項1または2に記載の模擬実験装置であって、
前記衝突更新部は、さらに、当該第1オブジェクトが移動中に衝突する旨判定された場合、パラメータ(a)、(b)、(c)により衝突後の当該第1オブジェクトの位置および/または速度を計算して前記記憶された位置および/または速度を更新する
ことを特徴とするもの。
The simulation experiment apparatus according to claim 1 or 2 ,
When it is determined that the first object collides during movement, the collision update unit further determines the position and / or speed of the first object after the collision according to parameters (a), (b), and (c). And calculating the stored position and / or velocity.
表示工程と、入力受付工程と、第1更新工程と、第2更新工程と、衝突更新工程と、を備え、仮想空間における第1オブジェクトの位置および速度と、第2オブジェクトの位置および速度と、を記憶する記憶部を用いる模擬実験方法であって、
前記表示工程では、当該第1オブジェクトと、当該第2オブジェクトと、の画像を、そのそれぞれについて前記記憶された位置に表示し、
前記入力受付工程では、当該第1オブジェクトの移動指示入力を受け付け、
前記第1更新工程では、前記入力を受け付けられた移動指示入力にしたがって当該第1オブジェクトについて前記記憶された位置および/または速度を更新し、
前記第2更新工程では、所定の規則にしたがって、当該第2オブジェクトについて前記記憶された位置および/または速度を更新し、
前記衝突更新工程では、当該第1オブジェクトと、当該第2オブジェクトと、が、衝突するか否かを判定し、当該第1オブジェクトが移動中に衝突する旨判定された場合、以下のパラメータ
(a)当該第1オブジェクトの位置および/または速度、
(b)所定の時点から衝突に至るまでの当該第1オブジェクトの位置および/または速度の履歴、
(c)当該第2オブジェクトの位置および/または速度、
により、衝突後の当該第2オブジェクトの位置および/または速度を計算して前記記憶された位置および/または速度を更新し、
前記衝突更新工程では、パラメータ(b)の「当該第1オブジェクトの位置および/または速度の履歴」として、当該所定の時点から現在までの速度の自乗の時間積分値を用いて、衝突後の位置および/または速度を計算する
ことを特徴とする方法。
A display step, an input reception step, a first update step, a second update step, and a collision update step, the position and speed of the first object in the virtual space, the position and speed of the second object, A simulation experiment method using a storage unit for storing
In the display step, images of the first object and the second object are displayed at the stored positions for each of the images,
In the input receiving step, a movement instruction input of the first object is received,
In the first update step, the stored position and / or speed of the first object is updated according to the movement instruction input in which the input is accepted,
In the second update step, the stored position and / or velocity of the second object is updated according to a predetermined rule,
In the collision update step, it is determined whether or not the first object and the second object collide, and when it is determined that the first object collides during movement, the following parameters (a ) The position and / or speed of the first object,
(B) a history of the position and / or speed of the first object from a predetermined point in time until a collision;
(C) the position and / or speed of the second object,
To update the stored position and / or velocity by calculating the position and / or velocity of the second object after the collision,
In the collision update step, the position after the collision is calculated using the time integral value of the square of the speed from the predetermined time point to the present time as the “history of the position and / or speed of the first object” of the parameter (b). And / or calculating the speed.
コンピュータを、記憶部、表示部、入力受付部、第1更新部、第2更新部、および衝突更新部として機能させるプログラムであって、当該プログラムは、当該コンピュータを、
前記記憶部は、仮想空間における第1オブジェクトの位置および速度と、第2オブジェクトの位置および速度と、を記憶し、
前記表示部は、当該第1オブジェクトと、当該第2オブジェクトと、の画像を、そのそれぞれについて前記記憶された位置に表示し、
前記入力受付部は、当該第1オブジェクトの移動指示入力を受け付け、
前記第1更新部は、前記入力を受け付けられた移動指示入力にしたがって当該第1オブジェクトについて前記記憶された位置および/または速度を更新し、
前記第2更新部は、所定の規則にしたがって、当該第2オブジェクトについて前記記憶された位置および/または速度を更新し、
前記衝突更新部は、当該第1オブジェクトと、当該第2オブジェクトと、が、衝突するか否かを判定し、当該第1オブジェクトが移動中に衝突する旨判定された場合、以下のパラメータ
(a)当該第1オブジェクトの位置および/または速度、
(b)所定の時点から衝突に至るまでの当該第1オブジェクトの位置および/または速度の履歴、
(c)当該第2オブジェクトの位置および/または速度、
により、衝突後の当該第2オブジェクトの位置および/または速度を計算して前記記憶された位置および/または速度を更新し、
前記衝突更新部は、パラメータ(b)の「当該第1オブジェクトの位置および/または速度の履歴」として、当該所定の時点から現在までの速度の自乗の時間積分値を用いて、衝突後の位置および/または速度を計算する
ように機能させることを特徴とするもの。
A program that causes a computer to function as a storage unit, a display unit, an input reception unit, a first update unit, a second update unit, and a collision update unit, the program comprising:
The storage unit stores the position and speed of the first object in the virtual space and the position and speed of the second object,
The display unit displays images of the first object and the second object at the stored positions for each of the images,
The input receiving unit receives a movement instruction input of the first object,
The first update unit updates the stored position and / or speed for the first object in accordance with the movement instruction input accepted for the input,
The second update unit updates the stored position and / or speed of the second object according to a predetermined rule,
The collision update unit determines whether or not the first object and the second object collide, and when it is determined that the first object collides during movement, the following parameter (a ) The position and / or speed of the first object,
(B) a history of the position and / or speed of the first object from a predetermined point in time until a collision;
(C) the position and / or speed of the second object,
To update the stored position and / or velocity by calculating the position and / or velocity of the second object after the collision,
The collision update unit uses a time integral value of the square of the speed from the predetermined time point to the present time as the “history of the position and / or speed of the first object” of the parameter (b), and the position after the collision And / or functioning to calculate speed.
JP2003006186A 2003-01-14 2003-01-14 Simulation experiment apparatus, simulation experiment method, and program Expired - Fee Related JP3542795B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003006186A JP3542795B1 (en) 2003-01-14 2003-01-14 Simulation experiment apparatus, simulation experiment method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003006186A JP3542795B1 (en) 2003-01-14 2003-01-14 Simulation experiment apparatus, simulation experiment method, and program

Publications (2)

Publication Number Publication Date
JP3542795B1 true JP3542795B1 (en) 2004-07-14
JP2004220273A JP2004220273A (en) 2004-08-05

Family

ID=32767200

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003006186A Expired - Fee Related JP3542795B1 (en) 2003-01-14 2003-01-14 Simulation experiment apparatus, simulation experiment method, and program

Country Status (1)

Country Link
JP (1) JP3542795B1 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007212635A (en) * 2006-02-08 2007-08-23 Copcom Co Ltd Sound effect producing device, video game device equipped with the same, and program and recording medium for attaining the same
JP4736094B2 (en) * 2007-01-18 2011-07-27 独立行政法人産業技術総合研究所 Sound data generating apparatus and program
KR100888475B1 (en) 2007-02-02 2009-03-12 삼성전자주식회사 Method and apparatus for detecting model collision
JP4953084B2 (en) * 2007-10-23 2012-06-13 独立行政法人産業技術総合研究所 Sound data generating apparatus and program
JP4319233B2 (en) 2007-12-11 2009-08-26 株式会社コナミデジタルエンタテインメント Terminal device, game control method, and program
KR101357978B1 (en) 2008-07-22 2014-02-03 소니 온라인 엔터테인먼트 엘엘씨 System and method for physics interactions in a simulation
JP4912378B2 (en) * 2008-10-08 2012-04-11 株式会社ソニー・コンピュータエンタテインメント GAME CONTROL PROGRAM, GAME DEVICE, AND GAME CONTROL METHOD
WO2010041358A1 (en) * 2008-10-08 2010-04-15 株式会社ソニー・コンピュータエンタテインメント Game control program, game device and method for controlling game
JP5352628B2 (en) * 2011-06-28 2013-11-27 株式会社スクウェア・エニックス Proximity passing sound generator
JP5372116B2 (en) * 2011-11-18 2013-12-18 株式会社スクウェア・エニックス Character movement control device and program
JP6125082B1 (en) * 2016-07-15 2017-05-10 株式会社gloops GAME TERMINAL DEVICE, GAME CONTROL METHOD, GAME PROGRAM, GAME PROGRAM MEDIUM, AND GAME SERVER

Also Published As

Publication number Publication date
JP2004220273A (en) 2004-08-05

Similar Documents

Publication Publication Date Title
JP3696216B2 (en) Three-dimensional video game apparatus, control method of virtual camera in three-dimensional video game, program and recording medium
JP5089079B2 (en) Program, information storage medium, and image generation system
EP2016983A1 (en) Program, information storing medium and image generating system
US20110014977A1 (en) Game device, game processing method, information recording medium, and program
JP5498803B2 (en) GAME DEVICE, GAME CONTROL METHOD, AND PROGRAM
JP3707995B2 (en) GAME SYSTEM AND INFORMATION STORAGE MEDIUM
JPH10247252A (en) Collision judging processor
JP3542795B1 (en) Simulation experiment apparatus, simulation experiment method, and program
US20080248872A1 (en) Video game program, video game device, and video game control method
JP3747050B1 (en) Program, information storage medium, and image generation system
US7785200B2 (en) Game device and storage medium having game program stored therein
US8909506B2 (en) Program, information storage medium, information processing system, and information processing method for controlling a movement of an object placed in a virtual space
JP3926307B2 (en) Three-dimensional image drawing apparatus and method, program, and recording medium
US8388425B2 (en) Game device, method and program for enlarging an operational object according to the speed or acceleration of a moving controller
JP4508918B2 (en) Image generation system and information storage medium
JP2001204957A (en) Game system and information storing medium
JP4508719B2 (en) Program, information storage medium, and game system
JP2000020749A (en) Display controller and display control method and recording medium recorded with program for controlling display and game machine
JP4408910B2 (en) Character display device, character display method, and program
WO2024060376A1 (en) Noise reduction method for force feedback apparatus, gamepad, and storage medium
JP6945699B2 (en) Program and game equipment
JP7154258B2 (en) Program, terminal and game control method
JP4113179B2 (en) Simulation apparatus, simulation method, and program
JP2000200362A (en) Game device, hit decision method and recording medium recorded with hit decision program
JP4068093B2 (en) Simulation apparatus, simulation method, and program

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040401

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 5

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100409

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110409

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees