説明

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

【課題】モデルオブジェクトのよりリアルな影画像を生成できるプログラム、情報記憶媒体及び画像生成システムの提供。
【解決手段】画像生成システムは、シャドウイング処理を行いながらモデルオブジェクトMOB1、MOB2を含む複数のオブジェクトの描画処理を行って、モデルオブジェクトMOB1、MOB2の画像とその影画像SD1、SD2が表示される画像を生成する第1の描画処理部と、モデルオブジェクトMOB1、MBO2の接地部LOB1、LOB2に対応する影プリミティブ面の描画処理を行って、モデルオブジェクトMOB1、MOB2の影画像SD1、SD2に対して接地部LOB1、LOB2の影画像LSD1、LSD2が合成された画像を生成する第2の描画処理部を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【0002】
従来より、仮想的な3次元空間であるオブジェクト空間内において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。格闘ゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、ゲームコントローラ(操作部)を用いて自キャラクタ(モデルオブジェクト)を操作し、相手プレーヤやコンピュータが操作する敵キャラクタと対戦することでゲームを楽しむ。
【0003】
さて、このような画像生成システムでは、キャラクタなどのモデルオブジェクトのよりリアルな影を生成することが望まれる。このような影生成手法としては、例えば特許文献1に開示されるようなシャドウボリューム(モディファイアボリューム)処理などのシャドウイング処理が知られている。
【0004】
しかしながら、このようなシャドウイング処理では、ゲームフィールドに落ちるキャラクタの影形状についてはリアルに表現できるものの、その場のライティングに合ったリアルな影を目指すと、地面に落ちる影が淡くなってしまう場合が多い。従って、例えば足などの接地部の下のいわゆるオクルージョン領域の影については、リアルに表現することが難しいという課題があった。
【特許文献1】特開2003−242523号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明の幾つかの態様によれば、モデルオブジェクトのよりリアルな影画像を生成できるプログラム、情報記憶媒体及び画像生成システムを提供できる。
【課題を解決するための手段】
【0006】
本発明は、オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、シャドウイング処理を行いながらモデルオブジェクトを含む複数のオブジェクトの描画処理を行って、前記モデルオブジェクトの画像と前記モデルオブジェクトの影画像が表示される画像を生成する第1の描画処理部と、前記モデルオブジェクトの接地部に対応する影プリミティブ面の描画処理を行って、前記モデルオブジェクトの前記影画像に対して前記接地部の影画像が合成された画像を生成する第2の描画処理部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0007】
本発明によれば、モデルオブジェクトを含む複数のオブジェクトの描画処理が行われることで、モデルオブジェクトの画像とモデルオブジェクトの影画像が表示される画像が生成される。また、モデルオブジェクトの接地部に対応する影プリミティブ面の描画処理が行われることで、モデルオブジェクトの影画像に対して接地部の影画像が合成された画像が生成される。このようにすれば、モデルオブジェクトの全体的な影画像と、部分的な接地部の影画像が合成されることで、よりリアルな影画像の生成が可能になる。
【0008】
また本発明では、前記第1の描画処理部は、シャドウマップ処理により、前記モデルオブジェクトの前記影画像を生成してもよい。
【0009】
このようにシャドウマップ処理により影画像を生成した場合には、その場に合ったリアルな影を目指すと、地面に落ちる影が淡くなってしまうことが増えてくる。この点、本発明によれば、この接地部の影画像については、影プリミティブ面の描画処理という別処理により生成されるため、少ない処理負荷でよりリアルな影画像の生成が可能になる。
【0010】
また本発明では、前記第2の描画処理部は、前記接地部に対して設定された影生成用プリミティブ面を、前記モデルオブジェクトが移動するフィールドに対して投影することで生成された前記影プリミティブ面の描画処理を行うことで、前記接地部の影画像を生成してもよい。
【0011】
このようにすれば、接地部の動きや影の投影方向を反映させた接地部の影画像を生成できるようになる。
【0012】
また本発明では、前記第2の描画処理部は、前記第1の描画処理部が前記モデルオブジェクトの影画像の生成に使用する投影方向とは異なる投影方向を用いて、前記接地部の影画像を生成してもよい。
【0013】
このようにすれば、モデルオブジェクトの影画像の投影方向とは異なる投影方向に、接地部の影画像が生成されるようになるため、エフェクト効果の高い画像生成が可能になる。
【0014】
また本発明では、前記第2の描画処理部は、点光源が存在する場合に、前記点光源の投影方向を用いて、前記接地部の影画像を生成してもよい。
【0015】
このようにすれば、点光源の投影方向に応じた接地部の影画像を生成できるようになる。
【0016】
また本発明では、前記第2の描画処理部は、前記影プリミティブ面を、前記仮想カメラから見て奥側方向にZシフトすると共に、前記影プリミティブ面の各ピクセルのZ値の方がZバッファのZ値よりも奥側のZ値である場合に描画されるというZ比較の設定で、前記影プリミティブ面の描画処理を行ってもよい。
【0017】
このようにすれば、例えばモデルオブジェクトの接地部がフィールドの端部付近に位置する場合に不自然な画像が生成されてしまう事態などを防止できる。
【0018】
また本発明では、前記第1の描画処理部は、前記モデルオブジェクトの描画処理を行う際に、前記モデルオブジェクトの描画領域に対応するステンシルバッファの領域に対して所定ステンシル値を書き込み、前記第2の描画処理部は、前記ステンシルバッファに前記所定ステンシル値が書き込まれておらずステンシル値がクリアされている領域に対して、前記影プリミティブ面を描画してもよい。
【0019】
このようにすれば、モデルオブジェクトの接地部に対して影が落ちてしまうような不自然な影画像が生成されてしまう事態を防止できる。
【0020】
また本発明では、前記第2の描画処理部は、前記影プリミティブ面の各ピクセルのZ値の方がZバッファのZ値よりも手前側のZ値である場合に描画されるというZ比較の設定で、前記影プリミティブ面に対応するプリミティブ面の描画処理を行って、前記ステンシルバッファの前記所定ステンシル値をクリアしてもよい。
【0021】
このようにすれば、例えばモデルオブジェクトの接地部がフィールドにめり込んだような状況においても、不自然さのない影画像を生成できる。
【0022】
また本発明では、前記第2の描画処理部は、前記接地部の接地面と、前記モデルオブジェクトが移動するフィールドとのなす角度に応じて、前記接地部の影画像の濃さを制御してもよい。
【0023】
このようにすれば、例えば接地部の接地面とフィールドとのなす角度が大きくなった場合に不自然な影画像が生成されてしまう事態等を防止できる。
【0024】
また本発明では、前記第1の描画処理部は、前記モデルオブジェクトの描画処理を行った後に、背景オブジェクトの描画処理を行ってもよい。
【0025】
このようにすれば、モデルオブジェクトの描画領域については背景オブジェクトを描画しなくても済むようになり、描画処理の負荷を軽減できる。
【発明を実施するための最良の形態】
【0026】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0027】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0028】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、ステアリング、アクセル、ブレーキ、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0029】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。この記憶部170は、電源を切るとデータが消えてしまう揮発性のメモリにより構成できるが、補助記憶装置194よりも高速な記憶装置になっている。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0030】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0031】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0032】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される大容量の記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードや、HDDなどにより実現できる。この補助記憶装置194は脱着自在になっているが、内蔵されるものであってもよい。この補助記憶装置194は、ゲームの途中結果などのセーブデータや、プレーヤ(ユーザ)の個人的な画像データや音楽データなどを保存するために使用される。
【0033】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0034】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0035】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0036】
処理部100は、ゲーム演算部102、オブジェクト空間設定部104、移動体演算部106、仮想カメラ制御部108、描画処理部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0037】
ゲーム演算部102はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0038】
オブジェクト空間設定部104は、モデルオブジェクト(人、ロボット、車、戦闘機、ミサイル、弾等の移動体)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクトデータ記憶部172には、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。そしてこのオブジェクトデータは、移動体演算部106の移動体演算処理等により順次更新される。
【0039】
移動体演算部(移動体制御部)106は、移動体であるモデルオブジェクト等を移動させるための演算を行う。またモデルオブジェクトを動作させるための演算も行う。即ち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、モデルオブジェクト(移動体オブジェクト)をオブジェクト空間内で移動させたり、モデルオブジェクトを動作(モーション、アニメーション)させる処理を行う。具体的には、モデルオブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0040】
より具体的には、移動体演算部106は、モーションデータ記憶部173に記憶されるモーションデータに基づいて、モデルオブジェクトのモーションを再生する処理を行う。即ち、モデルオブジェクト(スケルトン)を構成する各パーツオブジェクト(スケルトンを構成する骨)の位置又は回転角度(方向)等を含むモーションデータを、モーションデータ記憶部173から読み出す。そして、モデルオブジェクトの各パーツオブジェクト(骨)を動かすことで(スケルトン形状を変形させることで)、モデルオブジェクトのモーションを再生する。
【0041】
仮想カメラ制御部108は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。
【0042】
例えば仮想カメラによりキャラクタ、車、戦闘機などのモデルオブジェクトを後方から撮影する場合には、モデルオブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動体演算部106で得られたモデルオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0043】
描画処理部120(画像生成部)は、モデルオブジェクトを含む複数のオブジェクトの描画処理を行う。例えば処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずモデルオブジェクトの各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が生成され、これらのデータに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0044】
頂点処理(頂点シェーダ処理)では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。
【0045】
ピクセル処理(ピクセルシェーダ処理)では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャ記憶部174に記憶されるテクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたモデルの描画色を描画バッファ176(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット、フレームバッファ)に出力(描画)する。即ち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0046】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0047】
描画処理部120は、照明モデル等に基づくライティング処理(シェーディング処理)を行う。具体的にはこのライティング処理は、光源情報(光源ベクトル、光源色、明るさ、光源タイプ等)、仮想カメラ(視点)の視線ベクトル、オブジェクト(半透明オブジェクト)の法線ベクトル、オブジェクトのマテリアル(色、材質)などを用いて行われる。なお照明モデルとしては、アンビエント光とディフューズ光だけを考慮したランバートの拡散照明モデルや、アンビエント光、ディフューズ光に加えてスペキュラ光も考慮するフォンの照明モデルやブリン・フォンの照明モデルなどがある。
【0048】
また描画処理部120は、オブジェクト(ポリゴン)にテクスチャをマッピングする処理を行うことができる。ここでテクスチャマッピング処理は、テクスチャ記憶部174に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングする処理である。具体的には、オブジェクト(プリミティブ面)の頂点やピクセルに設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部174からテクスチャ(色、α値などの表面プロパティ)を読み出す。そして2次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間(広義にはテクセル補間)などを行う。
【0049】
また描画処理部120は隠面消去処理を行うことができる。例えば、各ピクセルのZ値(奥行き情報)が格納されるZバッファ177(奥行きバッファ)を用いて、Zバッファ法(奥行き比較法、Zテスト)により隠面消去処理を行う。即ちオブジェクトのプリミティブ面の各ピクセルを描画する際に、Zバッファ177に格納されるZ値を参照する。そして参照されたZバッファ177のZ値と、描画対象ピクセルのZ値とを比較し、描画対象ピクセルでのZ値が、仮想カメラから見て手前側となるZ値である場合には、そのピクセルの描画処理を行うと共にZバッファ177のZ値を新たなZ値に更新する。
【0050】
また描画処理部120は影画像を生成するためのシャドウイング処理を行う。具体的には本実施形態では、描画処理部120が第1の描画処理部121と第2の描画処理部122を含む。
【0051】
そして第1の描画処理部121は、モデルオブジェクトを含む複数のオブジェクトの描画処理を行って、モデルオブジェクトの画像とモデルオブジェクトの影画像が表示される画像を生成する。具体的には、モデルオブジェクトの描画処理を行い、モデルオブジェクトの画像を生成する。次に、シャドウイング処理を行いながら背景オブジェクトの描画処理を行い、モデルオブジェクトが移動するフィールド等の背景に対してモデルオブジェクトの影が表示された画像を生成する。
【0052】
このように第1の描画処理部121は、モデルオブジェクトの描画処理を行った後に、背景オブジェクトの描画処理を行う。これによりモデルオブジェクトを描画した領域には、背景オブジェクトを描画しなくても済むようになり、描画処理の負荷を軽減できる。
【0053】
第1の描画処理部121は、例えばシャドウマップ(Shadow map)処理により、モデルオブジェクトの影画像を生成する。具体的には、影の投影方向でのオブジェクトのZ値をレンダリングすることでシャドウマップテクスチャを生成する。そして、このシャドウマップテクスチャとオブジェクトのテクスチャを用いてオブジェクトの描画処理を行うことで影画像を生成する。
【0054】
また第1の描画処理部121は、分散シャドウマップ(Variance Shadow map)処理により影画像を生成してもよい。この場合には、影の投影方向でのオブジェクトのZ値のレンダリングを行うと共にZ値の二乗のレンダリングを行うことで、シャドウマップテクスチャを生成すればよい。なおシャドウマップ処理としては、分散シャドウマップ以外にも、コンベンショナルなシャドウマップ処理やライトスペースシャドウマップ処理やオパシティシャドウマップ処理などの種々の処理を採用できる。或いは、シャドウマップ処理以外にも、ボリュームシャドウ(ステンシルシャドウ)処理や投影テクスチャシャドウ処理などのシャドウイング処理を採用してもよい。
【0055】
一方、第2の描画処理部122は、モデルオブジェクトの接地部に対応する影プリミティブ面の描画処理を行って、接地部の影画像を生成する。これによりモデルオブジェクトの影画像に対して接地部の影画像が合成された画像が生成される。
【0056】
ここで、接地部は、モデルオブジェクトの例えば足や手などであり、モデルオブジェクトが移動するフィールドに接地することが予定されている部分である。なおモデルオブジェクトがフィールド(地面)に倒れた場合には、倒れた際にモデルオブジェクトがフィールドに接地する部分である背中等を接地部に設定してもよい。本実施形態では、このような接地部のいわゆるオクルージョン領域の影を表現するために、接地部に対応する影プリミティブ面(狭義には足影ポリゴン等の影ポリゴン)の描画処理を行う。
【0057】
具体的には第2の描画処理部122は、接地部に対して設定された影生成用プリミティブ面を、モデルオブジェクトが移動するフィールド(ゲームフィールド、地面)に対して投影することで影プリミティブ面を生成する。そしてこの影プリミティブ面の描画処理を行うことで、接地部の影画像を生成する。
【0058】
この場合に第2の描画処理部122は、第1の描画処理部121がモデルオブジェクトの影画像の生成に使用する投影方向とは異なる投影方向に基づいて、接地部の影画像を生成してもよい。例えば第1の描画処理部121が、主光源の投影方向を用いてシャドウマップ処理等のシャドウイング処理を行ったとする。そして、この時に点光源が存在する場合には、第2の描画処理部122は、点光源の投影方向(投影ベクトル、光源ベクトル)を用いて、接地部の影画像を生成する。具体的には例えば点光源の明るさ(明度)が所定のしきい値以上である場合に、点光源の投影方向に基づいて接地部の影画像を生成する。一方。点光源の明るさが所定のしきい値よりも小さい場合には、主光源の投影方向(投影ベクトル、光源ベクトル)に基づいて接地部の影画像を生成する。
【0059】
また第2の描画処理部122は、影プリミティブ面を、仮想カメラから見て奥側方向にZシフトする。そして影プリミティブ面の各ピクセルのZ値の方がZバッファ177のZ値よりも仮想カメラから見て奥側のZ値である場合に描画されるという、通常とは異なるZ比較(Zテスト)の設定で、影プリミティブ面の描画処理を行ってもよい。このようにすることで、モデルオブジェクトの接地部が、フィールドの端部付近に位置する場合にも、接地部の適正な影画像を生成できるようになる。
【0060】
更に具体的には、第1の描画処理部121は、モデルオブジェクトの描画処理を行う際に、モデルオブジェクトの描画領域に対応するステンシルバッファ178の領域(ピクセル)に対して所定ステンシル値を書き込む。即ちモデルオブジェクトの描画の際にステンシルバッファ178への所定ステンシル値の書き込みも行う。
【0061】
そして第2の描画処理部122は、ステンシルバッファ178に所定ステンシル値が書き込まれておらずステンシル値が例えばゼロにクリアされている領域(ピクセル)に対して、影プリミティブ面を描画する。このようにすれば、モデルオブジェクトの接地部に対して影画像が生成されてしまう事態を防止できる。
【0062】
この場合に第2の描画処理部122は、影プリミティブ面の各ピクセルのZ値の方がZバッファ177のZ値よりも仮想カメラから見て手前側のZ値である場合に描画されるという、通常のZ比較の設定で、影プリミティブ面の描画処理を行って、ステンシルバッファ178の所定ステンシル値をクリアしてもよい。このようにすれば、モデルオブジェクトの接地部がフィールドにめり込んでいるような状況においても、接地部の適正な影画像の生成が可能になる。
【0063】
なおステンシルバッファ178は、Zバッファ177の上位ビットの領域に形成できる。例えばZバッファ177の各ピクセルのビット数が24ビットである場合に、その上位8ビットの領域をステンシルバッファ178に設定して、ステンシル値を書き込めるようにしてもよい。
【0064】
また第2の描画処理部122は、接地部の接地面と、モデルオブジェクトが移動するフィールドとのなす角度に応じて、影画像の濃さを制御してもよい。例えば接地面とフィールドとのなす角度が増えるにつれて、影画像の濃さを薄くする。このようにすることで、例えばキャラクタであるモデルオブジェクトが倒れた場合などにおいて、その接地部である足の不自然な影画像が生成されてしまう事態を防止できる。
【0065】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0066】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0067】
2.本実施形態の手法
2.1 距離に応じた影の濃さの制御
本実施形態では、キャラクタなどのモデルオブジェクトのよりリアルな影を表現するために、例えば後述するシャドウマップ処理などのシャドウイング処理により影画像を生成している。
【0068】
しかしながら、シャドウマップ処理等により影画像を生成した場合、影形状についてはリアルに表現できるものの、足などのオクルージョン領域の影については、リアルに表現することが難しい。
【0069】
そこで本実施形態では、シャドウイング処理によりモデルオブジェクトの影画像(全体の影画像)を生成すると共に、その影画像に対して、モデルオブジェクトの足等の接地部の影画像を合成する手法を採用している。具体的には、足部分(広義には接地部)に対応する足影ポリゴン(広義には影プリミティブ面)の描画処理を行って、モデルオブジェクトの全体の影画像に対して足の影画像(広義には接地部の影画像)が合成された画像を生成する。
【0070】
例えば図2に本実施形態により生成されたゲーム画像の例を示す。図2は、キャラクタであるモデルオブジェクトMOB1とMOB2が対峙して対戦するゲーム画像の例である。
【0071】
図2においてモデルオブジェクトMOB1の全体の影画像SD1は、シャドウマップ処理などのシャドウイング処理により生成されている。この影画像SD1は、その影形状については、モデルオブジェクトMOB1の形状を忠実に反映したよりリアルな影になっているが、光源の明るさ等の関係で、全体的に濃さが薄い影画像になっている。モデルオブジェクトMOB2の影画像SD2についても同様である。
【0072】
そして、このようなシャドウイング処理だけでは、モデルオブジェクトの足部分の影画像については、現実世界のようなリアルな影を生成することが難しい。即ち足部分の下のようないわゆるオクルージョン領域は、外部からの光が届かない領域であるため、現実世界においては非常に暗い影が生成される。しかしながら、シャドウイング処理で使用される主光源の光は淡い光になる場合が多いため、これにより生成された影画像も淡い影になる場合が増えてくる。従って、シャドウイング処理により足部分の下の暗い影を表現することは難しい。そして、このような足部分の影のリアルな表現を実現できないと、キャラクタであるモデルオブジェクトが地面から浮いて見えるようになってしまい、いわゆるキャラクタの接地感の表現が不十分になる。
【0073】
この場合、例えば厳密な物理計算を行うことで、このようなオクルージョン領域の影を表現する手法も考えられるが、この手法では処理負荷が非常に重くなってしまうという問題がある。
【0074】
この点、図2に示すように本実施形態では、足部分LOB1の影である足影画像LSD1については、足影ポリゴンの描画処理により生成しており、いわゆる丸影により実現している。そして、シャドウマップ処理等のシャドウイング処理により生成された影画像SD1と、足影ポリゴンの描画により得られた足影画像LSD1を合成することで、モデルオブジェクトMOB1の影が表現される。同様に、モデルオブジェクトMOB2の影画像SD2と足影画像LSD2を合成することで、モデルオブジェクトMOB2の影が表現される。
【0075】
このようにすれば、モデルオブジェクトMOB1の全体的な影については、シャドウイング処理による影画像SD1により、その影形状等をリアルに表現できる。
【0076】
一方、足部分LOB1のオクルージョン領域の部分的な影については、足影ポリゴンの描画による足影画像LSD1により、その影の暗さ等をリアルに表現できる。これにより、モデルオブジェクトMOB1が地面から浮いて見える事態を防止でき、接地感を好適に表現できる。
【0077】
このように本実施形態では、影画像SD1と足影画像LSD1を異なる手法で互いに独立に生成し、全体的な影画像SD1と部分的な足影画像LSD1を合成することで、少ない処理負荷でよりリアルな影を生成することに成功している。
【0078】
2.2 シャドウマップ処理
さて、キャラクタ等のモデルオブジェクトの影画像は、例えばシャドウマップ処理により生成できる。次に、このシャドウマップ処理の詳細について図3を用いて説明する。
【0079】
シャドウマップ処理では、まず、影生成用の光源LSから見た、モデルオブジェクトMOBや背景オブジェクトBOBなどのオブジェクトのZ値(深度値、奥行き値)をレンダリングすることで、シャドウマップテクスチャSDTEXを生成する。即ち光源LSの位置に仮想カメラVCを設定してオブジェクトのZ値のレンダリングを行う。例えば図3では、モデルオブジェクトMOBの点P1’のZ値Z1や、背景オブジェクトBOBの点P2のZ値Z2等がレンダリングされて、シャドウマップテクスチャSDTEXが生成されている。
【0080】
例えば図4にシャドウマップテクスチャSDTEXの例を示す。このシャドウマップテクスチャSDTEXは、図2のゲーム画像に対応するものであり、影生成用の光源を図2の右上に設定した場合に生成されるテクスチャの例である。図4では、仮想カメラに近い側のZ値は黒で描かれ、仮想カメラから遠い側のZ値は白で描かれている。
【0081】
次に、スクリーンSCに映る視界画像生成用の視点位置に、仮想カメラVCを設定して、モデルオブジェクトMOBや背景オブジェクトBOBなどのオブジェクトのレンダリングを行う。この際に、オブジェクトの各ピクセルのZ値と、シャドウマップテクスチャSDTEXの対応する各テクセルのZ値とを比較しながら、オブジェクトのレンダリングを行う。
【0082】
例えば図3において、仮想カメラVCから見た点P1のZ値(距離)は、シャドウマップテクスチャSDTEXの対応する点P1’のZ値よりも大きい。従って、点P1は点P1’に隠れて影になる部分であると判定され、点P1に対応するピクセルには影の色(例えば黒)が描かれる。
【0083】
一方、点P2については、仮想カメラVCから見たZ値と、シャドウマップテクスチャSDTEXにおけるZ値が例えば等しくなる。従って、点P2は影の部分ではないと判断されて、影の色は描画されない。
【0084】
このようにすることで、背景に対して落ちるモデルオブジェクトMOBの影やモデルオブジェクトMOBの自己影等を生成できる。
【0085】
さて、コンベンショナルなシャドウマップ処理では、影部分か否かの判定処理を0か1かの2値判定により行っている。このため、影の輪郭(影部分と影以外の部分との境界)等においてジャギー等が目立ってしまい、生成される影画像の品質を今ひとつ高めることができないという課題がある。
【0086】
このような課題を解決するためには、分散シャドウマップ(Variance Shadow Map)と呼ばれる手法を採用することが望ましい。この分散シャドウマップでは、確率論であるチェビシェフの不等式の考えを利用して、光が当たっている確率(最大確率)を算出する。即ち、分散シャドウマップ処理では、影か否かの判定の結果が、0〜1の範囲の実数である確率(最大確率)で表されるため、この確率の値をそのまま影の濃さ(影の色)として設定できる。従って、影の判定処理を0(影部分)か1(光が当たっている部分)かの2値で行っているコンベンショナルなシャドウマップ処理に比べて、影画像のジャギー等を目立たなくすることができ、滑らかな影の輪郭を表現できる。
【0087】
例えば、確率論の基本的な定理であるチェビシェフの不等式は下式(1)のように表される。
【0088】
【数1】

ここでxは確率分布における確率変数であり、μは平均であり、σは分散であり、tはt>0となる任意の実数である。例えばt=2とすると、確率分布において平均μから2σ以上離れた値は全体の1/4を超えることはないということが導き出される。即ちx>μ+2σ、x<μ−2σとなる確率は1/4を超えることはないことが導き出される。
【0089】
分散シャドウマップ処理は、このチェビシェフの不等式の考えを利用するものであり、下式(2)(3)のモーメントM1、M2が求められる。
【0090】
【数2】

これらの式(2)(3)より、下式(4)(5)のように表される平均μ、分散(variance)σが求められる。
【0091】
【数3】

そしてチェビシェフの不等式の考えにより、t>μの条件の下で、下式(6)が成立する。
【0092】
【数4】

ここで、tはピクセルのZ値に相当し、xは、ぼかし処理が施されたシャドウマップテクスチャのZ値に相当する。この確率pmax(x)から影の濃さ(色)を決めることになる。
【0093】
そして本実施形態では上式(6)を変形した下式(7)を使用する。
【0094】
【数5】

ここで、Σは、σ+εを0〜1.0の範囲にクランプした値であり、調整された分散値である。
【0095】
またεは分散調整パラメータであり、分散σに対してバイアス値を加算するためのパラメータである。この分散調整パラメータεの値を大きくすることで、分散シャドウマップにおける分散の度合いを強制的に大きくすることが可能になる。なお分散調整パラメータをε=0に設定すると、本来は影とならない領域にノイズピクセルが発生してしまうが、ε>0に設定することで、このノイズピクセルを低減できる。
【0096】
例えばコンベンショナルなシャドウマップ処理ではZ値だけをレンダリングするが、分散シャドウマップ処理では、Z値をレンダリングすると共に、Z値の二乗をレンダリングして、2チャネルのバッファにシャドウマップテクスチャを生成する。そして、このシャドウマップテクスチャに対して、ブラーなどのフィルタ処理(ガウシアン・フィルタ等)を施す。
【0097】
次に、シャドウマップテクスチャにより上式(2)(3)のモーメントM1、M2を求め、上式(4)(5)の平均(期待値)μ、分散σを求める。また分散σと分散調整パラメータεに基づいて、調整された分散値であるΣを求める。
【0098】
そして、ピクセル(フラグメント)のZ値(デプス)であるtが、t<μである場合には、影以外の部分であると判断する。一方、t≧μである場合には、上式(7)の確率pmax(t)により、光の減衰率を求めて、影の濃さ(色)を決定する。なお確率pmax(t)そのものではなく、pmax(t)のべき乗(例えば4乗)を用いてもよい。
【0099】
以上のようなシャドウマップ処理を、モデルオブジェクトや背景オブジェクトの描画処理の際に行うことで、図2に示すモデルオブジェクトMOB1、MOB2の影画像SD1、SD2を生成できるようになる。
【0100】
2.3 足影画像の生成手法
次に、図2の足影画像LSD1、LSD2の具体的な生成手法について説明する。
【0101】
まず、図5(A)に示すように、モデルオブジェクトの足部分LOB(広義には接地部)に対応する足影生成用ポリゴンGPL(広義には影生成用プリミティブ面)を生成する。具体的には、足首のボーンBN1の位置BP1(BN1の座標変換マトリクス)と、つま先のボーンBN2の位置BP2(BN2の座標変換マトリクス)に基づいて、足影生成用ポリゴンGPLを構成する頂点V1〜V6を生成する。
【0102】
更に具体的には図5(B)に示すようなサイズテーブルと図5(C)に示すような頂点データテーブルを用意する。
【0103】
ここで、図5(B)のサイズテーブルには、モデルオブジェクトの種別である男、女、怪物に対応して、標準的な足影サイズが格納されている。例えば小さい男用、大きい男用、小さい女用、大きい女用、小さい怪物用、大きい怪物用の足影サイズSZA、SZB、SZC、SZD、SZE、SZFが格納されている。また図5(C)の頂点データテーブルには各種別に対応する頂点データ(頂点座標)が格納されている。
【0104】
そして図5(A)のボーンBN1の位置(関節)BP1とボーンBN2の位置(関節)BP2との距離LBを求める。次に、モデルオブジェクトの種別が例えば男であった場合には、小さい男に対応する最小距離LBAと大きい男に対応する最大距離LBBを、図5(B)のサイズテーブルから読み出して、距離LBと距離LBA、LBBとに基づいて補間率を求める。そして、求められた補間率を用いて、小さい男用の足影サイズSZAと大きい男用の足影サイズSZBの補間処理を行うことで、モデルオブジェクトの足影サイズを求める。そして、求められた足影サイズ(補間率)に基づいて、図5(B)の頂点データテーブルの対応する種別の頂点データの補間処理を行うことで、図5(A)の足影生成用ポリゴンGPLの頂点V1〜V6の頂点データ(頂点座標)を求める。
【0105】
次に、図6に示すように、影生成用の光源LS(主光源、点光源)の投影方向PDで、足影生成用ポリゴンGPLの頂点V1〜V6をゲームフィールドFLD(広義にはフィールド)に投影することで、投影された頂点VP1〜VP6により構成される足影ポリゴンSPLを生成する。
【0106】
また足影生成用ポリゴンGPLの頂点V1〜V6のゲームフィールドFLD(地面)からの高さ距離LH1〜LH6を求める。そして光源LSの明るさから求められた足影の最大濃さを、この高さ距離LH1〜LH6に応じて距離減衰させることで、足影ポリゴンSPLの頂点VP1〜VP6に設定される影の濃さを求める。具体的には、所定距離で影が透明になると共に高さ距離LH1〜LH6が遠いほど減衰量が大きくなるように設定された演算式を用いて、足影ポリゴンSPLの頂点VP1〜VP6の影の濃さを求める。そして、この影の濃さで足影ポリゴンSPLを描画することで、図2に示すような足影画像LSD1、LSD2を生成する。このようにして、モデルオブジェクトMOB1、MOB2の全体的な影画像SD1、SD2と、足影画像LSD1、LSD2とが合成された画像が生成される。
【0107】
なお本実施形態では、モデルオブジェクトMOB1、MOB2の全体的な影画像SD1、SD2の生成に使用する投影ベクトルとは異なる投影ベクトルを用いて、足影画像LSD1、LSDを生成できるようにしている。
【0108】
例えば図7では、モデルオブジェクトMOB1の剣とモデルオブジェクトMOB2の剣とがヒットするイベントにより、点光源が発生している。このような点光源が発生した場合には、この点光源の投影方向(投影ベクトル、光源ベクトル)を用いて、例えばモデルオブジェクトMOB1、MOB2の足影画像LSD1、LSD2を生成する。この場合に足影画像LSD1、LSD2は、モデルオブジェクトMOB1、MOOB2の影画像SD1、SD2の光源(例えば主光源)とは異なる点光源の投影方向PDを用いて生成される。従って、全体的な影画像SD1、SD2が落ちる方向とは異なる方向に足影画像LSD1、LSD2が落ちるようになる。この結果、図7に示すような点光源の発生をユーザに視覚的に訴えることが可能になり、ユーザの仮想現実感を向上できる。
【0109】
なお足影画像を生成する光源の切り替えは、光源の明るさに基づいて行うようにしてもよい。例えば、ゲームフィールド上に松明等を表す点光源が予め設定されている場合は、モデルオブジェクトと点光源との距離に応じて、モデルオブジェクトの位置での点光源の明るさを求める。そして、その明るさが所定のしきい値より小さい場合には、主光源の投影方向を用いて、足影画像を生成する。一方、点光源の明るさが所定のしきい値以上である場合には、主光源から点光源に切り替えて、点光源の投影方向で足影画像を生成する。このようにすれば、松明等の点光源の存在をプレーヤに対して視覚的に訴えることができ、プレーヤの仮想現実感を更に向上できる。
【0110】
図8〜図11に本実施形態により生成されたゲーム画像の例を示す。
【0111】
例えば図8では、画面の左手前側に主光源が配置されているため、モデルオブジェクトMOB1の全体的な影画像SD1は、画面の左手前側から右奥側へと向かう方向に沿ってゲームフィールドFLDに落ちる。一方、図8では、非常に明るい点光源が画面の右奥側に配置されているため、モデルオブジェクトMOB1の足影画像LSD1については、全体的な影画像SD1とは反対に、画面の右奥側から左手前側へと向かう方向に沿ってゲームフィールドFLDに落ちる。
【0112】
図9ではモデルオブジェクトMOB2の武器がモデルオブジェクトMOB1にヒットすることで、モデルオブジェクトMOB1の胸の付近に仮想的なエフェクト用の点光源が発生している。これにより、モデルオブジェクトMOB1の足影画像LSD1は、この点光源の投影方向に沿ってゲームフィールドFLDに落ちるようになる。
【0113】
図10ではモデルオブジェクトMOB1の足部分が上方向に浮いている。そして、このように足部分が浮くにしたがって、足影画像LSD1の濃さが薄くなって行く。そして図11では、足部分の高さ距離が所定値を超えたため、足影画像LSD1の濃さがほぼ透明になり、表示されないようになる。このようにすることで、モデルオブジェクトMOB1の足が徐々に上がって行く様子が、足影画像LSD1によって表現されるようになり、生成される画像のリアル感や仮想現実感を向上できる。
【0114】
2.4 ゲームフィールドの端部付近での足影画像の生成
さて、図5(A)〜図7等で説明した手法により足影画像を生成した場合に、例えばモデルオブジェクトの足部分がゲームフィールドの端部付近に置かれると、生成される画像に不具合が生じることが判明した。このよう不具合を解消するために本実施形態では以下に説明する手法を採用している。
【0115】
まず図12(A)に示すように、図5(A)、図6の手法により生成された足影ポリゴンSPL(影プリミティブ面)のZシフトを行う。具体的には足影ポリゴンSPLを、仮想カメラから見て奥側方向にZシフトして、ゲームフィールドFLDの面よりも仮想カメラから見て奥側になるようにする。例えば仮想カメラから遠ざかるにつれてZ値が大きくなる座標系では、足影ポリゴンSPLのZ値に対してZシフト値を加算し、仮想カメラから遠ざかるにつれてZ値が小さくなる座標系では、Zシフト値を減算すればよい。
【0116】
そして、影ポリゴンSLPの各ピクセルのZ値の方がZバッファ177の対応するピクセルのZ値よりも仮想カメラから見て奥側のZ値である場合に描画されるというZ比較の設定にして、影ポリゴンSPLを描画する。即ち、通常のZ比較では手前側のポリゴンが描画されるように設定されるが、これとは逆に奥側のポリゴンが描画されるように設定して、影ポリゴンSPLを描画する。
【0117】
このようにすれば図12(A)のA1に示す部分では、ゲームフィールドFLDに対して影ポリゴンSPLの方が奥側にあるためSPLが描画され、A2に示す部分では、SPLは描画されないようになる。従って、足部分LOBの下側に適正に足影画像が生成されるようになる。
【0118】
即ち、上記のようなZシフトとZ比較の設定を行わずに影ポリゴンSPLを描画すると、足部分LOBがゲームフィールドFLDの端部付近にある場合に、A1に示す部分のみならずA2に示す部分においても影ポリゴンSPLが描画されてしまい、空間に影が浮いて見えるような不自然な画像が生成されてしまうおそれがある。
【0119】
この点、図12(A)の手法によれば、上記のようなZシフトとZ比較の設定を行うことで、A1に示す部分においてのみ影ポリゴンSPLが描画され、A2に示す部分では影ポリゴンSPLが描画されないようになるため、適正な足影画像の生成が可能になる。
【0120】
また図12(A)の手法では、ゲームフィールドFLDのみならず足部分LOBに対しても影ポリゴンSPLが描画されるZ比較の設定になるため、足部分LOBに対して影が落ちたような画像が生成されてしまうおそれがある。
【0121】
即ち、ゲームフィールドFLDや影ポリゴンSPLを描画した後に、モデルオブジェクトを描画するという順序で描画すれば、このような事態は防止できる。しかしながら本実施形態では、描画処理の負荷を軽減するために、まずモデルオブジェクトを描画し、その後にゲームフィールドFLD等の背景オブジェクトを描画する手法を採用している。このようにすれば、モデルオブジェクトが既に描画された領域に対しては、背景オブジェクトを描画しなくても済むようになる。従って、ゲーム画面においてモデルオブジェクトが占める領域が大きい場合には、無駄な描画処理を省くことができ、描画処理の負荷を格段に軽減できる。
【0122】
しかしながら、このような順序で描画処理を行うと、図12(A)では、Z比較において、足部分LOBが影ポリゴンSPLにより隠面消去される設定になっているため、足部分LOB上に足影が落ちる画像が生成されてしまう。
【0123】
そこで図12(B)では、モデルオブジェクトの描画処理を行う際に、モデルオブジェクトの描画領域に対応するステンシルバッファ178の領域に対して所定ステンシル値を書き込む。そしてステンシルバッファ178に、上記の所定ステンシル値が書き込まれておらずステンシル値がクリアされている領域に対して、影ポリゴンSPLを描画するようにする。
【0124】
このようにすれば、図12(B)のA3に示す足部分LOBの領域には、影ポリゴンSPLが描画されないようになるため、足部分LOBに対して足の影が落ちたような不自然な画像が生成されてしまう事態を防止できる。
【0125】
また、例えばモーションデータに基づいてモデルオブジェクトのモーションを再生した場合に、図12(C)に示すようにモデルオブジェクトの足部分LOBがゲームフィールドFLDに対してめり込んでしまう場合がある。即ちモーションデータに基づきモーション再生を行う場合に、モーション補正等を行うことで、このような足のめり込みを、ある程度は解消できるが、それには限界がある。例えばキャラクタの足の踏み込みが激しい場合等には、足部分LOBがゲームフィールドFLDの下にめり込んでしまう。
【0126】
このようなめり込みが生じた場合には、図12(C)のA4に示す領域にも、図12(B)の処理により所定ステンシル値が書き込まれてしまう。従って、A4の領域には影ポリゴンSPLが描画されないようになり、A4の領域だけ影が抜けたような不自然な画像が生成されてしまう。
【0127】
そこで図12(C)では、A4に対応する領域については、ステンシルバッファ178において所定ステンシル値をクリアする処理を行う。具体的には、影ポリゴンSPLの各ピクセルのZ値の方がZバッファ177のZ値よりも仮想カメラから見て手前側のZ値である場合に描画されるという、通常のZ比較の設定にする。そして、このような通常のZ比較の設定で影ポリゴンSPLに対応するポリゴン(プリミティブ面)をステンシルバッファ178に描画することで、図12(C)のA4に対応する領域については、ステンシルバッファ178の所定ステンシル値をクリアしてゼロに設定する。
【0128】
このようにすればA4の領域にも影ポリゴンSPLが描画されるようになるため、A4の領域だけ影が抜けたような不自然な画像が生成されてしまう事態を防止できる。
【0129】
次に図13〜図18の画像を用いて本実施形態の具体的な描画処理について説明する。
【0130】
図13では、まずモデルオブジェクトMOB1、MOB2が描画されている。そして、このようにモデルオブジェクトMOB1、MOB2を描画する際に、図14に示すように、MOB1、MOB2の描画領域に対応するステンシルバッファ178の領域に対して、図12(B)で説明したように所定ステンシル値(0以外のステンシル値)を書き込む。例えば図14において白い領域には所定ステンシル値が書き込まれており、黒い領域ではステンシル値がゼロにクリアされている。
【0131】
次に図15に示すように背景オブジェクトを描画する。このようにモデルオブジェクトMOB1、MOB2を描画した後に背景オブジェクトを描画することで、無駄な領域に背景を描画しなくても済むようになり、描画処理の負荷を大幅に低減できる。そして、このような背景オブジェクトの描画処理の際に図3、図4で説明したシャドウマップ処理が行われることで、モデルオブジェクトMOB1の全体の影画像SD1が生成されるようになる。
【0132】
このように背景オブジェクトを描画した後に、図5(A)〜図6、図12(A)〜図12(C)で説明した足影ポリゴンSPLの描画処理を行う。例えば図16では、モデルオブジェクトMOB1の足部分LOB1に対応する足影生成用ポリゴンGPLが生成されている。そしてこの足影生成用ポリゴンGPLを、影の投影方向でゲームフィールドに投影することで、影ポリゴンSPLが生成され、この影ポリゴンSPLを描画することで足影画像が生成される。
【0133】
具体的には、図12(C)で説明したように、通常のZ比較の設定で、影ポリゴンSPLに対応するポリゴンをステンシルバッファ178に書き込むことで、図12(C)のA4に示す領域の所定ステンシル値をゼロにクリアする。
【0134】
図17にはこのような描画処理が行われた後のステンシルバッファ178の状態が示されている。図14と図17を比較すれば明らかなように、図17ではC1に示す領域のステンシル値がゼロにクリアされている。従って、このC1に示す領域にも足影画像が生成されるようになる。
【0135】
即ち図15ではモデルオブジェクトMOB1の足部分LOB1のつま先がゲームフィールドにめり込んでいる。この場合に図17のC1に示す領域に足影画像が生成されないと、C1に示す領域だけ影が抜けたような不自然な画像が生成されてしまう
この点、図17に示すように、C1に示す領域でのステンシル値をゼロにクリアすれば、この領域にも影画像が生成されるようになり、この領域だけ影が抜けたような不自然な画像が生成されてしまう事態を防止できる。
【0136】
例えば図18に、モデルオブジェクトMOB1の足部分LOB1がゲームフィールドFLDの端部付近にある場合に生成される画像の例を示す。図18の上側の画像は実際に表示される画像である。一方、図18の下側の画像では、説明を容易化するために、足影生成用ポリゴンGPLや足影ポリゴンSPLについても示している。
【0137】
図18の上側の画像に示すように、本実施形態の手法を採用することで、モデルオブジェクトMOB1の全体の影画像SD1のみならず、MOB1の足部分LOB1の足影画像LSD1についても適正に生成されている。即ち足部分LOB1がゲームフィールドFLDの端部付近に置かれている場合にも適正な足影画像LSD1を生成することに成功している。
【0138】
例えば図18では、足影用の点光源が、ゲームフィールドFLDの高さと同じぐらいの低い位置に配置されている。従って、図18の下側の画像のD1に示すように、足影ポリゴンSPLがゲームフィールドFLDの外側に向かって長く延びている。このような場合に、図12(A)で説明した手法を採用しないと、D1に示す部分にも足影が表示されてしまい、不自然な画像が生成されてしまう事態が生じるが、本実施形態の手法を採用することで、このような事態を防止できる。また図12(B)、図12(C)に示す手法を採用することで、足部分LOB上に影が落ちたり、足部分LOBがゲームフィールドFLDにめり込んだ場合に不自然な画像が生成されてしまう事態も防止できるようになる。
【0139】
2.5 詳細な処理例
次に本実施形態の詳細な処理例を図19〜図21のフローチャートを用いて説明する。図19は全体的な描画処理の流れについて説明するためのフローチャートである。
【0140】
まず、図3で説明したように、影の投影方向(影生成用の光源の照明方向)での各オブジェクトのZ値をレンダリングすることで、図4に示すようなシャドウマップテクスチャを生成する(ステップS1)。なお、分散シャドウマップ処理の場合には、Z値についてのレンダリングとZ値の二乗についてのレンダリングを行って、シャドウマップテクスチャを生成すればよい。
【0141】
次に、描画バッファ、Zバッファ、ステンシルバッファ等をクリアする(ステップS2)。そしてモデルオブジェクトのテクスチャ(元絵テクスチャ)と、ステップS1で生成されたシャドウマップテクスチャを用いて、例えばピクセルシェーダによりモデルオブジェクトの描画処理を行う(ステップS3)。この際に、図12(B)や図14で説明したように、モデルオブジェクトの描画領域に対応するステンシルバッファ178の領域に対して、所定ステンシル値を書き込む。
【0142】
次に、背景オブジェクトのテクスチャ(元絵テクスチャ)と、シャドウマップテクスチャを用いて、例えばピクセルシェーダにより背景オブジェクトの描画処理を行う(ステップS4)。このように、先にモデルオブジェクトの描画処理(ステップS3)を行った後に、背景オブジェクトの描画処理(ステップS4)を行うようにすれば、モデルオブジェクトの描画領域については、背景オブジェクトを描画しなくても済むようになる。従って、無駄な描画処理が行われるのを防止できるため、1フレーム内での描画処理が間に合わなくなってしまう事態を防止できる。特に画面全体においてモデルオブジェクトの占める面積が大きい場合には、ステップS3、S4に示すような順序で描画処理を行うことは効果的である。
【0143】
次に、図5(A)〜図6や図12(A)〜図12(C)等で説明した手法により、足影ポリゴンの描画処理を行い、モデルオブジェクトの影画像に足影画像が合成された画像を生成する(ステップS5)。
【0144】
図20、図21は、足影ポリゴンの描画処理の詳細を説明するためのフローチャートである。
【0145】
まず、ゲームフィールド(地面)よりも低い位置から見上げている仮想カメラの視点設定になっているか否かを判断し(ステップS11)、このような視点設定の場合には、足影ポリゴンSPLの描画は行わずに処理を終了する。このような視点設定で足影ポリゴンSPLを描画すると、不自然な足影画像が生成されるおそれがあるからである。
【0146】
次に、図7で説明した点光源の明るさが所定のしきい値以上か否かを判断する(ステップS12)。そして所定のしきい値以上である場合には、点光源の照明方向を足影の投影方向に設定する(ステップS13)。このようにすることで、モデルオブジェクトの影画像の生成に使用する投影方向とは異なる投影方向を用いて、足影画像を生成できるようになる。なお、このような照明方向の設定の際に、必要であれば、投影方向を若干調整する処理を行う。即ち、図7のような位置に点光源を発生させた場合に、この点光源の位置では、足影が足の真下に表示されてしまう場合が多いため、点光源の発生をプレーヤに強調して伝えるために、投影方向を、例えば少しだけ水平方向側に向かうように調整する。
【0147】
一方、点光源の明るさが所定のしきい値よりも小さい場合には、シャドウマップ処理に使用する主光源(図3のLS)の照明方向を足影の投影方向に設定する(ステップS14)。この場合には、モデルオブジェクトの影画像の生成に使用する投影方向と、足影画像生成用の投影方向は同じになる。
【0148】
次に図5(A)〜図5(C)で説明したように、モデルオブジェクト(キャラクタ)の種別に応じたサイズテーブルと頂点データテーブルを選択する(ステップS15)。そして、足首のボーンBN1の位置BP1とつま先のボーンBN2の位置BP2の位置との距離LBを求め、サイズテーブルに設定されている距離に基づき補間処理を行い、足影のサイズを求める(ステップS16)。
【0149】
次に、ステップS13又はS14で採用された光源の明るさに基づいて、足影の最大濃さを求める(ステップS17)。具体的には光源が明るいほど足影の最大濃さを濃くする。例えばステップS13のように点光源が選択された場合には、点光源との距離が近づいて明るくなると、足影の最大濃さは濃くなる。これにより、プレーヤの仮想現実感を向上できる。
【0150】
次に、足首のボーンBN1のY軸成分(絶対座標系での高さ方向の軸の成分)が小さくなるほど薄くなるように、ステップS17で求められた足影の最大濃さを調整する(ステップS18)。このようにすれば、足部分(接地部)の接地面と、モデルオブジェクトが移動するゲームフィールドとのなす角度に応じて、足影画像の濃さを制御することが可能になる。これにより、例えばモデルオブジェクトがダウンして倒れた場合等に、不自然な足影画像が生成されてしまう事態を防止できる。
【0151】
次に、ステップS16で求められた足影のサイズと、図15(C)で説明した頂点データテーブルに基づいて、足影生成用ポリゴンGPLを生成する(ステップS19)。そして、図6で説明したように、足影生成用ポリゴンGPLの各頂点を、ステップS13又はS14で設定された足影の投影方向に投影することで、足影ポリゴンSPLを生成する(ステップS20)。この際に足影生成用ポリゴンGPLの各頂点のゲームフィールドに対する高さ距離に基づいて、足影の最大濃さを減衰させて、足影ポリゴンSPLの各頂点の影の濃さを設定する。
【0152】
次に足影ポリゴンSPLの全頂点の影の濃さの和が、所定のしきい値以下か否かを判断し(ステップS21)、所定のしきい値以下である場合には、足影ポリゴンSPLの描画は行わずに処理を終了する。このようにすることで、図10に示すように、足が上がるにつれて足影が消えて行く画像表現を実現できる。
【0153】
次に、足影ポリゴンSPLの全頂点を画面座標系に変換し、これらの全頂点が画面外にあるか否かを判断する(ステップS22)。そして画面外である場合には、足影ポリゴンSPLの描画は行わずに処理を終了する。
【0154】
次に、足影ポリゴンSPLを、仮想カメラから見て手前側にZシフトする(ステップS23)。そして、図12(C)で説明したように、足影ポリゴンSPLのZ値の方がZバッファ177のZ値よりも手前側のZ値である場合に描画するという通常のZ比較の設定で、描画処理を行い、ステンシルバッファ178の対応する領域の所定ステンシル値をゼロにクリアする(ステップS24)。即ち図12(C)のA4に示す領域のステンシル値をクリアする。
【0155】
次に、図12(A)で説明したように、足影ポリゴンSPLを、仮想カメラから見て奥側にZシフトする(ステップS25)。そして、足影ポリゴンSPLのZ値の方がZバッファ177のZ値よりも奥側のZ値である場合に描画するという、通常とは異なるZ比較の設定で、ステンシルバッファ178に所定ステンシル値が書き込まれておらずゼロにクリアされている領域(ピクセル)に対して、足影ポリゴンSPLの描画処理を行う(ステップS26)。これにより、図18に示すように、足影ポリゴンSPLに対応した適正な足影画像LSD1が生成されるようになる。そして、Z比較の設定を元の通常設定に戻すと共に、ステンシル機能をディスエーブルにする(ステップS27)。
【0156】
3.ハードウェア構成
図22(A)に本実施形態を実現できるハードウェアの構成例を示す。
【0157】
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スレッド処理を並列実行できる。
【0158】
GPU910(描画プロセッサ)は、頂点処理やピクセル処理を行って、描画(レンダリング)処理を実現する。具体的には、シェーダプログラムに従って、頂点データの作成・変更やピクセル(フラグメント)の描画色の決定を行う。1フレーム分の画像がVRAM920(フレームバッファ)に書き込まれると、その画像はビデオ出力を介してTVなどのディスプレイに表示される。なおメインメモリ930はCPU900やGPU910のワークメモリとして機能する。またGPU910では、複数の頂点スレッド、複数のピクセルスレッドが並列実行され、描画処理のマルチスレッド機能がハードウェアでサポートされている。またGPU910にはハードウェアのテッセレータも備えられている。またGPU910は、頂点シェーダとピクセルシェーダとがハードウェア的に区別されていないユニファイド・シェーダ・タイプとなっている。
【0159】
ブリッジ回路940(サウスブリッジ)は、システム内部の情報流通を制御する回路であり、USBコントローラ(シリアルインターフェース)、ネットワークの通信コントローラ、IDEコントローラ、或いはDMAコントローラなどのコントローラを内蔵する。そしてこのブリッジ回路940により、ゲームコントローラ942、メモリーカード944、HDD946、DVDドライブ948との間のインターフェース機能が実現される。
【0160】
なお本実施形態を実現できるハードウェア構成は図22(A)に限定されず、例えば図22(B)のような構成であってもよい。
【0161】
図22(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スレッド処理の並列実行が可能になる。
【0162】
図22(B)では、GPU912とCPU902の連携が密になっており、GPU912は、CPU902側のメインメモリ930に直接にレンダリング処理を行うことができる。また例えばCPU902がジオメトリ処理を行って、頂点データを転送したり、GPU912からCPU902にデータを戻すことも容易にできる。またCPU902が、レンダリングのプリプロセッシング処理やポストプロセッシング処理を行うことも容易であり、テッセレーション(平面分割)やドットフィルをCPU902が実行できる。例えば抽象度の高い処理はCPU902が行い、抽象度が低い細かな処理はGPU912が行うというような役割分担が可能である。
【0163】
なお本実施形態の各部の処理をハードウェアとプログラムにより実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアであるプロセッサ(CPU、GPU)に処理を指示すると共に、必要であればデータを渡す。そして、プロセッサは、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0164】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(接地部、影プリミティブ面、足影生成用プリミティブ面、足影画像、フィールド、モデルオブジェクト等)と共に記載された用語(足部分、足影ポリゴン、足影生成用ポリゴン、接地部の影画像、ゲームフィールド、キャラクタ等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【0165】
また、モデルオブジェクトの影画像の生成処理、接地部の影画像の生成処理、モデルオブジェクトの描画処理、シャドウマップ処理、分散シャドウマップ処理などのシャドウイング処理等も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【0166】
【図1】本実施形態の画像生成システムのブロック図の例。
【図2】本実施形態より生成されたゲーム画像の例。
【図3】シャドウマップ処理の説明図。
【図4】シャドウマップテクスチャの例。
【図5】図5(A)〜図5(C)は足影画像の生成手法の説明図。
【図6】足影画像の生成手法の説明図。
【図7】点光源による足影画像の生成手法の説明図。
【図8】本実施形態より生成されたゲーム画像の例。
【図9】本実施形態より生成されたゲーム画像の例。
【図10】本実施形態より生成されたゲーム画像の例。
【図11】本実施形態より生成されたゲーム画像の例。
【図12】図12(A)〜図12(C)は足影画像の生成手法の説明図。
【図13】本実施形態の具体的な描画処理を説明するための図。
【図14】本実施形態の具体的な描画処理を説明するための図。
【図15】本実施形態の具体的な描画処理を説明するための図。
【図16】本実施形態の具体的な描画処理を説明するための図。
【図17】本実施形態の具体的な描画処理を説明するための図。
【図18】本実施形態の具体的な描画処理を説明するための図。
【図19】本実施形態の詳細な処理を説明するフローチャート。
【図20】本実施形態の詳細な処理を説明するフローチャート。
【図21】本実施形態の詳細な処理を説明するフローチャート。
【図22】図22(A)、図22(B)はハードウェア構成例。
【符号の説明】
【0167】
100 処理部、102 ゲーム演算部、104 オブジェクト空間設定部、
106 移動体演算部、108 仮想カメラ制御部、120 描画処理部、
121 第1の描画処理部、122 第2の描画処理部、130 音生成部、
160 操作部、170 記憶部、172 オブジェクトデータ記憶部、
173 モーションデータ記憶部、174 テクスチャ記憶部、176 描画バッファ、
177 Zバッファ、178 ステンシルバッファ、180 情報記憶媒体、
190 表示部、192 音出力部、194 補助記憶装置、196 通信部

【特許請求の範囲】
【請求項1】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
シャドウイング処理を行いながらモデルオブジェクトを含む複数のオブジェクトの描画処理を行って、前記モデルオブジェクトの画像と前記モデルオブジェクトの影画像が表示される画像を生成する第1の描画処理部と、
前記モデルオブジェクトの接地部に対応する影プリミティブ面の描画処理を行って、前記モデルオブジェクトの前記影画像に対して前記接地部の影画像が合成された画像を生成する第2の描画処理部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記第1の描画処理部は、
シャドウマップ処理により、前記モデルオブジェクトの前記影画像を生成することを特徴とするプログラム。
【請求項3】
請求項1又は2において、
前記第2の描画処理部は、
前記接地部に対して設定された影生成用プリミティブ面を、前記モデルオブジェクトが移動するフィールドに対して投影することで生成された前記影プリミティブ面の描画処理を行うことで、前記接地部の影画像を生成することを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記第2の描画処理部は、
前記第1の描画処理部が前記モデルオブジェクトの影画像の生成に使用する投影方向とは異なる投影方向を用いて、前記接地部の影画像を生成することを特徴とするプログラム。
【請求項5】
請求項4において、
前記第2の描画処理部は、
点光源が存在する場合に、前記点光源の投影方向を用いて、前記接地部の影画像を生成することを特徴とするプログラム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記第2の描画処理部は、
前記影プリミティブ面を、前記仮想カメラから見て奥側方向にZシフトすると共に、前記影プリミティブ面の各ピクセルのZ値の方がZバッファのZ値よりも奥側のZ値である場合に描画されるというZ比較の設定で、前記影プリミティブ面の描画処理を行うことを特徴とするプログラム。
【請求項7】
請求項6において、
前記第1の描画処理部は、
前記モデルオブジェクトの描画処理を行う際に、前記モデルオブジェクトの描画領域に対応するステンシルバッファの領域に対して所定ステンシル値を書き込み、
前記第2の描画処理部は、
前記ステンシルバッファに前記所定ステンシル値が書き込まれておらずステンシル値がクリアされている領域に対して、前記影プリミティブ面を描画することを特徴とするプログラム。
【請求項8】
請求項7において、
前記第2の描画処理部は、
前記影プリミティブ面の各ピクセルのZ値の方がZバッファのZ値よりも手前側のZ値である場合に描画されるというZ比較の設定で、前記影プリミティブ面に対応するプリミティブ面の描画処理を行って、前記ステンシルバッファの前記所定ステンシル値をクリアすることを特徴とするプログラム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記第2の描画処理部は、
前記接地部の接地面と、前記モデルオブジェクトが移動するフィールドとのなす角度に応じて、前記接地部の影画像の濃さを制御することを特徴とするプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
前記第1の描画処理部は、
前記モデルオブジェクトの描画処理を行った後に、背景オブジェクトの描画処理を行うことを特徴とするプログラム。
【請求項11】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至10のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項12】
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
シャドウイング処理を行いながらモデルオブジェクトを含む複数のオブジェクトの描画処理を行って、前記モデルオブジェクトの画像と前記モデルオブジェクトの影画像が表示される画像を生成する第1の描画処理部と、
前記モデルオブジェクトの接地部に対応する影プリミティブ面の描画処理を行って、前記モデルオブジェクトの前記影画像に対して前記接地部の影画像が合成された画像を生成する第2の描画処理部と、
を含むことを特徴とする画像生成システム。

【図1】
image rotate

【図2】
image rotate

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

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図4】
image rotate


【公開番号】特開2010−55131(P2010−55131A)
【公開日】平成22年3月11日(2010.3.11)
【国際特許分類】
【出願番号】特願2008−205224(P2008−205224)
【出願日】平成20年8月8日(2008.8.8)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】