(57)【要約】【課題】システムの処理負荷を抑えつつ、移動体の周囲に存在する物体が、気流の影響を受けて移動・動作する様子をリアルに表現するプログラム、情報記憶媒体、及び、画像生成システムを提供する。【解決手段】移動体（第１のオブジェクトの一例）の周囲の少なくとも一部を含むエリアを、制御エリアとして設定し、制御エリア内に存在する枯葉（第２のオブジェクトの一例）に対して、制御エリアに基づき設定される制御エリア面の各格子点に対応付けられる移動・動作パラメータに基づいて、移動・動作の演算を行う手法（移動及び動作の少なくとも一方を演算する手法）を採用する。このようにすれば、画像生成システムの処理負荷を抑えつつ、気流が生じたような画像を表現することができる。【選択図】図７
2008225571.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト空間における所与の視点から見える画像を生成するプログラムであって、
第１のオブジェクト及び第２のオブジェクトをオブジェクト空間に設定するオブジェクト空間設定部と、
前記第１のオブジェクト及び前記第２のオブジェクトの移動及び動作の少なくとも一方を演算する移動・動作処理部と、
前記第１のオブジェクトの位置に応じて制御エリアを設定するエリア設定部と、
前記制御エリアに基づいて、制御エリア面を格子状に分割する複数の格子点のそれぞれに対応づけて移動・動作パラメータを設定するパラメータ設定部と、
オブジェクト空間における所与の視点から見える画像を生成する描画部としてコンピュータを機能させ、
前記エリア設定部が、
前記第１のオブジェクトの周囲の少なくとも一部を含むエリアを、前記制御エリアとして設定し、
前記移動・動作処理部が、
前記制御エリア内に存在する前記第２のオブジェクトの位置と、前記制御エリア面の各格子点に対応付けられる移動・動作パラメータとに基づいて、前記第２のオブジェクトの移動及び動作の少なくとも一方を演算することを特徴とするプログラム。
【請求項２】
請求項１において、
前記エリア設定部が、
前記第１のオブジェクトが占める範囲を含む補正エリアを設定し、
前記移動・動作処理部が、
前記第２のオブジェクトの位置が前記補正エリア外に位置するように、前記第２のオブジェクトの位置を補正する演算を行うことを特徴とするプログラム。
【請求項３】
請求項２において、
前記エリア設定部が、
補正エリア面を格子状に分割する複数の格子点と、当該複数の格子点のそれぞれに対応付けられる補正パラメータとに基づいて、補正エリアを設定し、
前記移動・動作処理部が、
前記第２のオブジェクトの位置と、前記補正エリア面の各格子点とに対応付けられる前記補正パラメータとに基づいて、前記第２のオブジェクトの位置を補正する演算を行うことを特徴とするプログラム。
【請求項４】
請求項２において、
前記エリア設定部が、
前記第１のオブジェクトを内包するボリュームを用いて前記補正エリアを設定し、
前記移動・動作処理部が、
前記第２のオブジェクトの少なくとも一部が前記ボリューム内に存在する場合には、前記第２のオブジェクトを前記ボリューム外に位置するように前記第２のオブジェクトの位置を補正する演算を行うことを特徴とするプログラム。
【請求項５】
請求項１において、
前記パラメータ設定部が、
前記制御エリア面を格子状に分割した前記複数の格子点のそれぞれに対応づけて補正パラメータを設定し、
前記移動・動作処理部が、
前記第２のオブジェクトの位置と、前記制御エリア面の各格子点とに対応付けられる前記補正パラメータとに基づいて、前記第２のオブジェクトの位置を補正する演算を行うことを特徴とするプログラム。
【請求項６】
請求項２〜５のいずれかにおいて、
前記移動・動作処理部が、
前記第２のオブジェクトの移動及び動作の少なくとも一方を演算した後に、前記第２のオブジェクトの位置を補正する演算を行うことを特徴とするプログラム。
【請求項７】
請求項１〜６のいずれかにおいて、
前記エリア設定部が、
前記第１のオブジェクトの周囲であって、前記制御エリア面と前記制御エリア面に対する垂直方向の所定範囲によって囲まれたエリアを、前記制御エリアとして設定することを特徴とするプログラム。
【請求項８】
請求項１〜７のいずれかにおいて、
前記エリア設定部が、
複数種類の前記第１のオブジェクトに対して共通の前記制御エリアを設定し、
前記パラメータ設定部が、
複数種類の前記第１のオブジェクトに対して、共通の前記制御エリア面を格子状に分割する前記複数の格子点のそれぞれに対応づけて共通の移動・動作パラメータを設定することを特徴とするプログラム。
【請求項９】
請求項１〜８のいずれかにおいて、
前記移動・動作処理部が、
前記第２のオブジェクトの位置に基づいて前記各格子点に設定された前記移動・動作パラメータを補間し、補間した値に基づいて前記第２のオブジェクトの移動及び動作の少なくとも一方を演算することを特徴とするプログラム。
【請求項１０】
請求項１〜９のいずれかにおいて、
前記オブジェクト空間設定部が、
前記第１のオブジェクトのローカル座標系における前記第１のオブジェクトの位置をオブジェクト空間を定義する座標系における位置に変換することによって、前記第１のオブジェクトを前記オブジェクト空間に設定し、
前記エリア設定部が、
前記制御エリアを前記ローカル座標系に設定し、
前記パラメータ設定部が、
前記制御エリア面を格子状に分割する複数の格子点を、前記ローカル座標系に設定し、
前記移動・動作処理部が、
前記オブジェクト空間に設定された前記第２のオブジェクトの位置を前記ローカル座標系に変換し、変換した位置に基づいて演算することを特徴とするプログラム。
【請求項１１】
コンピュータにより読取可能な情報記憶媒体であって、請求項１〜１０のいずれかに記載のプログラムを記憶することを特徴とする情報記憶媒体。
【請求項１２】
オブジェクト空間における所与の視点から見える画像を生成する画像生成システムであって、
第１のオブジェクト及び第２のオブジェクトをオブジェクト空間に設定するオブジェクト空間設定部と、
前記第１のオブジェクト及び前記第２のオブジェクトの移動及び動作の少なくとも一方を演算する移動・動作処理部と、
前記第１のオブジェクトの位置に応じて制御エリアを設定するエリア設定部と、
前記制御エリアに基づいて、制御エリア面を格子状に分割する複数の格子点のそれぞれに対応づけて移動・動作パラメータを設定するパラメータ設定部と、
オブジェクト空間における所与の視点から見える画像を生成する描画部と、
を含み、
前記エリア設定部が、
前記第１のオブジェクトの周囲の少なくとも一部を含むエリアを、前記制御エリアとして設定し、
前記移動・動作処理部が、
前記制御エリア内に存在する前記第２のオブジェクトの位置と、前記制御エリア面の各格子点に対応付けられる移動・動作パラメータとに基づいて、前記第２のオブジェクトの移動及び動作の少なくとも一方を演算することを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体、及び、画像生成システムに関する。
【背景技術】
【０００２】
従来から、ゲームなどの移動体オブジェクトが設定されるオブジェクト空間（仮想的な３次元空間）内において仮想カメラ（所与の視点）から見える画像を生成する画像生成システムが知られており、いわゆる仮想現実を体験できるものとして人気が高い。このような画像生成システムでは、物体に対して気流の影響を受けるように移動・動作させる気流制御を行う場合がある。例えば、オブジェクト空間に存在する物体（例えば枯葉）が、移動体の移動により発生する気流の影響を受けて移動・動作する様子を表現する場合がある。
【特許文献１】特開２００１−２８６６７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来の気流制御は、移動体の形状に左右されない領域に存在する物体に、気流の影響を与える移動・動作の演算を行う手法が採用されていた。しかし、この手法を採用すると、移動体の凹凸等の形状に応じたきめ細かい気流の様子を表現することができない。
【０００４】
また、厳密に気流のシミュレーションの演算を行い、その演算結果に基づいて移動体の周囲に存在する物体の移動・動作の演算を厳密に行う手法も知られている。しかし、この手法は演算量が多く大きな処理負荷がかかる。
【０００５】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、システムの処理負荷を抑えつつ、移動体の周囲に存在する物体が、気流の影響を受けて移動・動作する様子をリアルに表現するプログラム、情報記憶媒体、及び、画像生成システムを提供することにある。
【課題を解決するための手段】
【０００６】
（１）本発明は、オブジェクト空間における所与の視点から見える画像を生成する画像生成システムであって、第１のオブジェクト及び第２のオブジェクトをオブジェクト空間に設定するオブジェクト空間設定部と、前記第１のオブジェクト及び前記第２のオブジェクトの移動及び動作の少なくとも一方を演算する移動・動作処理部と、前記第１のオブジェクトの位置に応じて制御エリアを設定するエリア設定部と、前記制御エリアに基づいて、制御エリア面を格子状に分割する複数の格子点のそれぞれに対応づけて移動・動作パラメータを設定するパラメータ設定部と、オブジェクト空間における所与の視点から見える画像を生成する描画部と、を含み、前記エリア設定部が、前記第１のオブジェクトの周囲の少なくとも一部を含むエリアを、前記制御エリアとして設定し、前記移動・動作処理部が、前記制御エリア内に存在する前記第２のオブジェクトの位置と、前記制御エリア面の各格子点に対応付けられる移動・動作パラメータとに基づいて、前記第２のオブジェクトの移動及び動作の少なくとも一方を演算することを特徴とする画像生成システムに関するものである。
【０００７】
また本発明は、上記各部としてコンピュータを機能させるプログラム及びそのようなプログラムを記憶するコンピュータに読み取り可能な情報記憶媒体に関するものである。
【０００８】
本発明の「格子状」とは、所定間隔で区切られている状態をいう。また、本発明の「第１のオブジェクトの周囲の少なくとも一部」とは、第１のオブジェクトの周囲の上方、下方、前方、後方、左側方、及び右側方、の少なくとも一部のことをいう。
【０００９】
本発明によれば、第１のオブジェクトの周囲の少なくとも一部を含むエリアを制御エリアとして設定し、制御エリア内に存在する第２の移動体オブジェクトに対して、移動・動作パラメータに基づく移動・動作の演算を行うことができるので、従来のように気流のシミュレーション演算を行い演算結果に基づいて第２のオブジェクトを移動・動作させる演算を行わなくても、簡易な演算で第１のオブジェクトの周囲の少なくとも一部を含むエリアに存在する第２のオブジェクトに対して、気流の影響を受けて移動・動作する様子を表現することができる。
【００１０】
例えば、移動体（第１のオブジェクトの一例）が移動することによって気流が発生する様子を表現する場合には、移動体の周囲の少なくとも一部を含むエリアを制御エリアとして設定し、制御エリアに基づいて移動・動作パラメータを設定するようにすれば、制御エリアに存在する枯葉（第２のオブジェクトの一例）に対して、設定された移動・動作パラメータに基づいて気流の影響を与えて移動・動作の演算を行うことができる。また、本発明によれば、第２のオブジェクトの位置に基づいて、制御エリア面の各格子点に対応付けられる移動・動作パラメータを取得することができるので、気流のシミュレーションを行う計算に比較して計算量が少なく画像処理システムの処理負荷を抑えることができる。
【００１１】
（２）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記エリア設定部が、前記第１のオブジェクトが占める範囲を含む補正エリアを設定し、前記移動・動作処理部が、前記第２のオブジェクトの位置が前記補正エリア外に位置するように、前記第２のオブジェクトの位置を補正する演算を行うようにしてもよい。
【００１２】
本発明によれば、第１のオブジェクトが占める範囲を含む補正エリアを設定し、第２のオブジェクトの位置が補正エリア外に位置するように補正するので、第２のオブジェクトが第１のオブジェクトの中に存在したり、第２のオブジェクトが第１のオブジェクトにめり込むような不自然な画像を生成することを防ぐことができる。
【００１３】
（３）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記エリア設定部が、補正エリア面を格子状に分割する複数の格子点と、当該複数の格子点のそれぞれに対応付けられる補正パラメータとに基づいて、補正エリアを設定し、前記移動・動作処理部が、前記第２のオブジェクトの位置と、前記補正エリア面の各格子点とに対応付けられる前記補正パラメータとに基づいて、前記第２のオブジェクトの位置を補正する演算を行うようにしてもよい。
【００１４】
本発明によれば、第２のオブジェクトの位置と、補正エリア面の各格子点との２次元の位置関係に基づいて補正パラメータを取得し、取得した補正パラメータに基づいて第２のオブジェクトの補正の演算を行うので、演算量を少なくしつつ、第２のオブジェクトが第１のオブジェクトにめり込まないような画像を生成することができる。例えば、第１のオブジェクトが凹凸のある複雑な形状を有するものであっても、画像生成システムの処理負荷をかけずに、簡易な計算で第２のオブジェクトが第１のオブジェクト外に存在するような自然な画像を生成することができる。
【００１５】
（４）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記エリア設定部が、前記第１のオブジェクトを内包するボリュームを用いて前記補正エリアを設定し、前記移動・動作処理部が、前記第２のオブジェクトの少なくとも一部が前記ボリューム内に存在する場合には、前記第２のオブジェクトを前記ボリューム外に位置するように前記第２のオブジェクトの位置を補正する演算を行うようにしてもよい。
【００１６】
本発明によれば、第１のオブジェクトを内包するボリュームを用いて補正する演算を行うので、第２のオブジェクトの少なくとも一部が第１のオブジェクト内に存在するか否かを厳密に計算する手法に比較して、容易に補正する演算を行うことができる。
【００１７】
（５）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記パラメータ設定部が、前記制御エリア面を格子状に分割した前記複数の格子点のそれぞれに対応づけて補正パラメータを設定し、前記移動・動作処理部が、前記第２のオブジェクトの位置と、前記制御エリア面の各格子点とに対応付けられる前記補正パラメータとに基づいて、前記第２のオブジェクトの位置を補正する演算を行うようにしてもよい。
【００１８】
本発明によれば、制御エリア面を格子状に分割した複数の２次元の格子点のそれぞれに対応づけて、移動・動作パラメータだけでなく補正パラメータも予め設定するので、演算時には１つの格子点で移動・動作パラメータと補正パラメータとを参照することができ、演算処理の負荷を抑えることができる。
【００１９】
（６）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記移動・動作処理部が、前記第２のオブジェクトの移動及び動作の少なくとも一方を演算した後に、前記第２のオブジェクトの位置を補正する演算を行うようにしてもよい。
【００２０】
本発明によれば、第２のオブジェクトの移動及び動作の少なくとも一方を演算することによって、第２のオブジェクトの一部が第１のオブジェクトの中に位置することになっても、その後に第２のオブジェクトの位置を補正する演算を行うので、不自然な画像を生成することを防止することができる。つまり、本発明によれば、第２のオブジェクトが第１のオブジェクトにめり込むような不自然な画像を生成することを確実に防ぐことができ、常に自然な画像を生成することができる。
【００２１】
（７）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記エリア設定部が、前記第１のオブジェクトの周囲であって、前記制御エリア面と前記制御エリア面に対する垂直方向の所定範囲によって囲まれたエリアを、前記制御エリアとして設定してもよい。
【００２２】
本発明によれば、制御エリア内に存在する第２のオブジェクトにのみに、移動・動作パラメータに基づく移動・動作を行うので、演算量を抑えることができる。
【００２３】
（８）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記エリア設定部が、複数種類の前記第１のオブジェクトに対して共通の前記制御エリアを設定し、前記パラメータ設定部が、複数種類の前記第１のオブジェクトに対して、共通の前記制御エリア面を格子状に分割する前記複数の格子点のそれぞれに対応づけて共通の移動・動作パラメータを設定するようにしてもよい。
【００２４】
本発明によれば、複数種類の第１のオブジェクトごとに移動・動作パラメータを設定する必要がないので、複数種類の第１のオブジェクトごとに移動・動作パラメータを設定する場合に比較して記憶領域を節約することができる。
【００２５】
（９）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記移動・動作処理部が、前記第２のオブジェクトの位置に基づいて前記各格子点に設定された前記移動・動作パラメータを補間し、補間した値に基づいて前記第２のオブジェクトの移動及び動作の少なくとも一方を演算するようにしてもよい。
【００２６】
本発明によれば、各格子点に設定された移動・動作パラメータを補間した値に基づいて第２のオブジェクトの移動及び動作の少なくとも一方を演算することができるので、制御エリア面を粗く格子状に分割した複数の格子点それぞれに対応づけて移動・動作パラメータを設定することができる。そして、その結果、制御エリア面を細かく格子状に分割して密に格子点を設定する必要はないので、移動・動作パラメータのデータ量を削減することができ、記憶領域を節約することができる。
【００２７】
（１０）また、本発明の画像生成システム、プログラム及び情報記憶媒体では、前記オブジェクト空間設定部が、前記第１のオブジェクトのローカル座標系における前記第１のオブジェクトの位置をオブジェクト空間を定義する座標系における位置に変換することによって、前記第１のオブジェクトを前記オブジェクト空間に設定し、前記エリア設定部が、前記制御エリアを前記ローカル座標系に設定し、前記パラメータ設定部が、前記制御エリア面を格子状に分割する複数の格子点を、前記ローカル座標系に設定し、前記移動・動作処理部が、前記オブジェクト空間に設定された前記第２のオブジェクトの位置を前記ローカル座標系に変換し、変換した位置に基づいて演算するようにしてもよい。
【００２８】
本発明によれば、オブジェクト空間（ワールド座標系）における第１のオブジェクトの位置に左右されずに移動・動作パラメータを設定することができると共に、オブジェクト空間における第２のオブジェクトの位置を、第１のオブジェクトのローカル座標系に変換するだけで、第２のオブジェクトの移動・動作や補正の演算を簡易に行うことが可能になる。つまり、本発明によれば、オブジェクト空間で第１のオブジェクトが移動する度に制御エリアを設定し、第２のオブジェクトの移動・動作や補正を行う演算処理に対する煩雑さを回避することができるので、画像生成システムの処理負荷を抑えることが可能になる。
【発明を実施するための最良の形態】
【００２９】
１．構成
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３０】
図１に本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００３１】
操作部１６０は、プレーヤが移動体の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。
【００３２】
記憶部１７０は、種々のデータを記憶する処理を行う。主記憶部１７２は、処理部１００で用いるワーク領域として用いることができる。特に、本実施の主記憶部１７２は、パラメータ設定部１１６で設定される移動・動作パラメータ、補正パラメータを記憶することができる。また描画バッファ１７４は、画像情報を記憶することができる。
【００３３】
また、オブジェクトデータ記憶部１７６は、オブジェクトデータを記憶することができる。特に、本実施形態のオブジェクトデータ記憶部１７６は、第１のオブジェクト（移動体）や、第２のオブジェクト（枯葉、雪、雨）のオブジェクトデータを記憶することができる。なお、第１のオブジェクトが移動体である場合には、複数種類の移動体を記憶することができる。
【００３４】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００３５】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００３６】
携帯型情報記憶媒体１９４は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶媒体１９４としては、メモリカードや携帯型ゲーム装置などがある。通信部１９６は外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００３７】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバ）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信してもよい。このようなホスト装置（サーバ）の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００３８】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。処理部１００は記憶部１７０内の主記憶部１７２をワーク領域として各種処理を行い、処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００３９】
処理部１００は、オブジェクト空間設定部１１０、移動・動作処理部１１２、エリア設定部１１４、パラメータ設定部１１６、描画部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００４０】
オブジェクト空間設定部１１０は、移動体、物体、粒子、枯葉、雪、雨、キャラクタ、建物、球場、車、飛行機、船、潜水艦、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。特に、本実施形態では、記憶部１７０のオブジェクトデータ記憶部１７６に記憶される第１のオブジェクト（移動体）や、第２のオブジェクト（枯葉、雪、雨）をオブジェクト空間に配置する処理を行う。
【００４１】
特に本実施形態のオブジェクト空間設定部１１０は、第１のオブジェクトのローカル座標系における第１のオブジェクトの位置をオブジェクト空間に変換することによって、第１のオブジェクトをオブジェクト空間に設定することができ、また、第２のオブジェクトのローカル座標系における第２のオブジェクトの位置をオブジェクト空間に変換することによって、第２のオブジェクトをオブジェクト空間に設定することができる。
【００４２】
移動・動作処理部１１２は、オブジェクト（車、電車又は飛行機、枯葉、雪、雨等）の移動・動作演算（移動・動作シミュレーション）を行う。すなわち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させたりする処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（オブジェクトを構成する各パーツの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００４３】
特に本実施形態では、第１のオブジェクト及び第２のオブジェクトの移動及び動作の少なくとも一方を演算する。具体的に説明すると、本実施形態の移動・動作処理部１１２は、エリア設定部１１４で設定された制御エリア内に存在する第２のオブジェクトの位置と、後述するパラメータ設定部１１６において設定される制御エリア面の各格子点に対応付けられる移動・動作パラメータとに基づいて、第２のオブジェクトの移動及び動作の少なくとも一方を演算する。
【００４４】
また、本実施形態の移動・動作処理部１１２は、第２のオブジェクトの位置がエリア設定部１１４で設定された補正エリアの外に位置するように、第２のオブジェクトの位置を補正する演算を行う。具体的に説明すると、第２のオブジェクトの位置を補正する演算は、第２のオブジェクトの位置と、後述するパラメータ設定部１１６において設定される補正エリア面の各格子点とに対応付けられる補正パラメータとに基づいて、第２のオブジェクトの位置を補正する演算を行うことができる。なお、パラメータ設定部１１６において、制御エリア面を格子状に分割した複数の格子点のそれぞれに対応づけて補正パラメータを設定した場合には、第２のオブジェクトの位置と、制御エリア面の各格子点とに対応付けられる補正パラメータとに基づいて、前記第２のオブジェクトの位置を補正する演算を行うようにしてもよい。
【００４５】
また、本実施形態の移動・動作処理部１１２の第２のオブジェクトの位置を補正する演算は、エリア設定部１１４で第１のオブジェクトを内包するボリュームを用いて補正エリアを設定し、第２のオブジェクトの少なくとも一部がボリューム内に存在する場合には、第２のオブジェクトをボリューム外に位置するように第２のオブジェクトの位置を補正する演算を行うようにしてもよい。
【００４６】
また、本実施形態の移動・動作処理部１１２は、第２のオブジェクトの移動及び動作の少なくとも一方を演算した後に、第２のオブジェクトの位置を補正する演算を行うようにしてもよい。
【００４７】
また、本実施形態の移動・動作処理部１１２は、第２のオブジェクトの位置に基づいて移動・動作パラメータを補間し、補間した値に基づいて第２のオブジェクトの移動及び動作の少なくとも一方を演算してもよい。
【００４８】
また、本実施形態の移動・動作処理部１１２は、オブジェクト空間に設定された第２のオブジェクトの位置を第１のオブジェクトのローカル座標系に変換し、変換した位置に基づいて第２のオブジェクトの移動・動作の演算や補正の演算を行うようにようにしてもよい。具体的に説明すると、第１のオブジェクトのローカル座標系の位置（座標値）を、オブジェクト空間（ワールド座標系）の位置（座標値）に変換するための行列式Ｍを用いて演算を行う。つまり、オブジェクト空間（ワールド座標系）に設定された第２のオブジェクトの位置（座標値）に、行列式Ｍの逆行列を乗算することによって、第１のオブジェクトのローカル座標系における第２のオブジェクトの位置（座標値）を求めることができる。そして、求めた位置に基づいて、簡易に第２のオブジェクトの移動・動作や補正の演算を行うことができる。つまり、オブジェクト空間上を第１のオブジェクトが移動する度に、オブジェクト空間上で第２のオブジェクトの移動・動作を制御する煩雑な演算処理に比較して格段に演算量を抑えることができる。
【００４９】
エリア設定部１１４は、第１のオブジェクトの位置に応じて所与のエリアを設定する。特に、本実施形態のエリア設定部１１４は、第１のオブジェクトの位置に応じて制御エリアを設定する。例えば、第１のオブジェクトの周囲の少なくとも一部を含むエリアを制御エリアとして設定することができる。
【００５０】
具体的には、第１のオブジェクトの周囲であって、制御エリア面と制御エリア面に対する垂直方向の所定範囲によって囲まれたエリアを、制御エリアとして設定することができる。また、第１のオブジェクトの周囲のうち進行方向に対して前方部分と側面部分とを制御エリアとして設定してもよい。また、第１のオブジェクトが車である場合には、車の周囲のうち、上昇気流が発生しやすい周囲の一部（例えば車のフロントガラス部分）を制御エリアとして設定してもよい。
【００５１】
また、本実施形態のエリア設定部１１４は、複数種類の第１のオブジェクトに対して共通の制御エリアを設定することができる。例えば、第１のオブジェクトが車である場合には、乗用車、スポーツカー、バス、トラックなどの種々の車種に応じて、同じ制御エリアを設定するようにすることができる。このようにすれば、車種毎に制御エリアを設定する場合に比較して記憶領域を節約できるからである。
【００５２】
また、本実施形態のエリア設定部１１４は、第１のオブジェクトが占める範囲を含む補正エリアを設定することができる。補正エリアは、補正エリア面を格子状に分割する複数の２次元の格子点と、当該複数の２次元の格子点のそれぞれに対応付けられる補正パラメータとに基づいて、補正エリアを設定することができる。また、補正エリアは、第１のオブジェクトを内包するボリュームを用いて補正エリアを設定するようにしてもよい。ここで、ボリュームとは、例えば、第１のオブジェクトを囲う球（バウンディングスフィア）や直方体（バウンディングボックス）などの簡単な形状をもつ立体とすることができる。なお、本実施形態のエリア設定部１１４は、第１のオブジェクトの概形を表すボリュームを用いて、補正エリアを設定してもよい。例えば、第１のオブジェクトが、「針の刺さった球」である場合には、針の部分を無視した球（バウンディングスフィア）のボリュームを用いて補正エリアを設定するようにしてもよい。
【００５３】
また、本実施形態のエリア設定部１１４は、制御エリアを第１のオブジェクトのローカル座標系に設定することができる。つまり、本実施形態のオブジェクト空間設定部１１０は、第１のオブジェクトのローカル座標系における第１のオブジェクトの位置をオブジェクト空間に変換することによって、第１のオブジェクトをオブジェクト空間に設定する。そして、本実施形態のエリア設定部１１４は、その際のローカル座標系に制御エリアを設定する。このようにすれば、オブジェクト空間上で第２のオブジェクトの移動・動作を演算する必要がないので、演算量を抑えることができる。なお、補正エリアについても同様に、第１のオブジェクトのローカル座標系に補正エリア設定することによって、演算量を抑えるようにしてもよい。
【００５４】
パラメータ設定部１１６は、処理部１００が演算するために用いられるパラメータを設定する。例えば、第１のオブジェクトや第２のオブジェクトの移動・動作の演算に用いられるパラメータを設定する。
【００５５】
特に本実施形態のパラメータ設定部１１６は、制御エリアに基づいて、制御エリア面を格子状に分割する複数の格子点のそれぞれに対応づけて移動・動作パラメータを設定することができる。ここで、制御エリア面とは２つの座標軸からなる所定範囲の面とすることができる。
【００５６】
特に本実施形態のパラメータ設定部１１６は、第１のオブジェクトのローカル座標系に設定された制御エリアに基づいて、制御エリア面を格子状に分割する複数の格子点を、第１のオブジェクトのローカル座標系に設定することができる。つまり、本実施形態のオブジェクト空間設定部１１０は、第１のオブジェクトのローカル座標系における第１のオブジェクトの位置をオブジェクト空間に変換することによって、第１のオブジェクトをオブジェクト空間に設定するが、その際のローカル座標系に制御エリア面を設定し、制御エリア面を格子状に分割する複数の格子点を設定する。このようにすれば、制御エリア内に存在する第２のオブジェクトの位置（Ｘ、Ｚの座標値）と、各格子点の位置（Ｘ、Ｚの座標値）とに基づいて、移動・動作パラメータを取得し、取得した移動・動作パラメータに基づいて、第２のオブジェクトの移動・動作を演算することができる。例えば、取得した移動・動作パラメータに基づいて第２のオブジェクトの移動速度を演算し、演算された移動速度に基づいて第２のオブジェクトを移動させる演算を行うようにすることができる。
【００５７】
また、本実施形態のパラメータ設定部１１６は、複数種類の第１のオブジェクトに対して、共通の制御エリア面を格子状に分割する複数の格子点のそれぞれに対応づけて共通の移動・動作パラメータを設定するようにしてもよい。このようにすれば、本実施の画像生成システムで使用する記憶領域を節約することができるからである。
【００５８】
また、本実施形態のパラメータ設定部１１６は、補正エリア面を格子状に分割する複数の格子点のそれぞれに対応づけて、補正パラメータを設定することができる。ここで、補正エリア面とは２つの座標軸からなる所定範囲の面とすることができる。例えば、第１のオブジェクトのローカル座標系においてのＸ座標及びＺ座標で構成される所定範囲の面とすることができる。補正エリア面は、第１のオブジェクトに基づいて設定することができる。例えば、第１のオブジェクトを構成する点（Ｘ，Ｚ）を含むように設定することができる。
【００５９】
特に本実施形態のパラメータ設定部１１６は、第２のオブジェクトの位置（Ｘ、Ｚの座標値）と、補正エリア面の各格子点の位置（Ｘ、Ｚの座標値）との位置関係に基づいて、第２のオブジェクトの位置を補正することができる。なお、補正エリア面を格子状に分割する場合には、制御エリア面を格子状に分割する場合と異なる手法で分割するようにしてもよい。例えば、補正エリア面は制御エリア面よりも細かく分割し、各格子点に対応づけて補正パラメータを格納するようにしてもよい。
【００６０】
また、本実施形態のパラメータ設定部１１６は、複数種類の第１のオブジェクトごとに補正パラメータを設定する場合には、共通の補正エリア面の格子点に対応づけて共通の補正パラメータを設定してもよいが、それぞれ異なる補正エリア面を用意し、第１のオブジェクトごとに格子状に分割した複数の格子点のそれぞれに対応づけて補正パラメータを設定することが望ましい。第１のオブジェクトの形状に応じて補正パラメータを設定した方が、第１のオブジェクトの形状に沿った補正を正確に行うことができるからである。
【００６１】
また、本実施形態のパラメータ設定部１１６は、補正エリア面を設定せずに、制御エリア面を用いて補正パラメータを設定することができる。つまり、制御エリア面の各格子点に対応づけて、移動・動作パラメータだけでなく、補正パラメータも設定するようにしてもよい。
【００６２】
仮想カメラ制御部は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００６３】
例えば仮想カメラによりオブジェクト（例えばキャラクタ、ボール、車）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部１１２で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させる制御や、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【００６４】
描画部１２０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まず表示物（オブジェクト、モデル）を定義する各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）を含む表示物データ（オブジェクトデータ、モデルデータ）が入力され、入力された表示物データに含まれる頂点データに基づいて、頂点処理が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。頂点処理では、頂点の移動処理や、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、透視変換、あるいは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、表示物を構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（フラグメント処理）が行われる。ピクセル処理では、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ１７４（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット）に出力（描画）する。すなわち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内に設定された仮想カメラ（所与の視点）から見える画像が生成される。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として１画面に表示できるように画像を生成することができる。
【００６５】
なお描画部１２０が行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現されてもよい。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、ハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００６６】
そして描画部１２０は、表示物を描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【００６７】
ジオメトリ処理では、表示物に関して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後（透視投影変換後）の表示物データ（表示物の頂点の位置座標、テクスチャ座標、色データ（輝度データ）、法線ベクトル、或いはα値等）は、主記憶部１７２に保存される。
【００６８】
テクスチャマッピングは、記憶部１７０に記憶されるテクスチャ（テクセル値）を表示物にマッピングするための処理である。具体的には、表示物の頂点に設定（付与）されるテクスチャ座標等を用いて記憶部１７０からテクスチャ（色（ＲＧＢ）、α値などの表面プロパティ）を読み出す。そして、２次元の画像であるテクスチャを表示物にマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【００６９】
隠面消去処理としては、描画ピクセルのＺ値（奥行き情報）が格納されるＺバッファ（奥行きバッファ）を用いたＺバッファ法（奥行き比較法、Ｚテスト）による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Ｚバッファに格納されるＺ値を参照する。そして参照されたＺバッファのＺ値と、プリミティブの描画ピクセルでのＺ値とを比較し、描画ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、その描画ピクセルの描画処理を行うとともにＺバッファのＺ値を新たなＺ値に更新する。
【００７０】
αブレンディング（α合成）は、α値（Ａ値）に基づく半透明合成処理（通常αブレンディング、加算αブレンディング又は減算αブレンディング等）のことである。例えば、通常αブレンディングでは、α値を合成の強さとして線形補間を行うことにより２つの色を合成した色を求める処理を行う。
【００７１】
なお、α値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えばＲＧＢの各色成分の輝度を表す色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして使用できる。
【００７２】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００７３】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて分散処理により生成してもよい。
【００７４】
２．本実施形態の手法
２．１  第２のオブジェクトの移動・動作の演算手法についての説明
本実施形態の画像生成システムでは、移動体（第１のオブジェクトの一例）の周囲の少なくとも一部を含むエリアを、制御エリアとして設定し、制御エリア内に存在する枯葉（第２のオブジェクトの一例）に対して、制御エリアに基づき設定される制御エリア面の各格子点に対応付けられる移動・動作パラメータに基づいて、移動・動作の演算を行う手法（移動及び動作の少なくとも一方を演算する手法）を採用する。このようにすれば、画像生成システムの処理負荷を抑えつつ、移動体の周囲に存在する枯葉が気流の影響を受けて移動・動作する様子をリアルに表現することができる。
【００７５】
まず、制御エリアの設定例について説明する。制御エリアとは、第２のオブジェクトに対して移動・動作パラメータに基づく特別な処理を行うエリアである。本実施形態では、移動体の移動に伴い発生する気流の影響を受ける枯葉の移動・動作を表現するために、枯葉の移動・動作を制御するための制御エリアを設定する。
【００７６】
本実施形態では、ローカル座標系における移動体の位置（座標値）を、オブジェクト空間（ワールド座標系）の位置（座標値）に変換することによって、移動体をオブジェクト空間に設定する。そして、その際の当該ローカル座標系において制御エリアを設定する。
【００７７】
ここで、本実施形態において、最終的に出力される画像を生成する過程におけるローカル座標系とオブジェクト空間（ワールド座標系）との関係を図２（Ａ）（Ｂ）（Ｃ）を用いて説明すると、図２（Ａ）（Ｂ）に示すように、ローカル座標系（モデリング座標系）に移動体や枯葉をはじめとするオブジェクトの各々を、シーン全体を表すオブジェクト空間（ワールド座標系）に変換する座標変換を行う。つまり、図２（Ａ）（Ｂ）に示すように、移動体や枯葉のローカル座標系の座標値を、拡大縮小、回転、平行移動の座標変換を行い、図２（Ｃ）に示すようにワールド座標の座標値に変換する座標変換を行う。そして、オブジェクト空間（ワールド座標系）において、移動体や枯葉をはじめとするオブジェクトが配置され、オブジェクト空間における所与の視点から見える画像を生成する。
【００７８】
すなわち、本実施形態では、ワールド座標系に座標変換されることになる移動体のローカル座標系において制御エリアを設定するものである。このようにすれば、オブジェクト空間における移動体の位置に左右されずに制御エリアを設定することができる。つまり、移動体のローカル座標系において制御エリアを設定すれば、後述するローカル座標系の座標値で示される制御エリア面を格子状に分割した複数の格子点のそれぞれに対応づけて移動・動作パラメータを設定することができるので、結果的に、枯葉の移動・動作を制御するための移動・動作パラメータは、ワールド座標系（オブジェクト空間）における移動体の位置に関係なく一意に設定することができる。要するに、移動体がオブジェクト空間において移動する度に移動・動作パラメータを設定する煩わしさを回避することができる。
【００７９】
具体的に、ワールド座標系における例を示した図３（Ａ）と、ローカル座標系における例を示した図３（Ｂ）を用いて説明する。
【００８０】
例えば、仮に、図３（Ａ）に示すようにワールド座標系において、移動体ＯＢ１が坂の上（Ｐ点）又は、坂の下（Ｑ点）の位置に応じて制御エリアＣＡを設定する場合には、移動体ＯＢ１のＰ点、Ｑ点の位置に応じて、移動・動作パラメータを設定することになり、データ量や演算処理が多くなり、画像生成システムの処理負荷が高まることになる。
【００８１】
一方、図３（Ｂ）に示すように、移動体ＯＢ１のローカル座標系に制御エリアＣＡを設定すれば、移動体がワールド座標系において自由に移動したとしても移動・動作パラメータを一意に設定することができる。つまり、図３（Ａ）でＰ点、Ｑ点のいずれに移動体ＯＢ１が存在したとしても、移動・動作パラメータを設定し直す必要はなく、データ量や処理量を抑えることができる。
【００８２】
さらに、このように移動体のローカル座標系において制御エリアを設定すれば、オブジェクト空間（ワールド座標系）に存在する枯葉を、移動体のローカル座標系に逆変換することによって、気流制御のシミュレーション演算を容易に行うことができる。
【００８３】
例えば、仮に、ワールド座標系で、制御エリアを設定する場合には、図３（Ａ）に示すように、Ｐ点、Ｑ点のいずれに移動体ＯＢ１が位置していたとしても、移動体ＯＢ１の位置に応じて設定された制御エリアＣＡを基準に、枯葉ＯＢ２に対して、制御エリアＣＡ内に存在するか否かを判断し枯葉ＯＢ２が制御エリアＣＡ内に存在する場合には移動・動作の演算を行うことになる。つまり、移動体ＯＢ１の位置が変化する度に、制御エリアＣＡの変化に応じて、枯葉ＯＢ２と制御エリアＣＡとの相対的な位置関係を演算して、枯葉ＯＢ２の移動・動作の演算を行うことになる。
【００８４】
一方、本実施形態によれば、移動体ＯＢ１がＰ点、Ｑ点のいずれの位置に存在していたとしても、単に枯葉ＯＢ２に対して、移動体ＯＢ１のローカル座標系における位置を求めれば、枯葉ＯＢ２が制御エリアＣＡ内に存在するか否かの判断や移動・動作の演算を容易に行うことができる。要するに、オブジェクト空間における移動体ＯＢ１の位置の変化に左右されずに制御エリアＣＡを設定されるので、結果的に、枯葉ＯＢ２と制御エリアＣＡとの相対的な位置関係を演算する煩雑な処理を回避することができる。
【００８５】
次に、図４を用いて、本実施形態の画像生成システムにおける制御エリアの設定手法について説明すると、制御エリアは、移動体の周囲の少なくとも一部を含むエリアに設定される。移動体の周囲の少なくとも一部とは、移動体の周囲の上方、下方、前方、後方、左側方、及び右側方、の少なくとも一部のことをいう。例えば、図４（Ａ）（Ｂ）を用いて説明すると、移動体の周囲の上方とは、図４（Ａ）（Ｂ）のＡに示すエリアをいい、移動体の周囲の下方とは、図４（Ａ）（Ｂ）のＢに示すエリアをいい、移動体の周囲の前方とは図４（Ａ）（Ｂ）のＣに示すエリアをいい、移動体の周囲の後方とは、図４（Ａ）（Ｂ）のＤに示すエリアのことをいう。また、移動体の左側方とは図４（Ａ）（Ｂ）のＥに示すエリアをいい、移動体の右側方とは図４（Ａ）（Ｂ）のＦに示すエリアをいう。なお、図４に示すように、移動体の周囲の上方、下方、前方、後方、左側方、及び右側方の各境界部分は、多少のずれがあってもよいし、曖昧に設定してもよい。
【００８６】
また、制御エリアは移動体の周囲のエリアとしてもよい。例えば、移動体の移動によって生じる移動体周囲の気流を表現したい場合には、図５の（Ａ）（Ｂ）に示すように、移動体ＯＢ１の周囲に制御エリアＣＡを設定する。
【００８７】
また、図６（Ａ）（Ｂ）に示すように、移動体の周囲のエリアであって、移動体ＯＢ１の後方部分の領域（移動体ＯＢ１の進行方向に対する後方部分である、いわゆるスリップストリーム領域ＳＡ）を除くエリアを制御エリアＣＡとして設定することができる。例えば、図６（Ａ）（Ｂ）に示すように、移動体ＯＢ１が矢印方向に移動する場合には、通常、スリップストリーム領域ＳＡは、空気抵抗が弱くなる部分であるので移動体ＯＢ１が移動することによって生じる気流が生じにくい。したがって、移動体の周囲の領域うちスリップストリーム領域を除く領域を制御エリアＣＡとして設定することができる。
【００８８】
次に、図７〜９を用いて制御エリア内に存在する第２のオブジェクトを移動・動作させるための移動・動作パラメータの設定手法について説明する。
【００８９】
図７に示すように、移動体ＯＢ１のローカル座標系において、移動体ＯＢ１の周囲であって、０＜＝Ｘ＜＝３、０＜＝Ｙ＜＝４、０＜＝Ｚ＜＝５で囲まれたエリアを制御エリアＣＡとして設定する。
【００９０】
そして、移動体ＯＢ１のローカル座標系に設定された制御エリアＣＡに基づいて制御エリア面ＣＰを設定する。図７に示すように、制御エリアＣＡは、移動体ＯＢ１の周囲であって、０＜＝Ｘ＜＝３、及び、０＜＝Ｚ＜＝５で囲まれた（Ｘ，Ｚ）を含む範囲であるので、制御エリア面ＣＰは、図８（Ａ）に示すように、０＜＝Ｘ＜＝３、及び、０＜＝Ｚ＜＝５からなる面として設定する。なお、制御エリア面ＣＰは、０＜＝Ｘ＜＝３、及び、０＜＝Ｚ＜＝５よりも広い範囲で設定してもよい。
【００９１】
次に、制御エリア面ＣＰを格子状に分割する。例えば、図８（Ａ）では、移動体ＯＢ１のローカル座標系のＸ軸、Ｚ軸に対して大きさ「１」の間隔で格子状に分割する。なお、格子状に分割する場合には、所定間隔で分割することができれば間隔の大きさは問わない。例えば、大きさ「０．５」の間隔で分割してもよい。
【００９２】
そして、制御エリア面ＣＰを格子状に分割した移動体ＯＢ１のローカル座標系の（Ｘ，Ｚ）で示される各格子点（Ｘ，Ｚ）に対応づけて移動・動作パラメータテーブルに、移動・動作パラメータ設定する。
【００９３】
図９（Ａ）は、枯葉ＯＢ２に対して高さ方向（Ｙ軸方向）に移動させる高さ方向の速度パラメータ（移動・動作パラメータの一例）を設定した例を示す。
【００９４】
例えば、図７に示すように移動体ＯＢ１のフロントガラス部分に上昇気流が発生したように枯葉ＯＢ２を移動させ、移動体ＯＢ１のフロントガラス以外の部分では、枯葉ＯＢ２が落下する様子を表現したい場合には、次のように移動・動作パラメータを設定する。
【００９５】
まず、移動体ＯＢ１のローカル座標系において、移動体ＯＢ１のフロントガラス部分に対応する制御エリア面ＣＰの格子点を特定する。図７の例では、移動体ＯＢ１のフロントガラス部分に対応する制御エリア面ＣＰの格子点は、（Ｘ，Ｚ）＝（１，３）、（Ｘ，Ｚ）＝（２，３）である。
【００９６】
そして、制御エリア面ＣＰの格子点に対応づけて、移動・動作パラメータテーブルに高さ方向の速度パラメータ（移動・動作パラメータの一例）を設定する。例えば、図９（Ａ）に示すように、フロントガラス部分に対応する制御エリア面ＣＰの格子点に対応する移動・動作パラメータテーブルの（Ｘ，Ｚ）＝（１，３）、（Ｘ，Ｚ）＝（２，３）の高さ方向の速度パラメータを「１」に設定する。そして、他の格子点（Ｘ，Ｚ）に対応する高さ方向の速度パラメータを「０」に設定する。
【００９７】
上述した移動・動作パラメータの例は、高さ方向の速度パラメータを設定する例を説明したが、例えば、速度ベクトル（移動・動作パラメータの一例）を設定するようにしてもよい。具体的に、図９（Ｂ）を用いて、移動・動作パラメータテーブルに速度ベクトルを設定する例を説明する。
【００９８】
例えば、図７に示すように移動体ＯＢ１のフロントガラス部分に上昇気流を発生する様子を表現したい場合、例えば、枯葉ＯＢ２を斜め上方向に移動させるようにし、移動体ＯＢ１のフロントガラス以外の部分では、枯葉ＯＢ２が落下する様子を表現したい場合には、次のように速度ベクトル（移動・動作パラメータの一例）を設定することができる。
【００９９】
図９（Ｂ）は、枯葉ＯＢ２が、斜め上方向に移動する場合の移動・動作パラメータを設定した例である。例えば、移動体ＯＢ１のフロントガラス部分に対応する格子点（Ｘ，Ｚ）＝（１，３）及び、（Ｘ，Ｚ）＝（２，３）に対応づけて速度ベクトルを設定する。例えば、格子点（Ｘ，Ｚ）＝（１，３）及び、（Ｘ，Ｚ）＝（２，３）に対応づける速度ベクトルの値を（ｘ，ｙ，ｚ）＝（０，１，−１）に設定する。一方、格子点（Ｘ，Ｚ）＝（１，３）及び、（Ｘ，Ｚ）＝（２，３）以外の格子点の速度ベクトルを０に設定する。
【０１００】
このように予め移動・動作パラメータ（図９（Ａ）の例では高さ方向の速度パラメータ、図９（Ｂ）の例では速度ベクトル）を設定すれば、後で説明するように設定した移動・動作パラメータに基づいて枯葉ＯＢ２を簡易に演算することができるので、従来の厳密に気流のシミュレーションの演算を行う手法に比較して、処理負荷を抑えることができる。
【０１０１】
尚、図６の例に示すように、移動体ＯＢ１の周囲のエリアであって、スリップストリーム領域ＳＡを除くエリアを制御エリアＣＡとして設定した場合には、制御エリアＣＡが占める（Ｘ，Ｚ）の位置を含むように制御エリア面ＣＰを設定し、制御エリア面ＣＰの格子点のうち、制御エリアＣＡを構成する点（Ｘ，Ｚ）に対応する格子点に移動・動作パラメータを設定し、制御エリアＣＡを構成する点（Ｘ，Ｚ）に対応しない格子点に移動・動作パラメータを設定しないようにしてもよい。また、制御エリアＣＡを構成する点（Ｘ，Ｚ）に対応しない格子点には、予め定められた所定値（ＮＵＬＬ値や、デフォルト値）を設定してもよい。
【０１０２】
次に、本実施形態の画像生成システムの移動・動作パラメータに基づく第２のオブジェクトの移動・動作の演算手法について説明する。
【０１０３】
具体的に説明すると、オブジェクト空間に存在する枯葉ＯＢ２（第２のオブジェクトの一例）を、移動体ＯＢ１のローカル座標系に逆変換して枯葉ＯＢ２の位置を求め、枯葉ＯＢ２の位置と、格子点に対応する移動・動作パラメータとに基づいて、枯葉ＯＢ２の現在の移動・動作の値を、移動・動作パラメータの値に近づける処理を行う。なお、枯葉ＯＢ２の現在の移動・動作の値に対して、移動・動作パラメータを加算、乗算するようにしてもよい。
【０１０４】
ここで、本実施形態の移動・動作パラメータの値に近づけるとは、移動・動作パラメータの値に設定してもよいし、枯葉ＯＢ２の現在の移動・動作（例えば速度）の値と、移動・動作パラメータの値との差分を求め、求めた差分値に係数を乗算した値を、枯葉ＯＢ２の現在の値に加算する。
【０１０５】
例えば、図９（Ａ）に示す高さ方向の速度パラメータを取得する場合を例に説明すると、図８（Ａ）に示すように、枯葉ＯＢ２が（Ｘ，Ｚ）＝（２，３）の位置に存在する場合には、格子点（Ｘ，Ｚ）＝（２，３）に対応付けられる高さ方向の速度パラメータを移動・動作パラメータテーブルから取得する。例えば、図９（Ａ）の例では、取得した速度パラメータの値が「１」であるので、「１」に近づける処理を行う。ここで、枯葉ＯＢ２の現在の上向き方向の速度が「０．５」である場合には、速度パラメータの値「１」と、枯葉ＯＢ２の現在の速度「０．５」の差分値「０．５」に係数「０．５」を乗算した値を求める。そして、求めた値「０．２５」を、枯葉ＯＢ２の現在の速度「０．５」に加算した値である「０．７５」が最終的に求められる枯葉ＯＢ２の速度になる。そして、枯葉ＯＢ２の速度「０．７５」に基づいて、枯葉ＯＢ２を上向き方向に移動させる。その結果、例えば、図８（Ｂ）に示すように、枯葉ＯＢ２がＶ１方向（上向き方向）に移動・動作するように表現することができる。
【０１０６】
また、図９（Ｂ）に示す速度ベクトルを取得する場合を例にとり説明すると、枯葉ＯＢ２が（Ｘ，Ｚ）＝（２，３）の位置に存在する場合には、格子点（Ｘ，Ｚ）＝（２，３）に対応付けられる速度ベクトルの値「（ｘ，ｙ，ｚ）＝（０，１，−１）」に近づける処理を行う。ここで、枯葉ＯＢ２の現在の速度ベクトルが（ｘ，ｙ，ｚ）＝（０，１，０）である場合には、「（ｘ，ｙ，ｚ）＝（０，１，−１）」に近づける処理を行う。具体的には、係数を「０．５」として求めた場合には、（ｘ，ｙ，ｚ）＝（０，１，−０．５）が枯葉ＯＢ２の速度ベクトルとして求まる。そして、枯葉ＯＢ２は、（ｘ，ｙ，ｚ）＝（０，１，−０．５）に基づいて、例えば、図８（Ｂ）に示すように、枯葉ＯＢ２がＶ２方向（斜め上方向）に移動・動作するように表現することができる。
【０１０７】
このように、本実施形態の画像生成システムでは、移動体ＯＢ１のローカル座標系において、枯葉ＯＢ２の位置と、制御エリア面ＣＰの各格子点との位置関係に基づいて、移動・動作パラメータを取得し、取得した移動・動作パラメータに基づいて、枯葉ＯＢ２の移動・動作の演算を行うので、従来の気流のシミュレーション演算に基づいて枯葉の移動・動作を演算する手法に比較して、簡易な計算で枯葉の気流によって生じる移動・動作の演算を行うことができる。例えば、移動体ＯＢ１のフロントガラス部分に上昇気流が発生したように枯葉ＯＢ２を移動させ、移動体ＯＢ１のフロントガラス以外の部分では、枯葉ＯＢ２が落下する様子をリアルに表現することができる。
【０１０８】
なお、移動体ＯＢ１のローカル座標系に逆変換した枯葉の位置が、制御エリアＣＡ外に存在する場合には、移動・動作パラメータに基づく移動・動作の演算を行わないようにするようにしてもよい。演算量を少なくして画像生成システムの処理負荷を抑えることができるからである。
【０１０９】
つまり、本実施形態では、移動体ＯＢ１のローカル座標系に逆変換した枯葉ＯＢ２の位置が、制御エリアＣＡ内に存在するか否かを判断し、その後に、枯葉ＯＢ２の位置と、各格子点とに対応付けられる移動・動作パラメータとに基づいて、移動・動作の演算を行うようにする。
【０１１０】
例えば、制御エリアＣＡが、図７に示すように、移動体ＯＢ１のローカル座標系において、移動体ＯＢ１の周囲であって、０＜＝Ｘ＜＝３、０＜＝Ｙ＜＝４、０＜＝Ｚ＜＝５で囲まれたエリアである場合には、Ｙ＞４に存在する枯葉ＯＢ２´は、制御エリアＣＡ外であるので、移動・動作パラメータに基づく移動・動作の演算を行わないようにする。一方、枯葉ＯＢ２は、制御エリア内に存在するので、移動・動作パラメータに基づく移動・動作の演算を行う。
【０１１１】
また、本実施形態の制御エリアＣＡは、移動体の周囲の少なくとも一部に設定されているので、枯葉の位置が移動体の内部に存在する場合には、後述する補正演算を行うことによって枯葉の位置を適正な位置に補正した後に、移動・動作の演算を行うようにしてもよい。
【０１１２】
また、枯葉ＯＢ２の位置（Ｘ，Ｚ）が、制御エリア面ＣＰのいずれかの格子点（Ｘ，Ｚ）上に存在しない場合には、枯葉ＯＢ２の位置に基づいて、複数の移動・動作パラメータを補間し、補間した値に基づいて枯葉ＯＢ２の移動・動作の演算を行うようにしていもよい。このようにすれば、制御エリア面ＣＰを粗く格子状に分割することによって、各格子点に対応付けられる移動・動作パラメータのデータ量を削減することができる。
【０１１３】
具体的に説明すると、枯葉ＯＢ２の位置に基づいて移動・動作パラメータを取得し、線形補間した値を取得する。例えば、図１０では、枯葉ＯＢ２の位置Ｐ０の制御エリア面に投影される座標値（ＸとＺからなる値）と、複数の格子点Ｐ１〜Ｐ４にそれぞれ対応付けられる移動・動作パラメータを線形補間した値を求め、求められた値に基づいて、移動・動作の演算を行うようにしてもよい。
【０１１４】
また、上述した移動・動作パラメータテーブル例では、高さ方向の速度パラメータを格納する例、速度ベクトルを格納する例について説明したが、移動量のパラメータ、加速度のパラメータを格納してもよい。また、複数のパラメータ（速度パラメータ、加速度パラメータ等）ごとに、個別のテーブル（速度パラメータテーブル、加速度パラメータテーブル）を用いて格納してもよい。また、移動体の移動速度、移動方向、及び回転方向のうち少なくとも１つに基づいて移動・動作パラメータを設定してもよい。例えば、移動体が低速の場合と高速の場合とに分けて、移動・動作パラメータを設定してもよい。また、移動・動作パラメータも移動体がバックする場合には、移動体がバックに応じた移動・動作パラメータを設定してもよい。また、移動体がスピンする場合には、移動体の回転方向に応じた移動・動作パラメータを用意するようにしてもよい。例えば、移動体の重心を軸に回転するような速度ベクトルを制御エリア面の各格子点に対応づけて格納することができる。
【０１１５】
２．２  第２のオブジェクトの位置の補正する演算手法についての説明
次に第２のオブジェクトの補正の演算を行う手法について説明する。本実施形態の画像生成システムでは、移動体（第１のオブジェクトの一例）の周囲の少なくとも一部を含むエリアを制御エリアとして設定し、制御エリア内に存在する枯葉（第２のオブジェクトの一例）に対して移動・動作を行う。しかし、制御エリア内に存在する枯葉に対して、移動・動作パラメータに基づいて画一的に処理を行うと、結果として枯葉の位置が不適切な位置に存在するような画像が表現されてしまう場合がある。
【０１１６】
例えば、図１１（Ａ）に示すように、移動体ＯＢ１の中に、移動体ＯＢ２がめり込んでしまうような画像が生成されてしまう恐れがある。本来ならば、図１１（Ｂ）に示すように、枯葉ＯＢ２が移動体ＯＢ１の外に位置した方が自然である。
【０１１７】
したがって、本実施形態の画像生成システムでは、枯葉ＯＢ２が、移動体ＯＢ１にめり込むような位置に枯葉ＯＢ２が存在する場合には、適正な位置に補正する処理を行うようにしている。
【０１１８】
まず、補正パラメータに基づいて第２のオブジェクトの位置を補正する手法について説明する。図１２に示すように、まず補正エリア面ＲＰを設定する。補正エリア面ＲＰは、移動体ＯＢ１に基づいて設定する。例えば、移動体ＯＢ１の占める位置（Ｘ，Ｚ）が含むように設定する。なお、補正エリア面ＲＰを設定せずに、制御エリア面ＣＰの複数の格子点に対応づけて補正パラメータを設定してもよい。なお、補正エリア面ＲＰも、制御エリア面ＣＰと同様に、移動体ＯＢ１のローカル座標系に設定する。このようにすれば、オブジェクト空間における移動体の位置に関係なく、補正パラメータを設定することができ、補正の演算を簡易に行うことができるからである。
【０１１９】
次に、補正エリア面ＲＰを格子状に分割した複数の格子点のそれぞれに対応づけて補正パラメータを設定する。なお、補正エリア面ＲＰを格子状に分割する場合には、制御エリア面ＣＰを格子状に分割する場合よりも詳細に分割してもよい。
【０１２０】
図１３は、高さ方向（Ｙ軸方向）の補正を行う高さパラメータ（補正パラメータの一例）を格納した補正パラメータテーブルの例を示す。
【０１２１】
例えば、移動体ＯＢ１の形状に応じて補正エリア面の格子点に高さパラメータを設定する。例えば、補正エリア面の（Ｘ，Ｚ）＝（１，１）付近は、移動体ＯＢ１のルーフ部分であり、ルーフ部分の高さ（Ｙの値）が「２」である場合には、（Ｘ，Ｚ）＝（１，１）の高さパラメータに「２」を格納する。また、補正エリア面の（Ｘ，Ｚ）＝（１，３）付近は、移動体ＯＢ１のフロントガラス部分であり、フロントガラス部分の高さ（Ｙの値）が「１．５」である場合には、（Ｘ，Ｚ）＝（１，３）の高さパラメータに「１．５」を格納する。また、補正エリア面の（Ｘ，Ｚ）＝（１，４）付近は、移動体ＯＢ１のボンネット部分であり、ボンネット部分の高さ（Ｙの値）が「１」である場合には、（Ｘ，Ｚ）＝（１，４）の高さパラメータに「１」を格納する。
【０１２２】
そして、枯葉ＯＢ２の位置と、補正エリア面の各格子点に対応づけて設定された補正パラメータに基づいて、枯葉ＯＢ２を補正する演算を行う。具体的には、図１３の高さパラメータに基づいて補正を行う場合には、枯葉ＯＢ２の高さ（Ｙの値）が、枯葉ＯＢ２の位置にある格子点の高さパラメータよりも低い場合には、高さパラメータの値に枯葉ＯＢ２の高さ（Ｙの値）を変更する演算を行う。
【０１２３】
例えば、図１２に示すように、枯葉ＯＢ２が例えば、（Ｘ，Ｙ，Ｚ）＝（１，０．９，４）の位置ある場合には、格子点（Ｘ，Ｚ）＝（１，４）の高さパラメータを取得する。つまり、図１３の例では、格子点（Ｘ，Ｚ）＝（１，４）に対応付けられる高さパラメータ「１」を取得する。そして、枯葉ＯＢ２が、高さ（Ｙの値）が「０．９」であり、高さパラメータ「１」よりも低いので、移動体ＯＢ１にめり込まないように、枯葉ＯＢ２を（Ｘ，Ｚ）＝（１，４）の補正パラメータ値である「１」の高さに上げる補正処理を行う。
【０１２４】
また、枯葉ＯＢ２が、例えば、（Ｘ，Ｙ，Ｚ）＝（２，３，２）の位置にある場合には、（Ｘ，Ｚ）＝（２，２）の補正エリア面ＲＰの格子点に対応付けられる高さパラメータの値が「２」であるので、枯葉ＯＢ２は、補正パラメータ値よりも高い位置（Ｙ＝３の位置）にあるので、枯葉ＯＢ２の位置を変更しない。
【０１２５】
以上の処理に基づいて、本実施形態の画像生成システムでは、枯葉ＯＢ２の補正の演算が行われる。このようにすれば、移動体ＯＢ１が凹凸のある複雑な形状を有する場合でも、枯葉ＯＢ２が移動体ＯＢ１にめり込むような不自然な画像を生成することを防止することができる。また、本実施形態の画像生成システムによれば、厳密に３次元空間で枯葉ＯＢ２を構成するポリゴンの頂点と、移動体ＯＢ１を構成するポリゴンの頂点との頂点演算を行って、枯葉ＯＢ２の位置を補正する演算を行う手法に比較して、少ない演算量で補正を行うことができる。
【０１２６】
なお、第２のオブジェクトの位置を補正する演算は、前述の移動・動作パラメータを補間した場合と同様に、複数の補正パラメータを補間し、補間した値に基づいて補正の演算を行うようにしてもよい。なお、補正は第２のオブジェクトを補正エリア面に投影した点の周囲の複数の格子点に対応付けられる補正パラメータを線形補間してもよいし、例えば高さパラメータを取得する場合には複数の格子点に対応付けられる補正パラメータのうち最も大きな値の補正パラメータを取得するようにしてもよい。
【０１２７】
次に、ボリュームを用いて第２のオブジェクトの位置を補正する演算する手法について説明する。
【０１２８】
図１４は、バウンディングボックスを用いて補正する例を示した図である。移動体ＯＢ１が例えばバスのような略直方体の形状を特徴とするオブジェクトである場合には、直方体のバウンディングボックスＢＢを用いることができる。
【０１２９】
そして、枯葉ＯＢ２の一部がバウンディングボックスＢＢの中に存在するか否かを判断する。具体的には枯葉ＯＢ２を構成するポリゴンの頂点座標と、バウンディングボックスＢＢを構成するポリゴンの頂点座標に基づいて、枯葉ＯＢ２の一部が、バウンディングボックスＢＢの中に存在するか否かを判断する。
【０１３０】
枯葉ＯＢ２の一部がバウンディングボックスＢＢの中に存在する場合には、枯葉ＯＢ２の位置をバウンディングボックスＢＢの外に位置するように枯葉ＯＢ２の位置を修正する。例えば、枯葉ＯＢ２の位置座標のＹ値を、バウンディングボックスＢＢの外に位置するように変更する。
【０１３１】
なお、枯葉ＯＢ２の位置を補正する演算は、制御エリア内の移動・動作パラメータに基づく枯葉ＯＢ２の移動・動作の演算を行う前に補正の演算を行ってもよい。また、制御エリア内の移動・動作パラメータに基づく枯葉ＯＢ２の移動・動作の演算を行った後には、決定された枯葉ＯＢ２の位置に基づいて補正の演算を行う方が望ましい。枯葉ＯＢ２が移動体ＯＢ１にめり込むような画像を生成することを確実に防止することができるからである。
【０１３２】
３．  本実施形態の処理
次に図１５を用いて、本実施形態の手法を実現する処理例を詳細に説明する。
【０１３３】
図１５は、本実施形態の手法における枯葉の移動・動作、及び補正の演算を行うフローチャートである。
【０１３４】
まず、移動体の位置を演算する（ステップＳ１１０）。次に、移動体の位置に応じて制御エリアを設定する（ステップＳ１２０）。なお、制御エリアは、移動体のローカル座標系において設定される。そして、制御エリアに基づいて設定された制御エリア面を格子状に分割した複数の格子点に対応づけて移動・動作パラメータと補正パラメータとを設定する（ステップＳ１３０）。つまり、移動・動作パラメータと補正パラメータとは、制御エリア面を分割した移動体のローカル座標系における複数の格子点（Ｘ，Ｚ）に対応づけて設定される。
【０１３５】
次に、移動体のローカル座標系における枯葉の位置を演算する（ステップＳ１４０）。枯葉の位置は、移動体をローカル座標系からワールド座標系に変換される行列式の逆行列を、ワールド座標系における枯葉の位置（座標）に乗算することによって求めることができる。そして、枯葉の位置と、制御エリア面の各格子点に対応付けられた移動・動作パラメータとに基づいて、枯葉の移動・動作を演算する（ステップＳ１５０）。
【０１３６】
次に、枯葉の位置が補正エリア内か否かを判断する（ステップＳ１６０）。なお、枯葉の少なくとも一部が補正エリア内に属するか否かを判断してもよい。枯葉の位置が補正エリア内であると判断される場合には（ステップＳ１６０のＹｅｓ）、枯葉が補正エリア外に位置するように、補正パラメータに基づいて補正する演算を行う（ステップＳ１７０）。一方、枯葉の位置が補正エリア内であると判断されない場合には（ステップＳ１６０のＮｏ）、次のステップに進む。
【０１３７】
次に、制御エリア内に存在する全ての枯葉について演算を行ったか否かを判断し（ステップＳ１８０）、制御エリア内に存在する全ての枯葉について移動・動作の演算を行っていない場合には（ステップＳ１８０のＮｏ）、移動・動作の演算を行っていない枯葉に対して、ステップＳ１４０〜ステップＳ１８０の処理を行う。一方、制御エリア内に存在する全ての枯葉について移動・動作の演算を行った場合には（ステップＳ１８０のＹｅｓ）、処理を終了する。
【０１３８】
４．応用例
（１）移動体が壁に衝突する場合の実施例
本実施形態の画像生成システムによれば、上述した枯葉の気流制御の他に、例えば、移動体が、壁（例えば、煉瓦等）に衝突する場合に、衝突したことによって、壁が崩れる様子を表現する画像を生成することができる。
【０１３９】
移動体が煉瓦の壁に衝突する場合を例にとり説明すると、移動体の周囲に制御エリアを設定し、移動体が煉瓦に衝突することによって壊れた煉瓦の破片の速度ベクトル（移動・動作パラメータの一例）を、制御エリア面の各格子点に対応づけて移動・動作パラメータテーブルに予め設定する。そして、制御エリア内に存在する煉瓦の破片の位置と、制御エリア面の各格子点に対応づけられる速度ベクトルとに基づいて、煉瓦の破片に対して移動・動作の演算を行う。このようにすれば、厳密に煉瓦の破片の移動・動作のシミュレーション演算を行わなくても、簡易に移動・動作の演算を行うことができる。
【０１４０】
また、制御エリア面の各格子点に対応づけて設定された補正パラメータに基づいて、移動体の周囲に崩れ落ちる煉瓦の破片が移動体の中にめり込まないに補正する演算を行うことができる。このようにすれば、煉瓦の破片と、移動体との衝突判定を厳密に行わなくても簡易な演算で、壊れた煉瓦の破片が移動体の周囲に落ちる様子を表現することができる。
【０１４１】
（２）移動体が枝の下を通る場合の実施例
本実施形態の画像生成システムによれば、例えば木の枝が移動体の通過に伴って揺れる動作を表現することができる。
【０１４２】
例えば、移動体の周囲に制御エリアを設定し、制御エリア面の各格子点に対応づけて予め木の枝が揺れる動作を示すモーションデータ（移動・動作パラメータの一例）を制御エリア面の各格子点に対応づけて予め設定する。そして、制御エリア内に木の枝が存在する場合には、木の枝の位置と、制御エリア面の各格子点に対応付けられるモーションデータとに基づいて、木の枝が揺れる動作の演算を行う。モーションデータは、例えば、木の枝が移動体の進行方向に動いた後に弾性力によって元の位置に戻るという一連の動作とすることができる。このようにすれば、移動体の高さの近くに存在する木の枝の下を移動体が通過する場合には、木の枝が揺れる様子を表現することができる。
【０１４３】
（３）移動・動作パラメータを動的に変更する場合の実施例
本実施形態の画像生成システムでは、移動体の移動速度、移動方向に基づいて移動・動作パラメータを動的に変更してもよい。制御エリアに存在する枯葉の移動・動作を移動体のスピードや移動方向に応じて表現することができるからである。さらに、オブジェクト空間の天候や風力、他の移動体の移動によって発生する気流等に応じて、移動・動作パラメータを動的に変更してもよい。つまり、移動体が移動することによって生じる気流だけでなく、天候、風等の移動体以外の他の要因に基づいて生じる気流に応じて、移動・動作パラメータを動的に変更して、枯葉の移動・動作の演算を行ってもよい。要するに、本実施形態では、ゲーム状況（移動体の移動速度、移動方向、天候、風力等）に応じて、移動・動作パラメータを動的に変更してもよい。
【０１４４】
このように、ゲーム状況に応じた気流制御を表現する場合には、補正パラメータを変更することなく、移動・動作パラメータテーブルに格納されている移動・動作パラメータのみを、動的に変更する。つまり、移動・動作パラメータは移動・動作パラメータテーブルに設定され、補正パラメータは補正パラメータテーブルに設定され、それぞれ異なるテーブルで設定されているので、移動・動作パラメータのみを変更すれば、ゲーム状況に応じた枯葉の気流制御を表現することができる。
【０１４５】
（４）移動体が変形する場合の実施例
本実施形態の画像生成システムでは、移動体が変形した場合には、変形後の移動体に基づいて、補正パラメータテーブルに格納される補正パラメータを変更してもよい。例えば、移動体が壁等に衝突して移動体の形状が変形する場合には、枯葉の位置は変形後の移動体の形状に応じて適切な位置に補正することが望ましいからである。
【０１４６】
また、ボリュームを用いて枯葉の位置を補正する演算を行う場合には、変形後の移動体を内包したボリューム又は変更後の移動体の概形を表すボリュームを用いて、補正の演算を行うようにしてもよい。
【０１４７】
５．ハードウエア構成
図１６に本実施形態を実現できるハードウェア構成の例を示す。メインプロセッサ９００は、ＤＶＤ９８２（情報記憶媒体。ＣＤでもよい。）に格納されたプログラム、通信インターフェース９９０を介してダウンロードされたプログラム、或いはＲＯＭ９５０に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、マトリクス演算（ベクトル演算）を高速に実行する。例えばオブジェクトを移動させたり動作（モーション）させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１４８】
ジオメトリプロセッサ９０４は、メインプロセッサ９００上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ９０６は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする。これにより、オープニング画面やゲーム画面において、ＭＰＥＧ方式等で圧縮された動画像を表示できる。
【０１４９】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を実行する。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０を利用して、描画データを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると描画プロセッサ９１０は、描画データやテクスチャに基づいて、Ｚバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ９２２に描画する。また描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエイリアシング、シェーディング処理なども行う。頂点シェーダやピクセルシェーダなどのプログラマブルシェーダが実装されている場合には、シェーダプログラムに従って、頂点データの作成・変更（更新）やピクセル（あるいはフラグメント）の描画色の決定を行う。１フレーム分の画像がフレームバッファ９２２に書き込まれるとその画像はディスプレイ９１２に表示される。
【０１５０】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などのゲーム音を生成し、スピーカ９３２を介して出力する。ゲームコントローラ９４２やメモリカード９４４からのデータはシリアルインターフェース９４０を介して入力される。
【０１５１】
ＲＯＭ９５０にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納される。なおＲＯＭ９５０の代わりにハードディスクを利用してもよい。ＲＡＭ９６０は各種プロセッサの作業領域となる。ＤＭＡコントローラ９７０は、プロセッサ、メモリ間でのＤＭＡ転送を制御する。ＤＶＤドライブ９８０（ＣＤドライブでもよい。）は、プログラム、画像データ、或いは音データなどが格納されるＤＶＤ９８２（ＣＤでもよい。）にアクセスする。通信インターフェース９９０はネットワーク（通信回線、高速シリアルバス）を介して外部との間でデータ転送を行う。
【０１５２】
なお本実施形態の各部（各手段）の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１５３】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０１５４】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。また接触痕跡の表現手法も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。
【０１５５】
なお、本実施形態の画像生成システムでは、例えば移動体が、飛行機や、船である場合には、その移動体の形状に応じた制御エリアを設定し、移動・動作パラメータを設定することが望ましい。例えば、移動体が船である場合には、船の周囲の海面領域を制御エリアとして設定し、制御エリア内に存在する物体に対して海流の影響を与えるように移動・動作の演算を行うようにしてもよい。
【０１５６】
本実施形態の画像生成システムでは、制御エリア面を格子状に分割する格子点に基づいて移動・動作パラメータや、補正パラメータを設定する例を説明したが、第２のオブジェクトに対する振る舞いを示すパラメータを設定するようにしてもよい。
【０１５７】
例えば、移動体（第１のオブジェクトの一例）が燃えて、枯葉（第２のオブジェクトの一例）が引火する様子を表現したい場合には、制御エリア面を格子状に分割する複数の格子点に対応づけて温度パラメータを設定するようにしてもよい。このようにすれば、例えば、枯葉の位置と、格子点に対応付けられる温度パラメータとに基づいて、枯葉に引火するか否かを判断し（例えば、温度パラメータと所与の閾値に基づいて判断し）、引火すると判断される場合には枯葉が引火されたような画像を生成するようにしてもよい。
【０１５８】
また本発明は種々のゲーム（レーシングゲーム、格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等）に適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、パーソナルコンピュータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【０１５９】
【図１】本実施形態の画像生成システムの機能ブロック図の例。
【図２】図２（Ａ）（Ｂ）（Ｃ）は、ワールド座標系とローカル座標系の説明図。
【図３】図３（Ａ）（Ｂ）は制御エリアの説明図。
【図４】図４（Ａ）（Ｂ）は制御エリアの説明図。
【図５】図５（Ａ）（Ｂ）は制御エリアの説明図。
【図６】図６（Ａ）（Ｂ）は制御エリアの説明図。
【図７】図７（Ａ）（Ｂ）は移動・動作の演算手法の説明図。
【図８】図８（Ａ）（Ｂ）は移動・動作パラメータの説明図。
【図９】図９（Ａ）（Ｂ）は制御エリアの説明図。
【図１０】図１０（Ａ）（Ｂ）は、補間の説明図。
【図１１】図１１（Ａ）（Ｂ）は補正の演算手法の説明図。
【図１２】補正の演算手法の説明図。
【図１３】補正パラメータの説明図。
【図１４】補正の演算手法の説明図。
【図１５】本実施形態の処理のフローチャート。
【図１６】ハードウェア構成例。
【符号の説明】
【０１６０】
ＯＢ１  第１のオブジェクト、ＯＢ２  第２のオブジェクト、
ＣＡ  制御エリア、ＣＰ  制御エリア面、ＲＰ  補正エリア面、
１００  処理部、１１０  オブジェクト空間設定部、１１２  移動・動作処理部、
１１４  エリア設定部、１１６  パラメータ設定部、
１２０  描画部、１３０  音生成部、
１６０  操作部、１７０  記憶部、１７２  主記憶部、
１７４  描画バッファ、１７６  オブジェクトデータ記憶部、
１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、
１９４  携帯型情報記憶装置、１９６  通信部、
【図１】
2008225571.tif 000003
【図２】
2008225571.tif 000004
【図７】
2008225571.tif 000005
【図９】
2008225571.tif 000006
【図１０】
2008225571.tif 000007
【図１１】
2008225571.tif 000008
【図１２】
2008225571.tif 000009
【図１３】
2008225571.tif 000010
【図１４】
2008225571.tif 000011
【図１５】
2008225571.tif 000012
【図１６】
2008225571.tif 000013
【図３】
2008225571.tif 000014
【図４】
2008225571.tif 000015
【図５】
2008225571.tif 000016
【図６】
2008225571.tif 000017
【図８】
2008225571.tif 000018