JP4535607B2 - GAME SYSTEM AND INFORMATION STORAGE MEDIUM - Google Patents
GAME SYSTEM AND INFORMATION STORAGE MEDIUM Download PDFInfo
- Publication number
- JP4535607B2 JP4535607B2 JP2000378758A JP2000378758A JP4535607B2 JP 4535607 B2 JP4535607 B2 JP 4535607B2 JP 2000378758 A JP2000378758 A JP 2000378758A JP 2000378758 A JP2000378758 A JP 2000378758A JP 4535607 B2 JP4535607 B2 JP 4535607B2
- Authority
- JP
- Japan
- Prior art keywords
- joint
- rotation
- motion
- parts
- force
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、ゲームシステム及び情報記憶媒体に関する。
【0002】
【背景技術及び発明が解決しようとする課題】
従来より、仮想的な3次元空間であるオブジェクト空間内の所与の視点から見える画像を生成するゲームシステムが知られており、いわゆる仮想現実を体験できるものとして人気が高い。ガンゲームを楽しむことができるゲームシステムを例にとれば、プレーヤ(操作者)は、銃などを模して作られたガン型コントローラ(シューティングデバイス)を用いて、画面に映し出される敵キャラクタ(オブジェクト)などの標的オブジェクトをシューティングすることで、3次元ゲームを楽しむ。
【0003】
さて、このようなゲームシステムでは、プレーヤの仮想現実感の向上のために、よりリアルで高品質な画像を生成することが重要な技術的課題になっている。このため、例えば複数のパーツを関節より連結して構成されたオブジェクトの動きについてもより多様な動きをリアルに表現できることが望ましい。
【0004】
例えば、オブジェクトを構成する所与のパーツに対してゲームの進行状況に応じてインタラクティブ発生する予測不可能な衝撃ベクトルが加わった場合、前記オブジェクトが当該衝撃を反映したモーションを行うことが好ましい。このような場合衝撃の加わったパーツや衝撃の大きさや向きによって、オブジェクトのモーションは異なってくるはずである。
【0005】
しかしながらこのような多様なモーションを表現するためには、衝撃の加わったパーツや衝撃の大きさや向きの全ての組み合わせに対応した全てのモーションデータを予め用意しておくことが必要となりデータ量の増大を招いていた。
【0006】
また予め用意できるデータには限りがあるためゲーム中に発生する様々な衝撃に対応した全てのモーションを生成することは困難であった。
【0007】
そこで本願発明者は、ゲーム中に発生する様々なイベントを反映したモーションをリアルタイムに生成するゲームシステムの開発を行っている。
【0008】
しかし、ゲーム中に発生する様々なイベントにより作用する力を完全にシミュレーションにしてモーションを生成すると演算負荷の増大を招き、限られた性能のハードウエアではリアルタイム画像生成処理が困難であるという問題がある。
【0009】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、複数のパーツが関節により連結されたオブジェクトに対して、多様でリアルな動きを与えるモーション情報を少ない演算負荷でリアルタイムに生成可能なゲームシステムおよび情報記憶媒体を提供することにある。
【0010】
【課題を解決するための手段】
(1)本発明は、画像生成を行うゲームシステムであって、複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行い、前記複数のパーツが関節により連結したオブジェクトのモーションを生成するモーション生成手段と、生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する手段と、を含むことを特徴とする。
【0011】
また本発明に係る情報記憶媒体は、コンピュータにより使用可能な情報記憶媒体であって、上記手段を実行するためのプログラムを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム(情報記憶媒体または搬送波に具現化されるプログラムを含む)であって、上記手段を実行するためのモジュールを含むことを特徴とする。
【0012】
本発明のゲームシステムでは、複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行いうことで、前記複数のパーツが関節により連結したオブジェクトのモーションをリアルタイムに生成することができる。
【0013】
ここにおいて所与のパーツに作用する内力とは、オブジェクトを構成する他のパーツから当該パーツに作用する力である。また所与のパーツに作用する外力とは内力以外の力であり、例えば衝撃や抵抗や重力等の外的要因が作用する力のことである。
【0014】
本発明で所与のパーツに作用する内力については、関節で接続された隣り合うパーツからのみ作用させて各パーツの関節の回転情報を求める。従って所与のパーツに他の全てのパーツからの内力を作用させて回転情報を求める場合に比べ、演算量を大幅に削減することができる。
【0015】
また本発明によれば所与のフレームのオブジェクトを構成する全パーツについて回転情報を演算する。このときパーツ1〜パーツNについてその順序で準次回転情報を演算するとする。本発明では隣り合うパーツ同士間では力を作用させるため、例えばパーツnに力が加わったとすると、当該フレームでn+1番目以降回転情報が演算されるパーツについては、パーツnに加わった力を伝達させることができる。また親子関係と演算順序の関係で今回フレームで伝達されなかった場合でも次のフレームでは伝達することができる。
【0016】
従って、隣り合うパーツからの内力しか作用させなくても、所与のパーツに加わった力による他のパーツへの影響は、次フレームまでには、離れたパーツにも伝達させることができる。このため本発明によれば、所与のパーツに加わった衝撃等が他のパーツに与える影響を表現可能なモーションを少ない演算負荷で生成することができる。
【0017】
(2)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段が、前記外力と前記内力の合力の当該パーツの関節の回転に寄与する成分に基づき当該パーツの関節の回転情報を演算することを特徴とする。
【0018】
前記合力の当該パーツの関節の回転に寄与する成分とは、当該パーツ関節(回転のリンク)に垂直な分力(成分)のことである。
【0019】
本発明によればかかる成分に基づき当該パーツの回転情報を演算するため、作用する力に応じたパーツの回転をリアルに表現することができる。
【0020】
(3)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段が、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分を、関節で接続された隣り合う親パーツに前記内力として作用させることを特徴とする。
【0021】
前記合力の当該パーツの関節の回転に寄与しない成分とは、当該パーツの関節(回転のリンク)に平行な分力(成分)のことである。
【0022】
本発明によればかかる成分を関節で接続された隣り合う親パーツに前記内力として作用させるので、力の影響を他のパーツに伝達することができる。
【0023】
(4)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段が、関節で接続された隣り合う親パーツがない場合には、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクトの位置の変位を求めることを特徴とする。
【0024】
関節で接続された隣り合う親パーツがない場合には、例えば前記合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクト全体の加速度を求め、当該加速度に基づきオブジェクトの位置の変位を決定するようにしてもよい。
【0025】
本発明によれば、所与のパーツに加わった力によるオブジェクトの位置変化をリアルに表現することができる。
【0026】
(5)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段は、前記オブジェクトの所与のパーツに衝撃ベクトルが加わった場合に、当該オブジェクトのモーションを生成することを特徴とする。
【0027】
本発明によれば、ゲームの進行状況に応じてインタラクティブ発生する予測不可能な衝撃ベクトルが加わった場合、衝撃の加わったパーツや衝撃の大きさや向きを反映したモーションをリアルタイムに生成することができる。
【0028】
従って衝撃の加わったパーツや衝撃の大きさや向きの組み合わせごとに異なる多様なモーションを予め用意しておかなくても、衝撃に応じたリアルなモーションを表現することができる。
【0029】
(6)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段が、所与の関節に対して回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求めることを特徴とする。
【0030】
一般に作用する力によって生じる加速度のみで各関節の回転を決定した場合には他のパーツと位置の重複(ヒット)による不具合が生じる可能性がある。これを回避するためには、ヒットチェックによる補正が必要となるが、全てのパーツとのヒットチェックによる補正を行うと演算負荷が増大する。
【0031】
本発明によれば、各関節に対して予め回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を決定する。従って例えば他のパーツとの間で不具合が生じないような範囲に予め回転可能範囲を設定しておくことにより、他のパーツとのヒットチェックによる補正を省略することができる。
【0032】
このため少ない演算負荷で、各パーツのヒットによる不具合が生じない好適なモーションを生成することができる。
【0033】
(7)また本発明は画像生成を行うゲームシステムであって、複数のパーツが関節により連結したオブジェクトの各関節に回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求め、前記複数のパーツが関節により連結したオブジェクトのモーションをリアルタイムに生成するモーション生成手段と、生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する手段と、を含むことを特徴とする。
【0034】
また本発明に係る情報記憶媒体は、コンピュータにより使用可能な情報記憶媒体であって、上記手段を実行するためのプログラムを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム(情報記憶媒体または搬送波に具現化されるプログラムを含む)であって、上記手段を実行するためのモジュールを含むことを特徴とする。
【0035】
一般に作用する力によって生じる加速度のみで各関節の回転を決定した場合には他のパーツと位置の重複(ヒット)による不具合が生じる可能性がある。これを回避するためには、ヒットチェックによる補正が必要となるが、全てのパーツとのヒットチェックによる補正を行うと演算負荷が増大する。
【0036】
本発明によれば、各関節に対して予め回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を決定する。従って例えば他のパーツとの間で不具合が生じないような範囲に予め回転可能範囲を設定しておくことにより、他のパーツとのヒットチェックによる補正を省略することができる。
【0037】
このため少ない演算負荷で、各パーツのヒットによる不具合が生じない好適なモーションを生成することができる。
【0038】
(8)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記各関節に対して予め設定された回転可能範囲を各関節のローカル座標系の少なくとも1軸の回転可能角度の形式で保持していることを特徴とする。
【0039】
各関節のローカル座標系の少なくとも1軸とは各関節のローカル座標系のX軸、Y軸、Z軸の少なくとも1軸である。従ってそれらのうちいずれか1軸又は2軸について回転可能範囲を保持していてもよいし、3軸全てについて回転可能範囲を保持していてもよい。
【0040】
(9)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記各関節に対して予め設定された回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持していることを特徴とする。
【0041】
一般にコンピュータで各パーツの回転の演算を行う際には回転行列を用いた行列演算を行う。従って本発明のように回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持していると、回転演算に使う回転行列の要素の値をそのまま用いて各関節の回転情報を求めることができるので演算効率がよい。
【0042】
(10)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記各関節に対して予め設定された回転可能範囲は、オブジェクトを構成する他のパーツとの間でヒットによる不具合が生じないような範囲に設定されていることを特徴とする。
【0043】
本発明によれば、他のパーツとのヒットチェックによる補正を省略することができるため少ない演算負荷で、各パーツのヒットによる不具合が生じない好適なモーションを生成することができる。
【0044】
(11)また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段は、前記オブジェクトの所与のパーツに衝撃ベクトルが加わった場合に、当該オブジェクトのモーションを生成することを特徴とする。
【0045】
本発明によれば、ゲームの進行状況に応じてインタラクティブ発生する予測不可能な衝撃ベクトルが加わった場合、衝撃の加わったパーツや衝撃の大きさや向きを反映したモーションをリアルタイムに生成することができる。
【0046】
従って衝撃の加わったパーツや衝撃の大きさや向きの組み合わせごとに異なる多様なモーションを予め用意しておかなくても、衝撃に応じたリアルなモーションを表現することができる。
【0047】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて説明する。
【0048】
1.構成
図1に、本実施形態のブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部100を含めばよく、それ以外のブロックについては、任意の構成要素とすることができる。
【0049】
ここで処理部100は、システム全体の制御、システム内の各ブロックへの命令の指示、ゲーム処理、画像処理、音処理などの各種の処理を行うものであり、その機能は、各種プロセッサ(CPU、DSP等)、或いはASIC(ゲートアレイ等)などのハードウェアや、所与のプログラム(ゲームプログラム)により実現できる。
【0050】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、筺体などのハードウェアにより実現できる。
【0051】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、メインメモリ172、フレームバッファ174(第1のフレームバッファ、第2のフレームバッファ)として機能し、RAMなどのハードウェアにより実現できる。
【0052】
情報記憶媒体(コンピュータにより使用可能な記憶媒体)180は、プログラムやデータなどの情報を格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などのハードウェアにより実現できる。処理部100は、この情報記憶媒体180に格納される情報に基づいて本発明(本実施形態)の種々の処理を行う。即ち情報記憶媒体180には、本発明(本実施形態)の手段(特に処理部100に含まれるブロック)を実行するための情報(プログラム或いはデータ)が格納される。
【0053】
なお、情報記憶媒体180に格納される情報の一部又は全部は、システムへの電源投入時等に記憶部170に転送されることになる。また情報記憶媒体180に記憶される情報は、本発明の処理を行うためのプログラムコード、画像データ、音データ、表示物の形状データ、テーブルデータ、リストデータ、本発明の処理を指示するための情報、その指示に従って処理を行うための情報等の少なくとも1つを含むものである。
【0054】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、或いはHMD(ヘッドマウントディスプレイ)などのハードウェアにより実現できる。
【0055】
音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【0056】
セーブ用情報記憶装置194は、プレーヤの個人データ(セーブデータ)などが記憶されるものであり、このセーブ用情報記憶装置194としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【0057】
通信部196は、外部(例えばホスト装置や他のゲームシステム)との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ、或いは通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0058】
なお本発明(本実施形態)の手段を実行するためのプログラム或いはデータは、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180に配信するようにしてもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含まれる。
【0059】
処理部100は、ゲーム処理部110、画像生成部130、音生成部150を含む。
【0060】
ここでゲーム処理部110は、コイン(代価)の受け付け処理、各種モードの設定処理、ゲームの進行処理、選択画面の設定処理、オブジェクト(1又は複数のプリミティブ面)の位置や回転角度(X、Y又はZ軸回り回転角度)を求める処理、オブジェクトを動作させる処理(モーション処理)、視点の位置(仮想カメラの位置)や視線角度(仮想カメラの回転角度)を求める処理、マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置するための処理、ヒットチェック処理、ゲーム結果(成果、成績)を演算する処理、複数のプレーヤが共通のゲーム空間でプレイするための処理、或いはゲームオーバー処理などの種々のゲーム処理を、操作部160からの操作データや、セーブ用情報記憶装置194からの個人データや、ゲームプログラムなどに基づいて行う。
【0061】
画像生成部130は、ゲーム処理部110からの指示等にしたがって各種の画像処理を行い、例えばオブジェクト空間内で仮想カメラ(視点)から見える画像を生成して、表示部190に出力する。また、音生成部150は、ゲーム処理部110からの指示等にしたがって各種の音処理を行い、BGM、効果音、音声などの音を生成し、音出力部192に出力する。
【0062】
なお、ゲーム処理部110、画像生成部130、音生成部150の機能は、その全てをハードウェアにより実現してもよいし、その全てをプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0063】
ゲーム処理部110は、移動・動作演算部112、モーション生成処理部114とを含む。
【0064】
ここで移動・動作演算部112は、キャラクタ車などのオブジェクトの移動情報(位置データ、回転角度データ)や動作情報(オブジェクトの各パーツの位置データ、回転角度データ)を演算するものであり、例えば、操作部160によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、オブジェクトを移動させたり動作させたりする処理を行う。
【0065】
より具体的には、移動・動作演算部112は、オブジェクトの位置や回転角度を例えば1フレーム(1/60秒)毎に求める処理を行う。例えば(k−1)フレームでのオブジェクトの位置をPMk-1、速度をVMk-1、加速度をAMk-1、1フレームの時間を△tとする。するとkフレームでのオブジェクトの位置PMk、速度VMkは例えば下式(1)、(2)のように求められる。
【0066】
PMk=PMk-1+VMk-1×△t (1)
VMk=VMk-1+AMk-1×△t (2)
またモーション生成処理部114は、複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行い、前記複数のパーツが関節により連結したオブジェクトのモーションを生成する処理を行う。
【0067】
また前記外力と前記内力の合力の当該パーツの関節の回転に寄与する成分に基づき当該パーツの関節の回転情報を演算する処理を行うようにしてもよい。
【0068】
また前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分を、関節で接続された隣り合う親パーツに前記内力として作用させる処理を行うようにしてもよい。
【0069】
また関節で接続された隣り合う親パーツがない場合には、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクトの位置の変位を求める処理を行うようにしてもよい。
【0070】
また前記オブジェクトの所与のパーツに衝撃ベクトルが加わった場合に、当該オブジェクトのモーションを生成する処理を行うようにしてもよい。
【0071】
また所与の関節に対して回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求める処理を行うようにしてもよい。
【0072】
画像生成部130は、生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する処理を行い、ジオメトリ処理部132、描画部140を含む。
【0073】
ここで、ジオメトリ処理部132は、座標変換、クリッピング処理、透視変換、或いは光源計算などの種々のジオメトリ処理(3次元演算)を行う。そして、ジオメトリ処理後(透視変換後)のオブジェクトデータ(オブジェクトの頂点座標などの形状データ、或いは頂点テクスチャ座標、輝度データ等)は、記憶部170のメインメモリ172に保存される。
【0074】
描画部140は、ジオメトリ処理後のオブジェクト(モデル)を、フレームバッファ174に描画するための処理を行うものである。
【0075】
なお前記オブジェクトとして表示画面サイズのポリゴンを用いてもよいし、表示画面を分割したブロックのサイズのポリゴンを用いてもよい。
【0076】
なお、本実施形態のゲームシステムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【0077】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末を用いて生成してもよい。
【0078】
2.本実施形態の特徴と処理
本実施の形態の特徴と処理について説明する。
【0079】
まず人体オブジェクトを例にとり複数のパーツが関節により接続されたオブジェクトのモーションを生成するためのモーションデータについて説明する。
【0080】
図2および図3は人体オブジェクトの関節(モーション骨)とモーションデータの関係について説明するための図である。図2の200は、頭部、胴体、腕、脚等の複数のパーツP1〜P15を関節K1〜K15(モーション骨)で接続して構成した人体オブジェクトである。
【0081】
例えばパーツ1(P1)はパーツ2(P2)の親であり、パーツ2(P2)はパーツ3(P3)の親であり、パーツ4(P4)はパーツ5(P5)の親である。
【0082】
一般にm個の関節を有するオブジェクトの所与のモーションを1〜nのnフレームで生成する場合には、例えば各フレームごとに当該フレームにおける各関節の位置情報および回転情報をモーションデータとしてあたえる。
【0083】
そしてモーションデータに従って関節(モーション骨)K1〜K15を動かすことで、複数のパーツが関節により接続された人体オブジェクトの動作を表現する。
【0084】
図3は前記人体オブジェクトのモーションデータの一例を表している。
【0085】
所与のモーションを0〜nのn+1フレームで生成する場合には、例えば図3に示すように各フレームごとに当該フレームにおける各関節ごとの位置情報および回転情報をモーションデータとして使用する。
【0086】
ここにおいて位置情報(tx、ty、tz)とは、親関節の始点に対する当該関節の始点位置を相対的な(ローカル座標系における)位置情報で与えたものである。
【0087】
例えばパーツ2(P2)の位置情報は、親関節であるK1の始点S1に対する当該関節K2の始点S2の相対的な位置情報で与えられる。
【0088】
またパーツ3(P3)の位置情報は、親関節であるK2の始点S2に対する当該関節K3の始点S3の相対的な位置情報で与えられる。
【0089】
また最も上位のパーツ1(P1)の位置情報はオブジェクトの基準位置(図2では原点O)に対する当該関節K1の始点S1の相対的な位置情報で与えられる。
【0090】
また回転情報とは、例えば当該関節が接続されている上位関節に対する当該関節の3軸方向に対する回転情報(rx、ry、rz)で与えられる。
【0091】
通常かかるモーションデータを予め複数のパターン用意しておいて、ゲーム状況に応じて最適な動作を表現するモーションデータを選択し、当該モーションデータを用いて人体オブジェクトのモーションを生成する。
【0092】
ところが人体オブジェクトを構成する所与のパーツに対して衝撃が加わった場合、衝撃の加わったパーツや衝撃の大きさや向きの全ての組み合わせに対応した全てのモーションデータを予め用意しておくと、データ量の増大を招く。そこで本実施の形態では、オブジェクトに加わった衝撃を反映したモーションデータをリアルタイムに生成する処理を行っている。
【0093】
ここでゲーム中に発生する衝撃を完全にシミュレーションにしてモーションデータを生成すると演算負荷の増大を招くため、本実施の形態では、複数のパーツが関節により連結したオブジェクトの各パーツに加わっている外力と関節で接続された隣り合うパーツから当該パーツに作用する内力に基づき各パーツの回転情報を求める生成する処理を行っている。
【0094】
図4は所与のパーツに作用する力について説明するための図である。ここでパーツに作用する力は例えば重力mg(mは関節の質量、gは重力定数)、地形の抗力N、子パーツが引っ張る/押す力Fc等である。ここでmgとNは外力であり、Fcが内力とであり、これらの内力と外力の合力がパーツに作用する力となる。
【0095】
図5は力の回転成分及び並進成分とパーツの回転情報と関係について説明するための図である。
【0096】
ここでFベクトルをパーツ作用する力(合力)、310を関節(モーション骨)とする。Oは親関節との接続点でありリンクの中心となる。またPは合力Fベクトルの作用点である。
【0097】
ここで関節310に作用する力Fベクトルのうち、リンクの中心Oと作用点PからなるベクトルOPに垂直な成分Fvベクトルがリンクの回転に作用する。そこで本実施の形態では前記合力Fベクトルのうち当該パーツの回転に寄与する成分Fvベクトルに基づき運動方程式をといて、角加速度を求め、当該角加速度に基づき角速度を求め、当該角速度ベクトルに基づき、角移動量求め、当該パーツの回転角とする。
【0098】
またOPベクトルに平行な成分であるFpベクトルは、親の関節を引っ張る力として、親のリンク計算に渡される。すなわち、前記合力Fベクトルの当該パーツの回転に寄与しない成分Fpベクトルを、関節で接続された隣り合う親パーツに前記内力として作用させる。
【0099】
図6は所与のパーツに作用する力に基づき当該パーツの加速度及び親パーツに作用させる内力を求めるフローチャート図である。
【0100】
まずjを初期設定する(ステップS10)。ここでjは作用する力をカウントするためのカウンターである。
【0101】
次にjをインクリメントする(ステップS20)。
【0102】
そしてF(j)ベクトルをFv(j)ベクトルとFp(j)ベクトルに分解する。ここでF(j)ベクトルは合力であり、Fv(j)ベクトルはリンクの回転に作用する成分(パーツの回転に寄与する成分)であり、Fp(j)ベクトルはリンクに平行な成分(パーツの回転に寄与しない成分)である(図5参照)。
【0103】
次にFv(j)ベクトルを回転角加速度a(j)に変換する(ステップS40)。
【0104】
次に求めたa(j)ベクトルをaベクトルに加算する(ステップS50)。ここでaベクトルは角加速度a(j)ベクトルの計である。
【0105】
次に求めたFp(j)ベクトルをFpベクトルに加算する(ステップS60)。ここでFpベクトルはリンクに平行な成分(パーツの回転に寄与しない成分)Fp(j)の計である。
【0106】
そして作用するすべての力Fp(j)ベクトルについて処理が終わっていない場合にはステップS20〜ステップS70の処理を繰り返す。
【0107】
次に関節の回転範囲の制限について説明する。作用する力によって生じる加速度のみで各関節の回転情報を決定した場合には他のパーツと位置の重複(ヒット)による不具合が生じる可能性があるのでヒットチェックによる補正が必要となる。しかし全てのパーツとのヒットチェックによる補正を行うと演算負荷が増大するという問題点がある。
【0108】
そこで本実施の形態では、各関節に対して予め回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を決定する。ここにおいて、他のパーツとの間で不具合が生じないような範囲に予め回転可能範囲を設定しておくことにより、他のパーツとのヒットチェックによる補正を省略することができる。 ここで前記各関節に対して予め設定された回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持している場合を例にとり回転情報の補正例について説明する。
【0109】
図7は回転行列と3軸の回転情報との関係について説明するための図である。
【0110】
ここで回転行列Mが次式で与えられているとする。
【0111】
【数1】
【0112】
行列Mの各要素は、図7の各exベクトル、eyベクトル、ezベクトル、Vベクトルと等しい。ここでexベクトル、eyベクトル、ezベクトルはMによって変換される関節のX軸、Y軸、Z軸それぞれの向きベクトルであり、Vベクトルは関節の移動成分である。
【0113】
図8は、回転行列の要素の範囲制限による関節の回転制限の方式について説明するための図である。同図に示すように、eyベクトルのy座標(a11)がとり得る値をy0<a11 と制限することでeyベクトルの動ける範囲を回転可能範囲(アミ部分内)410に制限することができる。他のパラメータについても同様に制限することにより、関節の向きをこまかく範囲指定することができる。
【0114】
一般にコンピュータで各パーツの回転の演算を行う際には回転行列を用いた行列演算を行う。従って回転可能範囲を各関節のローカル座標系の3軸に対する回転可能角度の形式で保持している場合には行列演算で得られた回転行列と各関節のローカル座標系の3軸に対する回転可能角度との比較が必要となる。従って回転パラメータと回転行列の変換の計算が必要となる。
【0115】
しかしこの方法は、行列の各パラメータのみ使用して、回転パラメータrx,ry,rzを必要としないので、回転パラメータと回転行列の変換の計算が不用となる演算効率がよい。
【0116】
図9は、複数のパーツが関節により連結したオブジェクトのモーションをリアルタイムに生成して表示を行う際の全体の流れについて説明するためのフローチャート図である。
【0117】
まずオブジェクトを構成する各パーツの配置を初期化する(ステップS110)。ここで初期化とはオブジェクトを構成する各パーツを基準状態にすることである。モーションを生成するための各関節の回転情報は基準状態に対する変位として与えられるからである。
【0118】
次に各パーツに作用する力による関節の配置(モーションデータ)を演算する関節配置処理を行う(ステップS120)。関節配置処理の詳細については、図10のフローチャートで説明する。
【0119】
次に関節配置処理によって得られた配置(モーションデータ)により配置した場合の各パーツと地形とのヒットに対する配置補正処理を行う(ステップS130)。各パーツと地形とのヒットに対する配置補正処理の詳細については、図11及び図12のフローチャートで説明する。
【0120】
次に各パーツと地形とのヒットに対する配置補正処理によって得られた配置(モーションデータ)を予め与えられた回転可能範囲内に補正する処理を行う(ステップS140)。回転可能範囲内に補正する処理の詳細については、図12のフローチャートで説明する。
【0121】
図10は関節配置処理の詳細について説明するためのフローチャート図である。
【0122】
まずiに1をセットする(ステップS210)。ここで、iは関節をカウントするためのカウンターである。
【0123】
まずi番目の関節に作用する力を求める(ステップS220)。
【0124】
次に、i番目のパーツに作用する力に基づき当該パーツの加速度及び親パーツに作用させる内力を求める処理を行う(ステップS230)。処理の詳細な内容については、図6のフローチャートで説明した通りである。
【0125】
次に求めた回転角加速度aベクトルを前回フレームの回転角速度r(i)ベクトルに加算して今回フレームの回転角速度r(i)ベクトルを求める(ステップS240)。
【0126】
次に回転角速度r(i)ベクトルから回転角速度行列Mvを求める(ステップS250)。回転角速度r(i)ベクトルから回転速度行列Mvを求める詳細な処理については後述する。
【0127】
そして求めた回転角速度行列Mvを前回フレームのi番目の行列M(i)に掛け合わせて今回フレームのi番目の行列M(i)を求める(M(i)=MvM(i))(ステップS260)。
【0128】
そして親パーツがある場合には、Fpベクトルを親パーツに渡す(ステップS270、S280)。本実施の形態では、親パーツが内力として他のパーツからもらうのは、このように隣り合う子パーツから作用する力のみである。従って、他の全てのパーツからの力についても作用させる場合に比べ演算量を大幅に削減させることができる。
【0129】
また親パーツがない場合には、Fpベクトルからオブジェクト全体の加速度を求め、速度Vベクトルに加算し(ステップS290)、Vベクトルをオブジェクト中心位置pベクトルに加算する(ステップS300)。
【0130】
そしてi<Nであれば、iをインクリメントして(i=i+1)ステップS220〜ステップS310の処理を繰り返す(ステップS310、S320)。ここにおいてNはオブジェクトを構成する関節の数である。
【0131】
図11、図12は各パーツと地形とのヒットに対する配置補正処理について説明するためのフローチャート図である。
【0132】
まずiに1をセットする(ステップS410)。ここで、iは関節をカウントするためのカウンターである。
【0133】
そしてi番目の関節のヒット球の位置を求める(ステップS420)。ここでヒット球とは当該関節のパーツに対して簡易にヒットチェックを行うために設定したヒットチェック用の球である。
【0134】
ヒット球が地形にヒットした場合には以下の処理を行う。
【0135】
まず地形に減り込んだ分の位置を補正する(ステップS440)。
【0136】
関節の回転速度関節の回転角速度r(i)ベクトルからヒット球の移動速度を求める(ステップS450)。
【0137】
ヒット球の速度と、地形の法線ベクトルから弾性衝突の衝撃力を求める(ステップS460)。
【0138】
衝撃力を、回転中心から作用点方向成分Fpベクトルとそれに垂直な成分
Fvベクトルに分解する(ステップS470)。
【0139】
Fvベクトルを回転成分に変換して、回転角加速度aベクトルを求める(ステップS480)。
【0140】
次に求めた回転角加速度aベクトルを前回フレームの回転角速度r(i)ベクトルに加算して今回フレームの回転角速度r(i)ベクトルを求める(ステップS490)。
【0141】
次に回転角速度r(i)ベクトルから回転角速度行列Mvを求める(ステップS500)。回転角速度r(i)ベクトルから回転速度行列Mvを求める詳細な処理については後述する。
【0142】
そして求めた回転角速度行列Mvを前回フレームのi番目の行列M(i)に掛け合わせて今回フレームのi番目の行列M(i)を求める(M(i)=MvM(i))(ステップS510)。
【0143】
そして親パーツがある場合には、Fpベクトルを親パーツに渡す(ステップS520、S530)。本実施の形態では、親パーツが内力として他のパーツからもらうのは、このように隣り合う子パーツから作用する力のみである。従って、他の全てのパーツからの力についても作用させる場合に比べ演算量を大幅に削減させることができる。
【0144】
また親パーツがない場合には、Fpベクトルからオブジェクト全体の加速度を求め、速度Vベクトルに加算し(ステップS540)、Vベクトルをオブジェクト中心位置pベクトルに加算する(ステップS550)。
【0145】
そしてi<Nであれば、iをインクリメントして(i=i+1)ステップS420〜ステップS560の処理を繰り返す(ステップS560、S570)。ここにおいてNはオブジェクトを構成する関節の数である。
【0146】
最後にオブジェクト中心のヒット球の位置を求める(ステップS580)。
【0147】
ヒット球が地形にヒットした場合には、地形に減り込んだ分を補正して、オブジェクト中心速度Vベクトルに対して、地形との衝突の演算を行い、衝突後の速度Vベクトルを求める(ステップS590、S600,S610)。
【0148】
図13は回転パラメータ(各関節のローカル座標系の3軸に対する回転可能角度)の形式で回転可能範囲が与えられている場合の、回転可能範囲内に補正する処理について説明するためのフローチャート図である。
【0149】
まずiに1をセットする(ステップS710)。ここで、iは関節をカウントするためのカウンターである。
【0150】
そして関節行列M(i)から回転パラメータ(rx(i),ry(i),rz(i))を求める(ステップS720)。関節行列M(i)から回転パラメータ(rx(i),ry(i),rz(i))に変換する手法については後述する。
【0151】
rx(i)が予め与えられたX軸の回転可能範囲内に収まっていない場合にはrx(i)を回転可能範囲内に補正する(ステップS730、S740)。ここで予め与えられたX軸の回転可能範囲がRX(i)であり、rx>RX(i)の場合にはrx=RX(i)とする。
【0152】
ry(i)が予め与えられたY軸の回転可能範囲内に収まっていない場合にはry(i)を回転可能範囲内に補正する(ステップS750、S760)。ここで予め与えられたY軸の回転可能範囲がRY(i)であり、ry>RY(i)の場合にはry(i)=RY(i)とする。
【0153】
rz(i)が予め与えられたZ軸の回転可能範囲内に収まっていない場合にはrzを回転可能範囲内に補正する(ステップS770、S780)。ここで予め与えられたZ軸の回転可能範囲がRZ(i)であり、rz(i)>RZ(i)の場合にはrz(i)=RZ(i)とする。
【0154】
そして回転パラメータ(rx(i),ry(i),rz(i))から、関節行列M(i)を求める(ステップS790)。
【0155】
そしてi<Nであれば、iをインクリメントして(i=i+1)ステップS720〜ステップS800の処理を繰り返す(ステップS800、S810)。ここにおいてNはオブジェクトを構成するパーツの数である。
【0156】
図14は回転行列の要素の形式で回転可能範囲が与えられている場合の、回転可能範囲内に補正する処理について説明するためのいフローチャート図である。
【0157】
まずiに1をセットする(ステップS910)。ここで、iは関節をカウントするためのカウンターである。
【0158】
ここで現在までの処理で求まっている回転行列をM(i)とする。M(i)は以下のとおりである。
【0159】
【数2】
【0160】
ここでa00(i)、a11(i)、a22(i)について予めとりうる範囲が与えられている。a00(i)はexベクトルのx成分(ローカル座標系のX軸のX軸方向の回転情報)であり、a11(i)eyベクトルのy成分(ローカル座標系Y軸のY軸方向の回転情報)であり、a22(i)ezベクトルのz成分(ローカル座標系Z軸のZ軸方向の回転情報)である。
【0161】
a00(i)が予め与えられた範囲内でない場合には、a00(i)が範囲内に戻るのに要するexベクトルの移動量を求める(ステップS920、S930)。
【0162】
そして移動量を回転量に変換して、回転行列ΔMを求める(S940)。
【0163】
そしてM(i)=M(i)ΔMを行い補正後の回転行列M(i)を求める(ステップS950)。
【0164】
a11(i)が予め与えられた範囲内でない場合には、a11(i)が範囲内に戻るのに要するeyベクトルの移動量を求める(ステップS960、S970)。
【0165】
そして移動量を回転量に変換して、回転行列ΔMを求める(S980)。
【0166】
そしてM(i)=M(i)ΔMを行い補正後の回転行列M(i)を求める(ステップS990)。
【0167】
a22(i)が予め与えられた範囲内でない場合には、a22(i)が範囲内に戻るのに要するezベクトルの移動量を求める(ステップS1000、S1010)。 そして移動量を回転量に変換して、回転行列ΔMを求める(S1020)。
【0168】
そしてM(i)=M(i)ΔMを行い補正後の回転行列M(i)を求める(ステップS1030)。
【0169】
そしてi<Nであれば、iをインクリメントして(i=i+1)ステップS920〜ステップS1030の処理を繰り返す(ステップS1040、S1050)。ここにおいてNはオブジェクトを構成する関節の数である。
【0170】
図15は移動量から回転情報を求める方式について説明するための図である。
【0171】
まず図示しない合力Fベクトルから運動方程式に基づいて、加速度を求め、当該加速度に基づき速度を求め、当該速度ベクトルに基づき、移動量Vベクトルを求める。
【0172】
例えばFvベクトルによりOPベクトルがOP’ベクトルに移動したとする。この場合の移動量がVベクトルであるとすると回転量w(wx、wy、wz)は以下の式で与えられる。
【0173】
【数3】
【0174】
xyz回転軸がWベクトルだけ回転した場合の点Pベクトルの移動量Vベクトルは以下の式で与えられる。
【0175】
【数4】
【0176】
次に回転角速度rベクトルから回転角速度行列Mvを求める詳細な処理について説明する。
【0177】
一般にベクトルv=(x,y,z,1)を、回転(Rx,Ry,Rz)して、平行移動(Tx,Ty,Tz)する場合の行列Mは次式で与えられる。
【0178】
【数5】
【0179】
この場合、変換後のベクトルv’は、v’=vMとして求まる。
【0180】
また以下のような既知の行列Mがあるとする。
【0181】
【数6】
【0182】
この行列Mに対応する回転パラメータ(Rx,Ry,Rz)を求めたい場合、Mの各要素を(1)に代入して解くと以下のようになる。
【0183】
(1)a02≠±1の場合、解は以下の(式1)又は(式2)の2通り求められる。
【0184】
【数7】
【0185】
ここにおいてtan-1(x、y)はsinθ=y、cosθ=xのときのθである。
【0186】
(2)a02=1の場合、cosRy=0なので、a00=a01=a12=a22=0になってしまう。従ってRx,Rzの解は不定で、Ry、Rzは以下のようになる。
【0187】
【数8】
【0188】
ここにおいて前回のRxの値を元に、今回のRx=前回のRxとしてRx、Rzをもとめるとよい。
【0189】
(3)a02=−1の場合、(2)と同様Rx,Rzの解は不定で、Ry、Rzは以下のようになる。
【0190】
【数9】
【0191】
ここにおいて前回のRxの値を元に、今回のRx=前回のRxとしてRx、Rzをもとめるとよい。
【0192】
なお、並進パラメータは(Tx,Ty,Tz)=(a30,a31,a32)である。
【0193】
3.ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図16を用いて説明する。
【0194】
メインプロセッサ900は、CD982(情報記憶媒体)に格納されたプログラム、通信インターフェース990を介して転送されたプログラム、或いはROM950(情報記憶媒体の1つ)に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【0195】
コプロセッサ902は、メインプロセッサ900の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、オブジェクトを移動させたり動作(モーション)させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ900上で動作するプログラムが、その処理をコプロセッサ902に指示(依頼)する。
【0196】
ジオメトリプロセッサ904は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ900で動作するプログラムが、その処理をジオメトリプロセッサ904に指示する。
【0197】
データ伸張プロセッサ906は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ900のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、所与の画像圧縮方式で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ROM950、CD982に格納されたり、或いは通信インターフェース990を介して外部から転送される。
【0198】
描画プロセッサ910は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画(レンダリング)処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ900は、DMAコントローラ970の機能を利用して、オブジェクトデータを描画プロセッサ910に渡すと共に、必要であればテクスチャ記憶部924にテクスチャを転送する。すると、描画プロセッサ910は、これらのオブジェクトデータやテクスチャに基づいて、Zバッファなどを利用した陰面消去を行いながら、オブジェクトをフレームバッファ922に高速に描画する。また、描画プロセッサ910は、αブレンディング(半透明処理)、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、1フレーム分の画像がフレームバッファ922に書き込まれると、その画像はディスプレイ912に表示される。
【0199】
サウンドプロセッサ930は、多チャンネルのADPCM音源などを内蔵し、BGM、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ932から出力される。
【0200】
ゲームコントローラ942からの操作データや、メモリカード944からのセーブデータ、個人データは、シリアルインターフェース940を介してデータ転送される。
【0201】
ROM950にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ROM950が情報記憶媒体として機能し、ROM950に各種プログラムが格納されることになる。なお、ROM950の代わりにハードディスクを利用するようにしてもよい。
【0202】
RAM960は、各種プロセッサの作業領域として用いられる。
【0203】
DMAコントローラ970は、プロセッサ、メモリ(RAM、VRAM、ROM等)間でのDMA転送を制御するものである。
【0204】
CDドライブ980は、プログラム、画像データ、或いは音データなどが格納されるCD982(情報記憶媒体)を駆動し、これらのプログラム、データへのアクセスを可能にする。
【0205】
通信インターフェース990は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース990に接続されるネットワークとしては、通信回線(アナログ電話回線、ISDN)、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他のゲームシステム、他のゲームシステムとの間でのデータ転送が可能になる。
【0206】
なお、本発明の各手段は、その全てを、ハードウェアのみにより実行してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実行してもよい。或いは、ハードウェアとプログラムの両方により実行してもよい。
【0207】
そして、本発明の各手段をハードウェアとプログラムの両方により実行する場合には、情報記憶媒体には、本発明の各手段をハードウェアを利用して実行するためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ902、904、906、910、930等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ902、904、906、910、930等は、その指示と渡されたデータとに基づいて、本発明の各手段を実行することになる。
【0208】
図17(A)に、本実施形態を業務用ゲームシステムに適用した場合の例を示す。プレーヤは、ディスプレイ1100上に映し出されたゲーム画像を見ながら、レバー1102、ボタン1104等を操作してゲームを楽しむ。内蔵されるシステムボード(サーキットボード)1106には、各種プロセッサ、各種メモリなどが実装される。そして、本発明の各手段を実行するための情報(プログラム又はデータ)は、システムボード1106上の情報記憶媒体であるメモリ1108に格納される。以下、この情報を格納情報と呼ぶ。
【0209】
図17(B)に、本実施形態を家庭用のゲームシステムに適用した場合の例を示す。プレーヤはディスプレイ1200に映し出されたゲーム画像を見ながら、ゲームコントローラ1202、1204を操作してゲームを楽しむ。この場合、上記格納情報は、本体システムに着脱自在な情報記憶媒体であるCD1206、或いはメモリカード1208、1209等に格納されている。
【0210】
図17(C)に、ホスト装置1300と、このホスト装置1300とネットワーク1302(LANのような小規模ネットワークや、インターネットのような広域ネットワーク)を介して接続される端末1304-1〜1304-nとを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納情報は、例えばホスト装置1300が制御可能な磁気ディスク装置、磁気テープ装置、メモリ等の情報記憶媒体1306に格納されている。端末1304-1〜1304-nが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置1300からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末1304-1〜1304-nに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置1300がゲーム画像、ゲーム音を生成し、これを端末1304-1〜1304-nに伝送し端末において出力することになる。
【0211】
なお、図17(C)の構成の場合に、本発明の各手段を、ホスト装置(サーバー)と端末とで分散して実行するようにしてもよい。また、本発明の各手段を実行するための上記格納情報を、ホスト装置(サーバー)の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【0212】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。そして、業務用ゲームシステムをネットワークに接続する場合には、業務用ゲームシステムとの間で情報のやり取りが可能であると共に家庭用ゲームシステムとの間でも情報のやり取りが可能なセーブ用情報記憶装置(メモリカード、携帯型ゲーム装置)を用いることが望ましい。
【0213】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【0214】
例えば、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0215】
また、本発明は種々のゲーム(格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等)に適用できる。
【0216】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々のゲームシステムに適用できる。
【図面の簡単な説明】
【図1】本実施形態のゲームシステムのブロック図の例である。
【図2】人体オブジェクトの関節(モーション骨)とモーションデータの関係について説明するための図である。
【図3】人体オブジェクトの関節(モーション骨)とモーションデータの関係について説明するための図である。
【図4】所与のパーツに作用する力について説明するための図である。
【図5】力の回転成分及び並進成分とパーツの回転情報と関係について説明するための図である。
【図6】所与のパーツに作用する力に基づき当該パーツの加速度及び親パーツに作用させる内力を求めるフローチャート図である。
【図7】回転行列と3軸の回転情報との関係について説明するための図である。
【図8】回転行列の要素の範囲制限による関節の回転制限の方式について説明するための図である。
【図9】複数のパーツが関節により連結したオブジェクトのモーションをリアルタイムに生成して表示を行う際の全体の流れについて説明するためのフローチャート図である。
【図10】関節配置処理の詳細について説明するためのフローチャート図である。
【図11】各パーツと地形とのヒットに対する配置補正処理について説明するためのフローチャート図である。
【図12】各パーツと地形とのヒットに対する配置補正処理について説明するためのフローチャート図である。
【図13】回転パラメータ(各関節のローカル座標系の3軸に対する回転可能角度)の形式で回転可能範囲が与えられている場合の、回転可能範囲内に補正する処理について説明するためのフローチャート図である。
【図14】回転行列の要素の形式で回転可能範囲が与えられている場合の、回転可能範囲内に補正する処理について説明するためのフローチャート図である。
【図15】移動量から回転情報を求める方式について説明するための図である。
【図16】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図17】図17(A)、(B)、(C)は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【符号の説明】
100 処理部
110 ゲーム処理部
112 移動・動作演算部
114 モーション生成処理部
130 画像生成部
132 ジオメトリ処理部
140 描画部
150 音生成部
160 操作部
170 記憶部
172 メインメモリ
174 フレームバッファ
180 情報記憶媒体
190 表示部
192 音出力部
194 セーブ用情報記憶装置
196 通信部[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a game system and an information storage medium.
[0002]
[Background Art and Problems to be Solved by the Invention]
Conventionally, a game system that generates an image that can be seen from a given viewpoint in an object space that is a virtual three-dimensional space is known, and is popular as a device that can experience so-called virtual reality. Taking a game system in which a gun game can be enjoyed as an example, a player (operator) uses a gun-type controller (shooting device) imitating a gun or the like to display enemy characters (objects) displayed on the screen. 3D game by shooting target objects such as).
[0003]
Now, in such a game system, it is an important technical problem to generate a more realistic and high-quality image in order to improve the virtual reality of the player. For this reason, for example, it is desirable that a variety of movements can be realistically expressed with respect to the movement of an object configured by connecting a plurality of parts through joints.
[0004]
For example, when an unpredictable impact vector interactively generated according to the progress of the game is added to a given part constituting the object, it is preferable that the object performs a motion reflecting the impact. In such a case, the motion of the object should be different depending on the impacted part and the magnitude and direction of the impact.
[0005]
However, in order to express such a variety of motions, it is necessary to prepare all motion data corresponding to all combinations of impacted parts and the magnitude and direction of the impact, which increases the amount of data Was invited.
[0006]
In addition, since data that can be prepared in advance is limited, it is difficult to generate all motions corresponding to various impacts that occur during the game.
[0007]
In view of this, the present inventor has developed a game system that generates in real time a motion reflecting various events that occur during a game.
[0008]
However, generating a motion by fully simulating the forces acting by various events that occur during the game increases the computational load, and real-time image generation processing is difficult with hardware with limited performance. is there.
[0009]
The present invention has been made in view of the above-described problems, and the object of the present invention is to reduce motion information that gives various and realistic movements to an object in which a plurality of parts are connected by joints. An object of the present invention is to provide a game system and an information storage medium that can be generated in real time with a calculation load.
[0010]
[Means for Solving the Problems]
(1) The present invention is a game system that performs image generation, and acts on an external force applied to a given part of an object in which a plurality of parts are connected by a joint and an adjacent part connected by the joint. Processing for obtaining the rotation information of the joint of the part based on the internal force to be performed for each part constituting the object, and a motion generation means for generating the motion of the object in which the plurality of parts are connected by the joint, and each part according to the generated motion And means for generating an image of an object in which a plurality of parts are connected by joints.
[0011]
The information storage medium according to the present invention is an information storage medium that can be used by a computer, and includes a program for executing the above means. The program according to the present invention is a program that can be used by a computer (including a program embodied in an information storage medium or a carrier wave), and includes a module for executing the above means.
[0012]
In the game system of the present invention, the rotation of the joint of the part based on the external force applied to the given part of the object in which a plurality of parts are connected by the joint and the internal force acting on the part from the adjacent parts connected by the joint. By performing a process for obtaining information on each part constituting the object, it is possible to generate a motion of the object in which the plurality of parts are connected by a joint in real time.
[0013]
Here, the internal force acting on a given part is a force acting on the part from other parts constituting the object. An external force acting on a given part is a force other than an internal force, for example, a force on which an external factor such as an impact, resistance, or gravity acts.
[0014]
In the present invention, the internal force acting on a given part is applied only from adjacent parts connected by joints, and rotation information of the joints of each part is obtained. Therefore, the amount of calculation can be greatly reduced as compared with the case where rotation information is obtained by applying internal forces from all other parts to a given part.
[0015]
Further, according to the present invention, rotation information is calculated for all parts constituting an object of a given frame. At this time, it is assumed that the quasi-order rotation information is calculated in the order of
[0016]
Therefore, even if only the internal force from the adjacent parts is applied, the influence on the other parts due to the force applied to the given part can be transmitted to the distant parts by the next frame. Therefore, according to the present invention, it is possible to generate a motion that can express the influence of an impact or the like applied to a given part on other parts with a small calculation load.
[0017]
(2) In the game system, information storage medium, and program according to the present invention, the motion generation means rotates the joint of the part based on a component that contributes to the rotation of the joint of the part of the resultant force of the external force and the internal force. It is characterized by calculating information.
[0018]
The component of the resultant force that contributes to the rotation of the joint of the part is a component force (component) perpendicular to the part joint (rotation link).
[0019]
According to the present invention, since the rotation information of the part is calculated based on the component, the rotation of the part according to the acting force can be realistically expressed.
[0020]
(3) In the game system, the information storage medium, and the program according to the present invention, the motion generation unit is connected to the component that does not contribute to the rotation of the joint of the part of the resultant force of the external force and the internal force. It is made to act on the matching parent part as the internal force.
[0021]
The component that does not contribute to the rotation of the joint of the part of the resultant force is a component force (component) parallel to the joint (rotation link) of the part.
[0022]
According to the present invention, such a component acts on the adjacent parent parts connected by a joint as the internal force, so that the influence of the force can be transmitted to other parts.
[0023]
(4) In addition, the game system, the information storage medium, and the program according to the present invention may be configured such that the motion generation unit has a combination of the external force and the internal force when there is no adjacent parent part connected by a joint. The displacement of the position of the object is obtained based on a component that does not contribute to the rotation of the joint.
[0024]
When there are no adjacent parent parts connected by a joint, for example, the acceleration of the entire object is obtained based on the component of the resultant force that does not contribute to the rotation of the joint of the part, and the displacement of the position of the object is determined based on the acceleration. You may do it.
[0025]
According to the present invention, it is possible to realistically represent a change in the position of an object due to a force applied to a given part.
[0026]
(5) The game system, information storage medium, and program according to the present invention are characterized in that the motion generating means generates a motion of the object when an impact vector is applied to a given part of the object. And
[0027]
According to the present invention, when an unpredictable impact vector that is interactively generated according to the progress of the game is added, it is possible to generate a motion that reflects the impacted part and the magnitude and direction of the impact in real time. .
[0028]
Therefore, it is possible to express a realistic motion corresponding to the impact without preparing various motions different for each combination of impacted parts and impact magnitude and direction.
[0029]
(6) In the game system, the information storage medium, and the program according to the present invention, the motion generation unit sets a rotatable range for a given joint, and each joint is set so as to be within the rotatable range. Rotation information is obtained.
[0030]
In general, when the rotation of each joint is determined only by the acceleration generated by the acting force, there is a possibility that a problem due to overlapping (hits) of positions with other parts may occur. In order to avoid this, correction by hit check is necessary. However, if correction by hit check with all parts is performed, the calculation load increases.
[0031]
According to the present invention, a rotatable range is set in advance for each joint, and rotation information of each joint is determined so as to be within the rotatable range. Therefore, for example, by setting a rotatable range in advance so as not to cause a problem with other parts, correction by hit check with other parts can be omitted.
[0032]
Therefore, it is possible to generate a suitable motion that does not cause problems due to hits of each part with a small calculation load.
[0033]
(7) Further, the present invention is a game system for generating an image, wherein a rotatable range is set for each joint of an object in which a plurality of parts are connected by a joint, and the rotation of each joint so as to be within the rotatable range. Obtaining information, generating a motion of an object in which the plurality of parts are connected by joints in real time, and arranging each part according to the generated motion, and generating an image of the object in which the plurality of parts are connected by joints Means.
[0034]
The information storage medium according to the present invention is an information storage medium that can be used by a computer, and includes a program for executing the above means. The program according to the present invention is a program that can be used by a computer (including a program embodied in an information storage medium or a carrier wave), and includes a module for executing the above means.
[0035]
In general, when the rotation of each joint is determined only by the acceleration generated by the acting force, there is a possibility that a problem due to overlapping (hits) of positions with other parts may occur. In order to avoid this, correction by hit check is necessary. However, if correction by hit check with all parts is performed, the calculation load increases.
[0036]
According to the present invention, a rotatable range is set in advance for each joint, and rotation information of each joint is determined so as to be within the rotatable range. Therefore, for example, by setting a rotatable range in advance so as not to cause a problem with other parts, correction by hit check with other parts can be omitted.
[0037]
Therefore, it is possible to generate a suitable motion that does not cause problems due to hits of each part with a small calculation load.
[0038]
(8) Further, the game system, information storage medium, and program according to the present invention hold a rotatable range preset for each joint in the form of a rotatable angle of at least one axis of the local coordinate system of each joint. It is characterized by that.
[0039]
The at least one axis of the local coordinate system of each joint is at least one of the X, Y, and Z axes of the local coordinate system of each joint. Accordingly, the rotatable range may be held for any one or two of them, or the rotatable range may be held for all three axes.
[0040]
(9) In addition, the game system, information storage medium, and program according to the present invention hold a rotatable range preset for each joint in the form of a range that the elements of the rotation matrix for each joint can take. It is characterized by that.
[0041]
In general, when a rotation calculation of each part is performed by a computer, a matrix calculation using a rotation matrix is performed. Therefore, when the rotatable range is held in the form of the range that can be taken by the elements of the rotation matrix for each joint as in the present invention, the rotation information of each joint is obtained by using the values of the elements of the rotation matrix used for the rotation calculation as they are. Since it can be obtained, the calculation efficiency is good.
[0042]
(10) In the game system, the information storage medium, and the program according to the present invention, the rotation range that is set in advance for each of the joints does not cause a problem due to a hit with other parts constituting the object. It is set in such a range.
[0043]
According to the present invention, since correction by hit check with other parts can be omitted, it is possible to generate a suitable motion that does not cause a problem due to hit of each part with a small calculation load.
[0044]
(11) In the game system, information storage medium, and program according to the present invention, the motion generating means generates a motion of the object when an impact vector is applied to a given part of the object. And
[0045]
According to the present invention, when an unpredictable impact vector that is interactively generated according to the progress of the game is added, it is possible to generate a motion that reflects the impacted part and the magnitude and direction of the impact in real time. .
[0046]
Therefore, it is possible to express realistic motion according to the impact without preparing various motions that differ depending on the combination of the impacted parts and the magnitude and direction of the impact.
[0047]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, preferred embodiments of the present invention will be described with reference to the drawings.
[0048]
1. Constitution
FIG. 1 shows an example of a block diagram of this embodiment. In this figure, the present embodiment only needs to include at least the
[0049]
Here, the
[0050]
The
[0051]
The
[0052]
An information storage medium (storage medium usable by a computer) 180 stores information such as programs and data, and functions thereof are an optical disk (CD, DVD), a magneto-optical disk (MO), a magnetic disk, and a hard disk. It can be realized by hardware such as a magnetic tape or a memory (ROM). The
[0053]
Part or all of the information stored in the
[0054]
The
[0055]
The
[0056]
The save
[0057]
The
[0058]
The program or data for executing the means of the present invention (this embodiment) may be distributed from the information storage medium of the host device (server) to the
[0059]
The
[0060]
Here, the
[0061]
The image generation unit 130 performs various types of image processing in accordance with instructions from the
[0062]
Note that all of the functions of the
[0063]
The
[0064]
Here, the movement /
[0065]
More specifically, the movement /
[0066]
PMk = PMk-1 + VMk-1 * .DELTA.t (1)
VMk = VMk-1 + AMk-1 * .DELTA.t (2)
In addition, the motion
[0067]
Further, a process of calculating rotation information of the joint of the part based on a component contributing to the rotation of the joint of the part of the resultant force of the external force and the internal force may be performed.
[0068]
Moreover, you may make it perform the process which makes the component which does not contribute to rotation of the joint of the said part of the resultant force of the said external force and the said internal force act as said internal force on the adjacent parent parts connected by the joint.
[0069]
Further, when there is no adjacent parent part connected by a joint, a process for obtaining a displacement of the position of the object based on a component that does not contribute to the rotation of the joint of the part of the resultant force of the external force and the internal force may be performed. Good.
[0070]
Further, when an impact vector is applied to a given part of the object, a process for generating a motion of the object may be performed.
[0071]
Alternatively, a rotatable range may be set for a given joint, and processing for obtaining rotation information of each joint so as to be within the rotatable range may be performed.
[0072]
The image generation unit 130 includes a
[0073]
Here, the
[0074]
The
[0075]
A polygon having a display screen size may be used as the object, or a polygon having a block size obtained by dividing the display screen may be used.
[0076]
Note that the game system of the present embodiment may be a system dedicated to the single player mode in which only one player can play, and not only such a single player mode but also a multiplayer mode in which a plurality of players can play. A system may be provided.
[0077]
Further, when a plurality of players play, game images and game sounds to be provided to the plurality of players may be generated using one terminal, or connected via a network (transmission line, communication line) or the like. Alternatively, it may be generated using a plurality of terminals.
[0078]
2. Features and processing of this embodiment
The features and processing of this embodiment will be described.
[0079]
First, motion data for generating a motion of an object in which a plurality of parts are connected by joints will be described taking a human body object as an example.
[0080]
2 and 3 are diagrams for explaining the relationship between a joint (motion bone) of a human body object and motion data. Reference numeral 200 in FIG. 2 denotes a human body object configured by connecting a plurality of parts P1 to P15 such as a head, a torso, an arm, and a leg with joints K1 to K15 (motion bones).
[0081]
For example, part 1 (P1) is the parent of part 2 (P2), part 2 (P2) is the parent of part 3 (P3), and part 4 (P4) is the parent of part 5 (P5).
[0082]
In general, when a given motion of an object having m joints is generated in 1 to n frames, position information and rotation information of each joint in the frame are provided as motion data for each frame, for example.
[0083]
Then, by moving the joints (motion bones) K1 to K15 according to the motion data, the motion of the human body object in which a plurality of parts are connected by the joints is expressed.
[0084]
FIG. 3 shows an example of motion data of the human body object.
[0085]
When generating a given motion in n + 1 frames from 0 to n, for example, as shown in FIG. 3, position information and rotation information for each joint in the frame are used as motion data for each frame.
[0086]
Here, the position information (tx, ty, tz) is the position information of the start point of the joint relative to the start point of the parent joint given by position information (in the local coordinate system).
[0087]
For example, the position information of the part 2 (P2) is given by the relative position information of the start point S2 of the joint K2 with respect to the start point S1 of the parent joint K1.
[0088]
The position information of the part 3 (P3) is given as relative position information of the start point S3 of the joint K3 with respect to the start point S2 of the parent joint K2.
[0089]
Further, the position information of the uppermost part 1 (P1) is given by the relative position information of the starting point S1 of the joint K1 with respect to the reference position of the object (the origin O in FIG. 2).
[0090]
The rotation information is given, for example, as rotation information (rx, ry, rz) in the three-axis directions of the joint with respect to the upper joint to which the joint is connected.
[0091]
Usually, a plurality of patterns of such motion data are prepared in advance, the motion data expressing the optimal action is selected according to the game situation, and the motion of the human body object is generated using the motion data.
[0092]
However, when an impact is applied to a given part that makes up a human body object, all the motion data corresponding to all combinations of the impacted part and the magnitude and direction of the impact are prepared. Increases the amount. Therefore, in the present embodiment, processing for generating motion data reflecting the impact applied to the object in real time is performed.
[0093]
Here, generating motion data by completely simulating the impact that occurs during the game causes an increase in calculation load. Therefore, in this embodiment, an external force applied to each part of an object in which a plurality of parts are connected by joints. A process for generating rotation information of each part based on an internal force acting on the part from adjacent parts connected by a joint is performed.
[0094]
FIG. 4 is a diagram for explaining the force acting on a given part. Here, the force acting on the part is, for example, gravity mg (m is the mass of the joint, g is a gravitational constant), terrain drag N, pulling / pushing force Fc of the child part, and the like. Here, mg and N are external forces, Fc is an internal force, and the resultant force of these internal forces and external forces is the force acting on the part.
[0095]
FIG. 5 is a diagram for explaining the relationship between the rotational component and translational component of force and the rotational information of the parts.
[0096]
Here, it is assumed that the F vector acts as a part acting force (synthetic force) and 310 is a joint (motion bone). O is a connection point with the parent joint and is the center of the link. P is an action point of the resultant force F vector.
[0097]
Here, among the force F vectors acting on the joint 310, a component Fv vector perpendicular to the vector OP consisting of the link center O and the action point P acts on the rotation of the link. Therefore, in the present embodiment, an equation of motion is obtained based on a component Fv vector contributing to the rotation of the part among the resultant force F vector, an angular acceleration is obtained, an angular velocity is obtained based on the angular acceleration, and based on the angular velocity vector, Obtain the amount of angular movement and use it as the rotation angle of the part.
[0098]
The Fp vector, which is a component parallel to the OP vector, is passed to the parent link calculation as a force for pulling the parent joint. That is, the component Fp vector that does not contribute to the rotation of the part of the resultant force F vector is caused to act as the internal force on adjacent parent parts connected by joints.
[0099]
FIG. 6 is a flowchart for obtaining the acceleration of the part and the internal force applied to the parent part based on the force applied to the given part.
[0100]
First, j is initialized (step S10). Here, j is a counter for counting the acting force.
[0101]
Next, j is incremented (step S20).
[0102]
Then, the F (j) vector is decomposed into an Fv (j) vector and an Fp (j) vector. Here, the F (j) vector is a resultant force, the Fv (j) vector is a component acting on the link rotation (component contributing to the rotation of the part), and the Fp (j) vector is a component parallel to the link (part (Component that does not contribute to the rotation) (see FIG. 5).
[0103]
Next, the Fv (j) vector is converted into rotational angular acceleration a (j) (step S40).
[0104]
Next, the obtained a (j) vector is added to the a vector (step S50). Here, the a vector is a total of the angular acceleration a (j) vectors.
[0105]
Next, the obtained Fp (j) vector is added to the Fp vector (step S60). Here, the Fp vector is a total of components parallel to the link (components that do not contribute to part rotation) Fp (j).
[0106]
If the processing has not been completed for all acting force Fp (j) vectors, the processing from step S20 to step S70 is repeated.
[0107]
Next, the limitation on the rotation range of the joint will be described. When the rotation information of each joint is determined only by the acceleration generated by the acting force, there is a possibility that a defect due to overlapping (hits) of positions with other parts may occur, so correction by hit check is necessary. However, if correction is performed by hit check with all parts, there is a problem that the calculation load increases.
[0108]
Therefore, in the present embodiment, a rotatable range is set in advance for each joint, and rotation information of each joint is determined so as to be within the rotatable range. Here, by setting a rotatable range in advance so as not to cause a problem with other parts, correction by hit check with other parts can be omitted. Here, a correction example of rotation information will be described by taking as an example a case where a rotatable range preset for each joint is held in the form of a range that can be taken by elements of a rotation matrix for each joint.
[0109]
FIG. 7 is a diagram for explaining the relationship between the rotation matrix and the three-axis rotation information.
[0110]
Here, it is assumed that the rotation matrix M is given by the following equation.
[0111]
[Expression 1]
[0112]
Each element of the matrix M is equal to each ex vector, ey vector, ez vector, and V vector in FIG. Here, the ex vector, the ey vector, and the ez vector are the orientation vectors of the X axis, the Y axis, and the Z axis of the joint converted by M, and the V vector is a joint movement component.
[0113]
FIG. 8 is a diagram for explaining a joint rotation restriction method by restricting the range of elements of a rotation matrix. As shown in the figure, the y coordinate (a 11 ) Is a possible value for y 0 <A 11 By limiting the range, the range in which the ey vector can be moved can be limited to a rotatable range (in the half portion) 410. By restricting the other parameters in the same manner, the direction of the joint can be specified in a detailed range.
[0114]
In general, when a rotation calculation of each part is performed by a computer, a matrix calculation using a rotation matrix is performed. Therefore, when the rotatable range is held in the form of the rotatable angle with respect to the three axes of the local coordinate system of each joint, the rotation matrix obtained by the matrix calculation and the rotatable angle with respect to the three axes of the local coordinate system of each joint. Comparison with is necessary. Therefore, calculation of rotation parameter and rotation matrix conversion is required.
[0115]
However, since this method uses only the parameters of the matrix and does not require the rotation parameters rx, ry, rz, the calculation efficiency is high because the calculation of conversion between the rotation parameters and the rotation matrix is unnecessary.
[0116]
FIG. 9 is a flowchart for explaining the overall flow when the motion of an object in which a plurality of parts are connected by a joint is generated and displayed in real time.
[0117]
First, the arrangement of each part constituting the object is initialized (step S110). Here, the initialization means to make each part constituting the object a reference state. This is because the rotation information of each joint for generating the motion is given as a displacement with respect to the reference state.
[0118]
Next, joint placement processing for calculating joint placement (motion data) by the force acting on each part is performed (step S120). Details of the joint placement processing will be described with reference to the flowchart of FIG.
[0119]
Next, an arrangement correction process is performed for hits between the parts and the terrain when arranged by the arrangement (motion data) obtained by the joint arrangement process (step S130). Details of the placement correction processing for hits between parts and terrain will be described with reference to the flowcharts of FIGS.
[0120]
Next, a process of correcting the arrangement (motion data) obtained by the arrangement correction process for each part and terrain hit within a rotatable range given in advance is performed (step S140). Details of the process of correcting within the rotatable range will be described with reference to the flowchart of FIG.
[0121]
FIG. 10 is a flowchart for explaining details of the joint placement processing.
[0122]
First, 1 is set to i (step S210). Here, i is a counter for counting joints.
[0123]
First, the force acting on the i-th joint is obtained (step S220).
[0124]
Next, based on the force acting on the i-th part, a process for obtaining the acceleration of the part and the internal force acting on the parent part is performed (step S230). Details of the processing are as described in the flowchart of FIG.
[0125]
Next, the obtained rotation angular acceleration a vector is added to the rotation angular velocity r (i) vector of the previous frame to obtain the rotation angular velocity r (i) vector of the current frame (step S240).
[0126]
Next, a rotational angular velocity matrix Mv is obtained from the rotational angular velocity r (i) vector (step S250). Detailed processing for obtaining the rotation speed matrix Mv from the rotation angular velocity r (i) vector will be described later.
[0127]
Then, the i-th matrix M (i) of the current frame is obtained by multiplying the obtained rotation angular velocity matrix Mv by the i-th matrix M (i) of the previous frame (M (i) = MvM (i)) (step S260). ).
[0128]
If there is a parent part, the Fp vector is passed to the parent part (steps S270 and S280). In the present embodiment, the parent part receives only the force acting from the adjacent child parts as the internal force from other parts. Therefore, the amount of calculation can be greatly reduced as compared with the case where forces from all other parts are applied.
[0129]
If there is no parent part, the acceleration of the entire object is obtained from the Fp vector, added to the velocity V vector (step S290), and the V vector is added to the object center position p vector (step S300).
[0130]
If i <N, i is incremented (i = i + 1), and the processing from step S220 to step S310 is repeated (steps S310 and S320). Here, N is the number of joints constituting the object.
[0131]
11 and 12 are flowcharts for explaining the arrangement correction processing for hits between parts and terrain.
[0132]
First, 1 is set to i (step S410). Here, i is a counter for counting joints.
[0133]
Then, the position of the hit ball of the i-th joint is obtained (step S420). Here, the hit sphere is a hit check sphere set in order to perform a simple hit check on the parts of the joint.
[0134]
If the hit ball hits the terrain, the following processing is performed.
[0135]
First, the position of the amount that has been reduced to the terrain is corrected (step S440).
[0136]
Joint Rotation Speed The movement speed of the hit sphere is obtained from the rotational angular velocity r (i) vector of the joint (step S450).
[0137]
The impact force of the elastic collision is obtained from the velocity of the hit sphere and the normal vector of the terrain (step S460).
[0138]
The impact force is applied from the center of rotation to the acting point direction component Fp vector and the component perpendicular thereto.
The Fv vector is decomposed (step S470).
[0139]
The Fv vector is converted into a rotation component to obtain a rotation angular acceleration a vector (step S480).
[0140]
Next, the obtained rotation angular acceleration a vector is added to the rotation angular velocity r (i) vector of the previous frame to obtain the rotation angular velocity r (i) vector of the current frame (step S490).
[0141]
Next, a rotational angular velocity matrix Mv is obtained from the rotational angular velocity r (i) vector (step S500). Detailed processing for obtaining the rotation speed matrix Mv from the rotation angular velocity r (i) vector will be described later.
[0142]
Then, the i-th matrix M (i) of the current frame is obtained by multiplying the obtained rotation angular velocity matrix Mv by the i-th matrix M (i) of the previous frame (M (i) = MvM (i)) (step S510). ).
[0143]
If there is a parent part, the Fp vector is passed to the parent part (steps S520 and S530). In the present embodiment, the parent part receives only the force acting from the adjacent child parts as the internal force from other parts. Therefore, the amount of calculation can be greatly reduced as compared with the case where forces from all other parts are applied.
[0144]
If there is no parent part, the acceleration of the entire object is obtained from the Fp vector, added to the velocity V vector (step S540), and the V vector is added to the object center position p vector (step S550).
[0145]
If i <N, i is incremented (i = i + 1), and the processing from step S420 to step S560 is repeated (steps S560 and S570). Here, N is the number of joints constituting the object.
[0146]
Finally, the position of the hit sphere at the center of the object is obtained (step S580).
[0147]
When the hit sphere hits the terrain, the amount of decrease in the terrain is corrected, the collision with the terrain is calculated for the object center velocity V vector, and the velocity V vector after the collision is obtained (step) S590, S600, S610).
[0148]
FIG. 13 is a flowchart for explaining processing for correcting within the rotatable range when the rotatable range is given in the form of rotation parameters (rotatable angles with respect to the three axes of the local coordinate system of each joint). is there.
[0149]
First, i is set to 1 (step S710). Here, i is a counter for counting joints.
[0150]
Then, rotation parameters (rx (i), ry (i), rz (i)) are obtained from the joint matrix M (i) (step S720). A method for converting the joint matrix M (i) into the rotation parameters (rx (i), ry (i), rz (i)) will be described later.
[0151]
If rx (i) is not within the pre-given X axis rotatable range, rx (i) is corrected within the rotatable range (steps S730 and S740). Here, the X-axis rotatable range given in advance is RX (i), and when rx> RX (i), rx = RX (i).
[0152]
If ry (i) is not within the pre-given Y axis rotatable range, ry (i) is corrected within the rotatable range (steps S750 and S760). Here, if the Y axis rotation range given in advance is RY (i) and ry> RY (i), ry (i) = RY (i).
[0153]
If rz (i) is not within the pre-given Z axis rotatable range, rz is corrected within the rotatable range (steps S770 and S780). Here, when the Z-axis rotatable range given in advance is RZ (i) and rz (i)> RZ (i), rz (i) = RZ (i).
[0154]
Then, the joint matrix M (i) is obtained from the rotation parameters (rx (i), ry (i), rz (i)) (step S790).
[0155]
If i <N, i is incremented (i = i + 1), and the processes in steps S720 to S800 are repeated (steps S800 and S810). Here, N is the number of parts constituting the object.
[0156]
FIG. 14 is a flowchart for explaining a process for correcting within the rotatable range when the rotatable range is given in the form of an element of the rotation matrix.
[0157]
First, i is set to 1 (step S910). Here, i is a counter for counting joints.
[0158]
Here, let M (i) be a rotation matrix obtained by the processing up to now. M (i) is as follows.
[0159]
[Expression 2]
[0160]
Where a 00 (I), a 11 (I), a twenty two A possible range is given in advance for (i). a 00 (I) is an x component of the ex vector (rotation information in the X-axis direction of the X-axis of the local coordinate system), and a 11 (I) y component of the ey vector (rotation information in the Y-axis direction of the local coordinate system Y-axis), and a twenty two (I) The z component of the ez vector (rotation information in the Z-axis direction of the local coordinate system Z-axis).
[0161]
a 00 If (i) is not within the predetermined range, a 00 The amount of movement of the ex vector required for (i) to return within the range is obtained (steps S920 and S930).
[0162]
Then, the movement amount is converted into the rotation amount, and the rotation matrix ΔM is obtained (S940).
[0163]
Then, M (i) = M (i) ΔM is performed to obtain a corrected rotation matrix M (i) (step S950).
[0164]
a 11 If (i) is not within the predetermined range, a 11 The amount of movement of the ey vector required for (i) to return within the range is obtained (steps S960 and S970).
[0165]
Then, the movement amount is converted into the rotation amount, and the rotation matrix ΔM is obtained (S980).
[0166]
Then, M (i) = M (i) ΔM is performed to obtain a corrected rotation matrix M (i) (step S990).
[0167]
a twenty two If (i) is not within the predetermined range, a twenty two The amount of movement of the ez vector required for (i) to return within the range is obtained (steps S1000 and S1010). Then, the movement amount is converted into a rotation amount, and a rotation matrix ΔM is obtained (S1020).
[0168]
Then, M (i) = M (i) ΔM is performed to obtain a corrected rotation matrix M (i) (step S1030).
[0169]
If i <N, i is incremented (i = i + 1), and the processing from step S920 to step S1030 is repeated (steps S1040 and S1050). Here, N is the number of joints constituting the object.
[0170]
FIG. 15 is a diagram for explaining a method for obtaining the rotation information from the movement amount.
[0171]
First, an acceleration is obtained from a resultant force F vector (not shown) based on an equation of motion, a speed is obtained based on the acceleration, and a movement amount V vector is obtained based on the speed vector.
[0172]
For example, it is assumed that the OP vector is moved to the OP ′ vector by the Fv vector. If the movement amount in this case is a V vector, the rotation amount w (wx, wy, wz) is given by the following equation.
[0173]
[Equation 3]
[0174]
The movement amount V vector of the point P vector when the xyz rotation axis is rotated by the W vector is given by the following equation.
[0175]
[Expression 4]
[0176]
Next, detailed processing for obtaining the rotation angular velocity matrix Mv from the rotation angular velocity r vector will be described.
[0177]
In general, the matrix M when the vector v = (x, y, z, 1) is rotated (Rx, Ry, Rz) and translated (Tx, Ty, Tz) is given by the following equation.
[0178]
[Equation 5]
[0179]
In this case, the converted vector v ′ is obtained as v ′ = vM.
[0180]
Further, it is assumed that there is a known matrix M as follows.
[0181]
[Formula 6]
[0182]
When the rotation parameters (Rx, Ry, Rz) corresponding to this matrix M are to be obtained, the following is solved by substituting each element of M into (1).
[0183]
(1) a 02 In the case of ≠ ± 1, two solutions (Formula 1) or (Formula 2) below are obtained.
[0184]
[Expression 7]
[0185]
Where tan -1 (X, y) is θ when sin θ = y and cos θ = x.
[0186]
(2) a 02 = 1, cosRy = 0, so a 00 = A 01 = A 12 = A twenty two = 0. Accordingly, the solutions of Rx and Rz are indefinite, and Ry and Rz are as follows.
[0187]
[Equation 8]
[0188]
Here, based on the previous value of Rx, Rx and Rz may be obtained as the current Rx = the previous Rx.
[0189]
(3) a 02 When == − 1, the solutions of Rx and Rz are indefinite as in (2), and Ry and Rz are as follows.
[0190]
[Equation 9]
[0191]
Here, based on the previous value of Rx, Rx and Rz may be obtained as the current Rx = the previous Rx.
[0192]
The translation parameters are (Tx, Ty, Tz) = (a 30 , A 31 , A 32 ).
[0193]
3. Hardware configuration
Next, an example of a hardware configuration capable of realizing the present embodiment will be described with reference to FIG.
[0194]
The
[0195]
The
[0196]
The
[0197]
The
[0198]
The drawing
[0199]
The
[0200]
Operation data from the
[0201]
The
[0202]
The
[0203]
The
[0204]
The CD drive 980 drives a CD 982 (information storage medium) in which programs, image data, sound data, and the like are stored, and enables access to these programs and data.
[0205]
The
[0206]
All of the means of the present invention may be executed by hardware alone, or may be executed only by a program stored in an information storage medium or a program distributed via a communication interface. Alternatively, it may be executed by both hardware and a program.
[0207]
When each means of the present invention is executed by both hardware and a program, a program for executing each means of the present invention using hardware is stored in the information storage medium. Become. More specifically, the program instructs each
[0208]
FIG. 17A shows an example in which the present embodiment is applied to an arcade game system. The player enjoys the game by operating the
[0209]
FIG. 17B shows an example in which the present embodiment is applied to a home game system. The player enjoys the game by operating the
[0210]
FIG. 17C shows a
[0211]
In the case of the configuration shown in FIG. 17C, each unit of the present invention may be executed in a distributed manner between the host device (server) and the terminal. The storage information for executing each means of the present invention may be distributed and stored in the information storage medium of the host device (server) and the information storage medium of the terminal.
[0212]
The terminal connected to the network may be a home game system or an arcade game system. When the arcade game system is connected to a network, the save information storage device can exchange information with the arcade game system and exchange information with the home game system. It is desirable to use (memory card, portable game device).
[0213]
The present invention is not limited to the one described in the above embodiment, and various modifications can be made.
[0214]
For example, in the invention according to the dependent claims of the present invention, a part of the constituent features of the dependent claims can be omitted. Moreover, the principal part of the invention according to one independent claim of the present invention can be made dependent on another independent claim.
[0215]
The present invention can also be applied to various games (such as fighting games, shooting games, robot battle games, sports games, competitive games, role playing games, music playing games, dance games, etc.).
[0216]
Further, the present invention can be applied to various game systems such as a business game system, a home game system, a large attraction system in which a large number of players participate, a simulator, a multimedia terminal, and a system board for generating game images.
[Brief description of the drawings]
FIG. 1 is an example of a block diagram of a game system according to the present embodiment.
FIG. 2 is a diagram for explaining a relationship between a joint (motion bone) of a human body object and motion data.
FIG. 3 is a diagram for explaining a relationship between a joint (motion bone) of a human body object and motion data.
FIG. 4 is a diagram for explaining a force acting on a given part.
FIG. 5 is a diagram for explaining a relationship between force rotation components and translation components and part rotation information;
FIG. 6 is a flowchart for determining the acceleration of the part and the internal force applied to the parent part based on the force applied to a given part.
FIG. 7 is a diagram for explaining a relationship between a rotation matrix and three-axis rotation information.
FIG. 8 is a diagram for explaining a joint rotation restriction method by restricting the range of elements of a rotation matrix;
FIG. 9 is a flowchart for explaining an overall flow when generating and displaying a motion of an object in which a plurality of parts are connected by a joint in real time;
FIG. 10 is a flowchart for explaining details of joint placement processing;
FIG. 11 is a flowchart for explaining an arrangement correction process for hits between parts and terrain.
FIG. 12 is a flowchart for explaining an arrangement correction process for hits between parts and terrain.
FIG. 13 is a flowchart for explaining processing for correcting within a rotatable range when a rotatable range is given in the form of a rotation parameter (rotatable angle with respect to three axes of the local coordinate system of each joint). It is.
FIG. 14 is a flowchart for explaining a process of correcting within a rotatable range when a rotatable range is given in the form of a rotation matrix element;
FIG. 15 is a diagram for explaining a method for obtaining rotation information from a movement amount;
FIG. 16 is a diagram illustrating an example of a hardware configuration capable of realizing the present embodiment.
FIGS. 17A, 17B, and 17C are diagrams illustrating examples of various types of systems to which the present embodiment is applied.
[Explanation of symbols]
100 processor
110 Game processor
112 Movement / motion calculation unit
114 Motion generation processing unit
130 Image generator
132 Geometry processing part
140 Drawing part
150 sound generator
160 Operation unit
170 Storage unit
172 Main memory
174 frame buffer
180 Information storage medium
190 Display
192 sound output section
194 Information storage device for saving
196 Communication Department
Claims (12)
関節で接続された隣り合うパーツについて親子関係が設定された複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行い、前記複数のパーツが関節により連結したオブジェクトのモーションを生成するモーション生成手段と、
生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する手段と、
を含み、
前記モーション生成手段が、
前記外力と前記内力の合力を当該パーツの関節の回転に寄与する成分と当該パーツの関節の回転に寄与しない成分とに分解し、当該パーツの関節の回転に寄与する成分に基づき当該パーツの関節の回転情報を演算し、当該パーツの関節の回転に寄与しない成分に基づき、関節で接続された隣り合う親パーツに作用させる内力を求める関節演算処理を、オブジェクトを構成する複数のパーツについて順次行い、子パーツの関節演算処理において演算された内力を用いて子パーツに対応する親パーツの関節演算処理を行うことを特徴とするゲームシステム。A game system for generating images,
The external force applied to a given part of an object connected by joints of multiple parts that have a parent-child relationship for adjacent parts connected by joints, and internal force that acts on the parts from adjacent parts connected by joints A process for obtaining the rotation information of the joint of the part based on each part constituting the object, and a motion generation means for generating a motion of the object in which the plurality of parts are connected by the joint;
Means for arranging each part according to the generated motion and generating an image of an object in which a plurality of parts are connected by a joint;
Only including,
The motion generating means is
The joint of the part based on the component that contributes to the rotation of the joint of the part by decomposing the resultant force of the external force and the internal force into a component that contributes to the rotation of the joint of the part and a component that does not contribute to the rotation of the joint of the part The joint information is calculated sequentially for multiple parts that make up the object based on the component that does not contribute to the rotation of the joint of the part, and calculates the internal force that acts on the adjacent parent parts connected by the joint. A game system characterized in that joint calculation processing of a parent part corresponding to a child part is performed using internal force calculated in the joint calculation processing of the child part .
前記モーション生成手段が、
関節で接続された隣り合う親パーツがない場合には、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクトの位置の変位を求めることを特徴とするゲームシステム。Oite to claim 1,
The motion generating means is
A game system characterized in that, when there are no adjacent parent parts connected by a joint, the displacement of the position of the object is obtained based on a component of the resultant force of the external force and the internal force that does not contribute to the rotation of the joint of the part.
前記モーション生成手段は、
前記オブジェクトの所与のパーツに衝撃が加わった場合に、当該オブジェクトのモーションを生成することを特徴とするゲームシステム。In claim 1 or 2 ,
The motion generation means includes
Game system, characterized in that when a shock is applied to a given part of the object, generates a motion of the object.
前記モーション生成手段が、
所与の関節に対して回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求めることを特徴とするゲームシステム。In any one of Claims 1 thru | or 3 ,
The motion generating means is
A game system, wherein a rotatable range is set for a given joint, and rotation information of each joint is obtained so as to be within the rotatable range.
前記各関節に対して予め設定された回転可能範囲を各関節のローカル座標系の少なくとも1軸の回転可能角度の形式で保持していることを特徴とするゲームシステム。In claim 4 ,
A game system, wherein a rotatable range preset for each joint is held in a form of a rotatable angle of at least one axis of a local coordinate system of each joint.
前記各関節に対して予め設定された回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持していることを特徴とするゲームシステム。In claim 4 or 5 ,
A game system, wherein a rotatable range set in advance for each joint is held in a form of a range that can be taken by an element of a rotation matrix for each joint.
関節で接続された隣り合うパーツについて親子関係が設定された複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行い、前記複数のパーツが関節により連結したオブジェクトのモーションを生成するモーション生成手段と、
生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する手段と、してコンピュータを機能させるプログラムを含み、
前記モーション生成手段が、
前記外力と前記内力の合力を当該パーツの関節の回転に寄与する成分と当該パーツの関節の回転に寄与しない成分とに分解し、当該パーツの関節の回転に寄与する成分に基づき当該パーツの関節の回転情報を演算し、当該パーツの関節の回転に寄与しない成分に基づき、関節で接続された隣り合う親パーツに作用させる内力を求める関節演算処理を、オブジェクトを構成する複数のパーツについて順次行い、子パーツの関節演算処理において演算された内力を用いて子パーツに対応する親パーツの関節演算処理を行うことを特徴とする情報記憶媒体。A computer- readable information storage medium,
The external force applied to a given part of an object connected by joints of multiple parts that have a parent-child relationship for adjacent parts connected by joints, and internal force that acts on the parts from adjacent parts connected by joints A process for obtaining the rotation information of the joint of the part based on each part constituting the object, and a motion generation means for generating a motion of the object in which the plurality of parts are connected by the joint;
Each part are arranged in accordance with the generated motion, seen containing means in which a plurality of parts and generates an image of an object linked by joints, a program that causes a computer to a
The motion generating means is
The joint of the part based on the component that contributes to the rotation of the joint of the part by decomposing the resultant force of the external force and the internal force into a component that contributes to the rotation of the joint of the part and a component that does not contribute to the rotation of the joint of the part The joint information is calculated sequentially for multiple parts that make up the object based on the component that does not contribute to the rotation of the joint of the part, and calculates the internal force that acts on the adjacent parent parts connected by the joint. An information storage medium characterized by performing joint calculation processing of a parent part corresponding to a child part using internal force calculated in the joint calculation processing of the child part .
前記モーション生成手段が、
関節で接続された隣り合う親パーツがない場合には、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクトの位置の変位を求めるためのプログラムを含むことを特徴とする情報記憶媒体。Oite to claim 7,
The motion generating means is
When there is no adjacent parent part connected by a joint, a program for determining a displacement of an object position based on a component of the resultant force of the external force and the internal force that does not contribute to rotation of the joint of the part is included. An information storage medium.
前記モーション生成手段は、
前記オブジェクトの所与のパーツに衝撃が加わった場合に、当該オブジェクトのモーションを生成するためのプログラムを含むことを特徴とする情報記憶媒体。In claim 7 or 8 ,
The motion generation means includes
If the shock is applied to a given part of the object, the information storage medium characterized by including a program for generating a motion of the object.
前記モーション生成手段が、
所与の関節に対して回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求めるためのプログラムを含むことを特徴とする情報記憶媒体。In any one of Claims 7 thru | or 9 ,
The motion generating means is
An information storage medium comprising a program for setting a rotatable range for a given joint and obtaining rotation information of each joint so as to be within the rotatable range.
前記各関節に対して予め設定された回転可能範囲を各関節のローカル座標系の少なくとも1軸の回転可能角度の形式で保持していることを特徴とする情報記憶媒体。In claim 10 ,
An information storage medium characterized in that a rotatable range preset for each joint is held in the form of a rotatable angle of at least one axis of the local coordinate system of each joint.
前記各関節に対して予め設定された回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持していることを特徴とする情報記憶媒体。In claim 10 or 11 ,
An information storage medium, wherein a rotatable range set in advance for each joint is held in the form of a range that can be taken by an element of a rotation matrix for each joint.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000378758A JP4535607B2 (en) | 2000-12-13 | 2000-12-13 | GAME SYSTEM AND INFORMATION STORAGE MEDIUM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000378758A JP4535607B2 (en) | 2000-12-13 | 2000-12-13 | GAME SYSTEM AND INFORMATION STORAGE MEDIUM |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002183757A JP2002183757A (en) | 2002-06-28 |
JP4535607B2 true JP4535607B2 (en) | 2010-09-01 |
Family
ID=18847264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000378758A Expired - Fee Related JP4535607B2 (en) | 2000-12-13 | 2000-12-13 | GAME SYSTEM AND INFORMATION STORAGE MEDIUM |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4535607B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5308475B2 (en) * | 2011-05-13 | 2013-10-09 | 株式会社バンダイナムコゲームス | PROGRAM, INFORMATION STORAGE MEDIUM, AND GAME DEVICE |
JP5760287B2 (en) * | 2013-10-24 | 2015-08-05 | 株式会社大都技研 | Amusement tables and programs |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05298422A (en) * | 1992-04-16 | 1993-11-12 | Hitachi Ltd | Motion generating method for articulated structure |
JP3308685B2 (en) * | 1993-12-14 | 2002-07-29 | キヤノン株式会社 | Object collision simulation method and apparatus |
JP2937834B2 (en) * | 1995-11-13 | 1999-08-23 | 松下電器産業株式会社 | 3D motion generator |
-
2000
- 2000-12-13 JP JP2000378758A patent/JP4535607B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002183757A (en) | 2002-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3656012B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4367804B2 (en) | Image generation system and information storage medium | |
JP4535607B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4245356B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4497690B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4544555B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP2001229403A (en) | Game system and information storage medium | |
JP3420986B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4266121B2 (en) | Image generation system, program, and information storage medium | |
JP4229316B2 (en) | Image generation system, program, and information storage medium | |
JP4641602B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4574058B2 (en) | Image generation system, program, and information storage medium | |
JP2002222431A (en) | Image generation system, program, and information storage medium | |
JP3614340B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4114826B2 (en) | Image generating apparatus and information storage medium | |
JP4592039B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP3377490B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP3431562B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4610729B2 (en) | GAME SYSTEM, PROGRAM, AND INFORMATION STORAGE MEDIUM | |
JP4632521B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4391633B2 (en) | Image generation system and information storage medium | |
JP2004329791A (en) | Image generation system, program, and information storage medium | |
JP4480322B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM | |
JP4229318B2 (en) | Image generation system, program, and information storage medium | |
JP4475763B2 (en) | GAME SYSTEM AND INFORMATION STORAGE MEDIUM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071025 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100106 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100308 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100609 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100615 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130625 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4535607 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130625 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130625 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |