(57)【要約】【課題】【解決手段】３次元のポリゴンモデルを用意し、ポリゴンモデルの頂点を追随するように、各エージェントキャラクタに予め設定された定数と位置ベクトルとを乗算することで得られる力を運動性能として加速度を与えることによって（ステップ２０８、２１０）、ある程度の揺らぎを持ったエージェントキャラクタの集合形態と、ある傾向を持った無秩序なエージェントキャラクタの集合形態とを同時に実現し、追随させるポリゴンモデルにモーションを付与することで、エージェントキャラクタの群れ全体があたかも１個の生物のように動く状態を描画する。【選択図】　図７
2004062676.tif 000002
【特許請求の範囲】
【請求項１】
３次元仮想空間内に多数のキャラクタで構成される群れの動きを制御するプログラムであって、コンピュータを、
前記３次元仮想空間で動作する非表示の３次元ポリゴンモデルのモーションデータを付与するモデルデータ付与手段、
前記３次元ポリゴンモデルの頂点に追随するように前記頂点に対応付けられたキャラクタに運動性能を付与する運動性能付与手段、
前記キャラクタの前記３次元仮想空間上の位置を演算する位置演算手段、
として機能させるためのプログラム。
【請求項２】
前記運動性能付与手段は、前記３次元ポリゴンモデルの頂点と該頂点に対応付けられたキャラクタとの距離に応じた加速度を前記運動性能として付与することを特徴とする請求項１に記載のプログラム。
【請求項３】
前記運動性能付与手段は、前記距離が所定範囲のときに、予め設定された定数と前記距離に対応する位置ベクトルとを乗算することにより得られる力を前記加速度として演算することを特徴とする請求項２に記載のプログラム。
【請求項４】
前記運動性能付与手段は、前記距離が所定範囲外のときに、前記加速度を予め設定された固定値とすることを特徴とする請求項２又は請求項３に記載のプログラム。
【請求項５】
前記位置演算手段は、前記加速度からオイラー法により前記キャラクタの位置を演算することを特徴とする請求項２乃至請求項４のいずれか１項に記載のプログラム。
【請求項６】
コンピュータを、更に、前記加速度と前記キャラクタの速度とから前記位置演算手段で演算された位置での前記キャラクタの１フレーム当たりの回転角を演算する回転角演算手段として機能させることを特徴とする請求項２に記載のプログラム。
【請求項７】
前記回転角演算手段は、前記加速度を接線加速度と求心加速度とに分解し、該求心加速度と前記キャラクタの速度とから角速度を算出して前記回転角を演算することを特徴とする請求項６に記載のプログラム。
【請求項８】
請求項１乃至請求項７のいずれか１項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項９】
３次元仮想空間内に多数のキャラクタで構成される群れの動きを制御する３次元群れ制御方法であって、所定時間毎に、
前記３次元仮想空間で動作する非表示の３次元ポリゴンモデルのモーションデータを付与し、
前記３次元ポリゴンモデルの頂点に追随するように前記頂点に対応付けられたキャラクタに運動性能を付与し、
前記キャラクタの前記３次元仮想空間上の位置を演算する、
ステップを含む３次元群れ制御方法。
【請求項１０】
前記運動性能は、前記３次元ポリゴンモデルの頂点と該頂点に対応付けられたキャラクタとの距離に応じた加速度として付与されることを特徴とする請求項９に記載の３次元群れ制御方法。
【請求項１１】
前記加速度と前記キャラクタの速度とから前記位置演算手段で演算された位置での前記キャラクタの１フレーム当たりの回転角を演算するステップを更に含むことを特徴とする請求項１０に記載の３次元群れ制御方法。
【請求項１２】
３次元仮想空間内に多数のキャラクタで構成される群れの動きを制御するゲーム装置であって、
前記３次元仮想空間で動作する非表示の３次元ポリゴンモデルのモーションデータを付与するモデルデータ付与手段と、
前記３次元ポリゴンモデルの頂点に追随するように前記頂点に対応付けられたキャラクタに運動性能を付与する運動性能付与手段と、
前記キャラクタの前記３次元仮想空間上の位置を演算する位置演算手段と、
を備えたゲーム装置。
【請求項１３】
前記運動性能付与手段は、前記３次元ポリゴンモデルの頂点と該頂点に対応付けられたキャラクタとの距離に応じた加速度を前記運動性能として付与することを特徴とする請求項１２に記載のゲーム装置。
【請求項１４】
前記加速度と前記キャラクタの速度とから前記位置演算手段で演算された位置での前記キャラクタの１フレーム当たりの回転角を演算する回転角演算手段を更に備えたことを特徴とする請求項１３に記載のゲーム装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はプログラム、記録媒体、３次元群れ制御方法及びゲーム装置に係り、特に、３次元仮想空間内に多数のキャラクタで構成される群れの動きを制御するプログラム、該記録媒体、該制御方法及び該ゲーム装置に関する。
【０００２】
【従来の技術】
近年、コンピュータのハードウエア技術の急速な進展により、家庭用ビデオゲーム装置やコンピュータで実行されるゲームは、映画並の画像がディスプレイ上に表示される。このため、ディスプレイ上に描画されるキャラクタ等をよりリアルに描画するゲームが求められている。また、コンピュータの高速化に伴って、３次元仮想空間に描画されるキャラクタ数も増加の傾向にあり、キャラクタが集団で移動する場合の描画技術にも現実感を与えるような種々の改善が加えられている。
【０００３】
本出願人は、特願２０００−２６６７１７号で、多数のキャラクタが３角形等の簡単なフォーメーション（陣形）をとる集団キャラクタの移動制御技術について開示した。この技術では、騎馬等の多数のキャラクタが集団として２次元的に（地上を）移動する様子を描画することができる。
【０００４】
また、従来、多数の個体（例えば、魚等）で構成される群れを３次元的に見せるアニメーション等があることは知られている。更に、ハイエンドのコンピュータグラフィック制作ツールでは、剛体に関する運動方程式（Ｅｕｌｅｒの運動方程式）を利用して方向を持った移動物体（例えば、車、飛行機）の運動シミュレーションを描画可能なものがある。
【０００５】
【発明が解決しようとする課題】
しかしながら、ゲーム機で多数のキャラクタを３次元仮想空間上で群れとして移動を制御する場合に、そのまま従来のアニメーションやＣＧ技術を適用することはできない。また、方向を持った移動物体の運動を描画する場合に、剛体に関する運動方程式を解くと、微分方程式を解く段階で細かなタイムステップを必要とするためコンピュータの負荷が重く、数学的にも慣性テンソルの算出や瞬間座標系の考え方など扱いに難しい部分がある。従って、現状のゲーム機の性能を考えると、リアルタイムに（例えば、１／６０秒毎に）数百の移動物体を動かすような処理には不向きである。
【０００６】
本発明は上記事案に鑑み、３次元仮想空間を移動するキャラクタの群れの動きをリアルかつ興味深く制御可能なプログラム、該記録媒体、該制御方法及び該ゲーム装置を提供することを課題とする。
【０００７】
【課題を解決するための手段】
上記課題を解決するために、本発明の第１の態様は、３次元仮想空間内に多数のキャラクタで構成される群れの動きを制御するプログラムであって、コンピュータを、前記３次元仮想空間で動作する非表示の３次元ポリゴンモデルのモーションデータを付与するモデルデータ付与手段、前記３次元ポリゴンモデルの頂点に追随するように前記頂点に対応付けられたキャラクタに運動性能を付与する運動性能付与手段、前記キャラクタの前記３次元仮想空間上の位置を演算する位置演算手段、として機能させる。
【０００８】
第１の態様によれば、モデルデータ付与手段により３次元仮想空間で動作する非表示の３次元ポリゴンモデルのモーションデータが付与され、運動性能付与手段により３次元ポリゴンモデルの頂点に追随するように該頂点に対応付けられたキャラクタに運動性能が付与され、位置演算手段により運動性能が付与されたキャラクタの３次元仮想空間上の位置が演算される。本態様によれば、群れを構成する多数のキャラクタが非表示の３次元ポリゴンモデルの頂点に追随するように運動性能が付与されるので、各キャラクタ毎にモーションを用意する必要がなく処理の簡素化が図られると共に、キャラクタ全体が恰も１つの生物のように動く様子を表現することができる。
【０００９】
本態様において、運動性能付与手段は、運動性能として３次元ポリゴンモデルの頂点と該頂点に対応付けられたキャラクタとの距離に応じた加速度を付与することが好ましい。例えば、運動性能付与手段が、前記距離が所定範囲のときに、予め設定された定数と前記距離に対応する位置ベクトルとを乗算することにより得られる力を加速度として演算するようにすれば、ある程度の揺らぎを持ったキャラクタの群れの状態を表現することができ、前記距離が所定範囲外のときに、加速度を予め設定された固定値とすれば、ある傾向を持った無秩序なキャラクタの群れの状態を表現することができ、共に各キャラクタが個性を持った自然な動きをする様子を表現することができる。更に、位置演算手段は、前記加速度からオイラー法によりキャラクタの位置を演算するようにしてもよい。また、本態様において、コンピュータを、更に、前記加速度とキャラクタの速度とから位置演算手段で演算された位置でのキャラクタの１フレーム当たりの回転角を演算する回転角演算手段として機能させるようにすることで、群れを構成する各キャラクタの方向に不自然さのない群れ制御を実現することができる。このとき、前記加速度を接線加速度と求心加速度とに分解し、該求心加速度とキャラクタの速度とから角速度を算出して回転角を演算するようにすれば、従来の剛体に関する運動方程式を解いたり慣性テンソルを用いる場合に比べ、演算が簡素化されるので、その分群れを構成するキャラクタの数を多くでき、ゲーム機での処理も容易となる。
【００１０】
また、上記課題を解決するために、本発明の第２の態様は、第１の態様に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体であり、第３の態様は、３次元仮想空間内に多数のキャラクタで構成される群れの動きを制御する３次元群れ制御方法であって、所定時間毎に、前記３次元仮想空間で動作する非表示の３次元ポリゴンモデルのモーションデータを付与し、前記３次元ポリゴンモデルの頂点に追随するように前記頂点に対応付けられたキャラクタに運動性能を付与し、前記キャラクタの前記３次元仮想空間上の位置を演算する、ステップを含み、第４の態様は、３次元仮想空間内に多数のキャラクタで構成される群れの動きを制御するゲーム装置であって、前記３次元仮想空間で動作する非表示の３次元ポリゴンモデルのモーションデータを付与するモデルデータ付与手段と、前記３次元ポリゴンモデルの頂点に追随するように前記頂点に対応付けられたキャラクタに運動性能を付与する運動性能付与手段と、前記キャラクタの前記３次元仮想空間上の位置を演算する位置演算手段と、を備える。
【００１１】
【発明の実施の形態】
以下、図面を参照して本発明をビデオゲームに適用した実施の形態について説明する。
【００１２】
（構成）
図１に示すように、本実施形態のビデオゲームが実行される家庭用ビデオゲーム装置１０は、ゲーム装置本体２に、スピーカ５を内蔵したテレビモニタ４及び入力装置３が接続されている。ゲーム装置本体２は、ＣＤ−ＲＯＭ等の記録媒体１を装着可能な媒体読取部（図３参照）を有している。この媒体読取部に記録媒体を装着することにより記録媒体１に記録されたゲームプログラムやゲームデータが自動的にゲーム装置本体２内の記憶メモリにロードされる。
【００１３】
図２に示すように、入力装置３には、ゲームを開始するためのスタートボタン３０やゲームキャラクタを操作したり、ゲーム装置本体２からの選択問い合わせ等に応答するための□ボタン３１、△ボタン３２、○ボタン３３、×ボタン３４、及び、↑ボタン３５、→ボタン３６、←ボタン３７、↓ボタン３８で構成される十字方向ボタンセット等の種々のボタンが配置されている。
【００１４】
図３に示すように、ゲーム装置本体２は装置全体の制御を行うＣＰＵブロック２０を備えている。ＣＰＵブロック２０は、ゲーム装置本体２内の各部とのデータ転送を主に制御するＳＣＵ（Ｓｙｓｔｅｍ　Ｃｏｎｔｒｏｌ　Ｕｎｉｔ）、中央演算処理装置として高速クロックで作動するＣＰＵ、ゲーム装置本体２の基本制御動作が記憶されたＲＯＭ、ＣＰＵのワークエリアとして働くと共に記録媒体１に記録されたゲームプログラム及び種々のデータを一時的に記憶するＲＡＭ及びこれらを接続する内部バスで構成されている。
【００１５】
ＳＣＵには外部バス２５が接続されている。外部バス２５は、コントローラパッド等の入力装置３からの入力を受信してＣＰＵブロック２０へ入力情報を転送する入力受信部２１、図示しないサブＣＰＵを備え記録媒体１に記録されたゲームプログラムを読み取りＣＰＵブロック２０へ転送するＣＤ−ＲＯＭドライブ等の媒体読取部２２、グラフック処理を行うＣＰＵ及びＶＲＡＭを備えＣＰＵブロック２０から送出された情報に従って光源処理等を行い３次元フィールドでの描画処理を施す画像処理部２３、並びに、図示しないサブＣＰＵを備え、例えば、バックミュージックや戦闘音等の音響を処理する音響処理部２４、に接続されている。また、入力受信部２１は入力装置３に、画像処理部２３はテレビモニタ４に、音響処理部２４はテレビモニタ４に内蔵されたスピーカ５にそれぞれ接続されている。
【００１６】
（動作）
次に、フローチャートを参照して、家庭用ビデオゲーム装置１０の動作についてＣＰＵブロック２０のＣＰＵを主体として説明する。なお、ゲーム装置本体２に電源が投入され、記録媒体１が挿入されると、３次元仮想空間内で多数のエージェントキャラクタ（鳥等の飛行体）が群れを形成し群れ全体として１つの生物であるかのように描画するための群れ制御ルーチンが実行される。
【００１７】
図４に示すように、群れ制御ルーチンでは、まず、ステップ１０２において、種々のデータをＲＡＭにロードし仮想モデルのモーションを開始するための初期設定処理サブルーチンを実行する。
【００１８】
図５に示すように、初期設定処理サブルーチンでは、ステップ１２２で複数の仮想モデル（３次元ポリゴンモデル）の中から１の仮想モデルを例えばランダムに選択する。仮想モデルは、３次元仮想空間の直交座標系（ワールド座標系）でｘ、ｙ、ｚ軸方向に概ね１０ｍ程度の大きさに設定されている。図１４（Ａ）は、仮想モデルＩＭの初期状態の一例を示している。この仮想モデルＩＭでは、仮想モデルＩＭが腕を広げた状態が初期状態として設定されている。
【００１９】
次にステップ１２４では、選択された仮想モデルのポリゴンデータ及びモーションデータをロードし、ステップ１２６でエージェントキャラクタのポリゴンデータをロードする。次のステップ１２８では、各エージェントキャラクタを仮想モデルの各頂点に配置する。なお、仮想モデルの頂点に配置されたエージェントキャラクタと当該頂点とは対応関係を有している。図１４（Ｂ）は、図１４（Ａ）に示した仮想モデルＩＭの頂点にエージェントキャラクタＡＣを配置した状態を示している。本実施形態では、仮想モデルＩＭの形状及び各頂点は非可視（テレビモニタ４上で非表示）とされており、３次元仮想空間における頂点間の距離は０．８ｍ程度、頂点数は概ね８００程度（エージェントキャラクタ数も８００程度）に設定されている。なお、仮想モデルＩＭの形状には種々の形状を採ることができ、頂点数は仮想モデルＩＭの表面のみに関係する。
【００２０】
次いでステップ１３０において各エージェントキャラクタＡＣの速度、方向、加速度を０に設定した後、ステップ１３２で仮想モデルＩＭのモーションを開始して、図４のステップ１０４へ進む。仮想モデルＩＭのモーション再生により、仮想モデルＩＭの各頂点はフレーム毎に移動する。各エージェントキャラクタＡＣは、移動する仮想モデルＩＭの各頂点を目標点としてフレーム毎に移動する。すなわち、図１５に示すように、仮想モデルＩＭが図１４（Ａ）に示した初期状態から、モーションデータに従って、図１５（Ｄ）に示す状態まで腕を振るモーションを考えると、各エージェントキャラクタＡＣは、図１４（Ｂ）の初期状態から図１５（Ａ）〜（Ｃ）に示すように、仮想モデルＩＭの各頂点座標に追随するように移動する。
【００２１】
ステップ１０４では、テレビモニタ４の垂直帰線周期と一致した、１／６０秒（１６．６ミリ秒）に一度の周期で行われる垂直帰線割込（Ｖｓｙｎｃ）がなされたか否かを判断する。否定判断のときは、次のステップ１０６において、入力受信部２１から転送された入力情報に対する入力処理やゲーム効果音を音響処理部２４に合成させるための音響処理等のメイン処理を実行して、ステップ１１０へ進む。
【００２２】
一方、ステップ１０４で肯定判断のときは、ステップ１０８において、仮想モデルＩＭの各頂点座標に追随するように移動するエージェントキャラクタＡＣを描画するための３次元群れ制御処理サブルーチンを実行する。
【００２３】
図６に示すように、３次元群れ制御処理サブルーチンでは、ステップ１５２におて、仮想モデルＩＭのモーションカーソル（モーションカウンタ）を参照することで、仮想モデルＩＭのモーションが終了した否かを判断する。ステップ１５２で否定判断のときは、ステップ１５４で仮想モデルＩＭのモーションデータより次の各頂点座標を取得し、次のステップ１５６でエージェントキャラクタＡＣに運動性能を付与しエージェントキャラクタで構成される群れに揺らぎやうねりの状態を描画するための揺らぎ・うねり処理サブルーチンを実行する。
【００２４】
図７に示すように、揺らぎ・うねり処理サブルーチンでは、ステップ２０２において、全エージェントキャラクタＡＣの処理が終了したか否かを判断し、否定判断のときは、ステップ２０４で３次元仮想空間における対象エージェントキャラクタＡＣの目標点（仮想モデルＩＭの頂点座標）までの距離ｄを演算し、次の２０６において、距離ｄが２ｍを超えるか否かを判断する。ステップ２０６で否定判断のときは、ステップ２０８で対象エージェントキャラクタＡＣの加速度を算出する。
【００２５】
ここで、距離ｄとエージェントキャラクタＡＣの加速度αとの関係について説明する。図８（Ａ）は、縦軸にエージェントキャラクタＡＣの加速度αをとり、横軸にエージェントキャラクタＡＣの目標点Ｔからの距離ｄを示したものである。エージェントキャラクタＡＣの加速度αは、所定範囲内で、距離ｄと傾き−ｋのリニアな関係を有している。この傾き−ｋは予め設定された定数である。図８（Ｂ）に示すように、目標点Ｔから距離ｄの位置に存在するエージェントキャラクタＡＣを考えると、エージェントキャラクタＡＣの速度Ｖは距離ｄの位置から徐々に増加し目標点Ｔでは加速度αは０となるが（図８（Ａ）参照）、速度Ｖが存在するためその方向でエージェントキャラクタＡＣは移動し、かつ、マイナスの加速度により速度Ｖは減少するため、エージェントキャラクタＡＣが目標点Ｔから距離−ｄの位置までくると、速度Ｖは０となり逆方向の目標点Ｔ方向への移動を繰り返す。このため、図８（Ｃ）に示すように、エージェントキャラクタＡＣは目標点Ｔから距離ｄ、−ｄの間で単振動を繰り返すこととになる。従って、エージェントキャラクタＡＣの目標点Ｔからの位置ベクトルをＲとすると、エージェントキャラクタＡＣの加速度αは下式（１）で与えられる。なお、式（１）はＦ＝ｍαで表される運動方程式においてエージェントキャラクタＡＣの質量ｍを１としたものである。
【００２６】
【数１】
2004062676.tif 000003
【００２７】
図８（Ｄ）に示すように、実際の処理では、式（１）が適用されるｄの範囲を−２（ｍ）から２（ｍ）（−２≦ｄ≦２）、ｄ＝±２（ｍ）のときの加速度αを±２０（ｍ／ｓ２）、傾き−ｋを−１０程度に設定しており、距離ｄが±２（ｍ）を超える範囲（ｄ＞２、−ｄ＜−２）では、加速度αを固定値（±２０ｍ／ｓ２）に設定している。
【００２８】
一方、ステップ２０６で肯定判断のときは、ステップ２１０で対象エージェントキャラクタＡＣの加速度αを固定値（２０ｍ／ｓ２）に設定する。距離ｄが２（ｍ）を超えるときは仮想モデルＩＭの頂点の移動量（加速度）は大きく、エージェントキャラクタＡＣの加速度αを固定値とすることで、エージェントキャラクタＡＣの運動性能が下がり目標点Ｔに追いつけない状態となる。エージェントキャラクタＡＣが目標点Ｔに常に追いつくとすると、等間隔を維持することとなり（つまり、仮想モデルＩＭの頂点上に配置されることになり）、面白みがない。目標点Ｔに対してエージェントキャラクタＡＣの追随（前回の垂直帰線割込時の位置）に適度な遅れを生じさせるためには、図９に示すように、目標点Ｔの加速度の５０％程度に設定することが好ましい。このような観点から、距離ｄが２ｍを超えるときに、エージェントキャラクタＡＣの加速度αは２０ｍ／ｓ２の固定値に設定される。すなわち、仮想モデルＩＭが腕を振るモーションを考えると、仮想モデルＩＭの指先の目標点が最大の移動点となる。このときの指先の最大加速度を４０ｍ／ｓ２とすると、その最大加速度の５０％の２０ｍ／ｓ２を図８（Ｄ）の固定値とする。更に詳述すれば、図１０に示すように、エージェントキャラクタＡＣＡ、ＡＣＢが、あるフレームで、点ＰＡ、ＰＢに位置し、２ｍ以上離れた目標点ＰＡ’、ＰＢ’に向かって移動する場合を想定すると、エージェントキャラクタＡＣＡ、ＡＣＢとも加速度αは同一であり（２０ｍ／ｓ２）、同一距離を移動することとなるが、目標点ＰＡ’、ＰＢ’の位置には到らない。また、目標点ＰＡ’、ＰＢ’の位置に到らないようにするために、エージェントキャラクタＡＣの最大速度も制限されている（一例として、１０ｍ／ｓ）。なお、図８（Ｄ）、図１０から明らかなように、目標点ＰＣ’までの距離ｄが２ｍ丁度のエージェントキャラクタＡＣＣの加速度αは２０ｍ／ｓ２であり、目標点ＰＤ’までの距離ｄが１ｍのエージェントキャラクタＡＣＤの加速度αは１０ｍ／ｓ２となる。エージェントキャラクタＡＣＡ、ＡＣＢと同じこのような状態を繰り返すことにより、エージェントキャラクタＡＣＡ、ＡＣＢ、ＡＣＣは、目標点Ｔとのズレが各々異なる量で加算されていき、結果的に、常に頂点近傍に位置するような規則的表現とはならず、仮想モデルＩＭの頂点の動きが激しい程大きなズレが生じて仮想モデルＩＭの形状がくずれた状態が表現される（図１５（Ｃ）参照）。
【００２９】
次のステップ２１２では、加速度αが与えられる１つ前（前回の垂直帰線割込時）の速度Ｖ０、位置Ｐ０を用いてオイラー法を表す下式（２）により、対象エージェントキャラクタＡＣの現在の速度Ｖ１及び位置Ｐ１を演算する。なお、式（２）において、Δｔは前回の垂直帰線割込時から今回の垂直帰線割込時までの時間（１／６０秒）を表しており、加速度αの絶対値は外部パラメータとして与えられる固定値である。
【００３０】
【数２】
2004062676.tif 000004
【００３１】
すなわち、図１１（Ａ）に示すように、速度Ｖａで移動し位置Ｐａに存在するエージェントキャラクタＡＣは、目標点がＶｔで移動して点Ｐｔに位置するときに加速度αが発生すると考え、図１１（Ｂ）に示すように、Ｐａ−Ｐｔ間の距離ｄが２ｍより大きいときは、加速度αの絶対値を固定値として抑制し（運動性能を下げ）、エージェントキャラクタＡＣが目標点Ｐｔに追いつけないようにするが、この段階では未だ対象エージェントキャラクタＡＣの方向が加味されておらず、エージェントキャラクタＡＣは、方向を持たないパーティクル（質点）として把握される。これは、オイラー法をそのまま用いて速度Ｖａの方向を表現しようとすると、エージェントキャラクタＡＣにも方向があるため、逆方向への瞬時の変更を表現すると不自然となり、徐々に方向を変更する様子を表現する必要があるためである。このため、本実施形態では、垂直帰線割込毎にエージェントキャラクタＡＣの方向を変化させるために、以下のステップ２１４〜ステップ２２４において、対象エージェントキャラクタＡＣに対するパーティクル的な制御に方向制御を加味した、方向を持ったパーティクル制御を実行する。
【００３２】
ステップ２１４では、加速度αを接線加速度と求心加速度とに分解する。すなわち、図１２（Ａ）に示すように、方向ベクトルｄの方向に移動していたエージェントキャラクタＡＣに加速度αが加わった場合を考えと、図１２（Ｂ）に示すように、エージェントキャラクタＡＣに働く加速度αを、方向ベクトルｄの方向成分を表す接線加速度αｔａｎと、接線加速度αｔａｎに直交する求心（又は法線）加速度αｎｏｒｍとに分解する。なお、方向ベクトルとは、大きさについて意味を持たない単位ベクトルで、方向だけが意味を持つベクトル（ｘ，ｙ，ｚ）をいう。なお、加速度α、接線加速度αｔａｎ、求心加速度αｎｏｒｍ間には、α＝αｔａｎ＋αｎｏｒｍの関係がある。接線加速度αｔａｎの成分については、上述した式（２）を用いることで、位置及び速度を求めることができる。
【００３３】
次のステップ２１６では、加速度α及び接線加速度αｔａｎから求心加速度αｎｏｒｍを演算する（αｎｏｒｍ＝α−αｔａｎ）。これにより、対象エージェントキャラクタＡＣの新たな位置は定まるが、このとき式（２）で得られる最新速度Ｖ１については大きさ（スカラ値）としては使用するが、方向としては使用しない。すなわち、図１２（Ｃ）に示すように、対象エージェントキャラクタＡＣが点Ｐ０から点Ｐ１に移動する場合に、最新速度Ｖ１を同時にθ°回転させることを考える。
【００３４】
このため、ステップ２１８では、対象エージェントキャラクタＡＣの求心加速度及び速度から角速度ω（ｒａｄ／ｓ）を演算する。図１２（Ｄ）に示すように、速度ｖと求心加速度αｎｏｒｍが直交するときは、速度ｖと求心加速度αｎｏｒｍとに直交する方向に回転軸が生じ、その回転軸の長さが角速度ωとなる。この関係を式で表すと、下式（３）のようになる。なお、式（３）において、「×」は外積を表しており、速度ｖは最新速度Ｖ１となる。
【００３５】
【数３】
2004062676.tif 000005
【００３６】
式（３）は外積を用いているため、角速度ωをαｎｏｒｍ／ｖとして単純に計算することができない。このため、下式（４）に示すように、ベクトルの三重積の式を用いて角速度ωを演算する。なお、速度ｖと回転軸とは９０°のため、ωとｖとの内積は０となる。
【００３７】
【数４】
2004062676.tif 000006
【００３８】
次にステップ２２０では、角速度ωから対象エージェントキャラクタＡＣの１フレームでの回転角θをθ＝ωΔｔとして演算する。次のステップ２２２では、対象エージェントキャラクタＡＣの速度（のスカラ値）、位置、方向（回転角θ）が画定したので、ステップ２２４で対象エージェントキャラクタＡＣの位置及び速度を回転角θだけ回転した状態でＲＡＭに記憶して、ステップ２０２へ戻る。すなわち、図１３に示すように、次のフレームで使用するために、最新速度Ｖ１を回転角θだけ回転して現在の速度としておく。
【００３９】
なお、以上の方向を持ったパーティクル制御では、ステップ２１６でたとえαｎｏｒｍが０であっても、仮想モデルＩＭのモーションは絶えず行われ各頂点は移動するので、ステップ２１４での加速度成分の分解処理は常に行われる（対象エージェントキャラクタＡＣが回転している期間をフラグ制御しているわけではない。）。また、対象エージェントキャラクタＡＣの最新速度Ｖ１がマイナスとなって折り返しても、式（３）、（４）により角速度ωを演算することができる（フラグ制御しているわけではない。）。
【００４０】
一方、ステップ２０２で肯定判断のときは、各エージェントキャラクタＡＣの速度、位置、方向を更新するために、ステップ２２６で行列による回転演算を行う。このような行列による回転演算は、例えば、中前栄八郎、西田友是共著、株式会社昭晃堂発行、「３次元コンピュータグラフィックス」等に開示されているように、公知の技術である。これにより、図１２（Ｃ）に示すように、例えば、前回の垂直帰線割込時にＰ０に位置していたエージェントキャラクタＡＣは更新された位置Ｐ１で回転角θだけ回転した状態となる。
【００４１】
次のステップ２２８では、ステップ２２６で演算したデータを画像処理部２３に送出する。これにより、画像処理部２３は、光源処理等の通常の描画処理を行って、垂直帰線割込周期でテレビモニタ４に画像データを送出して、揺らぎ・うねり処理サブルーチン及び３次元群れ制御処理サブルーチンを終了し、図４のステップ１１０に進む。テレビモニタ４上には、垂直帰線割込周期毎に多数のエージェントキャラクタＡＣが群れ全体として１つ生物であるかのように動的に描画される（図１５（Ａ）〜（Ｃ）参照）。なお、図６のステップ１５２で肯定判断のときは、ステップ１５８で仮想モデルＩＭの別のモーション（例えば、歩く等のモーション）を開始して３次元群れ制御処理サブルーチンを終了し、図４のステップ１１０に進む。
【００４２】
ステップ１１０では、ステップ１０６でゲームを終了させるための所定ボタンが押下された否かを判断し、否定判断のときは、ステップ１０４へ戻り、肯定判断のときは、群れ制御ルーチンを終了する。
【００４３】
（作用等）
次に、本実施形態のビデオゲームの作用等について説明する。
【００４４】
本実施形態では、３次元のポリゴンモデル（仮想モデルＩＭ）を用意し（ステップ１２４）、仮想モデルＩＭの頂点を追随するように、各エージェントキャラクタに式（１）に示した運動性能（加速度α）を与えることによって（ステップ２０８、２１０）、詳細を後述する、ある程度の揺らぎを持ったエージェントキャラクタの集合形態（群れ）と、ある傾向を持った無秩序なエージェントキャラクタの集合形態とを同時に実現し、追随させる仮想モデルＩＭにモーションを付与することによって（ステップ１３２、１５８）、エージェントキャラクタの群れ全体があたかも１個の生物であるかのように動く状態を描画している（図１５参照）。
【００４５】
その際、エージェントキャラクタの運動性能を適度に制御し、仮想モデルＩＭの頂点座標の位置と完全には一致しない位置に移動させることによって（ステップ２０８）、ある程度の揺らぎを持った集合形態を表現している。すなわち、図１５（Ａ）〜（Ｃ）に示すように、仮想モデルＩＭの胴体部分では頂点のモーション（移動量）が小さいが、胴体部分の頂点を目標点Ｔとして追随するエージェントキャラクタは、仮想モデルＩＭの各頂点の移動開始に時差が生じるため距離ｄが微妙に異なり、異なる距離ｄによって式（１）に従って運動性能として加速度αが付与されるので、胴体部分の頂点間の距離とは異なった間隔で配置され揺らいでいるように見える。このため、胴体部分のエージェントキャラクタは一様に同一距離を動いているようには見えず、バラバラでエージェントキャラクタが各々個性を持った自然な動きをするように見える。本発明者は、図８（Ｄ）に示した例で、−２（ｍ）≦距離ｄ≦２（ｍ）の範囲の中でも、目標点Ｔからの距離ｄが±０．２（ｍ）以内のときに、エージェントキャラクタＡＣの揺らぎが顕著に表れることを確認した。
【００４６】
一方、エージェントキャラクタの運動性能を更に抑制すると、殆ど仮想モデルＩＭの形状を留めないようになる。すなわち、仮想モデルＩＭの腕部は大きく移動し、エージェントキャラクタの加速度αは固定値（例えば、２０ｍ／ｓ２）となるが、この固定値をより小さくして運動性能を低下させると、図１６（Ｂ）に示すように、腕部のエージェントキャラクタは目標点に追随できず無秩序状態に近くなる。しかし、例えばブラウン運動のような無秩序状態では、単に混沌としているだけで、そこに群れとして視覚的な面白さはない。本実施形態では、エージェントキャラクタを低い運動性能に制限したまま仮想モデルの頂点を追随させることによって（ステップ２１０）、追随が不完全で明確なエージェントキャラクタの集合形態は認識できないものの、腕部のエージェントキャラクタ全体の動きとして、ある種の傾向を持った無秩序な分布（腕部を構成するとどうにか認識可能な分布）が生じ（動的には大きなうねりのような動きが表現され）、非常に興味深い動きの描画が可能となる（図１５（Ｃ）、図１６（Ｂ）参照）。
【００４７】
従って、本実施形態では、エージェントキャラクタＡＣに、図８（Ｄ）に示す運動性能を与えることで、仮想モデルＩＭの頂点座標の移動量が大きいほどエージェントキャラクタＡＣとのズレが生じてある種の傾向を持った無秩序な分布となり、移動量が小さくなるにつれてズレも小さくなってある程度の揺らぎを持った分布となる。
【００４８】
また、本実施形態では、各エージェントキャラクタＡＣを質点として扱うパーティクル的な制御を基本としてそれに簡易的な方向制御を加えた、方向を持ったパーティクル制御によりエージェントキャラクタの方向を設定している（ステップ２１４〜２２４）。このため、剛体に関する運動方程式を解いたり、慣性テンソルを用いる場合に比べ、比較的軽い演算量で剛体を制御することができ、現状の家庭用ゲーム機の性能でも、リアルタイムに数百若しくは千を超えるエージェントキャラクタを垂直帰線割込周期毎に処理することが可能となる。また、数学的にも単純な力（エージェントキャラクタの質量を１としているので、加速度と同じ意味となる。）の分解を行っているだけなので、その扱いは簡単である。従って、本実施形態では、３次元仮想空間で多数のエージェントキャラクタで構成される群れのそれぞれのエージェントキャラクタの方向に不自然な様子のない群れ制御を実現することができる。
【００４９】
更に、本実施形態では、非表示の仮想モデルＩＭを用意し、その頂点座標にエージェントキャラクタを配置するが（ステップ１２２〜１２８）、仮想モデルＩＭの外形の形状・大きさごとに、計算により一定間隔で要素キャラクタを配置するといった発想ではなく、非可視の仮想モデルを用いることで、プログラム作成上、群れ全体を通常表示される１つのポリゴンモデルの場合と同様に取り扱うことができる。各エージェントキャラクタの配置の間隔は、仮想モデルを作成した時点で既に決まっているので、その表示処理の最中に等間隔をとるといった演算を必要としない。また、本実施形態では、仮想モデル全体のモーションが基本的に１つ再現される。つまり、各エージェントキャラクタは、そのモーションに連動して変化する仮想モデルＩＭの頂点座標を追随するように配置すればよいので、各エージェントキャラクタのモーションを用意して処理する必要がない。このため、プログラム作成上、群れ全体の取り扱いが容易となる。また、見た目にも複雑な外形を保つことができ、変化に富んだ描画となる。
【００５０】
そして、本実施形態では、プレイヤが入力装置３を操作することで、仮想モデルＩＭの体中に視点を移動することも可能である。通常、ゲーム等ではポリゴンモデルの中に視点を入ることはできないように処理されており、仮に１つのポリゴンモデルの中に入れたとしても周囲が面で囲まれしまう。本実施形態では、視点を仮想モデルＩＭの中に位置させることで、プレイヤは周りがエージェントキャラクタで囲まれた３６０°の世界を楽むことができる。
【００５１】
なお、本実施形態では、ステップ１５８で同一の仮想モデルＩＭの別のモーションを開始する例を示したが、例えば、別の仮想モデルのモーションに切り換えるようにしてもよい。このようにすれば、プレイヤを飽きさせないゲームとすることができる。この場合に、仮想モデルＩＭの種々のモーションによって、図８（Ｄ）の固定値の値をそのモーションの最大加速度を与えるモーションの１／２程度に設定することが好ましい。
【００５２】
また、本実施形態では、エージェントキャラクタに鳥等の飛行体を例示したが、本発明はこれに限られることなく、例えば、水中の魚等の群れや宇宙空間における宇宙船の群れ等にも適用が可能である。この場合には、式（１）に示した傾き−ｋや図８（Ｄ）に示した距離ｄ等の値を変更すればよい。
【００５３】
更に、本実施形態では、３次元仮想空間における仮想モデルＩＭの大きさに応じた距離ｄや加速度αを例示したが、仮想モデルＩＭの大きさが変われば、これらの値が変わることは云うまでもない。
【００５４】
また、本実施形態では、垂直帰線割込周期毎に全てのエージェントキャラクタの加速度等を演算する例を示したが、例えば、距離ｄが１ｍ未満の場合にはエージェントキャラクタの位置の変更が大きくないので前回の位置と同じ位置として処理するようにしてもよい。このようにすれば、顕著な揺らぎを表現することはできなくなるももの、演算負荷が減少する分更に群れを構成するエージェントキャラクタの数を増加させることができる。
【００５５】
更に、本実施形態ではゲームプログラムやゲームデータを記録した記録媒体１を媒体読取部２２で読み取ることによりＲＡＭへプログラムを転送するようにしたが、媒体読取部２２を備えずＲＯＭにゲームプログラムを記憶してこのＲＯＭからゲームプログラムやゲームデータを読み出すようにしてもよい。このようにすれば、ゲーム専用機とすることができる。また、本実施形態では、記録媒体としてＣＤ−ＲＯＭを使用する例で説明したが、ＣＰＵブロック２０のＲＡＭにロード可能なＲＯＭカートリッジや大容量のディスク、マグネットオプティカルディスク等であっても、これらの媒体読取部を備えていれば本発明を適用することができることは論を待たない。
【００５６】
また、本実施形態では、一定間隔で行うため、垂直帰線周期の割込処理内でエージェントキャラクタの加速度、位置演算を行う例を示したが、タイマ割込処理内やメイン処理内で行われるようにしてもよい。
【００５７】
そして、本実施形態では、式（２）でエージェントキャラクタの位置を求めるときにΔｔ２を含む第３項を含むオイラー法を例示したが、第３項の演算を省略してＣＰＵの負荷を軽減するようにしてもよい。
【００５８】
【発明の効果】
以上説明したように、本発明によれば、群れを構成する多数のキャラクタが非表示の３次元ポリゴンモデルの頂点に追随するように運動性能が付与されるので、各キャラクタ毎にモーションを用意する必要がなく処理の簡素化が図られると共に、キャラクタ全体が恰も１つの生物のように動く様子を表現することができる、という効果を得ることができる。
【図面の簡単な説明】
【図１】家庭用ゲーム装置の接続態様を示す概略斜視図である。
【図２】家庭用ゲーム装置に使用される入力装置の平面図である。
【図３】ゲーム装置本体の概略構成を示すブロック図である。
【図４】ゲーム装置本体のＣＰＵが実行する群れ制御ルーチンのフローチャートである。
【図５】群れ制御ルーチンのステップ１０２の詳細を示す初期設定処理サブルーチンのフローチャートである。
【図６】群れ制御ルーチンのステップ１０８の詳細を示す３次元群れ制御処理サブルーチンのフローチャートである。
【図７】３次元群れ制御処理サブルーチンのステップ１５６の詳細を示す揺らぎ・うねり処理サブルーチンのフローチャートである。
【図８】エージェントキャラクタの運動性能を示す説明図であり、（Ａ）はエージェントキャラクタの目標点までの距離と加速度との関係、（Ｂ）はエージェントキャラクタの目標点までの距離と速度との関係、（Ｃ）はエージェントキャラクタの速度と単振動との関係、（Ｄ）は実施形態で設定した加速度等の一例を示す。
【図９】目標点の軌跡とエージェントキャラクタの軌跡との関係を示す説明図である。
【図１０】エージェントキャラクタ間の加速度を模式的に示す説明図である。
【図１１】エージェントキャラクタとオイラーの運動方程式との関係を示す説明図であり、（Ａ）はエージェントキャラクタの位置、目標点及び加速度の関係、（Ｂ）はエージェントキャラクタに設定される加速度の絶対値を示す。
【図１２】エージェントキャラクタの方向制御を示す説明図であり、（Ａ）はエージェントキャラクタの方向ベクトルと加速度との関係、（Ｂ）はエージェントキャラクタの加速度の求心加速度と接線加速度との関係、（Ｃ）はエージェントキャラクタの回転角、（Ｄ）は直交座標系におけるエージェントキャラクタの速度、求心加速度及び角速度の関係を示す。
【図１３】エージェントキャラクタの移動方向を模式的に示す説明図である。
【図１４】初期設定状態での仮想モデルとエージェントキャラクタとの関係を模式的に示す説明図であり、（Ａ）は３次元仮想空間における仮想モデル、（Ｂ）は仮想モデルに配置されるエージェントキャラクタを示す。
【図１５】仮想モデルが腕を振るモーションを行ったときのエージェントキャラクタの状態を模式的に示す説明図であり、（Ａ）は状態その１、（Ｂ）は状態その２、（Ｃ）は状態その３、（Ｄ）は状態その３のときの仮想モデルとエージェントキャラクタとの関係を示す。
【図１６】図１５とは異なる視点でエージェントキャラクタを見たときの状態を模式的に示す説明図であり、（Ａ）は仮想モデルの腕部の頂点の動きを大きくしたとき、（Ｂ）は仮想モデルの腕部の頂点の動きを更に大きくしたときの状態を示す。
【符号の説明】
１　記録媒体
１０　ゲーム装置
２０　ＣＰＵブロック（モデルデータ付与手段、運動性能付与手段、位置演算手段、回転角演算手段）
【図１】
2004062676.tif 000007
【図２】
2004062676.tif 000008
【図３】
2004062676.tif 000009
【図４】
2004062676.tif 000010
【図５】
2004062676.tif 000011
【図６】
2004062676.tif 000012
【図７】
2004062676.tif 000013
【図８】
2004062676.tif 000014
【図９】
2004062676.tif 000015
【図１０】
2004062676.tif 000016
【図１１】
2004062676.tif 000017
【図１２】
2004062676.tif 000018
【図１３】
2004062676.tif 000019
【図１４】
2004062676.tif 000020
【図１５】
2004062676.tif 000021
【図１６】
2004062676.tif 000022