(57)【要約】【課題】よりリアルで高品質な影画像を生成できるプログラム、情報記憶媒体、画像生成システム等の提供。【解決手段】画像生成システムは、仮想カメラを制御する仮想カメラ制御部と、仮想カメラとモデルオブジェクトとの距離を求める距離演算部と、モデルオブジェクトを含む複数のオブジェクトの描画処理を行う描画処理部を含む。描画処理部は、モデルオブジェクトに対する自己影又は他のオブジェクトの影である影画像の濃さを、仮想カメラとモデルオブジェクトとの距離が近づくほど薄くする処理を行う。【選択図】図４
2010033296.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
前記仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラとモデルオブジェクトとの距離を求める距離演算部と、
前記モデルオブジェクトを含む複数のオブジェクトの描画処理を行う描画処理部として、
コンピュータを機能させ、
前記描画処理部は、
前記モデルオブジェクトに対する自己影又は他のオブジェクトの影である影画像の濃さを、前記仮想カメラと前記モデルオブジェクトとの距離が近づくほど薄くする処理を行うことを特徴とするプログラム。
【請求項２】
請求項１において、
前記描画処理部は、
シャドウマップ処理により、前記モデルオブジェクトに対する前記影画像を生成することを特徴とするプログラム。
【請求項３】
請求項２において、
前記描画処理部は、
分散シャドウマップ処理における分散調整パラメータの値を、前記仮想カメラと前記モデルオブジェクトとの距離に基づき設定して、前記分散シャドウマップ処理により、前記モデルオブジェクトに対する前記影画像を生成することを特徴とするプログラム。
【請求項４】
請求項３において、
前記描画処理部は、
前記分散シャドウマップ処理において前記影画像の濃さを求める演算に用いる分散が、前記仮想カメラと前記モデルオブジェクトとの距離が近づくほど大きくなるように、前記分散調整パラメータの値を設定することを特徴とするプログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記描画処理部は、
前記仮想カメラと前記モデルオブジェクトとの距離Ｌが第１の距離Ｌ１よりも近い場合には、前記影画像の濃さを距離Ｌが近づくほど薄くし、距離Ｌが第２の距離Ｌ２よりも遠い場合には、前記影画像の濃さを、距離Ｌが遠ざかるほど濃くし、距離Ｌが、Ｌ１≦Ｌ≦Ｌ２である場合には、前記影画像の濃さを、前記仮想カメラと前記モデルオブジェクトとの距離に依らずに一定にすることを特徴とするプログラム。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記仮想カメラ制御部は、
第１のモデルオブジェクトと第２のモデルオブジェクトとの距離が離れる離隔イベントが発生した場合に、前記仮想カメラを前記第１、第２のモデルオブジェクトから遠ざける制御を行い、
前記描画処理部は、
前記離隔イベントが発生して前記仮想カメラと前記第１、第２のモデルオブジェクトとの距離が離れた場合に、前記影画像の濃さを濃くする処理を行うことを特徴とするプログラム。
【請求項７】
請求項１乃至５のいずれかにおいて、
前記仮想カメラ制御部は、
前記モデルオブジェクトへのズームイベントが発生した場合に、前記仮想カメラを前記モデルオブジェクトに近づける制御を行い、
前記描画処理部は、
前記ズームイベントが発生して前記仮想カメラと前記モデルオブジェクトとの距離が近づいた場合に、前記影画像の濃さを薄くする処理を行うことを特徴とするプログラム。
【請求項８】
請求項１乃至５のいずれかにおいて、
前記仮想カメラ制御部は、
前記仮想カメラの視野範囲内のモデルオブジェクト数が増加するモデルオブジェクト数増加イベントが発生した場合に、前記仮想カメラを複数のモデルオブジェクトから遠ざける制御を行い、
前記描画処理部は、
前記モデルオブジェクト数増加イベントが発生して前記仮想カメラと前記モデルオブジェクトとの距離が離れた場合に、前記影画像の濃さを濃くする処理を行うことを特徴とするプログラム。
【請求項９】
請求項１乃至５のいずれかにおいて、
前記仮想カメラ制御部は、
前記モデルオブジェクトの移動に対して前記仮想カメラを慣性を持たせて追従させる制御を行い、
前記描画処理部は、
前記モデルオブジェクトへの前記仮想カメラの追従が遅れて前記仮想カメラと前記モデルオブジェクトとの距離が離れた場合に、前記影画像の濃さを濃くする処理を行うことを特徴とするプログラム。
【請求項１０】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至９のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１１】
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
前記仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラとモデルオブジェクトとの距離を求める距離演算部と、
前記モデルオブジェクトを含む複数のオブジェクトの描画処理を行う描画処理部とを含み、
前記描画処理部は、
前記モデルオブジェクトに対する自己影又は他のオブジェクトの影である影画像の濃さを、前記仮想カメラと前記モデルオブジェクトとの距離が近づくほど薄くする処理を行うことを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【０００２】
従来より、仮想的な３次元空間であるオブジェクト空間内において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。格闘ゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、ゲームコントローラ（操作部）を用いて自キャラクタ（モデルオブジェクト）を操作し、相手プレーヤやコンピュータが操作する敵キャラクタと対戦することでゲームを楽しむ。
【０００３】
さて、このような画像生成システムでは、キャラクタなどのモデルオブジェクトのよりリアルな影を生成することが望まれる。このような影生成手法としては、例えば特許文献１に開示されるようなシャドウボリューム（モディファイアボリューム）処理などのシャドウイング処理が知られている。
【０００４】
しかしながら、これまでの影生成手法では、モデルオブジェクトに落ちる自己影（セルフシャドウ）や他のオブジェクトの影の輪郭等に発生するジャギー等が目立ってしまい、生成される影画像の品質を今ひとつ高めることができないという課題があった。
【特許文献１】特開２００３−２４２５２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の幾つかの態様によれば、よりリアルで高品質な影画像を生成できるプログラム、情報記憶媒体及び画像生成システムを提供できる。
【課題を解決するための手段】
【０００６】
本発明は、オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、前記仮想カメラを制御する仮想カメラ制御部と、前記仮想カメラとモデルオブジェクトとの距離を求める距離演算部と、前記モデルオブジェクトを含む複数のオブジェクトの描画処理を行う描画処理部とを含み、前記描画処理部は、前記モデルオブジェクトに対する自己影又は他のオブジェクトの影である影画像の濃さを、前記仮想カメラと前記モデルオブジェクトとの距離が近づくほど薄くする処理を行う画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【０００７】
本発明によれば、仮想カメラとモデルオブジェクトとの距離が求められる。そして、モデルオブジェクトに対する自己影又は他のオブジェクトの影の画像である影画像が生成され、この影画像の濃さが、仮想カメラとモデルオブジェクトとの距離が近づくほど薄くなるように処理が行われる。このようにすれば、例えば仮想カメラがモデルオブジェクトに近づいた場合に、影画像に発生するジャギー等が目立たなくなり、よりリアルで高品質な影画像の生成が可能になる。
【０００８】
また本発明では、前記描画処理部は、シャドウマップ処理により、前記モデルオブジェクトに対する前記影画像を生成してもよい。
【０００９】
このようにシャドウマップ処理により影画像を生成した場合には、影画像のジャギー等が目立ってしまう場合があるが、仮想カメラとの距離に応じて影画像を薄くすることで、このような事態を防止できる。
【００１０】
また本発明では、前記描画処理部は、分散シャドウマップ処理における分散調整パラメータの値を、前記仮想カメラと前記モデルオブジェクトとの距離に基づき設定して、前記分散シャドウマップ処理により、前記モデルオブジェクトに対する前記影画像を生成してもよい。
【００１１】
このようにすれば、仮想カメラとの距離に応じて影画像の濃さを制御する処理を、分散調整パラメータを有効活用した簡素な処理で実現できるようになる。
【００１２】
また本発明では、前記描画処理部は、前記分散シャドウマップ処理において前記影画像の濃さを求める演算に用いる分散が、前記仮想カメラと前記モデルオブジェクトとの距離が近づくほど大きくなるように、前記分散調整パラメータの値を設定してもよい。
【００１３】
このようにすれば、分散シャドウマップ処理における分散が、仮想カメラの距離が近づくほど大きくなるように設定されるため、仮想カメラが近づいた場合の影画像のジャギー等が目立ってしまう事態を防止できる。
【００１４】
また本発明では、前記描画処理部は、前記仮想カメラと前記モデルオブジェクトとの距離Ｌが第１の距離Ｌ１よりも近い場合には、前記影画像の濃さを距離Ｌが近づくほど薄くし、距離Ｌが第２の距離Ｌ２よりも遠い場合には、前記影画像の濃さを、距離Ｌが遠ざかるほど濃くし、距離Ｌが、Ｌ１≦Ｌ≦Ｌ２である場合には、前記影画像の濃さを、前記仮想カメラと前記モデルオブジェクトとの距離に依らずに一定にしてもよい。
【００１５】
このようにすれば、Ｌ１≦Ｌ≦Ｌ２の範囲では、仮想カメラとの距離Ｌが変動した場合にも、影画像の濃さは変化しないようになるため、影画像のチラツキ等を低減できる。
【００１６】
また本発明では、前記仮想カメラ制御部は、第１のモデルオブジェクトと第２のモデルオブジェクトとの距離が離れる離隔イベントが発生した場合に、前記仮想カメラを前記第１、第２のモデルオブジェクトから遠ざける制御を行い、前記描画処理部は、前記離隔イベントが発生して前記仮想カメラと前記第１、第２のモデルオブジェクトとの距離が離れた場合に、前記影画像の濃さを濃くする処理を行ってもよい。
【００１７】
このようにすれば、第１、第２のモデルオブジェクトの離隔イベントが発生して仮想カメラとの距離が離れた場合に、影画像の濃さが濃くなる制御が行われるようになるため、第１、第２のモデルオブジェクトの立体感や存在感が失われてしまう事態を防止できる。
【００１８】
また本発明では、前記仮想カメラ制御部は、前記モデルオブジェクトへのズームイベントが発生した場合に、前記仮想カメラを前記モデルオブジェクトに近づける制御を行い、前記描画処理部は、前記ズームイベントが発生して前記仮想カメラと前記モデルオブジェクトとの距離が近づいた場合に、前記影画像の濃さを薄くする処理を行ってもよい。
【００１９】
このようにすれば、仮想カメラのズームイベントが発生して仮想カメラとモデルオブジェクトとの距離が近づいた場合に、影画像の濃さが薄くなる制御が行わるようになるため、影画像のジャギー等が目立ってしまう事態を防止できる。
【００２０】
また本発明では、前記仮想カメラ制御部は、前記仮想カメラの視野範囲内のモデルオブジェクト数が増加するモデルオブジェクト数増加イベントが発生した場合に、前記仮想カメラを複数のモデルオブジェクトから遠ざける制御を行い、前記描画処理部は、前記モデルオブジェクト数増加イベントが発生して前記仮想カメラと前記モデルオブジェクトとの距離が離れた場合に、前記影画像の濃さを濃くする処理を行ってもよい。
【００２１】
このようにすれば、オブジェクト数増加イベントが発生して仮想カメラとモデルオブジェクトとの距離が離れた場合に、影画像の濃さが濃くなる制御が行われるようになるため、モデルオブジェクトの立体感や存在感が失われてしまう事態を防止できる。
【００２２】
また本発明では、前記仮想カメラ制御部は、前記モデルオブジェクトの移動に対して前記仮想カメラを慣性を持たせて追従させる制御を行い、前記描画処理部は、前記モデルオブジェクトへの前記仮想カメラの追従が遅れて前記仮想カメラと前記モデルオブジェクトとの距離が離れた場合に、前記影画像の濃さを濃くする処理を行ってもよい。
【００２３】
このようにすれば、仮想カメラの慣性追従制御により、仮想カメラの追従が遅れて仮想カメラとの距離が離れた場合に、影画像の濃さが薄くなる制御が行われるようになるため、影画像のジャギー等が目立ってしまう事態を防止できる。
【発明を実施するための最良の形態】
【００２４】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２５】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）のブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００２６】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、ステアリング、アクセル、ブレーキ、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【００２７】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。この記憶部１７０は、電源を切るとデータが消えてしまう揮発性のメモリにより構成できるが、補助記憶装置１９４よりも高速な記憶装置になっている。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部１７０に保持される。
【００２８】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、或いはメモリ（ＲＯＭ等）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００２９】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００３０】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される大容量の記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードや、ＨＤＤなどにより実現できる。この補助記憶装置１９４は脱着自在になっているが、内蔵されるものであってもよい。この補助記憶装置１９４は、ゲームの途中結果などのセーブデータや、プレーヤ（ユーザ）の個人的な画像データや音楽データなどを保存するために使用される。
【００３１】
通信部１９６は、有線や無線のネットワークを介して外部（例えば他の画像生成システム、サーバ、ホスト装置）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００３２】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、サーバ（ホスト装置）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（あるいは記憶部１７０、補助記憶装置１９４）に配信してもよい。このようなサーバ（ホスト装置）による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００３３】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部１００は記憶部１７０をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００３４】
処理部１００は、ゲーム演算部１０２、オブジェクト空間設定部１０４、移動体演算部１０６、仮想カメラ制御部１０８、距離演算部１０９、描画処理部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００３５】
ゲーム演算部１０２はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００３６】
オブジェクト空間設定部１０４は、モデルオブジェクト（人、ロボット、車、戦闘機、ミサイル、弾等の移動体）、マップ（地形）、建物、コース（道路）、樹木、壁などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。具体的には、記憶部１７０のオブジェクトデータ記憶部１７２には、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。そしてこのオブジェクトデータは、移動体演算部１０６の移動体演算処理等により順次更新される。
【００３７】
移動体演算部（移動体制御部）１０６は、移動体であるモデルオブジェクト等を移動させるための演算を行う。またモデルオブジェクトを動作させるための演算も行う。即ち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、モデルオブジェクト（移動体オブジェクト）をオブジェクト空間内で移動させたり、モデルオブジェクトを動作（モーション、アニメーション）させる処理を行う。具体的には、モデルオブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（パーツオブジェクトの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００３８】
より具体的には、移動体演算部１０６は、モーションデータ記憶部１７３に記憶されるモーションデータに基づいて、モデルオブジェクトのモーションを再生する処理を行う。即ち、モデルオブジェクト（スケルトン）を構成する各パーツオブジェクト（スケルトンを構成する骨）の位置又は回転角度（方向）等を含むモーションデータを、モーションデータ記憶部１７３から読み出す。そして、モデルオブジェクトの各パーツオブジェクト（骨）を動かすことで（スケルトン形状を変形させることで）、モデルオブジェクトのモーションを再生する。
【００３９】
仮想カメラ制御部１０８は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００４０】
例えば仮想カメラによりキャラクタ、車、戦闘機などのモデルオブジェクトを後方から撮影する場合には、モデルオブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動体演算部１０６で得られたモデルオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００４１】
距離演算部１０９は仮想カメラとモデルオブジェクトの間の距離（距離情報）を求めるための演算処理を行う。例えば仮想カメラ（視点）とモデルオブジェクトの代表点（例えば腰や胸に設定された代表点）と間の距離を求める。この距離は、仮想カメラとモデルオブジェクト（代表点）との間の直線距離であってもよいし、この直線距離と等価なパラメータであってもよい。例えば仮想カメラとモデルオブジェクトとの間の奥行き方向の距離であってもよい。
【００４２】
描画処理部１２０（画像生成部）は、モデルオブジェクトを含む複数のオブジェクトの描画処理を行う。例えば処理部１００で行われる種々の処理（ゲーム処理、シミュレーション処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まずモデルオブジェクトの各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が生成され、これらのデータに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。
【００４３】
頂点処理（頂点シェーダ処理）では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換（ワールド座標変換、
カメラ座標変換）、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。
【００４４】
ピクセル処理（ピクセルシェーダ処理）では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャ記憶部１７４に記憶されるテクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたモデルの描画色を描画バッファ１７６（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット、フレームバッファ）に出力（描画）する。即ち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００４５】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００４６】
描画処理部１２０は、照明モデル等に基づくライティング処理（シェーディング処理）を行う。具体的にはこのライティング処理は、光源情報（光源ベクトル、光源色、明るさ、光源タイプ等）、仮想カメラ（視点）の視線ベクトル、オブジェクト（半透明オブジェクト）の法線ベクトル、オブジェクトのマテリアル（色、材質）などを用いて行われる。なお照明モデルとしては、アンビエント光とディフューズ光だけを考慮したランバートの拡散照明モデルや、アンビエント光、ディフューズ光に加えてスペキュラ光も考慮するフォンの照明モデルやブリン・フォンの照明モデルなどがある。
【００４７】
また描画処理部１２０は、オブジェクト（ポリゴン）にテクスチャをマッピングする処理を行うことができる。ここでテクスチャマッピング処理は、テクスチャ記憶部１７４に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングする処理である。具体的には、オブジェクト（プリミティブ面）の頂点やピクセルに設定（付与）されるテクスチャ座標等を用いてテクスチャ記憶部１７４からテクスチャ（色、α値などの表面プロパティ）を読み出す。そして２次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間（広義にはテクセル補間）などを行う。
【００４８】
また描画処理部１２０は隠面消去処理を行うことができる。例えば、各ピクセルのＺ値（奥行き情報）が格納されるＺバッファ１７７（奥行きバッファ）を用いて、Ｚバッファ法（奥行き比較法、Ｚテスト）により隠面消去処理を行う。即ちオブジェクトのプリミティブ面の各ピクセルを描画する際に、Ｚバッファ１７７に格納されるＺ値を参照する。そして参照されたＺバッファ１７７のＺ値と、描画対象ピクセルのＺ値とを比較し、描画対象ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値である場合には、そのピクセルの描画処理を行うと共にＺバッファ１７７のＺ値を新たなＺ値に更新する。
【００４９】
また描画処理部１２０は影画像を生成するためのシャドウイング処理を行う。具体的には本実施形態では、描画処理部１２０は、モデルオブジェクトに対する自己影（セルフシャドウ）又は他のオブジェクトの影である影画像の濃さを、仮想カメラとモデルオブジェクトとの距離に応じて制御するシャドウイング処理を行う。例えばモデルオブジェクトに対する影画像の濃さを、仮想カメラとモデルオブジェクトとの距離が近づくほど薄くする。別の言い方をすれば、モデルオブジェクトに対する影画像の濃さを、仮想カメラとモデルオブジェクトとの距離が遠くなるほど濃くする。
【００５０】
例えば本実施形態では描画処理部１２０は、シャドウマップ（Shadow map）処理により、モデルオブジェクトに対する影画像（自己影、他のオブジェクトの影）を生成する。例えば影の投影方向でのオブジェクトのＺ値をレンダリングすることでシャドウマップテクスチャを生成する。そして、このシャドウマップテクスチャとオブジェクトのテクスチャを用いてオブジェクトの描画処理を行うことで影画像を生成する。
【００５１】
具体的には描画処理部１２０は、例えば分散シャドウマップ（Variance Shadow map）処理により影画像を生成する。この場合には、分散シャドウマップ処理における分散調整パラメータの値（分散のバイアス値）を、仮想カメラとモデルオブジェクトとの距離に基づき設定して、分散シャドウマップ処理により、モデルオブジェクトに対する影画像を生成する。例えば分散シャドウマップ処理において影画像の濃さを求める演算に用いる分散が、仮想カメラとモデルオブジェクトとの距離が近づくほど大きくなるように、分散調整パラメータの値を設定する。なおシャドウマップ処理としては、分散シャドウマップ以外にも、コンベンショナルなシャドウマップ処理やライトスペースシャドウマップ処理やオパシティシャドウマップ処理などの種々の処理を採用できる。或いは、シャドウマップ処理以外にも、ボリュームシャドウ（ステンシルシャドウ）処理や投影テクスチャシャドウ処理などのシャドウイング処理を採用してもよい。
【００５２】
仮想カメラ制御部１０８は、第１のモデルオブジェクト（第１のキャラクタ）と第２のモデルオブジェクト（第２のキャラクタ）との距離が離れる離隔イベントが発生した場合に、仮想カメラを第１、第２のモデルオブジェクトから遠ざける制御を行う。このような離隔イベントが発生すると、描画処理部１２０は、分散調整パラメータの値の設定等を行って、影画像の濃さを濃くする処理を行う。
【００５３】
また仮想カメラ制御部１０８は、モデルオブジェクトへのズームイベントが発生した場合に、仮想カメラをモデルオブジェクトに近づける制御を行う。このようなズームイベントが発生すると、描画処理部１２０は、影画像の濃さを薄くする処理を行う。
【００５４】
また仮想カメラ制御部１０８は、仮想カメラの視野範囲内のモデルオブジェクト数が増加するモデルオブジェクト数増加イベントが発生した場合に、仮想カメラを複数のモデルオブジェクトから遠ざける制御を行う。このようなモデルオブジェクト数増加イベントが発生すると、描画処理部１２０は、影画像の濃さを濃くする処理を行う。
【００５５】
また仮想カメラ制御部１０８は、モデルオブジェクトの移動に対して仮想カメラを慣性を持たせて追従させる制御を行う。そして仮想カメラの追従が遅れて仮想カメラとモデルオブジェクトとの距離が離れると、描画処理部１２０は、影画像の濃さを濃くする処理を行う。
【００５６】
２．本実施形態の手法
２．１  距離に応じた影の濃さの制御
さて、キャラクタなどのモデルオブジェクトの、よりリアルな画像表現を実現するためには、モデルオブジェクトに落ちる自己影や他のオブジェクトの影の画像についてもリアルに表現できることが望ましい。このようなリアルな影画像の生成のためには、例えば後述するシャドウマップ処理やボリュームシャドウ処理などを採用できる。
【００５７】
ところで、格闘技ゲームなどではモデルオブジェクトである第１、第２のキャラクタが対峙して対戦を行う。そして通常時には、これらの第１、第２のキャラクタが視野範囲に入る視点位置に仮想カメラが設定されて、視界画像が生成される。
【００５８】
この場合に、このように距離が比較的離れた視点位置での視界画像では、モデルオブジェクトのサーフェス画像がそれほど高品質な画像でなくても問題はない。ところが、一方のキャラクタが勝利して、そのキャラクタをズームアップするために仮想カメラを近づけるカメラ制御が行われた場合等には、キャラクタのサーフェス画像が低品質であると、目立ってしまい、プレーヤの仮想現実感が低下する。例えばキャラクタを構成するポリゴン数が少ない場合には、ズームアップ時にポリゴンの境界等が目立ってしまう。このような問題を解決するためには、例えばズームアップ時にポリゴンの輝度を全体的に高くするなどの工夫を施して、ポリゴンの境界が目立たないようにする。
【００５９】
そして、近年、画像生成システムのハードウェア性能の向上に伴い、キャラクタのポリゴン数を増加させることが容易になり、上記のような工夫を施さなくても、ポリゴンの境界のジャギー等はそれほど目立たなくなってきた。ところが、その反面、これまではそれほど目立たなかったキャラクタの自己影等の影画像の品質が、キャラクタのズームアップ時に目立ってしまう問題が生じることが判明した。
【００６０】
このような問題を解決するために本実施形態では、仮想カメラとの距離に応じてモデルオブジェクトの影の濃さを制御する手法を採用している。具体的にはモデルオブジェクトに対する自己影又は他のオブジェクト（例えば武器、防具、他のキャラクタ）の影である影画像の濃さを、仮想カメラとモデルオブジェクトとの距離が近づくほど薄くする。
【００６１】
例えば図２〜図４に本実施形態により生成された画像（ゲーム画像）の例を示す。図２は仮想カメラとモデルオブジェクトＭＯＢとの距離が遠い場合の画像であり、図３は距離が中ぐらいの場合の画像であり、図４は距離が近い場合の画像である。
【００６２】
図２の場合には、仮想カメラとの距離が遠いため、Ａ１に示すように、モデルオブジェクトＭＯＢに落ちる影（手などの自己影）の画像は濃くなっている。
【００６３】
一方、図３の場合には、図２よりも仮想カメラがモデルオブジェクトＭＯＢに近づいているため、Ａ２に示すように、モデルオブジェクトＭＯＢの影画像は図２に比べて薄くなっている。そして図４のように仮想カメラが更に近づくと、Ａ３に示すように影画像は更に薄くなって、ぼやけるようになる。
【００６４】
例えば仮想カメラが遠い距離にある場合に、モデルオブジェクトＭＯＢに落ちる影が薄いと、モデルオブジェクトＭＯＢが背景に溶け込んでしまい、その立体感や存在感が失われてしまう。
【００６５】
この点、図２では、仮想カメラとの距離が遠い場合に、Ａ１に示すようにモデルオブジェクトＭＯＢに落ちる影が濃くなるように制御されている。従って、モデルオブジェクトＭＯＢが背景に溶け込むことがなく、立体感が出るため、モデルオブジェクトＭＯＢの存在感が失われてしまう事態を防止できる。
【００６６】
また、仮想カメラが近づいた場合に、モデルオブジェクトＭＯＢに落ちる影が濃いままであると、影の輪郭等でのジャギー等が目立ってしまい、ズームアップ時等におけるリアルな画像を生成できないという問題がある。特に後に詳述するシャドウマップ処理では、シャドウマップのＺ値とピクセルのＺ値との大小判定により影部分か否かを判定しているため、影画像の輪郭でのジャギー等が大きい。また分散シャドウマップ処理を用いれば、このようなジャギー等をある程度目立たなくすることが可能になるが、それにも限界がある。
【００６７】
この点、図４では、仮想カメラとの距離が近い場合に、Ａ３に示すようにモデルオブジェクトＭＯＢに落ちる影が薄くなるように制御されている。従って、影画像にジャギー等が発生したとしても、影が全体的に薄くなることでジャギー等が目立たなくなる。従って、モデルオブジェクトＭＯＢへの仮想カメラのズームアップ時等においても、高品質なサーフェス画像を提供でき、プレーヤの仮想現実感を向上できる。
【００６８】
なお図５（Ａ）に、仮想カメラとモデルオブジェクトの間の距離Ｌと、モデルオブジェクトに落ちる影画像の濃さの関係の例を示す。図５（Ａ）では、仮想カメラとモデルオブジェクトの間の距離Ｌが小さくなるにつれて、影画像の濃さが薄くなっている（減衰度が高くなっている）。別の言い方をすれば、距離Ｌが大きくなるにつれて影画像が濃くなってる。なお図５（Ａ）では、距離Ｌと影画像の濃さは１次関数の関係になっているが、本実施形態はこれに限定されず、例えばｎ次関数（ｎ＞２）や指数関数や対数関数などの種々の関係であってもよい。
【００６９】
また図５（Ｂ）のＢ１に示すように、距離Ｌの変化に対して影画像の濃さが変化しない不感帯を設けるようにしてもよい。具体的には図５（Ｂ）のＢ２に示すように、仮想カメラとモデルオブジェクトとの距離Ｌが第１の距離Ｌ１よりも近い場合には、影画像の濃さを、距離Ｌが近づくほど薄くする。またＢ３に示すように、距離Ｌが第２の距離Ｌ２よりも遠い場合には、影画像の濃さを、距離Ｌが遠ざかるほど濃くする。一方、Ｂ１に示すように、距離Ｌが、Ｌ１≦Ｌ≦Ｌ２である場合には、影画像の濃さを、距離Ｌに依らずに一定にする。
【００７０】
例えば格闘技ゲームを例にとれば、戦闘時における仮想カメラと第１、第２のキャラクタとの距離Ｌが、図５（Ｂ）のＢ１に示す範囲内に入るようにする。このようにすれば、第１、第２のキャラクタ間の距離が変化して、それに伴い仮想カメラの距離Ｌが変化した場合にも、影画像の濃さは変化しないようになる。従って、第１、第２のキャラクタの戦闘時に、影画像の濃さが頻繁に変化して、プレーヤにとって見にくい画像になってしまう事態を効果的に防止できる。
【００７１】
２．２  シャドウマップ処理
さて、キャラクタ等のモデルオブジェクトの影画像は、例えばシャドウマップ処理により生成できる。次に、このシャドウマップ処理の詳細について図６を用いて説明する。
【００７２】
シャドウマップ処理では、まず、影生成用の光源ＬＳから見た、モデルオブジェクトＭＯＢや背景オブジェクトＢＯＢなどのオブジェクトのＺ値（深度値、奥行き値）をレンダリングすることで、シャドウマップテクスチャＳＤＴＥＸを生成する。即ち光源ＬＳの位置に仮想カメラＶＣを設定してオブジェクトのＺ値のレンダリングを行う。例えば図６では、モデルオブジェクトＭＯＢの点Ｐ１’のＺ値Ｚ１や、背景オブジェクトＢＯＢの点Ｐ２のＺ値Ｚ２等がレンダリングされて、シャドウマップテクスチャＳＤＴＥＸが生成されている。
【００７３】
次に、スクリーンＳＣに映る視界画像生成用の視点位置に、仮想カメラＶＣを設定して、モデルオブジェクトＭＯＢや背景オブジェクトＢＯＢなどのオブジェクトのレンダリングを行う。この際に、オブジェクトの各ピクセルのＺ値と、シャドウマップテクスチャＳＤＴＥＸの対応する各テクセルのＺ値とを比較しながら、オブジェクトのレンダリングを行う。
【００７４】
例えば図６において、仮想カメラＶＣから見た点Ｐ１のＺ値（距離）は、シャドウマップテクスチャＳＤＴＥＸの対応する点Ｐ１’のＺ値よりも大きい。従って、点Ｐ１は点Ｐ１’に隠れて影になる部分であると判定され、点Ｐ１に対応するピクセルには影の色（例えば黒）が描かれる。
【００７５】
一方、点Ｐ２については、仮想カメラＶＣから見たＺ値と、シャドウマップテクスチャＳＤＴＥＸにおけるＺ値が例えば等しくなる。従って、点Ｐ２は影の部分ではないと判断されて、影の色は描画されない。
【００７６】
このようにすることで、背景に対して落ちるモデルオブジェクトＭＯＢの影やモデルオブジェクトＭＯＢの自己影等を生成できる。
【００７７】
さて、コンベンショナルなシャドウマップ処理では、影部分か否かの判定処理を０か１かの２値判定により行っている。このため、影の輪郭（影部分と影以外の部分との境界）等においてジャギー等が目立ってしまい、生成される影画像の品質を今ひとつ高めることができないという課題がある。
【００７８】
このような課題を解決するためには、分散シャドウマップ（Variance Shadow Map）と呼ばれる手法を採用することが望ましい。この分散シャドウマップでは、確率論であるチェビシェフの不等式の考えを利用して、光が当たっている確率（最大確率）を算出する。即ち、分散シャドウマップ処理では、影か否かの判定の結果が、０〜１の範囲の実数である確率（最大確率）で表されるため、この確率の値をそのまま影の濃さ（影の色）として設定できる。従って、影の判定処理を０（影部分）か１（光が当たっている部分）かの２値で行っているコンベンショナルなシャドウマップ処理に比べて、影画像のジャギー等を目立たなくすることができ、滑らかな影の輪郭を表現できる。
【００７９】
例えば、確率論の基本的な定理であるチェビシェフの不等式は下式（１）のように表される。
【００８０】
【数１】
2010033296.tif 000003
【００８１】
ここでｘは確率分布における確率変数であり、μは平均であり、σは分散であり、ｔはｔ＞０となる任意の実数である。例えばｔ＝２とすると、確率分布において平均μから２σ以上離れた値は全体の１／４を超えることはないということが導き出される。即ちｘ＞μ＋２σ、ｘ＜μ−２σとなる確率は１／４を超えることはないことが導き出される。
【００８２】
分散シャドウマップ処理は、このチェビシェフの不等式の考えを利用するものであり、下式（２）（３）のモーメントＭ１、Ｍ２が求められる。
【００８３】
【数２】
2010033296.tif 000004
【００８４】
これらの式（２）（３）より、下式（４）（５）のように表される平均μ、分散（variance)σ２が求められる。
【００８５】
【数３】
2010033296.tif 000005
【００８６】
そしてチェビシェフの不等式の考えにより、ｔ＞μの条件の下で、下式（６）が成立する。
【００８７】
【数４】
2010033296.tif 000006
【００８８】
ここで、ｔはピクセルのＺ値に相当し、ｘは、ぼかし処理が施されたシャドウマップテクスチャのＺ値に相当する。この確率ｐｍａｘ（ｘ）から影の濃さ（色）を決めることになる。
【００８９】
そして本実施形態では上式（６）を変形した下式（７）を使用する。
【００９０】
【数５】
2010033296.tif 000007
【００９１】
ここで、Σは、σ２＋εを０〜１．０の範囲にクランプした値であり、調整された分散値である。
【００９２】
またεは分散調整パラメータであり、分散σ２に対してバイアス値を加算するためのパラメータである。この分散調整パラメータεの値を大きくすることで、分散シャドウマップにおける分散の度合いを強制的に大きくすることが可能になる。なお分散調整パラメータをε＝０に設定すると、本来は影とならない領域にノイズピクセルが発生してしまうが、ε＞０に設定することで、このノイズピクセルを低減できる。
【００９３】
例えばコンベンショナルなシャドウマップ処理ではＺ値だけをレンダリングするが、分散シャドウマップ処理では、Ｚ値をレンダリングすると共に、Ｚ値の二乗をレンダリングして、２チャネルのバッファにシャドウマップテクスチャを生成する。そして、このシャドウマップテクスチャに対して、ブラーなどのフィルタ処理（ガウシアン・フィルタ等）を施す。
【００９４】
次に、シャドウマップテクスチャにより上式（２）（３）のモーメントＭ１、Ｍ２を求め、上式（４）（５）の平均（期待値）μ、分散σ２を求める。また分散σ２と分散調整パラメータεに基づいて、調整された分散値であるΣを求める。
【００９５】
そして、ピクセル（フラグメント）のＺ値（デプス）であるｔが、ｔ＜μである場合には、影以外の部分であると判断する。一方、ｔ≧μである場合には、上式（７）の確率ｐｍａｘ（ｔ）により、光の減衰率を求めて、影の濃さ（色）を決定する。なお確率ｐｍａｘ（ｔ）そのものではなく、ｐｍａｘ（ｔ）のべき乗（例えば４乗）を用いてもよい。
【００９６】
例えばピクセルのＺ値がｔ＝０．５０であり、μ＝０．３０であり、分散調整パラメータがε＝０．００に設定され、Σ＝０．０８と計算されたとする。
【００９７】
すると、上式（７）により、ｐｍａｘ（ｔ）＝０．０８／{０．０８＋（０．５０−０．３０）２}＝０．６６６６６６６・・・となる。
【００９８】
一方、分散調整パラメータをε＝０．０１に設定し、Σ＝０．０９になると、ｐｍａｘ（ｔ）＝０．０９／{０．０９＋（０．５０−０．３０）２}＝０．６９２３０７６・・・となる。
【００９９】
また分散調整パラメータをε＝０．０５に設定し、Σ＝０．１３になると、ｐｍａｘ（ｔ）＝０．１３／{０．１３＋（０．５０−０．３０）２}＝０．７６４７０５８・・・となる。
【０１００】
このように、分散調整パラメータεの値を大きくすることで、光の減衰率が１．０（比減衰）に近づくようになる。
【０１０１】
分散調整パラメータεの値が小さいと、影の生え際等におけるノイズが目立ってしまう。そして分散調整パラメータεを大きくすると、このノイズが低減されて滑らかになる。また、分散調整パラメータεを更に大きくすると、今度は、影の生え際の部分において影が薄くなってしまう。このため、このようなノイズや、影の生え際の部分の影の薄さ等が目立たない範囲で、分散調整パラメータεを調整することが望ましい。
【０１０２】
図７に仮想カメラとモデルオブジェクトの間の距離Ｌに基づき分散調整パラメータεを求めるためのテーブルの例を示す。図７のテーブルでは、例えば距離Ｌ＝１ｍ、２ｍ、４ｍ、８ｍ、１６ｍ、３２ｍに対して、各々、分散調整パラメータεの値として、ｅ１、ｅ２、ｅ３、ｅ４、ｅ５、ｅ６が割り当てられている。ここでｅ１＞ｅ２＞ｅ３＞ｅ４＞ｅ５＞ｅ６の関係が成り立っており、分散調整パラメータεの値は、距離Ｌが近づくにつれて大きくなっている。なお図７では距離Ｌを指数部ｓと仮数部ｋ（０≦ｋ≦１．０）に分解する。そして距離Ｌの指数部ｓとｓ＋１を図７のテーブルに入力して、ｓ、ｓ＋１に対応する第１、第２のパラメータ値（例えばｅ２、ｅ１）を取得する。そして、これらの第１、第２のパラメータ値を、距離Ｌの仮数部ｋを用いて補間する。このような補間処理を採用することで、図７のテーブルをコンパクト化することが可能になる。
【０１０３】
図７のように分散調整パラメータεの値を設定することで、図２〜図４に示すように、仮想カメラとの距離Ｌが近づくにつれて、影画像（例えば生え際での画像）を薄くする制御が可能になる。これにより、影画像のジャギー等が目立ってしまう事態を効果的に防止できる。
【０１０４】
例えば図８に、図７のような分散調整パラメータεの値の設定を行わないで、仮想カメラをモデルオブジェクトＭＯＢに近づけて生成した画像の例を示す。図８では、仮想カメラを近づけた場合に影の濃さが薄くなるように制御されていないため、影画像のジャギーやノイズが目立ってしまう。本実施形態にでは、分散調整パラメータεを例えば図７のように設定することで、このような問題の解決に成功している。
【０１０５】
２．３  仮想カメラの制御に応じた影の濃さの制御手法
次に、仮想カメラの制御に応じた影の濃さの制御手法の種々の例を説明する。
【０１０６】
例えば図９は、キャラクタである第１、第２のモデルオブジェクトＭＯＢ１、ＭＯＢ２が対峙して戦闘を行っている場面の例である。
【０１０７】
図９のような場面において、モデルオブジェクトＭＯＢ１、ＭＯＢ２間の距離の変化に応じて、仮想カメラとＭＯＢ１、ＭＯＢ２との間の距離Ｌが変化した場合に、ＭＯＢ１、ＭＯＢ２の影画像の濃さが頻繁に変化してしまうのは望ましくない。
【０１０８】
そこで図５（Ｂ）のＢ１に示すような不感帯を設けて、Ｌ１≦Ｌ≦Ｌ２の場合には、影画像の濃さを一定にする。このようにすれば、距離Ｌの微妙な変化により影画像のチラツキ等が発生してしまう事態を防止できる。
【０１０９】
図１０は、モデルオブジェクトＭＯＢ１、ＭＯＢ２との距離が離れる離隔イベントが発生した場面の例である。具体的には例えばモデルオブジェクトＭＯＢ１が、戦闘の回避のために逃げており、これによりＭＯＢ１、ＭＯＢ２間の距離が遠くなっている。
【０１１０】
このような離隔イベントが発生した場合には、例えばモデルオブジェクトＭＯＢ１、ＭＯＢ２の両方が視界範囲内に入るように、仮想カメラＶＣをＭＯＢ１、ＭＯＢ２から遠ざけるカメラ制御が行われている。そして、これにより仮想カメラＶＣとＭＯＢ１、ＭＯＢ２との距離が離れると、影画像の濃さを濃くする処理が行われる。
【０１１１】
このようにすれば、図２で説明したように、仮想カメラとの距離が離れた場合に、モデルオブジェクトＭＯＢ１、ＭＯＢ２が背景に溶け込んでしまい、その存在感が失われてしまう事態を防止できる。
【０１１２】
図１１では、モデルオブジェクトＭＯＢ１へのズームイベントが発生し、仮想カメラＶＣをＭＯＢに近づける制御が行われている。具体的にはモデルオブジェクトＭＯＢ１がＭＯＢ２に対して勝利し、その勝利ポーズをプレーヤに見せるために、仮想カメラＶＣがＭＯＢ１に近づいている。
【０１１３】
このようなズームイベントが発生して仮想カメラＶＣとモデルオブジェクトＭＯＢ１との距離が近づいた場合には、モデルオブジェクトＭＯＢ１に落ちる影画像の濃さを薄くする処理が行われる。
【０１１４】
このようにすれば、図４で説明したように、仮想カメラとの距離が近づいた場合に、影画像のジャギー等が目立ってしまう事態を低減できる。従って、ズームアップ時の画像の品質を向上でき、プレーヤの仮想現実感を向上できる。
【０１１５】
図１２（Ａ）、図１２（Ｂ）では、仮想カメラＶＣの視野範囲内のモデルオブジェクト数が増加するモデルオブジェクト数増加イベントが発生し、仮想カメラＶＣを複数のモデルオブジェクトから遠ざける制御が行われている。即ち図１２（Ａ）では、二人のモデルオブジェクトＭＯＢ１、ＭＯＢ２が存在していたが、図１２（Ｂ）では、その数が増加し、七人のモデルオブジェクトＭＯＢ１〜ＭＯＢ７が存在している。従って、この場合には、これらのモデルオブジェクトＭＯＢ１〜ＭＯＢ７が視野範囲内に入るように、ＭＯＢ１〜ＭＯＢ７から仮想カメラＶＣが遠ざかるようなカメラ制御が行われる。
【０１１６】
このようなモデルオブジェクト数増加イベントが発生して仮想カメラとモデルオブジェクトＭＯＢ１〜ＭＯＢ７との距離が離れた場合には、ＭＯＢ１〜ＭＯＢ７に落ちる影画像の濃さを濃くする処理が行われる。
【０１１７】
このようにすれば、図２で説明したように、仮想カメラとの距離が離れた場合に、モデルオブジェクトＭＯＢ１〜ＭＯＢ７が背景に溶け込んでしまい、その存在感が失われてしまう事態を防止できる。
【０１１８】
図１３（Ａ）ではモデルオブジェクトＭＯＢの移動に対して仮想カメラＶＣを慣性を持たせて追従させる制御が行われている。即ちモデルオブジェクトＭＯＢが移動した場合に、仮想カメラＶＣが時間的に少し遅れながらＭＯＢに追従するカメラ制御が行われている。このようなカメラ制御を行うことで、より自然な視界画像を生成できる。
【０１１９】
そして図１３（Ｂ）ではモデルオブジェクトＭＯＢへの仮想カメラＶＣの追従が遅れて、ＶＣとＭＯＢとの距離が離れており、この場合には、影画像の濃さを濃くする処理が行われる。
【０１２０】
このようにすれば、図４で説明したように、仮想カメラとの距離が近づいた場合に、影画像のジャギー等が目立ってしまう事態を低減でき、ズームアップ時の画像の品質を向上できるため、プレーヤの仮想現実感を向上できる。
【０１２１】
以上のように、仮想カメラの各種制御に応じて影の濃さを制御する手法を採用すれば、仮想カメラの制御に応じた適正な影画像の生成が可能になる。即ち仮想カメラの制御によりモデルオブジェクトに近づいた場合に、影画像にジャギー等が生じるのを防止できると共に、仮想カメラの制御によりモデルオブジェクトから遠ざかった場合に、モデルオブジェクトの存在感や立体感が失われてしまう事態を効果的に防止できる。
【０１２２】
２．４  詳細な処理例
次に本実施形態の詳細な処理例を図１４のフローチャートを用いて説明する。
【０１２３】
まず仮想カメラとモデルオブジェクトとの距離Ｌを求める（ステップＳ１）。具体的には仮想カメラとのモデルオブジェクトの代表点との距離を求める。この代表点は、例えば例えばモデルオブジェクトの腰付近や胸付近に設定できる。また、この距離は、仮想カメラとモデルオブジェクトとの直線距離であってもよいし、奥行き距離等であってもよい。
【０１２４】
次に、影の投影方向（影生成用の光源の照明方向）での各オブジェクトのＺ値とＺ値の二乗をレンダリングすることでシャドウマップテクスチャを生成する（ステップＳ２）。なお、コンベンショナルなシャドウマップ処理の場合には、Ｚ値だけのレンダリングを行って、シャドウマップテクスチャを生成すればよい。
【０１２５】
次に、描画バッファ、Ｚバッファ、ステンシルバッファ等をクリアする（ステップＳ３）。そして、図７で説明したように、ステップＳ１で求められた距離Ｌに基づいて、分散シャドウマップの分散調整パラメータεを設定すると共に、他のシェーディング用パラメータ（光源パラメータ等）を設定する（ステップＳ４）。
【０１２６】
次に、モデルオブジェクトのテクスチャ（元絵テクスチャ）と、ステップＳ２で生成されたシャドウマップテクスチャを用いて、例えばピクセルシェーダによりモデルオブジェクトの描画処理を行う（ステップＳ５）。即ち、前述の式（２）〜（７）で説明したような処理を行って、影画像の濃さ（減衰度）を設定しながら、モデルオブジェクト（キャラクタ）の描画処理を行う。
【０１２７】
次に、背景オブジェクトのテクスチャ（元絵テクスチャ）と、シャドウマップテクスチャを用いて、例えばピクセルシェーダにより背景オブジェクトの描画処理を行う（ステップＳ６）。即ち、前述の式（２）〜（７）で説明したような処理を行って影画像の濃さ（減衰度）を設定しながら、背景オブジェクトの描画処理を行う。
【０１２８】
このように、先にモデルオブジェクトの描画処理（ステップＳ５）を行った後に、背景オブジェクトの描画処理（ステップＳ６）を行うようにすれば、モデルオブジェクトの描画領域については、背景オブジェクトを描画しなくても済むようになる。従って、無駄な描画処理が行われるのを防止できるため、１フレーム内での描画処理が間に合わなくなってしまう事態を防止できる。特に画面全体においてモデルオブジェクトの占める面積が大きい場合には、ステップＳ５、Ｓ６に示すような順序で描画処理を行うことは効果的である。
【０１２９】
３．ハードウェア構成
図１５（Ａ）に本実施形態を実現できるハードウェアの構成例を示す。
【０１３０】
ＣＰＵ９００（メインプロセッサ）は、複数のＣＰＵコア１、ＣＰＵコア２、ＣＰＵコア３を含むマルチコアプロセッサである。またＣＰＵ９００は図示しないキャッシュメモリを含む。ＣＰＵコア１、２、３の各々にはベクタ演算器等が設けられている。そしてＣＰＵコア１、２、３の各々は、例えば２つのＨ／Ｗスレッド処理をコンテクストスイッチをすることなしに並列実行でき、マルチスレッド機能がハードウェアでサポートされている。そして３つのＣＰＵコア１、２、３の合計で、６つのＨ／Ｗスレッド処理を並列実行できる。
【０１３１】
ＧＰＵ９１０（描画プロセッサ）は、頂点処理やピクセル処理を行って、描画（レンダリング）処理を実現する。具体的には、シェーダプログラムに従って、頂点データの作成・変更やピクセル（フラグメント）の描画色の決定を行う。１フレーム分の画像がＶＲＡＭ９２０（フレームバッファ）に書き込まれると、その画像はビデオ出力を介してＴＶなどのディスプレイに表示される。なおメインメモリ９３０はＣＰＵ９００やＧＰＵ９１０のワークメモリとして機能する。またＧＰＵ９１０では、複数の頂点スレッド、複数のピクセルスレッドが並列実行され、描画処理のマルチスレッド機能がハードウェアでサポートされている。またＧＰＵ９１０にはハードウェアのテッセレータも備えられている。またＧＰＵ９１０は、頂点シェーダとピクセルシェーダとがハードウェア的に区別されていないユニファイド・シェーダ・タイプとなっている。
【０１３２】
ブリッジ回路９４０（サウスブリッジ）は、システム内部の情報流通を制御する回路であり、ＵＳＢコントローラ（シリアルインターフェース）、ネットワークの通信コントローラ、ＩＤＥコントローラ、或いはＤＭＡコントローラなどのコントローラを内蔵する。そしてこのブリッジ回路９４０により、ゲームコントローラ９４２、メモリーカード９４４、ＨＤＤ９４６、ＤＶＤドライブ９４８との間のインターフェース機能が実現される。
【０１３３】
なお本実施形態を実現できるハードウェア構成は図１５（Ａ）に限定されず、例えば図１５（Ｂ）のような構成であってもよい。
【０１３４】
図１５（Ｂ）ではＣＰＵ９０２が、プロセッサエレメントＰＰと８つのプロセッサエレメントＰＥ１〜ＰＥ８を含む。プロセッサエレメントＰＰは汎用的なプロセッサコアであり、プロセッサエレメントＰＥ１〜ＰＥ８は比較的シンプルな構成のプロセッサコアである。そしてプロセッサエレメントＰＰとプロセッサエレメントＰＥ１〜ＰＥ８のアーキテクチャは異なっており、プロセッサエレメントＰＥ１〜ＰＥ８は、複数のデータに対して１命令で同じ処理を同時にできるＳＩＭＤ型のプロセッサコアとなっている。これによりストリーミング処理などのマルチメディア処理を効率的に実行できる。プロセッサエレメントＰＰは、２つのＨ／Ｗスレッド処理を並列実行でき、プロセッサエレメントＰＥ１〜ＰＥ８の各々は、１つのＨ／Ｗスレッド処理を実行できる。従って、ＣＰＵ９０２では、合計で１０個のＨ／Ｗスレッド処理の並列実行が可能になる。
【０１３５】
図１５（Ｂ）では、ＧＰＵ９１２とＣＰＵ９０２の連携が密になっており、ＧＰＵ９１２は、ＣＰＵ９０２側のメインメモリ９３０に直接にレンダリング処理を行うことができる。また例えばＣＰＵ９０２がジオメトリ処理を行って、頂点データを転送したり、ＧＰＵ９１２からＣＰＵ９０２にデータを戻すことも容易にできる。またＣＰＵ９０２が、レンダリングのプリプロセッシング処理やポストプロセッシング処理を行うことも容易であり、テッセレーション（平面分割）やドットフィルをＣＰＵ９０２が実行できる。例えば抽象度の高い処理はＣＰＵ９０２が行い、抽象度が低い細かな処理はＧＰＵ９１２が行うというような役割分担が可能である。
【０１３６】
なお本実施形態の各部の処理をハードウェアとプログラムにより実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアであるプロセッサ（ＣＰＵ、ＧＰＵ）に処理を指示すると共に、必要であればデータを渡す。そして、プロセッサは、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０１３７】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（モデルオブジェクト等）と共に記載された用語（キャラクタ等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【０１３８】
また、仮想カメラとモデルオブジェクトとの距離を求める処理、モデルオブジェクトの描画処理、モデルオブジェクトの影画像を生成する処理、シャドウマップ処理、分散シャドウマップ処理、カメラ制御処理等も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【０１３９】
【図１】本実施形態の画像生成システムのブロック図の例。
【図２】本実施形態より生成された画像の例。
【図３】本実施形態より生成された画像の例。
【図４】本実施形態より生成された画像の例。
【図５】図５（Ａ）、図５（Ｂ）は仮想カメラとモデルオブジェクトとの距離Ｌと影画像の濃さの関係を説明するための図。
【図６】シャドウマップ処理の説明図。
【図７】分散シャドウマップ処理における分散調整パラメータの設定手法の説明図。
【図８】分散調整パラメータの調整を行わない場合の画像の例。
【図９】仮想カメラの制御に応じた影の濃さの制御手法の説明図。
【図１０】仮想カメラの制御に応じた影の濃さの制御手法の説明図。
【図１１】仮想カメラの制御に応じた影の濃さの制御手法の説明図。
【図１２】図１２（Ａ）、図１２（Ｂ）は仮想カメラの制御に応じた影の濃さの制御手法の説明図。
【図１３】図１３（Ａ）、図１３（Ｂ）は仮想カメラの制御に応じた影の濃さの制御手法の説明図。
【図１４】本実施形態の詳細な処理を説明するフローチャート。
【図１５】図１５（Ａ）、図１５（Ｂ）はハードウェア構成例。
【符号の説明】
【０１４０】
１００  処理部、１０２  ゲーム演算部、１０４  オブジェクト空間設定部、
１０６  移動体演算部、１０８  仮想カメラ制御部、１０９  距離演算部、
１２０  描画処理部、１３０  音生成部、１６０  操作部、１７０  記憶部、
１７２  オブジェクトデータ記憶部、１７３  モーションデータ記憶部、
１７４  テクスチャ記憶部、１７６  描画バッファ、１７７  Ｚバッファ、
１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、１９４  補助記憶装置、
１９６  通信部
【図１】
2010033296.tif 000008
【図５】
2010033296.tif 000009
【図６】
2010033296.tif 000010
【図７】
2010033296.tif 000011
【図９】
2010033296.tif 000012
【図１０】
2010033296.tif 000013
【図１１】
2010033296.tif 000014
【図１２】
2010033296.tif 000015
【図１３】
2010033296.tif 000016
【図１４】
2010033296.tif 000017
【図１５】
2010033296.tif 000018
【図２】
2010033296.tif 000019
【図３】
2010033296.tif 000020
【図４】
2010033296.tif 000021
【図８】
2010033296.tif 000022