(57)【要約】【課題】加速度センサとジャイロセンサの双方を用いるゲームにおいて、入力装置の移動速度等に基づいてゲーム処理を実行することで新規な操作によるゲームが実行できるゲーム装置を提供すること。【解決手段】まず、加速度センサとジャイロセンサとを少なくとも備えた入力装置から加速度データと角速度データとを少なくとも含む操作データを取得する。次に、加速度データと角速度データに基づいて、入力装置自体の移動速度および／または入力装置自体に加えられた回転運動の中心と入力装置との相対的な位置関係を推定する。そして、推定された移動速度および／または位置関係に基づいて所定のゲーム処理を行う。【選択図】図２５
2010104592.tif 000002
【特許請求の範囲】
【請求項１】
加速度センサとジャイロセンサとを少なくとも備えた入力装置から加速度データと角速度データとを少なくとも含む操作データを取得する操作データ取得手段と、
前記加速度データと前記角速度データに基づいて、前記入力装置自体の移動速度および／または前記入力装置自体に加えられた回転運動の中心と前記入力装置との相対的な位置関係を推定する推定手段と、
推定された前記移動速度および／または前記位置関係に基づいてゲーム処理を行うゲーム処理手段とを備えるゲーム装置。
【請求項２】
前記推定手段は、前記回転運動に対して当該回転運動の中心の変化の影響を無視する近似を行って前記入力装置自体の移動速度および／または前記相対的な位置関係を推定する、請求項１に記載のゲーム装置。
【請求項３】
前記推定手段は、
所定の期間内における前記角速度データの変化に基づいて角加速度データを算出する角加速度算出手段を含み、
前記加速度データ、角速度データ、角加速度データに基づいて前記相対的な位置関係を算出し、当該位置関係および角速度データに基づいて前記移動速度を算出する、請求項１に記載のゲーム装置。
【請求項４】
前記ゲーム装置は、前記加速度データと前記角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出手段を更に備える、請求項１に記載のゲーム装置。
【請求項５】
前記加速度データで示される加速度には重力加速度が含まれており、
前記推定手段は、
前記姿勢算出手段によって算出された前記入力装置の姿勢に基づいて重力加速度を推定する重力加速度推定手段と、
前記加速度データで示される加速度から前記重力加速度を除くことによって重力成分以外の加速度成分である運動成分を算出する運動成分算出手段とを含む、
請求項４に記載のゲーム装置。
【請求項６】
前記ゲーム処理手段は、前記姿勢算出手段が算出した入力装置の姿勢および前記推定手段が算出した前記移動速度に基づいてゲーム処理を実行する、請求項４に記載のゲーム装置。
【請求項７】
前記ゲーム処理手段は、プレイヤの操作対象となる操作対象オブジェクトの仮想ゲーム空間内における姿勢を前記入力装置の姿勢に基づいて決定し、当該操作対象オブジェクトの位置を前記移動速度に基づいて決定する、請求項６に記載のゲーム装置。
【請求項８】
前記ゲーム処理手段は、前記入力装置の姿勢に基づいた制御を行い、当該姿勢に基づく制御量を、前記移動速度に基づいてさらに変化させる、請求項７に記載のゲーム装置。
【請求項９】
前記ゲーム処理手段は、前記移動速度に基づいて第１の制御を行い、前記位置関係に基づいて第２の制御を行う、請求項１に記載のゲーム装置。
【請求項１０】
前記推定手段は、前記相対的な位置関係を前記回転運動における半径を示す値として推定する、請求項１に記載のゲーム装置。
【請求項１１】
前記推定手段は、前記相対的な位置関係を前記回転運動における中心から入力装置の位置へのベクトルとして推定する、請求項１に記載のゲーム装置。
【請求項１２】
前記ゲーム装置は、前記角速度データで示される角速度の大きさに応じて、前記相対的な位置関係を補正する補正手段を更に備える、請求項１０または１１に記載のゲーム装置。
【請求項１３】
前記補正手段は、前記角速度が大きいほど、当該角速度が前記相対的な位置関係に反映される度合いが高くなるように補正を行い、前記角速度が小さいほど、当該角速度が当該相対的な位置関係に反映される度合いが低くなるように補正を行う、請求項１１に記載のゲーム装置。
【請求項１４】
前記推定手段は、前記位置関係を以下の数式を用いて算出する、請求項５に記載のゲーム装置。
【数１】
2010104592.tif 000014
ここで、Ｒｓは前記位置関係として示される値を意味し、Ａは前記運動成分算出手段が算出した運動成分として示される値を意味し、ωは前記角速度データとして示される、互いに直交するｘｙｚ軸の３軸成分で構成される角速度の値を意味する。
2010104592.tif 000015
【請求項１５】
ゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
加速度センサとジャイロセンサとを少なくとも備えた入力装置から加速度データと角速度データとを少なくとも含む操作データを取得する操作データ取得手段と、
前記加速度データと前記角速度データに基づいて、前記入力装置自体の移動速度および／または前記入力装置自体に加えられた回転運動の中心と前記入力装置との相対的な位置関係を推定する推定手段と、
推定された前記移動速度および／または前記位置関係に基づいてゲーム処理を行うゲーム処理手段として機能させる、ゲームプログラム。
【請求項１６】
前記推定手段は、前記回転運動に対して当該回転運動の中心の変化の影響を無視する近似を行って前記入力装置自体の移動速度および／または前記相対的な位置関係を推定する、請求項１５に記載のゲームプログラム。
【請求項１７】
前記推定手段は、
所定の期間内における前記角速度データの変化に基づいて角加速度データを算出する角加速度算出手段を含み、
前記加速度データ、角速度データ、角加速度データに基づいて前記相対的な位置関係を算出し、当該位置関係および前記角速度データに基づいて前記移動速度を算出する、請求項１５に記載のゲームプログラム。
【請求項１８】
前記ゲームプログラムは、前記コンピュータを、前記加速度データと前記角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出手段として更に機能させる、請求項１５に記載のゲームプログラム。
【請求項１９】
前記加速度データで示される加速度には重力加速度が含まれており、
前記推定手段は、
前記姿勢算出手段によって算出された前記入力装置の姿勢に基づいて重力加速度を推定する重力加速度推定手段と、
前記加速度データで示される加速度から前記重力加速度を除くことによって重力成分以外の加速度成分である運動成分を算出する運動成分算出手段とを含む、
請求項１８に記載のゲームプログラム。
【請求項２０】
前記ゲーム処理手段は、前記姿勢算出手段が算出した入力装置の姿勢および前記推定手段が算出した前記移動速度に基づいてゲーム処理を実行する、請求項１８に記載のゲームプログラム。
【請求項２１】
前記ゲーム処理手段は、プレイヤの操作対象となる操作対象オブジェクトの仮想ゲーム空間内における姿勢を前記入力装置の姿勢に基づいて決定し、当該操作対象オブジェクトの位置を前記移動速度に基づいて決定する、請求項２０に記載のゲームプログラム。
【請求項２２】
前記ゲーム処理手段は、操作対象オブジェクトの仮想ゲーム空間内における姿勢を、前記入力装置の姿勢および前記移動速度に基づいて決定する、請求項２１に記載のゲームプログラム。
【請求項２３】
前記ゲーム処理手段は、前記移動速度に基づいて第１の制御を行い、前記位置関係に基づいて第２の制御を行う、請求項１５に記載のゲームプログラム。
【請求項２４】
前記推定手段は、前記相対的な位置関係を前記回転運動における半径を示す値として推定する、請求項１５に記載のゲームプログラム。
【請求項２５】
前記推定手段は、前記相対的な位置関係を前記回転運動における中心から入力装置の位置へのベクトルとして推定する、請求項１５に記載のゲームプログラム。
【請求項２６】
前記ゲーム装置は、前記角速度データで示される角速度の大きさに応じて、前記相対的な位置関係を補正する補正手段を更に備える、請求項２４または２５に記載のゲームプログラム。
【請求項２７】
前記補正手段は、前記角速度が大きいほど、当該角速度が前記相対的な位置関係に反映される度合いが高くなるように補正を行い、前記角速度が小さいほど、当該角速度が当該相対的な位置関係に反映される度合いが低くなるように補正を行う、請求項２６に記載のゲームプログラム。
【請求項２８】
前記推定手段は、前記位置関係を以下の数式を用いて算出する、請求項１９に記載のゲームプログラム。
【数１】
2010104592.tif 000016
ここで、Ｒｓは前記位置関係として示される値を意味し、Ａは前記運動成分算出手段が算出した運動成分として示される値を意味し、ωは前記角速度データとして示される、互いに直交するｘｙｚ軸の３軸成分で構成される角速度の値を意味する。
2010104592.tif 000017
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジャイロセンサと加速度センサを利用したゲームを実行するゲーム装置およびゲームプログラムに関し、より特定的には、入力装置に加えられた動きを検出してゲーム処理に反映するゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来より、ジャイロセンサと加速度センサを備えた、ゲーム装置の入力制御装置が知られている（例えば、特許文献１）。当該入力制御装置は棒状に形成されており、これを刀に見立てて遊ぶゲーム処理が実行される。このゲーム処理では、加速度センサの出力に基づいて、刀を振る動作、例えば、強弱、前後左右上下の移動のデータが作成される。また、ジャイロセンサの出力に基づいて、刀を回す（ひねる）姿勢や、前後左右に傾ける姿勢のデータが作成される。そして、上記作成されたデータに基づいて、ゲーム内のオブジェクト（この場合には、刀）の移動した様子を、モニタのゲーム画面に出力している。
【特許文献１】特開２０００−３０８７５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述したような入力制御装置を用いたゲーム処理においては、以下に示す問題点があった。まず、上記入力制御装置の各動作の検出に際しては、加速度センサ、ジャイロセンサのいずれか一方のセンサ出力しか利用していない。すなわち、刀を振る動作の検出については、加速度センサからの出力のみを利用しており、刀を回す動作の検出については、ジャイロセンサからの出力のみしか利用していない。そのため、例えば、移動速度に基づいた操作等に関しては、開示されていない。また、移動速度を加速度の積分から算出することも考えられるが、この場合、誤差が発生しやすいという問題がある。また、入力制御装置を円状に動かすような回転運動を行った場合、当該回転運動に係る円の大きさ（円の半径や直径）は把握することができない。
【０００４】
それ故に、本発明の目的は、加速度センサとジャイロセンサの双方を用いるゲームにおいて、新規な制御によってゲームが実行できるゲーム装置を提供することである。本願のさらに他の目的は、加速度センサとジャイロセンサの双方を用いるゲームにおいて、入力装置の移動速度や回転の半径に基づいた制御が可能なゲーム装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００６】
第１の発明は、操作データ取得手段（１０）と、推定手段（１０）と、ゲーム処理手段（１０９とを備えるゲーム装置（３）である。操作データ取得手段は、加速度センサとジャイロセンサとを少なくとも備えた入力装置（８）から加速度データと角速度データとを少なくとも含む操作データを取得する。推定手段は、加速度データと角速度データに基づいて、入力装置自体の移動速度および／または入力装置自体に加えられた回転運動の中心と入力装置との相対的な位置関係を推定する。ゲーム処理手段は、推定された移動速度および／または位置関係に基づいてゲーム処理を行う。
【０００７】
第１の発明によれば、入力装置に加えられた回転運動の中心と移動速度を推定でき、新規な操作性を有するゲーム装置を提供することができる。
【０００８】
第２の発明は、第１の発明において、推定手段は、回転運動に対して当該回転運動の中心の変化の影響を無視する近似を行って入力装置自体の移動速度および／または相対的な位置関係を推定する。
【０００９】
第２の発明によれば、処理を簡易なものとしつつ、入力装置に加えられた回転運動の中心と移動速度を推定できる。
【００１０】
第３の発明は、第１の発明において、推定手段は、所定の期間内における角速度データの変化に基づいて角加速度データを算出する角加速度算出手段（１０）を含む。そして、推定手段は、加速度データ、角速度データ、角加速度データに基づいて相対的な位置関係を算出し、当該位置関係および角速度データに基づいて移動速度を算出する。
【００１１】
第３の発明によれば、入力装置の移動速度をより適切に算出することが可能となる。
【００１２】
第４の発明は、第１の発明において、ゲーム装置は、加速度データと角速度データに基づいて入力装置の姿勢を算出する姿勢算出手段（１０）を更に備える。
【００１３】
第４の発明によれば、入力装置の姿勢を反映したゲーム処理を実行することができる。
【００１４】
第５の発明は、第４の発明において、加速度データには重力加速度が含まれている。また、推定手段は、姿勢算出手段によって算出された入力装置の姿勢に基づいて重力加速度を推定する重力加速度推定手段と、加速度データから重力加速度を除くことによって重力成分以外の加速度成分である運動成分を算出する運動成分算出手段（１０）とを含む。
【００１５】
第５の発明によれば、より正確に回転運動の中心および入力装置の移動速度を推定することが可能となる。
【００１６】
第６の発明は、第４の発明において、ゲーム処理手段は、姿勢算出手段が算出した入力装置の姿勢および推定手段が算出した移動速度に基づいてゲーム処理を実行する。
【００１７】
第６の発明によれば、入力装置の姿勢と入力装置の移動速度を反映したゲーム処理を実行することでき、新規な操作でゲームを行うゲーム装置を提供することができる。
【００１８】
第７の発明は、第６の発明において、ゲーム処理手段は、プレイヤの操作対象となる操作対象オブジェクトの仮想ゲーム空間内における姿勢を入力装置の姿勢に基づいて決定し、当該操作対象オブジェクトの位置を移動速度に基づいて決定する。
【００１９】
第８の発明は、第７の発明において、ゲーム処理手段は、入力装置の姿勢に基づいた制御を行い、当該姿勢に基づく制御量を、移動速度に基づいてさらに変化させる。
【００２０】
第７乃至第８の発明によれば、プレイヤが入力装置に対して加えた運動をゲーム処理により正確に反映することが可能となる。
【００２１】
第９の発明は、第１の発明において、ゲーム処理手段は、移動速度に基づいて第１の制御を行い、位置関係に基づいて第２の制御を行う。
【００２２】
第９の発明によれば、入力装置の移動速度と、回転運動の中心と入力装置との相対的な位置関係とを個別に扱うことができ、新規なゲームを提供する事が可能となる。
【００２３】
第１０の発明は、第１の発明において、推定手段は、相対的な位置関係を回転運動における半径を示す値として推定する。
【００２４】
第１１の発明は、第１の発明において、推定手段は、相対的な位置関係を回転運動における中心から入力装置の位置へのベクトルとして推定する。
【００２５】
第１０乃至第１１の発明によれば、回転運動の中心と入力装置の相対的な位置関係を示すデータをより簡便に扱うことができる。
【００２６】
第１２の発明は、第９または１０の発明において、ゲーム装置は、角速度データで示される角速度の大きさに応じて、相対的な位置関係を補正する補正手段を更に備える。
【００２７】
第１３の発明は、第１１の発明において、補正手段は、角速度が大きいほど、当該角速度が相対的な位置関係に反映される度合いが高くなるように補正を行い、角速度が小さいほど、当該角速度が当該相対的な位置関係に反映される度合いが低くなるように補正を行う。
【００２８】
第１２乃至第１３の発明によれば、プレイヤが入力装置に対して加えた運動をゲーム処理により正確に反映することが可能となる。
【００２９】
第１４の発明は、第５の発明において、推定手段は、位置関係を以下の数式を用いて算出する。
【数１】
2010104592.tif 000003
なお、Ｒｓは位置関係として示される値を意味し、Ａは運動成分として示される値を意味し、ωは角速度データとして示される３軸成分の角速度の値を意味する。
2010104592.tif 000004
【００３０】
第１４の発明によれば、上記第１の発明と同様の効果を得ることができる。
【００３１】
第１５の発明は、ゲーム装置のコンピュータを、操作データ取得手段（Ｓ１）と、推定手段（Ｓ５，Ｓ６）と、ゲーム処理手段（Ｓ７，Ｓ８）として機能させるゲームプログラムである。操作データ取得手段は、加速度センサとジャイロセンサとを少なくとも備えた入力装置から加速度データと角速度データとを少なくとも含む操作データを取得する。推定手段は、加速度データと角速度データに基づいて、入力装置自体の移動速度および／または入力装置自体に加えられた回転運動の中心と入力装置との相対的な位置関係を推定する。ゲーム処理手段は、推定された移動速度および／または位置関係に基づいてゲーム処理を行う。
【００３２】
第１６の発明は、第１５の発明において、推定手段は、回転運動に対して当該回転運動の中心の変化の影響を無視する近似を行って入力装置自体の移動速度および／または相対的な位置関係を推定する。
【００３３】
第１７の発明は、第１７の発明において、推定手段は、所定の期間内における角速度データの変化に基づいて角加速度データを算出する角加速度算出手段（Ｓ４）を含む。そして、推定手段は、加速度データ、角速度データ、角加速度データに基づいて相対的な位置関係を算出し、当該位置関係および角速度データに基づいて移動速度を算出する。
【００３４】
第１８の発明は、第１７の発明において、ゲームプログラムは、コンピュータを、加速度データと角速度データに基づいて入力装置の姿勢を算出する姿勢算出手段（Ｓ２）として更に機能させる。
【００３５】
第１９の発明は、第１７の発明において、加速度データには重力加速度が含まれている。また、推定手段は、姿勢算出手段によって算出された入力装置の姿勢に基づいて重力加速度を推定する重力加速度推定手段（Ｓ３）と、加速度データから重力加速度を除くことによって重力成分以外の加速度成分である運動成分を算出する運動成分算出手段（Ｓ３）とを含む。
【００３６】
第２０の発明は、第１７の発明において、ゲーム処理手段は、姿勢算出手段が算出した入力装置の姿勢および推定手段が算出した移動速度に基づいてゲーム処理を実行する。
【００３７】
第２１の発明は、第１７の発明において、ゲーム処理手段は、プレイヤの操作対象となる操作対象オブジェクトの仮想ゲーム空間内における姿勢を入力装置の姿勢に基づいて決定し、当該操作対象オブジェクトの位置を前記移動速度に基づいて決定する。
【００３８】
第２２の発明は、第２１の発明において、ゲーム処理手段は、操作対象オブジェクトの仮想ゲーム空間内における姿勢を入力装置の姿勢および移動速度に基づいて決定する。
【００３９】
第２３の発明は、第１５の発明において、ゲーム処理手段は、移動速度に基づいて第１の制御を行い、位置関係に基づいて第２の制御を行う。
【００４０】
第２４の発明は、第１５の発明において、推定手段は、相対的な位置関係を回転運動における半径を示す値として推定する。
【００４１】
第２５の発明は、第１５の発明において、推定手段は、相対的な位置関係を回転運動における中心から入力装置の位置へのベクトルとして推定する。
【００４２】
第２６の発明は、第２４または２５の発明において、ゲームプログラムは、コンピュータを、角速度データで示される角速度の大きさに応じて、相対的な位置関係を補正する補正手段として更に機能させる。
【００４３】
第２７の発明は、第２６の発明において、補正手段は、角速度が大きいほど、当該角速度が相対的な位置関係に反映される度合いが高くなるように補正を行い、角速度が小さいほど、当該角速度が当該相対的な位置関係に反映される度合いが低くなるように補正を行う。
【００４４】
第２８の発明は、第１９の発明において、推定手段は、位置関係を以下の数式を用いて算出する。
【数１】
2010104592.tif 000005
なお、Ｒｓは位置関係として示される値を意味し、Ａは運動成分として示される値を意味し、ωは角速度データとして示される３軸成分の角速度の値を意味する。
2010104592.tif 000006
【００４５】
本発明のゲームプログラムによれば、上述した本発明のゲーム装置と同様の効果を得ることができる。
【発明の効果】
【００４６】
本発明によれば、入力装置に加えられた回転運動にかかる中心、および移動速度を推定することができる。これにより、新規な操作でゲームを行うゲーム装置、およびゲームプログラムを提供することができる。
【発明を実施するための最良の形態】
【００４７】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【００４８】
［ゲームシステムの全体構成］
図１を参照して、本発明の一実施形態に係る姿勢算出装置の一例であるゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、入力装置８、およびマーカ部６を含む。本システムは、入力装置８を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００４９】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００５０】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００５１】
入力装置８は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与えるものである。本実施形態では、入力装置８はコントローラ５とジャイロセンサユニット７とを含む。詳細は後述するが、入力装置８は、コントローラ５に対してジャイロセンサユニット７が着脱可能に接続されている構成である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００５２】
［ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００５３】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩの内部構成について後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００５４】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００５５】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００５６】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００５７】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００５８】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００５９】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００６０】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００６１】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００６２】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００６３】
［入力装置８の構成］
次に、図３〜図６を参照して、入力装置８について説明する。図３は、入力装置８の外観構成を示す斜視図である。図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００６４】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００６５】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００６６】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、ジャイロセンサユニット７や他のコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００６７】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００６８】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００６９】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００７０】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００７１】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００７２】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００７３】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００７４】
また、ジャイロセンサユニット７は、３軸回りの角速度を検知するジャイロセンサ（図７に示すジャイロセンサ５５および５６）を有する。ジャイロセンサユニット７は、コントローラ５のコネクタ３３に着脱可能に装着される。ジャイロセンサユニット７の前端（図３に示すＺ軸正方向側の端部）には、コネクタ３３に接続可能なプラグ（図７に示すプラグ５３）が設けられる。さらに、プラグ５３の両側にはフック（図示せず）が設けられる。ジャイロセンサユニット７がコントローラ５に対して装着される状態では、プラグ５３がコネクタ３３に接続されるとともに、上記フックがコントローラ５の係止穴３３ａに係止する。これによって、コントローラ５とジャイロセンサユニット７とがしっかりと固定される。また、ジャイロセンサユニット７は側面（図３に示すＸ軸方向の面）にボタン５１を有している。ボタン５１は、それを押下すれば上記フックの係止穴３３ａに対する係止状態を解除することができるように構成されている。したがって、ボタン５１を押下しながらプラグ５３をコネクタ３３から抜くことによって、ジャイロセンサユニット７をコントローラ５から離脱することができる。
【００７５】
また、ジャイロセンサユニット７の後端には、上記コネクタ３３と同形状のコネクタが設けられる。したがって、コントローラ５（のコネクタ３３）に対して装着可能な他の機器は、ジャイロセンサユニット７のコネクタに対しても装着可能である。なお、図３においては、当該コネクタに対してカバー５２が着脱可能に装着されている。
【００７６】
なお、図３〜図６に示したコントローラ５およびジャイロセンサユニット７の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００７７】
図７は、入力装置８（コントローラ５およびジャイロセンサユニット７）の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００７８】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００７９】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００８０】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００８１】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００８２】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸または２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。なお、加速度センサ３７は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００８３】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置８（コントローラ５）を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトル（ａｘ，ａｙ，ａｚ）として表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００８４】
加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、加速度データに基づいてコントローラ５の姿勢を判断する。
【００８５】
加速度センサ３７が検出した加速度（加速度ベクトル）を示すデータ（加速度データ）は、通信部３６へ出力される。本実施形態において、加速度センサ３７は、コントローラ５の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【００８６】
なお、加速度センサ３７から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度または姿勢を判定することができる。
【００８７】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００８８】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。また、マイコン４２はコネクタ３３に接続されている。ジャイロセンサユニット７から送信されてくるデータは、コネクタ３３を介してマイコン４２に入力される。以下、ジャイロセンサユニット７の構成について説明する。
【００８９】
ジャイロセンサユニット７は、プラグ５３、マイコン５４、２軸ジャイロセンサ５５、および１軸ジャイロセンサ５６を備えている。上述のように、ジャイロセンサユニット７は、３軸（本実施形態では、ＸＹＺ軸）周りの角速度を検出し、検出した角速度を示すデータ（角速度データ）をコントローラ５へ送信する。
【００９０】
２軸ジャイロセンサ５５は、Ｘ軸周りの角速度およびＹ軸周りの（単位時間あたりの）角速度を検出する。また、１軸ジャイロセンサ５６は、Ｚ軸周りの（単位時間あたりの）角速度を検出する。なお、本明細書では、コントローラ５の撮像方向（Ｚ軸正方向）を基準として、ＸＹＺ軸周りの回転方向を、それぞれ、ピッチ方向、ヨー方向、ロール方向と呼ぶ。すなわち、２軸ジャイロセンサ５５は、ピッチ方向（Ｘ軸周りの回転方向）およびヨー方向（Ｙ軸周りの回転方向）の角速度を検出し、１軸ジャイロセンサ５６は、ロール方向（Ｚ軸周りの回転方向）の角速度を検出する（図８参照）。
【００９１】
なお、本実施形態では、３軸回りの角速度を検出するために、２軸ジャイロセンサ５５と１軸ジャイロセンサ５６とを用いる構成としたが、他の実施形態においては、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。
【００９２】
また、本実施形態では、後述する姿勢算出処理における計算を容易にする目的で、各ジャイロセンサ５５および５６が角速度を検出する３つの軸は、加速度センサ３７が加速度を検出する３つの軸（ＸＹＺ軸）と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ５６および５７が角速度を検出する３つの軸と、加速度センサ３７が加速度を検出する３つの軸とは一致しなくてもよい。
【００９３】
各ジャイロセンサ５６および５７で検出された角速度を示すデータは、マイコン５４に出力される。したがって、マイコン５４には、ＸＹＺ軸の３軸回りの角度速度を示すデータが入力されることになる。マイコン５４は、上記３軸回りの角速度を示すデータを角速度データとしてプラグ５３を介してコントローラ５へ送信する。なお、マイコン５４からコントローラ５への送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【００９４】
コントローラ５の説明に戻り、操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力されたデータ、ならびに、ジャイロセンサユニット７からマイコン４２へ送信されてきたデータは、一時的にメモリ４３に格納される。これらのデータは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【００９５】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５を任意の傾斜角度に傾ける操作を行うことができる。その他、上記コントローラ５によれば、プレイヤは、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作を行うこともできる。
【００９６】
次に、図９〜図１２を用いて、本実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、カヌーを題材にしたゲームである。図９は、本実施形態で想定するゲームの画面の一例である。図９において、ゲーム画面にはカヌー（一人乗り用）に乗っているプレイヤオブジェクト１０１と、カヌーを漕ぐためのパドル１０２（シングルブレードパドル）が表示されている。本ゲームは、入力装置８をカヌーのパドル（より正確には、パドルの柄）に見立て、パドルを漕ぐように（パドルで水を掻くように）入力装置８を動かす事で、図９〜図１２に示すように、ゲーム画面内のパドル１０２も移動する。これにより、仮想ゲーム空間内の水を掻くことでカヌーを移動させることができ、擬似的にカヌーを楽しむことができるゲームである。
【００９７】
本ゲームの操作方法について、更に説明する。上記のように、本ゲームでは入力装置８をパドルと見立てて把持する。そして、パドリングを模した操作（以下、単にパドリング操作と呼ぶ）を行ってプレイする。そして、本実施形態は、このパドリング操作を検出して、仮想ゲーム空間内のパドル１０２の姿勢や動作に反映させる。図１３及び図１４は、プレイヤが行う上記パドリング操作の一例を示す模式図である。本ゲームでは、プレイヤは、図１３に示すように、入力装置８をボタン面が手前に来るようにして右手で握る。なお、図１３では説明の便宜上、右手のみで入力装置８を把持している場合を例にしているが、両手を使って入力装置８を握って操作しても良い。
【００９８】
上記のように入力装置８を把持したプレイヤは、図１４に示すように、パドルで水を掻くように入力装置８を自身の後方に移動させる（図１４（ａ）〜（ｃ））。その後、パドルを水から引き上げるように、一旦上に移動させ、その後、前方に移動させていく（図１４（ｄ）〜（ｆ）。基本的に、プレイヤはこのような操作を繰り返すことでパドリング操作を行う。
【００９９】
なお、本ゲームでは、ゲームの展開に応じて、図１５〜図１９に示すように、漕ぐ位置をカヌーの右側と左側とで適宜切り替えながら操作を行うことも可能である。図１５〜図１９では、漕ぐ位置がカヌーの左側から右側に切り替わっている様子が示されている。この場合は、プレイヤは自己の体の左側で行っていたパドリング操作について、入力装置８を自己の体の右側に移動させて（片手操作の場合は、入力装置８を左手から右手に持ち替えて）パドリング操作を継続することになる。
【０１００】
ところで、上記パドリング操作における入力装置８の動きに注目すると、図２０に示すような移動軌跡となっている。人間の運動は関節を中心とした回転の組み合わせによって構成されると考えられるので、この一連の動きを所定の単位時間に区切って考えると（図２０では参照符号Ａ〜Ｇで示す）、各単位時間における入力装置８の運動は、それぞれどこかを中心とする回転運動の一部とみなすことができる。図２１は、図２０における単位時間Ａ、Ｃ、Ｅ、Ｇ、Ｈの状態を抜き出したものであり、それぞれ、ある点を中心とした回転運動の一部となっていることを示している。たとえば肘の回転のみによる運動であれば、その中心は肘の位置になる。肘と肩の両方の回転による運動であれば、両方の回転の影響を合わせた運動を、肘や肩以外のどこかを中心とした回転運動とみなすことができる。換言すれば、入力装置８に発生している速度は、どこかを中心点とする回転運動によって生じていることになる。なお、人間が完全な円運動を行うことは難しいので、タイミングごとに中心位置や半径は多少変化することになる。
【０１０１】
そこで、本実施形態では、上記加速度センサ３７およびジャイロセンサユニット７から得られる加速度と角速度から入力装置８の姿勢を推定し、更に、上記回転運動の中心や入力装置８の移動速度を推定して、これらの要素をパドル１０２の姿勢・動作に反映させるための処理を実行する。
【０１０２】
次に、本実施形態における上記回転運動の中心や移動速度の推定の原理について説明する。ここでは、図２２のような状態を例にして説明する。図２２は、ある単位時間における入力装置８と回転運動の中心との関係を示す図である。回転運動については、入力装置８のコントローラ座標系（ローカル座標系）におけるｘ軸回りに回転しているものとする。以下、この回転軸方向（この場合はｘ軸方向）のベクトルをωとして示す（以下、回転軸ベクトルωと呼ぶこともある）。回転速度はベクトルωの大きさによって表される。また、図２２では、入力装置８の位置（ここでは入力装置８の中心部分としている）をＲ、回転運動の中心をＣとして示し、回転運動に係るＣからＲまでのベクトルをＲｓとして示している（以下、半径ベクトルＲｓと呼ぶこともある）。なお、当該ベクトルＲｓは、回転中心Ｃと入力装置８との相対的な位置関係を示すものであり、また、回転運動にかかる半径を示すものでもある。また、回転運動に係る入力装置８の移動速度を示すベクトルをＶ（以下、速度ベクトルＶと呼ぶこともある）として示している。また、上記入力装置８のコントローラ座標系における所定の位置を原点としている。そして、原点から回転中心までのベクトルをＲ０で示している。
【０１０３】
図２２のような場合を例にすると、まず、速度ベクトルＶは、以下の数式に示すように、ベクトルωとベクトルＲｓとの外積によって求めることができる。
【数２】
2010104592.tif 000007
なお、上記数式において、”×”は外積を示す（以下の数式でも同様）。
【０１０４】
ここで、ベクトルωについては、ジャイロセンサユニット７からの出力によって算出することが可能である。すなわち、ジャイロセンサユニット７から出力されるｘｙｚ軸の３軸回りの角速度のそれぞれをｘｙｚ成分とするベクトルが、回転軸ベクトルωとなる。一方、ベクトルＲｓについては、以下に述べるようにして算出することが可能である。
【０１０５】
ここで、上記図１４で示したような入力装置８に加えられた一連の運動に際して、回転運動の中心位置は多少変動する（上記図２２の変化量Ｒ０に多少の変動が起きる）場合はあるが、上記のようなパドリング操作のような場合は、当該中心の位置は、回転運動に比べて相対的に非常に緩やかに変化すると考えられる。そのため、本実施形態では、回転運動に対して中心の変化の影響を無視できるものと考える。つまり、図１４に示したようなパドリング操作における一連の回転運動において、並進的な運動を無視し、回転運動だけ行われているものと考える。したがって、式１の右辺には、中心の移動、すなわちＲ０の変動による成分を含まないものとする近似を行っている。そして、上記式１を微分すると、以下のような数式が導き出される。
【数３】
2010104592.tif 000008
【数４】
2010104592.tif 000009
ここで、”Ａ”は、Ｖの微分であって加速度を示すが、加速度センサから得られた加速度から重力成分を除去した加速度成分（以下、運動成分と呼ぶ）によって特定することができる。また、文字の上に傍点を付している要素は、微分を示すものである。また、”［Ｉ］”は単位行列を示す。
【０１０６】
次に、上記式２を変形すると、以下の数式が導出される。
【数５】
2010104592.tif 000010
更に、式３を変形すると、以下の数式が導出される。
【数６】
2010104592.tif 000011
【０１０７】
また、上記ベクトルωは回転軸であって、上記ベクトルＲｓは回転の半径であるので、ベクトルＲｓが最短となるよう（つまり図２２において、回転中心と入力装置８の図中での奥行きは同じ）定義すれば、ベクトルωとベクトルＲｓは常に直交する。そして、両ベクトルが直交するということは、すなわち、内積が０になるということである。したがって、上記式４において、「（ω・Ｒｓ）ω」の要素は”０”になる。その結果、上記式４を変形すると、以下のような数式となる。
【数７】
2010104592.tif 000012
上記式５に示されるように、ベクトルＲｓは、運動成分Ａおよびベクトルωが判れば算出可能である。ここで、運動成分Ａは、上記加速度から重力成分を除去することで求められる。重力成分を除去するには重力方向を知る必要があるが、本実施形態では、角速度と加速度から入力装置８の姿勢を推定し、当該推定した姿勢から重力方向を推定する。
【０１０８】
以上の事を踏まえて、上記式２を変形すると、以下のような数式となる。
【数８】
2010104592.tif 000013
上記式６で示されるように、運動成分Ａと角速度ωおよび角加速度が判れば、ベクトルＲｓが算出可能である。そこで、本実施形態では、角速度および加速度から入力装置８の姿勢を推定し、この推定姿勢に基づいて運動成分Ａを算出する。運動成分Ａが算出できれば、上記のようにベクトルＲｓが算出できる。そして、ベクトルＲｓが算出できれば、上記式１により、ベクトルωとの外積をとることで速度Ｖを算出するという処理を行う。
【０１０９】
次に、本実施形態にかかる処理の概要を説明する。図２３は、本実施形態にかかる処理概要を説明するための図である。図２３において、四角で囲まれている要素は、データの発生源を示す。また、丸で囲まれた要素はプロセスを示し、ｐｎ（ｎは整数）の形式の参照符号を付している。また、上下の直線に挟まれている要素はデータ（およびその保管先；後述の図２４のメモリマップに対応）を示し、図２３ではｄｎ（ｎは整数）の形式の参照符号を付している。
【０１１０】
図２３において、ジャイロセンサユニット７から角速度ｄ１が取得される。また、加速度センサ３７から加速度ｄ２が取得される。角速度ｄ１および加速度ｄ２は姿勢推定ｐ１のプロセスに入力される。姿勢推定ｐ２では、角速度ｄ１および加速度ｄ２に基づいて入力装置８の姿勢を算出し、推定姿勢ｄ３として出力する処理が実行される。加速度および角速度に基づく推定姿勢の算出方法はどのようなものでもよいが、本実施形態では、角速度で示される姿勢ベクトルを、加速度で示されるベクトルで補正することで、入力装置８の姿勢を算出するものとする。理想的には、単位時間ごとに角速度に基づいて姿勢を更新すれば、角速度のみから入力装置８の姿勢を算出することができ、空間と姿勢との関係から、入力装置８から見た実空間の下方向（つまり重力方向）が推定される。しかし、ジャイロセンサの出力には誤差が含まれる可能性があり、誤差が含まれる場合、上述の姿勢算出においては時間とともに誤差が蓄積することになる。一方、加速度センサからの出力は、入力装置８に加えられる加速度であり、入力装置８の静止時には重力成分のみとなるが、入力装置８が動いているときは重力以外の加速度も含むため、加速度のみから重力方向を算出するのが困難になるという性質がある。しがたって、角速度に基づいて推定される姿勢を更新するとともに、さらに当該姿勢から推定される重力方向が、加速度が示す方向に近づくように姿勢を補正するようにする。さらにその際、加速度の大きさが重力加速度の大きさに近いほど補正の度合いを大きくするようにしている。このような補正を行うことによって、動きの少ないときには加速度により正確な姿勢が算出され、かつ動いているときでもある程度妥当な姿勢が常に推定できることになる。
【０１１１】
姿勢推定ｐ１で算出された推定姿勢ｄ３は重力成分除去ｐ３のプロセスに入力される。重力成分除去ｐ３では、当該推定姿勢ｄ３から重力成分を算出する処理が実行される。重力方向は姿勢に対応して推定され、重力の大きさは１Ｇで既知である。そして、重力成分除去ｐ３では、更に加速度ｄ１を取得し、当該加速度ｄ１から重力成分を除去することで、重力の影響を除いた運動成分ｄ４を算出する。当該運動成分ｄ４は、後述の回転中心推定ｐ４のプロセスに入力される。
【０１１２】
一方、角速度ｄ１は、時系列差分ｐ２、回転中心推定ｐ４、速度算出ｐ５の各プロセスへも入力される。時系列差分ｐ２では、角速度ｄ１に基づいて角加速度ｄ５を算出する処理が実行される。算出された角加速度ｄ５は、回転中心推定ｐ４へ入力される。
【０１１３】
回転中心推定ｐ４では、角速度ｄ１、運動成分ｄ４、角加速度ｄ５に基づき、上述したような数式を適用することで、上記のような回転運動の中心Ｃを推定するための処理が実行される。より具体的には、上記ベクトルＲｓを算出する処理が実行される。そして、当該ベクトルＲｓを示すデータが半径ベクトルｄ６として出力される。
【０１１４】
半径ベクトルｄ６は、速度算出ｐ５のプロセスに入力される。速度算出ｐ５では、角速度ｄ１および半径ベクトルｄ６に基づき、更に上記の数式を用いることで、入力装置８の移動速度Ｖを推定するための処理が実行され、推定速度ｄ７が出力される。
【０１１５】
このように、本実施形態では、ジャイロセンサユニット７および加速度センサ３７から出力される角速度および加速度を入力として、回転運動に係る入力装置８の移動速度を出力する処理が実行される。そして、本実施形態にかかるゲーム処理においては、上記移動速度等の各種データをパドル１０２の姿勢制御に用いる。
【０１１６】
次に、ゲーム装置３において実行される処理の詳細について説明する。まず、ゲーム装置３における処理において用いられる主なデータについて図２４を用いて説明する。図２４は、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図２４に示すように、ゲーム装置３のメインメモリには、ゲームプログラム６０、操作データ６２、およびゲーム処理用データ６７が記憶される。なお、メインメモリには、図２４に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【０１１７】
ゲームプログラム１２０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。ゲームプログラム１２０には、パドリング操作プログラム１２１が含まれる。パドリング操作プログラム１２１は、入力装置８の姿勢を算出し、これに基づいてパドル１０２の姿勢を制御するための処理を実行するためのプログラムである。
【０１１８】
操作データ１２２は、コントローラ５（入力装置８）からゲーム装置３へ送信されてくる操作データである。上述したように、コントローラ５からゲーム装置３へ１／２００秒に１回の割合で操作データが送信されるので、外部メインメモリ１２に記憶される操作データ１２２はこの割合で更新される。
【０１１９】
操作データ１２２には、角速度データ１２３、加速度データ１２４、マーカ座標データ１２５、および操作ボタンデータ１２６が含まれる。角速度データ１２３は、ジャイロセンサユニット７のジャイロセンサ５５および５６によって検出された角速度を示すデータである（上記図２３の角速度ｄ１に対応する）。ここでは、角速度データ１２３は、図３に示すＸＹＺの３軸回りのそれぞれの角速度を示す。また、加速度データ６４は、加速度センサ３７によって検出された加速度（加速度ベクトル）を示すデータである（上記図２３の加速度ｄ２に対応する）。ここでは、加速度データ６４は、図３に示すＸＹＺの３軸の方向に関する加速度を各成分とする３次元の加速度ベクトルを示す。また、本実施形態においては、コントローラ５が静止している状態で加速度センサ３７が検出する加速度ベクトルの大きさを”１”とする。つまり、加速度センサ３７によって検出される重力加速度の大きさは”１”である。
【０１２０】
マーカ座標データ１２５は、撮像情報演算部３５の画像処理回路４１によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための２次元座標系で表現される。なお、撮像素子４０によって２つのマーカ６Ｒおよび６Ｌが撮像される場合には、２つのマーカ座標が算出される。一方、撮像素子４０の撮像可能な範囲内にマーカ６Ｒおよび６Ｌのいずれか一方が位置しない場合には、撮像素子４０によって１つのマーカのみが撮像され、１つのマーカ座標のみが算出される。また、撮像素子４０の撮像可能な範囲内にマーカ６Ｒおよび６Ｌの両方が位置しない場合には、撮像素子４０によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ６５は、２つのマーカ座標を示す場合もあるし、１つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
【０１２１】
操作ボタンデータ１２６は、各操作ボタン３２ａ〜３２ｉに対する入力状態を示すデータである。
【０１２２】
ゲーム処理用データ１２７は、後述するゲーム処理（図２５，図２６に示すフローチャート）において用いられるデータである。ゲーム処理用データ１２７は、推定姿勢データ１２８、運動成分データ１２９、角加速度データ１３０、回転半径データ１３１、推定速度データ１３２、を含む。なお、図２４に示すデータの他、ゲーム処理用データ１２７は、ゲーム処理において用いられる各種データ（ゲームパラメータを示すデータ等）を含む。
【０１２３】
推定姿勢データ１２８は、角速度データ１２３および加速度データ１２４から算出される、入力装置８の姿勢を示すデータである（上記図２３の推定姿勢ｄ３に対応する）。
【０１２４】
運動成分データ１２９は、上記加速度データ１２４で示される加速度から重力方向成分を除去することで得られる運動成分を示すデータである（上記図２３の運動成分ｄ４に対応する）。
【０１２５】
角加速度データ１３０は、単位時間あたりの角速度の変化、すなわち、角加速度を示すデータである（上記図２３の角加速度ｄ５に対応する）。
【０１２６】
回転半径データ１３１は、上記ベクトルＲｓを示すデータであり、入力装置８の回転運動における中心位置を示すためのデータでもある（上記図２３の半径ベクトルｄ６に対応する）。
【０１２７】
推定速度データ１３２は、上記のような入力装置８の回転運動による入力装置８の移動速度を示すデータである（上記図２３の推定速度ｄ７に対応する）。
【０１２８】
なお、上記推定姿勢データ１２８は空間内における入力装置８の姿勢を示す回転行列等であって、運動成分データ１２９、角加速度データ１３０、回転半径データ１３１、および推定速度データ１３２はそれぞれ、入力装置８（コントローラ５）を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトルとして表される。
【０１２９】
次に、図２５〜図２６を参照して、ゲーム装置３によって実行されるゲーム処理について説明する。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動プログラムを実行し、これによって外部メインメモリ１２等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムが外部メインメモリ１２に読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図２５に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。また、図２５に示すステップＳ１〜ステップＳ１０の処理ループは、１フレーム毎に繰り返し実行される。
【０１３０】
図２５において、まず、ＣＰＵ１０は、入力装置８から加速度データ１２４および角速度データ１２３を取得する（ステップＳ１）。
【０１３１】
次に、ＣＰＵ１０は、加速度データ１２４および角速度データ１２３に基づいて入力装置８の姿勢を推定する処理を実行する（ステップＳ２）。本処理は、どのような処理方法であっても良いが、本実施形態では、上記のように、まず、ジャイロセンサユニット７で検出された角速度に基づいて入力装置８の姿勢を算出する。角速度から姿勢を算出する方法は、例えば、初期姿勢に（単位時間あたりの）角速度を逐次加算する方法がある。すなわち、ジャイロセンサユニット７から逐次出力される角速度を積分し、初期状態からの姿勢の変化量を積分結果から算出することによって、現在の姿勢を算出することができる。次に、加速度センサ３７で検出された加速度データに基づいて上記角速度から算出された姿勢を補正する。本実施形態では、上記角速度からの姿勢を加速度データから決まる姿勢へと近づける補正を行う。加速度データから決まる姿勢とは、具体的には、加速度データが示す加速度の向きが鉛直下向きであると想定する場合における入力装置８の姿勢を指す。すなわち、加速度データが示す加速度が重力加速度であると仮定して算出された姿勢である。このようにして補正された姿勢が、推定姿勢データ１２８として外部メインメモリ１２に記憶される。
【０１３２】
次に、ＣＰＵ１０は、運動成分を算出するための処理を実行する（ステップＳ３）。まず、ＣＰＵ１０は、上記推定姿勢から重力方向を算出する。そして、ＣＰＵ１０は、当該算出した重力方向に基づいて、上記加速度データ１２４から重力成分（例えば、重力方向を示すベクトル（０，−１，０））を除去することで、重力の影響を除いた運動成分を算出する。そして、ＣＰＵ１０は、算出した運動成分を運動成分データ１２９として外部メインメモリ１２に記憶する。
【０１３３】
次に、ＣＰＵ１０は、角加速度を算出するための処理を実行する（ステップＳ４）。より具体的には、ＣＰＵ１０は、予め定められた所定の期間内における角速度の変化量を算出する。例えば、現在の処理にかかるフレームで得られた角速度と、直前のフレームにおける処理で得られた角速度との差分を算出し、記憶する。これを、１フレーム分記憶しておき、前フレームとの間の角速度の差分を算出し、角加速度データ１３０として外部メインメモリ１２に記憶する。
【０１３４】
次に、ＣＰＵ１０は、回転運動にかかるベクトルＲｓを算出する処理を実行する（ステップＳ５）。すなわち、ＣＰＵ１０は、角速度データ１２３、角加速度データ１３０、運動成分データ１２９に基づき、上記式６を適用することで、ベクトルＲｓを算出する。そして、算出したベクトルＲｓを回転半径データ１３１として外部メインメモリ１２に記憶する。
【０１３５】
次に、ＣＰＵ１０は、入力装置の移動速度Ｖを算出する（ステップＳ６）。上記式１で示したように、ベクトルＲｓがわかれば、回転軸ベクトルω（角速度データ１２３）との外積を求めることで移動速度Ｖが算出できる。そして、ＣＰＵ１０は、算出した移動速度Ｖを、推定速度データ１３２として外部メインメモリ１２に記憶する。
【０１３６】
次に、ＣＰＵ１０は、パドル１０２の動作を制御するためのパドル動作制御処理を実行する（ステップＳ７）。本処理では、上記推定姿勢データ１２８と推定速度データ１３２に基づいてパドル１０２の制御を行う。
【０１３７】
図２６は、上記ステップＳ７で示したパドル動作制御処理の詳細を示すフローチャートである。図２６の処理では、最初に、変数φ１、φ２，φ３を設定する処理が実行される。ここで、各変数について説明すると、まず、変数φ１は、図２７に示すように、ｙ−ｚ軸（コントローラ座標系）における入力装置８の重力方向軸からの傾き角度を示すための変数である。つまり、パドルを漕いだときに増加し、戻したときに減少する。
【０１３８】
次に、変数φ２は、パドリング操作における「引き抜き」を考慮するために用いられる変数である。ここで、「引き抜き」とは、図２８に示すように、水を掻いた後、パドルを真上に突き上げる（引き抜く）ように移動させるような漕ぎ方を称するものとする。プレイヤのパドリング操作の仕方には個人差があるため、プレイヤによってはこのような引き抜きの操作が行われる可能性がある。この場合、上記図２０に示したような入力装置８の動き方に比べると、引き抜きのタイミングでコントローラ座標系におけるＺ軸方向に大きな動きが発生する。このような動きの場合、ユーザとしてはパドルを引き戻した操作を行ったはずである一方、角度の減少は少ない。したがって、ベクトルの長さを、パドル１０２の傾き角度に反映させる（ベクトルの長さに応じて角度を増減する）ように変数φ２を設定する。なお、変数φ２には初期値として”０”が設定されるものとする。
【０１３９】
次に、変数φ３は、パドリング操作における「並進漕ぎ」を考慮するための変数である。「並進漕ぎ」とは、図２９に示すように、パドルの姿勢をあまり変えずにそのまま後方に動かすようにして水を掻く漕ぎ方を称するものとする。つまり、図２０に示したような動き方に比べ、角度の変化があまり発生しないような漕ぎ方となる。そして、変数φ３も変数φ２と同様に、並進のベクトルの長さに応じて角度を増減するために用いられる。なお、変数φ３には初期値として”０”が設定されるものとする。
【０１４０】
図２６に戻り、以下、パドル動作制御処理の詳細を説明する。図２６において、まず、ＣＰＵ１０は、上記変数φ１を設定する（ステップＳ２１）。変数φ１については、上記推定姿勢データ１２８と推定姿勢から導出される重力方向とのなす角度として算出可能である。
【０１４１】
次に、ＣＰＵ１０は、推定速度データ１３２に基づいて、変数φ２を設定する（ステップＳ２２）。より具体的には、ＣＰＵ１０は、推定速度データ１３２で示される速度ベクトルＶのｚ軸成分Ｖｚ（図３０参照）に応じて変数φ２を減少する（その結果、変数φ２は負の値をとる）。
【０１４２】
次に、ＣＰＵ１０は、推定速度データ１３２に基づいて、変数φ３を設定する（ステップＳ２３）。より具体的には、ＣＰＵ１０は、ワールド座標系におけるｘ−ｚ平面での成分、つまり、コントローラ座標系の速度ベクトルＶ（推定速度データ１３２で示されるベクトル）をワールド座標系に変換した後のベクトルにおける（図３１参照；図３１は、ワールド座標系を真上からみたイメージである）、ｙ軸成分以外の成分Ｖｘｚを算出する。そして、当該成分Ｖｘｚの長さに応じて、変数φ３を増加させる。
【０１４３】
次に、ＣＰＵ１０は、速度ベクトルＶのｘ軸成分Ｖｘに応じて、ワールド座標系のｘ軸上におけるパドル１０２の位置（パドル１０２の所定の基準点＝パドルの柄のうち握っている部分に相当）を決定する（ステップＳ２４）。図３２に、当該処理の概念を示す。本ステップの処理では、図３２（ａ）に示すように、入力装置８の速度ベクトルＶのｘ軸成分Ｖｘに応じて、図３２（ｂ）に示すように、仮想ゲーム空間内におけるパドル１０２上に予め定められている所定の点をｘ軸方向に沿って移動させることで、パドル１０２の左右方向での位置を決める。
【０１４４】
次に、ＣＰＵ１０は、図３３および図３４に示すように、ワールド座標系でのｘ−ｚ平面上におけるパドル１０２の傾き具合を決めるための角度θを算出する。角度θは、上記推定姿勢に基づいて算出される（図３３）。そして、当該角度θに基づいてｘ−ｚ平面上におけるパドル１０２の姿勢（図３４）が決定される（ステップＳ２５）。
【０１４５】
次に、ＣＰＵ１０は、上記ステップＳ２４で決定したｘ軸上のパドルの位置とステップＳ２５で決定したパドル１０２の傾き具合に基づいて、図３５に示すように、ワールド座標系でのｘ−ｚ平面上におけるパドル１０２の最終的な姿勢を決定する（ステップＳ２６）。併せて、ＣＰＵ１０は、漕ぎ位置（カヌーの右側を漕ぐのか左側を漕ぐのか）も決定する。
【０１４６】
次に、ＣＰＵ１０は、図３６に示すような、ワールド座標系でのｙ−ｚ平面上でのパドル１０２の漕ぎ度合いを示す変数Φを、以下の数式を用いて算出する。
Φ＝φ１＋φ２＋φ３
そして、当該変数Φに応じてパドル１０２の最終的な姿勢を決定する（ステップＳ２７）。パドルはΦだけ傾くようにしてもよいが、それに限らずΦの大きさの推移に対応して位置と姿勢が設定されるようにすればよい。
【０１４７】
次に、ＣＰＵ１０は、変数φ２および変数φ３を所定の割合で０に近づける処理を実行する（ステップＳ２８）。つまり、φ２およびφ３は姿勢自体による変数ではないので、静止時には実際の姿勢に対応したΦを算出するためにφ２およびφ３をゆっくり０に近づけるようにする。
【０１４８】
次に、ＣＰＵ１０は、上記の処理で決定したパドルの姿勢を仮想ゲーム空間内に適用することで、パドル１０２の位置や姿勢を更新する（ステップＳ２９）。以上で、パドル動作制御処理は終了する。
【０１４９】
図２５に戻り、次に、ＣＰＵ１０は、上記更新後のパドル１０２の姿勢に基づいてプレイヤオブジェクト１０１の姿勢および動作制御を行う（ステップＳ８）。
【０１５０】
次に、ＣＰＵ１０は、その他のゲーム処理（例えば、障害物との衝突判定等）を実行し、更に、表示処理が行われる（ステップＳ９）。すなわち、仮想カメラで仮想空間を撮影した画像をゲーム画像としてテレビ２に表示する処理がされる。ステップＳ９の後、ステップＳ１０において、ゲーム終了か否かが判断され、ＹＥＳの場合、ゲーム処理を終了し、ＮＯの場合、ステップＳ１に戻って、ゲーム処理を繰り返す。以上で、本実施形態にかかるゲーム処理は終了する。なお、ステップＳ８やステップＳ９は、ゲーム処理時間の単位であるたとえば６０分の１秒ごとに行われるようにすればよいが、それ以前の処理は６０分の１秒ごとに繰り返されるようにしても、入力装置からデータを得られる２００分の１秒ごとに繰り返されるようにしてもよい。２００分の１秒ごとに繰り返されるようにした方が精度は高くなる。
【０１５１】
このように、本実施形態では、ジャイロセンサから得られる角速度および加速度センサから加速度に基づき、入力装置８自体に加えられた運動にかかる回転半径（回転中心）および移動速度を算出し、ゲーム処理に利用している。これにより、入力装置の移動速度や回転運動の半径の長さを利用したゲームを提供する事が可能となり、また、新規な操作で楽しめるゲームを提供する事が可能となる。また、入力装置の動きの算出等の処理に関しては、上記のような「速度」を処理に用いる方が「加速度」を用いる場合よりも扱いやすいという利点もある。更に、入力装置８の移動速度が判ることで、入力装置の「姿勢」と入力装置の「動き（移動速度）」を個別に扱うことが可能となり、新規なゲームを提供する事が可能となる。例えば、空中に文字を書くようなゲームを想定し、任意の一文字の「払い」の部分についての動きをより正確に検出することができ、ゲーム処理（例えば、文字を書いた軌跡に基づく画面への文字の描画や点数加算等）に反映することが可能となる。
【０１５２】
また、上述のように、角速度および加速度から回転運動の中心を推定することができるため、例えば、回転運動の中心がプレイヤの肩となり、プレイヤの腕の長さがベクトルＲｓに相当するような回転運動による操作（つまり、肩を支点にして腕を大きく回すような操作）を行って楽しむゲーム等において、各プレイヤの腕の長さの違いをゲーム処理に反映することも可能となる。もしくは、肩を中心に回しているか、肘、もしくは手首を中心にして回しているかの違いをゲームに反映させるようなこともできる。
【０１５３】
なお、実行するゲームの内容に応じ、上記ベクトルＲｓに対して所定の補正を行ってもよい。たとえばノイズ除去の補正として、図２５を用いて上述したステップＳ５の処理において、当該処理で算出した上記ベクトルＲｓに、前回算出されたベクトルＲｓを所定の係数（例えば０〜１の範囲の値を採る）の割合で近づけたものを最新のベクトルＲｓとするようにしてもよい。この際、ベクトルωの大きさに応じて係数を変化させるようにしてもよい。これにより、プレイヤが行った操作をより適切にゲームに反映することができる。ベクトルＲｓを算出するための式６の性質上、ベクトルωが小さい場合にくらべて大きい場合の方が誤差が小さくなる。したがって、ベクトルωが大きいときはベクトルＲｓに信頼性が高いので係数を大きくし、ベクトルωが小さいときには係数を小さくするようにすれば、より精度の高いノイズ除去を行うことができる。
【０１５４】
それ以外の補正として、ゲームによっては予めプレイヤの腕の長さや入力装置８の振り方を想定して、ベクトルＲｓを補正するようにしてもよい。つまり、算出されたベクトルＲｓが、想定される腕の長さよりも大きく異なった大きさである場合には、その長さに制限を設けたり、所定割合で特定の大きさに近づけるようにすれば、ゲームの目的に適した入力が得られる。
【０１５５】
いずれの補正の例においても、速度ベクトルＶを補正するのではなく、ベクトルＲｓに補正を加えることで、角速度ベクトルωの変化によって速度ベクトルＶを変化させることは可能である。速度ベクトルＶに補正を加えると、速度に基づいたゲームにおいて応答性が低下する可能性があるが、ベクトルω自体は常にある程度の精度で得られる値であるので、補正されたベクトルＲｓとベクトルωによって、精度が高く応答性も高い入力を行うことができる。
【０１５６】
上述の実施形態においては、速度ベクトルＶをカヌーのゲームに利用している。速度ベクトルＶは上述のように半径ベクトルＲｓから算出されるものであるので、半径ベクトルＲｓを用いたゲームであるともいえる。別の実施形態においては、半径ベクトルＲｓ自体をゲームの制御に反映させてもよい。例えば、半径ベクトルＲｓの長さに応じて、ゲーム内でパドルを漕ぐ半径、すなわち深さをさらに制御するようにしてもよい。また、上述の実施形態においては、ゲームの制御のためにベクトルを算出する構成となっているが、制御に必要な値がスカラーである場合には、スカラー値で半径を算出するように変更してもよい。
【０１５７】
また、上述した実施形態はカヌーを題材にしたゲームを例に挙げたが、この他、例えば、フィギュアスケートを題材にしたゲーム処理にも本発明は適用可能である。例えば、入力装置８を把持したプレイヤがフィギュアスケートにおけるスピン動作を模した動きを行い、この回転運動にかかる中心や半径を算出し、仮想ゲーム空間内のプレイヤキャラクタの姿勢および動作制御を行うことが考えられる。
【０１５８】
また、ドラムを叩くことを題材とした音楽ゲームのゲーム処理にも本発明は適用可能である。すなわち、プレイヤは、入力装置８をドラムのスティックに見立てて、ドラムを叩くような操作を行う。当該ドラムを叩く操作も、単位時間毎の動作はどこかを中心点とした回転運動の一部と考えることができるため、その中心を算出して、仮想ゲーム空間でのドラムのスティックの姿勢制御を行うことが考えられる。
【０１５９】
また、ダンスを題材にしたゲーム処理にも本発明は適用可能である。すなわち、上記入力装置８を把持した状態で、画面に表示されているキャラクタが行う振り付けに併せて、プレイヤも自身の腕を動かす。この腕の動きにかかる入力装置８の姿勢や移動速度を算出し、仮想ゲーム空間内のプレイヤキャラクタの腕の動き等を制御してもよい。
【０１６０】
また、野球ゲームやゴルフゲームに適用することも可能である。たとえば、入力装置を野球のバットやゴルフクラブに見立ててスイングをするような操作において、スイングの速度を入力装置８の移動速度に基づいて制御し、大きく振る、コンパクトに振る等の打ち分けを回転運動の半径の長さに基づいて制御するような処理に利用可能である。
【産業上の利用可能性】
【０１６１】
本発明にかかるゲーム装置およびゲームプログラムは、入力装置に加えられた回転運動の中心や移動速度を推定することができ、据置型ゲーム装置や、加速度センサおよびジャイロセンサを内蔵した携帯型ゲーム装置、携帯電話やスマートフォン等に有用である。
【図面の簡単な説明】
【０１６２】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置３の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上ハウジングを外した状態を示す斜視図
【図６】図３のコントローラ７の下ハウジングを外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８】本実施形態の角速度の方向を示す図
【図９】本実施形態で想定するゲーム画面の一例
【図１０】本実施形態で想定するゲーム画面の一例
【図１１】本実施形態で想定するゲーム画面の一例
【図１２】本実施形態で想定するゲーム画面の一例
【図１３】パドリング操作の一例を示す模式図
【図１４】パドリング操作の一例を示す模式図
【図１５】本実施形態で想定するゲーム画面の一例
【図１６】本実施形態で想定するゲーム画面の一例
【図１７】本実施形態で想定するゲーム画面の一例
【図１８】本実施形態で想定するゲーム画面の一例
【図１９】本実施形態で想定するゲーム画面の一例
【図２０】パドリング操作における入力装置８の動きを示す図
【図２１】パドリング操作における入力装置８の動きを示す図
【図２２】移動速度の推定の原理について説明するための図
【図２３】本実施形態にかかる処理概要を説明するための図
【図２４】ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図
【図２５】本発明の実施形態に係るゲーム処理を示すフローチャート
【図２６】図２５のステップＳ７で示したパドル動作制御処理の詳細を示したフローチャート
【図２７】変数φ１について説明するための図
【図２８】「引き抜き」を説明するための図
【図２９】「並進漕ぎ」を説明するための図
【図３０】速度ベクトルＶのｚ軸成分Ｖｚを示す図
【図３１】変数φ３について説明するための図
【図３２】図２６のステップＳ２４の処理概要を説明するための図
【図３３】図２５のステップＳ２５の処理について説明するための図
【図３４】図２５のステップＳ２５の処理について説明するための図
【図３５】図２６のステップＳ２６の処理について説明するための図
【図３６】図２６のステップＳ２７の処理について説明するための図
【符号の説明】
【０１６３】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
４…光ディスク
７…コントローラ
１０…ＣＰＵ
１１…システムＬＳＩ
１１ａ…入出力プロセッサ
１１ｂ…ＧＰＵ
１１ｃ…ＤＳＰ
１１ｄ…ＶＲＡＭ
１１ｅ…内部メインメモリ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２…アンテナ
２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０３…水晶振動子
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
【図１】
2010104592.tif 000018
【図２】
2010104592.tif 000019
【図３】
2010104592.tif 000020
【図４】
2010104592.tif 000021
【図５】
2010104592.tif 000022
【図６】
2010104592.tif 000023
【図７】
2010104592.tif 000024
【図８】
2010104592.tif 000025
【図９】
2010104592.tif 000026
【図１０】
2010104592.tif 000027
【図１１】
2010104592.tif 000028
【図１２】
2010104592.tif 000029
【図１３】
2010104592.tif 000030
【図１４】
2010104592.tif 000031
【図１５】
2010104592.tif 000032
【図１６】
2010104592.tif 000033
【図１７】
2010104592.tif 000034
【図１８】
2010104592.tif 000035
【図１９】
2010104592.tif 000036
【図２０】
2010104592.tif 000037
【図２１】
2010104592.tif 000038
【図２２】
2010104592.tif 000039
【図２３】
2010104592.tif 000040
【図２４】
2010104592.tif 000041
【図２５】
2010104592.tif 000042
【図２６】
2010104592.tif 000043
【図２７】
2010104592.tif 000044
【図２８】
2010104592.tif 000045
【図２９】
2010104592.tif 000046
【図３０】
2010104592.tif 000047
【図３１】
2010104592.tif 000048
【図３２】
2010104592.tif 000049
【図３３】
2010104592.tif 000050
【図３４】
2010104592.tif 000051
【図３５】
2010104592.tif 000052
【図３６】
2010104592.tif 000053