説明

荷重検出プログラムおよび荷重検出装置

【課題】荷重コントローラに対するプレイヤの動作を判別することができる荷重検出プログラムおよび荷重検出装置を提供する。
【解決手段】荷重検出装置10は荷重コントローラ36を含む。たとえば、プレイヤの荷重コントローラに対する所定の複数の動作の識別のために、荷重値の体重値に対する割合に関する条件と、重心位置に関する条件とが予め規定される。検出される荷重値の体重値に対する割合と重心位置が算出され、当該割合と重心位置に基づいて、プレイヤが荷重コントローラに対して行った動作が判別される。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は荷重検出プログラムおよび荷重検出装置に関し、特にたとえば、プレイヤの足が乗せられる支持台にかかる荷重値を検出して処理を行う荷重検出プログラムおよび荷重検出装置に関する。
【背景技術】
【0002】
従来、リハビリなどの訓練を目的とした医療機器の分野において、被検者の荷重を検出するセンサを備えた荷重検出装置が知られている。
【0003】
たとえば、特許文献1には、2つの荷重センサを備えた変動荷重表示装置が開示されている。この装置では、それぞれの荷重センサに左右の足が片方ずつ載せられる。2つの荷重センサから検出される荷重値の表示によって、左右のバランスが測定される。
【0004】
また、特許文献2には、3つの荷重検出手段を備えた重心移動訓練装置が開示されている。この装置では、3つの荷重検出手段が設けられた検出板に両足が乗せられる。3つの荷重検出手段から検出される信号の演算によって重心位置が算出および表示されて、重心移動の訓練が行われる。
【特許文献1】特開昭62−34016号公報[G01G 19/00, A61B 5/10, A61H 1/00, G01G 23/37]
【特許文献2】特開平7−275307号公報[A61H 1/02, A61B 5/11, A63B 23/04]
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、上述の特許文献1および2では、荷重検出手段を備えた検出板の上に被検者の足が乗せられた状態での荷重の変化(左右のバランスや重心の移動)を測定することはできるが、このような左右のバランスや重心の移動の測定では、たとえば踏み台昇降運動のように被検者が検出板の上に足を乗せたり下ろしたりするといった動作や検出板の上で腿を上げる動作などを判別することが困難であった。
【0006】
それゆえに、この発明の主たる目的は、新規な、荷重検出プログラムおよび荷重検出装置を提供することである。
【0007】
この発明の他の目的は、足を乗せたり下ろしたり腿を上げたりするようなプレイヤの支持台に対する動作を判別することのできる、荷重検出プログラムおよび荷重検出装置を提供することである。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0009】
第1の発明は、間隔を置いた2以上の荷重センサを有しプレイヤの足が乗せられる支持台を備える荷重検出装置のコンピュータにおいて実行される荷重検出プログラムである。この荷重検出プログラムは、荷重値検出ステップ、割合算出ステップ、重心位置算出ステップ、および動作判別ステップを前記コンピュータに実行させる。荷重値検出ステップは、荷重センサによって測定される支持台にかかる荷重値を検出する。割合算出ステップは、荷重検出ステップによって検出された荷重値のプレイヤの体重値に対する割合を算出する。重心位置算出ステップは、荷重検出ステップによって検出された荷重値の重心位置を算出する。動作判別ステップは、割合と重心位置とに基づいて、支持台に対してプレイヤが行った動作を判別する。
【0010】
第1の発明では、荷重検出プログラムは、荷重検出装置(10、12)のコンピュータ(40、42)において実行され、荷重検出装置を、たとえば、検出される荷重値に基づいてプレイヤ(ユーザ)の動作を判別する装置として機能させる。荷重検出装置は、プレイヤの足が乗せられる支持台(36)を備えており、この支持台は間隔を置いた2以上の荷重センサ(36b)を備えている。荷重値検出ステップ(S39)では、荷重センサによって測定される支持台にかかる荷重値が検出される。支持台に対するプレイヤの動作に応じた荷重値が検出される。割合算出ステップ(S41)では、検出された荷重値のプレイヤの体重値に対する割合を算出する。重心位置算出ステップ(S43)では、検出された荷重値の重心位置を算出する。動作判別ステップ(S45、S113)では、割合と重心位置とに基づいて、支持台に対してプレイヤが行った動作が判別される。たとえば、支持台に対する所定の複数の動作について、荷重値の体重値に対する割合に関する条件と重心位置に関する条件とが規定されて予め記憶される。検出された荷重値から算出した割合と重心位置とに基づいて、所定の動作が行われたか否かが判別され、あるいは、割合と重心位置の両条件ともに満足する動作を検出することによって、プレイヤが行った動作が特定される。
【0011】
第1の発明によれば、荷重値の割合と重心位置に基づいて、プレイヤが支持台に対して行った動作を判別することができる。
【0012】
第2の発明は、第1の発明に従属する荷重検出プログラムであって、動作判別ステップは、割合と重心位置とに基づいて、所定の動作が行われたか否かを判別する。
【0013】
第2の発明では、動作判別ステップでは、たとえば、算出された荷重値の体重値に対する割合と重心位置とが、所定の動作についての割合の条件と重心位置の条件とをそれぞれ満足するかどうかを判断することによって、当該所定の動作がプレイヤによって行われたかどうかが判別される。荷重値の体重値に対する割合と重心位置とを判定することによって、支持台に対して所定の動作が行われたかどうかを判別することができ、したがって、支持台に対してたとえば踏み台昇降の動作や腿上げ動作等が行われたかどうかを判別することができる。
【0014】
第3の発明は、第2の発明に従属する荷重検出プログラムであって、動作判別ステップは、過去の動作判別ステップで過去の所定の動作が行われたと判断されたことを、判別条件としてさらに判断する。
【0015】
第3の発明では、プレイヤによる過去の動作の実行の適否に応じて、現在の動作の実行の適否を判断することができる。
【0016】
第4の発明は、第2の発明に従属する荷重検出プログラムであって、複数の動作のうちのいずれか1つの動作を所定の動作として行うことをプレイヤに指示する指示ステップ、および指示ステップで指示が行われてからの経過時間を計測する経過時間計測ステップをコンピュータにさらに実行させる。動作判別ステップは、経過時間が所定時間内にある間、指示ステップで指示された動作が行われたか否か判別する。
【0017】
第4の発明では、指示ステップ(S31)で、複数の動作のうちのいずれか1つの動作を行うことがプレイヤに指示される。動作の指示は、たとえば画面に当該動作を示すパネル(400)を表示することによって行われてよく、また、パネルの移動や停止のタイミングによって動作の適切なタイミングが示されてもよい。経過時間計測ステップ(S33、S35)では、動作の指示が行われてからの経過時間が計測される。動作判別ステップでは、経過時間が所定時間内にある間、指示された動作が行われたか否かが判別され、つまり、制限時間が経過するまでは、検出された荷重値の体重値に対する割合と重心位置に基づいて判別が行われる。動作の指示があってから所定の時間が経過するまでにプレイヤによって所定の動作が行われれば、当該所定の動作が行われたことを判別することができ、たとえば、プレイヤに所定時間ごとに所定の動作を指示して踏み台昇降のような一連の動作を行わせて、その動作を判別することができる。
【0018】
第5の発明は、第1の発明に従属する荷重検出プログラムであって、動作判別ステップは、割合と重心位置とに基づいて、予め定められた複数の動作のうちのいずれの動作が行われたかを特定する。
【0019】
第5の発明では、たとえば、予め定められた複数の動作について荷重値の体重値に対する割合の条件と重心位置の条件とが予め決められており、算出された割合と重心位置に基づいて、両条件を満足する動作が検出される。支持台にかかる荷重値を検出して、荷重値の体重値に対する割合と重心位置とを算出することによって、支持台に対して行われる所定の複数の動作のうち、いずれの動作をプレイヤが行ったのかを特定することができる。
【0020】
第6の発明は、間隔を置いた2以上の荷重センサを有しプレイヤの足が乗せられる支持台を備える荷重検出装置であって、荷重値検出手段、割合算出手段、重心位置算出手段、および動作判別手段を備える。荷重値検出手段は、荷重センサによって測定される支持台にかかる荷重値を検出する。割合算出手段は、荷重検出手段によって検出された荷重値のプレイヤの体重値に対する割合を算出する。重心位置算出手段は、荷重検出手段によって検出された荷重値の重心位置を算出する。動作判別手段は、割合と重心位置とに基づいて、支持台に対してプレイヤが行った動作を判別する。
【0021】
第2の発明は、第1の発明の荷重検出プログラムが適用される荷重検出装置であり、第1の発明と同様の効果を奏する。
【発明の効果】
【0022】
この発明によれば、支持台にかかる荷重値の体重値に対する割合と重心位置を算出し、当該割合と重心位置に基づく判別を行うようにしたので、支持台に対してプレイヤが行った動作を判別することができる。たとえば所定の動作が行われたかどうかを判別したり、予め定められた複数の動作のうちのいずれの動作が行われたかを判別したりすることができる。
【0023】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0024】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置(以下、単に「ゲーム装置」という。)12、コントローラ22および荷重コントローラ36を含む。この実施例では、ゲーム装置12と荷重コントローラ36とが荷重検出装置として機能する。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ(22,36)と通信可能に設計されている。また、ゲーム装置12と各コントローラ(22,36)とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。
【0025】
ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。ディスクスロット16の周囲には、LEDと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
【0026】
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という。)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
【0027】
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
【0028】
ゲーム装置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の前方に向けて赤外光を出力する。
【0029】
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0030】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0031】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられる。このCPU40は、ゲームプロセッサとして機能する。このCPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
【0032】
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラムデータやテクスチャデータ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
【0033】
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
【0034】
入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後で詳細に説明する。
【0035】
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
【0036】
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。なお、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
【0037】
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
【0038】
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【0039】
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
【0040】
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60および外部メモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
【0041】
入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(送信データとする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(受信データとする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、受信データをフラッシュメモリ44に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ42aは、ダウンロードサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、ダウンロードデータをフラッシュメモリ44に記憶する。
【0042】
また、入出力プロセッサ42aは、コントローラ22や荷重コントローラ36から送信される入力データをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。入力データは、CPU40のゲーム処理によって利用された後、バッファ領域から消去される。
【0043】
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格にしたがってコントローラ22や荷重コントローラ36との間で通信を行う。
【0044】
また、図面の都合上、図2では、コントローラ22と荷重コントローラ36とをまとめて記載してある。
【0045】
さらに、入出力プロセッサ42aには、拡張コネクタ60および外部メモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。外部メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60や外部メモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0046】
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、システムLSI42は、通常の通電状態となるモード(通常モードと呼ぶこととする)を設定する。一方、電源ボタン20aがオフされると、ゲーム装置12の一部のコンポーネントのみに電源が供給され、システムLSI42は、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という。)を設定する。この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、CPU40によってアプリケーションの実行が行われないモードである。
【0047】
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
【0048】
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【0049】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【0050】
また、通常モードとスタンバイモードの切り替えは、コントローラ22の電源スイッチ26h(図3参照)のオン/オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
【0051】
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
【0052】
図3(A)ないし図3(E)は、コントローラ22の外観の一例を示す。図3(A)はコントローラ22の先端面を示し、図3(B)はコントローラ22の上面を示し、図3(C)はコントローラ22の右側面を示し、図3(D)はコントローラ22の下面を示し、そして、図3(E)はコントローラ22の後端面を示す。
【0053】
図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が設けられる。
【0054】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0055】
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【0056】
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【0057】
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0058】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0059】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ22で選択した位置を指定したりするために使用される。また、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
【0060】
また、図3(E)に示すように、ハウジング22aの後端面に外部拡張コネクタ22bが設けられ、また、図3(B)に示すように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別の拡張コントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、点灯LEDに対応するコントローラ22の識別情報(コントローラ番号)を示したり、点灯させるLEDの個数によってコントローラ22の電源残量を示したりすることができる。
【0061】
さらに、コントローラ22は、撮像情報演算部80(図4参照)を有しており、図3(A)に示すように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、コントローラ22は、スピーカ86(図4参照)を有しており、このスピーカ86は、図3(B)に示すように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
【0062】
なお、図3(A)ないし図3(E)に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0063】
図4はコントローラ22の電気的な構成を示すブロック図である。この図4を参照して、コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、外部拡張コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0064】
プロセッサ70は、コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、入力データとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。
【0065】
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
【0066】
また、加速度センサ74は、コントローラ22の縦方向(y軸方向)、横方向(x軸方向)および前後方向(z軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【0067】
たとえば、加速度センサ74は、第1所定時間毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを、第2所定時間毎に検出し、一旦メモリ72に記憶する。プロセッサ70は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、5msec)毎にゲーム装置12に送信する。
【0068】
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
【0069】
無線モジュール76は、たとえばBluetoothの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、コントローラ22からの入力データを取得することができる。そして、CPU40は、取得した入力データとプログラム(ゲームプログラム)とに従ってゲーム処理を行う。
【0070】
さらに、上述したように、コントローラ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における処理については後述する。
【0071】
図5は図1に示した荷重コントローラ36の外観を示す斜視図である。図5に示すように、荷重コントローラ36は、プレイヤがその上に乗る(プレイヤの足を乗せる)台36a、および台36aにかかる荷重を検出するための少なくとも4つの荷重センサ36bを備える。なお、各荷重センサ36bは台36aに内包されており(図7参照)、図5においてはその配置が点線で示されている。
【0072】
台36aは、略直方体に形成されており、上面視で略長方形状である。たとえば長方形の短辺が30cm程度に設定され、その長辺が50cm程度に設定される。プレイヤが乗る台36aの上面は平坦にされる。台36aの4隅の側面は、部分的に円柱状に張り出すように形成されている。
【0073】
この台36aにおいて、4つの荷重センサ36bは、所定の間隔を置いて配置される。この実施例では、4つの荷重センサ36bは、台36aの周縁部に、具体的には4隅にそれぞれ配置される。荷重センサ36bの間隔は、台36aに対するプレイヤの荷重のかけ方によるゲーム操作の意図をより精度良く検出できるように適宜な値に設定される。
【0074】
図6は、図5に示した荷重コントローラ36のVI−VI断面図を示すとともに、荷重センサ36bの配置された隅の部分が拡大表示されている。この図6から分かるように、台36aは、プレイヤが乗るための支持板360と脚362を含む。脚362は、荷重センサ36bが配置される箇所に設けられる。この実施例では4つの荷重センサ36bが4隅に配置されるので、4つの脚362が4隅に設けられる。脚362は、たとえばプラスチック成型によって略有底円筒状に形成されており、荷重センサ36bは、脚362内の底面に設けられた球面部品362a上に配置される。支持板360は、この荷重センサ36bを介して脚362に支持される。
【0075】
支持板360は、上面と側面上部とを形成する上層板360a、下面と側面下部とを形成する下層板360b、および上層板360aと下層板360bとの間に設けられる中層板360cを含む。上層板360aと下層板360bとは、たとえばプラスチック成型により形成されており、接着等により一体化される。中層板360cは、たとえば1枚の金属板のプレス成型により形成されている。この中層板360cが、4つの荷重センサ36bの上に固定される。上層板360aは、その下面に格子状のリブ(図示しない)を有しており、当該リブを介して中層板360cに支持されている。したがって、台36aにプレイヤが乗ったときには、その荷重は、支持板360、荷重センサ36bおよび脚362を伝達する。図6に矢印で示したように、入力される荷重によって生じた床からの反作用は、脚362から、球面部品362a、荷重センサ36b、中層板360cを介して、上層板360aに伝達する。
【0076】
荷重センサ36bは、たとえば歪ゲージ(歪センサ)式ロードセルであり、入力された荷重を電気信号に変換する荷重変換器である。荷重センサ36bでは、荷重入力に応じて、起歪体370aが変形して歪が生じる。この歪が、起歪体に貼り付けられた歪センサ370bによって、電気抵抗の変化に変換され、さらに電圧変化に変換される。したがって、荷重センサ36bは、入力荷重を示す電圧信号を出力端子から出力する。
【0077】
なお、荷重センサ36bは、音叉振動式、弦振動式、静電容量式、圧電式、磁歪式、またはジャイロ式のような他の方式の荷重センサであってもよい。
【0078】
図5に戻って、荷重コントローラ36には、さらに、電源ボタン36cが設けられる。この電源ボタン36cがオンされると、荷重コントローラ36の各回路コンポーネント(図7参照)に電源が供給される。ただし、荷重コントローラ36は、ゲーム装置12からの指示に従ってオンされる場合もある。また、荷重コントローラ36は、プレイヤが乗っていない状態が一定時間(たとえば、30秒)以上継続すると、電源がオフされる。ただし、荷重コントローラ36が起動されている状態で、電源ボタン36cをオンしたときに、電源がオフされてもよい。
【0079】
図7のブロック図には、荷重コントローラ36の電気的な構成の一例が示される。なお、この図7では、信号および通信の流れは実線矢印で示される。破線矢印は、電源の供給を示している。
【0080】
荷重コントローラ36は、その動作を制御するためのマイクロコンピュータ(マイコン)100を含む。マイコン100は図示しないCPU、ROMおよびRAM等を含み、CPUはROMに記憶されたプログラムに従って荷重コントローラ36の動作を制御する。
【0081】
マイコン100には、電源ボタン36c、ADコンバータ102、DC−DCコンバータ104および無線モジュール106が接続される。さらに、無線モジュール106には、アンテナ106aが接続される。また、4つの荷重センサ36bは、図3ではロードセル36bとして示される。4つの荷重センサ36bは、それぞれ、増幅器108を介してADコンバータ102に接続される。
【0082】
また、荷重コントローラ36には電源供給のために電池100が収容されている。他の実施例では、電池に代えてACアダプタを接続し、商用電源を供給するようにしてもよい。かかる場合には、DC−DCコンバータに代えて、交流を直流に変換し、直流電圧を降圧および整流する電源回路を設ける必要がある。この実施例では、マイコン100および無線モジュール106への電源の供給は、電池から直接的に行われる。つまり、マイコン100内部の一部のコンポーネント(CPU)と無線モジュール106とには、常に電源が供給されており、電源ボタン36cがオンされたか否か、ゲーム装置12から電源オン(荷重検出)のコマンドが送信されたか否かを検出する。一方、荷重センサ36b、ADコンバータ102および増幅器108には、電池110からの電源がDC−DCコンバータ104を介して供給される。DC−DCコンバータ104は、電池110からの直流電流の電圧値を異なる電圧値に変換して、荷重センサ36b、ADコンバータ102および増幅器108に与える。
【0083】
これら荷重センサ36b、ADコンバータ102および増幅器108への電源供給は、マイコン100によるDC−DCコンバータ104の制御によって、必要に応じて行われるようにしてよい。つまり、マイコン100は、荷重センサ36bを動作させて荷重を検出する必要があると判断されるときに、DC−DCコンバータ104を制御して、各荷重センサ36b、ADコンバータ102および各増幅器108に電源を供給するようにしてよい。
【0084】
電源が供給されると、各荷重センサ36bは、入力された荷重を示す信号を出力する。当該信号は各増幅器108で増幅され、ADコンバータ102でアナログ信号からディジタルデータに変換されて、マイコン100に入力される。各荷重センサ36bの検出値には各荷重センサ36bの識別情報が付与されて、いずれの荷重センサ36bの検出値であるかが識別可能にされる。このようにして、マイコン100は、同一時刻における4つの荷重センサ36bのそれぞれの荷重検出値を示すデータを取得することができる。
【0085】
一方、マイコン100は、荷重センサ36bを動作させる必要がないと判断されるとき、つまり、荷重検出タイミングでないとき、DC−DCコンバータ104を制御して、荷重センサ36b、ADコンバータ102および増幅器108への電源の供給を停止する。このように、荷重コントローラ36では、必要なときにだけ、荷重センサ36bを動作させて荷重の検出を行うことができるので、荷重検出のための電力消費を抑制することができる。
【0086】
荷重検出の必要なときとは、典型的には、ゲーム装置12(図1)が荷重データを取得したいときである。たとえば、ゲーム装置12が荷重情報を必要とするとき、ゲーム装置12は荷重コントローラ36に対して荷重取得命令を送信する。マイコン100は、ゲーム装置12から荷重取得命令を受信したときに、DC−DCコンバータ104を制御して、荷重センサ36b等に電源を供給し、荷重を検出する。一方、マイコン100は、ゲーム装置12から荷重取得命令を受信していないときには、DC−DCコンバータ104を制御して、電源供給を停止する。
【0087】
あるいは、マイコン100は、一定時間ごとに荷重検出タイミングであると判断して、DC−DCコンバータ104を制御するようにしてもよい。このような周期的な荷重検出を行う場合、周期情報は、たとえば、初めにゲーム装置12から荷重コントローラ36のマイコン100に与えられて記憶されてよいし、または、予めマイコン100に記憶されてよい。
【0088】
荷重センサ36bからの検出値を示すデータは、荷重コントローラ36の操作データ(入力データ)として、マイコン100から無線モジュール106およびアンテナ106bを介してゲーム装置12(図1)に送信される。たとえば、ゲーム装置12からの命令を受けて荷重検出を行った場合、マイコン100は、ADコンバータ102から荷重センサ36bの検出値データを受信したときに、当該検出値データをゲーム装置12に送信する。あるいは、マイコン100は、一定時間ごとに検出値データをゲーム装置12に送信するようにしてもよい。荷重の検出周期よりも送信周期が長い場合には、送信タイミングまでに検出された複数の検出タイミングの荷重値を含むデータが送信される。
【0089】
なお、無線モジュール106は、ゲーム装置12の無線コントローラモジュール52と同じ無線規格(Bluetooth、無線LANなど)で通信可能にされる。したがって、ゲーム装置12のCPU40は、無線コントローラモジュール52等を介して荷重取得命令を荷重コントローラ36に送信することができる。荷重コントローラ36のマイコン100は、無線モジュール106およびアンテナ106aを介して、ゲーム装置12からの命令を受信し、また、各荷重センサ36bの荷重検出値(または荷重算出値)を含む入力データをゲーム装置12に送信することができる。
【0090】
たとえば4つの荷重センサ36bで検出される4つの荷重値の単なる合計値に基づいて実行されるようなゲームの場合には、プレイヤは荷重コントローラ36の4つの荷重センサ36bに対して任意の位置をとることができ、つまり、プレイヤは台36aの上の任意の位置に任意の向きで乗ってゲームをプレイすることができる。しかし、ゲームの種類によっては、各荷重センサ36bで検出される荷重値がプレイヤから見ていずれの方向の荷重値であるかを識別して処理を行う必要があり、つまり、荷重コントローラ36の4つの荷重センサ36bとプレイヤとの位置関係が把握されている必要がある。この場合、たとえば、4つの荷重センサ36bとプレイヤとの位置関係を予め規定しておき、当該所定の位置関係が得られるようにプレイヤが台36a上に乗ることが前提とされてよい。典型的には、台36aの中央に乗ったプレイヤの前後左右にそれぞれ荷重センサ36bが2つずつ存在するような位置関係、つまり、プレイヤが荷重コントローラ36の台36aの中央に乗ったとき、プレイヤの中心から右前、左前、右後および左後の方向にそれぞれ荷重センサ36bが存在するような位置関係が規定される。この場合、この実施例では、荷重コントローラ36の台36aが平面視で矩形状に形成されるとともにその矩形の1辺(長辺)に電源ボタン36cが設けられているので、この電源ボタン36cを目印として利用して、プレイヤには電源ボタン36cの設けられた長辺が所定の方向(前、後、左または右)に存在するようにして台36aに乗ってもらうことを予め決めておく。このようにすれば、各荷重センサ36bで検出される荷重値は、プレイヤから見て所定の方向(右前、左前、右後および左後)の荷重値となる。したがって、荷重コントローラ36およびゲーム装置12は、荷重検出値データに含まれる各荷重センサ36bの識別情報と、予め設定(記憶)された各荷重センサ36bのプレイヤに対する位置ないし方向を示す配置データとに基づいて、各荷重検出値がプレイヤから見ていずれの方向に対応するかを把握することができる。これにより、たとえば前後左右の操作方向のようなプレイヤによるゲーム操作の意図を把握することが可能になる。
【0091】
なお、各荷重センサ36bのプレイヤに対する配置は予め規定せずに、初期設定やゲーム中の設定などでプレイヤの入力によって配置が設定されるようにしてもよい。たとえば、プレイヤから見て所定の方向(左前、右前、左後または右後など)の部分に乗るようにプレイヤに指示する画面を表示するとともに荷重値を取得することによって、各荷重センサ36bのプレイヤに対する位置関係を特定することができるので、この設定による配置データを生成して記憶するようにしてよい。あるいは、モニタ34の画面上に、荷重コントローラ36の配置を選択するための画面を表示して、目印(電源ボタン36c)がプレイヤから見てどの方向に存在するかをコントローラ22による入力によって選択してもらい、この選択に応じて各荷重センサ36bの配置データを生成して記憶するようにしてよい。
【0092】
図8は、コントローラ22および荷重コントローラ36を用いてゲームプレイするときの状態を概説する図解図である。図8に示すように、ビデオゲームシステム10でコントローラ22および荷重コントローラ36を用いてゲームをプレイする際、プレイヤは、荷重コントローラ36の上に乗り、一方の手でコントローラ22を把持する。厳密に言うと、プレイヤは、コントローラ22の先端面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ340mおよび340nの方を向く状態で、荷重コントローラ36に乗り、コントローラ22を把持する。ただし、図1からも分かるように、マーカ340mおよび340nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ22が指示する画面上の位置を変更したり、コントローラ22と各マーカ340mおよび340nとの距離を変更したりすることによってゲーム操作を行う。
【0093】
なお、図8では、モニタ34の画面に対して荷重コントローラ36を縦置き(長辺方向が画面を向くような配置)にしてプレイヤが画面に対して横向きになっている場合を示しているが、画面に対する荷重コントローラ36の配置やプレイヤの向きはゲームの種類に応じて適宜変更可能であり、たとえば、荷重コントローラ36を画面に対して横置き(長辺方向が画面に平行になるような配置)にしてプレイヤが画面に対して正面を向くようにしてもよい。
【0094】
図9は、マーカ340mおよび340nと、コントローラ22との視野角を説明するための図である。図9に示すように、マーカ340mおよび340nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子80cは、コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ340mおよび340nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子80cの視野角θ2は41°である。プレイヤは、撮像素子80cが2つのマーカ340mおよび340nからの赤外光を受光することが可能な位置および向きとなるように、コントローラ22を把持する。具体的には、撮像素子80cの視野角θ2の中に少なくとも一方のマーカ340mおよび340nが存在し、かつ、マーカ340mまたは340nの少なくとも一方の視野角θ1の中にコントローラ22が存在する状態となるように、プレイヤはコントローラ22を把持する。この状態にあるとき、コントローラ22は、マーカ340mおよび340nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
【0095】
なお、コントローラ22の位置および向きがこの範囲外となった場合、コントローラ22の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【0096】
操作可能範囲内でコントローラ22が把持される場合、撮像情報演算部80によって各マーカ340mおよび340nの画像が撮像される。すなわち、撮像素子80cによって得られる撮像画像には、撮像対象である各マーカ340mおよび340nの画像(対象画像)が含まれる。図10は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路80dは、各マーカ340mおよび340nの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0097】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路80dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路80dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ340mおよび340nの画像340m’および340n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像であるマーカ340mおよび340nの画像340m’および340n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0098】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0099】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
【0100】
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路80dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ70によって入力データに含まれ、ゲーム装置12に送信される。
【0101】
ゲーム装置12(CPU40)は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ22の指示位置(指示座標)と、コントローラ22からマーカ340mおよび340nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、コントローラ22の向いている位置すなわち指示位置が算出される。したがって、コントローラ22は、モニタ34の画面内の任意の位置を指示するポインティングデバイスとして機能する。また、撮像画像における対象画像間の距離が、コントローラ22と、マーカ340mおよび340nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12はコントローラ22とマーカ340mおよび340nとの間の距離を把握できる。
【0102】
このゲームシステム10では、荷重コントローラ36の上に足を乗せたり下ろしたりするようなプレイヤの動作によってゲームが行われる。この荷重コントローラ36に対するプレイヤの動作が、荷重コントローラ36で検出される荷重値に基づいて判別(識別)される。具体的には、プレイヤの体重値に対する荷重値の割合と重心位置とに基づいて、荷重コントローラ36に対してプレイヤが行った動作が判別される。より詳しくは、検出された荷重値の体重値に対する割合と重心位置とに基づいて、予め定められた(登録された)複数の動作のうちいずれの動作が行われたかを特定することが可能である。また、所定の動作が行われたか否かを、検出された荷重値の体重値に対する割合と重心位置とに基づいて判別することが可能である。
【0103】
この実施例では、踏み台昇降ゲームが行われる。踏み台昇降は、人が台の昇り降りを繰返し行う運動である。図11に示すように、荷重コントローラ36を踏み台に見立てて、プレイヤは荷重コントローラ36に昇って降りる動作を行って、このゲームをプレイする。
【0104】
なお、図11では、一例として、プレイヤの前に置かれた荷重コントローラ36に右足から昇り降りを行う場合が示されている。具体的には、1歩目(図11(A))で右足が乗せられ、2歩目(図11(B))でさらに左足が乗せられ、3歩目(図11(C))で右足が後ろに下ろされ、そして、4歩目(図11(D))で左足が後ろに下ろされる。
【0105】
なお、この荷重コントローラ36への昇り降り動作は、後述されるように、ゲーム画面の指示に従ったものであり、適宜変更可能である。したがって、図11では右足からの昇り降りであったが、左足からの昇り降りであってよい。また、図11では最初に乗せた足を先に下ろすが、後から乗せた足を先に下ろすようにしてもよい。また、図11ではプレイヤは前後に移動しつつ昇り降りをしているが、左右に移動しつつ昇り降りをしてもよいし、前後左右の移動を織り交ぜながら昇り降りをしてもよい。
【0106】
また、腿上げ動作を組み込んだ踏み台昇降も行われ得る。図12には、図11の踏み台昇降に腿上げ動作を組み入れた場合のプレイヤの動作が示される。具体的には、1歩目(図12(A))では、図11の通常の踏み台昇降と同様に、右足が荷重コントローラ36に乗せられる。次に、2歩目(図12(B))で、左腿上げを行う。つまり、プレイヤは左足を持ち上げて荷重コントローラ36に乗る際に、左腿を振り上げて左膝を上げる。左足は荷重コントローラ36に着けられることがなく、プレイヤは右足のみで立つ状態になる。続いて、3歩目(図12(C))では、振り上げた左足が後ろに下ろされ、そして、4歩目(図12(D))で、右足が後ろに下ろされる。
【0107】
この実施例では、このような踏み台昇降の各動作、つまり、1歩目、2歩目、3歩目および4歩目の各動作を、荷重値に基づいて判別する。
【0108】
具体的には、発明者等は、荷重値のプレイヤの体重値に対する割合と荷重値の重心位置とを組み合わせて判断することにより、荷重コントローラ36に対するプレイヤの動作を判別できることを見出した。
【0109】
体重値は、プレイヤが静止状態で荷重コントローラ36の上に乗っているときに検出されるすべての荷重センサ36bの荷重値を合計することによって算出される。なお、体重値の測定の際には、たとえばプレイヤに荷重コントローラ36の上に両足で静かに乗るように指示する画面を表示する。荷重値の体重値に対する割合は、検出される全ての荷重センサ36bの荷重値の合計を体重値で割ることによって算出される。
【0110】
重心位置は、荷重コントローラ36の各荷重センサ36bの荷重値の重心位置である。この実施例では、荷重コントローラ36の矩形状の台36aの長辺がプレイヤの前後に、短辺がプレイヤの左右に位置するようにして、踏み台昇降が行われる。そして、動作の識別には、左右方向の重心位置が使用される。
【0111】
プレイヤの左前の荷重センサ36bで検出される荷重値をa、左後の荷重センサ36bで検出される荷重値をb、右前の荷重センサ36bで検出される荷重値をc、右後の荷重センサ36bで検出される荷重値をdとしたとき、左右方向の重心位置XGは、次の数1によって算出される。
[数1]
XG=((c+d)−(a+b))*m
ここで、mは、定数であって、−1≦XG≦1となる値に設定される。
【0112】
なお、この実施例では使用されないが、他の実施例では、動作によっては、前後方向の重心位置に基づいて識別が行われてよく、その場合、前後方向の重心位置YGは、次の数2によって算出できる。
[数2]
YG=((a+c)−(b+d))*n
ここで、nは定数であり、−1≦YG≦1となる値に設定される。
【0113】
このように、左右方向の重心位置XGは、プレイヤの右側の荷重値(c+d)と左側の荷重値(a+b)との差分に基づいて算出され、前後方向の重心位置YGは、プレイヤの前側の荷重値(a+c)と下側の荷重値(b+d)との差分に基づいて算出される。
【0114】
なお、プレイヤから見て各荷重センサ36bがどの方向(この実施例では右前、右後、左前、左後)に存在しているかは、上述のように、予め決められまたはプレイヤによって設定されて記憶されている配置データから把握することができる。
【0115】
図13には、この実施例で判別される動作ごとの、体重値に対する荷重値の割合に関する条件と重心位置に関する条件とが示される。割合に関する条件と重心位置に関する条件とが所定の複数の動作の識別情報に対応付けられたテーブルが予め記憶される。
【0116】
具体的には、右足乗せ動作は、図11(A)、図12(A)および図12(C)に示したように、右足を荷重コントローラ36に乗せ、左足を地面に下ろした状態にする動作である。荷重値の割合の条件は、25〜75%である。この動作では、片足が荷重コントローラ36上で、もう片足が地面にあるから、プレイヤの全体重の約半分が荷重コントローラ36にかかる。さらに、各動作の荷重値の割合の条件は、プレイヤ毎の癖等によって左右の足にかかる荷重のバランスの違い等を考慮して、決められている。
【0117】
また、重心位置の条件は、+0.01〜+1.0である。この実施例の踏み台昇降の際には、右足を荷重コントローラ36の台36aの中心よりも右側に、左足を台36aの中心よりも左側に置くことがプレイヤに要求されるので、各動作の重心位置の条件の値は、これを前提として設定されている。つまり、右足のみ荷重コントローラ36上に乗せられる場合、重心位置は荷重コントローラ36の右側に現れ、左足のみ乗せられる場合、重心位置は左側に現れ、両足が乗せられる場合、重心位置はほぼ中央に現れる。さらに、プレイヤ毎の癖等による重心位置の相違等を考慮して、各動作の重心位置の条件が決められている。
【0118】
両足乗せ動作は、図11(B)に示したように、両足とも荷重コントローラ36に乗せた状態にする動作である。割合の条件は95%以上(ほぼ全体重)であり、重心位置の条件は、−0.7〜+0.7である。
【0119】
左足乗せ動作は、右足乗せ動作と逆であり、図11(C)に示したように、左足を荷重コントローラ36に乗せ、右足を地面に下ろした状態にする動作である。割合の条件は、25〜75%であり、重心位置の条件は、−1.0〜−0.01である。
【0120】
左腿上げ動作は、図12(B)に示したように、右足を荷重コントローラ36に乗せ、左腿を上げた状態にする動作である。割合の条件は、100%以上であり、重心位置の条件は、+0.01〜+1.0である。荷重コントローラ36上で左腿を振り上げる際には、右足を踏み込むことになる。そのため、右足には全体重以上の荷重がかかり、単に静的に両足を乗せた場合よりも大きい荷重値、すなわち、体重値を超えるような荷重値が検出されることになる。したがって、単に片足や両足を乗せるだけの動作と腿上げ動作とを判別することができる。
【0121】
右腿上げ動作は、左腿上げ動作と逆であり、左足を荷重コントローラ36に乗せ、右腿を上げた状態にする動作である。割合の条件は、100%以上であり、重心位置の条件は、−1.0〜−0.01である。
【0122】
両足下ろし動作は、図11(D)および図12(D)に示したように、両足とも地面に下ろした状態にする動作である。割合の条件は、5%以下(ほぼゼロ)である。両足が荷重コントローラ36上にないので、荷重はほぼゼロとなる。したがって、重心位置は見ないようにする。
【0123】
荷重値の体重値に対する割合と重心位置とを算出して、この動作識別テーブルを参照することで、予め登録された複数の動作のうちのいずれの動作が行われたかが特定される。
【0124】
なお、図13に示す各条件の数値は一例であって適宜変更され得る。上述のように、荷重値の割合および重心位置には、プレイヤの癖等に応じた相違が現れる。したがって、実際の運動の前に、各動作の計測テスト等を行うことによって、プレイヤごとに条件値を調整するようにしてもよい。
【0125】
図14にゲーム画面の一例を示す。画面の左右方向の中央には、プレイヤに対する動作指示のために複数のパネル400が表示されている。各パネル400には、この実施例の踏み台昇降の動作を構成する個々の動作が示されており、複数(この実施例では4つ)のパネル400が所定の順番で配列されることで、プレイヤが実行すべき一連の動作としての踏み台昇降の動作が指示されている。
【0126】
具体的には、各パネル400では、左右2つの足形が描かれており、足形の色、形状、模様等を変化させることによって、左右の足が行うべき乗り降り動作が表現される。なお、パネル400の基本の態様では、たとえば、地の色が白にされ、足形の線が灰色で描かれる。何の動作も実行する必要のない場合、この基本態様のパネル400が使用される。
【0127】
図12では、4つのパネル400a−400dによって、図11の踏み台昇降の動作が指示されている。パネル400aは、図11(A)に示す1歩目の右足を乗せる動作を指示するパネルである。たとえば右の足形が赤色にされ、これにより、乗っていない状態から右足を乗せることが表現されている。パネル400bは、図11(B)に示す2歩目の左足を乗せる動作を指示するパネルである。たとえば左の足形が赤色に着色され、かつ、右の足形の赤色が薄くされている。これにより、右足を乗せた状態から左足をさらに乗せることが表現されている。パネル400cは、図11(C)に示す3歩目の右足を下ろす動作を指示するパネルである。たとえば左の足形の赤色が薄くされ、かつ、右の足形の上に赤色の下向き矢印が描かれている。これにより、両足を乗せた状態から右足を後方に下ろすことが表現されている。パネル400dは、図11(D)に示す4歩目の左足を下ろす動作を指示するパネルである。たとえば左の足形の上に赤色の下向き矢印が描かれている。これにより、左足を乗せた状態からその左足を後方に下ろすことが表現されている。
【0128】
各パネル400は、順に画面上端から現れ画面下端に移動して消えるように構成されている。画面中央より下側の所定の位置には、枠402が固定的に配置されている。この枠402は、パネル400の移動経路上に設けられていて、枠402内で、パネル400の移動が一定時間停止されるようになっている。この枠402により、現在実行すべき動作のパネル400が指示される。つまり、画面上の複数のパネル400のうち、枠402の位置に移動して来たパネル400が現在実行すべき動作を示すことになる。
【0129】
さらに、画面には、たとえばパネル400の左右に、複数のキャラクタ404が表示されている。これらキャラクタ404は、パネル400および枠402による指示に合わせてその動作を行うように制御される。図12では、枠402内にパネル400aが移動しているので、各キャラクタ404は右足を台に乗せる動作を行っている。キャラクタ404の動きによって、パネル400で指示された動作を確認することができる。
【0130】
ゲーム装置12では、荷重コントローラ36で検出された荷重値から、体重値に対する割合と重心位置を算出し、上述の図13に示す動作識別条件テーブルに基づいて、登録された複数の動作のいずれの動作が行われたかを特定する。そして、特定された動作が、枠402によって指示された現在実行すべき動作かどうかが判定される。指示に従った動作が行われたと判断される場合には、プレイヤに得点が与えられる。
【0131】
なお、腿上げ動作を組み込んだ踏み台昇降を指示する場合には、図15に示すようなパネル400が表示される。このパネル400では、図12に示す左腿上げ動作を組み込んだ踏み台昇降が指示されている。上述の通常の踏み台昇降の動作には赤色を使用するようにしたので、腿上げに関連する動作には、異なる色、たとえば緑色が使用される。具体的には、2歩目のパネル400bは、左足の腿上げを指示するものであり、たとえば左足形の色が緑色にされる。さらに、足が浮いていることを表現するために、左足形には影が付けられている。また、3歩目のパネル400cは、腿上げした左足を下ろす動作を指示するものであり、たとえば左足形の上に緑色の下向きの矢印が描かれる。なお、1歩目のパネル400aは、図14の通常の踏み台昇降の1歩目のパネル400aと同じであり、右足を乗せる動作を指示しており、右足形が赤色にされている。また、4歩目のパネル400dは、右足を下ろす動作を指示しており、右足形の上に赤色の下向き矢印が描かれる。
【0132】
また、図14のゲーム画面では、図11の踏み台昇降を実行することをプレイヤに指示している。しかし、このゲーム装置12では、図13の動作識別条件テーブルに基づいて所定の複数の動作のうちいずれの動作が行われたかを特定することができる。したがって、画面上には、図11の通常の踏み台昇降を指示するためのパネル400(図14)と、図12の腿上げ動作を組み込んだ踏み台昇降を指示するためのパネル400(図15)の一方だけを表示して、当該表示された踏み台昇降のみをプレイヤに行わせるようにするだけでなく、たとえば、両方を同時に表示し、プレイヤにどちらか好きな方の踏み台昇降を行わせるようにすることも可能である。通常の踏み台昇降と腿上げ動作を組み込んだ踏み台昇降とでは、2歩目の動作と3歩目の動作がそれぞれ異なっているが、荷重コントローラ36の荷重値を検出し、当該検出された荷重値の体重値に対する割合と重心位置とを算出して、当該算出された割合と重心位置とに基づいて判別を行うことによって、2歩目の動作も3歩目の動作もそれぞれいずれの動作が行われたのかを特定することができる。この場合には、各動作をそれぞれ特定することができるので、それら特定された動作の履歴を記憶しておくことによって、プレイヤによって行われた一連の動作がどのような動作であったのかを特定することができる。たとえば、通常の踏み台昇降か腿上げ動作を組み込んだ踏み台昇降かを特定できるし、右足から始めた昇降か左足から始めた昇降かも特定できる。
【0133】
図13の動作識別条件テーブルに基づく動作の特定がより精度良く行われるようにするために、この実施例では、図14のような画面上の動作指示において、各動作を実行するのに適切なタイミングを示すようにしている。そして、そのタイミングに合わせて、荷重値を検出し、動作識別を行うようにしている。
【0134】
具体的には、図16に示すようなパネル400の移動の状態によって動作のタイミングが示される。上述のように、複数のパネル400は、所定の配列で画面上を上から下に移動し、かつ、枠402内で一定時間停止するように制御される。上側から移動してきたパネル400は枠402の上方で隣接した状態で一定時間停止し、それから枠402内へ移動を開始する。
【0135】
そして、移動を開始してから所定時間PSが経過したときに、パネル400は枠402内に納まって停止し、その後、所定時間TAまで停止し続ける。所定時間TAが経過すると、パネル400は再び移動を開始し、この移動により当該パネル400が枠402外へ出るとともに、次のパネル400が枠402内へ入り始めることになる。
【0136】
このようにパネル移動に停止期間を設けることによって、各動作の指示の開始および終了をプレイヤに明確に示すことができる。パネル400の指示する動作は、当該パネル400が枠402内へ入り始めたときから当該パネル400が枠402内から出始めるときまでに実行されることが求められる。このように、動作判定には制限時間が設けられており、この制限時間は正否判定時間TAとして予め適宜な値に決められる。正否判定時間(制限時間)TAは、たとえば、足を乗せたり下ろしたりする動作をどのようなテンポでプレイヤに行わせるかに応じて適宜な値に設定される。
【0137】
パネル停止時間PSは、たとえば足を乗せたり下ろしたりする動作に適切なタイミングとなるように、実験により予め適宜な値に決められる。たとえば、乗せたり下ろしたりするために動かした足が荷重コントローラ36または地面(床)にちょうど接触するようなタイミングや、腿上げのために足を振り上げ始めるようなタイミングを採用してよい。これにより、パネル400が移動している間に足を離して新たな場所に着け、パネル400が停止している間に足を完全に着けて当該動作を完了しつつ次に移行するために体勢を整えるような動きや、パネル400が移動している間に体を荷重コントローラ36の方へ移動しつつ腿を振り上げる体勢を整え、パネルが停止している間に腿上げ動作を完了するような動き等を、パネル400の移動状態に合わせて行うことが可能になる。
【0138】
そして、動作の識別を、動作の指示が開始されてから一定時間すなわちパネル停止時間PSが経過してから行う。このようにすれば、プレイヤが当該動作を完了した状態の荷重値を検出し、当該適切な荷重値に基づいて動作識別を行うことができるので、識別の精度をより良くすることができる。
【0139】
なお、制限時間TAが経過するまでに、動作が特定できなかった場合や、特定された動作が指示動作ではなかった場合等には、指示動作の実行に失敗したことが判定される。失敗判定の場合、プレイヤには得点が与えられない。
【0140】
一方、制限時間TAが経過するまでに指示動作が行われたことが判別されれば、当該指示動作の実行に成功したことが判定されて、得点が与えられる。
【0141】
図17にはゲーム装置12のメモリマップの一例が示される。メモリマップはプログラム記憶領域500およびデータ記憶領域502を含む。プログラムとデータは、光ディスク18から一度に全部または必要に応じて部分的に、かつ順次的に読み出され、外部メインメモリ46または内部メインメモリ42eに記憶される。また、データ記憶領域502には、処理によって生成または取得されたデータも記憶される。プログラムは、このゲームシステム10を荷重検出装置として機能させるための荷重検出プログラムである。
【0142】
なお、図17にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶される。たとえば、音声、効果音、音楽などの音を出力するためのサウンドデータ、画面を生成するための画像データ、音出力プログラム、画像生成表示プログラムなどが、光ディスク18から読み出されてデータ記憶領域502またはプログラム記憶領域500に記憶される。なお、本実施例においては、プログラムとデータは光ディスク18から読み出されるが、別の実施例においては、たとえばゲーム装置12に内蔵されるフラッシュメモリ44等の不揮発的な記憶媒体に予め記憶したプログラムやデータを読み出して、外部メインメモリ46または内部メインメモリ42eに記憶するようにしてもよい。その際さらに、ゲーム装置12の無線通信モジュール50または拡張コネクタ60に接続される通信モジュール等を用いて、ネットワーク経由でダウンロードしたプログラム等を当該記憶媒体に記憶しておくようにしてもよい。
【0143】
記憶領域504には荷重値検出プログラムが記憶される。このプログラムは、荷重コントローラ36の荷重値を検出するためのものである。たとえば、荷重が必要なときに荷重取得命令が無線コントローラモジュール52を介して荷重コントローラ36に送信され、これに応じて無線コントローラモジュール52で受信された荷重コントローラ36のデータから、各荷重センサ36bの荷重値が検出される。動作判別を行う際には、たとえば1フレーム(1/60秒)の一定時間ごとに荷重値が取得される。
【0144】
記憶領域506には動作指示プログラムが記憶される。このプログラムは、プレイヤに実行すべき動作を指示するためのものである。一連の動作を指示するための複数のパネル400の移動および停止が、上述のように、制限時間TAおよびパネル停止時間PS等に基づいて制御される。
【0145】
記憶領域508には経過時間計測プログラムが記憶される。このプログラムは、動作の指示があってから経過した時間を計測するためのものである。具体的には、パネル400が枠402の上方で隣接する位置から枠402内への移動を開始したときが、当該パネル400に対応する動作が指示されたときであるから、パネル400の枠402内への移動を開始したときから時間がカウントされる。
【0146】
記憶領域510には荷重割合算出プログラムが記憶される。このプログラムは、検出された荷重値の体重値に対する割合を算出するためのものである。各荷重センサ36bの荷重値を合計し、当該合計値を体重値で割ることによって、この割合が算出される。
【0147】
記憶領域512には重心位置算出プログラムが記憶される。このプログラムは、検出された荷重値の重心位置を算出するためのものである。重心位置は、上述の数1または数2に従って算出される。
【0148】
記憶領域514には動作判別プログラムが記憶される。このプログラムは、算出された荷重値の割合および重心位置ならびに動作識別テーブルに基づいて、所定の複数の動作のうちのいずれの動作が行われたかを特定するためのものである。
【0149】
データ記憶領域502の記憶領域516はプレイヤの体重値が記憶される。体重値は、プレイヤが静止状態で荷重コントローラ36の上に乗っているときに検出されるすべての荷重センサ36bの荷重値を合計することによって算出される。なお、体重値の測定の際には、プレイヤに荷重コントローラ36の上に両足で静かに乗るように指示する画面を表示してよい。
【0150】
記憶領域518には時間カウンタが記憶される。時間カウンタは、各動作の指示が行われてからの経過時間を計測するためのカウンタであり、この実施例では一定時間(1フレーム)ごとにカウントが行われる。
【0151】
記憶領域520には、経過時間計測プログラムによって計測された経過時間が記憶される。時間カウンタの値に基づいて、踏み台昇降の各動作の指示があったときからの経過時間が算出されて記憶される。
【0152】
記憶領域522には荷重検出プログラムによって検出された各荷重センサ36bの荷重値が記憶される。
【0153】
記憶領域524には荷重割合算出プログラムによって算出された荷重値の体重値に対する割合が記憶される。記憶領域526には重心位置算出プログラムによって算出された重心位置が記憶される。
【0154】
記憶領域528には光ディスク18等から読み出された動作識別条件テーブルが記憶される。動作識別条件テーブルには、図13に示したように、所定の複数の動作を判別するための条件が記憶されている。具体的には、荷重値の体重値に対する割合に関する条件と、重心位置に関する条件とが、各動作の識別情報に対応付けられている。動作判別の際には、このテーブルを参照して、割合と重心位置の両条件を満足する動作を検出することによって、プレイヤによって行われた動作が特定される。
【0155】
記憶領域530には、動作判別プログラムによって特定された動作の識別情報が記憶される。なお、動作を特定することができなかった場合には、特定不可を示すデータが記憶される。
【0156】
記憶領域532には、指示パネル400が停止する時間を示すパネル停止時間PSが記憶される。記憶領域534には、現在実行すべき動作の判定の制限時間TAが記憶される。パネル停止時間PSおよび制限時間TAは光ディスク18から読み出される。
【0157】
記憶領域536には、ゲーム結果が記憶される。ゲーム結果としては、プレイヤの得点、各動作の評価(OKまたは失敗)などが記憶される。
【0158】
図18には、踏み台昇降を行う際のゲーム装置12の動作の一例が示される。ステップS1では、CPU40は体重値測定処理を実行する。プレイヤが静止状態で荷重コントローラ36に乗ったときの各荷重センサ36bの荷重値を検出する。具体的には、CPU40は、荷重取得命令を無線コントローラモジュール52等を介して荷重コントローラ36に送信する。これに応じて、荷重コントローラ36のマイコン100は各荷重センサ36bの荷重値を検出し、各荷重値を含む入力データを無線モジュール106等を介してゲーム装置12に送信する。CPU40は、無線コントローラモジュール52等を介して各荷重値を含む入力データを受信し、各荷重値を検出して記憶領域522に記憶する。そして、すべての荷重センサ36bの荷重値を合計することによって体重値を算出する。なお、モニタ34には、プレイヤに対して荷重コントローラ36上に両足で乗るように指示する画面を表示してよい。
【0159】
続くステップS3で、CPU40は、体重値を外部メインメモリ46に書き込む。これによって記憶領域516にプレイヤの体重値が記憶される。
【0160】
そして、ステップS5で、CPU40は指示パネル400を表示する。具体的には、CPU40は、システムLSI42のGPU42b等を用いて、指示パネル400を含む図14に示すようなゲーム画面を生成してモニタ34に表示する。なお、上述のように、踏み台昇降の各動作を指示する各パネル400は、所定の順番で画面中央の上端の所定の初期位置に表示されて、下方の枠402に向けて一定の停止時間を挟みながら移動される。各パネル400の動作が現在実行すべき動作となってからの移動の制御は、動作判別処理で開始されるので、このステップS5では、最初の指示パネル400が枠402の上側で隣接して停止するまで処理が行われる。
【0161】
続いて、ステップS7で、CPU40は、動作判別処理を実行する。この動作判別処理により、プレイヤが荷重コントローラ36に対して行った動作が特定される。動作判別処理におけるCPU40の動作の一例が図19に示される。
【0162】
動作判別処理を開始すると、ステップS31で、CPU40は、動作指示プログラムに従って指示パネル400の移動処理を開始する。このステップS31で開始されるパネル400の移動処理は、図19の他の処理と並列的に実行される。このパネル400の移動処理によって、現在実行すべき動作を指示するパネル400が枠402の上方の隣接位置から枠402内に移動される。なお、移動処理を開始するときに枠402の上方の隣接位置に存在しているパネル400に対応する動作が現在実行すべき動作である。この図19では省略しているが、たとえば移動処理を開始する前に、枠402の上方の隣接位置に存在するパネル400が、予め記憶された当該隣接位置の座標データと各パネル400の現在の位置を示す座標データを照合することによって検出され、当該検出されたパネル400に対応する動作の識別情報が、現在実行すべき動作の識別情報として検出されて記憶される。また、移動処理では、図16に示したように、現在実行すべき動作に対応するパネル400は、移動を開始してから所定時間PSが経過したときに枠402内に納まって停止し、移動を開始してから所定時間TAが経過するときまで枠402内で停止し続けるように制御される。
【0163】
続くステップS33−S49の処理は、ステップS47で動作が特定されたと判断されるまで、またはステップS49で動作が制限時間内に行われなかったと判断されるまで、一定時間(1フレーム)ごとに実行される。
【0164】
ステップS33では、CPU40は時間カウント処理を実行する。たとえば、時間カウンタをインクリメントすることによって、記憶領域518の時間カウンタの値を更新する。この時間カウント処理によって、動作指示が行われたときからの経過時間を計測することが可能になる。
【0165】
続くステップS35で、CPU40は、指示パネル400の移動開始からの経過時間を、記憶領域518の時間カウンタの値に基づいて検出して記憶領域520に記憶する。
【0166】
そして、ステップS37で、CPU40は、経過時間がパネル停止時間PS以上になったか否かを判断する。すなわち、足を台に乗せたり下ろしたりするような動作に適切なタイミングに設定されているパネル停止時間PSを用いて、動作の判別に適切なタイミングになったかどうかを判断する。これにより、たとえば動作の完了前の状態で検出された荷重値を元に動作の判別が行われてしまうことを回避し、識別精度をよりよくすることができる。ステップS37で“NO”の場合には、動作の判別タイミングに到達していないので、処理はステップS33に戻る。
【0167】
一方、ステップS37で“YES”の場合、つまり、動作の判別タイミングになったと判断される場合には、CPU40は、ステップS39で荷重値取得処理を実行する。具体的には、CPU40は、無線コントローラモジュール52等を介して荷重取得命令を荷重コントローラ36に送信する。これに応じて、検出された荷重値を含む入力データが荷重コントローラ36から送信されるので、無線コントローラモジュール52で受信した入力データから各荷重センサ36bの荷重値を検出して記憶領域522に記憶する。
【0168】
続くステップS41で、CPU40は、検出された荷重値の体重値に対する割合を算出する。具体的には、各荷重センサ36bの荷重値を合計し、当該合計値の体重値に対する割合を算出して、記憶領域524に記憶する。
【0169】
また、ステップS43で、CPU40は、重心位置を算出する。具体的には、検出された各荷重センサ36bの荷重値に基づいて、上述の数1に従って重心位置を算出し、記憶領域526に記憶する。
【0170】
そして、ステップS45で、CPU40は、記憶領域528の動作識別条件テーブルに基づいて、割合と重心位置の両条件を満足する動作を特定する。具体的には、記憶領域524の割合が動作識別条件テーブルの割合の条件を満足する動作を検出するとともに、記憶領域526の重心位置が動作識別条件テーブルの重心位置の条件を満足する動作を検出する。そして、両方の条件で検出された動作を検出する。なお、動作識別条件テーブルに登録されたすべての動作を対象として、特定処理を行ってもよいし、動作識別条件テーブルに登録された動作のうち、画面上に表示されている複数のパネル400の動作を対象として、特定処理を行ってもよい。
【0171】
続いて、ステップS47で、CPU40は、動作が特定されたか否かを判断する。ステップS47で“NO”の場合、つまり、割合と重心位置の両条件ともに満足された動作が存在しない場合には、ステップS49で、CPU40は、記憶領域520の経過時間を参照して、所定時間TAが経過したか否かを判断する。ステップS49で“NO”の場合には、つまり、経過時間が制限時間TA内である場合には、処理はステップS33に戻る。
【0172】
一方、ステップS47で“YES”の場合、つまり、割合と重心位置の両条件とも満足する動作が検出された場合には、CPU40は、ステップS51で、特定された動作の識別情報を記憶領域530に記憶する。
【0173】
また、ステップS49で“YES”の場合、つまり、制限時間TAを経過しても動作を特定することができなかった場合には、CPU40はステップS53で特定不可を示すデータを記憶領域530に記憶する。ステップS51またはステップS53を終了すると、この動作判別処理を終了して、処理は図18のステップS9へ戻る。
【0174】
図18のステップS9では、CPU40は、特定された動作が、現在実行すべき動作であるか否かを判断する。現在実行すべき動作は、枠402内に存在するパネル400で指示される動作であり、図19のステップS31で開始されて並列的に実行されているパネル400の移動処理において特定され得る。
【0175】
ステップS9で“YES”の場合、つまり、プレイヤが指示通りの動作を行った場合には、CPU40は、ステップS11でOK判定処理を実行する。具体的には、プレイヤに所定の点数が与えられ、ゲーム結果記憶領域536のプレイヤの得点データに加算される。また、現在実行すべき動作についてOK判定を示す評価データも記憶領域536に記憶される。また、OKの文字等によって動作がOKであったことを画面上に表示するようにしてもよい。さらに、所定の音をスピーカ34aから出力して、指示に従った正解の動作であったことを報知するようにしてもよい。
【0176】
一方、ステップS9で“NO”の場合、つまり、現在実行すべき動作とは異なる動作が特定された場合や特定不可であった場合には、CPU40は、ステップS13で失敗判定処理を実行する。具体的には、プレイヤに得点が与えられない。また、現在実行すべき動作について失敗判定を示す評価データがゲーム結果記憶領域536に記憶される。また、失敗の文字等によって動作に失敗したことを画面上に表示するようにしてもよい。
【0177】
続くステップS15で、CPU40は、ゲーム終了であるか否かを判断する。たとえば、踏み台昇降を所定の時間または所定の回数行ったかどうかを判断する。あるいは、指示された動作の実行に失敗したかどうかを判断する。
【0178】
ステップS15で“NO”の場合、処理はステップS7に戻って、踏み台昇降の次の動作に関して、動作判別処理を行う。なお、上述の図16に示したように、指示パネル400は枠402内への移動を開始してから所定時間PSが経過したときに停止し、さらに所定時間TAが経過したときに、当該指示パネル400は枠402外に移動を開始する。これと同時に、次の動作の指示パネル400が枠402内へ移動を開始することとなる。つまり、前のパネル400の移動開始から所定時間TAが経過したときに、次のパネル400の移動が開始されてプレイヤに当該動作が指示される。したがって、動作判別処理の実行は、前の指示パネル400の移動開始から所定時間TAが経過するまで待機される。
【0179】
一方、ステップS15でゲーム終了条件が満足されたと判断される場合には、ステップS17で、CPU40はゲーム終了処理を実行して、踏み台昇降のゲーム処理を終了する。たとえば、踏み台昇降の各動作の成功により獲得された得点の合計を計算したり、当該得点や得点に応じた評価結果等を画面に表示したりする。
【0180】
この実施例によれば、荷重コントローラ36で検出される荷重値の体重値に対する割合と重心位置とに基づいて、予め定められた複数の動作のうちのいずれの動作が行われたかを特定するようにしたので、荷重コントローラ36に対するプレイヤの動作を判別することができる。
【0181】
なお、上述の実施例では、動作の指示が行われてからの経過時間が所定の時間(パネル停止時間PS)以上になった後に荷重値を検出し、当該適切なタイミングで検出された荷重値に基づいて精度良く動作を判別するようにしていた。しかし、他の実施例では、ステップS37の処理を行わないようにして、動作の指示が行われてから所定時間(たとえば制限時間TA)が経過するまで単位時間(例えば、1フレーム)毎に荷重値を検出し、単位時間毎に、検出された荷重値に基づいて動作を判別するようにしてもよい。たとえば1フレーム毎の検出を行う場合には、各動作を完了していないときの荷重値も検出されることとなるが、動作ごとの識別条件をそれぞれ重複しないように規定しておくことによって、正確に動作を特定することができる。また、検出毎の判別ではなく、所定時間にわたって検出される複数の荷重値に基づいて判別を行うようにしてもよく、その場合、複数の荷重値を総合的に判別することによって判別の精度を確保することが可能である。
【0182】
また、上述の各実施例では、荷重値の体重値に対する割合と重心位置の両条件を満足する動作を特定し、当該動作が現在実行すべき動作(指示された動作)であると判断される場合に、OK判定をするようにしたが、他の実施例では、過去の動作がOK判定されたかどうか、つまり、プレイヤが過去の動作を適切に行っていたかどうかをさらに判断するようにしてもよい。この場合には、プレイヤによる過去の動作の実行の適否に応じて、現在の動作の実行の適否を判断することができる。たとえば過去の動作の実行の成功が必要とされる動作等の判別を適切に行うことができる。
【0183】
具体的には、ステップS9で“YES”の場合に、過去の動作についてのゲーム結果データを参照して、OK判定を示す評価データが記憶されているか否かを判断するようにしてよく、この判断で“YES”の場合にステップS11のOK判定処理を行い、“NO”の場合にステップS13の失敗判定処理を行う。たとえば、過去3回の動作のうちで少なくとも1回以上OK判定がなされていれば、現在の動作についてOK判定を行い、1回もOK判定がなされていなければ失敗判定をするようにしてもよい。上述の踏み台昇降のような一連の動作を構成する動作の場合には、たとえば過去の少なくとも1つの動作、所定の動作、またはすべての動作等についてOK判定が行われていることが条件とされてよい。具体的には、上述の踏み台昇降の場合、4歩目の両足を下ろす動作については、1〜3歩目のいずれかの動作がOK判定されたことを、OK判定の条件としてもよい。
【0184】
また、上述の各実施例では、荷重値の体重値に対する割合および重心位置に基づく動作判別の実施例として、予め定められた複数の動作のうちのいずれの動作が実行されたかを、荷重値の体重値に対する割合と重心位置とに基づいて特定するようにしていた。しかし、他の実施例では、所定の動作が行われたかどうかを、荷重値の体重値と重心位置とに基づいて判別するようにしてもよい。たとえば、上述の各実施例では、図14に示したように現在実行すべき動作の適切なタイミングを示すためにパネル400および枠402を画面上に表示し、パネル400の移動および停止を制御するようにしているので、枠402で指示されたパネル400に対応する動作について、荷重値の体重値に対する割合と重心位置の両条件が満足されたか否かを判定するようにしてよい。これによって、当該指示された動作がプレイヤによって実行されたか否かを判別することができる。
【0185】
この実施例の場合のゲーム装置12のCPU40の動作の一例が図20に示される。図20と上述の図18との相違点は、ステップS9−S13が削除された点と、ステップS7の動作判別処理における動作が変更されている点である。図20のステップS101の変更された動作判別処理の詳細は図21に示される。なお、図18のステップS11とS13の各判定処理は、ステップS101の動作判別処理内に組み入れられている。図20および図21では、図18の処理と同様の処理には同一の参照符号を付しており、ここではそれらの詳細な説明を省略する。
【0186】
図21の動作判別処理を開始すると、ステップS111で、CPU40は、現在実行すべき動作を特定する。枠402の上方の隣接位置に存在しているパネル400に対応する動作が現在実行すべき動作である。たとえば、上述のように、枠402の上方の隣接位置に存在するパネル400が、予め記憶された当該隣接位置の座標データと各パネル400の現在の位置を示す座標データを照合することによって検出され、当該検出されたパネル400に対応する動作の識別情報が、現在実行すべき動作の識別情報として検出されて記憶される。なお、ステップS31で開始される移動処理では、上述のように、現在実行すべき動作を指示するパネル400を含む複数のパネル400の移動が制御される。現在実行すべき動作を指示するパネル400については、当該パネル400は枠402内へ移動を開始し、移動開始から所定時間PSが経過したときに枠402内に納まって停止し、移動開始してから所定時間TAが経過するときまで枠402内で停止し続けるように制御される。
【0187】
ステップS41で荷重値の体重値に対する割合を算出してステップS43で重心位置を算出した後、CPU40は、ステップS113で、現在実行すべき動作についての割合と重心位置の両条件が満足されたか否かを判断する。具体的には、現在実行すべき動作の識別情報はステップS111で検出されているので、当該識別情報に対応する割合の条件と重心の条件とを動作識別条件テーブルから読み出す。そして、ステップS41で算出された割合が、読み出した割合の条件を満足し、かつ、ステップS43で算出された重心位置が、読み出した重心位置の条件を満足するかを判断する。
【0188】
ステップS113で“YES”の場合、つまり、現在実行すべき動作がプレイヤによって実行されたと判別された場合には、CPU40は、ステップS11でOK判定処理を実行する。なお、このOK判定処理は図18のステップS11と同様である。
【0189】
一方、ステップS113で“NO”の場合、つまり、現在実行すべき動作がプレイヤによって実行されたとは判別できない場合には、CPU40はステップS49でステップS31における移動開始から所定時間TAが経過したか否かを判断する。ステップS49で“YES”の場合、つまり、制限時間TAを経過しても現在実行すべき動作がプレイヤによって実行されなかった場合には、CPU40は、ステップS13で失敗判定処理を実行する。なお、この失敗判定処理は図18のステップS13と同様である。ステップS11またはS13を終了すると、この図21の動作判別処理を終了して、処理は図20のステップS15に戻る。
【0190】
なお、この図20および図21の実施例においても、上述のように、動作の指示が行われてから所定時間(たとえば制限時間TA)が経過するまで単位時間(例えば、1フレーム)毎に荷重値を検出し、単位時間毎に、検出された荷重値に基づいて動作を判別するようにしてもよい。この場合、上述の図18および図19の実施例と異なり、所定の動作(指示された動作)が行われたかどうかを判別するので、動作ごとの識別条件には、他の動作の条件との重複を許容することが可能になり、たとえば個人の癖等を考慮して条件を広く設定することが可能である。
【0191】
さらに、この図20および図21の実施例においても、上述のように、割合と重心位置の両条件のほかに、過去の動作がOK判定されたかどうか、つまり、プレイヤが過去の動作を適切に行っていたかどうかをさらに判断するようにしてもよい。具体的には、ステップS113で“YES”の場合に、過去の動作についてのゲーム結果データを参照して、OK判定を示す評価データが記憶されているか否かを判断するようにしてよく、この判断で“YES”の場合にステップS11のOK判定処理を行い、“NO”の場合にステップS13の失敗判定処理を行う。判定対象の動作や必要なOK判定の数等の条件は、上述のように、適宜に設定され得る。たとえば、踏み台昇降の4歩目の動作については、4歩目の動作の判定タイミングでは、割合の条件に基づいて両足が下ろされた状態であることを判別するようにしている。したがって、過去の1−3歩目の動作の実行の適否をさらに判断することによって、プレイヤが一度も荷重コントローラ36に乗っていなかったにも関わらず得点が与えられてしまうのを防止することができる。
【図面の簡単な説明】
【0192】
【図1】図1はこの発明の一実施例のゲームシステムを示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成の一例を示すブロック図である。
【図3】図3は図1に示すコントローラの外観を示す図解図である。
【図4】図4は図3に示すコントローラの電気的な構成の一例を示すブロック図である。
【図5】図5は図1に示す荷重コントローラを示す斜視図である。
【図6】図6は図5に示す荷重コントローラのVI−VI断面を示す図解図である。
【図7】図7は図5に示す荷重コントローラの電気的な構成の一例を示すブロック図である。
【図8】図8はコントローラおよび荷重コントローラを用いてゲームプレイするときの状態を概説する図解図である。
【図9】図9は図1に示すマーカ部およびコントローラの視野角を説明するための図解図である。
【図10】図10は対象画像を含む撮像画像の一例を示す図解図である。
【図11】図11は踏み台昇降の各動作の一例を示す図解図である。
【図12】図12は腿上げ動作を組み込んだ踏み台昇降の各動作の一例を示す図解図である。
【図13】図13は動作識別条件テーブルを示す図解図である。
【図14】図14はゲーム画面の一例を示す図解図である。
【図15】図15は図12の腿上げ動作を組み込んだ踏み台昇降を指示するパネルの一例を示す図解図である。
【図16】図16は指示パネルの移動の様子を示す図解図である。
【図17】図17はゲーム装置のメモリマップを示す図解図である。
【図18】図18はゲーム装置の動作の一例を示すフロー図である。
【図19】図19は図18に示す動作判別処理の動作の一例を示すフロー図である。
【図20】図20は他の実施例のゲーム装置の動作の一例を示すフロー図である。
【図21】図21は図20に示す動作判別処理の動作の一例を示すフロー図である。
【符号の説明】
【0193】
10 …ゲームシステム(荷重検出装置)
12 …ゲーム装置
18 …光ディスク
22 …コントローラ
34 …モニタ
34a …スピーカ
36 …荷重コントローラ
36b …ロードセル(荷重センサ)
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 …拡張コネクタ
100 …マイコン
102 …ADコンバータ
104 …DC−DCコンバータ
106 …無線モジュール
108 …増幅器
400 …パネル
402 …枠

【特許請求の範囲】
【請求項1】
間隔を置いた2以上の荷重センサを有しプレイヤの足が乗せられる支持台を備える荷重検出装置のコンピュータにおいて実行される荷重検出プログラムであって、
前記荷重センサによって測定される前記支持台にかかる荷重値を検出する荷重値検出ステップ、
前記荷重検出ステップによって検出された前記荷重値の前記プレイヤの体重値に対する割合を算出する割合算出ステップ、
前記荷重検出ステップによって検出された前記荷重値の重心位置を算出する重心位置算出ステップ、および
前記割合と前記重心位置とに基づいて、前記支持台に対して前記プレイヤが行った動作を判別する動作判別ステップを前記コンピュータに実行させる、荷重検出プログラム。
【請求項2】
前記動作判別ステップは、前記割合と前記重心位置とに基づいて、所定の動作が行われたか否かを判別する、請求項1記載の荷重検出プログラム。
【請求項3】
前記動作判別ステップは、過去の前記動作判別ステップで過去の前記所定の動作が行われたと判断されたことを、判別条件としてさらに判断する、請求項2記載の荷重検出プログラム。
【請求項4】
複数の動作のうちのいずれか1つの動作を前記所定の動作として行うことを前記プレイヤに指示する指示ステップ、および
前記指示ステップで指示が行われてからの経過時間を計測する経過時間計測ステップを前記コンピュータにさらに実行させ、
前記動作判別ステップは、前記経過時間が所定時間内にある間、前記指示ステップで指示された動作が行われたか否か判別する、請求項2記載の荷重検出プログラム。
【請求項5】
前記動作判別ステップは、前記割合と前記重心位置とに基づいて、予め定められた複数の動作のうちのいずれの動作が行われたかを特定する、請求項1記載の荷重検出プログラム。
【請求項6】
間隔を置いた2以上の荷重センサを有しプレイヤの足が乗せられる支持台を備える荷重検出装置であって、
前記荷重センサによって測定される前記支持台にかかる荷重値を検出する荷重値検出手段、
前記荷重検出手段によって検出された前記荷重値の前記プレイヤの体重値に対する割合を算出する割合算出手段、
前記荷重検出手段によって検出された前記荷重値の重心位置を算出する重心位置算出手段、および
前記割合と前記重心位置とに基づいて、前記支持台に対して前記プレイヤが行った動作を判別する動作判別手段を備える、荷重検出装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2009−92519(P2009−92519A)
【公開日】平成21年4月30日(2009.4.30)
【国際特許分類】
【出願番号】特願2007−263804(P2007−263804)
【出願日】平成19年10月9日(2007.10.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】