以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.構成
図1に本実施形態の画像生成システム(ゲーム装置、携帯型ゲーム装置)の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
操作部160は、プレイヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部170は、処理部100や通信部196などのワーク領域やメインメモリとなるもので、その機能はRAM(VRAM)などにより実現できる。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、ハードディスク、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されているプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理手順をコンピュータに実行させるためのプログラム)が記憶される。
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD(液晶表示装置)、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
携帯型情報記憶装置194は、プレイヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリーカードや携帯型ゲーム装置などがある。通信部196は外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバ)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信してもよい。このようなホスト装置(サーバ)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部100は記憶部170をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、表示制御部116、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
オブジェクト空間設定部110は、キャラクタ、車、戦車、建物、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクト(モデルオブジェクト)の位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
移動・動作処理部112は、オブジェクト(キャラクタ、車、又は飛行機等)の移動・動作演算(移動・動作シミュレーション)を行う。即ち操作部160によりプレイヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、オブジェクト(移動オブジェクト)をオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させる処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(各パーツオブジェクトの位置、或いは回転角度)を、1フレーム毎(1/60秒)に順次求めるシミュレーション処理を行う。なおフレーム(フレームレート)は、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
仮想カメラ制御部114(視点制御部)は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置や視線方向を制御する処理)を行う。
例えば仮想カメラによりオブジェクト(例えばキャラクタ、ボール、車)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
表示制御部116は、調整画面やモード設定画面などの各種画面の表示制御を行う。具体的には表示制御部116は、オーバードライブエフェクト処理のα値(エフェクト強度)を調整するための調整画面の表示制御を行う。具体的には、第1の中間色(原色ではない色)に設定された背景領域(調整画面の領域、調整ウィンドウ)上で、第1の中間色とは異なる第2の中間色に設定されたオブジェクトを移動させる表示制御を行う。また表示制御部116は、オーバードライブエフェクト処理を有効にするか否かを設定するためのモード設定画面の表示制御も行う。このモード設定画面においてオーバードライブエフェクト処理を有効にする設定が行われた場合に、オーバードライブエフェクト処理が行われるようになる。なお同一画面を、調整画面とモード設定画面として共用してもよい。
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まず、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、或いは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、第1、第2、第3のバッファ171、172、173のうち描画バッファに設定されたバッファに描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。そして生成された画像は、第1、第2、第3のバッファ171、172、173のうち表示バッファに設定されたバッファを介して、表示部190に出力される。
なお第1、第2、第3のバッファ171、172、173は、フレームバッファ、ワークバッファなどのピクセル単位で画像情報を記憶できるバッファ(画像バッファ)であり、例えば画像生成システムのVRAM上に確保される。また本実施形態では、第1、第2、第3のバッファ171、172、173のトリプルバッファ構成にしているが、描画バッファ(バックバッファ)、表示バッファ(フロントバッファ)のダブルバッファ構成にしてもよい。この場合には、第Jのフレームでは描画バッファであったバッファを、第K(K>J)のフレームでは表示バッファに設定し、第Jのフレームでは表示バッファであったバッファを、第Kのフレームでは描画バッファに設定するようにしてもよい。或いは4個以上のバッファを用いるようにしてもよい。
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
描画部120は、テクスチャマッピング処理や隠面消去処理やαブレンディング処理を行うことができる。
ここでテクスチャマッピング処理は、テクスチャ記憶部174に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングする処理である。具体的には、オブジェクト(プリミティブ面)の頂点に設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部174からテクスチャ(色、α値などの表面プロパティ)を読み出す。そして、2次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間(テクセル補間)などを行う。
また隠面消去処理は、例えば、各ピクセルのZ値(奥行き情報)が格納されているZバッファ176(奥行きバッファ)を用いるZバッファ法(奥行き比較法、Zテスト)により実現される。即ちオブジェクトのプリミティブ面の各ピクセルを描画する際に、Zバッファ176に格納されているZ値を参照する。そして参照されたZバッファ176のZ値と、プリミティブ面の描画対象ピクセルでのZ値とを比較し、プリミティブ面のZ値が、仮想カメラから見て手前側となるZ値(例えば大きなZ値)である場合には、そのピクセルの描画処理を行うと共にZバッファ176のZ値を新たなZ値に更新する。
またαブレンディング処理は、α値(A値)に基づいて行う処理であり、通常αブレンディング、加算αブレンディング或いは減算αブレンディングなどがある。なおα値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、半透明度(透明度、不透明度と等価)情報、マスク情報、或いはバンプ情報などとして使用できる。
描画部120は、オーバードライブエフェクト処理部122を含む。オーバードライブエフェクト処理部122は、ソフトウェアによるオーバードライブエフェクト処理を行う。具体的には、描画部120がオブジェクトを、第1、第2、第3のバッファ171、172、173のいずれかのバッファに描画して画像データ(元画像のデータ)を生成すると、オーバードライブエフェクト処理部122は、生成された画像データ(デジタルデータ)に対して、オーバードライブエフェクト処理を行い、表示部190に出力するための画像データを生成する。即ちオーバードライブエフェクト処理が行われた画像データ(デジタルデータ)を、第1、第2、第3のバッファ171、172、173のうち表示バッファに設定されたバッファに書き込む。
更に具体的にはオーバードライブエフェクト処理部122は、第Kのフレーム(現在のフレーム)で生成された画像データIMKと、第J(K>J)のフレーム(前のフレーム、過去のフレーム)においてオブジェクトを描画することで生成された画像データIMJと、α値αとに基づいて、IMK+(IMK−IMJ)×αのαブレンディング処理を行うことで、オーバードライブエフェクト処理が行われた画像データを生成する。例えばオーバードライブエフェクト処理部122は、α値が設定された画面サイズ又は分割画面サイズのプリミティブ面(スプライト、ポリゴン)に、画像データIMKのテクスチャをマッピングする。そしてテクスチャがマッピングされたプリミティブ面を、画像データIMJが描画されているバッファ(表示バッファ)に対してαブレンディング描画する。この場合に、設定値ASの2倍の値がソースα値Aとして設定される2倍値モードでAS=(1+α)/2を設定する。また設定値BSが固定のディスティネーションα値Bとして設定される固定値モードでBS=αを設定する。そしてIMK×A−IMJ×B=IMK×(2×AS)−IMJ×BS=IMK×(1+α)−IMJ×αの減算αブレンディング描画を行い、オーバードライブエフェクト処理が行われた画像データを生成する。
またオーバードライブエフェクト処理部122は、第Kのフレームでは、オブジェクトを第1のバッファ171に描画して画像データIMKを生成する。そして生成された画像データIMKと、第2のバッファ172に書き込まれている第Jのフレームでの画像データIMJと、α値αとに基づいて、IMK+(IMK−IMJ)×αのαブレンディング処理を行い、第2のバッファ172に書き込む。また第Lのフレームでは、オブジェクトを第3のバッファ173に描画して画像データIMLを生成する。そして生成された画像データIMLと、第1のバッファ171に書き込まれている第Kのフレームでの画像データIMKと、α値αとに基づいて、IML+(IML−IMK)×αのαブレンディング処理を行い、第1のバッファ171に書き込む。また第Mのフレームでは、オブジェクトを第2のバッファ172に描画して画像データIMMを生成する。そして生成された画像データIMMと、第3のバッファ173に書き込まれている第Lのフレームでの画像データIMLと、α値αとに基づいて、IMM+(IMM−IML)×αのαブレンディング処理を行い、第3のバッファ173に書き込む。
なお第1、第2、第3のバッファ171、172、173のうち描画バッファに設定されたバッファに生成される元画像のデータは、例えば、Z値を格納するZバッファ176を用いて隠面消去を行いながらオブジェクト(プリミティブ面)を描画することで生成されるものである。
なお、本実施形態の画像生成システムは、1人のプレイヤのみがプレイできるシングルプレイヤモード専用のシステムにしてもよいし、複数のプレイヤがプレイできるマルチプレイヤモードも備えるシステムにしてもよい。また複数のプレイヤがプレイする場合に、これらの複数のプレイヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
2.本実施形態の手法
2.1 オーバードライブエフェクト処理の原理
本実施形態のオーバードライブエフェクト処理の原理について説明する。図2(A)(B)において、あるピクセルに着目した場合に、前の第Jのフレームでの画像データ(デジタル画像データ値)がIMJであり、現在の第Kのフレームでの画像データがIMKであったとする。この場合に、表示部190の応答速度が十分に速ければ、第Kのフレームにおいて、正しい画像データ(色データ)IMKを表示バッファ(表示バッファに設定されるバッファ)に書き込むことで、表示部190における対応するピクセルの輝度は、IMKにより設定されるべき輝度になる。
ところが、表示部190が液晶表示装置等である場合には、液晶の応答速度が遅いため、正しい画像データIMKを書き込んでも、表示部190における対応するピクセルの輝度が、IMKにより設定されるべき輝度にならない場合がある。例えば図2(A)の場合ではIMKにより設定されるべき輝度よりも暗くなり、図2(B)の場合ではIMKにより設定されるべき輝度よりも明るくなってしまう。この結果、残像感が出たり動画がぼやけて見える問題が生じる。
この場合、表示部190がハードウェアのオーバードライブ回路を備えていれば、このような残像感の問題を防止できる。しかしながら、携帯型ゲーム装置の液晶表示装置の多くは、このようなオーバードライブ回路を備えていない。また家庭用ゲーム装置では、ゲーム装置本体に対して様々なタイプの表示部(表示装置)が接続される可能性がある。例えばブラウン管テレビが接続されたり、液晶テレビが接続される。またオーバードライブ回路を内蔵する液晶テレビが接続されたり、内蔵しない液晶テレビが接続される。
そして表示部190が、ハードウェアのオーバードライブ回路を備えていないと、残像感が目立ってしまい、生成されるゲーム画像の画質が劣化する。特に複数のオブジェクト(表示物)が高速に画面上で移動するゲーム画像では、オブジェクトの輪郭がぼやけてしまい、プレーヤのゲームプレイに支障を与える可能性がある。
そこで本実施形態では、ソフトウェアによるオーバードライブエフェクト処理を行うことで、このような問題を解決している。即ち通常ならば、オブジェクトを描画することで生成された画像データ(元画像データ)は、そのまま表示部190に出力される。これに対して本実施形態では、オブジェクトの描画により生成された画像データに対して、ポストフィルタ処理としてのソフトウェアによるオーバードライブエフェクト処理を行う。具体的には図2(A)では、差分画像データIMK−IMJが正の値であるため、オーバードライブエフェクト処理後の画像データIMODKをIMKよりも大きな値に設定し、正方向へのオーバードライブエフェクト処理を行う。また図2(B)では差分画像データIMK−IMJが負の値であるため、オーバードライブエフェクト処理後の画像データIMODKをIMKよりも小さな値に設定し、負方向へのオーバードライブエフェクト処理を行う。そしてオーバードライブエフェクト処理後の画像データを表示バッファに書き込み、表示部190に出力する。
このようにすれば、表示部190がハードウェアのオーバードライブ回路を備えていなくても、液晶等の応答速度を向上でき、残像感を低減できる。
なお本実施形態のオーバードライブエフェクト処理とは異なる処理として、フリッカーフリー等のために用いられるぼかし処理(ブラー処理)がある。このぼかし処理では図2(C)に示すように、第J、第Kのフレームでの画像データIMJ、IMKをブレンドして、IMJとIMKの中間の画像データIMBKを生成する。
これに対してオーバードライブエフェクト処理では図2(C)に示すように、IMKを越えたIMODK=IMK+(IMK−IMJ)×K1の画像データを生成する。即ち、現在のフレームの画像データIMKと前のフレームの画像データIMJの差分画像データIMK−IMJを求め、差分画像データIMK−IMJにエフェクト強度係数K1(α値)を乗算したものを、現在のフレームの画像データIMKに加算する処理を行って、IMODKを生成する。このようにすれば、IMKを越えたIMODKが目標値として設定されるため、液晶の反応速度が遅い場合でも、表示部190における対応する画素の輝度を、IMKに応じた輝度に設定できるようになる。
2.2 オーバードライブエフェクト処理の詳細
次に本実施形態のオーバードライブエフェクト処理の詳細について図3、図4の動作フロー図を用いて説明する。例えばオブジェクトOBが図5(A)(B)、図6(A)に示すように移動したとする。なお図5(A)(B)、図6(A)は、各々、第1のフレーム(広義には第Jのフレーム)、第2のフレーム(広義には第Kのフレーム)、第3のフレーム(広義には第Lのフレーム)での画像である。
ここで画像データ(色データ、輝度)の最大値を「100」とし、最小値を「0」とした場合に、オブジェクトOBの画像データの値は中間色である「70」になっており、背景領域の画像データの値は中間色である「50」になっている。そして、このオブジェクトOBを高速に移動させて、液晶表示装置の表示部190に表示すると、図6(B)に示すような残像が発生してしまう。即ちオブジェクトOBが移動すると、図6(B)のA1に示す部分の輝度は、背景領域の画像データである「50」に対応する輝度になるはずであるが、液晶の応答速度が遅いため、「50」に対応する輝度よりも大きな輝度になってしまう。この結果、A1に示す部分に残像が発生する。A2に示す部分についても同様である。
このような残像の発生を防止するために、本実施形態では、図3に示すオーバードライブエフェクト処理を行っている。
例えば第2のフレームでは、現在のフレームである第2のフレーム(第Kのフレーム)の画像データIM2から、前(過去)のフレームである第1のフレーム(第Jのフレーム)の画像データIM1を減算する差分処理を行う(ステップS1)。このようにすれば、例えば図5(A)(B)のようにオブジェクトOBが移動した場合に、図7(A)のような差分画像データ(差分マスク、差分プレーン)IM2−IM1が生成される。
即ち図7(A)のB1に示す部分では、画像データがIM1=70からIM2=50に変化しているため、差分画像データはIM2−IM1=50−70=−20になる。またB2に示す部分では、IM1=70、IM2=70というように画像データが変化していないため、IM2−IM1=0になる。またB3に示す部分では、画像データがIM1=50からIM2=70に変化しているため、IM2−IM1=70−50=20になる。
次に、差分画像データIM2−IM1にオーバードライブ用のエフェクト強度係数K1(α値)を乗算する処理を行い、(IM2−IM1)×K1を生成する(ステップS2)。
例えば図7(B)では、エフェクト強度係数がK1=0.5であり、このエフェクト強度係数K1が図7(A)の差分画像データに乗算されるため、C1、C2、C3に示す部分での画像データは、各々、「−10」、「0」、「10」になる。
次に、(IM2−IM1)×K1を、現在のフレームである第2のフレームの画像データIM2に対して加算する処理を行い、IM2+(IM2−IM1)×K1を生成する(ステップS3)。そして生成されたオーバードライブエフェクト処理後の画像データIMOD2=IM2+(IM2−IM1)×K1を表示部190に出力する。
例えば図8(A)のD1に示す部分では、背景領域の画像データIM2=50に対して、図7(B)のC1に示す部分の画像データ(IM2−IM1)×K1=−10が加算されるため、オーバードライブエフェクト処理後の画像データはIMOD2=40になる。また図8(A)のD2に示す部分では、オブジェクトOBの画像データIM2=70に対して、図7(B)のC2に示す部分の画像データ(IM2−IM1)×K1=0が加算されるため、オーバードライブエフェクト処理後の画像データはIMOD2=70になる。また図8(A)のD3に示す部分では、オブジェクトOBの画像データIM2=70に対して、図7(B)のC3に示す部分の画像データ(IM2−IM1)×K1=10が加算されるため、オーバードライブエフェクト処理後の画像データはIMOD2=80になる。図8(A)に示すようなオーバードライブエフェクト処理後の画像データを表示部190に出力することで、残像感を低減できる。
例えば図6(B)のA1に示す部分では、表示部190に出力される画像データは、背景領域の画像データである「50」になっているが、液晶の応答速度が遅いため、残像が発生している。これに対して本実施形態では、図8(B)のD1に示す部分において、背景領域の画像データ「50」よりも小さな画像データ「40」が表示部190に出力される。従って、D1の部分では図2(B)に示す負方向へのオーバードライブエフェクト処理が行われ、図6(B)のA1に示すような残像の発生を軽減できる。
次の第3のフレームでは、第3のフレーム(第Lのフレーム)の画像データIM3から、第2のフレーム(第Kのフレーム)の画像データIM2を減算する差分処理を行う(ステップS4)。そして、得られた差分画像データIM3−IM2にオーバードライブ用のエフェクト強度係数K1を乗算する処理を行う(ステップS5)。
次に、生成された(IM3−IM2)×K1を、第3のフレームの画像データIM3に対して加算する処理を行う(ステップS6)。そして生成されたオーバードライブエフェクト処理後の画像データIMOD3=IM3+(IM3−IM2)×K1を表示部190に出力する。
ところで、液晶の応答速度が極めて遅い場合には、1フレーム分の差分画像データに基づくオーバードライブエフェクト処理では、残像の軽減に不十分な場合がある。
そこで図4の動作フローでは、過去のフレームでの差分画像データに基づき得られる差分和らげ処理用の画像データを保存しておき、現在のフレームでの差分画像データと、保存しておいた差分和らげ処理用の画像データとに基づいて、オーバードライブエフェクト処理を行っている。
例えば図4に示すように、第2のフレームでは、差分処理(ステップS11)、乗算処理(ステップS12)を行って、(IM2−IM1)×K1を生成する。そして、この(IM2−IM1)×K1に対して、差分和らげ処理用のエフェクト強度係数を乗算して、差分和らげ処理用の画像データ(IM2−IM1)×K2を生成する(ステップS13)。ここでK1>K2となっている。そして生成された差分和らげ処理用の画像データ(IM2−IM1)×K2は保存される。
例えば図8(B)では、図7(B)のC1、C2、C3に示す画像データ「−10]、「0」、「10」に対して、差分和らげ処理用のエフェクト強度係数が乗算されて、E1、E2、E3に示すような差分和らげ処理用の画像データ「−2」、「0」、「2」が生成されている。なお図7(A)の差分画像データから差分和らげ処理用の画像データを生成するようにしてもよい。
次の第3のフレームでは、差分処理を行って、図9(A)に示すような差分画像データを生成する(ステップS15)。そしてオーバードライブ用のエフェクト強度係数の乗算処理を行って、図9(B)に示すような画像データ(IM3−IM2)×K1を生成する(ステップS16)。
次に、生成された画像データ(IM3−IM2)×K1に対して、保存しておいた差分和らげ処理用の画像データ(IM2−IM1)×K2を加算(或いは減算)する処理を行い、(IM3−IM2)×K1+(IM2−IM1)×K2を生成する(ステップS17)。即ち図9(B)の画像データに、図8(B)の差分和らげ処理用の画像データを加算(或いは減算)する。これにより図10(A)に示すような画像データ(マスク)が生成される。即ちF1に示す部分では0−2=−2になり、F2に示す部分では−10+0=−10になり、F3に示す部分では−10+2=−8になる。またF4に示す部分では、0+2=2になり、F5に示す部分では10+0=10になる。
次に、生成された(IM3−IM2)×K1+(IM2−IM1)×K2を、第3のフレームの画像データIM3に対して加算する処理を行う(ステップS18)。そして生成されたオーバードライブエフェクト処理後の画像データIMOD3=IM3+(IM3−IM2)×K1+(IM2−IM1)×K2を表示部190に出力する。即ち図10(B)に示すようなオーバードライブエフェクト処理後の画像データIMOD3を出力する。また(IM3−IM2)×K1+(IM2−IM1)×K2に対して差分和らげ処理用のエフェクト強度係数を乗算する処理を行う(ステップS19)。
図4に示すような差分和らげ処理を行えば、過去の差分画像データの効果が和らげて適用されるオーバードライブエフェクト処理を実現できる。即ち、液晶の応答速度が極めて遅い場合に、この差分和らげ処理を行わないと、図10(B)のG1に示す部分に残像が残る可能性がある。これに対して、差分和らげ処理を行えばG1等に示す部分でのオーバードライブエフェクト処理も実現できる。例えばG1に示す部分では、負方向に「−2」のオーバードライブエフェクト処理が行われて、残像の発生が低減される。
なお図4では、差分和らげ処理用の画像データとして(IM2−IM1)×K2を保存しているが、本実施形態はこれに限定されない。即ち、保存する差分和らげ処理用の画像データは、差分画像データIM2−IM1に基づき得られる画像データであればよく、例えば差分画像データIM2−IM1そのものを保存したり、差分画像データにオーバードライブ用のエフェクト強度係数を乗算した(IM2−IM1)×K1を保存してもよい。
また本実施形態のオーバードライブエフェクト処理は、画像プレーン単位で行ってもよいし、ピクセル単位で行ってもよい。例えば図11にピクセル単位で行う場合のオーバードライブエフェクト処理の例を示す。
まず、処理対象となるピクセルの現在のフレームでの画像データと前のフレームでの画像データとの差分値を求める(ステップS21)。そして差分値が0か否かを判断し(ステップS22)、差分値が0である場合には、現在のフレームでの画像データを、表示バッファの対応するピクセルに書き込む(ステップS23)。一方、差分値が0ではない場合には、差分値に基づいてオーバードライブエフェクト処理を行い、オーバードライブエフェクト処理後の画像データを求める(ステップS24)。そしてオーバードライブエフェクト処理後の画像データを、表示バッファの対応するピクセルに書き込む(ステップS25)。次に、全てのピクセルについての処理が完了したか否かを判断し(ステップS26)、完了していない場合にはステップS21に戻り次のピクセルの処理に移行する。一方、完了した場合には処理を終了する。
また図3、図4ではエフェクト強度係数が一定値であるとして説明したが、本実施形態はこれに限定されず、エフェクト強度係数を可変値にしてもよい。例えば、差分画像データの値(絶対値)が大きくなるほど大きくなるエフェクト強度係数(α値)に基づいて、オーバードライブエフェクト処理を行ってもよい。
具体的には図12に示すような差分画像データ値とエフェクト強度係数(α値)を関連づけるテーブルを用意する。そして求められた差分画像データ値に基づいて図12のテーブルからエフェクト強度係数を参照する。そして図3のステップS2、S5や図4のステップS12、S16等では、参照されたエフェクト強度係数を差分画像データに乗算する。このようにすれば、例えば差分画像データ値が大きくなればなるほど、オーバードライブエフェクト処理の効果が大きくなる。従って液晶の応答速度が遅い場合にも、残像等の発生を最小限に抑えることが可能になる。
2.3 オーバードライブエフェクト処理の実現手法
次に本実施形態のオーバードライブエフェクト処理の実現手法について説明する。この実現手法ではαブレンディング処理を行ってオーバードライブエフェクト処理を実現している。即ちエフェクト強度係数としてα値を用いる。更に具体的には、第Kのフレームで生成された画像データIMKと、第J(K>J)のフレームにおいてオブジェクトを描画することで生成された画像データIMJと、α値αとに基づいて、IMK+(IMK−IMJ)×αのαブレンディング処理を行う。
例えば図13(A)において、第1のフレーム(第Jのフレーム)では、オブジェクトを描画することで第1のフレームでの画像データIM1を生成する。次の第2のフレーム(第Kのフレーム)では、オブジェクトを描画することで第2のフレームでの画像データIM2を生成する。そして画像データIM2、IM1とα値αとに基づいて、αブレンディング処理を行うことで、オーバードライブエフェクト処理が行われた画像データIMOD2=IM2+(IM2−IM1)×αの画像データを生成する。そして生成された画像データIMOD2を表示部に出力する。
この実現手法によれば、元画像データに対してαブレンディング処理を行うだけで、オーバードライブエフェクト処理が行われた画像データを生成できる。従って、処理負荷が軽いという利点がある。
即ち図14に示すように、頂点等にα値が設定された画面サイズ又は分割画面サイズのプリミティブ面PL(スプライト、ポリゴン)に、画像データIM2(IMK)のテクスチャをマッピングする。そして、テクスチャがマッピングされたプリミティブ面PLを、画像データIM1(IMJ)が描画されているバッファ(例えば表示バッファ)に対してαブレンディング描画することで、オーバードライブエフェクト処理が行われた画像データIMOD2=IM2+(IM2−IM1)×αを生成する。このようにすれば、例えば1回のテクスチャマッピングでオーバードライブエフェクト処理を実現でき、処理負荷を軽減できる。また、通常、この種の画像生成システムはテクスチャマッピング機能を有している。従って、本実施形態の実現手法によれば、表示部がハードウェアのオーバードライブ回路を有していなくても、このテクスチャマッピング機能を有効利用してオーバードライブエフェクト処理を実現できるという利点がある。
さて、αブレンディング処理は、半透明処理やぼかし(ブラー)処理のために用意されている。即ち図2(C)において、画像データIMKとIMJの中間の画像データIMBKを求めるために用意される。従って、画像生成システムのブレンディング回路において、IM2+(IM2−IM1)×αという式を設定できない場合があり、このような画像生成システムでは、IMOD2=IM2+(IM2−IM1)×αで表されるオーバードライブエフェクト処理を実現することが難しい。
例えば画像生成システムにおいて許容されるαブレンディングの式が、加算αブレンディングの式であるCS×A+CD×Bと、減算αブレンディングの式であるCS×A−CD×Bであったとする。
この場合に図13(B)の手法では、αブレンディングの式として、CS×A−CD×Bの減算αブレンディングの式を設定する。また設定値ASの2倍の値がソースα値Aとして設定される2倍値モードでASを設定する。具体的にはAS=(1+α)/2に設定する。また設定値BSが固定のディスティネーションα値Bとして設定される固定値モードでBSを設定する。具体的には、ディスティネーションα値のレジスタにBS=αを設定する。またソース色CSとしてIM2を設定し、ディスティネーション色CDとしてIM1を設定する。
このようにしてαブレンディング処理を行えば、
CS×A−CD×B=CS×(2×AS)−CD×BS
=CS×(1+α)−CD×α
=CS+(CS−CD)×α
=IM2+(IM2−IM1)×α
となるため、オーバードライブエフェクト処理を実現できる。即ち画像生成システムのαブレンディングの式としてIM2+(IM2−IM1)×αの式が用意されていなくても、CS×A−CD×Bで表される一般的な減算αブレンディングの式を利用して、オーバードライブエフェクト処理を実現できる。
また本実施形態のオーバードライブエフェクト処理はトリプルバッファを用いて実現してもよい。
例えば図15において、第1のフレーム(第Jのフレーム)では、オブジェクト(1又は複数のオブジェクト)をバッファ2(画像バッファ)に描画することで、画像データIM1(IMJ)を生成する。
次の第2のフレーム(第Kのフレーム)では、オブジェクトをバッファ1に描画して画像データIM2(IMK)を生成する。そして、生成された画像データIM2と、バッファ2に書き込まれている第1のフレームでの画像データIM1と、α値αとに基づいて、αブレンディング処理を行う。そしてオーバードライブエフェクト処理後の画像データIMOD2=IM2+(IM2−IM1)×αをバッファ2に書き込む。
次の第3のフレーム(第Lのフレーム)では、オブジェクトをバッファ3に描画して画像データIM3(IML)を生成する。そして、生成された画像データIM3と、バッファ1に書き込まれている第2のフレームでの画像データIM2と、α値αとに基づいて、αブレンディング処理を行う。そしてオーバードライブエフェクト処理後の画像データIMOD3=IM3+(IM3−IM2)×αをバッファ1に書き込む。
図16に示すように次の第4のフレーム(第Mのフレーム)では、オブジェクトをバッファ2に描画して画像データIM4(IMM)を生成する。そして生成された画像データIM4と、バッファ3に書き込まれている第3のフレームでの画像データIM3と、α値αとに基づいて、αブレンディング処理を行う。そしてオーバードライブエフェクト処理後の画像データIMOD4=IM4+(IM4−IM3)×αをバッファ3に書き込む。
図15、図16の手法によれば、3つのバッファ1、2、3を用意し、これらの各バッファ1、2、3の役割(描画バッファ、表示バッファ)を、各フレーム毎に順次入れ替えている。例えば第3のフレームでは、バッファ3が、オブジェクトが描画される描画バッファ(バックバッファ)に設定され、バッファ2が、表示部に出力される画像データが書き込まれる表示バッファ(フロントバッファ)に設定される。また第4のフレームでは、バッファ2が描画バッファに設定され、バッファ1が表示バッファに設定される。
このようにバッファ1、2、3の役割を順次入れ替えるようにすれば、バッファ間での画像データの無駄なコピー処理が不要になり、処理回数が減るため、処理負荷を軽減できる。
なおオーバードライブエフェクト処理の実現手法として、ダブルバッファを用いる手法が考えられる。この手法では例えば、現在のフレームでの描画画像データと、前のフレームでのオーバードライブエフェクト処理後の画像データとの差分処理を行い、オーバードライブエフェクト処理を実現する。しかしながら、この手法では、オーバードライブエフェクト処理のエフェクト強度が強くなると、画面にジャギー等が発生する可能性がある。
これに対してトリプルバッファを用いる手法によれば、前のフレームでの描画画像データを保存することができ、現在のフレームでの描画画像データとこの保存しておいた描画画像データとの差分処理を行うことができる。従って正確な差分画像データを得ることができ、ジャギー等の発生を効果的に防止できる。
また図15、図16ではバッファ1、2、3の役割を順次入れ替える手法により、オーバードライブエフェクト処理を実現しているが、本実施形態はこれに限定されない。例えば、描画バッファ、表示バッファの他に差分値バッファを設け、この差分値バッファに差分画像データIMK−IMJを書き込む手法により、オーバードライブエフェクト処理を実現してもよい。
次に図17、図18のフローチャートを用いて、本実施形態の実現手法の詳細な処理について説明する。
まずバッファ1を描画先に設定する(ステップS31)。そしてジオメトリ処理を行い(ステップS32)、バッファ1にジオメトリ処理後(透視変換後)のオブジェクトを描画する(ステップS33)。
次にバッファ2を描画先に設定する(ステップS34)。そしてバッファ1の画像データをテクスチャに設定し(ステップS35)、テクスチャのα値を無効にするように設定する(ステップS36)。
次に図13(B)で説明したように、αブレンディングの式CS×A−CD×Bを設定する(ステップS37)。即ち減算αブレンディングの式に設定する。また固定値モードでB=BS=αに設定する(ステップS38)。また2倍値モードでA=2×AS=1+αを、スプライト(プリミティブ面)のα値として設定する(ステップS39)。
次に図14で説明したように、分割画面サイズ(或いは画面サイズ)のスプライトにバッファ1のテクスチャをマッピングし、1フレーム前の画像データが描画されているバッファ2に対し、設定されたαブレンディングの式に従ってスプライトを描画する(ステップS40)。そしてバッファ2の画像を表示部に表示する(ステップS41)。
次に、バッファ3をオブジェクトの描画バッファに設定し、バッファ1を表示バッファに設定して、ステップS31〜S41と同様の処理を行う(ステップS42〜S52)。次に、バッファ2をオブジェクトの描画バッファに設定し、バッファ3を表示バッファに設定して、ステップS31〜S41と同様の処理を行う(ステップS53〜S63)。このようにすることで、図15、図16で説明したようにトリプルバッファを利用したオーバードライブエフェクト処理を実現できる。
2.4 特定領域へのオーバードライブエフェクト処理
ハードウェアのオーバードライブ回路を用いてオーバードライブを行うと、表示画面の全ての領域に対してオーバードライブが掛かってしまう。
ところが、ゲームによっては、画面内の特定のオブジェクトについてのみ、残像感を軽減できれば十分な場合がある。例えば画面内で高速に移動するキャラクタなどのオブジェクトや、残像が発生しやすい形状のオブジェクト(例えば並んで配置される柱状オブジェクト等)についてだけ、残像感を軽減できれば、十分な場合がある。このような場合に、オーバードライブエフェクト処理の対象をこのようなオブジェクトに絞れば、処理負荷の軽減を図れる可能性がある。
そこで図19(A)では、表示部の表示領域のうちの特定の領域200の画像データに対してのみ、オーバードライブエフェクト処理を行うようにしている。こうすれば、特定領域200以外では、オーバードライブエフェクト処理を行わなくて済む。従って例えばピクセルシェーダー手法によりオーバードライブエフェクト処理を実現した場合などにおいて、処理負荷を軽減することが可能になる。またオーバードライブエフェクト処理が不要な場所に、不必要にオーバードライブエフェクト処理が掛かってしまう事態も防止できる。
図19(A)の特定領域200は、描画バッファに描画するオブジェクトに基づき設定することができる。具体的には、複数のオブジェクト(例えば透視変換後のオブジェクト)を描画することで画像データを生成する場合には、複数のオブジェクトのうちの特定のオブジェクト(モデルオブジェクト)を内包する領域に対して、オーバードライブエフェクト処理を行うようにする。例えば図19(B)では、特定のオブジェクトOBを内包する領域200を設定する。具体的には、オブジェクト(透視変換後のオブジェクト)の頂点座標(制御点の座標)に基づいて、領域200を設定し、この領域200に対してオーバードライブエフェクト処理を行う。
なお、オブジェクトに対して簡易オブジェクトが設定される場合には、簡易オブジェクト(透視変換後の簡易オブジェクト)の頂点座標に基づいて、オーバードライブエフェクト処理を行う領域200を設定してもよい。即ちゲームによっては、オブジェクトに対して、その形状を簡易化した簡易オブジェクト(オブジェクトよりも頂点数が少なく、オブジェクトに追従して移動するオブジェクト)が設定される場合がある。例えば銃弾やパンチなどの攻撃がオブジェクトにヒットしたか否かのチェックは、簡易オブジェクトと銃弾やパンチとのヒットチェックを行うことで実現される。そして簡易オブジェクトの頂点座標に基づいて領域200を設定すれば、簡易オブジェクトの頂点数は少ないため、処理負荷を軽減できる。
図19(B)の領域200の設定は、具体的には以下の手法により実現できる。まず、オブジェクトOB(或いは簡易オブジェクト)を内包するバウンディングボックスBB(バウンディングボリューム)を生成する。このバウンディングボックスBBは、オブジェクトOBのスクリーン座標系での頂点(透視変換後のOBの頂点)のX座標、Y座標を求め、これらの頂点のX座標の最小値XMIN、最大値XMAXと、Y座標の最小値YMIN、最大値YMAXを求めることで生成できる。なお、余裕を持たせるために、バウンディングボックスBBの大きさを、図19(B)よりも若干だけ広げた大きさに設定してもよい。
そして生成されたバウンディングボックスBBにより図14のプリミティブ面PLを設定する。次に、このプリミティブ面PLに対して、画像データIM2のテクスチャをマッピングする。そしてテクスチャがマッピングされたプリミティブ面PLを、画像データIM1(IMOD1)が描画されているバッファに対してαブレンディング描画することで、オーバードライブエフェクト処理が行われた画像データを生成する。
なお領域200の設定は図19(B)に示すようなバウンディングボックスを用いる手法に限定されない。例えば表示領域内において、同じ位置にある領域を、常に、オーバードライブエフェクト処理を行う領域200として設定してもよい。
2.5 調整画面、モード設定画面
家庭用ゲーム装置では、ゲーム装置本体に対して様々なタイプの表示部が接続される可能性がある。例えばブラウン管テレビが接続されたり、液晶テレビが接続される。またオーバードライブ回路を内蔵する液晶テレビが接続されたり、内蔵しない液晶テレビが接続される。また液晶テレビは、製品によって液晶の応答速度が遅いものや速いものがある。また携帯型ゲーム装置においても、同じ製品であっても、液晶画面の仕様が変更される場合がある。また携帯型ゲーム装置が、外部モニタであるブラウン管テレビや液晶テレビに接続される場合もある。
このような場合に、オーバードライブエフェクト処理のα値(エフェクト強度)が固定値であると、オーバードライブエフェクト処理が不十分なため残像が残ったり、過度なオーバードライブエフェクト処理によりチラツキ(振動)が発生するおそれがある。またオーバードライブエフェクト処理の有効、無効を設定できないと、オーバードライブエフェクト処理を必要としない表示部なのに、オーバードライブエフェクト処理が掛かってしまう事態が生じる。
そこで図20(A)(B)では、オーバードライブエフェクト処理のα値を調整するための調整画面や、オーバードライブエフェクト処理を有効にするか否かを設定するためのモード設定画面を表示するようにしている。
例えば図20(A)では、中間色CN1に設定された調整画面の背景領域210(調整ウィンドウ)上で、中間色CN2に設定されたオブジェクトOBが移動する。このように背景領域210、オブジェクトOBを、原色ではない中間色に設定すれば、残像が目立つようになり、オーバードライブエフェクト処理のα値の調整に好適な調整画面を提供できる。
プレーヤは、オブジェクトOBの画像を見ながら、画面上に表示された調整スライダー212を操作部により動かして、オーバードライブエフェクト処理のα値(エフェクト強度)を調整する。例えばプレーヤは、オブジェクトOBの残像が大きいと感じたら、調整スライダー212を右側に移動させて、オーバードライブエフェクト処理のエフェクト強度を大きくなるようなα値に設定する。一方、オブジェクトOBの残像がそれほど大きくなく、オーバードライブの効果が大きすぎると感じたら、調整スライダー212を左側に移動させて、オーバードライブエフェクト処理のエフェクト強度が小さくなるようなα値に設定する。そしてこのようにして調整されたα値(エフェクト強度)は、画像生成システムの記憶部やメモリーカード等の携帯型情報記憶装置に保存される。そして、ゲーム画面においては、この保存されたα値(エフェクト強度)に基づいて、オーバードライブエフェクト処理が行われることになる。
なお調整画面の表示手法は図20(A)に限定されない。例えば図20(A)では円形状のオブジェクトを移動させているが、円以外の形状(例えば柱形状)のオブジェクトを移動させてもよい。また複数のオブジェクトを移動させるようにしてもよい。またこのようなオブジェクトを表示せずに、調整スライダー212(調整値を指定するための表示物)だけを表示するようにしてもよい。また背景領域210やオブジェクトOBに設定される中間色も、様々な色を採用できる。例えば背景領域210やオブジェクトOBの画像を、2色以上の中間色を有する画像にしてもよい。
図20(B)のモード設定画面は、ゲームにおける各種設定を行うための画面である。例えばゲーム音の設定(音色、音量、ステレオ/モノラルの設定)、操作部の設定(ボタンやレバーの割り当ての設定)、画像表示の設定などを行うための画面である。
図20(B)のモード設定画面では、プレーヤは操作部を操作して、オーバードライブエフェクト処理の有効(オン)、無効(オフ)を設定できる。そしてオーバードライブエフェクト処理を有効にする設定(選択)が行われた場合には、ゲーム画面においてオーバードライブエフェクト処理が行われるようになる。
なおモード設定画面の表示手法は図20(B)に限定されない。例えば、オーバードライブエフェクト処理の有効、無効の設定を、図20(A)の調整画面において行えるようにしてもよい。この場合には例えば、図20(A)の調整スライダー212が一番左側に移動した場合に、オーバードライブエフェクト処理が無効になるようにすればよい。また、オーバードライブエフェクト処理のエフェクト強度の調整を、モード設定画面において行えるようにしてもよい。この場合には例えば、図20(A)の調整スライダー212を図20(B)のモード設定画面に表示すればよい。
3.ハードウェア構成
図21に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介してダウンロードされたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、マトリクス演算(ベクトル演算)を高速に実行する。例えばオブジェクトを移動させたり動作(モーション)させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
ジオメトリプロセッサ904は、メインプロセッサ900上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ906は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセラレートする。これにより、オープニング画面やゲーム画面において、MPEG方式等で圧縮された動画像を表示できる。
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。また描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエイリアシング、シェーディング処理なども行う。1フレーム分の画像がフレームバッファ922に書き込まれるとその画像はディスプレイ912に表示される。
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942やメモリカード944からのデータはシリアルインターフェース940を介して入力される。
ROM950にはシステムプログラムなどが格納されている。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納されている。なおROM950の代わりにハードディスクを利用してもよい。RAM960は各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ間でのDMA転送を制御する。CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されているCD982にアクセスする。通信インターフェース990はネットワーク(通信回線、高速シリアルバス)を介して外部との間でデータ転送を行う。
なお本実施形態の各部の処理はハードウェアとプログラムの両方により実現ででき、この場合、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ900、902、904、906、910、930に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ900、902、904、906、910、930は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(第J、第K、第Lのフレーム等)と共に記載された用語(第1、第2、第3のフレーム等)は、明細書または図面のいかなる箇所においても、その異なる用語に置き換えることができる。
またオーバードライブエフェクト処理の実現手法も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明のオーバードライブエフェクト処理は、表示部が液晶表示装置ではない場合にも適用可能である。
また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。