(57)【要約】【課題】  少ない処理負荷でリアルな光源処理を実現できる画像生成システム、プログラム及び情報記憶媒体を提供する。【解決手段】  オブジェクトＯＢを照明するための照明光源ＬＳ１，ＬＳ２と、照明光源ＬＳ１，ＬＳ２の光源色Ｃ１，Ｃ２を暗くするための吸光光源ＬＳＲとを配置設定し、照明光源ＬＳ１，ＬＳ２の照明方向ベクトルＶ１，Ｖ２と、吸光光源ＬＳＲの吸光方向ベクトルＳＶとに基づいて影響度パラメータＶｉｐを求め、各照明光源の光源色Ｃ１，Ｃ２から吸光光源ＬＳＲの光源色ＣＲを影響度パラメータＶｉｐに応じて減算する吸光光源処理を行う。そして、照明光源ＬＳ１，ＬＳ２の照明方向ベクトルＶ１，Ｖ２及び吸光光源処理がされた照明光源ＬＳ１，ＬＳ２の光源色Ｃ１´，Ｃ２´の合成処理を行い、オブジェクトＯＢに対するシェーディング処理用の合成光源ＬＳＳの照明方向ベクトルＶＳ及び光源色ＣＳを求める。【選択図】      図２
2006323515.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト空間における所与の視点から見える画像を生成するためのプログラムであって、
オブジェクトを照明するための複数の照明光源と、該照明光源の光源色を暗くするための少なくとも一つの吸光光源とを配置設定する光源設定部と、
前記複数の照明光源の照明方向ベクトルと、前記吸光光源の吸光方向ベクトルとに基づいて影響度パラメータを求め、前記各照明光源の光源色から前記吸光光源の光源色を前記影響度パラメータに応じて減算する吸光光源処理を行う吸光光源処理部と、
前記複数の照明光源の照明方向ベクトル及び前記吸光光源処理がされた前記複数の照明光源の光源色の合成処理を行い、前記オブジェクトに対する合成光源の照明方向ベクトル及び光源色を求める光源合成処理部と、
前記合成光源に基づいて、前記オブジェクトのシェーディング処理を行うシェーディング処理部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項２】
請求項１において、
前記光源設定部が、
複数の前記吸光光源を配置設定し、
前記吸光光源処理部が、
前記各照明光源について、その照明方向ベクトルと、前記各吸光光源の吸光方向ベクトルとに基づいて影響度パラメータを前記各吸光光源毎に求め、前記各照明光源の光源色から前記各吸光光源の光源色を前記影響度パラメータに応じて減算する吸光光源処理を行うことを特徴とするプログラム。
【請求項３】
請求項１または２において、
前記吸光光源処理部が、
照明光源の光源色をＣ、吸光光源の光源色をＣＲ、照明方向ベクトルＶと吸光方向ベクトルＳＶとの内積結果を含む影響度パラメータをＶｉｐとした場合に、
Ｃ−ＣＲ×Ｖｉｐに基づき前記吸光光源処理がされた前記照明光源の光源色を求めることを特徴とするプログラム。
【請求項４】
請求項１〜３のいずれかにおいて、
前記光源設定部が、
前記吸光光源として、その影響エリアが設定された少なくとも一つのエリア吸光光源を配置設定し、
前記吸光光源処理部が、
前記エリア吸光光源の影響エリア内に前記オブジェクトが存在するか否かを判定し、前記オブジェクトが前記エリア吸光光源の影響エリア内に存在すると判定された場合に、前記エリア吸光光源を前記吸光光源処理の対象光源とする処理を行うことを特徴とするプログラム。
【請求項５】
請求項４において、
前記光源設定部が、
半径パラメータ及び角度パラメータに基づき前記エリア吸光光源の影響エリアを設定することを特徴とするプログラム。
【請求項６】
請求項５において、
前記光源設定部が、
前記半径パラメータ及び前記角度パラメータによって定められる幾何学形状の円弧の直線部分を曲線状に膨らませたオフセットエリアを前記エリア吸光光源の影響エリアに対して設定することを特徴とするプログラム。
【請求項７】
請求項６において、
前記光源設定部が、
前記角度パラメータが０の場合に、前記オフセットエリアを前記エリア吸光光源の影響エリアとして設定することを特徴とするプログラム。
【請求項８】
オブジェクト空間における所与の視点から見える画像を生成するための画像生成システムであって、
オブジェクトを照明するための複数の照明光源と、該照明光源の光源色を暗くするための少なくとも一つの吸光光源とを配置設定する光源設定部と、
前記複数の照明光源の照明方向ベクトルと、前記吸光光源の吸光方向ベクトルとに基づいて影響度パラメータを求め、前記各照明光源の光源色から前記吸光光源の光源色を前記影響度パラメータに応じて減算する吸光光源処理を行う吸光光源処理部と、
前記複数の照明光源の照明方向ベクトル及び前記吸光光源処理がされた前記複数の照明光源の光源色の合成処理を行い、前記オブジェクトに対する合成光源の照明方向ベクトル及び光源色を求める光源合成処理部と、
前記合成光源に基づいて、前記オブジェクトのシェーディング処理を行うシェーディング処理部と、
を含むことを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【０００２】
従来より、仮想的な３次元空間であるオブジェクト空間内において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。格闘ゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、ゲームコントローラ（操作部）を用いて自キャラクタ（オブジェクト）を操作し、相手プレーヤやコンピュータが操作する敵キャラクタと対戦することでゲームを楽しむ。
【０００３】
さて、このような画像生成システムでは、照明方向ベクトル、色、光源位置などの光源情報が設定された光源が用意される。そして、この光源情報と照明モデルとに基づいて、グーロー（Gouraud）シェーディング、フォン（Phong）シェーディングなどの種々のスムースシェーディングが行われ、オブジェクトの陰影づけが行われる。
【０００４】
そして、このような画像生成システムにおいて、よりリアルな画像を生成するためには、より多くの光源を用意することが望ましい。例えば、日光（太陽）を表現する光源のみならず、松明、炎、エフェクトなどを表現する種々の光源を用意することが望ましい。
【０００５】
しかしながら、用意する光源の数を増やすと、その分だけ画像生成システムの処理負荷が増えてしまう。このため、光源の数を増やしすぎると、１フレーム以内に全ての処理を完了させるというリアルタイム処理の要請に応えることが難しくなるという課題がある。
【特許文献１】特許３３６６０４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、少ない処理負荷でリアルな光源処理を実現できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、オブジェクト空間における所与の視点から見える画像を生成するための画像生成システムであって、オブジェクトを照明するための複数の照明光源と、該照明光源の光源色を暗くするための少なくとも一つの吸光光源とを配置設定する光源設定部と、前記複数の照明光源の照明方向ベクトルと、前記吸光光源の吸光方向ベクトルとに基づいて影響度パラメータを求め、前記各照明光源の光源色から前記吸光光源の光源色を前記影響度パラメータに応じて減算する吸光光源処理を行う吸光光源処理部と、前記複数の照明光源の照明方向ベクトル及び前記吸光光源処理がされた前記複数の照明光源の光源色の合成処理を行い、前記オブジェクトに対する合成光源の照明方向ベクトル及び光源色を求める光源合成処理部と、前記合成光源に基づいて、前記オブジェクトのシェーディング処理を行うシェーディング処理部と、を含む画像生成システムに関係する。また、本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また、本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【０００８】
コンピュータとは、プロセッサ（処理部：ＣＰＵあるいはＧＰＵなど）、メモリ（記憶部）、入力装置、及び出力装置を基本的な構成要素とする物理的装置（システム）をいう。以下においても同様である。
【０００９】
本発明では、吸光方向ベクトルの向きに沿った照明光を遮蔽するような吸光光源を設定する。そして照明光源と吸光光源との方向性に基づいて求められる影響度パラメータに応じて、照明光源の光源色から吸光光源の光源色を減算される。そして吸光光源の影響度を予め計算した複数の照明光源からシェーディング処理用の合成光源を得る。このため、局所的にある方向からの照明光を遮蔽したという陰影情報を合成光源に埋め込むことができるようになる。すなわち、本発明では、様々な描画シーンに適切に対応した合成光源の色をシェーディングの前処理として求めておくことで、処理負荷を軽くしつつ、リアルな陰影がオブジェクトに施されるシェーディング処理を実現できる。
【００１０】
なお、照明方向ベクトルや吸光方向ベクトルと数学的に均等なパラメータを用いる場合も、本発明の範囲に含めることができる。
【００１１】
また、照明光源あるいは吸光光源が、通常の平行光源である場合には、その照明方向ベクトルあるいは吸光方向ベクトルは、オブジェクトとの位置関係に依存せずに一義的に決めることができる。
【００１２】
またシェーディング処理は、オブジェクト単位、オブジェクトを構成する頂点単位、あるいはオブジェクトの描画ピクセル単位のいずれで行ってもよい。
【００１３】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記光源設定部が、複数の前記吸光光源を配置設定し、前記吸光光源処理部が、前記各照明光源について、その照明方向ベクトルと、前記各吸光光源の吸光方向ベクトルとに基づいて影響度パラメータを前記各吸光光源毎に求め、前記各照明光源の光源色から前記各吸光光源の光源色を前記影響度パラメータに応じて減算する吸光光源処理を行うようにしてもよい。このようにすれば、複数の照明光源が合成される前に、各照明光源について、全ての吸光光源の影響度が計算されるため、リアルな陰影情報を合成光源に埋め込むことができる。
【００１４】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記吸光光源処理部が、照明光源の光源色をＣ、吸光光源の光源色をＣＲ、照明方向ベクトルＶと吸光方向ベクトルＳＶとの内積結果を含む影響度パラメータをＶｉｐとした場合に、Ｃ−ＣＲ×Ｖｉｐに基づき前記吸光光源処理がされた前記照明光源の光源色を求めてもよい。
【００１５】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記光源設定部が、前記吸光光源として、その影響エリアが設定された少なくとも一つのエリア吸光光源を配置設定し、前記吸光光源処理部が、前記エリア吸光光源の影響エリア内に前記オブジェクトが存在するか否かを判定し、前記オブジェクトが前記エリア吸光光源の影響エリア内に存在すると判定された場合に、前記エリア吸光光源を前記吸光光源処理の対象光源とする処理を行うようにしてもよい。このようにすれば、エリア吸光光源によって影響エリア内を局所的に影がつきやすい空間とすることができる。そしてエリア吸光光源については、その影響エリア内にオブジェクトが存在する場合にだけ吸光光源処理の対象光源として扱われるため、照明光源を合成する前の吸光光源の影響度計算の処理負荷を軽くすることができる。
【００１６】
なお、オブジェクトがエリア吸光光源の影響エリア内に存在するか否かの判定は、オブジェクトの代表点毎（例えば、中心座標）やオブジェクトを構成するポリゴン毎あるいは頂点毎に行ってもよい。
【００１７】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記光源設定部が、半径パラメータ及び角度パラメータに基づき前記エリア吸光光源の影響エリアを設定するようにしてもよい。このようにすれば、円弧状の影響エリアを有する吸光光源を設定することができる。
【００１８】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記光源設定部が、前記半径パラメータ及び前記角度パラメータによって定められる幾何学形状の円弧の直線部分を曲線状に膨らませたオフセットエリアを前記エリア吸光光源の影響エリアに対して設定するようにしてもよい。このようにすれば、角度パラメータによって定められる幾何学形状の円弧によってエリア吸光光源の影響エリアが突如消滅することによりオブジェクトが影響エリア内にいる場合と影響エリア外にいる場合とでオブジェクトに付される陰影が不自然に変化するような事態を防止することができる。
【００１９】
また本発明の画像生成システム、プログラム及び情報記憶媒体では、前記光源設定部が、前記角度パラメータが０の場合に、前記オフセットエリアを前記エリア吸光光源の影響エリアとして設定するようにしてもよい。このようにすれば、角度パラメータが０の場合に、エリア吸光光源の影響エリアが存在しなくなるという不都合を回避することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２１】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００２２】
操作部１６０は、プレーヤがプレーヤオブジェクト（移動体オブジェクトの一例、プレーヤが操作するプレーヤキャラクタ）の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。
【００２３】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００２４】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００２５】
携帯型情報記憶装置１９４は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などがある。通信部１９６は外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００２６】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信してもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００２７】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部１００は記憶部１７０内の主記憶部１７１をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００２８】
処理部１００は、オブジェクト空間設定部１１０、移動・動作処理部１１２、仮想カメラ制御部１１４、光源設定部１１６、吸光光源処理部１１７、基底光源選択部１１８、光源合成部１１９、画像生成部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００２９】
オブジェクト空間設定部１１０は、キャラクタ、建物、球場、車、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００３０】
移動・動作処理部１１２は、オブジェクト（キャラクタ、車、又は飛行機等）の移動・動作演算（移動・動作シミュレーション）を行う。すなわち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させる処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（オブジェクトを構成する各パーツの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００３１】
仮想カメラ制御部１１４は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００３２】
例えば仮想カメラによりオブジェクト（例えばキャラクタ、ボール、車）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部１１２で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【００３３】
光源設定部１１６は、複数の光源（論理的な光源）を用意し、各光源について方向ベクトル（照明方向ベクトル、吸光方向ベクトル）、光源色、明度又は光源位置などの光源情報（属性情報）を設定する処理を行う。特に本実施形態では、オブジェクトを照明するための複数の照明光源、照明光源の光源色を暗くするための少なくとも一つの吸光光源を配置設定する。
【００３４】
また光源設定部１１６は、吸光光源として、その影響エリアが設定された少なくとも一つのエリア吸光光源を配置設定する。この場合、半径パラメータ及び角度パラメータに基づきエリア吸光光源の影響エリアを設定することができる。そして、エリア吸光光源の影響エリアには、半径パラメータ及び角度パラメータによって定められる幾何学形状の円弧の直線部分を曲線状に膨らませたオフセットエリアを設定することができ、角度パラメータが０の場合には、オフセットエリアをエリア吸光光源の影響エリアとして設定することができる。なお吸光光源は、エリア吸光光源に限定されず、点光源、疑似点光源、面光源、平行光源であってもよく、またアンビエント光を吸光設定することもできる。
【００３５】
吸光光源処理部１１７は、複数の照明光源の光源色から吸光光源の光源色を影響度パラメータに応じて減算する吸光光源処理を行う。影響度パラメータは、複数の照明光源の照明方向ベクトルと、吸光光源の吸光方向ベクトルとに基づいて求めることができる。例えば、照明方向ベクトルと吸光方向ベクトルとの内積結果に基づいて求めることができる。
【００３６】
より具体的には、照明光源の光源色をＣ、吸光光源の光源色をＣＲ、照明方向ベクトルＶと吸光方向ベクトルＳＶとの内積結果を含む影響度パラメータをＶｉｐとした場合に、Ｃ−ＣＲ×Ｖｉｐの計算に基づき吸光光源処理後の照明光源の光源色を求めることができる。
【００３７】
なお、複数の吸光光源が配置設定される場合には、複数の照明光源の各照明光源について、その各照明方向ベクトルと、複数の吸光光源の各吸光方向ベクトルとに基づいて影響度パラメータを各吸光光源毎に求め、各照明光源の光源色から各吸光光源の光源色を求められた吸光光源毎の影響度パラメータに応じて減算する吸光光源処理を行う。これにより最終的なシェーディング処理用の合成光源を作る際に、各照明光源は、全ての吸光光源の影響度を計算された状態となっている。すなわち、光源情報に適切な陰影情報を含ませた状態で各照明光源の合成処理を行うことができるようになる。
【００３８】
また吸光光源としてエリア吸光光源が設定されている場合には、エリア吸光光源の影響エリア内にオブジェクトが存在するか否かを判定し、オブジェクトがエリア吸光光源の影響エリア内に存在すると判定された場合に、エリア吸光光源を吸光光源処理の対象光源とする処理を行う。
【００３９】
基底光源選択部１１８は、光源の明度（光源情報）に基づいて、複数の光源の中から基底光源（メイン光源、基準光源）を選択する処理（光源のソート処理）を行う。特に、本実施形態では、吸光光源処理がされた複数の照明光源の中から基底光源を選択する。
【００４０】
光源合成部１１９は、複数の光源を合成する処理（照明方向ベクトルの合成処理、光源色の合成処理等）を行い、合成光源（合成ベクトルや合成色などを、光源情報として有する光源）を求める処理を行う。より具体的には、光源設定部１１６により設定された複数の照明光源の照明方向ベクトルを合成し、合成光源の照明方向ベクトル（合成ベクトル）を求める。或いは、吸光光源処理部１１７により各吸光光源の影響度演算が行われた複数の照明光源に設定された吸光光源処理後の光源色を合成することで、合成光源の光源色（合成色）を求める。
【００４１】
この場合、光源合成部１１９は、例えば、照明方向ベクトルの内積（内積と数学的に均等なものを含む）や、明度の割合（明度を関数により変換したものの割合を含む）などに基づいて。照明光源の合成率（照明方向ベクトルの合成率、光源色の合成率又は光源位置の合成率等）を得る。
【００４２】
また、光源合成部１１９は、基底光源選択部１１８により選択された基底光源（基底ベクトル）に対して、他の照明光源（照明方向ベクトル）を合成する処理を行う。そして、前のフレームで選択された照明光源とは異なる照明光源が基底光源選択部１１８により基底光源として選択された場合には、前のフレームで選択された照明光源の影響度（合成率）が、その後のフレーム経過に伴い徐々に減少するように、照明光源の合成を行う。これにより、照明光源の切り替わりが目立ってしまう事態を防止できる。
【００４３】
画像生成部１２０は、処理部１００で行われる種々の処理の結果に基づいて画像処理を行い、ゲーム画像を生成し、表示部１９０に出力する。例えば、いわゆる３次元のゲーム画像を生成する場合には、まず、座標変換、クリッピング処理、透視変換或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点（構成点）に付与される位置座標、テクスチャ座標、色（輝度）データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、ジオメトリ処理後のオブジェクト（１又は複数プリミティブ面）の画像が、描画バッファ１７４（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画される。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成されるようになる。
【００４４】
画像生成部１２０は、シェーディング処理部１２２を含む。シェーディング処理部１２２は、オブジェクトに陰影をつけるための処理を行う。より具体的には、光源情報（照明方向ベクトル、色又は光源位置等）、照明モデル、オブジェクトの法線ベクトル（頂点又は面の法線ベクトル）などに基づいてシェーディング処理を行う。
【００４５】
ここで、シェーディング処理は、例えばオブジェクトの各点（ピクセル、ドット）での光の色（ＲＧＢ、ＹＣｒＣｂ、ＹＵＶ、ＹＩＱ）を決定する処理と定義できる。そして、このシェーディング処理は、実世界での照明現象を模擬した数学的なモデルである照明モデルを用いて行われる。この照明モデルとしては、実世界現象のモデル化の態様に応じて、ランバート（Lambert）、フォン（Phong）、ブリン（Blinn）などの種々のモデルがある。また、プリミティブ面（ポリゴン、曲面等）の陰影づけを滑らかにして、プリミティブ面の境界を目立たなくする手法として、グーロー（Gouraud）シェーディング、フォン（Phong）シェーディングなどの種々のスムースシェーディング手法がある。
【００４６】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００４７】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００４８】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて生成してもよい。
【００４９】
２．本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。なお、以下では、格闘ゲームに本実施形態を適用した場合を主に例にとり説明するが、本実施形態は、格闘ゲーム以外の種々のゲームに広く適用できる。
【００５０】
２．１  吸光光源の影響度を考慮した照明光源の合成
さて、よりリアルで高品質なゲーム画像を生成するためには、より多くの数の光源を用いてシェーディングを行うことが望ましい。
【００５１】
しかしながら、光源の数が多くなると、その分だけシェーディングの処理負荷が重くなってしまうという問題がある。
【００５２】
例えばグーローシェーディングでは、オブジェクトの頂点に設定された法線ベクトルと光源の照明方向ベクトルとの内積を求めることで、オブジェクトの各頂点色を求める。従って、オブジェクトの頂点数がＩ個であり、光源の数が１個の場合には、頂点色を求める処理がＩ回分だけ必要になる。従って、光源の数がＪ個になると、頂点色を求める処理が（ＩラＪ）回分だけ必要になってしまう。
【００５３】
通常、オブジェクトの頂点数Ｉは非常に多いため、このように光源数を増やすことによる処理負荷の増加は過大なものとなる。
【００５４】
このような課題を解決するために本実施形態では以下のような手法を採用している。
【００５５】
即ち、本実施形態では図２に示すように、複数の照明光源ＬＳ１、ＬＳ２を用意する（３個以上用意してもよい）。また本実施形態では、図２に示すように、照明光源ＬＳ１、ＬＳ２の光源色を減算する（暗くする）吸光光源ＬＳＲが用意されている。この吸光光源ＬＳＲは、各照明光源ＬＳ１、ＬＳ２の双方に影響を与える平行光源である。なお吸光光源ＬＳＲは、点光源、疑似点光源、面光源等であってもよい。また吸光光源ＬＳＲは、平行光源である場合、その影響エリアが設定された影響エリア制限付きの平行光源（以下、エリア吸光光源と呼ぶ）であってもよい。図２では、説明の便宜上、各照明光源ＬＳ１、ＬＳ２に対応する吸光光源ＬＳＲを表している。
【００５６】
照明光源ＬＳ１は、その照明方向ベクトルがＶ１であり、その光源色がＣ１であり、その明度がＢＲ１（例えば光源色Ｃ１をグレースケールで表した時の明るさ）である。ここで、照明方向ベクトルＶ１は、光源ＬＳ１とオブジェクトＯＢ（照明位置又はＯＢの代表位置ＬＰ）とを結ぶ方向に沿ったベクトル（単位ベクトル）である。
【００５７】
また、照明光源ＬＳ２は、その照明方向ベクトルがＶ２であり、その光源色がＣ２であり、その明度がＢＲ２である。ここで、照明方向ベクトルＶ２は、光源ＬＳ２とオブジェクトＯＢ（照明位置又は代表位置ＬＰ）とを結ぶ方向に沿ったベクトル（単位ベクトル）である。
【００５８】
また、吸光光源ＬＳＲは、その吸光方向ベクトルがＳＶであり、その光源色がＣＲ１でる。ここで、吸光方向ベクトルＳＶは、特定の方向からの光を遮蔽するように予め決められた吸光方向成分を有するベクトル（単位ベクトル）である。
【００５９】
本実施形態では図２に示すように、これらの照明光源ＬＳ１、ＬＳ２（論理的な光源）を合成して、オブジェクトＯＢに対する合成光源ＬＳＳ（シェーディング処理用の照明光源）を求める。このとき照明光源ＬＳ１、ＬＳ２を合成する前に、予め各照明光源ＬＳ１、ＬＳ２について吸光光源ＬＳＲの影響度を計算して、その影響度に応じて照明光源ＬＳ１、ＬＳ２の光源色Ｃ１、Ｃ２を減算しておく吸光光源処理を行っておくことで、合成光源ＬＳＳを作成する前段階で、各照明光源ＬＳ１、ＬＳ２の光源色に吸光光源ＬＳＲの影響により生じる陰影の陰影情報を含ませることができる。
【００６０】
より具体的には、各照明光源ＬＳ１、ＬＳ２の照明方向ベクトルＶ１、Ｖ２と吸光光源ベクトルとの内積に基づいて、各照明光源ＬＳ１、ＬＳ２に対する吸光光源ＬＳＲの影響度Ｖｉｐを求める。例えば、照明光源ＬＳ１に対する吸光光源の影響度Ｖｉｐ１は、Ｖ１・ＳＶで求められる。また例えば、照明光源ＬＳ２に対する吸光光源ＬＳＲの影響度Ｖｉｐ２は、Ｖ２・ＳＶで求められる。
【００６１】
そして、各照明光源ＬＳ１、ＬＳ２に対する吸光光源ＬＳＲの影響度Ｖｉｐ１、Ｖｉｐ２が求められたら、その影響度Ｖｉｐ１、Ｖｉｐ２に応じて各照明光源ＬＳ１、ＬＳ２の光源色Ｃ１、Ｃ２を減算する吸光光源処理を行う。
【００６２】
そして、各照明光源ＬＳ１、ＬＳ２についての吸光光源処理後の光源色Ｃ１´、Ｃ２´は、以下のようにして求められる。
【００６３】
Ｃ１´＝Ｃ１−ＣＲ１×Ｖｉｐ１（Ｖｉｐ１＝Ｖ１・ＳＶ）          （Ａ）
Ｃ２´＝Ｃ２−ＣＲ１×Ｖｉｐ２（Ｖｉｐ２＝Ｖ２・ＳＶ）          （Ｂ）
図２に示す例では、照明方向ベクトルＶ１よりも照明方向ベクトルＶ２の方が吸光方向ベクトルＳＶとの一致度合いが大きいため、照明光源ＬＳ１に対する吸光光源ＬＳＲの影響度Ｖｉｐ１よりも照明光源ＬＳ２に対する吸光光源ＬＳＲの影響度Ｖｉｐ２の方が大きくなり、照明光源ＬＳ１の光源色Ｃ１よりも照明光源ＬＳ２の光源色Ｃ２の方が大きく減算されることになる。
【００６４】
このようにして各照明光源ＬＳ１、ＬＳ２についての吸光光源ＬＳＲの影響度計算及び影響度に応じた各照明光源の光源色の減算処理を含む吸光光源処理が済むと、その吸光光源処理後の光源色Ｃ１´、Ｃ２´及び明度ＢＲ１´、ＢＲ２´を用いて、照明光源ＬＳ１と照明光源ＬＳ２とを合成したオブジェクトＯＢのシェーディング処理用の合成光源ＬＳＳを求める。
【００６５】
すなわち、オブジェクトＯＢに対する照明光源ＬＳ１、ＬＳ２の照明方向ベクトルＶ１、Ｖ２を合成し、合成光源ＬＳＳの照明方向ベクトルＶＳ（単位ベクトル）を求める。また、照明光源ＬＳ１、ＬＳ２の吸光光源処理後の光源色Ｃ１´、Ｃ２´を合成し、合成光源ＬＳＳの色ＣＳを求める。
【００６６】
そして、この求められた合成光源ＬＳＳを用いて、オブジェクトＯＢに対するシェーディング処理を行う。即ち、照明光源ＬＳ１、ＬＳ２の代わりに、照明方向ベクトルがＶＳで色がＣＳである合成光源ＬＳＳ（平行光源）が仮想的に存在すると考え、この合成光源ＬＳＳだけを用いてシェーディング処理を行う。
【００６７】
このようにすれば、論理的な光源（ＬＳ１、ＬＳ２）は複数個存在するにも拘わらず、シェーディング用の物理的な光源は例えば１個で済むため、シェーディングの処理負荷を軽減できる。例えば、オブジェクトの頂点数がＩ個である場合には、頂点色を求める処理は、各オブジェクトについてＩ回分だけ行えば済むようになる。
【００６８】
そして、本実施形態では、論理的な光源（ＬＳ１、ＬＳ２）が複数個存在するため、光源が１個しか存在しない場合に比べてリアルな画像表現が可能になる。例えば、光源ＬＳ１、ＬＳ２の位置関係や色の関係に応じて、合成光源の照明方向ベクトルや色が様々に変化するようになる。また、オブジェクト毎に、或いはオブジェクトと光源との位置関係に応じて、シェーディングに使用される合成光源は異なったものになり、異なったシェーディングが施されるようになる。さらに本実施形態の手法により求めた合成光源ＬＳＳの光源色ＣＳは、特定の方向からの光（吸光方向ベクトルＳＶの向きから入射する光）を遮蔽する吸光光源ＬＳＲの影響を考慮して合成前に各照明光源ＬＳ１、ＬＳ２の光源色Ｃ１、Ｃ２が減算された状態で合成されているので、様々なシチュエーションに対応できる光源情報を比較的少ない処理負荷で得ることができる。
【００６９】
さて、本実施形態では光源の合成率（照明方向ベクトルの合成率、色の合成率）を、以下に説明する手法で求めている。
【００７０】
例えば、図２において、照明光源ＬＳ１、ＬＳ２の吸光光源処理後の光源色Ｃ１´、Ｃ２´に応じて定まる明度をＢＲ１´、ＢＲ２´とした場合に、明度の割合ＢＲＰ（例えばＢＲＰ＝ＢＲ２´／ＢＲ１´）を求める。
【００７１】
また、照明光源ＬＳ１、ＬＳ２の照明方向ベクトルＶ１、Ｖ２の内積ＶＩＰ＝Ｖ１・Ｖ２を求める。
【００７２】
次に、これらの明度割合ＢＲＰと内積ＶＩＰに基づいて、合成率γ＝Ｆ（ＢＲＰ、ＶＩＰ）を求める。ここで、Ｆ（ＢＲＰ、ＶＩＰ）は、ＢＲＰ、ＶＩＰを引数とする関数である。
【００７３】
そして、この合成率γを用いて、照明光源ＬＳ１、ＬＳ２の照明方向ベクトルＶ１、Ｖ２を合成し、合成光源ＬＳＳの照明方向ベクトルＶＳを求める。或いは、ＬＳ１、ＬＳ２の吸光光源処理後の光源色Ｃ１´、Ｃ２´を合成し、ＬＳＳの色ＣＳを求める。
【００７４】
ＶＳ＝Ｖ１＋γ×Ｖ２                （Ｃ）
ＣＳ＝Ｃ１´＋γ×Ｃ２´            （Ｄ）
なお、上式（Ｃ）のベクトル合成処理は、ベクトルＶＳ、Ｖ１、Ｖ２のＸ、Ｙ、Ｚ座標の各々について行う。また、上式（Ｄ）の色合成処理は、色ＣＳ、Ｃ１´、Ｃ２´のＲ、Ｇ、Ｂ成分（広義には第１〜第３の成分）の各々について行う。
【００７５】
また、上式（Ｃ）、（Ｄ）は、加算ブレンディング方式を採用しているが、下式のような狭義のブレンディング方式を採用してもよい。
【００７６】
ＶＳ＝（１−γ）ラＶ１＋γ×Ｖ２        （Ｅ）
ＣＳ＝（１−γ）ラＣ１´＋γ×Ｃ２´    （Ｆ）
また、合成率γを求める際に使用する明度割合（明度比率）ＢＲＰは、ＢＲ１´、ＢＲ２´そのものの割合（比率）であってもよいし、ＢＲ１´、ＢＲ２´を関数等で変換することで得られるＢＲ１”、ＢＲ２”の割合であってもよい。
【００７７】
また、合成率γを求める関数Ｆとしては、例えばＦ（ＢＲＰ、ＶＩＰ）＝ＫラＢＲＰラＶＩＰ（Ｋは定数）を考えることができる。また、関数Ｇ、Ｈを用いて、Ｆ（ＢＲＰ、ＶＩＰ）＝ＫラＧ（ＢＲＰ）ラＨ（ＶＩＰ）とすることもできる。ここで、関数Ｇ、Ｈとしては、引数を非線形変換する関数（正弦関数、余弦関数、ｎ次式）などを採用できる。
【００７８】
また、合成率γを、内積ＶＩＰのみに基づいて求めたり、明度割合ＢＲＰにのみに基づいて求めてもよい。
【００７９】
以上のように本実施形態では、照明光源ＬＳ１、ＬＳ２の照明方向ベクトルＶ１、Ｖ２の内積ＶＩＰを用いて合成率γを求めている。従って、図２に示すように、照明方向ベクトルＶ１、Ｖ２間のなす角度に応じて、合成率γも変化するようになり、多様な画像表現を実現できる。
【００８０】
より具体的には、内積ＶＩＰを用いて合成率γを求めるようにすれば、Ｖ１とＶ２のなす角度が大きくなって９０度に近づいたとしても、合成光源ＬＳＳの照明方向ベクトルＶＳの向きを、Ｖ２の方向よりもＶ１の方向に常に近づけるようにすることができる。これにより、例えば照明ベクトルＶ１（基底ベクトル）を、常に支配的な光源に設定できるようになる。
【００８１】
また本実施形態では、照明光源ＬＳ１、ＬＳ２の明度ＢＲ１、ＢＲ２の割合ＢＲＰを用いて合成率γを求めている。従って、明度（ＲＧＢをグレースケール変換した時の明るさ等）の高い方の光源を支配的な光源に設定することが可能になる。例えば、照明光源ＬＳ１の明度ＢＲ１´の方が明るい場合には、合成光源ＬＳＳの照明方向ベクトルＶＳの向きが、Ｖ２の方向よりもＶ１の方向に近づくようになる。
【００８２】
２．２  エリア吸光光源
本実施形態では、図３（Ａ）に示すように、吸光光源の影響エリアが制限された平行光源であるエリア吸光光源を用いて、局所的な影空間をオブジェクト空間内に生成する手法を採用している。図３（Ａ）に示すように、エリア吸光光源の筒状の影響エリアに入った照明光は、その照明方向ベクトルとエリア吸光光源の吸光方向ベクトルに応じて求められる影響度に応じて減衰（色が減算）される。例えば、エリア吸光光源を照明光源からの光を遮蔽するような建造物オブジェクトの付近に配置設定しておくことで、その建造物オブジェクトによる照明光源の遮蔽を、エリア吸光光源で設定した影響エリア（影空間）にシェーディング対象のオブジェクトが進入したか否かによって光源合成用の照明光源の光源色を求める際にその影響を考慮してあたかも建造物オブジェクトに照明光が遮蔽されているかのような画像を作成することができる。
【００８３】
より具体的に説明すると、本実施形態のエリア吸光光源ＬＳＲは、図３（Ｂ）に示すように、エリア吸光光源ＬＳＲによる照明光源ＬＳからの照明光をどれくらいの割合で減衰させるかを求める吸光率を影響エリアＡ１、Ａ２内で放射状に変化させている。影響エリアＡ１は、エリア吸光光源ＬＳＲの中心から広がる吸光率（吸光有効度）を１００％（１．０）とする範囲である。影響エリアＡ２は、影響エリアＡ１の外周部から放射状に徐々に吸光率（吸光有効度）を０％（０．０）まで変化させた領域である。このように１のエリア吸光光源ＬＳＲの影響エリア内で吸光率を変化させることによって、描画シーンのシチュエーションに合わせて適切な影空間をオブジェクト空間内に設定することができるようになる。
【００８４】
ところで、エリア吸光光源ＬＳＲは、半径パラメータｒと角度パラメータθに基づいて、円弧状の影響エリアの外周面を設定できるようになっている。この場合に、角度パラメータθがθ＝０になると、影響エリアを設定できないという不都合が生じうる。また半径パラメータｒ及び角度パラメータθで定められる幾何学形状の円弧を、何ら工夫せずにそのまま影響エリアとして設定してしまうと、オブジェクトが影響エリアから外に出た場合に吸光率を徐々に変化させたエリアＡ２を経ることなくエリア吸光光源の影響エリア外に出てしまうことになり、オブジェクトに付される陰影が不自然に変化する事態が起こりうる。オブジェクトが影響エリア外から影響エリア内に入ってくる場合についても同様の不自然な事態が起こりうる。このため本実施形態では、影響エリアの設定時における角度パラメータθについての不都合や影響エリア内外でオブジェクトに付される陰影が不自然に変化する不都合を回避すべく、図４（Ａ）に示すように、エリア吸光光源ＬＳＲの影響エリアＡ１、Ａ２にオフセットエリアを設定している。すなわち、このオフセットエリアの存在により、半径パラメータｒ及び角度パラメータθで定まる幾何学形状の円弧の開口部においても影響エリアＡ１及び影響エリアＡ２が存在するようにエリア吸光光源を設定してオブジェクトに付される陰影が不自然に変化しないようにすることができる。またオフセットエリアの存在により、角度パラメータθがθ＝０という値を取る場合であっても、図４（Ｂ）に示すように、オフセットエリアがエリア吸光光源ＬＳＲの影響エリアとして設定されることにより、角度パラメータθについての不都合を解消することができる。
【００８５】
このエリア吸光光源ＬＳＲは、例えば図５（Ａ）に示すようなシーンの画像を生成する場合に好適である。図５（Ａ）では、アーチ状の建造物オブジェクトＯＢ４のアーチを通過するように移動する移動地形オブジェクトＯＢ３が存在している。移動地形オブジェクトＯＢ３は、キャラクタオブジェクトＯＢ１、ＯＢ２を上に載せて移動している。図５（Ａ）に示す状況において仮想カメラＶＣから見た画像は、図５（Ｂ）のようである。この場合に、建造物オブジェクトＯＢ４により光が遮蔽されて、その遮蔽の影響を受けた影が移動地形オブジェクトＯＢ３に映るように描画する場合に、建造物オブジェクトＯＢ４付近にエリア吸光光源ＬＳＲを配置設定しておく。そして、図６（Ａ）に示すように、移動地形オブジェクトＯＢ３が吸光光源ＬＳＲの影響エリアＡ１に進入した状況において仮想カメラＶＣから見た画像は、図６（Ｂ）のようである。図６（Ｂ）に示す画像では、キャラクタオブジェクトＯＢ１、ＯＢ２の影が、周りの暗さの影響を受けてにじんでいることがわかる。
３．本実施形態の処理
次に、本実施形態の処理の詳細例について、図７及び図８のフローチャートを用いて説明する。
【００８６】
図７は、吸光光源をまとめた吸光光源リストを作成する処理手順を示すフローチャートである。
【００８７】
まず、全ての照明光源、吸光光源の光源データを含む全光源リストから１の光源データを取得する（ステップＳ１）。そして取得した光源データからベクトル（照明方向ベクトル、あるいは吸光方向ベクトル）、色（Ｒ成分、Ｇ成分、Ｂ成分）、及び色の明度を確定する（ステップＳ２）。
【００８８】
次に取得した光源データにおいて、その光源について吸光光源である旨の指定（吸光指定）がされているかどうかをチェックする（ステップＳ３）。吸光指定がされている場合には（ステップＳ３でＹ）、その光源は、吸光光源であるため、光源の配置設定位置に応じた色の減衰を計算する（ステップＳ４）。そして、その計算結果に基づき、吸光光源の色が十分な明度を備えているかどうかをチェックする（ステップＳ５）。
【００８９】
色の明度が十分である場合には（ステップＳ５でＹ）、その吸光光源を吸光光源リストに登録する（ステップＳ６）。このとき吸光方向ベクトル、光源色、対象光源情報（影響度を計算する対象となる照明光源の情報）が取得できるように設定する。そしてＳ１〜Ｓ６の処理を全光源リストに含まれる全ての光源について処理したら（ステップＳ７でＹ）、吸光光源リストのリストアップを終了する。
【００９０】
図８は、本実施形態の吸光光源処理を含むシェーディング処理用の照明光源リストを作成する処理手順を示すフローチャートである。
【００９１】
まず処理対象の光源リストから光源データを取得する（ステップＳ１０）。そして、取得した光源データが吸光光源のものであるかどうかをチェックする（ステップＳ１１）、吸光光源の光源データである場合には（ステップＳ１１でＹ）、リストアップの必要がないため、ステップＳ２４に移行する。
一方、取得した光源データが照明光源の光源データである場合には（ステップＳ１１でＮ）、その照明光源が吸光光源処理の処理対象となる吸光光源があるかどうかをチェックする（ステップＳ１３）。吸光光源処理の処理対象となる吸光光源がない場合には（ステップＳ１２でＮ）、その照明光源を明るい順にソートして合成用照明光源リストに加える（ステップＳ２３）。
【００９２】
一方、吸光光源処理の処理対象となる吸光光源がある場合には（ステップＳ１２でＹ）、図７のフローチャートに従って作成した吸光光源リストから吸光光源データを取得する（ステップＳ１３）。そして、照明光源の照明方向ベクトルＶと吸光光源の吸光方向ベクトルＳＶとの内積Ｖｉｐを求める（ステップＳ１４）。このときＶｉｐ＞０であるかどうかをチェックする（ステップＳ１５）。
【００９３】
Ｖｉｐ＞０である場合には（ステップＳ１５でＹ）、照明光源の色が減算されるべきであると判断され、吸光光源色ＣＲと内積Ｖｉｐとに基づいて、照明光源の光源色Ｃを減算させる吸光色としてＣＲ×Ｖｉｐを求める。次に、吸光有効度（吸光率）ＲＲに内積Ｖｉｐを加えて、吸光光源処理の実行フラグをオンにセットする（ステップＳ１９）。これらステップＳ１３〜ステップＳ１７の処理は、リストアップ対象の照明光源を処理対象とする吸光光源についての全ての吸光色が求められるまで行われる（ステップＳ１８）。
【００９４】
リストアップ対象の照明光源を処理対象として指定する吸光光源の全ての吸光色を求め終えたら（ステップＳ１８でＹ）、吸光光源処理の実行フラグを確認する（ステップＳ１９）。
【００９５】
吸光光源処理の実行フラグがオンである場合には（ステップＳ１９）、求めた吸光色（ＣＲ×Ｖｉｐ）の明度ＢＲＳに対する処理対象の吸光光源の吸光有効度ＲＲを求めて、値を０．０〜１．０でリミット（クランプ）する（ステップＳ２０）。そして照明光源の光源有効度Ｒ´＝Ｒ×（１−ＲＲ）を求める（ステップＳ２１）。そして、照明光源の光源色Ｃから吸光色（ＣＲ×Ｖｉｐ）を減算して、照明光源の光源色Ｃ´を求める（ステップＳ２２）。
【００９６】
そして、照明光源の明度、光源ソート用明度にステップＳ２１で求めた光源有効度Ｒ´を乗算して、乗算処理後のソート用明度で照明光源を明るい順にソートして、合成用照明光源リストにリストアップする（ステップＳ２３）。これらステップＳ２３までの処理を全ての処理対象光源について終えたら（ステップＳ２４でＹ）、合成用照明光源リストの作成を終了する。
【００９７】
次に、本実施形態の光源合成処理の詳細例について、図９及び図１０のフローチャートを用いて説明する。
【００９８】
まず処理対象となる光源が、ソートされた光源のうちの先頭の光源か否かを判断する（図９のステップＳ１００）。そして、先頭の光源である場合には、その光源が、前回のフレームで基底光源として使用した光源と同じか否かを判断する（ステップＳ１０１）。そして、同じ光源である場合にはステップＳ１０５に移行する。
【００９９】
一方、違う光源である場合（基底光源が切り替わった場合）には、合成率ＧＲの移行速度ＳＳを早くするか否かを判定する（ステップＳ１０２）。そして、速くする場合（例えば、ヒットエフェクト光の場合）には、ＳＳを１．０（最大値）に設定する（ステップＳ１０３）。一方、速くしない場合（例えば、日光と松明の場合）には、ＳＳを０．０（最小値）に設定する（ステップＳ１０４）。
【０１００】
次に、処理対象光源を基底光源に設定する（ステップＳ１０５）。より具体的には、基底光源の照明方向ベクトルを基底ベクトルＶＢに設定すると共に合成ベクトルＶＳの初期値に設定する。また、基底光源の明度を基底明度ＢＲＢに設定し、基底光源の色を合成色ＣＳの初期値に設定する。そして、追従度Ｔを１．０に設定し（ステップＳ１０６）、ステップＳ１１４に移行する。
【０１０１】
ステップＳ１００で、処理対象光源が先頭の光源ではないと判断された場合には、基底明度ＢＲＢに対する、処理対象光源の明度ＢＲの割合ＢＲＰを求め、求められたＢＲＰを０．０〜１．０の範囲にリミットする（ステップＳ１０７）。また、基底ベクトルＶＢと処理対象光源の照明方向ベクトルＶとの内積ＶＩＰを求める（ステップＳ１０８）。
【０１０２】
次に、内積ＶＩＰが負の値か否かを判断し（ステップＳ１０９）、ＶＩＰ＜０の場合には、処理対象光源の色ＣとＶＩＰに基づき、アンビエント光の色に付加すべき色ＣＡを求める（ステップＳ１１０）。
【０１０３】
一方、ＶＩＰ≧０の場合には、明度割合ＢＲＰと内積ＶＩＰに基づいて、合成率縺≠e（ＢＲＰ，ＶＩＰ）を求める（ステップＳ１１１）。
【０１０４】
次に、基底光源と処理対象光源の明度が近いほど小さな値になる追従度Ｔ＝｛Ｔ＋（１−ＢＲＰ）｝ラ０．５を設定する（ステップＳ１１２）。
【０１０５】
次に、求まった合成率γと、処理対象光源の照明方向ベクトルＶ及び色Ｃに基づいて、合成ベクトルＶＳ＝ＶＳ＋γ×Ｖ、合成色ＣＳ＝ＣＳ＋聆Ｃを求める。（ステップＳ１１３。）。そして、全ての処理対象光源を処理したか否かを判断し（ステップＳ１１４）、処理していない場合にはステップＳ１００に戻る。
【０１０６】
次に、合成ベクトルＶＳを正規化する（図１０のステップＳ１１５）。そして、過去の合成ベクトルとの合成率ＧＲをコントロールするか否かを判断する（ステップＳ１１６）。
【０１０７】
そして、ＧＲをコントロールする場合には、ＧＲ＝Ｔ３に設定し、得られたＧＲを０．１〜１．０の範囲にリミットする（ステップＳ１１７）。このようにすることで、ＧＲは、Ｔ＝１．０付近で急峻に０．０から１．０に変化するようになる。一方、ＧＲをコントロールしない場合には、ＧＲ＝１．０に設定する（ステップＳ１１８）。
【０１０８】
次に、ＧＲ＝ＧＲラＳＳに設定し、得られたＧＲを０．０５〜１．０の範囲にリミットする（ステップＳ１１９）。ＧＲ≧０．０５となるようにＧＲをリミットすることで、移行速度ＳＳ＝０．０の場合にも、ＧＲが０．０５よりも小さくならないことが保証されるようになる。
【０１０９】
次に、移行速度ＳＳ＝ＳＳ＋１／Ｍ（例えばＭ＝２４）に設定し、得られたＳＳを０．０〜１．０の範囲にリミットする（ステップＳ１２０）。このようにすることで、移行速度ＳＳが、フレーム経過に伴い徐々に増加するようになる。
【０１１０】
次に、前回のフレームの合成ベクトルＶＳ´と、今回のフレームの合成ベクトルＶＳと、合成率ＧＲに基づき、最終合成ベクトルＶＳＬ＝（１．０−ＧＲ）ラＶＳ´＋ＧＲラＶＳを求める（ステップＳ１２１）。
【０１１１】
また、前回のフレームの合成色ＣＳ´と、今回のフレームの合成色ＣＳと、合成率ＧＲに基づき、最終合成色ＣＳＬ＝（１．０−ＧＲ）ラＣＳ´＋ＧＲラＣＳを求める（ステップＳ１２２）。
【０１１２】
そして、求められた最終合成ベクトルＶＳＬと、最終合成色ＣＳＬと、移行速度ＳＳを、次のフレームの処理に使用するために主記憶部に保存する（ステップＳ１２３）。
【０１１３】
最後に、最終合成ベクトルＶＳＬ、最終合成色ＣＳＬに基づき、オブジェクトのシェーディングを行う（ステップＳ１２４）。
【０１１４】
以上のようにすることで、当該フレームでの光源の合成処理が完了し、オブジェクトをシェーディングすることができる。
【０１１５】
４．ハードウェア構成
図１１に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ９００は、ＤＶＤ９８２（情報記憶媒体。ＣＤでもよい。）に格納されたプログラム、通信インターフェース９９０を介してダウンロードされたプログラム、或いはＲＯＭ９５０に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、マトリクス演算（ベクトル演算）を高速に実行する。例えばオブジェクトを移動させたり動作（モーション）させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１１６】
ジオメトリプロセッサ９０４は、メインプロセッサ９００上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ９０６は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセラレートする。これにより、オープニング画面やゲーム画面において、ＭＰＥＧ方式等で圧縮された動画像を表示できる。
【０１１７】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を実行する。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０を利用して、描画データ（頂点データや他のパラメータ）を描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると描画プロセッサ９１０は、描画データやテクスチャに基づいて、Ｚバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ９２２に描画する。また描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエイリアシング、シェーディング処理なども行う。１フレーム分の画像がフレームバッファ９２２に書き込まれるとその画像はディスプレイ９１２に表示される。
【０１１８】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などのゲーム音を生成し、スピーカ９３２を介して出力する。ゲームコントローラ９４２やメモリカード９４４からのデータはシリアルインターフェース９４０を介して入力される。
【０１１９】
ＲＯＭ９５０にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納される。なおＲＯＭ９５０の代わりにハードディスクを利用してもよい。ＲＡＭ９６０は各種プロセッサの作業領域となる。ＤＭＡコントローラ９７０は、プロセッサ、メモリ間でのＤＭＡ転送を制御する。ＤＶＤドライブ９８０（ＣＤドライブでもよい。）は、プログラム、画像データ、或いは音データなどが格納されるＤＶＤ９８２（ＣＤでもよい。）にアクセスする。通信インターフェース９９０はネットワーク（通信回線、高速シリアルバス）を介して外部との間でデータ転送を行う。
【０１２０】
なお本実施形態の各部（各手段）の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１２１】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０１２２】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。また本発明は、上記で説明した手法に限定されず、これらと均等な手法も本発明の範囲に含まれる。
【０１２３】
また本発明は種々のゲーム（格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等）に適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【０１２４】
【図１】本実施形態の画像生成システムの機能ブロック図。
【図２】本実施形態の手法の説明図。
【図３】図３（Ａ）及び図３（Ｂ）はエリア吸光光源の説明図。
【図４】図４（Ａ）及び図４（Ｂ）はエリア吸光光源の説明図。
【図５】図５（Ａ）は描画シーンの説明図。図５（Ｂ）は本実施形態の手法を適用した画像の例。
【図６】図６（Ａ）は描画シーンの説明図。図６（Ｂ）は本実施形態の手法を適用した画像の例。
【図７】本実施形態の具体的な処理例を示すフローチャート。
【図８】本実施形態の具体的な処理例を示すフローチャート。
【図９】本実施形態の具体的な処理例を示すフローチャート。
【図１０】本実施形態の具体的な処理例を示すフローチャート。
【図１１】ハードウェア構成例。
【符号の説明】
【０１２５】
ＯＢ  オブジェクト、ＬＰ  照明位置（代表点）、
ＬＳ１，ＬＳ２  照明光源、ＬＳＲ  吸光光源、ＬＳＳ  合成光源、
Ｖ１，Ｖ２，ＶＳ  照明方向ベクトル、ＳＶ  吸光方向ベクトル、
Ｃ１，Ｃ２，Ｃ１´，Ｃ２´，ＣＲ，ＣＳ  光源色、
Ｖｉｐ１，Ｖｉｐ２  内積（影響度パラメータ）、
ＢＲ１，ＢＲ２，ＢＲ１´，ＢＲ２´  明度、
１００  処理部、
１１０  オブジェクト空間設定部、１１２  移動・動作処理部、
１１４  仮想カメラ制御部、１１６  光源設定部、１１７  吸光光源処理部、
１１８  基底光源選択部、１１９  光源合成部、
１２０  画像生成部、１２２  シェーディング処理部、１３０  音生成部、
１６０  操作部、１７０  記憶部、１７２  主記憶部、１７４  描画バッファ、
１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、
１９４  携帯型情報記憶装置、１９６  通信部
【図１】
2006323515.tif 000003
【図２】
2006323515.tif 000004
【図３】
2006323515.tif 000005
【図４】
2006323515.tif 000006
【図５】
2006323515.tif 000007
【図６】
2006323515.tif 000008
【図７】
2006323515.tif 000009
【図８】
2006323515.tif 000010
【図９】
2006323515.tif 000011
【図１０】
2006323515.tif 000012
【図１１】
2006323515.tif 000013