説明

プログラム、情報記憶媒体及び画像生成システム

【課題】キャラクタの所持オブジェクト又は部位オブジェクトのリアルな動きが表現された画像を生成できるプログラム、画像生成システム等の提供。
【解決手段】画像生成システムはモーション記憶部とモーション処理部とキャラクタ制御部を含む。モーション記憶部は、キャラクタの所持オブジェクト又は部位オブジェクトの高さが第1の高さである場合用の複数の第1の高さ用基準モーションと、所持オブジェクト又は部位オブジェクトが第2の高さである場合用の少なくとも1つの第2の高さ用基準モーションを記憶する。モーション処理部は、複数の第1の高さ用基準モーションと少なくとも1つの第2の高さ用基準モーションを合成して、キャラクタのモーションを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【0002】
従来より、スポーツ選手を模したキャラクタ等のオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。テニスゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、コントローラなどの操作部を用いて自身のキャラクタを操作して、他のプレーヤやコンピュータが操作する相手キャラクタがショットしたボールをラケットで打ち返すことでゲームを楽しむ。このようなテニスゲームを楽しむことができる画像生成システムの従来技術としては、例えば特許文献1に開示される技術が知られている。この画像生成システムは、モーションデータに基づくモーション処理を行うことで、キャラクタを動作させている。
【0003】
しかしながら、これまでの画像生成システムでは、ラケット等のキャラクタの所持オブジェクトの軌道が、適正な軌道になることを目指すモーション処理は行われていなかった。このため、キャラクタのラケットスイング等のリアルな表現が不十分であった。
【0004】
また、これまでの画像生成システムでは、コントローラの回転角度情報に基づいて、ラケット等により打ち返されるボールの回転状態を設定することは行われていなかった。このため、実際にラケット面を操作して、トップスピンショットやスライスショットを打ち分けるというような感覚をプレーヤに与えることができなかった。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−307166号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の幾つかの態様によれば、キャラクタの所持オブジェクト又は部位オブジェクトのリアルな動きが表現された画像を生成できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【0007】
本発明の第1の態様は、複数の基準モーションを記憶するモーション記憶部と、前記複数の基準モーションを合成して、キャラクタのモーションを生成するモーション処理部と、生成されたモーションに基づいて前記キャラクタを動作させる制御を行うキャラクタ制御部と、画像を生成する画像生成部とを含み、前記モーション記憶部は、前記キャラクタが所持する所持オブジェクト又は前記キャラクタを構成する部位オブジェクトの高さが第1の高さである場合用の基準モーションである複数の第1の高さ用基準モーションと、前記所持オブジェクト又は前記部位オブジェクトが第2の高さである場合用の基準モーションである少なくとも1つの第2の高さ用基準モーションとを記憶し、前記モーション処理部は、前記複数の第1の高さ用基準モーションと、前記少なくとも1つの第2の高さ用基準モーションを合成して、前記キャラクタのモーションを生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0008】
本発明の一態様によれば、キャラクタの所持オブジェクト又は部位オブジェクトが第1の高さである場合用の第1の高さ用基準モーションと、第2の高さである場合用の第2の高さ用基準モーションが用意される。そして、これらの第1の高さ用基準モーションと第2の高さ用基準モーションが合成されて、キャラクタのモーションが生成される。従って、キャラクタの所持オブジェクト又は部位オブジェクトの高さを基準としてモーションを合成できるため、所持オブジェクト又は部位オブジェクトのリアルな動きが表現された画像を生成できるようになる。
【0009】
また本発明の一態様では、コントローラの長軸方向に沿って設定された座標軸を第3の座標軸とし、前記第3の座標軸に直交する座標軸を第1、第2の座標軸とした場合に、前記第1、第2の座標回りでの回転角度情報である第1、第2の回転角度情報を、操作情報として取得する操作情報取得部を含み、前記モーション処理部は、前記第1、第2の回転角度情報に基づきモーション合成率を求め、求められた前記モーション合成率で、前記複数の第1の高さ用基準モーションと、前記少なくとも1つの第2の高さ用基準モーションを合成して、キャラクタのモーションを生成してもよい。
【0010】
このようにすれば、コントローラの第1、第2の座標軸回りでの第1、第2の回転角度情報に応じたモーション合成率で、第1の高さ用基準モーションと第2の高さ用基準モーションが合成されて、キャラクタのモーションが生成される。従って、コントローラの第1、第2の回転角度情報を反映させたモーション合成が可能になる。
【0011】
また本発明の一態様では、前記モーション記憶部は、前記第1の高さ用基準モーションとして、前記第1の回転角度情報がα=αiであり、前記第2の回転角度情報がβ=βjである場合の基準モーションである第1の基準モーションと、前記第1の回転角度情報がα=αi+1であり、前記第2の回転角度情報がβ=βjである場合の基準モーションである第2の基準モーションを記憶し、前記第2の高さ用基準モーションとして、前記第1の回転角度情報がα=αiであり、前記第2の回転角度情報がβ=βj+1である場合の基準モーションである第3の基準モーションと、前記第1の回転角度情報がα=αi+1であり、前記第2の回転角度情報がβ=βj+1である場合の基準モーションである第4の基準モーションを記憶し、前記モーション処理部は、取得された前記第1の回転角度情報αがαi≦α≦αi+1であり、取得された前記第2の回転角度情報βがβj≦β≦βj+1である場合に、前記第1、第2の回転角度情報α、βに基づき前記モーション合成率を求め、求められた前記モーション合成率で、前記第1、第2、第3、第4の基準モーションを合成して、キャラクタのモーションを生成してもよい。
【0012】
このようにすれば、第1、第2の回転角度情報が、αi≦α≦αi+1、βj≦β≦βj+1である場合には、第1、第2の回転角度情報α、βに基づきモーション合成率が求められて、第1、第2、第3、第4の基準モーションが合成される。従って、第1、第2の回転角度情報α、βに応じたモーション合成が可能になる。
【0013】
また本発明の一態様では、前記モーション記憶部は、前記第1の高さ用基準モーションとして、前記第1の回転角度情報がα=αiであり、前記第2の回転角度情報がβ=βjである場合の基準モーションである第1の基準モーションと、前記第1の回転角度情報がα=αi+1であり、前記第2の回転角度情報がβ=βjである場合の基準モーションである第2の基準モーションを記憶し、前記第2の高さ用基準モーションとして、前記第2の回転角度情報がβ=βj+1である場合の基準モーションである第3の基準モーションを記憶し、前記モーション処理部は、取得された前記第1の回転角度情報αがαi≦α≦αi+1であり、取得された前記第2の回転角度情報βがβj≦β≦βj+1である場合に、前記第1、第2の回転角度情報α、βに基づき前記モーション合成率を求め、求められた前記モーション合成率で、前記第1、第2、第3の基準モーションを合成して、キャラクタのモーションを生成してもよい。
【0014】
このようにすれば、第1、第2の回転角度情報が、αi≦α≦αi+1、βj≦β≦βj+1である場合には、第1、第2の回転角度情報α、βに基づきモーション合成率が求められて、第1、第2、第3の基準モーションが合成される。従って、第1、第2の回転角度情報α、βに応じたモーション合成が可能になる。
【0015】
また本発明の一態様では、前記操作情報取得部は、前記第3の座標軸回りでの回転角度情報である第3の回転角度情報を取得し、前記モーション処理部は、生成された前記キャラクタのモーションを、前記第3の回転角度情報に基づいて補正してもよい。
【0016】
このようにすればコントローラの第3の回転角度情報についても反映させたモーション合成を実現できる。
【0017】
また本発明の一態様では、前記モーション処理部は、前記第1の回転角度情報が角度リミット値を超えた場合には、前記角度リミット値に対応する基準モーションを用いてモーション合成を行ってもよい。
【0018】
このようにすれば、第1の回転角度情報が角度リミット値を超えた場合に生じる不具合等を解消できる。
【0019】
また本発明の一態様では、前記操作情報取得部は、前記第3の座標軸回りでの回転角度情報である第3の回転角度情報を取得し、取得された前記第3の回転角度情報に基づいて、ヒット体によりヒットされるヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定するヒット演算処理を行うヒット演算処理部を含んでもよい。
【0020】
このようにすれば、コントローラの第3の回転角度情報を反映させたヒット演算処理が可能になり、これまでにないヒット演算処理を実現できる。
【0021】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット体による前記ヒット対象物のヒットタイミングにおける前記コントローラの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0022】
このようにすれば、ヒットタイミングでのコントローラの第3の回転角度情報を、ヒット対象物のヒット後の移動方向や回転状態に反映させることが可能になる。
【0023】
また本発明の一態様では、前記操作情報取得部は、前記第3の座標軸に沿った方向での加速度情報を取得し、前記ヒット演算処理部は、前記第3の座標軸に沿った方向での前記加速度情報に基づいて、前記ヒット体による前記ヒット対象物のヒット強さ情報を設定してもよい。
【0024】
このようにすれば、ヒット対象物の移動方向や回転状態については、コントローラの第3の回転角度情報により設定しながら、ヒット体によるヒット対象物のヒットの強さについては、第3の座標軸に沿った方向での加速度情報により設定できるようになる。
【0025】
また本発明の一態様では、前記ヒット演算処理部は、ヒット判定期間における前記コントローラの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0026】
このようにすれば、ヒット判定期間において取得されたコントローラの第3の回転角度情報を、ヒット対象物の移動方向や回転状態に反映させたヒット演算処理を実現できる。
【0027】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット判定期間における前記コントローラの前記第3の回転角度情報の変化情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0028】
このようにすれば、ヒット判定期間でのコントローラの第3の回転角度情報の変化を、ヒット演算処理に反映できるようになる。
【0029】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット判定期間の第1のタイミングにおける前記第3の回転角度情報と、前記ヒット判定期間の第2のタイミングにおける前記第3の回転角度情報とに基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0030】
このようにすれば、ヒットタイミング前の第1のタイミングでの第3の回転角度情報と、ヒットタイミング後の第2のタイミングでの第3の回転角度情報とに基づいて、ヒット対象物の移動方向や回転状態が設定されるようになり、よりインテリジェントで精度の高いヒット演算処理を実現できる。
【0031】
また本発明の一態様では、前記操作情報取得部は、前記第3の座標軸に沿った方向での加速度情報を取得し、前記ヒット演算処理部は、前記第1のタイミングと前記第2のタイミングの間のヒットタイミングにおける前記第3の座標軸に沿った方向での加速度情報に基づいて、前記ヒット体による前記ヒット対象物のヒット強さ情報を設定してもよい。
【0032】
このようにすれば、第1、第2のタイミングでの第3の座標軸回りの第3の回転角度情報により、ヒット対象物の移動方向や回転状態を設定しながら、ヒットタイミングにおける第3の座標軸に沿った方向での加速度情報に基づいて、ヒット体によるヒット対象物のヒットの強さを設定できるようになる。
【0033】
また本発明の一態様では、前記コントローラが基準ポジションに設定されたことを検出する基準ポジション検出部を含み、前記操作情報取得部は、前記コントローラが前記基準ポジションに設定された時に初期値に設定される前記第1、第2の回転角度情報を取得してもよい。
【0034】
このようにすれば、基準ポジションにおいて設定される初期値を基準とした第1、第2の回転角度情報を取得できるようになる。
【0035】
また本発明の一態様では、前記基準ポジション検出部は、前記コントローラが前記基準ポジションに設定されたことを知らせる所定の操作を、プレーヤが前記コントローラにより行った場合に、前記コントローラが前記基準ポジションに設定されたと判断してもよい。
【0036】
このようにすれば、プレーヤの簡素な操作で、コントローラが基準ポジションであることを検出して、第1、第2の回転角度情報の初期値を設定できるようになる。
【図面の簡単な説明】
【0037】
【図1】本実施形態の画像生成システムの構成例。
【図2】プレーヤによるコントローラの操作の説明図。
【図3】図3(A)、図3(B)はコントローラの構成例。
【図4】コントローラの各座標軸回りでの回転角度情報の説明図。
【図5】図5(A)、図5(B)はキャラクタのスイング動作の例。
【図6】キャラクタのスイング動作の例。
【図7】モーション合成の説明図。
【図8】モーションデータの説明図。
【図9】図9(A)、図9(B)は基準モーションの例。
【図10】図10(A)、図10(B)は基準モーションの例。
【図11】図11(A)、図11(B)はコントローラの回転角度情報の説明図。
【図12】本実施形態のモーション合成手法の説明図。
【図13】本実施形態のモーション合成手法の説明図。
【図14】本実施形態のモーション合成手法の説明図。
【図15】図15(A)、図15(B)は基準モーションの詳細な設定例。
【図16】図16(A)、図16(B)は基準モーションの例。
【図17】図17(A)、図17(B)は基準モーションの例。
【図18】図18(A)、図18(B)は基準モーションの例。
【図19】図19(A)、図19(B)は回転角度が角度リミット値を超えた場合の処理の説明図。
【図20】図20(A)〜図20(C)はヒット時の回転角度情報に基づくヒット演算処理の説明図。
【図21】図21(A)〜図21(C)はヒット判定区間で取得された回転角度情報に基づくヒット演算処理の説明図。
【図22】図22(A)〜図22(D)はヒット後のボールの移動状態、動作状態の説明図。
【図23】加速度情報に基づくボールのヒット強さ情報の設定手法の説明図。
【図24】基準ポジションの検出手法の説明図。
【図25】図25(A)〜図25(F)はヒット判定エリアの設定手法の説明図。
【図26】図26(A)〜図26(C)は本実施形態の種々の適用例についての説明図。
【図27】本実施形態の詳細な処理例のフローチャート。
【図28】本実施形態の詳細な処理例のフローチャート。
【発明を実施するための形態】
【0038】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0039】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0040】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、各種センサ(角速度センサ、加速度センサ等)、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0041】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0042】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0043】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0044】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0045】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0046】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0047】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0048】
処理部100は、操作情報取得部101、ゲーム演算部102、オブジェクト空間設定部104、ヒット演算処理部106、基準ポジション検出部108、ヒット判定エリア設定部110、モーション処理部112、キャラクタ制御部114、仮想カメラ制御部116、画像生成部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0049】
操作情報取得部101は、プレーヤが操作部160を用いて各種操作を行うと、その操作情報を取得する。具体的には本実施形態では、操作部160としてセンサ(例えば角速度センサ又は加速度センサ等)を有するコントローラ(図2参照)が用意される。そして、操作情報取得部101は、このコントローラからのセンサ情報(センサの出力信号又は当該出力信号に所定の処理を施した情報)に基づいて、所定座標軸回り(少なくとも1つの座標軸回り)でのコントローラの回転角度情報(回転角度、回転角度と等価なパラメータ)を、操作情報として取得する。例えばコントローラの長手方向(長軸方向)に沿って設定された座標軸を第3の座標軸とし、第3の座標軸に直交する座標軸を第1、第2の座標軸としたとする。この場合に、操作情報取得部101は、第1、第2の座標軸回りでの回転角度情報である第1、第2の回転角度情報を取得する。或いは、第3の座標軸回りでの回転角度情報である第3の回転角度情報を取得する。例えばコントローラが有する角速度センサのセンサ情報に基づいて第1、第2、第3の回転角度情報を取得する。またコントローラが加速度センサを有する場合には、例えば第3の座標軸に沿った方向での加速度情報を取得する。或いは、第1、第2の座標軸に沿った方向での加速度情報を取得してもよい。
【0050】
ゲーム演算部102はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0051】
オブジェクト空間設定部104は、モデルオブジェクト(人、ロボット、車、戦闘機、ミサイル、弾等の移動体)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクトデータ記憶部172には、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【0052】
ヒット演算処理部106は、ヒット体とヒット対象物のヒット演算処理を行う。例えば、操作情報取得部101により取得された回転角度情報に基づいて、ヒット体によりヒットされるヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定する。
【0053】
ここでヒット体は、ヒット対象物をヒットするためのオブジェクトであり、例えばキャラクタが所持(把持)する所持オブジェクト(把持オブジェクト)や、キャラクタを構成する部位オブジェクトなどを想定できる。キャラクタの所持オブジェクトとしては、例えばテニス、卓球、バトミントン等のラケットや、野球のバットや、ゴルフのクラブや、剣等の武器や、マラカス等の楽器や、或いはドラムのスティック等を想定できる。キャラクタの部位オブジェクトとしては、手、足、頭、胴体等の部位を想定できる。ヒット対象物は、ヒット体によりヒットされるものであり、ヒット対象物としては、ボールや、他キャラクタの武器や、壁、床等の固定物や、他キャラクタの手、足、頭、胴体等の部位を想定できる。
【0054】
またヒット対象物のヒット後の移動状態は、例えば、ヒット後のヒット対象物の移動方向、移動速度、或いは移動加速度等である。またヒット対象物のヒット後の動作状態は、例えばヒット後のヒット対象物の回転状態、或いはモーション状態等である。回転状態は、ヒット対象物の回転方向、回転速度(角速度)、或いは回転加速度(角加速度)等であり、モーション状態は、ヒット対象物をモーションデータ等により動作させた場合の各種状態である。
【0055】
またヒット演算処理部106は、ヒット体によるヒット対象物のヒットタイミング(ヒット時)におけるコントローラの第3の座標軸回りの第3の回転角度情報に基づいて、ヒット対象物のヒット後の移動方向(広義には移動状態)及び回転状態(広義には動作状態)の少なくとも一方を設定する。また操作情報取得部101が、第3の座標軸に沿った方向での加速度情報(遠心力情報)を取得した場合には、取得された加速度情報に基づいて、ヒット体によるヒット対象物のヒット強さ情報(ヒット力、ヒット加速度)を設定する。
【0056】
またヒット演算処理部106は、ヒット判定期間におけるコントローラの第3の回転角度情報に基づいて、ヒット対象物の移動方向や回転状態を設定してもよい。ここでヒット判定期間は、ヒットタイミングを含む期間である。例えばヒット演算処理部106は、ヒット判定期間における第3の回転角度情報の変化情報に基づいて、ヒット対象物の移動方向や回転状態を設定する。例えばヒット判定期間の第1のタイミング(ヒットタイミングの前のタイミング)における第3の回転角度情報と、ヒット判定期間の第2のタイミング(ヒットタイミングの後のタイミング)における第3の回転角度情報とに基づいて、ヒット対象物の移動方向や回転状態を設定する。また第1のタイミングと第2のタイミングの間のヒットタイミングにおける第3の座標軸に沿った方向での加速度情報に基づいて、ヒット体によるヒット対象物のヒット強さ情報を設定する。
【0057】
基準ポジション検出部108は、コントローラが基準ポジションに設定されたことを検出する処理を行う。例えばコントローラが基準ポジションに設定されたことを知らせる所定の操作(例えばボタンを押す等)を、プレーヤがコントローラにより行った場合に、基準ポジションに設定されたと判断する。そして例えばコントローラが内蔵するセンサが角速度センサである場合に、操作情報取得部101は、コントローラが基準ポジションに設定された時に初期値(例えば0度)に設定される回転角度情報を取得する。ここで基準ポジションは、例えばコントローラの第1、第2又は第3の座標軸回りでの回転角度情報を初期値(基準値)に設定するためのポジションである。
【0058】
ヒット判定エリア設定部110は、ヒット体によるヒット対象物のヒット判定エリア(ヒットボリューム)の設定処理を行う。例えばヒット判定エリア設定部110は、操作情報取得部101により取得された回転角度情報に基づいて、ヒット判定エリアを設定する。このヒット判定エリアは、ヒット体によるヒット対象物のヒットを判定するためのエリア(ボリューム)であり、例えばヒット体(一部又は全部)を含むエリアである。そして操作情報取得部101が、コントローラの第1、第2の座標軸回りでの第1、第2の回転角度情報を取得した場合には、ヒット判定エリア設定部110は、取得された第1、第2の回転角度情報に基づいて、ヒット判定エリアを設定する。例えば、第1、第2の回転角度情報に基づいて、オブジェクト空間内でのヒット判定エリアの位置や方向等を設定する。
【0059】
モーション処理部112は、キャラクタ(モデルオブジェクト)を動作させるための各種のモーション処理を行う。例えばモーションデータ記憶部174に記憶されるモーション(モーションデータ)に基づいてモーションの生成処理や再生処理を行う。具体的にはモーション記憶部174は、複数の基準モーション(基準モーションデータ)を記憶する。そしてモーション処理部112は、これらの複数の基準モーションを合成して、キャラクタのモーションを生成する。
【0060】
更に具体的にはモーション記憶部174は、キャラクタの所持オブジェクト(ラケット、クラブ、バット等)又は部位オブジェクト(足、手等)の高さが第1の高さである場合用の基準モーションである複数の第1の高さ用基準モーションを記憶する。また所持オブジェクト又は部位オブジェクトが第2の高さである場合用の基準モーションである少なくとも1つの第2の高さ用基準モーションとを記憶する。そしてモーション処理部112は、第1の高さ用基準モーションと第2の高さ用基準モーションを合成して、キャラクタのモーションを生成する。
【0061】
例えば操作情報取得部101が、第1、第2の座標回りでの回転角度情報である第1、第2の回転角度情報を、操作情報として取得したとする。この場合にはモーション処理部112は、第1、第2の回転角度情報に基づきモーション合成率を求める。例えば基準モーションが対応づけられる角度範囲と第1、第2の回転角度情報との関係に基づき、モーション合成率を求める。そして、求められたモーション合成率で、複数の第1の高さ用基準モーションと、少なくとも1つの第2の高さ用基準モーション(1又は複数の第2の高さ用基準モーション)を合成して、キャラクタのモーションを生成する。
【0062】
例えばモーション記憶部174は、第1の高さ用基準モーションとして、第1の回転角度情報がα=αiであり、第2の回転角度情報がβ=βjである場合の第1の基準モーションと、第1の回転角度情報がα=αi+1であり、第2の回転角度情報がβ=βjである場合の第2の基準モーションを記憶する。また、第2の高さ用基準モーションとして、第1の回転角度情報がα=αiであり、第2の回転角度情報がβ=βj+1である場合の第3の基準モーションと、第1の回転角度情報がα=αi+1であり、第2の回転角度情報がβ=βj+1である場合の第4の基準モーションを記憶する。そしてモーション処理部112は、第1の回転角度情報αがαi≦α≦αi+1であり、第2の回転角度情報βがβj≦β≦βj+1である場合に、第1、第2の回転角度情報α、βに基づきモーション合成率を求める。そして求められたモーション合成率で、第1、第2、第3、第4の基準モーションを合成して、キャラクタのモーションを生成する。
【0063】
またモーション記憶部174が、第2の高さ用基準モーションとして、第2の回転角度情報がβ=βj+1である場合の基準モーションである第3の基準モーションを記憶してもよい。この場合にはモーション処理部112は、第1、第2の回転角度情報α、βに基づきモーション合成率を求め、求められたモーション合成率で、第1、第2、第3の基準モーションを合成して、キャラクタのモーションを生成する。
【0064】
また操作情報取得部101が、第3の座標軸回りでの第3の回転角度情報を取得したとする。この場合にモーション処理部112は、上述の第1〜第4の基準モーションや第1〜第3の基準モーションにより生成されたキャラクタのモーションを、第3の回転角度情報に基づいて補正してもよい。例えばキャラクタの部位オブジェクトや所持オブジェクトの回転角度等を、取得された第3の回転角度情報に基づき補正する。
【0065】
またモーション処理部112は、第1の回転角度情報が角度リミット値を超えた場合には、角度リミット値に対応する基準モーションを用いてモーション合成を行ってもよい。例えば第1の回転角度情報が角度リミット値である場合に使用される基準モーションにより合成されるモーションで、キャラクタを動作させる。
【0066】
キャラクタ制御部114は、キャラクタの制御処理を行う。キャラクタはゲームに登場する人、ロボット、動物等の移動体である。具体的にはキャラクタ制御部114は、キャラクタ(モデルオブジェクト)を移動させるための演算を行う。或いはキャラクタを動作させるための演算を行う。即ち操作情報取得部101により取得された操作情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、キャラクタをオブジェクト空間内で移動させたり、キャラクタを動作(モーション、アニメーション)させる処理を行う。具体的には、キャラクタの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0067】
そして本実施形態ではキャラクタ制御部114は、操作情報取得部101により取得された回転角度情報に基づき求められるモーションで、キャラクタを動作させる制御を行う。例えば操作情報取得部101が、コントローラの第1、第2の座標軸回りでの第1、第2の回転角度情報を取得した場合には、取得された第1、第2の回転角度情報に基づき求められるモーションで、キャラクタを動作させる制御を行う。例えばモーション処理部112が、第1、第2の回転角度情報に基づき基準モーションを合成してキャラクタのモーションを生成すると、キャラクタ制御部114は、生成されたモーションでキャラクタを動作させる。例えばキャラクタ(スケルトン)を構成する各部位オブジェクト(スケルトンを構成する骨)の位置又は回転角度(方向)等を含むモーションデータにより、キャラクタの各部位オブジェクト(骨)を動かすことで(スケルトン形状を変形させることで)、キャラクタを動作させる。
【0068】
仮想カメラ制御部116は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。
【0069】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ176(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお描画処理は頂点シェーダ処理やピクセルシェーダ処理により実現してもよい。
【0070】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0071】
2.本実施形態の手法
2.1 第1、第2の高さ用基準モーションを用いたモーション合成
図2では、プレーヤは、コントローラ200(ゲームコントローラ)を片手で所持し、あたかもテニスのラケットのようにコントローラ200を振って、スイングを行う。またゲーム装置300(画像生成システム)により生成される画像が表示される表示部190には、プレーヤが操作するキャラクタCHが映し出される。そして、プレーヤがコントローラ200を持ってスイングすると、画面上のキャラクタCHも、プレーヤのスイングに応じたスイングを行う。例えばプレーヤがフラットショットのスイングを行うと、キャラクタCHもフラットショットのスイングを行い、プレーヤがトップスピンショットやスライスショットのスイングを行うと、キャラクタCHもトップスピンショットやスライスショットのスイングを行う。そして画面上のキャラクタCHが、相手キャラクタCCが打ったボールBLを打ち返すことで、プレーヤはテニスゲームを楽しむ。
【0072】
なお、以下では本実施形態をテニスゲームに適用した場合を主に例にとり説明する。このテニスゲームの場合には、ヒット体はラケットになり、ヒット対象物はボールになる。但し、本実施形態はテニスゲーム以外のスポーツゲーム(例えば卓球、バトミントン、野球、サッカー、バレーボール等)や、スポーツゲーム以外の各種ゲーム(例えば格闘ゲーム、戦闘ゲーム、ロールプレイングゲーム等)に適用できる。
【0073】
図3(A)、図3(B)にコントローラ200の構成例を示す。図3(A)はコントローラ200を正面から見た正面図であり、図3(B)は正面向かって右側から見た右側面図である。コントローラ200は、面取りされた略四角断面を有する棒状の形状になっており、プレーヤは棒を握る要領でコントローラ200を片手で所持して操作する。
【0074】
コントローラ200の正面側(操作面側)には、方向指示キー210、Aボタン212等の各種スイッチ類(入力デバイス)が設けられている。またコントローラ200の裏面側(背面側)にはトリガボタン214が設けられている。
【0075】
コントローラ200は、撮像素子220、無線通信モジュール222、加速度センサ224、角速度センサ230を有する。またコントローラ200は、図示しないコントローラ制御部やバイブレータ(振動機構)やスピーカ等も内蔵する。コントローラ制御部は例えば制御IC(CPU、ASIC)やメモリにより構成され、コントローラ200の全体の制御や各種処理を行う。バイブレータは、コントローラ制御部からの振動制御信号にしたがって振動を発生させ、コントローラ200を把持するプレーヤの手に振動を感じさせる。スピーカは、コントローラ制御部から出力された音信号に応じた音を出力する。
【0076】
撮像素子220はCCDやCMOSセンサなどにより実現され、コントローラ200の長手方向(長軸方向)の前方の様子を撮像する。
【0077】
無線通信モジュール222は、図2のゲーム装置300(ゲーム装置本体)と無線通信(近接無線通信)を行うためのものである。例えば、方向指示キー210、Aボタン212等により入力された操作情報、撮像素子220により得られた撮像情報、加速度センサ224、角速度センサ230により得られたセンサ情報(加速度情報、角速度情報)は、無線通信モジュール222によりゲーム装置300に無線通信される。
【0078】
加速度センサ224は、ユーザがコントローラ200を動かした時(振った時)の加速度情報を検出するセンサである。例えば加速度センサ224は直交3軸方向の各加速度情報を検出する。例えば図4において、コントローラ200の長辺方向に沿って設定された座標軸をZ軸(広義には第3の座標軸)とし、Z軸に直交する座標軸をX軸、Y軸(広義には第1、第2の座標軸)としたとする。この場合には加速度センサ224は、例えばX軸方向に沿った第1の加速度情報、Y軸方向に沿った第2の加速度情報、Z軸方向に沿った第3の加速度情報を検出して、センサ情報として出力する。
【0079】
角速度センサ230は、ユーザがコントローラ200を動かした時(回転させた時)の角速度情報を検出するセンサである。例えば角速度センサ230は、直交3軸での角速度情報を検出するセンサであり、コントローラ200のX軸、Y軸、Z軸回りでの角速度情報を検出する。具体的には、図4においてX軸回りの回転角度をα、Y軸回りの回転角度をβ、Z軸回りの回転角度をγとすると、これらのα、β、γについての角速度を検出する。なおX、Y、Zの座標軸の正負の向きや、α、β、γの回転方向は、図4に限定されず適宜設定できる。また角速度センサ230は、例えば多軸角速度センシングジャイロスコープなどにより実現できる。具体的にはMEMS構造の多軸角速度センシングジャイロスコープなどにより実現できる。
【0080】
なお角速度センサ230は、コントローラ200の本体の拡張端子に接続される拡張ユニット202内に設けられているが、コントローラ200の本体内に設けてもよい。また以下では説明を簡略化するため、コントローラ本体と拡張ユニットが一体に形成されているものとして図示する。
【0081】
またコントローラ200は、プレーヤが所持(把持、取り付け)可能であり、例えば長手方向に沿った座標軸で回転可能な形状であることが望ましいが、図3(A)、図3(B)の形状(略直方体形状。長手方向に沿った切断面が略長方形形状)には限定されない。例えば図3(A)、図3(B)の形状の一部が異なる形状にしたり、コントローラ200を収納するケースを設けて使用するなどの種々の変形実施が可能である。
【0082】
図5(A)、図5(B)、図6に、コントローラ200により操作されるキャラクタCHのモーション(基準モーション)の例を示す。図5(A)は基準ポジションでのキャラクタCHのモーション(姿勢)の例である。図5(B)はテークバック時のモーションの例であり、図6はボールのヒット時(インパクト時)のモーションの例である。プレーヤが、図2のようにコントローラ200を持って、テニスのラケットのようにコントローラ200を振ってスイングを行うと、画面上のキャラクタCHも、図5(A)〜図6のようにスイングを行う。
【0083】
さて、よりリアルなテニスゲームを実現するためには、図5(A)〜図6に示すキャラクタCHのスイングについてもリアルに表現することが望ましい。例えば図2において、プレーヤがコントローラ200を用いて低い打点でのスイング(低い軌道のスイング)を行った場合には、画面上のキャラクタCHも低い打点のスイングを行うようにする。またプレーヤが高い打点でのスイング(高い軌道のスイング)を行った場合には、画面上のキャラクタCHも高い打点のスイングを行うようにする。或いはプレーヤがコントローラ200を用いてサーブやスマッシュのスイングを行った場合には、キャラクタCHも自動的にサーブやスマッシュのスイングを行うようにする。
【0084】
しかしながら、このようなキャラクタCHのスイングを、モーション処理により実現しようとすると、モーションデータのデータ量が膨大になってしまうという課題がある。
【0085】
また、スイングの軌道の高低の切り替えやサーブへのスイングの切り替えを、例えばコントローラ200のボタン等を押すことで実現する手法も考えられる。
【0086】
しかしながら、この手法では、現実世界のテニスとは異なる操作をユーザに要求してしまうことになると共に、ユーザの操作が煩雑になってしまうという問題がある。
【0087】
そこで本実施形態では、キャラクタの所持オブジェクトや部位オブジェクトの高さに対応した基準モーションを用意する。例えばラケット等の所持オブジェクトや、手、足等の部位オブジェクトが、第1の高さである場合用の第1の高さ用基準モーションと、第2の高さである場合用の第2の高さ用基準モーションを用意する。そして、これらの第1の高さ用基準モーションと第2の高さ用基準モーションを合成して、キャラクタのモーションを生成し、生成されたモーションでキャラクタを動作させる。例えば、コントローラ200のX軸回り、Y軸回りでの回転角度α、β(第1、第2の回転角度情報)に基づき、モーション合成率(モーションブレンド率)を求める。そして求められたモーション合成率で第1、第2の高さ用基準モーションを合成することで、キャラクタのモーションを生成する。
【0088】
図7は、モーション合成(モーションブレンド)の原理を示す図である。図7では、基準モーションM1と基準モーションM2が合成されて、モーションMBが生成されている。このモーション合成は、MB=M1×K1+M2×K2の式で表すことができる。ここで、K1、K2がモーション合成率に相当し、K1+K2=1の関係が成り立つ。
【0089】
例えば図8に示すようにキャラクタは複数の部位オブジェクト(パーツオブジェクト)PB0〜PB15により構成される。そして各部位オブジェクトの位置や方向は、キャラクタのスケルトンモデルを構成する骨B0〜B19の位置(関節J0〜J15の位置)や回転角度(親の骨に対する子の骨の相対的な回転角度)により特定される。図1のモーション記憶部174には、この骨の位置、回転角度のデータが、キャラクタのモーションのデータとして記憶される。そして図7のモーション合成は、スケルトンの各骨のデータ(マトリクスデータ)に対して、MB=M1×K1+M2×K2で表される処理を行うことで実現できる。なお骨の回転角度だけをモーションデータに含ませ、骨の位置(関節位置)については、キャラクタのモデルオブジェクトデータの中に含ませてもよい。
【0090】
そして本実施形態では、ラケット等のキャラクタの所持オブジェクト(図8のPR)や部位オブジェクトの高さに応じた基準モーションを用意し、これらの基準モーションを図7のモーション合成で合成することで、キャラクタのモーションを生成している。
【0091】
具体的には図1のモーション記憶部174は、キャラクタの所持オブジェクト(又は部位オブジェクト。以下、同様)の高さが第1の高さである場合用の基準モーションである複数の第1の高さ用基準モーションを記憶する。また所持オブジェクトが第2の高さである場合用の基準モーションである少なくとも1つの第2の高さ用基準モーションとを記憶する。そしてモーション処理部112は、複数の第1の高さ用基準モーションと、少なくとも1つの第2の高さ用基準モーションを合成して、キャラクタのモーションを生成する。
【0092】
ここで、第1の高さ用基準モーションは、所持オブジェクト(部位オブジェクト)が第1の高さであることを想定して用意されたモーションである。なお、複数の第1の高さ用基準モーションの間で、所持オブジェクトの高さが正確に一致する必要はない。また第2の高さ用基準モーションは、所持オブジェクト(部位オブジェクト)が第2の高さ(第1の高さと異なる高さ)であることを想定して用意されたモーションである。なお、複数の第2の高さ用基準モーションの間で、所持オブジェクトの高さが正確に一致する必要はない。
【0093】
図9(A)、図9(B)に、第1の高さ用基準モーションの例を示す。これらの基準モーションはラケットRKが低い位置にある場合のモーションである。また図9(A)はインパクト時(ボールのヒット時)のモーションであり、図9(B)はテークバック時のモーションである。なお図9(A)、図9(B)では、キャラクタCHを見る視点位置(仮想カメラの位置)が異なっており、図9(A)は前側からキャラクタCHを見た図であり、図9(B)は右側からキャラクタCHを見た図になっている。
【0094】
図10(A)、図10(B)に、第2の高さ用基準モーションの例を示す。これらの基準モーションは、ラケットRKが図9(A)、図9(B)よりも高い位置にある場合のモーションである。また図10(A)は図9(A)と同様にインパクト時のモーションであり、図10(B)は図9(B)と同様にテークバック時のモーションである。
【0095】
図10(A)と図9(A)を比べれば明らかなように、図10(A)では図9(A)に比べてラケットRKの位置が高くなっている。同様に、図10(B)と図9(B)を比べれば明らかなように、図10(B)では図9(B)に比べてラケットRKの位置が高くなっている。
【0096】
本実施形態では、図9(A)、図9(B)に示す第1の高さ用基準モーションと、図10(A)、図10(B)に示す第2の高さ用基準モーションを、図7で説明したモーション合成手法で合成することで、キャラクタCHのモーションを生成する。具体的には、コントローラ200のX軸、Y軸回りでの回転角度α、β(第1、第2の座標回りでの第1、第2の回転角度情報)が取得された場合には、これらの回転角度α、βに基づきモーション合成率を求める。そして、求められたモーション合成率で、図9(A)、図9(B)の第1の高さ用基準モーションと、図10(A)、図10(B)の第2の高さ用基準モーションを合成して、キャラクタCHのモーションを生成する。
【0097】
例えば図11(A)のC1では、基準方向DRに対してコントローラ200のX軸回りでの回転角度はα=αiになっている。また図11(A)のC2では、基準方向DRに対してコントローラ200のX軸回りでの回転角度はα=αi+1になっている。
【0098】
一方、図11(B)のC3では、基準方向DRに対してコントローラ200のY軸回りでの回転角度はβ=βjになっている。また図11(B)のC4では、基準方向DRに対してコントローラ200のY軸回りでの回転角度はβ=βj+1になっている。
【0099】
そして図12では、第1の高さ用基準モーションとして、X軸回りでの回転角度(広義には第1の回転角度情報)がα=αiであり、Y軸回りでの回転角度(広義には第2の回転角度情報)がβ=βjである場合の基準モーションである第1の基準モーションM(i、j)が用意される。また第1の高さ用基準モーションとして、X軸回りでの回転角度がα=αi+1であり、Y軸回りでの回転角度がβ=βjである場合の基準モーションである第2の基準モーションM(i+1、j)が用意される。
【0100】
これらの第1の高さ用の第1、第2の基準モーションM(i、j)、M(i+1、j)は、例えば図9(A)、図9(B)に示すラケットRKが低い場合の基準モーションに相当する。そして、これらのモーションM(i、j)、M(i+1、j)のデータはモーション記憶部174に記憶される。
【0101】
また図12では、第2の高さ用基準モーションとして、X軸回りでの回転角度がα=αiであり、Y軸回りでの回転角度がβ=βj+1である場合の基準モーションである第3の基準モーションM(i、j+1)が用意される。また第2の高さ用基準モーションとして、X軸回りでの回転角度がα=αi+1であり、Y軸回りでの回転角度がβ=βj+1である場合の基準モーションである第4の基準モーションM(i+1、j+1)が用意される。
【0102】
これらの第2の高さ用の第3、第4の基準モーションM(i、j+1)、M(i+1、j+1)は、例えば図10(A)、図10(B)に示すラケットRKが高い場合のモーションに相当する。そして、これらのモーションM(i、j+1)、M(i+1、j+1)のデータはモーション記憶部174に記憶される。
【0103】
そしてコントローラ200のX軸方向での回転角度αがαi≦α≦αi+1であり、Y軸方向での回転角度βがβj≦β≦βj+1である場合には、モーション合成の対象となる基準モーションとして、第1、第2、第3、第4の基準モーションM(i、j)、M(i+1、j)、M(i、j+1)、M(i+1、j+1)が選択される。また回転角度α、βに基づきモーション合成率が求められる。そして、求められたモーション合成率で、第1、第2、第3、第4の基準モーションM(i、j)、M(i+1、j)、M(i、j+1)、M(i+1、j+1)を合成して、キャラクタのモーションMBを生成する。
【0104】
具体的には例えば、第1の基準モーションM(i、j)と第2の基準モーションM(i+1、j)を合成して、モーションMB1=K1×M(i、j)+K2×M(i+1、j)を求める。また第3の基準モーションM(i、j+1)と第4の基準モーションM(i+1、j+1)を合成して、モーションMB2=K1×M(i、j+1)+K2×M(i+1、j+1)を求める。そしてモーションMB1とMB2を合成して、最終的なキャラクタのモーションMB=K3×MB1+K4×MB2を求める。
【0105】
ここで、K1+K2=1、K3+K4=1の関係が成り立つ。そして、K1、K2(=1−K1)は、コントローラ200の回転角度αとαi、αi+1との関係により求められる。例えばα=αiである場合には、K1=1、K2=0になり、α=αi+1の場合には、K1=0、K2=1になる。またαが、αiとαi+1の中間(真ん中)の角度である場合には、K1=K2=1/2になる。
【0106】
同様に、K3、K4(=1−K3)は、コントローラ200の回転角度βとβj、βj+1との関係により求められる。例えばβ=βjである場合には、K3=1、K4=0になり、β=βj+1の場合には、K3=0、K4=1になる。またβが、βjとβj+1の中間(真ん中)の角度である場合には、K3=K4=1/2になる。
【0107】
なお図12では、モーション合成の対象となる第2の高さ用基準モーションが、M(i、j+1)、M(i+1、j+1)というように2個である場合について説明したが、モーション合成の対象となる第2の高さ用基準モーションは1個であってもよい。その場合の例を図13に示す。
【0108】
図13では、図12と同様に、第1の高さ用基準モーションとして、X軸回りでの回転角度がα=αiであり、Y軸回りでの回転角度がβ=βjである場合の第1の基準モーションM(i、j)と、X軸回りでの回転角度がα=αi+1であり、Y軸回りでの回転角度がβ=βjである場合の第2の基準モーションM(i+1、j)が用意される。
【0109】
また図13では、第2の高さ用基準モーションとして、Y軸回りでの回転角度がβ=βj+1である場合の第3の基準モーションM(j+1)が用意される。この第3の基準モーションM(j+1)としては、例えばキャラクタのラケットが縦になるサーブモーションやスマッシュモーションを想定できる。
【0110】
そしてコントローラ200のX軸方向での回転角度αがαi≦α≦αi+1であり、Y軸方向での回転角度βがβj≦β≦βj+1である場合には、第1、第2、第3の基準モーションM(i、j)、M(i+1、j)、M(j+1)が選択される。また回転角度α、βに基づきモーション合成率が求められる。そして、求められたモーション合成率で、第1、第2、第3の基準モーションM(i、j)、M(i+1、j)、M(j+1)を合成して、キャラクタのモーションMBを生成する。
【0111】
具体的には例えば、第1の基準モーションM(i、j)と第2の基準モーションM(i+1、j)を合成して、モーションMB1=K1×M(i、j)+K2×M(i+1、j)を求める。そしてモーションMB1と第3の基準モーションM(j+1)を合成して、最終的なキャラクタのモーションMB=K3×MB1+K4×M(j+1)を求める。
【0112】
ここで、K1+K2=1、K3+K4=1の関係が成り立つ。そして、K1、K2は、コントローラ200の回転角度αとαi、αi+1との関係により求められる。同様に、K3、K4は、コントローラ200の回転角度βとβj、βj+1との関係により求められる。
【0113】
以上のように本実施形態によれば、キャラクタの所持オブジェクト(部位オブジェクト)の高さに応じた第1の高さ用基準モーションと第2の高さ用基準モーションが用意される。そして、これらの第1の高さ用基準モーション、第2の高さ用基準モーションを合成することで、キャラクタのモーションが生成される。従って,キャラクタの所持オブジェクトを基準としたモーション合成が可能になり、例えば所持オブジェクトの軌道(例えばスイングの軌道)等を適正に表現できるようになり、これまでにないタイプのモーション合成を実現できる。
【0114】
また本実施形態では、コントローラの回転角度情報に基づいてモーション合成率を求め、求められたモーション合成率で第1の高さ用基準モーションと第2の高さ用基準モーションのモーション合成が行われる。このようにすれば、キャラクタの所持オブジェクト(部位オブジェクト)の高さが、コントローラの回転角度情報に応じた高さに設定されるモーションを生成できる。従って、コントローラの回転操作に応じて、所持オブジェクト等の軌道等が変化するモーションを生成できるようになり、よりリアルなモーション生成が可能になる。
【0115】
また本実施形態によれば、基準モーションのデータ量を最小限に抑えながら、キャラクタの所持オブジェクトや部位オブジェクトのリアルな軌道等を表現できる。従って、少ないモーションデータ量でリアルな画像表現を実現できる。
【0116】
なお操作情報として、コントローラ200のZ軸回りでの回転角度γ(第3の回転角度情報)が取得される場合には、この回転角度γも反映させたキャラクタのモーション制御を行うことが望ましい。例えばコントローラ200の回転角度γが、フラットショットのラケット面の角度に対応する場合にはフラットショットのモーションを行い、回転角度γが、トップスピンショットのラケット面の角度に対応する場合にはトップスピンショットのモーションを行うように、キャラクタを制御する。また回転角度γが、スライスショットのラケット面の角度に対応する場合には、スライスショットのモーションを行うように、キャラクタを制御する。
【0117】
更に具体的には図14に示すように、回転角度がα=αi、β=βj、γ=γmの場合の第1の基準モーションM(i、j、m)と、回転角度がα=αi+1、β=βj、γ=γmの場合の第2の基準モーションM(i+1、j、m)と、回転角度がα=αi、β=βj+1、γ=γmの場合の第3の基準モーションM(i、j+1、m)と、回転角度がα=αi+1、β=βj+1、γ=γmの場合の第4の基準モーションM(i+1、j+1、m)を、モーション記憶部174に記憶する。そしてこれらの第1、第2、第3、第4の基準モーションM(i、j、m)、M(i+1、j、m)、M(i、j+1、m)、M(i+1、j+1、m)を合成して、キャラクタのモーションを生成すればよい。
【0118】
またモーション合成率は、図12の場合と同様にαとαi、αi+1の関係、βとβj、βj+1の関係等により求めればよい。また図13の場合と同様に、第1、第2、第3の基準モーションM(i、j、m)、M(i+1、j、m)、M(i、j+1、m)、M(j+1、m)を合成して、キャラクタのモーションを生成してもよい。
【0119】
なお、回転角度γに対して、例えばフラット、トップスピン、スライスなどの各ショットに対応した複数の角度範囲を設け、これらの各角度範囲に対応する第1、第2、第3、第4の基準モーションを用意する。例えば第1の角度範囲用の第1、第2、第3、第4の基準モーション、第2の角度範囲用の第1、第2、第3、第4の基準モーションというように、各角度範囲毎に第1、第2、第3、第4の基準モーションを用意する。そして回転角度γが、これらの角度範囲のいずれに属するかに基づいて、回転角度γに応じた第1、第2、第3、第4の基準モーションを選択してもよい。
【0120】
或いは、図12や図13の手法により、回転角度α、βに基づいて生成されたモーションを、回転角度γに基づいて補正することで、最終的なキャラクタのモーションを生成してもよい。例えば回転角度α、βに基づいてモーションを生成した後、図8の肩の骨B4に対する腕の骨B5の回転角度(相対的な回転角度)を、コントローラ200の回転角度γに基づいて補正する。例えばフラットショットの場合には、フラットショットに対応する腕の振りになるように、骨B4に対する骨B5の回転角度を、回転角度γに基づき補正する。同様に、トップスピンショット、スライスショットの場合には、トップスピンショット、スライスショットに対応する腕の振りになるように、骨B4に対する骨B5の回転角度を回転角度γに基づき補正すればよい。
【0121】
或いは、図8の手の骨B7に対するラケットの骨B20の回転角度を、コントローラ200の回転角度γに基づいて補正してもよい。即ちフラットショット、トップスピン、スライスショットの各ショットの振りになるように、骨B7に対する骨B20の回転角度を補正する。
【0122】
以上のように回転角度γに基づくモーション補正を行えば、図14の手法に比べてモーションのデータ量を減らすことができ、少ないデータ量でリアルなモーション表現を実現できる。
【0123】
また本実施形態では、コントローラ200の回転角度γのみならず、コントローラ200を振る強さやゲーム状況(ゲーム中の状況)に応じた基準モーションを使用して、モーション制御を行ってもよい。
【0124】
例えば、プレーヤがコントローラ200を強く振った場合には、キャラクタが両手でラケットを持つ等の基準モーションを使用する。具体的には、キャラクタは、両手で持ったラケットを各方向(所定方向)に向けた呼吸モーションを行う。
【0125】
またキャラクタがネット付近にポジションにいるゲーム状況では、ボレー動作用の基準モーションを使用する。具体的には、ネット付近でキャラクタがラケットを各方向に向けた呼吸モーションを行う。
【0126】
またキャラクタがボールを追う時には、移動用の基準モーションを使用する。具体的には、ラケットを各方向に向けたままで、ボールを追う走りモーションを行う。
【0127】
また、使用する基準モーションの切り替えの際には、モーションブレンド(モーション合成)を行うことが望ましい。
【0128】
例えばキャラクタがラケットを持って構えた状態から、ボールを追いかけるために走り出す際には、構えの基準モーションから、モーションブレンドにより、徐々に移動用の基準モーションへと移行させる。また移動のモーションは、2つの基準モーションをブレンドすることでそれらの中間を表現する。例えば前方向への移動用の基準モーションと、右斜め前方向への移動用の基準モーションをブレンドすることで、前方向と右斜め前方向の中間の方向への移動用の基準モーションを生成する。
【0129】
また、この場合のモーションブレンドでは、各基準モーションでそれぞれのモーションを生成しているため、ブレンド前からブレンド後もコントローラの回転角度情報に基づく制御を引き継いだままモーションを移行できる。従って、より直感的にキャラクタを制御できるようになる。
【0130】
また、本実施形態で説明した各基準モーションは、それぞれが動いており、時間的に変化するモーションになっている。そして、時間的に変化する各基準モーションをブレンドすることで、スイングの軌道を作ったり、キャラクタが任意の方向に構えたりするようになる。
【0131】
これによって、コントローラ200を振った時や止めた時などに、キャラクタはロボットのような機械的な動作を行うのではなく、躍動的な動作を行うようになる。また、基準モーションの任意のフレーム同士をブレンド(合成)することになるため、画面上では、予め用意したモーションの再生ではなく、コントローラ200の制御によりアニメーションするモーションを再生できる。従って、モーションのゲーム上必要な要素を残しつつ、より直感的にキャラクタを制御できるようになる。
【0132】
2.2 基準モーションの詳細な設定例
図15(A)、図15(B)に基準モーションの詳細な設定例を示す。図15(A)はキャラクタCHを右側から見た図であり、図15(B)はキャラクタCHを左側から見た図である。
【0133】
図15(A)、図15(B)では、第1の高さ用基準モーションとしてMD1〜MD8が用意され、第2の高さ用基準モーションとしてML1〜ML8が用意される。また第3の高さ用基準モーションとしてMU1〜MU8が用意され、第4の高さ用基準モーションとしてMUUが用意される。即ちこれらの基準モーションのデータがモーション記憶部174に記憶される。
【0134】
例えば図16(A)は第4の高さ用基準モーションMUUの例である。図16(A)の基準モーションMUUを用いることで、キャラクタCHのサーブスイングやスマッシュスイングを表現できる。一方、図16(B)は第3の高さ用基準モーションMU1の例である。図16(B)の基準モーションMU1を用いることで、スマッシュに近い高い打点でのスイングを表現できる。
【0135】
例えば図13の基準モーションM(j+1)として、図16(A)の基準モーションMUUを用い、図13の基準モーションM(i、j)として、図16(B)の基準モーションMU1を用いる。また図13の基準モーションM(i+1、j)として、図15(A)の基準モーションMU2を用いる。
【0136】
そして図13で説明した手法により、M(j+1)=MUUと、M(i、j)=MU1と、M(i+1、j)=MU2の基準モーションを合成することで、回転角度α、βが、基準モーションMUU、MU1、MU2に対応する角度範囲にある場合のキャラクタCHのモーションを生成できる。
【0137】
図17(A)は第2の高さ用基準モーションML1の例である。一方、図17(B)は第2の高さ用基準モーションML3の例である。これらの基準モーションML1、ML3では、ラケットRKの高さが第2の高さである場合用の基準モーションである。
【0138】
また図18(A)は第1の高さ用基準モーションMD1の例である。この基準モーションMD1は、ラケットRKの高さが第1の高さである場合用の基準モーションである。図17(A)と図18(A)を比べれば明らかなように、図17(A)に比べて図18(A)の方がラケットRKの高さが低くなっている。
【0139】
図18(B)は第2の高さ用基準モーションML7の例である。この基準モーションML7は、図17(B)のフォアスイングの基準モーションML3とは異なり、バックスイングの基準モーションとなっている。
【0140】
以上のように本実施形態では、図15(A)、図15(B)に示すように各角度範囲に対して3個又は4個の基準モーションに対応する複数の角度範囲を用意する。例えば図15(A)のMU1、MU2、MUUの基準モーションに対応する第1の角度範囲や、ML1、ML2、MU1、MU2の基準モーションに対応する第2の角度範囲を用意する。そして、コントローラ200の回転角度α、βが属する角度範囲を、これらの複数の角度範囲の中から特定し、特定された角度範囲に対応する基準モーションを読み出して、モーション合成を行う。
【0141】
例えば回転角度α、βが、MU1、MU2、MUUに対応する第1の角度範囲に属すると判断された場合には、基準モーションMU1、MU2、MUUを読み出して、モーション合成を行い、キャラクタCHのモーションを生成する。また回転角度α、βが、ML1、ML2、MU1、MU2に対応する第2の角度範囲に属すると判断された場合には、基準モーションML1、ML2、MU1、MU2を読み出して、モーション合成を行い、キャラクタCHのモーションを生成する。
【0142】
このようにすれば、例えば図2でプレーヤがコントローラ200をラケットのように振り回した場合に、コントローラ200の回転角度α、βに基づいて、コントローラ200の位置に対応した適正なモーションが合成されて、キャラクタのモーションが生成されるようになる。例えばプレーヤがコントローラ200をサーブのように振り上げた場合には、キャラクタCHのモーションも図16(A)に示すようなモーションになる。またプレーヤがコントローラ200を高い打点の軌道でスイングすると、キャラクタCHのモーションも図16(B)に示すような高い打点のスイングのモーションになる。従って、コントローラ200のスイング軌道とキャラクタCHのラケットRKのスイング軌道が対応するようになり、よりリアルなモーション表現を実現できる。
【0143】
なお図15(A)、図15(B)に示すような基準モーションの設定を行った場合に、以下のような不具合が生じる可能性がある。例えばプレーヤが、コントローラ200をスイングして、キャラクタCHが図5(B)のようなフォアスイングのテークバックの構えになった後、更にコントローラ200を後ろ側に引いたとする。すると、キャラクタCHのモーションが図18(B)に示すようなバックスイングの構えになってしまうおそれがある。キャラクタCHがバックスイングのテークバックを行った後に、更にコントローラ200を後ろ側に引いた場合も同様である。
【0144】
そこで本実施形態では、回転角度α(第1の回転角度情報)が角度リミット値を超えた場合には、角度リミット値に対応する基準モーションを用いてモーション合成を行うようにしている。例えば図19(A)では、回転角度αが、角度リミット値αLM=180度を超えている。また図19(B)では、回転角度αが、角度リミット値αLM=−180度を超えている。この場合には図15(A)、図15(B)の基準モーションのうち、角度リミット値αLMに対応する基準モーションMD5、ML5、MU5等を使用してモーション合成を行う。例えば回転角度αが角度リミット値αLMを超えた時に使用されていたモーション(合成されたモーション)を、そのまま使用する。
【0145】
こうすることで、プレーヤが、コントローラ200を、テークバックの後に更に後ろ側に引いた場合にも、フォアスイングからバックスイングに不自然に切り替わったり、バックスイングからフォアスイングに不自然に切り替わったりするなどの事態を防止できる。
【0146】
2.3 コントローラの回転角度情報に基づくヒット演算処理
さて、現実世界のテニスでは、図6のようなフラットショット以外にも、トップスピンやスライスなどの各種ショットがある。例えばトップスピンショットでは、図6のフラットショットに比べて、ボールのインパクト時にラケット面の向きが下側に向き(水平面に対する角度が90度よりも小さくなり)、ボールに対して順方向の回転がかかる。一方、スライスショットでは、図6のフラットショットに比べて、ボールのインパクト時にラケット面の向きが上側に向き(水平面に対する角度が90度よりも大きくなり)、ボールに対して逆方向の回転がかかる。
【0147】
しかしながら、これまでのテニスゲームでは、このようなトップスピンやスライスなどの各種ショットを、プレーヤが違和感を感じない操作で実現することが難しかった。例えばトップスピンやスライスの打ち分けを、方向指示キーやボタンの操作で行う手法も考えられる。具体的には方向指示キーで下側を指示した場合にはトップスピンのショットになり、上側を指示した場合にはスライスショットになるようにする。しかしながら、このような操作は、現実世界でのテニスのスイングの感覚とは異なるものであり、このような操作では、実際にテニスをプレイしているというような仮想現実感をプレーヤに与えることが難しい。
【0148】
特に図2のように、プレーヤがコントローラ200をテニスラケットのようにスイングすることで、画面上のキャラクタCHがスイングしてボールBLを打ち返す場合には、このような方向指示キー等を用いたショットの打ち分けでは、プレーヤの仮想現実感を今ひとつ向上できない。即ち、コントローラ200を振る動作については、現実世界のテニスと同様であるのに、トップスピンやスライスの打ち分けは、現実世界とは異なってしまい、図2のようなゲーム操作を実現した意味が薄れてしまう。
【0149】
そこで本実施形態では、コントローラ200の所定座標軸回りでの回転角度情報、例えばZ軸(第3の座標軸)回りでの回転角度情報を取得する。そして取得された回転角度情報に基づいて、ラケットRK(広義にはヒット体)によりヒットされるボールBL(広義にはヒット対象物)の移動状態や動作状態(移動方向や回転状態)を設定するヒット演算処理を行う。
【0150】
例えば図20(A)〜図20(C)では、ラケットRKによるボールBLのヒットタイミングにおけるコントローラ200の回転角度情報に基づいて、ボールBLの移動状態や動作状態を設定している。
【0151】
具体的には図20(A)では、ヒットタイミングTHでのコントローラ200のZ軸回りでの回転角度γは、基準ポジションでの初期値を例えば0(度)とした場合に、γ=0になっている。このようにヒットタイミングTHでのZ軸回りの回転角度がγ=0である場合には、ラケットRKの面が水平面に対して垂直であると判断して、例えばフラットショットになるようにボールBLの移動方向や回転状態等を設定する。例えばボールBLが、ほぼ無回転で、比較的速い速度で、フラットショットの軌道で飛ぶように、ボールBLの移動演算処理を行う。
【0152】
一方、図20(B)では、ヒットタイミングTHでのコントローラ200の回転角度はγ=γAとなっている。従って、ラケット面と水平面のなす角度が90度よりも小さくなっており、ラケット面の向きが下向きであると判断して、例えばトップスピンショットになるようにボールBLの移動方向や回転状態等を設定する。例えばボールBLが、順方向の回転でトップスピンショットの軌道で飛ぶように、ボールBLの移動演算処理を行う。
【0153】
図20(C)では、ヒットタイミングTHでのコントローラ200の回転角度はγ=−γBとなっている。従って、ラケット面と水平面のなす角度が90度よりも大きくなっており、ラケット面の向きが上向きであると判断して、例えばスライスショットになるようにボールBLの移動方向や回転状態等を設定する。例えばボールBLが、逆方向の回転でスライスショットの軌道で飛ぶように、ボールBLの移動演算処理を行う。
【0154】
なお図20(A)〜図20(C)の各ショットの切り替えは、例えば回転角度γが属する角度範囲を判定することで実現できる。一例としては、−γ1≦γ≦γ1である場合にはフラットショットであると判断し、γ1<γ<γ2である場合にはトップスピンショットであると判断し、−γ2<γ<−γ1である場合にはスライスショットであると判断すればよい。
【0155】
図21(A)〜図21(C)では、ヒット判定期間におけるコントローラ200の回転角度情報に基づいて、ボールBLのヒット後の移動状態や動作状態を設定している。具体的にはヒット判定期間における回転角度情報の変化情報に基づいて、ボールBLのヒット後の移動状態や動作状態を設定する。例えば第1のタイミングでの回転角度情報と第2のタイミングでの回転角度情報に基づいて、ボールBLの移動状態や動作状態を設定する。
【0156】
例えば図21(A)では、ヒットタイミングTHの前の第1のタイミングTM1でのZ軸回りでの回転角度はγ=0になっており、ラケット面が水平面に対して垂直になっていると判断される。またヒットタイミングTHでは、回転角度はγ=γAとなっており、ラケット面の向きが、タイミングTM1に比べて下方向に向いていると判断される。またヒットタイミングTHの後の第2のタイミングTM2では、回転角度はγ=γB>γAとなっており、ラケット面の向きが、ヒットタイミングTHに比べて更に下方向に向いていると判断される。このように、ヒットタイミングの前後で、ラケット面の向きが下方向に変化した場合には、例えばトップスピンショットになるようにボールBLの移動方向や回転状態等を設定する。またヒットタイミング前後での回転角度の変化が大きい場合には、例えばトップスピンの回転速度(回転量)を速くしてもよい。
【0157】
また図21(B)では、ヒットタイミングTHの前の第1のタイミングTM1でのZ軸回りでの回転角度はγ=0になっており、ラケット面が水平面に対して垂直になっていると判断される。またヒットタイミングTHでは、回転角度はγ=−γAとなっており、ラケット面の向きが、タイミングTM1に比べて上方向に向いていると判断される。またヒットタイミングTHの後の第2のタイミングTM2では、回転角度はγ=−γB<−γAとなっており、ラケット面の向きが、ヒットタイミングTHに比べて更に上方向に向いていると判断される。このように、ヒットタイミングの前後で、ラケット面の向きが上方向に変化した場合には、例えばスライスショットになるようにボールBLの移動方向や回転状態等を設定する。またヒットタイミング前後での回転角度の変化が大きい場合には、スライスの回転速度(回転量)を速くしてもよい。
【0158】
また図21(C)では、タイミングTM1、TH、TM2において、ラケット面の向きが上方向に向いていると判断される。また例えばY軸回りでの回転角度β等に基づいて、ラケットRKの位置が徐々に上側に移動していると判断される。従って、この場合には、ボールBLが上方向に飛ぶロブショットになるようにボールBLの移動方向や回転状態等を設定する。
【0159】
このように、図20(A)〜図20(C)では、ヒットタイミングTHでの回転角度だけを用いているのに対して、図21(A)〜図21(C)では、ヒットタイミングTHの前後のタイミングTM1、TM2での回転角度を反映させてボールBLの移動方向や回転状態等を設定している。このようにすることで、ヒット後のボールBLの軌道を現実世界の軌道に近づけることが可能になり、プレーヤの仮想現実感を更に向上できる。また、ヒットタイミングのみならず、その前後のタイミングでのコントローラの回転角度も反映されるため、フォロースルーやテークバックでのラケット面の角度も反映させたショットが可能になる。
【0160】
図22(A)〜図22(D)に、フラット、トップスピン、スライス、ロブの各ショットの回転方向や移動方向の設定例を示す。同図に示すように、フラットやロブではボールBLはほぼ無回転で飛び、トップスピンでは順方向の回転になり、スライススピンでは逆方向の回転になる。またフラットではボールBLが水平に飛ぶのに対して、ロブでは上方向に飛ぶ。なおボールBLの回転方向や移動方向の設定は、図22(A)〜図22(D)に限定されず、種々の変形実施が可能である。例えば、順方向に回転しながら上方向に飛ぶトップスピンロブなどを再現してもよい。また、ヒット後のボールBLのショットの軌道は、ヒット時に設定された移動状態や動作状態に基づく物理シミュレーション処理を行うことで求めてもよいし、複数のショット軌道の中から、ヒット時に設定された移動状態や動作状態に応じたショット軌道を選択することで求めてもよい。また、ショットされたボールBLが地面(フィールド)でバウンドした後の軌道についても、各ショットの種類に応じた軌道に設定することが望ましい。具体的にはヒット時の回転方向や回転速度など回転状態を反映させた軌道に設定する。例えばトップスピンショットの場合には、バウンド後に高く跳ね上がるような軌道に設定する。またフラットショットであれば同じ角度で跳ねるような軌道にする。またスライスショットの場合には、例えばボールが地面で滑るように低く弾んで伸びる軌道に設定する。 以上のように本実施形態では、コントローラ200の所定座標軸回りでの回転角度情報を用いてヒット演算処理を実行している。このようにすれば、例えばテニスのラケット面のコントロール等を、コントローラ200の所定座標軸回りでの回転操作により実現できる。従って、従来のスポーツゲーム等では実現することが難しかった操作インターフェース環境を提供できる共に、コントローラ200の操作と、キャラクタの動きとがマッチするようになるため、プレーヤの仮想現実感を向上できる。
【0161】
例えば従来は、コントローラ200に設けられた加速度センサ224を用いて、プレーヤによりコントローラ200が振られたことを検知していた。このような加速度センサ224だけを用いる手法では、各座標軸回りでの絶対的な回転角度を正確に求めることは困難である。また加速度センサ224では、コントローラ200の長手方向に沿ったZ軸回りでの回転角度を求めることは難しい。
【0162】
これに対して本実施形態では、例えば角速度センサ230を用いてコントローラ200の各座標軸回りでの回転角度を求め、この回転角度を用いてヒット演算処理を実現している。従って、加速度センサ224だけを用いる従来の手法に比べて、よりインテリジェントで精度の高いヒット演算処理を実現できる。なおコントローラ200の各座標軸回りでの回転角度を求めるセンサとして、角速度センサ230以外のセンサを採用することも可能である。
【0163】
2.4 ヒット強さの設定
さて、上述のように本実施形態では、コントローラ200の角速度センサ230を用いて所定座標軸回りでの回転角度を求めて、ヒット演算処理を実行している。この時、例えば加速度センサ224で得られた加速度を用いて、ボールBLのヒットの強さ(ヒット力、ヒット加速度)を設定してもよい。
【0164】
具体的には図23に示すように、加速度センサ224により、Z軸に沿った方向(第3の座標軸に沿った方向)での加速度AVを検出する。この加速度AVは、コントローラ200をスイングすることでZ軸方向に生じる遠心力(正確には遠心力と重力の合力)に相当する加速度である。そして、検出された加速度AVに基づいて、ラケットRKによりボールBLがヒットされた時のヒットの強さを設定する。
【0165】
例えば、プレーヤがコントローラ200を速いスピードでスイングした場合には、Z軸方向の遠心力に相当する加速度AVは大きくなる。従って、この場合には、ボールBLが強くヒットされるようにする。例えばボールBLのヒット方向での加速度を大きな値に設定する。一方、プレーヤがコントローラ200を遅いスピードでスイングした場合には、Z軸方向の遠心力に相当する加速度AVも小さくなる。従って、この場合には、ボールBLが弱くヒットされるようにする。例えばボールBLのヒット方向での加速度を小さな値に設定する。
【0166】
このようにすれば、スイングスピードとヒットの強さが比例するようになり、現実世界のボールBLのショットを、より忠実に再現できる。即ち角速度センサ230と加速度センサ224を上手く使い分けて、ラケットRKによるボールBLのヒット演算処理を実現できるようになる。なお、ボールBLのヒットの強さを、例えばX軸回りでの回転速度等も反映させて設定してもよい。例えばX軸回りでの回転速度が速い場合には、ボールBLのヒットの強さも大きくする。
【0167】
また加速度AVに基づいて、キャラクタがラケットRK(所持オブジェクト、部位オブジェクト)を振るスイングの速さ(モーション速度)を設定してもよい。例えば加速AVが大きい場合には、ラケットRKの振りが速くなるようなモーションをキャラクタに行わせ、加速度AVが小さい場合には、ラケットRKの振りが遅くなるようなモーションをキャラクタに行わせる。こうすることで、更にリアルな画像を生成できる。
【0168】
2.5 基準ポジション
角速度センサ230を用いた場合には、センサから得られる情報は角速度になる。従って、絶対的な回転角度を求める場合には、角速度の積算処理等を行うことになるため、回転角度の初期値を設定することが望ましい。このため本実施形態では、基準ポジション検出部108が、コントローラ200の基準ポジションを検出する。この基準ポジションは、例えばコントローラ200のX、Y、Z軸回りでの回転角度α、β、γの初期値を設定するためのポジションである。
【0169】
この基準ポジションの検出手法としては種々の手法が考えられるが、本実施形態では、コントローラ200が基準ポジションに設定されたことを知らせる所定の操作を、プレーヤが行った場合に、基準ポジションに設定されたと判断している。具体的には図24では、プレーヤは、ラケットに相当するコントローラ200を体の前側に持って、テニスと同様の基準ポジションの姿勢をとる。そしてトリガボタン214を押すことで、コントローラ200が基準ポジションに設定されたことを、ゲーム装置300側に知らせる。すると、コントローラ200の回転角度α、β、γが初期値(例えば0度)に設定される。その後、プレーヤがコントローラ200をラケットのように見なしてスイングを行うと、角速度センサ230で検出された角速度に基づいて、回転角度α、β、γが初期値から変化して、基準ポジションからの回転角度が取得される。そしてキャラクタCHが図5(A)〜図6に示すようなスイングを行って、ボールBLのショットを行う。
【0170】
このようにすれば、プレーヤは、実際のテニスと同様に、ラケットに相当するコントローラ200を体の前側に持った後に、トリガボタン214を押してスイングするという動作を繰り返すことで、相手キャラクタCCとのラリーを楽しむことができる。従って、プレーヤが違和感を感じない動作でテニスゲームを楽しむことができる。
【0171】
なお基準ポジションの検出手法は図24の手法に限定されない。例えばトリガボタン214以外のボタン等の操作で、基準ポジションであることを知らせるようにしてもよい。或いは図3(A)の撮像素子220による撮像で、表示部190に取り付けられた発光素子等を検出することで、基準ポジションを検出してもよい。例えばプレーヤが、撮像素子220を表示部190の画面側に向けた場合に基準ポジションを検出する。
【0172】
2.6 ヒット判定エリアの設定
本実施形態では角速度センサ230により取得されたコントローラ200の回転角度γに基づいて、ラケットRKの面の角度を設定する。一方、角速度センサ230により取得されたコントローラ200の回転角度α、β等に基づいて、ヒット判定エリアを設定してもよい。
【0173】
例えば図25(A)では、コントローラ200は、基準方向DR(基準ポジションの場合の方向)に対してX軸回りにα=αiだけ回転している。この場合には図25(B)に示すように、ヒット判定エリアHAについても、基準方向に対してα=αiだけ回転させた位置に設定する。例えばキャラクタCHの中心から所定半径位置にラケットRKがあると想定し、このラケットRK(ラケット面)を含むヒット判定エリアHA(ヒットボリューム)を設定する。そして、ラケットRKによりボールBLがヒットされたか否かは、ヒット判定エリアHAとボールBLとのヒットチェック処理を行うことで判定する。
【0174】
また図25(C)では、コントローラ200は、基準方向DRに対してY軸回りにβ=βjだけ回転している。この場合には図25(D)に示すように、ヒット判定エリアHAについても、基準方向に対してβ=βjだけ回転させた位置に設定する。
【0175】
このようにすれば、プレーヤが、コントローラ200をラケットのように振り回すと、振り回した時の各位置に対応する位置にラケットRKが配置されて、ラケットRKを内包するヒット判定エリアHAとボールBLとのヒットチェック処理が行われるようになる。従って、プレーヤは、実際のテニスのようにコントローラ200を振り回すことで、ボールBLをショットすることが可能になり、現実世界に忠実なテニスゲームを実現できる。
【0176】
なおヒット判定エリアHAの設定の際に、Z軸回りでの回転角度γを反映させるようにしてもよい。例えばヒット判定エリアHAが板形状である場合には、その板形状の面の角度を、Z軸回りでの回転角度γにより設定してもよい。
【0177】
またキャラクタの能力パラメータやステータスパラメータに基づいて、ヒット判定エリアHAの大きさを変化させてもよい。例えば図25(E)において、キャラクタCH1は能力パラメータが低いキャラクタであるため、ラケットRK(ラケット面)に設定されるヒット判定エリアHAの大きさも小さくなっている。従って、キャラクタCH1のスイング時には、ボールBLがヒットしにくくなり、キャラクタCH1の能力が低いことをゲーム結果に反映させることができる。
【0178】
一方、図25(F)では、キャラクタCH2は能力パラメータが高いキャラクタであるため、ヒット判定エリアHAの大きさは大きくなっている。従って、キャラクタCH2のスイング時には、キャラクタCH1の場合に比べて、ボールBLがヒットしやくすなるため、キャラクタCH2の能力が高いことをゲーム結果に反映させることが可能になる。
【0179】
なお、キャラクタの現在の調子を表すステータスパラメータに応じて、ヒット判定エリアHAの大きさを変化させてもよい。或いは、ゲームプレイの際に設定する難易度設定に応じて、ヒット判定エリアHAの大きさを設定してもよい。例えば初級プレーヤの場合にはヒット判定エリアHAの大きさを大きくし、上級プレーヤの場合にはヒット判定エリアHAの大きさを小さくする。こうすることで、簡素な処理で難易度設定を行うことが可能になる。
【0180】
なお、以上では本実施形態の手法をテニスゲームに適用した場合について説明したが、本実施形態はこれに限定されない。例えば図26(A)のような野球ゲームに適用することも可能である。この場合にはヒット体は、キャラクタが所持(把持)するバットになり、ヒット対象物は野球のボールになる。この場合にはバットの高さに応じた基準モーションを用意して合成すればよい。或いはコントローラ200のZ軸回りでの回転角度γに基づいて、バットによりヒットされるボールの回転状態等を設定すればよい。またゴルフゲームに適用した場合には、ヒット体は、キャラクタが所持するクラブになり、ヒット対象物はゴルフのボールになる。この場合にも、クラブの高さに応じた基準モーションを用意して合成すればよい。或いは回転角度γに基づいて、ボールの回転状態等を設定すればよい。
【0181】
また図26(B)のように剣の格闘ゲームに適用することも可能である。この場合には、ヒット体は、キャラクタが所持する剣になり、ヒット対象物は、相手キャラクタ(相手キャラクタの各部位)等になる。この場合には剣の高さに応じた基準モーションを用意して合成すればよい。或いはコントローラ200のZ軸回りの回転角度γに基づいて、剣の刃が向く方向等を設定する。例えば回転角度γが適正で、剣の刃が向く方向が適正であると、剣の切れ味が鋭くなる。或いは回転角度γにより剣の向く方向を制御することで、いわゆる峰打ち等も表現できるようになる。
【0182】
またヒット体は、図26(A)、図26(B)のようなキャラクタの所持物(把持物)には限定されず、キャラクタを構成する手、足等の部位であってもよい。例えば図26(C)のサッカーゲームでは、キャラクタの足や頭の部位がヒット体になり、サッカーのボールがヒット対象物になる。この場合にも、足や頭の部位の高さに応じた基準モーションを用意して合成すればよい。或いはコントローラ200のZ軸回りでの回転角度γにより、ボールを蹴った時の足のひねりなどを表現し、蹴った後のボールの回転状態等を設定してもよい。また例えばバレーボールゲームでは、キャラクタの手の部位がヒット体になり、バレーのボールがヒット対象物になる。この場合にも、手の部位の高さに応じた基準モーションを用意して合成すればよい。或いはコントローラ200のZ軸回りでの回転角度γに基づいて、アタック時やサーブ時のボールの回転状態等を設定してもよい。
【0183】
なお図26(A)、図26(B)の野球ゲームや剣の格闘ゲーム等において、野球のバットや剣を模したケースにコントローラ200を収納して使用するようにしてもよい。また図26(C)のサッカーゲームにおいて、コントローラ200を、バンド等を用いてプレーヤの足に取り付けるようにしてもよい。
【0184】
3.詳細な処理
次に本実施形態の詳細な処理例について図27、図28のフローチャートを用いて説明する。
【0185】
図27はヒット演算処理のフローチャートである。まず図24で説明したような基準ポジションの設定操作が、プレーヤにより行われたか否かを判断する(ステップS1)。そして、基準ポジションの設定操作が行われた場合には、回転角度の初期化を指示する(ステップS2)。これにより例えばコントローラ200の回転角度(α、β、γ)が初期値に設定される。そしてコントローラ200の回転角度、加速度を取得し、取得された回転角度、加速度を記憶部170に保存する(ステップS3、S4)。
【0186】
次に、ボールがラケットにヒットしたか否かを判断し、ヒットした場合には、ヒット後に取得された回転角度等を、所定フレーム(例えば数フレーム)が経過するまで保存する(ステップS5、S6、S7)。これにより、ヒットタイミングの前後のタイミングを含むヒット判定区間で取得された回転角度等が保存される。
【0187】
次に、図21(A)〜図21(C)で説明したように、ボールのヒットタイミングの前後(第1、第2のタイミング)の回転角度の変化情報に基づいて、ボールの回転方向、回転速度等を設定する(ステップS8)。例えばトップスピンの場合には順方向の回転になり、スライスの場合には逆方向の回転になるように回転方向を設定する。またヒットタイミングの前後での回転角度(γ)の変化が大きい場合には、ボールの回転速度(回転量)を速くする。
【0188】
次に、コントローラ200の回転角度や回転角度の変化情報やヒットタイミングに基づいて、ボールのヒット方向を設定する(ステップS9)。例えば振り遅れのヒットタイミングの場合にはボールのヒット方向を例えば右方向に設定し、早振りのヒットタイミングの場合にはボールのヒット方向を例えば左方向に設定する。そして図23で説明したように、ヒットタイミングでのZ軸方向に沿った加速度に基づいて、ボールのヒット強さを設定する(ステップS10)。
【0189】
図28はモーション処理のフローチャートである。まずコントローラ200の回転角度(α、β)を取得する(ステップS11)。そして図12、図13、図15(A)、図15(B)等で説明したように、取得された回転角度が属する角度範囲を特定する(ステップS12)。
【0190】
次に、特定された角度範囲に対応する基準モーションを読み出す(ステップS13)。図12を例に取れば、αi≦α≦αi+1、βj≦β≦βj+1の角度範囲に対応する基準モーションとして、第1、第2、第3、第4の基準モーションM(i、j)、M(i+1、j)、M(i、j+1)、M(i+1、j+1)が読み出される。また取得された回転角度(α、β)に基づいて、モーション合成率(K1、K2、K3、K4)を求める(ステップS14)。そして、読み出された基準モーションを、求められたモーション合成率で合成して、キャラクタのモーションを生成する(ステップS15)。この時、例えば回転角度(γ)に基づくモーション補正を行う。そして、生成されたモーション(補正後のモーション)でキャラクタを動作させる(ステップS16)。
【0191】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(ヒット体、ヒット対象物等)と共に記載された用語(ラケット、ボール等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、ヒット演算処理、モーション処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【0192】
100 処理部、101 操作情報取得部、102 ゲーム演算部、
104 オブジェクト空間設定部、106 ヒット演算処理部、
108 基準ポジション検出部、110 ヒット判定エリア設定部、
112 モーション処理部、114 キャラクタ制御部、116 仮想カメラ制御部、
120 画像生成部、130 音生成部、160 操作部、170 記憶部、
172 オブジェクトデータ記憶部、174 モーション記憶部、176 描画バッファ、
180 情報記憶媒体、190 表示部、192 音出力部、194 補助記憶装置、
196 通信部、200 コントローラ、202 拡張ユニット、210 方向指示キー、
212 Aボタン、214 トリガボタン、220 撮像素子、
222 無線通信モジュール、224 加速度センサ、230 角速度センサ

【特許請求の範囲】
【請求項1】
複数の基準モーションを記憶するモーション記憶部と、
前記複数の基準モーションを合成して、キャラクタのモーションを生成するモーション処理部と、
生成されたモーションに基づいて前記キャラクタを動作させる制御を行うキャラクタ制御部と、
画像を生成する画像生成部として、
コンピュータを機能させ、
前記モーション記憶部は、
前記キャラクタが所持する所持オブジェクト又は前記キャラクタを構成する部位オブジェクトの高さが第1の高さである場合用の基準モーションである複数の第1の高さ用基準モーションと、
前記所持オブジェクト又は前記部位オブジェクトが第2の高さである場合用の基準モーションである少なくとも1つの第2の高さ用基準モーションとを記憶し、
前記モーション処理部は、
前記複数の第1の高さ用基準モーションと、前記少なくとも1つの第2の高さ用基準モーションを合成して、前記キャラクタのモーションを生成することを特徴とするプログラム。
【請求項2】
請求項1において、
コントローラの長軸方向に沿って設定された座標軸を第3の座標軸とし、前記第3の座標軸に直交する座標軸を第1、第2の座標軸とした場合に、前記第1、第2の座標回りでの回転角度情報である第1、第2の回転角度情報を、操作情報として取得する操作情報取得部として、
コンピュータを更に機能させ、
前記モーション処理部は、
前記第1、第2の回転角度情報に基づきモーション合成率を求め、求められた前記モーション合成率で、前記複数の第1の高さ用基準モーションと、前記少なくとも1つの第2の高さ用基準モーションを合成して、キャラクタのモーションを生成することを特徴とするプログラム。
【請求項3】
請求項2において、
前記モーション記憶部は、
前記第1の高さ用基準モーションとして、前記第1の回転角度情報がα=αiであり、前記第2の回転角度情報がβ=βjである場合の基準モーションである第1の基準モーションと、前記第1の回転角度情報がα=αi+1であり、前記第2の回転角度情報がβ=βjである場合の基準モーションである第2の基準モーションを記憶し、
前記第2の高さ用基準モーションとして、前記第1の回転角度情報がα=αiであり、前記第2の回転角度情報がβ=βj+1である場合の基準モーションである第3の基準モーションと、前記第1の回転角度情報がα=αi+1であり、前記第2の回転角度情報がβ=βj+1である場合の基準モーションである第4の基準モーションを記憶し、
前記モーション処理部は、
取得された前記第1の回転角度情報αがαi≦α≦αi+1であり、取得された前記第2の回転角度情報βがβj≦β≦βj+1である場合に、前記第1、第2の回転角度情報α、βに基づき前記モーション合成率を求め、求められた前記モーション合成率で、前記第1、第2、第3、第4の基準モーションを合成して、キャラクタのモーションを生成することを特徴とするプログラム。
【請求項4】
請求項2において、
前記モーション記憶部は、
前記第1の高さ用基準モーションとして、前記第1の回転角度情報がα=αiであり、前記第2の回転角度情報がβ=βjである場合の基準モーションである第1の基準モーションと、前記第1の回転角度情報がα=αi+1であり、前記第2の回転角度情報がβ=βjである場合の基準モーションである第2の基準モーションを記憶し、
前記第2の高さ用基準モーションとして、前記第2の回転角度情報がβ=βj+1である場合の基準モーションである第3の基準モーションを記憶し、
前記モーション処理部は、
取得された前記第1の回転角度情報αがαi≦α≦αi+1であり、取得された前記第2の回転角度情報βがβj≦β≦βj+1である場合に、前記第1、第2の回転角度情報α、βに基づき前記モーション合成率を求め、求められた前記モーション合成率で、前記第1、第2、第3の基準モーションを合成して、キャラクタのモーションを生成することを特徴とするプログラム。
【請求項5】
請求項2乃至4のいずれかにおいて、
前記操作情報取得部は、
前記第3の座標軸回りでの回転角度情報である第3の回転角度情報を取得し、
前記モーション処理部は、
生成された前記キャラクタのモーションを、前記第3の回転角度情報に基づいて補正することを特徴とするプログラム。
【請求項6】
請求項2乃至5のいずれかにおいて、
前記モーション処理部は、
前記第1の回転角度情報が角度リミット値を超えた場合には、前記角度リミット値に対応する基準モーションを用いてモーション合成を行うことを特徴とするプログラム。
【請求項7】
請求項2乃至6のいずれかにおいて、
前記操作情報取得部は、
前記第3の座標軸回りでの回転角度情報である第3の回転角度情報を取得し、
取得された前記第3の回転角度情報に基づいて、ヒット体によりヒットされるヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定するヒット演算処理を行うヒット演算処理部として、
更にコンピュータを機能させることを特徴とするプログラム。
【請求項8】
請求項7において、
前記ヒット演算処理部は、
前記ヒット体による前記ヒット対象物のヒットタイミングにおける前記コントローラの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項9】
請求項8において、
前記操作情報取得部は、
前記第3の座標軸に沿った方向での加速度情報を取得し、
前記ヒット演算処理部は、
前記第3の座標軸に沿った方向での前記加速度情報に基づいて、前記ヒット体による前記ヒット対象物のヒット強さ情報を設定することを特徴とするプログラム。
【請求項10】
請求項7乃至9のいずれかにおいて、
前記ヒット演算処理部は、
ヒット判定期間における前記コントローラの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項11】
請求項10において、
前記ヒット演算処理部は、
前記ヒット判定期間における前記コントローラの前記第3の回転角度情報の変化情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項12】
請求項11において、
前記ヒット演算処理部は、
前記ヒット判定期間の第1のタイミングにおける前記第3の回転角度情報と、前記ヒット判定期間の第2のタイミングにおける前記第3の回転角度情報とに基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項13】
請求項12において、
前記操作情報取得部は、
前記第3の座標軸に沿った方向での加速度情報を取得し、
前記ヒット演算処理部は、
前記第1のタイミングと前記第2のタイミングの間のヒットタイミングにおける前記第3の座標軸に沿った方向での加速度情報に基づいて、前記ヒット体による前記ヒット対象物のヒット強さ情報を設定することを特徴とするプログラム。
【請求項14】
請求項2乃至13のいずれかにおいて、
前記コントローラが基準ポジションに設定されたことを検出する基準ポジション検出部として更にコンピュータを機能させ、
前記操作情報取得部は、
前記コントローラが前記基準ポジションに設定された時に初期値に設定される前記第1、第2の回転角度情報を取得することを特徴とするプログラム。
【請求項15】
請求項14において、
前記基準ポジション検出部は、
前記コントローラが前記基準ポジションに設定されたことを知らせる所定の操作を、プレーヤが前記コントローラにより行った場合に、前記コントローラが前記基準ポジションに設定されたと判断することを特徴とするプログラム。
【請求項16】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至15のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項17】
複数の基準モーションを記憶するモーション記憶部と、
前記複数の基準モーションを合成して、キャラクタのモーションを生成するモーション処理部と、
生成されたモーションに基づいて前記キャラクタを動作させる制御を行うキャラクタ制御部と、
画像を生成する画像生成部とを含み、
前記モーション記憶部は、
前記キャラクタが所持する所持オブジェクト又は前記キャラクタを構成する部位オブジェクトの高さが第1の高さである場合用の基準モーションである複数の第1の高さ用基準モーションと、
前記所持オブジェクト又は前記部位オブジェクトが第2の高さである場合用の基準モーションである少なくとも1つの第2の高さ用基準モーションとを記憶し、
前記モーション処理部は、
前記複数の第1の高さ用基準モーションと、前記少なくとも1つの第2の高さ用基準モーションを合成して、前記キャラクタのモーションを生成することを特徴とする画像生成システム。

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図7】
image rotate

【図8】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図1】
image rotate

【図5】
image rotate

【図6】
image rotate

【図9】
image rotate

【図10】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2010−237883(P2010−237883A)
【公開日】平成22年10月21日(2010.10.21)
【国際特許分類】
【出願番号】特願2009−83803(P2009−83803)
【出願日】平成21年3月30日(2009.3.30)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】