説明

画像生成装置及び方法、並びにプログラム及び記録媒体

【課題】仮想カメラの視点の位置と被写体の位置との間に障害物が存在してしまうことを避けつつ、仮想カメラの視点の位置を滑らかに移動させる。
【解決手段】仮想カメラの視点201を中心とする半径Rのカメラ周辺領域301と、仮想カメラの視軸203が向く被写体202を中心とする半径rの被写体周辺領域302と、その間の円錐台の領域からなるカメラ被写体間領域303とを、障害物の存在し得ないカメラコリジョン300として設定する。仮想カメラの視点201の位置は、被写体202の移動に追随して移動し、カメラコリジョン300に障害物が存在すると距離Dが基準距離Dよりも短くなる位置に移動されるが、カメラ周辺領域301の半径Rと被写体周辺領域302の半径rは、仮想カメラの視点201の位置と被写体202の間の距離Dが基準距離Dよりも短くなると、基準距離Dにおける半径R、rの標準値R、rよりも小さくなる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、透視変換により画像を生成する画像生成装置等に関し、障害物を回避するための仮想カメラの視点の移動に関する。
【背景技術】
【0002】
3次元ビデオゲームにおいて、プレイヤの操作により仮想3次元空間を移動するプレイヤキャラクタを被写体として透視変換を行った画像をゲーム画面として表示しているものがある。ここで、仮想カメラの視点の位置と被写体となるプレイヤキャラクタの位置との間に、地形や建物などの障害物となるオブジェクト(以下、単に障害物)が入り込んでしまうと、プレイヤがゲーム画面においてプレイヤキャラクタを視認できなくなってしまい、ゲームの進行に支障が生じてしまう場合がある。
【0003】
このように仮想カメラの視点の位置と被写体となるプレイヤキャラクタの位置との間に障害物が入り込んでしまってもゲームの進行に支障を生じさせないため、障害物を表示しないといった手法や障害物をワイヤーフレームで表示するといった手法が考えられてきた。さらに、ゲームの雰囲気を損ねずに被写体となるプレイヤキャラクタをゲーム画面に表示させるため、障害物に対して透過処理を施すという手法も考えられている(例えば、特許文献1参照)。
【0004】
【特許文献1】特許3141737号公報(段落0007、0061、0071等)
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1の手法では、仮想カメラの視点の位置と被写体との間に障害物が存在するときに、該障害物の後面にある本来は見えない筈であるオブジェクトが透過表示されてしまう。すると、プレイヤが常に被写体を視認することができるのでゲームの進行のためには便利ではあっても、プレイヤが本来は見えないはずの被写体が見えてしまうことでゲームの画面に違和感を感じてしまう場合がある。
【0006】
これに対して、従来の多くの3次元ビデオゲームにおいて、仮想カメラの視点の位置と被写体の位置との間に障害物が入り込んでしまった場合、被写体の位置との間に障害物が入り込まなくなる位置まで仮想カメラの視点の位置を移動させる手法も採用されていた。障害物を回避するための仮想カメラの視点の位置の移動先としては、極座標上の上方向の位置や、障害物よりも被写体に近い位置とするのが一般的であった。
【0007】
しかしながら、ゲームで適用される仮想3次元空間にはプレイヤキャラクタよりも高さのある壁などのオブジェクトも多く、極座標上の上方向の位置に仮想カメラの視点の位置を移動する手法では、被写体を見る角度がかなり変わってしまうという問題がある。また、障害物よりも被写体に近い位置に仮想カメラの視点の位置を移動する手法では、特に障害物が被写体の近くにある場合には、仮想カメラの視点の位置の移動量が大きくなりすぎてしまうという問題がある。
【0008】
また、障害物を回避するために仮想カメラの視点の位置を移動させる手法として上記の何れの手法を採用するのにしても、仮想カメラの視点の位置と被写体の位置との間に障害物が存在しない状態から突如として両者間に障害物が存在する状態が生じるので、仮想カメラの視点の位置が瞬間的に全く別の位置に移動してしまうことになっていた。現実の世界で一人のカメラマンが撮影を行っている場合には、このようなカメラの瞬間移動は起こりえないので、ゲーム画面においてプレイヤに違和感を感じさせてしまう虞がある。
【0009】
また、一定の時間を置いて仮想カメラの視点の位置を障害物を回避できる位置に移動させるものとした場合でも、仮想カメラの視点の位置が急速移動させられることが多いので、プレイヤにいわゆるカメラ酔いを生じさせてしまう虞がある。さらに、そもそも現実の世界であれば、とりわけ障害物がカメラマンに近い場合には実際にカメラと被写体との間に障害物が入り込んでしまうまでカメラマンが障害物の存在に気づかない等と言うことはほとんど起こりえず、被写体との間に障害物が入り込んでしまう虞があるならば、前もってそれを回避するようにカメラマンが動くことが普通である。
【0010】
本発明は、仮想カメラの視点の位置と被写体の位置との間に障害物が存在してしまうことを避けつつ、仮想カメラの視点の位置を滑らかに移動させることのできる画像生成装置等を提供することを目的とする。
【課題を解決するための手段】
【0011】
上記目的を達成するため、本発明の第1の観点にかかる画像生成装置は、仮想3次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成する画像生成装置であって、前記仮想3次元空間において前記所定の被写体の位置を移動させる被写体制御手段と、前記仮想カメラの視軸を前記所定の被写体に向けつつ、前記仮想3次元空間において該仮想カメラの視点の位置を、前記所定の被写体の位置の移動に追随して移動させる仮想カメラ制御手段と、前記仮想カメラ制御手段により制御される仮想カメラに従って前記所定の被写体を含む前記仮想3次元空間を仮想スクリーン上に透視変換して、表示装置に表示される2次元画像を生成する透視変換手段と、少なくとも前記仮想カメラの視点の位置を基準として該視点の位置の周囲に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、障害物回避域に設定する障害物回避域設定手段と、前記障害物回避域設定手段により設定された障害物回避域に、障害物が存在するかどうかを判定する障害物判定手段とを備え、前記仮想カメラ制御手段は、前記障害物判定手段により前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を移動させる障害物回避制御手段を含み、前記障害物回避域設定手段は、前記仮想3次元空間における前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて、前記障害物回避域の大きさを変化させる障害物回避域変化手段を含むことを特徴とする。
【0012】
上記画像生成装置では、仮想3次元空間において所定の被写体の位置が移動するが、この所定の被写体を含む仮想3次元空間を仮想カメラにより仮想スクリーン上に透視変換することで、表示装置に表示される2次元画像が生成される。ここで、仮想カメラの視点の位置は、基本的には所定の被写体の位置の移動に追随して移動されるが、被写体の位置に追随した位置では仮想カメラの視点の位置を基準として該視点の位置の周囲に定められるカメラ周辺領域と該カメラ周辺領域から連続して被写体の近傍まで続く領域とを含む障害物回避域に障害物が存在してしまうこととなる場合には、該障害物回避域に障害物が入らない位置まで仮想カメラの視点の位置が移動される。
【0013】
ここで、障害物回避域の大きさは、仮想カメラの視点の位置と所定の被写体の位置との間の距離に応じて変化されるものとなっており、例えば、仮想カメラの視点の位置と被写体との間の距離が短くなると小さくなるものになっている。このため、仮想カメラの視点の位置から比較的離れた位置で障害物回避域に障害物が存在している場合には、仮想カメラの視点の位置を所定の被写体の位置に近づければ障害物回避域の大きさが小さくなり、障害物回避域に障害物が入らなくなる位置として仮想カメラの視点の位置を定めることができる。
【0014】
このため、例えば、仮想カメラの視点の位置と被写体の位置とを結ぶ直線と障害物の間の距離が徐々に短くなっていくような場合に、仮想カメラの視点の位置を被写体の位置に向けて徐々に近づけていくことが可能になる。そして、この直線上に障害物が入り込むときには、その直前までに仮想カメラの視点の位置はかなり被写体の位置の方に移動しているので、障害物の位置よりも被写体の位置からの距離が短い位置まで仮想カメラの視点を移動させるにしても、仮想カメラの視点の位置が急激に移動されてしまうことがない。
【0015】
このように、仮想カメラの視点の位置と所定の被写体の位置との間に障害物が入り込んでしまうのを回避するように仮想カメラの視点の位置を制御するものとしても、該仮想カメラの視点の位置の移動が滑らかに行われるため、表示装置に表示された画像を見ている者に違和感を感じさせてしまったり、カメラ酔いを生じさせてしまったりすることを防ぐことができる。また、障害物に対して透過処理を行う訳でもなく、表示装置に表示された画像において本来見えないものが見えてしまったりするということもないので、表示された画像を見ている者に違和感を感じさせてしまうことがない。
【0016】
なお、前記障害物回避制御手段は、前記障害物回避域に前記障害物が存在するのを回避するために、前記仮想カメラの視点の位置と前記所定の被写体とを結ぶ直線上で該仮想カメラの視点の位置を移動させるものとすることが好ましいが、状況によっては、この直線上以外でも前記仮想カメラの視点の位置を移動させるものとしてもよい。また、前記仮想カメラの視点の位置と前記所定の被写体とを結ぶ直線上で該仮想カメラの視点の位置を移動させる場合に、前記仮想カメラの視点の位置と前記所定の被写体の位置との間の距離に応じて、前記仮想カメラの視界の広さも変化させるものとしてもよい。
【0017】
上記画像生成装置は、前記仮想3次元空間において前記障害物の位置を移動させる障害物移動手段をさらに備えるものとしてもよい。この場合において、前記障害物判定手段は、前記所定の被写体の位置及び前記仮想カメラの視点の位置の移動だけではなく、前記障害物の位置の移動によっても、前記障害物回避域設定手段により設定された障害物回避域に、前記障害物が存在するかどうかを判定するものとすることができる。
【0018】
なお、上記画像生成装置において、前記仮想カメラ制御手段は、前記所定の被写体の位置の移動に追随して前記仮想カメラの視点の位置を移動させる他に、例えば、ユーザの入力装置からの所定の入力に応じて前記仮想カメラの視点の位置を移動させるものとしてもよい。
【0019】
上記画像生成装置において、前記障害物回避域設定手段は、前記カメラ周辺領域と、前記所定の被写体の位置を基準として該被写体の位置の周囲に定められる被写体周辺領域と、該カメラ周辺領域と該被写体周辺領域の間の領域であるカメラ被写体間領域とを、前記障害物回避域に設定するものとすることができる。
【0020】
また、前記障害物回避域設定手段は、前記カメラ周辺領域と、該カメラ周辺領域と前記所定の被写体の間の領域であるカメラ被写体間領域とを、前記障害物回避域に設定するものとすることもできる。
【0021】
前者の場合には、被写体の位置に非常に近い位置で障害物が徐々に近づいて来るような場合にも、仮想カメラの視点の位置を滑らかに移動させながら仮想カメラの視点の位置と被写体の位置との間に障害物が入り込んでしまうのを回避することができるようになる。一方、後者の場合には、カメラ被写体間領域を錘形状とすることができるので、前者の場合よりも少ない処理負荷で障害物回避域に障害物が存在するかどうかを判定するものとすることができる。
【0022】
上記画像生成装置において、前記障害物回避域設定手段は、少なくとも前記仮想カメラの視点の位置を中心とした球に含まれる領域を前記カメラ周辺領域として前記障害物回避域に設定し、前記障害物回避域設定手段は、前記仮想3次元空間における前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて、前記カメラ周辺領域として設定される球の半径を変化させるものとしてもよい。
【0023】
ここで、前記カメラ周辺領域の他に、前記被写体周辺領域と前記カメラ被写体間領域とが前記障害物回避域に設定される場合には、前記障害物回避域設定手段は、前記所定の被写体の位置を中心とした球に含まれる領域を前記被写体周辺領域として前記障害物回避域に設定し、前記障害物回避域設定手段は、前記仮想3次元空間における前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて、前記被写体周辺領域として設定される球の半径も変化させるものとしてもよい。
【0024】
このように、カメラ周辺領域や被写体周辺領域を、仮想カメラの視点の位置や所定の被写体の位置を中心とした球に含まれる領域に設定することで、カメラ周辺領域や被写体周辺領域に障害物が存在するかどうかを、仮想カメラの視点の位置や所定の被写体の位置と障害物の位置との間の距離計算で容易に判断することができる。また、仮想カメラの視点の位置と所定の被写体の位置との間の距離に応じてカメラ周辺領域や被写体周辺領域の大きさを変化させるものとしても、計算が複雑になることはない。
【0025】
なお、前記カメラ周辺領域と前記被写体周辺領域とが何れも球形の領域に設定される場合には、該カメラ周辺領域と該被写体周辺領域の間に含まれる円錐台形状の領域が前記カメラ被写体間領域として前記障害物回避域に設定されるものとしてもよい。もっとも、前記カメラ周辺領域と前記被写体周辺領域とが何れも球形の領域に設定される場合であっても、該カメラ周辺領域と該被写体周辺領域の間に含まれる角錐台形状(円錐台形状を近似したもの)の領域が前記カメラ被写体間領域として前記障害物回避域に設定されるものとしてもよい。
【0026】
一方、前記カメラ周辺領域の他に、前記被写体周辺領域が前記障害物回避域に設定されることなく、前記カメラ被写体間領域が前記障害物回避域に設定され、前記カメラ周辺領域が球形の領域に設定される場合には、該カメラ周辺領域と該被写体周辺領域の間に含まれる円錐形状の領域が前記カメラ被写体間領域として前記障害物回避域に設定されるものとしてもよい。もっとも、前記カメラ周辺領域が球形の領域に設定される場合であっても、該カメラ周辺領域と該被写体周辺領域の間に含まれる角錐形状(円錐形状を近似したもの)の領域が前記カメラ被写体間領域として前記障害物回避域に設定されるものとしてもよい。
【0027】
カメラ周辺領域や被写体周辺領域が球形状の領域となる場合には、カメラ被写体間領域の形状は、本来的には円錐台形状や円錐形状となる。もっとも、このような円錐台形状の領域や円錐形状の領域に障害物が存在するかどうかを判断するのは、球形状の領域に障害物が存在するかどうかを判断する場合ほどの簡単な計算では求められない。カメラ被写体間領域を角錐台形状または角錐形状の領域とすることで、カメラ被写体間領域に障害物が存在するかどうかを判断する際の処理負荷を小さくすることができる。
【0028】
また、前記カメラ周辺領域は、前記仮想カメラの視点の位置を(ほぼ)重心位置とする多面体の領域に設定されるものとすることができ、前記被写体周辺領域も前記障害物回避域に設定される場合には、該被写体周辺領域も、前記所定の被写体の位置を(ほぼ)重心位置とする多面体の領域に設定されるものとすることができる。これらの多面体の面数、或いはカメラ被写体間領域を形成する角錐台または角錐の底面の角数は、前記仮想カメラの位置を滑らかに移動させるという観点では多い方が好ましいが、処理量の観点からは少ない方が好ましいので、本発明の画像生成装置が適用されるコンピュータ装置の処理能力等に応じて適当に選ぶものとすればよい。
【0029】
上記画像生成装置において、前記仮想カメラの視点の位置と前記被写体の位置との間の距離には、所定の限界距離が定められていてもよい。ここで、前記カメラ周辺領域を球状の領域とする場合、前記仮想カメラの視点の位置と前記被写体の位置との間の距離が前記限界距離にあるときには、前記仮想カメラ周辺領域を構成する球の半径を0とすることができる。
【0030】
上記画像生成装置において、前記仮想カメラ制御手段は、前記仮想3次元空間における高さ方向の位置を維持しつつ前記仮想カメラの視点の位置を移動させるものであってもよい。この場合において、前記障害物回避域設定手段は、前記仮想カメラの視点と前記所定の被写体とを結ぶ直線と、該直線と直交する前記仮想3次元空間における高さ方向に平行な直線とがなす平面内において前記障害物回避域を設定するものとすることができる。
【0031】
このように仮想カメラの視点の位置の移動に仮想3次元空間における高さ方向の位置を維持するという制約がある場合に限るものではあるが、この制約下においては障害物回避域を平面内に設定することができる。平面内の領域において障害物が存在するかどうかは、2次元計算で行うことができるので、障害物回避域に障害物が存在するかどうかの判断をより簡単な計算で行うことができるものとなる。
【0032】
上記画像生成装置において、前記仮想3次元空間は、ビデオゲームのゲーム空間であってもよい。すなわち、上記画像生成装置は、ビデオゲームの画像を生成するものとすることができる。この場合において、前記障害物回避域変化手段は、さらに前記ビデオゲームの進行状況に応じて、前記障害物回避域の大きさを変化させるものとすることができる。
【0033】
例えば、前記障害物回避域変化手段は、前記障害物となり得るオブジェクトが多数存在する場面ほど、前記障害物回避域の大きさを小さくするように該障害物回避域の大きさを変化させるものとすることができる。
【0034】
このようにゲームの進行状況に応じても障害物回避域の大きさを変化させるものとすることで、例えば、ゲームの場面によって仮想カメラの視点の位置を滑らかに移動させたり、比較的大きく移動させたりすることを使い分けることができ、ビデオゲームの画像としてゲームの進行状況に応じた臨場感のある画像を生成することができるものとなる。また、障害物となり得るオブジェクトが多数存在する場面で障害物回避域の大きさを小さくすることで、このような場面でも障害物回避域に障害物が入るのを防ぐために仮想カメラの視点の位置を移動する制御を必要以上に行わなくて済むようになる。
【0035】
なお、前記仮想カメラの位置と前記被写体の位置との間の距離には基準値が設けられており、前記仮想カメラの位置と前記被写体の位置との間の距離が該基準値の状態にあるときの前記障害物回避域の大きさを標準値として予め設定しておいてもよい。この場合において、前記障害物回避域変換手段は、前記ビデオゲームの進行状況に応じて、前記障害物回避域の標準値を変化させるものとすることができる。
【0036】
上記目的を達成するため、本発明の第2の観点にかかる画像生成方法は、仮想3次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成する画像生成方法であって、前記仮想3次元空間において前記所定の被写体の位置を移動させ、該被写体の位置を記憶装置に記憶させるステップと、前記仮想カメラの視軸を前記所定の被写体に向けつつ、前記仮想3次元空間において該仮想カメラの視点の位置を前記所定の被写体の位置の移動に追随して移動させ、該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、少なくとも前記仮想カメラの視点の位置を基準として該視点の位置の周囲に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて大きさの変化する障害物回避域に設定し、該障害物回避域に関する情報を前記記憶装置に記憶させるステップと、前記記憶装置に情報の記憶された障害物回避域に、障害物が存在するかどうかを、該障害物の位置について前記記憶装置に記憶された情報に従って判定するステップと、前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を再度移動させ、該再度の移動の後の該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、前記記憶装置に情報の記憶された仮想カメラの視軸及び視点の位置に関する情報に従って前記所定の被写体を含む前記仮想3次元空間を仮想スクリーン上に透視変換して、表示装置に表示される2次元画像を生成し、前記記憶装置に書き込むステップとを含むことを特徴とする。
【0037】
上記目的を達成するため、本発明の第3の観点にかかるプログラムは、仮想3次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成するための処理をコンピュータ装置に実行させるプログラムであって、前記仮想3次元空間において前記所定の被写体の位置を移動させ、該被写体の位置を前記コンピュータ装置が備える記憶装置に記憶させるステップと、前記仮想カメラの視軸を前記所定の被写体に向けつつ、前記仮想3次元空間において該仮想カメラの視点の位置を前記所定の被写体の位置の移動に追随して移動させ、該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、少なくとも前記仮想カメラの視点の位置を基準として該視点の位置の周囲に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて大きさの変化する障害物回避域に設定し、該障害物回避域に関する情報を前記記憶装置に記憶させるステップと、前記記憶装置に情報の記憶された障害物回避域に、障害物が存在するかどうかを、該障害物の位置について前記記憶装置に記憶された情報に従って判定するステップと、前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を再度移動させ、該再度の移動の後の該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、前記記憶装置に情報の記憶された仮想カメラの視軸及び視点の位置に関する情報に従って前記所定の被写体を含む前記仮想3次元空間を仮想スクリーン上に透視変換して、表示装置に表示される2次元画像を生成し、前記記憶装置に書き込むステップとを前記コンピュータ装置に実行させることを特徴とする。
【0038】
上記第3の観点にかかるプログラムは、コンピュータ読み取り可能な記録媒体に記録して提供することができる。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置に着脱可能に構成され、上記コンピュータ装置とは別個に提供される記録媒体としてもよい。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置内に設けられ、上記コンピュータ装置と共に提供される固定ディスク装置などの記録媒体としてもよい。上記第3の観点にかかるプログラムは、ネットワーク上に存在するサーバ装置から、そのデータ信号を搬送波に重畳して、ネットワークを通じて上記コンピュータ装置に配信することもできる。
【発明を実施するための最良の形態】
【0039】
以下、添付図面を参照して、本発明の実施の形態について説明する。ここでは、本発明をビデオゲームにおける画像の生成に適用した場合を例として説明する。
【0040】
図1は、この実施の形態に適用されるビデオゲーム装置の構成を示すブロック図である。図示するように、ビデオゲーム装置100は、装置本体101を中心として構築される。この装置本体101は、その内部バス119に接続された制御部103、RAM(Random Access Memory)105、ハードディスク・ドライブ(HDD)107、サウンド処理部109、グラフィック処理部111、DVD/CD−ROMドライブ113、通信インターフェイス115、及びインターフェイス部117を含む。
【0041】
この装置本体101のサウンド処理部109は、スピーカーであるサウンド出力装置125に、グラフィック処理部111は、表示画面122を有する表示装置121に接続されている。DVD/CD−ROMドライブ113には、記録媒体(本実施の形態では、DVD−ROMまたはCD−ROM)131を装着し得る。通信インターフェイス115は、ネットワーク151に接続される。インターフェイス部117には、入力部(コントローラ)161とメモリーカード162とが接続されている。
【0042】
制御部103は、CPU(Central Processing Unit)やROM(Read Only Memory)などを含み、HDD107や記録媒体131上に格納されたプログラムを実行し、装置本体101の制御を行う。制御部103は、内部タイマを備えている。RAM105は、制御部103のワークエリアであり、後述するプレイヤキャラクタの位置、仮想カメラの視点の位置や視軸の方向、カメラコリジョンの大きさ、透視変換された各ポリゴンの頂点の座標などに関する情報は、RAM105に一時記憶される。HDD107は、プログラムやデータを保存するための記憶領域である。サウンド処理部109は、制御部103により実行されているプログラムがサウンド出力を行うよう指示している場合に、その指示を解釈して、サウンド出力装置125にサウンド信号を出力する。
【0043】
グラフィック処理部111は、制御部103から出力される描画命令に従って、フレームメモリ112(図では、グラフィック処理部111の外側に描かれているが、グラフィック処理部111を構成するチップに含まれるRAM内に設けられる)に画像データを展開し、表示装置121の表示画面122上に画像を表示するビデオ信号を出力する。グラフィック処理部111から出力されるビデオ信号に含まれる画像の1フレーム時間は、例えば60分の1秒である。フレームメモリ112は、2セット設けられており、データの書き込み用と読み出し用とがフレーム期間毎に切り替えられる。
【0044】
グラフィック処理部111は、仮想3次元空間に存在するオブジェクト(プレイヤキャラクタ、ノンプレイヤキャラクタ、及びキャラクタ以外のオブジェクト)を仮想カメラにより透視変換した2次元画像の画像データを生成して、フレームメモリ112に書き込む。仮想カメラの視軸の方向は、常にプレイヤキャラクタ(より具体的には、プレイヤキャラクタのほぼ重心位置に設定された基準点)を向くようになっている。すなわち、プレイヤキャラクタは、常に透視変換の際の被写体となる。
【0045】
DVD/CD−ROMドライブ113は、記録媒体131に対しプログラム及びデータの読み出しを行う。通信インターフェイス115は、ネットワーク151に接続され、他のコンピュータとの通信を行う。入力部161は、方向キー及び複数の操作ボタンを備えている。仮想3次元空間におけるプレイヤキャラクタの位置は、入力部161の方向キーから入力される指示によって移動させられる。
【0046】
また、入力部161の操作ボタンには、プレイヤキャラクタの動作等を指定するためのボタンの他に、L1、R1、L2、R2の4つのボタン(以下、これらをまとめてLRボタンと呼ぶ場合がある)が設けられている。仮想カメラの視点の位置は、方向キーから入力される指示に応じてプレイヤキャラクタに追随して移動する他、L1ボタンまたはR1ボタンから入力される指示に応じてプレイヤキャラクタの位置を中心に左回りまたは右回りで周回移動させられ、L2ボタンまたはR2ボタンから入力される指示に応じてプレイヤキャラクタの位置を原点とする極座標上で上方向または下方向に移動させられる。
【0047】
もっとも、仮想カメラの視点の位置の移動は、後述するカメラコリジョンに障害物(この実施の形態では、プレイヤキャラクタ及びノンプレイヤキャラクタ以外のオブジェクトが障害物となり得る)が存在する場合には、カメラコリジョン内に障害物が入らないように制御されるものとなる。カメラコリジョン及び障害物の回避の詳細については、後述する。
【0048】
インターフェイス部117は、入力部161からの入力データをRAM105に出力し、制御部103がそれを解釈して演算処理を実施する。インターフェイス部117は、また、制御部103からの指示に基づいて、RAM105に記憶されているゲームの進行状況を示すデータをメモリーカード162に保存させ、メモリーカード162に保存されている中断時のゲームのデータを読み出して、RAM105に転送する。
【0049】
ビデオゲーム装置100でゲームを行うためのプログラム及びデータは、最初例えば記録媒体131に記憶されている。記録媒体131に記憶されているデータとしては、ゲーム空間(仮想3次元空間)に存在するオブジェクトを構成するためのグラフィックデータを含んでいる。記録媒体131に記憶されたプログラム及びデータは、実行時にDVD/CD−ROMドライブ113により読み出されて、RAM105にロードされる。制御部103は、RAM105にロードされたプログラム及びデータを処理し、描画命令をグラフィック処理部111に出力し、サウンド出力の指示をサウンド処理部109に出力する。制御部103が処理を行っている間の中間的なデータは、RAM105に記憶される。
【0050】
この実施の形態にかかるビデオゲームでは、ゲーム空間となる仮想3次元空間に複数の3次元オブジェクトが存在し、これらのオブジェクトを仮想カメラにより透視変換した画像がゲームの画像として表示装置121の表示画面122に表示される。仮想3次元空間に存在するオブジェクトとしては、プレイヤの入力部161からの入力により移動させられるプレイヤキャラクタ、プレイヤキャラクタ以外のキャラクタであるノンプレイヤキャラクタ(制御部103により動作させられる)、キャラクタ以外の地形、建物などの仮想3次元空間内における位置の移動しないオブジェクトが含まれている。
【0051】
プレイヤキャラクタは、透視変換される際に、仮想カメラの視軸の位置が常に向けられる被写体となっている。ノンプレイヤキャラクタは、透視変換の際に障害物とされないオブジェクトであり、後述するカメラコリジョンの範囲内にノンプレイヤキャラクタが存在していても、これによって仮想カメラの視点の位置が変更されることはない。キャラクタ以外のオブジェクトは、全て障害物となるオブジェクトであり、後述するカメラコリジョンの範囲内にキャラクタ以外のオブジェクト(障害物)が存在すれば、カメラコリジョンに障害物が存在しなくなる位置まで仮想カメラの視点の位置が移動させられる。
【0052】
次に、この実施の形態にかかるビデオゲームにおいて、障害物を回避するように仮想カメラの視点の位置を制御するために設定されるカメラコリジョンについて説明する。図2は、この実施の形態にかかるビデオゲームで設定されるカメラコリジョンの例を示す図である。図示するように、カメラコリジョン300は、仮想カメラの視点201を中心とした半径Rの球に設定されるカメラ周辺領域301と、被写体(プレイヤキャラクタ)202を中心とした半径rの球に設定される被写体周辺領域302と、カメラ周辺領域301と被写体周辺領域302の間の円錐台形状の領域に設定されるカメラ被写体間領域303とからなる。
【0053】
カメラ周辺領域301の半径Rと、被写体周辺領域302の半径rとは、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じて変化させられる。すなわち、仮想カメラの視点201と被写体202の位置との間の距離Dが所定の基準値である距離(基準距離)Dとなっているときにおける半径R、rの標準値をそれぞれR、rとした場合、カメラ周辺領域301の半径R、被写体周辺領域302の半径rは、それぞれ数式1に示すように求められる。
【0054】
(数1)
R=R×(D/Dα
r=r×(D/Dβ
ここで、α、βは、所定の定数であって、α=βとしてもよい。
【0055】
この数式1から分かるように、カメラコリジョン300の大きさを定めるカメラ周辺領域301の半径R、被写体周辺領域302の半径rは、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが基準距離Dよりも小さくなると標準値R、rよりも小さくなる。仮想カメラの視点201の位置は、通常は被写体202の位置との間の距離Dが基準距離Dとなる位置に設定されるが、カメラコリジョン300に障害物が存在すると、より被写体202の位置に近い位置に設定される。
【0056】
仮想カメラの視点201の位置は、カメラコリジョン300に障害物が存在していなければ、被写体202となるプレイヤキャラクタの移動またはLRボタンの入力に応じて、被写体202との間の距離を基準距離Dに保ちながら移動させられる。すなわち、カメラコリジョン300に障害物が存在していなければ、プレイヤキャラクタ(被写体202)が移動すると、プレイヤキャラクタと平行に同距離だけ、視軸203の方向を変化させずに仮想カメラの視点201の位置が移動する。また、LRボタンからの指示が入力されると、被写体202となるプレイヤキャラクタとの距離を距離Dに保ちながら、被写体202を中心に所定角度だけ回転移動し、これに伴って、仮想カメラの視軸203の方向が変化させられる。
【0057】
仮想カメラの視点201の位置と被写体202の位置との間の距離Dが基準距離Dとなっている状態から被写体202の移動またはLRボタンからの入力に応じて次に仮想カメラの視点201が移動される位置(次候補位置)において、カメラコリジョン300の範囲内に障害物が存在することとなる場合には、仮想カメラの視点201の位置は、次候補位置よりもさらに被写体202に向けて所定距離だけ移動させられる(視軸203の方向に変化なし)。
【0058】
仮想カメラの視点201の位置が被写体202に向けて移動される、すなわち距離Dが小さくなると、カメラ周辺領域301の半径Rと被写体周辺領域302の半径rが小さくなり、カメラコリジョン300の大きさが縮小されるが、縮小されたカメラコリジョン300に障害物が存在しなければ、仮想カメラの視点201の位置が決められる。縮小されたカメラコリジョン300でも障害物が存在するようであれば、カメラコリジョン300内に障害物が存在しなくなる位置まで、仮想カメラの視点201の位置は被写体202の方向に近づけられる(視軸203の方向に変化なし)。
【0059】
また、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが基準距離Dよりも短くなっている状態から被写体202の移動またはLRボタンからの入力に応じて次に仮想カメラの視点201が移動される位置(次候補位置)において、カメラコリジョン300の範囲内に障害物が存在しないこととなる場合には、仮想カメラの視点201の位置は、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが基準距離Dより小さいことを条件として、次候補位置よりも被写体202から所定距離だけ遠くに移動される(視軸203の方向に変化なし)。
【0060】
仮想カメラの視点201の位置が被写体202から遠くに移動される、すなわち距離Dが大きくなると、カメラ周辺領域301の半径Rと被写体周辺領域302の半径rが大きくなり、カメラコリジョン300の大きさが拡大されるが、拡大されたカメラコリジョン300に障害物が存在すれば、仮想カメラの視点201の位置が再び被写体202に向けて所定距離だけ移動させられ、元の次候補位置まで戻される(視軸203の方向に変化なし)。
【0061】
また、仮想カメラの視点201の位置が被写体202から遠くに移動され、これによって大きさが拡大されたカメラコリジョン300においても障害物が存在しなければ、距離Dが基準距離Dとなるまでか、カメラコリジョン300に障害物の存在する状態での最大距離となるまで、想カメラ201の位置がさらに被写体202から遠くに所定距離だけ移動させられる(視軸203の方向に変化なし)。
【0062】
このように仮想カメラの視点201の位置と被写体202の間の距離Dに応じて大きさの変化するカメラコリジョン300に障害物が存在しなくなるように仮想カメラの視点201の移動を制御することによって、仮想カメラの視点201の位置が障害物の存在によって急激に変化させられることがなく、滑らかに移動されることとなる。なお、カメラコリジョン300の設定と仮想カメラの視点201の位置の移動の関係については、詳しく後述する。
【0063】
なお、カメラコリジョン300に障害物が存在するかどうかは、カメラ周辺領域301、被写体周辺領域302、及びカメラ被写体間領域303のそれぞれについて判断され、カメラ周辺領域301、被写体周辺領域302、及びカメラ被写体間領域303の何れかに障害物が存在すると判断されれば、カメラコリジョン300に障害物が存在すると判断されることとなる。
【0064】
ここで、カメラ周辺領域301に障害物が存在するかどうかは、仮想カメラの視点201の位置と障害物となり得る各オブジェクトの間の距離が半径R以下であるかどうかによって判断すればよい。同様に、被写体周辺領域302に障害物が存在するかどうかは、被写体202の位置と障害物となり得る各オブジェクトの間の距離が半径r以下であるかどうかによって判断すればよい。
【0065】
カメラ被写体間領域303については、例えば、仮想カメラの視点201の位置、被写体202の位置、並びにカメラ周辺領域301及び被写体周辺領域302の半径R、rによって定義される円錐(カメラ被写体間領域303を構成する円錐台の一部となる)に障害物が存在するかどうかを該円錐の頂点からの角度の計算によって判断し、さらに当該障害物の存在するのが該円錐の頂点からの距離の計算によってカメラ被写体領域303を構成する円錐台に含まれない部分であるかを判断すればよい。
【0066】
上記のようにして仮想カメラの視点201の位置及び視軸203の方向が定められると、透視変換の処理によって、視点201及び視軸203を基準として所定の角度の範囲に設定される視界並びに前方クリップ面及び後方クリップ面により形成されるクリッピング範囲に含まれる各オブジェクトを仮想スクリーン上に投影した画像が生成される。
【0067】
より具体的に説明すると、制御部103は、仮想カメラの視点201の位置及び視軸203の方向に応じたクリッピング範囲に含まれる各オブジェクトを構成する各ポリゴンの各頂点のワールド座標系(仮想3次元空間の座標系)を、透視変換の処理によって視点座標系の座標に変換し、さらにスクリーン座標系(仮想スクリーン上における座標系)の座標に変換する。そして、スクリーン座標系に変換した各ポリゴンの情報とともにグラフィック処理部111に描画命令を出力する。
【0068】
描画命令を受け取ったグラフィック処理部111は、制御部103から渡された各ポリゴンの情報に従って、隠面消去の処理を行いながらクリッピング範囲に含まれる各オブジェクトを仮想スクリーンに投影した画像の画像データをフレームメモリ112(当該フレーム期間において書き込み用)に書き込んでいく。グラフィック処理部111は、また、前のフレーム期間でフレームメモリ112に書き込まれた画像データを読み出し、ビデオ信号として表示装置121に出力するものとなる。
【0069】
以下、この実施の形態にかかるビデオゲームにおける処理について説明する。この実施の形態にかかるビデオゲームは、プレイヤが入力部161の操作によりプレイヤキャラクタをゲーム空間となる仮想3次元空間内で移動させることでゲームが進行される。仮想カメラの視点201の位置は、被写体202となるプレイヤキャラクタの移動に追随して移動する。また、プレイヤは、ゲームを進行させているときにおいて、入力部161のLRボタンの操作により仮想カメラの視点201の位置を移動させることができる。なお、ゲーム空間には様々なイベントが設定されており、プレイヤキャラクタの移動した位置に応じてイベントが発生するが、イベントの発生については本発明とは関係がないため、詳細な説明を省略する。
【0070】
この実施の形態にかかるビデオゲームにおいてゲームが進行していく様子は、1フレーム期間毎にゲームの進行状況に応じて生成されるゲーム画面としてプレイヤに示される。図3は、この実施の形態にかかるビデオゲームにおいて、ゲーム画面として表示装置121の表示画面122に表示される画像の画像データを生成するために、制御部103が1フレーム期間毎に行う画像生成処理を示すフローチャートである。
【0071】
1フレームの期間が開始されると、制御部103は、前のフレーム期間における透視変換の処理(ステップS110:後述)でスクリーン座標系の座標に変換されたクリッピング範囲内に含まれる各オブジェクトを構成する各ポリゴンの頂点に関する座標をグラフィック処理部111に渡すとともに、グラフィック処理部111に描画命令を出力する(ステップS101)。
【0072】
グラフィック処理部111は、描画命令が出力されると、制御部103から受け取った各ポリゴンの情報に従ってフレームメモリ112(今回のフレーム期間において書き込み用)に画像データを書き込む。また、グラフィック処理部111は、前のフレーム期間でフレームメモリ112(今回のフレーム期間において読み出し用)からの画像データの読み出しを開始し、1フレーム分のビデオ信号の出力を開始させる。
【0073】
次に、制御部103は、ゲームの進行状況に応じて仮想3次元空間に存在する各ノンプレイヤキャラクタの位置を移動させる(ステップS102)。ここでは、全てのノンプレイヤキャラクタの位置を移動させなければならない訳ではなく、ゲームの進行状況によっては、位置の移動されるノンプレイヤキャラクタが1つもなくてもよい。なお、ノンプレイヤキャラクタの位置の移動については、従来よりこの種のビデオゲームにおいて行われていたのと同じ処理を適用すればよい。
【0074】
次に、制御部103は、入力部161の方向キーからの指示が入力されているかどうかにより、被写体202となるプレイヤキャラクタを仮想3次元空間で移動させるための指示が入力されているかどうかを判定する(ステップS103)。プレイヤキャラクタを移動させるための指示が入力されている場合には、制御部103は、仮想カメラの視軸203の向き及び該入力された指示に応じてプレイヤキャラクタの仮想3次元空間における位置を移動させ(ステップS104)、また、プレイヤキャラクタの移動に追随して仮想カメラの視点201の位置を移動させる(ステップS105)。そして、ステップS109の処理に進む。
【0075】
プレイヤキャラクタを移動させるための指示が入力されていない場合には、制御部103は、入力部161のLRキーからの指示が入力されているかどうかにより、仮想カメラの視点201の位置を移動させるための指示が入力されているかどうかを判定する(ステップS106)。仮想カメラの視点201の位置を移動させるための指示が入力されていなければ、仮想カメラの視点201の位置及び被写体202の位置は前回のフレーム期間と同じままであり、この位置でカメラコリジョン300内に障害物が存在することはないので、そのままステップS110の処理に進む。
【0076】
仮想カメラの視点201の位置を移動させるための指示が入力されていれば、制御部103は、該入力された指示に応じて仮想カメラの視点201の位置を移動させ(ステップS107)、また、移動した視点201の位置においてプレイヤキャラクタ(被写体202)を向くように仮想カメラの視軸203の向きを変更する(ステップS108)。そして、ステップS109の処理に進む。
【0077】
ステップS109では、制御部103は、詳細を後述する仮想カメラ制御処理を行って、仮想カメラの視点201の位置をカメラコリジョン300内に障害物となるオブジェクトが存在しない位置に制御する。仮想カメラ制御処理によって仮想カメラの視点201の位置が最終的に設定されると、ステップS110の処理に進む。
【0078】
ステップS110では、制御部103は、ステップS109までに定められた今回のフレーム期間における仮想カメラの視点201の位置及び視軸203の方向に応じて定められるクリッピング範囲に存在する各オブジェクトを構成する各ポリゴンの頂点の座標を、ワールド座標系の座標からスクリーン座標系の座標に変換する透視変換の処理を行う。そして、透視変換の処理が終了すると、今回のフレーム期間における画像生成処理が終了する。また、次のフレーム期間が開始すると、新たに画像生成処理が開始されるものとなる。
【0079】
図4は、ステップS109の仮想カメラ制御処理を詳細に示すフローチャートである。仮想カメラ制御処理においては、制御部103は、現時点における仮想カメラの視点201の位置及び被写体202(プレイヤキャラクタ)の位置との間の距離Dを算出する(ステップS201)。制御部103は、算出した距離Dに従って前述した数式1の演算を行い、カメラ周辺領域301の半径Rと被写体周辺領域302の半径rとを算出する(ステップS202)。
【0080】
次に、制御部103は、現時点における仮想カメラの視点201及び被写体202の位置、並びに算出した半径R、rに応じて定められるカメラコリジョン300の範囲内に、プレイヤキャラクタ及びノンプレイヤキャラクタ以外の障害物となるオブジェクトが存在するかどうかを判定する(ステップS203)。ステップS203においてカメラコリジョン300の範囲内に障害物となるオブジェクトが存在する場合には、制御部103は、仮想カメラの視点201の位置を被写体202の位置に向けて所定距離だけ近づける(ステップS204)。そして、ステップS201の処理に戻る。
【0081】
ステップS203においてカメラコリジョンの範囲内に障害物となるオブジェクトが存在しない場合には、制御部103は、ステップS201で直近に算出した距離Dが基準距離Dとなっているかどうかを判定する(ステップS205)。距離Dが基準距離Dとなっている場合には、現時点で求められている視点201の位置が今回のフレーム期間における仮想カメラの視点201の位置となるので、そのまま仮想カメラ制御処理を終了して、図3のフローチャートに復帰する。
【0082】
算出した距離Dが基準距離Dとなっていない場合には、制御部103は、仮想カメラの視点201の位置を被写体202の位置から所定距離だけ遠ざける(ステップS206)。制御部103は、ここでまた現時点における仮想カメラの視点201の位置及び被写体202(プレイヤキャラクタ)の位置との間の距離Dを算出する(ステップS207)。制御部103は、算出した距離Dに従って前述した数式1の演算を行い、カメラ周辺領域301の半径Rと被写体周辺領域302の半径rとを算出する(ステップS208)。
【0083】
次に、制御部103は、現時点における仮想カメラの視点201及び被写体202の位置、並びに算出した半径R、rに応じて定められるカメラコリジョン300の範囲内に、プレイヤキャラクタ及びノンプレイヤキャラクタ以外の障害物となるオブジェクトが存在するかどうかを判定する(ステップS209)。
【0084】
ステップS209においてカメラコリジョン300の範囲内に障害物となるオブジェクトが存在する場合には、制御部103は、仮想カメラの視点201の位置を被写体202の位置に向けて所定距離だけ近づける(ステップS210)。これにより、現時点で求められている視点201の位置がカメラコリジョン300の範囲内に障害物の存在しない条件で距離Dが基準距離Dに最も近くなる位置となるので、これで仮想カメラ制御処理を終了して、図3のフローチャートに復帰する。
【0085】
ステップS209においてカメラコリジョン300の範囲内に障害物となるオブジェクトが存在しない場合には、制御部103は、ステップS201で直近に算出した距離Dが基準距離Dとなっているかどうかを判定する(ステップS211)。距離Dが基準距離Dとなっている場合には、現時点で求められている視点201の位置が今回のフレーム期間における仮想カメラの視点201の位置となるので、そのまま仮想カメラ制御処理を終了して、図3のフローチャートに復帰する。
【0086】
ステップS211で距離Dが基準距離Dとなっていない場合には、少なくとも現時点における仮想カメラの視点201の位置ではカメラコリジョン300の範囲内に障害物となるオブジェクトは存在しないが、距離Dがより基準距離Dに近くなる位置まで仮想カメラの視点201の位置を移動してもカメラコリジョン300の範囲内に障害物となるオブジェクトが存在していない可能性もある。従って、この場合、制御部103は、ステップS206の処理に戻って、さらに処理を続けるものとなる。
【0087】
以下、この実施の形態にかかるビデオゲームにおいて、障害物の存在する領域における被写体202の移動に応じた仮想カメラの視点201の移動について具体的に説明する。図5(a)〜(h)、図6(a)〜(g)は、この実施の形態にかかるビデオゲームにおけるカメラコリジョン300の設定と、透視変換の際に障害物を避けるようにするための仮想カメラの視点201の位置の移動の具体例を模式的に示す図である。
【0088】
まず、図5(a)に示すように、仮想カメラの視点201の位置と被写体(プレイヤキャラクタ)202の位置との間の距離がD(=D)にあり、ここで設定されるカメラ周辺領域301、被写体周辺領域302及びカメラ被写体間領域303で構成されるカメラコリジョン300の範囲内には、障害物400が存在していないものとする。次に、図5(b)に示すように、被写体202の位置が移動し、これに追随して仮想カメラの視点201の位置を移動すると、障害物400がカメラコリジョン300の範囲内に入ってしまうことになるものとする。
【0089】
この場合には、図5(c)に示すように、仮想カメラの視点201の位置が被写体202の位置に近づけられる。こうして仮想カメラの視点201の位置及び被写体(プレイヤキャラクタ)202の位置との間の距離がD(<D)となると、カメラコリジョン300の大きさが小さくなり、この大きさでのカメラコリジョン300の範囲内には障害物400が入らなくなるものとなる。もっとも、図5(d)に示すように、被写体202の位置がさらに移動し、これに追随して仮想カメラの視点201の位置を移動すると、障害物400がカメラコリジョン300の範囲内に入ってしまうことになるものとする。
【0090】
この場合には、図5(e)に示すように、仮想カメラの視点201の位置が被写体202の位置にさらに近づけられる。こうして仮想カメラの視点201の位置及び被写体202の位置との間の距離がD(<D)となると、カメラコリジョン300の大きさがさらに小さくなり、この大きさでのカメラコリジョン300の範囲内には障害物400が入らなくなるものとなる。もっとも、図5(f)に示すように、被写体202の位置がさらに移動し、これに追随して仮想カメラの視点201の位置を移動すると、障害物400がカメラコリジョン300の範囲内に入ってしまうことになるものとする。
【0091】
この場合には、図5(g)に示すように、仮想カメラの視点201の位置が被写体202の位置にさらに近づけられる。こうして仮想カメラの視点201の位置及び被写体202の位置との間の距離がD(<D)となると、カメラコリジョン300の大きさがさらに小さくなり、この大きさでのカメラコリジョン300の範囲内には障害物400が入らなくなるものとなる。もっとも、図5(h)に示すように、被写体202の位置がさらに移動し、これに追随して仮想カメラの視点201の位置を移動すると、障害物400がカメラコリジョン300の範囲内に入ってしまうことになるものとする。
【0092】
この場合には、図6(a)に示すように、仮想カメラの視点201の位置が被写体202の位置にさらに近づけられる。こうして仮想カメラの視点201の位置及び被写体202の位置との間の距離がD(<D)となると、カメラコリジョン300の大きさがさらに小さくなり、この大きさでのカメラコリジョン300の範囲内には障害物400が入らなくなるものとなる。もっとも、図6(b)に示すように、被写体202の位置がさらに移動し、これに追随して仮想カメラの視点201の位置を移動すると、障害物400がカメラコリジョン300の範囲内に入ってしまうことになるものとする。
【0093】
この場合には、図6(c)に示すように、仮想カメラの視点201の位置が被写体202の位置にさらに近づけられる。こうして仮想カメラの視点201の位置及び被写体202の位置との間の距離がD(<D)となると、カメラコリジョン300の大きさがさらに小さくなり、この大きさでのカメラコリジョン300の範囲内には障害物400が入らなくなるものとなる。もっとも、図6(d)に示すように、被写体202の位置がさらに移動し、これに追随して仮想カメラの視点201の位置を移動すると、障害物400がカメラコリジョン300の範囲内に入ってしまうことになるものとする。
【0094】
この場合には、図6(e)に示すように、仮想カメラの視点201の位置が被写体202の位置にさらに近づけられる。こうして仮想カメラの視点201の位置及び被写体202の位置との間の距離がD(<D)となると、カメラコリジョン300の大きさがさらに小さくなり、この大きさでのカメラコリジョン300の範囲内には障害物400が入らなくなるものとなる。もっとも、図6(f)に示すように、被写体202の位置がさらに移動し、これに追随して仮想カメラの視点201の位置を移動すると、障害物400がカメラコリジョン300の範囲内に入ってしまうことになるものとする。
【0095】
この場合には、図6(g)に示すように、仮想カメラの視点201の位置が被写体202の位置にさらに近づけられる。こうして仮想カメラの視点201の位置及び被写体202の位置との間の距離がD(<D)となると、カメラコリジョン300の大きさがさらに小さくなり、この大きさでのカメラコリジョン300の範囲内には障害物400が入らなくなるものとなる。
【0096】
このように、この実施の形態にかかるビデオゲームでは、図5(a)、図5(c)、図5(e)、図5(g)、図6(a)、図6(c)、図6(e)、図6(g)に示す位置で仮想カメラの視点201の位置が移動していく場合、これらの図に矢印で示すように、仮想カメラの視点201の移動は、滑らかに行われていることが分かる。特に、図6(a)、図6(c)、図6(e)、図6(g)に示すように、仮想カメラの視点201の位置よりも後側(被写体202よりも遠い側)に障害物がある場合も、カメラ周辺領域301が仮想カメラの視点201の位置より後側の領域までを含んでいるために、仮想カメラの視点201の移動が、滑らかに行われていることが分かる。
【0097】
なお、図5、図6においては、被写体202となるプレイヤキャラクタの移動に追随して仮想カメラの視点201の位置が移動し、これにより仮想カメラの視点201の位置と被写体202の位置とを結ぶ直線に障害物400が徐々に近づいてくる場合を説明したが、入力部161のLRボタンから入力された指示により仮想カメラの視点201の位置が移動し、これにより仮想カメラの視点201の位置と被写体202の位置とを結ぶ直線に障害物400が徐々に近づいてくる場合にも、仮想カメラの視点201の位置が滑らかに移動されるものとなる。
【0098】
また、被写体202となるプレイヤキャラクタの移動または入力部161のLRボタンからの指示の入力に従って仮想カメラの視点201の位置と被写体202の位置とを結ぶ直線から障害物400が徐々に遠ざかっていく場合には、図5(a)、図5(c)、図5(e)、図5(g)、図6(a)、図6(c)、図6(e)、図6(g)の順番とは逆の関係で仮想カメラの視点201の位置が移動していくことになるので、仮想カメラの視点201の位置が滑らかに移動されるものとなる。
【0099】
比較例として、従来例にかかるビデオゲームにおいて、障害物の存在する領域における被写体202の移動に応じた仮想カメラの視点の移動について具体的に説明する。図7(a)〜(d)は、従来例にかかるビデオゲームにおいて、透視変換の際に障害物を避けるようにするための仮想カメラの視点201の位置の移動の具体例を模式的に示す図である。
【0100】
まず、図7(a)に示すように、仮想カメラの視点201の位置及び被写体(プレイヤキャラクタ)202の位置との間の距離がD(=D)にあるものとする。ここでの仮想カメラの視点201の位置及び被写体202の位置関係は、図5(a)に示したものと同じであるとする。ここでは、仮想カメラの視点201の位置と被写体202の位置との間に障害物400は存在しない。
【0101】
次に、図7(b)に示すように、図5(a)の状態から図5(b)に示す状態に移動する場合と同じだけ被写体202の位置が移動し、これに追随して仮想カメラの視点201の位置が移動したものとする。図5(b)ではカメラコリジョン300の範囲内に障害物400が存在することとなったが、図7(b)では仮想カメラの視点201の位置と被写体202との間に障害物400が存在しないので、仮想カメラの視点201の位置が被写体202の位置に近づけられることはなく、仮想カメラの視点201の位置をこの位置において透視変換の処理が行われる。
【0102】
さらに、図7(c)に示すように、図5(c)の状態から図5(d)に示す状態に移動する場合と同じだけ被写体202の位置が移動し、これに追随して仮想カメラの視点201の位置が移動したものとする。図5(d)でもカメラコリジョン300の範囲内に障害物400が存在することとなったが、図7(c)でも仮想カメラの視点201の位置と被写体202との間に障害物400が存在しないので、仮想カメラの視点201の位置が被写体202の位置に近づけられることはなく、仮想カメラの視点201の位置をこの位置において透視変換の処理が行われる。
【0103】
その後、図7(d)に示すように、図5(e)の状態から図5(f)に示す状態に移動する場合と同じだけ被写体202の位置が移動し、これに追随して仮想カメラの視点201の位置が移動したものとする。図7(d)の状態では、仮想カメラの視点201の位置と被写体202との間に障害物400が存在してしまうこととなる。
【0104】
そこで、図7(e)に示すように、仮想カメラの視点201の位置と被写体202との間に障害物400が存在しなくなる位置、すなわち仮想カメラの視点201の位置と被写体202との間の距離DがD(≪D)となる位置まで、仮想カメラの視点201の位置が移動されることとなる。その後は、図7(f)に示すように、被写体202の位置の移動に追随して、被写体202の位置との間の距離を一定に保ちつつ仮想カメラの視点201の位置が移動される。
【0105】
その後も、図7(g)に示すように、被写体202の位置が移動し、これに追随して、仮想カメラの視点201の位置と被写体202との間に障害物400が存在してしまうこととなるまで、仮想カメラの視点201の位置が移動したものとする。そこで、図7(h)に示すように、仮想カメラの視点201の位置と被写体202との間に障害物400が存在しなくなる位置、すなわち仮想カメラの視点201の位置と被写体202との間の距離DがD00(≪D)となる位置まで、仮想カメラの視点201の位置が移動されることとなる。
【0106】
このように、比較例にかかる従来のビデオゲームでは、図7(a)、(b)、(c)、(e)、(f)、(h)に示す位置で仮想カメラの視点201の位置が移動していく場合、図7(e)、(f)、(h)に矢印で示すように、仮想カメラの視点201の移動が急激に行われてしまうことが分かる。
【0107】
以上説明したように、この実施の形態にかかるビデオゲームでは、プレイヤキャラクタを被写体202として透視変換の処理が行われ、表示装置121の表示画面122として表示されるゲームの画像が1フレーム期間毎に生成される。ここで、プレイヤが入力部161の方向キーから指示を入力すると、入力された指示に応じた方向に被写体202となるプレイヤキャラクタが移動し、これに追随して仮想カメラの視点201の位置も移動する。また、プレイヤが入力部161のLRボタンから指示を入力すると、仮想カメラの視軸203の方向を被写体202となるプレイヤキャラクタを向くように変化させつつ、仮想カメラの視点201の位置が周回移動、または極座標上で移動させられる。
【0108】
このように仮想カメラの視点201の位置は、被写体202となるプレイヤキャラクタの移動に追随して移動されるか、入力部161のLRボタンからの入力によって移動されるものであるが、カメラコリジョン300の範囲内に障害物が存在することになると、該カメラコリジョン300の範囲内に障害物が入らない位置となるまで、仮想カメラの視点201の位置が被写体202の位置の方向に向けて移動される。
【0109】
ここで、カメラコリジョン300は、仮想カメラの視点201の位置を中心とする半径Rの球に設定されるカメラ周辺領域301と、被写体202の位置を中心とする半径rの球に設定される被写体周辺領域302と、その間の円錐台形状のカメラ被写体間領域303とから構成されている。カメラ周辺領域301の半径Rと被写体周辺領域302の半径rは、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが基準距離Dsよりも小さくなると、基準距離Dsのときの標準値である半径Rs、rsよりも小さくなり、カメラコリジョン300の大きさが縮小されるものとなっている。
【0110】
このため、仮想カメラの視点201の位置から比較的離れた位置でカメラコリジョン300の範囲内に障害物が存在している場合には、仮想カメラの視点201の位置を被写体202の位置に近づければカメラコリジョン300の大きさが縮小されるので、被写体202の位置に近づけた位置をカメラコリジョン300の範囲内に障害物の存在しない位置として仮想カメラの視点201の位置を定めることができる。
【0111】
このため、例えば、仮想カメラ201の視点の位置と被写体202の位置とを結ぶ直線と障害物の間の距離が徐々に短くなっていくような場合に、仮想カメラの視点201の位置を被写体202の位置に向けて徐々に近づけていくことが可能になる。そして、この直線上に障害物が入り込むときには、その直前までに仮想カメラの視点201の位置はかなり被写体202の位置の方に移動しているので、障害物の位置よりも被写体202の位置からの距離が短い位置まで仮想カメラの視点201の位置を移動させるにしても、仮想カメラの視点201の位置が急激に移動されてしまうことがない。
【0112】
また、仮想カメラの視点201の位置と被写体202の位置とを結ぶ直線と障害物との間の距離が徐々に長くなっていくような場合には、仮想カメラの視点201の位置を被写体202から一気に遠ざけすぎるとカメラコリジョン300が大きくなってカメラコリジョン300に障害物が入り込んでしまうこととなるので、仮想カメラの視点201の位置は、被写体202の位置から徐々に遠ざかっていくものとなる。
【0113】
このように、この実施の形態にかかるビデオゲームでは、仮想カメラ201の視点の位置と被写体202の位置との間に障害物が入り込んでしまうのを回避するように仮想カメラの視点201の位置を制御するものとしても、仮想カメラの視点201の位置の移動が滑らかに行われるものとなっている。これにより、表示装置121の表示画面122に表示された画像を見ているプレイヤが、表示される画像の変化に違和感を生じさせてしまうことがない。また、仮想カメラの視点201の位置が急激に切り替わることがないため、表示されている画像を見ていることでプレイヤがカメラ酔いをしてしまうこともない。
【0114】
さらに、カメラコリジョン300の範囲内に存在する障害物に対して透過処理を行う訳でもないので、表示装置121の表示画面122に表示された画像において本来障害物に隠されて見える筈のないオブジェクトがプレイヤに見えてしまったりするということもない。これにより、表示装置121の表示画面122に表示された画像を見ているプレイヤが、表示される画像において視認しているオブジェクトに違和感を生じさせてしまうこともない。
【0115】
また、カメラ周辺領域301と被写体周辺領域302は、それぞれ仮想カメラの視点201の位置、被写体202の位置を中心とする球に含まれる領域に設定されている。このため、カメラコリジョン300のうちでカメラ周辺領域301や被写体周辺領域302に障害物が存在するかどうかは、仮想カメラの視点201の位置や被写体202の位置と障害物となり得る各オブジェクトを構成するポリゴンの頂点の位置との間の距離計算で容易に判断することができる。また、仮想カメラの視点201の位置と被写体202の位置との間の距離に応じてカメラ周辺領域301や被写体周辺領域302の大きさを変化させるものとしても、計算が複雑になることはない。
【0116】
また、カメラコリジョン300を構成するカメラ周辺領域301は、仮想カメラの視点201の位置を中心とする球からなり、被写体202の位置からの距離が視点201の位置よりも遠い領域まで含んでいるため、仮想カメラの視点201の位置が障害物の位置よりも被写体202の近くに回り込んでいる場合でも、尚も滑らかに視点201の位置を移動させ続けることができる。
【0117】
さらに、カメラコリジョン300は、被写体202の位置を中心とする球の領域に設定される被写体周辺領域302までも含んでいるため、被写体の位置に非常に近い位置で仮想カメラ201の視点の位置と被写体202の位置とを結ぶ直線に障害物が徐々に近づいて来るような場合にも、仮想カメラの視点201の位置を滑らかに移動させながら仮想カメラの視点201の位置と被写体202の位置との間に障害物が入り込んでしまうのを回避することができるようになる。
【0118】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【0119】
上記の実施の形態では、仮想カメラの視点201の位置は、被写体202の位置との間の距離Dが最大でも基準距離Dとなる位置に設定されていたが、距離Dが基準距離Dよりも大きくなる位置に設定されることがあってもよい。この場合において、カメラ周辺領域301の半径R、被写体周辺領域302の半径rは、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが基準距離Dよりも大きくなると、距離Dが基準距離Dである場合の標準値R、rよりも大きくなるものとすることができる。
【0120】
上記の実施の形態では、仮想カメラの視軸203の向きは、常にプレイヤキャラクタに向けて制御される、すなわちプレイヤキャラクタを被写体202として制御されるものとなっていた。しかしながら、仮想カメラの視軸203を向ける被写体202となるオブジェクトは、必ずしもプレイヤキャラクタに限るものではない。被写体202となるオブジェクトは、無色透明なオブジェクト或いは領域の幅を持たないオブジェクトのように、表示画面122に表示されることのないオブジェクトであってもよい。
【0121】
上記の実施の形態では、仮想カメラの視点201の位置は、カメラコリジョン300の範囲内に障害物となるオブジェクトが存在しない場合には、入力部161のLRボタンからの指示の入力に従って移動させられる場合を除いては、被写体202となるプレイヤキャラクタの位置の移動に追随して移動させられるものとしていた。もっとも、入力部161の方向キーからの指示の入力によってプレイヤキャラクタの位置だけではなく向きも変化させられる場合には、この向きの変化に追随して移動させられるものとしてもよい。
【0122】
また、仮想カメラの視点201の位置は、カメラコリジョン300の範囲内に障害物となるオブジェクトが存在することによって移動される場合以外は、被写体202となるプレイヤキャラクタの位置の移動(及び向きの変化)に完全に追随して移動させられるものであってもよい。また、仮想カメラの視点201の位置は、例えば、L1ボタン及びR1ボタンからの指示の入力によって被写体202を中心に周回移動させられるが、極座標方向には移動されないものとしてもよい。
【0123】
また、仮想カメラの視点201の位置は、被写体202と仮想カメラの視点201の間の距離を調整して障害物を回避する場合以外にも、できるだけ被写体202と仮想カメラ201の間の距離を変化させずに被写体202を向くように視軸203の角度を制御することを条件として、従来より知られている任意の手法により制御するものとすることができる。例えば、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが所定の範囲内にあるときには被写体202の位置が移動しても視点201の位置を固定したまま視軸203の角度の調整のみで(被写体202と仮想カメラの視点201の間の距離を変えずに)仮想カメラを被写体202に追随させるが、距離Dが所定の範囲を越える位置まで移動したときには距離Dが所定の範囲内となる位置に仮想カメラの視点201の位置を移動させるものとすることができる。
【0124】
上記の実施の形態では、カメラコリジョン300の範囲内に障害物が存在するときには、仮想カメラの視点201の位置を被写体202の方向に移動させ、こうして障害物がカメラコリジョン300の範囲内に入ってしまうのを回避するものとしていた。しかしながら、障害物を回避するための仮想カメラの視点201の移動方向は、被写体202の方向に限るものではない。状況に応じて仮想カメラの視点201を被写体202の方向に移動させる場合と、それ以外の方向に移動させる場合とを併用することもできる。それ以外の方向に移動させる下記の各種手法も、任意の2つ以上のものを併用することができる。
【0125】
例えば、カメラコリジョン300の範囲内に障害物が入らなくなるまで、仮想カメラの視点201の位置を極座標上で上方向に移動させるものとしてもよい。また、カメラコリジョン300の範囲内に障害物が入らなくなるまで、仮想カメラの視点201の位置を仮想3次元空間のZ軸方向に移動させるものとしてもよい。また、仮想カメラの視点201を高さを一定に維持させつつ移動させる場合には、カメラコリジョン300の範囲内に障害物が入ったときには、仮想カメラの視点201の位置を左回りまたは右回りで回転移動させて、カメラコリジョン300の範囲内に障害物が入らなくなるようにしてもよい。
【0126】
障害物を回避するため、仮想カメラの視点201を被写体202の方向に移動させる場合も、極座標上で上下方向に移動させる場合も、左回りまたは右回りで回転移動させる場合も、さらにはこれらを組み合わせる場合も、仮想カメラの視点201の位置は、視軸203を被写体202に向けつつ仮想3次元空間において任意の位置に移動させるものとすることができる。
【0127】
上記の実施の形態では、プレイヤキャラクタ及びノンプレイヤキャラクタ以外の仮想3次元空間における位置が変化しないオブジェクトが透視変換の際の障害物となり得るオブジェクトとされていたが、仮想3次元空間における位置の変化するオブジェクト(被写体202とならないノンプレイヤキャラクタを含んでいてもよい)も、透視変換の際の障害物となり得るオブジェクトとしてもよい。
【0128】
仮想3次元空間における位置の変化するオブジェクトも障害物となり得る場合には、仮想カメラの視点201の位置及び被写体202の位置が移動しなくても、障害物となり得るオブジェクトの位置が移動することで、カメラコリジョン300の範囲内に障害物となるオブジェクトが存在してしまうことがある。このような場合にも、ステップS109の仮想カメラ制御処理(図3)を行うものとし、カメラコリジョン300の範囲内に障害物となるオブジェクトが含まれないように仮想カメラの視点201の位置を移動させるものとすればよい。
【0129】
また、上記の実施の形態ではスタンドアローン型のビデオゲームを前提に説明したので、プレイヤキャラクタ以外のキャラクタは全てノンプレイヤキャラクタであるものとして説明したが、ネットワーク151を介して接続された複数のビデオゲーム装置100から各プレイヤが参加するネットワークゲームでは、各々のプレイヤに対応したプレイヤキャラクタが仮想3次元空間に存在することとなる。この場合は、他のプレイヤに対応したプレイヤキャラクタは、透視変換の際の障害物となり得るオブジェクトとすることも障害物となり得ないオブジェクトとすることもできる。ゲームにおいて一定の関係を有するプレイヤのプレイヤキャラクタだけを障害物となり得ないオブジェクトとすることもできる。
【0130】
上記の実施の形態では、カメラコリジョン300の範囲内に障害物となるオブジェクトが存在しないことを条件として、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが基準距離Dに最も近くなる位置まで仮想カメラの視点201の位置を被写体202の位置から遠ざけるものとしていた。もっとも、特に障害物となるオブジェクトが仮想3次元空間内を移動するものであったり、仮想3次元空間から突然消えることがあるオブジェクトであったりした場合には、距離Dが基準距離Dとなるまで1フレーム期間で一気に仮想カメラの視点201の位置を移動させてしまうと、視点201の位置が急激になりすぎてしまうことがある。
【0131】
そこで、カメラコリジョン300の範囲内に障害物となるオブジェクトが存在しない場合であっても、仮想カメラの視点201の位置は、前回のフレーム期間における距離Dと今回のフレーム期間における距離Dとの差が一定の範囲内となることを条件として、距離Dが基準距離Dに近づくように移動させるものとしてもよい。例えば、図4のステップS209の処理でカメラコリジョン300の範囲内に障害物が存在しないと判定された場合に、そのまま仮想カメラ制御処理を終了させることなどにより、このような手法を実現することができる。
【0132】
上記の実施の形態では、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じてカメラコリジョン300の大きさを変化させるものとしていたが、仮想カメラの視界は常に所定の角度になっていた。このため、仮想カメラの視点201の位置を被写体202に近づけると、透視変換により生成される画像に表示される範囲の大きさが変わってしまう。そこで、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じて、仮想カメラの視界の大きさも変化させるものとしてもよい。
【0133】
これにより、表示画面122として表示される仮想3次元空間の範囲の大きさを、仮想カメラの視点201の位置と被写体202の位置との間の距離Dの変化に関わらずにほぼ同じ大きさに保つことができるので、障害物を回避するために仮想カメラの視点201の位置を被写体202の位置に近づけたり遠ざけたりしても、プレイヤが画面上であまり違和感を生じさせなくて済むようになる。
【0134】
上記の実施の形態では、カメラコリジョン300を構成するカメラ周辺領域301の半径Rも、被写体周辺領域302の半径rも、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じて変化するものとなっていた。これに対して、カメラ周辺領域301の半径Rは距離Dに応じて可変とするが、被写体周辺領域302の半径rは距離Dに関わらずに一定のものとすることができる。もっとも、被写体周辺領域302の半径rも距離Dに応じて変化させる方が、仮想カメラの視点201の動きをスムーズにすることができる。
【0135】
上記の実施の形態では、カメラコリジョン300の大きさ(カメラ周辺領域301の半径Rと被写体周辺領域302の半径r)は、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じて決められるものとしていた。もっとも、ゲームの進行状況の違いによって、仮想カメラの視点201の位置が滑らかに流れるように動いた方が臨場感の得られる画像を生成できる場合も、仮想カメラの視点201の位置が大きく変化した方が臨場感の得られる画像を生成できる場合もある。また、障害物となり得るオブジェクトが多い場面では、カメラコリジョン300の大きさを大きくしすぎると、障害物を避けるために仮想カメラの視点201の位置の移動される量が大きくなりすぎてしまう場合がある。
【0136】
そこで、仮想カメラの視点201の位置と被写体202の位置との間に距離Dに応じてだけではなく、ゲームの場面の違いによっても、カメラコリジョン300の大きさ(カメラ周辺領域301の半径Rおよび/または被写体周辺領域302の半径r)を変化させるものとしてもよい。ゲームの場面の違いによってカメラコリジョン300の大きさを変化させる方法としては、場面毎にカメラコリジョン300の基本の大きさ(半径R、rの標準値)を予め定めておくものを適用しても、ゲームの場面を判断してカメラコリジョン300の基本の大きさ(半径R、rの標準値)を動的に変化させるものとしてもよい。
【0137】
ここで、カメラコリジョン300の大きさを変化させるゲームの場面の違いとしては、例えば、昼間のシーンと夜のシーンの違いを適用することができる。現実の世界では、明るいときにはカメラマンが障害物にギリギリまで近づいてから障害物を避けるように動くことができる一方、暗いときにはカメラマンが障害物に衝突してしまうのを避けるために早め早めに障害物を回避する行動を取ることが一般的だからである。この場合、ゲームの状況に応じた臨場感のある画像を生成することができるようになる。昼間のシーンと夜のシーンの違いでカメラコリジョン300の大きさを変化させるものでは、動的にカメラコリジョン300の大きさを変化させる手法が適するものとなる。
【0138】
また、カメラコリジョン300の大きさを変化させるゲームの場面の違いとしては、例えば、障害物となり得るオブジェクトの多いシーン/少ないシーンの違いを適用することができる。この場合、障害物となり得るオブジェクトが多い場面になっても、カメラコリジョン300に障害物が入らないようにするための仮想カメラの視点201の位置の制御が頻繁になりすぎずに済むようになる。このように障害物となり得るオブジェクトの多いシーン/少ないシーンの違いでカメラコリジョン300の大きさを変化させるものでは、障害物となり得るオブジェクトが多いか少ないかは場所毎に予め定まっていることが多いので、場所毎に定められた基本の大きさのカメラコリジョン300を用いる手法が適するものとなる。
【0139】
上記の実施の形態では、カメラコリジョン300は、半径Rの球からなるカメラ周辺領域301と、半径rの球からなる被写体周辺領域302と、円錐台形状の領域からなるカメラ被写体間領域303とから構成され、カメラ周辺領域301の半径R、被写体周辺領域302の半径rともに、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じて変化させられるものとしていた。
【0140】
これに対して、仮想カメラの視点201の位置から見て被写体202よりも後側に障害物が存在しても問題にはならないので、被写体周辺領域302は、球形の領域とするのではなく、仮想カメラの視点201の近い部分だけの半球状の領域としてもよい。もっとも、カメラ被写体間領域303が円錐台形状の領域に設定されるのであれば、被写体周辺領域302そのものがなくてもよい。
【0141】
また、被写体周辺領域302がカメラコリジョン300に含まれないものとし、カメラ周辺領域300と、被写体202の位置を頂点としてカメラ周辺領域300との間に形成される円錐形状のカメラ被写体間領域とからカメラコリジョン300が構成されるものとしてもよい。この場合のカメラ被写体間領域に障害物となるオブジェクトが存在するかどうかは、被写体202の位置を中心として仮想カメラの視点201の位置と障害物となり得るオブジェクトの各頂点の位置とがなす角度と、被写体202の位置と障害物となり得るオブジェクトの拡張点の位置とがなす距離とによって求めることができる。
【0142】
また、カメラコリジョン300にカメラ周辺領域301と被写体周辺領域302とが含まれる場合には、カメラ周辺領域301の半径Rと被写体周辺領域302の半径rの何れか一方のみが、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じて変化させられるものとしてもよい。
【0143】
また、カメラ被写体間領域303の形状は、カメラ周辺領域301と被写体周辺領域302の形状が球形であれば理想的には円錐台形状(或いはカメラコリジョン300に被写体周辺領域302が含まれない場合には円錐形状)となるが、制御部103の処理負荷を軽減するため、角錐台形状(或いは角錐形状)にしてもよい。この角錐台(或いは角錐)の底面は、角の数が多い多角形となっているほど理想の形状に近づくが、制御部103の処理負荷が大きくなるので、制御部103の処理負荷とのバランスにより適当な画数に定めるものとすることができる。さらに、カメラ周辺領域301および/または被写体周辺領域302の形状も、多面体形状とすることができる。カメラ周辺領域301および/または被写体周辺領域302の形状は、仮想カメラの視点201の位置から被写体202の位置までの方向を長くした楕円球とすることもできる。
【0144】
また、カメラ周辺領域301は、仮想カメラの視点201の位置を中心とした領域に設定されるのではなく、仮想カメラの視点201の位置よりもやや被写体202に近い位置を中心とした領域に設定されるものとしてもよい。例えば、カメラ周辺領域301の半径Rの球で構成するものとした場合、カメラ周辺領域301の中心位置を仮想カメラの視点201の位置よりもRよりも少ない所定距離だけ被写体202に近づけた位置に設定するものとしてもよい。また、カメラ周辺領域301および/または被写体周辺領域302の形状は、高さ方向の長さを水平方向の長さよりも短くした多面体(正多面体ではない)としてもよい。この場合、カメラ被写体間領域303も、楕円角錐(台)形状となる。
【0145】
さらに、仮想カメラの視点201の位置が水平方向の高さを保って移動される場合には、カメラコリジョン300が平面形状になるものとしてもよい(例えば、カメラ周辺領域301及び被写体周辺領域302を円形とし、カメラ被写体間領域303を台形とする)。ここでは、仮想カメラの視点201の位置が水平方向の高さを保って移動されるという制約があることが条件になるものの、このような制約下ではカメラコリジョン300を平面形状に設定することができ、より少ない計算量でカメラコリジョン300に障害物が存在するかどうかを判断することができるようになる。
【0146】
上記の実施の形態では、カメラコリジョン300は、仮想カメラの視点201の位置を中心として設定されるカメラ周辺領域301と、被写体202の位置を中心として設定される被写体周辺領域302と、その間のカメラ被写体間領域303とを含んでいた。つまり、仮想カメラの視点201の位置だけではなく、被写体202の位置も含むものとしていた。そして、カメラコリジョン300に障害物となるオブジェクトが存在することとなると、仮想カメラの視点201の位置を被写体202の方向に移動させるものとしていた。
【0147】
もっとも、カメラコリジョン300の範囲内に障害物となるオブジェクトが存在するからといって、仮想カメラの視点201の位置をあまりに被写体202に近づけすぎると、被写体202がクリッピング範囲に含まれなくなってしまい、何れにしても表示画面122において被写体202が表示されなくなってしまう。また、被写体202がクリッピング範囲に含まれていたとしても、仮想カメラの視点201の位置に近すぎると、被写体202となるプレイヤキャラクタの一部のみが大アップで表示されてしまうこととなる。
【0148】
このような不都合を回避するため、例えば、カメラコリジョン300の範囲内に障害物となるオブジェクトが存在する場合には、これを避けるために仮想カメラの視点201の位置を被写体202の位置に近づけることを基本とするが、被写体202の位置から非常に近い位置に障害物となるオブジェクトが存在するときには、これとは異なる方向、例えば、極座標の上方向に仮想カメラの視点201の位置を移動させるものとしてもよい。
【0149】
或いは、被写体202の位置から非常に近い位置に障害物となるオブジェクトが存在する場合には、カメラコリジョン300の範囲内に障害物となるオブジェクトが存在しても、仮想カメラの視点201の位置を被写体202の方向に移動させないものとしてもよい。また、カメラコリジョン300は、被写体202の近傍の位置にまで設定するものの被写体202の位置が含まれない領域に設定するものとしてもよい。
【0150】
これらの場合、被写体202の位置から非常に近い位置に障害物となるオブジェクトが存在する場合には、仮に仮想カメラの視点201の位置と被写体202の位置との間に障害物となるオブジェクトが存在すると、表示画面122において被写体202が表示されなくなってしまう。もっとも、このような場合でも、プレイヤが入力部161のLRボタンを操作することで仮想カメラの視点201の位置を移動させ、被写体202が表示されるようにすることができるので、特に不都合が生じることはない。
【0151】
上記の実施の形態では、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに関して基準距離Dを定め、この基準距離Dのときのカメラ周辺領域301の半径Rと被写体周辺領域302の半径rを標準値R、rとして定めておくことで、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに従ってカメラ周辺領域301の半径Rと被写体周辺領域302の半径rを求めるものとしていた。しかしながら、このように基準距離D、標準値R、rを予め定めておくことは必ずしも必要ではなく、例えば、数式2のようにカメラ周辺領域301の半径R、被写体周辺領域302の半径rを求めるものとすることもできる。
【0152】
(数2)
R=a×D
r=b×D
ここで、a、b、c、dは、所定の定数であって、c=dとしてもよい。
【0153】
また、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが小さくなるのに従ってカメラ周辺領域301の半径R(及び被写体周辺領域302の半径r)が小さくなることを条件として、数式1、数式2に当てはまらない演算式も採用することができる。さらに、カメラ周辺領域301(及び被写体周辺領域302)が球状の領域でない場合には、仮想カメラの視点201の位置と被写体202の位置との間の距離Dが小さくなるのに従ってカメラ周辺領域301(及び被写体周辺領域302)の大きさが小さくなることを条件として、任意の演算式に従ってカメラ周辺領域301(及び被写体周辺領域302)の大きさを算出するものとすることができる。
【0154】
上記の実施の形態では、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに近距離限界は定めていなかった。もっとも、仮想カメラの視点201の位置を被写体202の位置にあまりに近づけすぎると、クリッピング範囲に被写体202が含まれていたとしても、表示画面122として表示されるゲームの画像における被写体202の大きさが大きくなりすぎたり、また、ゲームの画像において被写体202以外のオブジェクトが映らなくなったりするという不都合が生じ得る。このような不都合を避けるため、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに一定の近距離限界を定めるものとしてもよい。
【0155】
図8(a)、(b)は、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに近距離限界を設けた場合におけるカメラコリジョンの例を示す図である。ここで、仮想カメラの視点201の位置と被写体202の位置との間の標準距離をD、近距離限界となる距離をDとする。また、仮想カメラの視点201Sの位置と被写体202の位置との間の距離Dが標準距離Dであるときのカメラ周辺領域301Sの半径RをRとする。
【0156】
図8(a)の例では、仮想カメラの視点201Nの位置と被写体202の位置との間の距離Dが近距離限界となる距離Dであるときにおけるカメラ周辺領域301Nの半径RをR(>0)としている。このような場合におけるカメラ周辺領域301の半径は、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じて、数式3に従って算出するものとすることができる。
【0157】
(数3)
R=R+(R−R)×(D−D)/(D−D
【0158】
図8(b)の例では、仮想カメラの視点201Nの位置と被写体202の位置との間の距離Dが近距離限界となる距離Dであるときにおけるカメラ周辺領域301Nの半径Rを0としている。このような場合におけるカメラ周辺領域301の半径は、仮想カメラの視点201の位置と被写体202の位置との間の距離Dに応じて、数式4に従って算出するものとすることができる。
【0159】
(数4)
R=R×(D−D)/(D−D
【0160】
上記の実施の形態では、本発明にかかる画像生成の手法をビデオゲームでの画像を生成する場合に適用し、各プレイヤがゲームを進めるために用いる端末装置としてゲーム専用機であるビデオゲーム装置100を適用していた。これに対して、本発明は、3次元コンピュータグラフィックによる画像生成であれば、ビデオゲーム以外で画像を生成する場合にも適用することができる。
【0161】
また、本発明にかかる手法で画像生成の処理を行う装置は、ビデオゲーム装置100と同様の構成要素を備え、画像を描画する機能を有するものであれば、汎用のパーソナルコンピュータなどを適用してもよい。3次元コンピュータグラフィックスを処理できる能力があれば、表示装置121及びサウンド出力装置125を装置本体101と同一の筐体内に納めた構成を有する携帯ゲーム機(アプリケーションの実行機能を有する携帯電話機を含む)を適用するものとしてもよい。
【0162】
記録媒体131としては、DVD−ROMやCD−ROMの代わりに半導体メモリーカードを適用することができる。このメモリーカードを挿入するためのカードスロットをDVD/CD−ROMドライブ113の代わりに設けることができる。汎用のパーソナルコンピュータの場合には、本発明に係るプログラム及びデータを記録媒体131に格納して提供するのではなく、HDD107に予め格納して提供してもよい。本発明にかかるプログラム及びデータを格納して提供するための記録媒体は、ハードウェアの物理的形態及び流通形態に応じて任意のものを適用することができる。
【0163】
上記の実施の形態では、ビデオゲーム装置100のプログラム及びデータは、記録媒体131に格納されて配布されるものとしていた。これに対して、これらのプログラム及びデータをネットワーク151上に存在するサーバ装置が有する固定ディスク装置に格納しておき、装置本体101にネットワーク151を介して配信するものとしてもよい。ビデオゲーム装置100において、通信インターフェイス115がサーバ装置から受信したプログラム及びデータは、HDD107に保存し、実行時にRAM105にロードすることができる。
【図面の簡単な説明】
【0164】
【図1】本発明の実施の形態に適用されるビデオゲーム装置の構成を示すブロック図である。
【図2】本発明の実施の形態にかかるビデオゲームで設定されるカメラコリジョンの例を示す図である。
【図3】本発明の実施の形態にかかるビデオゲームにおいて、1フレーム期間毎に行われる画像生成処理を示すフローチャートである。
【図4】図3の仮想カメラ制御処理を詳細に示すフローチャートである。
【図5】本発明の実施の形態にかかるビデオゲームにおけるカメラコリジョンの設定と仮想カメラの視点位置の移動の具体例を模式的に示す図である。
【図6】本発明の実施の形態にかかるビデオゲームにおけるカメラコリジョンの設定と仮想カメラの視点位置の移動の具体例を模式的に示す図である。
【図7】従来例にかかるビデオゲームにおける仮想カメラの視点位置の移動の対比例を模式的に示す図である。
【図8】仮想カメラの視点の位置と被写体の位置との間の距離に近距離限界を設けた場合におけるカメラコリジョンの例を示す図である。
【符号の説明】
【0165】
100 ビデオゲーム装置
101 ビデオゲーム本体
103 制御部
105 RAM
107 HDD
109 サウンド処理部
111 グラフィック処理部
112 フレームメモリ
113 DVD/CD−ROMドライブ
115 通信インターフェイス
117 インターフェイス部
119 内部バス
121 表示装置
122 表示画面
125 サウンド出力装置
131 記録媒体
151 ネットワーク
161 入力部
162 メモリーカード

【特許請求の範囲】
【請求項1】
仮想3次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成する画像生成装置であって、
前記仮想3次元空間において前記所定の被写体の位置を移動させる被写体制御手段と、
前記仮想カメラの視軸を前記所定の被写体に向けつつ、前記仮想3次元空間において該仮想カメラの視点の位置を、前記所定の被写体の位置の移動に追随して移動させる仮想カメラ制御手段と、
前記仮想カメラ制御手段により制御される仮想カメラに従って前記所定の被写体を含む前記仮想3次元空間を仮想スクリーン上に透視変換して、表示装置に表示される2次元画像を生成する透視変換手段と、
少なくとも前記仮想カメラの視点の位置を基準として該視点の位置の周囲に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、障害物回避域に設定する障害物回避域設定手段と、
前記障害物回避域設定手段により設定された障害物回避域に、障害物が存在するかどうかを判定する障害物判定手段とを備え、
前記仮想カメラ制御手段は、前記障害物判定手段により前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を移動させる障害物回避制御手段を含み、
前記障害物回避域設定手段は、前記仮想3次元空間における前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて、前記障害物回避域の大きさを変化させる障害物回避域変化手段を含む
ことを特徴とする画像生成装置。
【請求項2】
前記障害物回避域設定手段は、前記カメラ周辺領域と、前記所定の被写体の位置を基準として該被写体の位置の周囲に定められる被写体周辺領域と、該カメラ周辺領域と該被写体周辺領域の間の領域であるカメラ被写体間領域とを、前記障害物回避域に設定する
ことを特徴とする請求項1に記載の画像生成装置。
【請求項3】
前記障害物回避域設定手段は、前記カメラ周辺領域と、該カメラ周辺領域と前記所定の被写体の間の領域であるカメラ被写体間領域とを、前記障害物回避域に設定する
ことを特徴とする請求項1に記載の画像生成装置。
【請求項4】
前記障害物回避域設定手段は、少なくとも前記仮想カメラの視点の位置を中心とした球に含まれる領域を前記カメラ周辺領域として前記障害物回避域に設定し、
前記障害物回避域設定手段は、前記仮想3次元空間における前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて、前記カメラ周辺領域として設定される球の半径を変化させる
ことを特徴とする請求項1乃至3のいずれか1項に記載の画像生成装置。
【請求項5】
前記仮想カメラ制御手段は、前記仮想3次元空間における高さ方向の位置を維持しつつ前記仮想カメラの視点の位置を移動させ、
前記障害物回避域設定手段は、前記仮想カメラの視点と前記所定の被写体とを結ぶ直線と、該直線と直交する前記仮想3次元空間における高さ方向に平行な直線とがなす平面内において前記障害物回避域を設定する
ことを特徴とする請求項1乃至3のいずれか1項に記載の画像生成装置。
【請求項6】
前記仮想3次元空間は、ビデオゲームのゲーム空間であり、
前記障害物回避域変化手段は、さらに前記ビデオゲームの進行状況に応じて、前記障害物回避域の大きさを変化させる
ことを特徴とする請求項1乃至5のいずれか1項に記載の画像生成装置。
【請求項7】
前記障害物回避域変化手段は、前記障害物となり得るオブジェクトが多数存在する場面ほど、前記障害物回避域の大きさを小さくするように該障害物回避域の大きさを変化させる
ことを特徴とする請求項6に記載の画像生成装置。
【請求項8】
仮想3次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成する画像生成方法であって、
前記仮想3次元空間において前記所定の被写体の位置を移動させ、該被写体の位置を記憶装置に記憶させるステップと、
前記仮想カメラの視軸を前記所定の被写体に向けつつ、前記仮想3次元空間において該仮想カメラの視点の位置を前記所定の被写体の位置の移動に追随して移動させ、該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、
少なくとも前記仮想カメラの視点の位置を基準として該視点の位置の周囲に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて大きさの変化する障害物回避域に設定し、該障害物回避域に関する情報を前記記憶装置に記憶させるステップと、
前記記憶装置に情報の記憶された障害物回避域に、障害物が存在するかどうかを、該障害物の位置について前記記憶装置に記憶された情報に従って判定するステップと、
前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を再度移動させ、該再度の移動の後の該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、
前記記憶装置に情報の記憶された仮想カメラの視軸及び視点の位置に関する情報に従って前記所定の被写体を含む前記仮想3次元空間を仮想スクリーン上に透視変換して、表示装置に表示される2次元画像を生成し、前記記憶装置に書き込むステップと
を含むことを特徴とする画像生成方法。
【請求項9】
仮想3次元空間に存在する所定の被写体に仮想カメラの視軸を向けて透視変換した画像を生成するための処理をコンピュータ装置に実行させるプログラムであって、
前記仮想3次元空間において前記所定の被写体の位置を移動させ、該被写体の位置を前記コンピュータ装置が備える記憶装置に記憶させるステップと、
前記仮想カメラの視軸を前記所定の被写体に向けつつ、前記仮想3次元空間において該仮想カメラの視点の位置を前記所定の被写体の位置の移動に追随して移動させ、該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、
少なくとも前記仮想カメラの視点の位置を基準として該視点の位置の周囲に定められるカメラ周辺領域と、該カメラ周辺領域から連続して少なくとも前記所定の被写体の近傍の位置まで続く領域とを、前記仮想カメラの視点の位置と前記所定の被写体との位置の間の距離に応じて大きさの変化する障害物回避域に設定し、該障害物回避域に関する情報を前記記憶装置に記憶させるステップと、
前記記憶装置に情報の記憶された障害物回避域に、障害物が存在するかどうかを、該障害物の位置について前記記憶装置に記憶された情報に従って判定するステップと、
前記障害物回避域に前記障害物が存在すると判定された場合に、該障害物回避域に該障害物が入らない位置まで前記仮想カメラの視点の位置を再度移動させ、該再度の移動の後の該仮想カメラの視軸及び視点の位置に関する情報を前記記憶装置に記憶させるステップと、
前記記憶装置に情報の記憶された仮想カメラの視軸及び視点の位置に関する情報に従って前記所定の被写体を含む前記仮想3次元空間を仮想スクリーン上に透視変換して、表示装置に表示される2次元画像を生成し、前記記憶装置に書き込むステップと
を前記コンピュータ装置に実行させることを特徴とするプログラム。
【請求項10】
請求項9に記載のプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−59111(P2009−59111A)
【公開日】平成21年3月19日(2009.3.19)
【国際特許分類】
【出願番号】特願2007−224908(P2007−224908)
【出願日】平成19年8月30日(2007.8.30)
【出願人】(592044813)株式会社スクウェア・エニックス・ホールディングス (115)
【Fターム(参考)】