画像処理プログラム及びコンピュータ読み取り可能な記録媒体
【課題】プレイヤに対して違和感や圧迫感を与えず、ゲームへの没入感を損なわない画像を生成する画像処理プログラムを提供する。
【解決手段】プレイヤキャラクタと障害物が配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、視錐台の内部に配置された画像を生成する画像処理プログラムであって、プレイヤキャラクタの向き及び位置情報と、障害物の位置情報とを記憶し、プレイヤキャラクタから前方の領域内に注視点を設定する注視点設定手段、プレイヤキャラクタから後方の領域内であり、かつ所定間隔を空けた位置に仮想視点を設定する視点設定手段、注視点から仮想視点までを結ぶ線分が、障害物と交差するか判定する判定手段、線分と障害物が交差する場合,線分と障害物が交差する座標であって且つ注視点に最も近い交差座標の位置に仮想視点を再設定し、視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段を設けた。
【解決手段】プレイヤキャラクタと障害物が配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、視錐台の内部に配置された画像を生成する画像処理プログラムであって、プレイヤキャラクタの向き及び位置情報と、障害物の位置情報とを記憶し、プレイヤキャラクタから前方の領域内に注視点を設定する注視点設定手段、プレイヤキャラクタから後方の領域内であり、かつ所定間隔を空けた位置に仮想視点を設定する視点設定手段、注視点から仮想視点までを結ぶ線分が、障害物と交差するか判定する判定手段、線分と障害物が交差する場合,線分と障害物が交差する座標であって且つ注視点に最も近い交差座標の位置に仮想視点を再設定し、視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段を設けた。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ビデオゲームやCG(Computer Graphics)ビデオ等における表示画像の生成技術に関する。
【背景技術】
【0002】
従来から、仮想空間内に配置されたプレイヤキャラクタを俯瞰視点にて操作するサードパーソンシューティングゲーム(TPS)や、ロールプレイングゲーム(RPG)が知られている。
【0003】
このようなゲームでは、プレイヤキャラクタを常に画面表示させるため、仮想カメラを、プレイヤキャラクタの後方の予め定められた位置に、かつ、プレイヤキャラクタの正面方向を向いて設定する場合が多い(例えば、特許文献1参照)。
【0004】
この場合、仮想カメラとプレイヤキャラクタとの間に障害物が存在すると、プレイヤキャラクタが画面表示されず、プレイヤはプレイヤキャラクタを操作できない。そこで、障害物の存在によって、仮想カメラの位置や注視点を移動制御する技術(特許文献2参照)や、障害物を透過処理する技術(特許文献3参照)が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−305176号公報
【特許文献2】特開2006−122328号公報
【特許文献3】特許第3769747号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献2に開示された技術によれば、障害物の存在によって仮想カメラの位置や注視点を移動させるため、画面内におけるプレイヤキャラクタの向きや位置が急激に変更され、プレイヤに違和感を与えるという問題がある。また、仮想カメラを障害物との衝突位置に設定する場合には、プレイヤキャラクタが後方へ移動すると、プレイヤキャラクタと仮想カメラとの距離が狭くなる。つまり、プレイヤキャラクタが迫って来る画面となり、プレイヤに圧迫感を与えるという問題がある。
【0007】
更に、特許文献3に開示された技術によれば、障害物に対しての透過処理を行うため、本来であれば視認することができない画像が生成される。このため、プレイヤは、仮想空間におけるゲームへの没入感を損なうという問題がある。
【0008】
本発明は、上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、プレイヤに対して違和感や圧迫感を与えず、ゲームへの没入感を損なわない画像を生成する画像処理プログラム及びコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【0009】
上記の課題を解決するため、本発明にあっては、請求項1に記載されるようにプレイヤキャラクタと障害物とを含むオブジェクトが配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、当該視錐台の内部に配置されたオブジェクトの画像を生成する画像処理プログラムであって、コンピュータを、前記プレイヤキャラクタの向き及び位置情報と、前記障害物の位置情報とを記憶する記憶手段、前記プレイヤキャラクタから前方の領域内に前記注視点を設定する注視点設定手段、前記プレイヤキャラクタから後方の領域内であって、当該プレイヤキャラクタから所定間隔を空けた位置に前記仮想視点を設定する視点設定手段、前記注視点から前記仮想視点までを結ぶ線分が、前記障害物と交差するか判定する判定手段、前記線分と前記障害物が交差する場合,前記線分と前記障害物が交差する座標であって且つ前記注視点に最も近い交差座標の位置に前記仮想視点を再設定し、前記視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段、として機能させるための画像処理プログラムを要旨としている。
【0010】
また、請求項2に記載されるように、請求項1に記載の画像処理プログラムであって、前記視野角拡大手段は、前記視点設定手段によって設定された仮想視点と前記交差座標との距離を算出し、当該距離が大きいほど,前記視野角の拡大させる角度を大きくすることができる。
【0011】
また、請求項3に記載されるように、請求項2に記載の画像処理プログラムであって、前記記憶手段は、前記障害物のベクトル情報を記憶し、前記視野角拡大手段は、前記交差座標における前記障害物のベクトル情報を読み取り、前記交差座標から注視点GPへのベクトルと前記障害物のベクトルとの成す角度が大きいほど,前記視野角の拡大させる角度を小さくすることができる。
【0012】
また、請求項4に記載されるように、請求項1乃至3のいずれか一項に記載の画像処理プログラムであって、前記視点設定手段は、前記プレイヤキャラクタの右後方又は左後方の位置に仮想視点を設定することができる。
【0013】
また、請求項5に記載されるように、請求項4に記載の画像処理プログラムであって、前記オブジェクトには、敵キャラクタを含み、コンピュータを、さらに、前記仮想視点から前記注視点を通過する直線が、前記障害物又は敵キャラクタと交差する交差座標を算出し、当該交差座標のうち、最も仮想視点に近い交差座標を前記プレイヤキャラクタから発射する発射体の到達位置とする手段、として機能させることができる。
【0014】
また、請求項6に記載されるように、請求項4に記載の画像処理プログラムであって、 前記オブジェクトには、敵キャラクタを含み、コンピュータを、さらに、前記プレイヤキャラクタの向き及び位置情報に基づいて、当該プレイヤキャラクタの前方へ発射される発射体の予想弾道を算出する手段、として機能させ、前記注視点設定手段は、前記予想弾道が前記障害物と交差する交差座標のうち、最も仮想視点に近い交差座標を前記注視点として設定することができる。
【0015】
また、請求項7に記載されるように、請求項1乃至6のいずれか一項に記載の画像処理プログラムを記録するコンピュータ読み取り可能な記録媒体として構成することができる。
【発明の効果】
【0016】
本発明の画像処理プログラム及びコンピュータ読み取り可能な記録媒体にあっては、プレイヤに対して違和感や圧迫感を与えず、ゲームへの没入感を損なわない画像を生成することができる。
【図面の簡単な説明】
【0017】
【図1】本発明の一実施形態にかかるハードウェア構成例を示す図である。
【図2】ビュー空間および射影空間の例を示す図である。
【図3】情報処理装置内で処理に用いられるデータ例を示す図である。
【図4】ゲーム画面例を示す図(その1)である。
【図5】仮想空間を上方から見た図(その1)である。
【図6】仮想空間を上方から見た図(その2)である。
【図7】仮想空間を上方から見た図(その3)である。
【図8】ゲーム画面例を示す図(その2)である。
【図9】仮想空間を上方から見た図(その4)である。
【図10】ゲーム画面例を示す図(その3)である。
【図11】視野角拡大処理の例を示すフローチャートである。
【図12】仮想空間を上方から見た図(その5)である。
【図13】仮想空間を上方から見た図(その6)である。
【発明を実施するための形態】
【0018】
以下、本発明の好適な実施形態につき説明する。なお、これにより本発明が限定されるものではない。
【0019】
(ハードウェアの構成)
図1は、本実施の形態にかかるハードウェア構成の一例を示している。本実施形態の情報処理装置1は、入出力装置であるコントローラ11、音声出力装置であるスピーカ12及び表示装置であるディスプレイモニタ13に接続されて使用される。ここで、ディスプレイモニタ13は、CRTや液晶表示装置等によって構成され、例えば、プレイヤキャラクタを含むゲーム画面を表示する。また、図示しないが、コントローラ11は、十字ボタン、操作ボタン、左ジョイスティック、右ジョイスティックが設けられている。プレイヤは、このコントローラ11を入力操作することによって、ゲーム操作を行うことができる。なお、コントローラ11は、振動発生装置や音声発生装置等の出力装置を備えていても良い。
【0020】
情報処理装置1は、CPU2、メインメモリ3、BIOS−ROM4、通信インタフェース5、記憶部6、ペリフェラルインタフェース7、音声処理部8、及び画像処理部9が、バスラインを介してバスアービタ10に接続されて構成されている。
【0021】
バスアービタ10は、バスラインを介して接続された各デバイスからのバス使用要求に応じてバスアービトレーションを行い、データの流れを制御する。また、バスアービタ10は、各デバイスからの要求に対し、CPUを介さずにデバイス同士でのデータ転送を行うDMA機能も備えている。ここで、バスアービタ10には、データ転送が高速なデバイスを制御する高速バスアービタ101と、データ転送が低速なデバイスを制御する低速バスアービタ102とが含まれ、システム全体のデータ転送速度を高速化することができる。
【0022】
CPU2は、ゲームプログラムの実行やシステム全体の制御や画像表示のための座標計算等を行い、コントローラ11から送信される操作信号に基づいて、例えばゲーム画面内に登場するプレイヤキャラクタの動作を制御する。ゲームプログラムは,本実施の形態における画像処理プログラムを含み,CPU2が該画像処理プログラムを実行することで,後述する本実施の形態における画像処理が行われる。
【0023】
メインメモリ3は、CPU2が処理を行うのに必要なプログラムやデータを格納するメモリとして利用される。ここで、CPU2及びメインメモリ3は、高速バスアービタ101を介して共通接続されている。
【0024】
BIOS−ROM4は、情報処理装置1を起動するためのプログラムやシステムプログラムが格納されている。
【0025】
通信インタフェース5は、外部ネットワークに接続するために、LAN回線等のインタフェースを提供する。これにより、情報処理装置1は、他の情報処理装置やネットワークサーバ等との通信が可能になる。
【0026】
記憶部6は、磁気ディスクや光ディスク等の記録媒体によって構成され、本実施の形態における画像処理プログラムを含むゲームプログラムやデータが格納されている。CPU2は、作業内容に応じて記憶媒体に格納されたプログラムやデータをメインメモリ3に読み出す。ここで、メインメモリ3に読み出されるデータとしては、例えば、プレイヤキャラクタや敵キャラクタを含むオブジェクトを定義するデータ、画像データ、音データ等がある。更に、CPU2は、データ転送速度が低い記録媒体に記録されたデータを、磁気ディスクなどのデータ転送速度が高い記録媒体に転送し、情報処理システム全体のアクセス速度を向上させる。
【0027】
ペリフェラルインタフェース7は、コントローラ11等の周辺機器と接続するために、USB、IEEE1394、シリアル、パラレル、赤外線、無線等のインタフェースを提供する。ペリフェラルインタフェース7は、コントローラ11から送信された操作信号を、低速バスアービタ102へ送信する。なお、ペリフェラルインタフェース7は、コントローラ11へゲーム状況に応じた振動信号や音声信号を送信することもできる。
【0028】
音声処理部8には、サウンドコントローラ81が含まれ、サウンドコントローラ81には、サウンドメモリ811が含まれる。音声処理部8は、記録部6やサウンドメモリ811に格納された音データを読み出して音声を生成する。また、サウンドコントローラ81は、例えば、プレイヤによる操作やゲーム進行に応じて生成した音声をスピーカ13に出力する。
【0029】
画像処理部9には、GPU91、VRAM92が含まれる。ここで、VRAM92は、フレームバッファ921、テクスチャバッファ922、Zバッファ923等の格納領域を有している。フレームバッファ921は、画面表示を行う1フレーム分のピクセルデータを記憶するために利用される。テクスチャバッファ922は、オブジェクトを形成するポリゴンにテクスチャマッピングを行う場合に、素材となる画像データ(テクスチャ)を記憶するために利用される。Zバッファ923は、画面表示を行う各ピクセルにおけるオブジェクトの深度情報を記憶するために利用される。
【0030】
画像処理部9は、オブジェクトを形成するポリゴンのデータ(頂点座標、テクスチャ座標、色値やα値、法線ベクトル等)に基づいて頂点処理を行い、ラスタライズ、テクスチャマッピング、陰面消去等のピクセル処理を行う。次いで、画像処理部9は、ピクセル処理によって得られたピクセルデータをフレームバッファ921に記憶する。
【0031】
表示画像の生成に関しては、CPU2の制御のもと、ゲーム状況に従って表示すべきオブジェクトを形成するポリゴンが仮想空間内に配置され、GPU91の処理により、仮想カメラVP(仮想視点)から見た二次元画像に変換されて生成される。
【0032】
GPU91は、頂点処理として、ワールド変換、光源計算、ビュー変換、クリッピング、射影変換、ビューポート変換等が行われる。図2(a)は、ビュー空間の例を示している。ビュー空間は、ワールド空間を、仮想カメラVP、注視点GP、及び仮想カメラVPの上方方向の情報に基づいて変換した座標空間であり、仮想カメラVPから注視点GPの方向に対して横軸がx軸、縦軸がy軸、奥行きがz軸となる。そして、クリッピングとして、仮想カメラVPから注視点GPの方向に対してx軸方向およびy軸方向にそれぞれ視野角だけ振った範囲において、仮想カメラVPに近い側には近クリップ平面CP1が設定され、遠い側には遠クリップ平面CP2が設定される。近クリップ平面CP1と遠クリップ平面CP2と視野角を示す面で囲まれる六面体は、視錐台と呼ばれ、その内部に配置されるオブジェクトが描画対象となる。図2(b)は、射影変換を行った射影空間の例を示しており、図2(a)に示したビュー空間を、視野角、アスペクト比、近クリップ平面CP1、及び遠クリップ平面CP2の情報に基づいて、−1≦x≦1、−1≦y≦1、0≦z≦1の範囲の空間に変換している。そして、GPU91内のバーテックスシェーダは、射影空間へ変換されたポリゴンの頂点をビューポート変換し、頂点処理を終了する。
【0033】
GPU91は、ピクセル処理として、頂点処理によって組み立てられた多角形、線、及び点のデータからラスタライズ及び補間を行う。そして、このラスタライズ及び補間されたピクセルデータに対して、テクスチャマッピング、アルファテスト、深度情報に基づく深度テスト(陰面消去)、ブレンディング等を行って、画面に配置されるピクセルデータをフレームバッファ921に記憶する。
【0034】
そして、GPU91内のディスプレイコントローラ911は、フレームバッファ921に記録されたピクセルデータを周期的に読み出し、映像信号をディスプレイモニタ13に送信する。
【0035】
(各種データの説明)
図3は、情報処理装置1内で画像処理に用いられるデータ例を示す図である。データには、モデル関連データと一時的データとが含まれる。
【0036】
モデル関連データには、オブジェクトであるプレイヤキャラクタデータと敵キャラクタデータと障害物データとが含まれている。
【0037】
プレイヤキャラクタデータは、主としてプレイヤからのコントローラ11による操作によって制御されるキャラクタのデータであって、プレイヤキャラクタを形成するポリゴンデータ、顔基準座標を含んでいる。ここで、ポリゴンデータは、頂点座標、テクスチャ座標、色値やα値、法線ベクトルを含み、後述する敵キャラクタデータや障害物データも同様である。なお、顔基準座標は、例えば、プレイヤキャラクタの首のやや上の三次元座標である。
【0038】
敵キャラクタデータは、プレイヤキャラクタと敵対する複数のキャラクタのデータであり、敵キャラクタを形成するポリゴンデータ、顔基準座標、行動スクリプトを含んでいる。行動スクリプトは、敵キャラクタの行動開始条件と行動内容とを記述したものである。例えば、CPU2は、その敵キャラクタの追尾開始距離以内にプレイヤキャラクタが入ったと判定すると、その敵キャラクタはプレイヤキャラクタの追尾を開始する。また、CPU2は、その敵キャラクタの攻撃開始距離以内にプレイヤキャラクタが入ったと判定すると、その敵キャラクタはプレイヤキャラクタへの攻撃を開始する。
【0039】
障害物データは、プレイヤキャラクタや仮想カメラVPが移動不可能な範囲を定義した、地面GRや壁W、天井CL等の複数の障害物に関するデータであり、障害物を形成するポリゴンデータ、仮想空間内に配置される配置座標を含んでいる。
【0040】
一時的データには、仮想空間内におけるデータであって、プレイヤキャラクタ及び敵キャラクタの座標及び向き情報、仮想カメラVP(仮想視点)の座標、注視点GPの座標、視野角θ、注視点GPから仮想カメラVPまでの線分と障害物とが交差する交差座標のうち最も注視点GPに近い交差座標CC、仮想カメラVPの位置から注視点GPへのベクトルと交差座標CCにおける障害物の法線ベクトルとのなす角度δ、元の仮想カメラVP’の位置と新たな仮想カメラVPの位置(交差座標CC)との距離Dの値が含まれる。さらに、一時的データには、現在の視野角を拡大するための視野角拡大率Sの値が含まれる。ここで、プレイヤキャラクタ及び敵キャラクタの向き情報は、例えば、身体の向き又は発射体を発射する方向に対応する。
【0041】
(動作)
続いて,本実施の形態における画像処理プログラムの実行により具現される画像処理の動作について,サードパーソンシューティングゲームの画面例を用いて説明する。
【0042】
図4は、本発明にかかるサードパーソンシューティングゲームの画面例を示す図である。図5は、図4を上方から見た図であって、仮想カメラVP、注視点GP、視野角θの設定位置や、プレイヤキャラクタPCの位置及び正面方向(矢印方向)等を示した図である。
【0043】
図4において、プレイヤキャラクタPC、敵キャラクタEC、障害物のオブジェクトである地面GR、壁W1〜W3、天井CLが仮想空間内に配置されている。また、図4において、プレイヤキャラクタPCは、常に画面左下に表示されるように構成されている。これは、照準位置となる画面中央にプレイヤキャラクタを表示させないためである。なお、このように照準位置を画面中央に固定することによって、プレイヤは、プレイヤキャラクタPCがどの向きに攻撃を行うかが分かりやすくなる。
【0044】
また、図5において、CPU2は、プレイヤキャラクタPCの顔基準座標Fを(x,y,z)=(0,0,0)とし、プレイヤキャラクタPCの右方向をx方向、上方向をy方向、正面方向をz方向とした座標系において、注視点GPをプレイヤキャラクタPCの右前方(xp,0,zp)、仮想カメラVPの位置をプレイヤキャラクタの右後方(xv,0,−zv)に設定する。ここで、xp、zp、xv及びzvは、正の値であって、視錐台内にプレイヤキャラクタPCが含まれるように各値が設定される。そして、CPU2は、注視点GP、仮想カメラVPの位置を仮想空間内の座標系に戻したものをメインメモリ3に記憶する。
【0045】
なお、画面中央にプレイヤキャラクタを表示させなければ良く、例えば、仮想カメラVPをプレイヤキャラクタの後方領域のいずれかに設定して、注視点GPをプレイヤキャラクタの右又は左前方にずらして設定しても良い。または、注視点GPをプレイヤキャラクタの前方領域に設定して、仮想カメラVPの位置をプレイヤキャラクタの右後方又は左後方にずらして設定しても良い。さらに,プレイヤキャラクタの頭上に仮想カメラVPの位置を設定してもよい。
【0046】
CPU2は、仮想カメラVPから注視点GPの方向に対する近クリップ平面CP1までの距離及び遠クリップ平面CP2までの距離に基づいて、近クリップ平面CP1及び遠クリップ平面CP2を設定する。さらに,CPU2は,視野角θをあらかじめ設定された基準の視野角θaの値に設定し、近クリップ平面CP1,遠クリップ平面CP2及び視野角θaにより,視錐台を形成する。このとき、視錐台内には、プレイヤキャラクタが含まれるように各値が設定され、近クリップ平面CP1は、図5に示されるように仮想カメラVPの近傍に設定されており、遠クリップ平面CP2は、図示されない遠方に設定されている。
【0047】
本ゲームでは、プレイヤは、コントローラ11の左ジョイスティックの操作によってプレイヤキャラクタの位置を移動させ、右ジョイスティックの操作によってプレイヤキャラクタの向きを変更することができる。つまり、プレイヤは、プレイヤキャラクタを、正面方向だけでなく、後方や左右方向へ移動させることができる。プレイヤが、プレイヤキャラクタの移動または向きの変更をすると、CPU2は、メインメモリ3に記憶されたプレイヤキャラクタの顔基準座標の三次元座標、及び向き情報を更新し、上述したプレイヤキャラクタの顔基準座標、及び向きを基準とした座標系を算出して注視点GP、仮想カメラVPの座標位置を設定し直す。
【0048】
また、プレイヤは、コントローラ11の操作ボタンの操作によって、プレイヤキャラクタの武器から発射される弾丸等の発射体を、仮想カメラVPから注視点GPを通過する直線上にある到達位置へ発射することができる。なお、この到達位置は、図4では、画面中央の照準位置となる。ここで、図5に示されるように、弾丸等の発射体が到達する到達位置は、仮想カメラVPから注視点GPを通過する直線がオブジェクトと交差する交差座標であって、仮想カメラVPの位置から最も近い交差座標CBに設定される。なお、交差座標CBにおいて交差するオブジェクトが敵キャラクタである場合、CPU2は、注視点GPを、交差座標CB又はその敵キャラクタの座標に再設定し、ロックオンを行っても良い。さらに、CPU2は、プレイヤキャラクタの位置から正面方向へ向けて、発射体の予想弾道を計算し、予想弾道内に敵キャラクタがいる場合、注視点GPを、その敵キャラクタの座標に再設定してもよい。これにより、初心者でも簡単に敵キャラクタを狙えることができる。そして、CPU2は、敵キャラクタや障害物に弾丸等の発射体が到達したかを判定し、ゲーム進行に反映する。
【0049】
ここで,プレイヤキャラクタが後方に後退するように移動し,後方にある壁に接近する場合を考える。この場合,プレイヤキャラクタの右後方にある仮想カメラVPが壁面に衝突し,さらに壁面を通り越してしまう場合がある。
【0050】
図6は,仮想カメラVPが壁を越えて位置する状態を上方から見た図である。仮想カメラVPは,プレイヤキャラクタPCの後方にある壁W4の裏側に位置する。従って,この状態をそのまま描画すると,仮想カメラVPとプレイヤキャラクタPCとの間に壁W4が位置することから,画面全体が壁に覆われた画像となってしまい,本来表示すべき壁W4の前面側の画像を表示することができない。
【0051】
そのため,仮想カメラVPが壁W4などの障害物と衝突し,その内部又はその裏側に位置する場合は,仮想カメラVPを壁W4と衝突する座標に設定し直すことで,壁W4より前面側の画像が描画される。
【0052】
図7は,仮想カメラVPを壁と衝突する座標に設定した状態を示す仮想空間を上方から見た図であり,図8は,図7に示す仮想カメラVPにより表示される画面例を示す図である。図7に示されるように,当初壁W4の裏側に設定された元の仮想カメラVP’から,壁W4との衝突する座標CCに仮想カメラVPを再設定することで,図8に示すように,プレイヤキャラクタPC及び敵キャラクタECが位置する壁W4の前面側の画像が表示される。
【0053】
このとき,再設定される仮想カメラVPは,元の仮想カメラVP’より距離D前方に位置するため,プレイヤキャラクタPCとの距離が縮まる。そうすると,図8に示すとおり,画面内におけるプレイヤキャラクタPCの大きさが大きくなり,プレイヤキャラクタPCが迫ってくるようにプレイヤが錯覚し,プレイヤに違和感及び圧迫感を与えることになる。
【0054】
本実施の形態における画像処理では,この違和感及び圧迫感をプレイヤに覚えさせないようにするために,仮想カメラVPを壁W4との衝突する座標に変更する場合,視野角θを拡大する。
【0055】
図9は,視野角を拡大した状態を示す仮想空間を上方から見た図であり,図10は,図9に示す仮想カメラVPにより表示される画面例を示す図である。図9に示すように,仮想カメラVPを,壁W4と衝突する座標CCに設定した場合,視野角θを,あらかじめ設定された基準の視野角θaよりも拡大させたθbとする。視野角を拡大することで,描画範囲が広がり,描画対象のオブジェクトが相対的に縮小される。そのため,図10に示すように,仮想カメラVPを急激に前方に移動させたことにより生じる画像の変化が緩和され,プレイヤが感じる違和感及び圧迫感を抑えることができる。
【0056】
図11は、本実施の形態における画像処理を実行するフローチャートであり,拡大させる視野角の角度を求める処理である。本画像処理は,CPU2が画像処理プログラムを実行することにより実現される。図11において、毎フレームもしくは数フレームおきに処理を開始すると(ステップS100)、仮想カメラVP、注視点GPの位置と、視野角θをθaに設定する(ステップS101)。ここで、θaは所定の値であって、視錐台内にプレイヤキャラクタを含むように定められた値である。
【0057】
次いで、注視点GPから仮想カメラVPまでの線分と障害物とが交差する交差座標があるか否かを判定する(ステップS102)。交差座標がない場合(ステップS102のNo)、仮想カメラVP、及び視野角θ(=θa)を確定し(ステップS109)、処理を終了する(ステップS110)。
【0058】
交差座標がある場合(ステップS102のYes)、注視点GPに最も近い交差座標CCの座標を取得する(S103)。交差座標がある場合は,図9で示したように,例えば,プレイヤキャラクタPCが後退して,後方にある壁W4に接近することで,プレイヤキャラクタの右後方にある仮想カメラVPが壁面に衝突し,さらに壁面を通り越してしまう場合である。
【0059】
次いで、交差座標CCにおける障害物の法線ベクトルを取得する(ステップS104)。次いで、仮想カメラVPから注視点GPへのベクトルと、交差座標CCにおける障害物の法線ベクトルとのなす角度δを算出する(ステップS105)。
【0060】
次いで、交差座標CCを新たな仮想カメラVPの位置に再設定し、元の仮想カメラVPの位置と交差座標CC(新たな仮想カメラVPの位置)との距離Dを算出する(ステップS106)。
【0061】
次いで、距離Dと角度δから、視野角拡大率Sを算出する(ステップS107)。ここで、視野角拡大率Sは、現在の視野角であるθaを何倍にするか決める値であって、S=1+(D×cos(δ)×C)の式によって算出される。なお、Cは定数である。
【0062】
視野角拡大率Sを求める上式で,距離Dに角度δを乗算するのは以下の理由による。図12は、プレイヤキャラクタが矢印方向を向き、右方向へ移動している場合の上から見た図である。壁W5は,その法線ベクトルが注視点GPから仮想カメラVPのベクトルに対して角度δを有して,プレイヤキャラクタPCの右方向に配置されている。プレイヤキャラクタPCの移動に伴い、仮想カメラVPも同様に、注視点GPの方向を正面方向として、右方向へ移動している。図13は、図12の後に仮想カメラVPが右方向にある壁W5に衝突し、仮想カメラVPが、元の仮想カメラVP’から交差座標CCに再設定された場合の上方から見た図である。ここで、上述したように、仮想カメラVPを、元の仮想カメラVP’から交差座標CCへ再設定する場合、仮想カメラVPが右方向にある障害物へ衝突すると、後方の障害物に衝突する場合と比べて距離Dが大きくなる。後方の障害物に衝突する場合(角度δ=0)は,プレイヤキャラクタPCの後方への移動距離がそのまま距離Dとなるが,壁W5に角度を有して衝突する場合(角度δ>0),図13に示すように,プレイヤキャラクタPCの右方向への移動距離よりも距離Dが大きくなる。
【0063】
つまり、プレイヤキャラクタPCが注視点GPと仮想カメラVPのベクトルに対して角度がある障害物に接近した場合,プレイヤキャラクタPCのわずかな移動により視野角の拡大が急激に行われ、プレイヤに対して違和感を与えてしまう。したがって、視野角拡大率Sを算出する際、距離Dにcos(δ)を掛けて拡大率を調整している。
【0064】
図11に戻り、次いで、現在の視野角θaと視野角拡大率Sから、新たな視野角θbを算出する(ステップS108)。ここで、視野角θbは、θb=arctan(tan(θa/2)×S)×2の式によって算出される。
【0065】
次いで、注視点GP、仮想カメラVPの位置、視野角θ(=θb)を確定し(ステップS109)、処理を終了する(ステップS110)。
【0066】
上述したとおり、プレイヤキャラクタの移動により注視点GPから仮想カメラVPのベクトルが障害物と交差する場合,仮想カメラVPをその交差座標に設定するとともに,視野角を基準角度θaから算出された角度θbに拡大させる。そして,拡大させる視野角の角度を算出するための視野角拡大率Sは、距離Dが大きいほど大きくなる。これによって、仮想カメラVPが後方の障害物に衝突し、さらにプレイヤキャラクタが後方へ移動していく場合であっても、徐々に視野角を大きくすることができる。つまり、仮想カメラVPが障害物によって後方へ移動できない場合であっても、プレイヤに対して、仮想カメラVPが徐々に後方へ下がっていく(障害物を越えていく)感覚を与えることができる。
【0067】
なお、視野角θa及びθbは、左右方向の視野角であっても、上下方向の視野角であってもよく、どちらか一方の視野角を算出すれば、予め設定されたアスペクト比によって、もう一方の視野角を求めることができる。
【0068】
(総括)
以上に説明したように、注視点GPと仮想カメラVPとの間に障害物が存在しても、自然な形でプレイヤキャラクタを表示し、プレイヤに圧迫感等を感じさせなくすることができる。
【0069】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【符号の説明】
【0070】
1 情報処理装置
2 CPU
3 メインメモリ
4 BIOS−ROM
5 通信インタフェース
6 記憶部
7 ペリフェラルインタフェース
8 音声処理部
9 画像処理部
10 バスアービタ
11 入出力装置(コントローラ)
12 音声出力装置(スピーカ)
13 表示装置(ディスプレイモニタ)
【技術分野】
【0001】
本発明は、ビデオゲームやCG(Computer Graphics)ビデオ等における表示画像の生成技術に関する。
【背景技術】
【0002】
従来から、仮想空間内に配置されたプレイヤキャラクタを俯瞰視点にて操作するサードパーソンシューティングゲーム(TPS)や、ロールプレイングゲーム(RPG)が知られている。
【0003】
このようなゲームでは、プレイヤキャラクタを常に画面表示させるため、仮想カメラを、プレイヤキャラクタの後方の予め定められた位置に、かつ、プレイヤキャラクタの正面方向を向いて設定する場合が多い(例えば、特許文献1参照)。
【0004】
この場合、仮想カメラとプレイヤキャラクタとの間に障害物が存在すると、プレイヤキャラクタが画面表示されず、プレイヤはプレイヤキャラクタを操作できない。そこで、障害物の存在によって、仮想カメラの位置や注視点を移動制御する技術(特許文献2参照)や、障害物を透過処理する技術(特許文献3参照)が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−305176号公報
【特許文献2】特開2006−122328号公報
【特許文献3】特許第3769747号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献2に開示された技術によれば、障害物の存在によって仮想カメラの位置や注視点を移動させるため、画面内におけるプレイヤキャラクタの向きや位置が急激に変更され、プレイヤに違和感を与えるという問題がある。また、仮想カメラを障害物との衝突位置に設定する場合には、プレイヤキャラクタが後方へ移動すると、プレイヤキャラクタと仮想カメラとの距離が狭くなる。つまり、プレイヤキャラクタが迫って来る画面となり、プレイヤに圧迫感を与えるという問題がある。
【0007】
更に、特許文献3に開示された技術によれば、障害物に対しての透過処理を行うため、本来であれば視認することができない画像が生成される。このため、プレイヤは、仮想空間におけるゲームへの没入感を損なうという問題がある。
【0008】
本発明は、上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、プレイヤに対して違和感や圧迫感を与えず、ゲームへの没入感を損なわない画像を生成する画像処理プログラム及びコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【0009】
上記の課題を解決するため、本発明にあっては、請求項1に記載されるようにプレイヤキャラクタと障害物とを含むオブジェクトが配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、当該視錐台の内部に配置されたオブジェクトの画像を生成する画像処理プログラムであって、コンピュータを、前記プレイヤキャラクタの向き及び位置情報と、前記障害物の位置情報とを記憶する記憶手段、前記プレイヤキャラクタから前方の領域内に前記注視点を設定する注視点設定手段、前記プレイヤキャラクタから後方の領域内であって、当該プレイヤキャラクタから所定間隔を空けた位置に前記仮想視点を設定する視点設定手段、前記注視点から前記仮想視点までを結ぶ線分が、前記障害物と交差するか判定する判定手段、前記線分と前記障害物が交差する場合,前記線分と前記障害物が交差する座標であって且つ前記注視点に最も近い交差座標の位置に前記仮想視点を再設定し、前記視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段、として機能させるための画像処理プログラムを要旨としている。
【0010】
また、請求項2に記載されるように、請求項1に記載の画像処理プログラムであって、前記視野角拡大手段は、前記視点設定手段によって設定された仮想視点と前記交差座標との距離を算出し、当該距離が大きいほど,前記視野角の拡大させる角度を大きくすることができる。
【0011】
また、請求項3に記載されるように、請求項2に記載の画像処理プログラムであって、前記記憶手段は、前記障害物のベクトル情報を記憶し、前記視野角拡大手段は、前記交差座標における前記障害物のベクトル情報を読み取り、前記交差座標から注視点GPへのベクトルと前記障害物のベクトルとの成す角度が大きいほど,前記視野角の拡大させる角度を小さくすることができる。
【0012】
また、請求項4に記載されるように、請求項1乃至3のいずれか一項に記載の画像処理プログラムであって、前記視点設定手段は、前記プレイヤキャラクタの右後方又は左後方の位置に仮想視点を設定することができる。
【0013】
また、請求項5に記載されるように、請求項4に記載の画像処理プログラムであって、前記オブジェクトには、敵キャラクタを含み、コンピュータを、さらに、前記仮想視点から前記注視点を通過する直線が、前記障害物又は敵キャラクタと交差する交差座標を算出し、当該交差座標のうち、最も仮想視点に近い交差座標を前記プレイヤキャラクタから発射する発射体の到達位置とする手段、として機能させることができる。
【0014】
また、請求項6に記載されるように、請求項4に記載の画像処理プログラムであって、 前記オブジェクトには、敵キャラクタを含み、コンピュータを、さらに、前記プレイヤキャラクタの向き及び位置情報に基づいて、当該プレイヤキャラクタの前方へ発射される発射体の予想弾道を算出する手段、として機能させ、前記注視点設定手段は、前記予想弾道が前記障害物と交差する交差座標のうち、最も仮想視点に近い交差座標を前記注視点として設定することができる。
【0015】
また、請求項7に記載されるように、請求項1乃至6のいずれか一項に記載の画像処理プログラムを記録するコンピュータ読み取り可能な記録媒体として構成することができる。
【発明の効果】
【0016】
本発明の画像処理プログラム及びコンピュータ読み取り可能な記録媒体にあっては、プレイヤに対して違和感や圧迫感を与えず、ゲームへの没入感を損なわない画像を生成することができる。
【図面の簡単な説明】
【0017】
【図1】本発明の一実施形態にかかるハードウェア構成例を示す図である。
【図2】ビュー空間および射影空間の例を示す図である。
【図3】情報処理装置内で処理に用いられるデータ例を示す図である。
【図4】ゲーム画面例を示す図(その1)である。
【図5】仮想空間を上方から見た図(その1)である。
【図6】仮想空間を上方から見た図(その2)である。
【図7】仮想空間を上方から見た図(その3)である。
【図8】ゲーム画面例を示す図(その2)である。
【図9】仮想空間を上方から見た図(その4)である。
【図10】ゲーム画面例を示す図(その3)である。
【図11】視野角拡大処理の例を示すフローチャートである。
【図12】仮想空間を上方から見た図(その5)である。
【図13】仮想空間を上方から見た図(その6)である。
【発明を実施するための形態】
【0018】
以下、本発明の好適な実施形態につき説明する。なお、これにより本発明が限定されるものではない。
【0019】
(ハードウェアの構成)
図1は、本実施の形態にかかるハードウェア構成の一例を示している。本実施形態の情報処理装置1は、入出力装置であるコントローラ11、音声出力装置であるスピーカ12及び表示装置であるディスプレイモニタ13に接続されて使用される。ここで、ディスプレイモニタ13は、CRTや液晶表示装置等によって構成され、例えば、プレイヤキャラクタを含むゲーム画面を表示する。また、図示しないが、コントローラ11は、十字ボタン、操作ボタン、左ジョイスティック、右ジョイスティックが設けられている。プレイヤは、このコントローラ11を入力操作することによって、ゲーム操作を行うことができる。なお、コントローラ11は、振動発生装置や音声発生装置等の出力装置を備えていても良い。
【0020】
情報処理装置1は、CPU2、メインメモリ3、BIOS−ROM4、通信インタフェース5、記憶部6、ペリフェラルインタフェース7、音声処理部8、及び画像処理部9が、バスラインを介してバスアービタ10に接続されて構成されている。
【0021】
バスアービタ10は、バスラインを介して接続された各デバイスからのバス使用要求に応じてバスアービトレーションを行い、データの流れを制御する。また、バスアービタ10は、各デバイスからの要求に対し、CPUを介さずにデバイス同士でのデータ転送を行うDMA機能も備えている。ここで、バスアービタ10には、データ転送が高速なデバイスを制御する高速バスアービタ101と、データ転送が低速なデバイスを制御する低速バスアービタ102とが含まれ、システム全体のデータ転送速度を高速化することができる。
【0022】
CPU2は、ゲームプログラムの実行やシステム全体の制御や画像表示のための座標計算等を行い、コントローラ11から送信される操作信号に基づいて、例えばゲーム画面内に登場するプレイヤキャラクタの動作を制御する。ゲームプログラムは,本実施の形態における画像処理プログラムを含み,CPU2が該画像処理プログラムを実行することで,後述する本実施の形態における画像処理が行われる。
【0023】
メインメモリ3は、CPU2が処理を行うのに必要なプログラムやデータを格納するメモリとして利用される。ここで、CPU2及びメインメモリ3は、高速バスアービタ101を介して共通接続されている。
【0024】
BIOS−ROM4は、情報処理装置1を起動するためのプログラムやシステムプログラムが格納されている。
【0025】
通信インタフェース5は、外部ネットワークに接続するために、LAN回線等のインタフェースを提供する。これにより、情報処理装置1は、他の情報処理装置やネットワークサーバ等との通信が可能になる。
【0026】
記憶部6は、磁気ディスクや光ディスク等の記録媒体によって構成され、本実施の形態における画像処理プログラムを含むゲームプログラムやデータが格納されている。CPU2は、作業内容に応じて記憶媒体に格納されたプログラムやデータをメインメモリ3に読み出す。ここで、メインメモリ3に読み出されるデータとしては、例えば、プレイヤキャラクタや敵キャラクタを含むオブジェクトを定義するデータ、画像データ、音データ等がある。更に、CPU2は、データ転送速度が低い記録媒体に記録されたデータを、磁気ディスクなどのデータ転送速度が高い記録媒体に転送し、情報処理システム全体のアクセス速度を向上させる。
【0027】
ペリフェラルインタフェース7は、コントローラ11等の周辺機器と接続するために、USB、IEEE1394、シリアル、パラレル、赤外線、無線等のインタフェースを提供する。ペリフェラルインタフェース7は、コントローラ11から送信された操作信号を、低速バスアービタ102へ送信する。なお、ペリフェラルインタフェース7は、コントローラ11へゲーム状況に応じた振動信号や音声信号を送信することもできる。
【0028】
音声処理部8には、サウンドコントローラ81が含まれ、サウンドコントローラ81には、サウンドメモリ811が含まれる。音声処理部8は、記録部6やサウンドメモリ811に格納された音データを読み出して音声を生成する。また、サウンドコントローラ81は、例えば、プレイヤによる操作やゲーム進行に応じて生成した音声をスピーカ13に出力する。
【0029】
画像処理部9には、GPU91、VRAM92が含まれる。ここで、VRAM92は、フレームバッファ921、テクスチャバッファ922、Zバッファ923等の格納領域を有している。フレームバッファ921は、画面表示を行う1フレーム分のピクセルデータを記憶するために利用される。テクスチャバッファ922は、オブジェクトを形成するポリゴンにテクスチャマッピングを行う場合に、素材となる画像データ(テクスチャ)を記憶するために利用される。Zバッファ923は、画面表示を行う各ピクセルにおけるオブジェクトの深度情報を記憶するために利用される。
【0030】
画像処理部9は、オブジェクトを形成するポリゴンのデータ(頂点座標、テクスチャ座標、色値やα値、法線ベクトル等)に基づいて頂点処理を行い、ラスタライズ、テクスチャマッピング、陰面消去等のピクセル処理を行う。次いで、画像処理部9は、ピクセル処理によって得られたピクセルデータをフレームバッファ921に記憶する。
【0031】
表示画像の生成に関しては、CPU2の制御のもと、ゲーム状況に従って表示すべきオブジェクトを形成するポリゴンが仮想空間内に配置され、GPU91の処理により、仮想カメラVP(仮想視点)から見た二次元画像に変換されて生成される。
【0032】
GPU91は、頂点処理として、ワールド変換、光源計算、ビュー変換、クリッピング、射影変換、ビューポート変換等が行われる。図2(a)は、ビュー空間の例を示している。ビュー空間は、ワールド空間を、仮想カメラVP、注視点GP、及び仮想カメラVPの上方方向の情報に基づいて変換した座標空間であり、仮想カメラVPから注視点GPの方向に対して横軸がx軸、縦軸がy軸、奥行きがz軸となる。そして、クリッピングとして、仮想カメラVPから注視点GPの方向に対してx軸方向およびy軸方向にそれぞれ視野角だけ振った範囲において、仮想カメラVPに近い側には近クリップ平面CP1が設定され、遠い側には遠クリップ平面CP2が設定される。近クリップ平面CP1と遠クリップ平面CP2と視野角を示す面で囲まれる六面体は、視錐台と呼ばれ、その内部に配置されるオブジェクトが描画対象となる。図2(b)は、射影変換を行った射影空間の例を示しており、図2(a)に示したビュー空間を、視野角、アスペクト比、近クリップ平面CP1、及び遠クリップ平面CP2の情報に基づいて、−1≦x≦1、−1≦y≦1、0≦z≦1の範囲の空間に変換している。そして、GPU91内のバーテックスシェーダは、射影空間へ変換されたポリゴンの頂点をビューポート変換し、頂点処理を終了する。
【0033】
GPU91は、ピクセル処理として、頂点処理によって組み立てられた多角形、線、及び点のデータからラスタライズ及び補間を行う。そして、このラスタライズ及び補間されたピクセルデータに対して、テクスチャマッピング、アルファテスト、深度情報に基づく深度テスト(陰面消去)、ブレンディング等を行って、画面に配置されるピクセルデータをフレームバッファ921に記憶する。
【0034】
そして、GPU91内のディスプレイコントローラ911は、フレームバッファ921に記録されたピクセルデータを周期的に読み出し、映像信号をディスプレイモニタ13に送信する。
【0035】
(各種データの説明)
図3は、情報処理装置1内で画像処理に用いられるデータ例を示す図である。データには、モデル関連データと一時的データとが含まれる。
【0036】
モデル関連データには、オブジェクトであるプレイヤキャラクタデータと敵キャラクタデータと障害物データとが含まれている。
【0037】
プレイヤキャラクタデータは、主としてプレイヤからのコントローラ11による操作によって制御されるキャラクタのデータであって、プレイヤキャラクタを形成するポリゴンデータ、顔基準座標を含んでいる。ここで、ポリゴンデータは、頂点座標、テクスチャ座標、色値やα値、法線ベクトルを含み、後述する敵キャラクタデータや障害物データも同様である。なお、顔基準座標は、例えば、プレイヤキャラクタの首のやや上の三次元座標である。
【0038】
敵キャラクタデータは、プレイヤキャラクタと敵対する複数のキャラクタのデータであり、敵キャラクタを形成するポリゴンデータ、顔基準座標、行動スクリプトを含んでいる。行動スクリプトは、敵キャラクタの行動開始条件と行動内容とを記述したものである。例えば、CPU2は、その敵キャラクタの追尾開始距離以内にプレイヤキャラクタが入ったと判定すると、その敵キャラクタはプレイヤキャラクタの追尾を開始する。また、CPU2は、その敵キャラクタの攻撃開始距離以内にプレイヤキャラクタが入ったと判定すると、その敵キャラクタはプレイヤキャラクタへの攻撃を開始する。
【0039】
障害物データは、プレイヤキャラクタや仮想カメラVPが移動不可能な範囲を定義した、地面GRや壁W、天井CL等の複数の障害物に関するデータであり、障害物を形成するポリゴンデータ、仮想空間内に配置される配置座標を含んでいる。
【0040】
一時的データには、仮想空間内におけるデータであって、プレイヤキャラクタ及び敵キャラクタの座標及び向き情報、仮想カメラVP(仮想視点)の座標、注視点GPの座標、視野角θ、注視点GPから仮想カメラVPまでの線分と障害物とが交差する交差座標のうち最も注視点GPに近い交差座標CC、仮想カメラVPの位置から注視点GPへのベクトルと交差座標CCにおける障害物の法線ベクトルとのなす角度δ、元の仮想カメラVP’の位置と新たな仮想カメラVPの位置(交差座標CC)との距離Dの値が含まれる。さらに、一時的データには、現在の視野角を拡大するための視野角拡大率Sの値が含まれる。ここで、プレイヤキャラクタ及び敵キャラクタの向き情報は、例えば、身体の向き又は発射体を発射する方向に対応する。
【0041】
(動作)
続いて,本実施の形態における画像処理プログラムの実行により具現される画像処理の動作について,サードパーソンシューティングゲームの画面例を用いて説明する。
【0042】
図4は、本発明にかかるサードパーソンシューティングゲームの画面例を示す図である。図5は、図4を上方から見た図であって、仮想カメラVP、注視点GP、視野角θの設定位置や、プレイヤキャラクタPCの位置及び正面方向(矢印方向)等を示した図である。
【0043】
図4において、プレイヤキャラクタPC、敵キャラクタEC、障害物のオブジェクトである地面GR、壁W1〜W3、天井CLが仮想空間内に配置されている。また、図4において、プレイヤキャラクタPCは、常に画面左下に表示されるように構成されている。これは、照準位置となる画面中央にプレイヤキャラクタを表示させないためである。なお、このように照準位置を画面中央に固定することによって、プレイヤは、プレイヤキャラクタPCがどの向きに攻撃を行うかが分かりやすくなる。
【0044】
また、図5において、CPU2は、プレイヤキャラクタPCの顔基準座標Fを(x,y,z)=(0,0,0)とし、プレイヤキャラクタPCの右方向をx方向、上方向をy方向、正面方向をz方向とした座標系において、注視点GPをプレイヤキャラクタPCの右前方(xp,0,zp)、仮想カメラVPの位置をプレイヤキャラクタの右後方(xv,0,−zv)に設定する。ここで、xp、zp、xv及びzvは、正の値であって、視錐台内にプレイヤキャラクタPCが含まれるように各値が設定される。そして、CPU2は、注視点GP、仮想カメラVPの位置を仮想空間内の座標系に戻したものをメインメモリ3に記憶する。
【0045】
なお、画面中央にプレイヤキャラクタを表示させなければ良く、例えば、仮想カメラVPをプレイヤキャラクタの後方領域のいずれかに設定して、注視点GPをプレイヤキャラクタの右又は左前方にずらして設定しても良い。または、注視点GPをプレイヤキャラクタの前方領域に設定して、仮想カメラVPの位置をプレイヤキャラクタの右後方又は左後方にずらして設定しても良い。さらに,プレイヤキャラクタの頭上に仮想カメラVPの位置を設定してもよい。
【0046】
CPU2は、仮想カメラVPから注視点GPの方向に対する近クリップ平面CP1までの距離及び遠クリップ平面CP2までの距離に基づいて、近クリップ平面CP1及び遠クリップ平面CP2を設定する。さらに,CPU2は,視野角θをあらかじめ設定された基準の視野角θaの値に設定し、近クリップ平面CP1,遠クリップ平面CP2及び視野角θaにより,視錐台を形成する。このとき、視錐台内には、プレイヤキャラクタが含まれるように各値が設定され、近クリップ平面CP1は、図5に示されるように仮想カメラVPの近傍に設定されており、遠クリップ平面CP2は、図示されない遠方に設定されている。
【0047】
本ゲームでは、プレイヤは、コントローラ11の左ジョイスティックの操作によってプレイヤキャラクタの位置を移動させ、右ジョイスティックの操作によってプレイヤキャラクタの向きを変更することができる。つまり、プレイヤは、プレイヤキャラクタを、正面方向だけでなく、後方や左右方向へ移動させることができる。プレイヤが、プレイヤキャラクタの移動または向きの変更をすると、CPU2は、メインメモリ3に記憶されたプレイヤキャラクタの顔基準座標の三次元座標、及び向き情報を更新し、上述したプレイヤキャラクタの顔基準座標、及び向きを基準とした座標系を算出して注視点GP、仮想カメラVPの座標位置を設定し直す。
【0048】
また、プレイヤは、コントローラ11の操作ボタンの操作によって、プレイヤキャラクタの武器から発射される弾丸等の発射体を、仮想カメラVPから注視点GPを通過する直線上にある到達位置へ発射することができる。なお、この到達位置は、図4では、画面中央の照準位置となる。ここで、図5に示されるように、弾丸等の発射体が到達する到達位置は、仮想カメラVPから注視点GPを通過する直線がオブジェクトと交差する交差座標であって、仮想カメラVPの位置から最も近い交差座標CBに設定される。なお、交差座標CBにおいて交差するオブジェクトが敵キャラクタである場合、CPU2は、注視点GPを、交差座標CB又はその敵キャラクタの座標に再設定し、ロックオンを行っても良い。さらに、CPU2は、プレイヤキャラクタの位置から正面方向へ向けて、発射体の予想弾道を計算し、予想弾道内に敵キャラクタがいる場合、注視点GPを、その敵キャラクタの座標に再設定してもよい。これにより、初心者でも簡単に敵キャラクタを狙えることができる。そして、CPU2は、敵キャラクタや障害物に弾丸等の発射体が到達したかを判定し、ゲーム進行に反映する。
【0049】
ここで,プレイヤキャラクタが後方に後退するように移動し,後方にある壁に接近する場合を考える。この場合,プレイヤキャラクタの右後方にある仮想カメラVPが壁面に衝突し,さらに壁面を通り越してしまう場合がある。
【0050】
図6は,仮想カメラVPが壁を越えて位置する状態を上方から見た図である。仮想カメラVPは,プレイヤキャラクタPCの後方にある壁W4の裏側に位置する。従って,この状態をそのまま描画すると,仮想カメラVPとプレイヤキャラクタPCとの間に壁W4が位置することから,画面全体が壁に覆われた画像となってしまい,本来表示すべき壁W4の前面側の画像を表示することができない。
【0051】
そのため,仮想カメラVPが壁W4などの障害物と衝突し,その内部又はその裏側に位置する場合は,仮想カメラVPを壁W4と衝突する座標に設定し直すことで,壁W4より前面側の画像が描画される。
【0052】
図7は,仮想カメラVPを壁と衝突する座標に設定した状態を示す仮想空間を上方から見た図であり,図8は,図7に示す仮想カメラVPにより表示される画面例を示す図である。図7に示されるように,当初壁W4の裏側に設定された元の仮想カメラVP’から,壁W4との衝突する座標CCに仮想カメラVPを再設定することで,図8に示すように,プレイヤキャラクタPC及び敵キャラクタECが位置する壁W4の前面側の画像が表示される。
【0053】
このとき,再設定される仮想カメラVPは,元の仮想カメラVP’より距離D前方に位置するため,プレイヤキャラクタPCとの距離が縮まる。そうすると,図8に示すとおり,画面内におけるプレイヤキャラクタPCの大きさが大きくなり,プレイヤキャラクタPCが迫ってくるようにプレイヤが錯覚し,プレイヤに違和感及び圧迫感を与えることになる。
【0054】
本実施の形態における画像処理では,この違和感及び圧迫感をプレイヤに覚えさせないようにするために,仮想カメラVPを壁W4との衝突する座標に変更する場合,視野角θを拡大する。
【0055】
図9は,視野角を拡大した状態を示す仮想空間を上方から見た図であり,図10は,図9に示す仮想カメラVPにより表示される画面例を示す図である。図9に示すように,仮想カメラVPを,壁W4と衝突する座標CCに設定した場合,視野角θを,あらかじめ設定された基準の視野角θaよりも拡大させたθbとする。視野角を拡大することで,描画範囲が広がり,描画対象のオブジェクトが相対的に縮小される。そのため,図10に示すように,仮想カメラVPを急激に前方に移動させたことにより生じる画像の変化が緩和され,プレイヤが感じる違和感及び圧迫感を抑えることができる。
【0056】
図11は、本実施の形態における画像処理を実行するフローチャートであり,拡大させる視野角の角度を求める処理である。本画像処理は,CPU2が画像処理プログラムを実行することにより実現される。図11において、毎フレームもしくは数フレームおきに処理を開始すると(ステップS100)、仮想カメラVP、注視点GPの位置と、視野角θをθaに設定する(ステップS101)。ここで、θaは所定の値であって、視錐台内にプレイヤキャラクタを含むように定められた値である。
【0057】
次いで、注視点GPから仮想カメラVPまでの線分と障害物とが交差する交差座標があるか否かを判定する(ステップS102)。交差座標がない場合(ステップS102のNo)、仮想カメラVP、及び視野角θ(=θa)を確定し(ステップS109)、処理を終了する(ステップS110)。
【0058】
交差座標がある場合(ステップS102のYes)、注視点GPに最も近い交差座標CCの座標を取得する(S103)。交差座標がある場合は,図9で示したように,例えば,プレイヤキャラクタPCが後退して,後方にある壁W4に接近することで,プレイヤキャラクタの右後方にある仮想カメラVPが壁面に衝突し,さらに壁面を通り越してしまう場合である。
【0059】
次いで、交差座標CCにおける障害物の法線ベクトルを取得する(ステップS104)。次いで、仮想カメラVPから注視点GPへのベクトルと、交差座標CCにおける障害物の法線ベクトルとのなす角度δを算出する(ステップS105)。
【0060】
次いで、交差座標CCを新たな仮想カメラVPの位置に再設定し、元の仮想カメラVPの位置と交差座標CC(新たな仮想カメラVPの位置)との距離Dを算出する(ステップS106)。
【0061】
次いで、距離Dと角度δから、視野角拡大率Sを算出する(ステップS107)。ここで、視野角拡大率Sは、現在の視野角であるθaを何倍にするか決める値であって、S=1+(D×cos(δ)×C)の式によって算出される。なお、Cは定数である。
【0062】
視野角拡大率Sを求める上式で,距離Dに角度δを乗算するのは以下の理由による。図12は、プレイヤキャラクタが矢印方向を向き、右方向へ移動している場合の上から見た図である。壁W5は,その法線ベクトルが注視点GPから仮想カメラVPのベクトルに対して角度δを有して,プレイヤキャラクタPCの右方向に配置されている。プレイヤキャラクタPCの移動に伴い、仮想カメラVPも同様に、注視点GPの方向を正面方向として、右方向へ移動している。図13は、図12の後に仮想カメラVPが右方向にある壁W5に衝突し、仮想カメラVPが、元の仮想カメラVP’から交差座標CCに再設定された場合の上方から見た図である。ここで、上述したように、仮想カメラVPを、元の仮想カメラVP’から交差座標CCへ再設定する場合、仮想カメラVPが右方向にある障害物へ衝突すると、後方の障害物に衝突する場合と比べて距離Dが大きくなる。後方の障害物に衝突する場合(角度δ=0)は,プレイヤキャラクタPCの後方への移動距離がそのまま距離Dとなるが,壁W5に角度を有して衝突する場合(角度δ>0),図13に示すように,プレイヤキャラクタPCの右方向への移動距離よりも距離Dが大きくなる。
【0063】
つまり、プレイヤキャラクタPCが注視点GPと仮想カメラVPのベクトルに対して角度がある障害物に接近した場合,プレイヤキャラクタPCのわずかな移動により視野角の拡大が急激に行われ、プレイヤに対して違和感を与えてしまう。したがって、視野角拡大率Sを算出する際、距離Dにcos(δ)を掛けて拡大率を調整している。
【0064】
図11に戻り、次いで、現在の視野角θaと視野角拡大率Sから、新たな視野角θbを算出する(ステップS108)。ここで、視野角θbは、θb=arctan(tan(θa/2)×S)×2の式によって算出される。
【0065】
次いで、注視点GP、仮想カメラVPの位置、視野角θ(=θb)を確定し(ステップS109)、処理を終了する(ステップS110)。
【0066】
上述したとおり、プレイヤキャラクタの移動により注視点GPから仮想カメラVPのベクトルが障害物と交差する場合,仮想カメラVPをその交差座標に設定するとともに,視野角を基準角度θaから算出された角度θbに拡大させる。そして,拡大させる視野角の角度を算出するための視野角拡大率Sは、距離Dが大きいほど大きくなる。これによって、仮想カメラVPが後方の障害物に衝突し、さらにプレイヤキャラクタが後方へ移動していく場合であっても、徐々に視野角を大きくすることができる。つまり、仮想カメラVPが障害物によって後方へ移動できない場合であっても、プレイヤに対して、仮想カメラVPが徐々に後方へ下がっていく(障害物を越えていく)感覚を与えることができる。
【0067】
なお、視野角θa及びθbは、左右方向の視野角であっても、上下方向の視野角であってもよく、どちらか一方の視野角を算出すれば、予め設定されたアスペクト比によって、もう一方の視野角を求めることができる。
【0068】
(総括)
以上に説明したように、注視点GPと仮想カメラVPとの間に障害物が存在しても、自然な形でプレイヤキャラクタを表示し、プレイヤに圧迫感等を感じさせなくすることができる。
【0069】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【符号の説明】
【0070】
1 情報処理装置
2 CPU
3 メインメモリ
4 BIOS−ROM
5 通信インタフェース
6 記憶部
7 ペリフェラルインタフェース
8 音声処理部
9 画像処理部
10 バスアービタ
11 入出力装置(コントローラ)
12 音声出力装置(スピーカ)
13 表示装置(ディスプレイモニタ)
【特許請求の範囲】
【請求項1】
プレイヤキャラクタと障害物とを含むオブジェクトが配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、当該視錐台の内部に配置されたオブジェクトの画像を生成する画像処理プログラムであって、
コンピュータを、
前記プレイヤキャラクタの向き及び位置情報と、前記障害物の位置情報とを記憶する記憶手段、
前記プレイヤキャラクタから前方の領域内に前記注視点を設定する注視点設定手段、
前記プレイヤキャラクタから後方の領域内であって、当該プレイヤキャラクタから所定間隔を空けた位置に前記仮想視点を設定する視点設定手段、
前記注視点から前記仮想視点までを結ぶ線分が、前記障害物と交差するか判定する判定手段、
前記線分と前記障害物が交差する場合,前記線分と前記障害物が交差する座標であって且つ前記注視点に最も近い交差座標の位置に前記仮想視点を再設定し、前記視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段、
として機能させるための画像処理プログラム。
【請求項2】
請求項1に記載の画像処理プログラムであって、
前記視野角拡大手段は、
前記視点設定手段によって設定された仮想視点と前記交差座標との距離を算出し、当該距離が大きいほど,前記視野角の拡大させる角度を大きくする
ことを特徴とする画像処理プログラム。
【請求項3】
請求項2に記載の画像処理プログラムであって、
前記記憶手段は、
前記障害物のベクトル情報を記憶し、
前記視野角拡大手段は、
前記交差座標における前記障害物のベクトル情報を読み取り、前記交差座標から注視点GPへのベクトルと前記障害物のベクトルとの成す角度が大きいほど,前記視野角の拡大させる角度を小さくする
ことを特徴とする画像処理プログラム。
【請求項4】
請求項1乃至3のいずれか一項に記載の画像処理プログラムであって、
前記視点設定手段は、
前記プレイヤキャラクタの右後方又は左後方の位置に仮想視点を設定する
ことを特徴とする画像処理プログラム。
【請求項5】
請求項4に記載の画像処理プログラムであって、
前記オブジェクトには、敵キャラクタを含み、
コンピュータを、さらに、
前記仮想視点から前記注視点を通過する直線が、前記障害物又は敵キャラクタと交差する交差座標を算出し、当該交差座標のうち、最も仮想視点に近い交差座標を前記プレイヤキャラクタから発射する発射体の到達位置とする手段、
として機能させるための画像処理プログラム。
【請求項6】
請求項4に記載の画像処理プログラムであって、
前記オブジェクトには、敵キャラクタを含み、
コンピュータを、さらに、
前記プレイヤキャラクタの向き及び位置情報に基づいて、当該プレイヤキャラクタの前方へ発射される発射体の予想弾道を算出する手段、
として機能させ、
前記注視点設定手段は、
前記予想弾道が前記障害物又は敵キャラクタと交差する交差座標のうち、最も仮想視点に近い交差座標を前記注視点として設定する
ことを特徴とする画像処理プログラム。
【請求項7】
請求項1乃至6のいずれか一項に記載の画像処理プログラムを記録するコンピュータ読み取り可能な記録媒体。
【請求項1】
プレイヤキャラクタと障害物とを含むオブジェクトが配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、当該視錐台の内部に配置されたオブジェクトの画像を生成する画像処理プログラムであって、
コンピュータを、
前記プレイヤキャラクタの向き及び位置情報と、前記障害物の位置情報とを記憶する記憶手段、
前記プレイヤキャラクタから前方の領域内に前記注視点を設定する注視点設定手段、
前記プレイヤキャラクタから後方の領域内であって、当該プレイヤキャラクタから所定間隔を空けた位置に前記仮想視点を設定する視点設定手段、
前記注視点から前記仮想視点までを結ぶ線分が、前記障害物と交差するか判定する判定手段、
前記線分と前記障害物が交差する場合,前記線分と前記障害物が交差する座標であって且つ前記注視点に最も近い交差座標の位置に前記仮想視点を再設定し、前記視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段、
として機能させるための画像処理プログラム。
【請求項2】
請求項1に記載の画像処理プログラムであって、
前記視野角拡大手段は、
前記視点設定手段によって設定された仮想視点と前記交差座標との距離を算出し、当該距離が大きいほど,前記視野角の拡大させる角度を大きくする
ことを特徴とする画像処理プログラム。
【請求項3】
請求項2に記載の画像処理プログラムであって、
前記記憶手段は、
前記障害物のベクトル情報を記憶し、
前記視野角拡大手段は、
前記交差座標における前記障害物のベクトル情報を読み取り、前記交差座標から注視点GPへのベクトルと前記障害物のベクトルとの成す角度が大きいほど,前記視野角の拡大させる角度を小さくする
ことを特徴とする画像処理プログラム。
【請求項4】
請求項1乃至3のいずれか一項に記載の画像処理プログラムであって、
前記視点設定手段は、
前記プレイヤキャラクタの右後方又は左後方の位置に仮想視点を設定する
ことを特徴とする画像処理プログラム。
【請求項5】
請求項4に記載の画像処理プログラムであって、
前記オブジェクトには、敵キャラクタを含み、
コンピュータを、さらに、
前記仮想視点から前記注視点を通過する直線が、前記障害物又は敵キャラクタと交差する交差座標を算出し、当該交差座標のうち、最も仮想視点に近い交差座標を前記プレイヤキャラクタから発射する発射体の到達位置とする手段、
として機能させるための画像処理プログラム。
【請求項6】
請求項4に記載の画像処理プログラムであって、
前記オブジェクトには、敵キャラクタを含み、
コンピュータを、さらに、
前記プレイヤキャラクタの向き及び位置情報に基づいて、当該プレイヤキャラクタの前方へ発射される発射体の予想弾道を算出する手段、
として機能させ、
前記注視点設定手段は、
前記予想弾道が前記障害物又は敵キャラクタと交差する交差座標のうち、最も仮想視点に近い交差座標を前記注視点として設定する
ことを特徴とする画像処理プログラム。
【請求項7】
請求項1乃至6のいずれか一項に記載の画像処理プログラムを記録するコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−75482(P2012−75482A)
【公開日】平成24年4月19日(2012.4.19)
【国際特許分類】
【出願番号】特願2010−220720(P2010−220720)
【出願日】平成22年9月30日(2010.9.30)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】
【公開日】平成24年4月19日(2012.4.19)
【国際特許分類】
【出願日】平成22年9月30日(2010.9.30)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】
[ Back to top ]