JP4079249B2 - ゲーム装置及びゲームプログラム - Google Patents
ゲーム装置及びゲームプログラム Download PDFInfo
- Publication number
- JP4079249B2 JP4079249B2 JP2002161600A JP2002161600A JP4079249B2 JP 4079249 B2 JP4079249 B2 JP 4079249B2 JP 2002161600 A JP2002161600 A JP 2002161600A JP 2002161600 A JP2002161600 A JP 2002161600A JP 4079249 B2 JP4079249 B2 JP 4079249B2
- Authority
- JP
- Japan
- Prior art keywords
- shadow
- pixel
- volume
- value
- shadow volume
- 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 - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は、ゲーム装置及びゲームプログラムに関し、より特定的には、ゲーム処理において仮想三次元のゲーム空間における第1オブジェクトおよび第2オブジェクトを表示するときに、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を表示するゲーム装置及びゲームプログラムに関する。
【0002】
【従来の技術】
従来よりコンピュータグラフィクスを実現するコンピュータにおける陰影処理では、いわゆるレイトレーシングやラディオシティなどを採用することによって、リアルな陰影を付けたコンピュータグラフィクスが実現されている。これらレイトレーシングやラディオシティによれば、複数の光源に基づく影を正確に描画することができる。より具体的には、すべての光源からの光が届かない本影や、一部の光源からの光が届く半影をリアルに描画することができる。
【0003】
一方、ゲーム機による3次元ゲーム処理では、1フレーム(1/30秒または1/60秒)内にゲーム画像を生成する必要があり、上記コンピュータグラフィクスのような処理時間のかかる処理を採用できない。そこで従来のゲーム機では、予め影画像(または影ポリゴン)を用意しておき、適宜その影画像をキャラクタの下に置くことによって、3次元ゲーム空間におけるキャラクタ等の影を表示しているものが多かった。このような陰影処理で表示される影は、例えば本影のみで表されていたのでリアルさにかけるという問題があった。
【0004】
そこで、特開平2001−84400号公報に記載されているように、本影と半影によって構成されるリアルな影を表示するための陰影処理が提案されている。この技術では、まず本影に対応する影画像(第1陰影像)をシャドウポリゴン法などを用いて生成し、この第1陰影像に基づいて、半影に対応する影画像(第2陰影像)を生成する。具体的には、第1陰影像からエッジのぼやけたマスクを生成し、このマスクの位置を適宜シフトさせることによって1以上の第2陰影像を生成する。そしてこれら第1陰影像および第2陰影像を加算等により合成し、最終的な影を生成する。
【0005】
【発明が解決しようとする課題】
しかしながら、前述の公報に記載の陰影処理によれば、本影については影が落ちる物体の凹凸に応じた正確な影を描画することができるが、半影については影が落ちる物体の凹凸に応じた正確な影を描画することができない。なぜなら、第2陰影像は第1陰影像の単なる複製であって、半影が落ちる領域の凹凸に基づいて生成されたものではないからである。その結果、不自然な影が表示されてしまう可能性がある。
【0006】
それゆえに本発明の目的は、シャドウボリュームを用いて本影および半影を有するリアルな影を描画することのできるゲーム装置及びゲームプログラムを提供することである。
【0007】
【課題を解決するための手段および発明の効果】
この発明は、上記の目的を達成するために、次のように構成される。
すなわち、請求項1に係る発明によれば、ゲーム装置は、ゲーム処理において仮想三次元のゲーム空間における第1オブジェクト(実施例との対応関係を示せば、例えばキャラクタオブジェクト)および第2オブジェクト(地形オブジェクト)を表示するときに、第2オブジェクト上に落ちる第1オブジェクトの影を表示するものであって、シャドウボリューム記憶手段(DVD−ROM300またはメインメモリ17等のメモリ)と、シャドウボリューム配置手段(ステップS1606を実行するCPU10;以下、単にステップ番号のみを示す)と、影領域判定手段(S1901〜S1906)と、影描画手段(S1907)とを備える。シャドウボリューム記憶手段は、第1オブジェクトの輪郭および第1の光源(光源A)からの光線方向に基づく第1シャドウボリューム(シャドウボリュームA)と、第1オブジェクトの輪郭および第2の光源(光源B)からの光線方向に基づく第2シャドウボリューム(シャドウボリュームB)とを記憶する。シャドウボリューム配置手段は、第1オブジェクトの配置座標に基づいて第1シャドウボリュームおよび第2シャドウボリュームを配置する。影領域判定手段は、第2オブジェクト上において、第1シャドウボリュームおよび第2シャドウボリュームのいずれかのみと交わる半影領域と、第1シャドウボリュームおよび第2シャドウボリュームの両方と交わる本影領域とを判定する。影描画手段は、影領域判定手段の判定結果に基づいて、半影領域および本影領域に対応する第2オブジェクト上の領域の色情報(カラーバッファ14に格納された輝度情報)をそれぞれ異なる度合いで変化させることにより、第2オブジェクト上に落ちる第1オブジェクトの影を描画する。これにより、シャドウボリュームを用いて影を描画する場合であっても複数の光源による影をよりリアルに表示することができる。また、予め用意しておいたシャドウボリュームを利用するため、ゲーム処理の進行に応じてシャドウボリュームを逐一生成する場合に比べて処理負担を軽減することができる。ここで、第1オブジェクトの輪郭とは、第1オブジェクトの輪郭として利用される輪郭であり、第1オブジェクトに基づいて忠実に再現された輪郭だけでなく、例えば第1オブジェクトの形状の大まかな凹凸によって構成される輪郭であってもよい。また、影領域判定手段は、影領域判定用の非表示バッファ(ステンシルバッファ16)と、ゲーム空間における奥行きを判定するためのZバッファ(Zバッファ15)とを含む。影領域判定手段は、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するZバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの裏面のピクセルが奥側(換言すれば、裏面かつ隠れている部分)であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ増加/減少させる(S1902)。また影領域判定手段は、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するZバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの表面のピクセルが奥側(換言すれば、表面かつ隠れている部分)であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ減少/増加させる(S1904)。影描画手段は、各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させる。これにより、ステンシルバッファのカウント値を適宜増減するだけで半影領域および本影領域を簡単に判定することができ、またシャドウボリュームの内側に視点が配置された場合であっても影を正確に表示することができる。
【0009】
また、請求項2に係る発明によれば、ゲーム装置は、ゲーム処理において仮想三次元のゲーム空間における第1オブジェクトおよび第2オブジェクトを表示するときに、第2オブジェクト上に落ちる第1オブジェクトの影を表示するものであって、シャドウボリューム記憶手段と、シャドウボリューム配置手段と、影領域判定手段と、影描画手段とを備える。シャドウボリューム記憶手段は、第1オブジェクトの輪郭および第1の光源からの光線方向に基づく第1シャドウボリュームを記憶する。シャドウボリューム配置手段は、第1オブジェクトの配置座標に基づいて第1シャドウボリュームを配置する。影領域判定手段は、第2オブジェクト上において、第1シャドウボリュームと交わる影領域を判定する。影描画手段は、影領域判定手段の判定結果に基づいて、影領域に対応する第2オブジェクト上の領域の色情報を変化させることにより、第2オブジェクト上に落ちる第1オブジェクトの影を描画する。また、影領域判定手段は、影領域判定用の非表示バッファ(ステンシルバッファ16)と、ゲーム空間における奥行きを判定するためのZバッファ(Zバッファ15)とを含む。影領域判定手段は、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するZバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの裏面のピクセルが奥側(換言すれば、裏面かつ隠れている部分)であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ増加/減少させる(S1902)。また影領域判定手段は、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するZバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの表面のピクセルが奥側(換言すれば、表面かつ隠れている部分)であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ減少/増加させる(S1904)。影描画手段は、各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させる。これにより、ステンシルバッファのカウント値を適宜増減するだけで半影領域および本影領域を簡単に判定することができ、またシャドウボリュームの内側に視点が配置された場合であっても影を正確に表示することができる。
【0010】
また、請求項3に係る発明によれば、非表示バッファの増減値が光源の影響度に応じてシャドウボリュームごとに個別に決められている(図22、図24)。これにより、光源の影響を考慮したよりリアルな半影を簡単に表示することができる。
【0011】
また、請求項4に係る発明によれば、ゲームプログラムは、ゲーム処理において仮想三次元のゲーム空間における第1オブジェクト(キャラクタオブジェクト)および第2オブジェクト(地形オブジェクト)を表示するときに、第2オブジェクト上に落ちる第1オブジェクトの影を表示するためにゲーム装置(ゲーム機本体100)のコンピュータにより実行されるものであって、このコンピュータに、シャドウボリューム読み出しステップ(S1606)と、シャドウボリューム配置ステップ(S1606)と、影領域判定ステップ(S1901〜S1906)と、影描画ステップ(S1907)とを実行させる。シャドウボリューム読み出しステップは、第1オブジェクトの輪郭および第1の光源(光源A)からの光線方向に基づく第1シャドウボリューム(シャドウボリュームA)と、第1オブジェクトの輪郭および第2の光源(光源B)からの光線方向に基づく第2シャドウボリューム(シャドウボリュームB)とを読み出す。シャドウボリューム配置ステップは、第1オブジェクトの配置座標に基づいて第1シャドウボリュームおよび第2シャドウボリュームを配置する。影領域判定ステップは、第2オブジェクト上において、第1シャドウボリュームおよび第2シャドウボリュームのいずれかのみと交わる半影領域と、第1シャドウボリュームおよび第2シャドウボリュームの両方と交わる本影領域とを判定する。影描画ステップは、影領域判定ステップの判定結果に基づいて、半影領域および本影領域に対応する第2オブジェクト上の領域の色情報(カラーバッファ14に格納された輝度情報)をそれぞれ異なる度合いで変化させることにより、第2オブジェクト上に落ちる第1オブジェクトの影を描画する。これにより、シャドウボリュームを用いて影を描画する場合であっても複数の光源による影をよりリアルに表示することができる。また、影領域判定ステップは、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応する、ゲーム空間における奥行きを判定するためのZバッファ(Zバッファ15)に既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの裏面のピクセルが奥側(換言すれば、裏面かつ隠れている部分)であると判定したとき、このピクセルに対応する、影領域判定用の非表示バッファ(ステンシルバッファ16)の値を所定の値だけ増加/減少させる(S1902)。また、影領域判定ステップは、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するZバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの表面のピクセルが奥側(換言すれば、表面かつ隠れている部分)であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ減少/増加させる(S1904)。影描画ステップは、各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させる。
【0013】
また、請求項5に係る発明によれば、ゲームプログラムは、ゲーム処理において仮想三次元のゲーム空間における第1オブジェクトおよび第2オブジェクトを表示するときに、第2オブジェクト上に落ちる第1オブジェクトの影を表示するためにゲーム装置のコンピュータにより実行されるものであって、このコンピュータに、シャドウボリューム読み出しステップと、シャドウボリューム配置ステップと、影領域判定ステップと、影描画ステップとを実行させる。シャドウボリューム読み出しステップは、第1オブジェクトの輪郭および第1の光源からの光線方向に基づく第1シャドウボリュームを読み出す。シャドウボリューム配置ステップは、第1オブジェクトの配置座標に基づいて第1シャドウボリュームを配置する。影領域判定ステップは、第2オブジェクト上において、第1シャドウボリュームと交わる影領域を判定する。影描画ステップは、影領域判定ステップの判定結果に基づいて、影領域に対応する第2オブジェクト上の領域の色情報を変化させることにより、第2オブジェクト上に落ちる第1オブジェクトの影を描画する。また、影領域判定ステップは、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応する、ゲーム空間における奥行きを判定するためのZバッファ(Zバッファ15)に既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの裏面のピクセルが奥側(換言すれば、裏面かつ隠れている部分)であると判定したとき、このピクセルに対応する、影領域判定用の非表示バッファ(ステンシルバッファ16)の値を所定の値だけ増加/減少させる(S1902)。また、影領域判定ステップは、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するZバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの表面のピクセルが奥側(換言すれば、表面かつ隠れている部分)であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ減少/増加させる(S1904)。影描画ステップは、各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させる。
【0014】
また、請求項6に係る発明によれば、非表示バッファの増減値が光源の影響度に応じてシャドウボリュームごとに個別に決められている(図22、図24)。
【0015】
【発明の実施の形態】
図1は、本発明の一実施形態に係るゲームシステムの構成を示す外観図であり、図2はそのブロック図である。図1、図2に示すように、ゲームシステムは、ゲーム機本体100、DVD−ROM300、外部メモリカード400、コントローラ200、スピーカ600およびTVモニタ500を備える。DVD−ROM300および外部メモリカード400は、ゲーム機本体100に着脱自在に装着される。コントローラ200は、通信ケーブルを介して、ゲーム機本体100に設けられた複数(図1では4つ)のコントローラポート用コネクタのいずれかに接続される。TVモニタ500およびスピーカ600は、AVケーブル等によって接続される。なお、ゲーム機本体100とコントローラ200との通信は無線通信であってもよい。以下、図2を参照しながら、ゲームシステムの各部についてより詳細に説明する。
【0016】
DVD−ROM300は、ゲームプログラムやキャラクタデータ等のゲームに関するデータを固定的に記憶している。プレイヤがゲームを行う場合、DVD−ROM300はゲーム機本体100に装着される。なお、ゲームプログラム等を記憶する手段として、DVD−ROM300の代わりに例えばCD−ROM、MO、メモリカード、ROMカートリッジ等の外部記憶媒体を用いてもよい。
【0017】
外部メモリカード400は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームにおけるセーブデータ等のデータを記録する。
【0018】
ゲーム機本体100は、DVD−ROM300に記録されているゲームプログラムを読み出し、ゲーム処理を行う。
【0019】
コントローラ200は、プレイヤがゲーム操作に関する入力を行うための入力装置であり、複数の操作スイッチを有する。コントローラ200は、プレイヤによる操作スイッチの押圧等に応じて操作データをゲーム機本体100に出力する。
【0020】
TVモニタ500は、ゲーム機本体100から出力された画像データを画面に表示する。なお、スピーカ600は、典型的にはTVモニタ500に内蔵されており、ゲーム機本体100から出力されたゲーム中の音声を出力する。
【0021】
次に、ゲーム機本体100の構成について説明する。図2において、ゲーム機本体100には、CPU10およびそれに接続されるメモリコントローラ20が設けられる。さらにゲーム機本体100において、メモリコントローラ20は、グラフィックスプロセッシングユニット(GPU)11と、メインメモリ17と、DSP18と、各種インターフェース(I/F)21〜24,26とに接続される。メモリコントローラ20は、これら各構成要素間のデータ転送を制御する。
【0022】
ゲーム開始の際、まず、DVDドライブ25は、ゲーム機本体100に装着されたDVD−ROM300を駆動する。DVD−ROM300に記憶されているゲームプログラムは、DVDディスクI/F26およびメモリコントローラ20を介して、メインメモリ17に読み込まれる。メインメモリ17上のプログラムをCPU10が実行することによってゲームが開始される。ゲーム開始後、プレイヤは、操作スイッチを用いてコントローラ200に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ200は、操作データをゲーム機本体100に出力する。コントローラ200から出力される操作データは、コントローラI/F21およびメモリコントローラ20を介してCPU10に入力される。CPU10は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、GPU11やDSP18が用いられる。また、サブメモリ19は、DSP18が所定の処理を行う際に用いられる。
【0023】
GPU11は、ジオメトリユニット12およびレンダリングユニット13を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ14やZバッファ15やステンシルバッファ16として利用される。ジオメトリユニット12は、仮想三次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル(例えばポリゴンで構成されるオブジェクト)の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット13は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについて各ピクセルごとのカラーデータ(RGBデータ)をカラーバッファ14に書き込むことによって、ゲーム画像を生成するためのものである。また、カラーバッファ14は、レンダリングユニット13によって生成されたゲーム画像データ(RGBデータ)を保持するために確保されたメモリ領域である。Zバッファ15は、3次元の視点座標から2次元のスクリーン座標に変換する際に失われる視点からの奥行情報を保持するために確保されたメモリ領域である。ステンシルバッファ16は、後述するシャドウボリュームを用いた影領域の判定を行うために確保されたメモリ領域である。GPU11は、これらバッファを用いてTVモニタ500に表示すべき画像データを生成し、メモリコントローラ20およびビデオI/F22を介して画像データをTVモニタ500に適宜出力する。なお、ゲームプログラム実行時にCPU10において生成される音声データは、メモリコントローラ20からオーディオI/F24を介してスピーカ600に出力される。なお本実施形態では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ17の一部を画像処理用のメモリとして利用する方式(UMA:Unified Memory Architecture)を使うようにしてもよい。
【0024】
図3に、DVD−ROM300のメモリマップを示す。DVD−ROM300には、ゲームプログラムや、オブジェクトデータや、テクスチャデータや、ボリュームデータなどが格納されている。ここでは一例としてゲームプログラムがカートゲーム用のプログラムである場合について説明する。オブジェクトデータには、コースオブジェクトやキャラクタオブジェクトやカートオブジェクトなどのデータが含まれる。テクスチャデータには、コーステクスチャやキャラクタテクスチャやカートテクスチャなどのデータが含まれる。ボリュームデータには、カートシャドウボリュームAやカートシャドウボリュームBなどのデータが含まれる。カートシャドウボリュームの詳細については後述する。
【0025】
以下、本実施形態の動作について具体的に説明する。
ゲーム機本体100のCPU10は、DVD−ROM300に格納されたカートゲーム用のプログラムに基づいてゲーム処理を実行する。このカートゲームでは、仮想三次元のゲーム空間に設置されたコース上を複数のキャラクタがカートに乗って走行する。ゲーム空間には地面・建物等の地形オブジェクトと、プレイヤキャラクタ・敵キャラクタ等のキャラクタオブジェクトが配置され、キャラクタオブジェクトの位置はゲームの進行に応じて適宜変更される。
【0026】
図4に、地形オブジェクトおよびキャラクタオブジェクトが配置された仮想三次元のゲーム空間を示す。ゲーム空間における各オブジェクトの位置はワールド座標系で表される。このゲーム空間をTVモニタ500に表示するために、ゲーム空間において視点(例えばプレイヤキャラクタをその背後から捉えるような視点)が設定される。ワールド座標系で表された各オブジェクトの座標は、この視点を中心とした座標(カメラ座標系)に変換され、その後、各オブジェクトは二次元の投影平面座標系に投影される。この投影平面座標系に投影された各オブジェクトにはテクスチャに基づいて色情報が与えられる。このとき、後述する影描画処理によってコース上に落ちるカートの影も描画される。こうして生成されたゲーム画像が例えば1/60秒毎に生成され、TVモニタ500に表示される。
【0027】
図5に、TVモニタ500に表示されるゲーム画像の一例を示す。コース上には各カートの影が表示される。なお、ここではゲーム空間に複数の光源が設置されている場合の影を示している。このため、コース上に落ちるカートの影には、図6に示すように薄い部分や濃い部分が存在する。以下、この影描画処理について説明する。
【0028】
本実施形態では、カートに対して予めシャドウボリュームが用意されている(図3に示すカートシャドウボリュームAなど)。シャドウボリュームとは、あるオブジェクトが影を落とす空間、言い換えると、あるオブジェクトによって光源からの光が遮られるような空間を規定するものである。このシャドウボリュームを用いることにより、複雑な地形に落ちる影を正確に表示することができる。以下、このシャドウボリュームを用いた影描画処理について図面を参照して簡単に説明する。
【0029】
図7に示すように、地形オブジェクトにおいて、影を落とすオブジェクトのシャドウボリュームと交わる領域が影ができる領域(以下、影領域と称す)となる。なお図6では天空光の場合を示しているが、点光源の場合も同様である。影領域は、ステンシルバッファを用いることにより簡単に判定することができる。ステンシルバッファを用いて影領域を判定するための、本実施形態の手法とは異なる他の手法としては、図8に示すように、まず(a)シャドウボリュームの表面であってかつ影が落ちるオブジェクトよりも手前にある部分の各ピクセルに対応するステンシルバッファの値をインクリメントし、それから(b)シャドウボリュームの裏面であってかつ影が落ちるオブジェクトよりも手前にある部分の各ピクセルに対応するステンシルバッファの値をデクリメントする。なお奥行きの判定にはZバッファが参照される。その結果、ステンシルバッファの値は、影領域の部分は“1”になり、それ以外の部分は“0”となる。しかしながらこの手法では、シャドウボリュームの内部に視点が設定されたときに影領域の部分がインクリメントされず、その結果、影領域を正確に判定できないという問題があった。そこで本実施形態では、図8に示すように、まず(c)シャドウボリュームの裏面であってかつ影が落ちるオブジェクトよりも奥にある部分の各ピクセルに対応するステンシルバッファの値をインクリメントし、それから(d)シャドウボリュームの表面であってかつ影が落ちるオブジェクトよりも奥にある部分の各ピクセルに対応するステンシルバッファの値をデクリメントする。これにより、シャドウボリュームの内部に視点が設定されたときにも影領域を正確に判定することができる。
【0030】
次に、図9〜図14を参照して本実施形態の影描画処理について説明する。
図9は、ゲーム空間に、キャラクタオブジェクト、地形オブジェクト、および3つの光源(光源A〜光源C)が配置されたときの影の様子を示している。光源A〜光源Cからの光はいずれも平行光とする。地形オブジェクト上には、光源Aによる影と光源Bによる影と光源Cによる影とが部分的に互いに重なり合って落ちる。その結果、影には比較的明るい部分と比較的暗い部分が存在することになる。
【0031】
本実施形態では、図9に示すような影を描画するためにシャドウボリュームを用いる。具体的には、図9に示すキャラクタオブジェクトに対して、図10の(a)〜(c)に示す3つのシャドウボリュームを予め用意しておき、これらシャドウボリュームを用いて影を描画する。図10の(a)のシャドウボリュームAは、図9に示す光源Aによる影を描画するためのシャドウボリュームであって、その形は、キャラクタオブジェクトの輪郭を光源Aの光線方向に延長させることによって決定される。同様に、図10の(b)のシャドウボリュームBは、図9に示す光源Bによる影を描画するためのシャドウボリュームであって、その形は、キャラクタオブジェクトの輪郭を光源Bの光線方向に延長させることによって決定される。同様に、図10の(c)のシャドウボリュームCは、図9に示す光源Cによる影を描画するためのシャドウボリュームであって、その形は、キャラクタオブジェクトの輪郭を光源Cの光線方向に延長させることによって決定される。なお、シャドウボリュームは、例えば3次元のキャラクタオブジェクトを作成するための3次元グラフィックツールなどによって予め作られている。本実施例では、発明の理解を容易にするため単純な形状のキャラクタオブジェクトを例に説明している。このため、キャラクタオブジェクトの輪郭も比較的単純である。しかしながら、実際のゲームに登場するキャラクタオブジェクトは複雑な形状である場合が多い。このため、キャラクタオブジェクトの輪郭も複雑となる。このような場合、光源から見たキャラクタオブジェクトのおよその形状に基づいた輪郭によってシャドウボリュームを作成するようにしてもよい。
【0032】
上記のシャドウボリュームA〜シャドウボリュームCは、キャラクタオブジェクトの配置座標に基づいてそれぞれゲーム空間内の所定の位置に配置される。ゲーム空間内に配置されたシャドウボリュームA〜シャドウボリュームCの様子を図11に示す。地形オブジェクト上でこれらシャドウボリュームと交わる領域が影領域となる。
【0033】
本実施形態では、シャドウボリュームに応じてステンシルバッファ16の値をインクリメントまたはデクリメントすることにより影領域の判定を行う。以下、図12を参照して、ステンシルバッファ16のカウント方法について説明する。本実施形態では、シャドウボリュームの裏面でかつ地形オブジェクトに隠れている部分の各ピクセルに対応するステンシルバッファ16の値をインクリメントし、シャドウボリュームの裏面でかつ地形オブジェクトに隠れている部分の各ピクセルに対応するステンシルバッファ16の値をデクリメントする。なお、シャドウボリュームのある部分が地形オブジェクトに隠れているかどうかは地形オブジェクト描画後のZバッファ値を参照して容易に判定することができる。この結果、例えば図12の地点P1に対応するステンシルバッファ16の値は0(初期値を0とした場合)となり、地点P2に対応するステンシルバッファ16の値は1となり、地点P3に対応するステンシルバッファ16の値は2となり、地点P4に対応するステンシルバッファ16の値は1となり、地点P5に対応するステンシルバッファ16の値は0となる。ステンシルバッファ16の値が1以上の地点は影が落ちている地点であることを意味しており、さらにその値が大きいほど影が濃いことを意味している。なお、視点がシャドウボリュームの外部に存在する場合であれば、図8に示した他の手法を用いても同様の結果を得ることができる。その場合のステンシルバッファ16のカウント方法を図13に示す。
【0034】
図11に示すシャドウボリュームA〜シャドウボリュームCの全てについて上記の方法でステンシルバッファ16の値をカウントした結果、ステンシルバッファ16の値は図14に示すような値となる。値が0の領域は、光源A〜光源Cのすべての光源によって照らされている領域を示している。値が1の領域は、いずれか2つの光源によって照らされている領域を示している。値が2の領域は、いずれか1つの光源によって照らされている領域を示している。値が3の領域は、いずれの光源によっても照らされていない領域を示している。
【0035】
次に図14に示したステンシルバッファ16の各ピクセルの値に応じて、これら各ピクセルに対応するカラーバッファ14の色情報がそれぞれ変更される。例えば、地形オブジェクトのテクスチャに基づいてカラーバッファ14に既に格納されている輝度情報が、ピクセル毎に、図14に示したステンシルバッファ16の値に比例した値だけそれぞれ低減される。この結果、図15に示すようなリアルな影がTVモニタ500に表示されることとなる。ただし、輝度を低減する度合いは必ずしもステンシルバッファ16の値に比例する必要はない。
【0036】
次に、本実施形態におけるCPU10またはGPU11の動作について、図16〜図20のフローチャートを参照して説明する。
【0037】
ゲーム処理が開始すると、CPU10は、地面(コースを含む)や建物等を形成するための地形オブジェクトをワールド座標系の初期座標に配置する(ステップS1601)。続いてプレイヤキャラクタや敵キャラクタを含むキャラクタオブジェクトおよび仮想カメラをワールド座標系の初期座標に配置する(ステップS1602)。なお図3ではキャラクタオブジェクトとカートオブジェクトとを別々に記載したが、ここでは両者を区別することなく単にキャラクタオブジェクトと称する。続いてCPU10は、コントローラ200からの入力があったかどうかを判断し(ステップS1603)、入力があった場合には、その内容に応じてプレイヤキャラクタ(プレイヤキャラクタが乗車しているカートを含む)および仮想カメラの位置座標を更新し(ステップS1604)、ステップS1604に進む。一方、ステップS1603においてコントローラ200からの入力がなかった場合にはそのままステップS1604に進む。ステップS1604で、CPU10は、ワールド座標系における敵キャラクタの位置座標を更新する。こうして各キャラクタおよび仮想カメラの位置座標の更新が完了すると、CPU10は、キャラクタオブジェクトに対して予め用意されている複数のシャドウボリューム(図3に示すカートシャドウA、カートシャドウBなど)を、キャラクタオブジェクトの位置座標に基づいてワールド座標系の所定の位置座標に配置する(ステップS1606)。
【0038】
ワールド座標系におけるシャドウボリュームの配置が完了すると、GPU11は、キャラクタオブジェクト、地形オブジェクトおよびシャドウボリュームの位置座標をワールド座標系から仮想カメラの位置を基準とするカメラ座標系に変換し(ステップS1607)、さらにカメラ座標系から二次元の投影平面座標系に変換する(ステップS1608)。このとき、クリッピング処理やテクスチャの指定処理もあわせて行われる。
【0039】
位置座標の変換が完了すると、ゲーム画像生成処理が開始され(ステップS1609)、TVモニタ500に表示すべきゲーム画像が生成される。このゲーム画像生成処理の詳細については後述する。ステップS1609で生成されたゲーム画像はTVモニタ500に表示される(ステップS1610)。その後、CPU10は、ゲームが終了したかどうかを判断し(ステップS1611)、ゲームが続行する場合にはステップS1603に戻り、ゲームが終了した場合にはゲーム処理を終了する。
【0040】
次に、図17を参照して、図16に示すステップS1609のゲーム画像生成処理の詳細について説明する。
ゲーム画像生成処理が開始すると、GPU11は、まず地形オブジェクトの描画処理を行う(ステップS1701)。この地形オブジェクトの描画処理の詳細については後述する。地形オブジェクトの描画が完了すると、地形オブジェクトに落ちる影を描画するための影描画処理を行う(ステップS1702)。この影描画処理の詳細については後述する。影の描画が完了すると、GPU11は、プレイヤキャラクタの描画処理を行い(ステップS1703)、続いて敵キャラクタやアイテム等の描画処理を行う(ステップS1704)。これらキャラクタ等の描画処理の詳細については後述する。こうしてゲーム画像生成処理は終了する。以下、ゲーム画像生成処理における各ステップの処理の詳細について説明する。
【0041】
まず、図18を参照して、図17に示すステップS1701の地形オブジェクトの描画処理の詳細について説明する。
地形オブジェクトの描画処理が開始すると、GPU11は、地面や建物などの地形オブジェクト等に対応するテクスチャの読み出しを行う(ステップS1801)。次に、投影平面座標系に投影された地形オブジェクトの書き込もうとしている部分に対応する各ピクセルのZバッファ15を参照し(ステップS1802)、その書き込もうとしている地形オブジェクトの部分の奥行き情報が、対応するZバッファ値よりも小さいかどうかを判断する(ステップS1803)。奥行き情報がZバッファ値よりも小さい場合は、そのピクセルのZバッファ値を更新し(ステップS1804)、カラーバッファ14のこのピクセルに該当する領域にテクスチャの色情報を書き込んで(ステップS1805)からステップS1806へ進む。一方、ステップS1803で。奥行き情報がZバッファ値よりも小さくない場合はそのままステップS1806へ進む。ステップS1806でGPU11は、地形の描画が終了したかどうか判断し、終了していなければステップS1802に戻り、終了していれば影描画処理に進む。
【0042】
図19を参照して、図17に示すステップS1702の影描画処理の詳細について説明する。
影描画処理が開始すると、GPU11は、まずステンシルバッファ(非表示バッファ)16をクリアする(ステップS1901)。そして、Zバッファ15を参照しながらシャドウボリュームの裏面であってかつ影が落ちるオブジェクトよりも奥にある部分の各ピクセルに対応するステンシルバッファの値をインクリメントする(ステップS1502)。ただしここでは色情報は書き込まれない。そしてシャドウボリュームの裏面処理が終了したかどうかを判断し(ステップS1903)、終了してればステップS1904に進み、終了していなければステップS1902に戻る。次にGPU11は、ステップS1904で、Zバッファ値を参照しながらシャドウボリュームの表面であってかつ影が落ちるオブジェクトよりも奥にある部分の各ピクセルに対応するステンシルバッファの値をデクリメントする。ただしここでは色情報は書き込まれない。そしてシャドウボリュームの表面処理が終了したかどうかを判断し(ステップS1905)、終了していればステップS1906に進み、終了していなければステップS1904に戻る。ステップS1906では全てのシャドウボリュームについてステンシルバッファ16のカウント処理が終了したかどうかを判断し、終了していればステップS1907に進み、終了していなければステップS1902に戻る。次にGPU11は、ステンシルバッファ16の各ピクセルのカウント値を参照して、カラーバッファ14の各ピクセルの色情報(RGB)を更新する。例えば、カラーバッファ14に格納されているRGBの各値を、ピクセル毎に、ステンシルバッファ16の値に比例した値だけ低減する。そして影の描画が終了したかどうか判断し(ステップS1908)、終了していなければステップS1907に戻り、終了していればプレイヤキャラクタの描画処理に進む。
【0043】
図20を参照して、図17に示すステップS1703のプレイヤキャラクタの描画処理の詳細について説明する。
プレイヤキャラクタの描画処理が開始すると、GPU11は、プレイヤキャラクタに対応するテクスチャの読み出しを行う(ステップS2001)。次に、投影平面座標系に投影されたプレイヤキャラクタオブジェクトの書き込もうとしている部分に対応する各ピクセルのZバッファ15を参照し(ステップS2002)、その書き込もうとしているキャラクタオブジェクトの部分の奥行き情報が、対応するZバッファ値よりも小さいかどうかを判断する(ステップS2003)。奥行き情報がZバッファ値よりも小さい場合は、そのピクセルのZバッファ値を更新し(ステップS2004)、カラーバッファ14のこのピクセルに該当する領域にテクスチャの色情報を書き込んで(ステップS2005)からステップS2006へ進む。一方、ステップS2003で。奥行き情報がZバッファ値よりも小さくない場合はそのままステップS2006へ進む。ステップS2006でGPU11は、プレイヤキャラクタの描画が終了したかどうか判断し、終了していなければステップS2002に戻り、終了していれば敵キャラクタ等の描画処理に進む。
【0044】
図17に示すステップS1704の敵キャラクタ等の描画処理の詳細については、前述のプレイヤキャラクタの描画処理と基本的に同様であるので説明を省略する。
【0045】
以上のように本実施形態では、複数の光源に対応する複数のシャドウボリュームをキャラクタオブジェクトごとに予め用意しておき、これらシャドウボリュームに基づいてステンシルバッファ16の値を適宜インクリメントまたはデクリメントし、その結果の値に応じて影描画処理を行う。よって、本影領域および半影領域を正確に判定することができ、その結果、複数の光源による影をよりリアルに描画することが可能となる。
【0046】
なお本実施形態ではゲームプログラムはDVD−ROM300を介してゲーム機本体100に供給されるとしたが、これに限らず、DVD−ROM300以外の他のコンピュータ読み取り可能な記録媒体(例えばCD−ROM、MO、メモリカード、ROMカートリッジ等)に格納されてゲーム機本体100に供給されても構わないし、予めゲーム機本体100に組み込まれていても構わないし、通信回線を通じてゲーム機本体100に供給されても構わない。
【0047】
また本実施形態では描画処理等をGPU11が行うとしたが、CPU10が行ってもよい。
【0048】
また本実施形態では平行光によってできる影を描画する場合について説明したが、これに限らず、例えば点光源からの光によってできる影を描画する場合についても本発明を適用することができる。
【0049】
また本実施形態ではキャラクタオブジェクトに対応する複数のシャドウボリュームを予め用意しておくとしたが、これに限らず、これら複数のシャドウボリュームをゲーム処理において適宜生成するようにしても構わない。この場合、例えば図16に示すフローチャートのステップS1606に先立って、キャラクタオブジェクトの輪郭および各光源の光線方向に基づいて各シャドウボリュームを生成してメインメモリ17等に一時的に記憶しておき、ステップS1606においてこれらシャドウボリュームをゲーム空間に配置すればよい。
【0050】
なお、本実施形態ではシャドウボリュームの表面または裏面をステンシルバッファ16に描画する際にステンシルバッファ16の値をインクリメントまたはデクリメントするとしたが、これに変えて、シャドウボリューム毎に予め所定の値を増減するようにしても構わない。以下、図21〜図26を参照してその例を説明する。
【0051】
地形オブジェクトの影の濃さは光源毎に異なる。例えば図21に示すように、比較的明るい光源Aと比較的暗い光源Bがあったとき、光源Aによる影は光源Bによる影よりも濃くなる。しかしながら前述の図12に示した方法では、これらを判別することはできない。そこで、ここでは図22に示すように、光源Aに対応するシャドウボリュームAをステンシルバッファ16に描画するときにはステンシルバッファ16の値を2だけ増加または減少させ、一方、光源Bに対応するシャドウボリュームBをステンシルバッファ16に描画するときにはステンシルバッファ16の値を1だけ増加または減少させる。増減させる値は光源の影響の度合いを意味している。その結果、ステンシルバッファ16の値は図23に示すような値となる。この値に応じてカラーバッファ14の色情報を更新することにより、図21に示すような影を描画することができる。
【0052】
複数の光源が存在する場合に、ある地点がどの光源には照らされていてどの光源には照らされていないのかを一意に判定することができれば、より多様な影の描画が可能となる。例えば複数の色つき光源(赤色光源、緑色光源、青色光源など)が存在する場合に、赤色光源と青色光源に照らされていて緑色光源には照らされていない領域についてはカラーバッファ14のGの値を低減するといった処理が可能となる。ある地点がどの光源には照らされていてどの光源には照らされていないのかを一意に判定するためには、ステンシルバッファ16にシャドウボリュームを描画するときのステンシルバッファ16の値の増減値が、シャドウボリューム毎に異なる桁となるようにすればよい。例えば図24に示すように、光源Aに対応するシャドウボリュームAについては2進数の1桁目をインクリメントまたはデクリメントし、光源Bに対応するシャドウボリュームBについては2進数の2桁目をインクリメントまたはデクリメントし、光源Cに対応するシャドウボリュームCについては2進数の3桁目をインクリメントまたはデクリメントする。その結果、ステンシルバッファ16の値は図25に示すような値となる。図26に示すように、ステンシルバッファ16の値の1桁目は光源Aに照らされているか否かを示しており、2桁目は光源Bに照らされているか否かを示しており、3桁目は光源Cに照らされているか否かを示している。したがって、例えばステンシルバッファ16の値が100である領域は、光源Aおよび光源Bに照らされている領域だと判定することができ、その判定結果に基づいて適切に影を描画することができる。
【0053】
なお本実施形態のシャドウボリュームを用いた影描画の手法は、スポットライト等によって照らされる領域を正確に描画する場合にも適用することができる。この場合、スポットライトを中心として光線方向に広がる円錐状の空間(ライトボリューム)を本実施形態のシャドウボリュームのように利用すればよい。これにより、例えば、スポットライトによって照らされる領域の輝度を、その領域を照らしているスポットライトの数に応じて大きくすることもできる。また例えば、1つのスポットライトに対して径の異なる複数のライトボリュームを同心円状に配置すれば、スポットライトによって照らされる領域の中心部をその周辺部よりも明るく表示することができ、よりリアルな光の描画が可能となる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るゲームシステムの外観を示す図である。
【図2】ゲームシステムの構成を示すブロック図である。
【図3】DVD−ROM300のメモリマップを示す図である。
【図4】地形オブジェクトおよびキャラクタオブジェクトが配置された仮想三次元のゲーム空間を示す図である。
【図5】TVモニタ500に表示されるゲーム画像の一例を示す図である。
【図6】コース上に落ちるカートの影を示す図である。
【図7】シャドウボリュームと影の関係を説明するための図である。
【図8】ステンシルバッファを用いた影描画処理について説明するための図である。
【図9】地形オブジェクト上に落ちるキャラクタオブジェクトの影を示す図である。
【図10】キャラクタオブジェクトに対応して予め用意されている3つのシャドウボリュームの形状を示す図である。
【図11】シャドウボリュームと地形オブジェクトの位置関係を示す図である。
【図12】ステンシルバッファ16のカウント方法の一例を示す図である。
【図13】ステンシルバッファ16のカウント方法の他の例を示す図である。
【図14】カウント処理後のステンシルバッファ16の値を示す図である。
【図15】図14に示す値を用いて描画される影の様子を示す図である。
【図16】ゲーム処理全体の流れを示すフローチャートである。
【図17】ゲーム画像生成処理の流れを示すフローチャートである。
【図18】地形オブジェクトの描画処理の流れを示すフローチャートである。
【図19】影描画処理の流れを示すフローチャートである。
【図20】プレイヤキャラクタの描画処理の流れを示すフローチャートである。
【図21】地形オブジェクト上に落ちるキャラクタオブジェクトの影を示す図である。
【図22】ステンシルバッファ16のカウント方法の一例を示す図である。
【図23】カウント処理後のステンシルバッファ16の値を示す図である。
【図24】ステンシルバッファ16のカウント方法の一例を示す図である。
【図25】カウント処理後のステンシルバッファ16の値を示す図である。
【図26】ステンシルバッファ16の値の各桁が示す意味を説明するための図である。
【符号の説明】
10 CPU
11 GPU
12 ジオメトリユニット
13 レンダリングユニット
14 カラーバッファ
15 Zバッファ
16 ステンシルバッファ
17 メインメモリ
18 DSP
19 サブメモリ
20 メモリコントローラ
21 コントローラI/F
22 ビデオI/F
23 外部メモリI/F
24 オーディオI/F
25 DVDドライブ
26 DVDディスクI/F
100 ゲーム機本体
200 コントローラ
300 DVD−ROM
400 外部メモリカード
500 TVモニタ
600 スピーカ
Claims (6)
- ゲーム処理において仮想三次元のゲーム空間における第1オブジェクトおよび第2オブジェクトを表示するときに、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を表示するゲーム装置であって、
前記第1オブジェクトの輪郭および第1の光源からの光線方向に基づく第1シャドウボリュームと、前記第1オブジェクトの輪郭および前記第1の光源とは異なる位置の第2の光源からの光線方向に基づく第2シャドウボリュームとを記憶するシャドウボリューム記憶手段と、
前記第1オブジェクトの配置座標に基づいて前記第1シャドウボリュームおよび前記第2シャドウボリュームを配置するシャドウボリューム配置手段と、
前記第2オブジェクト上において、前記第1シャドウボリュームおよび前記第2シャドウボリュームのいずれかのみと交わる半影領域と、前記第1シャドウボリュームおよび前記第2シャドウボリュームの両方と交わる本影領域とを判定する影領域判定手段と、
前記影領域判定手段の判定結果に基づいて、前記半影領域および前記本影領域に対応する前記第2オブジェクト上の領域の色情報をそれぞれ異なる度合いで変化させることにより、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を描画する影描画手段とを備え、
前記影領域判定手段は、影領域判定用の非表示バッファと、前記ゲーム空間における奥行を判定するためのZバッファとを含み、
前記影領域判定手段は、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Zバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの裏面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を所定の値だけ増加/減少させるとともに、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Zバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの表面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を前記所定の値だけ減少/増加させ、
前記影描画手段は、前記各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させることを特徴とする、ゲーム装置。 - ゲーム処理において仮想三次元のゲーム空間における第1オブジェクトおよび第2オブジェクトを表示するときに、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を表示するゲーム装置であって、
前記第1オブジェクトの輪郭および第1の光源からの光線方向に基づく第1シャドウボリュームを記憶するシャドウボリューム記憶手段と、
前記第1オブジェクトの配置座標に基づいて前記第1シャドウボリュームを配置するシャドウボリューム配置手段と、
前記第2オブジェクト上において、前記第1シャドウボリュームと交わる影領域を判定する影領域判定手段と、
前記影領域判定手段の判定結果に基づいて、前記影領域に対応する前記第2オブジェクト上の領域の色情報を変化させることにより、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を描画する影描画手段とを備え、
前記影領域判定手段は、影領域判定用の非表示バッファと、前記ゲーム空間における奥行を判定するためのZバッファとを含み、
前記影領域判定手段は、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Zバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの裏面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を所定の値だけ増加/減少させるとともに、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Zバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの表面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を前記所定の値だけ減少/増加させ、
前記影描画手段は、前記各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させることを特徴とする、ゲーム装置。 - 前記非表示バッファの増減値が光源の影響度に応じてシャドウボリュームごとに個別に決められていることを特徴とする、請求項1または2記載のゲーム装置。
- ゲーム処理において仮想三次元のゲーム空間における第1オブジェクトおよび第2オブジェクトを表示するときに、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を表示するためにゲーム装置のコンピュータにより実行されるゲームプログラムであって、当該コンピュータに、
前記第1オブジェクトの輪郭および第1の光源からの光線方向に基づく第1シャドウボリュームと、前記第1オブジェクトの輪郭および前記第1の光源とは異なる位置の第2の光源からの光線方向に基づく第2シャドウボリュームとを読み出すシャドウボリューム読み出しステップと、
前記第1オブジェクトの配置座標に基づいて前記第1シャドウボリュームおよび前記第2シャドウボリュームを配置するシャドウボリューム配置ステップと、
前記第2オブジェクト上において、前記第1シャドウボリュームおよび前記第2シャドウボリュームのいずれかのみと交わる半影領域と、前記第1シャドウボリュームおよび前記第2シャドウボリュームの両方と交わる本影領域とを判定する影領域判定ステップと、
前記影領域判定ステップの判定結果に基づいて、前記半影領域および前記本影領域に対応する前記第2オブジェクト上の領域の色情報をそれぞれ異なる度合いで変化させることにより、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を描画する影描画ステップとを実行させ、
前記影領域判定ステップは、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する、前記ゲーム空間における奥行きを判定するためのZバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの裏面のピクセルが奥側であると判定したとき、当該ピクセルに対応する、影領域判定用の非表示バッファの値を前記所定の値だけ増加/減少させるとともに、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Zバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの表面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を前記所定の値だけ減少/増加させ、
前記影描画ステップは、前記各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させることを特徴とする、ゲームプログラム。 - ゲーム処理において仮想三次元のゲーム空間における第1オブジェクトおよび第2オブジェクトを表示するときに、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を表示するためにゲーム装置のコンピュータにより実行されるゲームプログラムであって、当該コンピュータに、
前記第1オブジェクトの輪郭および第1の光源からの光線方向に基づく第1シャドウボリュームを読み出すシャドウボリューム読み出しステップと、
前記第1オブジェクトの配置座標に基づいて前記第1シャドウボリュームを配置するシャドウボリューム配置ステップと、
前記第2オブジェクト上において、前記第1シャドウボリュームと交わる影領域を判定する影領域判定ステップと、
前記影領域判定ステップの判定結果に基づいて、前記影領域に対応する前記第2オブジェクト上の領域の色情報を変化させることにより、前記第2オブジェクト上に落ちる前記第1オブジェクトの影を描画する影描画ステップとを実行させ、
前記影領域判定ステップは、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する、前記ゲーム空間における奥行きを判定するためのZバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの裏面のピクセルが奥側であると判定したとき、当該ピクセルに対応する、影領域判定用の非表示バッファの値を前記所定の値だけ増加/減少させるとともに、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Zバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの表面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を前記所定の値だけ減少/増加させ、
前記影描画ステップは、前記各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させることを特徴とする、ゲームプログラム。 - 前記非表示バッファの増減値が光源の影響度に応じてシャドウボリュームごとに個別に決められていることを特徴とする、請求項5または6記載のゲームプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002161600A JP4079249B2 (ja) | 2002-06-03 | 2002-06-03 | ゲーム装置及びゲームプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002161600A JP4079249B2 (ja) | 2002-06-03 | 2002-06-03 | ゲーム装置及びゲームプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004013202A JP2004013202A (ja) | 2004-01-15 |
JP4079249B2 true JP4079249B2 (ja) | 2008-04-23 |
Family
ID=30430623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002161600A Expired - Fee Related JP4079249B2 (ja) | 2002-06-03 | 2002-06-03 | ゲーム装置及びゲームプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4079249B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8269792B2 (en) | 2006-11-21 | 2012-09-18 | Qualcomm Incorporated | Efficient scissoring for graphics application |
FR2988891A1 (fr) * | 2012-03-29 | 2013-10-04 | Thomson Licensing | Procede d'estimation de niveau d'opacite dans une scene et dispositif correspondant |
-
2002
- 2002-06-03 JP JP2002161600A patent/JP4079249B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004013202A (ja) | 2004-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8602888B2 (en) | Video game device and image processing program | |
JP3725524B2 (ja) | コンピュータディスプレイ画像を生成する方法ならびに画像データを生成するコンピュータ処理システムおよびグラフィックスプロセッサ | |
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 | |
US20040169649A1 (en) | Method, apparatus, storage medium, program, and program product for generating image data of virtual three-dimensional space | |
US8133117B2 (en) | Game apparatus, game message displaying method and storage medium storing game program | |
JP3352982B2 (ja) | レンダリング方法及び装置、ゲーム装置、並びに立体モデルをレンダリングするプログラムを格納するコンピュータ読み取り可能な記録媒体 | |
US7212215B2 (en) | Apparatus and method for rendering an antialiased image | |
JP3604312B2 (ja) | ビデオゲーム用のプログラムを記録したコンピュータ読み取り可能な記録媒体、ビデオゲームにおけるオブジェクト描画方法及びビデオゲーム装置 | |
JP4082937B2 (ja) | ゲームシステム及びゲームプログラム | |
JP2006346507A (ja) | ゲーム装置および画像処理プログラム | |
EP1126415A2 (en) | Image drawing method and apparatus | |
US6771265B1 (en) | Computer-readable recording medium storing a program for 3-D computer image processing, method of depicting shadow, and video game apparatus | |
JP2004280596A (ja) | シャドウボリューム生成プログラム及びゲーム装置 | |
JP4749064B2 (ja) | プログラム、情報記憶媒体及び画像生成システム | |
JP4079249B2 (ja) | ゲーム装置及びゲームプログラム | |
JP3807654B2 (ja) | ビデオゲーム用のプログラムを記録したコンピュータ読み取り可能な記録媒体、ビデオゲームにおけるオブジェクト描画方法及びビデオゲーム装置 | |
US7446767B2 (en) | Game apparatus and game program | |
US7245298B2 (en) | Game system, image drawing method for game system, and computer-readable storage medium storing game program | |
JP4012948B2 (ja) | ゲーム装置、コンピュータ読み取り可能な記録媒体、およびゲーム画像の光表現方法 | |
JP4231684B2 (ja) | ゲーム装置及びゲームプログラム | |
JP3469225B2 (ja) | 3次元モデルに照明効果を施す方法、描画装置および記録媒体 | |
JP3866587B2 (ja) | プログラム、情報記憶媒体、および画像生成装置 | |
JP4233859B2 (ja) | ゲーム装置及びゲームプログラム | |
JP4763939B2 (ja) | プログラム、情報処理装置、データ生成方法、情報記憶媒体、およびゲーム装置 | |
JP4726347B2 (ja) | 画像表示装置、画像表示方法、情報記憶媒体および画像表示プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041228 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070806 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070808 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071002 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071029 |
|
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: 20080130 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080130 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110215 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4079249 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: 20110215 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110215 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120215 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: 20120215 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130215 Year of fee payment: 5 |
|
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: 20130215 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130215 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140215 Year of fee payment: 6 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |