(57)【要約】【課題】陽炎等のリアルな画像を生成できるプログラム、情報記憶媒体及び画像生成システムを提供すること。【解決手段】  画像生成システムは、元画像を縦横に分割するメッシュの縦横の線の交点を格子点とする格子を設定し、ポリゴン頂点座標とテクスチャ座標を各格子点に対して設定する座標設定部と、時間経過に伴い変化する各格子点の揺らぎ値を演算する揺らぎ値演算部と、各格子点のポリゴン頂点座標と、各格子点のテクスチャ座標に前記揺らぎ値を加算することで得られたテクスチャ座標とに基づいて、元画像をテクスチャとしてポリゴンを描画して、元画像の揺らぎ画像を生成する描画部を含む。【選択図】        図２
2006011538.tif 000002
【特許請求の範囲】
【請求項１】
画像を生成するためのプログラムであって、
元画像を縦横に分割するメッシュの縦横の線の交点を格子点とする格子を設定し、ポリゴン頂点座標とテクスチャ座標を各格子点に対して設定する座標設定部と、
時間経過に伴い変化する各格子点の揺らぎ値を演算する揺らぎ値演算部と、
各格子点のポリゴン頂点座標と、各格子点のテクスチャ座標に前記揺らぎ値を加算することで得られたテクスチャ座標とに基づいて、元画像をテクスチャとしてポリゴンを描画して、元画像の揺らぎ画像を生成する描画部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項２】
画像を生成するためのプログラムであって、
元画像を縦横に分割するメッシュの縦横の線の交点を格子点とする格子を設定し、ポリゴン頂点座標とテクスチャ座標を各格子点に対して設定する座標設定部と、
時間経過に伴い変化する各格子点の揺らぎ値を演算する揺らぎ値演算部と、
各格子点のテクスチャ座標と、各格子点のポリゴン頂点座標に前記揺らぎ値を加算することで得られたポリゴン頂点座標とに基づいて、元画像をテクスチャとしてポリゴンを描画して、元画像の揺らぎ画像を生成する描画部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項３】
請求項１又は２において、
前記揺らぎ値演算部が、
揺らぎ波形に基づき得られた揺らぎ値を格子の第１の辺上の格子点に対して設定し、前記第１の辺上の格子点に設定された揺らぎ値を、前記第１の辺から対向する第３の辺に向かって、格子線上の格子点に対して時間経過に伴い伝播する処理を行って、格子の各格子点の揺らぎ値を求めることを特徴とするプログラム。
【請求項４】
請求項３において、
前記第１の辺から前記第３の辺に向かって格子線上に第１〜第Ｊの格子点が設定されている場合において、
前記揺らぎ値演算部が、
第（Ｊ−１）の格子点の前回のフレームでの揺らぎ値に伝播率を乗算して得られた値に基づいて、前記第３の辺上にある第Ｊの格子点の現在のフレームでの揺らぎ値を求め、第（Ｊ−２）の格子点の前回のフレームでの揺らぎ値に伝播率を乗算して得られた値に基づいて、第（Ｊ−１）の格子点の現在のフレームでの揺らぎ値を求め、・・・・・・・前記第１の辺上にある第１の格子点の前回のフレームでの揺らぎ値に伝播率を乗算して得られた値に基づいて、第２の格子点の現在のフレームでの揺らぎ値を求めることを特徴とするプログラム。
【請求項５】
請求項３又は４において、
前記揺らぎ値演算部が、
前回のフレームでの格子点の揺らぎ値に減衰率を乗算して得られた値に基づいて、現在のフレームでの格子点の揺らぎ値を求めることを特徴とするプログラム。
【請求項６】
請求項３乃至５のいずれかにおいて、
前記揺らぎ値演算部が、
１つの揺らぎ波形の異なるサンプリング点から得た揺らぎ値を、前記格子線上の各格子点に対して初期値としてプリセットし、その後に格子点の揺らぎ値を時間経過に伴い変化させる処理を行うことを特徴とするプログラム。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記座標設定部が、
格子の第１の辺に沿った方向での格子区画の長さよりも、前記第１の辺に直交する第２の辺に沿った方向での格子区画の長さの方が短くなるように分割された格子を設定することを特徴とするプログラム。
【請求項８】
請求項７において、
前記座標設定部が、
元画像の描画領域が確保されるメモリのページサイズ分の大きさの領域に、前記第１の辺から対向する第３の辺へと向かう方向にＬ個（Ｌは２以上の整数）の格子区画が並ぶように格子を設定することを特徴とするプログラム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記揺らぎ値演算部が、
格子の格子点に対して揺らぎ値の初期値をプリセットし、その後に格子点の揺らぎ値を時間経過に伴い変化させる処理を行うことを特徴とするプログラム。
【請求項１０】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至９のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１１】
画像を生成する画像生成システムであって、
元画像を縦横に分割するメッシュの縦横の線の交点を格子点とする格子を設定し、ポリゴン頂点座標とテクスチャ座標を各格子点に対して設定する座標設定部と、
時間経過に伴い変化する各格子点の揺らぎ値を演算する揺らぎ値演算部と、
各格子点のポリゴン頂点座標と、各格子点のテクスチャ座標に前記揺らぎ値を加算することで得られたテクスチャ座標とに基づいて、元画像をテクスチャとしてポリゴンを描画して、元画像の揺らぎ画像を生成する描画部と、
を含むことを特徴とする画像生成システム。
【請求項１２】
画像を生成する画像生成システムであって、
元画像を縦横に分割するメッシュの縦横の線の交点を格子点とする格子を設定し、ポリゴン頂点座標とテクスチャ座標を各格子点に対して設定する座標設定部と、
時間経過に伴い変化する各格子点の揺らぎ値を演算する揺らぎ値演算部と、
各格子点のテクスチャ座標と、各格子点のポリゴン頂点座標に前記揺らぎ値を加算することで得られたポリゴン頂点座標とに基づいて、元画像をテクスチャとしてポリゴンを描画して、元画像の揺らぎ画像を生成する描画部と、
を含むことを特徴とする画像生成システム。
【請求項１３】
請求項１１又は１２において、
前記揺らぎ値演算部が、
揺らぎ波形に基づき得られた揺らぎ値を格子の第１の辺上の格子点に対して設定し、前記第１の辺上の格子点に設定された揺らぎ値を、前記第１の辺から対向する第３の辺に向かって、格子線上の格子点に対して時間経過に伴い伝播する処理を行って、格子の各格子点の揺らぎ値を求めることを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体、及び画像生成システムに関する。
【背景技術】
【０００２】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内（仮想的な３次元空間）において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【０００３】
このような画像生成システムでは、プレーヤの仮想現実感を高めるために、いわゆる陽炎についてもリアルに表現できることが望ましい。このような陽炎のリアルな画像を生成する技術としては、例えば特開２０００−１９７７６５号公報に開示される従来技術がある。
【０００４】
しかしながらこの従来技術では、熱せられた空気の上昇のように陽炎の揺らぎが下から上に伝わる様子を表現することは難しかった。
【特許文献１】特開２０００−１９７７６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、陽炎等のリアルな画像を生成できるプログラム、情報記憶媒体及び画像生成システムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明は、画像を生成する画像生成システムであって、元画像を縦横に分割するメッシュの縦横の線の交点を格子点とする格子を設定し、ポリゴン頂点座標とテクスチャ座標を各格子点に対して設定する座標設定部と、時間経過に伴い変化する各格子点の揺らぎ値を演算する揺らぎ値演算部と、各格子点のポリゴン頂点座標と、各格子点のテクスチャ座標に前記揺らぎ値を加算することで得られたテクスチャ座標とに基づいて、元画像をテクスチャとしてポリゴンを描画して、元画像の揺らぎ画像を生成する描画部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【０００７】
本発明によれば、ポリゴン頂点座標とテクスチャ座標が格子の各格子点に設定され、各格子点の揺らぎ値が演算される。そして各格子点のポリゴン頂点座標と、各格子点のテクスチャ座標に揺らぎ値を加算することで得られたテクスチャ座標とに基づいて、元画像をテクスチャとしてポリゴンが描画される。これにより、元画像の各部分が揺らいで見える画像が生成されるようになり、陽炎等のリアルな画像の生成が可能になる。
【０００８】
また本発明は、画像を生成する画像生成システムであって、元画像を縦横に分割するメッシュの縦横の線の交点を格子点とする格子を設定し、ポリゴン頂点座標とテクスチャ座標を各格子点に対して設定する座標設定部と、時間経過に伴い変化する各格子点の揺らぎ値を演算する揺らぎ値演算部と、各格子点のテクスチャ座標と、各格子点のポリゴン頂点座標に前記揺らぎ値を加算することで得られたポリゴン頂点座標とに基づいて、元画像をテクスチャとしてポリゴンを描画して、元画像の揺らぎ画像を生成する描画部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【０００９】
本発明によれば、ポリゴン頂点座標とテクスチャ座標が格子の各格子点に設定され、各格子点の揺らぎ値が演算される。そして各格子点のテクスチャ座標と、各格子点のポリゴン頂点座標に揺らぎ値を加算することで得られたポリゴン頂点座標とに基づいて、元画像をテクスチャとしてポリゴンが描画される。これにより、元画像の各部分が揺らいで見える画像が生成されるようになり、陽炎等のリアルな画像の生成が可能になる。
【００１０】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記揺らぎ値演算部が、揺らぎ波形に基づき得られた揺らぎ値を格子の第１の辺上の格子点に対して設定し、前記第１の辺上の格子点に設定された揺らぎ値を、前記第１の辺から対向する第３の辺に向かって、格子線上の格子点に対して時間経過に伴い伝播する処理を行って、格子の各格子点の揺らぎ値を求めるようにしてもよい。
【００１１】
このようにすれば、全ての格子点に対応した揺らぎ波形を用意する必要が無くなるため、処理負荷の軽減や処理データ量の削減等を図れる。また第１の辺から対向する第３の辺に揺らぎが伝播する様子を表現することが可能になり、陽炎等の更にリアルな画像を生成できる。
【００１２】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記第１の辺から前記第３の辺に向かって格子線上に第１〜第Ｊの格子点が設定されている場合において、前記揺らぎ値演算部が、第（Ｊ−１）の格子点の前回のフレームでの揺らぎ値に伝播率を乗算して得られた値に基づいて、前記第３の辺上にある第Ｊの格子点の現在のフレームでの揺らぎ値を求め、第（Ｊ−２）の格子点の前回のフレームでの揺らぎ値に伝播率を乗算して得られた値に基づいて、第（Ｊ−１）の格子点の現在のフレームでの揺らぎ値を求め、・・・・・・・前記第１の辺上にある第１の格子点の前回のフレームでの揺らぎ値に伝播率を乗算して得られた値に基づいて、第２の格子点の現在のフレームでの揺らぎ値を求めるようにしてもよい。
【００１３】
このようにすれば、第１辺から第３の辺に向かって揺らぎの波が伝播して行く様子を簡素な処理でリアルに表現できるようになる。
【００１４】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記揺らぎ値演算部が、前回のフレームでの格子点の揺らぎ値に減衰率を乗算して得られた値に基づいて、現在のフレームでの格子点の揺らぎ値を求めるようにしてもよい。
【００１５】
このようにすれば第１の辺から第３の辺の方向に向かうにつれて揺らぎ値が増幅等して行くような画像の生成が可能になり、生成画像のバラエティ度を増すことができる。
【００１６】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記揺らぎ値演算部が、１つの揺らぎ波形の異なるサンプリング点から得た揺らぎ値を、前記格子線上の各格子点に対して初期値としてプリセットし、その後に格子点の揺らぎ値を時間経過に伴い変化させる処理を行うようにしてもよい。
【００１７】
このようにすれば、各格子点に初期値としてプリセットされた揺らぎ値が隣接する格子点に直ぐに伝播されるようになり、リアルな揺らぎ画像を早い段階で生成することが可能になる。また、揺らぎ波形の異なるサンプリング点で得た揺らぎ値（サンプリング点での揺らぎ値に所与の係数を乗算した値）が、初期値としてプリセットされるため、初期値の設定処理の簡素化を図れると共に自然な揺らぎ画像を生成できる。
【００１８】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記座標設定部が、格子の第１の辺に沿った方向での格子区画の長さよりも、前記第１の辺に直交する第２の辺に沿った方向での格子区画の長さの方が短くなるように分割された格子を設定するようにしてもよい。
【００１９】
このように格子を設定すれば、例えば第１の辺から第３の辺の方向に向かって揺らぎ値を伝播させた場合には、揺らぎ値を滑らかに伝播させることが可能になり、揺らぎ画像のチラツキ等の発生を効果的に防止できる。なお、このように格子を設定した場合において、例えば第２の辺から対向する第４の辺の方向に向かって揺らぎ値を伝播させたり、第４の辺から第２の辺の方向に向かって揺らぎ値を伝播させるようにしてもよい。
【００２０】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記座標設定部が、元画像の描画領域が確保されるメモリのページサイズ分の大きさの領域に、前記第１の辺から対向する第３の辺へと向かう方向にＬ個（Ｌは２以上の整数）の格子区画が並ぶように格子を設定するようにしてもよい。
【００２１】
このようにすれば、描画領域のデータがメモリのページを跨いで読み出されたり或いは書き込まれたりする事態を防止しながら、効率的なメモリアクセスが可能になる。
【００２２】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記揺らぎ値演算部が、格子の格子点に対して揺らぎ値の初期値をプリセットし、その後に格子点の揺らぎ値を時間経過に伴い変化させる処理を行うようにしてもよい。
【００２３】
このようにすれば、各格子点に初期値としてプリセットされた揺らぎ値が隣接する格子点に直ぐに伝播されるようになり、リアルな揺らぎ画像を早い段階で生成することが可能になる。
【発明を実施するための最良の形態】
【００２４】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２５】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００２６】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。
【００２７】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ハードディスク、メモリーカード、メモリーカセット、磁気ディスク、或いはメモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００２８】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ（液晶表示装置）、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００２９】
携帯型情報記憶装置１９４は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などがある。通信部１９６は外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００３０】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信してもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００３１】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部１００は記憶部１７０をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００３２】
処理部１００は、オブジェクト空間設定部１１０、移動・動作処理部１１２、仮想カメラ制御部１１４、座標設定部１１６、揺らぎ値演算部１１８、描画部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００３３】
オブジェクト空間設定部１１０は、キャラクタ、車、戦車、建物、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクト（モデルオブジェクト）の位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００３４】
移動・動作処理部１１２は、オブジェクト（キャラクタ、車、又は飛行機等）の移動・動作演算（移動・動作シミュレーション）を行う。即ち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、オブジェクト（移動オブジェクト）をオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させる処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（各パーツオブジェクトの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００３５】
仮想カメラ制御部１１４は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置や視線方向を制御する処理）を行う。
【００３６】
例えば仮想カメラによりオブジェクト（例えばキャラクタ、ボール、車）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部１１２で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００３７】
座標設定部１１６は、元画像を縦横に分割するメッシュを想定し、メッシュの縦横の線の交点を格子点とする格子を設定する。そして、ポリゴン頂点座標とテクスチャ座標を各格子点に対して設定する。例えば、格子点の元画像上の座標を（ＸＯ、ＹＯ）とし、ポリゴン頂点座標を（Ｘ、Ｙ）とし、テクスチャ座標を（Ｕ、Ｖ）とした場合には、Ｘ＝Ｕ＝ＸＯ、Ｙ＝Ｖ＝ＹＯとなるように座標を設定する。
【００３８】
揺らぎ値演算部１１８は各格子点の揺らぎ値を求める処理を行う。具体的には、時間経過（フレーム経過と同義）に伴い変化する揺らぎ値を演算して格子点に設定する。この演算された揺らぎ値は、各格子点のテクスチャ座標（或いはポリゴン頂点座標）に加算される。例えばテクスチャ座標（ポリゴン頂点座標）に揺らぎ値を加算せずに、元画像をテクスチャとしてポリゴンを描画すると、陽炎の揺らぎが無い元画像がそのまま生成されるようになる。
【００３９】
本実施形態では揺らぎ値演算部１１８が、揺らぎ波形（揺らぎ波形テーブル、揺らぎ波形関数）に基づき得られた揺らぎ値を、格子の第１の辺上（例えば下辺）の格子点に対して設定（付与）する。そしてこのようにして第１の辺上の格子点に設定された揺らぎ値を、第１の辺（例えば下辺）から対向する第３の辺（例えば上辺）に向かって、格子線上の格子点に対して時間経過に伴い伝播する処理を行う。即ち、格子点の揺らぎ値に伝播率を乗算した値を、格子線上の格子点（上方の格子点）に時間経過に伴い徐々に伝播する処理を行って、格子線上の各格子点の揺らぎ値を求める。この場合、揺らぎ値に伝播率を乗算した値に更に加えて、前回のフレーム（例えば１フレーム前）での格子点の揺らぎ値に減衰率を乗算して得られた値や、ランダム値などに基づいて、現在のフレームでの格子点の揺らぎ値を求めてもよい。
【００４０】
なお揺らぎ値演算部１１８は、格子の格子点（制御点、頂点）に対して揺らぎ値の初期値をプリセットする。具体的には、１つの揺らぎ波形の異なるサンプリング点（１周期分のサンプリング点）から得た揺らぎ値を、格子線上の格子点に対して初期値としてプリセットする。そしてその後に格子点の揺らぎ値を時間経過に伴い変化させる処理（フレーム処理）を行う。
【００４１】
描画部１２０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まず、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、或いは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数プリミティブ面）を描画バッファ１７２（フレームバッファ、ワークバッファなどのピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ）に描画する。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００４２】
そして本実施形態では描画部１２０が、各格子点のポリゴン頂点座標と、各格子点のテクスチャ座標に揺らぎ値を加算することで得られたテクスチャ座標とに基づいて、元画像をテクスチャとしてポリゴンを描画する。或いは、各格子点のテクスチャ座標と、各格子点のポリゴン頂点座標に揺らぎ値を加算することで得られたポリゴン頂点座標とに基づいて、元画像をテクスチャとしてポリゴンを描画する。このようにすることで元画像の揺らぎ画像を生成できる。
【００４３】
描画部１２０は、テクスチャマッピング部１２２、隠面消去部１２６を含む。なおこれらの一部を省略する構成にしてもよい。
【００４４】
テクスチャマッピング部１２２は、テクスチャ記憶部１７４に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングするための処理を行う。具体的には、オブジェクト（プリミティブ面）の頂点に設定（付与）されるテクスチャ座標等を用いてテクスチャ記憶部１７４からテクスチャ（色、α値などの表面プロパティ）を読み出す。そして、２次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間（テクセル補間）などを行う。
【００４５】
そして本実施形態ではテクスチャマッピング部１２２が、各格子点のテクスチャ座標に揺らぎ値を加算することで得られたテクスチャ座標に基づいて、テクスチャとして設定された元画像を、ポリゴンにマッピングする。このようにして、陽炎等が表現されたリアルな画像を生成できるようになる。
【００４６】
隠面消去部１２６は、各ピクセルのＺ値（奥行き情報）が格納されるＺバッファ１７６（奥行きバッファ）を用いて、Ｚバッファ法（奥行き比較法、Ｚテスト）により隠面消去処理を行う。即ちオブジェクトのプリミティブ面の各ピクセルを描画する際に、Ｚバッファ１７６に格納されるＺ値を参照する。そして参照されたＺバッファ１７６のＺ値と、プリミティブ面の描画対象ピクセルでのＺ値とを比較し、描画対象ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、そのピクセルの描画処理を行うと共にＺバッファ１７６のＺ値を新たなＺ値に更新する。
【００４７】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００４８】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて分散処理により生成してもよい。
【００４９】
２．本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【００５０】
２．１  揺らぎ値の加算による陽炎の表現
本実施形態のような画像生成システムにおいては、プレーヤの仮想現実感を高めるために、いわゆる陽炎などについてもリアルに表現できることが望ましい。ここで陽炎とは、砂浜や野原に見える色のないゆらめきであり、大気や地面が熱せられて空気密度が不均一になり、それを通過する光が不規則に屈折するために見られる現象である。この陽炎には、サバンナのように遠距離において蜃気楼を伴ってゆっくりと揺らいで見えるものや、ジェット機の噴射口のように細かく速く揺らいで見えるものなどがある。前者の陽炎は空気密度の差が小さいものであり、後者の陽炎は空気密度の差が大きいものである。
【００５１】
例えば建物が燃えているような火事のシーンにおける空気感を表現するためには、前者の陽炎のようにゆっくりと揺らいで見える陽炎を表現することが望ましい。このようなシーンでは、シーン内での空気密度は比較的均一であると推測されるからである。そして陽炎は「熱せられた空気の上昇」であるから、シーン内において下から上へ揺らぎが伝播しているように見える画像を生成することが望ましい。また、熱せられた空気は周りの空気に熱を奪われるため、結果として揺らぎは減衰するものと考えられる。また、揺らぎの方向は曖昧であり、上下の揺らぎ以外にも、風や対流などにより左右の揺らぎもあり得る。
【００５２】
以上のような陽炎の揺らぎをリアルに表現するために、本実施形態では、フレームバッファ（広義には描画領域）に描画された画像を分割し、その分割された要素（画像）を歪めることで、陽炎の揺らぎを表現している。例えばフレームバッファからワークバッファに元画像をコピーし、このワークバッファ上の元画像をテクスチャ画像としてマッピングする際に、ポリゴンのテクスチャ座標Ｕ、Ｖ（又はポリゴンの頂点座標Ｘ、Ｙ）を変動させる。また陽炎は下から上に波が伝播して見えるものであるため、揺らぎが下から上に伝播すると共に徐々に減衰して見える画像を生成する。具体的には本実施形態では以下のような手法を採用している。
【００５３】
まず、図２のＡ１に示すようにフレームバッファへの描画処理を行って元画像を生成する。具体的には例えば、オブジェクトに対してジオメトリ処理（透視変換等の座標変換処理）を施して、ジオメトリ処理後のオブジェクト（ポリゴン）をフレームバッファ（広義には描画領域）に描画することで、元画像を生成する。そして図２のＡ２に示すように、この生成された元画像をワークバッファ（広義には描画領域）にコピーしておく。
【００５４】
また図２のＡ３に示すように、元画像（表示画面、フレームバッファ）を縦横に分割するメッシュの縦横の線の交点を格子点（制御点）とする格子を設定（想定）する。そしてポリゴン頂点座標とテクスチャ座標を各格子点に設定（付与）する。
【００５５】
例えば格子点Ｐ１、Ｐ２、Ｐ３、Ｐ４の座標が（ＸＯ１、ＹＯ１）、（ＸＯ２、ＹＯ２）、（ＸＯ３、ＹＯ３）、（ＸＯ４、ＹＯ４）であり、Ｐ１〜Ｐ４に設定される頂点座標が（Ｘ１、Ｙ１）、（Ｘ２、Ｙ２）、（Ｘ３、Ｙ３）、（Ｘ４、Ｙ４）であり、Ｐ１〜Ｐ４に設定されるテクスチャ座標（頂点テクスチャ座標）が（Ｕ１、Ｖ１）、（Ｕ２、Ｖ２）、（Ｕ３、Ｖ３）、（Ｕ４、Ｖ４）であったとする。すると、例えばＸ１＝Ｕ１＝ＸＯ１、Ｙ１＝Ｖ１＝ＹＯ１、Ｘ２＝Ｕ２＝ＸＯ２、Ｙ２＝Ｖ２＝ＹＯ２、Ｘ３＝Ｕ３＝ＸＯ３、Ｙ３＝Ｖ３＝ＹＯ３、Ｘ４＝Ｕ４＝ＸＯ４、Ｙ４＝Ｖ４＝ＹＯ４の関係が成り立つように、ポリゴン頂点座標とテクスチャ座標を各格子点に設定する。
【００５６】
なおＰＬ１は、格子点Ｐ１、Ｐ２、Ｐ３、Ｐ４を頂点とするポリゴンである。そしてＰＬ１、ＰＬ２、ＰＬ３・・・・は、隣り合う４つの格子点（頂点）により区画される各格子区画に相当するポリゴンである。例えばＰＬ１は、隣り合う４つの格子点（頂点）Ｐ１、Ｐ２、Ｐ３、Ｐ４により区画される格子区画に相当するポリゴンである。ここで、ポリゴンは図２のＡ３のような四角形ポリゴンであってもよいし、３角形ポリゴンであってもよい。また本実施形態のポリゴンはいわゆるスプライトも含むものである。
【００５７】
本実施形態では、時間経過に伴い変化する揺らぎ値が各格子点について演算される。そして、演算された揺らぎ値が格子点のテクスチャ座標に加算される。そして図４のＡ４に示すように、各格子点に設定されたポリゴン頂点座標と、揺らぎ値が加算されたテクスチャ座標とに基づいて、元画像（ワークバッファにコピーされた元画像）をテクスチャとしてフレームバッファにポリゴン（ＰＬ１、ＰＬ２・・）を描画する。これにより、元画像の揺らぎ画像が生成され、リアルな陽炎の表現が可能になる。
【００５８】
例えば図３（Ａ）に示すように、テクスチャ座標に揺らぎ値を加算せずに、各格子点のポリゴン頂点座標（Ｘ１、Ｙ１）〜（Ｘ４、Ｙ４）と、各格子点のテクスチャ座標（Ｕ１、Ｖ１）〜（Ｕ４、Ｖ４）とに基づいて、元画像をテクスチャとしてポリゴンを描画したとする。すると、矩形のテクスチャ領域ＴＲの画像がポリゴンＰＬにマッピングされるため、揺らぎの無い画像が生成されるようになる。
【００５９】
一方、図３（Ｂ）に示すように、各格子点のポリゴン頂点座標（Ｘ１、Ｙ１）〜（Ｘ４、Ｙ４）と、各格子点のテクスチャ座標（Ｕ１、Ｖ１）〜（Ｕ４、Ｖ４）に揺らぎ値（ΔＵ１、ΔＶ１）〜（ΔＵ４、ΔＶ４）を加算することで得られたテクスチャ座標（Ｕ１＋ΔＵ１、Ｖ１＋ΔＶ１）〜（Ｕ４＋ΔＵ４、Ｖ４＋ΔＶ４）とに基づいて、元画像をテクスチャとしてポリゴンを描画したとする。すると、非矩形のテクスチャ領域ＴＲの画像がポリゴンＰＬにマッピングされるため、陽炎のように歪んだ画像（揺らぎを持った画像）に元画像を変形させることできる。しかも、揺らぎ値（ΔＵ１、ΔＶ１）〜（ΔＵ４、ΔＶ４）を時間経過に伴い変化させることで、元画像の各部分が時間経過に伴いゆらゆらと揺れる画像を生成できるようになる。
【００６０】
なお、図３（Ａ）（Ｂ）では、各格子点のテクスチャ座標（Ｕ１、Ｖ１）〜（Ｕ４、Ｖ４）に対して揺らぎ値（ΔＵ１、ΔＶ１）〜（ΔＵ４、ΔＶ４）を加算しているが、各格子点のポリゴン頂点座標（Ｘ１、Ｙ１）〜（Ｘ４、Ｙ４）に対して揺らぎ値（ΔＸ１、ΔＹ１）〜（ΔＸ４、ΔＹ４）を加算するようにしてもよい。このようにすることによっても、陽炎のように歪んだ画像に元画像を変形させることできる。そして、揺らぎ値（ΔＸ１、ΔＹ１）〜（ΔＸ４、ΔＹ４）を時間経過に伴い変化させることで、元画像の各部分が時間経過に伴いゆらゆらと揺れる画像を生成できるようになる。
【００６１】
また、揺らぎ値の加算はテクスチャ座標（ポリゴン頂点座標）の一方のみに行ってもよいし、両方に行ってもよい。また揺らぎ値は、正の値と負の値の両方の値をとることができる。例えば正の値の揺らぎ値を加算すれば、テクスチャ座標（ポリゴン頂点座標）を正の方向に変化させることができ、負の値の揺らぎ値を加算すれば、テクスチャ座標（ポリゴン頂点座標）を負の方向に変化させることができる。またテクスチャ座標（ポリゴン頂点座標）の値が許容範囲外の値にならないようにするためにはクランプ処理を行えばよい。即ち、揺らぎ値の加算により得られた値がＵ、Ｖ空間（Ｘ、Ｙ空間）の下限値或いは上限値を超えた場合には、下限値或いは上限値にクランプする処理を行う。このようにすることで、最終的に元画像をテクスチャマッピングした時に、元画像が存在しない場所のテクセル値等が参照されて表示化けが生じてしまうのを防止できる。
【００６２】
以上のように本実施形態では、揺らぎ値を加算して得られたテクスチャ座標やポリゴン頂点座標に基づいて、元画像をテクスチャとしてポリゴンを描画することで、あたかも陽炎が揺らいで見える画像の生成に成功している。しかも本実施形態では、このような陽炎画像の生成を、揺らぎ値の加算処理を行うだけで実現できるため、少ない処理でリアルな画像を生成できる。
【００６３】
なお、以下では、テクスチャ座標に揺らぎ値を加算する場合を例にとり、本実施形態の各種手法について説明するが、ポリゴン頂点座標に揺らぎ値を加算する場合にも、以下の本実施形態の各種手法は適用できる。
【００６４】
２．２  揺らぎ値の伝播
揺らぎ値を出力する揺らぎ波形（揺らぎ波形テーブル、揺らぎ波形関数）を、全ての格子点の個数分だけ用意し、これらの揺らぎ波形を用いて、全ての格子点の揺らぎ値を設定しようとすると、揺らぎ波形のデータ量が多くなってしまい、メモリの使用記憶容量を圧迫する。また陽炎は「熱せられた空気の上昇」であるため、生成される画像においても、陽炎の揺らぎが下から上に伝播するような画像を生成できることが望ましい。そこで本実施形態では、以下に説明するような手法を採用している。
【００６５】
即ち本実施形態では、図４のＢ１、Ｂ２のような揺らぎ波形（揺らぎ波形テーブル、揺らぎ波形関数）に基づき得られた揺らぎ値を、Ｂ３に示すように格子の辺ＳＤ１（下辺）上の格子点に対して設定する。そして辺ＳＤ１上の格子点に設定された揺らぎ値を、辺ＳＤ１から対向する辺ＳＤ３に向かって、格子線上の格子点に対して時間経過に伴い伝播する処理を行って、格子の各格子点の揺らぎ値を求める。
【００６６】
例えば揺らぎ波形により得られる揺らぎ値を、辺ＳＤ１上の格子点Ｌ１に設定する。そして次のフレームにおいては、格子点Ｌ１に設定された揺らぎ値を格子点Ｌ２に伝播させる。この伝播された揺らぎ値を、更に次のフレームでは格子点Ｌ３に伝播させ、その更に次のフレームでは格子点Ｌ４に伝播させる。このように、格子点Ｌ１に対して設定された揺らぎ値を、格子線上の格子点Ｌ２〜Ｌ１０に対して徐々に伝播させて行く。このようにすれば、あたかも陽炎の揺らぎが画面の下辺ＳＤ１から上辺ＳＤ３に徐々に伝播して行く様子を表現でき、リアルな画像を生成できる。また、全ての格子点の個数分の揺らぎ波形を用意する必要が無いため、揺らぎ波形のデータ量等を軽減できる。しかも、辺ＳＤ１上の格子点に対して異なった値の揺らぎ値を設定するようにすれば、ランダムに見える揺らぎを表現でき、画像のリアル度を増すことができる。
【００６７】
なお図４において辺ＳＤ１上の格子点への揺らぎ値の設定は、辺ＳＤ１上の格子点の個数分の複数の揺らぎ波形により設定してもよいし、１つの揺らぎ波形により設定してもよい。１つの揺らぎ波形により設定する場合には、１つの揺らぎ波形の異なるサンプリング点から得た揺らぎ値を、辺ＳＤ１上の各格子点の揺らぎ値として設定すればよい。
【００６８】
また図４では、格子の下辺ＳＤ１の格子点に対して揺らぎ波形による揺らぎ値を設定しているが、他の辺（ＳＤ２、ＳＤ３、或いはＳＤ４）の格子点に対して揺らぎ波形による揺らぎ値を設定してもよい。例えば、左辺ＳＤ２の格子点に対して揺らぎ値を設定して、伝播方向をＳＤ２からＳＤ４へと向かう方向に設定したり、右辺ＳＤ４の格子点に対して揺らぎ値を設定して、伝播方向をＳＤ４からＳＤ２へと向かう方向に設定すれば、陽炎が風により左右に揺らぐ様子を表現できる。また図４のＢ１、Ｂ２では、揺らぎ値としてΔＵとΔＶの両方を設定しているが、いずれか一方のみを設定するようにしてもよい。
【００６９】
２．３  揺らぎ値を求める処理の具体例
揺らぎ値を求める処理は具体的には以下のような手法で実現できる。
【００７０】
例えば図５では、辺ＳＤ１から辺ＳＤ３に向かって格子線上に格子点Ｌ１〜ＬＪ（第１〜第Ｊの格子点）が設定されている。この場合には、格子点ＬＪ−１の前回のフレーム（例えば１フレーム前）での揺らぎ値ΔＵＪ−１n-1に伝播率Ｋ１を乗算して得られた値Ｋ１×ΔＵＪ−１n-1に基づいて、辺ＳＤ３上にある格子点ＬＪの現在のフレームでの揺らぎ値ΔＵＪnを求める。また格子点ＬＪ−２の前回のフレームでの揺らぎ値ΔＵＪ−２n-1に伝播率Ｋ１を乗算して得られた値Ｋ１×ΔＵＪ−２n-1に基づいて、格子点ＬＪ−１の現在のフレームでの揺らぎ値ΔＵＪ−１nを求める。このようにして格子点の揺らぎ値を順次求めて行き、最後に、格子点Ｌ１の前回のフレームでの揺らぎ値ΔＵ１n-1に伝播率Ｋ１を乗算して得られた値Ｋ１×ΔＵ１n-1に基づいて、格子点Ｌ２の現在のフレームでの揺らぎ値ΔＵ２nを求める。なお格子点Ｕ１の現在のフレームでの揺らぎ値には、揺らぎ波形（揺らぎ波形テーブル、揺らぎ波形関数）により求められた値が設定される。
【００７１】
以上のような手法で各格子点の揺らぎ値を漸化式により求めて行けば、格子点Ｌ１に設定された揺らぎ値を格子点Ｌ２〜ＬＪに対して時間経過に伴い徐々に伝播させることが可能になり、辺ＳＤ１から辺ＳＤ３に向かって揺らぎの波が伝播して行く様子を簡素な処理でリアルに表現できる。
【００７２】
なお図６では、このような揺らぎ値の伝播処理に加えて、前回のフレームでの格子点の揺らぎ値に減衰率を乗算して得られた値に基づいて現在のフレームでの格子点の揺らぎ値を求める処理を行っている。
【００７３】
例えば、格子点ＬＪ−１の前回のフレームでの揺らぎ値ΔＵＪ−１n-1に伝播率Ｋ１を乗算して得られた値Ｋ１×ΔＵＪ−１n-1と、格子点ＬＪの前回のフレームでの揺らぎ値ΔＵＪn-1に減衰率Ｋ２を乗算して得られた値Ｋ２×ΔＵＪn-1とに基づいて、格子点ＬＪの現在のフレームでの揺らぎ値ΔＵＪnを求める。また格子点ＬＪ−２の前回のフレームでの揺らぎ値ΔＵＪ−２n-1に伝播率Ｋ１を乗算して得られた値Ｋ１×ΔＵＪ−２n-1と、格子点ＬＪ−１の前回のフレームでの揺らぎ値ΔＵＪ−１n-1に減衰率Ｋ２を乗算して得られた値Ｋ２×ΔＵＪ−１n-1とに基づいて、格子点ＬＪ−１の現在のフレームでの揺らぎ値ΔＵＪ−１nを求める。このようにして格子点の揺らぎ値を順次求めて行き、最後に、格子点Ｌ１の前回のフレームでの揺らぎ値ΔＵ１n-1に伝播率Ｋ１を乗算して得られた値Ｋ１×ΔＵ１n-1と、格子点Ｌ２の前回のフレームでの揺らぎ値ΔＵ２n-1に減衰率Ｋ２を乗算して得られた値Ｋ２×ΔＵ２n-1とに基づいて、格子点Ｌ２の現在のフレームでの揺らぎ値ΔＵ２nを求める。
【００７４】
図６のように、前回のフレームでの揺らぎ値の加算処理を行うようにすれば、辺ＳＤ１から辺ＳＤ３の方に向かうにつれて、揺らぎ値が増幅して行くような揺らぎ表現を実現できる。即ち揺らぎ値が画面の上に行くにつれて増幅して行くような画像を生成でき、生成画像のバラエティ度を増すことができる。
【００７５】
なお図６では、格子点の揺らぎ値を設定する際に、乱数ＲＮＤを更に加える処理を行うことで、揺らぎのランダム要素の度合いを更に高めている。また、揺らぎ値を求める処理は図５、図６で説明した処理に限定されず、種々の変形実施が可能である。例えば乱数ＲＮＤを加える処理を行わないようにしてもよい。
【００７６】
２．４  初期値のプリセット
図５、図６のような手法で揺らぎ値を求める場合に、最初のフレームでは格子点Ｌ１に対してだけ、零ではない揺らぎ値が設定され、他の格子点Ｌ２〜ＬＪの揺らぎ値は零に設定される。従って、例えば次のフレームにおいては、格子点Ｌ１からＬ２への揺らぎ値の伝播は行われるが、格子点Ｌ２からＬ３や、Ｌ３からＬ４や・・・・ＬＪ−１からＬＪへの揺らぎ値の伝播は行われないことになる。従って、例えば格子点ＬＪ−１からＬＪへの揺らぎ値の伝播が行われるまでに時間を要してしまい、リアルな揺らぎ画像が生成されるまでに所定時間の経過が必要になってしまうという課題がある。
【００７７】
そこで本実施形態では、格子の格子点に対して揺らぎ値の初期値をプリセットし、その後に格子点の揺らぎ値を時間経過に伴い変化させる処理を行うようにしている。
【００７８】
より具体的には図７に示すように、1つの揺らぎ波形の異なるサンプリング点から得た揺らぎ値（サンプリング点の揺らぎ値に所与の係数を乗算した値等）を、格子線上にある各格子点に対して初期値としてプリセットする。そしてその後に格子点の揺らぎ値を時間経過に伴い変化させる。例えば図５、図６の格子点ＬＪ、ＬＪ−１、ＬＪ−２に対しては、図７のＣ１に示すような揺らぎ波形の各サンプリング点（時間軸方向に並ぶサンプリング点）から得られた揺らぎ値を、初期値としてプリセットする。同様に格子点Ｌ３、Ｌ２、Ｌ１に対しては、図７のＣ２に示すような揺らぎ波形の各サンプリング点から得られた揺らぎ値を、初期値としてプリセットする。例えば伝播率、減衰率をＫ１、Ｋ２（Ｋ１＜１．０、Ｋ２＜１．０）とし、格子線上の格子点の個数をｎ個とし、上からｉ番目のサンプリング点での揺らぎ波形の揺らぎ値をｑ（ｉ）とする。この場合には、上からｉ番目のサンプリング点の初期値は、例えばｐ（ｉ）＝（Ｋ１＋Ｋ２）(n-1)×ｑ（ｉ）に設定できる。
【００７９】
以上のように初期値をプリセットすれば、最初のフレームにおいても、格子点Ｌ２〜ＬＪに対して零ではない揺らぎ値が予め設定されるようになる。従って、例えば格子点ＬＪ−１からＬＪへの揺らぎ値の伝播処理や、格子点ＬＪ−２からＬＪ−１への揺らぎ値の伝播処理も直ぐに行われるようになり、リアルな揺らぎ画像を早い段階で生成することが可能になる。
【００８０】
２．５  格子区画の設定
格子の分割数を多くして格子区画を小さくすれば、揺らぎ値を滑らかに伝播させることが可能になり、生成画像の画質を向上できる。しかしながら、処理の負荷が大きくなると共に制御が複雑化してしまうという課題がある。この点、例えば図４のように辺ＳＤ１上の格子点に揺らぎ値を設定して伝播させる手法においては、ＳＤ１に沿った方向での分割数をそれほど多くしなくても、テクスチャマッピングのバイリニア補間が行われるため、画質はそれほど低下しない。即ち図４の格子点Ｌ１のテクスチャ座標が左右方向にずれても、格子点Ｌ１のテクセル値はバイリニア補間により平均化されて求められるため、分割数が少なくても画像のチラツキ等は生じにくい。しかしながら、辺ＳＤ２に沿った方向での分割数が少ないと、上下に隣り合う格子点間ではバイリニアによる補間処理の効果を期待できないため、揺らぎ画像のチラツキ等が発生し易くなってしまう。
【００８１】
そこで本実施形態では図８に示すように、辺ＳＤ１に沿った方向での分割数Ｎよりも辺ＳＤ２に沿った方向での分割数Ｍを多くしている。例えば図８では辺ＳＤ１に沿った方向での分割数はＮ＝１０（格子線数は１１本）になっており、辺ＳＤ２に沿った方向での分割数はＭ＝５６（格子線数は５７本）になっている。そして本実施形態では、格子の辺ＳＤ１に沿った方向（水平方向）での格子区画（ＬＣ１〜ＬＣ４）の長さよりも、辺ＳＤ２に沿った方向（垂直方向）での格子区画の長さの方が短くなるように格子を設定して、複数のポリゴンを生成している。
【００８２】
図８のようにＳＤ１に沿った方向での分割数を少なくして、この方向での格子区画の長さ（幅）を長くしても、バイリニア補間による平均化処理により、画質はそれほど低下しない。またこの方向での分割数を少なくすることで、辺ＳＤ１上の格子点の個数を少なくできる。これにより、これらの格子点に揺らぎ値を与える図４の処理の高速化、制御の簡素化を図ることができ、揺らぎ値の伝播処理の負荷を少なくできる。一方、図８のように辺ＳＤ２に沿った方向での分割数を多くして、この方向での格子区画の長さ（高さ）を短くすれば、揺らぎ値が滑らかに伝播されるようになり、揺らぎ画像のチラツキ等の発生を効果的に防止でき、生成画像の高画質化を図れる。
【００８３】
なお、図８のように格子を設定した場合においても、例えば辺ＳＤ２から辺ＳＤ４へと向かう方向を伝播方向として揺らぎ値の伝播処理を行ったり、辺ＳＤ４から辺ＳＤ２へと向かう方向を伝播方向として揺らぎ値の伝播処理を行ってもよい。
【００８４】
さて、描画領域（フレームバッファ、ワークバッファ）が確保されるメモリ（シンクロナスＤＲＡＭ等）では、ページサイズ単位でデータの読み出し・書き込みを行うことで、データの読み出し・書き込み処理の高速化を図れる。
【００８５】
そこで本実施形態では図８に示すように、描画領域が確保されるメモリのページサイズ分の大きさの領域（Ｄ１に示す領域）に、辺ＳＤ１から対向する辺ＳＤ３へ向かう方向に、例えば４個（広義にはＬ個）の格子区画ＬＣ１、ＬＣ２、ＬＣ３、ＬＣ４が並ぶように格子を設定している。このようにすれば、描画領域のデータがメモリのページを跨いで読み出されたり、書き込まれたりする事態を防止でき、メモリからのデータの読み出し・書き込み処理の高速化を図れる。また図８のように縦方向に格子区画ＬＣ１〜ＬＣ４が並ぶように格子を設定すれば、縦方向での分割数を多くすることが容易になり、揺らぎ画像のチラツキ等の発生を防止できる。
【００８６】
なお格子の横方向の分割数や、縦方向での分割数や、格子区画の幅や高さ等は図８に示すものに限定されず、種々の変形実施が可能である。
【００８７】
２．６  揺らぎ値等の具体例
図９に、図４の辺ＳＤ１上の格子点に設定する揺らぎ値（ΔＵ）の揺らぎ波形の具体例を示す。図９に示すように本実施形態では、辺ＳＤ１上の格子点に対して、フレーム経過（時間経過）に伴い変化する揺らぎ値を与えている。なお揺らぎ波形のデータ量の軽減化等を図るためには、１つの揺らぎ波形の異なるサンプリング点から得た揺らぎ値を、辺ＳＤ１上の各格子点に対して設定することが望ましい。
【００８８】
図１０は、例えば格子の左から６番目の格子線上の格子点の横方向での揺らぎ値（ΔＵ）が、時間経過に伴い変化する様子を示した図である。例えば図１０のＥ１は、上辺ＳＤ３に近い格子点の揺らぎ値を示しており、Ｅ２は、下辺ＳＤ１に近い格子点の揺らぎ値を示している。また図１１は、図１０のフレーム１、２、３、４、５の揺らぎ値の波形を重ねて示した図である。図１０、図１１に示すように本実施形態では、辺ＳＤ１上の格子点に与えられた揺らぎ値が、フレーム経過と共に上方の格子点に徐々に伝播されている。
【００８９】
図１２は、本実施形態の陽炎画像生成手法により生成されたゲーム画像の一部を拡大して示した図である。図１２に示すように本実施形態では、フレーム経過に伴い下から上に画像の揺らぎが伝播されており、リアルな陽炎画像の生成に成功している。
【００９０】
３．本実施形態の処理
次に、本実施形態の詳細な処理例について図１３、図１４のフローチャートを用いて説明する。
【００９１】
図１３は初期設定処理のフローチャートである。まず、ＶＲＡＭにワークバッファを確保する（ステップＳ１）。そして伝播率（Ｋ１）、減衰率（Ｋ２）などのパラメータの初期化を行う（ステップＳ２）。
【００９２】
次に図９で説明した揺らぎ波形のテーブル（配列）をセットする（ステップＳ３）。即ち揺らぎ波形テーブルをＲＡＭにロードする。そして図７で説明したように各格子点（制御点）に対して揺らぎ値（ΔＵ、ΔＶ）の初期値をプリセットする（ステップＳ４）。なお、テクスチャ座標Ｕに対してだけ揺らぎ値を加算する場合には、揺らぎ値ΔＵの初期値だけをプリセットすればよい。
【００９３】
図１４はフレーム毎に行われる処理のフローチャートである。まずフレーム（１／６０秒）更新のタイミングか否かを判断する（ステップＳ１１）。そしてフレーム更新である場合には、ジオメトリ処理後（透視変換後）のオブジェクト（ポリゴン）をフレームバッファに描画して、図２のＡ１に示すような元画像を生成する（ステップＳ１２）。
【００９４】
次に図５、図６等で説明した手法により、揺らぎ値の伝播処理を行う（ステップＳ１３）。そして図２のＡ２で説明したように、フレームバッファの元画像をワークバッファにコピーする（ステップＳ１４）。そして、格子点のテクスチャ座標（Ｕ、Ｖ）に揺らぎ値（ΔＵ、ΔＶ）を加算する処理を行う（ステップＳ１５）。なおテクスチャ座標Ｕに対してだけ揺らぎ値を加算する場合には、ＵとΔＵの加算処理だけを行えばよい。
【００９５】
次に、図２のＡ４で説明したように、ポリゴン頂点座標と、加算により得られたテクスチャ座標（Ｕ＋ΔＵ、Ｖ＋ΔＶ）を用いて、ワークバッファの元画像をテクスチャとしてポリゴンを描画する（ステップＳ１６）。このようにすることで図１２で説明したようなリアルな陽炎画像を生成できる。
【００９６】
なお図１４の処理は、画面（描画領域）を分割した分割領域毎に行ってもよい。例えば図８において、画面を分割した上側の領域（Ｄ２）について図１４の処理を行い、次に画面を分割した下側の領域（Ｄ３）について図１４の処理を行うようにする。このようにすれば、メモリに確保されるワークバッファの領域サイズを小さくでき、メモリの使用記憶容量を節約できる。
【００９７】
なおこのように画面を分割して処理を行う場合には、隣り合う分割領域間にオーバーラップ領域が生じるように分割することが望ましい。例えば図８において、８ページライン分（８×４＝３２格子線分）のＤ２に示す上側領域と、８ページライン分（８×４＝３２格子線分）のＤ３に示す下側領域とに分割し、真ん中の２ページライン分（８格子線分）のＤ４に示す領域についてはオーバーラップさせる。このようにすれば、Ｄ２に示す上側領域について図１４の処理を行う際に、Ｄ４に示すオーバーラップ領域の揺らぎ値を使用できるようになる。またＤ３に示す下側領域について図１４の処理を行う際に、Ｄ４に示すオーバーラップ領域の揺らぎ値を使用できるようになる。これにより、適正な揺らぎ値の伝播処理を実現できる。
【００９８】
４．ハードウェア構成
図１５に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介してダウンロードされたプログラム、或いはＲＯＭ９５０に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、マトリクス演算（ベクトル演算）を高速に実行する。例えばオブジェクトを移動させたり動作（モーション）させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【００９９】
ジオメトリプロセッサ９０４は、メインプロセッサ９００上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ９０６は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする。これにより、オープニング画面やゲーム画面において、ＭＰＥＧ方式等で圧縮された動画像を表示できる。
【０１００】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を実行する。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０を利用して、描画データを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると描画プロセッサ９１０は、描画データやテクスチャに基づいて、Ｚバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ９２２に描画する。また描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。１フレーム分の画像がフレームバッファ９２２に書き込まれるとその画像はディスプレイ９１２に表示される。
【０１０１】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などのゲーム音を生成し、スピーカ９３２を介して出力する。ゲームコントローラ９４２やメモリカード９４４からのデータはシリアルインターフェース９４０を介して入力される。
【０１０２】
ＲＯＭ９５０にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納される。なおＲＯＭ９５０の代わりにハードディスクを利用してもよい。ＲＡＭ９６０は各種プロセッサの作業領域となる。ＤＭＡコントローラ９７０は、プロセッサ、メモリ間でのＤＭＡ転送を制御する。ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２にアクセスする。通信インターフェース９９０はネットワーク（通信回線、高速シリアルバス）を介して外部との間でデータ転送を行う。
【０１０３】
なお本実施形態の各部（各手段）の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１０４】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０１０５】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語（描画領域、Ｌ個等）として引用された用語（フレームバッファ・ワークバッファ、４個等）は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【０１０６】
また、揺らぎ値の設定手法や、揺らぎ値を時間経過に伴い変化させる手法も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。例えば図４〜図６とは異なる手法で揺らぎ値を設定して時間経過に伴い変化させてもよい。
【０１０７】
また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【０１０８】
【図１】本実施形態の画像生成システムの機能ブロック図の例。
【図２】本実施形態の手法の説明図。
【図３】図３（Ａ）（Ｂ）は揺らぎ値の加算処理の説明図。
【図４】揺らぎ値の伝播処理の説明図。
【図５】揺らぎ値を求める処理の具体例。
【図６】揺らぎ値を求める処理の具体例。
【図７】揺らぎ値の初期値をプリセットする手法の説明図。
【図８】格子区画の設定手法の説明図。
【図９】揺らぎ波形の具体例。
【図１０】揺らぎ値が伝播する様子を示す図。
【図１１】揺らぎ値が伝播する様子を示す図。
【図１２】本実施形態で生成されるゲーム画像の一部を拡大して示した図。
【図１３】本実施形態の具体的な処理のフローチャート。
【図１４】本実施形態の具体的な処理のフローチャート。
【図１５】ハードウェア構成例。
【符号の説明】
【０１０９】
ＳＤ１〜ＳＤ４  第１の辺〜第４の辺、ＰＬ、ＰＬ１〜ＰＬ３  ポリゴン、
ＴＲ、ＴＲ１〜ＴＲ３  テクスチャ領域、Ｐ１〜Ｐ４  格子点、
１００  処理部、１１０  オブジェクト空間設定部、１１２  移動・動作処理部、
１１４  仮想カメラ制御部、１１６  座標設定部、１１８  揺らぎ値演算部、
１２０  描画部、１２２  テクスチャマッピング部、１２６  陰面消去部、
１３０  音生成部、１６０  操作部、１７０  記憶部、
１７２  描画バッファ、１７４  テクスチャ記憶部、１７６  Ｚバッファ、
１８０  情報記憶媒体、１９０  表示部、
１９２  音出力部、１９４  携帯型情報記憶装置、１９６  通信部
【図１】
2006011538.tif 000003
【図２】
2006011538.tif 000004
【図３】
2006011538.tif 000005
【図４】
2006011538.tif 000006
【図５】
2006011538.tif 000007
【図６】
2006011538.tif 000008
【図７】
2006011538.tif 000009
【図８】
2006011538.tif 000010
【図９】
2006011538.tif 000011
【図１０】
2006011538.tif 000012
【図１３】
2006011538.tif 000013
【図１４】
2006011538.tif 000014
【図１５】
2006011538.tif 000015
【図１１】
2006011538.tif 000016
【図１２】
2006011538.tif 000017