(57)【要約】【課題】シャドウボリュームを用いて複数の光源による影をリアルに描画することのできるゲーム装置及びゲームプログラムを提供すること。【解決手段】キャラクタオブジェクトに対して、各光源に対応する複数のシャドウボリュームが予め用意されており、これらシャドウボリュームは、キャラクタオブジェクトの配置座標に基づいてそれぞれゲーム空間内の所定の位置に配置される。シャドウボリュームの裏面でかつ地形オブジェクトに隠れている部分の各ピクセルに対応するステンシルバッファ１６の値がインクリメントされ、シャドウボリュームの裏面でかつ地形オブジェクトに隠れている部分の各ピクセルに対応するステンシルバッファ１６の値がデクリメントされる。このステンシルバッファ１６の値に基づいて、カラーバッファ１４の色情報が変更される。【選択図】　　　　図２
2004013202.tif 000002
【特許請求の範囲】
【請求項１】
ゲーム処理において仮想三次元のゲーム空間における第１オブジェクトおよび第２オブジェクトを表示するときに、前記第２オブジェクト上に落ちる前記第１オブジェクトの影を表示するゲーム装置であって、
前記第１オブジェクトの輪郭および第１の光源からの光線方向に基づく第１シャドウボリュームと、前記第１オブジェクトの輪郭および前記第１の光源とは異なる位置の第２の光源からの光線方向に基づく第２シャドウボリュームとを記憶するシャドウボリューム記憶手段と、
前記第１オブジェクトの配置座標に基づいて前記第１シャドウボリュームおよび前記第２シャドウボリュームを配置するシャドウボリューム配置手段と、
前記第２オブジェクト上において、前記第１シャドウボリュームおよび前記第２シャドウボリュームのいずれかのみと交わる半影領域と、前記第１シャドウボリュームおよび前記第２シャドウボリュームの両方と交わる本影領域とを判定する影領域判定手段と、
前記影領域判定手段の判定結果に基づいて、前記半影領域および前記本影領域に対応する前記第２オブジェクト上の領域の色情報をそれぞれ異なる度合いで変化させることにより、前記第２オブジェクト上に落ちる前記第１オブジェクトの影を描画する影描画手段とを備えるゲーム装置。
【請求項２】
前記影領域判定手段は、影領域判定用の非表示バッファと、前記ゲーム空間における奥行を判定するためのＺバッファとを含み、
前記影領域判定手段は、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Ｚバッファに格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの表面のピクセルが手前であると判定したとき、当該ピクセルに対応する非表示バッファの値を所定の値だけ増加／減少させるとともに、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Ｚバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの裏面のピクセルが手前であると判定したとき、当該ピクセルに対応する非表示バッファの値を前記所定の値だけ減少／増加させ、
前記影描画手段は、前記各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させることを特徴とする、請求項１記載のゲーム装置。
【請求項３】
前記影領域判定手段は、影領域判定用の非表示バッファと、前記ゲーム空間における奥行を判定するためのＺバッファとを含み、
前記影領域判定手段は、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Ｚバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの裏面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を所定の値だけ増加／減少させるとともに、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Ｚバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの表面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を前記所定の値だけ減少／増加させ、
前記影描画手段は、前記各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させることを特徴とする、請求項１記載のゲーム装置。
【請求項４】
前記非表示バッファの増減値が光源の影響度に応じてシャドウボリュームごとに個別に決められていることを特徴とする、請求項２または３記載のゲーム装置。
【請求項５】
ゲーム処理において仮想三次元のゲーム空間における第１オブジェクトおよび第２オブジェクトを表示するときに、前記第２オブジェクト上に落ちる前記第１オブジェクトの影を表示するためにゲーム装置のコンピュータにより実行されるゲームプログラムであって、当該コンピュータに、
前記第１オブジェクトの輪郭および第１の光源からの光線方向に基づく第１シャドウボリュームと、前記第１オブジェクトの輪郭および前記第１の光源とは異なる位置の第２の光源からの光線方向に基づく第２シャドウボリュームとを読み出すシャドウボリューム読み出しステップと、
前記第１オブジェクトの配置座標に基づいて前記第１シャドウボリュームおよび前記第２シャドウボリュームを配置するシャドウボリューム配置ステップと、前記第２オブジェクト上において、前記第１シャドウボリュームおよび前記第２シャドウボリュームのいずれかのみと交わる半影領域と、前記第１シャドウボリュームおよび前記第２シャドウボリュームの両方と交わる本影領域とを判定する影領域判定ステップと、
前記影領域判定ステップの判定結果に基づいて、前記半影領域および前記本影領域に対応する前記第２オブジェクト上の領域の色情報をそれぞれ異なる度合いで変化させることにより、前記第２オブジェクト上に落ちる前記第１オブジェクトの影を描画する影描画ステップとを実行させるゲームプログラム。
【請求項６】
前記影領域判定ステップは、シャドウボリュームの表面を構成する各ピクセルの奥行き情報と、当該各ピクセルに対応する、前記ゲーム空間における奥行きを判定するためのＺバッファに格納されている奥行き情報とをそれぞれ比較し、前記シャドウボリュームの表面のピクセルが手前であると判定したとき、当該ピクセルに対応する、影領域判定用の非表示バッファの値を所定の値だけ増加／減少させるとともに、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Ｚバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの裏面のピクセルが手前であると判定したとき、当該ピクセルに対応する非表示バッファの値を前記所定の値だけ減少／増加させ、
前記影描画ステップは、前記各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させることを特徴とする、請求項５記載のゲームプログラム。
【請求項７】
前記影領域判定ステップは、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する、前記ゲーム空間における奥行きを判定するためのＺバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの裏面のピクセルが奥側であると判定したとき、当該ピクセルに対応する、影領域判定用の非表示バッファの値を前記所定の値だけ増加／減少させるとともに、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、当該各ピクセルに対応する前記Ｚバッファに既に格納されている奥行情報とをそれぞれ比較し、前記シャドウボリュームの表面のピクセルが奥側であると判定したとき、当該ピクセルに対応する非表示バッファの値を前記所定の値だけ減少／増加させ、
前記影描画ステップは、前記各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させることを特徴とする、請求項５記載のゲームプログラム。
【請求項８】
前記非表示バッファの増減値が光源の影響度に応じてシャドウボリュームごとに個別に決められていることを特徴とする、請求項６または７記載のゲームプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲーム装置及びゲームプログラムに関し、より特定的には、ゲーム処理において仮想三次元のゲーム空間における第１オブジェクトおよび第２オブジェクトを表示するときに、前記第２オブジェクト上に落ちる前記第１オブジェクトの影を表示するゲーム装置及びゲームプログラムに関する。
【０００２】
【従来の技術】
従来よりコンピュータグラフィクスを実現するコンピュータにおける陰影処理では、いわゆるレイトレーシングやラディオシティなどを採用することによって、リアルな陰影を付けたコンピュータグラフィクスが実現されている。これらレイトレーシングやラディオシティによれば、複数の光源に基づく影を正確に描画することができる。より具体的には、すべての光源からの光が届かない本影や、一部の光源からの光が届く半影をリアルに描画することができる。
【０００３】
一方、ゲーム機による３次元ゲーム処理では、１フレーム（１／３０秒または１／６０秒）内にゲーム画像を生成する必要があり、上記コンピュータグラフィクスのような処理時間のかかる処理を採用できない。そこで従来のゲーム機では、予め影画像（または影ポリゴン）を用意しておき、適宜その影画像をキャラクタの下に置くことによって、３次元ゲーム空間におけるキャラクタ等の影を表示しているものが多かった。このような陰影処理で表示される影は、例えば本影のみで表されていたのでリアルさにかけるという問題があった。
【０００４】
そこで、特開平２００１−８４４００号公報に記載されているように、本影と半影によって構成されるリアルな影を表示するための陰影処理が提案されている。この技術では、まず本影に対応する影画像（第１陰影像）をシャドウポリゴン法などを用いて生成し、この第１陰影像に基づいて、半影に対応する影画像（第２陰影像）を生成する。具体的には、第１陰影像からエッジのぼやけたマスクを生成し、このマスクの位置を適宜シフトさせることによって１以上の第２陰影像を生成する。そしてこれら第１陰影像および第２陰影像を加算等により合成し、最終的な影を生成する。
【０００５】
【発明が解決しようとする課題】
しかしながら、前述の公報に記載の陰影処理によれば、本影については影が落ちる物体の凹凸に応じた正確な影を描画することができるが、半影については影が落ちる物体の凹凸に応じた正確な影を描画することができない。なぜなら、第２陰影像は第１陰影像の単なる複製であって、半影が落ちる領域の凹凸に基づいて生成されたものではないからである。その結果、不自然な影が表示されてしまう可能性がある。
【０００６】
それゆえに本発明の目的は、シャドウボリュームを用いて本影および半影を有するリアルな影を描画することのできるゲーム装置及びゲームプログラムを提供することである。
【０００７】
【課題を解決するための手段および発明の効果】
この発明は、上記の目的を達成するために、次のように構成される。
すなわち、請求項１に係る発明によれば、ゲーム装置は、ゲーム処理において仮想三次元のゲーム空間における第１オブジェクト（実施例との対応関係を示せば、例えばキャラクタオブジェクト）および第２オブジェクト（地形オブジェクト）を表示するときに、第２オブジェクト上に落ちる第１オブジェクトの影を表示するものであって、シャドウボリューム記憶手段（ＤＶＤ−ＲＯＭ３００またはメインメモリ１７等のメモリ）と、シャドウボリューム配置手段（ステップＳ１６０６を実行するＣＰＵ１０；以下、単にステップ番号のみを示す）と、影領域判定手段（Ｓ１９０１〜Ｓ１９０６）と、影描画手段（Ｓ１９０７）とを備える。シャドウボリューム記憶手段は、第１オブジェクトの輪郭および第１の光源（光源Ａ）からの光線方向に基づく第１シャドウボリューム（シャドウボリュームＡ）と、第１オブジェクトの輪郭および第２の光源（光源Ｂ）からの光線方向に基づく第２シャドウボリューム（シャドウボリュームＢ）とを記憶する。シャドウボリューム配置手段は、第１オブジェクトの配置座標に基づいて第１シャドウボリュームおよび第２シャドウボリュームを配置する。影領域判定手段は、第２オブジェクト上において、第１シャドウボリュームおよび第２シャドウボリュームのいずれかのみと交わる半影領域と、第１シャドウボリュームおよび第２シャドウボリュームの両方と交わる本影領域とを判定する。影描画手段は、影領域判定手段の判定結果に基づいて、半影領域および本影領域に対応する第２オブジェクト上の領域の色情報（カラーバッファ１４に格納された輝度情報）をそれぞれ異なる度合いで変化させることにより、第２オブジェクト上に落ちる第１オブジェクトの影を描画する。これにより、シャドウボリュームを用いて影を描画する場合であっても複数の光源による影をよりリアルに表示することができる。また、予め用意しておいたシャドウボリュームを利用するため、ゲーム処理の進行に応じてシャドウボリュームを逐一生成する場合に比べて処理負担を軽減することができる。ここで、第１オブジェクトの輪郭とは、第１オブジェクトの輪郭として利用される輪郭であり、第１オブジェクトに基づいて忠実に再現された輪郭だけでなく、例えば第１オブジェクトの形状の大まかな凹凸によって構成される輪郭であってもよい。
【０００８】
また、請求項２に係る発明によれば、影領域判定手段は、影領域判定用の非表示バッファ（ステンシルバッファ１６）と、ゲーム空間における奥行きを判定するためのＺバッファ（Ｚバッファ１５）とを含む。影領域判定手段は、シャドウボリュームの表面を構成する各ピクセルの奥行き情報と、これら各ピクセルに対応するＺバッファに格納されている奥行き情報とをそれぞれ比較し、シャドウボリュームの表面のピクセルが手前であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ増加／減少させる（図８の（ａ））。また影領域判定手段は、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するＺバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの裏面のピクセルが手前であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ減少／増加させる（図８の（ｂ））。影描画手段は、各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させる。これにより、ステンシルバッファのカウント値を適宜増減するだけで半影領域および本影領域を簡単に判定することができる。
【０００９】
また、請求項３に係る発明によれば、影領域判定手段は、影領域判定用の非表示バッファ（ステンシルバッファ１６）と、ゲーム空間における奥行きを判定するためのＺバッファ（Ｚバッファ１５）とを含む。影領域判定手段は、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するＺバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの裏面のピクセルが奥側（換言すれば、裏面かつ隠れている部分）であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ増加／減少させる（Ｓ１９０２）。また影領域判定手段は、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するＺバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの表面のピクセルが奥側（換言すれば、表面かつ隠れている部分）であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ減少／増加させる（Ｓ１９０４）。影描画手段は、各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させる。これにより、ステンシルバッファのカウント値を適宜増減するだけで半影領域および本影領域を簡単に判定することができ、またシャドウボリュームの内側に視点が配置された場合であっても影を正確に表示することができる。
【００１０】
また、請求項４に係る発明によれば、非表示バッファの増減値が光源の影響度に応じてシャドウボリュームごとに個別に決められている（図２２、図２４）。これにより、光源の影響を考慮したよりリアルな半影を簡単に表示することができる。
【００１１】
また、請求項５に係る発明によれば、ゲームプログラムは、ゲーム処理において仮想三次元のゲーム空間における第１オブジェクト（キャラクタオブジェクト）および第２オブジェクト（地形オブジェクト）を表示するときに、第２オブジェクト上に落ちる第１オブジェクトの影を表示するためにゲーム装置（ゲーム機本体１００）のコンピュータにより実行されるものであって、このコンピュータに、シャドウボリューム読み出しステップ（Ｓ１６０６）と、シャドウボリューム配置ステップ（Ｓ１６０６）と、影領域判定ステップ（Ｓ１９０１〜Ｓ１９０６）と、影描画ステップ（Ｓ１９０７）とを実行させる。シャドウボリューム読み出しステップは、第１オブジェクトの輪郭および第１の光源（光源Ａ）からの光線方向に基づく第１シャドウボリューム（シャドウボリュームＡ）と、第１オブジェクトの輪郭および第２の光源（光源Ｂ）からの光線方向に基づく第２シャドウボリューム（シャドウボリュームＢ）とを読み出す。シャドウボリューム配置ステップは、第１オブジェクトの配置座標に基づいて第１シャドウボリュームおよび第２シャドウボリュームを配置する。影領域判定ステップは、第２オブジェクト上において、第１シャドウボリュームおよび第２シャドウボリュームのいずれかのみと交わる半影領域と、第１シャドウボリュームおよび第２シャドウボリュームの両方と交わる本影領域とを判定する。影描画ステップは、影領域判定ステップの判定結果に基づいて、半影領域および本影領域に対応する第２オブジェクト上の領域の色情報（カラーバッファ１４に格納された輝度情報）をそれぞれ異なる度合いで変化させることにより、第２オブジェクト上に落ちる第１オブジェクトの影を描画する。これにより、シャドウボリュームを用いて影を描画する場合であっても複数の光源による影をよりリアルに表示することができる。
【００１２】
また、請求項６に係る発明によれば、影領域判定ステップは、シャドウボリュームの表面を構成する各ピクセルの奥行き情報と、これら各ピクセルに対応する、ゲーム空間における奥行きを判定するためのＺバッファ（Ｚバッファ１５）に格納されている奥行き情報とをそれぞれ比較し、シャドウボリュームの表面のピクセルが手前であると判定したとき、このピクセルに対応する、影領域判定用の非表示バッファ（ステンシルバッファ１６）の値を所定の値だけ増加／減少させる（図８の（ａ））。また、影領域判定ステップは、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するＺバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの裏面のピクセルが手前であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ減少／増加させる（図８の（ｂ））。影描画ステップは、各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させる。
【００１３】
また、請求項７に係る発明によれば、影領域判定ステップは、シャドウボリュームの裏面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応する、ゲーム空間における奥行きを判定するためのＺバッファ（Ｚバッファ１５）に既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの裏面のピクセルが奥側（換言すれば、裏面かつ隠れている部分）であると判定したとき、このピクセルに対応する、影領域判定用の非表示バッファ（ステンシルバッファ１６）の値を所定の値だけ増加／減少させる（Ｓ１９０２）。また、影領域判定ステップは、シャドウボリュームの表面を構成する各ピクセルの奥行情報と、これら各ピクセルに対応するＺバッファに既に格納されている奥行情報とをそれぞれ比較し、シャドウボリュームの表面のピクセルが奥側（換言すれば、表面かつ隠れている部分）であると判定したとき、このピクセルに対応する非表示バッファの値を所定の値だけ減少／増加させる（Ｓ１９０４）。影描画ステップは、各ピクセルに対応する非表示バッファの値に基づいて色情報をそれぞれ変化させる。
【００１４】
また、請求項８に係る発明によれば、非表示バッファの増減値が光源の影響度に応じてシャドウボリュームごとに個別に決められている（図２２、図２４）。
【００１５】
【発明の実施の形態】
図１は、本発明の一実施形態に係るゲームシステムの構成を示す外観図であり、図２はそのブロック図である。図１、図２に示すように、ゲームシステムは、ゲーム機本体１００、ＤＶＤ−ＲＯＭ３００、外部メモリカード４００、コントローラ２００、スピーカ６００およびＴＶモニタ５００を備える。ＤＶＤ−ＲＯＭ３００および外部メモリカード４００は、ゲーム機本体１００に着脱自在に装着される。コントローラ２００は、通信ケーブルを介して、ゲーム機本体１００に設けられた複数（図１では４つ）のコントローラポート用コネクタのいずれかに接続される。ＴＶモニタ５００およびスピーカ６００は、ＡＶケーブル等によって接続される。なお、ゲーム機本体１００とコントローラ２００との通信は無線通信であってもよい。以下、図２を参照しながら、ゲームシステムの各部についてより詳細に説明する。
【００１６】
ＤＶＤ−ＲＯＭ３００は、ゲームプログラムやキャラクタデータ等のゲームに関するデータを固定的に記憶している。プレイヤがゲームを行う場合、ＤＶＤ−ＲＯＭ３００はゲーム機本体１００に装着される。なお、ゲームプログラム等を記憶する手段として、ＤＶＤ−ＲＯＭ３００の代わりに例えばＣＤ−ＲＯＭ、ＭＯ、メモリカード、ＲＯＭカートリッジ等の外部記憶媒体を用いてもよい。
【００１７】
外部メモリカード４００は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームにおけるセーブデータ等のデータを記録する。
【００１８】
ゲーム機本体１００は、ＤＶＤ−ＲＯＭ３００に記録されているゲームプログラムを読み出し、ゲーム処理を行う。
【００１９】
コントローラ２００は、プレイヤがゲーム操作に関する入力を行うための入力装置であり、複数の操作スイッチを有する。コントローラ２００は、プレイヤによる操作スイッチの押圧等に応じて操作データをゲーム機本体１００に出力する。
【００２０】
ＴＶモニタ５００は、ゲーム機本体１００から出力された画像データを画面に表示する。なお、スピーカ６００は、典型的にはＴＶモニタ５００に内蔵されており、ゲーム機本体１００から出力されたゲーム中の音声を出力する。
【００２１】
次に、ゲーム機本体１００の構成について説明する。図２において、ゲーム機本体１００には、ＣＰＵ１０およびそれに接続されるメモリコントローラ２０が設けられる。さらにゲーム機本体１００において、メモリコントローラ２０は、グラフィックスプロセッシングユニット（ＧＰＵ）１１と、メインメモリ１７と、ＤＳＰ１８と、各種インターフェース（Ｉ／Ｆ）２１〜２４，２６とに接続される。メモリコントローラ２０は、これら各構成要素間のデータ転送を制御する。
【００２２】
ゲーム開始の際、まず、ＤＶＤドライブ２５は、ゲーム機本体１００に装着されたＤＶＤ−ＲＯＭ３００を駆動する。ＤＶＤ−ＲＯＭ３００に記憶されているゲームプログラムは、ＤＶＤディスクＩ／Ｆ２６およびメモリコントローラ２０を介して、メインメモリ１７に読み込まれる。メインメモリ１７上のプログラムをＣＰＵ１０が実行することによってゲームが開始される。ゲーム開始後、プレイヤは、操作スイッチを用いてコントローラ２００に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ２００は、操作データをゲーム機本体１００に出力する。コントローラ２００から出力される操作データは、コントローラＩ／Ｆ２１およびメモリコントローラ２０を介してＣＰＵ１０に入力される。ＣＰＵ１０は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、ＧＰＵ１１やＤＳＰ１８が用いられる。また、サブメモリ１９は、ＤＳＰ１８が所定の処理を行う際に用いられる。
【００２３】
ＧＰＵ１１は、ジオメトリユニット１２およびレンダリングユニット１３を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ１４やＺバッファ１５やステンシルバッファ１６として利用される。ジオメトリユニット１２は、仮想三次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル（例えばポリゴンで構成されるオブジェクト）の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット１３は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについて各ピクセルごとのカラーデータ（ＲＧＢデータ）をカラーバッファ１４に書き込むことによって、ゲーム画像を生成するためのものである。また、カラーバッファ１４は、レンダリングユニット１３によって生成されたゲーム画像データ（ＲＧＢデータ）を保持するために確保されたメモリ領域である。Ｚバッファ１５は、３次元の視点座標から２次元のスクリーン座標に変換する際に失われる視点からの奥行情報を保持するために確保されたメモリ領域である。ステンシルバッファ１６は、後述するシャドウボリュームを用いた影領域の判定を行うために確保されたメモリ領域である。ＧＰＵ１１は、これらバッファを用いてＴＶモニタ５００に表示すべき画像データを生成し、メモリコントローラ２０およびビデオＩ／Ｆ２２を介して画像データをＴＶモニタ５００に適宜出力する。なお、ゲームプログラム実行時にＣＰＵ１０において生成される音声データは、メモリコントローラ２０からオーディオＩ／Ｆ２４を介してスピーカ６００に出力される。なお本実施形態では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ１７の一部を画像処理用のメモリとして利用する方式（ＵＭＡ：Ｕｎｉｆｉｅｄ　Ｍｅｍｏｒｙ　Ａｒｃｈｉｔｅｃｔｕｒｅ）を使うようにしてもよい。
【００２４】
図３に、ＤＶＤ−ＲＯＭ３００のメモリマップを示す。ＤＶＤ−ＲＯＭ３００には、ゲームプログラムや、オブジェクトデータや、テクスチャデータや、ボリュームデータなどが格納されている。ここでは一例としてゲームプログラムがカートゲーム用のプログラムである場合について説明する。オブジェクトデータには、コースオブジェクトやキャラクタオブジェクトやカートオブジェクトなどのデータが含まれる。テクスチャデータには、コーステクスチャやキャラクタテクスチャやカートテクスチャなどのデータが含まれる。ボリュームデータには、カートシャドウボリュームＡやカートシャドウボリュームＢなどのデータが含まれる。カートシャドウボリュームの詳細については後述する。
【００２５】
以下、本実施形態の動作について具体的に説明する。
ゲーム機本体１００のＣＰＵ１０は、ＤＶＤ−ＲＯＭ３００に格納されたカートゲーム用のプログラムに基づいてゲーム処理を実行する。このカートゲームでは、仮想三次元のゲーム空間に設置されたコース上を複数のキャラクタがカートに乗って走行する。ゲーム空間には地面・建物等の地形オブジェクトと、プレイヤキャラクタ・敵キャラクタ等のキャラクタオブジェクトが配置され、キャラクタオブジェクトの位置はゲームの進行に応じて適宜変更される。
【００２６】
図４に、地形オブジェクトおよびキャラクタオブジェクトが配置された仮想三次元のゲーム空間を示す。ゲーム空間における各オブジェクトの位置はワールド座標系で表される。このゲーム空間をＴＶモニタ５００に表示するために、ゲーム空間において視点（例えばプレイヤキャラクタをその背後から捉えるような視点）が設定される。ワールド座標系で表された各オブジェクトの座標は、この視点を中心とした座標（カメラ座標系）に変換され、その後、各オブジェクトは二次元の投影平面座標系に投影される。この投影平面座標系に投影された各オブジェクトにはテクスチャに基づいて色情報が与えられる。このとき、後述する影描画処理によってコース上に落ちるカートの影も描画される。こうして生成されたゲーム画像が例えば１／６０秒毎に生成され、ＴＶモニタ５００に表示される。
【００２７】
図５に、ＴＶモニタ５００に表示されるゲーム画像の一例を示す。コース上には各カートの影が表示される。なお、ここではゲーム空間に複数の光源が設置されている場合の影を示している。このため、コース上に落ちるカートの影には、図６に示すように薄い部分や濃い部分が存在する。以下、この影描画処理について説明する。
【００２８】
本実施形態では、カートに対して予めシャドウボリュームが用意されている（図３に示すカートシャドウボリュームＡなど）。シャドウボリュームとは、あるオブジェクトが影を落とす空間、言い換えると、あるオブジェクトによって光源からの光が遮られるような空間を規定するものである。このシャドウボリュームを用いることにより、複雑な地形に落ちる影を正確に表示することができる。以下、このシャドウボリュームを用いた影描画処理について図面を参照して簡単に説明する。
【００２９】
図７に示すように、地形オブジェクトにおいて、影を落とすオブジェクトのシャドウボリュームと交わる領域が影ができる領域（以下、影領域と称す）となる。なお図６では天空光の場合を示しているが、点光源の場合も同様である。影領域は、ステンシルバッファを用いることにより簡単に判定することができる。ステンシルバッファを用いて影領域を判定するための、本実施形態の手法とは異なる他の手法としては、図８に示すように、まず（ａ）シャドウボリュームの表面であってかつ影が落ちるオブジェクトよりも手前にある部分の各ピクセルに対応するステンシルバッファの値をインクリメントし、それから（ｂ）シャドウボリュームの裏面であってかつ影が落ちるオブジェクトよりも手前にある部分の各ピクセルに対応するステンシルバッファの値をデクリメントする。なお奥行きの判定にはＺバッファが参照される。その結果、ステンシルバッファの値は、影領域の部分は“１”になり、それ以外の部分は“０”となる。しかしながらこの手法では、シャドウボリュームの内部に視点が設定されたときに影領域の部分がインクリメントされず、その結果、影領域を正確に判定できないという問題があった。そこで本実施形態では、図８に示すように、まず（ｃ）シャドウボリュームの裏面であってかつ影が落ちるオブジェクトよりも奥にある部分の各ピクセルに対応するステンシルバッファの値をインクリメントし、それから（ｄ）シャドウボリュームの表面であってかつ影が落ちるオブジェクトよりも奥にある部分の各ピクセルに対応するステンシルバッファの値をデクリメントする。これにより、シャドウボリュームの内部に視点が設定されたときにも影領域を正確に判定することができる。
【００３０】
次に、図９〜図１４を参照して本実施形態の影描画処理について説明する。
図９は、ゲーム空間に、キャラクタオブジェクト、地形オブジェクト、および３つの光源（光源Ａ〜光源Ｃ）が配置されたときの影の様子を示している。光源Ａ〜光源Ｃからの光はいずれも平行光とする。地形オブジェクト上には、光源Ａによる影と光源Ｂによる影と光源Ｃによる影とが部分的に互いに重なり合って落ちる。その結果、影には比較的明るい部分と比較的暗い部分が存在することになる。
【００３１】
本実施形態では、図９に示すような影を描画するためにシャドウボリュームを用いる。具体的には、図９に示すキャラクタオブジェクトに対して、図１０の（ａ）〜（ｃ）に示す３つのシャドウボリュームを予め用意しておき、これらシャドウボリュームを用いて影を描画する。図１０の（ａ）のシャドウボリュームＡは、図９に示す光源Ａによる影を描画するためのシャドウボリュームであって、その形は、キャラクタオブジェクトの輪郭を光源Ａの光線方向に延長させることによって決定される。同様に、図１０の（ｂ）のシャドウボリュームＢは、図９に示す光源Ｂによる影を描画するためのシャドウボリュームであって、その形は、キャラクタオブジェクトの輪郭を光源Ｂの光線方向に延長させることによって決定される。同様に、図１０の（ｃ）のシャドウボリュームＣは、図９に示す光源Ｃによる影を描画するためのシャドウボリュームであって、その形は、キャラクタオブジェクトの輪郭を光源Ｃの光線方向に延長させることによって決定される。なお、シャドウボリュームは、例えば３次元のキャラクタオブジェクトを作成するための３次元グラフィックツールなどによって予め作られている。本実施例では、発明の理解を容易にするため単純な形状のキャラクタオブジェクトを例に説明している。このため、キャラクタオブジェクトの輪郭も比較的単純である。しかしながら、実際のゲームに登場するキャラクタオブジェクトは複雑な形状である場合が多い。このため、キャラクタオブジェクトの輪郭も複雑となる。このような場合、光源から見たキャラクタオブジェクトのおよその形状に基づいた輪郭によってシャドウボリュームを作成するようにしてもよい。
【００３２】
上記のシャドウボリュームＡ〜シャドウボリュームＣは、キャラクタオブジェクトの配置座標に基づいてそれぞれゲーム空間内の所定の位置に配置される。ゲーム空間内に配置されたシャドウボリュームＡ〜シャドウボリュームＣの様子を図１１に示す。地形オブジェクト上でこれらシャドウボリュームと交わる領域が影領域となる。
【００３３】
本実施形態では、シャドウボリュームに応じてステンシルバッファ１６の値をインクリメントまたはデクリメントすることにより影領域の判定を行う。以下、図１２を参照して、ステンシルバッファ１６のカウント方法について説明する。本実施形態では、シャドウボリュームの裏面でかつ地形オブジェクトに隠れている部分の各ピクセルに対応するステンシルバッファ１６の値をインクリメントし、シャドウボリュームの裏面でかつ地形オブジェクトに隠れている部分の各ピクセルに対応するステンシルバッファ１６の値をデクリメントする。なお、シャドウボリュームのある部分が地形オブジェクトに隠れているかどうかは地形オブジェクト描画後のＺバッファ値を参照して容易に判定することができる。この結果、例えば図１２の地点Ｐ１に対応するステンシルバッファ１６の値は０（初期値を０とした場合）となり、地点Ｐ２に対応するステンシルバッファ１６の値は１となり、地点Ｐ３に対応するステンシルバッファ１６の値は２となり、地点Ｐ４に対応するステンシルバッファ１６の値は１となり、地点Ｐ５に対応するステンシルバッファ１６の値は０となる。ステンシルバッファ１６の値が１以上の地点は影が落ちている地点であることを意味しており、さらにその値が大きいほど影が濃いことを意味している。なお、視点がシャドウボリュームの外部に存在する場合であれば、図８に示した他の手法を用いても同様の結果を得ることができる。その場合のステンシルバッファ１６のカウント方法を図１３に示す。
【００３４】
図１１に示すシャドウボリュームＡ〜シャドウボリュームＣの全てについて上記の方法でステンシルバッファ１６の値をカウントした結果、ステンシルバッファ１６の値は図１４に示すような値となる。値が０の領域は、光源Ａ〜光源Ｃのすべての光源によって照らされている領域を示している。値が１の領域は、いずれか２つの光源によって照らされている領域を示している。値が２の領域は、いずれか１つの光源によって照らされている領域を示している。値が３の領域は、いずれの光源によっても照らされていない領域を示している。
【００３５】
次に図１４に示したステンシルバッファ１６の各ピクセルの値に応じて、これら各ピクセルに対応するカラーバッファ１４の色情報がそれぞれ変更される。例えば、地形オブジェクトのテクスチャに基づいてカラーバッファ１４に既に格納されている輝度情報が、ピクセル毎に、図１４に示したステンシルバッファ１６の値に比例した値だけそれぞれ低減される。この結果、図１５に示すようなリアルな影がＴＶモニタ５００に表示されることとなる。ただし、輝度を低減する度合いは必ずしもステンシルバッファ１６の値に比例する必要はない。
【００３６】
次に、本実施形態におけるＣＰＵ１０またはＧＰＵ１１の動作について、図１６〜図２０のフローチャートを参照して説明する。
【００３７】
ゲーム処理が開始すると、ＣＰＵ１０は、地面（コースを含む）や建物等を形成するための地形オブジェクトをワールド座標系の初期座標に配置する（ステップＳ１６０１）。続いてプレイヤキャラクタや敵キャラクタを含むキャラクタオブジェクトおよび仮想カメラをワールド座標系の初期座標に配置する（ステップＳ１６０２）。なお図３ではキャラクタオブジェクトとカートオブジェクトとを別々に記載したが、ここでは両者を区別することなく単にキャラクタオブジェクトと称する。続いてＣＰＵ１０は、コントローラ２００からの入力があったかどうかを判断し（ステップＳ１６０３）、入力があった場合には、その内容に応じてプレイヤキャラクタ（プレイヤキャラクタが乗車しているカートを含む）および仮想カメラの位置座標を更新し（ステップＳ１６０４）、ステップＳ１６０４に進む。一方、ステップＳ１６０３においてコントローラ２００からの入力がなかった場合にはそのままステップＳ１６０４に進む。ステップＳ１６０４で、ＣＰＵ１０は、ワールド座標系における敵キャラクタの位置座標を更新する。こうして各キャラクタおよび仮想カメラの位置座標の更新が完了すると、ＣＰＵ１０は、キャラクタオブジェクトに対して予め用意されている複数のシャドウボリューム（図３に示すカートシャドウＡ、カートシャドウＢなど）を、キャラクタオブジェクトの位置座標に基づいてワールド座標系の所定の位置座標に配置する（ステップＳ１６０６）。
【００３８】
ワールド座標系におけるシャドウボリュームの配置が完了すると、ＧＰＵ１１は、キャラクタオブジェクト、地形オブジェクトおよびシャドウボリュームの位置座標をワールド座標系から仮想カメラの位置を基準とするカメラ座標系に変換し（ステップＳ１６０７）、さらにカメラ座標系から二次元の投影平面座標系に変換する（ステップＳ１６０８）。このとき、クリッピング処理やテクスチャの指定処理もあわせて行われる。
【００３９】
位置座標の変換が完了すると、ゲーム画像生成処理が開始され（ステップＳ１６０９）、ＴＶモニタ５００に表示すべきゲーム画像が生成される。このゲーム画像生成処理の詳細については後述する。ステップＳ１６０９で生成されたゲーム画像はＴＶモニタ５００に表示される（ステップＳ１６１０）。その後、ＣＰＵ１０は、ゲームが終了したかどうかを判断し（ステップＳ１６１１）、ゲームが続行する場合にはステップＳ１６０３に戻り、ゲームが終了した場合にはゲーム処理を終了する。
【００４０】
次に、図１７を参照して、図１６に示すステップＳ１６０９のゲーム画像生成処理の詳細について説明する。
ゲーム画像生成処理が開始すると、ＧＰＵ１１は、まず地形オブジェクトの描画処理を行う（ステップＳ１７０１）。この地形オブジェクトの描画処理の詳細については後述する。地形オブジェクトの描画が完了すると、地形オブジェクトに落ちる影を描画するための影描画処理を行う（ステップＳ１７０２）。この影描画処理の詳細については後述する。影の描画が完了すると、ＧＰＵ１１は、プレイヤキャラクタの描画処理を行い（ステップＳ１７０３）、続いて敵キャラクタやアイテム等の描画処理を行う（ステップＳ１７０４）。これらキャラクタ等の描画処理の詳細については後述する。こうしてゲーム画像生成処理は終了する。以下、ゲーム画像生成処理における各ステップの処理の詳細について説明する。
【００４１】
まず、図１８を参照して、図１７に示すステップＳ１７０１の地形オブジェクトの描画処理の詳細について説明する。
地形オブジェクトの描画処理が開始すると、ＧＰＵ１１は、地面や建物などの地形オブジェクト等に対応するテクスチャの読み出しを行う（ステップＳ１８０１）。次に、投影平面座標系に投影された地形オブジェクトの書き込もうとしている部分に対応する各ピクセルのＺバッファ１５を参照し（ステップＳ１８０２）、その書き込もうとしている地形オブジェクトの部分の奥行き情報が、対応するＺバッファ値よりも小さいかどうかを判断する（ステップＳ１８０３）。奥行き情報がＺバッファ値よりも小さい場合は、そのピクセルのＺバッファ値を更新し（ステップＳ１８０４）、カラーバッファ１４のこのピクセルに該当する領域にテクスチャの色情報を書き込んで（ステップＳ１８０５）からステップＳ１８０６へ進む。一方、ステップＳ１８０３で。奥行き情報がＺバッファ値よりも小さくない場合はそのままステップＳ１８０６へ進む。ステップＳ１８０６でＧＰＵ１１は、地形の描画が終了したかどうか判断し、終了していなければステップＳ１８０２に戻り、終了していれば影描画処理に進む。
【００４２】
図１９を参照して、図１７に示すステップＳ１７０２の影描画処理の詳細について説明する。
影描画処理が開始すると、ＧＰＵ１１は、まずステンシルバッファ（非表示バッファ）１６をクリアする（ステップＳ１９０１）。そして、Ｚバッファ１５を参照しながらシャドウボリュームの裏面であってかつ影が落ちるオブジェクトよりも奥にある部分の各ピクセルに対応するステンシルバッファの値をインクリメントする（ステップＳ１５０２）。ただしここでは色情報は書き込まれない。そしてシャドウボリュームの裏面処理が終了したかどうかを判断し（ステップＳ１９０３）、終了してればステップＳ１９０４に進み、終了していなければステップＳ１９０２に戻る。次にＧＰＵ１１は、ステップＳ１９０４で、Ｚバッファ値を参照しながらシャドウボリュームの表面であってかつ影が落ちるオブジェクトよりも奥にある部分の各ピクセルに対応するステンシルバッファの値をデクリメントする。ただしここでは色情報は書き込まれない。そしてシャドウボリュームの表面処理が終了したかどうかを判断し（ステップＳ１９０５）、終了していればステップＳ１９０６に進み、終了していなければステップＳ１９０４に戻る。ステップＳ１９０６では全てのシャドウボリュームについてステンシルバッファ１６のカウント処理が終了したかどうかを判断し、終了していればステップＳ１９０７に進み、終了していなければステップＳ１９０２に戻る。次にＧＰＵ１１は、ステンシルバッファ１６の各ピクセルのカウント値を参照して、カラーバッファ１４の各ピクセルの色情報（ＲＧＢ）を更新する。例えば、カラーバッファ１４に格納されているＲＧＢの各値を、ピクセル毎に、ステンシルバッファ１６の値に比例した値だけ低減する。そして影の描画が終了したかどうか判断し（ステップＳ１９０８）、終了していなければステップＳ１９０７に戻り、終了していればプレイヤキャラクタの描画処理に進む。
【００４３】
図２０を参照して、図１７に示すステップＳ１７０３のプレイヤキャラクタの描画処理の詳細について説明する。
プレイヤキャラクタの描画処理が開始すると、ＧＰＵ１１は、プレイヤキャラクタに対応するテクスチャの読み出しを行う（ステップＳ２００１）。次に、投影平面座標系に投影されたプレイヤキャラクタオブジェクトの書き込もうとしている部分に対応する各ピクセルのＺバッファ１５を参照し（ステップＳ２００２）、その書き込もうとしているキャラクタオブジェクトの部分の奥行き情報が、対応するＺバッファ値よりも小さいかどうかを判断する（ステップＳ２００３）。奥行き情報がＺバッファ値よりも小さい場合は、そのピクセルのＺバッファ値を更新し（ステップＳ２００４）、カラーバッファ１４のこのピクセルに該当する領域にテクスチャの色情報を書き込んで（ステップＳ２００５）からステップＳ２００６へ進む。一方、ステップＳ２００３で。奥行き情報がＺバッファ値よりも小さくない場合はそのままステップＳ２００６へ進む。ステップＳ２００６でＧＰＵ１１は、プレイヤキャラクタの描画が終了したかどうか判断し、終了していなければステップＳ２００２に戻り、終了していれば敵キャラクタ等の描画処理に進む。
【００４４】
図１７に示すステップＳ１７０４の敵キャラクタ等の描画処理の詳細については、前述のプレイヤキャラクタの描画処理と基本的に同様であるので説明を省略する。
【００４５】
以上のように本実施形態では、複数の光源に対応する複数のシャドウボリュームをキャラクタオブジェクトごとに予め用意しておき、これらシャドウボリュームに基づいてステンシルバッファ１６の値を適宜インクリメントまたはデクリメントし、その結果の値に応じて影描画処理を行う。よって、本影領域および半影領域を正確に判定することができ、その結果、複数の光源による影をよりリアルに描画することが可能となる。
【００４６】
なお本実施形態ではゲームプログラムはＤＶＤ−ＲＯＭ３００を介してゲーム機本体１００に供給されるとしたが、これに限らず、ＤＶＤ−ＲＯＭ３００以外の他のコンピュータ読み取り可能な記録媒体（例えばＣＤ−ＲＯＭ、ＭＯ、メモリカード、ＲＯＭカートリッジ等）に格納されてゲーム機本体１００に供給されても構わないし、予めゲーム機本体１００に組み込まれていても構わないし、通信回線を通じてゲーム機本体１００に供給されても構わない。
【００４７】
また本実施形態では描画処理等をＧＰＵ１１が行うとしたが、ＣＰＵ１０が行ってもよい。
【００４８】
また本実施形態では平行光によってできる影を描画する場合について説明したが、これに限らず、例えば点光源からの光によってできる影を描画する場合についても本発明を適用することができる。
【００４９】
また本実施形態ではキャラクタオブジェクトに対応する複数のシャドウボリュームを予め用意しておくとしたが、これに限らず、これら複数のシャドウボリュームをゲーム処理において適宜生成するようにしても構わない。この場合、例えば図１６に示すフローチャートのステップＳ１６０６に先立って、キャラクタオブジェクトの輪郭および各光源の光線方向に基づいて各シャドウボリュームを生成してメインメモリ１７等に一時的に記憶しておき、ステップＳ１６０６においてこれらシャドウボリュームをゲーム空間に配置すればよい。
【００５０】
なお、本実施形態ではシャドウボリュームの表面または裏面をステンシルバッファ１６に描画する際にステンシルバッファ１６の値をインクリメントまたはデクリメントするとしたが、これに変えて、シャドウボリューム毎に予め所定の値を増減するようにしても構わない。以下、図２１〜図２６を参照してその例を説明する。
【００５１】
地形オブジェクトの影の濃さは光源毎に異なる。例えば図２１に示すように、比較的明るい光源Ａと比較的暗い光源Ｂがあったとき、光源Ａによる影は光源Ｂによる影よりも濃くなる。しかしながら前述の図１２に示した方法では、これらを判別することはできない。そこで、ここでは図２２に示すように、光源Ａに対応するシャドウボリュームＡをステンシルバッファ１６に描画するときにはステンシルバッファ１６の値を２だけ増加または減少させ、一方、光源Ｂに対応するシャドウボリュームＢをステンシルバッファ１６に描画するときにはステンシルバッファ１６の値を１だけ増加または減少させる。増減させる値は光源の影響の度合いを意味している。その結果、ステンシルバッファ１６の値は図２３に示すような値となる。この値に応じてカラーバッファ１４の色情報を更新することにより、図２１に示すような影を描画することができる。
【００５２】
複数の光源が存在する場合に、ある地点がどの光源には照らされていてどの光源には照らされていないのかを一意に判定することができれば、より多様な影の描画が可能となる。例えば複数の色つき光源（赤色光源、緑色光源、青色光源など）が存在する場合に、赤色光源と青色光源に照らされていて緑色光源には照らされていない領域についてはカラーバッファ１４のＧの値を低減するといった処理が可能となる。ある地点がどの光源には照らされていてどの光源には照らされていないのかを一意に判定するためには、ステンシルバッファ１６にシャドウボリュームを描画するときのステンシルバッファ１６の値の増減値が、シャドウボリューム毎に異なる桁となるようにすればよい。例えば図２４に示すように、光源Ａに対応するシャドウボリュームＡについては２進数の１桁目をインクリメントまたはデクリメントし、光源Ｂに対応するシャドウボリュームＢについては２進数の２桁目をインクリメントまたはデクリメントし、光源Ｃに対応するシャドウボリュームＣについては２進数の３桁目をインクリメントまたはデクリメントする。その結果、ステンシルバッファ１６の値は図２５に示すような値となる。図２６に示すように、ステンシルバッファ１６の値の１桁目は光源Ａに照らされているか否かを示しており、２桁目は光源Ｂに照らされているか否かを示しており、３桁目は光源Ｃに照らされているか否かを示している。したがって、例えばステンシルバッファ１６の値が１００である領域は、光源Ａおよび光源Ｂに照らされている領域だと判定することができ、その判定結果に基づいて適切に影を描画することができる。
【００５３】
なお本実施形態のシャドウボリュームを用いた影描画の手法は、スポットライト等によって照らされる領域を正確に描画する場合にも適用することができる。この場合、スポットライトを中心として光線方向に広がる円錐状の空間（ライトボリューム）を本実施形態のシャドウボリュームのように利用すればよい。これにより、例えば、スポットライトによって照らされる領域の輝度を、その領域を照らしているスポットライトの数に応じて大きくすることもできる。また例えば、１つのスポットライトに対して径の異なる複数のライトボリュームを同心円状に配置すれば、スポットライトによって照らされる領域の中心部をその周辺部よりも明るく表示することができ、よりリアルな光の描画が可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るゲームシステムの外観を示す図である。
【図２】ゲームシステムの構成を示すブロック図である。
【図３】ＤＶＤ−ＲＯＭ３００のメモリマップを示す図である。
【図４】地形オブジェクトおよびキャラクタオブジェクトが配置された仮想三次元のゲーム空間を示す図である。
【図５】ＴＶモニタ５００に表示されるゲーム画像の一例を示す図である。
【図６】コース上に落ちるカートの影を示す図である。
【図７】シャドウボリュームと影の関係を説明するための図である。
【図８】ステンシルバッファを用いた影描画処理について説明するための図である。
【図９】地形オブジェクト上に落ちるキャラクタオブジェクトの影を示す図である。
【図１０】キャラクタオブジェクトに対応して予め用意されている３つのシャドウボリュームの形状を示す図である。
【図１１】シャドウボリュームと地形オブジェクトの位置関係を示す図である。
【図１２】ステンシルバッファ１６のカウント方法の一例を示す図である。
【図１３】ステンシルバッファ１６のカウント方法の他の例を示す図である。
【図１４】カウント処理後のステンシルバッファ１６の値を示す図である。
【図１５】図１４に示す値を用いて描画される影の様子を示す図である。
【図１６】ゲーム処理全体の流れを示すフローチャートである。
【図１７】ゲーム画像生成処理の流れを示すフローチャートである。
【図１８】地形オブジェクトの描画処理の流れを示すフローチャートである。
【図１９】影描画処理の流れを示すフローチャートである。
【図２０】プレイヤキャラクタの描画処理の流れを示すフローチャートである。
【図２１】地形オブジェクト上に落ちるキャラクタオブジェクトの影を示す図である。
【図２２】ステンシルバッファ１６のカウント方法の一例を示す図である。
【図２３】カウント処理後のステンシルバッファ１６の値を示す図である。
【図２４】ステンシルバッファ１６のカウント方法の一例を示す図である。
【図２５】カウント処理後のステンシルバッファ１６の値を示す図である。
【図２６】ステンシルバッファ１６の値の各桁が示す意味を説明するための図である。
【符号の説明】
１０　ＣＰＵ
１１　ＧＰＵ
１２　ジオメトリユニット
１３　レンダリングユニット
１４　カラーバッファ
１５　Ｚバッファ
１６　ステンシルバッファ
１７　メインメモリ
１８　ＤＳＰ
１９　サブメモリ
２０　メモリコントローラ
２１　コントローラＩ／Ｆ
２２　ビデオＩ／Ｆ
２３　外部メモリＩ／Ｆ
２４　オーディオＩ／Ｆ
２５　ＤＶＤドライブ
２６　ＤＶＤディスクＩ／Ｆ
１００　ゲーム機本体
２００　コントローラ
３００　ＤＶＤ−ＲＯＭ
４００　外部メモリカード
５００　ＴＶモニタ
６００　スピーカ
【図１】
2004013202.tif 000003
【図２】
2004013202.tif 000004
【図３】
2004013202.tif 000005
【図４】
2004013202.tif 000006
【図５】
2004013202.tif 000007
【図６】
2004013202.tif 000008
【図７】
2004013202.tif 000009
【図８】
2004013202.tif 000010
【図９】
2004013202.tif 000011
【図１０】
2004013202.tif 000012
【図１１】
2004013202.tif 000013
【図１２】
2004013202.tif 000014
【図１３】
2004013202.tif 000015
【図１４】
2004013202.tif 000016
【図１５】
2004013202.tif 000017
【図１６】
2004013202.tif 000018
【図１７】
2004013202.tif 000019
【図１８】
2004013202.tif 000020
【図１９】
2004013202.tif 000021
【図２０】
2004013202.tif 000022
【図２１】
2004013202.tif 000023
【図２２】
2004013202.tif 000024
【図２３】
2004013202.tif 000025
【図２４】
2004013202.tif 000026
【図２５】
2004013202.tif 000027
【図２６】
2004013202.tif 000028