説明

プログラム、当該プログラムを記録した記録媒体、および、当該プログラムを記憶したプログラム記憶手段を備えた画像処理装置

【課題】脚の長さの異なるキャラクタに共通のモーションデータを用いた場合に不自然な映像となることを抑制する。
【解決手段】基準となるキャラクタSの大腿の長さと下腿の長さとを加算した長さ(脚の長さ)に対する、キャラクタP1、P2の脚の長さの比率を算出する。モーションデータにおける移動距離Dに前記比率を乗算したものを、キャラクタP1、P2の移動距離D'、D”とする。脚の長さがキャラクタSより長いキャラクタP1の移動距離D'はキャラクタSの移動距離Dより長くなり、脚の長さがキャラクタSより短いキャラクタP2の移動距離D”はキャラクタSの移動距離Dより短くなる。したがって、キャラクタP1、P2の移動動作が、脚の長さに応じた自然な映像として表示される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、当該プログラムを記録した記録媒体、および、当該プログラムを記憶したプログラム記憶手段を備えた画像処理装置に関し、特に、キャラクタの表示方法に関する。
【背景技術】
【0002】
従来、プレイヤが所定のキャラクタを操作し、三次元仮想ゲーム空間上で敵であるキャラクタと戦うアクションゲームが開発されている。以下では、プレイヤが操作するキャラクタを「プレイヤキャラクタ」とし、敵であるキャラクタを「敵キャラクタ」とする。
【0003】
このようなアクションゲームにおいて、プレイヤキャラクタが敵キャラクタを攻撃し、敵キャラクタがプレイヤキャラクタを攻撃する。また、プレイヤキャラクタや敵キャラクタは、走ったりジャンプするなどの動作を行う。キャラクタ毎に各動作のためのデータ(以下では、「モーションデータ」とする。詳細は後述する。)をあらかじめ用意しておくと膨大なデータ量となるため、各キャラクタに共通するモーションデータと、各キャラクタ固有の画像データやモデルデータなど(以下では、「キャラクタデータ」とする。詳細は後述する。)とを用意しておき、これらを組み合わせてキャラクタの動作を映像化している。
【0004】
モーションデータは、各動作(モーション)のフレーム毎(例えば1/60秒毎)のデータを記録したものである(図9参照)。一般に、コンピュータグラフィックスを用いたアニメーションでは、人や動物などの多関節物体は身体の各パーツを関節で連結した階層構造のスケルトンモデル(図4および図5参照)で表現される。モーションデータはこのスケルトンモデルの各関節の位置データまたは各関節の回転角度のデータをフレーム毎に記録している。各関節の位置に応じてキャラクタの各パーツを配置することで当該キャラクタを三次元仮想ゲーム空間上に配置し、これをフレーム毎に行うことで当該キャラクタに所定の動作を行わせる。
【0005】
例えば、プレイヤがプレイヤキャラクタに走って移動させるための操作を行った場合、走って移動する動作のモーションデータとプレイヤキャラクタのキャラクタデータとを用いてプレイヤキャラクタが走って移動する動作の映像が生成され、ゲーム画面に表示される。
【0006】
しかしながら、体格(身長)の異なるキャラクタに対して、例えば共通の走って移動する動作のモーションデータをそのまま用いた場合、キャラクタの走る動作と移動距離とに不自然さが生じる。すなわち、体格の大きいキャラクタの場合、脚の動きが大きい(歩幅が広い)割に移動距離が短くなるので、足が地面を滑っているような不自然な動作となる。一方、体格の小さいキャラクタの場合、脚の動きが小さい(歩幅が狭い)割に移動距離が長くなるので、足が地面を滑っているような不自然な動作となる。
【0007】
この不自然さを緩和するために、モーションデータのキャラクタの移動距離を、キャラクタの体格に比例させて変更する方法が開発されている。当該方法によると、モーションデータのキャラクタの移動距離がキャラクタの体格に比例した距離に変更されるので、キャラクタの脚の動きに合った自然な距離だけキャラクタが移動することになる。すなわち、体格の大きいキャラクタの移動距離が体格に比例した長い距離になり、体格の小さいキャラクタの移動距離が体格に比例した短い距離になるので、キャラクタの体格に合わない移動距離となることを防いで、キャラクタの走る動作の不自然さを緩和することができる。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特許第4081754号公報
【特許文献2】特許第3212255号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、キャラクタの体格に比例させてキャラクタの移動距離を変更する場合、以下のような不都合が生じる。例えば、体格は大きいが脚が短いキャラクタの移動距離をキャラクタの体格に比例させて長くした場合、キャラクタの脚の動きが小さい割に移動距離が長くなるので、足が地面を滑っているような不自然な動作となる。また、体格は小さいが脚が長いキャラクタの移動距離をキャラクタの体格に比例させて短くした場合、キャラクタの脚の動きが大きい割に移動距離が短くなるので、足が地面を滑っているような不自然な動作となる。
【0010】
図14は、体格は同じであるが脚の長さの異なるキャラクタがそれぞれ走っている状態を説明するための図であり、共通のモーションデータを使用して示している。なお、各キャラクタの移動距離が各キャラクタの体格に比例させた距離となるようになっている。
【0011】
同図(a)に示すキャラクタC1は通常の脚の長さのキャラクタであって、当該キャラクタC1に合わせてモーションデータが用意されている。キャラクタC1の脚の動きと移動距離とは合っているので、キャラクタC1の走る動作は自然な動作の映像となる。
【0012】
キャラクタC2は、キャラクタC1と比べて脚(大腿および下腿)が長いキャラクタである。キャラクタC2はキャラクタC1より脚が長いが胴が短くなっており、キャラクタC2の体格(身長)はキャラクタC1の体格と同じである。体格が同じなので、キャラクタC2の移動距離はキャラクタC1の移動距離と同じ距離になっている。キャラクタC2はキャラクタC1より脚が長いので、脚の動きがキャラクタC1と比べて大きくなっている。それにもかかわらず、キャラクタC2の移動距離がキャラクタC1の移動距離と同じなので、キャラクタC2の走る動作は足が地面を滑っているような不自然な動作となる。
【0013】
キャラクタC3は、キャラクタC1と比べて脚(大腿および下腿)が短いキャラクタである。キャラクタC3はキャラクタC1より脚が短いが胴が長くなっており、キャラクタC3の体格(身長)はキャラクタC1の体格と同じである。体格が同じなので、キャラクタC3の移動距離はキャラクタC1の移動距離と同じ距離になっている。キャラクタC3はキャラクタC1より脚が短いので、脚の動きがキャラクタC1と比べて小さくなっている。それにもかかわらず、キャラクタC3の移動距離がキャラクタC1の移動距離と同じなので、キャラクタC3の走る動作は足が地面を滑っているような不自然な動作となる。
【0014】
なお、上記課題は、アクションゲームに限られるものではなく、他の種類のゲームにおいても生じる。また、ゲーム以外においても、共通のモーションデータに基づいてキャラクタなどの動作を表示する場合に、上記課題が生じる。
【0015】
本発明は上記した事情のもとで考え出されたものであって、脚の長さの異なるキャラクタに共通のモーションデータを用いた場合に不自然な映像となることを抑制することができる画像表示装置を提供することをその目的としている。
【課題を解決するための手段】
【0016】
上記課題を解決するため、本発明では、次の技術的手段を講じている。
【0017】
本発明の第1の側面によって提供されるプログラムは、移動を伴う所定の動作を行っているキャラクタの画像を表示装置に表示する画像処理装置のコンピュータで実行されるプログラムであって、前記コンピュータを、少なくとも下半身が複数の関節による連結構造を有する二足歩行モデルの第1キャラクタである基準キャラクタに関し、前記複数の関節間の距離を特定するための基準キャラクタデータと、前記所定の動作を行わせるための前記複数の関節間の相対的な位置関係を特定する基準モーションデータと、前記所定の動作における基準キャラクタの位置を特定するための基準位置データとを、記憶手段から読み出す基準キャラクタ情報読出手段、少なくとも下半身の複数の関節による連結構造が前記基準キャラクタと等しい二足歩行モデルの第2キャラクタであって、1以上の第2キャラクタのそれぞれに関して前記複数の関節間の距離を特定するための第2キャラクタデータを、記憶手段から読み出す第2キャラクタ情報読出手段、前記第2キャラクタ情報読出手段によって読み出された前記第2キャラクタデータに加え、前記基準キャラクタ情報読出手段によって読み出された前記基準キャラクタデータ、前記基準モーションデータおよび前記基準位置データに基づいて、前記第2キャラクタに移動を伴う前記所定の動作を行わせるキャラクタ制御手段として機能させ、前記キャラクタ制御手段は、前記基準キャラクタデータおよび前記第2キャラクタデータに基づいて、前記基準キャラクタと前記第2キャラクタとの下半身に関する長さの比率を算出し、該比率および前記基準位置データに基づいて該第2キャラクタの前記所定の動作時の移動位置を算出することを特徴とする。
【0018】
なお、本発明における「下半身」とは、腰から下(脚の方向)の部分全体を指しており、大腿、下腿、足などの各パーツ、および、腰関節、股関節、膝、足首などの各関節が含まれる。つまり、「下半身に関する長さ」には、下半身の部位の長さ(例えば、大腿の長さや下腿の長さ、大腿と下腿をあわせた長さ、さらに腰関節から股関節までの距離を加えた長さなど)が含まれる。また、部位の長さだけではなく、キャラクタが所定の姿勢を取ったときの関節間の距離(例えば、股関節から足首までの距離や腰関節から足首までの距離)や、おしりから足の裏までの距離なども、「下半身に関する長さ」に含まれる。
【0019】
本発明の好ましい実施の形態においては、前記下半身に関する長さは、大腿の長さと下腿の長さとを加算した長さである。
【0020】
本発明の好ましい実施の形態においては、前記コンピュータを、前記第2キャラクタの左右の股関節の間隔を、前記基準キャラクタの対応する間隔に前記比率を乗算したものに調整する股関節調整手段としてさらに機能させる。
【0021】
本発明の第2の側面によって提供される記録媒体は、本発明の第1の側面によって提供されるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0022】
本発明の第3の側面によって提供される画像処理装置は、本発明の第1の側面によって提供されるプログラムを記憶したプログラム記憶手段と、前記プログラム記憶手段に記憶されたプログラムを実行するコンピュータとを備えた画像処理装置である。
【発明の効果】
【0023】
本発明によれば、基準キャラクタと第2キャラクタとの下半身に関する長さの比率に応じて、第2キャラクタの所定の動作時の移動位置が算出されることで、当該動作時の第2キャラクタの移動距離が変化する。したがって、第2キャラクタの移動動作を、第2キャラクタの下半身に関する長さに応じた自然な動作とすることができる。これにより、基準キャラクタとは下半身に関する長さが異なる第2キャラクタに基準キャラクタのモーションデータ(基準モーションデータおよび基準位置データ)を用いた場合でも、第2キャラクタの移動動作が不自然な映像となることを抑制することができる。
【0024】
例えば、「下半身に関する長さ」を大腿の長さと下腿の長さとを加算した長さである脚の長さとした場合、基準キャラクタが走る動作のモーションデータを脚の長さが基準キャラクタより長い第2キャラクタに用いると、第2キャラクタの移動距離が長くなる。したがって、移動距離が第2キャラクタの脚の長さにあった距離となり、第2キャラクタの移動動作と移動距離とが合った自然な映像となる。
【0025】
また、脚の長さに応じて第2キャラクタの左右の股関節の間隔を変化させた場合、移動距離を表示キャラクタの脚の長さにあった距離により近づけることができるので、第2キャラクタの移動動作がより自然な映像となる。
【0026】
本発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【図面の簡単な説明】
【0027】
【図1】編集機能を用いて脚の長さを変更されたプレイヤキャラクタを説明するための図である。
【図2】脚の長さの異なるキャラクタがそれぞれ走っている状態を説明するための図である。
【図3】本実施形態に係るゲーム装置を示す構成図である。
【図4】キャラクタが標準姿勢を取っているときの各関節のリンク構造を示す図である。
【図5】各関節の親子関係の階層構造を示す図である。
【図6】基準キャラクタデータの一例を説明するための図である。
【図7】ポジションデータを説明するための図である。
【図8】プレイヤキャラクタデータの一例を説明するための図である。
【図9】基準キャラクタモーションデータの一例を説明するための図である。
【図10】プレイヤキャラクタのモーション再生のためのスケルトンデータを生成するための処理を説明するためのフローチャートである。
【図11】スケルトンデータの一例を説明するための図である。
【図12】プレイヤキャラクタの足が適切に地面に接することを説明するための図である。
【図13】プレイヤキャラクタの移動距離を説明するための図である。
【図14】脚の長さの異なるキャラクタがそれぞれ走っている状態を説明するための図であり、移動距離を各キャラクタの体格に比例させた距離としたものである。
【発明を実施するための形態】
【0028】
以下、本発明の好ましい実施の形態として、本発明に係るプログラムをゲームソフトに適用した場合について、添付図面を参照して具体的に説明する。以下の説明では、家庭用ゲーム装置(以下、「ゲーム装置」とする。)において、アクションゲームを進行している場合を例として説明する。
【0029】
本実施形態に係るアクションゲームは、三次元仮想ゲーム空間上でプレイヤキャラクタを敵キャラクタと戦わせ、プレイヤキャラクタが敵キャラクタを倒すことにより進行する。また、このアクションゲームには、プレイヤキャラクタを編集する機能が設けられている。プレイヤは、編集機能を用いてプレイヤキャラクタを好みの形状に変更することができる。
【0030】
編集機能では、プレイヤキャラクタの基準となるキャラクタ(以下では、「基準キャラクタ」とする。)の腕や脚、胴体などの各パーツの形状(長さ、太さなど)を変更したり、基準キャラクタの顔を構成する目や鼻などの各パーツの形状および配置位置を変更したりすることができ、編集後の基準キャラクタを自分のプレイヤキャラクタとしてゲームで使用することができる。例えば、脚のパーツでは、股関節から膝までの大腿と膝から足首までの下腿とを、それぞれ個別に長くしたり短くしたり、太くしたり細くしたりすることができる。本実施形態においては、左右の大腿で同じ変更がなされ、左右の下腿で同じ変更がなされるようにしている。なお、左右それぞれ個別に形状を変更できるようにしても構わない。なお、編集機能の詳細については後述する。
【0031】
図1は、編集機能を用いて脚の長さを変更されたプレイヤキャラクタを説明するための図である。
【0032】
左側に示されているのが、編集前の基準となる基準キャラクタSである。中央のプレイヤキャラクタP1は基準キャラクタSの脚(大腿および下腿とも)の長さを長くしたものであり、右側のプレイヤキャラクタP2は基準キャラクタSの脚(大腿および下腿とも)の長さを短くしたものである。
【0033】
プレイヤは、編集後のプレイヤキャラクタを自分のプレイヤキャラクタとしてゲームを行う。プレイヤキャラクタの動作には、予め設定されている基準キャラクタSの動作のためのモーションデータが用いられる。ただし、脚の長さが基準キャラクタSとは異なるプレイヤキャラクタに対して、例えば走るモーションデータをそのまま用いると不自然な映像となるので、プレイヤキャラクタの脚の長さに応じた所定の処理を行っている。
【0034】
具体的には、まず、基準キャラクタSの左大腿の長さ(左股関節から左膝までの長さ)と左下腿の長さ(左膝から左足首までの長さ)とを加算した長さ(以下では、「脚部長」とする。)に対するプレイヤキャラクタの脚部長の比率(以下では、「脚部長比率」とする。)を算出しておく。例えばプレイヤキャラクタが走る動作を行う場合、プレイヤキャラクタの移動距離が基準キャラクタSの移動距離に脚部長比率を乗算した距離となるように、基準キャラクタSの位置を設定する。すなわち、プレイヤキャラクタの移動距離を、脚部長比率に応じて、長くしたり短くしたりする。これにより、プレイヤキャラクタの脚の長さに合わせた自然な動作となる。なお、モーションデータを用いた具体的な動作の再生方法については後述する。
【0035】
例えば、図1に示す基準キャラクタSの脚部長(同図では実線矢印の長さで示している。)はLであり、プレイヤキャラクタP1の脚部長はL’(=1.3L)なので、プレイヤキャラクタP1の脚部長比率は1.3である。したがって、プレイヤキャラクタP1の移動距離は、基準キャラクタSの移動距離の1.3倍となる。また、プレイヤキャラクタP2の脚部長はL”(=0.7L)なので、プレイヤキャラクタP2の脚部長比率は0.7である。したがって、プレイヤキャラクタP2の移動距離は、基準キャラクタSの移動距離の0.7倍となる。
【0036】
図2は、基準キャラクタSおよびプレイヤキャラクタP1、P2がそれぞれ走っている状態を説明するための図である。各キャラクタの動作には共通のモーションデータが使用されており、当該モーションデータの所定間隔の3つのフレームにおける各キャラクタの画像を、(a)基準キャラクタSの場合、(b)プレイヤキャラクタP1の場合、(c)プレイヤキャラクタP2の場合として示している。それぞれの一番左に記載しているものと一番右に記載されているものとの間のフレーム数(所要時間)は同一なので、同じ時間での各キャラクタの移動距離が示されている。
【0037】
プレイヤキャラクタP1の移動距離(同図では実線矢印の長さで示している。)D’が基準キャラクタSの移動距離Dの1.3倍となり、プレイヤキャラクタP1は基準キャラクタSの場合より長い距離を移動している。また、プレイヤキャラクタP2の移動距離D”が基準キャラクタSの移動距離Dの0.7倍となり、プレイヤキャラクタP2は基準キャラクタSの場合より短い距離を移動している。同図に示すように、プレイヤキャラクタP1およびP2の走る動作は、それぞれの脚の長さに合った自然な動作となっている。なお、脚部長や移動距離は三次元仮想ゲーム空間上での距離を用いている。
【0038】
また、本実施形態では、編集機能を用いてプレイヤキャラクタの脚の長さを変更した場合、プレイヤキャラクタの左右の脚の付け根の間隔(後述する図4および図5における右股関節lと左股関節oとの間隔であり、以下「股関節の間隔」とする。)も、脚の長さの変化割合と同じ割合で変更するようにしている。現実の世界で人が移動する動作(走ったり、歩いたりする動作)を行う場合、人は脚のみを動かしているのではなく、腰関節を回転させて骨盤を回転させることで左右の股関節の位置をそれぞれ交互に前後させている。したがって、股関節の間隔も歩幅に関与してくる。本実施形態では、プレイヤキャラクタの動作にも腰関節の回転に伴う股関節の位置の移動を反映させている。したがって、プレイヤキャラクタの脚の長さに応じて移動距離を変化させた場合に左右の股関節の間隔を変化させることで、プレイヤキャラクタの歩幅と移動距離とが合うようにして、より自然な映像になるようにしている。
【0039】
例えば、基準キャラクタSより脚が長いプレイヤキャラクタP1の左右の股関節の間隔を基準キャラクタSの左右の股関節の間隔と同じままとした場合、脚の長さが長くなったことにより歩幅が広くなるが、左右の股関節の間隔に応じた歩幅の変化分はゼロなので反映されない。にもかかわらず、プレイヤキャラクタP1の移動距離は脚部長比率に応じて長くなっているので、プレイヤキャラクタP1の歩幅が移動距離より短く(狭く)なる。
【0040】
これを改善するために、本実施形態では、プレイヤキャラクタの左右の股関節の間隔を、基準キャラクタSの左右の股関節の間隔に脚部長比率を乗算したものとしている。例えば、図1に示すプレイヤキャラクタP1の左右の股関節の間隔の広さW’を、基準キャラクタSの左右の股関節の間隔の広さWに脚部長比率1.3を乗算したもの(W’=1.3W)としている。また、プレイヤキャラクタP2の左右の股関節の間隔の広さW”を、基準キャラクタSの左右の股関節の間隔の広さWに脚部長比率0.7を乗算したもの(W”=0.7W)としている。なお、プレイヤキャラクタの左右の股関節の間隔の広さの算出方法は、これに限られない。例えば、脚部長比率に所定の調整値を乗算した値を算出しておき、当該算出値を基準キャラクタSの左右の股関節の間隔の広さWに乗算するようにしてもよい。
【0041】
プレイヤキャラクタの左右の股関節の間隔の広さの調整は、プレイヤキャラクタの編集時に自動的に行われる。なお、当該調整の詳細については、後述する編集機能の説明の中で説明する。
【0042】
以下に、本実施形態のハード構成について説明する。
【0043】
図3は、本実施形態に係るゲーム装置を示す構成図である。ゲーム装置1は、本体11および操作コントローラ12を備えている。操作コントローラ12は短距離無線通信によって本体11に接続されている。本体11には、モニタ13が専用のケーブルによって接続される。また、本体11には、ゲームプログラムやゲームデータが記録されているディスク14が装着され、また、必要に応じてゲームデータを保存するためのメモリカード15も装着される。
【0044】
本体11は、制御部111、描画処理部112、音声処理部113、ディスクドライブユニット114、メモリカード接続ユニット115、I/Oインターフェース部116、通信処理部117、および信号送受信部118を備えている。制御部111には、描画処理部112、音声処理部113、I/Oインターフェース部116、および通信処理部117が接続されている。また、I/Oインターフェース部116には、ディスクドライブユニット114、メモリカード接続ユニット115、信号送受信部118、およびモニタ13が接続されている。
【0045】
ゲーム装置1では、上記アクションゲームのソフトウェアが記録されたディスク14がディスクドライブユニット114に装着され、このディスクドライブユニット114からディスク14内のゲームプログラムおよびゲームデータが制御部111内のRAM111c(後述)に読み込まれる。読み込まれたゲームプログラムがCPU111a(後述)によって実行されることにより、プレイヤはゲーム内容を楽しむことができる。プレイヤは、操作コントローラ12(後述)を操作することによりプレイヤキャラクタを操作し、ゲームを進行させることができる。また、プレイヤは、編集画面で、操作コントローラ12を操作することにより、プレイヤキャラクタの編集を行うことができる。なお、プレイヤキャラクタの編集機能の詳細については後述する。
【0046】
ディスク14内のゲームデータには、基準キャラクタSや敵キャラクタなどのキャラクタデータ(画像データ含む)、武器などのアイテムデータ(画像データ含む)、モーションデータ、背景などの画像データ、効果音などの音声データ、および、ゲーム進行や描画の際に参照される各種テーブルなどが含まれる。
【0047】
制御部111は、本体11の全体動作を制御するマイクロコンピュータを有している。マイクロコンピュータは、CPU111a、ROM111b、およびRAM111cなどからなり、各部は、それぞれバスラインで接続されている。
【0048】
CPU111aは、ディスクドライブユニット114によってディスク14からRAM111cに読み込まれるゲームプログラムを実行することより、ゲーム進行を統括的に制御する。より具体的には、操作コントローラ12からプレイヤが操作することによる操作信号が信号送受信部118を介して入力されると、CPU111aは、ゲームプログラムにしたがってその操作信号に対する所定のゲーム進行処理を行う。CPU111aは、その処理結果をモニタ13に例えば三次元空間を表現する二次元画像(以下、「ゲーム画像」という)によって表示するとともに、モニタ13のスピーカ13a(後述)から効果音などを出力する。
【0049】
ROM111bには、ディスクローディング機能などのゲーム装置1の基本的な機能やディスク14に記録されたゲームプログラムおよびゲームデータを読み出す手順などを示す基本プログラムが記憶されている。CPU111aは、ディスクドライブユニット114にディスク14が装着されると、ROM111bの基本プログラムにしたがってディスクドライブユニット114を動作させ、ディスク14からゲームプログラムおよびゲームデータをRAM111cに読み込み、ゲーム開始状態に設定する。
【0050】
RAM111cは、ディスクドライブユニット114によってディスク14から読み込まれたゲームプログラムやゲームデータが格納されるエリアと、CPU111aがゲームプログラムを実行するためのワークエリアとを提供するものである。
【0051】
上記ゲームプログラムは、複数のプログラムが組み合わされて構成されており、例えばモニタ13に表示されているプレイヤキャラクタの動作を操作コントローラ12からのプレイヤの操作信号に基づいて制御するゲーム進行プログラムやモニタ13に表示すべきゲーム画像を制御するグラフィック制御プログラムなどによって構成されている。また、本実施形態において、RAM111cは、ディスク14から読み込んだ基準キャラクタデータ、基準キャラクタモーションデータ(図6および図9参照)などを記憶し、これらのデータから作成されたプレイヤキャラクタデータ、およびスケルトンデータ(図8および図11参照)などを記憶する。
【0052】
CPU111aは、操作コントローラ12からのプレイヤの操作信号に基づき、必要に応じてディスク14からゲームプログラムや画像データなどをRAM111cに読み込み、これらのデータを処理したりゲームプログラムを実行したりすることにより、モニタ13に表示すべきゲーム画像の内容を決定する。
【0053】
描画処理部112は、描画処理に必要な各種の演算処理を行うものである。CPU111aは、例えば、1/60秒毎に、描画処理部112に描画指令を出力する。このとき、CPU111aは、モニタ13に表示すべき画像を決定し、その画像の描画に必要なキャラクタデータ、アイテムデータ、背景などの画像データ、モーションデータおよび光源データなどをRAM111cから読み出して描画処理部112に供給する。
【0054】
描画処理部112は、CPU111aからの描画命令に基づいて画像データなどを用いて、描画に必要なデータ(各オブジェクトおよび背景の位置関係、モニタ13の画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性などのデータ)の演算などを行い、その演算結果に基づいて描画処理部112内のVRAM(図示せず)に1コマ(1フレーム)のゲーム画像のデータを作成する。作成されたゲーム画像のデータは、例えば1/60秒毎に映像信号としてモニタ13に出力され、モニタ13に映像として表示される。
【0055】
音声処理部113は、効果音などの音声を発生させる処理に必要な各種の演算処理を行うものである。CPU111aは、モニタ13のスピーカ13aから出力すべき効果音若しくはBGMの音響内容を決定すると、音声処理部113に音声指令を出力する。音声処理部113は、CPU111aからの音声指令に基づき、RAM111cから効果音もしくはBGMの音声データを読み出し、所定の加工処理とD/A変換処理とを施した後、スピーカ13aに出力する。
【0056】
ディスクドライブユニット114は、CPU111aからのローディング指令(ローディングすべきゲームプログラムとゲームデータを指定した読出指令)に基づき、ディスク14に記録されたゲームプログラムやゲームデータを読み出すものである。
【0057】
メモリカード接続ユニット115は、ゲーム進行に関する情報をメモリカード15に書き込んだり、読み出したりするためのユニットである。CPU111aは、ゲーム進行中やゲーム終了時にプレイヤから「データのセーブ」が指令されると、メモリカード接続ユニット115を介してメモリカード15に、ゲーム進行に関する情報(この情報には、例えば、編集機能で作成されたプレイヤキャラクタデータ(図8参照)や、獲得したポイントやアイテムなどの各種の特典などの情報が含まれる。)を記憶する。また、メモリカード15に記憶されたゲーム進行に関する情報は、ゲーム開始前にRAM111cに読み出される。
【0058】
I/Oインターフェース部116は、ディスクドライブユニット114やメモリカード接続ユニット115によって読み出されたゲームプログラムやゲームデータ、および信号送受信部118が受信した操作コントローラ12からの操作信号を制御部111に伝送したり、制御部111、描画処理部112や音声処理部113からの映像信号や音声信号などをモニタ13やスピーカ13aに伝送したりするものである。
【0059】
通信処理部117は、ネットワーク回線2を介して他のゲーム装置1と通信を行う場合に、データの送信および受信を行うための制御を行うものである。通信処理部117は、操作コントローラ12から入力される操作信号やCPU111aから出力される信号をネットワーク回線2を介して他のゲーム装置1に送信し、ネットワーク回線2を介して他のゲーム装置1から送信される信号を受信してCPU111aに入力する。
【0060】
信号送受信部118は、操作コントローラ12から短距離無線通信により送信される信号を受信する。操作コントローラ12からの信号には、操作コントローラ12に設けられた操作ボタンの操作情報の他に、操作コントローラ12に設けられた各種センサ(図示しない)による検出データが含まれる。CPU111aはこの操作コントローラ12から送信される信号によりゲームを進行させることができる。また、信号送受信部118は、操作コントローラ12に各種信号(例えば、操作コントローラ12の振動部(図示しない)を振動させたり、発光部(図示しない)を発光させたり、音声出力部から音声を出力させたりするための信号など)を送信する。
【0061】
操作コントローラ12は、プレイヤキャラクタを動作させたり、ゲームに関する各種の設定を行ったりするために、プレイヤによって操作されるものである。プレイヤによって操作コントローラ12が操作されると、その操作信号が制御部111に伝送され、モニタ13に表示されたプレイヤキャラクタが所定の動作を行う。所定の動作としては、例えば、走る、しゃがむ、ジャンプするなどの移動動作や武器を使用して相手を攻撃する攻撃動作がある。操作コントローラ12は、自身の電源のオン状態とオフ状態とを切り替えるための電源ボタン、ゲームを開始させたりポーズメニューを開いたりするためのスタートボタン、デモをスキップしたりメニューを選択するためのセレクトボタン、および、プレイヤキャラクタの各動作やカメラ視点の移動操作のための操作ボタンなど(押圧して操作される操作ボタンと傾けることで操作される操作スティックとが含まれる。)を備えている。
【0062】
モニタ13は、本体11から送られてきた映像信号に応じてゲーム進行状態を示す表示画面を映し出したり、本体11から送られてきた音声信号に応じてスピーカ13aから効果音などの音声を出力させたりするための装置である。モニタ13は、映像信号や音声信号を入力するための外部入力端子を備えた、例えばテレビジョン受像機によって構成されている。
【0063】
ディスク14は、例えばDVD−ROMまたはCD−ROMなどの光ディスクである。ディスク14には、ゲームプログラムやそのゲームプログラムの実行に必要な種々のデータや画像データが記録されている。メモリカード15は、例えばフラッシュメモリなどのデータの書き換えが可能な不揮発性の記録媒体である。RAM111cのワークエリアの記録は、本体11の電源を切ると消滅してしまうことから、メモリカード15は、RAM111cのワークエリアの記録のうち消滅させずに残しておくべきゲーム進行に関する情報(例えば、プレイヤキャラクタデータなど)を記録する。
【0064】
ゲーム装置1は、ネットワークアダプタ16を介して、インターネット回線などのネットワーク回線2に接続することができる。この場合、ネットワーク回線2を介して、複数のゲーム装置1間でゲームを行うこともできる(いわゆる「オンラインゲーム」)。本実施形態では、ゲーム装置1単独で行うゲームについて説明しているが、このようなオンラインゲームでも本発明を適用することができる。
【0065】
次に、キャラクタの編集処理について、図4〜図8を参照して説明する。
【0066】
上述したように、本実施形態に係るアクションゲームには、プレイヤキャラクタを編集する機能が設けられている。編集機能には、プレイヤキャラクタの体のパーツ(腕や脚、胴体など)の形状を変更する機能や、プレイヤキャラクタの顔のパーツ(目や鼻など)の形状や配置を変更する機能などがある。以下では、プレイヤキャラクタの体のパーツの編集処理について説明する。なお、顔のパーツの編集処理については、説明を省略する。
【0067】
図4および図5は、キャラクタのスケルトンモデルを説明するための図である。図4は、キャラクタが両手を広げて直立した姿勢(以下では、「標準姿勢」とする。)を取っているときの各関節のリンク構造を示す図である。図5は、各関節の親子関係の階層構造を示す図である。本実施形態ではプレイヤキャラクタが人のキャラクタなのでスケルトンモデルは人のスケルトンモデルであり、図4および図5はそれぞれ一般的な人のスケルトンモデルのリンク構造および階層構造を示している。
【0068】
図4において、a〜qが記載されている丸は各関節を示している。なお、各関節a〜qの名称は図5と共通しており、図4においては各名称の記載を省略している。なお、以下の記載でも、各関節a〜qの名称を省略して、例えば、「関節a」とのみ記載する場合がある。各関節間の接続は実線で示されており、例えば、右肩eと右肘fとが接続されていることを示している。腰関節aはスケルトンモデルの基点(連結構造の基準となる部位)となるものである。なお、各関節とリンク構造はこれに限定されるものではない。関節を省略してより単純な構造としてもよいし、関節を増やしてより複雑な構造としてもよい。また、基点は腰関節aに限定されるわけではなく、胴関節b、首cや左肩iとしてもよいし、各関節とは別の点を設定してもよい。ただし、基点は、体幹などのキャラクタの左右に偏らない点、例えば、中心軸(首c、胴関節b、腰関節aを結ぶ直線)に位置する点が望ましい。
【0069】
図5において、上位にある関節が下位にある関節の親であり、下位にある関節は上位にある関節の子である。例えば、右鎖骨dは、右肩eの親であり、胴関節bの子である。各関節の位置は、親である関節の位置を基準に設定される。腰関節a(基点)は1番上位の関節であり、腰関節aの位置はローカル座標系の原点を基準に設定される。なお、ローカル座標系は、キャラクタ(例えば、プレイヤキャラクタや敵キャラクタなどの、CPU111aによって動きが制御されているキャラクタ)毎に設定されている座標系であって、キャラクタの動きや姿勢を管理するために設けられている。
【0070】
プレイヤキャラクタの体のパーツの編集処理は、基準キャラクタのキャラクタデータからプレイヤが使用するプレイヤキャラクタのキャラクタデータを新たに生成したり、生成されたプレイヤキャラクタのキャラクタデータを変更したりすることで行われる。なお、以下では、新たにプレイヤキャラクタのキャラクタデータを生成する場合について説明する。
【0071】
図6は基準キャラクタデータの一例を説明するための図である。
【0072】
基準キャラクタデータは基準キャラクタのキャラクタデータであり、プレイヤが編集機能を用いてプレイヤキャラクタを編集するための元のキャラクタデータである。基準キャラクタデータは、ディスク14にゲームデータとして記録されており、ディスクドライブユニット114によって読み出されて、RAM111cに格納される。
【0073】
図6に示すように、基準キャラクタデータはモデルデータと画像データなどを含んでいる。モデルデータは関節データと脚部長を含んでいる。関節データは関節a〜q毎のポジションデータとリンクデータとを含んでいる。ポジションデータはキャラクタが標準姿勢を取っているときの各関節の位置データであり、リンクデータは親である関節を特定するためのデータである。例えば、同図においては、関節bのポジションデータは(Xb,Yb,Zb)となっており、リンクデータは親関節である関節aを示す「a」となっている。
【0074】
関節aは基点であって親である関節がないので、リンクデータを有しない。関節aのポジションデータは、ローカル座標系における位置座標で示されている。本実施形態では、標準姿勢における関節aがローカル座標系の原点の真上(Y軸上)に設定されているので、Xa=Za=0である(図7参照)。関節b〜qのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータである。
【0075】
図7は、ポジションデータを説明するための図であり、ローカル座標系上の関節a、関節b、および関節hの位置座標を示すものである。
【0076】
関節hのポジションデータ(Xh,Yh,Zh)は、親の関節である関節b(図5参照)の位置座標B(XB,YB,ZB)を基準とした相対位置を示している。したがって、関節hの位置座標Hは、H(XB+Xh,YB+Yh,ZB+Zh)となる。なお、関節bの親の関節である関節a(基点)の位置座標Aは関節aのポジションデータなのでA(Xa,Ya,Za)であり、関節bのポジションデータが(Xb,Yb,Zb)なので、位置座標B(XB,YB,ZB)は(Xa+Xb,Ya+Yb,Za+Zb)となる。したがって、位置座標Hは、H(Xa+Xb+Xh,Ya+Yb+Yh,Za+Zb+Zh)となる。
【0077】
なお、各関節のポジションデータは、親である関節の位置を基準とした相対位置で表す場合に限られない。例えば、ローカル座標系の位置座標としてもよいし、親関節との距離情報であってもよい。
【0078】
脚部長は、基準キャラクタの脚の長さを示すデータである。脚部長は、関節o(左股関節)から関節p(左膝)までの距離と関節p(左膝)から関節q(左足首)までの距離とを加算した値としており、関節p,qの各ポジションデータから算出されて、予め設定されている。関節pのポジションデータは親関節である関節oを基準とした相対位置であり、関節qのポジションデータは親関節である関節pを基準とした相対位置なので、関節p,qの各ポジションデータをそれぞれ(Xp,Yp,Zp),(Xq,Yq,Zq)とすると、脚部長は下記(1)式で算出することができる。なお、脚部長は、関節のポジションデータと下記(1)式とから算出できるので、基準キャラクタデータに含めていなくてもよく、必要の都度算出するようにしてもよい。

L=√(Xp2+Yp2+Zp2)+√(Xq2+Yq2+Zq2
・・・・・ (1)
【0079】
画像データは、キャラクタを構成する各パーツのポリゴンデータおよびテクスチャデータなどを含んでいる。
【0080】
図8は、プレイヤキャラクタデータの一例を説明するための図である。
【0081】
プレイヤキャラクタデータは、プレイヤキャラクタのキャラクタデータであり、プレイヤが編集機能を用いて基準キャラクタデータを編集することで作成される。作成されたプレイヤキャラクタデータは、例えばメモリカード15などに記録される。プレイヤが同じプレイヤキャラクタを使用してゲームを行う場合(新たに編集機能を用いてプレイヤキャラクタを作成しない場合)は、メモリカード15に記録されているプレイヤキャラクタデータをRAM111cに読み込んで使用する。
【0082】
プレイヤキャラクタデータは、モデルデータおよび画像データなどを含んでいる。プレイヤキャラクタデータのモデルデータは、基準キャラクタデータのモデルデータをコピーしたものが最初に記録され、プレイヤによるプレイヤキャラクタの編集に応じて変更される。
【0083】
モデルデータの各関節のポジションデータはプレイヤによる編集作業によって変更される。例えば、同図においては、関節aのポジションデータは編集によって(Xa’,Ya’,Za’)に変更されている。また、脚部長は、編集後の関節p,qの各ポジションデータから算出されて設定される。編集後の関節p,qの各ポジションデータをそれぞれ(Xp’,Yp’,Zp’),(Xq’,Yq’,Zq’)とすると、脚部長は下記(2)式で算出することができる。なお、基準キャラクタの脚部長と区別するために、プレイヤキャラクタの脚部長はL’で表している。また、脚部長は、関節のポジションデータと下記(2)式とから算出できるので、プレイヤキャラクタデータに含めていなくてもよく、必要の都度算出するようにしてもよい。

L’=√(Xp’2+Yp’2+Zp’2)+√(Xq’2+Yq’2+Zq’2
・・・・・ (2)
【0084】
プレイヤは、初めてゲームを行うときなどに自分のプレイヤキャラクタを作成するために、編集画面でプレイヤキャラクタの編集を行う。編集画面は、メインメニューで「プレイヤキャラクタの編集」を選択することで開始される。編集画面において、プレイヤは編集するパーツを選択する。選択できるパーツは、例えば、左上腕、左前腕、右上腕、右前腕、左大腿、左下腿、右大腿、右下腿、腹、胸などがある。なお、選択できるパーツはこれらに限られない。本実施形態では、編集画面上に表示されている基準キャラクタの各パーツにカーソルを合わせて所定のボタンを押圧することで、プレイヤはパーツを選択することができる。選択されたパーツは、選択されたことが判るように点滅表示され、編集のためのマーカが表示される。なお、パーツの選択方法はこれに限られず、番号や文字列でパーツを指定して選択するようにしてもよい。
【0085】
次に、プレイヤは、選択したパーツの長さ(長くするか短くするか)およびその太さ(太くするか細くするか)などを調整する。本実施形態では、選択したパーツに表示されているマーカを移動させることで、当該パーツの長さおよび太さを調整する。なお、選択したパーツの調整方法はこれに限られず、直接数字を入力することで調整するようにしてもよい。また、本実施形態では、プレイヤキャラクタが左右対称となるように、編集したパーツに対応するパーツ(例えば、右大腿を編集した場合は左大腿)にも同じ編集が自動的に行われる。なお、これに限られず、左右別々に編集できるようにしてもよい。
【0086】
プレイヤによってプレイヤキャラクタのパーツの長さの編集が行われた場合、プレイヤキャラクタデータの所定の関節のポジションデータが変更される。例えば、右大腿の長さを変更した場合、プレイヤキャラクタの右膝の位置が変化するので、関節m(右膝)のポジションデータが変更される。なお、右膝に対する右足首の相対位置は変化しないので、関節n(右足首)のポジションデータは変更されない。また、プレイヤキャラクタを左右対称とするために、左大腿の長さも自動的に変更されて左膝の位置も変化するので、関節p(左膝)のポジションデータも変更される。関節pのポジションデータが変化するので、脚部長L’も変更される。また、先述したように、プレイヤキャラクタの脚の長さを変更した場合、プレイヤキャラクタの左右の股関節の間隔も同じ割合で変更される。したがって、関節l(右股関節)および関節o(左股関節)のポジションデータも脚部長比率に応じて変更される。
【0087】
左右の股関節の間隔の広さの調整(以下では、「股関節調整」とする。)を行う前の関節l,oの各ポジションデータをそれぞれ(Xl,Yl,Zl),(Xo,Yo,Zo)とし、脚部長比率をT=L’/L(L:基準キャラクタの脚部長、L':編集後のプレイヤキャラクタの脚部長)とすると、股関節調整後の関節l,oの各ポジションデータはそれぞれ(Xl・T,Yl・T,Zl・T),(Xo・T,Yo・T,Zo・T)となる。下記(3)式に示すように、股関節調整後の股関節間の距離W’は、股関節調整前の股関節間の距離Wに脚部長比率Tを乗じたものとなる。

W’=√{(Xl・T−Xo・T)2+(Yl・T−Yo・T)2
+(Zl・T−Zo・T)2
=T・√{(Xl−Xo)2+(Yl−Yo)2+(Zl−Zo)2
=T・W ・・・・・ (3)
【0088】
なお、股関節調整の方法はこれに限られない。例えば、左右の股関節の間隔のみを変更するようにしてもよい。すなわち、標準姿勢におけるキャラクタの横方向を示すX座標のみを変更し、Y座標およびZ座標を変更しないようにしてもよい。上記の例で説明すると、股関節調整後の関節l,oの各ポジションデータをそれぞれ(Xl・T,Yl,Zl),(Xo・T,Yo,Zo)としてもよい。
【0089】
なお、プレイヤキャラクタのパーツの太さの編集が行われた場合、プレイヤキャラクタデータの各関節のポジションデータおよび脚部長は変更されず、股関節調整も行われない。
【0090】
画像データは、基準キャラクタの画像データをコピーしたものが最初に記録され、プレイヤによるプレイヤキャラクタの編集に応じて変更される。例えば、編集されたパーツを構成するポリゴンの各頂点の座標は、当該パーツの編集内容に応じて変更される。なお、編集時には画像データを変更せず、編集内容の情報をプレイヤキャラクタデータとして記録しておき、画像生成時に当該編集内容の情報に基づいて画像データを変更して用いるようにしてもよい。
【0091】
次に、モーションデータを用いたプレイヤキャラクタの動作の再生方法について、図9〜図11を参照して説明する。
【0092】
プレイヤキャラクタの動作の再生は、プレイヤキャラクタデータ(図8参照)と基準キャラクタのモーションデータ(図9参照)とを用いて行われる。すなわち、プレイヤキャラクタデータと基準キャラクタのモーションデータに基づいて、プレイヤキャラクタの各関節の位置データを算出したスケルトンデータをフレーム毎に生成する。スケルトンデータに応じてプレイヤキャラクタデータの各パーツを三次元仮想ゲーム空間上に配置する。これをフレーム毎に行うことでプレイヤキャラクタに所定の動作を行わせる。
【0093】
図9は、基準キャラクタモーションデータの一例を説明するための図である。
【0094】
基準キャラクタモーションデータは、基準キャラクタのモーションデータであり、基準キャラクタの各動作を再生するためのデータである。基準キャラクタモーションデータは、プレイヤキャラクタのモーションデータとしても用いられる。基準キャラクタモーションデータは、動作(モーション)毎に設定されており、フレーム毎の各関節の位置データまたは各関節の回転角度を示すデータを含んでいる。関節a(基点)のデータには、ローカル座標系における位置座標であるポジションデータと、ローカル座標系における関節aの回転角度を示すローテーションデータとが含まれている。また、関節b〜qのデータには、ローカル座標系における各関節の回転角度を示すローテーションデータが含まれている。基準キャラクタモーションデータの各関節のローテーションデータと、プレイヤキャラクタデータ(図8参照)の各関節のポジションデータとから、各関節のローカル座標系における位置座標を算出することができる。このようにして関節の位置と回転角度から順に子の関節の位置を算出していく方法は、フォワードキネマティクス技術として周知なので、詳細な説明を省略する。
【0095】
なお、基準キャラクタモーションデータがすべてのフレームのデータを備えていなくてもよく、キーフレームのデータのみを備えておいて、線形補間やスプライン補間などで間のフレームのデータを補間するようにしてもよい。また、基準キャラクタモーションデータのうちの各関節のローテーションデータが本発明の「基準モーションデータ」に対応するものであり、基準キャラクタモーションデータのうちの関節a(基点)のポジションデータが本発明の「基準位置データ」に対応するものである。
【0096】
図10は、ゲーム装置1の例えば制御部111で行われる、プレイヤキャラクタのモーション再生のためのスケルトンデータを生成するための処理(以下では、「スケルトンデータ生成処理」とする。)を説明するためのフローチャートである。
【0097】
スケルトンデータ生成処理は、フレーム毎に実施される。まず、実行される動作に対応するモーションデータの該当するフレームのデータ(例えば、図9に示すモーション1のフレーム1の処理の場合、ポジションデータα1、ローテーションデータa1、およびローテーションデータb1〜q1)と、プレイヤキャラクタデータ(図8参照)とが、CPU111aによってRAM111cから読み出されて、描画処理部112に入力される(S1)。次に、入力されたデータからスケルトンデータが生成される(S2)。
【0098】
図11は、スケルトンデータの一例を説明するための図である。
【0099】
スケルトンデータは、各関節の位置データおよび回転角度を示すデータを含んでいる。関節a(基点)のデータには、ポジションデータが含まれている。関節aのポジションデータは、ローカル座標系における関節aの位置座標であり、基準キャラクタモーションデータの関節aのポジションデータと脚部長比率Tとから算出される。具体的には、基準キャラクタモーションデータの関節aのポジションデータの各座標成分に脚部長比率Tを乗算したものが、スケルトンデータの関節aのポジションデータの各座標成分となる。
【0100】
例えば、図9に示すモーション1のフレーム1の処理の場合、スケルトンデータの関節aのポジションデータは、ポジションデータα1が(Xα1,Yα1,Zα1)の場合、(Xα1・T,Yα1・T,Zα1・T)となる。
【0101】
ローカル座標系の鉛直方向を示すY座標の値が基準キャラクタモーションデータにおける値に脚部長比率Tを乗じた値となっているので、関節aの高さ位置がプレイヤキャラクタの脚の長さに応じた位置となっている。これにより、プレイヤキャラクタの足が適切に地面に接するようになる。
【0102】
図12は、プレイヤキャラクタの足が適切に地面に接することを説明するための図であり、プレイヤキャラクタの関節aの位置座標を示している。
【0103】
基準キャラクタモーションデータは基準キャラクタSを基準に設定されたものなので、基準キャラクタSの足が適切に接地するように、基準キャラクタモーションデータの関節aの高さ位置(ローカル座標系におけるY座標)が設定されている。したがって、同図に示すように、基準キャラクタSの関節aのY座標Yα1は、基準キャラクタSの脚の長さに対応した値となっている。また、脚の長いプレイヤキャラクタP1の関節aのY座標は、基準キャラクタモーションデータの関節aのポジションデータのY座標Yα1に脚部長比率Tを乗算したYα1・Tとなり、関節aの高さ位置はプレイヤキャラクタP1の脚の長さに対応した位置となっている。したがって、プレイヤキャラクタP1の足が適切に地面に接するようになる。
【0104】
また、ローカル座標系の水平面を示すXZ平面上の座標(X座標およびZ座標)も基準キャラクタモーションデータにおける値に脚部長比率Tを乗じた値となるので、関節aの移動距離も脚部長比率Tに比例した距離となる。
【0105】
図13は、プレイヤキャラクタの移動距離を説明するための図であり、プレイヤキャラクタの関節aの位置座標を示している。同図においては、プレイヤキャラクタがX軸に沿って走っているモーションについて説明している。なお、同図はZ座標の正の方向から見た場合を示しており、以下の説明ではZ座標成分の記載を省略して説明する。
【0106】
同図(a)は、基準キャラクタSの場合を示しており、フレームK1における基準キャラクタS(K1)とフレームK2における基準キャラクタS(K2)とを表示している。フレームK1における関節aのポジションデータを(Xk1,Yk1)、フレームK2における関節aのポジションデータを(Xk2,Yk2)とすると、フレームK1からフレームK2までの関節aのX軸上の移動距離はD=Xk2−Xk1となる。
【0107】
同図(b)は、脚の長いプレイヤキャラクタP1の場合を示しており、フレームK1におけるプレイヤキャラクタP1(K1)とフレームK2におけるプレイヤキャラクタP1(K2)とを表示している。フレームK1およびK2における関節aのポジションデータは、同図(a)の説明と共通しており、(Xk1,Yk1)および(Xk2,Yk2)となる。このとき、プレイヤキャラクタP1(K1)の関節aの位置座標(スケルトンデータとして算出された関節aのポジションデータ)は(Xk1・T,Yk1・T)となり、プレイヤキャラクタP1(K2)の関節aの位置座標は(Xk2・T,Yk2・T)となる。したがって、フレームK1からフレームK2までの関節aのX軸上の移動距離はD’=Xk2・T−Xk1・T=(Xk2−Xk1)・T=D・Tとなる。
【0108】
なお、基準キャラクタモーションデータの関節aのポジションデータの各座標成分に脚部長比率Tを乗算したものをスケルトンデータの関節aのポジションデータの各座標成分としているので、関節aがXZ平面上を移動する場合に限らず、Y軸上を移動する場合(例えば、プレイヤキャラクタがジャンプした場合など)でも同様に、移動距離が脚部長比率Tに比例した距離となる。
【0109】
図11に戻って、関節b〜qのデータには、ポジションデータおよびリンクデータが含まれている。関節b〜qのポジションデータは、ローカル座標系における、親である関節の位置を基準とした相対位置を示すデータであり、プレイヤキャラクタデータの関節b〜qのポジションデータと基準キャラクタモーションデータの関節b〜qのローテーションデータとからフォワードキネマティクス技術を用いて算出される。スケルトンデータの関節b〜qのリンクデータは、プレイヤキャラクタデータの関節b〜qのリンクデータを用いる。
【0110】
図10に戻って、ステップS2で生成されたスケルトンデータの座標変換が行われ(S3)、スケルトンデータ生成処理は終了される。当該座標変換は、ローカル座標系の位置データをワールド座標系の位置データに変換するものである。これにより、ローカル座標系におけるデータであるスケルトンデータが、ワールド座標系のデータに変換される。なお、ワールド座標系は、三次元仮想ゲーム空間上に設定された固定の座標系であり、三次元仮想ゲーム空間上での位置や向きを表すために用いられる。ステップS3の座標変換では、プレイヤキャラクタの「現在位置データ」および「現在向きデータ」が用いられる。
【0111】
「現在位置データ」および「現在向きデータ」は、それぞれ、ワールド座標系におけるプレイヤキャラクタの位置および向き(正確には、プレイヤキャラクタに設定されているローカル座標系の原点の位置およびローカル座標系の向き)を示すデータであり、RAM111cに記録されている。「現在位置データ」および「現在向きデータ」は、プレイヤキャラクタが三次元仮想ゲーム空間上を移動することで更新される。例えば、プレイヤキャラクタが走って移動する場合、「現在位置データ」および「現在向きデータ」に基づくローカル座標系を基準として走るモーションが実行される。当該走るモーションが終了したとき(最後のフレームが処理されたとき)のプレイヤキャラクタのワールド座標系における位置および向きに基づいて、「現在位置データ」および「現在向きデータ」が更新される。プレイヤキャラクタが走って移動している間、走るモーションの実行と「現在位置データ」および「現在向きデータ」の更新とが繰り返される。
【0112】
描画処理部112は、最終的に、ワールド座標系のデータに変換されたスケルトンデータと、同様にワールド座標系のデータに変換された画像データなどを用いて、ゲーム画像のデータを作成する。フレーム毎に作成されたゲーム画像のデータが、映像信号としてモニタ13に出力されて、プレイヤキャラクタの動作の映像がモニタ13に表示される。
【0113】
本実施形態によると、基準キャラクタモーションデータの関節aのポジションデータをプレイヤキャラクタの脚部長比率に応じて変化させたものが、スケルトンデータの関節aのポジションデータに用いられる。したがって、関節aの移動距離が脚部長比率に応じた距離となる。これにより、プレイヤキャラクタの移動距離が脚の長さに応じた距離となるので、基準キャラクタとは脚の長さの異なるプレイヤキャラクタに共通の基準キャラクタモーションデータを用いた場合でも、プレイヤキャラクタの移動動作が不自然な映像となることを抑制することができる。
【0114】
また、本実施形態によると、プレイヤキャラクタの左右の股関節の間隔を脚部長比率に応じて変化させる。したがって、プレイヤキャラクタの歩幅を移動距離に近付けることができるので、プレイヤキャラクタの移動動作がより自然な映像となる。
【0115】
なお、上記実施形態では、プレイヤキャラクタの大腿と下腿とを同じ割合で変化させた場合について説明したが、それぞれ個別に変化させた場合(例えば、大腿を2倍にして、下腿を半分にするなど)にも、本発明を適用することができる。
【0116】
上記実施形態では、プレイヤキャラクタの左右の股関節の間隔を脚部長比率に応じて自動的に変更する場合について説明したが、これに限られない。自動的に変更しないようにして、プレイヤが編集処理で変更できるようにしてもよい。この場合、脚部長に腰関節から股関節までの長さも加えるようにしてもよい。
【0117】
上記実施形態では、脚部長を左大腿の長さ(左股関節から左膝までの長さ)と左下腿の長さ(左膝から左足首までの長さ)とを加算した長さとしているが、これに限られない。例えば、右大腿の長さと右下腿の長さとを加算した長さとしてもよい。また、キャラクタが標準姿勢を取ったときの股関節から足首までの長さとしたり、腰関節から足首までの長さとしてもよいし、大腿のみの長さとしたり下腿のみの長さとしてもよい。また、関節間の距離に限定されず、例えば、キャラクタが標準姿勢を取ったときのおしりから足の裏までの距離としてもよい。
【0118】
上記実施形態では、基点(関節a)の位置座標の各要素に脚部長比率を乗算することでプレイヤキャラクタの位置を変化させて移動距離を変化させるようにしているが、これに限られない。例えば、基準となる移動距離や移動量、移動速度などをあらかじめ設定しておいてキャラクタの移動動作のモーションデータを当該設定された移動距離などに基づいて再生するように設定しておき、脚の長さが異なるキャラクタにこのモーションデータを用いる場合に、設定された移動距離などに脚部長比率を乗算して算出された値に基づいてキャラクタの移動動作を再生するようにしてもよい。この場合、あらかじめ設定された「基準となる移動距離や移動量、移動速度など」が、本発明の「基準位置データ」に対応するものである。
【0119】
例えば、基準キャラクタモーションデータ(図9参照)のポジションデータα1〜αMに、基点(関節a)の位置座標に代えて移動量が記録されている場合、このモーションデータを用いて脚の長さが異なるプレイヤキャラクタの移動動作を再生するきは、記録されている移動量に脚部長比率を乗算して算出された値を移動量として用いて、当該プレイヤキャラクタの移動動作を再生するようにすればよい。また、基点(関節a)の位置座標を用いずに、基準キャラクタモーションデータとは別に設定された基準キャラクタの一歩当たりの移動距離を用いる場合は、設定されている移動距離に脚部長比率を乗算して算出された値をプレイヤキャラクタの一歩当たりの移動距離として用いるようにすればよい。具体的には、脚部長比率を乗算して算出された一歩当たりの移動距離から1フレーム当たりの移動距離を算出した値を用いる。また、基点(関節a)の位置座標を用いずに、基準キャラクタモーションデータとは別に設定された基準キャラクタの移動速度を用いる場合は、脚部長比率を乗算して算出された移動速度から1フレーム当たりの移動距離を算出した値を用いる。
【0120】
上記実施形態では、編集されたプレイヤキャラクタに基準キャラクタのモーションデータを用いる場合について説明したが、これに限られない。例えば、脚の長さの異なるキャラクタ(プレイヤキャラクタ、敵キャラクタ、その他のキャラクタを含む。)に共通のモーションデータを用いる場合にも、本発明を適用することができる。
【0121】
上記実施形態では、プレイヤキャラクタが走って移動する場合について説明したが、これに限られず、歩いて移動する場合や、ジャンプして移動する場合にも本発明を適用することができる。また、水平方向の移動に限定されず、鉛直方向への移動を含む移動、例えば、坂道や階段を上ったり下ったりする場合や、はしごや綱を上ったり下ったりする場合、ジャンプをする場合などにも、本発明を適用することができる。
【0122】
上記実施形態では、アクションゲームを例に説明したが、これに限られない。例えば、スポーツゲーム、RPG(ロールプレイングゲーム)、シューティングゲーム、格闘ゲーム、アドベンチャーゲームなどの様々なジャンルのゲームにおいても、本発明を適用することができる。また、本発明は、複数のプレイヤの操作するキャラクタ若しくはCPUの制御するキャラクタがチームを組んで協同して敵キャラクタと対戦するようなゲームや、敵キャラクタとしての他のプレイヤの操作するキャラクタと対戦するようなゲームにも適用することができる。
【0123】
上記実施形態では、家庭用ゲーム装置でゲームを実施する場合について説明したが、これに限られない。本発明は、例えば、アーケードゲーム装置、携帯型ゲーム装置、および、ゲームソフトが搭載されているパーソナルコンピュータなどでゲームを実施する場合にも適用することができる。
【0124】
上記実施形態では、本発明をゲームプログラムに適用した場合について説明したが、ゲーム以外のプログラムに適用してもよい。本発明は、モーションデータに基づいてキャラクタなどの動作を表示するあらゆるプログラムに適用することができる。
【0125】
本発明に係るプログラム、当該プログラムを記録した記録媒体、および、当該プログラムを実行するコンピュータは、上述した実施形態に限定されるものではない。本発明に係るプログラム、当該プログラムを記録した記録媒体、および、当該プログラムを実行するコンピュータの具体的な構成は、種々に設計変更自在である。
【符号の説明】
【0126】
1 ゲーム装置
11 本体
111 制御部
111a CPU(基準キャラクタ情報読出手段、第2キャラクタ情報読出手段、キャラクタ制御手段、股関節調整手段)
111b ROM
111c RAM(記憶手段)
112 描画処理部
113 音声処理部
114 ディスクドライブユニット
115 メモリカード接続ユニット
116 I/Oインターフェース部
117 通信処理部
118 信号送受信部
12 操作コントローラ
13 モニタ
14 ディスク
15 メモリカード
16 ネットワークアダプタ
2 ネットワーク回線

【特許請求の範囲】
【請求項1】
移動を伴う所定の動作を行っているキャラクタの画像を表示装置に表示する画像処理装置のコンピュータで実行されるプログラムであって、
前記コンピュータを、
少なくとも下半身が複数の関節による連結構造を有する二足歩行モデルの第1キャラクタである基準キャラクタに関し、前記複数の関節間の距離を特定するための基準キャラクタデータと、前記所定の動作を行わせるための前記複数の関節間の相対的な位置関係を特定する基準モーションデータと、前記所定の動作における基準キャラクタの位置を特定するための基準位置データとを、記憶手段から読み出す基準キャラクタ情報読出手段、
少なくとも下半身の複数の関節による連結構造が前記基準キャラクタと等しい二足歩行モデルの第2キャラクタであって、1以上の第2キャラクタのそれぞれに関して前記複数の関節間の距離を特定するための第2キャラクタデータを、記憶手段から読み出す第2キャラクタ情報読出手段、
前記第2キャラクタ情報読出手段によって読み出された前記第2キャラクタデータに加え、前記基準キャラクタ情報読出手段によって読み出された前記基準キャラクタデータ、前記基準モーションデータおよび前記基準位置データに基づいて、前記第2キャラクタに移動を伴う前記所定の動作を行わせるキャラクタ制御手段、
として機能させ、
前記キャラクタ制御手段は、
前記基準キャラクタデータおよび前記第2キャラクタデータに基づいて、前記基準キャラクタと前記第2キャラクタとの下半身に関する長さの比率を算出し、
該比率および前記基準位置データに基づいて該第2キャラクタの前記所定の動作時の移動位置を算出する、
ことを特徴とするプログラム。
【請求項2】
前記基準位置データは基準キャラクタの位置を特定するための座標であって、
前記キャラクタ制御手段は、前記基準位置データの座標の各成分にそれぞれ前記比率を乗算して算出したものを、前記第2キャラクタの位置を特定するための座標の各要素とする、
請求項1に記載のプログラム。
【請求項3】
前記下半身に関する長さは、大腿の長さと下腿の長さとを加算した長さである、請求項1または2に記載のプログラム。
【請求項4】
前記コンピュータを、
前記第2キャラクタの左右の股関節の間隔を、前記基準キャラクタの対応する間隔に前記比率を乗算したものに調整する股関節調整手段としてさらに機能させる、
請求項1ないし3のいずれかに記載のプログラム。
【請求項5】
請求項1ないし4のいずれかに記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項6】
請求項1ないし4のいずれかに記載のプログラムを記憶したプログラム記憶手段と、
前記プログラム記憶手段に記憶されたプログラムを実行するコンピュータと、
を備えた画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−8693(P2012−8693A)
【公開日】平成24年1月12日(2012.1.12)
【国際特許分類】
【出願番号】特願2010−142504(P2010−142504)
【出願日】平成22年6月23日(2010.6.23)
【出願人】(000129149)株式会社カプコン (192)
【Fターム(参考)】