(57)【特許請求の範囲】
【請求項１】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
元画像の各画素のＺ値に応じて各画素のα値が設定される第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
元画像の各画素の色と所与の色とを、前記第２のα値に基づいて合成する色合成部として、
コンピュータを機能させ、
前記α値合成部が、
前記仮想プレーン内でのむらが異なる複数のαむら設定用α値を合成して、前記第１のα値の合成対象となるαむら設定用α値を生成し、
前記複数のαむら設定用α値に対応する複数の前記仮想プレーンのうち最も手前側の仮想プレーンについての仮想カメラからの仮想距離が、所与の距離よりも小さくなった場合に、前記最も手前側の仮想プレーンに対応するαむら設定用α値の合成率を低くし、前記複数の仮想プレーンのうち最も奥側の仮想プレーンについての仮想カメラからの仮想距離が、所与の距離よりも大きくなった場合に、前記最も奥側の仮想プレーンに対応するαむら設定用α値の合成率を低くすることを特徴とするプログラム。
【請求項２】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
元画像の各画素のＺ値に応じて各画素のα値が設定される第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
元画像の各画素の色と所与の色とを、前記第２のα値に基づいて合成する色合成部として、
コンピュータを機能させ、
前記α値合成部が、
仮想カメラ情報及び時間情報の少なくとも一方に応じて、前記仮想プレーン内でのむらが変化するように、αむら設定用α値が設定され、
αむら設定用α値に対応する前記仮想プレーンについての仮想カメラからの仮想距離が小さくなるほど、前記仮想プレーン内でのむらが拡大するように、αむら設定用α値が設定されることを特徴とするプログラム。
【請求項３】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
元画像の各画素のＺ値に応じて各画素のα値が設定される第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
元画像の各画素の色と所与の色とを、前記第２のα値に基づいて合成する色合成部として、
コンピュータを機能させ、
前記α値合成部が、
仮想カメラ情報及び時間情報の少なくとも一方に応じて、前記仮想プレーン内でのむらが変化するように、αむら設定用α値が設定され、
スクリーンに平行な第１の方向に仮想カメラが移動した場合に、前記仮想プレーン内でのむらが第１の方向とは逆方向の第２の方向に移動するように、αむら設定用α値が設定されることを特徴とするプログラム。
【請求項４】
請求項２又は３において、
前記α値合成部が、
むら模様テクスチャを仮想オブジェクトにマッピングすることで、αむら設定用α値を生成すると共に、前記仮想オブジェクトに設定されるテクスチャ座標を、仮想カメラ情報及び時間情報の少なくとも一方に応じて変化させることを特徴とするプログラム。
【請求項５】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
元画像の各画素のＺ値に応じて各画素のα値が設定される第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
元画像の各画素の色と所与の色とを、前記第２のα値に基づいて合成する色合成部として、
コンピュータを機能させ、
前記α値合成部が、
元画像の各画素でのＺ値に基づいて、αむら設定用α値の合成に使用するα値を設定することを特徴とするプログラム。
【請求項６】
請求項５において、
前記α値合成部が、
αむら設定用α値に対応する前記仮想プレーンの仮想Ｚ値よりも元画像のＺ値の方が仮想カメラから見て手前側にある画素については、αむら設定用α値の合成が行われないように、αむら設定用α値の合成に使用するα値を設定することを特徴とするプログラム。
【請求項７】
請求項５又は６において、
前記α値合成部が、
元画像のＺ値をインデックスカラー・テクスチャマッピング用のルックアップテーブルのインデックス番号として扱い、前記ルックアップテーブルを用いて仮想オブジェクトに対してインデックスカラー・テクスチャマッピングを行うことで、元画像のＺ値を、αむら設定用α値の合成に使用するα値に変換することを特徴とするプログラム。
【請求項８】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
生成された第２のα値に基づいて画像生成処理を行う画像生成部として、
コンピュータを機能させると共に、
前記α値合成部が、
前記仮想プレーン内でのむらが異なる複数のαむら設定用α値を合成して、前記第１のα値の合成対象となるαむら設定用α値を生成し、
前記複数のαむら設定用α値に対応する複数の前記仮想プレーンのうち最も手前側の仮想プレーンについての仮想カメラからの仮想距離が、所与の距離よりも小さくなった場合に、前記最も手前側の仮想プレーンに対応するαむら設定用α値の合成率を低くし、前記複数の仮想プレーンのうち最も奥側の仮想プレーンについての仮想カメラからの仮想距離が、所与の距離よりも大きくなった場合に、前記最も奥側の仮想プレーンに対応するαむら設定用α値の合成率を低くすることを特徴とするプログラム。
【請求項９】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
生成された第２のα値に基づいて画像生成処理を行う画像生成部として、
コンピュータを機能させると共に、
前記α値合成部が、
仮想カメラ情報及び時間情報の少なくとも一方に応じて、前記仮想プレーン内でのむらが変化するように、αむら設定用α値が設定され、
αむら設定用α値に対応する前記仮想プレーンについての仮想カメラからの仮想距離が小さくなるほど、前記仮想プレーン内でのむらが拡大するように、αむら設定用α値が設定されることを特徴とするプログラム。
【請求項１０】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
生成された第２のα値に基づいて画像生成処理を行う画像生成部として、
コンピュータを機能させると共に、
前記α値合成部が、
元画像の各画素でのＺ値に基づいて、αむら設定用α値の合成に使用するα値を設定することを特徴とするプログラム。
【請求項１１】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１〜１０のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１２】
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
元画像の各画素のＺ値に応じて各画素のα値が設定される第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
元画像の各画素の色と所与の色とを、前記第２のα値に基づいて合成する色合成部と、
を含み、
前記α値合成部が、
元画像の各画素でのＺ値に基づいて、αむら設定用α値の合成に使用するα値を設定することを特徴とする画像生成システム。
【請求項１３】
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
生成された第２のα値に基づいて画像生成処理を行う画像生成部とを含み、
前記α値合成部が、
前記仮想プレーン内でのむらが異なる複数のαむら設定用α値を合成して、前記第１のα値の合成対象となるαむら設定用α値を生成し、
前記複数のαむら設定用α値に対応する複数の前記仮想プレーンのうち最も手前側の仮想プレーンについての仮想カメラからの仮想距離が、所与の距離よりも小さくなった場合に、前記最も手前側の仮想プレーンに対応するαむら設定用α値の合成率を低くし、前記複数の仮想プレーンのうち最も奥側の仮想プレーンについての仮想カメラからの仮想距離が、所与の距離よりも大きくなった場合に、前記最も奥側の仮想プレーンに対応するαむら設定用α値の合成率を低くすることを特徴とする画像生成システム。
【請求項１４】
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
生成された第２のα値に基づいて画像生成処理を行う画像生成部とを含み、
前記α値合成部が、
仮想カメラ情報及び時間情報の少なくとも一方に応じて、前記仮想プレーン内でのむらが変化するように、αむら設定用α値が設定され、
αむら設定用α値に対応する前記仮想プレーンについての仮想カメラからの仮想距離が小さくなるほど、前記仮想プレーン内でのむらが拡大するように、αむら設定用α値が設定されることを特徴とする画像生成システム。
【請求項１５】
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
第１のα値と、各画素のα値がスクリーンに概平行な仮想プレーン内でむらとなるように設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、
生成された第２のα値に基づいて画像生成処理を行う画像生成部とを含み、
前記α値合成部が、
元画像の各画素でのＺ値に基づいて、αむら設定用α値の合成に使用するα値を設定することを特徴とする画像生成システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
従来より、仮想的な３次元空間であるオブジェクト空間内において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。ロールプレイングゲーム（ＲＰＧ）を楽しむことができる画像生成システムを例にとれば、プレーヤは、自身の分身であるキャラクタ（オブジェクト）を操作してオブジェクト空間内のマップ上で移動させ、敵キャラクタと対戦したり、他のキャラクタと対話したり、様々な町を訪れたりすることでゲームを楽しむ。
【０００３】
さて、このような画像生成システムでは、霧、もや、煙、ホコリなどのフォグ（fog）が掛かったゲーム場面を表示する場合がある。そして、プレーヤの仮想現実感の向上のためには、フォグのむら（nonuniformity,unevenness）についてもリアルに表現できることが望まれる。
【０００４】
このようなフォグむらを表現する１つの手法として、半透明ポリゴンのビルボードを利用する手法が考えられる。この手法では、フォグのむら模様（nonuniform pattern）をマッピングした複数枚の半透明ポリゴンを用意し、これらの半透明ポリゴンを仮想カメラに正対するように奥行き方向に並べる。
【０００５】
しかしながら、この手法では、フォグ表現用の半透明ポリゴンとその他のポリゴンとの交差ラインが見えてしまうため、不自然な画像が生成されてしまう。
【０００６】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、フォグのむら模様等を少ない処理負荷でリアルに表現できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【０００７】
【課題を解決するための手段】
本発明は、オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、元画像の各画素のＺ値に応じた値に各画素のα値が設定される第１のα値と、各画素のα値が仮想プレーン内で不均一に設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、元画像の各画素の色と所与の色とを、前記第２のα値に基づいて合成する色合成部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【０００８】
本発明では、元画像のＺ値（奥行き値）に応じて設定された第１のα値と、αむら設定用α値が合成され、得られた第２のα値に基づいて、元画像の色と所与の色（例えばフォグの色）が合成される。このようにすることで、元画像のＺ値とαむら（むら模様）の両方が加味された画像エフェクトを、元画像に対して施すことができる。これにより、リアルで自然な画像を生成できる。
【０００９】
なお、元画像のＺ値をインデックスカラー・テクスチャマッピング用のルックアップテーブルのインデックス番号として扱い（Ｚ値をインデックス番号とみなし）、このルックアップテーブルを用いて仮想オブジェクトに対してインデックスカラー・テクスチャマッピングを行うことで、元画像のＺ値を第１のα値に変換してもよい。
【００１０】
また本発明では、色合成部を省略する構成にすることもできる。
【００１１】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値合成部が、仮想プレーン内でのむら模様が異なる複数のαむら設定用α値を合成して、前記第１のα値の合成対象となるαむら設定用α値を生成してもよい。
【００１２】
この場合、複数のαむら設定用α値に対応する複数の仮想プレーンに対して、仮想カメラからの仮想距離を設定し、この仮想距離に基づいて、複数のαむら設定用α値の合成に使用するα値を制御したり、複数のαむら設定用α値の仮想プレーン内でのむら模様を制御してもよい。
【００１３】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値合成部が、前記複数のαむら設定用α値に対応する複数の仮想プレーンのうち最も手前側の仮想プレーンについての仮想カメラからの仮想距離が、所与の距離よりも小さくなった場合に、最も手前側の仮想プレーンに対応するαむら設定用α値の合成率を低くし、前記複数の仮想プレーンのうち最も奥側の仮想プレーンについての仮想カメラからの仮想距離が、所与の距離よりも大きくなった場合に、最も奥側の仮想プレーンに対応するαむら設定用α値の合成率を低くしてもよい。
【００１４】
なお、最も手前側の仮想プレーンに対応するαむら設定用α値の合成率を低くした後に（零にした後に）、最も奥側の仮想プレーンの更に奥側に、新たな仮想プレーンを発生させてもよい。また、最も奥側の仮想プレーンに対応するαむら設定用α値の合成率を低くした後に（零にした後に）、最も手前側の仮想プレーンの更に手前側に、新たな仮想プレーンを発生させてもよい。
【００１５】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、仮想カメラ情報及び時間情報の少なくとも一方に応じて、αむら設定用α値の仮想プレーン内でのむら模様を変化させてもよい。
【００１６】
このようにすれば、仮想カメラの動きや時間経過に応じて、むら模様が多様に変化するようになり、更にリアルな画像を生成できる。
【００１７】
なお、この場合に、複数のαむら設定用α値の仮想プレーン内でのむら模様を変化させてもよいし、複数のαむら設定用α値を合成することで得られるαむら設定用α値（第１のα値の合成対象になるαむら設定用α値）のむら模様を変化させてもよい。
【００１８】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、αむら設定用α値に対応する仮想プレーンについての仮想カメラからの仮想距離が小さくなるほど、αむら設定用α値のむら模様を拡大してもよい。
【００１９】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値合成部が、スクリーンに平行な第１の方向に仮想カメラが移動した場合に、αむら設定用α値のむら模様を、第１の方向とは逆方向の第２の方向に移動させてもよい。
【００２０】
なお、この場合に、αむら設定用α値のむら模様の移動距離を、仮想カメラからの仮想距離に応じて変化させてもよい。
【００２１】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値合成部が、むら模様テクスチャを仮想オブジェクトにマッピングすることで、αむら設定用α値を生成すると共に、前記仮想オブジェクトに設定されるテクスチャ座標を、仮想カメラ情報及び時間情報の少なくとも一方に応じて変化させてもよい。
【００２２】
このようにすれば、むら模様の変化を簡素な処理で実現できるようになる。
【００２３】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値合成部が、元画像の各画素でのＺ値に基づいて、αむら設定用α値の合成に使用するα値を設定してもよい。
【００２４】
このようにすれば、元画像のＺ値を考慮して、αむら設定用α値の合成に使用するα値を設定できるようになる。
【００２５】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値合成部が、αむら設定用α値に対応する仮想プレーンの仮想Ｚ値よりも元画像のＺ値の方が仮想カメラから見て手前側にある画素については、αむら設定用α値の合成が行われないように、αむら設定用α値の合成に使用するα値を設定してもよい。
【００２６】
なお、そのＺ値が、αむら設定用α値に対応する仮想プレーンの仮想Ｚ値よりも所与の範囲（Ｚ値の範囲）だけ奥側にある画素については、αむら設定用α値の合成に使用するα値を、徐々に大きくして行くことが望ましい。
【００２７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記α値合成部が、元画像のＺ値をインデックスカラー・テクスチャマッピング用のルックアップテーブルのインデックス番号として扱い、前記ルックアップテーブルを用いて仮想オブジェクトに対してインデックスカラー・テクスチャマッピングを行うことで、元画像のＺ値を、αむら設定用α値の合成に使用するα値に変換するようにしてもよい。
【００２８】
このようにすれば、少ない処理負荷で、元画像のＺ値を、αむら設定用α値の合成に使用するα値に変換できるようになる。
【００２９】
また本発明は、オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、第１のα値と、各画素のα値が仮想プレーン内において不均一に設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、生成された第２のα値に基づいて画像生成処理を行う画像生成部とを含み、前記α値合成部が、仮想プレーン内でのむら模様が異なる複数のαむら設定用α値を合成して、前記第１のα値の合成対象となるαむら設定用α値を生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【００３０】
また本発明は、オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、第１のα値と、各画素のα値が仮想プレーン内において不均一に設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、生成された第２のα値に基づいて画像生成処理を行う画像生成部とを含み、前記α値合成部が、仮想カメラ情報及び時間情報の少なくとも一方に応じて、αむら設定用α値の仮想プレーン内でのむら模様を変化させる画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【００３１】
また本発明は、オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、第１のα値と、各画素のα値が仮想プレーン内において不均一に設定されるαむら設定用α値とを合成して、第２のα値を生成するα値合成部と、生成された第２のα値に基づいて画像生成処理を行う画像生成部とを含み、前記α値合成部が、元画像の各画素でのＺ値に基づいて、αむら設定用α値の合成に使用するα値を設定する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【００３２】
【発明の実施の形態】
以下、本実施形態について図面を用いて説明する。
【００３３】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３４】
１．構成
図１に、本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部１００を含めばよく（或いは処理部１００と記憶部１７０を含めばよく）、それ以外の各部（機能ブロック）については任意の構成要素とすることができる。
【００３５】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、シフトレバー、アクセルペダル、ブレーキペダル、マイク、センサー、或いは筺体などのハードウェアにより実現できる。
【００３６】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭなどのハードウェアにより実現できる。
【００３７】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部（各手段）としてコンピュータを機能させるためのプログラム（各部をコンピュータに実現させるためのプログラム）が記憶（記録、格納）される。
【００３８】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、或いはＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００３９】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどのハードウェアにより実現できる。
【００４０】
携帯型情報記憶装置１９４は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【００４１】
通信部１９６は、外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００４２】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信するようにしてもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含まれる。
【００４３】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。この場合、処理部１００は、記憶部１７０内の主記憶部１７２をワーク領域として使用して、各種の処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）又はＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラム（ゲームプログラム）により実現できる。
【００４４】
処理部１００は、移動・動作処理部１１０、オブジェクト空間設定部１１２、仮想カメラ制御部１１４、画像生成部１２０、音生成部１３０を含む。なお、処理部１００は、これらの各部（機能ブロック）を全て含む必要はなく、その一部を省略してもよい。
【００４５】
移動・動作処理部１１０は、オブジェクト（移動体）の移動情報（位置、回転角度）や動作情報（オブジェクトの各パーツの位置、回転角度）を求める処理を行う。即ち、操作部１６０によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、オブジェクトを移動させたり動作（モーション、アニメーション）させたりする処理を行う。
【００４６】
オブジェクト空間設定部１１２は、移動体（キャラクタ、車、戦車、ロボット）、柱、壁、建物、マップ（地形）などの各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間内に配置設定するための処理を行う。より具体的には、ワールド座標系でのオブジェクトの位置や回転角度（方向）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転）でオブジェクトを配置する。
【００４７】
仮想カメラ制御部１１４は、オブジェクト空間内に設定される仮想カメラを制御する処理を行う。即ち、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転（Ｘ、Ｙ、Ｚ軸回りでの回転）などの仮想カメラ情報を求め、仮想カメラを制御する（視点位置や視線方向を制御する）。
【００４８】
例えば、仮想カメラにより移動オブジェクトを後方から撮影する場合には、移動オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転（仮想カメラの方向）を制御することが望ましい。この場合には、移動・動作処理部１１０で得られた移動オブジェクトの位置、方向又は速度などの情報に基づいて、仮想カメラを制御することになる。或いは、仮想カメラを、予め決められた移動経路で移動させながら予め決められた角度で回転させるようにしてもよい。この場合には、仮想カメラの位置（移動経路）や回転角度を特定するためのカメラ経路情報を予め用意しておき、このカメラ経路情報に基づいて仮想カメラを制御する。
【００４９】
画像生成部１２０は、処理部１００で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。例えば、いわゆる３次元のゲーム画像を生成する場合には、まず、座標変換、クリッピング処理、透視変換或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点（構成点）に付与される位置座標、テクスチャ座標、色（輝度）データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、ジオメトリ処理後のオブジェクト（１又は複数プリミティブ面）の画像が、描画バッファ１７４（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画される。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成されるようになる。
【００５０】
なお、画像生成部１２０は、Ｚ値（奥行き値）が格納されるＺバッファ１７６（奥行きバッファ）を用いて、Ｚバッファ法（奥行き比較法）により陰面消去を行う。更に、画像生成部１２０は、テクスチャ記憶部１７８に記憶されるテクスチャをオブジェクト（プリミティブ面）にマッピングするための処理も行う。この場合に、画像生成部１２０は、ＬＵＴ記憶部１７９に記憶されるインデックスカラー・テクスチャマッピング用のＬＵＴ（ルックアップテーブル）を用いてテクスチャマッピングを行うことができる。
【００５１】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００５２】
画像生成部１２０が含むα値合成部１２２は、第１のα値とαむら設定用α値とを合成（α値の乗算、加算、除算又は減算等）して、第２のα値を生成する処理を行う。
【００５３】
ここで、第１のα値では、例えば、元画像の各画素のＺ値に応じた値に、各画素のα値が設定されている。また、αむら設定用α値では、仮想プレーン内（画素間）において各画素のα値が不均一（nonuniform）に設定されている。
【００５４】
また、元画像は、例えば、Ｚ値を格納するＺバッファ１７６を用いて陰面消去を行いながらオブジェクトを描画バッファ１７４に描画することで生成される画像である。そして、元画像のＺ値は、この描画処理の際に行われるＺバッファ法（奥行き比較法）により、Ｚバッファ１７６上に生成（格納）される。
【００５５】
なお、本実施形態のＺ値（奥行き値）は、カメラ座標系のＺ座標軸のＺ値そのものであってもよいし、このＺ値と数学的な均等なパラメータであってもよい。例えば、カメラ座標系のＺ値の逆数に相当するパラメータや、カメラ座標系のＺ値に所与の変換処理を施すことで得られるパラメータであってもよい。
【００５６】
画像生成部１２０が含む色合成部１２４は、元画像の色と所与の色（例えばフォグの色）とを、第２のα値に基づいて合成する処理（広義には第２のα値に基づく画像生成処理）を行う。この場合の合成処理としては、αブレンディング（狭義のαブレンディング）、加算αブレンディング又は減算αブレンディング等を考えることができる。このような合成処理を行うことで、元画像にフォグ（霧、雲、湯気、もや、ほこり、ちり、煙、竜巻又は露等）が掛かった画像を生成できる。
【００５７】
合成処理がαブレンディング（狭義のαブレンディング）である場合を例にとれば、色合成部１２４は下式に従った合成処理を行う。
【００５８】
ＲＱ＝（１−α）×Ｒ１＋α×Ｒ２    （１）
ＧＱ＝（１−α）×Ｇ１＋α×Ｇ２    （２）
ＢＱ＝（１−α）×Ｂ１＋α×Ｂ２    （３）
ここで、Ｒ１、Ｇ１、Ｂ１は、元画像（描画バッファ１７４に既に描画されている画像）の色（輝度）のＲ、Ｇ、Ｂ成分であり、Ｒ２、Ｇ２、Ｂ２は、所与の色（フォグの色）のＲ、Ｇ、Ｂ成分である。また、ＲＱ、ＧＱ、ＢＱは、αブレンディングにより得られる画像（完成画像、フォグ画像）の色のＲ、Ｇ、Ｂ成分である。
【００５９】
なお、α値（Ａ値）は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、又はバンプ情報などとして使用できる。
【００６０】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００６１】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて生成してもよい。
【００６２】
２．本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【００６３】
なお、以下では、フォグむらの表現に本実施形態の手法を適用した場合を主に例にとり説明するが、本実施形態の手法は、フォグむら以外の画像表現に適用することも可能である。
【００６４】
２．１  距離に応じたフォグ濃度の変化
よりリアルなフォグ効果を表現するためには、仮想カメラ（視点）からの距離に応じてフォグ濃度を変化させることが望ましい。即ち、仮想カメラからの距離が遠くなるほどフォグ濃度を濃くする。
【００６５】
そして、このようにフォグ濃度を変化させるためには、フォグ濃度を制御するパラメータであるα値を、仮想カメラからの距離に応じて変化させることが望ましい。即ち、仮想カメラからの距離が遠くなるほどフォグ濃度が濃くなるようにα値を制御する。
【００６６】
そこで本実施形態では、仮想カメラからの距離パラメータであるＺ値（奥行き距離）をα値に変換する手法を採用している。具体的には図２のＡ１に示すように、元画像（描画バッファ上に描画された画像）のＺ値ＺＰを第１のα値αＰ１に変換する。
【００６７】
そして図２のＡ２に示すように、元画像の色ＩＣＰ（ＲＧＢ、ＹＵＶ等）と、フォグの色（白、灰色等）ＣＰとを、αＰ１に基づいて合成（αブレンディング等）する。これにより、元画像にフォグ効果が施されたフォグ画像（広義には完成画像）を生成できる。
【００６８】
そして本実施形態では図１のＡ１に示すＺ値からα値への変換を、インデックスカラー・テクスチャマッピングを有効利用して実現している。
【００６９】
即ち、インデックスカラー・テクスチャーマッピングでは、テクスチャ記憶部の使用記憶容量を節約するために、図３のＢ１に示すように、実際の色情報（ＲＧＢ）ではなくインデックス番号が、テクスチャの各テクセルに関連づけて記憶される。また、図３のＢ２に示すように、インデックスカラー・テクスチャマッピング用のＬＵＴ（カラーパレット）には、インデックス番号により指定される色情報が記憶される。そして、オブジェクトに対してテクスチャマッピングを行う際には、テクスチャの各テクセルのインデックス番号に基づいてＬＵＴを参照し、対応する色情報をＬＵＴから読み出し、読み出された色情報を描画バッファ（フレームバッファ等）に描画する。
【００７０】
このようなインデックスカラーモードのテクスチャマッピングでは、ＬＵＴを用いない通常モードのテクスチャマッピングに比べて、使用できる色数は少なくなる（例えば２５６色）。しかしながら、テクスチャ記憶部に実際の色情報（例えば２４ビットの色情報）を記憶する必要が無くなるため、テクスチャ記憶部の使用記憶容量を大幅に節約できる。
【００７１】
本実施形態は、このようなインデックスカラー・テクスチャマッピングを通常とは異なる形態で利用している。
【００７２】
即ち、まず図４のＢ３に示すように、元画像の各画素のＺ値を、ルックアップテーブルＬＵＴのインデックス番号として扱う（Ｚ値をインデックス番号とみなす）。そしてＢ４に示すように、元画像のＺ値（画像情報）がインデックス番号として設定されたＬＵＴを用いて、仮想オブジェクト（例えば表示画面サイズのスプライト、ポリゴン）に対してインデックスカラー・テクスチャマッピングを行い、元画像のＺ値を変換する。これにより、元画像の各画素のＺ値に応じた値に設定されたα値を得ることができる。
【００７３】
なお、図４では、表示画面サイズの仮想オブジェクトに対してテクスチャマッピングを行っているが、表示画面を分割したサイズの仮想オブジェクトに対してテクスチャマッピングを行うようにしてもよい。
【００７４】
２．２  フォグむら
さて、図２の手法によれば、Ｚ値（仮想カメラからの距離）に応じて濃淡が変化するフォグ効果を元画像に対して施すことが可能になる。しかも、図２の手法では、仮想オブジェクトにインデックスカラー・テクスチャマッピングを行うだけで済むため、処理負荷が軽いという利点がある。
【００７５】
しかしながら、図２の手法では、濃淡（濃度）にむらがあるフォグ（不均一なフォグ）を表現できないという課題がある。
【００７６】
この場合、例えば、図２の色ＣＰ（フォグ色のスプライト）に、白、灰色、黒などの色の濃淡をつける手法を考えることもできる。
【００７７】
しかしながら、この手法では、生成されるフォグは、灰色や黒のフォグになるだけで、濃淡にむらがあるフォグにはならない。
【００７８】
そこで本実施形態では、α値にむらをつける手法、即ちα値を仮想プレーン内（画素間）で不均一にする手法を採用している。
【００７９】
即ち、まず本実施形態では図５のＣ１に示すように、図２の手法と同様に、元画像のＺ値（Ｚプレーン）ＺＰを変換し、ＺＰに応じて各画素のα値が設定される第１のα値（第１のαプレーン）αＰを得る。この場合、ＺＰからαＰ１への変換は、例えば図４で説明したインデックスカラー・テクスチャマッピングを利用した変換手法で実現する。
【００８０】
また本実施形態では図５のＣ２に示すように、仮想プレーン内でα値が不均一に設定されたαむら設定用α値（αむら設定用αプレーン）αＵＰを用意する。このαＵＰの生成手法の詳細については後述する。
【００８１】
そして本実施形態では図５のＣ３に示すように、αＰ１とαＵＰを合成して、第２のα値（第２のαプレーン）αＰ２を得る。このようにすることで、Ｚ値とαむら（むら模様）の両方が加味されたα値（フォグ濃度値）を得ることができる。なお、α値の合成処理としては、各画素のαＰ１、αＵＰを乗算する処理を考えることができる。但し、α値の加算、減算又は除算等、乗算以外の合成処理を採用してもよい。
【００８２】
次に本実施形態では図５のＣ４に示すように、得られたαＰ２に基づいて、元画像の色ＩＣＰと色ＣＰ（フォグの色）とを合成し、フォグ画像（完成画像）を生成する。ここで、色の合成としては、狭義のαブレンディング（上式（１）〜（３））又は加算αブレンディングなどを考えることができる。
【００８３】
以上のようにすることで、Ｚ値（距離）に応じて濃度が変化すると共にその濃度にむらがあるフォグを、元画像に対して施すことが可能になる。
【００８４】
図６に、本実施形態で用いられる元画像の例を示す。この元画像では、複数の立方体形状のオブジェクトが、仮想カメラから見て左手前側から右奥側に向かって配列されている。
【００８５】
図７に、αむら設定用α値αＵＰの例を示し、図８に、このαＵＰを生成するために使用されるむら模様テクスチャＴＥＸの例を示す。図７、図８において、白い部分ほどα値が低くなっており、フォグ濃度が薄くなっている。一方、黒い部分ほどα値が高くなっており、フォグ濃度が濃くなっている。このように、図７、図８では、α値（フォグ濃度）が仮想プレーン（画面）内で不均一になっている。
【００８６】
図９、図１０に、本実施形態により生成されるフォグ画像の例を示す。図９、図１０に示すように本実施形態によれば、視点（仮想カメラ）からの距離が遠くなるほど、フォグの濃度が濃くなっている。また、フォグの濃度にむらがあるため、あたかも本物のフォグがオブジェクトに掛かっているように見え、これまでにないリアルな画像の生成に成功している。
【００８７】
２．３  フォグの濃度と強度
図１１に、指数フォグにおけるＺ値（Ｚバッファ値）とフォグ濃度との関係を示す。図１１のＥ１〜Ｅ５は、フォグ強度を変えた特性曲線である。Ｅ１の特性曲線はフォグ強度が最も強いものであり、Ｅ５は最も弱いものである。
【００８８】
フォグのむらを表現するためには、フォグ強度とＺ値（仮想カメラからの距離）とによって決まるフォグ濃度に対して、むらによる変化をつけることになる。そして、むらによるフォグ濃度の変化は、フォグ強度の強弱となるべく似た傾向になることが望ましい。
【００８９】
一方、むらをつけるのに用いるαブレンディングの式は、前述の式（１）〜（３）に示すように１次関数である。従って、このαブレンディングにおいて、フォグ濃度（α値）に対して可能な操作は、所与の値を中心にして所与の倍率を乗算する操作に限られる。
【００９０】
そこで本実施形態では、図１２に示すように、Ｆ２に示す元のフォグ濃度（α値）に対して、１以上の値のフォグむら値を乗算して、Ｆ２とＦ３の間の範囲（Ｆ１）のフォグ濃度を得る。そしてＦ４に示すように、得られたＦ３のフォグ濃度に対して、上限を１．０（最大値）にリミットするクランプ処理を施す。このようにして得られたＦ３、Ｆ４に示すフォグ濃度の特性曲線は、例えば図１１のＥ５に示すフォグ濃度の特性曲線と似たものになり、より現実世界に近いフォグ濃度を得ることができる。
【００９１】
なお、本実施形態のようにフォグむら値を１以上に設定する手法を採用すれば、フォグむらの強さが一定のままでも、フォグ強度を弱めるにつれてフォグむらが消えるようになる。もし、フォグむらの強さをフォグ強度に連動して変化させるのであれば、フォグむら値を１以上に設定する手法を採用しなくてもよい。
【００９２】
２．４  むらの多層化
さて、αむら設定用α値の仮想プレーンが１枚だけであると、ある奥行きにだけフォグむらが存在するかのように見えてしまい、今ひとつリアルなフォグを表現できない。
【００９３】
そこで本実施形態では、図１３に示すように、仮想カメラＶＣからの仮想距離ｄ０、ｄ１、ｄ２が異なる複数の仮想プレーンＰＬ０、ＰＬ１、ＰＬ２（２枚でもよいし、４枚以上でもよい）を仮想配置する。例えば図１３では、仮想距離がｄ０であるＰＬ０は、仮想カメラＶＣから見て最も手前側に仮想配置され、仮想距離がｄ２であるＰＬ２は、ＶＣから見て最も奥側に仮想配置されている。
【００９４】
そして本実施形態では、これらの複数の仮想プレーンＰＬ０、ＰＬ１、ＰＬ２に対応して、仮想プレーン内でのむら（nonuniformity pattern）が異なる複数のαむら設定用α値（αプレーン）αＵＰ０〜αＵＰ２を用意する。要するに、複数の仮想プレーンＰＬ０、ＰＬ１、ＰＬ２に対応して、仮想プレーン内でのむらの状態（例えば、むら模様）が異なる複数のαむら設定用α値αＵＰ０〜αＵＰ２を用意する。そして、これらの複数のαむら設定用α値αＵＰ０〜αＵＰ２を、仮想距離ｄ０〜ｄ２などに基づき得られるα値α０〜α２（合成率）を用いて合成することで、αむら設定用α値αＵＰを生成する。具体的には、仮想プレーンＰＬ０〜ＰＬ２に対応するスプライトＳＰ０〜ＳＰ２（広義には仮想オブジェクト）を配置し、これらのスプライトＳＰ０〜ＳＰ２にαむら設定用α値αＵＰ０〜αＵＰ２のテクスチャ（図８参照）をマッピングして、ワークバッファ上で複数回重ね描きする。これにより、むらが２層以上重なって見える画像を生成できるようになる。
【００９５】
また本実施形態では図１４（Ａ）に示すように、仮想カメラＶＣが移動（前進）し、最も手前側の仮想プレーンＰＬ０の仮想距離ｄ０が所与の距離以下になると、ＰＬ０に対応するαむら設定用α値αＵＰ０の合成率（ブレンド率）を低くし、徐々に消して行く。そして、仮想プレーンＰＬ２の奥側に新たな仮想プレーンＰＬＮを発生し、ＰＬＮに対応するαむら設定用α値αＵＰＮの合成率を徐々に高くする。
【００９６】
一方、図１４（Ｂ）に示すように、仮想カメラＶＣが移動（後退）し、最も奥側の仮想プレーンＰＬ２の仮想距離ｄ２が所与の距離以上になると、ＰＬ２に対応するαＵＰ２の合成率を低くし、徐々に消して行く。そして、ＰＬ０の手前側に新たな仮想プレーンＰＬＮを発生し、ＰＬＮに対応するαＵＰＮの合成率を徐々に高くする。
【００９７】
図１４（Ａ）、（Ｂ）に示すような処理を行うことで、有限の枚数のαＵＰ０〜αＵＰ２の仮想プレーンを用いながらも、無限の枚数の仮想プレーンを用いた場合と同様の効果を得ることができる。
【００９８】
２．５  仮想カメラ情報に基づくむらの変化
本実施形態では、仮想カメラ情報（仮想カメラの位置又は方向等）や時間情報（時間やフレームの経過を表す情報）に基づいて、αむら設定用α値の仮想プレーン内でのむらを変化させている。要するに、仮想カメラ情報や時間情報に基づいて、αむら設定用α値の仮想プレーン内でのむらの状態（例えば、むら模様）を変化させている。
【００９９】
具体的には図１５（Ａ）に示すように、仮想カメラＶＣと仮想プレーンＰＬ（ＰＬ０〜ＰＬ２）との仮想距離ｄ（ｄ０〜ｄ２）が小さくなるほど、ＰＬに対応するαＵＰのむら模様を拡大する。逆に、仮想距離ｄが遠くなるほど、αＵＰのむら模様を縮小する。
【０１００】
このようにすれば、例えば図１３において、仮想カメラＶＣからの仮想距離ｄ０が近い仮想プレーンＰＬ０のαＵＰ０では、そのむら模様が大きくなり、仮想距離ｄ２が遠い仮想プレーンＰＬ２のαＵＰ２では、そのむら模様が小さくなる。従って、むら模様に奥行き感や立体感を持たせることができ、よりリアルな画像を生成できるようになる。
【０１０１】
また、本実施形態では図１５（Ｂ）に示すように、スクリーン（スクリーン座標系のＸＹ平面）に平行な第１の方向（例えば上下左右のうちの左方向）に仮想カメラＶＣが移動した場合に、それとは逆の第２の方向（例えば右方向）に、αＵＰ（αＵＰ０〜αＵＰ２）のむら模様を適正距離だけ移動させる。
【０１０２】
この場合に本実施形態では、むら模様の移動距離を、仮想プレーンＰＬ（ＰＬ０〜ＰＬ２）の仮想距離ｄ（ｄ０〜ｄ２）に応じて変化させている。具体的には図１３において、短い仮想距離ｄ０の仮想プレーンＰＬ０のαＵＰ０では、仮想カメラＶＣの移動に対するむら模様の移動距離を大きくし、遠い仮想距離ｄ２の仮想プレーンＰＬ２のαＵＰ２では、仮想カメラＶＣの移動に対するむら模様の移動距離を小さくする。
【０１０３】
このようにすることで、平面の仮想プレーンを用いているのにもかかわらず、あたかも立体的なフォグが目の前にあるかのように見える画像を生成できる。
【０１０４】
なお、本実施形態では、図８に示すようなむら模様テクスチャＴＥＸ（αむら設定用テクスチャ）を仮想オブジェクト（スプライト、ポリゴン）にマッピングすることで、図７に示すようなαむら設定用α値αＵＰ（αＵＰ０〜αＵＰ２）を生成している。そして本実施形態では、仮想オブジェクトに設定されるテクスチャ座標（各頂点に与えられるテクスチャ座標）を、仮想カメラ情報（又は時間情報）に基づいて、変化させている。
【０１０５】
具体的には図１６（Ａ）、（Ｂ）に示すように、仮想オブジェクトに与えるテクスチャ座標（Ｕ０、Ｖ０）〜（Ｕ３、Ｖ３）を仮想カメラ情報に基づいて変化させる。
【０１０６】
例えば図１６（Ａ）に示すように、テクスチャＴＥＸを読み出すためのテクスチャ座標を（Ｕ０、Ｖ０）〜（Ｕ３、Ｖ３）から（Ｕ０’、Ｖ０’）〜（Ｕ３’、Ｖ３’）に変更すれば、図１５（Ａ）で説明したむら模様の拡大を実現できる。逆に、テクスチャ座標を（Ｕ０’、Ｖ０’）〜（Ｕ３’、Ｖ３’）から（Ｕ０、Ｖ０）〜（Ｕ３、Ｖ３）に変更すれば、むら模様の縮小を実現できる。
【０１０７】
一方、図１６（Ｂ）に示すように仮想オブジェクトのテクスチャ座標を変更すれば、図１５（Ｂ）で説明したむら模様の移動を実現できる。即ち、いわゆるテクスチャスクロールの手法を用いることで、むら模様の移動を実現できる。
【０１０８】
なお、時間情報に基づいて（時間経過に応じて）、むら模様を移動させたり、むら模様を拡大・縮小すれば、風によるフォグの流れを表現できるようになる。即ち、仮想カメラの動きベクトルをＶＥＣＣ、風のベクトルをＶＥＣＷとした場合に、関数Ｆ（ＶＥＣＣ−ＶＥＣＷ）に基づきむら模様を移動させる。これにより、フォグむらに対して流れを与えることが可能になる。
【０１０９】
２．６  Ｚバッファ値の考慮
さて、フォグむら（αむら設定用α値）を重ね合わせる際には、既に描画されている元画像のＺ値（Ｚバッファ値）を考慮することが望ましい。奥にあるはずのフォグむらが、手前にあるオブジェクトに掛かってしまうと、不自然になるからである。
【０１１０】
そして、フォグむらを重ね合わせる際に、Ｚテストのように前後関係をオン／オフ方式で判定して描画すると、生成される画像が不自然になる。従って、ＯＮ／ＯＦＦ方式ではなく連続的に変化する方式が望ましい。
【０１１１】
そこで本実施形態では、元画像のＺ値に基づいて、αむら設定用α値の合成に使用するα値（図１３のα０〜α２）を設定している。
【０１１２】
より具体的には、例えば図１７（Ａ）に示すようなＺ値−α値特性になるように、αＵＰの合成に使用するα値α（α０〜α２）を設定する。
【０１１３】
例えば図１７（Ｂ）において、オブジェクトＯＢの面ＳＫのＺ値がＺＫ、面ＳＬのＺ値がＺＫ〜ＺＬ、背景のＺ値がＺＭであったとする。また、αむら設定用α値αＵＰの仮想プレーンの仮想Ｚ値（仮想カメラからの仮想的な奥行き距離）がＺＶに設定されていたとする。
【０１１４】
この場合に、図１７（Ａ）のようにαＵＰの合成に使用するαを設定すれば、Ｚ＞ＺＶにおいてα＝０（最小値）になるため、面ＳＫではαＵＰが合成されないようになる。従って、オブジェクトＯＢの面ＳＫにはフォグむらが掛からないようになる。
【０１１５】
一方、Ｚ値がＺＫ〜ＺＬとなるオブジェクトＯＢの面ＳＬでは、Ｚ値に対してαＵＰの合成に使用するαが連続的に変化する。従って、面ＳＬのフォグむらの濃度が連続的に変化するようになる。
【０１１６】
また、Ｚ値がＺＭとなる背景においては、αＵＰの合成に使用するαがα＝ａになるため、αＵＰはα＝ａの合成率（ブレンド率）で合成されるようになる。従って、背景には濃度の濃いフォグむらが掛かるようになる。
【０１１７】
例えば図７では、Ｇ１に示す部分においてαが所定値（例えば０x８０）になっている。従って、この部分においてはフォグむらが掛からないようになり、図９に示すような自然でリアルなフォグ画像を生成できる。
【０１１８】
なお、図１７（Ａ）に示すＺ値−α値特性は、図４で説明したインデックスカラー・テクスチャマッピングを利用した手法で実現できる。
【０１１９】
具体的には、元画像のＺ値をインデックスカラー・テクスチャマッピング用のルックアップテーブルＬＵＴのインデックス番号として扱う（Ｚ値をインデックス番号とみなす）。更に、ルックアップテーブルＬＵＴの内容を、図１７（Ａ）に示すようなＺ値−α値特性を表す内容にする。そして、このルックアップテーブルＬＵＴを用いて仮想オブジェクト（スプライト、ポリゴン）に対してインデックスカラー・テクスチャマッピングを行う。これにより、元画像のＺ値を、図１７（Ａ）に示すようなＺ値−α値特性に基づき、αむら設定用α値の合成に使用するα値に変換できる。
【０１２０】
このようにすれば、ルックアップテーブルの内容を変更するだけ、様々なＺ値−α値特性を得ることができる。また、例えば１回のテクスチャマッピングを行うだけで元画像のＺ値をα値に変換できるため、処理負荷も少なくて済む。但し、図４で説明した手法と異なる手法により、元画像のＺ値をα値に変換してもよい。
【０１２１】
３．本実施形態の処理
次に、本実施形態の処理の詳細例について、図１８、図１９、図２０、図２１のＰＡＤ図を用いて説明する。
【０１２２】
なお、図１８、図１９では便宜上、フレームバッファ（描画バッファ）の各画素が３つのα値（Ａ１、Ａ２、Ａ３とする）を持つことができる場合を想定する。フレームバッファの各画素が１つのα値しか持つことができないシステムの場合には、後述する図２０、図２１の処理のように、メモリ上に作業領域を確保し、Ａ１、Ａ２、Ａ３を適宜α値以外の値（例えばGreen値）で代用し、その後、その値（Green値）をα値に変換すればよい。
【０１２３】
また、ルックアップテーブル（ＬＵＴ）を使ってＺ値（Ｚバッファ値）を他の値に変換する際に、変換できるＺ値の範囲が限定される場合がある。例えば、Ｚ値が２４ビットであり、Ｚ値が手前側で大きい値となり奥側で小さい値になるシステムにおいて、２４ビットの中央の８ビットのみを使って変換する場合は、次のようになる。
【０１２４】
即ち、Ｚ値（0x000000）から（0x00ffff）の範囲を変換対象にすると、（0x00ffff）よりも手前側の領域、即ち（0x010000）以上の領域を変換対象にできない。本来、一般的には、(0x010000）に対する変換結果と（0x000000）に対する変換結果は、異なる結果になるべきである。ところが、（0x010000）は（0x000000）と中央の８ビットが同じ値（0x00）であるため、変換結果が同一になってしまう。そのため、Ｚ値が（0x010000）以上の領域は変換対象にできなくなる。このように変換対象にできない領域のうち、手前側の領域をニア（near）領域と呼ぶことにする。
【０１２５】
また、図１８〜図２１では、フレームバッファをＦＢ、ＺバッファをＺＢ、ワークバッファをＷＢと略記する。また、Ｒｅｄ、Ｇｒｅｅｎ、ＢｌｕｅをそれぞれＲ、Ｇ、Ｂと略記し、α値をＡ１、Ａ２、Ａ３、Ａと略記する。例えば、フレームバッファのＧｒｅｅｎは、ＦＢ：Ｇと略記する。
【０１２６】
図１８について説明する。
【０１２７】
まず、図１２のＦ２に示すようなフォグ特性（Ｚ値−α値特性）をルックアップテーブル（ＬＵＴ）ｌｕｔ＿０にセットする（ステップＳ１）。そして、毎フレームの処理に移行する（ステップＳ２）。なお、ｌｕｔ＿０は、図４で説明した変換処理を実現するためのルックアップテーブルである。
【０１２８】
毎フレームの処理では、まず、フォグ特性が変わったか否かを判断する（ステップＳ３）。そして、変わった場合には、新しいフォグ特性をｌｕｔ＿０にセットする（ステップＳ４）。
【０１２９】
次に、フォグを掛ける対象となるオブジェクトをＦＢ：Ｒ，Ｇ，Ｂに描画する（ステップＳ５）。この際、同時にＺ値（奥行き値）をＺＢ（Ｚバッファ）に書き込む。
【０１３０】
次に、カメラの動き（仮想カメラ情報）、風の流れに基づき、仮想距離ｄ０、ｄ１、ｄ２、及びスプライトＳＰ０、ＳＰ１、ＳＰ２に使用するＵＶ値を求める（ステップＳ６）。そして、ＦＢ：Ａ２に対して、ニア領域用のむら値を上書きで書き込む（ステップＳ７）。
【０１３１】
例えば本実施形態では図２２に示すように、仮想カメラＶＣからの仮想距離ｄ０〜ｄ２が設定された仮想プレーンＰＬ０〜ＰＬ２（αむら設定用α値αＵＰ０〜αＵＰ２）が仮想配置され、このＰＬ０〜ＰＬ２に対応するスプライトＳＰ０〜ＳＰ２（広義には仮想オブジェクト）が配置される。
【０１３２】
図２２に示すように、仮想プレーンＰＬ０〜ＰＬ２は仮想カメラＶＣの光軸に対して垂直になるように仮想配置されている。そして、仮想カメラＶＣからＰＬ０〜ＰＬ２までの仮想距離を、近いほうから順にｄ０、ｄ１、ｄ２とする。ｄ０の初期値をＤＥＰＴＨ０とする。また、仮想プレーン同士の間隔をＤＩＳＴ（定数）とする。
【０１３３】
つまり、
ｄ１＝ｄ０＋ＤＩＳＴ    （４）
ｄ２＝ｄ１＋ＤＩＳＴ    （５）
の関係を保ったまま、ｄ０、ｄ１、ｄ２は変化する。
【０１３４】
本実施形態では、仮想カメラＶＣの動き（仮想カメラ情報）や風の流れに応じてｄ０（及びｄ１、ｄ２）を変化させる。例えば、仮想カメラが前進する場合や、風の流れが仮想カメラに向かっている場合に、ｄ０は時間とともに小さくなる。
【０１３５】
仮想プレーンＰＬ０〜ＰＬ２のすり替え処理を行うために、次のように定数Ｄ０、Ｄ１、Ｄ２を定め、各仮想プレーンＰＬ０〜ＰＬ２の存在範囲を図２３（Ａ）のように制限する。
【０１３６】
Ｄ０＝ＤＥＰＴＨ０−０．５×ＤＩＳＴ    （６）
Ｄ１＝ＤＥＰＴＨ０＋０．５×ＤＩＳＴ    （７）
Ｄ２＝ＤＥＰＴＨ０＋１．５×ＤＩＳＴ    （８）
Ｄ３＝ＤＥＰＴＨ０＋２．５×ＤＩＳＴ    （９）
仮想カメラの動きや風の流れから仮想距離及びＵＶ値を求める手法（図１８のステップＳ６）は以下の通りである。
【０１３７】
なお、画面の画素は正方形であるとし、むら模様テクスチャの縦横比は画面の縦横比に等しいものとする。また、使用される記号の意味は以下の通りである。
Ｔ：１フレームの時間（６０フレーム／秒の場合、Ｔ＝１／６０秒）
ｔｘ，ｔｙ，ｔｚ：時間Ｔの間に仮想カメラが移動した距離（カメラ座標系）
ｒｘ，ｒｙ，ｒｚ：時間Ｔの間に仮想カメラが回転した角度（カメラ座標系）
ｗｘ，ｗｙ，ｗｚ：時間Ｔの間に風が流れた距離（カメラ座標系）
θｚ：仮想カメラのＺ軸回りの回転角度
ＴＥＸＷ：むら模様テクスチャの幅（ピクセル数）
ＳＣＲ＿ＤＥＰＴＨ：透視変換に使う仮想カメラから仮想スクリーンまでの距離
ＳＣＲ＿Ｗ：透視変換に使う仮想スクリーンの幅
Ｕ０，Ｖ０：スプライトの左上隅のＵＶ値
Ｕ１，Ｖ１：スプライトの右上隅のＵＶ値
Ｕ２，Ｖ２：スプライトの右下隅のＵＶ値
Ｕ３，Ｖ３：スプライトの左下隅のＵＶ値
ＡＳＰ：画面の縦横比（縦サイズ／横サイズ）
ｄ０は以下のようにして求める。
【０１３８】
即ち１フレーム前のｄ０の値に（ｔｚ−ｗｚ）を加えたものを新しいｄ０とする。そして、ｄ０＜Ｄ０又はｄ０＞Ｄ１となった場合には、仮想プレーンのすり替えを行い、ｄ０の値も修正する。
【０１３９】
より具体的には、ｄ０＝Ｄ０の状態から、更にｄ０を小さくなった場合（仮想カメラが更に前進する場合等）には、仮想プレーンのすり替えを行う。即ちＰＬ１の役割をＰＬ０に移し、ＰＬ２の役割をＰＬ１に移す。そして、ＰＬ２の仮想距離は新たにｄ２＝Ｄ３に設定する。
【０１４０】
これとは逆に、ｄ０＝Ｄ１（即ちｄ２＝Ｄ３）の状態から、更にｄ０を大きくなった場合（仮想カメラが後退する場合等）には、逆の仮想プレーンすり替えを行う。そして、ＰＬ０の仮想距離は新たにｄ０＝Ｄ０に設定する。
【０１４１】
ＵＶ値は以下のようにして求める。
【０１４２】
むら模様テクスチャの中で、仮想プレーンＰＬ０に対応するスプライトＳＰ０にマッピングされる領域の中心を（ｃｘ、ｃｙ）とし、領域の幅をｗ（ピクセル数）とする。すると、ｗは次式で得られる。
【０１４３】
ｗ＝ＴＥＸＷ×（ｄ０／ＤＥＰＴＨ０）    （１０）
また、１フレーム前のｃｘ、ｃｙの値に、それぞれ下記のｄｃｘ、ｄｃｙを加えたものを、新しいｃｘ、ｃｙとする。
【０１４４】
ｄｃｘ＝（ｔｘ−ｗｘ−ｄ０×ｒｙ）×ＳＣＤ×ＷＳＣ      （１１）
ｄｃｙ＝（−ｔｙ＋ｗｙ−ｄ０×ｒｘ）×ＳＣＤ×ＷＳＣ    （１２）
但し、
ＳＣＤ＝ＳＣＲ＿ＤＥＰＴＨ／ｄ０                        （１３）
ＷＳＣ＝ｗ／ＳＣＲ＿Ｗ                                  （１４）
である。
【０１４５】
すると、ＵＶ値は次式により得られる。
Ｕ０＝ｃｘ−ｗ×ｃｏｓ(θｚ)／２−ｗ×ｓｉｎ(θｚ)×ＡＳＰ／２（１５）
Ｕ１＝ｃｘ＋ｗ×ｃｏｓ(θｚ)／２−ｗ×ｓｉｎ(θｚ)×ＡＳＰ／２（１６）
Ｕ２＝ｃｘ＋ｗ×ｃｏｓ(θｚ)／２＋ｗ×ｓｉｎ(θｚ)×ＡＳＰ／２（１７）
Ｕ３＝ｃｘ−ｗ×ｃｏｓ(θｚ)／２＋ｗ×ｓｉｎ(θｚ)×ＡＳＰ／２（１８）
Ｖ０＝ｃｙ−ｗ×ｓｉｎ(θｚ)／２−ｗ×ｃｏｓ(θｚ)×ＡＳＰ／２（１９）
Ｖ１＝ｃｙ−ｗ×ｓｉｎ(θｚ)／２−ｗ×ｃｏｓ(θｚ)×ＡＳＰ／２（２０）
Ｖ２＝ｃｙ−ｗ×ｓｉｎ(θｚ)／２＋ｗ×ｃｏｓ(θｚ)×ＡＳＰ／２（２１）
Ｖ３＝ｃｙ＋ｗ×ｓｉｎ(θｚ)／２＋ｗ×ｃｏｓ(θｚ)×ＡＳＰ／２（２２）
なお、θｚとして仮想カメラのＺ軸回りの回転角度を使う代わりに、θｚに所与の初期値を与え、毎フレーム、θｚに対してｒｚを加算したものを新しいθｚとしてもよい。
【０１４６】
図１８の説明に戻る。
【０１４７】
ステップＳ７の後、仮想距離ｄ０に基づいてａ０を求める（ステップＳ８）。そして、ｄ０、ａ０に基づいてルックアップテーブルｌｕｔ＿ａ０を作る（ステップＳ９）。
【０１４８】
次に、ｌｕｔ＿ａ０を使ってＺＢの値をα値に変換し、ＦＢ：Ａ１に上書きで書き込む（ステップＳ１０。図１７（Ａ）、（Ｂ）参照）。そして、むら模様テクスチャとＵＶ値（ＳＰ０用）を使って、むら模様をＦＢ：Ａ２に書き込む（ステップＳ１１）。この際、ニア領域をマスクし、ＦＢ：Ａ１を使って、既に書かれている値とのαブレンディング処理を行う。
【０１４９】
以上のようにして、１枚目のαむら設定用α値のプレーン（むら模様）がＦＢ：Ａ２に書き込まれる。
【０１５０】
次に、仮想距離ｄ１に基づいてａ１を求める（ステップＳ１２）。そして、ｄ１、ａ１に基づいてルックアップテーブルｌｕｔ＿ａ１を作る（ステップＳ１３）。
【０１５１】
次に、ｌｕｔ＿ａ１を使ってＺＢの値をα値に変換し、ＦＢ：Ａ１に上書きで書き込む（ステップＳ１４）。そして、むら模様テクスチャとＵＶ値（ＳＰ１用）を使って、むら模様をＦＢ：Ａ２に書き込む（ステップＳ１５）。この際、ニア領域をマスクし、ＦＢ：Ａ１を使って、既に書かれている値とのαブレンディング処理を行う。
【０１５２】
以上のようにして、１枚目、２枚目のαむら設定用α値のプレーン（むら模様）が合成されたものがＦＢ：Ａ２に書き込まれることになる。
【０１５３】
次に、仮想距離ｄ２に基づいてａ２を求める（ステップＳ１６）。そして、ｄ２、ａ２に基づいてルックアップテーブルｌｕｔ＿ａ２を作る（ステップＳ１７）。
【０１５４】
次に、ｌｕｔ＿ａ２を使ってＺＢの値をα値に変換し、ＦＢ：Ａ１に上書きで書き込む（ステップＳ１８）。そして、むら模様テクスチャとＵＶ値（ＳＰ２用）を使って、むら模様をＦＢ：Ａ２に書き込む（ステップＳ１９）。この際に、ニア領域をマスクし、ＦＢ：Ａ１を使って、既に書かれている値とのαブレンディング処理を行う。
【０１５５】
以上のようにして、１枚目、２枚目、３枚目のαむら設定用α値のプレーン（むら模様）が合成されたものがＦＢ：Ａ２に書き込まれることになる（図１３参照）。
【０１５６】
次に、ニア領域用のα値にＦＢ：Ａ２の値を乗算し、１．０でクランプし、ＦＢ：Ａ３に上書きで書き込む（ステップＳ２０）。
【０１５７】
次に、図１８のステップＳ１又はステップＳ４にセットされたルックアップテーブルｌｕｔ＿０を使ってＺＢの値をα値に変換し、これにＦＢ：Ａ２の値を乗算し、１．０でクランプし、ＦＢ：Ａ３に書き込む（ステップＳ２１）。この際に、ニア領域をマスクして上書きで書き込む。
【０１５８】
以上のようにすることで、図５のＣ１に示すＺ値からα値への変換処理と、Ｃ３に示すα値の合成処理が実現される。
【０１５９】
次に、ＦＢ：Ｒ，Ｇ，Ｂに全画面サイズのフォグ色オブジェクトを描画する（ステップＳ２２）。この際に、ＦＢ：Ａ３を使って、既に書かれている値とのαブレンド処理を行う。これにより、図５のＣ４に示す色の合成処理が実現される。
【０１６０】
最後に、フォグを掛たくないオブジェクトをＦＢ：Ｒ，Ｇ，Ｂに上書きで描画する（ステップＳ２３）。
【０１６１】
なお、図１８、図１９のステップＳ８、Ｓ１２、Ｓ１６のａ０、ａ１、ａ２を求める処理は、以下のようにして実現できる。
【０１６２】
即ち、仮想プレーンＰＬ０、ＰＬ２、ＰＬ２のブレンドウェイトをｗ０、ｗ１、ｗ２とした場合に、これらのｗ０、ｗ１、ｗ２を図２３（Ｂ）のように設定する。
【０１６３】
即ち、ｗ１は常に１にする。
【０１６４】
また、ｗ０については、ｄ０≧Ｄ０＋ＤＩＳＴ／２の場合には、ｗ０＝１にする。そして、ｄ０＜Ｄ０＋ＤＩＳＴ／２の場合には、ｄ０が小さくなるにつれてｗ０を小さくし、ｄ０＝Ｄ０でｗ０＝０にする。
【０１６５】
ｗ２については、ｄ２≦Ｄ２＋ＤＩＳＴ／２の場合にｗ２＝１にする。そして、ｄ２＞Ｄ２＋ＤＩＳＴ／２の場合は、ｄ２が大きくなるにつれてｗ２を小さくし、ｄ２＝Ｄ３でｗ２＝０にする。
【０１６６】
仮想プレーンＰＬ０、ＰＬ２、ＰＬ３のα値をａ０、ａ１、ａ２とすると、これらのａ０〜ａ２は、次のように、ブレンドウェイトｗ０〜ｗ２に基づき、求めることができる。
【０１６７】
ａ０＝ｗ０／（１＋ｗ０）              （２３）
ａ１＝ｗ１／（１＋ｗ０＋ｗ１）        （２４）
ａ２＝ｗ２／（１＋ｗ０＋ｗ１＋ｗ２）  （２５）
また、図１８、図１９のステップＳ９、Ｓ１３、Ｓ１７で作られるルックアップテーブルｌｕｔ＿ａ０、ｌｕｔ＿ａ１、ｌｕｔ＿ａ２の変換特性（α値α０、α１、α２）の例を、図２４（Ａ）、（Ｂ）、（Ｃ）に示す。
【０１６８】
図２４（Ａ）、（Ｂ）、（Ｃ）において、Ｚ０、Ｚ１、Ｚ２、Ｚ３は、仮想プレーンＰＬ０、ＰＬ１、ＰＬ２の仮想距離ｄ０、ｄ１、ｄ２とｄ２＋ＤＩＳＴにより得られる仮想Ｚ値である。具体的には、これらのＺ０、Ｚ１、Ｚ２、Ｚ３は、ｄ０、ｄ１、ｄ２、ｄ２＋ＤＩＳＴの逆数などに基づき得ることができる。なお、ｄ０、ｄ１、ｄ２、ｄ２＋ＤＩＳＴそのものをＺ０、Ｚ１、Ｚ２、Ｚ３に設定してもよい。
【０１６９】
また、図２４（Ａ）、（Ｂ）、（Ｃ）のａ０、ａ１、ａ２は、ステップＳ８、Ｓ１２、Ｓ１６で求められた仮想プレーンＰＬ０、ＰＬ１、ＰＬ２のα値である。
【０１７０】
例えば、仮想プレーンＰＬ０、ＰＬ１、ＰＬ２の仮想距離ｄ０、ｄ１、ｄ２が、図２３（Ｂ）のＨ１、Ｈ２、Ｈ３に示す位置にあったとする。すると、この図２３（Ｂ）の変換特性に基づいて、その時のブレンドウェイトｗ０、ｗ１、ｗ２が求められる。
【０１７１】
そして、求められたブレンドウェイトｗ０、ｗ１、ｗ２を上式（２３）、（２４）、（２５）に代入することで、ａ０、ａ１、ａ２が得られる。これにより、図２４（Ａ）、（Ｂ）、（Ｃ）のＩ１、Ｉ２、Ｉ３に示すａ０、ａ１、ａ２が特定される。また、仮想距離ｄ０、ｄ１、ｄ２、ｄ２＋ＤＩＳＴに基づいて、図２４（Ａ）、（Ｂ）、（Ｃ）のＩ４、Ｉ５、Ｉ６、Ｉ７に示す仮想Ｚ値Ｚ０、Ｚ１、Ｚ２、Ｚ３が特定される。以上により、ｌｕｔ＿ａ０、ｌｕｔ＿ａ１、ｌｕｔ＿ａ２の変換特性が特定される。
【０１７２】
そして、図２４（Ａ）、（Ｂ）、（Ｃ）の変換特性で、元画像の各画素のＺ値がα値に変換され、得られたα値に基づいて、むら模様（αむら設定用α値）のブレンディング処理が行われる。
【０１７３】
従って、元画像の画素のＺ値が図２４（Ａ）のＩ８に示す範囲にある場合には、その画素については、αＵＰ０（ＰＬ０）の合成処理は行われないようになる。同様に、元画像の画素のＺ値が図２４（Ｂ）、（Ｃ）のＩ９、Ｉ１０に示す範囲にある場合には、その画素については、αＵＰ１（ＰＬ１）、αＵＰ２（ＰＬ２）の合成処理は行われないようになる。これにより、図９、図１０に示すような自然でリアルなフォグ画像を生成できる。
【０１７４】
図２０、図２１は、フレームバッファの各画素が１つのα値しか持てないシステムの場合の処理例を示すＰＡＤ図である。
【０１７５】
図２０、図２１の処理が図１８、図１９と異なるのは以下の点である。
【０１７６】
例えば、図２０のステップＳ３７では、ワークバッファであるＷＢ：Ｇにニア領域用のむら値を上書きで書き込んでいる。
【０１７７】
また、図２０、図２１のステップＳ４０、Ｓ４４、Ｓ４８では、ルックアップテーブルｌｕｔ＿ａ０、ｌｕｔ＿ａ１、ｌｕｔ＿ａ２を使ってＺＢの値をα値に変換し、ＷＢ：Ａに上書きで書き込んでいる。
【０１７８】
また、ステップＳ４１、Ｓ４５、Ｓ４９では、むら模様テクスチャとＵＶ値（ＳＰ０、ＳＰ１、ＳＰ２用）を使って、むら模様をＷＢ：Ｇに書き込んでいる。そして、この際に、ニア領域をマスクし、ＷＢ：Ａを使って、既に書かれている値とのαブレンディング処理を行っている。
【０１７９】
そして、図２１のステップＳ５０で、ＷＢ：ＧをＷＢ：Ａにコピーする。
【０１８０】
次に、ステップＳ５１で、ニア領域用のα値にＷＢ：Ａの値を乗算し、１．０でクランプし、ＷＢ：Ｇに上書きで書き込む。そしてステップＳ５２で、ｌｕｔ＿０を使ってＺＢの値をα値に変換し、これにＷＢ：Ａの値を乗算し、１．０でクランプし、ＷＢ：Ｇに書き込む。この際に、ニア領域をマスクして上書きする。
【０１８１】
次に、ステップＳ５３で、ＷＢ：ＧをＦＢ：Ａにコピーする。そして、ステップＳ５４で、ＦＢ：Ｒ，Ｇ，Ｂに全画面サイズのフォグ色オブジェクトを描画する。この際に、ＦＢ：Ａを使って、既に書かれている値とブレンディング処理を行う。
【０１８２】
最後に、ステップＳ５５で、フォグを掛たくないオブジェクトをＦＢ：Ｒ，Ｇ，Ｂに描画する。
【０１８３】
以上のようにすることで、フレームバッファの各画素が１つのα値しか持てないシステムにおいても、本実施形態の処理を実現できるようになる。
【０１８４】
４．ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図２５を用いて説明する。
【０１８５】
メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介して転送されたプログラム、或いはＲＯＭ９５０（情報記憶媒体の１つ）に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【０１８６】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１８７】
ジオメトリプロセッサ９０４は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ９００で動作するプログラムが、その処理をジオメトリプロセッサ９０４に指示する。
【０１８８】
データ伸張プロセッサ９０６は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、ＭＰＥＧ方式等で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ＲＯＭ９５０、ＣＤ９８２に格納されたり、或いは通信インターフェース９９０を介して外部から転送される。
【０１８９】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ（プリミティブ面）で構成されるオブジェクトの描画（レンダリング）処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０の機能を利用して、オブジェクトデータを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると、描画プロセッサ９１０は、これらのオブジェクトデータやテクスチャに基づいて、Ｚバッファなどを利用した陰面消去を行いながら、オブジェクトをフレームバッファ９２２に高速に描画する。また、描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、１フレーム分の画像がフレームバッファ９２２に書き込まれると、その画像はディスプレイ９１２に表示される。
【０１９０】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ９３２から出力される。
【０１９１】
ゲームコントローラ９４２（レバー、ボタン、筺体、パッド型コントローラ又はガン型コントローラ等）からの操作データや、メモリカード９４４からのセーブデータ、個人データは、シリアルインターフェース９４０を介してデータ転送される。
【０１９２】
ＲＯＭ９５０にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されることになる。なお、ＲＯＭ９５０の代わりにハードディスクを利用するようにしてもよい。
【０１９３】
ＲＡＭ９６０は、各種プロセッサの作業領域として用いられる。
【０１９４】
ＤＭＡコントローラ９７０は、プロセッサ、メモリ（ＲＡＭ、ＶＲＡＭ、ＲＯＭ等）間でのＤＭＡ転送を制御するものである。
【０１９５】
ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２（情報記憶媒体）を駆動し、これらのプログラム、データへのアクセスを可能にする。
【０１９６】
通信インターフェース９９０は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース９９０に接続されるネットワークとしては、通信回線（アナログ電話回線、ＩＳＤＮ）、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他の画像生成システムとの間でのデータ転送が可能になる。
【０１９７】
なお、本実施形態の各部（各手段）は、その全てを、ハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１９８】
そして、本実施形態の各部をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０等は、その指示と渡されたデータとに基づいて、本発明の各部を実現することになる。
【０１９９】
図２６（Ａ）に、本実施形態を業務用ゲームシステム（画像生成システム）に適用した場合の例を示す。プレーヤは、ディスプレイ１１００上に映し出されたゲーム画像を見ながら、操作部１１０２（レバー、ボタン）を操作してゲームを楽しむ。内蔵されるシステムボード（サーキットボード）１１０６には、各種プロセッサ、各種メモリなどが実装される。そして、本実施形態の各部を実現するためのプログラム（データ）は、システムボード１１０６上の情報記憶媒体であるメモリ１１０８に格納される。以下、このプログラムを格納プログラム（格納情報）と呼ぶ。
【０２００】
図２６（Ｂ）に、本実施形態を家庭用のゲームシステム（画像生成システム）に適用した場合の例を示す。プレーヤはディスプレイ１２００に映し出されたゲーム画像を見ながら、コントローラ１２０２、１２０４などを操作してゲームを楽しむ。この場合、上記格納プログラム（格納情報）は、本体システムに着脱自在な情報記憶媒体であるＣＤ１２０６、或いはメモリカード１２０８、１２０９などに格納されている。
【０２０１】
図２６（Ｃ）に、ホスト装置１３００と、このホスト装置１３００とネットワーク１３０２（ＬＡＮのような小規模ネットワークや、インターネットのような広域ネットワーク）を介して接続される端末１３０４-１〜１３０４-n（ゲーム機、携帯電話）とを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納プログラム（格納情報）は、例えばホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリなどの情報記憶媒体１３０６に格納されている。端末１３０４-１〜１３０４-nが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末１３０４-１〜１３０４-nに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４-１〜１３０４-nに伝送し端末において出力することになる。
【０２０２】
なお、図２６（Ｃ）の構成の場合に、本実施形態の各部を、ホスト装置（サーバー）と端末とで分散して実現するようにしてもよい。また、本実施形態の各部を実現するための上記格納プログラム（格納情報）を、ホスト装置（サーバー）の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【０２０３】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。
【０２０４】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０２０５】
例えば、明細書中の記載において広義な用語（仮想オブジェクト、αむら、合成等）として引用された用語（スプライト、フォグむら、ブレンディング等）は、明細書中の他の記載においても広義な用語に置き換えることができる。
【０２０６】
また、α値の合成手法も、本実施形態で詳細に説明した手法に限定されず、種々の変形実施が可能である。
【０２０７】
また、本実施形態では、αむら設定用α値の合成対象が、元画像のＺ値を変換することで得られるα値である場合について説明したが、αむら設定用α値の合成対象は、これに限定されない。
【０２０８】
また、本実施形態では、第１のα値とαむら設定用α値を合成することで得られる第２のα値を、元画像の色とフォグの色の合成処理に用いる場合について説明した。しかしながら、第２のα値を、このような合成処理とは異なる画像生成処理に用いてもよい。
【０２０９】
また、α値や色の合成処理は、プレーン単位で行ってもよいし、画素単位で行ってもよい。例えば図２７に、α値や色の合成処理を画素単位で行う場合の例を示す。図２７において、α０、α１、α２は、図２４（Ａ）、（Ｂ）、（Ｃ）に示すα値（αむら設定用α値の合成に使用するα値）である。これらのα０、α１、α２を用いて、フォグむらテクスチャ（図８参照）のテクセル値であるαＵＰ０、αＵＰ１、αＵＰ２を合成することで、αむら設定用α値αＵＰが得られる。そして、このαＵＰと、Ｚ値に基づき得られる第１のα値αＰ１を合成し、クランプ処理を行うことで、第２のα値αＰ２が得られる。そして、このαＰ２を用いて、元画像の色とフォグの色を合成することで、フォグ画像が生成される。図２７では、このようなα値、色の合成処理を画素単位で行い、最終的なフォグ画像をフレームバッファに描画している。
【０２１０】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０２１１】
また、本発明は種々のゲーム（格闘ゲーム、競争ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、ロールプレイングゲーム等）に適用できる。
【０２１２】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々の画像生成システム（ゲームシステム）に適用できる。
【図面の簡単な説明】
【図１】本実施形態の画像生成システムの機能ブロック図の例である。
【図２】元画像のＺ値をα値に変換し、得られたα値で元画像の色とフォグの色を合成する手法について説明するための図である。
【図３】インデックスカラー・テクスチャマッピングについて説明するための図である。
【図４】インデックスカラー・テクスチャマッピングを利用して、Ｚ値をα値に変換する手法について説明するための図である。
【図５】本実施形態の合成手法について説明するための図である。
【図６】元画像の例を示す図である。
【図７】αむら設定用α値の例を示す図である。
【図８】むら模様テクスチャの例を示す図である。
【図９】本実施形態により生成されるフォグ画像の例を示す図である。
【図１０】本実施形態により生成されるフォグ画像の例を示す図である。
【図１１】指数フォグにおけるＺ値とフォグ濃度との関係を示す図である。
【図１２】フォグのむらの付け方について説明するための図である。
【図１３】仮想プレーン内でのむら模様が異なる複数のαむら設定用α値を合成する手法について説明するための図である。
【図１４】図１４（Ａ）、（Ｂ）も、仮想プレーン内でのむら模様が異なる複数のαむら設定用α値を合成する手法について説明するための図である。
【図１５】図１５（Ａ）、（Ｂ）は、仮想カメラ情報に基づいてむら模様を変化させる手法について説明するための図である。
【図１６】図１６（Ａ）、（Ｂ）は、仮想オブジェクトのテクスチャ座標の設定により、むら模様を変化させる手法について説明するための図である。
【図１７】図１７（Ａ）、（Ｂ）は、αむら設定用α値の合成に使用するα値を元画像のＺ値に基づいて設定する手法について説明するための図である。
【図１８】本実施形態の処理の詳細例について示すＰＡＤ図である。
【図１９】本実施形態の処理の詳細例について示すＰＡＤ図である。
【図２０】本実施形態の処理の詳細例について示すＰＡＤ図である。
【図２１】本実施形態の処理の詳細例について示すＰＡＤ図である。
【図２２】仮想距離の設定手法について説明するための図である。
【図２３】図２３（Ａ）は、仮想プレーンの存在範囲を制限する手法を説明するための図であり、図２３（Ｂ）は、ブレンドウェイトの設定について説明するための図である。
【図２４】図２４（Ａ）、（Ｂ）、（Ｃ）は、ルックアップテーブルの変換特性の例について説明するための図である。
【図２５】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図２６】図２６（Ａ）、（Ｂ）、（Ｃ）は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【図２７】α値の合成や色の合成を画素単位で行う手法について説明するための図である。
【符号の説明】
ＩＣＰ    元画像の色
ＺＰ      元画像のＺ値
αＰ１    第１のα値
αＵＰ    αむら設定用α値
αＰ２    第２のα値
ＣＰ      フォグの色
ＶＣ      仮想カメラ
αＵＰ０、αＵＰ１、αＵＰ２  αむら設定用α値
ＰＬ０、ＰＬ１、ＰＬ２  仮想プレーン
ｄ０、ｄ１、ｄ２  仮想距離
ＳＰ０、ＳＰ１、ＳＰ２  スプライト（仮想オブジェクト）
１００  処理部
１１０  移動・動作処理部
１１２  オブジェクト空間設定部
１１４  仮想カメラ制御部
１２０  画像生成部
１２２  α値合成部
１２４  色合成部
１３０  音生成部
１６０  操作部
１７０  記憶部
１７２  主記憶部
１７４  描画バッファ
１７６  Ｚバッファ
１７８  テクスチャ記憶部
１７９  ＬＵＴ記憶部
１８０  情報記憶媒体
１９０  表示部
１９２  音出力部
１９４  携帯型情報記憶装置
１９６  通信部
【図１】
0004187188.tif 000002
【図２】
0004187188.tif 000003
【図３】
0004187188.tif 000004
【図４】
0004187188.tif 000005
【図５】
0004187188.tif 000006
【図６】
0004187188.tif 000007
【図７】
0004187188.tif 000008
【図８】
0004187188.tif 000009
【図９】
0004187188.tif 000010
【図１０】
0004187188.tif 000011
【図１１】
0004187188.tif 000012
【図１２】
0004187188.tif 000013
【図１３】
0004187188.tif 000014
【図１４】
0004187188.tif 000015
【図１５】
0004187188.tif 000016
【図１６】
0004187188.tif 000017
【図１７】
0004187188.tif 000018
【図１８】
0004187188.tif 000019
【図１９】
0004187188.tif 000020
【図２０】
0004187188.tif 000021
【図２１】
0004187188.tif 000022
【図２２】
0004187188.tif 000023
【図２３】
0004187188.tif 000024
【図２４】
0004187188.tif 000025
【図２５】
0004187188.tif 000026
【図２６】
0004187188.tif 000027
【図２７】
0004187188.tif 000028