説明

プログラム、情報記憶媒体、及び画像生成システム

【課題】リアルなグレア表現画像を生成できるプログラム、情報記憶媒体及び画像生成システムを提供すること。
【解決手段】 画像生成システムは、Zバッファに格納されている元画像のZ値を参照しながらグレア源の描画処理を行って、第1のグレア源画像を生成し、Zバッファに格納されている元画像のZ値を参照せずにグレア源の描画処理を行って、第2のグレア源画像を生成するグレア源描画部と、第1のグレア源画像に第1のぼかし処理を行った画像である第1の画像と、第2のグレア源画像に第2のぼかし処理を行った画像又は第2のグレア源画像である第2の画像との論理積処理を含む画像演算処理を行い、グレア補正画像を生成するグレア補正画像生成部と、元画像と第1のグレア源画像のぼかし画像とグレア補正画像に基づき、グレア表現画像を生成するグレア表現画像生成部を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体、及び画像生成システムに関する。
【背景技術】
【0002】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
このような画像生成システムでは、プレイヤの仮想現実感を高めるために、物体の後ろにある光によってその物体の輪郭がぼやけて見えるグレア効果についてもリアルに表現できることが望ましい。
【0004】
このグレアの元となる、明るいオブジェクト或いは画面上の明るい領域を、本明細書では「グレア源」と呼ぶことにする。また、グレアを受ける側のオブジェクトを「被グレアオブジェクト」と呼ぶことにする。また、グレアを用いた画像において、画像のリアリティを更に向上させる表現として、グレア源よりも手前側(視点側)にある被グレアオブジェクトのうち、グレアが掛かる部分の色を黒っぽくする手法が考えられる。この黒みのことを、本明細書では「コントラスト」と呼ぶことにする。
【0005】
このようなグレア(グロー、ハロー)効果が表現された画像を生成する技術としては、例えば特開2002−42156号公報、特開2003−85578号公報に開示される従来技術がある。
【0006】
しかしながら、これらの従来技術では、グレアのコントラストについては表現できなかった。このため、グレア効果のリアルな表現が不十分であるという課題があった。
【特許文献1】特開2002−42156号公報
【特許文献2】特開2003−85578号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、よりリアルなグレア表現画像を生成できるプログラム、情報記憶媒体及び画像生成システムを提供することにある。
【課題を解決するための手段】
【0008】
本発明は、画像を生成する画像生成システムであって、Zバッファに格納されている元画像のZ値を参照しながらグレア源の描画処理を行って、第1のグレア源画像を生成し、Zバッファに格納されている元画像のZ値を参照せずにグレア源の描画処理を行って、第2のグレア源画像を生成するグレア源描画部と、前記第1のグレア源画像に第1のぼかし処理を行った画像である第1の画像と、前記第2のグレア源画像に第2のぼかし処理を行った画像又は前記第2のグレア源画像である第2の画像との論理積処理を含む画像演算処理を行い、グレア補正画像を生成するグレア補正画像生成部と、元画像と前記第1のグレア源画像のぼかし画像と前記グレア補正画像とに基づいて、補正されたグレア効果が元画像に表現されたグレア表現画像を生成するグレア表現画像生成部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0009】
本発明によれば、元画像のZ値を参照しながらグレア源を描画することで、第1のグレア源画像が生成される。そして第1のグレア源画像のぼかし画像が、第1の画像に設定される。また元画像のZ値を参照せずにグレア源を描画することで、第2のグレア源画像が生成される。そして第2のグレア源画像のぼかし画像又は第2のグレア源画像が、第2の画像に設定される。そして本発明では、これらの第1、第2の画像の論理積処理を含む画像演算処理が行われて、グレア補正画像が生成される。そして、元画像と、第1のグレア源画像のぼかし画像(第1の画像或いは第1のグレア源画像に基づいて生成されたぼかし画像)と、グレア補正画像に基づいて、グレア表現画像が生成される。このようにすれば、グレア源のぼかし画像により、被グレアオブジェクトの輪郭が浸食されてぼけて見えるグレア表現画像を生成できる。また、グレア源よりも手前側にある被グレアオブジェクトのうち、グレアが掛かる部分の色を黒っぽくする等の表現が可能になり、リアルなグレア表現画像を生成できる。
【0010】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記グレア補正画像生成部は、前記第1のグレア源画像の論理差処理を含む画像演算処理を行い、前記グレア補正画像を生成するようにしてもよい。
【0011】
なお、このような論理差処理を省略することも可能である。
【0012】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記第1、第2のぼかし処理は、異なるぼかし処理であってもよい。
【0013】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記第1のぼかし処理は、ぼかし対象画像に対するぼかし画像の膨張量が、前記第2のぼかし処理での膨張量よりも大きくなるぼかし処理であってもよい。
【0014】
このようにすれば、グレアの黒みが表現される場所を適正な場所に設定することが可能になる。
【0015】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記第1のぼかし処理は、複数回のぼかし処理から構成され、前記複数回のぼかし処理のうちの第K回目のぼかし処理で得られたぼかし画像のピクセル値の変換処理を行い、変換処理が施されたぼかし画像に対して次の第K+1回目のぼかし処理を施す処理であってもよい。
【0016】
このようにすれば、ぼかし処理回数から期待されるぼかし長さよりも実際のぼかし長さの方が短くなってしまうなどの問題を解決でき、効率的なぼかし処理を実現できる。
【0017】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、グレア源の3次元情報を記憶する3次元情報記憶部と、グレア源の前記3次元情報に基づいて、ぼかし処理領域の領域サイズを決定する領域サイズ決定部を含み(3次元情報記憶部、領域サイズ決定部としてコンピュータを機能させ)、前記グレア補正画像生成部は、前記領域サイズで設定されるぼかし処理領域において、グレア源画像のぼかし処理を行うようにしてもよい。
【0018】
このようにすれば、領域サイズで設定される、画面サイズよりも狭いぼかし処理領域で、ぼかし処理が行われるようになるため、処理負荷を軽減できる。またグレア源の描画はグレア源の3次元情報に基づいて行われるため、グレア源が存在しない領域にグレア効果を発生させてしまう誤動作の発生も防止できる。
【0019】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記3次元情報記憶部は、球形状のグレア源の中心座標と半径とを、前記3次元情報として記憶し、前記グレア源描画部は、仮想カメラから見て前記中心座標よりも手前側の位置に配置される円板ビルボードオブジェクトを描画して、グレア源画像を生成するようにしてもよい。
【0020】
このようにすれば、例えば太陽、月、電球等の球形状のグレア源のリアルなグレア表現画像を生成できる。
【0021】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記3次元情報記憶部は、円板形状のグレア源の中心座標と半径と面の向きを表す法線ベクトルとを、前記3次元情報として記憶し、前記グレア源描画部は、前記中心座標の位置に配置され、前記法線ベクトルで面の向きが設定される、円板オブジェクトを描画して、グレア源画像を生成するようにしてもよい。
【0022】
このようにすれば、例えば車のヘッドライト等の円板形状のグレア源のリアルなグレア表現画像を生成できる。
【0023】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記3次元情報記憶部は、グレア源の複数の頂点座標を、前記3次元情報として記憶し、前記グレア源描画部は、前記頂点座標の頂点により構成されるオブジェクトを描画して、グレア源画像を生成するようにしてもよい。
【0024】
このようにすれば、任意の形状のグレア源のリアルなグレア表現画像を生成できる。
【0025】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記領域サイズ決定部は、グレア源の前記3次元情報に基づいて、スクリーン座標系でのグレア源を内包するバウンディングボックスを生成して、ぼかし処理領域のサイズを決定するようにしてもよい。
【0026】
このようにすれば、ぼかし処理の領域サイズの決定を簡素な処理で実現できる。
【発明を実施するための最良の形態】
【0027】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0028】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0029】
操作部160は、プレイヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。
【0030】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、ハードディスク、メモリーカード、メモリーカセット、磁気ディスク、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されているプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理手順をコンピュータに実行させるためのプログラム)が記憶される。
【0031】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD(液晶表示装置)、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0032】
携帯型情報記憶装置194は、プレイヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などがある。通信部196は外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0033】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバ)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信してもよい。このようなホスト装置(サーバ)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0034】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部100は記憶部170をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0035】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、領域サイズ決定部116、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0036】
オブジェクト空間設定部110は、キャラクタ、車、戦車、建物、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクト(モデルオブジェクト)の位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0037】
移動・動作処理部112は、オブジェクト(キャラクタ、車、又は飛行機等)の移動・動作演算(移動・動作シミュレーション)を行う。即ち操作部160によりプレイヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、オブジェクト(移動オブジェクト)をオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させる処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(各パーツオブジェクトの位置、或いは回転角度)を、1フレーム毎(1/60秒)に順次求めるシミュレーション処理を行う。なおフレームレートは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0038】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置や視線方向を制御する処理)を行う。
【0039】
例えば仮想カメラによりオブジェクト(例えばキャラクタ、ボール、車)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0040】
領域サイズ決定部116は、ぼかし処理を行う領域のサイズを決定する処理を行う。具体的には、3次元情報記憶部171がグレア源等の3次元情報を記憶する。このグレア源の3次元情報は、グレア源の位置情報や形状情報を含むことができる。そして領域サイズ決定部116は、3次元情報記憶部171から読み出されたグレア源の3次元情報に基づいて、ぼかし処理領域の領域サイズを決定する。具体的には、スクリーン座標系でのグレア源の座標(頂点座標等)を求め、画面上の処理領域の位置やサイズを決定する。なおこの領域サイズの決定は、例えば、グレア源の3次元情報に基づいて、スクリーン座標系でのグレア源を内包するバウンディングボックスを生成することで、決定できる。
【0041】
例えばグレア源が球形状として設定(想定)される場合には、その中心座標と半径が3次元情報として3次元情報記憶部171に記憶される。そして領域サイズ決定部116は、これらの中心座標と半径とに基づいて、ぼかし処理領域の領域サイズを決定する。またグレア源が円板形状として設定される場合には、その中心座標と半径と法線ベクトル(円板の面の向きを表す法線ベクトル)が3次元情報として3次元情報記憶部171に記憶される。そして領域サイズ決定部116は、これらの中心座標と半径と法線ベクトルとに基づいて、ぼかし処理領域の領域サイズを決定する。またグレア源が複数の頂点で構成される任意の形状のオブジェクト(トライアングルストリップ、トライアングルファン等)として設定される場合には、グレア源の複数の頂点座標が3次元情報として3次元情報記憶部171に記憶される。そして領域サイズ決定部116は、これらの複数の頂点座標に基づいて、ぼかし処理領域の領域サイズを決定する。
【0042】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まず、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、或いは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を描画バッファ172(フレームバッファ、ワークバッファなどのピクセル単位で画像情報を記憶できるバッファ。VRAM)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0043】
描画部120は、テクスチャマッピング処理や隠面消去処理やαブレンディング処理を行うことができる。
【0044】
ここでテクスチャマッピング処理は、テクスチャ記憶部174に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングする処理である。具体的には、オブジェクト(プリミティブ面)の頂点に設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部174からテクスチャ(色、α値などの表面プロパティ)を読み出す。そして、2次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間(テクセル補間)などを行う。
【0045】
また隠面消去処理は、例えば、各ピクセルのZ値(奥行き情報)が格納されているZバッファ176(奥行きバッファ)を用いるZバッファ法(奥行き比較法、Zテスト)により実現される。即ちオブジェクトのプリミティブ面の各ピクセルを描画する際に、Zバッファ176に格納されているZ値を参照する。そして参照されたZバッファ176のZ値と、プリミティブ面の描画対象ピクセルでのZ値とを比較し、描画対象ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば大きなZ値)である場合には、そのピクセルの描画処理を行うと共にZバッファ176のZ値を新たなZ値に更新する。
【0046】
またαブレンディング処理は、α値(A値)に基づいて行う処理であり、通常αブレンディング、加算αブレンディング或いは減算αブレンディングなどがある。例えば通常αブレンディングの場合には下式の処理を行う。
【0047】
Q=(1−α)×R1+α×R2
Q=(1−α)×G1+α×G2
Q=(1−α)×B1+α×B2
一方、加算αブレンディングの場合には下式の処理を行う。
【0048】
Q=R1+α×R2
Q=G1+α×G2
Q=B1+α×B2
また、減算αブレンディングの場合には下式の処理を行う。
【0049】
Q=R1−α×R2
Q=G1−α×G2
Q=B1−α×B2
ここで、R1、G1、B1は、描画バッファ172(フレームバッファ)に既に描画されている画像(元画像)のRGB成分であり、R2、G2、B2は、描画バッファ172に描画すべき画像のRGB成分である。また、RQ、GQ、BQは、αブレンディングにより得られる画像のRGB成分である。なおα値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、半透明度(透明度、不透明度と等価)情報、マスク情報、或いはバンプ情報などとして使用できる。
【0050】
描画部120は、グレア源描画部122、グレア補正画像生成部124、グレア表現画像生成部126を含む。なおこれらの一部を省略する構成としてもよい。
【0051】
グレア源描画部122は、3次元情報記憶部171に記憶されるグレア源の3次元情報に基づいてグレア源の描画処理を行う。具体的には、Zバッファ176には、元画像の生成の際に元画像のZ値が格納されている。そしてグレア源描画部122は、Zバッファ176に格納されている元画像のZ値を参照して(Zテストを有効にして)、Zバッファ法による隠面消去を行いながら、グレア源の描画処理を行って、第1のグレア源画像を生成する。このようにすれば、グレア源のうち、仮想カメラから見て元画像の被グレアオブジェクトにより隠れている部分を適正に隠面消去できる。またグレア源描画部122は、Zバッファ176に格納されている元画像のZ値を参照せずに(Zテストを無効にして)、グレア源の描画処理を行うことで、第2のグレア源画像を生成する。但し、これらの処理の場合、一般のZバッファ法とは異なり、Z値の更新は行わない。
【0052】
例えばグレア源が球形状として設定される場合には、グレア源描画部122は、仮想カメラから見て球の中心座標よりも手前側の位置(例えば球に接する位置)に配置される円板ビルボードオブジェクトを描画して、グレア源画像(第1、第2のグレア源画像)を生成する。ここでビルボードオブジェクトは、その面が仮想カメラに常に正対するように配置されるオブジェクトである。またグレア源が円板形状として設定される場合には、中心座標の位置に配置され、法線ベクトルにより設定される方向を向く、円板オブジェクトを描画して、グレア源画像を生成する。またグレア源が複数の頂点で構成されるオブジェクト(トライアングルストリップ、トライアングルファン等)として設定される場合には、これらの複数の頂点座標の頂点で構成されるオブジェクトを描画することで、グレア源画像を生成する。
【0053】
グレア補正画像生成部124はグレア補正画像の生成処理を行う。具体的には、第1のグレア源画像に第1のぼかし処理を行った画像である第1の画像(第1のステンシル)と、第2のグレア源画像に第2のぼかし処理を行った画像である第2の画像(第2のステンシル)との論理積(AND)処理を含む画像演算処理を行い、グレア補正画像(グレア補正用ステンシル)を生成する。
【0054】
なお、第2の画像は第2のグレア源画像そのものであってもよい。またグレア補正画像生成部124が行う画像演算処理は、第1のグレア源画像の論理差処理(第1、第2の画像の論理積から第1のグレア源画像を減算する処理)を含むことができる。
【0055】
またグレア補正画像生成部124が行う第1、第2のぼかし処理は、同じ内容のぼかし処理とすることもできるが、異なった内容のぼかし処理であることが望ましい。具体的には第1のぼかし処理は、ぼかし対象画像(元のグレア源画像)に対するぼかし画像(グレア源画像のぼかし画像)の膨張量(膨張の長さ)が、第2のぼかし処理での膨張量よりも大きくなるぼかし処理とすることができる。更に具体的には、第1のぼかし処理は複数回のぼかし処理で構成される。そして複数回のぼかし処理のうちの第K回目のぼかし処理(M1)で得られたぼかし画像のピクセル値の変換処理を行い、変換処理が施されたぼかし画像に対して次の第K+1回目のぼかし処理(M2)を施す処理とすることができる。
【0056】
またグレア源画像(第1、第2のグレア源画像)のぼかし処理(第1、第2のぼかし処理)は、領域サイズ決定部116により決定された領域サイズにより設定されるぼかし処理領域において行うことができる。即ち、このぼかし処理領域において、グレア源画像のぼかし処理を行い、グレア源のぼかし画像(αプレーン、ぼかし情報)を生成する。なお、グレア源のぼかし画像は、1回のぼかし処理により生成してもよいし、複数回のぼかし処理を繰り返すことで生成してもよい。またぼかし処理は、例えばテクスチャ座標をシフトさせてバイリニア補間方式(テクセル補間方式)でテクスチャマッピングを行う手法で実現できるが、ビデオフィルタ等を用いたその他の手法で実現してもよい。
【0057】
グレア表現画像生成部126はグレア表現画像の生成処理を行う。具体的には、元画像と、第1のグレア源画像のぼかし画像(αプレーン、ぼかし情報)とに基づいて、グレア効果が元画像に表現されたグレア表現画像を生成する。即ち被グレアオブジェクトの輪郭が、グレアの光により浸食されてぼけて見えるグレア表現画像を生成する。更に具体的には、元画像と、第1のグレア源画像のぼかし画像と、グレア補正画像とに基づいて、補正されたグレア効果が元画像に表現されたグレア表現画像を生成する。即ちグレアのコントラストが表現されたグレア表現画像を生成する。
【0058】
なおグレア表現画像生成部126は、所与の変換テーブル(例えばインデックスカラー・テクスチャマッピング用のルックアップテーブル等)を用いてぼかし画像(α値)の変換処理を行い、元画像と、変換処理後のぼかし画像(α値)とに基づいて、グレア表現画像を生成することもできる。
【0059】
またグレア源描画部122がα値によるグレア源の描画処理を行った場合には(描画バッファ172のαプレーンにグレア源を描画した場合には)、描画されたグレア源画像のα値に対してぼかし処理を行って、ぼかし処理が施されたα値を生成するようにする。そしてグレア表現画像生成部126が、ぼかし処理が施されたα値(αプレーン)に基づいて、元画像とグレア色(グレアの画像情報)とのαブレンディング処理を行って、グレア表現画像を生成することができる。
【0060】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0061】
なお、本実施形態の画像生成システムは、1人のプレイヤのみがプレイできるシングルプレイヤモード専用のシステムにしてもよいし、複数のプレイヤがプレイできるマルチプレイヤモードも備えるシステムにしてもよい。また複数のプレイヤがプレイする場合に、これらの複数のプレイヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0062】
2.本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【0063】
2.1 グレア表現画像の生成
本実施形態ではグレア表現画像の生成のためのグレア処理を、ポスト処理で行う。即ち、全てのオブジェクト(例えば被グレアオブジェクト、グレア源等)を描画した後に、グレア処理を行う。具体的には、オブジェクトに対してジオメトリ処理(透視変換等の座標変換処理)を施して、ジオメトリ処理後のオブジェクト(ポリゴン)をフレームバッファ(広義には描画領域、描画バッファ)に描画(レンダリング)することで、元画像を生成し、この元画像に対してグレア処理を行う。従って、グレア処理の開始時点においては、被グレアオブジェクトを含むオブジェクト(元画像)のZ値(奥行き情報)が、既にZバッファに格納されている状態になっている。
【0064】
図2は、本実施形態のグレア処理の概要を示すフローチャートである。
【0065】
まず、グレア源の3次元情報(位置・形状情報)を3次元情報記憶部から読み出す(ステップS1)。例えばグレア源が球である場合には、球の中心座標と半径を3次元情報として読み出す。そして読み出されたグレア源の3次元情報に基づいて、ぼかし処理領域の領域サイズを決定する(ステップS2)。具体的にはスクリーン座標系(画面上)におけるグレア源の座標を求め、画面上の処理領域の位置とサイズを決定する。
【0066】
次にZテストを有効にして、Zバッファに格納されている元画像のZ値を参照しながら、グレア源を描画し、第1のグレア源画像G1を生成する(ステップS3)。そして、ステップS2で決定された領域サイズにより設定(確保)されるぼかし処理領域において、第1のグレア源画像G1の第1のぼかし処理を行って、G1のぼかし画像である第1の画像H1を生成する(ステップS4)。
【0067】
次にZテストを無効にして、Zバッファに格納されている元画像のZ値を参照せずに、グレア源を描画し、第2のグレア源画像G2を生成する(ステップS5)。そして、ステップS2で決定された領域サイズにより設定されるぼかし領域において、第2のグレア源画像G2の第2のぼかし処理を行って、G2のぼかし画像である第2の画像H2を生成する(ステップS6)。
【0068】
次に、F1=(H1*H2)−G1の画像演算処理を行って、グレア補正画像F1を生成する(ステップS7)。即ち、第1、第2の画像H1、H2の論理積処理(H1*H2)と、第1のグレア源画像G1の論理差処理(−G1)を含む画像演算処理を行うことで、グレア補正画像F1を生成する。そして、元画像と、第1のグレア源画像G1のぼかし画像(H1)と、グレア補正画像F1とに基づいて、補正されたグレア効果が元画像に施されたグレア表現画像を生成する(ステップS8)。
【0069】
図3に元画像の例を示す。OBは被グレアオブジェクトであり、GSはグレア源である。このゲームシーンは、被グレアオブジェクトOBであるキャラクタが部屋に立っており、部屋の壁に空いた穴の領域であるグレア源GSから、光が漏れているシーンである。図3の元画像では、グレア源GSのうち、被グレアオブジェクトOBにより隠れている部分が隠面消去されている。
【0070】
図4にグレア表現画像の例を示す。図4は、グレアのコントラスト表現の補正処理が行われていないグレア表現画像の例である。図4では、A1に示すように、グレア源GSからの光により、被グレアオブジェクトOBの輪郭が浸食されてぼやけて見える画像が生成されている。即ちグレア源GSからの光が被グレアオブジェクトOBの手前側に回り込んでいるかのように見えるグレア表現画像が生成されている。
【0071】
例えば本実施形態とは異なるグレア処理手法として、画面上の明るい領域をグレア源と見なして処理する自動抽出方式が考えられる。本実施形態のグレア処理手法は、この自動抽出方式と比べて次のような利点がある。
【0072】
第1に、本実施形態の手法は処理が軽い。即ち自動抽出方式では全画面が処理対象となるが、本実施形態の手法では画面上の限定された領域のみが処理対象となるので(ステップS2、S4等参照)、処理負荷を軽くできる。第2に、本実施形態の手法ではグレア源を誤ることがない。即ち自動抽出方式では、グレア源になって欲しくない箇所がグレア源として処理されることがある。これに対して本実施形態では、3次元情報に基づいてグレア源の位置等を明示的に指定するので、このような誤動作を生じない。
【0073】
2.2 グレアのコントラスト表現
人間の眼は、明るい場所を見る時には眼の感度が低下し、暗い場所を見る時には眼の感度が上昇する。従って、図4の被グレアオブジェクトOBの各部分のうち、明るい場所にあるA1の部分の色を、暗い場所にあるA2の部分の色に比べて黒っぽくすれば、画像のリアリティを更に向上できる。
【0074】
本実施形態では、このようなグレアの黒みの表現であるコントラストを、図2の処理により実現している。
【0075】
図5に、グレアのコントラスト表現の補正処理が施されたグレア表現画像の例を示す。図5では、グレア源GSよりも手前側にある被グレアオブジェクトOBのうち、グレアが掛かる部分であるB1の部分の色が、B2の部分の色に比べて、より黒っぽくなっており、グレアのコントラスト表現に成功している。
【0076】
次に、図6、図7(A)(B)を用いて、本実施形態のグレアのコントラスト表現手法について説明する。例えばコントラスト表現オブジェクトなどを用いてグレアのコントラスト表現を実現しようとすると、グレア源、被グレアオブジェクト、コントラスト表現オブジェクトの形状や位置関係によっては、グレアが正しく描画されない事態が生じる可能性がある。本実施形態では、グレアのコントラストの描画範囲をグレア源形状の内部(ほぼ内部の場合を含む)に限定することで、このような事態の発生を防止している。
【0077】
具体的には、図7(A)に示すように被グレアオブジェクトOB1、OB2、グレア源GSが配置されている場合、図6に示すように、Zテストを有効にしてグレア源を描画し、得られた第1のグレア源画像G1に対して第1のぼかし処理を行って、G1のぼかし画像である第1の画像H1(ステンシル)を生成する(図2のステップS3、S4)。
【0078】
また、Zテストを無効にしてグレア源を描画し、得られた第2のグレア源画像G2(図示せず)に対して第2のぼかし処理を行って、G2の縁をぼかした画像である第2の画像H2(ステンシル)を生成する(図2のステップS5、S6)。
【0079】
次に、F1=(H1*H2)−G1の画像演算処理を行って、グレア補正画像F1を生成する(図2のステップS7)。即ち、第1、第2の画像H1、H2の論理積処理(H1*H2)を行うことで、H1、H2の共通部分が抽出され、グレアのコントラストの描画範囲をグレア源形状の内部に限定できる。そして、この論理積処理(H1*H2)により得られた画像に対して、第1のグレア源画像G1の論理差処理(減算処理)を行うことで、図6に示すようなグレア補正画像F1を生成できる。
【0080】
そして生成されたグレア補正画像F1(グレア色、白等)を、元画像(図7(A))が描画されているフレームバッファに減算描画(減算αブレンディング)することで、図7(B)のD1に示すように、黒色のコントラストを描画できる。その後に、グレア色に設定されたグレア源画像のぼかし画像(例えばH1やH1の変換画像)をフレームバッファにブレンド描画(加算αブレンディング)することで、図5に示すような画像を生成できる。
【0081】
本実施形態では、第1、第2の画像H1、H2の論理積処理を行い、グレアのコントラストの描画範囲をグレア源形状の内部に限定している。このようにすれば、図7(A)のような場合にも、図7(B)に示すように、グレア源GSよりも手前側にある被グレアオブジェクトOB1のうち、グレアが掛かるD1に示す部分にだけ、コントラストを描画できる。即ちグレア源GSよりも奥側にある被グレアオブジェクトOB2のD2に示す部分などに、コントラストが描画されてしまう事態を防止できる。
【0082】
なお、以上では、グレア色や白等に設定されたグレア補正画像F1をフレームバッファに減算描画(減算αブレンディング)する場合について説明したが、黒色等に設定されたグレア補正画像F1をフレームバッファにブレンド描画(通常αブレンディング)するようにしてもよい。
【0083】
また本実施形態の画像演算処理は、F1=(H1*H2)−G1で表される画像演算処理に限定されない。例えば、グレアの色や、他のエフェクトとの組み合わせによっては、第1のグレア源画像G1の論理差処理(−G1)を省略してもよい。即ちG1の論理差処理を省略すると、図7(B)のD3に示す部分にコントラストの黒みが残ってしまう。しかしながら、その後に描画されるグレア源画像のぼかし画像により、D3に示す部分を十分に明るくすることができるのならば、G1の論理差処理を省略することも可能になる。
【0084】
また本実施形態では、F1=(H1*H2)−G1と論理演算的に等価な画像演算処理を行うようにしてもよい。このように論演算的に等価な画像演算処理としては、例えばF1=H1*(H2−G1)がある。即ち、
H1*(H2−G1)=H1 AND(H2 AND(NOT G1))
=(H1 AND H2)AND(NOT G1)
=(H1*H2)−G1
が成り立つからである。
【0085】
また図6では、第2の画像H2として、第2のグレア源画像G2のぼかし画像を用いているが、ぼかし処理が行われていない第2のグレア源画像G2そのものを第2の画像H2として用いてもよい。即ち第2の画像H2としてぼかし画像を用いれば、図6のC1、C2に示すコントラストの縁の部分をぼかすことができるため、生成される画像の品質を向上できる。しかしながら、このようなC1、C2に示すコントラスの縁のぼかしが不要である場合には、第2のグレア源画像G2そのものを第2の画像H2として用いてもよい。
【0086】
2.3 ぼかし処理
図6の第1、第2の画像H1、H2のぼかしを実現する第1、第2のぼかし処理は、異なるぼかし処理であることが望ましい。具体的には、第1の画像H1用の第1のぼかし処理は、ぼかし対象画像に対するぼかし画像の膨張量が、第2のぼかし処理での膨張量よりも大きくなるぼかし処理とすることが望ましい。
【0087】
図8(A)のぼかし対象画像(第1、第2のグレア源画像)のぼかし処理を行う場合に、図8(B)の第1のぼかし処理では、ぼかし対象画像の領域から外側への膨張量(ぼかし長さ)が、図8(C)の第2のぼかし処理に比べて大きくなっている。
【0088】
即ち、コントラストは、グレア源の外側に大きく広がるグレアに付加されるものである。従って、第1の画像H1用の第1のぼかし処理は、図8(B)に示すように外側への膨張量が大きいぼかし処理であることが望ましい。一方、第2の画像H2は、グレアのコントラストの描画範囲をグレア源形状の内部に限定するためのものである。従って、第2の画像H2用の第2のぼかし処理は、図8(C)に示すように外側への膨張量が小さいぼかし処理であることが望ましい。即ちぼかし対象画像の領域から外側へのぼかし長が短いぼかし処理であることが望ましい。
【0089】
次に、本実施形態のぼかし処理の詳細について説明する。本実施形態では、ぼかし画像のぼかし長さを大きくするために、複数回のぼかし処理を行う。具体的には、まず、ぼかし処理に使用されるワークバッファWBUF1、WBUF2をVRAM上に確保する。
【0090】
次にWBUF1に、ぼかし処理の対象となる画像を描画する。そしてWBUF1に描画された画像をテクスチャとして扱い、このテクスチャをマッピングした、テクスチャと同サイズのポリゴン(スプライト)をWBUF2に描画する。この時、ピクセル中心を4テクセルの中間に対応させて、バイリニア補間を使う。即ち、テクスチャ座標をシフトさせてバイリニア補間方式でテクスチャマッピングを行う。これにより、ワークバッファWBUF2には、WBUF1の画像を0.5ピクセルだけぼかした画像が描画される。
【0091】
次に、WBUF2の画像をテクスチャとして扱い、このテクスチャをマッピングした、テクスチャと同サイズのポリゴン(スプライト)をWBUF1に描画する。この時、ピクセル中心を4テクセルの中間に対応させて、バイリニア補間を使う。即ち、テクスチャ座標をシフトさせてバイリニア補間方式でテクスチャマッピングを行う。この結果、ワークバッファWBUF1には、WBUF2の画像を0.5ピクセルだけぼかした画像が描画される。
【0092】
以上のようなWBUF1からWBUF2への描画処理とWBUF2からWBUF1への描画処理という1往復の処理を行うことで、WBUF1の画像は、ぼかし対象画像を1ピクセルぼかした画像になる。必要とするぼかし長さがNピクセルである場合には、ぼかし処理をN往復だけ繰り返せばよい。
【0093】
さて、このようにバイリニア補間などを利用してぼかし画像を生成した場合、ぼかし処理の回数が多くなればなるほど(ぼかし長さが大きくなればなるほど)、ぼかし処理の効率が低下するという問題がある。
【0094】
例えば図9(A)は、元の1ピクセルに対してバイリニア補間のぼかし処理を4往復行って、4ピクセルだけぼかした時に、元のピクセルの値が周囲のピクセルに対してどのように分布するかを示した図である。
【0095】
図9(A)において、ぼかし中心に位置する元のピクセルのぼかし処理前のピクセル値は1であり、ぼかし処理後は4900/65536となっている。一方、ぼかし境界に位置する例えばE1に示すピクセルのぼかし処理後のピクセル値は、70/65536となっている。
【0096】
そして例えば元のピクセルのぼかし処理前のピクセル値(α値)を255として、1未満の端数を切り捨てた結果は図9(B)に示すようになる。なお実際には1回(0.5ピクセル)のぼかし処理毎に、端数の切り捨てが行われるので、4ピクセルぼかし後の値は、図9(B)に示す値よりも小さくなる。
【0097】
図9(B)において、ぼかし中心に位置する元のピクセルのぼかし処理後のピクセル値は、1未満の端数が切り捨てられることで、255×4900/65536=19.0658・・・=19になる。一方、ぼかし境界に位置する例えばE1に示すピクセルのぼかし処理後のピクセル値は、1未満の端数が切り捨てられることで、255×70/65536=0.2723・・・・=0になる。
【0098】
図9(B)の例では、元の1ピクセルが周囲に4ピクセルぼけることを期待しているにもかかわらず、ぼかし境界である最外周のピクセルの値が0になっているため、実質的なぼかし長さは3ピクセルになっている。このように、ぼかし処理を繰り返した場合に、ぼかし処理の回数よりも実際のぼかし長さの方が短くなり、ぼかし効率が悪化する。そしてぼかし処理の回数が多くなればなるほど、ぼかし効率は更に悪化する。
【0099】
このような問題を解決するために、本実施形態では、ぼかし処理の途中に例えばテーブル変換を介在させて、ぼかしの結果が小さくなりすぎないように変換処理を行っている。
【0100】
例えば図10(A)の元の1ピクセルに対して1回目のぼかし処理M1(広義には第K回目のぼかし処理)を施すと、元の1ピクセルのピクセル値がその周囲にしみ出して、図10(B)に示すようになる。
【0101】
この時に本実施形態では、図10(C)に示すように、ぼかし処理M1で得られたぼかし画像のピクセル値を増加させる変換処理を行う。例えば図10(C)では、ピクセル値が0よりも大きいピクセルに対して、そのピクセル値を増加させる変換処理を行っている。そして図10(D)に示すように、変換処理が施されたぼかし画像に対して、次のぼかし処理M2(広義には第K+1回目のぼかし処理)を施す。なお、図10(C)の変換処理と図10(D)のぼかし処理を同時に行うようにしてもよい。
【0102】
次に図11(A)に示すように、ぼかし処理M2で得られたぼかし画像のピクセル値を増加させる変換処理を行う。そして図11(B)に示すように、変換処理が施されたぼかし画像に対して次のぼかし処理M3(広義には第K+2回目のぼかし処理)を施す。
【0103】
以上のようにすれば、ぼかし処理後のぼかし画像のピクセル値がかさ上げされるため、図9(B)のようにぼかし画像の境界のピクセル値が小さくなって0になってしまう事態を防止できる。この結果、例えばN往復のぼかし処理で、Nピクセルの大きさのぼかし長さを得ることが可能になり、効率的なぼかし処理を実現できる。特に本実施形態の手法は、ぼかし処理の回数が多くなればなるほど、従来の手法に比べて有利になる。
【0104】
そして、図8(B)の第1のぼかし処理は、図10(A)〜図11(B)に示す手法で実現できる。図10(A)〜図11(B)手法を用いれば、ぼかし対象画像の外側への膨張量(ぼかし長さ)が大きいぼかし処理を実現できるからである。なお、図8(C)の第2のぼかし処理は、図10(C)、図11(A)の変換処理を行わないぼかし処理などにより実現できる。
【0105】
2.4 グレア源の形状
本実施形態では、グレア源の形状として、球、円板、トライアングルストリップ(triangle strip)、トライアングルファン(triangle fan)の4種類の設定が可能になっている。但しグレア源の形状はこれらの4種類に限定されず、種々の変形実施が可能である。
【0106】
図12に、これらの4種類のグレア源の3次元情報(3次元位置・形状指定パラメータ)とグレア処理における描画方法(図2のステップS3、S5)の例を示す。
【0107】
例えば球のグレア源では、図2のステップS1の3次元情報は中心座標(ワールド座標系)と半径とすることができる。そして図2のステップS3、S5のグレア源の描画は、球の手前側(仮想カメラ側)に接する円板ビルボードオブジェクトをトライアングルファンを使って描画することで実現する。
【0108】
例えば図13(A)では、太陽や月等を表す球のグレア源GSが天球CSに配置されている。この場合には、球のグレア源GSの手前側に接する円板ビルボードオブジェクトBOBを使ってグレア源の描画を行い、仮想カメラVCから見えるグレア源画像(第1、第2のグレア源画像)を生成する。即ち仮想カメラVCは天球CSの中心点CPに位置するとは限らない。従って、円板ビルボードオブジェクトBOBをグレア源GSの中心座標CCに配置すると、ビルボードオブジェクトBOBが天球CSにめり込んで、グレア源画像が欠けて見える事態が生じる可能性がある。この点、図13(A)のように円板ビルボードオブジェクトBOBを配置すれば、このような事態を防止できる。
【0109】
なお図13(A)では球のグレア源GSに接する位置に円板ビルボードオブジェクトBOBを配置しているが、円板ビルボードオブジェクトBOBの配置位置は、グレア源GSの中心座標CCよりも仮想カメラVCから見て少なくとも手前側(手前側であり且つ他のオブジェクトよりも奥側)であればよい。
【0110】
円板ビルボードオブジェクトBOBの大きさは、図13(B)に示すように、仮想カメラVCの位置からグレア源GSへの接線TG1を求めることで設定できる。このようにすれば、円板ビルボードオブジェクトBOBの半径RBを、グレア源GSの半径Rに応じた適正な大きさに設定できる。
【0111】
また図13(B)に示すように円板ビルボードオブジェクトBOBは、その面が仮想カメラVCに正対するビルボード(その面がVCとCCを結ぶ直線に垂直なビルボード)として配置される。なお円板ビルボードオブジェクトBOBとしては図13(C)に示すようなトランアングルファンを用いることができる。
【0112】
図14(A)のような車のヘッドライトのグレア効果を表現するためには、円板形状のグレア源GSを用いることができる。この場合にはグレア源GSの3次元情報として、円板の面の向きを表す法線ベクトルNが用いられる。そしてグレア源GSの中心座標の位置に、法線ベクトルNにより面の向きが設定される、円板オブジェクトをオブジェクト空間(ワールド座標系)に配置して描画することで、仮想カメラVCから見えるグレア源画像を生成できる。このようにすれば、仮想カメラVCとグレア源GSとの位置関係により、グレア源画像が円から楕円に変化するようになり、リアルな画像表現を実現できる。
【0113】
図14(B)はトライアングルストリップのグレア源の例であり、図13(C)や図14(C)はトライアングルファンのグレア源の例である。これらのトライアングルストリップ、トライアングルファンは、複数の頂点(V1〜V20、V1〜V11、V1〜V12)で構成されるオブジェクトであり、これらの頂点の座標(ワールド座標系での座標)がグレア源の3次元情報となる。そして、これらの頂点により構成されるオブジェクトを例えばオブジェクト空間に配置して描画することで、仮想カメラから見えるグレア源画像を生成できる。
【0114】
なお図2のステップS2の領域サイズの決定は、グレア源の3次元情報に基づいて、スクリーン座標系でのグレア源を内包するバウンディングボックスを生成することで実現できる。例えば図15(A)(B)にバウンディングボックスBB(バウンディングエリア)の例を示す。これらのバウンディングボックスBBは図15(A)(B)に示すように、グレア源GSのスクリーン座標系での頂点のX座標、Y座標を求め、これらの頂点のX座標の最小値XMIN、最大値XMAXと、Y座標の最小値YMIN、最大値YMAXを求めることで生成できる。
【0115】
2.5 詳細な処理
次に本実施形態のグレア処理の詳細な手順について説明する。
【0116】
本実施形態では、グレア源の3次元情報(位置・形状パラメータ)とグレア色情報(白、黄色、青等)とグレアのぼかし長さ情報を使用して、以下の手順でグレア処理を行う。
【0117】
(1)グレア源の頂点の座標変換
まず、グレア源の頂点の座標変換を行って、スクリーン座標系におけるグレア源の頂点の座標値を求める。
【0118】
(2)処理領域の決定
上記(1)で求めた頂点座標の値から、図15(A)(B)で説明したように、画面上の処理領域のバウンディングボックスを求める。
【0119】
(3)フレームバッファのクリア
グレア源描画の前処理として、フレームバッファ上の描画領域(上記(2)で求めた領域)のα値を0にクリアする。
【0120】
(4)グレア源の描画(コントラスト用)
Zテストを無効にして、フレームバッファ上にグレア源を描画する。描画はαプレーンに対してのみ行い、描画色は例えばα=255に設定する。このようにすることで、グレア源が存在する部分のαプレーンにはα=255が書き込まれて、第2のグレア源画像G2(図6の第2の画像H2のぼかし処理前の画像)が生成される。
【0121】
(5)ワークバッファWBUF1のクリア
VRAM上にワークバッファWBUF1を確保する。WBUF1のサイズは、上記(2)で求めたバウンディングボックスのサイズに対して、縮小処理とぼかし処理によるぼけ足の長さを見込んだものに設定する。そしてWBUF1のR、G、B、αプレーンの値を0にクリアする。
【0122】
(6)第2のグレア源画像G2の縮小コピー
高速化のためにぼかし処理の前に、第2のグレア源画像G2を縮小する。即ち上記(4)で生成された第2のグレア源画像G2を、例えば縦、横、各々、1/2に縮小してワークバッファWBUF1のαプレーンに描画する。
【0123】
(7)ワークバッファWBUF2のクリア
VRAM上に、ぼかし処理に使用されるワークバッファWBUF2を確保する。WBUF2はαプレーンのみを使用する。WBUF2の全領域をクリアする必要はないので、領域の縁部分のα値のみを0にクリアする。
【0124】
(8)ぼかし処理
上記(6)でWBUF1に描画した画像をテクスチャとして扱い、このテクスチャをマッピングした、テクスチャと同じサイズのポリゴン(スプライト)を、WBUF2に描画する。この時、ピクセル中心を4テクセルの中間に対応させて、バイリニア補間を使う。即ちテクスチャ座標をシフトさせてバイリニア補間方式(テクセル補間方式)でテクスチャマッピングを行う。この結果、ワークバッファWBUF2には、WBUF1の画像を0.5ピクセルだけぼかした画像が描画される。
【0125】
次に、WBUF2の画像をテクスチャとして扱い、このテクスチャをマッピングした、テクスチャと同じサイズのポリゴン(スプライト)を、WBUF1に描画する。この時、テクスチャ座標をシフトさせてバイリニア補間方式(テクセル補間方式)でテクスチャマッピングを行う。この結果、ワークバッファWBUF1には、WBUF2の画像を0.5ピクセルだけぼかした画像が描画される。
【0126】
以上のようなWBUF1からWBUF2への描画処理とWBUF2からWBUF1への描画処理という1往復の処理を行うことで、WBUF1の画像は、グレア源画像(ぼかし対象画像)を1ピクセルぼかした画像(周囲に1ピクセル広げた画像)になる。必要とするぼかし長さがNピクセルである場合には、ぼかし処理をN回(N往復)繰り返す。
【0127】
(9)ステンシルの保存
ここまでの処理で、WBUF1のαプレーンには、第2のグレア源画像G2のぼかし画像が1/2に縮小された状態で描かれている。この画像を元のサイズに戻して、第2のグレア源画像G2のぼかし画像である第2の画像H2(ステンシル)を生成する。そして生成された第2の画像H2をWBUF1のGプレーンに保存する。
【0128】
(10)フレームバッファのクリア
グレア源描画の前処理として、フレームバッファ上の描画領域(上記(2)で求めた領域)のα値を0にクリアする。
【0129】
(11)グレア源の描画
Zテストを有効にして、フレームバッファ上にグレア源を描画する。描画はαプレーンに対してのみ行い、描画色は例えばα=255に設定する。このようにすることで、グレア源が存在する部分のαプレーンにはα=255が書き込まれて、第1のグレア源画像G1(図6参照)が生成される。この場合、Zテストを有効にしてグレア源の描画が行われるため、グレア源よりも手前に被グレアオブジェクト等のオブジェクトが存在する場合に、グレア源に対する隠面消去が適正に行われるようになる。
【0130】
(12)ステンシルの切り取り
WBUF1のGプレーンに書き込まれた第2の画像H2(ステンシル)から、フレームバッファのαプレーンに書き込まれた第1のグレア源画像G1を切り取る。この切り取り処理は、前述した第1のグレア源画像G1の論理差処理に相当する。これにより、WBUF1のGプレーンには、論理差処理により得られた画像H2−G1が描かれる。
【0131】
(13)ワークバッファWBUF1のクリア
ワークバッファWBUF1のαプレーンの値を0にクリアする。
【0132】
(14)第1のグレア源画像G1の縮小コピー
高速化のためにぼかし処理の前に、第1のグレア源画像G1を縮小する。即ち上記(11)で生成された第1のグレア源画像G1を、例えば縦、横、各々、1/2に縮小してワークバッファWBUF1のαプレーンに描画する。
【0133】
(15)ワークバッファWBUF2のクリア
ワークバッファWBUF2の領域の縁部分のα値を0にクリアする。
【0134】
(16)ぼかし処理
上述の(8)(9)と同様の手法で、WBUF1のαプレーンに書き込まれた第1のグレア源画像G1のぼかし処理を行って、第1の画像H1を生成する。なおこの際に、ぼかし処理の効率を高めるために、図10(A)〜図11(B)で説明した手法を用いて、G1のぼかし画像である第1の画像H1を生成する。
【0135】
(17)ステンシルの移動
WBUF1のGプレーンに描かれてる画像H2−G1(ステンシル)を、フレームバッファのαプレーンにコピーする。
【0136】
(18)コントラストの描画
この時点で、WBUF1のαプレーンには図6に示す第1の画像H1が描かれている。またフレームバッファのαプレーンには画像H2−G1が描かれている。この両者を用いた画像演算処理H1*(H2−G1)=(H1*H2)−G1を行って、グレア色のスプライトをフレームバッファに減算αブレンディング(減算描画)することで、コントラストを描画する。
【0137】
具体的には図16に示すように、WBUF1のαプレーンの第1の画像H1の情報を、インデックスカラー・テクスチャマッピング用のルックアップテーブル(CLUT)のインデックス番号として設定する。そしてこのようにインデックス番号が設定されたテクスチャがマッピングされ、その色(頂点カラー)がグレア色に設定されたポリゴン(スプライト)を、そのαプレーンに画像H2−G1が描かれているフレームバッファに対して、減算αブレンディング(Cd−Cs*αd)で描画する。なおCdはディスティネーション色(フレームバッファのRGB)である。Csはソース色(ポリゴンの色)で、ポリゴン頂点色(グレア色)にテクスチャ色(インデックス値とCLUTにより決まる色)を掛けた色である。αdはディスティネーションのα値(フレームバッファのα値)である。このようにすることで、元画像が描かれているフレームバッファのRGBプレーンに、グレアのコントラスが描画されるようになる。
【0138】
なお、変換テーブルを用いてぼかし画像(H1)の変換処理を行い、元画像と変換処理後のぼかし画像(H1)とに基づいて、コントラストの描画を行ってもよい。具体的には、CLUTがα値からテクスチャ色への変換テーブルとして働くので、CLUTの内容を変えることによりコントラスト描画の調整を行うことができる。
【0139】
(19)グレア表現画像の生成
WBUF1のαプレーンには第1のグレア源画像G1をぼかした画像(H1)が描かれている。このぼかし画像の情報(α値)を、インデックスカラー・テクスチャマッピング用のルックアップテーブル(CLUT)のインデックス番号として設定する。そしてこのようにインデックス番号が設定されたテクスチャがマッピングされ、その色(頂点カラー)がグレア色に設定されたポリゴン(スプライト)を、フレームバッファに加算αブレンディングで描画する。
【0140】
以上の処理により、グレア表現画像が完成する。例えばグレア色を白にすれば、白の光のグレア効果が表現された画像が生成され、グレア色を黄色にすれば、黄色の光のグレア効果が表現された画像が生成される。なお、変換テーブルを用いてぼかし画像(H1)の変換処理を行い、元画像と変換処理後のぼかし画像(H1)とに基づいて、グレア表現画像を生成してもよい。具体的には、CLUTがα値からテクスチャ色への変換テーブルとして働くので、CLUTの内容を変えることによりグレアの調整を行うことができる。
【0141】
3.ハードウェア構成
図17に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介してダウンロードされたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、マトリクス演算(ベクトル演算)を高速に実行する。例えばオブジェクトを移動させたり動作(モーション)させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0142】
ジオメトリプロセッサ904は、メインプロセッサ900上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ906は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセラレートする。これにより、オープニング画面やゲーム画面において、MPEG方式等で圧縮された動画像を表示できる。
【0143】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。また描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエイリアシング、シェーディング処理なども行う。1フレーム分の画像がフレームバッファ922に書き込まれるとその画像はディスプレイ912に表示される。
【0144】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942やメモリカード944からのデータはシリアルインターフェース940を介して入力される。
【0145】
ROM950にはシステムプログラムなどが格納されている。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納されている。なおROM950の代わりにハードディスクを利用してもよい。RAM960は各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ間でのDMA転送を制御する。CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されているCD982にアクセスする。通信インターフェース990はネットワーク(通信回線、高速シリアルバス)を介して外部との間でデータ転送を行う。
【0146】
なお本実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されているプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0147】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納されている。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0148】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語(描画領域・描画バッファ等)として引用された用語(フレームバッファ・ワークバッファ等)は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0149】
また、グレア源の描画手法、画像演算手法、グレア源の種類、ぼかし処理も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。例えばぼかし処理を図10(A)〜図11(B)で説明した手法とは異なる手法で実現してもよい。また図12とは異なる形態のグレア源を設定してもよい。
【0150】
また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【0151】
【図1】本実施形態の画像生成システムの機能ブロック図の例。
【図2】本実施形態の手法の処理のフローチャート。
【図3】元画像の例。
【図4】コントラスト表現の補正処理が行われていないグレア表現画像の例。
【図5】コントラスト表現の補正処理が行われているグレア表現画像の例。
【図6】本実施形態のグレアのコントラスト表現手法の説明図。
【図7】図7(A)(B)は本実施形態のグレアのコントラスト表現手法の説明図。
【図8】図8(A)(B)(C)はぼかし処理の説明図。
【図9】図9(A)(B)は複数回のぼかし処理を行った場合の問題点の説明図。
【図10】図10(A)〜(D)は本実施形態のぼかし処理手法の説明図。
【図11】図11(A)(B)は本実施形態のぼかし処理手法の説明図。
【図12】グレア源の3次元情報と描画方法の説明図。
【図13】図13(A)(B)(C)は球形状のグレア源の説明図。
【図14】図14(A)(B)(C)は円板形状、トライアングルストリップ、トライアングルファンのグレア源の説明図。
【図15】図15(A)(B)はバウンディングボックスの説明図。
【図16】インデックスカラー・テクスチャマッピングを用いた処理の説明図。
【図17】ハードウェア構成例。
【符号の説明】
【0152】
G1 第1のグレア源画像、G2 第2のグレア源画像、H1 第1の画像、
H2 第2の画像、F1 グレア補正画像、
GS グレア源、OB、OB1、OB2 被グレアオブジェクト、
CC 中心座標、VC 仮想カメラ、CS 天球、CP 中心点、
BOB ビルボードオブジェクト、V1〜V20 頂点、
BB バウンディングボックス、
100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、
114 仮想カメラ制御部、116 領域サイズ決定部、120 描画部、
122 グレア源描画部、124 グレア補正画像生成部、
126 グレア表現画像生成部、130 音生成部、160 操作部、170 記憶部、171 3次元情報記憶部、172 描画バッファ、174 テクスチャ記憶部、
176 Zバッファ、180 情報記憶媒体、190 表示部、
192 音出力部、194 携帯型情報記憶装置、196 通信部

【特許請求の範囲】
【請求項1】
画像を生成するためのプログラムであって、
Zバッファに格納されている元画像のZ値を参照しながらグレア源の描画処理を行って、第1のグレア源画像を生成し、Zバッファに格納されている元画像のZ値を参照せずにグレア源の描画処理を行って、第2のグレア源画像を生成するグレア源描画部と、
前記第1のグレア源画像に第1のぼかし処理を行った画像である第1の画像と、前記第2のグレア源画像に第2のぼかし処理を行った画像又は前記第2のグレア源画像である第2の画像との論理積処理を含む画像演算処理を行い、グレア補正画像を生成するグレア補正画像生成部と、
元画像と前記第1のグレア源画像のぼかし画像と前記グレア補正画像とに基づいて、補正されたグレア効果が元画像に表現されたグレア表現画像を生成するグレア表現画像生成部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記グレア補正画像生成部は、
前記第1のグレア源画像の論理差処理を含む画像演算処理を行い、前記グレア補正画像を生成することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記第1、第2のぼかし処理は、異なるぼかし処理であることを特徴とするプログラム。
【請求項4】
請求項3において、
前記第1のぼかし処理は、ぼかし対象画像に対するぼかし画像の膨張量が、前記第2のぼかし処理での膨張量よりも大きくなるぼかし処理であることを特徴とするプログラム。
【請求項5】
請求項3又は4において、
前記第1のぼかし処理は、複数回のぼかし処理から構成され、前記複数回のぼかし処理のうちの第K回目のぼかし処理で得られたぼかし画像のピクセル値の変換処理を行い、変換処理が施されたぼかし画像に対して次の第K+1回目のぼかし処理を施す処理であることを特徴とするプログラム。
【請求項6】
請求項1乃至5のいずれかにおいて、
グレア源の3次元情報を記憶する3次元情報記憶部と、
グレア源の前記3次元情報に基づいて、ぼかし処理領域の領域サイズを決定する領域サイズ決定部として、
コンピュータを機能させ、
前記グレア補正画像生成部は、
前記領域サイズで設定されるぼかし処理領域において、グレア源画像のぼかし処理を行うことを特徴とするプログラム。
【請求項7】
請求項6において、
前記3次元情報記憶部は、
球形状のグレア源の中心座標と半径とを、前記3次元情報として記憶し、
前記グレア源描画部は、
仮想カメラから見て前記中心座標よりも手前側の位置に配置される円板ビルボードオブジェクトを描画して、グレア源画像を生成することを特徴とするプログラム。
【請求項8】
請求項6において、
前記3次元情報記憶部は、
円板形状のグレア源の中心座標と半径と面の向きを表す法線ベクトルとを、前記3次元情報として記憶し、
前記グレア源描画部は、
前記中心座標の位置に配置され、前記法線ベクトルで面の向きが設定される、円板オブジェクトを描画して、グレア源画像を生成することを特徴とするプログラム。
【請求項9】
請求項6において、
前記3次元情報記憶部は、
グレア源の複数の頂点座標を、前記3次元情報として記憶し、
前記グレア源描画部は、
前記頂点座標の頂点により構成されるオブジェクトを描画して、グレア源画像を生成することを特徴とするプログラム。
【請求項10】
請求項6乃至9のいずれかにおいて、
前記領域サイズ決定部は、
グレア源の前記3次元情報に基づいて、スクリーン座標系でのグレア源を内包するバウンディングボックスを生成して、ぼかし処理領域のサイズを決定することを特徴とするプログラム。
【請求項11】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至10のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項12】
画像を生成する画像生成システムであって、
Zバッファに格納されている元画像のZ値を参照しながらグレア源の描画処理を行って、第1のグレア源画像を生成し、Zバッファに格納されている元画像のZ値を参照せずにグレア源の描画処理を行って、第2のグレア源画像を生成するグレア源描画部と、
前記第1のグレア源画像に第1のぼかし処理を行った画像である第1の画像と、前記第2のグレア源画像に第2のぼかし処理を行った画像又は前記第2のグレア源画像である第2の画像との論理積処理を含む画像演算処理を行い、グレア補正画像を生成するグレア補正画像生成部と、
元画像と前記第1のグレア源画像のぼかし画像と前記グレア補正画像とに基づいて、補正されたグレア効果が元画像に表現されたグレア表現画像を生成するグレア表現画像生成部とを含むことを特徴とする画像生成システム。

【図1】
image rotate

【図2】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−195882(P2006−195882A)
【公開日】平成18年7月27日(2006.7.27)
【国際特許分類】
【出願番号】特願2005−9098(P2005−9098)
【出願日】平成17年1月17日(2005.1.17)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】