プログラム、情報記憶媒体及びゲームシステム
【課題】物理演算の処理負荷を効果的に低減させることが可能なプログラム、情報記憶媒体及びゲームシステムを提供すること。
【解決手段】オブジェクトをオブジェクト空間内で移動させる移動制御を行う。オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、所定の条件が満たされたか否かを判断し、所定の条件が満たされたと判断した場合には、第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行う。所定の条件が満たされていないと判断した場合には、第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、第2の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行う。
【解決手段】オブジェクトをオブジェクト空間内で移動させる移動制御を行う。オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、所定の条件が満たされたか否かを判断し、所定の条件が満たされたと判断した場合には、第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行う。所定の条件が満たされていないと判断した場合には、第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、第2の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及びゲームシステムに関する。
【背景技術】
【0002】
従来から、仮想的な3次元空間であるオブジェクト空間内の所与の視点から見える画像を生成するゲームシステムが知られており、いわゆる仮想現実を体験できるものとして人気が高い。このようなゲームシステムでは、移動体の衝突によるオブジェクトの破壊を表現するために、オブジェクトを構成する破片に移動力を与えて物理法則に沿った移動制御を行うものが知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−119223号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
このようなゲームシステムでは、物理演算の対象となるオブジェクトが多い場合に、正確な衝突判定や衝突応答の処理を行おうとすると、処理負荷が増大してしまうという問題点がある。
【0005】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、物理演算の処理負荷を効果的に低減させることが可能なプログラム、情報記憶媒体及びゲームシステムを提供することにある。
【課題を解決するための手段】
【0006】
(1)本発明に係るプログラムは、
オブジェクト空間内のオブジェクト同士の衝突判定を行う衝突判定処理と、衝突したと判定されたオブジェクトに作用する物理量を演算する衝突応答処理とを行う物理演算部と、
前記物理演算部の演算結果に基づきオブジェクトをオブジェクト空間内で移動させる制御を行う移動制御部としてコンピュータを機能させ、
前記物理演算部は、
オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、前記第1の衝突判定処理で衝突したと判定された場合に、所定の条件が満たされたか否かを判断し、前記所定の条件が満たされたと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行い、前記所定の条件が満たされていないと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行うプログラムに関する。
【0007】
また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるためのプログラムを記憶した情報記憶媒体に関する。また本発明は、上記各部を含むゲームシステムに関する。
【0008】
本発明によれば、処理負荷の高い第2の衝突判定処理及び第2の衝突応答処理を行う場合と、処理負荷の高い第2の衝突判定処理を省略し且つ処理負荷の低い第1の衝突応答処理を行う場合とを、条件分岐により切り替えることで、物理演算の処理負荷を効果的に低減させることができる。
【0009】
(2)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
第1の衝突判定処理は、オブジェクトを球体で近似して衝突判定を行う処理でもよい。
【0010】
本発明によれば、第1の衝突判定の処理負荷を低減させることができる。
【0011】
(3)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記物理演算部は、
前記所定の条件が満たされたと判断した場合に、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて、オブジェクトを複数の球体で近似して衝突判定を行う第3の衝突判定処理を行い、前記第3の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理、又は前記第1の衝突応答処理よりも処理負荷が高く前記第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理のいずれかを行うようにしてもよい。
【0012】
本発明によれば、物理演算の処理負荷を条件分岐により多段階で変化させることができ、物理演算の処理負荷をより効果的に低減させることができる。
【0013】
(4)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離、又は仮想カメラとの位置関係に関する条件でもよい。
【0014】
本発明によれば、例えば、仮想カメラからの距離が大きいオブジェクト、或いは、ビューボリューム内に位置しないオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0015】
(5)また本発明に係るプログラム及び情報記憶媒体では、
オブジェクトの立体視画像を生成する画像生成部として更にコンピュータを機能させ、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが、オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリアに位置するか否かに関する条件でもよい。
【0016】
また本発明に係るゲームシステムでは、
オブジェクトの立体視画像を生成する画像生成部を更に含み、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが、オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリアに位置するか否かに関する条件でもよい。
【0017】
本発明によれば、立体視画像を生成する場合に、例えば、プレーヤが立体視感をより強く感じる飛び出し空間を再現する領域(オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリア)に位置するオブジェクト以外のオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0018】
(6)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラから見たときの画像サイズに関する条件でもよい。
【0019】
本発明によれば、例えば、仮想カメラから見たときの画像サイズが小さいオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0020】
(7)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの透明度に関する条件でもよい。
【0021】
本発明によれば、例えば、透明度が高いオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0022】
(8)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの速度に関する条件でもよい。
【0023】
本発明によれば、例えば、速度が大きいオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0024】
(9)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに設定された属性に関する条件でもよい。
【0025】
本発明によれば、例えば、属性としての重要度が低いオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0026】
(10)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、衝突判定処理時の処理負荷に関する条件でもよい。
【0027】
本発明によれば、例えば、処理負荷の高い場合に、オブジェクトの物理演算に係る処理負荷を低減させることができる。
【0028】
(11)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、オブジェクト空間内のオブジェクトの数に関する条件でもよい。
【0029】
本発明によれば、例えば、オブジェクトの数が多い場合に、オブジェクトの物理演算に係る物理演算の処理負荷を低減させることができる。
【0030】
(12)また本発明に係るプログラム及び情報記憶媒体では、
オブジェクト同士の衝突の演出処理を行う演出部として更にコンピュータを機能させ、
前記演出部は、
前記所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行ってもよい。
【0031】
また本発明に係るゲームシステムでは、
オブジェクト同士の衝突の演出処理を行う演出部を更に含み、
前記演出部は、
前記所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行ってもよい。
【0032】
本発明によれば、処理負荷の高い演出処理を行う場合と、処理負荷の低い演出処理を行う場合とを、条件分岐により切り替えることで、演出演算の処理負荷を効果的に低減させることができる。
【図面の簡単な説明】
【0033】
【図1】本実施形態のゲームシステムの機能ブロック図の一例を示す図。
【図2】物理演算の処理ステップの一例について説明するための図。
【図3】図3(A)、図3(B)、図3(C)、図3(D)、図3(E)は衝突判定領域について説明するための図。
【図4】ペナルティ法を用いた衝突応答処理について説明するための図。
【図5】物理演算の処理ステップの他の例について説明するための図。
【図6】衝突判定領域について説明するための図。
【図7】分岐条件について説明するための図。
【図8】分岐条件について説明するための図。
【図9】分岐条件について説明するための図。
【図10】本実施形態の処理の流れを示すフローチャート図。
【図11】本実施形態の処理の流れを示すフローチャート図。
【発明を実施するための形態】
【0034】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0035】
1.機能ブロック図
図1に第1の実施の形態のゲームシステム(ゲーム装置)の機能ブロック図の一例を示す。なお本実施形態のゲームシステムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0036】
操作部160は、プレーヤが操作情報(操作データ)を入力するためのものであり、ユーザの操作情報を処理部100に出力する。操作部160の機能は、ボタン、方向キー(十字キー)、方向入力可能なコントロールスティック(アナログキー)、レバー、キーボード、マウス、タッチパネル型ディスプレイ、加速度センサや傾きセンサ等を内蔵するコントローラなどのハードウェアにより実現することができる。
【0037】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。そして、本実施形態の記憶部170は、ワーク領域として使用される主記憶部172と、最終的な表示画像等が記憶される描画バッファ174と、オブジェクトのモデルデータが記憶されるオブジェクトデータ記憶部176と、各オブジェクトデータ用のテクスチャが記憶されるテクスチャ記憶部178と、オブジェクトの画像の生成処理時にZ値が記憶されるZバッファ179とを含む。なお、これらの一部を省略する構成としてもよい。
【0038】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の処理部100の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0039】
表示部190は、本実施形態により生成された画像(オブジェクト空間を所与の視点から見た画像)を出力するものであり、その機能は、CRT、LCD、或いはタッチパネル型ディスプレイなどにより実現できる。
【0040】
なお表示部190は、立体視画像を表示するようにしてもよい。例えば、裸眼方式では、表示部190は、有限個の画素からなるLCDの前面又は背面に、パララックスバリアやレンチキュラ等の光学素子が配置される。例えば、垂直バリアまたは垂直レンチキュラによる2眼式の場合には、表示部190に、1枚(1フレーム)の左眼用画像を表示するための表示領域と、1枚の右眼用画像を表示するための表示領域とが、短冊状に左眼用短冊画像表示領域及び右眼用短冊画像表示領域として交互に配置されている。パララックスバリアが配置される場合、その隙間からは、プレーヤの左眼には左眼用短冊画像表示領域に表示される左眼用短冊画像、右眼には右眼用短冊画像表示領域に表示される右眼用短冊画像のみが見えるようになっている。また、レンチキュラが配置される場合、各短冊集合画像に対応したレンズの光屈折効果により、プレーヤの左眼には左眼用短冊画像表示領域に表示される左眼用短冊画像、右眼には右眼用短冊画像表示領域に表示される右眼用短冊画像のみが見えるようになっている。また、偏光眼鏡方式では、表示部190の奇数ラインと偶数ラインに偏光方向の異なる偏光フィルタ(例えば、左円偏光を透過する偏光フィルタと、右円偏光を透過する偏光フィルタ)が交互に配置され、表示部190の奇数ラインと偶数ラインに左眼用画像と右眼用画像を交互に表示し、これを偏光眼鏡(例えば、左眼に左円偏光を透過する偏光フィルタ、右眼に右円偏光を透過する偏光フィルタを付けた眼鏡)で見ることで立体視を実現する。また、ページフリップ方式では、表示部190に左眼用画像と右眼用画像を所定時間毎(例えば、1/120秒毎)に交互に表示する。そして、この表示の切り替えに連動して液晶シャッター付きの眼鏡の左眼、右眼の液晶シャッターを交互に開閉することで、立体視を実現する。
【0041】
通信部196は他のゲームシステムやサーバとの間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0042】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信してゲームシステムを機能させる場合も本発明の範囲内に含む。
【0043】
処理部100(プロセッサ)は、操作部160からの操作データ、通信部196を介して受信したデータやプログラムなどに基づいて、ゲーム処理、画像生成処理、音生成処理などの処理を行う。ここで、ゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部100は主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、GPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0044】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、物理演算部114、演出部116、仮想カメラ制御部118、画像生成部120、音生成部130を含む。
【0045】
オブジェクト空間設定部110は、キャラクタ(プレーヤキャラクタ、ノンプレーヤキャラクタ)、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義であり、例えば、ワールド座標系でのX、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0046】
移動・動作処理部112(移動制御部)は、オブジェクト(キャラクタ等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)、物理法則などに基づいて、オブジェクトをオブジェクト空間(ゲーム空間)内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒又は1/30秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。また移動・動作処理部112は、ネットワークを介して接続された他のゲームシステム(ゲーム装置)から通信部196を介して受信したオブジェクト(他のプレーヤに対応するオブジェクト)の移動情報や動作情報に基づき当該オブジェクトの移動情報や動作情報を更新する処理を行うようにしてもよい。また移動・動作処理部112は、他のゲーム装置から通信部196を介して受信した操作データ等に基づき、当該オブジェクトの移動・動作演算を行うようにしてもよい。
【0047】
物理演算部114は、オブジェクト空間内のオブジェクト同士の衝突判定を行う衝突判定処理と、衝突したと判定されたオブジェクトに作用する物理量(力、トルク等)を演算する衝突応答処理とを行う。移動・動作処理部112(移動制御部)は、物理演算部114の演算結果(力、トルク等の物理量)に基づき、オブジェクトをオブジェクト空間内で移動させる処理を行う。例えば、移動・動作処理部112は、物理演算部114によって演算された物理量とオブジェクトの質量、重力等に基づき、衝突したと判定されたオブジェクトの加速度及び速度を演算し、演算した加速度及び速度に基づき該オブジェクトの位置及び向きの情報を更新する。
【0048】
特に本実施形態の物理演算部114は、オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、前記第1の衝突判定処理で衝突したと判定された場合に、所定の条件が満たされたか否かを判断する。そして、前記所定の条件が満たされたと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行う。一方、前記所定の条件が満たされていないと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行う。
【0049】
また、前記第1の衝突判定処理では、オブジェクトを球体或いはAABB(軸並行バウンディングボックス)で近似して衝突判定を行うようにしてもよい、また、前記第2の衝突判定処理では、オブジェクトをOBB(有向バウンディングボックス)或いは凸多面体で近似して衝突判定を行うようにしてもよい。
【0050】
また、前記第1の衝突応答処理では、前記第2の衝突応答処理よりも処理負荷の低いペナルティ法を用いて衝突応答処理を行うようにしてもよい。また、前記第2の衝突応答処理では、前記第1の衝突応答処理よりも処理負荷の高いインパルス法(撃力ベース法)或いはLCP(線形相補性問題)等の解析法を用いて衝突応答処理を行うようにしてもよい。
【0051】
また、物理演算部114は、前記所定の条件が満たされたと判断した場合に、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて、オブジェクトを複数の球体で近似して衝突判定を行う第3の衝突判定処理を行い、前記第3の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理、又は前記第1の衝突応答処理よりも処理負荷が高く前記第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理のいずれかを行うようにしてもよい。
【0052】
また、物理演算部114は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが所定の条件を満たすか否かを判断してもよい。そして、所定の条件を満たす判断されたオブジェクトについて前記第2の衝突応答処理よりも処理負荷の低い第1の衝突応答処理を行い、所定の条件を満たさないと判断されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行うようにしてもよい。
【0053】
すなわち、前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに関する条件でもよい。例えば、前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離、又は仮想カメラとの位置関係に関する条件でもよい。また立体視画像を生成する場合には、前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが、オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリアに位置するか否かに関する条件でもよい。また前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラから見たときの画像サイズに関する条件でもよいし、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの透明度に関する条件でもよいし、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの速度に関する条件でもよいし、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに設定された属性に関する条件でもよい。
【0054】
なお、前記所定の条件は、衝突判定処理時の処理負荷(CPUの処理負荷)に関する条件でもよいし、オブジェクト空間内のオブジェクトの数に関する条件でもよい。
【0055】
演出部116は、オブジェクト同士の衝突の演出処理を行い、前記所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行う。例えば、演出部116は、所定の条件が満たされたと判断された場合に、第1の演出処理を行い、所定の条件が満たされていないと判断された場合に、前記第1の演出処理よりも処理負荷の高い(又は前記第1の演出処理よりも処理負荷の低い)第2の演出処理を行う。また、前記所定の条件が、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに関する条件である場合には、演出部116は、所定の条件を満たすと判断されたオブジェクトについて前記第1の演出処理を行い、所定の条件を満たないと判断され、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第2の演出処理を行ってもよい。
【0056】
仮想カメラ制御部118は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、操作部160によりプレーヤが入力した操作データ或いはプログラム(移動・動作アルゴリズム)等に基づいて、ワールド座標系における仮想カメラの位置(X、Y、Z)又は光軸の方向(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度等)を制御する処理を行う。要するに、視点位置、仮想カメラの向き、画角を制御する処理を行う。
【0057】
また、2眼式の立体視方式により立体視画像を表示する場合には、仮想カメラ制御部118は、左眼用仮想カメラ及び右眼用仮想カメラの位置、向き及び画角を制御する。また、仮想カメラ制御部118は、左眼用仮想カメラと右眼用仮想カメラを設定するための基準となる基準仮想カメラ(センターカメラ)の制御を行い、基準仮想カメラの位置、向き及び左眼用及び右眼用仮想カメラ間の距離情報に基づいて、左眼用及び右眼用仮想カメラの位置、向きを制御するようにしてもよい。多眼立体視画像の場合も同様に、多眼仮想カメラのそれぞれについて位置、向きを制御すればよい。また、空間像方式(水平・垂直両方向に視差を持つ方式を含む)の場合には、仮想カメラの位置、向き及び画角の少なくとも1つを制御して、それに基づく空間座標変換により、仮想空間全体をいったん変換する。その後、変換後の空間内に配置されたオブジェクト等を、それぞれの立体視表示方式に基づいて描画することで、上記の効果を得ることができる。
【0058】
画像生成部120は、処理部100で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。
【0059】
いわゆる3次元画像を生成する場合には、まずオブジェクトの各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0060】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、射影変換(透視変換、投影変換)、ビューポート変換(スクリーン座標変換)、光源計算等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。ジオメトリ処理後のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、オブジェクトデータ記憶部176に保存される。
【0061】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。
【0062】
ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0063】
そして描画部120は、オブジェクトを描画する際に、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0064】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0065】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ179(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ179に格納されるZ値を参照する。そして参照されたZバッファ179のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ179のZ値を新たなZ値に更新する。
【0066】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。例えば、通常αブレンディングでは、α値を合成の強さとして線形補間を行うことにより2つの色を合成した色を求める処理を行う。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えばRGBの各色成分の輝度を表す色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0067】
画像生成部120は、立体視画像を表示部190に出力するようにしてもよい。例えば、立体視方式が2眼式の場合であれば、画像生成部120は、左眼用画像生成部と右眼用画像生成部を含む。左眼用画像生成部は、オブジェクト空間内において左眼用仮想カメラから見える画像である左眼用画像を生成し、右眼用画像生成部は、オブジェクト空間内において右眼用仮想カメラから見える画像である右眼用画像を生成する。具体的には、左眼用画像生成部は、オブジェクト空間内の投影面に対してオブジェクトを左眼用仮想カメラの視点で透視投影して描画することで左眼用画像を生成し、右眼用画像生成部は、投影面に対してオブジェクトを右眼用仮想カメラの視点で透視投影して描画することで右眼用画像を生成する。
【0068】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0069】
なお、本実施形態のゲームシステムは、1人のプレーヤのみがプレイできるシングルプレーヤモード、或いは、複数のプレーヤがプレイできるマルチプレーヤモードでゲームプレイできるように制御してもよい。例えば、マルチプレーヤモードで制御する場合には、ネットワークを介して他のゲームシステム(ゲーム装置)とデータを送受信してゲーム処理を行うようにしてもよいし、1つの画像生成システムが、複数の操作部からの操作情報に基づいて処理を行うようにしてもよい。
【0070】
また、本実施形態のゲームシステムをサーバシステムとして構成してもよい。サーバシステムは、1又は複数のサーバ(認証サーバ、ゲーム処理サーバ、通信サーバ、課金サーバ、データベースサーバ等)により構成することができる。この場合には、サーバシステムは、ネットワークを介して接続された1又は複数の端末装置(例えば、据え置き型ゲーム装置、携帯型ゲーム装置、プログラム実行可能な携帯電話等)から送信された操作情報に基づき各種処理を行って、画像を生成するための画像生成用データを生成し、生成した画像生成用データを各端末装置に対して送信する。ここで、画像生成用データとは、本実施形態の手法により生成された画像を各端末装置において表示するためのデータであり、画像データそのものでもよいし、各端末装置が画像を生成するために用いる各種データ(オブジェクトデータ、ゲーム処理結果データ等)であってもよい。
【0071】
2.本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【0072】
2−1.物理演算
図2は、本実施形態における物理演算(物理シミュレーション)の処理ステップの一例について説明するための模式図である。物理演算では、オブジェクト同士の衝突を検出する衝突判定処理と、衝突したオブジェクトに作用する物理量を演算する衝突応答処理が行われる。
【0073】
本実施形態では、図2に示すように、まず、オブジェクト空間内の各オブジェクトを移動させる移動制御が行われ、次に、オブジェクト空間内のオブジェクトについて第1の衝突判定処理が行われる。第1の衝突判定処理(ブロードフェーズ衝突判定)では、後述する第2の衝突判定処理に比べて正確性に劣るものの処理負荷の低い手法を用いた衝突判定が行われる。
【0074】
次に、所定の条件(第1の衝突判定処理で衝突したと判定されたオブジェクトに関する所定の条件、又は処理負荷或いはオブジェクトの数に関する所定の条件)が満たされたか否かが判断される。
【0075】
所定の条件が満たされていないと判断された場合(図2のA1)には、第1の衝突判定処理で衝突したと判定されたオブジェクトのペア(衝突ペア)について第2の衝突判定処理が行われる。第2の衝突判定処理(ナローフェーズ衝突判定)では、第1の衝突判定処理に比べて処理負荷が高いものの精度の高い手法を用いた衝突判定が行われる。そして、第2の衝突判定処理で衝突したと判定されたオブジェクトについて第2の衝突応答処理が行われ、第2の衝突応答処理の処理結果に基づきオブジェクトの移動制御が行われる。第2の衝突応答処理では、後述する第1の衝突応答処理に比べて処理負荷が高いものの精度が高い手法を用いた衝突応答処理が行われる。
【0076】
一方、所定の条件が満たされたと判断された場合(図2のA2)には、第2の衝突判定処理を省略して、第1の衝突判定処理で衝突したと判定されたオブジェクトのペア(衝突ペア)について第1の衝突応答処理が行われ、第1の衝突応答処理の処理結果に基づきオブジェクトの移動制御が行われる。第1の衝突応答処理では、第2の衝突応答処理に比べて正確性に劣るものの処理負荷の低い手法を用いた衝突応答処理が行われる。
【0077】
具体的には、第1の衝突判定処理では、図3(A)に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包するバウンディング球(球体)を用いて、オブジェクト同士の衝突判定が行われる。衝突判定領域としてバウンディング球を用いると、バウンディング球の中心点同士の距離と半径とに基づき衝突判定を行えるため、衝突判定処理の処理負荷を低減することができる。
【0078】
また、第1の衝突判定処理では、図3(B)に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包する軸並行バウンディングボックス(AABB:Axis-Aligned Bounding Box)を用いて、オブジェクト同士の衝突判定を行うようにしてもよい。軸並行バウンディングボックスとは、各辺がオブジェクト空間(ワールド座標空間)のXYZ軸に対し平行な直方体である。衝突判定領域として軸並行バウンディングボックスを用いると、オブジェクトの回転(向き)を考慮せずに衝突判定を行えるため、バウンディング球を用いる場合と同様に衝突判定処理の処理負荷を低減することができる。
【0079】
また、第2の衝突判定処理では、図3(C)に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包する有向バウンディングボックス(OBB:Oriented Bounding Box)を用いて、第1の衝突判定処理で衝突したと判定されたオブジェクト同士の衝突判定が行われる。有向バウンディングボックスとは、任意の軸を有する直方体であり、オブジェクトの向きも考慮して設定されるものである。
【0080】
また、第2の衝突判定処理では、図3(D)に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包する凸多面体を用いて衝突判定を行うようにしてもよい。有向バウンディングボックスや凸多面体を用いる第2の衝突判定処理では、バウンディング球や軸並行バウンディングボックスを用いる第1の衝突判定処理に比べて処理負荷が高いものの精度の高い衝突判定を行うことができる。また、第2の衝突判定処理では、図3(E)に示すように、各オブジェクトの形状と略同一形状の衝突判定領域DAを用いて衝突判定を行うようにしてもよい。
【0081】
また、第2の衝突応答処理では、インパルス法(撃力ベース法)を用いて第2の衝突判定処理で衝突したと判定されたオブジェクトについての衝突応答処理が行われる。インパルス法とは、衝突を2つのオブジェクトに働く瞬間的な力(インパルス、撃力)の連続として扱うことで、衝突したオブジェクトに作用する抗力を求める手法である。
【0082】
また、第2の衝突応答処理では、解析法(直接法)を用いて第2の衝突判定処理で衝突したと判定されたオブジェクトについての衝突応答処理を行うようにしてもよい。解析法とは、例えば、拘束条件を運動方程式と連立させた線形相補性問題(LCP:Linear Complementary Proglem)を解くことで、衝突したオブジェクトに作用する物理量を求める手法である。インパルス法や解析法を用いる第2の衝突応答処理では、処理負荷は高いものの精度の高い衝突応答処理を行うことができる。
【0083】
また、第1の衝突応答処理では、ペナルティ法を用いて第1の衝突判定処理で衝突したと判定されたオブジェクトについての衝突応答処理が行われる。ペナルティ法とは、図4に示すように、衝突したオブジェクトOB間(各オブジェクトに設定された衝突判定領域DA間)のめり込み距離PN(浸透深度、ペナルティ)に応じたバネ及びダンパの力を仮想的に発生させることで、衝突したオブジェクトに作用する抗力を求める手法である。ペナルティ法を用いる第1の衝突応答処理では、運動方程式や巨大な逆行列を用いずにオブジェクトに作用する物理量を演算することができるため、インパルス法や解析法を用いる第2の衝突応答処理に比べて精度は劣るものの低い処理負荷で衝突応答処理を行うことができる。
【0084】
このように本実施形態では、第1の衝突判定処理を行った後に、所定の条件が満たされたか否かを判断し、所定の条件が満たされていないと判断した場合には、精度が高く処理負荷も高い第2の衝突判定処理及び第2の衝突応答処理を行い、所定の条件が満たされたと判断した場合には、処理負荷の高い第2の衝突判定処理を省略し、且つ、第2の衝突応答処理に代えて精度が低く処理負荷も低い第1の衝突応答処理を行う。このように本実施形態によれば、精度が高く処理負荷が高い物理演算を行う場合と、精度が低く処理負荷が低い物理演算を行う場合とを、衝突オブジェクトや処理負荷に応じて条件分岐により切り替えることで、物理演算の処理負荷を効果的に低減させることができる。
【0085】
なお、図5に示すように、3通りの条件分岐を行うようにしてもよい。すなわち、第1の条件を満たしていない場合(図5のA1)には、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第2の衝突判定処理を行い、第1の条件を満たし且つ第2の条件を満たす場合(図5のA2)には、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第1の衝突応答処理を行い、第1の条件を満たし且つ第2の条件を満たさない場合(図5のA3)には、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第3の衝突判定処理を行い、第3の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第1の衝突応答処理を行うようにしてもよい。なお、第3の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第1の衝突応答処理よりも処理負荷が高く第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理を行うようにしてもよい。
【0086】
第3の衝突判定処理(ミドルフェーズ衝突判定)では、オブジェクトを複数の球体で近似して衝突判定を行う。すなわち、第3の衝突判定処理では、図6に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包する複数のバウンディング球(球体)を用いて、オブジェクト同士の衝突判定が行われる。複数のバウンディング球を用いる第3の衝突判定処理では、単一のバウンディング球を用いる第1の衝突判定処理に比べて精度が高く処理負荷が高い衝突判定であって、有向バウンディングボックスや凸多面体を用いる第2の衝突判定処理に比べて精度が低く処理負荷が低い衝突判定が行われる。なお、衝突判定領域DAとして設定するバウンディング球の数は任意であるが、バウンディング球の数を多くするほど精度は高くなり処理負荷も高くなる。なお、第3の衝突判定処理においてバウンディング球の数を可変として3通り以上の条件分岐を行うようにしてもよい。このように、物理演算の精度及び処理負荷を条件分岐により多段階で切り替えることで、物理演算の処理負荷をより効果的に低減させることができる。
【0087】
2−2.分岐条件(オブジェクトの仮想カメラからの距離・位置関係に関する条件)
次に、本実施形態における所定の条件(分岐条件)の詳細について説明する。まず、第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離(当該オブジェクトの奥行き値(Z値))、又は仮想カメラとの位置関係に関する条件を判断する場合について説明する。
【0088】
例えば、図7に示す例において、仮想カメラVCからの距離が距離D1以内の位置にあるオブジェクトのペアOP1、OP2については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、仮想カメラVCからの距離が距離D1以上の位置にあるオブジェクトのペアOP3については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行う。なお、オブジェクトのペアのいずれか一方が距離D1以上の位置にある場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。また、オブジェクトペアのめり込み部分(図4のPN)の位置に基づき判断してもよい。
【0089】
このように、仮想カメラVCから遠いところに位置するオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、仮想カメラから近いところに位置するオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、仮想カメラから遠いため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0090】
また、図7に示す例において、仮想カメラVCからの距離が距離D2(D2<D1)以内の領域と、仮想カメラVCからの距離が距離D1以上の領域とを焦点が合わない領域として設定し、仮想カメラVCからの距離が距離D2以上であって距離D1以内の領域を焦点があう領域として設定して、焦点が合わない領域に位置するオブジェクトの画像をぼかす被写界深度処理を行う場合に、焦点が合う領域に位置するオブジェクトのペアOP2については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、焦点が合わない領域に位置するオブジェクトのペアOP1、OP3については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトのペアのいずれか一方が焦点の合わない領域に位置する場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。また、オブジェクトペアのめり込み部分(図4のPN)の位置に基づき判断してもよい。
【0091】
このように、被写界深度処理によってぼかし処理が施されるオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、ぼかし処理が施されないオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、ぼかし処理が施されるため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0092】
また、図7に示す例において、ビューボリュームVV内に位置するオブジェクトのペアOP1〜OP3については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、ビューボリュームVVの外に位置するオブジェクトのペアOP4については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、ビューボリュームVVは、仮想カメラVCの位置、向き、画角及び投影面の位置によって上下左右の構成面が決定される視錐台の領域である。なお、オブジェクトのペアのいずれか一方がビューボリュームVVの外に位置する場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。また、オブジェクトペアのめり込み部分(図4のPN)の位置に基づき判断してもよい。
【0093】
このように、ビューボリューム外に位置するオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、ビューボリューム内に位置するオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、ビューボリューム外に位置するため描画対象とはならないオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0094】
また、立体視画像を生成する場合に、第1の衝突判定処理で衝突したと判定されたオブジェクトが、表示部から飛び出して見える飛び出し空間を再現する領域に位置する場合に、所定の条件が満たされたと判断してもよい。
【0095】
図8に示すように、2眼式の立体視方式では、プレーヤの両眼の幅に対応する距離だけ離れた左眼用仮想カメラVCLと右眼用仮想カメラVCRをオブジェクト空間に設定する。そして、左眼用仮想カメラVCLに対応して左眼用ビューボリュームVVLが設定され、右眼用仮想カメラVCRに対応して右眼用ビューボリュームVVRが設定される。投影面SPは、表示部の画面に対応する面であり、プレーヤの視点位置に相当する左眼用、右眼用仮想カメラVCL、VCRの位置及び向きと、プレーヤの視点位置と表示部の画面との位置関係とに基づき設定される。なお、図8において、NPL、FPLは、それぞれ左眼用ビューボリュームVVLのニアクリップ面、ファークリップ面であり、NPR、FPRは、それぞれ右眼用ビューボリュームVVRのニアクリップ面、ファークリップ面である。左眼用仮想カメラVCLから見える画像である左眼用画像は、左眼用ビューボリュームVVL内に存在するオブジェクトを投影面SPに透視投影して描画することで生成される。同様に、右眼用仮想カメラVCRから見える画像である右眼用画像は、右眼用ビューボリュームVVR内に存在するオブジェクトを投影面SPに透視投影して描画することで生成される。
【0096】
ここで、オブジェクトが、投影面SPよりも左眼用、右眼用仮想カメラVCL、VCRからみて手前側のエリア(投影面SPとニアクリップ面NPL、NPRに挟まれたエリア)である第1のエリアAR1に位置する場合には、プレーヤからはオブジェクトが表示部の画面よりも手前側に飛び出しているように見える。また、オブジェクトが、投影面SPよりも左眼用、右眼用仮想カメラVCL、VCRからみて奥側のエリア(投影面SPとファークリップ面FPL、FPRに挟まれたエリア)である第2のエリアAR2に位置する場合には、プレーヤからはオブジェクトが表示部の画面よりも奥側に引っ込んでいるように見える。
【0097】
例えば、図8に示す例において、画面よりも手前側に飛び出しているように見える飛び出し空間を再現する第1のエリアAR1に位置するオブジェクトのペアOP5については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、画面よりも奥側に引っ込んでいるように見える奥行き空間を再現する第2のエリアAR2に位置するオブジェクトのペアOP6については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行う。なお、オブジェクトのペアのいずれか一方が第2のエリアAR2に位置する場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。また、オブジェクトペアのめり込み部分(図4のPN)の位置に基づき判断してもよい。
【0098】
このように、立体視画像を生成する際に、飛び出し空間を再現する領域に位置するオブジェクトについては、精度が高く処理負荷も高い物理演算を行い、奥行き空間を再現する領域に位置するオブジェクトについては精度が低く処理負荷も低い物理演算を行うようにすることで、プレーヤが立体視感をより強く感じる飛び出し空間を再現する領域に位置するオブジェクト以外のオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0099】
2−3.分岐条件(オブジェクトの画像サイズに関する条件)
次に、第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラから見たときの画像サイズに関する条件を判断する場合について説明する。
【0100】
例えば、図9に示すゲーム画像GI(オブジェクト空間を仮想カメラから見た画像)において、画像サイズが所定の閾値よりも大きいオブジェクトのペアOP7については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、画像サイズが所定の閾値よりも小さいオブジェクトのペアOP8については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトの画像サイズは、オブジェクト(オブジェクトのペア、又はオブジェクトのペアのいずれか一方)がゲーム画像GIにおいて占める面積に基づき求めてもよいし、オブジェクト(オブジェクトのペア、又はオブジェクトのペアのいずれか一方)のオブジェクト空間内におけるサイズ及び仮想カメラからの距離に基づき求めてもよい。
【0101】
このように、画像サイズが小さいオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、画像サイズが大きいオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、画像サイズが小さいため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0102】
2−4.分岐条件(オブジェクトの透明度に関する条件)
次に、第1の衝突判定処理で衝突したと判定されたオブジェクトの透明度に関する条件を判断する場合について説明する。
【0103】
例えば、透明度が所定の閾値よりも低いオブジェクトのペアについては、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、透明度が所定の閾値よりも高いオブジェクトのペアについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトの透明度は、オブジェクトの各頂点に設定される透明度(α値)でもよいし、オブジェクトにマッピングされるテクスチャに設定される透明度(α値)でもよい。また、オブジェクトのペアのそれぞれの透明度の平均値を、オブジェクトのペアの透明度として求めてもよいし、オブジェクトのペアのいずれか一方の透明度をオブジェクトのペアの透明度としてもよい。
【0104】
このように、透明度が高いオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、透明度が小さい(不透明度が高い)オブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、透明度が高いため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0105】
2−5.分岐条件(オブジェクトの速度に関する条件)
次に、第1の衝突判定処理で衝突したと判定されたオブジェクトの速度に関する条件を判断する場合について説明する。
【0106】
例えば、速度が所定の閾値よりも小さいオブジェクトのペアについては、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、速度が所定の閾値よりも大きいオブジェクトのペアについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトのペアのそれぞれの速度の平均値を、オブジェクトのペアの速度として求めてもよいし、オブジェクトのペアのいずれか一方の速度をオブジェクトのペアの速度としてもよい。
【0107】
このように、速度が大きいオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、速度が小さいオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、速度が大きいため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0108】
2−6.分岐条件(オブジェクトの属性に関する条件)
次に、第1の衝突判定処理で衝突したと判定されたオブジェクトに設定された属性(重要度、オブジェクトの種類)に関する条件を判断する場合について説明する。
【0109】
例えば、属性として設定された重要度が高いオブジェクトのペアについては、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、属性として設定された重要度が低いオブジェクトのペアについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトのペアのいずれか一方の重要度が低い場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよいし、オブジェクトのペアの両方の重要度が低い場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。
【0110】
例えば、背景物であるオブジェクトの重要度を低くし、キャラクタオブジェクトの重要度を高くしてもよい。また、キャラクタの中でも、プレーヤキャラクタの重要度を高くし、ノンプレーヤキャラクタ(NPC)の重要度を低くしてもよい。また、キャラクタのうち、プレーヤキャラクタを攻撃するキャラクタの重要度を高くし、攻撃しないキャラクタの重要度を低くしてもよい。また、パーティクルオブジェクト等のエフェクト表現に用いられるオブジェクトの重要度を低くしてもよい。
【0111】
このように、属性としての重要度が低いオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、属性としての重要度が高いオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、プレーヤの注目度が低いと想定されるため精度の低い物理演算を行ったとしても見た目の不自然さがプレーヤに気付かれ難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0112】
2−7.分岐条件(処理負荷、オブジェクトの数に関する条件)
次に、第1の衝突判定処理を行った際の処理負荷やオブジェクト空間内に存在するオブジェクトの数に関する条件を判断する場合について説明する。
【0113】
例えば、第1の衝突判定処理を行った際の処理負荷(処理部100を実現するCPU等のプロセッサの処理負荷)が所定の閾値よりも低い場合には、所定の条件が満たされていないと判断し、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、第1の衝突判定処理を行った際の処理負荷が所定の閾値よりも高い場合には、所定の条件が満たされたと判断し、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。
【0114】
また、第1の衝突判定処理を行った際にオブジェクト空間内に存在するオブジェクトの数が所定の閾値よりも小さい場合には、所定の条件が満たされていないと判断し、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、第1の衝突判定処理を行った際にオブジェクト空間内に存在するオブジェクトの数が所定の閾値よりも大きい場合には、所定の条件が満たされたと判断し、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。
【0115】
このように、処理負荷が所定の閾値よりも低い場合或いはオブジェクトの数が少ないため処理負荷が低いと推定される場合には、全てのオブジェクトのペアについて精度が高く処理負荷も高い物理演算を行い、処理負荷が所定の閾値よりも高い場合或いはオブジェクトの数が多いため処理負荷が高いと推定される場合には、全てのオブジェクトのペアについて精度が低く処理負荷も低い物理演算を行うようにすることで、プロセッサの処理負荷が高い場合にオブジェクトの物理演算に必要な処理負荷を低減して、処理負荷の増大によるフレーム落ち等の発生を防止することができる。
【0116】
2−8.衝突演出
本実施形態では、第1または第2の衝突判定処理で衝突したと判定された場合に、衝突の演出処理(例えば、オブジェクト同士の衝突によって生ずる火花等を画像処理で表すエフェクト処理)を行う。また、所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行う。
【0117】
具体的には、第1の衝突判定処理で衝突したと判定され、且つ所定の条件が満たされたと判断されたオブジェクトについては第1の演出処理を行い、所定の条件が満たされていないと判断され、且つ第2の衝突判定処理で衝突したと判定されたオブジェクトについては第1の演出処理よりも処理負荷の高い第2の演出処理を行う。例えば、演出処理をパーティクル等のオブジェクトを用いて行う場合には、第1の演出処理では、少ない数のオブジェクト(或いは簡易な形状のオブジェクト)を用いて簡易的な演出処理を行い、第2の演出処理では、第1の演出処理に比べて多くのオブジェクト(或いは詳細な形状のオブジェクト)を用いた詳細な演出処理を行う。
【0118】
このように、詳細度が高く処理負荷が高い演出処理を行う場合と、詳細度が低く処理負荷が低い演出を行う場合とを、条件分岐により切り替えることで、演出の処理負荷を効果的に低減させることができる。また、所定の条件を満たすオブジェクトについては処理負荷の低い簡易的な演出処理を行い、所定の条件を満たさないオブジェクトについて処理負荷の高い詳細な演出処理を行うことで、簡易的な演出処理を行ったとしても見た目の不自然さが視認され難いオブジェクト(注目度が低いオブジェクト)についての演出の処理負荷を低減して、演出の処理負荷を効果的に低減させることができる。
【0119】
また、且つ所定の条件が満たされたと判断されたオブジェクト(第2の衝突判定処理が省略され第1の衝突応答処理が行われるオブジェクト)について詳細度が高く処理負荷が高い第2の演出処理を行い、所定の条件が満たされていないと判断されたオブジェクト(第2の衝突判定処理と第2の衝突応答処理が行われるオブジェクト)について詳細度が低く処理負荷が低い第1の演出処理を行うようにしてもよい。このようにすると、所定の条件が満たされたと判断されたために精度が低い物理演算が行われたオブジェクトの見た目の不自然さを、詳細な演出処理によって視認させ難くすることができる。
【0120】
3.処理
次に、本実施形態の画像生成システムの処理の一例について図10、図11のフローチャートを用いて説明する。図10は、二通りの条件分岐を行う場合(図2参照)の処理の一例を示すフローチャート図である。
【0121】
まず、移動・動作処理部112は、オブジェクトをオブジェクト空間内で移動させる移動制御を行う(ステップS10)。すなわち、オブジェクト空間内のオブジェクトの速度と位置を更新する処理を行う。
【0122】
次に、物理演算部114は、オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行う(ステップS12)。第1の衝突判定処理では、各オブジェクトに設定する衝突判定領域として、バウンディング球或いは軸並行バウンディングボックス(AABB)を用いた衝突判定処理が行われる。
【0123】
次に、物理演算部114は、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアが所定の条件を満たすか否かを判断する(ステップS14)。例えば、第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離・位置関係、画像サイズ、透明度、速度、或いは属性が所定の条件を満たすか否かを判断する。
【0124】
次に、物理演算部114は、ステップS14で所定の条件を満たさないと判断されたオブジェクトのペアについて第2の衝突判定処理を行う(ステップS16)。第2の衝突判定処理では、各オブジェクトに設定する衝突判定領域として、有向バウンディングボックス(OBB)或いは凸多面体を用いた衝突判定処理が行われる。
【0125】
次に、物理演算部114は、第2の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第2の衝突応答処理を行う(ステップS18)。第2の衝突応答処理では、インパルス法(撃力ベース法)或いはLCP等の解析法を用いて、衝突したオブジェクトのペア(衝突ペア)に作用する物理量を演算する。次に、演出部116は、第2の衝突判定処理で衝突したと判定されたオブジェクトのペアについての第2の演出処理を行う(ステップS19)。
【0126】
一方、物理演算部114は、ステップS14で所定の条件を満たすと判断されたオブジェクトのペアについて第1の衝突応答処理を行う(ステップS20)。第1の衝突応答処理では、ペナルティ法を用いて、衝突したオブジェクトのペア(衝突ペア)に作用する物理量を演算する。次に、演出部116は、ステップS14で所定の条件を満たすと判断されたオブジェクトのペアについての第1の演出処理を行う(ステップS21)
また、物理演算部114は、ステップS14において、処理部100の処理負荷(例えば、プロセッサの使用率)、或いはオブジェクト空間内のオブジェクトの数が所定の条件を満たすか否かを判断してもよい。この場合、物理演算部114は、ステップS14で所定の条件を満たさないと判断した場合には、ステップS16において、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて第2の衝突判定処理を行い、ステップS14で所定の条件を満たすと判断した場合には、ステップS20において、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて第1の衝突応答処理を行う。また、演出部116は、ステップS14で所定の条件を満たすと判断した場合には、ステップS21において、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについての第1の演出処理を行う。
【0127】
次に、処理部100は、処理を続けるか否かを判断し(ステップS22)、処理を続ける場合には、ステップS10の処理に進む。すなわち、移動・動作処理部112は、ステップS18及びステップS20において演算された物理量(衝突ペアに作用する物理量(例えば、抗力))に基づいて、オブジェクトの速度、位置を更新する移動制御を行う。そして、ステップS10以降の処理を1フレーム毎に繰り返す。
【0128】
図11は、三通りの条件分岐を行う場合(図5参照)の処理の一例を示すフローチャート図である。図11のステップS30〜ステップS39の処理は、図11のステップS10〜ステップS19と同様の処理である。
【0129】
図11の例では、物理演算部114は、図10のステップS14に相当するステップS34において、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアが第1の条件を満たすか否かを判断し、第1の条件を満たさないと判断されたオブジェクトのペアについて第2の衝突判定処理を行う(ステップS36)。
【0130】
また、物理演算部114は、ステップS34で第1の条件を満たすと判断されたオブジェクトのペアが第2の条件を満たすか否かを判断し(ステップ40)、第2の条件を満たすと判断されたオブジェクトのペアについて第1の衝突応答処理を行う(ステップS42)。また、ステップS42において、第1の衝突応答処理を行うことに代えて、第1の衝突応答処理よりも処理負荷が高く第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理を行うようにしてもよい。また、演出部116は、第2の条件を満たすと判断されたオブジェクトのペアについての第1の演出処理を行う(ステップS43)。
【0131】
また、物理演算部114は、ステップS40で第2の条件を満たさないと判断されたオブジェクトのペアについて第3の衝突判定処理を行い(ステップS44)、第3の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第1の衝突応答処理を行う(ステップS42)。第3の衝突判定処理では、各オブジェクトに設定する衝突判定領域として、複数のバウンディング球を用いた衝突判定処理が行われる。また、演出部116は、第3の衝突判定処理で衝突したと判定されたオブジェクトのペアについての第1の演出処理を行う(ステップS43)。
【0132】
ここで、例えば、分岐条件(第1及び第2の条件)として、オブジェクトの仮想カメラからの距離に関する条件を判断する場合には、仮想カメラからの距離Dが第1の閾値TH1以上であるオブジェクトのペアについては、第1の条件が満たされたと判断し、さらに、仮想カメラからの距離Dが第2の閾値TH2(TH2>TH1)以上であるオブジェクトのペアについては、第2の条件が満たされたと判断すればよい。すなわち、距離Dが第1の閾値TH1未満であるオブジェクトのペアについて第2の衝突判定処理及び第2の衝突応答処理を行い、距離Dが第1の閾値TH1以上であって第2の閾値TH2未満であるオブジェクトのペアについて第3の衝突判定処理及び第1の衝突応答処理を行い、距離Dが第2の閾値TH2以上であるオブジェクトのペアについて第1の衝突応答処理を行えばよい。
【0133】
4.変形例
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0134】
例えば、上記実施形態では、第1の衝突判定処理で衝突したと判定されたオブジェクトに関する所定の条件として、オブジェクトの仮想カメラからの距離・位置関係、画像サイズ、透明度、速度或いは属性に関する条件を判断する場合について説明したが、本発明はこれに限られない。例えば、第1の衝突判定処理で衝突したと判定されたオブジェクトの向き、寿命(発生したから消滅するまでの時間)、或いは質量に関する条件を判断してもよい。この場合、仮想カメラの方向を向いていないオブジェクト、寿命が短いオブジェクト、或いは質量が小さいオブジェクトについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。また、プレーヤの注目している注視点(又はその予測点)に関する条件を判断してもよい。この場合、プレーヤの注視点付近に位置するオブジェクト以外のオブジェクトについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。
【符号の説明】
【0135】
100 処理部、110 オブジェクト空間設定部、112 移動・演算処理部(移動制御部)、114 物理演算部、116 演出部、118 仮想カメラ制御部、120 画像生成部、130 音生成部、160 操作部、170 記憶部、180 情報記憶媒体、190 表示部、192、音出力部、196 通信部
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及びゲームシステムに関する。
【背景技術】
【0002】
従来から、仮想的な3次元空間であるオブジェクト空間内の所与の視点から見える画像を生成するゲームシステムが知られており、いわゆる仮想現実を体験できるものとして人気が高い。このようなゲームシステムでは、移動体の衝突によるオブジェクトの破壊を表現するために、オブジェクトを構成する破片に移動力を与えて物理法則に沿った移動制御を行うものが知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−119223号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
このようなゲームシステムでは、物理演算の対象となるオブジェクトが多い場合に、正確な衝突判定や衝突応答の処理を行おうとすると、処理負荷が増大してしまうという問題点がある。
【0005】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、物理演算の処理負荷を効果的に低減させることが可能なプログラム、情報記憶媒体及びゲームシステムを提供することにある。
【課題を解決するための手段】
【0006】
(1)本発明に係るプログラムは、
オブジェクト空間内のオブジェクト同士の衝突判定を行う衝突判定処理と、衝突したと判定されたオブジェクトに作用する物理量を演算する衝突応答処理とを行う物理演算部と、
前記物理演算部の演算結果に基づきオブジェクトをオブジェクト空間内で移動させる制御を行う移動制御部としてコンピュータを機能させ、
前記物理演算部は、
オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、前記第1の衝突判定処理で衝突したと判定された場合に、所定の条件が満たされたか否かを判断し、前記所定の条件が満たされたと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行い、前記所定の条件が満たされていないと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行うプログラムに関する。
【0007】
また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるためのプログラムを記憶した情報記憶媒体に関する。また本発明は、上記各部を含むゲームシステムに関する。
【0008】
本発明によれば、処理負荷の高い第2の衝突判定処理及び第2の衝突応答処理を行う場合と、処理負荷の高い第2の衝突判定処理を省略し且つ処理負荷の低い第1の衝突応答処理を行う場合とを、条件分岐により切り替えることで、物理演算の処理負荷を効果的に低減させることができる。
【0009】
(2)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
第1の衝突判定処理は、オブジェクトを球体で近似して衝突判定を行う処理でもよい。
【0010】
本発明によれば、第1の衝突判定の処理負荷を低減させることができる。
【0011】
(3)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記物理演算部は、
前記所定の条件が満たされたと判断した場合に、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて、オブジェクトを複数の球体で近似して衝突判定を行う第3の衝突判定処理を行い、前記第3の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理、又は前記第1の衝突応答処理よりも処理負荷が高く前記第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理のいずれかを行うようにしてもよい。
【0012】
本発明によれば、物理演算の処理負荷を条件分岐により多段階で変化させることができ、物理演算の処理負荷をより効果的に低減させることができる。
【0013】
(4)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離、又は仮想カメラとの位置関係に関する条件でもよい。
【0014】
本発明によれば、例えば、仮想カメラからの距離が大きいオブジェクト、或いは、ビューボリューム内に位置しないオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0015】
(5)また本発明に係るプログラム及び情報記憶媒体では、
オブジェクトの立体視画像を生成する画像生成部として更にコンピュータを機能させ、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが、オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリアに位置するか否かに関する条件でもよい。
【0016】
また本発明に係るゲームシステムでは、
オブジェクトの立体視画像を生成する画像生成部を更に含み、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが、オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリアに位置するか否かに関する条件でもよい。
【0017】
本発明によれば、立体視画像を生成する場合に、例えば、プレーヤが立体視感をより強く感じる飛び出し空間を再現する領域(オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリア)に位置するオブジェクト以外のオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0018】
(6)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラから見たときの画像サイズに関する条件でもよい。
【0019】
本発明によれば、例えば、仮想カメラから見たときの画像サイズが小さいオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0020】
(7)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの透明度に関する条件でもよい。
【0021】
本発明によれば、例えば、透明度が高いオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0022】
(8)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの速度に関する条件でもよい。
【0023】
本発明によれば、例えば、速度が大きいオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0024】
(9)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに設定された属性に関する条件でもよい。
【0025】
本発明によれば、例えば、属性としての重要度が低いオブジェクトについての物理演算の処理負荷を低減して物理演算の処理負荷を効果的に低減させることができる。
【0026】
(10)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、衝突判定処理時の処理負荷に関する条件でもよい。
【0027】
本発明によれば、例えば、処理負荷の高い場合に、オブジェクトの物理演算に係る処理負荷を低減させることができる。
【0028】
(11)また本発明に係るプログラム、情報記憶媒体及びゲームシステムでは、
前記所定の条件は、オブジェクト空間内のオブジェクトの数に関する条件でもよい。
【0029】
本発明によれば、例えば、オブジェクトの数が多い場合に、オブジェクトの物理演算に係る物理演算の処理負荷を低減させることができる。
【0030】
(12)また本発明に係るプログラム及び情報記憶媒体では、
オブジェクト同士の衝突の演出処理を行う演出部として更にコンピュータを機能させ、
前記演出部は、
前記所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行ってもよい。
【0031】
また本発明に係るゲームシステムでは、
オブジェクト同士の衝突の演出処理を行う演出部を更に含み、
前記演出部は、
前記所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行ってもよい。
【0032】
本発明によれば、処理負荷の高い演出処理を行う場合と、処理負荷の低い演出処理を行う場合とを、条件分岐により切り替えることで、演出演算の処理負荷を効果的に低減させることができる。
【図面の簡単な説明】
【0033】
【図1】本実施形態のゲームシステムの機能ブロック図の一例を示す図。
【図2】物理演算の処理ステップの一例について説明するための図。
【図3】図3(A)、図3(B)、図3(C)、図3(D)、図3(E)は衝突判定領域について説明するための図。
【図4】ペナルティ法を用いた衝突応答処理について説明するための図。
【図5】物理演算の処理ステップの他の例について説明するための図。
【図6】衝突判定領域について説明するための図。
【図7】分岐条件について説明するための図。
【図8】分岐条件について説明するための図。
【図9】分岐条件について説明するための図。
【図10】本実施形態の処理の流れを示すフローチャート図。
【図11】本実施形態の処理の流れを示すフローチャート図。
【発明を実施するための形態】
【0034】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0035】
1.機能ブロック図
図1に第1の実施の形態のゲームシステム(ゲーム装置)の機能ブロック図の一例を示す。なお本実施形態のゲームシステムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0036】
操作部160は、プレーヤが操作情報(操作データ)を入力するためのものであり、ユーザの操作情報を処理部100に出力する。操作部160の機能は、ボタン、方向キー(十字キー)、方向入力可能なコントロールスティック(アナログキー)、レバー、キーボード、マウス、タッチパネル型ディスプレイ、加速度センサや傾きセンサ等を内蔵するコントローラなどのハードウェアにより実現することができる。
【0037】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。そして、本実施形態の記憶部170は、ワーク領域として使用される主記憶部172と、最終的な表示画像等が記憶される描画バッファ174と、オブジェクトのモデルデータが記憶されるオブジェクトデータ記憶部176と、各オブジェクトデータ用のテクスチャが記憶されるテクスチャ記憶部178と、オブジェクトの画像の生成処理時にZ値が記憶されるZバッファ179とを含む。なお、これらの一部を省略する構成としてもよい。
【0038】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の処理部100の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0039】
表示部190は、本実施形態により生成された画像(オブジェクト空間を所与の視点から見た画像)を出力するものであり、その機能は、CRT、LCD、或いはタッチパネル型ディスプレイなどにより実現できる。
【0040】
なお表示部190は、立体視画像を表示するようにしてもよい。例えば、裸眼方式では、表示部190は、有限個の画素からなるLCDの前面又は背面に、パララックスバリアやレンチキュラ等の光学素子が配置される。例えば、垂直バリアまたは垂直レンチキュラによる2眼式の場合には、表示部190に、1枚(1フレーム)の左眼用画像を表示するための表示領域と、1枚の右眼用画像を表示するための表示領域とが、短冊状に左眼用短冊画像表示領域及び右眼用短冊画像表示領域として交互に配置されている。パララックスバリアが配置される場合、その隙間からは、プレーヤの左眼には左眼用短冊画像表示領域に表示される左眼用短冊画像、右眼には右眼用短冊画像表示領域に表示される右眼用短冊画像のみが見えるようになっている。また、レンチキュラが配置される場合、各短冊集合画像に対応したレンズの光屈折効果により、プレーヤの左眼には左眼用短冊画像表示領域に表示される左眼用短冊画像、右眼には右眼用短冊画像表示領域に表示される右眼用短冊画像のみが見えるようになっている。また、偏光眼鏡方式では、表示部190の奇数ラインと偶数ラインに偏光方向の異なる偏光フィルタ(例えば、左円偏光を透過する偏光フィルタと、右円偏光を透過する偏光フィルタ)が交互に配置され、表示部190の奇数ラインと偶数ラインに左眼用画像と右眼用画像を交互に表示し、これを偏光眼鏡(例えば、左眼に左円偏光を透過する偏光フィルタ、右眼に右円偏光を透過する偏光フィルタを付けた眼鏡)で見ることで立体視を実現する。また、ページフリップ方式では、表示部190に左眼用画像と右眼用画像を所定時間毎(例えば、1/120秒毎)に交互に表示する。そして、この表示の切り替えに連動して液晶シャッター付きの眼鏡の左眼、右眼の液晶シャッターを交互に開閉することで、立体視を実現する。
【0041】
通信部196は他のゲームシステムやサーバとの間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0042】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信してゲームシステムを機能させる場合も本発明の範囲内に含む。
【0043】
処理部100(プロセッサ)は、操作部160からの操作データ、通信部196を介して受信したデータやプログラムなどに基づいて、ゲーム処理、画像生成処理、音生成処理などの処理を行う。ここで、ゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部100は主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、GPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0044】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、物理演算部114、演出部116、仮想カメラ制御部118、画像生成部120、音生成部130を含む。
【0045】
オブジェクト空間設定部110は、キャラクタ(プレーヤキャラクタ、ノンプレーヤキャラクタ)、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義であり、例えば、ワールド座標系でのX、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0046】
移動・動作処理部112(移動制御部)は、オブジェクト(キャラクタ等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)、物理法則などに基づいて、オブジェクトをオブジェクト空間(ゲーム空間)内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒又は1/30秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。また移動・動作処理部112は、ネットワークを介して接続された他のゲームシステム(ゲーム装置)から通信部196を介して受信したオブジェクト(他のプレーヤに対応するオブジェクト)の移動情報や動作情報に基づき当該オブジェクトの移動情報や動作情報を更新する処理を行うようにしてもよい。また移動・動作処理部112は、他のゲーム装置から通信部196を介して受信した操作データ等に基づき、当該オブジェクトの移動・動作演算を行うようにしてもよい。
【0047】
物理演算部114は、オブジェクト空間内のオブジェクト同士の衝突判定を行う衝突判定処理と、衝突したと判定されたオブジェクトに作用する物理量(力、トルク等)を演算する衝突応答処理とを行う。移動・動作処理部112(移動制御部)は、物理演算部114の演算結果(力、トルク等の物理量)に基づき、オブジェクトをオブジェクト空間内で移動させる処理を行う。例えば、移動・動作処理部112は、物理演算部114によって演算された物理量とオブジェクトの質量、重力等に基づき、衝突したと判定されたオブジェクトの加速度及び速度を演算し、演算した加速度及び速度に基づき該オブジェクトの位置及び向きの情報を更新する。
【0048】
特に本実施形態の物理演算部114は、オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、前記第1の衝突判定処理で衝突したと判定された場合に、所定の条件が満たされたか否かを判断する。そして、前記所定の条件が満たされたと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行う。一方、前記所定の条件が満たされていないと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行う。
【0049】
また、前記第1の衝突判定処理では、オブジェクトを球体或いはAABB(軸並行バウンディングボックス)で近似して衝突判定を行うようにしてもよい、また、前記第2の衝突判定処理では、オブジェクトをOBB(有向バウンディングボックス)或いは凸多面体で近似して衝突判定を行うようにしてもよい。
【0050】
また、前記第1の衝突応答処理では、前記第2の衝突応答処理よりも処理負荷の低いペナルティ法を用いて衝突応答処理を行うようにしてもよい。また、前記第2の衝突応答処理では、前記第1の衝突応答処理よりも処理負荷の高いインパルス法(撃力ベース法)或いはLCP(線形相補性問題)等の解析法を用いて衝突応答処理を行うようにしてもよい。
【0051】
また、物理演算部114は、前記所定の条件が満たされたと判断した場合に、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて、オブジェクトを複数の球体で近似して衝突判定を行う第3の衝突判定処理を行い、前記第3の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理、又は前記第1の衝突応答処理よりも処理負荷が高く前記第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理のいずれかを行うようにしてもよい。
【0052】
また、物理演算部114は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが所定の条件を満たすか否かを判断してもよい。そして、所定の条件を満たす判断されたオブジェクトについて前記第2の衝突応答処理よりも処理負荷の低い第1の衝突応答処理を行い、所定の条件を満たさないと判断されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行うようにしてもよい。
【0053】
すなわち、前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに関する条件でもよい。例えば、前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離、又は仮想カメラとの位置関係に関する条件でもよい。また立体視画像を生成する場合には、前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが、オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリアに位置するか否かに関する条件でもよい。また前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラから見たときの画像サイズに関する条件でもよいし、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの透明度に関する条件でもよいし、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの速度に関する条件でもよいし、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに設定された属性に関する条件でもよい。
【0054】
なお、前記所定の条件は、衝突判定処理時の処理負荷(CPUの処理負荷)に関する条件でもよいし、オブジェクト空間内のオブジェクトの数に関する条件でもよい。
【0055】
演出部116は、オブジェクト同士の衝突の演出処理を行い、前記所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行う。例えば、演出部116は、所定の条件が満たされたと判断された場合に、第1の演出処理を行い、所定の条件が満たされていないと判断された場合に、前記第1の演出処理よりも処理負荷の高い(又は前記第1の演出処理よりも処理負荷の低い)第2の演出処理を行う。また、前記所定の条件が、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに関する条件である場合には、演出部116は、所定の条件を満たすと判断されたオブジェクトについて前記第1の演出処理を行い、所定の条件を満たないと判断され、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第2の演出処理を行ってもよい。
【0056】
仮想カメラ制御部118は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、操作部160によりプレーヤが入力した操作データ或いはプログラム(移動・動作アルゴリズム)等に基づいて、ワールド座標系における仮想カメラの位置(X、Y、Z)又は光軸の方向(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度等)を制御する処理を行う。要するに、視点位置、仮想カメラの向き、画角を制御する処理を行う。
【0057】
また、2眼式の立体視方式により立体視画像を表示する場合には、仮想カメラ制御部118は、左眼用仮想カメラ及び右眼用仮想カメラの位置、向き及び画角を制御する。また、仮想カメラ制御部118は、左眼用仮想カメラと右眼用仮想カメラを設定するための基準となる基準仮想カメラ(センターカメラ)の制御を行い、基準仮想カメラの位置、向き及び左眼用及び右眼用仮想カメラ間の距離情報に基づいて、左眼用及び右眼用仮想カメラの位置、向きを制御するようにしてもよい。多眼立体視画像の場合も同様に、多眼仮想カメラのそれぞれについて位置、向きを制御すればよい。また、空間像方式(水平・垂直両方向に視差を持つ方式を含む)の場合には、仮想カメラの位置、向き及び画角の少なくとも1つを制御して、それに基づく空間座標変換により、仮想空間全体をいったん変換する。その後、変換後の空間内に配置されたオブジェクト等を、それぞれの立体視表示方式に基づいて描画することで、上記の効果を得ることができる。
【0058】
画像生成部120は、処理部100で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。
【0059】
いわゆる3次元画像を生成する場合には、まずオブジェクトの各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0060】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、射影変換(透視変換、投影変換)、ビューポート変換(スクリーン座標変換)、光源計算等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。ジオメトリ処理後のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、オブジェクトデータ記憶部176に保存される。
【0061】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。
【0062】
ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0063】
そして描画部120は、オブジェクトを描画する際に、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0064】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0065】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ179(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ179に格納されるZ値を参照する。そして参照されたZバッファ179のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ179のZ値を新たなZ値に更新する。
【0066】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。例えば、通常αブレンディングでは、α値を合成の強さとして線形補間を行うことにより2つの色を合成した色を求める処理を行う。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えばRGBの各色成分の輝度を表す色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0067】
画像生成部120は、立体視画像を表示部190に出力するようにしてもよい。例えば、立体視方式が2眼式の場合であれば、画像生成部120は、左眼用画像生成部と右眼用画像生成部を含む。左眼用画像生成部は、オブジェクト空間内において左眼用仮想カメラから見える画像である左眼用画像を生成し、右眼用画像生成部は、オブジェクト空間内において右眼用仮想カメラから見える画像である右眼用画像を生成する。具体的には、左眼用画像生成部は、オブジェクト空間内の投影面に対してオブジェクトを左眼用仮想カメラの視点で透視投影して描画することで左眼用画像を生成し、右眼用画像生成部は、投影面に対してオブジェクトを右眼用仮想カメラの視点で透視投影して描画することで右眼用画像を生成する。
【0068】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0069】
なお、本実施形態のゲームシステムは、1人のプレーヤのみがプレイできるシングルプレーヤモード、或いは、複数のプレーヤがプレイできるマルチプレーヤモードでゲームプレイできるように制御してもよい。例えば、マルチプレーヤモードで制御する場合には、ネットワークを介して他のゲームシステム(ゲーム装置)とデータを送受信してゲーム処理を行うようにしてもよいし、1つの画像生成システムが、複数の操作部からの操作情報に基づいて処理を行うようにしてもよい。
【0070】
また、本実施形態のゲームシステムをサーバシステムとして構成してもよい。サーバシステムは、1又は複数のサーバ(認証サーバ、ゲーム処理サーバ、通信サーバ、課金サーバ、データベースサーバ等)により構成することができる。この場合には、サーバシステムは、ネットワークを介して接続された1又は複数の端末装置(例えば、据え置き型ゲーム装置、携帯型ゲーム装置、プログラム実行可能な携帯電話等)から送信された操作情報に基づき各種処理を行って、画像を生成するための画像生成用データを生成し、生成した画像生成用データを各端末装置に対して送信する。ここで、画像生成用データとは、本実施形態の手法により生成された画像を各端末装置において表示するためのデータであり、画像データそのものでもよいし、各端末装置が画像を生成するために用いる各種データ(オブジェクトデータ、ゲーム処理結果データ等)であってもよい。
【0071】
2.本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【0072】
2−1.物理演算
図2は、本実施形態における物理演算(物理シミュレーション)の処理ステップの一例について説明するための模式図である。物理演算では、オブジェクト同士の衝突を検出する衝突判定処理と、衝突したオブジェクトに作用する物理量を演算する衝突応答処理が行われる。
【0073】
本実施形態では、図2に示すように、まず、オブジェクト空間内の各オブジェクトを移動させる移動制御が行われ、次に、オブジェクト空間内のオブジェクトについて第1の衝突判定処理が行われる。第1の衝突判定処理(ブロードフェーズ衝突判定)では、後述する第2の衝突判定処理に比べて正確性に劣るものの処理負荷の低い手法を用いた衝突判定が行われる。
【0074】
次に、所定の条件(第1の衝突判定処理で衝突したと判定されたオブジェクトに関する所定の条件、又は処理負荷或いはオブジェクトの数に関する所定の条件)が満たされたか否かが判断される。
【0075】
所定の条件が満たされていないと判断された場合(図2のA1)には、第1の衝突判定処理で衝突したと判定されたオブジェクトのペア(衝突ペア)について第2の衝突判定処理が行われる。第2の衝突判定処理(ナローフェーズ衝突判定)では、第1の衝突判定処理に比べて処理負荷が高いものの精度の高い手法を用いた衝突判定が行われる。そして、第2の衝突判定処理で衝突したと判定されたオブジェクトについて第2の衝突応答処理が行われ、第2の衝突応答処理の処理結果に基づきオブジェクトの移動制御が行われる。第2の衝突応答処理では、後述する第1の衝突応答処理に比べて処理負荷が高いものの精度が高い手法を用いた衝突応答処理が行われる。
【0076】
一方、所定の条件が満たされたと判断された場合(図2のA2)には、第2の衝突判定処理を省略して、第1の衝突判定処理で衝突したと判定されたオブジェクトのペア(衝突ペア)について第1の衝突応答処理が行われ、第1の衝突応答処理の処理結果に基づきオブジェクトの移動制御が行われる。第1の衝突応答処理では、第2の衝突応答処理に比べて正確性に劣るものの処理負荷の低い手法を用いた衝突応答処理が行われる。
【0077】
具体的には、第1の衝突判定処理では、図3(A)に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包するバウンディング球(球体)を用いて、オブジェクト同士の衝突判定が行われる。衝突判定領域としてバウンディング球を用いると、バウンディング球の中心点同士の距離と半径とに基づき衝突判定を行えるため、衝突判定処理の処理負荷を低減することができる。
【0078】
また、第1の衝突判定処理では、図3(B)に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包する軸並行バウンディングボックス(AABB:Axis-Aligned Bounding Box)を用いて、オブジェクト同士の衝突判定を行うようにしてもよい。軸並行バウンディングボックスとは、各辺がオブジェクト空間(ワールド座標空間)のXYZ軸に対し平行な直方体である。衝突判定領域として軸並行バウンディングボックスを用いると、オブジェクトの回転(向き)を考慮せずに衝突判定を行えるため、バウンディング球を用いる場合と同様に衝突判定処理の処理負荷を低減することができる。
【0079】
また、第2の衝突判定処理では、図3(C)に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包する有向バウンディングボックス(OBB:Oriented Bounding Box)を用いて、第1の衝突判定処理で衝突したと判定されたオブジェクト同士の衝突判定が行われる。有向バウンディングボックスとは、任意の軸を有する直方体であり、オブジェクトの向きも考慮して設定されるものである。
【0080】
また、第2の衝突判定処理では、図3(D)に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包する凸多面体を用いて衝突判定を行うようにしてもよい。有向バウンディングボックスや凸多面体を用いる第2の衝突判定処理では、バウンディング球や軸並行バウンディングボックスを用いる第1の衝突判定処理に比べて処理負荷が高いものの精度の高い衝突判定を行うことができる。また、第2の衝突判定処理では、図3(E)に示すように、各オブジェクトの形状と略同一形状の衝突判定領域DAを用いて衝突判定を行うようにしてもよい。
【0081】
また、第2の衝突応答処理では、インパルス法(撃力ベース法)を用いて第2の衝突判定処理で衝突したと判定されたオブジェクトについての衝突応答処理が行われる。インパルス法とは、衝突を2つのオブジェクトに働く瞬間的な力(インパルス、撃力)の連続として扱うことで、衝突したオブジェクトに作用する抗力を求める手法である。
【0082】
また、第2の衝突応答処理では、解析法(直接法)を用いて第2の衝突判定処理で衝突したと判定されたオブジェクトについての衝突応答処理を行うようにしてもよい。解析法とは、例えば、拘束条件を運動方程式と連立させた線形相補性問題(LCP:Linear Complementary Proglem)を解くことで、衝突したオブジェクトに作用する物理量を求める手法である。インパルス法や解析法を用いる第2の衝突応答処理では、処理負荷は高いものの精度の高い衝突応答処理を行うことができる。
【0083】
また、第1の衝突応答処理では、ペナルティ法を用いて第1の衝突判定処理で衝突したと判定されたオブジェクトについての衝突応答処理が行われる。ペナルティ法とは、図4に示すように、衝突したオブジェクトOB間(各オブジェクトに設定された衝突判定領域DA間)のめり込み距離PN(浸透深度、ペナルティ)に応じたバネ及びダンパの力を仮想的に発生させることで、衝突したオブジェクトに作用する抗力を求める手法である。ペナルティ法を用いる第1の衝突応答処理では、運動方程式や巨大な逆行列を用いずにオブジェクトに作用する物理量を演算することができるため、インパルス法や解析法を用いる第2の衝突応答処理に比べて精度は劣るものの低い処理負荷で衝突応答処理を行うことができる。
【0084】
このように本実施形態では、第1の衝突判定処理を行った後に、所定の条件が満たされたか否かを判断し、所定の条件が満たされていないと判断した場合には、精度が高く処理負荷も高い第2の衝突判定処理及び第2の衝突応答処理を行い、所定の条件が満たされたと判断した場合には、処理負荷の高い第2の衝突判定処理を省略し、且つ、第2の衝突応答処理に代えて精度が低く処理負荷も低い第1の衝突応答処理を行う。このように本実施形態によれば、精度が高く処理負荷が高い物理演算を行う場合と、精度が低く処理負荷が低い物理演算を行う場合とを、衝突オブジェクトや処理負荷に応じて条件分岐により切り替えることで、物理演算の処理負荷を効果的に低減させることができる。
【0085】
なお、図5に示すように、3通りの条件分岐を行うようにしてもよい。すなわち、第1の条件を満たしていない場合(図5のA1)には、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第2の衝突判定処理を行い、第1の条件を満たし且つ第2の条件を満たす場合(図5のA2)には、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第1の衝突応答処理を行い、第1の条件を満たし且つ第2の条件を満たさない場合(図5のA3)には、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第3の衝突判定処理を行い、第3の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第1の衝突応答処理を行うようにしてもよい。なお、第3の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第1の衝突応答処理よりも処理負荷が高く第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理を行うようにしてもよい。
【0086】
第3の衝突判定処理(ミドルフェーズ衝突判定)では、オブジェクトを複数の球体で近似して衝突判定を行う。すなわち、第3の衝突判定処理では、図6に示すように、各オブジェクトOBに設定する衝突判定領域DAとして、各オブジェクトOBを内包する複数のバウンディング球(球体)を用いて、オブジェクト同士の衝突判定が行われる。複数のバウンディング球を用いる第3の衝突判定処理では、単一のバウンディング球を用いる第1の衝突判定処理に比べて精度が高く処理負荷が高い衝突判定であって、有向バウンディングボックスや凸多面体を用いる第2の衝突判定処理に比べて精度が低く処理負荷が低い衝突判定が行われる。なお、衝突判定領域DAとして設定するバウンディング球の数は任意であるが、バウンディング球の数を多くするほど精度は高くなり処理負荷も高くなる。なお、第3の衝突判定処理においてバウンディング球の数を可変として3通り以上の条件分岐を行うようにしてもよい。このように、物理演算の精度及び処理負荷を条件分岐により多段階で切り替えることで、物理演算の処理負荷をより効果的に低減させることができる。
【0087】
2−2.分岐条件(オブジェクトの仮想カメラからの距離・位置関係に関する条件)
次に、本実施形態における所定の条件(分岐条件)の詳細について説明する。まず、第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離(当該オブジェクトの奥行き値(Z値))、又は仮想カメラとの位置関係に関する条件を判断する場合について説明する。
【0088】
例えば、図7に示す例において、仮想カメラVCからの距離が距離D1以内の位置にあるオブジェクトのペアOP1、OP2については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、仮想カメラVCからの距離が距離D1以上の位置にあるオブジェクトのペアOP3については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行う。なお、オブジェクトのペアのいずれか一方が距離D1以上の位置にある場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。また、オブジェクトペアのめり込み部分(図4のPN)の位置に基づき判断してもよい。
【0089】
このように、仮想カメラVCから遠いところに位置するオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、仮想カメラから近いところに位置するオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、仮想カメラから遠いため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0090】
また、図7に示す例において、仮想カメラVCからの距離が距離D2(D2<D1)以内の領域と、仮想カメラVCからの距離が距離D1以上の領域とを焦点が合わない領域として設定し、仮想カメラVCからの距離が距離D2以上であって距離D1以内の領域を焦点があう領域として設定して、焦点が合わない領域に位置するオブジェクトの画像をぼかす被写界深度処理を行う場合に、焦点が合う領域に位置するオブジェクトのペアOP2については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、焦点が合わない領域に位置するオブジェクトのペアOP1、OP3については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトのペアのいずれか一方が焦点の合わない領域に位置する場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。また、オブジェクトペアのめり込み部分(図4のPN)の位置に基づき判断してもよい。
【0091】
このように、被写界深度処理によってぼかし処理が施されるオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、ぼかし処理が施されないオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、ぼかし処理が施されるため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0092】
また、図7に示す例において、ビューボリュームVV内に位置するオブジェクトのペアOP1〜OP3については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、ビューボリュームVVの外に位置するオブジェクトのペアOP4については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、ビューボリュームVVは、仮想カメラVCの位置、向き、画角及び投影面の位置によって上下左右の構成面が決定される視錐台の領域である。なお、オブジェクトのペアのいずれか一方がビューボリュームVVの外に位置する場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。また、オブジェクトペアのめり込み部分(図4のPN)の位置に基づき判断してもよい。
【0093】
このように、ビューボリューム外に位置するオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、ビューボリューム内に位置するオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、ビューボリューム外に位置するため描画対象とはならないオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0094】
また、立体視画像を生成する場合に、第1の衝突判定処理で衝突したと判定されたオブジェクトが、表示部から飛び出して見える飛び出し空間を再現する領域に位置する場合に、所定の条件が満たされたと判断してもよい。
【0095】
図8に示すように、2眼式の立体視方式では、プレーヤの両眼の幅に対応する距離だけ離れた左眼用仮想カメラVCLと右眼用仮想カメラVCRをオブジェクト空間に設定する。そして、左眼用仮想カメラVCLに対応して左眼用ビューボリュームVVLが設定され、右眼用仮想カメラVCRに対応して右眼用ビューボリュームVVRが設定される。投影面SPは、表示部の画面に対応する面であり、プレーヤの視点位置に相当する左眼用、右眼用仮想カメラVCL、VCRの位置及び向きと、プレーヤの視点位置と表示部の画面との位置関係とに基づき設定される。なお、図8において、NPL、FPLは、それぞれ左眼用ビューボリュームVVLのニアクリップ面、ファークリップ面であり、NPR、FPRは、それぞれ右眼用ビューボリュームVVRのニアクリップ面、ファークリップ面である。左眼用仮想カメラVCLから見える画像である左眼用画像は、左眼用ビューボリュームVVL内に存在するオブジェクトを投影面SPに透視投影して描画することで生成される。同様に、右眼用仮想カメラVCRから見える画像である右眼用画像は、右眼用ビューボリュームVVR内に存在するオブジェクトを投影面SPに透視投影して描画することで生成される。
【0096】
ここで、オブジェクトが、投影面SPよりも左眼用、右眼用仮想カメラVCL、VCRからみて手前側のエリア(投影面SPとニアクリップ面NPL、NPRに挟まれたエリア)である第1のエリアAR1に位置する場合には、プレーヤからはオブジェクトが表示部の画面よりも手前側に飛び出しているように見える。また、オブジェクトが、投影面SPよりも左眼用、右眼用仮想カメラVCL、VCRからみて奥側のエリア(投影面SPとファークリップ面FPL、FPRに挟まれたエリア)である第2のエリアAR2に位置する場合には、プレーヤからはオブジェクトが表示部の画面よりも奥側に引っ込んでいるように見える。
【0097】
例えば、図8に示す例において、画面よりも手前側に飛び出しているように見える飛び出し空間を再現する第1のエリアAR1に位置するオブジェクトのペアOP5については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、画面よりも奥側に引っ込んでいるように見える奥行き空間を再現する第2のエリアAR2に位置するオブジェクトのペアOP6については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行う。なお、オブジェクトのペアのいずれか一方が第2のエリアAR2に位置する場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。また、オブジェクトペアのめり込み部分(図4のPN)の位置に基づき判断してもよい。
【0098】
このように、立体視画像を生成する際に、飛び出し空間を再現する領域に位置するオブジェクトについては、精度が高く処理負荷も高い物理演算を行い、奥行き空間を再現する領域に位置するオブジェクトについては精度が低く処理負荷も低い物理演算を行うようにすることで、プレーヤが立体視感をより強く感じる飛び出し空間を再現する領域に位置するオブジェクト以外のオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0099】
2−3.分岐条件(オブジェクトの画像サイズに関する条件)
次に、第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラから見たときの画像サイズに関する条件を判断する場合について説明する。
【0100】
例えば、図9に示すゲーム画像GI(オブジェクト空間を仮想カメラから見た画像)において、画像サイズが所定の閾値よりも大きいオブジェクトのペアOP7については、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、画像サイズが所定の閾値よりも小さいオブジェクトのペアOP8については、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトの画像サイズは、オブジェクト(オブジェクトのペア、又はオブジェクトのペアのいずれか一方)がゲーム画像GIにおいて占める面積に基づき求めてもよいし、オブジェクト(オブジェクトのペア、又はオブジェクトのペアのいずれか一方)のオブジェクト空間内におけるサイズ及び仮想カメラからの距離に基づき求めてもよい。
【0101】
このように、画像サイズが小さいオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、画像サイズが大きいオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、画像サイズが小さいため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0102】
2−4.分岐条件(オブジェクトの透明度に関する条件)
次に、第1の衝突判定処理で衝突したと判定されたオブジェクトの透明度に関する条件を判断する場合について説明する。
【0103】
例えば、透明度が所定の閾値よりも低いオブジェクトのペアについては、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、透明度が所定の閾値よりも高いオブジェクトのペアについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトの透明度は、オブジェクトの各頂点に設定される透明度(α値)でもよいし、オブジェクトにマッピングされるテクスチャに設定される透明度(α値)でもよい。また、オブジェクトのペアのそれぞれの透明度の平均値を、オブジェクトのペアの透明度として求めてもよいし、オブジェクトのペアのいずれか一方の透明度をオブジェクトのペアの透明度としてもよい。
【0104】
このように、透明度が高いオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、透明度が小さい(不透明度が高い)オブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、透明度が高いため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0105】
2−5.分岐条件(オブジェクトの速度に関する条件)
次に、第1の衝突判定処理で衝突したと判定されたオブジェクトの速度に関する条件を判断する場合について説明する。
【0106】
例えば、速度が所定の閾値よりも小さいオブジェクトのペアについては、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、速度が所定の閾値よりも大きいオブジェクトのペアについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトのペアのそれぞれの速度の平均値を、オブジェクトのペアの速度として求めてもよいし、オブジェクトのペアのいずれか一方の速度をオブジェクトのペアの速度としてもよい。
【0107】
このように、速度が大きいオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、速度が小さいオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、速度が大きいため精度の低い物理演算を行ったとしても見た目の不自然さが視認され難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0108】
2−6.分岐条件(オブジェクトの属性に関する条件)
次に、第1の衝突判定処理で衝突したと判定されたオブジェクトに設定された属性(重要度、オブジェクトの種類)に関する条件を判断する場合について説明する。
【0109】
例えば、属性として設定された重要度が高いオブジェクトのペアについては、所定の条件が満たされていないと判断し、処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、属性として設定された重要度が低いオブジェクトのペアについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。なお、オブジェクトのペアのいずれか一方の重要度が低い場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよいし、オブジェクトのペアの両方の重要度が低い場合に、当該オブジェクトのペアについて所定の条件が満たされたと判断してもよい。
【0110】
例えば、背景物であるオブジェクトの重要度を低くし、キャラクタオブジェクトの重要度を高くしてもよい。また、キャラクタの中でも、プレーヤキャラクタの重要度を高くし、ノンプレーヤキャラクタ(NPC)の重要度を低くしてもよい。また、キャラクタのうち、プレーヤキャラクタを攻撃するキャラクタの重要度を高くし、攻撃しないキャラクタの重要度を低くしてもよい。また、パーティクルオブジェクト等のエフェクト表現に用いられるオブジェクトの重要度を低くしてもよい。
【0111】
このように、属性としての重要度が低いオブジェクトについては、精度が低く処理負荷も低い物理演算を行い、属性としての重要度が高いオブジェクトについては、精度が高く処理負荷も高い物理演算を行うようにすることで、プレーヤの注目度が低いと想定されるため精度の低い物理演算を行ったとしても見た目の不自然さがプレーヤに気付かれ難いオブジェクトについての物理演算の処理負荷を低減して、物理演算の処理負荷を効果的に低減させることができる。
【0112】
2−7.分岐条件(処理負荷、オブジェクトの数に関する条件)
次に、第1の衝突判定処理を行った際の処理負荷やオブジェクト空間内に存在するオブジェクトの数に関する条件を判断する場合について説明する。
【0113】
例えば、第1の衝突判定処理を行った際の処理負荷(処理部100を実現するCPU等のプロセッサの処理負荷)が所定の閾値よりも低い場合には、所定の条件が満たされていないと判断し、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、第1の衝突判定処理を行った際の処理負荷が所定の閾値よりも高い場合には、所定の条件が満たされたと判断し、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。
【0114】
また、第1の衝突判定処理を行った際にオブジェクト空間内に存在するオブジェクトの数が所定の閾値よりも小さい場合には、所定の条件が満たされていないと判断し、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて処理負荷の高い第2の衝突判定処理と第2の衝突応答処理を行い、第1の衝突判定処理を行った際にオブジェクト空間内に存在するオブジェクトの数が所定の閾値よりも大きい場合には、所定の条件が満たされたと判断し、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。
【0115】
このように、処理負荷が所定の閾値よりも低い場合或いはオブジェクトの数が少ないため処理負荷が低いと推定される場合には、全てのオブジェクトのペアについて精度が高く処理負荷も高い物理演算を行い、処理負荷が所定の閾値よりも高い場合或いはオブジェクトの数が多いため処理負荷が高いと推定される場合には、全てのオブジェクトのペアについて精度が低く処理負荷も低い物理演算を行うようにすることで、プロセッサの処理負荷が高い場合にオブジェクトの物理演算に必要な処理負荷を低減して、処理負荷の増大によるフレーム落ち等の発生を防止することができる。
【0116】
2−8.衝突演出
本実施形態では、第1または第2の衝突判定処理で衝突したと判定された場合に、衝突の演出処理(例えば、オブジェクト同士の衝突によって生ずる火花等を画像処理で表すエフェクト処理)を行う。また、所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行う。
【0117】
具体的には、第1の衝突判定処理で衝突したと判定され、且つ所定の条件が満たされたと判断されたオブジェクトについては第1の演出処理を行い、所定の条件が満たされていないと判断され、且つ第2の衝突判定処理で衝突したと判定されたオブジェクトについては第1の演出処理よりも処理負荷の高い第2の演出処理を行う。例えば、演出処理をパーティクル等のオブジェクトを用いて行う場合には、第1の演出処理では、少ない数のオブジェクト(或いは簡易な形状のオブジェクト)を用いて簡易的な演出処理を行い、第2の演出処理では、第1の演出処理に比べて多くのオブジェクト(或いは詳細な形状のオブジェクト)を用いた詳細な演出処理を行う。
【0118】
このように、詳細度が高く処理負荷が高い演出処理を行う場合と、詳細度が低く処理負荷が低い演出を行う場合とを、条件分岐により切り替えることで、演出の処理負荷を効果的に低減させることができる。また、所定の条件を満たすオブジェクトについては処理負荷の低い簡易的な演出処理を行い、所定の条件を満たさないオブジェクトについて処理負荷の高い詳細な演出処理を行うことで、簡易的な演出処理を行ったとしても見た目の不自然さが視認され難いオブジェクト(注目度が低いオブジェクト)についての演出の処理負荷を低減して、演出の処理負荷を効果的に低減させることができる。
【0119】
また、且つ所定の条件が満たされたと判断されたオブジェクト(第2の衝突判定処理が省略され第1の衝突応答処理が行われるオブジェクト)について詳細度が高く処理負荷が高い第2の演出処理を行い、所定の条件が満たされていないと判断されたオブジェクト(第2の衝突判定処理と第2の衝突応答処理が行われるオブジェクト)について詳細度が低く処理負荷が低い第1の演出処理を行うようにしてもよい。このようにすると、所定の条件が満たされたと判断されたために精度が低い物理演算が行われたオブジェクトの見た目の不自然さを、詳細な演出処理によって視認させ難くすることができる。
【0120】
3.処理
次に、本実施形態の画像生成システムの処理の一例について図10、図11のフローチャートを用いて説明する。図10は、二通りの条件分岐を行う場合(図2参照)の処理の一例を示すフローチャート図である。
【0121】
まず、移動・動作処理部112は、オブジェクトをオブジェクト空間内で移動させる移動制御を行う(ステップS10)。すなわち、オブジェクト空間内のオブジェクトの速度と位置を更新する処理を行う。
【0122】
次に、物理演算部114は、オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行う(ステップS12)。第1の衝突判定処理では、各オブジェクトに設定する衝突判定領域として、バウンディング球或いは軸並行バウンディングボックス(AABB)を用いた衝突判定処理が行われる。
【0123】
次に、物理演算部114は、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアが所定の条件を満たすか否かを判断する(ステップS14)。例えば、第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離・位置関係、画像サイズ、透明度、速度、或いは属性が所定の条件を満たすか否かを判断する。
【0124】
次に、物理演算部114は、ステップS14で所定の条件を満たさないと判断されたオブジェクトのペアについて第2の衝突判定処理を行う(ステップS16)。第2の衝突判定処理では、各オブジェクトに設定する衝突判定領域として、有向バウンディングボックス(OBB)或いは凸多面体を用いた衝突判定処理が行われる。
【0125】
次に、物理演算部114は、第2の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第2の衝突応答処理を行う(ステップS18)。第2の衝突応答処理では、インパルス法(撃力ベース法)或いはLCP等の解析法を用いて、衝突したオブジェクトのペア(衝突ペア)に作用する物理量を演算する。次に、演出部116は、第2の衝突判定処理で衝突したと判定されたオブジェクトのペアについての第2の演出処理を行う(ステップS19)。
【0126】
一方、物理演算部114は、ステップS14で所定の条件を満たすと判断されたオブジェクトのペアについて第1の衝突応答処理を行う(ステップS20)。第1の衝突応答処理では、ペナルティ法を用いて、衝突したオブジェクトのペア(衝突ペア)に作用する物理量を演算する。次に、演出部116は、ステップS14で所定の条件を満たすと判断されたオブジェクトのペアについての第1の演出処理を行う(ステップS21)
また、物理演算部114は、ステップS14において、処理部100の処理負荷(例えば、プロセッサの使用率)、或いはオブジェクト空間内のオブジェクトの数が所定の条件を満たすか否かを判断してもよい。この場合、物理演算部114は、ステップS14で所定の条件を満たさないと判断した場合には、ステップS16において、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて第2の衝突判定処理を行い、ステップS14で所定の条件を満たすと判断した場合には、ステップS20において、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについて第1の衝突応答処理を行う。また、演出部116は、ステップS14で所定の条件を満たすと判断した場合には、ステップS21において、第1の衝突判定処理で衝突したと判定された全てのオブジェクトのペアについての第1の演出処理を行う。
【0127】
次に、処理部100は、処理を続けるか否かを判断し(ステップS22)、処理を続ける場合には、ステップS10の処理に進む。すなわち、移動・動作処理部112は、ステップS18及びステップS20において演算された物理量(衝突ペアに作用する物理量(例えば、抗力))に基づいて、オブジェクトの速度、位置を更新する移動制御を行う。そして、ステップS10以降の処理を1フレーム毎に繰り返す。
【0128】
図11は、三通りの条件分岐を行う場合(図5参照)の処理の一例を示すフローチャート図である。図11のステップS30〜ステップS39の処理は、図11のステップS10〜ステップS19と同様の処理である。
【0129】
図11の例では、物理演算部114は、図10のステップS14に相当するステップS34において、第1の衝突判定処理で衝突したと判定されたオブジェクトのペアが第1の条件を満たすか否かを判断し、第1の条件を満たさないと判断されたオブジェクトのペアについて第2の衝突判定処理を行う(ステップS36)。
【0130】
また、物理演算部114は、ステップS34で第1の条件を満たすと判断されたオブジェクトのペアが第2の条件を満たすか否かを判断し(ステップ40)、第2の条件を満たすと判断されたオブジェクトのペアについて第1の衝突応答処理を行う(ステップS42)。また、ステップS42において、第1の衝突応答処理を行うことに代えて、第1の衝突応答処理よりも処理負荷が高く第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理を行うようにしてもよい。また、演出部116は、第2の条件を満たすと判断されたオブジェクトのペアについての第1の演出処理を行う(ステップS43)。
【0131】
また、物理演算部114は、ステップS40で第2の条件を満たさないと判断されたオブジェクトのペアについて第3の衝突判定処理を行い(ステップS44)、第3の衝突判定処理で衝突したと判定されたオブジェクトのペアについて第1の衝突応答処理を行う(ステップS42)。第3の衝突判定処理では、各オブジェクトに設定する衝突判定領域として、複数のバウンディング球を用いた衝突判定処理が行われる。また、演出部116は、第3の衝突判定処理で衝突したと判定されたオブジェクトのペアについての第1の演出処理を行う(ステップS43)。
【0132】
ここで、例えば、分岐条件(第1及び第2の条件)として、オブジェクトの仮想カメラからの距離に関する条件を判断する場合には、仮想カメラからの距離Dが第1の閾値TH1以上であるオブジェクトのペアについては、第1の条件が満たされたと判断し、さらに、仮想カメラからの距離Dが第2の閾値TH2(TH2>TH1)以上であるオブジェクトのペアについては、第2の条件が満たされたと判断すればよい。すなわち、距離Dが第1の閾値TH1未満であるオブジェクトのペアについて第2の衝突判定処理及び第2の衝突応答処理を行い、距離Dが第1の閾値TH1以上であって第2の閾値TH2未満であるオブジェクトのペアについて第3の衝突判定処理及び第1の衝突応答処理を行い、距離Dが第2の閾値TH2以上であるオブジェクトのペアについて第1の衝突応答処理を行えばよい。
【0133】
4.変形例
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0134】
例えば、上記実施形態では、第1の衝突判定処理で衝突したと判定されたオブジェクトに関する所定の条件として、オブジェクトの仮想カメラからの距離・位置関係、画像サイズ、透明度、速度或いは属性に関する条件を判断する場合について説明したが、本発明はこれに限られない。例えば、第1の衝突判定処理で衝突したと判定されたオブジェクトの向き、寿命(発生したから消滅するまでの時間)、或いは質量に関する条件を判断してもよい。この場合、仮想カメラの方向を向いていないオブジェクト、寿命が短いオブジェクト、或いは質量が小さいオブジェクトについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。また、プレーヤの注目している注視点(又はその予測点)に関する条件を判断してもよい。この場合、プレーヤの注視点付近に位置するオブジェクト以外のオブジェクトについては、所定の条件が満たされたと判断し、第2の衝突判定処理を省略して処理負荷の低い第1の衝突応答処理を行うようにしてもよい。
【符号の説明】
【0135】
100 処理部、110 オブジェクト空間設定部、112 移動・演算処理部(移動制御部)、114 物理演算部、116 演出部、118 仮想カメラ制御部、120 画像生成部、130 音生成部、160 操作部、170 記憶部、180 情報記憶媒体、190 表示部、192、音出力部、196 通信部
【特許請求の範囲】
【請求項1】
オブジェクト空間内のオブジェクト同士の衝突判定を行う衝突判定処理と、衝突したと判定されたオブジェクトに作用する物理量を演算する衝突応答処理とを行う物理演算部と、
前記物理演算部の演算結果に基づきオブジェクトをオブジェクト空間内で移動させる制御を行う移動制御部としてコンピュータを機能させ、
前記物理演算部は、
オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、前記第1の衝突判定処理で衝突したと判定された場合に、所定の条件が満たされたか否かを判断し、前記所定の条件が満たされたと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行い、前記所定の条件が満たされていないと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
前記第1の衝突判定処理は、オブジェクトを球体で近似して衝突判定を行う処理であることを特徴とするプログラム。
【請求項3】
請求項2において、
前記物理演算部は、
前記所定の条件が満たされたと判断した場合に、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて、オブジェクトを複数の球体で近似して衝突判定を行う第3の衝突判定処理を行い、前記第3の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理、又は前記第1の衝突応答処理よりも処理負荷が高く前記第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理のいずれかを行うことを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離、又は仮想カメラとの位置関係に関する条件であることを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれかにおいて、
オブジェクトの立体視画像を生成する画像生成部として更にコンピュータを機能させ、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが、オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリアに位置するか否かに関する条件であることを特徴とするプログラム。
【請求項6】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラから見たときの画像サイズに関する条件であることを特徴とするプログラム。
【請求項7】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの透明度に関する条件であることを特徴とするプログラム。
【請求項8】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの速度に関する条件であることを特徴とするプログラム。
【請求項9】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに設定された属性に関する条件であることを特徴とするプログラム。
【請求項10】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、衝突判定処理時の処理負荷に関する条件であることを特徴とするプログラム。
【請求項11】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、オブジェクト空間内のオブジェクトの数に関する条件であることを特徴とするプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
オブジェクト同士の衝突の演出処理を行う演出部として更にコンピュータを機能させ、
前記演出部は、
前記所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行うことを特徴とするプログラム。
【請求項13】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至12のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項14】
オブジェクト空間内のオブジェクト同士の衝突判定を行う衝突判定処理と、衝突したと判定されたオブジェクトに作用する物理量を演算する衝突応答処理とを行う物理演算部と、
前記物理演算部の演算結果に基づきオブジェクトをオブジェクト空間内で移動させる制御を行う移動制御部とを含み、
前記物理演算部は、
オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、前記第1の衝突判定処理で衝突したと判定された場合に、所定の条件が満たされたか否かを判断し、前記所定の条件が満たされたと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行い、前記所定の条件が満たされていないと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行うことを特徴とするゲームシステム。
【請求項1】
オブジェクト空間内のオブジェクト同士の衝突判定を行う衝突判定処理と、衝突したと判定されたオブジェクトに作用する物理量を演算する衝突応答処理とを行う物理演算部と、
前記物理演算部の演算結果に基づきオブジェクトをオブジェクト空間内で移動させる制御を行う移動制御部としてコンピュータを機能させ、
前記物理演算部は、
オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、前記第1の衝突判定処理で衝突したと判定された場合に、所定の条件が満たされたか否かを判断し、前記所定の条件が満たされたと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行い、前記所定の条件が満たされていないと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
前記第1の衝突判定処理は、オブジェクトを球体で近似して衝突判定を行う処理であることを特徴とするプログラム。
【請求項3】
請求項2において、
前記物理演算部は、
前記所定の条件が満たされたと判断した場合に、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて、オブジェクトを複数の球体で近似して衝突判定を行う第3の衝突判定処理を行い、前記第3の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理、又は前記第1の衝突応答処理よりも処理負荷が高く前記第2の衝突応答処理よりも処理負荷の低い第3の衝突応答処理のいずれかを行うことを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラからの距離、又は仮想カメラとの位置関係に関する条件であることを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれかにおいて、
オブジェクトの立体視画像を生成する画像生成部として更にコンピュータを機能させ、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトが、オブジェクト空間内の投影面よりも仮想カメラから見て手前側のエリアに位置するか否かに関する条件であることを特徴とするプログラム。
【請求項6】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの仮想カメラから見たときの画像サイズに関する条件であることを特徴とするプログラム。
【請求項7】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの透明度に関する条件であることを特徴とするプログラム。
【請求項8】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトの速度に関する条件であることを特徴とするプログラム。
【請求項9】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、前記第1の衝突判定処理で衝突したと判定されたオブジェクトに設定された属性に関する条件であることを特徴とするプログラム。
【請求項10】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、衝突判定処理時の処理負荷に関する条件であることを特徴とするプログラム。
【請求項11】
請求項1乃至3のいずれかにおいて、
前記所定の条件は、オブジェクト空間内のオブジェクトの数に関する条件であることを特徴とするプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
オブジェクト同士の衝突の演出処理を行う演出部として更にコンピュータを機能させ、
前記演出部は、
前記所定の条件が満たされたか否かの判断結果に応じて処理負荷の異なる演出処理を行うことを特徴とするプログラム。
【請求項13】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至12のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項14】
オブジェクト空間内のオブジェクト同士の衝突判定を行う衝突判定処理と、衝突したと判定されたオブジェクトに作用する物理量を演算する衝突応答処理とを行う物理演算部と、
前記物理演算部の演算結果に基づきオブジェクトをオブジェクト空間内で移動させる制御を行う移動制御部とを含み、
前記物理演算部は、
オブジェクト空間内のオブジェクトについて第1の衝突判定処理を行い、前記第1の衝突判定処理で衝突したと判定された場合に、所定の条件が満たされたか否かを判断し、前記所定の条件が満たされたと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて第1の衝突応答処理を行い、前記所定の条件が満たされていないと判断した場合には、前記第1の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突判定処理よりも処理負荷の高い第2の衝突判定処理を行い、前記第2の衝突判定処理で衝突したと判定されたオブジェクトについて前記第1の衝突応答処理よりも処理負荷の高い第2の衝突応答処理を行うことを特徴とするゲームシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2013−30125(P2013−30125A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−167491(P2011−167491)
【出願日】平成23年7月29日(2011.7.29)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願日】平成23年7月29日(2011.7.29)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
[ Back to top ]