(57)【特許請求の範囲】
【請求項１】
所定の筐体に加わる少なくとも１軸方向の加速度を検出する加速度センサから出力される加速度データを用いた処理を実行する情報処理装置のコンピュータに実行させる情報処理プログラムであって、
前記コンピュータを、
前記加速度データを繰り返し取得する加速度データ取得手段と、
前記加速度データ取得手段が取得した加速度データが示す加速度の大きさおよび方向を示す加速度ベクトルを順次累積して、累積ベクトルを算出する累積ベクトル算出手段と、
前記累積ベクトル算出手段が算出する累積ベクトルに追従する追従ベクトルであって、前記追従ベクトルに、前記累積ベクトルから当該追従ベクトルを減じたベクトルを、所定の割合で小さくしてから加算したベクトルを、新たな追従ベクトルとして更新することで前記累積ベクトルに追従する追従ベクトルを算出する追従ベクトル算出手段と、
前記累積ベクトルと前記追従ベクトルとの差分を差分ベクトルとして算出する差分ベクトル算出手段と、
前記差分ベクトルにしたがって決められる値を用いて表示装置上の位置を指定し、当該位置を用いて所定の処理を行う処理手段として機能させる、情報処理プログラム。
【請求項２】
前記処理手段は、前記差分ベクトルの各軸成分値を前記表示装置上の位置として指定し、当該位置を用いて所定の処理を行う、請求項１に記載の情報処理プログラム。
【請求項３】
前記差分ベクトル算出手段が算出した前記差分ベクトルの各軸成分値を、それぞれ順次累積して差分累積値を算出する差分累積値算出手段として、さらに前記コンピュータを機能させ、
前記処理手段は、前記差分累積値算出手段が算出した差分累積値を前記表示装置上の位置として指定し、当該位置を用いて所定の処理を行う、請求項１に記載の情報処理プログラム。
【請求項４】
前記累積ベクトル算出手段は、前記累積ベクトルに前記加速度ベクトルを加算する前または後に逐次前記累積ベクトルを減衰させる減衰処理手段を含む、請求項２または３に記載の情報処理プログラム。
【請求項５】
前記処理手段は、前記差分ベクトル算出手段が算出した差分ベクトルの大きさが所定の閾値を超えたとき、当該差分ベクトルの各軸成分値を前記表示装置上の位置として指定し、当該位置を用いて所定の処理を行う、請求項２に記載の情報処理プログラム。
【請求項６】
前記差分累積値算出手段は、前記差分ベクトル算出手段が算出した差分ベクトルの大きさが所定の閾値を超えたとき、当該差分ベクトルの各軸成分値を、それぞれ順次累積して前記差分累積値を算出する、請求項３に記載の情報処理プログラム。
【請求項７】
前記加速度センサは、検出する加速度の大きさが所定の測定可能範囲内で検出可能であり、
前記情報処理プログラムは、
前記加速度データ取得手段が取得した加速度データが示す加速度の大きさが前記測定可能範囲内の値であるとき、前記加速度データ取得手段が取得した加速度データを用いて、加速度の変化量を示す変化量ベクトルを算出する変化量ベクトル算出手段と、
前記加速度データ取得手段が取得した加速度データが示す加速度の大きさが前記測定可能範囲を超える値であるとき、前回算出された変化量ベクトルから所定量減じることによって新たな変化量ベクトルを算出し、前記累積ベクトル算出手段が前回用いた加速度ベクトルに当該新たな変化量ベクトルを加算して予測加速度ベクトルを算出する予測加速度ベクトル算出手段として、さらに前記コンピュータを機能させ、
前記加速度データ取得手段が取得した加速度データが示す加速度の大きさおよび方向を示す加速度ベクトルの大きさが前記測定可能範囲を超える値であるとき、前記累積ベクトル算出手段は、前記累積ベクトルに前記予測加速度ベクトルを累積して新たな累積ベクトルを算出する、請求項２または３に記載の情報処理プログラム。
【請求項８】
前記処理手段が行う所定の処理は、前記表示装置上の位置に対応する、当該表示装置上に表示される仮想世界における位置に所定のオブジェクトを配置し、当該位置の移動に応じて当該オブジェクトを仮想世界で移動させる処理である、請求項２または３に記載の情報処理プログラム。
【請求項９】
前記処理手段は、前記差分ベクトルの各軸成分値を、前記表示装置上に表示される仮想世界に設定した座標系の各座標値にそれぞれ対応させることによって前記表示装置上の位置として指定し、
前記処理手段は、所定の条件を満たすとき、仮想世界に設定された前記座標系の原点を当該仮想世界において移動させる、請求項２に記載の情報処理プログラム。
【請求項１０】
前記加速度データ取得手段は、第１および第２の筐体によって構成される入力装置において、当該第１および第２の筐体それぞれに搭載された第１および第２の加速度センサから出力される第１および第２の加速度データをそれぞれ繰り返し取得し、
前記累積ベクトル算出手段は、前記第１の加速度データが示す加速度の大きさおよび方向を示す第１の加速度ベクトルおよび前記第２の加速度データが示す加速度の大きさおよび方向を示す第２の加速度ベクトルを順次それぞれ累積して、第１の累積ベクトルおよび第２の累積ベクトルをそれぞれ算出し、
前記追従ベクトル算出手段は、前記第１の累積ベクトルに追従する第１の追従ベクトルであって、前記第１の追従ベクトルに、前記第１の累積ベクトルから当該第１の追従ベクトルを減じたベクトルを、所定の割合で小さくしてから加算したベクトルを、新たな第１の追従ベクトルとして更新することで前記第１の累積ベクトルに追従する第１の追従ベクトルを算出し、前記第２の累積ベクトルに追従する第２の追従ベクトルであって、前記第２の追従ベクトルに、前記第２の累積ベクトルから当該第２の追従ベクトルを減じたベクトルを、所定の割合で小さくしてから加算したベクトルを、新たな第２の追従ベクトルとして更新することで前記第２の累積ベクトルに追従する第２の追従ベクトルを算出し、
前記差分ベクトル算出手段は、前記第１の累積ベクトルと前記第１の追従ベクトルとの差分を第１の差分ベクトルとして算出し、前記第２の累積ベクトルと前記第２の追従ベクトルとの差分を第２の差分ベクトルとして算出し、
前記処理手段は、前記第１の差分ベクトルの各軸成分値を、前記表示装置上に表示される仮想世界に設定した第１の座標系の各座標値にそれぞれ対応させることによって第１の位置を指定し、前記第２の差分ベクトルの各軸成分値を、前記表示装置上に表示される仮想世界に設定した前記第１の座標系とは異なる第２の座標系の各座標値にそれぞれ対応させることによって第２の位置を指定し、
前記処理手段が行う所定の処理は、前記第１の位置に第１のオブジェクトを配置し、前記第２の位置に第２のオブジェクトを配置して、当該第１の位置および第２の位置の移動に応じてそれぞれのオブジェクトを仮想世界で移動させる処理である、請求項２に記載の情報処理プログラム。
【請求項１１】
前記筐体は、ユーザが押下することに応じて所定の操作データを出力する操作ボタンが設けられ、
前記操作データを繰り返し取得する操作データ取得手段として、さらに前記コンピュータを機能させ、
前記差分累積値算出手段は、所定の操作ボタンが押下されたことを示す前記操作データが取得されている期間中にのみ、前記差分ベクトルの各軸成分値を、それぞれ順次累積する、請求項３に記載の情報処理プログラム。
【請求項１２】
所定の筐体に加わる少なくとも１軸方向の加速度を検出する加速度センサから出力される加速度データを用いた処理を実行する情報処理装置であって、
前記加速度データを繰り返し取得する加速度データ取得手段と、
前記加速度データ取得手段が取得した加速度データが示す加速度の大きさおよび方向を示す加速度ベクトルを順次累積して、累積ベクトルを算出する累積ベクトル算出手段と、
前記累積ベクトル算出手段が算出する累積ベクトルに追従する追従ベクトルであって、前記追従ベクトルに、前記累積ベクトルから当該追従ベクトルを減じたベクトルを、所定の割合で小さくしてから加算したベクトルを、新たな追従ベクトルとして更新することで前記累積ベクトルに追従する追従ベクトルを算出する追従ベクトル算出手段と、
前記累積ベクトルと前記追従ベクトルとの差分を差分ベクトルとして算出する差分ベクトル算出手段と、
前記差分ベクトルにしたがって決められる値を用いて表示装置上の位置を指定し、当該位置を用いて所定の処理を行う処理手段とを備える、情報処理装置。
【請求項１３】
所定の筐体に加わる少なくとも１軸方向の加速度を検出する加速度センサから出力される加速度データを用いた処理を実行する情報処理システムであって、
前記加速度データを繰り返し取得する加速度データ取得手段と、
前記加速度データ取得手段が取得した加速度データが示す加速度の大きさおよび方向を示す加速度ベクトルを順次累積して、累積ベクトルを算出する累積ベクトル算出手段と、
前記累積ベクトル算出手段が算出する累積ベクトルに追従する追従ベクトルであって、前記追従ベクトルに、前記累積ベクトルから当該追従ベクトルを減じたベクトルを、所定の割合で小さくしてから加算したベクトルを、新たな追従ベクトルとして更新することで前記累積ベクトルに追従する追従ベクトルを算出する追従ベクトル算出手段と、
前記累積ベクトルと前記追従ベクトルとの差分を差分ベクトルとして算出する差分ベクトル算出手段と、
前記差分ベクトルにしたがって決められる値を用いて表示装置上の位置を指定し、当該位置を用いて所定の処理を行う処理手段とを備える、情報処理システム。
【請求項１４】
所定の筐体に加わる少なくとも１軸方向の加速度を検出する加速度センサから出力される加速度データを用いた処理を実行する情報処理装置における情報処理方法であって、
前記加速度データを繰り返し取得する加速度データ取得ステップと、
前記加速度データ取得ステップで取得された加速度データが示す加速度の大きさおよび方向を示す加速度ベクトルを順次累積して、累積ベクトルを算出する累積ベクトル算出ステップと、
前記累積ベクトル算出ステップで算出された累積ベクトルに追従する追従ベクトルであって、前記追従ベクトルに、前記累積ベクトルから当該追従ベクトルを減じたベクトルを、所定の割合で小さくしてから加算したベクトルを、新たな追従ベクトルとして更新することで前記累積ベクトルに追従する追従ベクトルを算出する追従ベクトル算出ステップと、
前記累積ベクトルと前記追従ベクトルとの差分を差分ベクトルとして算出する差分ベクトル算出ステップと、
前記差分ベクトルにしたがって決められる値を用いて表示装置上の位置を指定し、当該位置を用いて所定の処理を行う処理ステップとを備える、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関し、より特定的には、コントローラのハウジングに生じる加速度を検出して操作される情報処理装置、その装置で実行される情報処理プログラム、その装置を含む情報処理システム、およびその装置における情報処理方法に関する。
【背景技術】
【０００２】
従来、ユーザが入力装置のハウジングを振ったり回転させたりして操作して、そのハウジングの動きに応じた処理を行う情報処理装置が各種開発されている。例えば、振動ジャイロ（角速度センサ）を搭載したリモートコマンダー（入力装置）を用いて処理を行う情報処理装置が開示されている（例えば、特許文献１参照）。
【０００３】
上記特許文献１で開示された情報処理装置は、ユーザがリモートコマンダーの振った方向を振動ジャイロより得られる角速度より判別し、その判別結果に応じたコマンドを実行している。具体的には、ユーザがリモートコマンダーを上方向に振ったときに生じる角速度により、振動ジャイロに取り付けられた駆動用圧電磁器から発生する電圧が上昇する。一方、ユーザがリモートコマンダーを下方向に振ったときの角速度により、駆動用圧電磁器から発生する電圧が下降する。リモートコマンダーに対して振動ジャイロがこのような状態で搭載されたとき、情報処理装置は、上記電圧が上昇して所定範囲まで到達した際にリモートコマンダーを上方向に振ったと判別し、上記電圧が下降して所定範囲まで低下した際にリモートコマンダーを下方向に振ったと判別する。そして、情報処理装置は、上方向に振ったと判別したときのコマンドとして表示画面内のカーソルを上方向に移動させ、下方向に振ったと判別したときのコマンドとして表示画面内のカーソルを下方向に移動させる。
【特許文献１】特開平６−５０７５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示された入力装置に搭載される振動ジャイロ（角速度センサ）は、加速度センサ等と比較するとコストが高く、入力装置自体が高価となる。一方、振動ジャイロを単純に加速度センサに置き換えて入力装置に搭載する場合、当該加速度センサが出力するデータの値をそのまま用いると、入力装置に作用する重力加速度の影響を受けるために、正確な判別が困難となる。また、入力装置を所定方向へ移動させているとき、入力装置に逆方向の加速度が生じたり、ユーザの操作状態に応じて不安定な加速度が生じたり、機器自体の精度誤差の影響を受けたり等するために、正確な判別が困難となることがある。
【０００５】
それ故に、本発明の目的は、所定の筐体に搭載された加速度センサから出力されるデータを用いて、安価で正確な操作を可能とする情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００７】
第１の発明は、所定の筐体（７０、７１、７６、７７）に加わる少なくとも１軸方向の加速度を検出する加速度センサ（７０１、７０６）から出力される加速度データ（ａｃｃｎ）を用いた処理を実行する情報処理装置（５）のコンピュータ（１０）に実行させる情報処理プログラムである。情報処理プログラムは、加速度データ取得手段（ステップ４３、ステップ１０３を実行するＣＰＵ１０；以下、単にステップ番号のみ記載する）、累積ベクトル算出手段（Ｓ４８、Ｓ１０８）、追従ベクトル算出手段（Ｓ４９、Ｓ１０９）、差分ベクトル算出手段（Ｓ５０、Ｓ１１０）、および処理手段（Ｓ５１、Ｓ１１３）として、コンピュータを機能させる。加速度データ取得手段は、加速度データを繰り返し取得する。累積ベクトル算出手段は、加速度データ取得手段が取得した加速度データが示す加速度の大きさおよび方向を示す加速度ベクトルを順次累積して、累積ベクトル（ｖｅｃａ）を算出する。追従ベクトル算出手段は、加速度データ取得手段が取得した加速度データを用いて、累積ベクトル算出手段が算出する累積ベクトルに所定の割合（Ｋ）で追従する追従ベクトル（ｖｅｃｇ）を算出する。差分ベクトル算出手段は、累積ベクトルと追従ベクトルとの差分を差分ベクトル（ｖｅｃｄ）として算出する。処理手段は、差分ベクトルにしたがって決められる値（ｖｅｃｄＸ、ｖｅｃｄＹ、ｖｅｃｄＺ、ｄａＸ、ｄａＹ、ｄａＺ）を用いて表示装置（２）に表示される仮想世界における位置（ｐｏｓ）を指定し、当該位置を用いて所定の処理を行う。
【０００８】
第２の発明は、上記第１の発明において、処理手段は、差分ベクトルの各軸成分値（ｖｅｃｄＸ、ｖｅｃｄＹ、ｖｅｃｄＺ）を仮想世界の位置として指定し、当該位置を用いて所定の処理を行う。
【０００９】
第３の発明は、上記第１の発明において、差分累積値算出手段（Ｓ１１２）として、さらにコンピュータを機能させる。差分累積値算出手段は、差分ベクトル算出手段が算出した差分ベクトルの各軸成分値を、それぞれ順次累積して差分累積値（ｄａ）を算出する。処理手段は、差分累積値算出手段が算出した差分累積値（ｄａＸ、ｄａＹ、ｄａＺ）を仮想世界の位置として指定し、当該位置を用いて所定の処理を行う。
【００１０】
第４の発明は、上記第２または第３の発明において、累積ベクトル算出手段は、減衰処理手段（Ｓ４７、Ｓ１０７）を含む。減衰処理手段は、累積ベクトルに加速度ベクトルを加算する前または後に逐次累積ベクトルを減衰させる。
【００１１】
第５の発明は、上記第２の発明において、処理手段は、差分ベクトル算出手段が算出した差分ベクトルの大きさが所定の閾値を超えたとき、当該差分ベクトルの各軸成分値を仮想世界の位置として指定し、当該位置を用いて所定の処理を行う。
【００１２】
第６の発明は、上記第３の発明において、差分累積値算出手段は、差分ベクトル算出手段が算出した差分ベクトルの大きさが所定の閾値を超えたとき、当該差分ベクトルの各軸成分値を、それぞれ順次累積して差分累積値を算出する。
【００１３】
第７の発明は、上記第２または第３の発明において、加速度センサは、検出する加速度の大きさが所定の測定可能範囲内で検出可能である。情報処理プログラムは、変化量ベクトル算出手段（Ｓ８２、Ｓ８６、Ｓ９０）および予測加速度ベクトル算出手段（Ｓ８３、Ｓ８４、Ｓ８７、Ｓ８８、Ｓ９１、Ｓ９２）として、さらにコンピュータを機能させる。変化量ベクトル算出手段は、加速度データ取得手段が取得した加速度データが示す加速度の大きさが測定可能範囲内の値であるとき（Ｓ８１、Ｓ８５、Ｓ８９でＹｅｓ）、加速度データ取得手段が取得した加速度データを用いて、加速度の変化量を示す変化量ベクトルａｃｃｖ）を算出する。予測加速度ベクトル算出手段は、加速度データ取得手段が取得した加速度データが示す加速度の大きさが測定可能範囲を超える値であるとき（Ｓ８１、Ｓ８５、Ｓ８９でＮｏ）、前回算出された変化量ベクトルから所定量減じることによって新たな変化量ベクトルを算出し、累積ベクトル算出手段が前回用いた加速度ベクトルに当該新たな変化量ベクトルを加算して予測加速度ベクトル（ａｃｃｎ）を算出する。加速度データ取得手段が取得した加速度データが示す加速度の大きさおよび方向を示す加速度ベクトルの大きさが測定可能範囲を超える値であるとき、累積ベクトル算出手段は、累積ベクトルに予測加速度ベクトルを累積して新たな累積ベクトルを算出する。
【００１４】
第８の発明は、上記第２または第３の発明において、処理手段が行う所定の処理は、指定する仮想世界における位置に所定のオブジェクト（ＯＢＪ）を配置し、当該位置の移動に応じて当該オブジェクトを仮想世界で移動させる処理である。
【００１５】
第９の発明は、上記第２の発明において、処理手段は、差分ベクトルの各軸成分値を、仮想世界に設定した座標系（ｘｙｚ）の各座標値にそれぞれ対応させることによって位置として指定する。処理手段は、所定の条件を満たすとき、仮想世界に設定された座標系の原点（基準位置）を当該仮想世界において移動させる。
【００１６】
第１０の発明は、上記第２の発明において、加速度データ取得手段は、第１および第２の筐体（７１、７７）によって構成される入力装置（７）において、当該第１および第２の筐体それぞれに搭載された第１および第２の加速度センサから出力される第１および第２の加速度データをそれぞれ繰り返し取得する。累積ベクトル算出手段は、第１の加速度データが示す加速度の大きさおよび方向を示す第１の加速度ベクトルおよび第２の加速度データが示す加速度の大きさおよび方向を示す第２の加速度ベクトルを順次それぞれ累積して、第１の累積ベクトルおよび第２の累積ベクトルをそれぞれ算出する。追従ベクトル算出手段は、第１の加速度データを用いて、第１の累積ベクトルに所定の割合で追従する第１の追従ベクトルを算出し、第２の加速度データを用いて、第２の累積ベクトルに所定の割合で追従する第２の追従ベクトルを算出する。差分ベクトル算出手段は、第１の累積ベクトルと第１の追従ベクトルとの差分を第１の差分ベクトルとして算出し、第２の累積ベクトルと第２の追従ベクトルとの差分を第２の差分ベクトルとして算出する。処理手段は、第１の差分ベクトルの各軸成分値を仮想世界に設定した第１の座標系の各座標値にそれぞれ対応させることによって第１の位置を指定し、第２の差分ベクトルの各軸成分値を仮想世界に設定した第１の座標系とは異なる第２の座標系の各座標値にそれぞれ対応させることによって第２の位置を指定する。処理手段が行う所定の処理は、第１の位置に第１のオブジェクト（ＯＢＪ１）を配置し、第２の位置に第２のオブジェクト（ＯＢＪ２）を配置して、当該第１の位置および第２の位置の移動に応じてそれぞれのオブジェクトを仮想世界で移動させる処理である。
【００１７】
第１１の発明は、上記第３の発明において、筐体は、ユーザが押下することに応じて所定の操作データを出力する操作ボタン（７２）が設けられる。情報処理プログラムは、操作データ取得手段（Ｓ１１１）として、さらにコンピュータを機能させる。操作データ取得手段は、操作データを繰り返し取得する。差分累積値算出手段は、所定の操作ボタンが押下されたことを示す操作データが取得されている期間中にのみ、差分ベクトルの各軸成分値を、それぞれ順次累積する。
【００１８】
第１２の発明は、所定の筐体に加わる少なくとも１軸方向の加速度を検出する加速度センサから出力される加速度データを用いた処理を実行する情報処理装置ある。情報処理装置は、加速度データ取得手段、累積ベクトル算出手段、追従ベクトル算出手段、差分ベクトル算出手段、および処理手段を備える。加速度データ取得手段は、加速度データを繰り返し取得する。累積ベクトル算出手段は、加速度データ取得手段が取得した加速度データが示す加速度の大きさおよび方向を示す加速度ベクトルを順次累積して、累積ベクトルを算出する。追従ベクトル算出手段は、加速度データ取得手段が取得した加速度データを用いて、累積ベクトル算出手段が算出する累積ベクトルに所定の割合で追従する追従ベクトルを算出する。差分ベクトル算出手段は、累積ベクトルと追従ベクトルとの差分を差分ベクトルとして算出する。処理手段は、差分ベクトルにしたがって決められる値を用いて表示装置に表示される仮想世界における位置を指定し、当該位置を用いて所定の処理を行う。
【発明の効果】
【００１９】
上記第１の発明によれば、差分ベクトルにしたがって決められる値（例えば、差分ベクトルの各軸成分値や差分ベクトルの各軸成分値を累積した値）を筐体の動かし始めからの実空間における３次元位置として用いて、仮想世界における位置として指定するため、安価な加速度センサから得られる出力値を用いた正確な位置指定が可能となる。
【００２０】
上記第２の発明によれば、差分ベクトルの各軸成分値を筐体の動かし始めからの実空間における３次元位置として用いて、仮想世界における位置として指定するため、安価な加速度センサから得られる出力値を用いた正確な位置指定が可能となる。例えば、ユーザが筐体を停止状態から一方方向へ動かして停止させた場合、差分ベクトルが当該動きを示した後にやがて０となる。したがって、差分ベクトルの各軸成分値を仮想世界にスケーリング等を行って座標指定した位置は、基準位置から筐体を動かす方向に移動して、やがて基準位置に戻る。このように筐体の動きに応じて仮想世界内で移動させながら、最終的またはある程度の周期で基準位置に戻すような位置の座標指定に最適となる。さらに、累積ベクトルに追従ベクトルを追従させる強さに応じて、仮想世界に指定される位置の動きを調整することができる。例えば、累積ベクトルへの追従を強くすると、筐体を動かすことによって生じた動的加速度成分も含む追従ベクトルが算出される。したがって、筐体を動かして指定された位置が仮想世界において維持されにくくなり、位置が基準位置に戻るタイミングが早くなる。一方、累積ベクトルへの追従を弱くすると、筐体の動きが停止した後も上記動的加速度成分が累積ベクトルに一定期間残存する。したがって、筐体を動かして指定された位置が仮想世界において維持されやすくなり、位置が基準位置に戻るタイミングが遅くなる。
【００２１】
上記第３の発明によれば、差分ベクトルの各軸成分値を累積した値を筐体の動かし始めからの実空間における３次元位置として用いて、仮想世界における位置として指定するため、安価な加速度センサから得られる出力値を用いた正確な位置指定が可能となる。例えば、差分ベクトルの各軸成分値を累積した値は、ユーザが筐体を実空間において移動させる相対位置を模したパラメータとして用いることも可能であり、筐体の相対位置に応じた仮想世界上の位置が指定可能となる。
【００２２】
上記第４の発明によれば、差分ベクトルを減衰することによって、加速度センサ等の機器自体の精度誤差を吸収し、筐体が静止状態であれば差分ベクトルの大きさを確実に０に近づけて安定させることができる。また、差分ベクトルの減衰を大きくすると、筐体の大きな動きに反応して位置が指定される。一方、差分ベクトルの減衰を小さくすると、筐体の小さな動きにも反応した位置が指定される。つまり、差分ベクトルの減衰率を調整することによって、操作に対する応答感度を調整することもできる。
【００２３】
上記第５の発明によれば、差分ベクトルの大きさが所定の閾値より大きいときに、処理手段が行う所定の処理に反映されるため、筐体に対する微小な動きがキャンセルされ、筐体の動きの誤認識も防止することができる。
【００２４】
上記第６の発明によれば、差分ベクトルの大きさが所定の閾値より大きいときに、差分累積値算出手段が行う累積処理が行われるため、処理手段が行う所定の処理において筐体に対する微小な動きがキャンセルされ、筐体の動きの誤認識も防止することができる。
【００２５】
上記第７の発明によれば、加速度センサの計測可能範囲を逸脱するような加速度が生じた場合でも、当該加速度を予測することによって正確な位置指定が可能となる。
【００２６】
上記第８の発明によれば、差分ベクトルの各軸成分値や差分ベクトルの各軸成分値を累積した値によって指定された仮想世界の位置にオブジェクトを配置し、当該位置の移動に応じてオブジェクトを移動させるゲームや情報処理を行うことができる。
【００２７】
上記第９の発明によれば、仮想世界に指定される位置を指定可能な範囲に制限がなくなるため、より自由度の高い操作が可能となる。
【００２８】
上記第１０の発明によれば、複数の筐体で構成される入力装置を用いて、当該筐体を動かして操作する態様において、それぞれの筐体の動きに応じて別の位置の指定が可能となり、仮想世界においてそれぞれ別のオブジェクトを動かすような操作が可能となる。
【００２９】
上記第１１の発明によれば、ユーザが筐体の所定の操作ボタンを押下している期間のみ操作が有効となり、当該期間終了後、最後に指定された位置がそのまま固定されるため、ユーザの意図に応じた任意の位置を指定することが容易となる。
【００３０】
また、本発明の情報処理装置によれば、上述した情報処理プログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３１】
図１および図２を参照して、本発明の一実施形態に係る情報処理プログラムを実行する装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体５を含むゲームシステムについて説明する。なお、図１は据置型のゲーム装置３を含むゲームシステム１の外観図であり、図２はゲーム装置本体５のブロック図である。以下、当該ゲームシステム１について説明する。
【００３２】
図１において、ゲームシステム１は、表示手段の一例の家庭用テレビジョン受像機（以下、モニタと記載する）２と、当該モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置本体５から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明の情報処理プログラムの一例のゲームプログラムを記録した光ディスク４と、当該光ディスク４のゲームプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体５に与えるためのコントローラ７とを備えている。
【００３３】
また、ゲーム装置本体５は、無線コントローラモジュール１９（図２参照）を内蔵する。無線コントローラモジュール１９は、コントローラ７から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７とゲーム装置本体５とを無線通信によって接続する。さらに、ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。
【００３４】
また、ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ１７（図２参照）が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。また、ゲームプログラム等は、光ディスク４に限らず、フラッシュメモリ１７に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体５は、フラッシュメモリ１７に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置本体５のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００３５】
コントローラ７は、無線コントローラモジュール１９を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報等の送信データを無線送信する。コントローラ７は、２つのコントロールユニット（コアユニット７０およびサブユニット７６）が屈曲自在な接続ケーブル７９を介して互いに接続されて構成されており、主にモニタ２の表示画面に表示されるオブジェクト等を操作するための操作手段である。コアユニット７０およびサブユニット７６は、それぞれ片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キーやスティック等を含む）とが設けられている。また、後述により明らかとなるが、コアユニット７０は、当該コアユニット７０から見た画像を撮像する撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって例えば赤外光を出力する。また、コントローラ７（例えば、コアユニット７０）は、ゲーム装置本体５の無線コントローラモジュール１９から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００３６】
なお、本実施例では、コアユニット７０とサブユニット７６とを屈曲自在な接続ケーブル７９で接続したが、サブユニット７６に無線ユニットを搭載することで、接続ケーブル７９をなくすこともできる。例えば、無線ユニットとしてＢｌｕｅｔｏｏｔｈ（登録商標）ユニットをサブユニット７６に搭載することで、サブユニット７６からコアユニット７０へ操作データを送信することが可能になる。また、コントローラ７（例えば、コアユニット７０）は、ゲーム装置本体５の無線コントローラモジュール１９から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００３７】
次に、図２を参照して、ゲーム装置本体５の内部構成について説明する。ゲーム装置本体５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ／Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）１３、ディスクドライブ１４、およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１５等を有する。
【００３８】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については、後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置本体５の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ３５または外部メインメモリ１２に読み出したデータを書き込む。
【００３９】
また、システムＬＳＩ１１には、入出力プロセッサ３１、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）３２、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３３、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３４、および内部メインメモリ３５が設けられる。図示は省略するが、これらの構成要素３１〜３５は、内部バスによって互いに接続される。
【００４０】
ＧＰＵ３２は、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ３４は、ＧＰＵ３２がグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ３２は、ＶＲＡＭ３４に記憶されたデータを用いて画像データを作成する。
【００４１】
ＤＳＰ３３は、オーディオプロセッサとして機能し、内部メインメモリ３５や外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００４２】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、ＡＶコネクタ１６を介して、読み出した画像データをモニタ２に出力するとともに、読み出した音声データをモニタ２に内蔵されるスピーカ２ａに出力する。これによって、画像がモニタ２に表示されるとともに音がスピーカ２ａから出力される。
【００４３】
入出力プロセッサ（Ｉ／Ｏプロセッサ）３１は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ３１は、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、および外部メモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４４】
入出力プロセッサ３１は、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ３１は、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介して当該データをネットワークに送信する。また、入出力プロセッサ３１は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２、および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０は、ゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置本体５と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体５を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００４５】
また、入出力プロセッサ３１は、アンテナ２３および無線コントローラモジュール１９を介して、コントローラ７から送信される操作データ等を受信し、内部メインメモリ３５または外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。なお、内部メインメモリ３５には、外部メインメモリ１２と同様に、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、ＣＰＵ１０のワーク領域やバッファ領域として用いられてもかまわない。
【００４６】
さらに、入出力プロセッサ３１には、拡張コネクタ２０および外部メモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ３１は、拡張コネクタ２０や外部メモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００４７】
また、ゲーム装置本体５（例えば、前部主面）には、当該ゲーム装置本体５の電源ボタン２４、ゲーム処理のリセットボタン２５、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトボタン２６等が設けられている。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置本体５の各構成要素に対して、図示しないＡＣアダプタを経て電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置本体５の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４８】
次に、図３を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の外観構成を示す斜視図である。
【００４９】
図３において、コントローラ７は、コアユニット７０とサブユニット７６とが接続ケーブル７９で接続されて構成されている。コアユニット７０は、ハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。一方、サブユニット７６は、ハウジング７７を有しており、当該ハウジング７７に複数の操作部７８が設けられている。
【００５０】
接続ケーブル７９の一方端には、コアユニット７０のコネクタ７３に着脱自在なコネクタ７９１が設けられており、接続ケーブル７９の他方端は固定的にサブユニット７６と接続されている。そして、接続ケーブル７９のコネクタ７９１は、コアユニット７０の後面に設けられたコネクタ７３と嵌合し、コアユニット７０とサブユニット７６とが当該接続ケーブル７９を介して接続される。
【００５１】
次に、図４および図５を参照して、コアユニット７０について説明する。なお、図４は、コアユニット７０の上面後方から見た斜視図である。図５は、コアユニット７０を下面前方から見た斜視図である。
【００５２】
図４および図５において、コアユニット７０は、例えばプラスチック成型によって形成されたハウジング７１を有している。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００５３】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、矢印で示す４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【００５４】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー７２ａの代わりに設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。
【００５５】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ｂ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。なお、図４に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００５６】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００５７】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール１９からコントローラ７へ、複数のＬＥＤ７０２のうち、上記コントローラ種別に対応するＬＥＤを点灯させるための信号が送信される。
【００５８】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図６のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００５９】
一方、ハウジング７１下面には、凹部が形成されている。ハウジング７１下面の凹部は、プレイヤがコアユニット７０を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００６０】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コアユニット７０が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコアユニット７０の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００６１】
ここで、以下の説明を具体的にするために、コアユニット７０に対して設定する座標系について定義する。図４および図５に示すように、互いに直交するＸＹＺ軸をコアユニット７０に対して定義する。具体的には、コアユニット７０の前後方向となるハウジング７１の長手方向をＺ軸とし、コアユニット７０の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コアユニット７０の上下方向をＹ軸とし、ハウジング７１の上面（操作ボタン７２ａが設けられた面）方向をＹ軸正方向とする。さらに、コアユニット７０の左右方向をＸ軸とし、ハウジング７１の左側面（図４では表されずに図５で表されている側面）方向をＸ軸正方向とする。
【００６２】
次に、図６および図７を参照して、コアユニット７０の内部構造について説明する。なお、図６は、コアユニット７０の上筐体（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図７は、コアユニット７０の下筐体（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図７に示す基板７００は、図６に示す基板７００の裏面から見た斜視図となっている。
【００６３】
図６において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図７、図１０参照）に接続される。また、図示しない無線モジュール７５３（図１０参照）およびアンテナ７５４によって、コアユニット７０がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。加速度センサ７０１が、基板７００の中央部ではなく周辺部に設けられていることにより、コアユニット７０の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコアユニット７０の動きを良好な感度で判定することができる。
【００６４】
一方、図７において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コアユニット７０の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。このバイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４が作動することによってコアユニット７０に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００６５】
図８および図９を参照して、サブユニット７６について説明する。なお、図８は、サブユニット７６の一例を示す斜視図である。図９は、図８のサブユニット７６の上筐体（ハウジング７７の一部）を外した状態を示す斜視図である。
【００６６】
図８において、サブユニット７６は、例えばプラスチック成型によって形成されたハウジング７７を有している。ハウジング７７は、その前後方向を長手方向とし、サブユニット７６において最太部となる頭部を前方に形成した流線型の立体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００６７】
ハウジング７７上面の上記最太部近傍に、スティック７８ａが設けられる。スティック７８ａは、ハウジング７７上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向や傾倒量を検出し、それに応じて操作信号を出力する操作部である。例えば、プレイヤがスティック先端を３６０°任意の方向に傾倒することによって任意の方向や位置を指定することができ、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したりすることができる。また、プレイヤは、スティック７８ａの傾倒量によって、プレイヤキャラクタ等の移動量を指示することができる。
【００６８】
なお、スティック７８ａは、プレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、上述した十字キーやリング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記スティック７８ａの代わりに設けてもかまわない。また、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記スティック７８ａの代わりに設けてもかまわない。また、タッチパッドを、上記スティック７８ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記スティック７８ａの代わりに設けてもかまわない。
【００６９】
サブユニット７６のハウジング７７の前面に、複数の操作ボタン７８ｄおよび７８ｅが設けられる。操作ボタン７８ｄおよび７８ｅは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７８ｄおよび７８ｅに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７８ｄおよび７８ｅには、ＸボタンおよびＹボタン等としての機能が割り当てられる。これら操作ボタン７８ｄおよび７８ｅは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。なお、図８に示した配置例では、操作ボタン７８ｄおよび７８ｅは、ハウジング７７前面の上下方向に沿って並設されている。
【００７０】
図９において、ハウジング７７の内部には基板が固設されており、当該基板の上主面上にスティック７８ａおよび加速度センサ７６１等が設けられる。そして、これらは、基板等に形成された配線（図示せず）を介して接続ケーブル７９と接続されている。加速度センサ７６１は、ハウジング７７の長手方向の中央部かつ短手方向の中央部に配置されるのが好ましい。
【００７１】
ここで、以下の説明を具体的にするために、サブユニット７６に対して設定する座標系について定義する。図８に示すように、互いに直交するＸＹＺ軸をサブユニット７６に対して定義する。具体的には、サブユニット７６の前後方向となるハウジング７７の長手方向をＺ軸とし、サブユニット７６の前面（操作ボタン７８ｄおよび７８ｅが設けられている面）方向をＺ軸正方向とする。また、サブユニット７６の上下方向をＹ軸とし、ハウジング７７の上面方向（スティック７８ａが突出する方向）をＹ軸正方向とする。さらに、サブユニット７６の左右方向をＸ軸とし、ハウジング７７の左側面（図８では表されている側面）方向をＸ軸正方向とする。
【００７２】
次に、図１０を参照して、コントローラ７の内部構成について説明する。なお、図１０は、コントローラ７の構成を示すブロック図である。
【００７３】
図１０において、コアユニット７０は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。また、サブユニット７６は、上述した操作部７８および加速度センサ７６１を備えており、接続ケーブル７９とコネクタ７９１および７３とを介して、マイコン７５１と接続されている。
【００７４】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コアユニット７０の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コアユニット７０のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【００７５】
コアユニット７０は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。また、サブユニット７６は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７６１を備えていることが好ましい。この３軸の加速度センサ７０１および７６１は、それぞれ３方向、すなわち、上下方向、左右方向、および前後方向（上述したＸＹＺ軸方向）で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向（または他の対になった方向）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段や何れか１軸に沿った直線加速度のみを検知する１軸の加速度検出手段を使用してもよい。例えば、この１軸〜３軸の加速度センサ７０１および７６１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１および７６１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて１軸〜３軸の加速度センサ７０１および７６１が提供されてもよい。
【００７６】
当業者には公知であるように、加速度センサ７０１および７６１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１および７６１からの直接の出力は、その１軸〜３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１および７６１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００７７】
しかしながら、加速度センサ７０１および７６１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ１０）、コアユニット７０またはサブユニット７６のプロセッサ（例えばマイコン７５１）等のコンピュータが処理を行うことによって、コアユニット７０およびサブユニット７６に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【００７８】
例えば、加速度センサ７０１および７６１を搭載するコアユニット７０およびサブユニット７６が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ７０１および７６１によって検出される加速度が重力加速度のみであるとして処理する場合）、コアユニット７０およびサブユニット７６が現実に静的な状態であれば、検出された加速度に基づいてコアユニット７０およびサブユニット７６の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ７０１および７６１の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に１Ｇ（重力加速度）が作用しているか否かだけでコアユニット７０およびサブユニット７６が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コアユニット７０およびサブユニット７６が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ７０１および７６１の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコアユニット７０およびサブユニット７６がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１および７６１からの出力に基づいて、プロセッサがコアユニット７０およびサブユニット７６の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ７０１および７６１からの出力に基づいて、おおよそのコアユニット７０およびサブユニット７６の傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１および７６１をプロセッサと組み合わせて用いることによって、コアユニット７０およびサブユニット７６の傾き、姿勢、または位置を判定することができる。
【００７９】
一方、加速度センサ７０１および７６１が動的な状態であることを前提とする場合には、当該加速度センサ７０１および７６１が重力加速度成分に加えて加速度センサ７０１および７６１の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コアユニット７０およびサブユニット７６の動き方向等を知ることができる。具体的には、加速度センサ７０１および７６１を備えるコアユニット７０およびサブユニット７６がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ７０１および７６１によって生成される加速度信号を処理することによって、コアユニット７０およびサブユニット７６の様々な動きおよび／または位置を算出することができる。なお、加速度センサ７０１および７６１が動的な状態であることを前提とする場合であっても、加速度センサ７０１および７６１の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコアユニット７０およびサブユニット７６の傾きを知ることが可能である。
【００８０】
他の実施例では、加速度センサ７０１および７６１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置をそれぞれ備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ７０１および７６１が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。加速度センサ７０１および７６１でそれぞれ検知された加速度を示すデータは、通信部７５に出力される。
【００８１】
ここで、コアユニット７０やサブユニット７６を把持してプレイヤが振った場合、振り始めは加速して振り終わりは減速となる。したがって、コアユニット７０やサブユニット７６には、振り始めで振っている方向と同じ方向の加速度が生じた後、徐々に加速度の大きさが減少して、振り終わりで振っている方向とは逆の方向に加速度が生じる。一方、一般的に、加速度センサ７０１および７６１から出力される加速度ベクトル（あるいは、加速度の正負）は、コアユニット７０やサブユニット７６に生じる加速度の方向とは真逆のベクトルとなる。したがって、以下の説明において、加速度センサ７０１および７６１の特性として、加速度センサ７０１および７６１から出力されるデータは、当該加速度センサ７０１および７６１に加えられる加速度（つまり実際に加速する方向）とは真逆方向の加速度を示すデータが出力されるものとする。すなわち、加速度センサ７０１および７６１は、加速による慣性力に応じた加速度データが出力されるものである。また、コアユニット７０やサブユニット７６が静止時に加速度センサ７０１および７６１にそれぞれ加わる重力加速度は、重力方向と同じ方向の加速度データとして出力されることになる。
【００８２】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体５から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【００８３】
コアユニット７０に設けられた操作部７２からの操作信号（コアキーデータ）、加速度センサ７０１からの加速度信号（コア加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。また、接続ケーブル７９を介して、サブユニット７６に設けられた操作部７８からの操作信号（サブキーデータ）および加速度センサ７６１からの加速度信号（サブ加速度データ）は、マイコン７５１に出力される。マイコン７５１は、入力した各データ（コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、処理結果データ）を無線コントローラモジュール１９へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から無線コントローラモジュール１９への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期でデータを収集して送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ；登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、無線コントローラモジュール１９への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その微弱電波信号をアンテナ７５４から放射する。つまり、コアユニット７０に設けられた操作部７２からのコアキーデータ、サブユニット７６に設けられた操作部７８からのサブキーデータ、コアユニット７０に設けられた加速度センサ７０１からのコア加速度データ、サブユニット７６に設けられた加速度センサ７６１からのサブ加速度データ、および撮像情報演算部７４からの処理結果データは、無線モジュール７５３で微弱電波信号に変調されてコアユニット７０から放射される。そして、ゲーム装置３の無線コントローラモジュール１９でその微弱電波信号を受信し、ゲーム装置３で当該微弱電波信号を復調や復号することによって、一連の操作情報（コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、および処理結果データ）を取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。
【００８４】
次に、ゲーム装置本体５が行う具体的な処理を説明する前に、本ゲーム装置本体５で行うゲームの概要について説明する。図１１に示すように、コアユニット７０およびサブユニット７６は、それぞれ全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム１でコントローラ７を用いてゲームをプレイするためには、プレイヤは、一方の手（例えば右手）でコアユニット７０を把持し、他方の手（例えば左手）でサブユニット７６を把持して、コアユニット７０およびサブユニット７６をそれぞれ振り動かす動作を行う。例えば、図１１においては、プレイヤが右手でコアユニット７０を把持し左手でサブユニット７６を把持して、それぞれ上下に振り動かしている様子を示している。このようなプレイヤがコアユニット７０およびサブユニット７６をそれぞれ振り動かす動作において、ゲーム装置本体５がコアユニット７０およびサブユニット７６の動きをそれぞれ判定し、当該コアユニット７０およびサブユニット７６の動きに応じた仮想ゲーム空間内の位置をそれぞれ決定してゲーム処理が行われる。なお、プレイヤがコアユニット７０のみを把持してゲーム操作する場合、一方の手（例えば右手）でコアユニット７０を把持して、コアユニット７０を振り動かす動作を行う。この場合、プレイヤがコアユニット７０を振り動かす動作に応じて、ゲーム装置本体５がコアユニット７０の動きを判定し、当該コアユニット７０の動きに応じた仮想ゲーム空間内の位置を決定してゲーム処理が行われる。
【００８５】
例えば、プレイヤが静的にコアユニット７０やサブユニット７６を傾けることによって、コアユニット７０やサブユニット７６の静的な姿勢に応じた操作情報（具体的には、コア加速度データおよびサブ加速度データにそれぞれ含まれるＸ、Ｙ、およびＺ軸方向加速度データ）をゲーム装置本体５に与える。また、プレイヤがコアユニット７０やサブユニット７６を上下や左右に振り動かす動作では、コアユニット７０やサブユニット７６からその振り方向への加速度や遠心力等に応じた動的な操作情報をゲーム装置本体５に与える。このようなコアユニット７０やサブユニット７６に加わる加速度の変化は、加速度センサ７０１および７６１によってそれぞれ検出できるため、加速度センサ７０１および７６１からそれぞれ出力されるＸ、Ｙ、およびＺ軸方向加速度データに対して追加の処理を行うことによって、コアユニット７０やサブユニット７６の静的な姿勢や動的な動作を算出することができる。一般的に、動作に応じて生じる加速度を検出する場合、加速度センサ７０１および７６１から出力される加速度ベクトル（あるいは、加速度の正負）は、コアユニット７０やサブユニット７６の加速方向とは真逆のベクトルとなるため、検出した加速度の方向を考慮してコアユニット７０やサブユニット７６の傾きや動きを算出することが必要であることは言うまでもない。
【００８６】
図１２〜図１４は、コントローラ７の動きに応じて行われるゲーム処理や情報処理の一例を示す図である。ゲーム処理の一例として、モニタ２に表示されるオブジェクトをコアユニット７０およびサブユニット７６の動きに応じてそれぞれ動かす処理（モニタ２に表示された仮想ゲーム空間における２本のスティックでそれぞれドラムを叩く等）や、モニタ２に表示されるオブジェクトをコアユニット７０の動きに応じて動かす処理（モニタ２に表示された仮想ゲーム空間におけるキャラクタをコアユニット７０の動きに応じて振り回す、仮想ゲーム空間に配置された物を動かす等）がある。また、ゲーム処理とは異なった情報処理の一例として、コアユニット７０および／またはサブユニット７６の動きに応じてディスプレイに表示されたブラウザのジェスチャー（ウインドウを移動させる、ウインドウを閉じる、ページをめくる等）を行う。
【００８７】
例えば、図１２においては、モニタ２に仮想ゲーム空間に配置された２本のスティックオブジェクトＯＢＪ１およびＯＢＪ２とドラムオブジェクトＤとが表示されている。スティックオブジェクトＯＢＪ１は、コアユニット７０が振り下ろされることに応じて、仮想ゲーム空間内においてドラムオブジェクトＤの打撃面に向かって振り下ろされる（図１２において実線で示す状態）。そして、スティックオブジェクトＯＢＪ１は、コアユニット７０の振り下ろし動作が終了し、振り下ろし前の位置まで戻されることに応じて、仮想ゲーム空間内における基準位置（図１２において破線で示す状態）まで戻る。一方、スティックオブジェクトＯＢＪ２は、サブユニット７６が振り下ろされることに応じて、仮想ゲーム空間内においてドラムオブジェクトＤの打撃面に向かって振り下ろされる（図１２において破線で示す状態）。そして、スティックオブジェクトＯＢＪ２は、サブユニット７６の振り下ろし動作が終了し、振り下ろし前の位置まで戻されることに応じて、仮想ゲーム空間内における基準位置（図１２において実線で示す状態）まで戻る。
【００８８】
また、図１３においては、仮想ゲーム空間に配置された軸Ｃを中心として、当該軸ＣにキャラクタオブジェクトＯＢＪを連結してモニタ２に表示している。キャラクタオブジェクトＯＢＪは、コアユニット７０が円を描くように動かされることに応じて、仮想ゲーム空間内において軸Ｃを中心に振り回される。このとき、キャラクタオブジェクトＯＢＪが軸Ｃを中心に振り回される角速度は、コアユニット７０が円を描くように動く動作と同期するように設定される。そして、キャラクタオブジェクトＯＢＪは、コアユニット７０の動作が停止することに応じて、やがて軸Ｃにぶら下がった状態で停止する。
【００８９】
また、図１４においては、モニタ２に仮想ゲーム空間に配置された物オブジェクトＯＢＪが表示されている。そして、物オブジェクトＯＢＪは、所定ボタンが押下されている期間のコアユニット７０の動きに応じて、表示画面内でコアユニット７０の動きに応じて移動する。
【００９０】
これらのゲーム例においては、コアユニット７０およびサブユニット７６がそれぞれ動かし始めの位置からどのくらいの位置まで動いたかを示すパラメータがＣＰＵ１０によってそれぞれ算出される。そして、ＣＰＵ１０は、それぞれのパラメータを仮想ゲーム空間内にスケーリングして座標指定した位置座標に置き換えて、スティックオブジェクトＯＢＪ１およびＯＢＪ２やキャラクタオブジェクトＯＢＪや物オブジェクトＯＢＪをそれぞれ移動させている。したがって、スティックオブジェクトＯＢＪ１およびＯＢＪ２やキャラクタオブジェクトＯＢＪや物オブジェクトＯＢＪは、プレイヤがコアユニット７０および／またはサブユニット７６を動かす動作と同じようにそれぞれ振り下ろされたり、振り回されたり、移動したりするため、プレイヤはあたかもドラムを演奏したり、キャラクタを振り回したり、物を動かしているような感覚を味わえる。ここで、後述により明らかとなるが、算出する上記パラメータの種類によっては、コアユニット７０および／またはサブユニット７６の動きが停止したことに応じて、仮想ゲーム空間上のオブジェクトが基準位置に必ず戻る態様（例えば、図１２や図１３のゲーム例）と、オブジェクトが移動した位置でそのまま停止する態様（例えば、図１４のゲーム例）とがある。
【００９１】
次に、ゲームシステム１において行われるゲーム処理の詳細を説明する。以下、説明するゲーム処理においては、コアユニット７０およびサブユニット７６をそれぞれ操作する場合、コアユニット７０から得られるコア加速度データに基づいて行われる処理と、サブユニット７６から得られるサブ加速度データに基づいて行われる処理とは同様であり、操作対象とするオブジェクトが異なるのみである。そして、コア加速度データに基づいて行われる処理と、サブ加速度データに基づいて行われる処理とは、同時に進行する。したがって、以下の説明においては、コアユニット７０から得られるコア加速度データに基づいて行われる前者の処理を主に説明する。
【００９２】
まず、図１５を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図１５は、ゲーム装置本体５の外部メインメモリ１２および／または内部メインメモリ３５（以下、２つのメインメモリを総称して、単にメインメモリと記載する）に記憶される主なデータを示す図である。
【００９３】
図１５に示すように、メインメモリには、最新加速度データＤａ、最終加速度データＤｂ、加速度変化量データＤｃ、累積ベクトルデータＤｄ、追従ベクトルデータＤｅ、差分ベクトルデータＤｆ、仮想ゲーム空間位置データＤｇ、姿勢データＤｈ、および画像データＤｉ等が記憶される。なお、メインメモリには、図１５に示す情報に含まれるデータの他、ゲームに登場するオブジェクトＯＢＪや他のオブジェクト等に関するデータや仮想ゲーム空間に関するデータ（背景のデータ等）等、ゲーム処理に必要なデータが記憶される。
【００９４】
最新加速度データＤａは、コアユニット７０に生じた最新加速度ａｃｃｎを示すデータであり、コアユニット７０から送信データとして送信されてくる一連の操作情報に含まれる最新のコア加速度データが記憶される。この最新加速度データＤａには、加速度センサ７０１がＸ軸成分に対して検出した加速度ａｃｃｎＸを示すＸ軸方向加速度データＤａ１、Ｙ軸成分に対して検出した加速度ａｃｃｎＹを示すＹ軸方向加速度データＤａ２、およびＺ軸成分に対して検出した加速度ａｃｃｎＺを示すＺ軸方向加速度データＤａ３が含まれる。なお、ゲーム装置本体５に備える無線コントローラモジュール１９は、コアユニット７０から所定周期（例えば、１／２００秒毎）に送信される操作情報に含まれるコア加速度データを受信し、無線コントローラモジュール１９に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた最新のコア加速度データがゲーム処理周期である１フレーム毎（例えば、１／６０秒毎）に読み出されて、メインメモリの最新加速度データＤａが更新される。
【００９５】
なお、後述する処理フローでは、最新加速度データＤａがゲーム処理周期である１フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コアユニット７０からの送信周期毎に最新加速度データＤａを更新し、当該更新されたコア加速度データをゲーム処理周期毎に利用する態様でもかまわない。この場合、最新加速度データＤａに記憶する加速度データＤａ１〜Ｄａ３を更新する周期と、ゲーム処理周期とが異なることになる。
【００９６】
最終加速度データＤｂは、加速度変化量ａｃｃｖを算出するために用いた最新加速度ａｃｃｎを最終加速度ａｃｃｌとして格納したデータである。つまり、最終加速度データＤｂには、最新加速度データＤａと同様に、Ｘ軸成分に対する最終加速度ａｃｃｌＸを示すＸ軸方向加速度データＤｂ１、Ｙ軸成分に対する最終加速度ａｃｃｌＹを示すＹ軸方向加速度データＤｂ２、およびＺ軸成分に対する最終加速度ａｃｃｌＺを示すＺ軸方向加速度データＤｂ３が含まれる。
【００９７】
加速度変化量データＤｃは、最新加速度ａｃｃｎと最終加速度ａｃｃｌとの間の変化量を示す加速度変化量ａｃｃｖを示すデータである。そして、加速度変化量データＤｃには、Ｘ軸成分に対する加速度変化量ａｃｃｖＸを示すＸ軸方向加速度変化量データＤｃ１、Ｙ軸成分に対する加速度変化量ａｃｃｖＹを示すＹ軸方向加速度変化量データＤｃ２、およびＺ軸成分に対する加速度変化量ａｃｃｖＺを示すＺ軸方向加速度変化量データＤｃ３が含まれる。つまり、加速度変化量ａｃｃｖは、各軸毎に加速度変化量ａｃｃｖＸ、ａｃｃｖＹ、およびａｃｃｖＺを含んでおり、最新加速度ａｃｃｎと最終加速度ａｃｃｌとの間の変化量を示す変化量ベクトルとして用いることができる。
【００９８】
累積ベクトルデータＤｄは、最新加速度ａｃｃｎを累積して算出される累積ベクトルｖｅｃａを示すデータが格納される。具体的には、累積ベクトルデータＤｄには、累積ベクトルｖｅｃａのＸ軸成分ｖｅｃａＸを示すＸ軸方向成分データＤｄ１、Ｙ軸成分ｖｅｃａＹを示すＹ軸方向成分データＤｄ２、およびＺ軸成分ｖｅｃａＺを示すＺ軸方向成分データＤｄ３が含まれる。
【００９９】
追従ベクトルデータＤｅは、累積ベクトルｖｅｃａ（実施例においては、最新（現時点）の累積ベクトルｖｅｃａ）に所定の割合で追従する追従ベクトルｖｅｃｇを示すデータが格納される。具体的には、追従ベクトルデータＤｅは、追従ベクトルｖｅｃｇのＸ軸成分ｖｅｃｇＸを示すＸ軸方向成分データＤｅ１、Ｙ軸成分ｖｅｃｇＹを示すＹ軸方向成分データＤｅ２、およびＺ軸成分ｖｅｃｇＺを示すＺ軸方向成分データＤｅ３が含まれる。
【０１００】
差分ベクトルデータＤｆは、累積ベクトルｖｅｃａと追従ベクトルｖｅｃｇとの差分ベクトルｖｅｃｄを示すデータが格納される。具体的には、差分ベクトルデータＤｆには、差分ベクトルｖｅｃｄのＸ軸成分ｖｅｃｄＸを示すＸ軸方向成分データＤｆ１、Ｙ軸成分ｖｅｃｄＹを示すＹ軸方向成分データＤｆ２、およびＺ軸成分ｖｅｃｄＺを示すＺ軸方向成分データＤｆ３が含まれる。
【０１０１】
仮想ゲーム空間位置データＤｇは、差分ベクトルｖｅｃｄに応じて決定された仮想ゲーム空間におけるオブジェクトの位置ｐｏｓを示すデータが格納される。具体的には、仮想ゲーム空間にｘｙｚ軸座標系が設定されるとき、仮想ゲーム空間位置データＤｇには、オブジェクトの位置ｐｏｓのｘ軸座標ｐｏｓｘを示すｘ軸座標データＤｇ１、ｙ軸座標ｐｏｓｙを示すｙ軸座標データＤｇ２、およびｚ軸座標ｐｏｓｚを示すｚ軸座標データＤｇ３が含まれる。
【０１０２】
姿勢データＤｈは、静的な状態におけるコアユニット７０の姿勢を示すデータであり、例えばコアユニット７０に対して作用する重力加速度の方向を３次元ベクトルで示すデータである。
【０１０３】
画像データＤｉは、オブジェクト画像データＤｉ１等を含んでいる。オブジェクト画像データＤｉ１は、仮想ゲーム空間の位置ｐｏｓにオブジェクトＯＢＪを配置してゲーム画像を生成するためのデータである。
【０１０４】
次に、図１６〜図１８を参照して、ゲーム装置本体５において行われるゲーム処理の詳細を説明する。なお、図１６は、ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャートである。図１７は、図１６におけるステップ４４のコントローラの姿勢算出処理の詳細な動作を示すサブルーチンである。図１８は、図１６におけるステップ４５の加速度変化量を算出する処理の詳細な動作を示すサブルーチンである。なお、図１６〜図１８に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコアユニット７０を動かすことに応じてオブジェクトＯＢＪを移動させる処理について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図１６〜図１８では、ＣＰＵ１０が実行する各ステップを「Ｓ」と略称する。
【０１０５】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１６〜図１８に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【０１０６】
図１６において、ＣＰＵ１０は、ゲーム処理の初期化を行い（ステップ４１）、次のステップに処理を進める。例えば、上記ステップ４１におけるゲーム処理初期化では、仮想ゲーム空間において２本のスティックを振り下ろしてドラムを演奏したり、キャラクタを振り回したり、物を動かしたりするゲーム処理のとき、仮想ゲーム空間の設定やゲームオブジェクトの配置等の初期設定を行う。
【０１０７】
次に、ＣＰＵ１０は、認識処理の初期化を行い（ステップ４２）、次のステップに処理を進める。上記ステップ４２における認識処理の初期化処理では、コアユニット７０の動きを算出するための各パラメータを初期化する。例えば、ＣＰＵ１０は、最終加速度データＤｂに格納される最終加速度ａｃｃｌＸ、ａｃｃｌＹ、およびａｃｃｌＺをそれぞれ０に設定する。ＣＰＵ１０は、加速度変化量データＤｃに格納される加速度変化量ａｃｃｖＸ、ａｃｃｖＹ、およびａｃｃｖＺをそれぞれ０に設定する。ＣＰＵ１０は、累積ベクトルデータＤｄに格納される各成分ｖｅｃａＸ、ｖｅｃａＹ、およびｖｅｃａＺをそれぞれ０に設定する。ＣＰＵ１０は、追従ベクトルデータＤｅに格納される各成分ｖｅｃｇＸ、ｖｅｃｇＹ、およびｖｅｃｇＺをそれぞれ０に設定する。ＣＰＵ１０は、差分ベクトルデータＤｆに格納される各成分ｖｅｃｄＸ、ｖｅｃｄＹ、およびｖｅｃｄＺをそれぞれ０に設定する。ＣＰＵ１０は、仮想ゲーム空間位置データＤｇに格納される各座標ｐｏｓｘ、ｐｏｓｙ、およびｐｏｓｚをそれぞれ０に設定する。そして、ＣＰＵ１０は、姿勢データＤｈに格納されるコアユニット７０の静的な姿勢を、所定方向に向いた長さ１の３次元ベクトルに設定する。
【０１０８】
次に、ＣＰＵ１０は、最新加速度ａｃｃｎを取得して（ステップ４３）、次のステップに処理を進める。例えば、ＣＰＵ１０は、コアユニット７０から受信した最新の操作情報に含まれるコア加速度データが示す加速度を最新加速度ａｃｃｎとして最新加速度データＤａに格納する。具体的には、コアユニット７０から受信した最新の操作情報に含まれるＸ軸方向のコア加速度データが示す加速度が、最新加速度ａｃｃｎＸとしてＸ軸方向加速度データＤａ１に格納される。また、最新の操作情報に含まれるＹ軸方向のコア加速度データが示す加速度が、最新加速度ａｃｃｎＹとしてＹ軸方向加速度データＤａ２に格納される。そして、最新の操作情報に含まれるＺ軸方向のコア加速度データが示す加速度が、最新加速度ａｃｃｎＺとしてＺ軸方向加速度データＤａ３に格納される。
【０１０９】
次に、ＣＰＵ１０は、コアユニット７０の姿勢を算出する処理を行って（ステップ４４）、処理を次のステップに進める。以下、図１７を参照して、上記ステップ４４で行うコアユニット７０の姿勢算出処理について説明する。
【０１１０】
図１７において、ＣＰＵ１０は、最新加速度データＤａに格納された最新加速度ａｃｃｎを参照して、コアユニット７０が静的な状態にあるか否かを判断する（ステップ６１）。一例として、ＣＰＵ１０は、最新加速度ａｃｃｎＸ、ａｃｃｎＹ、およびａｃｃｎＺの何れかの値が、重力加速度に相当する値以上を示している場合、コアユニット７０が静的な状態にないと判断する。他の例として、ＣＰＵ１０は、最新加速度ａｃｃｎＸ、ａｃｃｎＹ、およびａｃｃｎＺのそれぞれの変化量が全て所定値未満である場合、コアユニット７０が静的な状態にあると判断する。最新加速度ａｃｃｎを参照してコアユニット７０の静的な状態にあることを判定する方法は他にも考えられるが、上記ステップ６１においては他の方法を用いてコアユニット７０の状態を判定してもかまわない。そして、ＣＰＵ１０は、コアユニット７０が静的な状態にある場合、次のステップ６２に処理を進める。一方、ＣＰＵ１０は、コアユニット７０が静的な状態にない場合、当該サブルーチンによる処理を終了する。
【０１１１】
ステップ６２において、ＣＰＵ１０は、最新加速度ａｃｃｎを用いてコアユニット７０の姿勢を算出し姿勢データＤｈに格納して、当該サブルーチンによる処理を終了する。コアユニット７０が静的な状態で配置されている場合、コアユニット７０には重力加速度が作用する。この重力加速度がコアユニット７０に作用している方向は、最新加速度ａｃｃｎＸ、ａｃｃｎＹ、およびａｃｃｎＺの値から算出することが可能である。ここで、コアユニット７０に対して重力加速度が作用する方向は、実空間における鉛直下方向であり、コアユニット７０に定義されたＸＹＺ軸に対する鉛直下方向を取得することが可能となる。例えば、ＣＰＵ１０は、コアユニット７０に作用する重力加速度の方向を示す３次元ベクトルデータをコアユニット７０の静的な姿勢として、姿勢データＤｈに格納する。
【０１１２】
図１６に戻り、ステップ４４におけるコアユニット７０の姿勢算出処理の後、ＣＰＵ１０は、加速度変化量ａｃｃｖを算出する処理を行って（ステップ４５）、処理を次のステップに進める。以下、図１８を参照して、上記ステップ４５で行う加速度変化量算出処理について説明する。
【０１１３】
図１８において、ＣＰＵ１０は、最新加速度データＤａに含まれるＸ軸方向加速度データＤａ１に格納された最新加速度ａｃｃｎＸを参照して、最新加速度ａｃｃｎＸが加速度センサ７０１の測定限界に達しているか否かを判断する（ステップ８１）。一般的に、加速度センサ７０１および７６１は、加速度が測定可能な範囲が限られており、その限度を超えたときに当該範囲の上限値（下限値）を出力することがある。例えば、加速度の測定可能範囲が−４Ｇ〜＋４Ｇの加速度センサ７０１や加速度センサ７６１を用いた場合、コアユニット７０やサブユニット７６に４Ｇ以上の加速度が作用しても−４Ｇまたは＋４Ｇを示す加速度データを出力する。上記ステップ８１においては、このような加速度の測定可能範囲を超える加速度が作用しているか否かの判定が行われる。例えば、ＣＰＵ１０は、加速度の測定可能範囲の上下限値付近となる値を閾値（例えば、−３．３９Ｇおよび＋３．３９Ｇ）として、最新加速度ａｃｃｎＸ≦−３．３９または最新加速度ａｃｃｎＸ≧＋３．３９である場合、最新加速度ａｃｃｎＸが加速度センサ７０１の測定限界に達していると判断する。そして、ＣＰＵ１０は、最新加速度ａｃｃｎＸが測定限界に達していない場合、次のステップ８２に処理を進める。一方、ＣＰＵ１０は、最新加速度ａｃｃｎＸが測定限界に達している場合、次のステップ８３に処理を進める。
【０１１４】
ステップ８２において、ＣＰＵ１０は、Ｘ軸方向の加速度変化量ａｃｃｖＸを算出してＸ軸方向加速度変化量データＤｃ１を更新し、次のステップ８５に処理を進める。例えば、上記ステップ８２において、ＣＰＵ１０は、現在格納されている最新加速度ａｃｃｎＸおよび最終加速度ａｃｃｌＸを参照して、加速度変化量ａｃｃｖＸをａｃｃｎＸ−ａｃｃｌＸで算出する。
【０１１５】
一方、ステップ８３において、ＣＰＵ１０は、加速度変化量ａｃｃｖＸを予測によって算出する処理を行ってＸ軸方向加速度変化量データＤｃ１を更新し、次のステップに処理を進める。例えば、上記ステップ８３において、ＣＰＵ１０は、現在格納されている加速度変化量ａｃｃｖＸ（すなわち、前回の処理で算出された加速度変化量ａｃｃｖＸ）を参照し、当該加速度変化量ａｃｃｖＸに所定の減衰率を乗算して新たな加速度変化量ａｃｃｖＸを算出して、Ｘ軸方向加速度変化量データＤｃ１を更新する。ここで、上記加速度変化量ａｃｃｖＸに乗算する値は、加速度センサ７０１の測定範囲外の値を予測するための加速度変化量の減衰率であり、１未満の正の値（例えば０．６）である。
【０１１６】
次に、ＣＰＵ１０は、最新加速度ａｃｃｎＸをステップ８３で算出された加速度変化量ａｃｃｖＸに合わせて修正してＸ軸方向加速度データＤａ１を更新し（ステップ８４）、次のステップ８５に処理を進める。例えば、ＣＰＵ１０は、現在格納されている最新加速度ａｃｃｎＸを参照し、当該最新加速度ａｃｃｎＸにステップ８３で算出された加速度変化量ａｃｃｖＸを加算して新たな最新加速度ａｃｃｎＸを算出して、Ｘ軸方向加速度データＤａ１を更新する。
【０１１７】
ステップ８５において、ＣＰＵ１０は、最新加速度データＤａに含まれるＹ軸方向加速度データＤａ２に格納された最新加速度ａｃｃｎＹを参照して、最新加速度ａｃｃｎＹが加速度センサ７０１の測定限界に達しているか否かを判断する。例えば、ＣＰＵ１０は、上記ステップ８１と同様に、加速度の測定可能範囲の上下限値付近となる値を閾値（例えば、−３．３９Ｇおよび＋３．３９Ｇ）として、最新加速度ａｃｃｎＹ≦−３．３９または最新加速度ａｃｃｎＹ≧＋３．３９である場合、最新加速度ａｃｃｎＹが加速度センサ７０１の測定限界に達していると判断する。そして、ＣＰＵ１０は、最新加速度ａｃｃｎＹが測定限界に達していない場合、次のステップ８６に処理を進める。一方、ＣＰＵ１０は、最新加速度ａｃｃｎＹが測定限界に達している場合、次のステップ８７に処理を進める。
【０１１８】
ステップ８６において、ＣＰＵ１０は、Ｙ軸方向の加速度変化量ａｃｃｖＹを算出してＹ軸方向加速度変化量データＤｃ２を更新し、次のステップ８９に処理を進める。例えば、上記ステップ８６において、ＣＰＵ１０は、現在格納されている最新加速度ａｃｃｎＹおよび最終加速度ａｃｃｌＹを参照して、加速度変化量ａｃｃｖＹをａｃｃｎＹ−ａｃｃｌＹで算出する。
【０１１９】
一方、ステップ８７において、ＣＰＵ１０は、加速度変化量ａｃｃｖＹを予測によって算出する処理を行ってＹ軸方向加速度変化量データＤｃ２を更新し、次のステップに処理を進める。例えば、上記ステップ８７において、ＣＰＵ１０は、現在格納されている加速度変化量ａｃｃｖＹ（すなわち、前回の処理で算出された加速度変化量ａｃｃｖＹ）を参照し、当該加速度変化量ａｃｃｖＹに上記減衰率を乗算して新たな加速度変化量ａｃｃｖＹを算出して、Ｙ軸方向加速度変化量データＤｃ２を更新する。
【０１２０】
次に、ＣＰＵ１０は、最新加速度ａｃｃｎＹをステップ８７で算出された加速度変化量ａｃｃｖＹに合わせて修正してＹ軸方向加速度データＤａ２を更新し（ステップ８８）、次のステップ８９に処理を進める。例えば、ＣＰＵ１０は、現在格納されている最新加速度ａｃｃｎＹを参照し、当該最新加速度ａｃｃｎＹにステップ８７で算出された加速度変化量ａｃｃｖＹを加算して新たな最新加速度ａｃｃｎＹを算出して、Ｙ軸方向加速度データＤａ２を更新する。
【０１２１】
ステップ８９において、ＣＰＵ１０は、最新加速度データＤａに含まれるＺ軸方向加速度データＤａ３に格納された最新加速度ａｃｃｎＺを参照して、最新加速度ａｃｃｎＺが加速度センサ７０１の測定限界に達しているか否かを判断する。例えば、ＣＰＵ１０は、上記ステップ８１と同様に、加速度の測定可能範囲の上下限値付近となる値を閾値（例えば、−３．３９Ｇおよび＋３．３９Ｇ）として、最新加速度ａｃｃｎＺ≦−３．３９または最新加速度ａｃｃｎＺ≧＋３．３９である場合、最新加速度ａｃｃｎＺが加速度センサ７０１の測定限界に達していると判断する。そして、ＣＰＵ１０は、最新加速度ａｃｃｎＺが測定限界に達していない場合、次のステップ９０に処理を進める。一方、ＣＰＵ１０は、最新加速度ａｃｃｎＺが測定限界に達している場合、次のステップ９１に処理を進める。
【０１２２】
ステップ９０において、ＣＰＵ１０は、Ｚ軸方向の加速度変化量ａｃｃｖＺを算出してＺ軸方向加速度変化量データＤｃ３を更新し、当該サブルーチンによる処理を終了する。例えば、上記ステップ９０において、ＣＰＵ１０は、現在格納されている最新加速度ａｃｃｎＺおよび最終加速度ａｃｃｌＺを参照して、加速度変化量ａｃｃｖＺをａｃｃｎＺ−ａｃｃｌＺで算出する。
【０１２３】
一方、ステップ９１において、ＣＰＵ１０は、加速度変化量ａｃｃｖＺを予測によって算出する処理を行ってＺ軸方向加速度変化量データＤｃ３を更新し、次のステップに処理を進める。例えば、上記ステップ９１において、ＣＰＵ１０は、現在格納されている加速度変化量ａｃｃｖＺ（すなわち、前回の処理で算出された加速度変化量ａｃｃｖＺ）を参照し、当該加速度変化量ａｃｃｖＺに上記減衰率を乗算して新たな加速度変化量ａｃｃｖＺを算出して、Ｚ軸方向加速度変化量データＤｃ３を更新する。
【０１２４】
次に、ＣＰＵ１０は、最新加速度ａｃｃｎＺをステップ９１で算出された加速度変化量ａｃｃｖＺに合わせて修正してＺ軸方向加速度データＤａ３を更新し（ステップ９２）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、現在格納されている最新加速度ａｃｃｎＺを参照し、当該最新加速度ａｃｃｎＺにステップ９１で算出された加速度変化量ａｃｃｖＺを加算して新たな最新加速度ａｃｃｎＺを算出して、Ｚ軸方向加速度データＤａ３を更新する。
【０１２５】
このようにステップ４５で算出される加速度変化量ａｃｃｖは、各軸毎に加速度変化量ａｃｃｖＸ、ａｃｃｖＹ、およびａｃｃｖＺとして算出しており、変化量ベクトルとして用いることができる。
【０１２６】
図１６に戻り、ステップ４５における加速度変化量ａｃｃｖを算出した後、ＣＰＵ１０は、最新加速度ａｃｃｎで最終加速度ａｃｃｌを更新して、最終加速度データＤｂに格納し（ステップ４６）、処理を次のステップに進める。例えば、ＣＰＵ１０は、現在最新加速度データＤａに格納されている最新加速度ａｃｃｎＸ、ａｃｃｎＹ、およびａｃｃｎＺを、それぞれ最終加速度ａｃｃｌＸ、ａｃｃｌＹ、およびａｃｃｌＺとして最終加速度データＤｂに格納する。
【０１２７】
次に、ＣＰＵ１０は、累積ベクトルｖｅｃａを所定量減衰させて、累積ベクトルデータＤｄを更新し（ステップ４７）、処理を次のステップに進める。例えば、ＣＰＵ１０は、現在格納されている累積ベクトルｖｅｃａのＸ軸成分ｖｅｃａＸを参照し、当該Ｘ軸成分ｖｅｃａＸに所定の減衰率（１未満の正の値であり、例えば０．８９）を乗算して新たなＸ軸成分ｖｅｃａＸを算出してＸ軸方向成分データＤｄ１を更新する。また、ＣＰＵ１０は、現在格納されているＹ軸成分ｖｅｃａＹに上記減衰率を乗算して新たなＹ軸成分ｖｅｃａＹを算出してＹ軸方向成分データＤｄ２を更新する。そして、ＣＰＵ１０は、現在格納されているＺ軸成分ｖｅｃａＺに上記減衰率を乗算して新たなＺ軸成分ｖｅｃａＺを算出してＺ軸方向成分データＤｄ３を更新する。
【０１２８】
なお、上記ステップ４７においては、累積ベクトルｖｅｃａの各成分に所定の減衰率を乗算することによって、累積ベクトルｖｅｃａを減衰しているが、他の方法で累積ベクトルｖｅｃａを減衰させてもかまわない。例えば、累積ベクトルｖｅｃａの各成分が０となる方向に一定量加算または減算することによって、累積ベクトルｖｅｃａを減衰させてもかまわない。
【０１２９】
次に、ＣＰＵ１０は、累積ベクトルｖｅｃａに最新加速度ａｃｃｎを加算して、累積ベクトルデータＤｄを更新し（ステップ４８）、処理を次のステップに進める。例えば、ＣＰＵ１０は、現在格納されている累積ベクトルｖｅｃａのＸ軸成分ｖｅｃａＸを参照し、当該Ｘ軸成分ｖｅｃａＸに最新加速度ａｃｃｎＸを加算して新たなＸ軸成分ｖｅｃａＸを算出してＸ軸方向成分データＤｄ１を更新する。また、ＣＰＵ１０は、現在格納されているＹ軸成分ｖｅｃａＹを参照し、当該Ｙ軸成分ｖｅｃａＹに最新加速度ａｃｃｎＹを加算して新たなＹ軸成分ｖｅｃａＹを算出してＹ軸方向成分データＤｄ２を更新する。そして、ＣＰＵ１０は、現在格納されているＺ軸成分ｖｅｃａＺを参照し、当該Ｚ軸成分ｖｅｃａＺに最新加速度ａｃｃｎＺを加算して新たなＺ軸成分ｖｅｃａＺを算出してＺ軸方向成分データＤｄ３を更新する。なお、上記ステップ４７およびステップ４８は、同時に実行してもいいし、実行する順序を逆にしてもかまわない。
【０１３０】
次に、ＣＰＵ１０は、追従ベクトルｖｅｃｇを算出し（ステップ４９）、次のステップに処理を進める。例えば、ＣＰＵ１０は、累積ベクトルデータＤｄに格納されたＸ軸成分ｖｅｃａＸ、Ｙ軸成分ｖｅｃａＹ、およびＺ軸成分ｖｅｃａＺと、追従ベクトルデータＤｅに格納された追従ベクトルｖｅｃｇのＸ軸成分ｖｅｃｇＸ、Ｙ軸成分ｖｅｃｇＹ、およびＺ軸成分ｖｅｃｇＺとを参照する。そして、ＣＰＵ１０は、新たなＸ軸成分ｖｅｃｇＸ、Ｙ軸成分ｖｅｃｇＹ、およびＺ軸成分ｖｅｃｇＺを、それぞれ
ｖｅｃｇＸ←ｖｅｃｇＸ＋（ｖｅｃａＸ−ｖｅｃｇＸ）＊Ｋ
ｖｅｃｇＹ←ｖｅｃｇＹ＋（ｖｅｃａＹ−ｖｅｃｇＹ）＊Ｋ
ｖｅｃｇＺ←ｖｅｃｇＺ＋（ｖｅｃａＺ−ｖｅｃｇＺ）＊Ｋ
で算出し、追従ベクトルデータＤｅを更新する。ここで、Ｋは追従係数であり、例えばＫ＝０．００６に設定される。このように、追従ベクトルｖｅｃｇは、現時点の累積ベクトルｖｅｃａの各軸成分値（ｖｅｃａＸ、ｖｅｃａＹ、ｖｅｃａＺ）に、所定の割合でそれぞれ追従させた各軸成分値（ｖｅｃｇＸ、ｖｅｃｇＹ、ｖｅｃｇＺ）を有しており、現時点の累積ベクトルｖｅｃａに所定の割合で逐次追従させたものである。上記算出式によって、追従ベクトルｖｅｃｇは、累積ベクトルｖｅｃａに追従するベクトルとして算出されているが、追従係数Ｋが非常に小さな値であるため、累積ベクトルｖｅｃａのＸ軸成分ｖｅｃａＸ、Ｙ軸成分ｖｅｃａＹ、およびＺ軸成分ｖｅｃａＺを平滑化したようなベクトルとなる。また、追従ベクトルｖｅｃｇは、常にコアユニット７０に作用している重力加速度等の静的加速度成分を累積したパラメータとしても扱うことができる。
【０１３１】
なお、上記ステップ４９においては、現時点の累積ベクトルｖｅｃａの各軸成分値（ｖｅｃａＸ、ｖｅｃａＹ、ｖｅｃａＺ）に、所定の割合でそれぞれ追従させた各軸成分値を算出することによって追従ベクトルｖｅｃｇを設定したが、他の時点における累積ベクトルｖｅｃａを用いて追従ベクトルｖｅｃｇを設定してもかまわない。例えば、現時点から数フレーム前までに算出された過去の時点における累積ベクトルｖｅｃａの各軸成分値（ｖｅｃａＸ、ｖｅｃａＹ、ｖｅｃａＺ）に、所定の割合でそれぞれ追従させた各軸成分値を算出することによって追従ベクトルｖｅｃｇを設定してもかまわない。
【０１３２】
次に、ＣＰＵ１０は、差分ベクトルｖｅｃｄを算出し（ステップ５０）、次のステップに処理を進める。例えば、ＣＰＵ１０は、累積ベクトルデータＤｄに格納されたＸ軸成分ｖｅｃａＸ、Ｙ軸成分ｖｅｃａＹ、およびＺ軸成分ｖｅｃａＺと、追従ベクトルデータＤｅに格納された追従ベクトルｖｅｃｇのＸ軸成分ｖｅｃｇＸ、Ｙ軸成分ｖｅｃｇＹ、およびＺ軸成分ｖｅｃｇＺとを参照する。そして、ＣＰＵ１０は、新たな差分ベクトルｖｅｃｄのＸ軸成分ｖｅｃｄＸ、Ｙ軸成分ｖｅｃｄＹ、およびＺ軸成分ｖｅｃｄＺをそれぞれ
ｖｅｃｄＸ＝ｖｅｃａＸ−ｖｅｃｇＸ
ｖｅｃｄＹ＝ｖｅｃａＹ−ｖｅｃｇＹ
ｖｅｃｄＺ＝ｖｅｃａＺ−ｖｅｃｇＺ
で算出し、差分ベクトルデータＤｆを更新する。上記算出式から明らかなように、差分ベクトルｖｅｃｄは、累積ベクトルｖｅｃａから追従ベクトルｖｅｃｇが除かれている。
【０１３３】
次に、ＣＰＵ１０は、ゲームメイン処理を行い（ステップ５１）、処理を次のステップに進める。ＣＰＵ１０は、上記ステップ５０の処理で算出された差分ベクトルｖｅｃｄを用いて、ゲームメイン処理を行う。例えば、ＣＰＵ１０は、差分ベクトルｖｅｃｄの各成分（Ｘ軸成分ｖｅｃｄＸ、Ｙ軸成分ｖｅｃｄＹ、Ｚ軸成分ｖｅｃｄＺ）を仮想ゲーム空間にスケーリングして直接座標指定し、当該座標指定値を用いてゲーム処理を行う。一例として、ＣＰＵ１０は、差分ベクトルｖｅｃｄの各成分を、オブジェクトＯＢＪの位置ｐｏｓのｘ軸座標ｐｏｓｘ、ｙ軸座標ｐｏｓｙ、およびｚ軸座標ｐｏｓｚにそれぞれ置き換えて座標指定して仮想ゲーム空間位置データＤｇを更新する。そして、ＣＰＵ１０は、仮想ゲーム空間の位置ｐｏｓにオブジェクトＯＢＪを配置して、ゲーム画像をモニタ２に表示することによって、一連のゲーム処理を行う。以下、図１９および図２０を参照して、差分ベクトルｖｅｃｄを用いたゲーム処理例を説明する。なお、図１９は、プレイヤがコアユニット７０を動かす実空間と、モニタ２に表示される仮想ゲーム空間との関係の一例を示す図である。図２０は、プレイヤがコアユニット７０を静止状態から上に動かした際のＹ軸方向に対する各パラメータの変化例を示す図である。
【０１３４】
図１９において、仮想ゲーム空間には、互いに直交するｘｙｚ軸が設定される。ここで、コアユニット７０の下面を鉛直下方向に向けた状態でコアユニット７０の前面をモニタ２の正面に向けた場合、当該モニタ２に表示される仮想ゲーム空間のｘｙｚ軸と、コアユニット７０に設定されたＸＹＺ軸との位置関係は、図１９に示すようにそれぞれ同じ方向となる位置関係となる。具体的には、コアユニット７０に設定されたＸ軸正方向が仮想ゲーム空間に設定されたｘ軸正方向となり、コアユニット７０に設定されたＹ軸正方向が仮想ゲーム空間に設定されたｙ軸正方向となり、コアユニット７０に設定されたＺ軸正方向が仮想ゲーム空間に設定されたｚ軸正方向となる。
【０１３５】
仮想ゲーム空間に配置されるオブジェクトＯＢＪの位置は、ｘｙｚ座標値で示され、具体的にはオブジェクトの位置ｐｏｓ（ｐｏｓｘ，ｐｏｓｙ，ｐｏｓｚ）で設定される。そして、差分ベクトルｖｅｃｄの各成分（Ｘ軸成分ｖｅｃｄＸ、Ｙ軸成分ｖｅｃｄＹ、Ｚ軸成分ｖｅｃｄＺ）を仮想ゲーム空間にスケーリングして座標指定することによって、位置ｐｏｓ（ｐｏｓｘ，ｐｏｓｙ，ｐｏｓｚ）が設定される。例えば、位置ｐｏｓ（ｐｏｓｘ，ｐｏｓｙ，ｐｏｓｚ）は、それぞれ
ｐｏｓｘ＝ｖｅｃｄＸ
ｐｏｓｙ＝ｖｅｃｄＹ
ｐｏｓｚ＝ｖｅｃｄＺ
によって算出される。
【０１３６】
コアユニット７０が実空間において静止している場合（図１９において破線で示すコアユニット７０）、差分ベクトルｖｅｃｄが（０，０，０）となる（図２０のＡ状態）。この場合、位置ｐｏｓ０（ｐｏｓ０ｘ，ｐｏｓ０ｙ，ｐｏｓ０ｚ）＝（０，０，０）が座標指定されるため、仮想ゲーム空間においてオブジェクトＯＢＪがｘｙｚ軸座標の原点（以下、基準位置と記載する）に配置される（図１９において破線で示すオブジェクトＯＢＪ）。
【０１３７】
その後、プレイヤがコアユニット７０を上面方向（反重力方向）へ動かして停止する場合を想定する。この場合、コアユニット７０には上面方向への加速度が作用するため、加速度センサ７０１から出力されるデータは、コアユニット７０に作用する加速度とは真逆方向の加速度、すなわち最新加速度ａｃｃｎ（図２０では、最新加速度ａｃｃｎのうち、Ｙ軸成分加速度ａｃｃｎＹの変化を破線で示す）がＹ軸負方向に変化する（図２０のＢ状態）。その後、コアユニット７０を上面方向に動かして停止させると、コアユニット７０には下面方向の加速度（減速時の加速度）が作用するため、加速度センサ７０１から出力されるデータが示す最新加速度ａｃｃｎは、コアユニット７０の動きが停止するときにＹ軸正方向に変化する（図２０のＣ状態）。
【０１３８】
このような最新加速度ａｃｃｎの変化に対して、最新加速度ａｃｃｎの各成分値を順次累積して累積ベクトルｖｅｃａ（図２０では、累積ベクトルｖｅｃａのＹ軸成分ｖｅｃａＹの変化を一点鎖線で示す）が得られる。累積ベクトルｖｅｃａは、最新加速度ａｃｃｎの各成分値の累積となるため、最新加速度ａｃｃｎの変化を大きくしたような変化を示す。ここで、累積ベクトルｖｅｃａは、常にその値が減衰する（上記ステップ４７参照）ため、コアユニット７０が加速している状態（上記Ｂ状態）等では累積と減衰とが相反する方向に働く。その後のコアユニット７０が減速している状態（上記Ｃ状態）等では、累積ベクトルｖｅｃａの値の正負が変わるまでの期間で累積と減衰とが同じ方向に働く。したがって、累積ベクトルｖｅｃａは、コアユニット７０が減速している方向（つまり、コアユニット７０を動かしている方向）により大きく変化することになる。
【０１３９】
このような累積ベクトルｖｅｃａの変化に対して、追従ベクトルｖｅｃｇ（図２０では、追従ベクトルｖｅｃｇのＹ軸成分ｖｅｃｇＹの変化を二点鎖線で示す）は、現時点の累積ベクトルｖｅｃａを目標として遅れて追うように変化する。つまり、追従ベクトルｖｅｃｇは、上述した累積ベクトルｖｅｃａの変化を平滑化したような変化となる。
【０１４０】
このような累積ベクトルｖｅｃａおよび追従ベクトルｖｅｃｇの変化に対して、両者を差分することによって差分ベクトルｖｅｃｄ（図２０では、差分ベクトルｖｅｃｄのＹ軸成分ｖｅｃｄＹの変化を太線で示す）が得られる。つまり、差分ベクトルｖｅｃｄは、累積ベクトルｖｅｃａの変化を平滑化した追従ベクトルｖｅｃｇを基準とした累積ベクトルｖｅｃａの変化を示す。したがって、図２０に示すように、差分ベクトルｖｅｃｄは、コアユニット７０の動かし始め（図２０のＢ状態）に若干逆方向の値が算出されることもあるが、結果的にコアユニット７０を動かした方向の値が大きくなり（図２０のＣ状態）、コアユニット７０を動かした方向を示している期間も長くなる。
【０１４１】
したがって、プレイヤがコアユニット７０を上面方向へ動かして停止する場合、差分ベクトルｖｅｃｄ（ｖｅｃｄＸ，ｖｅｃｄＹ，ｖｅｃｄＺ）は、図１９に示すようなＹ軸正方向のベクトル（例えば、差分ベクトルｖｅｃｄ（０，＋ａ，０））を示す。つまり、プレイヤがコアユニット７０を動かす方向と同じ方向の差分ベクトルｖｅｃｄが算出される。
【０１４２】
そして、算出されたＹ軸正方向の差分ベクトルｖｅｃｄの各成分を仮想ゲーム空間にスケーリングして新たな座標指定を行うことによって、位置ｐｏｓが基準位置から変化する。例えば、差分ベクトルｖｅｃｄ（０，＋ａ，０）をそのまま仮想ゲーム空間のｘｙｚ軸座標値にスケーリングして座標指定することによって、位置ｐｏｓが基準位置から（０，＋ａ，０）に変化する。この位置ｐｏｓの変化に応じて、オブジェクトＯＢＪの位置も変化するため、当該オブジェクトＯＢＪが仮想ゲーム空間の基準位置からｙ軸正方向へ移動して、モニタ２に表示される。一方、上述したようにコアユニット７０に設定されたＹ軸正方向が仮想ゲーム空間に設定されたｙ軸正方向となるため、結果的にプレイヤが実空間でコアユニット７０を動かす方向に、オブジェクトＯＢＪが仮想ゲーム空間で動いてモニタ２に表示されることになる。例えば、位置ｐｏｓにスティックオブジェクトＯＢＪ１を配置する、位置ｐｏｓにキャラクタオブジェクトＯＢＪを配置する、または位置ｐｏｓに物オブジェクトＯＢＪを配置することによって、上述した図１２〜図１４を用いて説明したゲーム例の実現が可能となる。このように、プレイヤがコアユニット７０を動かし始めた位置を基準としたコアユニット７０の位置として差分ベクトルｖｅｃｄを算出し、当該差分ベクトルｖｅｃｄを仮想ゲーム空間にスケーリングすることによって、コアユニット７０の実空間上の位置に応じた仮想ゲーム空間上の位置が指定可能となる。
【０１４３】
なお、図１９に示した各座標軸の関係は、加速度センサ７０１から出力されるデータが、加速度センサ７０１に加えられる加速度とは真逆方向の加速度を示すデータを出力し、当該データをそのまま仮想ゲーム空間へスケーリングすることを前提にしている。そして、コアユニット７０の座標軸（ＸＹＺ軸）の方向と仮想ゲーム空間の座標軸（ｘｙｚ軸）の方向とを同じにすることによって、コアユニット７０の動く位置と同じ方向にスケーリングされて座標指定される態様を示している。しかしながら、加速度センサの特性が加速度と同じ方向の加速度を示すデータを出力するときや、処理途中でデータから得られる加速度の正負を逆に変換するとき等は、仮想ゲーム空間またはコアユニット７０に設定する座標軸の方向を図１９とは逆にしてもかまわない。取り扱うデータの正負関係によって、コアユニット７０の座標軸および／または仮想ゲーム空間の座標軸を適宜設定すれば、コアユニット７０の動く位置と同じ方向に座標指定可能であることは言うまでもない。
【０１４４】
なお、円を描くようにコアユニット７０を動かし続けたり、コアユニット７０を上下に繰り返し振り続けたりするように、コアユニット７０を常に動かし続けるような場合は、Ｙ軸方向に対する各パラメータの変化が例えば図２１に示したようになる。この場合、差分ベクトルｖｅｃｄにコアユニット７０の動きとは逆方向の成分が含まれていても、直前のコアユニット７０の動きから得られる値によって相殺されるため、オブジェクトＯＢＪの動きに視覚的な影響を与えることがない。
【０１４５】
なお、上記ステップ５１の処理で行われる差分ベクトルｖｅｃｄを用いたゲームメイン処理は、差分ベクトルｖｅｃｄが所定の条件を満たすときのみ有効にしてもかまわない。例えば、ＣＰＵ１０は、差分ベクトルｖｅｃｄの大きさが所定の閾値を越えたとき、差分ベクトルｖｅｃｄを用いたゲームメイン処理を行う。具体的には、ＣＰＵ１０は、差分ベクトルｖｅｃｄの大きさが所定の閾値を越えているとき、差分ベクトルｖｅｃｄの各成分（Ｘ軸成分ｖｅｃｄＸ、Ｙ軸成分ｖｅｃｄＹ、Ｚ軸成分ｖｅｃｄＺ）を仮想ゲーム空間にスケーリングして直接座標指定し、当該座標指定値を用いてゲーム処理を行う。一方、ＣＰＵ１０は、差分ベクトルｖｅｃｄの大きさが所定の閾値を越えていないとき、所定の値（例えば、予め決められた固定値や前回の処理で算出された座標指定値）を上記座標指定値としてゲーム処理を行う。これによって、累積ベクトルｖｅｃｄの大きさが所定の閾値より大きいときに当該累積ベクトルｖｅｃｄにしたがって決められる座標指定値が有効となるため、コアユニット７０に対する微小な動きがキャンセルされ、コアユニット７０の動きの誤認識も防止することができる。
【０１４６】
図１６に戻り、ＣＰＵ１０は、上記ステップ５１のゲームメイン処理の後、ゲームを終了するか否かを判断する（ステップ５２）。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。ＣＰＵ１０は、ゲームを終了しない場合に上記ステップ４３に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【０１４７】
ここで、上述した加速度データ処理における基本原理について説明する。例えば、加速度センサ７０１から得られる値をそのまま仮想ゲーム空間にスケーリングして座標指定した場合、コアユニット７０の動きとは異なった位置や方向に位置ｐｏｓが設定されることがある。一例として、コアユニット７０には常に重力加速度が作用しているため、コアユニット７０が静止状態または移動状態であっても、常に当該重力加速度が影響した値が仮想ゲーム空間に座標指定され、コアユニット７０の動きとは無関係な位置ｐｏｓが算出されることがあり得る。また、コアユニット７０を所定方向へ移動させて静止するとき、コアユニット７０には、所定方向の加速度が生じた後に逆方向の加速度が生じる。したがって、逆方向の加速度が生じる期間では、コアユニット７０の動きとは逆方向の位置ｐｏｓが算出される。さらに、加速度センサ７０１等の機器自体の精度誤差が直接影響するため、コアユニット７０の動きに応じて、プレイヤが意図するような位置ｐｏｓが算出することが困難となる。
【０１４８】
一方、本願の処理動作では、位置ｐｏｓを求めるために差分ベクトルｖｅｃｄを用いている。この差分ベクトルｖｅｃｄは、上述したようにコアユニット７０の移動に応じて生じる加速度ベクトルを積分したようなベクトルであり、コアユニット７０が実空間において移動する速度を模して変化するパラメータである。したがって、プレイヤがコアユニット７０を停止状態から一方方向へ動かして停止させた場合、当該動きをベクトルで示してやがて０となる。したがって、差分ベクトルｖｅｃｄの各成分を仮想ゲーム空間にスケーリングして座標指定することによって位置ｐｏｓを求めると、基準位置からプレイヤがコアユニット７０を動かす方向に位置ｐｏｓが移動して、やがて基準位置に戻ることになる。このように差分ベクトルｖｅｃｄを仮想ゲーム空間にスケーリングして座標指定することによって位置ｐｏｓを得る場合、コアユニット７０の静止に応じて位置ｐｏｓが基準位置に戻るため、コアユニット７０の動きに応じて仮想ゲーム空間を移動させながら、最終的またはある程度の周期で基準位置に戻すような位置ｐｏｓの座標指定に最適である。
【０１４９】
また、加速度センサ７０１から得られる値から重力加速度等の静的成分を除いて累積したベクトルは、理論的にはコアユニット７０の静止状態に応じて０となる。しかしながら、上記ベクトルは、加速度センサ７０１等の機器自体の精度誤差やプレイヤの不安定な操作状態等によって、現実には０とならないことが多い。一方、差分ベクトルｖｅｃｄ（累積ベクトルｖｅｃａ）は、常に減衰される３次元ベクトルである（ステップ４７参照）。このように差分ベクトルｖｅｃｄを常に減衰することによって、加速度センサ７０１等の機器自体の精度誤差を吸収し、コアユニット７０の静止状態であれば差分ベクトルｖｅｃｄを確実に０に近づけることができる。また、差分ベクトルｖｅｃｄ（累積ベクトルｖｅｃａ）に乗算する減衰率を小さく（すなわち、減衰を大きく）すると、コアユニット７０の大きな動きに反応した位置ｐｏｓが座標指定される。一方、差分ベクトルｖｅｃｄ（累積ベクトルｖｅｃａ）に乗算する減衰率を大きく（すなわち、減衰を小さく）すると、コアユニット７０の小さな動きにも反応して位置ｐｏｓが座標指定される。つまり、累積ベクトルｖｅｃａに乗算する減衰率を調整することによって、操作に対する応答感度を調整することもできる。
【０１５０】
また、上記ステップ４９で算出する追従ベクトルｖｅｃｇは、追従係数Ｋが非常に小さな値（例えばＫ＝０．００６）に設定されている。しかしながら、追従係数Ｋの値を調整することによって、検出されたコアユニット７０の動的加速度成分に影響を与える度合いを調整するパラメータとして用いることができる。例えば、上記ステップ４９で用いられる追従係数Ｋを大きく（すなわち、追従を強く）すると、上記ステップ５０における差分ベクトルｖｅｃｄの算出においてコアユニット７０を動かすことによって生じた動的加速度成分を累積した値も累積ベクトルｖｅｃａから除算してしまう。したがって、追従係数Ｋを大きくした場合、コアユニット７０を動かして座標指定された位置ｐｏｓが仮想ゲーム空間において維持されにくくなり、位置ｐｏｓが基準位置に戻るタイミングが早くなる。一方、追従係数Ｋを小さく（すなわち、追従を弱く）すると、コアユニット７０を動かすことによって生じた動的加速度成分が当該動作後も累積ベクトルｖｅｃａとして一定期間残存してしまう。したがって、追従係数Ｋを小さくした場合、コアユニット７０を動かして座標指定された位置ｐｏｓが仮想ゲーム空間において維持されやすくなり、位置ｐｏｓが基準位置に戻るタイミングが遅くなる。
【０１５１】
また、コアユニット７０とサブユニット７６とを用いて、それぞれ仮想ゲーム空間における別の位置ｐｏｓを求めることもできる。例えば、仮想ゲーム空間にコアユニット７０用の第１の基準位置および第１の座標軸と、サブユニット７６用の第２の基準位置および第２の座標軸とをそれぞれ別に設定する。そして、上述した処理動作に基づいて、コアユニット７０から得られるコア加速度データを用いて第１の差分ベクトルｖｅｃｄ１を算出し、第１の差分ベクトルｖｅｃｄ１の各成分値を第１の座標軸にスケーリングして座標指定する。また、上述した処理動作に基づいて、サブユニット７６から得られるサブ加速度データを用いて第２の差分ベクトルｖｅｃｄ２を算出し、第２の差分ベクトルｖｅｃｄ２の各成分値を第２の座標軸にスケーリングして座標指定する。このように、コアユニット７０およびサブユニット７６からそれぞれ得られる加速度データから算出された差分ベクトルｖｅｃｄを、別々の座標軸にスケーリングして座標指定することによって、別の位置ｐｏｓを求めることができる。これによって、プレイヤは、コアユニット７０およびサブユニット７６を操作して、２つのオブジェクトＯＢＪをそれぞれ別の動きで動かすことも可能となる。例えば、コアユニット７０およびサブユニット７６を操作して、図１２に示すような２つのスティックオブジェクトＯＢＪ１およびＯＢＪ２をそれぞれ振り下ろすような仮想演奏が可能となる。
【０１５２】
また、仮想ゲーム空間に設定される基準位置（ｘｙｚ座標の原点）は、オブジェクトＯＢＪの移動に応じて当該基準位置も移動させてもかまわない。例えば、図１３に示したようなゲーム例の場合、プレイヤが所定の操作部７２を操作することに応じて、その時点のキャラクタオブジェクトＯＢＪの移動方向に基準位置も移動するようにしてもかまわない。これによって、仮想ゲーム空間においてキャラクタオブジェクトＯＢＪが移動可能な範囲に制限がなくなるため、より自由度の高いゲームが可能となる。
【０１５３】
また、上記ステップ４５の加速度変化量ａｃｃｖの算出においては、加速度センサ７０１の測定限界範囲を超えたときに、直前の加速度変化量ａｃｃｖを用いて新たに算出する加速度変化量ａｃｃｖの予測を行っている。この加速度変化量ａｃｃｖの予測方法は、単純に直前の加速度変化量ａｃｃｖに所定の減衰率を乗算して行われているため、即時性が高い。例えば、加速度センサ７０１から得られる加速度データを全てバッファリングしてからスプライン曲線等で補間する方法と比較すると、非常に即時性が高くバッファリングのメモリも不要となり計算処理負荷も軽くなる。
【０１５４】
また、上記ステップ５１におけるゲームメイン処理においては、姿勢データＤｈに格納されているコアユニット７０の静的な姿勢を用いれば、プレイヤがコアユニット７０を操作している実空間において、プレイヤが当該実空間のどの方向にコアユニット７０を振り動かしているのかが推定できる。例えば、上述したように、累積ベクトルｖｅｃｄを用いれば、コアユニット７０を動かし始めた位置を基準としたコアユニット７０の位置が推定でき、厳密にはコアユニット７０を基準とした位置（上面方向の位置、左側面方向の位置等）を推定できる。一方、姿勢データＤｈに格納されているコアユニット７０の静的な姿勢は、プレイヤがコアユニット７０を動かす前の静的な状態等において、コアユニット７０に対して作用する重力加速度の方向を示しており、コアユニット７０の本体に対する実空間の鉛直方向を示すデータとなる、したがって、差分ベクトルｖｅｃｄおよび姿勢データＤｈに格納されているコアユニット７０の静的な姿勢を用いれば、コアユニット７０が実空間においてどの方向に動いた位置なのか（例えば、実空間における水平方向の位置や上下方向の位置等）を推定することができる。また、コアユニット７０を操作する基本姿勢や方向（コアユニット７０でモニタ２を指し示すようにその正面をモニタ２に向ける、コアユニット７０を横持ちしてその側面をモニタ２に向ける等）を設定した場合、プレイヤがコアユニット７０を上下方向、左右方向、前後方向等のどの方向に動かした位置なのか推定することができる。
【０１５５】
また、差分ベクトルｖｅｃｄをさらに累積した値を仮想ゲーム空間にスケーリングして座標指定することによって、上述した態様とは異なったゲームメイン処理が可能となる。以下、図２２を参照して、差分ベクトルｖｅｃｄをさらに累積した値を用いてゲームメイン処理を行う場合の、ゲーム装置本体５において行われるゲーム処理の詳細を説明する。なお、図２２は、当該ゲーム処理において、ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャートである。なお、図２２に示すフローチャートにおいても、ゲーム処理のうち、プレイヤがコアユニット７０を動かすことに応じてオブジェクトＯＢＪを移動させる処理について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図２２でも、ＣＰＵ１０が実行する各ステップを「Ｓ」と略称する。
【０１５６】
図２２において、差分ベクトルｖｅｃｄを算出するまでのステップ１０１〜ステップ１１０の処理は、上述した図１６におけるステップ４１〜ステップ５０と同様である。したがって、ステップ１０１〜ステップ１１０の処理について、詳細な説明を省略する。なお、差分ベクトルｖｅｃｄをさらに累積した値（差分累積値ｄａ）を用いてゲーム処理を行う場合、図１５に記載した主な各データに加えて、差分累積値ｄａを示すデータもメインメモリに格納される。ここで、差分累積値ｄａは、差分累積値ｄａのＸ軸座標ｄａＸ、差分累積値ｄａのＹ軸座標ｄａＹ、および差分累積値ｄａのＺ軸座標ｄａＺを含んでいる。
【０１５７】
ステップ１１０における差分ベクトルｖｅｃｄ算出処理の後、ＣＰＵ１０は、所定ボタンが押下されたか否かを判断する（ステップ１１１）。ここで、本実施例で説明するゲーム処理においては、コアユニット７０を動かして仮想ゲーム空間におけるオブジェクトＯＢＪを移動させる際、所定ボタン（例えば、操作部７２ｄ（Ａボタン）や操作部７２ｉ（Ｂボタン））を押下している間のみ、その操作が有効となる。上記ステップ１１１においては、ＣＰＵ１０は、コアユニット７０から出力される操作情報に含まれているコアキーデータを参照し、上記操作を有効とする所定ボタンが押下されているか否かを判定する。そして、ＣＰＵ１０は、所定ボタンが押下されている場合、次のステップ１１２に処理を進める。一方、ＣＰＵ１０は、所定ボタンが押下されていない場合、次のステップ１１３に処理を進める。
【０１５８】
ステップ１１２において、ＣＰＵ１０は、差分累積値ｄａに差分ベクトルｖｅｃｄの各成分値を加算して新たな差分累積値ｄａを算出し、次のステップ１１３に処理を進める。例えば、ＣＰＵ１０は、現在メインメモリに格納されている差分累積値ｄａのＸ軸座標ｄａＸおよび差分ベクトルｖｅｃｄのＸ軸成分ｖｅｃｄＸを参照し、当該Ｘ軸座標ｄａＸにＸ軸成分ｖｅｃｄＸを加算して新たなＸ軸座標ｄａＸを算出して、差分累積値ｄａを示すメインメモリのデータを更新する。また、ＣＰＵ１０は、現在メインメモリに格納されている差分累積値ｄａのＹ軸座標ｄａＹおよび差分ベクトルｖｅｃｄのＹ軸成分ｖｅｃｄＹを参照し、当該Ｙ軸座標ｄａＹにＹ軸成分ｖｅｃｄＹを加算して新たなＹ軸座標ｄａＹを算出して、差分累積値ｄａを示すメインメモリのデータを更新する。さらに、ＣＰＵ１０は、現在メインメモリに格納されている差分累積値ｄａのＺ軸座標ｄａＺおよび差分ベクトルｖｅｃｄのＺ軸成分ｖｅｃｄＺを参照し、当該Ｚ軸座標ｄａＺにＺ軸成分ｖｅｃｄＺを加算して新たなＺ軸座標ｄａＺを算出して、差分累積値ｄａを示すメインメモリのデータを更新する。
【０１５９】
なお、上記ステップ１１２の処理は、所定ボタンが押下され、かつ上記ステップ１１０で算出される差分ベクトルｖｅｃｄが所定の条件を満たすときに行われてもかまわない。例えば、ＣＰＵ１０は、所定ボタンが押下され、かつ差分ベクトルｖｅｃｄの大きさが所定の閾値を越えたとき、当該差分ベクトルｖｅｃｄを加算して新たな差分累積値ｄａを算出する処理を行う。具体的には、ＣＰＵ１０は、差分ベクトルｖｅｃｄの大きさが所定の閾値を越えているとき、差分ベクトルｖｅｃｄの各成分（Ｘ軸成分ｖｅｃｄＸ、Ｙ軸成分ｖｅｃｄＹ、Ｚ軸成分ｖｅｃｄＺ）を差分累積値ｄａに加算して新たな差分累積値ｄａを算出する。これによって、累積ベクトルｖｅｃｄの大きさが所定の閾値より大きいときに当該累積ベクトルｖｅｃｄの各成分が差分累積値ｄａに加算されるため、後述するゲームメイン処理においてコアユニット７０に対する微小な動きがキャンセルされ、コアユニット７０の動きの誤認識も防止することができる。
【０１６０】
ステップ１１３において、ＣＰＵ１０は、ゲームメイン処理を行い、処理を次のステップに進める。ＣＰＵ１０は、上記ステップ１１２の処理で算出されている差分累積値ｄａを用いて、ゲームメイン処理を行う。例えば、ＣＰＵ１０は、差分累積値ｄａの各座標値（Ｘ軸座標ｄａＸ、Ｙ軸座標ｄａＹ、Ｚ軸座標ｄａＺ）を仮想ゲーム空間にスケーリングして直接座標指定して、当該座標指定値を用いてゲーム処理を行う。一例として、ＣＰＵ１０は、差分累積値ｄａの各座標値を、オブジェクトＯＢＪの位置ｐｏｓのｘ軸座標ｐｏｓｘ、ｙ軸座標ｐｏｓｙ、およびｚ軸座標ｐｏｓｚにそれぞれ置き換えて座標指定して、仮想ゲーム空間位置データＤｇを更新する。そして、ＣＰＵ１０は、仮想ゲーム空間の位置ｐｏｓにオブジェクトＯＢＪを配置して、ゲーム画像をモニタ２に表示することによって、一連のゲーム処理を行う。以下、図２３を参照して、差分累積値ｄａを用いたゲーム処理例を説明する。なお、図２３は、図１９と同様に、プレイヤがコアユニット７０を動かす実空間と、モニタ２に表示される仮想ゲーム空間との関係の一例を示す図である。
【０１６１】
図２３において、仮想ゲーム空間には、互いに直交する図１９と同様のｘｙｚ軸が設定される。すなわち、コアユニット７０の下面を鉛直下方向に向けた状態でコアユニット７０の前面をモニタ２の正面に向けた場合、当該モニタ２に表示される仮想ゲーム空間のｘｙｚ軸と、コアユニット７０に設定されたＸＹＺ軸との位置関係は、図２３に示すようにそれぞれ同じ方向となる位置関係となる。
【０１６２】
仮想ゲーム空間に配置されるオブジェクトＯＢＪの位置は、ｘｙｚ座標値で示され、具体的にはオブジェクトの位置ｐｏｓ（ｐｏｓｘ，ｐｏｓｙ，ｐｏｓｚ）で設定される。そして、差分累積値ｄａの各座標値（Ｘ軸座標ｄａＸ、Ｙ軸座標ｄａＹ、Ｚ軸座標ｄａＺ）を仮想ゲーム空間にスケーリングして座標指定することによって、位置ｐｏｓ（ｐｏｓｘ，ｐｏｓｙ，ｐｏｓｚ）が設定される。例えば、位置ｐｏｓ（ｐｏｓｘ，ｐｏｓｙ，ｐｏｓｚ）は、それぞれ
ｐｏｓｘ＝ｄａＸ
ｐｏｓｙ＝ｄａＹ
ｐｏｓｚ＝ｄａＺ
によって算出される。
【０１６３】
コアユニット７０が実空間において静止している場合（図２３において破線で示すコアユニット７０）、差分ベクトルｖｅｃｄが（０，０，０）となる。この場合、差分累積値ｄａがそれまでの差分ベクトルｖｅｃｄが累積された値で安定しており、例えば差分累積値ｄａ０＝（ｄａ０Ｘ，ｄａ０Ｙ，ｄａ０Ｚ）で安定している。したがって、この状態における位置ｐｏｓ０は、位置ｐｏｓ０（ｐｏｓ０ｘ，ｐｏｓ０ｙ，ｐｏｓ０ｚ）＝（ｄａ０Ｘ，ｄａ０Ｙ，ｄａ０Ｚ）となるため、仮想ゲーム空間においてオブジェクトＯＢＪがｘｙｚ軸座標の原点である基準位置以外に配置されて停止していることもある（図２３において破線で示すオブジェクトＯＢＪ）。
【０１６４】
その後、プレイヤが所定ボタンを押下しながらコアユニット７０を上面方向（反重力方向）へ動かして当該所定ボタンを離す場合を想定する。上述したように、プレイヤがコアユニット７０を上面方向へ動かして停止する場合、差分ベクトルｖｅｃｄ（ｖｅｃｄＸ，ｖｅｃｄＹ，ｖｅｃｄＺ）は、図２３に示すようなＹ軸正方向のベクトル（例えば、差分ベクトルｖｅｃｄ（０，＋ａ，０））を示す。つまり、プレイヤがコアユニット７０を動かす方向と同じ方向の差分ベクトルｖｅｃｄが算出される。
【０１６５】
そして、算出されたＹ軸正方向の差分ベクトルｖｅｃｄの各成分が差分累積値ｄａ０に加算されて、新たな差分累積値ｄａ（ｄａＸ，ｄａＹ，ｄａＺ）が算出される。具体的には、
ｄａＸ＝ｄａ０Ｘ＋ｖｅｃｄＸ
ｄａＹ＝ｄａ０Ｙ＋ｖｅｃｄＹ
ｄａＺ＝ｄａ０Ｚ＋ｖｅｃｄＺ
となる。そして、新たな差分累積値ｄａ（ｄａＸ，ｄａＹ，ｄａＺ）を仮想ゲーム空間にスケーリングして座標指定することによって、位置ｐｏｓが位置ｐｏｓ０から変化する。例えば、差分ベクトルｖｅｃｄ（０，＋ａ，０）が累積された新たな差分累積値ｄａをそのまま仮想ゲーム空間のｘｙｚ軸座標値にスケーリングして座標指定することによって、位置ｐｏｓ０（ｐｏｓ０ｘ，ｐｏｓ０ｙ，ｐｏｓ０ｚ）＝（ｄａ０Ｘ，ｄａ０Ｙ，ｄａ０Ｚ）から位置ｐｏｓ（ｐｏｓｘ，ｐｏｓｙ，ｐｏｓｚ）＝（ｄａＸ，ｄａＹ，ｄａＺ）に変化、すなわち位置ｐｏｓ０からｙ軸正方向に＋ａだけ移動した位置ｐｏｓが得られる。この位置ｐｏｓの変化に応じて、オブジェクトＯＢＪの位置も変化するため、当該オブジェクトＯＢＪが仮想ゲーム空間の位置ｐｏｓ０からｙ軸正方向へ移動して、モニタ２に表示される。一方、上述したようにコアユニット７０に設定されたＹ軸正方向が仮想ゲーム空間に設定されたｙ軸正方向となるため、結果的にプレイヤが実空間で所定ボタンを押下しながらコアユニット７０を動かす方向に、オブジェクトＯＢＪが仮想ゲーム空間で動いてモニタ２に表示されることになる。例えば、位置ｐｏｓに物オブジェクトＯＢＪを配置することによって、上述した図１４を用いて説明したゲーム例の実現が可能となる。この場合、プレイヤがコアユニット７０の所定ボタンを押下している間のみ操作が有効となってその位置に物オブジェクトＯＢＪが停止するため、プレイヤの意図に応じた任意の位置に物オブジェクトＯＢＪを移動させやすくなる。
【０１６６】
この本願の実施例の処理動作では、位置ｐｏｓを求めるために差分ベクトルｖｅｃｄを累積した値（差分累積値ｄａ）を用いている。ここで、差分ベクトルｖｅｃｄは、コアユニット７０が実空間において移動する速度を模して変化するパラメータである。そして、差分累積値ｄａは、差分ベクトルｖｅｃｄを累積した値であることから、コアユニット７０の速度を積分したような値であり、コアユニット７０が実空間において移動する相対位置を模して変化するパラメータである。このように、プレイヤがコアユニット７０を動かし始めた位置を基準としたコアユニット７０の位置として差分ベクトルｖｅｃｄを算出し、当該差分ベクトルｖｅｃｄを累積した値を仮想ゲーム空間にスケーリングして座標指定することによって、コアユニット７０の実空間上の相対位置に応じた仮想ゲーム空間上の位置が指定可能となる。
【０１６７】
なお、上述した処理では、プレイヤがコアユニット７０の所定ボタンを押下している間のみ操作が有効となる一例を示したが、所定ボタンの押下とは無関係に当該操作を常に有効としてもかまわない。この場合、差分ベクトルｖｅｃｄの大きさが０となるまでの期間は、常に差分累積値ｄａが更新されることになり、結果として位置ｐｏｓも移動し続ける。したがって、モニタ２に表示された物オブジェクトＯＢＪやカーソル等を仮想ゲーム空間内で移動させ続けることができ、モニタ２に表示された画面をスクロールするような操作も可能となる。また、所定ボタンの押下とは無関係に常に更新される差分累積値ｄａは、実空間におけるコアユニット７０の位置やコアユニット７０が指し示している方向を示すパラメータとして用いることができ、上述した撮像情報演算部７４による位置指定操作の補助的な利用も可能である。
【０１６８】
図２２に戻り、ＣＰＵ１０は、上記ステップ１１３のゲームメイン処理の後、ゲームを終了するか否かを判断する（ステップ１１４）。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。ＣＰＵ１０は、ゲームを終了しない場合に上記ステップ１０３に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【０１６９】
このように、差分ベクトルｖｅｃｄにしたがって決められる値（例えば、差分ベクトルｖｅｃｄの各軸成分値や差分ベクトルｖｅｃｄの各軸成分値を累積した差分累積値ｄａ）は、コアユニット７０やサブユニット７６の動かし始めからの実空間における３次元位置として用いることができる。そして、差分ベクトルｖｅｃｄにしたがって決められる値をスケーリングして仮想世界における位置ｐｏｓとして指定するため、安価な加速度センサから得られる出力値を用いた正確な位置指定が可能となる。
【０１７０】
なお、上述した処理では、コアユニット７０やサブユニット７６の動きを３次元ベクトルで認識し、位置ｐｏｓを３次元座標値でスケーリングして座標指定しているが、２次元や１次元で処理することも可能である。例えば、図１９や図２３で示される仮想ゲーム空間を、ｘｙ座標系で座標指定される２次元の仮想ゲーム世界とする。そして、上述した処理動作をＸおよびＹ成分のみを用いて行えば、ＸＹ平面に沿ったコアユニット７０やサブユニット７６の動きを２次元ベクトルで認識して、ｘｙ座標系にスケーリングした座標指定が可能となる。また、上記仮想ゲーム空間や仮想ゲーム世界において、例えば一方向のみで座標指定されるｘ軸座標系を設定する。そして、上述した処理動作をＸ成分のみを用いて行えば、Ｘ軸に沿ったコアユニット７０やサブユニット７６の動きを１次元の値で認識して、ｘ軸座標系にスケーリングした座標指定が可能となる。
【０１７１】
また、２軸方向や１軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、Ｘ軸およびＹ軸方向（図４、図５、図８参照）に対して生じる加速度を検出する加速度センサがコアユニット７０やサブユニット７６に設けられている場合、上述した処理動作をＸおよびＹ成分のみを用いて行えば、ＸＹ平面に沿ったコアユニット７０やサブユニット７６の動きを認識することが可能である。また、Ｙ軸成分のみ検出して出力する加速度センサを用いても、上述した処理動作をＹ成分のみを用いて行えば、Ｙ軸方向へのコアユニット７０やサブユニット７６の動きを認識することが可能である。
【０１７２】
また、上述した実施例では、差分ベクトルｖｅｃｄにしたがって決められる値をそのまま仮想ゲーム空間の座標値としてスケーリングして座標指定する一例を用いているが、任意の関数等を用いて仮想ゲーム空間の座標指定をしてもかまわない。例えば、差分ベクトルｖｅｃｄにしたがって決められる値に所定の係数を四則演算（加算・減算・乗算・除算）して、仮想ゲーム空間の座標系に適当なスケーリングを行うことによって、位置ｐｏｓを座標指定してもかまわない。
【０１７３】
また、上述した説明では、コアユニット７０やサブユニット７６を動かす動作に応じた処理を行う据置型のゲーム装置本体５に本願発明を適用した例を説明したが、携帯ゲーム装置にも適用することができる。例えば、携帯ゲーム装置の本体に加速度センサを搭載し、実空間において当該本体を動かすときに、当該加速度センサの出力を用いて携帯ゲーム装置の表示画面に表示された仮想ゲーム空間に対する座標指定を行う。このように本願発明を適用することで、携帯ゲーム装置等でゲームを行うには好適である。
【０１７４】
また、上述した説明では、据置型や携帯型のゲーム装置に本願発明を適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置や加速度センサが搭載された本体を有する情報処理装置にも適用することができる。例えば、前者の情報処理装置では、入力装置の加速度センサから出力される加速度データに応じて、情報処理装置が表示しているオブジェクトやウインドウの状態や位置を制御したり、画面スクロールしたりする等、入力装置に生じる加速度に基づいて様々な処理を行うことができる。また、後者の情報処理装置は、本体に加わる加速度を検出する加速度センサを搭載し、当該加速度センサから出力される加速度データに応じた処理を実行する情報処理装置であればよく、例えば一般的なパーソナルコンピュータ、携帯電話機、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）等のデバイスにも適用することができる。
【０１７５】
例えば、後者の情報処理装置の一例として、他の電話機との間で無線通信する通信部を備えた携帯電話機の場合には、携帯電話機本体に加速度センサが搭載される。そして、実空間において携帯電話機の本体を動かすときに、携帯電話機に搭載された加速度センサからの出力値を用いて携帯電話機の表示画面に表示された空間やワークエリア等の平面に対する座標指定を行う。このように本願発明を適用することで、携帯電話機等でゲームや操作を行うには好適である。
【０１７６】
また、上述した説明では、コアユニット７０およびサブユニット７６とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コアユニット７０またはサブユニット７６とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コアユニット７０またはサブユニット７６に接続されたケーブルをゲーム装置本体５の接続端子に接続する。
【０１７７】
また、上述したコアユニット７０およびサブユニット７６の形状や、それらに設けられている操作部７２および７８の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。
【０１７８】
また、本発明の情報処理プログラムやゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、情報処理プログラムやゲームプログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、情報処理プログラムやゲームプログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【０１７９】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【０１８０】
本発明に係る情報処理プログラムおよび情報処理装置は、安価な加速度センサから出力される加速度データを用いて座標指定することができ、ゲームコントローラ等の入力装置に与えられる動作に応じてゲーム処理や情報処理等を行うプログラムおよび装置や、本体等の筐体に与えられる動作に応じてゲーム処理や情報処理等を行うプログラムおよび装置として有用である。
【図面の簡単な説明】
【０１８１】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の外観構成を示す斜視図
【図４】図３のコアユニット７０の上面後方から見た斜視図
【図５】図４のコアユニット７０を下面前方から見た斜視図
【図６】図３のコアユニット７０の上筐体を外した状態を示す斜視図
【図７】図５のコアユニット７０の下筐体を外した状態を示す斜視図
【図８】サブユニット７６の一例を示す斜視図
【図９】図８のサブユニット７６の上筐体を外した状態を示す斜視図
【図１０】図３のコントローラ７の構成を示すブロック図
【図１１】図３のコントローラ７を用いてゲーム操作するときの状態を概説する図解図
【図１２】コントローラ７の動きに応じて行われる処理の第１の例を示す図
【図１３】コントローラ７の動きに応じて行われる処理の第２の例を示す図
【図１４】コントローラ７の動きに応じて行われる処理の第３の例を示す図
【図１５】ゲーム装置本体５のメインメモリに記憶される主なデータを示す図
【図１６】ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャート
【図１７】図１６におけるステップ４４のコントローラの姿勢算出処理の詳細な動作を示すサブルーチン
【図１８】図１６におけるステップ４５の加速度変化量を算出する処理の詳細な動作を示すサブルーチン
【図１９】プレイヤがコアユニット７０を動かす実空間と、モニタ２に表示される仮想ゲーム空間との関係の一例を示す図
【図２０】プレイヤがコアユニット７０を静止状態から上に動かした際のＹ軸方向に対する各パラメータの変化例を示す図
【図２１】プレイヤがコアユニット７０を動かし続けた際のＹ軸方向に対する各パラメータの変化例を示す図
【図２２】ゲーム装置本体５において実行されるゲーム処理の流れの他の例を示すフローチャート
【図２３】プレイヤがコアユニット７０を動かす実空間と、モニタ２に表示される仮想ゲーム空間との関係の他の例を示す図
【符号の説明】
【０１８２】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
４…光ディスク
５…ゲーム装置本体
１０…ＣＰＵ
１１…システムＬＳＩ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２、２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
３１…入出力プロセッサ
３２…ＧＰＵ
３３…ＤＳＰ
３４…ＶＲＡＭ
３５…内部メインメモリ
７…コントローラ
７０…コアユニット
７１、７７…ハウジング
７２、７８…操作部
７３、７９１…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１、７６１…加速度センサ
７０２…ＬＥＤ
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
７６…サブユニット
７９…接続ケーブル
８…マーカ
【図１】
0004916390.tif 000002
【図２】
0004916390.tif 000003
【図３】
0004916390.tif 000004
【図４】
0004916390.tif 000005
【図５】
0004916390.tif 000006
【図６】
0004916390.tif 000007
【図７】
0004916390.tif 000008
【図８】
0004916390.tif 000009
【図９】
0004916390.tif 000010
【図１０】
0004916390.tif 000011
【図１１】
0004916390.tif 000012
【図１２】
0004916390.tif 000013
【図１３】
0004916390.tif 000014
【図１４】
0004916390.tif 000015
【図１５】
0004916390.tif 000016
【図１６】
0004916390.tif 000017
【図１７】
0004916390.tif 000018
【図１８】
0004916390.tif 000019
【図１９】
0004916390.tif 000020
【図２０】
0004916390.tif 000021
【図２１】
0004916390.tif 000022
【図２２】
0004916390.tif 000023
【図２３】
0004916390.tif 000024