(57)【特許請求の範囲】
【請求項１】
コンピュータを、
三次元の仮想空間内に固定的に配置される１以上の静的なオブジェクトとその仮想空間内に動作可能に配置される１以上の動的なオブジェクトとを所定の視点から投影した二次元画像を作成し、表示画面に表示するためのゲーム装置として機能させるためのゲームプログラムであって、
前記コンピュータを、
フレームバッファの画素ごとに、前記静的なオブジェクトの輝度データとその影の輝度データと前記動的なオブジェクトの輝度データとを用い前記二次元画像を前記フレームバッファ上に作成する画像作成手段と、
前記画像作成手段により作成された前記フレームバッファ上の二次元画像について、画素ごとに、所定の光源と前記動的なオブジェクトとの位置関係に基づいて前記動的なオブジェクトの影を描画するか否かを判別する第１判別手段と、
前記第１判別手段によって前記動的なオブジェクトの影が描画されると判別された画素において、前記静的なオブジェクトの影の輝度データに基づいて前記静的なオブジェクトの影が存在するか否かを判別する第２判別手段と、
前記第２判別手段による判別結果に基づいて、前記動的なオブジェクトの影の輝度データを設定する影データ設定手段と、
前記フレームバッファの前記動的なオブジェクトの影を描くべき画素に対して、前記影データ設定手段によって設定された前記動的なオブジェクトの影の輝度データに基づいて、前記動的なオブジェクトの影を描画する描画手段と、
して機能させることを特徴とするゲームプログラム。
【請求項２】
前記コンピュータを、
前記第１判別手段によって前記動的なオブジェクトの影が描画されると判別された画素において、前記静的なオブジェクトの影の輝度データと、その画素における予め定められた前記動的なオブジェクトの影の輝度データとを加算する加算手段として機能させ、
前記第２判別手段は、
前記静的なオブジェクトの影の輝度データに代えて、前記加算手段による加算データと所定の閾値とを比較した比較結果に基づいて前記静的なオブジェクトの影が存在するか否かを判別する、請求項１に記載のゲームプログラム。
【請求項３】
前記第２判別手段は、
前記加算データが前記所定の閾値より大である場合、前記静的なオブジェクトの影が存在すると判別し、
前記加算データが前記所定の閾値以下である場合、前記静的なオブジェクトの影が存在しないと判別し、
前記影データ設定手段は、
前記第２判別手段によって前記静的なオブジェクトの影が存在すると判別された場合、前記静的なオブジェクトの影の輝度データと前記動的なオブジェクトの影の輝度データとの減算値を、前記動的なオブジェクトの影の輝度データとして設定し、前記第２判別手段によって前記静的なオブジェクトの影が存在しないと判別された場合、前記予め定められた動的なオブジェクトの影の輝度データを設定する、請求項２に記載のゲームプログラム。
【請求項４】
前記静的なオブジェクトの影の輝度データは、予め記憶手段に記憶されているライトマップに含まれており、
前記加算手段は、
前記静的なオブジェクトの影の輝度データとして、前記第１判別手段によって前記動的なオブジェクトの影が描画されると判別された画素に対応する輝度データを、前記ライトマップから読み出して用いる、請求項２又は３に記載のゲームプログラム。
【請求項５】
前記加算手段は、
前記静的なオブジェクトの影の輝度データ及び前記動的なオブジェクトの影の輝度データに対して補正値を付与する補正値付与手段を含む、請求項２ないし４のいずれかに記載のゲームプログラム。
【請求項６】
請求項１ないし５のいずれかに記載のゲームプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項７】
請求項１ないし５のいずれかに記載のゲームプログラムを実行するコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、三次元の仮想空間内に配置されるオブジェクトをスクリーン画像に投影することにより二次元画像に変換してモニタに表示させるゲーム装置に適用されるゲームプログラムに関し、またそのゲームプログラムを記録した記録媒体、及びコンピュータに関するものである。
【背景技術】
【０００２】
従来、三次元のコンピュータグラフィックス（Computer Graphics、以下、「三次元のコンピュータグラフィックス」を「三次元ＣＧ」という。）を用いた映像によってゲーム展開を表示するゲーム装置が知られている。この種のゲーム装置に用いられる三次元ＣＧの映像を作成する際には、数値化データとして与えられたオブジェクト（例えば物体や図形等）に関する情報を演算によって二次元画像にして生成する、いわゆるレンダリング処理が用いられている（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開平９−１５３１４２号公報
【０００４】
レンダリング処理では、二次元画像を作成する際、ゲーム画面の背景となる動くことのない、例えば建物等の不透明なオブジェクトの画像データやそのオブジェクトの影（以下、「静的シャドウ」という。）の画像データ等がフレームバッファに書き込まれる。フレームバッファとは、二次元画像としてのディジタル画像を画素の集まりとして記録するメモリのことである。また、レンダリング処理では、例えばゲームに登場するキャラクタの画像データも、フレームバッファに書き込まれる。
【０００５】
一方、例えばキャラクタの影等の、移動したり形が変化したりする影（以下、「動的シャドウ」という。）は、オーバーラップ画像として上記オブジェクトの画像データにブレンディング（合成）されることによりフレームバッファに書き込まれる。
【０００６】
ゲーム上の各種の場面においては、上記静的シャドウと動的シャドウとが重なることがある。すなわち、例えば図１１に示すように、ライトＬからの光が照射されている建物Ｂがあり、ライトＬによって生じる、建物Ｂの影（静的シャドウ）ＢＳの部分にキャラクタＣが移動した場合を想定すると、建物Ｂの影ＢＳにキャラクタＣの影（動的シャドウ）ＣＳが重なる状態となる。
【０００７】
この場合、フレームバッファ上で静的シャドウＢＳの画像データに対して動的シャドウＣＳの画像データが合成されると、静的シャドウＢＳと動的シャドウＣＳとの重なり部分が視覚的に濃くなり、すなわちその部分の輝度が低くなり、不自然に表示されてしまうことがある。特に例えばほぼ同じ色相、同じ明度の静的シャドウＢＳと動的シャドウＣＳとが重なった場合、重なり部分は視覚的に濃くなる。
【０００８】
ここで、仮に輝度値の最低値「０」を白色、輝度値の最高値「１」を黒色とし、例えば、静的シャドウＢＳ及び動的シャドウＣＳの輝度値をそれぞれ仮に「０．５」とした場合、静的シャドウＢＳ及び動的シャドウＣＳの輝度値の合計は、「０．５＋０．５」で「１」になる。つまり、静的シャドウＢＳと動的シャドウＣＳとの重なり部分は、ほぼ黒色になってしまい、プレーヤに不自然な印象を与えてしまうことがあった。
【０００９】
特に、近年のゲーム装置では、描画処理が向上し、よりリアルな映像を表現することが可能となってきているため、このような不自然な印象を与える映像部分は、他の映像部分に比べより目立ってしまい、プレーヤに違和感を与えてしまうことになる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本願発明は、上記した事情のもとで考え出されたものであって、オブジェクトの影同士が重なる部分を違和感なく表示することのできるゲームプログラム及びそのゲームプログラムを記録した記録媒体、及びコンピュータを提供することを、その課題とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するため、本願発明では、次の技術的手段を講じている。
【００１２】
本願発明の第１の側面によって提供されるゲームプログラムは、コンピュータを、三次元の仮想空間内に固定的に配置される１以上の静的なオブジェクトとその仮想空間内に動作可能に配置される１以上の動的なオブジェクトとを所定の視点から投影した二次元画像を作成し、表示画面に表示するためのゲーム装置として機能させるためのゲームプログラムであって、前記コンピュータを、フレームバッファの画素ごとに、前記静的なオブジェクトの輝度データとその影の輝度データと前記動的なオブジェクトの輝度データとを用い前記二次元画像を前記フレームバッファ上に作成する画像作成手段と、前記画像作成手段により作成された前記フレームバッファ上の二次元画像について、画素ごとに、所定の光源と動的なオブジェクトとの位置関係に基づいて前記動的なオブジェクトの影を描画するか否かを判別する第１判別手段と、前記第１判別手段によって前記動的なオブジェクトの影が描画されると判別された画素において、前記静的なオブジェクトの影の輝度データに基づいて前記静的なオブジェクトの影が存在するか否かを判別する第２判別手段と、前記第２判別手段による判別結果に基づいて、前記動的なオブジェクトの影の輝度データを設定する影データ設定手段と、前記フレームバッファの前記動的なオブジェクトの影を描くべき画素に対して、前記影データ設定手段によって設定された前記動的なオブジェクトの影の輝度データに基づいて、前記動的なオブジェクトの影を描画する描画手段と、して機能させることを特徴としている（請求項１）。
【００１３】
このゲームプログラムによれば、フレームバッファの画素ごとに、静的なオブジェクトの輝度データとその影の輝度データと動的なオブジェクトの輝度データとを用いて二次元画像がフレームバッファ上に作成される。この場合、フレームバッファの画素ごとに、所定の光源と動的なオブジェクトとの位置関係に基づいて動的なオブジェクトの影を描画するか否かが判別され、動的なオブジェクトの影が描画されると判別された画素において、静的なオブジェクトの影の輝度データに基づいて静的なオブジェクトの影が存在するか否かが判別され、換言すれば、動的なオブジェクトの影と静的なオブジェクトの影とが重なっているか否かが判別される。例えば動的なオブジェクトの影と静的なオブジェクトの影とが重なっている場合、動的なオブジェクトの影の輝度データが適切な値に設定される。そして、フレームバッファの動的なオブジェクトの影を描くべき画素に対して、設定された動的なオブジェクトの影の輝度データに基づいて、動的なオブジェクトの影が適切に描画される。
【００１４】
好ましい実施の形態によれば、前記コンピュータを、前記第１判別手段によって前記動的なオブジェクトの影が描画されると判別された画素において、前記静的なオブジェクトの影の輝度データと、その画素における予め定められた前記動的なオブジェクトの影の輝度データとを加算する加算手段として機能させ、前記第２判別手段は、前記静的なオブジェクトの影の輝度データに代えて、前記加算手段による加算データと所定の閾値とを比較した比較結果に基づいて前記静的なオブジェクトの影が存在するか否かを判別するとよい（請求項２）。
【００１５】
他の好ましい実施の形態によれば、前記第２判別手段は、前記加算データが前記所定の閾値より大である場合、前記静的なオブジェクトの影が存在すると判別し、前記加算データが前記所定の閾値以下である場合、前記静的なオブジェクトの影が存在しないと判別し、前記影データ設定手段は、前記第２判別手段によって前記静的なオブジェクトの影が存在すると判別された場合、前記静的なオブジェクトの影の輝度データと前記動的なオブジェクトの影の輝度データとの減算値を、前記動的なオブジェクトの影の輝度データとして設定し、前記第２判別手段によって前記静的なオブジェクトの影が存在しないと判別された場合、前記予め定められた動的なオブジェクトの影の輝度データを設定するとよい（請求項３）。
【００１６】
他の好ましい実施の形態によれば、前記静的なオブジェクトの影の輝度データは、予め記憶手段に記憶されているライトマップに含まれており、前記加算手段は、前記静的なオブジェクトの影の輝度データとして、前記第１判別手段によって前記動的なオブジェクトの影が描画されると判別された画素に対応する輝度データを、前記ライトマップから読み出して用いるとよい（請求項４）。
【００１７】
他の好ましい実施の形態によれば、前記加算手段は、前記静的なオブジェクトの影の輝度データ及び前記動的なオブジェクトの影の輝度データに対して補正値を付与する補正値付与手段を含むとよい（請求項５）。
【００１８】
本願発明の第２の側面によって提供される記憶媒体は、本願発明の第１の側面によって提供されるゲームプログラムを記録したコンピュータ読み取り可能なものであることを特徴としている（請求項６）。
【００１９】
本願発明の第３の側面によって提供されるコンピュータは、本願発明の第１の側面によって提供されるゲームプログラムを実行することを特徴としている（請求項７）。
【００２０】
本願発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【発明の効果】
【００２１】
本願発明によれば、フレームバッファの動的なオブジェクトの影を描くべき画素に対して、設定された動的なオブジェクトの影の輝度データに基づいて、動的なオブジェクトの影が適切に描画されるので、静的なオブジェクトの影と動的なオブジェクトの影同士が重なる部分を自然な描写で違和感なく表示することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本願発明の好ましい実施の形態を、添付図面を参照して具体的に説明する。
【００２３】
図１は、本願発明に係るゲームプログラムが適用されるゲーム装置の一例を示すブロック構成図である。ゲーム装置１は、家庭用として用いられるテレビゲーム機であり、ゲームプログラム及びゲームデータが記録されたＤＶＤ−ＲＯＭ（Digital Versatile Disc−ＲＯＭ）から当該ゲームプログラム及びゲームデータを装置内のメモリ（ＲＡＭ）に読み込み、ＣＰＵによってゲームプログラムを実行させることにより、プレーヤがゲーム内容を楽しむことができるものである。
【００２４】
上記ゲーム装置１は、一例として家庭用のテレビゲーム機とされているが、このゲーム装置１は、家庭用のテレビゲーム機に限らず、携帯型ゲーム機、アーケードゲーム機等の他の種類のゲーム機、又はゲーム機以外の三次元映像を表示する装置、例えばゲームプログラムがローディングされたパーソナルコンピュータ等であってもよい。
【００２５】
ゲーム装置１は、ＣＰＵ２、描画データ生成プロセッサ３、ＲＡＭ４、ＲＯＭ５、描画処理プロセッサ６、ＶＲＡＭ（Video-ＲＡＭ）７、Ｄ／Ａ（Digital-Analog）コンバータ８、音声処理プロセッサ９、アンプ１０、インターフェース（Ｉ／Ｆ）１１、ＤＶＤ−ＲＯＭドライブ１２及びバス１３によって構成されている。
【００２６】
ゲーム装置１には、通常、ゲーム内容を表示するためのテレビジョン装置（図略）が接続される。このテレビジョン装置のブラウン管や液晶ディスプレイ等の表示装置は、Ｄ／Ａコンバータ８に外部接続されるモニタ１４として利用される。上記テレビジョン装置には、内蔵のスピーカが設けられ、この内蔵スピーカは、アンプ１０に外部接続されるスピーカ１５として利用される。
【００２７】
ゲーム装置１では、ゲームプログラム及びゲームデータが記録されたＤＶＤ−ＲＯＭ１７をＤＶＤ−ＲＯＭドライブ１２に装着し、ＤＶＤ−ＲＯＭドライブ１２によってＤＶＤ−ＲＯＭ１７内のゲームプログラム及びゲームデータをＲＡＭ４に読み込み、ＣＰＵ２によってゲームプログラムを実行することにより、プレーヤがゲーム内容を楽しむことができるようになっている。
【００２８】
ゲームプログラムには、ＣＰＵ２に実行させるための処理手順や各種命令等が記述されており、その中には、操作コントローラ１６からの操作信号に応じてゲーム画面や音声等を制御するための内容が含まれている。本実施形態では、ゲームプログラムには、二次元画像において複数のオブジェクト（例えばゲーム画面に描画される建物やゲーム上に登場するキャラクタ）の影同士が重なった場合に、本願特有のレンダリング処理によって違和感のないより自然な影を表示させるようにするプログラムが含まれる。
【００２９】
また、ゲームデータには、キャラクタや建物の画像データ、ステータス等の情報表示用の画像データ、効果音やＢＧＭ等の音声データ、及び文字や記号によるメッセージデータ等が含まれる。
【００３０】
ゲーム装置１には、インターフェース（Ｉ／Ｆ）１１を介して操作コントローラ１６が接続され、プレーヤは、この操作コントローラ１６の操作部材を操作することによりゲームを進行させることができる。
【００３１】
ＣＰＵ２、描画データ生成プロセッサ３、ＲＡＭ４、ＲＯＭ５、描画処理プロセッサ６、音声処理プロセッサ９、インターフェース（Ｉ／Ｆ）１１及びＤＶＤ−ＲＯＭドライブ１２は、バス１３によって相互にデータ伝送可能に接続されている。
【００３２】
ＣＰＵ２は、上記のように、ＤＶＤ−ＲＯＭドライブ１２によってＤＶＤ−ＲＯＭ１７からＲＡＭ４に読み込まれるゲームプログラムを実行することにより、ゲーム進行を統括的に制御する。より具体的には、ＣＰＵ２は、操作コントローラ１６からプレーヤによる操作信号が入力されると、ゲームプログラムにしたがってその操作信号に対する所定のゲーム進行処理を行う。
【００３３】
ＣＰＵ２は、例えばモニタ１４に表示すべきさん二次元画像の内容を決定し、その内容に対して必要な描画データを描画データ生成プロセッサ３に生成させ、その描画データを描画処理プロセッサ６に転送して描画処理を行わせ、描画処理結果をモニタ１４に二次元画像として表示する。また、ＣＰＵ２は、スピーカ１５から出力すべき効果音又はＢＧＭ等の音響内容を決定し、音声処理プロセッサ９にその音響内容に対応した音声データを生成させ、その音声データをスピーカ１５から出力させる。
【００３４】
描画データ生成プロセッサ３は、描画処理に必要な各種の演算処理を行うものである。ＣＰＵ２がモニタ１４に表示すべき画像を決定し、その画像の描画に必要な画像データ（キャラクタ、背景及び他の物体等（以下、これらのことを「オブジェクト」という。）のポリゴンデータ、テクスチャデータ、及び光源データ等）をＲＡＭ４から読み出して描画データ生成プロセッサ３に供給すると、描画データ生成プロセッサ３は、ＣＰＵ２から供給される画像データと操作情報に基づいて、描画に必要なデータ（透視投影における仮想カメラ、各オブジェクトの位置関係、スクリーン画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、及び各ポリゴンの反射特性等のデータ）を演算し、その演算結果を描画処理プロセッサ６に供給する。描画処理プロセッサ６では、描画データ生成プロセッサ３から供給された演算データに基づいて、モニタ１４に表示するための二次元画像の描画処理が行われる。
【００３５】
ＲＡＭ４は、ＤＶＤ−ＲＯＭドライブ１２によってＤＶＤ−ＲＯＭ１７から読み込まれたゲームプログラム及びゲームデータを格納するエリア（図示せず）と、ＣＰＵ２がゲームプログラムを処理するためのワークエリア（図示せず）を提供するものである。ＲＡＭ４には、ゲームの進行に応じて必要なゲームプログラムとゲームデータとが、ＤＶＤ−ＲＯＭ１７から読み込まれて記憶される。
【００３６】
ＲＯＭ５には、ディスクローディング機能等のゲーム装置１の基本的機能や、ＤＶＤ−ＲＯＭ１７に記憶されたゲームプログラム及びゲームデータを読み出す手順等を示す基本プログラムが記憶されている。ＣＰＵ２は、ＤＶＤ−ＲＯＭドライブ１２にＤＶＤ−ＲＯＭ１７が装着されると、ＲＯＭ５の基本プログラムにしたがってＤＶＤ−ＲＯＭドライブ１２を動作させ、ＤＶＤ−ＲＯＭ１７からゲームプログラム及びゲームデータをＲＡＭ４に読み込み、ゲーム開始状態に設定する。
【００３７】
描画処理プロセッサ６は、二次元画像の各コマの画像（例えば透視投影法による二次元画像）を生成し、モニタ１４に表示させるものである。描画処理プロセッサ６は、ＣＰＵ２からの描画指令に基づき、描画データ生成プロセッサ３から供給されるデータを用いて、所定のレンダリング処理によってモニタ１４に表示させる各コマの二次元画像を作成する。
【００３８】
描画処理プロセッサ６には、各コマの二次元画像の作成作業をするためのＶＲＡＭ７が接続されている。描画処理プロセッサ６は、ＶＲＡＭ７を用いて例えば１／３０秒毎に各コマの二次元画像のデータを生成する。
【００３９】
ＶＲＡＭ７には、モニタ１４に表示される各コマの二次元画像のデータを格納するバッファメモリ７２（以下、「フレームバッファ」という。）と、フレームバッファ７２に格納すべき画像データを作成するための前処理を行うバッファメモリ７１（以下、「テクスチャバッファ」という。）が設けられている。フレームバッファ７２は同一のメモリ構造及びメモリ容量を有する２つのフレームバッファ７２Ａ，７２Ｂで構成されている。
【００４０】
ＶＲＡＭ７に２つのフレームバッファ７２Ａ，７２Ｂが設けられていることにより、モニタ１４への例えば１／３０秒毎の各コマの描画処理をスムーズに行うことができる。すなわち、一方のフレームバッファ７２Ａを用いてモニタ１４への表示処理を行っている間に、他方のフレームバッファ７２Ｂで次のコマの画像データを生成し、この処理をフレームバッファ７２Ａとフレームバッファ７２Ｂとの間で交互に行うことにより、描画処理をスムーズに行う。
【００４１】
ＶＲＡＭ７には、後述するように、ライトマップ、シャドウマップ、Ｚバッファ、各オブジェクトの描画データ等が記憶される領域が設けられている。
【００４２】
Ｄ／Ａコンバータ８は、フレームバッファ７２から出力される画像データをアナログ信号に変換してモニタ１４に出力するものである。Ｄ／Ａコンバータ８には、フレームバッファ７２Ａからの画像データとフレームバッファ７２Ｂからの画像データとを切り換えるスイッチ回路が設けられ、このスイッチ回路の切り換えは描画処理プロセッサ６によって制御される。
【００４３】
すなわち、描画処理プロセッサ６は、フレームバッファ７２Ａをモニタ１４のバッファとするときは、フレームバッファ７２Ａの画像データがモニタ１４に出力されるようにスイッチ回路を切り換え、フレームバッファ７２Ｂをモニタ１４のバッファとするときは、フレームバッファ７２Ｂの画像データがモニタ１４に出力されるようにスイッチ回路を切り換える。
【００４４】
音声処理プロセッサ９は、ＣＰＵ２からの音声指令に基づき、ＲＡＭ４から効果音又はＢＧＭ等の音声データを読み出し、所要の加工処理とＤ／Ａ変換処理をした後、アンプ１０に出力する。アンプ１０は、音声処理プロセッサ９から入力される音声信号を所定の増幅度で増幅した後、スピーカ１５に出力する。
【００４５】
インターフェース（Ｉ／Ｆ）１１は、操作コントローラ１６をゲーム装置１に接続するためのインターフェースである。操作コントローラ１６は、ゲーム装置１に各種の操作情報を入力するものである。操作コントローラ１６には、十字キー、左ボタン、右ボタン、セレクトボタン、スタートボタン、ジョイステック等の複数の操作部材（いずれも図示せず）が設けられている。
【００４６】
スタートボタンはゲーム開始を入力するためのボタンであり、セレクトボタンはメニュー内容を選択するためのボタンである。また、ジョイステックや十字キーは、主としてキャラクタに移動、攻撃及び防御等の種々の動作を指令するための操作部材として使用される。左ボタン及び右ボタンは、例えば仮想カメラの視線方向を左方向や右方向に移動又は回転したりするのに使用される。
【００４７】
本実施形態に係るゲームプログラムは、上述したように、二次元画像において複数のオブジェクト（例えばキャラクタや建物）の影同士が重なった場合に、本願特有のレンダリング処理によって違和感のないより自然な影を表示させるようにしたものである。以下、詳述する。
【００４８】
次に、本実施形態に係るレンダリング処理について説明する。図２は、レンダリング処理の概略手順を示したフローチャートである。このフローチャートに示すレンダリング処理は、主として描画処理プロセッサ６によって行われる。レンダリング処理は、図２に示すように、オブジェクト描画処理（Ｓ１）、オーバーラップ処理（Ｓ２）、及び効果付加処理（Ｓ３）等によって構成されている。オーバーラップ処理（Ｓ２）は、キャスト処理（Ｓ４）及びレシーブ処理（Ｓ５）等によって構成されている。
【００４９】
オブジェクト描画処理（Ｓ１）は、通常、複数の三角形であるポリゴンによって構成されているオブジェクトについて、フレームバッファ７２に二次元画像を生成する処理である。本実施形態のオブジェクト描画処理では、最初に建物等の不透明なオブジェクトを対象とする描画処理が行われる。その後、グラス内の水のような半透明のオブジェクトの描画処理が行われるが、半透明のオブジェクトの描画処理については本願発明と関係のない一般的な処理であるので説明を省略する。以下に説明するオブジェクト描画処理は、不透明なオブジェクトについてのものである。
【００５０】
オブジェクト描画処理（Ｓ１）では、透視投影及び隠面消去が行われる。透視投影とは、三次元の仮想空間を二次元のモニタ画面に表示するために行われる処理をいう。具体的には、図３に示すように、例えば三次元の仮想空間内（ｘｙｚ座標内で表される空間内）の所定位置にカメラ（図略）に相当する視点Ｖをおき、この視点ＶとオブジェクトＯとの間に投影面としてのスクリーンＳを仮想的に配置する。通常、三角形のポリゴンによって構成されるオブジェクトＯの各点から視点Ｖに向かって投射線ＬＡを生成すると、スクリーンＳ上に投射線ＬＡとの交点の集まりとして、投影図としてのオブジェクトＯ’が形成される。このようにして、オブジェクトＯがスクリーンＳにオブジェクトＯ’として透視投影される。
【００５１】
また、隠面消去とは、オブジェクトにおいて手前に存在する面によって隠されて見えない面の一部の領域を消去することをいい、本実施形態では、「Ｚバッファ法」と呼称される方法が用いられて隠面消去が行われる。
【００５２】
Ｚバッファ法は、スクリーン画面に相当するフレームバッファ７２の画素ごとに、対象となるオブジェクト同士の奥行き（ｚ軸）方向における距離を比較することにより隠面消去を行う公知の方法である。Ｚバッファ法では、フレームバッファ７２と同じ解像度を有し、視点からの奥行きを数値化したもの（以下、「Ｚ値」という。）をフレームバッファ７２の画素ごとに記憶するＺバッファ（図示せず）が用いられる。このＺバッファは、ＶＲＡＭ７に設けられる。
【００５３】
なお、本実施形態においては、Ｚバッファ法を採用しているが、これに代えて、遠くにあるオブジェクトから順にフレームバッファ７２に上書きしていく、公知の「Ｚソート法」が用いられて隠面消去が行われてもよい。
【００５４】
オブジェクト描画処理では、複数のオブジェクトについてそれぞれ処理を行う順番が決定され、この処理の順番にしたがって一つのオブジェクトごとに処理が行われる。この処理の順番は、Ｚバッファ法では任意に決定される。
【００５５】
まず、最初のオブジェクトが描画される前工程として、フレームバッファ７２の全画素の値が例えば背景色の値に設定されることによりフレームバッファ７２の全画素が初期化される。次いで、Ｚバッファの全画素の値が最遠方（例えば無限大）の値に設定されることにより、Ｚバッファの全画素が初期化される。
【００５６】
次に、順番が最初のオブジェクト（以下、「オブジェクトＯ1」という。）について透視投影及び走査変換を行う。なお、走査変換とは、オブジェクトを構成するポリゴンの各辺とスクリーンＳ上を走査される所定のスキャンラインとの交点を取得して、ポリゴンに含まれる画素を決定するための処理である。すなわち、２つの交点間にあるスキャンライン上の画素がポリゴン内部の画素とされる。
【００５７】
その後、オブジェクトＯ1（ポリゴン）の一の画素についての、三次元の仮想空間内の所定位置に設置される仮想的なカメラ（図略）との距離の値（以下、「Ｚｏ値」という。）が算出される。次いで、このＺｏ値と、当該画素に対応するＺバッファの画素のＺ値とが比較される。
【００５８】
この比較結果がＺ＞Ｚｏである場合、すなわち、オブジェクトＯ1の一の画素についての距離がＺバッファの画素の現在のＺ値よりカメラ側にある場合、Ｚバッファの画素のＺ値をＺｏ値に更新するとともに、オブジェクトＯ1の当該画素における輝度値（以下、「輝度値Ｋ」という。）を例えばＶＲＡＭ７から読み出してフレームバッファ７２に格納する。この輝度値Ｋの設定においては、テクスチャマッピング等の作業も同時に行われる。
【００５９】
一方、上記比較結果がＺ＜Ｚｏである場合、Ｚバッファの画素のＺ値はそのままとされ、その画素には当該ポリゴンは描かれない。Ｚバッファ法では、全てのオブジェクトについて上述の処理が行われ、フレームバッファ７２上に全てのオブジェクトについての二次元画像が生成される。
【００６０】
このオブジェクト描画処理では、例えば山や空あるいは建物等といった背景等の動かないオブジェクト（以下、「静的オブジェクト」という。）がオブジェクトの一つとして扱われ、上記レンダリング処理が行われる。また、静的オブジェクトの他に、ゲーム空間上に登場し、動作するキャラクタ等のオブジェクト（以下、「動的オブジェクト」という。）もオブジェクトの一つとして扱われ、上記レンダリング処理が行われる。
【００６１】
次いで、シェーディング（陰影）処理が行われ、シェーディング処理後のデータがフレームバッファ７２に格納される。シェーディング処理では、例えば予めＶＲＡＭ７に記憶されたライトマップが用いられる。ここで、ライトマップとは、スクリーン画面に描写される静的な陰影を表す輝度情報（例えば輝度値）が予め演算によって求められてテクスチャ化されたものである。ライトマップは、例えばゲームにおいてゲームステージ毎に生成される。このライトマップは、独自の座標系を有しており（以下、この座標を「ＵＶ座標」という）、このＵＶ座標によって輝度情報が格納された位置の特定が可能になっている。
【００６２】
シェーディング処理では、ライトマップを参照して、処理対象となっている画素に対して、ＵＶ座標の輝度情報が取得される。この取得された輝度情報を上記算出された輝度値Ｋに乗算し又は加算して輝度値Ｋ’を算出することにより、画素ごとの輝度値が補正される。これにより、光が当たっている部分は比較的明るく、陰になる部分は比較的暗くなるよう描画され、立体感のあるリアルなスクリーン画像が得られる。
【００６３】
また、ライトマップを構成する輝度情報には、静的オブジェクトがライトによって照射されることにより生じる影（以下「静的シャドウ」という。）の輝度情報が含まれているので、シェーディング処理の実行によって静的シャドウも描画される。
【００６４】
フレームバッファ７２の画素ごとに格納されていたＲＧＢの輝度値は、対応する画素においてシェーディング処理によって算出された輝度値Ｋ’に更新される。オブジェクトＯ1の全ての画素について上記処理が終了すれば、次のオブジェクトＯ2について同様の処理を実行し、以降、全てのオブジェクト（Ｏ1，Ｏ2，…，Ｏn、ｎはオブジェクト数）について同様の処理を行う。
【００６５】
オーバーラップ処理（Ｓ２）は、オブジェクト描画処理（Ｓ１）においてフレームバッファ７２に書き込まれた画像（スクリーン画像）に重ねるように、他の画像であるオーバーラップ画像をブレンディング、すなわち合成する処理である。
【００６６】
オーバーラップ画像としては、動的オブジェクトがライトによって照射されることにより生じる影（以下、「動的シャドウ」という。）等がある。この動的シャドウの合成処理に関するオーバーラップ処理については後述する。また、動的シャドウ以外の他のオーバーラップ画像のオーバーラップ処理については、本実施形態と直接的な関連がないのでここでは省略する。
【００６７】
効果付加処理（Ｓ３）は、例えばエフェクト処理、フィルタ処理及びスクリーン処理等によって構成されている。エフェクト処理は、パーティクル（例えば爆風や火花等の粒子状のもの）をフレームバッファ７２に書き込むための処理である。フィルタ処理は、例えば「もや」を表現する場合等のように、フレームバッファ７２に書き込まれている画像データ全体について所定の補正を行うための処理である。これらの処理により、スクリーン画像に描画される映像がよりリアルになり、スクリーン画像に臨場感を持たせることができる。スクリーン処理は、ゲージ等（例えば体力ゲージ等）の、プレーヤから見て一番手前に表示される二次元画像をフレームバッファ７２に書き込む処理である。
【００６８】
次に、上記オーバーラップ処理（Ｓ２）について詳細に説明する。オーバーラップ処理は、図２に示したように、例えばキャスト処理（Ｓ４）とレシーブ処理（Ｓ５）とによって構成される。なお、本実施形態のキャスト処理及びレシーブ処理は、静的オブジェクトに動的シャドウを合成する処理であって、その他の動的シャドウの合成処理（例えば、動的オブジェクトに動的シャドウを描画するセルフシャドウの処理）等は、オーバーラップ処理における別の処理で実行される。
【００６９】
キャスト処理（Ｓ４）では、動的オブジェクトの動的シャドウを描画するために必要なシャドウマップが生成される。レシーブ処理（Ｓ５）では、フレームバッファ７２の画素ごとに動的シャドウを描画するか否かを判別する処理が行われ、その判別処理による判別結果に基づいて動的シャドウのスクリーン画像への描画が行われる。
【００７０】
ここで、スクリーン画像に影を描画するための公知手法である「シャドウマップ技法（三次元の画像空間においてＺバッファ法を用いて影となる画素を決定する方法）」を用いた一般的に行われる影の描写方法について説明する。
【００７１】
まず、シャドウマップとは、上記シャドウマップ技法に汎用的に用いられるものであり、光源（以下、「ライト」という）の位置を視点としライトから可視点までの距離を画素ごとに取得してデータ化したものである。ここでいう可視点とは、ライトを視点とした場合に、ライト側から見える点のことである。
【００７２】
シャドウマップの生成においては、Ｚバッファ法を用いてライトの位置を視点としてライトから可視面までの距離、換言すればライトから当該ライトの光が当たっている部分（例えばオブジェクトや地面）までの距離がＺ値（以下、「深度値Ｄ２」という。）として画素ごとに取得される。なお、シャドウマップは、ライトが複数ある場合、ライトごとにそれぞれ生成される。
【００７３】
例えば図４に示すように、地面ＥにオブジェクトＯが配置されている場合において、三次元の仮想空間上に設定されているライトＬからオブジェクトＯに対して照射が行われているとする。このような場合、シャドウマップＳＭの画素ｓｍａにおいては、照射方向上にオブジェクトＯのＯａ点及び地面ＥのＥａ点が存在するが、Ｚバッファ法によってライトＬからの距離が最も短いＯａ点が特定され、ライトＬからＯａ点までの距離が深度値Ｄ２として格納される。
【００７４】
また、例えば図４に示す地面ＥのＥb点について考察すると、Ｅb点は画素ｓｍｂの照射方向上においてライトＬからの距離が最も短い（ライトＬからの光が直接当たっている部分である。）。したがって、画素ｓｍbには、ライトＬからＥb点までの距離の値が深度値Ｄ２として格納される。
【００７５】
このようにして、シャドウマップＳＭの各画素には、ライトＬからの光が到達する部分までの距離である深度値Ｄ２がそれぞれ格納され、これによりシャドウマップＳＭが生成される。
【００７６】
次に、カメラ視点から見た際のスクリーン画像の各画素における影の有無の判別について説明する。この判別は、スクリーン画像の各画素に描画されるオブジェクトのライトからの距離（以下、「深度値Ｄ１」と言う。）と、これに対応するシャドウマップＳＭに格納されている深度値Ｄ２とを比較することによって行われる。深度値Ｄ１が深度値Ｄ２よりも大きい場合（ライトから光が届く距離よりも遠い場合）、その画素には影が含まれると判定される。
【００７７】
例えば、図４に示すスクリーン画像の一の画素に描画される地面ＥのＥa点に着目すれば、所定の演算により算出した、ライトＬからＥa点までの距離（深度値Ｄ１）と、これに対応するシャドウマップＳＭに格納されている、ライトＬからオブジェクトＯのＯa点までの距離（深度値Ｄ２）とが比較される。地面ＥのＥa点に対応するフレームバッファ７２の画素の深度値Ｄ１が「３０」であり、シャドウマップＳＭに格納されている当該画素に対応する深度値Ｄ２が「２０」であるとすると、当該画素には影があると判別される。
【００７８】
一方、深度値Ｄ１が深度値Ｄ２よりも小さい又は等しい場合、その画素には影が含まれないと判定される。同様にして、フレームバッファ７２の全ての画素について影の有無を判別し各画素について描画を行うことにより、影が生成されたスクリーン画像がフレームバッファ７２に描画される。
【００７９】
図５は、フレームバッファ７２に格納される、図４に示すスクリーン画像のイメージ図であり、オブジェクトＯの影が生成されていない状態を示す。また、図６は、図５に示すスクリーン画像に対して影を生成した場合の状態を示す図である。
【００８０】
本実施形態では、上述したシャドウマップ技法を用いて、キャスト処理（Ｓ４）において動的シャドウを描画するためのシャドウマップがライト毎に生成され、レシーブ処理（Ｓ５）において当該動的シャドウのスクリーン画像への描画が行われる。したがって、本実施形態のキャスト処理（Ｓ４）では、シャドウマップが生成される対象は、動的オブジェクトのみに限定されている。そのため、「静的シャドウ」の描画対象となる建物等のオブジェクトに対する深度値は、シャドウマップには格納されないことになっている。動的シャドウを生成の対象とするか否かの判別には、例えばオブジェクト毎に設定されている情報（例えばフラグ等を用いて予め設定された情報）が用いられる。また、シャドウマップの一の画素のライトの照射方向上に動的オブジェクトが存在しない場合、その画素の深度値Ｄ２の更新は行わない。シャドウマップの各画素には初期値としてライトから最遠の値が格納されているので、更新を行わない場合は初期値が深度値Ｄ２となる。なお、本実施形態のシャドウマップはＶＲＡＭ７に記憶される。
【００８１】
図７は、図２に示したレシーブ処理（Ｓ５）を示すフローチャートである。レシーブ処理は、フレームバッファ７２に描画されたスクリーン画像に対して動的オブジェクトの動的シャドウがブレンディング（合成）される処理である。
【００８２】
まず、複数のライトＬがある場合、複数のライトＬのうち一つのライトＬが選択される（Ｓ１１）。次いで、フレームバッファ７２のうちの一の画素が選択され（Ｓ１２）、その後、描画ピクセル処理が行われる（Ｓ１３）。描画ピクセル処理は、フレームバッファ７２の一の画素に描画される静的オブジェクトに重ねて動的シャドウを描画するか否かを判別するとともに、動的シャドウを描画する場合に、動的シャドウのＲＧＢの輝度値及び混合率α（０≦α≦１）をそれぞれ決定する処理である。動的シャドウのＲＧＢの輝度値及び混合率αは、例えばＶＲＡＭ７に設けられた動的シャドウ用のバッファに格納される。なお、この描画ピクセル処理については後述する。
【００８３】
次いで、フレームバッファ７２の全ての画素について描画ピクセル処理を行ったか否かの判別が行われる（Ｓ１４）。全ての画素について描画ピクセル処理が行なわれていない場合（Ｓ１４：ＮＯ）、ステップＳ１２に戻る。
【００８４】
全ての画素について描画ピクセル処理が行われている場合（Ｓ１４：ＹＥＳ）、全てのライトＬについて全画素の描画ピクセル処理が行われたか否かの判別が行われる（Ｓ１５）。全てのライトＬについて全画素の描画ピクセル処理が行われていない場合（Ｓ１５：ＮＯ）、ステップＳ１１に戻る。
【００８５】
全てのライトＬについて全画素の描画ピクセル処理が行われ（Ｓ１５：ＹＥＳ）、動的シャドウが描画される場合、ＶＲＡＭ７に設けられたバッファから輝度値及び混合率αを読み出し、フレームバッファ７２の画素毎に動的シャドウをブレンディングする処理、すなわち動的シャドウの描画処理を行う（Ｓ１６）。
【００８６】
次に、図７のステップＳ１３に示す描画ピクセル処理について、図８に示すフローチャートを参照して説明する。描画ピクセル処理は、上述したように、フレームバッファ７２の一の画素に描画される静的オブジェクトに重ねて動的シャドウを描画するか否かを判別するとともに、動的シャドウを描画する場合に、動的シャドウのＲＧＢの輝度値及び混合率αを設定する処理である。
【００８７】
まず、図７のステップＳ１２において選択されたフレームバッファ７２の一つの画素に描画されるオブジェクトの深度値Ｄ１が所定の演算により取得されるとともに、この画素に対応する動的オブジェクトの深度値Ｄ２がＶＲＡＭ７のシャドウマップから読み出される（Ｓ２１）。例えば、図９に示すように、動的オブジェクトとしてのキャラクタＣにおいて動的シャドウＣＳが生成される場合、フレームバッファ７２の一つの画素であるｆ１点に注目し、この点における静的オブジェクト（この場合は地面）の深度値Ｄ１が所定の演算により取得される。ここで、深度値Ｄ１は、上述したように、ライトＬから当該画素（ｆ１点）に描画される静的オブジェクトまでの距離である。そして、シャドウマップからこのｆ１点に対応する動的オブジェクト（キャラクタＣ）の深度値Ｄ２が読み出される。
【００８８】
ステップＳ２１において深度値Ｄ１が演算により算出され、深度値Ｄ２がＶＲＡＭ７から読み出されると、選択された一の画素に対して動的シャドウを描画するか否かが判別される（Ｓ２２）。具体的には、ステップＳ２１で取得した、処理対象である画素の深度値Ｄ１が深度値Ｄ２よりも大きいか否かによって、当該画素に動的シャドウを描画するか否かが判別される。
【００８９】
深度値Ｄ１が深度値Ｄ２以下と判別された場合（Ｓ２２：ＮＯ）、選択された一の画素に対して動的シャドウを描画しないと判別される。この場合、動的シャドウのＲＧＢの輝度値の設定が行われずに処理が終了する。このとき、動的シャドウ用のバッファは、更新されないので、初期値（例えば、ＲＧＢ値に透明色を示す０の値とα値に０の値）のままとなる。
【００９０】
一方、ステップＳ２２において、深度値Ｄ１が深度値Ｄ２より大きいと判別された場合（Ｓ２２：ＹＥＳ）、選択された一の画素に対して動的シャドウを描画すると判別される。
【００９１】
選択された一の画素に対して動的シャドウを描画する場合、当該画素において、静的シャドウの輝度データに基づいて静的シャドウが存在するか否か（静的シャドウが描画されているか否か）が判別される。本実施形態では、ライトマップの輝度データを用いて静的シャドウが描画されているか否かを判別するが、上述したライトマップには、処理対象の画素に静的シャドウが描画されているか否かの情報が含まれていないので、以下に示す処理（ステップＳ２３，Ｓ２４）によって静的シャドウが描画されているか否かの判別が行われる。
【００９２】
すなわち、ステップＳ２３において、動的シャドウの動的シャドウカラーと、静的シャドウが描画された静的オブジェクトのテクスチャカラーとが取得される。ここで、動的シャドウカラーとは、動的シャドウについて予め設定されているＲＧＢの輝度値をいう（以下、「動的シャドウカラーＤＳ」と言う。）。動的シャドウカラーＤＳは、動的シャドウの基本の輝度値（固定値）であり、静的シャドウと重なっていない状態では常にこの値を用いる。動的シャドウカラーＤＳは、ＶＲＡＭ７等に予め記憶されており、必要に応じて読み出される。なお、本実施形態の動的シャドウカラーＤＳは、単一の固定値であるが、例えばゲームステージ毎に切り替えて使用するように複数あってもよく、また単一の標準値を記憶しておいてゲームステージ毎に標準値を増減するようにして用いてもよい。
【００９３】
また、テクスチャカラーとは、選択された一の画素に描画される静的オブジェクトに関するＲＧＢの輝度値をいう（以下、「テクスチャカラーＳＳ」と言う。）。このテクスチャカラーＳＳは、静的シャドウの輝度情報が反映されている情報から取得する。本実施形態では、テクスチャカラーＳＳは、静的シャドウの輝度情報も含まれている、上述したシェーディング処理に用いられるライトマップから読み出され取得される。具体的には、ライトマップに格納されている、上記選択された一の画素に対応するＵＶ座標位置の輝度値が読み出されて用いられる。なお、テクスチャカラーＳＳには、静的オブジェクトとともに静的シャドウが既に描画されているフレームバッファ７２の輝度値が用いられてもよい。
【００９４】
次いで、ステップＳ２４において、動的シャドウカラーＤＳとテクスチャカラーＳＳとの合計値が、所定の閾値よりも大きいか否かが判別される。換言すれば、動的シャドウカラーＤＳとテクスチャカラーＳＳとの重なり部分が所定のカラーより黒いか否か（暗いか否か）が判別される。すなわち、図１０に示すように、動的シャドウ（図１０のＣＳ参照）が静的シャドウ（図１０のＢＳ参照）に重なっていて、動的シャドウＣＳをスクリーン画像に馴染ませる処理を行うべきであるか否かが判別される。
【００９５】
動的シャドウカラーＤＳとテクスチャカラーＳＳとの合計値が閾値を超えるような場合には、処理対象の画素のテクスチャカラーＳＳには静的シャドウの輝度値が含まれて比較的大きい輝度値が格納されていたとされ、動的シャドウを馴染ませる処理を行うようにされる。
【００９６】
より具体的には、ステップＳ２４では、「ＤＳ×ｂ＋ＳＳ＋Ａ＞閾値」といった判別式が用いられて判別される。ここで「ｂ」及び「Ａ」は、スクリーン画像に描画するゲームの各場面（例えばステージ）や三次元空間の所定の場所等の環境に応じて予め定められた補正値である。特に「ｂ」は、動的シャドウカラーＤＳを調整するものであり、「Ａ」は閾値を直接的に調整するものである。上記判別式において左辺の「ＤＳ×ｂ＋ＳＳ＋Ａ」は、一種の評価関数であるので、式中の「ｂ」の値及び「Ａ」の値をそれぞれ変更することによって、閾値を調整することができる。これによって、動的シャドウを静的シャドウに完全に馴染ませずに、動的シャドウと静的シャドウとを二重にして描画させておきたい場合等、各場面の状況に応じた動的シャドウの描画を行うことができる。
【００９７】
なお、上記判別式「ＤＳ×ｂ＋ＳＳ＋Ａ＞閾値」に代えて「ＤＳ＋ＳＳ＞閾値」といった判別式が用いられてもよい。さらに、「ＳＳ＞閾値」といった判別式が用いられてもよい。また、ステップＳ２４の処理では、「ＤＳ×ｂ＋ＳＳ＋Ａ＞閾値」の判別において動的シャドウカラーＤＳ及びテクスチャカラーＳＳとしてＲＧＢのうちＲだけの値を用いればよいが、これに限らず、Ｒ，Ｇ，Ｂの全ての値を考慮して用いるようにしてもよく、あるいはＧだけ又はＢだけを用いるようにしてもよい。
【００９８】
ステップＳ２４において、動的シャドウカラーＤＳとテクスチャカラーＳＳとの合計値が閾値よりも大きいと判別した場合（Ｓ２４：ＹＥＳ）、すなわち、動的シャドウカラーＤＳとテクスチャカラーＳＳとの重なり部分が所定のカラーより黒く、動的シャドウを馴染ませると判別した場合、動的シャドウのＲＧＢの輝度値として、動的シャドウカラーＤＳとテクスチャカラーＳＳとの差分の値が設定される（Ｓ２５）。
【００９９】
具体的には、動的シャドウのＲＧＢの輝度値として、設定式「ＤＳ×ｂ−ＳＳ＋Ａ」で表される評価関数で算出される値が用いられる。この設定式においても式中の「ｂ」及び「Ａ」の値を変更することにより、各場面の状況に応じて動的シャドウと静的シャドウとの重なり具合を微調整することができる。
【０１００】
例えば、「ｂ」及び「Ａ」の値を変更することによって、静的シャドウに重なる動的シャドウをプレーヤが認識できないように透明色で描画させたり、プレーヤが認識できる程度にうっすらと描画させたりすることができる。本実施形態では、スクリーン画像に描画するゲームの各場面や三次元空間の所定の場所等の環境に応じて予め定められた値が「ｂ」及び「Ａ」に設定されるので、動的シャドウと静的シャドウとの重なり部分を自然な描写になるよう表現することができる。
【０１０１】
なお、本実施形態においては、ステップＳ２５において用いられる設定式中の「ｂ」及び「Ａ」は、ステップＳ２４において用いられる判別式中の「ｂ」及び「Ａ」と同じ値に設定しているが、例えば「ｂ」に代えて「ｂ」と異なる「ａ」、「Ａ」に代えて「Ａ」と異なる「Ｂ」といった値がそれぞれ設定されてもよい。
【０１０２】
また、上記設定式「ＤＳ×ａ−ＳＳ＋Ａ」に代えて、動的シャドウのＲＧＢの輝度値として、設定式「ＤＳ−ＳＳ」が用いられてもよい。この場合であっても、動的シャドウカラーＤＳ及び静的シャドウカラーＳＳがそれぞれ等しいときであれば、差分の値は「０」となって静的シャドウのみが描画される状態となるので、動的シャドウと静的シャドウとが重なっている画素の領域が不自然に濃くなることがない。また、動的シャドウカラーＤＳ及びテクスチャカラーＳＳが異なる値であっても、静的シャドウに動的シャドウが重なる画素の領域の輝度値と、重ならない画素の領域の輝度値とがほぼ同等の輝度値になるので、重なっている画素の領域だけが不自然に濃く描画されることがない。
【０１０３】
その後、図８には示していないが、動的シャドウの混合率αを決定するフィルタリング処理が行われ、動的シャドウのＲＧＢの輝度値と混合率αとが動的シャドウ用のバッファ（ＶＲＡＭ７）に格納される。フィルタリング処理には、動的シャドウの境界部分がいわゆるジャギー（例えばギザギザの縁）にならないように滑らかにするためのものであり、例えば公知の近方比率フィルタリング（ＰＣＦ：percentage-closer filtering）が用いられる。これによって、動的シャドウの境界部分を滑らかに表現することができる。動的シャドウ用のバッファは、フレームバッファ７２と同様の構成である。動的シャドウの輝度値及び混合率αは、フレームバッファ７２の選択された画素に対応する動的シャドウ用のバッファの領域に格納される。
【０１０４】
一方、ステップＳ２４において、動的シャドウカラーＤＳとテクスチャカラーＳＳとの合計値が閾値よりも小さいと判別した場合（Ｓ２４：ＮＯ）、すなわち、動的シャドウカラーＤＳとテクスチャカラーＳＳとの重なり部分が所定のカラーより明るく、動的シャドウを馴染ませないと判別した場合、動的シャドウのＲＧＢの輝度値として、動的シャドウカラーＤＳを設定する（Ｓ２６）。その後、上述のフィルタリング処理を行って混合率αが決定された後、動的シャドウの輝度値と混合率αとが動的シャドウ用のバッファ（ＶＲＡＭ７）に格納される。
【０１０５】
本実施形態では、フレームバッファ７２に描画される全ての動的シャドウに対して図８のフローチャートの描画ピクセル処理に示した動的シャドウを馴染ませる処理を行っているが、例えばカメラ（図略）の位置から動的シャドウまでの距離（Ｚ値）が比較的遠い動的シャドウに対しては、上記馴染ませる処理を行わずに描画するようにしてもよい。カメラの位置から遠い動的シャドウはスクリーン画面上に大きく表示されることは比較的少ないので、プレーヤには特に不自然さを感じさせることなく、また、ゲーム装置の処理負荷を軽減することができるといった利点がある。
【０１０６】
具体的には、図８に示すステップＳ２２とステップＳ２３との間に、画素に描画されるオブジェクトのカメラ位置からの距離（Ｚ値）が所定値以上であるか否かを判別する処理を加え、距離が所定値以上であると判別した場合には、動的シャドウカラーＤＳをそのまま動的シャドウのＲＧＢの輝度値として設定するようにする。一方、所定値未満の場合は、ステップＳ２３〜Ｓ２６の処理を実行するようにする。
【０１０７】
もちろん、この発明の範囲は上述した実施の形態に限定されるものではない。例えば、上記実施形態で述べたゲームの内容は、対戦型ゲーム、アクションゲーム又はロールプレーイングゲーム等の種々のゲームに適用することができる。また、本実施形態に記載のゲームは、オンラインゲームに適用するようにしてもよく、オンラインゲームに参加したプレーヤ同士で対戦する、あるいは複数のプレーヤとチームを組んで他のチームと対戦するといったゲームに適用するようにしてもよい。
【図面の簡単な説明】
【０１０８】
【図１】本願発明に係るゲームプログラムが適用されるゲーム装置の一例を示すブロック構成図である。
【図２】レンダリング処理の概略手順を示したフローチャートである。
【図３】透視投影を説明するための概念図である。
【図４】シャドウマップの生成を説明するための概念図である。
【図５】オーバーラップ処理が行われる前のスクリーン画像のイメージ図の一例である。
【図６】オーバーラップ処理が行われた後のスクリーン画像のイメージ図の一例である。
【図７】図２に示したレシーブ処理を示すフローチャートである。
【図８】図８に示した描画ピクセル処理を示すフローチャートである。
【図９】動的オブジェクトに対してその動的シャドウが生成される場合を説明するための図である。
【図１０】静的シャドウと動的シャドウとの位置関係の一例を示す図である。
【図１１】従来の建物と静的オブジェクトと動的オブジェクトとの位置関係の一例を示す図である。
【符号の説明】
【０１０９】
１  ゲーム装置
２  ＣＰＵ
３  描画データ生成プロセッサ
４  ＲＡＭ
５  ＲＯＭ
６  描画処理プロセッサ
７  ＶＲＡＭ
８  Ｄ／Ａコンバータ
９  音声処理プロセッサ
１０  アンプ
１２  ＤＶＤ−ＲＯＭドライブ
１４  モニタ
１５  スピーカ
１６  操作コントローラ
１７  ＤＶＤ−ＲＯＭ
７１  テクスチャバッファ
７２  フレームバッファ
Ｂ  建物（静的オブジェクト）
ＢＳ  静的シャドウ
Ｃ  キャラクタ（動的オブジェクト）
ＣＳ  動的シャドウ
Ｅ  地面
Ｌ  ライト
Ｏ  オブジェクト
ＳＭ  シャドウマップ
Ｓ  スクリーン画像
Ｖ  視点（カメラ）
【図１】
0004995054.tif 000002
【図２】
0004995054.tif 000003
【図３】
0004995054.tif 000004
【図４】
0004995054.tif 000005
【図５】
0004995054.tif 000006
【図６】
0004995054.tif 000007
【図７】
0004995054.tif 000008
【図８】
0004995054.tif 000009
【図９】
0004995054.tif 000010
【図１０】
0004995054.tif 000011
【図１１】
0004995054.tif 000012