説明

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

【課題】ピクセルシェーダによるファーシェーディング処理を実現できるプログラム、情報記憶媒体、画像生成システム等の提供。
【解決手段】画像生成システムは、テクスチャ記憶部と、テクスチャを用いたピクセルシェーディング処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部を含む。テクスチャ記憶部はファーシェーディング用テクスチャを記憶する。画像生成部は、描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、ファーシェーディング用テクスチャのテクセル値をフェッチし、フェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【0002】
従来より、キャラクタ等のモデルオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。格闘ゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、操作部(ゲームコントローラ)を用いてキャラクタ(モデルオブジェクト)を操作し、相手プレーヤやコンピュータが操作する他キャラクタ(敵キャラクタ)と対戦することでゲームを楽しむ。
【0003】
このような画像生成システムでは、例えばキャラクタに生える毛や、キャラクタが着る毛皮の洋服などについてもリアルに表現できることが望ましい。このような毛質表現を実現するファーシェーディング(fur shading)に関する従来技術としては、例えば特許文献1に開示される技術がある。
【0004】
しかしながら、これまでのファーシェーディングでは、使用ポリゴン数の増加などが原因となって処理負荷が重くなるなどの課題があった。また、いわゆるピクセルシェーダによりファーシェーディングを実現する手法については提案されていなかった。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−36058号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の幾つかの態様によれば、ピクセルシェーダによるファーシェーディング処理を実現できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【0007】
本発明の一態様は、テクスチャを記憶するテクスチャ記憶部と、前記テクスチャを用いたピクセルシェーダ処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、前記テクスチャ記憶部は、ファーシェーディング用テクスチャを記憶し、前記画像生成部は、描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチし、フェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0008】
本発明の一態様によれば、テクスチャ記憶部にはファーシェーディング用テクスチャが記憶される。そして、描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ座標が順次シフトされながら、ファーシェーディング用テクスチャのテクセル値がフェッチされる。そしてフェッチされた複数のテクセル値の合成値が、描画対象ピクセルのピクセル値に設定されて、ファーシェーディング画像が生成される。このようにすれば、ピクセルシェーダによりファーシェーディング処理を実現することが可能になり、シェル法等に比べて少ない処理負荷やデータ量でファーシェーディング画像を生成できるようになる。
【0009】
また本発明の一態様では、前記仮想カメラのカメラ座標系において前記仮想カメラの視線方向に沿った座標軸をZ軸とし、前記Z軸に直交する座標軸をX軸、Y軸とした場合に、前記画像生成部は、描画対象ピクセルの前記法線ベクトルをXY平面に投影した投影法線ベクトルの方向の逆方向により特定される方向に、前記テクスチャ空間でのテクスチャ座標(U、V)を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチしてもよい。
【0010】
このようにすれば、投影法線ベクトルの方向により、テクスチャ座標(U、V)のシフト方向を特定し、ファーシェーディング用テクスチャのテクセル値をフェッチして、ファーシェーディング画像を生成できるようになる。従って、投影法線ベクトルを用いた簡素な処理でテクスチャ座標のシフト方向を設定して、テクセル値をフェッチできるようになる。
【0011】
また本発明の一態様では、前記画像生成部は、第1のフェッチ処理においてテクセル値C1=TEX(U1、V1)をフェッチし、第2のフェッチ処理においてテクセル値C2=TEX(U2、V2)をフェッチし・・・・第Nのフェッチ処理においてテクセル値CN=TEX(UN、VN)をフェッチし、フェッチされたテクセル値C1〜CNの合成処理を行うことで得られた合成値を、描画対象ピクセルのピクセル値に設定し、前記投影法線ベクトルの方向の逆方向は、テクスチャ座標(U1、V1)からテクスチャ座標(UN、VN)へと向かう方向であり、前記投影法線ベクトルの長さが長くなるほど、テクスチャ座標(U1、V1)からテクスチャ座標(UN、VN)への距離が長くなるようにしてもよい。
【0012】
このようにすれば、テクスチャ座標のシフト方向やシフト量を簡素な処理で得ることが可能になる。
【0013】
また本発明の一態様では、前記画像生成部は、K1×C1+K2×C2+・・・・+KN×CNの合成処理を行って合成値を取得し、ウェイト値Ki+1はウェイト値Ki(1≦i<N)よりも小さい値であってもよい。
【0014】
このようなウェイト値を設ければ、ファーシェーディングの毛根や毛先の表現等が可能になる。
【0015】
また本発明の一態様では、前記画像生成部は、モデルオブジェクトの第1の部分については、テクスチャがマッピングされた複数の積層されたポリゴンを用いたシェル法により、ファーシェーディング画像を生成し、前記モデルオブジェクトの第2の部分については、前記ファーシェーディング用テクスチャのフェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成してもよい。
【0016】
このようにすれば、リアルな毛質表現と処理負荷の軽減を両立できるようになる。
【0017】
また本発明の一態様では、前記第1の部分は、前記モデルオブジェクトの前面側に設定された領域であり、前記第2の部分は、前記モデルオブジェクトの背面側に設定された領域であってもよい。
【0018】
また本発明の一態様では、前記画像生成部は、合成対象となるテクセル値の個数を可変に設定してもよい。
【0019】
このようにすれば、例えば処理負荷や処理時間に応じて、合成対象となるテクセル値の個数を可変に設定(フェッチ回数を可変に設定)して、複数のテクセル値を合成できるようになる。
【図面の簡単な説明】
【0020】
【図1】本実施形態の画像生成システムの構成例。
【図2】図2(A)〜図2(C)はシェル法によるファーシェーディングの説明図。
【図3】シェル法によるファーシェーディングの説明図。
【図4】図4(A)〜図4(E)はピクセルシェーダによるファーシェーディング手法の説明図。
【図5】ファーシェーディング用テクスチャの例。
【図6】本実施形態のファーシェーディング手法を説明するフローチャート。
【図7】図7(A)、図7(B)はオブジェクト及びオブジェクトに設定される法線ベクトルの説明図。
【図8】図8(A)、図8(B)は仮想カメラと法線ベクトルの関係の説明図。
【図9】図9(A)〜図9(C)は本実施形態のファーシェーディング手法の説明図。
【図10】図10(A)〜図10(C)は本実施形態のファーシェーディング手法の説明図。
【図11】図11(A)〜図11(C)は本実施形態のファーシェーディング手法の説明図。
【図12】図12(A)、図12(B)はモデルオブジェクトの各部分に応じて異なるファーシェーディング手法を適用する手法の説明図。
【図13】本実施形態の全体的な処理のフローチャート。
【図14】図14(A)、図14(B)は画像生成システムのハードウェア構成例。
【発明を実施するための形態】
【0021】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0022】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお、本実施形態の画像生成システムの構成は図1に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0023】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向指示キー、操作ボタン、アナログスティック、レバー、各種センサ(角速度センサ、加速度センサ等)、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0024】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0025】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0026】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0027】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0028】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0029】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0030】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0031】
処理部100は、ゲーム演算部102、オブジェクト空間設定部104、移動処理部106、モーション処理部107、仮想カメラ制御部108、画像生成部120、音生成部130を含む。なおこれらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0032】
ゲーム演算部102はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0033】
オブジェクト空間設定部104は、移動体(人、ロボット、車、戦闘機、ミサイル、弾等)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクトデータ記憶部172には、オブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【0034】
移動処理部106は、モデルオブジェクト等の移動オブジェクトを移動させる処理を行う。例えば操作部160によりプレーヤが入力した操作データや、プログラム(移動アルゴリズム)や、各種データなどに基づいて、移動オブジェクトをオブジェクト空間内で移動させる。具体的には、移動オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動処理やモーション処理や画像生成処理を行う時間の単位である。
【0035】
モーション処理部107は、キャラクタ等のモデルオブジェクトにモーション(アニメーション)を行わせるモーション処理(モーション再生、モーション生成)を行う。このモーション処理は、モデルオブジェクトのモーションを、モーションデータ記憶部173に記憶されているモーションデータに基づいて再生することなどで実現できる。
【0036】
仮想カメラ制御部108は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。
【0037】
例えば仮想カメラによりキャラクタ、車などのモデルオブジェクト(移動体)を後方から撮影する場合には、モデルオブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動処理部106で得られたモデルオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0038】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ176(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0039】
例えば画像生成部120は、頂点処理部122、ピクセル処理部124を含むことができる。
【0040】
頂点処理部122(頂点シェーダ、ジオメトリーシェーダ)は頂点処理を行う。具体的には、オブジェクトの頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)に基づいて、頂点処理(頂点シェーダによるシェーディング)を行う。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0041】
頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。
【0042】
ピクセル処理部124(ピクセルシェーダ)はピクセル処理を行う。具体的には、ラスタライズ後に、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)を行う。
【0043】
ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャ記憶部175からのテクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ174に出力(描画)する。即ち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0044】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現できる。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0045】
また画像生成部120はテクスチャマッピング処理等を行う。テクスチャマッピング処理(テクスチャフェッチ・テクスチャサンプリング処理)は、テクスチャ記憶部175に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングする処理である。具体的には、オブジェクト(プリミティブ面)の頂点等に設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部175からテクスチャ(色、α値などの表面プロパティ)を読み出す。そして、2次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。
【0046】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0047】
そして本実施形態では、テクスチャ記憶部175は、ファーシェーディング用テクスチャを記憶する。そして画像生成部120は、ファーシェーディング用テクスチャなどのテクスチャを用いたピクセルシェーダ処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する。
【0048】
具体的には画像生成部120(ピクセル処理部124)は、描画対象ピクセル(ピクセルシェーダ処理の対象となるピクセル)の法線ベクトルにより特定される方向(例えば投影法線ベクトルの方向の逆方向、或いはその逆方向と所定パラメータ等により特定される方向)に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、テクスチャ記憶部175のファーシェーディング用テクスチャのテクセル値(カラー値)をフェッチ(サンプリング)する。そしてフェッチにより得られた複数のテクセル値の合成値(合成カラー値)を描画対象ピクセルのピクセル値に設定(描画)することで、ファーシェーディング画像を生成する。なお描画対象ピクセルの法線ベクトルは、オブジェクトの頂点の法線ベクトルを補間することなどにより取得できる。
【0049】
また仮想カメラのカメラ座標系(視点座標系)において仮想カメラの視線方向に沿った座標軸をZ軸(第3の座標軸)とし、Z軸に直交する座標軸をX軸、Y軸(第1、第2の座標軸)としたとする。この場合に画像生成部120は、描画対象ピクセルの法線ベクトルをXY平面(X軸、Y軸を含む平面。第1、第2の座標軸を含む平面)に投影した投影法線ベクトルの方向の逆方向により特定される方向(投影法線ベクトルの方向の逆方向と所定パラメータ等により特定される方向)に、テクスチャ空間でのテクスチャ座標(U、V)を順次シフト(移動)しながら、ファーシェーディング用テクスチャのテクセル値をフェッチする。そしてフェッチされた複数のテクセル値を合成することで、描画対象ピクセルのピクセル値を取得する。
【0050】
更に具体的には画像生成部120は、第1のフェッチ処理においてテクセル値C1=TEX(U1、V1)をフェッチし、第2のフェッチ処理においてテクセル値C2=TEX(U2、V2)をフェッチする。同様にして第iのフェッチ処理(1≦i<N)においてテクセル値Ci=TEX(Ui、Vi)をフェッチし、最後に第Nのフェッチ処理においてテクセル値CN=TEX(UN、VN)をフェッチする。そして、フェッチされたこれらのテクセル値C1〜CNの合成処理を行うことで得られた合成値を、描画対象ピクセルにピクセル値として書き込む。
【0051】
この場合、各描画対象ピクセルの法線ベクトルをカメラ座標系のXY平面に投影した投影法線ベクトルの方向の逆方向(逆方向に対応する方向)が、テクスチャ座標(U1、V1)からテクスチャ座標(UN、VN)へと向かう方向になる。そして投影法線ベクトルの長さが長くなるほど、テクスチャ座標(U1、V1)からテクスチャ座標(UN、VN)への距離が長くなる。このようにすることで、法線ベクトルを用いたピクセルシェーダによるファーシェーディング処理を実現できる。
【0052】
また画像生成部120は、K1×C1+K2×C2+・・・・+KN×CNの合成処理を行って合成値を取得する。この場合に、ウェイト値Ki+1がウェイト値Ki(1≦i<N)よりも小さい値になることが望ましい。このようにすれば、仮想カメラの視点から見た場合に、毛根から毛先に向かって太くなって見える毛の画像表現を実現できる。
【0053】
またモデルオブジェクトの各部分について、適用するファーシェーディングの手法を異ならせてもよい。具体的には、画像生成部120は、キャラクタや服などのモデルオブジェクトの第1の部分については、テクスチャがマッピングされた複数の積層されたポリゴンを用いたシェル法により、ファーシェーディング画像を生成する。即ち、毛の断面図を表すテクスチャが各ポリゴンにマッピングされた複数のポリゴンを積層し、これらの複数のポリゴンを描画することでファーシェーディング画像を生成する。一方、モデルオブジェクトの第2の部分については、ファーシェーディング用テクスチャのフェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定する手法により、ファーシェーディング画像を生成する。
【0054】
ここで第1の部分は、例えばゲーム等において仮想カメラが注視する可能性或いは頻度が高い領域である。具体的には、例えばモデルオブジェクトの前面側に設定された領域である。更に具体的には、キャラクタの顔に近い領域である。この第1の部分については、シェル法のファーシェーディング手法により画像を生成することで、よりリアルな毛質表現を実現する。なお第1の部分に対して、フィン法等の他のファーシェーディング手法を適用してもよい。
【0055】
一方、第2の部分は、ゲーム等において仮想カメラが注視する可能性或いは頻度が低い領域である。具体的には、第2の部分は、モデルオブジェクトの背面側に設定された領域である。或いはモデルオブジェクトの前面側の領域であっても、仮想カメラが注視する可能性或いは頻度が低い領域は、第2の部分に設定できる。この第2の部分については、ピクセルシェーダを用いた本実施形態のファーシェーディング手法により画像を生成することで、少ない処理負荷で毛質表現を実現する。このようにすれば、シェル法のファーシェーディング手法を全ての領域に適用すると処理負荷が重くなりすぎる場合に、第1の部分よりも広い第2の部分に対してピクセルシェーダを用いた本実施形態のファーシェーディング手法を適用することで、リアルな毛質表現と処理負荷の軽減を両立できるようになる。
【0056】
また画像生成部120は、合成対象となるテクセル値の個数(テクセル値のフェッチ回数)を可変に設定にしてもよい。例えば処理負荷が重かったり処理時間が足りなかった場合には、合成対象となるテクセル値の個数を少なくする。これにより、処理負荷を軽減したり、処理時間を節約できる。一方、処理負荷や処理時間に余裕がある場合には、合成対象となるテクセル値の個数を多くする。これにより、合成対象となるテクセル値の個数を増やして、より品質の高いファーシェーディング画像を生成できるようになる。
【0057】
例えば合成対象となるテクセル値の個数(フェッチ回数)は、処理部(CPU)の処理能力に応じて変更してもよい。即ち、処理能力が高い場合には、合成対象となるテクセル値の個数を多くし、処理能力が低い場合には、合成対象となるテクセル値の個数を少なくする。
【0058】
2.本実施形態の手法
2.1 ファーシェーディング
まず図2(A)〜図2(C)を用いて、シェル法によるファーシェーディングについて説明する。このシェル法では、図2(A)に示すような毛を表現するために、図2(B)に示すように毛を横方向に輪切りにしたような毛の断面図のテクスチャを用意する。そして図2(C)に示すように、例えばモデルオブジェクトの法線方向に一定の間隔を空けて複数のポリゴンを配置し、これらの複数のポリゴンの各ポリゴンに対して、図2(B)のテクスチャをマッピングする。すると、断面図のテクスチャが毛の方向に重なることで、仮想カメラの視点から見ると、オブジェクトの表面に毛が生えて見えるような表現になる。なお図2(B)のテクスチャに対して半透明処理用のα値等を設定することで、毛の透き通った質感等も表現できるようになる。
【0059】
さて図2(A)〜図2(C)のシェル法によるファーシェーディングでは、モデルオブジェクトの毛質を表現したい部分に、例えば4〜8枚のポリゴンを積層して配置する必要がある。例えば図3の毛皮のコートのモデルオブジェクトのE1やE2に示す領域にファーシェーディングを施す場合には、これらの領域に対して複数のポリゴンを積層して配置する必要がある。このため、モデルオブジェクトを構成するポリゴンの枚数が増えてしまい、処理負荷やデータ量が増加してしまう。特に、モデルオブジェクトの全ての部分にシェル法によるファーシェーディングを適用すると、モデルオブジェクトを構成するポリゴンの枚数が数倍になるおそれがある。この場合に、いわゆるジオメトリシェーダにより、積層されるポリゴンをリアルタイムに動的に生成する手法も考えれるが、この手法も処理負荷の増加につながると共に、このようなジオメトリシェーダを有しない画像生成システムでは、この手法を採用できないという問題がある。
【0060】
そこで本実施形態では、ピクセルシェーダを利用したファーシェーディング手法を採用している。即ち仮想カメラ(画面)に対する法線の傾きでテクスチャのマルチサンプリングを行うことで、擬似的なファーシェーディングを実現する。
【0061】
例えば図4(A)〜図4(E)において、PIXは、ピクセルシェーダの描画対象(処理対象)となるピクセルである。そしてFUR1は描画対象ピクセルPIXから生えている毛である。そして毛FUR1の画像は、毛根では太く、毛先に行くにしたがって細くなる画像になっている。このような毛FUR1の画像を生成する場合に、ピクセルシェーダではピクセル単位でしか描画ができないため、毛FUR1の画像を一度の描画で生成することはできない。そこで本実施形態では、テクスチャのマルチサンプリングにより、このような毛画像を生成する手法を採用する。
【0062】
例えば図4(B)のFUR2は、FUR1の毛根のピクセルPIXの右隣のピクセルから生えている毛である。また図4(C)のFUR3は、FUR2の毛根の右隣のピクセルから生えている毛であり、図4(D)のFUR4は、FUR3の毛根の右隣のピクセルから生えている毛である。また図4(E)のFUR5は、FUR4の毛根の右隣のピクセルから生えている毛である。
【0063】
前述のようにピクセルシェーダでは、ピクセル単位でしか描画ができない。このため本実施形態においては、図4(A)では、毛FUR1の毛根の画像を描画対象ピクセルPIXに描画し、図4(B)では、隣の毛FUR2の毛根から例えば1ピクセル(テクセル)分だけ毛先側の画像を、描画対象ピクセルPIXに描画し、図4(C)では、更に隣の毛FUR3の毛根から例えば2ピクセル分だけ毛先側の画像を、描画対象ピクセルPIXに描画する。そして最後の図4(E)では、毛FUR5の毛先(末端)の画像を描画する。
【0064】
図4(A)〜図4(E)のようにすれば、ピクセルシェーダを用いて擬似的なファーシェーディング処理を実現できる。そして図4(A)〜図4(E)の描画を実現するために、テクスチャのマルチサンプリングと、各ピクセルの法線ベクトルの情報を用いる。
【0065】
例えば図5に本実施形態のファーシェーディング用のテクスチャの例を示す。本実施形態では、このファーシェーディング用のテクスチャのテクセル値を複数回サンプリングするマルチサンプリング手法を採用する。
【0066】
図6に本実施形態のファーシェーディング手法を実現する処理のフローチャートを示す。まず、テクスチャ座標(U1、V1)によってサンプリングされるテクセル値C1=TEX(U1、V1)をフェッチする(ステップS11)。このテクセル値は、ファーシェーディングを行わない通常のテクスチャマッピングにおいてもフェッチされて、描画対象ピクセルPIXに書き込まれるテクセル値(色データ)であり、例えば毛の毛根の画像に対応するテクセル値(図4(A)のFUR1の毛根画像)である。
【0067】
次に、テクスチャ座標を(U1、V1)から(U2、V2)にシフトさせて、テクスチャ座標(U2、V2)によってサンプリングされるテクセル値C2=TEX(U2、V2)をフェッチする(ステップS12)。このテクセル値は、隣の毛(図4(B)のFUR2)の毛根から例えば1ピクセル分だけ毛先側の画像に対応するテクセル値である。
【0068】
次に、テクスチャ座標を(U2、V2)から(U3、V3)にシフトさせて、テクスチャ座標(U3、V3)によってサンプリングされるテクセル値C3=TEX(U3、V3)をフェッチする(ステップS13)。このテクセル値は、更に隣の毛(図4(B)のFUR3)の毛根から例えば2ピクセル分だけ毛先側の画像に対応するテクセル値である。
【0069】
ステップS14、S15、S16においても、ステップS11、S12、S13と同様に、テクスチャ座標を順次シフトしながら、ファーシェーディング用テクスチャのテクセル値をフェッチする。
【0070】
このようにテクスチャ座標をずらしながらテクスチャのマルチサンプリングを行うことで、描画対象ピクセルPIXに対応して、複数のテクセル値C1〜C6がフェッチされる。そして、これらのフェッチされたテクセル値C1〜C6の合成処理を行う(ステップS17)。具体的には、合成値CSY=K1×C1+K2×C2+K3×C3+K4×C4+K5×C5+K6×C6を求め、求められた合成値CSYを描画対象ピクセルのピクセル値(カラー値)として出力する。
【0071】
なおウェイト値K1〜K6(合成係数)では、ウェイト値Ki+1がウェイト値Ki(1≦i<N)よりも小さい値になるという関係が成り立つ。即ちK1からK6に行くに従って、ウェイト値を徐々に小さくする。こうすることで、図4(A)〜図4(E)に示すように、毛根の画像のウェイト値(K1)が最も高くなり、毛先の画像のウェイト値(K6)が最も低くなるようになる。
【0072】
なお図6では、テクセル値のフェッチ回数N(合成対象となるテクセル値の個数)が6回である場合について示しているが、フェッチ回数Nは任意である。例えばCPUの処理能力が高い場合や処理に余裕がある場合には、フェッチ回数Nを増やし、CPUの処理能力が低い場合や処理に余裕がない場合には、フェッチ回数Nを減らせばよい。
【0073】
次にテクスチャ座標のシフト手法の詳細について説明する。図7(A)はテクスチャのマッピング対象となるオブジェクトOBの例である。ここでは説明を簡素化するために、オブジェクトOBは球形状であるとして説明を行う。
【0074】
図7(B)に示すように、オブジェクトOBの各頂点には法線ベクトル(法線情報)が設定されている。ピクセルシェーダ処理を行う際には、この頂点の法線ベクトルを補間することで、描画対象ピクセルPIXの法線ベクトルを取得する。
【0075】
図8(A)に、描画対象ピクセルPIXに設定される法線ベクトルN(Nx、Ny、Nz)と仮想カメラVCの関係を示す。ここで、仮想カメラVCのカメラ座標系において、仮想カメラVCの視線方向DVに沿った座標軸をZ軸(第3の座標軸)とし、Z軸に直交する座標軸をX軸、Y軸(第1、第2の座標軸)とする。すると、描画対象ピクセルPIXの法線ベクトルN(Nx、Ny、Nz)をXY平面に投影した投影法線ベクトルNP(Nx、Ny)は、図8(B)に示すようなベクトルになる。この投影法線ベクトルNPは、仮想カメラVCから見える法線ベクトルNに相当する。本実施形態では、この投影法線ベクトルNPから、フェッチすべきテクスチャのテクスチャ座標(U、V)を求める。具体的には、投影法線ベクトルNPのX座標Nx、Y座標Nyを用いた所定の演算式(或いは演算テーブル)により、テクスチャ座標(U、V)を求める。
【0076】
例えば図9(A)では、ピクセルシェーダの描画対象ピクセルPIXは中心点(視線方向DVと球オブジェクトOBが交わる点)に設定されている。そして描画対象ピクセルPIXの法線ベクトルNの方向は、仮想カメラVCの視線方向DVと平行になっている。即ち法線ベクトルNは仮想カメラVCの方に向いている。従って仮想カメラVCからは図9(B)のように見え、投影法線ベクトルNPのX座標Nx、Y座標Nyは共に0になる。このように図9(B)では、仮想カメラVCから見て投影法線ベクトルNPは点に見える。従ってこの場合には図9(C)に示すように、テクスチャ空間において同じ点(同じテクスチャ座標の点)を6回サンプリングしてフェッチする。
【0077】
具体的には図6のステップS11の第1のフェッチ処理では、対応点FC1のテクスチャ座標(U1、V1)によりテクセル値C1=TEX(U1、V1)がフェッチされる。ここで対応点のテクスチャ座標(U1、V1)は、通常のテクスチャマッピングにおいて描画対象ピクセルPIXに対応づけられるテクスチャ座標である。従って、ステップS11の第1のフェッチ処理FC1では、その描画対象ピクセルPIXに対応づけられるテクセル値C1=TEX(U1、V1)がフェッチされる。
【0078】
一方、ステップS12〜S16の第2〜第6のフェッチ処理においても、対応点FC1と同じ点FC2〜FC6のテクスチャ座標のテクセル値がフェッチされる。即ちステップS12〜S16のテクスチャ座標(U2、V2)はステップS11のテクスチャ座標(U1、V1)と等しくなり、ステップS12〜S16でフェッチされるテクセル値C2〜C6も、ステップS11でフェッチされるテクセル値C1と等しくなる。
【0079】
そして、ステップS11〜S16でフェッチされた同じ値のテクセル値(=C1)が、ステップS17で合成され、合成値CSY=(K1+K2+K3+K4+K5+K6)×C1が描画対象ピクセルPIXに描画される。
【0080】
図10(A)では、描画対象ピクセルPIXは中心点(視線方向DVと球オブジェクトOBが交わる点)よりも左側にあり、法線ベクトルNの方向は図9(A)に比べて左向きになっている。従って仮想カメラVCからは図10(B)のように見え、投影法線ベクトルNPのX座標Nxは負の値になり、Y座標Nyは0になる。このように図10(B)では、仮想カメラVCから見て投影法線ベクトルNPの向きは左方向になる。従ってこの場合には図10(C)に示すように、対応点FC1から右方向(NPの方向と逆方向)に6回サンプリングしてフェッチする。
【0081】
具体的には図6のステップS11の第1のフェッチ処理では、対応点FC1のテクスチャ座標(U1、V1)によりテクセル値C1=TEX(U1、V1)がフェッチされる。次のステップS12の第2のフェッチ処理では、FC1の右方向の点FC2のテクスチャ座標(U2、V2)によりテクセル値C2=TEX(U2、V2)がフェッチされる。次のステップS13の第3のフェッチ処理では、FC2の右方向の点FC3のテクスチャ座標(U3、V3)によりテクセル値C3=TEX(U3、V3)がフェッチされる。ステップS14〜S16の第4〜第6のフェッチ処理も同様である。
【0082】
そして、ステップS11〜S16でフェッチされたテクセル値C1〜C6がステップS17で合成され、合成値CSY=K1×C1+K2×C2+K3×C3+K4×C4+K5×C5+K6×C6が、描画対象ピクセルPIXに描画される。
【0083】
即ち図10(C)において、点FC1のウェイト値K1は最も大きくなっており、点FC6のウェイト値K6は最も小さくなっている。そして、点FC1でフェッチされるテクセル値C1により得られるK1×C1は、図4(A)の毛FUR1の毛根の画像に相当し、点FC6でフェッチされるテクセル値C6により得られるK6×C6は、図4(E)の毛FUR5の毛先の画像に相当する。つまり図10(C)のようにテクセル値C1〜C6をフェッチして、合成値CSY=K1×C1+K2×C2+K3×C3+K4×C4+K5×C5+K6×C6を描画対象ピクセルPIXに描画することは、図4(A)〜図4(E)での描画対象ピクセルPIXへの描画に相当する。
【0084】
図11(A)では、描画対象ピクセルPIXは中心点よりも右上にあり、法線ベクトルNの方向は図9(A)に比べて右上向きになっている。従って仮想カメラVCからは図11(B)のように見え、投影法線ベクトルNPのX座標Nx、Y座標Nyは共に正の値になる。このように図11(B)では、仮想カメラVCから見て投影法線ベクトルNPの向きは右上方向になる。従ってこの場合には図11(C)に示すように、対応点FC1から左下方向(NPの方向と逆方向)に6回サンプリングしてフェッチする。
【0085】
具体的には図6のステップS11の第1のフェッチ処理では、対応点FC1のテクスチャ座標(U1、V1)によりテクセル値C1=TEX(U1、V1)がフェッチされる。次のステップS12の第2のフェッチ処理では、FC1の左下方向の点FC2のテクスチャ座標(U2、V2)によりテクセル値C2=TEX(U2、V2)がフェッチされる。次のステップS13の第3のフェッチ処理では、FC2の左下方向の点FC3のテクスチャ座標(U3、V3)によりテクセル値C3=TEX(U3、V3)がフェッチされる。ステップS14〜S16の第4〜第6のフェッチ処理も同様である。
【0086】
そして、ステップS11〜S16でフェッチされたテクセル値C1〜C6がステップS17で合成され、合成値CSY=K1×C1+K2×C2+K3×C3+K4×C4+K5×C5+K6×C6が、描画対象ピクセルPIXに描画される。
【0087】
以上のように本実施形態では、投影法線ベクトルNPの方向の逆方向により特定される方向に、テクスチャ座標(U、V)を順次シフトしながらファーシェーディング用テクスチャのテクセル値がフェッチされる。
【0088】
例えば図10(B)では、投影法線ベクトルNPの方向は左方向である。従ってこの場合には、図10(C)の点FC1〜FC6に示すように、投影法線ベクトルNPの方向と逆方向の右方向に、テクスチャ座標(U、V)を順次シフトしながらテクセル値がフェッチされる。また図11(B)では、投影法線ベクトルNPの方向は右上方向である。従ってこの場合には、図11(C)の点FC1〜FC6に示すように、投影法線ベクトルNPの方向と逆方向の左下方向に、テクスチャ座標(U、V)を順次シフトしながらテクセル値がフェッチされる。
【0089】
また本実施形態では、投影法線ベクトルNPの方向の逆方向は、図6、図10(C)、図11(C)に示すように、テクスチャ座標(U1、V1)からテクスチャ座標(U6、V6)(広義にはテクスチャ座標(UN、VN))へと向かう方向である。そして投影法線ベクトルNPの長さが長くなるほど、テクスチャ座標(U1、V1)からテクスチャ座標(U6、V6)への距離が長くなる。
【0090】
例えば図10(B)に比べて図11(B)の方が、投影法線ベクトルNPの長さが長い。従って、図10(C)に比べて図11(C)の方が、FC1からFC6への距離であるテクスチャ座標(U1、V1)からテクスチャ座標(U6、V6)への距離が長くなる。このようにすれば、例えば球オブジェクトOBの中心点では、毛の長さが最も短くなり、境界に近づくにつれて毛が長くなるように見えるファーシェーディングを実現できる。
【0091】
以上のように本実施形態では、例えば図6に示すように、ピクセルシェーダによる複数回のテクセル値のフェッチ処理と、得られたテクセル値の合成処理を行うだけで、ファーシェーディング処理を実現できる。従って、シェル法等に比べて少ない処理負荷でファーシェーディング画像を生成することが可能になる。
【0092】
なお図10(A)〜図11(C)は、テクスチャ座標をシフトさせる方向(FC1からFC6への向かう方向)が、投影法線ベクトルNPの方向の逆方向である場合を例にとり説明したが、本実施形態はこれに限定されない。例えばパラメータの調整により、テクスチャ座標をシフトさせる方向を、投影法線ベクトルNPの逆方向から変化させてもよい。例えば方向調整パラメータを用いて、投影法線ベクトルNPを回転させる処理を行うことで、テクスチャ座標をシフトさせる方向を変化させる。このようにすることで、いわゆる毛の寝る方向(毛並みの方向)を調整できるようになる。
【0093】
或いは、テクスチャ座標のシフト距離FC1からFC6への距離)も、パラメータにより調整してもよい。例えば長さ調整パラメータを用いて、投影法線ベクトルNPの長さを長くしたり、短くする。このようにすることで、ファーシェーディングにおける毛の長さを調整できるようになる。
【0094】
2.2 ファーシェーディング手法の使い分け
本実施形態では、モデルオブジェクトの各部分毎に、適用するファーシェーディングの手法を異ならせてもよい。例えば図12(A)、図12(B)は、毛皮のコートに対するファーシェーディング処理の例である。
【0095】
図12(A)に示すように、毛皮のコートでは、襟の部分や肩の部分については、仮想カメラにより頻繁に写され、目立つ部分である。また、襟の部分や肩の部分では、毛皮の立体的なふさふさ感を表現することが望ましい。従って、このような襟の部分や肩の部分(広義には第1の部分、前面側)では、図2(A)〜図2(C)で説明したシェル法によるファーシェーディング手法によりファーシェーディング画像を生成する。即ち、この部分には、テクスチャがマッピングされた複数のポリゴンを積層し、これらの複数のポリゴンを用いたシェル法により、ファーシェーディング画像を生成する。このように、毛皮のコートやキャラクタなどのモデルオブジェクトの前面側では、シェル法によるファーシェーディング処理を行う。
【0096】
一方、図12(B)に示すように、毛皮の背中側(背面側)は、仮想カメラによりあまり写されない領域であり、目立たない領域である。そして、このような広い範囲の背中の領域に対して、シェル法によるファーシェーディング処理を施すと、ポリゴン数が増えてしまい,処理負荷が増大する。従って、このような背中側(広義には第2の部分、背面側)では、図6で説明したように、複数のテクセル値をフェッチし、フェッチされた複数のテクセル値の合成値をピクセル値に設定するファーシェーディング手法により、ファーシェーディング画像を生成する。このようにすれば、シェル法を全ての領域に適用すると処理負荷が重くなりすぎる場合に、背中側(或いは前面側の目立たない領域)に対してピクセルシェーダを用いた本実施形態のファーシェーディング手法を適用することで、リアルな毛質表現と処理負荷の軽減を両立できるようになる。
【0097】
3.処理例
次に本実施形態の処理例について図13のフローチャートを用いて説明する。図13は画像生成システムの全体的な処理の例を表すフローチャートである。
【0098】
まず、モデルオブジェクトなどの複数のオブジェクトをオブジェクト空間に配置設定するオブジェクト空間設定処理を行う(ステップS1)。そして、モデルオブジェクトなどの移動体をオブジェクト空間内で移動させる移動処理や、モデルオブジェクトの動きを表現するモーション処理などを行う(ステップS2、S3)。具体的には、操作部からの操作データ等に基づいてモデルオブジェクトを移動させる移動処理を行ったり、モデルオブジェクトのスケルトンを構成する各骨を、モーションデータに基づいて動かすモーション処理を行う。
【0099】
次に頂点シェーダプログラムによる頂点シェーダ処理を行う(ステップS4)。この頂点シェーダ処理(頂点処理)では、頂点単位での座標変換処理(ローカル座標系からワールド座標系への変換等)、頂点単位での陰影処理(シェーディング処理)、頂点単位での光源処理(ライティング処理)、テクスチャ座標の演算処理などが行われる。例えばモーション処理後のモデルオブジェクトの頂点位置を求める処理を、この頂点シェーダ処理により実現してもよい。そして、この頂点シェーダ処理により得られた頂点座標、視線ベクトル、光源ベクトル、法線ベクトル等は、出力レジスタに格納され、ピクセルシェーダ処理に渡される。
【0100】
次に、ピクセルシェーダプログラムによるピクセルシェーダ処理を開始する(ステップS5)。このピクセルシェーダ処理では、ラスタライズ後にピクセル単位の様々な処理が行われる。具体的には、ピクセル単位での陰影処理(シェーディング処理)、テクスチャマッピング処理、半透明処理などが行われる。これにより、表示部に表示される最終的な画像(ゲーム画像)が生成される。
【0101】
図6で説明した本実施形態のファーシェーディング処理は図13のステップS5で実行できる。これによりピクセルシェーダを用いたファーシェーディング画像が生成されるようになる。
【0102】
4.ハードウェア構成
図14(A)に本実施形態を実現できるハードウェアの構成例を示す。
【0103】
CPU900(メインプロセッサ)は、複数のCPUコア1、CPUコア2、CPUコア3を含むマルチコアプロセッサである。またCPU900は図示しないキャッシュメモリを含む。CPUコア1、2、3の各々にはベクタ演算器等が設けられている。そしてCPUコア1、2、3の各々は、例えば2つのH/Wスレッド処理をコンテクストスイッチをすることなしに並列実行でき、マルチスレッド機能がハードウェアでサポートされている。そして3つのCPUコア1、2、3の合計で、6つのH/Wスレッド処理を並列実行できる。
【0104】
GPU910(描画プロセッサ)は、頂点処理やピクセル処理を行って、描画(レンダリング)処理を実現する。具体的には、シェーダプログラムに従って、頂点データの作成・変更やピクセル(フラグメント)の描画色の決定を行う。1フレーム分の画像がVRAM920(フレームバッファ)に書き込まれると、その画像はビデオ出力を介してTVなどのディスプレイに表示される。なおメインメモリ930はCPU900やGPU910のワークメモリとして機能する。またGPU910では、複数の頂点スレッド、複数のピクセルスレッドが並列実行され、描画処理のマルチスレッド機能がハードウェアでサポートされている。またGPU910にはハードウェアのテッセレータも備えられている。またGPU910は、頂点シェーダとピクセルシェーダとがハードウェア的に区別されていないユニファイド・シェーダ・タイプとなっている。
【0105】
ブリッジ回路940(サウスブリッジ)は、システム内部の情報流通を制御する回路であり、USBコントローラ(シリアルインターフェース)、ネットワークの通信コントローラ、IDEコントローラ、或いはDMAコントローラなどのコントローラを内蔵する。そしてこのブリッジ回路940により、ゲームコントローラ942、メモリーカード944、HDD946、DVDドライブ948との間のインターフェース機能が実現される。
【0106】
なお本実施形態を実現できるハードウェア構成は図14(A)に限定されず、例えば図14(B)のような構成であってもよい。
【0107】
図14(B)ではCPU902が、プロセッサエレメントPPと8つのプロセッサエレメントPE1〜PE8を含む。プロセッサエレメントPPは汎用的なプロセッサコアであり、プロセッサエレメントPE1〜PE8は比較的シンプルな構成のプロセッサコアである。そしてプロセッサエレメントPPとプロセッサエレメントPE1〜PE8のアーキテクチャは異なっており、プロセッサエレメントPE1〜PE8は、複数のデータに対して1命令で同じ処理を同時にできるSIMD型のプロセッサコアとなっている。これによりストリーミング処理などのマルチメディア処理を効率的に実行できる。プロセッサエレメントPPは、2つのH/Wスレッド処理を並列実行でき、プロセッサエレメントPE1〜PE8の各々は、1つのH/Wスレッド処理を実行できる。従って、CPU902では、合計で10個のH/Wスレッド処理の並列実行が可能になる。
【0108】
図14(B)では、GPU912とCPU902の連携が密になっており、GPU912は、CPU902側のメインメモリ930に直接にレンダリング処理を行うことができる。また例えばCPU902がジオメトリ処理を行って、頂点データを転送したり、GPU912からCPU902にデータを戻すことも容易にできる。またCPU902が、レンダリングのプリプロセッシング処理やポストプロセッシング処理を行うことも容易であり、テッセレーション(平面分割)やドットフィルをCPU902が実行できる。例えば抽象度の高い処理はCPU902が行い、抽象度が低い細かな処理はGPU912が行うというような役割分担が可能である。
【0109】
なお本実施形態の各部の処理をハードウェアとプログラムにより実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアであるプロセッサ(CPU、GPU)に処理を指示すると共に、必要であればデータを渡す。そして、プロセッサは、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0110】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(第1の部分、第2の部分等)と共に記載された用語(前面側、背面側等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、法線ベクトルの方向の取得処理、テクスチャ座標のシフト処理、テクセル値のフェッチ処理、テクセル値の合成処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【0111】
OB オブジェクト、PIX 描画対象ピクセル、N 法線ベクトル、
NP 投影法線ベクトル、VC 仮想カメラ、DV 視線方向、
100 処理部、102 ゲーム演算部、104 オブジェクト空間設定部、
106 移動処理部、107 モーション処理部、108 仮想カメラ制御部、
120 画像生成部、122 頂点処理部、124 ピクセル処理部、
130 音生成部、160 操作部、170 記憶部、
172 オブジェクトデータ記憶部、173 モーションデータ記憶部、
174 モデルデータ記憶部、175 テクスチャ記憶部、176 描画バッファ、
180 情報記憶媒体、190 表示部、192 音出力部、194 補助記憶装置、
196 通信部

【特許請求の範囲】
【請求項1】
テクスチャを記憶するテクスチャ記憶部と、
前記テクスチャを用いたピクセルシェーダ処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部として、
コンピュータを機能させ、
前記テクスチャ記憶部は、ファーシェーディング用テクスチャを記憶し、
前記画像生成部は、
描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチし、フェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成することを特徴とするプログラム。
【請求項2】
請求項1において、
前記仮想カメラのカメラ座標系において前記仮想カメラの視線方向に沿った座標軸をZ軸とし、前記Z軸に直交する座標軸をX軸、Y軸とした場合に、
前記画像生成部は、
描画対象ピクセルの前記法線ベクトルをXY平面に投影した投影法線ベクトルの方向の逆方向により特定される方向に、前記テクスチャ空間でのテクスチャ座標(U、V)を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチすることを特徴とするプログラム。
【請求項3】
請求項2において、
前記画像生成部は、
第1のフェッチ処理においてテクセル値C1=TEX(U1、V1)をフェッチし、第2のフェッチ処理においてテクセル値C2=TEX(U2、V2)をフェッチし・・・・第Nのフェッチ処理においてテクセル値CN=TEX(UN、VN)をフェッチし、フェッチされたテクセル値C1〜CNの合成処理を行うことで得られた合成値を、描画対象ピクセルのピクセル値に設定し、
前記投影法線ベクトルの方向の逆方向は、テクスチャ座標(U1、V1)からテクスチャ座標(UN、VN)へと向かう方向であり、前記投影法線ベクトルの長さが長くなるほど、テクスチャ座標(U1、V1)からテクスチャ座標(UN、VN)への距離が長くなることを特徴とするプログラム。
【請求項4】
請求項3において、
前記画像生成部は、
K1×C1+K2×C2+・・・・+KN×CNの合成処理を行って合成値を取得し、
ウェイト値Ki+1はウェイト値Ki(1≦i<N)よりも小さい値であることを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記画像生成部は、
モデルオブジェクトの第1の部分については、テクスチャがマッピングされた複数の積層されたポリゴンを用いたシェル法により、ファーシェーディング画像を生成し、
前記モデルオブジェクトの第2の部分については、前記ファーシェーディング用テクスチャのフェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成することを特徴とするプログラム。
【請求項6】
請求項5において、
前記第1の部分は、前記モデルオブジェクトの前面側に設定された領域であり、前記第2の部分は、前記モデルオブジェクトの背面側に設定された領域であることを特徴とするプログラム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記画像生成部は、
合成対象となるテクセル値の個数を可変に設定することを特徴とするプログラム。
【請求項8】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至7のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項9】
テクスチャを記憶するテクスチャ記憶部と、
前記テクスチャを用いたピクセルシェーディング処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、
前記テクスチャ記憶部は、ファーシェーディング用テクスチャを記憶し、
前記画像生成部は、
描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチし、フェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成することを特徴とする画像生成システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

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

【図5】
image rotate


【公開番号】特開2011−95937(P2011−95937A)
【公開日】平成23年5月12日(2011.5.12)
【国際特許分類】
【出願番号】特願2009−248308(P2009−248308)
【出願日】平成21年10月28日(2009.10.28)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】