(57)【要約】【課題】これまでにはないフォグ画像を生成できる画像生成システム、プログラム及び情報記憶媒体を提供すること。【解決手段】  画像生成システムは、フォグ濃度分布関数をＤ（Ｘ、Ｙ、Ｚ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数とする関数部分をＬ（Ｘ、Ｙ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＺを引数とする関数部分をＫ（Ｚ）とし、Ｋ（Ｚ）を視点又はスクリーンからＺ＝ＺＰ（Ｘ、Ｙ）まで積分演算することで得られる値をＭ（ＺＰ）とした場合に、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に対応するα値として、Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）の項を少なくとも含むα（Ｘ、Ｙ）を求めるα値設定部と、求められたα（Ｘ、Ｙ）に基づいて、元画像の各画素の色とフォグ色とをブレンディングし、元画像のフォグ画像を生成するフォグ画像生成部を含む。【選択図】      図１５
2006318386.tif 000002
【特許請求の範囲】
【請求項１】
画像を生成するためのプログラムであって、
フォグ濃度分布関数をＤ（Ｘ、Ｙ、Ｚ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数とする関数部分をＬ（Ｘ、Ｙ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＺを引数とする関数部分をＫ（Ｚ）とし、Ｋ（Ｚ）を視点又はスクリーンからＺ＝ＺＰ（Ｘ、Ｙ）まで積分演算することで得られる値をＭ（ＺＰ）とした場合に、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に対応するα値として、Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）の項を少なくとも含むα（Ｘ、Ｙ）を求めるα値設定部と、
求められたα（Ｘ、Ｙ）に基づいて、元画像の各画素の色とフォグ色とをブレンディングし、元画像のフォグ画像を生成するフォグ画像生成部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項２】
請求項１において、
前記α値設定部は、
Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数としない関数部分であるＪ（Ｚ）を、視点又はスクリーンからＺ＝ＺＰ（Ｘ、Ｙ）まで積分演算することで得られる値をＮ（ＺＰ）とした場合に、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に対応するα値として、α（Ｘ、Ｙ）＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）を求めることを特徴とするプログラム。
【請求項３】
請求項１又は２において、
フォグ濃度分布関数の分布中心を（Ｘ０、Ｙ０、Ｚ０）とし、フォグの濃度パラメータをＡとし、フォグの分散パラメータをＢとした場合に、
Ｄ（Ｘ、Ｙ、Ｚ）
＝Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2＋（Ｚ−Ｚ０）2  ｝／Ｂ］＋Ｊ（Ｚ）であり、
Ｌ（Ｘ、Ｙ）＝Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2｝／Ｂ］であり、
Ｋ（Ｚ）＝１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］であることを特徴とするプログラム。
【請求項４】
請求項１又は２において、
特定平面の方向パラメータをａ、ｂ、ｃとし、フォグの濃度パラメータをｄとした場合に、
Ｄ（Ｘ、Ｙ、Ｚ）＝ａ×Ｘ＋ｂ×Ｙ＋ｃ×Ｚ＋ｄであり、
Ｌ（Ｘ、Ｙ）＝ａ×Ｘ＋ｂ×Ｙであり、
Ｋ（Ｚ）＝１であり、
Ｊ（Ｚ）＝ｃ×Ｚ＋ｄであることを特徴とするプログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
ＺＰ（Ｘ、Ｙ）に対応するＭ（ＺＰ）を求めるためのルックアップテーブルを記憶するルックアップテーブル記憶部としてコンピュータを機能させ、
前記α値設定部は、
元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に基づいて前記ルックアップテーブルを参照することでＭ（ＺＰ）を求めることを特徴とするプログラム。
【請求項６】
請求項５において、
前記ルックアップテーブルは、インデックスカラー・テクスチャマッピング用のルックアップテーブルであり、
前記α値設定部は、
元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）がインデックス番号として扱われる前記ルックアップテーブルを用いて、仮想プリミティブ面にインデックスカラー・テクスチャマッピングを行って描画することで、各ＺＰ（Ｘ、Ｙ）に対応するＭ（ＺＰ）を求めることを特徴とするプログラム。
【請求項７】
請求項５又は６において、
前記ルックアップテーブル記憶部は、
基準フォグ濃度分布関数についてのルックアップテーブルである基準ルックアップテーブルを記憶し、
前記α値設定部は、
前記基準ルックアップテーブルを変換することで得られるルックアップテーブルに基づいて、前記基準フォグ濃度分布関数とは異なるフォグ濃度分布関数についてのＭ（ＺＰ）を求めることを特徴とするプログラム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記α値設定部は、
Ｒプレーン、Ｇプレーン、ＢプレーンのいずれかのプレーンにＬ（Ｘ、Ｙ）が設定されたテクスチャがマッピングされたプリミティブ面を、αプレーンにＭ（ＺＰ）が設定された描画バッファに対して描画することで、α（Ｘ、Ｙ）を求めることを特徴とするプログラム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記フォグ画像生成部は、
α（Ｘ、Ｙ）がインデックス番号として扱われ、フォグ色のＲ、Ｇ、Ｂ値がＲ、Ｇ、Ｂ値に設定され、インデックス番号と同じ値がα値に設定されたルックアップテーブルを用いて、仮想プリミティブ面にインデックスカラー・テクスチャマッピングを行い、元画像が描画されている描画バッファに描画することで、フォグ画像を生成することを特徴とするプログラム。
【請求項１０】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至９のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１１】
画像を生成する画像生成システムであって、
フォグ濃度分布関数をＤ（Ｘ、Ｙ、Ｚ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数とする関数部分をＬ（Ｘ、Ｙ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＺを引数とする関数部分をＫ（Ｚ）とし、Ｋ（Ｚ）を視点又はスクリーンからＺ＝ＺＰ（Ｘ、Ｙ）まで積分演算することで得られる値をＭ（ＺＰ）とした場合に、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に対応するα値として、Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）の項を少なくとも含むα（Ｘ、Ｙ）を求めるα値設定部と、
求められたα（Ｘ、Ｙ）に基づいて、元画像の各画素の色とフォグ色とをブレンディングし、元画像のフォグ画像を生成するフォグ画像生成部と、
を含むことを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【０００２】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内（仮想的な３次元空間）において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。そしてこのような画像生成システムでは、霧、もや、煙、ホコリなどのフォグ（fog）が掛かったゲーム場面を表示する場合があり、このフォグについてもリアルに表現できることが望まれる。このようなフォグ表現の従来技術としては特開２００３−３２３６３０号公報に開示された技術がある。
【０００３】
しかしながら、これまでのフォグ画像生成手法では、空間的に一様ではなく奥行き方向にボリュームがある局所的なフォグについては表現できなかった。
【特許文献１】２００３−３２３６３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、これまでにはないフォグ画像を生成できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【０００５】
本発明は、画像を生成する画像生成システムであって、フォグ濃度分布関数をＤ（Ｘ、Ｙ、Ｚ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数とする関数部分をＬ（Ｘ、Ｙ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＺを引数とする関数部分をＫ（Ｚ）とし、Ｋ（Ｚ）を視点又はスクリーンからＺ＝ＺＰ（Ｘ、Ｙ）まで積分演算することで得られる値をＭ（ＺＰ）とした場合に、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に対応するα値として、Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）の項を少なくとも含むα（Ｘ、Ｙ）を求めるα値設定部と、求められたα（Ｘ、Ｙ、ＺＰ）に基づいて、元画像の各画素の色とフォグ色とをブレンディングし、元画像のフォグ画像を生成するフォグ画像生成部を含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【０００６】
本発明によれば、フォグ濃度分布関数のＸ、Ｙ方向の関数部分（項）であるＬ（Ｘ、Ｙ）と、Ｚ方向の関数部分（項）であるＫ（Ｚ）とが分離されて処理される。そして、Ｌ（Ｘ、Ｙ）と、Ｋ（Ｚ）をＺＰ（Ｘ、Ｙ）まで積分演算することで得られるＭ（ＺＰ）とを乗算したＬ（Ｘ、Ｙ）×Ｍ（ＺＰ）の項を含むα（Ｘ、Ｙ）が求められ、求められたα（Ｘ、Ｙ）に基づいて、元画像の各画素の色とフォグ色とがブレンディングされて、フォグ画像（元画像にフォグがかかった画像）が生成される。このようにすれば、奥行き方向（Ｚ方向）のボリュームが表現された、これまでにはないフォグ画像を少ない処理負荷で生成できるようになる。
【０００７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値設定部は、Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数としない関数部分であるＪ（Ｚ）を、視点又はスクリーンからＺ＝ＺＰ（Ｘ、Ｙ）まで積分演算することで得られる値をＮ（ＺＰ）とした場合に、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に対応するα値として、α（Ｘ、Ｙ）＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）を求めるようにしてもよい。
【０００８】
この場合、Ｊ（Ｚ）としてはＪ（Ｚ）＝Ｃ、Ｊ（Ｚ）＝ｓ×Ｚ＋Ｃなどを採用できる。そしてＪ（Ｚ）＝Ｃとすれば、定数部分であるＣに基づいて、フォグの全体的な濃度を制御することが可能になる。
【０００９】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、フォグ濃度分布関数の分布中心を（Ｘ０、Ｙ０、Ｚ０）とし、フォグの濃度パラメータをＡとし、フォグの分散パラメータをＢとした場合に、Ｄ（Ｘ、Ｙ、Ｚ）＝Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2＋（Ｚ−Ｚ０）2  ｝／Ｂ］＋Ｊ（Ｚ）であり、Ｌ（Ｘ、Ｙ）＝Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2｝／Ｂ］であり、Ｋ（Ｚ）＝１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］であってもよい。
【００１０】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、特定平面の方向パラメータをａ、ｂ、ｃとし、フォグの濃度パラメータをｄとした場合に、Ｄ（Ｘ、Ｙ、Ｚ）＝ａ×Ｘ＋ｂ×Ｙ＋ｃ×Ｚ＋ｄであり、Ｌ（Ｘ、Ｙ）＝ａ×Ｘ＋ｂ×Ｙであり、Ｋ（Ｚ）＝１であり、Ｊ（Ｚ）＝ｃ×Ｚ＋ｄであってもよい。
【００１１】
但し本発明のフォグ濃度分布関数はこのような関数には限定されず、種々の変形実施が可能である。
【００１２】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、ＺＰ（Ｘ、Ｙ）に対応するＭ（ＺＰ）を求めるためのルックアップテーブルを記憶するルックアップテーブル記憶部を含み（ルックアップテーブル記憶部としてコンピュータを機能させ）、前記α値設定部は、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に基づいて前記ルックアップテーブルを参照することでＭ（ＺＰ）を求めるようにしてもよい。
【００１３】
このようにすれば、Ｋ（Ｚ）についての積分演算を前もって計算してテーブル化しておくことができるため、リアルタイム処理時の処理負荷を軽減できる。
【００１４】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ルックアップテーブルは、インデックスカラー・テクスチャマッピング用のルックアップテーブルであり、前記α値設定部は、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）がインデックス番号として扱われる前記ルックアップテーブルを用いて、仮想プリミティブ面にインデックスカラー・テクスチャマッピングを行って描画することで、各ＺＰ（Ｘ、Ｙ）に対応するＭ（ＺＰ）を求めるようにしてもよい。
【００１５】
このようにすれば、インデックスカラー・テクスチャマッピングを有効活用して、ＺＰ（Ｘ、Ｙ）からＭ（ＺＰ）への変換を実現できるようになる。
【００１６】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ルックアップテーブル記憶部は、基準フォグ濃度分布関数についてのルックアップテーブルである基準ルックアップテーブルを記憶し、前記α値設定部は、前記基準ルックアップテーブルを変換することで得られるルックアップテーブルに基づいて、前記基準フォグ濃度分布関数とは異なるフォグ濃度分布関数についてのＭ（ＺＰ）を求めるようにしてもよい。
【００１７】
このようにすれば、ルックアップテーブル記憶部には基準ルックアップテーブルを記憶しておくだけで済むため、記憶部の使用記憶容量の節約を図れる。
【００１８】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値設定部は、Ｒプレーン、Ｇプレーン、ＢプレーンのいずれかのプレーンにＬ（Ｘ、Ｙ）が設定されたテクスチャがマッピングされたプリミティブ面を、αプレーンにＭ（ＺＰ）が設定された描画バッファに対して描画することで、α（Ｘ、Ｙ）を求めるようにしてもよい。
【００１９】
このようにすれば、Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）の項を演算する処理を、ワークバッファ等への描画バッファへの描画処理により実現することが可能になる。
【００２０】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記フォグ画像生成部は、α（Ｘ、Ｙ）がインデックス番号として扱われ、フォグ色のＲ、Ｇ、Ｂ値がＲ、Ｇ、Ｂ値に設定され、インデックス番号と同じ値がα値に設定されたルックアップテーブルを用いて、仮想プリミティブ面にインデックスカラー・テクスチャマッピングを行い、元画像が描画されている描画バッファに描画することで、フォグ画像を生成するようにしてもよい。
【００２１】
このようにすれば、インデックスカラー・テクスチャマッピングを有効活用して、元画像とフォグ色をα（Ｘ、Ｙ）に基づきブレンディングし、フォグ画像を生成できるようになる。
【発明を実施するための最良の形態】
【００２２】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２３】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００２４】
操作部１６０は、プレイヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部１７０は、処理部１００や通信部１９６などのワーク領域やメインメモリとなるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。
【００２５】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ハードディスク、メモリーカード、メモリーカセット、磁気ディスク、或いはメモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されているプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理手順をコンピュータに実行させるためのプログラム）が記憶される。
【００２６】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ（液晶表示装置）、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００２７】
携帯型情報記憶装置１９４は、プレイヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などがある。通信部１９６は外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００２８】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバ）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信してもよい。このようなホスト装置（サーバ）の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００２９】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部１００は記憶部１７０をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００３０】
処理部１００は、オブジェクト空間設定部１１０、移動・動作処理部１１２、仮想カメラ制御部１１４、描画部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００３１】
オブジェクト空間設定部１１０は、キャラクタ、車、戦車、建物、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクト（モデルオブジェクト）の位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００３２】
移動・動作処理部１１２は、オブジェクト（キャラクタ、車、又は飛行機等）の移動・動作演算（移動・動作シミュレーション）を行う。即ち操作部１６０によりプレイヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、オブジェクト（移動オブジェクト）をオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させる処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（各パーツオブジェクトの位置、或いは回転角度）を、１フレーム毎（１／６０秒）に順次求めるシミュレーション処理を行う。なおフレーム（フレームレート）は、オブジェクトの移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００３３】
仮想カメラ制御部１１４（視点制御部）は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置や視線方向を制御する処理）を行う。
【００３４】
例えば仮想カメラによりオブジェクト（例えばキャラクタ、ボール、車）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部１１２で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００３５】
描画部１２０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まず、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、或いは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数プリミティブ面）を描画バッファ１７２（フレームバッファ、ワークバッファなどのピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ）に描画する。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００３６】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００３７】
描画部１２０は、テクスチャマッピング処理や隠面消去処理やαブレンディング処理を行うことができる。
【００３８】
ここでテクスチャマッピング処理は、テクスチャ記憶部１７４に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングする処理である。具体的には、オブジェクト（プリミティブ面）の頂点に設定（付与）されるテクスチャ座標等を用いてテクスチャ記憶部１７４からテクスチャ（色、α値などの表面プロパティ）を読み出す。そして、２次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間（テクセル補間）などを行う。
【００３９】
また隠面消去処理は、例えば、各ピクセルのＺ値（奥行き情報）が格納されているＺバッファ１７６（奥行きバッファ）を用いるＺバッファ法（奥行き比較法、Ｚテスト）により実現される。即ちオブジェクトのプリミティブ面の各ピクセルを描画する際に、Ｚバッファ１７６に格納されているＺ値を参照する。そして参照されたＺバッファ１７６のＺ値と、プリミティブ面の描画対象ピクセルでのＺ値とを比較し、プリミティブ面のＺ値が、仮想カメラから見て手前側となるＺ値（例えば大きなＺ値）である場合には、そのピクセルの描画処理を行うと共にＺバッファ１７６のＺ値を新たなＺ値に更新する。
【００４０】
またαブレンディング処理は、α値（Ａ値）に基づいて行う処理であり、通常αブレンディング、加算αブレンディング或いは減算αブレンディングなどがある。例えば通常αブレンディングの場合には下式の処理を行う。
【００４１】
ＲQ＝（１−α）×Ｒ1＋α×Ｒ2
ＧQ＝（１−α）×Ｇ1＋α×Ｇ2
ＢQ＝（１−α）×Ｂ1＋α×Ｂ2
一方、加算αブレンディングの場合には下式の処理を行う。
【００４２】
ＲQ＝Ｒ1＋α×Ｒ2
ＧQ＝Ｇ1＋α×Ｇ2
ＢQ＝Ｂ1＋α×Ｂ2
また、減算αブレンディングの場合には下式の処理を行う。
【００４３】
ＲQ＝Ｒ1−α×Ｒ2
ＧQ＝Ｇ1−α×Ｇ2
ＢQ＝Ｂ1−α×Ｂ2
ここで、Ｒ1、Ｇ1、Ｂ1は、描画バッファ１７２（フレームバッファ）に既に描画されている画像（元画像）のＲＧＢ成分であり、Ｒ2、Ｇ2、Ｂ2は、描画バッファ１７２に描画すべき画像のＲＧＢ成分である。また、ＲQ、ＧQ、ＢQは、αブレンディングにより得られる画像のＲＧＢ成分である。なおα値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、半透明度（透明度、不透明度と等価）情報、マスク情報、或いはバンプ情報などとして使用できる。
【００４４】
描画部１２０は、α値設定部１２２、フォグ画像生成部１２４を含む。
【００４５】
α値設定部（α値取得部、α値演算部）１２２は、α値を求める処理（α値を設定する処理）を行う。具体的には元画像の各画素のＺ値（Ｚバッファ１７６に格納されているＺ値）に対する変換処理を行って、各画素のα値（αプレーン）を求める。
【００４６】
例えばフォグ濃度分布関数をＤ（Ｘ、Ｙ、Ｚ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数とする関数部分（項）をＬ（Ｘ、Ｙ）とし、Ｄ（Ｘ、Ｙ、Ｚ）のうちＺを引数とする関数部分（項）をＫ（Ｚ）とする。またＫ（Ｚ）を視点（仮想カメラ）又はスクリーンからＺ＝ＺＰ（各画素のＺ値）まで積分演算することで得られる値をＭ（ＺＰ）とする。この場合にはα値設定部１２２は、元画像の各画素のＺ値（Ｚバッファ１７６のＺ値）であるＺＰ（Ｘ、Ｙ）に対応するα値として、Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）を含むα（Ｘ、Ｙ）を求める。具体的には、Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数としない関数部分であり、Ｌ（Ｘ、Ｙ）の乗算対象とならない関数部分をＪ（Ｚ）とし、Ｊ（Ｚ）を視点又はスクリーンからＺ＝ＺＰ（Ｘ、Ｙ）まで積分演算することで得られる値をＮ（ＺＰ）とした場合に、元画像の各画素ＺＰ（Ｘ、Ｙ）に対応するα値として、α（Ｘ、Ｙ）＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）を求める。なおα（Ｘ、Ｙ）はα（Ｘ、Ｙ、ＺＰ）と標記することも可能だが、ＺＰ（ＺバッファのＺ値）は、各画素の座標（Ｘ、Ｙ）により一意に求められるため、本実施形態ではα（Ｘ、Ｙ）と標記している。
【００４７】
ルックアップテーブル記憶部１７８は、ＺＰ（Ｘ、Ｙ）に対応するＭ（ＺＰ）を求めるためのルックアップテーブル（変換テーブル）を記憶する。即ちＺＰ（Ｘ、Ｙ）が入力（参照）されると、Ｍ（ＺＰ）又はＭ（ＺＰ）を求めるための値が出力されるルックアップテーブルを記憶する。このルックアップテーブルは、例えば前計算により予め求めておき、記憶部１７０に展開しておくことができる。
【００４８】
α値設定部１２２は、元画像の各画素のＺ値であるＺＰ（Ｘ、Ｙ）に基づいて、このルックアップテーブルを参照することで、α（Ｘ、Ｙ）を求める。このルックアップテーブルとしては、インデックスカラー・テクスチャマッピング用のルックアップテーブルを用いることができる。この場合にはα値設定部１２２は、元画像の各画素ＺＰ（Ｘ、Ｙ）がインデックス番号として扱われる（見なされる）ルックアップテーブルを用い、仮想プリミティブ面にインデックスカラー・テクスチャマッピングを行って描画することで、ＺＰ（Ｘ、Ｙ）に対応するＭ（ＺＰ）を求める。
【００４９】
またルックアップテーブル記憶部１７８は、基準フォグ濃度分布関数（標準的な分布関数）についてのルックアップテーブルである基準ルックアップテーブルを記憶できる。この場合にはα値設定部１２２は、この基準ルックアップテーブルを変換することで得られるルックアップテーブルに基づいて、基準フォグ濃度分布関数とは分散パラメータ（広がりパラメータ、分布パラメータ）などが異なるフォグ濃度分布関数についてのα（Ｘ、Ｙ）を求める。
【００５０】
なお元画像は、例えば、Ｚ値を格納するＺバッファ１７６を用いて隠面消去を行いながらオブジェクト（プリミティブ面）を描画バッファ１７２に描画することで生成される画像である。そして元画像のＺ値は、この描画処理の際に行われるＺバッファ法（奥行き比較法）により、Ｚバッファ１７６上に生成（格納）される。α値設定部１２２は、このＺバッファ１７６のＺＰ（Ｘ、Ｙ）を変換することで（例えばルックアップテーブルを用いて変換することで）、各ＺＰ（Ｘ、Ｙ）に対応したα値を求める。
【００５１】
また本実施形態のＺ値（奥行き値）は、Ｚバッファ１７６のＺ値（カメラ座標系のＺ値）そのものであってもよいし、このＺ値と数学的な均等なパラメータであってもよい。例えば、Ｚバッファ１７６のＺ値の逆数に相当するパラメータや、Ｚバッファ１７６のＺ値に所与の変換処理を施すことで得られるパラメータや、Ｚバッファ１７６のＺ値の所与のビット範囲（８ビット等）を取り出すことで得られるパラメータであってもよい。
【００５２】
フォグ画像生成部１２４（ブレンディング部）はフォグ画像の生成処理を行う。具体的にはα値設定部１２２により求められたα（Ｘ、Ｙ）に基づいて、元画像の各画素の色とフォグ色（所与の色）とをブレンディングすることで、元画像のフォグ画像（元画像にフォグがかかった画像）を生成する。この場合のフォグ色は、一定色（白、青等）であってもよいし、Ｚ値（奥行き値）に応じて変化する色であってもよい。
【００５３】
例えばα値設定部１２２は、Ｒプレーン、Ｇプレーン、ＢプレーンのいずれかのプレーンにＬ（Ｘ、Ｙ）が設定されたテクスチャがマッピングされたプリミティブ面を、αプレーンにＭ（ＺＰ）が設定された描画バッファ１７２（例えばワークバッファ）に対して描画することで、Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）の項を含むα（Ｘ、Ｙ）を求めることができる。この場合にフォグ画像生成部１２４は、α（Ｘ、Ｙ）がインデックス番号として扱われ、フォグ色のＲ、Ｇ、Ｂ値がＲ、Ｇ、Ｂ値（Ｒ、Ｇ、Ｂ成分）に設定され、インデックス番号と同じ値がα値（α成分）に設定されたルックアップテーブルを用いて、仮想プリミティブ面にインデックスカラー・テクスチャマッピングを行う。そしてこの仮想プリミティブ面を、元画像が描画されている描画バッファにブレンディング描画することで、フォグ画像を生成する。
【００５４】
以上のような処理を行うことで、元画像に対してフォグ（霧、雲、湯気、もや、ほこり、ちり、煙、竜巻又は露等）が掛かったリアルな画像を生成できる。
【００５５】
なお、本実施形態の画像生成システムは、１人のプレイヤのみがプレイできるシングルプレイヤモード専用のシステムにしてもよいし、複数のプレイヤがプレイできるマルチプレイヤモードも備えるシステムにしてもよい。また複数のプレイヤがプレイする場合に、これらの複数のプレイヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて分散処理により生成してもよい。
【００５６】
２．本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【００５７】
２．１  フォグ画像の生成
よりリアルなフォグ表現を実現するためには、視点（仮想カメラ）からの距離に応じてフォグ濃度を変化させることが望ましい。即ち視点からの距離が遠くなるほどフォグ濃度を濃くする。そして、このようにフォグ濃度を変化させるためには、フォグ濃度を制御するパラメータであるα値を、視点からの距離に応じて変化させることが望ましい。即ち、仮想カメラからの距離が遠くなるほどフォグ濃度が濃くなるようにα値を制御する。
【００５８】
そこで本実施形態では、仮想カメラからの距離パラメータであるＺ値（奥行き距離）をα値に変換する手法を採用している。具体的には図２のＡ１に示すように、元画像（描画バッファ上に描画された画像）の各画素のＺ値であるＺＰを、α値αＰ１（第１のα値）に変換する。
【００５９】
そして図２のＡ２に示すように、元画像の色ＩＣＰ（ＲＧＢ）と、フォグの色（白、灰色等）ＣＰとを、αＰ１に基づいてブレンディング（合成）する。これにより、元画像にフォグ効果が施されたフォグ画像（完成画像）を生成できる。
【００６０】
しかしながら、これまでのフォグ画像生成手法では、濃度（密度）分布を持った局所的なフォグについては表現できなかった。
【００６１】
これに対して本実施形態の手法によれば図３、図４に示すように、形を持った局所的なフォグＦＧの画像を生成できる。例えば図３において、球状のフォグＦＧはオブジェクト空間内の任意の位置に配置することができる。例えばキャラクタＣＨの近くに局所的なフォグＦＧを出現させたり、キャラクタＣＨの移動に伴いフォグＦＧを移動させるなどの表現が可能になる。また本実施形態の手法によれば図４に示すように、分散パラメータ（広がりパラメータ）を変えることで、フォグＦＧの分散具合（広がり具合）を任意に制御でき、キャラクタＣＨにフォグがかかった画像を生成できる。また濃度パラメータを変えることで、フォグＦＧの濃さについても任意に制御できる。
【００６２】
図５に本実施形態のフォグモデルの例を示す。このフォグモデルはフォグ濃度分布関数をＤ（Ｘ、Ｙ、Ｚ）により表される。フォグ濃度分布関数Ｄ（Ｘ、Ｙ、Ｚ）としては、正規分布などの種々の分布関数を用いることができる。図５では、ＣＰ（Ｘ０、Ｙ０、Ｚ０）を分布中心（中心位置、代表位置）とする球状のフォグモデルとなっている。
【００６３】
フォグ濃度分布関数Ｄ（Ｘ、Ｙ、Ｚ）としては、例えば下式（１）を採用できる。
【００６４】
Ｄ（Ｘ、Ｙ、Ｚ）
＝Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2＋（Ｚ−Ｚ０）2  ｝／Ｂ］＋Ｊ（Ｚ）                                                                  （１）
ここで、（Ｘ０、Ｙ０、Ｚ０）はフォグ中心である。またＡはフォグの濃さを制御するための濃度パラメータであり、Ｂはフォグの分散具合（広がり具合）を制御するための分散（広がり、偏差）パラメータである。
【００６５】
またＪ（Ｚ）は、Ｄ（Ｘ、Ｙ、Ｚ）のうちＸ、Ｙを引数としない関数部分（Ｌ（Ｘ、Ｙ）の乗算対象にならない関数部分）であり、例えばＪ（Ｚ）＝Ｃとすることできる。このＣは、Ｄ（Ｘ、Ｙ、Ｚ）のうちの定数部分（Ｘ、Ｙ、Ｚに依存しない部分）であり、このＣによりフォグ濃度を一様に変化させることができる。なお、Ｊ（Ｚ）は、Ｊ（Ｚ）＝Ｃには限定されず、Ｊ（Ｚ）＝ｓ×Ｚ＋Ｃとしたり、Ｊ（Ｚ）＝０とするなど、種々の変形実施が可能である。
【００６６】
そして上式（１）は、下式（２）（３）に示すように、Ｘ、Ｙを引数（変数）とする関数部分（項）であるＬ（Ｘ、Ｙ）と、Ｚを引数とする関数部分（項）であるＫ（Ｚ）に変数分離できる。
【００６７】
Ｌ（Ｘ、Ｙ）＝Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2｝／Ｂ］  （２）
Ｋ（Ｚ）＝１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］                        （３）
従って上式（１）（２）（３）により、フォグ濃度分布関数Ｄ（Ｘ、Ｙ、Ｚ）は、
Ｄ（Ｘ、Ｙ、Ｚ）＝Ｌ（Ｘ、Ｙ）×Ｋ（Ｚ）＋Ｊ（Ｚ）                    （４）
と表すことができる。
【００６８】
本実施形態のフォグモデルでは、視点から物体（オブジェクト）までの間に存在するフォグの総和値（積分値）を、そのままα値として採用する。
【００６９】
そして本実施形態では、Ｚ値（ＺバッファのＺ値）からα値への変換を以下のような手法で実現している。例えばスクリーン上の画素Ｐ（Ｘ、Ｙ）におけるＺバッファ１７６の値（元画像の画素のＺ値）をＺＰ（Ｘ、Ｙ）とする。すると、ＺＰ（Ｘ、Ｙ）に対応するα（Ｘ、Ｙ）は、下式のように求めることができる。
【００７０】
α（Ｘ、Ｙ）＝∫Ｄ（Ｘ、Ｙ、Ｚ）                            （５）
ここで上式（５）は図６に示すように、フォグ濃度分布関数Ｄ（Ｘ、Ｙ、Ｚ）を、視点ＶＰ又はスクリーン（視点又はスクリーンのＺ値）からＺＰ（Ｘ、Ｙ）まで積分演算（総和演算）することを意味する。このような積分演算を行うことで、図６のＦ１に示す部分でのフォグ濃度に対応するα値を求めることができる。視点ＶＰとスクリーンの間には物体は存在しないと想定する場合には、スクリーンからＺＰ（Ｘ、Ｙ）までの積分演算で十分である。なおこの積分演算は、実質的に視点又はスクリーンからＺＰ（Ｘ、Ｙ）まで積分するものであればよく、視点の近くでのフォグ濃度を無視できる場合等において、視点又はスクリーンよりも奥側の位置（実質的に視点又はスクリーン位置と見なせる位置）からＺＰ（Ｘ、Ｙ）まで積分演算する手法なども、本発明の範囲に含むことができる。
【００７１】
上式（２）（３）（４）に示すように、Ｄ（Ｘ、Ｙ、Ｚ）は、Ｘ、Ｙを引数とする部分（項）と、Ｚを引数とする部分（項）に変数分離できる。従って、
α（Ｘ、Ｙ）
＝∫Ｄ（Ｘ、Ｙ、Ｚ）
＝∫Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2＋（Ｚ−Ｚ０）2  ｝／Ｂ］
＋∫Ｊ（Ｚ）
＝Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2｝／Ｂ］
×∫１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］＋Ｃ×ＺＰ（Ｘ、Ｙ）＋∫Ｊ（Ｚ）
＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）                            （６）
となる。ここで、
Ｌ（Ｘ、Ｙ）＝Ａ／ｅｘｐ［｛（Ｘ−Ｘ０）2＋（Ｙ−Ｙ０）2｝／Ｂ］    （７）
Ｍ（ＺＰ）＝∫１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］                      （８）
Ｎ（ＺＰ）＝∫Ｊ（Ｚ）                                            （９）
である。
【００７２】
即ち図７（Ａ）に示すように、Ｍ（ＺＰ）は、Ｋ（Ｚ）＝１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］を視点ＶＰ（スクリーン）からＺＰ（Ｘ、Ｙ）まで積分することで得られる値である。またＮ（ＺＰ）は、Ｊ（Ｚ）を視点ＶＰ（スクリーン）からＺＰ（Ｘ、Ｙ）まで積分することで得られる値である。例えばＪ（Ｚ）＝Ｃであれば、Ｎ（ＺＰ）＝Ｃ×ＺＰとなり、Ｊ（Ｚ）＝ｓ×Ｚ＋Ｃであれば、Ｎ（ＺＰ）＝０．５×ｓ×ＺＰ2＋Ｃ×ＺＰになる。このようにＪ（Ｚ）は、視点ＶＰ（スクリーン）からＺＰ（Ｘ、Ｙ）まで積分した値を、Ｎ（ＺＰ）の形で表すことができる関数であればよい。
【００７３】
なおＭ（ＺＰ）は例えば次のようにして求めることができる。例えば図７（Ｂ）に示すように、Ｚ＝−∞（或いは＋∞）から視点又はスクリーン（視点又はスクリーンのＺ値）までＫ（Ｚ）を積分することで得られる積分値をＳ１とする。また図７（Ｃ）に示すように、Ｚ＝−∞（或いは＋∞）からＺＰまでＫ（Ｚ）を積分することで得られた積分値をＳ２（ＺＰ）とする。この場合には、Ｍ（ＺＰ）＝Ｓ１−Ｓ２（ＺＰ）というようにＭ（ＺＰ）を求める。例えばルックアップテーブル記憶部１７８には、−∞から各Ｚ値ＺＰまでＫ（Ｚ）を積分した値である図７（Ｃ）のＳ２（ＺＰ）を記憶しておく。そしてこのルックアップテーブル記憶部１７８にＺ＝ＺＰを入力することで、図７（Ｃ）のＳ２（ＺＰ）を求め、Ｓ１−Ｓ２（ＺＰ）を演算することでＭ（ＺＰ）を求めることができる。Ｋ（Ｚ）（或いはＤ（Ｘ、Ｙ、Ｚ））がｅｘｐ（ｅｘｐｏｎｅｎｔｉａｌ）関数等である場合には、任意の区間の積分値を、このような引き算Ｓ１−Ｓ２（ＺＰ）で求めることができるため、処理を簡素化できる。
【００７４】
上式（６）に示すように本実施形態では、Ｘ、Ｙ方向の計算式とＺ方向の計算式を分離して、フォグ濃度を表すα（Ｘ、Ｙ）を求めている点に特徴がある。即ちｅｘｐ関数は、ｅｘｐ｛−（Ｘ2＋Ｙ2＋Ｚ2）｝＝ｅｘｐ｛−（Ｘ2＋Ｙ2）｝×ｅｘｐ（−Ｚ2）というように分離して計算できる点に着目して、α（Ｘ、Ｙ）を求めている点に特徴がある。
【００７５】
そして本実施形態ではＺ方向の計算については、ＺＰ（Ｘ、Ｙ）とＭ（ＺＰ）とを対応づけるルックアップテーブルを用いて実現する。具体的には例えば、ＺＰ（Ｘ、Ｙ）をルックアップテーブルのインデックス番号として参照するインデックステクスチャマッピングを行うことで実現する。一方、Ｘ、Ｙ方向の計算については、プリミティブ面（ポリゴン、スプライト）の頂点カラーやテクスチャを用いて実現する。
【００７６】
このようにすれば、比較的負荷が少ない処理で、図３、図４に示すようなボリュームのあるフォグの画像を生成できるようになり、画像のリアル感を向上できる。
【００７７】
なおパースペクティブを考慮すると上式（６）のα（Ｘ、Ｙ）は厳密には正確ではないが、フォグが、視点からある程度離れたところに位置するという仮定をすれば、近似式として十分である。
【００７８】
また分布関数Ｄ（Ｘ、Ｙ、Ｚ）は、上式（１）のような関数には限定されず、種々の変形実施が可能である。例えば、
Ｄ（Ｘ、Ｙ、Ｚ）＝Ｌ（Ｘ、Ｙ）×Ｋ（Ｚ）＋Ｊ（Ｚ）
＝ａ×Ｘ＋ｂ×Ｙ＋ｃ×Ｚ＋ｄ              （１０）
とすることができる。
【００７９】
そしてこの場合には、
Ｌ（Ｘ、Ｙ）＝ａ×Ｘ＋ｂ×Ｙ                              （１１）
Ｋ（Ｚ）＝１                                              （１２）
Ｊ（Ｚ）＝ｃ×Ｚ＋ｄ                                      （１３）
となる。
【００８０】
上式（１０）の分布関数Ｄ（Ｘ、Ｙ、Ｚ）は、特定平面との距離に応じて、フォグ濃度を分布させる関数である。そしてａ、ｂ、ｃは特定平面の方向パラメータ（法線ベクトルパラメータ）であり、ｄはフォグの濃度パラメータである。即ちａ、ｂ、ｃに基づいて、特定平面の方向（法線方向）を制御できる。またｄを変化させて特定平面の位置（オフセット距離）を変化させることで、フォグの濃度を制御できる。
【００８１】
そしてこの分布関数Ｄ（Ｘ、Ｙ、Ｚ）において、例えば特定平面を地面に設定すれば、地面に近い部分ほどフォグが濃くかかる、いわゆる「高さフォグ」のような効果を実現できる。
【００８２】
２．２  ルックアップテーブル
本実施形態ではＭ（ＺＰ）＝∫１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］を、ルックアップテーブルＬＵＴを用いて求めている。即ち各ＺＰ（Ｘ、Ｙ）に対応するＭ（ＺＰ）の値（Ｍ（ＺＰ）を求めるための値）を、予め前計算してテーブル化しておく。例えばＺＰ＝ＺＭＩＮからＺＰ＝ＺＭＡＸまどの間を例えば２５５段階（Ｎ段階）に分割し、分割点である各ＺＰ（Ｘ、Ｙ）におけるＭ（ＺＰ）をテーブル化しておく。そして元画像の各画素Ｐ（Ｘ、Ｙ）のＺＰ（Ｘ、Ｙ）をＺバッファ１７６から読み出し、読み出されたＺＰ（Ｘ、Ｙ）をルックアップテーブルＬＵＴに入力することで（ＺＰでＬＵＴを参照することで）、Ｚ方向の積分値であるＭ（ＺＰ）を得る。なお、ＺＭＩＮ〜ＺＭＡＸは、例えばＺバッファ１７６のＺ値がとることができる範囲である。また図７（Ｂ）（Ｃ）の手法を用いる場合には、ルックアップテーブルＬＵＴには、図７（Ｃ）のＳ２（ＺＰ）の値を記憶しておき、ＺＰ（Ｘ、Ｙ）が入力されるとＳ２（ＺＰ）が出力されるようにする。そして出力されたＳ２（ＺＰ）に基づいて、Ｍ（ＺＰ）＝Ｓ１−Ｓ２（ＺＰ）を求めればよい。
【００８３】
具体的には本実施形態では、ＺＰ（Ｘ、Ｙ）からα（Ｘ、Ｙ）への変換を、インデックスカラー・テクスチャマッピングを利用して実現している。即ち、まず図８のＢ１に示すように、元画像の各画素のＺ値を、ルックアップテーブルＬＵＴのインデックス番号として扱う（Ｚ値をインデックス番号とみなす）。この場合、ルックアップテーブルＬＵＴは、インデックス番号としてＺＰを入力した場合に、Ｍ（ＺＰ）（Ｓ２（ＺＰ））が出力されるテーブルになっており、前処理により予め計算されている。そしてＢ２に示すように、元画像のＺ値（画像情報）がインデックス番号として扱われるＬＵＴを用いて、仮想プリミティブ面（例えば表示画面サイズのスプライト、ポリゴン）に対してインデックスカラー・テクスチャマッピングを行い、元画像のＺ値を変換する。これにより、元画像の各画素のＺ値に応じた値に設定されたα値を得ることができる。
【００８４】
なお、図８では、表示画面サイズの仮想プリミティブ面（仮想オブジェクト）に対してテクスチャマッピングを行っているが、表示画面を分割したサイズの仮想プリミティブ面に対してテクスチャマッピングを行うようにしてもよい。またインデックスカラー・テクスチャマッピングを利用しない方法で、ルックアップテーブルによる変換処理を実現してもよい。
【００８５】
また本実施形態では、α値にむらをつける手法、即ちα値を仮想プレーン内（画素間）で不均一にする手法を採用している。即ち、図９のＣ１に示すように、元画像のＺ値ＺＰ（Ｚプレーン）を変換し、ＺＰに応じて各画素のα値が設定されるα値αＰ１（第１のα値、第１のαプレーン）を得る。また図９のＣ２に示すように、仮想プレーン内でα値が不均一に設定されたαむら設定用α値αＵＰ（αむら設定用αプレーン）を用意する。
【００８６】
そして図９のＣ３に示すように、αＰ１とαＵＰを合成（乗算）して、α値αＰ２（第２のα値、第２のαプレーン）を得る。このようにすることで、Ｚ値とαむら（むら模様）の両方が加味されたα値（フォグ濃度値）を得ることができる。なお、α値の合成処理としては、各画素のαＰ１、αＵＰを乗算する処理を考えることができるが、α値の加算、減算又は除算等、乗算以外の合成処理を採用してもよい。
【００８７】
次に図９のＣ４に示すように、得られたαＰ２に基づいて、元画像の色ＩＣＰと色ＣＰ（フォグの色）とを合成し、フォグ画像（完成画像）を生成する。ここで、色の合成としては、狭義のαブレンディング又は加算αブレンディングなどを考えることができる。
【００８８】
図９の手法を採用すれば、Ｚ値（距離）に応じて濃度が変化すると共にその濃度にむらがあるフォグを、元画像に対して施すことが可能になる。
【００８９】
図１０は、ＸＹ方向のフォグ濃度分布を表すテクスチャである。即ち上式（６）、（７）のＬ（Ｘ、Ｙ）のフォグ濃度分布を表すテクスチャである。また図１１は、フォグむらを表現するためのテクスチャである。即ち図９のＣ２に示すαむら設定用α値のテクスチャである。このようなテクスチャを用いることで、図３、図４に示すような球状むらフォグを表現でき、これまでにはないフォグ画像を生成できる。
【００９０】
なお本実施形態では、図１２のＤ１に示すような基準フォグ濃度分布関数（標準的なフォグ濃度分布関数）についてのルックアップテーブルである基準ルックアップテーブルをルックアップテーブル記憶部１７８に記憶しておく。そしてＤ２に示す基準ルックアップテーブルの変換処理を行い、変換処理により得られるＤ３のルックアップテーブルに基づいて、基準フォグ濃度分布関数とは分散（広がり）パラメータ等が異なるＤ４に示すフォグ濃度分布関数のＭ（ＺＰ）を求める。即ちＤ４のフォグ濃度分布関数のフォグ画像を生成する場合には、Ｄ２の基準ルックアップテーブルを変換することで得られるＤ３のルックアップテーブルを、元画像の各画素ＺＰ（Ｘ、Ｙ）に基づき参照してＭ（ＺＰ）（Ｓ２（ＺＰ））を求め、α（Ｘ、Ｙ）を求める。このようにすれば、ルックアップテーブル記憶部１７８には基準ルックアップテーブルを記憶するだけで済むため、記憶部１７０の使用記憶容量を節約できる。
【００９１】
例えば本実施形態の比較例として、図１２のＤ４に示すように分散パラメータＢが変化した場合に、Ｍ（ＺＰ）＝∫１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］を再度計算し直して、Ｄ３に示すルックアップテーブルを求める手法が考えられる。しかしながら、この手法によると、ルックアップテーブルの作成処理の負荷が過大になる。
【００９２】
この点、図１２の手法では、Ｄ４のフォグ濃度分布関数が、Ｄ１の基準フォグ濃度分布関数を、分布中心Ｚ０を基準に、Ｚ軸のマイナス方向（左方向）及びプラス方向（右方向）に拡大又は縮小したものに相当することに着目して、Ｄ５に示す変換処理を実現している。即ち、ＺＰを、分散パラメータＢに応じて求められる係数で拡大又は縮小する演算を行い、演算により得られたＺＰ’を基準ルックアップテーブルのインデックス番号として扱って、Ｍ（ＺＰ’）（αＯＵＴ）を得る。この際、例えばＺＰ’＝２．４であり、ＩＮＤＥＸ＝２とＩＮＤＥＸ＝３の間の値である場合には、ＩＮＤＥＸ＝ＺＰ＝２の時のＭ（ＺＰ）とＩＮＤＥＸ＝ＺＰ＝３の時のＭ（ＺＰ）を線形補間し、線形補間により得られた値を、ＺＰ’＝２．４の時のＭ（ＺＰ’）に設定すればよい。このようにすれば、Ｍ（ＺＰ）＝∫１／ｅｘｐ［（Ｚ−Ｚ０）2／Ｂ］を再度計算し直す手法に比べて、少ない処理負荷でＤ３に示すルックアップテーブルを得ることが可能になる。
【００９３】
２．３  描画処理
本実施形態では、α（Ｘ、Ｙ）＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）の演算処理やα（Ｘ、Ｙ）に基づくフォグ画像の生成処理を実現するために、次のような描画処理を行っている。
【００９４】
まず図１３のＥ１に示すように、Ｒプレーン、Ｇプレーン、Ｂプレーンのいずれかのプレーンである例えばＲプレーン（広義には第Ｊのプレーン）にＬ（Ｘ、Ｙ）が設定されたテクスチャを用意する。即ちＸＹ方向でのフォグ濃度分布である図１０のＬ（Ｘ、Ｙ）のテクスチャを用意する。そしてＥ２に示すように、このテクスチャ（Ｌ（Ｘ、Ｙ））がマッピングされたプリミティブ面（表示画面サイズのスプライト、ポリゴン）を、αプレーンにＭ（ＺＰ）が設定されたワークバッファ（広義には描画バッファ）に描画する。より具体的には、Ｒプレーン、Ｇプレーン、ＢプレーンのいずれかのプレーンであるＲプレーン（第Ｊのプレーン）にＮ（ＺＰ）が設定され、αプレーンにＭ（ＺＰ）が設定されたワークバッファに対して、ディスティネーションαでプリミティブ面を加算ブレンディング描画する。この場合にワークバッファのαプレーンへのＭ（ＺＰ）の設定は、図８で説明したインデックスカラー・テクスチャマッピングにより実現できる。
【００９５】
このようにすることでＥ３に示すように、ワークバッファの例えばＲプレーンにα（Ｘ、Ｙ）＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）を生成できる。即ち、加算αブレンディング処理は、下式のように表すことができる。
【００９６】
ＲQ＝Ｒ1＋α×Ｒ2
ＧQ＝Ｇ1＋α×Ｇ2
ＢQ＝Ｂ1＋α×Ｂ2
そして上式において、Ｒ2＝Ｌ（Ｘ、Ｙ）、Ｇ2＝Ｂ2＝０、α＝Ｍ（ＺＰ）、Ｒ1＝Ｎ（ＺＰ）、Ｇ1＝Ｂ1＝０に設定すれば、ＲQ＝Ｒ2×α＋Ｒ1＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）を得ることができる。
【００９７】
図１３の手法を用いれば、ワークバッファ（描画バッファ）へのプリミティブ面の描画処理を行うだけで、α（Ｘ、Ｙ）＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）の演算処理を実現でき、少ない処理負荷でこの演算処理を実現できるという利点がある。
【００９８】
また本実施形態では図１４に示すように、ワークバッファのＲプレーン（第Ｊのプレーン）のα（Ｘ、Ｙ）がインデックス番号として扱われ、フォグ色のＲ、Ｇ、Ｂ値がＲ、Ｇ、Ｂ値（Ｒ、Ｇ、Ｂ成分）に設定され、インデックス番号と同じ値がα値（α成分）に設定されたルックアップテーブルＬＵＴを用意する。そしてこのＬＵＴを用いて、仮想プリミティブ面（表示画面サイズのスプライト、ポリゴン）にインデックスカラー・テクスチャマッピングを行い、元画像が描画されているフレームバッファ（広義には描画バッファ）に描画する。
【００９９】
このようにすれば、仮想プリミティブ面のテクスチャのＲ、Ｇ、Ｂプレーンにはフォグ色のＲ、Ｇ、Ｂ値が設定され、αプレーンには、インデックス番号と同じ値であるα（Ｘ、Ｙ）が設定されるようになる。従ってこのテクスチャがマッピングされた仮想プリミティブ面を、元画像が描画されているフレームバッファに描画すれば、元画像の各画素の色（ＲＧＢ）とフォグ色（ＲＧＢ）とが、α（Ｘ、Ｙ）に基づいてαブレンディングされるようになる。この結果、図３、図４に示すように、キャラクタや背景が描かれている元画像に対して、フォグ色がα（Ｘ、Ｙ）でブレンディング描画されるようになり、フォグ画像を生成できる。しかも図１４の手法によれば、１回のインデックスカラー・テクスチャマッピングを行うだけで済むため、少ない処理負荷でリアルなフォグ画像を生成できるという利点がある。なお図１４のルックアップテーブルＬＵＴに設定されるフォグ色のＲ、Ｇ、Ｂ値は、α（Ｘ、Ｙ）（ＩＮＤＥＸ）に対して一定色であってもよいし、α（Ｘ、Ｙ）に応じて変化する色であってもよい。また図１４では、フォグ色のＲ、Ｇ、Ｂ値をルックアップテーブルのＲ、Ｇ、Ｂ値（Ｒ、Ｇ、Ｂ成分）に設定しているが、フォグ色を仮想プリミティブ面の頂点カラーに設定してもよい。
【０１００】
２．５  詳細な処理例
次に本実施形態の詳細な処理例を図１５のフローチャートを用いて説明する。
【０１０１】
まず、スクリーン（視点）座標系での球状フォグの位置と大きさを求める（ステップＳ１）。即ちワールド座標系に配置された球状フォグのスクリーン座標系での位置と大きさを求める。そして図８で説明したように、ＺバッファのＺ値であるＺＰ（Ｘ、Ｙ）をルックアップテーブルＬＵＴのインデックス番号として扱い、インデックスカラー・テクスチャマッピングを行う（ステップＳ２）。この際に、図１３のＥ４に示すように、ワークバッファのＲプレーンにＮ（ＺＰ）、αプレーンにＭ（ＺＰ）が生成されるようにする。
【０１０２】
次に図１３のＥ１、Ｅ２に示すように、テクスチャのＲ、Ｇ、Ｂ、αプレーンに（Ｌ（Ｘ、Ｙ）、０、０、０）が設定されたポリゴン（広義には仮想プリミティブ面）をワークバッファに描画する（ステップＳ３）。この際に、ディスティネーションαでポリゴンを加算αブレンディング描画（乗算描画）することで、図１３のＥ３に示すようにワークバッファのＲプレーンにα（Ｘ、Ｙ）＝Ｌ（Ｘ、Ｙ）×Ｍ（ＺＰ）＋Ｎ（ＺＰ）が生成されるようにする。
【０１０３】
次に図９で説明したように、図１１に示すαむら設定用のα値と、ワークバッファのＲプレーンを乗算して、α値にむらを付加する（ステップＳ４）。具体的にはαむら設定用α値（むら模様）をワークバッファのＧプレーンに生成する。そして、インデックスカラー・テクスチャマッピングを利用してＧプレーンのαむら設定用α値をαプレーンにコピーし、Ｒプレーンと乗算する。
【０１０４】
次に図１４で説明したように、ワークバッファのＲプレーンのα（Ｘ，Ｙ）がインデックス番号として扱われ、Ｒ、Ｇ、Ｂ値にフォグ色のＲ、Ｇ、Ｂ値が設定され、α値にインデックス番号と同じ値が設定されたルックアップテーブルＬＵＴを用いて、インデックスカラーテクスチャマッピングを行い、元画像が描画されているワークバッファにブレンド描画する（ステップＳ５）。このようにすることで、図３、図４に示すフォグ画像が生成される。
【０１０５】
３．ハードウェア構成
図１６に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介してダウンロードされたプログラム、或いはＲＯＭ９５０に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、マトリクス演算（ベクトル演算）を高速に実行する。例えばオブジェクトを移動させたり動作（モーション）させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１０６】
ジオメトリプロセッサ９０４は、メインプロセッサ９００上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ９０６は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセラレートする。これにより、オープニング画面やゲーム画面において、ＭＰＥＧ方式等で圧縮された動画像を表示できる。
【０１０７】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を実行する。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０を利用して、描画データを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると描画プロセッサ９１０は、描画データやテクスチャに基づいて、Ｚバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ９２２に描画する。また描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエイリアシング、シェーディング処理なども行う。１フレーム分の画像がフレームバッファ９２２に書き込まれるとその画像はディスプレイ９１２に表示される。
【０１０８】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などのゲーム音を生成し、スピーカ９３２を介して出力する。ゲームコントローラ９４２やメモリカード９４４からのデータはシリアルインターフェース９４０を介して入力される。
【０１０９】
ＲＯＭ９５０にはシステムプログラムなどが格納されている。業務用ゲームシステムの場合にはＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されている。なおＲＯＭ９５０の代わりにハードディスクを利用してもよい。ＲＡＭ９６０は各種プロセッサの作業領域となる。ＤＭＡコントローラ９７０は、プロセッサ、メモリ間でのＤＭＡ転送を制御する。ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されているＣＤ９８２にアクセスする。通信インターフェース９９０はネットワーク（通信回線、高速シリアルバス）を介して外部との間でデータ転送を行う。
【０１１０】
なお本実施形態の各部（各手段）の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されているプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１１１】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納されている。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９００、９０２、９０４、９０６、９１０、９３０に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９００、９０２、９０４、９０６、９１０、９３０は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０１１２】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（仮想プリミティブ面、描画バッファ等）と共に記載された用語（スプライト・ポリゴン、フレームバッファ・ワークバッファ等）は、明細書または図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【０１１３】
フォグ濃度分布関数、フォグモデル、Ｚ値からα値への変換手法、フォグ画像生成のための描画手法も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。例えば本実施形態で説明したものとは異なるフォグ濃度分布関数、フォグモデルを用いたり、インデックスカラー・テクスチャマッピング以外の手法でＺ値からα値への変換処理を実現してもよい。また、いわゆる頂点シェーダーやピクセルシェーダーの手法により、本発明の処理を実現してもよい。
【０１１４】
また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【０１１５】
【図１】本実施形態の画像生成システムの機能ブロック図の例。
【図２】元画像のＺ値をα値に変換し、得られたα値で元画像の色とフォグの色を合成する手法の説明図。
【図３】本実施形態の手法により生成される画像の例。
【図４】本実施形態の手法により生成される画像の例。
【図５】フォグモデルの例。
【図６】フォグ濃度分布関数の積分処理の説明図。
【図７】図７（Ａ）（Ｂ）（Ｃ）もフォグ濃度分布関数の積分処理の説明図。
【図８】インデックスカラー・テクスチャマッピングを利用して、Ｚ値をα値に変換する手法の説明図。
【図９】αむら設定用α値を用いてフォグむらを表現する手法の説明図。
【図１０】ＸＹ方向のフォグ濃度分布を表すテクスチャの例。
【図１１】フォグむら用のテクスチャの例。
【図１２】基準ルックアップテーブルを変換する手法の説明図。
【図１３】本実施形態の描画手法の説明図。
【図１４】本実施形態の描画手法の説明図。
【図１５】本実施形態の処理の詳細例。
【図１６】ハードウェア構成例。
【符号の説明】
【０１１６】
１００  処理部、１１０  オブジェクト空間設定部、１１２  移動・動作処理部、
１１４  仮想カメラ制御部、１２０  描画部、１２２  α値設定部、
１２４  フォグ画像生成部、１３０  音生成部、１６０  操作部、１７０  記憶部、
１７２  描画バッファ、１７４  テクスチャ記憶部、１７６  Ｚバッファ、
１７８  ルックアップテーブル記憶部、１８０  情報記憶媒体、
１９０  表示部、１９２  音出力部、１９４  携帯型情報記憶装置、１９６  通信部
【図１】
2006318386.tif 000003
【図２】
2006318386.tif 000004
【図３】
2006318386.tif 000005
【図５】
2006318386.tif 000006
【図６】
2006318386.tif 000007
【図７】
2006318386.tif 000008
【図８】
2006318386.tif 000009
【図９】
2006318386.tif 000010
【図１２】
2006318386.tif 000011
【図１３】
2006318386.tif 000012
【図１４】
2006318386.tif 000013
【図１５】
2006318386.tif 000014
【図１６】
2006318386.tif 000015
【図４】
2006318386.tif 000016
【図１０】
2006318386.tif 000017
【図１１】
2006318386.tif 000018