(57)【特許請求の範囲】
【請求項１】
プレイヤキャラクタと障害物とを含むオブジェクトが配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、当該視錐台の内部に配置されたオブジェクトの画像を生成する画像処理プログラムであって、
コンピュータを、
前記プレイヤキャラクタの向き及び位置情報と、前記障害物の位置情報とを記憶する記憶手段、
前記プレイヤキャラクタから前方の領域内に前記注視点を設定する注視点設定手段、
前記プレイヤキャラクタから後方の領域内であって、当該プレイヤキャラクタから所定間隔を空けた位置に前記仮想視点を設定する視点設定手段、
前記注視点から前記仮想視点までを結ぶ線分が、前記障害物と交差するか判定する判定手段、
前記線分と前記障害物が交差する場合、前記線分と前記障害物が交差する座標であって且つ前記注視点に最も近い交差座標の位置に前記仮想視点を再設定し、前記視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段、
として機能させ、
前記視野角拡大手段は、
前記視点設定手段によって設定された仮想視点と前記交差座標との距離を算出し、当該距離が大きいほど、前記視野角の拡大させる角度を大きくする
ことを特徴とする画像処理プログラム。
【請求項２】
請求項１に記載の画像処理プログラムであって、
前記記憶手段は、
前記障害物のベクトル情報を記憶し、
前記視野角拡大手段は、
前記交差座標における前記障害物のベクトル情報を読み取り、前記交差座標から注視点へのベクトルと前記障害物のベクトルとの成す角度が大きいほど、前記視野角の拡大させる角度を小さくする
ことを特徴とする画像処理プログラム。
【請求項３】
請求項１又は２に記載の画像処理プログラムであって、
前記視点設定手段は、
前記プレイヤキャラクタの右後方又は左後方の位置に仮想視点を設定する
ことを特徴とする画像処理プログラム。
【請求項４】
請求項３に記載の画像処理プログラムであって、
前記オブジェクトには、敵キャラクタを含み、
コンピュータを、さらに、
前記仮想視点から前記注視点を通過する直線が、前記障害物又は敵キャラクタと交差する交差座標を算出し、当該交差座標のうち、最も仮想視点に近い交差座標を前記プレイヤキャラクタから発射する発射体の到達位置とする手段、
として機能させるための画像処理プログラム。
【請求項５】
請求項３に記載の画像処理プログラムであって、
前記オブジェクトには、敵キャラクタを含み、
コンピュータを、さらに、
前記プレイヤキャラクタの向き及び位置情報に基づいて、当該プレイヤキャラクタの前方へ発射される発射体の予想弾道を算出する手段、
として機能させ、
前記注視点設定手段は、
前記予想弾道が前記障害物又は敵キャラクタと交差する交差座標のうち、最も仮想視点に近い交差座標を前記注視点として設定する
ことを特徴とする画像処理プログラム。
【請求項６】
プレイヤキャラクタと障害物とを含むオブジェクトが配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、当該視錐台の内部に配置されたオブジェクトの画像を生成する画像処理プログラムであって、
コンピュータを、
前記プレイヤキャラクタの向き及び位置情報と、前記障害物の位置情報とを記憶する記憶手段、
前記プレイヤキャラクタから前方の領域内に前記注視点を設定する注視点設定手段、
前記プレイヤキャラクタから後方の領域内であって、当該プレイヤキャラクタから所定間隔を空けた位置に前記仮想視点を設定する視点設定手段、
前記注視点から前記仮想視点までを結ぶ線分が、前記障害物と交差するか判定する判定手段、
前記線分と前記障害物が交差する場合、前記線分と前記障害物が交差する座標であって且つ前記注視点に最も近い交差座標の位置に前記仮想視点を再設定し、前記視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段、
として機能させ、
前記視点設定手段は、
前記プレイヤキャラクタの右後方又は左後方の位置に仮想視点を設定し、
前記オブジェクトには、敵キャラクタを含み、
コンピュータを、さらに、
前記仮想視点から前記注視点を通過する直線が、前記障害物又は敵キャラクタと交差する交差座標を算出し、当該交差座標のうち、最も仮想視点に近い交差座標を前記プレイヤキャラクタから発射する発射体の到達位置とする手段、
として機能させるための画像処理プログラム。
【請求項７】
プレイヤキャラクタと障害物とを含むオブジェクトが配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、当該視錐台の内部に配置されたオブジェクトの画像を生成する画像処理プログラムであって、
コンピュータを、
前記プレイヤキャラクタの向き及び位置情報と、前記障害物の位置情報とを記憶する記憶手段、
前記プレイヤキャラクタから前方の領域内に前記注視点を設定する注視点設定手段、
前記プレイヤキャラクタから後方の領域内であって、当該プレイヤキャラクタから所定間隔を空けた位置に前記仮想視点を設定する視点設定手段、
前記注視点から前記仮想視点までを結ぶ線分が、前記障害物と交差するか判定する判定手段、
前記線分と前記障害物が交差する場合、前記線分と前記障害物が交差する座標であって且つ前記注視点に最も近い交差座標の位置に前記仮想視点を再設定し、前記視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段、
として機能させ、
前記視点設定手段は、
前記プレイヤキャラクタの右後方又は左後方の位置に仮想視点を設定し、
前記オブジェクトには、敵キャラクタを含み、
コンピュータを、さらに、
前記プレイヤキャラクタの向き及び位置情報に基づいて、当該プレイヤキャラクタの前方へ発射される発射体の予想弾道を算出する手段、
として機能させ、
前記注視点設定手段は、
前記予想弾道が前記障害物又は敵キャラクタと交差する交差座標のうち、最も仮想視点に近い交差座標を前記注視点として設定する
ことを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオゲームやＣＧ（Computer Graphics）ビデオ等における表示画像の生成技術に関する。
【背景技術】
【０００２】
従来から、仮想空間内に配置されたプレイヤキャラクタを俯瞰視点にて操作するサードパーソンシューティングゲーム（ＴＰＳ）や、ロールプレイングゲーム（ＲＰＧ）が知られている。
【０００３】
このようなゲームでは、プレイヤキャラクタを常に画面表示させるため、仮想カメラを、プレイヤキャラクタの後方の予め定められた位置に、かつ、プレイヤキャラクタの正面方向を向いて設定する場合が多い（例えば、特許文献１参照）。
【０００４】
この場合、仮想カメラとプレイヤキャラクタとの間に障害物が存在すると、プレイヤキャラクタが画面表示されず、プレイヤはプレイヤキャラクタを操作できない。そこで、障害物の存在によって、仮想カメラの位置や注視点を移動制御する技術（特許文献２参照）や、障害物を透過処理する技術（特許文献３参照）が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３０５１７６号公報
【特許文献２】特開２００６−１２２３２８号公報
【特許文献３】特許第３７６９７４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献２に開示された技術によれば、障害物の存在によって仮想カメラの位置や注視点を移動させるため、画面内におけるプレイヤキャラクタの向きや位置が急激に変更され、プレイヤに違和感を与えるという問題がある。また、仮想カメラを障害物との衝突位置に設定する場合には、プレイヤキャラクタが後方へ移動すると、プレイヤキャラクタと仮想カメラとの距離が狭くなる。つまり、プレイヤキャラクタが迫って来る画面となり、プレイヤに圧迫感を与えるという問題がある。
【０００７】
更に、特許文献３に開示された技術によれば、障害物に対しての透過処理を行うため、本来であれば視認することができない画像が生成される。このため、プレイヤは、仮想空間におけるゲームへの没入感を損なうという問題がある。
【０００８】
本発明は、上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、プレイヤに対して違和感や圧迫感を与えず、ゲームへの没入感を損なわない画像を生成する画像処理プログラム及びコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【０００９】
上記の課題を解決するため、本発明にあっては、請求項１に記載されるようにプレイヤキャラクタと障害物とを含むオブジェクトが配置された仮想空間に、仮想視点、注視点、及び視野角に基づく視錐台を形成し、当該視錐台の内部に配置されたオブジェクトの画像を生成する画像処理プログラムであって、コンピュータを、前記プレイヤキャラクタの向き及び位置情報と、前記障害物の位置情報とを記憶する記憶手段、前記プレイヤキャラクタから前方の領域内に前記注視点を設定する注視点設定手段、前記プレイヤキャラクタから後方の領域内であって、当該プレイヤキャラクタから所定間隔を空けた位置に前記仮想視点を設定する視点設定手段、前記注視点から前記仮想視点までを結ぶ線分が、前記障害物と交差するか判定する判定手段、前記線分と前記障害物が交差する場合、前記線分と前記障害物が交差する座標であって且つ前記注視点に最も近い交差座標の位置に前記仮想視点を再設定し、前記視野角をあらかじめ設定された基準角度から拡大させる視野角拡大手段、として機能させ、前記視野角拡大手段は、前記視点設定手段によって設定された仮想視点と前記交差座標との距離を算出し、当該距離が大きいほど、前記視野角の拡大させる角度を大きくするための画像処理プログラムを要旨としている。
【００１１】
また、請求項２に記載されるように、請求項１に記載の画像処理プログラムであって、前記記憶手段は、前記障害物のベクトル情報を記憶し、前記視野角拡大手段は、前記交差座標における前記障害物のベクトル情報を読み取り、前記交差座標から注視点へのベクトルと前記障害物のベクトルとの成す角度が大きいほど、前記視野角の拡大させる角度を小さくすることができる。
【００１２】
また、請求項３に記載されるように、請求項１又は２に記載の画像処理プログラムであって、前記視点設定手段は、前記プレイヤキャラクタの右後方又は左後方の位置に仮想視点を設定することができる。
【００１３】
また、請求項４に記載されるように、請求項３に記載の画像処理プログラムであって、前記オブジェクトには、敵キャラクタを含み、コンピュータを、さらに、前記仮想視点から前記注視点を通過する直線が、前記障害物又は敵キャラクタと交差する交差座標を算出し、当該交差座標のうち、最も仮想視点に近い交差座標を前記プレイヤキャラクタから発射する発射体の到達位置とする手段、として機能させることができる。
【００１４】
また、請求項５に記載されるように、請求項３に記載の画像処理プログラムであって、前記オブジェクトには、敵キャラクタを含み、コンピュータを、さらに、前記プレイヤキャラクタの向き及び位置情報に基づいて、当該プレイヤキャラクタの前方へ発射される発射体の予想弾道を算出する手段、として機能させ、前記注視点設定手段は、前記予想弾道が前記障害物と交差する交差座標のうち、最も仮想視点に近い交差座標を前記注視点として設定することができる。
【００１５】
また、請求項１乃至５のいずれか一項に記載の画像処理プログラムを記録するコンピュータ読み取り可能な記録媒体として構成することができる。
【発明の効果】
【００１６】
本発明の画像処理プログラム及びコンピュータ読み取り可能な記録媒体にあっては、プレイヤに対して違和感や圧迫感を与えず、ゲームへの没入感を損なわない画像を生成することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態にかかるハードウェア構成例を示す図である。
【図２】ビュー空間および射影空間の例を示す図である。
【図３】情報処理装置内で処理に用いられるデータ例を示す図である。
【図４】ゲーム画面例を示す図（その１）である。
【図５】仮想空間を上方から見た図（その１）である。
【図６】仮想空間を上方から見た図（その２）である。
【図７】仮想空間を上方から見た図（その３）である。
【図８】ゲーム画面例を示す図（その２）である。
【図９】仮想空間を上方から見た図（その４）である。
【図１０】ゲーム画面例を示す図（その３）である。
【図１１】視野角拡大処理の例を示すフローチャートである。
【図１２】仮想空間を上方から見た図（その５）である。
【図１３】仮想空間を上方から見た図（その６）である。
【発明を実施するための形態】
【００１８】
以下、本発明の好適な実施形態につき説明する。なお、これにより本発明が限定されるものではない。
【００１９】
（ハードウェアの構成）
図１は、本実施の形態にかかるハードウェア構成の一例を示している。本実施形態の情報処理装置１は、入出力装置であるコントローラ１１、音声出力装置であるスピーカ１２及び表示装置であるディスプレイモニタ１３に接続されて使用される。ここで、ディスプレイモニタ１３は、ＣＲＴや液晶表示装置等によって構成され、例えば、プレイヤキャラクタを含むゲーム画面を表示する。また、図示しないが、コントローラ１１は、十字ボタン、操作ボタン、左ジョイスティック、右ジョイスティックが設けられている。プレイヤは、このコントローラ１１を入力操作することによって、ゲーム操作を行うことができる。なお、コントローラ１１は、振動発生装置や音声発生装置等の出力装置を備えていても良い。
【００２０】
情報処理装置１は、ＣＰＵ２、メインメモリ３、ＢＩＯＳ−ＲＯＭ４、通信インタフェース５、記憶部６、ペリフェラルインタフェース７、音声処理部８、及び画像処理部９が、バスラインを介してバスアービタ１０に接続されて構成されている。
【００２１】
バスアービタ１０は、バスラインを介して接続された各デバイスからのバス使用要求に応じてバスアービトレーションを行い、データの流れを制御する。また、バスアービタ１０は、各デバイスからの要求に対し、ＣＰＵを介さずにデバイス同士でのデータ転送を行うＤＭＡ機能も備えている。ここで、バスアービタ１０には、データ転送が高速なデバイスを制御する高速バスアービタ１０１と、データ転送が低速なデバイスを制御する低速バスアービタ１０２とが含まれ、システム全体のデータ転送速度を高速化することができる。
【００２２】
ＣＰＵ２は、ゲームプログラムの実行やシステム全体の制御や画像表示のための座標計算等を行い、コントローラ１１から送信される操作信号に基づいて、例えばゲーム画面内に登場するプレイヤキャラクタの動作を制御する。ゲームプログラムは，本実施の形態における画像処理プログラムを含み，ＣＰＵ２が該画像処理プログラムを実行することで，後述する本実施の形態における画像処理が行われる。
【００２３】
メインメモリ３は、ＣＰＵ２が処理を行うのに必要なプログラムやデータを格納するメモリとして利用される。ここで、ＣＰＵ２及びメインメモリ３は、高速バスアービタ１０１を介して共通接続されている。
【００２４】
ＢＩＯＳ−ＲＯＭ４は、情報処理装置１を起動するためのプログラムやシステムプログラムが格納されている。
【００２５】
通信インタフェース５は、外部ネットワークに接続するために、ＬＡＮ回線等のインタフェースを提供する。これにより、情報処理装置１は、他の情報処理装置やネットワークサーバ等との通信が可能になる。
【００２６】
記憶部６は、磁気ディスクや光ディスク等の記録媒体によって構成され、本実施の形態における画像処理プログラムを含むゲームプログラムやデータが格納されている。ＣＰＵ２は、作業内容に応じて記憶媒体に格納されたプログラムやデータをメインメモリ３に読み出す。ここで、メインメモリ３に読み出されるデータとしては、例えば、プレイヤキャラクタや敵キャラクタを含むオブジェクトを定義するデータ、画像データ、音データ等がある。更に、ＣＰＵ２は、データ転送速度が低い記録媒体に記録されたデータを、磁気ディスクなどのデータ転送速度が高い記録媒体に転送し、情報処理システム全体のアクセス速度を向上させる。
【００２７】
ペリフェラルインタフェース７は、コントローラ１１等の周辺機器と接続するために、ＵＳＢ、ＩＥＥＥ１３９４、シリアル、パラレル、赤外線、無線等のインタフェースを提供する。ペリフェラルインタフェース７は、コントローラ１１から送信された操作信号を、低速バスアービタ１０２へ送信する。なお、ペリフェラルインタフェース７は、コントローラ１１へゲーム状況に応じた振動信号や音声信号を送信することもできる。
【００２８】
音声処理部８には、サウンドコントローラ８１が含まれ、サウンドコントローラ８１には、サウンドメモリ８１１が含まれる。音声処理部８は、記録部６やサウンドメモリ８１１に格納された音データを読み出して音声を生成する。また、サウンドコントローラ８１は、例えば、プレイヤによる操作やゲーム進行に応じて生成した音声をスピーカ１３に出力する。
【００２９】
画像処理部９には、ＧＰＵ９１、ＶＲＡＭ９２が含まれる。ここで、ＶＲＡＭ９２は、フレームバッファ９２１、テクスチャバッファ９２２、Ｚバッファ９２３等の格納領域を有している。フレームバッファ９２１は、画面表示を行う１フレーム分のピクセルデータを記憶するために利用される。テクスチャバッファ９２２は、オブジェクトを形成するポリゴンにテクスチャマッピングを行う場合に、素材となる画像データ（テクスチャ）を記憶するために利用される。Ｚバッファ９２３は、画面表示を行う各ピクセルにおけるオブジェクトの深度情報を記憶するために利用される。
【００３０】
画像処理部９は、オブジェクトを形成するポリゴンのデータ（頂点座標、テクスチャ座標、色値やα値、法線ベクトル等）に基づいて頂点処理を行い、ラスタライズ、テクスチャマッピング、陰面消去等のピクセル処理を行う。次いで、画像処理部９は、ピクセル処理によって得られたピクセルデータをフレームバッファ９２１に記憶する。
【００３１】
表示画像の生成に関しては、ＣＰＵ２の制御のもと、ゲーム状況に従って表示すべきオブジェクトを形成するポリゴンが仮想空間内に配置され、ＧＰＵ９１の処理により、仮想カメラＶＰ（仮想視点）から見た二次元画像に変換されて生成される。
【００３２】
ＧＰＵ９１は、頂点処理として、ワールド変換、光源計算、ビュー変換、クリッピング、射影変換、ビューポート変換等が行われる。図２（ａ）は、ビュー空間の例を示している。ビュー空間は、ワールド空間を、仮想カメラＶＰ、注視点ＧＰ、及び仮想カメラＶＰの上方方向の情報に基づいて変換した座標空間であり、仮想カメラＶＰから注視点ＧＰの方向に対して横軸がｘ軸、縦軸がｙ軸、奥行きがｚ軸となる。そして、クリッピングとして、仮想カメラＶＰから注視点ＧＰの方向に対してｘ軸方向およびｙ軸方向にそれぞれ視野角だけ振った範囲において、仮想カメラＶＰに近い側には近クリップ平面ＣＰ１が設定され、遠い側には遠クリップ平面ＣＰ２が設定される。近クリップ平面ＣＰ１と遠クリップ平面ＣＰ２と視野角を示す面で囲まれる六面体は、視錐台と呼ばれ、その内部に配置されるオブジェクトが描画対象となる。図２（ｂ）は、射影変換を行った射影空間の例を示しており、図２（ａ）に示したビュー空間を、視野角、アスペクト比、近クリップ平面ＣＰ１、及び遠クリップ平面ＣＰ２の情報に基づいて、−１≦ｘ≦１、−１≦ｙ≦１、０≦ｚ≦１の範囲の空間に変換している。そして、ＧＰＵ９１内のバーテックスシェーダは、射影空間へ変換されたポリゴンの頂点をビューポート変換し、頂点処理を終了する。
【００３３】
ＧＰＵ９１は、ピクセル処理として、頂点処理によって組み立てられた多角形、線、及び点のデータからラスタライズ及び補間を行う。そして、このラスタライズ及び補間されたピクセルデータに対して、テクスチャマッピング、アルファテスト、深度情報に基づく深度テスト（陰面消去）、ブレンディング等を行って、画面に配置されるピクセルデータをフレームバッファ９２１に記憶する。
【００３４】
そして、ＧＰＵ９１内のディスプレイコントローラ９１１は、フレームバッファ９２１に記録されたピクセルデータを周期的に読み出し、映像信号をディスプレイモニタ１３に送信する。
【００３５】
（各種データの説明）
図３は、情報処理装置１内で画像処理に用いられるデータ例を示す図である。データには、モデル関連データと一時的データとが含まれる。
【００３６】
モデル関連データには、オブジェクトであるプレイヤキャラクタデータと敵キャラクタデータと障害物データとが含まれている。
【００３７】
プレイヤキャラクタデータは、主としてプレイヤからのコントローラ１１による操作によって制御されるキャラクタのデータであって、プレイヤキャラクタを形成するポリゴンデータ、顔基準座標を含んでいる。ここで、ポリゴンデータは、頂点座標、テクスチャ座標、色値やα値、法線ベクトルを含み、後述する敵キャラクタデータや障害物データも同様である。なお、顔基準座標は、例えば、プレイヤキャラクタの首のやや上の三次元座標である。
【００３８】
敵キャラクタデータは、プレイヤキャラクタと敵対する複数のキャラクタのデータであり、敵キャラクタを形成するポリゴンデータ、顔基準座標、行動スクリプトを含んでいる。行動スクリプトは、敵キャラクタの行動開始条件と行動内容とを記述したものである。例えば、ＣＰＵ２は、その敵キャラクタの追尾開始距離以内にプレイヤキャラクタが入ったと判定すると、その敵キャラクタはプレイヤキャラクタの追尾を開始する。また、ＣＰＵ２は、その敵キャラクタの攻撃開始距離以内にプレイヤキャラクタが入ったと判定すると、その敵キャラクタはプレイヤキャラクタへの攻撃を開始する。
【００３９】
障害物データは、プレイヤキャラクタや仮想カメラＶＰが移動不可能な範囲を定義した、地面ＧＲや壁Ｗ、天井ＣＬ等の複数の障害物に関するデータであり、障害物を形成するポリゴンデータ、仮想空間内に配置される配置座標を含んでいる。
【００４０】
一時的データには、仮想空間内におけるデータであって、プレイヤキャラクタ及び敵キャラクタの座標及び向き情報、仮想カメラＶＰ（仮想視点）の座標、注視点ＧＰの座標、視野角θ、注視点ＧＰから仮想カメラＶＰまでの線分と障害物とが交差する交差座標のうち最も注視点ＧＰに近い交差座標ＣＣ、仮想カメラＶＰの位置から注視点ＧＰへのベクトルと交差座標ＣＣにおける障害物の法線ベクトルとのなす角度δ、元の仮想カメラＶＰ’の位置と新たな仮想カメラＶＰの位置（交差座標ＣＣ）との距離Ｄの値が含まれる。さらに、一時的データには、現在の視野角を拡大するための視野角拡大率Ｓの値が含まれる。ここで、プレイヤキャラクタ及び敵キャラクタの向き情報は、例えば、身体の向き又は発射体を発射する方向に対応する。
【００４１】
（動作）
続いて，本実施の形態における画像処理プログラムの実行により具現される画像処理の動作について，サードパーソンシューティングゲームの画面例を用いて説明する。
【００４２】
図４は、本発明にかかるサードパーソンシューティングゲームの画面例を示す図である。図５は、図４を上方から見た図であって、仮想カメラＶＰ、注視点ＧＰ、視野角θの設定位置や、プレイヤキャラクタＰＣの位置及び正面方向（矢印方向）等を示した図である。
【００４３】
図４において、プレイヤキャラクタＰＣ、敵キャラクタＥＣ、障害物のオブジェクトである地面ＧＲ、壁Ｗ１〜Ｗ３、天井ＣＬが仮想空間内に配置されている。また、図４において、プレイヤキャラクタＰＣは、常に画面左下に表示されるように構成されている。これは、照準位置となる画面中央にプレイヤキャラクタを表示させないためである。なお、このように照準位置を画面中央に固定することによって、プレイヤは、プレイヤキャラクタＰＣがどの向きに攻撃を行うかが分かりやすくなる。
【００４４】
また、図５において、ＣＰＵ２は、プレイヤキャラクタＰＣの顔基準座標Ｆを（ｘ，ｙ，ｚ）＝（０，０，０）とし、プレイヤキャラクタＰＣの右方向をｘ方向、上方向をｙ方向、正面方向をｚ方向とした座標系において、注視点ＧＰをプレイヤキャラクタＰＣの右前方（ｘｐ，０，ｚｐ）、仮想カメラＶＰの位置をプレイヤキャラクタの右後方（ｘｖ，０，−ｚｖ）に設定する。ここで、ｘｐ、ｚｐ、ｘｖ及びｚｖは、正の値であって、視錐台内にプレイヤキャラクタＰＣが含まれるように各値が設定される。そして、ＣＰＵ２は、注視点ＧＰ、仮想カメラＶＰの位置を仮想空間内の座標系に戻したものをメインメモリ３に記憶する。
【００４５】
なお、画面中央にプレイヤキャラクタを表示させなければ良く、例えば、仮想カメラＶＰをプレイヤキャラクタの後方領域のいずれかに設定して、注視点ＧＰをプレイヤキャラクタの右又は左前方にずらして設定しても良い。または、注視点ＧＰをプレイヤキャラクタの前方領域に設定して、仮想カメラＶＰの位置をプレイヤキャラクタの右後方又は左後方にずらして設定しても良い。さらに，プレイヤキャラクタの頭上に仮想カメラＶＰの位置を設定してもよい。
【００４６】
ＣＰＵ２は、仮想カメラＶＰから注視点ＧＰの方向に対する近クリップ平面ＣＰ１までの距離及び遠クリップ平面ＣＰ２までの距離に基づいて、近クリップ平面ＣＰ１及び遠クリップ平面ＣＰ２を設定する。さらに，ＣＰＵ２は，視野角θをあらかじめ設定された基準の視野角θａの値に設定し、近クリップ平面ＣＰ１，遠クリップ平面ＣＰ２及び視野角θａにより，視錐台を形成する。このとき、視錐台内には、プレイヤキャラクタが含まれるように各値が設定され、近クリップ平面ＣＰ１は、図５に示されるように仮想カメラＶＰの近傍に設定されており、遠クリップ平面ＣＰ２は、図示されない遠方に設定されている。
【００４７】
本ゲームでは、プレイヤは、コントローラ１１の左ジョイスティックの操作によってプレイヤキャラクタの位置を移動させ、右ジョイスティックの操作によってプレイヤキャラクタの向きを変更することができる。つまり、プレイヤは、プレイヤキャラクタを、正面方向だけでなく、後方や左右方向へ移動させることができる。プレイヤが、プレイヤキャラクタの移動または向きの変更をすると、ＣＰＵ２は、メインメモリ３に記憶されたプレイヤキャラクタの顔基準座標の三次元座標、及び向き情報を更新し、上述したプレイヤキャラクタの顔基準座標、及び向きを基準とした座標系を算出して注視点ＧＰ、仮想カメラＶＰの座標位置を設定し直す。
【００４８】
また、プレイヤは、コントローラ１１の操作ボタンの操作によって、プレイヤキャラクタの武器から発射される弾丸等の発射体を、仮想カメラＶＰから注視点ＧＰを通過する直線上にある到達位置へ発射することができる。なお、この到達位置は、図４では、画面中央の照準位置となる。ここで、図５に示されるように、弾丸等の発射体が到達する到達位置は、仮想カメラＶＰから注視点ＧＰを通過する直線がオブジェクトと交差する交差座標であって、仮想カメラＶＰの位置から最も近い交差座標ＣＢに設定される。なお、交差座標ＣＢにおいて交差するオブジェクトが敵キャラクタである場合、ＣＰＵ２は、注視点ＧＰを、交差座標ＣＢ又はその敵キャラクタの座標に再設定し、ロックオンを行っても良い。さらに、ＣＰＵ２は、プレイヤキャラクタの位置から正面方向へ向けて、発射体の予想弾道を計算し、予想弾道内に敵キャラクタがいる場合、注視点ＧＰを、その敵キャラクタの座標に再設定してもよい。これにより、初心者でも簡単に敵キャラクタを狙えることができる。そして、ＣＰＵ２は、敵キャラクタや障害物に弾丸等の発射体が到達したかを判定し、ゲーム進行に反映する。
【００４９】
ここで，プレイヤキャラクタが後方に後退するように移動し，後方にある壁に接近する場合を考える。この場合，プレイヤキャラクタの右後方にある仮想カメラＶＰが壁面に衝突し，さらに壁面を通り越してしまう場合がある。
【００５０】
図６は，仮想カメラＶＰが壁を越えて位置する状態を上方から見た図である。仮想カメラＶＰは，プレイヤキャラクタＰＣの後方にある壁Ｗ４の裏側に位置する。従って，この状態をそのまま描画すると，仮想カメラＶＰとプレイヤキャラクタＰＣとの間に壁Ｗ４が位置することから，画面全体が壁に覆われた画像となってしまい，本来表示すべき壁Ｗ４の前面側の画像を表示することができない。
【００５１】
そのため，仮想カメラＶＰが壁Ｗ４などの障害物と衝突し，その内部又はその裏側に位置する場合は，仮想カメラＶＰを壁Ｗ４と衝突する座標に設定し直すことで，壁Ｗ４より前面側の画像が描画される。
【００５２】
図７は，仮想カメラＶＰを壁と衝突する座標に設定した状態を示す仮想空間を上方から見た図であり，図８は，図７に示す仮想カメラＶＰにより表示される画面例を示す図である。図７に示されるように，当初壁Ｗ４の裏側に設定された元の仮想カメラＶＰ’から，壁Ｗ４との衝突する座標ＣＣに仮想カメラＶＰを再設定することで，図８に示すように，プレイヤキャラクタＰＣ及び敵キャラクタＥＣが位置する壁Ｗ４の前面側の画像が表示される。
【００５３】
このとき，再設定される仮想カメラＶＰは，元の仮想カメラＶＰ’より距離Ｄ前方に位置するため，プレイヤキャラクタＰＣとの距離が縮まる。そうすると，図８に示すとおり，画面内におけるプレイヤキャラクタＰＣの大きさが大きくなり，プレイヤキャラクタＰＣが迫ってくるようにプレイヤが錯覚し，プレイヤに違和感及び圧迫感を与えることになる。
【００５４】
本実施の形態における画像処理では，この違和感及び圧迫感をプレイヤに覚えさせないようにするために，仮想カメラＶＰを壁Ｗ４との衝突する座標に変更する場合，視野角θを拡大する。
【００５５】
図９は，視野角を拡大した状態を示す仮想空間を上方から見た図であり，図１０は，図９に示す仮想カメラＶＰにより表示される画面例を示す図である。図９に示すように，仮想カメラＶＰを，壁Ｗ４と衝突する座標ＣＣに設定した場合，視野角θを，あらかじめ設定された基準の視野角θａよりも拡大させたθｂとする。視野角を拡大することで，描画範囲が広がり，描画対象のオブジェクトが相対的に縮小される。そのため，図１０に示すように，仮想カメラＶＰを急激に前方に移動させたことにより生じる画像の変化が緩和され，プレイヤが感じる違和感及び圧迫感を抑えることができる。
【００５６】
図１１は、本実施の形態における画像処理を実行するフローチャートであり，拡大させる視野角の角度を求める処理である。本画像処理は，ＣＰＵ２が画像処理プログラムを実行することにより実現される。図１１において、毎フレームもしくは数フレームおきに処理を開始すると（ステップＳ１００）、仮想カメラＶＰ、注視点ＧＰの位置と、視野角θをθａに設定する（ステップＳ１０１）。ここで、θａは所定の値であって、視錐台内にプレイヤキャラクタを含むように定められた値である。
【００５７】
次いで、注視点ＧＰから仮想カメラＶＰまでの線分と障害物とが交差する交差座標があるか否かを判定する（ステップＳ１０２）。交差座標がない場合（ステップＳ１０２のＮｏ）、仮想カメラＶＰ、及び視野角θ（＝θａ）を確定し（ステップＳ１０９）、処理を終了する（ステップＳ１１０）。
【００５８】
交差座標がある場合（ステップＳ１０２のＹｅｓ）、注視点ＧＰに最も近い交差座標ＣＣの座標を取得する（Ｓ１０３）。交差座標がある場合は，図９で示したように，例えば，プレイヤキャラクタＰＣが後退して，後方にある壁Ｗ４に接近することで，プレイヤキャラクタの右後方にある仮想カメラＶＰが壁面に衝突し，さらに壁面を通り越してしまう場合である。
【００５９】
次いで、交差座標ＣＣにおける障害物の法線ベクトルを取得する（ステップＳ１０４）。次いで、仮想カメラＶＰから注視点ＧＰへのベクトルと、交差座標ＣＣにおける障害物の法線ベクトルとのなす角度δを算出する（ステップＳ１０５）。
【００６０】
次いで、交差座標ＣＣを新たな仮想カメラＶＰの位置に再設定し、元の仮想カメラＶＰの位置と交差座標ＣＣ（新たな仮想カメラＶＰの位置）との距離Ｄを算出する（ステップＳ１０６）。
【００６１】
次いで、距離Ｄと角度δから、視野角拡大率Ｓを算出する（ステップＳ１０７）。ここで、視野角拡大率Ｓは、現在の視野角であるθａを何倍にするか決める値であって、Ｓ＝１＋（Ｄ×ｃｏｓ（δ）×Ｃ）の式によって算出される。なお、Ｃは定数である。
【００６２】
視野角拡大率Ｓを求める上式で，距離Ｄに角度δを乗算するのは以下の理由による。図１２は、プレイヤキャラクタが矢印方向を向き、右方向へ移動している場合の上から見た図である。壁Ｗ５は，その法線ベクトルが注視点ＧＰから仮想カメラＶＰのベクトルに対して角度δを有して，プレイヤキャラクタＰＣの右方向に配置されている。プレイヤキャラクタＰＣの移動に伴い、仮想カメラＶＰも同様に、注視点ＧＰの方向を正面方向として、右方向へ移動している。図１３は、図１２の後に仮想カメラＶＰが右方向にある壁Ｗ５に衝突し、仮想カメラＶＰが、元の仮想カメラＶＰ’から交差座標ＣＣに再設定された場合の上方から見た図である。ここで、上述したように、仮想カメラＶＰを、元の仮想カメラＶＰ’から交差座標ＣＣへ再設定する場合、仮想カメラＶＰが右方向にある障害物へ衝突すると、後方の障害物に衝突する場合と比べて距離Ｄが大きくなる。後方の障害物に衝突する場合（角度δ＝０）は，プレイヤキャラクタＰＣの後方への移動距離がそのまま距離Ｄとなるが，壁Ｗ５に角度を有して衝突する場合（角度δ＞０），図１３に示すように，プレイヤキャラクタＰＣの右方向への移動距離よりも距離Ｄが大きくなる。
【００６３】
つまり、プレイヤキャラクタＰＣが注視点ＧＰと仮想カメラＶＰのベクトルに対して角度がある障害物に接近した場合，プレイヤキャラクタＰＣのわずかな移動により視野角の拡大が急激に行われ、プレイヤに対して違和感を与えてしまう。したがって、視野角拡大率Ｓを算出する際、距離Ｄにｃｏｓ（δ）を掛けて拡大率を調整している。
【００６４】
図１１に戻り、次いで、現在の視野角θａと視野角拡大率Ｓから、新たな視野角θｂを算出する（ステップＳ１０８）。ここで、視野角θｂは、θｂ＝ａｒｃｔａｎ（ｔａｎ（θａ／２）×Ｓ）×２の式によって算出される。
【００６５】
次いで、注視点ＧＰ、仮想カメラＶＰの位置、視野角θ（＝θｂ）を確定し（ステップＳ１０９）、処理を終了する（ステップＳ１１０）。
【００６６】
上述したとおり、プレイヤキャラクタの移動により注視点ＧＰから仮想カメラＶＰのベクトルが障害物と交差する場合，仮想カメラＶＰをその交差座標に設定するとともに，視野角を基準角度θａから算出された角度θｂに拡大させる。そして，拡大させる視野角の角度を算出するための視野角拡大率Ｓは、距離Ｄが大きいほど大きくなる。これによって、仮想カメラＶＰが後方の障害物に衝突し、さらにプレイヤキャラクタが後方へ移動していく場合であっても、徐々に視野角を大きくすることができる。つまり、仮想カメラＶＰが障害物によって後方へ移動できない場合であっても、プレイヤに対して、仮想カメラＶＰが徐々に後方へ下がっていく（障害物を越えていく）感覚を与えることができる。
【００６７】
なお、視野角θａ及びθｂは、左右方向の視野角であっても、上下方向の視野角であってもよく、どちらか一方の視野角を算出すれば、予め設定されたアスペクト比によって、もう一方の視野角を求めることができる。
【００６８】
（総括）
以上に説明したように、注視点ＧＰと仮想カメラＶＰとの間に障害物が存在しても、自然な形でプレイヤキャラクタを表示し、プレイヤに圧迫感等を感じさせなくすることができる。
【００６９】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【符号の説明】
【００７０】
１      情報処理装置
２      ＣＰＵ
３      メインメモリ
４      ＢＩＯＳ−ＲＯＭ
５      通信インタフェース
６      記憶部
７      ペリフェラルインタフェース
８      音声処理部
９      画像処理部
１０    バスアービタ
１１    入出力装置（コントローラ）
１２    音声出力装置（スピーカ）
１３    表示装置（ディスプレイモニタ）
【図１】
0005614211.tif 000002
【図２】
0005614211.tif 000003
【図３】
0005614211.tif 000004
【図４】
0005614211.tif 000005
【図５】
0005614211.tif 000006
【図６】
0005614211.tif 000007
【図７】
0005614211.tif 000008
【図８】
0005614211.tif 000009
【図９】
0005614211.tif 000010
【図１０】
0005614211.tif 000011
【図１１】
0005614211.tif 000012
【図１２】
0005614211.tif 000013
【図１３】
0005614211.tif 000014