(57)【特許請求の範囲】
【請求項１】
画像を生成するための画像生成システムであって、
所与の頂点が複数の関節から影響を受ける多関節モデルのオブジェクトの頂点情報を前記オブジェクト毎に設定された基準座標系の座標値として記憶する手段と、
前記基準座標系の座標値で与えられた所与の頂点の頂点座標を読み出し、読み出した所与の頂点の頂点座標と前記関節単位のローカル座標系の値で与えられたモーションデータ及び関節の接続状態に基いて、当該所与の頂点が影響を受ける複数の関節についてモーション後の頂点位置演算を行い複数の頂点座標を求め、求めた複数の頂点座標に基づいて、モーション後の所与の頂点の頂点位置を演算する手段と、
演算した所与の頂点位置に基づき前記オブジェクトの画像を生成する画像生成手段と、
を含むことを特徴とする画像生成システム。
【請求項２】
請求項１において、
前記モーションデータ及び関節の接続状態に基づき、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を各関節毎に求める手段と、
前記頂点位置演算行列を用いてモーション後の頂点位置を演算する手段とを含み、
前記頂点位置演算行列を求める手段が、
前記頂点位置演算行列の回転要素を、前記モーションデータとして与えられた回転移動行列の回転要素及び各関節の接続状態に基づき演算し、
前記頂点位置演算行列の移動要素を、基準座標系における各関節位置に基づき演算することを特徴とする画像生成システム。
【請求項３】
請求項１又は２のいずれかにおいて、
前記モーションデータ及び各関節の接続状態に基づき各関節の基準座標系におけるモーションを表す回転移動行列を演算する手段と、
初期状態における各関節の基準座標系における位置座標を演算する手段と、
前記各関節の基準座標系におけるモーションを表す回転移動行列を各関節の基準座標系における位置座標に作用させて移動補正値を求める手段と、
前記移動補正値に基づき、前記各関節の基準座標系におけるモーションを表す回転移動行列の移動要素を補正して、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を求める手段と、
前記頂点位置演算行列を用いてモーション後の頂点位置を演算する手段とを含むことを特徴とする画像生成システム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記多関節モデルのオブジェクトはスキンモデルのオブジェクトであることを特徴とする画像生成システム。
【請求項５】
請求項１乃至４のいずれかにおいて、
所与の頂点が影響を受ける複数の関節について所定のルールに従い重みづけを行い、前記重みに基づき処理対象頂点のモーション後の頂点座標の荷重平均をとり、モーション後の頂点位置を演算することを特徴とする画像生成システム。
【請求項６】
コンピュータが読み取り可能な情報記憶媒体であって、
所与の頂点が複数の関節から影響を受ける多関節モデルのオブジェクトの頂点情報を前記オブジェクト毎に設定された基準座標系の座標値として記憶する手段と、
前記基準座標系の座標値で与えられた所与の頂点の頂点座標を読み出し、読み出した所与の頂点の頂点座標と前記関節単位のローカル座標系の値で与えられたモーションデータ及び関節の接続状態に基いて、当該所与の頂点が影響を受ける複数の関節についてモーション後の頂点位置演算を行い複数の頂点座標を求め、求めた複数の頂点座標に基づいて、モーション後の所与の頂点の頂点位置を演算する手段と、
演算した所与の頂点位置に基づき前記オブジェクトの画像を生成する画像生成手段としてコンピュータを機能させるためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項７】
請求項６において、
前記モーションデータ及び関節の接続状態に基づき、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を各関節毎に求める手段と、
前記頂点位置演算行列を用いてモーション後の頂点位置を演算する手段としてコンピュータを機能させるためのプログラム含み、
前記頂点位置演算行列を求める手段が、
前記頂点位置演算行列の回転要素を、前記モーションデータとして与えられた回転移動行列の回転要素及び各関節の接続状態に基づき演算し、
前記頂点位置演算行列の移動要素を、基準座標系における各関節位置に基づき演算することを特徴とする情報記憶媒体。
【請求項８】
請求項６又は７のいずれかにおいて、
前記モーションデータ及び各関節の接続状態に基づき各関節の基準座標系におけるモーションを表す回転移動行列を演算する手段と、
初期状態における各関節の基準座標系における位置座標を演算する手段と、
前記各関節の基準座標系におけるモーションを表す回転移動行列を各関節の基準座標系における位置座標に作用させて移動補正値を求める手段と、
前記移動補正値に基づき、前記各関節の基準座標系におけるモーションを表す回転移動行列の移動要素を補正して、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を求める手段と、
前記頂点位置演算行列を用いてモーション後の頂点位置を演算する手段としてコンピュータを機能させるためのプログラムを含むことを特徴とする情報記憶媒体。
【請求項９】
請求項６乃至８のいずれかにおいて、
前記多関節モデルのオブジェクトはスキンモデルのオブジェクトであることを特徴とする情報記憶媒体。
【請求項１０】
請求項６乃至９のいずれかにおいて、
所与の頂点が影響を受ける複数の関節について所定のルールに従い重みづけを行い、前記重みに基づき処理対象頂点のモーション後の頂点座標の荷重平均をとり、モーション後の頂点位置を演算することを特徴とする情報記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像生成システム及び情報記憶媒体に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
従来より、仮想的な３次元空間であるオブジェクト空間内の所与の視点から見える画像を生成する画像生成システムが知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【０００３】
このような画像生成システムでは、プレーヤの仮想現実感の向上のために、よりリアルな画像を生成することが重要な技術的課題になっている。
【０００４】
例えば格闘技ゲーム等では、プレーヤキャラクタの首や手足の動きを表現するために、首、頭、上腕、下腕、胴体、上脚、下脚等の各パーツオブジェクトを関節により接続して多関節の人体モデルを形成し、各パーツオブジェクトを所与のモーションデータにしたがって配置することにより、人体の動きを表現することが行われる。
【０００５】
一般にかかるモーションデータは各関節のローカル座標系における回転情報として与えられる。この回転情報にしたがって各関節に接続されたパーツオブジェクトを配置することにより、人体モデルにモーション画像を生成することができる。
【０００６】
このような多関節モデルにおいて、所与の頂点が複数の関節から影響を受けるよう構成されたエンベロブモデル（又はスキンモデル）を用い、人体の動きをよりリアルかつ精緻に表現することが行われている。
【０００７】
ところがエンベロブモデル（又はスキンモデル）を採用する場合、複数の関節から影響を受ける頂点については、同一の頂点について影響を受ける関節の数だけ頂点データを有するモデル情報を用いて画像生成が行われていた。
【０００８】
そして複数の頂点データそれぞれについて、対応する関節に対して与えられたモーションデータによる変換処理を行い、新たな頂点位置を求めていた。このように同一の頂点について複数の頂点データを有しているため、メモリからレジスタへのアクセス量の増大し、処理時間の増大の原因となっていた。
【０００９】
特にゲーム画像のようにリアルタイムにモーションアニメーション処理が必要な画像を生成する場合には、高品質な画像を如何に高速に生成するかが重要な課題となる。
【００１０】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、所与の頂点が複数の関節から影響を受けるよう構成された多関節モデルのモーションアニメーション画像をより高速に生成可能な画像生成システム及び情報記憶媒体を提供することにある。
【００１１】
【課題を解決するための手段】
本発明は、画像を生成するための画像生成システムであって、所与の頂点が複数の関節から影響を受ける多関節モデルのオブジェクトの頂点情報を前記オブジェクト毎に設定された基準座標系の座標値として記憶する手段と、前記基準座標系の座標値で与えられた頂点座標を読み出し、モーション後の頂点位置を演算する手段と、前記移動後の頂点位置に基づき前記オブジェクトの画像を生成する画像生成手段と、を含むことを特徴とする。
【００１２】
また本発明に係る情報記憶媒体は、コンピュータにより使用可能な情報記憶媒体であって、上記手段を実行するためのプログラムを含むことを特徴とする。また本発明に係るプログラムは、コンピュータにより使用可能なプログラム（搬送波に具現化されるプログラムを含む）であって、上記手段を実行するための処理ルーチンを含むことを特徴とする。
【００１３】
本発明によれば、同一の頂点についてモデル情報として有する頂点データが１つだけでよいため、メモリからレジスタ等への頂点のアクセス回数がひとつの頂点について１回のみでよい。このため本発明によれば、所与の頂点が複数の関節から影響を受けるよう構成された多関節モデルのモーションアニメーション画像をより高速に生成可能な画像生成システム及び情報記憶媒体を提供することができる。
【００１４】
なおアクセス回数を減らすためには、全頂点について基準座標系の座標値であらわすことが好ましい。
【００１５】
また、同一の頂点について頂点データが１つだけでよいためメモリを効率よく使用することができるという効果もある。
【００１６】
また本発明に係る画像生成システム、情報記憶媒体及びプログラムは、前記モーションデータは、関節単位のローカル座標系の値で与えられることを特徴とする。
【００１７】
一般にモーションデータは各関節のローカル座標系における回転情報及び平行移動情報として与えられる。これらの情報にしたがって各関節に接続されたパーツオブジェクトを配置することにより、人体モデル等のモーションアニメーション画像を生成することができる。
【００１８】
本発明によれば、モーションデータが前記関節単位のローカル座標系の値で与えられた場合にも、所与の頂点が複数の関節から影響を受けるよう構成された多関節モデルのモーションアニメーション画像をより高速に生成可能な画像生成システム及び情報記憶媒体を提供することができる。
【００１９】
また本発明に係る画像生成システム、情報記憶媒体及びプログラムは、前記モーションデータ及び関節の接続状態に基づき、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を各関節毎に求める手段と、前記頂点位置演算行列を用いてモーション後の頂点位置を演算する手段とを含み、前記頂点位置演算行列を求める手段が、前記頂点位置演算行列の回転要素を、前記モーションデータとして与えられた回転移動行列の回転要素及び各関節の接続状態に基づき演算し、前記頂点位置演算行列の移動要素を、基準座標系における各関節位置に基づき演算することを特徴とする。
【００２０】
一般にモーション後の頂点位置を演算するための頂点位置演算行列は、回転要素と移動要素を含む。回転要素は例えば３軸に対する回転動作を規定するもので、移動要素は例えば３軸に対する移動動作を規定するものである。
【００２１】
なお、頂点位置演算行列は移動要素と回転要素の両方を含む１つの行列として設定されている必要はなく、例えば移動のみを行わせるための行列と、回転のみをおこなわせるための行列が別々に設定されている場合も本発明に含まれる。例えば、回転行列と移動行列を順次作用させる形式でモーションデータが与えられている場合でもよい。
【００２２】
本願の発明者は、前記頂点位置演算行列の回転要素は前記モーションデータとして与えられた回転移動行列の回転要素及び各関節の接続状態に基づき演算できること、及び前記頂点位置演算行列の移動要素は基準座標系における各関節位置に基づき演算できることを見出した。そしてこの手法により頂点位置演算行列を求め、モーション後の頂点位置を演算するという簡単な構成で、モーションアニメーション画像をより高速に生成可能な画像生成システム及び情報記憶媒体を提供することができる。
【００２３】
また本発明に係る画像生成システム、情報記憶媒体及びプログラムは、前記モーションデータ及び各関節の接続状態に基づき各関節の基準座標系におけるモーションを表す回転移動行列を演算する手段と、初期状態における各関節の基準座標系における位置座標を演算する手段と、前記各関節の基準座標系におけるモーションを表す回転移動行列を各関節の基準座標系における位置座標に作用させて移動補正値を求める手段と、前記移動補正値に基づき、前記各関節の基準座標系におけるモーションを表す回転移動行列の移動要素を補正して、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を求める手段と、前記頂点位置演算行列を用いてモーション後の頂点位置を演算する手段とを含むことを特徴とする。
【００２４】
本発明によれば、上記演算処理を追加するだけで簡単に、モーションアニメーション画像をより高速に生成可能な画像生成システム及び情報記憶媒体を提供することができる。
【００２５】
また本発明に係る画像生成システム、情報記憶媒体及びプログラムは、前記処理対象頂点の基準座標系の座標値を、処理対象頂点が影響を受ける複数の関節それぞれについて対応する前記頂点位置演算行列を用いてモーション後の頂点座標を演算し、影響を受ける複数の関節について演算されたモーション後の頂点座標にもとづき、処理対象頂点のモーション後の頂点位置を演算することを特徴とする。
【００２６】
本発明では処理対象頂点が影響を受ける複数の関節について演算されたモーション後の頂点座標にもとづき、処理対象頂点のモーション後の頂点位置を演算しているため、影響関節のモーションを処理対象頂点に反映させることができる。
【００２７】
したがって複数の関節から影響を受ける頂点に対しても、影響関節のモーションを反映した移動位置をより高速に演算可能な画像生成システム及び情報記憶媒体を提供することができる。
【００２８】
また本発明に係る画像生成システム、情報記憶媒体及びプログラムは、処理対象頂点が影響を受ける複数の関節について所定のルールに従い重みづけを行い、前記重みに基づき処理対象頂点のモーション後の頂点座標の荷重平均をとり、モーション後の頂点位置を演算することを特徴とする。
【００２９】
関節の影響度に応じて重みづけを行い、同一の頂点に対する複数の座標変換値に対して前記重みに基づき荷重平均をとることが好ましい。
【００３０】
このようにすれば関節の影響度に応じて各関節のモーションを反映した頂点座標を演算することができる。
【００３１】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて説明する。なお以下では、本発明を、格闘ゲームに適用した場合を例にとり説明するが、本発明はこれに限定されず、種々のゲームに適用できる。
【００３２】
１．構成
図１に、本実施形態のブロック図の一例を示す。なお同図において本実施形態は、少なくとも処理部１００を含めばよく（或いは処理部１００と記憶部１７０、或いは処理部１００と記憶部１７０と情報記憶媒体１８０を含めばよく）、それ以外のブロック（例えば操作部１６０、表示部１９０、音出力部１９２、携帯型情報記憶装置１９４、通信部１９６）については、任意の構成要素とすることができる。
【００３３】
ここで処理部１００は、システム全体の制御、システム内の各ブロックへの命令の指示、ゲーム処理、画像処理、音処理などの各種の処理を行うものであり、その機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）、或いはＡＳＩＣ（ゲートアレイ等）などのハードウェアや、所与のプログラム（ゲームプログラム）により実現できる。
【００３４】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、レバー、ボタン、筺体などのハードウェアにより実現できる。
【００３５】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭなどのハードウェアにより実現できる。
【００３６】
なお本実施の形態の処理実行時には、メインメモリには基準座標系で与えられた頂点座標が記憶されている。
【００３７】
情報記憶媒体（コンピュータにより使用可能な記憶媒体）１８０は、プログラムやデータなどの情報を格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納される情報に基づいて本発明（本実施形態）の種々の処理を行う。即ち情報記憶媒体１８０には、本発明（本実施形態）の手段（特に処理部１００に含まれるブロック）を実行するための情報（プログラム或いはプログラム及びデータ）が格納される。
【００３８】
なお、情報記憶媒体１８０に格納される情報の一部又は全部は、システムへの電源投入時等に記憶部１７０に転送されることになる。また情報記憶媒体１８０に記憶される情報は、本発明の処理を行うためのプログラムコード、画像データ、音データ、表示物の形状データ、テーブルデータ、リストデータ、本発明の処理を指示するための情報、その指示に従って処理を行うための情報等の少なくとも１つを含むものである。
【００３９】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、或いはＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００４０】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【００４１】
携帯型情報記憶装置１９４は、プレーヤの個人データやセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲーム装置などを考えることができる。
【００４２】
通信部１９６は、外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ、或いは通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００４３】
なお本発明（本実施形態）の手段を実行するためのプログラム或いはデータは、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０に配信するようにしてもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含まれる。
【００４４】
処理部１００は、ゲーム処理部１１０、画像処理部１４０、音処理部１５０を含む。
【００４５】
ここでゲーム処理部１１０は、コイン（代価）の受け付け処理、各種モードの設定処理、ゲームの進行処理、選択画面の設定処理、オブジェクトの位置や回転角度（Ｘ、Ｙ又はＺ軸回り回転角度）を求める処理、オブジェクトを動作させる処理（モーション処理）、視点位置や視線角度（視線方向）を求める処理、マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置する処理、ヒットチェック処理、ゲーム結果（成果、成績）を演算する処理、複数のプレーヤが共通のゲーム空間でプレイするための処理、或いはゲームオーバー処理などの種々のゲーム処理を、操作部１６０からの操作データや、携帯型情報記憶装置１９４からの個人データ、保存データや、ゲームプログラムなどに基づいて行う。
【００４６】
画像処理部１４０は、ゲーム処理部１１０からの指示等にしたがって、各種の画像処理を行うものである。また、音処理部１５０は、ゲーム処理部１１０からの指示等にしたがって、各種の音処理を行うものである。
【００４７】
なお画像処理部１４０、音処理部１５０の機能は、その全てをハードウェアにより実現してもよいし、その全てをプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【００４８】
ゲーム処理部１１０は、移動・動作演算部１１４を含む。
【００４９】
移動・動作演算部１１４は、ゲームキャラクタなどのオブジェクトの移動情報（位置データ、回転角度データ）や動作情報（オブジェクトの各パーツの位置データ、回転角度データ）を演算するものであり、例えば、操作部１６０によりプレーヤが入力した操作データやゲームプログラムなどに基づいて、オブジェクトを移動させたり動作させたりする処理を行う。
【００５０】
より具体的には、移動・動作演算部１１４は、オブジェクトの位置や回転角度を例えば１フレーム（１／６０秒）毎に求める処理を行う。例えば（ｋ−１）フレームでのオブジェクトの位置をＰＭk-1、速度をＶＭk-1、加速度をＡＭk-1、１フレームの時間を△ｔとする。するとｋフレームでのオブジェクトの位置ＰＭk、速度ＶＭkは例えば下式（１）、（２）のように求められる。
【００５１】
ＰＭk＝ＰＭk-1＋ＶＭk-1×△ｔ              （１）
ＶＭk＝ＶＭk-1＋ＡＭk-1×△ｔ              （２）
画像処理部１４０は、ジオメトリ処理部（３次元座標演算部）１４２、テクスチャ情報変更部１４４、描画部（レンダリング部）１４６を含む。
【００５２】
ここで、ジオメトリ処理部１４２は、座標変換、クリッピング処理、透視変換、或いは光源計算などの種々のジオメトリ処理（３次元座標演算）を行う。
【００５３】
モーションアニメーション処理部１４４は、基準座標系の座標値で与えられた頂点座標を読み出し、関節単位のローカル座標系の値で与えられたモーションデータによる移動後の頂点位置を演算する処理をおこなう。
【００５４】
前記モーションデータ及び関節の接続状態に基づき、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を各関節毎に求め、前記頂点位置演算行列を用いてモーション後の頂点位置を演算する処理を行うようにしてもよい。ここにおいて頂点位置演算行列の回転要素を、前記モーションデータとして与えられた回転移動行列の回転要素及び各関節の接続状態に基づき演算し、前記頂点位置演算行列の移動要素を、基準座標系における各関節位置に基づき演算するようにしてもよい。
【００５５】
また、前記モーションデータ及び各関節の接続状態に基づき各関節の基準座標系におけるモーションを表す回転移動行列を演算し、初期状態における各関節の基準座標系における位置座標を演算し、各関節の基準座標系におけるモーションを表す回転移動行列を各関節の基準座標系における位置座標に作用させて移動補正値を求め、前記移動補正値に基づき、前記各関節の基準座標系におけるモーションを表す回転移動行列の移動要素を補正して、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を求め、前記頂点位置演算行列を用いてモーション後の頂点位置を演算するようにしてもよい。
【００５６】
描画部１４６は、モーション後の頂点位置に基づきモーションアニメーション画像を生成し描画する処理を行う。
【００５７】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、このようなシングルプレーヤモードのみならず、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。
【００５８】
また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末を用いて生成してもよい。
【００５９】
２．本実施形態の特徴
本実施の形態の特徴は、所与の頂点が複数の関節から影響を受ける多関節モデルのオブジェクトの頂点情報を前記オブジェクト毎に設定された基準座標系の座標値として記憶し、各関節単位のローカル座標系の値で与えれたモーションデータを用いてモーションアニメーション処理を行う点にある。
【００６０】
まず多関節モデルのモーションアニメーション処理の他の処理例について説明し、本実施の形態の構成の特徴及び効果を明らかにする。
【００６１】
図２（Ａ）（Ｂ）は他の処理例における多関節モデルのモデル情報について説明するための図である。図２（Ａ）の２００は頭、首、頭、上腕、下腕、胴体、上脚、下脚等の各パーツオブジェクトが複数の関節Ｋ１〜Ｋ１５で接続された多関節人体モデルである。従来かかる多関節人体モデルのモデル情報を作成する場合には、各パーツオブジェクト単位で頂点情報を作成していた。
【００６２】
すなわち図２（Ｂ）に示すように上腕部２１０を構成する頂点Ｖ２１０−１、Ｖ２１０−２、Ｖ２１０−２、‥‥は上腕部２１０（または関節Ｋ２（図２（Ａ）参照））のローカル座標系における座標値として有していた。また下腕部２２０を構成する頂点Ｖ２２０−１、Ｖ２２０−２、Ｖ２２０−２、‥‥は下腕部２２０（または関節Ｋ６（図２（Ａ）参照））のローカル座標系における座標値として有していた。これはモデルを作成する際には各パーツ単位に作成するほうが作り勝手がよいためである。
【００６３】
またパーツオブジェクトは一体となって動作するため動作時の演算が容易であるという点もあげられる。
【００６４】
すなわち一般に多関節モデルが動作する画像を生成する際にはモーションデータを用いる。図３は、多関節モデルに与えられるモーションデータについて説明するための図である。例えば多関節人体モデル２００において各パーツオブジェクトがＫ１〜Ｋ１５の関節（点）で接続されているとする。各関節間の矢印で表されたベクトルＭ１〜Ｍ１４は矢印のさす方向にある関節点の配置を特定するためのモーションデータを模式的に表したものである。このようにモーションデータは各関節（点）に接続される次の関節（点）の回転方向及び距離で与えられる。
【００６５】
例えばモーションデータＭ５はＫ４とＫ６の距離及び関節Ｋ４のローカル座標系におけるベクトルＭ５の回転角で表される。
【００６６】
多関節モデルが動作する画像はモーションデータＭ１〜Ｍ１４にしたがって関節（点）Ｋ２〜Ｋ１５を配置し、各関節に接続されたパーツオブジェクトの頂点位置を演算することで所与のモーションで動作する人体モデルの画像を生成することができる。
【００６７】
このようにして関節で接続された頭、首、頭、上腕、下腕、胴体、上脚、下脚等の各パーツオブジェクトは各パーツオブジェクト毎に前記モーションデータＭ１〜Ｍ１４にしたがって一体的に動作する。したがって各パーツオブジェクトを構成する頂点についての情報を各パーツオブジェクト単位のローカル座標系で待たせておけば、与えられた各関節に与えられたモーションにしたがって座標変換を行うことで移動後の頂点位置を演算することができる。
【００６８】
多関節モデルのうちエンベローブモデル（またはスキンモデル）は複数の関節からの影響を考慮して皮膚などのよりリアルな動きを表現するのに適している。
【００６９】
ところがこの構成においては複数の関節からの影響を反映させるために同一の頂点について複数の頂点データを必要とした。例えば図３の多関節人体モデル２００の肩の部分の頂点Ｖ１が関節Ｋ２、Ｋ４から影響を受けるとすると、同一の頂点Ｖ１について関節Ｋ２のローカル座標系における座標値Ｖk2及び関節Ｋ４のローカル座標系における座標値Ｖk4と２つ必要とし、Ｖk2、Ｖk4のそれぞれについてモーションデータによる位置演算処理を行っていた。このため同一の頂点Ｖ１について、Ｖk2、Ｖk4の２つの頂点データをメモリ上に有し、それぞれについてメモリからレジスタへのアクセス処理が発生することになる。
【００７０】
このように他の処理例では頂点データのメモリからレジスタへの読み込みが、同一の頂点について影響を受ける関節分だけ必要となるので処理時間の増大を招くという問題点があった。
【００７１】
またかかるモデル情報は、同一の頂点について影響を受ける関節分の頂点データが必要となるのでメモリ上のデータ量の増大につながるという問題点があった。
【００７２】
これに対し本実施の形態では、多関節モデルを構成する各頂点はすべて、各モデル毎に設けられた基準点Ｏを原点とする基準座標系における座標値として、同一の頂点についてひとつ与えられる構成を採用している。
【００７３】
以下、本実施の形態におけるモーションアニメーション処理例について説明する。
【００７４】
図４、図５は、本実施の形態において基準座標系における座標値で与えられた頂点座標を用いてモーション後の頂点位置を求める処理について説明するためのフローチャート図である。
【００７５】
まず初期化時にＯを原点とする基準座標系における各関節座標Ａ（ｉ）を求める（ステップＳ１１０）。
【００７６】
図６は基準座標系における各関節（点）の座標の算出を説明するための概念図である。Ｏを基準点、Ｋ１〜Ｋ８を多関節人体モデル３００の関節（点）であるとすると、基本姿勢におけるこれらの関節（点）の基準座標系における座標値を求めることになる。ここにおいて基本姿勢とは例えばモーションデータを作用させる前の初期状態等があげられる。
【００７７】
次にステップＳ１２０〜Ｓ１６０で、与えられたモーションデータから、各関節の基準座標系における回転移動行列を演算する。
【００７８】
まず関節数をカウントするカウンタｉに初期値を設定する（ステップＳ１２０）。
【００７９】
そしてステップＳ１３０〜Ｓ１６０で、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列を求める処理を行う。
【００８０】
まずモーションデータ及び各関節の接続状態に基づき、各関節の基準座標系における回転移動行列ＬＷ（ｉ）を演算する（ステップＳ１３０）。基準座標系とはモデル単位に与えられるものであり、例えばボディ座標系等である。
【００８１】
図７は各関節の基準座標系における回転移動行列ＬＷ（ｉ）演算の概念について説明するための図である。図６の場合と同様にＯを基準点、Ｋ１〜Ｋ８を多関節人体モデル３００の関節（点）であるとすると、同図に示すように各関節Ｋ１〜Ｋ８の配置を決定するためのモーションデータＭ１〜Ｍ１０が与えられる。
【００８２】
ここにおいてモーションデータは各関節単位のローカル座標系におけるの回転移動行列として与えられる。例えば関節（点）Ｋ６のモーションデータは関節（点）Ｋ５に対する相対的な配置として与えられる。また関節（点）Ｋ５のモーションデータは関節（点）Ｋ４に対する相対的な配置として与えられる。また関節（点）Ｋ４のモーションデータは関節（点）Ｋ２に対する相対的な配置として与えられる。そして関節（点）Ｋ２のモーションデータは基準点Ｏに対する相対的な配置として与えられている。
【００８３】
したがって関節（点）Ｋ６の基準点Ｏに対する配置を求める際には、これらの関節の接続状態に応じて基準座標系に対するモーションデータ、すなわち関節（点）Ｋ６の基準座標系における回転移動行列を演算することが必要となる。
【００８４】
そして次に、基準座標系における関節座標Ａ（ｉ）に、対応する基準座標系の回転移動行列ＬＷ（ｉ）を掛けてもとまった平行移動値ＸＹＺ値をＬＷ（ｉ）の平行移動値部でＸＹＺそれぞれに対して引き算を行ってから代入し、その回転移動行列をＲ（ｉ）とする（ステップＳ１４０）。このＲ（ｉ）は、関節が影響を与える頂点のモーション後の頂点位置を演算するための頂点位置演算行列として機能する。
【００８５】
そしてカウンタｉのインクリメントを行い（ステップＳ１５０）、ｉの値によりすべての関節分のＲ（ｉ）を求める処理が終了したかを判断し、終了していない場合にはステップＳ１３０に戻る（ステップＳ１６０）。
【００８６】
次にモーション後のモデルの頂点データの演算を行い（ステップＳ１７０）、演算された頂点データに基づき描画処理を行う（ステップＳ１８０）。
【００８７】
図５は図４のステップＳ１７０の頂点データの演算の詳細な処理例について説明するためのフローチャート図である。
【００８８】
まず、１頂点データを読み込む（ステップＳ２１０）。
【００８９】
本実施の形態では同一の頂点についての頂点データとして、基準座標系における頂点座標値を１つ有している。したがって各頂点について頂点座標値をメモリからレジスタに読み込む処理は一回のみでよい。
【００９０】
次にステップＳ２２０からＳ２３０で、ステップＳ２１０で読み込んだ１つの頂点データについて影響を受けるすべての関節のＲ（ｉ）による頂点位置演算を行う。
【００９１】
すなわちまず影響関節Ｒ（ｉ）を読み込んだ基準座標系における頂点座標にかける頂点位置演算を行う（ステップＳ２２０）。そして頂点が影響を受けるすべての関節についての頂点位置演算を行ったかを判断し、当該頂点が影響を受けるすべての関節について終了するまで、ステップＳ２２０の処理を行う（ステップＳ２３０）。
【００９２】
例えば、読み込んだ頂点値をＶ（ｎ）、Ｖ（ｎ）に影響を与える関節をＫ（ｉ）（ｉ＝ａ、ｂ、ｃ）、Ｋ（ｉ）の回転移動行列Ｒ（ｉ）とすれば以下のように３回の頂点位置演算を行うことになる。
【００９３】
Ｖa'（ｎ）＝Ｒ（ａ）Ｖ（ｎ）
Ｖb'（ｎ）＝Ｒ（ｂ）Ｖ（ｎ）
Ｖc'（ｎ）＝Ｒ（ｃ）Ｖ（ｎ）
したがって、１つの頂点についての１座標値から、３つの頂点位置座標が演算されることになる。
【００９４】
１つの頂点について影響を受けるすべての関節についての頂点位置演算を行ったならば、影響関節分のすべての座標変換値より重み付けして、頂点座標を確定する（ステップＳ２４０）。
【００９５】
例えばＫ（ａ）、Ｋ（ｂ）、Ｋ（ｃ）からａ：ｂ：ｃの割合で影響を受ける場合には、その影響に応じて以下のように重み付けして頂点座標をＶ’（ｎ）に確定してもよい。
Ｖ'（ｎ）＝（ａＶa'（ｎ）+ｂＶb'（ｎ）+ｃＶc'（ｎ））／（ａ+ｂ+ｃ）
モデルすべての頂点データの座標値が確定するまでステップＳ２１０からＳ２５０の処理を繰り返す（ステップＳ２５０）。
【００９６】
このように本実施の形態ではモデルを構成するすべての頂点について頂点データは１つなので、各頂点についてメモリからレジスタへの頂点データの読み込みは１回でよい。このため同一の頂点に対して影響を受ける関節の数だけ読み込みが発生する従来例に比べアクセス回数が減るため、処理時間を大幅に短縮することができる。
【００９７】
３．ハードウェア構成
次に、本実施形態を実現できるハードウェアの構成の一例について図８を用いて説明する。
【００９８】
メインプロセッサ９００は、ＣＤ９８２（情報記憶媒体）に格納されたプログラム、通信インターフェース９９０を介して転送されたプログラム、或いはＲＯＭ９５０（情報記憶媒体の１つ）に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などの種々の処理を実行する。
【００９９】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させるための物理シミュレーションに、マトリクス演算などの処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１００】
ジオメトリプロセッサ９０４は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算（ベクトル演算）を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ９００で動作するプログラムが、その処理をジオメトリプロセッサ９０４に指示する。
【０１０１】
データ伸張プロセッサ９０６は、圧縮された画像データや音データを伸張するデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする処理を行う。これにより、オープニング画面、インターミッション画面、エンディング画面、或いはゲーム画面などにおいて、ＭＰＥＧ方式等で圧縮された動画像を表示できるようになる。なお、デコード処理の対象となる画像データや音データは、ＲＯＭ９５０、ＣＤ９８２に格納されたり、或いは通信インターフェース９９０を介して外部から転送される。
【０１０２】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を高速に実行するものである。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０の機能を利用して、オブジェクトデータを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると、描画プロセッサ９１０は、これらのオブジェクトデータやテクスチャに基づいて、Ｚバッファなどを利用した陰面消去を行いながら、オブジェクトをフレームバッファ９２２に高速に描画する。また、描画プロセッサ９１０は、αブレンディング（半透明処理）、ミップマッピング、フォグ処理、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行うことができる。そして、１フレーム分の画像がフレームバッファ９２２に書き込まれると、その画像はディスプレイ９１２に表示される。
【０１０３】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などの高品位のゲーム音を生成する。生成されたゲーム音は、スピーカ９３２から出力される。
【０１０４】
ゲームコントローラ９４２からの操作データや、メモリカード９４４からのセーブデータ、個人データは、シリアルインターフェース９４０を介してデータ転送される。
【０１０５】
ＲＯＭ９５０にはシステムプログラムなどが格納される。なお、業務用ゲームシステムの場合には、ＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納されることになる。なお、ＲＯＭ９５０の代わりにハードディスクを利用するようにしてもよい。
【０１０６】
ＲＡＭ９６０は、各種プロセッサの作業領域として用いられる。
【０１０７】
ＤＭＡコントローラ９７０は、プロセッサ、メモリ（ＲＡＭ、ＶＲＡＭ、ＲＯＭ等）間でのＤＭＡ転送を制御するものである。
【０１０８】
ＣＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＣＤ９８２（情報記憶媒体）を駆動し、これらのプログラム、データへのアクセスを可能にする。
【０１０９】
通信インターフェース９９０は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース９９０に接続されるネットワークとしては、通信回線（アナログ電話回線、ＩＳＤＮ）、高速シリアルインターフェースのバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルインターフェースのバスを利用することで、他の画像生成システム、他のゲームシステム、或いは情報処理機器（パーソナルコンピュータ、プリンタ、マウス、キーボード）などとの間でのデータ転送が可能になる。
【０１１０】
なお、本発明の各手段は、その全てを、ハードウェアのみにより実行してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実行してもよい。或いは、ハードウェアとプログラムの両方により実行してもよい。
【０１１１】
そして、本発明の各手段をハードウェアとプログラムの両方により実行する場合には、情報記憶媒体には、本発明の各手段をハードウェアを利用して実行するためのプログラム（プログラム及びデータ）が格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０等は、その指示と渡されたデータとに基づいて、本発明の各手段を実行することになる。
【０１１２】
図９（Ａ）に、本実施形態を業務用ゲームシステムに適用した場合の例を示す。プレーヤは、ディスプレイ１１００上に映し出されたゲーム画像を見ながら、レバー１１０２、ボタン１１０４等を操作してゲームを楽しむ。内蔵されるシステムボード（サーキットボード）１１０６には、各種プロセッサ、各種メモリなどが実装される。そして、本発明の各手段を実行するためのプログラム（或いはプログラム及びデータ）は、システムボード１１０６上の情報記憶媒体であるメモリ１１０８に格納される。以下、この情報を格納情報と呼ぶ。
【０１１３】
図９（Ｂ）に、本実施形態を家庭用のゲームシステムに適用した場合の例を示す。プレーヤはディスプレイ１２００に映し出されたゲーム画像を見ながら、ゲームコントローラ１２０２、１２０４を操作してゲームを楽しむ。この場合、上記格納情報は、本体システムに着脱自在な情報記憶媒体であるＣＤ１２０６、或いはメモリカード１２０８、１２０９等に格納されている。
【０１１４】
図９（Ｃ）に、ホスト装置１３００と、このホスト装置１３００とネットワーク１３０２（ＬＡＮのような小規模ネットワークや、インターネットのような広域ネットワーク）を介して接続される端末１３０４-1〜１３０４-nとを含むシステムに本実施形態を適用した場合の例を示す。この場合、上記格納情報は、例えばホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリ等の情報記憶媒体１３０６に格納されている。端末１３０４-1〜１３０４-nが、スタンドアロンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム等が端末１３０４-1〜１３０４-nに配送される。一方、スタンドアロンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４-1〜１３０４-nに伝送し端末において出力することになる。
【０１１５】
なお、図９（Ｃ）の構成の場合に、本発明の各手段を、ホスト装置（サーバー）と端末とで分散して実行するようにしてもよい。また、本発明の各手段を実行するための上記格納情報を、ホスト装置（サーバー）の情報記憶媒体と端末の情報記憶媒体に分散して格納するようにしてもよい。
【０１１６】
またネットワークに接続する端末は、家庭用ゲームシステムであってもよいし業務用ゲームシステムであってもよい。そして、業務用ゲームシステムをネットワークに接続する場合には、業務用ゲームシステムとの間で情報のやり取りが可能であると共に家庭用ゲームシステムとの間でも情報のやり取りが可能な携帯型情報記憶装置（メモリカード、携帯型ゲーム装置）を用いることが望ましい。
【０１１７】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０１１８】
例えば、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１１９】
また、本実施形態では、ジオメトリ処理として座標変換や透視変換を例に挙げたが、本発明のジオメトリ処理はこれらに限定されない。
【０１２０】
また本実施の形態ではモデル毎に設けられる基準点が、例えば図６のＯ点である場合を例にとり説明したがこれに限られない。例えばモデルオブジェクト外の所与の点でもよい。
【０１２１】
また本実施の形態では、所与の頂点が複数の関節から影響を受ける多関節モデルのとして人体モデルを例にとり説明したがこれに限られない。
【０１２２】
なお本実施の形態では関節が影響を与えるモーション後の頂点位置を演算するための頂点位置演算行列を求める場合を例にとり説明したが、これに限られない。すなわち、頂点位置演算行列自体を求めなくても、結果的に頂点位置演算行列が行うのと同様な演算を行う場合も含む。
【０１２３】
また本発明はレーシングゲーム以外にも種々のゲーム（格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等）に適用できる。
【０１２４】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、画像生成システム、ゲーム画像を生成するシステムボード等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【図１】本実施の形態のブロック図の一例である。
【図２】図２（Ａ）（Ｂ）は多関節モデルのモデル情報の構成について説明するための図である。
【図３】多関節モデルに与えられるモーションデータについて説明するための図である。
【図４】本実施の形態において基準座標系における座標値で与えられた頂点座標を用いてモーション後の頂点位置を求める処理について説明するためのフローチャート図である。
【図５】本実施の形態において基準座標系における座標値で与えられた頂点座標を用いてモーション後の頂点位置を求める処理について説明するためのフローチャート図である。
【図６】基準座標系における各関節（点）の座標の算出を説明するための概念図である。
【図７】各関節の基準座標系における回転移動行列ＬＷ（ｉ）演算の概念について説明するための図である。
【図８】本実施形態を実現できるハードウェアの構成の一例を示す図である。
【図９】図９（Ａ）、（Ｂ）、（Ｃ）は、本実施形態が適用される種々の形態のシステムの例を示す図である。
【符号の説明】
１００  処理部
１１０  ゲーム処理部
１１２  編集画面表示部
１１４  移動・動作演算部
１４０  画像処理部
１４２  ジオメトリ処理部
１４４  モーションアニメーション処理部
１４６  描画部
１５０  音処理部
１６０  操作部
１７０  記憶部
１７２  メインメモリ
１７４  フレームバッファ
１７６  テクスチャ記憶部
１８０  情報記憶媒体
１９０  表示部
１９２  音出力部
１９４  携帯型情報記憶装置
１９６  通信部
【図１】
0004345996.tif 000002
【図２】
0004345996.tif 000003
【図３】
0004345996.tif 000004
【図４】
0004345996.tif 000005
【図５】
0004345996.tif 000006
【図６】
0004345996.tif 000007
【図７】
0004345996.tif 000008
【図８】
0004345996.tif 000009
【図９】
0004345996.tif 000010