(57)【特許請求の範囲】
【請求項１】
画像生成を行うゲームシステムであって、
関節で接続された隣り合うパーツについて親子関係が設定された複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行い、前記複数のパーツが関節により連結したオブジェクトのモーションを生成するモーション生成手段と、
生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する手段と、
を含み、
前記モーション生成手段が、
前記外力と前記内力の合力を当該パーツの関節の回転に寄与する成分と当該パーツの関節の回転に寄与しない成分とに分解し、当該パーツの関節の回転に寄与する成分に基づき当該パーツの関節の回転情報を演算し、当該パーツの関節の回転に寄与しない成分に基づき、関節で接続された隣り合う親パーツに作用させる内力を求める関節演算処理を、オブジェクトを構成する複数のパーツについて順次行い、子パーツの関節演算処理において演算された内力を用いて子パーツに対応する親パーツの関節演算処理を行うことを特徴とするゲームシステム。
【請求項２】
請求項１において、
前記モーション生成手段が、
関節で接続された隣り合う親パーツがない場合には、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクトの位置の変位を求めることを特徴とするゲームシステム。
【請求項３】
請求項１又は２において、
前記モーション生成手段は、
前記オブジェクトの所与のパーツに衝撃が加わった場合に、当該オブジェクトのモーションを生成することを特徴とするゲームシステム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記モーション生成手段が、
所与の関節に対して回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求めることを特徴とするゲームシステム。
【請求項５】
請求項４において、
前記各関節に対して予め設定された回転可能範囲を各関節のローカル座標系の少なくとも１軸の回転可能角度の形式で保持していることを特徴とするゲームシステム。
【請求項６】
請求項４又は５において、
前記各関節に対して予め設定された回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持していることを特徴とするゲームシステム。
【請求項７】
コンピュータが読み取り可能な情報記憶媒体であって、
関節で接続された隣り合うパーツについて親子関係が設定された複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行い、前記複数のパーツが関節により連結したオブジェクトのモーションを生成するモーション生成手段と、
生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する手段と、してコンピュータを機能させるプログラムを含み、
前記モーション生成手段が、
前記外力と前記内力の合力を当該パーツの関節の回転に寄与する成分と当該パーツの関節の回転に寄与しない成分とに分解し、当該パーツの関節の回転に寄与する成分に基づき当該パーツの関節の回転情報を演算し、当該パーツの関節の回転に寄与しない成分に基づき、関節で接続された隣り合う親パーツに作用させる内力を求める関節演算処理を、オブジェクトを構成する複数のパーツについて順次行い、子パーツの関節演算処理において演算された内力を用いて子パーツに対応する親パーツの関節演算処理を行うことを特徴とする情報記憶媒体。
【請求項８】
請求項７において、
前記モーション生成手段が、
関節で接続された隣り合う親パーツがない場合には、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクトの位置の変位を求めるためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項９】
請求項７又は８において、
前記モーション生成手段は、
前記オブジェクトの所与のパーツに衝撃が加わった場合に、当該オブジェクトのモーションを生成するためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項１０】
請求項７乃至９のいずれかにおいて、
前記モーション生成手段が、
所与の関節に対して回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求めるためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項１１】
請求項１０において、
前記各関節に対して予め設定された回転可能範囲を各関節のローカル座標系の少なくとも１軸の回転可能角度の形式で保持していることを特徴とする情報記憶媒体。
【請求項１２】
請求項１０又は１１において、
前記各関節に対して予め設定された回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持していることを特徴とする情報記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲームシステム及び情報記憶媒体に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
従来より、仮想的な３次元空間であるオブジェクト空間内の所与の視点から見える画像を生成するゲームシステムが知られており、いわゆる仮想現実を体験できるものとして人気が高い。ガンゲームを楽しむことができるゲームシステムを例にとれば、プレーヤ（操作者）は、銃などを模して作られたガン型コントローラ（シューティングデバイス）を用いて、画面に映し出される敵キャラクタ（オブジェクト）などの標的オブジェクトをシューティングすることで、３次元ゲームを楽しむ。
【０００３】
さて、このようなゲームシステムでは、プレーヤの仮想現実感の向上のために、よりリアルで高品質な画像を生成することが重要な技術的課題になっている。このため、例えば複数のパーツを関節より連結して構成されたオブジェクトの動きについてもより多様な動きをリアルに表現できることが望ましい。
【０００４】
例えば、オブジェクトを構成する所与のパーツに対してゲームの進行状況に応じてインタラクティブ発生する予測不可能な衝撃ベクトルが加わった場合、前記オブジェクトが当該衝撃を反映したモーションを行うことが好ましい。このような場合衝撃の加わったパーツや衝撃の大きさや向きによって、オブジェクトのモーションは異なってくるはずである。
【０００５】
しかしながらこのような多様なモーションを表現するためには、衝撃の加わったパーツや衝撃の大きさや向きの全ての組み合わせに対応した全てのモーションデータを予め用意しておくことが必要となりデータ量の増大を招いていた。
【０００６】
また予め用意できるデータには限りがあるためゲーム中に発生する様々な衝撃に対応した全てのモーションを生成することは困難であった。
【０００７】
そこで本願発明者は、ゲーム中に発生する様々なイベントを反映したモーションをリアルタイムに生成するゲームシステムの開発を行っている。
【０００８】
しかし、ゲーム中に発生する様々なイベントにより作用する力を完全にシミュレーションにしてモーションを生成すると演算負荷の増大を招き、限られた性能のハードウエアではリアルタイム画像生成処理が困難であるという問題がある。
【０００９】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、複数のパーツが関節により連結されたオブジェクトに対して、多様でリアルな動きを与えるモーション情報を少ない演算負荷でリアルタイムに生成可能なゲームシステムおよび情報記憶媒体を提供することにある。
【００１０】
【課題を解決するための手段】
（１）本発明は、画像生成を行うゲームシステムであって、複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行い、前記複数のパーツが関節により連結したオブジェクトのモーションを生成するモーション生成手段と、生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する手段と、を含むことを特徴とする。
【００１１】
また本発明に係る情報記憶媒体は、コンピュータにより使用可能な情報記憶媒体であって、上記手段を実行するためのプログラムを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム（情報記憶媒体または搬送波に具現化されるプログラムを含む）であって、上記手段を実行するためのモジュールを含むことを特徴とする。
【００１２】
本発明のゲームシステムでは、複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行いうことで、前記複数のパーツが関節により連結したオブジェクトのモーションをリアルタイムに生成することができる。
【００１３】
ここにおいて所与のパーツに作用する内力とは、オブジェクトを構成する他のパーツから当該パーツに作用する力である。また所与のパーツに作用する外力とは内力以外の力であり、例えば衝撃や抵抗や重力等の外的要因が作用する力のことである。
【００１４】
本発明で所与のパーツに作用する内力については、関節で接続された隣り合うパーツからのみ作用させて各パーツの関節の回転情報を求める。従って所与のパーツに他の全てのパーツからの内力を作用させて回転情報を求める場合に比べ、演算量を大幅に削減することができる。
【００１５】
また本発明によれば所与のフレームのオブジェクトを構成する全パーツについて回転情報を演算する。このときパーツ１〜パーツＮについてその順序で準次回転情報を演算するとする。本発明では隣り合うパーツ同士間では力を作用させるため、例えばパーツｎに力が加わったとすると、当該フレームでｎ＋１番目以降回転情報が演算されるパーツについては、パーツｎに加わった力を伝達させることができる。また親子関係と演算順序の関係で今回フレームで伝達されなかった場合でも次のフレームでは伝達することができる。
【００１６】
従って、隣り合うパーツからの内力しか作用させなくても、所与のパーツに加わった力による他のパーツへの影響は、次フレームまでには、離れたパーツにも伝達させることができる。このため本発明によれば、所与のパーツに加わった衝撃等が他のパーツに与える影響を表現可能なモーションを少ない演算負荷で生成することができる。
【００１７】
（２）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段が、前記外力と前記内力の合力の当該パーツの関節の回転に寄与する成分に基づき当該パーツの関節の回転情報を演算することを特徴とする。
【００１８】
前記合力の当該パーツの関節の回転に寄与する成分とは、当該パーツ関節（回転のリンク）に垂直な分力（成分）のことである。
【００１９】
本発明によればかかる成分に基づき当該パーツの回転情報を演算するため、作用する力に応じたパーツの回転をリアルに表現することができる。
【００２０】
（３）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段が、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分を、関節で接続された隣り合う親パーツに前記内力として作用させることを特徴とする。
【００２１】
前記合力の当該パーツの関節の回転に寄与しない成分とは、当該パーツの関節（回転のリンク）に平行な分力（成分）のことである。
【００２２】
本発明によればかかる成分を関節で接続された隣り合う親パーツに前記内力として作用させるので、力の影響を他のパーツに伝達することができる。
【００２３】
（４）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段が、関節で接続された隣り合う親パーツがない場合には、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクトの位置の変位を求めることを特徴とする。
【００２４】
関節で接続された隣り合う親パーツがない場合には、例えば前記合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクト全体の加速度を求め、当該加速度に基づきオブジェクトの位置の変位を決定するようにしてもよい。
【００２５】
本発明によれば、所与のパーツに加わった力によるオブジェクトの位置変化をリアルに表現することができる。
【００２６】
（５）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段は、前記オブジェクトの所与のパーツに衝撃ベクトルが加わった場合に、当該オブジェクトのモーションを生成することを特徴とする。
【００２７】
本発明によれば、ゲームの進行状況に応じてインタラクティブ発生する予測不可能な衝撃ベクトルが加わった場合、衝撃の加わったパーツや衝撃の大きさや向きを反映したモーションをリアルタイムに生成することができる。
【００２８】
従って衝撃の加わったパーツや衝撃の大きさや向きの組み合わせごとに異なる多様なモーションを予め用意しておかなくても、衝撃に応じたリアルなモーションを表現することができる。
【００２９】
（６）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段が、所与の関節に対して回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求めることを特徴とする。
【００３０】
一般に作用する力によって生じる加速度のみで各関節の回転を決定した場合には他のパーツと位置の重複（ヒット）による不具合が生じる可能性がある。これを回避するためには、ヒットチェックによる補正が必要となるが、全てのパーツとのヒットチェックによる補正を行うと演算負荷が増大する。
【００３１】
本発明によれば、各関節に対して予め回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を決定する。従って例えば他のパーツとの間で不具合が生じないような範囲に予め回転可能範囲を設定しておくことにより、他のパーツとのヒットチェックによる補正を省略することができる。
【００３２】
このため少ない演算負荷で、各パーツのヒットによる不具合が生じない好適なモーションを生成することができる。
【００３３】
（７）また本発明は画像生成を行うゲームシステムであって、複数のパーツが関節により連結したオブジェクトの各関節に回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求め、前記複数のパーツが関節により連結したオブジェクトのモーションをリアルタイムに生成するモーション生成手段と、生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する手段と、を含むことを特徴とする。
【００３４】
また本発明に係る情報記憶媒体は、コンピュータにより使用可能な情報記憶媒体であって、上記手段を実行するためのプログラムを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム（情報記憶媒体または搬送波に具現化されるプログラムを含む）であって、上記手段を実行するためのモジュールを含むことを特徴とする。
【００３５】
一般に作用する力によって生じる加速度のみで各関節の回転を決定した場合には他のパーツと位置の重複（ヒット）による不具合が生じる可能性がある。これを回避するためには、ヒットチェックによる補正が必要となるが、全てのパーツとのヒットチェックによる補正を行うと演算負荷が増大する。
【００３６】
本発明によれば、各関節に対して予め回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を決定する。従って例えば他のパーツとの間で不具合が生じないような範囲に予め回転可能範囲を設定しておくことにより、他のパーツとのヒットチェックによる補正を省略することができる。
【００３７】
このため少ない演算負荷で、各パーツのヒットによる不具合が生じない好適なモーションを生成することができる。
【００３８】
（８）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記各関節に対して予め設定された回転可能範囲を各関節のローカル座標系の少なくとも１軸の回転可能角度の形式で保持していることを特徴とする。
【００３９】
各関節のローカル座標系の少なくとも１軸とは各関節のローカル座標系のＸ軸、Ｙ軸、Ｚ軸の少なくとも１軸である。従ってそれらのうちいずれか１軸又は２軸について回転可能範囲を保持していてもよいし、３軸全てについて回転可能範囲を保持していてもよい。
【００４０】
（９）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記各関節に対して予め設定された回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持していることを特徴とする。
【００４１】
一般にコンピュータで各パーツの回転の演算を行う際には回転行列を用いた行列演算を行う。従って本発明のように回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持していると、回転演算に使う回転行列の要素の値をそのまま用いて各関節の回転情報を求めることができるので演算効率がよい。
【００４２】
（１０）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記各関節に対して予め設定された回転可能範囲は、オブジェクトを構成する他のパーツとの間でヒットによる不具合が生じないような範囲に設定されていることを特徴とする。
【００４３】
本発明によれば、他のパーツとのヒットチェックによる補正を省略することができるため少ない演算負荷で、各パーツのヒットによる不具合が生じない好適なモーションを生成することができる。
【００４４】
（１１）また本発明に係るゲームシステム、情報記憶媒体及びプログラムは、前記モーション生成手段は、前記オブジェクトの所与のパーツに衝撃ベクトルが加わった場合に、当該オブジェクトのモーションを生成することを特徴とする。
【００４５】
本発明によれば、ゲームの進行状況に応じてインタラクティブ発生する予測不可能な衝撃ベクトルが加わった場合、衝撃の加わったパーツや衝撃の大きさや向きを反映したモーションをリアルタイムに生成することができる。
【００４６】
従って衝撃の加わったパーツや衝撃の大きさや向きの組み合わせごとに異なる多様なモーションを予め用意しておかなくても、衝撃に応じたリアルなモーションを表現することができる。
【００４７】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて説明する。
【００４８】
１．構成
図１に、本実施形態のブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部１００を含めばよく、それ以外のブロックについては、任意の構成要素とすることができる。
【００４９】
ここで処理部１００は、システム全体の制御、システム内の各ブロックへの命令の指示、ゲーム処理、画像処理、音処理などの各種の処理を行うものであり、その機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）、或いはＡＳＩＣ（ゲートアレイ等）などのハードウェアや、所与のプログラム（ゲームプログラム）により実現できる。
【００５０】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、筺体などのハードウェアにより実現できる。
【００５１】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、メインメモリ１７２、フレームバッファ１７４（第１のフレームバッファ、第２のフレームバッファ）として機能し、ＲＡＭなどのハードウェアにより実現できる。
【００５２】
情報記憶媒体（コンピュータにより使用可能な記憶媒体）１８０は、プログラムやデータなどの情報を格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納される情報に基づいて本発明（本実施形態）の種々の処理を行う。即ち情報記憶媒体１８０には、本発明（本実施形態）の手段（特に処理部１００に含まれるブロック）を実行するための情報（プログラム或いはデータ）が格納される。
【００５３】
なお、情報記憶媒体１８０に格納される情報の一部又は全部は、システムへの電源投入時等に記憶部１７０に転送されることになる。また情報記憶媒体１８０に記憶される情報は、本発明の処理を行うためのプログラムコード、画像データ、音データ、表示物の形状データ、テーブルデータ、リストデータ、本発明の処理を指示するための情報、その指示に従って処理を行うための情報等の少なくとも１つを含むものである。
【００５４】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、或いはＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００５５】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【００５６】
セーブ用情報記憶装置１９４は、プレーヤの個人データ（セーブデータ）などが記憶されるものであり、このセーブ用情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【００５７】
通信部１９６は、外部（例えばホスト装置や他のゲームシステム）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ、或いは通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００５８】
なお本発明（本実施形態）の手段を実行するためのプログラム或いはデータは、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０に配信するようにしてもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含まれる。
【００５９】
処理部１００は、ゲーム処理部１１０、画像生成部１３０、音生成部１５０を含む。
【００６０】
ここでゲーム処理部１１０は、コイン（代価）の受け付け処理、各種モードの設定処理、ゲームの進行処理、選択画面の設定処理、オブジェクト（１又は複数のプリミティブ面）の位置や回転角度（Ｘ、Ｙ又はＺ軸回り回転角度）を求める処理、オブジェクトを動作させる処理（モーション処理）、視点の位置（仮想カメラの位置）や視線角度（仮想カメラの回転角度）を求める処理、マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置するための処理、ヒットチェック処理、ゲーム結果（成果、成績）を演算する処理、複数のプレーヤが共通のゲーム空間でプレイするための処理、或いはゲームオーバー処理などの種々のゲーム処理を、操作部１６０からの操作データや、セーブ用情報記憶装置１９４からの個人データや、ゲームプログラムなどに基づいて行う。
【００６１】
画像生成部１３０は、ゲーム処理部１１０からの指示等にしたがって各種の画像処理を行い、例えばオブジェクト空間内で仮想カメラ（視点）から見える画像を生成して、表示部１９０に出力する。また、音生成部１５０は、ゲーム処理部１１０からの指示等にしたがって各種の音処理を行い、ＢＧＭ、効果音、音声などの音を生成し、音出力部１９２に出力する。
【００６２】
なお、ゲーム処理部１１０、画像生成部１３０、音生成部１５０の機能は、その全てをハードウェアにより実現してもよいし、その全てをプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【００６３】
ゲーム処理部１１０は、移動・動作演算部１１２、モーション生成処理部１１４とを含む。
【００６４】
ここで移動・動作演算部１１２は、キャラクタ車などのオブジェクトの移動情報（位置データ、回転角度データ）や動作情報（オブジェクトの各パーツの位置データ、回転角度データ）を演算するものであり、例えば、操作部１６０によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、オブジェクトを移動させたり動作させたりする処理を行う。
【００６５】
より具体的には、移動・動作演算部１１２は、オブジェクトの位置や回転角度を例えば１フレーム（１／６０秒）毎に求める処理を行う。例えば（ｋ−１）フレームでのオブジェクトの位置をＰＭk-1、速度をＶＭk-1、加速度をＡＭk-1、１フレームの時間を△ｔとする。するとｋフレームでのオブジェクトの位置ＰＭk、速度ＶＭkは例えば下式（１）、（２）のように求められる。
【００６６】
ＰＭk＝ＰＭk-1＋ＶＭk-1×△ｔ              （１）
ＶＭk＝ＶＭk-1＋ＡＭk-1×△ｔ              （２）
またモーション生成処理部１１４は、複数のパーツが関節により連結したオブジェクトの所与のパーツに加わっている外力と関節で接続された隣合うパーツから当該パーツに作用する内力に基づき当該パーツの関節の回転情報を求める処理をオブジェクトを構成する各パーツについて行い、前記複数のパーツが関節により連結したオブジェクトのモーションを生成する処理を行う。
【００６７】
また前記外力と前記内力の合力の当該パーツの関節の回転に寄与する成分に基づき当該パーツの関節の回転情報を演算する処理を行うようにしてもよい。
【００６８】
また前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分を、関節で接続された隣り合う親パーツに前記内力として作用させる処理を行うようにしてもよい。
【００６９】
また関節で接続された隣り合う親パーツがない場合には、前記外力と前記内力の合力の当該パーツの関節の回転に寄与しない成分に基づきオブジェクトの位置の変位を求める処理を行うようにしてもよい。
【００７０】
また前記オブジェクトの所与のパーツに衝撃ベクトルが加わった場合に、当該オブジェクトのモーションを生成する処理を行うようにしてもよい。
【００７１】
また所与の関節に対して回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を求める処理を行うようにしてもよい。
【００７２】
画像生成部１３０は、生成したモーションに従って各パーツを配置し、複数のパーツが関節により連結したオブジェクトの画像を生成する処理を行い、ジオメトリ処理部１３２、描画部１４０を含む。
【００７３】
ここで、ジオメトリ処理部１３２は、座標変換、クリッピング処理、透視変換、或いは光源計算などの種々のジオメトリ処理（３次元演算）を行う。そして、ジオメトリ処理後（透視変換後）のオブジェクトデータ（オブジェクトの頂点座標などの形状データ、或いは頂点テクスチャ座標、輝度データ等）は、記憶部１７０のメインメモリ１７２に保存される。
【００７４】
描画部１４０は、ジオメトリ処理後のオブジェクト（モデル）を、フレームバッファ１７４に描画するための処理を行うものである。
【００７５】
なお前記オブジェクトとして表示画面サイズのポリゴンを用いてもよいし、表示画面を分割したブロックのサイズのポリゴンを用いてもよい。
【００７６】
なお、本実施形態のゲームシステムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００７７】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末を用いて生成してもよい。
【００７８】
２．本実施形態の特徴と処理
本実施の形態の特徴と処理について説明する。
【００７９】
まず人体オブジェクトを例にとり複数のパーツが関節により接続されたオブジェクトのモーションを生成するためのモーションデータについて説明する。
【００８０】
図２および図３は人体オブジェクトの関節（モーション骨）とモーションデータの関係について説明するための図である。図２の２００は、頭部、胴体、腕、脚等の複数のパーツＰ１〜Ｐ１５を関節Ｋ１〜Ｋ１５（モーション骨）で接続して構成した人体オブジェクトである。
【００８１】
例えばパーツ１（Ｐ１）はパーツ２（Ｐ２）の親であり、パーツ２（Ｐ２）はパーツ３（Ｐ３）の親であり、パーツ４（Ｐ４）はパーツ５（Ｐ５）の親である。
【００８２】
一般にｍ個の関節を有するオブジェクトの所与のモーションを１〜ｎのｎフレームで生成する場合には、例えば各フレームごとに当該フレームにおける各関節の位置情報および回転情報をモーションデータとしてあたえる。
【００８３】
そしてモーションデータに従って関節（モーション骨）Ｋ１〜Ｋ１５を動かすことで、複数のパーツが関節により接続された人体オブジェクトの動作を表現する。
【００８４】
図３は前記人体オブジェクトのモーションデータの一例を表している。
【００８５】
所与のモーションを０〜ｎのｎ＋１フレームで生成する場合には、例えば図３に示すように各フレームごとに当該フレームにおける各関節ごとの位置情報および回転情報をモーションデータとして使用する。
【００８６】
ここにおいて位置情報（ｔｘ、ｔｙ、ｔｚ）とは、親関節の始点に対する当該関節の始点位置を相対的な（ローカル座標系における）位置情報で与えたものである。
【００８７】
例えばパーツ２（Ｐ２）の位置情報は、親関節であるＫ１の始点Ｓ１に対する当該関節Ｋ２の始点Ｓ２の相対的な位置情報で与えられる。
【００８８】
またパーツ３（Ｐ３）の位置情報は、親関節であるＫ２の始点Ｓ２に対する当該関節Ｋ３の始点Ｓ３の相対的な位置情報で与えられる。
【００８９】
また最も上位のパーツ１（Ｐ１）の位置情報はオブジェクトの基準位置（図２では原点Ｏ）に対する当該関節Ｋ１の始点Ｓ１の相対的な位置情報で与えられる。
【００９０】
また回転情報とは、例えば当該関節が接続されている上位関節に対する当該関節の３軸方向に対する回転情報（ｒｘ、ｒｙ、ｒｚ）で与えられる。
【００９１】
通常かかるモーションデータを予め複数のパターン用意しておいて、ゲーム状況に応じて最適な動作を表現するモーションデータを選択し、当該モーションデータを用いて人体オブジェクトのモーションを生成する。
【００９２】
ところが人体オブジェクトを構成する所与のパーツに対して衝撃が加わった場合、衝撃の加わったパーツや衝撃の大きさや向きの全ての組み合わせに対応した全てのモーションデータを予め用意しておくと、データ量の増大を招く。そこで本実施の形態では、オブジェクトに加わった衝撃を反映したモーションデータをリアルタイムに生成する処理を行っている。
【００９３】
ここでゲーム中に発生する衝撃を完全にシミュレーションにしてモーションデータを生成すると演算負荷の増大を招くため、本実施の形態では、複数のパーツが関節により連結したオブジェクトの各パーツに加わっている外力と関節で接続された隣り合うパーツから当該パーツに作用する内力に基づき各パーツの回転情報を求める生成する処理を行っている。
【００９４】
図４は所与のパーツに作用する力について説明するための図である。ここでパーツに作用する力は例えば重力ｍｇ（ｍは関節の質量、ｇは重力定数）、地形の抗力Ｎ、子パーツが引っ張る／押す力Ｆｃ等である。ここでｍｇとＮは外力であり、Ｆｃが内力とであり、これらの内力と外力の合力がパーツに作用する力となる。
【００９５】
図５は力の回転成分及び並進成分とパーツの回転情報と関係について説明するための図である。
【００９６】
ここでＦベクトルをパーツ作用する力（合力）、３１０を関節（モーション骨）とする。Ｏは親関節との接続点でありリンクの中心となる。またＰは合力Ｆベクトルの作用点である。
【００９７】
ここで関節３１０に作用する力Ｆベクトルのうち、リンクの中心Ｏと作用点ＰからなるベクトルＯＰに垂直な成分Ｆｖベクトルがリンクの回転に作用する。そこで本実施の形態では前記合力Ｆベクトルのうち当該パーツの回転に寄与する成分Ｆｖベクトルに基づき運動方程式をといて、角加速度を求め、当該角加速度に基づき角速度を求め、当該角速度ベクトルに基づき、角移動量求め、当該パーツの回転角とする。
【００９８】
またＯＰベクトルに平行な成分であるＦｐベクトルは、親の関節を引っ張る力として、親のリンク計算に渡される。すなわち、前記合力Ｆベクトルの当該パーツの回転に寄与しない成分Ｆｐベクトルを、関節で接続された隣り合う親パーツに前記内力として作用させる。
【００９９】
図６は所与のパーツに作用する力に基づき当該パーツの加速度及び親パーツに作用させる内力を求めるフローチャート図である。
【０１００】
まずｊを初期設定する（ステップＳ１０）。ここでｊは作用する力をカウントするためのカウンターである。
【０１０１】
次にｊをインクリメントする（ステップＳ２０）。
【０１０２】
そしてＦ（ｊ）ベクトルをＦｖ（ｊ）ベクトルとＦｐ（ｊ）ベクトルに分解する。ここでＦ（ｊ）ベクトルは合力であり、Ｆｖ（ｊ）ベクトルはリンクの回転に作用する成分（パーツの回転に寄与する成分）であり、Ｆｐ（ｊ）ベクトルはリンクに平行な成分（パーツの回転に寄与しない成分）である（図５参照）。
【０１０３】
次にＦｖ（ｊ）ベクトルを回転角加速度ａ（ｊ）に変換する（ステップＳ４０）。
【０１０４】
次に求めたａ（ｊ）ベクトルをａベクトルに加算する（ステップＳ５０）。ここでａベクトルは角加速度ａ（ｊ）ベクトルの計である。
【０１０５】
次に求めたＦｐ（ｊ）ベクトルをＦｐベクトルに加算する（ステップＳ６０）。ここでＦｐベクトルはリンクに平行な成分（パーツの回転に寄与しない成分）Ｆｐ（ｊ）の計である。
【０１０６】
そして作用するすべての力Ｆｐ（ｊ）ベクトルについて処理が終わっていない場合にはステップＳ２０〜ステップＳ７０の処理を繰り返す。
【０１０７】
次に関節の回転範囲の制限について説明する。作用する力によって生じる加速度のみで各関節の回転情報を決定した場合には他のパーツと位置の重複（ヒット）による不具合が生じる可能性があるのでヒットチェックによる補正が必要となる。しかし全てのパーツとのヒットチェックによる補正を行うと演算負荷が増大するという問題点がある。
【０１０８】
そこで本実施の形態では、各関節に対して予め回転可能範囲を設定し、当該回転可能範囲内に収まるように各関節の回転情報を決定する。ここにおいて、他のパーツとの間で不具合が生じないような範囲に予め回転可能範囲を設定しておくことにより、他のパーツとのヒットチェックによる補正を省略することができる。  ここで前記各関節に対して予め設定された回転可能範囲を各関節に対する回転行列の要素の取りえる範囲の形式で保持している場合を例にとり回転情報の補正例について説明する。
【０１０９】
図７は回転行列と３軸の回転情報との関係について説明するための図である。
【０１１０】
ここで回転行列Ｍが次式で与えられているとする。
【０１１１】
【数１】
0004535607.tif 000002
【０１１２】
行列Ｍの各要素は、図７の各ｅｘベクトル、ｅｙベクトル、ｅｚベクトル、Ｖベクトルと等しい。ここでｅｘベクトル、ｅｙベクトル、ｅｚベクトルはＭによって変換される関節のＸ軸、Ｙ軸、Ｚ軸それぞれの向きベクトルであり、Ｖベクトルは関節の移動成分である。
【０１１３】
図８は、回転行列の要素の範囲制限による関節の回転制限の方式について説明するための図である。同図に示すように、ｅｙベクトルのｙ座標（ａ11）がとり得る値をｙ0＜ａ11  と制限することでｅｙベクトルの動ける範囲を回転可能範囲（アミ部分内）４１０に制限することができる。他のパラメータについても同様に制限することにより、関節の向きをこまかく範囲指定することができる。
【０１１４】
一般にコンピュータで各パーツの回転の演算を行う際には回転行列を用いた行列演算を行う。従って回転可能範囲を各関節のローカル座標系の３軸に対する回転可能角度の形式で保持している場合には行列演算で得られた回転行列と各関節のローカル座標系の３軸に対する回転可能角度との比較が必要となる。従って回転パラメータと回転行列の変換の計算が必要となる。
【０１１５】
しかしこの方法は、行列の各パラメータのみ使用して、回転パラメータｒｘ，ｒｙ，ｒｚを必要としないので、回転パラメータと回転行列の変換の計算が不用となる演算効率がよい。
【０１１６】
図９は、複数のパーツが関節により連結したオブジェクトのモーションをリアルタイムに生成して表示を行う際の全体の流れについて説明するためのフローチャート図である。
【０１１７】
まずオブジェクトを構成する各パーツの配置を初期化する（ステップＳ１１０）。ここで初期化とはオブジェクトを構成する各パーツを基準状態にすることである。モーションを生成するための各関節の回転情報は基準状態に対する変位として与えられるからである。
【０１１８】
次に各パーツに作用する力による関節の配置（モーションデータ）を演算する関節配置処理を行う（ステップＳ１２０）。関節配置処理の詳細については、図１０のフローチャートで説明する。
【０１１９】
次に関節配置処理によって得られた配置（モーションデータ）により配置した場合の各パーツと地形とのヒットに対する配置補正処理を行う（ステップＳ１３０）。各パーツと地形とのヒットに対する配置補正処理の詳細については、図１１及び図１２のフローチャートで説明する。
【０１２０】
次に各パーツと地形とのヒットに対する配置補正処理によって得られた配置（モーションデータ）を予め与えられた回転可能範囲内に補正する処理を行う（ステップＳ１４０）。回転可能範囲内に補正する処理の詳細については、図１２のフローチャートで説明する。
【０１２１】
図１０は関節配置処理の詳細について説明するためのフローチャート図である。
【０１２２】
まずｉに１をセットする（ステップＳ２１０）。ここで、ｉは関節をカウントするためのカウンターである。
【０１２３】
まずｉ番目の関節に作用する力を求める（ステップＳ２２０）。
【０１２４】
次に、ｉ番目のパーツに作用する力に基づき当該パーツの加速度及び親パーツに作用させる内力を求める処理を行う（ステップＳ２３０）。処理の詳細な内容については、図６のフローチャートで説明した通りである。
【０１２５】
次に求めた回転角加速度ａベクトルを前回フレームの回転角速度ｒ（ｉ）ベクトルに加算して今回フレームの回転角速度ｒ（ｉ）ベクトルを求める（ステップＳ２４０）。
【０１２６】
次に回転角速度ｒ（ｉ）ベクトルから回転角速度行列Ｍｖを求める（ステップＳ２５０）。回転角速度ｒ（ｉ）ベクトルから回転速度行列Ｍｖを求める詳細な処理については後述する。
【０１２７】
そして求めた回転角速度行列Ｍｖを前回フレームのｉ番目の行列Ｍ（ｉ）に掛け合わせて今回フレームのｉ番目の行列Ｍ（ｉ）を求める（Ｍ（ｉ）＝ＭｖＭ（ｉ））（ステップＳ２６０）。
【０１２８】
そして親パーツがある場合には、Ｆｐベクトルを親パーツに渡す（ステップＳ２７０、Ｓ２８０）。本実施の形態では、親パーツが内力として他のパーツからもらうのは、このように隣り合う子パーツから作用する力のみである。従って、他の全てのパーツからの力についても作用させる場合に比べ演算量を大幅に削減させることができる。
【０１２９】
また親パーツがない場合には、Ｆｐベクトルからオブジェクト全体の加速度を求め、速度Ｖベクトルに加算し（ステップＳ２９０）、Ｖベクトルをオブジェクト中心位置ｐベクトルに加算する（ステップＳ３００）。
【０１３０】
そしてｉ＜Ｎであれば、ｉをインクリメントして（ｉ＝ｉ＋１）ステップＳ２２０〜ステップＳ３１０の処理を繰り返す（ステップＳ３１０、Ｓ３２０）。ここにおいてＮはオブジェクトを構成する関節の数である。
【０１３１】
図１１、図１２は各パーツと地形とのヒットに対する配置補正処理について説明するためのフローチャート図である。
【０１３２】
まずｉに１をセットする（ステップＳ４１０）。ここで、ｉは関節をカウントするためのカウンターである。
【０１３３】
そしてｉ番目の関節のヒット球の位置を求める（ステップＳ４２０）。ここでヒット球とは当該関節のパーツに対して簡易にヒットチェックを行うために設定したヒットチェック用の球である。
【０１３４】
ヒット球が地形にヒットした場合には以下の処理を行う。
【０１３５】
まず地形に減り込んだ分の位置を補正する（ステップＳ４４０）。
【０１３６】
関節の回転速度関節の回転角速度ｒ（ｉ）ベクトルからヒット球の移動速度を求める（ステップＳ４５０）。
【０１３７】
ヒット球の速度と、地形の法線ベクトルから弾性衝突の衝撃力を求める（ステップＳ４６０）。
【０１３８】
衝撃力を、回転中心から作用点方向成分Ｆｐベクトルとそれに垂直な成分
Ｆｖベクトルに分解する（ステップＳ４７０）。
【０１３９】
Ｆｖベクトルを回転成分に変換して、回転角加速度ａベクトルを求める（ステップＳ４８０）。
【０１４０】
次に求めた回転角加速度ａベクトルを前回フレームの回転角速度ｒ（ｉ）ベクトルに加算して今回フレームの回転角速度ｒ（ｉ）ベクトルを求める（ステップＳ４９０）。
【０１４１】
次に回転角速度ｒ（ｉ）ベクトルから回転角速度行列Ｍｖを求める（ステップＳ５００）。回転角速度ｒ（ｉ）ベクトルから回転速度行列Ｍｖを求める詳細な処理については後述する。
【０１４２】
そして求めた回転角速度行列Ｍｖを前回フレームのｉ番目の行列Ｍ（ｉ）に掛け合わせて今回フレームのｉ番目の行列Ｍ（ｉ）を求める（Ｍ（ｉ）＝ＭｖＭ（ｉ））（ステップＳ５１０）。
【０１４３】
そして親パーツがある場合には、Ｆｐベクトルを親パーツに渡す（ステップＳ５２０、Ｓ５３０）。本実施の形態では、親パーツが内力として他のパーツからもらうのは、このように隣り合う子パーツから作用する力のみである。従って、他の全てのパーツからの力についても作用させる場合に比べ演算量を大幅に削減させることができる。
【０１４４】
また親パーツがない場合には、Ｆｐベクトルからオブジェクト全体の加速度を求め、速度Ｖベクトルに加算し（ステップＳ５４０）、Ｖベクトルをオブジェクト中心位置ｐベクトルに加算する（ステップＳ５５０）。
【０１４５】
そしてｉ＜Ｎであれば、ｉをインクリメントして（ｉ＝ｉ＋１）ステップＳ４２０〜ステップＳ５６０の処理を繰り返す（ステップＳ５６０、Ｓ５７０）。ここにおいてＮはオブジェクトを構成する関節の数である。
【０１４６】
最後にオブジェクト中心のヒット球の位置を求める（ステップＳ５８０）。
【０１４７】
ヒット球が地形にヒットした場合には、地形に減り込んだ分を補正して、オブジェクト中心速度Ｖベクトルに対して、地形との衝突の演算を行い、衝突後の速度Ｖベクトルを求める（ステップＳ５９０、Ｓ６００，Ｓ６１０）。
【０１４８】
図１３は回転パラメータ（各関節のローカル座標系の３軸に対する回転可能角度）の形式で回転可能範囲が与えられている場合の、回転可能範囲内に補正する処理について説明するためのフローチャート図である。
【０１４９】
まずｉに１をセットする（ステップＳ７１０）。ここで、ｉは関節をカウントするためのカウンターである。
【０１５０】
そして関節行列Ｍ(i)から回転パラメータ（ｒｘ（ｉ），ｒｙ（ｉ），ｒｚ（ｉ））を求める（ステップＳ７２０）。関節行列Ｍ(i)から回転パラメータ（ｒｘ（ｉ），ｒｙ（ｉ），ｒｚ（ｉ））に変換する手法については後述する。
【０１５１】
ｒｘ（ｉ）が予め与えられたＸ軸の回転可能範囲内に収まっていない場合にはｒｘ（ｉ）を回転可能範囲内に補正する（ステップＳ７３０、Ｓ７４０）。ここで予め与えられたＸ軸の回転可能範囲がＲＸ（ｉ）であり、ｒｘ＞ＲＸ（ｉ）の場合にはｒｘ＝ＲＸ（ｉ）とする。
【０１５２】
ｒｙ（ｉ）が予め与えられたＹ軸の回転可能範囲内に収まっていない場合にはｒｙ（ｉ）を回転可能範囲内に補正する（ステップＳ７５０、Ｓ７６０）。ここで予め与えられたＹ軸の回転可能範囲がＲＹ（ｉ）であり、ｒｙ＞ＲＹ（ｉ）の場合にはｒｙ（ｉ）＝ＲＹ（ｉ）とする。
【０１５３】
ｒｚ（ｉ）が予め与えられたＺ軸の回転可能範囲内に収まっていない場合にはｒｚを回転可能範囲内に補正する（ステップＳ７７０、Ｓ７８０）。ここで予め与えられたＺ軸の回転可能範囲がＲＺ（ｉ）であり、ｒｚ（ｉ）＞ＲＺ（ｉ）の場合にはｒｚ（ｉ）＝ＲＺ（ｉ）とする。
【０１５４】
そして回転パラメータ（ｒｘ（ｉ），ｒｙ（ｉ），ｒｚ（ｉ））から、関節行列Ｍ(i)を求める（ステップＳ７９０）。
【０１５５】
そしてｉ＜Ｎであれば、ｉをインクリメントして（ｉ＝ｉ＋１）ステップＳ７２０〜ステップＳ８００の処理を繰り返す（ステップＳ８００、Ｓ８１０）。ここにおいてＮはオブジェクトを構成するパーツの数である。
【０１５６】
図１４は回転行列の要素の形式で回転可能範囲が与えられている場合の、回転可能範囲内に補正する処理について説明するためのいフローチャート図である。
【０１５７】
まずｉに１をセットする（ステップＳ９１０）。ここで、ｉは関節をカウントするためのカウンターである。
【０１５８】
ここで現在までの処理で求まっている回転行列をＭ（ｉ）とする。Ｍ（ｉ）は以下のとおりである。
【０１５９】
【数２】
0004535607.tif 000003
【０１６０】
ここでａ00（ｉ）、ａ11（ｉ）、ａ22（ｉ）について予めとりうる範囲が与えられている。ａ00（ｉ）はｅｘベクトルのｘ成分（ローカル座標系のＸ軸のＸ軸方向の回転情報）であり、ａ11（ｉ）ｅｙベクトルのｙ成分（ローカル座標系Ｙ軸のＹ軸方向の回転情報）であり、ａ22（ｉ）ｅｚベクトルのｚ成分（ローカル座標系Ｚ軸のＺ軸方向の回転情報）である。
【０１６１】
ａ00（ｉ）が予め与えられた範囲内でない場合には、ａ00（ｉ）が範囲内に戻るのに要するｅｘベクトルの移動量を求める（ステップＳ９２０、Ｓ９３０）。
【０１６２】
そして移動量を回転量に変換して、回転行列ΔＭを求める（Ｓ９４０）。
【０１６３】
そしてＭ(i)＝Ｍ(i)ΔＭを行い補正後の回転行列Ｍ(i)を求める（ステップＳ９５０）。
【０１６４】
ａ11（ｉ）が予め与えられた範囲内でない場合には、ａ11（ｉ）が範囲内に戻るのに要するｅｙベクトルの移動量を求める（ステップＳ９６０、Ｓ９７０）。
【０１６５】
そして移動量を回転量に変換して、回転行列ΔＭを求める（Ｓ９８０）。
【０１６６】
そしてＭ(i)＝Ｍ(i)ΔＭを行い補正後の回転行列Ｍ(i)を求める（ステップＳ９９０）。
【０１６７】
ａ22（ｉ）が予め与えられた範囲内でない場合には、ａ22（ｉ）が範囲内に戻るのに要するｅｚベクトルの移動量を求める（ステップＳ１０００、Ｓ１０１０）。  そして移動量を回転量に変換して、回転行列ΔＭを求める（Ｓ１０２０）。
【０１６８】
そしてＭ(i)＝Ｍ(i)ΔＭを行い補正後の回転行列Ｍ(i)を求める（ステップＳ１０３０）。
【０１６９】
そしてｉ＜Ｎであれば、ｉをインクリメントして（ｉ＝ｉ＋１）ステップＳ９２０〜ステップＳ１０３０の処理を繰り返す（ステップＳ１０４０、Ｓ１０５０）。ここにおいてＮはオブジェクトを構成する関節の数である。
【０１７０】
図１５は移動量から回転情報を求める方式について説明するための図である。
【０１７１】
まず図示しない合力Ｆベクトルから運動方程式に基づいて、加速度を求め、当該加速度に基づき速度を求め、当該速度ベクトルに基づき、移動量Ｖベクトルを求める。
【０１７２】
例えばＦｖベクトルによりＯＰベクトルがＯＰ’ベクトルに移動したとする。この場合の移動量がＶベクトルであるとすると回転量ｗ（ｗｘ、ｗｙ、ｗｚ）は以下の式で与えられる。
【０１７３】
【数３】
0004535607.tif 000004
【０１７４】
ｘｙｚ回転軸がＷベクトルだけ回転した場合の点Ｐベクトルの移動量Ｖベクトルは以下の式で与えられる。
【０１７５】
【数４】
0004535607.tif 000005
【０１７６】
次に回転角速度ｒベクトルから回転角速度行列Ｍｖを求める詳細な処理について説明する。
【０１７７】
一般にベクトルｖ＝（ｘ，ｙ，ｚ，１）を、回転（Ｒｘ，Ｒｙ，Ｒｚ）して、平行移動（Ｔｘ，Ｔｙ，Ｔｚ）する場合の行列Ｍは次式で与えられる。
【０１７８】
【数５】
0004535607.tif 000006
【０１７９】
この場合、変換後のベクトルｖ’は、ｖ’＝ｖＭとして求まる。
【０１８０】
また以下のような既知の行列Ｍがあるとする。
【０１８１】
【数６】
0004535607.tif 000007
【０１８２】
この行列Ｍに対応する回転パラメータ（Ｒｘ，Ｒｙ，Ｒｚ）を求めたい場合、Ｍの各要素を（１）に代入して解くと以下のようになる。
【０１８３】
（１）ａ02≠±１の場合、解は以下の（式１）又は（式２）の２通り求められる。
【０１８４】
【数７】
0004535607.tif 000008
【０１８５】
ここにおいてｔａｎ-1（ｘ、ｙ）はｓｉｎθ＝ｙ、ｃｏｓθ＝ｘのときのθである。
【０１８６】
（２）ａ02＝１の場合、ｃｏｓＲｙ＝０なので、ａ00＝ａ01＝ａ12＝ａ22＝０になってしまう。従ってＲｘ，Ｒｚの解は不定で、Ｒｙ、Ｒｚは以下のようになる。
【０１８７】
【数８】
0004535607.tif 000009
【０１８８】
ここにおいて前回のＲｘの値を元に、今回のＲｘ＝前回のＲｘとしてＲｘ、Ｒｚをもとめるとよい。
【０１８９】
（３）ａ02＝−１の場合、（２）と同様Ｒｘ，Ｒｚの解は不定で、Ｒｙ、Ｒｚは以下のようになる。
【０１９０】
【数９】
0004535607.tif 000010
【０１９１】
ここにおいて前回のＲｘの値を元に、今回のＲｘ＝前回のＲｘとしてＲｘ、Ｒｚをもとめるとよい。
【０１９２】
なお、並進パラメータは（Ｔｘ，Ｔｙ，Ｔｚ）＝（ａ30，ａ31，ａ32）である。
【０１９３】
３．ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図１６を用いて説明する。
【０１９４】
メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介して転送されたプログラム、或いはＲＯＭ９５０（情報記憶媒体の１つ）に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【０１９５】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１９６】
ジオメトリプロセッサ９０４は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ９００で動作するプログラムが、その処理をジオメトリプロセッサ９０４に指示する。
【０１９７】
データ伸張プロセッサ９０６は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、所与の画像圧縮方式で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ＲＯＭ９５０、ＣＤ９８２に格納されたり、或いは通信インターフェース９９０を介して外部から転送される。
【０１９８】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０の機能を利用して、オブジェクトデータを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると、描画プロセッサ９１０は、これらのオブジェクトデータやテクスチャに基づいて、Ｚバッファなどを利用した陰面消去を行いながら、オブジェクトをフレームバッファ９２２に高速に描画する。また、描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、１フレーム分の画像がフレームバッファ９２２に書き込まれると、その画像はディスプレイ９１２に表示される。
【０１９９】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ９３２から出力される。
【０２００】
ゲームコントローラ９４２からの操作データや、メモリカード９４４からのセーブデータ、個人データは、シリアルインターフェース９４０を介してデータ転送される。
【０２０１】
ＲＯＭ９５０にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されることになる。なお、ＲＯＭ９５０の代わりにハードディスクを利用するようにしてもよい。
【０２０２】
ＲＡＭ９６０は、各種プロセッサの作業領域として用いられる。
【０２０３】
ＤＭＡコントローラ９７０は、プロセッサ、メモリ（ＲＡＭ、ＶＲＡＭ、ＲＯＭ等）間でのＤＭＡ転送を制御するものである。
【０２０４】
ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２（情報記憶媒体）を駆動し、これらのプログラム、データへのアクセスを可能にする。
【０２０５】
通信インターフェース９９０は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース９９０に接続されるネットワークとしては、通信回線（アナログ電話回線、ＩＳＤＮ）、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他のゲームシステム、他のゲームシステムとの間でのデータ転送が可能になる。
【０２０６】
なお、本発明の各手段は、その全てを、ハードウェアのみにより実行してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実行してもよい。或いは、ハードウェアとプログラムの両方により実行してもよい。
【０２０７】
そして、本発明の各手段をハードウェアとプログラムの両方により実行する場合には、情報記憶媒体には、本発明の各手段をハードウェアを利用して実行するためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０等は、その指示と渡されたデータとに基づいて、本発明の各手段を実行することになる。
【０２０８】
図１７（Ａ）に、本実施形態を業務用ゲームシステムに適用した場合の例を示す。プレーヤは、ディスプレイ１１００上に映し出されたゲーム画像を見ながら、レバー１１０２、ボタン１１０４等を操作してゲームを楽しむ。内蔵されるシステムボード（サーキットボード）１１０６には、各種プロセッサ、各種メモリなどが実装される。そして、本発明の各手段を実行するための情報（プログラム又はデータ）は、システムボード１１０６上の情報記憶媒体であるメモリ１１０８に格納される。以下、この情報を格納情報と呼ぶ。
【０２０９】
図１７（Ｂ）に、本実施形態を家庭用のゲームシステムに適用した場合の例を示す。プレーヤはディスプレイ１２００に映し出されたゲーム画像を見ながら、ゲームコントローラ１２０２、１２０４を操作してゲームを楽しむ。この場合、上記格納情報は、本体システムに着脱自在な情報記憶媒体であるＣＤ１２０６、或いはメモリカード１２０８、１２０９等に格納されている。
【０２１０】
図１７（Ｃ）に、ホスト装置１３００と、このホスト装置１３００とネットワーク１３０２（ＬＡＮのような小規模ネットワークや、インターネットのような広域ネットワーク）を介して接続される端末１３０４-1〜１３０４-nとを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納情報は、例えばホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリ等の情報記憶媒体１３０６に格納されている。端末１３０４-1〜１３０４-nが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末１３０４-1〜１３０４-nに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４-1〜１３０４-nに伝送し端末において出力することになる。
【０２１１】
なお、図１７（Ｃ）の構成の場合に、本発明の各手段を、ホスト装置（サーバー）と端末とで分散して実行するようにしてもよい。また、本発明の各手段を実行するための上記格納情報を、ホスト装置（サーバー）の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【０２１２】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。そして、業務用ゲームシステムをネットワークに接続する場合には、業務用ゲームシステムとの間で情報のやり取りが可能であると共に家庭用ゲームシステムとの間でも情報のやり取りが可能なセーブ用情報記憶装置（メモリカード、携帯型ゲーム装置）を用いることが望ましい。
【０２１３】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０２１４】
例えば、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０２１５】
また、本発明は種々のゲーム（格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等）に適用できる。
【０２１６】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード等の種々のゲームシステムに適用できる。
【図面の簡単な説明】
【図１】本実施形態のゲームシステムのブロック図の例である。
【図２】人体オブジェクトの関節（モーション骨）とモーションデータの関係について説明するための図である。
【図３】人体オブジェクトの関節（モーション骨）とモーションデータの関係について説明するための図である。
【図４】所与のパーツに作用する力について説明するための図である。
【図５】力の回転成分及び並進成分とパーツの回転情報と関係について説明するための図である。
【図６】所与のパーツに作用する力に基づき当該パーツの加速度及び親パーツに作用させる内力を求めるフローチャート図である。
【図７】回転行列と３軸の回転情報との関係について説明するための図である。
【図８】回転行列の要素の範囲制限による関節の回転制限の方式について説明するための図である。
【図９】複数のパーツが関節により連結したオブジェクトのモーションをリアルタイムに生成して表示を行う際の全体の流れについて説明するためのフローチャート図である。
【図１０】関節配置処理の詳細について説明するためのフローチャート図である。
【図１１】各パーツと地形とのヒットに対する配置補正処理について説明するためのフローチャート図である。
【図１２】各パーツと地形とのヒットに対する配置補正処理について説明するためのフローチャート図である。
【図１３】回転パラメータ（各関節のローカル座標系の３軸に対する回転可能角度）の形式で回転可能範囲が与えられている場合の、回転可能範囲内に補正する処理について説明するためのフローチャート図である。
【図１４】回転行列の要素の形式で回転可能範囲が与えられている場合の、回転可能範囲内に補正する処理について説明するためのフローチャート図である。
【図１５】移動量から回転情報を求める方式について説明するための図である。
【図１６】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図１７】図１７（Ａ）、（Ｂ）、（Ｃ）は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【符号の説明】
１００  処理部
１１０  ゲーム処理部
１１２  移動・動作演算部
１１４  モーション生成処理部
１３０  画像生成部
１３２  ジオメトリ処理部
１４０  描画部
１５０  音生成部
１６０  操作部
１７０  記憶部
１７２  メインメモリ
１７４  フレームバッファ
１８０  情報記憶媒体
１９０  表示部
１９２  音出力部
１９４  セーブ用情報記憶装置
１９６  通信部
【図１】
0004535607.tif 000011
【図２】
0004535607.tif 000012
【図３】
0004535607.tif 000013
【図４】
0004535607.tif 000014
【図５】
0004535607.tif 000015
【図６】
0004535607.tif 000016
【図７】
0004535607.tif 000017
【図８】
0004535607.tif 000018
【図９】
0004535607.tif 000019
【図１０】
0004535607.tif 000020
【図１１】
0004535607.tif 000021
【図１２】
0004535607.tif 000022
【図１３】
0004535607.tif 000023
【図１４】
0004535607.tif 000024
【図１５】
0004535607.tif 000025
【図１６】
0004535607.tif 000026
【図１７】
0004535607.tif 000027