ゲーム装置、ゲーム装置の制御方法及びプログラム
【課題】第1キャラクタオブジェクトが第2キャラクタオブジェクトの衣服オブジェクトを掴んで引っ張る様子を比較的簡易な処理で表現できるようになるゲーム装置を提供すること。
【解決手段】本発明では、第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向が取得される。そして、その取得された方向に基づいて、衣服オブジェクトの少なくとも一部の頂点の位置が変化される(S205)。また、その取得された方向に基づいて、第1キャラクタオブジェクトの部位のうち、衣服オブジェクトを引っ張るために用いられる所定部位の位置が変化される(S206)。
【解決手段】本発明では、第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向が取得される。そして、その取得された方向に基づいて、衣服オブジェクトの少なくとも一部の頂点の位置が変化される(S205)。また、その取得された方向に基づいて、第1キャラクタオブジェクトの部位のうち、衣服オブジェクトを引っ張るために用いられる所定部位の位置が変化される(S206)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はゲーム装置、ゲーム装置の制御方法及びプログラムに関する。
【背景技術】
【0002】
仮想3次元空間を所与の視点から見た様子を表すゲーム画面を表示するゲーム装置が知られている。例えば、サッカー選手を表す複数の選手オブジェクトが配置された仮想3次元空間を所与の視点から見た様子を表すゲーム画面を表示することによって、サッカーゲームを提供するゲーム装置が知られている。
【特許文献1】特開2005−342120号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
ところで、現実のサッカー等の試合では、他の選手のプレイを妨害するために、選手が他の選手のユニフォームを掴んで引っ張ることがある。このため、例えば、上記のサッカーゲームにおいても、選手オブジェクトが他の選手オブジェクトのユニフォームを掴んで引っ張る様子を表現できれば、サッカーゲームのリアリティを向上することができる。また、選手オブジェクトが他の選手オブジェクトのユニフォームを掴んで引っ張る様子を表現するにあたっては、その処理負荷が重くならないように図る必要がある。
【0004】
本発明は上記課題に鑑みてなされたものであって、その目的は、第1キャラクタオブジェクトが第2キャラクタオブジェクトの衣服オブジェクトを掴んで引っ張る様子を比較的簡易な処理で表現できるようになるゲーム装置、ゲーム装置の制御方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明に係るゲーム装置は、仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置において、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得手段と、前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向に基づいて変化させる衣服オブジェクト制御手段と、前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得手段によって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御手段と、を含むことを特徴とする。
【0006】
また、本発明に係るゲーム装置の制御方法は、仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置の制御方法において、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得ステップと、前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得ステップによって取得された方向に基づいて変化させる衣服オブジェクト制御ステップと、前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得ステップによって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御ステップと、を含むことを特徴とする。
【0007】
また、本発明に係るプログラムは、仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置として、例えば家庭用ゲーム機、携帯用ゲーム機、携帯電話機、携帯情報端末(PDA)又はパーソナルコンピュータ等のコンピュータを機能させるためのプログラムであって、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得手段、前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向に基づいて変化させる衣服オブジェクト制御手段、及び、前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得手段によって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御手段、として前記コンピュータを機能させるためのプログラムである。
【0008】
また、本発明に係る情報記憶媒体は、上記プログラムを記録したコンピュータ読み取り可能な情報記憶媒体である。また、本発明に係るプログラム配信装置は、上記プログラムを記録した情報記憶媒体を備え、当該情報記憶媒体から上記プログラムを読み出し、配信するプログラム配信装置である。また、本発明に係るプログラム配信方法は、上記プログラムを記録した情報記憶媒体から上記プログラムを読み出し、配信するプログラム配信方法である。
【0009】
本発明は、仮想3次元空間に配置された第1キャラクタオブジェクトが、第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置に関するものである。本発明では、第2キャラクタオブジェクトの位置から第1キャラクタオブジェクトの位置への方向が取得される。そして、その取得された方向に基づいて、衣服オブジェクトの少なくとも一部の頂点の位置が変化する。また、その取得された方向に基づいて、第1キャラクタオブジェクトの部位のうちの、衣服オブジェクトを引っ張るために用いられる所定部位の位置が変化する。本発明によれば、第1キャラクタオブジェクトが第2キャラクタオブジェクトの衣服オブジェクトを掴んで引っ張る様子を比較的簡易な処理で表現できるようになる。
【0010】
また、本発明の一態様では、前記衣服オブジェクトの前記少なくとも一部の頂点は、前記仮想3次元空間に設定される基準点に従動し、前記衣服オブジェクト制御手段は、前記基準点の位置を前記方向取得手段によって取得された方向に基づいて変化させるようにしてもよい。
【0011】
また、本発明の一態様では、前記第1キャラクタオブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置に基づいて、前記所定部位の位置を変化させるようにしてもよい。
【0012】
また、本発明の一態様では、前記第2キャラクタオブジェクトの位置と前記第1キャラクタオブジェクトの位置との間の距離を取得する距離取得手段を含み、前記衣服オブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向と、前記距離取得手段によって取得された距離と、に基づいて変化させるようにしてもよい。
【0013】
また、本発明の一態様では、前記衣服オブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向と、前記距離取得手段によって取得された距離に係数を乗じることによって得られる距離と、に基づいて変化させ、前記衣服オブジェクト制御手段は、前記係数を時間経過に伴って変化させる手段を含むようにしてもよい。
【0014】
また、本発明の一態様では、前記第1キャラクタオブジェクトが前記衣服オブジェクトを引っ張る際の前記所定部位の基本動作を示すモーションデータを記憶するモーションデータ記憶手段と、前記モーションデータに基づいて特定される前記第1キャラクタオブジェクトの前記所定部位の位置を取得する所定部位位置手段と、を含み、前記距離取得手段は、前記第2キャラクタオブジェクトの位置と、前記第1キャラクタオブジェクトの前記所定部位の位置と、の間の距離を取得するようにしてもよい。
【0015】
また、本発明の一態様では、前記方向取得手段は、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの前記所定部位の位置への方向を取得するようにしてもよい。
【発明を実施するための最良の形態】
【0016】
以下、本発明の実施形態の一例について図面に基づき詳細に説明する。本発明の実施形態に係るゲーム装置は、例えば家庭用ゲーム機、携帯用ゲーム機、携帯電話機、携帯情報端末(PDA)又はパーソナルコンピュータ等によって実現される。ここでは、本発明の実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
【0017】
図1は、本発明の実施形態に係るゲーム装置の全体構成を示す図である。図1に示すゲーム装置10は、家庭用ゲーム機11、DVD−ROM25、メモリカード28、モニタ18、スピーカ22を含んでいる。DVD−ROM25及びメモリカード28は情報記憶媒体であり、家庭用ゲーム機11に装着される。モニタ18及びスピーカ22は家庭用ゲーム機11に接続される。モニタ18としては例えば家庭用テレビ受像機が用いられる。スピーカ22としては例えば家庭用テレビ受像機に内蔵されたスピーカが用いられる。
【0018】
家庭用ゲーム機11は公知のコンピュータゲームシステムである。家庭用ゲーム機11は、バス12、マイクロプロセッサ14、画像処理部16、音声処理部20、DVD−ROM再生部24、主記憶26、入出力処理部30及びコントローラ32を含んでいる。コントローラ32以外の構成要素は家庭用ゲーム機11の筐体内に収容される。
【0019】
バス12はアドレス及びデータを家庭用ゲーム機11の各部でやり取りするためのものである。マイクロプロセッサ14、画像処理部16、主記憶26及び入出力処理部30は、バス12によって相互データ通信可能に接続される。
【0020】
マイクロプロセッサ14は、図示しないROMに格納されるオペレーティングシステム、DVD−ROM25から読み出されるプログラム及びデータや、メモリカード28から読み出されるデータに基づいて、家庭用ゲーム機11の各部を制御する。主記憶26は、例えばRAMを含んでいる。主記憶26には、DVD−ROM25又はメモリカード28から読み出されたプログラムやデータが必要に応じて書き込まれる。主記憶26はマイクロプロセッサ14の作業用としても用いられる。
【0021】
画像処理部16はVRAMを含んでいる。画像処理部16は、マイクロプロセッサ14から送られる画像データに基づいてVRAM上にゲーム画面を描画する。そして、画像処理部16は、そのゲーム画面をビデオ信号に変換して所定のタイミングでモニタ18に出力する。
【0022】
入出力処理部30は、マイクロプロセッサ14が音声処理部20、DVD−ROM再生部24、メモリカード28及びコントローラ32にアクセスするためのインタフェースである。入出力処理部30には、音声処理部20、DVD−ROM再生部24、メモリカード28及びコントローラ32が接続される。
【0023】
音声処理部20はサウンドバッファを含んでいる。サウンドバッファには、DVD−ROM25から読み出されたゲーム音楽、ゲーム効果音、メッセージ等の各種音声データが記憶される。音声処理部20は、サウンドバッファに記憶された各種音声データを再生してスピーカ22から出力する。
【0024】
DVD−ROM再生部24はマイクロプロセッサ14からの指示に従ってDVD−ROM25に記録されたプログラムを読み取る。なお、ここではプログラムを家庭用ゲーム機11に供給するためにDVD−ROM25を用いることとするが、CD−ROMやROMカード等、他のあらゆる情報記憶媒体を用いるようにしてもよい。また、例えばインターネット等の通信ネットワークを介して遠隔地からプログラムを家庭用ゲーム機11に供給するようにしてもよい。
【0025】
メモリカード28は不揮発性メモリ(例えばEEPROM等)を含んでいる。家庭用ゲーム機11はメモリカード28を装着するためのメモリカードスロットを複数備えている。メモリーカード28には例えばセーブデータなどの各種ゲームデータが記憶される。
【0026】
コントローラ32は、ユーザが各種ゲーム操作の入力をするための汎用操作入力手段である。入出力処理部30は一定周期毎(例えば1/60秒毎)にコントローラ32の各部の状態をスキャンする。そして、入出力処理部30はそのスキャン結果を表す操作信号をバス12を介してマイクロプロセッサ14に渡す。マイクロプロセッサ14はその操作信号に基づいてユーザのゲーム操作を判定する。家庭用ゲーム機11には複数のコントローラ32を接続することが可能である。マイクロプロセッサ14は各コントローラ32から入力される操作信号に基づいてゲーム制御を実行する。
【0027】
上記の構成を備えるゲーム装置10では、DVD−ROM25から読み出されたゲームプログラムが実行されることによって、例えばサッカーゲームが実行される。
【0028】
ゲーム装置10の主記憶26には仮想3次元空間が構築される。図2は仮想3次元空間の一例を示している。図2に示すように、仮想3次元空間40には、サッカーのフィールドを表すフィールドオブジェクト42と、ゴールを表すゴールオブジェクト44と、が配置される。図2では省略されているが、フィールドオブジェクト42上には、ユニフォームを着たサッカー選手を表す選手オブジェクトと、サッカーボールを表すボールオブジェクトと、が配置される。
【0029】
図3は選手オブジェクトの一例を示している。図3に示すように、選手オブジェクト50はユニフォームオブジェクト52を含んでいる。選手オブジェクト50は複数のポリゴンを含んで構成される。ユニフォームオブジェクト52も複数のポリゴンを含んで構成される。
【0030】
選手オブジェクト50の内部にはスケルトン(ボーン及びジョイント)が設定される。図4及び図5は選手オブジェクト50に設定されるスケルトンの一例を示している。図4及び図5に示す例では、頭54、首56、胸58、腰60、左腿62l,右腿62r、左脛64l、右脛64r、左足66l、右足66r、左上腕68l、右上腕68r、左前腕70l、右前腕70r、左手72l、右手72rのスケルトンが選手オブジェクト50に設定されている。
【0031】
これらのスケルトンは、図5に示すような、腰60をルートとする階層構造で管理される。あるスケルトン(ボーン)が回転した場合、そのスケルトンの下の階層のスケルトンも連動する。例えば、右上腕68rが回転した場合、右上腕68rの下の階層のスケルトンである右前腕70rや右手72rが右上腕68rの回転に合わせて動く。また、最下層のスケルトンの位置はそのスケルトンよりも上の階層のスケルトンの状態(回転角度等)によって特定される。例えば、右手72rの位置は右上腕68rや右前腕70r等の回転角度等によって特定される。また、最下層のスケルトンの位置に基づいて、そのスケルトンよりも上の階層のスケルトンの状態(回転角度等)を特定することも可能である(インバースキネマティクス法)。例えば、右手72rの位置に基づいて右上腕68rや右前腕70r等の回転角度を特定することも可能である。
【0032】
選手オブジェクト50に設定されたスケルトン(ボーン)と、選手オブジェクト50を構成するポリゴンの頂点と、は対応づけられている。そして、スケルトン(ボーン)が回転した場合にはそのスケルトンに対応づけられたポリゴンの頂点が従動する。その結果、スケルトンの回転に合わせて、選手オブジェクト50の形状(姿勢)が変化する。
【0033】
また、仮想3次元空間40には仮想カメラ46が配置される。この仮想カメラ46から仮想3次元空間40を見た様子を表すゲーム画面がモニタ18に表示される。
【0034】
主記憶26には、仮想3次元空間40に配置される各選手オブジェクト50の状態(位置、姿勢、移動速度や移動方向等)を示す情報が記憶される。例えば、選手オブジェクト50の姿勢は選手オブジェクト50の各スケルトンの状態(回転角度等)によって特定されるため、主記憶26には、選手オブジェクト50の姿勢を示す情報として、選手オブジェクト50の各スケルトンの状態を示す情報が記憶される。また主記憶26には、ボールオブジェクトの状態(位置、移動速度や移動方向等)や仮想カメラ46の状態(位置、視線方向や画角等)を示す情報も記憶される。主記憶26に記憶されるこれらの情報は所定時間(本実施の形態では1/30秒)ごとに更新される。また、これらの情報に基づいて、ゲーム画面が所定時間(本実施の形態では1/30秒)ごとに更新される。
【0035】
なお本明細書では、主記憶26に記憶される、選手オブジェクト50、ボールオブジェクトや仮想カメラ46の状態を示す情報を更新することを「選手オブジェクト50、ボールオブジェクトや仮想カメラ46の状態を更新する」というように記載する。
【0036】
以下、サッカーゲームにおいて、選手オブジェクト50が敵チームに属する選手オブジェクト50(以下、「敵選手オブジェクト」と記載する。)のユニフォームオブジェクト52を掴んで引っ張る様子を好適に表現するための技術について説明する。
【0037】
ゲーム装置10では、敵選手オブジェクトのユニフォームオブジェクト52を掴む動作(以下、「掴み動作」と記載する。)を開始するための条件を選手オブジェクト50が満足したかが否かが判定される。選手オブジェクト50が掴み動作の開始条件を満足したか否かをマイクロプロセッサ14は下記に説明するようにして判定する。
【0038】
まずマイクロプロセッサ14は、選手オブジェクト50の前方の所定領域に、いずれかの敵選手オブジェクトの掴み対象点が含まれるか否かを判定する。
【0039】
図6は選手オブジェクト50の前方の所定領域について説明するための図である。図6に示すように、選手オブジェクト50の前方の所定領域78は、選手オブジェクト50の正面方向76との間の角度が基準角度θ1以下となる領域であって、かつ、選手オブジェクト50からの距離が基準距離R以下となる領域である。
【0040】
図7は掴み対象点について説明するための図である。図7に示すように、掴み対象点80は各選手オブジェクト50の腰の背中側に設定される。なお、各選手オブジェクト50には複数の掴み対象点80が設定されるようにしてもよい。例えば、各選手オブジェクト50の腰の背中側の左右に2つの掴み対象点80が設定されるようにしてもよい。
【0041】
選手オブジェクト50の前方の所定領域78に、いずれかの敵選手オブジェクトの掴み対象点80が含まれると判定された場合、マイクロプロセッサ14は、その敵選手オブジェクトが選手オブジェクト50に背中を向けているか否かを判定する。図8は、敵選手オブジェクトが選手オブジェクト50に背中を向けているか否かの判定方法について説明するための図である。マイクロプロセッサ14は、選手オブジェクト50の正面方向76と敵選手オブジェクト50eの正面方向76eとの間の角度θ2が基準角度以下であるか否かを判定する。そして、選手オブジェクト50の正面方向76と敵選手オブジェクト50eの正面方向76eとの間の角度θ2が基準角度以下である場合、敵選手オブジェクト50eは選手オブジェクト50に背中を向けているとマイクロプロセッサ14は判断する。一方、選手オブジェクト50の正面方向76と敵選手オブジェクト50eの正面方向76eとの間の角度θ2が基準角度以下でない場合、敵選手オブジェクト50eは選手オブジェクト50に背中を向けていないとマイクロプロセッサ14は判断する。
【0042】
選手オブジェクト50の前方の所定領域78に敵選手オブジェクトの掴み対象点80が含まれ、かつ、その敵選手オブジェクトが選手オブジェクト50に背中を向けている場合、その選手オブジェクト50が掴み動作の開始条件を満足しているとマイクロプロセッサ14は判断する。そして、マイクロプロセッサ14は、その敵選手オブジェクトのユニフォームオブジェクト52を掴む動作をその選手オブジェクト50に開始させる。
【0043】
次に、選手オブジェクト50が敵選手オブジェクトのユニフォームオブジェクト52を掴む様子を表示するために実行される処理について説明する。図9は、選手オブジェクト50が掴み動作の開始条件を満足したと判定された後、所定時間(本実施の形態では1/30秒)ごとに実行される処理を示すフロー図である。マイクロプロセッサ14は図9に示す処理をDVD−ROM25から読み出されたプログラムに従って実行する。
【0044】
なお以下では、掴み動作の開始条件を満足したと判定された選手オブジェクト50、すなわちユニフォームオブジェクト52を掴む選手オブジェクト50のことを「第1選手オブジェクト」と記載する。また、第1選手オブジェクトによってユニフォームオブジェクト52を掴まれる敵選手オブジェクトのことを「第2選手オブジェクト」と記載する。また、第1選手オブジェクト(第1キャラクタオブジェクト)は第2選手オブジェクト(第2キャラクタオブジェクト)のユニフォームオブジェクト52(衣服オブジェクト)を右手で掴みにいくこととして説明する。
【0045】
図9に示す処理は、DVD−ROM25(モーションデータ記憶手段)に記憶されるモーションデータに基づいて実行される。モーションデータは選手オブジェクト50の各種動作を再現するためのデータである。より具体的には、モーションデータは、選手オブジェクト50が各種動作を行う間の各フレームにおける各スケルトンの状態(回転角度等)を示すデータである。選手オブジェクト50が他の選手オブジェクト50のユニフォームオブジェクト52を掴みに行く際の基本動作を再現するためのモーションデータ(以下、「掴み動作のモーションデータ」と記載する。)もDVD−ROM25に記憶されている。
【0046】
なお以下では、掴み動作のモーションデータには、第1フレーム(掴み動作の開始フレーム)から第10フレーム(掴み動作の終了フレーム)の各フレームにおける各スケルトン(右上腕68r、右前腕70rや手72r等)の状態(回転角度等)が定められていることとして説明する。また、1フレームあたりの時間は1/30秒であることとして説明する。
【0047】
図9に示すように、まずマイクロプロセッサ14は変数nの値に1を加算する(S101)。なお、変数nの値は、第1選手オブジェクトが掴み動作を開始する際に0に初期化されている。このため、変数nは、第1選手オブジェクトが掴み動作を開始してからのフレーム数を示す数値となっている。
【0048】
その後、マイクロプロセッサ14は、第1選手オブジェクト以外の選手オブジェクト50、ボールオブジェクトや仮想カメラ46の状態を更新する(S102)。また、マイクロプロセッサ14は第1選手オブジェクトの状態(姿勢を除く)を更新する(S103)。そして、マイクロプロセッサ14は、第1選手オブジェクトの姿勢を更新するための処理(S104〜S106)を実行する。
【0049】
まず、マイクロプロセッサ14は、第nフレームにおける第1選手オブジェクトの右手72rの先端74の原位置を取得する(S104)。すなわち、マイクロプロセッサ14は、第nフレームにおける各スケルトンの状態を掴み動作のモーションデータから読み出す。そして、マイクロプロセッサ14は、第nフレームにおける各スケルトンの状態から特定される右手72rの先端74の位置(原位置)を取得する。
【0050】
また、マイクロプロセッサ14は、S104で取得された、第nフレームにおける第1選手オブジェクトの右手72rの先端74の原位置を補正することによって、第nフレームにおける第1選手オブジェクトの右手72rの先端74の位置(補正位置)を取得する(S105)。
【0051】
第1選手オブジェクトと第2選手オブジェクトとの位置関係はその都度異なる。このため、第1選手オブジェクトの各スケルトン(右上腕68r、右前腕70rや右手72r等)を掴み動作のモーションデータに従って動かしただけでは、第1選手オブジェクトの右手72rの先端74が第2選手オブジェクトの掴み対象点80に到達しない場合がある。そこで、マイクロプロセッサ14は第1選手オブジェクトの右手72rの先端74の位置を補正する。
【0052】
図10は、第1選手オブジェクトの右手72rの先端74の位置の補正方法について説明するための図である。図10において、符号74o−1,74o−2,74o−n,74o−8,74o−9,74o−10は、第1,2,n,8,9,10フレームにおける選手オブジェクト50の右手72rの先端74の原位置をそれぞれ示している。また、符号74−1,74−2,74−n,74−8,74−9,74−10は、第1,2,n,8,9,10のフレームにおける第1選手オブジェクトの右手72rの先端74の補正位置をそれぞれ示している。
【0053】
S105において、マイクロプロセッサ14は、第1選手オブジェクトの右手72rの先端74の補正位置74−nとして、S104で取得された原位置74o−nから第2選手オブジェクトの掴み対象点80までの直線82−nをn:(10−n)に分割する位置を取得する。
【0054】
例えば、変数nが1である場合、第1選手オブジェクトの右手72rの先端74の補正位置74−1として、原位置74o−1から第2選手オブジェクトの掴み対象点80までの直線82−1を1:9に分割する位置が取得される。また例えば、変数nが8である場合、第1選手オブジェクトの右手72rの先端74の補正位置74−8として、原位置74o−8から第2選手オブジェクトの掴み対象点80までの直線82−8を8:2に分割する位置が取得される。そして、変数nが10である場合、第1選手オブジェクトの右手72rの先端74の補正位置74−10として、原位置74o−10から第2選手オブジェクトの掴み対象点80までの直線82−10を10:0に分割する位置、すなわち、第2選手オブジェクトの掴み対象点80の位置が取得される。
【0055】
第1選手オブジェクトの右手72rの先端74の補正位置が取得された後、マイクロプロセッサ14は、第1選手オブジェクトの各スケルトンの状態(回転角度)を更新する(S106)。すなわち、マイクロプロセッサ14は、右手72rの先端74の補正位置に基づいて、右手72rよりも上位の階層のスケルトンである右上腕68rや右前腕70r等の状態を決定する。この処理には公知のインバースキネマティクスアルゴリズムが用いられる。またマイクロプロセッサ14は、例えば走行動作のモーションデータ等に基づいて、第1選手オブジェクトの他のスケルトンの状態も決定する。
【0056】
その後、マイクロプロセッサ14はゲーム画面をVRAM上に生成する(S107)。このとき、マイクロプロセッサ14は選手オブジェクト50を構成するポリゴンを各スケルトンの状態に基づいて変形する。すなわち、マイクロプロセッサ14は選手オブジェクト50を構成するポリゴンの頂点の位置を各スケルトンの状態に基づいて設定する。VRAM上に生成されたゲーム画面は所定のタイミングでモニタ18に出力される。
【0057】
その後、マイクロプロセッサ14は変数nの値が10であるか否かを判定する(S108)。ここで、値「10」は、掴み動作のモーションデータの全フレーム数である。変数nの値が10でない場合、所定時間(本実施の形態では1/30秒)後に、図9に示す処理が再び実行される。一方、変数nの値が10である場合は掴み動作が完了した場合である。この場合、マイクロプロセッサ14は、第2選手オブジェクトのユニフォームオブジェクト52を引っ張る動作(以下、「引っ張り動作」と記載する。)を第1選手オブジェクトに開始させる。この場合、所定時間(本実施の形態では1/30秒)後に、図9に示す処理に代えて、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52を引っ張る様子を表示するための処理(図12参照)が実行される。
【0058】
上記に説明した処理(図9)が所定時間ごとにが繰り返し実行されることによって、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52(掴み対象点80)を掴む様子がゲーム画面に表される。
【0059】
本実施の形態では、第1選手オブジェクトの右手72rの先端74の位置が図10に示す方法によって補正されることによって、掴み動作の完了フレーム(第10フレーム)において第1選手オブジェクトの右手72rの先端74が第2選手オブジェクトの掴み対象点80に到達するようになる。また、第1選手オブジェクトの右手72rの先端74の位置は徐々に補正されるため、第1選手オブジェクトの右手の動きが不自然にならないように図ることが可能になる。
【0060】
なお、選手オブジェクト50の右手72rの先端74の位置は他の方法で補正するようにしてもよい。図11は選手オブジェクト50の手72の先端74の位置の他の補正方法について説明するための図である。図11においても、符号74o−1,74o−2,74o−n,74o−8,74o−9,74o−10は、第1,2,n,8,9,10フレームにおける第1選手オブジェクトの右手72rの先端74の原位置をそれぞれ示している。また、符号74−1,74−2,74−n,74−8,74−9,74−10は、第1,2,n,8,9,10のフレームにおける第1選手オブジェクトの右手72rの先端74の補正位置をそれぞれ示している。
【0061】
この場合、S105において、マイクロプロセッサ14は、原位置74o−nに(n/10)*ΔP1を加算することによって、第1選手オブジェクトの右手72rの先端74の補正位置74−nを取得する。なお、ΔP1は、掴み動作の完了フレーム(第10フレーム)における第1選手オブジェクトの右手72rの先端74の原位置74o−10と、第2選手オブジェクトの掴み対象点80と、の差を示している。
【0062】
例えば、変数nの値が1である場合、原位置74o−1に対して(1/10)*ΔP1を加算することによって、第1選手オブジェクトの右手72rの先端74の補正位置74−1が取得される。また例えば、変数nの値が8である場合、原位置74o−8に対して(8/10)*ΔP1を加算することによって、第1選手オブジェクトの右手72rの先端74の補正位置74−8が取得される。そして、変数nの値が10である場合、原位置74o−10に対して(10/10)*ΔP1を加算することによって、第1選手オブジェクトの右手72rの先端74の補正位置74−10が取得される。すなわち、第2選手オブジェクトの掴み対象点80の位置が補正位置74−10として取得される。
【0063】
このようにしても、掴み動作の完了フレーム(第10フレーム)において第1選手オブジェクトの右手72rの先端74が第2選手オブジェクトの掴み対象点80に到達するようになる。また、第1選手オブジェクトの右手の動きが不自然にならないように図ることが可能になる。
【0064】
ところで、図10に示す補正方法を用いた場合、第1フレームや第2フレームにおける第1選手オブジェクトの右手72rの移動距離が第9フレームや第10フレームにおける第1選手オブジェクトの右手72rの移動距離に比べて大きくなってしまう。この点、図11に示す補正方法を用いれば、そのような移動距離の相違の発生を抑えることが可能になる。その結果として、第1選手オブジェクトの右手の動きの自然さをより向上することが可能になる。
【0065】
次に、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52を引っ張る様子を表示するための処理について説明する。図12は、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52を引っ張る様子を表示するために、所定時間(本実施の形態では1/30秒)ごとに実行される処理を示すフロー図である。マイクロプロセッサ14は図12に示す処理をDVD−ROM25から読み出されるプログラムに従って実行する。
【0066】
図12に示すように、まずマイクロプロセッサ14は変数mの値に1を加算する(S201)。なお、変数mの値は、第1選手オブジェクトが引っ張り動作を開始する際に0に初期化されている。このため、変数mは、第1選手オブジェクトが引っ張り動作を開始してからのフレーム数を示す数値となっている。
【0067】
その後、マイクロプロセッサ14は、第1選手オブジェクト以外の選手オブジェクト50、ボールオブジェクトや仮想カメラ46の状態を更新する(S202)。また、マイクロプロセッサ14は第1選手オブジェクトの状態(姿勢を除く)を更新する(S203)。そして、マイクロプロセッサ14は、第1選手オブジェクトの姿勢を更新するための処理(S204〜S206)を実行する。
【0068】
まずマイクロプロセッサ14は、第2選手オブジェクトの変形制御点(基準点)の位置を決定する(S204)。変形制御点は、ユニフォームオブジェクト52の変形制御の基礎とされる点である。本実施の形態では、各選手オブジェクト50に対して掴み対象点80とともに変形制御点が設定されている。変形制御点には、選手オブジェクト50のユニフォームオブジェクト52を構成するポリゴンの頂点の一部が対応づけられており、変形制御点に対応づけられた頂点は変形制御点に従動する。詳細については後述する(図15及び図16参照)。
【0069】
選手オブジェクト50のユニフォームオブジェクト52が他の選手オブジェクト50に引っ張られていない状態では、選手オブジェクト50の変形制御点の位置は所定の基本位置に設定される。基本位置は例えば掴み対象点80の位置である。一方、選手オブジェクト50のユニフォームオブジェクト52が他の選手オブジェクト50に引っ張られる状態では、選手オブジェクト50の変形制御点の位置は下記に説明するようにして決定される。
【0070】
マイクロプロセッサ14は、第2選手オブジェクトの変形制御点の位置を、第1選手オブジェクトと第2選手オブジェクトとの位置関係に基づいて決定する。図13及び図14は第2選手オブジェクトの変形制御点の位置の決定方法について説明するための図である。
【0071】
まずマイクロプロセッサ14(方向取得手段)は、第2選手オブジェクト50bの位置(例えば足元位置)から、第1選手オブジェクト50aの位置(例えば足元位置)への方向D1を取得する(図13参照)。また、マイクロプロセッサ14(距離取得手段)は、第2選手オブジェクト50bの位置から第1選手オブジェクト50aの位置までの距離L1を取得する(図13参照)。
【0072】
そしてマイクロプロセッサ14(衣服オブジェクト制御手段)は、第2選手オブジェクト50bの変形制御点82の基本位置82a(掴み対象点80)から、方向Dに、距離Lだけ移動した位置に、第2選手オブジェクト50bの変形制御点82の位置を設定する(図14参照)。なお、方向Dは方向D1と平行な方向である。また、距離Lは下記の式(1)によって決定される。
【0073】
L=L1*|sin((m/10)*2π)|・・・(1)
【0074】
上記のように、距離Lは、第2選手オブジェクト50bの位置から第1選手オブジェクト50aの位置までの距離L1に、時間経過に伴って変化する係数(sin((m/10)*2π)の絶対値)を乗じることによって算出される。このため、仮に、第2選手オブジェクト50bの位置から第1選手オブジェクト50aの位置までの距離L1が変化しない状態が一定時間継続したとしても、上記距離Lは時間経過に伴って変化し、その結果として、第2選手オブジェクト50bの変形制御点82の位置も時間経過に伴って変化するようになっている。
【0075】
第2選手オブジェクトの変形制御点82の位置が決定された後、マイクロプロセッサ14(衣服オブジェクト制御手段)は、第2選手オブジェクトの変形制御点82の位置に基づいて、第2選手オブジェクトのユニフォームオブジェクト52を変形する(S205)。
【0076】
図15及び図16は第2選手オブジェクトのユニフォームオブジェクト52の変形について説明するための図である。図15及び図16には、第2選手オブジェクトのユニフォームオブジェクト52の一部が表されている。図15は変形されていない状態のユニフォームオブジェクト52を示している。図16は変形された状態のユニフォームオブジェクト52を示している。図15及び図16における複数の点(符号86)は第2選手オブジェクトのユニフォームオブジェクト52を構成するポリゴンの頂点を示している。また、符号86aは、第2選手オブジェクトのユニフォームオブジェクト52を構成するポリゴンの頂点のうちで、第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)に最も近い頂点(以下、「代表頂点」と記載する。)を示している。
【0077】
マイクロプロセッサ14は、第2選手オブジェクトのユニフォームオブジェクト52の代表頂点86a及びその周辺の頂点86を、第2選手オブジェクトの変形制御点82に従動させる。具体的には、マイクロプロセッサ14は、第2選手オブジェクトの変形制御点82の基本位置82aからS204において決定された変形制御点82の現在位置への方向84と平行に、第2選手オブジェクトのユニフォームオブジェクト52の代表頂点86a及びその周辺の頂点86を移動させる。このとき、頂点86の移動距離はその頂点86と代表頂点86aとの間の距離に基づいて決定される。具体的には、頂点86と代表頂点86aとの間の距離が大きくなるにつれて、その頂点86の移動距離は小さくなるように設定される。
【0078】
なお、代表頂点86a及びその周辺の頂点86は第2選手オブジェクトの胸58や腰60等のスケルトンにも対応づけられている。このため、第2選手オブジェクトが前方に移動することによって、第2選手オブジェクトの胸58や腰60のスケルトンが前方に移動した場合、代表頂点86a及びその周辺の頂点86は、第2選手オブジェクトの移動方向(前方方向)にも引っ張られることになる。このため、代表頂点86a及びその周辺の頂点86の移動距離は、第2選手オブジェクトの変形制御点82の移動と、第2選手オブジェクト自体の移動と、の両方に基づいて決定される。
【0079】
第2選手オブジェクトのユニフォームオブジェクト52の変形処理が完了した後、マイクロプロセッサ14は第1選手オブジェクト50の各スケルトンの状態(回転角度等)を、第2選手オブジェクトのユニフォームオブジェクト52の代表頂点86aの位置に基づいて更新する(S206)。
【0080】
まず、マイクロプロセッサ14は第1選手オブジェクトの右手72rの先端74の位置を、第2選手オブジェクトのユニフォームオブジェクト52の代表頂点86aの位置に設定する。その後、マイクロプロセッサ14は、右手72rの先端74の位置に基づいて、右手72rよりも上位の階層のスケルトンである右上腕68rや右前腕70r等の状態を更新する。この処理には公知のインバースキネマティクスアルゴリズムが用いられる。またマイクロプロセッサ14は、例えば走行動作のモーションデータに基づいて、第1選手オブジェクトの他のスケルトンの状態を更新する。
【0081】
その後、マイクロプロセッサ14はゲーム画面をVRAM上に生成する(S207)。このとき、マイクロプロセッサ14は、選手オブジェクト50を構成するポリゴンを各スケルトンの状態(回転角度)に基づいて変形する。すなわち、マイクロプロセッサ14は選手オブジェクト50を構成するポリゴンの頂点の位置を各スケルトンの状態に基づいて設定する。VRAM上に生成されたゲーム画面は所定のタイミングでモニタ18に出力される。
【0082】
その後、マイクロプロセッサ14は、第1選手オブジェクトと第2選手オブジェクトとの間の距離が所定距離以上であるか否かを判定する(S208)。第1選手オブジェクトと第2選手オブジェクトとの間の距離が所定距離以上である場合、マイクロプロセッサ14は、第2選手オブジェクトが第1選手オブジェクトを振り切ったと判断して、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作を終了させる(S210)。
【0083】
一方、第1選手オブジェクトと第2選手オブジェクトとの間の距離が所定距離未満である場合、マイクロプロセッサ14は変数mの値が10であるか否かを判定する(S209)。変数mの値が10である場合、マイクロプロセッサ14は第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作を終了させる(S210)。このように、本実施の形態では、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作は1/3(=10/30)秒間継続したら終了するようになっている。なお、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作の継続時間はもっと長くしてもよい。
【0084】
上記に説明した処理(図12)が所定時間ごとに繰り返し実行されることによって、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクトを引っ張る様子と、その引っ張り動作によって第2選手オブジェクトのユニフォームオブジェクト52が変形する様子と、がゲーム画面に表される。
【0085】
第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子を表示することは、物理シミュレーション演算を行うことによって実現することも考えられる。しかしながら、その場合には処理が複雑になり、処理負荷が重くなってしまう。この点、本実施の形態によれば、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子を表示することが、第2選手オブジェクトの変形基準点82の位置を第1選手オブジェクトと第2選手オブジェクトとの位置関係(上記方向D1及び距離L1)に基づいて変化させるという比較的簡易な処理によって実現できるようになる。
【0086】
また本実施の形態では、仮に、第2選手オブジェクトの位置から第1選手オブジェクトの位置までの距離L1(図13参照)が変化しない状態が一定時間継続したとしても、第2選手オブジェクトの変形制御点82の位置が変化するようになっている。このため、仮に、第2選手オブジェクトの位置から第1選手オブジェクトの位置までの距離L1(図13参照)が変化しない状態が一定時間継続したとしても、第2選手オブジェクトのユニフォームオブジェクト52の変形の程度が変化するようになっている。その結果として、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子のリアリティが向上されている。
【0087】
また本実施の形態では、第2選手オブジェクトのユニフォームオブジェクト52が、変形制御点82の位置と、第2選手オブジェクトの胸58や腰60等のスケルトンの回転と、を考慮して変形された後、そのユニフォームオブジェクト52の変形具合に合わせて、第1選手オブジェクトの右手72rの位置が決定される。そして、右手72rの位置に基づいて、第1選手オブジェクトの姿勢(各スケルトンの状態)が決定される。本実施の形態によれば、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子を表現する場合に、第2選手オブジェクト自体の動き(移動等)も考慮して、第2選手オブジェクトのユニフォームオブジェクト52が変形する様子を表現することが可能になる。その結果として、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子のリアリティが向上される。
【0088】
なお、第2選手オブジェクトの変形制御点82(上記方向D及び距離L)は、他の選手オブジェクト50のユニフォームオブジェクト52を掴んだ右手を選手オブジェクト50が引く動作のモーションデータを用いて決定されるようにしてもよい。以下、この決定方法について説明する。なお以下では、上記のモーションデータには、第1フレーム(動作開始フレーム)から第10フレーム(動作完了フレーム)までの各フレームにおける選手オブジェクト50の各スケルトンの状態(回転角度等)が定められていることとして説明する。
【0089】
この場合、S204において、まずマイクロプロセッサ14は、第mフレームにおける各スケルトンの状態を上記のモーションデータから読み出す。そして、マイクロプロセッサ14は、第mフレームにおける各スケルトンの状態から特定される第1選手オブジェクトの右手72r(所定部位)の先端74の位置(原位置)を取得する。その後、マイクロプロセッサ14(所定部位位置取得手段)は、その取得された原位置を下記に説明する方法によって補正してなる位置(補正位置)を取得する。
【0090】
図17は、取得された原位置の補正方法について説明するための図である。図17において、符号74o−1,74o−2,74o−3,74o−m,74o−9,74o−10は、第1,2,3,m,9,10フレームにおける原位置をそれぞれ示している。また、符号74−1,74−2,74−3,74−m,74−9,74−10は、第1,2,3,m,9,10のフレームにおける補正位置をそれぞれ示している。
【0091】
マイクロプロセッサ14は、補正位置74−mとして、原位置74o−mから第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)までの直線82−mを(10−m+1):(m−1)に分割する位置を取得する。
【0092】
例えば、変数mが2である場合、補正位置74−2として、原位置74o−2から第2選手オブジェクトの変形制御点82の基本位置82aまでの直線82−2を9:1に分割する位置が取得される。また例えば、変数nが9である場合、補正位置74−9として、原位置74o−9から第2選手オブジェクトの変形制御点82の基本位置82aまでの直線82−9を2:8に分割する位置が取得される。
【0093】
図18は、取得された原位置の他の補正方法について説明するための図である。図18においても、図17と同様に、符号74o−1,74o−2,74o−3,74o−m,74o−9,74o−10は、第1,2,3,m,9,10フレームにおける原位置をそれぞれ示している。また、符号74−1,74−2,74−3,74−m,74−9,74−10は、第1,2,3,n,9,10のフレームにおける補正位置をそれぞれ示している。
【0094】
この場合、マイクロプロセッサ14は、原位置74o−mに対して((10−m+1)/10)*ΔP2を加算することによって補正位置74−mを取得する。なお、ΔP2は、第1フレームにおける原位置74o−1と、第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)と、の差を示している。
【0095】
例えば、変数mが2である場合、原位置74o−2に対して(9/10)*ΔP2を加算することによって補正位置74−2が取得される。また例えば、変数nが9である場合、原位置74o−9に対して(2/10)*ΔP2を加算することによって補正位置74−9が取得される。
【0096】
図17又は図18に示す方法によって補正位置74−mが取得された後、マイクロプロセッサ14は、その補正位置74−mに基づいて、第2選手オブジェクトの変形制御点82の位置を決定する。
【0097】
図19は、第2選手オブジェクトの変形制御点82の位置の決定方法について説明するための図である。まずマイクロプロセッサ14(方向取得手段)は、第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)から補正位置74−mへの方向D2を取得する。またマイクロプロセッサ14(距離取得手段)は、第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)から補正位置74−mまでの距離L2を取得する。
【0098】
そしてマイクロプロセッサ14(衣服オブジェクト制御手段)は、第2選手オブジェクト50bの変形制御点82の基本位置82a(掴み対象点80)から、方向Dに、距離Lだけ移動した位置に、第2選手オブジェクトの変形制御点82の位置を設定する(図14参照)。ここで、方向Dは方向D2と平行な方向である。また、距離Lは距離L2である。
【0099】
このようにすれば、第1選手オブジェクトがユニフォームオブジェクト52を引っ張る際の右手の動きを考慮して、第2選手オブジェクトの変形制御点82の位置を決定することが可能になる。その結果、第1選手オブジェクトがユニフォームオブジェクト52を引っ張る際の右手の動きを考慮して、第2選手オブジェクトのユニフォームオブジェクト52を変形できるようになる。また、このようにしても、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子を表示することが、比較的簡易な処理によって実現できるようになる。
【0100】
なお、上記方向D(図14参照)は上記方向D1(図13参照)に平行な方向とし、上記距離L(図14参照)は上記距離L2(図19参照)として、第2選手オブジェクトの変形制御点82の位置を決定するようにしてもよい。
【0101】
このようにしても、第1選手オブジェクトがユニフォームオブジェクト52を引っ張る際の右手の動きを考慮して、第2選手オブジェクトの変形制御点82の位置を決定することが可能になる。その結果、第1選手オブジェクトがユニフォームオブジェクト52を引っ張る際の右手の動きを考慮して、第2選手オブジェクトのユニフォームオブジェクト52を変形できるようになる。
【0102】
また、変形制御点82は、例えば、第1フレームにおける補正位置74−1に基づいて決定された位置と、第3フレームにおける補正位置74−3に基づいて決定された位置と、の間を往復するようにしてもよい。すなわち、変形制御点82は、補正位置74−1に基づいて決定された位置から、補正位置74−2に基づいて決定された位置を経て、補正位置74−3に基づいて決定された位置まで移動した場合、補正位置74−2に基づいて決定された位置を経て、補正位置74−1に基づいて決定された位置に戻るようにしてもよい。また、変形制御点82は、補正位置74−1に基づいて決定された位置に戻った場合、補正位置74−2に基づいて決定された位置を経て、補正位置74−3に基づいて決定された位置まで再び移動するようにしてもよい。
【0103】
このようにすれば、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作を継続させることが可能になる。例えば、第1選手オブジェクトがユーザの操作対象の選手オブジェクト50である場合には、ユーザが所定操作(例えばボタンの連打)を継続する間、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作を継続させることも可能になる。
【0104】
以上説明したゲーム装置10によれば、選手オブジェクト50が敵チームに属する選手オブジェクト50のユニフォームオブジェクト52を掴んで引っ張る様子を比較的簡易な処理で表現できるようになる。
【0105】
なお、本発明は以上に説明した実施の形態に限定されるものではない。
【0106】
例えば、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52を引っ張った場合、第2選手オブジェクトの能力を示すパラメータの値が、第2選手オブジェクトの能力が低くなるように補正されるようにしてもよい。例えば、第2選手オブジェクトの移動速度が遅くなるようにしてもよい。
【0107】
また例えば、ゲーム装置10で実行されるサッカーゲーム以外のスポーツゲームであってもよい。本発明は、例えば、選手同士の接触プレイが発生し得るバスケットボール等のゲームに適用することができる。また、ゲーム装置10で実行されるゲームは、スポーツゲーム以外のゲームであってもよい。
【0108】
また例えば、以上の説明では、プログラムを情報記憶媒体たるDVD−ROM25から家庭用ゲーム機11に供給するようにしたが、通信ネットワークを介してプログラムを家庭等に配信するようにしてもよい。図20は、通信ネットワークを用いたプログラム配信システムの全体構成を示す図である。図20に基づいて本発明に係るプログラム配信方法を説明する。図20に示すように、このプログラム配信システム100は、ゲームデータベース102、サーバ104、通信ネットワーク106、パソコン108、家庭用ゲーム機110、PDA(携帯情報端末)112を含んでいる。このうち、ゲームデータベース102とサーバ104とによりプログラム配信装置114が構成される。通信ネットワーク106は、例えばインターネットやケーブルテレビネットワークを含んで構成されている。このシステムでは、ゲームデータベース(情報記憶媒体)102に、DVD−ROM25の記憶内容と同様のプログラムが記憶されている。そして、パソコン108、家庭用ゲーム機110又はPDA112等を用いて需要者がゲーム配信要求をすることにより、それが通信ネットワーク106を介してサーバ104に伝えられる。そして、サーバ104はゲーム配信要求に応じてゲームデータベース102からプログラムを読み出し、それをパソコン108、家庭用ゲーム機110、PDA112等、ゲーム配信要求元に送信する。ここではゲーム配信要求に応じてゲーム配信するようにしたが、サーバ104から一方的に送信するようにしてもよい。また、必ずしも一度にゲームの実現に必要な全てのプログラムを配信(一括配信)する必要はなく、ゲームの局面に応じて必要な部分を配信(分割配信)するようにしてもよい。このように通信ネットワーク106を介してゲーム配信するようにすれば、プログラムを需要者は容易に入手することができるようになる。
【図面の簡単な説明】
【0109】
【図1】本実施の形態に係るゲーム装置のハードウェア構成を示す図である。
【図2】仮想3次元空間の一例を示す図である。
【図3】選手オブジェクトの一例を示す図である。
【図4】選手オブジェクトに設定されるスケルトンの一例を示す図である。
【図5】選手オブジェクトに設定されるスケルトンの階層構造の一例を示す図である。
【図6】選手オブジェクトの前方の所定領域について説明するための図である。
【図7】掴み対象点について説明するための図である。
【図8】敵選手オブジェクトが選手オブジェクトに背中を見せているか否かの判定方法について説明するための図である。
【図9】第2選手オブジェクトのユニフォームオブジェクトを第1選手オブジェクトが掴む様子を表示するための処理を示すフロー図である。
【図10】第1選手オブジェクトの右手の先端の位置の補正方法について説明するための図である。
【図11】第1選手オブジェクトの右手の先端の位置の他の補正方法について説明するための図である。
【図12】第2選手オブジェクトのユニフォームオブジェクトを第1選手オブジェクトが引っ張る様子を表示するための処理を示すフロー図である。
【図13】第2選手オブジェクトの変形制御点の位置の決定方法について説明するための図である。
【図14】第2選手オブジェクトの変形制御点の位置の決定方法について説明するための図である。
【図15】第2選手オブジェクトのユニフォームオブジェクトの変形について説明するための図である。
【図16】第2選手オブジェクトのユニフォームオブジェクトの変形について説明するための図である。
【図17】第1選手オブジェクトの右手の先端の位置の補正方法について説明するための図である。
【図18】第1選手オブジェクトの右手の先端の位置の他の補正方法について説明するための図である。
【図19】第2選手オブジェクトの変形制御点の位置の他の決定方法について説明するための図である。
【図20】本発明の他の実施形態に係るプログラム配信システムの全体構成を示す図である。
【符号の説明】
【0110】
10 ゲーム装置、11,110 家庭用ゲーム機、12 バス、14 マイクロプロセッサ、16 画像処理部、18 モニタ、20 音声処理部、22 スピーカ、24 DVD−ROM再生部、25 DVD−ROM、26 主記憶、28 メモリカード、30 入出力処理部、32 コントローラ、40 仮想3次元空間、42 フィールドオブジェクト、44 ゴールオブジェクト、46 仮想カメラ、50 選手オブジェクト、50a 第1選手オブジェクト、50b 第2選手オブジェクト、50e 敵選手オブジェクト、52 ユニフォームオブジェクト、54 頭、56 首、58 胸、60 腰、62l 左腿、62r 右腿、64l 左脛、64r 右脛、66l 左足、66r 右足、68l 左上腕、68r 右上腕、70l 左前腕、70r 右前腕、72l 左手、72r 右手、74 先端、74o−1,74o−2,74o−3,74o−n,74o−m,74o−8,74o−9,74o−10 原位置、74−1,74−2,74−3,74−n,74−m,74−8,74−9,74−10 補正位置、76,76e 正面方向、78 所定領域、80 掴み対象点、82 変形制御点、82a 基準位置、86 頂点、86a 基準頂点、100 プログラム配信システム、102 ゲームデータベース、104 サーバ、106 通信ネットワーク、108 パソコン、112 携帯情報端末(PDA)、114 プログラム配信装置。
【技術分野】
【0001】
本発明はゲーム装置、ゲーム装置の制御方法及びプログラムに関する。
【背景技術】
【0002】
仮想3次元空間を所与の視点から見た様子を表すゲーム画面を表示するゲーム装置が知られている。例えば、サッカー選手を表す複数の選手オブジェクトが配置された仮想3次元空間を所与の視点から見た様子を表すゲーム画面を表示することによって、サッカーゲームを提供するゲーム装置が知られている。
【特許文献1】特開2005−342120号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
ところで、現実のサッカー等の試合では、他の選手のプレイを妨害するために、選手が他の選手のユニフォームを掴んで引っ張ることがある。このため、例えば、上記のサッカーゲームにおいても、選手オブジェクトが他の選手オブジェクトのユニフォームを掴んで引っ張る様子を表現できれば、サッカーゲームのリアリティを向上することができる。また、選手オブジェクトが他の選手オブジェクトのユニフォームを掴んで引っ張る様子を表現するにあたっては、その処理負荷が重くならないように図る必要がある。
【0004】
本発明は上記課題に鑑みてなされたものであって、その目的は、第1キャラクタオブジェクトが第2キャラクタオブジェクトの衣服オブジェクトを掴んで引っ張る様子を比較的簡易な処理で表現できるようになるゲーム装置、ゲーム装置の制御方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明に係るゲーム装置は、仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置において、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得手段と、前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向に基づいて変化させる衣服オブジェクト制御手段と、前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得手段によって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御手段と、を含むことを特徴とする。
【0006】
また、本発明に係るゲーム装置の制御方法は、仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置の制御方法において、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得ステップと、前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得ステップによって取得された方向に基づいて変化させる衣服オブジェクト制御ステップと、前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得ステップによって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御ステップと、を含むことを特徴とする。
【0007】
また、本発明に係るプログラムは、仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置として、例えば家庭用ゲーム機、携帯用ゲーム機、携帯電話機、携帯情報端末(PDA)又はパーソナルコンピュータ等のコンピュータを機能させるためのプログラムであって、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得手段、前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向に基づいて変化させる衣服オブジェクト制御手段、及び、前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得手段によって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御手段、として前記コンピュータを機能させるためのプログラムである。
【0008】
また、本発明に係る情報記憶媒体は、上記プログラムを記録したコンピュータ読み取り可能な情報記憶媒体である。また、本発明に係るプログラム配信装置は、上記プログラムを記録した情報記憶媒体を備え、当該情報記憶媒体から上記プログラムを読み出し、配信するプログラム配信装置である。また、本発明に係るプログラム配信方法は、上記プログラムを記録した情報記憶媒体から上記プログラムを読み出し、配信するプログラム配信方法である。
【0009】
本発明は、仮想3次元空間に配置された第1キャラクタオブジェクトが、第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置に関するものである。本発明では、第2キャラクタオブジェクトの位置から第1キャラクタオブジェクトの位置への方向が取得される。そして、その取得された方向に基づいて、衣服オブジェクトの少なくとも一部の頂点の位置が変化する。また、その取得された方向に基づいて、第1キャラクタオブジェクトの部位のうちの、衣服オブジェクトを引っ張るために用いられる所定部位の位置が変化する。本発明によれば、第1キャラクタオブジェクトが第2キャラクタオブジェクトの衣服オブジェクトを掴んで引っ張る様子を比較的簡易な処理で表現できるようになる。
【0010】
また、本発明の一態様では、前記衣服オブジェクトの前記少なくとも一部の頂点は、前記仮想3次元空間に設定される基準点に従動し、前記衣服オブジェクト制御手段は、前記基準点の位置を前記方向取得手段によって取得された方向に基づいて変化させるようにしてもよい。
【0011】
また、本発明の一態様では、前記第1キャラクタオブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置に基づいて、前記所定部位の位置を変化させるようにしてもよい。
【0012】
また、本発明の一態様では、前記第2キャラクタオブジェクトの位置と前記第1キャラクタオブジェクトの位置との間の距離を取得する距離取得手段を含み、前記衣服オブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向と、前記距離取得手段によって取得された距離と、に基づいて変化させるようにしてもよい。
【0013】
また、本発明の一態様では、前記衣服オブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向と、前記距離取得手段によって取得された距離に係数を乗じることによって得られる距離と、に基づいて変化させ、前記衣服オブジェクト制御手段は、前記係数を時間経過に伴って変化させる手段を含むようにしてもよい。
【0014】
また、本発明の一態様では、前記第1キャラクタオブジェクトが前記衣服オブジェクトを引っ張る際の前記所定部位の基本動作を示すモーションデータを記憶するモーションデータ記憶手段と、前記モーションデータに基づいて特定される前記第1キャラクタオブジェクトの前記所定部位の位置を取得する所定部位位置手段と、を含み、前記距離取得手段は、前記第2キャラクタオブジェクトの位置と、前記第1キャラクタオブジェクトの前記所定部位の位置と、の間の距離を取得するようにしてもよい。
【0015】
また、本発明の一態様では、前記方向取得手段は、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの前記所定部位の位置への方向を取得するようにしてもよい。
【発明を実施するための最良の形態】
【0016】
以下、本発明の実施形態の一例について図面に基づき詳細に説明する。本発明の実施形態に係るゲーム装置は、例えば家庭用ゲーム機、携帯用ゲーム機、携帯電話機、携帯情報端末(PDA)又はパーソナルコンピュータ等によって実現される。ここでは、本発明の実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
【0017】
図1は、本発明の実施形態に係るゲーム装置の全体構成を示す図である。図1に示すゲーム装置10は、家庭用ゲーム機11、DVD−ROM25、メモリカード28、モニタ18、スピーカ22を含んでいる。DVD−ROM25及びメモリカード28は情報記憶媒体であり、家庭用ゲーム機11に装着される。モニタ18及びスピーカ22は家庭用ゲーム機11に接続される。モニタ18としては例えば家庭用テレビ受像機が用いられる。スピーカ22としては例えば家庭用テレビ受像機に内蔵されたスピーカが用いられる。
【0018】
家庭用ゲーム機11は公知のコンピュータゲームシステムである。家庭用ゲーム機11は、バス12、マイクロプロセッサ14、画像処理部16、音声処理部20、DVD−ROM再生部24、主記憶26、入出力処理部30及びコントローラ32を含んでいる。コントローラ32以外の構成要素は家庭用ゲーム機11の筐体内に収容される。
【0019】
バス12はアドレス及びデータを家庭用ゲーム機11の各部でやり取りするためのものである。マイクロプロセッサ14、画像処理部16、主記憶26及び入出力処理部30は、バス12によって相互データ通信可能に接続される。
【0020】
マイクロプロセッサ14は、図示しないROMに格納されるオペレーティングシステム、DVD−ROM25から読み出されるプログラム及びデータや、メモリカード28から読み出されるデータに基づいて、家庭用ゲーム機11の各部を制御する。主記憶26は、例えばRAMを含んでいる。主記憶26には、DVD−ROM25又はメモリカード28から読み出されたプログラムやデータが必要に応じて書き込まれる。主記憶26はマイクロプロセッサ14の作業用としても用いられる。
【0021】
画像処理部16はVRAMを含んでいる。画像処理部16は、マイクロプロセッサ14から送られる画像データに基づいてVRAM上にゲーム画面を描画する。そして、画像処理部16は、そのゲーム画面をビデオ信号に変換して所定のタイミングでモニタ18に出力する。
【0022】
入出力処理部30は、マイクロプロセッサ14が音声処理部20、DVD−ROM再生部24、メモリカード28及びコントローラ32にアクセスするためのインタフェースである。入出力処理部30には、音声処理部20、DVD−ROM再生部24、メモリカード28及びコントローラ32が接続される。
【0023】
音声処理部20はサウンドバッファを含んでいる。サウンドバッファには、DVD−ROM25から読み出されたゲーム音楽、ゲーム効果音、メッセージ等の各種音声データが記憶される。音声処理部20は、サウンドバッファに記憶された各種音声データを再生してスピーカ22から出力する。
【0024】
DVD−ROM再生部24はマイクロプロセッサ14からの指示に従ってDVD−ROM25に記録されたプログラムを読み取る。なお、ここではプログラムを家庭用ゲーム機11に供給するためにDVD−ROM25を用いることとするが、CD−ROMやROMカード等、他のあらゆる情報記憶媒体を用いるようにしてもよい。また、例えばインターネット等の通信ネットワークを介して遠隔地からプログラムを家庭用ゲーム機11に供給するようにしてもよい。
【0025】
メモリカード28は不揮発性メモリ(例えばEEPROM等)を含んでいる。家庭用ゲーム機11はメモリカード28を装着するためのメモリカードスロットを複数備えている。メモリーカード28には例えばセーブデータなどの各種ゲームデータが記憶される。
【0026】
コントローラ32は、ユーザが各種ゲーム操作の入力をするための汎用操作入力手段である。入出力処理部30は一定周期毎(例えば1/60秒毎)にコントローラ32の各部の状態をスキャンする。そして、入出力処理部30はそのスキャン結果を表す操作信号をバス12を介してマイクロプロセッサ14に渡す。マイクロプロセッサ14はその操作信号に基づいてユーザのゲーム操作を判定する。家庭用ゲーム機11には複数のコントローラ32を接続することが可能である。マイクロプロセッサ14は各コントローラ32から入力される操作信号に基づいてゲーム制御を実行する。
【0027】
上記の構成を備えるゲーム装置10では、DVD−ROM25から読み出されたゲームプログラムが実行されることによって、例えばサッカーゲームが実行される。
【0028】
ゲーム装置10の主記憶26には仮想3次元空間が構築される。図2は仮想3次元空間の一例を示している。図2に示すように、仮想3次元空間40には、サッカーのフィールドを表すフィールドオブジェクト42と、ゴールを表すゴールオブジェクト44と、が配置される。図2では省略されているが、フィールドオブジェクト42上には、ユニフォームを着たサッカー選手を表す選手オブジェクトと、サッカーボールを表すボールオブジェクトと、が配置される。
【0029】
図3は選手オブジェクトの一例を示している。図3に示すように、選手オブジェクト50はユニフォームオブジェクト52を含んでいる。選手オブジェクト50は複数のポリゴンを含んで構成される。ユニフォームオブジェクト52も複数のポリゴンを含んで構成される。
【0030】
選手オブジェクト50の内部にはスケルトン(ボーン及びジョイント)が設定される。図4及び図5は選手オブジェクト50に設定されるスケルトンの一例を示している。図4及び図5に示す例では、頭54、首56、胸58、腰60、左腿62l,右腿62r、左脛64l、右脛64r、左足66l、右足66r、左上腕68l、右上腕68r、左前腕70l、右前腕70r、左手72l、右手72rのスケルトンが選手オブジェクト50に設定されている。
【0031】
これらのスケルトンは、図5に示すような、腰60をルートとする階層構造で管理される。あるスケルトン(ボーン)が回転した場合、そのスケルトンの下の階層のスケルトンも連動する。例えば、右上腕68rが回転した場合、右上腕68rの下の階層のスケルトンである右前腕70rや右手72rが右上腕68rの回転に合わせて動く。また、最下層のスケルトンの位置はそのスケルトンよりも上の階層のスケルトンの状態(回転角度等)によって特定される。例えば、右手72rの位置は右上腕68rや右前腕70r等の回転角度等によって特定される。また、最下層のスケルトンの位置に基づいて、そのスケルトンよりも上の階層のスケルトンの状態(回転角度等)を特定することも可能である(インバースキネマティクス法)。例えば、右手72rの位置に基づいて右上腕68rや右前腕70r等の回転角度を特定することも可能である。
【0032】
選手オブジェクト50に設定されたスケルトン(ボーン)と、選手オブジェクト50を構成するポリゴンの頂点と、は対応づけられている。そして、スケルトン(ボーン)が回転した場合にはそのスケルトンに対応づけられたポリゴンの頂点が従動する。その結果、スケルトンの回転に合わせて、選手オブジェクト50の形状(姿勢)が変化する。
【0033】
また、仮想3次元空間40には仮想カメラ46が配置される。この仮想カメラ46から仮想3次元空間40を見た様子を表すゲーム画面がモニタ18に表示される。
【0034】
主記憶26には、仮想3次元空間40に配置される各選手オブジェクト50の状態(位置、姿勢、移動速度や移動方向等)を示す情報が記憶される。例えば、選手オブジェクト50の姿勢は選手オブジェクト50の各スケルトンの状態(回転角度等)によって特定されるため、主記憶26には、選手オブジェクト50の姿勢を示す情報として、選手オブジェクト50の各スケルトンの状態を示す情報が記憶される。また主記憶26には、ボールオブジェクトの状態(位置、移動速度や移動方向等)や仮想カメラ46の状態(位置、視線方向や画角等)を示す情報も記憶される。主記憶26に記憶されるこれらの情報は所定時間(本実施の形態では1/30秒)ごとに更新される。また、これらの情報に基づいて、ゲーム画面が所定時間(本実施の形態では1/30秒)ごとに更新される。
【0035】
なお本明細書では、主記憶26に記憶される、選手オブジェクト50、ボールオブジェクトや仮想カメラ46の状態を示す情報を更新することを「選手オブジェクト50、ボールオブジェクトや仮想カメラ46の状態を更新する」というように記載する。
【0036】
以下、サッカーゲームにおいて、選手オブジェクト50が敵チームに属する選手オブジェクト50(以下、「敵選手オブジェクト」と記載する。)のユニフォームオブジェクト52を掴んで引っ張る様子を好適に表現するための技術について説明する。
【0037】
ゲーム装置10では、敵選手オブジェクトのユニフォームオブジェクト52を掴む動作(以下、「掴み動作」と記載する。)を開始するための条件を選手オブジェクト50が満足したかが否かが判定される。選手オブジェクト50が掴み動作の開始条件を満足したか否かをマイクロプロセッサ14は下記に説明するようにして判定する。
【0038】
まずマイクロプロセッサ14は、選手オブジェクト50の前方の所定領域に、いずれかの敵選手オブジェクトの掴み対象点が含まれるか否かを判定する。
【0039】
図6は選手オブジェクト50の前方の所定領域について説明するための図である。図6に示すように、選手オブジェクト50の前方の所定領域78は、選手オブジェクト50の正面方向76との間の角度が基準角度θ1以下となる領域であって、かつ、選手オブジェクト50からの距離が基準距離R以下となる領域である。
【0040】
図7は掴み対象点について説明するための図である。図7に示すように、掴み対象点80は各選手オブジェクト50の腰の背中側に設定される。なお、各選手オブジェクト50には複数の掴み対象点80が設定されるようにしてもよい。例えば、各選手オブジェクト50の腰の背中側の左右に2つの掴み対象点80が設定されるようにしてもよい。
【0041】
選手オブジェクト50の前方の所定領域78に、いずれかの敵選手オブジェクトの掴み対象点80が含まれると判定された場合、マイクロプロセッサ14は、その敵選手オブジェクトが選手オブジェクト50に背中を向けているか否かを判定する。図8は、敵選手オブジェクトが選手オブジェクト50に背中を向けているか否かの判定方法について説明するための図である。マイクロプロセッサ14は、選手オブジェクト50の正面方向76と敵選手オブジェクト50eの正面方向76eとの間の角度θ2が基準角度以下であるか否かを判定する。そして、選手オブジェクト50の正面方向76と敵選手オブジェクト50eの正面方向76eとの間の角度θ2が基準角度以下である場合、敵選手オブジェクト50eは選手オブジェクト50に背中を向けているとマイクロプロセッサ14は判断する。一方、選手オブジェクト50の正面方向76と敵選手オブジェクト50eの正面方向76eとの間の角度θ2が基準角度以下でない場合、敵選手オブジェクト50eは選手オブジェクト50に背中を向けていないとマイクロプロセッサ14は判断する。
【0042】
選手オブジェクト50の前方の所定領域78に敵選手オブジェクトの掴み対象点80が含まれ、かつ、その敵選手オブジェクトが選手オブジェクト50に背中を向けている場合、その選手オブジェクト50が掴み動作の開始条件を満足しているとマイクロプロセッサ14は判断する。そして、マイクロプロセッサ14は、その敵選手オブジェクトのユニフォームオブジェクト52を掴む動作をその選手オブジェクト50に開始させる。
【0043】
次に、選手オブジェクト50が敵選手オブジェクトのユニフォームオブジェクト52を掴む様子を表示するために実行される処理について説明する。図9は、選手オブジェクト50が掴み動作の開始条件を満足したと判定された後、所定時間(本実施の形態では1/30秒)ごとに実行される処理を示すフロー図である。マイクロプロセッサ14は図9に示す処理をDVD−ROM25から読み出されたプログラムに従って実行する。
【0044】
なお以下では、掴み動作の開始条件を満足したと判定された選手オブジェクト50、すなわちユニフォームオブジェクト52を掴む選手オブジェクト50のことを「第1選手オブジェクト」と記載する。また、第1選手オブジェクトによってユニフォームオブジェクト52を掴まれる敵選手オブジェクトのことを「第2選手オブジェクト」と記載する。また、第1選手オブジェクト(第1キャラクタオブジェクト)は第2選手オブジェクト(第2キャラクタオブジェクト)のユニフォームオブジェクト52(衣服オブジェクト)を右手で掴みにいくこととして説明する。
【0045】
図9に示す処理は、DVD−ROM25(モーションデータ記憶手段)に記憶されるモーションデータに基づいて実行される。モーションデータは選手オブジェクト50の各種動作を再現するためのデータである。より具体的には、モーションデータは、選手オブジェクト50が各種動作を行う間の各フレームにおける各スケルトンの状態(回転角度等)を示すデータである。選手オブジェクト50が他の選手オブジェクト50のユニフォームオブジェクト52を掴みに行く際の基本動作を再現するためのモーションデータ(以下、「掴み動作のモーションデータ」と記載する。)もDVD−ROM25に記憶されている。
【0046】
なお以下では、掴み動作のモーションデータには、第1フレーム(掴み動作の開始フレーム)から第10フレーム(掴み動作の終了フレーム)の各フレームにおける各スケルトン(右上腕68r、右前腕70rや手72r等)の状態(回転角度等)が定められていることとして説明する。また、1フレームあたりの時間は1/30秒であることとして説明する。
【0047】
図9に示すように、まずマイクロプロセッサ14は変数nの値に1を加算する(S101)。なお、変数nの値は、第1選手オブジェクトが掴み動作を開始する際に0に初期化されている。このため、変数nは、第1選手オブジェクトが掴み動作を開始してからのフレーム数を示す数値となっている。
【0048】
その後、マイクロプロセッサ14は、第1選手オブジェクト以外の選手オブジェクト50、ボールオブジェクトや仮想カメラ46の状態を更新する(S102)。また、マイクロプロセッサ14は第1選手オブジェクトの状態(姿勢を除く)を更新する(S103)。そして、マイクロプロセッサ14は、第1選手オブジェクトの姿勢を更新するための処理(S104〜S106)を実行する。
【0049】
まず、マイクロプロセッサ14は、第nフレームにおける第1選手オブジェクトの右手72rの先端74の原位置を取得する(S104)。すなわち、マイクロプロセッサ14は、第nフレームにおける各スケルトンの状態を掴み動作のモーションデータから読み出す。そして、マイクロプロセッサ14は、第nフレームにおける各スケルトンの状態から特定される右手72rの先端74の位置(原位置)を取得する。
【0050】
また、マイクロプロセッサ14は、S104で取得された、第nフレームにおける第1選手オブジェクトの右手72rの先端74の原位置を補正することによって、第nフレームにおける第1選手オブジェクトの右手72rの先端74の位置(補正位置)を取得する(S105)。
【0051】
第1選手オブジェクトと第2選手オブジェクトとの位置関係はその都度異なる。このため、第1選手オブジェクトの各スケルトン(右上腕68r、右前腕70rや右手72r等)を掴み動作のモーションデータに従って動かしただけでは、第1選手オブジェクトの右手72rの先端74が第2選手オブジェクトの掴み対象点80に到達しない場合がある。そこで、マイクロプロセッサ14は第1選手オブジェクトの右手72rの先端74の位置を補正する。
【0052】
図10は、第1選手オブジェクトの右手72rの先端74の位置の補正方法について説明するための図である。図10において、符号74o−1,74o−2,74o−n,74o−8,74o−9,74o−10は、第1,2,n,8,9,10フレームにおける選手オブジェクト50の右手72rの先端74の原位置をそれぞれ示している。また、符号74−1,74−2,74−n,74−8,74−9,74−10は、第1,2,n,8,9,10のフレームにおける第1選手オブジェクトの右手72rの先端74の補正位置をそれぞれ示している。
【0053】
S105において、マイクロプロセッサ14は、第1選手オブジェクトの右手72rの先端74の補正位置74−nとして、S104で取得された原位置74o−nから第2選手オブジェクトの掴み対象点80までの直線82−nをn:(10−n)に分割する位置を取得する。
【0054】
例えば、変数nが1である場合、第1選手オブジェクトの右手72rの先端74の補正位置74−1として、原位置74o−1から第2選手オブジェクトの掴み対象点80までの直線82−1を1:9に分割する位置が取得される。また例えば、変数nが8である場合、第1選手オブジェクトの右手72rの先端74の補正位置74−8として、原位置74o−8から第2選手オブジェクトの掴み対象点80までの直線82−8を8:2に分割する位置が取得される。そして、変数nが10である場合、第1選手オブジェクトの右手72rの先端74の補正位置74−10として、原位置74o−10から第2選手オブジェクトの掴み対象点80までの直線82−10を10:0に分割する位置、すなわち、第2選手オブジェクトの掴み対象点80の位置が取得される。
【0055】
第1選手オブジェクトの右手72rの先端74の補正位置が取得された後、マイクロプロセッサ14は、第1選手オブジェクトの各スケルトンの状態(回転角度)を更新する(S106)。すなわち、マイクロプロセッサ14は、右手72rの先端74の補正位置に基づいて、右手72rよりも上位の階層のスケルトンである右上腕68rや右前腕70r等の状態を決定する。この処理には公知のインバースキネマティクスアルゴリズムが用いられる。またマイクロプロセッサ14は、例えば走行動作のモーションデータ等に基づいて、第1選手オブジェクトの他のスケルトンの状態も決定する。
【0056】
その後、マイクロプロセッサ14はゲーム画面をVRAM上に生成する(S107)。このとき、マイクロプロセッサ14は選手オブジェクト50を構成するポリゴンを各スケルトンの状態に基づいて変形する。すなわち、マイクロプロセッサ14は選手オブジェクト50を構成するポリゴンの頂点の位置を各スケルトンの状態に基づいて設定する。VRAM上に生成されたゲーム画面は所定のタイミングでモニタ18に出力される。
【0057】
その後、マイクロプロセッサ14は変数nの値が10であるか否かを判定する(S108)。ここで、値「10」は、掴み動作のモーションデータの全フレーム数である。変数nの値が10でない場合、所定時間(本実施の形態では1/30秒)後に、図9に示す処理が再び実行される。一方、変数nの値が10である場合は掴み動作が完了した場合である。この場合、マイクロプロセッサ14は、第2選手オブジェクトのユニフォームオブジェクト52を引っ張る動作(以下、「引っ張り動作」と記載する。)を第1選手オブジェクトに開始させる。この場合、所定時間(本実施の形態では1/30秒)後に、図9に示す処理に代えて、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52を引っ張る様子を表示するための処理(図12参照)が実行される。
【0058】
上記に説明した処理(図9)が所定時間ごとにが繰り返し実行されることによって、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52(掴み対象点80)を掴む様子がゲーム画面に表される。
【0059】
本実施の形態では、第1選手オブジェクトの右手72rの先端74の位置が図10に示す方法によって補正されることによって、掴み動作の完了フレーム(第10フレーム)において第1選手オブジェクトの右手72rの先端74が第2選手オブジェクトの掴み対象点80に到達するようになる。また、第1選手オブジェクトの右手72rの先端74の位置は徐々に補正されるため、第1選手オブジェクトの右手の動きが不自然にならないように図ることが可能になる。
【0060】
なお、選手オブジェクト50の右手72rの先端74の位置は他の方法で補正するようにしてもよい。図11は選手オブジェクト50の手72の先端74の位置の他の補正方法について説明するための図である。図11においても、符号74o−1,74o−2,74o−n,74o−8,74o−9,74o−10は、第1,2,n,8,9,10フレームにおける第1選手オブジェクトの右手72rの先端74の原位置をそれぞれ示している。また、符号74−1,74−2,74−n,74−8,74−9,74−10は、第1,2,n,8,9,10のフレームにおける第1選手オブジェクトの右手72rの先端74の補正位置をそれぞれ示している。
【0061】
この場合、S105において、マイクロプロセッサ14は、原位置74o−nに(n/10)*ΔP1を加算することによって、第1選手オブジェクトの右手72rの先端74の補正位置74−nを取得する。なお、ΔP1は、掴み動作の完了フレーム(第10フレーム)における第1選手オブジェクトの右手72rの先端74の原位置74o−10と、第2選手オブジェクトの掴み対象点80と、の差を示している。
【0062】
例えば、変数nの値が1である場合、原位置74o−1に対して(1/10)*ΔP1を加算することによって、第1選手オブジェクトの右手72rの先端74の補正位置74−1が取得される。また例えば、変数nの値が8である場合、原位置74o−8に対して(8/10)*ΔP1を加算することによって、第1選手オブジェクトの右手72rの先端74の補正位置74−8が取得される。そして、変数nの値が10である場合、原位置74o−10に対して(10/10)*ΔP1を加算することによって、第1選手オブジェクトの右手72rの先端74の補正位置74−10が取得される。すなわち、第2選手オブジェクトの掴み対象点80の位置が補正位置74−10として取得される。
【0063】
このようにしても、掴み動作の完了フレーム(第10フレーム)において第1選手オブジェクトの右手72rの先端74が第2選手オブジェクトの掴み対象点80に到達するようになる。また、第1選手オブジェクトの右手の動きが不自然にならないように図ることが可能になる。
【0064】
ところで、図10に示す補正方法を用いた場合、第1フレームや第2フレームにおける第1選手オブジェクトの右手72rの移動距離が第9フレームや第10フレームにおける第1選手オブジェクトの右手72rの移動距離に比べて大きくなってしまう。この点、図11に示す補正方法を用いれば、そのような移動距離の相違の発生を抑えることが可能になる。その結果として、第1選手オブジェクトの右手の動きの自然さをより向上することが可能になる。
【0065】
次に、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52を引っ張る様子を表示するための処理について説明する。図12は、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52を引っ張る様子を表示するために、所定時間(本実施の形態では1/30秒)ごとに実行される処理を示すフロー図である。マイクロプロセッサ14は図12に示す処理をDVD−ROM25から読み出されるプログラムに従って実行する。
【0066】
図12に示すように、まずマイクロプロセッサ14は変数mの値に1を加算する(S201)。なお、変数mの値は、第1選手オブジェクトが引っ張り動作を開始する際に0に初期化されている。このため、変数mは、第1選手オブジェクトが引っ張り動作を開始してからのフレーム数を示す数値となっている。
【0067】
その後、マイクロプロセッサ14は、第1選手オブジェクト以外の選手オブジェクト50、ボールオブジェクトや仮想カメラ46の状態を更新する(S202)。また、マイクロプロセッサ14は第1選手オブジェクトの状態(姿勢を除く)を更新する(S203)。そして、マイクロプロセッサ14は、第1選手オブジェクトの姿勢を更新するための処理(S204〜S206)を実行する。
【0068】
まずマイクロプロセッサ14は、第2選手オブジェクトの変形制御点(基準点)の位置を決定する(S204)。変形制御点は、ユニフォームオブジェクト52の変形制御の基礎とされる点である。本実施の形態では、各選手オブジェクト50に対して掴み対象点80とともに変形制御点が設定されている。変形制御点には、選手オブジェクト50のユニフォームオブジェクト52を構成するポリゴンの頂点の一部が対応づけられており、変形制御点に対応づけられた頂点は変形制御点に従動する。詳細については後述する(図15及び図16参照)。
【0069】
選手オブジェクト50のユニフォームオブジェクト52が他の選手オブジェクト50に引っ張られていない状態では、選手オブジェクト50の変形制御点の位置は所定の基本位置に設定される。基本位置は例えば掴み対象点80の位置である。一方、選手オブジェクト50のユニフォームオブジェクト52が他の選手オブジェクト50に引っ張られる状態では、選手オブジェクト50の変形制御点の位置は下記に説明するようにして決定される。
【0070】
マイクロプロセッサ14は、第2選手オブジェクトの変形制御点の位置を、第1選手オブジェクトと第2選手オブジェクトとの位置関係に基づいて決定する。図13及び図14は第2選手オブジェクトの変形制御点の位置の決定方法について説明するための図である。
【0071】
まずマイクロプロセッサ14(方向取得手段)は、第2選手オブジェクト50bの位置(例えば足元位置)から、第1選手オブジェクト50aの位置(例えば足元位置)への方向D1を取得する(図13参照)。また、マイクロプロセッサ14(距離取得手段)は、第2選手オブジェクト50bの位置から第1選手オブジェクト50aの位置までの距離L1を取得する(図13参照)。
【0072】
そしてマイクロプロセッサ14(衣服オブジェクト制御手段)は、第2選手オブジェクト50bの変形制御点82の基本位置82a(掴み対象点80)から、方向Dに、距離Lだけ移動した位置に、第2選手オブジェクト50bの変形制御点82の位置を設定する(図14参照)。なお、方向Dは方向D1と平行な方向である。また、距離Lは下記の式(1)によって決定される。
【0073】
L=L1*|sin((m/10)*2π)|・・・(1)
【0074】
上記のように、距離Lは、第2選手オブジェクト50bの位置から第1選手オブジェクト50aの位置までの距離L1に、時間経過に伴って変化する係数(sin((m/10)*2π)の絶対値)を乗じることによって算出される。このため、仮に、第2選手オブジェクト50bの位置から第1選手オブジェクト50aの位置までの距離L1が変化しない状態が一定時間継続したとしても、上記距離Lは時間経過に伴って変化し、その結果として、第2選手オブジェクト50bの変形制御点82の位置も時間経過に伴って変化するようになっている。
【0075】
第2選手オブジェクトの変形制御点82の位置が決定された後、マイクロプロセッサ14(衣服オブジェクト制御手段)は、第2選手オブジェクトの変形制御点82の位置に基づいて、第2選手オブジェクトのユニフォームオブジェクト52を変形する(S205)。
【0076】
図15及び図16は第2選手オブジェクトのユニフォームオブジェクト52の変形について説明するための図である。図15及び図16には、第2選手オブジェクトのユニフォームオブジェクト52の一部が表されている。図15は変形されていない状態のユニフォームオブジェクト52を示している。図16は変形された状態のユニフォームオブジェクト52を示している。図15及び図16における複数の点(符号86)は第2選手オブジェクトのユニフォームオブジェクト52を構成するポリゴンの頂点を示している。また、符号86aは、第2選手オブジェクトのユニフォームオブジェクト52を構成するポリゴンの頂点のうちで、第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)に最も近い頂点(以下、「代表頂点」と記載する。)を示している。
【0077】
マイクロプロセッサ14は、第2選手オブジェクトのユニフォームオブジェクト52の代表頂点86a及びその周辺の頂点86を、第2選手オブジェクトの変形制御点82に従動させる。具体的には、マイクロプロセッサ14は、第2選手オブジェクトの変形制御点82の基本位置82aからS204において決定された変形制御点82の現在位置への方向84と平行に、第2選手オブジェクトのユニフォームオブジェクト52の代表頂点86a及びその周辺の頂点86を移動させる。このとき、頂点86の移動距離はその頂点86と代表頂点86aとの間の距離に基づいて決定される。具体的には、頂点86と代表頂点86aとの間の距離が大きくなるにつれて、その頂点86の移動距離は小さくなるように設定される。
【0078】
なお、代表頂点86a及びその周辺の頂点86は第2選手オブジェクトの胸58や腰60等のスケルトンにも対応づけられている。このため、第2選手オブジェクトが前方に移動することによって、第2選手オブジェクトの胸58や腰60のスケルトンが前方に移動した場合、代表頂点86a及びその周辺の頂点86は、第2選手オブジェクトの移動方向(前方方向)にも引っ張られることになる。このため、代表頂点86a及びその周辺の頂点86の移動距離は、第2選手オブジェクトの変形制御点82の移動と、第2選手オブジェクト自体の移動と、の両方に基づいて決定される。
【0079】
第2選手オブジェクトのユニフォームオブジェクト52の変形処理が完了した後、マイクロプロセッサ14は第1選手オブジェクト50の各スケルトンの状態(回転角度等)を、第2選手オブジェクトのユニフォームオブジェクト52の代表頂点86aの位置に基づいて更新する(S206)。
【0080】
まず、マイクロプロセッサ14は第1選手オブジェクトの右手72rの先端74の位置を、第2選手オブジェクトのユニフォームオブジェクト52の代表頂点86aの位置に設定する。その後、マイクロプロセッサ14は、右手72rの先端74の位置に基づいて、右手72rよりも上位の階層のスケルトンである右上腕68rや右前腕70r等の状態を更新する。この処理には公知のインバースキネマティクスアルゴリズムが用いられる。またマイクロプロセッサ14は、例えば走行動作のモーションデータに基づいて、第1選手オブジェクトの他のスケルトンの状態を更新する。
【0081】
その後、マイクロプロセッサ14はゲーム画面をVRAM上に生成する(S207)。このとき、マイクロプロセッサ14は、選手オブジェクト50を構成するポリゴンを各スケルトンの状態(回転角度)に基づいて変形する。すなわち、マイクロプロセッサ14は選手オブジェクト50を構成するポリゴンの頂点の位置を各スケルトンの状態に基づいて設定する。VRAM上に生成されたゲーム画面は所定のタイミングでモニタ18に出力される。
【0082】
その後、マイクロプロセッサ14は、第1選手オブジェクトと第2選手オブジェクトとの間の距離が所定距離以上であるか否かを判定する(S208)。第1選手オブジェクトと第2選手オブジェクトとの間の距離が所定距離以上である場合、マイクロプロセッサ14は、第2選手オブジェクトが第1選手オブジェクトを振り切ったと判断して、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作を終了させる(S210)。
【0083】
一方、第1選手オブジェクトと第2選手オブジェクトとの間の距離が所定距離未満である場合、マイクロプロセッサ14は変数mの値が10であるか否かを判定する(S209)。変数mの値が10である場合、マイクロプロセッサ14は第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作を終了させる(S210)。このように、本実施の形態では、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作は1/3(=10/30)秒間継続したら終了するようになっている。なお、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作の継続時間はもっと長くしてもよい。
【0084】
上記に説明した処理(図12)が所定時間ごとに繰り返し実行されることによって、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクトを引っ張る様子と、その引っ張り動作によって第2選手オブジェクトのユニフォームオブジェクト52が変形する様子と、がゲーム画面に表される。
【0085】
第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子を表示することは、物理シミュレーション演算を行うことによって実現することも考えられる。しかしながら、その場合には処理が複雑になり、処理負荷が重くなってしまう。この点、本実施の形態によれば、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子を表示することが、第2選手オブジェクトの変形基準点82の位置を第1選手オブジェクトと第2選手オブジェクトとの位置関係(上記方向D1及び距離L1)に基づいて変化させるという比較的簡易な処理によって実現できるようになる。
【0086】
また本実施の形態では、仮に、第2選手オブジェクトの位置から第1選手オブジェクトの位置までの距離L1(図13参照)が変化しない状態が一定時間継続したとしても、第2選手オブジェクトの変形制御点82の位置が変化するようになっている。このため、仮に、第2選手オブジェクトの位置から第1選手オブジェクトの位置までの距離L1(図13参照)が変化しない状態が一定時間継続したとしても、第2選手オブジェクトのユニフォームオブジェクト52の変形の程度が変化するようになっている。その結果として、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子のリアリティが向上されている。
【0087】
また本実施の形態では、第2選手オブジェクトのユニフォームオブジェクト52が、変形制御点82の位置と、第2選手オブジェクトの胸58や腰60等のスケルトンの回転と、を考慮して変形された後、そのユニフォームオブジェクト52の変形具合に合わせて、第1選手オブジェクトの右手72rの位置が決定される。そして、右手72rの位置に基づいて、第1選手オブジェクトの姿勢(各スケルトンの状態)が決定される。本実施の形態によれば、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子を表現する場合に、第2選手オブジェクト自体の動き(移動等)も考慮して、第2選手オブジェクトのユニフォームオブジェクト52が変形する様子を表現することが可能になる。その結果として、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子のリアリティが向上される。
【0088】
なお、第2選手オブジェクトの変形制御点82(上記方向D及び距離L)は、他の選手オブジェクト50のユニフォームオブジェクト52を掴んだ右手を選手オブジェクト50が引く動作のモーションデータを用いて決定されるようにしてもよい。以下、この決定方法について説明する。なお以下では、上記のモーションデータには、第1フレーム(動作開始フレーム)から第10フレーム(動作完了フレーム)までの各フレームにおける選手オブジェクト50の各スケルトンの状態(回転角度等)が定められていることとして説明する。
【0089】
この場合、S204において、まずマイクロプロセッサ14は、第mフレームにおける各スケルトンの状態を上記のモーションデータから読み出す。そして、マイクロプロセッサ14は、第mフレームにおける各スケルトンの状態から特定される第1選手オブジェクトの右手72r(所定部位)の先端74の位置(原位置)を取得する。その後、マイクロプロセッサ14(所定部位位置取得手段)は、その取得された原位置を下記に説明する方法によって補正してなる位置(補正位置)を取得する。
【0090】
図17は、取得された原位置の補正方法について説明するための図である。図17において、符号74o−1,74o−2,74o−3,74o−m,74o−9,74o−10は、第1,2,3,m,9,10フレームにおける原位置をそれぞれ示している。また、符号74−1,74−2,74−3,74−m,74−9,74−10は、第1,2,3,m,9,10のフレームにおける補正位置をそれぞれ示している。
【0091】
マイクロプロセッサ14は、補正位置74−mとして、原位置74o−mから第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)までの直線82−mを(10−m+1):(m−1)に分割する位置を取得する。
【0092】
例えば、変数mが2である場合、補正位置74−2として、原位置74o−2から第2選手オブジェクトの変形制御点82の基本位置82aまでの直線82−2を9:1に分割する位置が取得される。また例えば、変数nが9である場合、補正位置74−9として、原位置74o−9から第2選手オブジェクトの変形制御点82の基本位置82aまでの直線82−9を2:8に分割する位置が取得される。
【0093】
図18は、取得された原位置の他の補正方法について説明するための図である。図18においても、図17と同様に、符号74o−1,74o−2,74o−3,74o−m,74o−9,74o−10は、第1,2,3,m,9,10フレームにおける原位置をそれぞれ示している。また、符号74−1,74−2,74−3,74−m,74−9,74−10は、第1,2,3,n,9,10のフレームにおける補正位置をそれぞれ示している。
【0094】
この場合、マイクロプロセッサ14は、原位置74o−mに対して((10−m+1)/10)*ΔP2を加算することによって補正位置74−mを取得する。なお、ΔP2は、第1フレームにおける原位置74o−1と、第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)と、の差を示している。
【0095】
例えば、変数mが2である場合、原位置74o−2に対して(9/10)*ΔP2を加算することによって補正位置74−2が取得される。また例えば、変数nが9である場合、原位置74o−9に対して(2/10)*ΔP2を加算することによって補正位置74−9が取得される。
【0096】
図17又は図18に示す方法によって補正位置74−mが取得された後、マイクロプロセッサ14は、その補正位置74−mに基づいて、第2選手オブジェクトの変形制御点82の位置を決定する。
【0097】
図19は、第2選手オブジェクトの変形制御点82の位置の決定方法について説明するための図である。まずマイクロプロセッサ14(方向取得手段)は、第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)から補正位置74−mへの方向D2を取得する。またマイクロプロセッサ14(距離取得手段)は、第2選手オブジェクトの変形制御点82の基本位置82a(掴み対象点80)から補正位置74−mまでの距離L2を取得する。
【0098】
そしてマイクロプロセッサ14(衣服オブジェクト制御手段)は、第2選手オブジェクト50bの変形制御点82の基本位置82a(掴み対象点80)から、方向Dに、距離Lだけ移動した位置に、第2選手オブジェクトの変形制御点82の位置を設定する(図14参照)。ここで、方向Dは方向D2と平行な方向である。また、距離Lは距離L2である。
【0099】
このようにすれば、第1選手オブジェクトがユニフォームオブジェクト52を引っ張る際の右手の動きを考慮して、第2選手オブジェクトの変形制御点82の位置を決定することが可能になる。その結果、第1選手オブジェクトがユニフォームオブジェクト52を引っ張る際の右手の動きを考慮して、第2選手オブジェクトのユニフォームオブジェクト52を変形できるようになる。また、このようにしても、第2選手オブジェクトのユニフォームオブジェクト52が第1選手オブジェクトによって引っ張られることによって変形する様子を表示することが、比較的簡易な処理によって実現できるようになる。
【0100】
なお、上記方向D(図14参照)は上記方向D1(図13参照)に平行な方向とし、上記距離L(図14参照)は上記距離L2(図19参照)として、第2選手オブジェクトの変形制御点82の位置を決定するようにしてもよい。
【0101】
このようにしても、第1選手オブジェクトがユニフォームオブジェクト52を引っ張る際の右手の動きを考慮して、第2選手オブジェクトの変形制御点82の位置を決定することが可能になる。その結果、第1選手オブジェクトがユニフォームオブジェクト52を引っ張る際の右手の動きを考慮して、第2選手オブジェクトのユニフォームオブジェクト52を変形できるようになる。
【0102】
また、変形制御点82は、例えば、第1フレームにおける補正位置74−1に基づいて決定された位置と、第3フレームにおける補正位置74−3に基づいて決定された位置と、の間を往復するようにしてもよい。すなわち、変形制御点82は、補正位置74−1に基づいて決定された位置から、補正位置74−2に基づいて決定された位置を経て、補正位置74−3に基づいて決定された位置まで移動した場合、補正位置74−2に基づいて決定された位置を経て、補正位置74−1に基づいて決定された位置に戻るようにしてもよい。また、変形制御点82は、補正位置74−1に基づいて決定された位置に戻った場合、補正位置74−2に基づいて決定された位置を経て、補正位置74−3に基づいて決定された位置まで再び移動するようにしてもよい。
【0103】
このようにすれば、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作を継続させることが可能になる。例えば、第1選手オブジェクトがユーザの操作対象の選手オブジェクト50である場合には、ユーザが所定操作(例えばボタンの連打)を継続する間、第1選手オブジェクトの第2選手オブジェクトに対する引っ張り動作を継続させることも可能になる。
【0104】
以上説明したゲーム装置10によれば、選手オブジェクト50が敵チームに属する選手オブジェクト50のユニフォームオブジェクト52を掴んで引っ張る様子を比較的簡易な処理で表現できるようになる。
【0105】
なお、本発明は以上に説明した実施の形態に限定されるものではない。
【0106】
例えば、第1選手オブジェクトが第2選手オブジェクトのユニフォームオブジェクト52を引っ張った場合、第2選手オブジェクトの能力を示すパラメータの値が、第2選手オブジェクトの能力が低くなるように補正されるようにしてもよい。例えば、第2選手オブジェクトの移動速度が遅くなるようにしてもよい。
【0107】
また例えば、ゲーム装置10で実行されるサッカーゲーム以外のスポーツゲームであってもよい。本発明は、例えば、選手同士の接触プレイが発生し得るバスケットボール等のゲームに適用することができる。また、ゲーム装置10で実行されるゲームは、スポーツゲーム以外のゲームであってもよい。
【0108】
また例えば、以上の説明では、プログラムを情報記憶媒体たるDVD−ROM25から家庭用ゲーム機11に供給するようにしたが、通信ネットワークを介してプログラムを家庭等に配信するようにしてもよい。図20は、通信ネットワークを用いたプログラム配信システムの全体構成を示す図である。図20に基づいて本発明に係るプログラム配信方法を説明する。図20に示すように、このプログラム配信システム100は、ゲームデータベース102、サーバ104、通信ネットワーク106、パソコン108、家庭用ゲーム機110、PDA(携帯情報端末)112を含んでいる。このうち、ゲームデータベース102とサーバ104とによりプログラム配信装置114が構成される。通信ネットワーク106は、例えばインターネットやケーブルテレビネットワークを含んで構成されている。このシステムでは、ゲームデータベース(情報記憶媒体)102に、DVD−ROM25の記憶内容と同様のプログラムが記憶されている。そして、パソコン108、家庭用ゲーム機110又はPDA112等を用いて需要者がゲーム配信要求をすることにより、それが通信ネットワーク106を介してサーバ104に伝えられる。そして、サーバ104はゲーム配信要求に応じてゲームデータベース102からプログラムを読み出し、それをパソコン108、家庭用ゲーム機110、PDA112等、ゲーム配信要求元に送信する。ここではゲーム配信要求に応じてゲーム配信するようにしたが、サーバ104から一方的に送信するようにしてもよい。また、必ずしも一度にゲームの実現に必要な全てのプログラムを配信(一括配信)する必要はなく、ゲームの局面に応じて必要な部分を配信(分割配信)するようにしてもよい。このように通信ネットワーク106を介してゲーム配信するようにすれば、プログラムを需要者は容易に入手することができるようになる。
【図面の簡単な説明】
【0109】
【図1】本実施の形態に係るゲーム装置のハードウェア構成を示す図である。
【図2】仮想3次元空間の一例を示す図である。
【図3】選手オブジェクトの一例を示す図である。
【図4】選手オブジェクトに設定されるスケルトンの一例を示す図である。
【図5】選手オブジェクトに設定されるスケルトンの階層構造の一例を示す図である。
【図6】選手オブジェクトの前方の所定領域について説明するための図である。
【図7】掴み対象点について説明するための図である。
【図8】敵選手オブジェクトが選手オブジェクトに背中を見せているか否かの判定方法について説明するための図である。
【図9】第2選手オブジェクトのユニフォームオブジェクトを第1選手オブジェクトが掴む様子を表示するための処理を示すフロー図である。
【図10】第1選手オブジェクトの右手の先端の位置の補正方法について説明するための図である。
【図11】第1選手オブジェクトの右手の先端の位置の他の補正方法について説明するための図である。
【図12】第2選手オブジェクトのユニフォームオブジェクトを第1選手オブジェクトが引っ張る様子を表示するための処理を示すフロー図である。
【図13】第2選手オブジェクトの変形制御点の位置の決定方法について説明するための図である。
【図14】第2選手オブジェクトの変形制御点の位置の決定方法について説明するための図である。
【図15】第2選手オブジェクトのユニフォームオブジェクトの変形について説明するための図である。
【図16】第2選手オブジェクトのユニフォームオブジェクトの変形について説明するための図である。
【図17】第1選手オブジェクトの右手の先端の位置の補正方法について説明するための図である。
【図18】第1選手オブジェクトの右手の先端の位置の他の補正方法について説明するための図である。
【図19】第2選手オブジェクトの変形制御点の位置の他の決定方法について説明するための図である。
【図20】本発明の他の実施形態に係るプログラム配信システムの全体構成を示す図である。
【符号の説明】
【0110】
10 ゲーム装置、11,110 家庭用ゲーム機、12 バス、14 マイクロプロセッサ、16 画像処理部、18 モニタ、20 音声処理部、22 スピーカ、24 DVD−ROM再生部、25 DVD−ROM、26 主記憶、28 メモリカード、30 入出力処理部、32 コントローラ、40 仮想3次元空間、42 フィールドオブジェクト、44 ゴールオブジェクト、46 仮想カメラ、50 選手オブジェクト、50a 第1選手オブジェクト、50b 第2選手オブジェクト、50e 敵選手オブジェクト、52 ユニフォームオブジェクト、54 頭、56 首、58 胸、60 腰、62l 左腿、62r 右腿、64l 左脛、64r 右脛、66l 左足、66r 右足、68l 左上腕、68r 右上腕、70l 左前腕、70r 右前腕、72l 左手、72r 右手、74 先端、74o−1,74o−2,74o−3,74o−n,74o−m,74o−8,74o−9,74o−10 原位置、74−1,74−2,74−3,74−n,74−m,74−8,74−9,74−10 補正位置、76,76e 正面方向、78 所定領域、80 掴み対象点、82 変形制御点、82a 基準位置、86 頂点、86a 基準頂点、100 プログラム配信システム、102 ゲームデータベース、104 サーバ、106 通信ネットワーク、108 パソコン、112 携帯情報端末(PDA)、114 プログラム配信装置。
【特許請求の範囲】
【請求項1】
仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置において、
前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得手段と、
前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向に基づいて変化させる衣服オブジェクト制御手段と、
前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得手段によって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御手段と、
を含むことを特徴とするゲーム装置。
【請求項2】
請求項1に記載のゲーム装置において、
前記衣服オブジェクトの前記少なくとも一部の頂点は、前記仮想3次元空間に設定される基準点に従動し、
前記衣服オブジェクト制御手段は、前記基準点の位置を前記方向取得手段によって取得された方向に基づいて変化させる、
ことを特徴とするゲーム装置。
【請求項3】
請求項1又は2に記載のゲーム装置において、
前記第1キャラクタオブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置に基づいて、前記所定部位の位置を変化させることを特徴とするゲーム装置。
【請求項4】
請求項1乃至3のいずれかに記載のゲーム装置において、
前記第2キャラクタオブジェクトの位置と前記第1キャラクタオブジェクトの位置との間の距離を取得する距離取得手段を含み、
前記衣服オブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向と、前記距離取得手段によって取得された距離と、に基づいて変化させる、
ことを特徴とするゲーム装置。
【請求項5】
請求項4に記載のゲーム装置において、
前記衣服オブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向と、前記距離取得手段によって取得された距離に係数を乗じることによって得られる距離と、に基づいて変化させ、
前記衣服オブジェクト制御手段は、前記係数を時間経過に伴って変化させる手段を含む、
ことを特徴とするゲーム装置。
【請求項6】
請求項4に記載のゲーム装置において、
前記第1キャラクタオブジェクトが前記衣服オブジェクトを引っ張る際の前記所定部位の基本動作を示すモーションデータを記憶するモーションデータ記憶手段と、
前記モーションデータに基づいて特定される前記第1キャラクタオブジェクトの前記所定部位の位置を取得する所定部位位置手段と、を含み、
前記距離取得手段は、前記第2キャラクタオブジェクトの位置と、前記第1キャラクタオブジェクトの前記所定部位の位置と、の間の距離を取得する、
ことを特徴とするゲーム装置。
【請求項7】
請求項6に記載のゲーム装置において、
前記方向取得手段は、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの前記所定部位の位置への方向を取得することを特徴とするゲーム装置。
【請求項8】
仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置の制御方法において、
前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得ステップと、
前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得ステップによって取得された方向に基づいて変化させる衣服オブジェクト制御ステップと、
前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得ステップによって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御ステップと、
を含むことを特徴とするゲーム装置の制御方法。
【請求項9】
仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置としてコンピュータを機能させるためのプログラムであって、
前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得手段、
前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向に基づいて変化させる衣服オブジェクト制御手段、及び、
前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得手段によって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御手段、
として前記コンピュータを機能させるためのプログラム。
【請求項1】
仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置において、
前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得手段と、
前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向に基づいて変化させる衣服オブジェクト制御手段と、
前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得手段によって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御手段と、
を含むことを特徴とするゲーム装置。
【請求項2】
請求項1に記載のゲーム装置において、
前記衣服オブジェクトの前記少なくとも一部の頂点は、前記仮想3次元空間に設定される基準点に従動し、
前記衣服オブジェクト制御手段は、前記基準点の位置を前記方向取得手段によって取得された方向に基づいて変化させる、
ことを特徴とするゲーム装置。
【請求項3】
請求項1又は2に記載のゲーム装置において、
前記第1キャラクタオブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置に基づいて、前記所定部位の位置を変化させることを特徴とするゲーム装置。
【請求項4】
請求項1乃至3のいずれかに記載のゲーム装置において、
前記第2キャラクタオブジェクトの位置と前記第1キャラクタオブジェクトの位置との間の距離を取得する距離取得手段を含み、
前記衣服オブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向と、前記距離取得手段によって取得された距離と、に基づいて変化させる、
ことを特徴とするゲーム装置。
【請求項5】
請求項4に記載のゲーム装置において、
前記衣服オブジェクト制御手段は、前記衣服オブジェクトの前記少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向と、前記距離取得手段によって取得された距離に係数を乗じることによって得られる距離と、に基づいて変化させ、
前記衣服オブジェクト制御手段は、前記係数を時間経過に伴って変化させる手段を含む、
ことを特徴とするゲーム装置。
【請求項6】
請求項4に記載のゲーム装置において、
前記第1キャラクタオブジェクトが前記衣服オブジェクトを引っ張る際の前記所定部位の基本動作を示すモーションデータを記憶するモーションデータ記憶手段と、
前記モーションデータに基づいて特定される前記第1キャラクタオブジェクトの前記所定部位の位置を取得する所定部位位置手段と、を含み、
前記距離取得手段は、前記第2キャラクタオブジェクトの位置と、前記第1キャラクタオブジェクトの前記所定部位の位置と、の間の距離を取得する、
ことを特徴とするゲーム装置。
【請求項7】
請求項6に記載のゲーム装置において、
前記方向取得手段は、前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの前記所定部位の位置への方向を取得することを特徴とするゲーム装置。
【請求項8】
仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置の制御方法において、
前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得ステップと、
前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得ステップによって取得された方向に基づいて変化させる衣服オブジェクト制御ステップと、
前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得ステップによって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御ステップと、
を含むことを特徴とするゲーム装置の制御方法。
【請求項9】
仮想3次元空間に配置された第1キャラクタオブジェクトが、前記仮想3次元空間に配置された第2キャラクタオブジェクトに含まれる衣服オブジェクトを引っ張る様子を表示するゲーム装置としてコンピュータを機能させるためのプログラムであって、
前記第2キャラクタオブジェクトの位置から前記第1キャラクタオブジェクトの位置への方向を取得する方向取得手段、
前記衣服オブジェクトの少なくとも一部の頂点の位置を、前記方向取得手段によって取得された方向に基づいて変化させる衣服オブジェクト制御手段、及び、
前記第1キャラクタオブジェクトの部位のうちの、前記衣服オブジェクトを引っ張るために用いられる所定部位の位置を、前記方向取得手段によって取得された方向に基づいて変化させる第1キャラクタオブジェクト制御手段、
として前記コンピュータを機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2008−295970(P2008−295970A)
【公開日】平成20年12月11日(2008.12.11)
【国際特許分類】
【出願番号】特願2007−148665(P2007−148665)
【出願日】平成19年6月4日(2007.6.4)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】
【公開日】平成20年12月11日(2008.12.11)
【国際特許分類】
【出願日】平成19年6月4日(2007.6.4)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】
[ Back to top ]