説明

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

【課題】 移動体オブジェクトの映り込みに対してもフィルタ処理の効果を確実に反映させることができるプログラム、情報記憶媒体及び画像生成システムを提供する。
【解決手段】 フィルタ処理の対象となる半透明オブジェクトである水面オブジェクトWOBに移動体オブジェクトPOBが映り込む映り込みイベントが発生した場合に、移動体オブジェクトPOBを所与の基準面に対してフリップさせたオブジェクト空間上の位置に移動体オブジェクトPOBに対応する鏡像オブジェクトMOBを配置設定し、移動体オブジェクトPOB及び鏡像オブジェクトMOBを描画した後に水面オブジェクトWOBを描画した元画像に対してフィルタ処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関係する。
【背景技術】
【0002】
従来より、仮想的な3次元空間であるオブジェクト空間内において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。ロールプレイングゲーム(RPG)を楽しむことができる画像生成システムを例にとれば、プレーヤは、自身の分身であるプレーヤキャラクタ(プレーヤオブジェクト)を操作してオブジェクト空間内のマップ上で移動させ、敵キャラクタ(敵オブジェクト)と対戦したり、他のキャラクタと対話したり、様々な町を訪れたりすることでゲームを楽しむ。
【0003】
このような画像生成システムでは、水面の揺らぎ(さざ波)などを表現する場合に、一度描画した画像(元画像)に対して、さらなる処理を施して、元の画像とは異なる雰囲気の画像を作成するポストフィルタ手法(ポストエフェクト手法)が用いられる。例えば、時間経過に応じて元画像をゆがませる揺らぎフィルタ処理により、水面の揺らぎを表現することができる。ところで、このような水面の揺らぎを表現する場合においては、水際に存在するキャラクタが水面に映り込む様子などもリアルに表現されることが好ましく、キャラクタの映り込み画像にもポストフィルタの効果が確実に反映できる技術が望まれている。特にキャラクタが移動体オブジェクトである場合には、オブジェクト空間内における位置が時々刻々と変化するために、その変化の様子に合わせた映り込み表現が行われることが望まれる。
【発明の開示】
【発明が解決しようとする課題】
【0004】
本発明は、上記事情に鑑みてなされたものであり、移動体オブジェクトの映り込みに対してもフィルタ処理の効果を確実に反映させることができるプログラム、情報記憶媒体及び画像生成システムを提供することにある。
【課題を解決するための手段】
【0005】
本発明は、オブジェクト空間における仮想カメラから見た画像を生成するための画像生成システムであって、移動体オブジェクトがフィルタ処理の対象となる半透明オブジェクトに映り込む映り込みイベントが発生したか否かを判定するイベント判定部と、前記映り込みイベントが発生したと判定された場合に、移動体オブジェクトを所与の基準面に対してフリップさせた位置に該移動体オブジェクトの鏡像オブジェクトを前記オブジェクト空間に配置設定する鏡像オブジェクト設定部と、前記移動体オブジェクト及び前記鏡像オブジェクトを描画した後に前記半透明オブジェクトを描画した元画像に対してフィルタ処理を行う描画部と、を含む画像生成システムに関係する。また、本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また、本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0006】
コンピュータとは、プロセッサ(処理部:CPUあるいはGPUなど)、メモリ(記憶部)、入力装置、及び出力装置を基本的な構成要素とする物理的装置(システム)をいう。以下においても同様である。
【0007】
本発明によれば、移動体オブジェクト及び移動体オブジェクトに対応する鏡像オブジェクトを描画した後に、フィルタ処理の対象となる半透明オブジェクトが描画される。このため、鏡像オブジェクトの配置設定及びその描画という追加的処理が行われるような場合であっても、半透明オブジェクトに映り込んだ移動体オブジェクトの鏡像に確実にフィルタ処理の効果が反映された画像を生成することができる。
【0008】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記オブジェクト空間に前記半透明オブジェクトに対応した仮想反射面オブジェクトが配置設定されており、前記イベント判定部が、前記仮想カメラの視線ベクトルを前記仮想反射面オブジェクトで反射させた反射視線ベクトルと前記移動体オブジェクトとの交差判定を行って、前記映り込みイベントが発生したか否かを判定するようにしてもよい。このようにすれば、仮想反射面オブジェクトのサイズによって移動体オブジェクトの映り込みイベントが生じる範囲を予め特定することができる。
【0009】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記オブジェクト空間に前記半透明オブジェクトに対応した仮想反射面オブジェクトが配置設定されており、前記イベント判定部が、前記移動体オブジェクトを内包するバウンディングボリュームを設定し、前記仮想カメラの視線ベクトルを前記仮想反射面オブジェクトで反射させた反射視線ベクトルと前記バウンディングボリュームとの交差判定を行って、前記映り込みイベントが発生したか否かを判定するようにしてもよい。このようにすれば、簡便に移動体オブジェクトの映り込みイベントが発生するか否かを判定することができる。
【0010】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記仮想反射面オブジェクトが複数のプリミティブ面に分割されており、前記イベント判定部が、前記視線ベクトルと交差しないプリミティブ面については、前記反射視線ベクトルの計算処理を省略するようにしてもよい。このようにすれば、仮想反射面オブジェクトの配置設定範囲が広範囲にわたる場合に、処理を高速化できる。
【0011】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記描画部が、前記半透明オブジェクトを前記移動体オブジェクト及び前記鏡像オブジェクトを含むオブジェクト群とは異なるα値で描画した前記元画像のαプレーンに設定されたα値をマスク情報として、前記画像に対してフィルタ処理を行うようにしてもよい。このようにすれば、移動体オブジェクトはフィルタ処理の影響を受けず、半透明オブジェクトに映り込んだ鏡像オブジェクトのみがフィルタ処理の影響を受けた画像を生成することができる。
【0012】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記描画部が、前記元画像のうち前記半透明オブジェクトの描画領域のみを、前記元画像のαプレーンに設定されたα値をマスク情報としてコピーしたワーク画像を生成し、該ワーク画像に基づいてフィルタ画像を生成し、前記元画像と該フィルタ画像とを合成する前記フィルタ処理を行うようにしてもよい。このようにすれば、フィルタ処理が必要な部分にだけぼかし処理を施して、局所的なグレア表現などを簡便に行うことができる。
【0013】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記描画部が、前記元画像をコピーしたワーク画像に基づいてフィルタ画像を生成し、該フィルタ画像のうち前記半透明オブジェクトの描画領域のみを、前記元画像のαプレーンに設定されたα値をマスク情報として元画像に合成する処理を行うようにしてもよい。例えば、ピクセル入れ替え処理のような元画像の全てのピクセルの色情報が必要なフィルタ処理では、半透明オブジェクトの描画領域の周辺の色情報が失われてしまうと、ノイズの混じったような不自然な画像が生成されてしまう。このため、元画像の全体をコピーしたワーク画像についてピクセル入れ替え処理を行った上で、半透明オブジェクトの描画領域についてのみフィルタ画像と元画像とが合成されるようにすることによって、生成画像が不自然になるような事態を防ぐことができる。
【0014】
また本発明の画像生成システムでは、所与の制御情報に基づいて仮想カメラを制御する仮想カメラ制御部と、前記仮想カメラの制御情報に基づいて、前記仮想カメラの位置、方向、および画角の少なくとも一つが変化したと判断される場合に、前記フィルタ処理のフィルタ強度パラメータを変更するパラメータ設定部とを含んでいてもよい。また本発明のプログラム及び情報記憶媒体では、上記仮想カメラ制御部及びパラメータ設定部としてコンピュータを機能させるようにしてもよい。このようにすれば、仮想カメラの位置、方向、及び画角の少なくとも一つが変化したと判断される場合にフィルタ強度パラメータが変更されるので、フィルタ処理の元画像への影響度を適切に調整することができる。このため、フィルタ処理後の画像が見栄えの悪い不自然なものとなることを防止することができ、高品質な映像を作成することができるようになる。
【0015】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクトに対して前記仮想カメラの注視点が設定され、前記パラメータ設定部が、前記移動体オブジェクトが前記オブジェクト空間内を移動することによって前記仮想カメラの注視点が移動した場合に、その移動距離に応じて前記フィルタ強度パラメータを変更するようにしてもよい。このようにすれば、注目すべき移動体オブジェクトがオブジェクト空間内で移動する場合に限って、フィルタ強度パラメータを変更すればよいので、処理が簡便になる。
【発明を実施するための最良の形態】
【0016】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0017】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0018】
操作部160は、プレーヤがプレーヤオブジェクト(移動体オブジェクトの一例、プレーヤが操作するプレーヤキャラクタ)の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。
【0019】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0020】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0021】
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などがある。通信部196は外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0022】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信してもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0023】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部100は記憶部170内の主記憶部171をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0024】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、パラメータ設定部116、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0025】
オブジェクト空間設定部110は、キャラクタ、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0026】
オブジェクト空間設定部110は、鏡像オブジェクト設定部111を含む。
【0027】
鏡像オブジェクト設定部111は、移動体オブジェクトがフィルタ処理の対象となる半透明オブジェクトに映り込む映り込みイベントが発生した場合に、移動体オブジェクトを所与の基準面に対してフリップさせたオブジェクト空間上の位置に、移動体オブジェクトの鏡像オブジェクトを配置する。
【0028】
移動・動作処理部112は、オブジェクト(キャラクタ、車、又は飛行機等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させる処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0029】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。
【0030】
例えば仮想カメラによりオブジェクト(例えばキャラクタ、ボール、車)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0031】
なお仮想カメラ制御部114は、所与の制御情報に基づいて、位置(視点位置)、方向(視線方向)、画角などを制御する。仮想カメラの位置、方向、画角の変化情報、注視点の移動情報(移動距離、移動方向)、オブジェクトの移動情報や回転情報、あるいは操作部160の操作情報など、種々の情報を仮想カメラの制御情報として任意に定めることができる。例えば、注視点の移動情報を仮想カメラの制御情報とした場合には、オブジェクト空間において注視点の位置が変更された場合に、その移動距離や移動方向、言い換えれば注視点のワールド座標(X、Y、Z)の変化に応じて仮想カメラの視点位置(位置)、視線方向(方向)、画角等を制御することができる。なお注視点の移動情報という場合、広義には、ワールド座標系での注視点の位置座標の変化情報のみならず、カメラ座標系(視点座標系)やスクリーン座標系での注視点の位置座標の変化情報をも含む。また仮想カメラの注視点は、オブジェクトに関連づけて設定することができ、例えば、操作部160の操作情報に基づいて、移動体オブジェクトをオブジェクト空間内で移動あるいは動作させることができるようなシステムにおいては、移動体オブジェクトの任意の代表点(例えば、中心座標)を注視点として設定することができる。この場合には、移動体オブジェクトの移動あるいは動作に追従して注視点が移動するため、結果的には移動体オブジェクトの移動に追従するように仮想カメラの位置、方向、画角等が制御されることになる。
【0032】
イベント判定部116は、移動体オブジェクトがフィルタ処理の対象となる半透明オブジェクトに映り込む映り込みイベントが発生したか否かを判定する。
【0033】
具体的には、仮想カメラの視線ベクトルを仮想反射面オブジェクトで反射させた反射視線ベクトルと移動体オブジェクトとの交差判定を行って、映り込みイベントが発生したか否かを判定する。
【0034】
またイベント判定部116は、反射視線ベクトルと移動体オブジェクトとの交差判定を行う代わりに、移動体オブジェクトを内包するバウンディングボリューム(バウンディングボックス、バウンディングスフィア、円柱、四角錐等)を設定して、そのバウンディングボリュームと反射視線ベクトルとの交差判定によって、映り込みイベントが発生したか否かを判定することもできる。このようにすれば、処理を簡便化することができる。
【0035】
また仮想反射面オブジェクトが複数のプリミティブ面に分割されて構成されていてもよく、この場合には、イベント判定部116が、視線ベクトルと交差しないプリミティブ面については、反射視線ベクトルの計算処理を省略することができる。このようにすれば、反射視線ベクトルの計算処理ルーチンを全てのプリミティブ面について行う必要がなくなるため、処理を高速化することができる。
【0036】
パラメータ設定部118は、フィルタ処理の影響度を決めるフィルタ強度パラメータを設定する処理を行い、特に仮想カメラの制御情報に基づいて、仮想カメラの位置、方向、および画角の少なくとも一つが変化したと判断される場合には、フィルタ処理のフィルタ強度パラメータを変更する処理を行う。例えば、仮想カメラの注視点の移動距離情報に基づいて、仮想カメラの位置、方向、および画角の少なくとも一つが変化したと判断される場合に、フィルタ強度パラメータを変更することができる。なお移動体オブジェクトに対して注視点が設定されている場合には、移動体オブジェクトがオブジェクト空間内を移動することによって仮想カメラの注視点が移動した場合に、その移動距離に応じてフィルタ強度パラメータを変更してもよい。
【0037】
ここでフィルタ処理の一例としてピクセル入れ替え処理を含むフィルタ処理を行う場合には、ピクセル入れ替え処理におけるピクセル入れ替え距離が減少するようにフィルタ強度パラメータを変更することができる。例えば、ピクセル入れ替え処理が周期関数に基づいてピクセル入れ替え距離が決定される処理である場合に、周期関数の振幅成分パラメータを減少させたり、周波数成分パラメータを増加させたりするパラメータ変更処理を行うことができる。ピクセル入れ替え処理とは、第Kのピクセルの色情報を所与のルールに従って第Lのピクセルの色情報に入れ替える処理であって、ピクセル入れ替え距離とは、第Kのピクセルと第Lのピクセルとの間の変位(距離)のことである。なおピクセル入れ替え処理では、ピクセルの入れ替えが生じないピクセルが存在していてもよく、あるピクセルの色情報が複数のピクセルの色情報として入れ替えられてもよい。
【0038】
またフィルタ強度パラメータの変更処理は、仮想カメラの注視点の移動距離と予め設定しておいたしきい値との関係において、その許否を制御することができる。このようにすれば、頻繁にフィルタ強度パラメータが変更されてしまって、画像の見栄えが悪くなることを防ぐことができる。具体的には、仮想カメラの注視点の移動距離が所与のしきい値より大きい場合に、フィルタ強度パラメータを第1のレベルから第1のレベルより低い第2のレベルへ連続的に近づける処理を行うことができる。この場合に、フィルタ強度パラメータを第1のレベルから第2のレベルに向かって徐々に近づくように変化させることが好ましい。また仮想カメラの注視点の移動距離が一旦しきい値を超えた後にしきい値を下回るように変化した場合には、フィルタ強度パラメータを第2のレベルから第1のレベルへ戻す処理を行うことができる。この場合にも、フィルタ強度パラメータを第2のレベルから第1のレベルに向けて連続的に変化させるようにすることが好ましい。
【0039】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まず、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、或いは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブの頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(オブジェクトデータ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数のプリミティブ)を描画バッファ172(フレームバッファや中間バッファ(ワークバッファ)などのピクセル単位で画像情報を記憶できるバッファ。VRAM)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように描画処理を行うこともできる。
【0040】
描画部120は、描画処理として、ジオメトリ処理、テクスチャマッピング、陰面消去処理、αブレンディング等を行う。
【0041】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ、法線ベクトル、或いはα値等)は、主記憶部172に保存される。
【0042】
テクスチャマッピングは、テクスチャ記憶部176に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部176からテクスチャ(色、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やテクセルの補間としてバイリニア補間などを行う。
【0043】
また本実施形態では、テクスチャマッピングとして、LUT記憶部175に記憶されるインデックスカラー・テクスチャマッピング用のカラールックアップテーブル(CLUT)を用いたテクスチャマッピングを行うこともできる。この場合には、元画像の各ピクセルの相対位置あるいは元画像を分割した分割ブロックの各ピクセルの相対的位置に基づいて定められる番号(色)をインデックス番号(インデックス色)として設定したインデックステクスチャを、インデックス番号と画像情報(R成分、G成分、B成分、A成分(α成分))とを対応づけるカラールックアップテーブルを参照しながら、仮想オブジェクト(表示画面サイズのポリゴン、分割ブロックサイズのポリゴン)に対してテクスチャマッピングを行う。ピクセル入れ替え処理を行う場合には、元画像あるいは元画像の分割ブロックに対応するインデックステクスチャの各テクセルに与えられたインデックス番号を入れ替えるためのインデックステクスチャを用意し、そのインデックステクスチャをカラールックアップテーブルを参照しながら仮想オブジェクトにテクスチャマッピングすることによってピクセル入れ替え画像(フィルタ画像)を生成することができる。
【0044】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ178(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ174に格納されるZ値を参照する。そして参照されたZバッファ174のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ174のZ値を新たなZ値に更新する。
【0045】
αブレンディングとしては、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)を行う。例えば通常αブレンディングの場合には下式(1)〜(3)の処理を行う。
【0046】
=(1−α)×R+α×R (1)
=(1−α)×G+α×G (2)
=(1−α)×B+α×B (3)
また、加算αブレンディングの場合には下式(4)〜(6)の処理を行う。なお単純加算の場合はα=1として下式(4)〜(6)の処理を行う。
【0047】
=R+α×R (4)
=G+α×G (5)
=B+α×B (6)
また、減算αブレンディングの場合には下式(7)〜(9)の処理を行う。なお単純減算の場合はα=1として下式(7)〜(9)の処理を行う。
【0048】
=R−α×R (7)
=G−α×G (8)
=B−α×B (9)
ここで、R、G、Bは、描画バッファ172に既に描画されている画像(元画像)のRGB成分であり、R、G、Bは、描画バッファ172に描画すべき画像のRGB成分である。また、R、G、Bは、αブレンディングにより得られる画像のRGB成分である。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0049】
そして本実施形態では、描画部120が、移動体オブジェクト及び鏡像オブジェクトを描画した後に半透明オブジェクトを描画した元画像に対してフィルタ処理を行う。フィルタ処理としては、ぼかし処理やピクセル入れ替え処理等を行うことができ、その際に元画像に対応するフィルタ画像を生成して、元画像とフィルタ画像とを合成することにより元画像に対してフィルタ処理を施すことができる。元画像とフィルタ画像との合成手法としては、αブレンディング(通常αブレンディング、加算αブレンディング、減算αブレンディング)やαテストを用いた半透明描画などがある。
【0050】
また本実施形態では、描画部120が、半透明オブジェクトを移動体オブジェクト及び鏡像オブジェクトを含むオブジェクト群とは異なるα値で描画する。そして描画部120は、元画像のαプレーンに設定されたα値をマスク情報として用いたフィルタ処理を行うことができる。これにより元画像の所与の描画領域にのみフィルタ処理の効果が付加された画像を生成することができる。すなわち元画像に対して部分フィルタ処理を施すことができる。
【0051】
元画像のαプレーンに設定されるα値をマスク情報となるように描画する手法としては、半透明オブジェクトの頂点の頂点色のα成分をα≧α1に設定し、他のオブジェクト(移動体オブジェクト、鏡像オブジェクト等)の頂点の頂点色のα成分をα<α1に設定しておく手法、半透明オブジェクトにマッピングされるテクスチャのαプレーンにα≧α1を設定し、他のオブジェクト(移動体オブジェクト、鏡像オブジェクト等)にマッピングされるテクスチャのαプレーンにα<α1を設定しておく手法、あるいは半透明オブジェクトの頂点色のα成分と、その半透明オブジェクト用のテクスチャのαプレーンに設定されたα値を乗算した値αがα≧α1となるように設定し、他のオブジェクト(移動体オブジェクト、鏡像オブジェクト等)の頂点色のα成分と、他のオブジェクト用のテクスチャのαプレーンに設定されたα値を乗算した値がα<α1となるように設定しておく手法等がある。オブジェクトの頂点色のα成分にマスク情報を設定した場合、そのオブジェクトデータは、オブジェクトデータ記憶部176に記憶される。テクスチャのαプレーンにマスク情報を設定した場合、オブジェクトにマッピングされるテクスチャは、テクスチャ記憶部173に記憶される。
【0052】
また描画部120は、フィルタ処理の内容に応じて元画像のαプレーンに設定されたマスク情報(α値)の使い方を切り替えている。
【0053】
例えば、ぼかし処理を含むフィルタ処理(第1のフィルタ処理)を行う場合には、元画像のうち半透明オブジェクトの描画領域のみを、元画像のαプレーンに設定されたα値をマスク情報としてコピーしたワーク画像を生成し、そのワーク画像に基づいてフィルタ画像を生成し、元画像とフィルタ画像とを合成する処理を行う。
【0054】
また例えば、ピクセル入れ替え処理を含むフィルタ処理(第2のフィルタ処理)を行う場合には、元画像の全体をコピーしたワーク画像に基づいてフィルタ画像を生成し、フィルタ画像のうち半透明オブジェクトの描画領域のみを、元画像のαプレーンに設定されたα値をマスク情報として元画像に合成する処理を行う。
【0055】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0056】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0057】
次に本実施形態の手法について図面を用いて説明する。なお以下では、グレアを表現するためのフィルタ処理、あるいはさざ波などの揺らぎを表現するためのフィルタ処理に関して本実施形態の手法を採用した場合について主に説明するが、本実施形態の手法は、このようなフィルタ処理のみならず、種々のフィルタ処理に適用できる。
【0058】
2.1 鏡像オブジェクトの配置設定手法
本実施形態では、移動体オブジェクトがフィルタ処理の対象となる半透明オブジェクトに映り込む映り込みイベントが発生した場合に、移動体オブジェクトを所与の基準面に対してフリップさせた位置に、移動体オブジェクトの鏡像オブジェクトをオブジェクト空間に配置設定する手法を採用している。以下では、図2に示すように、オブジェクト空間内に、地形オブジェクトGOB、移動体オブジェクトPOB、及び水面オブジェクトWOBが配置設定されている場合を例にして説明する。図2に示すオブジェクト空間では、移動体オブジェクトPOBは地形オブジェクトGOBの上を自由に移動でき、水面オブジェクトWOBは半透明オブジェクトとして配置されている。すなわち、移動体オブジェクトPOBが水面オブジェクトWOBで表現される水面の水際に移動してくると、移動体オブジェクトPOBが水面オブジェクトWOBに映り込むイベント(映り込みイベント)が発生する。なお本実施形態の手法は、水面への映り込みのみならず、例えば、大理石への映り込みや、鏡への映り込みなどにも適用できる。
【0059】
本実施形態では、図3(A)に示すように、映り込みイベントが発生するか否かを移動体オブジェクトPOBを内包するバウンディングボリュームVlmと仮想カメラVCの視線ベクトルVcを仮想反射面オブジェクトROBで反射させた反射視線ベクトルVrとの交差判定によって行っている。そして反射視線ベクトルVrがバウンディングボリュームVlmと交差すると判断される場合には、移動体オブジェクトPOBを所与の基準面に対してフリップさせ、そのフリップした位置に移動体オブジェクトに対応する鏡像オブジェクトMOBを配置設定している。この場合、基準面は、例えば、仮想反射面オブジェクトROBの面の延長上にある面(延長面)とすることができる。
【0060】
仮想反射面オブジェクトROBは、複数の矩形(長方形、正方形)のプリミティブ面からなり、水面オブジェクトWOBと地形オブジェクトGOBとの境界領域(水際)に配置されている。すなわち仮想反射面オブジェクトROBは、移動体オブジェクトPOBの映り込みが発生する可能性がある領域に水面オブジェクトWOBの一部の領域にオーバーラップさせて配置してある。なお仮想反射面オブジェクトはオブジェクト空間に配置設定されるが描画されないオブジェクトとして扱われる。
【0061】
反射視線ベクトルVrの交差判定用のバウンディングボリュームVlmは、球形のバウンディングスフィアとしている。バウンディングスフィアの代わりに、移動体オブジェクトPOBを内包するバウンディングボックス、円柱、四角錐等を設定するようにしてもよい。
【0062】
そして反射視線ベクトルVrとバウンディングスフィア(バウンディングボリュームVlm)との交差判定は、例えば、図3(B)に示すように、反射視線ベクトルVrの延長線分とバウンディングスフィアの中心Cとの距離dが、バウンディングスフィアの半径rより短い場合(d<r)には、両者が交差すると判定し、移動体オブジェクトの半透明オブジェクトへの映り込みが発生すると判断することができる。また例えば、図3(C)に示すように、反射視線ベクトルVrの延長線分とバウンディングスフィアの中心Cとの距離dが、バウンディングスフィアの半径rより長い場合(d>r)には、両者は交差しないと判断することができる。本実施形態では、このようにして簡便に移動体オブジェクトPOBの映り込みイベントが発生するか否かを判定することができる。なお反射視線ベクトルVrと物体(オブジェクト)との交差を、仮想カメラVC(視点)から一定の距離より遠くの物体については検知しないようにしてもよい。
【0063】
そして移動体オブジェクトPOBの映り込みイベントが発生すると判断されたら、移動体オブジェクトPOBをフリップした位置に鏡像オブジェクトMOBを配置設定して描画する。鏡像オブジェクトMOBの配置設定は、移動体オブジェクトPOBのローカルマトリックスMoと、オブジェクトを基準面に垂直にフリップさせるフリップマトリックスMfaを乗算して得られるマトリクッスMfa×Moを、鏡像オブジェクトMOBのローカルマトリクスMrとしてワールド座標系に座標変換を行うことにより実現することができる。
【0064】
なお、オブジェクト空間内で固定的に配置されるオブジェクト(固定オブジェクト)は、鏡面位置(基準面に対してフリップした位置)にフリップしたものを予め配置しておくことができる。移動体オブジェクトPOBはオブジェクト空間内で動くことができるので鏡像オブジェクトMOBを予め固定的に配置しておくことができないため、本実施形態のように映り込みを都度判定して、鏡像オブジェクトMOBの配置設定を行う必要がある。また鏡像オブジェクトMOBは、移動体オブジェクトPOBをローカルマトリックス変換で配置設定した3Dオブジェクトなので、移動体オブジェクトPOBの動きに合わせてモーションさせることができる。
【0065】
また仮想反射面オブジェクトROBは複数のプリミティブ面から構成することができ、仮想カメラVCからの視線ベクトルとの交点を持たないプリミティブ面については、反射視線ベクトルVrの計算処理を省略して、処理負荷を軽くすることができる。またオブジェクト空間内に配置されるオブジェクト毎に映り込みの許可・不許可ができるようにしておいてもよい。この場合においても、許可されていないオブジェクト(映り込み不許可オブジェクト)については、反射視線ベクトルVrとの交差判定を省略することができる。
【0066】
2.2 本実施形態のフィルタ手法
本実施形態では、図4(A)に示すような元画像のαプレーンに設定されたα値をマスク情報として扱って、元画像のうちフィルタ処理対象となる水面オブジェクトWOBの描画領域に選択的にフィルタ処理を施すことにより、図4(B)あるいは図4(C)に示すように、半透明オブジェクトである水面オブジェクトWOBに映り込んだ移動体オブジェクトPOBの鏡像オブジェクトMOBにもフィルタ処理の効果が反映された画像が生成されるフィルタ手法を採用している。なお図4(B)では、揺らぎフィルタ処理が施されており、図4(C)では、グレアフィルタ処理が施されている。
【0067】
*揺らぎフィルタの手法
図5(A)〜図5(C)に、揺らぎフィルタ処理を行う場合のフィルタ画像の生成過程を示す。
【0068】
具体的には、図5(A)及び図5(B)に示すように、フィルタ処理を施す元画像(図5(B))を生成する際に、移動体オブジェクトPOBの鏡像オブジェクトMOBを描画してから、水面オブジェクトWOBを描画している。またフィルタ処理の対象である水面オブジェクト(フィルタ処理対象オブジェクト)WOB(α=α1)を地形オブジェクトGOB(α=α2)、や移動体オブジェクトPOB(α=α3)とは異なるα値で描画している。図5(A)に示すように、鏡像オブジェクトMOBについては当初、移動体オブジェクトPOBと同様のα値(α=α3)で描画されるが、図5(B)に示すように、水面オブジェクトWOBが描画される際に、α値が上書きされて水面オブジェクトWOBと鏡像オブジェクトMOBとがオーバーラップして描画される領域のα値は水面オブジェクトWOBのα値(α=α1)で描画される。
【0069】
そして本実施形態では、αテストによりα≧α1の領域にだけ図5(C)に示すフィルタ画像が合成(半透明描画)されるようにすることで、図4(B)に示すように、フィルタ処理の対象である鏡像オブジェクトMOBが含まれる水面オブジェクトWOBの描画領域にだけフィルタ処理が施された画像を生成することができる。なお、図5(A)及び図5(B)に示す例では、オブジェクトの頂点色のα成分(A成分)にマスク情報となるα値を設定してある。すなわち、ジオメトリ処理後のオブジェクトデータによってマスク情報が得られるようになっている。このように本実施形態の揺らぎフィルタ手法では、ジオメトリ処理された半透明オブジェクトである水面オブジェクトWOBを描画するだけで、元画像のαプレーンにマスク情報を描き込むことができる。
【0070】
また本実施の形態では、ワーク画像に対してピクセル入れ替え処理を行って、図5(C)に示すフィルタ画像を生成している。このときインデックスカラー・テクスチャマッピングの手法を用いて、周期的にピクセル入れ替え距離が変動するピクセル入れ替え処理を行っている。
【0071】
具体的には、図6のA1に示すように、描画バッファに描画された元画像を複数の分割ブロックに分割して、その分割ブロック単位でピクセル入れ替え処理を行うことによって生成したフィルタ画像(フィルタ処理が施されたオブジェクトの画像)を元画像に合成(半透明描画)するフィルタ処理を行っている。
【0072】
このとき各分割ブロックは、例えば16×16ピクセルのサイズとし、図6のA2に示すように、この256個のピクセルをそれらの相対位置に基づいてインデックス化したカラールックアップテーブルとして扱うことができる。また図6のA3に示すように、カラールックアップテーブル(CLUT)とは別に分割ブロックの各ピクセルの位置をずらしたずらしテーブルを用意し、そのずらしテーブルをインデックステクスチャとして扱うことができる。ずらしテーブルでは、分割ブロックのピクセルの相対位置に基づいて定めたインデックス番号を分割ブロック内におけるピクセルの座標値として扱い、各ピクセルについてピクセル入れ替え距離ΔYだけずらした位置のピクセルのインデックス番号を設定する。
【0073】
そして、図6のA4に示すように、カラールックアップテーブルを参照しながら、分割ブロックサイズのポリゴン(仮想オブジェクト)に対して、ずらしテーブルに基づいて設定されたインデックステクスチャをテクスチャマッピングする。そして図6のA5に示すように、インデックステクスチャをテクスチャマッピングした分割ブロックサイズのポリゴンを元画像における対応位置に描画する。このようにすることで、元画像のピクセルを入れ替える処理を実現することができる。これらの処理を全ての分割ブロックに対して行って元画像に対応するフィルタ画像を生成することができる。最終的には、図6のA6に示すように、元画像にフィルタ画像を合成することで元画像に対してポストエフェクトを施すフィルタ処理を行うことができる。
【0074】
ところで本実施形態では、ピクセル入れ替えを行った図5(C)に示すフィルタ画像をワークバッファに作成している。この際、ワークバッファにフレームバッファに描画された元画像の全体をコピーすることが好ましい。これとは対照的に水面オブジェクトWOBの描画領域だけをワークバッファに描き込むという部分コピーをする手法が考えられるが、このようにすると、水面オブジェクトWOBの描画領域以外の色情報が失われてしまい、その状態でピクセル入れ替えを行うと、不自然な色のはみ出しがフィルタ画像に現れてしまう。このため、フレームバッファの元画像の全体をワークバッファにコピーして、そのコピー画像(ワーク画像)に対してピクセル入れ替え処理を行ってフィルタ画像を生成することにより、フィルタ画像において不自然な色のはみ出しが現れるという不都合を回避することができる。
【0075】
*グレアフィルタの手法
図7(A)〜図7(C)に、グレアフィルタ処理を行う場合のフィルタ画像の生成過程を示す。
【0076】
まず、図7(A)に示すように、オブジェクト空間内に配置された仮想カメラから見えるシーン(ビューボリューム内)に存在するオブジェクトをフレームバッファに描画する際に、フィルタ処理対象の半透明オブジェクトである水面オブジェクトWOBの描画領域がα1で描画され、地形オブジェクトGOBがα1より値の小さいα2で描画され、移動体オブジェクトPOBもα1より値の小さいα3で描画される。移動体オブジェクトPOBに対応する鏡像オブジェクトMOBと水面オブジェクトWOBとがオーバーラップする描画領域では、水面オブジェクトWOBが描画される際にα値がα1に書き換えられている。図7(A)に示す例では、オブジェクトの頂点色のα成分(A成分)にマスク情報となるα値を設定してある。すなわち、ジオメトリ処理後のオブジェクトデータによってマスク情報が得られるようになっている。
【0077】
そしてグレアフィルタをフレームバッファに描画された元画像に対して施す場合には、図7(B)に示すように、元画像のαプレーンに設定されたα値をマスク情報としてαテストを行い、α≧α1の描画領域だけをフレームバッファよりサイズの小さいワークバッファに縮小コピーする。このときワークバッファの画像情報はクリアしておく(黒く塗りつぶしておく)ことが必要である。図7(A)に示す例では、α≧α1となるのは、フィルタ処理の対象となる水面オブジェクトWOBと鏡像オブジェクトMOBとが含まれる描画領域だけであるので、図7(B)に示すように、水面オブジェクトWOBと鏡像オブジェクトMOBとが含まれる描画領域のみが縮小コピーされる。そして、ワークバッファに縮小コピーされた画像(ワーク画像)に対して色抽出処理とぼかし処理を行って、図7(C)に示すように、グレア表現用のフィルタ画像を生成することができる。
【0078】
ここで、色抽出処理としては、ワーク画像の各ピクセルから基準色より明るい色を抽出して、その差分の色情報を得る処理を行う。例えば、図8のB1に示すように、基準色C1が頂点色に設定された単色の仮想ポリゴン(単色ポリゴン)を用意して、この単色ポリゴンをワークバッファに減算半透明で描画を行う。これにより図8のB2に示すように、ワーク画像の任意のピクセルPの色をC2とすると、単色ポリゴンを減算半透明で描画した後のワークバッファに作成される色抽出画像のピクセルPの色は、C2−C1となる。すなわち、色抽出画像では、基準色より暗い色は、黒にクランプされ、基準色より明るい色については、その差分の色となる。このようにある基準色より明るい色だけを求めることで、グレアのかかりやすい領域を特定することができる。
【0079】
またぼかし処理としては、画像の縮小・拡大を繰り返すことによりバイリニアフィルタ方式で各ピクセルの色情報を補間させて画像をぼかす手法や、バイリニアフィルタ方式でテクスチャ座標をずらしながらテクスチャマッピングを行うことで各ピクセルの色情報を補間させて画像をぼかす手法などがある。ぼかし処理の手法は、上記のものには限られず、種々の手法を採用することができる。例えば、バイリニアフィルタ方式でのテクスチャマッピングにより画像をぼかす手法は、図9のD1に示すようにワークバッファのワーク画像をテクスチャとして設定して、そのテクスチャをワークバッファサイズの仮想ポリゴンにテクスチャ座標をずらしながらマッピングすることで実現される。例えば、図9のD2に示すように、テクスチャ座標をX方向(横方向)にシフトさせてワーク画像に基づくテクスチャを仮想ポリゴンにテクスチャマッピングしたり、図9のD3に示すように、テクスチャ座標をY方向(縦方向)にシフトさせてワーク画像に基づくテクスチャを仮想ポリゴンにテクスチャマッピングしたりすることでワークバッファの各ピクセルの色情報がバイリニアフィルタ方式で補間されて画像がぼけるようになる。このとき図9のD2に示す処理及びD3に示す処理を繰返し行うことで、画像のぼかし具合をより強くすることができる。
【0080】
そして本実施形態のグレアフィルタ手法では、ワーク画像に対して色抽出処理とぼかし処理を行ってワークバッファに作成した図7(C)に示すフィルタ画像を図7(A)に示すフレームバッファの元画像に加算合成することで、元画像のうち水面オブジェクトWOBと鏡像オブジェクトMOBとが含まれる描画領域付近にのみグレア処理が施された図4(C)に示したような画像を生成することができる。なお元画像とフィルタ画像との加算合成は、加算αブレンディングにより行うことができる。また本実施形態のグレアフィルタ手法を元画像とフィルタ画像との合成手法を通常αブレンディングによって行えば、フィルタ処理によるソフトフォーカス表現に適用することができる。
【0081】
2.3 フィルタ強度パラメータの設定手法
本実施形態では、仮想カメラの視点位置、視線方向、および画角の少なくとも一つが変化したと判断される場合に、すなわち仮想カメラが移動、回転、ズーム、あるいはパンなどをする場合に、フィルタ処理のフィルタ強度パラメータを設定変更する手法を採用する。
【0082】
ここで、本実施形態のフィルタ処理がピクセル入れ替え処理を含む場合に、そのピクセル入れ替え処理におけるピクセル入れ替え距離ΔYを図10に示すような周期関数に基づいて設定している。すなわちインデックステクスチャに設定されるずらしテーブルを、周期的に変化するピクセル入れ替え距離ΔYに応じて書き換えている。なおピクセル入れ替え距離ΔYを周期的に変化させた複数枚のインデックステクスチャを予め用意しておいてもよい。その周期関数は下式(A)で表される。
【0083】
ΔY=Asin(ωt+f(x,y)) (A)
図10に示すように、Aは振幅成分パラメータである。ωは周波数成分パラメータである。f(x,y)は、分割ブロック内でのピクセルの位置に基づいて決定される初期位相パラメータである。これらのパラメータのうちフィルタ処理の強さに大きく関連するパラメータは振幅成分パラメータAと周波数成分パラメータωである。振幅成分パラメータAが大きいと、ピクセル入れ替え距離ΔYが大きくなり、揺らぎが大きくなる。また周波数成分パラメータωが小さいと、ピクセル入れ替え周期2π/ωが短くなるため、揺らぎの速度が速くなり単位時間あたりの揺らぎが大きくなる。
【0084】
また本実施形態では、図11に示すように、オブジェクト空間内を移動する移動体オブジェクトOBに対して仮想カメラVCの注視点VPが設定されており、移動体オブジェクトOBが移動すると、仮想カメラVCの注視点VPもオブジェクト空間内を移動する。仮想カメラVCは、注視点VPを向くように視線方向が制御される。このため、移動体オブジェクトOBが移動して注視点VPの位置(ワールド座標系の3次元座標)が変更されると、仮想カメラVCから見えるシーンは異なるものとなる。
【0085】
ところで本実施形態で採用している元画像へのフィルタ処理は、2次元的なピクセル加工処理であるため、仮想カメラの視点位置、視線方向、画角等の変化とは無関係なものである。このため、時間パラメータに応じてその効果が変動するようなフィルタ処理であると、仮想カメラの移動による画像情報の変動とフィルタ処理の効果による画像情報の変動とが干渉を起こしてしまい、ある種のエイリアスのようなものが見えてしまうという不都合が生じうる。
【0086】
そこで本実施の形態では、仮想カメラVCの注視点VPの移動距離Lに応じてフィルタ処理の強さ、すなわちフィルタ処理の元画像への影響度を決定するフィルタ強度パラメータを設定変更し、フィルタ処理の効果が弱まるように制御している。
【0087】
例えば、ピクセル入れ替え処理を伴う揺らぎフィルタ処理を元画像に対して行う場合には、図10に示した周期関数の振幅成分パラメータAを小さくすることで、ピクセル入れ替え距離ΔYを短く抑えて揺らぎを小さくすることができる。また周波数成分パラメータωを大きくすることによっても単位時間当たりの揺らぎの変化が小さくなるので、フィルタ処理の効果を弱めることができる。もちろん、振幅成分パラメータAを小さくするとともに、周波数成分パラメータωを大きくすることが効果的であることはいうまでもない。
【0088】
またこのようにフィルタ強度パラメータを変更するということは、生成される画像の見栄え変わるということである。このため、フィルタ強度パラメータが頻繁に変更されると、逆に見づらい画像となってしまうおそれもある。このため本実施形態では、図12に示すように、仮想カメラVCの注視点VPの移動距離Lが所与のしきい値Lthを超えると判断される場合に、振幅成分パラメータAを第1の振幅レベルA1から第1の振幅レベルA1より低い第2の振幅レベルA2へ設定変更するようにしている。またいったん注視点VPの移動距離Lがしきい値Lthを上回った後に、しきい値Lthを下回るように推移した場合には、第2の振幅レベルA2から第1の振幅レベルA1へ振幅パラメータAを戻すようにしている。なお第1の振幅レベルA1から第2の振幅レベルA2の変化及び第2の振幅レベルA2から第1の振幅レベルA1への変化は、連続的に目的のレベルへ近づけるようにしている。これにより急激に画像の見栄えが変わってしまうことを防いでいる。また振幅パラメータAを第2の振幅レベルA2から第1の振幅レベルA1へと戻すまでの時間t2を第1の振幅レベルA1から第2の振幅レベルA2へ変化させるまでの時間t1よりも短くしている。揺らぎフィルタ処理を元画像に対して定常的に行う場合には、本来の状態にいち早く戻すことが好ましいからである。
【0089】
以上に述べたように本実施形態のフィルタ強度パラメータの設定手法によれば、フィルタ処理の元画像への影響度を適切に調整することができる。このため本手法によれば、フィルタ処理後の画像が見栄えの悪い不自然なものとなることを防止することができ、高品質な映像を作成することができるようになる。特に本実施形態の手法は、時間経過に応じてフィルタ処理の効果が変化する場合に好適である。
【0090】
3.本実施形態の処理
次に、本実施形態の詳細な処理例について図13〜図15のフローチャートを用いて説明する。
【0091】
はじめに図13のフローチャートを用いて説明する。
【0092】
まず、移動体オブジェクトの描画を行う(S10)。続いて、計算すべき反射視線ベクトルの有無を確認する(ステップS11)。すなわち、仮想反射面オブジェクトが仮想カメラの視線ベクトルとの交点を持つ場合には、計算すべき反射視線ベクトルが存在すると判断される。この処理は、仮想反射面オブジェクトを構成する全てのプリミティブ面について行い、視線ベクトルとの交点を持たないプリミティブ面については、反射視線ベクトルの計算処理を省略することができる。
【0093】
次に、計算すべき反射視線ベクトルが存在すると判断されたら(ステップS11でYES)、反射視線ベクトルと移動体オブジェクトを内包するバウンディングスフィアとの交差判定を行う(ステップS12)。すなわち、図3(A)〜図3(C)において説明してように、反射視線ベクトルの延長線分とバウンディングスフィアの中心との間の距離とバウンディングスフィアの半径とを比較して、反射視線ベクトルがバウンディングスフィアとの交点を持つか否かを判断する。そして、反射視線ベクトルとバウンディングスフィアとが交差していると判断されたら(ステップS13でYES)、移動体オブジェクトを仮想反射面オブジェクトの面を延長した面を基準面としてフリップさせた鏡像オブジェクトを配置設定して描画する(ステップS14)。
【0094】
その後半透明オブジェクトを描画して元画像を生成し(ステップS15)、生成された元画像に対してフィルタ処理を行う(ステップS16)。
【0095】
次に図14のフローチャートを用いて、図13のステップS16のフィルタ処理として揺らぎフィルタ処理を行う場合を説明する。
【0096】
まず、さざ波が起きる領域のα値がα1(例えば128)以上、さざ波が起きない領域のα値がα1未満となるように仮想カメラから見たシーンをフレームバッファに描画して元画像を生成する(ステップS20)。
【0097】
次に、仮想カメラの位置、方向、画角等の変化情報に基づいて、波を強めるべきか(波面の動きが大きくなるのか)、波を弱めるべきか(波面の動きが小さくなるのか)を決定する(ステップS21)。例えば、仮想カメラの注視点の移動距離がしきい値を超えていれば、波を弱めるべきであると判断する。また例えば、仮想カメラの注視点の移動距離がしきい値を超えていた状態からしきい値を下回るように推移した場合には、波を強めるべきであると判断する。
【0098】
次に、フィルタ強度パラメータの設定処理を行う。具体的には、波面の動きが大きなさざ波の場合の波の強さレベル(第1のレベル)と波面の動きが小さなさざ波の場合の波の強さレベル(第2のレベル)とを予め設定しておき、現在の波の強さレベルと目的値とを比較することによって、現在の波の強さレベルが目的とする波の強さレベルと異なっていると判断される場合には、波の強さの値(周期関数の振幅成分パラメータあるいは周波数成分パラメータ)を目的値(第1のレベルあるいは第2のレベル)に近づける処理を行う(ステップS22)。
【0099】
次に、ステップS22で設定された波の強さレベルに基づいて、ピクセルの各点の位置座標をずらすためのテーブルデータ(ずらしテーブル)を作成する(ステップS23)。このテーブルデータは、インデックスカラー・テクスチャマッピングにおいて、インデックステクスチャとして扱われる。
【0100】
次に、フレームバッファ(表示画面)の1/2サイズのワークバッファ(縮小バッファ)を用意し、そのワークバッファに画面全体(元画像)を縮小コピーする(ステップS24)。
【0101】
次に、ワークバッファに縮小コピーされた画面(ワーク画像)を16×16(ピクセル)のサイズのブロックに分割し、各分割ブロックを、ブロック内の相対的位置によってインデックス化された256個のカラールックアップテーブル(CLUT)とみなして、インデックスカラー・テクスチャマッピング用のカラールックアップテーブルとして設定する(ステップS25)。
【0102】
次に、ピクセルの位置座標をずらすテーブルデータを256色のインデックステクスチャとみなして、各分割ブロックに対応する位置にインデックステクスチャを、ステップS15で設定されたカラールックアップテーブルを参照しながらテクスチャマッピングしたポリゴン(仮想オブジェクト)を描画する(ステップS26)。これによりワークバッファにフィルタ画像が作成される。
【0103】
次にピクセル入れ替え処理の済んだ画像(フィルタ画像)を格納するワークバッファをフレームバッファのサイズに拡大してフレームバッファに書き込む(ステップS27)。このときαテストを用いて、α値ビット列の最上位ビットの状態を判定して、α値がα1(例えば128)以上のピクセルにだけワークバッファに格納された画像を拡大した画像のピクセルを半透明描画によりフレームバッファの元画像に合成する。
【0104】
次に図15のフローチャートを用いて、図13のステップS16のフィルタ処理としてグレアフィルタ処理を行う場合を説明する。
【0105】
まず、グレアが起きる領域のα値がα1(例えば128)以上、グレアが起きない領域のα値がα1未満となるように仮想カメラから見たシーンをフレームバッファに描画して元画像を生成する(ステップS30)。
【0106】
次に、フレームバッファの1/2のサイズのワークバッファ(第1のワークバッファ)WB1をクリアする。すなわちワークバッファWB1を黒色(R,G,B)=(0,0,0)に塗りつぶしておく(ステップS31)。
【0107】
次に、ワークバッファWB1にフレームバッファの元画像を縮小コピーする(ステップS32)。その際に、αテストを用いてα値ビット列の最上位ビットの状態を判定して、α値がα1(例えば128)以上のピクセルにだけワークバッファに縮小コピーする部分縮小コピーを行う。そして、ワークバッファWB1に、単色ポリゴンの画像を減算合成する(ステップS33)。すなわち図3で説明した色抽出処理により色の強さの低い成分が落とされる。
【0108】
次に、フレームバッファの1/4のサイズのワークバッファ(第2のワークバッファ)WB2にワークバッファWB1の画像を縮小コピーする(ステップS34)。そして図9のD1,D2において説明した手法を利用して、ワークバッファWB2の画像を横にずらした画像をワークバッファWB2に加算合成して、横方向(X方向)に画像をぼかす処理を行う(ステップS35)。さらに、図9のD1,D3において説明した手法を利用して、ワークバッファWB2の画像を縦にずらした画像をワークバッファWB2に加算合成して、縦方向(Y方向)に画像をぼかす処理を行う(ステップS36)。
【0109】
次に、フレームバッファの1/8のサイズのワークバッファ(第3のワークバッファ)WB3にワークバッファWB2の画像を縮小コピーする(ステップS37)。そしてステップS35と同様の手法で、ワークバッファWB3の画像を横にずらした画像をワークバッファWB3に加算合成して、横方向(X方向)に画像をぼかす処理を行う(ステップS38)。さらに、ステップS36と同様の手法で、ワークバッファWB3の画像を縦にずらした画像をワークバッファWB3に加算合成して、縦方向(Y方向)に画像をぼかす処理を行う(ステップS39)。
【0110】
次に、ワークバッファWB2の画像をフレームバッファのサイズに拡大して、その拡大された画像を適当な係数(第1のα値)を掛けてフレームバッファに加算合成する(ステップS40)。またワークバッファWB3の画像をフレームバッファのサイズに拡大して、その拡大された画像を適当な係数(第2のα値)を掛けてフレームバッファに加算合成する(ステップS41)。
【0111】
4.ハードウェア構成
図8に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ900は、DVD982(情報記憶媒体。CDでもよい。)に格納されたプログラム、通信インターフェース990を介してダウンロードされたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、マトリクス演算(ベクトル演算)を高速に実行する。例えばオブジェクトを移動させたり動作(モーション)させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0112】
ジオメトリプロセッサ904は、メインプロセッサ900上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ906は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセラレートする。これにより、オープニング画面やゲーム画面において、MPEG方式等で圧縮された動画像を表示できる。
【0113】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データ(頂点データや他のパラメータ)を描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。また描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエイリアシング、シェーディング処理なども行う。1フレーム分の画像がフレームバッファ922に書き込まれるとその画像はディスプレイ912に表示される。
【0114】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942やメモリカード944からのデータはシリアルインターフェース940を介して入力される。
【0115】
ROM950にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納される。なおROM950の代わりにハードディスクを利用してもよい。RAM960は各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ間でのDMA転送を制御する。DVDドライブ980(CDドライブでもよい。)は、プログラム、画像データ、或いは音データなどが格納されるDVD982(CDでもよい。)にアクセスする。通信インターフェース990はネットワーク(通信回線、高速シリアルバス)を介して外部との間でデータ転送を行う。
【0116】
なお本実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0117】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0118】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。また鏡像オブジェクトの配置設定手法、グレアフィルタの手法、揺らぎフィルタの手法等は、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。
【0119】
また本発明は種々のゲーム(格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等)に適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【0120】
【図1】本実施形態の画像生成システムの機能ブロック図。
【図2】本実施形態の手法の説明図。
【図3】図3(A)〜図3(C)は本実施形態の手法の説明図。
【図4】図4(A)〜図4(C)は本実施形態の手法の説明図。
【図5】図5(A)〜図5(C)は本実施形態の手法の説明図。
【図6】本実施形態の手法の説明図。
【図7】図7(A)〜図7(C)は本実施形態の手法の説明図。
【図8】本実施形態の手法の説明図。
【図9】本実施形態の手法の説明図。
【図10】本実施形態の手法の説明図。
【図11】本実施形態の手法の説明図。
【図12】本実施形態の手法の説明図。
【図13】本実施形態の具体的な処理例を示すフローチャート。
【図14】本実施形態の具体的な処理例を示すフローチャート。
【図15】本実施形態の具体的な処理例を示すフローチャート。
【図16】ハードウェア構成例。
【符号の説明】
【0121】
POB 移動体オブジェクト、WOB 水面オブジェクト(半透明オブジェクト)、
MOB 鏡像オブジェクト、GOB 地形オブジェクト、
VC 仮想カメラ、Vc 視線ベクトル、Vr 反射視線ベクトル、
Vlm バウンディングボリューム、
100 処理部、
110 オブジェクト空間設定部、111 鏡像オブジェクト設定部、
112 移動・動作処理部、114 仮想カメラ制御部、116 イベント判定部、
118 パラメータ設定部、120 描画部、130 音生成部、
160 操作部、170 記憶部、
171 主記憶部、172 描画バッファ、173 テクスチャ記憶部、
174 Zバッファ、175 LUT記憶部、176 オブジェクトデータ記憶部、
180 情報記憶媒体、190 表示部、192 音出力部、
194 携帯型情報記憶装置、196 通信部

【特許請求の範囲】
【請求項1】
オブジェクト空間における仮想カメラから見た画像を生成するためのプログラムであって、
移動体オブジェクトがフィルタ処理の対象となる半透明オブジェクトに映り込む映り込みイベントが発生したか否かを判定するイベント判定部と、
前記映り込みイベントが発生したと判定された場合に、移動体オブジェクトを所与の基準面に対してフリップさせた位置に該移動体オブジェクトの鏡像オブジェクトを配置設定する鏡像オブジェクト設定部と、
前記移動体オブジェクト及び前記鏡像オブジェクトを描画した後に前記半透明オブジェクトを描画した元画像に対してフィルタ処理を行う描画部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記オブジェクト空間に前記半透明オブジェクトに対応した仮想反射面オブジェクトが配置設定されており、
前記イベント判定部が、
前記仮想カメラの視線ベクトルを前記仮想反射面オブジェクトで反射させた反射視線ベクトルと前記移動体オブジェクトとの交差判定を行って、前記映り込みイベントが発生したか否かを判定することを特徴とするプログラム。
【請求項3】
請求項1において、
前記オブジェクト空間に前記半透明オブジェクトに対応した仮想反射面オブジェクトが配置設定されており、
前記イベント判定部が、
前記移動体オブジェクトを内包するバウンディングボリュームを設定し、前記仮想カメラの視線ベクトルを前記仮想反射面オブジェクトで反射させた反射視線ベクトルと前記バウンディングボリュームとの交差判定を行って、前記映り込みイベントが発生したか否かを判定することを特徴とするプログラム。
【請求項4】
請求項2または3において、
前記仮想反射面オブジェクトが複数のプリミティブ面に分割されており、
前記イベント判定部が、
前記視線ベクトルと交差しないプリミティブ面については、前記反射視線ベクトルの計算処理を省略することを特徴とするプログラム。
【請求項5】
請求項1〜4のいずれかにおいて、
前記描画部が、
前記半透明オブジェクトを前記移動体オブジェクト及び前記鏡像オブジェクトを含むオブジェクト群とは異なるα値で描画した前記元画像のαプレーンに設定されたα値をマスク情報として、前記画像に対してフィルタ処理を行うことを特徴とするプログラム。
【請求項6】
請求項5において、
前記描画部が、
前記元画像のうち前記半透明オブジェクトの描画領域のみを、前記元画像のαプレーンに設定されたα値をマスク情報としてコピーしたワーク画像を生成し、該ワーク画像に基づいてフィルタ画像を生成し、前記元画像と該フィルタ画像とを合成する前記フィルタ処理を行うことを特徴とするプログラム。
【請求項7】
請求項5において、
前記描画部が、
前記元画像をコピーしたワーク画像に基づいてフィルタ画像を生成し、該フィルタ画像のうち前記半透明オブジェクトの描画領域のみを、前記元画像のαプレーンに設定されたα値をマスク情報として元画像に合成する処理を行うことを特徴とするプログラム。
【請求項8】
請求項1〜7のいずれかにおいて、
所与の制御情報に基づいて仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラの制御情報に基づいて、前記仮想カメラの位置、方向、および画角の少なくとも一つが変化したと判断される場合に、前記フィルタ処理のフィルタ強度パラメータを変更するパラメータ設定部としてコンピュータを機能させることを特徴とするプログラム。
【請求項9】
請求項8において、
前記移動体オブジェクトに対して前記仮想カメラの注視点が設定され、
前記パラメータ設定部が、
前記移動体オブジェクトが前記オブジェクト空間内を移動することによって前記仮想カメラの注視点が移動した場合に、その移動距離に応じて前記フィルタ強度パラメータを変更することを特徴とするプログラム。
【請求項10】
コンピュータにより読取可能な情報記憶媒体であって、請求項1〜9のいずれかに記載のプログラムを記憶することを特徴とする情報記憶媒体。
【請求項11】
オブジェクト空間における仮想カメラから見た画像を生成するための画像生成システムであって、
移動体オブジェクトがフィルタ処理の対象となる半透明オブジェクトに映り込む映り込みイベントが発生したか否かを判定するイベント判定部と、
前記映り込みイベントが発生したと判定された場合に、移動体オブジェクトを所与の基準面に対してフリップさせた位置に該移動体オブジェクトの鏡像オブジェクトを配置設定する鏡像オブジェクト設定部と、
前記移動体オブジェクト、前記鏡像オブジェクト、及び前記半透明オブジェクトを描画する描画部と、
を含み、
前記描画部が、
前記移動体オブジェクト及び前記鏡像オブジェクトを描画した後に前記半透明オブジェクトを描画した元画像に対してフィルタ処理を行うことを特徴とする画像生成システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
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


【公開番号】特開2006−318388(P2006−318388A)
【公開日】平成18年11月24日(2006.11.24)
【国際特許分類】
【出願番号】特願2005−142821(P2005−142821)
【出願日】平成17年5月16日(2005.5.16)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】