(57)【要約】【課題】リアルな影を少ない処理負荷で生成できる画像生成システム、プログラム及び情報記憶媒体を提供すること。【解決手段】輝度減衰用に設定されるベクトルＶＰと光源ベクトルＶＬ１〜ＶＬ６との方向関係に基づき光源色の輝度を減衰させる輝度減衰シェーディング処理を、影空間に入ったオブジェクトＯＢ１に対して施し、この輝度減衰シェーディング処理により影を生成する。ベクトルＶＰと光源ベクトルＶＬ１〜ＶＬ６の内積に基づいて光源色の輝度を減衰させる。影空間に入ったオブジェクト部分に対しては輝度減衰シェーディング処理を施し、影空間に入っていないオブジェクト部分に対しては、輝度減衰シェーディング処理とは異なる通常のシェーディング処理を施す。【選択図】　　　　図４
2004070669.tif 000002
【特許請求の範囲】
【請求項１】
画像を生成するための画像生成システムであって、
光源と照明モデルに基づいてオブジェクトに対してシェーディング処理を施すシェーディング部と、
オブジェクト空間において所与の視点から見える画像を生成する画像生成部とを含み、
前記シェーディング部が、
輝度減衰用に設定される第１のベクトルと光源ベクトルとの方向関係に基づき光源色の輝度を減衰させる輝度減衰シェーディング処理を、影空間に入ったオブジェクト部分に対して施し、該輝度減衰シェーディング処理により、影空間に入ったオブジェクト部分に影を生成することを特徴とする画像生成システム。
【請求項２】
請求項１において、
前記シェーディング部が、
第１のベクトルと光源ベクトルとが、直交状態から平行状態になるにつれて、光源色の輝度を減衰させることを特徴とする画像生成システム。
【請求項３】
請求項１又は２において、
前記シェーディング部が、
第１のベクトルと光源ベクトルとの内積に基づいて、光源色の輝度を減衰させることを特徴とする画像生成システム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記第１のベクトルの方向が、複数の光源のうちの主光源の光源ベクトルの方向に基づいて設定されることを特徴とする画像生成システム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記シェーディング部が、
影空間に入ったオブジェクト部分に対しては、光源色の輝度を減衰させる輝度減衰シェーディング処理を施し、影空間に入っていないオブジェクト部分に対しては、輝度減衰シェーディング処理とは異なる通常のシェーディング処理を施すことを特徴とする画像生成システム。
【請求項６】
画像を生成するための画像生成システムであって、
少なくとも１つの光源と照明モデルに基づいてオブジェクトに対してシェーディング処理を施すシェーディング部と、
オブジェクト空間において所与の視点から見える画像を生成する画像生成部とを含み、
前記シェーディング部が、
影空間に入ったオブジェクト部分に対しては、光源色の輝度を減衰させる輝度減衰シェーディング処理を施し、影空間に入っていないオブジェクト部分に対しては、輝度減衰シェーディング処理とは異なる通常のシェーディング処理を施すことを特徴とする画像生成システム。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記シェーディング部が、
ディフューズ光或いはディフューズ光及びスペキュラ光についての、輝度減衰シェーディング処理を行うことを特徴とする画像生成システム。
【請求項８】
画像を生成するためのプログラムであって、
光源と照明モデルに基づいてオブジェクトに対してシェーディング処理を施すシェーディング部と、
オブジェクト空間において所与の視点から見える画像を生成する画像生成部として、
コンピュータを機能させると共に、
前記シェーディング部が、
輝度減衰用に設定される第１のベクトルと光源ベクトルとの方向関係に基づき光源色の輝度を減衰させる輝度減衰シェーディング処理を、影空間に入ったオブジェクト部分に対して施し、該輝度減衰シェーディング処理により、影空間に入ったオブジェクト部分に影を生成することを特徴とするプログラム。
【請求項９】
請求項８において、
前記シェーディング部が、
第１のベクトルと光源ベクトルとが、直交状態から平行状態になるにつれて、光源色の輝度を減衰させることを特徴とするプログラム。
【請求項１０】
請求項８又は９において、
前記シェーディング部が、
第１のベクトルと光源ベクトルとの内積に基づいて、光源色の輝度を減衰させることを特徴とするプログラム。
【請求項１１】
請求項８乃至１０のいずれかにおいて、
前記第１のベクトルの方向が、複数の光源のうちの主光源の光源ベクトルの方向に基づいて設定されることを特徴とするプログラム。
【請求項１２】
請求項８乃至１１のいずれかにおいて、
前記シェーディング部が、
影空間に入ったオブジェクト部分に対しては、光源色の輝度を減衰させる輝度減衰シェーディング処理を施し、影空間に入っていないオブジェクト部分に対しては、輝度減衰シェーディング処理とは異なる通常のシェーディング処理を施すことを特徴とするプログラム。
【請求項１３】
画像を生成するためのプログラムであって、
光源と照明モデルに基づいてオブジェクトに対してシェーディング処理を施すシェーディング部と、
オブジェクト空間において所与の視点から見える画像を生成する画像生成部として、
コンピュータを機能させると共に、
前記シェーディング部が、
影空間に入ったオブジェクト部分に対しては、光源色の輝度を減衰させる輝度減衰シェーディング処理を施し、影空間に入っていないオブジェクト部分に対しては、輝度減衰シェーディング処理とは異なる通常のシェーディング処理を施すことを特徴とするプログラム。
【請求項１４】
請求項８乃至１３のいずれかにおいて、
前記シェーディング部が、
ディフューズ光或いはディフューズ光及びスペキュラ光についての、輝度減衰シェーディング処理を行うことを特徴とするプログラム。
【請求項１５】
コンピュータ読み取り可能な情報記憶媒体であって、請求項８乃至１４のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
従来より、仮想的な３次元空間であるオブジェクト空間内において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。格闘ゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、ゲームコントローラ（操作部）を用いて自キャラクタ（オブジェクト）を操作し、相手プレーヤやコンピュータが操作する敵キャラクタと対戦することでゲームを楽しむ。
【０００３】
さて、このような画像生成システムでは、キャラクタなどのオブジェクトのリアルな影を生成することが望まれる。そして、このような影生成手法としては、例えばシャドウボリューム（広義にはモディファイアボリューム）を用いる手法などが知られている。
【０００４】
しかしながら、これまでの影生成手法では、オブジェクトのシェーディング処理の完了後に、影エリアを半透明処理により暗くすることで影を生成していた。このため、リアルなライティングとは異なった印象の画像が生成されてしまうという問題があった。
【０００５】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、リアルな影を少ない処理負荷で生成できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【０００６】
【課題を解決するための手段】
上記課題を解決するために、本発明は、画像を生成するための画像生成システムであって、光源と照明モデルに基づいてオブジェクトに対してシェーディング処理を施すシェーディング部と、オブジェクト空間において所与の視点から見える画像を生成する画像生成部とを含み、前記シェーディング部が、輝度減衰用に設定される第１のベクトルと光源ベクトルとの方向関係に基づき光源色の輝度を減衰させる輝度減衰シェーディング処理を、影空間に入ったオブジェクト部分に対して施し、該輝度減衰シェーディング処理により、影空間に入ったオブジェクト部分に影を生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【０００７】
本発明によれば、第１のベクトル（影の投影方向等を表すベクトル）と光源（少なくとも１つの光源。望ましくは複数の光源）の光源ベクトルとの方向関係（ベクトル間のなす角度等）に基づき光源色の輝度（光の強さ）が減衰するような輝度減衰シェーディング処理が、影空間に入ったオブジェクト部分に対して施される。即ち、オブジェクトの全部が影空間に入った場合にはオブジェクト全部に、オブジェクトの一部が影空間に入った場合にはオブジェクトの一部に対して、輝度減衰シェーディング処理が施される。そして、本発明では、この輝度減衰シェーディング処理を利用して、影空間に入ったオブジェクト部分に対して影が生成される。このように本発明では、シェーディング処理を利用して影が生成されるため、リアルな影を少ない処理負荷で生成できる。
【０００８】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記シェーディング部が、第１のベクトルと光源ベクトルとが、直交状態から平行状態になるにつれて、光源色の輝度を減衰させてもよい。
【０００９】
本発明では、第１のベクトルと光源の光源ベクトルとが、直交状態から平行状態（平行且つ反対方向或いは平行且つ同方向）になるにつれて、その光源についての光源色の輝度が減衰する。従って、その光源からの光が他のオブジェクトに遮られて影が生成されるという事象を表現できる。
【００１０】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記シェーディング部が、第１のベクトルと光源ベクトルとの内積に基づいて、光源色の輝度を減衰させてもよい。
【００１１】
この場合、第１のベクトルと光源ベクトルとの内積を引数とする関数（線形関数、非線形関数、ｎ次関数、正弦関数又は余弦関数等）に基づいて、光源色の輝度を減衰させることができる。
【００１２】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記第１のベクトルの方向が、複数の光源のうちの主光源の光源ベクトルの方向に基づいて設定されてもよい。
【００１３】
この場合、主光源とは、複数の光源の中で最も支配的な光源（輝度の高い光源、光の到達距離が長い光源等）であり、例えば、太陽、月、或いは暗いゲーム場面での松明などを表す光源である。
【００１４】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記シェーディング部が、影空間に入ったオブジェクト部分に対しては、光源色の輝度を減衰させる輝度減衰シェーディング処理を施し、影空間に入っていないオブジェクト部分に対しては、輝度減衰シェーディング処理とは異なる通常のシェーディング処理を施してもよい。
【００１５】
また本発明は、画像を生成するための画像生成システムであって、少なくとも１つの光源と照明モデルに基づいてオブジェクトに対してシェーディング処理を施すシェーディング部と、オブジェクト空間において所与の視点から見える画像を生成する画像生成部とを含み、前記シェーディング部が、影空間に入ったオブジェクト部分に対しては、光源色の輝度を減衰させる輝度減衰シェーディング処理を施し、影空間に入っていないオブジェクト部分に対しては、輝度減衰シェーディング処理とは異なる通常のシェーディング処理を施す画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【００１６】
本発明によれば、影空間に入ったオブジェクト部分に対しては輝度減衰シェーディング処理が施される。一方、影空間に入っていないオブジェクト部分に対しては通常のシェーディング処理（第１のベクトルと光源ベクトルとの方向関係に基づいて輝度を減衰させないシェーディング処理）が施される。例えば、オブジェクトの全部が影空間に入った場合には、オブジェクト全部に輝度減衰シェーディング処理が施される。一方、オブジェクトの全部が影空間の外にある場合には、オブジェクト全部に通常のシェーディング処理が施される。また、オブジェクトの一部が影空間に入った場合には、その一部に対して輝度減衰シェーディング処理が施され、他の部分については通常のシェーディング処理が施される。これにより、シェーディング処理を利用して少ない処理負荷で、オブジェクトに影を生成できるようになる。
【００１７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記シェーディング部が、ディフューズ光或いはディフューズ光及びスペキュラ光についての、輝度減衰シェーディング処理を行ってもよい。
【００１８】
【発明の実施の形態】
以下、本実施形態について図面を用いて説明する。
【００１９】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２０】
１．構成
図１に、本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部１００を含めばよく（或いは処理部１００と記憶部１７０を含めばよく）、それ以外の各部（機能ブロック）については任意の構成要素とすることができる。
【００２１】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、シフトレバー、アクセルペダル、ブレーキペダル、マイク、センサー、或いは筺体などのハードウェアにより実現できる。
【００２２】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭなどのハードウェアにより実現できる。
【００２３】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部（各手段）としてコンピュータを機能させるためのプログラム（各部をコンピュータに実現させるためのプログラム）が記憶（記録、格納）される。
【００２４】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、或いはＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００２５】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどのハードウェアにより実現できる。
【００２６】
携帯型情報記憶装置１９４は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【００２７】
通信部１９６は、外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００２８】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信するようにしてもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含まれる。
【００２９】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。この場合、処理部１００は、記憶部１７０内の主記憶部１７２をワーク領域として使用して、各種の処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）又はＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラム（ゲームプログラム）により実現できる。
【００３０】
ここで、処理部１００が行う処理としては、コイン（代価）の受け付け処理、各種モードの設定処理、ゲームの進行処理、選択画面の設定処理、オブジェクト（１又は複数のプリミティブ）の位置や回転角度（Ｘ、Ｙ又はＺ軸回り回転角度）を求める処理、オブジェクトを動作させる処理（モーション処理）、視点の位置（仮想カメラの位置）や視線角度（仮想カメラの回転角度）を求める処理、マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置する処理、ヒットチェック処理、ゲーム結果（成果、成績）を演算する処理、複数のプレーヤが共通のゲーム空間でプレイするための処理、或いはゲームオーバー処理などを考えることができる。
【００３１】
処理部１００は、移動・動作処理部１１０、オブジェクト空間設定部１１２、視点制御部１１４、画像生成部１２０、音生成部１３０を含む。なお、処理部１００は、これらの各部（機能ブロック）を全て含む必要はなく、その一部を省略してもよい。
【００３２】
移動・動作処理部１１０は、オブジェクト（移動体）の移動情報（位置、回転角度）や動作情報（オブジェクトの各パーツの位置、回転角度）を求める処理を行う。即ち、操作部１６０によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、オブジェクトを移動させたり動作（モーション、アニメーション）させたりする処理を行う。
【００３３】
オブジェクト空間設定部１１２は、移動体（キャラクタ、車、戦車、ロボット）、柱、壁、建物、マップ（地形）などの各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間内に配置設定するための処理を行う。より具体的には、ワールド座標系でのオブジェクトの位置や回転角度（方向）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転）でオブジェクトを配置する。
【００３４】
視点制御部１１４は、オブジェクト空間内の所与（任意）の視点での画像を生成するために、視点（仮想カメラ）を制御する処理を行う。即ち、視点位置や視線方向を制御する処理（仮想カメラの位置（Ｘ、Ｙ、Ｚ）又はＸ、Ｙ、Ｚ軸回りでの回転を制御する処理）等を行う。
【００３５】
画像生成部１２０は、処理部１００で行われる種々の処理の結果に基づいて画像処理を行い、ゲーム画像を生成し、表示部１９０に出力する。例えば、いわゆる３次元のゲーム画像を生成する場合には、まず、座標変換、クリッピング処理、透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点（構成点）に付与される位置座標、テクスチャ座標、色（輝度）データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、ジオメトリ処理後のオブジェクト（１又は複数プリミティブ面）の画像が、ＶＲＡＭ１７４（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できる描画バッファ）に描画される。これにより、オブジェクト空間内において所与の視点（仮想カメラ）から見える画像が生成されるようになる。
【００３６】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００３７】
画像生成部１２０が含むフレーム画像生成部１２２は、ジオメトリ処理（透視変換）後のオブジェクト（狭義にはプリミティブ面。以下の説明でも同様）をＶＲＡＭ（Ｖｉｄｅｏ　ＲＡＭ）１７４に描画することで、フレーム画像（１画面の画像）を生成する。
【００３８】
画像生成部１２０が含むテクスチャマッピング部１２４は、オブジェクトの描画の際に（フレーム画像の生成の際に）、オブジェクトにテクスチャをマッピングする処理を行う。具体的には、オブジェクトの頂点に設定（付与）されるテクスチャ座標等を用いて、ＶＲＡＭ１７４のテクスチャ記憶部からテクスチャ（色、輝度、法線、α値などの表面プロパティ）を読み出す。そして、２次元の画像又はパターンであるテクスチャをオブジェクトにマッピング（ｐｒｏｊｅｃｔ）する。この場合に、画素とテクセルとを対応づける処理やバイリニア補間（テクセル補間）などを行う。また、インデックスカラー・テクスチャマッピング用のＬＵＴ（ルックアップテーブル）を用いたテクスチャマッピングを行うようにしてもよい。
【００３９】
画像生成部１２０が含む隠面消去部１２６は、オブジェクトの描画の際に（フレーム画像の生成の際に）、オブジェクトの隠面消去処理を行う。具体的には、各ピクセルに対応づけてＺ値（奥行き情報）を記憶するＺバッファ（奥行きバッファ）を用いて、Ｚバッファ法（奥行き比較法）により隠面消去処理を行う。
【００４０】
画像生成部１２０が含むシェーディング部１２８は、オブジェクトにシェーディング処理を施す。より具体的には、光源（光源ベクトル、色又は光源位置等）、照明モデル、オブジェクトの法線ベクトル（頂点毎又はピクセル毎の法線ベクトル。面の法線ベクトル）などに基づいてシェーディング処理を行う。
【００４１】
ここで、シェーディング処理は、例えばオブジェクトの各点（ドット、ピクセル）での光源色（ＲＧＢ）の輝度（光の強度）を決定する処理である。そして、このシェーディング処理は、実世界での照明現象を模擬した数学的なモデルである照明モデル（シェーディングモデル）を用いて行われる。この照明モデルとしては、実世界現象のモデル化の態様に応じて、ランバート（Ｌａｍｂｅｒｔ）、フォン（Ｐｈｏｎｇ）、又はブリン（Ｂｌｉｎｎ）などの種々のモデルがある。また、プリミティブ面（ポリゴン、曲面等）のシェーディングを滑らかにして、プリミティブ面の境界を目立たなくする手法として、グーロー（Ｇｏｕｒａｕｄ）シェーディング、フォン（Ｐｈｏｎｇ）シェーディングなどの種々のスムースシェーディング手法がある。
【００４２】
そして本実施形態では、シェーディング部１２８が、光源色の輝度を減衰させるシェーディング処理（以下、輝度減衰シェーディング処理と呼ぶ）を、影空間に入ったオブジェクト部分（オブジェクトの一部が影空間に入った場合にはその部分。オブジェクトの全部が影空間に入った場合にはオブジェクトの全部）に対して施す。そして、この輝度減衰シェーディング処理を利用して、影空間に入ったオブジェクト部分に影を生成する。
【００４３】
より具体的には、シェーディング部１２８は、輝度減衰シェーディング処理において、輝度減衰用に設定される第１のベクトル（影の投影方向を表すベクトル、影空間を特定するためのベクトル）と光源ベクトル（オブジェクトと光源を結ぶ方向のベクトル、平行光源の光の方向を表すベクトル）との方向関係（ベクトルのなす角度等）に基づき光源色の輝度（光の強度）を減衰させる。例えば、第１のベクトルと光源ベクトルとが、直交状態（９０度）から平行状態（１８０度又は０度）になるにつれて、光源色の輝度を減衰させる。
【００４４】
また、シェーディング部１２８は、影空間に入ったオブジェクト部分（一部又は全部）に対しては、輝度減衰シェーディング処理を施す一方で、影空間に入っていないオブジェクト部分（一部又は全部）に対しては、輝度減衰シェーディング処理とは異なる通常のシェーディング処理（第１のベクトルと光源ベクトルとの方向関係に基づき光源色の輝度を減衰させないシェーディング処理）を施す。
【００４５】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００４６】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて生成してもよい。
【００４７】
２．本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【００４８】
２．１　輝度減衰シェーディング処理による影の生成
さて、図２では、オブジェクトＯＢ１と光源ＬＳ１、ＬＳ２の間に、オブジェクトＯＢ２が介在している。従って、このような状況では、光源ＬＳ１、ＬＳ２からの光は、オブジェクトＯＢ２により遮られ、オブジェクトＯＢ１には当たらないはずである。
【００４９】
しかしながら、これまでの影生成手法では、図２のような状況の場合でも、図３（Ａ）、（Ｂ）に示すような手法で影を生成していた。
【００５０】
即ち、まず、図３（Ａ）に示すように、全ての光源ＬＳ１〜ＬＳ６を用いて、照明モデル（ランバート、フォン、ブリン等）により、オブジェクトＯＢ１にシェーディング処理を施す。
【００５１】
そして、その後に図３（Ｂ）に示すように、オブジェクトＯＢ１が、オブジェクトＯＢ２により形成される影空間内にあるか否かを判断する。そして、オブジェクトＯＢ１が影空間内にあると判断された場合には、半透明処理等によりＯＢ１の色を黒に変化させる。
【００５２】
しかしながら、この影生成手法では、図３（Ａ）に示すように、本来ならオブジェクトＯＢ２に遮られて当たらないはずの光源ＬＳ１、ＬＳ２からの光により、オブジェクトＯＢ１に対するシェーディング処理が行われてしまう。従って、現実世界の事象とは異なるシェーディングが行われてしまうという問題がある。
【００５３】
また、図３（Ｂ）では、影空間に入った場合にオブジェクトＯＢ１の色が強制的に単一色の黒に設定される。即ち、オブジェクトＯＢ１は、光源ＬＳ３〜ＬＳ５により照らされているはずなのに、これらの光源ＬＳ３〜ＬＳ５によるシェーディングの効果は無視されてしまう。従って、画一的で単一色の影が生成されてしまい、いわゆるソフト・シャドウを実現できない。このため、生成される影が、現実世界の影とは異なり人工的で不自然な影になってしまい、リアルな影画像を生成できないという問題があった。
【００５４】
そこで本実施形態では、このような問題を解決するために、以下の手法を採用している。
【００５５】
即ち図４において、オブジェクトＯＢ１の周りには複数の光源ＬＳ１〜ＬＳ６（平行光源又は点光源等）が配置されている。そして、オブジェクトＯＢ１と光源ＬＳ１、ＬＳ２との間には、オブジェクトＯＢ２が介在しており、このＯＢ２が作る影空間内にＯＢ１が入っている。
【００５６】
この場合に本実施形態では、輝度減衰用のベクトルＶＰ（第１のベクトル）と光源ＬＳ１〜ＬＳ６の光源ベクトルＶＬ１〜ＶＬ６との方向関係（なす角度）に応じて光源色の輝度を減衰させる輝度減衰シェーディング処理を、オブジェクトＯＢ１に対して施す。より具体的には、ベクトルＶＰと光源ベクトルＶＬ１〜ＶＬ６とが、直交状態（９０度）から平行状態（１８０度又は０度）になるにつれて輝度を減衰させる輝度減衰シェーディング処理をＯＢ１に施す。
【００５７】
例えば図４において、光源ＬＳ１、ＬＳ２の光源ベクトルＶＬ１、ＶＬ２とベクトルＶＰは、平行状態（１８０度）又は平行に近い状態になっている。この場合には、光源ＬＳ１、ＬＳ２の輝度を大きな減衰率で減衰させる輝度減衰シェーディング処理を、ＬＳ１、ＬＳ２を用いてオブジェクトＯＢ１に施す。
【００５８】
一方、光源ＬＳ３の光源ベクトルＶＬ３とベクトルＶＰは、直交状態（９０度）又は直交に近い状態になっている。この場合には、光源ＬＳ３の輝度を小さな減衰率で減衰させる輝度減衰シェーディング処理を、ＬＳ３を用いてオブジェクトＯＢ１に施す。
【００５９】
なお、光源ＬＳ４、ＬＳ５、ＬＳ６については、輝度を減衰させない通常のシェーディング処理を、ＬＳ４〜ＬＳ６を用いてオブジェクトＯＢ１に施す。
【００６０】
このようにすれば、光源ＬＳ１、ＬＳ２の輝度については大きく減衰されて、オブジェクトＯＢ１のシェーディング処理が行われる。従って、光源ＬＳ１、ＬＳ２からの光がオブジェクトＯＢ２により遮られる（図２参照）のと同等の効果を得ることができる。
【００６１】
一方、光源ＬＳ３の輝度については小さく減衰されて、オブジェクトＯＢ１のシェーディング処理が行われる。従って、光源ＬＳ３からの光がオブジェクトＯＢ２により少しだけ遮られるのと同等の効果を得ることができる。
【００６２】
また、光源ＬＳ４〜ＬＳ６の輝度については全く減衰されずに、これらのＬＳ４〜ＬＳ５を用いて、オブジェクトＯＢ１のシェーディング処理が行われる。従って、光源ＬＳ４〜ＬＳ５によるシェーディング効果が全く無視されてしまうという図３（Ｂ）の手法の問題点を解消できる。
【００６３】
従って、図３（Ｂ）のような画一的な影ではなく、現実世界の影に近いリアルな影を生成できるようになり、いわゆるソフト・シャドウの実現も可能になる。
【００６４】
しかも、本実施形態では、光源色の輝度を減衰させる輝度減衰シェーディング処理を行うだけで、影が生成される。従って、図３（Ｂ）のように半透明処理等を利用してオブジェクトＯＢ１の色を黒に変化させるという処理も不要になる。また、レイ・トレーシングのような負荷の重い処理も不要であり、少ない処理負荷でリアルな影を生成できる。
【００６５】
なお、図４において、光源ベクトルＶＬ１〜ＶＬ６とベクトルＶＰとの方向関係とは、ＶＬ１〜ＶＬ６とＶＰとのなす角度や、ＶＬ１〜ＶＬ６の第１、第２の座標成分（例えばＸ、Ｚ座標）で規定されるベクトルと、ＶＰの第１、第２の座標成分で規定されるベクトルとのなす角度などで表される。
【００６６】
また、図４において、光源ＬＳ１〜ＬＳ６は平行光源であってもよいし、点光源であってもよい。例えば、平行光源を表現する場合には、光源を無限遠に配置し、オブジェクトと無限遠の光源を結ぶ方向を、平行光源の光源ベクトルの方向に設定してもよい。或いは、オブジェクトとの位置関係に依らずに一定の方向に設定される方向を、平行光源の光源ベクトルの方向に設定してもよい。
【００６７】
また、図４では、光源ベクトルの方向を、オブジェクトから光源に向かう方向に設定しているが、光源からオブジェクトに向かう方向を、光源ベクトルの方向に設定してもよい。
【００６８】
また、ベクトルＶＰ（第１のベクトル）は、影の投影方向（影が落ちる方向）を表すベクトルであり、影空間を定義するためのベクトルである。このベクトルＶＰは、ゲーム状況等に応じて種々の方向に設定できる。
【００６９】
例えば、ベクトルＶＰの方向は、複数の光源ＬＳ１〜ＬＳ６のうち主光源（太陽又は月等を表す光源。最も輝度の高い光源）となる光源ＬＳ１の光源ベクトルＶＬ１の方向に基づいて設定できる。即ち、ベクトルＶＰの方向を、主光源ＬＳ１の光源ベクトルＶＬ１と平行な方向（平行且つ逆方向）に設定したり、平行に近い方向に設定できる。
【００７０】
また、オブジェクトＯＢ１（ＯＢ１のドット）が、影空間に入った否かを判定する手法としては、種々のものが考えられる。例えば、シャドウボリューム（モディファイアボリューム）とステンシルバッファ（格納されている値に増加、減少又は反転等の演算を施すことができるバッファ）を用いて、オブジェクトＯＢ１が影空間に入った否かを判定してもよい。
【００７１】
２．２　詳細な処理例
次に、本実施形態の詳細な処理例について図５のフローチャートを用いて説明する。
【００７２】
まず、ディフューズ色ＤＣ（拡散光成分）、スペキュラ色ＳＣ（鏡面光成分）を下式（１）、（２）のようにクリアする（ステップＳ１）。
【００７３】
【数１】
2004070669.tif 000003
【００７４】
【数２】
2004070669.tif 000004
【００７５】
次に、処理対象となるピクセル（或いは頂点）が影空間内（影エリア内）にあるか否かを判断する（ステップＳ２）。この判断は、例えば、シャドウボリュームとステンシルバッファを用いる手法により実現できる。
【００７６】
そして、処理対象となるピクセル（頂点）が影空間内にはないと判断された場合には、下式（３）のように、ｎ番目の光源についての通常のシェーディング処理を行い（ステップＳ３）、ディフューズ色ＤＣを求める。
【００７７】
【数３】
2004070669.tif 000005
【００７８】
上式（３）は、図６（Ａ）に示すディフューズ光に関するランバートの照明モデル（ランバートの余弦則）である。上式（３）において、ＣＬＡＭＰ０〜１（Ｘ）は、Ｘの値を０〜１の範囲にクランプする関数である。また、ＶＬｎは、ディフューズ光の光源ベクトルである。また、Ｎは、オブジェクトの面の向きを表す法線ベクトル（各ピクセル又は各頂点の法線ベクトル）である。また、ＶＬｎ・Ｎの「・」は内積を意味する。また、ＣＬは、ディフューズ光の光源色である。なお、ＶＬｎ、Ｎは共に単位ベクトルである。
【００７９】
ステップＳ３の処理の後、全ての光源の処理が終了したか否かを判断し（ステップＳ４）、終了していない場合には、ステップＳ３に戻る。
【００８０】
一方、終了した場合には、下式（４）のように、スペキュラ色ＳＣの成分を求める通常のシェーディング処理を行う（ステップＳ５）。
【００８１】
【数４】
2004070669.tif 000006
【００８２】
上式（４）は、図６（Ｂ）に示すスペキュラ光に関するフォンの照明モデルである。上式（４）において、Ｄｆはディフューズ反射率であり、Ｓｆはマテリアルのスペキュラ反射率である。また、ＰＯＷはスペキュラパワーの係数である。また、ＶＳは、スペキュラ光の光源ベクトルであり、Ｅは、視線方向を表す視線ベクトルである。また、Ｈは、図６（Ｂ）に示すように、光源ベクトルＶＳと視線ベクトルＥの中間ベクトルである。また、ＣＳは、スペキュラ光の光源色である。
【００８３】
図５のステップＳ２において、処理対象となるピクセル（頂点）が影空間内にあると判断された場合には、下式（５）のように、ｎ番目の光源についての輝度減衰シェーディング処理を行い（ステップＳ６）、ディフューズ色ＤＣの成分を求める。
【００８４】
【数５】
2004070669.tif 000007
【００８５】
上式（５）において、ＣＬＡＭＰ−１〜０（Ｘ）は、Ｘの値を−１〜０の範囲にクランプする関数である。また、ＶＰは、図４で説明した影の投影方向を表すベクトル（第１のベクトル）である。
【００８６】
ステップＳ６の処理の後、全ての光源の処理が終了したか否かを判断し（ステップＳ７）、終了していない場合には、ステップＳ６に戻る。
【００８７】
一方、終了した場合には、下式（６）のように、スペキュラ色ＳＣの成分を求める輝度減衰シェーディング処理を行い（ステップＳ８）、ステップＳ９に移行する。
【００８８】
【数６】
2004070669.tif 000008
【００８９】
ステップＳ９では、ステップＳ３、Ｓ５、Ｓ６、Ｓ８で得られたディフューズ色ＤＣ、スペキュラ色ＳＣと、テクスチャ色（或いはマテリアル色）ＴＣに基づいて、下式（７）のように、各ピクセル（或いは各頂点）の色ＰＣを求める。
【００９０】
【数７】
2004070669.tif 000009
【００９１】
以上により、１ピクセル分（或いは１頂点分）の処理が終了する。そして、この処理を全ピクセル分だけ行うことで、フレーム画像（画面サイズの画像）の生成が終了する。
【００９２】
さて、上式（５）において、下式（８）のＦ１が、ディフューズ光についての通常のシェーディング処理部分に相当し、下式（９）のＡ１が、ディフューズ光についての輝度（光の強度）の減衰率に相当する。
【００９３】
【数８】
2004070669.tif 000010
【００９４】
【数９】
2004070669.tif 000011
【００９５】
また、上式（６）において、下式（１０）のＦ２が、スペキュラ光についての通常のシェーディング処理部分に相当し、下式（１１）のＡ２が、スペキュラ光についての輝度（光の強度）の減衰率（色減衰率）に相当する。
【００９６】
【数１０】
2004070669.tif 000012
【００９７】
【数１１】
2004070669.tif 000013
【００９８】
図７（Ａ）に、これらの減衰率Ａ１、Ａ２と内積ＩＰ（ＶＬｎ・ＶＰ又はＶＳ・ＶＰ）の関係の一例を示す。
【００９９】
図７（Ａ）に示すように、輝度の減衰率Ａ１、Ａ２は、内積ＩＰが０．０〜１．０（ＶＬｎ又はＶＳとＶＰのなす角度θが９０度〜０度）の場合に、１．０にクランプされる。そして、内積ＩＰ＝０．０（θ＝９０度）の場合に、減衰率Ａ１、Ａ２は１．０になる。
【０１００】
そして、内積ＩＰが０．０から−１．０に変化すると（θが９０度から１８０度に変化すると）、減衰率Ａ１、Ａ２は１．０から０．０に変化する。即ち、内積ＩＰ＝−１．０（θ＝１８０度）の場合に、光源色の輝度（光の強さ）が最も減衰するようになる。これにより、図４の光源ＬＳ１の光がオブジェクトＯＢ２により遮られるという事象を表現できる。
【０１０１】
なお、内積ＩＰと減衰率Ａ１、Ａ２の関係は、図７（Ａ）に示す関係に限定されず、例えば図７（Ｂ）に示すような種々の関係を採用できる。また、このような内積ＩＰを用いずに輝度を減衰させるようにしてもよい。
【０１０２】
また、例えば光源ベクトルの方向を、オブジェクトから光源に向かう方向ではなく、光源からオブジェクトに向かう方向として定義した場合には、減衰率Ａ１、Ａ２は、内積ＩＰが０．０〜−１．０（θが９０度〜１８０度）の場合に、１．０にクランプされる。そして、内積ＩＰが０．０から１．０に変化すると（θが９０度から０度に変化すると）、減衰率Ａ１、Ａ２は１．０から０．０に変化する。即ち、内積ＩＰ＝１．０（θ＝０度）の場合に、光源色の輝度が最も減衰するようになる。
【０１０３】
図８〜図１１に、本実施形態により生成される画像の例を示す。図８〜図１１において、ＶＬ１〜ＶＬ４は光源ベクトルに相当し、ＳＤＳＰは影空間である。
【０１０４】
図８は、オブジェクトＯＢ１の全部が影空間ＳＤＳＰの外にある場合の画像例である。この場合には、オブジェクトＯＢ１の全体に対して、光源ベクトルＶＬ１〜ＶＬ４に基づく通常のシェーディング処理（図５のステップＳ３、Ｓ５）が施される。
【０１０５】
一方、図９、図１０は、オブジェクトＯＢ１の一部が影空間ＳＤＳＰの中に入っている場合の画像例である。この場合には、オブジェクトＯＢ１のうち影空間ＳＤＳＰに入っている部分に対して、光源ベクトルＶＬ１等についての輝度を減衰させるシェーディング処理（図５のステップＳ６、Ｓ８）が施される。なお、図１１では、オブジェクトＯＢ１の全部が影空間ＳＤＳＰの中に入っている場合の画像例である。
【０１０６】
図８〜図１１に示すように、本実施形態によれば、オブジェクトＯＢ１のうち影空間ＳＤＳＰに入っている部分に、リアルな影を生成できる。
【０１０７】
また、オブジェクトＯＢ１のうち影部分と非影部分との境界で輝度が滑らかに変化するようになり、いわゆるソフト・シャドウを実現できる。
【０１０８】
また、光源からの光によるシェーディング処理を利用して影が生成されるため、図３（Ａ）、（Ｂ）に示すような画一的で単一色の影とは異なる、リアルな影を生成できる。即ち、シェーディング部分が黒い色の影で塗りつぶされることはなく、シェーディング処理の光源色を減衰させることで影が生成されるため、レイ・トレーシングで生成されるようなリアルな影を生成できる。
【０１０９】
しかも、本実施形態では、上式（８）、（１０）のシェーディング処理部分Ｆ１、Ｆ２に対して上式（９）、（１１）の減衰率Ａ１、Ａ２を乗算する処理を追加するだけでよい。従って、レイ・トレーシングのような負荷の重い処理を必要とすることなく、リアルな影を生成できる。
【０１１０】
なお、本実施形態のシェーディング処理は、頂点オーダで行うことも可能であるが（グーローシェーディング）、よりリアルな影を生成するためには、ピクセルオーダで行うことが望ましい（ピクセル・シェーディング、ピクセル・シェーダ）。
【０１１１】
例えば、フォンのスムーズシェーディング等の手法を用いて、法線ベクトルを補間して、ピクセル毎の法線ベクトルを求める。そして、このピクセル毎の法線ベクトルを用いて、シェーディング処理を行う。このようにすることで、影部分と非影部分の境界を、更に目立たなくすることが可能になる。
【０１１２】
２．３　ピクセルオーダのシェーディング
次に、高速なピクセルオーダのシェーディング処理（ピクセル・シェーディング）を実現できる画像生成システムについて説明する。
【０１１３】
図１２に、このような画像生成システムの構成例（図１の画像生成部、ＶＲＡＭの詳細例）を示す。図１２において、画像生成部１２０は、フレーム画像生成部１２２、テクスチャマッピング部１２４、隠面消去部１２６、シェーディング部１２８を含む。また、ＶＲＡＭ１７４は、色（原色）バッファ２００、法線バッファ２０２、座標バッファ２０４、Ｚバッファ２０６、輝度（光源色）バッファ２０８、フレーム（最終画像）バッファ２１０、ステンシルバッファ２１２、テクスチャ記憶部２１４を含む。なお、本実施形態の画像生成システムは、図１２の全てのブロック（機能ブロック）を含む必要はなく、その一部を省略してもよい。
【０１１４】
フレーム画像生成部１２２は、Ｚバッファ２０６を用いて隠面消去処理を行いながら、プリミティブ面（ポリゴン、自由曲面、プリミティブ）を描画し、シェーディング未処理のフレーム画像を生成する。即ち、テクスチャ記憶部２１４のテクスチャをプリミティブ面にマッピングし、シェーディング処理を行うことなく、プリミティブ面を色（原色）バッファ２００に描画する。これにより、シェーディング処理が施されていない原色のフレーム画像が、色バッファ２００に生成される。
【０１１５】
なお、色バッファ２００へのプリミティブ面の描画の際のテクスチャマッピング処理はテクスチャマッピング部１２４が行い、隠面消去処理は隠面消去部１２６が行う。
【０１１６】
そして本実施形態では、このフレーム画像の生成の際に得られるオブジェクトの法線ベクトル（法線ベクトルの座標成分）が、各ピクセルに対応づけられて、法線バッファ２０２に書き込まれる。即ち、ジオメトリデータに基づいてオブジェクトを色バッファ２００に描画する際に、フォンのスムーズシェーディング等による法線ベクトルの補間処理が行われる。そして、補間処理により得られた各ピクセルの法線ベクトルが、法線バッファ２０２の、対応するピクセル位置（ピクセルアドレス）に書き込まれる。
【０１１７】
また本実施形態では、フレーム画像の生成の際に得られるオブジェクトの空間座標（視点座標系の座標。広義には座標情報）が、各ピクセルに対応づけられて、座標バッファ２０４に書き込まれる。即ち、ジオメトリデータに基づいてオブジェクトを色バッファ２００に描画する際に、オブジェクトの各ドット（ピクセル）での空間座標（オブジェクトの各ドットが、視点座標系等の空間座標系においてどの位置に存在するかを示す座標）が求められる。そして、この求められた各ドットの空間座標が、座標バッファ２０４の、対応するピクセル位置に書き込まれる。
【０１１８】
また本実施形態では、対象となるピクセルが影空間（影エリア）内のピクセルであるか否かを判定するための影空間判定情報を、シャドウボリュームなどを利用して、ステンシルバッファ２１２に生成する。
【０１１９】
より具体的には、シャドウボリューム（モディファイアボリューム）を構成するプリミティブ面（ポリゴン）のうち視点から見て表向きのプリミティブ面を描画する。この際、そのＺ値が、Ｚバッファ２０６のＺ値よりも手前にあるピクセルについて、ステンシルバッファ２１２の値を１だけ減算する。
【０１２０】
次に、シャドウボリュームを構成するプリミティブ面のうち視点から見て裏向きのプリミティブ面を描画する。この際、そのＺ値が、Ｚバッファ２０６のＺ値よりも手前にあるピクセルについて、ステンシルバッファ２１２の値を１だけ加算する。
【０１２１】
以上のような処理を全てのオブジェクトに対して行うと、ステンシルバッファ２１２の値（影空間判定情報）が最大値でないピクセルが、影空間内のピクセルであると判定できるようになる。
【０１２２】
シェーディング部１２８は、光源（光源ベクトル、光源色又は光源位置等）と、照明モデルと、ステンシルバッファ２１２の影空間判定情報と、法線バッファ２０２の法線ベクトルとに基づいて、シェーディング処理を行い、各ピクセルでの光源色の輝度を求める。そして、求められた光源色の輝度を、各ピクセルに対応づけて輝度バッファ２０８に書き込む。そして、この輝度と、色バッファ２００の色とに基づいて、シェーディング処理が施されたフレーム画像が生成され、フレームバッファ２１０（描画バッファ）に書き込まれることになる。
【０１２３】
この場合に、シェーディング部１２８は、図５で説明したシェーディング処理を行う。即ち、影空間判定情報に基づいて、影空間の外にあると判定されたピクセルについては、図５のステップＳ３〜Ｓ５の通常のシェーディング処理により、そのピクセルの輝度を求める。そして、求めた輝度を、輝度バッファ２０８の、対応するピクセル位置に書き込む。
【０１２４】
一方、影空間判定情報に基づいて、影空間内にあると判定されたピクセルについては、図５のステップＳ６〜Ｓ８の輝度減衰シェーディング処理により、そのピクセルの輝度を求める。そして、求めた輝度を、輝度バッファ２０８の、対応するピクセル位置に書き込む。
【０１２５】
このようにして得られた輝度を用いることで、図８〜図１１に示すようなリアルな影画像を生成できるようになる。
【０１２６】
また本実施形態では、シェーディング部１２８が、座標バッファ２０４の空間座標（座標情報）に基づいて、点光源（スポット光源）などについてのシェーディング処理を行う。
【０１２７】
即ち、点光源を用いたシェーディング処理を行うためには、オブジェクトの各ドット（点）と点光源との間の距離の情報が必要になる。本実施形態では、オブジェクトの各ドットの空間座標（Ｘ、Ｙ、Ｚ座標又はＸ、Ｙ座標）が、各ピクセルに対応づけて座標バッファ２０４に保存されている。シェーディング部１２８は、この座標バッファ２０４の空間座標に基づいて、点光源とオブジェクトの各ドット（ピクセル）との距離を求める。そして、求められた距離に基づいて点光源についてシェーディング処理を行う。
【０１２８】
また、座標バッファ２０４の空間座標を用いれば、図６（Ｂ）に示す視線ベクトルＥについても容易に求めることができる。これにより、スペキュラ光についてのシェーディング処理も実現できる。
【０１２９】
即ち、例えば座標バッファ２０４の空間座標に基づいて、オブジェクトの各ドットと視点とを結ぶ視線ベクトルＥを求める。そして、視線ベクトルＥと光源ベクトルＶＳとに基づいて中間ベクトルＥを求め、この中間ベクトルＥと法線バッファ２０２からの法線ベクトルＮに基づいて、各ピクセルでのスペキュラ光のシェーディング処理を行う。
【０１３０】
次に、図１２の画像生成システムの動作について図１３、図１４、図１５のフローチャートを用いて説明する。
【０１３１】
まず、色（原色）バッファ２００、Ｚバッファ２０６、輝度（光源色）バッファ２０８等の記憶値をクリアする（ステップＳ１１）。
【０１３２】
次に、処理対象となるプリミティブ面（プリミティブ）をピクセル単位で描画する（ステップＳ１２）。そして、そのピクセル位置でのＺ値がＺバッファ２０６のＺ値よりも視点から見て手前側か否かを判断する（ステップＳ１３）。そして、奥側であると判断された場合には、そのピクセル部分は隠面消去される部分であるため、ステップＳ１８に移行する。
【０１３３】
一方、手前側であると判断された場合には、そのピクセル位置でのテクスチャ色（又はマテリアル色）を、シェーディング処理することなく色バッファ２００に書き込む（ステップＳ１４）。そして、この際に、そのピクセル位置での空間座標（視点座標系）を、座標バッファ２０４に書き込む（ステップＳ１５）。また、そのピクセル位置での法線ベクトル（法線ベクトルの座標成分）を、法線バッファ２０２に書き込む（ステップＳ１６）。そして、必要であればＺバッファ２０６の更新を行う（ステップＳ１７）。なお、ステップＳ１４〜Ｓ１７の処理順序は任意（順不同）である。
【０１３４】
次に、プリミティブ面の全てのピクセルの処理が終了したか否かを判断し（ステップＳ１８）、終了していない場合にはステップＳ１３に戻る。一方、終了した場合には、全てのプリミティブ面の処理が終了したか否かを判断し（ステップＳ１９）、終了していない場合にはステップＳ１２に戻る。
【０１３５】
次に、ピクセルが影空間（影エリア）内のピクセルか否かを判定するための影空間判定情報を、ステンシルバッファ２１２を用いて取得する（ステップＳ２０）。
【０１３６】
次に、光源（光源属性）と、照明モデル（照明モデルの演算式）と、影空間判定情報と、法線バッファ２０２からの法線ベクトルに基づいて、ディフューズ光のシェーディング処理を行い、全てのピクセルでの光源色の輝度を求め、輝度バッファ２０８に書き込む（ステップＳ２１）。
【０１３７】
次に、色バッファ２００の色（原色）と輝度バッファ２０８の輝度を乗算し、ディフューズ光のシェーディング処理が施されたフレーム画像を生成し、フレームバッファ２１０に書き込む（ステップＳ２２）。
【０１３８】
次に、光源と、照明モデルと、影空間判定情報と、法線バッファ２０２からの法線ベクトルと、座標バッファ２０４からの空間座標（視点座標系）に基づいて、スペキュラ光のシェーディング処理を行い、得られた光源色の輝度をフレームバッファ２１０に加算する（ステップＳ２３）。
【０１３９】
なお、ステップＳ２２、Ｓ２３の処理を行う代わりに、色バッファ２００の色と輝度バッファ２０８の輝度を乗算し、得られた乗算値にスペキュラ色を加算した値を、フレームバッファ２１０に書き込むようにしてもよい。
【０１４０】
以上のようにすることで、シェーディング処理が施され、影が描画されたフレーム画像（不透明プリミティブ面についてのフレーム画像）を生成できるようになる。
【０１４１】
しかも、この画像生成手法によれば、隠面消去されない部分についてのみシェーディング処理が行われ、隠面消去される部分についてはシェーディング処理が行われるようになるため、処理の高速化、処理負荷の軽減化を図れる。
【０１４２】
即ち、図１３のステップＳ１４、Ｓ１６で得られた色、法線ベクトルは、色バッファ２００、法線バッファ２０２に書き込まれ、これらの色、法線ベクトルに基づいて、図１４のステップＳ２１〜Ｓ２３のシェーディング処理が行われる。従って、このステップＳ２１〜Ｓ２３のシェーディング処理は、１画面（フレーム）のピクセル数の分だけ行えばよいことになる。従って、オブジェクトの隠面消去部分において、無駄にシェーディング処理が行われる事態を防止でき、処理の高速化、処理負荷の軽減化を図れる。
【０１４３】
図１５は、半透明プリミティブプリミティブ面の描画処理に関するフローチャートである。この処理は、図１３、図１４の不透明プリミティブ面の描画処理の後に行われる。
【０１４４】
まず、半透明プリミティブ面の全てのピクセルについて、図１３のステップＳ１３〜Ｓ１８と同様の処理を行う（ステップＳ３１）。この際、輝度バッファ２０８はクリアしておく。
【０１４５】
次に、半透明プリミティブ面の隠面消去されなかった部分（半透明プリミティブ面がバッファを更新した部分）のみについて、その全てのピクセルの光源色（ディフューズ光）を求め、輝度バッファ２０８に書き込む（ステップＳ３２）。
【０１４６】
次に、半透明プリミティブ面の隠面消去されなかった部分（半透明プリミティブ面がバッファを更新した部分）のみについて、色バッファ２００の色と輝度バッファ２０８の輝度を乗算し、その乗算値に、座標バッファ２０４の空間座標に基づき得られた輝度（スペキュラ光）を加算する。そして、得られたピクセル色を、α値（半透明パラメータ）に基づいて、フレームバッファ２１０に既に書かれているピクセル色と合成する（ステップＳ３３）。そして、全ての半透明プリミティブ面の処理が終了したか否かを判断し（ステップＳ３４）、終了していない場合にはステップＳ３１に戻る。
【０１４７】
以上のようにすることで、無駄の無い少ない処理負荷で半透明プリミティブ面を描画できるようになる。
【０１４８】
４．ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図１６を用いて説明する。
【０１４９】
メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介して転送されたプログラム、或いはＲＯＭ９５０（情報記憶媒体の１つ）に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【０１５０】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１５１】
ジオメトリプロセッサ９０４は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ９００で動作するプログラムが、その処理をジオメトリプロセッサ９０４に指示する。
【０１５２】
データ伸張プロセッサ９０６は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、ＭＰＥＧ方式等で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ＲＯＭ９５０、ＣＤ９８２に格納されたり、或いは通信インターフェース９９０を介して外部から転送される。
【０１５３】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ（プリミティブ面）で構成されるオブジェクトの描画（レンダリング）処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０の機能を利用して、オブジェクトデータを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると、描画プロセッサ９１０は、これらのオブジェクトデータやテクスチャに基づいて、Ｚバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ９２２に高速に描画する。また、描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、１フレーム分の画像がフレームバッファ９２２に書き込まれると、その画像はディスプレイ９１２に表示される。
【０１５４】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ９３２から出力される。
【０１５５】
ゲームコントローラ９４２（レバー、ボタン、筺体、パッド型コントローラ又はガン型コントローラ等）からの操作データや、メモリカード９４４からのセーブデータ、個人データは、シリアルインターフェース９４０を介してデータ転送される。
【０１５６】
ＲＯＭ９５０にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されることになる。なお、ＲＯＭ９５０の代わりにハードディスクを利用するようにしてもよい。
【０１５７】
ＲＡＭ９６０は、各種プロセッサの作業領域として用いられる。
【０１５８】
ＤＭＡコントローラ９７０は、プロセッサ、メモリ（ＲＡＭ、ＶＲＡＭ、ＲＯＭ等）間でのＤＭＡ転送を制御するものである。
【０１５９】
ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２（情報記憶媒体）を駆動し、これらのプログラム、データへのアクセスを可能にする。
【０１６０】
通信インターフェース９９０は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース９９０に接続されるネットワークとしては、通信回線（アナログ電話回線、ＩＳＤＮ）、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他の画像生成システムとの間でのデータ転送が可能になる。
【０１６１】
なお、本実施形態の各部は、その全てを、ハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１６２】
そして、本実施形態の各部をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０等は、その指示と渡されたデータとに基づいて、本発明の各部を実現することになる。
【０１６３】
図１７（Ａ）に、本実施形態を業務用ゲームシステム（画像生成システム）に適用した場合の例を示す。プレーヤは、ディスプレイ１１００上に映し出されたゲーム画像を見ながら、操作部１１０２（レバー、ボタン）を操作してゲームを楽しむ。内蔵されるシステムボード（サーキットボード）１１０６には、各種プロセッサ、各種メモリなどが実装される。そして、本実施形態の各部を実現するためのプログラム（データ）は、システムボード１１０６上の情報記憶媒体であるメモリ１１０８に格納される。以下、このプログラムを格納プログラム（格納情報）と呼ぶ。
【０１６４】
図１７（Ｂ）に、本実施形態を家庭用のゲームシステム（画像生成システム）に適用した場合の例を示す。プレーヤはディスプレイ１２００に映し出されたゲーム画像を見ながら、コントローラ１２０２、１２０４などを操作してゲームを楽しむ。この場合、上記格納プログラム（格納情報）は、本体システムに着脱自在な情報記憶媒体であるＣＤ１２０６、或いはメモリカード１２０８、１２０９などに格納されている。
【０１６５】
図１７（Ｃ）に、ホスト装置１３００と、このホスト装置１３００とネットワーク１３０２（ＬＡＮのような小規模ネットワークや、インターネットのような広域ネットワーク）を介して接続される端末１３０４−１〜１３０４−ｎ（ゲーム機、携帯電話）とを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納プログラム（格納情報）は、例えばホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリなどの情報記憶媒体１３０６に格納されている。端末１３０４−１〜１３０４−ｎが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末１３０４−１〜１３０４−ｎに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４−１〜１３０４−ｎに伝送し端末において出力することになる。
【０１６６】
なお、図１７（Ｃ）の構成の場合に、本実施形態の各部を、ホスト装置（サーバー）と端末とで分散して実現するようにしてもよい。また、本実施形態の各部を実現するための上記格納プログラム（格納情報）を、ホスト装置（サーバー）の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【０１６７】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。
【０１６８】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０１６９】
例えば、明細書中の記載において広義な用語（方向関係、座標情報、モディファイアボリューム等）として引用された用語（なす角度、空間座標、シャドウボリューム等）は、明細書中の他の記載においても広義な用語に置き換えることができる。
【０１７０】
また、本発明の輝度減衰手法は、図４〜図７（Ｂ）で説明した手法に限定されない。例えば、上述した式（５）、（６）と異なった式で、輝度減衰シェーディングを行ってもよい。また、光源ベクトルと第１のベクトルの内積とは異なるパラメータを用いて、光源色を減衰させてもよい。
【０１７１】
また、本実施形態の画像生成手法は、図１２〜図１５で説明した手法に限定されない。例えば、ピクセルオーダではなく、頂点オーダでシェーディング処理を行ってもよい。また、例えばＶＲＡＭではなく１つのレジスタを用いてピクセル・シェーディングを行ってもよい。
【０１７２】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１７３】
また、本発明は種々のゲーム（格闘ゲーム、競争ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、ロールプレイングゲーム等）に適用できる。
【０１７４】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々の画像生成システム（ゲームシステム）に適用できる。
【図面の簡単な説明】
【図１】本実施形態の画像生成システムの機能ブロック図の例である。
【図２】従来の手法の問題点について説明するための図である。
【図３】図３（Ａ）、（Ｂ）も、従来の手法の問題点について説明するための図である。
【図４】本実施形態の手法について説明するための図である。
【図５】本実施形態の処理について説明するためのフローチャートである。
【図６】図６（Ａ）、（Ｂ）は、照明モデルについて説明するための図である。
【図７】図７（Ａ）、（Ｂ）は、内積と減衰率の関係について説明するための図である。
【図８】本実施形態により生成された画像の例を示す図である。
【図９】本実施形態により生成された画像の例を示す図である。
【図１０】本実施形態により生成された画像の例を示す図である。
【図１１】本実施形態により生成された画像の例を示す図である。
【図１２】高速なシェーディング処理を可能にする画像生成システムの機能ブロック図の例である。
【図１３】図１２の画像生成システムの動作を説明するためのフローチャートである。
【図１４】図１２の画像生成システムの動作を説明するためのフローチャートである。
【図１５】図１２の画像生成システムの動作を説明するためのフローチャートである。
【図１６】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図１７】図１７（Ａ）、（Ｂ）、（Ｃ）は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【符号の説明】
ＯＢ１、ＯＢ２　　オブジェクト
ＬＳ１〜ＬＳ６　　光源
ＶＬ１〜ＶＬ６　　光源ベクトル
ＶＰ　　　　　　　第１のベクトル
１００　処理部
１１０　移動・動作処理部
１１２　オブジェクト空間設定部
１１４　視点制御部
１２０　画像生成部
１２２　フレーム画像生成部
１２４　テクスチャマッピング部
１２６　隠面消去部
１２８　シェーディング部
１３０　音生成部
１６０　操作部
１７０　記憶部
１７２　主記憶部
１７４　ＶＲＡＭ
１８０　情報記憶媒体
１９０　表示部
１９２　音出力部
１９４　携帯型情報記憶装置
１９６　通信部
２００　色（原色）バッファ
２０２　法線バッファ
２０４　座標バッファ
２０６　Ｚバッファ
２０８　輝度（光源色）バッファ
２１０　フレームバッファ
２１２　ステンシルバッファ
２１４　テクスチャ記憶部
【図１】
2004070669.tif 000014
【図２】
2004070669.tif 000015
【図３】
2004070669.tif 000016
【図４】
2004070669.tif 000017
【図５】
2004070669.tif 000018
【図６】
2004070669.tif 000019
【図７】
2004070669.tif 000020
【図８】
2004070669.tif 000021
【図９】
2004070669.tif 000022
【図１０】
2004070669.tif 000023
【図１１】
2004070669.tif 000024
【図１２】
2004070669.tif 000025
【図１３】
2004070669.tif 000026
【図１４】
2004070669.tif 000027
【図１５】
2004070669.tif 000028
【図１６】
2004070669.tif 000029
【図１７】
2004070669.tif 000030