(57)【要約】【課題】コントローラの回転角度情報を反映させたヒット演算処理を実現できるプログラム、画像生成システム等の提供。【解決手段】画像生成システムは、センサを有するコントローラ２００からのセンサ情報に基づいて所定座標軸回りでのコントローラ２００の回転角度情報を操作情報として取得する操作情報取得部と、取得された回転角度情報に基づいてヒット体によりヒットされるヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定するヒット演算処理を行うヒット演算処理部と、操作情報に応じた画像を生成する画像生成部を含む。【選択図】図２
2010237882.tif 000002
【特許請求の範囲】
【請求項１】
センサを有するコントローラからのセンサ情報に基づいて、所定座標軸回りでの前記コントローラの回転角度情報を、操作情報として取得する操作情報取得部と、
取得された前記回転角度情報に基づいて、ヒット体によりヒットされるヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定するヒット演算処理を行うヒット演算処理部と、
操作情報に応じた画像を生成する画像生成部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項２】
請求項１において、
前記ヒット演算処理部は、
前記ヒット体による前記ヒット対象物のヒットタイミングにおける前記コントローラの前記回転角度情報に基づいて、前記ヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項３】
請求項２において、
前記操作情報取得部は、
前記コントローラの長軸方向に沿って設定された座標軸を第３の座標軸とし、前記第３の座標軸に直交する座標軸を第１、第２の座標軸とした場合に、前記第３の座標軸回りでの回転角度情報である第３の回転角度情報を取得し、
前記ヒット演算処理部は、
前記第３の座標軸回りでの前記第３の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項４】
請求項３において、
前記操作情報取得部は、
前記第３の座標軸に沿った方向での加速度情報を取得し、
前記ヒット演算処理部は、
前記第３の座標軸に沿った方向での前記加速度情報に基づいて、前記ヒット体による前記ヒット対象物のヒット強さ情報を設定することを特徴とするプログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記ヒット演算処理部は、
ヒット判定期間における前記コントローラの前記回転角度情報に基づいて、前記ヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項６】
請求項５において、
前記ヒット演算処理部は、
前記ヒット判定期間における前記コントローラの前記回転角度情報の変化情報に基づいて、前記ヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項７】
請求項６において、
前記操作情報取得部は、
前記コントローラの長軸方向に沿って設定された座標軸を第３の座標軸とし、前記第３の座標軸に直交する座標軸を第１、第２の座標軸とした場合に、前記第３の座標軸回りでの回転角度情報である第３の回転角度情報を取得し、
前記ヒット演算処理部は、
前記ヒット判定期間の第１のタイミングにおける前記第３の回転角度情報と、前記ヒット判定期間の第２のタイミングにおける前記第３の回転角度情報とに基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項８】
請求項７において、
前記操作情報取得部は、
前記第３の座標軸に沿った方向での加速度情報を取得し、
前記ヒット演算処理部は、
前記第１のタイミングと前記第２のタイミングの間のヒットタイミングにおける前記第３の座標軸に沿った方向での加速度情報に基づいて、前記ヒット体による前記ヒット対象物のヒット強さ情報を設定することを特徴とするプログラム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記コントローラの前記センサは角速度センサであり、
前記コントローラが基準ポジションに設定されたことを検出する基準ポジション検出部として更にコンピュータを機能させ、
前記操作情報取得部は、
前記コントローラが前記基準ポジションに設定された時に初期値に設定される前記回転角度情報を取得することを特徴とするプログラム。
【請求項１０】
請求項９において、
前記基準ポジション検出部は、
前記コントローラが前記基準ポジションに設定されたことを知らせる所定の操作を、プレーヤが前記コントローラにより行った場合に、前記コントローラが前記基準ポジションに設定されたと判断することを特徴とするプログラム。
【請求項１１】
請求項１乃至１０のいずれかにおいて、
前記ヒット体による前記ヒット対象物のヒット判定エリアを設定するヒット判定エリア設定部を含み、
前記ヒット判定エリア設定部は、
取得された前記回転角度情報に基づいて、前記ヒット判定エリアを設定することを特徴とするプログラム。
【請求項１２】
請求項１１において、
前記操作情報取得部は、
前記コントローラの長軸方向に沿って設定された座標軸を第３の座標軸とし、前記第３の座標軸に直交する座標軸を第１、第２の座標軸とした場合に、前記第１、第２の座標軸回りでの回転角度情報である第１、第２の回転角度情報を取得し、
前記ヒット判定エリア設定部は、
取得された前記第１、第２の回転角度情報に基づいて、前記ヒット判定エリアを設定することを特徴とするプログラム。
【請求項１３】
請求項１１又は１２において、
前記ヒット体は、キャラクタが所持する所持オブジェクト又は前記キャラクタを構成する部位オブジェクトであり、
前記ヒット判定エリア設定部は、
前記キャラクタの能力パラメータ及びステータスパラメータの少なくとも一方に基づいて、前記ヒット判定エリアの大きさを変化させることを特徴とするプログラム。
【請求項１４】
請求項１乃至１３のいずれかにおいて、
前記キャラクタを制御するキャラクタ制御部として更にコンピュータを機能させ、
前記キャラクタ制御部は、
取得された前記回転角度情報に基づき求められるモーションで、前記キャラクタを動作させる制御を行うことを特徴とするプログラム。
【請求項１５】
請求項１４において、
前記操作情報取得部は、
前記コントローラの長軸方向に沿って設定された座標軸を第３の座標軸とし、前記第３の座標軸に直交する座標軸を第１、第２の座標軸とした場合に、前記第１、第２の座標軸回りでの回転角度情報である第１、第２の回転角度情報を取得し、
前記キャラクタ制御部は、
取得された前記第１、第２の回転角度情報に基づき求められるモーションで、前記キャラクタを動作させる制御を行うことを特徴とするプログラム。
【請求項１６】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至１５のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１７】
センサを有するコントローラからのセンサ情報に基づいて、所定座標軸回りでの前記コントローラの回転角度情報を、操作情報として取得する操作情報取得部と、
取得された前記回転角度情報に基づいて、ヒット体によりヒットされるヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定するヒット演算処理を行うヒット演算処理部と、
操作情報に応じた画像を生成する画像生成部と、
を含むことを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【０００２】
従来より、スポーツ選手を模したキャラクタ等のオブジェクトが配置設定されるオブジェクト空間内（仮想的な３次元空間）において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。テニスゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、コントローラなどの操作部を用いて自身のキャラクタを操作して、他のプレーヤやコンピュータが操作する相手キャラクタがショットしたボールをラケットで打ち返すことでゲームを楽しむ。このようなテニスゲームを楽しむことができる画像生成システムの従来技術としては、例えば特許文献１に開示される技術が知られている。
【０００３】
しかしながら、これまでの画像生成システムでは、コントローラの回転角度情報に基づいて、ラケット等により打ち返されるボールの回転状態を設定することは行われていなかった。このため、実際にラケット面を操作して、トップスピンショットやスライスショットを打ち分けるというような感覚をプレーヤに与えることができなかった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−３０７１６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の幾つかの態様によれば、コントローラの回転角度情報を反映させたヒット演算処理を実現できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【０００６】
本発明の一態様は、センサを有するコントローラからのセンサ情報に基づいて、所定座標軸回りでの前記コントローラの回転角度情報を、操作情報として取得する操作情報取得部と、取得された前記回転角度情報に基づいて、ヒット体によりヒットされるヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定するヒット演算処理を行うヒット演算処理部と、操作情報に応じた画像を生成する画像生成部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【０００７】
本発明の一態様によれば、コントローラの所定座標軸回りでの回転角度情報が操作情報として取得される。そして取得された回転角度情報に基づいて、ヒット対象物の移動状態及び動作状態の少なくとも一方が設定されて、操作情報に応じた画像が生成される。このようにすれば、コントローラの回転角度情報を反映させたヒット演算処理が可能になり、これまでにないヒット演算処理を実現できる。
【０００８】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット体による前記ヒット対象物のヒットタイミングにおける前記コントローラの前記回転角度情報に基づいて、前記ヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定してもよい。
【０００９】
このようにすれば、ヒットタイミングでのコントローラの回転角度情報を、ヒット対象物のヒット後の移動状態や動作状態に反映させることが可能になる。
【００１０】
また本発明の一態様では、前記操作情報取得部は、前記コントローラの長軸方向に沿って設定された座標軸を第３の座標軸とし、前記第３の座標軸に直交する座標軸を第１、第２の座標軸とした場合に、前記第３の座標軸回りでの回転角度情報である第３の回転角度情報を取得し、前記ヒット演算処理部は、前記第３の座標軸回りでの前記第３の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【００１１】
このようにすれば、コントローラが長軸方向である第３の座標軸回りで回転すると、第３の座標軸回りでの第３の回転角度情報に応じて、ヒット対象物の移動方向や回転状態が変化するようになり、これまでにないタイプのヒット演算処理を実現できる。
【００１２】
また本発明の一態様では、前記操作情報取得部は、前記第３の座標軸に沿った方向での加速度情報を取得し、前記ヒット演算処理部は、前記第３の座標軸に沿った方向での前記加速度情報に基づいて、前記ヒット体による前記ヒット対象物のヒット強さ情報を設定してもよい。
【００１３】
このようにすれば、ヒット対象物の移動方向や回転状態については、コントローラの回転角度情報により設定しながら、ヒット体によるヒット対象物のヒットの強さについては、第３の座標軸に沿った方向での加速度情報により設定できるようになる。
【００１４】
また本発明の一態様では、前記ヒット演算処理部は、ヒット判定期間における前記コントローラの前記回転角度情報に基づいて、前記ヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定してもよい。
【００１５】
このようにすれば、ヒット判定期間において取得されたコントローラの回転角度情報を、ヒット対象物の移動状態や動作状態に反映させたヒット演算処理を実現できる。
【００１６】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット判定期間における前記コントローラの前記回転角度情報の変化情報に基づいて、前記ヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定してもよい。
【００１７】
このようにすれば、ヒット判定期間でのコントローラの回転角度情報の変化を、ヒット演算処理に反映できるようになる。
【００１８】
また本発明の一態様では、前記操作情報取得部は、前記コントローラの長軸方向に沿って設定された座標軸を第３の座標軸とし、前記第３の座標軸に直交する座標軸を第１、第２の座標軸とした場合に、前記第３の座標軸回りでの回転情報である第３の回転角度情報を取得し、前記ヒット演算処理部は、前記ヒット判定期間の第１のタイミングにおける前記第３の回転角度情報と、前記ヒット判定期間の第２のタイミングにおける前記第３の回転角度情報とに基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【００１９】
このようにすれば、ヒットタイミング前の第１のタイミングでの第３の回転角度情報と、ヒットタイミング後の第２のタイミングでの第３の回転角度情報とに基づいて、ヒット対象物の移動方向や回転状態が設定されるようになり、よりインテリジェントで精度の高いヒット演算処理を実現できる。
【００２０】
また本発明の一態様では、前記操作情報取得部は、前記第３の座標軸に沿った方向での加速度情報を取得し、前記ヒット演算処理部は、前記第１のタイミングと前記第２のタイミングの間のヒットタイミングにおける前記第３の座標軸に沿った方向での加速度情報に基づいて、前記ヒット体による前記ヒット対象物のヒット強さ情報を設定してもよい。
【００２１】
このようにすれば、第１、第２のタイミングでの第３の座標軸回りの第３の回転角度情報により、ヒット対象物の移動方向や回転状態を設定しながら、ヒットタイミングにおける第３の座標軸に沿った方向での加速度情報に基づいて、ヒット体によるヒット対象物のヒットの強さを設定できるようになる。
【００２２】
また本発明の一態様では、前記コントローラの前記センサは角速度センサであり、前記コントローラが基準ポジションに設定されたことを検出する基準ポジション検出部を含み、前記操作情報取得部は、前記コントローラが前記基準ポジションに設定された時に初期値に設定される前記回転角度情報を取得してもよい。
【００２３】
このようにすれば、基準ポジションにおいて設定される初期値を基準とした回転角度情報を取得できるようになる。
【００２４】
また本発明の一態様では、前記基準ポジション検出部は、前記コントローラが前記基準ポジションに設定されたことを知らせる所定の操作を、プレーヤが前記コントローラにより行った場合に、前記コントローラが前記基準ポジションに設定されたと判断してもよい。
【００２５】
このようにすれば、プレーヤの簡素な操作で、コントローラが基準ポジションであることを検出して、回転角度情報の初期値を設定できるようになる。
【００２６】
また本発明の一態様では、前記ヒット体による前記ヒット対象物のヒット判定エリアを設定するヒット判定エリア設定部を含み、前記ヒット判定エリア設定部は、取得された前記回転角度情報に基づいて、前記ヒット判定エリアを設定してもよい。
【００２７】
このようにすれば、取得されたコントローラの回転角度情報を利用して、ヒット体によるヒット対象物のヒット判定エリアを設定できるようになる。
【００２８】
また本発明の一態様では、前記操作情報取得部は、前記コントローラの長軸方向に沿って設定された座標軸を第３の座標軸とし、前記第３の座標軸に直交する座標軸を第１、第２の座標軸とした場合に、前記第１、第２の座標軸回りでの回転角度情報である第１、第２の回転角度情報を取得し、前記ヒット判定エリア設定部は、取得された前記第１、第２の回転角度情報に基づいて、前記ヒット判定エリアを設定してもよい。
【００２９】
このようにすれば、プレーヤがコントローラを操作して、コントローラの第１、第２の座標軸回りでの第１、第２の回転角度情報が変化すると、それに応じてヒット判定エリアの設定も変化するようになり、このヒット判定エリアを用いたヒット体とヒット対象物のヒット演算処理を実現できる。
【００３０】
また本発明の一態様では、前記ヒット体は、キャラクタが所持する所持オブジェクト又は前記キャラクタを構成する部位オブジェクトであり、前記ヒット判定エリア設定部は、前記キャラクタの能力パラメータ及びステータスパラメータの少なくとも一方に基づいて、前記ヒット判定エリアの大きさを変化させてもよい。
【００３１】
このようにすれば、キャラクタの能力パラメータやステータスパラメータを反映させたヒット演算処理を実現できる。
【００３２】
また本発明の一態様では、前記キャラクタを制御するキャラクタ制御部を含み、前記キャラクタ制御部は、取得された前記回転角度情報に基づき求められるモーションで、前記キャラクタを動作させる制御を行ってもよい。
【００３３】
このようにすれば、コントローラの回転角度情報に基づいて、キャラクタのモーションも変化するようになり、よりリアルな画像生成が可能になる。
【００３４】
また本発明の一態様では、前記操作情報取得部は、前記コントローラの長軸方向に沿って設定された座標軸を第３の座標軸とし、前記第３の座標軸に直交する座標軸を第１、第２の座標軸とした場合に、前記第１、第２の座標軸回りでの回転角度情報である第１、第２の回転角度情報を取得し、前記キャラクタ制御部は、取得された前記第１、第２の回転角度情報に基づき求められるモーションで、前記キャラクタを動作させる制御を行ってもよい。
【００３５】
このようにすれば、コントローラの第１、第２の座標軸回りでの第１、第２の回転角度情報を有効利用して、キャラクタのモーションを制御できるようになる。
【図面の簡単な説明】
【００３６】
【図１】本実施形態の画像生成システムの構成例。
【図２】プレーヤによるコントローラの操作の説明図。
【図３】図３（Ａ）、図３（Ｂ）はコントローラの構成例。
【図４】コントローラの各座標軸回りでの回転角度情報の説明図。
【図５】図５（Ａ）、図５（Ｂ）はキャラクタのスイング動作の例。
【図６】キャラクタのスイング動作の例。
【図７】図７（Ａ）〜図７（Ｃ）はヒット時の回転角度情報に基づくヒット演算処理の説明図。
【図８】図８（Ａ）〜図８（Ｃ）はヒット判定区間で取得された回転角度情報に基づくヒット演算処理の説明図。
【図９】図９（Ａ）〜図９（Ｄ）はヒット後のボールの移動状態、動作状態の説明図。
【図１０】加速度情報に基づくボールのヒット強さ情報の設定手法の説明図。
【図１１】基準ポジションの検出手法の説明図。
【図１２】図１２（Ａ）〜図１２（Ｆ）はヒット判定エリアの設定手法の説明図。
【図１３】図１３（Ａ）〜図１３（Ｃ）は本実施形態の種々の適用例についての説明図。
【図１４】モーション合成の説明図。
【図１５】モーションデータの説明図。
【図１６】図１６（Ａ）、図１６（Ｂ）は基準モーションの例。
【図１７】図１７（Ａ）、図１７（Ｂ）は基準モーションの例。
【図１８】図１８（Ａ）、図１８（Ｂ）はコントローラの回転角度情報の説明図。
【図１９】本実施形態のモーション合成手法の説明図。
【図２０】本実施形態のモーション合成手法の説明図。
【図２１】本実施形態のモーション合成手法の説明図。
【図２２】本実施形態の詳細な処理例のフローチャート。
【図２３】本実施形態の詳細な処理例のフローチャート。
【発明を実施するための形態】
【００３７】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３８】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）のブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００３９】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、各種センサ（角速度センサ、加速度センサ等）、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【００４０】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部１７０に保持される。
【００４１】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、或いはメモリ（ＲＯＭ等）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００４２】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＬＣＤ、有機ＥＬディスプレイ、ＣＲＴ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００４３】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【００４４】
通信部１９６は、有線や無線のネットワークを介して外部（例えば他の画像生成システム、サーバ、ホスト装置）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００４５】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、サーバ（ホスト装置）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（あるいは記憶部１７０、補助記憶装置１９４）に配信してもよい。このようなサーバ（ホスト装置）による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００４６】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部１００は記憶部１７０をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００４７】
処理部１００は、操作情報取得部１０１、ゲーム演算部１０２、オブジェクト空間設定部１０４、ヒット演算処理部１０６、基準ポジション検出部１０８、ヒット判定エリア設定部１１０、モーション処理部１１２、キャラクタ制御部１１４、仮想カメラ制御部１１６、画像生成部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００４８】
操作情報取得部１０１は、プレーヤが操作部１６０を用いて各種操作を行うと、その操作情報を取得する。具体的には本実施形態では、操作部１６０としてセンサ（例えば角速度センサ又は加速度センサ等）を有するコントローラ（図２参照）が用意される。そして、操作情報取得部１０１は、このコントローラからのセンサ情報（センサの出力信号又は当該出力信号に所定の処理を施した情報）に基づいて、所定座標軸回り（少なくとも１つの座標軸回り）でのコントローラの回転角度情報（回転角度、回転角度と等価なパラメータ）を、操作情報として取得する。例えばコントローラの長手方向（長軸方向）に沿って設定された座標軸を第３の座標軸とし、第３の座標軸に直交する座標軸を第１、第２の座標軸としたとする。この場合に、操作情報取得部１０１は、第３の座標軸回りでの回転角度情報である第３の回転角度情報を取得する。或いは第１、第２の座標軸回りでの回転角度情報である第１、第２の回転角度情報を取得する。例えばコントローラが有する角速度センサのセンサ情報に基づいて第１、第２、第３の回転角度情報を取得する。またコントローラが加速度センサを有する場合には、例えば第３の座標軸に沿った方向での加速度情報を取得する。或いは、第１、第２の座標軸に沿った方向での加速度情報を取得してもよい。
【００４９】
ゲーム演算部１０２はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００５０】
オブジェクト空間設定部１０４は、モデルオブジェクト（人、ロボット、車、戦闘機、ミサイル、弾等の移動体）、マップ（地形）、建物、コース（道路）、樹木、壁などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。具体的には、記憶部１７０のオブジェクトデータ記憶部１７２には、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【００５１】
ヒット演算処理部１０６は、ヒット体とヒット対象物のヒット演算処理を行う。例えば、操作情報取得部１０１により取得された回転角度情報に基づいて、ヒット体によりヒットされるヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定する。
【００５２】
ここでヒット体は、ヒット対象物をヒットするためのオブジェクトであり、例えばキャラクタが所持（把持）する所持オブジェクト（把持オブジェクト）や、キャラクタを構成する部位オブジェクトなどを想定できる。キャラクタの所持オブジェクトとしては、例えばテニス、卓球、バトミントン等のラケットや、野球のバットや、ゴルフのクラブや、剣等の武器や、マラカス等の楽器や、或いはドラムのスティック等を想定できる。キャラクタの部位オブジェクトとしては、手、足、頭、胴体等の部位を想定できる。ヒット対象物は、ヒット体によりヒットされるものであり、ヒット対象物としては、ボールや、他キャラクタの武器や、壁、床等の固定物や、他キャラクタの手、足、頭、胴体等の部位を想定できる。
【００５３】
またヒット対象物のヒット後の移動状態は、例えば、ヒット後のヒット対象物の移動方向、移動速度、或いは移動加速度等である。またヒット対象物のヒット後の動作状態は、例えばヒット後のヒット対象物の回転状態、或いはモーション状態等である。回転状態は、ヒット対象物の回転方向、回転速度（角速度）、或いは回転加速度（角加速度）等であり、モーション状態は、ヒット対象物をモーションデータ等により動作させた場合の各種状態である。
【００５４】
またヒット演算処理部１０６は、ヒット体によるヒット対象物のヒットタイミング（ヒット時）におけるコントローラの回転角度情報に基づいて、ヒット対象物のヒット後の移動状態及び動作状態の少なくとも一方を設定する。例えば操作情報取得部１０１が第３の座標軸回りでの第３の回転角度情報を取得した場合には、取得された第３の回転角度情報に基づいて、ヒット対象物のヒット後の移動方向（広義には移動状態）及び回転状態（広義には動作状態）の少なくとも一方を設定する。また操作情報取得部１０１が、第３の座標軸に沿った方向での加速度情報（遠心力情報）を取得した場合には、取得された加速度情報に基づいて、ヒット体によるヒット対象物のヒット強さ情報（ヒット力、ヒット加速度）を設定する。
【００５５】
またヒット演算処理部１０６は、ヒット判定期間におけるコントローラの回転角度情報に基づいて、ヒット対象物の移動状態及び動作状態の少なくとも一方を設定してもよい。ここでヒット判定期間は、ヒットタイミングを含む期間である。例えばヒット演算処理部１０６は、ヒット判定期間における回転角度情報の変化情報に基づいて、ヒット対象物の移動状態や動作状態を設定する。例えば操作情報取得部１０１が第３の座標軸回りでの第３の回転角度情報を取得した場合には、ヒット判定期間の第１のタイミング（ヒットタイミングの前のタイミング）における第３の座標軸回りでの第３の回転角度情報と、ヒット判定期間の第２のタイミング（ヒットタイミングの後のタイミング）における第３の座標軸回りでの第３の回転角度情報とに基づいて、ヒット対象物の移動方向や回転状態を設定する。また操作情報取得部１０１が、第３の座標軸に沿った方向での加速度情報を取得した場合には、第１のタイミングと第２のタイミングの間のヒットタイミングにおける第３の座標軸に沿った方向での加速度情報に基づいて、ヒット体によるヒット対象物のヒット強さ情報を設定する。
【００５６】
基準ポジション検出部１０８は、コントローラが基準ポジションに設定されたことを検出する処理を行う。例えばコントローラが基準ポジションに設定されたことを知らせる所定の操作（例えばボタンを押す等）を、プレーヤがコントローラにより行った場合に、基準ポジションに設定されたと判断する。そして例えばコントローラが内蔵するセンサが角速度センサである場合に、操作情報取得部１０１は、コントローラが基準ポジションに設定された時に初期値（例えば０度）に設定される回転角度情報を取得する。ここで基準ポジションは、例えばコントローラの第１、第２又は第３の座標軸回りでの回転角度情報を初期値（基準値）に設定するためのポジションである。
【００５７】
ヒット判定エリア設定部１１０は、ヒット体によるヒット対象物のヒット判定エリア（ヒットボリューム）の設定処理を行う。例えばヒット判定エリア設定部１１０は、操作情報取得部１０１により取得された回転角度情報に基づいて、ヒット判定エリアを設定する。このヒット判定エリアは、ヒット体によるヒット対象物のヒットを判定するためのエリア（ボリューム）であり、例えばヒット体（一部又は全部）を含むエリアである。そして操作情報取得部１０１が、コントローラの第１、第２の座標軸回りでの第１、第２の回転角度情報を取得した場合には、ヒット判定エリア設定部１１０は、取得された第１、第２の回転角度情報に基づいて、ヒット判定エリアを設定する。例えば、第１、第２の回転角度情報に基づいて、オブジェクト空間内でのヒット判定エリアの位置や方向等を設定する。なお、第１、第２の回転角度情報に加えて、第３の座標軸回りでの第３の回転角度情報が取得された場合に、第１、第２、第３の回転情報に基づいてヒット判定エリアを設定してもよい。
【００５８】
なお、ヒット体が、キャラクタの所持オブジェクトや部位オブジェクトである場合には、キャラクタの能力パラメータ及びステータスパラメータの少なくとも一方に基づいて、ヒット判定エリアの大きさ（体積、面積）を変化させてもよい。例えばキャラクタの能力パラメータが高い場合や、キャラクタのステータスが良い状態である場合等には、ヒット判定エリアの大きさを大きくする。またプレーヤのレベル（初心者、上級者）に応じてヒット判定エリアの大きさを変化させてもよい。なお能力パラメータは、ゲーム上で設定されるキャラクタの能力（スピード、パワー、攻撃力、守備力、安定度等）を表すパラメーターであり、ステータスパラメータは、その時点でのプレーヤの状態（体力、調子、疲労度等）を表すパラメータである。
【００５９】
モーション処理部１１２は、キャラクタ（モデルオブジェクト）を動作させるための各種のモーション処理を行う。例えばモーションデータ記憶部１７４に記憶されるモーション（モーションデータ）に基づいてモーションの生成処理や再生処理を行う。具体的にはモーション記憶部１７４は、複数の基準モーション（基準モーションデータ）を記憶する。そしてモーション処理部１１２は、これらの複数の基準モーションを合成して、キャラクタのモーションを生成する。
【００６０】
更に具体的にはモーション記憶部１７４は、キャラクタの所持オブジェクト（ラケット、クラブ、バット等）又は部位オブジェクト（足、手等）の高さが第１の高さである場合用の基準モーションである複数の第１の高さ用基準モーションを記憶する。また所持オブジェクト又は部位オブジェクトが第２の高さである場合用の基準モーションである少なくとも１つの第２の高さ用基準モーションとを記憶する。そしてモーション処理部１１２は、複数の第１の高さ用基準モーションと少なくとも１つの第２の高さ用基準モーションを合成して、キャラクタのモーションを生成する。
【００６１】
キャラクタ制御部１１４は、キャラクタの制御処理を行う。キャラクタはゲームに登場する人、ロボット、動物等の移動体である。具体的にはキャラクタ制御部１１４は、キャラクタ（モデルオブジェクト）を移動させるための演算を行う。或いはキャラクタを動作させるための演算を行う。即ち操作情報取得部１０１により取得された操作情報や、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、キャラクタをオブジェクト空間内で移動させたり、キャラクタを動作（モーション、アニメーション）させる処理を行う。具体的には、キャラクタの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（パーツオブジェクトの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００６２】
そして本実施形態ではキャラクタ制御部１１４は、操作情報取得部１０１により取得された回転角度情報に基づき求められるモーションで、キャラクタを動作させる制御を行う。例えば操作情報取得部１０１が、コントローラの第１、第２の座標軸回りでの第１、第２の回転角度情報を取得した場合には、取得された第１、第２の回転角度情報に基づき求められるモーションで、キャラクタを動作させる制御を行う。例えばモーション処理部１１２が、第１、第２の回転角度情報に基づき基準モーションを合成してキャラクタのモーションを生成すると、キャラクタ制御部１１４は、生成されたモーションでキャラクタを動作させる。例えばキャラクタ（スケルトン）を構成する各部位オブジェクト（スケルトンを構成する骨）の位置又は回転角度（方向）等を含むモーションデータにより、キャラクタの各部位オブジェクト（骨）を動かすことで（スケルトン形状を変形させることで）、キャラクタを動作させる。また第１、第２の回転角度情報に加えて、第３の座標軸回りでの第３の回転角度情報を取得し、第１、第２、第３の回転角度情報に基づき求められるモーションで、キャラクタを動作させてもよい。
【００６３】
仮想カメラ制御部１１６は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００６４】
画像生成部１２０は、処理部１００で行われる種々の処理（ゲーム処理、シミュレーション処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。具体的には、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数プリミティブ面）を、描画バッファ１７６（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画する。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお描画処理は頂点シェーダ処理やピクセルシェーダ処理により実現してもよい。
【００６５】
そして本実施形態では画像生成部１２０は、操作情報（ヒット演算処理の結果）に応じた画像を生成する。例えばキャラクタが動作する画像やヒット対象物が移動する画像等を生成する。
【００６６】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００６７】
２．本実施形態の手法
２．１  コントローラの回転角度情報に基づくヒット演算処理
図２に示すように本実施形態では、プレーヤは、コントローラ２００（ゲームコントローラ）を片手で所持し、あたかもテニスのラケットのようにコントローラ２００を振って、スイングを行う。またゲーム装置３００（画像生成システム）により生成される画像が表示される表示部１９０には、プレーヤが操作するキャラクタＣＨが映し出される。そして、プレーヤがコントローラ２００を持ってスイングすると、画面上のキャラクタＣＨも、プレーヤのスイングに応じたスイングを行う。例えばプレーヤがフラットショットのスイングを行うと、キャラクタＣＨもフラットショットのスイングを行い、プレーヤがトップスピンショットやスライスショットのスイングを行うと、キャラクタＣＨもトップスピンショットやスライスショットのスイングを行う。そして画面上のキャラクタＣＨが、相手キャラクタＣＣが打ったボールＢＬを打ち返すことで、プレーヤはテニスゲームを楽しむ。
【００６８】
なお、以下では本実施形態をテニスゲームに適用した場合を主に例にとり説明する。このテニスゲームの場合には、ヒット体はラケットになり、ヒット対象物はボールになる。但し、本実施形態はテニスゲーム以外のスポーツゲーム（例えば卓球、バトミントン、野球、サッカー、バレーボール等）や、スポーツゲーム以外の各種ゲーム（例えば格闘ゲーム、戦闘ゲーム、ロールプレイングゲーム等）に適用できる。
【００６９】
図３（Ａ）、図３（Ｂ）にコントローラ２００の構成例を示す。図３（Ａ）はコントローラ２００を正面から見た正面図であり、図３（Ｂ）は正面向かって右側から見た右側面図である。コントローラ２００は、面取りされた略四角断面を有する棒状の形状になっており、プレーヤは棒を握る要領でコントローラ２００を片手で所持して操作する。
【００７０】
コントローラ２００の正面側（操作面側）には、方向指示キー２１０、Ａボタン２１２等の各種スイッチ類（入力デバイス）が設けられている。またコントローラ２００の裏面側（背面側）にはトリガボタン２１４が設けられている。
【００７１】
コントローラ２００は、撮像素子２２０、無線通信モジュール２２２、加速度センサ２２４、角速度センサ２３０を有する。またコントローラ２００は、図示しないコントローラ制御部やバイブレータ（振動機構）やスピーカ等も内蔵する。コントローラ制御部は例えば制御ＩＣ（ＣＰＵ、ＡＳＩＣ）やメモリにより構成され、コントローラ２００の全体の制御や各種処理を行う。バイブレータは、コントローラ制御部からの振動制御信号にしたがって振動を発生させ、コントローラ２００を把持するプレーヤの手に振動を感じさせる。スピーカは、コントローラ制御部から出力された音信号に応じた音を出力する。
【００７２】
撮像素子２２０はＣＣＤやＣＭＯＳセンサなどにより実現され、コントローラ２００の長手方向（長軸方向）の前方の様子を撮像する。
【００７３】
無線通信モジュール２２２は、図２のゲーム装置３００（ゲーム装置本体）と無線通信（近接無線通信）を行うためのものである。例えば、方向指示キー２１０、Ａボタン２１２等により入力された操作情報、撮像素子２２０により得られた撮像情報、加速度センサ２２４、角速度センサ２３０により得られたセンサ情報（加速度情報、角速度情報）は、無線通信モジュール２２２によりゲーム装置３００に無線通信される。
【００７４】
加速度センサ２２４は、ユーザがコントローラ２００を動かした時（振った時）の加速度情報を検出するセンサである。例えば加速度センサ２２４は直交３軸方向の各加速度情報を検出する。例えば図４において、コントローラ２００の長辺方向に沿って設定された座標軸をＺ軸（広義には第３の座標軸）とし、Ｚ軸に直交する座標軸をＸ軸、Ｙ軸（広義には第１、第２の座標軸）としたとする。この場合には加速度センサ２２４は、例えばＸ軸方向に沿った第１の加速度情報、Ｙ軸方向に沿った第２の加速度情報、Ｚ軸方向に沿った第３の加速度情報を検出して、センサ情報として出力する。
【００７５】
角速度センサ２３０は、ユーザがコントローラ２００を動かした時（回転させた時）の角速度情報を検出するセンサである。例えば角速度センサ２３０は、直交３軸での角速度情報を検出するセンサであり、コントローラ２００のＸ軸、Ｙ軸、Ｚ軸回りでの角速度情報を検出する。具体的には、図４においてＸ軸回りの回転角度をα、Ｙ軸回りの回転角度をβ、Ｚ軸回りの回転角度をγとすると、これらのα、β、γについての角速度を検出する。なおＸ、Ｙ、Ｚの座標軸の正負の向きや、α、β、γの回転方向は、図４に限定されず適宜設定できる。また角速度センサ２３０は、例えば多軸角速度センシングジャイロスコープなどにより実現できる。具体的にはＭＥＭＳ構造の多軸角速度センシングジャイロスコープなどにより実現できる。
【００７６】
なお角速度センサ２３０は、コントローラ２００の本体の拡張端子に接続される拡張ユニット２０２内に設けられているが、コントローラ２００の本体内に設けてもよい。また以下では説明を簡略化するため、コントローラ本体と拡張ユニットが一体に形成されているものとして図示する。
【００７７】
またコントローラ２００は、プレーヤが所持（把持、取り付け）可能であり、例えば長手方向に沿った座標軸で回転可能な形状であることが望ましいが、図３（Ａ）、図３（Ｂ）の形状（略直方体形状。長手方向に沿った切断面が略長方形形状）には限定されない。例えば図３（Ａ）、図３（Ｂ）の形状の一部が異なる形状にしたり、コントローラ２００を収納するケースを設けて使用するなどの種々の変形実施が可能である。
【００７８】
図５（Ａ）、図５（Ｂ）、図６に、コントローラ２００により操作されるキャラクタＣＨのモーション（基準モーション）の例を示す。図５（Ａ）は基準ポジションでのキャラクタＣＨのモーション（姿勢）の例である。図５（Ｂ）はテークバック時のモーションの例であり、図６はボールのヒット時（インパクト時）のモーションの例である。プレーヤが、図２のようにコントローラ２００を持って、テニスのラケットのようにコントローラ２００を振ってスイングを行うと、画面上のキャラクタＣＨも、図５（Ａ）〜図６のようにスイングを行う。ここではキャラクタＣＨは、フラットショットのスイングを行っている。即ち図６に示すようにボール（広義にはヒット対象物）のインパクトの瞬間では、ラケットＲＫ（広義にはヒット体）の面は水平面（地面）に垂直な方向になっており、ラケット面にボールが直角にヒットするため、ボールは回転せずにフラットショットの軌道で飛ぶようになる。
【００７９】
さて、現実世界のテニスでは、図６のようなフラットショット以外にも、トップスピンやスライスなどの各種ショットがある。例えばトップスピンショットでは、図６のフラットショットに比べて、ボールのインパクト時にラケット面の向きが下側に向き（水平面に対する角度が９０度よりも小さくなり）、ボールに対して順方向の回転がかかる。一方、スライスショットでは、図６のフラットショットに比べて、ボールのインパクト時にラケット面の向きが上側に向き（水平面に対する角度が９０度よりも大きくなり）、ボールに対して逆方向の回転がかかる。
【００８０】
しかしながら、これまでのテニスゲームでは、このようなトップスピンやスライスなどの各種ショットを、プレーヤが違和感を感じない操作で実現することが難しかった。例えばトップスピンやスライスの打ち分けを、方向指示キーやボタンの操作で行う手法も考えられる。具体的には方向指示キーで下側を指示した場合にはトップスピンのショットになり、上側を指示した場合にはスライスショットになるようにする。しかしながら、このような操作は、現実世界でのテニスのスイングの感覚とは異なるものであり、このような操作では、実際にテニスをプレイしているというような仮想現実感をプレーヤに与えることが難しい。
【００８１】
特に図２のように、プレーヤがコントローラ２００をテニスラケットのようにスイングすることで、画面上のキャラクタＣＨがスイングしてボールＢＬを打ち返す場合には、このような方向指示キー等を用いたショットの打ち分けでは、プレーヤの仮想現実感を今ひとつ向上できない。即ち、コントローラ２００を振る動作については、現実世界のテニスと同様であるのに、トップスピンやスライスの打ち分けは、現実世界とは異なってしまい、図２のようなゲーム操作を実現した意味が薄れてしまう。
【００８２】
そこで本実施形態では、コントローラ２００の所定座標軸回りでの回転角度情報、例えばＺ軸（第３の座標軸）回りでの回転角度情報を取得する。そして取得された回転角度情報に基づいて、ラケットＲＫ（広義にはヒット体）によりヒットされるボールＢＬ（広義にはヒット対象物）の移動状態や動作状態（移動方向や回転状態）を設定するヒット演算処理を行う。
【００８３】
例えば図７（Ａ）〜図７（Ｃ）では、ラケットＲＫによるボールＢＬのヒットタイミングにおけるコントローラ２００の回転角度情報に基づいて、ボールＢＬの移動状態や動作状態を設定している。
【００８４】
具体的には図７（Ａ）では、ヒットタイミングＴＨでのコントローラ２００のＺ軸回りでの回転角度γは、基準ポジションでの初期値を例えば０（度）とした場合に、γ＝０になっている。このようにヒットタイミングＴＨでのＺ軸回りの回転角度がγ＝０である場合には、ラケットＲＫの面が水平面に対して垂直であると判断して、例えばフラットショットになるようにボールＢＬの移動方向や回転状態等を設定する。例えばボールＢＬが、ほぼ無回転で、比較的速い速度で、フラットショットの軌道で飛ぶように、ボールＢＬの移動演算処理を行う。
【００８５】
一方、図７（Ｂ）では、ヒットタイミングＴＨでのコントローラ２００の回転角度はγ＝γＡとなっている。従って、ラケット面と水平面のなす角度が９０度よりも小さくなっており、ラケット面の向きが下向きであると判断して、例えばトップスピンショットになるようにボールＢＬの移動方向や回転状態等を設定する。例えばボールＢＬが、順方向の回転でトップスピンショットの軌道で飛ぶように、ボールＢＬの移動演算処理を行う。
【００８６】
図７（Ｃ）では、ヒットタイミングＴＨでのコントローラ２００の回転角度はγ＝−γＢとなっている。従って、ラケット面と水平面のなす角度が９０度よりも大きくなっており、ラケット面の向きが上向きであると判断して、例えばスライスショットになるようにボールＢＬの移動方向や回転状態等を設定する。例えばボールＢＬが、逆方向の回転でスライスショットの軌道で飛ぶように、ボールＢＬの移動演算処理を行う。
【００８７】
なお図７（Ａ）〜図７（Ｃ）の各ショットの切り替えは、例えば回転角度γが属する角度範囲を判定することで実現できる。一例としては、−γ１≦γ≦γ１である場合にはフラットショットであると判断し、γ１＜γ＜γ２である場合にはトップスピンショットであると判断し、−γ２＜γ＜−γ１である場合にはスライスショットであると判断すればよい。
【００８８】
図８（Ａ）〜図８（Ｃ）では、ヒット判定期間におけるコントローラ２００の回転角度情報に基づいて、ボールＢＬのヒット後の移動状態や動作状態を設定している。具体的にはヒット判定期間における回転角度情報の変化情報に基づいて、ボールＢＬのヒット後の移動状態や動作状態を設定する。例えば第１のタイミングでの回転角度情報と第２のタイミングでの回転角度情報に基づいて、ボールＢＬの移動状態や動作状態を設定する。
【００８９】
例えば図８（Ａ）では、ヒットタイミングＴＨの前の第１のタイミングＴＭ１でのＺ軸回りでの回転角度はγ＝０になっており、ラケット面が水平面に対して垂直になっていると判断される。またヒットタイミングＴＨでは、回転角度はγ＝γＡとなっており、ラケット面の向きが、タイミングＴＭ１に比べて下方向に向いていると判断される。またヒットタイミングＴＨの後の第２のタイミングＴＭ２では、回転角度はγ＝γＢ＞γＡとなっており、ラケット面の向きが、ヒットタイミングＴＨに比べて更に下方向に向いていると判断される。このように、ヒットタイミングの前後で、ラケット面の向きが下方向に変化した場合には、例えばトップスピンショットになるようにボールＢＬの移動方向や回転状態等を設定する。またヒットタイミング前後での回転角度の変化が大きい場合には、例えばトップスピンの回転速度（回転量）を速くしてもよい。
【００９０】
また図８（Ｂ）では、ヒットタイミングＴＨの前の第１のタイミングＴＭ１でのＺ軸回りでの回転角度はγ＝０になっており、ラケット面が水平面に対して垂直になっていると判断される。またヒットタイミングＴＨでは、回転角度はγ＝−γＡとなっており、ラケット面の向きが、タイミングＴＭ１に比べて上方向に向いていると判断される。またヒットタイミングＴＨの後の第２のタイミングＴＭ２では、回転角度はγ＝−γＢ＜−γＡとなっており、ラケット面の向きが、ヒットタイミングＴＨに比べて更に上方向に向いていると判断される。このように、ヒットタイミングの前後で、ラケット面の向きが上方向に変化した場合には、例えばスライスショットになるようにボールＢＬの移動方向や回転状態等を設定する。またヒットタイミング前後での回転角度の変化が大きい場合には、スライスの回転速度（回転量）を速くしてもよい。
【００９１】
また図８（Ｃ）では、タイミングＴＭ１、ＴＨ、ＴＭ２において、ラケット面の向きが上方向に向いていると判断される。また例えばＹ軸回りでの回転角度β等に基づいて、ラケットＲＫの位置が徐々に上側に移動していると判断される。従って、この場合には、ボールＢＬが上方向に飛ぶロブショットになるようにボールＢＬの移動方向や回転状態等を設定する。
【００９２】
このように、図７（Ａ）〜図７（Ｃ）では、ヒットタイミングＴＨでの回転角度だけを用いているのに対して、図８（Ａ）〜図８（Ｃ）では、ヒットタイミングＴＨの前後のタイミングＴＭ１、ＴＭ２での回転角度を反映させてボールＢＬの移動方向や回転状態等を設定している。このようにすることで、ヒット後のボールＢＬの軌道を現実世界の軌道に近づけることが可能になり、プレーヤの仮想現実感を更に向上できる。また、ヒットタイミングのみならず、その前後のタイミングでのコントローラの回転角度も反映されるため、フォロースルーやテークバックでのラケット面の角度も反映させたショットが可能になる。
【００９３】
図９（Ａ）〜図９（Ｄ）に、フラット、トップスピン、スライス、ロブの各ショットの回転方向や移動方向の設定例を示す。同図に示すように、フラットやロブではボールＢＬはほぼ無回転で飛び、トップスピンでは順方向の回転になり、スライススピンでは逆方向の回転になる。またフラットではボールＢＬが水平に飛ぶのに対して、ロブでは上方向に飛ぶ。なおボールＢＬの回転方向や移動方向の設定は、図９（Ａ）〜図９（Ｄ）に限定されず、種々の変形実施が可能である。例えば、順方向に回転しながら上方向に飛ぶトップスピンロブなどを再現してもよい。また、ヒット後のボールＢＬのショットの軌道は、ヒット時に設定された移動状態や動作状態に基づく物理シミュレーション処理を行うことで求めてもよいし、複数のショット軌道の中から、ヒット時に設定された移動状態や動作状態に応じたショット軌道を選択することで求めてもよい。また、ショットされたボールＢＬが地面（フィールド）でバウンドした後の軌道についても、各ショットの種類に応じた軌道に設定することが望ましい。具体的にはヒット時の回転方向や回転速度など回転状態を反映させた軌道に設定する。例えばトップスピンショットの場合には、バウンド後に高く跳ね上がるような軌道に設定する。またフラットショットであれば同じ角度で跳ねるような軌道にする。またスライスショットの場合には、例えばボールが地面で滑るように低く弾んで伸びる軌道に設定する。
【００９４】
以上のように本実施形態では、コントローラ２００の所定座標軸回りでの回転角度情報を用いてヒット演算処理を実行している。このようにすれば、例えばテニスのラケット面のコントロール等を、コントローラ２００の所定座標軸回りでの回転操作により実現できる。従って、従来のスポーツゲーム等では実現することが難しかった操作インターフェース環境を提供できる共に、コントローラ２００の操作と、キャラクタの動きとがマッチするようになるため、プレーヤの仮想現実感を向上できる。
【００９５】
例えば従来は、コントローラ２００に設けられた加速度センサ２２４を用いて、プレーヤによりコントローラ２００が振られたことを検知していた。このような加速度センサ２２４だけを用いる手法では、各座標軸回りでの絶対的な回転角度を正確に求めることは困難である。また加速度センサ２２４では、コントローラ２００の長手方向に沿ったＺ軸回りでの回転角度を求めることは難しい。
【００９６】
これに対して本実施形態では、例えば角速度センサ２３０を用いてコントローラ２００の各座標軸回りでの回転角度を求め、この回転角度を用いてヒット演算処理を実現している。従って、加速度センサ２２４だけを用いる従来の手法に比べて、よりインテリジェントで精度の高いヒット演算処理を実現できる。なおコントローラ２００の各座標軸回りでの回転角度を求めるセンサとして、角速度センサ２３０以外のセンサを採用することも可能である。
【００９７】
２．２  ヒット強さの設定
さて、上述のように本実施形態では、コントローラ２００の角速度センサ２３０を用いて所定座標軸回りでの回転角度を求めて、ヒット演算処理を実行している。この時、例えば加速度センサ２２４で得られた加速度を用いて、ボールＢＬのヒットの強さ（ヒット力、ヒット加速度）を設定してもよい。
【００９８】
具体的には図１０に示すように、加速度センサ２２４により、Ｚ軸に沿った方向（第３の座標軸に沿った方向）での加速度ＡＶを検出する。この加速度ＡＶは、コントローラ２００をスイングすることでＺ軸方向に生じる遠心力（正確には遠心力と重力の合力）に相当する加速度である。そして、検出された加速度ＡＶに基づいて、ラケットＲＫによりボールＢＬがヒットされた時のヒットの強さを設定する。
【００９９】
例えば、プレーヤがコントローラ２００を速いスピードでスイングした場合には、Ｚ軸方向の遠心力に相当する加速度ＡＶは大きくなる。従って、この場合には、ボールＢＬが強くヒットされるようにする。例えばボールＢＬのヒット方向での加速度を大きな値に設定する。一方、プレーヤがコントローラ２００を遅いスピードでスイングした場合には、Ｚ軸方向の遠心力に相当する加速度ＡＶも小さくなる。従って、この場合には、ボールＢＬが弱くヒットされるようにする。例えばボールＢＬのヒット方向での加速度を小さな値に設定する。
【０１００】
このようにすれば、スイングスピードとヒットの強さが比例するようになり、現実世界のボールＢＬのショットを、より忠実に再現できる。即ち角速度センサ２３０と加速度センサ２２４を上手く使い分けて、ラケットＲＫによるボールＢＬのヒット演算処理を実現できるようになる。なお、ボールＢＬのヒットの強さを、例えばＸ軸回りでの回転速度等も反映させて設定してもよい。例えばＸ軸回りでの回転速度が速い場合には、ボールＢＬのヒットの強さも大きくする。
【０１０１】
また加速度ＡＶに基づいて、キャラクタがラケットＲＫ（所持オブジェクト、部位オブジェクト）を振るスイングの速さ（モーション速度）を設定してもよい。例えば加速ＡＶが大きい場合には、ラケットＲＫの振りが速くなるようなモーションをキャラクタに行わせ、加速度ＡＶが小さい場合には、ラケットＲＫの振りが遅くなるようなモーションをキャラクタに行わせる。こうすることで、更にリアルな画像を生成できる。
【０１０２】
２．３  基準ポジション
角速度センサ２３０を用いた場合には、センサから得られる情報は角速度になる。従って、絶対的な回転角度を求める場合には、角速度の積算処理等を行うことになるため、回転角度の初期値を設定することが望ましい。このため本実施形態では、基準ポジション検出部１０８が、コントローラ２００の基準ポジションを検出する。この基準ポジションは、例えばコントローラ２００のＸ、Ｙ、Ｚ軸回りでの回転角度α、β、γの初期値を設定するためのポジションである。
【０１０３】
この基準ポジションの検出手法としては種々の手法が考えられるが、本実施形態では、コントローラ２００が基準ポジションに設定されたことを知らせる所定の操作を、プレーヤが行った場合に、基準ポジションに設定されたと判断している。具体的には図１１では、プレーヤは、ラケットに相当するコントローラ２００を体の前側に持って、テニスと同様の基準ポジションの姿勢をとる。そしてトリガボタン２１４を押すことで、コントローラ２００が基準ポジションに設定されたことを、ゲーム装置３００側に知らせる。すると、コントローラ２００の回転角度α、β、γが初期値（例えば０度）に設定される。その後、プレーヤがコントローラ２００をラケットのように見なしてスイングを行うと、角速度センサ２３０で検出された角速度に基づいて、回転角度α、β、γが初期値から変化して、基準ポジションからの回転角度が取得される。そしてキャラクタＣＨが図５（Ａ）〜図６に示すようなスイングを行って、ボールＢＬのショットを行う。
【０１０４】
このようにすれば、プレーヤは、実際のテニスと同様に、ラケットに相当するコントローラ２００を体の前側に持った後に、トリガボタン２１４を押してスイングするという動作を繰り返すことで、相手キャラクタＣＣとのラリーを楽しむことができる。従って、プレーヤが違和感を感じない動作でテニスゲームを楽しむことができる。
【０１０５】
なお基準ポジションの検出手法は図１１の手法に限定されない。例えばトリガボタン２１４以外のボタン等の操作で、基準ポジションであることを知らせるようにしてもよい。或いは図３（Ａ）の撮像素子２２０による撮像で、表示部１９０に取り付けられた発光素子等を検出することで、基準ポジションを検出してもよい。例えばプレーヤが、撮像素子２２０を表示部１９０の画面側に向けた場合に基準ポジションを検出する。
【０１０６】
２．４  ヒット判定エリアの設定
本実施形態では角速度センサ２３０により取得されたコントローラ２００の回転角度γに基づいて、ラケットＲＫの面の角度を設定する。一方、角速度センサ２３０により取得されたコントローラ２００の回転角度α、β等に基づいて、ヒット判定エリアを設定してもよい。
【０１０７】
例えば図１２（Ａ）では、コントローラ２００は、基準方向ＤＲ（基準ポジションの場合の方向）に対してＸ軸回りにα＝αｉだけ回転している。この場合には図１２（Ｂ）に示すように、ヒット判定エリアＨＡについても、基準方向に対してα＝αｉだけ回転させた位置に設定する。例えばキャラクタＣＨの中心から所定半径位置にラケットＲＫがあると想定し、このラケットＲＫ（ラケット面）を含むヒット判定エリアＨＡ（ヒットボリューム）を設定する。そして、ラケットＲＫによりボールＢＬがヒットされたか否かは、ヒット判定エリアＨＡとボールＢＬとのヒットチェック処理を行うことで判定する。
【０１０８】
また図１２（Ｃ）では、コントローラ２００は、基準方向ＤＲに対してＹ軸回りにβ＝βｊだけ回転している。この場合には図１２（Ｄ）に示すように、ヒット判定エリアＨＡについても、基準方向に対してβ＝βｊだけ回転させた位置に設定する。
【０１０９】
このようにすれば、プレーヤが、コントローラ２００をラケットのように振り回すと、振り回した時の各位置に対応する位置にラケットＲＫが配置されて、ラケットＲＫを内包するヒット判定エリアＨＡとボールＢＬとのヒットチェック処理が行われるようになる。従って、プレーヤは、実際のテニスのようにコントローラ２００を振り回すことで、ボールＢＬをショットすることが可能になり、現実世界に忠実なテニスゲームを実現できる。
【０１１０】
なおヒット判定エリアＨＡの設定の際に、Ｚ軸回りでの回転角度γを反映させるようにしてもよい。例えばヒット判定エリアＨＡが板形状である場合には、その板形状の面の角度を、Ｚ軸回りでの回転角度γにより設定してもよい。
【０１１１】
またキャラクタの能力パラメータやステータスパラメータに基づいて、ヒット判定エリアＨＡの大きさを変化させてもよい。例えば図１２（Ｅ）において、キャラクタＣＨ１は能力パラメータが低いキャラクタであるため、ラケットＲＫ（ラケット面）に設定されるヒット判定エリアＨＡの大きさも小さくなっている。従って、キャラクタＣＨ１のスイング時には、ボールＢＬがヒットしにくくなり、キャラクタＣＨ１の能力が低いことをゲーム結果に反映させることができる。
【０１１２】
一方、図１２（Ｆ）では、キャラクタＣＨ２は能力パラメータが高いキャラクタであるため、ヒット判定エリアＨＡの大きさは大きくなっている。従って、キャラクタＣＨ２のスイング時には、キャラクタＣＨ１の場合に比べて、ボールＢＬがヒットしやくすなるため、キャラクタＣＨ２の能力が高いことをゲーム結果に反映させることが可能になる。
【０１１３】
なお、キャラクタの現在の調子を表すステータスパラメータに応じて、ヒット判定エリアＨＡの大きさを変化させてもよい。或いは、ゲームプレイの際に設定する難易度設定に応じて、ヒット判定エリアＨＡの大きさを設定してもよい。例えば初級プレーヤの場合にはヒット判定エリアＨＡの大きさを大きくし、上級プレーヤの場合にはヒット判定エリアＨＡの大きさを小さくする。こうすることで、簡素な処理で難易度設定を行うことが可能になる。
【０１１４】
なお、以上では本実施形態の手法をテニスゲームに適用した場合について説明したが、本実施形態はこれに限定されない。例えば図１３（Ａ）のような野球ゲームに適用することも可能である。この場合にはヒット体は、キャラクタが所持（把持）するバットになり、ヒット対象物は野球のボールになる。そして例えばコントローラ２００のＺ軸回りでの回転角度γに基づいて、バットによりヒットされるボールの回転状態等を設定すればよい。またゴルフゲームに適用した場合には、ヒット体は、キャラクタが所持するクラブになり、ヒット対象物はゴルフのボールになる。この場合にも回転角度γに基づいて、ボールの回転状態等を設定すればよい。
【０１１５】
また図１３（Ｂ）のように剣の格闘ゲームに適用することも可能である。この場合には、ヒット体は、キャラクタが所持する剣になり、ヒット対象物は、相手キャラクタ（相手キャラクタの各部位）等になる。そしてコントローラ２００のＺ軸回りの回転角度γに基づいて、剣の刃が向く方向等を設定する。例えば回転角度γが適正で、剣の刃が向く方向が適正であると、剣の切れ味が鋭くなる。或いは回転角度γにより剣の向く方向を制御することで、いわゆる峰打ち等も表現できるようになる。
【０１１６】
またヒット体は、図１３（Ａ）、図１３（Ｂ）のようなキャラクタの所持物（把持物）には限定されず、キャラクタを構成する手、足等の部位であってもよい。例えば図１３（Ｃ）のサッカーゲームでは、キャラクタの足や頭の部位がヒット体になり、サッカーのボールがヒット対象物になる。この場合にも、コントローラ２００のＺ軸回りでの回転角度γにより、ボールを蹴った時の足のひねりなどを表現し、蹴った後のボールの回転状態等を設定してもよい。また例えばバレーボールゲームでは、キャラクタの手の部位がヒット体になり、バレーのボールがヒット対象物になる。この場合にも、コントローラ２００のＺ軸回りでの回転角度γに基づいて、アタック時やサーブ時のボールの回転状態等を設定してもよい。
【０１１７】
なお図１３（Ａ）、図１３（Ｂ）の野球ゲームや剣の格闘ゲーム等において、野球のバットや剣を模したケースにコントローラ２００を収納して使用するようにしてもよい。また図１３（Ｃ）のサッカーゲームにおいて、コントローラ２００を、バンド等を用いてプレーヤの足に取り付けるようにしてもよい。
【０１１８】
２．５  キャラクタのモーション処理
以上では、コントローラ２００の回転角度情報を用いてヒット演算処理を行う場合について説明したが、この回転角度情報を利用して、キャラクタのモーション処理を行うようにしてもよい。例えば、取得された回転角度情報に基づき求められるモーションで、キャラクタを動作させる制御を行う。具体的には、Ｘ軸回り、Ｙ軸回りでの回転角度α、β（第１、第２の回転角度情報）に基づき求められるモーションで、キャラクタを動作させる。更に具体的には、回転角度α、βによりモーション合成率（モーションブレンド率）を求め、求められたモーション合成率で基準モーションを合成することで、キャラクタのモーションを生成し、生成されたモーションでキャラクタを動作させる。
【０１１９】
図１４は、モーション合成（モーションブレンド）の原理を示す図である。図１４では、基準モーションＭ１と基準モーションＭ２が合成されて、モーションＭＢが生成されている。このモーション合成は、ＭＢ＝Ｍ１×Ｋ１＋Ｍ２×Ｋ２の式で表すことができる。ここで、Ｋ１、Ｋ２がモーション合成率に相当し、Ｋ１＋Ｋ２＝１の関係が成り立つ。
【０１２０】
例えば図１５に示すようにキャラクタは複数の部位オブジェクト（パーツオブジェクト）ＰＢ０〜ＰＢ１５により構成される。そして各部位オブジェクトの位置や方向は、キャラクタのスケルトンモデルを構成する骨Ｂ０〜Ｂ１９の位置（関節Ｊ０〜Ｊ１５の位置）や回転角度（親の骨に対する子の骨の相対的な回転角度）により特定される。図１のモーション記憶部１７４には、この骨の位置、回転角度のデータが、キャラクタのモーションのデータとして記憶される。そして図１４のモーション合成は、スケルトンの各骨のデータ（マトリクスデータ）に対して、ＭＢ＝Ｍ１×Ｋ１＋Ｍ２×Ｋ２で表される処理を行うことで実現できる。なお骨の回転角度だけをモーションデータに含ませ、骨の位置（関節位置）については、キャラクタのモデルオブジェクトデータの中に含ませてもよい。
【０１２１】
さて、本実施形態では、ラケット等のキャラクタの所持オブジェクト（図１４のＰＲ）や部位オブジェクトの高さに応じた基準モーションを用意し、これらの基準モーションを図１４のモーション合成で合成することで、キャラクタのモーションを生成している。
【０１２２】
具体的には図１のモーション記憶部１７４は、キャラクタの所持オブジェクト（又は部位オブジェクト。以下、同様）の高さが第１の高さである場合用の基準モーションである複数の第１の高さ用基準モーションを記憶する。また所持オブジェクトが第２の高さである場合用の基準モーションである少なくとも１つの第２の高さ用基準モーションとを記憶する。そしてモーション処理部１１２は、複数の第１の高さ用基準モーションと、少なくとも１つの第２の高さ用基準モーションを合成して、キャラクタのモーションを生成する。
【０１２３】
ここで、第１の高さ用基準モーションは、所持オブジェクト（部位オブジェクト）が第１の高さであることを想定して用意されたモーションである。なお、複数の第１の高さ用基準モーションの間で、所持オブジェクトの高さが正確に一致する必要はない。また第２の高さ用基準モーションは、所持オブジェクト（部位オブジェクト）が第２の高さ（第１の高さと異なる高さ）であることを想定して用意されたモーションである。なお、複数の第２の高さ用基準モーションの間で、所持オブジェクトの高さが正確に一致する必要はない。
【０１２４】
図１６（Ａ）、図１６（Ｂ）に、第１の高さ用基準モーションの例を示す。これらの基準モーションはラケットＲＫが低い位置にある場合のモーションである。また図１６（Ａ）はインパクト時（ボールのヒット時）のモーションであり、図１６（Ｂ）はテークバック時のモーションである。なお図１６（Ａ）、図１６（Ｂ）では、キャラクタＣＨを見る視点位置（仮想カメラの位置）が異なっており、図１６（Ａ）は前側からキャラクタＣＨを見た図であり、図１６（Ｂ）は右側からキャラクタＣＨを見た図になっている。
【０１２５】
図１７（Ａ）、図１７（Ｂ）に、第２の高さ用基準モーションの例を示す。これらの基準モーションは、ラケットＲＫが図１６（Ａ）、図１６（Ｂ）よりも高い位置にある場合のモーションである。また図１７（Ａ）は図１６（Ａ）と同様にインパクト時のモーションであり、図１７（Ｂ）は図１６（Ｂ）と同様にテークバック時のモーションである。
【０１２６】
図１７（Ａ）と図１６（Ａ）を比べれば明らかなように、図１７（Ａ）では図１６（Ａ）に比べてラケットＲＫの位置が高くなっている。同様に、図１７（Ｂ）と図１６（Ｂ）を比べれば明らかなように、図１７（Ｂ）では図１６（Ｂ）に比べてラケットＲＫの位置が高くなっている。
【０１２７】
本実施形態では、図１６（Ａ）、図１６（Ｂ）に示す第１の高さ用基準モーションと、図１７（Ａ）、図１７（Ｂ）に示す第２の高さ用基準モーションを、図１４で説明したモーション合成手法で合成することで、キャラクタＣＨのモーションを生成する。具体的には、コントローラ２００のＸ軸、Ｙ軸回りでの回転角度α、β（第１、第２の座標回りでの第１、第２の回転角度情報）が取得された場合には、これらの回転角度α、βに基づきモーション合成率を求める。そして、求められたモーション合成率で、図１６（Ａ）、図１６（Ｂ）の第１の高さ用基準モーションと、図１７（Ａ）、図１７（Ｂ）の第２の高さ用基準モーションを合成して、キャラクタＣＨのモーションを生成する。
【０１２８】
例えば図１８（Ａ）のＣ１では、基準方向ＤＲに対してコントローラ２００のＸ軸回りでの回転角度はα＝αｉになっている。また図１８（Ａ）のＣ２では、基準方向ＤＲに対してコントローラ２００のＸ軸回りでの回転角度はα＝αｉ＋１になっている。
【０１２９】
一方、図１８（Ｂ）のＣ３では、基準方向ＤＲに対してコントローラ２００のＹ軸回りでの回転角度はβ＝βｊになっている。また図１８（Ｂ）のＣ４では、基準方向ＤＲに対してコントローラ２００のＹ軸回りでの回転角度はβ＝βｊ＋１になっている。
【０１３０】
そして図１９では、第１の高さ用基準モーションとして、Ｘ軸回りでの回転角度（広義には第１の回転角度情報）がα＝αｉであり、Ｙ軸回りでの回転角度（広義には第２の回転角度情報）がβ＝βｊである場合の基準モーションである第１の基準モーションＭ（ｉ、ｊ）が用意される。また第１の高さ用基準モーションとして、Ｘ軸回りでの回転角度がα＝αｉ＋１であり、Ｙ軸回りでの回転角度がβ＝βｊである場合の基準モーションである第２の基準モーションＭ（ｉ＋１、ｊ）が用意される。
【０１３１】
これらの第１の高さ用の第１、第２の基準モーションＭ（ｉ、ｊ）、Ｍ（ｉ＋１、ｊ）は、例えば図１６（Ａ）、図１６（Ｂ）に示すラケットＲＫが低い場合の基準モーションに相当する。そして、これらのモーションＭ（ｉ、ｊ）、Ｍ（ｉ＋１、ｊ）のデータはモーション記憶部１７４に記憶される。
【０１３２】
また図１８では、第２の高さ用基準モーションとして、Ｘ軸回りでの回転角度がα＝αｉであり、Ｙ軸回りでの回転角度がβ＝βｊ＋１である場合の基準モーションである第３の基準モーションＭ（ｉ、ｊ＋１）が用意される。また第２の高さ用基準モーションとして、Ｘ軸回りでの回転角度がα＝αｉ＋１であり、Ｙ軸回りでの回転角度がβ＝βｊ＋１である場合の基準モーションである第４の基準モーションＭ（ｉ＋１、ｊ＋１）が用意される。
【０１３３】
これらの第２の高さ用の第３、第４の基準モーションＭ（ｉ、ｊ＋１）、Ｍ（ｉ＋１、ｊ＋１）は、例えば図１７（Ａ）、図１７（Ｂ）に示すラケットＲＫが高い場合のモーションに相当する。そして、これらのモーションＭ（ｉ、ｊ＋１）、Ｍ（ｉ＋１、ｊ＋１）のデータはモーション記憶部１７４に記憶される。
【０１３４】
そしてコントローラ２００のＸ軸方向での回転角度αがαｉ≦α≦αｉ＋１であり、Ｙ軸方向での回転角度βがβｊ≦β≦βｊ＋１である場合には、モーション合成の対象となる基準モーションとして、第１、第２、第３、第４の基準モーションＭ（ｉ、ｊ）、Ｍ（ｉ＋１、ｊ）、Ｍ（ｉ、ｊ＋１）、Ｍ（ｉ＋１、ｊ＋１）が選択される。また回転角度α、βに基づきモーション合成率が求められる。そして、求められたモーション合成率で、第１、第２、第３、第４の基準モーションＭ（ｉ、ｊ）、Ｍ（ｉ＋１、ｊ）、Ｍ（ｉ、ｊ＋１）、Ｍ（ｉ＋１、ｊ＋１）を合成して、キャラクタのモーションＭＢを生成する。
【０１３５】
具体的には例えば、第１の基準モーションＭ（ｉ、ｊ）と第２の基準モーションＭ（ｉ＋１、ｊ）を合成して、モーションＭＢ１＝Ｋ１×Ｍ（ｉ、ｊ）＋Ｋ２×Ｍ（ｉ＋１、ｊ）を求める。また第３の基準モーションＭ（ｉ、ｊ＋１）と第４の基準モーションＭ（ｉ＋１、ｊ＋１）を合成して、モーションＭＢ２＝Ｋ１×Ｍ（ｉ、ｊ＋１）＋Ｋ２×Ｍ（ｉ＋１、ｊ＋１）を求める。そしてモーションＭＢ１とＭＢ２を合成して、最終的なキャラクタのモーションＭＢ＝Ｋ３×ＭＢ１＋Ｋ４×ＭＢ２を求める。
【０１３６】
ここで、Ｋ１＋Ｋ２＝１、Ｋ３＋Ｋ４＝１の関係が成り立つ。そして、Ｋ１、Ｋ２（＝１−Ｋ１）は、コントローラ２００の回転角度αとαｉ、αｉ＋１との関係により求められる。例えばα＝αｉである場合には、Ｋ１＝１、Ｋ２＝０になり、α＝αｉ＋１の場合には、Ｋ１＝０、Ｋ２＝１になる。またαが、αｉとαｉ＋１の中間（真ん中）の角度である場合には、Ｋ１＝Ｋ２＝１／２になる。
【０１３７】
同様に、Ｋ３、Ｋ４（＝１−Ｋ３）は、コントローラ２００の回転角度βとβｊ、βｊ＋１との関係により求められる。例えばβ＝βｊである場合には、Ｋ３＝１、Ｋ４＝０になり、β＝βｊ＋１の場合には、Ｋ３＝０、Ｋ４＝１になる。またβが、βｊとβｊ＋１の中間（真ん中）の角度である場合には、Ｋ３＝Ｋ４＝１／２になる。
【０１３８】
なお図１９では、モーション合成の対象となる第２の高さ用基準モーションが、Ｍ（ｉ、ｊ＋１）、Ｍ（ｉ＋１、ｊ＋１）というように２個である場合について説明したが、モーション合成の対象となる第２の高さ用基準モーションは１個であってもよい。その場合の例を図２０に示す。
【０１３９】
図２０では、図１９と同様に、第１の高さ用基準モーションとして、Ｘ軸回りでの回転角度がα＝αｉであり、Ｙ軸回りでの回転角度がβ＝βｊである場合の第１の基準モーションＭ（ｉ、ｊ）と、Ｘ軸回りでの回転角度がα＝αｉ＋１であり、Ｙ軸回りでの回転角度がβ＝βｊである場合の第２の基準モーションＭ（ｉ＋１、ｊ）が用意される。
【０１４０】
また図２０では、第２の高さ用基準モーションとして、Ｙ軸回りでの回転角度がβ＝βｊ＋１である場合の第３の基準モーションＭ（ｊ＋１）が用意される。この第３の基準モーションＭ（ｊ＋１）としては、例えばキャラクタのラケットが縦になるサーブモーションやスマッシュモーションを想定できる。
【０１４１】
そしてコントローラ２００のＸ軸方向での回転角度αがαｉ≦α≦αｉ＋１であり、Ｙ軸方向での回転角度βがβｊ≦β≦βｊ＋１である場合には、第１、第２、第３の基準モーションＭ（ｉ、ｊ）、Ｍ（ｉ＋１、ｊ）、Ｍ（ｊ＋１）が選択される。また回転角度α、βに基づきモーション合成率が求められる。そして、求められたモーション合成率で、第１、第２、第３の基準モーションＭ（ｉ、ｊ）、Ｍ（ｉ＋１、ｊ）、Ｍ（ｊ＋１）を合成して、キャラクタのモーションＭＢを生成する。
【０１４２】
具体的には例えば、第１の基準モーションＭ（ｉ、ｊ）と第２の基準モーションＭ（ｉ＋１、ｊ）を合成して、モーションＭＢ１＝Ｋ１×Ｍ（ｉ、ｊ）＋Ｋ２×Ｍ（ｉ＋１、ｊ）を求める。そしてモーションＭＢ１と第３の基準モーションＭ（ｊ＋１）を合成して、最終的なキャラクタのモーションＭＢ＝Ｋ３×ＭＢ１＋Ｋ４×Ｍ（ｊ＋１）を求める。
【０１４３】
ここで、Ｋ１＋Ｋ２＝１、Ｋ３＋Ｋ４＝１の関係が成り立つ。そして、Ｋ１、Ｋ２は、コントローラ２００の回転角度αとαｉ、αｉ＋１との関係により求められる。同様に、Ｋ３、Ｋ４は、コントローラ２００の回転角度βとβｊ、βｊ＋１との関係により求められる。
【０１４４】
以上のように本実施形態によれば、キャラクタの所持オブジェクト（部位オブジェクト）の高さに応じた第１の高さ用基準モーションと第２の高さ用基準モーションが用意される。そして、これらの第１の高さ用基準モーション、第２の高さ用基準モーションを合成することで、キャラクタのモーションが生成される。従って,キャラクタの所持オブジェクトを基準としたモーション合成が可能になり、例えば所持オブジェクトの軌道（例えばスイングの軌道）等を適正に表現できるようになり、これまでにないタイプのモーション合成を実現できる。
【０１４５】
また本実施形態では、コントローラの回転角度情報に基づいてモーション合成率を求め、求められたモーション合成率で第１の高さ用基準モーションと第２の高さ用基準モーションのモーション合成が行われる。このようにすれば、キャラクタの所持オブジェクト（部位オブジェクト）の高さが、コントローラの回転角度情報に応じた高さに設定されるモーションを生成できる。従って、コントローラの回転操作に応じて、所持オブジェクト等の軌道等が変化するモーションを生成できるようになり、よりリアルなモーション生成が可能になる。
【０１４６】
また本実施形態によれば、基準モーションのデータ量を最小限に抑えながら、キャラクタの所持オブジェクトや部位オブジェクトのリアルな軌道等を表現できる。従って、少ないモーションデータ量でリアルな画像表現を実現できる。
【０１４７】
なお操作情報として、コントローラ２００のＺ軸回りでの回転角度γ（第３の回転角度情報）が取得される場合には、この回転角度γも反映させたキャラクタのモーション制御を行うことが望ましい。例えばコントローラ２００の回転角度γが、フラットショットのラケット面の角度に対応する場合にはフラットショットのモーションを行い、回転角度γが、トップスピンショットのラケット面の角度に対応する場合にはトップスピンショットのモーションを行うように、キャラクタを制御する。また回転角度γが、スライスショットのラケット面の角度に対応する場合には、スライスショットのモーションを行うように、キャラクタを制御する。
【０１４８】
更に具体的には図２１に示すように、回転角度がα＝αｉ、β＝βｊ、γ＝γｍの場合の第１の基準モーションＭ（ｉ、ｊ、ｍ）と、回転角度がα＝αｉ＋１、β＝βｊ、γ＝γｍの場合の第２の基準モーションＭ（ｉ＋１、ｊ、ｍ）と、回転角度がα＝αｉ、β＝βｊ＋１、γ＝γｍの場合の第３の基準モーションＭ（ｉ、ｊ＋１、ｍ）と、回転角度がα＝αｉ＋１、β＝βｊ＋１、γ＝γｍの場合の第４の基準モーションＭ（ｉ＋１、ｊ＋１、ｍ）を、モーション記憶部１７４に記憶する。そしてこれらの第１、第２、第３、第４の基準モーションＭ（ｉ、ｊ、ｍ）、Ｍ（ｉ＋１、ｊ、ｍ）、Ｍ（ｉ、ｊ＋１、ｍ）、Ｍ（ｉ＋１、ｊ＋１、ｍ）を合成して、キャラクタのモーションを生成すればよい。
【０１４９】
またモーション合成率は、図１９の場合と同様にαとαｉ、αｉ＋１の関係、βとβｊ、βｊ＋１の関係等により求めればよい。また図２０の場合と同様に、第１、第２、第３の基準モーションＭ（ｉ、ｊ、ｍ）、Ｍ（ｉ＋１、ｊ、ｍ）、Ｍ（ｉ、ｊ＋１、ｍ）、Ｍ（ｊ＋１、ｍ）を合成して、キャラクタのモーションを生成してもよい。
【０１５０】
なお、回転角度γに対して、例えばフラット、トップスピン、スライスなどの各ショットに対応した複数の角度範囲を設け、これらの各角度範囲に対応する第１、第２、第３、第４の基準モーションを用意する。例えば第１の角度範囲用の第１、第２、第３、第４の基準モーション、第２の角度範囲用の第１、第２、第３、第４の基準モーションというように、各角度範囲毎に第１、第２、第３、第４の基準モーションを用意する。そして回転角度γが、これらの角度範囲のいずれに属するかに基づいて、回転角度γに応じた第１、第２、第３、第４の基準モーションを選択してもよい。
【０１５１】
或いは、図１９や図２０の手法により、回転角度α、βに基づいて生成されたモーションを、回転角度γに基づいて補正することで、最終的なキャラクタのモーションを生成してもよい。例えば回転角度α、βに基づいてモーションを生成した後、図１５の肩の骨Ｂ４に対する腕の骨Ｂ５の回転角度（相対的な回転角度）を、コントローラ２００の回転角度γに基づいて補正する。例えばフラットショットの場合には、フラットショットに対応する腕の振りになるように、骨Ｂ４に対する骨Ｂ５の回転角度を、回転角度γに基づき補正する。同様に、トップスピンショット、スライスショットの場合には、トップスピンショット、スライスショットに対応する腕の振りになるように、骨Ｂ４に対する骨Ｂ５の回転角度を回転角度γに基づき補正すればよい。
【０１５２】
或いは、図１５の手の骨Ｂ７に対するラケットの骨Ｂ２０の回転角度を、コントローラ２００の回転角度γに基づいて補正してもよい。即ちフラットショット、トップスピン、スライスショットの各ショットの振りになるように、骨Ｂ７に対する骨Ｂ２０の回転角度を補正する。
【０１５３】
以上のように回転角度γに基づくモーション補正を行えば、図２１の手法に比べてモーションのデータ量を減らすことができ、少ないデータ量でリアルなモーション表現を実現できる。
【０１５４】
また本実施形態では、コントローラ２００の回転角度γのみならず、コントローラ２００を振る強さやゲーム状況（ゲーム中の状況）に応じた基準モーションを使用して、モーション制御を行ってもよい。
【０１５５】
例えば、プレーヤがコントローラ２００を強く振った場合には、キャラクタが両手でラケットを持つ等の基準モーションを使用する。具体的には、キャラクタは、両手で持ったラケットを各方向（所定方向）に向けた呼吸モーションを行う。
【０１５６】
またキャラクタがネット付近にポジションにいるゲーム状況では、ボレー動作用の基準モーションを使用する。具体的には、ネット付近でキャラクタがラケットを各方向に向けた呼吸モーションを行う。
【０１５７】
またキャラクタがボールを追う時には、移動用の基準モーションを使用する。具体的には、ラケットを各方向に向けたままで、ボールを追う走りモーションを行う。
【０１５８】
また、使用する基準モーションの切り替えの際には、モーションブレンド（モーション合成）を行うことが望ましい。
【０１５９】
例えばキャラクタがラケットを持って構えた状態から、ボールを追いかけるために走り出す際には、構えの基準モーションから、モーションブレンドにより、徐々に移動用の基準モーションへと移行させる。また移動のモーションは、２つの基準モーションをブレンドすることでそれらの中間を表現する。例えば前方向への移動用の基準モーションと、右斜め前方向への移動用の基準モーションをブレンドすることで、前方向と右斜め前方向の中間の方向への移動用の基準モーションを生成する。
【０１６０】
また、この場合のモーションブレンドでは、各基準モーションでそれぞれのモーションを生成しているため、ブレンド前からブレンド後もコントローラの回転角度情報に基づく制御を引き継いだままモーションを移行できる。従って、より直感的にキャラクタを制御できるようになる。
【０１６１】
また、本実施形態で説明した各基準モーションは、それぞれが動いており、時間的に変化するモーションになっている。そして、時間的に変化する各基準モーションをブレンドすることで、スイングの軌道を作ったり、キャラクタが任意の方向に構えたりするようになる。
【０１６２】
これによって、コントローラ２００を振った時や止めた時などに、キャラクタはロボットのような機械的な動作を行うのではなく、躍動的な動作を行うようになる。また、基準モーションの任意のフレーム同士をブレンド（合成）することになるため、画面上では、予め用意したモーションの再生ではなく、コントローラ２００の制御によりアニメーションするモーションを再生できる。従って、モーションのゲーム上必要な要素を残しつつ、より直感的にキャラクタを制御できるようになる。
【０１６３】
３．詳細な処理
次に本実施形態の詳細な処理例について図２２、図２３のフローチャートを用いて説明する。
【０１６４】
図２２はヒット演算処理のフローチャートである。まず図１１で説明したような基準ポジションの設定操作が、プレーヤにより行われたか否かを判断する（ステップＳ１）。そして、基準ポジションの設定操作が行われた場合には、回転角度の初期化を指示する（ステップＳ２）。これにより例えばコントローラ２００の回転角度（α、β、γ）が初期値に設定される。そしてコントローラ２００の回転角度、加速度を取得し、取得された回転角度、加速度を記憶部１７０に保存する（ステップＳ３、Ｓ４）。
【０１６５】
次に、ボールがラケットにヒットしたか否かを判断し、ヒットした場合には、ヒット後に取得された回転角度等を、所定フレーム（例えば数フレーム）が経過するまで保存する（ステップＳ５、Ｓ６、Ｓ７）。これにより、ヒットタイミングの前後のタイミングを含むヒット判定区間で取得された回転角度等が保存される。
【０１６６】
次に、図８（Ａ）〜図８（Ｃ）で説明したように、ボールのヒットタイミングの前後（第１、第２のタイミング）の回転角度の変化情報に基づいて、ボールの回転方向、回転速度等を設定する（ステップＳ８）。例えばトップスピンの場合には順方向の回転になり、スライスの場合には逆方向の回転になるように回転方向を設定する。またヒットタイミングの前後での回転角度（γ）の変化が大きい場合には、ボールの回転速度（回転量）を速くする。
【０１６７】
次に、コントローラ２００の回転角度や回転角度の変化情報やヒットタイミングに基づいて、ボールのヒット方向を設定する（ステップＳ９）。例えば振り遅れのヒットタイミングの場合にはボールのヒット方向を例えば右方向に設定し、早振りのヒットタイミングの場合にはボールのヒット方向を例えば左方向に設定する。そして図１０で説明したように、ヒットタイミングでのＺ軸方向に沿った加速度に基づいて、ボールのヒット強さを設定する（ステップＳ１０）。
【０１６８】
図２３はモーション処理のフローチャートである。まずコントローラ２００の回転角度（α、β）を取得する（ステップＳ１１）。そして図１９、図２０等で説明したように、取得された回転角度が属する角度範囲を特定する（ステップＳ１２）。
【０１６９】
次に、特定された角度範囲に対応する基準モーションを読み出す（ステップＳ１３）。図１９を例に取れば、αｉ≦α≦αｉ＋１、βｊ≦β≦βｊ＋１の角度範囲に対応する基準モーションとして、第１、第２、第３、第４の基準モーションＭ（ｉ、ｊ）、Ｍ（ｉ＋１、ｊ）、Ｍ（ｉ、ｊ＋１）、Ｍ（ｉ＋１、ｊ＋１）が読み出される。また取得された回転角度（α、β）に基づいて、モーション合成率（Ｋ１、Ｋ２、Ｋ３、Ｋ４）を求める（ステップＳ１４）。そして、読み出された基準モーションを、求められたモーション合成率で合成して、キャラクタのモーションを生成する（ステップＳ１５）。この時、例えば回転角度（γ）に基づくモーション補正を行う。そして、生成されたモーション（補正後のモーション）でキャラクタを動作させる（ステップＳ１６）。
【０１７０】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（ヒット体、ヒット対象物等）と共に記載された用語（ラケット、ボール等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、ヒット演算処理、モーション処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【０１７１】
１００  処理部、１０１  操作情報取得部、１０２  ゲーム演算部、
１０４  オブジェクト空間設定部、１０６  ヒット演算処理部、
１０８  基準ポジション検出部、１１０  ヒット判定エリア設定部、
１１２  モーション処理部、１１４  キャラクタ制御部、１１６  仮想カメラ制御部、
１２０  画像生成部、１３０  音生成部、１６０  操作部、１７０  記憶部、
１７２  オブジェクトデータ記憶部、１７４  モーション記憶部、
１７６  描画バッファ、１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、
１９４  補助記憶装置、１９６  通信部、２００  コントローラ、
２０２  拡張ユニット、２１０  方向指示キー、２１２  Ａボタン、
２１４  トリガボタン、２２０  撮像素子、２２２  無線通信モジュール、
２２４  加速度センサ、２３０  角速度センサ
【図１】
2010237882.tif 000003
【図２】
2010237882.tif 000004
【図３】
2010237882.tif 000005
【図４】
2010237882.tif 000006
【図７】
2010237882.tif 000007
【図８】
2010237882.tif 000008
【図９】
2010237882.tif 000009
【図１０】
2010237882.tif 000010
【図１１】
2010237882.tif 000011
【図１２】
2010237882.tif 000012
【図１３】
2010237882.tif 000013
【図１４】
2010237882.tif 000014
【図１５】
2010237882.tif 000015
【図１８】
2010237882.tif 000016
【図１９】
2010237882.tif 000017
【図２０】
2010237882.tif 000018
【図２１】
2010237882.tif 000019
【図２２】
2010237882.tif 000020
【図２３】
2010237882.tif 000021
【図５】
2010237882.tif 000022
【図６】
2010237882.tif 000023
【図１６】
2010237882.tif 000024
【図１７】
2010237882.tif 000025