(57)【特許請求の範囲】
【請求項１】
移動を伴う所定の動作を行っているキャラクタの画像を表示装置に表示する画像処理装置のコンピュータで実行されるプログラムであって、
前記コンピュータを、
少なくとも下半身が複数の関節による連結構造を有する二足歩行モデルの第１キャラクタである基準キャラクタに関し、前記複数の関節間の距離を特定するための基準キャラクタデータと、前記所定の動作を行わせるための前記複数の関節間の相対的な位置関係を特定する基準モーションデータと、前記所定の動作における基準キャラクタの位置を特定するための基準位置データとを、記憶手段から読み出す基準キャラクタ情報読出手段、
少なくとも下半身の複数の関節による連結構造が前記基準キャラクタと等しい二足歩行モデルの第２キャラクタであって、１以上の第２キャラクタのそれぞれに関して前記複数の関節間の距離を特定するための第２キャラクタデータを、記憶手段から読み出す第２キャラクタ情報読出手段、
前記第２キャラクタ情報読出手段によって読み出された前記第２キャラクタデータに加え、前記基準キャラクタ情報読出手段によって読み出された前記基準キャラクタデータ、前記基準モーションデータおよび前記基準位置データに基づいて、前記第２キャラクタに移動を伴う前記所定の動作を行わせるキャラクタ制御手段、
として機能させ、
前記キャラクタ制御手段は、
前記基準キャラクタデータおよび前記第２キャラクタデータに基づいて、前記基準キャラクタと前記第２キャラクタとの下半身に関する長さの比率を算出し、
該比率および前記基準位置データに基づいて該第２キャラクタの前記所定の動作時の移動位置を算出し、
前記コンピュータを、前記第２キャラクタの左右の股関節の間隔を、前記基準キャラクタの対応する間隔に前記比率を乗算したものに調整する股関節調整手段としてさらに機能させる、
ことを特徴とするプログラム。
【請求項２】
前記基準位置データは基準キャラクタの位置を特定するための座標であって、
前記キャラクタ制御手段は、前記基準位置データの座標の各成分にそれぞれ前記比率を乗算して算出したものを、前記第２キャラクタの位置を特定するための座標の各要素とする、
請求項１に記載のプログラム。
【請求項３】
前記下半身に関する長さは、大腿の長さと下腿の長さとを加算した長さである、請求項１または２に記載のプログラム。
【請求項４】
請求項１ないし３のいずれかに記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項５】
請求項１ないし３のいずれかに記載のプログラムを記憶したプログラム記憶手段と、
前記プログラム記憶手段に記憶されたプログラムを実行するコンピュータと、
を備えた画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、当該プログラムを記録した記録媒体、および、当該プログラムを記憶したプログラム記憶手段を備えた画像処理装置に関し、特に、キャラクタの表示方法に関する。
【背景技術】
【０００２】
従来、プレイヤが所定のキャラクタを操作し、三次元仮想ゲーム空間上で敵であるキャラクタと戦うアクションゲームが開発されている。以下では、プレイヤが操作するキャラクタを「プレイヤキャラクタ」とし、敵であるキャラクタを「敵キャラクタ」とする。
【０００３】
このようなアクションゲームにおいて、プレイヤキャラクタが敵キャラクタを攻撃し、敵キャラクタがプレイヤキャラクタを攻撃する。また、プレイヤキャラクタや敵キャラクタは、走ったりジャンプするなどの動作を行う。キャラクタ毎に各動作のためのデータ（以下では、「モーションデータ」とする。詳細は後述する。）をあらかじめ用意しておくと膨大なデータ量となるため、各キャラクタに共通するモーションデータと、各キャラクタ固有の画像データやモデルデータなど（以下では、「キャラクタデータ」とする。詳細は後述する。）とを用意しておき、これらを組み合わせてキャラクタの動作を映像化している。
【０００４】
モーションデータは、各動作（モーション）のフレーム毎（例えば１／６０秒毎）のデータを記録したものである（図９参照）。一般に、コンピュータグラフィックスを用いたアニメーションでは、人や動物などの多関節物体は身体の各パーツを関節で連結した階層構造のスケルトンモデル（図４および図５参照）で表現される。モーションデータはこのスケルトンモデルの各関節の位置データまたは各関節の回転角度のデータをフレーム毎に記録している。各関節の位置に応じてキャラクタの各パーツを配置することで当該キャラクタを三次元仮想ゲーム空間上に配置し、これをフレーム毎に行うことで当該キャラクタに所定の動作を行わせる。
【０００５】
例えば、プレイヤがプレイヤキャラクタに走って移動させるための操作を行った場合、走って移動する動作のモーションデータとプレイヤキャラクタのキャラクタデータとを用いてプレイヤキャラクタが走って移動する動作の映像が生成され、ゲーム画面に表示される。
【０００６】
しかしながら、体格（身長）の異なるキャラクタに対して、例えば共通の走って移動する動作のモーションデータをそのまま用いた場合、キャラクタの走る動作と移動距離とに不自然さが生じる。すなわち、体格の大きいキャラクタの場合、脚の動きが大きい（歩幅が広い）割に移動距離が短くなるので、足が地面を滑っているような不自然な動作となる。一方、体格の小さいキャラクタの場合、脚の動きが小さい（歩幅が狭い）割に移動距離が長くなるので、足が地面を滑っているような不自然な動作となる。
【０００７】
この不自然さを緩和するために、モーションデータのキャラクタの移動距離を、キャラクタの体格に比例させて変更する方法が開発されている。当該方法によると、モーションデータのキャラクタの移動距離がキャラクタの体格に比例した距離に変更されるので、キャラクタの脚の動きに合った自然な距離だけキャラクタが移動することになる。すなわち、体格の大きいキャラクタの移動距離が体格に比例した長い距離になり、体格の小さいキャラクタの移動距離が体格に比例した短い距離になるので、キャラクタの体格に合わない移動距離となることを防いで、キャラクタの走る動作の不自然さを緩和することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第４０８１７５４号公報
【特許文献２】特許第３２１２２５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、キャラクタの体格に比例させてキャラクタの移動距離を変更する場合、以下のような不都合が生じる。例えば、体格は大きいが脚が短いキャラクタの移動距離をキャラクタの体格に比例させて長くした場合、キャラクタの脚の動きが小さい割に移動距離が長くなるので、足が地面を滑っているような不自然な動作となる。また、体格は小さいが脚が長いキャラクタの移動距離をキャラクタの体格に比例させて短くした場合、キャラクタの脚の動きが大きい割に移動距離が短くなるので、足が地面を滑っているような不自然な動作となる。
【００１０】
図１４は、体格は同じであるが脚の長さの異なるキャラクタがそれぞれ走っている状態を説明するための図であり、共通のモーションデータを使用して示している。なお、各キャラクタの移動距離が各キャラクタの体格に比例させた距離となるようになっている。
【００１１】
同図（ａ）に示すキャラクタＣ１は通常の脚の長さのキャラクタであって、当該キャラクタＣ１に合わせてモーションデータが用意されている。キャラクタＣ１の脚の動きと移動距離とは合っているので、キャラクタＣ１の走る動作は自然な動作の映像となる。
【００１２】
キャラクタＣ２は、キャラクタＣ１と比べて脚（大腿および下腿）が長いキャラクタである。キャラクタＣ２はキャラクタＣ１より脚が長いが胴が短くなっており、キャラクタＣ２の体格（身長）はキャラクタＣ１の体格と同じである。体格が同じなので、キャラクタＣ２の移動距離はキャラクタＣ１の移動距離と同じ距離になっている。キャラクタＣ２はキャラクタＣ１より脚が長いので、脚の動きがキャラクタＣ１と比べて大きくなっている。それにもかかわらず、キャラクタＣ２の移動距離がキャラクタＣ１の移動距離と同じなので、キャラクタＣ２の走る動作は足が地面を滑っているような不自然な動作となる。
【００１３】
キャラクタＣ３は、キャラクタＣ１と比べて脚（大腿および下腿）が短いキャラクタである。キャラクタＣ３はキャラクタＣ１より脚が短いが胴が長くなっており、キャラクタＣ３の体格（身長）はキャラクタＣ１の体格と同じである。体格が同じなので、キャラクタＣ３の移動距離はキャラクタＣ１の移動距離と同じ距離になっている。キャラクタＣ３はキャラクタＣ１より脚が短いので、脚の動きがキャラクタＣ１と比べて小さくなっている。それにもかかわらず、キャラクタＣ３の移動距離がキャラクタＣ１の移動距離と同じなので、キャラクタＣ３の走る動作は足が地面を滑っているような不自然な動作となる。
【００１４】
なお、上記課題は、アクションゲームに限られるものではなく、他の種類のゲームにおいても生じる。また、ゲーム以外においても、共通のモーションデータに基づいてキャラクタなどの動作を表示する場合に、上記課題が生じる。
【００１５】
本発明は上記した事情のもとで考え出されたものであって、脚の長さの異なるキャラクタに共通のモーションデータを用いた場合に不自然な映像となることを抑制することができる画像処理装置を提供することをその目的としている。
【課題を解決するための手段】
【００１６】
上記課題を解決するため、本発明では、次の技術的手段を講じている。
【００１７】
本発明の第１の側面によって提供されるプログラムは、移動を伴う所定の動作を行っているキャラクタの画像を表示装置に表示する画像処理装置のコンピュータで実行されるプログラムであって、前記コンピュータを、少なくとも下半身が複数の関節による連結構造を有する二足歩行モデルの第１キャラクタである基準キャラクタに関し、前記複数の関節間の距離を特定するための基準キャラクタデータと、前記所定の動作を行わせるための前記複数の関節間の相対的な位置関係を特定する基準モーションデータと、前記所定の動作における基準キャラクタの位置を特定するための基準位置データとを、記憶手段から読み出す基準キャラクタ情報読出手段、少なくとも下半身の複数の関節による連結構造が前記基準キャラクタと等しい二足歩行モデルの第２キャラクタであって、１以上の第２キャラクタのそれぞれに関して前記複数の関節間の距離を特定するための第２キャラクタデータを、記憶手段から読み出す第２キャラクタ情報読出手段、前記第２キャラクタ情報読出手段によって読み出された前記第２キャラクタデータに加え、前記基準キャラクタ情報読出手段によって読み出された前記基準キャラクタデータ、前記基準モーションデータおよび前記基準位置データに基づいて、前記第２キャラクタに移動を伴う前記所定の動作を行わせるキャラクタ制御手段として機能させ、前記キャラクタ制御手段は、前記基準キャラクタデータおよび前記第２キャラクタデータに基づいて、前記基準キャラクタと前記第２キャラクタとの下半身に関する長さの比率を算出し、該比率および前記基準位置データに基づいて該第２キャラクタの前記所定の動作時の移動位置を算出し、前記コンピュータを、前記第２キャラクタの左右の股関節の間隔を、前記基準キャラクタの対応する間隔に前記比率を乗算したものに調整する股関節調整手段としてさらに機能させることを特徴とする。
【００１８】
なお、本発明における「下半身」とは、腰から下（脚の方向）の部分全体を指しており、大腿、下腿、足などの各パーツ、および、腰関節、股関節、膝、足首などの各関節が含まれる。つまり、「下半身に関する長さ」には、下半身の部位の長さ（例えば、大腿の長さや下腿の長さ、大腿と下腿をあわせた長さ、さらに腰関節から股関節までの距離を加えた長さなど）が含まれる。また、部位の長さだけではなく、キャラクタが所定の姿勢を取ったときの関節間の距離（例えば、股関節から足首までの距離や腰関節から足首までの距離）や、おしりから足の裏までの距離なども、「下半身に関する長さ」に含まれる。
【００１９】
本発明の好ましい実施の形態においては、前記基準位置データは基準キャラクタの位置を特定するための座標であって、前記キャラクタ制御手段は、前記基準位置データの座標の各成分にそれぞれ前記比率を乗算して算出したものを、前記第２キャラクタの位置を特定するための座標の各要素とする。本発明の好ましい実施の形態においては、前記下半身に関する長さは、大腿の長さと下腿の長さとを加算した長さである。
【００２１】
本発明の第２の側面によって提供される記録媒体は、本発明の第１の側面によって提供されるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００２２】
本発明の第３の側面によって提供される画像処理装置は、本発明の第１の側面によって提供されるプログラムを記憶したプログラム記憶手段と、前記プログラム記憶手段に記憶されたプログラムを実行するコンピュータとを備えた画像処理装置である。
【発明の効果】
【００２３】
本発明によれば、基準キャラクタと第２キャラクタとの下半身に関する長さの比率に応じて、第２キャラクタの所定の動作時の移動位置が算出されることで、当該動作時の第２キャラクタの移動距離が変化する。したがって、第２キャラクタの移動動作を、第２キャラクタの下半身に関する長さに応じた自然な動作とすることができる。これにより、基準キャラクタとは下半身に関する長さが異なる第２キャラクタに基準キャラクタのモーションデータ（基準モーションデータおよび基準位置データ）を用いた場合でも、第２キャラクタの移動動作が不自然な映像となることを抑制することができる。
【００２４】
例えば、「下半身に関する長さ」を大腿の長さと下腿の長さとを加算した長さである脚の長さとした場合、基準キャラクタが走る動作のモーションデータを脚の長さが基準キャラクタより長い第２キャラクタに用いると、第２キャラクタの移動距離が長くなる。したがって、移動距離が第２キャラクタの脚の長さにあった距離となり、第２キャラクタの移動動作と移動距離とが合った自然な映像となる。
【００２５】
また、脚の長さに応じて第２キャラクタの左右の股関節の間隔を変化させた場合、移動距離を表示キャラクタの脚の長さにあった距離により近づけることができるので、第２キャラクタの移動動作がより自然な映像となる。
【００２６】
本発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【図面の簡単な説明】
【００２７】
【図１】編集機能を用いて脚の長さを変更されたプレイヤキャラクタを説明するための図である。
【図２】脚の長さの異なるキャラクタがそれぞれ走っている状態を説明するための図である。
【図３】本実施形態に係るゲーム装置を示す構成図である。
【図４】キャラクタが標準姿勢を取っているときの各関節のリンク構造を示す図である。
【図５】各関節の親子関係の階層構造を示す図である。
【図６】基準キャラクタデータの一例を説明するための図である。
【図７】ポジションデータを説明するための図である。
【図８】プレイヤキャラクタデータの一例を説明するための図である。
【図９】基準キャラクタモーションデータの一例を説明するための図である。
【図１０】プレイヤキャラクタのモーション再生のためのスケルトンデータを生成するための処理を説明するためのフローチャートである。
【図１１】スケルトンデータの一例を説明するための図である。
【図１２】プレイヤキャラクタの足が適切に地面に接することを説明するための図である。
【図１３】プレイヤキャラクタの移動距離を説明するための図である。
【図１４】脚の長さの異なるキャラクタがそれぞれ走っている状態を説明するための図であり、移動距離を各キャラクタの体格に比例させた距離としたものである。
【発明を実施するための形態】
【００２８】
以下、本発明の好ましい実施の形態として、本発明に係るプログラムをゲームソフトに適用した場合について、添付図面を参照して具体的に説明する。以下の説明では、家庭用ゲーム装置（以下、「ゲーム装置」とする。）において、アクションゲームを進行している場合を例として説明する。
【００２９】
本実施形態に係るアクションゲームは、三次元仮想ゲーム空間上でプレイヤキャラクタを敵キャラクタと戦わせ、プレイヤキャラクタが敵キャラクタを倒すことにより進行する。また、このアクションゲームには、プレイヤキャラクタを編集する機能が設けられている。プレイヤは、編集機能を用いてプレイヤキャラクタを好みの形状に変更することができる。
【００３０】
編集機能では、プレイヤキャラクタの基準となるキャラクタ（以下では、「基準キャラクタ」とする。）の腕や脚、胴体などの各パーツの形状（長さ、太さなど）を変更したり、基準キャラクタの顔を構成する目や鼻などの各パーツの形状および配置位置を変更したりすることができ、編集後の基準キャラクタを自分のプレイヤキャラクタとしてゲームで使用することができる。例えば、脚のパーツでは、股関節から膝までの大腿と膝から足首までの下腿とを、それぞれ個別に長くしたり短くしたり、太くしたり細くしたりすることができる。本実施形態においては、左右の大腿で同じ変更がなされ、左右の下腿で同じ変更がなされるようにしている。なお、左右それぞれ個別に形状を変更できるようにしても構わない。なお、編集機能の詳細については後述する。
【００３１】
図１は、編集機能を用いて脚の長さを変更されたプレイヤキャラクタを説明するための図である。
【００３２】
左側に示されているのが、編集前の基準となる基準キャラクタＳである。中央のプレイヤキャラクタＰ１は基準キャラクタＳの脚（大腿および下腿とも）の長さを長くしたものであり、右側のプレイヤキャラクタＰ２は基準キャラクタＳの脚（大腿および下腿とも）の長さを短くしたものである。
【００３３】
プレイヤは、編集後のプレイヤキャラクタを自分のプレイヤキャラクタとしてゲームを行う。プレイヤキャラクタの動作には、予め設定されている基準キャラクタＳの動作のためのモーションデータが用いられる。ただし、脚の長さが基準キャラクタＳとは異なるプレイヤキャラクタに対して、例えば走るモーションデータをそのまま用いると不自然な映像となるので、プレイヤキャラクタの脚の長さに応じた所定の処理を行っている。
【００３４】
具体的には、まず、基準キャラクタＳの左大腿の長さ（左股関節から左膝までの長さ）と左下腿の長さ（左膝から左足首までの長さ）とを加算した長さ（以下では、「脚部長」とする。）に対するプレイヤキャラクタの脚部長の比率（以下では、「脚部長比率」とする。）を算出しておく。例えばプレイヤキャラクタが走る動作を行う場合、プレイヤキャラクタの移動距離が基準キャラクタＳの移動距離に脚部長比率を乗算した距離となるように、基準キャラクタＳの位置を設定する。すなわち、プレイヤキャラクタの移動距離を、脚部長比率に応じて、長くしたり短くしたりする。これにより、プレイヤキャラクタの脚の長さに合わせた自然な動作となる。なお、モーションデータを用いた具体的な動作の再生方法については後述する。
【００３５】
例えば、図１に示す基準キャラクタＳの脚部長（同図では実線矢印の長さで示している。）はＬであり、プレイヤキャラクタＰ１の脚部長はＬ’（＝１．３Ｌ）なので、プレイヤキャラクタＰ１の脚部長比率は１．３である。したがって、プレイヤキャラクタＰ１の移動距離は、基準キャラクタＳの移動距離の１．３倍となる。また、プレイヤキャラクタＰ２の脚部長はＬ”（＝０．７Ｌ）なので、プレイヤキャラクタＰ２の脚部長比率は０．７である。したがって、プレイヤキャラクタＰ２の移動距離は、基準キャラクタＳの移動距離の０．７倍となる。
【００３６】
図２は、基準キャラクタＳおよびプレイヤキャラクタＰ１、Ｐ２がそれぞれ走っている状態を説明するための図である。各キャラクタの動作には共通のモーションデータが使用されており、当該モーションデータの所定間隔の３つのフレームにおける各キャラクタの画像を、（ａ）基準キャラクタＳの場合、（ｂ）プレイヤキャラクタＰ１の場合、（ｃ）プレイヤキャラクタＰ２の場合として示している。それぞれの一番左に記載しているものと一番右に記載されているものとの間のフレーム数（所要時間）は同一なので、同じ時間での各キャラクタの移動距離が示されている。
【００３７】
プレイヤキャラクタＰ１の移動距離（同図では実線矢印の長さで示している。）Ｄ’が基準キャラクタＳの移動距離Ｄの１．３倍となり、プレイヤキャラクタＰ１は基準キャラクタＳの場合より長い距離を移動している。また、プレイヤキャラクタＰ２の移動距離Ｄ”が基準キャラクタＳの移動距離Ｄの０．７倍となり、プレイヤキャラクタＰ２は基準キャラクタＳの場合より短い距離を移動している。同図に示すように、プレイヤキャラクタＰ１およびＰ２の走る動作は、それぞれの脚の長さに合った自然な動作となっている。なお、脚部長や移動距離は三次元仮想ゲーム空間上での距離を用いている。
【００３８】
また、本実施形態では、編集機能を用いてプレイヤキャラクタの脚の長さを変更した場合、プレイヤキャラクタの左右の脚の付け根の間隔（後述する図４および図５における右股関節ｌと左股関節ｏとの間隔であり、以下「股関節の間隔」とする。）も、脚の長さの変化割合と同じ割合で変更するようにしている。現実の世界で人が移動する動作（走ったり、歩いたりする動作）を行う場合、人は脚のみを動かしているのではなく、腰関節を回転させて骨盤を回転させることで左右の股関節の位置をそれぞれ交互に前後させている。したがって、股関節の間隔も歩幅に関与してくる。本実施形態では、プレイヤキャラクタの動作にも腰関節の回転に伴う股関節の位置の移動を反映させている。したがって、プレイヤキャラクタの脚の長さに応じて移動距離を変化させた場合に左右の股関節の間隔を変化させることで、プレイヤキャラクタの歩幅と移動距離とが合うようにして、より自然な映像になるようにしている。
【００３９】
例えば、基準キャラクタＳより脚が長いプレイヤキャラクタＰ１の左右の股関節の間隔を基準キャラクタＳの左右の股関節の間隔と同じままとした場合、脚の長さが長くなったことにより歩幅が広くなるが、左右の股関節の間隔に応じた歩幅の変化分はゼロなので反映されない。にもかかわらず、プレイヤキャラクタＰ１の移動距離は脚部長比率に応じて長くなっているので、プレイヤキャラクタＰ１の歩幅が移動距離より短く（狭く）なる。
【００４０】
これを改善するために、本実施形態では、プレイヤキャラクタの左右の股関節の間隔を、基準キャラクタＳの左右の股関節の間隔に脚部長比率を乗算したものとしている。例えば、図１に示すプレイヤキャラクタＰ１の左右の股関節の間隔の広さＷ’を、基準キャラクタＳの左右の股関節の間隔の広さＷに脚部長比率１．３を乗算したもの（Ｗ’＝１．３Ｗ）としている。また、プレイヤキャラクタＰ２の左右の股関節の間隔の広さＷ”を、基準キャラクタＳの左右の股関節の間隔の広さＷに脚部長比率０．７を乗算したもの（Ｗ”＝０．７Ｗ）としている。なお、プレイヤキャラクタの左右の股関節の間隔の広さの算出方法は、これに限られない。例えば、脚部長比率に所定の調整値を乗算した値を算出しておき、当該算出値を基準キャラクタＳの左右の股関節の間隔の広さＷに乗算するようにしてもよい。
【００４１】
プレイヤキャラクタの左右の股関節の間隔の広さの調整は、プレイヤキャラクタの編集時に自動的に行われる。なお、当該調整の詳細については、後述する編集機能の説明の中で説明する。
【００４２】
以下に、本実施形態のハード構成について説明する。
【００４３】
図３は、本実施形態に係るゲーム装置を示す構成図である。ゲーム装置１は、本体１１および操作コントローラ１２を備えている。操作コントローラ１２は短距離無線通信によって本体１１に接続されている。本体１１には、モニタ１３が専用のケーブルによって接続される。また、本体１１には、ゲームプログラムやゲームデータが記録されているディスク１４が装着され、また、必要に応じてゲームデータを保存するためのメモリカード１５も装着される。
【００４４】
本体１１は、制御部１１１、描画処理部１１２、音声処理部１１３、ディスクドライブユニット１１４、メモリカード接続ユニット１１５、Ｉ／Ｏインターフェース部１１６、通信処理部１１７、および信号送受信部１１８を備えている。制御部１１１には、描画処理部１１２、音声処理部１１３、Ｉ／Ｏインターフェース部１１６、および通信処理部１１７が接続されている。また、Ｉ／Ｏインターフェース部１１６には、ディスクドライブユニット１１４、メモリカード接続ユニット１１５、信号送受信部１１８、およびモニタ１３が接続されている。
【００４５】
ゲーム装置１では、上記アクションゲームのソフトウェアが記録されたディスク１４がディスクドライブユニット１１４に装着され、このディスクドライブユニット１１４からディスク１４内のゲームプログラムおよびゲームデータが制御部１１１内のＲＡＭ１１１ｃ（後述）に読み込まれる。読み込まれたゲームプログラムがＣＰＵ１１１ａ（後述）によって実行されることにより、プレイヤはゲーム内容を楽しむことができる。プレイヤは、操作コントローラ１２（後述）を操作することによりプレイヤキャラクタを操作し、ゲームを進行させることができる。また、プレイヤは、編集画面で、操作コントローラ１２を操作することにより、プレイヤキャラクタの編集を行うことができる。なお、プレイヤキャラクタの編集機能の詳細については後述する。
【００４６】
ディスク１４内のゲームデータには、基準キャラクタＳや敵キャラクタなどのキャラクタデータ（画像データ含む）、武器などのアイテムデータ（画像データ含む）、モーションデータ、背景などの画像データ、効果音などの音声データ、および、ゲーム進行や描画の際に参照される各種テーブルなどが含まれる。
【００４７】
制御部１１１は、本体１１の全体動作を制御するマイクロコンピュータを有している。マイクロコンピュータは、ＣＰＵ１１１ａ、ＲＯＭ１１１ｂ、およびＲＡＭ１１１ｃなどからなり、各部は、それぞれバスラインで接続されている。
【００４８】
ＣＰＵ１１１ａは、ディスクドライブユニット１１４によってディスク１４からＲＡＭ１１１ｃに読み込まれるゲームプログラムを実行することより、ゲーム進行を統括的に制御する。より具体的には、操作コントローラ１２からプレイヤが操作することによる操作信号が信号送受信部１１８を介して入力されると、ＣＰＵ１１１ａは、ゲームプログラムにしたがってその操作信号に対する所定のゲーム進行処理を行う。ＣＰＵ１１１ａは、その処理結果をモニタ１３に例えば三次元空間を表現する二次元画像（以下、「ゲーム画像」という）によって表示するとともに、モニタ１３のスピーカ１３ａ（後述）から効果音などを出力する。
【００４９】
ＲＯＭ１１１ｂには、ディスクローディング機能などのゲーム装置１の基本的な機能やディスク１４に記録されたゲームプログラムおよびゲームデータを読み出す手順などを示す基本プログラムが記憶されている。ＣＰＵ１１１ａは、ディスクドライブユニット１１４にディスク１４が装着されると、ＲＯＭ１１１ｂの基本プログラムにしたがってディスクドライブユニット１１４を動作させ、ディスク１４からゲームプログラムおよびゲームデータをＲＡＭ１１１ｃに読み込み、ゲーム開始状態に設定する。
【００５０】
ＲＡＭ１１１ｃは、ディスクドライブユニット１１４によってディスク１４から読み込まれたゲームプログラムやゲームデータが格納されるエリアと、ＣＰＵ１１１ａがゲームプログラムを実行するためのワークエリアとを提供するものである。
【００５１】
上記ゲームプログラムは、複数のプログラムが組み合わされて構成されており、例えばモニタ１３に表示されているプレイヤキャラクタの動作を操作コントローラ１２からのプレイヤの操作信号に基づいて制御するゲーム進行プログラムやモニタ１３に表示すべきゲーム画像を制御するグラフィック制御プログラムなどによって構成されている。また、本実施形態において、ＲＡＭ１１１ｃは、ディスク１４から読み込んだ基準キャラクタデータ、基準キャラクタモーションデータ（図６および図９参照）などを記憶し、これらのデータから作成されたプレイヤキャラクタデータ、およびスケルトンデータ（図８および図１１参照）などを記憶する。
【００５２】
ＣＰＵ１１１ａは、操作コントローラ１２からのプレイヤの操作信号に基づき、必要に応じてディスク１４からゲームプログラムや画像データなどをＲＡＭ１１１ｃに読み込み、これらのデータを処理したりゲームプログラムを実行したりすることにより、モニタ１３に表示すべきゲーム画像の内容を決定する。
【００５３】
描画処理部１１２は、描画処理に必要な各種の演算処理を行うものである。ＣＰＵ１１１ａは、例えば、１／６０秒毎に、描画処理部１１２に描画指令を出力する。このとき、ＣＰＵ１１１ａは、モニタ１３に表示すべき画像を決定し、その画像の描画に必要なキャラクタデータ、アイテムデータ、背景などの画像データ、モーションデータおよび光源データなどをＲＡＭ１１１ｃから読み出して描画処理部１１２に供給する。
【００５４】
描画処理部１１２は、ＣＰＵ１１１ａからの描画命令に基づいて画像データなどを用いて、描画に必要なデータ（各オブジェクトおよび背景の位置関係、モニタ１３の画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性などのデータ）の演算などを行い、その演算結果に基づいて描画処理部１１２内のＶＲＡＭ（図示せず）に１コマ（１フレーム）のゲーム画像のデータを作成する。作成されたゲーム画像のデータは、例えば１／６０秒毎に映像信号としてモニタ１３に出力され、モニタ１３に映像として表示される。
【００５５】
音声処理部１１３は、効果音などの音声を発生させる処理に必要な各種の演算処理を行うものである。ＣＰＵ１１１ａは、モニタ１３のスピーカ１３ａから出力すべき効果音若しくはＢＧＭの音響内容を決定すると、音声処理部１１３に音声指令を出力する。音声処理部１１３は、ＣＰＵ１１１ａからの音声指令に基づき、ＲＡＭ１１１ｃから効果音もしくはＢＧＭの音声データを読み出し、所定の加工処理とＤ／Ａ変換処理とを施した後、スピーカ１３ａに出力する。
【００５６】
ディスクドライブユニット１１４は、ＣＰＵ１１１ａからのローディング指令（ローディングすべきゲームプログラムとゲームデータを指定した読出指令）に基づき、ディスク１４に記録されたゲームプログラムやゲームデータを読み出すものである。
【００５７】
メモリカード接続ユニット１１５は、ゲーム進行に関する情報をメモリカード１５に書き込んだり、読み出したりするためのユニットである。ＣＰＵ１１１ａは、ゲーム進行中やゲーム終了時にプレイヤから「データのセーブ」が指令されると、メモリカード接続ユニット１１５を介してメモリカード１５に、ゲーム進行に関する情報（この情報には、例えば、編集機能で作成されたプレイヤキャラクタデータ（図８参照）や、獲得したポイントやアイテムなどの各種の特典などの情報が含まれる。）を記憶する。また、メモリカード１５に記憶されたゲーム進行に関する情報は、ゲーム開始前にＲＡＭ１１１ｃに読み出される。
【００５８】
Ｉ／Ｏインターフェース部１１６は、ディスクドライブユニット１１４やメモリカード接続ユニット１１５によって読み出されたゲームプログラムやゲームデータ、および信号送受信部１１８が受信した操作コントローラ１２からの操作信号を制御部１１１に伝送したり、制御部１１１、描画処理部１１２や音声処理部１１３からの映像信号や音声信号などをモニタ１３やスピーカ１３ａに伝送したりするものである。
【００５９】
通信処理部１１７は、ネットワーク回線２を介して他のゲーム装置１と通信を行う場合に、データの送信および受信を行うための制御を行うものである。通信処理部１１７は、操作コントローラ１２から入力される操作信号やＣＰＵ１１１ａから出力される信号をネットワーク回線２を介して他のゲーム装置１に送信し、ネットワーク回線２を介して他のゲーム装置１から送信される信号を受信してＣＰＵ１１１ａに入力する。
【００６０】
信号送受信部１１８は、操作コントローラ１２から短距離無線通信により送信される信号を受信する。操作コントローラ１２からの信号には、操作コントローラ１２に設けられた操作ボタンの操作情報の他に、操作コントローラ１２に設けられた各種センサ（図示しない）による検出データが含まれる。ＣＰＵ１１１ａはこの操作コントローラ１２から送信される信号によりゲームを進行させることができる。また、信号送受信部１１８は、操作コントローラ１２に各種信号（例えば、操作コントローラ１２の振動部（図示しない）を振動させたり、発光部（図示しない）を発光させたり、音声出力部から音声を出力させたりするための信号など）を送信する。
【００６１】
操作コントローラ１２は、プレイヤキャラクタを動作させたり、ゲームに関する各種の設定を行ったりするために、プレイヤによって操作されるものである。プレイヤによって操作コントローラ１２が操作されると、その操作信号が制御部１１１に伝送され、モニタ１３に表示されたプレイヤキャラクタが所定の動作を行う。所定の動作としては、例えば、走る、しゃがむ、ジャンプするなどの移動動作や武器を使用して相手を攻撃する攻撃動作がある。操作コントローラ１２は、自身の電源のオン状態とオフ状態とを切り替えるための電源ボタン、ゲームを開始させたりポーズメニューを開いたりするためのスタートボタン、デモをスキップしたりメニューを選択するためのセレクトボタン、および、プレイヤキャラクタの各動作やカメラ視点の移動操作のための操作ボタンなど（押圧して操作される操作ボタンと傾けることで操作される操作スティックとが含まれる。）を備えている。
【００６２】
モニタ１３は、本体１１から送られてきた映像信号に応じてゲーム進行状態を示す表示画面を映し出したり、本体１１から送られてきた音声信号に応じてスピーカ１３ａから効果音などの音声を出力させたりするための装置である。モニタ１３は、映像信号や音声信号を入力するための外部入力端子を備えた、例えばテレビジョン受像機によって構成されている。
【００６３】
ディスク１４は、例えばＤＶＤ−ＲＯＭまたはＣＤ−ＲＯＭなどの光ディスクである。ディスク１４には、ゲームプログラムやそのゲームプログラムの実行に必要な種々のデータや画像データが記録されている。メモリカード１５は、例えばフラッシュメモリなどのデータの書き換えが可能な不揮発性の記録媒体である。ＲＡＭ１１１ｃのワークエリアの記録は、本体１１の電源を切ると消滅してしまうことから、メモリカード１５は、ＲＡＭ１１１ｃのワークエリアの記録のうち消滅させずに残しておくべきゲーム進行に関する情報（例えば、プレイヤキャラクタデータなど）を記録する。
【００６４】
ゲーム装置１は、ネットワークアダプタ１６を介して、インターネット回線などのネットワーク回線２に接続することができる。この場合、ネットワーク回線２を介して、複数のゲーム装置１間でゲームを行うこともできる（いわゆる「オンラインゲーム」）。本実施形態では、ゲーム装置１単独で行うゲームについて説明しているが、このようなオンラインゲームでも本発明を適用することができる。
【００６５】
次に、キャラクタの編集処理について、図４〜図８を参照して説明する。
【００６６】
上述したように、本実施形態に係るアクションゲームには、プレイヤキャラクタを編集する機能が設けられている。編集機能には、プレイヤキャラクタの体のパーツ（腕や脚、胴体など）の形状を変更する機能や、プレイヤキャラクタの顔のパーツ（目や鼻など）の形状や配置を変更する機能などがある。以下では、プレイヤキャラクタの体のパーツの編集処理について説明する。なお、顔のパーツの編集処理については、説明を省略する。
【００６７】
図４および図５は、キャラクタのスケルトンモデルを説明するための図である。図４は、キャラクタが両手を広げて直立した姿勢（以下では、「標準姿勢」とする。）を取っているときの各関節のリンク構造を示す図である。図５は、各関節の親子関係の階層構造を示す図である。本実施形態ではプレイヤキャラクタが人のキャラクタなのでスケルトンモデルは人のスケルトンモデルであり、図４および図５はそれぞれ一般的な人のスケルトンモデルのリンク構造および階層構造を示している。
【００６８】
図４において、ａ〜ｑが記載されている丸は各関節を示している。なお、各関節ａ〜ｑの名称は図５と共通しており、図４においては各名称の記載を省略している。なお、以下の記載でも、各関節ａ〜ｑの名称を省略して、例えば、「関節ａ」とのみ記載する場合がある。各関節間の接続は実線で示されており、例えば、右肩ｅと右肘ｆとが接続されていることを示している。腰関節ａはスケルトンモデルの基点（連結構造の基準となる部位）となるものである。なお、各関節とリンク構造はこれに限定されるものではない。関節を省略してより単純な構造としてもよいし、関節を増やしてより複雑な構造としてもよい。また、基点は腰関節ａに限定されるわけではなく、胴関節ｂ、首ｃや左肩ｉとしてもよいし、各関節とは別の点を設定してもよい。ただし、基点は、体幹などのキャラクタの左右に偏らない点、例えば、中心軸（首ｃ、胴関節ｂ、腰関節ａを結ぶ直線）に位置する点が望ましい。
【００６９】
図５において、上位にある関節が下位にある関節の親であり、下位にある関節は上位にある関節の子である。例えば、右鎖骨ｄは、右肩ｅの親であり、胴関節ｂの子である。各関節の位置は、親である関節の位置を基準に設定される。腰関節ａ（基点）は１番上位の関節であり、腰関節ａの位置はローカル座標系の原点を基準に設定される。なお、ローカル座標系は、キャラクタ（例えば、プレイヤキャラクタや敵キャラクタなどの、ＣＰＵ１１１ａによって動きが制御されているキャラクタ）毎に設定されている座標系であって、キャラクタの動きや姿勢を管理するために設けられている。
【００７０】
プレイヤキャラクタの体のパーツの編集処理は、基準キャラクタのキャラクタデータからプレイヤが使用するプレイヤキャラクタのキャラクタデータを新たに生成したり、生成されたプレイヤキャラクタのキャラクタデータを変更したりすることで行われる。なお、以下では、新たにプレイヤキャラクタのキャラクタデータを生成する場合について説明する。
【００７１】
図６は基準キャラクタデータの一例を説明するための図である。
【００７２】
基準キャラクタデータは基準キャラクタのキャラクタデータであり、プレイヤが編集機能を用いてプレイヤキャラクタを編集するための元のキャラクタデータである。基準キャラクタデータは、ディスク１４にゲームデータとして記録されており、ディスクドライブユニット１１４によって読み出されて、ＲＡＭ１１１ｃに格納される。
【００７３】
図６に示すように、基準キャラクタデータはモデルデータと画像データなどを含んでいる。モデルデータは関節データと脚部長を含んでいる。関節データは関節ａ〜ｑ毎のポジションデータとリンクデータとを含んでいる。ポジションデータはキャラクタが標準姿勢を取っているときの各関節の位置データであり、リンクデータは親である関節を特定するためのデータである。例えば、同図においては、関節ｂのポジションデータは（Ｘｂ，Ｙｂ，Ｚｂ）となっており、リンクデータは親関節である関節ａを示す「ａ」となっている。
【００７４】
関節ａは基点であって親である関節がないので、リンクデータを有しない。関節ａのポジションデータは、ローカル座標系における位置座標で示されている。本実施形態では、標準姿勢における関節ａがローカル座標系の原点の真上（Ｙ軸上）に設定されているので、Ｘａ＝Ｚａ＝０である（図７参照）。関節ｂ〜ｑのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータである。
【００７５】
図７は、ポジションデータを説明するための図であり、ローカル座標系上の関節ａ、関節ｂ、および関節ｈの位置座標を示すものである。
【００７６】
関節ｈのポジションデータ（Ｘｈ，Ｙｈ，Ｚｈ）は、親の関節である関節ｂ（図５参照）の位置座標Ｂ（ＸＢ，ＹＢ，ＺＢ）を基準とした相対位置を示している。したがって、関節ｈの位置座標Ｈは、Ｈ（ＸＢ＋Ｘｈ，ＹＢ＋Ｙｈ，ＺＢ＋Ｚｈ）となる。なお、関節ｂの親の関節である関節ａ（基点）の位置座標Ａは関節ａのポジションデータなのでＡ（Ｘａ，Ｙａ，Ｚａ）であり、関節ｂのポジションデータが（Ｘｂ，Ｙｂ，Ｚｂ）なので、位置座標Ｂ（ＸＢ，ＹＢ，ＺＢ）は（Ｘａ＋Ｘｂ，Ｙａ＋Ｙｂ，Ｚａ＋Ｚｂ）となる。したがって、位置座標Ｈは、Ｈ（Ｘａ＋Ｘｂ＋Ｘｈ，Ｙａ＋Ｙｂ＋Ｙｈ，Ｚａ＋Ｚｂ＋Ｚｈ）となる。
【００７７】
なお、各関節のポジションデータは、親である関節の位置を基準とした相対位置で表す場合に限られない。例えば、ローカル座標系の位置座標としてもよいし、親関節との距離情報であってもよい。
【００７８】
脚部長は、基準キャラクタの脚の長さを示すデータである。脚部長は、関節ｏ（左股関節）から関節ｐ（左膝）までの距離と関節ｐ（左膝）から関節ｑ（左足首）までの距離とを加算した値としており、関節ｐ，ｑの各ポジションデータから算出されて、予め設定されている。関節ｐのポジションデータは親関節である関節ｏを基準とした相対位置であり、関節ｑのポジションデータは親関節である関節ｐを基準とした相対位置なので、関節ｐ，ｑの各ポジションデータをそれぞれ（Ｘｐ，Ｙｐ，Ｚｐ），（Ｘｑ，Ｙｑ，Ｚｑ）とすると、脚部長は下記（１）式で算出することができる。なお、脚部長は、関節のポジションデータと下記（１）式とから算出できるので、基準キャラクタデータに含めていなくてもよく、必要の都度算出するようにしてもよい。
Ｌ＝√（Ｘｐ2＋Ｙｐ2＋Ｚｐ2）＋√（Ｘｑ2＋Ｙｑ2＋Ｚｑ2）
・・・・・  （１）
【００７９】
画像データは、キャラクタを構成する各パーツのポリゴンデータおよびテクスチャデータなどを含んでいる。
【００８０】
図８は、プレイヤキャラクタデータの一例を説明するための図である。
【００８１】
プレイヤキャラクタデータは、プレイヤキャラクタのキャラクタデータであり、プレイヤが編集機能を用いて基準キャラクタデータを編集することで作成される。作成されたプレイヤキャラクタデータは、例えばメモリカード１５などに記録される。プレイヤが同じプレイヤキャラクタを使用してゲームを行う場合（新たに編集機能を用いてプレイヤキャラクタを作成しない場合）は、メモリカード１５に記録されているプレイヤキャラクタデータをＲＡＭ１１１ｃに読み込んで使用する。
【００８２】
プレイヤキャラクタデータは、モデルデータおよび画像データなどを含んでいる。プレイヤキャラクタデータのモデルデータは、基準キャラクタデータのモデルデータをコピーしたものが最初に記録され、プレイヤによるプレイヤキャラクタの編集に応じて変更される。
【００８３】
モデルデータの各関節のポジションデータはプレイヤによる編集作業によって変更される。例えば、同図においては、関節ａのポジションデータは編集によって（Ｘａ’，Ｙａ’，Ｚａ’）に変更されている。また、脚部長は、編集後の関節ｐ，ｑの各ポジションデータから算出されて設定される。編集後の関節ｐ，ｑの各ポジションデータをそれぞれ（Ｘｐ’，Ｙｐ’，Ｚｐ’），（Ｘｑ’，Ｙｑ’，Ｚｑ’）とすると、脚部長は下記（２）式で算出することができる。なお、基準キャラクタの脚部長と区別するために、プレイヤキャラクタの脚部長はＬ’で表している。また、脚部長は、関節のポジションデータと下記（２）式とから算出できるので、プレイヤキャラクタデータに含めていなくてもよく、必要の都度算出するようにしてもよい。
Ｌ’＝√（Ｘｐ’2＋Ｙｐ’2＋Ｚｐ’2）＋√（Ｘｑ’2＋Ｙｑ’2＋Ｚｑ’2）
・・・・・  （２）
【００８４】
プレイヤは、初めてゲームを行うときなどに自分のプレイヤキャラクタを作成するために、編集画面でプレイヤキャラクタの編集を行う。編集画面は、メインメニューで「プレイヤキャラクタの編集」を選択することで開始される。編集画面において、プレイヤは編集するパーツを選択する。選択できるパーツは、例えば、左上腕、左前腕、右上腕、右前腕、左大腿、左下腿、右大腿、右下腿、腹、胸などがある。なお、選択できるパーツはこれらに限られない。本実施形態では、編集画面上に表示されている基準キャラクタの各パーツにカーソルを合わせて所定のボタンを押圧することで、プレイヤはパーツを選択することができる。選択されたパーツは、選択されたことが判るように点滅表示され、編集のためのマーカが表示される。なお、パーツの選択方法はこれに限られず、番号や文字列でパーツを指定して選択するようにしてもよい。
【００８５】
次に、プレイヤは、選択したパーツの長さ（長くするか短くするか）およびその太さ（太くするか細くするか）などを調整する。本実施形態では、選択したパーツに表示されているマーカを移動させることで、当該パーツの長さおよび太さを調整する。なお、選択したパーツの調整方法はこれに限られず、直接数字を入力することで調整するようにしてもよい。また、本実施形態では、プレイヤキャラクタが左右対称となるように、編集したパーツに対応するパーツ（例えば、右大腿を編集した場合は左大腿）にも同じ編集が自動的に行われる。なお、これに限られず、左右別々に編集できるようにしてもよい。
【００８６】
プレイヤによってプレイヤキャラクタのパーツの長さの編集が行われた場合、プレイヤキャラクタデータの所定の関節のポジションデータが変更される。例えば、右大腿の長さを変更した場合、プレイヤキャラクタの右膝の位置が変化するので、関節ｍ（右膝）のポジションデータが変更される。なお、右膝に対する右足首の相対位置は変化しないので、関節ｎ（右足首）のポジションデータは変更されない。また、プレイヤキャラクタを左右対称とするために、左大腿の長さも自動的に変更されて左膝の位置も変化するので、関節ｐ（左膝）のポジションデータも変更される。関節ｐのポジションデータが変化するので、脚部長Ｌ’も変更される。また、先述したように、プレイヤキャラクタの脚の長さを変更した場合、プレイヤキャラクタの左右の股関節の間隔も同じ割合で変更される。したがって、関節ｌ(右股関節)および関節ｏ（左股関節）のポジションデータも脚部長比率に応じて変更される。
【００８７】
左右の股関節の間隔の広さの調整（以下では、「股関節調整」とする。）を行う前の関節ｌ，ｏの各ポジションデータをそれぞれ（Ｘｌ，Ｙｌ，Ｚｌ），（Ｘｏ，Ｙｏ，Ｚｏ）とし、脚部長比率をＴ＝Ｌ’／Ｌ（Ｌ：基準キャラクタの脚部長、Ｌ'：編集後のプレイヤキャラクタの脚部長）とすると、股関節調整後の関節ｌ，ｏの各ポジションデータはそれぞれ（Ｘｌ・Ｔ，Ｙｌ・Ｔ，Ｚｌ・Ｔ），（Ｘｏ・Ｔ，Ｙｏ・Ｔ，Ｚｏ・Ｔ）となる。下記(３)式に示すように、股関節調整後の股関節間の距離Ｗ’は、股関節調整前の股関節間の距離Ｗに脚部長比率Ｔを乗じたものとなる。
Ｗ’＝√｛（Ｘｌ・Ｔ−Ｘｏ・Ｔ）2＋（Ｙｌ・Ｔ−Ｙｏ・Ｔ）2
＋（Ｚｌ・Ｔ−Ｚｏ・Ｔ）2｝
＝Ｔ・√｛（Ｘｌ−Ｘｏ）2＋（Ｙｌ−Ｙｏ）2＋（Ｚｌ−Ｚｏ）2｝
＝Ｔ・Ｗ                              ・・・・・  （３）
【００８８】
なお、股関節調整の方法はこれに限られない。例えば、左右の股関節の間隔のみを変更するようにしてもよい。すなわち、標準姿勢におけるキャラクタの横方向を示すＸ座標のみを変更し、Ｙ座標およびＺ座標を変更しないようにしてもよい。上記の例で説明すると、股関節調整後の関節ｌ，ｏの各ポジションデータをそれぞれ（Ｘｌ・Ｔ，Ｙｌ，Ｚｌ），（Ｘｏ・Ｔ，Ｙｏ，Ｚｏ）としてもよい。
【００８９】
なお、プレイヤキャラクタのパーツの太さの編集が行われた場合、プレイヤキャラクタデータの各関節のポジションデータおよび脚部長は変更されず、股関節調整も行われない。
【００９０】
画像データは、基準キャラクタの画像データをコピーしたものが最初に記録され、プレイヤによるプレイヤキャラクタの編集に応じて変更される。例えば、編集されたパーツを構成するポリゴンの各頂点の座標は、当該パーツの編集内容に応じて変更される。なお、編集時には画像データを変更せず、編集内容の情報をプレイヤキャラクタデータとして記録しておき、画像生成時に当該編集内容の情報に基づいて画像データを変更して用いるようにしてもよい。
【００９１】
次に、モーションデータを用いたプレイヤキャラクタの動作の再生方法について、図９〜図１１を参照して説明する。
【００９２】
プレイヤキャラクタの動作の再生は、プレイヤキャラクタデータ（図８参照）と基準キャラクタのモーションデータ（図９参照）とを用いて行われる。すなわち、プレイヤキャラクタデータと基準キャラクタのモーションデータに基づいて、プレイヤキャラクタの各関節の位置データを算出したスケルトンデータをフレーム毎に生成する。スケルトンデータに応じてプレイヤキャラクタデータの各パーツを三次元仮想ゲーム空間上に配置する。これをフレーム毎に行うことでプレイヤキャラクタに所定の動作を行わせる。
【００９３】
図９は、基準キャラクタモーションデータの一例を説明するための図である。
【００９４】
基準キャラクタモーションデータは、基準キャラクタのモーションデータであり、基準キャラクタの各動作を再生するためのデータである。基準キャラクタモーションデータは、プレイヤキャラクタのモーションデータとしても用いられる。基準キャラクタモーションデータは、動作（モーション）毎に設定されており、フレーム毎の各関節の位置データまたは各関節の回転角度を示すデータを含んでいる。関節ａ（基点）のデータには、ローカル座標系における位置座標であるポジションデータと、ローカル座標系における関節ａの回転角度を示すローテーションデータとが含まれている。また、関節ｂ〜ｑのデータには、ローカル座標系における各関節の回転角度を示すローテーションデータが含まれている。基準キャラクタモーションデータの各関節のローテーションデータと、プレイヤキャラクタデータ（図８参照）の各関節のポジションデータとから、各関節のローカル座標系における位置座標を算出することができる。このようにして関節の位置と回転角度から順に子の関節の位置を算出していく方法は、フォワードキネマティクス技術として周知なので、詳細な説明を省略する。
【００９５】
なお、基準キャラクタモーションデータがすべてのフレームのデータを備えていなくてもよく、キーフレームのデータのみを備えておいて、線形補間やスプライン補間などで間のフレームのデータを補間するようにしてもよい。また、基準キャラクタモーションデータのうちの各関節のローテーションデータが本発明の「基準モーションデータ」に対応するものであり、基準キャラクタモーションデータのうちの関節ａ（基点）のポジションデータが本発明の「基準位置データ」に対応するものである。
【００９６】
図１０は、ゲーム装置１の例えば制御部１１１で行われる、プレイヤキャラクタのモーション再生のためのスケルトンデータを生成するための処理（以下では、「スケルトンデータ生成処理」とする。）を説明するためのフローチャートである。
【００９７】
スケルトンデータ生成処理は、フレーム毎に実施される。まず、実行される動作に対応するモーションデータの該当するフレームのデータ（例えば、図９に示すモーション１のフレーム１の処理の場合、ポジションデータα１、ローテーションデータａ１、およびローテーションデータｂ１〜ｑ１）と、プレイヤキャラクタデータ（図８参照）とが、ＣＰＵ１１１ａによってＲＡＭ１１１ｃから読み出されて、描画処理部１１２に入力される（Ｓ１）。次に、入力されたデータからスケルトンデータが生成される（Ｓ２）。
【００９８】
図１１は、スケルトンデータの一例を説明するための図である。
【００９９】
スケルトンデータは、各関節の位置データおよび回転角度を示すデータを含んでいる。関節ａ（基点）のデータには、ポジションデータが含まれている。関節ａのポジションデータは、ローカル座標系における関節ａの位置座標であり、基準キャラクタモーションデータの関節ａのポジションデータと脚部長比率Ｔとから算出される。具体的には、基準キャラクタモーションデータの関節ａのポジションデータの各座標成分に脚部長比率Ｔを乗算したものが、スケルトンデータの関節ａのポジションデータの各座標成分となる。
【０１００】
例えば、図９に示すモーション１のフレーム１の処理の場合、スケルトンデータの関節ａのポジションデータは、ポジションデータα１が（Ｘα1，Ｙα1，Ｚα1）の場合、（Ｘα1・Ｔ，Ｙα1・Ｔ，Ｚα1・Ｔ）となる。
【０１０１】
ローカル座標系の鉛直方向を示すＹ座標の値が基準キャラクタモーションデータにおける値に脚部長比率Ｔを乗じた値となっているので、関節ａの高さ位置がプレイヤキャラクタの脚の長さに応じた位置となっている。これにより、プレイヤキャラクタの足が適切に地面に接するようになる。
【０１０２】
図１２は、プレイヤキャラクタの足が適切に地面に接することを説明するための図であり、プレイヤキャラクタの関節ａの位置座標を示している。
【０１０３】
基準キャラクタモーションデータは基準キャラクタＳを基準に設定されたものなので、基準キャラクタＳの足が適切に接地するように、基準キャラクタモーションデータの関節ａの高さ位置（ローカル座標系におけるＹ座標）が設定されている。したがって、同図に示すように、基準キャラクタＳの関節ａのＹ座標Ｙα1は、基準キャラクタＳの脚の長さに対応した値となっている。また、脚の長いプレイヤキャラクタＰ１の関節ａのＹ座標は、基準キャラクタモーションデータの関節ａのポジションデータのＹ座標Ｙα1に脚部長比率Ｔを乗算したＹα1・Ｔとなり、関節ａの高さ位置はプレイヤキャラクタＰ１の脚の長さに対応した位置となっている。したがって、プレイヤキャラクタＰ１の足が適切に地面に接するようになる。
【０１０４】
また、ローカル座標系の水平面を示すＸＺ平面上の座標（Ｘ座標およびＺ座標）も基準キャラクタモーションデータにおける値に脚部長比率Ｔを乗じた値となるので、関節ａの移動距離も脚部長比率Ｔに比例した距離となる。
【０１０５】
図１３は、プレイヤキャラクタの移動距離を説明するための図であり、プレイヤキャラクタの関節ａの位置座標を示している。同図においては、プレイヤキャラクタがＸ軸に沿って走っているモーションについて説明している。なお、同図はＺ座標の正の方向から見た場合を示しており、以下の説明ではＺ座標成分の記載を省略して説明する。
【０１０６】
同図（ａ）は、基準キャラクタＳの場合を示しており、フレームＫ１における基準キャラクタＳ（Ｋ１）とフレームＫ２における基準キャラクタＳ（Ｋ２）とを表示している。フレームＫ１における関節ａのポジションデータを（Ｘｋ１，Ｙｋ１）、フレームＫ２における関節ａのポジションデータを（Ｘｋ２，Ｙｋ２）とすると、フレームＫ１からフレームＫ２までの関節ａのＸ軸上の移動距離はＤ＝Ｘｋ２−Ｘｋ１となる。
【０１０７】
同図（ｂ）は、脚の長いプレイヤキャラクタＰ１の場合を示しており、フレームＫ１におけるプレイヤキャラクタＰ１（Ｋ１）とフレームＫ２におけるプレイヤキャラクタＰ１（Ｋ２）とを表示している。フレームＫ１およびＫ２における関節ａのポジションデータは、同図(ａ）の説明と共通しており、（Ｘｋ１，Ｙｋ１）および（Ｘｋ２，Ｙｋ２）となる。このとき、プレイヤキャラクタＰ１（Ｋ１）の関節ａの位置座標（スケルトンデータとして算出された関節ａのポジションデータ）は（Ｘｋ１・Ｔ，Ｙｋ１・Ｔ）となり、プレイヤキャラクタＰ１（Ｋ２）の関節ａの位置座標は（Ｘｋ２・Ｔ，Ｙｋ２・Ｔ）となる。したがって、フレームＫ１からフレームＫ２までの関節ａのＸ軸上の移動距離はＤ’＝Ｘｋ２・Ｔ−Ｘｋ１・Ｔ＝（Ｘｋ２−Ｘｋ１）・Ｔ＝Ｄ・Ｔとなる。
【０１０８】
なお、基準キャラクタモーションデータの関節ａのポジションデータの各座標成分に脚部長比率Ｔを乗算したものをスケルトンデータの関節ａのポジションデータの各座標成分としているので、関節ａがＸＺ平面上を移動する場合に限らず、Ｙ軸上を移動する場合（例えば、プレイヤキャラクタがジャンプした場合など）でも同様に、移動距離が脚部長比率Ｔに比例した距離となる。
【０１０９】
図１１に戻って、関節ｂ〜ｑのデータには、ポジションデータおよびリンクデータが含まれている。関節ｂ〜ｑのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータであり、プレイヤキャラクタデータの関節ｂ〜ｑのポジションデータと基準キャラクタモーションデータの関節ｂ〜ｑのローテーションデータとからフォワードキネマティクス技術を用いて算出される。スケルトンデータの関節ｂ〜ｑのリンクデータは、プレイヤキャラクタデータの関節ｂ〜ｑのリンクデータを用いる。
【０１１０】
図１０に戻って、ステップＳ２で生成されたスケルトンデータの座標変換が行われ（Ｓ３）、スケルトンデータ生成処理は終了される。当該座標変換は、ローカル座標系の位置データをワールド座標系の位置データに変換するものである。これにより、ローカル座標系におけるデータであるスケルトンデータが、ワールド座標系のデータに変換される。なお、ワールド座標系は、三次元仮想ゲーム空間上に設定された固定の座標系であり、三次元仮想ゲーム空間上での位置や向きを表すために用いられる。ステップＳ３の座標変換では、プレイヤキャラクタの「現在位置データ」および「現在向きデータ」が用いられる。
【０１１１】
「現在位置データ」および「現在向きデータ」は、それぞれ、ワールド座標系におけるプレイヤキャラクタの位置および向き（正確には、プレイヤキャラクタに設定されているローカル座標系の原点の位置およびローカル座標系の向き）を示すデータであり、ＲＡＭ１１１ｃに記録されている。「現在位置データ」および「現在向きデータ」は、プレイヤキャラクタが三次元仮想ゲーム空間上を移動することで更新される。例えば、プレイヤキャラクタが走って移動する場合、「現在位置データ」および「現在向きデータ」に基づくローカル座標系を基準として走るモーションが実行される。当該走るモーションが終了したとき（最後のフレームが処理されたとき）のプレイヤキャラクタのワールド座標系における位置および向きに基づいて、「現在位置データ」および「現在向きデータ」が更新される。プレイヤキャラクタが走って移動している間、走るモーションの実行と「現在位置データ」および「現在向きデータ」の更新とが繰り返される。
【０１１２】
描画処理部１１２は、最終的に、ワールド座標系のデータに変換されたスケルトンデータと、同様にワールド座標系のデータに変換された画像データなどを用いて、ゲーム画像のデータを作成する。フレーム毎に作成されたゲーム画像のデータが、映像信号としてモニタ１３に出力されて、プレイヤキャラクタの動作の映像がモニタ１３に表示される。
【０１１３】
本実施形態によると、基準キャラクタモーションデータの関節ａのポジションデータをプレイヤキャラクタの脚部長比率に応じて変化させたものが、スケルトンデータの関節ａのポジションデータに用いられる。したがって、関節ａの移動距離が脚部長比率に応じた距離となる。これにより、プレイヤキャラクタの移動距離が脚の長さに応じた距離となるので、基準キャラクタとは脚の長さの異なるプレイヤキャラクタに共通の基準キャラクタモーションデータを用いた場合でも、プレイヤキャラクタの移動動作が不自然な映像となることを抑制することができる。
【０１１４】
また、本実施形態によると、プレイヤキャラクタの左右の股関節の間隔を脚部長比率に応じて変化させる。したがって、プレイヤキャラクタの歩幅を移動距離に近付けることができるので、プレイヤキャラクタの移動動作がより自然な映像となる。
【０１１５】
なお、上記実施形態では、プレイヤキャラクタの大腿と下腿とを同じ割合で変化させた場合について説明したが、それぞれ個別に変化させた場合（例えば、大腿を２倍にして、下腿を半分にするなど）にも、本発明を適用することができる。
【０１１６】
上記実施形態では、プレイヤキャラクタの左右の股関節の間隔を脚部長比率に応じて自動的に変更する場合について説明したが、これに限られない。自動的に変更しないようにして、プレイヤが編集処理で変更できるようにしてもよい。この場合、脚部長に腰関節から股関節までの長さも加えるようにしてもよい。
【０１１７】
上記実施形態では、脚部長を左大腿の長さ（左股関節から左膝までの長さ）と左下腿の長さ（左膝から左足首までの長さ）とを加算した長さとしているが、これに限られない。例えば、右大腿の長さと右下腿の長さとを加算した長さとしてもよい。また、キャラクタが標準姿勢を取ったときの股関節から足首までの長さとしたり、腰関節から足首までの長さとしてもよいし、大腿のみの長さとしたり下腿のみの長さとしてもよい。また、関節間の距離に限定されず、例えば、キャラクタが標準姿勢を取ったときのおしりから足の裏までの距離としてもよい。
【０１１８】
上記実施形態では、基点（関節ａ）の位置座標の各要素に脚部長比率を乗算することでプレイヤキャラクタの位置を変化させて移動距離を変化させるようにしているが、これに限られない。例えば、基準となる移動距離や移動量、移動速度などをあらかじめ設定しておいてキャラクタの移動動作のモーションデータを当該設定された移動距離などに基づいて再生するように設定しておき、脚の長さが異なるキャラクタにこのモーションデータを用いる場合に、設定された移動距離などに脚部長比率を乗算して算出された値に基づいてキャラクタの移動動作を再生するようにしてもよい。この場合、あらかじめ設定された「基準となる移動距離や移動量、移動速度など」が、本発明の「基準位置データ」に対応するものである。
【０１１９】
例えば、基準キャラクタモーションデータ（図９参照）のポジションデータα１〜αＭに、基点（関節ａ）の位置座標に代えて移動量が記録されている場合、このモーションデータを用いて脚の長さが異なるプレイヤキャラクタの移動動作を再生するときは、記録されている移動量に脚部長比率を乗算して算出された値を移動量として用いて、当該プレイヤキャラクタの移動動作を再生するようにすればよい。また、基点（関節ａ）の位置座標を用いずに、基準キャラクタモーションデータとは別に設定された基準キャラクタの一歩当たりの移動距離を用いる場合は、設定されている移動距離に脚部長比率を乗算して算出された値をプレイヤキャラクタの一歩当たりの移動距離として用いるようにすればよい。具体的には、脚部長比率を乗算して算出された一歩当たりの移動距離から１フレーム当たりの移動距離を算出した値を用いる。また、基点（関節ａ）の位置座標を用いずに、基準キャラクタモーションデータとは別に設定された基準キャラクタの移動速度を用いる場合は、脚部長比率を乗算して算出された移動速度から１フレーム当たりの移動距離を算出した値を用いる。
【０１２０】
上記実施形態では、編集されたプレイヤキャラクタに基準キャラクタのモーションデータを用いる場合について説明したが、これに限られない。例えば、脚の長さの異なるキャラクタ（プレイヤキャラクタ、敵キャラクタ、その他のキャラクタを含む。）に共通のモーションデータを用いる場合にも、本発明を適用することができる。
【０１２１】
上記実施形態では、プレイヤキャラクタが走って移動する場合について説明したが、これに限られず、歩いて移動する場合や、ジャンプして移動する場合にも本発明を適用することができる。また、水平方向の移動に限定されず、鉛直方向への移動を含む移動、例えば、坂道や階段を上ったり下ったりする場合や、はしごや綱を上ったり下ったりする場合、ジャンプをする場合などにも、本発明を適用することができる。
【０１２２】
上記実施形態では、アクションゲームを例に説明したが、これに限られない。例えば、スポーツゲーム、ＲＰＧ（ロールプレイングゲーム）、シューティングゲーム、格闘ゲーム、アドベンチャーゲームなどの様々なジャンルのゲームにおいても、本発明を適用することができる。また、本発明は、複数のプレイヤの操作するキャラクタ若しくはＣＰＵの制御するキャラクタがチームを組んで協同して敵キャラクタと対戦するようなゲームや、敵キャラクタとしての他のプレイヤの操作するキャラクタと対戦するようなゲームにも適用することができる。
【０１２３】
上記実施形態では、家庭用ゲーム装置でゲームを実施する場合について説明したが、これに限られない。本発明は、例えば、アーケードゲーム装置、携帯型ゲーム装置、および、ゲームソフトが搭載されているパーソナルコンピュータなどでゲームを実施する場合にも適用することができる。
【０１２４】
上記実施形態では、本発明をゲームプログラムに適用した場合について説明したが、ゲーム以外のプログラムに適用してもよい。本発明は、モーションデータに基づいてキャラクタなどの動作を表示するあらゆるプログラムに適用することができる。
【０１２５】
本発明に係るプログラム、当該プログラムを記録した記録媒体、および、当該プログラムを実行する画像処理装置は、上述した実施形態に限定されるものではない。本発明に係るプログラム、当該プログラムを記録した記録媒体、および、当該プログラムを実行する画像処理装置の具体的な構成は、種々に設計変更自在である。
【符号の説明】
【０１２６】
１  ゲーム装置
１１  本体
１１１  制御部
１１１ａ  ＣＰＵ（基準キャラクタ情報読出手段、第２キャラクタ情報読出手段、キャラクタ制御手段、股関節調整手段）
１１１ｂ  ＲＯＭ
１１１ｃ  ＲＡＭ（記憶手段）
１１２  描画処理部
１１３  音声処理部
１１４  ディスクドライブユニット
１１５  メモリカード接続ユニット
１１６  Ｉ／Ｏインターフェース部
１１７  通信処理部
１１８  信号送受信部
１２  操作コントローラ
１３  モニタ
１４  ディスク
１５  メモリカード
１６  ネットワークアダプタ
２  ネットワーク回線
【図１】
0005575553.tif 000002
【図２】
0005575553.tif 000003
【図３】
0005575553.tif 000004
【図４】
0005575553.tif 000005
【図５】
0005575553.tif 000006
【図６】
0005575553.tif 000007
【図７】
0005575553.tif 000008
【図８】
0005575553.tif 000009
【図９】
0005575553.tif 000010
【図１０】
0005575553.tif 000011
【図１１】
0005575553.tif 000012
【図１２】
0005575553.tif 000013
【図１３】
0005575553.tif 000014
【図１４】
0005575553.tif 000015