(57)【特許請求の範囲】
【請求項１】
仮想３次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成する画像生成装置であって、
前記仮想３次元空間において前記所定の被写体の位置を移動させる被写体制御手段と、
前記仮想カメラの視軸を前記所定の被写体に向けて該仮想カメラのクリッピング範囲を設定しつつ、前記仮想３次元空間において該仮想カメラの視点の位置を、前記所定の被写体の位置の移動に追随して移動させる仮想カメラ制御手段と、
前記仮想カメラ制御手段により制御される仮想カメラに従って前記所定の被写体を含む前記仮想３次元空間を仮想スクリーン上に透視変換して、表示装置に表示される２次元画像を生成する透視変換手段と、
前記クリッピング範囲とは別の領域として、少なくとも前記仮想カメラの視点の位置を中心とした球に含まれる領域に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、障害物回避域に設定する障害物回避域設定手段と、
前記障害物回避域設定手段により設定された障害物回避域に、障害物が存在するかどうかを判定する障害物判定手段とを備え、
前記仮想カメラ制御手段は、前記障害物判定手段により前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を移動させる障害物回避制御手段を含み、
前記障害物回避域設定手段は、前記仮想３次元空間における前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて、前記カメラ周辺領域として設定される球の半径を変化させることにより前記障害物回避域の大きさを変化させる障害物回避域変化手段を含む
ことを特徴とする画像生成装置。
【請求項２】
前記障害物回避域設定手段は、前記カメラ周辺領域と、前記所定の被写体の位置を基準として該被写体の位置の周囲に定められる被写体周辺領域と、該カメラ周辺領域と該被写体周辺領域の間の領域であるカメラ被写体間領域とを、前記障害物回避域に設定する
ことを特徴とする請求項１に記載の画像生成装置。
【請求項３】
前記障害物回避域設定手段は、前記カメラ周辺領域と、該カメラ周辺領域と前記所定の被写体の間の領域であるカメラ被写体間領域とを、前記障害物回避域に設定する
ことを特徴とする請求項１に記載の画像生成装置。
【請求項４】
前記仮想３次元空間は、ビデオゲームのゲーム空間であり、
前記障害物回避域変化手段は、さらに前記ビデオゲームの進行状況に応じて、前記障害物回避域の大きさを変化させる
ことを特徴とする請求項１乃至３のいずれか１項に記載の画像生成装置。
【請求項５】
前記障害物回避域変化手段は、前記障害物となり得るオブジェクトが多数存在する場面ほど、前記障害物回避域の大きさを小さくするように該障害物回避域の大きさを変化させる
ことを特徴とする請求項４に記載の画像生成装置。
【請求項６】
仮想３次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を、コンピュータ装置により生成する画像生成方法であって、
前記コンピュータ装置が備える処理装置が前記仮想３次元空間において前記所定の被写体の位置を移動させ、該被写体の位置を記憶装置に記憶させるステップと、
前記処理装置が前記仮想カメラの視軸を前記所定の被写体に向けて該仮想カメラのクリッピング範囲を設定しつつ、前記仮想３次元空間において該仮想カメラの視点の位置を前記所定の被写体の位置の移動に追随して移動させ、該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、
前記処理装置が、前記クリッピング範囲とは別の領域として、少なくとも前記仮想カメラの視点の位置を中心とした球に含まれる領域に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて前記カメラ周辺領域として設定される球の半径を変化させることにより大きさの変化する障害物回避域に設定し、該障害物回避域に関する情報を前記記憶装置に記憶させるステップと、
前記処理装置が前記記憶装置に情報の記憶された障害物回避域に、障害物が存在するかどうかを、該障害物の位置について前記記憶装置に記憶された情報に従って判定するステップと、
前記処理装置が前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を再度移動させ、該再度の移動の後の該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、
前記処理装置が前記記憶装置に情報の記憶された仮想カメラの視軸及び視点の位置に関する情報に従って前記所定の被写体を含む前記仮想３次元空間を仮想スクリーン上に透視変換して、表示装置に表示される２次元画像を生成し、前記記憶装置に書き込むステップと
を実行することを特徴とする画像生成方法。
【請求項７】
仮想３次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成するための処理をコンピュータ装置に実行させるプログラムであって、
前記仮想３次元空間において前記所定の被写体の位置を移動させ、該被写体の位置を前記コンピュータ装置が備える記憶装置に記憶させるステップと、
前記仮想カメラの視軸を前記所定の被写体に向けて該仮想カメラのクリッピング範囲を設定しつつ、前記仮想３次元空間において該仮想カメラの視点の位置を前記所定の被写体の位置の移動に追随して移動させ、該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、
前記クリッピング範囲とは別の領域として、少なくとも前記仮想カメラの視点の位置を中心とした球に含まれる領域に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて前記カメラ周辺領域として設定される球の半径を変化させることにより大きさの変化する障害物回避域に設定し、該障害物回避域に関する情報を前記記憶装置に記憶させるステップと、
前記記憶装置に情報の記憶された障害物回避域に、障害物が存在するかどうかを、該障害物の位置について前記記憶装置に記憶された情報に従って判定するステップと、
前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を再度移動させ、該再度の移動の後の該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、
前記記憶装置に情報の記憶された仮想カメラの視軸及び視点の位置に関する情報に従って前記所定の被写体を含む前記仮想３次元空間を仮想スクリーン上に透視変換して、表示装置に表示される２次元画像を生成し、前記記憶装置に書き込むステップと
を前記コンピュータ装置に実行させることを特徴とするプログラム。
【請求項８】
請求項７に記載のプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、透視変換により画像を生成する画像生成装置等に関し、障害物を回避するための仮想カメラの視点の移動に関する。
【背景技術】
【０００２】
３次元ビデオゲームにおいて、プレイヤの操作により仮想３次元空間を移動するプレイヤキャラクタを被写体として透視変換を行った画像をゲーム画面として表示しているものがある。ここで、仮想カメラの視点の位置と被写体となるプレイヤキャラクタの位置との間に、地形や建物などの障害物となるオブジェクト（以下、単に障害物）が入り込んでしまうと、プレイヤがゲーム画面においてプレイヤキャラクタを視認できなくなってしまい、ゲームの進行に支障が生じてしまう場合がある。
【０００３】
このように仮想カメラの視点の位置と被写体となるプレイヤキャラクタの位置との間に障害物が入り込んでしまってもゲームの進行に支障を生じさせないため、障害物を表示しないといった手法や障害物をワイヤーフレームで表示するといった手法が考えられてきた。さらに、ゲームの雰囲気を損ねずに被写体となるプレイヤキャラクタをゲーム画面に表示させるため、障害物に対して透過処理を施すという手法も考えられている（例えば、特許文献１参照）。
【０００４】
【特許文献１】特許３１４１７３７号公報（段落０００７、００６１、００７１等）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の手法では、仮想カメラの視点の位置と被写体との間に障害物が存在するときに、該障害物の後面にある本来は見えない筈であるオブジェクトが透過表示されてしまう。すると、プレイヤが常に被写体を視認することができるのでゲームの進行のためには便利ではあっても、プレイヤが本来は見えないはずの被写体が見えてしまうことでゲームの画面に違和感を感じてしまう場合がある。
【０００６】
これに対して、従来の多くの３次元ビデオゲームにおいて、仮想カメラの視点の位置と被写体の位置との間に障害物が入り込んでしまった場合、被写体の位置との間に障害物が入り込まなくなる位置まで仮想カメラの視点の位置を移動させる手法も採用されていた。障害物を回避するための仮想カメラの視点の位置の移動先としては、極座標上の上方向の位置や、障害物よりも被写体に近い位置とするのが一般的であった。
【０００７】
しかしながら、ゲームで適用される仮想３次元空間にはプレイヤキャラクタよりも高さのある壁などのオブジェクトも多く、極座標上の上方向の位置に仮想カメラの視点の位置を移動する手法では、被写体を見る角度がかなり変わってしまうという問題がある。また、障害物よりも被写体に近い位置に仮想カメラの視点の位置を移動する手法では、特に障害物が被写体の近くにある場合には、仮想カメラの視点の位置の移動量が大きくなりすぎてしまうという問題がある。
【０００８】
また、障害物を回避するために仮想カメラの視点の位置を移動させる手法として上記の何れの手法を採用するのにしても、仮想カメラの視点の位置と被写体の位置との間に障害物が存在しない状態から突如として両者間に障害物が存在する状態が生じるので、仮想カメラの視点の位置が瞬間的に全く別の位置に移動してしまうことになっていた。現実の世界で一人のカメラマンが撮影を行っている場合には、このようなカメラの瞬間移動は起こりえないので、ゲーム画面においてプレイヤに違和感を感じさせてしまう虞がある。
【０００９】
また、一定の時間を置いて仮想カメラの視点の位置を障害物を回避できる位置に移動させるものとした場合でも、仮想カメラの視点の位置が急速移動させられることが多いので、プレイヤにいわゆるカメラ酔いを生じさせてしまう虞がある。さらに、そもそも現実の世界であれば、とりわけ障害物がカメラマンに近い場合には実際にカメラと被写体との間に障害物が入り込んでしまうまでカメラマンが障害物の存在に気づかない等と言うことはほとんど起こりえず、被写体との間に障害物が入り込んでしまう虞があるならば、前もってそれを回避するようにカメラマンが動くことが普通である。
【００１０】
本発明は、仮想カメラの視点の位置と被写体の位置との間に障害物が存在してしまうことを避けつつ、仮想カメラの視点の位置を滑らかに移動させることのできる画像生成装置等を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の第１の観点にかかる画像生成装置は、仮想３次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成する画像生成装置であって、前記仮想３次元空間において前記所定の被写体の位置を移動させる被写体制御手段と、前記仮想カメラの視軸を前記所定の被写体に向けて該仮想カメラのクリッピング範囲を設定しつつ、前記仮想３次元空間において該仮想カメラの視点の位置を、前記所定の被写体の位置の移動に追随して移動させる仮想カメラ制御手段と、前記仮想カメラ制御手段により制御される仮想カメラに従って前記所定の被写体を含む前記仮想３次元空間を仮想スクリーン上に透視変換して、表示装置に表示される２次元画像を生成する透視変換手段と、前記クリッピング範囲とは別の領域として、少なくとも前記仮想カメラの視点の位置を中心とした球に含まれる領域に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、障害物回避域に設定する障害物回避域設定手段と、前記障害物回避域設定手段により設定された障害物回避域に、障害物が存在するかどうかを判定する障害物判定手段とを備え、前記仮想カメラ制御手段は、前記障害物判定手段により前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を移動させる障害物回避制御手段を含み、前記障害物回避域設定手段は、前記仮想３次元空間における前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて、前記カメラ周辺領域として設定される球の半径を変化させることにより前記障害物回避域の大きさを変化させる障害物回避域変化手段を含むことを特徴とする。
【００１２】
上記画像生成装置では、仮想３次元空間において所定の被写体の位置が移動するが、この所定の被写体を含む仮想３次元空間を仮想カメラにより仮想スクリーン上に透視変換することで、表示装置に表示される２次元画像が生成される。ここで、仮想カメラの視点の位置は、基本的には所定の被写体の位置の移動に追随して移動されるが、被写体の位置に追随した位置では仮想カメラの視点の位置を基準として該視点の位置の周囲に定められるカメラ周辺領域と該カメラ周辺領域から連続して被写体の近傍まで続く領域とを含む障害物回避域に障害物が存在してしまうこととなる場合には、該障害物回避域に障害物が入らない位置まで仮想カメラの視点の位置が移動される。
【００１３】
ここで、障害物回避域の大きさは、仮想カメラの視点の位置と所定の被写体の位置との間の距離に応じて変化されるものとなっており、例えば、仮想カメラの視点の位置と被写体との間の距離が短くなると小さくなるものになっている。このため、仮想カメラの視点の位置から比較的離れた位置で障害物回避域に障害物が存在している場合には、仮想カメラの視点の位置を所定の被写体の位置に近づければ障害物回避域の大きさが小さくなり、障害物回避域に障害物が入らなくなる位置として仮想カメラの視点の位置を定めることができる。
【００１４】
このため、例えば、仮想カメラの視点の位置と被写体の位置とを結ぶ直線と障害物の間の距離が徐々に短くなっていくような場合に、仮想カメラの視点の位置を被写体の位置に向けて徐々に近づけていくことが可能になる。そして、この直線上に障害物が入り込むときには、その直前までに仮想カメラの視点の位置はかなり被写体の位置の方に移動しているので、障害物の位置よりも被写体の位置からの距離が短い位置まで仮想カメラの視点を移動させるにしても、仮想カメラの視点の位置が急激に移動されてしまうことがない。
【００１５】
このように、仮想カメラの視点の位置と所定の被写体の位置との間に障害物が入り込んでしまうのを回避するように仮想カメラの視点の位置を制御するものとしても、該仮想カメラの視点の位置の移動が滑らかに行われるため、表示装置に表示された画像を見ている者に違和感を感じさせてしまったり、カメラ酔いを生じさせてしまったりすることを防ぐことができる。また、障害物に対して透過処理を行う訳でもなく、表示装置に表示された画像において本来見えないものが見えてしまったりするということもないので、表示された画像を見ている者に違和感を感じさせてしまうことがない。
また、カメラ周辺領域を、仮想カメラの視点の位置を中心とした球に含まれる領域に設定することで、カメラ周辺領域に障害物が存在するかどうかを、仮想カメラの視点の位置や所定の被写体の位置と障害物の位置との間の距離計算で容易に判断することができる。また、仮想カメラの視点の位置と所定の被写体の位置との間の距離に応じてカメラ周辺領域の大きさを変化させるものとしても、計算が複雑になることはない。
【００１６】
なお、前記障害物回避制御手段は、前記障害物回避域に前記障害物が存在するのを回避するために、前記仮想カメラの視点の位置と前記所定の被写体とを結ぶ直線上で該仮想カメラの視点の位置を移動させるものとすることが好ましいが、状況によっては、この直線上以外でも前記仮想カメラの視点の位置を移動させるものとしてもよい。また、前記仮想カメラの視点の位置と前記所定の被写体とを結ぶ直線上で該仮想カメラの視点の位置を移動させる場合に、前記仮想カメラの視点の位置と前記所定の被写体の位置との間の距離に応じて、前記仮想カメラの視界の広さも変化させるものとしてもよい。
【００１７】
上記画像生成装置は、前記仮想３次元空間において前記障害物の位置を移動させる障害物移動手段をさらに備えるものとしてもよい。この場合において、前記障害物判定手段は、前記所定の被写体の位置及び前記仮想カメラの視点の位置の移動だけではなく、前記障害物の位置の移動によっても、前記障害物回避域設定手段により設定された障害物回避域に、前記障害物が存在するかどうかを判定するものとすることができる。
【００１８】
なお、上記画像生成装置において、前記仮想カメラ制御手段は、前記所定の被写体の位置の移動に追随して前記仮想カメラの視点の位置を移動させる他に、例えば、ユーザの入力装置からの所定の入力に応じて前記仮想カメラの視点の位置を移動させるものとしてもよい。
【００１９】
上記画像生成装置において、前記障害物回避域設定手段は、前記カメラ周辺領域と、前記所定の被写体の位置を基準として該被写体の位置の周囲に定められる被写体周辺領域と、該カメラ周辺領域と該被写体周辺領域の間の領域であるカメラ被写体間領域とを、前記障害物回避域に設定するものとすることができる。
【００２０】
また、前記障害物回避域設定手段は、前記カメラ周辺領域と、該カメラ周辺領域と前記所定の被写体の間の領域であるカメラ被写体間領域とを、前記障害物回避域に設定するものとすることもできる。
【００２１】
前者の場合には、被写体の位置に非常に近い位置で障害物が徐々に近づいて来るような場合にも、仮想カメラの視点の位置を滑らかに移動させながら仮想カメラの視点の位置と被写体の位置との間に障害物が入り込んでしまうのを回避することができるようになる。一方、後者の場合には、カメラ被写体間領域を錘形状とすることができるので、前者の場合よりも少ない処理負荷で障害物回避域に障害物が存在するかどうかを判定するものとすることができる。
【００２３】
上記画像生成装置において、前記カメラ周辺領域の他に、前記被写体周辺領域と前記カメラ被写体間領域とが前記障害物回避域に設定される場合には、前記障害物回避域設定手段は、前記所定の被写体の位置を中心とした球に含まれる領域を前記被写体周辺領域として前記障害物回避域に設定し、前記障害物回避域設定手段は、前記仮想３次元空間における前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて、前記被写体周辺領域として設定される球の半径も変化させるものとしてもよい。
【００２４】
このように、カメラ周辺領域や被写体周辺領域を、仮想カメラの視点の位置や所定の被写体の位置を中心とした球に含まれる領域に設定することで、カメラ周辺領域や被写体周辺領域に障害物が存在するかどうかを、仮想カメラの視点の位置や所定の被写体の位置と障害物の位置との間の距離計算で容易に判断することができる。また、仮想カメラの視点の位置と所定の被写体の位置との間の距離に応じてカメラ周辺領域や被写体周辺領域の大きさを変化させるものとしても、計算が複雑になることはない。
【００２５】
なお、前記カメラ周辺領域と前記被写体周辺領域とが何れも球形の領域に設定される場合には、該カメラ周辺領域と該被写体周辺領域の間に含まれる円錐台形状の領域が前記カメラ被写体間領域として前記障害物回避域に設定されるものとしてもよい。もっとも、前記カメラ周辺領域と前記被写体周辺領域とが何れも球形の領域に設定される場合であっても、該カメラ周辺領域と該被写体周辺領域の間に含まれる角錐台形状（円錐台形状を近似したもの）の領域が前記カメラ被写体間領域として前記障害物回避域に設定されるものとしてもよい。
【００２６】
一方、前記カメラ周辺領域の他に、前記被写体周辺領域が前記障害物回避域に設定されることなく、前記カメラ被写体間領域が前記障害物回避域に設定され、前記カメラ周辺領域が球形の領域に設定される場合には、該カメラ周辺領域と該被写体周辺領域の間に含まれる円錐形状の領域が前記カメラ被写体間領域として前記障害物回避域に設定されるものとしてもよい。もっとも、前記カメラ周辺領域が球形の領域に設定される場合であっても、該カメラ周辺領域と該被写体周辺領域の間に含まれる角錐形状（円錐形状を近似したもの）の領域が前記カメラ被写体間領域として前記障害物回避域に設定されるものとしてもよい。
【００２７】
カメラ周辺領域や被写体周辺領域が球形状の領域となる場合には、カメラ被写体間領域の形状は、本来的には円錐台形状や円錐形状となる。もっとも、このような円錐台形状の領域や円錐形状の領域に障害物が存在するかどうかを判断するのは、球形状の領域に障害物が存在するかどうかを判断する場合ほどの簡単な計算では求められない。カメラ被写体間領域を角錐台形状または角錐形状の領域とすることで、カメラ被写体間領域に障害物が存在するかどうかを判断する際の処理負荷を小さくすることができる。
【００２８】
また、前記カメラ周辺領域は、前記仮想カメラの視点の位置を（ほぼ）重心位置とする多面体の領域に設定されるものとすることができ、前記被写体周辺領域も前記障害物回避域に設定される場合には、該被写体周辺領域も、前記所定の被写体の位置を（ほぼ）重心位置とする多面体の領域に設定されるものとすることができる。これらの多面体の面数、或いはカメラ被写体間領域を形成する角錐台または角錐の底面の角数は、前記仮想カメラの位置を滑らかに移動させるという観点では多い方が好ましいが、処理量の観点からは少ない方が好ましいので、本発明の画像生成装置が適用されるコンピュータ装置の処理能力等に応じて適当に選ぶものとすればよい。
【００２９】
上記画像生成装置において、前記仮想カメラの視点の位置と前記被写体の位置との間の距離には、所定の限界距離が定められていてもよい。ここで、前記カメラ周辺領域を球状の領域とする場合、前記仮想カメラの視点の位置と前記被写体の位置との間の距離が前記限界距離にあるときには、前記仮想カメラ周辺領域を構成する球の半径を０とすることができる。
【００３２】
上記画像生成装置において、前記仮想３次元空間は、ビデオゲームのゲーム空間であってもよい。すなわち、上記画像生成装置は、ビデオゲームの画像を生成するものとすることができる。この場合において、前記障害物回避域変化手段は、さらに前記ビデオゲームの進行状況に応じて、前記障害物回避域の大きさを変化させるものとすることができる。
【００３３】
例えば、前記障害物回避域変化手段は、前記障害物となり得るオブジェクトが多数存在する場面ほど、前記障害物回避域の大きさを小さくするように該障害物回避域の大きさを変化させるものとすることができる。
【００３４】
このようにゲームの進行状況に応じても障害物回避域の大きさを変化させるものとすることで、例えば、ゲームの場面によって仮想カメラの視点の位置を滑らかに移動させたり、比較的大きく移動させたりすることを使い分けることができ、ビデオゲームの画像としてゲームの進行状況に応じた臨場感のある画像を生成することができるものとなる。また、障害物となり得るオブジェクトが多数存在する場面で障害物回避域の大きさを小さくすることで、このような場面でも障害物回避域に障害物が入るのを防ぐために仮想カメラの視点の位置を移動する制御を必要以上に行わなくて済むようになる。
【００３５】
なお、前記仮想カメラの位置と前記被写体の位置との間の距離には基準値が設けられており、前記仮想カメラの位置と前記被写体の位置との間の距離が該基準値の状態にあるときの前記障害物回避域の大きさを標準値として予め設定しておいてもよい。この場合において、前記障害物回避域変換手段は、前記ビデオゲームの進行状況に応じて、前記障害物回避域の標準値を変化させるものとすることができる。
【００３６】
上記目的を達成するため、本発明の第２の観点にかかる画像生成方法は、仮想３次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を、コンピュータ装置により生成する画像生成方法であって、前記コンピュータ装置が備える処理装置が前記仮想３次元空間において前記所定の被写体の位置を移動させ、該被写体の位置を記憶装置に記憶させるステップと、前記処理装置が前記仮想カメラの視軸を前記所定の被写体に向けて該仮想カメラのクリッピング範囲を設定しつつ、前記仮想３次元空間において該仮想カメラの視点の位置を前記所定の被写体の位置の移動に追随して移動させ、該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、前記処理装置が、前記クリッピング範囲とは別の領域として、少なくとも前記仮想カメラの視点の位置を中心とした球に含まれる領域に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて前記カメラ周辺領域として設定される球の半径を変化させることにより大きさの変化する障害物回避域に設定し、該障害物回避域に関する情報を前記記憶装置に記憶させるステップと、前記処理装置が前記記憶装置に情報の記憶された障害物回避域に、障害物が存在するかどうかを、該障害物の位置について前記記憶装置に記憶された情報に従って判定するステップと、前記処理装置が前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を再度移動させ、該再度の移動の後の該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、前記処理装置が前記記憶装置に情報の記憶された仮想カメラの視軸及び視点の位置に関する情報に従って前記所定の被写体を含む前記仮想３次元空間を仮想スクリーン上に透視変換して、表示装置に表示される２次元画像を生成し、前記記憶装置に書き込むステップとを実行することを特徴とする。
【００３７】
上記目的を達成するため、本発明の第３の観点にかかるプログラムは、仮想３次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成するための処理をコンピュータ装置に実行させるプログラムであって、前記仮想３次元空間において前記所定の被写体の位置を移動させ、該被写体の位置を前記コンピュータ装置が備える記憶装置に記憶させるステップと、前記仮想カメラの視軸を前記所定の被写体に向けて該仮想カメラのクリッピング範囲を設定しつつ、前記仮想３次元空間において該仮想カメラの視点の位置を前記所定の被写体の位置の移動に追随して移動させ、該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、前記クリッピング範囲とは別の領域として、少なくとも前記仮想カメラの視点の位置を中心とした球に含まれる領域に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて前記カメラ周辺領域として設定される球の半径を変化させることにより大きさの変化する障害物回避域に設定し、該障害物回避域に関する情報を前記記憶装置に記憶させるステップと、前記記憶装置に情報の記憶された障害物回避域に、障害物が存在するかどうかを、該障害物の位置について前記記憶装置に記憶された情報に従って判定するステップと、前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を再度移動させ、該再度の移動の後の該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、前記記憶装置に情報の記憶された仮想カメラの視軸及び視点の位置に関する情報に従って前記所定の被写体を含む前記仮想３次元空間を仮想スクリーン上に透視変換して、表示装置に表示される２次元画像を生成し、前記記憶装置に書き込むステップとを前記コンピュータ装置に実行させることを特徴とする。
【００３８】
上記第３の観点にかかるプログラムは、コンピュータ読み取り可能な記録媒体に記録して提供することができる。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置に着脱可能に構成され、上記コンピュータ装置とは別個に提供される記録媒体としてもよい。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置内に設けられ、上記コンピュータ装置と共に提供される固定ディスク装置などの記録媒体としてもよい。上記第３の観点にかかるプログラムは、ネットワーク上に存在するサーバ装置から、そのデータ信号を搬送波に重畳して、ネットワークを通じて上記コンピュータ装置に配信することもできる。
【発明を実施するための最良の形態】
【００３９】
以下、添付図面を参照して、本発明の実施の形態について説明する。ここでは、本発明をビデオゲームにおける画像の生成に適用した場合を例として説明する。
【００４０】
図１は、この実施の形態に適用されるビデオゲーム装置の構成を示すブロック図である。図示するように、ビデオゲーム装置１００は、装置本体１０１を中心として構築される。この装置本体１０１は、その内部バス１１９に接続された制御部１０３、ＲＡＭ（Random Access Memory）１０５、ハードディスク・ドライブ（ＨＤＤ）１０７、サウンド処理部１０９、グラフィック処理部１１１、ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３、通信インターフェイス１１５、及びインターフェイス部１１７を含む。
【００４１】
この装置本体１０１のサウンド処理部１０９は、スピーカーであるサウンド出力装置１２５に、グラフィック処理部１１１は、表示画面１２２を有する表示装置１２１に接続されている。ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３には、記録媒体（本実施の形態では、ＤＶＤ−ＲＯＭまたはＣＤ−ＲＯＭ）１３１を装着し得る。通信インターフェイス１１５は、ネットワーク１５１に接続される。インターフェイス部１１７には、入力部（コントローラ）１６１とメモリーカード１６２とが接続されている。
【００４２】
制御部１０３は、ＣＰＵ（Central Processing Unit）やＲＯＭ（Read Only Memory）などを含み、ＨＤＤ１０７や記録媒体１３１上に格納されたプログラムを実行し、装置本体１０１の制御を行う。制御部１０３は、内部タイマを備えている。ＲＡＭ１０５は、制御部１０３のワークエリアであり、後述するプレイヤキャラクタの位置、仮想カメラの視点の位置や視軸の方向、カメラコリジョンの大きさ、透視変換された各ポリゴンの頂点の座標などに関する情報は、ＲＡＭ１０５に一時記憶される。ＨＤＤ１０７は、プログラムやデータを保存するための記憶領域である。サウンド処理部１０９は、制御部１０３により実行されているプログラムがサウンド出力を行うよう指示している場合に、その指示を解釈して、サウンド出力装置１２５にサウンド信号を出力する。
【００４３】
グラフィック処理部１１１は、制御部１０３から出力される描画命令に従って、フレームメモリ１１２（図では、グラフィック処理部１１１の外側に描かれているが、グラフィック処理部１１１を構成するチップに含まれるＲＡＭ内に設けられる）に画像データを展開し、表示装置１２１の表示画面１２２上に画像を表示するビデオ信号を出力する。グラフィック処理部１１１から出力されるビデオ信号に含まれる画像の１フレーム時間は、例えば６０分の１秒である。フレームメモリ１１２は、２セット設けられており、データの書き込み用と読み出し用とがフレーム期間毎に切り替えられる。
【００４４】
グラフィック処理部１１１は、仮想３次元空間に存在するオブジェクト（プレイヤキャラクタ、ノンプレイヤキャラクタ、及びキャラクタ以外のオブジェクト）を仮想カメラにより透視変換した２次元画像の画像データを生成して、フレームメモリ１１２に書き込む。仮想カメラの視軸の方向は、常にプレイヤキャラクタ（より具体的には、プレイヤキャラクタのほぼ重心位置に設定された基準点）を向くようになっている。すなわち、プレイヤキャラクタは、常に透視変換の際の被写体となる。
【００４５】
ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３は、記録媒体１３１に対しプログラム及びデータの読み出しを行う。通信インターフェイス１１５は、ネットワーク１５１に接続され、他のコンピュータとの通信を行う。入力部１６１は、方向キー及び複数の操作ボタンを備えている。仮想３次元空間におけるプレイヤキャラクタの位置は、入力部１６１の方向キーから入力される指示によって移動させられる。
【００４６】
また、入力部１６１の操作ボタンには、プレイヤキャラクタの動作等を指定するためのボタンの他に、Ｌ１、Ｒ１、Ｌ２、Ｒ２の４つのボタン（以下、これらをまとめてＬＲボタンと呼ぶ場合がある）が設けられている。仮想カメラの視点の位置は、方向キーから入力される指示に応じてプレイヤキャラクタに追随して移動する他、Ｌ１ボタンまたはＲ１ボタンから入力される指示に応じてプレイヤキャラクタの位置を中心に左回りまたは右回りで周回移動させられ、Ｌ２ボタンまたはＲ２ボタンから入力される指示に応じてプレイヤキャラクタの位置を原点とする極座標上で上方向または下方向に移動させられる。
【００４７】
もっとも、仮想カメラの視点の位置の移動は、後述するカメラコリジョンに障害物（この実施の形態では、プレイヤキャラクタ及びノンプレイヤキャラクタ以外のオブジェクトが障害物となり得る）が存在する場合には、カメラコリジョン内に障害物が入らないように制御されるものとなる。カメラコリジョン及び障害物の回避の詳細については、後述する。
【００４８】
インターフェイス部１１７は、入力部１６１からの入力データをＲＡＭ１０５に出力し、制御部１０３がそれを解釈して演算処理を実施する。インターフェイス部１１７は、また、制御部１０３からの指示に基づいて、ＲＡＭ１０５に記憶されているゲームの進行状況を示すデータをメモリーカード１６２に保存させ、メモリーカード１６２に保存されている中断時のゲームのデータを読み出して、ＲＡＭ１０５に転送する。
【００４９】
ビデオゲーム装置１００でゲームを行うためのプログラム及びデータは、最初例えば記録媒体１３１に記憶されている。記録媒体１３１に記憶されているデータとしては、ゲーム空間（仮想３次元空間）に存在するオブジェクトを構成するためのグラフィックデータを含んでいる。記録媒体１３１に記憶されたプログラム及びデータは、実行時にＤＶＤ／ＣＤ−ＲＯＭドライブ１１３により読み出されて、ＲＡＭ１０５にロードされる。制御部１０３は、ＲＡＭ１０５にロードされたプログラム及びデータを処理し、描画命令をグラフィック処理部１１１に出力し、サウンド出力の指示をサウンド処理部１０９に出力する。制御部１０３が処理を行っている間の中間的なデータは、ＲＡＭ１０５に記憶される。
【００５０】
この実施の形態にかかるビデオゲームでは、ゲーム空間となる仮想３次元空間に複数の３次元オブジェクトが存在し、これらのオブジェクトを仮想カメラにより透視変換した画像がゲームの画像として表示装置１２１の表示画面１２２に表示される。仮想３次元空間に存在するオブジェクトとしては、プレイヤの入力部１６１からの入力により移動させられるプレイヤキャラクタ、プレイヤキャラクタ以外のキャラクタであるノンプレイヤキャラクタ（制御部１０３により動作させられる）、キャラクタ以外の地形、建物などの仮想３次元空間内における位置の移動しないオブジェクトが含まれている。
【００５１】
プレイヤキャラクタは、透視変換される際に、仮想カメラの視軸の位置が常に向けられる被写体となっている。ノンプレイヤキャラクタは、透視変換の際に障害物とされないオブジェクトであり、後述するカメラコリジョンの範囲内にノンプレイヤキャラクタが存在していても、これによって仮想カメラの視点の位置が変更されることはない。キャラクタ以外のオブジェクトは、全て障害物となるオブジェクトであり、後述するカメラコリジョンの範囲内にキャラクタ以外のオブジェクト（障害物）が存在すれば、カメラコリジョンに障害物が存在しなくなる位置まで仮想カメラの視点の位置が移動させられる。
【００５２】
次に、この実施の形態にかかるビデオゲームにおいて、障害物を回避するように仮想カメラの視点の位置を制御するために設定されるカメラコリジョンについて説明する。図２は、この実施の形態にかかるビデオゲームで設定されるカメラコリジョンの例を示す図である。図示するように、カメラコリジョン３００は、仮想カメラの視点２０１を中心とした半径Ｒの球に設定されるカメラ周辺領域３０１と、被写体（プレイヤキャラクタ）２０２を中心とした半径ｒの球に設定される被写体周辺領域３０２と、カメラ周辺領域３０１と被写体周辺領域３０２の間の円錐台形状の領域に設定されるカメラ被写体間領域３０３とからなる。
【００５３】
カメラ周辺領域３０１の半径Ｒと、被写体周辺領域３０２の半径ｒとは、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じて変化させられる。すなわち、仮想カメラの視点２０１と被写体２０２の位置との間の距離Ｄが所定の基準値である距離（基準距離）Ｄｓとなっているときにおける半径Ｒ、ｒの標準値をそれぞれＲｓ、ｒｓとした場合、カメラ周辺領域３０１の半径Ｒ、被写体周辺領域３０２の半径ｒは、それぞれ数式１に示すように求められる。
【００５４】
（数１）
Ｒ＝Ｒｓ×（Ｄ／Ｄｓ）α
ｒ＝ｒｓ×（Ｄ／Ｄｓ）β
ここで、α、βは、所定の定数であって、α＝βとしてもよい。
【００５５】
この数式１から分かるように、カメラコリジョン３００の大きさを定めるカメラ周辺領域３０１の半径Ｒ、被写体周辺領域３０２の半径ｒは、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが基準距離Ｄｓよりも小さくなると標準値Ｒｓ、ｒｓよりも小さくなる。仮想カメラの視点２０１の位置は、通常は被写体２０２の位置との間の距離Ｄが基準距離Ｄｓとなる位置に設定されるが、カメラコリジョン３００に障害物が存在すると、より被写体２０２の位置に近い位置に設定される。
【００５６】
仮想カメラの視点２０１の位置は、カメラコリジョン３００に障害物が存在していなければ、被写体２０２となるプレイヤキャラクタの移動またはＬＲボタンの入力に応じて、被写体２０２との間の距離を基準距離Ｄｓに保ちながら移動させられる。すなわち、カメラコリジョン３００に障害物が存在していなければ、プレイヤキャラクタ（被写体２０２）が移動すると、プレイヤキャラクタと平行に同距離だけ、視軸２０３の方向を変化させずに仮想カメラの視点２０１の位置が移動する。また、ＬＲボタンからの指示が入力されると、被写体２０２となるプレイヤキャラクタとの距離を距離Ｄｓに保ちながら、被写体２０２を中心に所定角度だけ回転移動し、これに伴って、仮想カメラの視軸２０３の方向が変化させられる。
【００５７】
仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが基準距離Ｄｓとなっている状態から被写体２０２の移動またはＬＲボタンからの入力に応じて次に仮想カメラの視点２０１が移動される位置（次候補位置）において、カメラコリジョン３００の範囲内に障害物が存在することとなる場合には、仮想カメラの視点２０１の位置は、次候補位置よりもさらに被写体２０２に向けて所定距離だけ移動させられる（視軸２０３の方向に変化なし）。
【００５８】
仮想カメラの視点２０１の位置が被写体２０２に向けて移動される、すなわち距離Ｄが小さくなると、カメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒが小さくなり、カメラコリジョン３００の大きさが縮小されるが、縮小されたカメラコリジョン３００に障害物が存在しなければ、仮想カメラの視点２０１の位置が決められる。縮小されたカメラコリジョン３００でも障害物が存在するようであれば、カメラコリジョン３００内に障害物が存在しなくなる位置まで、仮想カメラの視点２０１の位置は被写体２０２の方向に近づけられる（視軸２０３の方向に変化なし）。
【００５９】
また、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが基準距離Ｄｓよりも短くなっている状態から被写体２０２の移動またはＬＲボタンからの入力に応じて次に仮想カメラの視点２０１が移動される位置（次候補位置）において、カメラコリジョン３００の範囲内に障害物が存在しないこととなる場合には、仮想カメラの視点２０１の位置は、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが基準距離Ｄｓより小さいことを条件として、次候補位置よりも被写体２０２から所定距離だけ遠くに移動される（視軸２０３の方向に変化なし）。
【００６０】
仮想カメラの視点２０１の位置が被写体２０２から遠くに移動される、すなわち距離Ｄが大きくなると、カメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒが大きくなり、カメラコリジョン３００の大きさが拡大されるが、拡大されたカメラコリジョン３００に障害物が存在すれば、仮想カメラの視点２０１の位置が再び被写体２０２に向けて所定距離だけ移動させられ、元の次候補位置まで戻される（視軸２０３の方向に変化なし）。
【００６１】
また、仮想カメラの視点２０１の位置が被写体２０２から遠くに移動され、これによって大きさが拡大されたカメラコリジョン３００においても障害物が存在しなければ、距離Ｄが基準距離Ｄｓとなるまでか、カメラコリジョン３００に障害物の存在する状態での最大距離となるまで、想カメラ２０１の位置がさらに被写体２０２から遠くに所定距離だけ移動させられる（視軸２０３の方向に変化なし）。
【００６２】
このように仮想カメラの視点２０１の位置と被写体２０２の間の距離Ｄに応じて大きさの変化するカメラコリジョン３００に障害物が存在しなくなるように仮想カメラの視点２０１の移動を制御することによって、仮想カメラの視点２０１の位置が障害物の存在によって急激に変化させられることがなく、滑らかに移動されることとなる。なお、カメラコリジョン３００の設定と仮想カメラの視点２０１の位置の移動の関係については、詳しく後述する。
【００６３】
なお、カメラコリジョン３００に障害物が存在するかどうかは、カメラ周辺領域３０１、被写体周辺領域３０２、及びカメラ被写体間領域３０３のそれぞれについて判断され、カメラ周辺領域３０１、被写体周辺領域３０２、及びカメラ被写体間領域３０３の何れかに障害物が存在すると判断されれば、カメラコリジョン３００に障害物が存在すると判断されることとなる。
【００６４】
ここで、カメラ周辺領域３０１に障害物が存在するかどうかは、仮想カメラの視点２０１の位置と障害物となり得る各オブジェクトの間の距離が半径Ｒ以下であるかどうかによって判断すればよい。同様に、被写体周辺領域３０２に障害物が存在するかどうかは、被写体２０２の位置と障害物となり得る各オブジェクトの間の距離が半径ｒ以下であるかどうかによって判断すればよい。
【００６５】
カメラ被写体間領域３０３については、例えば、仮想カメラの視点２０１の位置、被写体２０２の位置、並びにカメラ周辺領域３０１及び被写体周辺領域３０２の半径Ｒ、ｒによって定義される円錐（カメラ被写体間領域３０３を構成する円錐台の一部となる）に障害物が存在するかどうかを該円錐の頂点からの角度の計算によって判断し、さらに当該障害物の存在するのが該円錐の頂点からの距離の計算によってカメラ被写体領域３０３を構成する円錐台に含まれない部分であるかを判断すればよい。
【００６６】
上記のようにして仮想カメラの視点２０１の位置及び視軸２０３の方向が定められると、透視変換の処理によって、視点２０１及び視軸２０３を基準として所定の角度の範囲に設定される視界並びに前方クリップ面及び後方クリップ面により形成されるクリッピング範囲に含まれる各オブジェクトを仮想スクリーン上に投影した画像が生成される。
【００６７】
より具体的に説明すると、制御部１０３は、仮想カメラの視点２０１の位置及び視軸２０３の方向に応じたクリッピング範囲に含まれる各オブジェクトを構成する各ポリゴンの各頂点のワールド座標系（仮想３次元空間の座標系）を、透視変換の処理によって視点座標系の座標に変換し、さらにスクリーン座標系（仮想スクリーン上における座標系）の座標に変換する。そして、スクリーン座標系に変換した各ポリゴンの情報とともにグラフィック処理部１１１に描画命令を出力する。
【００６８】
描画命令を受け取ったグラフィック処理部１１１は、制御部１０３から渡された各ポリゴンの情報に従って、隠面消去の処理を行いながらクリッピング範囲に含まれる各オブジェクトを仮想スクリーンに投影した画像の画像データをフレームメモリ１１２（当該フレーム期間において書き込み用）に書き込んでいく。グラフィック処理部１１１は、また、前のフレーム期間でフレームメモリ１１２に書き込まれた画像データを読み出し、ビデオ信号として表示装置１２１に出力するものとなる。
【００６９】
以下、この実施の形態にかかるビデオゲームにおける処理について説明する。この実施の形態にかかるビデオゲームは、プレイヤが入力部１６１の操作によりプレイヤキャラクタをゲーム空間となる仮想３次元空間内で移動させることでゲームが進行される。仮想カメラの視点２０１の位置は、被写体２０２となるプレイヤキャラクタの移動に追随して移動する。また、プレイヤは、ゲームを進行させているときにおいて、入力部１６１のＬＲボタンの操作により仮想カメラの視点２０１の位置を移動させることができる。なお、ゲーム空間には様々なイベントが設定されており、プレイヤキャラクタの移動した位置に応じてイベントが発生するが、イベントの発生については本発明とは関係がないため、詳細な説明を省略する。
【００７０】
この実施の形態にかかるビデオゲームにおいてゲームが進行していく様子は、１フレーム期間毎にゲームの進行状況に応じて生成されるゲーム画面としてプレイヤに示される。図３は、この実施の形態にかかるビデオゲームにおいて、ゲーム画面として表示装置１２１の表示画面１２２に表示される画像の画像データを生成するために、制御部１０３が１フレーム期間毎に行う画像生成処理を示すフローチャートである。
【００７１】
１フレームの期間が開始されると、制御部１０３は、前のフレーム期間における透視変換の処理（ステップＳ１１０：後述）でスクリーン座標系の座標に変換されたクリッピング範囲内に含まれる各オブジェクトを構成する各ポリゴンの頂点に関する座標をグラフィック処理部１１１に渡すとともに、グラフィック処理部１１１に描画命令を出力する（ステップＳ１０１）。
【００７２】
グラフィック処理部１１１は、描画命令が出力されると、制御部１０３から受け取った各ポリゴンの情報に従ってフレームメモリ１１２（今回のフレーム期間において書き込み用）に画像データを書き込む。また、グラフィック処理部１１１は、前のフレーム期間でフレームメモリ１１２（今回のフレーム期間において読み出し用）からの画像データの読み出しを開始し、１フレーム分のビデオ信号の出力を開始させる。
【００７３】
次に、制御部１０３は、ゲームの進行状況に応じて仮想３次元空間に存在する各ノンプレイヤキャラクタの位置を移動させる（ステップＳ１０２）。ここでは、全てのノンプレイヤキャラクタの位置を移動させなければならない訳ではなく、ゲームの進行状況によっては、位置の移動されるノンプレイヤキャラクタが１つもなくてもよい。なお、ノンプレイヤキャラクタの位置の移動については、従来よりこの種のビデオゲームにおいて行われていたのと同じ処理を適用すればよい。
【００７４】
次に、制御部１０３は、入力部１６１の方向キーからの指示が入力されているかどうかにより、被写体２０２となるプレイヤキャラクタを仮想３次元空間で移動させるための指示が入力されているかどうかを判定する（ステップＳ１０３）。プレイヤキャラクタを移動させるための指示が入力されている場合には、制御部１０３は、仮想カメラの視軸２０３の向き及び該入力された指示に応じてプレイヤキャラクタの仮想３次元空間における位置を移動させ（ステップＳ１０４）、また、プレイヤキャラクタの移動に追随して仮想カメラの視点２０１の位置を移動させる（ステップＳ１０５）。そして、ステップＳ１０９の処理に進む。
【００７５】
プレイヤキャラクタを移動させるための指示が入力されていない場合には、制御部１０３は、入力部１６１のＬＲキーからの指示が入力されているかどうかにより、仮想カメラの視点２０１の位置を移動させるための指示が入力されているかどうかを判定する（ステップＳ１０６）。仮想カメラの視点２０１の位置を移動させるための指示が入力されていなければ、仮想カメラの視点２０１の位置及び被写体２０２の位置は前回のフレーム期間と同じままであり、この位置でカメラコリジョン３００内に障害物が存在することはないので、そのままステップＳ１１０の処理に進む。
【００７６】
仮想カメラの視点２０１の位置を移動させるための指示が入力されていれば、制御部１０３は、該入力された指示に応じて仮想カメラの視点２０１の位置を移動させ（ステップＳ１０７）、また、移動した視点２０１の位置においてプレイヤキャラクタ（被写体２０２）を向くように仮想カメラの視軸２０３の向きを変更する（ステップＳ１０８）。そして、ステップＳ１０９の処理に進む。
【００７７】
ステップＳ１０９では、制御部１０３は、詳細を後述する仮想カメラ制御処理を行って、仮想カメラの視点２０１の位置をカメラコリジョン３００内に障害物となるオブジェクトが存在しない位置に制御する。仮想カメラ制御処理によって仮想カメラの視点２０１の位置が最終的に設定されると、ステップＳ１１０の処理に進む。
【００７８】
ステップＳ１１０では、制御部１０３は、ステップＳ１０９までに定められた今回のフレーム期間における仮想カメラの視点２０１の位置及び視軸２０３の方向に応じて定められるクリッピング範囲に存在する各オブジェクトを構成する各ポリゴンの頂点の座標を、ワールド座標系の座標からスクリーン座標系の座標に変換する透視変換の処理を行う。そして、透視変換の処理が終了すると、今回のフレーム期間における画像生成処理が終了する。また、次のフレーム期間が開始すると、新たに画像生成処理が開始されるものとなる。
【００７９】
図４は、ステップＳ１０９の仮想カメラ制御処理を詳細に示すフローチャートである。仮想カメラ制御処理においては、制御部１０３は、現時点における仮想カメラの視点２０１の位置及び被写体２０２（プレイヤキャラクタ）の位置との間の距離Ｄを算出する（ステップＳ２０１）。制御部１０３は、算出した距離Ｄに従って前述した数式１の演算を行い、カメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒとを算出する（ステップＳ２０２）。
【００８０】
次に、制御部１０３は、現時点における仮想カメラの視点２０１及び被写体２０２の位置、並びに算出した半径Ｒ、ｒに応じて定められるカメラコリジョン３００の範囲内に、プレイヤキャラクタ及びノンプレイヤキャラクタ以外の障害物となるオブジェクトが存在するかどうかを判定する（ステップＳ２０３）。ステップＳ２０３においてカメラコリジョン３００の範囲内に障害物となるオブジェクトが存在する場合には、制御部１０３は、仮想カメラの視点２０１の位置を被写体２０２の位置に向けて所定距離だけ近づける（ステップＳ２０４）。そして、ステップＳ２０１の処理に戻る。
【００８１】
ステップＳ２０３においてカメラコリジョンの範囲内に障害物となるオブジェクトが存在しない場合には、制御部１０３は、ステップＳ２０１で直近に算出した距離Ｄが基準距離Ｄｓとなっているかどうかを判定する（ステップＳ２０５）。距離Ｄが基準距離Ｄｓとなっている場合には、現時点で求められている視点２０１の位置が今回のフレーム期間における仮想カメラの視点２０１の位置となるので、そのまま仮想カメラ制御処理を終了して、図３のフローチャートに復帰する。
【００８２】
算出した距離Ｄが基準距離Ｄｓとなっていない場合には、制御部１０３は、仮想カメラの視点２０１の位置を被写体２０２の位置から所定距離だけ遠ざける（ステップＳ２０６）。制御部１０３は、ここでまた現時点における仮想カメラの視点２０１の位置及び被写体２０２（プレイヤキャラクタ）の位置との間の距離Ｄを算出する（ステップＳ２０７）。制御部１０３は、算出した距離Ｄに従って前述した数式１の演算を行い、カメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒとを算出する（ステップＳ２０８）。
【００８３】
次に、制御部１０３は、現時点における仮想カメラの視点２０１及び被写体２０２の位置、並びに算出した半径Ｒ、ｒに応じて定められるカメラコリジョン３００の範囲内に、プレイヤキャラクタ及びノンプレイヤキャラクタ以外の障害物となるオブジェクトが存在するかどうかを判定する（ステップＳ２０９）。
【００８４】
ステップＳ２０９においてカメラコリジョン３００の範囲内に障害物となるオブジェクトが存在する場合には、制御部１０３は、仮想カメラの視点２０１の位置を被写体２０２の位置に向けて所定距離だけ近づける（ステップＳ２１０）。これにより、現時点で求められている視点２０１の位置がカメラコリジョン３００の範囲内に障害物の存在しない条件で距離Ｄが基準距離Ｄｓに最も近くなる位置となるので、これで仮想カメラ制御処理を終了して、図３のフローチャートに復帰する。
【００８５】
ステップＳ２０９においてカメラコリジョン３００の範囲内に障害物となるオブジェクトが存在しない場合には、制御部１０３は、ステップＳ２０１で直近に算出した距離Ｄが基準距離Ｄｓとなっているかどうかを判定する（ステップＳ２１１）。距離Ｄが基準距離Ｄｓとなっている場合には、現時点で求められている視点２０１の位置が今回のフレーム期間における仮想カメラの視点２０１の位置となるので、そのまま仮想カメラ制御処理を終了して、図３のフローチャートに復帰する。
【００８６】
ステップＳ２１１で距離Ｄが基準距離Ｄｓとなっていない場合には、少なくとも現時点における仮想カメラの視点２０１の位置ではカメラコリジョン３００の範囲内に障害物となるオブジェクトは存在しないが、距離Ｄがより基準距離Ｄｓに近くなる位置まで仮想カメラの視点２０１の位置を移動してもカメラコリジョン３００の範囲内に障害物となるオブジェクトが存在していない可能性もある。従って、この場合、制御部１０３は、ステップＳ２０６の処理に戻って、さらに処理を続けるものとなる。
【００８７】
以下、この実施の形態にかかるビデオゲームにおいて、障害物の存在する領域における被写体２０２の移動に応じた仮想カメラの視点２０１の移動について具体的に説明する。図５（ａ）〜（ｈ）、図６（ａ）〜（ｇ）は、この実施の形態にかかるビデオゲームにおけるカメラコリジョン３００の設定と、透視変換の際に障害物を避けるようにするための仮想カメラの視点２０１の位置の移動の具体例を模式的に示す図である。
【００８８】
まず、図５（ａ）に示すように、仮想カメラの視点２０１の位置と被写体（プレイヤキャラクタ）２０２の位置との間の距離がＤ１（＝Ｄｓ）にあり、ここで設定されるカメラ周辺領域３０１、被写体周辺領域３０２及びカメラ被写体間領域３０３で構成されるカメラコリジョン３００の範囲内には、障害物４００が存在していないものとする。次に、図５（ｂ）に示すように、被写体２０２の位置が移動し、これに追随して仮想カメラの視点２０１の位置を移動すると、障害物４００がカメラコリジョン３００の範囲内に入ってしまうことになるものとする。
【００８９】
この場合には、図５（ｃ）に示すように、仮想カメラの視点２０１の位置が被写体２０２の位置に近づけられる。こうして仮想カメラの視点２０１の位置及び被写体（プレイヤキャラクタ）２０２の位置との間の距離がＤ２（＜Ｄ１）となると、カメラコリジョン３００の大きさが小さくなり、この大きさでのカメラコリジョン３００の範囲内には障害物４００が入らなくなるものとなる。もっとも、図５（ｄ）に示すように、被写体２０２の位置がさらに移動し、これに追随して仮想カメラの視点２０１の位置を移動すると、障害物４００がカメラコリジョン３００の範囲内に入ってしまうことになるものとする。
【００９０】
この場合には、図５（ｅ）に示すように、仮想カメラの視点２０１の位置が被写体２０２の位置にさらに近づけられる。こうして仮想カメラの視点２０１の位置及び被写体２０２の位置との間の距離がＤ３（＜Ｄ２）となると、カメラコリジョン３００の大きさがさらに小さくなり、この大きさでのカメラコリジョン３００の範囲内には障害物４００が入らなくなるものとなる。もっとも、図５（ｆ）に示すように、被写体２０２の位置がさらに移動し、これに追随して仮想カメラの視点２０１の位置を移動すると、障害物４００がカメラコリジョン３００の範囲内に入ってしまうことになるものとする。
【００９１】
この場合には、図５（ｇ）に示すように、仮想カメラの視点２０１の位置が被写体２０２の位置にさらに近づけられる。こうして仮想カメラの視点２０１の位置及び被写体２０２の位置との間の距離がＤ４（＜Ｄ３）となると、カメラコリジョン３００の大きさがさらに小さくなり、この大きさでのカメラコリジョン３００の範囲内には障害物４００が入らなくなるものとなる。もっとも、図５（ｈ）に示すように、被写体２０２の位置がさらに移動し、これに追随して仮想カメラの視点２０１の位置を移動すると、障害物４００がカメラコリジョン３００の範囲内に入ってしまうことになるものとする。
【００９２】
この場合には、図６（ａ）に示すように、仮想カメラの視点２０１の位置が被写体２０２の位置にさらに近づけられる。こうして仮想カメラの視点２０１の位置及び被写体２０２の位置との間の距離がＤ５（＜Ｄ４）となると、カメラコリジョン３００の大きさがさらに小さくなり、この大きさでのカメラコリジョン３００の範囲内には障害物４００が入らなくなるものとなる。もっとも、図６（ｂ）に示すように、被写体２０２の位置がさらに移動し、これに追随して仮想カメラの視点２０１の位置を移動すると、障害物４００がカメラコリジョン３００の範囲内に入ってしまうことになるものとする。
【００９３】
この場合には、図６（ｃ）に示すように、仮想カメラの視点２０１の位置が被写体２０２の位置にさらに近づけられる。こうして仮想カメラの視点２０１の位置及び被写体２０２の位置との間の距離がＤ６（＜Ｄ５）となると、カメラコリジョン３００の大きさがさらに小さくなり、この大きさでのカメラコリジョン３００の範囲内には障害物４００が入らなくなるものとなる。もっとも、図６（ｄ）に示すように、被写体２０２の位置がさらに移動し、これに追随して仮想カメラの視点２０１の位置を移動すると、障害物４００がカメラコリジョン３００の範囲内に入ってしまうことになるものとする。
【００９４】
この場合には、図６（ｅ）に示すように、仮想カメラの視点２０１の位置が被写体２０２の位置にさらに近づけられる。こうして仮想カメラの視点２０１の位置及び被写体２０２の位置との間の距離がＤ７（＜Ｄ６）となると、カメラコリジョン３００の大きさがさらに小さくなり、この大きさでのカメラコリジョン３００の範囲内には障害物４００が入らなくなるものとなる。もっとも、図６（ｆ）に示すように、被写体２０２の位置がさらに移動し、これに追随して仮想カメラの視点２０１の位置を移動すると、障害物４００がカメラコリジョン３００の範囲内に入ってしまうことになるものとする。
【００９５】
この場合には、図６（ｇ）に示すように、仮想カメラの視点２０１の位置が被写体２０２の位置にさらに近づけられる。こうして仮想カメラの視点２０１の位置及び被写体２０２の位置との間の距離がＤ８（＜Ｄ７）となると、カメラコリジョン３００の大きさがさらに小さくなり、この大きさでのカメラコリジョン３００の範囲内には障害物４００が入らなくなるものとなる。
【００９６】
このように、この実施の形態にかかるビデオゲームでは、図５（ａ）、図５（ｃ）、図５（ｅ）、図５（ｇ）、図６（ａ）、図６（ｃ）、図６（ｅ）、図６（ｇ）に示す位置で仮想カメラの視点２０１の位置が移動していく場合、これらの図に矢印で示すように、仮想カメラの視点２０１の移動は、滑らかに行われていることが分かる。特に、図６（ａ）、図６（ｃ）、図６（ｅ）、図６（ｇ）に示すように、仮想カメラの視点２０１の位置よりも後側（被写体２０２よりも遠い側）に障害物がある場合も、カメラ周辺領域３０１が仮想カメラの視点２０１の位置より後側の領域までを含んでいるために、仮想カメラの視点２０１の移動が、滑らかに行われていることが分かる。
【００９７】
なお、図５、図６においては、被写体２０２となるプレイヤキャラクタの移動に追随して仮想カメラの視点２０１の位置が移動し、これにより仮想カメラの視点２０１の位置と被写体２０２の位置とを結ぶ直線に障害物４００が徐々に近づいてくる場合を説明したが、入力部１６１のＬＲボタンから入力された指示により仮想カメラの視点２０１の位置が移動し、これにより仮想カメラの視点２０１の位置と被写体２０２の位置とを結ぶ直線に障害物４００が徐々に近づいてくる場合にも、仮想カメラの視点２０１の位置が滑らかに移動されるものとなる。
【００９８】
また、被写体２０２となるプレイヤキャラクタの移動または入力部１６１のＬＲボタンからの指示の入力に従って仮想カメラの視点２０１の位置と被写体２０２の位置とを結ぶ直線から障害物４００が徐々に遠ざかっていく場合には、図５（ａ）、図５（ｃ）、図５（ｅ）、図５（ｇ）、図６（ａ）、図６（ｃ）、図６（ｅ）、図６（ｇ）の順番とは逆の関係で仮想カメラの視点２０１の位置が移動していくことになるので、仮想カメラの視点２０１の位置が滑らかに移動されるものとなる。
【００９９】
比較例として、従来例にかかるビデオゲームにおいて、障害物の存在する領域における被写体２０２の移動に応じた仮想カメラの視点の移動について具体的に説明する。図７（ａ）〜（ｄ）は、従来例にかかるビデオゲームにおいて、透視変換の際に障害物を避けるようにするための仮想カメラの視点２０１の位置の移動の具体例を模式的に示す図である。
【０１００】
まず、図７（ａ）に示すように、仮想カメラの視点２０１の位置及び被写体（プレイヤキャラクタ）２０２の位置との間の距離がＤ１（＝Ｄｓ）にあるものとする。ここでの仮想カメラの視点２０１の位置及び被写体２０２の位置関係は、図５（ａ）に示したものと同じであるとする。ここでは、仮想カメラの視点２０１の位置と被写体２０２の位置との間に障害物４００は存在しない。
【０１０１】
次に、図７（ｂ）に示すように、図５（ａ）の状態から図５（ｂ）に示す状態に移動する場合と同じだけ被写体２０２の位置が移動し、これに追随して仮想カメラの視点２０１の位置が移動したものとする。図５（ｂ）ではカメラコリジョン３００の範囲内に障害物４００が存在することとなったが、図７（ｂ）では仮想カメラの視点２０１の位置と被写体２０２との間に障害物４００が存在しないので、仮想カメラの視点２０１の位置が被写体２０２の位置に近づけられることはなく、仮想カメラの視点２０１の位置をこの位置において透視変換の処理が行われる。
【０１０２】
さらに、図７（ｃ）に示すように、図５（ｃ）の状態から図５（ｄ）に示す状態に移動する場合と同じだけ被写体２０２の位置が移動し、これに追随して仮想カメラの視点２０１の位置が移動したものとする。図５（ｄ）でもカメラコリジョン３００の範囲内に障害物４００が存在することとなったが、図７（ｃ）でも仮想カメラの視点２０１の位置と被写体２０２との間に障害物４００が存在しないので、仮想カメラの視点２０１の位置が被写体２０２の位置に近づけられることはなく、仮想カメラの視点２０１の位置をこの位置において透視変換の処理が行われる。
【０１０３】
その後、図７（ｄ）に示すように、図５（ｅ）の状態から図５（ｆ）に示す状態に移動する場合と同じだけ被写体２０２の位置が移動し、これに追随して仮想カメラの視点２０１の位置が移動したものとする。図７（ｄ）の状態では、仮想カメラの視点２０１の位置と被写体２０２との間に障害物４００が存在してしまうこととなる。
【０１０４】
そこで、図７（ｅ）に示すように、仮想カメラの視点２０１の位置と被写体２０２との間に障害物４００が存在しなくなる位置、すなわち仮想カメラの視点２０１の位置と被写体２０２との間の距離ＤがＤ０（≪Ｄ１）となる位置まで、仮想カメラの視点２０１の位置が移動されることとなる。その後は、図７（ｆ）に示すように、被写体２０２の位置の移動に追随して、被写体２０２の位置との間の距離を一定に保ちつつ仮想カメラの視点２０１の位置が移動される。
【０１０５】
その後も、図７（ｇ）に示すように、被写体２０２の位置が移動し、これに追随して、仮想カメラの視点２０１の位置と被写体２０２との間に障害物４００が存在してしまうこととなるまで、仮想カメラの視点２０１の位置が移動したものとする。そこで、図７（ｈ）に示すように、仮想カメラの視点２０１の位置と被写体２０２との間に障害物４００が存在しなくなる位置、すなわち仮想カメラの視点２０１の位置と被写体２０２との間の距離ＤがＤ００（≪Ｄ０）となる位置まで、仮想カメラの視点２０１の位置が移動されることとなる。
【０１０６】
このように、比較例にかかる従来のビデオゲームでは、図７（ａ）、（ｂ）、（ｃ）、（ｅ）、（ｆ）、（ｈ）に示す位置で仮想カメラの視点２０１の位置が移動していく場合、図７（ｅ）、（ｆ）、（ｈ）に矢印で示すように、仮想カメラの視点２０１の移動が急激に行われてしまうことが分かる。
【０１０７】
以上説明したように、この実施の形態にかかるビデオゲームでは、プレイヤキャラクタを被写体２０２として透視変換の処理が行われ、表示装置１２１の表示画面１２２として表示されるゲームの画像が１フレーム期間毎に生成される。ここで、プレイヤが入力部１６１の方向キーから指示を入力すると、入力された指示に応じた方向に被写体２０２となるプレイヤキャラクタが移動し、これに追随して仮想カメラの視点２０１の位置も移動する。また、プレイヤが入力部１６１のＬＲボタンから指示を入力すると、仮想カメラの視軸２０３の方向を被写体２０２となるプレイヤキャラクタを向くように変化させつつ、仮想カメラの視点２０１の位置が周回移動、または極座標上で移動させられる。
【０１０８】
このように仮想カメラの視点２０１の位置は、被写体２０２となるプレイヤキャラクタの移動に追随して移動されるか、入力部１６１のＬＲボタンからの入力によって移動されるものであるが、カメラコリジョン３００の範囲内に障害物が存在することになると、該カメラコリジョン３００の範囲内に障害物が入らない位置となるまで、仮想カメラの視点２０１の位置が被写体２０２の位置の方向に向けて移動される。
【０１０９】
ここで、カメラコリジョン３００は、仮想カメラの視点２０１の位置を中心とする半径Ｒの球に設定されるカメラ周辺領域３０１と、被写体２０２の位置を中心とする半径ｒの球に設定される被写体周辺領域３０２と、その間の円錐台形状のカメラ被写体間領域３０３とから構成されている。カメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒは、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが基準距離Ｄｓよりも小さくなると、基準距離Ｄｓのときの標準値である半径Ｒｓ、ｒｓよりも小さくなり、カメラコリジョン３００の大きさが縮小されるものとなっている。
【０１１０】
このため、仮想カメラの視点２０１の位置から比較的離れた位置でカメラコリジョン３００の範囲内に障害物が存在している場合には、仮想カメラの視点２０１の位置を被写体２０２の位置に近づければカメラコリジョン３００の大きさが縮小されるので、被写体２０２の位置に近づけた位置をカメラコリジョン３００の範囲内に障害物の存在しない位置として仮想カメラの視点２０１の位置を定めることができる。
【０１１１】
このため、例えば、仮想カメラ２０１の視点の位置と被写体２０２の位置とを結ぶ直線と障害物の間の距離が徐々に短くなっていくような場合に、仮想カメラの視点２０１の位置を被写体２０２の位置に向けて徐々に近づけていくことが可能になる。そして、この直線上に障害物が入り込むときには、その直前までに仮想カメラの視点２０１の位置はかなり被写体２０２の位置の方に移動しているので、障害物の位置よりも被写体２０２の位置からの距離が短い位置まで仮想カメラの視点２０１の位置を移動させるにしても、仮想カメラの視点２０１の位置が急激に移動されてしまうことがない。
【０１１２】
また、仮想カメラの視点２０１の位置と被写体２０２の位置とを結ぶ直線と障害物との間の距離が徐々に長くなっていくような場合には、仮想カメラの視点２０１の位置を被写体２０２から一気に遠ざけすぎるとカメラコリジョン３００が大きくなってカメラコリジョン３００に障害物が入り込んでしまうこととなるので、仮想カメラの視点２０１の位置は、被写体２０２の位置から徐々に遠ざかっていくものとなる。
【０１１３】
このように、この実施の形態にかかるビデオゲームでは、仮想カメラ２０１の視点の位置と被写体２０２の位置との間に障害物が入り込んでしまうのを回避するように仮想カメラの視点２０１の位置を制御するものとしても、仮想カメラの視点２０１の位置の移動が滑らかに行われるものとなっている。これにより、表示装置１２１の表示画面１２２に表示された画像を見ているプレイヤが、表示される画像の変化に違和感を生じさせてしまうことがない。また、仮想カメラの視点２０１の位置が急激に切り替わることがないため、表示されている画像を見ていることでプレイヤがカメラ酔いをしてしまうこともない。
【０１１４】
さらに、カメラコリジョン３００の範囲内に存在する障害物に対して透過処理を行う訳でもないので、表示装置１２１の表示画面１２２に表示された画像において本来障害物に隠されて見える筈のないオブジェクトがプレイヤに見えてしまったりするということもない。これにより、表示装置１２１の表示画面１２２に表示された画像を見ているプレイヤが、表示される画像において視認しているオブジェクトに違和感を生じさせてしまうこともない。
【０１１５】
また、カメラ周辺領域３０１と被写体周辺領域３０２は、それぞれ仮想カメラの視点２０１の位置、被写体２０２の位置を中心とする球に含まれる領域に設定されている。このため、カメラコリジョン３００のうちでカメラ周辺領域３０１や被写体周辺領域３０２に障害物が存在するかどうかは、仮想カメラの視点２０１の位置や被写体２０２の位置と障害物となり得る各オブジェクトを構成するポリゴンの頂点の位置との間の距離計算で容易に判断することができる。また、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離に応じてカメラ周辺領域３０１や被写体周辺領域３０２の大きさを変化させるものとしても、計算が複雑になることはない。
【０１１６】
また、カメラコリジョン３００を構成するカメラ周辺領域３０１は、仮想カメラの視点２０１の位置を中心とする球からなり、被写体２０２の位置からの距離が視点２０１の位置よりも遠い領域まで含んでいるため、仮想カメラの視点２０１の位置が障害物の位置よりも被写体２０２の近くに回り込んでいる場合でも、尚も滑らかに視点２０１の位置を移動させ続けることができる。
【０１１７】
さらに、カメラコリジョン３００は、被写体２０２の位置を中心とする球の領域に設定される被写体周辺領域３０２までも含んでいるため、被写体の位置に非常に近い位置で仮想カメラ２０１の視点の位置と被写体２０２の位置とを結ぶ直線に障害物が徐々に近づいて来るような場合にも、仮想カメラの視点２０１の位置を滑らかに移動させながら仮想カメラの視点２０１の位置と被写体２０２の位置との間に障害物が入り込んでしまうのを回避することができるようになる。
【０１１８】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【０１１９】
上記の実施の形態では、仮想カメラの視点２０１の位置は、被写体２０２の位置との間の距離Ｄが最大でも基準距離Ｄｓとなる位置に設定されていたが、距離Ｄが基準距離Ｄｓよりも大きくなる位置に設定されることがあってもよい。この場合において、カメラ周辺領域３０１の半径Ｒ、被写体周辺領域３０２の半径ｒは、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが基準距離Ｄｓよりも大きくなると、距離Ｄが基準距離Ｄｓである場合の標準値Ｒｓ、ｒｓよりも大きくなるものとすることができる。
【０１２０】
上記の実施の形態では、仮想カメラの視軸２０３の向きは、常にプレイヤキャラクタに向けて制御される、すなわちプレイヤキャラクタを被写体２０２として制御されるものとなっていた。しかしながら、仮想カメラの視軸２０３を向ける被写体２０２となるオブジェクトは、必ずしもプレイヤキャラクタに限るものではない。被写体２０２となるオブジェクトは、無色透明なオブジェクト或いは領域の幅を持たないオブジェクトのように、表示画面１２２に表示されることのないオブジェクトであってもよい。
【０１２１】
上記の実施の形態では、仮想カメラの視点２０１の位置は、カメラコリジョン３００の範囲内に障害物となるオブジェクトが存在しない場合には、入力部１６１のＬＲボタンからの指示の入力に従って移動させられる場合を除いては、被写体２０２となるプレイヤキャラクタの位置の移動に追随して移動させられるものとしていた。もっとも、入力部１６１の方向キーからの指示の入力によってプレイヤキャラクタの位置だけではなく向きも変化させられる場合には、この向きの変化に追随して移動させられるものとしてもよい。
【０１２２】
また、仮想カメラの視点２０１の位置は、カメラコリジョン３００の範囲内に障害物となるオブジェクトが存在することによって移動される場合以外は、被写体２０２となるプレイヤキャラクタの位置の移動（及び向きの変化）に完全に追随して移動させられるものであってもよい。また、仮想カメラの視点２０１の位置は、例えば、Ｌ１ボタン及びＲ１ボタンからの指示の入力によって被写体２０２を中心に周回移動させられるが、極座標方向には移動されないものとしてもよい。
【０１２３】
また、仮想カメラの視点２０１の位置は、被写体２０２と仮想カメラの視点２０１の間の距離を調整して障害物を回避する場合以外にも、できるだけ被写体２０２と仮想カメラ２０１の間の距離を変化させずに被写体２０２を向くように視軸２０３の角度を制御することを条件として、従来より知られている任意の手法により制御するものとすることができる。例えば、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが所定の範囲内にあるときには被写体２０２の位置が移動しても視点２０１の位置を固定したまま視軸２０３の角度の調整のみで（被写体２０２と仮想カメラの視点２０１の間の距離を変えずに）仮想カメラを被写体２０２に追随させるが、距離Ｄが所定の範囲を越える位置まで移動したときには距離Ｄが所定の範囲内となる位置に仮想カメラの視点２０１の位置を移動させるものとすることができる。
【０１２４】
上記の実施の形態では、カメラコリジョン３００の範囲内に障害物が存在するときには、仮想カメラの視点２０１の位置を被写体２０２の方向に移動させ、こうして障害物がカメラコリジョン３００の範囲内に入ってしまうのを回避するものとしていた。しかしながら、障害物を回避するための仮想カメラの視点２０１の移動方向は、被写体２０２の方向に限るものではない。状況に応じて仮想カメラの視点２０１を被写体２０２の方向に移動させる場合と、それ以外の方向に移動させる場合とを併用することもできる。それ以外の方向に移動させる下記の各種手法も、任意の２つ以上のものを併用することができる。
【０１２５】
例えば、カメラコリジョン３００の範囲内に障害物が入らなくなるまで、仮想カメラの視点２０１の位置を極座標上で上方向に移動させるものとしてもよい。また、カメラコリジョン３００の範囲内に障害物が入らなくなるまで、仮想カメラの視点２０１の位置を仮想３次元空間のＺ軸方向に移動させるものとしてもよい。また、仮想カメラの視点２０１を高さを一定に維持させつつ移動させる場合には、カメラコリジョン３００の範囲内に障害物が入ったときには、仮想カメラの視点２０１の位置を左回りまたは右回りで回転移動させて、カメラコリジョン３００の範囲内に障害物が入らなくなるようにしてもよい。
【０１２６】
障害物を回避するため、仮想カメラの視点２０１を被写体２０２の方向に移動させる場合も、極座標上で上下方向に移動させる場合も、左回りまたは右回りで回転移動させる場合も、さらにはこれらを組み合わせる場合も、仮想カメラの視点２０１の位置は、視軸２０３を被写体２０２に向けつつ仮想３次元空間において任意の位置に移動させるものとすることができる。
【０１２７】
上記の実施の形態では、プレイヤキャラクタ及びノンプレイヤキャラクタ以外の仮想３次元空間における位置が変化しないオブジェクトが透視変換の際の障害物となり得るオブジェクトとされていたが、仮想３次元空間における位置の変化するオブジェクト（被写体２０２とならないノンプレイヤキャラクタを含んでいてもよい）も、透視変換の際の障害物となり得るオブジェクトとしてもよい。
【０１２８】
仮想３次元空間における位置の変化するオブジェクトも障害物となり得る場合には、仮想カメラの視点２０１の位置及び被写体２０２の位置が移動しなくても、障害物となり得るオブジェクトの位置が移動することで、カメラコリジョン３００の範囲内に障害物となるオブジェクトが存在してしまうことがある。このような場合にも、ステップＳ１０９の仮想カメラ制御処理（図３）を行うものとし、カメラコリジョン３００の範囲内に障害物となるオブジェクトが含まれないように仮想カメラの視点２０１の位置を移動させるものとすればよい。
【０１２９】
また、上記の実施の形態ではスタンドアローン型のビデオゲームを前提に説明したので、プレイヤキャラクタ以外のキャラクタは全てノンプレイヤキャラクタであるものとして説明したが、ネットワーク１５１を介して接続された複数のビデオゲーム装置１００から各プレイヤが参加するネットワークゲームでは、各々のプレイヤに対応したプレイヤキャラクタが仮想３次元空間に存在することとなる。この場合は、他のプレイヤに対応したプレイヤキャラクタは、透視変換の際の障害物となり得るオブジェクトとすることも障害物となり得ないオブジェクトとすることもできる。ゲームにおいて一定の関係を有するプレイヤのプレイヤキャラクタだけを障害物となり得ないオブジェクトとすることもできる。
【０１３０】
上記の実施の形態では、カメラコリジョン３００の範囲内に障害物となるオブジェクトが存在しないことを条件として、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが基準距離Ｄｓに最も近くなる位置まで仮想カメラの視点２０１の位置を被写体２０２の位置から遠ざけるものとしていた。もっとも、特に障害物となるオブジェクトが仮想３次元空間内を移動するものであったり、仮想３次元空間から突然消えることがあるオブジェクトであったりした場合には、距離Ｄが基準距離Ｄｓとなるまで１フレーム期間で一気に仮想カメラの視点２０１の位置を移動させてしまうと、視点２０１の位置が急激になりすぎてしまうことがある。
【０１３１】
そこで、カメラコリジョン３００の範囲内に障害物となるオブジェクトが存在しない場合であっても、仮想カメラの視点２０１の位置は、前回のフレーム期間における距離Ｄと今回のフレーム期間における距離Ｄとの差が一定の範囲内となることを条件として、距離Ｄが基準距離Ｄｓに近づくように移動させるものとしてもよい。例えば、図４のステップＳ２０９の処理でカメラコリジョン３００の範囲内に障害物が存在しないと判定された場合に、そのまま仮想カメラ制御処理を終了させることなどにより、このような手法を実現することができる。
【０１３２】
上記の実施の形態では、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じてカメラコリジョン３００の大きさを変化させるものとしていたが、仮想カメラの視界は常に所定の角度になっていた。このため、仮想カメラの視点２０１の位置を被写体２０２に近づけると、透視変換により生成される画像に表示される範囲の大きさが変わってしまう。そこで、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じて、仮想カメラの視界の大きさも変化させるものとしてもよい。
【０１３３】
これにより、表示画面１２２として表示される仮想３次元空間の範囲の大きさを、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄの変化に関わらずにほぼ同じ大きさに保つことができるので、障害物を回避するために仮想カメラの視点２０１の位置を被写体２０２の位置に近づけたり遠ざけたりしても、プレイヤが画面上であまり違和感を生じさせなくて済むようになる。
【０１３４】
上記の実施の形態では、カメラコリジョン３００を構成するカメラ周辺領域３０１の半径Ｒも、被写体周辺領域３０２の半径ｒも、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じて変化するものとなっていた。これに対して、カメラ周辺領域３０１の半径Ｒは距離Ｄに応じて可変とするが、被写体周辺領域３０２の半径ｒは距離Ｄに関わらずに一定のものとすることができる。もっとも、被写体周辺領域３０２の半径ｒも距離Ｄに応じて変化させる方が、仮想カメラの視点２０１の動きをスムーズにすることができる。
【０１３５】
上記の実施の形態では、カメラコリジョン３００の大きさ（カメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒ）は、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じて決められるものとしていた。もっとも、ゲームの進行状況の違いによって、仮想カメラの視点２０１の位置が滑らかに流れるように動いた方が臨場感の得られる画像を生成できる場合も、仮想カメラの視点２０１の位置が大きく変化した方が臨場感の得られる画像を生成できる場合もある。また、障害物となり得るオブジェクトが多い場面では、カメラコリジョン３００の大きさを大きくしすぎると、障害物を避けるために仮想カメラの視点２０１の位置の移動される量が大きくなりすぎてしまう場合がある。
【０１３６】
そこで、仮想カメラの視点２０１の位置と被写体２０２の位置との間に距離Ｄに応じてだけではなく、ゲームの場面の違いによっても、カメラコリジョン３００の大きさ（カメラ周辺領域３０１の半径Ｒおよび／または被写体周辺領域３０２の半径ｒ）を変化させるものとしてもよい。ゲームの場面の違いによってカメラコリジョン３００の大きさを変化させる方法としては、場面毎にカメラコリジョン３００の基本の大きさ（半径Ｒ、ｒの標準値）を予め定めておくものを適用しても、ゲームの場面を判断してカメラコリジョン３００の基本の大きさ（半径Ｒ、ｒの標準値）を動的に変化させるものとしてもよい。
【０１３７】
ここで、カメラコリジョン３００の大きさを変化させるゲームの場面の違いとしては、例えば、昼間のシーンと夜のシーンの違いを適用することができる。現実の世界では、明るいときにはカメラマンが障害物にギリギリまで近づいてから障害物を避けるように動くことができる一方、暗いときにはカメラマンが障害物に衝突してしまうのを避けるために早め早めに障害物を回避する行動を取ることが一般的だからである。この場合、ゲームの状況に応じた臨場感のある画像を生成することができるようになる。昼間のシーンと夜のシーンの違いでカメラコリジョン３００の大きさを変化させるものでは、動的にカメラコリジョン３００の大きさを変化させる手法が適するものとなる。
【０１３８】
また、カメラコリジョン３００の大きさを変化させるゲームの場面の違いとしては、例えば、障害物となり得るオブジェクトの多いシーン／少ないシーンの違いを適用することができる。この場合、障害物となり得るオブジェクトが多い場面になっても、カメラコリジョン３００に障害物が入らないようにするための仮想カメラの視点２０１の位置の制御が頻繁になりすぎずに済むようになる。このように障害物となり得るオブジェクトの多いシーン／少ないシーンの違いでカメラコリジョン３００の大きさを変化させるものでは、障害物となり得るオブジェクトが多いか少ないかは場所毎に予め定まっていることが多いので、場所毎に定められた基本の大きさのカメラコリジョン３００を用いる手法が適するものとなる。
【０１３９】
上記の実施の形態では、カメラコリジョン３００は、半径Ｒの球からなるカメラ周辺領域３０１と、半径ｒの球からなる被写体周辺領域３０２と、円錐台形状の領域からなるカメラ被写体間領域３０３とから構成され、カメラ周辺領域３０１の半径Ｒ、被写体周辺領域３０２の半径ｒともに、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じて変化させられるものとしていた。
【０１４０】
これに対して、仮想カメラの視点２０１の位置から見て被写体２０２よりも後側に障害物が存在しても問題にはならないので、被写体周辺領域３０２は、球形の領域とするのではなく、仮想カメラの視点２０１の近い部分だけの半球状の領域としてもよい。もっとも、カメラ被写体間領域３０３が円錐台形状の領域に設定されるのであれば、被写体周辺領域３０２そのものがなくてもよい。
【０１４１】
また、被写体周辺領域３０２がカメラコリジョン３００に含まれないものとし、カメラ周辺領域３００と、被写体２０２の位置を頂点としてカメラ周辺領域３００との間に形成される円錐形状のカメラ被写体間領域とからカメラコリジョン３００が構成されるものとしてもよい。この場合のカメラ被写体間領域に障害物となるオブジェクトが存在するかどうかは、被写体２０２の位置を中心として仮想カメラの視点２０１の位置と障害物となり得るオブジェクトの各頂点の位置とがなす角度と、被写体２０２の位置と障害物となり得るオブジェクトの拡張点の位置とがなす距離とによって求めることができる。
【０１４２】
また、カメラコリジョン３００にカメラ周辺領域３０１と被写体周辺領域３０２とが含まれる場合には、カメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒの何れか一方のみが、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じて変化させられるものとしてもよい。
【０１４３】
また、カメラ被写体間領域３０３の形状は、カメラ周辺領域３０１と被写体周辺領域３０２の形状が球形であれば理想的には円錐台形状（或いはカメラコリジョン３００に被写体周辺領域３０２が含まれない場合には円錐形状）となるが、制御部１０３の処理負荷を軽減するため、角錐台形状（或いは角錐形状）にしてもよい。この角錐台（或いは角錐）の底面は、角の数が多い多角形となっているほど理想の形状に近づくが、制御部１０３の処理負荷が大きくなるので、制御部１０３の処理負荷とのバランスにより適当な画数に定めるものとすることができる。さらに、カメラ周辺領域３０１および／または被写体周辺領域３０２の形状も、多面体形状とすることができる。カメラ周辺領域３０１および／または被写体周辺領域３０２の形状は、仮想カメラの視点２０１の位置から被写体２０２の位置までの方向を長くした楕円球とすることもできる。
【０１４４】
また、カメラ周辺領域３０１は、仮想カメラの視点２０１の位置を中心とした領域に設定されるのではなく、仮想カメラの視点２０１の位置よりもやや被写体２０２に近い位置を中心とした領域に設定されるものとしてもよい。例えば、カメラ周辺領域３０１の半径Ｒの球で構成するものとした場合、カメラ周辺領域３０１の中心位置を仮想カメラの視点２０１の位置よりもＲよりも少ない所定距離だけ被写体２０２に近づけた位置に設定するものとしてもよい。また、カメラ周辺領域３０１および／または被写体周辺領域３０２の形状は、高さ方向の長さを水平方向の長さよりも短くした多面体（正多面体ではない）としてもよい。この場合、カメラ被写体間領域３０３も、楕円角錐（台）形状となる。
【０１４５】
さらに、仮想カメラの視点２０１の位置が水平方向の高さを保って移動される場合には、カメラコリジョン３００が平面形状になるものとしてもよい（例えば、カメラ周辺領域３０１及び被写体周辺領域３０２を円形とし、カメラ被写体間領域３０３を台形とする）。ここでは、仮想カメラの視点２０１の位置が水平方向の高さを保って移動されるという制約があることが条件になるものの、このような制約下ではカメラコリジョン３００を平面形状に設定することができ、より少ない計算量でカメラコリジョン３００に障害物が存在するかどうかを判断することができるようになる。
【０１４６】
上記の実施の形態では、カメラコリジョン３００は、仮想カメラの視点２０１の位置を中心として設定されるカメラ周辺領域３０１と、被写体２０２の位置を中心として設定される被写体周辺領域３０２と、その間のカメラ被写体間領域３０３とを含んでいた。つまり、仮想カメラの視点２０１の位置だけではなく、被写体２０２の位置も含むものとしていた。そして、カメラコリジョン３００に障害物となるオブジェクトが存在することとなると、仮想カメラの視点２０１の位置を被写体２０２の方向に移動させるものとしていた。
【０１４７】
もっとも、カメラコリジョン３００の範囲内に障害物となるオブジェクトが存在するからといって、仮想カメラの視点２０１の位置をあまりに被写体２０２に近づけすぎると、被写体２０２がクリッピング範囲に含まれなくなってしまい、何れにしても表示画面１２２において被写体２０２が表示されなくなってしまう。また、被写体２０２がクリッピング範囲に含まれていたとしても、仮想カメラの視点２０１の位置に近すぎると、被写体２０２となるプレイヤキャラクタの一部のみが大アップで表示されてしまうこととなる。
【０１４８】
このような不都合を回避するため、例えば、カメラコリジョン３００の範囲内に障害物となるオブジェクトが存在する場合には、これを避けるために仮想カメラの視点２０１の位置を被写体２０２の位置に近づけることを基本とするが、被写体２０２の位置から非常に近い位置に障害物となるオブジェクトが存在するときには、これとは異なる方向、例えば、極座標の上方向に仮想カメラの視点２０１の位置を移動させるものとしてもよい。
【０１４９】
或いは、被写体２０２の位置から非常に近い位置に障害物となるオブジェクトが存在する場合には、カメラコリジョン３００の範囲内に障害物となるオブジェクトが存在しても、仮想カメラの視点２０１の位置を被写体２０２の方向に移動させないものとしてもよい。また、カメラコリジョン３００は、被写体２０２の近傍の位置にまで設定するものの被写体２０２の位置が含まれない領域に設定するものとしてもよい。
【０１５０】
これらの場合、被写体２０２の位置から非常に近い位置に障害物となるオブジェクトが存在する場合には、仮に仮想カメラの視点２０１の位置と被写体２０２の位置との間に障害物となるオブジェクトが存在すると、表示画面１２２において被写体２０２が表示されなくなってしまう。もっとも、このような場合でも、プレイヤが入力部１６１のＬＲボタンを操作することで仮想カメラの視点２０１の位置を移動させ、被写体２０２が表示されるようにすることができるので、特に不都合が生じることはない。
【０１５１】
上記の実施の形態では、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに関して基準距離Ｄｓを定め、この基準距離Ｄｓのときのカメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒを標準値Ｒｓ、ｒｓとして定めておくことで、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに従ってカメラ周辺領域３０１の半径Ｒと被写体周辺領域３０２の半径ｒを求めるものとしていた。しかしながら、このように基準距離Ｄｓ、標準値Ｒｓ、ｒｓを予め定めておくことは必ずしも必要ではなく、例えば、数式２のようにカメラ周辺領域３０１の半径Ｒ、被写体周辺領域３０２の半径ｒを求めるものとすることもできる。
【０１５２】
（数２）
Ｒ＝ａ×Ｄｃ
ｒ＝ｂ×Ｄｄ
ここで、ａ、ｂ、ｃ、ｄは、所定の定数であって、ｃ＝ｄとしてもよい。
【０１５３】
また、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが小さくなるのに従ってカメラ周辺領域３０１の半径Ｒ（及び被写体周辺領域３０２の半径ｒ）が小さくなることを条件として、数式１、数式２に当てはまらない演算式も採用することができる。さらに、カメラ周辺領域３０１（及び被写体周辺領域３０２）が球状の領域でない場合には、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄが小さくなるのに従ってカメラ周辺領域３０１（及び被写体周辺領域３０２）の大きさが小さくなることを条件として、任意の演算式に従ってカメラ周辺領域３０１（及び被写体周辺領域３０２）の大きさを算出するものとすることができる。
【０１５４】
上記の実施の形態では、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに近距離限界は定めていなかった。もっとも、仮想カメラの視点２０１の位置を被写体２０２の位置にあまりに近づけすぎると、クリッピング範囲に被写体２０２が含まれていたとしても、表示画面１２２として表示されるゲームの画像における被写体２０２の大きさが大きくなりすぎたり、また、ゲームの画像において被写体２０２以外のオブジェクトが映らなくなったりするという不都合が生じ得る。このような不都合を避けるため、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに一定の近距離限界を定めるものとしてもよい。
【０１５５】
図８（ａ）、（ｂ）は、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに近距離限界を設けた場合におけるカメラコリジョンの例を示す図である。ここで、仮想カメラの視点２０１の位置と被写体２０２の位置との間の標準距離をＤ１、近距離限界となる距離をＤ２とする。また、仮想カメラの視点２０１Ｓの位置と被写体２０２の位置との間の距離Ｄが標準距離Ｄ１であるときのカメラ周辺領域３０１Ｓの半径ＲをＲ１とする。
【０１５６】
図８（ａ）の例では、仮想カメラの視点２０１Ｎの位置と被写体２０２の位置との間の距離Ｄが近距離限界となる距離Ｄ２であるときにおけるカメラ周辺領域３０１Ｎの半径ＲをＲ２（＞０）としている。このような場合におけるカメラ周辺領域３０１の半径は、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じて、数式３に従って算出するものとすることができる。
【０１５７】
（数３）
Ｒ＝Ｒ２＋（Ｒ１−Ｒ２）×（Ｄ−Ｄ２）／（Ｄ１−Ｄ２）
【０１５８】
図８（ｂ）の例では、仮想カメラの視点２０１Ｎの位置と被写体２０２の位置との間の距離Ｄが近距離限界となる距離Ｄ２であるときにおけるカメラ周辺領域３０１Ｎの半径Ｒを０としている。このような場合におけるカメラ周辺領域３０１の半径は、仮想カメラの視点２０１の位置と被写体２０２の位置との間の距離Ｄに応じて、数式４に従って算出するものとすることができる。
【０１５９】
（数４）
Ｒ＝Ｒ１×（Ｄ−Ｄ２）／（Ｄ１−Ｄ２）
【０１６０】
上記の実施の形態では、本発明にかかる画像生成の手法をビデオゲームでの画像を生成する場合に適用し、各プレイヤがゲームを進めるために用いる端末装置としてゲーム専用機であるビデオゲーム装置１００を適用していた。これに対して、本発明は、３次元コンピュータグラフィックによる画像生成であれば、ビデオゲーム以外で画像を生成する場合にも適用することができる。
【０１６１】
また、本発明にかかる手法で画像生成の処理を行う装置は、ビデオゲーム装置１００と同様の構成要素を備え、画像を描画する機能を有するものであれば、汎用のパーソナルコンピュータなどを適用してもよい。３次元コンピュータグラフィックスを処理できる能力があれば、表示装置１２１及びサウンド出力装置１２５を装置本体１０１と同一の筐体内に納めた構成を有する携帯ゲーム機（アプリケーションの実行機能を有する携帯電話機を含む）を適用するものとしてもよい。
【０１６２】
記録媒体１３１としては、ＤＶＤ−ＲＯＭやＣＤ−ＲＯＭの代わりに半導体メモリーカードを適用することができる。このメモリーカードを挿入するためのカードスロットをＤＶＤ／ＣＤ−ＲＯＭドライブ１１３の代わりに設けることができる。汎用のパーソナルコンピュータの場合には、本発明に係るプログラム及びデータを記録媒体１３１に格納して提供するのではなく、ＨＤＤ１０７に予め格納して提供してもよい。本発明にかかるプログラム及びデータを格納して提供するための記録媒体は、ハードウェアの物理的形態及び流通形態に応じて任意のものを適用することができる。
【０１６３】
上記の実施の形態では、ビデオゲーム装置１００のプログラム及びデータは、記録媒体１３１に格納されて配布されるものとしていた。これに対して、これらのプログラム及びデータをネットワーク１５１上に存在するサーバ装置が有する固定ディスク装置に格納しておき、装置本体１０１にネットワーク１５１を介して配信するものとしてもよい。ビデオゲーム装置１００において、通信インターフェイス１１５がサーバ装置から受信したプログラム及びデータは、ＨＤＤ１０７に保存し、実行時にＲＡＭ１０５にロードすることができる。
【図面の簡単な説明】
【０１６４】
【図１】本発明の実施の形態に適用されるビデオゲーム装置の構成を示すブロック図である。
【図２】本発明の実施の形態にかかるビデオゲームで設定されるカメラコリジョンの例を示す図である。
【図３】本発明の実施の形態にかかるビデオゲームにおいて、１フレーム期間毎に行われる画像生成処理を示すフローチャートである。
【図４】図３の仮想カメラ制御処理を詳細に示すフローチャートである。
【図５】本発明の実施の形態にかかるビデオゲームにおけるカメラコリジョンの設定と仮想カメラの視点位置の移動の具体例を模式的に示す図である。
【図６】本発明の実施の形態にかかるビデオゲームにおけるカメラコリジョンの設定と仮想カメラの視点位置の移動の具体例を模式的に示す図である。
【図７】従来例にかかるビデオゲームにおける仮想カメラの視点位置の移動の対比例を模式的に示す図である。
【図８】仮想カメラの視点の位置と被写体の位置との間の距離に近距離限界を設けた場合におけるカメラコリジョンの例を示す図である。
【符号の説明】
【０１６５】
１００  ビデオゲーム装置
１０１  ビデオゲーム本体
１０３  制御部
１０５  ＲＡＭ
１０７  ＨＤＤ
１０９  サウンド処理部
１１１  グラフィック処理部
１１２  フレームメモリ
１１３  ＤＶＤ／ＣＤ−ＲＯＭドライブ
１１５  通信インターフェイス
１１７  インターフェイス部
１１９  内部バス
１２１  表示装置
１２２  表示画面
１２５  サウンド出力装置
１３１  記録媒体
１５１  ネットワーク
１６１  入力部
１６２  メモリーカード
【図１】
0004489800.tif 000002
【図２】
0004489800.tif 000003
【図３】
0004489800.tif 000004
【図４】
0004489800.tif 000005
【図５】
0004489800.tif 000006
【図６】
0004489800.tif 000007
【図７】
0004489800.tif 000008
【図８】
0004489800.tif 000009