説明

情報処理プログラム及び情報処理装置

【課題】単純な装置の構成によりユーザの所定の動作を判定することが可能な情報処理プログラム及び情報処理装置を提供する。
【解決手段】ゲーム装置は、荷重コントローラが検出した荷重値が最大となる時間と、重心位置の移動速度を示す重心速度が最大となる時間との差に基づいて、第1評価値を算出する。また、ゲーム装置は、所定時間における荷重の落ち込み度合いを示す荷重速度と重心速度とに基づいて、第2評価値を算出する。さらに、ゲーム装置は、重心位置の軌跡に基づいて、第3評価値を算出する。そして、ゲーム装置は、第1〜第3評価値に基づいて、スライス量を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム及び情報処理装置に関し、具体的には、ユーザの荷重及び重心位置に基づいて所定の処理を行う情報処理プログラム及び情報処理装置に関する。
【背景技術】
【0002】
従来より、ユーザの重心位置を測定してスイング中における重心位置の軌跡を表示するとともに、光センサ等によりボールの存否を検出することによりスイングのトップ位置やインパクト点等を表示するゴルフ練習機が存在する(例えば、特許文献1)。具体的には、特許文献1に記載のゴルフ練習機では、光センサによりクラブヘッドの通過を検出することでスイングの開始点やインパクト点を検出する。また、上記ゴルフ練習機は、ユーザの荷重及び重心位置の変化に基づいて、スイング開始点からインパクト点までのボディーターン開始点、トップ位置、及び、振り下ろし点等の特徴点を検出する。そして、ゴルフ練習機は、スイングの各特徴点を荷重及び重心位置の測定情報と関連付けて表示装置に表示する。これにより、ユーザのゴルフスイングのフォームをきめ細かく分析することができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平06−63198号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載の技術では、以下の課題があった。すなわち、特許文献1に記載の技術では、ユーザの動作を判定するためには、ボールやクラブヘッドの存否を検出する光センサ等を用いてインパクト時点等を測定する必要があり、装置の構成が複雑になったり、製造コストが増大したりするという問題があった。
【0005】
それ故、本発明の目的は、単純な装置の構成によりユーザの所定の動作を判定することが可能な情報処理プログラム及び情報処理装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【0007】
本発明は、ユーザによって荷重が加えられる荷重センサを備えた第1入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムである。当該情報処理プログラムは、上記コンピュータを、荷重情報取得手段、重心位置検出手段、重心速度算出手段、及び、動作判定手段として機能させる。荷重情報取得手段は、上記第1入力装置からの信号に基づいて、上記第1入力装置に加えられた荷重の時間変化に関する荷重情報を取得する。重心位置検出手段は、上記第1入力装置からの信号に基づいて、上記ユーザの重心位置を検出する。重心速度算出手段は、上記重心位置の移動速度を示す重心速度を算出する。動作判定手段は、上記荷重情報と上記重心速度に関する重心速度情報との関係に基づいて、上記ユーザの所定の動作を判定する。
【0008】
なお、上記荷重情報とは、例えば、荷重の最大値(又は最小値)やその値となる時間、荷重の極大値(又は極小値)やその値となる時間、荷重値が所定の値となる場合の時間等であってもよい。また、上記荷重情報は、所定時間における荷重の変化量であってもよい。すなわち、荷重情報とは、荷重値の時間変化に関する様々な情報を含む概念である。また、上記重心速度情報とは、上記重心速度に関する様々な情報を含む概念であり、例えば、上記所定期間における最大(又は最小)の重心速度やその時間、所定の重心速度となる時間、重心速度の極大値(又は極小値)やその時間、重心速度の方向(重心の移動方向)等であってもよい。
【0009】
上記によれば、ユーザによって第1入力装置に加えられた荷重と当該荷重の重心速度とに基づいて、ユーザの所定の動作を判定することができる。これにより、複雑な装置構成を必要とせず、第1入力装置に対する荷重の入力のみによって、ユーザの所定の動作を判定することができる。
【0010】
本発明では、上記情報処理プログラムは、上記コンピュータを記憶手段としてさらに機能させてもよい。記憶手段は、上記第1入力装置からの信号に基づいて、所定期間における上記第1入力装置に加えられた荷重を示す荷重値データを記憶する。そして、上記荷重情報取得手段は、上記記憶手段に記憶された荷重値データに基づいて、上記荷重情報を取得する。
【0011】
上記によれば、所定期間に第1入力装置が検出した荷重値を記憶し、当該荷重値に基づいて、荷重情報を取得することができる。
【0012】
本発明では、上記荷重情報取得手段は、上記荷重情報として、上記第1入力装置に加えられた荷重が第1の条件を満たすタイミングを取得してもよい。この場合において、上記動作判定手段は、上記第1入力装置に加えられた荷重が上記第1の条件を満たすタイミングと上記重心速度が第2の条件を満たすタイミングとに基づいて、上記ユーザの所定の動作を判定してもよい。
【0013】
上記によれば、荷重値が第1の条件を満たすタイミングと重心速度が第2の条件を満たすタイミングとに基づいて、ユーザの所定の動作を判定することができる。
【0014】
本発明では、上記荷重情報取得手段は、上記第1入力装置に加えられた荷重が最大となるタイミングを取得してもよい。この場合において、上記動作判定手段は、上記荷重が最大となるタイミングと上記重心速度が最大となるタイミングとに基づいて、上記ユーザの所定の動作を判定してもよい。
【0015】
上記によれば、荷重値が最大となるタイミングと重心速度が最大となるタイミングとに基づいて、ユーザの動作を判定することができる。これにより、例えば、ユーザが体重移動を伴って腕を振ったり腰を回転させたりする動作を判定する場合において、上記2つのタイミングに基づいて、当該動作を判定することができる。例えば、当該動作が予め定められた所望の動作であるか否か等を判定することができる。
【0016】
本発明では、上記動作判定手段は、上記荷重が最大となるタイミングと上記重心速度が最大となるタイミングとの差に基づいて、上記ユーザの所定の動作を判定してもよい。
【0017】
上記によれば、荷重値が最大となるタイミングと重心速度が最大となるタイミングとの差に基づいて、ユーザの動作を判定することができる。これにより、例えば、当該差が大きいほど、ユーザが行った動作が予め定められた動作と異なる動作であると判定することができる。
【0018】
本発明では、上記荷重情報取得手段は、上記荷重情報として、上記第1入力装置に加えられた荷重の所定時間における変化量を示す荷重速度を取得してもよい。この場合において、上記動作判定手段は、上記重心速度と上記荷重速度とに基づいて、上記ユーザの所定の動作を判定してもよい。
【0019】
上記によれば、荷重速度と重心速度とに基づいて、ユーザの動作を判定することができる。
【0020】
本発明では、上記荷重情報取得手段は、上記荷重情報として、上記第1入力装置に加えられた荷重の所定時間における変化量を示す荷重速度を取得してもよい。この場合において、上記動作判定手段は、予め定められた荷重速度及び重心速度の関係と、上記荷重速度算出手段によって算出された荷重速度及び上記重心速度算出手段によって算出された重心速度の関係と、を比較することにより、上記ユーザの所定の動作を判定してもよい。
【0021】
上記によれば、荷重速度と重心速度とに基づいて、ユーザの動作を判定することができる。これにより、例えば、ユーザが体重移動を伴って腕を振ったり腰を回転させたりする動作を判定する場合において、当該腕の振りや腰の回転の速さと体重移動の速さとのバランスを判定することができる。
【0022】
本発明では、上記動作判定手段は、上記荷重速度を第1軸とし上記重心速度を第2軸とする座標系において、上記予め定められた荷重速度及び重心速度の関係を示す直線又は曲線から、上記荷重速度算出手段によって算出された荷重速度及び上記重心速度算出手段によって算出された重心速度を示す上記座標系における点までの距離に基づいて、上記ユーザの所定の動作を判定してもよい。
【0023】
上記によれば、上記距離に基づいて、ユーザの所定の動作が、予め定められた動作と比較してどのていど異なるかを判定することができる。また、上記距離に基づいて判定することにより、荷重速度と重心速度の双方に基づいて、ユーザの所定の動作を判定することができる。
【0024】
本発明では、上記動作判定手段は、上記荷重速度を第1軸とし上記重心速度を第2軸とする座標系において、ユーザの所定の動作が理想的に行われたときに検出される荷重速度および重心速度の関係を示す直線から、上記荷重速度算出手段によって算出された荷重速度及び上記重心速度算出手段によって算出された重心速度を示す上記座標系における点までの距離に基づいて、ユーザの所定の動作を判定してもよい。
【0025】
上記によれば、上記座標系において、ユーザの所定の動作が理想的に行われたときに検出される荷重速度および重心速度の関係を示す直線が定められる。そして、当該直線から、上記荷重速度算出手段によって算出された荷重速度及び上記重心速度算出手段によって算出された重心速度を示す点までの距離に基づいて、ユーザの動作を判定することができる。
【0026】
本発明では、上記直線の傾きが略2であってもよい。
【0027】
また、本発明では、上記直線の切片が略0.07であってもよい。
【0028】
また、本発明では、上記直線の傾きが1.7〜2.3程度であってもよい。
【0029】
また、本発明では、上記直線の切片が0.058〜0.083程度であってもよい。
【0030】
また、本発明では、上記直線の切片は、上記直線の傾きが増加するにしたがって減少してもよい。
【0031】
上記によれば、ユーザの所定の動作が理想的に行われたときの荷重速度と重心速度との関係を表す直線が定められ、例えば、ゴルフスイングにおいて打球がストレートとなる場合のスイングを定めることができる。
【0032】
本発明では、上記荷重情報取得手段は、上記荷重情報として、上記第1入力装置に加えられた荷重が第1の条件を満たすタイミングと、上記第1入力装置に加えられた荷重の所定時間における変化量を示す荷重速度とを取得してもよい。この場合において、上記情報処理プログラムは、上記コンピュータを、第1評価手段、及び、第2評価手段としてさらに機能させる。第1評価手段は、上記第1入力装置に加えられた荷重が第1の条件を満たすタイミングと上記重心速度が第2の条件を満たすタイミングとに基づいて、第1の評価を行う。第2評価手段は、上記重心速度と上記荷重速度とに基づいて、第2の評価を行う。そして、上記動作判定手段は、上記第1評価手段による評価結果と上記第2評価手段による評価結果とに基づいて、上記ユーザの所定の動作を判定する。
【0033】
上記によれば、第1評価手段の評価結果と第2評価手段の評価結果とに基づいて、ユーザの動作を判定することができる。これにより、上記2つのタイミングに加えて、上記重心速度及び上記荷重速度にも基づいて、ユーザの動作を判定することができる。
【0034】
本発明では、上記情報処理プログラムは、第3評価手段として上記コンピュータをさらに機能させてもよい。第3評価手段は、上記重心位置検出手段によって検出された重心位置の軌跡に基づいて、第3の評価を行う。この場合において、上記動作判定手段は、上記第3評価手段による評価結果にも基づいて、上記ユーザの所定の動作を判定する。
【0035】
上記によれば、重心位置の軌跡に基づいて第3の評価を行うことができ、当該第3の評価結果にも基づいてユーザの動作を判定することができる。従って、例えば、ユーザの体重移動に基づく重心位置の軌跡によって囲まれる面積や軌跡の形状等にも基づいて、ユーザの動作を判定することができる。
【0036】
本発明では、上記情報処理プログラムは、第3評価手段として上記コンピュータをさらに機能させてもよい。第3評価手段は、上記重心位置検出手段によって検出された重心位置の軌跡の少なくとも一部と、上記重心位置検出手段によって検出された重心位置のうち2つの重心位置を結ぶ線とによって囲まれる面積に基づいて、第3の評価を行う。そして、上記動作判定手段は、上記第3評価手段による評価結果にも基づいて、上記ユーザの所定の動作を判定する。
【0037】
上記によれば、重心位置の軌跡の少なくとも一部によって囲まれる面積に基づいて第3の評価を行うことができる。そして、第3の評価結果にも基づいてユーザの動作を判定することができる。
【0038】
本発明では、上記第1評価手段は、上記第1入力装置に加えられた荷重が第1の条件を満たすタイミングと上記重心速度が第2の条件を満たすタイミングとに基づいて、第1評価値を算出してもよい。また、上記第2評価手段は、上記重心速度と上記荷重速度とに基づいて、第2評価値を算出してもよい。そして、上記動作判定手段は、上記第1評価値の値に応じて上記第2評価値を変化させ、上記第1評価値と当該変化後の第2評価値とに基づいて、上記ユーザの所定の動作を判定してもよい。
【0039】
上記によれば、第1評価値に応じて第2評価値を変化させることができ、当該変化後の第2評価値を用いてユーザの動作を判定することができる。これにより、ユーザの動作の判定に対する第2評価値の影響を、第1評価値の値に応じて変化させることができる。
【0040】
本発明では、上記動作判定手段は、上記第1評価値の値が大きくなるにしたがって上記第2評価値の値が小さくなるように当該第2評価値を変化させてもよい。
【0041】
上記によれば、第1評価値の値が大きければ大きいほど、第2評価値の値を小さくすることができる。これにより、第1評価値の値が大きければ大きいほど、ユーザの動作の判定に対する第2評価値の影響を小さくすることができる。
【0042】
本発明では、上記動作判定手段は、上記ユーザの所定の動作のタイミングが所定のタイミングよりも遅れているか否かを判定してもよい。
【0043】
上記によれば、荷重を測定することにより、ユーザが行った動作のタイミングが、所定のタイミングよりも遅れているか否かを判定することができる。
【0044】
本発明では、上記情報処理装置は、上記第1入力装置とは異なる第2入力装置からの信号をさらに処理してもよい。この場合において、上記情報処理プログラムは、基準時設定手段として上記コンピュータをさらに機能させてもよい。基準時設定手段は、上記第2入力装置による上記情報処理装置への入力が所定の条件を満たした時点を基準時として設定する。そして、上記動作判定手段は、上記基準時に応じて定められる期間に上記荷重情報取得手段によって取得された荷重情報と上記重心速度情報との関係に基づいて、上記ユーザの所定の動作を判定する。
【0045】
上記によれば、第2入力装置からの信号に応じて、基準時を設定することができる。そして、設定された基準時に応じて定められる期間に取得された荷重情報と重心速度情報との関係に基づいて、ユーザの動作を判定することができる。
【0046】
本発明では、上記動作判定手段は、上記基準時に応じて定められる期間において取得される上記荷重情報と当該期間における上記重心速度情報との関係に基づいて、当該期間における複数時点での上記ユーザの所定の動作を判定してもよい。
【0047】
上記によれば、上記基準時に応じて定められる期間において、複数回上記ユーザの動作を判定することができる。従って、基準時後の所定時間繰り返しユーザの動作を判定することができる。
【0048】
本発明では、上記第2入力装置は、加速度センサを備えてもよい。この場合において、上記基準時設定手段は、上記第2入力装置からの信号に基づいて、上記加速度センサによって検出された加速度の大きさが所定の閾値よりも大きくなった時点を、上記基準時として設定する。
【0049】
上記によれば、例えば、ユーザが上記第2入力装置を所定の速さ以上で振った時点を、上記基準時として設定することができる。
【0050】
本発明では、上記情報処理プログラムは、表示制御手段として上記コンピュータをさらに機能させてもよい。表示制御手段は、上記動作判定手段による判定結果に基づいて、仮想空間上の所定のオブジェクトが当該仮想空間を移動する様子を表示する。
【0051】
上記によれば、ユーザの動作に応じて、所定のオブジェクトが仮想空間上を移動する様子を表示させることができる。
【0052】
本発明は、ユーザによって荷重が加えられる、荷重センサを備えた第1入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムである。当該情報処理プログラムは、上記コンピュータを、重心位置検出手段、動作判定手段として機能させる。重心位置検出手段は、上記第1入力装置からの信号に基づいて、所定期間における上記第1入力装置に加えられた荷重の重心位置を検出する。動作判定手段は、上記重心位置検出手段によって検出された重心位置の軌跡に基づいて、上記ユーザの所定の動作を判定する。
【0053】
上記によれば、ユーザの動作に応じて変化する重心位置の軌跡の少なくとも一部によって囲まれる面積に基づいて、当該ユーザの動作を判定することができる。
【0054】
また、本発明は、上記情報処理プログラムを実行する情報処理装置の形態で実施されてもよい。
【発明の効果】
【0055】
本発明によれば、複雑な装置構成を必要とせず、荷重センサを備えた第1入力装置に対する荷重の入力のみによって、ユーザの所定の動作を判定することができる。
【図面の簡単な説明】
【0056】
【図1】本発明の一実施例であるゲームシステムの外観を示す外観図
【図2】本実施例のビデオゲームシステム10の電気的な構成を示すブロック図
【図3】コントローラ22の外観の一例を示す図
【図4】コントローラ22の電気的な構成を示すブロック図
【図5】図1に示した荷重コントローラ36の外観を示す斜視図
【図6】図5に示した荷重コントローラ36のVI−VI断面図
【図7】荷重コントローラ36の電気的な構成の一例を示すブロック図
【図8】本実施形態で想定するゲームの画面の一例を示した図
【図9】右打ちのプレイヤが荷重コントローラ36の上に乗り、ゴルフクラブをスイングするようにコントローラ22を振る様子を示した図
【図10】ボール122に初速度が与えられる瞬間(インパクトの瞬間)の様子をゲーム空間の横から見た図であり、ボールの打ち出し角度を示す図
【図11】初速度が与えられたボール122を後ろ側から見た図であり、ボールのスライス量を示す図
【図12】ボール122に初速度が与えられる瞬間(インパクトの瞬間)の様子をゲーム空間の上から見た図であり、ボールの右打ち出し角度を示す図
【図13A】プレイヤがバックスイングの状態で静止している様子を示した図
【図13B】プレイヤがバックスイングの状態からダウンスイングに移行する瞬間の様子を示した図
【図13C】プレイヤがダウンスイングをしている様子を示した図
【図13D】プレイヤがボールを打つ瞬間(インパクトの瞬間)を示した図
【図13E】プレイヤがフォロースルーをしている様子を示した図
【図14】プレイヤがダウンスイングを開始した直後からの荷重コントローラ36が検出する荷重値の時間変化を示した図
【図15A】荷重コントローラ36を上方から見た図
【図15B】荷重コントローラ36の台36a上の位置に対応したST座標系を示す図
【図16】プレイヤがバックスイングを開始した直後からの重心位置の軌跡を示した図
【図17】荷重速度を説明するための図
【図18】理想的なスイングにおける荷重速度と重心速度との関係を示した図であり、第2評価値を示した図
【図19】重心位置の軌跡を示した図であり、第3評価値を示した図
【図20】右打ち出し角度θyの算出方法を示した図
【図21】ゲーム装置12のメインメモリ(外部メインメモリ46又は内部メインメモリ42e)に記憶される主なデータを示す図
【図22】ゲーム装置12において実行されるゲーム処理の流れを示すメインフローチャート
【図23】各パラメータの算出処理(S8)の詳細を示すフローチャート
【発明を実施するための形態】
【0057】
(ゲームシステムの全体構成)
次に、図面を参照して本発明に一実施例について説明する。図1は、本発明の一実施例であるゲームシステムの外観を示す外観図である。ゲームシステム10は、ゲーム装置12、コントローラ22および荷重コントローラ36を含む。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ(22,36)と通信可能に設計されている。また、ゲーム装置12と各コントローラ(22,36)とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。
【0058】
ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。ディスクスロット16の周囲には、LEDと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
【0059】
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という。)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
【0060】
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
【0061】
ゲーム装置12のハウジング14の後面には、AVケーブルコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル32aを通してゲーム装置12にモニタ34およびスピーカ34aを接続する。このモニタ34およびスピーカ34aは典型的にはカラーテレビジョン受像機であり、AVケーブル32aは、ゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、モニタ34の上側)には、2つの赤外LED(マーカ)340m,340nを備えるマーカ部34bが設けられる。このマーカ部34bは、電源ケーブル32bを通してゲーム装置12に接続される。したがって、マーカ部34bには、ゲーム装置12から電源が供給される。これによって、マーカ340m,340nは発光し、それぞれモニタ34の前方に向けて赤外光を出力する。
【0062】
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0063】
このゲームシステム10において、ユーザまたはユーザがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。それに応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、コントローラ22自体を動かすことによって、動画オブジェクト(ユーザオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0064】
図2は、本実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示されるように、ゲーム装置12には、CPU40が設けられる。このCPU40は、ゲームプロセッサとして機能する。このCPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
【0065】
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラムデータやテクスチャデータ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
【0066】
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
【0067】
入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後で詳細に説明する。
【0068】
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
【0069】
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。なお、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
【0070】
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
【0071】
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【0072】
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
【0073】
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60および外部メモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
【0074】
入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(送信データとする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(受信データとする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、受信データをフラッシュメモリ44に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ42aは、ダウンロードサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、ダウンロードデータをフラッシュメモリ44に記憶する。
【0075】
また、入出力プロセッサ42aは、コントローラ22や荷重コントローラ36から送信される入力データをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。入力データは、CPU40のゲーム処理によって利用された後、バッファ領域から消去される。
【0076】
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格にしたがってコントローラ22や荷重コントローラ36との間で通信を行う。
【0077】
また、図面の都合上、図2では、コントローラ22と荷重コントローラ36とをまとめて記載してある。
【0078】
さらに、入出力プロセッサ42aには、拡張コネクタ60および外部メモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。外部メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60や外部メモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0079】
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、システムLSI42は、通常の通電状態となるモード(通常モードと呼ぶこととする)を設定する。一方、電源ボタン20aがオフされると、ゲーム装置12の一部のコンポーネントのみに電源が供給され、システムLSI42は、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という。)を設定する。この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、CPU40によってアプリケーションの実行が行われないモードである。
【0080】
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
【0081】
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【0082】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【0083】
また、通常モードとスタンバイモードの切り替えは、コントローラ22の電源スイッチ26h(図3参照)のオン/オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
【0084】
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
【0085】
図3(A)ないし図3(E)は、コントローラ22の外観の一例を示す図である。図3(A)はコントローラ22の先端面を示し、図3(B)はコントローラ22の上面を示し、図3(C)はコントローラ22の右側面を示し、図3(D)はコントローラ22の下面を示し、そして、図3(E)はコントローラ22の後端面を示す。
【0086】
図3(A)ないし図3(E)を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング22a(コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(B)に示されるように、ハウジング22aの上面には、十字キー26a,1ボタン26b,2ボタン26c,Aボタン26d,−ボタン26e,HOMEボタン26f,+ボタン26gおよび電源スイッチ26hが設けられる。また、図3(C)および図3(D)に示されるように、ハウジング22aの下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ26iが設けられる。
【0087】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、ユーザによって操作可能なキャラクタまたはオブジェクト(ユーザキャラクタまたはユーザオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0088】
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【0089】
Aボタンスイッチ26dは、押しボタンスイッチであり、ユーザキャラクタまたはユーザオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【0090】
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0091】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0092】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ22で選択した位置を指定したりするために使用される。また、Bトリガースイッチ26iを押し続けると、ユーザオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
【0093】
また、図3(E)に示されるように、ハウジング22aの後端面に外部拡張コネクタ22bが設けられ、また、図3(B)に示されるように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別の拡張コントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、点灯LEDに対応するコントローラ22の識別情報(コントローラ番号)を示したり、点灯させるLEDの個数によってコントローラ22の電源残量を示したりすることができる。
【0094】
さらに、コントローラ22は、撮像情報演算部80(図4参照)を有しており、図3(A)に示されるように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、コントローラ22は、スピーカ86(図4参照)を有しており、このスピーカ86は、図3(B)に示されるように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
【0095】
なお、図3(A)ないし図3(E)に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0096】
図4は、コントローラ22の電気的な構成を示すブロック図である。この図4を参照して、コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、外部拡張コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0097】
プロセッサ70は、コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、入力データとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。
【0098】
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
【0099】
また、加速度センサ74は、コントローラ22の縦方向(Y軸方向)、横方向(X軸方向)および前後方向(Z軸方向)の3軸で各々の加速度を検出する。すなわち、加速度センサ74は、コントローラ22のXYZ座標系(物体座標系)における各軸方向の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【0100】
たとえば、加速度センサ74は、第1所定時間毎に、X軸,Y軸,Z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを、第2所定時間毎に検出し、一旦メモリ72に記憶する。プロセッサ70は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、5msec)毎にゲーム装置12に送信する。
【0101】
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
【0102】
無線モジュール76は、たとえばBluetoothの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、コントローラ22からの入力データを取得することができる。そして、CPU40は、取得した入力データとプログラム(ゲームプログラム)とに従ってゲーム処理を行う。
【0103】
さらに、上述したように、コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ80a、レンズ80b、撮像素子80cおよび画像処理回路80dによって構成される。赤外線フィルタ80aは、コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ340mおよび340nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ80aを設けることによってマーカ340mおよび340nの画像をより正確に撮像することができる。レンズ84は、赤外線フィルタ82を透過した赤外線を集光して撮像素子80cへ出射する。撮像素子80cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ80bによって集光された赤外線を撮像する。したがって、撮像素子80cは、赤外線フィルタ80aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子80cによって撮像された画像を撮像画像と呼ぶ。撮像素子80cによって生成された画像データは、画像処理回路80dで処理される。画像処理回路80dは、撮像画像内における撮像対象(マーカ340mおよび340n)の位置を算出し、第4所定時間毎に、当該位置を示す各座標値を撮像データとしてプロセッサ70に出力する。なお、画像処理回路80dにおける処理については後述する。
【0104】
図5は、図1に示した荷重コントローラ36の外観を示す斜視図である。図5に示されるように、荷重コントローラ36は、ユーザがその上に乗る(ユーザの足を乗せる)台36a、および台36aにかかる荷重を検出するための少なくとも4つの荷重センサ364(364a〜364d)を備える。なお、各荷重センサ364は台36aに内包されており(図7参照)、図5においてはその配置が点線で示されている。
【0105】
台36aは、略直方体に形成されており、上面視で略長方形状である。たとえば長方形の短辺が30cm程度に設定され、その長辺が50cm程度に設定される。ユーザが乗る台36aの上面は平坦にされる。台36aの4隅の側面は、部分的に円柱状に張り出すように形成されている。
【0106】
この台36aにおいて、4つの荷重センサ364は、所定の間隔を置いて配置される。この実施例では、4つの荷重センサ364は、台36aの周縁部に、具体的には4隅にそれぞれ配置される。荷重センサ364の間隔は、台36aに対するユーザの荷重のかけ方によるゲーム操作の意図をより精度良く検出できるように適宜な値に設定される。
【0107】
図6は、図5に示した荷重コントローラ36のVI−VI断面図を示すとともに、荷重センサ364の配置された隅の部分が拡大表示されている。この図6から分かるように、台36aは、ユーザが乗るための支持板360と脚362を含む。脚362は、荷重センサ364が配置される箇所に設けられる。この実施例では4つの荷重センサ364が4隅に配置されるので、4つの脚362が4隅に設けられる。脚362は、たとえばプラスチック成型によって略有底円筒状に形成されており、荷重センサ364は、脚362内の底面に設けられた球面部品362a上に配置される。支持板360は、この荷重センサ364を介して脚362に支持される。
【0108】
支持板360は、上面と側面上部とを形成する上層板360a、下面と側面下部とを形成する下層板360b、および上層板360aと下層板360bとの間に設けられる中層板360cを含む。上層板360aと下層板360bとは、たとえばプラスチック成型により形成されており、接着等により一体化される。中層板360cは、たとえば1枚の金属板のプレス成型により形成されている。この中層板360cが、4つの荷重センサ364の上に固定される。上層板360aは、その下面に格子状のリブ(図示しない)を有しており、当該リブを介して中層板360cに支持されている。したがって、台36aにユーザが乗ったときには、その荷重は、支持板360、荷重センサ364および脚362を伝達する。図6に矢印で示したように、入力される荷重によって生じた床からの反作用は、脚362から、球面部品362a、荷重センサ364、中層板360cを介して、上層板360aに伝達する。
【0109】
荷重センサ364は、たとえば歪ゲージ(歪センサ)式ロードセルであり、入力された荷重を電気信号に変換する荷重変換器である。荷重センサ364では、荷重入力に応じて、起歪体365が変形して歪が生じる。この歪が、起歪体に貼り付けられた歪センサ366によって、電気抵抗の変化に変換され、さらに電圧変化に変換される。したがって、荷重センサ364は、入力荷重を示す電圧信号を出力端子から出力する。
【0110】
なお、荷重センサ364は、音叉振動式、弦振動式、静電容量式、圧電式、磁歪式、またはジャイロ式のような他の方式の荷重センサであってもよい。
【0111】
図5に戻って、荷重コントローラ36には、さらに、電源ボタン36cが設けられる。この電源ボタン36cがオンされると、荷重コントローラ36の各回路コンポーネント(図7参照)に電源が供給される。ただし、荷重コントローラ36は、ゲーム装置12からの指示に従ってオンされる場合もある。また、荷重コントローラ36は、ユーザが乗っていない状態が一定時間(たとえば、30秒)以上継続すると、電源がオフされる。ただし、荷重コントローラ36が起動されている状態で、電源ボタン36cをオンしたときに、電源がオフされてもよい。
【0112】
図7は、荷重コントローラ36の電気的な構成の一例を示すブロック図である。なお、この図7では、信号および通信の流れは実線矢印で示される。破線矢印は、電源の供給を示している。
【0113】
荷重コントローラ36は、その動作を制御するためのマイクロコンピュータ(マイコン)100を含む。マイコン100は図示しないCPU、ROMおよびRAM等を含み、CPUはROMに記憶されたプログラムに従って荷重コントローラ36の動作を制御する。
【0114】
マイコン100には、電源ボタン36c、ADコンバータ102、DC−DCコンバータ104および無線モジュール106が接続される。さらに、無線モジュール106には、アンテナ106aが接続される。4つの荷重センサ364は、それぞれ、増幅器108を介してADコンバータ102に接続される。
【0115】
また、荷重コントローラ36には電源供給のために電池100が収容されている。他の実施例では、電池に代えてACアダプタを接続し、商用電源を供給するようにしてもよい。かかる場合には、DC−DCコンバータに代えて、交流を直流に変換し、直流電圧を降圧および整流する電源回路を設ける必要がある。この実施例では、マイコン100および無線モジュール106への電源の供給は、電池から直接的に行われる。つまり、マイコン100内部の一部のコンポーネント(CPU)と無線モジュール106とには、常に電源が供給されており、電源ボタン36cがオンされたか否か、ゲーム装置12から電源オン(荷重検出)のコマンドが送信されたか否かを検出する。一方、荷重センサ364、ADコンバータ102および増幅器108には、電池110からの電源がDC−DCコンバータ104を介して供給される。DC−DCコンバータ104は、電池110からの直流電流の電圧値を異なる電圧値に変換して、荷重センサ364、ADコンバータ102および増幅器108に与える。
【0116】
これら荷重センサ364、ADコンバータ102および増幅器108への電源供給は、マイコン100によるDC−DCコンバータ104の制御によって、必要に応じて行われるようにしてよい。つまり、マイコン100は、荷重センサ364を動作させて荷重を検出する必要があると判断されるときに、DC−DCコンバータ104を制御して、各荷重センサ364、ADコンバータ102および各増幅器108に電源を供給するようにしてよい。
【0117】
電源が供給されると、各荷重センサ364は、入力された荷重を示す信号を出力する。当該信号は各増幅器108で増幅され、ADコンバータ102でアナログ信号からディジタルデータに変換されて、マイコン100に入力される。各荷重センサ364の検出値には各荷重センサ364の識別情報が付与されて、いずれの荷重センサ364の検出値であるかが識別可能にされる。このようにして、マイコン100は、同一時刻における4つの荷重センサ364のそれぞれの荷重検出値を示すデータを取得することができる。
【0118】
一方、マイコン100は、荷重センサ364を動作させる必要がないと判断されるとき、つまり、荷重検出タイミングでないとき、DC−DCコンバータ104を制御して、荷重センサ364、ADコンバータ102および増幅器108への電源の供給を停止する。このように、荷重コントローラ36では、必要なときにだけ、荷重センサ364を動作させて荷重の検出を行うことができるので、荷重検出のための電力消費を抑制することができる。
【0119】
荷重検出の必要なときとは、典型的には、ゲーム装置12(図1)が荷重データを取得したいときである。たとえば、ゲーム装置12が荷重情報を必要とするとき、ゲーム装置12は荷重コントローラ36に対して荷重取得命令を送信する。マイコン100は、ゲーム装置12から荷重取得命令を受信したときに、DC−DCコンバータ104を制御して、荷重センサ364等に電源を供給し、荷重を検出する。一方、マイコン100は、ゲーム装置12から荷重取得命令を受信していないときには、DC−DCコンバータ104を制御して、電源供給を停止する。
【0120】
あるいは、マイコン100は、一定時間ごとに荷重検出タイミングであると判断して、DC−DCコンバータ104を制御するようにしてもよい。このような周期的な荷重検出を行う場合、周期情報は、たとえば、初めにゲーム装置12から荷重コントローラ36のマイコン100に与えられて記憶されてよいし、または、予めマイコン100に記憶されてよい。
【0121】
荷重センサ364からの検出値を示すデータは、荷重コントローラ36の操作データ(入力データ)として、マイコン100から無線モジュール106およびアンテナ106bを介してゲーム装置12(図1)に送信される。たとえば、ゲーム装置12からの命令を受けて荷重検出を行った場合、マイコン100は、ADコンバータ102から荷重センサ364の検出値データを受信したときに、当該検出値データをゲーム装置12に送信する。あるいは、マイコン100は、一定時間ごとに検出値データをゲーム装置12に送信するようにしてもよい。荷重の検出周期よりも送信周期が長い場合には、送信タイミングまでに検出された複数の検出タイミングの荷重値を含むデータが送信される。
【0122】
なお、無線モジュール106は、ゲーム装置12の無線コントローラモジュール52と同じ無線規格(Bluetooth、無線LANなど)で通信可能にされる。したがって、ゲーム装置12のCPU40は、無線コントローラモジュール52等を介して荷重取得命令を荷重コントローラ36に送信することができる。荷重コントローラ36のマイコン100は、無線モジュール106およびアンテナ106aを介して、ゲーム装置12からの命令を受信し、また、各荷重センサ364の荷重検出値(または荷重算出値)を含む入力データをゲーム装置12に送信することができる。
【0123】
たとえば4つの荷重センサ364で検出される4つの荷重値の単なる合計値に基づいて実行されるようなゲームの場合には、ユーザは荷重コントローラ36の4つの荷重センサ364に対して任意の位置をとることができ、つまり、ユーザは台36aの上の任意の位置に任意の向きで乗ってゲームをプレイすることができる。しかし、ゲームの種類によっては、各荷重センサ364で検出される荷重値がユーザから見ていずれの方向の荷重値であるかを識別して処理を行う必要があり、つまり、荷重コントローラ36の4つの荷重センサ364とユーザとの位置関係が把握されている必要がある。この場合、たとえば、4つの荷重センサ364とユーザとの位置関係を予め規定しておき、当該所定の位置関係が得られるようにユーザが台36a上に乗ることが前提とされてよい。典型的には、台36aの中央に乗ったユーザの前後左右にそれぞれ荷重センサ364が2つずつ存在するような位置関係、つまり、ユーザが荷重コントローラ36の台36aの中央に乗ったとき、ユーザの中心から右前、左前、右後および左後の方向にそれぞれ荷重センサ364が存在するような位置関係が規定される。この場合、この実施例では、荷重コントローラ36の台36aが平面視で矩形状に形成されるとともにその矩形の1辺(長辺)に電源ボタン36cが設けられているので、この電源ボタン36cを目印として利用して、ユーザには電源ボタン36cの設けられた長辺が所定の方向(前、後、左または右)に存在するようにして台36aに乗ってもらうことを予め決めておく。このようにすれば、各荷重センサ364で検出される荷重値は、ユーザから見て所定の方向(右前、左前、右後および左後)の荷重値となる。したがって、荷重コントローラ36およびゲーム装置12は、荷重検出値データに含まれる各荷重センサ364の識別情報と、予め設定(記憶)された各荷重センサ364のユーザに対する位置ないし方向を示す配置データとに基づいて、各荷重検出値がユーザから見ていずれの方向に対応するかを把握することができる。これにより、たとえば前後左右の操作方向のようなユーザによるゲーム操作の意図を把握することが可能になる。
【0124】
なお、各荷重センサ364のユーザに対する配置は予め規定せずに、初期設定やゲーム中の設定などでユーザの入力によって配置が設定されるようにしてもよい。たとえば、ユーザから見て所定の方向(左前、右前、左後または右後など)の部分に乗るようにユーザに指示する画面を表示するとともに荷重値を取得することによって、各荷重センサ364のユーザに対する位置関係を特定することができるので、この設定による配置データを生成して記憶するようにしてよい。あるいは、モニタ34の画面上に、荷重コントローラ36の配置を選択するための画面を表示して、目印(電源ボタン36c)がユーザから見てどの方向に存在するかをコントローラ22による入力によって選択してもらい、この選択に応じて各荷重センサ364の配置データを生成して記憶するようにしてよい。
【0125】
(ゲーム処理の概要)
次に、図8及び図9を参照して、本発明の一実施形態に係るゲーム処理の概要について説明する。本実施形態で想定するゲームは、ゴルフ練習用のゲームである。図8は、本実施形態で想定するゲームの画面の一例を示した図である。図8では、仮想ゲーム空間に構築されたゴルフ練習場、仮想ゲーム空間に登場するプレイヤであるプレイヤオブジェクト120、ボールオブジェクト(単にボールという)122、ゴルフクラブのヘッド124、及び、ピン126が画面に表示される。このゲームでは、仮想ゲーム空間内に登場するプレイヤオブジェクト120をプレイヤが操作することによって仮想的にゴルフの練習を行う。図8では、右打ちのプレイヤオブジェクト120が表示されている。仮想ゲーム空間の任意の位置は、xyz座標系(空間固定座標系)の座標値で示される。図8に示されるように、xyz座標系のx軸正方向は、画面の左から右に向かう方向であり、y軸正方向は、仮想ゲーム空間の上方向であり、z軸正方向は、プレイヤオブジェクト120からピン126に向かう方向(画面の手前から奥への方向)である。なお、xyz座標軸は実際には画面に表示されない。
【0126】
この場合、モニタ34の画面に対して荷重コントローラ36を縦置き(長辺方向が画面に向かう方向と平行となる配置)にする。例えば、右打ちのプレイヤは、縦置きにした荷重コントローラ36の上に乗り、画面に対して右向きになるように立って、実際にゴルフクラブをスイングするようにコントローラ22を振る。図9は、右打ちのプレイヤが荷重コントローラ36の上に乗り、ゴルフクラブをスイングするようにコントローラ22を振る様子を示した図である。図9に示されるように、プレイヤがコントローラ22を両手又は片手で把持し、スイング動作をする。このプレイヤのスイング動作に応じて、画面に表示されるプレイヤオブジェクト120は、ゴルフスイングを行い、ボール122をショットする。そして、ショットされたボール122がゲーム空間上を飛んでいく様子が、画面に表示される。
【0127】
本実施形態に係るゲーム処理では、プレイヤがコントローラ22を振る動作、及び、プレイヤの体重移動による荷重及び重心位置の変化に基づいて、ボール122に与えられる各パラメータが算出され、算出されたパラメータに基づいてボール122の飛距離や軌道が決定される。以下、具体的にボール122に与えられる各パラメータについて説明する。
【0128】
一般的にショットしたゴルフボールの飛距離や軌道は、ボールに与えられる各パラメータによって決定される。すなわち、ボールの飛距離や軌道は、ボールに与えられる初速度の大きさ、ボールの打ち出し角度、スライス量(サイドスピン)、右打ち出し角度、及び、バックスピン量に応じて、決定される。以下、各パラメータについて説明する。なお、各パラメータを算出する方法については、後述する。
【0129】
ボールの初速度の大きさは、ボールがゴルフクラブでショットされた瞬間にボールに与えられる初速度の大きさである。ボールの打ち出し角度は、ボールの初速度ベクトルと地面とがなす角度である。図10は、ボール122に初速度が与えられる瞬間(インパクトの瞬間)の様子を仮想ゲーム空間の横から見た図であり、ボールの打ち出し角度を示す図である。図10に示されるように、ボール122の打ち出し角度θxは、初速度ベクトルと地面とがなす角度である。すなわち、打ち出し角度θxは、ボールの初速度ベクトルをゲーム空間のxyz座標系におけるyz平面に射影した場合のyz平面射影ベクトルとz軸とのなす角度である。
【0130】
ボールのスライス量は、ボールが打ち出されてゲーム空間を飛んでいく場合に右又は左に曲がる度合いを示す量である。具体的には、ボールのスライス量は、ボールの回転軸の地面に対する傾き(角度)によって表される。図11は、初速度が与えられたボール122を後ろ側から見た図であり、ボールのスライス量を示す図である。図11に示すように、ボールのスライス量θzは、ボールの回転軸のz軸周りの回転角度(図11の破線と実線との角度)である。一般に、初速が与えられたボールは、バックスピン(回転)がかかる。図11の破線で示すように、バックスピンの回転軸が地面に対して傾いていない場合(バックスピンの回転軸がx軸と平行の場合)、ボール122は、仮想ゲーム空間をカーブすることなく真っ直ぐ(ストレート)に進む。しかしながら、図11の実線で示すように、バックスピンの回転軸が地面に対して右に所定の角度(正の値)だけ傾いている場合、ボール122は、右方向(x軸正方向)に曲がりながら進む(スライスする)。逆に、バックスピンの回転軸が地面に対して左に所定の角度(負の値)だけ傾いている場合、ボール122は、左方向(x軸負方向)に曲がりながら進む(フックする)。ボール122にバックスピンがかかると、スピンの回転軸に対して垂直上向きの力がボール122に働くため、ボール122は、スピンの回転軸の角度に応じた横方向(y軸方向)の力が働く。すなわち、ボールのスライス量θzの大きさ及び符号(正又は負)に応じて、ボール122のカーブする量及び方向が定まる。
【0131】
なお、一般的には、ボールがカーブする量は、バックスピンの回転量(回転速度)に依存する。しかしながら、本実施形態では、バックスピンの回転量はゴルフクラブの種類(番手)に応じて予め定められるため、ボール122がカーブする量は、上記スライス量θzの値とゴルフクラブの種類によってのみ定められる。
【0132】
ボールの右打ち出し角度は、ボールが打ち出される横方向の角度である。図12は、ボール122に初速度が与えられる瞬間(インパクトの瞬間)の様子をゲーム空間の上から見た図であり、ボールの右打ち出し角度を示す図である。図12に示すように、ゴルフクラブのヘッド124がボール122にヒットする瞬間、ボール122が当たるヘッド124のフェース(打接面)は、z軸方向(ピン方向)に真っ直ぐに向いていない場合がある。この場合、ボール122が打ち出される方向とz軸方向とは、所定の角度を有し、当該角度が右打ち出し角度θyである。ボールの右打ち出し角度θyは、ボール122の初速度ベクトルをxz平面に射影した場合のxz平面射影ベクトルとz軸とがなす角度である。すなわち、ボールの右打ち出し角度θyは、ピンに真っ直ぐに向かう方向(図12の破線)からのy軸周りの回転角度である。図12に示すように、右打ち出し角度θyが正の場合、ボール122は、ゲーム空間の右側(x軸正方向)に打ち出される。逆に、右打ち出し角度が負の場合、ボール122は、ゲーム空間の左側(x軸負方向)に打ち出される。
【0133】
(各パラメータの算出)
次に、上記各パラメータの算出方法について説明する。まず、スライス量θzの算出方法について説明した後、その他のパラメータ(初速度の大きさ、打ち出し角度θx、及び、右打ち出し角度θy)について説明する。
【0134】
本実施形態では、ボールのスライス量θzは、荷重コントローラ36が検出する荷重値とその時間変化に基づいて定められる。具体的には、スライス量θzは、荷重コントローラ36が検出する荷重値、重心位置、及び、これらの時間変化によって定められる、3つの評価値(第1〜第3評価値)を用いて、算出される。以下、3つの評価値について説明する。
【0135】
第1評価値は、荷重コントローラ36が検出する荷重値が最大となるタイミングと、荷重コントローラ36に加えられる荷重の重心位置、すなわちプレイヤの重心位置の移動速度を示す重心速度が最大となるタイミングとに基づいて、算出される。第1評価値は、インパクトのタイミングに関する評価値であり、プレイヤのスイングが振り遅れか否かを示す値である。まず、荷重コントローラ36が検出する荷重値が最大となるタイミングについて、説明する。
【0136】
プレイヤが荷重コントローラ36の上に乗ってゴルフのスイングをする間、荷重コントローラ36が検出する荷重値(4つの荷重センサ364a〜dの合計荷重値)は変化する。図13A〜Eは、プレイヤが実際にゴルフスイングをする様子を示した図である。図13Aは、プレイヤがバックスイングの状態で静止している様子を示した図である。図13Bは、プレイヤがバックスイングの状態からダウンスイングに移行する瞬間の様子を示した図である。図13Cは、プレイヤがダウンスイングをしている様子を示した図である。図13Dは、プレイヤがボールを打つ瞬間(インパクトの瞬間)を示した図である。図13Eは、プレイヤがフォロースルーをしている様子を示した図である。
【0137】
図13A〜Eに示すように、プレイヤは、ゴルフのスイングをする場合、バックスイングの状態からダウンスイングに移行し、ボールを打った(インパクトした)後、フォロースルーに移行してスイングを終了する。この間、荷重コントローラ36が検出する荷重値は、バックスイングの状態からダウンスイングに移行した直後(図13B)では減少し、ダウンスイング中(図13C)では荷重値は増加し、インパクトの瞬間(図13D)近傍で最大値を示す。そして、インパクト後からフォロースルーの間(図13E)は、荷重値は再び減少し、プレイヤがスイング動作を終了すると、荷重値は一定(すなわち、プレイヤの体重の値)となる。
【0138】
ここで、上述のようにプレイヤがスイングをしている間、荷重値が変化する理由について説明する。プレイヤが荷重コントローラ36上で静止している場合、荷重コントローラ36が検出する荷重値は一定となる。しかしながら、プレイヤが荷重コントローラ36上で腕を振ると、荷重値は変化する。例えば、プレイヤがバックスイングの状態からダウンスイングに移行する際、プレイヤは自身の腕を振り下ろそうとして力を加える。プレイヤの腕を振り下ろす動作に応じて、腕やゴルフクラブ(コントローラ22)に対して、略鉛直下向きの加速度が生じる。この場合、慣性の法則(作用・反作用)により、略鉛直下向きの加速度に応じた略鉛直上向きの力が、プレイヤの体全体(より正確にはプレイヤの腕の付け根)に加わる。従って、プレイヤがバックスイングの状態からダウンスイングに移行した直後、荷重コントローラ36が検出する荷重値は、プレイヤの体重よりも小さい値を示す。
【0139】
一方、プレイヤがダウンスイングをしている間(図13C)、プレイヤの腕の振りの強さ(振りの速さ)に応じて、腕やゴルフクラブ(コントローラ22)に対して、遠心力が加わる。従って、プレイヤがダウンスイングをしている場合であってプレイヤの腕が地面の方向を向いている場合(図13C〜Dに示すスイングをしている場合)、鉛直下向きの力が腕やゴルフクラブ(コントローラ22)に加わる。このため、プレイヤがダウンスイングをしている間、荷重コントローラ36が検出する荷重値は、増加する。そして、プレイヤがボールを打つ瞬間(インパクトの瞬間)近傍で、上記遠心力は最大となるため、荷重コントローラ36が検出する荷重値は、インパクトの瞬間近傍で最大値となる。インパクトの後、プレイヤは力を抜いてフォロースルーとなる。フォロースルーの状態では、腕にかかる遠心力の上下方向の力は、鉛直上向きとなるため、荷重コントローラ36が検出する荷重値は、再び減少する。そして、プレイヤの動きが停止すると、荷重値は一定となる。
【0140】
また、プレイヤの腰の回転(体重の移動)によっても荷重値は変化する。例えば、右打ちのプレイヤがバックスイングの状態で静止している場合、右足により体重をかける傾向にある。プレイヤは、バックスイングの状態からダウンスイングに移行すると、右足で地面(荷重コントローラ36)を軽く蹴るようにして体重を右足の方から左足の方に移動させようとする。そして、プレイヤは、インパクトの瞬間では、左足を踏ん張らせてボールを打つ。このようなプレイヤの腰の回転に応じて、荷重値は、バックスイングの状態からダウンスイングに移行すると増加し、インパクトの瞬間近傍で最大となる。そして、その後、フォロースルーでは荷重値は減少し、一定の値となる。
【0141】
図14は、プレイヤがダウンスイングを開始した直後からの荷重コントローラ36が検出する荷重値の時間変化を示した図である。図14において、縦軸は荷重値の体重比率(荷重コントローラ36が検出する荷重値をプレイヤの体重で除した値)を示し、横軸は時間を示す。なお、図14では、縦軸の下方向ほど体重比率が大きくなっている。図14に示すように、プレイヤがバックスイングで静止している状態(トップの状態)からダウンスイングに移行すると、荷重値が一時的に減少し、その後増加する。そして、インパクトの瞬間近傍では、荷重値が最大となる(t=t0の時点)。その後、フォロースルーに移行すると再び荷重値は減少し、スイングを終了する直前において荷重値は最小となる(t=t1)。
【0142】
上述のように、荷重コントローラ36が検出する荷重値は、プレイヤのスイング動作中に変化し、インパクトの瞬間近傍で最大となる。従って、荷重コントローラ36が検出する荷重値が最大となるタイミングを検出することによって、インパクトの瞬間を予測することができる。
【0143】
次に、重心速度が最大となるタイミングについて説明する。上述のように、重心速度とは、プレイヤの重心位置が変化する速度である。重心位置は、荷重コントローラ36の台36aに加わる荷重の重心位置であり、各荷重センサ364a〜d(図5参照)が検出する荷重値によって定められる。重心位置は、荷重コントローラ36の台36a上の位置に対応した、ST座標系の座標値によって表される。図15Aは、荷重コントローラ36を上方から見た図である。図15Bは、荷重コントローラ36の台36a上の位置に対応した、ST座標系を示す図である。図15Aにおいて、中心O’より上側(荷重センサ364b及びdが内包された側)の領域は、右打ちのプレイヤが左足を乗せる領域である。中心O’より下側(荷重センサ364a及びcが内包された側)の領域は、右打ちのプレイヤが右足を乗せる領域である。図15に示されるように、荷重コントローラ36の台36a上の位置は、ST座標系の位置と対応しており、例えば、台36aの中心O’は、ST座標系の原点Oに対応する。ここで、荷重センサ364aが検出する荷重値をa、荷重センサ364bが検出する荷重値をb、荷重センサ364cが検出する荷重値をc、荷重センサ364dが検出する荷重値をdとした場合、重心のS軸座標値(SG)及びT軸座標値(TG)は、以下の式1及び式2によって算出される。
SG=((c+d)―(a+b))×m ・・・(1)
TG=((b+d)―(a+c))×n ・・・(2)
ここで、m及びnは定数であり、−1≦SG≦1、−1≦TG≦1である。このようにして算出される重心位置は、プレイヤの体重移動に応じて変化する。例えば、右打ちのプレイヤが左足に体重を掛けると、T軸座標値は正の値になり、プレイヤがつま先に体重を掛けると、S軸座標値は正の値となる。なお、上記重心位置の算出式は単なる一例であり、その他の方法によって重心位置を算出してもよい。
【0144】
プレイヤがスイング動作をする場合、腕の振りに応じて体重を移動させるため、上記重心位置は変化する。具体的には、右打ちのプレイヤは、バックスイングからダウンスイング、インパクト、フォロースルーへと状態が変化することに応じて、体重を右足から左足の方に移動させるようにして、スイングをする。この場合において、重心の移動速度は、バックスイングからダウンスイングまでは比較的ゆっくりとしているのに対して、インパクトの瞬間では、速くなる傾向にある。そして、インパクト後のフォロースルーでは、重心の移動速度は、再びゆっくりとなり、スイングの停止とともに重心の移動速度は0になる。これは、プレイヤはインパクトの瞬間に最大の力を加えようとするためと考えられる。プレイヤは、ボールを遠くに飛ばすため、自身の体重をボールに乗せるようにして腰を回転させ、体重を移動させる。従って、重心の移動速度は、インパクトの瞬間近傍で最大になる。
【0145】
図16は、プレイヤがバックスイングを開始した直後からの重心位置の軌跡を示した図である。図16に示すように、プレイヤがバックスイングを開始すると、重心位置は中心付近から右足の方に移動する。次に、プレイヤがスイングのトップの状態からダウンスイングを開始すると、重心位置は右足の方から左足の方に移動する。ダウンスイングを開始してからインパクトまでに重心速度は徐々に増加し、インパクトの瞬間近傍で最大となる。
【0146】
上述のように、理想的なスイングでは、インパクトの瞬間近傍で、荷重コントローラ36が検出する荷重値と重心の移動速度(重心速度)とが最大となる。ここで、理想的なスイングとは、ボールがスライスもフックもせず、真っ直ぐに飛ぶようなスイングである。すなわち、理想的なスイングでは、荷重値が最大となるタイミングと重心速度が最大となるタイミングは、略一致し、これらのタイミングには所定の関係(後述する式3)が成り立つ。そして、理想的なスイングでボールを打つと、ボールは真っ直ぐに飛ぶ。
【0147】
しかしながら、実際のスイングでは、上記2つのタイミングが、理想的なスイングにおけるタイミングとずれる場合がある。例えば、振り遅れの場合、上記2つのタイミングに大きなずれが生じる。具体的には、荷重コントローラ36が検出する荷重値が最大となっている時点では、プレイヤの腕(コントローラ22)は最下点に達し(図13E参照)インパクトの瞬間であると考えられる。しかしながら、この時点において、既に体重移動が十分に行われており、左足の方により重心が移動している場合、重心速度は既に最大値の時点を過ぎて減少している。つまり、このような場合、インパクトの瞬間においてプレイヤの体が前のめりになっており、プレイヤは振り遅れている。実際のゴルフでは、右打ちのプレイヤが振り遅れると、ボールはスライスする。逆に、振るタイミングが早い場合、インパクトの瞬間では、十分な体重移動が行われておらず、重心速度は、増加の途中である。すなわち、体重の移動に比べて振りが早い場合、重心速度が最大値を示している時点では、既にインパクトの瞬間が過ぎている。実際のゴルフでは、右打ちのプレイヤの振りが早い場合、ボールはフックする。
【0148】
以上のように、荷重値が最大となるタイミングと重心速度が最大となるタイミングとに基づいて、ボールがスライスするか否か、フックするか否かを判定することができる。従って、スライス量θzを算出するために用いられる第1評価値は、以下の式3で算出される。
第1評価値=荷重値が最大となる時間−重心速度が最大となる時間−所定値 (3)
なお、式3において、「所定値」は定数であってゴルフのスイングに特有なものである。したがって、テニスのラケットでボールを打つ動作、卓球のラケットでボールを打つ動作や野球のバットでボールを打つ動作についてプレイヤの動作を判定する場合には、例えば競技に応じて上記「所定値」を変化させることによって本発明を適用させることができる。式3で算出される第1評価値は、振り遅れの度合いを示す値であり、理想的なスイングにおけるインパクト時のタイミングからのずれを示す値である。第1評価値が0の場合、インパクトのタイミングは、理想のスイングでのタイミングであることを示す。第1評価値が0の場合、打球はストレートとなる。
【0149】
次に、第2評価値について説明する。第2評価値は、腕の振りの速さと腰の回転速度とのバランスを示す値であり、プレイヤのスイングが振り遅れか否かを示す値である。具体的には、第2評価値は、理想的なスイングにおける重心速度と荷重速度との関係からのずれに基づいて、算出される。ここで、荷重速度とは、荷重コントローラ36が検出する荷重値(合計荷重値)の落ち込み度合い(荷重のかかり度合い)である。図17は、荷重速度を説明するための図である。図17では、図14と同様に縦軸はプレイヤの体重比率を示し、横軸は時間を示す。荷重速度は、所定期間における荷重値の変化量であり、図17に示す破線矢印の傾きである。具体的には、荷重速度は、最大荷重値から所定フレーム時間前の点と当該最大荷重値を示す点とを結んだ直線の傾きである。
【0150】
ここで、理想的なスイング(ボールがストレートになるスイング)では、荷重速度と重心速度には所定の関係があると考えられる。具体的には、理想的なスイングでは、荷重速度と重心速度とは比例関係にあると考えられる。この理由を以下に示す。
【0151】
すなわち、荷重速度は、スイングの速さ(腕を振るスピード)と腰の回転速度に比例する。これは、スイングの速度が大きければ大きいほど、荷重の落ち込み度合いが大きくなり、腰の回転速度が大きければ大きいほど、荷重の落ち込み度合いが大きくなるからである。すなわち、スイングが速ければ速いほど、バックスイングを開始してからインパクトまでの時間が短く、腰の回転速度が大きければ大きいほど、バックスイングを開始してからインパクトまでの時間が短いからである。さらに、スイングが速ければ速いほど、荷重値は大きくなり、腰の回転速度が大きければ大きいほど、荷重値は大きくなる。従って、荷重速度は、スイングの速さ及び腰の回転速度に依存して大きくなる。また、理想的なスイングにおいては、スイングの速さに応じて、体重の移動も速くなる。すなわち、理想的なスイングにおいては、荷重速度と重心速度には所定の関係があると考えられ、具体的には、荷重速度と重心速度は比例関係にあると考えられる。
【0152】
スイングが遅く荷重速度が小さいのに重心の移動速度(重心速度)が大きいと、腕の振りが体重の移動速度に対して遅すぎるため、体だけが打球方向に流れてしまう。このため、インパクトの瞬間では、体の移動に比べて腕が遅れることになる。従って、この場合、振り遅れとなり打球はスライスする。逆に、スイングが速く荷重速度が大きいのに重心速度が小さいと、腕の振りが体重の移動速度に対して速すぎるため、腕だけで振ることになる。このため、インパクトの瞬間では、ボールを引っ張るようにして打球することになる。従って、この場合、打球はフックする。
【0153】
以上のように、荷重速度が重心速度に対して相対的に大きい場合は、打球はフックとなり、荷重速度が重心速度に対して相対的に小さい場合は、打球はスライスとなる。従って、打球がストレートになるためには、荷重速度と重心速度とは一定の関係があると考えられる。
【0154】
図18は、理想的なスイングにおける荷重速度と重心速度との関係を示した図であり、第2評価値を示した図である。図18において、縦軸は重心速度を示し、横軸は荷重速度を示す。図18では、ストレートボールを打つことができるゴルファーが実際にストレートボールを打つようにスイングしたときの荷重速度と重心速度を示す点(P10〜P14)が直線(理想直線)上にプロットされている。また、図18では、スライスボールを打つことができるゴルファーが実際にスライスボールを打つようにスイングしたときの点(P20〜P21)がプロットされている。さらに、図18では、フックボールを打つことができるゴルファーが実際にフックボールを打つようにスイングしたときの点(P30〜P31)もプロットされている。図18に示すように、理想的なスイング(ストレートボールとなるスイング)では、荷重速度の増加量と重心速度の増加量との比は一定となっている。しかしながら、スライスボールとなるスイングにおける荷重速度と重心速度を示す点は、理想直線よりも上側にプロットされる。また、フックボールとなるスイングにおける荷重速度と重心速度を示す点は、理想直線よりも下側にプロットされる。
【0155】
図18に示す点P10〜P14の座標値を以下の表に示す。
【表1】

なお、上記表1における荷重速度は、1フレーム時間(具体的には、1/60秒)当たりのプレイヤの体重比率(荷重コントローラ36が検出した荷重値をプレイヤの体重で除した値)の変化量を示す。従って、例えば、荷重速度が0.014の場合では、1秒間における体重比率の増加量は0.014×60=0.84となる(すなわち、1秒間における荷重値の増加量は、プレイヤの体重×0.84(kg)である)。また、上記表1における重心速度は、1フレーム時間当たりのST座標系における重心位置の移動量を示す。すなわち、上記表1における重心速度は、ある時点でのST座標系での点とその1フレーム時間後のST座標系での点との距離を示す。
【0156】
図18及び上記表1に示すように、理想的なスイングでは上記理想直線の傾き(重心速度の増加量を荷重速度の増加量で除した値)は、略2となる。例えば、点P10と点P14とを結ぶ直線の傾きは、略1.98であり、点P10と点P13とを結ぶ直線の傾きは、略2.09である。また、理想直線の傾きを2とした場合の切片(重心速度を示す座標軸と理想直線との交点)は、略0.07となる。例えば、点P10を通る傾きが2の直線の切片は、0.071であり、点P12を通る傾きが2の直線の切片は、0.068である。従って、理想的なスイング(ボールがストレートボールとなるスイング)における理想直線の傾きは略2であり、切片は略0.07となる。なお、理想直線の傾きは、2である必要はなく、所定の範囲(例えば、1.7〜2.3の範囲)であってもよい。また、理想直線の切片は、0.07である必要はなく、所定の範囲(例えば、0.058〜0.083程度)であってもよい。例えば、点P11と点P12とを結ぶ直線の傾きは、略1.67であり、点P11と点P13とを結ぶ直線の傾きは、略2.31である。傾きが1.7である場合において、上記各点を通る直線の切片を算出すると、例えば、点P10を通る直線の切片は略0.075となり、点P14を通る直線の切片は、略0.09となる。そして、傾きが1.7である場合において、各点を通る直線の切片を平均すると、略0.083となる。また、傾きが2.3である場合において、上記各点を通る直線の切片を算出すると、例えば、点P10を通る傾きが2.3の直線の切片は略0.067となり、点P14を通る傾きが2.3の直線の切片は、略0.051となる。そして、傾きが2.3である場合において、各点を通る直線の切片を平均すると、略0.058となる。従って、理想直線は、傾きが1.7〜2.3程度の範囲で、切片が0.058〜0.083程度の範囲が好ましい(この場合、直線の傾きが大きいほど切片の値は小さくなる)。以上のように、理想的なスイングを行ったときの実測データに基づいて、理想的なスイングを示す様々な特徴(直線の傾きや切片の値、あるいは、現実的な荷重速度や重心速度の範囲等)を予め算出することができる。
【0157】
また、図18では、理想直線から離れた位置に点Pがプロットされている。点Pは、重心速度が荷重速度に対して遅い(荷重速度が重心速度に対して速い)スイングを示した点である。図18に示すように、スライス量θzを算出するために用いられる第2評価値は、点Pと理想直線との距離として算出される。プレイヤが行ったスイングを示す点Pと理想直線との距離が長ければ長いほど、当該スイングは理想のスイングからはかけ離れており、ボールはフック又はスライスする。また、プレイヤが行ったスイングを示す点が、理想直線よりも上側に位置する場合、荷重速度が重心速度に対して相対的に遅いため、振り遅れとなり、打球はスライスする。逆に、プレイヤが行ったスイングを示す点が、理想直線よりも下側に位置する場合、荷重速度が重心速度に対して相対的に速いため、打球はフックする。
【0158】
以上のようにして、重心速度と荷重速度を算出し、理想直線との距離を求めることによって、第2評価値を算出する。上記理想直線と点Pとの距離を第2評価値とすることで、荷重速度と重心速度の双方をバランスして評価することができる。なお、第2評価値は、理想直線と点Pとの距離に限らず、理想直線と点Pの縦軸又は横軸方向のずれ(点Pを通り縦軸又は横軸に平行な直線と理想直線との交点と、点Pとの長さ)によって定められてもよい。なお、第2評価値は、後述するように、第1評価値の値に応じて補正される。
【0159】
次に、第3評価値について説明する。第3評価値は、重心位置の軌跡によって定められる値であり、プレイヤのスイングの仕方(スイングの軌道)を示す値である。具体的には、第3評価値は、重心位置の軌跡を示す曲線と所定の直線とによって囲まれる面積の値である。図19は、重心位置の軌跡を示した図であり、第3評価値を示した図である。図19において、図16と同様、プレイヤがバックスイングを開始した直後からの重心位置の軌跡が示されている。図19に示すように、第3評価値は、ダウンスイングの開始時点から所定時間前の重心位置と現在の重心位置とを結んだ直線と、重心位置の軌跡とによって囲まれる面積TrackSである。当該面積TrackSが大きい場合、ボールはスライスする傾向にある。この理由を次に示す。
【0160】
実際のゴルフにおいて、プレイヤが脇を開いたままスイングすると、ボールはスライスする。具体的にはこの場合、プレイヤのスイングの軌道は、いわゆるアウトサイドインとなり、打球はスライスする。プレイヤが、脇が開いたままスイングする場合、ゴルフクラブが体から離れた位置を通ることになるため、体重はつま先の方向にかかる。従って、重心位置の軌道は、より膨らんだ形(S軸正方向に膨らんだ形)となるため、上記面積TrackSは大きくなる。逆に、実際のゴルフにおいて、プレイヤが脇を閉じたままスイングすると、ボールはフックする。具体的にはこの場合、プレイヤのスイングの軌道は、いわゆるインサイドアウトとなり、打球はフックする。プレイヤが、脇を閉じたままスイングすると、ゴルフクラブが体から近い位置を通ることになるため、体重はかかとの方向にかかる。従って、重心位置の軌道は、S軸負方向に曲がった形状となるため、上記面積TrackSは小さくなる。なお、図19に示す直線の右側を正の値、左側を負の値として上記面積は算出される。従って、重心位置の軌道がS軸負方向に曲がった形状となると、上記面積TrackSは負の値となる場合がある。以上のように、重心位置の軌跡と所定の直線によって囲まれる面積TrackSに応じて、打球がスライスするかフックするかを判定することができる。
【0161】
以上のようにして算出される第1〜第3評価値に基づいて、ボールのスライス量θzは算出される。具体的には、ボールのスライス量θzは、以下の式4を用いて算出される。
スライス量θz=第1評価値+第2評価値+K3×第3評価値 (4)
ここで、K3は定数である。なお、詳細は後述するが、上記式4において、第2評価値は第1評価値の値に応じて補正される場合がある。従って、スライス量θzは、当該補正後の第2評価値を用いて算出される場合がある。
【0162】
次に、ボールの飛距離や軌道に関連するその他のパラメータ(初速度の大きさ、打ち出し角度θx、右打ち出し角度θy)の算出方法について、説明する。ボールの初速度の大きさは、ゴルフクラブの種類(番手)とスイングパワー(ヘッドスピード)に基づいて算出される。スイングパワーは、コントローラ22が検出する加速度の大きさ、上記荷重速度の大きさ、及び、上記重心速度の大きさに基づいて算出される。ボールの初速度の大きさとスイングパワーとの関係は、予めテーブルによって定められている。当該テーブルは、ゴルフクラブの番手に応じて、予め用意される。従って、スイングパワーが算出されると、上記テーブルを参照することによって、初速度の大きさが求められる。
【0163】
ボールの打ち出し角度θxは、プレイヤオブジェクト120が使用しているゴルフクラブの種類(番手)と、スイングパワー(ヘッドスピード)に基づいて算出される。ボールの打ち出し角度θxとスイングパワーとの関係は、予めテーブルによって定められている。当該テーブルは、ゴルフクラブの番手に応じて、予め用意される。
【0164】
また、ボールの右打ち出し角度θyは、上記重心位置の軌跡に基づいて算出される。図20は、右打ち出し角度θyの算出方法を示した図である。図20では、プレイヤがスイングを開始した時点からの重心位置の軌跡が示されている。具体的には、右打ち出し角度θyは、インパクトの所定時間前における重心位置とインパクトの瞬間における重心位置とを結んだ直線L1が、打球方向となす角度である。すなわち、右打ち出し角度θyは、上記直線L1と、インパクトの所定時間前における重心位置を通るT軸と平行な直線L2とがなす角度である。
【0165】
[ゲーム処理の詳細]
次に、図21〜図23を参照してゲーム装置12において実行されるゲーム処理の詳細について説明する。まず、ゲーム装置12における処理において用いられる主なデータについて図21を用いて説明する。図21は、ゲーム装置12のメインメモリ(外部メインメモリ46又は内部メインメモリ42e)に記憶される主なデータを示す図である。
【0166】
図21に示されるように、ゲーム装置12のメインメモリのデータ記憶領域500には、荷重値データ502、重心位置データ504、荷重速度データ506、重心速度データ508、加速度データ510、テーブルデータ512、第1評価値データ514、第2評価値データ516、第3評価値データ518、スイングパワーデータ520、スライス量データ522、及び、右打ち出し角度データ524が記憶される。なお、メインメモリには、図21に示すデータの他、ゲームに登場する各種オブジェクト(プレイヤオブジェクト120やボール122)の画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。また、メインメモリのプログラム領域には、ゲーム処理を実行するゲームプログラムが記憶される。また、コントローラ22及び荷重コントローラ36からゲーム装置12に、例えば1/200秒毎に、操作データ(入力手段26に対する入力データ、加速度センサ74が検出する加速度を示すデータや荷重センサ364が検出する荷重を示すデータ)が送信されるため、ゲーム装置12(CPU40)は、メインメモリに設けられたバッファ領域にこれらの操作データを一時的に格納する。
【0167】
荷重値データ502は、荷重コントローラ36が検出する荷重値を示すデータの集合である。すなわち、荷重コントローラ36の各荷重センサ364a〜364dが検出する荷重の合計値を示すデータの集合である。具体的には、荷重値データ502は、配列であり、配列の各要素には上記合計荷重値を示すデータが時系列に格納される。
【0168】
重心位置データ504は、各荷重センサ364a〜364dの荷重値から上記式1及び2によって算出される重心位置を示すデータの集合である。具体的には、重心位置データ504は、配列であり、配列の各要素には重心位置を示すデータが時系列に格納される。
【0169】
荷重速度データ506は、上記荷重速度を示すデータである。荷重速度は、荷重値データ502に基づいて、算出される。また、重心速度データ508は、上記重心速度を示すデータの集合である。具体的には、重心速度データ508は、配列であり、配列の各要素には重心速度を示すデータが時系列に格納される。重心速度は、重心位置データ504に基づいて算出される。
【0170】
加速度データ510は、コントローラ22の加速度センサ74が検出した加速度の大きさを示すデータの集合である。具体的には、加速度データ510は、配列であり、配列の各要素には加速度の大きさを示すデータが時系列に格納される。
【0171】
テーブルデータ512は、スイングパワー(ヘッドスピード)と、上記初速度の大きさと、上記打ち出し角度θxとの関係を示したテーブルを示すデータの集合である。テーブルデータ512は、ゴルフクラブの番手毎に予め用意されたデータであり、光ディスク18に予め記憶されている。例えば、ドライバ用のテーブルには、スイングパワー(ヘッドスピード)に応じた初速度の大きさや打ち出し角度θxが記憶されている。
【0172】
第1評価値データは、上記第1評価値を示すデータである。また、第2評価値データは、上記第2評価値を示すデータであり、第3評価値データは、上記第3評価値を示すデータである。
【0173】
スイングパワーデータ520は、スイングパワーを示すデータである。スイングパワーは、上述したように、コントローラ22が検出する加速度の大きさ、上記荷重速度の大きさ、及び、上記重心速度の大きさに基づいて算出される値である。スイングパワーは、例えば、0〜1.0の範囲の値を示す。
【0174】
スライス量データ522は、上記スライス量θzを示すデータである。また、右打ち出し角度データ524は、上記右打ち出し角度θyを示すデータである。
【0175】
次に、図22を参照して、ゲーム装置12によって実行されるゲーム処理について説明する。図22は、ゲーム装置12において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置12の電源が投入されると、ゲーム装置12のCPU40は、ROM/RTC48に記憶されている起動プログラムを実行し、これによって外部メインメモリ46等の各ユニットが初期化される。次に、光ディスク18に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU40によって当該ゲームプログラムの実行が開始される。そして、CPU40は、初期設定を行う。初期設定では、CPU40は、ゲーム空間にプレイヤオブジェクト120やボール122等を配置したり、プレイヤオブジェクト120が所持するゴルフクラブの種類(番手)等を設定したりする。図22に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図22では、本発明に直接関連しないゲーム処理については記載を省略する。また、図22に示すステップS1〜ステップS11の処理ループは、1フレーム(例えば1/60秒。フレーム時間という)毎に繰り返し実行される。
【0176】
まず、ステップS1において、CPU40は、コントローラ22と荷重コントローラ36に対するプレイヤの入力値を算出する。具体的には、CPU40は、メインメモリのバッファ領域を参照してコントローラ22から送信された最新の加速度(ベクトル)を示すデータや入力手段26に対する操作を示すデータを取得する。そして、CPU40は、取得した最新の加速度の大きさを算出し、加速度データ510としてメインメモリに記憶する。同様に、CPU40は、メインメモリのバッファ領域を参照して荷重コントローラ36から送信された各荷重センサ364の荷重値を示すデータを取得する。そして、CPU40は、取得した各荷重センサ364の荷重値を合計して、当該合計荷重値を荷重値データ502としてメインメモリに記憶する。また、CPU40は、取得した各荷重センサ364の荷重値を上記式1及び式2に代入して、重心位置を算出し、重心位置データ504としてメインメモリに記憶する。さらに、CPU40は、重心位置データ504を参照して、算出した重心位置と1フレーム時間前の重心位置との距離を算出する。CPU40は、算出した距離を1フレーム時間で割ることにより、現時点での重心速度を算出し、重心速度データ508としてメインメモリに記憶する。次に、CPU40は、ステップS2の処理を実行する。
【0177】
ステップS2において、CPU40は、プレイヤがスイングを開始しているか否かを判定する。ここでの処理は、現在の状態が、既にスイングが開始されている状態か、又は、スイングが開始された直後の状態かを判定する処理である。スイングが開始されている状態とは、プレイヤがダウンスイングを開始してスイングを終了するまでの間の状態である(図13B〜スイング終了までの間の状態)。また、スイングが開始された直後の状態とは、ダウンスイングが開始された直後の状態である(図13Bの瞬間の状態)。ステップS2では、2つの判定が行われる。具体的には、CPU40は、現在スイングが行われている状態であるか否かを判定し(第1の判定)、スイングが行われている状態でない場合、スイングを開始したか否かを判定する(第2の判定)。ステップS2では、第1の判定結果が肯定の場合は、第2の判定を行わず、ステップS2の判定結果は肯定となる。第1の判定結果が否定の場合は、CPU40は、第2の判定を行い、第2の判定が肯定の場合、ステップS2の判定結果は肯定となる。第1の判定結果が否定で、かつ、第2の判定結果も否定の場合、ステップS2の判定結果は否定となる。
【0178】
より具体的には、CPU40は、第1の判定において、メインメモリを参照して、現在の状態が、スイングが行われている状態か否かを判定する。例えば、CPU40は、メインメモリに記憶されたスイング状態フラグ(当該フラグはスイングが開始されている状態を示す)が1を示す場合、現在の状態が、スイングが行われている状態であると判定する(第1の判定結果が肯定)。第1の判定結果が肯定の場合、CPU40は、次にステップS3の処理を実行する。一方、上記スイング状態フラグが0を示す場合(第1の判定結果が否定の場合)、CPU40は、第2の判定を行う。第2の判定は、プレイヤがスイングを開始したか否かの判定である。具体的には、CPU40は、第2の判定において、ステップS1で取得した最新の加速度の大きさが所定の閾値を超えているか否かを判定し、所定の閾値を超えている場合、プレイヤがスイングを開始したと判定する。ステップS1で取得した最新の加速度の大きさが所定の閾値以下の場合、CPU40は、プレイヤがスイングを開始していないと判定する。第2の判定結果が肯定の場合、CPU40は、上記スイング状態フラグを1に設定するとともに、スイングを開始してからの経過時間を示すスイング開始経過時間を0に設定して、メインメモリにそれぞれ記憶する。そして、CPU40は、次に、ステップS3の処理を実行する。一方、第2の判定結果が否定の場合、ステップS2の判定結果は否定となり、CPU40は、次にステップS11の処理を実行する。
【0179】
すなわち、ステップS2においては、1回のストローク(プレイヤオブジェクト120がボール122を1回打つ動作を1回のストロークとする)において、プレイヤがコントローラ22を所定の速さ(強さ)で振った場合は、スイングが開始されたと判定される。スイングが開始されたと判定されると、以降のループ処理(S1〜S12の処理)においても、ステップS2の判定結果は、当該ストロークが終了して次のストロークに移行するまで常に肯定となる。一方、プレイヤがコントローラ22を所定の速さ(強さ)で振っていない場合は、当該ストロークにおいて、未だスイングが開始されていないとして、以降のループ処理においてもスイングが開始されたか否かの判定が行われる。
【0180】
ステップS3において、CPU40は、プレイヤオブジェクト120がボール122をショットしたか否かを判定する。ショットしたか否かの判定は、スイングが開始されてから所定の時間が経過したか否かによって行われる。具体的には、CPU40は、メインメモリに記憶された上記スイング開始経過時間を参照して、スイングが開始された時点から所定の時間(ダウンスイング開始からインパクトまでに要するフレーム時間)が経過しているか否かを判定する。スイングが開始された時点から所定の時間が経過している場合、CPU40は、プレイヤオブジェクト120がボール122をショットしたと判定する。スイングが開始された時点から所定の時間が経過していない場合、CPU40は、上記スイング開始経過時間に1を加算して、メインメモリに記憶する。判定結果が肯定の場合、CPU40は、次にステップS4の処理を実行する。判定結果が否定の場合、CPU40は、次にステップS11の処理を実行する。
【0181】
なお、ステップS3において、上記所定の時間は、ステップS2での上記第2の判定(スイングを開始したか否かの判定)において判定結果が肯定とされたときの加速度の大きさに応じて定められる。具体的には、プレイヤがスイングを開始する時点で、コントローラ22をより強く振ると、その時点での加速度の大きさは大きくなり、上記所定の時間はより小さく設定される。すなわち、プレイヤのコントローラ22をより強く振ると、スイングを開始してからボール122をショットするまでの時間がより短く設定される。このスイングを開始してからボール122をショットするまでの時間の長さに応じて、画面に表示されるプレイヤキャラクタ120の動き(プレイヤキャラクタ120のアニメーション)が定められる。すなわち、この時間が短ければ短いほど、画面に表示されるプレイヤキャラクタ120のスイング動作が速くなる。
【0182】
ステップS4において、CPU40は、ショットカウンタが6未満か否かを判定する。ここで、ショットカウンタとは、プレイヤオブジェクト120がボール122をショット(インパクト)してからの経過時間(フレーム時間)である。当該ショットカウンタは、プレイヤオブジェクト120がボール122をショットした時点で初期的に0に設定されてメインメモリに格納される。判定結果が肯定の場合、CPU40は、次にステップS5の処理を実行する。一方、判定結果が否定の場合、CPU40は、次にステップS9の処理を実行する。すなわち、後述するステップS5〜S8の処理は、インパクトの瞬間から6フレーム時間までの間実行される。
【0183】
ステップS5において、CPU40は、現時点での入力値を解析する。ここでは、CPU40は、コントローラ22が検出した加速度に基づくパワー、荷重コントローラ36が検出した荷重値の最大値、重心速度、及び、重心速度の最大値を算出する。具体的には、CPU40は、メインメモリの加速度データ510を参照して、スイング(ダウンスイング)開始から所定フレーム時間(例えば、25フレーム時間)に検出された加速度の大きさ(絶対値)を積算することにより、コントローラ22の加速度に基づくパワーを算出する。より具体的には、CPU40は、スイング開始から上記所定フレーム時間後までの各時点における加速度の大きさから所定の閾値(例えば、2.5)を引いた値をそれぞれ加算することにより、加速度に基づくパワーを算出する。これにより、プレイヤがスイングを開始してからコントローラ22に加えられた力をスイングパワーに反映することができる。
【0184】
また、CPU40は、メインメモリの荷重値データ502を参照して、スイング開始から現時点までの最大荷重値及びそのフレーム時間を算出する。具体的には、CPU40は、荷重値データ502を参照して、荷重値データ502に含まれる各荷重値を探索することにより、最大荷重値とそのフレーム時間(配列のインデックス)を取得する。さらに、CPU40は、重心速度データ508に含まれる各重心速度を探索することにより、スイング開始から現時点までの最大重心速度及びそのフレーム時間を取得する。そして、CPU40は、各値(加速度に基づくパワー、最大荷重値とそのフレーム時間、及び、最大重心速度とそのフレーム時間)をメインメモリに記憶する。
【0185】
ステップS6において、CPU40は、ショットカウンタが0か否かを判定する。ここでの処理は、現時点がインパクトの瞬間か否かを判定する処理である。具体的には、CPU40は、メインメモリを参照して上記ショットカウントが0と等しいか否かを判定する。判定結果が肯定の場合、CPU40は、次にステップS7の処理を実行する。一方、判定結果が否定の場合、CPU40は、次にステップS8の処理を実行する。
【0186】
ステップS7において、CPU40は、右打ち出し角度θyを算出する。具体的には、CPU40は、重心位置データ504を参照して、現時点(インパクトの時点)より所定フレーム時間前(例えば、30フレーム時間前)の重心位置から現時点での重心位置に向かう直線(図20のL1)を算出する。また、CPU40は、現時点より所定フレーム時間前の重心位置を通ってT軸と平行な直線(L2)を算出する。そして、CPU40は、算出した2つの直線がなす角度(θy)を算出し、右打ち出し角度データ524としてメインメモリに記憶する。なお、右打ち出し角度θyが所定の範囲(例えば、−4.0〜4.0)にない場合、CPU40は、算出した右打ち出し角度θyを、上記所定の範囲の上限値(4.0)又は下限値(−4.0)に設定する。これにより、CPU40は、現実的でない右打ち出し角度θyを排除することができる。次に、CPU40は、ステップS8の処理を実行する。
【0187】
ステップS8において、CPU40は、各パラメータの算出処理を実行する。ステップS8では、CPU40は、上記スイングパワー、打ち出し角度θx、及び、スライス量θzを算出する。ステップS8における処理の詳細を、図23を用いて説明する。図23は、各パラメータの算出処理(S8)の詳細を示すフローチャートである。
【0188】
まず、ステップS21において、CPU40は、上記荷重速度及び荷重速度に基づくパワーを算出する。荷重速度に基づくパワーとは、上記荷重速度から算出される値であり、後述するスイングパワーを構成する要素の1つである。具体的には、CPU40は、まず、メインメモリを参照して、ステップS5で取得した最大荷重のフレーム時間から所定フレーム時間前(例えば、5フレーム時間前)の荷重値を取得する。次に、CPU40は、ステップS5で取得した最大荷重値から上記所定フレーム時間前の荷重値を引いた値を、当該所定フレーム時間で割ることにより荷重速度を算出する。そして、CPU40は、算出した荷重速度を荷重速度データ506として、メインメモリに記憶する。また、CPU40は、算出した荷重速度に所定の係数を掛けた値を、荷重速度に基づくパワーとして算出し、メインメモリに記憶する。次に、CPU40は、ステップS22の処理を実行する。
【0189】
ステップS22において、CPU40は、上記重心速度及び重心速度に基づくパワーを算出する。重心速度に基づくパワーとは、上記重心速度から算出される値であり、後述するスイングパワーを構成する要素の1つである。具体的には、CPU40は、メインメモリの重心速度データ508を参照して、現時点での重心速度を取得する。また、CPU40は、取得した重心速度に所定の係数を掛けた値を、重心速度に基づくパワーとして算出し、メインメモリに記憶する。次に、CPU40は、ステップS23の処理を実行する。
【0190】
ステップS23において、CPU40は、上記第1評価値を算出する。上述したように、第1評価値は、荷重値が最大となる時間と重心速度が最大となる時間とに基づいて算出される値であり、上記式3を用いて算出される。具体的には、CPU40は、ステップS5で取得した最大荷重のフレーム時間から、ステップS5で取得した最大重心速度のフレーム時間及び所定の値(例えば、2)を引いた値を、上記第1評価値として算出する。そして、CPU40は、算出した第1評価値を第1評価値データ514としてメインメモリに記憶する。次に、CPU40は、ステップS24の処理を実行する。
【0191】
ステップS24において、CPU40は、上記第2評価値を算出する。具体的には、CPU40は、荷重速度を第1軸とし重心速度を第2軸とする座標系において、予めメインメモリに記憶された理想直線(図18に示す理想直線)から、ステップS21で算出した荷重速度とステップS22で算出した重心速度とを各軸の座標値とする点までの距離を算出する。そして、CPU40は、当該点が理想直線よりも上側に位置する場合(スライスの場合)、算出した距離を第2評価値データ516としてメインメモリに記憶する。CPU40は、当該点が理想直線よりも下側に位置する場合(フックの場合)、算出した距離に−1を乗じた値を第2評価値データ516としてメインメモリに記憶する。次に、CPU40は、ステップS25の処理を実行する。
【0192】
ステップS25において、CPU40は、上記第3評価値(重心位置の軌跡を示す曲線と所定の直線によって囲まれる面積TrackS)を算出する。具体的には、CPU40は、重心位置データ504を参照して、ダウンスイングの開始から所定フレーム時間前(例えば、30フレーム時間前)における重心位置と、現時点における重心位置とを結ぶ直線を算出する。そして、CPU40は、算出した直線と重心位置データ504に含まれる各重心位置の軌跡とによって囲まれる面積TrackSを算出する。CPU40は、算出した面積TrackSを、第3評価値データ518としてメインメモリに記憶する。図19に示すように、当該面積TrackSは、上記直線より右側(S軸正方向)の面積を正、上記直線より左側(S軸負方向)の面積を負の値として、算出される。従って、図19に示すような重心位置の軌跡の場合、上記面積TrackSは正の値となるが、重心位置の軌跡が左側(S軸負方向)に膨らんだ形状となっている場合は、上記面積TrackSは負の値となる。次に、CPU40は、ステップS26の処理を実行する。
【0193】
ステップS26において、CPU40は、スイングパワーを算出する。CPU40は、コントローラ22が検出した加速度、上記荷重速度、及び、上記重心速度に基づいて、スイングパワーを算出する。具体的には、CPU40は、ステップS5で算出したコントローラ22の加速度に基づくパワーと、ステップS21で算出した荷重速度に基づくパワーと、ステップS22で算出した重心速度に基づくパワーとの和を算出し、スイングパワーデータ520としてメインメモリに記憶する。次に、CPU40は、ステップS27の処理を実行する。
【0194】
ステップS27において、CPU40は、上記打ち出し角度θxを算出する。具体的には、CPU40は、メインメモリのテーブルデータ512を参照して、ステップS26で算出したスイングパワーに基づいて打ち出し角度θxを算出する。上述したように、テーブルデータ512には、スイングパワーと打ち出し角度θxとの関係がテーブルで記憶されているため、CPU40は、当該テーブルを参照することによって、ステップS26で算出したスイングパワーから打ち出し角度θxを算出することができる。次に、CPU40は、ステップS28の処理を実行する。
【0195】
ステップS28において、CPU40は、上記スライス量θzを算出する。具体的には、CPU40は、ステップS23で算出した第1評価値、ステップS24で算出した第2評価値、及び、ステップS25で算出した第3評価値を上記式4に代入することにより、スライス量θzを算出する。CPU40は、算出したスライス量θzをスライス量データ522として、メインメモリに記憶する。
【0196】
なお、ステップS28において、CPU40は、上記第2評価値の値を第1評価値の値に応じて補正する。例えば、CPU40は、以下の式5を用いて第2評価値を補正する。
補正後の第2評価値=(1−第1評価値/5)×補正前の第2評価値 (5)
補正前の第2評価値とは、ステップS24で算出した第2評価値である。上記式5に示すように、例えば、第1評価値が0の場合、補正後の第2評価値と補正前の第2評価値は等しい。しかしながら、例えば、第1評価値が1の場合、補正後の第2評価値は補正前の第2評価値の0.8倍となる。これは、第1評価値の絶対値が大きい場合、すなわち、インパクトのタイミングが理想と大きくずれている場合、スライス量θzに与える第2評価値の影響を小さくするための処理である。例えば、第1評価値が正の値で大きい場合、荷重値が最大となる時間が、重心速度が最大となる時間よりも遅いため、プレイヤのスイングは、理想のスイングよりも大きく振り遅れている。このようにプレイヤのスイングが大きく振り遅れている場合は、第2評価値の値に拘わらず、スライスすると考えられる。すなわち、インパクトのタイミングが大きくずれている場合は、ボールはストレートになる可能性は低い。従って、第1評価値の大きさに応じて、第2評価値を補正する。これにより、インパクトのタイミングが合っている場合(第1評価値が0に近い場合)に、第2評価値(すなわち、理想的なスイングにおけるスイングの速さと腰の回転速度との関係からのずれ)を考慮することができる。逆に、インパクトのタイミングが合っていない場合(第1評価値の絶対値が大きい場合)、第2評価値を考慮せず、スイングの判定を行うことができる。次に、CPU40は、各パラメータの算出処理を終了する。
【0197】
図22に戻り、ステップS9において、CPU40は、弾道シミュレーションの処理を実行する。具体的には、CPU40は、ステップS8で算出した各パラメータを用いて、ボール122に初速度(初速度の大きさと方向)及び回転(上記スライス量やバックスピン量)を加える。そして、CPU40は、例えば、ルンゲ=クッタ法を用いて、ボール122の弾道に関する運動方程式を解くことにより、ボール122のゲーム空間における位置を算出する。なお、バックスピン量(ボール122の回転量)は、上記スイングパワー及びゴルフクラブの種類(番手)に応じて、定められる。次に、CPU40は、ステップS10の処理を実行する。
【0198】
ステップS10において、CPU40は、ショットカウンタに1を加える。具体的には、CPU40は、メインメモリのショットカウンタに1を加えて、再びメインメモリに記憶する。次に、CPU40は、ステップS11の処理を実行する。
【0199】
ステップS11において、CPU40は、描画処理を実行する。具体的には、CPU40は、上記スイング開始経過時間に応じてプレイヤオブジェクト120がスイングする様子を表示したり、ステップS9で算出したボール122のゲーム空間における位置にボール122を配置して、画面に表示したりする。また、CPU40は、背景の画像等を画面に表示する。これにより、ボール122がゲーム空間を飛んでいく様子やプレイヤオブジェクト120がスイングする様子(例えば、図13Bや図13Cに示すプレイヤオブジェクト120の画像)が画面に表示される。次に、CPU40は、ステップS12の処理を実行する。
【0200】
次に、ステップS12において、CPU40は、ゲーム終了か否かを判定し、肯定の場合、ゲーム処理を終了し、否定の場合、ステップS1に戻って、ゲーム処理を繰り返す。例えば、CPU40は、プレイヤによってゲーム処理の終了を示すコントローラ22のボタン等が押された場合、ゲーム処理を終了する。以上で、本実施形態に係るゲーム処理は終了する。
【0201】
上記フローでは、インパクトの瞬間から6フレーム時間までの間、上記ステップS5〜S8までの処理を実行し、各パラメータを算出した。このように、インパクトの瞬間のみならず、インパクトから所定フレーム時間の間各パラメータを算出することにより、プレイヤのスイングをより正確にゲーム処理に反映することができる。すなわち、最大荷重を検出する場合、直前のフレーム時間における荷重値よりも現在の荷重値が小さくなったことを検出することによって、最大荷重を認識することができるため、現時点では最大荷重値であるか否かを判定することはできない。プレイヤのスイングの速さは最大荷重値に左右されるため、プレイヤのスイングの速さを正確に求めるためには、最大荷重値を正確に求める必要がある。従って、インパクトの瞬間のみではなく、インパクト後の所定時間、各パラメータを算出することにより、プレイヤのスイングをより正確にボールの弾道に反映することができる。なお、他の実施形態では、インパクトの瞬間のみ各パラメータを算出し、算出したパラメータでその後の弾道シミュレーションを行ってもよい。
【0202】
また、上記フローでは、インパクトの瞬間にのみステップS7において右打ち出し角度θyを算出した。これは、インパクト直後の数フレーム時間においては、ボールの弾道はほぼ右打ち出し角度θyによって定められるからである。従って、インパクト直後の数フレーム時間において右打ち出し角度θyが変化すると、ボールが震えるように動作するため、違和感が生じる。従って、このようなボールの弾道を防止するため、右打ち出し角度θyは、インパクトの瞬間にのみ算出される。なお、他の実施形態では、インパクト直後の数フレーム時間において、上記右打ち出し角度θyを算出してもよい。この場合、各フレーム時間で算出した右打ち出し角度θyを補完することによって、ボールの弾道を違和感のないようにすることが好ましい。
【0203】
以上のように、本実施形態では、荷重値が最大となるタイミングと重心速度が最大となるタイミングとに基づいて、理想的なスイングにおけるインパクト時のタイミングからのずれを示す第1評価値を算出する。また、所定時間における荷重のかかり度合いを示す荷重速度と、重心位置の移動速度を示す重心速度とに基づいて、理想的なスイングにおける荷重速度と重心速度との関係からのずれを示す第2評価値を算出する。さらに、本実施形態では、重心位置の軌跡によって囲まれる面積を示す第3評価値を算出する。そして、算出した第1〜第3評価値に基づいて、ボール122のスライス量θzを算出することができる。これにより、ショットされた後のボール122がスライスするか否か、又は、フックするか否かを判定することができる。
【0204】
なお、本実施形態では、第1〜第3評価値を用いてスライス量θzを算出したが、他の実施形態では、これらの評価値のうち何れかのみを用いてスライス量を算出してもよい。例えば、第1評価値又は第2評価値のみに基づいて、ボール122がスライスするか否か、又は、フックするか否かを判定してもよい。また、第3評価値のみに基づいて、ボール122がスライスするか否か等を判定してもよい。
【0205】
また、本実施形態ではゴルフ練習用のゲームについて説明したが、プレイヤが仮想のゴルフコースを楽しむゴルフゲームであってもよい。また、他の実施形態では、例えば、テニスや野球、卓球等の他のゲームにも本発明が適用されてもよい。
【0206】
また、本実施形態では、荷重値が最大となるタイミングと重心速度が最大となるタイミングとに基づいて、プレイヤの動作を判定した(プレイヤのスイングに応じてボールがスライスするか否か等を判定した)。他の実施形態では、荷重値が所定の条件を満たすタイミングと、重心速度が所定の条件を満たすタイミングとに基づいて、プレイヤの動作を判定してもよい。例えば、テニスのサーブにおいては、プレイヤはラケットを振り上げてから振り下ろす動作を行い、テニスボールを打つ。プレイヤがラケットを振り上げる場合には、プレイヤは体重を後方に移動させ、プレイヤがラケットを振り下ろす場合には、プレイヤは体重を前方に移動させると考えられる。従って、その間重心速度は変化し、プレイヤがテニスボールを打つタイミングにおいては、重心速度は所定の条件を満たす(例えば、重心速度が最大或いは極大になったり、最大から所定の値だけ小さくなったり、極小となったりする)。一方、プレイヤがラケットを振り上げてから振り下ろす際には、荷重コントローラ36が検出する荷重値は、プレイヤの体重よりも小さくなると考えられる。すなわち、テニスボールを打つタイミングにおいては、荷重値は最大とはならず、荷重値は所定の条件を満たす(例えば、荷重値が最小値となったり、あるいは最大値から所定の値だけ小さい値になったりする)。テニスのサーブにおいては、ボールを打つタイミングにおける体重移動によって、ボールがネットに引っかかったり(振りが早い)、ボールがオーバーしたり(振り遅れ)する場合がある。従って、荷重値が所定の条件を満たすタイミングと重心速度が所定の条件を満たすタイミングとには所定の関係があると考えられるため、これらのタイミングに基づいて、プレイヤの動作を判定してもよい。
【0207】
また、プレイヤが体重移動を伴って、腕を振ったり、腰を回転させたり、或いは、頭部を振ったりするような動作を判定することにも、本発明は適用可能である。すなわち、道具を用いてボール等のオブジェクトを打つ動作に限らず、例えば、野球の投球動作やバレーボールにおけるサーブやレシーブ動作に対する判定が行われてもよい。つまり、プレイヤが腕等を振ることによって荷重コントローラ36が検出する荷重値が変化し、かつ、プレイヤの体重移動によって重心位置が変化するような動作を、上述した方法により判定することができる。
【0208】
また、本実施形態では、上記第2評価値は、予め定められた荷重速度と重心速度との理想直線からの距離に基づいて、算出された。他の実施形態では、算出された荷重速度と重心速度とに基づいて、第2評価値が算出されてもよい。例えば、算出した荷重速度と重心速度との比と、予め定められた値とを比較することにより、第2評価値が定められてもよい。すなわち、第2評価値は、予め定められた荷重速度及び重心速度の関係(当該関係は、式によって定められてもよいし、比や積によって定められる値であってもよい)と、算出した荷重速度及び重心速度の関係とを比較することによって、算出されてもよい。また、他の実施形態では、予め定められた荷重速度と重心速度との関係は、直線に限らず、曲線であってもよい。
【0209】
また、本実施形態では、荷重の落ち込み度合い(荷重の増加の度合い)を示す荷重速度の値と上記重心速度の値とに基づいて、第2評価値を算出した。他の実施形態では、荷重速度は、荷重の減少の度合いであってもよい。また、他の実施形態では、重心速度の方向をも考慮してもよい。例えば、ある時点における重心速度の方向(重心の移動方向)と荷重速度の値とが所定の関係を満たすか否かに応じて、第2評価値が算出されてもよい。
【0210】
以上のように、荷重コントローラ36が検出する荷重値の時間変化に関する荷重情報と、重心位置の移動速度を示す重心速度に関する情報との関係に基づいて、プレイヤの動作を判定してもよい。ここで、荷重情報とは、荷重の最大値(又は最小値)やその値となる時間、荷重の極大値(又は極小値)やその値となる時間、荷重値が所定の値となる場合の時間、又は、上記荷重速度等であってもよい。また、重心速度に関する情報とは、重心速度の値や方向、最大(又は最小)重心速度やその値となる時間等であってもよい。
【0211】
また、本実施形態では、上記第3評価値を重心位置の軌跡によって囲まれる面積として算出したが、他の実施形態では、重心位置の軌跡の形状(例えば、右又は左側への膨らみ具合)によって、上記第3評価値を算出してもよい。例えば、第3評価値は、ダウンスイング開始から所定フレーム前の点におけるS座標値と、重心位置の最大のS座標値との差に基づいて定められてもよい。当該差が大きい場合、重心位置の軌跡はS軸正方向に大きく膨らんでいるため、右打ちのプレイヤの場合では、ボールはスライスとなる。
【0212】
また、本実施形態では、プレイヤがダウンスイングを開始した時点から所定の時間が経過したか否かによって、プレイヤオブジェクト120がボール122をショットしたか否かを判定した。すなわち、本実施形態では、コントローラ22の加速度の大きさが所定の閾値を越えた場合、プレイヤがダウンスイングを開始したと判定し、ダウンスイング開始後、所定の時間が経過した時点をインパクト時点として定めた。他の実施形態では、コントローラ22の加速度の大きさ及び方向が所定の条件を満たした場合(例えば、加速度の大きさが所定の閾値未満になった場合や加速度の方向が変化した場合等)、スイングを開始したと判定してもよい。また、他の実施形態では、コントローラ22の入力手段(例えば、Aボタン26d)への入力があったか否かによって、プレイヤオブジェクト120のダウンスイングを開始させてもよく、ダウンスイング開始から所定の時間が経過した時点をインパクト時点として定めてもよい。また、コントローラ22の姿勢や加速度によって、インパクトの時点を定めてもよい。例えば、トップの状態(図13Aの状態)ではプレイヤは略静止しているため、コントローラ22の姿勢を加速度センサ74で検出することにより、ゲーム装置12は、スイングの状態がトップの状態であることを検出することができる。当該姿勢からプレイヤがダウンスイングを開始すると、コントローラ22には加速度が生じるため、ゲーム装置12は、当該加速度を検出することでダウンスイングの開始を検出することができる。そして、インパクトの付近でコントローラ22に生じる加速度は最大となると考えられるため、ゲーム装置12は、当該加速度が最大となった時点をインパクトの時点として定めることもできる。この場合において、加速度センサ74が検出できる加速度の最大値は、プレイヤによるコントローラ22の振り動作によって生じる加速度よりも十分に大きいことが好ましい。
【0213】
また、本実施形態では、4つの荷重センサ364を備えた荷重コントローラ36を用いて上記処理を行った。他の実施形態では、荷重センサは4つである必要はなく、3つであってもよいし、5つ以上であってもよい。また、4つの荷重センサ364は、荷重コントローラ36の四隅に配置される必要はなく、どのように配置されてもよい。すなわち、荷重センサの数や配置はどのようなものでもよく、荷重センサの幾何学的な配置に固有の補正を行うことによって、重心位置を算出することができる。
【0214】
また、本実施形態では、各荷重センサ364からの検出値を示すデータがゲーム装置12に送信されることとした。他の実施形態では、荷重コントローラ36が、各荷重センサ364が検出する荷重の合計値と重心位置とを算出し、算出した合計値と重心位置とをゲーム装置12に送信してもよい。すなわち、荷重コントローラ36が算出した合計荷重値と重心位置とを含む信号をゲーム装置12が受信し、ゲーム装置12が受信した信号からこれらの情報を取得してもよい。
【0215】
また、本発明のゲームプログラムは、光ディスク18等の外部記憶媒体を通じてゲーム装置12に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置12に供給されてもよい。また、携帯型のゲーム装置によって上記プログラムが実行されてもよい。また、ゲームプログラムは、ゲーム装置12内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体(コンピュータ読み取り可能な記憶媒体)としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【0216】
また、他の実施形態では、上述した動作の判定プログラムは、ゲーム装置以外の情報処理装置、例えば、動作判定用の専用装置(例えば、ゴルフのスイング判定等のトレーニング用装置)や荷重を測定可能な入力装置を備えるパーソナルコンピュータ等において実行されてもよい。
【0217】
また、本実施形態においては、ゲーム装置12のCPU40がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置12が備える専用回路によって行われてもよい。
【符号の説明】
【0218】
10 ゲームシステム
12 ゲーム装置
18 光ディスク
22 コントローラ
34 モニタ
34a スピーカ
36 荷重コントローラ
364 荷重センサ
40 CPU
42 システムLSI
42a 入出力プロセッサ
42b GPU
42c DSP
42d VRAM
42e 内部メインメモリ
44 フラッシュメモリ
46 外部メインメモリ
48 ROM/RTC
52 無線コントローラモジュール
54 ディスクドライブ
56 AV IC
58 AVコネクタ
60 拡張コネクタ
74 加速度センサ
100 マイコン
102 ADコンバータ
104 DC−DCコンバータ
106 無線モジュール
108 増幅器
120 プレイヤオブジェクト
122 ボール

【特許請求の範囲】
【請求項1】
ユーザによって荷重が加えられる、荷重センサを備えた第1入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、前記コンピュータを、
前記第1入力装置からの信号に基づいて、前記第1入力装置に加えられた荷重の時間変化に関する荷重情報を取得する荷重情報取得手段、
前記第1入力装置からの信号に基づいて、前記ユーザの重心位置を検出する重心位置検出手段、
前記重心位置の移動速度を示す重心速度を算出する重心速度算出手段、
前記荷重情報と前記重心速度に関する重心速度情報との関係に基づいて、前記ユーザの所定の動作を判定する動作判定手段、として機能させる情報処理プログラム。
【請求項2】
前記第1入力装置からの信号に基づいて、所定期間における前記第1入力装置に加えられた荷重を示す荷重値データを記憶する記憶手段として前記コンピュータをさらに機能させ、
前記荷重情報取得手段は、前記記憶手段に記憶された荷重値データに基づいて、前記荷重情報を取得する、請求項1に記載の情報処理プログラム。
【請求項3】
前記荷重情報取得手段は、前記荷重情報として、前記第1入力装置に加えられた荷重が第1の条件を満たすタイミングを取得し、
前記動作判定手段は、前記第1入力装置に加えられた荷重が前記第1の条件を満たすタイミングと前記重心速度が第2の条件を満たすタイミングとに基づいて、前記ユーザの所定の動作を判定する、請求項1または2に記載の情報処理プログラム。
【請求項4】
前記荷重情報取得手段は、前記第1入力装置に加えられた荷重が最大となるタイミングを取得し、
前記動作判定手段は、前記荷重が最大となるタイミングと前記重心速度が最大となるタイミングとに基づいて、前記ユーザの所定の動作を判定する、請求項3に記載の情報処理プログラム。
【請求項5】
前記動作判定手段は、前記荷重が最大となるタイミングと前記重心速度が最大となるタイミングとの差に基づいて、前記ユーザの所定の動作を判定する、請求項4に記載の情報処理プログラム。
【請求項6】
前記荷重情報取得手段は、前記荷重情報として、前記第1入力装置に加えられた荷重の所定時間における変化量を示す荷重速度を取得し、
前記動作判定手段は、前記重心速度と前記荷重速度とに基づいて、前記ユーザの所定の動作を判定する、請求項1に記載の情報処理プログラム。
【請求項7】
前記荷重情報取得手段は、前記荷重情報として、前記第1入力装置に加えられた荷重の所定時間における変化量を示す荷重速度を取得し、
前記動作判定手段は、予め定められた荷重速度及び重心速度の関係と、前記荷重速度算出手段によって算出された荷重速度及び前記重心速度算出手段によって算出された重心速度の関係と、を比較することにより、前記ユーザの所定の動作を判定する、請求項1に記載の情報処理プログラム。
【請求項8】
前記動作判定手段は、前記荷重速度を第1軸とし前記重心速度を第2軸とする座標系において、前記予め定められた荷重速度及び重心速度の関係を示す直線又は曲線から、前記荷重速度算出手段によって算出された荷重速度及び前記重心速度算出手段によって算出された重心速度を示す前記座標系における点までの距離に基づいて、前記ユーザの所定の動作を判定する、請求項7に記載の情報処理プログラム。
【請求項9】
前記動作判定手段は、前記荷重速度を第1軸とし前記重心速度を第2軸とする座標系において、前記ユーザの所定の動作が理想的に行われたときに検出される荷重速度および重心速度の関係を示す直線から、前記荷重速度算出手段によって算出された荷重速度及び前記重心速度算出手段によって算出された重心速度を示す前記座標系における点までの距離に基づいて、前記ユーザの所定の動作を判定する、請求項8に記載の情報処理プログラム。
【請求項10】
前記直線の傾きが略2である、請求項9に記載の情報処理プログラム。
【請求項11】
前記直線の切片が略0.07である、請求項10に記載の情報処理プログラム。
【請求項12】
前記直線の傾きは1.7〜2.3程度である、請求項9に記載の情報処理プログラム。
【請求項13】
前記直線の切片は0.058〜0.083程度である、請求項12に記載の情報処理プログラム。
【請求項14】
前記直線の切片は、前記直線の傾きが増加するにしたがって減少する、請求項13に記載の情報処理プログラム。
【請求項15】
前記荷重情報取得手段は、前記荷重情報として、前記第1入力装置に加えられた荷重が第1の条件を満たすタイミングと、前記第1入力装置に加えられた荷重の所定時間における変化量を示す荷重速度とを取得し、
前記情報処理プログラムは、前記コンピュータを、
前記第1入力装置に加えられた荷重が第1の条件を満たすタイミングと前記重心速度が第2の条件を満たすタイミングとに基づいて、第1の評価を行う第1評価手段、
前記重心速度と前記荷重速度とに基づいて、第2の評価を行う第2評価手段としてさらに機能させ、
前記動作判定手段は、前記第1評価手段による評価結果と前記第2評価手段による評価結果とに基づいて、前記ユーザの所定の動作を判定する、請求項1に記載の情報処理プログラム。
【請求項16】
前記重心位置検出手段によって検出された重心位置の軌跡に基づいて、第3の評価を行う第3評価手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記第3評価手段による評価結果にも基づいて、前記ユーザの所定の動作を判定する、請求項15に記載の情報処理プログラム。
【請求項17】
前記重心位置検出手段によって検出された重心位置の軌跡の少なくとも一部と前記重心位置検出手段によって検出された重心位置のうち2つの重心位置を結ぶ線とによって囲まれる面積に基づいて、第3の評価を行う第3評価手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記第3評価手段による評価結果にも基づいて、前記ユーザの所定の動作を判定する、請求項15に記載の情報処理プログラム。
【請求項18】
前記第1評価手段は、前記第1入力装置に加えられた荷重が第1の条件を満たすタイミングと前記重心速度が第2の条件を満たすタイミングとに基づいて、第1評価値を算出し、
前記第2評価手段は、前記重心速度と前記荷重速度とに基づいて、第2評価値を算出し、
前記動作判定手段は、前記第1評価値の値に応じて前記第2評価値を変化させ、前記第1評価値と当該変化後の第2評価値とに基づいて、前記ユーザの所定の動作を判定する、請求項15に記載の情報処理プログラム。
【請求項19】
前記動作判定手段は、前記第1評価値の値が大きくなるにしたがって前記第2評価値の値が小さくなるように当該第2評価値を変化させる、請求項18に記載の情報処理プログラム。
【請求項20】
前記動作判定手段は、前記ユーザの所定の動作のタイミングが所定のタイミングよりも遅れているか否かを判定する、請求項1ないし19のいずれかに記載の情報処理プログラム。
【請求項21】
前記情報処理装置は、前記第1入力装置とは異なる第2入力装置からの信号をさらに処理し、
前記第2入力装置による前記情報処理装置への入力が所定の条件を満たした時点を基準時として設定する基準時設定手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記基準時に応じて定められる期間に前記荷重情報取得手段によって取得された荷重情報と前記重心速度情報との関係に基づいて、前記ユーザの所定の動作を判定する、請求項1ないし20のいずれかに記載の情報処理プログラム。
【請求項22】
前記動作判定手段は、前記基準時に応じて定められる期間において取得される前記荷重情報と当該期間における前記重心速度情報との関係に基づいて、当該期間における複数時点での前記ユーザの所定の動作を判定する、請求項21に記載の情報処理プログラム。
【請求項23】
前記第2入力装置は、加速度センサを備え、
前記基準時設定手段は、前記第2入力装置からの信号に基づいて、前記加速度センサによって検出された加速度の大きさが所定の閾値よりも大きくなった時点を、前記基準時として設定する、請求項21に記載の情報処理プログラム。
【請求項24】
前記動作判定手段による判定結果に基づいて、仮想空間上の所定のオブジェクトが当該仮想空間を移動する様子を表示する表示制御手段、として前記コンピュータをさらに機能させる、請求項1ないし23のいずれかに記載の情報処理プログラム。
【請求項25】
ユーザによって荷重が加えられる、荷重センサを備えた第1入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、前記コンピュータを、
前記第1入力装置からの信号に基づいて、所定期間における前記第1入力装置に加えられた荷重の重心位置を検出する重心位置検出手段、
前記重心位置検出手段によって検出された重心位置の軌跡に基づいて、前記ユーザの所定の動作を判定する動作判定手段、として機能させる情報処理プログラム。
【請求項26】
ユーザによって荷重が加えられる、荷重センサを備えた第1入力装置からの信号を処理する情報処理装置であって、
前記第1入力装置からの信号に基づいて、前記第1入力装置に加えられた荷重の時間変化に関する荷重情報を取得する荷重情報取得手段と、
前記第1入力装置からの信号に基づいて、前記ユーザの重心位置を検出する重心位置検出手段と、
前記重心位置の移動速度を示す重心速度を算出する重心速度算出手段と、
前記荷重情報と前記重心速度に関する重心速度情報との関係に基づいて、前記ユーザの所定の動作を判定する動作判定手段とを備える、情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図13C】
image rotate

【図13D】
image rotate

【図13E】
image rotate

【図14】
image rotate

【図15A】
image rotate

【図15B】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2011−76440(P2011−76440A)
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願番号】特願2009−228120(P2009−228120)
【出願日】平成21年9月30日(2009.9.30)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】