JP4219766B2 - 画像生成プログラムおよび画像生成装置 - Google Patents

画像生成プログラムおよび画像生成装置 Download PDF

Info

Publication number
JP4219766B2
JP4219766B2 JP2003294378A JP2003294378A JP4219766B2 JP 4219766 B2 JP4219766 B2 JP 4219766B2 JP 2003294378 A JP2003294378 A JP 2003294378A JP 2003294378 A JP2003294378 A JP 2003294378A JP 4219766 B2 JP4219766 B2 JP 4219766B2
Authority
JP
Japan
Prior art keywords
projection
target object
image generation
virtual space
magnification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003294378A
Other languages
English (en)
Other versions
JP2005063266A (ja
Inventor
敬三 太田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2003294378A priority Critical patent/JP4219766B2/ja
Publication of JP2005063266A publication Critical patent/JP2005063266A/ja
Application granted granted Critical
Publication of JP4219766B2 publication Critical patent/JP4219766B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Description

この発明は画像生成プログラムおよび画像生成装置に関し、特にたとえば、プレイヤオブジェクトのようなプレイヤの操作対象である対象オブジェクトと、地形オブジェクトや建物オブジェクトのような操作対象でない非対象オブジェクトとが配置された3次元の仮想空間の様子を、当該仮想空間に配置される仮想カメラに基づく投影平面に投影変換し、かつ描画領域に描画することにより、仮想カメラから見える画像を生成する、画像生成プログラムおよび画像生成装置に関する。
この種の従来の画像生成装置の一例が特許文献1に開示されている。この特許文献1に開示されるスポーツゲーム装置では、フィールドの真上に置いた視点から見たフィールドの画像を生成するときに、上側にくるサイドラインを、予め通常よりも太くしておく。このフィールドを透視変換してフィールドを横から斜め下に見下ろした画像を得る。このようにして、画面の奥側に表示されるサイドラインがかすれたり途切れたりすることなく、適正に表示されていた。
特開2001−149649号公報[A63F 13/00,13/10,13/12,G06T 17/00]
このように、通常、カメラは3次元モデルを効果的に見せるために、斜めからのアングルが用いられ、実際には長方形のフィールドが台形に歪んで表示されることになる。また、3次元のゲーム空間におけるゲーム(3Dゲーム)を実現させるための3Dゲームプログラムまたは3Dゲーム装置においては、コントローラに設けられたスティックの傾斜方向が3Dの仮想空間におけるオブジェクトの移動方向に対応しており、たとえば、プレイヤがスティックを45度前方に傾けることによって、3Dの仮想空間内におけるプレイヤオブジェクトが45度の方向(斜め方向)へ移動するようにプログラミングされていることが一般的である。このような3Dゲームプログラム等では、3Dの仮想空間における仮想カメラから見た画像を透視投影法により透視変換して、テレビ画面に表示させているため、2次元の画像でありながら奥行き方向が反映される。このため、3Dゲームでは、テレビ画面で見たそのままの感覚でスティックの操作を行うと、プレイヤの思い通りにオブジェクトを移動させることができないという問題が生じていた。このため、たとえば、本来は長方形であるフィールドのライン際に沿ってオブジェクト(プレイヤオブジェクト)を移動させるには、ある程度の空間把握能力(2次元表示されている画面を見て、その状態を3次元の空間として把握できる能力)を必要とし、したがって、万人にとってその操作は簡単ではなかった。
具体的には、3D空間内に配置される立方体の地形オブジェクトの前に、直方体のキャラクタオブジェクト(プレイヤオブジェクト)が存在し、これを斜め(45度)の方向から仮想カメラで撮影している場合には、図15に示すようなゲーム画像がディスプレイ(テレビ画面)に表示される。この図15から分かるように、3D空間において、地形オブジェクトの側面(壁)が45度の方向に延びていても、テレビ画面上におけるその角度は異なり、キャラクタオブジェクトに対面する壁においては、45度よりも小さい角度になっている。たとえば、仮想カメラの角度(仮想カメラと注視点とを結ぶ直線と、3D空間の水平面とがなす角度)が45度である場合には、キャラクタオブジェクトに対面する地形オブジェクトの壁の角度は22度程度で表示されてしまう。プレイヤはこのようなテレビ画面を見ながらキャラクタオブジェクトの移動等を操作するので、たとえば、当該壁に沿うようにキャラクタオブジェクトを移動させる場合には、スティックによって、22度の方向を指示してしまう。その結果、45度方向に延びる壁に沿って移動させるつもりがゲーム空間内においてキャラクタオブジェクトが22度の方向に移動してしまい、テレビ画面上ではより狭い角度(たとえば、10度)で移動するように表示されてしまっていた。
それゆえに、この発明の主たる目的は、オブジェクトの簡単な操作を実現できる、画像生成プログラムおよび画像生成装置を提供することである。
また、この発明の他の目的は、斜めのアングルから捕えた3次元空間であっても、真上から見下ろしているように空間を把握できる、画像生成プログラムおよび画像生成装置を提供することできる。
上記課題を解決するために、本発明は以下の構成を採用した。なお、括弧内の参照符号や図番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
請求項1は、操作手段(22;実施例で示す参照符号。以下同じ。)の操作対象である対象オブジェクト(82)と操作対象以外の複数の非対象オブジェクト(84)とが配置された3次元の仮想空間の様子を、仮想空間(80;ワールド座標系)における仮想カメラ(86)に基づく投影平面(88)に投影変換し、かつ描画領域(48)に描画することによって仮想カメラから見える画像を生成する処理をコンピュータ(36,42)に実行させる画像生成プログラムであって、コンピュータを倍率算出手段および投影描画手段として昨日させる。倍率算出手段(S23)は、コンピュータを、仮想カメラの投影平面上の第1方向(投影平面の横方向)または第1方向に直行する第2方向(投影平面の縦方向)のいずれか一方向に対して、投影平面上に投影された非対象オブジェクトを拡大または縮小するための倍率を、仮想空間における水平平面(ワールド座標系におけるXZ平面)に対して仮想カメラが向いている角度に基づいて算出するように機能させる。投影描画手段(S11)は、コンピュータを、非対象オブジェクトを投影平面に並行投影変換(S51)し、かつ投影平面に投影された非対象オブジェクトを倍率に基づいて拡大または縮小して、非対象オブジェクトを描画領域に描画するように機能させる。
請求項1の発明によれば、仮想空間の水平平面に対して向いている仮想カメラの角度に基づいて算出した倍率によって非対象オブジェクトを拡大または縮小して描画領域に描画しているので、非対象オブジェクトだけを真上から見たような状態でたとえばテレビ画面に表示させることができる。
請求項2は請求項1に従属し、倍率算出手段が、投影平面に投影された非対象オブジェクトの水平断面形状が、仮想空間における非対象オブジェクトの投影変換前の水平断面形状と略同じ形状になるように、投影平面上の第1方向または第2方向に拡大または縮小するための倍率を、仮想カメラが向いている角度に基づいて算出するように、コンピュータを機能させる。
請求項2の発明によれば、当該非対象オブジェクトを、仮想空間において真上から見たような形状で表示することができる。言い換えれば、斜めアングルから捕えた3次元空間にであっても、真上から見下ろしたように空間を把握することができる。
請求項3は請求項1または2に従属し、投影描画手段に、仮想空間におけるクリッピング領域内のすべてのオブジェクトに対して拡大または縮小の処理を実行させ、拡大または縮小の処理を実行したときに対象オブジェクトの形状が元の形状に戻るように、対象オブジェクトの水平断面形状を縮小または拡大して配置する配置手段として、コンピュータをさらに機能させる。
請求項3の発明によれば、たとえば、投影描画手段(S9,S11)が拡大の処理を実行するときには、対象オブジェクトの水平断面形状を縮小しておき、逆に投影描画手段が縮小の処理を実行するときには、対象オブジェクトの水平断面形状を拡大しておく。したがって、対象オブジェクトはそのままの形状で表示されることとなるので、ゲームのリアリティを必要以上に損なうなどの不都合はなく、ゲームへの興味を減退してしまうこともない。
請求項4は請求項1ないし3のいずれかに従属し、投影描画手段が、並行投影変換し、かつ倍率に基づく拡大または縮小するための行列式を生成し、行列式に基づいて投影変換および拡大または縮小処理を行わせた後、描画領域にオブジェクトを描画するように、コンピュータを機能させる。
請求項4の発明によれば、行列式に従って、投影変換および拡大または縮小の処理を実行するので、座標変換を簡単に行うことができる。
請求項5は請求項1ないし4のいずれかに従属し、仮想空間の水平平面に対する仮想カメラの向いている角度を検出するカメラ角度検出手段として、コンピュータをさらに機能させる。
請求項5の発明によれば、検出された角度に基づく倍率で、投影平面に投影されたオブジェクトが縮小されるので、たとえば、当該倍率の逆数で拡大すれば、対象オブジェクトの形状を元の形状に戻すことができる。
請求項6は請求項1ないし5のいずれかに従属し、拡大する方向は投影平面に対する縦方向であり、縮小する方向は投影平面に対する横方向である。
請求項6の発明によれば、仮想カメラによって斜め上方から見た非対象オブジェクトを、真上から見たように表示することができる。
請求項7は請求項1ないし6のいずれかに従属し、非対象オブジェクトは地形オブジェクトまたは建物オブジェクトを含む。
請求項7の発明によれば、形状を変化させるのは、地形オブジェクトまたは建物オブジェクトのような背景オブジェクトであり、プレイヤオブジェクトのようなキャラクタオブジェクトはそのままの形状で表示するようにするので、ゲームのリアリティを必要以上に損なうことがない。すなわち、ゲームへの興味減退を防止することができる。
請求項8は、操作手段の操作対象である対象オブジェクトと操作対象以外の複数の非対象オブジェクトとが配置された3次元の仮想空間の様子を、仮想空間における仮想カメラに基づく投影平面に投影変換し、かつ描画領域に描画することによって仮想カメラから見える画像を生成する画像生成装置である。この画像生成装置は、仮想カメラの投影平面上の第1方向または第1方向に直行する第2方向のいずれか一方向に対して、投影平面上に投影された非対象オブジェクトを拡大または縮小するための倍率を、仮想空間における水平平面に対して仮想カメラが向いている角度に基づいて算出する倍率算出手段、および非対象オブジェクトを投影平面に並行投影変換し、かつ投影平面に投影された非対象オブジェクトを倍率に基づいて拡大または縮小して、非対象オブジェクトを描画領域に描画する投影描画手段を備える。
請求項8の発明においても請求項1の発明と同様に、仮想空間の水平平面に対して向いている仮想カメラの角度に基づいて算出した倍率によって非対象オブジェクトを拡大または縮小して描画領域に描画しているので、非対象オブジェクトだけを真上から見たような状態でテレビ画面に表示させることができる。
請求項9は請求項8に従属し、倍率算出手段は、投影平面に投影された非対象オブジェクトの水平断面形状が、仮想空間における非対象オブジェクトの投影変換前の水平断面形状と略同じ形状になるように、投影平面上の第1方向または第2方向に拡大または縮小するための倍率を、仮想カメラが向いている角度に基づいて算出する。
請求項10は請求項8または9に従属し、投影描画手段は、仮想空間におけるクリッピング領域内のすべてのオブジェクトに対して拡大または縮小の処理を実行し、投影描画手段によって拡大または縮小の処理が実行されたときに、対象オブジェクトの形状が元の形状に戻るように、対象オブジェクトの水平断面形状を縮小または拡大して配置する配置手段をさらに備える。
請求項11は請求項8ないし10のいずれかに従属し、投影描画手段は、並行投影変換し、かつ倍率に基づく拡大または縮小するための行列式を生成し、行列式に基づいて投影変換および拡大または縮小の処理を実行した後、描画領域にオブジェクトを描画する。
請求項12は請求項8ないし11のいずれかに従属し、仮想空間の水平平面に対する仮想カメラの向いている角度を検出するカメラ角度検出手段をさらに備える。
請求項13は請求項8ないし12のいずれかに従属し、拡大する方向は投影平面に対する縦方向であり、縮小する方向は投影平面に対する横方向である。
請求項14は請求項8ないし13のいずれかに従属し、非対象オブジェクトは地形オブジェクトまたは建物オブジェクトを含む。
この発明によれば、投影平面に投影された建物オブジェクトや壁オブジェクトのような非対象オブジェクトを仮想カメラの角度に基づく倍率で拡大または縮小するので、画面上の当該非対象オブジェクトが真上から見たように表示される。これにより、たとえばテレビ画面などに表示された非対象オブジェクトに沿って対象オブジェクトを移動させる場合、操作手段の操作による対象オブジェクトの移動方向とテレビ画面上の対象オブジェクトの移動方向とが一致するので、対象オブジェクトの操作を簡単に行うことができる。すなわち、操作性を向上できる。
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
図1を参照して、この発明の一実施例である画像生成プログラムまたは画像生成装置を備えるビデオゲーム装置12を含むビデオゲームシステム10について説明する。ビデオゲーム装置12には電源が与えられるが、この電源は、実施例では、一般的なACアダプタ(図示せず)であってよい。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、ビデオゲーム装置12を駆動するのに適した低いDC電圧に変換する。他の実施例としては、電源として、バッテリが用いられてもよい。
ビデオゲーム装置12は、略立方体のハウジング14を含み、ハウジング14の上端には光ディスクドライブ16が設けられる。光ディスクドライブ16には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が装着される。ハウジング14の前面には複数の(実施例では4つの)コネクタ20が設けられる。これらコネクタ20は、ケーブル24によって、コントローラ22をビデオゲーム装置12に接続するためのものであり、この実施例では最大4つのコントローラ22をビデオゲーム装置12に接続することができる。
コントローラ22には、その上面,下面,或いは側面などに、操作部(操作スイッチ)26が設けられる。操作部26は、たとえば2つのアナログジョイスティック,1つの十字キー,複数のボタンスイッチ等を含む。1つのアナログジョイスティックは、スティックの傾き量と方向とによって、プレイヤオブジェクト(プレイヤがコントローラ22によって操作可能な動画オブジェクト)の移動方向および/または移動速度ないし移動量などを入力するために用いられる。他のアナログジョイスティックは、傾斜方向によって、仮想カメラの移動を制御する。十字スイッチは、アナログジョイスティックに代えてプレイヤオブジェクトの移動方向を指示するために用いられる。ボタンスイッチは、プレイヤオブジェクトの動作を指示するために利用されたり、3次元画像の仮想カメラの視点を切り換えたり、プレイヤオブジェクトの移動スピード調節等に用いられる。ボタンスイッチは、さらに、たとえばメニュー選択やポインタあるいはカーソル移動を制御する。
なお、この実施例ではコントローラ22がそれと一体的に設けられるケーブル24によってビデオゲーム装置12に接続された。しかしながら、コントローラ22は、他の方法、たとえば電磁波(たとえば電波または赤外線)を介してワイヤレスで、ビデオゲーム装置12に接続されてもよい。また、コントローラ22の操作部26の具体的構成は、もちろん実施例の構成に限られるものではなく、任意の変形が可能である。たとえば、アナログジョイスティックは1つだけでもよいし、用いられなくてもよい。十字スイッチは用いられなくてもよい。
ビデオゲーム装置12のハウジング14の前面であり、コネクタ20の下方には、1つまたは複数の(この実施例では2つの)メモリスロット28が設けられる。このメモリスロット28にはメモリカード30が挿入される。メモリカード30は、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(たとえばゲームの結果)を保存(セーブ)しておいたりするために利用される。
ビデオゲーム装置12のハウジング14の後面には、AVケーブルコネクタ(図示せず)が設けられ、そのコネクタを用いて、AVケーブル32を通してビデオゲーム装置12にモニタ34を接続する。このモニタ34は典型的にはカラーテレビジョン受像機であり、AVケーブル32は、ビデオゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声、または2スピーカであってもサラウンド効果を出すことが可能な場合は、サラウンド音声を含むゲーム音声が出力される。
このゲームシステム10において、ユーザまたはゲームプレイヤがゲーム(または他のアプリケーション)をプレイするために、ユーザはまずビデオゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)をストアしている適宜の光ディスク18を選択し、その光ディスク18をビデオゲーム装置12のディスクドライブ16にローディングする。応じて、ビデオゲーム装置12がその光ディスク18にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、操作部26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。操作部26の他のものを動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3次元(3D)のゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。ビデオゲーム装置12には、中央処理ユニット(以下、「CPU」という。)36が設けられる。このCPU36は、コンピュータ或いはプロセサなどとも呼ばれ、ビデオゲーム装置12の全体的な制御を担当する。CPU36ないしコンピュータは、ゲームプロセサとして機能し、このCPU36には、バスを介して、メモリコントローラ38が結合される。メモリコントローラ38は主として、CPU36の制御の下で、バスを介して結合されるメインメモリ40の書込みや読出しを制御する。このメモリコントローラ38にはGPU(Graphics Processing Unit:グラフィックス処理装置) 42が結合される。
GPU42は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ38を介してCPU36からのグラフィクスコマンド(graphics command :作画命令) を受け、そのコマンドに従って、ジオメトリユニット44およびレンダリングユニット46によって3次元(3D)ゲーム画像を生成する。つまり、ジオメトリユニット44は、3次元座標系の各種オブジェクトやオブジェクト(複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)の回転,移動,変形等の座標演算処理を行う。レンダリングユニット46は、各種オブジェクトの各ポリゴンにテクスチャ(Texture :模様画像)を貼り付けるなどの画像生成処理を施す。したがって、GPU42によって、ゲーム画面上に表示すべき3D画像データが作成され、その画像データがフレームバッファ48内に記憶される。
なお、GPU42が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU42がメモリコントローラ38を介して、メインメモリ40から入手する。
フレームバッファ48は、たとえばラスタスキャンモニタ34の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU42によって1フレーム毎に書き換えられる。具体的には、フレームバッファ48は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F58がメモリコントローラ38を介してフレームバッファ48のデータを読み出すことによって、モニタ34の画面上に3Dゲーム画像が表示される。
また、Zバッファ50は、フレームバッファ48に対応する画素数×1画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ48の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶するものである。
なお、フレームバッファ48およびZバッファ50は、ともにメインメモリ40の一部を用いて構成されてもよい。
メモリコントローラ38はまた、DSP(Digital Signal Processor)52を介して、ARAM54に結合される。したがって、メモリコントローラ38は、メインメモリ40だけでなく、サブメモリとしてのARAM54の書込みおよび/または読出しを制御する。
DSP52は、サウンドプロセサとして働き、メインメモリ40に記憶されたサウンドデータ404b(図3参照)を用いたり、ARAM54に書き込まれている音波形データ(図示せず)を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
メモリコントローラ38は、さらに、バスによって、各インタフェース(I/F)56,58,60,62および64に結合される。コントローラI/F56は、コントローラ22のためのインタフェースであり、コントローラ22の操作部26の操作信号またはデータを、メモリコントローラ38を通してCPU36に与える。ビデオI/F58は、フレームバッファ48にアクセスし、GPU42で作成した画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル32(図1)を介してモニタ34に与える。
外部メモリI/F60は、ビデオゲーム装置12の前面に挿入されるメモリカード30(図1)をメモリコントローラ38に連係させる。それによって、メモリコントローラ38を介して、CPU36がこのメモリカード30にデータを書込み、またはメモリカード30からデータを読み出すことができる。オーディオI/F62は、メモリコントローラ38を通してDSP52から与えられるオーディオデータまたは光ディスク18から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ34のスピーカ34aに与える。
なお、ステレオ音声の場合には、スピーカ34aは、少なくとも、左右1つずつ設けられる。また、サラウンド処理することで、左右2つのスピーカのみであっても後方から音が発生しているように音を聞かせることも可能である。
そして、ディスクI/F64は、そのディスクドライブ16をメモリコントローラ38に結合し、したがって、CPU36がディスクドライブ16を制御する。このディスクドライブ16によって光ディスク18から読み出されたプログラムデータやテクスチャデータ等が、CPU36の制御の下で、メインメモリ40に書き込まれる。
図3にはメインメモリ40のメモリマップが示される。メインメモリ40は、プログラム記憶領域402およびデータ記憶領域404を含む。プログラム記憶領域402には、ゲームメイン処理プログラム402a,画像生成プログラム402bおよび画像表示プログラム402cなどのプログラムが記憶される。
ゲームメイン処理プログラム402aは、ビデオゲーム装置12によって実行されるゲームについてのメインルーチンを処理するプログラムである。画像生成プログラム402bは、当該ゲームに登場するプレイヤオブジェクトや敵(対戦相手)オブジェクトなどの動画オブジェクト、そのような動画オブジェクトによって使用されるアイテムのオブジェクト(アイテムオブジェクト)および当該ゲームの背景オブジェクト(地形オブジェクト、壁オブジェクト、建物オブジェクトおよび床オブジェクトなど)などのゲーム画像を生成するプログラムである。以下、この実施例においては、上述の動画オブジェクトとアイテムオブジェクトとをまとめて「キャラクタオブジェクト」と呼ぶことがある。画像表示プログラム402cは、画像生成プログラム402bによって生成されたゲーム画像をモニタ34に表示するためのプログラムである。
また、データ記憶領域404には、画像データ404a,サウンドデータ404bおよび行列式データ404cなどのデータが記憶される。画像データ404aは、上述したようなゲーム画像を生成するためのポリゴンデータやテクスチャデータのようなデータである。具体的には、当該ゲームに登場するキャラクタオブジェクトの画像データおよび背景オブジェクトの画像データである。サウンドデータ404bは、ゲーム中に演奏される音楽(BGM)や効果音のような音(音楽)についてのデータである。行列式データ404cは、後述するように、画像生成処理において生成される行列式(モデル行列、カメラ行列および射影行列)についてのデータである。
なお、図示は省略するが、メインメモリ40には、当該ゲームの進行に従って発生するゲームデータやフラグデータなども記憶される。
たとえば、図4(A)に示すように、3Dの仮想空間80においては、コントローラ22(コントロール手段26)の操作に従って、移動等の任意のアクションを制御されるプレイヤオブジェクトのようなキャラクタオブジェクト82が配置される。また、コントローラ22の操作を伴わないで、仮想空間80の所定位置に、地形オブジェクト、壁オブジェクト、建物オブジェクトおよび床オブジェクト等の背景オブジェクト84が配置される。このような仮想空間80の所定位置には、さらに、仮想カメラ86が配置され、この仮想カメラ86によって撮影された画像(ゲーム画像)がモニタ34に表示される。
このような3Dの仮想ゲームでは、3Dの仮想空間80が2次元画像でモニタ34に表示される。このため、3次元物体を2次元平面(スクリーン)に投影して表示する必要がある。また、3次元空間内に配置された物体を眺めた場合には、視点に近い物体ほど大きく、遠い物体ほど小さく見えるため、スクリーンに投影する場合には、透視投影されるのが一般的である。これにより、パースのかかったゲーム画像がモニタ34に表示される。たとえば、図4(A)の仮想カメラ86で撮影されたゲーム画像は、図4(B)に示すように、モニタ34に表示される。この図4(B)から分かるように、仮想空間80に配置される正方形の板状の背景オブジェクト84は、画面表示する場合に、台形形状に変形される。
プレイヤは、このゲーム画像を見ながらコントローラ22を操作するが、通常、コントローラ22に設けられるジョイスティックの傾斜方向は、3Dの仮想空間80(ワールド座標系)の方向に対応しているため、キャラクタオブジェクト82を背景オブジェクト84の側面に沿って、画面の奥に向けて移動させる場合には、ジョイスティックを真上方向に傾ければよい。
しかし、ゲーム画像では、背景オブジェクト84が台形形状で表示されるため、プレイヤは、台形形状の背景オブジェクト84の斜辺に沿うように、キャラクタオブジェクト82を移動させるべく、ジョイスティックを斜め上方に傾けてしまうことがある。すると、キャラクタオブジェクト82は、背景オブジェクト84の内部に向けて移動してしまい、プレイヤの操作方向(ジョイスティックの傾斜方向)と画面上のキャラクタオブジェクト82の移動方向とが一致しない。このように、3Dの仮想ゲームでは、キャラクタオブジェクト82を移動させるには、ある程度の空間把握能力(2次元表示されている画面を見て、その状態を3次元空間として把握できる)を要する。
そこで、この実施例では、空間把握能力を要しなくても、簡単にキャラクタオブジェクト82を移動させることができるゲーム画像をモニタ34に表示するようにしてある。以下、その内容について説明する。
まず、図5ないし図7を参照して、この実施例におけるゲーム画像の生成方法の考え方について説明することにする。図5に示すように、この実施例では、仮想カメラ86によって撮影されたゲーム画像すなわち仮想カメラ86から見たゲーム画像は、2次元平面(スクリーン)88に並行投影(直交投影或いは正射影とも呼ばれる。)される。ただし、図5は、図4(A)に示した仮想空間80を視野空間に配置し直した状態を示しており、また、簡単のため、キャラクタオブジェクト82を省略してある。このとき、スクリーン88に投影されたオブジェクト(投影オブジェクト)84´の長さX´は、元の背景オブジェクト84の長さXよりも短くされる。図5に示す例では、投影オブジェクト84´の長さX´は、背景オブジェクト84の長さXのcos(90−θ)倍となる。ただし、θは仮想カメラ86の角度(以下、「カメラ角度」という。)である。
つまり、図6(A)に示すように、スクリーン88には、長方形に変形された(縦方向につぶされた)背景オブジェクト84の画像が表示される。ここで、この並行投影されたゲーム画像をそのままテレビモニタ34に表示した場合であっても、コントローラ22の操作方向と画面上のキャラクタオブジェクト82の移動方向とは一致する。しかし、並行投影した際に、背景オブジェクト84の縦方向の長さが短くされるため、プレイヤがコントローラ22を操作してキャラクタオブジェクト82を背景オブジェクト84に沿ってその周囲を移動させた場合には、キャラクタオブジェクト82が縦の辺に沿って移動する速度と横の辺に沿って移動する速度とに違いが生じてしまい、プレイヤは違和感を覚えてしまう。これは、3Dの仮想空間80に配置される背景オブジェクト84は正方形であり、その辺の長さはすべて同じだからである。
したがって、この実施例では、単に並行投影するだけでなく、さらに、スクリーン88に投影された背景オブジェクト84の形状を変形させて、そのような違和感が生じるのを回避してある。つまり、cos(90−θ)倍された背景オブジェクト84を元の大きさ(形状)と同じ或いは略同じに戻すようにしてある。具体的には、図6(A)に示すように、スクリーン88の長さHからそのスクリーン88の中央を基準に、長さcos(90−θ)Hに相当する部分だけ抜き出し、抜き出した部分が長さHとなるように拡大して、描画バッファ(フレームバッファ48)に描画するようにしてある。すると、背景オブジェクト84は、図7に示すように、3Dの仮想空間80における大きさと同じ或いは略同じ大きさであり、真上から見たように、モニタ34に表示される。
このように、通常より小さな範囲を描画領域として指定する(抜き出す)ことにより、それが通常と同じビューポート設定で同じ範囲のフレームバッファ48に対応させられると、結果として拡大されたように見えるのである。
ただし、プレイヤオブジェクトのように、コントローラ22によってその移動等のアクションを制御されるキャラクタオブジェクト82(操作対象のオブジェクト)については、その形状を変化させると、ゲームのリアリティを損なう恐れがあるため、その形状は変形させずに、図6(B)に示すように、背景オブジェクト84の拡大に伴って、その位置のみを移動させるようにしてある。
また、敵オブジェクトのようなキャラクタオブジェクト82は、ゲームプログラムに従って移動等の任意のアクションを制御されるため、コントローラ22の操作対象ではないが、これらを変形して表示した場合にも、ゲームのリアリティを損ない、ゲーム自体への興味を減退させる恐れがあるため、非操作対象から除外してある。つまり、敵オブジェクトのようなキャラクタオブジェクト82についても、プレイヤオブジェクトと同様に、その形状を変化させないようにしてある。
詳しく説明すると、レンダリングでは、3Dモデル(キャラクタオブジェクトおよび背景オブジェクト等)のモデルデータについてのローカル座標データがモデル行列に従って仮想空間80に配置され、次にカメラ行列に従って視野空間に配置し直され、そして、射影行列に従って2次元に投影され、最後にビューポート設定により2次元座標系がフレームバッファ48の座標系(アドレス)に変換されて色が塗られる。
この実施例では、このような処理のうち、モデル行列、カメラ行列および射影行列の行列生成時に、通常とは異なる計算方法を採用することにより、上述したような拡大スケーリング(scale倍)が行われるようにする。以下、図面を参照しながら、具体的に説明する。
図8(A)に示すように、3次元の仮想空間80に、立方体形状のキャラクタオブジェクト82と同じく立方体形状の背景オブジェクト84を通常のモデル行列で配置し、それらを撮影するように、カメラ角度θを45度に設定した仮想カメラ86を配置する。ただし、ここでは、簡単に説明するために、キャラクタオブジェクト82および背景オブジェクト84の各辺の長さを「1」としてある。
次に、図8(A)に示す仮想空間80が、通常のカメラ行列に従って計算処理が施されると、図8(B)に示すように、仮想カメラ86を中心とした視野空間に配置し直される。そして、通常の射影行列に従って視野空間が2次元平面(スクリーン88)に並行投影される。このとき、図8(A)における、キャラクタオブジェクト82および背景オブジェクト84の上面(仮想空間80の地面に対して水平な面(辺))および側面(仮想空間80の地面に対して垂直な面(辺))の長さがcosθ倍(ここでは、θ=45°であるため、1/√2倍)される。ただし、簡単のため、√2≒1.4とし、1/√2≒0.7としてある。以下、同様である。
ここで、上述したように、拡大スケーリングだけを行うとすると、上面だけでなく、側面も拡大されてしまう。かかる場合には、全体がテレビモニタ34の縦方向に延びて表示されるだけであり、通常の並行投影を行った画面とほとんど変わらない。そこで、上面のみに拡大スケーリングを施すべく、オブジェクト(キャラクタオブジェクト82および背景オブジェクト84)が垂直方向につぶれて(1/scale倍)見えるようなカメラ行列を生成するようにしてある。これにより、画面表示されるキャラクタオブジェクト82および背景オブジェクト84は、その上面(水平方向)にのみ拡大スケーリングが施され、側面(垂直方向)には拡大スケーリングが施されていないように見えるのである。
ただし、キャラクタオブジェクト82については、形の歪みを完全に無くすために、カメラ行列による打消しだけでは補えない水平方向についての拡大スケーリングを打ち消すようなモデル行列が生成される。つまり、水平方向にだけつぶれて(1/scale倍)見えるようなモデル行列が生成される。
具体的には、モデル行列は、背景オブジェクト84についてのモデル行列(数1)と、キャラクタオブジェクト82についてのモデル行列(数2)とが生成される。ローカル空間(仮想空間80のうち仮想カメラ86で撮影可能な範囲についての空間)の原点位置を持ってきたい仮想空間80上の座標を(Px,Py,Pz)とし、ローカル空間のX軸を向けたい仮想空間80上での単位ベクトルを(Xx,Xy,Xz)とし、ローカル空間のY軸を向けたい仮想空間80上の単位ベクトルを(Yx,Yy,Yz)とし、ローカル空間のZ軸を向けたい仮想空間80上の単位ベクトルを(Zx,Zy,Zz)とすると、通常のモデル行列は数1で示される。この数1で示されるモデル行列が背景オブジェクト84を仮想空間80に配置するためのモデル行列である。
Figure 0004219766
また、上述したように、キャラクタオブジェクト82については、形の歪みを無くすようにするため、水平面と平行であり、テレビモニタ34画面の縦方向となる方向(nx,0,nz)(;長さ1の単位ベクトル)に形をつぶして(1/scale倍)配置するように、数2に示すようなモデル行列が生成される。この数2に示すモデル行列は、数1に示すモデル行列に基づいて生成される。
Figure 0004219766
このようなモデル行列に従って、キャラクタオブジェクト82および背景オブジェクト84を3次元の仮想空間80に配置すると、図9(A)に示すように、キャラクタオブジェクト82については、水平方向にだけつぶれたように表示される。ここで、キャラクタオブジェクト82を水平方向にだけつぶれたように表示させる割合は、仮想カメラ86のカメラ角度θによって決定される。上述したように、カメラ角度θは45度に設定されるため、キャラクタオブジェクト82は水平方向に1/√2倍される。
次に、仮想空間80は、図9(B)に示すように、仮想カメラ86を中心とする、視野空間に配置し直される。仮想カメラ86が配置されている仮想空間80上の座標を(Px,Py,Pz)とし、注視点から仮想カメラ86へ向く仮想空間80上の単位ベクトルを(Zx,Zy,Zz)とし、仮想カメラ86の上方向が向いている仮想空間80上の単位ベクトルを(Yx,Yy,Yz)とし、仮想カメラ86の背後から見て仮想カメラ86の右方向における仮想空間80上の単位ベクトルを(Xx,Xy,Xz)とすると、通常のカメラ行列は数3で示される。
Figure 0004219766
ただし、上述したように、この実施例では、仮想空間80に配置されたキャラクタオブジェクト82および背景オブジェクト84が垂直方向(0,1,0)に1/scale倍されて、視野空間に配置し直すようにしてあるため、数4に示すようなカメラ行列に変換される。
Figure 0004219766
このようなカメラ行列に従って視野空間に配置し直されると、図9(B)に示すように、キャラクタオブジェクト82および背景オブジェクト84の側面(垂直面)が1/√2倍されて、その辺の長さが「0.7」にされる。
そして、図10(A)に示すように、視野空間がスクリーン88に並行投影され、さらに、拡大スケーリングが施される。ここで、スクリーン88に投影する視野空間の左端を「left」、右端を「right」、上端を「top」、下端を「bottom」、手前端を「near」、そして、奥端を「far」とすると、通常の射影行列は数5で示される。
Figure 0004219766
ただし、この実施例では、視野空間の上下幅を1/scale倍に指定するようにしてあるため、数5の射影行列は数6に示すように変換される。
Figure 0004219766
この数6に従って並行投影を行うことにより、並行投影の処理と同時に、拡大スケーリング処理も実行されるのである。
なお、射影行列については、ハードウェアの座標系の違いにより、数6に示した場合とは異なる場合がある。たとえば、OpenGLなどの3次元グラフィックス・ライブラリでは、数6の3行目の要素がそれぞれ、0,0,−2/(far−near),−(far+near)/(far−near)となる。
したがって、図10(A)に示すように、並行投影されると、すべてのオブジェクトはその上面および側面が1/√2倍され、その後、拡大スケーリングが施されることにより、その上面および側面が√2倍される。したがって、キャラクタオブジェクト82については、並行投影により、その上面および側面についての辺の長さが約「0.5」にされ、その後、拡大スケーリングにより、各辺の長さが約「0.7」にされる。一方、背景オブジェクト84については、並行投影により、その上面についての辺の長さが約「0.7」にされ、その側面についての辺の長さが約「0.5」にされる。その後、拡大スケーリングにより、背景オブジェクト84の上面についての辺の長さが約「1」にされ、その側面についての辺の長さが約「0.7」にされる。
このように、並行投影および拡大スケーリングが施されるので、背景オブジェクト84の上面だけが拡大されたようなゲーム画像が生成されるのである。したがって、たとえば、図15に示したゲーム画像の元となる3次元の仮想ゲーム空間を、透視投影によらず、この実施例に従うモデリング、並行投影および拡大スケーリングを施すようにすれば、図10(B)に示すようなゲーム画像がテレビモニタ34に表示されるのである。この図10(B)から分かるように、背景オブジェクト84としての地形オブジェクトについては、その上面を真上から見たように表示される。このため、ゲーム画像に表示される背景オブジェクトの傾き方向とコントローラ22の操作方向とが一致或いはほぼ一致するため、たとえば、キャラクタオブジェクト82をその周囲に沿って移動させる場合であっても、操作し易い。
また、図8〜図10に示した例では、背景オブジェクト84を立方体形状としてあるため、その上面だけが拡大されるように説明した。しかし、土管のような背景オブジェクト84では、仮想カメラ86から見た(視野空間における)画像は、図11(A)のように示され、土管の上面(端面)だけでなく内面の一部も見えてしまう。このため、上述したように、この視野空間を並行投影し、拡大スケーリングを行うと、図11(B)に示すような画像が生成される。つまり、土管の上面と内面の一部とが縦方向に拡大され、円形形状にされる。すなわち、投影後の背景オブジェクト84の水平方向における断面形状(水平断面形状)が、投影前における3次元空間に配置された背景オブジェクト84の水平断面形状に一致するように、拡大スケーリングを施していると言える。したがって、背景オブジェクト84を真上から見たように表示することができるのである。
図12は、図2に示したCPU36のゲーム処理を示すフロー図である。この図12を参照して、CPU36がゲーム処理を開始すると、ステップS1で、地面、建物等を形成するための背景オブジェクト84を読み出し、仮想空間80である3次元のワールド座標系に配置する。次に、ステップS3では、コントローラ22の操作対象のキャラクタオブジェクト82すなわちプレイヤオブジェクトおよび仮想カメラ86を読み出し、同じくワールド座標系に配置する。
続くステップS5〜S11に従ってゲーム画像の生成処理(画像生成処理)を実行する。まず、ステップS5では、キャラクタオブジェクト82に対する移動指示があるかどうかを判断する。つまり、CPU36は、コントローラI/F56に設けられるコントロールバッファ(図示せず)に、ジョイスティックからの操作信号(傾き方向、傾き量)が保持されているかどうかを判断する。ステップS5で“NO”であれば、つまりキャラクタオブジェクト82に対する移動指示がなければ、そのままステップS9に移行する。一方、ステップS5で“YES”であれば、つまりキャラクタオブジェクト82に対する移動指示があれば、ステップS7で、コントローラ22からの入力に応じて、キャラクタオブジェクト82および仮想カメラ86の位置座標を算出する。つまり、ステップS7においては、コントロールバッファに保持されたジョイスティックの傾き方向および傾き量に応じてキャラクタオブジェクト82の移動後の位置を算出する。また、仮想カメラ86の位置は、キャラクタオブジェクト82の足元或いはその近傍に設けられる注視点を向くように、移動後のキャラクタオブジェクト82の位置に基づいて算出される。
ステップS9では、後述する行列生成処理(図13参照)を実行し、ステップS11では、後述するジオメトリ・レンダリング処理(図14参照)を実行し、ステップS13で、ゲーム画像を表示する。そして、ステップS15では、ゲーム終了かどうかを判断する。ステップS15で“NO”であれば、つまりゲーム終了でなければ、ステップS5に戻ってゲーム処理を続行する。一方、ステップS15で“YES”であれば、つまりゲーム終了であれば、そのままゲーム処理を終了する。
なお、図12においては、省略してあるが、ゲーム処理においては、ゲーム画像の表示処理だけでなく、ゲームメイン処理を実行したり、敵オブジェクトの移動等を制御したり、ゲームの進行に従って発生するゲームデータを更新したりするなどの処理も実行される。また、ゲームの進行に従って発生されたゲームデータは、所定のイベントやプレイヤの指示に従ってメモリカード30に記憶(セーブ)される。
図13に示すように、CPU36が行列生成処理を開始すると、ステップS21で、仮想カメラ86のカメラ角度θを読み出す(検出する)。なお、カメラ角度θのデフォルト値は45度であるが、プレイヤがコントローラ22によってカメラ角度θを変更することができるため、このステップS21において検出するようにしてある。
続くステップS23では、仮想カメラ86のカメラ角度θに基づいて、投影後の水平断面形状が投影前のオブジェクトの水平断面形状(真上から見た形状)と略同じになるようなスケーリング倍率(scale=1/cos(90−θ))を算出する。次に、ステップS25では、ワールド座標系の水平面に平行であり、かつ奥行き方向、言い換えると、テレビモニタ34画面の縦方向であり、ワールド座標系の水平面に平行な方向に、scale倍されて見えるような並行投影による投影変換行列すなわち数6に示した射影行列を生成する。続いて、ステップS27では、ワールド座標系に配置される全オブジェクトが垂直方向に1/scale倍されて見えるようなカメラ行列、すなわち数4に示したカメラ行列を生成する。
そして、ステップS29では、対象オブジェクトがキャラクタオブジェクト82かどうかを判断する。ステップS29で“YES”であれば、つまり対象オブジェクトがキャラクタオブジェクト82であれば、ステップS31で、テレビモニタ34画面の縦方向に相当する方向(仮想空間における水平平面と平行な方向のみ)に、形状だけを1/scale倍にするためのモデル行列、すなわち数2に示したモデル行列を生成して、ステップS35に進む。一方、ステップS29で“NO”であれば、つまり対象オブジェクトが背景オブジェクト84であれば、ステップS33で、位置も形もそのまま配置するためのモデル行列、すなわち数1に示したモデル行列を生成して、ステップS35に進む。
なお、図示は省略したが、ステップS31およびS33で生成されたモデル行列のデータ、ステップS25で生成されたカメラ行列のデータおよびステップS23で生成された射影行列のデータは、いずれもデータ記憶領域404に一旦記憶される。
ステップS35では、すべてのオブジェクトについてモデル行列を生成したかどうかを判断する。ステップS35で“NO”であれば、つまりモデル行列を生成していないオブジェクトが存在すれば、そのままステップS29に戻る。一方、ステップS35で“YES”であれば、つまりすべてのオブジェクトについてモデル行列を生成すれば、ステップS37で、すべての行列およびオブジェクトを構成するポリゴンの座標データ等をGPU42に与えて、行列生成処理をリターンする。
また、図14に示すように、CPU36の指示の下、GPU42がジオメトリ・レンダリング処理を開始すると、ステップS41で、キャラクタオブジェクト82の形状を縮小する。つまり、数2に示したようなモデル行列に従って、キャラクタオブジェクト(キャラクタオブジェクト82)の形状を縮小する。つまり、1/scale倍する。続くステップS43では、キャラクタオブジェクト82の配置位置を更新する。つまり、ステップS7において算出された、移動後のキャラクタオブジェクト82の位置にキャラクタオブジェクト82を移動させる。ただし、敵オブジェクトのようなゲームプログラムに従って移動を制御されるキャラクタオブジェクトについては、当該ゲームプログラムに従って計算された位置に移動される。
なお、この実施例では、理解を容易にするためにステップS41およびS43が順番に実行されるように記載したが、実際のハードウェアによっては単一の行列式によって同時に実行される。
次のステップS45では、すべてのオブジェクトを仮想カメラ座標系に変換する。つまり、3次元の仮想空間80を、数4に示したようなカメラ行列に従って、視野空間に変換する。そして、ステップS47で、クリッピングおよび隠面処理を施す。詳細な説明は省略するが、クリッピングでは、仮想カメラ86によって撮影可能な範囲からはみ出している部分が切り取られる。また、隠面処理では、仮想カメラ86から見えない部分の線分や面が消去される。
続くステップS49では、光源を所定位置に配置したり、当該光源の光強度を設定したりするなどの光源処理を実行する。次に、ステップS51で、投影平面(スクリーン88)への並行行列生成処理を実行し、ステップS53で、投影平面における描画領域を指定する。つまり、図6(A)に示したように、scale倍率に応じた描画範囲を指定しているのである。ただし、上述したように、この実施例では、投影行列に変形を加えているため、GPU42は、数6に示したような投影行列を用いて、ステップS51およびステップS53の処理を一度に実行しているのである。これにより、背景オブジェクト84についてのみ、上述したような拡大スケーリングが施される。そして、ステップS55で、指定された描画領域すなわちフレームバッファ48にゲーム画像を描画する描画処理を実行して、ジオメトリ・レンダリング処理をリターンする。
この実施例によれば、並行投影によりゲーム画像を生成するとともに、キャラクタオブジェクト以外の背景オブジェクトについて拡大スケーリングを施して、背景オブジェクトを真上から見たように表示するので、テレビ画面などに表示された非対象オブジェクトに沿って対象オブジェクトを移動させる場合、コントローラの操作によるオブジェクトの移動方向と、ゲーム画面上における当該オブジェクトの移動方向とを一致させることができる。つまり、操作が簡単である。
また、拡大スケーリングすることにより、背景オブジェクトの奥行き方向の長さを正確に表現することができるので、操作上の違和感が生じることもない。
さらに、背景オブジェクト以外のキャラクタオブジェクトについては、拡大スケーリングによる変形が生じないように手当てしてあるため、ゲーム世界のリアリティが必要以上に損なわれることがない。したがって、ゲームに対する興味の減退を防止することができる。
なお、上述の実施例では、背景オブジェクトをモニタ画面の縦方向に拡大スケーリングするようにしたが、モニタ画面の横方向に縮小するようにしてもよい。かかる場合には、横方向に1/scale倍するようにすれば、背景オブジェクトを真上方向から見たように表示することができる。
また、上述の実施例では、すべてのオブジェクトに対して拡大スケーリングを施すので、描画時にキャラクタオブジェクトが間延びした画像になることを防止するために、予めキャラクタオブジェクトの水平方向に縮小するようにした。しかし、キャラクタオブジェクトだけ通常の並行投影変換を行い、他のオブジェクトに対してのみ拡大スケーリングを施すようにしてもよい。
さらに、上述の実施例では、ビデオゲーム装置とモニタとが個別に設けられたゲームシステムについて説明したが、モニタとゲーム装置とが一体に設けられる携帯型のゲーム装置、ゲーム機能を備える携帯電話機、PDAやラップトップ型のPCのようなコンピュータにも適用できることは言うまでもない。
この発明の一実施例のゲームシステムを示す図解図である。 図1に示すビデオゲーム装置の電気的な構成を示すブロック図である。 図2に示すメインメモリのメモリマップを示す図解図である。 キャラクタオブジェクト、背景オブジェクトおよび仮想カメラが配置される仮想空間の一例およびそのゲーム画像を示す図解図である。 仮想空間を視野空間に配置し直した背景オブジェクトを並行投影した状態を図解図である。 スクリーンに並行投影された背景オブジェクトおよびキャラクタオブジェクトを描画バッファに書き込んだ状態を示す図解図である。 背景オブジェクトの上面のみに拡大スケーリングを施した場合のゲーム画像の一例を示す図解図である。 キャラクタオブジェクト、背景オブジェクトおよび仮想カメラが配置される仮想空間の他の一例およびその仮想空間を通常のカメラ行列に従って配置し直した視野空間を示す図解図である。 キャラクタオブジェクト、背景オブジェクトおよび仮想カメラが配置される仮想空間のその他の一例およびその仮想空間を全オブジェクトの側面が短くされるように計算方法を変えたカメラ行列に従って配置し直した視野空間を示す図解図である。 図9に示した視野空間を並行投影し、拡大スケーリングを行った状態を示す図解図およびゲーム画像のその他の一例を示す図解図である。 仮想カメラから見た背景オブジェクトの画像とその画像を並行投影するとともに拡大スケーリングを行った画像を示す図解図である。 図2に示すCPUのゲーム処理を示すフロー図である。 図2に示すCPUの行列生成処理を示すフロー図である。 図2に示すGPUのジオメトリ・レンダリング処理を示すフロー図である。 従来のゲーム装置によって表示されるゲーム画像の一例を示す図解図である。
符号の説明
10 …ゲームシステム
12 …ゲーム装置
18 …光ディスク
22 …コントローラ
34 …モニタ
34a …スピーカ
36 …CPU
38 …メモリコントローラ
40 …メインメモリ
42 …GPU
52 …DSP
54 …ARAM
62 …オーディオI/F

Claims (14)

  1. 操作手段の操作対象である対象オブジェクトと操作対象以外の複数の非対象オブジェクトとが配置された3次元の仮想空間の様子を、前記仮想空間における仮想カメラに基づく投影平面に投影変換し、かつ描画領域に描画することによって前記仮想カメラから見える画像を生成する処理をコンピュータに実行させる画像生成プログラムであって、
    前記コンピュータを、
    前記仮想カメラの投影平面上の第1方向または前記第1方向に直行する第2方向のいずれか一方向に対して、前記投影平面上に投影された前記非対象オブジェクトを拡大または縮小するための倍率を、前記仮想空間における水平平面に対して前記仮想カメラが向いている角度に基づいて算出する倍率算出手段、および
    前記非対象オブジェクトを前記投影平面に並行投影変換し、かつ前記投影平面に投影された非対象オブジェクトを前記倍率に基づいて拡大または縮小して、前記非対象オブジェクトを前記描画領域に描画する投影描画手段として機能させる、画像生成プログラム。
  2. 前記倍率算出手段が、前記投影平面に投影された前記非対象オブジェクトの水平断面形状が、前記仮想空間における前記非対象オブジェクトの投影変換前の水平断面形状と略同じ形状になるように、前記投影平面上の第1方向または第2方向に拡大または縮小するための倍率を、前記仮想カメラが向いている角度に基づいて算出するように、前記コンピュータを機能させる、請求項1記載の画像生成プログラム。
  3. 前記投影描画手段に、前記仮想空間におけるクリッピング領域内のすべてのオブジェクトに対して拡大または縮小の処理を実行させ、
    拡大または縮小の処理を実行したときに前記対象オブジェクトの形状が元の形状に戻るように、前記対象オブジェクトの水平断面形状を縮小または拡大して配置する配置手段として、前記コンピュータをさらに機能させる、請求項1または2記載の画像生成プログラム。
  4. 前記投影描画手段が、前記並行投影変換し、かつ前記倍率に基づく拡大または縮小するための行列式を生成し、前記行列式に基づいて投影変換および拡大または縮小処理を行わせた後、前記描画領域に前記オブジェクトを描画するように、前記コンピュータを機能させる、請求項1ないし3のいずれかに記載の画像生成プログラム。
  5. 前記仮想空間の水平平面に対する前記仮想カメラの向いている角度を検出するカメラ角度検出手段として、前記コンピュータをさらに機能させる、請求項1ないし4のいずれかに記載の画像生成プログラム。
  6. 前記拡大する方向は前記投影平面に対する縦方向であり、前記縮小する方向は前記投影平面に対する横方向である、請求項1ないし5のいずれかに記載の画像生成プログラム。
  7. 前記非対象オブジェクトは地形オブジェクトまたは建物オブジェクトを含む、請求項1ないし6のいずれかに記載の画像生成プログラム。
  8. 操作手段の操作対象である対象オブジェクトと操作対象以外の複数の非対象オブジェクトとが配置された3次元の仮想空間の様子を、前記仮想空間における仮想カメラに基づく投影平面に投影変換し、かつ描画領域に描画することによって前記仮想カメラから見える画像を生成する画像生成装置であって、
    前記仮想カメラの投影平面上の第1方向または前記第1方向に直行する第2方向のいずれか一方向に対して、前記投影平面上に投影された前記非対象オブジェクトを拡大または縮小するための倍率を、前記仮想空間における水平平面に対して前記仮想カメラが向いている角度に基づいて算出する倍率算出手段、および
    前記非対象オブジェクトを前記投影平面に並行投影変換し、かつ前記投影平面に投影された非対象オブジェクトを前記倍率に基づいて拡大または縮小して、前記非対象オブジェクトを前記描画領域に描画する投影描画手段を備える、画像生成装置。
  9. 前記倍率算出手段は、前記投影平面に投影された前記非対象オブジェクトの水平断面形状が、前記仮想空間における前記非対象オブジェクトの投影変換前の水平断面形状と略同じ形状になるように、前記投影平面上の第1方向または第2方向に拡大または縮小するための倍率を、前記仮想カメラが向いている角度に基づいて算出する、請求項8記載の画像生成装置。
  10. 前記投影描画手段は、前記仮想空間におけるクリッピング領域内のすべてのオブジェクトに対して拡大または縮小の処理を実行し、
    前記投影描画手段によって拡大または縮小の処理が実行されたときに、前記対象オブジェクトの形状が元の形状に戻るように、前記対象オブジェクトの水平断面形状を縮小または拡大して配置する配置手段をさらに備える、請求項8または9記載の画像生成装置。
  11. 前記投影描画手段は、前記並行投影変換し、かつ前記倍率に基づく拡大または縮小するための行列式を生成し、前記行列式に基づいて投影変換および拡大または縮小の処理を実行した後、前記描画領域に前記オブジェクトを描画する、請求項8ないし10のいずれかに記載の画像生成装置。
  12. 前記仮想空間の水平平面に対する前記仮想カメラの向いている角度を検出するカメラ角度検出手段をさらに備える、請求項8ないし11のいずれかに記載の画像生成装置。
  13. 前記拡大する方向は前記投影平面に対する縦方向であり、前記縮小する方向は前記投影平面に対する横方向である、請求項8ないし12のいずれかに記載の画像生成装置。
  14. 前記非対象オブジェクトは地形オブジェクトまたは建物オブジェクトを含む、請求項8ないし13のいずれかに記載の画像生成装置。
JP2003294378A 2003-08-18 2003-08-18 画像生成プログラムおよび画像生成装置 Expired - Lifetime JP4219766B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003294378A JP4219766B2 (ja) 2003-08-18 2003-08-18 画像生成プログラムおよび画像生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003294378A JP4219766B2 (ja) 2003-08-18 2003-08-18 画像生成プログラムおよび画像生成装置

Publications (2)

Publication Number Publication Date
JP2005063266A JP2005063266A (ja) 2005-03-10
JP4219766B2 true JP4219766B2 (ja) 2009-02-04

Family

ID=34370968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003294378A Expired - Lifetime JP4219766B2 (ja) 2003-08-18 2003-08-18 画像生成プログラムおよび画像生成装置

Country Status (1)

Country Link
JP (1) JP4219766B2 (ja)

Also Published As

Publication number Publication date
JP2005063266A (ja) 2005-03-10

Similar Documents

Publication Publication Date Title
US7327361B2 (en) Three-dimensional image generating apparatus, storage medium storing a three-dimensional image generating program, and three-dimensional image generating method
JP3637031B2 (ja) ゲーム装置およびゲームプログラム
US8012018B2 (en) Game apparatus and storage medium storing game program
US8647197B2 (en) Storage medium storing game program and game apparatus
US7753785B2 (en) Game apparatus, storing medium that stores control program of virtual camera, and control method of virtual camera
US7338373B2 (en) Method and apparatus for generating sounds in a video game
US7104891B2 (en) Game machine and game program for displaying a first object casting a shadow formed by light from a light source on a second object on a virtual game space
US20140002456A1 (en) Image processing apparatus and storing medium that stores image processing program
US20060046844A1 (en) Video game device and image processing program
US7023434B2 (en) Image processing apparatus and image processing program
US6326967B1 (en) Image creating apparatus, image creating method, and computer-readable recording medium containing image creating program
US6390918B1 (en) Video game apparatus, model display method for video games, and readable recording medium for storing model display program for video games
JP3602835B2 (ja) ビデオゲーム装置およびその制御方法ならびにゲームプログラム
JP4219766B2 (ja) 画像生成プログラムおよび画像生成装置
JP3839355B2 (ja) ゲーム装置およびゲームプログラム
JP4054708B2 (ja) ゲーム装置およびゲームプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081017

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081112

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4219766

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111121

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111121

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121121

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121121

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121121

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131121

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term