画像処理プログラムおよび画像処理装置
【構成】画像処理装置では、第1仮想カメラと、第1仮想カメラの第1クリッピングエリアの周囲の領域を視野範囲に含む第2仮想カメラとを、仮想3次元空間に配置する。そして、第2仮想カメラの視野範囲に存在する特定の物体を、たとえば第1仮想カメラに基づいて描画される画面と同じ画面に描画する。具体的には、その特定の物体の座標を第2仮想カメラに基づいて第1仮想カメラの視野範囲内に縮小変換してその位置を修正した後に、第1仮想カメラに基づいて第1仮想カメラの第1クリッピングエリアを描画する。あるいは、特定の物体を拡大した後第2仮想カメラに基づいて描画し、この第2仮想カメラで描画した物体の画像と第1仮想カメラに基づいて描画した画像とを1つの画面に合成する。
【効果】仮想3次元空間内の物体を画面に表示され易くすることができ、しかも見易く表示できる。
【効果】仮想3次元空間内の物体を画面に表示され易くすることができ、しかも見易く表示できる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、画像処理プログラムおよび画像処理装置に関し、特にたとえば、仮想3次元空間に配置された仮想的な物体を仮想カメラで撮影した画像を表示手段に表示する、画像処理プログラムおよび画像処理装置に関する。
【背景技術】
【0002】
従来、仮想3次元空間を示す画像は1つの視点(仮想カメラ)から見た情報に基づいて生成されていた。たとえばプレイヤキャラクタが仮想3次元空間に登場するゲームにおいては、基本的にはプレイヤキャラクタが常に画面に表示されるように仮想カメラが設定される。この場合、仮想3次元空間内の他の物体(たとえばライバルキャラクタないし敵キャラクタ等)は、プレイヤキャラクタをとらえる視野内に存在するときに、画面に表示されることとなる。
【0003】
また、プレイヤキャラクタと敵キャラクタとが仮想3次元空間内に存在するゲームにおいて、プレイヤキャラクタと敵キャラクタとを同時に表示しようとする技術が存在している。たとえば、特許文献1には、シューティングゲームにおいてプレイヤキャラクタの位置から予め定めた距離範囲内に敵キャラクタが存在する場合には、敵キャラクタを追尾し、かつ、プレイヤキャラクタが視界に存在するように仮想カメラを設定し、その仮想カメラから見た視界画像を生成する技術が開示されている。この特許文献1の技術では、プレイヤキャラクタと敵キャラクタとが予め定めた距離内にいる場合には敵キャラクタが常に視界に入るようにして、プレイヤが敵キャラクタを見失うことを防止し、プレイヤがシューティング操作を楽しめるようにしている。
【特許文献1】特開2001−149643号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
上述のようなプレイヤキャラクタのみに注目した仮想カメラの場合には、たとえば視野の端の方に見えている敵キャラクタ等の物体が仮想カメラの存在する側に移動すると、その物体はすぐに視野外に出てしまって、急速に画面外に移動しているように見えることとなる。逆に、仮想カメラの近くの視野外に存在している物体が仮想カメラの存在する側と反対方向に移動すると、その物体は視野内に入り、画面外から唐突に現れるように見えることとなる。つまり、物体が急激に移動したような現象が生じ、プレイヤにとって見難い画像となってしまう。
【0005】
また、物体は仮想カメラから遠い位置に存在する場合には視野内に入り易いが、仮想カメラに近付くと視野に入り難くなってしまう。このように、プレイヤキャラクタのみに注目した場合には、プレイヤキャラクタ以外の物体が目に触れ難くなってしまい、他の物体等を含めた3次元空間内の状況を把握し難いという問題もある。たとえばプレイヤキャラクタとライバルキャラクタとが空間内を移動しながら競走するようなゲームでは、プレイヤキャラクタばかりが表示されると、緊張感やスリルが得難くなり、ゲームの楽しさを減らす要因となってしまう。
【0006】
一方、特許文献1のような技術では、常にプレイヤキャラクタと敵キャラクタの両方を視界にとらえるために、両者が離れている場合や複数の敵キャラクタが登場するような場合等には、仮想カメラがキャラクタから遠く離れた位置に設定されてしまう。したがって、キャラクタを離れた視点から見ることとなるので、プレイヤキャラクタと敵キャラクタの両方を表示することはできても、画面上ではキャラクタが小さくなり過ぎて見難くなってしまうという問題がある。
【0007】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラムおよび画像処理装置を提供することである。
【0008】
この発明の他の目的は、仮想3次元空間内の物体を画面に表示され易くすることができる、画像処理プログラムおよび画像処理装置を提供することである。
【0009】
この発明のその他の目的は、仮想3次元空間内の物体を画面に表示され易くすることができ、しかも見易く表示することができる、画像処理プログラムおよび画像処理装置を提供することである。
【課題を解決するための手段】
【0010】
第1の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータを記憶する記憶手段を備え、仮想3次元空間を描画した画像を表示手段に表示する画像処理装置の画像処理プログラムである。この画像処理プログラムは、画像処理装置のプロセサに、注視点設定ステップ、第1仮想カメラ設定ステップ、第2仮想カメラ設定ステップ、画面生成ステップ、および表示制御ステップを実行させる。注視点設定ステップは、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定ステップは、記憶手段の少なくとも注視点データに基づいて仮想3次元空間に第1仮想カメラを設定して、第1仮想カメラの少なくとも位置を含む第1仮想カメラデータを記憶手段に記憶する。第2仮想カメラ設定ステップは、記憶手段の少なくとも第1仮想カメラデータに基づいて、第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能な第2仮想カメラを設定し、第2仮想カメラの少なくとも位置を含む第2仮想カメラデータを記憶手段に記憶する。画面生成ステップは、記憶手段の少なくとも物体に関するデータと第1仮想カメラデータと第2仮想カメラデータに基づいて、第1仮想カメラで第1クリッピングエリアを描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する物体を描画して、当該画面を示す画像データを生成する。表示制御ステップは、生成された画面を示す画像データに基づいて画面を表示手段に表示する。
【0011】
第1の発明では、画像処理プログラムは、画像処理装置(10:実施例で相当する参照符号。以下同じ。)のプログラムである。画像処理装置のプロセサ(42)はこの画像処理プログラムに従って処理を実行し、仮想3次元空間を描画した画像を表示手段(12、14)に表示する。画像処理装置の記憶手段(48、28a)は、少なくとも仮想3次元空間に配置される仮想的な物体(92)に関するデータを記憶する。たとえばプレイヤキャラクタ、ライバルキャラクタ、背景オブジェクトのような物体のオブジェクトデータ、テクスチャデータ等が記憶される。注視点設定ステップ(S3)は注視点を仮想3次元空間に設定して、注視点データを記憶手段(84)に記憶する。第1仮想カメラ設定ステップ(S3)は、たとえば、少なくとも注視点データに基づいて、注視点を向く所定の視野角(2θ1)の第1仮想カメラを仮想3次元空間に設定して、第1仮想カメラの少なくとも位置データを含む第1仮想カメラデータを記憶手段(80)に記憶する。第2仮想カメラ設定ステップ(S7)は、少なくとも第1仮想カメラデータに基づいて第2仮想カメラを仮想3次元空間に設定して、第2仮想カメラの少なくとも位置データを含む第2仮想カメラデータを記憶手段(82)に記憶する。この第2仮想カメラは、たとえば注視点を向く所定の視野角(2θ2)を有していて、第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能に設定される。つまり、第2仮想カメラは第1仮想カメラの視野範囲外の領域を撮影可能なようにして仮想3次元空間に配置されている。画面生成ステップ(S9−S21、S101−S113)は、少なくとも物体に関するデータと第1仮想カメラデータと第2仮想カメラデータに基づいて、第1仮想カメラで第1クリッピングエリアを描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する物体を描画し、当該画面を示す画像データを生成して記憶手段(48、56,58)に記憶する。つまり、第1仮想カメラから第1クリッピングエリアを撮影した画面に、第1クリッピングエリアの周囲の領域に存在している物体が描画される。そして、表示制御ステップ(S23)は、生成された画像データに基づいて当該画面を表示手段に表示する。
【0012】
第1の発明によれば、第1仮想カメラの視野範囲外に存在する物体であっても、第2仮想カメラに基づいて、第1仮想カメラで撮影した画面に合わせて描画することができる。したがって、仮想3次元空間に存在する物体が画面に表示され易い。
【0013】
第2の発明は、第1の発明に従属し、画面生成ステップは、位置修正ステップ、および画像生成ステップを含む。位置修正ステップは、記憶手段の少なくとも物体に関するデータと第1仮想カメラデータと第2仮想カメラデータに基づいて、第2仮想カメラで撮影可能な領域に存在する物体の座標を第1仮想カメラで撮影可能な領域の座標に縮小する変換を行うことによって、当該物体の位置を修正する。画像生成ステップは、位置修正ステップの後、記憶手段のデータに基づいて、第1仮想カメラから見て第1クリッピングエリアを描画して、画面を示す画像データを生成する。
【0014】
第2の発明では、位置修正ステップ(S11)は、第2仮想カメラで撮影可能な領域、すなわち、第2仮想カメラの視野範囲内に存在する物体の座標を縮小変換する。たとえば、縮小率は、実施例では、第1仮想カメラの視野角、第2仮想カメラの視野角、物体の第1仮想カメラ座標系でのZ座標、および第1仮想カメラの後方クリッピング平面からの距離に基づいて算出される。この縮小変換によって、第2仮想カメラで撮影可能な領域の物体の座標が第1仮想カメラで撮影可能な領域の座標に縮小される。画像生成ステップ(S15−S21)は、位置修正の後、第1仮想カメラから見て第1クリッピングエリアを画面に描画する。したがって、第1仮想カメラの視野範囲外に存在する物体であっても、位置修正によって第1仮想カメラの視野範囲内に取り込むことが可能になるので、物体を画面に表示し易くすることができる。また、実施例のように第1仮想カメラ座標系での物体のX座標とY座標だけを縮小変換する場合には、第1仮想カメラに基づいて画面を描画することで、物体の見た目の大きさの整合性をとることが可能であり、したがって、物体を見易く表示することができる。
【0015】
第3の発明は、第2の発明に従属し、位置修正ステップは、物体が第1仮想カメラに近づくにつれて縮小率の値が大きくなるような変換によって、物体の位置を修正する。
【0016】
第3の発明では、物体の位置は、物体が第1仮想カメラに近づくにつれて縮小率(f(z))の値が大きくなるような縮小変換によって修正される。これによって、物体が第1仮想カメラに近付くにつれて、物体の座標があまり縮小されないようにしていくことができ、修正後の物体の位置を第1仮想カメラから見た実際の位置に徐々に近づけていくことができる。したがって、物体を見易く表示することができる。たとえば物体が第1仮想カメラの周辺に向けて移動しているような場合には、当該物体が第1仮想カメラの周辺に向かっているにもかかわらず第1仮想カメラにぶつかってくるように見えてしまう現象を抑制することができる。
【0017】
第4の発明は、第1の発明に従属し、画面生成ステップは、第1描画ステップ、第2描画ステップ、および画像生成ステップを含む。第1描画ステップは、記憶手段の少なくとも第1仮想カメラデータに基づいて、第1仮想カメラから見て第1クリッピングエリアを示す画像を描画する。第2描画ステップは、記憶手段の少なくとも第1仮想カメラデータと第2仮想カメラデータに基づいて算出される拡大率に基づいて第2仮想カメラの第2クリッピングエリアに存在する物体の大きさを拡大し、記憶手段の少なくとも第2仮想カメラデータと物体に関するデータに基づいて第2仮想カメラから見て第2クリッピングエリアを示す画像を描画する。画像生成ステップは、第1描画ステップで描画された画像に第2描画ステップで描画された画像を合成して、画面を示す画像データを生成する。
【0018】
第4の発明では、第1描画ステップ(S101、S103、S17、S19)は、第1仮想カメラで撮影して第1クリッピングエリアを示す画像を描画する。第2描画ステップ(S107、S109、S113、S21)は、たとえば後方クリッピング平面からの第1仮想カメラの距離と第2仮想カメラの距離との比によって与えられる拡大率に基づいて、第2仮想カメラの第2クリッピングエリアに存在する物体の大きさを拡大した後、第2仮想カメラで撮影して第2クリッピングエリアを示す画像を描画する。そして、画像生成ステップ(S21)は、第1描画ステップで描画された画像に第2描画ステップで描画された画像を合成することによって画面の画像データを生成する。したがって、第1仮想カメラの視野範囲外に存在する物体であっても、第2仮想カメラに基づいて描画して、第1仮想カメラで描画した画面に合わせて描画することができる。したがって、仮想3次元空間に存在する物体を画面に表示され易くすることができる。しかも、物体の大きさを拡大してから第2仮想カメラに基づいて当該物体を描画するので、物体の見た目の大きさの整合性をとることができる。したがって、物体を見易く表示できる。
【0019】
第5の発明は、第1の発明に従属し、記憶手段は、少なくとも物体として第1物体および第2物体に関するデータを記憶している。注視点設定ステップは、記憶手段に記憶される第1物体の位置に関するデータに基づいて、注視点を設定する。画面生成ステップは、記憶手段の第1仮想カメラデータと第2仮想カメラデータと物体に関するデータに基づいて、第1クリッピングエリアに存在する第1物体を第1仮想カメラで描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する第2物体を描画して、当該画面を示す画像データを生成する。
【0020】
第5の発明では、記憶手段(74、76)は、少なくとも第1物体(90)および第2物体(92)に関するデータを記憶する。実施例では、第1物体はプレイヤキャラクタであり、第2物体はライバルキャラクタである。注視点設定ステップは、第1物体の位置に関するデータ(78)に基づいて注視点を設定する。画面生成ステップは、第1仮想カメラの第1クリッピングエリアに存在する第1物体を第1仮想カメラで描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する第2物体を描画する。したがって、第1物体が表示される画面に、第1仮想カメラの視野範囲外に存在する第2物体を表示され易くすることができる。
【0021】
第6の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータを記憶する記憶手段を備え、仮想3次元空間を描画した画像を表示手段に表示する画像処理装置である。この画像処理装置は、注視点設定手段、第1仮想カメラ設定手段、第2仮想カメラ設定手段、画面生成手段、および表示制御手段を備える。注視点設定手段は、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定手段は、記憶手段の少なくとも注視点データに基づいて仮想3次元空間に第1仮想カメラを設定して、第1仮想カメラの少なくとも位置を含む第1仮想カメラデータを記憶手段に記憶する。第2仮想カメラ設定手段は、記憶手段の少なくとも第1仮想カメラデータに基づいて、第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能な第2仮想カメラを設定し、第2仮想カメラの少なくとも位置を含む第2仮想カメラデータを記憶領域に記憶する。画面生成手段は、記憶手段の少なくとも物体に関するデータと第1仮想カメラデータと第2仮想カメラデータに基づいて、第1仮想カメラで第1クリッピングエリアを描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する物体を描画して、当該画面を示す画像データを生成する。表示制御手段は、生成された画面を示す画像データに基づいて画面を表示手段に表示する。
【0022】
第6の発明は、第1の発明の画像処理プログラムに対応する画像処理装置である。第6の発明でも、第1の発明と同様にして、物体を画面に表示され易くすることができる。
【0023】
第7の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置の画像処理プログラムである。この画像処理プログラムは、画像処理装置のプロセサに、注視点設定ステップ、第1仮想カメラ設定ステップ、第1クリッピングエリア設定ステップ、第2仮想カメラ設定ステップ、第1仮想カメラ座標変換ステップ、位置修正ステップ、画面生成ステップ、および表示制御ステップを実行させる。注視点設定ステップは、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定ステップは、記憶手段に記憶される仮想カメラ配置用データと注視点データを参照して、注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1クリッピングエリア設定ステップは、記憶手段に記憶される少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定ステップは、記憶手段に記憶される少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1仮想カメラ座標変換ステップは、記憶手段に記憶される少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体を第1仮想カメラ座標系での座標に変換することによって、当該物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。位置修正ステップは、記憶手段に記憶される仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリア外でありかつ第2仮想カメラで撮影可能な領域に存在する物体の座標を、第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して記憶手段に記憶する。画面生成ステップは、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと修正位置データと参照して、第1クリッピングエリアに存在する物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して記憶手段の描画バッファに記憶する。表示制御ステップは、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0024】
第7の発明は、第2の発明に対応する画像処理プログラムであり、より具体的に記述される。第7の発明では、記憶手段(48、28a)には、さらに仮想カメラ配置用データ(たとえば視野角データ)、クリッピングエリア設定用データ(後方クリッピング平面を示すデータ、前方クリッピング平面を示すデータ)等が記憶される。第1仮想カメラ設定ステップ(S3)は、仮想カメラ配置用データと注視点データを参照して、たとえば、注視点を向く所定の視野角の第1仮想カメラを設定し、第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段(80)に記憶する。第1クリッピングエリア設定ステップ(S5)は、少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定ステップ(S7)は、少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ所定の視野角で注視点を向くような第2仮想カメラを設定し、第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段(82)に記憶する。第1仮想カメラ座標変換ステップ(S9)は、少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、座標変換によって、当該物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。位置修正ステップ(S11)は、仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリア外でありかつ第2仮想カメラで撮影可能な領域に存在する物体の座標を、第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して記憶手段に記憶する。画面生成ステップ(S15−S21)は、少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと修正位置データと参照して、第1クリッピングエリアに存在する物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して記憶手段(48、56、58)の描画バッファに記憶する。表示制御ステップ(S23)は、描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0025】
第7の発明によれば、上述の第2の発明と同様に、物体が画面に表示され易い。また、物体を見易く表示することも可能である。
【0026】
第8の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置の画像処理プログラムである。この画像処理プログラムは、画像処理装置のプロセサに、注視点設定ステップ、第1仮想カメラ設定ステップ、第1クリッピングエリア設定ステップ、第2仮想カメラ設定ステップ、第2クリッピングエリア設定ステップ、第1仮想カメラ座標変換ステップ、第1画像生成ステップ、第2仮想カメラ座標変換ステップ、第2画像生成ステップ、および表示制御ステップを実行させる。注視点設定ステップは、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定ステップは、記憶手段に記憶される仮想カメラ配置用データと注視点データを参照して、注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1クリッピングエリア設定ステップは、記憶手段に記憶される少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定ステップは、記憶手段に記憶される少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第2クリッピングエリア設定ステップは、記憶手段に記憶される少なくともクリッピングエリア設定用データと第2仮想カメラの位置を示すデータを参照して、第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第1仮想カメラ座標変換ステップは、記憶手段に記憶される少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第1物体を第1仮想カメラ座標系での座標に変換することによって、当該第1物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第1画像生成ステップは、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリアに存在する第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して記憶手段の描画バッファに記憶する。第2仮想カメラ座標変換ステップは、記憶手段に記憶される少なくとも第2仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第2物体を第2仮想カメラ座標系での座標に変換することによって、当該第2物体の第2仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第2画像生成ステップは、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、第2クリッピングエリアに存在する第2物体を拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、画面における当該第2物体を示す画像データを生成して記憶手段の描画バッファに記憶する。表示制御ステップは、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0027】
第8の発明は、第4の発明に対応する画像処理プログラムであり、より具体的に記述される。第8の発明では、記憶手段(48、28a)には、さらに仮想カメラ配置用データ(たとえば視野角データ)と、クリッピングエリア設定用データ(後方クリッピング平面を示すデータ、前方クリッピング平面を示すデータ)等が記憶される。第1仮想カメラ設定ステップ(S3)は、仮想カメラ配置用データと注視点データを参照して、たとえば所定の視野角で注視点を向くような第1仮想カメラを設定して、第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段(80)に記憶する。第1クリッピングエリア設定ステップ(S5)は、少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定ステップ(S7)は、少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ所定の視野角で注視点を向くような第2仮想カメラを設定し、第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段(82)に記憶する。第2クリッピングエリア設定ステップ(S105)は、少なくともクリッピングエリア設定用データと第2仮想カメラの位置を示すデータを参照して、第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段(82)に記憶する。第1仮想カメラ座標変換ステップ(S101)は、少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第1物体(90)を座標変換することによって、当該第1物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第1画像生成ステップ(S103、S17、S19)は、少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリアに存在する第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して記憶手段(56、58、48)の描画バッファに記憶する。第2仮想カメラ座標変換ステップ(S107)は、少なくとも第2仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第2物体(92)を座標変換することによって、当該第2物体の第2仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第2画像生成ステップ(S109、S113、S21)は、少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、第2クリッピングエリアに存在する第2物体の大きさを拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、画面における当該第2物体を示す画像データを生成して記憶手段の描画バッファに記憶する。表示制御ステップ(S23)は、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0028】
第8の発明によれば、上述の第4の発明と同様に、仮想3次元空間に存在する物体を画面に表示され易くすることができる。しかも、物体の見た目の大きさの整合性をとることができるので、物体を見易く表示できる。
【0029】
第9の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置である。この画像処理装置は、注視点設定手段、第1仮想カメラ設定手段、第1クリッピングエリア設定手段、第2仮想カメラ設定手段、第1仮想カメラ座標変換手段、位置修正手段、画面生成手段、および表示制御手段を備える。注視点設定手段は、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定手段は、記憶手段に記憶される仮想カメラ配置用データと注視点データを参照して、注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1クリッピングエリア設定手段は、記憶手段に記憶される少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定手段は、記憶手段に記憶される少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1仮想カメラ座標変換手段は、記憶手段に記憶される少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体を第1仮想カメラ座標系での座標に変換することによって、当該物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。位置修正手段は、記憶手段に記憶される仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリア外でありかつ第2仮想カメラで撮影可能な領域に存在する物体の座標を、第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して記憶手段に記憶する。画面生成手段は、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと修正位置データと参照して、第1クリッピングエリアに存在する物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して記憶手段の描画バッファに記憶する。表示制御手段は、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0030】
第9の発明は、上述の第7の発明の画像処理プログラムに対応する画像処理装置である。第9の発明でも、第7の発明と同様に、物体を画面に表示され易くすることができ、物体を見易く表示することも可能である。
【0031】
第10の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置である。この画像処理装置は、注視点設定手段、第1仮想カメラ設定手段、第1クリッピングエリア設定手段、第2仮想カメラ設定手段、第2クリッピングエリア設定手段、第1仮想カメラ座標変換手段、第1画像生成手段、第2仮想カメラ座標変換手段、第2画像生成手段、および表示制御手段を備える。注視点設定手段は、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定手段は、記憶手段に記憶される仮想カメラ配置用データと注視点データを参照して、注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1クリッピングエリア設定手段は、記憶手段に記憶される少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定手段は、記憶手段に記憶される少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第2クリッピングエリア設定手段は、記憶手段に記憶される少なくともクリッピングエリア設定用データと第2仮想カメラの位置を示すデータを参照して、第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第1仮想カメラ座標変換手段は、記憶手段に記憶される少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第1物体を第1仮想カメラ座標系での座標に変換することによって、当該第1物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第1画像生成手段は、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリアに存在する第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して記憶手段の描画バッファに記憶する。第2仮想カメラ座標変換手段は、記憶手段に記憶される少なくとも第2仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第2物体を第2仮想カメラ座標系での座標に変換することによって、当該第2物体の第2仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第2画像生成手段は、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、第2クリッピングエリアに存在する第2物体を拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、画面における当該第2物体を示す画像データを生成して記憶手段の描画バッファに記憶する。表示制御手段は、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0032】
第10の発明は、上述の第8の発明の画像処理プログラムに対応する画像処理装置である。第10の発明でも、第8の発明と同様に、物体を画面に表示され易くすることができる。しかも、物体を見易く表示できる。
【発明の効果】
【0033】
この発明によれば、第1仮想カメラの第1クリッピングエリア外に存在する物体を、第2仮想カメラに基づいて、第1仮想カメラで描画する画面に合わせて描画することができる。したがって、仮想3次元空間に存在する物体を画面に表示され易くすることができる。
【0034】
たとえば、第1クリッピングエリアの周囲に存在する物体を第2仮想カメラに基づいて位置修正することによって第1仮想カメラの視野範囲内に取り込んで、第1クリッピングエリアを第1仮想カメラから見て描画するので、物体が画面に表示され易い。しかも、見た目の大きさの整合性をとることが可能なので、物体を見易く表示できる。
【0035】
また、第1仮想カメラに基づいて描画した第1クリッピングエリアの画像と、第1クリッピングエリア外の物体を第2仮想カメラに基づいて描画した画像とを合成することによって画面を生成するので、物体を画面に表示され易くすることができる。しかも、第2クリッピングエリアの物体を拡大してから描画するので、見た目の大きさの整合性とることができ、画面において物体を見易く表示できる。
【0036】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0037】
図1を参照して、この発明の一実施例である画像処理装置10はコンピュータであり、一例としてゲーム装置10の形態で実現される。ゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0038】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0039】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bの平面形状も横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0040】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0041】
操作スイッチ20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面において、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面において、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり上側ハウジング16aとの連結部以外の部分において、当該連結部を挟むようにして左右に配置される。
【0042】
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、プレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等のために用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止したりする等のために用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等のために用いられる。
【0043】
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプする等の任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0044】
動作スイッチ20L(Lボタン)および動作スイッチ20R(Rボタン)は、プッシュボタンで構成され、Lボタン20LおよびRボタン20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0045】
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等によって操作された(すなわちタッチされた)位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。つまり、このタッチパネル22がこの実施例の入力手段として機能し、LCD14(またはLCD12)の画面上の位置を指示するための入力データをユーザ(プレイヤ)が入力するためのものである。
【0046】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出精度(操作面)も表示画面に対応して256dot×192dotとしてある。ただし、図1では、タッチパネル22を分かり易く示すために、タッチパネル22をLCD14と異なる大きさで示してあるが、LCD14の表示画面の大きさとタッチパネル22の操作面の大きさとは同じ大きさである。なお、タッチパネル22の検出精度は、表示画面の解像度よりも低くてもよく、高くてもよい。
【0047】
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(穴ないし凹部)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
【0048】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは底面(下端)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0049】
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置でありこの下側ハウジング16bの内部には、スピーカ32(図2参照)が設けられる。
【0050】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなども設けられる。
【0051】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるとともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインタフェイス回路(以下、「I/F回路」という。)54およびLCDコントローラ60に接続される。
【0052】
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0053】
ROM28aは、ゲーム装置10をこの発明にかかる画像処理装置として機能させるための画像処理プログラムを予め記憶する。ゲーム(仮想ゲーム)が実行される場合、画像処理プログラムはゲームプログラムでもある。また、画像(キャラクタ画像、背景画像、アイテム画像、メッセージ画像など)データおよび必要な音(音楽)のデータ(音データ)等も予め記憶される。RAM(バックアップRAM)28bは、その画像処理やゲームの途中データおよび結果データを記憶(セーブ)する。
【0054】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶された画像処理プログラム(ゲームプログラム)、画像データおよび音データ等をRAM48にロードし、ロードした画像処理プログラムを実行する。また、CPUコア42は、画像処理プログラムに従って、ゲームの進行に応じて一時的に発生(生成)するデータ(ゲームデータやフラグデータ等)をRAM48のワークエリアや所定領域に記憶しつつ、画像処理(ゲーム処理)を実行する。
【0055】
なお、画像処理プログラム(ゲームプログラム)、画像データおよび音データ等のデータは、ROM28aから一度に全部または必要に応じて部分的にかつ順次的に読み出され、RAM48に記憶(ロード)される。
【0056】
ただし、メモリカード28のROM28aには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶されてよい。また、必要に応じて、音(音楽)データが記憶されてもよい。かかる場合には、ゲーム装置10では、当該アプリケーションが実行される。
【0057】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従って、表示するための画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、表示するための画像データの生成に必要な画像生成プログラム(画像処理プログラム(ゲームプログラム)に含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0058】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:オブジェクトデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。ただし、CPUコア42は、描画に必要な画像データをRAM48から読み出し、GPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして表示するための画像データを作成し、その画像データをVRAM56の描画バッファ(フレームバッファ)に記憶し、GPU52はVRAM58にアクセスして表示するための画像データを作成し、VRAM58の描画バッファに記憶する。描画バッファとしては、ラインバッファを採用してもよい。また、VRAM56および58には、フレームバッファの画像データの各画素の奥行き情報または奥行データ(Z値)を記憶するZバッファが設けられており、GPU50およびGPU52は画像データを作成する際に各画素の奥行き情報をZバッファの各画素に対応する領域に記憶する。なお、Zバッファの各画素に対応する領域には、初期値としてたとえば無限大を示すデータが設定される。
【0059】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたフレームバッファの画像データをLCD12に出力し、GPU52によって作成されたフレームバッファの画像データをLCD14に出力する。一方、レジスタ62のデータ値が「1」である場合には、LCDコントローラ60は、GPU50によって作成された画像データをLCD14に出力し、GPU52によって作成された画像データをLCD12に出力する。
【0060】
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接画像データを読み出すことができるし、あるいはGPU50およびGPU52を介してVRAM56およびVRAM58から画像データを読み出すこともできる。
【0061】
また、VRAM56およびVRAM58はRAM48に設けられてもよいし、あるいはその描画バッファおよびZバッファがRAM48に設けられてもよい。
【0062】
I/F回路54には、操作スイッチ(操作キー)20,タッチパネル22およびスピーカ32が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号(操作データ)がI/F回路54を介してCPUコア42に入力される。また、タッチパネル22から出力される操作入力データ(座標データ)がI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などの必要な音データをRAM48から読み出し、I/F回路54を介してスピーカ32からその音を出力する。
【0063】
図3にはこのゲーム装置10のメモリマップの一例が示される。メモリマップはプログラム記憶領域70およびデータ記憶領域72を含む。プログラム記憶領域70およびデータ記憶領域72には画像処理装置10の動作に必要なプログラムおよびデータが記憶されている。なお、図3では、ROM28aおよびRAM48に記憶されるデータの一部が示されている。
【0064】
プログラム記憶領域70にはROM28aの画像処理プログラム(ゲームプログラム)が記憶される。この画像処理プログラムに従って画像処理装置10のCPUコア42は動作して、GPU50または52等を用いてデータ記憶領域72のデータに基づいて3次元仮想空間内に配置されたプレイヤオブジェクト、ライバルオブジェクトまたは背景オブジェクトなど座標変換してレンダリングすることによってこれらを含む画像データを生成し、その画像をLCD12または14に表示する。
【0065】
データ記憶領域72には、ROM28aのデータおよびCPUコア42によって生成または取得されたデータが記憶される。データ記憶領域72には、オブジェクトデータ領域74、テクスチャデータ領域76、位置データおよび向きデータ領域78、第1仮想カメラデータ領域80、第2仮想カメラデータ領域82、および注視点データ領域84等が設けられる。
【0066】
オブジェクトデータ領域74には、仮想3次元空間内に配置される仮想的な物体を示すオブジェクトデータが記憶される。たとえば、プレイヤキャラクタや複数のライバルキャラクタ等のゲームキャラクタのオブジェクトデータや、地表、地表の物体、空中の雲等のような背景オブジェクトのオブジェクトデータ等が記憶される。プレイヤキャラクタは、ゲーム装置10のプレイヤによって操作されるオブジェクトである。ライバルキャラクタは仮想ゲームにおいてプレイヤキャラクタと競争するオブジェクトであり、CPUコア42によって制御されるノンプレイヤオブジェクトである。なお、各オブジェクトはポリゴンによって形成されている。
【0067】
テクスチャデータ領域76には、上述のプレイヤキャラクタ、ライバルキャラクタ、背景オブジェクト等のそれぞれに貼り付け処理されるそれぞれのテクスチャデータが記憶される。
【0068】
位置データおよび向きデータ領域78には、上述のプレイヤキャラクタ、ライバルキャラクタ、背景オブジェクト等のオブジェクトの配置状態を示すデータが記憶され、具体的には、各オブジェクトが仮想3次元空間内において存在している位置の座標を示す位置データおよび向いている方向を示す向きデータが記憶される。位置データおよび向きデータは、少なくともワールド座標系での座標および向きを示すデータを含む。各オブジェクトの初期の位置および向きは所定の値が設定されている。また、プレイヤキャラクタの動作は操作スイッチ20またはタッチパネル22からの操作入力データに基づいて画像処理プログラムに従って制御されて、プレイヤキャラクタの位置データおよび向きデータはたとえば1表示フレームごとに更新される。また、ライバルキャラクタおよび背景オブジェクト等の動作は画像処理プログラムに従って制御され、ライバルキャラクタおよび背景オブジェクト等の位置データおよび向きデータもたとえば1表示フレームごとに更新される。なお、複数のライバルキャラクタおよび複数の背景オブジェクト等が存在する場合、それぞれの位置データおよび向きデータが記憶される。
【0069】
第1仮想カメラデータ領域80には、仮想3次元空間内のシーンを撮影しその画像を描画するための第1仮想カメラ(図4参照)に関するデータが記憶される。具体的には、第1仮想カメラの配置状態を示す位置データおよび視野角データ、第1仮想カメラで可視化する範囲(クリッピングエリア)を規定する後方(ファー)クリッピング平面を示すデータおよび前方(ニア)クリッピング平面を示すデータ等を含む、第1仮想カメラを配置または設定するために用いられるデータが記憶される。
【0070】
第1仮想カメラの位置データは、第1仮想カメラが仮想3次元空間内において存在している位置の座標(ワールド座標系)を示す。たとえば、第1仮想カメラは注視点またはプレイヤキャラクタ等から所定の距離だけ離れた位置に注視点を向くようにして配置される。また、第1仮想カメラは、所定の位置に固定されていてよいし、あるいは注視点またはプレイヤオブジェクト等の移動に応じて移動されてよい。移動される場合、第1仮想カメラの位置は、注視点またはプレイヤキャラクタ等の位置に応じて算出される。そして、第1仮想カメラの位置データ領域はたとえば1表示フレームごとに更新される。
【0071】
第1仮想カメラの視野角データは、第1仮想カメラの視野を規定するためのものであり、第1仮想カメラのピラミッド視野の頂点の角度2θ1を示す。この実施例では、画面は矩形状であるので、視野角θ1は、第1仮想カメラ座標系のX軸に平行な方向とY軸に平行な方向とで異なる2つの所定の値に設定される。この視野角θ1の各所定値はROM28aに予め記憶されている。また、視野角データは、予め定められた値に固定されていてもよいし、あるいは画像処理(ゲーム処理)の進行に応じて更新されてもよい。
【0072】
第1仮想カメラの後方クリッピング平面を示すデータと前方クリッピング平面を示すデータは、第1仮想カメラのクリッピングエリアを設定するために使用されるデータである。第1仮想カメラの後方クリッピング平面と前方クリッピング平面は、描画する部分を限定するものであり、第1仮想カメラから注視点に向かう方向にそれぞれの所定の距離だけ離れた位置に設定される。この後方クリッピング平面と前方クリッピング平面との間のクリッピングエリア(四角錐台の視野)に存在するオブジェクトのみが描画されることとなる。後方クリッピング平面を示すデータと前方クリッピング平面を示すデータは、たとえば仮想カメラからの距離または仮想カメラ座標系でのZ座標によって表されており、これらデータは予めROM28aに記憶されている。また、後方クリッピング平面を示すデータと前方クリッピング平面を示すデータとは、予め定められた値に固定されていてもよいし、画像処理(ゲーム処理)の進行に応じて更新されてもよい。
【0073】
第2仮想カメラデータ領域82には、仮想3次元空間内に存在する物体を画面に表示し易くするための第2仮想カメラ(図4参照)に関するデータが記憶される。具体的には、第2仮想カメラの配置状態を示す位置データおよび視野角データ、第2仮想カメラで可視化するクリッピングエリアを規定する後方クリッピング平面を示すデータおよび前方クリッピング平面を示すデータ等を含む、第2仮想カメラを配置または設定するために用いられるデータが記憶される。第2仮想カメラは、第1仮想カメラのクリッピングエリア内に含まれないがその周囲の部分に存在する物体を撮影(座標変換)するためのものでもある。また、第2仮想カメラは、特定のオブジェクトを座標変換するために使用されてよく、この実施例ではライバルキャラクタのために使用される。
【0074】
第2仮想カメラの位置データは、第2仮想カメラが仮想3次元空間内において存在している位置の座標(ワールド座標系)を示す。たとえば、第2仮想カメラは、第1仮想カメラのたとえば後方クリッピング平面を基準としてみた場合、第1仮想カメラと同じ側に存在し、かつ、第1仮想カメラよりもその平面から離れている。また、第2仮想カメラは、第1仮想カメラから所定の距離だけ離れた位置に注視点を向くようにして配置される。この第2仮想カメラは、注視点と第1仮想カメラとを結びかつ注視点から第1仮想カメラの方向へ延びる延長線上に配置されてよい。したがって、第2仮想カメラは、第1仮想カメラの移動(すなわち注視点またはプレイヤキャラクタ等の移動)に応じて移動されてよい。移動される場合、第2仮想カメラの位置は、第1仮想カメラの位置(あるいは注視点もしくはプレイヤキャラクタ等の位置)に応じて算出される。そして、第2仮想カメラの位置データ領域はたとえば1表示フレームごとに更新される。
【0075】
第2仮想カメラの視野角データは、第2仮想カメラの視野を規定するためのものであり、第2仮想カメラのピラミッド視野の頂点の角度2θ2を示す。第2仮想カメラは、第1仮想カメラのクリッピングエリアの周囲の領域(視野範囲内には含まれない。)に存在する物体を撮影するためのものであるので、第2仮想カメラの視野角は、第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部が第2仮想カメラで撮影可能な視野範囲内に含まれるような所定の値に設定されている。上述のように、この実施例の画面は矩形状であるので、視野角θ2も、第2仮想カメラ座標系のX軸に平行な方向とY軸に平行な方向とで異なる2つの所定の値に設定される。この視野角θ2の各所定値はROM28aに予め記憶されている。また、この視野角データは、予め定められた値に固定されていてもよいし、画像処理(ゲーム処理)の進行に応じて更新されてもよい。
【0076】
第2仮想カメラの後方クリッピング平面を示すデータと前方クリッピング平面を示すデータは、第2仮想カメラのクリッピングエリアを設定するために使用されるデータである。第2仮想カメラの後方クリッピング平面と前方クリッピング平面は、第2仮想カメラから注視点に向かう方向にそれぞれの所定の距離だけ離れた位置に設定される。これら後方クリッピング平面を示すデータと前方クリッピング平面を示すデータは、予めROM28aに記憶されている。また、後方クリッピング平面を示すデータと前方クリッピング平面を示すデータとは、予め定められた値に固定されていてもよいし、画像処理(ゲーム処理)の進行に応じて更新されてもよい。
【0077】
第2仮想カメラの後方クリッピング平面および前方クリッピング平面は、第1仮想カメラのそれらとは関係なく任意に設定されてよいが、描画する範囲の整合性をとることが望ましい。たとえば、第1仮想カメラおよび第2仮想カメラの後方クリッピング平面は同じ位置に設定するのが望ましい。この場合には、第1仮想カメラと第2仮想カメラとで奥行き方向の同じ位置までの領域に存在する物体を描画することができる。また、同様に、前方クリッピング平面も第1仮想カメラおよび第2仮想カメラで同じ位置に設定するのが望ましい。この場合にも、両仮想カメラで奥行き方向の同じ位置からの領域に存在している物体を描画することができる。さらに、両仮想カメラで前方クリッピング平面および後方クリッピング平面の両方を同じ位置に設定した場合には、両仮想カメラで奥行き方向の同じ範囲に存在する物体を描画することができる。さらにまた、第2仮想カメラの視野角2θ2を第1仮想カメラの視野角2θ1よりも狭い値に適宜に設定することによって、両仮想カメラでその位置およびサイズが同一の後方クリッピング平面を設定する場合には、描画する部分の後方を両仮想カメラで同じにすることができる。
【0078】
注視点データ領域84には、第1仮想カメラおよび第2仮想カメラの注視点の位置の座標(ワールド座標系)を示すデータが記憶される。注視点は、第1仮想カメラと第2仮想カメラとで整合性をとるために同一に設定されるのが望ましい。注視点の位置は、仮想3次元空間の所定の位置に設定されてもよく、この場合には仮想3次元空間の所定位置のシーンが画像として描画される。また、注視点の位置は、物体の位置に基づいて設定されてもよい。たとえばプレイヤキャラクタの登場するゲームの場合には、注視点の位置はプレイヤキャラクタの位置に基づいて算出されてよい。たとえば、注視点の位置は、プレイヤキャラクタの中心もしくは重心位置または近傍の位置などに設定されてよい。このような場合にはプレイヤキャラクタを含むシーンが画像として描画される。注視点位置が、プレイヤキャラクタの移動またはプログラムに従って移動されるような場合には、注視点データ領域84はたとえば1表示フレームごとに更新される。
【0079】
なお、データ記憶領域72には他の必要なデータも記憶されている。たとえば第1仮想カメラおよび第2仮想カメラの仮想スクリーン(2次元投影平面)を示すデータ等も記憶されている。
【0080】
この画像処理装置10では、仮想3次元空間に同時に2つの視点が設定され、各視点から見たシーンが組み合わせられることによって1つの画像が生成される。
【0081】
具体的には、図4に示すように、第1仮想カメラと第2仮想カメラの2つの視点がワールド座標系に設けられる。この図4では、図示しない注視点は、たとえばプレイヤキャラクタ90を画面にとらえるようにプレイヤキャラクタ90の位置に基づいて設定される。第1仮想カメラと第2仮想カメラはこの注視点を向くようにして、たとえば注視点から所定の距離だけそれぞれ離れた位置に配置される。また、第1仮想カメラはプレイヤキャラクタ90が当該第1仮想カメラの第1クリッピングエリア内に存在するように配置される。また、第1仮想カメラの第1後方クリッピング平面と第2仮想カメラの第2後方クリッピング平面とは同一面に設定されている。なお、第1仮想カメラの第1前方クリッピング平面と第2仮想カメラの第2前方クリッピング平面とは異なる位置に設定されている。
【0082】
また、図4では、ライバルキャラクタ92は、第1仮想カメラから奥行き方向にプレイヤキャラクタ90と同じ程度の距離だけ離れた位置に存在している。また、図4では省略されるが、仮想3次元空間には背景オブジェクトも配置されている。視野範囲は、図4からわかるように、仮想カメラに近くなるにつれて狭くなるので、仮想カメラに近い位置に存在する物体は視野に入り難い。従来技術のようにそのまま1つの視点から見た画像を描画する(たとえば第1仮想カメラから撮影した画像を生成する)場合、このライバルキャラクタ92は、第1クリッピングエリアの近傍(側面の周囲の領域)、すなわち、視野範囲外に存在しているので、画面には入らない。
【0083】
しかし、この画像処理装置10では、図4のライバルキャラクタ92のような第1仮想カメラの第1クリッピングエリアに隣接する周辺領域に存在している物体を、第1仮想カメラの第1クリッピングエリアに存在する他の物体とともに1つの画像に描画する。このために、この画像処理装置10では、第2仮想カメラが、その第2クリッピングエリアに第1仮想カメラの第1クリッピングエリアの周囲の領域の一部が含まれるようにして設けられている。そして、第1仮想カメラの第1クリッピングエリア内に存在する他の物体を描画する画面に合わせて、第2仮想カメラの視野範囲内に存在する物体を描画する。このように、仮想3次元空間内の物体を画面に表示され易くすることができる。
【0084】
第2仮想カメラの視野範囲内に存在する全ての種類の物体を画面内に取り込むようにしてもよいが、この実施例では、特定の種類または属性の物体だけが第2仮想カメラに基づいて画面内に取り込まれるように処理される。つまり、この実施例では、ライバルキャラクタ92のみが第2仮想カメラに基づいて処理され、他の物体(プレイヤキャラクタ、背景オブジェクト)は第1仮想カメラのみに基づいて処理される。言い換えれば、この画像処理装置10では、物体ごとに2種類(第1仮想カメラと第2仮想カメラ)の座標変換が使い分けられていて、各座標変換を基に描画した各物体が同じ1つの画面に合わせられて表示される。なお、物体の種類または属性等で区別せずに、ある物体だけを第2仮想カメラに基づいて画面内に表示するようにしてもよい。
【0085】
具体的には、この実施例では、ライバルキャラクタ92の位置が第2仮想カメラに基づく座標変換によって修正される。これによって、第2仮想カメラの視野範囲内に存在するライバルキャラクタ92の位置が、第1仮想カメラの視野範囲内に変換される。
【0086】
図5には、第2仮想カメラに基づくライバルキャラクタ92の位置修正の概要が示される。この位置修正は、ライバルキャラクタ92の座標を第1仮想カメラ座標系のX軸方向およびY軸方向に縮小する座標変換である。なお、Z座標は位置修正前後で同一であり、つまり、修正されない。
【0087】
なお、この図5は、第1仮想カメラ座標系のXZ平面に垂直な方向(Y軸方向)から見た図である。第1仮想カメラと第2仮想カメラは後方クリッピング平面を共有している、つまり、両者の後方クリッピング平面は同一面である。また、第1仮想カメラと第2仮想カメラと図示しない注視点は、後方クリッピング平面に直交する同一垂線上に配置されている。つまり、この垂線は第1仮想カメラおよび第2仮想カメラから注視点への視線に相当し、したがって、各仮想カメラ座標系のZ軸に相当する。また、第1仮想カメラおよび第2仮想カメラの仮想スクリーン(図示せず)は、上記視線に直交するように、つまり、後方クリッピング平面に平行に設定される。
【0088】
この実施例の位置修正は、第2仮想カメラの視野角を示す線(図5の太い実線)の内側の空間を、第1仮想カメラの視野内に収まるように圧縮するものと見ることができる。この変換によって、ライバルキャラクタ92の第1カメラ座標系でのX座標(およびY座標)が、X軸方向(およびY軸方向)に縮小される。
【0089】
なお、ライバルキャラクタ92の位置は、第1仮想カメラの視野内にもともと存在しているライバルキャラクタ92であっても、この変換によって修正される。
【0090】
ライバルキャラクタ92の第1仮想カメラ座標系での位置修正前の座標を(xa,ya,za)とし、位置修正後の座標を(xa´,ya´,za)とする。また、図5において、θ1は第1仮想カメラの視野角の半角であり、θ2は第2仮想カメラの視野角の半角である。また、hcは第1仮想カメラの第1後方クリッピング平面との距離(高さ)である。ライバルキャラクタ92の第1仮想カメラ座標系での位置修正後のX座標xa´は次の数1に従って算出され、Y座標ya´は次の数2に従って算出される。
【0091】
[数1]
xa´=f(za)×xa
[数2]
ya´=f(za)×ya
上記数1および数2においてf(z)は座標の縮小率を示し、次の数3に従って算出される。
【0092】
[数3]
f(z)=z×tanθ1/{hc×tanθ1−(hc−z)×tanθ2}
なお、上述のように、画面が矩形状の場合には視野角θ1およびθ2は、仮想カメラ座標系のX軸方向とY軸方向とで異なるものとなるので、X座標の算出の場合にはX軸方向のθ1およびθ2を用いてf(z)を算出し、Y座標の算出の場合にはY軸方向のθ1およびθ2を用いてf(z)を算出する。
【0093】
この縮小率f(z)は、図5および数3からわかるように、第1仮想カメラと第2仮想カメラの配置関係に基づいて定められており、第1仮想カメラの視野角の半角θ1、第2仮想カメラの視野角の半角θ2、第1仮想カメラと第2仮想カメラで共通する後方クリッピング平面から第1仮想カメラまでの距離hc、および修正しようとする位置のz座標によって求められる。この数3のf(z)の値はz座標の値に応じて変化する。具体的には、この縮小変換は、物体の位置が第1仮想カメラに近づくにつれて縮小率の値が小さくなるような変換である。すなわち、数3では、z座標の値が小さいほど縮小率f(z)の値は小さくなる。したがって、z座標が小さくなるにつれて、物体の第1カメラ座標系でのx座標およびy座標はより小さい値に変換されて、より縮小される。
【0094】
この位置修正後、第1仮想カメラに基づいて、第1仮想カメラの第1クリッピングエリア(可視化領域)内に存在する物体が、位置修正によって第1クリッピングエリア内に存在することとなったライバルキャラクタ92とともに描画される。たとえば、この実施例では、第1仮想カメラ座標系で第1クリッピングエリアに存在する各物体は2次元投影平面(仮想スクリーン)に透視投影変換される。そして、Zバッファ法等によって隠面消去処理を行うとともに、テクスチャマッピングによって各物体等にテクスチャを貼り付けて、画面の画像データを生成する。
【0095】
こうして、第1仮想カメラの第1クリッピングエリア内の物体と第1仮想カメラの第1クリッピングエリアの周囲の領域に存在していたライバルキャラクタ92とが1つの画面で表示される。図4に示したように、第1仮想カメラの第1クリッピングエリア内にプレイヤキャラクタ90が存在し、第1仮想カメラの第1クリッピングエリアの周辺でありかつ第2仮想カメラの視野範囲内にライバルキャラクタ92が存在する場合には、図6に示すような画面が表示される。この図6の画面では、第1仮想カメラの第1クリッピングエリア内に存在しているプレイヤキャラクタ90とともに、第1仮想カメラの視野範囲外に存在しているライバルキャラクタ92が、修正後の位置に描画されている。
【0096】
また、ライバルキャラクタ92は、視線と垂直な面(第1仮想カメラ座標系のXY軸に平行な面)の中での位置修正後に第1仮想カメラに基づいて描画されるので、ライバルキャラクタ92の見た目の大きさは、第1仮想カメラからの距離(第1仮想カメラ座標系のz軸方向の距離)によって決まるようになっている。したがって、第2仮想カメラに基づいて位置修正されたライバルキャラクタ92の大きさは、仮想3次元空間における実際の物体間の位置関係と整合するものとなっている。したがって、第1仮想カメラよりも遠くに位置している第2仮想カメラに基づいて位置修正されたライバルキャラクタ92が小さくなり過ぎるようなことがなく、ライバルキャラクタ92を見易く表示することができる。
【0097】
たとえば仮想3次元空間が地面ないし地表とその上の空中領域を含むような場合を想定すると、一例として、図4および図5で示した共通の後方クリッピング平面は地表面に設定され、第1仮想カメラは空中に配置され、第2仮想カメラは第1仮想カメラよりも高い場所に配置されていると考えることができる。そして、プレイヤキャラクタ90は空中のある高さに存在し、第1仮想カメラの第1クリッピングエリア内にある。一方、ライバルキャラクタ92はプレイヤキャラクタ90とほぼ同じ高さに存在する。上述のように、視野範囲は仮想カメラに近いほど狭くなるものであり、ライバルキャラクタ92は第1仮想カメラの第1クリッピングエリアの周辺(視野範囲外)に存在している。しかし、このライバルキャラクタ92は第2仮想カメラの視野範囲内であるため、位置修正処理によって第1仮想カメラの視野範囲内にそのX座標およびY座標が修正される。したがって、プレイヤキャラクタ90と同じような高さで第1仮想カメラの第1クリッピングエリアの周辺に存在するライバルキャラクタ92も、図6に示したように、画面内に表示することができる。しかも、上述のように位置修正処理ではZ座標が同一に維持されて、第1仮想カメラからの高さ関係がそのまま維持される。したがって、ライバルキャラクタ92の画面における見た目の大きさの整合性をとることができ、ライバルキャラクタ92を見易く表示することができる。
【0098】
図7および図8には、この実施例の画像処理装置10の動作の一例が示される。図7の最初のステップS1で、CPUコア42は、RAM48のオブジェクトデータ領域74、ならびに位置データおよび向きデータ領域78からプレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクト等の各オブジェクトデータならびに初期の位置データおよび向きデータをRAM48のワークエリアに読み出して、プレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクト等の各オブジェクトを仮想3次元空間であるワールド座標系の各座標に配置し、各オブジェクトの配置状態を示すデータをワークエリアに生成する。
【0099】
次に、ステップS3で、CPUコア42は、注視点と第1仮想カメラとをワールド座標系の座標に配置する。具体的には、CPUコア42は、たとえば、RAM48の位置データおよび向きデータ領域78からプレイヤキャラクタの位置データをワークエリアに読み出して、そのプレイヤキャラクタの位置データに基づいて注視点の座標を決定して、その注視点の座標を注視点データ領域84に記憶する。なお、注視点の位置は、プレイヤキャラクタの以外のオブジェクトの位置に基づいて設定されてもよいし、仮想3次元空間内の予め定められた位置に設定されてもよい。そして、CPUコア42は、その注視点データと第1仮想カメラデータ領域80の視野角データ(2θ1)等に基づいて第1仮想カメラの座標を算出し、算出した第1仮想カメラの座標を第1仮想カメラデータ領域80に位置データとして記憶する。そして、CPUコア42は、注視点データおよび第1仮想カメラの位置データに基づいて、注視点と、当該注視点を向きかつ視野角2θ1の第1仮想カメラとをワールド座標系の各座標に配置する。
【0100】
続いて、ステップS5で、CPUコア42は、第1仮想カメラデータ領域80の後方クリッピング平面を示すデータをワークエリアに読み出して、第1仮想カメラから注視点方向に距離hcだけ離れた位置に第1仮想カメラの(第1)後方クリッピング平面を設定し、当該後方クリッピング平面を示すデータをワークエリアに生成する。また、このステップS5では、同様にして、第1仮想カメラの第1前方クリッピング平面も設定される。
【0101】
ステップS7では、CPUコア42は、第2仮想カメラをワールド座標系の座標に配置する。具体的には、CPUコア42は、注視点データ領域84の注視点データ、第1仮想カメラデータ領域80の位置データ、第2仮想カメラデータ領域82の視野角データ(2θ2)に基づいて、注視点と第1仮想カメラを結びかつ注視点から第1仮想カメラへ延びる延長線上において注視点を向きかつ視野角が2θ2となるような第2仮想カメラの座標を算出し、算出した第2仮想カメラの座標を位置データとして第2仮想カメラデータ領域82に記憶する。そして、CPUコア42は、第2仮想カメラの位置データに基づいて、注視点を向きかつ視野角2θ2の第2仮想カメラをワールド座標系の座標に配置する。なお、この実施例では、第2仮想カメラの視野角2θ2は、第1仮想カメラの後方クリッピング平面と第2仮想カメラの後方クリッピング平面とが同一となるような値に予め設定されている。
【0102】
ステップS9では、CPUコア42は、物体の座標を第1仮想カメラ座標系の座標に変換する。具体的には、CPUコア42は、ワールド座標系に配置したプレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクト等の各オブジェクトを、第1仮想カメラデータ領域80のデータに基づいて、第1仮想カメラ座標系の座標に変換して、第1仮想カメラ座標系での各オブジェクトの座標データをRAM48のワークエリアに生成する。第1仮想カメラ座標系は、図5に示すように、第1仮想カメラの位置を原点とし、注視点方向をZ軸正方向としたXYZ座標系である。なお、座標変換処理は、CPUコア42の指令に従ってGPU50または52によって実行されてよい。
【0103】
ステップS11では、CPUコア42は、第2仮想カメラに基づくライバルキャラクタの位置修正処理を実行する。具合的には、CPUコア42は、第1仮想カメラ座標系に変換されたライバルキャラクタのX座標およびY座標を、上述の数1および数2に従って修正(縮小変換)して、その修正後の第1仮想カメラ座標系での座標データをワークエリアに生成する。
【0104】
そして、ステップS13で、CPUコア42は仮想3次元空間に配置した全ライバルキャラクタの位置修正処理が終了したか否かを判断する。ステップS13で“NO”であれば、つまり、まだ位置修正処理をしていないライバルキャラクタが残っている場合には、処理はステップS11に戻る。
【0105】
一方、ステップS13で“YES”であれば、CPUコア42は、ステップS15で、物体を仮想スクリーンに投影変換する。具体的には、CPUコア42は、第1仮想カメラ座標系の第1クリッピングエリア内に存在するプレイヤキャラクタ、ライバルキャラクタ、および背景オブジェクト等の各オブジェクトを、第1仮想カメラデータおよび仮想スクリーンを示すデータ等に基づいて、透視投影変換によって2次元投影平面座標系の座標に変換して、2次元投影平面座標系での各オブジェクトの座標等を示すデータをたとえばRAM48のワークエリアに生成する。生成される各オブジェクトの座標データは2次元投影平面座標系のXY座標とともに奥行き情報(Z値)を含む。なお、この座標変換処理も、上述のように、CPUコア42の指令に従ってGPU50または52によって実行されてよい。このステップS15を終了すると、処理は次の図8のステップS17へ進む。
【0106】
図8のステップS17では、CPUコア42は背景オブジェクトの描画処理を実行する。この処理の動作は図9に詳細に示される。図9の最初のステップS41で、CPUコア42は、RAM48のテクスチャデータ領域76から、描画しようとする背景オブジェクトに対応するテクスチャデータを読み出して、そのテクスチャデータをGPU50または52を介してVRAM56または58に書き込む。
【0107】
次に、ステップS43で、CPUコア42は、投影平面座標系に投影された当該背景オブジェクトに相当する位置の描画バッファの各ピクセルのZバッファを参照する。たとえば、CPUコア42は、GPU50または52を用いて、VRAM56または58のZバッファから、当該背景オブジェクトに相当する位置の画素に対応するデータ(Z値)をRAM48のワークエリアに読み出す。
【0108】
そして、ステップS45で、CPUコア42は、読み出したZバッファのデータとステップS15で生成された奥行き情報とに基づいて、書込み対象のピクセルのZバッファ値が、書込みしようとする背景オブジェクトの奥行き情報より大きいか否かを判定する。
【0109】
ステップS45で“YES”であれば、つまり、書込みしようとする背景オブジェクトの方が当該ピクセルに既に書き込まれている物体よりも視点に近い場合、あるいは当該ピクセルのZ値が初期値である場合には、ステップS47で、CPUコア42は、GPU50または52を介して、VRAM56または58の書込み対象のピクセルに対応するZバッファに、背景オブジェクトの奥行き情報を格納する。つまり、当該ピクセルのZバッファ値が更新される。
【0110】
続いて、ステップS49で、CPUコア42は、GPU50または52を介して、VRAM56または58の描画バッファ(フレームバッファ)の当該ピクセルに、背景オブジェクトのテクスチャの色情報を書き込む。ステップS49を終了すると処理はステップS51へ進む。
【0111】
一方、ステップS45で“NO”であれば、つまり、書込みしようとする背景オブジェクトの方が既に書き込まれている物体よりも視点から遠い場合には、そのままステップS51へ進む。
【0112】
ステップS51では、CPUコア42は、当該背景オブジェクトに相当する位置の全ピクセルの描画処理が終了したか否かを判定し、“NO”であればステップS43へ戻って、残りのピクセルについてステップS43からの描画処理を実行する。ステップS51で“YES”であれば、CPUコア42はステップS53で、投影平面座標系に投影された全背景オブジェクトの描画処理が終了したか否かを判定し、“NO”であればステップS41へ戻って、残りの背景オブジェクトについての描画処理を実行する。ステップS53で“YES”であれば、この背景オブジェクトの描画処理を終了して、処理は図8のステップS19へ戻る。
【0113】
図8のステップS19では、CPUコア42は、プレイヤキャラクタの描画処理を実行する。この処理の動作は図10に詳細に示される。図10の最初のステップS61で、CPUコア42は、テクスチャデータ領域76からプレイヤキャラクタに対応するテクスチャデータを読み出して、そのテクスチャデータをGPU50または52を介してVRAM56または58に書き込む。
【0114】
次に、ステップS63で、CPUコア42は、上述のステップS43と同様にして、投影平面座標系に投影されたプレイヤキャラクタに相当する位置の描画バッファの各ピクセルのZバッファを参照する。
【0115】
そして、ステップS65で、CPUコア42は、参照したZバッファのデータとステップS15で生成された奥行き情報とに基づいて、書込み対象のピクセルのZバッファ値が、書込みしようとするプレイヤキャラクタの奥行き情報より大きいか否かを判定する。
【0116】
ステップS65で“YES”であれば、つまり、書込みしようとするプレイヤキャラクタの方が当該ピクセルに既に書き込まれている物体よりも視点に近い場合、あるいは当該ピクセルのZ値が初期値である場合には、ステップS67で、CPUコア42は、当該ピクセルのZバッファ値を更新する。つまり、上述のステップS47と同様にして、CPUコア42は、書込み対象のピクセルに対応するZバッファにプレイヤキャラクタの奥行き情報を格納する。
【0117】
続いて、ステップS69で、CPUコア42は、上述のステップS49と同様にして、GPU50または52を介して、VRAM56または58の描画バッファ(フレームバッファ)の当該ピクセルに、プレイヤキャラクタのテクスチャの色情報を書き込む。ステップS69を終了すると処理はステップS71へ進む。
【0118】
一方、ステップS65で“NO”であれば、つまり、書込みしようとするプレイヤキャラクタの方が既に書き込まれている物体よりも視点から遠い場合には、そのままステップS71へ進む。
【0119】
ステップS71では、CPUコア42は、プレイヤキャラクタに相当する位置の全ピクセルの描画処理が終了したか否かを判定し、“NO”であればステップS63へ戻って、残りのピクセルについて描画処理を実行する。一方、ステップS71で“YES”であれば、このプレイヤキャラクタの描画処理を終了して、処理は図8のステップS21へ戻る。
【0120】
図8のステップS21では、CPUコア42は、ライバルキャラクタの描画処理を実行する。この処理の動作は図11に詳細に示される。図11の最初のステップS81で、CPUコア42は、テクスチャデータ領域76から描画しようとするライバルキャラクタに対応するテクスチャデータを読み出して、そのテクスチャデータをGPU50または52を介してVRAM56または58に書き込む。
【0121】
次に、ステップS83で、CPUコア42は、上述のステップS43と同様にして、投影平面座標系に投影された当該ライバルキャラクタに相当する位置の描画バッファの各ピクセルのZバッファを参照する。
【0122】
そして、ステップS85で、CPUコア42は、参照したZバッファのデータとステップS15で生成された奥行き情報とに基づいて、書込み対象のピクセルのZバッファ値が、書込みしようとするライバルキャラクタの奥行き情報より大きいか否かを判定する。
【0123】
ステップS85で“YES”であれば、つまり、書込みしようとするライバルキャラクタの方が当該ピクセルに既に書き込まれている物体よりも視点に近い場合、あるいは当該ピクセルのZ値が初期値である場合には、ステップS87で、CPUコア42は、上述のステップS47と同様にして、当該ピクセルに対応するZバッファにライバルキャラクタの奥行き情報を上書きして、当該ピクセルのZバッファ値を更新する。
【0124】
続いて、ステップS89で、CPUコア42は、上述のステップS49と同様にして、描画バッファの当該ピクセルにライバルキャラクタのテクスチャの色情報を上書きする。ステップS89を終了すると処理はステップS51へ進む。
【0125】
一方、ステップS85で“NO”であれば、つまり、書込みしようとするライバルキャラクタの方が既に書き込まれている物体よりも視点から遠い場合には、そのままステップS91へ進む。
【0126】
ステップS91では、CPUコア42は、当該ライバルキャラクタに相当する位置の全ピクセルの描画処理が終了したか否かを判定し、“NO”であればステップS83へ戻って、残りのピクセルについてステップS83からの処理を実行する。一方、ステップS91で“YES”であれば、CPUコア42はステップS93で、投影平面座標系に投影された全ライバルキャラクタの描画処理が終了したか否かを判定し、“NO”であればステップS81へ戻って、残りのライバルキャラクタについての描画処理を実行する。ステップS93で“YES”であれば、このライバルキャラクタの描画処理を終了して、処理は図8のステップS23へ戻る。
【0127】
図8のステップS23では、CPUコア42は、描画された画面をLCD12またはLCD14に表示する。たとえば、CPUコア42は、LCDコントローラ60を用いて、VRAM56または58の描画バッファの画像データをLCD12または14に与えて、その画像をLCD12または14に表示する。
【0128】
続いて、ステップS25で、CPUコア42は、プレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクト等の各オブジェクトのワールド座標系での位置および向き等を更新する。具体的には、CPUコア42は、操作スイッチ20またはタッチパネル22から取得した操作入力データに基づいてプレイヤキャラクタの位置および向きを算出し、その算出した位置データおよび向きデータを、位置データおよび向きデータ領域78のプレイヤキャラクタに対応する領域に書き込む。また、CPUコア42は、ライバルキャラクタおよび背景オブジェクトの位置および向きを算出し、その位置データおよび向きデータを、位置データおよび向きデータ領域78のライバルキャラクタおよび背景オブジェクトに対応する領域にそれぞれ書き込む。
【0129】
そして、ステップS27で、CPUコア42は、画像処理(ゲーム処理)を終了するか否かを判断し、“NO”であれば図7のステップS3に戻って、画像の生成および表示のための処理を繰り返す。一方、ステップS27で“YES”であればこの処理を終了する。
【0130】
この実施例によれば、第1仮想カメラの第1クリッピングエリアの周囲に存在する物体(ライバルキャラクタ)を第2仮想カメラに基づいて位置修正することによって、第1仮想カメラの視野範囲内に取り込むようにした。したがって、仮想3次元空間内の物体を画面に表示され易くすることができる。しかも、位置修正した物体を第1仮想カメラから見て描画するので、画面における見た目の大きさに関して、仮想3次元空間内の位置関係との整合性をとることができる。したがって、物体を適正な大きさで表示できるので、プレイヤにとって見易く表示できる。
【0131】
たとえば視野の端の方に存在しているライバルキャラクタが第1仮想カメラ側に移動して第1仮想カメラの視野範囲外に出たとしても、第2仮想カメラの視野範囲内であれば、第2仮想カメラに基づいて、第1仮想カメラの視野範囲内に取り込むことができるので、その物体が急激に画面外へ消えるように見える現象を緩和することができる。また、第1仮想カメラの近くの視野外にそれまで存在していた物体が第1仮想カメラ側と反対方向に移動して第1仮想カメラの視野範囲内に入ってくるような場合にも、それまでの位置が第2仮想カメラの視野範囲内であれば第2仮想カメラに基づいて第1仮想カメラの視野範囲に取り込むことができるので、その物体が画面外から急激に現れるように見える現象も緩和することができる。したがって、たとえば視野の境界を移動するような物体であっても、画面に長い間表示しておくことが可能になり、プレイヤにとって見易い画面を表示することができる。さらに、位置修正では第1仮想カメラ座標系でのZ座標を変更しないので、十分な遠近感や立体感を維持することができる。たとえば、物体が第1仮想カメラに近いほど、その見た目の移動速度が速くなるという現象なども維持できる。
【0132】
また、第1仮想カメラの近くに存在する物体であっても画面に表示され易くなるので、たとえば第1仮想カメラがプレイヤキャラクタのみに注目するように配置される場合であっても、プレイヤキャラクタ以外の物体をプレイヤの目に触れ易くすることができる。したがって、プレイヤキャラクタと他の物体等を含めた3次元空間内の状況を把握され易くすることができる。たとえばプレイヤキャラクタとライバルキャラクタとが空間内を移動しながら競走するようなゲームでも、プレイヤキャラクタばかりでなくライバルキャラクタも一緒に表示されることが多くなるので、緊張感を高めたりスリルを大きくしたりすることができ、ゲームの楽しさを向上することができる。
【0133】
なお、上述の実施例では、図5に示したように、位置修正処理では、第2仮想カメラの視野角を示す線(太い実線)の内側の部分を第1仮想カメラの視野内に収まるように座標変換をしていた。たとえば第1仮想カメラの周辺に向けて物体が移動してくるような場合には、第1仮想カメラに近くなると、物体が第1仮想カメラにぶつかるような位置には実際には存在していないにもかかわらず、生成されるゲーム画面では、視点にぶつかってくるように見える現象が広い範囲で生じることとなる。そこで、図12に示す位置修正の変形例のように、第2仮想カメラの視野角を示す線の一部(第1カメラ座標系で、0<z≦zbの範囲)を、第1仮想カメラの位置で収束するような曲線とし、この線(図12で太い実線で示される。)の内側の領域が第1仮想カメラの視野内に収まるように座標変換を行うようにしてよい。つまり、第1クリッピングエリア外の位置修正の対象となる領域が、第1仮想カメラに近づくにつれて第1仮想カメラの位置に収束するようにして、その位置修正対象領域を減らしていくようにしてよい。
【0134】
具体的には、この変形例の位置修正処理では、縮小率f(z)は、0<z≦zbの場合には次の数4に従って算出される。なお、zb=hc×定数である。このzbを算出するための定数の値としては、0より大きく1より小さい範囲の所定の値が適宜に設定される。
【0135】
[数4]
f(z)=z×tanθ1/{(zb×tanθ2−xb)×z^2/zb^2−(tanθ2×zb−2×xb)×z/zb)}
ここで、xb=hc×tanθ1−(hc−zb)×tanθ2
また、zb<z≦hcの場合の縮小率f(z)は上記数3と同じである。
【0136】
この変形例でも、zの値に応じてf(z)の値が変化する。具体的には、数4による縮小変換は、物体の位置が第1仮想カメラに近づくにつれて縮小率f(z)の値が大きくなるような変換である。つまり、第1仮想カメラに近い領域(0<z≦zbの範囲)では、位置修正対象の物体(ライバルキャラクタ)の位置が第1仮想カメラに近いほど、縮小率f(z)の値を大きくすることができる。したがって、数4では、物体が第1仮想カメラに近づくにつれて、つまり、z座標の値が小さくなるにつれて、第1仮想カメラ座標系でのx座標値およびy座標値をあまり縮小されないようにすることができる。これによって、物体が第1仮想カメラに近づくにつれて、その修正後の物体の位置を第1仮想カメラから見た実際の物体の位置に徐々に近づけていくことができる。したがって、変形例の位置修正によれば、たとえば第1仮想カメラの周辺に向けて物体が移動してくるような場合には、その物体が第1仮想カメラにぶつかってくるように見える現象を抑制することができる。
【0137】
また、上述の実施例では、第2仮想カメラに基づいて特定の物体(ライバルキャラクタ)の位置を修正した後に、第1仮想カメラに基づいて仮想3次元空間のシーンを描画することによって、画面を生成するようにしていた。しかし、図13に示す他の実施例のように、第1仮想カメラに基づいて描画した画像と、第2仮想カメラに基づいて描画した特定の物体の画像とを合成することによって、画面を生成するようにしてもよい。この他の実施例によっても、上述の実施例と同様な効果を奏することができ、物体を画面に表示され易くすることができる。
【0138】
具体的には、この他の実施例では、第1仮想カメラおよび第2仮想カメラの2つの視点は上述の実施例と同様にして配置されている。図13に示すように、仮想3次元空間内のプレイヤキャラクタ90および背景オブジェクト(図示せず)は第1仮想カメラに基づいて描画され、ライバルキャラクタ92は第2仮想カメラに基づいて描画される。
【0139】
ただし、第2仮想カメラは、第1仮想カメラの第1クリッピングエリアの周囲の領域をその視野範囲にとらえるために、共通の後方クリッピング平面から第1仮想カメラよりも遠い位置に配置されているので、ライバルキャラクタ92を第2仮想カメラに基づいてそのまま描画すると、画面においてライバルキャラクタ92が小さくなり過ぎてしまう。そこで、この他の実施例では、描画前にライバルキャラクタ92の大きさを拡大する処理を実行する。これによって、仮想3次元空間内でのライバルキャラクタ92と他のオブジェクトとの位置関係に基づく遠近感の整合性をとることができるので、物体を見易く表示することができる。たとえば、第1仮想カメラと後方クリッピング平面との距離をh1cとし、第2仮想カメラと後方クリッピング平面との距離をh2cとすると、両者の比h2c/h1cによって与えられる拡大率に基づいて、ライバルキャラクタ92の大きさを拡大する。その後、拡大されたライバルキャラクタ92を第2仮想カメラに基づいて描画する。
【0140】
そして、第1仮想カメラに基づいて描画した画像に、第2仮想カメラに基づいて描画した画像を合成することによって、画面の画像を生成する。なお、第1仮想カメラの図示しない仮想スクリーンまたは第2仮想カメラの図示しない仮想スクリーンのサイズが表示画面サイズと異なる場合には、描画後にその仮想スクリーン画像のサイズを拡大または縮小処理によって表示画面サイズに一致させてから合成する。
【0141】
この他の実施例の動作が図14および図15のフロー図に示される。なお、図14および図15において上述の実施例と同様の処理を実行するステップには、同一の参照符号を付して、その詳細な説明を省略する。
【0142】
CPUコア42は、上述の実施例と同様にして、図14のステップS1で各オブジェクトをワールド座標系に配置し、ステップS3で注視点と第1仮想カメラを配置し、ステップS5で第1仮想カメラから距離h1cだけ離れた位置に第1後方クリッピング平面を設定する。
【0143】
ステップS101では、CPUコア42は、ライバルキャラクタ以外のオブジェクト(背景オブジェクトおよびプレイヤキャラクタ)を第1仮想カメラ座標系の座標に変換する。そして、ステップS103で、CPUコア42は、第1仮想カメラ座標系の背景オブジェクトおよびプレイヤキャラクタを2次元投影平面座標系の座標に透視投影変換する。なお、第1仮想カメラ座標系への変換処理は図7のステップS9と同様であり、2次元投影平面座標系への変換処理は図7のステップS15と同様である。
【0144】
続いて、CPUコア42は、ステップS17で背景オブジェクトの描画処理を実行し、ステップS19でプレイヤキャラクタの描画処理を実行する。
【0145】
このようにして、第1仮想カメラに基づいて、背景オブジェクトおよびプレイヤキャラクタが描画バッファに描画される。続いて、第2仮想カメラに基づいて、ライバルキャラクタが描画される。
【0146】
ステップS7で、CPUコア42は第2仮想カメラを配置する。そして、ステップS105で、CPUコア42は、第2仮想カメラから距離h2cだけ離れた位置に第2後方クリッピング平面を設定する。ただし、この他の実施例でも、図13に示すように第1後方クリッピング平面と第2後方クリッピング平面とは同じ面である。つまり、この図14のステップS7とステップS105とで、CPUコア42は、後方クリッピング平面から距離h2cの位置に、注視点を向き視野角2θ2の第2仮想カメラを配置する。
【0147】
続いて、図15のステップS107で、CPUコア42は、第2仮想カメラデータ等に基づいて、ライバルキャラクタを第2仮想カメラ座標系の座標に変換する。
【0148】
そして、ステップS109で、CPUコア42は、後方クリッピング平面からの第2仮想カメラおよび第1仮想カメラの距離比h2c/h1c(拡大率)に基づいて、ライバルキャラクタの大きさを拡大し、拡大したライバルキャラクタのデータをワークエリアに生成する。この拡大処理は、CPUコア42の指示に基づいてGPU50または52によってなされてよい。ステップS111では、CPUコア42は、全ライバルキャラクタの拡大処理が終了したか否かを判断し、“NO”であればステップS109へ戻って、残りのライバルキャラクタについて拡大処理を実行する。
【0149】
一方、ステップS111で“YES”であれば、CPUコア42は、ステップS113で、第2仮想カメラ座標系の第2クリッピングエリアに存在するライバルキャラクタを、第2仮想カメラデータおよび仮想スクリーンを示すデータ等に基づいて、第1仮想カメラの場合と同じ2次元投影平面座標系の座標に透視投影変換する。具体的には、第2仮想カメラの仮想スクリーンとして第1仮想カメラの仮想スクリーンと同じ平面を設定している場合には、ライバルキャラクタを当該仮想スクリーンの座標系に変換して、この座標系でのライバルキャラクタの座標データをたとえばRAM48のワークエリアに生成する。一方、第2仮想カメラの仮想スクリーンとして第1仮想カメラの仮想スクリーンと異なる平面を設定する場合には、ライバルキャラクタを第2仮想カメラの仮想スクリーンの座標系に変換する。そして、第2仮想カメラの仮想スクリーンが第1仮想カメラの仮想スクリーンと同一になるように、第2仮想カメラの仮想スクリーン座標系でのライバルキャラクタを拡大または縮小変換して、第1仮想カメラの場合と同一の投影平面座標系でのライバルキャラクタの座標データをたとえばRAM48のワークエリアに生成する。
【0150】
そして、CPUコア42は、ステップS21でライバルキャラクタの描画処理を実行して、ステップS23で描画された画面をLCD12または14に表示する。また、ステップS25で、CPUコア42は、プレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクトのワールド座標系での位置および向きを更新する。そして、ステップS27で画像処理を終了するか否かを判定し、“NO”であれば図14のステップS3に戻り、“YES”であればこの画像処理を終了する。
【図面の簡単な説明】
【0151】
【図1】この発明の一実施例の画像処理装置を示す外観図である。
【図2】図1実施例の電気的な構成を示すブロック図である。
【図3】図1実施例のメモリマップの一例を示す図解図である。
【図4】図1実施例における画像処理の概要を説明するための図解図である。
【図5】図1実施例における第2仮想カメラに基づく物体の位置修正の概要を説明するための図解図である。
【図6】表示される画面の一例を示す図解図である。
【図7】図1実施例の動作の一例の一部を示すフロー図である。
【図8】図7の続きを示すフロー図である。
【図9】図8の背景オブジェクトの描画処理の動作の一例を示すフロー図である。
【図10】図8のプレイヤキャラクタの描画処理の動作の一例を示すフロー図である。
【図11】図8のライバルキャラクタの描画処理の動作の一例を示すフロー図である。
【図12】第2仮想カメラに基づく物体の位置修正の変形例の概略を説明するための図解図である。
【図13】他の実施例の画像処理装置における画像処理の概略を説明するための図解図である。
【図14】他の実施例の画像処理装置の動作の一例の一部を示すフロー図である。
【図15】図14の続きを示すフロー図である。
【符号の説明】
【0152】
10 …画像処理装置
12,14…LCD
28a …ROM
42 …CPUコア
48 …RAM
50,52 …GPU
56,58 …VRAM
60 …LCDコントローラ
【技術分野】
【0001】
この発明は、画像処理プログラムおよび画像処理装置に関し、特にたとえば、仮想3次元空間に配置された仮想的な物体を仮想カメラで撮影した画像を表示手段に表示する、画像処理プログラムおよび画像処理装置に関する。
【背景技術】
【0002】
従来、仮想3次元空間を示す画像は1つの視点(仮想カメラ)から見た情報に基づいて生成されていた。たとえばプレイヤキャラクタが仮想3次元空間に登場するゲームにおいては、基本的にはプレイヤキャラクタが常に画面に表示されるように仮想カメラが設定される。この場合、仮想3次元空間内の他の物体(たとえばライバルキャラクタないし敵キャラクタ等)は、プレイヤキャラクタをとらえる視野内に存在するときに、画面に表示されることとなる。
【0003】
また、プレイヤキャラクタと敵キャラクタとが仮想3次元空間内に存在するゲームにおいて、プレイヤキャラクタと敵キャラクタとを同時に表示しようとする技術が存在している。たとえば、特許文献1には、シューティングゲームにおいてプレイヤキャラクタの位置から予め定めた距離範囲内に敵キャラクタが存在する場合には、敵キャラクタを追尾し、かつ、プレイヤキャラクタが視界に存在するように仮想カメラを設定し、その仮想カメラから見た視界画像を生成する技術が開示されている。この特許文献1の技術では、プレイヤキャラクタと敵キャラクタとが予め定めた距離内にいる場合には敵キャラクタが常に視界に入るようにして、プレイヤが敵キャラクタを見失うことを防止し、プレイヤがシューティング操作を楽しめるようにしている。
【特許文献1】特開2001−149643号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
上述のようなプレイヤキャラクタのみに注目した仮想カメラの場合には、たとえば視野の端の方に見えている敵キャラクタ等の物体が仮想カメラの存在する側に移動すると、その物体はすぐに視野外に出てしまって、急速に画面外に移動しているように見えることとなる。逆に、仮想カメラの近くの視野外に存在している物体が仮想カメラの存在する側と反対方向に移動すると、その物体は視野内に入り、画面外から唐突に現れるように見えることとなる。つまり、物体が急激に移動したような現象が生じ、プレイヤにとって見難い画像となってしまう。
【0005】
また、物体は仮想カメラから遠い位置に存在する場合には視野内に入り易いが、仮想カメラに近付くと視野に入り難くなってしまう。このように、プレイヤキャラクタのみに注目した場合には、プレイヤキャラクタ以外の物体が目に触れ難くなってしまい、他の物体等を含めた3次元空間内の状況を把握し難いという問題もある。たとえばプレイヤキャラクタとライバルキャラクタとが空間内を移動しながら競走するようなゲームでは、プレイヤキャラクタばかりが表示されると、緊張感やスリルが得難くなり、ゲームの楽しさを減らす要因となってしまう。
【0006】
一方、特許文献1のような技術では、常にプレイヤキャラクタと敵キャラクタの両方を視界にとらえるために、両者が離れている場合や複数の敵キャラクタが登場するような場合等には、仮想カメラがキャラクタから遠く離れた位置に設定されてしまう。したがって、キャラクタを離れた視点から見ることとなるので、プレイヤキャラクタと敵キャラクタの両方を表示することはできても、画面上ではキャラクタが小さくなり過ぎて見難くなってしまうという問題がある。
【0007】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラムおよび画像処理装置を提供することである。
【0008】
この発明の他の目的は、仮想3次元空間内の物体を画面に表示され易くすることができる、画像処理プログラムおよび画像処理装置を提供することである。
【0009】
この発明のその他の目的は、仮想3次元空間内の物体を画面に表示され易くすることができ、しかも見易く表示することができる、画像処理プログラムおよび画像処理装置を提供することである。
【課題を解決するための手段】
【0010】
第1の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータを記憶する記憶手段を備え、仮想3次元空間を描画した画像を表示手段に表示する画像処理装置の画像処理プログラムである。この画像処理プログラムは、画像処理装置のプロセサに、注視点設定ステップ、第1仮想カメラ設定ステップ、第2仮想カメラ設定ステップ、画面生成ステップ、および表示制御ステップを実行させる。注視点設定ステップは、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定ステップは、記憶手段の少なくとも注視点データに基づいて仮想3次元空間に第1仮想カメラを設定して、第1仮想カメラの少なくとも位置を含む第1仮想カメラデータを記憶手段に記憶する。第2仮想カメラ設定ステップは、記憶手段の少なくとも第1仮想カメラデータに基づいて、第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能な第2仮想カメラを設定し、第2仮想カメラの少なくとも位置を含む第2仮想カメラデータを記憶手段に記憶する。画面生成ステップは、記憶手段の少なくとも物体に関するデータと第1仮想カメラデータと第2仮想カメラデータに基づいて、第1仮想カメラで第1クリッピングエリアを描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する物体を描画して、当該画面を示す画像データを生成する。表示制御ステップは、生成された画面を示す画像データに基づいて画面を表示手段に表示する。
【0011】
第1の発明では、画像処理プログラムは、画像処理装置(10:実施例で相当する参照符号。以下同じ。)のプログラムである。画像処理装置のプロセサ(42)はこの画像処理プログラムに従って処理を実行し、仮想3次元空間を描画した画像を表示手段(12、14)に表示する。画像処理装置の記憶手段(48、28a)は、少なくとも仮想3次元空間に配置される仮想的な物体(92)に関するデータを記憶する。たとえばプレイヤキャラクタ、ライバルキャラクタ、背景オブジェクトのような物体のオブジェクトデータ、テクスチャデータ等が記憶される。注視点設定ステップ(S3)は注視点を仮想3次元空間に設定して、注視点データを記憶手段(84)に記憶する。第1仮想カメラ設定ステップ(S3)は、たとえば、少なくとも注視点データに基づいて、注視点を向く所定の視野角(2θ1)の第1仮想カメラを仮想3次元空間に設定して、第1仮想カメラの少なくとも位置データを含む第1仮想カメラデータを記憶手段(80)に記憶する。第2仮想カメラ設定ステップ(S7)は、少なくとも第1仮想カメラデータに基づいて第2仮想カメラを仮想3次元空間に設定して、第2仮想カメラの少なくとも位置データを含む第2仮想カメラデータを記憶手段(82)に記憶する。この第2仮想カメラは、たとえば注視点を向く所定の視野角(2θ2)を有していて、第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能に設定される。つまり、第2仮想カメラは第1仮想カメラの視野範囲外の領域を撮影可能なようにして仮想3次元空間に配置されている。画面生成ステップ(S9−S21、S101−S113)は、少なくとも物体に関するデータと第1仮想カメラデータと第2仮想カメラデータに基づいて、第1仮想カメラで第1クリッピングエリアを描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する物体を描画し、当該画面を示す画像データを生成して記憶手段(48、56,58)に記憶する。つまり、第1仮想カメラから第1クリッピングエリアを撮影した画面に、第1クリッピングエリアの周囲の領域に存在している物体が描画される。そして、表示制御ステップ(S23)は、生成された画像データに基づいて当該画面を表示手段に表示する。
【0012】
第1の発明によれば、第1仮想カメラの視野範囲外に存在する物体であっても、第2仮想カメラに基づいて、第1仮想カメラで撮影した画面に合わせて描画することができる。したがって、仮想3次元空間に存在する物体が画面に表示され易い。
【0013】
第2の発明は、第1の発明に従属し、画面生成ステップは、位置修正ステップ、および画像生成ステップを含む。位置修正ステップは、記憶手段の少なくとも物体に関するデータと第1仮想カメラデータと第2仮想カメラデータに基づいて、第2仮想カメラで撮影可能な領域に存在する物体の座標を第1仮想カメラで撮影可能な領域の座標に縮小する変換を行うことによって、当該物体の位置を修正する。画像生成ステップは、位置修正ステップの後、記憶手段のデータに基づいて、第1仮想カメラから見て第1クリッピングエリアを描画して、画面を示す画像データを生成する。
【0014】
第2の発明では、位置修正ステップ(S11)は、第2仮想カメラで撮影可能な領域、すなわち、第2仮想カメラの視野範囲内に存在する物体の座標を縮小変換する。たとえば、縮小率は、実施例では、第1仮想カメラの視野角、第2仮想カメラの視野角、物体の第1仮想カメラ座標系でのZ座標、および第1仮想カメラの後方クリッピング平面からの距離に基づいて算出される。この縮小変換によって、第2仮想カメラで撮影可能な領域の物体の座標が第1仮想カメラで撮影可能な領域の座標に縮小される。画像生成ステップ(S15−S21)は、位置修正の後、第1仮想カメラから見て第1クリッピングエリアを画面に描画する。したがって、第1仮想カメラの視野範囲外に存在する物体であっても、位置修正によって第1仮想カメラの視野範囲内に取り込むことが可能になるので、物体を画面に表示し易くすることができる。また、実施例のように第1仮想カメラ座標系での物体のX座標とY座標だけを縮小変換する場合には、第1仮想カメラに基づいて画面を描画することで、物体の見た目の大きさの整合性をとることが可能であり、したがって、物体を見易く表示することができる。
【0015】
第3の発明は、第2の発明に従属し、位置修正ステップは、物体が第1仮想カメラに近づくにつれて縮小率の値が大きくなるような変換によって、物体の位置を修正する。
【0016】
第3の発明では、物体の位置は、物体が第1仮想カメラに近づくにつれて縮小率(f(z))の値が大きくなるような縮小変換によって修正される。これによって、物体が第1仮想カメラに近付くにつれて、物体の座標があまり縮小されないようにしていくことができ、修正後の物体の位置を第1仮想カメラから見た実際の位置に徐々に近づけていくことができる。したがって、物体を見易く表示することができる。たとえば物体が第1仮想カメラの周辺に向けて移動しているような場合には、当該物体が第1仮想カメラの周辺に向かっているにもかかわらず第1仮想カメラにぶつかってくるように見えてしまう現象を抑制することができる。
【0017】
第4の発明は、第1の発明に従属し、画面生成ステップは、第1描画ステップ、第2描画ステップ、および画像生成ステップを含む。第1描画ステップは、記憶手段の少なくとも第1仮想カメラデータに基づいて、第1仮想カメラから見て第1クリッピングエリアを示す画像を描画する。第2描画ステップは、記憶手段の少なくとも第1仮想カメラデータと第2仮想カメラデータに基づいて算出される拡大率に基づいて第2仮想カメラの第2クリッピングエリアに存在する物体の大きさを拡大し、記憶手段の少なくとも第2仮想カメラデータと物体に関するデータに基づいて第2仮想カメラから見て第2クリッピングエリアを示す画像を描画する。画像生成ステップは、第1描画ステップで描画された画像に第2描画ステップで描画された画像を合成して、画面を示す画像データを生成する。
【0018】
第4の発明では、第1描画ステップ(S101、S103、S17、S19)は、第1仮想カメラで撮影して第1クリッピングエリアを示す画像を描画する。第2描画ステップ(S107、S109、S113、S21)は、たとえば後方クリッピング平面からの第1仮想カメラの距離と第2仮想カメラの距離との比によって与えられる拡大率に基づいて、第2仮想カメラの第2クリッピングエリアに存在する物体の大きさを拡大した後、第2仮想カメラで撮影して第2クリッピングエリアを示す画像を描画する。そして、画像生成ステップ(S21)は、第1描画ステップで描画された画像に第2描画ステップで描画された画像を合成することによって画面の画像データを生成する。したがって、第1仮想カメラの視野範囲外に存在する物体であっても、第2仮想カメラに基づいて描画して、第1仮想カメラで描画した画面に合わせて描画することができる。したがって、仮想3次元空間に存在する物体を画面に表示され易くすることができる。しかも、物体の大きさを拡大してから第2仮想カメラに基づいて当該物体を描画するので、物体の見た目の大きさの整合性をとることができる。したがって、物体を見易く表示できる。
【0019】
第5の発明は、第1の発明に従属し、記憶手段は、少なくとも物体として第1物体および第2物体に関するデータを記憶している。注視点設定ステップは、記憶手段に記憶される第1物体の位置に関するデータに基づいて、注視点を設定する。画面生成ステップは、記憶手段の第1仮想カメラデータと第2仮想カメラデータと物体に関するデータに基づいて、第1クリッピングエリアに存在する第1物体を第1仮想カメラで描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する第2物体を描画して、当該画面を示す画像データを生成する。
【0020】
第5の発明では、記憶手段(74、76)は、少なくとも第1物体(90)および第2物体(92)に関するデータを記憶する。実施例では、第1物体はプレイヤキャラクタであり、第2物体はライバルキャラクタである。注視点設定ステップは、第1物体の位置に関するデータ(78)に基づいて注視点を設定する。画面生成ステップは、第1仮想カメラの第1クリッピングエリアに存在する第1物体を第1仮想カメラで描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する第2物体を描画する。したがって、第1物体が表示される画面に、第1仮想カメラの視野範囲外に存在する第2物体を表示され易くすることができる。
【0021】
第6の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータを記憶する記憶手段を備え、仮想3次元空間を描画した画像を表示手段に表示する画像処理装置である。この画像処理装置は、注視点設定手段、第1仮想カメラ設定手段、第2仮想カメラ設定手段、画面生成手段、および表示制御手段を備える。注視点設定手段は、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定手段は、記憶手段の少なくとも注視点データに基づいて仮想3次元空間に第1仮想カメラを設定して、第1仮想カメラの少なくとも位置を含む第1仮想カメラデータを記憶手段に記憶する。第2仮想カメラ設定手段は、記憶手段の少なくとも第1仮想カメラデータに基づいて、第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能な第2仮想カメラを設定し、第2仮想カメラの少なくとも位置を含む第2仮想カメラデータを記憶領域に記憶する。画面生成手段は、記憶手段の少なくとも物体に関するデータと第1仮想カメラデータと第2仮想カメラデータに基づいて、第1仮想カメラで第1クリッピングエリアを描画する画面に合わせて、第2仮想カメラで撮影可能な領域に存在する物体を描画して、当該画面を示す画像データを生成する。表示制御手段は、生成された画面を示す画像データに基づいて画面を表示手段に表示する。
【0022】
第6の発明は、第1の発明の画像処理プログラムに対応する画像処理装置である。第6の発明でも、第1の発明と同様にして、物体を画面に表示され易くすることができる。
【0023】
第7の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置の画像処理プログラムである。この画像処理プログラムは、画像処理装置のプロセサに、注視点設定ステップ、第1仮想カメラ設定ステップ、第1クリッピングエリア設定ステップ、第2仮想カメラ設定ステップ、第1仮想カメラ座標変換ステップ、位置修正ステップ、画面生成ステップ、および表示制御ステップを実行させる。注視点設定ステップは、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定ステップは、記憶手段に記憶される仮想カメラ配置用データと注視点データを参照して、注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1クリッピングエリア設定ステップは、記憶手段に記憶される少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定ステップは、記憶手段に記憶される少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1仮想カメラ座標変換ステップは、記憶手段に記憶される少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体を第1仮想カメラ座標系での座標に変換することによって、当該物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。位置修正ステップは、記憶手段に記憶される仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリア外でありかつ第2仮想カメラで撮影可能な領域に存在する物体の座標を、第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して記憶手段に記憶する。画面生成ステップは、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと修正位置データと参照して、第1クリッピングエリアに存在する物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して記憶手段の描画バッファに記憶する。表示制御ステップは、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0024】
第7の発明は、第2の発明に対応する画像処理プログラムであり、より具体的に記述される。第7の発明では、記憶手段(48、28a)には、さらに仮想カメラ配置用データ(たとえば視野角データ)、クリッピングエリア設定用データ(後方クリッピング平面を示すデータ、前方クリッピング平面を示すデータ)等が記憶される。第1仮想カメラ設定ステップ(S3)は、仮想カメラ配置用データと注視点データを参照して、たとえば、注視点を向く所定の視野角の第1仮想カメラを設定し、第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段(80)に記憶する。第1クリッピングエリア設定ステップ(S5)は、少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定ステップ(S7)は、少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ所定の視野角で注視点を向くような第2仮想カメラを設定し、第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段(82)に記憶する。第1仮想カメラ座標変換ステップ(S9)は、少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、座標変換によって、当該物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。位置修正ステップ(S11)は、仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリア外でありかつ第2仮想カメラで撮影可能な領域に存在する物体の座標を、第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して記憶手段に記憶する。画面生成ステップ(S15−S21)は、少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと修正位置データと参照して、第1クリッピングエリアに存在する物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して記憶手段(48、56、58)の描画バッファに記憶する。表示制御ステップ(S23)は、描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0025】
第7の発明によれば、上述の第2の発明と同様に、物体が画面に表示され易い。また、物体を見易く表示することも可能である。
【0026】
第8の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置の画像処理プログラムである。この画像処理プログラムは、画像処理装置のプロセサに、注視点設定ステップ、第1仮想カメラ設定ステップ、第1クリッピングエリア設定ステップ、第2仮想カメラ設定ステップ、第2クリッピングエリア設定ステップ、第1仮想カメラ座標変換ステップ、第1画像生成ステップ、第2仮想カメラ座標変換ステップ、第2画像生成ステップ、および表示制御ステップを実行させる。注視点設定ステップは、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定ステップは、記憶手段に記憶される仮想カメラ配置用データと注視点データを参照して、注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1クリッピングエリア設定ステップは、記憶手段に記憶される少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定ステップは、記憶手段に記憶される少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第2クリッピングエリア設定ステップは、記憶手段に記憶される少なくともクリッピングエリア設定用データと第2仮想カメラの位置を示すデータを参照して、第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第1仮想カメラ座標変換ステップは、記憶手段に記憶される少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第1物体を第1仮想カメラ座標系での座標に変換することによって、当該第1物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第1画像生成ステップは、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリアに存在する第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して記憶手段の描画バッファに記憶する。第2仮想カメラ座標変換ステップは、記憶手段に記憶される少なくとも第2仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第2物体を第2仮想カメラ座標系での座標に変換することによって、当該第2物体の第2仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第2画像生成ステップは、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、第2クリッピングエリアに存在する第2物体を拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、画面における当該第2物体を示す画像データを生成して記憶手段の描画バッファに記憶する。表示制御ステップは、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0027】
第8の発明は、第4の発明に対応する画像処理プログラムであり、より具体的に記述される。第8の発明では、記憶手段(48、28a)には、さらに仮想カメラ配置用データ(たとえば視野角データ)と、クリッピングエリア設定用データ(後方クリッピング平面を示すデータ、前方クリッピング平面を示すデータ)等が記憶される。第1仮想カメラ設定ステップ(S3)は、仮想カメラ配置用データと注視点データを参照して、たとえば所定の視野角で注視点を向くような第1仮想カメラを設定して、第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段(80)に記憶する。第1クリッピングエリア設定ステップ(S5)は、少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定ステップ(S7)は、少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ所定の視野角で注視点を向くような第2仮想カメラを設定し、第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段(82)に記憶する。第2クリッピングエリア設定ステップ(S105)は、少なくともクリッピングエリア設定用データと第2仮想カメラの位置を示すデータを参照して、第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段(82)に記憶する。第1仮想カメラ座標変換ステップ(S101)は、少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第1物体(90)を座標変換することによって、当該第1物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第1画像生成ステップ(S103、S17、S19)は、少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリアに存在する第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して記憶手段(56、58、48)の描画バッファに記憶する。第2仮想カメラ座標変換ステップ(S107)は、少なくとも第2仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第2物体(92)を座標変換することによって、当該第2物体の第2仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第2画像生成ステップ(S109、S113、S21)は、少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、第2クリッピングエリアに存在する第2物体の大きさを拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、画面における当該第2物体を示す画像データを生成して記憶手段の描画バッファに記憶する。表示制御ステップ(S23)は、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0028】
第8の発明によれば、上述の第4の発明と同様に、仮想3次元空間に存在する物体を画面に表示され易くすることができる。しかも、物体の見た目の大きさの整合性をとることができるので、物体を見易く表示できる。
【0029】
第9の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置である。この画像処理装置は、注視点設定手段、第1仮想カメラ設定手段、第1クリッピングエリア設定手段、第2仮想カメラ設定手段、第1仮想カメラ座標変換手段、位置修正手段、画面生成手段、および表示制御手段を備える。注視点設定手段は、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定手段は、記憶手段に記憶される仮想カメラ配置用データと注視点データを参照して、注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1クリッピングエリア設定手段は、記憶手段に記憶される少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定手段は、記憶手段に記憶される少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1仮想カメラ座標変換手段は、記憶手段に記憶される少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体を第1仮想カメラ座標系での座標に変換することによって、当該物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。位置修正手段は、記憶手段に記憶される仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリア外でありかつ第2仮想カメラで撮影可能な領域に存在する物体の座標を、第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して記憶手段に記憶する。画面生成手段は、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと修正位置データと参照して、第1クリッピングエリアに存在する物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して記憶手段の描画バッファに記憶する。表示制御手段は、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0030】
第9の発明は、上述の第7の発明の画像処理プログラムに対応する画像処理装置である。第9の発明でも、第7の発明と同様に、物体を画面に表示され易くすることができ、物体を見易く表示することも可能である。
【0031】
第10の発明は、少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置である。この画像処理装置は、注視点設定手段、第1仮想カメラ設定手段、第1クリッピングエリア設定手段、第2仮想カメラ設定手段、第2クリッピングエリア設定手段、第1仮想カメラ座標変換手段、第1画像生成手段、第2仮想カメラ座標変換手段、第2画像生成手段、および表示制御手段を備える。注視点設定手段は、仮想3次元空間に注視点を設定して、注視点の位置を示す注視点データを記憶手段に記憶する。第1仮想カメラ設定手段は、記憶手段に記憶される仮想カメラ配置用データと注視点データを参照して、注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第1クリッピングエリア設定手段は、記憶手段に記憶される少なくともクリッピングエリア設定用データと第1仮想カメラの位置を示すデータを参照して、第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第2仮想カメラ設定手段は、記憶手段に記憶される少なくとも仮想カメラ配置用データを参照して、後方クリッピング平面を基準として第1仮想カメラと同じ側で第1仮想カメラよりも離れた位置に存在しかつ注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して記憶手段に記憶する。第2クリッピングエリア設定手段は、記憶手段に記憶される少なくともクリッピングエリア設定用データと第2仮想カメラの位置を示すデータを参照して、第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して記憶手段に記憶する。第1仮想カメラ座標変換手段は、記憶手段に記憶される少なくとも第1仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第1物体を第1仮想カメラ座標系での座標に変換することによって、当該第1物体の第1仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第1画像生成手段は、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、第1クリッピングエリアに存在する第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して記憶手段の描画バッファに記憶する。第2仮想カメラ座標変換手段は、記憶手段に記憶される少なくとも第2仮想カメラの位置を示すデータと物体に関するデータを参照して、物体としての第2物体を第2仮想カメラ座標系での座標に変換することによって、当該第2物体の第2仮想カメラ座標系での座標を示すデータを生成して記憶手段に記憶する。第2画像生成手段は、記憶手段に記憶される少なくとも物体に関するデータと仮想カメラ配置用データと第1仮想カメラの位置を示すデータと第2仮想カメラの位置を示すデータと第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、第2クリッピングエリアに存在する第2物体を拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、画面における当該第2物体を示す画像データを生成して記憶手段の描画バッファに記憶する。表示制御手段は、記憶手段の描画バッファに記憶される画面の画像データを参照して、当該画面を表示手段に表示する。
【0032】
第10の発明は、上述の第8の発明の画像処理プログラムに対応する画像処理装置である。第10の発明でも、第8の発明と同様に、物体を画面に表示され易くすることができる。しかも、物体を見易く表示できる。
【発明の効果】
【0033】
この発明によれば、第1仮想カメラの第1クリッピングエリア外に存在する物体を、第2仮想カメラに基づいて、第1仮想カメラで描画する画面に合わせて描画することができる。したがって、仮想3次元空間に存在する物体を画面に表示され易くすることができる。
【0034】
たとえば、第1クリッピングエリアの周囲に存在する物体を第2仮想カメラに基づいて位置修正することによって第1仮想カメラの視野範囲内に取り込んで、第1クリッピングエリアを第1仮想カメラから見て描画するので、物体が画面に表示され易い。しかも、見た目の大きさの整合性をとることが可能なので、物体を見易く表示できる。
【0035】
また、第1仮想カメラに基づいて描画した第1クリッピングエリアの画像と、第1クリッピングエリア外の物体を第2仮想カメラに基づいて描画した画像とを合成することによって画面を生成するので、物体を画面に表示され易くすることができる。しかも、第2クリッピングエリアの物体を拡大してから描画するので、見た目の大きさの整合性とることができ、画面において物体を見易く表示できる。
【0036】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0037】
図1を参照して、この発明の一実施例である画像処理装置10はコンピュータであり、一例としてゲーム装置10の形態で実現される。ゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0038】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0039】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bの平面形状も横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0040】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0041】
操作スイッチ20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面において、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面において、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり上側ハウジング16aとの連結部以外の部分において、当該連結部を挟むようにして左右に配置される。
【0042】
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、プレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等のために用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止したりする等のために用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等のために用いられる。
【0043】
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプする等の任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0044】
動作スイッチ20L(Lボタン)および動作スイッチ20R(Rボタン)は、プッシュボタンで構成され、Lボタン20LおよびRボタン20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0045】
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等によって操作された(すなわちタッチされた)位置の座標を検出して、検出した座標(検出座標)に対応する座標データを出力する。つまり、このタッチパネル22がこの実施例の入力手段として機能し、LCD14(またはLCD12)の画面上の位置を指示するための入力データをユーザ(プレイヤ)が入力するためのものである。
【0046】
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出精度(操作面)も表示画面に対応して256dot×192dotとしてある。ただし、図1では、タッチパネル22を分かり易く示すために、タッチパネル22をLCD14と異なる大きさで示してあるが、LCD14の表示画面の大きさとタッチパネル22の操作面の大きさとは同じ大きさである。なお、タッチパネル22の検出精度は、表示画面の解像度よりも低くてもよく、高くてもよい。
【0047】
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(穴ないし凹部)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
【0048】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは底面(下端)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0049】
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置でありこの下側ハウジング16bの内部には、スピーカ32(図2参照)が設けられる。
【0050】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなども設けられる。
【0051】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるとともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインタフェイス回路(以下、「I/F回路」という。)54およびLCDコントローラ60に接続される。
【0052】
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0053】
ROM28aは、ゲーム装置10をこの発明にかかる画像処理装置として機能させるための画像処理プログラムを予め記憶する。ゲーム(仮想ゲーム)が実行される場合、画像処理プログラムはゲームプログラムでもある。また、画像(キャラクタ画像、背景画像、アイテム画像、メッセージ画像など)データおよび必要な音(音楽)のデータ(音データ)等も予め記憶される。RAM(バックアップRAM)28bは、その画像処理やゲームの途中データおよび結果データを記憶(セーブ)する。
【0054】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶された画像処理プログラム(ゲームプログラム)、画像データおよび音データ等をRAM48にロードし、ロードした画像処理プログラムを実行する。また、CPUコア42は、画像処理プログラムに従って、ゲームの進行に応じて一時的に発生(生成)するデータ(ゲームデータやフラグデータ等)をRAM48のワークエリアや所定領域に記憶しつつ、画像処理(ゲーム処理)を実行する。
【0055】
なお、画像処理プログラム(ゲームプログラム)、画像データおよび音データ等のデータは、ROM28aから一度に全部または必要に応じて部分的にかつ順次的に読み出され、RAM48に記憶(ロード)される。
【0056】
ただし、メモリカード28のROM28aには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶されてよい。また、必要に応じて、音(音楽)データが記憶されてもよい。かかる場合には、ゲーム装置10では、当該アプリケーションが実行される。
【0057】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従って、表示するための画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、表示するための画像データの生成に必要な画像生成プログラム(画像処理プログラム(ゲームプログラム)に含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0058】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:オブジェクトデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。ただし、CPUコア42は、描画に必要な画像データをRAM48から読み出し、GPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして表示するための画像データを作成し、その画像データをVRAM56の描画バッファ(フレームバッファ)に記憶し、GPU52はVRAM58にアクセスして表示するための画像データを作成し、VRAM58の描画バッファに記憶する。描画バッファとしては、ラインバッファを採用してもよい。また、VRAM56および58には、フレームバッファの画像データの各画素の奥行き情報または奥行データ(Z値)を記憶するZバッファが設けられており、GPU50およびGPU52は画像データを作成する際に各画素の奥行き情報をZバッファの各画素に対応する領域に記憶する。なお、Zバッファの各画素に対応する領域には、初期値としてたとえば無限大を示すデータが設定される。
【0059】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたフレームバッファの画像データをLCD12に出力し、GPU52によって作成されたフレームバッファの画像データをLCD14に出力する。一方、レジスタ62のデータ値が「1」である場合には、LCDコントローラ60は、GPU50によって作成された画像データをLCD14に出力し、GPU52によって作成された画像データをLCD12に出力する。
【0060】
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接画像データを読み出すことができるし、あるいはGPU50およびGPU52を介してVRAM56およびVRAM58から画像データを読み出すこともできる。
【0061】
また、VRAM56およびVRAM58はRAM48に設けられてもよいし、あるいはその描画バッファおよびZバッファがRAM48に設けられてもよい。
【0062】
I/F回路54には、操作スイッチ(操作キー)20,タッチパネル22およびスピーカ32が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号(操作データ)がI/F回路54を介してCPUコア42に入力される。また、タッチパネル22から出力される操作入力データ(座標データ)がI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などの必要な音データをRAM48から読み出し、I/F回路54を介してスピーカ32からその音を出力する。
【0063】
図3にはこのゲーム装置10のメモリマップの一例が示される。メモリマップはプログラム記憶領域70およびデータ記憶領域72を含む。プログラム記憶領域70およびデータ記憶領域72には画像処理装置10の動作に必要なプログラムおよびデータが記憶されている。なお、図3では、ROM28aおよびRAM48に記憶されるデータの一部が示されている。
【0064】
プログラム記憶領域70にはROM28aの画像処理プログラム(ゲームプログラム)が記憶される。この画像処理プログラムに従って画像処理装置10のCPUコア42は動作して、GPU50または52等を用いてデータ記憶領域72のデータに基づいて3次元仮想空間内に配置されたプレイヤオブジェクト、ライバルオブジェクトまたは背景オブジェクトなど座標変換してレンダリングすることによってこれらを含む画像データを生成し、その画像をLCD12または14に表示する。
【0065】
データ記憶領域72には、ROM28aのデータおよびCPUコア42によって生成または取得されたデータが記憶される。データ記憶領域72には、オブジェクトデータ領域74、テクスチャデータ領域76、位置データおよび向きデータ領域78、第1仮想カメラデータ領域80、第2仮想カメラデータ領域82、および注視点データ領域84等が設けられる。
【0066】
オブジェクトデータ領域74には、仮想3次元空間内に配置される仮想的な物体を示すオブジェクトデータが記憶される。たとえば、プレイヤキャラクタや複数のライバルキャラクタ等のゲームキャラクタのオブジェクトデータや、地表、地表の物体、空中の雲等のような背景オブジェクトのオブジェクトデータ等が記憶される。プレイヤキャラクタは、ゲーム装置10のプレイヤによって操作されるオブジェクトである。ライバルキャラクタは仮想ゲームにおいてプレイヤキャラクタと競争するオブジェクトであり、CPUコア42によって制御されるノンプレイヤオブジェクトである。なお、各オブジェクトはポリゴンによって形成されている。
【0067】
テクスチャデータ領域76には、上述のプレイヤキャラクタ、ライバルキャラクタ、背景オブジェクト等のそれぞれに貼り付け処理されるそれぞれのテクスチャデータが記憶される。
【0068】
位置データおよび向きデータ領域78には、上述のプレイヤキャラクタ、ライバルキャラクタ、背景オブジェクト等のオブジェクトの配置状態を示すデータが記憶され、具体的には、各オブジェクトが仮想3次元空間内において存在している位置の座標を示す位置データおよび向いている方向を示す向きデータが記憶される。位置データおよび向きデータは、少なくともワールド座標系での座標および向きを示すデータを含む。各オブジェクトの初期の位置および向きは所定の値が設定されている。また、プレイヤキャラクタの動作は操作スイッチ20またはタッチパネル22からの操作入力データに基づいて画像処理プログラムに従って制御されて、プレイヤキャラクタの位置データおよび向きデータはたとえば1表示フレームごとに更新される。また、ライバルキャラクタおよび背景オブジェクト等の動作は画像処理プログラムに従って制御され、ライバルキャラクタおよび背景オブジェクト等の位置データおよび向きデータもたとえば1表示フレームごとに更新される。なお、複数のライバルキャラクタおよび複数の背景オブジェクト等が存在する場合、それぞれの位置データおよび向きデータが記憶される。
【0069】
第1仮想カメラデータ領域80には、仮想3次元空間内のシーンを撮影しその画像を描画するための第1仮想カメラ(図4参照)に関するデータが記憶される。具体的には、第1仮想カメラの配置状態を示す位置データおよび視野角データ、第1仮想カメラで可視化する範囲(クリッピングエリア)を規定する後方(ファー)クリッピング平面を示すデータおよび前方(ニア)クリッピング平面を示すデータ等を含む、第1仮想カメラを配置または設定するために用いられるデータが記憶される。
【0070】
第1仮想カメラの位置データは、第1仮想カメラが仮想3次元空間内において存在している位置の座標(ワールド座標系)を示す。たとえば、第1仮想カメラは注視点またはプレイヤキャラクタ等から所定の距離だけ離れた位置に注視点を向くようにして配置される。また、第1仮想カメラは、所定の位置に固定されていてよいし、あるいは注視点またはプレイヤオブジェクト等の移動に応じて移動されてよい。移動される場合、第1仮想カメラの位置は、注視点またはプレイヤキャラクタ等の位置に応じて算出される。そして、第1仮想カメラの位置データ領域はたとえば1表示フレームごとに更新される。
【0071】
第1仮想カメラの視野角データは、第1仮想カメラの視野を規定するためのものであり、第1仮想カメラのピラミッド視野の頂点の角度2θ1を示す。この実施例では、画面は矩形状であるので、視野角θ1は、第1仮想カメラ座標系のX軸に平行な方向とY軸に平行な方向とで異なる2つの所定の値に設定される。この視野角θ1の各所定値はROM28aに予め記憶されている。また、視野角データは、予め定められた値に固定されていてもよいし、あるいは画像処理(ゲーム処理)の進行に応じて更新されてもよい。
【0072】
第1仮想カメラの後方クリッピング平面を示すデータと前方クリッピング平面を示すデータは、第1仮想カメラのクリッピングエリアを設定するために使用されるデータである。第1仮想カメラの後方クリッピング平面と前方クリッピング平面は、描画する部分を限定するものであり、第1仮想カメラから注視点に向かう方向にそれぞれの所定の距離だけ離れた位置に設定される。この後方クリッピング平面と前方クリッピング平面との間のクリッピングエリア(四角錐台の視野)に存在するオブジェクトのみが描画されることとなる。後方クリッピング平面を示すデータと前方クリッピング平面を示すデータは、たとえば仮想カメラからの距離または仮想カメラ座標系でのZ座標によって表されており、これらデータは予めROM28aに記憶されている。また、後方クリッピング平面を示すデータと前方クリッピング平面を示すデータとは、予め定められた値に固定されていてもよいし、画像処理(ゲーム処理)の進行に応じて更新されてもよい。
【0073】
第2仮想カメラデータ領域82には、仮想3次元空間内に存在する物体を画面に表示し易くするための第2仮想カメラ(図4参照)に関するデータが記憶される。具体的には、第2仮想カメラの配置状態を示す位置データおよび視野角データ、第2仮想カメラで可視化するクリッピングエリアを規定する後方クリッピング平面を示すデータおよび前方クリッピング平面を示すデータ等を含む、第2仮想カメラを配置または設定するために用いられるデータが記憶される。第2仮想カメラは、第1仮想カメラのクリッピングエリア内に含まれないがその周囲の部分に存在する物体を撮影(座標変換)するためのものでもある。また、第2仮想カメラは、特定のオブジェクトを座標変換するために使用されてよく、この実施例ではライバルキャラクタのために使用される。
【0074】
第2仮想カメラの位置データは、第2仮想カメラが仮想3次元空間内において存在している位置の座標(ワールド座標系)を示す。たとえば、第2仮想カメラは、第1仮想カメラのたとえば後方クリッピング平面を基準としてみた場合、第1仮想カメラと同じ側に存在し、かつ、第1仮想カメラよりもその平面から離れている。また、第2仮想カメラは、第1仮想カメラから所定の距離だけ離れた位置に注視点を向くようにして配置される。この第2仮想カメラは、注視点と第1仮想カメラとを結びかつ注視点から第1仮想カメラの方向へ延びる延長線上に配置されてよい。したがって、第2仮想カメラは、第1仮想カメラの移動(すなわち注視点またはプレイヤキャラクタ等の移動)に応じて移動されてよい。移動される場合、第2仮想カメラの位置は、第1仮想カメラの位置(あるいは注視点もしくはプレイヤキャラクタ等の位置)に応じて算出される。そして、第2仮想カメラの位置データ領域はたとえば1表示フレームごとに更新される。
【0075】
第2仮想カメラの視野角データは、第2仮想カメラの視野を規定するためのものであり、第2仮想カメラのピラミッド視野の頂点の角度2θ2を示す。第2仮想カメラは、第1仮想カメラのクリッピングエリアの周囲の領域(視野範囲内には含まれない。)に存在する物体を撮影するためのものであるので、第2仮想カメラの視野角は、第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部が第2仮想カメラで撮影可能な視野範囲内に含まれるような所定の値に設定されている。上述のように、この実施例の画面は矩形状であるので、視野角θ2も、第2仮想カメラ座標系のX軸に平行な方向とY軸に平行な方向とで異なる2つの所定の値に設定される。この視野角θ2の各所定値はROM28aに予め記憶されている。また、この視野角データは、予め定められた値に固定されていてもよいし、画像処理(ゲーム処理)の進行に応じて更新されてもよい。
【0076】
第2仮想カメラの後方クリッピング平面を示すデータと前方クリッピング平面を示すデータは、第2仮想カメラのクリッピングエリアを設定するために使用されるデータである。第2仮想カメラの後方クリッピング平面と前方クリッピング平面は、第2仮想カメラから注視点に向かう方向にそれぞれの所定の距離だけ離れた位置に設定される。これら後方クリッピング平面を示すデータと前方クリッピング平面を示すデータは、予めROM28aに記憶されている。また、後方クリッピング平面を示すデータと前方クリッピング平面を示すデータとは、予め定められた値に固定されていてもよいし、画像処理(ゲーム処理)の進行に応じて更新されてもよい。
【0077】
第2仮想カメラの後方クリッピング平面および前方クリッピング平面は、第1仮想カメラのそれらとは関係なく任意に設定されてよいが、描画する範囲の整合性をとることが望ましい。たとえば、第1仮想カメラおよび第2仮想カメラの後方クリッピング平面は同じ位置に設定するのが望ましい。この場合には、第1仮想カメラと第2仮想カメラとで奥行き方向の同じ位置までの領域に存在する物体を描画することができる。また、同様に、前方クリッピング平面も第1仮想カメラおよび第2仮想カメラで同じ位置に設定するのが望ましい。この場合にも、両仮想カメラで奥行き方向の同じ位置からの領域に存在している物体を描画することができる。さらに、両仮想カメラで前方クリッピング平面および後方クリッピング平面の両方を同じ位置に設定した場合には、両仮想カメラで奥行き方向の同じ範囲に存在する物体を描画することができる。さらにまた、第2仮想カメラの視野角2θ2を第1仮想カメラの視野角2θ1よりも狭い値に適宜に設定することによって、両仮想カメラでその位置およびサイズが同一の後方クリッピング平面を設定する場合には、描画する部分の後方を両仮想カメラで同じにすることができる。
【0078】
注視点データ領域84には、第1仮想カメラおよび第2仮想カメラの注視点の位置の座標(ワールド座標系)を示すデータが記憶される。注視点は、第1仮想カメラと第2仮想カメラとで整合性をとるために同一に設定されるのが望ましい。注視点の位置は、仮想3次元空間の所定の位置に設定されてもよく、この場合には仮想3次元空間の所定位置のシーンが画像として描画される。また、注視点の位置は、物体の位置に基づいて設定されてもよい。たとえばプレイヤキャラクタの登場するゲームの場合には、注視点の位置はプレイヤキャラクタの位置に基づいて算出されてよい。たとえば、注視点の位置は、プレイヤキャラクタの中心もしくは重心位置または近傍の位置などに設定されてよい。このような場合にはプレイヤキャラクタを含むシーンが画像として描画される。注視点位置が、プレイヤキャラクタの移動またはプログラムに従って移動されるような場合には、注視点データ領域84はたとえば1表示フレームごとに更新される。
【0079】
なお、データ記憶領域72には他の必要なデータも記憶されている。たとえば第1仮想カメラおよび第2仮想カメラの仮想スクリーン(2次元投影平面)を示すデータ等も記憶されている。
【0080】
この画像処理装置10では、仮想3次元空間に同時に2つの視点が設定され、各視点から見たシーンが組み合わせられることによって1つの画像が生成される。
【0081】
具体的には、図4に示すように、第1仮想カメラと第2仮想カメラの2つの視点がワールド座標系に設けられる。この図4では、図示しない注視点は、たとえばプレイヤキャラクタ90を画面にとらえるようにプレイヤキャラクタ90の位置に基づいて設定される。第1仮想カメラと第2仮想カメラはこの注視点を向くようにして、たとえば注視点から所定の距離だけそれぞれ離れた位置に配置される。また、第1仮想カメラはプレイヤキャラクタ90が当該第1仮想カメラの第1クリッピングエリア内に存在するように配置される。また、第1仮想カメラの第1後方クリッピング平面と第2仮想カメラの第2後方クリッピング平面とは同一面に設定されている。なお、第1仮想カメラの第1前方クリッピング平面と第2仮想カメラの第2前方クリッピング平面とは異なる位置に設定されている。
【0082】
また、図4では、ライバルキャラクタ92は、第1仮想カメラから奥行き方向にプレイヤキャラクタ90と同じ程度の距離だけ離れた位置に存在している。また、図4では省略されるが、仮想3次元空間には背景オブジェクトも配置されている。視野範囲は、図4からわかるように、仮想カメラに近くなるにつれて狭くなるので、仮想カメラに近い位置に存在する物体は視野に入り難い。従来技術のようにそのまま1つの視点から見た画像を描画する(たとえば第1仮想カメラから撮影した画像を生成する)場合、このライバルキャラクタ92は、第1クリッピングエリアの近傍(側面の周囲の領域)、すなわち、視野範囲外に存在しているので、画面には入らない。
【0083】
しかし、この画像処理装置10では、図4のライバルキャラクタ92のような第1仮想カメラの第1クリッピングエリアに隣接する周辺領域に存在している物体を、第1仮想カメラの第1クリッピングエリアに存在する他の物体とともに1つの画像に描画する。このために、この画像処理装置10では、第2仮想カメラが、その第2クリッピングエリアに第1仮想カメラの第1クリッピングエリアの周囲の領域の一部が含まれるようにして設けられている。そして、第1仮想カメラの第1クリッピングエリア内に存在する他の物体を描画する画面に合わせて、第2仮想カメラの視野範囲内に存在する物体を描画する。このように、仮想3次元空間内の物体を画面に表示され易くすることができる。
【0084】
第2仮想カメラの視野範囲内に存在する全ての種類の物体を画面内に取り込むようにしてもよいが、この実施例では、特定の種類または属性の物体だけが第2仮想カメラに基づいて画面内に取り込まれるように処理される。つまり、この実施例では、ライバルキャラクタ92のみが第2仮想カメラに基づいて処理され、他の物体(プレイヤキャラクタ、背景オブジェクト)は第1仮想カメラのみに基づいて処理される。言い換えれば、この画像処理装置10では、物体ごとに2種類(第1仮想カメラと第2仮想カメラ)の座標変換が使い分けられていて、各座標変換を基に描画した各物体が同じ1つの画面に合わせられて表示される。なお、物体の種類または属性等で区別せずに、ある物体だけを第2仮想カメラに基づいて画面内に表示するようにしてもよい。
【0085】
具体的には、この実施例では、ライバルキャラクタ92の位置が第2仮想カメラに基づく座標変換によって修正される。これによって、第2仮想カメラの視野範囲内に存在するライバルキャラクタ92の位置が、第1仮想カメラの視野範囲内に変換される。
【0086】
図5には、第2仮想カメラに基づくライバルキャラクタ92の位置修正の概要が示される。この位置修正は、ライバルキャラクタ92の座標を第1仮想カメラ座標系のX軸方向およびY軸方向に縮小する座標変換である。なお、Z座標は位置修正前後で同一であり、つまり、修正されない。
【0087】
なお、この図5は、第1仮想カメラ座標系のXZ平面に垂直な方向(Y軸方向)から見た図である。第1仮想カメラと第2仮想カメラは後方クリッピング平面を共有している、つまり、両者の後方クリッピング平面は同一面である。また、第1仮想カメラと第2仮想カメラと図示しない注視点は、後方クリッピング平面に直交する同一垂線上に配置されている。つまり、この垂線は第1仮想カメラおよび第2仮想カメラから注視点への視線に相当し、したがって、各仮想カメラ座標系のZ軸に相当する。また、第1仮想カメラおよび第2仮想カメラの仮想スクリーン(図示せず)は、上記視線に直交するように、つまり、後方クリッピング平面に平行に設定される。
【0088】
この実施例の位置修正は、第2仮想カメラの視野角を示す線(図5の太い実線)の内側の空間を、第1仮想カメラの視野内に収まるように圧縮するものと見ることができる。この変換によって、ライバルキャラクタ92の第1カメラ座標系でのX座標(およびY座標)が、X軸方向(およびY軸方向)に縮小される。
【0089】
なお、ライバルキャラクタ92の位置は、第1仮想カメラの視野内にもともと存在しているライバルキャラクタ92であっても、この変換によって修正される。
【0090】
ライバルキャラクタ92の第1仮想カメラ座標系での位置修正前の座標を(xa,ya,za)とし、位置修正後の座標を(xa´,ya´,za)とする。また、図5において、θ1は第1仮想カメラの視野角の半角であり、θ2は第2仮想カメラの視野角の半角である。また、hcは第1仮想カメラの第1後方クリッピング平面との距離(高さ)である。ライバルキャラクタ92の第1仮想カメラ座標系での位置修正後のX座標xa´は次の数1に従って算出され、Y座標ya´は次の数2に従って算出される。
【0091】
[数1]
xa´=f(za)×xa
[数2]
ya´=f(za)×ya
上記数1および数2においてf(z)は座標の縮小率を示し、次の数3に従って算出される。
【0092】
[数3]
f(z)=z×tanθ1/{hc×tanθ1−(hc−z)×tanθ2}
なお、上述のように、画面が矩形状の場合には視野角θ1およびθ2は、仮想カメラ座標系のX軸方向とY軸方向とで異なるものとなるので、X座標の算出の場合にはX軸方向のθ1およびθ2を用いてf(z)を算出し、Y座標の算出の場合にはY軸方向のθ1およびθ2を用いてf(z)を算出する。
【0093】
この縮小率f(z)は、図5および数3からわかるように、第1仮想カメラと第2仮想カメラの配置関係に基づいて定められており、第1仮想カメラの視野角の半角θ1、第2仮想カメラの視野角の半角θ2、第1仮想カメラと第2仮想カメラで共通する後方クリッピング平面から第1仮想カメラまでの距離hc、および修正しようとする位置のz座標によって求められる。この数3のf(z)の値はz座標の値に応じて変化する。具体的には、この縮小変換は、物体の位置が第1仮想カメラに近づくにつれて縮小率の値が小さくなるような変換である。すなわち、数3では、z座標の値が小さいほど縮小率f(z)の値は小さくなる。したがって、z座標が小さくなるにつれて、物体の第1カメラ座標系でのx座標およびy座標はより小さい値に変換されて、より縮小される。
【0094】
この位置修正後、第1仮想カメラに基づいて、第1仮想カメラの第1クリッピングエリア(可視化領域)内に存在する物体が、位置修正によって第1クリッピングエリア内に存在することとなったライバルキャラクタ92とともに描画される。たとえば、この実施例では、第1仮想カメラ座標系で第1クリッピングエリアに存在する各物体は2次元投影平面(仮想スクリーン)に透視投影変換される。そして、Zバッファ法等によって隠面消去処理を行うとともに、テクスチャマッピングによって各物体等にテクスチャを貼り付けて、画面の画像データを生成する。
【0095】
こうして、第1仮想カメラの第1クリッピングエリア内の物体と第1仮想カメラの第1クリッピングエリアの周囲の領域に存在していたライバルキャラクタ92とが1つの画面で表示される。図4に示したように、第1仮想カメラの第1クリッピングエリア内にプレイヤキャラクタ90が存在し、第1仮想カメラの第1クリッピングエリアの周辺でありかつ第2仮想カメラの視野範囲内にライバルキャラクタ92が存在する場合には、図6に示すような画面が表示される。この図6の画面では、第1仮想カメラの第1クリッピングエリア内に存在しているプレイヤキャラクタ90とともに、第1仮想カメラの視野範囲外に存在しているライバルキャラクタ92が、修正後の位置に描画されている。
【0096】
また、ライバルキャラクタ92は、視線と垂直な面(第1仮想カメラ座標系のXY軸に平行な面)の中での位置修正後に第1仮想カメラに基づいて描画されるので、ライバルキャラクタ92の見た目の大きさは、第1仮想カメラからの距離(第1仮想カメラ座標系のz軸方向の距離)によって決まるようになっている。したがって、第2仮想カメラに基づいて位置修正されたライバルキャラクタ92の大きさは、仮想3次元空間における実際の物体間の位置関係と整合するものとなっている。したがって、第1仮想カメラよりも遠くに位置している第2仮想カメラに基づいて位置修正されたライバルキャラクタ92が小さくなり過ぎるようなことがなく、ライバルキャラクタ92を見易く表示することができる。
【0097】
たとえば仮想3次元空間が地面ないし地表とその上の空中領域を含むような場合を想定すると、一例として、図4および図5で示した共通の後方クリッピング平面は地表面に設定され、第1仮想カメラは空中に配置され、第2仮想カメラは第1仮想カメラよりも高い場所に配置されていると考えることができる。そして、プレイヤキャラクタ90は空中のある高さに存在し、第1仮想カメラの第1クリッピングエリア内にある。一方、ライバルキャラクタ92はプレイヤキャラクタ90とほぼ同じ高さに存在する。上述のように、視野範囲は仮想カメラに近いほど狭くなるものであり、ライバルキャラクタ92は第1仮想カメラの第1クリッピングエリアの周辺(視野範囲外)に存在している。しかし、このライバルキャラクタ92は第2仮想カメラの視野範囲内であるため、位置修正処理によって第1仮想カメラの視野範囲内にそのX座標およびY座標が修正される。したがって、プレイヤキャラクタ90と同じような高さで第1仮想カメラの第1クリッピングエリアの周辺に存在するライバルキャラクタ92も、図6に示したように、画面内に表示することができる。しかも、上述のように位置修正処理ではZ座標が同一に維持されて、第1仮想カメラからの高さ関係がそのまま維持される。したがって、ライバルキャラクタ92の画面における見た目の大きさの整合性をとることができ、ライバルキャラクタ92を見易く表示することができる。
【0098】
図7および図8には、この実施例の画像処理装置10の動作の一例が示される。図7の最初のステップS1で、CPUコア42は、RAM48のオブジェクトデータ領域74、ならびに位置データおよび向きデータ領域78からプレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクト等の各オブジェクトデータならびに初期の位置データおよび向きデータをRAM48のワークエリアに読み出して、プレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクト等の各オブジェクトを仮想3次元空間であるワールド座標系の各座標に配置し、各オブジェクトの配置状態を示すデータをワークエリアに生成する。
【0099】
次に、ステップS3で、CPUコア42は、注視点と第1仮想カメラとをワールド座標系の座標に配置する。具体的には、CPUコア42は、たとえば、RAM48の位置データおよび向きデータ領域78からプレイヤキャラクタの位置データをワークエリアに読み出して、そのプレイヤキャラクタの位置データに基づいて注視点の座標を決定して、その注視点の座標を注視点データ領域84に記憶する。なお、注視点の位置は、プレイヤキャラクタの以外のオブジェクトの位置に基づいて設定されてもよいし、仮想3次元空間内の予め定められた位置に設定されてもよい。そして、CPUコア42は、その注視点データと第1仮想カメラデータ領域80の視野角データ(2θ1)等に基づいて第1仮想カメラの座標を算出し、算出した第1仮想カメラの座標を第1仮想カメラデータ領域80に位置データとして記憶する。そして、CPUコア42は、注視点データおよび第1仮想カメラの位置データに基づいて、注視点と、当該注視点を向きかつ視野角2θ1の第1仮想カメラとをワールド座標系の各座標に配置する。
【0100】
続いて、ステップS5で、CPUコア42は、第1仮想カメラデータ領域80の後方クリッピング平面を示すデータをワークエリアに読み出して、第1仮想カメラから注視点方向に距離hcだけ離れた位置に第1仮想カメラの(第1)後方クリッピング平面を設定し、当該後方クリッピング平面を示すデータをワークエリアに生成する。また、このステップS5では、同様にして、第1仮想カメラの第1前方クリッピング平面も設定される。
【0101】
ステップS7では、CPUコア42は、第2仮想カメラをワールド座標系の座標に配置する。具体的には、CPUコア42は、注視点データ領域84の注視点データ、第1仮想カメラデータ領域80の位置データ、第2仮想カメラデータ領域82の視野角データ(2θ2)に基づいて、注視点と第1仮想カメラを結びかつ注視点から第1仮想カメラへ延びる延長線上において注視点を向きかつ視野角が2θ2となるような第2仮想カメラの座標を算出し、算出した第2仮想カメラの座標を位置データとして第2仮想カメラデータ領域82に記憶する。そして、CPUコア42は、第2仮想カメラの位置データに基づいて、注視点を向きかつ視野角2θ2の第2仮想カメラをワールド座標系の座標に配置する。なお、この実施例では、第2仮想カメラの視野角2θ2は、第1仮想カメラの後方クリッピング平面と第2仮想カメラの後方クリッピング平面とが同一となるような値に予め設定されている。
【0102】
ステップS9では、CPUコア42は、物体の座標を第1仮想カメラ座標系の座標に変換する。具体的には、CPUコア42は、ワールド座標系に配置したプレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクト等の各オブジェクトを、第1仮想カメラデータ領域80のデータに基づいて、第1仮想カメラ座標系の座標に変換して、第1仮想カメラ座標系での各オブジェクトの座標データをRAM48のワークエリアに生成する。第1仮想カメラ座標系は、図5に示すように、第1仮想カメラの位置を原点とし、注視点方向をZ軸正方向としたXYZ座標系である。なお、座標変換処理は、CPUコア42の指令に従ってGPU50または52によって実行されてよい。
【0103】
ステップS11では、CPUコア42は、第2仮想カメラに基づくライバルキャラクタの位置修正処理を実行する。具合的には、CPUコア42は、第1仮想カメラ座標系に変換されたライバルキャラクタのX座標およびY座標を、上述の数1および数2に従って修正(縮小変換)して、その修正後の第1仮想カメラ座標系での座標データをワークエリアに生成する。
【0104】
そして、ステップS13で、CPUコア42は仮想3次元空間に配置した全ライバルキャラクタの位置修正処理が終了したか否かを判断する。ステップS13で“NO”であれば、つまり、まだ位置修正処理をしていないライバルキャラクタが残っている場合には、処理はステップS11に戻る。
【0105】
一方、ステップS13で“YES”であれば、CPUコア42は、ステップS15で、物体を仮想スクリーンに投影変換する。具体的には、CPUコア42は、第1仮想カメラ座標系の第1クリッピングエリア内に存在するプレイヤキャラクタ、ライバルキャラクタ、および背景オブジェクト等の各オブジェクトを、第1仮想カメラデータおよび仮想スクリーンを示すデータ等に基づいて、透視投影変換によって2次元投影平面座標系の座標に変換して、2次元投影平面座標系での各オブジェクトの座標等を示すデータをたとえばRAM48のワークエリアに生成する。生成される各オブジェクトの座標データは2次元投影平面座標系のXY座標とともに奥行き情報(Z値)を含む。なお、この座標変換処理も、上述のように、CPUコア42の指令に従ってGPU50または52によって実行されてよい。このステップS15を終了すると、処理は次の図8のステップS17へ進む。
【0106】
図8のステップS17では、CPUコア42は背景オブジェクトの描画処理を実行する。この処理の動作は図9に詳細に示される。図9の最初のステップS41で、CPUコア42は、RAM48のテクスチャデータ領域76から、描画しようとする背景オブジェクトに対応するテクスチャデータを読み出して、そのテクスチャデータをGPU50または52を介してVRAM56または58に書き込む。
【0107】
次に、ステップS43で、CPUコア42は、投影平面座標系に投影された当該背景オブジェクトに相当する位置の描画バッファの各ピクセルのZバッファを参照する。たとえば、CPUコア42は、GPU50または52を用いて、VRAM56または58のZバッファから、当該背景オブジェクトに相当する位置の画素に対応するデータ(Z値)をRAM48のワークエリアに読み出す。
【0108】
そして、ステップS45で、CPUコア42は、読み出したZバッファのデータとステップS15で生成された奥行き情報とに基づいて、書込み対象のピクセルのZバッファ値が、書込みしようとする背景オブジェクトの奥行き情報より大きいか否かを判定する。
【0109】
ステップS45で“YES”であれば、つまり、書込みしようとする背景オブジェクトの方が当該ピクセルに既に書き込まれている物体よりも視点に近い場合、あるいは当該ピクセルのZ値が初期値である場合には、ステップS47で、CPUコア42は、GPU50または52を介して、VRAM56または58の書込み対象のピクセルに対応するZバッファに、背景オブジェクトの奥行き情報を格納する。つまり、当該ピクセルのZバッファ値が更新される。
【0110】
続いて、ステップS49で、CPUコア42は、GPU50または52を介して、VRAM56または58の描画バッファ(フレームバッファ)の当該ピクセルに、背景オブジェクトのテクスチャの色情報を書き込む。ステップS49を終了すると処理はステップS51へ進む。
【0111】
一方、ステップS45で“NO”であれば、つまり、書込みしようとする背景オブジェクトの方が既に書き込まれている物体よりも視点から遠い場合には、そのままステップS51へ進む。
【0112】
ステップS51では、CPUコア42は、当該背景オブジェクトに相当する位置の全ピクセルの描画処理が終了したか否かを判定し、“NO”であればステップS43へ戻って、残りのピクセルについてステップS43からの描画処理を実行する。ステップS51で“YES”であれば、CPUコア42はステップS53で、投影平面座標系に投影された全背景オブジェクトの描画処理が終了したか否かを判定し、“NO”であればステップS41へ戻って、残りの背景オブジェクトについての描画処理を実行する。ステップS53で“YES”であれば、この背景オブジェクトの描画処理を終了して、処理は図8のステップS19へ戻る。
【0113】
図8のステップS19では、CPUコア42は、プレイヤキャラクタの描画処理を実行する。この処理の動作は図10に詳細に示される。図10の最初のステップS61で、CPUコア42は、テクスチャデータ領域76からプレイヤキャラクタに対応するテクスチャデータを読み出して、そのテクスチャデータをGPU50または52を介してVRAM56または58に書き込む。
【0114】
次に、ステップS63で、CPUコア42は、上述のステップS43と同様にして、投影平面座標系に投影されたプレイヤキャラクタに相当する位置の描画バッファの各ピクセルのZバッファを参照する。
【0115】
そして、ステップS65で、CPUコア42は、参照したZバッファのデータとステップS15で生成された奥行き情報とに基づいて、書込み対象のピクセルのZバッファ値が、書込みしようとするプレイヤキャラクタの奥行き情報より大きいか否かを判定する。
【0116】
ステップS65で“YES”であれば、つまり、書込みしようとするプレイヤキャラクタの方が当該ピクセルに既に書き込まれている物体よりも視点に近い場合、あるいは当該ピクセルのZ値が初期値である場合には、ステップS67で、CPUコア42は、当該ピクセルのZバッファ値を更新する。つまり、上述のステップS47と同様にして、CPUコア42は、書込み対象のピクセルに対応するZバッファにプレイヤキャラクタの奥行き情報を格納する。
【0117】
続いて、ステップS69で、CPUコア42は、上述のステップS49と同様にして、GPU50または52を介して、VRAM56または58の描画バッファ(フレームバッファ)の当該ピクセルに、プレイヤキャラクタのテクスチャの色情報を書き込む。ステップS69を終了すると処理はステップS71へ進む。
【0118】
一方、ステップS65で“NO”であれば、つまり、書込みしようとするプレイヤキャラクタの方が既に書き込まれている物体よりも視点から遠い場合には、そのままステップS71へ進む。
【0119】
ステップS71では、CPUコア42は、プレイヤキャラクタに相当する位置の全ピクセルの描画処理が終了したか否かを判定し、“NO”であればステップS63へ戻って、残りのピクセルについて描画処理を実行する。一方、ステップS71で“YES”であれば、このプレイヤキャラクタの描画処理を終了して、処理は図8のステップS21へ戻る。
【0120】
図8のステップS21では、CPUコア42は、ライバルキャラクタの描画処理を実行する。この処理の動作は図11に詳細に示される。図11の最初のステップS81で、CPUコア42は、テクスチャデータ領域76から描画しようとするライバルキャラクタに対応するテクスチャデータを読み出して、そのテクスチャデータをGPU50または52を介してVRAM56または58に書き込む。
【0121】
次に、ステップS83で、CPUコア42は、上述のステップS43と同様にして、投影平面座標系に投影された当該ライバルキャラクタに相当する位置の描画バッファの各ピクセルのZバッファを参照する。
【0122】
そして、ステップS85で、CPUコア42は、参照したZバッファのデータとステップS15で生成された奥行き情報とに基づいて、書込み対象のピクセルのZバッファ値が、書込みしようとするライバルキャラクタの奥行き情報より大きいか否かを判定する。
【0123】
ステップS85で“YES”であれば、つまり、書込みしようとするライバルキャラクタの方が当該ピクセルに既に書き込まれている物体よりも視点に近い場合、あるいは当該ピクセルのZ値が初期値である場合には、ステップS87で、CPUコア42は、上述のステップS47と同様にして、当該ピクセルに対応するZバッファにライバルキャラクタの奥行き情報を上書きして、当該ピクセルのZバッファ値を更新する。
【0124】
続いて、ステップS89で、CPUコア42は、上述のステップS49と同様にして、描画バッファの当該ピクセルにライバルキャラクタのテクスチャの色情報を上書きする。ステップS89を終了すると処理はステップS51へ進む。
【0125】
一方、ステップS85で“NO”であれば、つまり、書込みしようとするライバルキャラクタの方が既に書き込まれている物体よりも視点から遠い場合には、そのままステップS91へ進む。
【0126】
ステップS91では、CPUコア42は、当該ライバルキャラクタに相当する位置の全ピクセルの描画処理が終了したか否かを判定し、“NO”であればステップS83へ戻って、残りのピクセルについてステップS83からの処理を実行する。一方、ステップS91で“YES”であれば、CPUコア42はステップS93で、投影平面座標系に投影された全ライバルキャラクタの描画処理が終了したか否かを判定し、“NO”であればステップS81へ戻って、残りのライバルキャラクタについての描画処理を実行する。ステップS93で“YES”であれば、このライバルキャラクタの描画処理を終了して、処理は図8のステップS23へ戻る。
【0127】
図8のステップS23では、CPUコア42は、描画された画面をLCD12またはLCD14に表示する。たとえば、CPUコア42は、LCDコントローラ60を用いて、VRAM56または58の描画バッファの画像データをLCD12または14に与えて、その画像をLCD12または14に表示する。
【0128】
続いて、ステップS25で、CPUコア42は、プレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクト等の各オブジェクトのワールド座標系での位置および向き等を更新する。具体的には、CPUコア42は、操作スイッチ20またはタッチパネル22から取得した操作入力データに基づいてプレイヤキャラクタの位置および向きを算出し、その算出した位置データおよび向きデータを、位置データおよび向きデータ領域78のプレイヤキャラクタに対応する領域に書き込む。また、CPUコア42は、ライバルキャラクタおよび背景オブジェクトの位置および向きを算出し、その位置データおよび向きデータを、位置データおよび向きデータ領域78のライバルキャラクタおよび背景オブジェクトに対応する領域にそれぞれ書き込む。
【0129】
そして、ステップS27で、CPUコア42は、画像処理(ゲーム処理)を終了するか否かを判断し、“NO”であれば図7のステップS3に戻って、画像の生成および表示のための処理を繰り返す。一方、ステップS27で“YES”であればこの処理を終了する。
【0130】
この実施例によれば、第1仮想カメラの第1クリッピングエリアの周囲に存在する物体(ライバルキャラクタ)を第2仮想カメラに基づいて位置修正することによって、第1仮想カメラの視野範囲内に取り込むようにした。したがって、仮想3次元空間内の物体を画面に表示され易くすることができる。しかも、位置修正した物体を第1仮想カメラから見て描画するので、画面における見た目の大きさに関して、仮想3次元空間内の位置関係との整合性をとることができる。したがって、物体を適正な大きさで表示できるので、プレイヤにとって見易く表示できる。
【0131】
たとえば視野の端の方に存在しているライバルキャラクタが第1仮想カメラ側に移動して第1仮想カメラの視野範囲外に出たとしても、第2仮想カメラの視野範囲内であれば、第2仮想カメラに基づいて、第1仮想カメラの視野範囲内に取り込むことができるので、その物体が急激に画面外へ消えるように見える現象を緩和することができる。また、第1仮想カメラの近くの視野外にそれまで存在していた物体が第1仮想カメラ側と反対方向に移動して第1仮想カメラの視野範囲内に入ってくるような場合にも、それまでの位置が第2仮想カメラの視野範囲内であれば第2仮想カメラに基づいて第1仮想カメラの視野範囲に取り込むことができるので、その物体が画面外から急激に現れるように見える現象も緩和することができる。したがって、たとえば視野の境界を移動するような物体であっても、画面に長い間表示しておくことが可能になり、プレイヤにとって見易い画面を表示することができる。さらに、位置修正では第1仮想カメラ座標系でのZ座標を変更しないので、十分な遠近感や立体感を維持することができる。たとえば、物体が第1仮想カメラに近いほど、その見た目の移動速度が速くなるという現象なども維持できる。
【0132】
また、第1仮想カメラの近くに存在する物体であっても画面に表示され易くなるので、たとえば第1仮想カメラがプレイヤキャラクタのみに注目するように配置される場合であっても、プレイヤキャラクタ以外の物体をプレイヤの目に触れ易くすることができる。したがって、プレイヤキャラクタと他の物体等を含めた3次元空間内の状況を把握され易くすることができる。たとえばプレイヤキャラクタとライバルキャラクタとが空間内を移動しながら競走するようなゲームでも、プレイヤキャラクタばかりでなくライバルキャラクタも一緒に表示されることが多くなるので、緊張感を高めたりスリルを大きくしたりすることができ、ゲームの楽しさを向上することができる。
【0133】
なお、上述の実施例では、図5に示したように、位置修正処理では、第2仮想カメラの視野角を示す線(太い実線)の内側の部分を第1仮想カメラの視野内に収まるように座標変換をしていた。たとえば第1仮想カメラの周辺に向けて物体が移動してくるような場合には、第1仮想カメラに近くなると、物体が第1仮想カメラにぶつかるような位置には実際には存在していないにもかかわらず、生成されるゲーム画面では、視点にぶつかってくるように見える現象が広い範囲で生じることとなる。そこで、図12に示す位置修正の変形例のように、第2仮想カメラの視野角を示す線の一部(第1カメラ座標系で、0<z≦zbの範囲)を、第1仮想カメラの位置で収束するような曲線とし、この線(図12で太い実線で示される。)の内側の領域が第1仮想カメラの視野内に収まるように座標変換を行うようにしてよい。つまり、第1クリッピングエリア外の位置修正の対象となる領域が、第1仮想カメラに近づくにつれて第1仮想カメラの位置に収束するようにして、その位置修正対象領域を減らしていくようにしてよい。
【0134】
具体的には、この変形例の位置修正処理では、縮小率f(z)は、0<z≦zbの場合には次の数4に従って算出される。なお、zb=hc×定数である。このzbを算出するための定数の値としては、0より大きく1より小さい範囲の所定の値が適宜に設定される。
【0135】
[数4]
f(z)=z×tanθ1/{(zb×tanθ2−xb)×z^2/zb^2−(tanθ2×zb−2×xb)×z/zb)}
ここで、xb=hc×tanθ1−(hc−zb)×tanθ2
また、zb<z≦hcの場合の縮小率f(z)は上記数3と同じである。
【0136】
この変形例でも、zの値に応じてf(z)の値が変化する。具体的には、数4による縮小変換は、物体の位置が第1仮想カメラに近づくにつれて縮小率f(z)の値が大きくなるような変換である。つまり、第1仮想カメラに近い領域(0<z≦zbの範囲)では、位置修正対象の物体(ライバルキャラクタ)の位置が第1仮想カメラに近いほど、縮小率f(z)の値を大きくすることができる。したがって、数4では、物体が第1仮想カメラに近づくにつれて、つまり、z座標の値が小さくなるにつれて、第1仮想カメラ座標系でのx座標値およびy座標値をあまり縮小されないようにすることができる。これによって、物体が第1仮想カメラに近づくにつれて、その修正後の物体の位置を第1仮想カメラから見た実際の物体の位置に徐々に近づけていくことができる。したがって、変形例の位置修正によれば、たとえば第1仮想カメラの周辺に向けて物体が移動してくるような場合には、その物体が第1仮想カメラにぶつかってくるように見える現象を抑制することができる。
【0137】
また、上述の実施例では、第2仮想カメラに基づいて特定の物体(ライバルキャラクタ)の位置を修正した後に、第1仮想カメラに基づいて仮想3次元空間のシーンを描画することによって、画面を生成するようにしていた。しかし、図13に示す他の実施例のように、第1仮想カメラに基づいて描画した画像と、第2仮想カメラに基づいて描画した特定の物体の画像とを合成することによって、画面を生成するようにしてもよい。この他の実施例によっても、上述の実施例と同様な効果を奏することができ、物体を画面に表示され易くすることができる。
【0138】
具体的には、この他の実施例では、第1仮想カメラおよび第2仮想カメラの2つの視点は上述の実施例と同様にして配置されている。図13に示すように、仮想3次元空間内のプレイヤキャラクタ90および背景オブジェクト(図示せず)は第1仮想カメラに基づいて描画され、ライバルキャラクタ92は第2仮想カメラに基づいて描画される。
【0139】
ただし、第2仮想カメラは、第1仮想カメラの第1クリッピングエリアの周囲の領域をその視野範囲にとらえるために、共通の後方クリッピング平面から第1仮想カメラよりも遠い位置に配置されているので、ライバルキャラクタ92を第2仮想カメラに基づいてそのまま描画すると、画面においてライバルキャラクタ92が小さくなり過ぎてしまう。そこで、この他の実施例では、描画前にライバルキャラクタ92の大きさを拡大する処理を実行する。これによって、仮想3次元空間内でのライバルキャラクタ92と他のオブジェクトとの位置関係に基づく遠近感の整合性をとることができるので、物体を見易く表示することができる。たとえば、第1仮想カメラと後方クリッピング平面との距離をh1cとし、第2仮想カメラと後方クリッピング平面との距離をh2cとすると、両者の比h2c/h1cによって与えられる拡大率に基づいて、ライバルキャラクタ92の大きさを拡大する。その後、拡大されたライバルキャラクタ92を第2仮想カメラに基づいて描画する。
【0140】
そして、第1仮想カメラに基づいて描画した画像に、第2仮想カメラに基づいて描画した画像を合成することによって、画面の画像を生成する。なお、第1仮想カメラの図示しない仮想スクリーンまたは第2仮想カメラの図示しない仮想スクリーンのサイズが表示画面サイズと異なる場合には、描画後にその仮想スクリーン画像のサイズを拡大または縮小処理によって表示画面サイズに一致させてから合成する。
【0141】
この他の実施例の動作が図14および図15のフロー図に示される。なお、図14および図15において上述の実施例と同様の処理を実行するステップには、同一の参照符号を付して、その詳細な説明を省略する。
【0142】
CPUコア42は、上述の実施例と同様にして、図14のステップS1で各オブジェクトをワールド座標系に配置し、ステップS3で注視点と第1仮想カメラを配置し、ステップS5で第1仮想カメラから距離h1cだけ離れた位置に第1後方クリッピング平面を設定する。
【0143】
ステップS101では、CPUコア42は、ライバルキャラクタ以外のオブジェクト(背景オブジェクトおよびプレイヤキャラクタ)を第1仮想カメラ座標系の座標に変換する。そして、ステップS103で、CPUコア42は、第1仮想カメラ座標系の背景オブジェクトおよびプレイヤキャラクタを2次元投影平面座標系の座標に透視投影変換する。なお、第1仮想カメラ座標系への変換処理は図7のステップS9と同様であり、2次元投影平面座標系への変換処理は図7のステップS15と同様である。
【0144】
続いて、CPUコア42は、ステップS17で背景オブジェクトの描画処理を実行し、ステップS19でプレイヤキャラクタの描画処理を実行する。
【0145】
このようにして、第1仮想カメラに基づいて、背景オブジェクトおよびプレイヤキャラクタが描画バッファに描画される。続いて、第2仮想カメラに基づいて、ライバルキャラクタが描画される。
【0146】
ステップS7で、CPUコア42は第2仮想カメラを配置する。そして、ステップS105で、CPUコア42は、第2仮想カメラから距離h2cだけ離れた位置に第2後方クリッピング平面を設定する。ただし、この他の実施例でも、図13に示すように第1後方クリッピング平面と第2後方クリッピング平面とは同じ面である。つまり、この図14のステップS7とステップS105とで、CPUコア42は、後方クリッピング平面から距離h2cの位置に、注視点を向き視野角2θ2の第2仮想カメラを配置する。
【0147】
続いて、図15のステップS107で、CPUコア42は、第2仮想カメラデータ等に基づいて、ライバルキャラクタを第2仮想カメラ座標系の座標に変換する。
【0148】
そして、ステップS109で、CPUコア42は、後方クリッピング平面からの第2仮想カメラおよび第1仮想カメラの距離比h2c/h1c(拡大率)に基づいて、ライバルキャラクタの大きさを拡大し、拡大したライバルキャラクタのデータをワークエリアに生成する。この拡大処理は、CPUコア42の指示に基づいてGPU50または52によってなされてよい。ステップS111では、CPUコア42は、全ライバルキャラクタの拡大処理が終了したか否かを判断し、“NO”であればステップS109へ戻って、残りのライバルキャラクタについて拡大処理を実行する。
【0149】
一方、ステップS111で“YES”であれば、CPUコア42は、ステップS113で、第2仮想カメラ座標系の第2クリッピングエリアに存在するライバルキャラクタを、第2仮想カメラデータおよび仮想スクリーンを示すデータ等に基づいて、第1仮想カメラの場合と同じ2次元投影平面座標系の座標に透視投影変換する。具体的には、第2仮想カメラの仮想スクリーンとして第1仮想カメラの仮想スクリーンと同じ平面を設定している場合には、ライバルキャラクタを当該仮想スクリーンの座標系に変換して、この座標系でのライバルキャラクタの座標データをたとえばRAM48のワークエリアに生成する。一方、第2仮想カメラの仮想スクリーンとして第1仮想カメラの仮想スクリーンと異なる平面を設定する場合には、ライバルキャラクタを第2仮想カメラの仮想スクリーンの座標系に変換する。そして、第2仮想カメラの仮想スクリーンが第1仮想カメラの仮想スクリーンと同一になるように、第2仮想カメラの仮想スクリーン座標系でのライバルキャラクタを拡大または縮小変換して、第1仮想カメラの場合と同一の投影平面座標系でのライバルキャラクタの座標データをたとえばRAM48のワークエリアに生成する。
【0150】
そして、CPUコア42は、ステップS21でライバルキャラクタの描画処理を実行して、ステップS23で描画された画面をLCD12または14に表示する。また、ステップS25で、CPUコア42は、プレイヤキャラクタ、ライバルキャラクタおよび背景オブジェクトのワールド座標系での位置および向きを更新する。そして、ステップS27で画像処理を終了するか否かを判定し、“NO”であれば図14のステップS3に戻り、“YES”であればこの画像処理を終了する。
【図面の簡単な説明】
【0151】
【図1】この発明の一実施例の画像処理装置を示す外観図である。
【図2】図1実施例の電気的な構成を示すブロック図である。
【図3】図1実施例のメモリマップの一例を示す図解図である。
【図4】図1実施例における画像処理の概要を説明するための図解図である。
【図5】図1実施例における第2仮想カメラに基づく物体の位置修正の概要を説明するための図解図である。
【図6】表示される画面の一例を示す図解図である。
【図7】図1実施例の動作の一例の一部を示すフロー図である。
【図8】図7の続きを示すフロー図である。
【図9】図8の背景オブジェクトの描画処理の動作の一例を示すフロー図である。
【図10】図8のプレイヤキャラクタの描画処理の動作の一例を示すフロー図である。
【図11】図8のライバルキャラクタの描画処理の動作の一例を示すフロー図である。
【図12】第2仮想カメラに基づく物体の位置修正の変形例の概略を説明するための図解図である。
【図13】他の実施例の画像処理装置における画像処理の概略を説明するための図解図である。
【図14】他の実施例の画像処理装置の動作の一例の一部を示すフロー図である。
【図15】図14の続きを示すフロー図である。
【符号の説明】
【0152】
10 …画像処理装置
12,14…LCD
28a …ROM
42 …CPUコア
48 …RAM
50,52 …GPU
56,58 …VRAM
60 …LCDコントローラ
【特許請求の範囲】
【請求項1】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータを記憶する記憶手段を備え、前記仮想3次元空間を描画した画像を表示手段に表示する画像処理装置の画像処理プログラムであって、
前記画像処理装置のプロセサに、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定ステップ、
前記記憶手段の少なくとも前記注視点データに基づいて前記仮想3次元空間に第1仮想カメラを設定して、前記第1仮想カメラの少なくとも位置を含む第1仮想カメラデータを前記記憶手段に記憶する第1仮想カメラ設定ステップ、
前記記憶手段の少なくとも前記第1仮想カメラデータに基づいて、前記第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能な第2仮想カメラを設定し、前記第2仮想カメラの少なくとも位置を含む第2仮想カメラデータを前記記憶手段に記憶する第2仮想カメラ設定ステップ、
前記記憶手段の少なくとも前記物体に関するデータと前記第1仮想カメラデータと前記第2仮想カメラデータに基づいて、前記第1仮想カメラで前記第1クリッピングエリアを描画する画面に合わせて、前記第2仮想カメラで撮影可能な領域に存在する前記物体を描画して、当該画面を示す画像データを生成する画面生成ステップ、および
生成された前記画面を示す画像データに基づいて前記画面を前記表示手段に表示する表示制御ステップを実行させる画像処理プログラム。
【請求項2】
前記画面生成ステップは、
前記記憶手段の少なくとも前記物体に関するデータと前記第1仮想カメラデータと前記第2仮想カメラデータに基づいて、前記第2仮想カメラで撮影可能な領域に存在する前記物体の座標を前記第1仮想カメラで撮影可能な領域の座標に縮小する変換を行うことによって、当該物体の位置を修正する位置修正ステップ、および
前記位置修正ステップの後、前記記憶手段のデータに基づいて、前記第1仮想カメラから見て前記第1クリッピングエリアを描画して、前記画面を示す画像データを生成する画像生成ステップを含む、請求項1記載の画像処理プログラム。
【請求項3】
前記位置修正ステップは、前記物体が前記第1仮想カメラに近づくにつれて縮小率の値が大きくなるような前記変換によって、前記物体の位置を修正する、請求項2記載の画像処理プログラム。
【請求項4】
前記画面生成ステップは、
前記記憶手段の少なくとも前記第1仮想カメラデータに基づいて、前記第1仮想カメラから見て前記第1クリッピングエリアを示す画像を描画する第1描画ステップ、
前記記憶手段の少なくとも前記第1仮想カメラデータと前記第2仮想カメラデータに基づいて算出される拡大率に基づいて前記第2仮想カメラの第2クリッピングエリアに存在する前記物体の大きさを拡大し、前記記憶手段の少なくとも前記第2仮想カメラデータと前記物体に関するデータに基づいて前記第2仮想カメラから見て前記第2クリッピングエリアを示す画像を描画する第2描画ステップ、および
前記第1描画ステップで描画された画像に前記第2描画ステップで描画された画像を合成して、前記画面を示す画像データを生成する画像生成ステップを含む、請求項1記載の画像処理プログラム。
【請求項5】
前記記憶手段は、少なくとも前記物体として第1物体および第2物体に関するデータを記憶していて、
前記注視点設定ステップは、前記記憶手段に記憶される前記第1物体の位置に関するデータに基づいて、前記注視点を設定し、
前記画面生成ステップは、前記記憶手段の前記第1仮想カメラデータと前記第2仮想カメラデータと前記物体に関するデータに基づいて、前記第1クリッピングエリアに存在する前記第1物体を前記第1仮想カメラで描画する画面に合わせて、前記第2仮想カメラで撮影可能な領域に存在する前記第2物体を描画して、当該画面を示す画像データを生成する、請求項1記載の画像処理プログラム。
【請求項6】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータを記憶する記憶手段を備え、前記仮想3次元空間を描画した画像を表示手段に表示する画像処理装置であって、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定手段、
前記記憶手段の少なくとも前記注視点データに基づいて前記仮想3次元空間に第1仮想カメラを設定して、前記第1仮想カメラの少なくとも位置を含む第1仮想カメラデータを前記記憶手段に記憶する第1仮想カメラ設定手段、
前記記憶手段の少なくとも前記第1仮想カメラデータに基づいて、前記第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能な第2仮想カメラを設定し、前記第2仮想カメラの少なくとも位置を含む第2仮想カメラデータを前記記憶領域に記憶する第2仮想カメラ設定手段、
前記記憶手段の少なくとも前記物体に関するデータと前記第1仮想カメラデータと前記第2仮想カメラデータに基づいて、前記第1仮想カメラで前記第1クリッピングエリアを描画する画面に合わせて、前記第2仮想カメラで撮影可能な領域に存在する前記物体を描画して、当該画面を示す画像データを生成する画面生成手段、および
生成された前記画面を示す画像データに基づいて前記画面を前記表示手段に表示する表示制御手段を備える、画像処理装置。
【請求項7】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、前記物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置の画像処理プログラムであって、
前記画像処理装置のプロセサに、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定ステップ、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記注視点データを参照して、前記注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ設定ステップ、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第1仮想カメラの位置を示すデータを参照して、前記第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第1クリッピングエリア設定ステップ、
前記記憶手段に記憶される少なくとも前記仮想カメラ配置用データを参照して、前記後方クリッピング平面を基準として前記第1仮想カメラと同じ側で前記第1仮想カメラよりも離れた位置に存在しかつ前記注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ設定ステップ、
前記記憶手段に記憶される少なくとも前記第1仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体を第1仮想カメラ座標系での座標に変換することによって、当該物体の前記第1仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ座標変換ステップ、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第2仮想カメラの位置を示すデータと前記物体の第1仮想カメラ座標系での座標を示すデータを参照して、前記第1クリッピングエリア外でありかつ前記第2仮想カメラで撮影可能な領域に存在する前記物体の座標を、前記第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して前記記憶手段に記憶する位置修正ステップ、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記修正位置データと参照して、前記第1クリッピングエリアに存在する前記物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して前記記憶手段の描画バッファに記憶する画面生成ステップ、および
前記記憶手段の前記描画バッファに記憶される前記画面の画像データを参照して、当該画面を前記表示手段に表示する表示制御ステップを実行させるための画像処理プログラム。
【請求項8】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、前記物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置の画像処理プログラムであって、
前記画像処理装置のプロセサに、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定ステップ、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記注視点データを参照して、前記注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ設定ステップ、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第1仮想カメラの位置を示すデータを参照して、前記第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第1クリッピングエリア設定ステップ、
前記記憶手段に記憶される少なくとも前記仮想カメラ配置用データを参照して、前記後方クリッピング平面を基準として前記第1仮想カメラと同じ側で前記第1仮想カメラよりも離れた位置に存在しかつ前記注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ設定ステップ、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第2仮想カメラの位置を示すデータを参照して、前記第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第2クリッピングエリア設定ステップ、
前記記憶手段に記憶される少なくとも前記第1仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体としての第1物体を第1仮想カメラ座標系での座標に変換することによって、当該第1物体の前記第1仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ座標変換ステップ、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、前記第1クリッピングエリアに存在する前記第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して前記記憶手段の描画バッファに記憶する、第1画像生成ステップ、
前記記憶手段に記憶される少なくとも前記第2仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体としての第2物体を第2仮想カメラ座標系での座標に変換することによって、当該第2物体の前記第2仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ座標変換ステップ、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第2仮想カメラの位置を示すデータと前記第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、前記第2クリッピングエリアに存在する前記第2物体の大きさを拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、前記画面における当該第2物体を示す画像データを生成して前記記憶手段の前記描画バッファに記憶する、第2画像生成ステップ、および
前記記憶手段の前記描画バッファに記憶される前記画面の画像データを参照して、当該画面を前記表示手段に表示する表示制御ステップを実行させるための画像処理プログラム。
【請求項9】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、前記物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置であって、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定手段、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記注視点データを参照して、前記注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ設定手段、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第1仮想カメラの位置を示すデータを参照して、前記第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第1クリッピングエリア設定手段、
前記記憶手段に記憶される少なくとも前記仮想カメラ配置用データを参照して、前記後方クリッピング平面を基準として前記第1仮想カメラと同じ側で前記第1仮想カメラよりも離れた位置に存在しかつ前記注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ設定手段、
前記記憶手段に記憶される少なくとも前記第1仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体を第1仮想カメラ座標系での座標に変換することによって、当該物体の前記第1仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ座標変換手段、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第2仮想カメラの位置を示すデータと前記物体の第1仮想カメラ座標系での座標を示すデータを参照して、前記第1クリッピングエリア外でありかつ前記第2仮想カメラで撮影可能な領域に存在する前記物体の座標を、前記第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して前記記憶手段に記憶する位置修正手段、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記修正位置データと参照して、前記第1クリッピングエリアに存在する前記物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して前記記憶手段の描画バッファに記憶する画面生成手段、および
前記記憶手段の前記描画バッファに記憶される前記画面の画像データを参照して、当該画面を前記表示手段に表示する表示制御手段を備える、画像処理装置。
【請求項10】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、前記物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置であって、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定手段、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記注視点データを参照して、前記注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ設定手段、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第1仮想カメラの位置を示すデータを参照して、前記第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第1クリッピングエリア設定手段、
前記記憶手段に記憶される少なくとも前記仮想カメラ配置用データを参照して、前記後方クリッピング平面を基準として前記第1仮想カメラと同じ側で前記第1仮想カメラよりも離れた位置に存在しかつ前記注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ設定手段、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第2仮想カメラの位置を示すデータを参照して、前記第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第2クリッピングエリア設定手段、
前記記憶手段に記憶される少なくとも前記第1仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体としての第1物体を第1仮想カメラ座標系での座標に変換することによって、当該第1物体の前記第1仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ座標変換手段、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、前記第1クリッピングエリアに存在する前記第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して前記記憶手段の描画バッファに記憶する、第1画像生成手段、
前記記憶手段に記憶される少なくとも前記第2仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体としての第2物体を第2仮想カメラ座標系での座標に変換することによって、当該第2物体の前記第2仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ座標変換手段、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第2仮想カメラの位置を示すデータと前記第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、前記第2クリッピングエリアに存在する前記第2物体を拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、前記画面における当該第2物体を示す画像データを生成して前記記憶手段の前記描画バッファに記憶する、第2画像生成手段、および
前記記憶手段の前記描画バッファに記憶される前記画面の画像データを参照して、当該画面を前記表示手段に表示する表示制御手段を備える画像処理装置。
【請求項1】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータを記憶する記憶手段を備え、前記仮想3次元空間を描画した画像を表示手段に表示する画像処理装置の画像処理プログラムであって、
前記画像処理装置のプロセサに、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定ステップ、
前記記憶手段の少なくとも前記注視点データに基づいて前記仮想3次元空間に第1仮想カメラを設定して、前記第1仮想カメラの少なくとも位置を含む第1仮想カメラデータを前記記憶手段に記憶する第1仮想カメラ設定ステップ、
前記記憶手段の少なくとも前記第1仮想カメラデータに基づいて、前記第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能な第2仮想カメラを設定し、前記第2仮想カメラの少なくとも位置を含む第2仮想カメラデータを前記記憶手段に記憶する第2仮想カメラ設定ステップ、
前記記憶手段の少なくとも前記物体に関するデータと前記第1仮想カメラデータと前記第2仮想カメラデータに基づいて、前記第1仮想カメラで前記第1クリッピングエリアを描画する画面に合わせて、前記第2仮想カメラで撮影可能な領域に存在する前記物体を描画して、当該画面を示す画像データを生成する画面生成ステップ、および
生成された前記画面を示す画像データに基づいて前記画面を前記表示手段に表示する表示制御ステップを実行させる画像処理プログラム。
【請求項2】
前記画面生成ステップは、
前記記憶手段の少なくとも前記物体に関するデータと前記第1仮想カメラデータと前記第2仮想カメラデータに基づいて、前記第2仮想カメラで撮影可能な領域に存在する前記物体の座標を前記第1仮想カメラで撮影可能な領域の座標に縮小する変換を行うことによって、当該物体の位置を修正する位置修正ステップ、および
前記位置修正ステップの後、前記記憶手段のデータに基づいて、前記第1仮想カメラから見て前記第1クリッピングエリアを描画して、前記画面を示す画像データを生成する画像生成ステップを含む、請求項1記載の画像処理プログラム。
【請求項3】
前記位置修正ステップは、前記物体が前記第1仮想カメラに近づくにつれて縮小率の値が大きくなるような前記変換によって、前記物体の位置を修正する、請求項2記載の画像処理プログラム。
【請求項4】
前記画面生成ステップは、
前記記憶手段の少なくとも前記第1仮想カメラデータに基づいて、前記第1仮想カメラから見て前記第1クリッピングエリアを示す画像を描画する第1描画ステップ、
前記記憶手段の少なくとも前記第1仮想カメラデータと前記第2仮想カメラデータに基づいて算出される拡大率に基づいて前記第2仮想カメラの第2クリッピングエリアに存在する前記物体の大きさを拡大し、前記記憶手段の少なくとも前記第2仮想カメラデータと前記物体に関するデータに基づいて前記第2仮想カメラから見て前記第2クリッピングエリアを示す画像を描画する第2描画ステップ、および
前記第1描画ステップで描画された画像に前記第2描画ステップで描画された画像を合成して、前記画面を示す画像データを生成する画像生成ステップを含む、請求項1記載の画像処理プログラム。
【請求項5】
前記記憶手段は、少なくとも前記物体として第1物体および第2物体に関するデータを記憶していて、
前記注視点設定ステップは、前記記憶手段に記憶される前記第1物体の位置に関するデータに基づいて、前記注視点を設定し、
前記画面生成ステップは、前記記憶手段の前記第1仮想カメラデータと前記第2仮想カメラデータと前記物体に関するデータに基づいて、前記第1クリッピングエリアに存在する前記第1物体を前記第1仮想カメラで描画する画面に合わせて、前記第2仮想カメラで撮影可能な領域に存在する前記第2物体を描画して、当該画面を示す画像データを生成する、請求項1記載の画像処理プログラム。
【請求項6】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータを記憶する記憶手段を備え、前記仮想3次元空間を描画した画像を表示手段に表示する画像処理装置であって、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定手段、
前記記憶手段の少なくとも前記注視点データに基づいて前記仮想3次元空間に第1仮想カメラを設定して、前記第1仮想カメラの少なくとも位置を含む第1仮想カメラデータを前記記憶手段に記憶する第1仮想カメラ設定手段、
前記記憶手段の少なくとも前記第1仮想カメラデータに基づいて、前記第1仮想カメラの第1クリッピングエリアの周囲の領域の少なくとも一部を撮影可能な第2仮想カメラを設定し、前記第2仮想カメラの少なくとも位置を含む第2仮想カメラデータを前記記憶領域に記憶する第2仮想カメラ設定手段、
前記記憶手段の少なくとも前記物体に関するデータと前記第1仮想カメラデータと前記第2仮想カメラデータに基づいて、前記第1仮想カメラで前記第1クリッピングエリアを描画する画面に合わせて、前記第2仮想カメラで撮影可能な領域に存在する前記物体を描画して、当該画面を示す画像データを生成する画面生成手段、および
生成された前記画面を示す画像データに基づいて前記画面を前記表示手段に表示する表示制御手段を備える、画像処理装置。
【請求項7】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、前記物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置の画像処理プログラムであって、
前記画像処理装置のプロセサに、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定ステップ、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記注視点データを参照して、前記注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ設定ステップ、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第1仮想カメラの位置を示すデータを参照して、前記第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第1クリッピングエリア設定ステップ、
前記記憶手段に記憶される少なくとも前記仮想カメラ配置用データを参照して、前記後方クリッピング平面を基準として前記第1仮想カメラと同じ側で前記第1仮想カメラよりも離れた位置に存在しかつ前記注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ設定ステップ、
前記記憶手段に記憶される少なくとも前記第1仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体を第1仮想カメラ座標系での座標に変換することによって、当該物体の前記第1仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ座標変換ステップ、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第2仮想カメラの位置を示すデータと前記物体の第1仮想カメラ座標系での座標を示すデータを参照して、前記第1クリッピングエリア外でありかつ前記第2仮想カメラで撮影可能な領域に存在する前記物体の座標を、前記第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して前記記憶手段に記憶する位置修正ステップ、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記修正位置データと参照して、前記第1クリッピングエリアに存在する前記物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して前記記憶手段の描画バッファに記憶する画面生成ステップ、および
前記記憶手段の前記描画バッファに記憶される前記画面の画像データを参照して、当該画面を前記表示手段に表示する表示制御ステップを実行させるための画像処理プログラム。
【請求項8】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、前記物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置の画像処理プログラムであって、
前記画像処理装置のプロセサに、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定ステップ、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記注視点データを参照して、前記注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ設定ステップ、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第1仮想カメラの位置を示すデータを参照して、前記第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第1クリッピングエリア設定ステップ、
前記記憶手段に記憶される少なくとも前記仮想カメラ配置用データを参照して、前記後方クリッピング平面を基準として前記第1仮想カメラと同じ側で前記第1仮想カメラよりも離れた位置に存在しかつ前記注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ設定ステップ、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第2仮想カメラの位置を示すデータを参照して、前記第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第2クリッピングエリア設定ステップ、
前記記憶手段に記憶される少なくとも前記第1仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体としての第1物体を第1仮想カメラ座標系での座標に変換することによって、当該第1物体の前記第1仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ座標変換ステップ、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、前記第1クリッピングエリアに存在する前記第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して前記記憶手段の描画バッファに記憶する、第1画像生成ステップ、
前記記憶手段に記憶される少なくとも前記第2仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体としての第2物体を第2仮想カメラ座標系での座標に変換することによって、当該第2物体の前記第2仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ座標変換ステップ、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第2仮想カメラの位置を示すデータと前記第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、前記第2クリッピングエリアに存在する前記第2物体の大きさを拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、前記画面における当該第2物体を示す画像データを生成して前記記憶手段の前記描画バッファに記憶する、第2画像生成ステップ、および
前記記憶手段の前記描画バッファに記憶される前記画面の画像データを参照して、当該画面を前記表示手段に表示する表示制御ステップを実行させるための画像処理プログラム。
【請求項9】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、前記物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置であって、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定手段、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記注視点データを参照して、前記注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ設定手段、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第1仮想カメラの位置を示すデータを参照して、前記第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第1クリッピングエリア設定手段、
前記記憶手段に記憶される少なくとも前記仮想カメラ配置用データを参照して、前記後方クリッピング平面を基準として前記第1仮想カメラと同じ側で前記第1仮想カメラよりも離れた位置に存在しかつ前記注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ設定手段、
前記記憶手段に記憶される少なくとも前記第1仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体を第1仮想カメラ座標系での座標に変換することによって、当該物体の前記第1仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ座標変換手段、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第2仮想カメラの位置を示すデータと前記物体の第1仮想カメラ座標系での座標を示すデータを参照して、前記第1クリッピングエリア外でありかつ前記第2仮想カメラで撮影可能な領域に存在する前記物体の座標を、前記第1クリッピングエリア内の座標に縮小変換することによって、当該物体の修正された座標を示す修正位置データを生成して前記記憶手段に記憶する位置修正手段、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記修正位置データと参照して、前記第1クリッピングエリアに存在する前記物体を投影平面座標系での座標に変換して描画することによって、画面の画像データを生成して前記記憶手段の描画バッファに記憶する画面生成手段、および
前記記憶手段の前記描画バッファに記憶される前記画面の画像データを参照して、当該画面を前記表示手段に表示する表示制御手段を備える、画像処理装置。
【請求項10】
少なくとも仮想3次元空間に配置される仮想的な物体に関するデータと、仮想カメラ配置用データと、クリッピングエリア設定用データとが記憶される記憶手段を備え、前記物体を仮想カメラで撮影した画像を表示手段に表示する画像処理装置であって、
前記仮想3次元空間に注視点を設定して、前記注視点の位置を示す注視点データを前記記憶手段に記憶する注視点設定手段、
前記記憶手段に記憶される前記仮想カメラ配置用データと前記注視点データを参照して、前記注視点を向く第1仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ設定手段、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第1仮想カメラの位置を示すデータを参照して、前記第1仮想カメラの第1クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第1クリッピングエリア設定手段、
前記記憶手段に記憶される少なくとも前記仮想カメラ配置用データを参照して、前記後方クリッピング平面を基準として前記第1仮想カメラと同じ側で前記第1仮想カメラよりも離れた位置に存在しかつ前記注視点を向く第2仮想カメラの少なくとも位置を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ設定手段、
前記記憶手段に記憶される少なくとも前記クリッピングエリア設定用データと前記第2仮想カメラの位置を示すデータを参照して、前記第2仮想カメラの第2クリッピングエリアを規定する前方クリッピング平面および後方クリッピング平面を示すデータを生成して前記記憶手段に記憶する第2クリッピングエリア設定手段、
前記記憶手段に記憶される少なくとも前記第1仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体としての第1物体を第1仮想カメラ座標系での座標に変換することによって、当該第1物体の前記第1仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第1仮想カメラ座標変換手段、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第1物体の第1仮想カメラ座標系での座標を示すデータを参照して、前記第1クリッピングエリアに存在する前記第1物体を投影平面座標系での座標に変換して描画することによって、画面における当該第1物体を示す画像データを生成して前記記憶手段の描画バッファに記憶する、第1画像生成手段、
前記記憶手段に記憶される少なくとも前記第2仮想カメラの位置を示すデータと前記物体に関するデータを参照して、前記物体としての第2物体を第2仮想カメラ座標系での座標に変換することによって、当該第2物体の前記第2仮想カメラ座標系での座標を示すデータを生成して前記記憶手段に記憶する第2仮想カメラ座標変換手段、
前記記憶手段に記憶される少なくとも前記物体に関するデータと前記仮想カメラ配置用データと前記第1仮想カメラの位置を示すデータと前記第2仮想カメラの位置を示すデータと前記第2物体の第2仮想カメラ座標系での座標を示すデータを参照して、前記第2クリッピングエリアに存在する前記第2物体を拡大した後、当該第2物体を投影平面座標系での座標に変換して描画することによって、前記画面における当該第2物体を示す画像データを生成して前記記憶手段の前記描画バッファに記憶する、第2画像生成手段、および
前記記憶手段の前記描画バッファに記憶される前記画面の画像データを参照して、当該画面を前記表示手段に表示する表示制御手段を備える画像処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2006−155442(P2006−155442A)
【公開日】平成18年6月15日(2006.6.15)
【国際特許分類】
【出願番号】特願2004−348012(P2004−348012)
【出願日】平成16年12月1日(2004.12.1)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(504440133)株式会社ポケモン (3)
【Fターム(参考)】
【公開日】平成18年6月15日(2006.6.15)
【国際特許分類】
【出願日】平成16年12月1日(2004.12.1)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(504440133)株式会社ポケモン (3)
【Fターム(参考)】
[ Back to top ]