説明

画像生成システム、プログラム及び情報記憶媒体

【課題】少ない処理負荷で、群れをなす移動体オブジェクトの動きをリアルに表現できる画像生成システム、プログラム及び情報記憶媒体を提供する。
【解決手段】移動体オブジェクト制御部110が、複数の移動体オブジェクトを第1〜第N(Nは2以上の整数)のグループに分割する。移動体オブジェクト制御部110が、第1のグループに属する1又は複数の移動体オブジェクトを、オブジェクト空間に配置されたターゲットの位置に向かう方向に移動するように移動制御する。また移動体オブジェクト制御部110が、第j(2≦j≦N、jは整数)のグループに属する移動体オブジェクトを、第(j−1)のグループに属する1又は複数の移動体オブジェクトのいずれか1つの位置に向かう方向に移動するように移動制御する。画像生成部120は、移動体オブジェクト制御部110によって移動制御された移動体オブジェクトの画像を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像生成システム、プログラム及び情報記憶媒体に関する。
【背景技術】
【0002】
画像生成システムの処理速度が向上し、画面上により多くのキャラクタを表示できるようになっている。例えばゲーム画像において、エフェクト効果を表現するために動物や虫などの群れを表現した画像を表示することで、リアルさを高めることができる。
【0003】
ところが、群れを表現する画像の生成にはリアルタイム性が要求されるため、群れを構成する複数のキャラクタをそれぞれ別個に処理すると、他の処理を圧迫してしまう。そのため、より少ない負荷で、リアルな群れを表現する画像を生成できることが望ましい。
【0004】
例えば特許文献1には、群れの中の1つのキャラクタをリーダーとして決定し、該群れの他のキャラクタをリーダーに追従させることで、処理負荷を軽減する方策が開示されている。
【特許文献1】特開2000−172868号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に開示された方策では、群れ全体の動きを表現できるものの、群れの中のキャラクタの個々の細かい動きを表現することが難しい。群れの中のキャラクタの個々の細かい動きを表現することで、よりリアルな画像を生成できる。
【0006】
例えばキャラクタに応じて異なる行動パターンを各キャラクタに反映させることが考えられる。虫キャラクタ(広義には移動体オブジェクト)等の群れが逃避行動を行う行動パターンを表現する場合、キャラクタごとに逃避行動の動作を指定すると、データ量の増大や処理の複雑化を招く。また、多種多様なキャラクタの動きを実現することが困難となる。
【0007】
また群れて行動するキャラクタを表現できたとしても、キャラクタ同士が衝突する場合がある。このとき衝突を回避させる処理をしなければ、キャラクタ同士がすり抜けて動き回り、表現に違和感が残るという問題がある。従って、群れて行動するキャラクタ同士の衝突回避を、より少ない処理負荷で実現することが必要である。
【0008】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、より少ない処理負荷で、群れをなす移動体オブジェクトの動きをよりリアルに表現できる画像生成システム、プログラム及び情報記憶媒体を提供することにある。
【課題を解決するための手段】
【0009】
本発明は、画像を生成するための画像生成システムであって、オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部とを含み、前記移動体オブジェクト制御部が、複数の移動体オブジェクトを第1〜第N(Nは2以上の整数)のグループに分割し、前記第1のグループに属する1又は複数の移動体オブジェクトを、前記オブジェクト空間に配置されたターゲットの位置に向かう方向に移動するように移動制御し、第j(2≦j≦N、jは整数)のグループに属する移動体オブジェクトを、第(j−1)のグループに属する1又は複数の移動体オブジェクトのいずれか1つの位置に向かう方向に移動するように移動制御する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0010】
本発明においては、第1のグループに属する各移動体オブジェクトがすべてターゲットの位置に向かう方向に移動するようになるのに対し、第2のグループ以降の第jのグループに属する各移動体オブジェクトが、前の第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置に向かう方向に移動するようになる。こうすることで、例えば群れの中心位置とターゲットの位置とを結んだ直線上に移動体オブジェクトが集まってしまい、線状の群れが表現されてしまうことがなく、広がりを持った帯状の群れを表現することができるようになる。
【0011】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、第k(kは自然数)のフレームより少なくとも2フレーム以上過去の第(k−m)(k>m≧2、mは整数)のフレームにおける前記ターゲットの位置を記憶する遅延バッファを含み、前記移動体オブジェクト制御部が、前記第kのフレームにおいて、前記遅延バッファから前記第(k−m)のフレームにおける前記ターゲットの位置を読み出し、前記第1のグループに属する1又は複数の移動体オブジェクトを、前記第(k−m)のフレームにおける前記ターゲットの位置に向かう方向に移動するように移動制御してもよい。
【0012】
ここでフレームは、シミュレーション処理や画像処理を行う時間単位である。
【0013】
本発明によれば、第1のグループに属する移動体オブジェクトが、ターゲットの動きに一斉に反応して動き出すことなく、第1のグループに属する群れを構成する移動体オブジェクトの個々の動きをよりリアルに表現できる。
【0014】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記遅延バッファが、前記第(k−m)のフレームにおける第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置を記憶し、前記移動体オブジェクト制御部が、前記第kのフレームにおいて、前記遅延バッファから前記第(k−m)のフレームにおける前記第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置を読み出し、前記第jのグループに属する移動体オブジェクトを、前記第(k−m)のフレームにおける前記第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置に向かう方向に移動するように移動制御してもよい。
【0015】
本発明によれば、第2のグループ以降のグループに属する移動体オブジェクトが、前のグループの動きに一斉に反応して動き出すことなく、第2のグループ以降のグループに属する群れを構成する移動体オブジェクトの個々の動きをよりリアルに表現できる。
【0016】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、当該フレームにおいて求められた第1の移動ベクトルに従って移動した場合の第1の移動体オブジェクトの位置が、第2の移動体オブジェクトに対して設定された衝突感知エリア内にあるとき、前記第1の移動ベクトルの方向と反対方向の第2の移動ベクトルに基づいて前記第1の移動体オブジェクトの移動制御を行ってもよい。
【0017】
本発明によれば、両者の位置及び移動ベクトルを用いることなく、第1の移動体オブジェクトの第1の移動ベクトルのみを用いて、第1及び第2の移動体オブジェクトの衝突回避処理を行うことができる。一般的に、各移動体オブジェクトの移動制御を行うために、移動ベクトルが求められる。従って、第1の移動ベクトルのみを用いて衝突回避処理を行うことで、処理負荷を軽減できる。特に、群れを構成する移動体オブジェクトの衝突回避処理を行う場合、処理負荷の軽減の効果は著しい。そして、移動体オブジェクト同士がすり抜けて動き回り、表現に違和感が残るという問題を解消できる。
【0018】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記第1の移動体オブジェクトの特性に関連付けて、前記第2の移動ベクトルの長さを変更してもよい。
【0019】
ここで、特性に関連付けて第2の移動ベクトルの長さを変更するとは、該特性に対応した第2の移動ベクトルの長さに変更するということができる。更に言い換えれば、該特性に1対1に対応した第2の移動ベクトルの長さに変更するということができる。
【0020】
本発明によれば、第1の移動体オブジェクトの特性に応じて衝突回避した後の動きを変更できるので、第1の移動体オブジェクトにより構成される群れの個々の性格(臆病、大胆不敵等)に応じた表現が可能となる。
【0021】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記衝突感知エリアは、前記第2の移動体オブジェクトを基準に、前記第2の移動体オブジェクトの特性に関連付けられた大きさの範囲であってもよい。
【0022】
ここで、特性に関連付けられた大きさの範囲とは、該特性に対応した大きさの範囲ということができる。更に言い換えれば、該特性に1対1に対応した大きさの範囲ということができる。
【0023】
本発明によれば、移動体オブジェクトの特性に応じた範囲内で衝突回避処理を行うことでき、様々な群れの動きに合わせた衝突回避処理を実現できる。
【0024】
また本発明は、画像を生成するための画像生成システムであって、オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部とを含み、前記移動体オブジェクト制御部が、当該フレームにおける第1の移動体オブジェクトの第1の移動ベクトルと、第2の移動体オブジェクトに対して設定された衝突感知エリアの境界との交点を用いて前記第1の移動ベクトルを補正した第2の移動ベクトルを求め、該第2の移動ベクトルに基づいて、前記第1の移動体オブジェクトを移動制御する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶(記録)した情報記憶媒体に関係する。
【0025】
ここで第1の移動ベクトルと境界との交点とは、第1の移動ベクトルの始点と終点とを結ぶ線分と境界との交点ということができる。
【0026】
本発明によれば、第1の移動ベクトル(第1の移動ベクトルの始点と終点とを結ぶ線分)と、衝突感知エリアの境界との交点を求めることで、衝突の可能性が高いか否かを検出できる。更に、その交点を再利用して、第1の移動ベクトルを補正した第2の移動ベクトルを求めることで、1つの交点を求めるだけで衝突の検出と、その回避とを実現でき、処理負荷を軽減できる。
【0027】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、当該フレームにおける前記第2の移動体オブジェクトの位置と前記交点の位置とに基づいて求められる補正点と、前記第1の移動体オブジェクトの位置とを用いて前記第2の移動ベクトルを求めてもよい。
【0028】
本発明によれば、第2の移動体オブジェクトに衝突しない方向の第2の移動ベクトルに従って第1の移動体オブジェクトの移動制御を行うことができ、確実な衝突回避を、より少ない処理負荷で実現できる。
【0029】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記補正点と前記第1の移動体オブジェクトの位置とに基づいて求められる補正ベクトルと、前記第1の移動ベクトルとを、補間パラメータに基づいて補間して、前記第2の移動ベクトルを求めてもよい。
【0030】
本発明によれば、衝突回避後の移動方向の調整を行うことができ、よりリアルな群れに表現に貢献できる。
【0031】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記移動体オブジェクト制御部が、前記第1又は第2の移動体オブジェクトの特性に関連付けられた補間パラメータに基づいて、前記補正ベクトルと前記第1の移動ベクトルとを補間して、前記第2の移動ベクトルを求めてもよい。
【0032】
ここで、特性に関連付けられた歩間パラメータとは、該特性に対応した補間パラメータということができる。更に言い換えれば、該特性に1対1に対応した補間パラメータということができる。
【0033】
本発明によれば、移動体オブジェクトにより構成される群れの個々の性格に応じた表現が可能となる。
【発明を実施するための最良の形態】
【0034】
以下、本実施形態について説明する。
【0035】
なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【0036】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)の機能ブロック図の例を示す。なお、本実施形態の画像生成システムは、図1の構成要素(各部)を全て含む必要はなく、その一部(例えば操作部160、携帯型情報記憶装置194又は通信部196等)を省略した構成としてもよい。
【0037】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、シフトレバー、アクセルペダル、ブレーキペダル、マイク、センサ、タッチパネル型ディスプレイ、或いは筺体などのハードウェアにより実現できる。
【0038】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAMなどのハードウェアにより実現できる。
【0039】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などのハードウェアにより実現できる。処理部100は、この情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶(記録、格納)される。
【0040】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などのハードウェアにより実現できる。
【0041】
音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどのハードウェアにより実現できる。
【0042】
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などがある。
【0043】
通信部196は、外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0044】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に配信するようにしてもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0045】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの各種の処理を行う。ここで処理部100が行うゲーム処理としては、ゲーム開始条件(コースやマップやキャラクタや参加プレーヤ人数の選択等)が満たされた場合にゲームを開始させる処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了させる処理などがある。また処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、DSP等)やASIC(ゲートアレイ等)などのハードウェアや、プログラム(ゲームプログラム)により実現できる。
【0046】
処理部100は、移動体オブジェクト制御部110、画像生成部120、音生成部130を含む。なおこれらの一部を省略してもよい。
【0047】
移動体オブジェクト制御部110は、オブジェクト空間における移動体オブジェクトを移動制御する処理を行う。移動体オブジェクト制御部110は、オブジェクト空間に設定された複数の移動体オブジェクトの移動制御を行うことができる。そして、各移動体オブジェクトに付与されたパラメータ設定による同種の行動パターンに基づく移動制御を行い、より少ない処理負荷で、群れて行動する様子をリアルに実現できる。
【0048】
また移動体オブジェクト制御部110は、移動体オブジェクトの移動情報(移動ベクトル、位置情報、方向情報、速度情報或いは加速度情報)を求める処理を行う。移動体オブジェクト制御部110は、操作部160によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、移動体オブジェクトをオブジェクト空間内で移動させる処理を行う。
【0049】
より具体的には、移動体オブジェクト制御部110は、求めた移動ベクトルに応じて、移動体オブジェクトの位置や回転角度(方向)を例えば1フレーム(1/60秒等)毎に変化させる。例えば(k−1)フレームでの移動体オブジェクトの位置(X、Y又はZ座標)、回転角度(X、Y又はZ軸回りの回転角度)をPk-1、θk-1とし、移動体オブジェクトの1フレームでの位置変化量(速度)、回転変化量(回転角度)をΔP、Δθとする。すると、kフレームでの移動体オブジェクトの位置Pk、回転角度θkは例えば下式(1)、(2)のように求められる。
【0050】
Pk=Pk-1+ΔP (1)
θk=θk-1+Δθ (2)
なお移動体オブジェクト制御部110で行われる処理は、上式(1)、(2)の処理に限定されず、(1)、(2)式と均等な処理でもよい。
【0051】
また移動体オブジェクト制御部110は、複数の移動体オブジェクトを複数のグループに分割し、各グループに属する移動体オブジェクトをそれぞれ移動制御する。そして、各移動体オブジェクトを、オブジェクト空間に配置されるターゲットの位置、又は他のグループに属する移動体オブジェクトの位置に向かう方向に移動するように移動制御する。
【0052】
ここで、ターゲットは、処理部100によって、オブジェクト空間内に仮想的に配置される。処理部100は、操作部160からの操作データやプログラムに基づくゲーム処理の処理結果に応じた位置に、ターゲットを配置する。そして、例えば移動体オブジェクトの位置が、現在のターゲットの位置に向かう方向に該移動体オブジェクトの移動ベクトルを求めると共に、ターゲットの位置がゲーム処理の処理結果に応じた位置となるように該ターゲットの移動ベクトルを求める。求められた移動ベクトルに基づきそれぞれ移動制御された移動体オブジェクト及びターゲットの描画処理を行うことで、移動体オブジェクトがターゲットに追従する動きを表現する画像を生成できる。
【0053】
移動体オブジェクト制御部110は、グループ分割部112、追従処理部114、衝突回避処理部116を含む。なおこれらの一部を省略してもよい。
【0054】
グループ分割部112(広義には移動体オブジェクト制御部110)は、複数の移動体オブジェクトを、第1〜第N(Nは2以上の整数)のグループに分割する。例えば各移動体オブジェクトにはインデックス番号が付与され、インデックス番号に基づき各移動体オブジェクトを第1〜第Nのグループのいずれかに振り分けることができる。
【0055】
追従処理部114は、移動体オブジェクトが属するグループに応じて異なる目標物に、各移動体オブジェクトを追従させるための位置を演算する。移動体オブジェクト制御部110は、移動体オブジェクトを、追従処理部114によって求められた位置に移動するように移動制御する。
【0056】
より具体的には、追従処理部114は、第1のグループに属する1又は複数の移動体オブジェクトの目標物の位置として、オブジェクト空間に配置されたターゲット(ターゲットオブジェクト)の位置を出力する。また追従処理部114は、第j(2≦j≦N、jは整数)のグループに属する1又は複数の移動体オブジェクトの各移動体オブジェクトの目標物の位置として、第(j−1)のグループに属する1又は複数の移動体オブジェクトのいずれか1つの位置を出力する。
【0057】
なお追従処理部114は、各移動体オブジェクトの目標物の位置として、当該フレームより少なくとも2フレーム以上過去のフレームにおける目標物の位置を出力してもよい。
【0058】
衝突回避処理部116(広義には移動体オブジェクト制御部110)は、移動体オブジェクト同士の衝突を回避する処理を行う。より具体的には、衝突回避処理部116は、追従処理部114によって求められた位置に移動させた場合の衝突を回避する処理を行う。例えば衝突回避処理部116は、当該フレームにおいて求められた第1の移動ベクトルに従って移動した場合の第1の移動体オブジェクトの位置が、第2の移動体オブジェクトに対して設定された衝突感知エリア内にあるか否かを判定する。そして第1の移動体オブジェクトの位置が、第2の移動体オブジェクトに対して設定された衝突感知エリア内にあると判定されたとき、移動体オブジェクト制御部110が、第1の移動ベクトルの方向と反対方向の第2の移動ベクトルを求め、該第2の移動ベクトルに基づいて第1の移動体オブジェクトの移動制御を行う。
【0059】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。即ち、移動体オブジェクト制御部110の処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。より具体的には、3次元画像を生成する場合には、まず座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理を行って、その処理結果に基づいて、描画データが作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数のプリミティブ面)を、描画バッファ176(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。
【0060】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0061】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【0062】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて生成してもよい。
【0063】
2. 本実施形態の手法
次に本実施形態の手法について図面を用いて説明する。
【0064】
2.1 グループの分割
図2に、本実施形態の手法を説明するための図を示す。
【0065】
本実施形態では、処理部100(或いは移動体オブジェクト制御部110)が、例えばゲーム処理に基づいて、オブジェクト空間に複数の移動体オブジェクトを配置する。
【0066】
移動体オブジェクト制御部110(狭義にはグループ分割部112)は、複数の移動体オブジェクトを第1〜第Nのグループに分割する。従って、各移動体オブジェクトは、第1〜第Nのグループのいずれかに属する。各グループには、1又は複数の移動体オブジェクトが属する。
【0067】
図3に、複数の移動体オブジェクトを複数のグループに分割した例を示す。ここでは、各移動体オブジェクトにインデックス番号が付与され、移動体オブジェクト数が100、分割グループ数が5とする。
【0068】
図3では、各グループに属する移動体オブジェクト数が均等になるように、複数の移動体オブジェクトを、インデックス番号の順序で5つのグループに分割している。各グループには、グループ番号が付与される。
【0069】
グループ分割部112は、このように移動体オブジェクトに付与されたインデックス番号に基づいてグループ番号を求めることで、複数の移動体オブジェクトを複数のグループに分割することができる。
【0070】
またグループ分割部112が複数の移動体オブジェクトを複数のグループに分割する方法は、これに限定されるものではなく、例えば対応表に従って各移動体オブジェクトを各グループに振り分けるようにしてもよい。更に、図3では各グループに属する移動体オブジェクト数が均等になるように分割しているが、本実施形態はこれに限定されるものではない。
【0071】
図2では、インデックス番号0〜8が付与される移動体オブジェクトMOBJ_0〜MOBJ_8により構成される群れMOBの画像が形成される場合を示している。この場合、移動体オブジェクトMOBJ_0〜MOBJ_8が、グループ番号0〜2が付与される第1〜第3のグループG1〜G3に分割される。即ちグループ分割部112が、各グループに均等にオブジェクト数が3となるように、オブジェクト数9の移動体オブジェクトを3つのグループに分割する。
【0072】
グループ番号0が付与される第1のグループG1には、インデックス番号0〜2が付与される移動体オブジェクトMOBJ_0〜MOBJ_2が属する。グループ番号1が付与される第2のグループG2には、インデックス番号3〜5が付与される移動体オブジェクトMOBJ_3〜MOBJ_5が属する。グループ番号2が付与される第3のグループG3には、インデックス番号6〜8が付与される移動体オブジェクトMOBJ_6〜MOBJ_8が属する。
【0073】
そして移動体オブジェクト制御部110が、グループ番号0が付与される第1のグループG1に属する移動体オブジェクトMOBJ_0〜MOBJ_2の各移動体オブジェクトを、ターゲットTGの位置に向かう方向に移動するように移動制御する。例えば第kのフレームで移動体オブジェクトMOBJ_0〜MOBJ_2の各移動体オブジェクトが移動制御されると、第k(kは自然数)のフレームの次のフレームの第(k+1)のフレームでは、当該移動体オブジェクトの第kのフレームにおける位置から第kのフレームにおけるターゲットの位置に向かう方向に移動した位置に当該移動体オブジェクトが配置される。
【0074】
また、移動体オブジェクト制御部110は、グループ番号(j−1)(2≦j≦N、jは整数)が付与される第jのグループに属する1又は複数の移動体オブジェクトの各移動体オブジェクトを、グループ番号(j−2)が付与される第(j−1)のグループに属する1又は複数の移動体オブジェクトのいずれか1つの位置に向かう方向に移動するように移動制御する。図2では、移動体オブジェクト制御部110は、グループ番号1が付与される第2のグループに属する移動体オブジェクトMOBJ_3〜MOBJ_5の各移動体オブジェクトを、グループ番号0が付与される第1のグループに属する移動体オブジェクトMOBJ_0〜MOBJ_2のいずれか1つの位置に向かう方向に移動するように移動制御する。より具体的には、第2のグループに属する移動体オブジェクトMOBJ_3を、第1のグループに属する移動体オブジェクトMOBJ_0の位置に向かう方向に移動するように移動制御する。同様に、移動体オブジェクトMOBJ_4を、第1のグループに属する移動体オブジェクトMOBJ_1の位置に向かう方向に移動するように移動制御する。移動体オブジェクトMOBJ_5を、第1のグループに属する移動体オブジェクトMOBJ_2の位置に向かう方向に移動するように移動制御する。
【0075】
また図2では、移動体オブジェクト制御部110は、グループ番号2が付与される第3のグループに属する移動体オブジェクトMOBJ_6〜MOBJ_8の各移動体オブジェクトを、グループ番号1が付与される第2のグループに属する移動体オブジェクトMOBJ_3〜MOBJ_5のいずれか1つの位置に向かう方向に移動するように移動制御する。より具体的には、第3のグループに属する移動体オブジェクトMOBJ_6を、第2のグループに属する移動体オブジェクトMOBJ−3の位置に向かう方向に移動するように移動制御する。同様に、移動体オブジェクトMOBJ_7を、第2のグループに属する移動体オブジェクトMOBJ_4の位置に向かう方向に移動するように移動制御する。移動体オブジェクトMOBJ_8を、第2のグループに属する移動体オブジェクトMOBJ_5の位置に向かう方向に移動するように移動制御する。
【0076】
図2では、第1〜第3のグループの例を示したが、グループ数が増加した場合であっても、移動体オブジェクト制御部110は、第4のグループ以降のグループの各移動体オブジェクトを、前のグループに属するいずれかの移動体オブジェクトの位置に向かう方向に移動するように移動制御する。
【0077】
このように、第1のグループに属する各移動体オブジェクトがすべてターゲットTGの位置に向かう方向に移動するようになるのに対し、第2のグループ以降の第jのグループに属する各移動体オブジェクトが、前の第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置に向かう方向に移動するようになる。
【0078】
追従処理部114は、移動体オブジェクトごとに、該移動体オブジェクトが属するグループに応じて、追従すべきターゲットの位置又は他のグループの移動体オブジェクトの位置を出力する。そして、移動体オブジェクト制御部110が、追従処理部114により求められた位置に移動するように当該移動体オブジェクトの移動制御を行う。
【0079】
図4に、移動体オブジェクトの追従処理の説明図を示す。図4では、各グループに属する移動体オブジェクト数が20であるものとする。各グループの移動体オブジェクトはインデックス番号により特定される。各移動体オブジェクトには、その位置(位置情報)を対応付けて示している。例えばグループ番号1が付与された第2のグループにおいて、インデックス番号22が付与された移動体オブジェクトMOBJ_22の位置がP22であることを示している。
【0080】
図4では、追従処理部114は第1のグループに属するすべての移動体オブジェクトMOBJ_0〜MOBJ_19に対してターゲットの位置TPを出力し、移動体オブジェクト制御部110が、第1のグループに属するすべての移動体オブジェクトMOBJ_0〜MOBJ_19を、ターゲットの位置TPに向かう方向に移動するように移動制御する。
【0081】
また、追従処理部114は、第2のグループに属する移動体オブジェクトに対して、当該移動体オブジェクトに対応する第1のグループの移動体オブジェクトの位置を出力し、移動体オブジェクト制御部110が、第2のグループに属する各移動体オブジェクトを、当該移動体オブジェクトに対応する第1のグループの移動体オブジェクトの位置に向かう方向に移動するように移動制御する。例えば追従処理部114は、第2のグループに属する移動体オブジェクトMOBJ_22に対して、移動体オブジェクトMOBJ_22に対応する第1のグループの移動体オブジェクトMOBJ_2の位置P2を出力する。そして、移動体オブジェクト制御部110が、移動体オブジェクトMOBJ_22を、位置P2に向かう方向に移動するように移動制御する。
【0082】
更に、追従処理部114は、第3のグループに属する移動体オブジェクトに対して、当該移動体オブジェクトに対応する第2のグループの移動体オブジェクトの位置を出力し、移動体オブジェクト制御部110が、第3のグループに属する各移動体オブジェクトを、当該移動体オブジェクトに対応する第2のグループの移動体オブジェクトの位置に向かう方向に移動するように移動制御する。
【0083】
例えば複数の移動体オブジェクトにより群れの画像を表現する場合、複数の移動体オブジェクトを、ターゲットの位置TPに追従させることが考えられる。ところが、この方法によれば、群れの中心位置とターゲットの位置とを結んだ直線上に移動体オブジェクトが集まってしまい、線状の群れが表現されてしまう。
【0084】
これに対して、本実施形態では、上述のように移動体オブジェクトが属するグループに応じて、ターゲットの位置又は他のグループの移動体オブジェクトの位置に追従させることで、ある直線上に集まることはなく、広がりを持った帯状の群れを表現することができるようになる。
【0085】
図5に、本実施形態における複数の移動体オブジェクトによる群れの画像の一例を示す。
【0086】
各移動体オブジェクトは、例えば嗜好物に猪突猛進的に素早い動きで近付くスカラベの動きを実現する。図5に示すようにオブジェクト空間に設定され起伏に富んだ地形マップGMAP上に、ターゲットTGと複数の移動体オブジェクトを配置する。
【0087】
この場合、ターゲットTGの位置に近付く群れを表現できる。例えば、ターゲットTGの位置を動かせば、上述のように分割された各グループの移動体オブジェクトがターゲットTGの位置に向かう方向に移動し、ターゲットTGを追跡する群れの動きを表現できる。
【0088】
2.2 ターゲット遅延
複数の移動体オブジェクトにより構成される群れの動きを、よりリアルに表現するため、移動体オブジェクトをターゲットTGの動きに即座に反応させないことが望ましい。本実施形態ではターゲット遅延により、移動体オブジェクトをターゲットTGの動きに即座に反応させないようにしている。
【0089】
図6に、ターゲット遅延の手法の説明図を示す。
【0090】
本実施形態における画像生成システムでは、第k(kは自然数)のフレームより少なくとも2フレーム以上過去の第(k−m)(k>m≧2、mは整数)フレームにおけるターゲットTG−(k−m)の位置TP−(k−m)を記憶する遅延バッファ174を含むことができる。より具体的には、遅延バッファ174は、記憶部170に含まれる。
【0091】
図7に、遅延バッファ174の機能を説明するための模式図を示す。遅延バッファ174は、FIFO(First-In First-Out)機能を有し、各フレームのターゲットの位置(位置情報)をmフレーム分記憶することができる。各フレームで求められたターゲットの位置を遅延バッファ174に格納すると、当該フレームのターゲットの位置はmフレーム経過後に遅延バッファ174から読み出される。
【0092】
即ち、追従処理部114(広義には移動体オブジェクト制御部110)が、第(k−m)のフレームにおいて遅延バッファ174に書き込まれたターゲットTG−(k−m)の位置TP−(k−m)を、mフレーム経過後の第kのフレームにおいて読み出す。
【0093】
そして、移動体オブジェクト制御部110が、第1のグループG1に属するすべての移動体オブジェクト(図6では移動体オブジェクトMOBJ_0、MOBJ_1)を、遅延バッファ174から読み出されたターゲットTG−(k−m)の位置TP−(k−m)に向かう方向に移動するように移動制御する。画像生成部120は、第kのフレームにおいて、移動体オブジェクト制御部110によって移動制御された移動体オブジェクトの画像を生成する。
【0094】
即ち、第1のグループG1に属する移動体オブジェクトMOBJ_0、MOBJ_1は、第kのフレームにおいて、第kのフレームにおけるターゲットTG−kの位置TP−kに向かう方向に移動するのではなく、第(k−m)のフレームにおけるターゲットTG−(k−m)の位置TP−(k−m)に向かう方向に移動する。
【0095】
こうすることで、第1のグループに属する移動体オブジェクトが、ターゲットTGの動きに一斉に反応して動き出すことなく、群れを構成する移動体オブジェクトの個々の動きをよりリアルに表現できる。
【0096】
なお、遅延バッファ174は、第2のグループ以降のグループに属する移動体オブジェクトが移動する位置についても、同様にmフレームだけ遅延させてもよい。即ち、遅延バッファ174は、第(k−m)フレームにおける第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置を記憶することができる。
【0097】
この場合、追従処理部114(広義には移動体オブジェクト制御部110)が、第kのフレームにおいて、遅延バッファ174から前記第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置を読み出す。そして、移動体オブジェクト制御部110が、第jのグループに属する移動体オブジェクトを、遅延バッファ174から読み出された第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置に向かう方向に移動するように移動制御する。画像生成部120は、第kのフレームにおいて、移動体オブジェクト制御部110によって移動制御された移動体オブジェクトの画像を生成する。
【0098】
こうすることで、第(j−1)のグループに属する移動体オブジェクトが、第jのグループの移動体オブジェクトの動きに一斉に反応して動き出すことなく、群れを構成する移動体オブジェクトの個々の動きをよりリアルに表現できる。
【0099】
2.3 衝突回避
本実施形態では、群れて行動するキャラクタ同士の衝突を回避する処理を、より少ない処理負荷で実現できる。こうすることで、キャラクタ同士がすり抜けて動き回り、表現に違和感が残るという問題を回避して、少ない処理負荷でリアルな群れを表現できる。
【0100】
図8に、本実施形態における衝突回避処理の説明図を示す。
【0101】
図8では、第1及び第2の移動体オブジェクトMOBJ_1、MOBJ_2の衝突回避処理の例を示している。第1及び第2の移動体オブジェクトMOBJ_1、MOBJ_2は、同一グループに属していてもよいし、それぞれ別個のグループに属していてもよい。
【0102】
第1の移動体オブジェクトMOBJ_1が、当該フレームにおいて求められた第1の移動ベクトルMV1に従って移動した場合、当該フレームの次のフレームで位置P1に第1の移動体オブジェクトMOBJ_1の画像が生成されるものとする。ここで第1の移動ベクトルMV1は、当該フレームにおいて、ターゲットの位置又は前のグループの移動体オブジェクトの位置に移動するために求められた移動ベクトルである。
【0103】
一方、第2の移動体オブジェクトMOBJ_2には、衝突感知エリアARが設定される。衝突感知エリアARは、第2の移動体オブジェクトMOBJ_2の位置を基準に、半径ResponseAreaの円内の範囲とすることができる。
【0104】
半径ResponseAreaの長さは、第2の移動体オブジェクトMOBJ_2の特性に関連付けて決めることが望ましい。即ち、衝突感知エリアARは、第2の移動体オブジェクトMOBJ_2を基準に、第2の移動体オブジェクトMOBJ_2の特性に関連付けられた大きさの範囲であることが望ましい。また、半径ResponseAreaの長さは、第1の移動体オブジェクトMOBJ_1の特性に関連付けて決めてもよい。
【0105】
当該フレームにおいて求められた第1の移動ベクトルMV1に従って移動した場合の第1の移動体オブジェクトMOBJ_1の位置P1が、第2の移動体オブジェクトMOBJ_2に対して設定された衝突感知エリアAR内にあるとき、衝突回避処理部116(広義には移動体オブジェクト制御部110)は、第1の移動ベクトルMV1の方向と反対方向の第2の移動ベクトルMV1Xに基づいて第1の移動体オブジェクトMOBJ_1の移動制御を行う。従って、当該フレームの次のフレームでは、第2の移動体ベクトルMV1Xに従って移動制御された第1の移動体オブジェクトMOBJ_1の画像が表示される。
【0106】
一般的に、各移動体オブジェクトの移動制御を行うために、移動ベクトルが求められる。一般的に、衝突判定処理には対象物の形状や位置及び移動ベクトルを使用して行われるが、本願実施形態では、両者の位置及び移動ベクトルのみを用いることで、その形状に伴う処理を省略することで、処理負荷を大幅に軽減できる。特に、群れを構成する移動体オブジェクトの衝突回避処理を行う場合、処理負荷の軽減の効果は著しい。
【0107】
また、キャラクタの動きを表現する移動体オブジェクトの特性に応じた範囲内で衝突回避処理を行うことでき、様々な群れの動きに合わせた衝突回避処理を実現できる。そして、移動体オブジェクト同士がすり抜けて動き回り、表現に違和感が残るという問題を解消できる。
【0108】
なお、衝突回避処理部116(移動体オブジェクト制御部110)は、第1の移動体オブジェクトMOBJ_1の特性に関連付けて、第2の移動ベクトルMV1Xの長さを変更することが望ましい。例えば第1の移動体オブジェクトMOBJ_1に関連付けられた反応感度を示すパラメータResponse(0以上1以下の係数)により、第1の移動ベクトルMV1を反転し、該ベクトルの長さをパラメータResponseで補正した長さとする。これにより、第1の移動体オブジェクトMOBJ_1の動きを表現したい群れの個々の性格(臆病、大胆不敵等)に応じて、衝突回避後の動きを表現できる。
【0109】
本実施形態における移動体オブジェクトの衝突回避処理は、図8で説明したものに限定されるものではない。
【0110】
図9に、本実施形態における衝突回避処理の他の例の説明図を示す。ただし、図8と同一部分には同一符号を付し、適宜説明を省略する。
【0111】
図9では、衝突回避処理部116(広義には移動体オブジェクト制御部110)が、当該フレームにおける第1の移動体オブジェクトMOBJ_1の第1の移動ベクトルMV1と、第2の移動体オブジェクトMOBJ_2に対して設定された衝突感知エリアARの境界との交点Cを用いて第1の移動ベクトルMV1を補正した第2の移動ベクトルMV1Xを求める。より具体的には、第1の移動体オブジェクトMOBJ_1の位置を始点とする第1の移動ベクトルMV1の始点と終点とを結ぶ線分と、衝突検知エリアARの境界(境界線)との交点Cを求める。そして、第2の移動体オブジェクトMOBJ_2の位置P2と交点Cとを結ぶ直線上に、補正点Dを求める。位置P2と交点Cとの距離と、交点Cと補正点Dとの距離は等しい。第2の移動ベクトルMV1Xは、第1の移動体オブジェクトの位置Pと補正点Dとを結ぶ方向である。
【0112】
そして、移動体オブジェクト制御部110は、第2の移動ベクトルMV1Xに基づいて、第1の移動体オブジェクトMOBJ_1を移動制御する。
【0113】
このように、図9では、第1の移動ベクトル(第1の移動ベクトルの始点と終点とを結ぶ線分)と、衝突感知エリアの境界との交点を求めることで、衝突の可能性が高いか否かを検出できる。更に、その交点を再利用して、第1の移動ベクトルを補正した第2の移動ベクトルを求めることで、1つの交点を求めるだけで衝突の検出と、その回避とを実現できる。
【0114】
なお、移動体オブジェクト制御部110は、以下のように補正された第2の移動ベクトルに基づいて移動制御を行ってもよい。
【0115】
図10に、本実施形態における衝突回避処理の更に他の例の説明図を示す。ただし、図9と同一部分には同一符号を付し、適宜説明を省略する。
【0116】
図10では、衝突回避処理部116(広義には移動体オブジェクト制御部110)が、補正点Dと第1の移動体オブジェクトMOBJ_1の位置Pとに基づいて求められる補正ベクトルMV3と、第1の移動ベクトルMV1とを、補間パラメータαに基づいて補間して、第2の移動ベクトルMV1Xを求める。
【0117】
より具体的には、補正ベクトルMV3は、図9と同様にして求められる。そして、補間パラメータαを用いて、次の式で補間する。
【0118】
MV1X=α・MV3+(1−α)・MV1 (3)
そして、補間パラメータαは、第1又は第2の移動体オブジェクトの特性に関連付けられていることが望ましい。こうすることで、第1の移動ベクトルMOBJ_1の正確に対応した動きに応じて、該第1の移動体オブジェクトMOBJ_1の衝突回避後の移動ベクトルの向きを、少ない処理負荷でリアルに表現できる。
【0119】
3. 本実施形態の処理
次に、本実施形態の詳細な処理例についてフローチャートを用いて説明する。
【0120】
本実施形態では、以下に示すような移動体オブジェクトの特性がパラメータ化された特性情報に基づいて移動制御が行われる。
【0121】
図11に、移動体オブジェクトの特性情報の一例を示す。
【0122】
キャラクタのいずれかの動きを実現するために、上述のパラメータの内容を変更すればよい。したがって、同じ処理をキャラクタの数だけ繰り返すだけでよく、処理の簡素化を実現できる。
【0123】
移動体オブジェクトの群れを構成するグループの分割数は、パラメータ「Group」に設定される。移動体オブジェクトのターゲットに関する関心度は、パラメータ「Interest」に設定される。移動体オブジェクトのターゲット遅延を行うか否かは、パラメータ「TargetDelay」に設定される。衝突回避の度合いは、衝突回避度を示すパラメータ「Response」に設定される。衝突感知エリアの範囲は、衝突回避の反応エリアを示すパラメータ「ResponseArea」に設定される。
【0124】
各移動体オブジェクトを、図11に示す特性情報に基づき、上述のような移動体オブジェクトの追従処理や衝突回避処理を行うことで、処理の簡素化、プログラムやデータの容量の削減、移動体オブジェクトの表現の多様化を実現できる。
【0125】
図12に、本実施形態における移動制御処理の一例のフローチャートを示す。
【0126】
まず、処理部100は、移動体オブジェクトを特定するための変数iを0に初期化する(ステップS10)。
【0127】
次に、変数iの値が、群れを表現するキャラクタ数より大きいか否かを判別する(ステップS11)。
【0128】
変数iの値がキャラクタ数以上のとき(ステップS11:N)、一連の処理を終了する(エンド)。
【0129】
一方、変数iの値がキャラクタ数より小さいとき(ステップS11:Y)、移動体オブジェクト制御部110が、変数iで特定される移動体オブジェクト(当該移動体オブジェクト)の移動ベクトルであるrvecを求める(ステップS12)。移動体オブジェクト制御部110は、例えばランダム関数を用いて求めたベクトルに、当該移動体オブジェクトの過去のフレームにおける移動ベクトルである過去ベクトルを加算して、ベクトルrvecを求めてもよい。
【0130】
次に、オブジェクト空間に配置されるターゲットの位置を算出する(ステップS13)。ステップS13により、当該移動体オブジェクトが追従すべきターゲットの位置又は他のグループの移動体オブジェクトの位置が求められる。このターゲットの位置の算出処理の詳細は、後述する。
【0131】
そして、当該移動体オブジェクト(キャラクタ)からターゲットTGまでのベクトル(vec1)を求める(ステップS14)。
【0132】
続いて、当該移動体オブジェクトのターゲットに対する関心度を考慮したベクトルmvecを求める(ステップS15)。ここでは、ベクトルvec1から、ステップS12で求められたベクトルrvecを減算し、パラメータ「Interest」に設定された係数を掛け合わせる。これにより、パラメータ「Interest」に設定された係数に応じて、ターゲットの位置に近付く方向のベクトルmvecが求められる。
【0133】
なお、vec1[0]はベクトルvec1のX成分、vec1[1]はベクトルvec1のY成分、vec1[2]はベクトルvec1のZ成分を示す。rvec[0]はベクトルrvecのX成分、rvec[1]はベクトルrvecのY成分、rvec[2]はベクトルrvecのZ成分を示す。mvec[0]はベクトルmvecのX成分、mvec[1]はベクトルmvecのY成分、mvec[2]はベクトルmvecのZ成分を示す。
【0134】
そして、描画位置を求める(ステップS16)。即ち、現在の位置(当該フレームの位置)fvtxに、ベクトルmvecと、ベクトルrvecとを加算した位置を、描画位置vec3として求める。
【0135】
ここで、vec3[0]は当該フレームにおける移動体オブジェクトの位置のX成分、vec3[1]は当該フレームにおける移動体オブジェクトの位置のY成分、vec3[2]は当該フレームにおける移動体オブジェクトの位置のZ成分とする。fvtx[i][0]は、当該移動体オブジェクトの現在の位置のX成分、fvtx[i][1]は、当該移動体オブジェクトの現在の位置のY成分、fvtx[i][2]は、当該移動体オブジェクトの現在の位置のZ成分を示す。
【0136】
なお、本実施形態では、ステップS15に示すように、ターゲットの関心度を考慮した描画位置を求めるようにしているが、本実施形態はこれに限定されるものではない。描画位置を求める際に、ターゲットの関心度を考慮したベクトルmvecを省略してもよい。
【0137】
次に、衝突回避処理部116により、衝突回避処理が行われる(ステップS17)。これにより、上述したように、キャラクタ(移動体オブジェクト)同士の衝突が回避されるように移動ベクトルが求められる。この場合、衝突回避が行われる移動ベクトルで描画位置を補正するが、描画位置を算出する前に衝突回避処理を行って描画位置を求めるようにしてもよい。
【0138】
そして、オブジェクト空間に当該移動体オブジェクトをマッピングし(ステップS18)、描画処理する(ステップS19)。
【0139】
その後、変数iをインクリメントして(ステップS20)、ステップS11に戻り、次の移動体オブジェクトについて同様の処理を繰り返す。
【0140】
図13に、ターゲットの位置算出処理の処理例のフローチャートを示す。図13に示す処理は、図12のステップS13において行われる。
【0141】
また図13では、先頭グループのみが、遅延させたターゲットの位置に追従し、先頭グループ以外のグループの移動体オブジェクトは、当該フレームにおける他のグループの移動体オブジェクトの位置に追従するものとする。
【0142】
グループ分割部112は、まずオブジェクト特性記憶部172に記憶された当該移動体オブジェクトの特性情報のグループ分割数が設定されたパラメータ「Group」の値を読み出す(ステップS30)。
【0143】
次に、変数DIVに、1.0をパラメータ「Group」の値で割った値を設定する(ステップS31)。
【0144】
そして、グループ分割部112は、インデックス番号である変数iの値に基づき、当該移動体オブジェクトが属するグループ番号を求める(ステップS32)。例えば、図3に示すようにインデックス番号を参照することで、グループ番号を特定することができる。
【0145】
その結果、当該移動体オブジェクトが属するグループが先頭のグループ、即ちグループ番号が0のとき(ステップS33:Y)、パラメータ「TargetDelay」にターゲット遅延を行うことを示す値か否かを判別する(ステップS34)。
【0146】
ターゲット遅延を行うと判別されたとき(ステップS34:Y)、遅延バッファ174から読み出された過去の第(k−m)のフレームのターゲットの位置を読み出す(ステップS35)。ここで読み出されたターゲットの位置が、図12のステップS14において、ベクトルvec1の算出に用いられる(エンド)。
【0147】
ステップS34において、ターゲット遅延を行わないと判別されたとき(ステップS34:N)、当該フレームにおけるターゲットの位置を読み出す(ステップS38)。ここで読み出されたターゲットの位置が、図12のステップS14において、ベクトルvec1の算出に用いられる(エンド)。
【0148】
ステップS33において、当該移動体オブジェクトの属するグループが先頭グループではないとき(ステップS33:N)、即ちグループ番号が0ではないとき、参照すべき他のグループのキャラクタを求める(ステップS36)。
【0149】
ここでは、次式で変数refの値を求める。
【0150】
ref=i−キャラクタ数×DIV (4)
(4)式において、変数DIVの値は、ステップS31において求められる。
【0151】
そして、インデックス番号が変数refの移動体オブジェクトの位置を、ターゲットの位置(当該移動体オブジェクトが追従すべき位置)とする(ステップS37)。ここで求められたターゲットの位置が、図12のステップS14において、ベクトルvec1の算出に用いられる(エンド)。
【0152】
例えば、キャラクタ数が100で、グループ分割数が5、図3に示すグループ分割例に従って、インデックス番号が50で特定される移動体オブジェクトについて考える。まず変数DIVには、0.2が設定される。そして、図3では、インデックス番号が50の移動体オブジェクトは、グループ番号2で特定される第3のグループに属する。従って、変数refは、30となる。
【0153】
即ち、インデックス番号が50で特定される移動体オブジェクトは、グループ番号2で特定される第3のグループに属する。そして、インデックス番号が50で特定される移動体オブジェクトは、グループ番号1で特定される第2のグループに属し、インデックス番号が30で特定される移動体オブジェクトに追従することになる。
【0154】
図14に、衝突回避処理例のフローチャートを示す。図14に示す処理は、図12のステップS17において行われる。なお図14では、上述した衝突回避処理のうち、図8に示す衝突回避処理を実現する。
【0155】
まず、衝突回避処理部116は、まずオブジェクト特性記憶部172に記憶された当該移動体オブジェクトの特性情報の衝突回避度が設定されるパラメータ「Response」の値と、衝突回避の反応エリアの大きさが設定されるパラメータ「ResponseArea」の値とを読み出す(ステップS40)。
【0156】
そして、読み出したパラメータ「Response」の値が0ではないとき(ステップS41:Y)、当該移動体オブジェクトの位置に最も近い他の移動体オブジェクトを探索する(ステップS42)。衝突回避処理部116は、例えばオブジェクト空間に配置される当該移動体オブジェクトが接するポリゴンの番号を記憶しておき、当該ポリゴンの番号が同じ他の移動体オブジェクトを探索することで、容易に当該移動体オブジェクトの位置に最も近い他の移動体オブジェクトを探索できる。
【0157】
次に、求めた他の移動体オブジェクトの位置と当該移動体オブジェクトの位置との距離(len)を求める(ステップS43)。
【0158】
そして、求めた距離(len)が、当該移動体オブジェクトの特性情報のパラメータ「ResponseArea」に設定された値より大きいか否かを判別する(ステップS44)。距離(len)が、パラメータ「ResponseArea」に設定された値より大きいとき(ステップS44:Y)、当該移動体オブジェクトの移動ベクトル(第1の移動ベクトル)を反転し、当該移動体ベクトルと反対方向の移動ベクトル(第2の移動ベクトル)を求める(ステップS45)。
【0159】
続いて、当該移動体オブジェクトの特性情報のパラメータ「Response」の値で、ステップS45で求めた移動ベクトルの長さを修正し(ステップS46)、この修正した移動ベクトルを用いて当該移動体オブジェクトの描画位置を求め(ステップS47)、一連の処理を終了する(エンド)。
【0160】
一方、ステップS41でパラメータ「Response」に設定された値が0のとき(ステップS41:Y)、又はステップS44で距離(len)が、パラメータ「ResponseArea」に設定された値より大きくないとき(ステップS44:N)、衝突回避のための修正を行わず、一連の処理を終了する(エンド)。
【0161】
4.ハードウェア構成
図15に本実施形態を実現できるハードウェア構成の例を示す。
【0162】
メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介して転送されたプログラム、或いはROM950に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。
【0163】
コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、オブジェクトを移動させたり動作(モーション)させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0164】
ジオメトリプロセッサ904は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ900で動作するプログラムが、その処理をジオメトリプロセッサ904に指示する。
【0165】
データ伸張プロセッサ906は、圧縮された画像データや音データのデコード(伸長)処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、MPEG方式等で圧縮された動画像を表示できる。
【0166】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を高速に実行する。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970を利用して、描画データを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると描画プロセッサ910は、描画データやテクスチャに基づいて、Zバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ922に描画する。また描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。そして1フレーム分の画像がフレームバッファ922に書き込まれると、その画像はディスプレイ912に表示される。
【0167】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などのゲーム音を生成し、スピーカ932を介して出力する。ゲームコントローラ942からの操作データや、メモリカード944からのセーブデータ、個人データは、シリアルインターフェース940を介して入力される。
【0168】
ROM950にはシステムプログラムなどが格納される。業務用ゲームシステムの場合にはROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納されることになる。なおROM950の代わりにハードディスクを利用してもよい。RAM960は各種プロセッサの作業領域となる。DMAコントローラ970は、プロセッサ、メモリ(RAM、VRAM、ROM等)間でのDMA転送を制御する。CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるCD982にアクセスする処理を行う。
【0169】
通信インターフェース990は、ネットワークを介して外部との間でデータ転送を行う。通信インターフェース990に接続されるネットワークとしては、通信回線(アナログ電話回線、ISDN)、高速シリアルバスなどがある。
【0170】
なお本実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0171】
そして本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930等は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0172】
図16(A)に業務用ゲームシステムへの本実施形態の適用例を示す。プレーヤは、ディスプレイ1100上に映し出されたゲーム画像を見ながら、操作部1102を操作してゲームを楽しむ。内蔵されるシステムボード1106にはプロセッサ、メモリなどが実装される。本実施形態の各部の処理を実現するためのプログラム(データ)は、システムボード1106上の情報記憶媒体であるメモリ1108に格納される。以下、このプログラムを格納プログラムと呼ぶ。
【0173】
図16(B)に家庭用ゲームシステムへの本実施形態の適用例を示す。この場合、上記格納プログラム(格納情報)は、本体システムに着脱自在な情報記憶媒体であるCD1206、或いはメモリカード1208、1209に格納される。
【0174】
図16(C)に、ホスト装置1300と、このホスト装置1300とネットワーク1302を介して接続される端末1304-1〜1304-n(ゲーム機、携帯電話)とを含むシステムへの本実施形態の適用例を示す。この場合、上記格納プログラムは、ホスト装置1300の情報記憶媒体1306(ハードディスク、磁気テープ装置等)に格納される。また本実施形態の各部の処理をホスト装置と端末の分散処理で実現してもよい。
【0175】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【0176】
例えば、明細書又は図面中の記載において広義な用語として引用された用語は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
【0177】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0178】
また、本発明は種々のゲーム(格闘ゲーム、競争ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、ロールプレイングゲーム等)に適用できる。
【0179】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々の画像生成システム(ゲームシステム)に適用できる。
【図面の簡単な説明】
【0180】
【図1】本実施形態の画像生成システムの機能ブロック図の例。
【図2】本実施形態の手法の説明図。
【図3】複数の移動体オブジェクトを複数のグループに分割した例の説明図。
【図4】移動体オブジェクトの追従処理の説明図。
【図5】本実施形態の移動体オブジェクトによる群れの画像の例の図。
【図6】本実施形態におけるターゲット遅延の処理の説明図。
【図7】本実施形態における遅延バッファの説明図。
【図8】本実施形態における衝突回避処理の説明図。
【図9】本実施形態における衝突回避処理の他の例の説明図。
【図10】本実施形態における衝突回避処理の更に他の例の説明図。
【図11】移動体オブジェクトの特性情報の一例を示す図。
【図12】本実施形態の移動制御処理の一例を示すフローチャート。
【図13】本実施形態のターゲットの位置の算出処理の一例を示すフローチャート。
【図14】本実施形態の衝突回避処理の一例を示すフローチャート。
【図15】ハードウェア構成例を示す図。
【図16】図16(A)、(B)、(C)は種々の形態のシステム例の図。
【符号の説明】
【0181】
100 処理部、110 移動体オブジェクト制御部、
112 グループ分割部、114 追従処理部、116 衝突回避処理部、
120 画像生成部、130 音生成部、160 操作部、
170 記憶部、172 オブジェクト特性記憶部、
174 遅延バッファ、176 描画バッファ、180 情報記憶媒体、190 表示部、192 音出力部、194 携帯型情報記憶装置、
196 通信部、G1〜G3 第1〜第3のグループ、MOB 群れ、
MOBJ_0〜MOBJ_8 移動体オブジェクト、TG ターゲット

【特許請求の範囲】
【請求項1】
画像を生成するための画像生成システムであって、
オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、
前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部と、
を含み、
前記移動体オブジェクト制御部が、
複数の移動体オブジェクトを第1〜第N(Nは2以上の整数)のグループに分割し、
前記第1のグループに属する1又は複数の移動体オブジェクトを、前記オブジェクト空間に配置されたターゲットの位置に向かう方向に移動するように移動制御し、
第j(2≦j≦N、jは整数)のグループに属する移動体オブジェクトを、第(j−1)のグループに属する1又は複数の移動体オブジェクトのいずれか1つの位置に向かう方向に移動するように移動制御することを特徴とする画像生成システム。
【請求項2】
請求項1において、
第k(kは自然数)のフレームより少なくとも2フレーム以上過去の第(k−m)(k>m≧2、mは整数)のフレームにおける前記ターゲットの位置を記憶する遅延バッファを含み、
前記移動体オブジェクト制御部が、
前記第kのフレームにおいて、前記遅延バッファから前記第(k−m)のフレームにおける前記ターゲットの位置を読み出し、
前記第1のグループに属する1又は複数の移動体オブジェクトを、前記第(k−m)のフレームにおける前記ターゲットの位置に向かう方向に移動するように移動制御することを特徴とする画像生成システム。
【請求項3】
請求項2において、
前記遅延バッファが、
前記第(k−m)のフレームにおける第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置を記憶し、
前記移動体オブジェクト制御部が、
前記第kのフレームにおいて、前記遅延バッファから前記第(k−m)のフレームにおける前記第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置を読み出し、
前記第jのグループに属する移動体オブジェクトを、前記第(k−m)のフレームにおける前記第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置に向かう方向に移動するように移動制御することを特徴とする画像生成システム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記移動体オブジェクト制御部が、
当該フレームにおいて求められた第1の移動ベクトルに従って移動した場合の第1の移動体オブジェクトの位置が、第2の移動体オブジェクトに対して設定された衝突感知エリア内にあるとき、前記第1の移動ベクトルの方向と反対方向の第2の移動ベクトルに基づいて前記第1の移動体オブジェクトの移動制御を行うことを特徴とする画像生成システム。
【請求項5】
請求項4において、
前記移動体オブジェクト制御部が、
前記第1の移動体オブジェクトの特性に関連付けて、前記第2の移動ベクトルの長さを変更することを特徴とする画像生成システム。
【請求項6】
請求項4又は5において、
前記衝突感知エリアは、
前記第2の移動体オブジェクトを基準に、前記第2の移動体オブジェクトの特性に関連付けられた大きさの範囲であることを特徴とする画像生成システム。
【請求項7】
画像を生成するための画像生成システムであって、
オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、
前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部と、
を含み、
前記移動体オブジェクト制御部が、
当該フレームにおける第1の移動体オブジェクトの第1の移動ベクトルと、第2の移動体オブジェクトに対して設定された衝突感知エリアの境界との交点を用いて前記第1の移動ベクトルを補正した第2の移動ベクトルを求め、
該第2の移動ベクトルに基づいて、前記第1の移動体オブジェクトを移動制御することを特徴とする画像生成システム。
【請求項8】
請求項7において、
前記移動体オブジェクト制御部が、
当該フレームにおける前記第2の移動体オブジェクトの位置と前記交点の位置とに基づいて求められる補正点と、前記第1の移動体オブジェクトの位置とを用いて前記第2の移動ベクトルを求めることを特徴とする画像生成システム。
【請求項9】
請求項7又は8において、
前記移動体オブジェクト制御部が、
前記補正点と前記第1の移動体オブジェクトの位置とに基づいて求められる補正ベクトルと、前記第1の移動ベクトルとを、補間パラメータに基づいて補間して、前記第2の移動ベクトルを求めることを特徴とする画像生成システム。
【請求項10】
請求項9において、
前記移動体オブジェクト制御部が、
前記第1又は第2の移動体オブジェクトの特性に関連付けられた補間パラメータに基づいて、前記補正ベクトルと前記第1の移動ベクトルとを補間して、前記第2の移動ベクトルを求めることを特徴とする画像生成システム。
【請求項11】
画像を生成するためのプログラムであって、
オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、
前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部としてコンピュータを機能させ、
前記移動体オブジェクト制御部が、
複数の移動体オブジェクトを第1〜第N(Nは2以上の整数)のグループに分割し、
前記第1のグループに属する1又は複数の移動体オブジェクトを、前記オブジェクト空間に配置されたターゲットの位置に向かう方向に移動するように移動制御し、
第j(2≦j≦N、jは整数)のグループに属する移動体オブジェクトを、第(j−1)のグループに属する1又は複数の移動体オブジェクトのいずれか1つの位置に向かう方向に移動するように移動制御することを特徴とするプログラム。
【請求項12】
請求項11において、
第k(kは自然数)のフレームより少なくとも2フレーム以上過去の第(k−m)(k>m≧2、mは整数)のフレームにおける前記ターゲットの位置を記憶する遅延バッファとしてコンピュータを機能させ、
前記移動体オブジェクト制御部が、
前記第kのフレームにおいて、前記遅延バッファから前記第(k−m)のフレームにおける前記ターゲットの位置を読み出し、
前記第1のグループに属する1又は複数の移動体オブジェクトを、前記第(k−m)のフレームにおける前記ターゲットの位置に向かう方向に移動するように移動制御することを特徴とするプログラム。
【請求項13】
請求項12において、
前記遅延バッファが、
前記第(k−m)のフレームにおける第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置を記憶し、
前記移動体オブジェクト制御部が、
前記第kのフレームにおいて、前記遅延バッファから前記第(k−m)のフレームにおける前記第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置を読み出し、
前記第jのグループに属する移動体オブジェクトを、前記第(k−m)のフレームにおける前記第(j−1)のグループに属するいずれか1つの移動体オブジェクトの位置に向かう方向に移動するように移動制御することを特徴とするプログラム。
【請求項14】
請求項11乃至13のいずれかにおいて、
前記移動体オブジェクト制御部が、
当該フレームにおいて求められた第1の移動ベクトルに従って移動した場合の第1の移動体オブジェクトの位置が、第2の移動体オブジェクトに対して設定された衝突感知エリア内にあるとき、前記第1の移動ベクトルの方向と反対方向の第2の移動ベクトルに基づいて前記第1の移動体オブジェクトの移動制御を行うことを特徴とするプログラム。
【請求項15】
請求項14において、
前記移動体オブジェクト制御部が、
前記第1の移動体オブジェクトの特性に関連付けて、前記第2の移動ベクトルの長さを変更することを特徴とするプログラム。
【請求項16】
請求項14又は15において、
前記衝突感知エリアは、
前記第2の移動体オブジェクトを基準に、前記第2の移動体オブジェクトの特性に関連付けられた大きさの範囲であることを特徴とするプログラム。
【請求項17】
画像を生成するためのプログラムであって、
オブジェクト空間における移動体オブジェクトを移動制御する移動体オブジェクト制御部と、
前記移動体オブジェクト制御部によって移動制御された前記移動体オブジェクトの画像を生成する画像生成部としてコンピュータを機能させ、
前記移動体オブジェクト制御部が、
当該フレームにおける第1の移動体オブジェクトの第1の移動ベクトルと、第2の移動体オブジェクトに対して設定された衝突感知エリアの境界との交点を用いて前記第1の移動ベクトルを補正した第2の移動ベクトルを求め、
該第2の移動ベクトルに基づいて、前記第1の移動体オブジェクトを移動制御することを特徴とするプログラム。
【請求項18】
請求項17において、
前記移動体オブジェクト制御部が、
当該フレームにおける前記第2の移動体オブジェクトの位置と前記交点の位置とに基づいて求められる補正点と、前記第1の移動体オブジェクトの位置とを用いて前記第2の移動ベクトルを求めることを特徴とするプログラム。
【請求項19】
請求項17又は18において、
前記移動体オブジェクト制御部が、
前記補正点と前記第1の移動体オブジェクトの位置とに基づいて求められる補正ベクトルと、前記第1の移動ベクトルとを、補間パラメータに基づいて補間して、前記第2の移動ベクトルを求めることを特徴とするプログラム。
【請求項20】
請求項19において、
前記移動体オブジェクト制御部が、
前記第1又は第2の移動体オブジェクトの特性に関連付けられた補間パラメータに基づいて、前記補正ベクトルと前記第1の移動ベクトルとを補間して、前記第2の移動ベクトルを求めることを特徴とするプログラム。
【請求項21】
コンピュータ読み取り可能な情報記憶媒体であって、請求項11乃至20のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2009−247559(P2009−247559A)
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願番号】特願2008−98520(P2008−98520)
【出願日】平成20年4月4日(2008.4.4)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】