説明

ゲーム装置、ゲーム処理方法、ならびに、プログラム

【課題】オブジェクト同士の衝突判定を容易にする。
【解決手段】仮想空間に配置されるオブジェクトには、オブジェクトの形状を近似する近似立体が対応付けられる。ゲーム装置200において、衝突判定部201は、オブジェクト同士が衝突するか否かを、近似立体同士が交差するか否かにより判定する。分離部202は、衝突により分離されるべきオブジェクトに対応付けられる近似立体が多面体である場合、切断面に沿って分割される2つの多面体を、分離された2つのオブジェクトのそれぞれに対応付ける。また、分離部202は、衝突により分離されるべきオブジェクトに対応付けられる近似立体が曲面体である場合、曲面体を多面体に近似し、この多面体を切断面に沿って分割される2つの多面体を、分離された2つのオブジェクトのそれぞれに対応付ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、オブジェクト同士の衝突判定を容易にするために好適なゲーム装置、ゲーム処理方法、ならびに、プログラムに関する。
【背景技術】
【0002】
仮想空間に配置されるオブジェクト同士の衝突判定を行う際、各オブジェクトを球体等の立体形状で近似し、これらの立体形状同士が重複しているか否かによって、オブジェクト同士が衝突するか否かを判定する技術がある。例えば、特許文献1には、犬オブジェクトの衝突判定において、犬オブジェクトの衝突判定領域として球体の図形を設定し、犬の姿勢に応じて球体の位置を変えることが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−244046号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、オブジェクト同士が衝突することによって、オブジェクトの一方もしくは両方が変形したり分離したりすることがある。しかしながら、従来技術によれば、オブジェクトが変形もしくは分離すると、衝突判定に用いる立体形状が複雑になってしまうことがあり、その結果、衝突判定の処理が重くなってしまったりメモリ消費量が多くなってしまったりするという問題があった。
【0005】
本発明はこのような課題を解決するものであり、オブジェクト同士の衝突判定を容易にするために好適なゲーム装置、ゲーム処理方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0007】
本発明の第1の観点に係るゲーム装置は、衝突判定部と分離部を備える。
衝突判定部は、仮想空間に配置されるオブジェクト同士が衝突するか否かを、当該オブジェクトのそれぞれに割り当てられる近似立体同士が交差するか否かにより判定する。
分離部は、衝突すると判定されたオブジェクトの一方が、所定の切断オブジェクトである場合、衝突すると判定されたオブジェクトの他方を2つのオブジェクトに分離し、当該分離された2つのオブジェクトのそれぞれに、当該オブジェクトを近似する近似立体を割り当てる。
オブジェクトに割り当てられる近似立体には、多面体もしくは曲面体が含まれる。
そして、分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(a)多面体である場合、当該多面体を切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(b)曲面体である場合、曲面体を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とする。
【0008】
本発明のゲーム装置が扱う仮想空間内には、複数のオブジェクトが含まれる。例えば、2人のプレイヤーがキャラクターオブジェクトを操って対戦する格闘ゲームでは、それぞれのプレイヤーに対応付けられるキャラクターオブジェクトが仮想空間に配置される。ただし、ゲーム内容は本発明によって限定されない。
【0009】
各オブジェクトの位置と姿勢は、プレイヤーの指示に応じて、もしくは、所定のアルゴリズムに従って、変化する。例えば格闘ゲームにおいて、一方のキャラクターオブジェクトが他方のキャラクターオブジェクトにキックやパンチ等の技を仕掛けると、一方のキャラクターオブジェクトの手足が他方のキャラクターオブジェクトに接触する。このように2つのキャラクターオブジェクト同士が接触することを一般に「衝突」とも表現する。
【0010】
ゲーム装置は、2つのオブジェクト同士が衝突するか否かを判定しながらゲームを進行させる。本発明では、それぞれのオブジェクトには、オブジェクトの形状を近似する図形(以下「近似立体」という。)が対応付けられる。2つのオブジェクト同士が衝突するか否かの判断は、それぞれのオブジェクトに対応付けられる近似立体同士が交差するか否かに基づいてなされることになる。近似立体の形状は、例えば、カプセル形、円柱形、球形のような曲面体や、4面体、8面体、12面体のような多面体である。
【0011】
仮想空間内に配置されるオブジェクトには、刀物や薄い板状の物体などのように、他のオブジェクトを切断できる形状のオブジェクトも含まれる。他のオブジェクトを切断することが可能な形状をもつオブジェクトを「切断オブジェクト」という。2つのオブジェクトが衝突する場合において、一方のオブジェクトが切断オブジェクトである場合、これらの位置と姿勢が変化するだけでなく、他方のオブジェクトが切断オブジェクトによって切断(分離)されることがある。
【0012】
本発明では、あるオブジェクトが切断オブジェクトによって切断される際、切断されるべきオブジェクトに対応付けられる近似立体が多面体か曲面体かによって、分離後(切断後)のオブジェクトに新たに対応付けられる近似立体の形状を変える。
【0013】
すなわち、切断されるべきオブジェクトに対応付けられる近似立体が多面体であれば、その多面体を切断面で切断して得られる近似立体のそれぞれが、分離後のオブジェクトのそれぞれに対応付けられる。
【0014】
一方、切断されるべきオブジェクトに対応付けられる近似立体が曲面体であれば、まず、その曲面体を多面体に近似する。例えば、切断されるべきオブジェクトに対応付けられる近似立体が球形である場合、球形は8面体などの多面体に近似される。その後、近似して得られた多面体が切断面で切断され、得られる多面体のそれぞれが、分離後のオブジェクトに対応付けられる。分離後のオブジェクトに関して衝突判定を行う際には、新たに対応付けられた近似立体を用いて衝突判定がなされる。
【0015】
本発明によれば、衝突判定処理がより簡略化される曲面体の近似立体と、オブジェクトの形状に合わせてより正確な衝突判定処理が可能になる多面体の近似立体と、のそれぞれのメリットを享受できるように使い分けられ、オブジェクト同士の衝突判定を容易にすることができる。
【0016】
曲面体には、カプセル形が含まれていてもよい。
そして、分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(c)カプセル形であって、所定のカプセル分離条件を満たす場合、当該切断面が当該カプセル形の中心軸を分割した長さの2つのカプセル形を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(d)カプセル形であって、所定のカプセル分離条件を満たさない場合、カプセル形を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体としてもよい。
カプセル分離条件は、当該カプセル形の中心軸と当該切断面の法線とのなす角度が所定の閾値以下であり、当該切断面が当該カプセル形の側面のみを切断する場合に満たされる。
【0017】
ここで、カプセル形とは、円柱形の両端のそれぞれに半球を接合した図形のことである。近似立体をカプセル形にすると、図形の対称性から、衝突判定を簡略化できるメリットがある。一方、カプセル形の近似立体を切断するとき、切断する角度や切断する箇所によっては、分離後の近似立体の形状が複雑になる恐れがある。
そこで本発明では、切断する角度が浅く、且つ、カプセル形の側面(円柱部分)のみを切断する場合には、分離後の近似立体もカプセル形とする。一方、そうでない場合には、分離後の近似立体を8面体や12面体などの多面体にする。
本発明によれば、衝突判定処理がより簡略化されるカプセル形の近似立体と、オブジェクトの形状に合わせてより正確な衝突判定処理が可能になる多面体の近似立体と、のそれぞれのメリットを享受できるように使い分けられ、オブジェクト同士の衝突判定を容易にすることができる。
【0018】
曲面体には、円柱が含まれていてもよい。
そして、分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(e)円柱であって、所定の円柱分離条件を満たす場合、当該切断面が当該円柱の中心軸を分割した長さの2つの円柱を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(f)円柱であって、所定の円柱分離条件を満たさない場合、円柱を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体としてもよい。
円柱分離条件は、当該円柱の中心軸と当該切断面の法線とのなす角度が所定の閾値以下であり、当該切断面が当該円柱の側面のみを切断する場合に満たされる。
【0019】
近似立体を円柱形にすると、図形の対称性から、衝突判定を簡略化できるメリットがある。一方、円柱形の近似立体を切断するとき、切断する角度や切断する箇所によっては、分離後の近似立体の形状が複雑になる恐れがある。
そこで本発明では、切断する角度が浅く、且つ、円柱形の側面のみを切断する場合には、分離後の近似立体も円柱形とする。一方、そうでない場合には、分離後の近似立体を8面体や12面体などの多面体にする。
本発明によれば、衝突判定処理がより簡略化される円柱形の近似立体と、オブジェクトの形状に合わせてより正確な衝突判定処理が可能になる多面体の近似立体と、のそれぞれのメリットを享受できるように使い分けられ、オブジェクト同士の衝突判定を容易にすることができる。
【0020】
曲面体には、球形が含まれていてもよい。
そして、分離部は、球形を近似する八面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体としてもよい。
【0021】
本発明では、切断されるべきオブジェクトに対応付けられる近似立体が球形の場合には、近似立体は、球形を8面体などのような多面体に更に近似される。そして、近似して得られた多面体を切断して得られる多面体が、分離後の近似立体となる。
本発明によれば、衝突判定処理がより簡略化される球形の近似立体と、オブジェクトの形状に合わせてより正確な衝突判定処理が可能になる多面体の近似立体と、のそれぞれのメリットを享受できるように使い分けられ、オブジェクト同士の衝突判定を容易にすることができる。
【0022】
分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が多面体であって、当該多面体を切断面に沿って2つに分割することにより得られる2つの多面体の少なくとも一方の対称性が大きい場合、当該分離された2つのオブジェクトに割り当てられる多面体を近似する曲面体を近似立体としてもよい。
【0023】
すなわち、分離前の近似立体が多面体であって、分離後の近似立体が多面体である場合に、分離前よりも分離後のほうが近似立体の対称性が増すことがある。このとき、本発明では、分離後の近似立体を、カプセル形・円柱形・球形のような曲面体に入れ替える。本発明によれば、オブジェクト同士の衝突判定を容易にすることができる。
【0024】
本発明のその他の観点に係るゲーム処理方法は、衝突判定部と分離部を有するゲーム装置において実行されるゲーム処理方法であって、衝突判定ステップと分離ステップを備える。
衝突判定ステップでは、衝突判定部が、仮想空間に配置されるオブジェクト同士が衝突するか否かを、当該オブジェクトのそれぞれに割り当てられる近似立体同士が交差するか否かにより判定する。
分離ステップでは、衝突すると判定されたオブジェクトの一方が、所定の切断オブジェクトである場合、分離部が、衝突すると判定されたオブジェクトの他方を2つのオブジェクトに分離し、当該分離された2つのオブジェクトのそれぞれに、当該オブジェクトを近似する近似立体を割り当てる。
オブジェクトに割り当てられる近似立体には、多面体もしくは曲面体が含まれる。
そして、分離ステップでは、分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(a)多面体である場合、当該多面体を切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(b)曲面体である場合、曲面体を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とする。
【0025】
本発明によれば、オブジェクト同士の衝突判定を容易にすることができる。
【0026】
本発明のその他の観点に係るプログラムは、コンピュータを、衝突判定部と分離部として機能させる。
衝突判定部は、仮想空間に配置されるオブジェクト同士が衝突するか否かを、当該オブジェクトのそれぞれに割り当てられる近似立体同士が交差するか否かにより判定する。
衝突すると判定されたオブジェクトの一方が、所定の切断オブジェクトである場合、分離部は、衝突すると判定されたオブジェクトの他方を2つのオブジェクトに分離し、当該分離された2つのオブジェクトのそれぞれに、当該オブジェクトを近似する近似立体を割り当てる。
オブジェクトに割り当てられる近似立体には、多面体もしくは曲面体が含まれる。
そして、分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(a)多面体である場合、当該多面体を切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(b)曲面体である場合、曲面体を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とする。
【0027】
本発明によれば、コンピュータを上述のように動作するゲーム装置として機能させることができる。
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0028】
本発明によれば、オブジェクト同士の衝突判定を容易にするために好適なゲーム装置、ゲーム処理方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【0029】
【図1】本発明のゲーム装置が実現される典型的な情報処理装置の概要構成を示す図である。
【図2】ゲーム装置の機能的な構成を説明するための図である。
【図3】仮想空間を表す画像の構成例を示す図である。
【図4】オブジェクトの輪郭と近似立体を説明するための図である。
【図5】(a)〜(e)は、近似立体の形状の具体例を示す図である。
【図6】(a)2つのオブジェクトを表す図である。(b)2つの近似立体を表す図である。
【図7】(a)衝突する2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。(b)切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(c)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図8】(a)切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(b)切断されるべきオブジェクトに対応付けられる近似立体を近似して得られる多面体を表す図である。(c)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図9】(a)切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(b)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図10】(a)切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(b)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図11】(a)切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(b)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図12】切断処理を説明するためのフローチャートである。
【図13】(a)実施形態2において、衝突する2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。(b)切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(c)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図14】(a)実施形態2において、切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(b)切断されるべきオブジェクトに対応付けられる近似立体を近似して得られる多面体を表す図である。(c)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図15】(a)実施形態2において、切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(b)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図16】(a)実施形態3において、衝突する2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。(b)切断されるべきオブジェクトに対応付けられる近似立体の切断面を表す図である。(c)切断されるべきオブジェクトに対応付けられる近似立体を近似して得られる多面体を表す図である。(d)切断されてできた2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。
【図17】(a)衝突する2つのオブジェクトに対応付けられるそれぞれの近似立体を表す図である。(b)変形した近似立体を表す図である。(c)変形後のオブジェクトに対応付けられる近似立体を表す図である。
【発明を実施するための形態】
【0030】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0031】
図1は、プログラムを実行することにより、本発明のゲーム装置の機能を果たす典型的な情報処理装置100の概要構成を示す模式図である。以下、本図を参照して説明する。
【0032】
情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、インターフェース104と、コントローラ105と、外部メモリ106と、DVD−ROM(Digital Versatile Disk - Read Only Memory)ドライブ107と、画像処理部108と、音声処理部109と、NIC(Network Interface Card)110と、を備える。
【0033】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ107に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態のゲーム装置が実現される。
【0034】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0035】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0036】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0037】
インターフェース104を介して接続されたコントローラ105は、プレイヤーがダンスゲームやサッカーゲームなどのゲームの実行の際に行う操作入力を受け付ける。インターフェース104には、複数のコントローラ105が接続されていてもよい。
【0038】
インターフェース104を介して着脱自在に接続された外部メモリ106には、ゲームのプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いたゲームのチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。プレイヤーは、コントローラ105を介して操作入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0039】
DVD−ROMドライブ107に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ107は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0040】
画像処理部108は、DVD−ROMから読み出されたデータをCPU 101や画像処理部108が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部108が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部108に接続されるモニター(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0041】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0042】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0043】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【0044】
また、ゲームの画像などの情報をDVD−ROMに用意しておき、これをフレームメモリに展開することによって、ゲームの様子などを画面に表示することができるようになる。
【0045】
音声処理部109は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカー(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカーから出力させる。
【0046】
音声処理部109では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM(Adaptive Differential Pulse Code Modulation)形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカーに出力することにより、音声出力が可能となる。
【0047】
NIC 110は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
【0048】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ107に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0049】
次に、上記構成を有する情報処理装置100により実現される、本実施形態のゲーム装置200の機能的な構成等について説明する。
【0050】
ゲーム装置200は、プレイヤーからの指示に基づいて、あるいはCPU 101が実行する所定のアルゴリズムに基づいて、3次元仮想空間内に配置されるキャラクターオブジェクト(以下「オブジェクト」という。)の位置や姿勢を変化させて、ゲームを進行する。ゲーム内容は本発明によって限定されない。本実施形態では、仮想空間内においてプレイヤーもしくはゲーム装置200が操る2つのロボット同士が対戦するゲームを例にとって説明する。
【0051】
図2は、本実施形態のゲーム装置200の機能的な構成を示す図である。ゲーム装置200は、衝突判定部201と分離部202を備える。
【0052】
図3は、3次元仮想空間の様子を表す画像の構成例である。仮想空間内には、第1プレイヤーが操作する第1オブジェクト310、第2プレイヤーが操作する第2オブジェクト320、アイテムオブジェクト330などが配置される。CPU 101は、第1オブジェクト310の位置と姿勢を示す情報、第2オブジェクト320の位置と姿勢を示す情報、アイテムオブジェクト330の位置と姿勢を示す情報をRAM 103に記憶し、ゲーム進行に応じて随時これらの情報を更新する。CPU 101は、プレイヤーからの指示若しくは所定のアルゴリズムに基づいて、第1オブジェクト310の位置と姿勢、第2オブジェクト320の位置と姿勢、アイテムオブジェクト330の位置と姿勢を任意に変えることができる。
【0053】
それぞれのオブジェクトの位置は、仮想空間内に定義されるグローバル座標系における座標値で表される。それぞれのオブジェクトの姿勢は、グローバル座標系におけるベクトルもしくは座標値の組み合わせで表される。グローバル座標系として、典型的には、極座標系やデカルト座標系が用いられる。
【0054】
また、仮想空間内には、この仮想空間を撮影する仮想カメラ(以下「視点」という。)が配置される。CPU 101は、プレイヤーからの指示若しくは所定のアルゴリズムに基づいて、仮想カメラの位置(以下「視点の位置」という。)を任意に変えることができる。また、CPU 101は、プレイヤーからの指示若しくは所定のアルゴリズムに基づいて、仮想カメラの向き(以下「視線の向き」という。)を任意に変えることができる。CPU 101は、視点の位置を示す情報と視線の向きを示す情報をRAM 103に記憶し、これらの情報を随時更新する。
【0055】
CPU 101は、画像処理部108を制御して、図3に示すような、視点の位置から視線の向きへ仮想空間を眺めた様子を所定の投影面に投影して得られる投影画像を生成し、モニターの画面に表示させる。例えば、CPU 101と画像処理部108は、垂直同期(VSYNC)割り込み処理において投影画像を生成し、モニターに表示させる。プレイヤーは、VSYNCごとに更新される投影画像、つまりアニメーション画像を見ることができる。
【0056】
例えば、第1オブジェクト310と第2オブジェクト320とが格闘するゲームにおいて、CPU 101は、プレイヤーからの指示若しくは所定のアルゴリズムに基づいて、第1オブジェクト310の位置と姿勢、及び、第2オブジェクト320の位置と姿勢を変化させる。CPU 101は、第1オブジェクト310の位置と姿勢、及び、第2オブジェクト320の位置と姿勢に基づいて、第1オブジェクト310と第2オブジェクト320が衝突するか否かを判別する。
【0057】
ここで言う衝突とは、第1オブジェクト310が占める空間的領域と第2オブジェクト320が占める空間的領域とが交差する(重なる)部分があること、もしくは、これらが接触する部分があることである。例えば、第1オブジェクト310の“手”が第2オブジェクト320の“頭”に触れることを、第1オブジェクト310と第2オブジェクト320とが衝突する、と表現する。
【0058】
CPU 101と画像処理部108は、第1オブジェクト310と第2オブジェクト320とが衝突するか否かを判定する処理(以下「衝突判定処理」という。)を、VSYNC割り込みなどの定期的なタイミングで実行する。
【0059】
第1オブジェクト310及び/又は第2オブジェクト320が複雑な形状をしている場合や、第1オブジェクト310と第2オブジェクト320のほかに多くの他のオブジェクトが仮想空間内に配置されている場合、衝突判定処理を厳密に行おうとすると、計算量やメモリ消費量が膨大になる恐れがある。そこで、本発明では、1つのオブジェクトに1つ又は複数の近似立体を対応付け、近似立体同士が衝突するか否かに基づいて、オブジェクト同士が衝突するか否かを判定することにより、衝突判定処理の計算量やメモリ消費量を抑えることが可能となっている。
【0060】
図4は、第1オブジェクト310(第2オブジェクト320、アイテムオブジェクト330でもよい)の一部分を例にとって、近似立体について説明するための図である。第1オブジェクト310には、1つ以上の近似立体450(図4では450A,450B,450Cの3つ)が割り当てられる。近似立体450A,450B,450Cを組み合わせてできる立体の形状が、第1オブジェクト310の輪郭400の形状とおおよそ等しくなるようにすることが望ましい。
【0061】
近似立体450は、CPU 101が衝突判定処理を行うために用いる図形であり、モニターには表示されない。
【0062】
近似立体450の数を増やしたり近似立体450の形状を輪郭400に近づけたりすることによって、より正確な衝突判定処理を行うことが可能になるが、計算量やメモリ消費量を減らすためには、なるべく近似立体450の数を減らすか、あるいはなるべく近似立体450の形状を簡略化することが望ましい。
【0063】
図5(a)〜(e)は、近似立体450の形状の具体例を示す図である。
図5(a)に示す近似立体450の形状は「カプセル形」である。カプセル形は、半径RAの半球と、底面が半径RAの円形で高さ(長さ)がLAの円柱と、を組み合わせてできる形状である。
【0064】
カプセル形の両端(図5(a)の場合、半球の部分)は、典型的には同一の形状であるが、同一でなくてもよい。また、半球の代わりに、球の任意の一部分や、お皿や凸レンズや凹レンズのような曲面を用いてもよい。
【0065】
図5(b)に示す近似立体450の形状は、半径RBの「球」である。球形は、半径RBの半球と、底面が半径RBの円形で高さがLAの円柱と、を組み合わせてできるカプセル形において、“LA=0”としたときのカプセル形とみなすことができる。
【0066】
カプセル形や球形は、形状に対称性があること、及び、比較的簡単に形状を数式で表しやすいことから、衝突判定処理を効率良く簡略化できる形状であると言える。衝突判定処理の簡略化のためには、CPU 101は、近似立体450の形状を、なるべくカプセル形もしくは球形にすることが望ましい。対称性(シンメトリー)とは、例えば、点対称、線対称、面対称などのことである。対称性の大きさの度合いは、形状が、点対称、線対称、面対称のうちのいくつを満たすかによって表される。例えば、CPU 101は、線対称の軸となる線が何本引けるか、面対称の“鏡”となる面がいくつ存在するかを計算し、得られた数が多いほど対称性が大きいと判断する。
【0067】
近似立体450の形状は、カプセル形、球形のほか、任意の曲面で囲まれる曲面体であってもよい。
【0068】
図5(c)に示す近似立体450の形状は、底面が半径RCの円で、筒の長さがLBの、「円柱」である。
【0069】
図5(d)に示す近似立体450の形状は、「直方体」である。図5(e)に示す近似立体450の形状は、「8面体」である。図示したこれらの形状のほか、様々な多面体を近似立体450とすることができる。
【0070】
近似立体450の形状は、3次元の形状をもつ立体図形だけでなく、2次元の形状をもつ図形や、1次元の形状をもつ図形でもよい。例えば、近似立体450は、平面の一部又は全部、曲面の一部又は全部、直線の一部又は全部、曲線の一部又は全部、で表される図形でもよい。2次元や1次元の図形は、一般的な数学的概念では“立体”ではないが、本実施形態では、3次元の図形、2次元の図形、1次元の図形を総称して“立体”と呼ぶことにする。
【0071】
CPU 101は、様々な形状を有する複数の近似立体450を組み合わせて、第1オブジェクト310に対応付けることができる。例えば、指の第1関節にはカプセル形、指の第2関節には円柱形、といったように、形状が異なる複数の近似立体450を組み合わせることができる。第2オブジェクト320、アイテムオブジェクト330、その他図示しない任意のオブジェクトについても同様である。
【0072】
次に、ゲーム装置200の衝突判定部201と分離部202の詳細について説明する。
【0073】
衝突判定部201は、仮想空間内に配置されるオブジェクト同士(本実施形態では、第1オブジェクト310と第2オブジェクト320とアイテムオブジェクト330のいずれか2つ)が衝突するか否かを、オブジェクトのそれぞれに割り当てられる近似立体450同士が交差するか否かにより判定する。CPU 101と画像処理部108が協働して衝突判定部201として機能する。
【0074】
衝突判定部201が行う衝突判定処理について、図6(a),(b)を用いて説明する。例えば、図6(a)に示すように、“ボール”オブジェクト610に、“バット”オブジェクト620が当たったか否かを判定する場合を想定する。図6(b)に示すように、ボールオブジェクト610には球形の近似立体650が予め対応付けられ、バットオブジェクト620にはカプセル形の近似立体660が予め対応付けられている。
【0075】
CPU 101は、例えばVSYNC割り込み処理において、近似立体650と近似立体660とが交差するか否かを判別する。すなわち、CPU 101は、近似立体650と近似立体660とが接触するか否か、又は、近似立体650が占める空間的領域と近似立体660が占める空間的領域とに重なりがあるか否かを判別する。
【0076】
CPU 101は、近似立体650内に含まれ、且つ、近似立体660内に含まれる点が仮想空間内に少なくとも1つ以上存在する場合、近似立体650と近似立体660とが交差していると判定する。そして、CPU 101は、ボールオブジェクト610とバットオブジェクト620が衝突していると判定する。
【0077】
図6(b)の場合、CPU 101は、近似立体650と近似立体660は、領域(以下「当たり領域」という。)670において接触している、と判別する。当たり領域670が存在すれば、ボールオブジェクト610とバットオブジェクト620が衝突していると判定される。当たり領域670の形状は、点、直線(線分)、曲線のほか、平面や曲面のような任意の平面的形状、あるいは、任意の立体的形状となり得る。
【0078】
分離部202は、2つのオブジェクトが衝突判定部201により衝突すると判定された場合、衝突すると判定されたオブジェクトの一方が所定の切断オブジェクトであるか否かを判別する。切断オブジェクトとは、例えば図3に示す“斧”の形状のオブジェクト330などのように、衝突することによって衝突相手のオブジェクトを2つ以上に分離・分断・分割することが可能なオブジェクトである。切断オブジェクトは、典型的には、刀、ナイフ、斧などのように先端が尖った金属等を表すようなオブジェクトである。
【0079】
更に、分離部202は、衝突すると判定されたオブジェクトの他方(切断オブジェクトでない方)を2つのオブジェクトに分離する。そして、分離部202は、分離された2つのオブジェクトのそれぞれに、オブジェクトを近似する近似立体450を新たに割り当てる。分離された2つのオブジェクトについての衝突判定処理は、新たに割り当てられる近似立体450を用いて行われる。CPU 101と画像処理部108が協働して分離部202として機能する。
【0080】
例えば図7(a)に示すように、近似立体710が対応付けられる第1オブジェクトが、矢印Y1方向に移動し、近似立体720が対応付けられる第2オブジェクトと衝突するとき、第1オブジェクトが切断オブジェクトである場合には、第2オブジェクトは第1オブジェクトによって2つに分離されることになる。
【0081】
図7(b)に示すように、近似立体720の中心軸730と、切断面740の法線ベクトル750と、のなす角度θがゼロでない場合、近似立体720の切断面740は楕円形である。角度θがゼロに近いほど、切断面740の形状は正円に近くなる。図形の対称性を考慮し、0≦θ(度)≦90、とする。
【0082】
角度θが、ゼロ以上、所定の閾値θTH1以下、である場合、CPU 101は、衝突されるオブジェクトを2つに分離するとともに、図7(c)に示すように、カプセル形の近似立体720を、共にカプセル形の2つの近似立体780,790に分離する。CPU 101は、元のオブジェクトを分離してできる2つのオブジェクトについて更に衝突判定処理を行う際には、近似立体780,790を用いる。
【0083】
一般的な表現を用いれば、CPU 101は、衝突されるオブジェクトに対応付けられる近似立体720が曲面体である場合、この曲面体を2つに分割することにより得られる2つの曲面体を、分離された2つのオブジェクトに割り当てる近似立体とする。
【0084】
図8(a)は、角度θが第1の閾値θTH1より大きいときの切断面840等を表す図である。角度θが大きくなるほど、切断面840の形状を表す楕円の、長径に対する短径の比率が小さくなる。
【0085】
角度θが、所定の第1の閾値θTH1より大きく、所定の第2の閾値θTH2以下である場合、CPU 101は、衝突されるオブジェクトを2つに分離する。このとき、CPU 101は、図8(b)に示すように、カプセル形(曲面体)の近似立体820を、多面体(本図の場合は12面体)870に近似する。
【0086】
ここで、CPU 101は、12面体に限らず任意の多面体で近似立体820を近似することができる。
【0087】
次に、CPU 101は、図8(c)に示すように、多面体870を、共に多角形(本図の場合は8面体)の2つの近似立体880,890に分離する。
【0088】
一般的な表現を用いれば、CPU 101は、衝突されるオブジェクトに対応付けられる近似立体820が曲面体である場合、この曲面体を近似する多面体870を分離面840に沿って2つに分割することにより得られる2つの多面体を、分離された2つのオブジェクトに割り当てる近似立体880,890とする。CPU 101は、元のオブジェクトを分離してできる2つのオブジェクトについて更に衝突判定処理を行う際には、近似立体880,890を用いる。
【0089】
分離後の近似立体880,890をカプセル形のような曲面体ではなく多面体にしたのは、衝突判定処理を簡略化しつつも、分離後の2つのオブジェクトについての衝突判定処理の精度をなるべく高くするためである。CPU 101は、分離後の近似立体880,890の形状を、分離後のオブジェクトの形状になるべく近い多面体とすることが望ましい。
【0090】
図9(a)は、角度θが第2の閾値θTH2より更に大きいときの切断面940等を表す図である。切断面940がカプセル形の両端の半球部分にかかる場合、切断面940は楕円ではない形状となる。
【0091】
角度θが、所定の第2の閾値θTH2より大きく、90度以下である場合、CPU 101は、衝突されるオブジェクトを2つに分離するとともに、図9(b)に示すように、カプセル形の近似立体920を、まるで斧で蒔を割るかのように、共にカプセル形の2つの近似立体980,990に分離する。CPU 101は、元のオブジェクトを分離してできる2つのオブジェクトについて更に衝突判定処理を行う際には、近似立体980,990を用いる。
【0092】
まとめると、次のようになる。
(ケースA)0≦θ≦θTH1: カプセル形の近似立体720を、2つのカプセル形の近似立体780,790に分離する。
(ケースB)θTH1<θ≦θTH2: カプセル形の近似立体820を、2つの多面体の近似立体880,890に分離する。
(ケースC)θTH2<θ≦90: カプセル形の近似立体920を、2つのカプセル形の近似立体980,990に分離する。
【0093】
なお、図9(a)に示すように角度θが浅い場合には、CPU 101は、2つのオブジェクトは衝突するが分離しない、と判定してもよい。また、切断面940がカプセル形の両端の半球部分にかかる場合においても、CPU 101は、2つのオブジェクトは衝突するが分離しない、と判定してもよい。この場合、CPU 101は、上記ケース3を省略してθTH2=90とし、2つのオブジェクトに対応付けられる近似立体の形状のそれぞれを、衝突の前後において変化させない。
【0094】
言い換えれば、下記の条件Pと条件Qを共に満たす場合に、CPU 101は、図7(c)に示すように、切断面740がカプセル形を分割してできる、長さL1,のカプセル形と長さL2のカプセル形を、それぞれ、分離された2つのオブジェクトに割り当てる近似立体780,790とする。
【0095】
(条件P)衝突されるオブジェクト(2つのオブジェクトに分離されるべきオブジェクト)に割り当てられた近似立体720がカプセル形であること。
(条件Q)所定のカプセル分離条件を満たすこと。
【0096】
所定のカプセル分離条件とは、「カプセル形の中心軸730と、切断面740の法線ベクトル750と、のなす角度θが(第1の)閾値θTH1以下であり、且つ、切断面740がカプセル形の側面のみを切断すること」である。
【0097】
一方、条件Pと条件Qの少なくとも一方を満たさない場合、CPU 101は、図8(c)に示すように、カプセル形を近似する多面体870を切断面840に沿って2つに分割することにより得られる2つの多面体を、分離された2つのオブジェクトに割り当てる近似立体880,890とする。
【0098】
衝突されるオブジェクトに対応付けられる近似立体はカプセル形に限られない。例えば図10(a)に示すように、肘を曲げた腕の形のようなL字形のオブジェクトに対応付けられる、多面体(本図では10面体)の近似立体1020であってもよい。
【0099】
図10(a)に示すような近似立体1020を切断面1040で2つに切断する場合、CPU 101は、図10(b)に示すように、分離後の2つのオブジェクトのそれぞれに、多面体(本図では6面体)で表される近似立体1080,1090を対応付けてもよい。
【0100】
一般的な表現を用いれば、CPU 101は、衝突されるオブジェクトに割り当てられた近似立体1020が多面体である場合、この多面体を分離面1040に沿って2つに分割することにより得られる2つの多面体を、分離された2つのオブジェクトに割り当てる近似立体1080,1090としてもよい。
【0101】
あるいは、図11(a)に示すような近似立体1120を切断面1140で2つに切断する場合、CPU 101は、図11(b)に示すように、分離後の2つのオブジェクトのそれぞれに、カプセル形で表される近似立体1180,1190を対応付けてもよい。
【0102】
一般的な表現を用いれば、CPU 101は、衝突されるオブジェクトに割り当てられた近似立体1120が多面体である場合、この多面体を分離面1140に沿って2つに分割することにより得られる2つの多面体を、それぞれカプセル形などの曲面体に近似し、この近似して得られる曲面体を、分離された2つのオブジェクトに割り当てる近似立体1180,1190としてもよい。
【0103】
切断前のオブジェクトに対応付けられる近似立体1120がカプセル形や球形でない多角形であり、且つ、切断後のオブジェクトに対応付けられる近似立体1180,1190の形状の対称性が高い場合、CPU 101は、分離後のオブジェクトに関する衝突判定処理の計算量が比較的簡易になるカプセル形の近似立体1180,1190を、切断されて得られるオブジェクトの両方(又は片方)に対応付けることが望ましい。
【0104】
以上の説明では、CPU 101は、1つのオブジェクトを2つのオブジェクトに分離すると共に、近似立体720(もしくは820,920,1020,1120)を2つの近似立体780,790(もしくは880と890、980と990、1080と1090、1180と1190)に分離している。しかし、CPU 101は、1つのオブジェクトを3つ以上のオブジェクトに分離すると共に、近似立体720(もしくは820,920,1020,1120)を3つ以上の近似立体に分離してもよい。ただし、CPU 101は、分離後のオブジェクトのそれぞれに1つずつ、新たな近似立体を割り当てるものとする。
【0105】
次に、本実施形態の衝突判定部201と分離部202が行う切断処理について、図12のフローチャートを用いて説明する。ここでは、衝突する2つのオブジェクトの組み合わせは、図3に示す第1オブジェクト310と第2オブジェクト320とアイテムオブジェクト330のうちのいずれか2つであるとする。また、衝突されるオブジェクト(2つのオブジェクトに分離されるべきオブジェクト)には、カプセル形の近似立体が対応付けられているものとする。
【0106】
まず、CPU 101は、2つのオブジェクトが衝突するか否かを判定する(ステップS1201)。衝突しないと判定した場合(ステップS1201;NO)、CPU 101は、分離処理を終了する。
【0107】
衝突すると判定した場合(ステップS1201;YES)、CPU 101は、衝突する2つのオブジェクトのうち一方のオブジェクトが切断オブジェクト(ここでは“斧”の形をしたアイテムオブジェクト330に相当する)であるか否かを判別する(ステップS1202)。
【0108】
一方のオブジェクトが切断オブジェクトでない場合(ステップS1202;NO)、CPU 101は、他方のオブジェクトを分離しない。そして、CPU 101は、2つのオブジェクトの衝突後の位置と姿勢を計算し(ステップS1203)、RAM 103に記憶している2つのオブジェクトの位置と姿勢を示す情報を更新する。ステップS1202でNOの場合とは、具体的には、一方のロボットが他方のロボットを蹴飛ばすときのように、第1オブジェクト310と第2オブジェクト320とが衝突する場合のことである。
【0109】
一方のオブジェクトが切断オブジェクトである場合(ステップS1202;YES)、CPU 101は、他方のオブジェクトを分離する(ステップS1204)。
【0110】
ステップS1202でYESの場合とは、具体的には、一方のロボットが斧を振り回して他方のロボットに斬りかかるときのように、第1オブジェクト310とアイテムオブジェクト330とが衝突する場合、もしくは、第2オブジェクト320とアイテムオブジェクト330とが衝突する場合のことである。そして、“他方のオブジェクトを分離する”とは、例えば、斬りかかられたロボットの手足がもげてしまったり切断されてしまったりすることである。
【0111】
更に、CPU 101は、上述のカプセル分離条件が満たされるか否かを判別する(ステップS1205)。カプセル分離条件は、「カプセル形の中心軸と、切断面の法線ベクトルと、のなす角度θが閾値θTH1以下であり、且つ、分離面がカプセル形の側面のみを分離すること」である。
【0112】
カプセル分離条件が満たされると判別した場合(ステップS1205;YES)、CPU 101は、分離後の2つのオブジェクトのそれぞれに、カプセル形の近似立体780,790を対応付ける(ステップS1206)。
【0113】
例えば、ロボットの足にカプセル形の近似立体が対応付けられていて、一方のロボットが他方のロボットの足に斧で垂直に斬りかかって足が輪切りのように真っ二つになってしまった場合、切れた足にはカプセル形の近似立体が新たに対応付けられる。なお、切れた足に再び斬りかかるときなどのように、分離したオブジェクトと他のオブジェクトとが衝突するか否かの判定は、新たに対応付けられた近似立体と他のオブジェクトに対応付けられる近似立体とが衝突するか否かにより行われる。
【0114】
カプセル分離条件が満たされないと判別した場合(ステップS1205;NO)、CPU 101は、分離後の2つのオブジェクトのそれぞれに、カプセル形の代わりに多面体の近似立体880,890を対応付ける(ステップS1207)。
【0115】
例えば、ロボットの足にカプセル形の近似立体が対応付けられていて、一方のロボットが他方のロボットの足に斧で斜めに斬りかかって足がいびつな形に切れてしまった場合、切れた足にはカプセル形ではない多面体の近似立体が新たに対応付けられる。
【0116】
以上のように、本実施形態では、オブジェクトに対応付けられる近似立体同士が衝突するか否かにより、オブジェクト同士の衝突判定を行っている。例えば、丸みを帯びたオブジェクトの一部又は全部には、カプセル形のように、衝突判定処理がより簡略化される対称性が大きい近似立体が対応付けられる。カプセル形のような対称性が比較的大きい形状を用いれば、衝突判定処理の計算量やメモリ消費量をなるべく抑えることが可能になるというメリットが得られる。
しかし、任意の切断面でオブジェクトが切断されると、切断後の近似立体は対称性が崩れて複雑な形状になることがある。本実施形態では、切断後のオブジェクトの形状が複雑な場合には、8面体や12面体のような多面体が近似立体としてオブジェクトに対応付けられ、この近似立体が衝突判定に用いられる。近似立体を多面体にすれば、衝突判定処理の精度が増すことがあるというメリットが得られる。
このように本実施形態によれば、衝突判定用の図形を状況に応じて変えることにより、オブジェクト同士の衝突判定を容易にし、カプセル形の近似立体を用いた場合のメリットと、多面体の近似立体を用いた場合のメリットと、の両方を享受できるようになる。
【0117】
(実施形態2)
次に、本発明のその他の実施形態について説明する。上記実施形態では、切断されるべきオブジェクトに対応付けられる近似立体の形状がカプセル形である場合を主に説明した。本実施形態では、切断されるべきオブジェクトに対応付けられる近似立体の形状を円柱形にしている。
【0118】
図13(a)に示すように、近似立体1310が対応付けられる第1オブジェクトが、矢印Y2方向に移動し、近似立体1320が対応付けられる第2オブジェクトと衝突するとき、第1オブジェクトが切断オブジェクトである場合には、第2オブジェクトは第1オブジェクトによって2つに分離される。
【0119】
図13(b)に示すように、近似立体1320の中心軸1330と、切断面1340の法線ベクトル1350と、のなす角度φがゼロでない場合、近似立体1320の切断面1340は典型的には楕円形である。角度φがゼロに近いほど、切断面1340の形状は正円に近くなる。図形の対称性を考慮し、0≦φ(度)≦90、とする。
【0120】
角度φが、ゼロ以上、所定の閾値φTH1以下、である場合、CPU 101は、衝突されるオブジェクトを2つに分離するとともに、図13(c)に示すように、円柱形の近似立体1320を、共に円柱形の2つの近似立体1380,1390に分離する。CPU 101は、元のオブジェクトを分離してできる2つのオブジェクトについて更に衝突判定処理を行う際には、近似立体1380,1390を用いる。
【0121】
一般的な表現を用いれば、CPU 101は、衝突されるオブジェクトに対応付けられる近似立体1320が曲面体である場合、この曲面体を2つに分割することにより得られる2つの曲面体を、分離された2つのオブジェクトに割り当てる近似立体1380,1390とする。
【0122】
図14(a)は、角度φが第1の閾値φTH1より大きいときの切断面1440等を表す図である。角度φが大きくなるほど、切断面1440の形状を表す楕円の長径に対する短径の比率が小さくなる。
【0123】
角度φが、所定の第1の閾値φTH1より大きく、所定の第2の閾値φTH2以下である場合、CPU 101は、衝突されるオブジェクトを2つに分離する。このとき、CPU 101は、図14(b)に示すように、円柱形(曲面体)の近似立体1420を、多面体(本図の場合は削っていない鉛筆のような8面体)1470に近似する。
【0124】
ここで、CPU 101は、8面体に限らず任意の多面体で近似立体1420を近似することができる。
【0125】
次に、CPU 101は、図14(c)に示すように、多面体1470を、共に多角形(本図の場合は8面体)の2つの近似立体1480,1490に分離する。
【0126】
一般的な表現を用いれば、CPU 101は、衝突されるオブジェクトに対応付けられる近似立体1420が曲面体である場合、この曲面体を近似する多面体1470を切断面1440に沿って2つに分割することにより得られる2つの多面体を、分離された2つのオブジェクトに割り当てる近似立体とする。CPU 101は、元のオブジェクトを分離してできる2つのオブジェクトについて更に衝突判定処理を行う際には、近似立体1480,1490を用いる。
【0127】
分離後の近似立体1480,1490を円柱形のような曲面体ではなく多面体にしたのは、衝突判定処理を簡略化しつつも、分離後の2つのオブジェクトについての衝突判定処理の精度をなるべく高くするためである。CPU 101は、分離後の近似立体1480,1490の形状を、分離後のオブジェクトの形状になるべく近い多面体とすることが望ましい。
【0128】
図15(a)は、角度φが第2の閾値φTH2より更に大きいときの切断面1540等を表す図である。切断面1540が円柱形の底面にかかる場合、切断面1540は楕円ではない形状となる。
【0129】
角度φが、所定の第2の閾値φTH2より大きく、90度以下である場合、CPU 101は、衝突されるオブジェクトを2つに分離するとともに、図15(b)に示すように、円柱形の近似立体1520を、共に円柱形の2つの近似立体1580,1590に分離する。CPU 101は、元のオブジェクトを分離してできる2つのオブジェクトについて更に衝突判定処理を行う際には、近似立体1580,1590を用いる。
【0130】
まとめると、次のようになる。
(ケースA’)0≦φ≦φTH1: 円柱形の近似立体1320を、2つの円柱形の近似立体1380,1390に分離する。
(ケースB’)φTH1<φ≦φTH2: 円柱形の近似立体1420を、2つの多面体の近似立体1480,1490に分離する。
(ケースC’)φTH2<φ≦90: 円柱形の近似立体1520を、2つの円柱形の近似立体1580,1590に分離する。
【0131】
なお、図15(a)に示すように角度φが浅い場合には、CPU 101は、2つのオブジェクトは衝突するが分離しない、と判定してもよい。また、切断面1540が円柱形の底面にかかる場合においても、CPU 101は、2つのオブジェクトは衝突するが分離しない、と判定してもよい。この場合、CPU 101は、上記ケース6を省略してφTH2=90とし、2つのオブジェクトに対応付けられる近似立体の形状のそれぞれを、衝突の前後において変化させない。
【0132】
言い換えれば、下記の条件P’と条件Q’を共に満たす場合に、CPU 101は、図13(c)に示すように、切断面1340が円柱形を分割してできる長さL3の円柱形と長さL4の円柱形を、それぞれ、分離された2つのオブジェクトに割り当てる近似立体1380,1390とする。
【0133】
(条件P’)衝突されるオブジェクト(2つのオブジェクトに分離されるべきオブジェクト)に割り当てられた近似立体1320が円柱形であること。
(条件Q’)所定の円柱分離条件を満たすこと。
【0134】
所定の円柱分離条件とは、「円柱の中心軸1330と切断面1340の法線ベクトル1350とのなす角度φが所定の閾値φTH1以下であり、且つ、切断面1340が円柱の側面のみを切断する」である。
【0135】
一方、条件P’と条件Q’の少なくとも一方を満たさない場合、CPU 101は、図14(c)に示すように、円柱形を近似する多面体1450を切断面1440に沿って2つに分割することにより得られる2つの多面体を、分離された2つのオブジェクトに割り当てる近似立体1480,1490とする。
【0136】
例えば、丸みを帯びたオブジェクトの一部又は全部には、円柱形のように、衝突判定処理がより簡略化される対称性が大きい近似立体が対応付けられる。円柱形のような対称性が比較的大きい形状を用いれば、衝突判定処理の計算量やメモリ消費量をなるべく抑えることが可能になるというメリットが得られる。
しかし、任意の切断面でオブジェクトが切断されると、切断後の近似立体は対称性が崩れて複雑な形状になることがある。本実施形態では、切断後のオブジェクトの形状が複雑な場合には、8面体や12面体のような多面体が近似立体としてオブジェクトに対応付けられ、この近似立体が衝突判定に用いられる。近似立体を多面体にすれば、衝突判定処理の精度が増すことがあるというメリットが得られる。
このように本実施形態によれば、衝突判定用の図形を状況に応じて変えることにより、オブジェクト同士の衝突判定を容易にし、円柱形の近似立体を用いた場合のメリットと、多面体の近似立体を用いた場合のメリットと、の両方を享受できるようになる。
【0137】
(実施形態3)
次に、本発明のその他の実施形態について説明する。本実施形態では、切断されるべきオブジェクトに対応付けられる近似立体の形状を球形にしている。
【0138】
図16(a)に示すように、近似立体1610が対応付けられる第1オブジェクトが、矢印Y3方向に移動し、近似立体1620が対応付けられる第2オブジェクトと衝突するとき、第1オブジェクトが切断オブジェクトである場合には、第2オブジェクトは第1オブジェクトによって2つに分離される。図16(b)に示すように、近似立体1620の切断面1640は円形である。
【0139】
CPU 101は、図16(c)に示すように、球形(曲面体)の近似立体1620を、多面体(本図の場合は8面体)1670に近似する。ただし、CPU 101は、8面体に限らず任意の多面体で近似立体1620を近似することができる。
【0140】
次に、CPU 101は、図16(d)に示すように、多面体1670を、共に多角形(本図の場合はピラミッドのような5面体)の2つの近似立体1680,1690に分離する。
【0141】
一般的な表現を用いれば、CPU 101は、球形を近似する8面体を切断面1640に沿って2つに分割することにより得られる2つの多面体を、分離された2つのオブジェクトに割り当てる近似立体1680,1690とする。
【0142】
例えば、丸みを帯びたオブジェクトの一部又は全部には、球形のように、衝突判定処理がより簡略化される対称性が大きい近似立体が対応付けられる。球形のような対称性が比較的大きい形状を用いれば、衝突判定処理の計算量やメモリ消費量をなるべく抑えることが可能になるというメリットが得られる。
しかし、任意の切断面でオブジェクトが切断されると、切断後の近似立体の対称性が崩れてしまう。本実施形態では、切断後のオブジェクトには、5面体のような多面体が近似立体としてオブジェクトに対応付けられ、この近似立体が衝突判定に用いられる。近似立体を多面体にすれば、衝突判定処理の精度が増すことがあるというメリットが得られる。
このように本実施形態によれば、衝突判定用の図形を状況に応じて変えることにより、オブジェクト同士の衝突判定を容易にし、球形の近似立体を用いた場合のメリットと、多面体の近似立体を用いた場合のメリットと、の両方を享受できるようになる。
【0143】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【0144】
上記各実施形態では、あるオブジェクトが切断オブジェクトによって2つに切断される状況を想定しているが、オブジェクトが切断されずに変形する場合にも本発明を適用することが可能である。
【0145】
図17(a)に示すように、近似立体1710が対応付けられる第1オブジェクトが、矢印Y4方向に移動し、近似立体1720が対応付けられる第2オブジェクトと衝突するとき、第1オブジェクトが切断オブジェクトであっても、衝突の仕方によっては、第2オブジェクトは第1オブジェクトによって2つに分離されないことがある。
【0146】
例えば図17(b)に示すように、近似立体1710と衝突することにより近似立体1720が部分的に変形する(へこむ)。変形後の近似立体1730は、複雑な形状をしており、仮にこのまま衝突判定に用いる図形として扱うとすると、計算量が膨大になってしまう恐れがある。
【0147】
そこで、図17(c)に示すように、CPU 101は、変形後のオブジェクトに3つの近似立体1770,1780,1790を対応付ける。このようにすれば、変形後のオブジェクトについて更に衝突判定を行う際には、カプセル形のような対称性が比較的大きい形状を用いることにより、衝突判定処理の計算量やメモリ消費量をなるべく抑えることが可能になる。
【0148】
変形後のオブジェクトに対応付ける近似立体の形状は、カプセル形だけに限られず、円柱形や球形のような曲面体でもよいし、8面体や12面体のような多面体でもよい。また、変形後のオブジェクトに対応付けられる近似立体の数や組み合わせは任意である。
【0149】
上記のゲーム装置200の全部又は一部としてコンピュータを動作させるためのプログラムを、メモリカード、CD−ROM、DVD、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【0150】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【0151】
以上説明したように、本発明によれば、オブジェクト同士の衝突判定を容易にするために好適なゲーム装置、ゲーム処理方法、ならびに、プログラムを提供することができる。
【符号の説明】
【0152】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェース
105 コントローラ
106 外部メモリ
107 DVD−ROMドライブ
108 画像処理部
109 音声処理部
110 NIC
200 ゲーム装置
201 衝突判定部
202 分離部
310 第1オブジェクト
320 第2オブジェクト
330 アイテムオブジェクト
400 輪郭(オブジェクトの輪郭)
450 近似立体
610 オブジェクト(第1オブジェクト、ボールオブジェクト)
620 オブジェクト(第2オブジェクト、バットオブジェクト)
650 近似立体(ボールオブジェクトに対応付けられる近似立体)
660 近似立体(バットオブジェクトに対応付けられる近似立体)
670 当たり領域
710 近似立体(切断オブジェクトに対応付けられる近似立体)
720,820,920 近似立体(切断されるべきオブジェクトに対応付けられる近似立体)
730,830,930 中心軸
740,840,940 切断面
750,850,950 切断面の法線ベクトル
780,790,880,890,980,990 近似立体(切断後のオブジェクトに対応付けられる近似立体)
870 多面体
1020,1120 近似立体
1040,1140 切断面
1080,1090,1180,1190 近似立体(切断後のオブジェクトに対応付けられる近似立体)
1310 近似立体(切断オブジェクトに対応付けられる近似立体)
1320,1420,1520 近似立体(切断されるべきオブジェクトに対応付けられる近似立体)
1330,1430,1530 中心軸
1340,1440,1540 切断面
1350,1450,1550 切断面の法線ベクトル
1380,1390,1480,1490,1580,1590 近似立体(切断後のオブジェクトに対応付けられる近似立体)
1470 多面体
1610 近似立体(切断オブジェクトに対応付けられる近似立体)
1620 近似立体(切断されるべきオブジェクトに対応付けられる近似立体)
1640 切断面
1670 多面体
1680,1690 近似立体(切断後のオブジェクトに対応付けられる近似立体)
1710 近似立体(切断オブジェクトに対応付けられる近似立体)
1720 近似立体(切断されるべきオブジェクトに対応付けられる近似立体)
1730 近似立体(切断オブジェクトによって変形した近似立体)
1770,1780,1790 近似立体(変形後のオブジェクトに対応付けられる近似立体)

【特許請求の範囲】
【請求項1】
仮想空間に配置されるオブジェクト同士が衝突するか否かを、当該オブジェクトのそれぞれに割り当てられる近似立体同士が交差するか否かにより判定する衝突判定部と、
前記衝突すると判定されたオブジェクトの一方が、所定の切断オブジェクトである場合、前記衝突すると判定されたオブジェクトの他方を2つのオブジェクトに分離し、当該分離された2つのオブジェクトのそれぞれに、当該オブジェクトを近似する近似立体を割り当てる分離部と、
を備え、
前記オブジェクトに割り当てられる近似立体には、多面体もしくは曲面体が含まれ、
前記分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(a)多面体である場合、当該多面体を切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(b)曲面体である場合、前記曲面体を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とする、
ことを特徴とするゲーム装置。
【請求項2】
請求項1に記載のゲーム装置であって、
前記曲面体には、カプセル形が含まれ、
前記分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(c)カプセル形であって、所定のカプセル分離条件を満たす場合、当該切断面が当該カプセル形の中心軸を分割した長さの2つのカプセル形を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(d)カプセル形であって、前記所定のカプセル分離条件を満たさない場合、前記カプセル形を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
前記カプセル分離条件は、当該カプセル形の中心軸と当該切断面の法線とのなす角度が所定の閾値以下であり、当該切断面が当該カプセル形の側面のみを切断する場合に満たされる、
ことを特徴とするゲーム装置。
【請求項3】
請求項1に記載のゲーム装置であって、
前記曲面体には、円柱が含まれ、
前記分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(e)円柱であって、所定の円柱分離条件を満たす場合、当該切断面が当該円柱の中心軸を分割した長さの2つの円柱を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(f)円柱であって、前記所定の円柱分離条件を満たさない場合、前記円柱を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
前記円柱分離条件は、当該円柱の中心軸と当該切断面の法線とのなす角度が所定の閾値以下であり、当該切断面が当該円柱の側面のみを切断する場合に満たされる、
ことを特徴とするゲーム装置。
【請求項4】
請求項1に記載のゲーム装置であって、
前記曲面体には、球形が含まれ、
前記分離部は、球形を近似する八面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とする、
ことを特徴とするゲーム装置。
【請求項5】
請求項1乃至4のいずれか1項に記載のゲーム装置であって、
前記分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が多面体であって、当該多面体を切断面に沿って2つに分割することにより得られる2つの多面体の少なくとも一方の対称性が大きい場合、当該分離された2つのオブジェクトに割り当てられる多面体を近似する曲面体を近似立体とする、
ことを特徴とするゲーム装置。
【請求項6】
衝突判定部と分離部を有するゲーム装置において実行されるゲーム処理方法であって、
前記衝突判定部が、仮想空間に配置されるオブジェクト同士が衝突するか否かを、当該オブジェクトのそれぞれに割り当てられる近似立体同士が交差するか否かにより判定する衝突判定ステップと、
前記衝突すると判定されたオブジェクトの一方が、所定の切断オブジェクトである場合、前記分離部が、前記衝突すると判定されたオブジェクトの他方を2つのオブジェクトに分離し、当該分離された2つのオブジェクトのそれぞれに、当該オブジェクトを近似する近似立体を割り当てる分離ステップと、
を備え、
前記オブジェクトに割り当てられる近似立体には、多面体もしくは曲面体が含まれ、
前記分離ステップでは、前記分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(a)多面体である場合、当該多面体を切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(b)曲面体である場合、前記曲面体を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とする、
ことを特徴とするゲーム処理方法。
【請求項7】
コンピュータを、
仮想空間に配置されるオブジェクト同士が衝突するか否かを、当該オブジェクトのそれぞれに割り当てられる近似立体同士が交差するか否かにより判定する衝突判定部、
前記衝突すると判定されたオブジェクトの一方が、所定の切断オブジェクトである場合、前記衝突すると判定されたオブジェクトの他方を2つのオブジェクトに分離し、当該分離された2つのオブジェクトのそれぞれに、当該オブジェクトを近似する近似立体を割り当てる分離部、
として機能させ、
前記オブジェクトに割り当てられる近似立体には、多面体もしくは曲面体が含まれ、
前記分離部は、2つのオブジェクトに分離されるべきオブジェクトに割り当てられた近似立体が、
(a)多面体である場合、当該多面体を切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とし、
(b)曲面体である場合、前記曲面体を近似する多面体を当該切断面に沿って2つに分割することにより得られる2つの多面体を、当該分離された2つのオブジェクトに割り当てる近似立体とする、
ことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−43885(P2011−43885A)
【公開日】平成23年3月3日(2011.3.3)
【国際特許分類】
【出願番号】特願2009−190003(P2009−190003)
【出願日】平成21年8月19日(2009.8.19)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】