説明

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

【課題】自然な画像を表現するために少ない処理負荷でぼかし画像を生成可能なプログラム、情報記憶媒体、及び、画像生成システムを提供する。
【解決手段】奥行き値D(各画素のZ値を0〜1の値域に正規化された前方クリッピング面からの距離)に基づいて、画素(レンダリングする点)とサンプリング点間の間隔を調整するためのぼかしパラメータZoomを求め、Zoomに基づきサンプリング点を求め、求めたサンプリング点に基づきぼかし処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体、及び、画像生成システムに関する。
【背景技術】
【0002】
従来から、複数のポリゴンが設定されるオブジェクト空間(仮想的な3次元空間)内において、仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
このような画像生成システムでは、プレーヤの仮想現実感の向上のために、被写界深度を表現した自然な画像を生成することが重要な技術的課題となっている。
【0004】
例えば、以下のように、従来から、ぼかし画像を生成する手法が知られている(特許文献1〜6)。
【0005】
(1)第1の手法(特許文献1)
第1の手法は、処理画素アドレスを順次更新して、ぼかし範囲や、ぼかし画素アドレスを計算し、分配係数を計算する等の処理を繰り返させ、処理が終了した後に、画素値バッファに格納された各画素値と、分配係数バッファに格納された各分配係数とから順次出力画像の各画素値を計算して出力する処理を行っている。
【0006】
つまり、第1の手法は、ぼかし範囲や分配係数等をセットアップしてから、輝度計算等を行うので、画素に対する処理が煩雑である。また、第1の手法は、ぼかし範囲である錯乱円を求めるための物理演算を要するので非常に処理負荷が高い。さらに、第1の手法は、画素値バッファや分配係数バッファを必要とするので、記憶領域を大量に要するという難点がある。
【0007】
(2)第2の手法(特許文献2)
第2の手法は、第1の手法と同様に、煩雑な処理を行うので処理負荷が高く、記憶領域を大量に要し、処理負荷が高いことが難点である。
【0008】
つまり、第2の手法は、全ての画素に対するぼかし範囲の大きさを求める計算が終了した後に、全画素に対するぼかし範囲の大きさを元に重み係数を計算して、出力画像の画素値計算を出力するので処理が煩雑である。
【0009】
また、第2の手法も、第1の手法と同様に、ぼかし範囲である錯乱円を求めるための物理演算を要するので非常に処理負荷が高い。また、ぼかし範囲バッファを必要とするので、記憶領域を大量に要するという難点がある。
【0010】
(3)第3の手法(特許文献3)
第3の手法は、画像の一部分を意図的にぼかすものであるので、自然な画像を生成することができない恐れがある。
【0011】
(4)第4の手法(特許文献4)
第4の手法は、各画素の奥行き値に基づいて、ぼかし対象となる画素を決定する処理、つまり、ぼかす画素なのか、ぼかさない画素なのかを判別する処理が必要になる。近年の画像生成システムでは、この分岐処理が原因で処理負荷が高くなる恐れがある。
【0012】
(5)第5の手法(特許文献5)
第5の手法は、各ピクセルの奥行きで2次元イメージを複数のゾーンに分割し、他のゾーンとの境界の任意の側のピクセルに対する奥行きに依存した畳み込みによりぼかし画像を生成するものである。
【0013】
しかし、第5の手法は、光学的な計算に基づきぼかしスポットサイズを求めて複数の奥行きゾーンへの分割処理を行うので処理負荷が高いという難点がある(特許文献5の0019〜0023段落等を参照)。
【0014】
(6)第6の手法(特許文献6)
第6の手法は、遠近情報(奥行き値)に対するカットオフ周波数を有するデジタルローパスフィルタによってぼかし画像を生成し遠近感を表現することができるものである。
【0015】
しかし、カットオフ周波数を求める処理が必要になり、第6の手法も演算数が多く処理負荷が高いという難点がある。
【特許文献1】特許第3008681号公報
【特許文献2】特許第2792376号公報
【特許文献3】特開第2001−143100号公報
【特許文献4】特開第2003−51024号公報
【特許文献5】特開第2005−25766号公報
【特許文献6】特許第3083995号公報
【発明の開示】
【発明が解決しようとする課題】
【0016】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、自然な画像を表現するために少ない処理負荷でぼかし画像を生成可能なプログラム、情報記憶媒体、及び、画像生成システムを提供することにある。
【課題を解決するための手段】
【0017】
(1)本発明は、
オブジェクト空間における仮想カメラから見える透視投影変換後の所与の画像に基づいてぼかし画像を生成するためのプログラムであって、
前記透視投影変換によって所定値域に正規化された奥行き値を有する前記画像において、画素の前記奥行き値に基づいて、画素のぼかしパラメータを求め、求めたぼかしパラメータに応じて画素周囲の複数のサンプリング点を決定する処理を行うサンプリング点決定部と、
前記サンプリング点の色を用いて平滑化処理を行い画素の色を決定する処理を行う平滑化処理部としてコンピュータを機能させ、
前記サンプリング点決定部が、
画素の奥行き値を所定指数で冪乗した演算値に基づいて、画素のぼかしパラメータを求めることを特徴とするプログラムに関する。
【0018】
また、本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成する画像生成システムに関係する。
【0019】
本発明によれば、オブジェクト空間における深度差を考慮した自然なぼかし画像を生成することができる。
【0020】
(2)また、本発明のプログラム、情報記憶媒体、画像生成システムは、
前記平滑化処理部が、
前記複数のサンプリング点のうち、画素の奥行き値にスケーリングパラメータを乗算した値と、サンプリング点の奥行き値との前後関係に応じて平滑化対象のサンプリング点を決定し、決定されたサンプリング点の色を平滑化して画素の色を決定してもよい。
【0021】
本発明によれば、より自然なぼかし画像を生成することができる。
【0022】
(3)また、本発明のプログラム、情報記憶媒体、画像生成システムは、
前記サンプリング点決定部が、
前記画素のぼかしパラメータが最低ぼかしパラメータを下回らないように、前記画素のぼかしパラメータを求めてもよい。
【0023】
本発明によれば、より顕著なアンチエイリアス効果を得ることができるぼかし画像を生成することができる。
【0024】
(4)また、本発明のプログラム、情報記憶媒体、画像生成システムは、
前記サンプリング点決定部が、
前記所与の画像の全画素毎に、画素周囲のサンプリング点を決定する処理を行い、
前記平滑化処理部が、
前記所与の画像の全画素毎に、平滑化処理を行い画素の色を決定する処理を行うようにしてもよい。
【0025】
本発明によれば、より自然なぼかし画像を生成することができる。
【発明を実施するための最良の形態】
【0026】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0027】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0028】
操作部160は、プレーヤがオブジェクト(プレーヤキャラクタ、移動体)の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【0029】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。
【0030】
なお、オブジェクトデータ記憶部176は、プレーヤの操作対象及び非操作対象のオブジェクト(プレーヤキャラクタや固定物等)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ、法線ベクトル、α値等)を記憶する。
【0031】
なお、操作部160は、加速度センサや撮像部、或いは角速度を検出するジャイロセンサを備えた入力機器によってプレーヤからの入力データ(操作データ)を入力できるものでもよい。例えば、入力装置は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力装置には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける(プレーヤが手に装着する)グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力装置には、入力装置と一体化されているゲーム装置、携帯型ゲーム装置、携帯電話なども含まれる。
【0032】
例えば、入力機器に加速度センサを備えている場合には、加速度センサは、3軸(X軸、Y軸、Z軸)の加速度を検出する。すなわち、加速度センサは、上下方向、左右方向、及び、前後方向の加速度を検出することができる。
【0033】
また、加速度センサは、1軸、2軸、6軸の加速度を検出するものであってもよい。なお、加速度センサから検出された加速度は、入力機器の通信部によってゲーム装置(本体装置)に送信される。
【0034】
また、入力機器に撮像部、赤外線フィルタ、レンズ、撮像素子(イメージセンサ)、画像処理回路を含む場合には次のように、撮像画像における光源の位置情報(特定位置)を検出してもよい。具体的には、赤外線フィルタは、入力装置の前方に配置され、表示部190に関連付けられて配置されている光源から入射する光から赤外線のみを通過させる。レンズは、赤外線フィルタを透過した赤外線を集光して撮像素子へ出射する。撮像素子は、例えば、CMOSセンサやCCDのような固体撮像素子であり、レンズが集光した赤外線を撮像して撮像画像を生成する。撮像素子で生成された撮像画像は、画像処理回路で処理される。例えば、撮像素子から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報(特定位置)を検出する。なお、光源が複数存在する場合には、撮像画像上の位置情報を検出する。また、検出した撮像画像上の位置情報は、通信部によって、本体装置に送信される。
【0035】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0036】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0037】
通信部196は外部(例えば他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0038】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信して画像生成システムを機能させる場合も本発明の範囲内に含む。
【0039】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0040】
この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0041】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、サンプリング点決定部116、平滑化処理部118、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0042】
オブジェクト空間設定部110は、キャラクタ、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義であり、例えば、ワールド座標系でのX、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0043】
移動・動作処理部112は、オブジェクト(キャラクタ、移動体等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)、物理法則などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0044】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、ワールド座標系における仮想カメラの位置(X、Y、Z)又は回転角度(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。
【0045】
例えば仮想カメラによりオブジェクト(例えばキャラクタ、移動体)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0046】
サンプリング点決定部116は、透視投影変換によって所定値域に正規化された奥行き値を有する前記画像において、画素の前記奥行き値に基づいて、画素のぼかしパラメータを求め、求めたぼかしパラメータに応じて画素周囲の複数のサンプリング点を決定する処理を行う。具体的には、サンプリング点決定部116は、画素の奥行き値を所定指数で冪乗した演算値に基づいて、画素のぼかしパラメータを求める。
【0047】
なお、透視投影変換は、ビュー座標系(視点座標系)におけるオブジェクトの頂点座標を、投影座標系(射影座標系)の頂点座標に変換する処理を行う。
【0048】
そして、透視投影変換によって所定値域に正規化された奥行き値とは、ビュー座標系のZ値を、透視投影変換によって変換された投影座標系でのZ値のことをいう。投影座標系でのZ値(奥行き値)は0〜1の範囲に設定される。つまり、ビュー座標系における前方クリッピング面のZ値=Znが投影座標系における奥行き値=0に設定され、ビュー座標系における後方クリッピング面のZ値=Zfが、投影座標系における奥行き値=1になる。要するに、画素の奥行き値は、画素に対応するオブジェクトの前方クリッピング面からの距離になる。
【0049】
また、サンプリング点決定部116は、画素のぼかしパラメータが最低ぼかしパラメータを下回らないように、画素のぼかしパラメータを求める。
【0050】
また、サンプリング点決定部116は、所与の画像の全画素毎に、画素周囲のサンプリング点を決定する処理を行う。つまりサンプリング点決定部116は、全画面処理を行うようにしてもよい。
【0051】
平滑化処理部118は、サンプリング点の色を用いて平滑化処理を行い画素の色を決定する処理を行う。平滑化処理とは、例えば、サンプリング点決定部116で算出された複数のサンプリング点、或いは、サンプリング点決定部116で算出された複数のサンプリング点と処理対象の画素(注目画素)を加算平均、加重平均する処理を行う。
【0052】
また、平滑化処理部118は、複数のサンプリング点のうち、画素の奥行き値にスケーリングパラメータを乗算した値と、サンプリング点の奥行き値との前後関係に応じて平滑化対象のサンプリング点を決定し、決定されたサンプリング点の色を平滑化して画素の色を決定してもよい。
【0053】
また、平滑化処理部118は、所与の画像の全画素毎に、平滑化処理を行い画素の色を決定する処理を行うようにしてもよい。つまり、平滑化処理部118は、全画面処理を行うようにしてもよい。
【0054】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0055】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、透視変換(投影変換)、ビューポート変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。
【0056】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0057】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0058】
そして描画部120は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0059】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、オブジェクトデータ記憶部176に保存される。
【0060】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0061】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ179(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ179に格納されるZ値を参照する。そして参照されたZバッファ179のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ179のZ値を新たなZ値に更新する。
【0062】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
【0063】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0064】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0065】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0066】
2.本実施形態の手法
本実施形態では、描画バッファに透視投影変換後の画像を描画し、描画された画素(ピクセル、ドット)毎に、画素周囲の複数のサンプリング点のカラーに基づき平滑化処理を行って出力カラーを決定して描画バッファに描画し、出力画像を生成するものである。つまり、本実施形態は、被写界深度によって生じるぼけに似た視覚効果をもたらし、奥行きに沿ってぼけが強くなるぼかし画像を生成するものである。
【0067】
なお、複数の描画バッファをメモリ(RAM、VRAM)に確保するようにしてもよい。例えば、解像度に応じた複数の描画バッファを確保するようにしてもよい。
【0068】
以下、本実施形態のぼかし処理におけるサンプリング点を求める手法、平滑化処理の手法について具体的に説明する。
【0069】
(1)サンプリング点を求める手法
従来では、描画された各画素のZ値、あるいは、深度値に基づいて、ぼかし画像を生成することが一般的であった。例えば、奥行き値に基づき注視点を含む範囲を被写界深度の範囲として設定し、被写界深度の範囲内のオブジェクトの画素に対して焦点が合うような画像を生成し、被写界深度の範囲外のオブジェクトの画素に対して、ぼけが生じるような画像を生成していた。
【0070】
しかし、通常、仮想カメラを基準とするビュー座標系を投影座標系に変換する処理では、仮想カメラから見て手前と後方とにおいて分解能を変更するように、投影座標系への変換処理がなされる。
【0071】
従って、図2に示すように、奥行き値D(各画素のZ値を0〜1の値域に正規化された前方クリッピング面からの距離)と、Z値(Z値は、仮想カメラを原点とするビュー空間のZ値)とでは双曲線Aを描く関係になる。
【0072】
例えば、ビュー座標系におけるビューボリュームの範囲が仮想カメラから12.5cm〜10kmであり、仮想カメラから10m〜20m前後に位置するオブジェクトの奥行き値Dが約0.990、背景(10km付近)における奥行き値Dが約0.999のように、近景であるオブジェクトの奥行き値Dと背景との奥行き値Dとの差が僅差になってしまい、単純に奥行き値Dに応じてぼかし処理を行うと、近景から背景(遠景)にかけて、ぼけが強くなる様子を表現できないという問題が生じてしまう。
【0073】
そこで、本実施形態では、奥行き値Dに基づいて、画素(レンダリングする点)とサンプリング点間の間隔を調整するためのぼかしパラメータZoomを求め、Zoomに基づきサンプリング点を求め、求めたサンプリング点に基づきぼかし処理を行っている。
【0074】
例えば、図3に示すように、描画対象の画素P0周囲のサンプリング点P1〜P4それぞれをZoomに基づきスケールし、サンプリング点P1〜P4の位置を決定する。つまり、図2に示す双曲線Aではなく、より緩やかな曲線B、C、D、Eを描くZoomを用いてサンプリング点を決定し、近景から背景にかけて、ぼけが増大するような画像を生成している。
【0075】
また、画素P0の点と各サンプリング点P1〜P4それぞれの距離は所定距離L(例えば1ドット)になるように予め設定されており、予め設定された各サンプリング点P1〜P4それぞれを、Zoomに基づきスケールする。
【0076】
なお、サンプリング点P1〜P4は、UV座標系における画素の配列に対して角度θ(0度<θ<90度)だけ傾けた位置に設定される。
【0077】
サンプリング点P1〜P4が、UV座標系における画素の配列に対して所定角度だけ傾けた位置に設定される理由は、自然なぼかし画像を生成するためである。例えば、画素の配列に平行な位置にサンプリング点を設定してしまうと、出力画像において矩形のぼけがいくつも生じているような画像が生成されてしまい、不自然な画像になってしまう。したがって、本実施形態では、画素の配列に対して、やや傾けた位置になるようサンプリング点を求めている。なお、画素の配列に対するサンプリング点の傾き度合いは、複数のサンプリング点それぞれにおいて互いに異ならせてもよいし、同一(一部同一)であってもよい。
【0078】
なお、本実施形態では、4つのサンプリング点を求めているが、システムの処理能力に応じてサンプリング点の個数を決定してもよい。例えば、サンプリング点の個数は2点、3点としてもよいし、5点以上としてもよい。
【0079】
次に、Zoomを求める手法について説明する。
【0080】
まず、描画する画素P0の奥行き値D0(0≦D0≦1)に基づいて、以下の数式1によって、Zoomを求めている。
【0081】
【数1】

つまり、Zoomは、奥行き値D0を指数POW(0<POW)で冪乗した計算結果であり、図2に示すように、奥行き値D0を示す曲線Aは、より緩やかな曲線B、C、D、Eに変換されるようになる。例えば、POWを大きな値にすればする程より緩やかな曲線に変換される。図2の例では、曲線BはPOW=56.0を設定した場合、曲線CはPOW=300.0を設定した場合、曲線DはPOW=1000.0を設定した場合、曲線EはPOW=5000.0を設定した場合である。
【0082】
本実施形態では、画像を生成するためにPOW=56.0を設定してZoomを求めているが、条件に応じて任意にPOWの値を設定してもよい。具体的には平滑化処理を行うことによって生じる出力画像のぼけ具合をPOWによって調整する。つまり、POWを大きな値にして、曲線Aの数値変化を緩やかにすることで、奥行きによるぼけの広がりを緩やかにすることができる。そのため、おおよそはっきりと映したい範囲と、その範囲よりも奥方向の範囲との間の奥行き値の差を反映したぼけを生じさせることができる。
【0083】
また、注視点の位置をはっきり映したい場合には、注視点の視点情報からZoomが所定値以下になるようにPOW値を逆算してもよい。
【0084】
さらに、本実施形態では、以下の数式2に示すように、奥行き値D0をPOW値で冪乗したZoomに、最低ぼかし量LOWを用いてZoomを求めている。なお、0≦LOW≦1、WIDTH=(1−LOW)である。
【0085】
【数2】

このように、Zoomに最低ぼかし量LOWを加算している理由は、最低限のぼかし処理を行うことで、仮想カメラに対して手前側に配置されるオブジェクトに対しても、アンチエイリアスの効果を得られるようにするためである。
【0086】
そして、数式2によって、最終的に求めたZoomの倍率で、サンプリング点P1(U1,V1)〜P4(U4,V4)(以下、点PNのUV座標値を(UN,VN)と表記する。)それぞれをスケールして、画素P0に対するサンプリング点P1〜P4の相対座標を決定する。
【0087】
つまり、Zoomが大きな値であればある程、画素とサンプリング点との距離は長くなり、Zoomが小さい値であればある程、画素とサンプリング点との距離は短くなる。したがって、Zoomに応じて、描画対象の画素のぼかし量も変化することになる。
【0088】
以上のように、本実施形態では、各画素において、画素P0のZoomを求め、Zoomに基づいてサンプリング点P1〜P4の相対座標を決定しているので、従来の手法ように、錯乱円を求める等の厳密な物理演算に基づきサンプリング点を求めたり、サンプリング点の個数を決定したりする場合に比較して、システムの処理負荷を抑えることができる。
【0089】
(2)平滑化処理
そして、本実施形態では、描画対象の画素のサンプリング点を求めた後に、続いて平滑化処理を行い、出力カラーを描画バッファに出力する処理を行う。
【0090】
図4(A)に示すように、本実施形態では、仮想カメラに対して第1のオブジェクトOB1と第2のオブジェクトOB2とが仮想カメラに対して前後に配置される場合には、手前側(例えば前景)の第1のオブジェクトOB1と、奥側(例えば背景)の第2のオブジェクトOB2との違いを更に考慮した自然なぼかしを施すために、以下の平滑化処理を行う。
【0091】
まず、画素P0の奥行き値D0をポイントサンプリング方式(サンプリング点に最も距離が近い画素の奥行き値を取得する方式)によって取得し、奥行き値D0にスケーリングパラメータmultを乗算する。このmultは、平滑化処理のために用いられる予め定めた値であり、例えば、multを0より大きな値であって1以下の値に設定する。
【0092】
そして、求めたサンプリング点P1〜P4それぞれの、奥行き値D1〜D4をポイントサンプリング方式で取得し、奥行き値D0にmultを乗算した値D0´と、奥行き値D1〜D4との比較処理を行う。
【0093】
そして、図4(B)に示すようにD0´と、D1〜D4とを比較した結果、D0´よりも大きい値であるD1〜D4に対応するサンプリング点のカラーCP1〜CP4と、画素P0のカラーCP0とを加算平均して画素P0の出力カラーCを求める。
【0094】
具体的に説明すると、本実施形態では、各サンプリング点P1〜P4に対応づけてフラグFL1〜FL4を設定する。例えば、各サンプリング点に対応する奥行き値が、画素P0の奥行き値D0にmultを乗算した値D0´より大きい値である場合には、サンプリング点に対応づけてフラグを1に設定し、各サンプリング点に対応する奥行き値が、画素P0の奥行き値D0にmultを乗算した値D0´以下の値である場合には、サンプリング点に対応づけてフラグを0に設定する。そして、最終的にフラグが1に設定されたサンプリング点のカラーを加算平均の対象のサンプリング点のカラーとしている。
【0095】
具体的には、画素P0のカラーをCP0、サンプリング点P1〜P4のカラーをCP1〜CP4とした場合には、以下の数式によって、画素P0の出力カラーCを求めている。なお、画素P0のカラーCP0、サンプリング点P1〜P4のカラーCP1〜CP4はそれぞれ、各点周囲の複数の画素のカラーをバイリニアフィルタリング方式によって補間して求める。
【0096】
【数3】

また、本実施形態では、D0´とD1〜D4それぞれの大小を比較し比較結果に基づいて分岐処理を行い、加算対象のサンプリング点のカラーを用いた加算平均処理を行ってもよいし、プロセッサやコンパイラの機能によっては、分岐処理よりも三項演算子を用いた方が処理負荷を軽減できる場合には、分岐処理を行わずに三項演算子を用いて、D0´とD1〜D4それぞれの大小を比較する条件に基づき加算対象のサンプリング点のカラーを用いて加算平均処理を行ってもよい。ここで、三項演算子とは「条件?A:B」のように3つの被演算子による命令文であり、例えば、条件(例えばD0´<D1)が真ならばAを実行し(例えばフラグFL1に1を代入し)、条件(例えばD0´<D1)が偽ならばBを実行する(例えばフラグFL1に0を代入する)ものである。
【0097】
したがって、三項演算子を用いた演算により処理負荷を軽減できる場合には、以下の数式によって画素P0の出力カラーCを求める。
【0098】
【数4】

以上の平滑化処理によって、手前側(例えば前景)の第1のオブジェクトOB1と、奥側(例えば背景)の第2のオブジェクトOB2との違いを更に考慮した現実世界におけるレンズの被写界深度に似た視覚効果を表現することができる。
【0099】
また、本実施形態では、上述した平滑化処理だけでなく、サンプリング点P1〜P4と画素P0の5点に対応するカラーCP0〜CP4(或いはサンプリング点P1〜P4の4点に対応するカラーCP1〜CP4)に基づき平均化処理を行って、出力画像の画素のカラーを求めるようにしてもよい。例えば、以下の数式によって、出力カラーCを求めることができる。
【0100】
【数5】

(3)全画面処理
本実施形態では、描画バッファに透視投影変換後の所与の画像を描画し、描画された画像の全画素それぞれについて、Zoomに基づきサンプリング点を求め、求めたサンプリング点に基づき画素の出力カラーを決定する平滑化処理を行う。
【0101】
このように全画面処理を行う理由は、全画素それぞれに、サンプリング点を求めて平滑化処理を行うことによってはじめて、近景から背景にかけて徐々にぼけが増大する画像を生成することができるからである。
【0102】
また、全ての画素に対して、画素の奥行き値Dに応じたZoomを求め、Zoomに基づいてサンプリング点を求めて平滑化処理を行うので、厳密な被写界深度や錯乱円等の物理演算を行わなくても適切なサンプリング点を求めることができる。また、従来の手法のように被写界深度の範囲を設定したり、画素が被写界深度範囲内の画素か否かの判断する処理が不要になるので、従来の手法に比べて遙かに処理負荷を軽減できるという利点がある。
【0103】
さらに、本実施形態では、Zoomに最低限ぼかすための最低ぼかし量LOWが加算されているので、少なくとも手前側の画素についても、ぼかし処理が施されることになり、結果的にアンチエイリアスの効果が得られた自然な画像を生成することができる。
【0104】
つまり、本実施形態によれば、全画面処理を行うことによって、近景から背景にかけて徐々にぼけが増大する画像を生成すると共に、アンチエイリアスの効果を得ることができる。
【0105】
3.本実施形態の処理
(1)画像生成処理
次に、本実施形態の詳細な処理例について図5のフローチャートを用いて説明する。
【0106】
まず、これから描画する対象の画素P0の奥行き値D0をポイントサンプリング方式によって取得する処理を行う(ステップS10)。
【0107】
そして、奥行き値D0にPOW値を冪乗して、Zoomを求める(ステップS11)。
【0108】
次に、ステップS11で求めたZoomにWIDTHを乗算し、さらにLOWを加算した値を、Zoomに代入する。なお、0≦LOW≦1であり、WIDTH=(1−LOW)である(ステップS12)。
【0109】
次に、P1〜P4のサンプリング相対座標(UN,VN)をステップS12で求めたZoomの倍率でスケールする(ステップS13)。
【0110】
そして、平滑化処理を行い(ステップS14)、画素P0のカラーを描画バッファに出力する処理を行う(ステップS15)。以上で処理が終了する。
【0111】
(2)平滑化処理
次に、平滑化処理のフローチャートを、図6(A)(B)を用いて説明する。
【0112】
本実施形態では、第1の処理、第2の処理のいずれかの処理で平滑化処理を行っている。第2の処理は、第1の処理よりも簡易な手法で平滑化処理を行っているので、第1の処理よりもシステムの処理負荷を軽減することができる。一方、第1の処理は、手前側の第1のオブジェクトOB1と、奥側の第2のオブジェクトOB2との違いを更に考慮した現実世界におけるレンズの被写界深度に似た視覚効果を表現することができる自然なぼかし画像を生成することができるという利点がある。したがって、システムの処理能力に応じて、いずれかの処理で平滑化処理を行うことが望ましい。
【0113】
まず、第1の処理について図6(A)を用いて説明する。はじめに、求めたサンプリング点P1〜P4それぞれの奥行き値D1〜D4をポイントサンプリング方式によって取得する(ステップS20)。次に、奥行き値DN(奥行き値D1〜D4)が、画素P0の奥行き値D0にmultを乗算した値よりも大きい値であると判定された奥行き値に対応するサンプリング点のカラー、画素P0のカラーを用いて、加算平均を行う(ステップS21)。以上で処理が終了する。
【0114】
一方、図6(B)を用いて第2の処理について説明すると、第2の処理では、サンプリング点P1〜P4、及び、描画対象の画素P0の合計5点のカラーを用いて平均化処理を行う(ステップS30)。
【0115】
4.出力画像の例
図7は、本実施形態の透視変換後の所与の画像(元画像)の一例を示す。本実施形態では、図7に示す画像の画素それぞれに対してサンプリング点を求めて平滑化処理を行い、図8に示すようなぼかし画像を生成する。
【0116】
図8は、サンプリング点P1〜P4を求め、求めたサンプリング点P1〜P4、及び、描画対象の画素P0の合計5点のカラーを用いて平均化処理を行い出力カラーを求めた出力画像の一例である。
【0117】
このように、本実施形態では元画像と比較すると手前側の剣を持つキャラクタオブジェクトの輪郭のジャギが軽減され、キャラクタオブジェクトから背景にかけて、さらにぼけが増大する画像を生成することができる。また、Zoomに最低限ぼかすための最低ぼかし量LOWが加算されているので、少なくとも仮想カメラに対して手前側の画素についてもぼかし処理が施され、アンチエイリアスの効果が得られた自然な画像を生成することができる。
【0118】
また、本実施形態では、スーパーサンプリングによってアンチエイリアス処理を行った画像を元画像として、各画素のサンプリング点を求めて平滑化処理を行うぼかし処理を行ってもよい。
【0119】
図9は、画像解像度を1.5倍から1倍に変換したスーパーサンプリングによってアンチエイリアス処理を行った画像の一例である。例えば、図9に示す元画像の全画素それぞれにおいて、サンプリング点を求めて平滑化処理を行い、図10に示すようなぼかし画像を生成する。
【0120】
図10は、Zoomに基づきサンプリング点P1〜P4を求め、サンプリング点P1〜P4それぞれの各奥行き値D1〜D4が、画素P0の奥行き値D0にmult値を乗算した値D0´より大きい値であると判定された奥行き値に対応するサンプリング点のカラーを用いて、加算平均を行い出力カラーを求めた場合における出力画像の一例である。
【0121】
このように、本実施形態では元画像と比較すると手前側の剣を持つキャラクタオブジェクトの輪郭のジャギが軽減され、キャラクタオブジェクトから背景にかけてさらにぼけが増大する画像を生成することができる。また、キャラクタオブジェクトと背景との違いを考慮したぼかしが施され、さらに自然なぼかし画像を生成することができる。
【図面の簡単な説明】
【0122】
【図1】本実施形態の画像生成システムの機能ブロック図の例。
【図2】本実施形態の計算式に基づくグラフの一例。
【図3】本実施形態のサンプリング点を求める手法についての説明図。
【図4】図4(A)(B)は本実施形態の平滑化処理の説明図。
【図5】本実施形態の処理のフローチャート。
【図6】図6(A)(B)は、本実施形態の平滑化処理のフローチャート。
【図7】元画像の一例。
【図8】出力画像の一例。
【図9】元画像の一例。
【図10】出力画像の一例。
【符号の説明】
【0123】
100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、
114 仮想カメラ制御部、116 サンプリング点決定部、118 平滑化処理部、
120 描画部、130 音生成部、
160 操作部、170 記憶部、172 主記憶部、
174 描画バッファ、176 オブジェクトデータ記憶部、
178 テクスチャ記憶部、179 zバッファ、
180 情報記憶媒体、190 表示部、192 音出力部、196 通信部

【特許請求の範囲】
【請求項1】
オブジェクト空間における仮想カメラから見える透視投影変換後の所与の画像に基づいてぼかし画像を生成するためのプログラムであって、
前記透視投影変換によって所定値域に正規化された奥行き値を有する前記画像において、画素の前記奥行き値に基づいて、画素のぼかしパラメータを求め、求めたぼかしパラメータに応じて画素周囲の複数のサンプリング点を決定する処理を行うサンプリング点決定部と、
前記サンプリング点の色を用いて平滑化処理を行い画素の色を決定する処理を行う平滑化処理部としてコンピュータを機能させ、
前記サンプリング点決定部が、
画素の奥行き値を所定指数で冪乗した演算値に基づいて、画素のぼかしパラメータを求めることを特徴とするプログラム。
【請求項2】
請求項1において、
前記平滑化処理部が、
前記複数のサンプリング点のうち、画素の奥行き値にスケーリングパラメータを乗算した値と、サンプリング点の奥行き値との前後関係に応じて平滑化対象のサンプリング点を決定し、決定されたサンプリング点の色を平滑化して画素の色を決定することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記サンプリング点決定部が、
前記画素のぼかしパラメータが最低ぼかしパラメータを下回らないように、前記画素のぼかしパラメータを求めることを特徴とするプログラム。
【請求項4】
請求項1〜3のいずれかにおいて、
前記サンプリング点決定部が、
前記所与の画像の全画素毎に、画素周囲のサンプリング点を決定する処理を行い、
前記平滑化処理部が、
前記所与の画像の全画素毎に、平滑化処理を行い画素の色を決定する処理を行うことを特徴とするプログラム。
【請求項5】
コンピュータにより読み取り可能な情報記憶媒体であって、請求項1〜4のいずれかに記載のプログラムを記憶していることを特徴とする情報記憶媒体。
【請求項6】
オブジェクト空間における仮想カメラから見える透視投影変換後の所与の画像に基づいてぼかし画像を生成するための画像生成システムであって、
前記透視投影変換によって所定値域に正規化された奥行き値を有する前記画像において、画素の前記奥行き値に基づいて、画素のぼかしパラメータを求め、求めたぼかしパラメータに応じて画素周囲の複数のサンプリング点を決定する処理を行うサンプリング点決定部と、
前記サンプリング点の色を用いて平滑化処理を行い画素の色を決定する処理を行う平滑化処理部とを含み、
前記サンプリング点決定部が、
画素の奥行き値を所定指数で冪乗した演算値に基づいて、画素のぼかしパラメータを求めることを特徴とする画像生成システム。

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