(57)【要約】【課題】群の制御において群を構成する個体の移動制御をより高速化する。【解決手段】仮想空間を複数のエリア（グリッドＧ）に分割し、群Ｆａを構成する各個体（ネズミオブジェクトＭ）を何れかのエリアに対応付け、群Ｆａを構成する多数の個体を常にエリアを単位としたグループとして把握できる状態にする。一の個体を移動制御する場合、当該一の個体が位置するエリアに基づいて他のエリアの中から特定のエリアを選択し、選択した特定のエリアに位置する他の個体（他のネズミオブジェクトＭ）を干渉処理の対象とする。【選択図】    図８
2004178412.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに類する装置に、仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成させるための制御情報であって、
前記仮想空間を複数のエリアに分割するエリア分割手段、
前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段、
前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアに基づいて、前記複数のエリアの中から特定エリアを選択する選択手段、
前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段、
として前記装置を機能させるための情報を含むことを特徴とする制御情報。
【請求項２】
請求項１に記載の制御情報であって、
前記選択手段が、前記一の個体が位置するエリア、及び当該一の個体の進行方向に基づいて、特定エリアを選択するための情報を含むことを特徴とする制御情報。
【請求項３】
請求項１又は２に記載の制御情報であって、
前記選択手段が、前記一の個体が位置するエリア内の位置に基づいて特定エリアを選択するための情報を含むことを特徴とする制御情報。
【請求項４】
請求項３に記載の制御情報であって、
前記一の個体が位置するエリアを更に複数のサブエリアに分割するサブエリア分割手段として前記装置を機能させるための情報と、
前記選択手段が、前記一の個体が位置するエリアに代えて、当該一の個体が位置するサブエリアに基づいて、特定エリアを選択するための情報と、
を含むことを特徴とする制御情報。
【請求項５】
請求項４に記載の制御情報であって、
前記選択手段が、特定エリアとして、前記一の個体が位置するサブエリアを含むエリアを選択する場合には、当該エリアに含まれるサブエリアの中から特定サブエリアを選択するための情報と、
前記個体移動制御手段が、前記一の個体と、前記特定サブエリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御するための情報と、
を含むことを特徴とする制御情報。
【請求項６】
請求項１に記載の制御情報であって、
前記一の個体が位置するエリアを、内側サブエリアと外側サブエリアとの少なくとも２つのサブエリアに分割するサブエリア分割手段として前記装置を機能させるための情報と、
前記選択手段が、前記一の個体が位置するサブエリアが内側サブエリアの場合には、当該一の個体が位置するエリアを特定エリアとするための情報と、
を含むことを特徴とする制御情報。
【請求項７】
請求項６に記載の制御情報であって、
前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアであり、尚かつ当該一の個体の進行方向が当該一の個体が位置するエリアの内方に向かう方向の場合には、当該一の個体が位置するエリアを特定エリアとするための情報を含むことを特徴とする制御情報。
【請求項８】
請求項６に記載の制御情報であって、
前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアの場合には、当該一の個体が位置するエリアに隣接するエリアを特定エリアとするための情報を含むことを特徴とする制御情報。
【請求項９】
請求項６に記載の制御情報であって、
前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアであり、尚かつ当該一の個体の進行方向が当該一の個体が位置するエリアの外方に向かう方向の場合には、当該一の個体が位置するエリアに隣接するエリアを特定エリアとするための情報を含むことを特徴とする制御情報。
【請求項１０】
請求項１〜９のいずれか一項に記載の制御情報であって、
前記仮想空間は、所定の地平面の地平面座標系と、前記地平面に対する高さを表す高さ情報とに基づく空間座標系により、前記仮想空間内の任意の位置を定義することができる空間であり、
前記各個体は前記仮想空間内の地表上を移動し、
前記エリア分割手段が、前記地平面座標系に基づいて前記仮想空間を分割するための情報と、
前記個体移動制御手段が、前記地平面座標系に基づき前記干渉処理を行うための情報と、
を含むことを特徴とする制御情報。
【請求項１１】
請求項１０に記載の制御情報であって、
前記地平面に２次元格子を配設するとともに、配設した２次元格子と、前記２次元格子を構成する各格子点の高さ情報とに基づいて前記各格子点の位置座標を決定し、各格子点の位置座標に基づくプリミティブ面を形成することによって、前記仮想空間内に地表を形成する地表形成手段として前記装置を機能させるための情報と、
前記エリア分割手段が、前記２次元格子に沿って前記仮想空間を分割するための情報と、
前記個体移動制御手段が、前記一の個体が位置するエリアの地表を形成するプリミティブ面に基づいて当該一の個体の高さ情報を演算するための情報と、
を含むことを特徴とする制御情報。
【請求項１２】
請求項１１に記載の制御情報であって、
前記個体移動制御手段が、前記一の個体が位置するエリアの地表を形成するプリミティブ面の法線を演算し、演算した法線の前記地平面座標系成分に基づいて前記一の個体の移動制御補正を行うための情報を含むことを特徴とする制御情報。
【請求項１３】
請求項１〜１２のいずれか一項に記載の制御情報であって、
前記画像を生成する基準となる視点を設定する視点設定手段として前記装置を機能させるための情報と、
前記個体移動制御手段が、前記一の個体と前記視点間の距離に応じて前記干渉処理を実行するか否か判定するための情報と、
を含むことを特徴とする制御情報。
【請求項１４】
請求項１〜１３のいずれか一項に記載の制御情報を記憶した前記装置による読み取り可能な情報記憶媒体。
【請求項１５】
仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成する画像生成装置であって、
前記仮想空間を複数のエリアに分割するエリア分割手段と、
前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段と、
前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアに基づいて、前記複数のエリアの中から特定エリアを選択する選択手段と、
前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段と、
を備えたことを特徴とする画像生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータに類する装置に、仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成させるための制御情報等に関する。
【０００２】
【従来の技術】
ゲーム等のコンピュータグラフィックス（ＣＧ）において、昆虫や鳥、兵隊などのように複数の個体が集まってなる「群」の様子を表現する技術を群制御という。
【０００３】
群制御では、群を構成する各個体間で干渉が起きないように各個体を移動制御することが重要である。例えば、一の個体を移動制御する場合、他の個体と干渉するか否かを判定し、干渉すると判定される場合には当該他の個体を回避する方向に移動させる。これを干渉処理と言う。
しかし、群には多数の個体が存在し、一の個体の移動制御をする際に、全ての他の個体（他個体）を対象として一つ一つ干渉処理を実行することは、処理負荷が指数関数的に増大するために非現実的である。その為、従来、干渉処理にかかる処理負荷を軽減するために様々な工夫がされている。
【０００４】
例えば、所定の有視界レンジに位置する他の個体とのみ干渉処理を実行するものが有る。より具体的には、移動制御の対象となっている個体を中心に近距離・中距離・遠距離の有視野レンジを設定する。そして、近距離の有視野レンジに仲間（同群の他個体）がいる場合には衝突回避のための反発力を設定し、この反発力を重量（個体の設定重量値）で除して第１の加速度を算出する。中距離の有視野レンジに仲間がいる場合には、仲間と同じ方向に移動するために仲間の加速度の平均値を第２の加速度とする。遠距離の有視野レンジに仲間がいる場合は、見通しを確保する為に仲間から離れるための反発力を設定し、反発力を重量で除して第３の加速度とする。そして、目標点に向かう加速度と第１〜第３の加速度とを、３次元仮想空間上のＸ，Ｙ，Ｚ成分毎に加算して総和平均値を算出する。この総和平均に基づいて当該個体の位置座標を演算する。このように、干渉処理の対象を特定の有視界レンジに位置する他の個体に限定することによって、干渉処理に掛かる処理負荷を軽減している（例えば、特許文献１参照；全請求項に対応）。
【０００５】
また、３次元仮想空間における干渉処理を２次元座標上におきかえて実行することによって処理負荷を軽減するものも有る。より具体的には、移動制御対象となっている個体の進行方向を３次元座標空間のＺ軸方向とするＸＹ平面上に、当該個体と他の個体とを平行投影する。そして、このＸＹ平面に投影された仮想空間中の実際の大きさで個体と他の個体との干渉処理を実行し、他個体と干渉しないように個体の移動経路を決定する（例えば、特許文献２；請求項１０〜請求項１４に対応）。
【０００６】
【特許文献１】
特許第３１６３４９６号公報
【特許文献２】
特許第３００５２４６号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、有視界レンジで干渉処理の対象となる他の個体を特定する場合でも、特定の有視界レンジ（前述の場合近距離有視界レンジ）に何れの他個体が含まれるかを、やはり全ての他個体について判定する必要があり処理負荷の削減には限界があった。また、ＸＹ平面に投影する場合であっても、全ての他個体を投影する必要があるために同様に処理負荷の削減に限界がある。
【０００８】
本発明は上記課題を鑑みてなされたものであり、その目的とするところは、群制御における干渉処理に掛かる処理負荷を軽減し、群制御を高速化することである。
【０００９】
【課題を解決するための手段】
上記課題を解決するために、請求項１に記載の発明は、コンピュータに類する装置に、仮想空間（ゲーム空間）内に配置された複数の個体（例えば、図８のネズミオブジェクトＭ１〜Ｍ１０）で構成される群（例えば、図８の群Ｆａ）について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成させるための制御情報であって、
前記仮想空間を複数のエリア（例えば、図８のグリッドＧ１〜Ｇ９）に分割するエリア分割手段（例えば、図１２のゲーム演算部２２、グリッド管理部２２３、記憶部７０、図１５のグリッド管理情報７３７）、前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段（例えば、図１２のグリッド管理部２２３、記憶部７０、図１５のグリッド管理情報７３７）、前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアに基づいて、前記複数のエリアの中から特定エリアを選択する選択手段（例えば、図１２のゲーム演算部２２、図１７のステップＳ２２０〜Ｓ２２６）、前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段（例えば、図１２のゲーム演算部２２、ベクトル演算部２２１、図１７のステップＳ２２８〜Ｓ２３２、図１８のＳ２４２〜Ｓ２５８）として前記装置を機能させるための情報を含むことを特徴とする。
【００１０】
また、請求項１５に記載の発明は、仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成する画像生成装置であって、前記仮想空間を複数のエリアに分割するエリア分割手段と、前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段と、前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアに基づいて、前記複数のエリアの中から特定エリアを選択する選択手段と、前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段とを備えたことを特徴とする。
【００１１】
ここで言う「エリア」とは、仮想空間中を限定する範囲であって、個体の移動特性に応じて適宜設定される。例えば、個体が主に地表面上を移動する動物などの設定である場合には、エリアは仮想空間を２次元的に分割する構成とする。そして、その形状は例えば格子状やハニカム（六角形）形状、地表形状に則した多角形などとしても良い。また、個体が空中や水中などを３次元的に移動する鳥や魚・昆虫などの設定である場合には、仮想空間を３次元的に分割する構成とし、その形状は例えば立方体や多面立体などであっても良い。
【００１２】
干渉処理とは、移動制御処理の対象となっている一の個体に近接する他の個体を選択し、個体間の干渉を回避するように個体を移動させる処理である。より具体的には、例えば一の個体に対して他の個体が所定距離以内に近接する場合には、干渉を回避するために当該一の個体を他の個体より離れるように移動制御する事である。
【００１３】
請求項１又は１５に記載の発明によれば、仮想空間を複数のエリアに分割し、群を構成する各個体を何れかのエリアに対応付けることによって、多数の個体を常にエリアを単位とした幾つかのグループとして把握できる状態にできる。これにより、一の個体が位置するエリアを判定し、判定されたエリアと所定の位置関係に有る他のエリアを特定エリアとして選択することによって、干渉処理を行う他の個体数を容易に絞り込むことができる。例えば、一の個体が位置するエリアの周囲に隣接する他のエリアを特定エリアとするならば、当該個体より離れた遠方の他の個体を干渉処理の対象外とし、周囲の比較的近距離に位置する他の個体のみを即座に選択することができることになる。
【００１４】
この過程には、全ての他の個体を対象に一の個体との距離を算出して一の個体に影響を与え得る距離の他の個体を選択するといった手間の掛かる処理が無い。従って、一の個体の移動制御に掛かる処理負荷、特に当該一の個体の行動に影響を及ぼす他の個体を選択する処理に掛かる負荷を軽減し、個体の移動制御処理を高速化することができる。
【００１５】
尚、エリアの大きさは個体の大きさに応じて適宜設定可能であるが、群全体が１つのエリアに含まれるようでは群を構成する個体がグループ分けされなくなり、他の個体を選択する処理負荷を低減できなくなる。群を構成する個体が複数のエリアに分かれ、比較的小数の個体が１つのグループとなり得る程度に、個体の大きさや個体間の適当とされる距離、群の規模などに応じてエリアの大きさを適宜設定する。
また、ここで言う「制御情報」とは、ゲーム装置等の電子計算機（コンピュータ）による群制御処理の用に供する、プログラムに準じた情報の意である。
【００１６】
特定エリアの選択については、請求項２に記載の発明のように、請求項１に記載の制御情報であって、前記選択手段が、前記一の個体が位置するエリア、及び当該一の個体の進行方向（例えば、図２４、図２５の合成ベクトルＶａ’）に基づいて、特定エリアを選択するための情報を含むこととしても良い。
【００１７】
例えば、個体が動物など一定の視界を有するものに設定されている場合、一の個体の視界に入り得る他の個体のみを干渉処理の対象とするべきである。
【００１８】
請求項２に記載の発明によれば、当該一の個体の進行方向に基づいて、特定エリアを選択することができる。例えば、進行方向およびその左右のエリアを特定エリアとして選択し、反対に視界に入らない進行方向の逆向きのエリアを特定エリアに含めないことができる。これによって、個体の視界に入る他の個体を干渉処理の対象に選択し、視界に入らない他の個体を対象外とすることができる。
また、特定エリアをさらに限定することができるため、干渉処理の対象となる他の個体の数を削減し、処理負荷をより軽減することができる。
【００１９】
また特定エリアの選択については、請求項３に記載の発明のように、請求項１又は２に記載の制御情報であって、前記選択手段が、前記一の個体が位置するエリア内の位置に基づいて特定エリアを選択するための情報を含むこととしても良い。
【００２０】
請求項３に記載の発明によれば、個体のエリア内における位置に基づいて特定エリアを選択できる。
例えば、一の個体がエリアの右端に位置する場合には次のような処理を実現できる。即ち、個体が位置するエリアの右に隣接するエリアを特定エリアに含め、左に隣接するエリアを特定エリアに含めないことができる。これにより、右に隣接するエリアに位置する他の個体は干渉処理の対象となり、左に隣接するエリアに位置する他の個体は干渉処理の対象とはならない。左に位置するエリアに位置する他の個体は、一の個体から遠く離れており干渉処理の対象として不適切だからである。この場合、請求項３に記載の発明によれば特定エリアをより適切に選択し、干渉処理の対象となる他の個体の数を削減して処理負荷を軽減できる。
【００２１】
また、個体のエリア内の位置に基づいて特定エリアを選択する場合には、請求項４に記載の発明のように、請求項３に記載の制御情報であって、前記一の個体が位置するエリアを更に複数のサブエリア（例えば、図８のサブグリッドＨ）に分割するサブエリア分割手段（例えば、図１２のゲーム演算部２２）として前記装置を機能させるための情報と、前記選択手段が、前記一の個体が位置するエリアに代えて、当該一の個体が位置するサブエリアに基づいて、特定エリアを選択するための情報とを含むこととしても良い。
【００２２】
請求項４に記載の発明によれば、エリア内に更に小範囲のサブエリアを設定することによって、個体のエリア内の位置をサブエリア単位で扱うことができる。
従って、一の個体が位置するサブエリアと選択する特定エリアとの関係を予め設定することによって、移動制御対象の一の個体が何れのサブエリアに位置するかを判定するだけで簡単に特定エリアを選択し、干渉処理の対象とする他の個体を速やかに選択できる。
【００２３】
また更に、請求項５に記載の発明のように、請求項４に記載の制御情報であって、前記選択手段が、特定エリアとして、前記一の個体が位置するサブエリアを含むエリアを選択する場合には、当該エリアに含まれるサブエリアの中から特定サブエリアを選択するための情報と、前記個体移動制御手段が、前記一の個体と、前記特定サブエリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御するための情報と、を含むこととしても良い。
【００２４】
請求項５に記載の発明によれば、前記一の個体が位置するサブエリアを含むエリアの中から特定サブエリアを選択し、この特定サブエリアに位置する他の個体を干渉処理の対象とすることにより、一の個体と同じエリアに他の個体が複数有る場合でも、速やかに干渉処理の対象とする他の個体を選択できる。
【００２５】
また、同様にエリア内にサブエリアを設ける構成として、請求項６に記載の発明は、請求項１に記載の制御情報であって、前記一の個体が位置するエリアを、内側サブエリアと外側サブエリアとの少なくとも２つのサブエリアに分割するサブエリア分割手段（例えば、図１２のゲーム演算部２２、グリッド管理部２２３、グリッド管理情報７３７）として前記装置を機能させるための情報と、前記選択手段が、前記一の個体が位置するサブエリアが内側サブエリアの場合には、当該一の個体が位置するエリアを特定エリアとするための情報とを含むことを特徴とする。
【００２６】
外側サブエリアとは、エリアの境界に沿ってその内周に沿って設けられる範囲であり、内側サブエリアは外周を外側サブエリアによって囲まれる範囲であってエリアのほぼ中央に設けられる。
【００２７】
請求項６に記載の発明によれば、請求項１と同様の効果を奏するとともに、一の個体が内側サブエリアに位置する場合には、同一のエリアに位置する他の個体を対象とする。これによって、干渉処理の対象となる他の個体を選択する処理をより簡単なものにして高速化を図ることができる。
【００２８】
更に、請求項７に記載の発明のように、請求項６に記載の制御情報であって、前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアであり、尚かつ当該一の個体の進行方向が当該一の個体が位置するエリアの内方に向かう方向の場合には、当該一の個体が位置するエリアを特定エリアとするための情報を含むこととしても良い。
【００２９】
この場合、移動制御の対象となっている一の個体は、外側サブエリアに位置するが、進行方向が当該エリアの内方に向かっているので、当該一の個体が位置するエリアを特定エリアとする。これによって、当該エリアに隣接する他のエリアに位置する他の個体の影響は受けないものとすることができる。従って、干渉処理の対象となる他の個体を選択する処理をより簡単なものにして高速化を図ることができる。
【００３０】
また、請求項８に記載の発明のように、請求項６に記載の制御情報であって、前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアの場合には、当該一の個体が位置するエリアに隣接するエリアを特定エリアとするための情報を含むこととしても良い。
【００３１】
また、請求項９に記載の発明のように、請求項６に記載の制御情報であって、前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアであり、尚かつ当該一の個体の進行方向が当該一の個体が位置するエリアの外方に向かう方向の場合には、当該一の個体が位置するエリアに隣接するエリアを特定エリアとするための情報を含むこととしても良い。
【００３２】
請求項８又は９に記載の発明によれば、当該一の個体はエリアの外側に位置するので、隣接するエリアに位置する他の個体との衝突や干渉を回避する必要があると判断し、当該一の個体が位置するエリアに隣接するエリアを特定エリアとする。このため、他の個体を選択する処理をより簡単なものにして高速化を図ることができる。
【００３３】
請求項１０に記載の発明は、請求項１〜９の何れか一項に記載の制御情報であって、前記仮想空間は、所定の地平面の地平面座標系（例えば図７のＸＺ座標系）と、前記地平面に対する高さを表す高さ情報とに基づく空間座標系（例えば図７のＸＹＺ座標系）により、前記仮想空間内の任意の位置を定義することができる空間であり、前記各個体は前記仮想空間内の地表上（例えば、図７の地表面Ｂ）を移動し、前記エリア分割手段が、前記地平面座標系に基づいて前記仮想空間を分割するための情報と、前記個体移動制御手段が、前記地平面座標系に基づき前記干渉処理を行うための情報と、を含むことを特徴とする。
【００３４】
地平面座標系は、２次元の成分で位置を定義できる２次元平面座標系であり、仮想空間は地平面からの高さ情報を加えた３次元の成分で位置を定義できる３次元座標系である。
請求項１０に記載の発明によれば、請求項１〜９の何れか一項に記載の発明と同様の効果を奏するとともに、エリアは地平面座標系に基づいて２次元的に分割・設定され、干渉処理は地平面座標系に基づいて２次元的に実行される。干渉処理によって、個体は地平面座標系で２次元的に干渉しないように制御される。個体は地表面を移動する設定なので、地平面座標系で個体間の干渉が起きないように制御できれば、地表面の高さ情報を与えることによって３次元的にも干渉が起きない状態にできる。従って、個体のエリアへの対応づけや干渉処理を地平面座標系の２次元成分で演算することによって、処理負荷を更に軽減できる。
【００３５】
請求項１１に記載の発明のように、請求項１０に記載の制御情報であって、前記地平面に２次元格子を配設するとともに、配設した２次元格子と、前記２次元格子を構成する各格子点の高さ情報とに基づいて前記各格子点の位置座標を決定し、各格子点の位置座標に基づくプリミティブ面（例えば、図７のポリゴン面Ｐ）を形成することによって、前記仮想空間内に地表を形成する地表形成手段（例えば、図１２のゲーム演算部２２、図１６のステップＳ１０２）として前記装置を機能させるための情報と、前記エリア分割手段が、前記２次元格子に沿って前記仮想空間を分割するための情報と、前記個体移動制御手段が、前記一の個体が位置するエリアの地表を形成するプリミティブ面に基づいて当該一の個体の高さ情報を演算するための情報とを含むこととしても良い。
【００３６】
請求項１１に記載の発明によれば、更に個体が移動する地表面は、地平面座標系の位置座標と地平面からの高さ情報とによって定義される格子点によって形成されるプリミティブ面から形成され、個体の高さ情報は地表を形成するプリミティブ面の高さ情報から求められる。エリアはプリミティプ面の格子点に沿って分割されるので、個体の位置するプリミティブ面は当該個体が対応するエリアに対応するプリミティブ面の中に含まれることになる。
従って、個体が位置するプリミティブ面を限定された中から検索すれば良く、個体の高さ情報の算出にかかる処理負荷を軽減することができる。
【００３７】
そして更に、請求項１２に記載の発明のように、請求項１１に記載の制御情報であって、前記個体移動制御手段が、前記一の個体が位置するエリアの地表を形成するプリミティブ面の法線（例えば、図１１の法線ベクトルＶＮ）を演算し、演算した法線の前記地平面座標系成分（例えば、図１１のベクトルＶｗ−２）に基づいて前記一の個体の移動制御補正を行うための情報を含むことによって、簡単に地表の傾斜などの地形条件に基づく個体の移動制御を実施することができる。
【００３８】
また、更なる処理の高速化のために、請求項１３に記載の発明のように、請求項１〜１２のいずれか一項に記載の制御情報であって、前記画像を生成する基準となる視点を設定する視点設定手段（例えば、図１２のゲーム演算部２２、図１６のステップＳ１０２）として前記装置を機能させるための情報と、前記個体移動制御手段が、前記一の個体と前記視点間の距離に応じて前記干渉処理を実行するか否か判定するための情報と、を含むこととしても良い。
【００３９】
移動制御の対象となっている一の個体が、視点より遠く離れた場合には、画面に表示される個体のサイズが小さくなって、見た目の識別がつきにくくなり干渉処理の効果の有無を見分けることも難しくなる。
請求項１３に記載の発明によれば、請求項１〜１２の何れか一項に記載の発明と同様の効果を奏するとともに、一の個体と視点との距離に応じて干渉処理を適宜省略することによって、処理をより高速化させることができる。尚、干渉処理を実行するか否かの判定における基準は群を構成する個体の大きさや、視点の画角などの条件に応じて適宜設定する。
【００４０】
請求項１４に記載の発明は、請求項１〜１３のいずれか一項に記載の制御情報を記憶した前記装置による読み取り可能な情報記憶媒体である。
【００４１】
請求項１４に記載の発明によれば、記憶されている制御情報を前記装置に読み取らせて演算処理させることによって、前記装置に請求項１〜１３の何れか一項に記載の発明と同様の効果を実現させることができる。
【００４２】
【発明の実施の形態】
〔第１の実施の形態〕
以下、図１〜図２５を参照して、本発明を適用した第１の実施の形態について説明する。第１の実施の形態では、プレーヤがネズミの群を移動操作するゲームを例に挙げて説明する。
尚、群を構成する個体はネズミに限るものではなく適宜設定して構わない。例えば、シミュレーションゲームに登場する騎馬隊や戦車隊に適用し、プレーヤが指揮官となって戦う設定としても良い。また、群を操作するのはプレーヤに限らず、コンピュータが自動制御する設定としても良いのは勿論である。
【００４３】
［構成の説明］
図１は、本発明を適用した業務用ゲーム装置１３００の外観の一例を示す図である。同図に示すように、業務用ゲーム装置１３００は、ゲーム画面を画像表示するディスプレイ１３０２と、ゲームの効果音やＢＧＭを出力するスピーカ１３０４と、前後左右方向を入力するジョイスティック１３０６と、プッシュボタン１３０８と、演算処理によって業務用ゲーム装置１３００を統合的に制御して所与のゲームを実行する制御ユニット１３２０とを備える。
【００４４】
制御ユニット１３２０は、例えばＣＰＵやＭＰＵ、各種ＩＣメモリ、ＡＳＩＣなどによって実現され、ベクトル演算ユニット１３２４を搭載する。ベクトル演算ユニット１３２４とは、ベクトル演算処理用に機能を特化したマイクロプロセッサ等の意味である。
【００４５】
また、制御ユニット１３２０には、業務用ゲーム装置１３００の制御及びゲームの実行に必要なプログラムやデータが格納されたＲＯＭ１３２２を搭載する。制御ユニット１３２０に搭載されるＣＰＵやベクトル演算ユニット１３２４などは、ＲＯＭ１３２２よりプログラムやデータを適宜読み出して演算処理することによって種々の処理を実行する。
【００４６】
プレーヤは、ディスプレイ１３０２に表示されたゲーム画面を見ながらジョイスティック１３０６で群の移動方向を入力し、プッシュボタン１３０８で各種コマンドを入力して群を制御してゲームを楽しむ。
【００４７】
［ゲーム内容の概要説明］
図２は、本実施の形態におけるゲーム内容の概要を説明するための図である。同図に示すように、ゲーム空間には複数のネズミオブジェクトＭ（一つのネズミオブジェクトを指す場合にはネズミオブジェクトＭｎ（ｎは自然数）とする）と、ネズミを捕食する複数のネコオブジェクトＣ（一つのネコオブジェクトを指す場合にはネコオブジェクトＣｌ（ｌは自然数）とする）とが配置される。
ネズミオブジェクトＭは群Ｆａを形成し、群Ｆａには共通の移動目標である仮想ターゲットＴａが設定される。各ネズミオブジェクトＭは、仮想ターゲットＴａに向かうようにそれぞれ個別に移動制御され、その結果として群Ｆａ全体が移動しているように制御される。
【００４８】
本実施の形態では、仮想ターゲットＴａをプレーヤがジョイスティック１３０６で操作して群Ｆａの移動方向を決定する。プレーヤは、自分が操作する群のネズミオブジェクトＭがネコオブジェクトＣに捕食されないように操作しながら群Ｆａを所定の目的地（ゴール地点）に導く。そして、群Ｆａを無事に目的地に到着させることができたならばゲーム終了となる。尚、説明の便宜上、仮想ターゲットＴａを可視状態（旗状のオブジェクト）として説明するが、不可視としても構わない。
【００４９】
［ネズミオブジェクトの移動制御の原理］
図３は、本実施の形態におけるネズミオブジェクトＭの移動制御の原理を説明するための図である。同図に示すように、群Ｆａを構成する一のネズミオブジェクトＭｎは、仮想ターゲットＴａと、同群に属する他のネズミオブジェクトＭｍ（ｍは自然数；ｍ≠ｎ）と、ネコオブジェクトＣとを注目対象とする。注目対象とは、設定上ネズミオブジェクトＭの行動に影響を与える存在を意味する。
【００５０】
ネズミオブジェクトＭｎの移動制御においては、先ず各注目対象までのベクトルを求める。即ち、（１）ネズミオブジェクトＭｎから仮想ターゲットＴａまでのベクトルＶｔと、（２）ネコオブジェクトＣｌまでのベクトルＶｅと、（３）ネズミオブジェクトＭｎから同群に属する他のネズミオブジェクトＭｍまでのベクトルＶｆとを算出する。
【００５１】
そして、算出されたベクトルＶｔ、Ｖｅ、Ｖｆの方向と大きさとを各注目対象との位置関係に応じて変更し、ベクトルＶｔ’、Ｖｅ’、Ｖｆ’とする。このベクトルＶｔ、Ｖｅ、Ｖｆから求められるベクトルＶｔ’、Ｖｅ’、Ｖｆ’は、ゲーム設定上のネズミオブジェクトＭという種族に共通する各注目対象に対する関心の高さや影響力と同様の意義を有し、求心力や回避力として各ネズミオブジェクトＭそれぞれに作用する。
【００５２】
ベクトルＶｔ’、Ｖｅ’、Ｖｆ’を算出したならば、ネズミオブジェクトＭｎの行動の個性を示すパラメータに基づいて、ベクトルＶｔ’、Ｖｅ’、Ｖｆ’をそれぞれ係数ｋｔ、ｋｅ、ｋｆで重み付けして合成ベクトルＶａを算出する。
また、本実施の形態においては、合成ベクトルＶａの算出時にネズミオブジェクトＭｎに影響を与えるゲーム空間の環境の力をベクトルＶｗとして更に合成する。ゲーム空間の環境の力とは、例えば風、水流、床や地面の移動、床や地面の滑り、重力などの地形条件や環境条件に基づく外力を表す。
【００５３】
合成ベクトルＶａを算出したならば、合成ベクトルＶａを更にネズミオブジェクトＭのゲーム設定上の上限速度｜Ｖ｜ｍａｘを超えないように大きさを適正化し、合成ベクトルＶａ’とする。ネズミオブジェクトＭｎは、この合成ベクトルＶａ’に基づいて次の描画フレームにおける移動先の位置座標が算出されて移動制御される。
【００５４】
次に、本実施の形態におけるベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗの具体的な算出方法について説明する。
【００５５】
図４は、ベクトルＶｔ’の算出方法の原理を説明する図である。図４（ａ）に示すように、ベクトルＶｔ’を求める算出方法は、仮想ターゲットＴａを中心とする近距離・中距離・遠距離・遠距離圏外（以下、仮想ターゲット基準近距離、仮想ターゲット基準中距離、仮想ターゲット基準遠距離、仮想ターゲット基準遠距離外と言う。）の４つの距離レンジ毎に設定されている。適用する算出方法は、移動制御の対象となっているネズミオブジェクトＭｎが何れの距離レンジに位置するかによって択一的に選択して決定する。尚、具体的な各距離レンジの大きさ等は適宜設定するものとする。
【００５６】
ネズミオブジェクトＭｎが仮想ターゲット基準近距離に位置する場合（図４（ｂ）の（１））、仮想ターゲットＴａに対して近づき過ぎていると判断し、仮想ターゲットＴａから離れるようにベクトルＶｔの方向を変更する。より具体的には、例えば仮想ターゲットＴａとの距離、或いはベクトルＶｔの大きさが所定値以下である場合、ベクトルＶｔが逆向きに作用するようにマイナスの係数を掛けてベクトルＶｔ’とする。又は所定行列を掛けて方向を反転させるとしても良い。
【００５７】
ネズミオブジェクトＭｎが仮想ターゲット基準中距離に位置する場合、仮想ターゲットＴａの状態に応じて更に条件を細分化して算出方法を設定する。
仮想ターゲットＴａが停止している場合（図４（ｂ）の（２））、ベクトルＶｔに比例してベクトルＶｔ’を算出する。ベクトルＶｔ’は、ネズミオブジェクトＭｎが仮想ターゲットＴａに近づくにつれて小さくなり、ネズミオブジェクトＭｎが停止状態の仮想ターゲットＴａに対して徐々に速度を落としつつ接近するように作用する。
【００５８】
仮想ターゲットＴａが移動している場合は、仮想ターゲットＴａの１フレーム前の移動ベクトルＶｔａｔ−１に比例してベクトルＶｔ’を算出する。ベクトルＶｔ’は、ネズミオブジェクトＭｎが仮想ターゲットＴａと同方向に移動するように作用する。また、仮想ターゲットＴａが移動している場合では、群Ｆａの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達しているか否かで更に条件分けする。
【００５９】
群Ｆａの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達していない場合は（図４（ｂ）の（４））、ネズミオブジェクトＭｎが仮想ターゲットＴａと並走するように係数ｋ７を適当に設定する。
【００６０】
群Ｆａの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達している場合は（図４（ｂ）の（３））、群Ｆａが停止・減速する可能性が有ると判断し、ベクトルＶｔが大きな値を示していても、ベクトルＶｔ’が小さくなるように係数ｋ６を適当に設定する。この場合、ベクトルＶｔ’はネズミオブジェクトＭｎが群Ｆａの停止に備えて減速するように作用する。これによって、群Ｆａが停止直前の状態や減速している状態の際に、前方がつかえてネズミオブジェクトＭｎがそれ以上進めないにもかかわらず、前方のネズミオブジェクトＭｍを無理に押し、その結果、群Ｆａの形態が崩れる事態を回避できる。
【００６１】
尚、群Ｆａの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達している場合に求められるベクトルＶｔ’は、その目的から群Ｆａの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達していない場合の並走時のベクトルＶｔ’より小さい値となるように係数ｋ６を設定する。
【００６２】
ネズミオブジェクトＭｎが仮想ターゲット基準遠距離に位置する場合は、ベクトルＶｔに比例してベクトルＶｔ’を算出する（図４（ｂ）の（６））。従って、ベクトルＶｔ’はネズミオブジェクトＭｎが仮想ターゲットＴａから離れているほど大きくなり、ネズミオブジェクトＭｎが強く仮想ターゲットＴａを追走するように作用する。
ただし、群Ｆａの先頭のネズミオブジェクトが停止している場合は（図４（ｂ）の（５））、ネズミオブジェクトＭｎも停止しなければならないと判断し、ベクトルＶｔ’によって、ネズミオブジェクトＭｎが大きく減速するように見えるように係数ｋ２を適当に設定する。これによって、ネズミオブジェクトＭｎが前方を行く同属の他のネズミオブジェクトＭｍに追突するのを回避しながら、群Ｆａ全体をスムーズに停止させることができる。
【００６３】
ネズミオブジェクトＭｎが仮想ターゲット基準遠距離圏外に位置する場合は、ベクトルＶｔに比例してベクトルＶｔ’を算出する。（図４（ｂ）の（７））。ベクトルＶｔ’は、ネズミオブジェクトＭｎが仮想ターゲットＴａをより強く追走するように作用する。この際、算出されるベクトルＶｔ’の対ベクトルＶｔ比を他の条件において算出される場合に比べて大きくなるように係数ｋ４を適当に設定すると、仮想ターゲットＴａから遠く離れてしまったネズミオブジェクトＭｎが必死に追い着こうとしてより速く移動するように移動制御できる。
【００６４】
この様に、ベクトルＶｔ’はネズミオブジェクトＭｎが群の一員として群Ｆａ全体の移動方向へ向かう行動原理、求心力として作用する。尚、係数ｋ１＝ｋ２＝ｋ３＝ｋ４とし、処理を簡略化するとしても良い。この場合であっても、ベクトルＶｔが仮想ターゲットＴａとの距離に応じた大きさを有するので、基本的にベクトルＶｔ’も仮想ターゲットＴａとの距離に応じた大きさを有することとなり、ベクトルＶｔ’の基本作用としては同様の効果が得られる。
【００６５】
図５は、ベクトルＶｅ’の算出方法の原理を説明するための図である。図５（ａ）に示すように、ベクトルＶｅ’を求める算出方法は、ネズミオブジェクトＭｎを中心とする近距離・遠距離（以下、対ネコ用近距離、対ネコ用遠距離と言う。）の２つの距離レンジ毎に個別に設定される。適用する算出方法は、ネズミオブジェクトＭｎとネコオブジェクトＣｌとの距離に応じて択一的に選択する。
【００６６】
ネコオブジェクトＣが対ネコ用近距離にいる場合（図５（ｂ）の（１））、ベクトルＶｅの方向を反転させてベクトルＶｅ’とする。ベクトルＶｅ’はネコオブジェクトＣｌから逃げるように作用させる。ネコオブジェクトＣが対ネコ用遠距離にいる場合（図５（ｂ）の（２））は、ベクトルＶｅ’の大きさを「０」にする。即ち、まだ敵が十分離れているので危険を感じていないようにする。
このように、ベクトルＶｅ’は敵から逃げる行動原理としての意味を有する。対ネコ用近距離と対ネコ用遠距離の閾値の設定によって、当該ネズミオブジェクトＭｎの危険察知能力や臆病さを表現することが可能になる。
【００６７】
図６は、ベクトルＶｆ’の算出方法の原理を説明するための図である。図６（ａ）に示すように、ベクトルＶｆ’を求める算出方法は、ネズミオブジェクトＭｎを中心とする近距離・中距離・遠距離（以下、ネズミ基準近距離、ネズミ基準中距離、ネズミ基準遠距離と言う。）の３つの距離レンジ毎に個別に設定される。適用する算出方法は、同属の他のネズミオブジェクトＭｍとの距離に応じて択一的に選択され決定される。尚、ベクトルＶｆ’の算出対象とするネズミオブジェクトＭｍの所定数は、群の規模やゲーム内容等に応じて適宜設定する。
【００６８】
ネズミオブジェクトＭｍがネズミ基準近距離にいる場合（図６（ｂ）の（１））、干渉回避のためにネズミオブジェクトＭｍから離れる方向にベクトルＶｆを変更する。より具体的には、ベクトルＶｆにマイナスの係数を掛けて方向を反転してベクトルＶｆ’とする。これによってベクトルＶｆ’は衝突しそうな程に接近しているネズミオブジェクトＭｎとネズミオブジェクトＭｍとを互いに離すように作用する。
【００６９】
ネズミオブジェクトＭｍが、適当な距離と判断されるネズミ基準中距離にいる場合で、且つ群Ｆａの先頭のネズミオブジェクトがネズミ基準中距離（図４（ａ）参照）にいる場合（図６（ｂ）の（２））、群Ｆａが停止・減速する可能性があると判断し、ベクトルＶｆに比例してベクトルＶｆ’を算出する。ベクトルＶｆ’は、同属の他のネズミオブジェクトＭｍに近づくほど小さくなり、ネズミオブジェクトＭｎが徐々に速度を落としながら近づくように作用する。
【００７０】
群Ｆａの先頭のネズミオブジェクトが、ネズミ基準中距離にいない場合は（図６（ｂ）の（３））、近傍に位置するネズミオブジェクトＭｍの１フレーム前の合成ベクトルＶｍｔ−１に基づいて算出する。ベクトルＶｆ’は、ネズミオブジェクトＭｎが同属の他のネズミオブジェクトＭｍと同じ方向に移動するように作用する。
【００７１】
ネズミオブジェクトＭｍがネズミ基準遠距離にいる場合（図６（ｂ）の（４））、ベクトルＶｆの方向はそのままにして、ベクトルＶｆに比例してベクトルＶｆ’を算出する。ベクトルＶｆ’は、ネズミオブジェクトＭｎが仲間（同属の他のネズミオブジェクトＭｍ）から離れるに従って大きくなり、群Ｆａからはぐれそうになった場合に、早く仲間に追いつくように移動速度を速めるように作用する。
【００７２】
このように、ベクトルＶｆ’は仲間（同属の他のネズミオブジェクトＭｍ）までの距離に応じて、近づき過ぎれば離れる方向に、離れすぎれば近づく方向に作用し、ネズミオブジェクトＭが互いに適切な距離を保ち、相互の干渉を回避させる働きをする。尚、ベクトルＶｆ’は、更にネズミオブジェクトＭｍが他の群に属するか否かを条件に、図６（ｂ）の（５）（６）（７）に示すようにベクトルの方向や大きさを適宜変更するなどしても良い。
【００７３】
ここで重要となるのが、ベクトルＶｆ及びＶｆ’を算出する対象とするネズミオブジェクトＭｍの選択である。
群Ｆａに属する全てのネズミオブジェクトＭの中から、ネズミオブジェクトＭｎとＭｍ間の距離に基づいてソートし、近接順に所定数を選択する方法では、ネズミオブジェクトＭの数に比例して指数関数的に処理負荷が多くなってしまう。そこで、本実施の形態では、ネズミオブジェクトＭｎを、その位置座標に基づいてゲーム空間に設定された複数のグリッドＧを単位として登録・管理し、グリッドＧを単位として算出対象となるネズミオブジェクトＭｍを限定し、絞り込む。
【００７４】
図７は、本実施の形態におけるグリッドＧの配置の一例を説明するための斜視概念図である。図中上部で格子状に区切られた範囲が各グリッドＧを示している。
グリッドＧは、ＸＺ座標平面を複数のエリア（範囲）に分割するように予め設定される。本実施の形態では、ネズミオブジェクトＭの幅の１６倍長を有する略正方形とするが、グリッドＧの形状はこれに限定されるものではなく、ハニカム型や複数のポリゴン面Ｐの頂点を結んだ多角形などであっても良く適宜設定して構わない。
【００７５】
ネズミオブジェクトＭｎと地表面Ｂを構成するポリゴン面Ｐは、予め設定される代表点（例えば重心など）の位置座標に基づいて、何れかのグリッドＧの範囲に位置するかが判定され、後述する図１２のグリッド管理情報７３７によって登録・管理される。図７では、ネズミオブジェクトＭから破線で対応づけられた三角形マークを、登録されるグリッドＧ上に示している。
グリッド管理情報７３７では、例えばグリッドＧ毎に登録されている地表面Ｂのポリゴン面Ｐの情報や、風などの環境外力を設定するための情報、登録されているネズミオブジェクトＭｎの識別情報などが格納される。
【００７６】
図８は、本実施の形態におけるベクトルＶｆ及びＶｆ’の算出対象となるネズミオブジェクトＭｍを検索するためのグリッドＧの選択方法を説明するための概念図である。同図及び以下の説明においては、移動制御処理の対象をネズミオブジェクトＭ６としている。
【００７７】
グリッドＧを選択するためには、先ず、ネズミオブジェクトＭ６が位置するグリッドＧ５に複数のサブグリッドＨ（Ｈ１〜Ｈ１６）を設定し、ネズミオブジェクトＭ６が何れのサブグリッドＨに位置するかを判定する。そして、ネズミオブジェクトＭ６が何れのサブグリッドＨに位置するかによって、予め設定される対応関係に基づいてグリッドＧを選択する。
【００７８】
図９は、本実施の形態におけるサブグリッドＨと選択するグリッドＧとの対応関係を示す図である。同図に示すように、ネズミオブジェクトＭｎがグリッドＧ５のサブグリッドＨ１、Ｈ２、Ｈ５の何れかに位置する場合、グリッドＧ５に対してこれらのサブグリッドＨで隣接するグリッドＧ１、Ｇ２、Ｇ４、及びネズミオブジェクトＭｎが位置しているグリッドＧ５が選択される。即ち、ネズミオブジェクトＭｎがグリッドＧ５の左上端部に位置する場合、グリッドＧ３、Ｇ６〜Ｇ９に位置するネズミオブジェクトＭｍは遠くに離れていて視界に入らないと判断し、グリッドＧ３、Ｇ６〜Ｇ９を選択対象外とする。
同様にして、ネズミオブジェクトＭｎがグリッドＧ５のサブグリッドＨ３、Ｈ４、Ｈ８の何れかに位置する場合には、グリッドＧ２、Ｇ３、Ｇ６、Ｇ５を選択する。サブグリッドＨ９、Ｈ１３、Ｈ１４の何れかに位置する場合には、グリッドＧ４、Ｇ７、Ｇ８、Ｇ５を選択する。サブグリッドＨ１２、Ｈ１５、Ｈ１６の何れかに位置する場合には、グリッドＧ６、Ｇ８、Ｇ９、Ｇ５を選択する。そして、グリッドＧ５の内側のサブグリッドＨ６、Ｈ７、Ｈ１０、Ｈ１１の何れかに位置する場合には、グリッドＧ５のみを選択する。
図８の場合、ネズミオブジェクトＭ６はグリッドＧ５のサブグリッドＨ１、Ｈ２、Ｈ５の何れかに位置する。より具体的には、ネズミオブジェクトＭ６の代表点（同図中のネズミオブジェクトＭ６の中心点）がサブグリッドＨ５に位置するため、ネズミオブジェクトＭ６はサブグリッドＨ５に位置することになる。従って、グリッドＧ１、Ｇ２、Ｇ４、Ｇ５が選択される。
【００７９】
グリッドＧが選択されたならば、選択されたグリッドＧに登録されているネズミオブジェクトＭｍを候補とする。そして、候補となったネズミオブジェクトＭｍの内、所定数（例えば２つ）のネズミオブジェクトをネズミオブジェクトＭ６から近接順に選択する。
図８の場合、ネズミオブジェクトＭ１、Ｍ２、Ｍ４、Ｍ５の中から、ネズミオブジェクトＭ６に近接する順にネズミオブジェクトＭ４とＭ５とを選択し、ベクトルＶｆ’の算出対象とする。
【００８０】
このように、ネズミオブジェクトＭを、グリッドＧを単位として登録管理することによって、移動制御の対象となっているネズミオブジェクトＭが何れのグリッドＧに登録されているかを判定するだけで、ベクトルＶｆ及びＶｆ’の算出対象とするネズミオブジェクトＭｍを容易に選択することができる。
【００８１】
図１０は、環境から作用する外力ベクトルＶｗの算出方法の概念を説明するための図である。
同図に示すように、例えばゲーム空間に風が設定されている場合、ネズミオブジェクトＭｎの位置に応じた風の外力を、ベクトルＶｗ−１としてネズミオブジェクトＭｎに作用させる。また、ネズミオブジェクトＭｎの位置が斜面である場合には、重力によるベクトルＶｗ−２を作用させる。斜面の滑り易さを表現するために、地表面Ｂの設定に応じて適宜ベクトルＶｗ−２に係数等をかけて可変する構成としても良い。そして、ベクトルＶｗ−１及びＶｗ−２を求めたならば合成してベクトルＶｗとする。
【００８２】
地表面Ｂを構成するポリゴン面Ｐもまた、グリッド管理情報７３７によってグリッドＧ毎に対応づけられて登録されている。このため、グリッド管理情報７３７を参照することによって、移動制御の対象となっているネズミオブジェクトＭｎが登録されているグリッドＧに設定されているベクトルＶｗ−１及びＶｗ−２を簡単に求めることができる。
【００８３】
具体的には、ベクトルＶｗ−１は、対応するグリッドＧの環境外力の設定情報を管理情報７３７から読み出す。ベクトルＶｗ−２の算出においては、図１１に示すように、ネズミオブジェクトＭｎの位置座標（移動先の座標）に基づいてネズミオブジェクトＭｎの位置するグリッドＧを判定し、判定したグリッドＧに登録されたポリゴン面Ｐの中からネズミオブジェクトＭｎが置かれるポリゴン面Ｐを判定する。そして、当該ポリゴン面Ｐの法線ベクトルＶＮのＸ軸成分及びＺ軸成分を求めることによって、ベクトルＶｗ−２を算出する。即ち、地表面Ｂを構成するポリゴン面Ｐの何れにネズミオブジェクトＭｎが位置する（移動する）かを、全てのポリゴン面Ｐを対象に検索する必要は無く、速やかにベクトルＶｗ−２を求め地表面Ｂにおける傾斜の影響をネズミオブジェクトＭｎに反映させることができる。
【００８４】
ベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗの算出方法の設定は、ネズミオブジェクトＭの種族固有の行動原理や環境から受ける影響を表現することに相当する。
従って、例えばネコオブジェクトＣを移動制御する場合、ネコオブジェクトＣはネズミオブジェクトＭを捕食する側なのでベクトルＶｅ’は注目対象から遠ざかる方向ではなく近づく方向となるように設定する。
【００８５】
ベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗを算出したならば、ネズミオブジェクトＭｎの個性を示す性格設定情報７３５の値に基づいて、例えばベクトルＶａ＝ｋｔ×Ｖｔ’＋ｋｆ×Ｖｆ’＋ｋｅ×Ｖｅ’＋Ｖｗを演算して合成ベクトルＶａを算出する。そして、算出されたベクトルＶａを更にネズミのゲーム設定上の上限速度｜Ｖ｜ｍａｘを超えないように合成ベクトルＶａの大きさを適正化しベクトルＶａ’とする。そして、ベクトルＶａ’に基づいてネズミオブジェクトＭｎの仮想空間における新しいＸ軸座標及びＺ軸座標とする。
【００８６】
仮想空間における新しいＸ軸座標及びＺ軸座標が求められたならば、ネズミオブジェクトＭｎが地表面Ｂの上面を移動することを利用して、ネズミオブジェクトＭｎの高さ座標（Ｙ軸座標）と、姿勢（仮想空間のワールド座標、ＸＹＺ各軸周りの回転）とを決定する。具体的には、新しいＸ軸座標及びＺ軸座標からネズミオブジェクトＭｎが位置するポリゴン面Ｐを判定し、判定されたポリゴン面ＰからネズミオブジェクトＭｎの高さ座標を求め、当該ポリゴン面Ｐの法線ベクトルＶＮに基づいてその姿勢を求める。
【００８７】
地表面Ｂを構成するポリゴン面Ｐは、前述のようにグリッドＧに対応付けてグリッド管理情報７３７に登録されている。従って、新しいＸＺ位置座標からネズミオブジェクトＭｎが次の描画フレームにおいて何れのグリッドＧに位置するかを判定するだけで、ポリゴン面Ｐを絞り込むことができる。ネズミオブジェクトＭｎが位置するポリゴン面Ｐを判定するために、ポリゴン面Ｐの頂点リストの検索やヒットチェックなどをする必要はなく、容易にネズミオブジェクトＭｎが位置するポリゴン面Ｐを判定することができる。本実施の形態によれば、この点においても群制御における干渉処理に掛かる処理負荷を軽減し、群制御を高速化することができる。
【００８８】
以上の移動制御によって、ネズミオブジェクトＭｎを、ネズミというゲーム設定上の種族に共通する行動原理に従うが、その一方でネズミオブジェクトＭｎそれぞれの個性が反映されたように、より高速に移動制御することができる。
【００８９】
［機能ブロックの説明］
図１２は、本実施の形態における機能構成の一例を示す機能ブロック図である。同図に示すように、業務用ゲーム装置１３００は、操作入力部１０と、処理部２０と、画像表示部３０と、音出力部４０と、記憶部７０とを有する。
【００９０】
操作入力部１０は、例えば、十字キー、レバー、ボタンスイッチ、ジョイスティックなどによって実現され、種々のゲーム操作を受け付けて操作入力信号を処理部２０に出力する。図１の例ではジョイスティック１３０６とプッシュボタン１３０８とがこれに該当する。
【００９１】
処理部２０は、業務用ゲーム装置１３００全体の制御、ゲーム演算などの各種の演算処理を行う。その機能は、例えば、ＣＰＵ（ＣＩＳＣ型、ＲＩＳＣ型）、ＡＳＩＣ（ゲートアレイ等）などのハードウェア及び関連する制御プログラム等により実現される。図１の例では制御ユニット１３２０がこれに該当する。
処理部２０には更に、主にゲームに係る演算処理を行うゲーム演算部２２と、ゲーム演算部２２の処理によって求められた各種のデータから画像信号を生成する画像生成部２４と、効果音やＢＧＭなどのゲーム音の音信号を生成する音生成部２６とが含まれる。
【００９２】
ゲーム演算部２２は、操作入力部１０からの操作入力信号や、記憶部７０から読み出したプログラムやデータに基づいて種々のゲーム処理を実行する。ゲーム処理としては、例えば、仮想空間（ゲーム空間）の設定、仮想空間へのオブジェクトの配置及び仮想空間中のオブジェクトの移動、ヒット判定、キャラクタのアクション操作、ゲーム結果（成績）を求める処理、ネコオブジェクトＣの移動制御、視点の配置や視線方向の決定などの処理を実行する。
【００９３】
本実施の形態では特に、複数のネズミオブジェクトＭｎからなる群Ｆａを設定する群管理部２２０と、成分ベクトル（ベクトルＶｔ’、Ｖｅ’、Ｖｆ’及びベクトルＶｗ）の算出や合成ベクトルＶａ、Ｖａ’の合成を行うベクトル演算部２２１と、仮想ターゲットＴａを移動制御する仮想ターゲット移動制御部２２２と、仮想空間にグリッドＧを設定してネズミオブジェクトＭとポリゴン面Ｐとを登録及び管理するグリッド管理部２２３とを含む。
【００９４】
群管理部２２０は、群ＦａにネズミオブジェクトＭｎを所属オブジェクトとして群管理情報７３３に登録し、ネズミオブジェクトＭｎの位置座標などの情報を管理する。例えば、ネズミオブジェクトＭｎがゲーム中にネコオブジェクトＣに捕食されるなどして存在しなくなる場合には登録を抹消する。
【００９５】
ベクトル演算部２２１は、ベクトル演算専用のルーチンやベクトル演算専用のマイクロプロセッサ（例えば図１のベクトル演算ユニット１３２４）や、ＤＳＰなどによって実現される。本実施の形態では、ベクトル演算部２２１はベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗを算出する処理と、算出したベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗを合成して合成ベクトルＶａを算出する処理と、合成ベクトルＶａの大きさを適正化してベクトルＶａ’を算出する処理などを実行する。
【００９６】
仮想ターゲット移動制御部２２２は、仮想ターゲットＴａを操作入力部１０からの操作入力信号に基づいて移動制御する。
【００９７】
グリッド管理部２２３は、仮想空間に設定されたグリッドＧ毎に、何れのネズミオブジェクトＭｎが位置するか、また何れのポリゴン面Ｐが含まれるかをグリッド管理情報７３７で登録・管理する。
【００９８】
画像生成部２４は、例えばＣＰＵやＤＳＰなどの演算装置やその制御プログラム、フレームバッファなどの描画フレーム用ＩＣメモリなどによって実現される。画像生成部２４は、ゲーム演算部２２によるネズミオブジェクトＭやネコオブジェクトＣの位置や姿勢、視点の位置や姿勢などの演算結果に基づいて幾何学変換処理やシェーディング処理を実行し、ゲーム画面を表示するための画像を生成する。そして、生成した画像の画像信号を画像表示部３０に出力する。
【００９９】
音生成部２６は、例えばＣＰＵやＤＳＰなどの演算装置及びその制御プログラムによって実現され、ゲーム中に使用される効果音やＢＧＭなどの音を生成し、音信号を音出力部４０に出力する。
【０１００】
画像表示部３０は、画像生成部２４からの画像信号に基づいて、例えば１／６０秒毎に１フレームの画面を再描画しながらゲーム画面を表示する。画像表示部３０は、例えばＣＲＴ、ＬＣＤ、ＥＬＤ、ＰＤＰ、ＨＭＤ等のハードウェアによって実現できる。図１の例ではディスプレイ１３０２がこれに該当する。
【０１０１】
音出力部４０は、音生成部２６からの音信号に基づいて効果音やＢＧＭ等を音出力する。図１の例ではスピーカ１３０４がこれに該当する。
【０１０２】
記憶部７０は、例えばＩＣメモリ、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等の情報記憶媒体によって実現され、業務用ゲーム装置１３００を統合的に制御するためのシステムソフトウェア（図示略）や、画像処理に必要なソフトウェア（図示略）、ゲームを実行するのに必要なプログラム及びデータを格納するゲーム情報７２などを記憶する。図１の例ではＲＯＭ１３２２がこれに該当する。
【０１０３】
ゲーム情報７２は、処理部２０を群管理部２２０として機能させるための群管理プログラム７２０と、ベクトル演算部２２１として機能させるためのベクトル演算プログラム７２１と、仮想ターゲット移動制御部２２２として機能させるための仮想ターゲット移動制御プログラム７２２と、グリッド管理部２２３として機能させるためのグリッド管理プログラム７２３とを含む。また、ネコオブジェクトＣの移動制御など、そのほかゲームの実行に必要なプログラム等も含まれる（図示略）。
【０１０４】
また、データとしては、（１）仮想空間に地表面Ｂなどのオブジェクトを配置してゲーム空間を形成するために必要なモデリングデータやテクスチャデータ等を格納するステージデータ７３０と、（２）ネズミオブジェクトＭ及びネコオブジェクトＣをゲーム空間に配置するためのモデリングデータやテクスチャデータなどを格納するキャラクタデータ７３２と、（３）群Ｆａに所属するネズミオブジェクトＭを登録・管理するための情報を格納する群管理情報７３３と、（４）ベクトルＶｔ、Ｖｅ、ＶｆからベクトルＶｔ’、Ｖｅ’、Ｖｆ’を算出する際に参照される係数や行列などを格納する算出方法設定情報７３４と、（５）ネズミオブジェクトＭそれぞれの行動の個性を設定するための情報を格納する性格設定情報７３５と、（６）仮想ターゲットＴａの位置座標、など移動制御に必要な情報を格納する仮想ターゲット情報７３６と、（７）グリッドＧ毎にネズミオブジェクトＭやポリゴン面Ｐを登録・管理するための情報を格納するグリッド管理情報７３７とを含む。
【０１０５】
またその他、ゲーム情報７２には仮想ターゲットＴａの位置座標、仮想ターゲットＴａの移動ベクトルＶｔａ及び１フレーム前の移動ベクトルＶｔａｔ−１、ネコオブジェクトＣに関する位置情報や速度ベクトル、ネズミオブジェクトＭの最大移動速度などの各種の初期条件に関する情報等もここに格納される（共に図示略）。
【０１０６】
図１３は、群管理情報７３３のデータ構成の一例を示す図である。同図に示すように、群管理情報７３３は群毎に設けられ、群の識別情報である群ＩＤ７３３ａと、当該群が移動目標とする仮想ターゲットＴを識別するための仮想ターゲットＩＤ７３３ｂと、当該群に所属するオブジェクト毎の個体情報７３３ｃとを含む。本実施の形態では、個体情報７３３ｃには、ネズミオブジェクトＭｎの識別情報に当るオブジェクトＩＤと、現在の位置座標や合成ベクトルＶａ’ｔ、１フレーム前の位置座標や合成ベクトルＶａ’ｔ−１及び回転等の情報を格納する。
【０１０７】
図１４は、性格設定情報７３５のデータ構成の一例を示す図である。性格設定情報７３５には、当該ネズミオブジェクトＭｎにおいてベクトルＶｔ’、Ｖｅ’、Ｖｆ’がどの程度の割合で最終的な行動に影響を与えるかを決定する係数が格納されている。
【０１０８】
図１５は、本実施の形態におけるグリッド管理情報７３７のデータ構成の一例を示す図である。同図に示すように、グリッド管理情報７３７は、グリッドＧ毎に、各グリッドＧの識別情報であるグリッドＩＤ７３７ａと、範囲を規定する情報を格納する範囲情報７３７ｂと、登録されている地表面Ｂのポリゴン面Ｐの情報を格納する地表ポリゴン７３７ｃと、当該グリッドＧに設定されている風などの環境外力を設定するための情報を格納する環境外力設定情報７３７ｄと、登録されているネズミオブジェクトＭｎの識別情報を格納する登録オブジェクトＩＤ７３７ｅと、登録されているネコオブジェクトＣｌの識別情報を格納するネコオブジェクトＩＤ７３７ｆとを含む。
【０１０９】
範囲情報７３７ｂには、例えばグリッドＧの頂点座標等の情報が格納される。地表ポリゴン７３７ｃには、例えば地表面Ｂを構成するポリゴン面Ｐ毎の識別情報、ポリゴン面Ｐの法線ベクトルＶＮ、地表の種類の設定情報などが格納される。環境外力設定情報７３７ｄは、例えば環境外力としての風や水流などを算出するための関数などが格納される。
【０１１０】
本実施の形態ではグリッドＩＤ７３７ａと、範囲情報７３７ｂ、地表ポリゴン７３７ｃ及び環境外力設定情報７３７ｄは予め設定され、登録オブジェクトＩＤ７３７ｅとネコオブジェクトＩＤ７３７ｆが随時更新される。即ち、ネズミオブジェクトＭｎが移動する場合には、現在登録されているグリッドＧから当該ネズミオブジェクトＭｎが抹消され、新しく求められた位置座標に基づいて新たに別のグリッドＧに登録されることによって、全てのネズミオブジェクトＭとネコオブジェクトＣｌが、常に何れかのグリッドＧに登録されている状態となる。
【０１１１】
［処理の流れの説明］
次に図１６〜図１８を参照して、本実施の形態における処理の流れを説明する。尚、ここでは群制御について主に説明するものとする。
【０１１２】
図１６は、ゲームを実行するためのメインフローの流れを説明するためのフローチャートである。同図に示すように、先ずゲーム演算部２２が初期条件に基づいて仮想空間に視点を設定し、オブジェクトを配置してゲーム空間を生成する（ステップＳ１０２）。より具体的には、地表面Ｂや背景などを構成するオブジェクトを仮想空間に配置してゲーム空間を構成し、ゲーム画面を描画する際の基準となる視点を仮想空間に配置する。そして、ネズミオブジェクトＭとネコオブジェクトＣとを地表面Ｂ上に配置する。この際ネズミオブジェクトＭｎは、予め定められた範囲にランダムに配置される。
ネズミオブジェクトＭとネコオブジェクトＣとが、ゲーム空間に配置されたならば、グリッド管理部２２３はネズミオブジェクトＭとネコオブジェクトＣを、それぞれの位置座標に基づいて何れかのグリッドＧに対応づけて登録する（ステップＳ１０３）。
【０１１３】
次に、ゲーム演算部２２が、各ネコオブジェクトＣを所定のアルゴリズムに従って移動制御し（ステップＳ１０４）、グリッド管理部２２３はネコオブジェクトＣとグリッドＧとの対応づけを更新する（ステップＳ１０５）。
プレーヤによって操作入力がなされた場合（ステップＳ１０６のＹＥＳ）は、仮想ターゲット移動制御部２２２が操作入力部１０からの操作入力信号に基づいて仮想ターゲットＴａを移動制御する（ステップＳ１０８）。そして、ゲーム演算部２２は群Ｆａについて群制御処理を実行する（ステップＳ１１０）。
【０１１４】
図１７及び図１８は、本実施の形態における群制御処理の流れを説明するための連続するフローチャートである。
図１７に示すように、群制御処理において、先ずゲーム演算部２２は干渉処理を実行するか省略するかを決定する（ステップＳ２０２からＳ２０８）。干渉処理とは、ネズミオブジェクトＭ間の干渉を避けるように移動制御する処理や反対に仲間からはぐれないように追走するように移動制御する処理であって、本実施の形態ではベクトルＶｆ及びＶｆ’を算出することに該当する。
【０１１５】
より具体的には、ゲーム演算部２２は視点から仮想ターゲットＴａまでの距離を算出し（ステップＳ２０２）、所与の閾値と比較する（ステップＳ２０４）。この閾値は、ネズミオブジェクトＭを画面表示した場合にその表示サイズが小さくて個々の識別が難しくなる境の距離を示し、予め設定しても良いしネズミオブジェクトＭの大きさや視点の画角などの条件に応じて適宜算出される構成であっても良い。
【０１１６】
視点から仮想ターゲットＴａまでの距離が閾値に達する場合（ステップＳ２０４のＹＥＳ）、ゲーム演算部２２は、群Ｆａが視点より遠くに離れているためにネズミオブジェクトＭの表示サイズが小さく、干渉処理を行ってもその効果が見た目にわからない状態になると判断して、干渉処理省略モードとする（ステップＳ２０６）。干渉処理省略モードとは、本実施の形態ではベクトルＶｆ及びＶｆ’の算出を省略する演算モードに該当する。
【０１１７】
反対に、視点から仮想ターゲットＴａまでの距離が閾値を超えない場合（ステップＳ２０４のＮＯ）、ネズミオブジェクトＭの表示サイズが比較的大きく、個々の識別が比較的容易であって、干渉処理の効果が見て分かる程度になると判断し、ベクトルＶｆ及びＶｆ’の算出を実行する干渉処理実行モードとする（ステップＳ２０８）。干渉処理省略モード及び干渉処理実行モードの識別結果は、例えばゲーム演算部２２が記憶部７０のゲーム情報７２にフラグを設定することによって管理する。
【０１１８】
干渉処理のモードが決定されたならば、ベクトル演算部２２１は群管理情報７３３を参照しながら、群Ｆａに登録されている全てのネズミオブジェクトＭについて個体別ルーチンを実行する（図１７のステップＳ２１２〜図１８のＳ２５８）。
【０１１９】
個体別ルーチンでは、先ずベクトル演算部２２１がベクトルＶｔを算出する。そして、算出方法設定情報７３４を参照して、前述の如く仮想ターゲットＴａからの距離や仮想ターゲットＴａの停止しているか否か及び群Ｆａの先頭の位置条件等に基づいてベクトルＶｔからベクトルＶｔ’を算出する（ステップＳ２１２）。
【０１２０】
次に、ベクトル演算部２２１はベクトルＶｅ及びＶｅ’を算出する（ステップＳ２１４）。具体的には、ネコオブジェクトＣの位置情報と当該ネズミオブジェクトＭｎの位置関係に基づいてベクトルＶｅを算出する。そして、算出方法設定情報７３４を参照してベクトルＶｅからベクトルＶｅ’を算出する。
尚、複数のネコオブジェクトＣが対ネコ用近距離にいる場合は、ネコオブジェクトＣｌごとにベクトルＶｅ’を算出し、それぞれのベクトルＶｅ’をサブベクトルとみなし、ベクトル合成した結果を最終的なベクトルＶｅ’とする。
【０１２１】
次に、ベクトル演算部２２１は干渉処理のモードを確認する（ステップＳ２１６）。干渉処理省略モードの場合（ステップＳ２１６のＮＯ）、ベクトル演算部２２１は「ベクトルＶｆ’＝０」とする（ステップＳ２１８）。干渉処理実行モードの場合（ステップＳ２１６のＹＥＳ）、ベクトル演算部２２１はベクトルＶｆ及びＶｆ’を算出する（ステップＳ２２０〜Ｓ２３２）。
【０１２２】
ベクトルＶｆ及びＶｆ’を算出する場合（ステップＳ２１６のＹＥＳ）、ベクトル演算部２２１は先ずグリッド管理情報７３７を参照し、個体別ルーチンの処理対象となっているネズミオブジェクトＭｎが登録されているグリッドＧを判定する（ステップＳ２２０）。そして、判定したグリッドＧに対してサブグリッドＨを設定し（ステップＳ２２２）、ネズミオブジェクトＭｎがグリッドＧ内の何れのサブグリッドＨに位置するかを判定する（ステップＳ２２４）。即ち、グリッドＧ内におけるネズミオブジェクトＭｎの相対的な位置を判定する。
【０１２３】
次に、ネズミオブジェクトＭｎが位置するサブグリッドＨを判定したならば、ベクトル演算部２２１は、サブグリッドＨとグリッドＧの対応条件（図９参照）に従ってグリッドＧを選択する（ステップＳ２２６）。そして、グリッド管理情報７３７を参照し、選択されたグリッドＧに登録されているネズミオブジェクトＭｍとネズミオブジェクトＭｎ間の距離を算出し、近接順に所定数のネズミオブジェクトＭｍを選択する（ステップＳ２２８）。
【０１２４】
次に、ベクトル演算部２２１は、選択されたネズミオブジェクトＭｍ毎にベクトルＶｆｍを算出し、更に算出方法設定情報７３４を参照して、前述の如くネズミオブジェクトＭｎとの距離に応じてベクトルＶｆｍからベクトルＶｆ’ｍを算出する（ステップＳ２３０）。そして、ベクトル演算部２２１はネズミオブジェクトＭｍ毎に算出されたベクトルＶｆ’ｍをベクトル合成し、その結果をネズミオブジェクトＭｎの最終的なベクトルＶｆ’とする（ステップＳ２３２）。
【０１２５】
次に図１８において、ベクトル演算部２２１はベクトルＶｗを算出する（ステップＳ２３４〜２４０）。
先ずグリッド管理情報７３７を参照してネズミオブジェクトＭｎが登録されているグリッドＧを判定し（ステップＳ２３４）、判定されたグリッドＧに登録されているポリゴン面Ｐを対象に、ネズミオブジェクトＭｎが何れのポリゴン面Ｐに位置するかを判定する（ステップＳ２３６）。
【０１２６】
次に、ベクトル演算部２２１は、ネズミオブジェクトＭｎが位置するポリゴン面ＰのベクトルＶＮから地表面Ｂの傾斜によって作用するベクトルＶｗ−２を算出する。また、ネズミオブジェクトＭｎが登録されているグリッドＧに設定されている環境外力設定情報７３７ｄに従ってベクトルＶｗ−１を算出する（ステップＳ２３８）。
ベクトルＶｗ−１及びＶｗ−２が算出されたならば、ベクトル演算部２２１はこれらを合成してネズミオブジェクトＭｎの最終的なベクトルＶｗとする（ステップＳ２４０）。
【０１２７】
ベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗが算出されたならば、ベクトル演算部２２１は性格設定情報７３５を参照して、ベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗから合成ベクトルＶａを算出する（ステップＳ２４２）。次いで、合成ベクトルＶａの大きさを、ネズミオブジェクトＭの最大移動速度を越えないように適正化し合成ベクトルＶａ’とする（ステップＳ２４４）。
【０１２８】
合成ベクトルＶａ’が求められたならば、ゲーム演算部２２は当該ネズミオブジェクトＭｎの移動先の位置座標や地形に合わせて仮想空間のワールド座標系Ｘ、Ｙ、Ｚ軸周りの回転等を演算し、群管理情報７３３を更新する（ステップＳ２４６〜２５８）。
【０１２９】
より具体的には、先ずベクトルＶａ’に基づいてネズミオブジェクトＭｎの新しいＸＺ座標を算出し（ステップＳ２４６）、Ｙ軸周りの回転を算出する（ステップＳ２４８）。
次に、新しいＸＺ座標に基づいてネズミオブジェクトＭｎが何れのグリッドＧに位置するかを判定する（ステップＳ２５０）。そして、判定されたグリッドＧに登録されているポリゴン面Ｐの内、何れのポリゴン面ＰにネズミオブジェクトＭｎが位置するかを判定する（ステップＳ２５２）。
【０１３０】
ネズミオブジェクトＭｎが位置するポリゴン面Ｐが判定されたならば、ゲーム演算部２２は、当該ポリゴン面Ｐに基づいてネズミオブジェクトＭｎの新しいＹ座標値（高さ）を算出し（ステップＳ２５４）、同ポリゴン面Ｐの法線ベクトルＶＮに基づいてネズミオブジェクトＭｎについてワールド座標系Ｘ軸及びＺ軸周りの回転を算出する（ステップＳ２５６）。そして、ネズミオブジェクトＭｎの位置座標・回転・合成ベクトルＶａ’が決定されたならば、群管理部２２０が群管理情報７３３を更新し、グリッド管理部２２３がグリッド管理情報７３７を更新する（ステップＳ２５８）。
【０１３１】
全てのネズミオブジェクトＭｎについて、図１７のステップＳ２１２〜図１８のＳ２５８までの処理が実行されたならば群制御処理を終了し、図１６のフローに戻る。尚、本実施の形態では処理対象となる群を一つ（群Ｆａ）としているが、ゲーム空間中に複数の群が存在する場合は、全ての群について上述の群制御処理を実行する。
【０１３２】
図１６のフローに戻って、群制御処理によって全てのネズミオブジェクトＭｎの位置が確定されたので、ゲーム演算部２２は所定のゲーム判定処理を実施する（ステップＳ１１２）。例えば、ネズミオブジェクトＭがネコオブジェクトＣに捕食されたか否かの判定や、ゲーム時間の判定、得点の計算などがここに含まれる。
【０１３３】
次いで、画像生成部２４が視点から見たゲーム画面の画像を生成し、画像表示部３０に表示させる（ステップＳ１１４）。そして、ゲーム演算部２２はゲーム終了判定を実行し、所定の条件を満たす場合にゲームを終了する（ステップＳ１１６のＹＥＳ）。
【０１３４】
図１９〜図２１は、上記処理結果に基づくゲーム画面の一例を示す図である。
図１９では、ネコオブジェクトＣ１が画面下側より上に移動して群Ｆａに近づいており、続く図２０ではネコオブジェクトＣ１が仮想ターゲットＴａの近傍まで達し、各ネズミオブジェクトＭは仮想ターゲットＴａに集まろうとしながらもネコオブジェクトＣ１から逃げるように移動制御される。結果、ネコオブジェクトＣ１の周囲に円形の空間が生じている。
【０１３５】
さらに続く図２１は、ネコオブジェクトＣ１が更に右上方向に進行し、群Ｆａを通り抜けた場合を示している。ネコオブジェクトＣ１（敵）が群Ｆａから離れることによって、ネズミオブジェクトＭにはベクトルＶｅ’が作用しなくなる。例えば、敵から逃げるために仮想ターゲットＴａから所定距離離れてしまったネズミオブジェクトＭにはベクトルＶｔ’が比較的高く作用し、仮想ターゲットＴａに近づくように移動制御される。尚、これらの図はある条件下における一例であって、その時々の各オブジェクトの位置関係や地形などの諸条件により様々な形態になり得る。
【０１３６】
［ハードウェアの構成］
次に、業務用ゲーム装置１３００を実現できるハードウェアの構成について説明する。
図２２は、本実施の形態におけるハードウェア構成の一例を示す図である。業務用ゲーム装置１３００は、ＣＰＵ１０００と、ＲＯＭ１００２と、ＲＡＭ１００４と、情報記憶媒体１００６と、音生成ＩＣ１００８と、画像生成ＩＣ１０１０と、Ｉ／Ｏポート１０１２及び１０１４とを有し、システムバス１０１６により相互にデータの入出力が可能に接続されている。
【０１３７】
ＣＰＵ１０００は、図１２における処理部２０に該当し、情報記憶媒体１００６に格納されているプログラム、ＲＯＭ１００２に格納されているシステムプログラム、コントロール装置１０２２によって入力される操作入力信号等に従って、装置全体の制御や各種のデータ処理を行う。
【０１３８】
ＲＯＭ１００２、ＲＡＭ１００４及び情報記憶媒体１００６は、図１２における記憶部７０に該当する。
ＲＯＭ１００２は、図１のＲＯＭ１３２２に該当し、図１２のゲーム情報７２、特に、予め設定されているプログラムやデータを記憶する。ＲＡＭ１００４は、ＣＰＵ１０００の作業領域などとして用いられる記憶手段であり、情報記憶媒体１００６やＲＯＭ１００２の所与の内容、或いはＣＰＵ１０００の演算結果が格納される。情報記憶媒体１００６は、ＩＣメモリカードや着脱自在なハードディスクユニット、ＭＯなどによって実現される。情報記憶媒体１００６は、図１のＲＯＭ１３２２に該当する。
【０１３９】
音生成ＩＣ１００８は、情報記憶媒体１００６やＲＯＭ１００２に記憶される情報に基づいて効果音やＢＧＭ等のゲーム音を生成する集積回路であり、生成された音はスピーカ１０２０によって出力される。なお、スピーカ１０２０は、図１２における音出力部４０、図１におけるスピーカ１３０４に該当する。
【０１４０】
画像生成ＩＣ１０１０は、ＲＡＭ１００４、ＲＯＭ１００２、情報記憶媒体１００６等から出力される画像情報に基づいて表示装置１０１８に画像を出力するための画素情報を生成する集積回路である。なお、表示装置１０１８は、図１２における画像表示部３０、図１におけるディスプレイ１３０２に該当する。
【０１４１】
Ｉ／Ｏポート１０１２には、コントロール装置１０２２が接続され、Ｉ／Ｏポート１０１４には、通信装置１０２４が接続されている。
コントロール装置１０２２は、図１２における操作入力部１０に該当し、操作パネルや図１のジョイスティック１３０６やプッシュボタン１３０８等に相当するものであり、プレーヤがゲームの進行に応じて種々のゲーム操作を入力するための装置である。また、通信装置１０２４は、ゲーム装置内部で利用される各種の情報を外部とやり取りするものであり、他のゲーム装置と接続されてゲームプログラムに応じた所与の情報を送受信したり、通信回線を介して、ゲームプログラム等の情報を送受信することなどに利用される。
【０１４２】
尚、画像生成ＩＣ１０１０、音生成ＩＣ１００８等で行われる処理はＣＰＵ１０００、或いは汎用のＤＳＰ等によってソフトウェア的に実行されても良い。
【０１４３】
［変形例の説明］
以上、本発明を適用した第１の実施の形態について説明したが、本発明の適用がこれに限定されるものではなく、発明の趣旨を逸脱しない限りにおいて適宜構成要素の追加・省略・変更等を行っても構わない。
【０１４４】
例えば、群制御処理において、ネズミオブジェクトＭｎが位置するグリッドＧに基づいて隣接する他のグリッドＧを選択する際、例えば図２３に示すように、隣接する他のグリッドＧ内にもサブグリッドＪを設定し、グリッドＧを選択する代わりにサブグリッドＪを選択する構成としても良い。
【０１４５】
同図の場合、個体別ルーチンの処理対象となっているネズミオブジェクトＭ６が、グリッドＧ５の図中左上方のサブグリッドＨ５に位置している。この場合、グリッドＧ１、Ｇ２、Ｇ４にサブグリッドＪを設定し、網掛け表示しているサブグリッドＪを選択する。これにより、ベクトルＶｆ’の算出対象とするネズミオブジェクトＭｍを、ネズミオブジェクトＭ１〜Ｍ５の中から更にネズミオブジェクトＭ２とＭ４とに絞り込むことで、より演算負荷を軽減できる。
【０１４６】
図２３で示した手法は、グリッドＧが比較的大きく、また１つのグリッドＧに多くのネズミオブジェクトＭが位置し得る場合に特に効果的である。
【０１４７】
また、図２４に示すように、移動制御の対象となっているネズミオブジェクトＭ６が、サブグリッドＨ６、Ｈ７、Ｈ１０、Ｈ１１の何れかに位置する場合には、グリッドＧ５全体を選択するのではなくサブグリッドＨ単位で選択するとしても良い。
より具体的には、例えばネズミオブジェクトＭ６のベクトルＶａ’を参照して、ベクトルＶａ’がネズミオブジェクトＭ６の視線方向を向いていると考える。ネズミオブジェクトＭ６の後方に該当するサブグリッドＨ１３〜Ｈ１６は、ネズミオブジェクトＭ６の視界に入らないと判断して選択の対象外とする。従って、ベクトルＶｆ’の算出対象となるネズミオブジェクトＭｍはグリッドＧ５のサブグリッドＨ１〜Ｈ４、Ｈ５、Ｈ８、Ｈ９、Ｈ１２の中に位置するものに更に絞り込まれ、より処理負荷を低減することができる。
【０１４８】
また、図２５に示すように、グリッドＧの略中央に設定される内側サブエリアＨｉ（網掛け部分）と外側サブエリアＨｏとを設定し、ネズミオブジェクトＭｎが何れのサブエリアに位置するかの条件と、ネズミオブジェクトＭｎの進行方向とによってグリッドＧを選択する構成としても良い。
【０１４９】
例えば図２５（ａ）に示すように、移動制御対象となっているネズミオブジェクトＭ６が内側サブエリアＨｉに位置する場合は、当該グリッドＧ５を選択する。
【０１５０】
ネズミオブジェクトＭ６が外側サブエリアＨｏに位置する場合には、ネズミオブジェクトＭ６の進行方向によって更に条件を細分化する。
例えば図２５（ｂ）に示すように、ネズミオブジェクトＭｎが外側サブエリアＨｏに位置し、更にその進行方向がグリッドＧ５の内側を向いている場合には、ネズミオブジェクトＭ６の前方（前方視界）がグリッドＧ５の大部分で占められると判断する。そして、グリッドＧ５を越えたネズミオブジェクトＭ６の進行方向に位置するグリッドＧ２やＧ１、Ｇ３はネズミオブジェクトＭ６より遠く離れているとみなし、グリッドＧ１〜Ｇ３を対象のグリッドとはせずにグリッドＧ５のみを対象のグリッドとして選択する。
【０１５１】
また、例えば図２５（ｃ）に示すように、ネズミオブジェクトＭ６が外側サブエリアＨｏに位置し、その進行方向がグリッドＧ５の外側を向いている場合は、進行方向（ベクトルＶａ’の方向）をネズミオブジェクトＭ６の視線方向と考えて、ネズミオブジェクトＭ６の後方に該当するグリッドＧ７〜Ｇ９を選択対象外とする。これによって、あたかもネズミオブジェクトＭｎに視界があって、視界に入らないグリッドＧ７〜Ｇ９に位置するネズミオブジェクトＭｍの影響を受けないようにすることができる。
【０１５２】
またハードウェアとしては、業務用ゲーム装置１３００に適用した例を挙げたが、その他家庭用ゲーム装置、携帯型ゲーム装置、大型アトラクション装置、ＰＤＡなどにも同様に適用可能である。また、ＣＧの利用分野に関してもゲームに限定するものではなく、映画、ＣＦなどであっても良い。
【０１５３】
〔第２の実施の形態〕
次に、図２６〜図３０を参照して、本発明における第２の実施の形態について説明する。第２の実施の形態は、群を構成するオブジェクトＭが例えば鳥や魚などであり３次元的に移動する場合を例に挙げて説明する。
尚、本実施の形態は基本的に第１の実施の形態と同様の構成によって実現可能であり、第１の実施の形態と同様の構成要素については同じ符号を付け説明は省略するものとする。
【０１５４】
図２６及び図２７は、本実施の形態におけるグリッドＧを説明するための概念図である。図２６に示すように、本実施の形態における群Ｆａを構成するオブジェクトＭは、魚や鳥など空間を３次元的に移動し得る設定である。群Ｆａには仮想ターゲットＴａを基準とする群形状Ｗが予め設定されている。ゲーム空間には第１の実施の形態と同様に、グリッドＧがＸＺ座標系に設定され（同図下部の格子状に区切られた範囲）、各オブジェクトＭはＸ軸座標及びＺ軸座標に基づいてグリッドＧに登録される。同図では、破線によってオブジェクトＭ１〜Ｍ６それぞれと対応づけられた三角形のマークでオブジェクトＭがグリッドＧに登録されている状態を示している。
【０１５５】
各オブジェクトＭの移動制御におけるベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗも、第１の実施の形態と同様にＸ軸成分及びＺ軸成分のみで演算される。即ち、オブジェクトＭはＸＺ座標平面上において互いに干渉を避けながら、群Ｆａとしての形状を保つように移動制御される。
【０１５６】
オブジェクトＭのＹ軸方向の位置座標（高さ）は、群形状Ｗの範囲内に入るように例えばランダムに配置される。更に次の描画フレームにおけるＹ座標値は、現在のＹ座標値からオブジェクトＭの移動が不自然とならない程度の範囲内でランダムに設定される。
【０１５７】
図２７に示すように、オブジェクトＭが敵とみなすオブジェクトＣには、その周囲に忌避領域Ｄが設定されている。オブジェクトＣが群Ｆａに接近した場合は、空間集合演算（ブール演算）によって群形状Ｗから忌避領域Ｄを減算する。そして、忌避領域Ｄが減算された群形状Ｗ内にオブジェクトＭを配置する。従って、オブジェクトＭが敵であるオブジェクトＣから避けているように移動制御することができる。
【０１５８】
［機能ブロックの説明］
第２の実施の形態における機能構成としては特に、ゲーム情報７２に群形状情報（図示略）を含む。また、オブジェクトＣのキャラクタデータ７３２には、忌避領域Ｄを設定する情報が含まれる（図示略）。
【０１５９】
群形状情報は、仮想ターゲットＴａを基準点とした、群形状Ｗを規定する関数や群形状Ｗを形成するプリミティブ面の位置情報などを含む。群形状Ｗは予め固定されたものであっても良いし、時間変数を含み時間と共に変形する構成であっても良い。
【０１６０】
［処理の流れの説明］
図２８及び図２９は、本実施の形態における群制御処理の流れを説明するための連続するフローチャートである。尚、第１の実施の形態における群制御処理と差異のあるステップにはＳ３００番台の符号をつけている。
【０１６１】
図２９に示すように、個体別ルーチンにおいてオブジェクトＭｎ（ｎは自然数）のＹ座標値を求める処理が異なる。ステップＳ２４６においてベクトルＶａ’に基づいてオブジェクトＭｎの新しいＸＺ位置座標を算出したならば、ゲーム演算部２２は群形状情報を参照し、オブジェクトＣとの位置関係に基づいて群形状Ｗから忌避領域Ｄを減算した群形状Ｗ’を求める（ステップＳ３０２）。そして、仮想ターゲットＴａに対するオブジェクトＭｎの相対位置を算出し（ステップＳ３０４）、群形状Ｗ’に基づいてオブジェクトＭｎのＸＺ位置におけるＹ座標値のとり得る範囲を算出する（ステップＳ３０６）。
【０１６２】
Ｙ座標値の範囲が求められたならば、ゲーム演算部２２は、群管理情報７３３から１フレーム前の位置座標のＹ座標値を参照し、このＹ座標値から所定の範囲内にランダムに新しいＹ座標を設定する（ステップＳ３０８）。この段階で、次のフレームにおいてオブジェクトＭｎが移動するべき位置が決定したことになる。
次に、ゲーム演算部２２は、次のフレームにおいてオブジェクトＭｎが移動するべき位置に、オブジェクトＭｎの頭が向くようにワールド座標系ＸＹＺ軸周りの回転を算出する（ステップＳ３１０）。
【０１６３】
オブジェクトＭｎの位置座標・回転・合成ベクトルＶａ’が決定されたならば、群管理部２２０が群管理情報７３３を更新し、グリッド管理部２２３がグリッド管理情報７３７を更新する（ステップＳ２５８）。
【０１６４】
以上の処理によって、オブジェクトＭｎが３次元的に移動する設定であっても、オブジェクトＭｎの移動制御に必要なベクトル演算をＸＺ成分のみで実行することができる。従って移動制御に掛かる演算処理を軽減し、群制御処理を高速化することができる。
【０１６５】
尚、３次元的に移動するオブジェクトの場合、図３０に示すようにグリッドＧを３次元の範囲として設定し、ベクトルＶｔ’、Ｖｅ’、Ｖｆ’、Ｖｗ及び合成ベクトルＶａ’を３次元ベクトルとして演算する構成としても良いのは勿論である。
【０１６６】
【発明の効果】
本発明によれば、仮想空間を複数のエリア（範囲）に分割し、群を構成する各個体を何れかのエリアに対応付けることによって、群を構成する多数の個体を常にエリアを単位としたグループとして把握できる状態にできる。そして、一の個体を移動制御する場合、当該一の個体が位置するエリアに基づいて他のエリアの中から特定のエリア（特定エリア）を選択し、当該特定エリアに位置する他の個体を干渉処理の対象とする。即ち、一の個体が位置するエリアに対する特定エリアの関係を予め設定しておくだけで、簡単に干渉処理の対象となる他の個体を簡単に絞り込むことができる。
従って、一の個体の移動制御に掛かる処理負荷、特に当該一の個体の行動に影響を及ぼす他の個体を選択する処理に掛かる負荷を軽減し、個体の移動制御処理を高速化することができる。
【図面の簡単な説明】
【図１】本発明を適用した業務用ゲーム装置の外観の一例を示す図。
【図２】ゲーム内容の概要を説明するための図。
【図３】第１の実施の形態におけるネズミオブジェクトＭの移動制御の原理を説明するための図。
【図４】ベクトルＶｔ’の算出方法の原理について説明するための図。
【図５】ベクトルＶｅ’の算出方法の原理について説明するための図。
【図６】ベクトルＶｆ’の算出方法の原理について説明するための図。
【図７】第１の実施の形態におけるグリッドＧを説明するための斜視概念図。
【図８】ベクトルＶｆ’の算出対象となるネズミオブジェクトＭｍを検索するグリッドＧの選択方法を説明するための概念図。
【図９】第１の実施の形態におけるサブグリッドＨと選択するグリッドＧとの対応関係の一例を示す図。
【図１０】環境から作用する外力ベクトルＶｗの概念を説明するための図。
【図１１】ポリゴン面Ｐの法線ベクトルＶＮとベクトルＶｗ−２の関係を示す概念図。
【図１２】第１の実施の形態における機能構成の一例を示す機能ブロック図。
【図１３】群管理情報７３３のデータ構成の一例を示す図。
【図１４】性格設定情報７３５のデータ構成の一例を示す図。
【図１５】グリッド管理情報７３７のデータ構成の一例を示す図。
【図１６】第１の実施の形態におけるゲーム処理のメインフローの流れを説明するためのフローチャート。
【図１７】第１の実施の形態における群制御処理の流れを説明するためのフローチャート。
【図１８】第１の実施の形態における群制御処理の流れを説明するためのフローチャート。
【図１９】ゲーム画面の一例を示す図。
【図２０】ゲーム画面の一例を示す図。
【図２１】ゲーム画面の一例を示す図。
【図２２】第１の実施の形態を実現し得るハードウェア構成の一例を示す図。
【図２３】グリッドＧを選択する場合にサブグリッドＨを設定し、サブグリッドＨを単位として選択する場合の一例を示す図。
【図２４】グリッドＧを選択する場合に、ネズミオブジェクトＭｎの進行方向（移動方向）に基づいてサブグリッドＨを単位として選択する場合の一例を示す図。
【図２５】グリッドＧに内側サブエリアＨｉと外側サブエリアＨｏとを設定する場合のグリッドＧの選択方法の例を示す図。
【図２６】第２の実施の形態におけるグリッドＧを説明するための概念図。
【図２７】第２の実施の形態におけるグリッドＧを説明するための概念図。
【図２８】第２の実施の形態における群制御処理の流れを説明するためのフローチャート。
【図２９】第２の実施の形態における群制御処理の流れを説明するためのフローチャート。
【図３０】グリッドＧを３次元の範囲として設定する場合の一例を示す概念図。
【符号の説明】
２０  処理部
２２  ゲーム演算部
２２０  群管理部
２２１  ベクトル演算部
２２２  仮想ターゲット移動制御部
２２３  グリッド管理部
７０  記憶部
７２  ゲーム情報
７２０  群管理プログラム
７２１  ベクトル演算プログラム
７２２  仮想ターゲット移動制御プログラム
７２３  グリッド管理プログラム
７３３  群管理情報
７３４  算出方法設定情報
７３５  性格設定情報
７３６  仮想ターゲット情報
７３７  グリッド管理情報
１３００  業務用ゲーム装置
１３０２  ディスプレイ
１３０６  ジョイスティック
１３０８  プッシュボタン
１３２０  制御ユニット
１３２２  ＲＯＭ
１３２４  ベクトル演算ユニット
Ｂ  地表面
Ｃ  ネコオブジェクト
Ｄ  忌避領域
Ｆ  群
Ｇ  グリッド
Ｈ  サブグリッド
Ｈｉ  内側サブエリア
Ｈｏ  外側サブエリア
Ｍ  ネズミオブジェクト
Ｐ  ポリゴン面
Ｔ  仮想ターゲット
Ｖ  ベクトル
Ｗ  群形状
【図１】
2004178412.tif 000003
【図２】
2004178412.tif 000004
【図３】
2004178412.tif 000005
【図４】
2004178412.tif 000006
【図５】
2004178412.tif 000007
【図６】
2004178412.tif 000008
【図７】
2004178412.tif 000009
【図８】
2004178412.tif 000010
【図９】
2004178412.tif 000011
【図１０】
2004178412.tif 000012
【図１１】
2004178412.tif 000013
【図１２】
2004178412.tif 000014
【図１３】
2004178412.tif 000015
【図１４】
2004178412.tif 000016
【図１５】
2004178412.tif 000017
【図１６】
2004178412.tif 000018
【図１７】
2004178412.tif 000019
【図１８】
2004178412.tif 000020
【図１９】
2004178412.tif 000021
【図２０】
2004178412.tif 000022
【図２１】
2004178412.tif 000023
【図２２】
2004178412.tif 000024
【図２３】
2004178412.tif 000025
【図２４】
2004178412.tif 000026
【図２５】
2004178412.tif 000027
【図２６】
2004178412.tif 000028
【図２７】
2004178412.tif 000029
【図２８】
2004178412.tif 000030
【図２９】
2004178412.tif 000031
【図３０】
2004178412.tif 000032