説明

プログラム、情報記憶媒体及び画像生成システム

【課題】簡単な制御で、第2のカメラ制御から第1のカメラ制御への切り替えを違和感なくシームレスに実現する。
【解決手段】プログラムは、移動体オブジェクト制御部と、仮想カメラ制御部と、仮想空間を仮想カメラから見た画像を生成する画像生成部とを有し、仮想カメラ制御部は、所与のイベントが発生した場合に、移動体オブジェクトに対する仮想カメラの相対的な配置の遷移として定義されたカメラ制御データ及び仮想3次元空間における移動体オブジェクトの配置に基づき第1のカメラ制御処理を行う第1のカメラ制御部と、所与のイベント発生前に行っていた仮想カメラに対する第2のカメラ制御処理を、所与のイベント発生後も継続して行う第2のカメラ制御部と、を含み、第1のカメラ制御処理によって得られた第1の設定値と第2のカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【0002】
従来から、プレーヤが入力操作を行いオブジェクト空間における機体(自機)を移動させて、敵の機体(敵機)を射撃するフライトシューティングゲームが人気が高い。
【0003】
このようなフライトシューティングゲームでは、遠方に飛行する豆粒大の敵をミサイル等で攻撃するのが主であったが、近年では高速に動き回る敵機に近接して移動しながら砲撃する近接戦闘を実現するゲームもあり、高速に動き回る敵機に近接して移動しながら砲撃するという迫力あるゲームを楽しむことができる。かかるゲームでは、戦闘に応じて様々なカメラ制御が行われ、ゲームの面白みを高めている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第4144017号公報
【特許文献2】特許第2687987号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従って、戦闘モードが切り替わるとカメラ制御も切り替えられるが、近接戦闘のイベントが発生した場合に、単に通常のカメラ制御から近接戦闘用のカメラ制御に切り替えるだけでは、プレーヤに対し近接戦闘への期待感等をアピールすることはできない。
【0006】
本願発明者は、次のイベントへの期待感を効果的なアピールが可能なカメラ演出を行うための工夫として、仮想カメラを効果的に旋回又は周遊させることでプレーヤに次のイベントへの期待感をアピールする迫力あるカメラ演出を行うことが可能なシステムの開発を行っている。
【0007】
しかしカメラ演出用のカメラ制御を行う際に、それ以前に行われていたカメラ制御から演出用のカメラ制御に切り替えると、画面変化が不自然となり、プレーヤに違和感や興ざめな感じを与えてしまうことになりかねねない。
【0008】
本発明は、かかる課題に鑑みたものである。本発明の幾つかの態様によれば、簡単な制御で、第2のカメラ制御から第1のカメラ制御への切り替えを違和感なくシームレスに実現することができる。
【課題を解決するための手段】
【0009】
(1)本発明は、
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成するためのプログラムであって、
操作入力に基づき、仮想空間における移動体オブジェクトの移動の制御を行う移動体オブジェクト制御部と、
仮想カメラの設定の制御を行う仮想カメラ制御部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、してコンピュータを機能させ、
前記仮想カメラ制御部は、
所与のイベントが発生した場合に、移動体オブジェクトに対する仮想カメラの相対的な配置の遷移として定義されたカメラ制御データ及び仮想3次元空間における移動体オブジェクトの配置に基づき第1のカメラ制御処理を行う第1のカメラ制御部と、
所与のイベント発生前に行っていた仮想カメラに対する第2のカメラ制御処理を、所与のイベント発生後も継続して行う第2のカメラ制御部と、を含み、
第1のカメラ制御処理によって得られた第1の設定値と第2のカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置することを特徴とするプログラムに関する。
【0010】
また本発明は上記各部を含む画像生成システムに関する。また本発明はコンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶した情報記憶媒体に関する。
【0011】
移動体オブジェクトはプレーヤ移動体でもよいし、NPCの移動体でもよい。仮想カメラに対するカメラ制御とは、仮想カメラの位置、向き、移動方向、移動速度、画角等の設定や制御を含む。
【0012】
カメラ制御データは、少なくとも仮想カメラの位置に関する情報を含む。それ以外にも仮想カメラの向き(回転)や画角に関する情報を含んでもよい。
【0013】
第1のカメラ制御の発動条件は、所与のイベントの発生でもよい。また第1のカメラ制御の終了条件は、所与のイベントが発生してから所定時間後でもよいし、所与のイベントの終了タイミングでもよい。
【0014】
例えば移動体オブジェクトのローカル座標系で定義されたカメラ制御データ(ローカル座標系における位置及び向き)と移動体オブジェクトのワールド座標系における配置情報(位置及び向き情報)に基づき、ワールド座標系における仮想カメラの位置(及び向き)情報を求めることができる。
【0015】
一般に、仮想カメラを動かす場合には、移動体オブジェクトと交差しないように移動させないと仮想カメラが移動体オブジェクトに埋まってしまう不具合が生じることがある。しかし本発明によれば移動体オブジェクトに対する相対的な位置(移動体オブジェクトのローカル座標系の位置)で定義された移動ルートにしたがって仮想カメラを移動させることができる、カメラ位置と移動体オブジェクトの交差判定等の複雑な制御を行うことなしにカメラ演出を行うことができる。
【0016】
そして、所与のイベント発生前に行っていた仮想カメラに対する第2のカメラ制御処理を、所与のイベント発生後も継続して行い、第1のカメラ制御処理によって得られた第1の設定値と第2のカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置するので、第2のカメラ制御から第1のカメラ制御への切り替えを違和感なくシームレスに実現することができる。
【0017】
(2)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記仮想カメラ制御部は、
時間の経過に従って合成比率を変化させて第1の設定値と第2の設定値を合成してもよい。
【0018】
合成比率は線形に変化させてもよいし、所与の関数に従って変化させてもよい。
【0019】
時間の経過に従って、第1のカメラ設定値の割合が大きくなるようにしてもよい。この様にすると、時刻fnから時刻fn+mの期間において、時間の経過につれて第1のカメラ制御の影響が高くなるカメラ制御を行うことができる。
【0020】
(3)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記カメラ制御データは、前記移動体オブジェクトのローカル座標系における、移動体オブジェクトの周囲を旋回する軌道が移動ルートとして定義されており、
前記第1のカメラ制御部は、
前記カメラ制御データに基づき、仮想カメラを前記移動ルートにしたがって移動体オブジェクトの周囲を旋回又は周遊させる処理を行ってもよい。
【0021】
カメラ制御データは、例えば移動体オブジェクトのローカル座標系における仮想カメラの位置座標や、向き(回転)や画角等の情報を含んでもよい。位置座標は移動ルートとなる軌道上の座標でもよい。また向きは、移動体オブジェクトと、所与のイベントに関連する他の移動体オブジェクトの両方を画面内にとらえる方向に定義されていてもよい。
【0022】
移動ルートとなる軌道は、移動体オブジェクトと交差しないように設定されていることが好ましい。
【0023】
(4)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記カメラ制御データは、軌道の異なる複数の移動ルートに対応したデータを含み、
前記第1のカメラ制御部は、
前記移動体オブジェクトの位置、向き、前記移動体オブジェクトと他の移動体オブジェクトの相対的な位置関係、距離、移動体オブジェクトの属性、イベントの種類、所定のゲームパラメータの値の少なくとも1つに基づき、いずれかの移動ルートに対応したカメラ制御データを選択して、選択したカメラ制御データを用いて第1のカメラ制御処理を行ってもよい。
【0024】
前記移動体オブジェクトの高度が低い場合や、障害物の多いエリアにいる場合には、移動体オブジェクトから所定範囲内に移動ルートが設定されているカメラ制御データを選択するようにしてもよい。
【0025】
また、他の移動体オブジェクト(敵機)の位置、他の移動体オブジェクト(敵機)の種類、他の移動体オブジェクト(敵機)の相対的な方向、ゲーム上与えられたミッションの種類等に基づき移動ルートを選択してもよい。
【0026】
(5)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記第2のカメラ制御部は、
移動体オブジェクトに対する仮想カメラの相対的な配置の遷移が定義されたカメラ制御データ及び仮想空間における移動体オブジェクトの配置に基づき第2のカメラ制御処理を行ってもよい。
【0027】
(6)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記第1のカメラ制御部は、
前記移動ルート上の所与の点を再生開始位置及び再生終了位置の少なくとも1つとして設定し、設定された再生開始位置及び再生終了位置の少なくとも1つによって特定される移動区間において、仮想カメラを移動させる処理を行ってもよい。
【0028】
移動経路上の位置とセットで向き(回転)を定義してもよい。この場合再生開始位置から再生終了位置まで移動経路上の位置とセットで定義されている回転の値の設定も行う。
【0029】
例えば前記第1のカメラ制御部は、所与のイベント発生前の移動体オブジェクトに対する仮想カメラの相対位置に基づき、前記移動経路の再生開始位置を決定してもよい。
【0030】
前記移動経路は、所与のイベント発生前に仮想カメラがとりうる所与の基準位置に対応する点を含んでもよい。
【0031】
例えば移動経路の始点位置が第1のカメラ制御が行われる際の移動体オブジェクトに対する仮想カメラの相対位置に対応する位置となるようにしてもよい。この様にすると、第1のカメラ制御をスムーズに開始することができる。
【0032】
(7)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記第1のカメラ制御部は、
前記移動体オブジェクトと他の移動体オブジェクトとの距離、位置関係、操作入力及び所与のパラメータの少なくとも1つに基づき開始位置を再設定して、仮想カメラを移動経路上で移動させる制御を行ってもよい。
【0033】
ここにおいて他の移動体オブジェクトとは、例えば当該移動体オブジェクトの追従目標である第2の移動体オブジェクトでもよい。 操作入力とは、移動方向に関する操作入力でもよいし、加速や減速を指示する操作入力でもよいし、その他の操作入力でもよい。
【0034】
また例えばt0からt1の間は軌道を順方向に移動するデータを設定し、t1〜k2の間は軌道を逆方向に移動するデータを設定しておき、操作入力の内容に基づき再生開始位置をt0又はt1と変化させることにより、カメラ制御データによるカメラ制御に操作入力を反映させることができる。
【0035】
(8)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記第2のカメラ制御部は、
前記移動ルート上の所与の点を再生開始位置及び再生終了位置の少なくとも1つとして設定し、設定された再生開始位置及び再生終了位置の少なくとも1つによって特定される移動区間において、仮想カメラを移動させる処理を行ってもよい。
【0036】
移動経路上の位置とセットで向き(回転)を定義してもよい。この場合再生開始位置から再生終了位置まで移動経路上の位置とセットで定義されている回転の値の設定も行う。
【0037】
(9)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記第2のカメラ制御部は、
前記移動体オブジェクトと他の移動体オブジェクトとの距離、位置関係、操作入力及び所与のパラメータの少なくとも1つに基づき開始位置を再設定して、仮想カメラを移動経路上で移動させてもよい。
【0038】
ここにおいて他の移動体オブジェクトとは、例えば当該移動体オブジェクトの追従目標である第2の移動体オブジェクトでもよい。 操作入力とは、移動方向に関する操作入力でもよいし、加速や減速を指示する操作入力でもよいし、その他の操作入力でもよい。
【0039】
また例えばt0からt1の間は軌道を順方向に移動するデータを設定し、t1〜k2の間は軌道を逆方向に移動するデータを設定しておき、操作入力の内容に基づき再生開始位置をt0又はt1と変化させることにより、カメラ制御データによるカメラ制御に操作入力を反映させることができる。
【0040】
(10)このプログラム、情報記憶媒体、画像生成システムにおいて、
前記第1のカメラ制御部は、
第1のカメラ制御処理開始前の前記移動体オブジェクトのローカル座標系における仮想カメラの位置から前記カメラ制御データに規定された前記移動体オブジェクトのローカル座標系における所与の基準位置まで移動させる移行処理を行ってもよい。
【0041】
そして、仮想カメラ制御部は、
前記移行処理(仮想カメラが所与の基準位置にくるまで)が行われている間は、当該移行処理によって得られた第1の設定値と第2のカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置してもよい。
【図面の簡単な説明】
【0042】
【図1】本実施形態のゲームシステムの機能ブロック図の例。
【図2】図2(A)(B)は、移動体オブジェクトと敵の移動体オブジェクトの位置関係を示す図。
【図3】通常戦闘モードから近接戦闘モードへの切り替え時に行われるカメラ制御の様子を示すタイムチャート。
【図4】図4(A)(B)は、第1の設定値と第2の設定値の合成比率の時間的な変化を示すグラフ。
【図5】カメラ制御データについて説明する図。
【図6】カメラ制御データについて説明する図。
【図7】第1の設定値と第2の設定値の合成処理(ブレンド処理)について説明するための図。
【図8】合成ルートと移動体オブジェクトの位置に基づき、仮想カメラの配置を求める手法について説明するための図。
【図9】モード移行カメラ制御によって生成される画像例を説明するための図。
【図10】、図10(A)〜(D)は、モード移行カメラ制御によって生成される画像例を説明するための図。
【図11】複数の移動ルートが設定されている例を示す図。
【図12】カメラ制御データの再生開始位置、終了位置の設定について説明するための図。
【図13】図13(A)(B)は、通常戦闘モードのカメラ制御に操作入力を反映させる例について説明するための図。
【図14】図14(A)(B)は、通常戦闘モードのカメラ制御に操作入力を反映させる他の例について説明するための図。
【図15】第1の設定値と第2の設定値の合成の一例について説明するための図。
【図16】本実施の形態のカメラ制御処理の流れを示すフローチャート。
【図17】移行処理について説明するための図。
【図18】移行処理について説明するための図。
【発明を実施するための形態】
【0043】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0044】
1.構成
図1は、本実施形態のゲームシステムの機能ブロック図の一例である。なお本実施形態のゲームシステムでは、図1の各部を全て含む必要はなく、その一部を省略した構成としてもよい。
【0045】
本実施形態のゲームシステムは、本体装置10と、入力装置20と、情報記憶媒体180、表示部(表示装置)190、スピーカー192、光源198とからなる。
【0046】
入力装置20は、加速度センサ210、撮像部220、スピーカー230、振動部240、マイコン250、通信部260、操作部270によって構成される。
【0047】
加速度センサ210は、3軸(X軸、Y軸、Z軸)の加速度を検出する。すなわち、加速度センサ210は、上下方向、左右方向、及び、前後方向の加速度を検出することができる。なお、加速度センサ210は、5msec毎に加速度を検出し、加速度センサ210から検出された加速度は、通信部260によって本体装置10に送信される。なお、加速度センサ210は、1軸、2軸、6軸の加速度を検出するものであってもよい。
【0048】
撮像部220は、赤外線フィルタ222、レンズ224、撮像素子(イメージセンサ)226、画像処理回路228を含む。赤外線フィルタ222は、入力装置20の前方に配置され、表示部190に関連付けられて配置されている光源198から入射する光から赤外線のみを通過させる。レンズ224は、赤外線フィルタ222を透過した赤外線を集光して撮像素子226へ出射する。撮像素子226は、例えば、CMOSセンサやCCDのような固体撮像素子であり、レンズ224が集光した赤外線を撮像して撮像画像を生成する。撮像素子226で生成された撮像画像は、画像処理回路228で処理される。例えば、撮像素子226から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報(特定位置)を検出する。なお、光源が複数存在する場合には、撮像画像上の位置情報を複数検出する。また、複数の光源を利用して撮像画像上の位置情報を複数検出し、検出された位置情報の基準軸からの回転角度(傾き)を求め、光源に対する入力装置20自体の傾きを求めてもよい。なお、検出した撮像画像上の位置情報は、通信部260によって、本体装置10に送信される。
【0049】
スピーカー230は、本体装置10から通信部260を介して取得した音を出力する。
【0050】
振動部(バイブレータ)240は、本体装置10から送信された振動信号を受信して、振動信号に基づいて作動する。
【0051】
マイコン(マイクロコンピュータ)250は、操作部270が出力した入力信号、加速度センサ210が検出した加速度を通信部260を介して本体装置10に送信させる処理を行ったり、撮像部220によって検出された位置情報を、通信部260を介して本体装置10に送信させる処理を行う。また、受信した本体装置10からのデータに応じて、音を出力する制御や、バイブレータを作動させる制御を行う。
【0052】
通信部260は、アンテナ、無線モジュールを含み、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、本体装置10とデータを無線で送信受信する。なお、本実施形態の通信部260は、加速度センサ210によって検出された加速度や撮像部220において検出した位置情報等を、4msec、6msecの交互の間隔で本体装置10に送信している。なお、通信部260は、本体装置10と通信ケーブルで接続し、当該通信ケーブルを介して情報の送受信を行うようにしてもよい。
【0053】
操作部270は、方向キー(十字キー)、ボタン(Aボタン、Bボタンなど)、方向入力可能なコントロールスティック(アナログキー)などの操作子であり、プレーヤからの入力操作によって入力信号を出力する処理を行う。なお、操作信号は、通信部260を介して本体装置10に送信される。
【0054】
なお、入力装置20は、プレーヤの入力動作によって変化する角速度を検出するジャイロセンサを備えていてもよい。
【0055】
また、入力装置20は、加圧センサを備えていてもよい。加圧センサは、プレーヤの入力動作によって発生する圧力を検出する。例えば、プレーヤの体重や、プレーヤが力を加えることによる圧力を検出することができる。また、入力装置20に加圧センサを複数備えることによって、複数の圧力センサそれぞれの圧力値を検出してもよい。
【0056】
本実施形態の入力装置20は、入力装置20と一体化されている本体装置10(ゲーム装置、携帯型ゲーム装置)、携帯電話なども含まれる。
【0057】
次に、本実施形態の本体装置10について説明する。本実施形態の本体装置10は、記憶部170、処理部100、通信部196によって構成される。
【0058】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などのハードウェアにより実現できる。
【0059】
特に、本実施形態の記憶部170は、主記憶部172、描画バッファ174を含む。主記憶部172は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などのハードウェアにより実現できる。また、描画バッファ174は、描画部120において生成された画像を記憶する。
【0060】
そして処理部100は、この情報記憶媒体180に格納されるプログラム(データ)から読み出されたデータに基づいて本実施形態の種々の処理を行う。即ち、情報記録媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。なお情報記憶媒体180は、メモリカードに、プレーヤの個人データやゲームのセーブデータなどを記憶するものも含む。
【0061】
通信部196は、ネットワーク(インターネット)を介して他の本体装置10(ゲーム装置)と通信することができる。その機能は、各種プロセッサ又は通信用ASIC、ネットワーク・インタフェース・カードなどのハードウェアや、プログラムなどにより実現できる。また、通信部196は、有線、無線いずれの通信も行うことができる。
【0062】
また、通信部196は、アンテナ、無線モジュールを含み、Bluetooth(ブルートゥース;登録商標)の技術を用いて、入力装置20の通信部260を介して、入力装置20とデータを送受信する。例えば、通信部196は、音データ、及び、振動信号を、入力装置20に送信し、入力装置20において、操作部270が出力した入力信号、加速度センサ210が検出した加速度、撮像部220によって検出された情報を、4msec、6msecの交互の間隔で受信する。
【0063】
なお、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバが有する、記憶部、情報記憶媒体からネットワークを介して情報記憶媒体180(または、記憶部170)に配信するようにしてもよい。このようなサーバの情報記憶媒体の使用も本発明の範囲に含まれる。
【0064】
処理部100(プロセッサ)は、入力装置20から受信した情報や情報記憶媒体180から記憶部170に展開されたプログラム等に基づいて、ゲーム演算処理、画像生成処理、或いは音制御の処理を行う。
【0065】
特に本実施形態の処理部100は、オブジェクト空間設定部110、移動・動作処理部150、ゲーム演算部112、表示制御部114、仮想カメラ制御部115、描画部120、音制御部130、振動制御部140とを含む。
【0066】
オブジェクト空間設定部110は、オブジェクト(移動体、ターゲット、自機、敵機、弾)の他に、キャラクタ、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義であり、例えば、ワールド座標系でのX、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0067】
移動・動作処理部150は、オブジェクトの移動・動作演算を行う。すなわち入力装置20によりプレーヤが入力した入力情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求める処理を行う。なおフレームは、オブジェクトの移動・動作処理や画像生成処理を行う時間の単位である。
【0068】
ゲーム演算部112は、種々のゲーム演算処理を行う。例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲームステージ毎のクリア条件を満たすか否かを判定する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理、最終ステージをクリアした場合にはエンディングを進行させる処理などを行う。
【0069】
特に、本実施形態のゲーム演算部112は、プレーヤからの射撃用の入力情報に基づいて移動体から弾を発射させ、発射させた弾がターゲットに命中したか否かを判断し、判断結果に基づきゲーム演算を行う。本実施形態では、射撃用の入力情報は、操作部270の第2の入力信号(例えば、Bボタンによる入力信号)としている。なお、命中したか否かの判断処理は、予め定められた弾のヒット領域と、予め定められたターゲットのヒット領域とのヒットチェックを行うことによって、命中したか否かを判断している。
【0070】
表示制御部114は、視界画像を表示させると共に、視界画像とは異なる表示領域に、移動体の位置、エリアの関係を簡略化して示した画像(レーダーマップ)を表示させる処理を行う。
【0071】
仮想カメラ制御部115は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、ワールド座標系における仮想カメラの位置(X、Y、Z)又は回転角度(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を制御する処理を行う。
【0072】
特に本実施形態の仮想カメラ制御部115は、移動体の移動ルートに基づいて、仮想カメラの位置、向き、画角の少なくとも1つを制御する処理を行う。
【0073】
仮想カメラ制御部115は、所与のイベントが発生した場合に、移動体オブジェクトに対する仮想カメラの相対的な配置の遷移として定義されたカメラ制御データ及び仮想3次元空間における移動体オブジェクトの配置に基づき第1のカメラ制御処理を行う第1のカメラ制御部116と、所与のイベント発生前に行っていた仮想カメラに対する第2のカメラ制御処理を、所与のイベント発生後も継続して行う第2のカメラ制御部117と、を含み、第1のカメラ制御処理によって得られた第1の設定値と第2のカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置する。
【0074】
また仮想カメラ制御部115は、時間の経過に従って合成比率(ブレンド比率)を変化させて第1の設定値と第2の設定値を合成(ブレンド)してもよい。
【0075】
またカメラ制御データは、前記移動体オブジェクトのローカル座標系における、移動体オブジェクトの周囲を旋回する軌道が移動ルートとして定義されており、第1のカメラ制御部116は、前記カメラ制御データに基づき、仮想カメラを前記移動ルートにしたがって移動体オブジェクトの周囲を旋回又は周遊させる処理を行ってもよい。
【0076】
またカメラ制御データは、軌道の異なる複数の移動ルートに対応したデータを含み、第1のカメラ制御部116は、前記移動体オブジェクトの位置、向き、前記移動体オブジェクトと他の移動体オブジェクトの相対的な位置関係、距離、移動体オブジェクトの属性、イベントの種類、所定のゲームパラメータの値の少なくとも1つに基づき、いずれかの移動ルートに対応したカメラ制御データを選択して、選択したカメラ制御データを用いて第1のカメラ制御処理を行ってもよい。
【0077】
また第2のカメラ制御部117は、移動体オブジェクトに対する仮想カメラの相対的な配置の遷移が定義されたカメラ制御データ及び仮想空間における移動体オブジェクトの配置に基づき第2のカメラ制御処理を行ってもよい。
【0078】
また第1のカメラ制御部116は、前記移動ルート上の所与の点を再生開始位置及び再生終了位置の少なくとも1つとして設定し、設定された再生開始位置及び再生終了位置の少なくとも1つによって特定される移動区間において、仮想カメラを移動させる処理を行ってもよい。
【0079】
また第1のカメラ制御部116は、前記移動体オブジェクトと他の移動体オブジェクトとの距離、位置関係、操作入力及び所与のパラメータの少なくとも1つに基づき開始位置を再設定して、仮想カメラを移動経路上で移動させてもよい。
【0080】
また第2のカメラ制御部117は、前記移動ルート上の所与の点を再生開始位置及び再生終了位置の少なくとも1つとして設定し、設定された再生開始位置及び再生終了位置の少なくとも1つによって特定される移動区間において、仮想カメラを移動させる処理を行ってもよい。
【0081】
また第2のカメラ制御部117は、前記移動体オブジェクトと他の移動体オブジェクトとの距離、位置関係、操作入力及び所与のパラメータの少なくとも1つに基づき開始位置を再設定して、仮想カメラを移動経路上で移動させる制御を行ってもよい。
【0082】
また記第1のカメラ制御部116は、第1のカメラ制御処理開始前の前記移動体オブジェクトのローカル座標系における仮想カメラの位置から前記カメラ制御データに規定された前記移動体オブジェクトのローカル座標系における所与の基準位置まで移動させる移行処理を行ってもよい。
【0083】
描画部120は、処理部100で行われる種々の処理(ゲーム演算処理)の結果に基づいて描画処理を行い、これにより画像(視界画像、レーダーマップなど)を生成し、表示部190に出力する。
【0084】
いわゆる3次元ゲーム画像を生成する場合には、まず表示物(オブジェクト、モデル)を定義する各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含む表示物データ(オブジェクトデータ、モデルデータ)が入力され、入力された表示物データに含まれる頂点データに基づいて、頂点処理が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、あるいは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、表示物を構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(フラグメント処理)が行われる。ピクセル処理では、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内に設定された仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0085】
なお描画部120が行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現されてもよい。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、ハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0086】
そして描画部120は、表示物を描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0087】
ジオメトリ処理では、表示物に関して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)の表示物データ(表示物の頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、主記憶部172に保存される。
【0088】
テクスチャマッピングは、記憶部170に記憶されるテクスチャ(テクセル値)を表示物にマッピングするための処理である。具体的には、表示物の頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャを表示物にマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0089】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに格納されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0090】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。例えば、通常αブレンディングでは、α値を合成の強さとして線形補間を行うことにより2つの色を合成した色を求める処理を行う。
【0091】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えばRGBの各色成分の輝度を表す色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0092】
音制御部130は、処理部100で行われる種々の処理(ゲーム演算処理等)の結果に基づいて記憶部170に記憶されている音を、入力装置20のスピーカー230及びスピーカー192の少なくとも一方から出力させる処理を行う。
【0093】
振動制御部140は、処理部100で行われる種々の処理(ゲーム演算処理等)の結果に基づいて、通信部196、通信部260を介して、入力装置20の振動部240を振動させる処理を行う。
【0094】
なお、本実施形態のゲームシステムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【0095】
また複数のプレーヤがプレイする場合に、複数のプレーヤそれぞれの入力装置20から送信された情報(加速度センサ210が検出した加速度、操作部270が出力した入力信号等)に基づいて、1つの本体装置10がゲーム演算、画像生成処理を行い、生成した画像を表示部に表示させるように制御してもよい。
【0096】
また、複数のプレーヤそれぞれの本体装置10がネットワーク(伝送ライン、通信回線)を介して接続され、複数の本体装置10それぞれが、入力装置20から送信された情報に基づいて、ゲーム演算、画像生成処理を行い、生成した画像を表示部に表示させるように制御してもよい。
【0097】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などのハードウェアにより実現できる。
【0098】
表示部190は、処理部100により生成された画像を出力するものであり、その機能は、CRTディスプレイ、LCD(液晶ディスプレイ)、OELD有機ELディスプレイ、PDP(プラズマディスプレイパネル)、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などのハードウェアにより実現できる。
【0099】
スピーカー192は、音制御部130により再生する音を出力するものであり、その機能は、スピーカー、或いはヘッドフォンなどのハードウェアにより実現できる。なお、スピーカー192は、表示部に備えられたスピーカーとしてもよい。例えば、テレビ(家庭用テレビジョン受像機)を表示部としている場合には、テレビのスピーカーとすることができる。
【0100】
光源198は、例えばLEDであり、表示部190に関連付けられて配置される。なお、本実施形態は、複数の光源(光源Rと光源L)とを備え、光源Rと光源Lとの距離は所定間隔を有するように設置されている。
【0101】
2.モード移行カメラ制御(第1のカメラ制御の一例)
ここでは、フライトシューティングゲームにおいて、プレーヤ移動体(移動体オブジェクトの一例)が、通常戦闘モードから、高速に動き回る敵機に近接して移動しながら砲撃する近接戦闘モードに移行する際のモード移行カメラ制御(第1のカメラ制御の一例)を例にとり説明する。
【0102】
本実施の形態のフライトシューティングゲームでは、プレーヤからの入力情報に基づいてプレーヤ移動体(例えば戦闘機等)が仮想3次元空間(オブジェクト空間)を動き回り、プレーヤ移動体に装備された機関銃(機関砲)などを用いて、仮想3次元空間を動き回るターゲット移動体(例えば敵の戦闘機等)を攻撃(撃墜、撃破)させることができる。
【0103】
本実施の形態では、通常戦闘モードや近接戦闘モード、各種モードや各種イベントなどがあり、モードやイベントに応じたカメラの制御を行って仮想カメラを仮想3次元空間に配置している。通常戦闘モードでは、1人称視点や3人称視点のカメラ制御が行われる。
【0104】
近接戦闘モードになると、プレーヤ移動体をターゲット移動体に追従させる追従制御が行われ、ターゲット移動体の過去の移動軌跡に基づき、プレーヤ移動体をターゲット移動体に追従させる。近接戦闘モードでは、近接戦闘中の複数の戦闘機がうまく画面内に収まるようなカメラ制御が行われる。
【0105】
モード移行カメラ制御は、通常戦闘モードから近接戦闘モード移行する際に行われる制御である。
【0106】
図2(A)(B)は、通常戦闘モード時、近接戦闘モード開始時の仮想3次元空間(ワールド座標系)におけるプレーヤの移動体オブジェクトと敵の移動体オブジェクトの位置関係を示している。通常戦闘モードは、遠方に飛行する敵の移動体オブジェクト308をミサイル等で攻撃するのが主であるため、図2(A)に示すようにプレーヤの移動体オブジェクト310と、敵の移動体オブジェクト308とは、所定の距離(L1)以上離れた位置にある。ところが高速に動き回る敵機に近接して移動しながら砲撃する近接戦闘モードでは、図2(B)に示すようにプレーヤの移動体オブジェクト310と、敵の移動体オブジェクト308とは、所定の距離(L1)以内に存在するように制御される。近接戦闘モードへの切り替えはプレーヤの操作入力等によって行われる。
【0107】
プレーヤの操作入力等のイベントが発生して通常戦闘モードから近接戦闘モードに切り替わる場合、図2(B)に示すように、プレーヤの移動体オブジェクト310は現在位置304から近接戦闘モードにおけるプレーヤ移動体の基準位置306まで、所定時間(例えばm秒)かけて自動的に移動させられる。ここにおいて近接戦闘モードにおけるプレーヤ移動体の基準位置306とは、例えば敵の移動体オブジェクトから所定の距離(L1)以内にある位置でもよい。
【0108】
本実施の形態では、通常戦闘モードから近接戦闘モードへの切り替えの際に、プレーヤに対し近接戦闘への期待感をアピールするような演出効果の高いカメラ制御として、モード移行カメラ制御を行っている。
【0109】
図3は、通常戦闘モードから近接戦闘モードへの切り替え時に行われるカメラ制御の様子を示すタイムチャートである。
【0110】
本実施の形態では複数のカメラ制御が平行して行われている。
【0111】
452は通常戦闘モードのカメラ制御(第2のカメラ制御の一例)450が行われている期間を示し、462はモード移行カメラ制御(第1のカメラ制御の一例)460が行われている期間を示し、472は近接戦闘モードのカメラ制御470が行われている期間を示している。
【0112】
時刻f0から通常戦闘モードのカメラ制御450が行われており、時刻fnまでは、他のカメラ制御が平行して行われていないので、仮想カメラには、通常戦闘モードのカメラ制御処理によって得られた第2の設定値(位置、向き、画角等)が設定される。
【0113】
時刻fnで近接戦闘開始の操作入力が行われると、モード移行カメラ制御(第1のカメラ制御の一例)が始まる。モード移行カメラ制御がm秒間、行われる。この間は図2(A)(B)に示すように、プレーヤの移動体オブジェクト310は、仮想3次元空間(ワールド座標系)において現在位置304から近接戦闘モードにおけるプレーヤ移動体の基準位置306に、自動的に移動させられる。
【0114】
そしてモード移行カメラ制御が開始されてからm秒後のプレーヤ時刻fn+mにモード移行カメラ制御が終了し、時刻fn+m以降は、近接戦闘モードのカメラ制御が行われる。
【0115】
本実施の形態では、時刻fnから時刻fn+mの間モード移行カメラ制御が行われる間)は、モード移行カメラ制御と通常戦闘モードのカメラ制御が平行して行われ、モード移行カメラ制御処理によって得られた第1の設定値と通常戦闘モードのカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置している。時刻fnから時刻fn+mの間は、第1の設定値と第2の設定値を時間的に変化する合成比率で合成して時刻fnから時刻fn+mの間の仮想カメラの設定値を求めてもよい。
【0116】
なお上記実施例では、移行カメラ制御(第1のカメラ制御の一例)460が行われている期間462と近接戦闘モードのカメラ制御(第3のカメラ制御)470が行われている期間472が重複していない場合を例にとり説明したが、両期間が重複している場合にも適用可能である。この様な場合には、モード移行カメラ制御処理によって得られた第1の設定値と近接戦闘モードのカメラ制御処理によって得られた第3の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置してもよい。
【0117】
この様に本実施の形態では、複数のカメラ制御によって得られた設定値のブレンドを行うことで、特殊なカメラ挙動にシームレスに移行することができる。
【0118】
図4(A)(B)は、第1の設定値と第2の設定値の合成比率の時間的な変化を示すグラフである。横軸は時間で、縦軸は合成比率を示している。モード移行カメラ制御(第1のカメラ制御の一例)はm秒間分の仮想カメラの挙動を定義するデータとして定義されているので、モード移行カメラ制御が開始されてからm秒後までの合成比率を示すグラフ490、492となっている。図4(A)(B)に示すように、合成比率は時間的に変化する。
【0119】
図4(A)では、時間の経過につれて第1の設定値の割合が0パーセントから100パーセントまで線形関数にしたがって増加し、図4(B)では、時間の経過につれて第1の設定値の割合が0パーセントから100パーセントまで所与の関数にしたがって増加する。
【0120】
いずれもモード移行カメラ制御が開始されてからm秒後に第1の設定値の割合が最大となっている。この様にすると、時刻fnから時刻fn+mの期間において、時間の経過につれてモード移行カメラ制御の影響が大きくなるカメラ制御を行うことができる。
【0121】
3.カメラ制御データ
次にモード移行カメラ制御(第1のカメラ制御の一例)に使用されるカメラ制御データを例にとり、カメラ制御データについて説明する。
【0122】
図5、図6は、カメラ制御データについて説明する図である。
【0123】
カメラ制御データ350は、所定期間(t0〜tn)分の仮想カメラの挙動(位置、向き(回転)、画角等)を示すデータであり、所定期間分(t0〜tn)の仮想カメラの位置360、向き370、画角380のなくとも1つの遷移を示すデータを含む。なおこれらすべての遷移を示すデータを含んでもよい。またその他、例えば仮想カメラの被写界深度等のパラメータを含んでもよい。
【0124】
仮想カメラの位置360、向き370は、図6に示すように移動体オブジェクト310の代表点を原点とし、移動体オブジェクト310の向きを所定の軸方向(ここではZ軸方向lz)とするローカル座標系300における位置(ローカル座標系における位置座標)、向きで与えられる。
【0125】
図5の軌道320は、ローカル座標系300における仮想カメラの移動ルートを示している。移動ルート320は、始点322から軌道に沿って折り返し点323まで移動し、折り返し点323から軌道に沿って始点322と同位置に設定された終点324まで移動するような移動ルート(移動体オブジェクト310の周囲を旋回又は周遊する軌道が移動ルート)として定義されている。
【0126】
また移動ルート(軌道)320は、移動体オブジェクトのモデルの形状に応じて設定する。すなわちローカル座標系の原点に移動体オブジェクト310を配置した状態で、移動ルート(軌道)320が移動体オブジェクト310と交差しないように設定する。このようにすると仮想カメラの移動ルートと移動体オブジェクト310の交差判定等の複雑な制御を行うことなしに、効果的なカメラ制御を行うことができる。
【0127】
仮想カメラは、時刻t0の位置VK−t0を始点とし、時刻tnの位置を終点VK−tnとして、所定期間(t0〜tn)かけて軌道320を往復する移動を行う。カメラ制御データは、軌道320を時間の関数で表したものでもよいし、図6の位置360のように、時刻t0、t1、・・に対応する位置の座標値を離散的に定義したものでもよい。
【0128】
向き(回転)を示す制御データは、向き(回転)値を時間の関数で表したものでもよいし、図6に示すカメラ制御データ350の向き(回転)370のように、時刻t0、t1、・・における向き(回転)を離散的に定義したものでもよい。
【0129】
画角を示す制御データは、画角値を時間の関数で表したものでもよいし、図6に示すカメラ制御データ350の画角380のように、時刻t0、t1、・・における画角を離散的に定義したものでもよい。
【0130】
なお位置や向きや画角が所定期間(t0〜tn)の間変化しない場合には、その期間について1つの不変値のみ定義しておいてもよい。
【0131】
4.カメラ設定値の演算
次にモード移行カメラ制御(第1のカメラ制御の一例)処理によって得られた第1の設定値と、通常戦闘モードのカメラ制御(第2のカメラ制御の一例)処理によって得られた第2の設定値を合成しての仮想カメラの配置位置を求める演算手法について説明する。
【0132】
図7は、第1の設定値と第2の設定値の合成処理(ブレンド処理)について説明するための図である。
【0133】
ここでは通常戦闘モードのカメラ制御が、予め用意されたカメラ制御データ及び仮想3次元空間における移動体オブジェクトの配置データ(位置及び向きの少なくとも一方)に基づき行われる場合を例にとり説明する。
【0134】
320−1はモード移行カメラ制御用のカメラ制御データの示す移動体オブジェクト310のローカル座標系300における移動ルートを示しており、320−2は通常戦闘モードのカメラ制御用のカメラ制御データの示す移動体オブジェクト310のローカル座標系300における移動ルートを示している。
【0135】
320−3は、移動ルート320−1と移動ルート320−2を、ローカル座標系300において時間的に変化する合成比率で合成したローカル座標系における移動ルート(合成ルートと呼ぶ)である。
【0136】
図8は、合成ルートと移動体オブジェクトの位置に基づき、ワールド座標系における仮想カメラの配置(第1の設定値)を求める手法について説明するための図である。
【0137】
WP−t0、WP−t1、・・・、WP−tnは、移動体オブジェクト310のワールド座標系(仮想3次元空間)における時刻t0、t1、・・・tnの位置を示しており、各位置WP−t0、WP−t1、・・・、WP−tnにおけるワールド座標系における位置座標値は(WX0、WY0、WZ0)、(WX1、WY1、WZ1)、・・・(WXn、WYn、WZn)である。この様な場合、時刻t0、t1、・・・tnにおけるワールド座標系における仮想カメラの位置WVK−t0、WVK−t1、・・・、WVK−tnの位置座標値(X'0、Y'0、Z'0)、(X'1、Y'1、Z'1)、・・・(X'n、Y'n、Z'n)は、時刻t0、t1、・・・tnにおけるプレーヤ移動体の位置座標値(WX0、WY0、WZ0)、(WX1、WY1、WZ1)、・・・(WXn、WYn、WZn)と、時刻t0、t1、・・・tnにおけるローカル座標系の合成ルート320−3上の仮想カメラの位置座標値(LX0、LY0、LZ0)、(LX1、LY1、LZ1)、・・・(LXn、LYn、LZn)との和により求めることができる。
【0138】
すなわち時刻tiにおけるローカル座標系における合成ルート320−3の座標値(LWi、LYi、LZi)(i=0,1,2,・・n)と移動体オブジェクトのワールド座標系における座標値(WXi、WYi、WZi)(i=0、1,2,・・n)とを加算することにより、所定の期間(t0〜tn)のワールド座標系における仮想カメラの座標値を求めることができる。
【0139】
この様に第1の設定値と第2の設定値を合成する場合には、モード移行カメラ制御によるローカル座標系300における移動ルート320−1と、通常戦闘モードのカメラ制御によるローカル座標系300におけるルート320−2とをローカル座標系300において合成して合成ルート320−3を求めてから、ワールド座標系の値に変換するようにしてもよい。
【0140】
5.モード移行カメラ制御のカメラ演出例
次にモード移行カメラ制御(第1のカメラ制御の一例)の場合を例にとり、第1のカメラ制御処理のカメラ演出の具体例について説明する。
【0141】
図9、図10(A)〜(D)は、モード移行カメラ制御によって生成される画像例を説明するための図である。モード移行カメラ制御では、仮想カメラは図9に示す移動体オブジェクト310のローカル座標系300における移動ルート320に従って移動する。図9の340−0、340−1、340−2、340−3に仮想カメラが配置された場合に生成される視点画像が図8(A)、図8(B)、図8(C)、図8(D)である。この様にモード移行カメラ制御では仮想カメラが、プレーヤ移動体の周囲を旋回又周遊してプレーヤ移動体を効果的なアングルで映し出すカメラ演出が行われる。
【0142】
6.移動ルート
次にモード移行カメラ制御(第1のカメラ制御の一例)において、複数の移動ルートから1の移動ルートを選択して処理を行う場合について説明する。
【0143】
図11は、複数の移動ルートが設定されている例を示している。
【0144】
同図に示すように、移動体オブジェクト310に対して、軌道の異なる複数の移動ルート380−1、380−2、380−3を設定して、各移動ルートに対応するカメラ制御データを用意しておいてもよい。
【0145】
そして動体オブジェクト310の位置、向き、前記移動体オブジェクトと他の移動体オブジェクト(近接戦闘モードを行う敵の移動体オブジェクトでもよい)との相対的な位置関係、距離、移動体オブジェクトの属性、イベントの種類、所定のゲームパラメータの値に基づき、いずれかの移動ルートに対応したカメラ制御データを選択してもよい。
【0146】
この様にすると様々なバリエーションでモード移行カメラ制御の演出を行うことができる。
【0147】
選択はランダムに行ってもよいし、所定のアルゴリズムで選択してもよい。移動体オブジェクトの仮想3次元空間における現在位置や向きと、選択するルートの対応関係を予めさだめておいてもよい。例えば移動体オブジェクトの飛行中のエリアが障害物の多いエリアである場合には、380−2のように大回りしないルートを選択してもよい。また移動体オブジェクト高度(Y座標値)が低い時は、移動体オブジェクトの周囲に地形や建造物等の障害物が多い可能性が高いので、高度に応じてルートを選択してもよい。高度が低い場合には、移動体オブジェクトから所定範囲内にルートが設定されているカメラ制御データを選択するようにしてもよい。
【0148】
この様にすると移動中の仮想カメラが障害物にぶつかってしまうような不具合を回避することができる。また移動体オブジェクトの属性によって選択するルートを決定してもよい。また他の移動体オブジェクトが近くにいる場合には、他の移動体オブジェクトの位置関係を考慮して、他の移動体オブジェクトと交差しない移動ルートを選択するおうにしてもよい。
【0149】
7.カメラ制御データの再生開始位置、再生終了位置の可変制御
次に、モード移行カメラ制御(第1のカメラ制御の一例)において、カメラ制御データの再生開始位置、再生終了位置、再生方向の設定を可変に制御する場合について説明する。
【0150】
図12は、カメラ制御データの再生開始位置、終了位置の設定について説明するための図である。
【0151】
本実施の形態では、カメラ制御データの再生開始位置、終了位置を可変に設定することができる。すなわち、移動ルートの所与の点を再生開始位置及び再生終了位置の少なくとも1つとして設定し、設定された再生開始位置及び再生終了位置の少なくとも1つによって特定される移動区間において、仮想カメラを移動させる処理を行う。
【0152】
例えば図12は、移動ルート320の始点322ではなく、途中の点323を再生開始位置とし途中の点323から再生を開始して、移動ルートの折り返し点323で折り返して途中の点323で再生を終了する例を示している。ここで、カメラ制御データは始点322から終点324までのデータが、図6に示すように時系列に定義されており、時刻t0に始点のデータが定義され、時刻t1で途中の点323のデータが定義されているとすると、時刻t1の位置を再生位置として設定することにより、移動ルートの途中の点323から仮想カメラを移動させる制御を行うことができる。この様にすると1つのカメラ制御データで始点の異なる複数の移動ルートのカメラ制御が可能となる。
【0153】
例えばモード移行カメラ制御(第1のカメラ制御の一例)前の仮想カメラのローカル位置に応じて、再生開始位置を決定してもよい。移動ルート320は、モード移行カメラ制御(第1のカメラ制御の一例)発動前(例えば3人称視点モードの仮想カメラのローカル位置)を含んでもよい。
【0154】
8.カメラ制御データに操作入力を反映させる手法
次に通常戦闘モードのカメラ制御(第2のカメラ制御の一例)に操作入力をさせる手法について説明する。
【0155】
図13(A)(B)は、通常戦闘モードのカメラ制御に操作入力を反映させる例について説明するための図である。
【0156】
図13(A)の320−2は、通常戦闘モードのカメラ制御に用いるカメラ制御データで定義された移動体オブジェクト310のローカル座標系300における移動ルートを示している。図13(B)は、カメラ制御データの時間軸(t0〜t5)と位置データの対応関係を示す図である。ここでは位置データを例にとり説明するが、向き(回転)や画角についても同様である。カメラ制御データは、時刻t0〜時刻t1〜時刻t2においてルート320−2を順方向390に移動(位置l0〜位置l1〜位置l2に移動)し、時刻t3〜時刻t4〜時刻t5においてルート320−2を逆方向392に移動(位置l2〜位置l1〜位置l0に移動)するように定義されている。カメラ制御データは再生開始位置から、再生終了位置までを時間軸に沿って再生することができる。
【0157】
ここで第1の再生開始位置SP1として時刻t0が指定され、第1の再生終了位置EP1として時刻t2が指定された場合には、仮想カメラはルート320−2を順方向390に移動(位置l0〜位置l1〜位置l2に移動)するよう制御される。また第2の再生開始位置SP2として時刻t3が指定され、第2の再生終了位置EP2として時刻t5が指定された場合には、仮想カメラはルート320−2を逆方向392に移動(位置l2〜位置l1〜位置l0に移動)するよう制御される。
【0158】
操作入力に応じて再生開始位置をSP1又はSP2のいずれかに設定するようにしてもよい。例えば加速を示す操作入力が行われた場合には再生開始位置をSP2に設定し、減速を示す操作入力が行われた場合には再生開始位置をSP1に設定するようにしてもよい。この様にすると、加速入力が行われると仮想カメラの位置が移動体オブジェクトに対し相対的に後退し(392)、減速入力が行われると、仮想カメラの位置が移動体オブジェクトに対し相対的に前進する(390)カメラ演出を行うことができる。
【0159】
図14(A)(B)は、通常戦闘モードのカメラ制御に操作入力を反映させる他の例について説明するための図である。図14(A)の320’−2は、第1のカメラ制御に用いるカメラ制御データの示す移動体オブジェクト310のローカル座標系300における移動ルートを示している。
【0160】
図14(B)は、図13(B)と同様に、カメラ制御データの時間軸と位置データの対応関係を示す図である。
【0161】
入力された移動方向に応じて再生開始位置を設定するようにしてもよい。例えば右方向(X軸+方向)への移動を指示する操作入力が行われた場合には再生開始位置をSP2に設定し、左方向(X軸−方向)を示す操作入力が行われた場合には再生開始位置をSP2に設定するようにしてもよい。この様にすると、右方向入力が行われると仮想カメラの位置が移動体オブジェクトに対し相対的に左方向に移動し(392’)、左方向入力が行われると、仮想カメラの位置が移動体オブジェクトに対し相対的に右方向に移動する(390’)カメラ演出を行うことができる。
【0162】
図15は、第1の設定値と第2の設定値の合成の一例について説明するための図である。
【0163】
ここではモード移行カメラ制御(第1のカメラ制御の一例)で得られた設定値と通常戦闘モードのカメラ制御(第2のカメラ制御の一例)で得られた設定値を合成(ブレンド)する場合を例にとり説明する。
【0164】
320−1はモード移行カメラ制御用のカメラ制御データの示す移動体オブジェクト310のローカル座標系300における移動ルートを示しており、320−2は通常戦闘モードのカメラ制御用のカメラ制御データの示す移動体オブジェクト310のローカル座標系300における移動ルートを示している。この移動ルート320−2には、図13(A)(B)や図14(A)(B)で説明したように、操作入力が反映されたものとなっている。
【0165】
320−3は、移動ルート320−1と移動ルート320−2を、ローカル座標系300において時間的に変化する合成比率で合成したローカル座標系における移動ルートである。時刻tiにおけるローカル座標系における合成ルート320−3の座標値(LWi、LYi、LZi)(i=0,1,2,・・n)と移動体オブジェクトのワールド座標系における座標値(WXi、WYi、WZi)(i=0、1,2,・・n)とを加算することにより、所定の期間(t0〜tn)のワールド座標系における仮想カメラの座標値を求めることができる。
【0166】
この様に通常戦闘モードのカメラ制御において操作入力を再生開始位置に反映させたることで、合成後に得られる移動ルート320−3にも、操作入力が反映され、操作入力に応じてカメラワークが変化する躍動感のあるカメラ演出を行うことができる。
【0167】
9.移行処理
次に、第1のカメラ制御処理開始前の前記移動体オブジェクトのローカル座標系における仮想カメラの位置からカメラ制御データに規定された前記移動体オブジェクトのローカル座標系における所与の基準位置まで移動させる移行処理について、第1のカメラ制御がモード移行カメラ制御である場合を例にとり説明する。
【0168】
図17は、モード移行カメラ制御(第1のカメラ制御の一例)開始前の記移動体オブジェクトと仮想カメラの配置関係について説明するための図である。時刻t1,t2、t3における、第2のカメラ制御下にある移動体オブジェクトと仮想カメラの位置関係を示している。
【0169】
第2のカメラ制御の最中に、モード移行を指示する所与の操作入力が行われた場合にモード移行カメラ制御が開始されるとする。第2のカメラ制御は、図17に示すように、仮想カメラ340を移動体オブジェクト310に追従させるが、移動体オブジェクト310に対する仮想カメラ340の相対的な位置や向き(回転)が固定されていないものとする。すなわち移動体オブジェクト310のローカル座標系における仮想カメラ340の位置や向き(回転)は、移動体オブジェクト310のワールド座標系における位置や向き(向き)や速度、又は移動体オブジェクトと他の移動体オブジェクト(例えば移動体オブジェクトのターゲットとなっている敵移動体等)の位置関係や距離等によって変化するものとする。
【0170】
この様な場合時刻t1でモード移行を指示する所与の操作入力が行われた場合と、時刻t2でモード移行を指示する所与の操作入力が行われた場合と、時刻t3でモード移行を指示する所与の操作入力が行われた場合とでは、移動体オブジェクトのローカル座標系における仮想カメラの位置、向き(回転)は異なっている。
【0171】
図18は、移行処理について説明するための図である。320は、移動体オブジェクト310のローカル座標系300におけるアイテムカメラ制御の仮想カメラの移動ルートを示している。322は移動ルート(軌道)320の始点であり、所与の基準位置である。再生開始位置の設定制御を行わない場合には、所与の基準位置である始点322から移動ルートの再生が開始されるものとする。
【0172】
しかし時刻t1でモード移行を指示する所与の操作入力が行われた場合には仮想カメラ340−1は342−1に位置しており、時刻t2でモード移行を指示する所与の操作入力が行われた場合には仮想カメラ340−2は342−2に位置しており、時刻t3でモード移行を指示する所与の操作入力が行われた場合には仮想カメラ340−3は342−3に位置しており、いずれも所与の基準位置とは異なる位置にある。そこで、本実施の形態では、モード移行を指示する所与の操作入力が行われる直前の仮想カメラの位置から、所定の基準位置まで、所定時間(IT)で仮想カメラを移動させる移行処理を行う。
【0173】
例えば時刻t1でモード移行を指示する所与の操作入力が行われた場合には、時刻t1における仮想カメラのローカル位置(移動体オブジェクトのローカル座標系における位置を意味する)342−1から所定の基準位置322まで所定の移動ルート344−1にしたがって、所定期間(IT)で移動させ、時刻t2でモード移行を指示する所与の操作入力が行われた場合には、時刻t2における仮想カメラのローカル位置342−2から所定の基準位置322まで所定の移動ルート344−2にしたがって、所定期間(IT)で移動させ、時刻t3でモード移行を指示する所与の操作入力が行われた場合には、時刻t3における仮想カメラのローカル位置342−3から所定の基準位置322まで所定の移動ルート344−3にしたがって、所定期間(IT)で移動させてもよい。
【0174】
所定の移動ルート344−1,344−2、344−3は、各時刻t1、t2、t3における仮想カメラのローカル位置と所定の基準位置とを結ぶ線分であり、操作入力時の仮想カメラのローカル位置342−1,342−2342−3に基づきリアルタイムに決定される。当該線分の軌跡が、前記2点を通る所与の関数となるように決定してもよい。なお仮想カメラの画角は移動体オブジェクトが画像内に収まるように決定してもよい。
【0175】
このようにすると、モード移行を指示する所与の操作入力が行われると所定期間(IT)で仮想カメラが所定の基準位置まで移動し、その後アイテムカメラ制御の移動ルート320に従ってアイテムに近づいていく第1のカメラ制御が行われる。
【0176】
そして前記移行処理(仮想カメラが所与の基準位置にくるまで)が行われている間は、当該移行処理によって得られた第1の設定値と第2のカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置することができるので、仮想カメラ340と移動体オブジェクト310の相対位置が変化するようなカメラ制御が行われている場合に、モード移行を指示する所与の操作入力が行われた場合でもスムーズでシームレスなカメラ演出を行うことができる。
【0177】
10.本実施の形態の処理
図16は、本実施の形態のカメラ制御処理の流れを示すフローチャートである。
【0178】
所与のイベント発生前は第2のカメラ制御処理を行い第2の設定値をもとめ、第2の設定値と移動体オブジェクトの配置に基づき、仮想カメラを仮想3次元空間に配置する(ステップS10)。所与のイベントが発生すると(ステップS20)、第1の仮想カメラ制御期間が終了するまで(ステップS70)、以下の処理を繰り返す。
【0179】
第1のカメラ制御処理と第2のカメラ制御処理を平行して行い(ステップS30)、第1のカメラ制御開始からの経過時間に基づき、ブレンド比率を求める(ステップS40)。そして、第1のカメラ制御処理により求めた第1の設定値と第2のカメラ制御処理により求めた第2の設定値とを、求めたブレンド(合成)比率でブレンド(合成)してブレンド設定値を求める(ステップS50)。そして、ブレンド設定値と、移動体オブジェクトの配置に基づき、仮想カメラを仮想3次元空間に配置する(ステップS60)。
【0180】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0181】
上記実施の形態では、カメラ制御データの位置を例に取り説明したがそれに限られない。回転や画角についても同様の制御を行うことができる。
【0182】
また上記実施の形態で例示した以外の様々なカメラ制御を平行して行い、これらのカメラ制御によって得られた設定値をブレンドして仮想カメラを仮想3次元空間に配置してもよい。例えば敵機の爆風等によって値が変化する揺れパラメータや、プレイヤの入力以外のさらに別のパラメータを用いて、仮想カメラの配置(位置や向き)を変化させて、仮想カメラの揺れ等を表現するカメラ制御をおこなってもよい。例えば、敵機が爆発した座標から所定距離以内に自機がいる場合、揺れを表現するために図13、図14で説明したカメラ制御を行ってもよい。
【0183】
また敵が複数いる場合には、敵が1機の場合と異なる移動ルートにしてもよい。たとえば、予め容易された複数の移動ルートの中から、敵機2機の座標の中点に近い点を通る移動ルートを検索し、そのパスを選択するようにしてもよい。
【0184】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、携帯型ゲームシステム、ゲーム画像を生成するシステムボード等の種々のゲームシステムに適用できる。
【符号の説明】
【0185】
10 本体装置、20 入力装置、100 処理部、110 オブジェクト空間設定部、112 ゲーム演算部、114 表示制御部、115 仮想カメラ制御部、116 第1のカメラ制御部、117 第2のカメラ制御部、120 描画部、130 音制御部、140 振動制御部、150 移動・動作処理部、152 移動体オブジェクト制御部、170 記憶部、172 主記憶部、174 描画バッファ、180 情報記憶媒体、190 表示部、192 スピーカー、196 通信部、198 光源、210 加速度センサ、220 撮像部、222 赤外線フィルタ、224 レンズ、226 撮像素子、228 画像処理回路、230 スピーカー、240 振動部、250 マイコン、260 通信部、270 操作部

【特許請求の範囲】
【請求項1】
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成するためのプログラムであって、
操作入力に基づき、仮想空間における移動体オブジェクトの移動の制御を行う移動体オブジェクト制御部と、
仮想カメラの設定の制御を行う仮想カメラ制御部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、してコンピュータを機能させ、
前記仮想カメラ制御部は、
所与のイベントが発生した場合に、移動体オブジェクトに対する仮想カメラの相対的な配置の遷移として定義されたカメラ制御データ及び仮想3次元空間における移動体オブジェクトの配置に基づき第1のカメラ制御処理を行う第1のカメラ制御部と、
所与のイベント発生前に行っていた仮想カメラに対する第2のカメラ制御処理を、所与のイベント発生後も継続して行う第2のカメラ制御部と、を含み、
第1のカメラ制御処理によって得られた第1の設定値と第2のカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置することを特徴とするプログラム。
【請求項2】
請求項1において、
前記仮想カメラ制御部は、
時間の経過に従って合成比率を変化させて第1の設定値と第2の設定値を合成することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記カメラ制御データは、前記移動体オブジェクトのローカル座標系における、移動体オブジェクトの周囲を旋回する軌道が移動ルートとして定義されており、
前記第1のカメラ制御部は、
前記カメラ制御データに基づき、仮想カメラを前記移動ルートにしたがって移動体オブジェクトの周囲を旋回又は周遊させる処理を行うことを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記カメラ制御データは、軌道の異なる複数の移動ルートに対応したデータを含み、
前記第1のカメラ制御部は、
前記移動体オブジェクトの位置、向き、前記移動体オブジェクトと他の移動体オブジェクトの相対的な位置関係、距離、移動体オブジェクトの属性、イベントの種類、所定のゲームパラメータの値の少なくとも1つに基づき、いずれかの移動ルートに対応したカメラ制御データを選択して、選択したカメラ制御データを用いて第1のカメラ制御処理を行うことを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記第2のカメラ制御部は、
移動体オブジェクトに対する仮想カメラの相対的な配置の遷移が定義されたカメラ制御データ及び仮想空間における移動体オブジェクトの配置に基づき第2のカメラ制御処理を行うことを特徴とするプログラム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記第1のカメラ制御部は、
前記移動ルート上の所与の点を再生開始位置及び再生終了位置の少なくとも1つとして設定し、設定された再生開始位置及び再生終了位置の少なくとも1つによって特定される移動区間において、仮想カメラを移動させる処理を行うことを特徴とするプログラム。
【請求項7】
請求項6において、
前記第1のカメラ制御部は、
前記移動体オブジェクトと他の移動体オブジェクトとの距離、位置関係、操作入力及び所与のパラメータの少なくとも1つに基づき開始位置を再設定して、仮想カメラを移動経路上で移動させる制御を行うプログラム。
【請求項8】
請求項1乃至7のいずれかにおいて、
前記第2のカメラ制御部は、
前記移動ルート上の所与の点を再生開始位置及び再生終了位置の少なくとも1つとして設定し、設定された再生開始位置及び再生終了位置の少なくとも1つによって特定される移動区間において、仮想カメラを移動させる処理を行うことを特徴とするプログラム。
【請求項9】
請求項8において、
前記第2のカメラ制御部は、
前記移動体オブジェクトと他の移動体オブジェクトとの距離、位置関係、操作入力及び所与のパラメータの少なくとも1つに基づき開始位置を再設定して、仮想カメラを移動経路上で移動させる制御を行うプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
前記第1のカメラ制御部は、
第1のカメラ制御処理開始前の前記移動体オブジェクトのローカル座標系における仮想カメラの位置から前記カメラ制御データに規定された前記移動体オブジェクトのローカル座標系における所与の基準位置まで移動させる移行処理を行うことを特徴とするプログラム。
【請求項11】
請求項1乃至10のいずれかに記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体。
【請求項12】
移動体オブジェクトが存在する仮想空間を仮想カメラから見た画像を生成するための画像生成システムであって、
操作入力に基づき、仮想空間における移動体オブジェクトの移動の制御を行う移動体オブジェクト制御部と、
仮想カメラの設定の制御を行う仮想カメラ制御部と、
仮想空間を仮想カメラから見た画像を生成する画像生成部と、を含み、
前記仮想カメラ制御部は、
所与のイベントが発生した場合に、移動体オブジェクトに対する仮想カメラの相対的な配置の遷移として定義されたカメラ制御データ及び仮想3次元空間における移動体オブジェクトの配置に基づき第1のカメラ制御処理を行う第1のカメラ制御部と、
所与のイベント発生前に行っていた仮想カメラに対する第2のカメラ制御処理を、所与のイベント発生後も継続して行う第2のカメラ制御部と、を含み、
第1のカメラ制御処理によって得られた第1の設定値と第2のカメラ制御処理によって得られた第2の設定値を合成して、合成した設定値に基づき仮想カメラを仮想3次元空間に配置することを特徴とする画像生成システム。

【図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

【図18】
image rotate


【公開番号】特開2011−258149(P2011−258149A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−134533(P2010−134533)
【出願日】平成22年6月11日(2010.6.11)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】