(57)【要約】【課題】加速度を用いて入力装置の姿勢を応答性良く算出する。【解決手段】ゲーム装置は、加速度センサおよびジャイロセンサを備える入力装置から少なくとも加速度データおよび角速度データを取得し、入力装置の姿勢を算出する。姿勢算出装置は、反映度設定手段と、第１姿勢算出手段と、第２姿勢算出手段とを備える。反映度設定手段は、加速度データが示す加速度を姿勢に反映させる度合いを表す反映度を設定する。第１姿勢算出手段は、反映度が所定の第１閾値以上である場合、加速度データが示す加速度に基づいて入力装置の姿勢を算出する。第２姿勢算出手段は、反映度が、第１閾値以下である所定の第２閾値よりも小さい場合、角速度データによって示される角速度に基づいて入力装置の姿勢を算出する。【選択図】図８
2010259642.tif 000002
【特許請求の範囲】
【請求項１】
加速度センサおよび角速度センサを備える入力装置から少なくとも加速度データおよび角速度データを取得し、前記入力装置の姿勢を算出する姿勢算出装置であって、
前記加速度データが示す加速度を前記姿勢に反映させる度合いを表す反映度を設定する反映度設定手段と、
前記反映度が所定の第１閾値以上である場合、前記加速度データが示す加速度に基づいて前記入力装置の姿勢を算出する第１姿勢算出手段と、
前記反映度が、前記第１閾値以下である所定の第２閾値よりも小さい場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する第２姿勢算出手段とを備える、姿勢算出装置。
【請求項２】
前記第２閾値は、前記第１閾値よりも小さい値であり、
前記反映度が前記第１閾値よりも小さくかつ前記第２閾値以上である場合、前記第１姿勢算出手段が算出した姿勢と、前記第２姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する第３姿勢算出手段をさらに備える、請求項１に記載の姿勢算出装置。
【請求項３】
前記第３姿勢算出手段は、前記第１姿勢算出手段が算出した姿勢と前記第２姿勢算出手段が算出した姿勢との、前記反映度に基づく加重平均として前記入力装置の姿勢を算出する、請求項２に記載の姿勢算出装置。
【請求項４】
前記第１閾値と前記第２閾値は等しい値であり、
前記第１姿勢算出手段は、前記反映度が前記第１閾値以上である場合に前記入力装置の姿勢を算出し、
前記第２姿勢算出手段は、前記反映度が前記第１閾値よりも小さい場合に前記入力装置の姿勢を算出する、請求項１に記載の姿勢算出装置。
【請求項５】
前記反映度が前記第１閾値よりも小さくかつ前記第２閾値以上であり、さらに、前記反映度が増加している場合、前記第１姿勢算出手段が算出した姿勢と、前記第２姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する第４姿勢算出手段をさらに備え、
前記第２姿勢算出手段は、前記反映度が前記第２閾値よりも小さい場合、または、前記第１閾値よりも小さくかつ前記反映度が減少している場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する、請求項１に記載の姿勢算出装置。
【請求項６】
前記反映度設定手段は、前記加速度データが示す加速度に基づいて前記反映度を算出する、請求項１から請求項５のいずれか１項に記載の姿勢算出装置。
【請求項７】
前記反映度設定手段は、前記加速度データが示す加速度の変化量が小さいほど前記反映度が大きくなるように前記反映度を算出する、請求項６に記載の姿勢算出装置。
【請求項８】
前記反映度設定手段は、前記加速度データが示す加速度の大きさが重力加速度の大きさに近いほど前記反映度が大きくなるように前記反映度を算出する、請求項６に記載の姿勢算出装置。
【請求項９】
前記反映度設定手段は、前記反映度を繰り返し算出し、今回に算出された反映度が前回に算出された反映度よりも大きい場合、今回に算出された反映度を、前回に算出された反映度との間となるように補正する、請求項６から請求項８のいずれか１項に記載の姿勢算出装置。
【請求項１０】
前記反映度設定手段は、前記入力装置から取得される操作データに基づいて前記入力装置の動きの度合いを判別し、前記入力装置が激しく動かされているほど前記反映度が小さくなるように前記反映度を設定する、請求項１から請求項９のいずれか１項に記載の姿勢算出装置。
【請求項１１】
前記角速度センサは前記入力装置に対して着脱可能であり、
前記反映度設定手段は、前記入力装置から取得される操作データに基づいて、前記入力装置に前記角速度センサが装着されているか否かを判定し、判定結果に応じて前記反映度を設定する、請求項１から請求項１０のいずれか１項に記載の姿勢算出装置。
【請求項１２】
前記第１姿勢算出手段は、前記入力装置の姿勢を繰り返し算出し、前回に算出した姿勢に対応する重力方向と前記加速度の方向との、前記反映度に基づく加重平均として算出される重力方向に対応する姿勢を算出する、請求項１から請求項１１のいずれか１項に記載の姿勢算出装置。
【請求項１３】
加速度センサおよび角速度センサを備える入力装置から少なくとも加速度データおよび角速度データを取得し、前記入力装置の姿勢を算出する姿勢算出装置のコンピュータにおいて実行される姿勢算出プログラムであって、
前記加速度データが示す加速度を前記姿勢に反映させる度合いを表す反映度を設定する反映度設定手段と、
前記反映度が所定の第１閾値以上である場合、前記加速度データが示す加速度に基づいて前記入力装置の姿勢を算出する第１姿勢算出手段と、
前記反映度が、前記第１閾値以下である所定の第２閾値よりも小さい場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する第２姿勢算出手段として前記コンピュータを機能させる、姿勢算出プログラム。
【請求項１４】
前記第２閾値は、前記第１閾値よりも小さい値であり、
前記反映度が前記第１閾値よりも小さくかつ前記第２閾値以上である場合、前記第１姿勢算出手段が算出した姿勢と、前記第２姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する第３姿勢算出手段として前記コンピュータをさらに機能させる、請求項１３に記載の姿勢算出プログラム。
【請求項１５】
前記第３姿勢算出手段は、前記第１姿勢算出手段が算出した姿勢と前記第２姿勢算出手段が算出した姿勢との、前記反映度に基づく加重平均として前記入力装置の姿勢を算出する、請求項１４に記載の姿勢算出プログラム。
【請求項１６】
前記第１閾値と前記第２閾値は等しい値であり、
前記第１姿勢算出手段は、前記反映度が前記第１閾値以上である場合に前記入力装置の姿勢を算出し、
前記第２姿勢算出手段は、前記反映度が前記第１閾値よりも小さい場合に前記入力装置の姿勢を算出する、請求項１３に記載の姿勢算出プログラム。
【請求項１７】
前記反映度が前記第１閾値よりも小さくかつ前記第２閾値以上であり、さらに、前記反映度が増加している場合、前記第１姿勢算出手段が算出した姿勢と、前記第２姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する第４姿勢算出手段として前記コンピュータをさらに機能させ、
前記第２姿勢算出手段は、前記反映度が前記第２閾値よりも小さい場合、または、前記第１閾値よりも小さくかつ前記反映度が減少している場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する、請求項１３に記載の姿勢算出プログラム。
【請求項１８】
前記反映度設定手段は、前記加速度データが示す加速度に基づいて前記反映度を算出する、請求項１３から請求項１７のいずれか１項に記載の姿勢算出プログラム。
【請求項１９】
前記反映度設定手段は、前記加速度データが示す加速度の変化量が小さいほど前記反映度が大きくなるように前記反映度を算出する、請求項１８に記載の姿勢算出プログラム。
【請求項２０】
前記反映度設定手段は、前記加速度データが示す加速度の大きさが重力加速度の大きさに近いほど前記反映度が大きくなるように前記反映度を算出する、請求項１８に記載の姿勢算出プログラム。
【請求項２１】
前記反映度設定手段は、前記反映度を繰り返し算出し、今回に算出された反映度が前回に算出された反映度よりも大きい場合、今回に算出された反映度を、前回に算出された反映度との間となるように補正する、請求項１８から請求項２０のいずれか１項に記載の姿勢算出プログラム。
【請求項２２】
前記反映度設定手段は、前記入力装置から取得される操作データに基づいて前記入力装置の動きの度合いを判別し、前記入力装置が激しく動かされているほど前記反映度が小さくなるように前記反映度を設定する、請求項１３から請求項２１のいずれか１項に記載の姿勢算出プログラム。
【請求項２３】
前記角速度センサは前記入力装置に対して着脱可能であり、
前記反映度設定手段は、前記入力装置から取得される操作データに基づいて、前記入力装置に前記角速度センサが装着されているか否かを判定し、判定結果に応じて前記反映度を設定する、請求項１３から請求項２２のいずれか１項に記載の姿勢算出プログラム。
【請求項２４】
前記第１姿勢算出手段は、前記入力装置の姿勢を繰り返し算出し、前回に算出した姿勢に対応する重力方向と前記加速度の方向との、前記反映度に基づく加重平均として算出される重力方向に対応する姿勢を算出する、請求項１３から請求項２３のいずれか１項に記載の姿勢算出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力装置の姿勢を算出する姿勢算出装置および姿勢算出プログラムに関し、より特定的には、入力装置が備える加速度センサの出力を用いて姿勢を算出する姿勢算出装置および姿勢算出プログラムに関する。
【背景技術】
【０００２】
従来、入力装置が備える加速度センサの出力を用いて入力装置の姿勢を算出する技術が提案されている。例えば、特許文献１では、加速度センサによって一定期間内に検出された加速度を平滑化した値を用いて姿勢を算出している。特許文献１では、検出された加速度に対して平滑化を行うことによって、当該検出された加速度に含まれる成分のうちから入力装置の動きに起因する成分を除去し、検出された加速度が重力加速度による成分のみを含むようにしている。これによって、加速度センサの出力から重力方向を正確に算出することができ、入力装置の姿勢を正確に算出することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２８２７８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記特許文献１に記載の姿勢算出方法では、一定期間内に検出された加速度を平滑化する処理を行う。平滑化の処理のためには、過去の一定期間における複数の加速度の値が必要であることから、平滑化処理を行う上記特許文献１に記載の方法では、姿勢を算出するまでの応答性に限界があった。
【０００５】
それ故、本発明の目的は、加速度を用いて入力装置の姿勢を算出する際、入力装置の姿勢を応答性良く算出することができる姿勢算出装置および姿勢算出プログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
本発明は、加速度センサ（３７）および角速度センサ（ジャイロセンサ５５，５６）を備える入力装置（８）から少なくとも加速度データ（６４）および角速度データ（６３）を取得し、入力装置の姿勢を算出する姿勢算出装置（ゲーム装置３）である。姿勢算出装置は、反映度設定手段（ステップＳ３を実行するＣＰＵ１０。以下、単にステップ番号のみを記載する。）と、第１姿勢算出手段（Ｓ５）と、第２姿勢算出手段（Ｓ６）とを備える。反映度設定手段は、加速度データが示す加速度（加速度ベクトルＶａ）を姿勢に反映させる度合いを表す反映度（ｓ）を設定する。第１姿勢算出手段は、反映度が所定の第１閾値以上である場合（反映度ｓ＝１の場合）、加速度データが示す加速度に基づいて入力装置の姿勢を算出する。第２姿勢算出手段は、反映度が、第１閾値以下である所定の第２閾値よりも小さい場合（反映度ｓ＝０の場合）、角速度データによって示される角速度（ω）に基づいて入力装置の姿勢を算出する。
【０００８】
上記の構成によれば、反映度が大きい場合（反映度が第１閾値以上である場合）には加速度に基づいて入力装置の姿勢が算出され、反映度が小さい場合（反映度が第２閾値より小さい場合）には角速度に基づいて入力装置の姿勢が算出される。加速度に基づく姿勢の算出が適切でない場合には、角速度に基づいて姿勢が算出されるので、加速度に基づく姿勢の算出を行わない場合でも姿勢を算出することができる。したがって、加速度に基づく姿勢の算出が実行されない期間中に姿勢が算出されないために応答性が悪くなることを防止することができ、入力装置の姿勢を応答性良く算出することができる。
【０００９】
また、第２閾値は、前記第１閾値よりも小さい値であってもよい。このとき、姿勢算出装置は、第３姿勢算出手段（図１０に示すＳ７）をさらに備える。第３姿勢算出手段は、前記反映度が前記第１閾値よりも小さくかつ前記第２閾値以上である場合、前記第１姿勢算出手段が算出した姿勢と、前記第２姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する。
【００１０】
上記の構成によれば、反映度が中程度の値となる場合（上記第１閾値よりも小さくかつ第２閾値以上である場合）には、第３姿勢算出手段が、加速度に基づく第１姿勢と角速度に基づく第２姿勢との両方を考慮して姿勢を算出する。ここで、反映度が大きい状態と小さい状態との間で入力装置の状態が遷移する移行期間においては、姿勢の算出方法が変化することが原因で、算出される姿勢が急激に変化するおそれがある。これに対して、上記の構成によれば、上記移行期間においては上記第３姿勢算出手段によって姿勢が算出されるので、姿勢の算出方法が変化することに起因する姿勢の急激な変化を防止することができる。そのため、姿勢の急激な変化に対してユーザが違和感を抱くことを防止することができ、入力装置の操作性を向上することができる。
【００１１】
また、前記第３姿勢算出手段は、前記第１姿勢算出手段が算出した姿勢と前記第２姿勢算出手段が算出した姿勢との、前記反映度に基づく加重平均として前記入力装置の姿勢を算出してもよい（式（５））。
【００１２】
上記の構成によれば、第３姿勢算出手段は、入力装置の姿勢を算出する際、加速度に基づく姿勢と角速度に基づく姿勢とを、反映度に従った比率で用いる。したがって、反映度が大きい状態と小さい状態との間で入力装置の状態が遷移する際の移行期間においても、姿勢を正確に算出することができる。
【００１３】
また、前記第１閾値と前記第２閾値は等しい値であってもよい。このとき、前記第１姿勢算出手段は、前記反映度が前記第１閾値以上である場合に前記入力装置の姿勢を算出する。前記第２姿勢算出手段は、前記反映度が前記第１閾値よりも小さい場合に前記入力装置の姿勢を算出する（図１１）。
【００１４】
上記の構成によれば、反映度の値がいくらであっても、第１姿勢算出手段および第２姿勢算出手段のいずれかが必ず入力装置の姿勢を算出する。つまり、入力装置の姿勢を算出することが常に可能であるので、姿勢算出の応答性をより向上することができる。また、第３姿勢算出手段を備える場合に比べて、姿勢算出処理を簡易にすることができ、処理を高速化することができる。
【００１５】
また、姿勢算出装置は、第４姿勢算出手段をさらに備えていてもよい（図１２に示すステップＳ７）。第４姿勢算出手段は、前記反映度が前記第１閾値よりも小さくかつ前記第２閾値以上であり、さらに、前記反映度が増加している場合、前記第１姿勢算出手段が算出した姿勢と、前記第２姿勢算出手段が算出した姿勢との間になるように前記入力装置の姿勢を算出する。前記第２姿勢算出手段は、前記反映度が前記第２閾値よりも小さい場合、または、前記第１閾値よりも小さくかつ前記反映度が減少している場合、前記角速度データによって示される角速度に基づいて前記入力装置の姿勢を算出する。
【００１６】
上記の構成によれば、反映度が中程度の値となる場合（上記第１閾値よりも小さくかつ第２閾値以上である場合）であって、反映度が増加している場合には、第３姿勢算出手段が、加速度に基づく第１姿勢と角速度に基づく第２姿勢との両方を考慮して姿勢を算出する。ここで、反映度が小さい状態から大きい状態へと入力装置の状態が遷移する移行期間においては、姿勢の算出方法が変化することが原因で姿勢が急激に変化するおそれがある。これに対して、上記の構成によれば、上記移行期間においては上記第３姿勢算出手段によって姿勢が算出されるので、姿勢の算出方法が変化することに起因する姿勢の急激な変化を防止することができる。そのため、姿勢の急激な変化に対してユーザが違和感を抱くことを防止することができ、入力装置の操作性を向上することができる。
【００１７】
また、前記反映度設定手段は、前記加速度データが示す加速度に基づいて前記反映度を算出してもよい（式（１））。
【００１８】
上記の構成によれば、加速度データを用いることによって反映度を容易に算出することができる。また、加速度データを参照すれることによって、姿勢算出装置は、入力装置が動いている度合い（静止しているか、それとも、動かされているか）を推測することができ、さらには、加速度データにより示される加速度の信頼度（加速度が重力方向を表すものとして信頼できるか否かを表す度合い）を判断することができる。したがって、上記の構成によれば、反映度によって上記信頼度を表すことができるので、加速度または角速度のいずれに基づいて姿勢を算出するかを当該信頼度に応じて決定することができる。その結果、入力装置の姿勢を正確に算出することができる。
【００１９】
また、前記反映度設定手段は、前記加速度データが示す加速度の変化量が小さいほど前記反映度が大きくなるように前記反映度を算出してもよい（式（１））。
【００２０】
上記の構成によれば、加速度の変化量に応じて反映度が算出される。加速度の変化量を参照すれることによって、入力装置が動いている度合いを正確に推測することができ、その結果、加速度に関する上記信頼度を正確に判断することができる。したがって、加速度の変化量に応じて反映度を算出することによって、反映度を適切に設定することができ、ひいては、入力装置の姿勢を正確に算出することができる。
【００２１】
また、前記反映度設定手段は、前記加速度データが示す加速度の大きさが重力加速度の大きさに近いほど前記反映度が大きくなるように前記反映度を算出してもよい。
【００２２】
上記の構成によれば、加速度の大きさと重力加速度の大きさとの差分に応じて反映度が算出される。上記差分を参照することによって、入力装置が動いている度合いを正確に推測することができ、加速度に関する上記信頼度を正確に判断することができる。したがって、上記差分に応じて反映度を算出することによって、反映度を適切に設定することができ、ひいては、入力装置の姿勢を正確に算出することができる。
【００２３】
また、前記反映度設定手段は、前記反映度を繰り返し算出し、今回に算出された反映度が前回に算出された反映度よりも大きい場合、今回に算出された反映度を、前回に算出された反映度との間となるように補正してもよい（式（２））。
【００２４】
上記の構成によれば、反映度が増加する場合には、補正によって反映度の増加量が抑えられる。ここで、加速度から算出される反映度は、入力装置８が動かされている間に一時的に大きくなる場合がある。このような場合には、実際は加速度が重力方向を正しく表していない可能性が高く、反映度は小さい値に算出されるべきである。これに対して、上記の構成によれば、反映度が一時的に増加する場合には補正によって反映度の増加が抑えられ、反映度を小さい値に維持することができる。つまり、上記構成によれば、上記信頼度を表すものとして反映度をより正確に算出することができ、ひいては、入力装置の姿勢を正確に算出することができる。
【００２５】
また、前記反映度設定手段は、前記入力装置から取得される操作データに基づいて前記入力装置の動きの度合いを判別し、前記入力装置が激しく動かされているほど前記反映度が小さくなるように前記反映度を設定してもよい。
【００２６】
上記の構成によれば、反映度は、入力装置が動いている度合いを表すものとして算出される。上述のように、入力装置が動いている度合いによって、加速度データにより示される加速度の上記信頼度を判断することができる。したがって、上記の構成によれば、上記信頼度を表すものとして反映度を適切に設定することができ、入力装置の姿勢を正確に算出することができる。
【００２７】
また、前記角速度センサは前記入力装置に対して着脱可能であってもよい。このとき、前記反映度設定手段は、前記入力装置から取得される操作データに基づいて、前記入力装置に前記角速度センサが装着されているか否かを判定し（Ｓ２１）、判定結果に応じて前記反映度を設定する（図１４に示すＳ３，Ｓ２２）。
【００２８】
上記の構成によれば、角速度センサが入力装置に装着されているか否かに応じて異なる値となるように反映度が設定される。これによれば、姿勢算出装置は、角速度センサが装着されていない場合には第１姿勢算出手段によって加速度に基づく姿勢を算出し、角速度センサが装着されている場合には第１姿勢算出手段と第２姿勢算出手段を適宜使い分けて姿勢を算出することが可能となる。すなわち、姿勢算出装置は、角速度センサが装着されている場合と装着されていない場合との両方に対応することが可能となる。
【００２９】
また、前記第１姿勢算出手段は、前記入力装置の姿勢を繰り返し算出し、前回に算出した姿勢に対応する重力方向と前記加速度の方向との、前記反映度に基づく加重平均として算出される重力方向に対応する姿勢を算出してもよい（式（３））。
【００３０】
上記の構成によれば、第１姿勢算出手段は、反映度を考慮して入力装置の姿勢を算出するので、姿勢をより正確に算出することができる。なお、上記の構成においては、反映度が小さくなると姿勢が変化しなくなり、実質的には姿勢が算出されなくなってしまう。しかし、本発明では反映度が小さい場合には角速度に基づいて姿勢が算出されるので、姿勢が算出されない結果、姿勢算出の応答性が悪くなることがない。このように、上記の構成のように反映度を考慮して入力装置の姿勢を算出する場合には、本発明が特に有効に機能する。
【００３１】
また、本発明は、情報処理装置のコンピュータを上記各手段として機能させる姿勢算出プログラム（６１）の形態で実施されてもよい。
【発明の効果】
【００３２】
本発明によれば、加速度に基づく姿勢算出が実行されない場合には、角速度に基づく姿勢算出を行うようにすることによって、姿勢の算出が実行されないために姿勢算出の応答性が悪くなることを防止し、入力装置の姿勢を応答性良く算出することができる。
【図面の簡単な説明】
【００３３】
【図１】ゲームシステムの外観図
【図２】ゲーム装置の機能ブロック図
【図３】入力装置の外観構成を示す斜視図
【図４】コントローラの外観構成を示す斜視図
【図５】コントローラの内部構造を示す図
【図６】コントローラの内部構造を示す図
【図７】入力装置の構成を示すブロック図
【図８】本実施形態における姿勢算出処理の概要を示す図
【図９】ゲーム装置のメインメモリに記憶される主なデータを示す図
【図１０】ゲーム装置において実行される処理の流れを示すメインフローチャート
【図１１】本実施形態の第１の変形例におけるゲーム処理の流れを示すフローチャート
【図１２】本実施形態の第２の変形例におけるゲーム処理の流れを示すフローチャート
【図１３】本実施形態の第２の変形例における反映度ｓと姿勢算出に用いる方法との関係を示す図
【図１４】本実施形態の第３の変形例におけるゲーム処理の流れを示すフローチャート
【発明を実施するための形態】
【００３４】
［ゲームシステムの全体構成］
図１を参照して、本発明の一実施形態に係る姿勢算出装置の一例であるゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、入力装置８、およびマーカ部６を含む。本システムは、入力装置８を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００３５】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００３６】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００３７】
入力装置８は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与えるものである。本実施形態では、入力装置８はコントローラ５とジャイロセンサユニット７とを含む。詳細は後述するが、入力装置８は、コントローラ５に対してジャイロセンサユニット７が着脱可能に接続されている構成である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００３８】
［ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００３９】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩの内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００４０】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００４１】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００４２】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００４３】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００４４】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４５】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００４６】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４７】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００４８】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４９】
［入力装置８の構成］
次に、図３〜図６を参照して、入力装置８について説明する。図３は、入力装置８の外観構成を示す斜視図である。図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００５０】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００５１】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００５２】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、ジャイロセンサユニット７や他のコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００５３】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００５４】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００５５】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００５６】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００５７】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００５８】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００５９】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子や、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００６０】
また、ジャイロセンサユニット７は、３軸回りの角速度を検知するジャイロセンサ（図７に示すジャイロセンサ５５および５６）を有する。ジャイロセンサユニット７は、コントローラ５のコネクタ３３に着脱可能に装着される。ジャイロセンサユニット７の前端（図３に示すＺ軸正方向側の端部）には、コネクタ３３に接続可能なプラグ（図７に示すプラグ５３）が設けられる。さらに、プラグ５３の両側にはフック（図示せず）が設けられる。ジャイロセンサユニット７がコントローラ５に対して装着される状態では、プラグ５３がコネクタ３３に接続されるとともに、上記フックがコントローラ５の係止穴３３ａに係止する。これによって、コントローラ５とジャイロセンサユニット７とがしっかりと固定される。また、ジャイロセンサユニット７は側面（図３に示すＸ軸方向の面）にボタン５１を有している。ボタン５１は、それを押下すれば上記フックの係止穴３３ａに対する係止状態を解除することができるように構成されている。したがって、ボタン５１を押下しながらプラグ５３をコネクタ３３から抜くことによって、ジャイロセンサユニット７をコントローラ５から離脱することができる。
【００６１】
また、ジャイロセンサユニット７の後端には、上記コネクタ３３と同形状のコネクタが設けられる。したがって、コントローラ５（のコネクタ３３）に対して装着可能な他の機器は、ジャイロセンサユニット７のコネクタに対しても装着可能である。なお、図３においては、当該コネクタに対してカバー５２が着脱可能に装着されている。
【００６２】
なお、図３〜図６に示したコントローラ５およびジャイロセンサユニット７の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００６３】
図７は、入力装置８（コントローラ５およびジャイロセンサユニット７）の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００６４】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００６５】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００６６】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００６７】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００６８】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸または２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。なお、加速度センサ３７は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００６９】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置８（コントローラ５）を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトル（ａｘ，ａｙ，ａｚ）として表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。また、以下では、当該加速度ベクトルを、後述する運動加速度ベクトルと明確に区別する目的で、「検出加速度ベクトル」と呼ぶことがある。
【００７０】
加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、加速度データに基づいてコントローラ５の姿勢を判断する。
【００７１】
加速度センサ３７が検出した加速度を示す上記加速度データは、通信部３６へ出力される。本実施形態において、加速度センサ３７は、コントローラ５の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【００７２】
なお、加速度センサ３７から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度または姿勢を判定することができる。
【００７３】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００７４】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。また、マイコン４２はコネクタ３３に接続されている。ジャイロセンサユニット７から送信されてくるデータは、コネクタ３３を介してマイコン４２に入力される。以下、ジャイロセンサユニット７の構成について説明する。
【００７５】
ジャイロセンサユニット７は、プラグ５３、マイコン５４、２軸ジャイロセンサ５５、および１軸ジャイロセンサ５６を備えている。上述のように、ジャイロセンサユニット７は、３軸（本実施形態では、ＸＹＺ軸）回りの角速度を検出し、検出した角速度を示すデータ（角速度データ）をコントローラ５へ送信する。
【００７６】
２軸ジャイロセンサ５５は、Ｘ軸回りの角速度およびＹ軸回りの（単位時間あたりの）角速度を検出する。また、１軸ジャイロセンサ５６は、Ｚ軸回りの（単位時間あたりの）角速度を検出する。なお、本明細書では、コントローラ５の撮像方向（Ｚ軸正方向）を基準として、ＸＹＺ軸回りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、２軸ジャイロセンサ５５は、ロール方向（Ｘ軸回りの回転方向）およびピッチ方向（Ｙ軸回りの回転方向）の角速度を検出し、１軸ジャイロセンサ５６は、ヨー方向（Ｚ軸回りの回転方向）の角速度を検出する。
【００７７】
なお、本実施形態では、３軸回りの角速度を検出するために、２軸ジャイロセンサ５５と１軸ジャイロセンサ５６とを用いる構成としたが、他の実施形態においては、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。
【００７８】
また、本実施形態では、後述する姿勢算出処理における計算を容易にする目的で、各ジャイロセンサ５５および５６が角速度を検出する３つの軸は、加速度センサ３７が加速度を検出する３つの軸（ＸＹＺ軸）と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ５６および５７が角速度を検出する３つの軸と、加速度センサ３７が加速度を検出する３つの軸とは一致しなくてもよい。
【００７９】
各ジャイロセンサ５６および５７で検出された角速度を示すデータは、マイコン５４に出力される。したがって、マイコン５４には、ＸＹＺ軸の３軸回りの角度速度を示すデータが入力されることになる。マイコン５４は、上記３軸回りの角速度を示すデータを角速度データとしてプラグ５３を介してコントローラ５へ送信する。なお、マイコン５４からコントローラ５への送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【００８０】
コントローラ５の説明に戻り、操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力されたデータ、ならびに、ジャイロセンサユニット７からマイコン４２へ送信されてきたデータは、一時的にメモリ４３に格納される。これらのデータは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【００８１】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５を任意の傾斜角度に傾ける操作を行うことができる。その他、上記コントローラ５によれば、プレイヤは、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作を行うこともできる。
【００８２】
［姿勢算出処理の概要］
次に、ゲーム装置３において実行される、入力装置８の姿勢を算出する姿勢算出処理の概要を説明する。本実施形態では、ゲーム装置３は、姿勢算出処理によって入力装置８の姿勢を算出し、算出された姿勢をプレイヤ入力として用いてゲーム処理を実行する。本実施形態では、ゲーム装置３を用いて行われるゲームの一例として、プレイヤが入力装置８を用いてハンドル操作のようなゲーム操作を行うゲームを想定する。すなわち、プレイヤは入力装置８のＺ軸が略水平になるように入力装置８を把持し、入力装置８を左右に傾けることによって入力装置８の姿勢を変化させる操作を行う（図８参照）。ゲーム装置３は、入力装置８の姿勢を繰り返し算出し、例えば仮想のゲーム空間内に配置されるオブジェクトの動作を当該姿勢に応じて制御する。
【００８３】
本実施形態における姿勢算出処理では、ゲーム装置３は、基本的には加速度センサ３７の出力（加速度ベクトル）に基づいて入力装置８の姿勢を算出する。加速度センサ３７は入力装置８に加えられる重力加速度を検出する（加速度センサ３７が検出する加速度には重力加速度が含まれる）ので、ゲーム装置３は、検出される加速度を用いて、入力装置８を基準にした重力方向、すなわち、重力方向に対する入力装置８の傾き（姿勢）を算出することができる。なお、本実施形態では、入力装置８の姿勢は、加速度から算出される重力方向を表すベクトル（図８に示す重力ベクトルＶｇ）として表される。
【００８４】
ここで、入力装置８が静止している場合（ほぼ静止していて静止しているとみなせる場合も含む）には、加速度センサ３７が検出する加速度には重力加速度のみが含まれるので、当該加速度は重力方向を正確に表していると言える。したがって、この場合、ゲーム装置３は、加速度の向きを重力方向とすることによって入力装置８の姿勢を正確に算出することができる。一方、入力装置８が動かされている場合には、重力加速度だけでなく、入力装置８の運動に起因する加速度が加速度センサ３７によって検出される。例えば、加速度センサ３７が検出する加速度には、入力装置８の移動により生じる慣性力や遠心力による慣性力等による加速度が含まれる。そのため、入力装置８が動かされている場合には、加速度センサ３７が検出する加速度が重力方向を正確には表していない可能性がある。したがって、入力装置８が動かされている場合においては、上記加速度をそのまま用いて重力方向を算出しても、姿勢を正確に算出することができない。なお、入力装置８が動かされている場合には上記加速度から重力方向を算出する処理を実行しないようにする方法も考えられる。しかし、この方法では入力装置８が動かされている間、ゲーム装置３は入力装置８の姿勢を算出することができなくなるので、姿勢をリアルタイムで算出することができない。その結果、姿勢算出の応答性、および、入力装置８による操作の応答性が悪くなってしまう。このように、加速度センサ３７によって検出される加速度から重力方向を算出する方法では、入力装置８が動いている場合に問題が生じるおそれがある。
【００８５】
そこで、本実施形態における姿勢算出処理においては、ゲーム装置３は、加速度センサ３７によって検出される加速度に基づいて姿勢を算出する処理に加えて、当該処理では姿勢を正確に算出することができない場合には、ジャイロセンサ５５および５６によって検出される角速度に基づいて姿勢を算出する処理を実行する。つまり、ゲーム装置３は、加速度センサ３７によって検出される加速度が重力方向を正確には表していないと判断される場合には、ジャイロセンサ５５および５６によって検出される角速度に基づいて姿勢を算出する。これによって、入力装置８の姿勢を正確に算出することができるとともに、入力装置８の姿勢を応答性良く算出することができる。
【００８６】
具体的には、ゲーム装置３は、（１）反映度設定手段と、（２）第１姿勢算出手段と、（３）第２姿勢算出手段とを備える。なお、上記（１）〜（３）の各手段は、ゲーム装置３のコンピュータ（ＣＰＵ１０）がゲームプログラムに含まれる姿勢算出プログラムを実行することによって実現される。すなわち、姿勢算出プログラムは、ゲーム装置３のコンピュータを上記（１）〜（３）の各手段として機能させる。以下、各手段について詳細を説明する。
【００８７】
（１）反映度設定手段
反映度設定手段は、算出すべき姿勢に対して上記加速度を反映させる度合い（姿勢の算出に上記加速度を反映させる度合い）を表す反映度ｓを設定する（後述するステップＳ３，Ｓ４）。反映度ｓは、加速度センサ３７によって検出される加速度が重力方向を表すものとして信頼される場合ほど、大きい値となるように設定される。典型的には、反映度ｓは、入力装置８が静止状態にあるかまたはほぼ静止している状態にある場合、大きい値に設定され、入力装置８が動いている状態にある場合、小さい値に設定される。つまり、反映度ｓは、入力装置が激しく動かされているほど小さくなるように設定されてもよい。本実施形態においては、反映度設定手段は、加速度センサ３７によって検出される加速度（加速度ベクトルＶａ）に基づいて反映度ｓを算出する。なお、他の実施形態においては、反映度ｓは、加速度データに代えて、入力装置８からゲーム装置３へ送信される他の操作データ（マーカ座標データや角速度データ）に基づいて算出されてもよい。
【００８８】
（２）第１姿勢算出手段
図８は、本実施形態における姿勢算出処理の概要を示す図である。第１姿勢算出手段は、上記反映度ｓが所定の第１閾値以上である場合、加速度センサ３７によって検出される加速度（加速度ベクトルＶａ）に基づいて入力装置８の姿勢を算出する（後述するステップＳ５）。つまり、ゲーム装置３は、反映度が比較的大きい値である場合、加速度ベクトルＶａが重力方向を表すものとして信頼できると判断し、当該加速度を用いて入力装置８の姿勢（重力ベクトルＶｇ）を算出する（図８に示す（Ａ）の場合）。また、加速度に基づく姿勢の算出方法はどのような方法であってもよい。例えば図８に示すように、第１姿勢算出手段は、加速度ベクトルＶａの方向をそのまま重力ベクトルＶｇとして用いて入力装置８の姿勢を算出してもよい。詳細は後述するが、本実施形態では、第１姿勢算出手段は、加速度ベクトルＶａとともに上記反映度を用いて入力装置８の姿勢（重力ベクトルＶｇ）を算出する。
【００８９】
（３）第２姿勢算出手段
第２姿勢算出手段は、反映度が所定の第２閾値よりも小さい場合、ジャイロセンサ５５および５６によって検出される角速度ωに基づいて入力装置８の姿勢を算出する（後述するステップＳ６）。つまり、ゲーム装置３は、反映度が比較的小さい値である場合、加速度が重力方向を表すものとして信頼できないと判断し、当該加速度に代えて上記角速度ωを用いて入力装置８の姿勢（重力ベクトルＶｇ）を算出する（図８に示す（Ｂ）の場合）。角速度ωに基づく姿勢の算出方法はどのような方法であってもよい。本実施形態では、第２姿勢算出手段は、現在の姿勢を角速度ωに基づいて逐次更新することによって新たな姿勢を算出する。具体的には、姿勢は、図８に示すように、前回の姿勢に対応する重力ベクトルＶｇ０を角速度ωの逆方向に回転させることによって得られる重力ベクトルＶｇとして算出される。
【００９０】
以上のように、本実施形態においては、反映度ｓの値が比較的大きい場合には加速度に基づいて入力装置８の姿勢が算出され（図８に示す（Ａ））、反映度ｓの値が比較的小さい場合には、角速度に基づいて入力装置８の姿勢が算出される（図８に示す（Ｂ））。このように、本実施形態によれば、加速度センサ３７によって検出される加速度が重力方向を表すものとして信頼できるか否かに応じて、姿勢の算出のために当該加速度を用いるか否かが決定される。したがって、信頼できない（重力方向を表さない）加速度に基づいて姿勢が算出されることを防止することができるので、姿勢を正確に算出することができる。また、加速度が信頼できない場合には角速度に基づいて姿勢が算出されるので、ゲーム装置３は、加速度が信頼できない期間中も姿勢を算出することができる。つまり、加速度が信頼できない期間中に姿勢が算出されないことによって応答性が悪くなることを防止することができ、入力装置８の姿勢を応答性良く算出することができる。
【００９１】
なお、実際に入力装置８を用いて操作が行われる場合には、入力装置８が静止している状態と、入力装置８が動いている状態との間に移行状態が生じる。この移行状態とは、反映度ｓが中程度の値となる状態（具体的には、上記第１閾値と第２閾値との間の値となる状態）である。本実施形態においては、上記移行状態に対応すべく、ゲーム装置３は第３姿勢算出手段をさらに備える。第３姿勢算出手段は、反映度ｓが第１閾値よりも小さくかつ第２閾値以上である場合、第１姿勢算出手段が算出した姿勢と、第２姿勢算出手段が算出した姿勢との間になるように入力装置８の姿勢を算出する（後述するステップＳ７）。したがって、この場合、姿勢を表す重力ベクトルＶｇは、加速度に基づいて算出される重力ベクトルＶｇ１と、角速度に基づいて算出される重力ベクトルＶｇ２との間となるように算出される（図８に示す（Ｃ）参照）。
【００９２】
ここで、反映度ｓが比較的大きい状態と、反映度ｓが比較的小さい状態との間で状態が遷移する際において、第１姿勢算出手段による算出方法から第２姿勢算出手段による算出方法へと姿勢の算出方法を急に変化させると、算出される姿勢が急に変化する可能性がある。姿勢が急に変化すると、姿勢を用いて実行されるゲーム処理の結果（例えば、仮想ゲーム空間におけるオブジェクトの姿勢や動作）も急に変化することになるので、プレイヤが入力操作に違和感を抱くおそれがある。これに対して、上記第３姿勢算出手段をさらに備える構成とすることによって、姿勢の算出方法を急に切り替えることに起因する姿勢の急激な変化を防止することができる。したがって、プレイヤが入力操作に違和感を抱くことを防止することができ、入力装置８の操作性を向上することができる。なお、他の実施形態においては、後述する第１の変形例のように、ゲーム装置３は第３姿勢算出手段を備えていない構成であってもよい。
【００９３】
［ゲーム処理の詳細］
次に、図９および図１０を参照して、ゲーム装置３において実行されるゲーム処理の詳細について説明する。まず、ゲーム処理において用いられる主なデータについて図９を用いて説明する。図９は、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図９に示すように、ゲーム装置３のメインメモリには、ゲームプログラム６０、操作データ６２、およびゲーム処理用データ６５が記憶される。なお、メインメモリには、図９に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【００９４】
ゲームプログラム６０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。ゲームプログラム６０には姿勢算出プログラム６１が含まれる。姿勢算出プログラム６１は、入力装置８の姿勢を算出するための姿勢算出処理（後述するステップＳ３〜Ｓ７）を実行するためのプログラムである。
【００９５】
操作データ６２は、コントローラ５からゲーム装置３へ送信されてくる操作データである。上述したように、コントローラ５からゲーム装置３へ１／２００秒に１回の割合で操作データが送信されるので、メインメモリに記憶される操作データ６２はこの割合で更新される。
【００９６】
操作データ６２には、角速度データ６３および加速度データ６４が含まれる。角速度データ６３は、ジャイロセンサユニット７のジャイロセンサ５５および５６によって検出された角速度ωを示すデータである。ここでは、角速度データ６３は、図３に示すＸＹＺ座標系の３軸回りのそれぞれの角速度ωを示す。なお、コントローラ５にジャイロセンサユニット７が装着されていない場合、角速度データ６３は、ジャイロセンサユニット７が装着されていないことを示すデータとなる。
【００９７】
加速度データ６４は、加速度センサ３７によって検出された加速度（加速度ベクトル）を示すデータである。ここでは、加速度データ６４は、図３に示すＸＹＺの３軸の方向に関する加速度を各成分とする３次元の加速度ベクトルＶａを示す。また、本実施形態においては、入力装置８が静止している状態で加速度センサ３７が検出する加速度ベクトルＶａの大きさを“１”とする。つまり、加速度センサ３７によって検出される重力加速度の大きさは“１”である。
【００９８】
なお、本実施形態においては、操作データ６２には、角速度データ６３および加速度データ６４の他、マーカ座標データおよび操作ボタンデータが含まれる。マーカ座標データは、撮像情報演算部３５の画像処理回路４１によって算出される座標、すなわち上述のマーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための２次元座標系で表現される。また、操作ボタンデータは、各操作ボタン３２ａ〜３２ｉに対する入力状態を示すデータである。
【００９９】
ゲーム処理用データ６５は、後述するゲーム処理（図１０）において用いられるデータである。ゲーム処理用データ６５は、前回加速度データ６６、反映度データ６７、前回反映度データ６８、第１姿勢データ６９、第２姿勢データ７０、第３姿勢データ７１、および、前回姿勢データ７２を含む。なお、図９に示すデータの他、ゲーム処理用データ６５は、ゲーム処理において用いられる各種データ（ゲームパラメータを示すデータ等）を含む。
【０１００】
前回加速度データ６６は、前回に取得された操作データ６２に含まれる加速度データである。すなわち、ＣＰＵ１０は入力装置８から操作データ６２を繰り返し取得し、新たな操作データ６２が取得されると、その時点で加速度データ６４としてメインメモリに記憶していたデータを、前回加速度データ６６としてメインメモリに記憶する。前回加速度データ６６により示される加速度ベクトル（前回加速度ベクトル）Ｖａ０は、反映度ｓおよび第１重力ベクトルＶｇ１を算出するために用いられる。
【０１０１】
反映度データ６７は、上記反映度ｓを示すデータである。本実施形態においては、反映度ｓは、加速度センサ３７によって検出される加速度ベクトルＶａと上記前回加速度ベクトルＶａ０とに基づいて算出される。反映度ｓは、加速度ベクトルＶａが重力方向を表すものとして信頼される度合いを表す変数である。詳細は後述するが、反映度ｓは、０≦ｓ≦１の範囲をとり、値が大きいほど、加速度ベクトルＶａが（重力方向を表すものとして）信頼できることを表す。
【０１０２】
前回反映度データ６８は、前回に算出された反映度を示すデータである。すなわち、ＣＰＵ１０は、反映度ｓを繰り返し算出し、新たな反映度ｓが算出されると、その時点で反映度データ６７としてメインメモリに記憶していたデータを、前回反映度データ６８としてメインメモリに記憶する。詳細は後述するが、前回反映度ｓ０は反映度ｓを補正する処理（ステップＳ４）において用いられる。
【０１０３】
第１姿勢データ６９は、上記加速度ベクトルＶａに基づいて算出される入力装置８の姿勢（第１姿勢）を示すデータである。本実施形態においては、入力装置８の姿勢は、入力装置８を基準とした場合の重力方向を示す重力ベクトルによって表される。したがって、第１姿勢データ６９は、上記加速度ベクトルＶａに基づいて算出される第１重力ベクトルＶｇ１を示す。なお、他の実施形態においては、入力装置８の姿勢は、例えば空間における入力装置８の所定軸（例えばＺ軸）の向きを表すベクトルや、入力装置８のＸＹＺ軸の向きを表す３つのベクトルの各成分を要素とする３×３の行列によって表されてもよい。また、本実施形態では、入力装置８の３次元の姿勢を算出する場合を例として説明するが、他の実施形態においては、ゲーム装置３は、入力装置８の２次元の姿勢を算出するものであってもよい。
【０１０４】
第２姿勢データ７０は、ジャイロセンサ５５，５６によって検出される角速度ωに基づいて算出される入力装置８の姿勢（第２姿勢）を示すデータである。本実施形態においては、第２姿勢も上記第１姿勢と同様、入力装置８を基準とした場合の重力方向を示す重力ベクトルによって表される。すなわち、第２姿勢データ７０は、上記角速度ωに基づいて算出される第２重力ベクトルＶｇ２を示す。
【０１０５】
第３姿勢データ７１は、上記第１姿勢および第２姿勢に基づいて算出される入力装置８の姿勢（第３姿勢）を示すデータである。本実施形態においては、第３姿勢も上記第１および第２姿勢と同様、入力装置８を基準とした場合の重力方向を示す重力ベクトルによって表される。すなわち、第３姿勢データ７１は、上記第１重力ベクトルＶｇ１および第２重力ベクトルＶｇ２に基づいて算出される第３重力ベクトルＶｇ３を示す。なお、第３重力ベクトルＶｇ３は、第１重力ベクトルＶｇ１と第２重力ベクトルＶｇ２との間となるように算出される。本実施形態においては、第３重力ベクトルＶｇ３が、最終的な入力装置８の姿勢として用いられる。
【０１０６】
前回姿勢データ７２は、前回に算出された入力装置８の姿勢（第３姿勢）を示すデータである。すなわち、ＣＰＵ１０は、第３姿勢を繰り返し算出し、新たな第３姿勢が算出されると、その時点で第３姿勢データ７１としてメインメモリに記憶していたデータを、前回姿勢データ７２としてメインメモリに記憶する。以下では、前回姿勢データ７２により示される、前回の第３姿勢を表す重力ベクトルを、前回重力ベクトルＶｇ０とする。前回重力ベクトルＶｇ０は、今回の第２姿勢（すなわち、第２重力ベクトルＶｇ２）を算出するために用いられる。
【０１０７】
次に、ゲーム装置３において行われる処理の詳細を、図１０を用いて説明する。図１０は、ゲーム装置３において実行される処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１０に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【０１０８】
まず、ステップＳ１において、ＣＰＵ１０は、ゲームに関する初期化処理を実行する。この初期化処理においては、ゲーム処理に用いられる各種パラメータの値が初期化されたり、仮想のゲーム空間が構築されたり、プレイヤオブジェクトや他のオブジェクトがゲーム空間の初期位置に配置されたりする。また、ゲーム処理用データ６５に含まれるデータのうち、必要なデータに関して初期値が設定される。例えば、前回加速度データ６６としては“０”を示すデータがメインメモリに記憶される。また、前回反映度データ６８としては“１”を示すデータがメインメモリに記憶される。以上のステップＳ１の後、ステップＳ２〜Ｓ９の処理ループが、ゲームが実行される間繰り返し実行される。なお、１回の当該処理ループは、１フレーム時間（例えば１／６０秒）に１回の割合で実行される。
【０１０９】
ステップＳ２において、ＣＰＵ１０は操作データを取得する。すなわち、コントローラ５から送信されてくる操作データが無線コントローラモジュール１９を介して受信される。そして、受信された操作データに含まれる角速度データおよび加速度データ等がそれぞれメインメモリに記憶される。ステップＳ２の次にステップＳ３の処理が実行される。
【０１１０】
ステップＳ３において、ＣＰＵ１０は反映度ｓを算出する。反映度ｓは、加速度センサ３７によって検出された加速度ベクトルＶａと、前回加速度ベクトルＶａ０とに基づいて算出される。ＣＰＵ１０は、加速度データ６４および前回加速度データ６６をメインメモリから読み出し、加速度ベクトルＶａと前回加速度ベクトルＶａ０とを用いて次の式（１）を計算することによって反映度ｓを算出する。
ｓ＝１−（｜Ｖａ−Ｖａ０｜−Ｄｍｉｎ）／（Ｄｍａｘ−Ｄｍｉｎ）  …（１）
上式（１）において、定数Ｄｍｉｎおよび定数Ｄｍａｘは予め定められている。上式（１）に示すように、反映度ｓは、加速度ベクトルＶａと前回加速度ベクトルＶａ０と差分の大きさに基づいて、つまり、加速度の（単位時間あたりの）変化量に基づいて算出される。具体的には、反映度ｓは、加速度の変化量が大きいほど小さくなるように算出される。加速度の変化量が大きいほど、入力装置８が動いている可能性が高く、加速度ベクトルが（重力方向を表すものとして）信頼できないと推測できるからである。なお、定数Ｄｍｉｎは、反映度ｓが“１”となる上記変化量の上限値を表し、定数Ｄｍａｘは、反映度ｓが“０”となる上記変化量の下限値を表す。つまり、反映度ｓの算出結果が１以上になる場合は１にし、０以下になる場合は０にするようにする。したがって、上記変化量が定数Ｄｍｉｎ以下であれば反映度ｓは“１”となり、上記変化量が定数Ｄｍａｘ以上であれば、反映度ｓは“０”となり、変化量が定数Ｄｍｉｎと定数Ｄｍａｘの間であれば、反映度ｓは０＜ｄ＜１の範囲の値となる。したがって、ゲーム制作者は、定数Ｄｍｉｎと定数Ｄｍａｘを適宜調整することによって、加速度センサ３７の特性やゲーム操作の内容やゲーム処理の内容等に応じて反映度ｓを適切に設定することができる。上記ステップＳ３の処理によって算出された反映度ｓを示すデータは、反映度データ６７としてメインメモリに記憶される。ステップＳ３の次にステップＳ４の処理が実行される。
【０１１１】
なお、上記ステップＳ３では、ＣＰＵ１０は、加速度ベクトルが（重力方向を表すものとして）信頼できる度合いを判別するべく、加速度の（単位時間あたりの）変化量に基づいて反映度ｓを算出した。ここで、反映度ｓは、加速度ベクトルＶａが信頼できる度合い（信頼度）を判別するための他の方法で算出されてもよい。例えば、他の実施形態においては、反映度ｓは、加速度ベクトルＶａの大きさと重力加速度の大きさ（＝１）との差分に基づいて算出されてもよい。具体的には、ＣＰＵ１０は、上式（１）における“｜Ｖａ−Ｖａ０｜”を“｜Ｖａ−Ｇ｜（Ｇは重力加速度の大きさ）”に変更した式に従って反映度ｓを算出してもよい。
【０１１２】
また、反映度ｓは、加速度センサ３７の出力である加速度データ６４に限らず、操作データに含まれる他のデータに基づいて算出されてもよい。例えば、他の実施形態においては、反映度ｓは、角速度データ６３により示される角速度ωに基づいて算出されてもよい。すなわち、角速度ωが大きい場合には、入力装置８が激しく動いていると推測することができ、加速度ベクトルＶａが信頼できないと推測できる。したがって、ＣＰＵ１０は、角速度ωが大きいほど反映度ｓが小さくなるように反映度ｓを算出してもよい。また、他の実施形態においては、反映度ｓは、上述したマーカ座標データにより示されるマーカ座標の変化量（移動量）に基づいて算出されてもよい。すなわち、マーカ座標の変化量が大きい場合には、入力装置８が激しく動いていると推測することができ、加速度ベクトルＶａが信頼できないと推測できる。したがって、ＣＰＵ１０は、マーカ座標の変化量が大きいほど反映度ｓが小さくなるように反映度ｓを算出してもよい。また、反映度ｓは、角速度ωに基づく姿勢の算出が可能であるか否かに基づいて設定されてもよい（後述する第３変形例参照）。
【０１１３】
ステップＳ４において、ＣＰＵ１０は反映度ｓを補正する。反映度ｓの補正は、今回のステップＳ３で算出された反映度ｓと、前回反映度ｓ０とに基づいて行われる。すなわち、ＣＰＵ１０は、反映度データ６７および前回反映度データ６８をメインメモリから読み出す。そして、反映度データ６７により示される補正前の反映度ｓと、前回反映度データ６８により示される前回反映度ｓ０とを用いて、次の式（２）を計算することによって補正後の反映度ｓ’を算出する。
ｓ０＜ｓのとき、ｓ’＝ｓ０・Ｓ１＋（１−Ｓ１）・ｓ
ｓ０≧ｓのとき、ｓ’＝ｓ                            …（２）
上式（２）において、定数Ｓ１は０＜Ｓ１＜１の範囲で予め定められる。上式（２）に示すように、今回の処理ループ（Ｓ２〜Ｓ９）で算出された反映度ｓが前回反映度ｓ０よりも大きい場合、今回の反映度ｓは、当該反映度ｓと前回反映度ｓ０との間の値に補正される。一方、今回の処理ループで算出された反映度ｓが前回反映度ｓ０以下である場合、反映度ｓは補正されない。つまり、上式（２）によって、反映度ｓは、増加する場合には急激には値が変化しないように設定される。上記ステップＳ４の処理によって補正された反映度ｓを示すデータは、新たな反映度データ６７としてメインメモリに更新して記憶される。ステップＳ４の次にステップＳ５の処理が実行される。
【０１１４】
上記ステップＳ４の処理は、入力装置８が動かされている状況で反映度ｓが一時的に大きくなる場合を考慮したものである。例えば入力装置８が往復運動を行っている状態では、往復運動の折り返しの位置において加速度の変化量が小さくなる場合がある。この場合、（入力装置８は激しく動かされている最中であるので）加速度ベクトルＶａは重力方向を正しく表していない可能性が高いにもかかわらず、上式（１）からわかるように反映度ｓの値は大きくなってしまう。反映度ｓが大きくなると、信頼できない加速度ベクトルＶａに基づいて入力装置８の姿勢が算出されてしまう結果、入力装置８の姿勢を正確に算出することができないという問題が生じる。これに対して、本実施形態では、一時的に反映度ｓが大きくなる場合には、上式（２）によって反映度ｓが小さくなるように補正される。そのため、上記の問題を防止することができ、入力装置８の姿勢を正確に算出することができる。なお、反映度ｓが一時的に小さくなる場合には上記の問題は生じないので、反映度ｓの補正は行われない。
【０１１５】
また、他の実施形態においては、ＣＰＵ１０は、上述したような反映度ｓが一時的に大きくなることが起こらないと想定される場合や、ゲーム処理の簡易化・高速化を優先する場合等には、上記ステップＳ４の処理を実行せず、上記ステップＳ３で算出された反映度ｓをそのまま用いるようにしてもよい。
【０１１６】
ステップＳ５において、ＣＰＵ１０は、加速度に基づいて第１姿勢（第１重力ベクトルＶｇ１）を算出する。本実施形態においては、第１重力ベクトルＶｇ１は、加速度センサ３７によって検出された加速度ベクトルＶａと、前回重力ベクトルＶｇ０と、反映度ｓとに基づいて算出される。具体的には、ＣＰＵ１０は、加速度データ６４、前回姿勢データ７２、および反映度データ６７をメインメモリから読み出す。そして、加速度ベクトルＶａ、前回重力ベクトルＶｇ０、および反映度ｓを用いて、次の式（３）を計算することによって第１重力ベクトルＶｇ１を算出する。
Ｖｇ１＝Ｖａ・ｓ＋Ｖｇ０・（１−ｓ）  …（３）
上式（３）に示されるように、第１重力ベクトルＶｇ１は、前回の処理ループで算出された姿勢に対応する重力方向（前回重力ベクトルＶｇ０）と加速度ベクトルＶａとの、反映度ｓに基づく加重平均として算出される。つまり、反映度ｓが大きい値（１に近い値）であれば、加速度ベクトルＶａは信頼できる（重力方向を正確に表している）と判断され、第１重力ベクトルＶｇ１は加速度ベクトルＶａに近い値となる。一方、反映度ｓが小さい値（０に近い値）であれば、加速度ベクトルＶａは信頼できない（重力方向を正確には表していない）と判断され、第１重力ベクトルＶｇ１は前回の重力方向に近い値となる。このように、加速度に基づく第１姿勢を算出する処理において反映度ｓを用いることで、第１姿勢をより正確に算出することができる。
【０１１７】
上式（３）で算出された第１重力ベクトルＶｇ１は正規化され（長さが１になるように補正され）、正規化された第１重力ベクトルＶｇ１を示すデータが、第１姿勢データ６９としてメインメモリに記憶される。なお、本実施形態においては、ゲーム処理が開始されてから最初の処理ループにおけるステップＳ５においては、前回姿勢データ７２がメインメモリに記憶されていないので、ＣＰＵ１０は加速度ベクトルＶａをそのまま第１重力ベクトルＶｇ１とする。以上のステップＳ５の次にステップＳ６の処理が実行される。
【０１１８】
なお、ステップＳ５における第１姿勢の算出方法は、加速度センサ３７によって検出された加速度を用いて第１姿勢を算出する方法であればどのような方法であってもよい。例えば、ＣＰＵ１０は、上記反映度ｓを用いずに、加速度ベクトルＶａの値をそのまま第１重力ベクトルＶｇ１として算出してもよい。また、上式（３）は、反映度ｓに応じた割合で前回重力ベクトルＶｇ０を加速度ベクトルＶａに近づけることによって第１重力ベクトルＶｇ１を算出する方法であったのに対して、他の実施形態においては、一定の割合で前回重力ベクトルＶｇ０を加速度ベクトルＶａに近づけることによって第１重力ベクトルＶｇ１を算出する方法を採用してもよい。なお、ステップＳ５において反映度ｓを用いずに第１重力ベクトルＶｇ１を算出する場合であっても、後述するステップＳ７において反映度ｓが用いられるので、ＣＰＵ１０はステップＳ３（およびステップＳ４）の処理を実行する必要がある。
【０１１９】
ステップＳ６において、ＣＰＵ１０は、角速度に基づいて第２姿勢（第２重力ベクトルＶｇ２）を算出する。角速度から第２姿勢を算出する方法はどのような方法であってもよいが、本実施形態においては、第２重力ベクトルＶｇ２は、ジャイロセンサ５５および５６によって検出された角速度ωと、前回重力ベクトルＶｇ０とに基づいて算出される。具体的には、ＣＰＵ１０は、角速度データ６３および前回姿勢データ７２をメインメモリから読み出す。そして、角速度ωおよび前回重力ベクトルＶｇ０を用いて、次の式（４）を計算することによって第２重力ベクトルＶｇ２を算出する。なお、本実施形態においては、ゲーム処理が開始されてから最初の処理ループにおいては、前回姿勢データ７２がメインメモリに記憶されていないので、ＣＰＵ１０は前回姿勢データ７２に代えて第１姿勢データ６９を読み出し、前回重力ベクトルＶｇ０に代えて第１重力ベクトルＶｇ１を用いて次の式（４）を計算する。
Ｖｇ２＝Ｒ・Ｖｇ０  …（４）
上式（４）において、行列Ｒは、角速度ωと逆の回転を行う回転行列であり、角速度ωから算出される。行列Ｒを角速度ωと逆回転の回転行列としているのは、本実施形態では（空間に対して固定である）各種の重力ベクトルを、入力装置８を基準として表しているため、入力装置８が回転した場合には、回転した分だけ重力ベクトルを元に戻す（入力装置８の回転方向とは逆に回転させる）必要があるからである。上式（４）に示すように、本実施形態では、角速度に基づく第２の姿勢は、現在の入力装置８の姿勢を、検出された角速度に応じて回転させることによって算出される。上記ステップＳ６の処理によって算出された第２重力ベクトルＶｇ２を示すデータは、第２姿勢データ７０としてメインメモリに記憶される。ステップＳ６の次にステップＳ７の処理が実行される。
【０１２０】
ステップＳ７において、ＣＰＵ１０は、上記第１姿勢（第１重力ベクトルＶｇ１）と第２姿勢（第２重力ベクトルＶｇ２）とに基づいて第３姿勢（第３重力ベクトルＶｇ３）を算出する。具体的には、ＣＰＵ１０は、第１姿勢データ６９、第２姿勢データ７０、および反映度データ６７をメインメモリから読み出す。そして、第１重力ベクトルＶｇ１、第２重力ベクトルＶｇ２、および反映度ｓを用いて、次の式（５）を計算することによって第３重力ベクトルＶｇ３を算出する。
Ｖｇ３＝（１−ｓ）・Ｖｇ２＋ｓ・Ｖｇ１  …（５）
上式（５）に示されるように、第３重力ベクトルＶｇ３は、第１重力ベクトルＶｇ１と第２重力ベクトルＶｇ２との、反映度ｓに基づく加重平均として算出される。上式（５）で算出された第３重力ベクトルＶｇ３は正規化され、正規化された第３重力ベクトルＶｇ３を示すデータが、第３姿勢データ７１としてメインメモリに記憶される。以上のステップＳ７の次にステップＳ８の処理が実行される。
【０１２１】
上式（５）に示されるように、本実施形態では、見かけ上の処理としては、加速度に基づく第１重力ベクトルＶｇ１と角速度に基づく第２重力ベクトルＶｇ２とが常に（毎フレーム）用いられているように見える。ただし実際には、上式（５）から明らかなように、反映度ｓ＝１の場合、第１重力ベクトルＶｇ１がそのまま第３重力ベクトルＶｇ３となり（図８に示す（Ａ））、反映度ｓ＝０の場合、第２重力ベクトルＶｇ２がそのまま第３重力ベクトルＶｇ３となる（図８に示す（Ｂ））。そして、反映度ｓが０＜ｓ＜１の場合、第３重力ベクトルＶｇ３は第１重力ベクトルＶｇ１と第２重力ベクトルＶｇ２との間のベクトルとなる（図８に示す（Ｃ））。つまり、本実施形態では、次のように考えることができる。
・上記ステップＳ５を実行するＣＰＵ１０が上記「第１姿勢算出手段」に相当し、反映度ｓが所定の第１閾値以上である場合（ｓ＝１の場合）、加速度センサ３７によって検出される加速度ベクトルＶａに基づいて入力装置８の姿勢を算出する。
・上記ステップＳ６を実行するＣＰＵ１０が上記「第２姿勢算出手段」に相当し、反映度ｓが所定の第２閾値よりも小さい場合（ｓ＝０の場合）、ジャイロセンサ５５および５６によって検出される角速度ωに基づいて入力装置８の姿勢を算出する。
・上記ステップＳ７を実行するＣＰＵ１０が上記「第３姿勢算出手段」に相当し、反映度ｓが第１閾値よりも小さくかつ第２閾値以上である場合（０＜ｓ＜１の場合）、第１姿勢算出手段が算出した姿勢と、第２姿勢算出手段が算出した姿勢との間になるように入力装置８の姿勢を算出する。
【０１２２】
ステップＳ８において、ＣＰＵ１０は、入力装置８の姿勢（第３重力ベクトルＶｇ３）を用いたゲーム処理を実行する。このゲーム処理はどのような処理であってもよいが、例えば、入力装置８のハンドル操作に応じて仮想空間内に配置される自動車の進行方向を制御する処理であってもよいし、入力装置８の傾きに応じて仮想空間内に配置されるオブジェクトの傾きを制御する処理であってもよい。ステップＳ８の次にステップＳ９の処理が実行される。
【０１２３】
ステップＳ９において、ＣＰＵ１０は、ゲームを終了するか否かを判定する。ステップＳ９の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ９の判定結果が否定である場合、ステップＳ２の処理が再度実行される。以降、ステップＳ９でゲームを終了すると判定されるまで、ステップＳ２〜Ｓ９の処理ループが繰り返し実行される。一方、ステップＳ９の判定結果が肯定である場合、ＣＰＵ１０は、図１０に示すゲーム処理を終了する。以上で、本実施形態におけるゲーム処理の説明を終了する。
【０１２４】
以上のように、本実施形態によれば、ゲーム装置３は、加速度センサ３７によって検出される加速度を入力装置８の姿勢に反映させる度合いを反映度によって決定する。そして、加速度に基づいて姿勢を算出するか、角速度に基づいて姿勢を算出するかを反映度に応じて決定する。これによれば、重力方向を表すものとして信頼できない加速度に基づいて姿勢が不正確に算出されることを防止することができるので、姿勢を正確に算出することができる。また、加速度に基づく姿勢の算出が停止されることによって姿勢算出の応答性が悪くなることを防止することができるので、姿勢をリアルタイムに算出することができる。
【０１２５】
さらに、本実施形態によれば、入力装置８が静止している状態から動いている状態へ、または、動いている状態から静止している状態へと移行する期間においては、入力装置８の姿勢は、加速度に基づく第１姿勢と、角速度に基づく第２姿勢との間となるように算出される。したがって、移行の際に急激に姿勢が変化することを防止することができるので、ゲーム結果が急に変化することがなく、入力装置８を用いた操作性の良い入力システムを提供することができる。
【０１２６】
［変形例］
なお、上記実施形態は本発明を実施するための一例であり、他の実施形態においては、以下に示す変形例の構成を採用してもよい。以下、上記実施形態の変形例について説明する。
【０１２７】
（第１の変形例）
以下、本実施形態の第１の変形例について説明する。上記実施形態においては、ゲーム装置３は、反映度ｓが中程度の値の場合に、加速度に基づく第１姿勢と角速度に基づく第２姿勢との両方を用いて最終的な姿勢を決定した。ここで、他の実施形態においては、ゲーム装置３は、上記第１姿勢と第２姿勢とのいずれかのみを用いるようにしてもよい。以下、図１１を参照して、第１の変形例の詳細について説明する。
【０１２８】
図１１は、本実施形態の第１の変形例におけるゲーム処理の流れを示すフローチャートである。なお、図１１においては、図１０に示すフローチャートとの相違点のみを示している。また、図１１においては、図１０における各ステップの処理と同様の処理を実行する処理ステップについては図１０と同じステップ番号を付している。
【０１２９】
第１の変形例においては、上記ステップＳ４の次にステップＳ１１の処理が実行される。ステップＳ１１において、ＣＰＵ１０は、ステップＳ４の処理によって得られた反映度ｓが所定値Ｓ２よりも大きいか否かを判定する。所定値Ｓ２は０＜Ｓ２＜１の範囲で予め定められる。すなわち、ＣＰＵ１０は、メインメモリから反映度データ６７および所定値Ｓ２の値を示すデータを読み出し、反映度ｓと所定値Ｓ２とを比較する。ステップＳ１１の判定結果が肯定の場合（反映度ｓ＞所定値Ｓ２の場合）、上記ステップＳ５の処理が実行される。一方、ステップＳ１１の判定結果が否定の場合（反映度ｓ≦所定値Ｓ２の場合）、上記ステップＳ６の処理が実行される。
【０１３０】
ステップＳ５の処理は上記実施形態と同様であり、ＣＰＵ１０は、加速度ベクトルＶａに基づいて第１姿勢（第１重力ベクトルＶｇ１）を算出する。ステップＳ６の処理も上記実施形態と同様であり、ＣＰＵ１０は、角速度ωに基づいて第２姿勢（第２重力ベクトルＶｇ２）を算出する。第１の変形例においては、ステップＳ５またはステップＳ６の次に、上記ステップＳ８の処理が実行される。つまり、ステップＳ８のゲーム処理においては、ステップＳ５で算出された第１姿勢、または、ステップＳ６で算出された第２姿勢のいずれかが、入力装置８の姿勢として用いられる。
【０１３１】
以上のように、第１の変形例においては、最終的な入力装置８の姿勢として用いられるべき姿勢が、加速度に基づく第１姿勢と角速度に基づく第２姿勢とのいずれかから反映度ｓに応じて決められる。例えば、上記実施形態において反映度ｓが０＜ｓ＜１となる期間が実際には非常に短時間であると想定される場合や、ゲーム処理の簡易化・高速化を優先する場合等には、第１の変形例を採用してもよい。また、第１の変形例においては、反映度ｓを２値で表すようにしてもよい。
【０１３２】
（第２の変形例）
以下、本実施形態の第２の変形例について説明する。上記実施形態においては、ゲーム装置３は、反映度ｓが大きい状態から小さい状態へと移行する場合、および、反映度ｓが小さい状態から大きい状態へと移行する場合の両方の移行期間において、加速度に基づく第１姿勢と角速度に基づく第２姿勢とに基づいて入力装置８の姿勢が算出された。ここで、第２の変形例では、反映度ｓが小さい状態から大きい状態へと移行する場合における移行期間においてのみ、上記第１姿勢および第２姿勢に基づいて姿勢を算出する。以下、図１２および図１３を参照して、第２の変形例の詳細について説明する。
【０１３３】
図１２は、本実施形態の第２の変形例におけるゲーム処理の流れを示すフローチャートである。なお、図１２においては、図１０に示すフローチャートとの相違点のみを示している。また、図１２においては、図１０における各ステップの処理と同様の処理を実行する処理ステップについては図１０と同じステップ番号を付している。
【０１３４】
第２の変形例においては、上記ステップＳ４の次にステップＳ１５の処理が実行される。ステップＳ１５において、ＣＰＵ１０は、メインメモリに記憶されている反映度データ６７を読み出し、反映度データ６７により示される反映度ｓが“１”であるか否かを判定する。ステップＳ１５の判定結果が肯定である場合、上記実施形態と同様のステップＳ５の処理が実行される。すなわち、ステップＳ５において、ＣＰＵ１０は、加速度ベクトルＶａに基づいて第１姿勢（第１重力ベクトルＶｇ１）を算出する。ステップＳ５の次に、上記実施形態と同様のステップＳ８の処理が実行される。したがって、ステップＳ１５の判定結果が肯定である場合、ステップＳ８のゲーム処理においては、加速度に基づく第１姿勢が入力装置８の姿勢として用いられる。
【０１３５】
ステップＳ１５の判定結果が否定となる場合、ステップＳ１６の処理が実行される。ステップＳ１６の処理において、ＣＰＵ１０は、メインメモリに記憶されている反映度データ６７を読み出し、反映度データ６７により示される反映度ｓが“０”であるか否かを判定する。ステップＳ１６の判定結果が肯定である場合、上記実施形態と同様のステップＳ６の処理が実行される。すなわち、ステップＳ６において、ＣＰＵ１０は、角速度ωに基づいて第２姿勢（第２重力ベクトルＶｇ２）を算出する。ステップＳ６の次に、上記実施形態と同様のステップＳ８の処理が実行される。したがって、ステップＳ１６の判定結果が肯定である場合、ステップＳ８のゲーム処理においては、角速度に基づく第２姿勢が入力装置８の姿勢として用いられる。
【０１３６】
ステップＳ１６の判定結果が否定となる場合、ステップＳ１７の処理が実行される。ステップＳ１７の処理において、ＣＰＵ１０は、反映度ｓが減少しているか否かを判定する。すなわち、ＣＰＵ１０は、メインメモリに記憶されている反映度データ６７および前回反映度データ６８を読み出し、反映度データ６７により示される今回の反映度が、前回反映度データ６８により示される前回の反映度よりも小さいか否かを判定する。ステップＳ１７の判定結果が肯定である場合、上記実施形態と同様のステップＳ６の処理が実行される。すなわち、ステップＳ６において、ＣＰＵ１０は、角速度ωに基づいて第２姿勢（第２重力ベクトルＶｇ２）を算出する。ステップＳ６の次に、上記実施形態と同様のステップＳ８の処理が実行される。したがって、ステップＳ１７の判定結果が肯定となる場合には、ステップＳ１６の判定結果が肯定である場合と同様、ステップＳ８のゲーム処理においては、角速度に基づく第２姿勢が入力装置８の姿勢として用いられる。
【０１３７】
ステップＳ１７の判定結果が否定となる場合、上記実施形態と同様のステップＳ５〜Ｓ７の処理が実行される。すなわち、ＣＰＵ１０は、ステップＳ５において、加速度ベクトルＶａに基づいて第１姿勢（第１重力ベクトルＶｇ１）を算出し、ステップＳ６において、角速度ωに基づいて第２姿勢（第２重力ベクトルＶｇ２）を算出し、ステップＳ７において、上記第１姿勢と第２姿勢とに基づいて第３姿勢（第３重力ベクトルＶｇ３）を算出する。ステップＳ７の次に、上記実施形態と同様のステップＳ８の処理が実行される。したがって、ステップＳ１６の判定結果が肯定である場合、ステップＳ８のゲーム処理においては、ステップＳ７で算出された第３姿勢が入力装置８の姿勢として用いられる。
【０１３８】
図１３は、本実施形態の第２の変形例における反映度ｓと、姿勢算出に用いる方法との関係を示す図である。第２の変形例においては、反映度ｓが“１”である期間（図１３に示す時点Ｔ１より前の期間）では、上記ステップＳ１５の判定結果が肯定となる。したがって、ＣＰＵ１０は、ステップＳ５およびＳ８を実行し、加速度に基づく第１姿勢を用いて入力装置８の姿勢を算出する。
【０１３９】
また、反映度ｓが“１”から減少している場合（図１３に示す時点Ｔ１から時点Ｔ２までの期間）、上記ステップＳ１５の判定結果が否定となり、ステップＳ１６の判定が否定となり、ステップＳ１７の判定が肯定となる。したがって、ＣＰＵ１０は、ステップＳ６およびＳ８を実行し、角速度に基づく第２姿勢を用いて入力装置８の姿勢を算出する。なお、反映度ｓが減少した結果“０”になった場合（図１３に示す時点Ｔ２から時点Ｔ３までの期間）においても、ステップＳ６およびＳ８が実行される結果、角速度に基づく第２姿勢を用いて入力装置８の姿勢を算出する。このように、第２の変形例においては、反映度ｓが“１”から減少して“０”になる場合には、第１の変形例と同様、加速度を用いた姿勢算出方法から角速度を用いた姿勢算出方法へ、直接（加速度と角速度の両方を用いた姿勢算出方法を介さずに）切り替わる（図１３参照）。
【０１４０】
一方、反映度ｓが“０”から増加する場合（図１３に示す時点Ｔ３から時点Ｔ４までの期間）、上記ステップＳ１５，Ｓ１６およびＳ１７の判定結果が否定となる。したがって、ＣＰＵ１０は、ステップＳ５〜Ｓ８を実行し、加速度と角速度との両方に基づく第３姿勢を用いて入力装置８の姿勢を算出する。このように、第２の変形例においては、図１３に示すように、反映度ｓが小さい状態から大きい状態へと移行する場合の移行期間においては、加速度と角速度との両方を用いて入力装置８の姿勢が算出される。なお、反映度ｓが“１”に戻った場合（図１３に示す時点Ｔ４より後の期間）では、上記ステップＳ１５の判定結果が肯定となるので、ＣＰＵ１０は、ステップＳ５およびＳ８を実行し、加速度に基づく第１姿勢を用いて入力装置８の姿勢を算出する。
【０１４１】
以上のように、第２の変形例においては、反映度ｓが小さい状態から大きい状態へと移行する場合の移行期間においてのみ、第３姿勢を用いて入力装置８の姿勢が算出され、反映度ｓが大きい状態から小さい状態へと移行する場合の移行期間においては、第３姿勢を用いた姿勢の算出が行われない。このように、ゲーム装置３は、角速度を用いる姿勢算出方法から加速度を用いる姿勢算出方法へと移行する場合にのみ、加速度と角速度との両方を用いる姿勢算出方法を実行するようにしてもよい。上記実施形態のように、現在の入力装置８の姿勢を角速度に応じて回転させることによって新たな姿勢を算出する（ステップＳ６）場合、加速度を用いる姿勢算出方法から角速度を用いる姿勢算出方法へと移行する際には、姿勢の急激な変化が生じにくいからである。また、反映度ｓが減少していく場合には、加速度が信頼できない可能性もあるので、角速度のみに基づいて姿勢を算出する方が正確になる場合もあるからである。一方、角速度を用いる姿勢算出方法から加速度を用いる姿勢算出方法へと移行する際には、姿勢の急激な変化が生じるおそれがあるので、加速度と角速度との両方を用いる姿勢算出処理（ステップＳ７）を実行することによって、姿勢の急激な変化を防止する必要があるため、第２の変形例においても第３姿勢を用いた姿勢の算出を行っている。
【０１４２】
以上のように、第２の変形例においても、上記実施形態と同様、姿勢算出方法が切り替わる際に生じる、姿勢の急激な変化を防止することができる。なお、上記第２の変形例においては、ＣＰＵ１０は、反映度ｓが０から１へ増加する期間において、上記第３姿勢を用いた姿勢算出処理を実行するようにした。ここで、他の実施形態においては、反映度ｓが所定値よりも小さい状態から所定値以上となる状態へと移行した時点から、予め定められた所定期間の間、上記第３姿勢を用いた姿勢算出処理を実行するようにしてもよい。
【０１４３】
（第３の変形例）
以下、本実施形態の第３の変形例について説明する。上記実施形態においては、ゲーム装置３は、加速度センサ３７の出力（加速度ベクトルＶａ）が信頼できるか否かに基づいて反映度ｓを設定した。第３の変形例では、さらに、入力装置８（コントローラ５）にジャイロセンサユニット７（ジャイロセンサ５５および５６）が装着されているか否かに基づいて反映度ｓを設定する。以下、図１４を参照して、第３の変形例の詳細について説明する。
【０１４４】
図１４は、本実施形態の第３の変形例におけるゲーム処理の流れを示すフローチャートである。なお、図１４においては、図１０に示すフローチャートとの相違点のみを示している。また、図１４においては、図１０における各ステップの処理と同様の処理を実行する処理ステップについては図１０と同じステップ番号を付している。
【０１４５】
第３の変形例においては、上記ステップＳ２の次にステップＳ２１の処理が実行される。ステップＳ２１において、ＣＰＵ１０は、入力装置８にジャイロセンサユニット７が装着されているか否かを判定する。具体的には、ＣＰＵ１０は、角速度データ６３をメインメモリから読み出し、角速度データ６３が角速度の値を示すか、ジャイロセンサユニット７が装着されていないことを示すかを判定する。ステップＳ２１の判定は、角速度に基づく姿勢の算出が可能であるか否かを判定する処理であるとも言える。ステップＳ２１の判定結果が肯定である場合、上記実施形態と同様、ステップＳ３〜Ｓ９の処理が実行される。一方、ステップＳ２１の判定結果が否定である場合、ステップＳ２２の処理が実行される。
【０１４６】
ステップＳ２２において、ＣＰＵ１０は、反映度ｓを“１”に設定する。すなわち、メインメモリに記憶されている反映度データ６７の内容を、“１”を示す内容に更新する。ステップＳ２２の処理は、加速度のみを用いて（角速度を用いずに）姿勢算出処理を実行するための処理である。ステップＳ２２の処理の後、上記実施形態と同様のステップＳ５〜Ｓ９の処理が実行される。ステップＳ２２の処理が実行される場合、反映度ｓが“１”であるので、ステップＳ７においては、加速度に基づく第１姿勢が入力装置８の姿勢として算出されることとなる。
【０１４７】
以上のように、第３の変形例においては、ゲーム装置３は、入力装置８にジャイロセンサユニット７が装着されているか否かに応じて、角速度に基づく姿勢算出処理を用いるか否かを決定する。これによれば、本実施形態のようにジャイロセンサユニット７が着脱可能な入力装置８において、ジャイロセンサユニット７が装着されている場合と装着されていない場合との両方に対応することが可能となる。すなわち、ゲーム装置３は、ジャイロセンサユニット７が装着されている場合には、上述したゲーム処理によって入力装置８の姿勢を精度良く、かつ、応答性良く算出することができるとともに、ジャイロセンサユニット７が装着されている場合にも、簡易的に入力装置８の姿勢を算出することができる。
【産業上の利用可能性】
【０１４８】
以上のように、本発明は、入力装置の姿勢を応答性良く算出すること等を目的として、例えばゲーム装置やゲームプログラムとして利用することが可能である。
【符号の説明】
【０１４９】
１    ゲームシステム
２    テレビ
３    ゲーム装置
４    光ディスク
５    コントローラ
６    マーカ部
７    ジャイロセンサユニット
８    入力装置
１０  ＣＰＵ
３７  加速度センサ
５５  ２軸ジャイロセンサ
５６  １軸ジャイロセンサ
６０  ゲームプログラム
６１  姿勢算出プログラム
６２  操作データ
６３  角速度データ
６４  加速度データ
６７  反映度データ
６９  第１姿勢データ
７０  第２姿勢データ
７１  第３姿勢データ
【図１】
2010259642.tif 000003
【図２】
2010259642.tif 000004
【図３】
2010259642.tif 000005
【図４】
2010259642.tif 000006
【図５】
2010259642.tif 000007
【図６】
2010259642.tif 000008
【図７】
2010259642.tif 000009
【図８】
2010259642.tif 000010
【図９】
2010259642.tif 000011
【図１０】
2010259642.tif 000012
【図１１】
2010259642.tif 000013
【図１２】
2010259642.tif 000014
【図１３】
2010259642.tif 000015
【図１４】
2010259642.tif 000016