説明

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

【課題】パーティクルに対して比較的軽い描画負荷で被写界深度によるぼかしを再現することが可能なプログラム、情報記憶媒体及び画像生成システムを提供すること。
【解決手段】所与のパーティクルをオブジェクト空間の所与の位置に生成し、仮想カメラとパーティクルとの仮想カメラの視線方向の距離情報を算出し、パーティクルの位置に応じたぼかし量を計算し、距離情報に基づいてパーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、ぼかし対象範囲内にある場合はぼかし量に応じたパーティクルのぼかし画像を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【0002】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【0003】
このような画像生成システム(ゲームシステム)では、視覚的に高い効果を狙って、カメラの被写界深度によるぼかしを再現した画像を生成する場合がある。よく使用される被写界深度の表現手法として、全画面に対するポストエフェクト処理が挙げられる。この手法は、3Dモデルをカラーバッファに描画する際に同時にデプスバッファ(Zバッファ)に書き込む奥行き情報を利用し、被写界深度から外れるピクセルに対してぼかし量を決定して全画面に対するぼかし画像を生成するものである。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−51024号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、花びら、雪、雨、煙、炎などを描画する際、比較的軽い処理負荷でリアルな画像を実現するために、これらを半透明のパーティクルで表現する場合がある。これらのパーティクルを含む画像を生成する際には、描画処理が複雑にならないようにパーティクルの各ピクセルについてはデプスバッファ(Zバッファ)に奥行き情報を書き込まない場合が多い。そのため、パーティクルを含む画像に対して被写界深度によるぼかしを再現する場合、従来の手法をそのまま適用すると、パーティクルについてはその後ろにあるオブジェクトの奥行き情報を参照してぼかしがかけられる。例えば、図12に示す画像では、中央の建物が仮想カメラの被写界深度にあるため、建物の手前にある花びらP(パーティクル)は、建物と重ねっている左上部分はぼけていないが背景と重なる右下部分は背景とともにぼけており、違和感のある画像になっている。
【0006】
パーティクルについても奥行き情報を書き込んで、従来手法を用いて被写界深度によるぼかしを再現することも不可能ではないかもしれないが、例えば、全画面ではなくパーティクルに対してのみ被写界深度によるぼかしを再現したい場合であっても、全画面と同じサイズのデプスバッファを参照する必要があるため描画負荷が高くなるという問題がある。
【0007】
本発明は、以上のような課題に鑑みてなされたものであり、本発明のいくつかの態様によれば、パーティクルに対して比較的軽い描画負荷で被写界深度によるぼかしを再現することが可能なプログラム、情報記憶媒体及び画像生成システムを提供することができる。
【課題を解決するための手段】
【0008】
(1)本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
所与のパーティクルを前記オブジェクト空間の所与の位置に発生させるパーティクル発生部と、
前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離情報を算出する距離情報算出部と、
前記パーティクルの位置に応じたぼかし量を計算するぼかし量計算部と、
前記距離情報に基づいて前記パーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、前記ぼかし対象範囲内にある場合は前記ぼかし量に応じた前記パーティクルのぼかし画像を生成するぼかし画像生成部としてコンピュータを機能させることを特徴とする。
【0009】
また、本発明は、コンピュータに読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶している情報記憶媒体に関する。また、本発明は、上記各部を含む画像生成システムに関する。
【0010】
本発明では、仮想カメラとパーティクルとの仮想カメラの視線方向の距離情報を算出し、当該距離情報に基づいてパーティクルのぼかし画像を生成するので、パーティクルに対してデプスバッファ(Zバッファ)に奥行き情報を書き込む必要がない。従って、本発明によれば、パーティクルに対して比較的軽い描画負荷で被写界深度によるぼかしを再現することができる。
【0011】
(2)また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし量に応じて前記パーティクルを拡大又は縮小するパーティクルサイズ変更部としてさらにコンピュータを機能させ(パーティクルサイズ変更部をさらに含み)、
前記ぼかし画像生成部は、
拡大又は縮小した後の前記パーティクルに対して、前記ぼかし量に応じた前記ぼかし画像を生成するようにしてもよい。
【0012】
本発明によれば、パーティクルのサイズをぼかし量に応じて適切に調整することで、ぼかし画像の描画領域を包含するなるべく小さいサイズのパーティクルに対して描画処理を行うようにすることが可能である。これにより、ぼかし画像の描画負荷を低減することができる。
【0013】
(3)また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし量計算部は、
前記ぼかし量として、前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離に応じたぼかし量を計算するようにしてもよい。
【0014】
(4)また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし量計算部は、
前記ぼかし量として、前記仮想カメラと前記パーティクルとの直線距離に応じたぼかし量を計算するようにしてもよい。
【0015】
(5)また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記コンピュータがメインプロセッサと描画プロセッサを含み、
前記距離情報算出部、前記ぼかし画像生成部及び前記パーティクルサイズ変更部の各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御するぼかし処理割り当て制御部としてさらにコンピュータを機能させる(ぼかし処理割り当て制御部をさらに含む)ようにしてもよい。
【0016】
(6)また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし処理割り当て制御部は、
前記各処理の現在の割り当て状況と、前記メインプロセッサと前記描画プロセッサのそれぞれの現在の処理負荷と、に基づいて、前記各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御するようにしてもよい。
【0017】
本発明によれば、メインプロセッサの処理負荷と描画プロセッサの処理負荷に応じて、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理の割り当てを動的に変更することができるので、効率的にぼかし処理を行うことができる。
【0018】
(7)また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし処理割り当て制御部は、
描画対象となる前記パーティクルの数又は総面積に応じて、前記各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御するようにしてもよい。
【0019】
本発明によれば、パーティクルの数や総面積に応じてメインプロセッサと描画プロセッサの処理負荷を変更することができるので、効率的にぼかし処理を行うことができる。
【図面の簡単な説明】
【0020】
【図1】本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の一例を示す図。
【図2】本実施形態の手法により生成した画像の一例を示す図。
【図3】パーティクルについて説明するための図。
【図4】ぼかし対象範囲及びぼかし量の一例について説明するための図。
【図5】ぼかし対象範囲及びぼかし量の他の一例について説明するための図。
【図6】本実施形態によるパーティクルの画像生成について説明するための図。
【図7】本実施形態のぼかし処理の一例のフローチャート図。
【図8】ぼかし処理の割り当てパターンの一例を示す図。
【図9】ぼかし処理の割り当てパターンを動的に変更する制御の一例のフローチャート図。
【図10】ぼかし処理の割り当てパターンを動的に変更する制御の他の一例のフローチャート図。
【図11】本実施形態を実現できるハードウェア構成の例を示す図。
【図12】従来手法により生成した画像の一例を示す図。
【発明を実施するための形態】
【0021】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【0022】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の一例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0023】
操作部160は、プレーヤがオブジェクト(プレーヤキャラクタ、移動体)の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【0024】
なお、操作部160は、加速度センサや撮像部、或いは角速度を検出するジャイロセンサを備えた入力機器によってプレーヤからの入力データ(操作データ)を入力できるものでもよい。例えば、入力装置は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力装置には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける(プレーヤが手に装着する)グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力装置には、入力装置と一体化されているゲーム装置、携帯型ゲーム装置、携帯電話なども含まれる。
【0025】
例えば、入力機器に備えられた加速度センサは、3軸(X軸、Y軸、Z軸)の加速度を検出する。すなわち、加速度センサは、上下方向、左右方向、及び、前後方向の加速度を検出することができる。なお、加速度センサは、5msec毎に加速度を検出している。また、加速度センサは、1軸、2軸、6軸の加速度を検出するものであってもよい。なお、加速度センサから検出された加速度は、入力機器の通信部によってゲーム装置(本体装置)に送信される。
【0026】
また、入力機器に備えられた撮像部は、赤外線フィルタ、レンズ、撮像素子(イメージセンサ)、画像処理回路を含む。赤外線フィルタは、入力装置の前方に配置され、表示部190に関連付けられて配置されている光源から入射する光から赤外線のみを通過させる。レンズは、赤外線フィルタを透過した赤外線を集光して撮像素子へ出射する。撮像素子は、例えば、CMOSセンサやCCDのような固体撮像素子であり、レンズが集光した赤外線を撮像して撮像画像を生成する。撮像素子で生成された撮像画像は、画像処理回路で処理される。例えば、撮像素子から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報(特定位置)を検出する。なお、光源が複数存在する場合には、撮像画像上の位置情報を検出する。また、検出した撮像画像上の位置情報は、通信部によって、本体装置に送信される。
【0027】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。記憶部170は、ワーク領域として使用される主記憶部172と、最終的な表示画像等が記憶される描画バッファ174と、オブジェクトのモデルデータが記憶されるオブジェクトデータ記憶部176と、各オブジェクトに対応付けられたテクスチャが記憶されるテクスチャ記憶部178と、オブジェクトの生成処理時にZ値が記憶されるZバッファ179とを含む。なお、これらの一部を省略する構成としてもよい。
【0028】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
【0029】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0030】
通信部196は外部(例えば他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0031】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体180や記憶部170に記憶してもよい。このようにプログラムやデータを受信して画像生成システムを機能させる場合も本発明の範囲内に含む。
【0032】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0033】
この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0034】
特に本実施形態では、処理部100の機能の一部をメインプロセッサ(CPU)と描画プロセッサ(GPU)で実現する。
【0035】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0036】
特に本実施形態では、処理部100は、ぼかし処理割り当て制御部116を含む。ぼかし処理割り当て制御部116は、距離情報算出部124、ぼかし画像生成部129及びパーティクルサイズ変更部128の各処理をメインプロセッサと描画プロセッサのいずれに割り当てるかを制御する。例えば、ぼかし処理割り当て制御部116は、距離情報算出部124、ぼかし画像生成部129及びパーティクルサイズ変更部128の各処理の現在の割り当て状況と、メインプロセッサと描画プロセッサのそれぞれの現在の処理負荷と、に基づいて、当該各処理をメインプロセッサと描画プロセッサのいずれに割り当てるかを制御するようにしてもよい。また、例えば、ぼかし処理割り当て制御部116は、描画対象となるパーティクルの数又は総面積に応じて、距離情報算出部124、ぼかし画像生成部129及びパーティクルサイズ変更部128の各処理をメインプロセッサと描画プロセッサのいずれに割り当てるかを制御するようにしてもよい。
【0037】
オブジェクト空間設定部110は、雪、雨、キャラクタ、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ライン(線)、ラインポリゴン、ポリゴン、多角形、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義であり、例えば、ワールド座標系でのX、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0038】
移動・動作処理部112は、オブジェクト(キャラクタ、移動体等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)、物理法則などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0039】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、ワールド座標系における仮想カメラの位置(X、Y、Z)又は回転角度(例えば、X、Y、Z軸の各軸の正方向からみて時計回りに回る場合における回転角度)を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。例えば、仮想カメラ制御部114は、仮想カメラを移動体オブジェクトの移動に追従させる制御を行うようにしてもよい。すなわち、仮想カメラによりオブジェクト(例えばキャラクタ、移動体)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0040】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0041】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換(カメラ座標変換)、クリッピング処理、射影変換(視点を基準とした透視変換、投影変換)、ビューポート変換(スクリーン座標変換)、光源計算等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。ジオメトリ処理後のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、オブジェクトデータ記憶部176に保存される。
【0042】
そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、プリミティブ(ポリゴン)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174(フレームバッファや中間バッファ(ワークバッファ)などのピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0043】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、プリミティブ(ポリゴン)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0044】
そして描画部120は、オブジェクトを描画する際に、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0045】
テクスチャマッピングは、記憶部170のテクスチャ記憶部178に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部178からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0046】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ179(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ179に格納されるZ値を参照する。そして参照されたZバッファ179のZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ179のZ値を新たなZ値に更新する。
【0047】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
【0048】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0049】
特に本実施形態では、描画部120は、パーティクル発生部122、距離情報算出部124、ぼかし量計算部126、パーティクルサイズ変更部128、ぼかし画像生成部129を含む。
【0050】
パーティクル発生部122は、所与のパーティクルをオブジェクト空間の所与の位置に発生させる。
【0051】
距離情報算出部124は、仮想カメラとパーティクルとの仮想カメラの視線方向の距離情報を算出する。
【0052】
ぼかし量計算部126は、パーティクルの位置に応じたぼかし量を計算する。例えば、ぼかし量計算部126は、パーティクルの位置に応じたぼかし量として、仮想カメラとパーティクルとの仮想カメラの視線方向の距離に応じたぼかし量を計算するようにしてもよい。また、例えば、ぼかし量計算部126は、パーティクルの位置に応じたぼかし量として、仮想カメラとパーティクルとの直線距離に応じたぼかし量を計算するようにしてもよい。
【0053】
パーティクルサイズ変更部128は、ぼかし量計算部126が計算したぼかし量に応じてパーティクルを拡大又は縮小する。
【0054】
ぼかし画像生成部129は、距離情報算出部124が算出した距離情報に基づいてパーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、ぼかし対象範囲内にある場合は、ぼかし量計算部126が計算したぼかし量に応じたパーティクルのぼかし画像を生成する。例えば、ぼかし画像生成部129は、パーティクルサイズ変更部128が拡大又は縮小した後のパーティクルに対して、ぼかし量計算部126が計算したぼかし量に応じたぼかし画像を生成するようにしてもよい。
【0055】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0056】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0057】
2.本実施形態の手法
(1)概要
本実施形態は、花びら、雪、雨、煙、炎等のパーティクルに擬似的な被写界深度に応じてぼかしをかけた画像をリアルタイムに生成する処理を行うものである。例えば、図2に示すように、1枚の花びらを1つのパーティクルで実現し、各パーティクルの原点を、重力、風力などの物理的な運動法則に基づき移動させるシミュレーション処理を行い、パーティクルに花びらテクスチャ(花びら模様テクスチャ)をマッピングして画像を生成する。その際、被写界深度に応じてぼかし対象範囲にないパーティクル(例えば、Pd,Pe)に対してはピントの合った花びらの画像を生成している。一方、ぼかし対象範囲にあるパーティクル(例えば、Pa,Pb,Pc,Pf)に対しては花びらのぼかし画像を生成している。特に、ピントが合っているキャラクタCと一部重なる位置で手前にあるパーティクルPcに対しても、全体にぼけた花びらの画像を生成している。以下、本実施形態の手法について説明する。
【0058】
(2)パーティクルのぼかし処理
本実施形態では、図3に示すように、ワールド座標系において、シミュレーション処理に基づく位置に仮想カメラCMの視線方向に正対して各パーティクルP0,P1,P2,P3,P4,P5,・・・を発生させる。このパーティクルの各々の4つの頂点に対して、ワールド座標系からカメラ座標系(視点を原点とし、視線の方向がz軸の負の方向になるように設定される座標系)への座標変換処理、つまり視野変換処理を行うと、各パーティクルの4つの頂点のカメラ座標系におけるz座標はすべて同じ値になる。そして、各パーティクルについて、4つの頂点のz座標値の絶対値を仮想カメラCMに対する相対的な距離情報として、各パーティクルの位置がぼかし対象範囲にあるか否かを判定する。
【0059】
図4に被写界深度に応じたぼかし対象範囲の一例を示す。図4は、カメラ座標系のy軸の正方向から視た図である。カメラ座標のxy平面に対するz軸の負の方向の距離がdmin以上dmax以下の範囲(空間)が被写界深度200になる。また、カメラ座標のxy平面に対するz軸の負の方向の距離が、dminよりも小さい範囲(空間)とdmaxよりも大きい範囲(空間)がそれぞれ手前ぼかし範囲210と奥ぼかし範囲220になる。そして、パーティクルPnがカメラ座標系の座標(xn,yn,zn)にある場合、パーティクルPnの中心からxy平面に下ろした垂線の長さdn(znの絶対値に等しい)が、パーティクルPnと仮想カメラCMのz方向の距離になる。すなわち、距離dnがdmin以上dmax以下であるパーティクルPnは被写界深度200に存在し、距離dnがdminよりも小さいパーティクルPnは手前ぼかし範囲210に存在し、距離dnがdminよりも大きいパーティクルPnは奥ぼかし範囲220に存在することになる。図4の例では、パーティクルP2,P3が被写界深度200に存在し、パーティクルP0,P1が手前ぼかし範囲210に存在し、パーティクルP2,P3が奥ぼかし範囲220に存在している。
【0060】
本実施形態では、この手前ぼかし範囲210と奥ぼかし範囲220がぼかし対象範囲になる。そして、パーティクルPnが手前ぼかし範囲210又は奥ぼかし範囲220に存在する場合はパーティクルのぼかし画像を生成し、パーティクルPnが手前ぼかし範囲210又は奥ぼかし範囲220に存在しない場合(言い換えると被写界深度200に存在する場合)はパーティクルの通常画像(ぼかしのない画像)を生成する。
【0061】
また、本実施形態では、ぼかし画像を生成する場合は、パーティクルPnの距離dnに応じてぼかし量を変更する。具体的には、パーティクルPnが被写界深度200から離れるほどぼかし量を大きくする。すなわち、パーティクルPnが手前ぼかし範囲210に存在する場合は距離dnが小さいほどぼかし量を大きくし、パーティクルPnが奥ぼかし範囲220に存在する場合は距離dnが大きいほどぼかし量を大きくする。図4の例では、パーティクルP0とP1が手前ぼかし範囲210に存在し、d0<d1なので、パーティクルP0に対するぼかし量をパーティクルP1に対するぼかし量よりも大きくする。また、パーティクルP4とP5が奥ぼかし範囲220に存在し、d4=d5なので、パーティクルP4に対するぼかし量とパーティクルP5に対するぼかし量を同じにする。
【0062】
あるいは、図5に示すように、パーティクルPnがぼかし対象範囲に存在する場合は、パーティクルPnとカメラ座標系の原点との直線距離rn(rnは原点を中心とするパーティクルPnを含む球面の半径に等しい)に応じてぼかし量を変更するようにしてもよい。具体的には、パーティクルPnが手前ぼかし範囲210に存在する場合は直線距離rnが小さいほどぼかし量を大きくし、パーティクルPnが奥ぼかし範囲220に存在する場合は直線距離rnが大きいほどぼかし量を大きくする。図4の例では、パーティクルP0とP1が手前ぼかし範囲210に存在し、r1>r0なので、パーティクルP1に対するぼかし量をパーティクルP0に対するぼかし量よりも大きくする。また、パーティクルP4とP5が奥ぼかし範囲220に存在し、r4>r5なので、パーティクルP4に対するぼかし量をパーティクルP5に対するぼかし量よりも大きくする。
【0063】
次に、図6(A)及び図6(B)を用いて、本実施形態によるパーティクルの画像生成について説明する。
【0064】
パーティクルPnがぼかし対象範囲(手前ぼかし範囲210と奥ぼかし範囲220)に存在しない場合(言い換えると被写界深度200に存在する場合)は、図6(A)に示すように、まず、パーティクルPnの各頂点をスクリーン座標系に変換したパーティクル300を生成する。そしてこのパーティクル300にテクスチャ400をマッピングしてぼかさずに描画し、パーティクルの通常画像500を生成する。
【0065】
一方、パーティクルPnがぼかし対象範囲(手前ぼかし範囲210又は奥ぼかし範囲220)に存在する場合は、図6(B)に示すように、まず、距離情報から計算されるぼかし量に応じてパーティクルPnを拡大又は縮小したパーティクル310を生成する。例えば、パーティクル310の中心(重心)をパーティクルPnの中心(重心)と一致させたまま各頂点の位置を変更することにより拡大又は縮小する。そして、パーティクル310の各頂点をスクリーン座標系に変換したパーティクル320を生成する。このパーティクル320にテクスチャ400をぼかし量に応じてぼかして描画し、パーティクルのぼかし画像510を生成する。例えば、パーティクル320にテクスチャ400をずらしながらぼかし量に応じた回数や色(薄さ)でマッピングすることによりぼかし画像510を生成することができる。
【0066】
パーティクルPnのサイズが小さい場合、そのままスクリーン座標系に変換してテクスチャ400を描画すると、ぼかし量によってはパーティクルの内部に描画しきれずに一部が欠けたようなぼかし画像が生成される可能性がある。そこで、本実施形態では、ぼかし量に応じてパーティクルPnをあらかじめ拡大してからスクリーン座標系のパーティクル320に変換することで、確実にパーティクル320の内部にぼかし画像が描画されるようにしている。
【0067】
逆に、パーティクルPnのサイズが大きい場合は、そのままスクリーン座標系のパーティクルに変換してテクスチャ400を描画してもよいが、パーティクルが小さいほど描画負荷をより軽くすることができる。そこで、本実施形態では、ぼかし量に応じてパーティクルをあらかじめ縮小してからスクリーン座標系のパーティクル320に変換することで、ぼかし画像の描画負荷を低減させるようにしている。
【0068】
なお、パーティクル320が小さいほど描画負荷を軽くすることができるので、パーティクル320がぼかし画像の描画領域よりもわずかに大きくなるように、パーティクルPnを拡大又は縮小するのが望ましい。
【0069】
3.本実施形態の処理
(1)ぼかし処理
次に、本実施形態のぼかし処理について図7のフローチャートを用いて説明する。
【0070】
まず、ワールド座標系において、パーティクルPnを所与の位置に発生させて仮想カメラCMに正対させて配置する(ステップS10)。
【0071】
次に、ステップS10でワールド座標系に配置したパーティクルPnの座標をカメラ座標系に変換する(ステップS20)。
【0072】
次に、カメラ座標系において、パーティクルPnと原点(仮想カメラの位置)の間の視線方向(z軸の負の方向)の距離情報を算出する(ステップS30)。
【0073】
次に、ステップS30で算出した距離情報からパーティクルPnがぼかし対象範囲にあるか否かを判定する(ステップS40)。
【0074】
パーティクルPnがぼかし対象範囲にある場合(ステップS50でYの場合)、ステップS30で算出した距離情報に応じてぼかし量を計算し、当該ぼかし量に応じてパーティクルPnを拡大又は縮小してパーティクル310を生成する(ステップS60)。
【0075】
次に、ステップS60で生成したパーティクル310をスクリーン座標系のパーティクル320に変換する(ステップS70)。
【0076】
次に、ステップS70で生成したパーティクル320に対してラスタライズを行い、ピクセルデータを生成する(ステップS80)。
【0077】
次に、ステップS80で生成したピクセルデータに対して、描画位置をずらしながらテクスチャ400をぼかし量に応じた回数及び色で複数回マッピングし、パーティクルのぼかし画像510を生成する(ステップS90)。
【0078】
一方、パーティクルPnがぼかし対象範囲にない場合(ステップS50でNの場合)、パーティクルPnをスクリーン座標系のパーティクル300に変換する(ステップS72)。
【0079】
次に、ステップS72で生成したパーティクル300に対してラスタライズを行い、ピクセルデータを生成する(ステップS82)。
【0080】
次に、ステップS82で生成したピクセルデータに対してテクスチャ400をマッピングし、パーティクルの通常画像500を生成する(ステップS92)。
【0081】
そして、ステップS90又はS92の処理が終了した後、描画するパーティクルPnが他にもあれば(ステップS100でYの場合)ステップS20以降の処理を同様に行い、描画するパーティクルPnが他になければ(ステップS100でNの場合)ぼかし処理を終了する。
【0082】
このように、本実施形態では、仮想カメラCMとパーティクルPnとの仮想カメラCMの視線方向(z軸の負の方向)の距離情報を算出し、当該距離情報に基づいてパーティクルのぼかし画像を生成するので、パーティクルに対してZバッファ179に奥行き情報を書き込む必要がない。従って、本実施形態によれば、パーティクルに対して比較的軽い描画負荷で被写界深度によるぼかしを再現することができる。
【0083】
また、本実施形態によれば、パーティクルPnのサイズをぼかし量に応じて適切に調整することで、ぼかし画像の描画領域を包含するなるべく小さいサイズのパーティクルに対して描画処理を行うようにすることが可能である。これにより、ぼかし画像の描画負荷を低減することができる。
【0084】
(2)ぼかし処理の割り当て制御
本実施形態では、図7のステップS30における距離情報の算出(距離情報算出処理)、ステップS60におけるパーティクルの拡大又は縮小(パーティクルサイズ変更処理)及びステップS90におけるぼかし画像の生成(ぼかし画像生成処理)をメインプロセッサ(CPU)、描画プロセッサ(GPU)の頂点シェーダ、描画プロセッサ(GPU)のピクセルシェーダのいずれかに割り当てる制御を行う。本実施形態では、図8に示す3通りの割り当てパターンのいずれかを選択する。
【0085】
パターン1は、距離情報算出処理とパーティクルサイズ変更処理をメインプロセッサ(CPU)に割り当て、ぼかし画像生成処理を描画プロセッサ(GPU)のピクセルシェーダに割り当てる。このパターン1を選択すれば、メインプロセッサ(CPU)の負担が大きくなり、描画プロセッサ(GPU)の負担が小さくなる。従って、例えば、相対的に描画プロセッサ(GPU)の処理負荷の方が重い状態であればパターン1を選択するようにしてもよい。
【0086】
パターン2は、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理を、メインプロセッサ(CPU)、描画プロセッサ(GPU)の頂点シェーダ、描画プロセッサ(GPU)のピクセルシェーダにそれぞれ割り当てる。このパターン2を選択すれば、メインプロセッサ(CPU)の負担と描画プロセッサ(GPU)の負担のバランスがよい。従って、例えば、メインプロセッサ(CPU)の処理負荷も描画プロセッサ(GPU)の処理負荷もそれほど重くない状態であればパターン2を選択するようにしてもよい。
【0087】
パターン3は、距離情報算出処理とパーティクルサイズ変更処理を描画プロセッサ(GPU)の頂点シェーダに割り当て、ぼかし画像生成処理を描画プロセッサ(GPU)のピクセルシェーダに割り当てる。このパターン3を選択すれば、メインプロセッサ(CPU)の負担が小さくなり、描画プロセッサ(GPU)の負担が大きくなる。従って、例えば、相対的にメインプロセッサ(CPU)の処理負荷の方が重い状態であればパターン3を選択するようにしてもよい。
【0088】
この割り当てパターンの選択は、ぼかし処理の直前やぼかし処理の途中で動的に変更するように制御してもよい。
【0089】
一例として、図9に、現在選択されている割り当てパターンと、メインプロセッサ(CPU)及び描画プロセッサ(GPU)のぞれぞれの現在の処理負荷とに基づいて、パターン1、2、3を動的に変更する制御のフローチャートを示す。
【0090】
まず、例えば、パターン2を選択し、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理を、それぞれメインプロセッサ(CPU)、描画プロセッサ(GPU)の頂点シェーダ、描画プロセッサ(GPU)のピクセルシェーダに割り当てる(ステップS200)。
【0091】
描画処理が終了でなければ(ステップS210でNの場合)、所与のタイミングでメインプロセッサ(CPU)の処理負荷と描画プロセッサ(GPU)の処理負荷を判定する。そして、メインプロセッサ(CPU)の処理負荷が閾値以下であり、かつ、描画プロセッサ(GPU)の処理負荷が閾値よりも大きい場合(ステップS220でY、かつ、ステップS230でNの場合)、パーティクルサイズ変更処理の割り当てをメインプロセッサ(CPU)に変更する(ステップS240)。すなわち、パターン2からパターン1に変更する。これにより、描画プロセッサ(GPU)の処理負荷を軽くすることができる。
【0092】
また、メインプロセッサ(CPU)の処理負荷が閾値よりも大きく、かつ、描画プロセッサ(GPU)の処理負荷が閾値以下の場合(ステップS220でN、かつ、ステップS232でYの場合)、距離情報算出処理の割り当てを描画プロセッサ(GPU)の頂点シェーダに変更する(ステップS242)。すなわち、パターン2からパターン3に変更する。これにより、メインプロセッサ(CPU)の処理負荷を軽くすることができる。
【0093】
また、メインプロセッサ(CPU)の処理負荷と描画プロセッサ(GPU)の処理負荷がともに閾値以下の場合(ステップS220でY、かつ、ステップS230でYの場合)又は、メインプロセッサ(CPU)の処理負荷と描画プロセッサ(GPU)の処理負荷がともに閾値よりも大きい場合(ステップS220でN、かつ、ステップS232でNの場合)、パターン2のまま変更しない。前者の場合はパターン2が効率的な割り当てであると考えられるためパターン1やパターン3に変更せず、後者の場合はメインプロセッサ(CPU)と描画プロセッサ(GPU)のいずれかの処理負荷が閾値以下になるのを待ってパターン1又はパターン3に変更する。
【0094】
ステップS240でパターン2からパターン1に変更した後、描画処理が終了でなければ(ステップS250でNの場合)、所与のタイミングでメインプロセッサ(CPU)の処理負荷と描画プロセッサ(GPU)の処理負荷を判定する。そして、メインプロセッサ(CPU)の処理負荷が閾値よりも大きく、かつ、描画プロセッサ(GPU)の処理負荷が閾値以下の場合(ステップS260でN、かつ、ステップS270でYの場合)、パーティクルサイズ変更処理の割り当てを描画プロセッサ(GPU)の頂点シェーダに変更する(ステップS280)。すなわち、パターン1からパターン2に変更する。これにより、メインプロセッサ(CPU)の処理負荷を軽くすることができる。
【0095】
また、メインプロセッサ(CPU)の処理負荷が閾値以下の場合(ステップS260でYの場合)、又は、メインプロセッサ(CPU)の処理負荷と描画プロセッサ(GPU)の処理負荷がともに閾値よりも大きい場合(ステップS260でN、かつ、ステップS270でNの場合)、パターン1のまま変更しない。前者の場合はパターン1が効率的な割り当てであると考えられるためパターン2に変更せず、後者の場合は描画プロセッサ(GPU)の処理負荷が閾値以下になるのを待ってパターン2に変更する。
【0096】
一方、ステップS242でパターン2からパターン3に変更した後、描画処理が終了でなければ(ステップS252でNの場合)、所与のタイミングでメインプロセッサ(CPU)の処理負荷と描画プロセッサ(GPU)の処理負荷を判定する。そして、描画プロセッサ(GPU)の処理負荷が閾値よりも大きく、かつ、メインプロセッサ(CPU)の処理負荷が閾値以下の場合(ステップS262でN、かつ、ステップS272でYの場合)、距離情報算出処理の割り当てをメインプロセッサ(CPU)に変更する(ステップS282)。すなわち、パターン3からパターン2に変更する。これにより、描画プロセッサ(GPU)の処理負荷を軽くすることができる。
【0097】
また、描画プロセッサ(GPU)の処理負荷が閾値以下の場合(ステップS262でYの場合)、又は、描画プロセッサ(GPU)とメインプロセッサ(CPU)の処理負荷の処理負荷がともに閾値よりも大きい場合(ステップS262でN、かつ、ステップS272でNの場合)、パターン3のまま変更しない。前者の場合はパターン3が効率的な割り当てであると考えられるためパターン2に変更せず、後者の場合はメインプロセッサ(CPU)の処理負荷が閾値以下になるのを待ってパターン2に変更する。
【0098】
ステップS280でパターン1からパターン2に変更した後、又は、ステップS282でパターン3からパターン2に変更した後、描画処理が終了でなければ(ステップS210でNの場合)、上述した処理と同様に、メインプロセッサ(CPU)の処理負荷と描画プロセッサ(GPU)の処理負荷に応じてパターン2からパターン1やパターン3への変更処理を行う。
【0099】
以上に説明した処理を描画処理が終了するまで繰り返すことにより、メインプロセッサ(CPU)の処理負荷と描画プロセッサ(GPU)の処理負荷に応じて、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理の割り当てを動的に変更することができる。
【0100】
他の一例として、図10に、描画するパーティクルの数(又はパーティクルの総面積)に応じて、パターン1、2、3を動的に変更する制御のフローチャートを示す。
【0101】
まず、所与のタイミングで、描画するパーティクルの数(又はパーティクルの総面積)を判定する(ステップS300)。
【0102】
パーティクルの数がN1未満(又はパーティクルの総面積がS1未満)の場合(ステップS310でYの場合)、パターン1を選択し、距離情報算出処理とパーティクルサイズ変更処理をメインプロセッサ(CPU)に、ぼかし画像生成処理を描画プロセッサ(GPU)のピクセルシェーダにそれぞれ割り当てる(ステップS320)。
【0103】
また、パーティクルの数がN1以上N2未満(又はパーティクルの総面積がS1以上S2未満)の場合(ステップS310でN、かつ、ステップS330でYの場合)、パターン2を選択し、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理をメインプロセッサ(CPU)、描画プロセッサ(GPU)の頂点シェーダ、描画プロセッサ(GPU)のピクセルシェーダにそれぞれ割り当てる(ステップS340)。
【0104】
また、パーティクルの数がN2以上(又はパーティクルの総面積がS2以上)の場合(ステップS330でNの場合)、パターン3を選択し、距離情報算出処理とパーティクルサイズ変更処理を描画プロセッサ(GPU)の頂点シェーダに、ぼかし画像生成処理を描画プロセッサ(GPU)のピクセルシェーダにそれぞれ割り当てる(ステップS350)。
【0105】
このようにすれば、パーティクルの数が増えても(又はパーティクルの総面積が大きくなっても)、メインプロセッサ(CPU)に過剰な処理負荷がかからないようにしてぼかし処理の低速化を抑制することできる。このように、パーティクルの数や総面積に応じてメインプロセッサ(CPU)と描画プロセッサ(GPU)の処理負荷を変更することで、効率的にぼかし処理を行うことができる。
【0106】
4.ハードウェア構成
次に、図11を用いて本実施形態を実現できるハードウェア構成について説明する。なお、図11は、本実施形態を実現できるハードウェア構成を示す一例である。
【0107】
メインプロセッサ900は、DVD982(情報記憶媒体。CDでもよい。)に格納されたプログラム、通信インターフェース990を介してダウンロードされたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。
【0108】
コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、マトリクス演算(ベクトル演算)を高速に実行する。例えば、オブジェクトを移動させたり動作(モーション)させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0109】
ジオメトリプロセッサ904は、メインプロセッサ900上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ906は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする。これにより、オープニング画面やゲーム画面において、MPEG方式等で圧縮された動画像を表示できる。
【0110】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。
【0111】
また、この描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。1フレーム分の画像がフレームバッファ922に書き込まれるとその画像はディスプレイ912に表示される。
【0112】
なお、上記各プロセッサの各機能は、ハードウェアとして別々のプロセッサにより実現してもよいし、1つのプロセッサにより実現してもよい。また、プロセッサとしてCPUとGPUを設けた場合でも、いずれのプロセッサによりいかなる機能を実現するかは、任意に設定することができる。
【0113】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942やメモリカード944からのデータはシリアルインターフェース940を介して入力される。
【0114】
ROM950には、システムプログラムなどが格納される。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納される。なおROM950の代わりにハードディスクを利用してもよい。
【0115】
RAM960は、各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ間でのDMA転送を制御する。DVDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるDVD982にアクセスする。通信インターフェース990はネットワーク(通信回線、高速シリアルバス)を介して外部との間でデータ転送を行う。
【0116】
なお、本実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0117】
そして、本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0118】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0119】
本発明は、実施の形態で説明した構成と実質的に同一の構成(例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成)を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【符号の説明】
【0120】
P,Pa,Pb,Pc,Pd,Pe,Pf パーティクル、C キャラクタ、P0〜P5,Pn パーティクル、CM 仮想カメラ、100 処理部、110 オブジェクト空間設定部、112 移動・動作処理部、114 仮想カメラ制御部、116 ぼかし処理割り当て制御部、120 描画部、122 パーティクル発生部、124 距離情報算出部、126 ぼかし量計算部、128 パーティクルサイズ変更部、129 ぼかし画像生成部、130 音生成部、160 操作部、170 記憶部、172 主記憶部、174 描画バッファ、176 オブジェクトデータ記憶部、178 テクスチャ記憶部、179 Zバッファ、180 情報記憶媒体、190 表示部、192 音出力部、196 通信部、200 被写界深度、210 手前ぼかし範囲、220 奥ぼかし範囲、300,310 パーティクル、400 テクスチャ、500 通常画像、510 ぼかし画像

【特許請求の範囲】
【請求項1】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
所与のパーティクルを前記オブジェクト空間の所与の位置に発生させるパーティクル発生部と、
前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離情報を算出する距離情報算出部と、
前記パーティクルの位置に応じたぼかし量を計算するぼかし量計算部と、
前記距離情報に基づいて前記パーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、前記ぼかし対象範囲内にある場合は前記ぼかし量に応じた前記パーティクルのぼかし画像を生成するぼかし画像生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記ぼかし量に応じて前記パーティクルを拡大又は縮小するパーティクルサイズ変更部としてさらにコンピュータを機能させ、
前記ぼかし画像生成部は、
拡大又は縮小した後の前記パーティクルに対して、前記ぼかし量に応じた前記ぼかし画像を生成することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記ぼかし量計算部は、
前記ぼかし量として、前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離に応じたぼかし量を計算することを特徴とするプログラム。
【請求項4】
請求項1又は2において、
前記ぼかし量計算部は、
前記ぼかし量として、前記仮想カメラと前記パーティクルとの直線距離に応じたぼかし量を計算することを特徴とするプログラム。
【請求項5】
請求項2乃至4のいずれかにおいて、
前記コンピュータがメインプロセッサと描画プロセッサを含み、
前記距離情報算出部、前記ぼかし画像生成部及び前記パーティクルサイズ変更部の各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御するぼかし処理割り当て制御部としてさらにコンピュータを機能させることを特徴とするプログラム。
【請求項6】
請求項5において、
前記ぼかし処理割り当て制御部は、
前記各処理の現在の割り当て状況と、前記メインプロセッサと前記描画プロセッサのそれぞれの現在の処理負荷と、に基づいて、前記各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御することを特徴とするプログラム。
【請求項7】
請求項5において、
前記ぼかし処理割り当て制御部は、
描画対象となる前記パーティクルの数又は総面積に応じて、前記各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御することを特徴とするプログラム。
【請求項8】
コンピュータにより読み取り可能な情報記憶媒体であって、請求項1乃至7のいずれかに記載のプログラムを記憶していることを特徴とする情報記憶媒体。
【請求項9】
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
所与のパーティクルを前記オブジェクト空間の所与の位置に発生させるパーティクル発生部と、
前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離情報を算出する距離情報算出部と、
前記パーティクルの位置に応じたぼかし量を計算するぼかし量計算部と、
前記距離情報に基づいて前記パーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、前記ぼかし対象範囲内にある場合は前記ぼかし量に応じた前記パーティクルのぼかし画像を生成するぼかし画像生成部と、を含むことを特徴とする画像生成システム。

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

【図2】
image rotate

【図12】
image rotate


【公開番号】特開2011−209865(P2011−209865A)
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願番号】特願2010−75245(P2010−75245)
【出願日】平成22年3月29日(2010.3.29)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】