(57)【要約】【課題】任意の地形上の群れて行動する移動体オブジェクトを、少ない処理負荷でリアルに表現できる画像生成システム、プログラム及び情報記憶媒体を提供する。【解決手段】移動体オブジェクト制御部１１０は、オブジェクト空間における移動体オブジェクトを移動制御する。画像生成部１２０は、移動体オブジェクト制御部１１０によって移動制御された移動体オブジェクトの画像を生成する。移動体オブジェクト制御部１１０は、複数のプリミティブ面で構成されたマップ上を移動する移動体オブジェクトが第１のプリミティブ面から該第１のプリミティブ面に隣接する第２のプリミティブ面に移動するとき、移動体オブジェクトの移動ベクトルと第２のプリミティブ面の法線ベクトルとを用いて、移動体オブジェクトが第２のプリミティブ面にマッピングされる位置を求める。【選択図】図２
2009251887.tif 000002
【特許請求の範囲】
【請求項１】
画像を生成するための画像生成システムであって、
オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、
前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部と、
を含み、
前記移動体オブジェクト制御部が、
複数のプリミティブ面で構成されたマップ上を移動する移動体オブジェクトが第１のプリミティブ面から該第１のプリミティブ面に隣接する第２のプリミティブ面に移動するとき、前記移動体オブジェクトの移動ベクトルと前記第２のプリミティブ面の法線ベクトルとを用いて、前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置を求めることを特徴とする画像生成システム。
【請求項２】
請求項１において、
前記移動体オブジェクト制御部が、
前記移動ベクトルに基づいて、前記移動体オブジェクトが前記第１のプリミティブ面から前記第２のプリミティブ面に移動するか否かを検出し、
前記移動体オブジェクトが前記第２のプリミティブ面に移動すると検出されたことを条件に、前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置を求めることを特徴とする画像生成システム。
【請求項３】
請求項２において、
前記移動体オブジェクト制御部が、
前記第１のプリミティブ面と前記第２のプリミティブ面との境界に設定された仮想プリミティブ面と、前記移動ベクトルとの交差判定を行うことによって、前記移動体オブジェクトが前記第１のプリミティブ面から前記第２のプリミティブ面に移動するか否かを検出することを特徴とする画像生成システム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記移動体オブジェクト制御部が、
前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置として、前記移動ベクトルと前記法線ベクトルとを用いて生成される直線と、前記第２のプリミティブ面との交点を求めることを特徴とする画像生成システム。
【請求項５】
請求項４において、
前記移動体オブジェクト制御部が、
前記直線を、前記移動ベクトルの終点を通り前記法線ベクトルに平行な直線として求めることを特徴とする画像生成システム。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記移動体オブジェクト制御部が、
前記移動体オブジェクトが前記第２のプリミティブ面に移動するとき、前記第２のプリミティブ面の状況に応じて移動後の前記移動体オブジェクトの移動制御を変化させることを特徴とする画像生成システム。
【請求項７】
請求項６において、
前記移動体オブジェクト制御部が、
前記移動体オブジェクトの特性に応じて、前記第２のプリミティブ面に移動後の前記移動体オブジェクトの移動制御を変化させることを特徴とする画像生成システム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記移動体オブジェクトがマッピングされるプリミティブ面を特定する情報を記憶するマッピング情報記憶部を含み、
前記移動体オブジェクト制御部が、
前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトの移動先のプリミティブ面の候補を特定し、
前記移動ベクトルに基づいて、前記移動先のプリミティブ面の候補の中から前記移動体オブジェクトの移動先のプリミティブ面を求めることを特徴とする画像生成システム。
【請求項９】
請求項８において、
前記移動体オブジェクト制御部が、
前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクト同士で衝突判定を行い、
衝突判定の結果に基づいて、前記プリミティブ面にマッピングされた前記移動体オブジェクトの少なくとも１つの移動制御を行うことを特徴とする画像生成システム。
【請求項１０】
画像を生成するための画像生成システムであって、
オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、
前記移動体オブジェクト制御部によって移動制御される前記移動体オブジェクトがマッピングされるプリミティブ面を特定する情報を記憶するマッピング情報記憶部と、
前記移動体オブジェクトの画像を生成する画像生成部と、
を含み、
前記移動体オブジェクト制御部が、
前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクト同士で衝突判定を行い、
衝突判定の結果に基づいて、前記プリミティブ面にマッピングされる前記移動体オブジェクトの少なくとも１つの移動制御を行うことを特徴とする画像生成システム。
【請求項１１】
請求項９又は１０において、
前記移動体オブジェクト制御部が、
前記移動体オブジェクトの特性に応じて、衝突判定を行う範囲を異ならせることを特徴とする画像生成システム。
【請求項１２】
画像を生成するためのプログラムであって、
オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、
前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部としてコンピュータを機能させ、
前記移動体オブジェクト制御部が、
複数のプリミティブ面で構成されたマップ上を移動する移動体オブジェクトが第１のプリミティブ面から該第１のプリミティブ面に隣接する第２のプリミティブ面に移動するとき、前記移動体オブジェクトの移動ベクトルと前記第２のプリミティブ面の法線ベクトルとを用いて、前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置を求めることを特徴とするプログラム。
【請求項１３】
請求項１２において、
前記移動体オブジェクト制御部が、
前記移動ベクトルに基づいて、前記移動体オブジェクトが前記第１のプリミティブ面から前記第２のプリミティブ面に移動するか否かを検出し、
前記移動体オブジェクトが前記第２のプリミティブ面に移動すると検出されたことを条件に、前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置を求めることを特徴とするプログラム。
【請求項１４】
請求項１３において、
前記移動体オブジェクト制御部が、
前記第１のプリミティブ面と前記第２のプリミティブ面との境界に設定された仮想プリミティブ面と、前記移動ベクトルとの交差判定を行うことによって、前記移動体オブジェクトが前記第１のプリミティブ面から前記第２のプリミティブ面に移動するか否かを検出することを特徴とするプログラム。
【請求項１５】
請求項１２乃至１４のいずれかにおいて、
前記移動体オブジェクト制御部が、
前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置として、前記移動ベクトルと前記法線ベクトルとを用いて生成される直線と、前記第２のプリミティブ面との交点を求めることを特徴とするプログラム。
【請求項１６】
請求項１５において、
前記移動体オブジェクト制御部が、
前記直線を、前記移動ベクトルの終点を通り前記法線ベクトルに平行な直線として求めることを特徴とするプログラム。
【請求項１７】
請求項１２乃至１６のいずれかにおいて、
前記移動体オブジェクト制御部が、
前記移動体オブジェクトが前記第２のプリミティブ面に移動するとき、前記第２のプリミティブ面の状況に応じて移動後の前記移動体オブジェクトの移動制御を変化させることを特徴とするプログラム。
【請求項１８】
請求項１７において、
前記移動体オブジェクト制御部が、
前記移動体オブジェクトの特性に応じて、前記第２のプリミティブ面に移動後の前記移動体オブジェクトの移動制御を変化させることを特徴とするプログラム。
【請求項１９】
請求項１２乃至１８のいずれかにおいて、
前記移動体オブジェクトがマッピングされるプリミティブ面を特定する情報を記憶するマッピング情報記憶部としてコンピュータを機能させ、
前記移動体オブジェクト制御部が、
前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトの移動先のプリミティブ面の候補を特定し、
前記移動ベクトルに基づいて、前記移動先のプリミティブ面の候補の中から前記移動体オブジェクトの移動先のプリミティブ面を求めることを特徴とするプログラム。
【請求項２０】
請求項１９において、
前記移動体オブジェクト制御部が、
前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクト同士で衝突判定を行い、
衝突判定の結果に基づいて、前記プリミティブ面にマッピングされた前記移動体オブジェクトの少なくとも１つの移動制御を行うことを特徴とするプログラム。
【請求項２１】
画像を生成するためのプログラムであって、
オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、
前記移動体オブジェクト制御部によって移動制御される前記移動体オブジェクトがマッピングされるプリミティブ面を特定する情報を記憶するマッピング情報記憶部と、
前記移動体オブジェクトの画像を生成する画像生成部としてコンピュータを機能させ、
前記移動体オブジェクト制御部が、
前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクト同士で衝突判定を行い、
衝突判定の結果に基づいて、前記プリミティブ面にマッピングされる前記移動体オブジェクトの少なくとも１つの移動制御を行うことを特徴とするプログラム。
【請求項２２】
請求項２０又は２１において、
前記移動体オブジェクト制御部が、
前記移動体オブジェクトの特性に応じて、衝突判定を行う範囲を異ならせることを特徴とするプログラム。
【請求項２３】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１２乃至２２のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【背景技術】
【０００２】
画像生成システムの処理速度が向上し、画面上により多くのキャラクタを表示できるようになっている。例えばゲーム画像において、エフェクト効果を表現するために動物や虫などの群れを表現した画像を表示することで、よりリアルさを高めることができる。
【０００３】
ところが、群れを表現する画像の生成にはリアルタイム性が要求されるため、群れを構成する複数のキャラクタをそれぞれ別個に処理すると、他の処理を圧迫してしまう。そのため、より少ない負荷で、リアルな群れを表現する画像を生成できることが望ましい。
【０００４】
例えば特許文献１には、より少ない処理負荷で群れを表現する技術が開示されている。この技術では、群れの中の１つのキャラクタをリーダーとして決定し、該群れの他のキャラクタをリーダーに追従させることで、処理負荷を軽減する。
【０００５】
ところで、３次元のオブジェクト空間において、山や谷等の起伏に富んだ地形や、別の物体が散乱した地形の上を、群れで行動する複数のキャラクタの動きを表現する場合がある。この場合、これら地形上をキャラクタが這うように表現することで、よりリアルの画像を提供できる。この場合も、群れを構成する各キャラクタを、より少ない処理負荷で地形上にマッピングできることが望ましい。
【０００６】
例えば特許文献２には、起伏に富んだ地形上に、キャラクタに相当する移動体オブジェクトをマッピングする技術が開示されている。この技術では、移動体オブジェクトを２次元の平面上で移動処理して２次元位置情報（Ｘ軸方向の座標、Ｚ軸方向の座標）を求め、該２次元位置情報に最も近い距離の基準点の位置情報を読み出す。そして、該基準点の位置情報の高さ情報を用いて、当該移動体オブジェクトのＹ軸方向の座標を求め、求められた３次元位置情報に基づき当該移動体オブジェクトをオブジェクト空間にマッピングする。
【特許文献１】特開２０００−１７２８６８号公報
【特許文献２】特開平７−１１６３５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された技術では、群れ全体の動きを表現できるものの、群れの中のキャラクタの個々の細かい動きを表現することが難しい。群れの中のキャラクタの個々の細かい動きを表現すれば、よりリアルな画像を生成できる。
【０００８】
また、特許文献２に開示された技術を、個々のキャラクタのマッピングの処理に適用すると、リアルタイム処理に必要な他の処理を圧迫してしまう。起伏に富んだ地形のみならず、天井を這う複数のキャラクタの画像を生成する場合、個々のキャラクタについて天井の表裏を判別する等の処理が必要となり、群れで行動するキャラクタ群の画像の生成がますます困難となる。
【０００９】
更に、群れて行動するキャラクタを表現できたとしても、キャラクタ同士が衝突した場合にすり抜けて動き回り、表現に違和感が残るという問題がある。その一方で、群れて行動するキャラクタ同士の衝突回避の処理をそれぞれ正確に行おうとすると、リアルタイム処理が困難となる。従って、衝突回避処理もより少ない処理負荷で実現することが望ましい。
【００１０】
このように、群れを表現する移動体オブジェクトの移動制御の個々の処理は、リアルな表現を行うために必要である。その反面、各処理の負荷を削減することが必須となる。
【００１１】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、任意の地形上を群れて行動する移動体オブジェクトを、少ない処理負荷でリアルに表現できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【００１２】
（１）本発明は、画像を生成するための画像生成システムであって、オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部とを含み、前記移動体オブジェクト制御部が、複数のプリミティブ面で構成されたマップ上を移動する移動体オブジェクトが第１のプリミティブ面から該第１のプリミティブ面に隣接する第２のプリミティブ面に移動するとき、前記移動体オブジェクトの移動ベクトルと前記第２のプリミティブ面の法線ベクトルとを用いて、前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置を求める画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【００１３】
ここで、第２のプリミティブ面にマッピングされる位置とは、第２のプリミティブ面上での移動体オブジェクトの位置を特定するものである。更に具体的には、第２のプリミティブ面に接する移動体オブジェクトの位置（代表位置）である。なお、第２のプリミティブ面にマッピングされる位置は、第２のプリミティブ面に接する位置から上方に所定距離だけ離れた位置としてもよい。
【００１４】
本発明においては、移動体オブジェクトの移動ベクトルと、当該移動体オブジェクトの移動先の第２のプリミティブ面の法線ベクトルとを用いて、第２のプリミティブ面上に移動体オブジェクトが移動した場合の位置を求める。従って、移動体オブジェクトが移動ベクトルに従って２次元的に移動した座標を、座標変換して３次元の位置情報を求めるといった処理が不要となり、移動先の第２のプリミティブ面での移動体オブジェクトの位置を少ない処理負荷で求めることができるようになる。
【００１５】
（２）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記移動ベクトルに基づいて、前記移動体オブジェクトが前記第１のプリミティブ面から前記第２のプリミティブ面に移動するか否かを検出し、前記移動体オブジェクトが前記第２のプリミティブ面に移動すると検出されたことを条件に、前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置を求めてもよい。
【００１６】
本発明によれば、第２のプリミティブ面への移動が検出されたことを条件に、移動体オブジェクトの第２のプリミティブ面上の位置を求めるため、無駄にマッピングされる位置を求める必要がなくなり、移動体オブジェクトがマッピングされる位置を求める処理の負荷を軽減できる。
【００１７】
（３）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記第１のプリミティブ面と前記第２のプリミティブ面との境界に設定された仮想プリミティブ面と、前記移動ベクトルとの交差判定を行うことによって、前記移動体オブジェクトが前記第１のプリミティブ面から前記第２のプリミティブ面に移動するか否かを検出してもよい。
【００１８】
本発明によれば、移動前のプリミティブ面と移動先のプリミティブ面とで特定される仮想プリミティブ面と、移動ベクトルとの交差判定により、移動先のプリミティブ面に移動したか否かを判別できるので、移動検出の判別と、移動先のプリミティブ面の特定とを簡素な処理で実現できる。
【００１９】
（４）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記移動体オブジェクトが前記第２のプリミティブ面にマッピングされる位置として、前記移動ベクトルと前記法線ベクトルとを用いて生成される直線と、前記第２のプリミティブ面との交点を求めてもよい。
【００２０】
本発明によれば、移動ベクトルと移動先の第２のプリミティブ面の法線ベクトルとにより特定される直線と、第２のプリミティブ面との交点を求めるだけで、移動体オブジェクトの第２のプリミティブ面上の位置を求めることができるので、処理負荷を大幅に軽減できる。
【００２１】
（５）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記直線を、前記移動ベクトルの終点を通り前記法線ベクトルに平行な直線として求めてもよい。
【００２２】
本発明によれば、移動先の第２のプリミティブ面の法線ベクトルの向きに関わらず、例えば天井を構成する第２のプリミティブ面にマッピングされる位置を、容易に求めることができるようになる。
【００２３】
（６）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記移動体オブジェクトが前記第２のプリミティブ面に移動するとき、前記第２のプリミティブ面の状況に応じて移動後の前記移動体オブジェクトの移動制御を変化させてもよい。
【００２４】
（７）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記移動体オブジェクトの特性に応じて、前記第２のプリミティブ面に移動後の前記移動体オブジェクトの移動制御を変化させてもよい。
【００２５】
本発明によれば、移動体オブジェクトが移動する地形を表現するマップや、移動体オブジェクトに応じて、移動制御を異ならせることができるので、よりリアルな移動体オブジェクトの動きを表現できる。
【００２６】
（８）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクトがマッピングされるプリミティブ面を特定する情報を記憶するマッピング情報記憶部を含み、前記移動体オブジェクト制御部が、前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトの移動先のプリミティブ面の候補を特定し、前記移動ベクトルに基づいて、前記移動先のプリミティブ面の候補の中から前記移動体オブジェクトの移動先のプリミティブ面を求めてもよい。
【００２７】
本発明によれば、移動先のプリミティブ面の候補を特定し、特定された候補の中から移動先のプリミティブ面を求めるようにしたので、移動検出処理の無駄を省き処理負荷を大幅に削減できる。
【００２８】
（９）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクト同士で衝突判定を行い、衝突判定の結果に基づいて、前記プリミティブ面にマッピングされた前記移動体オブジェクトの少なくとも１つの移動制御を行ってもよい。
【００２９】
本発明によれば、移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクトを対象に衝突判定処理を行えばよいので、すべての移動体オブジェクトについて衝突判定処理を行う必要がなくなり、処理負荷を軽減できる。
【００３０】
（１０）また本発明は、画像を生成するための画像生成システムであって、オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、前記移動体オブジェクト制御部によって移動制御される前記移動体オブジェクトがマッピングされるプリミティブ面を特定する情報を記憶するマッピング情報記憶部と、前記移動体オブジェクトの画像を生成する画像生成部とを含み、前記移動体オブジェクト制御部が、前記マッピング情報記憶部に記憶された情報に基づいて、当該移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクト同士で衝突判定を行い、衝突判定の結果に基づいて、前記プリミティブ面にマッピングされる前記移動体オブジェクトの少なくとも１つの移動制御を行う画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【００３１】
本発明によれば、移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクトを対象に衝突判定処理を行えばよいので、すべての移動体オブジェクトについて衝突判定処理を行う必要がなくなり、処理負荷を軽減できる。
【００３２】
（１１）また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記移動体オブジェクトの特性に応じて、衝突判定を行う範囲を異ならせてもよい。
【００３３】
本発明においては、移動距離の長い移動体オブジェクトについては衝突判定を行う範囲を広くしたり、逆に移動距離の短い移動体オブジェクトについては衝突判定を行う範囲を狭くしたりできる。従って、移動体オブジェクトの動きを表現したいキャラクタの性格に応じた衝突回避処理を実現できる。また、衝突判定を行う範囲を調整して、この範囲を１つプリミティブ面内に収まる程度にすることで、衝突判定の対象となる移動体オブジェクトを容易に特定でき、処理負荷を軽減できる。
【発明を実施するための最良の形態】
【００３４】
以下、本実施形態について説明する。
【００３５】
なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００３６】
１．  構成
図１に本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の例を示す。なお、本実施形態の画像生成システムは、図１の構成要素（各部）を全て含む必要はなく、その一部（例えば操作部１６０、携帯型情報記憶装置１９４又は通信部１９６等）を省略した構成としてもよい。
【００３７】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、シフトレバー、アクセルペダル、ブレーキペダル、マイク、センサ、タッチパネル型ディスプレイ、或いは筺体などのハードウェアにより実現できる。
【００３８】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭなどのハードウェアにより実現できる。
【００３９】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶（記録、格納）される。
【００４０】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００４１】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどのハードウェアにより実現できる。
【００４２】
携帯型情報記憶装置１９４は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などがある。
【００４３】
通信部１９６は、外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００４４】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信するようにしてもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００４５】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。ここで処理部１００が行うゲーム処理としては、ゲーム開始条件（コースやマップやキャラクタや参加プレーヤ人数の選択等）が満たされた場合にゲームを開始させる処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了させる処理などがある。また処理部１００は記憶部１７０をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）やＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラム（ゲームプログラム）により実現できる。
【００４６】
処理部１００は、移動体オブジェクト制御部１１０、画像生成部１２０、音生成部１３０を含む。なおこれらの一部を省略してもよい。
【００４７】
移動体オブジェクト制御部１１０は、オブジェクト空間における移動体オブジェクトを移動制御する処理を行う。オブジェクト空間には、処理部１００によって、複数のポリゴン（広義にはプリミティブ面）で構成されたマップが設定される。移動体オブジェクト制御部１１０は、オブジェクト空間に設定されたマップ上に配置される複数の移動体オブジェクトの移動制御を行うことができる。そして、各移動体オブジェクトに付与されたパラメータ設定による同種の行動パターンに基づく移動制御を行い、より少ない処理負荷で、群れて行動する様子をリアルに実現できる。
【００４８】
また移動体オブジェクト制御部１１０は、移動体オブジェクトの移動情報（移動ベクトル、位置情報、方向情報、速度情報或いは加速度情報）を求める処理を行う。移動体オブジェクト制御部１１０は、操作部１６０によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、移動体オブジェクトをオブジェクト空間内で移動させる処理を行う。
【００４９】
より具体的には、移動体オブジェクト制御部１１０は、求めた移動ベクトルに応じて、移動体オブジェクトの位置や回転角度（方向）を例えば１フレーム（１／６０秒等）毎に変化させる。例えば（ｋ−１）フレームでの移動体オブジェクトの位置（Ｘ、Ｙ又はＺ座標）、回転角度（Ｘ、Ｙ又はＺ軸回りの回転角度）をＰk-1、θk-1とし、移動体オブジェクトの１フレームでの位置変化量（速度）、回転変化量（回転角度）をΔＰ、Δθとする。すると、ｋフレームでの移動体オブジェクトの位置Ｐk、回転角度θkは例えば下式（１）、（２）のように求められる。
【００５０】
Ｐk＝Ｐk-1＋ΔＰ          （１）
θk＝θk-1＋Δθ          （２）
なお移動体オブジェクト制御部１１０で行われる処理は、上式（１）、（２）の処理に限定されず、（１）、（２）式と均等な処理でもよい。
【００５１】
また移動体オブジェクト制御部１１０は、複数のポリゴン（広義にはプリミティブ面）で構成されたマップ上を移動する移動体オブジェクトが第１のポリゴンから該第１のプリミティブ面に隣接する第２のポリゴンに移動するとき、当該移動体オブジェクトの移動ベクトルと第２のポリゴンの法線ベクトルとを用いて、当該移動体オブジェクトが第２のポリゴンにマッピングされる位置を求める。そして、当該移動体オブジェクトを、第２のポリゴン上の求めた位置に移動するように移動制御する。なお移動ベクトルは、移動体オブジェクト制御部１１０によって生成される。移動体オブジェクト制御部１１０は、例えばオブジェクト空間に配置されるターゲットの位置に向かう方向の移動ベクトルを生成してもよい。ここで、ターゲットは、処理部１００によって、オブジェクト空間内に仮想的に配置される。処理部１００は、操作部１６０からの操作データやプログラムに基づくゲーム処理の処理結果に応じた位置に、ターゲットを配置する。そして、例えば移動体オブジェクトの位置が、現在のターゲットの位置に向かう方向に該移動体オブジェクトの移動ベクトルを求めると共に、ターゲットの位置がゲーム処理の処理結果に応じた位置となるように該ターゲットの移動ベクトルを求める。求められた移動ベクトルに基づきそれぞれ移動制御された移動体オブジェクト及びターゲットの描画処理を行うことで、移動体オブジェクトがターゲットに追従する動きを表現する画像を生成できる。
【００５２】
移動体オブジェクト制御部１１０は、移動検出部１１２、マッピング位置算出部１１４、衝突回避処理部１１６を含む。なおこれらの一部を省略してもよい。
【００５３】
移動検出部１１２（広義には移動体オブジェクト制御部１１０）は、移動体オブジェクトが第１のポリゴン（第１のポリゴン上の位置）から第２のポリゴン（第２のポリゴン上の位置）に移動するか否かを検出する。より具体的には、移動検出部１１２は、移動体オブジェクトの移動ベクトルに基づいて、移動体オブジェクトが第１のポリゴンから第２のポリゴンに移動するか否かを検出する。更に具体的には、移動検出部１１２は、第１のポリゴンと第２のポリゴンとの境界に設定された仮想ポリゴン（広義には仮想プリミティブ面）と、移動体オブジェクトの移動ベクトルとの交差判定を行うことによって、移動体オブジェクトが第１のポリゴンから第２のポリゴンに移動するか否かを検出することができる。
【００５４】
マッピング位置算出部１１４は、移動体オブジェクトがマッピングされる位置を求める。より具体的には、移動検出部１１２によって移動体オブジェクトが第２のポリゴンに移動すると検出されたことを条件に、移動体オブジェクトが第２のポリゴンにマッピングされる位置を求める。
【００５５】
衝突回避処理部１１６（広義には移動体オブジェクト制御部１１０）は、移動体オブジェクト同士の衝突を回避する処理を行う。より具体的には、衝突回避処理部１１６は、移動体オブジェクトがマッピングされたポリゴンにマッピングされる移動体オブジェクト同士で衝突判定を行う。そして、移動体オブジェクト制御部１１０が、衝突判定の結果に基づいて、当該ポリゴンにマッピングされる移動体オブジェクトの少なくとも１つについて衝突を回避するような移動制御を行う。
【００５６】
更に具体的には、記憶部１７０のマッピング情報記憶部１７４は、移動体オブジェクト制御部１１０によって移動制御される移動体オブジェクトがマッピングされるポリゴンを特定するマッピング情報（情報）を記憶する。ここで、ポリゴンを特定するマッピング情報としては、ポリゴン番号がある。そして、衝突回避処理部１１６は、マッピング情報記憶部１７４に記憶されたマッピング情報（情報）に基づいて、当該移動体オブジェクトがマッピングされたポリゴンにマッピングされる移動体オブジェクト同士で衝突判定を行う。こうすることで、１つの移動体オブジェクトに対する衝突判定の対象となる他の移動体オブジェクトの数を大幅に削減でき、処理負荷を削減できるようになる。
【００５７】
衝突回避処理部１１６は、上述のように衝突判定を行い、衝突判定結果に基づいて衝突を回避するための処理を行う。例えば衝突回避処理部１１６は、当該フレームにおいて求められた移動ベクトル（第１の移動ベクトル）に従って移動した場合の当該移動体オブジェクト（第１の移動体オブジェクト）の位置が、他の移動体オブジェクト（第２の移動体オブジェクト）に対して設定された衝突感知エリア内にあるか否かを判定する。ここでフレームは、シミュレーション処理や画像処理を行う時間単位である。そして当該移動体オブジェクト（第１の移動体オブジェクト）の位置が、他の移動体オブジェクト（第２の移動体オブジェクト）に対して設定された衝突感知エリア内にあると判定されたとき、移動体オブジェクト制御部１１０が、移動ベクトル（第１の移動ベクトル）の方向と反対方向の反転移動ベクトル（第２の移動ベクトル）を求め、該反転移動ベクトル（第２の移動ベクトル）に基づいて当該移動体オブジェクト（第１の移動体オブジェクト）の移動制御を行う。こうすることで、非常に簡素な処理で、当該移動体オブジェクトと他の移動体オブジェクト（第１及び第２の移動体オブジェクト）の衝突を回避でき、群れの動きをリアルに表現できる。
【００５８】
画像生成部１２０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。即ち、移動体オブジェクト制御部１１０の処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。より具体的には、３次元画像を生成する場合には、まず座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理を行って、その処理結果に基づいて、描画データが作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数のプリミティブ面）を、描画バッファ１７８（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画する。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００５９】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００６０】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００６１】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて生成してもよい。
【００６２】
２．  本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【００６３】
本実施形態では、移動体オブジェクト制御部１１０（狭義にはマッピング位置算出部１１４）が、移動体オブジェクトの移動ベクトルと、移動先のポリゴンの法線ベクトルとに基づいて、移動先のポリゴン上のマッピング位置を求める。
【００６４】
図２に、本実施形態におけるマッピング位置の算出処理の手法の説明図を示す。図２では、移動体オブジェクトが、オブジェクト空間に配置された第１〜第３のポリゴンＰＯＬＹ１〜ＰＯＬＹ３上を移動する移動体オブジェクトを模式的に示している。また、図２では、説明の便宜上、ＸＹ平面の断面を示す。
【００６５】
第１〜第３のポリゴンＰＯＬＹ１〜ＰＯＬＹ３は、それぞれ法線ベクトルＮＶ１〜ＮＶ３を有している。
【００６６】
フレームｆ（ｆは自然数）において、移動体オブジェクトＭＯＢＪ＿ｆは、第１のポリゴンＰＯＬＹ１上の位置Ｐ−ｆにマッピングされている。移動体オブジェクトＭＯＢＪ＿ｆは、移動ベクトルＭＶ＿ｆを有している。
【００６７】
フレーム（ｆ＋１）において、移動体オブジェクトが、第１のポリゴンＰＯＬＹ１に隣接する第２のポリゴンＰＯＬＹ２に移動するものとする。この場合、フレーム（ｆ＋１）における第２のポリゴンＰＯＬＹ２上の位置Ｐ＿ｆ＋１は、マッピング位置算出部１１４によって、移動ベクトルＭＶ＿ｆと、第２のポリゴンＰＯＬＹ２の法線ベクトルＮＶ２とを用いて求められる。そして、移動体オブジェクト制御部１１０（又は処理部１００）は、フレーム（ｆ＋１）において、第２のポリゴンＰＯＬＹ２上の位置Ｐ＿ｆ＋１に、移動体オブジェクトＭＯＢＪ＿ｆ＋１をマッピングする。
【００６８】
同様に、フレーム（ｆ＋２）において、移動体オブジェクトが、第２のポリゴンＰＯＬＹ２に隣接する第３のポリゴンＰＯＬＹ３に移動する場合、フレーム（ｆ＋２）における第３のポリゴンＰＯＬＹ３上の位置Ｐ＿ｆ＋２は、マッピング位置算出部１１４によって、移動ベクトルＭＶ＿ｆ＋１と、第３のポリゴンＰＯＬＹ３の法線ベクトルＮＶ３とを用いて求められる。そして、移動体オブジェクト制御部１１０（又は処理部１００）は、フレーム（ｆ＋２）において、第３のポリゴンＰＯＬＹ３上の位置Ｐ＿ｆ＋２に、移動体オブジェクトＭＯＢＪ＿ｆ＋２をマッピングする。
【００６９】
こうすることで、オブジェクト空間のＸＺ平面上で起伏に富んだ地形を表現するためのポリゴン上の位置に、移動体オブジェクトを少ない処理負荷でマッピングできる。しかも、第３のポリゴンＰＯＬＹ３のような地形、例えば天井に、移動体オブジェクトをマッピングする場合でも、少ない処理負荷で実現できる。従って、群れを表現する複数の移動体オブジェクトの移動制御に好適である。
【００７０】
図３に、本実施形態における複数の移動体オブジェクトによる群れの画像の一例を示す。
【００７１】
各移動体オブジェクトは、例えば嗜好物に猪突猛進的に素早い動きで近付くスカラベの動きを実現する。図３に示すようにオブジェクト空間に設定され起伏に富んだ地形マップＧＭＡＰ上に、ターゲットＴＧと複数の移動体オブジェクトを配置する。
【００７２】
この場合、ターゲットＴＧの位置に近付く群れを表現できる。例えば、ターゲットＴＧの位置を動かせば、各移動体オブジェクトがターゲットＴＧの位置に向かう方向に移動し、ターゲットＴＧを追跡する群れの動きを表現できる。
【００７３】
図４に、本実施形態における複数の移動体オブジェクトによる群れの画像の画の例を示す。
【００７４】
各移動体オブジェクトは、例えば海辺の岩等の上で群れをなして動くフナムシの動きを実現する。図４に示すようにオブジェクト空間に設定され起伏に富んだ地形マップＧＭＡＰ上に、ターゲットＴＧと複数の移動体オブジェクトを配置する。
【００７５】
この場合、ターゲットＴＧの位置に近付かない群れを表現できる。例えば、ターゲットＴＧの位置を中心に所定のエリア内でのみ、ターゲットＴＧから移動体オブジェクトが遠ざかるようにすれば、図４に示すように所定のエリア内に近付かない群れの動きを表現できる。
【００７６】
以下、本実施形態における各処理の詳細について説明する。
【００７７】
２．１  移動検出処理
本実施形態では、起伏に富んだ地形上で移動制御される複数の移動体オブジェクトのうち、以下で説明する移動検出処理によって移動が検出された移動体オブジェクトに対して、移動先のマッピング位置の算出処理を行うことができる。また、移動検出処理によって移動が検出されずに、同じポリゴン内での移動の場合には、当該ポリゴン上でのマッピング位置の算出処理を行う。
【００７８】
本実施形態では、移動体オブジェクトのマッピング情報を用いる。
【００７９】
図５に、本実施形態におけるマッピング情報の一例を示す。マッピング情報は、マッピング情報記憶部１７４に格納される。
【００８０】
マッピング情報は、図５に示すように、移動体オブジェクトに対応して、当該移動体オブジェクトがマッピングされるポリゴンを特定する情報を有する。ポリゴンを特定する情報としては、マップを構成する複数のポリゴンのそれぞれ固有に付与されるポリゴン番号がある。図５では、移動体オブジェクトＭＯＢＪ１に対応して、移動体オブジェクトＭＯＢＪ１がマッピングされる第１のポリゴンＰＯＬＹ１を特定するためのポリゴン番号１が記憶される。また移動体オブジェクトＭＯＢＪ２に対応して、移動体オブジェクトＭＯＢＪ２がマッピングされる第９のポリゴンＰＯＬＹ９を特定するためのポリゴン番号９が記憶される。
【００８１】
このようにマッピング情報を用いれば、移動体オブジェクトがマッピングされるポリゴンの周辺のポリゴンを特定することができる。したがって、これら周辺のポリゴンに対して移動したか否かを検出して、移動先のポリゴンと、移動先のポリゴンにマッピングされる位置を求めることで、起伏に富んだ地形を表現するポリゴンにマッピングされる複数の移動体オブジェクトの移動制御の処理負荷を大幅に軽減できる。
【００８２】
図６に、地形を構成するポリゴンを模式的に示す。各ポリゴンが３つの頂点（広義には定義点）により構成される複数のポリゴンにより、地形マップが表現されるものとする。ここで、各ポリゴンに付された番号は、ポリゴン番号である。
【００８３】
図６では、ポリゴン番号２４で特定されるポリゴンに、移動体オブジェクトがマッピングされている。この場合、移動検出部１１２（広義には移動体オブジェクト制御部１１０）は、ポリゴン番号２４で特定されるポリゴンの周辺のポリゴン（隣接するポリゴン）を検索する。
【００８４】
より具体的には、移動検出部１１２は、ポリゴン番号２４で特定されるポリゴンの３つの頂点ＡＰ１〜ＡＰ３を共有する他のポリゴンのポリゴン番号を検索する。頂点ＡＰ１は、ポリゴン番号１２、１３、１４、２３、２５により特定される各ポリゴンが共有している。頂点ＡＰ２は、ポリゴン番号２２、２３、３３、３４、３５により特定される各ポリゴンが共有している。頂点ＡＰ３は、ポリゴン番号２５、２６、３５、３６、３７により特定される各ポリゴンが共有している。従って、移動検出部１１２は、ポリゴン番号２４で特定されるポリゴンの周辺のポリゴン（隣接するポリゴン）として、図６に示す斜線部分のポリゴンを移動先のポリゴン（プリミティブ面）の候補として検索し、これらポリゴンのポリゴン番号がリストアップされたポリゴンリストを作成する。
【００８５】
そして、ポリゴンリストに含まれるポリゴンの中から、移動体オブジェクトの移動ベクトルに基づいて、移動先のポリゴンを求める。より具体的には、ポリゴンリストに含まれる移動先のポリゴンの候補それぞれについて、移動するか否かを検出する。これにより、移動検出の処理負荷を削減できる。
【００８６】
図７に、本実施形態における移動検出処理の例を模式的に説明するための図を示す。
【００８７】
移動検出部１１２は、移動体オブジェクトＭＯＢＪが現在いるポリゴン（第１のポリゴン（第１のプリミティブ面））ＰＯＬＹ２４と、移動検出先のポリゴン（第２のポリゴン（第２のプリミティブ面））ＰＯＬＹ２５との境界に、仮想的に設定される仮想ポリゴンＶＰＯＬＹを設ける。そして、仮想ポリゴンＶＰＯＬＹと、移動体オブジェクトＭＯＢＪの移動ベクトルＭＶとの交差判定に基づいて、移動体オブジェクトＭＯＢＪが、移動検出先のポリゴンＰＯＬＹ２５に移動したか否かを検出する。
【００８８】
なお、交差判定は、例えば移動体オブジェクトＭＯＢＪが移動ベクトルＭＶで移動後の位置Ｐｍとポリゴンの頂点ＡＰ１とを結ぶベクトルと、仮想ポリゴンＶＰＯＬＹの法線ベクトルｎｖとの内積値を求めることで判定できる。この場合、内積値が０のとき、ポリゴンＰＯＬＹ２４とポリゴンＰＯＬＹ２５の境界上に位置Ｐｍがあると判断できる。また内積値が正のとき、移動ベクトルＭＶで移動した移動体オブジェクトＭＯＢＪが仮想ポリゴンＶＰＯＬＹを通過したと判断できる。更に内積値が負のとき、移動ベクトルＭＶで移動した移動体オブジェクトＭＯＢＪが仮想ポリゴンＶＰＯＬＹを通過していないと判断できる。このような判定を頂点ＡＰ１〜ＡＰ３の各頂点ごとに行うことで、移動体オブジェクトＭＯＢＪが、どのポリゴンに移動したかを判別できる。
【００８９】
２．２  マッピング位置の算出処理
上述のようにして移動検出部１１２により移動検出処理が行われると、マッピング位置算出部１１４は、移動体オブジェクトをマッピングすべき位置の算出処理を行う。
【００９０】
図８に、本実施形態におけるマッピング位置の算出処理を模式的に説明するための図を示す。ここでは、オブジェクト空間に第１のポリゴンＰＯＬＹ１と該第１のポリゴンＰＯＬＹ１に隣接する第２のポリゴンＰＯＬＹ２とが配置され、第１のポリゴンＰＯＬＹ１に対して傾斜するように第２のポリゴンＰＯＬＹ２が設定されている。そして、第１のポリゴンＰＯＬＹ１上の移動体オブジェクトＭＯＢＪが、第２のポリゴンＰＯＬＹ２上に移動する場合を示している。
【００９１】
マッピング位置算出部１１４は、移動体オブジェクトＭＯＢＪの移動ベクトルＭＶと第２のポリゴン（プリミティブ面）ＰＯＬＹ２の法線ベクトルＮＶ２とを用いて、移動体オブジェクトＭＯＢＪの第２のポリゴンＰＯＬＹ２にマッピングされる位置Ｐ２を求める。
【００９２】
より具体的には、マッピング位置算出部１１４（広義には移動体オブジェクト制御部１１０）が、移動体オブジェクトＭＯＢＪの第２のポリゴンＰＯＬＹ２にマッピングされる位置Ｐ２として、移動ベクトルＭＶと法線ベクトルＮＶ２とを用いて生成される直線ＬＮと、第２のポリゴンＰＯＬＹ２との交点を求める。そして、移動体オブジェクト制御部１１０（又は処理部１００）が、この交点に、移動体オブジェクトＭＯＢＪをマッピングする。
【００９３】
こうすることで、移動体オブジェクトＭＯＢＪが移動ベクトルＭＶに従って２次元的に移動した座標を、座標変換して３次元の位置情報を求めるといった処理が不要となり、移動先の第２のポリゴンにマッピングされる位置Ｐ２を少ない処理負荷で求めることができる。
【００９４】
なお、マッピング位置算出部１１４（広義には移動体オブジェクト制御部１１０）が、直線ＬＮは、ＭＶの終点を通り法線ベクトルＮＶ２に平行な直線としてもよい。こうすることで、法線ベクトルの向きに関わらず、例えば天井を構成する第２のポリゴンＰＯＬＹ２にマッピングされる位置を、容易に求めることができるようになる。
【００９５】
なお、上述の移動検出処理により、第１のポリゴンＰＯＬＹ１上の移動体オブジェクトＭＯＢＪが、地形を構成するマップの外部に移動することが検出されることがある。第１のポリゴンＰＯＬＹ１がマップの境界部にある場合である。この場合、移動体オブジェクトを強制的にマップの外部に出ないように、移動制御することが望ましい。
【００９６】
図９に、第１のポリゴン上の移動体オブジェクトが、地形を構成するマップの外部に移動することが検出されたときの移動制御の例を模式的に示す。
【００９７】
第１のポリゴンＰＯＬＹ１上の移動体オブジェクトＭＯＢＪが、第１のポリゴンＰＯＬＹ１の外部に出て、かつマップの外部に移動することが検出されたときには、移動体オブジェクトＭＯＢＪの移動ベクトルＭＶを補正する。より具体的には、まず第１のポリゴンＰＯＬＹ１の重心位置ＣＰが求められる。第１のポリゴンＰＯＬＹ１の重心位置ＣＰは、第１のポリゴンＰＯＬＹ１の３つの頂点ＡＰ１〜ＡＰ３により求められる。そして、移動体オブジェクトＭＯＢＪが、重心位置ＣＰに向かう移動ベクトルＭＶ´に従って移動制御される。
【００９８】
これにより、移動体オブジェクトＭＯＢＪの例外処理を簡素化でき、処理負荷を軽減できる。
【００９９】
図８において、第１及び第２のポリゴンＰＯＬＹ１、ＰＯＬＹ２のなす角度が鋭角の場合、直線ＬＮと、第２のポリゴンＰＯＬＹ２との交点が求められない。この場合、移動体オブジェクトＭＯＢＪは、移動前の第１のポリゴンＰＯＬＹ１内に留まるものとして、図９に示したような移動制御を行えばよい。
【０１００】
２．３  衝突回避処理
本実施形態では、上述のようにマッピングされる移動体オブジェクトにより表現される群れをよりリアルに表現するため、移動体オブジェクト同士の衝突を回避する処理がマッピング前に行われていることが望ましい。この場合、衝突を回避する処理を同一ポリゴン上にマッピングされた移動体オブジェクト同士で行う。より具体的には、マッピング情報記憶部１７４に記憶されたマッピング情報（情報）に基づいて、当該移動体オブジェクトがマッピングされたプリミティブ面にマッピングされる移動体オブジェクト同士で衝突判定を行う。そして、移動体オブジェクト制御部１１０が、衝突判定の結果に基づいて、プリミティブ面にマッピングされた移動体オブジェクトの少なくとも１つの移動制御を行う。
【０１０１】
こうすることで、キャラクタ同士がすり抜けて動き回り、表現に違和感が残るという問題を回避して、少ない処理負荷でリアルな群れを表現できる。
【０１０２】
以下では、衝突回避処理の詳細について説明する。
【０１０３】
図１０に、本実施形態における衝突回避処理の説明図を示す。
【０１０４】
図１０では、第１及び第２の移動体オブジェクトＭＯＢＪ１、ＭＯＢＪ２が同一ポリゴンにマッピングされ、これら移動体オブジェクト同士の衝突回避処理の例を示している。
【０１０５】
第１の移動体オブジェクトＭＯＢＪ１が、当該フレームにおいて求められた第１の移動ベクトルＭＶ１に従って移動した場合、当該フレームの次のフレームで位置Ｐ１に第１の移動体オブジェクトＭＯＢＪ１の画像が生成されるものとする。ここで第１の移動ベクトルＭＶ１は、当該フレームにおいて求められた移動ベクトルである。
【０１０６】
一方、第２の移動体オブジェクトＭＯＢＪ２には、衝突感知エリアＡＲが設定される。衝突感知エリアＡＲは、第２の移動体オブジェクトＭＯＢＪ２の位置を基準に、半径ＲｅｓｐｏｎｓｅＡｒｅａの円内の範囲とすることができる。
【０１０７】
半径ＲｅｓｐｏｎｓｅＡｒｅａの長さは、第２の移動体オブジェクトＭＯＢＪ２の特性に関連付けて決めることが望ましい。即ち、衝突感知エリアＡＲは、第２の移動体オブジェクトＭＯＢＪ２を基準に、第２の移動体オブジェクトＭＯＢＪ２の特性に関連付けられた大きさの範囲であることが望ましい。また、半径ＲｅｓｐｏｎｓｅＡｒｅａの長さは、第１の移動体オブジェクトＭＯＢＪ１の特性に関連付けて決めてもよい。
【０１０８】
当該フレームにおいて求められた第１の移動ベクトルＭＶ１に従って移動した場合の第１の移動体オブジェクトＭＯＢＪ１の位置Ｐ１が、第２の移動体オブジェクトＭＯＢＪ２に対して設定された衝突感知エリアＡＲ内にあるとき、衝突回避処理部１１６（広義には移動体オブジェクト制御部１１０）は、第１の移動ベクトルＭＶ１の方向と反対方向の第２の移動ベクトルＭＶ１Ｘに基づいて第１の移動体オブジェクトＭＯＢＪ１の移動制御を行う。従って、当該フレームの次のフレームでは、第２の移動体ベクトルＭＶ１Ｘに従って移動制御された第１の移動体オブジェクトＭＯＢＪ１の画像が表示される。
【０１０９】
一般的に、衝突判定処理には対象物の形状や位置及び移動ベクトルを使用して行われるが、本願実施形態では、上述のように第１及び第２の移動体オブジェクトＭＯＢＪ１，ＭＯＢＪ２の衝突回避処理を、両者の位置及び移動ベクトルと衝突感知エリアを用いることで、処理負荷を大幅に軽減できる。特に、群れを構成する移動体オブジェクトの衝突回避処理を行う場合、処理負荷の軽減の効果は著しい。
【０１１０】
また、キャラクタの動きを表現する移動体オブジェクトの特性に応じた範囲内で衝突回避処理を行うことでき、様々な群れの動きに合わせた衝突回避処理を実現できる。そして、移動体オブジェクト同士がすり抜けて動き回り、表現に違和感が残るという問題を解消できる。
【０１１１】
なお、衝突回避処理部１１６（移動体オブジェクト制御部１１０）は、第１の移動体オブジェクトＭＯＢＪ１の特性に関連付けて、第２の移動ベクトルＭＶ１Ｘの長さを変更することが望ましい。例えば第１の移動体オブジェクトＭＯＢＪ１に関連付けられた反応感度を示すパラメータＲｅｓｐｏｎｓｅ（０以上１以下の係数）により、第１の移動ベクトルＭＶ１を反転し、該ベクトルの長さをパラメータＲｅｓｐｏｎｓｅで補正した長さとする。これにより、第１の移動体オブジェクトＭＯＢＪ１の動きを表現したい群れの個々の性格（臆病、大胆不敵等）に応じて、衝突回避後の動きを表現できる。
【０１１２】
本実施形態における移動体オブジェクトの衝突回避処理は、図１０で説明したものに限定されるものではない。
【０１１３】
図１１に、本実施形態における衝突回避処理の他の例の説明図を示す。ただし、図１０と同一部分には同一符号を付し、適宜説明を省略する。
【０１１４】
図１１では、衝突回避処理部１１６（広義には移動体オブジェクト制御部１１０）が、当該フレームにおける第１の移動体オブジェクトＭＯＢＪ１の第１の移動ベクトルＭＶ１と、第２の移動体オブジェクトＭＯＢＪ２に対して設定された衝突感知エリアＡＲの境界との交点Ｃを用いて第１の移動ベクトルＭＶ１を補正した第２の移動ベクトルＭＶ１Ｘを求める。より具体的には、第１の移動体オブジェクトＭＯＢＪ１の位置を始点とする第１の移動ベクトルＭＶ１の始点と終点とを結ぶ線分と、衝突検知エリアＡＲの境界（境界線）との交点Ｃを求める。そして、第２の移動体オブジェクトＭＯＢＪ２の位置Ｐ２と交点Ｃとを結ぶ直線上に、補正点Ｄを求める。位置Ｐ２と交点Ｃとの距離と、交点Ｃと補正点Ｄとの距離は等しい。第２の移動ベクトルＭＶ１Ｘは、第１の移動体オブジェクトの位置Ｐと補正点Ｄとを結ぶ方向である。
【０１１５】
そして、移動体オブジェクト制御部１１０は、第２の移動ベクトルＭＶ１Ｘに基づいて、第１の移動体オブジェクトＭＯＢＪ１を移動制御する。
【０１１６】
このように、図１１では、第１の移動ベクトル（第１の移動ベクトルの始点と終点とを結ぶ線分）と、衝突感知エリアの境界との交点を求めることで、衝突の可能性が高いか否かを検出できる。更に、その交点を再利用して、第１の移動ベクトルを補正した第２の移動ベクトルを求めることで、１つの交点を求めるだけで衝突の検出と、その回避とを実現できる。
【０１１７】
なお、移動体オブジェクト制御部１１０は、以下のように補正された第２の移動ベクトルに基づいて移動制御を行ってもよい。
【０１１８】
図１２に、本実施形態における衝突回避処理の更に他の例の説明図を示す。ただし、図１１と同一部分には同一符号を付し、適宜説明を省略する。
【０１１９】
図１２では、衝突回避処理部１１６（広義には移動体オブジェクト制御部１１０）が、補正点Ｄと第１の移動体オブジェクトＭＯＢＪ１の位置Ｐとに基づいて求められる補正ベクトルＭＶ３と、第１の移動ベクトルＭＶ１とを、補間パラメータαに基づいて補間して、第２の移動ベクトルＭＶ１Ｘを求める。
【０１２０】
より具体的には、補正ベクトルＭＶ３は、図１１と同様にして求められる。そして、補間パラメータαを用いて、次の式で補間する。
【０１２１】
ＭＶ２＝α・ＭＶ３＋（１−α）・ＭＶ１      （３）
そして、補間パラメータαは、第１又は第２の移動体オブジェクトの特性に関連付けられていることが望ましい。こうすることで、第１の移動ベクトルＭＯＢＪ１の正確に対応した動きに応じて、該第１の移動体オブジェクトＭＯＢＪ１の衝突回避後の移動ベクトルの向きを、少ない処理負荷でリアルに表現できる。
【０１２２】
なお、衝突回避処理部１１６（広義には移動体オブジェクト制御部１１０）は、図１３に示すように、第１又は第２の移動体オブジェクトＭＯＢＪ１、ＭＯＢＪ２の特性に応じて、衝突判定を行う範囲を異ならせてもよい。例えば、移動距離の長い移動体オブジェクトについては衝突判定を行う範囲を広くしたり、逆に移動距離の短い移動体オブジェクトについては衝突判定を行う範囲を狭くしたりできる。また、衝突判定を行う範囲を調整して、この範囲を１ポリゴン内に収まる程度にすることで、衝突判定の対象となる移動体オブジェクトを容易に特定でき、処理負荷を軽減できる。
【０１２３】
２．４  その他の移動制御
なお移動体オブジェクト制御部１１０が行う移動制御には、種々の制御が考えられる。
【０１２４】
例えば移動体オブジェクト制御部１１０が、移動体オブジェクトが第２のプリミティブ面に移動するとき、第２のポリゴンの状況に応じて移動後の前記移動体オブジェクトの移動制御を変化させてもよい。
【０１２５】
第２のポリゴンの状況としては、例えば第１のポリゴンに対する第２のポリゴンの傾斜の度合いや、第２のポリゴンの滑りやすさを示す摩擦係数などが考えられる。このような第２のポリゴンの状況を含む各ポリゴンの状況は、記憶部１７０のプリミティブ面特性記憶部１７６に格納されるプリミティブ面特性情報として設定される。移動体オブジェクト制御部１１０は、移動先のポリゴンに対応してプリミティブ面特性記憶部１７６に記憶された当該ポリゴンの状況を示すプリミティブ面特性情報を読み出し、当該プリミティブ面特性情報に応じて以下のような移動制御を行う。
【０１２６】
図１４（Ａ）〜（Ｃ）、図１５（Ａ）〜（Ｃ）に、移動先のポリゴンの状況に応じた移動制御の例を示す。
【０１２７】
図１４（Ａ）では、第１のポリゴンＰＯＬＹ１上の移動体オブジェクトＭＯＢＪが、第２のポリゴンＰＯＬＹ２に移動するとき、第１のポリゴンＰＯＬＹ１に対する第２のポリゴンＰＯＬＹ２の傾斜がきつくて、移動体オブジェクトＭＯＢＪが第２のポリゴンＰＯＬＹ２を登ることができず、次第に第１のポリゴンＰＯＬＹ１上に戻るように移動制御される様子を示している。
【０１２８】
図１４（Ｂ）では、第１のポリゴンＰＯＬＹ１に対して、第２のポリゴンＰＯＬＹ２の傾斜がきつくて、移動体オブジェクトＭＯＢＪが第２のポリゴンＰＯＬＹ２を登る場合に、第２のポリゴンＰＯＬＹ２上の移動量が少なくなるように移動制御される様子を示している。
【０１２９】
図１４（Ｃ）では、第２のポリゴンＰＯＬＹ２が滑りやすく、移動体オブジェクトＭＯＢＪが第２のポリゴンＰＯＬＹ２を一旦登り始めたものの、移動体オブジェクトＭＯＢＪが第２のポリゴンＰＯＬＹ２に沿って滑り降りるように移動制御される様子を示している。
【０１３０】
図１５（Ａ）では、第１のポリゴンＰＯＬＹ１から下る方向の第２のポリゴンＰＯＬＹ２上を、移動体オブジェクトＭＯＢＪが移動したい方向に反して、第２のポリゴンＰＯＬＹ２上を滑り降りるように移動制御される様子を示している。
【０１３１】
図１５（Ｂ）では、移動体オブジェクトＭＯＢＪが、第２のポリゴンＰＯＬＹ２上を降りる速度を増しながら移動制御される様子を示している。
【０１３２】
図１５（Ｃ）では、移動体オブジェクトＭＯＢＪが、第２のポリゴンＰＯＬＹ２上を転がり落ちるように移動制御される様子を示している。
【０１３３】
なお、移動体オブジェクト制御部１１０が、移動体オブジェクトの特性に応じて、第２のポリゴンＰＯＬＹ２に移動後の移動体オブジェクトの移動制御を変化させてもよい。即ち、図１４（Ａ）〜（Ｃ）、図１５（Ａ）〜（Ｃ）に示す移動制御を、移動体オブジェクトの特性に応じて変化させてもよい。例えば、図１４（Ａ）では、移動体オブジェクトに応じて第２のポリゴンＰＯＬＹ２を登りやすくすることができ、図１５（Ｂ）では、移動体オブジェクトに応じて第２のポリゴンＰＯＬＹ２を滑り落ちるときの加速度を異ならせることができる。このような移動体オブジェクトの特性は、記憶部１７０のオブジェクト特性記憶部１７２に格納されるオブジェクト特性情報として設定される。移動体オブジェクト制御部１１０は、移動制御対象の移動体オブジェクトに対応してオブジェクト特性情報記憶部１７２に記憶されたオブジェクト特性情報を読み出し、オブジェクト特性情報に基づいて上述のような移動制御を行う。
【０１３４】
３．  本実施形態の処理
次に、本実施形態の詳細な処理例についてフローチャートを用いて説明する。
【０１３５】
本実施形態では、以下に示すような移動体オブジェクトの特性がパラメータ化された特性情報に基づいて移動制御が行われる。
【０１３６】
図１６に、移動体オブジェクトの特性情報の一例を示す。
【０１３７】
このような特性情報は、記憶部１７０のオブジェクト特性記憶部１７２に記憶される。移動体オブジェクト制御部１１０は、オブジェクト特性記憶部１７２に記憶されたオブジェクト特性情報を読み出し、各キャラクタの動きを表現するための移動体オブジェクトの移動制御を行う。従って、キャラクタのいずれかの動きを実現するために、上述のパラメータの内容を変更すればよい。これにより、同じ処理をキャラクタの数だけ繰り返すだけでよく、処理の簡素化を実現できる。
【０１３８】
衝突回避の度合いは、衝突回避度を示すパラメータ「Ｒｅｓｐｏｎｓｅ」に設定される。衝突感知エリアの範囲は、衝突回避の反応エリアを示すパラメータ「ＲｅｓｐｏｎｓｅＡｒｅａ」に設定される。
【０１３９】
各移動体オブジェクトを、図１６に示す特性情報に基づき、上述のような移動体オブジェクトの衝突回避処理を行うことで、処理の簡素化、プログラムやデータの容量の削減、移動体オブジェクトの表現の多様化を実現できる。
【０１４０】
図１７に、本実施形態における移動制御処理の一例のフローチャートを示す。
【０１４１】
まず、処理部１００は、移動体オブジェクトを特定するための変数ｉを０に初期化する（ステップＳ１０）。
【０１４２】
次に、変数ｉの値が、群れを表現するキャラクタ数より大きいか否かを判別する（ステップＳ１１）。
【０１４３】
変数ｉの値がキャラクタ数以上のとき（ステップＳ１１：Ｎ）、一連の処理を終了する（エンド）。
【０１４４】
一方、変数ｉの値がキャラクタ数より小さいとき（ステップＳ１１：Ｙ）、移動体オブジェクト制御部１１０が、マッピング情報記憶部１７４に記憶されたマッピング情報を読み出して、変数ｉで特定される移動体オブジェクト（当該移動体オブジェクト）がマッピングされるポリゴンを特定するためのポリゴン番号を特定する（ステップＳ１２）。
【０１４５】
続いて、移動体オブジェクト制御部１１０は、当該移動体オブジェクトの移動ベクトルであるｒｖｅｃを求める（ステップＳ１３）。移動体オブジェクト制御部１１０は、例えばランダム関数を用いて求めたベクトルに、当該移動体オブジェクトの過去のフレームにおける移動ベクトルである過去ベクトルを加算して、ベクトルｒｖｅｃを求めてもよい。
【０１４６】
次に、ステップＳ１３で求められた移動ベクトルｒｖｅｃによりオブジェクト空間に配置される移動体オブジェクトの位置が求められる。そして、求められた移動体オブジェクトの位置を用いて、衝突回避処理部１１６により、衝突回避処理が行われる（ステップＳ１４）。これにより、上述したように、キャラクタ（移動体オブジェクト）同士の衝突が回避されるように移動ベクトルが求められる。
【０１４７】
そして、マッピング位置算出部１１４が、ステップＳ１３で求められた移動ベクトル、又はステップＳ１４で求められた移動ベクトルに基づいて、当該ポリゴン又は移動先のポリゴン上でのマッピング位置を求める（ステップＳ１５）。
【０１４８】
次に、移動体オブジェクト制御部１１０は、マッピングされるポリゴンの法線ベクトルと、移動ベクトルと、ステップＳ１５で求められたマッピング位置とを用いてマトリクスを生成する（ステップＳ１６）。
【０１４９】
そして、画像生成部１２０が、ステップＳ１６で求めたマトリクスを用いて移動体オブジェクトの座標変換等のジオメトリ処理を行って、描画データを作成する（ステップＳ１７）。この描画データに基づいて、ジオメトリ処理後のオブジェクトデータを、描画バッファ１７８に描画する。
【０１５０】
その後、変数ｉをインクリメントして（ステップＳ１８）、ステップＳ１１に戻り、次の移動体オブジェクトについて同様の処理を繰り返す。
【０１５１】
図１８に、衝突回避処理例のフローチャートを示す。図１８に示す処理は、図１７のステップＳ１４において行われる。なお図１８では、上述した衝突回避処理のうち、図１０に示す衝突回避処理を実現する。
【０１５２】
まず、衝突回避処理部１１６は、まずオブジェクト特性記憶部１７２に記憶された当該移動体オブジェクトの特性情報の衝突回避度が設定されるパラメータ「Ｒｅｓｐｏｎｓｅ」の値を読み出す（ステップＳ２０）。
【０１５３】
そして、読み出したパラメータ「Ｒｅｓｐｏｎｓｅ」の値が０ではないとき（ステップＳ２１：Ｙ）、衝突回避処理対象の他の移動体オブジェクトを探索する（ステップＳ２２）。衝突回避処理部１１６は、当該移動体オブジェクトがマッピングされるポリゴン上にマッピングされる他の移動体オブジェクトを探索することで、処理負荷を軽減できる。
【０１５４】
次に、求めた他の移動体オブジェクトの位置と当該移動体オブジェクトの位置との距離（ｌｅｎ）を求める（ステップＳ２３）。
【０１５５】
そして、求めた距離（ｌｅｎ）が、当該移動体オブジェクトの特性情報のパラメータ「ＲｅｓｐｏｎｓｅＡｒｅａ」に設定された値より大きいか否かを判別する（ステップＳ２４）。距離（ｌｅｎ）が、パラメータ「ＲｅｓｐｏｎｓｅＡｒｅａ」に設定された値より大きいとき（ステップＳ２４：Ｙ）、当該移動体オブジェクトの移動ベクトル（第１の移動ベクトル）を反転し、当該移動体ベクトルと反対方向の移動ベクトル（第２の移動ベクトル）を求める（ステップＳ２５）。
【０１５６】
続いて、当該移動体オブジェクトの特性情報のパラメータ「Ｒｅｓｐｏｎｓｅ」の値で、ステップＳ２５で求めた移動ベクトルの長さを修正し（ステップＳ２６）、一連の処理を終了する（エンド）。
【０１５７】
一方、ステップＳ２１でパラメータ「Ｒｅｓｐｏｎｓｅ」に設定された値が０のとき（ステップＳ２１：Ｙ）、又はステップＳ２４で距離（ｌｅｎ）が、パラメータ「ＲｅｓｐｏｎｓｅＡｒｅａ」に設定された値より大きくないとき（ステップＳ２４：Ｎ）、一連の処理を終了する（エンド）。
【０１５８】
図１９に、マッピング位置の算出処理例のフローチャートを示す。図１９に示す処理は、図１７のステップＳ１５において行われる。
【０１５９】
まず、移動検出部１１２は、ステップＳ１４までの処理で求められた移動ベクトルにより移動する場合のポリゴンを探索する（ステップＳ３０）。移動検出部１１２は、図１７のステップＳ１２で特定されたポリゴン番号を用いて、図６で説明したように、該ポリゴン番号により特定されるポリゴンに隣接するポリゴンを探索する。そして、移動検出部１１２は、ポリゴンの各辺について、図７で説明した仮想ポリゴンを設定し、移動体オブジェクトが移動するポリゴンを求める。
【０１６０】
その結果、隣りのポリゴンに移動することが検出されたとき（ステップＳ３１：Ｙ）、該隣りのポリゴンとの交点を求めるための直線を作成する（ステップＳ３２）。この直線は、例えば図８で説明した直線ＬＮに相当する。即ち、移動体オブジェクトの現在位置から移動ベクトルで移動した位置を起点に、移動先のポリゴンの法線ベクトルと、該法線ベクトルの反転ベクトルとにより、直線ＬＮを生成する。
【０１６１】
そして、マッピング位置算出部１１４は、ステップＳ３２で求めた直線ＬＮと、移動先のポリゴンとの交差点を求める（ステップＳ３３）。
【０１６２】
次に、この移動先のポリゴンを特定するポリゴン番号を、当該移動体オブジェクトがマッピングされるポリゴンとして、マッピング情報記憶部１７４に記憶されるマッピング情報を更新し（ステップＳ３４）、一連の処理を終了する（エンド）。
【０１６３】
ステップＳ３１において、移動検出部１１２により、隣りのポリゴンに移動しないことが検出されたとき（ステップＳ３１：Ｎ）、当該移動体オブジェクトが複数のポリゴンにより構成されるマップの外に移動するか否かを検出する（ステップＳ３５）。
【０１６４】
そして、マップの外に移動すると検出されたとき（ステップＳ３５：Ｙ）、図９に示したように、現在のポリゴン（第１のポリゴン）の重心位置を求める（ステップＳ３６）。
【０１６５】
次に、ステップＳ３６で求めた重心位置への移動ベクトルを生成し（ステップＳ３７）、この移動ベクトルにより移動する予定のポリゴンを探索する（ステップＳ３８）。ステップＳ３８におけるポリゴンの探索は、ステップＳ３０におけるポリゴンの探索と同様の方法で実現できる。
【０１６６】
その結果、隣りのポリゴンに移動することが検出されたとき（ステップＳ３９：Ｙ）、該隣りのポリゴンとの交点を求めるための直線を作成する（ステップＳ４０）。この直線は、例ステップＳ３２と同様の方法で求められる。
【０１６７】
そして、マッピング位置算出部１１４は、ステップＳ４０で求めた直線ＬＮと、移動先のポリゴンとの交差点を求める（ステップＳ４１）。
【０１６８】
次に、この移動先のポリゴンを特定するポリゴン番号を、当該移動体オブジェクトがマッピングされるポリゴンとして、マッピング情報記憶部１７４に記憶されるマッピング情報を更新し（ステップＳ４２）、一連の処理を終了する（エンド）。
【０１６９】
一方、ステップＳ３９において、移動検出部１１２により、隣りのポリゴンに移動しないことが検出されたとき（ステップＳ３９：Ｎ）、当該移動体オブジェクトが複数のポリゴンにより構成されるマップの外に移動するか否かを検出する（ステップＳ４３）。
【０１７０】
そして、マップの外に移動すると検出されたとき（ステップＳ４３：Ｙ）、ステップＳ３６で求められた当該ポリゴンの重心位置への移動ベクトルを生成し（ステップＳ４４）、一連の処理を終了する（エンド）。
【０１７１】
一方、ステップＳ４３において、マップの外に移動しないと検出されたとき（ステップＳ４３：Ｎ）、移動前のポリゴンと移動先のポリゴンが同一であると判断する。そして、移動前の現在のポリゴンとの交点を求めるための直線を作成する（ステップＳ４５）。この直線ＬＮは、例えば図８で説明した方法と同様に生成できる。
【０１７２】
そして、マッピング位置算出部１１４は、ステップＳ４５で求めた直線ＬＮと、現在のポリゴンとの交差点を求め（ステップＳ４６）、一連の処理を終了する（エンド）。
【０１７３】
またステップＳ３５において、マップの外に移動しないと検出されたとき（ステップＳ３５：Ｎ）、ステップＳ４３と同様に、移動前のポリゴンと移動先のポリゴンが同一であると判断する。そして、移動前の現在のポリゴンとの交点を求めるための直線を作成する（ステップＳ４７）。この直線は、ステップＳ４５と同様の方法で生成できる。
【０１７４】
そして、マッピング位置算出部１１４は、ステップＳ４７で求めた直線ＬＮと、現在のポリゴンとの交差点を求め（ステップＳ４８）、一連の処理を終了する（エンド）。
【０１７５】
ステップＳ３４、ステップＳ４２では、移動先のポリゴン上でマッピングすべき位置が求められると共に、当該移動体オブジェクトのマッピング情報が更新される。そして、図１７のステップＳ１６で説明したように、移動先のポリゴンの法線ベクトルと、移動ベクトルと、ステップＳ３３又はステップＳ４１で求められたマッピング位置とを用いて座標変換を行うためのマトリクスが生成される。
【０１７６】
ステップＳ４４でマップの外に移動すると判別されて、移動ベクトルが求められると、図１７のステップＳ１６で説明したように、現在のポリゴンの法線ベクトルと、ステップＳ４４で求められた移動ベクトルと、ステップＳ３６で求められた重心位置（マッピング位置）とを用いて座標変換を行うためのマトリクスが生成される。
【０１７７】
ステップＳ４６、ステップＳ４８では、現在のポリゴン上でマッピングすべき位置が求められる。そして、図１７のステップＳ１６で説明したように、現在のポリゴンの法線ベクトルと、移動ベクトルと、ステップＳ４６又はステップＳ４８で求められたマッピング位置とを用いて座標変換を行うためのマトリクスが生成される。
【０１７８】
以上のようにして求められたマトリクスを用いて移動体オブジェクトを座標変換することで、より少ない処理負荷で起伏に富んだ地形上をマッピングすることができる。
【０１７９】
４．ハードウェア構成
図２０に本実施形態を実現できるハードウェア構成の例を示す。
【０１８０】
メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介して転送されたプログラム、或いはＲＯＭ９５０に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。
【０１８１】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１８２】
ジオメトリプロセッサ９０４は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ９００で動作するプログラムが、その処理をジオメトリプロセッサ９０４に指示する。
【０１８３】
データ伸張プロセッサ９０６は、圧縮された画像データや音データのデコード（伸長）処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、ＭＰＥＧ方式等で圧縮された動画像を表示できる。
【０１８４】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を高速に実行する。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０を利用して、描画データを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると描画プロセッサ９１０は、描画データやテクスチャに基づいて、Ｚバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ９２２に描画する。また描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。そして１フレーム分の画像がフレームバッファ９２２に書き込まれると、その画像はディスプレイ９１２に表示される。
【０１８５】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などのゲーム音を生成し、スピーカ９３２を介して出力する。ゲームコントローラ９４２からの操作データや、メモリカード９４４からのセーブデータ、個人データは、シリアルインターフェース９４０を介して入力される。
【０１８６】
ＲＯＭ９５０にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されることになる。なおＲＯＭ９５０の代わりにハードディスクを利用してもよい。ＲＡＭ９６０は各種プロセッサの作業領域となる。ＤＭＡコントローラ９７０は、メインプロセッサを介さずに、メモリ（ＲＡＭ，ＶＲＡＭ，ＲＯＭやＩ／Ｏ装置間あるいは各種プロセッサ間でのデータ転送を制御する。ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２にアクセスする処理を行う。
【０１８７】
通信インターフェース９９０は、ネットワークを介して外部との間でデータ転送を行う。通信インターフェース９９０に接続されるネットワークとしては、通信回線（アナログ電話回線、ＩＳＤＮ）、高速シリアルバスなどがある。
【０１８８】
なお本実施形態の各部（各手段）の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１８９】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０等は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０１９０】
図２１（Ａ）に業務用ゲームシステムへの本実施形態の適用例を示す。プレーヤは、ディスプレイ１１００上に映し出されたゲーム画像を見ながら、操作部１１０２を操作してゲームを楽しむ。内蔵されるシステムボード１１０６にはプロセッサ、メモリなどが実装される。本実施形態の各部の処理を実現するためのプログラム（データ）は、システムボード１１０６上の情報記憶媒体であるメモリ１１０８に格納される。以下、このプログラムを格納プログラムと呼ぶ。
【０１９１】
図２１（Ｂ）に家庭用ゲームシステムへの本実施形態の適用例を示す。この場合、上記格納プログラム（格納情報）は、本体システムに着脱自在な情報記憶媒体であるＣＤ１２０６、或いはメモリカード１２０８、１２０９に格納される。
【０１９２】
図２１（Ｃ）に、ホスト装置１３００と、このホスト装置１３００とネットワーク１３０２を介して接続される端末１３０４-１〜１３０４-n（ゲーム機、携帯電話）とを含むシステムへの本実施形態の適用例を示す。この場合、上記格納プログラムは、ホスト装置１３００の情報記憶媒体１３０６（ハードディスク、磁気テープ装置等）に格納される。また本実施形態の各部の処理をホスト装置と端末の分散処理で実現してもよい。
【０１９３】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０１９４】
例えば、明細書又は図面中の記載において広義な用語として引用された用語は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
【０１９５】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１９６】
また、本発明は種々のゲーム（格闘ゲーム、競争ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、ロールプレイングゲーム等）に適用できる。
【０１９７】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々の画像生成システム（ゲームシステム）に適用できる。
【図面の簡単な説明】
【０１９８】
【図１】本実施形態の画像生成システムの機能ブロック図の例。
【図２】本実施形態のマッピング位置の算出処理の手法の説明図。
【図３】本実施形態における複数の移動体オブジェクトによる群れの画像の一例を示す図。
【図４】本実施形態における複数の移動体オブジェクトによる群れの画像の他の例を示す図。
【図５】本実施形態におけるマッピング情報の一例を示す図。
【図６】本実施形態における地形を構成するポリゴンを模式的に示す図。
【図７】本実施形態における移動検出処理の例を模式的に示す説明図。
【図８】本実施形態におけるマッピング位置の算出処理を模式的に示す説明図。
【図９】ポリゴン上の移動体オブジェクトが、地形を構成するマップの外部に移動することが検出されたときの移動制御の例を模式的に示す説明図。
【図１０】本実施形態における衝突回避処理の説明図。
【図１１】本実施形態における衝突回避処理の他の例の説明図。
【図１２】本実施形態における衝突回避処理の更に他の例の説明図。
【図１３】移動体オブジェクトの特性に応じて衝突判定を行う範囲を異ならせる場合の説明図。
【図１４】図１４（Ａ）〜（Ｃ）は、移動先のポリゴンの状況に応じた移動制御の例を示す図。
【図１５】図１５（Ａ）〜（Ｃ）は、移動先のポリゴンの状況に応じた移動制御の例を示す図。
【図１６】移動体オブジェクトの特性情報の一例を示す図。
【図１７】本実施形態の移動制御処理の一例を示すフローチャート。
【図１８】本実施形態の衝突回避処理の一例を示すフローチャート。
【図１９】本実施形態のマッピング位置の算出処理の一例を示すフローチャート。
【図２０】ハードウェア構成例を示す図。
【図２１】図２１（Ａ）、（Ｂ）、（Ｃ）は種々の形態のシステム例の図。
【符号の説明】
【０１９９】
１００  処理部、１１０  移動体オブジェクト制御部、１１２  移動検出部、
１１４  マッピング位置算出部、１１６  衝突回避処理部、
１２０  画像生成部、１３０  音生成部、１６０  操作部、
１７０  記憶部、１７２  オブジェクト特性記憶部、
１７４  マッピング情報記憶部、１７６  プリミティブ面特性記憶部、
１７８  描画バッファ、１８０  情報記憶媒体、１９０  表示部、
１９２  音出力部、１９４  携帯型情報記憶装置、１９６  通信部、
ＭＯＢＪ＿ｆ、ＭＯＢＪ＿ｆ＋１、ＭＯＢＪ＿ｆ＋２  移動体オブジェクト、
ＭＶ＿ｆ、ＭＶ＿ｆ＋１、ＭＶ＿ｆ＋２  移動ベクトル、
ＮＶ１、ＮＶ２、ＮＶ３  法線ベクトル、
Ｐ−ｆ、Ｐ＿ｆ＋１、Ｐ＿ｆ＋２  マッピング位置、
ＰＯＬＹ１〜ＰＯＬＹ３  第１〜第３のポリゴン
【図１】
2009251887.tif 000003
【図２】
2009251887.tif 000004
【図３】
2009251887.tif 000005
【図４】
2009251887.tif 000006
【図５】
2009251887.tif 000007
【図６】
2009251887.tif 000008
【図７】
2009251887.tif 000009
【図８】
2009251887.tif 000010
【図９】
2009251887.tif 000011
【図１０】
2009251887.tif 000012
【図１１】
2009251887.tif 000013
【図１２】
2009251887.tif 000014
【図１３】
2009251887.tif 000015
【図１４】
2009251887.tif 000016
【図１５】
2009251887.tif 000017
【図１６】
2009251887.tif 000018
【図１７】
2009251887.tif 000019
【図１８】
2009251887.tif 000020
【図１９】
2009251887.tif 000021
【図２０】
2009251887.tif 000022
【図２１】
2009251887.tif 000023