(57)【特許請求の範囲】
【請求項１】
画像生成を行う画像生成システムであって、
光源の強度情報として色成分の他にα値成分を持たせ、該光源の強度情報のα値成分と該光源の強度情報の関数である照明モデルとに基づいて、オブジェクトにα値を設定するための処理を行うα値設定手段と、
α値が設定されたオブジェクトの画像を生成する手段とを含み、
前記光源として点光源が使用され、
前記α値設定手段が、
前記点光源とオブジェクトとの距離に応じて、オブジェクトに設定されるα値を変化させることを特徴とする画像生成システム。
【請求項２】
請求項１において、
プレーヤの視点又は移動オブジェクトがオブジェクト空間で移動する場合に、該視点の移動又は該移動オブジェクトの移動に追従させて、強度情報としてα値成分を有する前記光源を移動させることを特徴とする画像生成システム。
【請求項３】
請求項２において、
移動する前記光源を用いて、オブジェクトのα値が設定され、該オブジェクトの全部又は一部が透明又は半透明にされることを特徴とする画像生成システム。
【請求項４】
請求項３において、
強度情報としてα値成分を有する前記光源によりα値が設定されるオブジェクトのプリミティブ面が、視点から見て裏向きの場合には、該プリミティブ面の描画処理が省略されることを特徴とする画像生成システム。
【請求項５】
請求項１乃至４のいずれかにおいて、
オブジェクトに使用される光源として複数の光源の中から強度情報としてα値成分を有する光源が選択され、選択された光源を用いて、該オブジェクトにα値が設定されることを特徴とする画像生成システム。
【請求項６】
請求項５において、
プレーヤが操作する移動オブジェクトについては、強度情報としてα値成分を有する光源が非選択となる一方で、プレーヤが操作する移動オブジェクト以外のオブジェクトについて、強度情報としてα値成分を有する光源が選択され、選択された該光源を用いて該オブジェクトにα値が設定されることを特徴とする画像生成システム。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記α値成分が、オブジェクトをより不透明にする負の値に設定され、負の値のα値成分と前記照明モデルとに基づいて、オブジェクトのα値が設定されることを特徴とする画像生成システム。
【請求項８】
光源の強度情報として色成分の他にα値成分を持たせ、該光源の強度情報のα値成分と該光源の強度情報の関数である照明モデルとに基づいて、オブジェクトにα値を設定するための処理を行うα値設定手段と
α値が設定されたオブジェクトの画像を生成する手段としてコンピュータを機能させ、
前記光源として点光源が使用され、
前記α値設定手段が、
前記点光源とオブジェクトとの距離に応じて、オブジェクトに設定されるα値を変化させることを特徴とするプログラム。
【請求項９】
請求項８において、
プレーヤの視点又は移動オブジェクトがオブジェクト空間で移動する場合に、該視点の移動又は該移動オブジェクトの移動に追従させて、強度情報としてα値成分を有する前記光源を移動させることを特徴とするプログラム。
【請求項１０】
請求項９において、
移動する前記光源を用いて、オブジェクトのα値が設定され、該オブジェクトの全部又は一部が透明又は半透明にされることを特徴とするプログラム。
【請求項１１】
請求項１０において、
強度情報としてα値成分を有する前記光源によりα値が設定されるオブジェクトのプリミティブ面が、視点から見て裏向きの場合には、該プリミティブ面の描画処理が省略されることを特徴とするプログラム。
【請求項１２】
請求項８乃至１１のいずれかにおいて、
オブジェクトに使用される光源として複数の光源の中から強度情報としてα値成分を有する光源が選択され、選択された光源を用いて、該オブジェクトにα値が設定されることを特徴とするプログラム。
【請求項１３】
請求項１２において、
プレーヤが操作する移動オブジェクトについては、強度情報としてα値成分を有する光源が非選択となる一方で、プレーヤが操作する移動オブジェクト以外のオブジェクトについて、強度情報としてα値成分を有する光源が選択され、選択された該光源を用いて該オブジェクトにα値が設定されることを特徴とするプログラム。
【請求項１４】
請求項８乃至１３のいずれかにおいて、
前記α値成分が、オブジェクトをより不透明にする負の値に設定され、負の値のα値成分と前記照明モデルとに基づいて、オブジェクトのα値が設定されることを特徴とするプログラム。
【請求項１５】
コンピュータにより読み取り可能な情報記憶媒体であって、請求項８乃至１４のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
従来より、仮想的な３次元空間であるオブジェクト空間内において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。ガンゲームを楽しむことができる画像生成システムを例にとれば、プレーヤ（操作者）は、銃などを模して作られたガン型コントローラ（シューティングデバイス）を用いて、画面に映し出される敵キャラクタ（敵オブジェクト）などの標的をシューティングすることで、３次元ゲームを楽しむ。
【０００３】
このような画像生成システムでは、プレーヤの仮想現実感の向上のために、よりリアルな画像を生成することが重要な技術的課題になっている。従って、オブジェクトの陰影づけについても、よりリアルに表現できることが望まれる。
【０００４】
この場合、このようなオブジェクトのリアルな陰影づけは、種々の照明モデル（シェーディングモデル）を用いたシェーディング処理（照光処理）を行うことで実現される。
【０００５】
しかしながら、これまでのシェーディング処理では、照明モデルにおける光の強度情報の成分として、色成分しか考慮されていなかった。
【０００６】
また、自然界には正の輝度（強度）しか存在しないため、照明モデルにおいても、強度情報の色成分が正の値であることが前提となっていた。
【０００７】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、照明モデルを有効利用して効果的な映像表現を実現できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するために、本発明は、画像生成を行う画像生成システムであって、光源の強度情報として色成分の他にα値成分を持たせ、該光源の強度情報のα値成分と照明モデルとに基づいて、オブジェクトにα値を設定するための処理を行う手段と、α値が設定されたオブジェクトの画像を生成する手段とを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム（情報記憶媒体又は搬送波に具現化されるプログラム）であって、上記手段をコンピュータに実現させる（上記手段としてコンピュータを機能させる）ことを特徴とする。また本発明に係る情報記憶媒体は、コンピュータにより読み取り可能（使用可能）な情報記憶媒体であって、上記手段をコンピュータに実現させる（上記手段としてコンピュータを機能させる）ためのプログラムを含むことを特徴とする。
【０００９】
本発明によれば、光源の強度情報として、色成分の他にα値成分が用意される。そして、このα値成分と照明モデル（α値用に拡張された照明モデル）に基づいて、オブジェクト（オブジェクトを構成するプリミティブ面、プリミティブ面の各頂点又はプリミティブ面の各点等）にα値が設定される。そして、このα値に基づいて、オブジェクトに関するα合成処理又はマスク処理等が行われ、オブジェクトの画像が生成される。
【００１０】
このように本発明では、照明モデル（照明モデル式）がα値用に拡張されてオブジェクトのα値の設定処理が行われるため、少ない処理負荷で効果的な映像表現を実現できる。
【００１１】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、プレーヤの視点又は移動オブジェクトがオブジェクト空間で移動する場合に、該視点の移動又は該移動オブジェクトの移動に追従させて、強度情報としてα値成分を有する前記光源を移動させることを特徴とする。
【００１２】
このようにすれば、移動する光源を用いて、オブジェクトへのα値設定処理を行えるようになり、多様な画像表現を実現できる。
【００１３】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、移動する前記光源を用いて、視点又は移動オブジェクトの近傍に位置するオブジェクトのα値が設定され、該オブジェクトの全部又は一部が透明又は半透明にされることを特徴とする。
【００１４】
このようにすれば、透明又は半透明になったオブジェクトを介してその向こう側を見ることができるようになり、プレーヤがゲームプレイし易いゲーム環境を提供できる。
【００１５】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、強度情報としてα値成分を有する前記光源によりα値が設定されるオブジェクトのプリミティブ面が、視点から見て裏向きの場合には、該プリミティブ面の描画処理が省略されることを特徴とする。
【００１６】
このようにすれば、裏向きのプリミティブ面が障害となって、その向こう側が見なくなってしまうなどの問題を防止できる。
【００１７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、前記光源として点光源が使用され、前記点光源とオブジェクトとの距離に応じて、オブジェクトに設定されるα値を変化させることを特徴とする。
【００１８】
このようにすれば、点光源とオブジェクトとの距離（例えば距離のべき乗の逆数）に応じてオブジェクトのα値が変化するようになり、より効果的な映像表現を実現できる。
【００１９】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、オブジェクトに使用される光源として複数の光源の中から強度情報としてα値成分を有する光源が選択され、選択された光源を用いて、該オブジェクトにα値が設定されることを特徴とする。
【００２０】
このようにすれば、複数のオブジェクトのうち例えば第１のオブジェクトについては、強度情報としてα値成分を有する光源を用いたα値設定処理を行わない一方で、第２のオブジェクトについては、この光源を用いたα値設定処理を行うようにすることが可能になる。
【００２１】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、プレーヤが操作する移動オブジェクトについては、強度情報としてα値成分を有する光源が非選択となる一方で、プレーヤが操作する移動オブジェクト以外のオブジェクトについて、強度情報としてα値成分を有する光源が選択され、選択された該光源を用いて該オブジェクトにα値が設定されることを特徴とする。
【００２２】
このようにすれば、プレーヤが操作する移動オブジェクトが透明又は半透明になってしまう事態を防止でき、より自然な画像を生成できる。
【００２３】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、前記α値成分が、オブジェクトをより不透明にする負の値に設定され、負の値のα値成分と照明モデルとに基づいて、オブジェクトのα値が設定されることを特徴とする。
【００２４】
このようにすれば、例えば、この負の値のα値成分を有する光源により、透明なオブジェクトがその姿を表してくるような画像を生成できるようになる。
【００２５】
また本発明は、画像生成を行う画像生成システムであって、光源の強度情報の色成分を負の値に設定し、負の値の色成分と照明モデルとに基づいて、オブジェクトのシェーディング処理を行う手段と、シェーディング処理が施されたオブジェクトの画像を生成する手段とを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム（情報記憶媒体又は搬送波に具現化されるプログラム）であって、上記手段をコンピュータに実現させる（上記手段としてコンピュータを機能させる）ことを特徴とする。また本発明に係る情報記憶媒体は、コンピュータにより読み取り可能（使用可能）な情報記憶媒体であって、上記手段をコンピュータに実現させる（上記手段としてコンピュータを機能させる）ためのプログラムを含むことを特徴とする。
【００２６】
本発明によれば、光源の強度情報として、負の値の色成分が用意される。そして、この負の値の色成分と照明モデルに基づいて、オブジェクトのシェーディング処理が行われ、オブジェクトの画像が生成される。
【００２７】
このように本発明では、負の値の色成分を用いてオブジェクトの画像が生成されるため、現実世界の事象には無い映像表現を実現でき、ゲーム演出効果を高めることができる。
【００２８】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、プレーヤの視点又は移動オブジェクトがオブジェクト空間で移動する場合に、該視点の移動又は該移動オブジェクトの移動に追従させて、強度情報の色成分が負の値に設定された前記光源を移動させることを特徴とする。
【００２９】
このようにすれば、移動する光源を用いて、負の値の色成分と照明モデルを用いたシェーディング処理を行えるようになるため、多様な画像表現を実現できる。
【００３０】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、強度情報の色成分が負の値に設定された前記光源を用いて、前記移動オブジェクトの影が生成されることを特徴とする。
【００３１】
このようにすれば、負の値の色成分を有する光源を用意するだけで、移動オブジェクトの影を生成することが可能になり、少ない処理負荷でリアルな画像を生成できる。
【００３２】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体は、オブジェクトに使用する光源として複数の光源の中から強度情報の色成分が負の値に設定された光源が選択され、選択された光源を用いて、該オブジェクトのシェーディング処理が行われることを特徴とする。
【００３３】
このようにすれば、複数のオブジェクトのうち例えば第１のオブジェクトについては、強度情報として負の色成分を有する光源を用いたシェーディング処理を行わない一方で、第２のオブジェクトについては、この光源を用いたシェーディング処理を行うようにすることが可能になる。
【００３４】
【発明の実施の形態】
以下、本実施形態について図面を用いて説明する。
【００３５】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を何ら限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００３６】
１．構成
図１に、本実施形態の画像生成システム（画像生成装置、ゲームシステム）の機能ブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部１００を含めばよく（或いは処理部１００と記憶部１７０を含めばよく）、それ以外のブロックについては任意の構成要素とすることができる。
【００３７】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、マイク、或いは筺体などのハードウェアにより実現できる。
【００３８】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭなどのハードウェアにより実現できる。
【００３９】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本発明（本実施形態）の種々の処理を行う。即ち情報記憶媒体１８０には、本発明（本実施形態）の手段（特に処理部１００に含まれるブロック）をコンピュータに実現（実行、機能）させるためのプログラムが格納され、このプログラムは、例えば１又は複数のモジュール（オブジェクト指向におけるオブジェクトも含む）を含む。
【００４０】
なお、情報記憶媒体１８０に格納される情報の一部又は全部は、システムへの電源投入時等に記憶部１７０に転送されることになる。また情報記憶媒体１８０には、本発明の処理を行うためのプログラム、画像データ、音データ、表示物の形状データ、本発明の処理を指示するための情報、或いはその指示に従って処理を行うための情報などを含ませることができる。
【００４１】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、或いはＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００４２】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【００４３】
携帯型情報記憶装置１９４は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【００４４】
通信部１９６は、外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ、或いは通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００４５】
なお本発明（本実施形態）の各手段を実現（実行、機能）するためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０に配信するようにしてもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含まれる。
【００４６】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。この場合、処理部１００は、記憶部１７０内の主記憶部１７２をワーク領域として使用して、各種の処理を行う。
【００４７】
ここで、処理部１００が行う処理としては、コイン（代価）の受け付け処理、各種モードの設定処理、ゲームの進行処理、選択画面の設定処理、オブジェクト（１又は複数のプリミティブ）の位置や回転角度（Ｘ、Ｙ又はＺ軸回り回転角度）を求める処理、オブジェクトを動作させる処理（モーション処理）、視点の位置（仮想カメラの位置）や視線角度（仮想カメラの回転角度）を求める処理、マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置する処理、ヒットチェック処理、ゲーム結果（成果、成績）を演算する処理、複数のプレーヤが共通のゲーム空間でプレイするための処理、或いはゲームオーバー処理などを考えることができる。
【００４８】
処理部１００は、移動・動作演算部１１０、仮想カメラ（視点）制御部１１２、シェーディング処理部１１４、画像生成部１２０、音生成部１３０を含む。なお、処理部１００は、これらの全ての機能ブロックを含む必要はない。
【００４９】
ここで、移動・動作演算部１１０は、キャラクタ、車などのオブジェクト（移動オブジェクト）の移動情報（位置、回転角度）や動作情報（オブジェクトの各パーツの位置、回転角度）を演算するものであり、例えば、操作部１６０によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、オブジェクトを移動させたり動作（モーション、アニメーション）させたりする処理を行う。
【００５０】
より具体的には、移動・動作演算部１１０は、オブジェクトの位置や回転角度を例えば１フレーム（１／６０秒、１／３０秒等）毎に変化させる。例えば（ｋ−１）フレームでのオブジェクトの位置、回転角度をＰk-1、θk-1とし、オブジェクトの１フレームでの位置変化量（速度）、回転変化量（回転速度）を△Ｐ、△θとする。するとｋフレームでのオブジェクトの位置Ｐk、回転角度θkは例えば下式（１）、（２）のように求められる。
【００５１】
Ｐk＝Ｐk-1＋△Ｐ              （１）
θk＝θk-1＋△θ              （２）
仮想カメラ（視点）制御部１１２は、オブジェクト空間内の所与（任意）の視点での画像を生成するための仮想カメラ（視点）を制御する処理を行う。即ち、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転（Ｘ、Ｙ、Ｚ軸回りでの回転）を制御する処理（視点位置や視線方向を制御する処理）等を行う。
【００５２】
例えば、仮想カメラにより移動オブジェクトを後方から撮影する場合には、移動オブジェクトの位置又は回転の変化に仮想カメラ（視点）が追従するように、仮想カメラの位置又は回転（仮想カメラの方向）を制御することが望ましい。この場合には、移動・動作演算部１１０で得られた移動オブジェクトの位置、方向又は速度などの情報に基づいて、仮想カメラを制御することになる。或いは、仮想カメラを、予め決められた移動経路で移動させながら予め決められた角度で回転させるようにしてもよい。この場合には、仮想カメラの位置（移動経路）や回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御することになる。
【００５３】
シェーディング処理部１１４は、オブジェクトに陰影（影）をつけるための処理を行う。より具体的には、光源の属性情報（光源の強度情報や、光源の位置又は方向情報等）とオブジェクトの属性情報（法線ベクトル又は反射係数等）に基づいてシェーディング処理を行う。
【００５４】
ここで、シェーディング処理は、例えばオブジェクトの各点（ピクセル、ドット）での光の色（強度、輝度、ＲＧＢ、ＹＣｂＣｒ、ＹＵＶ、ＹＩＱ）を決定する処理と定義できる。そして、このシェーディング処理は、実世界での照明現象を模擬した数学的なモデルである照明モデルを用いて行われる。この照明モデルとしては、実世界現象のモデル化の態様に応じて、ランバード（Lambert）、フォン（Phong）、ブリン（Blinn）などの種々のモデルがある。また、プリミティブ面（ポリゴン、曲面等）の陰影づけを滑らかにして、プリミティブ面の境界を目立たなくする手法として、グーロー（Gouraud）シェーディング、フォン（Phong）シェーディングなどの種々のスムーズシェーディング手法がある。
【００５５】
本実施形態では、光源の強度情報（輝度情報）として色成分（例えばＲＧＢ、ＹＣｂＣｒ、ＹＵＶ又はＹＩＱ等）の他に、α値成分を持たせている。より具体的には、照明モデルの式として、強度情報のＲＧＢ成分を求める第１〜第３の式以外に、α値成分を求める第４の式を用意する。
【００５６】
そしてシェーディング処理部１１４が含むα値設定部１１６は、このα値成分と照明モデルに基づいてオブジェクトに対してα値を設定する。より具体的には、照明モデルの第４の式に強度情報のα値成分を代入し、オブジェクトを構成するプリミティブ面のα値、プリミティブ面の頂点のα値、或いはプリミティブ面の各点（ピクセル等）のα値を求める。そして、この求められたα値に基づいて、α合成処理（αブレンディング、α加算又はα減算等）やマスク処理などのα値を用いた種々の処理が行われることになる。
【００５７】
αブレンディングを例にとれば以下のような処理が行われる。
【００５８】
ＲQ＝（１−α）×Ｒ1＋α×Ｒ2    （３）
ＧQ＝（１−α）×Ｇ1＋α×Ｇ2    （４）
ＢQ＝（１−α）×Ｂ1＋α×Ｂ2    （５）
ここで、Ｒ1、Ｇ1、Ｂ1は、描画バッファ１７４に既に描画されている画像（背景画像）の色（輝度）のＲ、Ｇ、Ｂ成分であり、Ｒ2、Ｇ2、Ｂ2は、描画バッファ１７４に描画するオブジェクト（プリミティブ）の色のＲ、Ｇ、Ｂ成分である。また、ＲQ、ＧQ、ＢQは、αブレンディングにより得られる画像の色のＲ、Ｇ、Ｂ成分である。
【００５９】
なお、α値（Ａ値）は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして使用できる。
【００６０】
また本実施形態のシェーディング処理部１１４では、光源の強度情報の色成分を負の値に設定し、負の値の色成分と照明モデルとに基づいて、オブジェクトのシェーディング処理を行っている。即ち、現実の世界においては色成分は正の値しかとり得ないが、本実施形態では、視覚的な映像効果を狙って、強度情報の色成分を負の値に設定する。このようにすることで、オブジェクトを黒いライトで照らすなどの映像効果を実現できる。
【００６１】
画像生成部１２０は、処理部１００で行われる種々の処理の結果に基づいて画像処理を行い、ゲーム画像を生成し、表示部１９０に出力する。例えば、いわゆる３次元のゲーム画像を生成する場合には、まず、座標変換、クリッピング処理、透視変換、或いは光源計算等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点（構成点）に付与される位置座標、テクスチャ座標、色（輝度）データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、ジオメトリ処理後のオブジェクト（１又は複数プリミティブ面）の画像が、描画バッファ１７４（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画される。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成されるようになる。
【００６２】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００６３】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００６４】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて生成してもよい。
【００６５】
２．本実施形態の特徴
次に本実施形態の特徴について図面を用いて説明する。
【００６６】
２．１  照明モデル
まず照明モデルについて説明する。
【００６７】
現実世界での照光現象をシミュレートするための数学的なモデルとして、この種の画像生成システムでは種々の照明モデルが用いられている。例えば光源が平行光の場合の照明モデルの代表例は下式のようになる。
【００６８】
Ｉ＝ＫA×ＩA＋ＫD×ＩL×ｃｏｓθ        （６）
ここで、Ｉは得られる光の強度情報であり、ＩAは環境光の強度情報であり、ＩLは光源の強度情報である。また、ＫAは環境光に対するプリミティブ面（ポリゴン等）の反射係数情報であり、ＫDは光源からの光に対するプリミティブ面の反射係数（拡散反射係数）情報である。また、θは、図２（Ａ）に示すように、光源ＬＳの方向ベクトルＬとプリミティブ面の法線ベクトルＮ（例えば頂点や面に設定された法線ベクトル）とのなす角度である。
【００６９】
そして、色つきの光の場合には、上式（６）は、下式のようにＲＧＢ成分毎に用意されることになる。
【００７０】
ＩR＝ＫRA×ＩRA＋ＫRD×ＩRL×ｃｏｓθ    （７）
ＩG＝ＫGA×ＩGA＋ＫGD×ＩGL×ｃｏｓθ    （８）
ＩB＝ＫBA×ＩBA＋ＫBD×ＩBL×ｃｏｓθ    （９）
ここで、ＩR、ＩG、ＩBは得られる光の強度情報（輝度）のＲＧＢ成分（広義には色成分）であり、ＩRA、ＩGA、ＩBAは環境光の強度情報のＲＧＢ成分であり、ＩRL、ＩGL、ＩBLは光源の強度情報のＲＧＢ成分である。また、ＫRA、ＫGA、ＫBAは環境光に対するプリミティブ面の反射係数情報のＲＧＢ成分であり、ＫRD、ＫGD、ＫBDは光源からの光に対するプリミティブ面の反射係数情報のＲＧＢ成分である。
【００７１】
なお、点光源の場合には図２（Ｂ）に示すように、オブジェクト上の点Ｐ（例えば頂点）と光源ＬＳとの間の距離ｒも考慮に入れるようにする。即ち、点光源の場合には上式（７）〜（９）に代えて下式のような照明モデルを採用する。
【００７２】
ＩR＝ＫRA×ＩRA＋ＫRD×ＩRL×ｃｏｓθ×（１／ｒn）  （１０）
ＩG＝ＫGA×ＩGA＋ＫGD×ＩGL×ｃｏｓθ×（１／ｒn）  （１１）
ＩB＝ＫBA×ＩBA＋ＫBD×ＩBL×ｃｏｓθ×（１／ｒn）  （１２）
ここで、ｎは距離ｒのべき数であり、例えばｎ＝２に設定できる。
【００７３】
なお、上式（７）〜（１２）は、環境光（アンビエント光）と拡散光（ディフューズ光）だけを考慮したランバードの照明モデルであるが、環境光、拡散光に加えて鏡面反射光（スペキュラー光）も考慮するフォンの照明モデルを採用してもよい。或いはブリンの照明モデルやレイトレーシング手法を採用してもよい。
【００７４】
また、例えばθが９０度より大きくなり、ｃｏｓθが負になった場合には、ｃｏｓθを０にクランプすることが望ましい。
【００７５】
本実施形態では上式（７）〜（１２）で得られた色成分に基づいてオブジェクトの画像を生成している。
【００７６】
例えばフラットシェーディングの場合には、上式（７）〜（１２）による色成分（ＲＧＢ成分）の計算が１つのプリミティブ面（ポリゴン等）につき１回行われる。そして、得られた色成分がプリミティブ面の内部の全ての点（ピクセル、ドット）の色成分に設定され、プリミティブ面にマッピングされるテクスチャの色成分と合成（積算、加算又はブレンド等）される。
【００７７】
またグーローシェーディングの場合には、プリミティブ面の頂点に設定された法線ベクトルに基づいて、上式（７）〜（１２）による色成分の計算がプリミティブ面の各頂点について行われる。そして、得られた各頂点の色成分を補間することでプリミティブ面の内部の各点（ピクセル、ドット）での色成分が求められ、求められた各点の色成分がテクスチャの色成分と合成される。
【００７８】
またフォンシェーディングの場合には、プリミティブ面の頂点に設定された法線ベクトルが補間されて、プリミティブ面の内部の各点での法線ベクトルが求められる。そして、求められた各点での法線ベクトルに基づいて、上式（７）〜（１２）による色成分の計算がプリミティブ面の各点について行われ、得られた各点の色成分がテクスチャの色成分と合成される。
【００７９】
このようにして本実施形態では、プリミティブ面の各点の色が決定され（シェーディング処理が行われ）、プリミティブ面により構成されるオブジェクトの画像が生成されることになる。
【００８０】
２．２  α値成分の拡張
上式（７）〜（１２）に示すように、これまでの照明モデルはＲＧＢ成分（広義には色成分）の３成分しか有していなかった。
【００８１】
本実施形態では、この従来の３成分の照明モデルをＲＧＢαの４成分に拡張している。
【００８２】
具体的には、平行光源の場合には上式（７）〜（９）に加えて例えば下式のようなα値成分に関する照明モデル式を導入する。
【００８３】
Ｉα＝ＫαA×ＩαA＋ＫαD×ＩαL×ｃｏｓθ               （１３）
同様に、点光源の場合には上式（１０）〜（１２）に加えて例えば下式のようなα値成分に関する照明モデル式を導入する。
【００８４】
Ｉα＝ＫαA×ＩαA＋ＫαD×ＩαL×ｃｏｓθ×（１／ｒn）  （１４）
上式において、ＩαAは環境光の強度情報のα値成分であり、ＩαLは光源の強度情報のα値成分である。また、ＫαAは環境光に対するプリミティブ面の反射係数情報のα値成分であり、ＫαDは光源からの光に対するプリミティブ面の反射係数（拡散反射係数）情報のα値成分である。なお、上式（１３）、（１４）において、環境光の強度情報についてはＲＧＢαの４成分に拡張しないようにしてもよい。或いは、環境光の項（ＫαA×ＩαA）については零に設定して無視するようにしてもよい。
【００８５】
このように本実施形態では、光源の強度情報の成分として、色成分ＩRL、ＩGL、ＩBLの他にα値成分ＩαLを持たせている。そして、このα値成分ＩαLと上式（１３）又は（１４）の照明モデル式とに基づいてＩα（α値）を求め、このＩαをオブジェクト（オブジェクトのプリミティブ面の頂点、プリミティブ面の内部の点等）に設定している。そして、設定されたＩαに基づいて、半透明処理やマスク処理などのα値を用いた処理を行う。このようにすることで、例えば図３に示すような映像効果を得ることができる。
【００８６】
即ち図３では、光源ＬＳは、強度情報（属性情報）としてα値成分を有する擬似的な点光源になっている。そして図３では、この擬似的な光源ＬＳからのα値の光に照らされて、オブジェクトＯＢの一部が透明又は半透明になっている。つまり、上式（１４）の式にしたがって、光源ＬＳに近づくにつれて徐々に透明になるように、オブジェクトＯＢの各部分のうち光源ＬＳの周囲の部分が、透明又は半透明に設定される。
【００８７】
これにより、オブジェクトＯＢの近くに光源ＬＳを配置するだけという簡素な処理で、オブジェクトＯＢ（例えば壁）を透明化したり、ＯＢに穴をあける処理が可能になり、従来に無い映像効果を得ることができる。
【００８８】
しかも本実施形態では、図３に示すようなオブジェクトＯＢの透明化処理や穴あけ処理を、シェーディング処理用のプログラム（照明モデルの計算プログラム）やハードウェア（シェーディング・プロセッサ、マトリクス計算プロセッサ）を有効利用して実現できる。従って、プログラムの開発期間をそれほど延ばすことなく、またハードウェアの処理負荷をそれほど増やすことなく、オブジェクトの透明化処理や穴あけ処理を実現できる。
【００８９】
例えば、４行４列のマトリクス計算プロセッサを用いる場合には、ＲＧＢの３成分を計算する場合とＲＧＢαの４成分を計算する場合とで、処理時間・処理負荷はほとんど変わらない。従って、照明モデルをＲＧＢαに拡張したとしても、マトリクス計算プロセッサの処理負荷は変わらないため、少ない処理負荷でオブジェクトの透明化処理や穴あけ処理を実現できるようになる。
【００９０】
２．３  視点又は移動オブジェクトへのα値付き光源の追従
さて、３次元ゲームにおいては、例えば図４（Ａ）に示すように、プレーヤの操作する移動オブジェクトＯＢ１（キャラクタ、車、戦車又はロボット等）とプレーヤの視点ＶＰ（仮想カメラ）との間に、障害物となるオブジェクトＯＢ２が入り込む事態が生じる場合がある。このような事態が生じると、図４（Ｂ）に示すように、プレーヤの視界がオブジェクトＯＢ２によりふさがれてしまい、移動オブジェクトＯＢ１やその周辺がプレーヤから見えなくなってしまうという問題が生じる。
【００９１】
このような問題を解決する従来技術として、例えば特開平９−５０５４１号公報に開示される技術が知られている。この従来技術では、視点ＶＰと移動オブジェクトＯＢ１の間に障害物となるオブジェクトＯＢ２が入り込んだか否かを判定して、入り込んだと判定した場合にはオブジェクトＯＢ２を透明又は半透明にすることで、上記問題を解決している。
【００９２】
しかしながら、この従来技術では、視点ＶＰの位置、移動オブジェクトＯＢ１の位置、障害物となるオブジェクトＯＢ２の位置という３つの位置に基づき、オブジェクトＯＢ２が入り込んだか否かの判定を行わなければならない。従って、処理負荷が過大になるという問題点がある。
【００９３】
そこで本実施形態では、図４（Ａ）、（Ｂ）のオブジェクトＯＢ２を透明又は半透明にする処理を、図３に示すような擬似的な光源ＬＳ（強度情報としてα値成分を有する光源。以下、α値付きの光源と呼ぶ）を利用して実現している。
【００９４】
より具体的には図５に示すように、α値付きの光源ＬＳをプレーヤの視点ＶＰ（或いはプレーヤの操作する移動オブジェクト）に追従させて移動させる。即ち、α値付きの光源ＬＳを視点ＶＰの近傍（例えば前方）に配置し、視点ＶＰが上下左右方向に移動した場合には、その移動に追従させて光源ＬＳも上下左右方向に移動させる。
【００９５】
このようにすると図５に示すように、光源ＬＳの近傍に位置するオブジェクトＯＢ２（視点又は移動オブジェクトの近傍に位置するオブジェクト）は、この光源ＬＳからのα値の光により、透明又は半透明に設定されるようになる。
【００９６】
例えば図６（Ａ）では、オブジェクトＯＢ２が障害物となって、プレーヤの操作する移動オブジェクトＯＢ１（キャラクタ）がプレーヤの視点から見えなくなっている。このような場合にも、図５に示すようなα値付きの光源ＬＳをプレーヤの視点ＶＰの近傍に配置し、視点ＶＰに追従させて移動させることで、図６（Ｂ）に示すように移動オブジェクトＯＢ１がプレーヤの視点から見えるようになる。これにより、図４（Ａ）、（Ｂ）で説明した問題が発生するのを防止できる。
【００９７】
また、プレーヤの視点にではなく、プレーヤの操作する移動オブジェクトにα値付きの擬似的な光源を追従させてもよい。
【００９８】
例えば図７（Ａ）、（Ｂ）では、移動オブジェクトＯＢ１（キャラクタ）の近傍にα値付きの光源ＬＳが配置され、ＯＢ１が移動すると光源ＬＳもそれに追従して移動するようになっている。
【００９９】
そして、図７（Ａ）では、移動オブジェクトＯＢ１はオブジェクトＯＢ２（障害物）の手前側に隠れている。この場合、移動オブジェクトＯＢ１（点光源ＬＳ）とオブジェクトＯＢ２との距離が離れているため、オブジェクトＯＢ２は透明又は半透明に設定されていない。
【０１００】
これに対して、図７（Ｂ）では、移動オブジェクトＯＢ１（点光源ＬＳ）とオブジェクトＯＢ２との距離が近づいたため、オブジェクトＯＢ２が透明又は半透明に設定される。これにより、移動オブジェクトＯＢ１を操作するプレーヤは、オブジェクトＯＢ２の向こう側の様子を把握できるようになる。
【０１０１】
即ち、画像のリアル性を重視するならば、図７（Ｂ）のような場合にオブジェクトＯＢ２の向こう側が見えることは、あまり望ましくない。
【０１０２】
しかしながら、この種の３次元ゲームは、自分の周りの状況を把握することが難しくゲームプレイが難しいため、初心者やゲーム操作に自信のない人に敬遠されてしまうという欠点がある。したがって、画像のリアル性をある程度犠牲にしても、プレーヤがゲームプレイしやすいゲーム環境を提供することが望ましい。
【０１０３】
本実施形態では、図７（Ｂ）のような場合にオブジェクトＯＢ２が透明又は半透明になるため、プレーヤは、オブジェクトＯＢ２の向こう側の状況を把握できるようになる。この結果、プレーヤが更にゲームプレイしやすいゲーム環境を提供できる。
【０１０４】
なお、以上のように障害物となるオブジェクトを透明又は半透明にする光源としては、オブジェクトに設定されるα値を、光源とオブジェクトとの距離に応じて変化させることができる点光源であることが望ましい。より具体的には図８（Ａ）に示すような点光源ＬＳでは、点光源ＬＳとオブジェクト（オブジェクトの頂点、代表点等）との距離をｒとした場合に、オブジェクトに設定されるα値が、例えば（１／ｒn）に比例するようになる。これにより、視点や移動オブジェクトの近傍に位置するオブジェクトだけを透明又は半透明に設定することが可能になる。
【０１０５】
また、点光源を用いれば、図８（Ｂ）に示すように、オブジェクトの各部分と点光源ＬＳとの距離が近づくにつれて、オブジェクトの各部分が徐々に透明になるような画像を生成でき、より自然な画像を生成できる。
【０１０６】
なお、光源とオブジェクトとの距離が所与のしきい値より小さくなり、α値が所与のしきい値より大きくなった場合（α値が大きいほどオブジェクトが透明になると仮定した場合）に、そのα値が設定されるオブジェクトの全体を完全に透明に設定するようにしてもよい。
【０１０７】
２．４  裏向きのプリミティブ面の描画省略
本実施形態では、α値付きの光源によりα値が設定されるオブジェクトのプリミティブ面（ポリゴン、自由曲面等）が、視点から見て裏向き（backfacing）の場合には、その描画処理を省略（カリング処理）するようにしている。
【０１０８】
例えば図９（Ａ）では、オブジェクトＯＢ２はα値付きの光源ＬＳによりそのα値が設定されている。この場合に、たとえ、表向きになっているプリミティブ面ＰＬ１が光源ＬＳからのα値の光で透明又は半透明になっても、裏向きになっているプリミティブ面ＰＬ２が描画されてしまうと、裏向きの不透明なＰＬ２がプレーヤの視点ＶＰから見えてしまう。従って、ＰＬ２の存在が障害となって、その向こう側が見なくなってしまう不具合（図６（Ａ）、図７（Ａ）参照）が生じる。
【０１０９】
本実施形態によれば、このような場合にも、カリング処理を行い、裏向きのプリミティブ面ＰＬ２の描画処理を省略しているため、上記のような不具合が生じるのを効果的に防止できる。
【０１１０】
ここで、プリミティブ面が表向きか裏向きかは、プリミティブ面に設定されている法線ベクトルが、視線方向から遠ざかる方向に向いているか否かを調べることで判断できる。より具体的には、プリミティブ面が表向きか裏向きかは、プリミティブ面の頂点に与えられる頂点番号の割り振り順序により判断できる。例えば、頂点番号の割り振り順序が図９（Ｂ）のように反時計周りの場合には、そのプリミティブ面は表向きと判断され、図９（Ｃ）のように時計回りの場合には、裏向きと判断される（この逆でもかまわない）。そして裏向きと判断されたプリミティブ面の描画データ（パケット）については、描画プロセッサに転送しないようにする。これにより裏向きのプリミティブ面の描画が省略されるようになる。
【０１１１】
２．５  α値付き光源の選択
本実施形態では、複数の光源の中からα値付きの光源を選択し、選択されたα値付きの光源を用いて、オブジェクトにα値を設定するようにしている。即ち、全てのオブジェクトに対してα値付きの光源を適用するのではなく、α値付きの光源の適用対象となるオブジェクトと、適用対象とならないオブジェクトとを選別するようにしている。
【０１１２】
例えば図１０において、α値付きの光源ＬＳからのα値の光により、プレーヤが操作する移動オブジェクトＯＢ１（自キャラクタ）が透明又は半透明に設定されてしまうと、不自然な画像がプレーヤの視点ＶＰに映し出されてしまう。即ち、自身が操作する移動オブジェクトＯＢ１が透明又は半透明になってしまい、プレーヤが不自然さを感じる。
【０１１３】
そこで本実施形態では図１０に示すように、プレーヤが操作する移動オブジェクトＯＢ１については、α値付きの光源ＬＳによるα値設定処理の対象として選択しないようにする。即ち、移動オブジェクトＯＢ１については光源ＬＳを非選択にする。これにより、プレーヤの視点ＶＰに不自然な画像が映し出されるのを防止できる。
【０１１４】
一方、移動オブジェクトＯＢ１以外のオブジェクトＯＢ２（ＯＢ１又はＶＰの近傍にあるオブジェクト）については、α値付きの光源ＬＳによるα値設定処理の対象として選択するようにする。即ち、障害物となるオブジェクトＯＢ２については光源ＬＳを選択するようにする。これにより、図６（Ａ）、図７（Ａ）に示すような画像が生成されてしまう事態を防止でき、図６（Ｂ）、図７（Ｂ）に示すような画像を生成できるようになる。この結果、プレーヤがゲームプレイし易いプレイ環境を提供できる。
【０１１５】
なお、α値付きの光源ＬＳが選択されず非使用となるオブジェクトは、図１０に示すような移動オブジェクトＯＢ１に限定されない。即ち、α値付きの光源ＬＳによりα値が設定されると不自然な画像が生成されてしまうようなオブジェクトについては、α値付きの光源ＬＳを選択せずに、非使用にすることが望ましい。
【０１１６】
２．６  負の値のα値成分
さて以上では、オブジェクトを、より透明にする正の値に、光源のα値成分が設定される場合について説明したが、α値成分を、オブジェクトを、より不透明にする負の値に設定するようにしてもよい。
【０１１７】
より具体的には上式（１３）、（１４）の照明モデルの式において、光源の強度情報のα値成分ＩαLを負の値に設定する。
【０１１８】
例えば図１１（Ａ）において、ＯＢ２は透明（又は半透明）なオブジェクトになっている。この透明なオブジェクトＯＢ２が、強度情報として負のα値成分（オブジェクトを、より透明にするα値成分）を有する光源ＬＳに照らされると、図１１（Ｂ）に示すようにＯＢ２は不透明になる。即ち、透明であったオブジェクトＯＢ２が、光源ＬＳからの負のα値成分の光に照らされて、徐々に不透明（半透明）になり、その姿を現すようになる。このようにすることで、従来には無い効果的な映像表現を少ない処理負荷で実現できる。
【０１１９】
例えば図１１（Ａ）において、オブジェクトＯＢ２にデフォルトで設定されているα値（モデルデータが含むα値）が、α値の最大値である２５６であったとする。また、α値が大きいほどオブジェクトが透明になるものとする。
【０１２０】
この場合に図１１（Ａ）では、光源ＬＳからの影響が無い（或いは少ない）ため、オブジェクトＯＢ２のα値（ＯＢ２を構成するプリミティブ面のα値）は、最大値である２５６になり、ＯＢ２は完全に透明になる。
【０１２１】
一方、図１１（Ｂ）に示すように、負のα値付きの光源ＬＳがオブジェクトＯＢ２に近づくと、光源ＬＳからの負のα値の光に照らされて、ＯＢ２のα値が最大値２５６から減少する。これにより、オブジェクトＯＢ２のα値が２５６よりも小さくなり、ＯＢ２が徐々に不透明になり、その姿を現すようになる。
【０１２２】
なお、オブジェクトＯＢ２にデフォルト値として設定するα値は、効果的な映像表現の実現のために、より大きな値（ＯＢ２を、より透明にする値）であることが望ましいが、必ずしも最大値２５６（正規化した場合は１．０）である必要はない。
【０１２３】
２．７  負の値の色成分
さて本実施形態では、光源の強度情報の色成分（ＲＧＢ成分）についても負の値に設定できるようにしている。そして、この負の値の色成分と照明モデルとに基づき、オブジェクトのシェーディング処理を行う。
【０１２４】
より具体的には上式（７）〜（１２）の照明モデルの式において、光源の強度情報の色成分ＩRL、ＩGL、ＩBLを負の値に設定する。そして、これらのＩRL、ＩGL、ＩBLを上式（７）〜（１２）の照明モデルの式に代入することで得られたＩR、ＩG、ＩBに基づいて、オブジェクトに陰影づけを施す。なお、環境光（広義には光源の１つ）の強度情報の色成分ＩRA、ＩGA、ＩBAを負の値に設定することも可能である。
【０１２５】
即ち、自然界には正の輝度（強度）しか存在しないため、上式（７）〜（１２）の照明モデルにおいても、強度情報の色成分が正の値であることが前提となっていた。また、描画バッファに書き込まれても破綻しない値を照明モデルにより作り出す必要があるため、強度情報の色成分として負の値は使用しなかった。
【０１２６】
本実施形態は、このような現実世界の常識を覆し、負の値の色成分を導入したところにその特徴がある。
【０１２７】
このように負の値の色成分を導入することで、図１２（Ａ）、（Ｂ）に示すような黒のライト（ハイライト）を実現できる。
【０１２８】
即ち図１２（Ａ）では、強度情報として負の値の色成分を有する光源ＬＳ（以下、負の色成分の光源と呼ぶ）により、オブジェクトＯＢ２が照らされている。これにより、オブジェクトＯＢ２は、負の色成分の光源ＬＳからの黒の光に照らされて、黒い陰影ＳＤ（影）が生成されるようになる。
【０１２９】
より具体的には、光源ＬＳが無い場合のオブジェクトＯＢ２のデフォルトの色成分（環境光の色成分やテクスチャの色成分）の値が、光源ＬＳからの負の色成分の光により減じられる。これにより、図１２（Ａ）に示すように、光源ＬＳの光に照らされている部分は、この光に照らされていない部分に比べて、より暗くなる。この結果、あたかも黒の光で照らされたように見える陰影ＳＤを得ることができる。
【０１３０】
なお、光源ＬＳを点光源にすれば（図８（Ａ）参照）、図１２（Ａ）、（Ｂ）に示すように、光源ＬＳとオブジェクトＯＢ２との距離が近づくほど濃くなり、離れるほど薄くなる陰影ＳＤ（影）を生成できるようになる。
【０１３１】
２．８  視点又は移動オブジェクトへの負の色成分の光源の追従
さて、本実施形態では、移動オブジェクト（或いはプレーヤの視点）に追従させて、負の色成分の光源を移動させている。これにより、例えば、移動オブジェクトの影を生成することなどが可能になる。
【０１３２】
より具体的には図１３に示すように、負の色成分の光源ＬＳをプレーヤが操作する移動オブジェクトＯＢ１に追従させて移動させる。即ち、負の色成分の光源ＬＳを移動オブジェクトＯＢ１の近傍（例えばＯＢ１を通る中心線上の位置）に配置し、ＯＢ１が上下左右方向に移動した場合には、その移動に追従させて光源ＬＳも上下左右方向に移動させる。
【０１３３】
このようにすると図１３に示すように、光源ＬＳからの黒の光により、オブジェクトＯＢ２（例えばマップオブジェクト）上に黒い影ＳＷ（陰影）を生成できるようになる。そして、移動オブジェクトＯＢ１が移動すると、これに追従して光源ＬＳも移動し、この光源ＬＳからの黒い光により生成された影ＳＷも移動するようになる。従って、あたかも移動オブジェクトＯＢ１の本当の影が生成されたかのような画像を生成でき、プレーヤの仮想現実感を増すことができる。
【０１３４】
また本実施形態によれば、負の色成分の光源ＬＳを移動オブジェクトＯＢ１に追従させるだけという簡素な処理でＯＢ１の影ＳＷを生成でき、少ない処理負荷でリアルな画像を生成できる。
【０１３５】
なお、負の色成分の光源ＬＳの配置位置は、移動オブジェクトＯＢ１の形状に応じて変化させることが望ましい。例えば、移動オブジェクトＯＢ１の幅が太い場合には、オブジェクトＯＢ２からより近い位置に光源ＬＳ（点光源）を配置する。一方、移動オブジェクトＯＢ１の幅が細い場合には、オブジェクトＯＢ２からより遠い位置に光源ＬＳ（点光源）を配置する。このようにすれば、幅の太い移動オブジェクトでは大きな影が生成され、幅の細い移動オブジェクトでは小さな影が生成されるようになり、少ない処理負荷でリアルな画像を生成できる。
【０１３６】
また、例えば図１４（Ａ）に示すように、オブジェクトＯＢ１（キャラクタ）の肘と胸の中間付近に負の色成分の光源ＬＳ１、ＬＳ２を配置すれば、図１４（Ｂ）に示すように、ＯＢ１の腋の下がほど良く暗くなるような陰影をつけることができ、より好適な画像を生成できる。
【０１３７】
例えば、現実世界の現象に忠実なシェーディング処理を行い図１４（Ｂ）に示すような画像を生成しようとすると、処理負荷が過大になるという問題がある。本実施形態によれば、図１４（Ａ）に示すように、オブジェクトＯＢ１の各部分のうち陰影づけを施したいと意図する部分付近に、負の色成分の補助的な光源ＬＳ１、ＬＳ２を配置するだけで、図１４（Ｂ）に示すような画像を生成できる。これにより、少ない処理負荷で演出効果の高い画像を生成することに成功している。
【０１３８】
２．９  負の色成分の光源の選択
本実施形態では、複数の光源の中から負の色成分の光源を選択し、選択された負の色成分の光源を用いて、オブジェクトのシェーディング処理を行うようにしている。即ち、全てのオブジェクトに対して負の色成分の光源を適用するのではなく、負の色成分の光源の適用対象となるオブジェクトと、適用対象とならないオブジェクトとを選別するようにしている。
【０１３９】
例えば図１５において、負の色成分の光源ＬＳからの黒の光により、移動オブジェクトＯＢ１（自キャラクタ）に影（陰影）がついてしまうと、不自然な画像が生成されてしまう。即ち、移動オブジェクトＯＢ１に自身の影がついてしまい、プレーヤが不自然さを感じる。
【０１４０】
そこで本実施形態では図１５に示すように、移動オブジェクトＯＢ１については、負の色成分の光源ＬＳによるシェーディング処理の対象として選択しないようにする。即ち、移動オブジェクトＯＢ１については光源ＬＳを非選択にする。これにより、移動オブジェクトＯＢ１に不自然な影がついてしまう事態を防止できる。
【０１４１】
一方、移動オブジェクトＯＢ１以外のオブジェクトＯＢ２（ＯＢ１の近傍にあるオブジェクト）については、負の色成分の光源ＬＳによるシェーディング処理の対象として選択するようにする。即ち、影をつける対象となるオブジェクトＯＢ２については光源ＬＳを選択するようにする。これにより、図１５に示すように、移動オブジェクトＯＢ２の影ＳＷを適正に生成できるようになる。
【０１４２】
なお、負の色成分の光源ＬＳが選択されず非使用となるオブジェクトは、図１５に示すような移動オブジェクトＯＢ１に限定されない。即ち、負の色成分の光源ＬＳによりシェーディング処理が行われると不自然な画像が生成されてしまうようなオブジェクト（或いはオブジェクトの部分）については、負の色成分の光源ＬＳを選択せずに、非使用にすることが望ましい。
【０１４３】
３．本実施形態の処理
次に、本実施形態の処理の詳細例について、図１６、図１７、図１８のフローチャートを用いて説明する。
【０１４４】
まず、環境光の強度のＲＧＢαの各成分（ＩRA、ＩGA、ＩBA、ＩαA）を、ＲＡＭ又は情報記憶媒体等から読み込む（ステップＳ１）。次に、ポリゴンの頂点の環境光に対する反射係数のＲＧＢαの各成分（ＫRA、ＫGA、ＫBA、ＫαA）を読み込む（ステップＳ２）。そして、環境光についてのシェーディング（照光）処理を行い、頂点の光の強度（輝度）のＲＧＢαの各成分（ＩR、ＩG、ＩB、Ｉα）を求める（ステップＳ３）。即ち、例えばＩR＝ＫRA×ＩRA、ＩG＝ＫGA×ＩGA、ＩB＝ＫBA×ＩBA、Ｉα＝ＫαA×ＩαAの計算を行う。
【０１４５】
次に、複数の光源の中から、当該ポリゴン（広義にはプリミティブ面）に使用すべき光源を選択する（ステップＳ４。図１０、図１５参照）。そして、その光源の方向ベクトルを読み込む（ステップＳ５）。
【０１４６】
次に、ポリゴンの頂点の法線ベクトルを読み込み（ステップＳ６）、ｃｏｓθ（θは方向ベクトルと法線ベクトルのなす角度）を求める（ステップＳ７）。即ち、光源の方向ベクトルとポリゴンの頂点の法線ベクトルとの内積を求める。
【０１４７】
次に、求められたｃｏｓθが０よりも小さいか否かを判断し（ステップＳ８）、小さい場合にはその光源に関する処理を終了し、ステップＳ１４に進む。
【０１４８】
一方、ｃｏｓθが０以上の場合には、光源の強度のＲＧＢαの各成分（ＩRL、ＩGL、ＩBL、ＩαL）を読み込む（ステップＳ９）。そして、選択された光源が点光源か否かを判断し（ステップＳ１０）、点光源の場合には、光源と頂点との距離に応じて光の強度を減衰させる（ステップＳ１１。図８（Ａ）参照）。
【０１４９】
次に、ポリゴンの頂点の光源に対する反射係数のＲＧＢαの各成分（ＫRD、ＫGD、ＫBD、ＫαD）を読み込む（ステップＳ１２）。そして、光源についてのシェーディング（照光）処理を行い、頂点の光の強度（輝度）のＲＧＢαの各成分（ＩR、ＩG、ＩB、Ｉα）を修正する（ステップＳ１３）。即ち、例えば、図１６のステップＳ３で得られた計算結果を修正して、ＩR＝ＫRA×ＩRA＋ＫRD×ＩRL×ｃｏｓθ、ＩG＝ＫGA×ＩGA＋ＫGD×ＩGL×ｃｏｓθ、ＩB＝ＫBA×ＩBA＋ＫBD×ＩBL×ｃｏｓθ、Ｉα＝ＫαA×ＩαA＋ＫαD×ＩαL×ｃｏｓθの計算を行う。
【０１５０】
次に、すべての光源について処理が終了したか判断し（ステップＳ１４）、終了していない場合にはステップＳ４に戻る。
【０１５１】
一方、終了した場合には、頂点の光の強度のＲＧＢα成分（ＩR、ＩG、ＩB、Ｉα）が、描画バッファの最小値（例えば０）よりも小さいか否かを判断し（ステップＳ１５）、小さい場合には、描画バッファの最小値にクランプする（ステップＳ１６）。
【０１５２】
次に、頂点の光の強度のＲＧＢα成分が、描画バッファの最大値（例えば２５５）よりも大きいか否かを判断し（ステップＳ１７）、大きい場合には、描画バッファの最大値にクランプする（ステップＳ１８）。
【０１５３】
以上のようにして、ポリゴン（プリミティブ面）の各頂点についての処理が完了する。そして、これらの処理をすべての頂点、すべてのポリゴンに対して行うことで、ポリゴンにより構成されるオブジェクトに対するα値の設定処理が完了する。
【０１５４】
４．ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図１９を用いて説明する。
【０１５５】
メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介して転送されたプログラム、或いはＲＯＭ９５０（情報記憶媒体の１つ）に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【０１５６】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１５７】
ジオメトリプロセッサ９０４は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ９００で動作するプログラムが、その処理をジオメトリプロセッサ９０４に指示する。
【０１５８】
データ伸張プロセッサ９０６は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、ＭＰＥＧ方式等で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ＲＯＭ９５０、ＣＤ９８２に格納されたり、或いは通信インターフェース９９０を介して外部から転送される。
【０１５９】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ（プリミティブ面）で構成されるオブジェクトの描画（レンダリング）処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０の機能を利用して、オブジェクトデータを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると、描画プロセッサ９１０は、これらのオブジェクトデータやテクスチャに基づいて、Ｚバッファなどを利用した陰面消去を行いながら、オブジェクトをフレームバッファ９２２に高速に描画する。また、描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、１フレーム分の画像がフレームバッファ９２２に書き込まれると、その画像はディスプレイ９１２に表示される。
【０１６０】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ９３２から出力される。
【０１６１】
ゲームコントローラ９４２（レバー、ボタン、筺体、パッド型コントローラ又はガン型コントローラ等）からの操作データや、メモリカード９４４からのセーブデータ、個人データは、シリアルインターフェース９４０を介してデータ転送される。
【０１６２】
ＲＯＭ９５０にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されることになる。なお、ＲＯＭ９５０の代わりにハードディスクを利用するようにしてもよい。
【０１６３】
ＲＡＭ９６０は、各種プロセッサの作業領域として用いられる。
【０１６４】
ＤＭＡコントローラ９７０は、プロセッサ、メモリ（ＲＡＭ、ＶＲＡＭ、ＲＯＭ等）間でのＤＭＡ転送を制御するものである。
【０１６５】
ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２（情報記憶媒体）を駆動し、これらのプログラム、データへのアクセスを可能にする。
【０１６６】
通信インターフェース９９０は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース９９０に接続されるネットワークとしては、通信回線（アナログ電話回線、ＩＳＤＮ）、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他の画像生成システムとの間でのデータ転送が可能になる。
【０１６７】
なお、本発明の各手段は、その全てを、ハードウェアのみにより実現（実行）してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１６８】
そして、本発明の各手段をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、本発明の各手段をハードウェアを利用して実現するためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０等は、その指示と渡されたデータとに基づいて、本発明の各手段を実現することになる。
【０１６９】
図２０（Ａ）に、本実施形態を業務用ゲームシステム（画像生成システム）に適用した場合の例を示す。プレーヤは、ディスプレイ１１００、１１０１上に映し出されたゲーム画像を見ながら、ガン型コントローラ１１０２、１１０３などを操作してゲームを楽しむ。内蔵されるシステムボード（サーキットボード）１１０６には、各種プロセッサ、各種メモリなどが実装される。そして、本発明の各手段を実現するためのプログラム（データ）は、システムボード１１０６上の情報記憶媒体であるメモリ１１０８に格納される。以下、このプログラムを格納プログラム（格納情報）と呼ぶ。
【０１７０】
図２０（Ｂ）に、本実施形態を家庭用のゲームシステム（画像生成システム）に適用した場合の例を示す。プレーヤはディスプレイ１２００に映し出されたゲーム画像を見ながら、ガン型コントローラ１２０２、１２０４などを操作してゲームを楽しむ。この場合、上記格納プログラム（格納情報）は、本体システムに着脱自在な情報記憶媒体であるＣＤ１２０６、或いはメモリカード１２０８、１２０９などに格納されている。
【０１７１】
図２０（Ｃ）に、ホスト装置１３００と、このホスト装置１３００とネットワーク１３０２（ＬＡＮのような小規模ネットワークや、インターネットのような広域ネットワーク）を介して接続される端末１３０４-１〜１３０４-n（ゲーム機、携帯電話）とを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納プログラム（格納情報）は、例えばホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリなどの情報記憶媒体１３０６に格納されている。端末１３０４-１〜１３０４-nが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末１３０４-１〜１３０４-nに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４-１〜１３０４-nに伝送し端末において出力することになる。
【０１７２】
なお、図２０（Ｃ）の構成の場合に、本発明の各手段を、ホスト装置（サーバー）と端末とで分散して実現するようにしてもよい。また、本発明の各手段を実現するための上記格納プログラム（格納情報）を、ホスト装置（サーバー）の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【０１７３】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。そして、業務用ゲームシステムをネットワークに接続する場合には、業務用ゲームシステムとの間で情報のやり取りが可能であると共に家庭用ゲームシステムとの間でも情報のやり取りが可能なセーブ用情報記憶装置（メモリカード、携帯型ゲーム装置）を用いることが望ましい。
【０１７４】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０１７５】
例えば本発明の照明モデルとしては、本実施形態で説明したものに限定されず、シェーディング処理で使用される種々の照明モデルを採用できる。
【０１７６】
また、オブジェクトに設定されたα値は、半透明処理以外の種々の処理（例えばマスク処理）に使用できる。
【０１７７】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１７８】
また、本発明は種々のゲーム（格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等）に適用できる。
【０１７９】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々の画像生成システム（ゲームシステム）に適用できる。
【図面の簡単な説明】
【図１】本実施形態の画像生成システムの機能ブロック図の例である。
【図２】図２（Ａ）、（Ｂ）は、照明モデルについて説明するための図である。
【図３】光源の強度情報としてα値成分を持たせる手法について説明するための図である。
【図４】図４（Ａ）、（Ｂ）は、障害物オブジェクトによりプレーヤの視界が妨げられる問題について説明するための図である。
【図５】α値付きの光源を視点又は移動オブジェクトに追従させる手法について説明するための図である。
【図６】図６（Ａ）、（Ｂ）は、本実施形態により生成されるゲーム画像について説明するための図である。
【図７】図７（Ａ）、（Ｂ）も、本実施形態により生成されるゲーム画像について説明するための図である。
【図８】図８（Ａ）、（Ｂ）は、α値付きの光源として点光源を用いる手法について説明するための図である。
【図９】図９（Ａ）、（Ｂ）は、視点から見て裏向きのポリゴンの描画処理を省略する手法について説明するための図である。
【図１０】オブジェクトに適用する光源として複数の光源の中からα値付きの光源を選択する手法について説明するための図である。
【図１１】図１１（Ａ）、（Ｂ）は、光源の強度情報のα値成分を負の値に設定する手法について説明するための図である。
【図１２】図１２（Ａ）、（Ｂ）は、光源の強度情報の色成分を負の値に設定する手法について説明するための図である。
【図１３】負の色成分の光源を移動オブジェクトに追従させてその影を生成する手法について説明するための図である。
【図１４】図１４（Ａ）、（Ｂ）は、光源の種々の配置手法について説明するための図である。
【図１５】オブジェクトに適用する光源として複数の光源の中から負の色成分の光源を選択する手法について説明するための図である。
【図１６】本実施形態の処理の詳細例について示すフローチャートである。
【図１７】本実施形態の処理の詳細例について示すフローチャートである。
【図１８】本実施形態の処理の詳細例について示すフローチャートである。
【図１９】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図２０】図２０（Ａ）、（Ｂ）、（Ｃ）は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【符号の説明】
ＬＳ    光源
ＶＰ    視点
ＯＢ１  移動オブジェクト
ＯＢ２  オブジェクト
ＳＤ    陰影
ＳＷ    影
１００  処理部
１１０  移動・動作演算部
１１２  仮想カメラ（視点）制御部
１１４  シェーディング処理部
１１６  α値設定部
１２０  画像生成部
１３０  音生成部
１６０  操作部
１７０  記憶部
１７２  主記憶部
１７４  描画バッファ
１８０  情報記憶媒体
１９０  表示部
１９２  音出力部
１９４  携帯型情報記憶装置
１９６  通信部
【図１】
0004707078.tif 000002
【図２】
0004707078.tif 000003
【図３】
0004707078.tif 000004
【図４】
0004707078.tif 000005
【図５】
0004707078.tif 000006
【図６】
0004707078.tif 000007
【図７】
0004707078.tif 000008
【図８】
0004707078.tif 000009
【図９】
0004707078.tif 000010
【図１０】
0004707078.tif 000011
【図１１】
0004707078.tif 000012
【図１２】
0004707078.tif 000013
【図１３】
0004707078.tif 000014
【図１４】
0004707078.tif 000015
【図１５】
0004707078.tif 000016
【図１６】
0004707078.tif 000017
【図１７】
0004707078.tif 000018
【図１８】
0004707078.tif 000019
【図１９】
0004707078.tif 000020
【図２０】
0004707078.tif 000021