説明

入力装置、入力処理プログラム、入力処理方法、入力処理システム

【課題】加速度センサおよび角速度センサのそれぞれの特性を活かして、より正確な姿勢を検出することができる入力装置、入力処理方法を提供すること。
【解決手段】角速度センサから出力される角速度データに基づいて入力装置の第1の検出姿勢を検出する。次に、加速度センサから出力される加速度データに基づいて、第1の検出姿勢を補正する。そして、補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力装置、入力処理プログラム、入力処理方法、および入力処理システムに関し、より特定的には、入力装置の姿勢を検出して所定の処理を実行する入力装置、入力処理プログラム、入力処理方法、および入力処理システムに関する。
【背景技術】
【0002】
特許文献1には、コントローラを傾けることによってゲーム操作を行うことができるゲーム装置が開示されている。特許文献1に記載されているコントローラは、3軸加速度センサを内蔵しており、加速度センサを用いてコントローラの傾斜角度を算出する。また、特許文献1では、このコントローラを利用したドライブゲームにおいて、コントローラの傾斜角度を、ゲーム中に登場する車のハンドルの切り角に対応させることが記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平6−190144号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記のような加速度センサを内蔵したコントローラでは、当該コントローラに対して激しい動きが加えられた場合、加速度センサによって検出される加速度ベクトルに重力加速度以外の成分が多く含まれていることから、当該コントローラの傾斜角度(姿勢)に誤差が含まれる可能性がある。換言すれば、加速度によって決められる姿勢は、加速度センサが静止しているときには正確だが、動いているときには誤差があるという性質がある。
【0005】
そこで、角速度センサを用いて上記コントローラ等の姿勢を検出するという方法が考えられる。しかしながら、角速度による姿勢算出の場合、時間と共に誤差が蓄積していくという性質がある。
【0006】
それ故に、本発明の目的は、加速度センサおよび角速度センサのそれぞれの特性を活かして、より正確な姿勢を検出することができる入力装置、入力処理方法を提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明は以下のような構成を採用した。
【0008】
本発明にかかる入力装置は、角速度センサおよび加速度センサを備えた入力装置であって、第1姿勢算出手段と、姿勢補正手段と、処理手段とを備える。第1姿勢算出手段は、角速度センサから出力される角速度データに基づいて入力装置の第1の検出姿勢を検出する。姿勢補正手段は、加速度センサから出力される加速度データに基づいて、第1の検出姿勢を補正する。処理手段は、姿勢補正手段によって補正された補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う。ここで、奥行き方向とは、3次元空間において、鉛直方向および水平方向の双方に直交する軸方向のことである。
【0009】
上記構成により、入力装置の姿勢を変化させる操作であって、重力の方向に沿った変化が生じるような操作が行われる場合に、その姿勢の変化を正確に反映させた情報処理が実行可能となる。
【0010】
他の構成例として、姿勢補正手段は、加速度データが示す加速度に基づき、入力装置の静止状態における姿勢を第2の検出姿勢とし、第1の検出姿勢を当該第2の検出姿勢に近づけるように補正してもよい。ここで、入力装置の静止状態における姿勢とは、重力方向が鉛直下向きであると想定した場合における入力装置の姿勢と表現することもできる。
【0011】
上記構成によれば、入力装置の現在の姿勢について、より正確な姿勢を把握することが可能となる。
【0012】
他の構成例として、姿勢補正手段は、加速度データが示す加速度の向きが略鉛直下向きとなる場合における入力装置の姿勢を第2の検出姿勢としてもよい。
【0013】
上記構成によれば、重力の方向という絶対的な基準を利用した補正を行うことができ、重力の方向に関する姿勢の変化について、信頼度の高い補正が可能となる。
【0014】
更に他の構成例として、姿勢補正手段は、加速度の大きさが重力加速度の大きさに近いほど第1の検出姿勢が第2の検出姿勢に近くなるように第1の検出姿勢を第2の検出姿勢へと近づけるように補正するようにしてもよい。
【0015】
上記構成によれば、加速度センサによって検出された加速度の大きさが重力加速度の大きさに近いほど、第2の検出姿勢が補正後の姿勢により強く反映されることになる。加速度の大きさが重力加速度の大きさが近いほど、重力加速度の方向をより正確に示していると推測され、第2の検出姿勢がより正確であると推測される。そのため、第2の検出姿勢が正確である場合には第1の検出姿勢がより補正されて第2の検出姿勢に近くなり、第2の検出姿勢があまり正確ではない場合には第1の検出姿勢があまり補正されないので、補正後の姿勢をより正確に算出することができる。
【0016】
更に他の構成例として、処理手段は、補正後の第1の検出姿勢を3軸のベクトルで示した姿勢ベクトルのうちの所定の1軸方向についての鉛直方向に沿った成分に応じて所定の処理を実行するようにしてもよい。
【0017】
上記構成によれば、例えば、上記入力装置を動かすことで、車のハンドルを操作するような平面的な操作を行う場合、当該操作による姿勢の変化を正確に情報処理に反映させることが可能となる。
【0018】
更に他の構成例として、入力装置は、表示画面と一体型の装置であり、処理手段は、所定の情報処理の結果を表示画面に表示するようにしてもよい。
【0019】
上記構成例によれば、例えば入力装置を傾けることで共に表示画面も傾くような、ユーザが傾きの誤差を認識しやすいような状況において、ユーザが認識する傾きについて違和感のない画面表示が可能となる。
【0020】
本発明にかかる入力処理プログラムは、角速度センサおよび加速度センサを備えた情報処理装置のコンピュータに実行させる入力処理プログラムであって、コンピュータを、第1姿勢算出手段と、姿勢補正手段と、処理手段として機能させる。第1姿勢算出手段は、角速度センサから出力される角速度データに基づいて入力装置の第1の検出姿勢を検出する。姿勢補正手段は、加速度センサから出力される加速度データに基づいて、第1の検出姿勢を補正する。処理手段は、姿勢補正手段によって補正された補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う。
【0021】
本発明にかかる入力処理方法は、角速度センサおよび加速度センサを備えた情報処理装置において用いられる入力処理方法であって、第1姿勢算出ステップと、姿勢補正ステップと、処理ステップとを備える。第1姿勢算出ステップは、角速度センサから出力される角速度データに基づいて入力装置の第1の検出姿勢を検出する。姿勢補正ステップは、加速度センサから出力される加速度データに基づいて、第1の検出姿勢を補正する。処理ステップは、姿勢補正ステップにおいて補正された補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う。
【0022】
本発明にかかる入力処理システムは、角速度センサおよび加速度センサを備えた入力処理システムであって、第1姿勢算出手段と、姿勢補正手段と、処理手段とを備える。第1姿勢算出手段は、角速度センサから出力される角速度データに基づいて入力装置の第1の検出姿勢を検出する。姿勢補正手段は、加速度センサから出力される加速度データに基づいて、第1の検出姿勢を補正する。処理手段は、姿勢補正手段によって補正された補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う。
【発明の効果】
【0023】
本発明によれば、入力装置の姿勢を変化させる操作であって、重力の方向に沿った変化が生じるような操作が行われた場合、その姿勢の変化を正確に反映させた情報処理が可能となる。
【図面の簡単な説明】
【0024】
【図1】開状態におけるゲーム装置10の正面図
【図2】ゲーム装置10の内部構成を示すブロック図
【図3】本実施形態において想定するゲームの画面の一例
【図4】本実施形態において想定する操作方法の一例
【図5】本実施形態にかかる姿勢の補正の原理を説明するための図
【図6】本実施形態にかかる姿勢の補正の原理を説明するための図
【図7】本実施形態にかかる姿勢の補正の原理を説明するための図
【図8】本実施形態にかかる姿勢の変化の反映について説明するための図
【図9】メインメモリ32に記憶される主なデータを示す図
【図10】本実施形態にかかるゲーム処理を示すフローチャート
【図11】図10のステップS5で示した姿勢補正処理の詳細を示すフローチャート
【発明を実施するための形態】
【0025】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【0026】
図1において、ゲーム装置10は、折り畳み型の携帯ゲーム装置であり、開いた状態(開状態)のゲーム装置10を示している。ゲーム装置10は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【0027】
ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に連結されている。図1の例では、下側ハウジング11および上側ハウジング21は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回転可能に連結されている。通常、ユーザは、開状態でゲーム装置10を使用する。また、ユーザは、ゲーム装置10を使用しない場合には閉状態としてゲーム装置10を保管する。
【0028】
下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12が設けられる。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置10に内蔵されている表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置10は、任意の解像度の表示装置を利用することができる
【0029】
下側ハウジング11には、入力装置として、各操作ボタン14A〜14Lおよびタッチパネル13が設けられる。各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。図1に示されるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。十字ボタン14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン14B、ボタン14C、ボタン14D、ボタン14Eは、十字状に配置される。ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは選択操作等に用いられ、各操作ボタン14B〜14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフするために用いられる。
【0030】
アナログスティック15は、方向を指示するデバイスであり、下側ハウジング11の内側面の下側LCD12より左側領域の上部領域に設けられる。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【0031】
十字状に配置される、ボタン14B、ボタン14C、ボタン14D、ボタン14Eの4つのボタンは、下側ハウジング11を把持する右手の親指が自然と位置するところに配置される。また、これらの4つのボタンと、アナログスティック15とは、下側LCD12を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの4つのボタンを使用して方向指示入力をすることも可能である。
【0032】
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイクが設けられ、当該マイクがゲーム装置10の外部の音を検出する。
【0033】
なお、図1においては、操作ボタン14G〜14Iの図示を省略している。例えば、Lボタン14Gは、下側ハウジング11の上側面の左端部に設けられ、Rボタン14Hは、下側ハウジング11の上側面の右端部に設けられる。Lボタン14GおよびRボタン14Hは、ゲーム装置10に対して、例えば撮影指示操作(シャッター操作)を行うために用いられる。さらに、音量ボタン14Iは、下側ハウジング11の左側面に設けられる。音量ボタン14Iは、ゲーム装置10が備えるスピーカの音量を調整するために用いられる。
【0034】
また、ゲーム装置10は、各操作ボタン14A〜14Kとは別の入力装置として、さらにタッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施形態では、タッチパネル13は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル13として、例えば下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度とが一致している必要はない。また、下側ハウジング11の上側面には挿入口17(図1に示す点線)が設けられている。挿入口17は、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッチペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である。
【0035】
また、下側ハウジング11の左側面には開閉可能なカバー部11C(図示は省略)が設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ45は、コネクタに着脱自在に装着される。データ保存用外部メモリ45は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。なお、上記コネクタおよびそのカバー部11Cは、下側ハウジング11の右側面に設けられてもよい。
【0036】
さらに、下側ハウジング11の上側面には、ゲーム装置10とゲームプログラムを記録した外部メモリ44を挿入するための挿入口11D(図示は省略)が設けられ、その挿入口11Dの内部には、外部メモリ44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ44がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタおよびその挿入口11Dは、下側ハウジング11の他の側面(例えば、右側面等)に設けられてもよい。
【0037】
また、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16B(図示は省略)が設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第2LED16Bは、無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19(図示は省略)が設けられる
【0038】
また、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。上側LCD22は、横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置される。上側LCD22は上側ハウジング21の中央に配置される。上側LCD22の画面の面積は、下側LCD12の画面の面積よりも大きく設定される。また、上側LCD22の画面は、下側LCD12の画面よりも横長に設定される。なお、上側LCD22上を覆うように、タッチパネルを設けてもかまわない。
【0039】
上側LCD22の画面は、上側ハウジング21の内側面(主面)21Bに設けられ、上側ハウジング21に設けられた開口部から当該上側LCD22の画面が露出される。上側LCD22の画素数は、例えば、640dot×200dot(横×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
【0040】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCD22はパララックスバリア方式のものとする。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、スライドスイッチである3D調整スイッチ25によって行われる。
【0041】
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aおよび外側撮像部(右)23bは、上側LCD22(上側ハウジング21)の左右方向に関して中央から対称となる位置にそれぞれ配置される。
【0042】
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0043】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。
【0044】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0045】
(ゲーム装置10の内部構成)
次に、図2を参照して、ゲーム装置10の内部の電気的構成について説明する。図2は、ゲーム装置10の内部構成を示すブロック図である。図2に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
【0046】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312等を含む情報処理手段である。情報処理部31のCPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、情報処理部31のCPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部31は、VRAM(Video RAM)313を含む。情報処理部31のGPU312は、情報処理部31のCPU311からの命令に応じて画像を生成し、VRAM313に描画する。そして、情報処理部31のGPU312は、VRAM313に描画された画像を上側LCD22及び/又は下側LCD12に出力し、上側LCD22及び/又は下側LCD12に当該画像が表示される。
【0047】
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メモリI/F34、および、データ保存用内部メモリ35が接続される。外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0048】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
【0049】
外部メモリ44は、情報処理部31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。
【0050】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。
【0051】
無線通信モジュール36は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール36およびローカル通信モジュール37は情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0052】
また、情報処理部31には、加速度センサ39および角速度センサ47が接続される。加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサ39は、下側ハウジング11の内部に設けられる。
【0053】
角速度センサ47は、3軸(xyz軸)の角速度を検出する。例えば、角速度センサ47は例えばジャイロセンサであり、3軸のジャイロセンサ1チップで構成される。角速度センサはヨー角に関する(単位時間あたりの)角速度(Y軸周りの角速度)、ロール角に関する(単位時間あたりの)角速度(Z軸周りの角速度)、およびピッチ角に関する(単位時間あたりの)角速度(X軸周りの角速度)を検出するためのものである。
【0054】
なお、本実施形態では、後述するゲーム処理における計算を容易にする目的で、角速度センサ47が角速度を検出する3つの軸は、加速度センサ39が加速度を検出する3つの軸(xyz軸)と一致するように設定される。
【0055】
また、情報処理部31には、RTC38および電源回路40が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0056】
また、情報処理部31には、I/F回路41が接続される。I/F回路41には、マイク42およびスピーカ43が接続される。具体的には、I/F回路41には、図示しないアンプを介してスピーカ43が接続される。マイク42は、ユーザの音声を検知して音声信号をI/F回路41に出力する。アンプは、I/F回路41からの音声信号を増幅し、音声をスピーカ43から出力させる。また、タッチパネル13はI/F回路41に接続される。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。タッチ位置データは、タッチパネル13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0057】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に従った処理を実行する。
【0058】
下側LCD12および上側LCD22は情報処理部31に接続される。下側LCD12および上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画像)を表示させる。
【0059】
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
【0060】
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0061】
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。
【0062】
次に、ゲーム装置10において実行されるゲーム処理の概要について説明する。図3は、本実施形態で想定するゲームの画面の一例であり、上側LCD22に、レーシングカーに乗っているプレイヤオブジェクト101が表示されている。そして、プレイヤは、ゲーム装置10自体を車のハンドルに見立てて操作することで、プレイヤオブジェクト101を操作する。具体的には、プレイヤは、下側ハウジング11を両手で把持し、ゲーム装置10自体を左右に傾けて、ハンドルを切るような操作を行う(図4参照)。この操作に伴い、ゲーム装置10自体の姿勢も変化することになるが、このゲーム装置10の姿勢(より正確には下側ハウジング11の姿勢であるが、以下では単にゲーム装置10の姿勢と呼ぶ)をゲーム処理におけるステアリング操作に反映させる。
【0063】
次に、上記のようなゲーム装置10の姿勢を検出する姿勢検出処理の概要を説明する。本実施形態では、ゲーム装置10は、角速度センサ47と加速度センサ39とを備えたゲーム装置10からデータ(操作データ)を取得し、ゲーム装置10の姿勢を検出する。より具体的には、本実施形態では、以下のような処理が行われる。まず、角速度センサ47が検出する角速度に基づいてゲーム装置10の姿勢が検出される。角速度から姿勢を検出する方法はどのような方法であってもよいが、例えば、初期姿勢に(単位時間あたりの)角速度を逐次加算する方法がある。すなわち、角速度センサ47から逐次出力される角速度を積分し、初期状態からの姿勢の変化量を積分結果から算出することによって、現在の姿勢を検出することができる。なお、以下では、このような姿勢算出手法によって角速度に基づいて検出されるゲーム装置10の姿勢を「第1の検出姿勢」と呼ぶ。ただし、第1の検出姿勢に補正が加えられた後の姿勢も第1の検出姿勢と呼ぶ。
【0064】
ここで、上記第1の検出姿勢を含むゲーム装置10の姿勢は、以下に示すような、3×3の行列M1として表現することができる。
【0065】
【数1】

当該姿勢は、ゲーム装置10が存在する空間の所定位置を基準としたxyz座標系(空間座標系)における姿勢である。列がゲーム装置10自身を基準とした場合のX軸方向、Y軸方向、Z軸方向のベクトルを示し、行は当該各ベクトルを構成するx、y、zの3軸の成分を示す(つまり、空間座標系がxyz座標系、ゲーム装置10を基準としたローカル座標系がXYZ座標系である)。X軸方向のベクトルは、図1で示した状態のゲーム装置10に水平方向に沿った方向(長手方向)に該当する。Y軸方向のベクトルは、図1の垂直方向に該当する。Z軸ベクトルは、同図の奥行き方向に該当する。
【0066】
ところで、角速度センサ出力に誤差が含まれる場合に、検出された姿勢には時間と共に誤差が蓄積していくという性質がある。そのため、角速度センサ47が検出する角速度を用いて算出される上記第1の検出姿勢には、角速度センサ47の出力の誤差が原因で、ゲーム装置10の実際の姿勢との間に誤差が生じることがある。そこで、本実施形態では、ゲーム装置10は、加速度センサ39によって検出される加速度を用いて上記第1の検出姿勢を補正する。これは、加速度による姿勢検出は、その検出タイミングごとの誤差は場合によっては大きい可能性もあるが(激しい動きが行われた場合等)、あるタイミングごとに検出可能であるので誤差が蓄積しないという特徴を持つという点に注目したものである。
【0067】
図5〜図7は、当該補正の原理を示す図である。まず、図5は、上記第1の検出姿勢と、この第1の検出姿勢を基準とした場合に推定される重力方向であるベクトルv1(推定重力方向)を示す。図6は、加速度センサ39によって検出される加速度データに基づいて算出される重力方向(鉛直下向き)であるベクトルGと、このように重力方向が鉛直下向きであると想定した場合におけるゲーム装置10の姿勢である第2の検出姿勢を示す。つまり、第2の検出姿勢は、加速度データから決まる姿勢ともいえる。そして、本実施形態では、図7に示すように、上記第1の検出姿勢を、加速度データから決まる第2の検出姿勢に近づける補正が行われる。
【0068】
なお、本実施形態においては、第1の検出姿勢を第2の検出姿勢へと近づける補正を行い、補正後の第1の検出姿勢を第2の検出姿勢と一致させていない。これは、加速度データが誤検出や激しい操作等の原因で急激に変化する場合であっても補正後の第1の検出姿勢が急激に変化しないようにするためである。ただし、他の実施形態においては、補正後の第1の検出姿勢を第2の検出姿勢と一致させるように補正を行ってもよい。また、詳細は後述するが、本実施形態においては、第1の検出姿勢を第2の検出姿勢へと近づける割合は、加速度データにより示される加速度の大きさ(より具体的には、当該大きさと重力加速度の大きさとの差分)に応じて変化するように決められる。ただし、他の実施形態においては、上記割合を予め定められた固定値としてもよい。
【0069】
そして、本実施形態では、このように補正された第1の検出姿勢のうち、X軸方向ベクトルのy成分のみをハンドルのステアリング操作に反映させる(図8参照)。ここで、y成分については、y軸における位置として捉えても良いし、図8におけるX軸方向ベクトルと水平軸との角度(y成分相当の角度)として捉えても良い。このように、x成分およびz成分は用いずに、y成分のみを用いるのは、次のような理由による。上述のような補正処理は、加速度データで算出される重力方向を基準にして、上記角速度データで算出された姿勢を補正していることになる。つまり、重力方向という信頼度の高い基準を利用したものといえる。そして、ゲーム装置10の姿勢を構成する各方向軸ベクトルにおいて、y成分は(実空間における)重力方向に沿った成分を示しているといえる(なお、厳密には、完全に重力方向に沿っている場合に限らず、その方向に多少の誤差がある場合も含まれる。つまり、略重力方向に沿った成分を示している場合も含まれる)。
つまり、補正後の姿勢におけるy成分、換言すると、y成分にかかる補正については、信頼度が非常に高いといえる。そこで、本実施形態では、ハンドルを切るような操作を模するという操作体系であることから、ゲーム装置10の姿勢のうちX軸方向ベクトルを利用し、なおかつ、このベクトルの構成成分のうちのy成分のみを利用して、ハンドルの切り角度として反映させる。換言すれば、重力方向(場合によっては略重力方向)に関する姿勢の変化をステアリング操作に反映させている。これにより、補正の信頼度が高い成分に基づいたステアリング操作が実現でき、レーシングゲーム等における自車のステアリング操作等、重力方向に関する姿勢の変化を利用する操作について、違和感のない操作感を提供することができる。
【0070】
次に、ゲーム装置10において実行される処理の詳細について説明する。まず、ゲーム装置10における処理において用いられる主なデータについて図9を用いて説明する。図9は、ゲーム装置10のメインメモリ32に記憶される主なデータを示す図である。図9に示すように、ゲーム装置10のメインメモリ32には、ゲームプログラム321、操作データ323、およびゲーム処理用データ329が記憶される。なお、メインメモリ32には、図9に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【0071】
ゲームプログラム321は、ゲーム装置10に電源が投入された後の適宜のタイミングで外部メモリ44あるいはデータ保存用内部メモリ35からその一部または全部が読み込まれてメインメモリに記憶される。ゲームプログラム321には、姿勢検出プログラム322が含まれる。姿勢検出プログラム322は、ゲーム装置10の姿勢を検出するための姿勢検出処理を実行するためのプログラムである。
【0072】
操作データ323は、プレイヤがゲーム装置10に対して行った操作内容を示すデータである。操作データ323には、操作ボタンデータ324、角速度データ325、加速度データ326、タッチ座標データ327、および、アナログ入力データ328が含まれる。操作ボタンデータ324は、各種操作ボタン14の押下状態を示すデータである。角速度データ325は、角速度センサ47によって検出された角速度を示すデータである。ここでは、角速度データ325は、図3に示すXYZの3軸回りのそれぞれの角速度を示す。また、加速度データ326は、加速度センサ39によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ326は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルVa1を示す。また、本実施形態においては、ゲーム装置10が静止している状態で加速度センサ39が検出する加速度ベクトルVa1の大きさを“1”とする。つまり、加速度センサ39によって検出される重力加速度の大きさは“1”である。タッチ座標データ327は、タッチパネル13で検出されたタッチ座標を示すデータである。また、アナログ入力データ328は、アナログスティック15の入力状態を示すデータである。
【0073】
ゲーム処理用データ329は、後述するゲーム処理において用いられるデータである。ゲーム処理用データ329は、第1姿勢データ330、加速度大きさデータ331、補正度データ332、補正量ベクトルデータ333、補正行列データ334を含む。なお、図9に示すデータの他、ゲーム処理用データ329は、ゲーム処理において用いられる各種データ(ゲームパラメータを示すデータ等)を含む。
【0074】
第1姿勢データ330は、角速度データ325を用いて算出される上記第1の検出姿勢を示すデータである。本実施形態では、第1の検出姿勢は、上述した式(1)に示す3×3の行列M1で表現される。以下では、第1の検出姿勢を示す行列M1を、「第1姿勢行列M1」と呼ぶ。なお、本実施形態では、行列を用いて第1の検出姿勢を表現することとしたが、他の実施形態においては、第1の検出姿勢は、3次のベクトルまたは3つの角度によって表現されてもよい。
【0075】
加速度大きさデータ331は、加速度データ326により示される加速度ベクトルVa1の大きさ(長さ)Lを示すデータである。
【0076】
補正度データ332は、第2の検出姿勢を用いて第1の検出姿勢を補正する度合(補正度A)を示すデータである。補正度Aは、0≦A≦C1(C1は、0<C1≦1の所定の定数)の範囲を取り得る値である。詳細は後述するが、補正後の第1の検出姿勢は、補正度Aの値が大きいほど第2の検出姿勢に近くなる。
【0077】
補正量ベクトルデータ333は、第1の検出姿勢を補正する補正量を示すベクトル(以下、補正量ベクトルと呼ぶ。)を示すデータである。補正量ベクトルVgは、上記加速度ベクトルVa1を上記xyz座標系で表したベクトルVa2と、上記補正度Aとに基づいて算出される。
【0078】
補正行列データ334は、第1の検出姿勢を補正するために用いる回転行列(補正行列と呼ぶ)Maを示すデータである。つまり、第1補正処理においては、第1の検出姿勢を表す第1姿勢行列M1に補正行列Maを掛けることで第1の検出姿勢が補正される。補正行列Maは、上記ベクトルVa2と上記補正量ベクトルVgとに基づいて算出される。
【0079】
次に、ゲーム装置10において行われる処理の詳細を、図10〜図11を用いて説明する。図10は、ゲーム装置10において実行される処理の流れを示すメインフローチャートである
【0080】
まず、ステップS1において、CPU311は、ゲームに関する初期化処理を実行する。この初期化処理においては、ゲーム処理に用いられる各種パラメータの値が初期化されたり、仮想のゲーム空間が構築されたり、プレイヤオブジェクトや他のオブジェクトがゲーム空間の初期位置に配置されたりする。以上のステップS1の次にステップS2の処理が実行される。
【0081】
ステップS2において、CPU311は、初期姿勢設定処理が実行される。具体的には、プレイヤが所定の操作を行ったことに応じて、ゲーム装置10の第1の検出姿勢の初期姿勢として所定の値が設定される。ここでは、基準姿勢を、上記図1で示すような姿勢、すなわち、外側撮像部の撮像方向がZ軸正方向を向き、かつ、下側ハウジングの右側面がX軸正方向(右向き)なる姿勢であるとする。そのため、プレイヤは、初期姿勢が上記基準姿勢となるようにゲーム装置10を把持した状態で、上記所定の操作を行うことが望ましい。CPU311は、所定の操作が行われると、上記初期姿勢を表す行列を示すデータを第1姿勢データとしてメインメモリに記憶する。以上のステップS2の後、ステップS3〜S9の処理ループが、ゲームが実行される間繰り返し実行される。なお、1回の当該処理ループは、1フレーム時間(例えば1/60秒)に1回の割合で実行される。
【0082】
なお、本実施形態では、初期姿勢設定処理(ステップS2)は、ゲーム開始前(ステップS3〜S9の処理ループが実行される前)に1回実行されるのみであるとしたが、他の実施形態においては、ゲーム中における任意のタイミングで初期姿勢設定処理が実行されるようにしてもよい。すなわち、CPU311は、ゲーム中においてプレイヤが上記所定の操作を行ったことに応じて初期姿勢設定処理を実行するようにしてもよい。
【0083】
次に、ステップS3において、CPU311は操作データを取得する。そして、当該操作データに含まれる角速度データ、加速度データ、タッチ位置データ、操作ボタンデータがそれぞれメインメモリ32に記憶される。
【0084】
次に、ステップS4において、CPU311は、メインメモリ32に記憶されている角速度データ325に基づいて第1の検出姿勢を検出する。ゲーム装置10の姿勢を角速度から検出する方法はどのような方法であってもよいが、本実施形態においては、第1の検出姿勢は、前回の第1の検出姿勢(前回の処理ループにおいて検出された第1の検出姿勢)と、今回の角速度(今回の処理ループにおいて取得された角速度)とを用いて検出される。具体的には、CPU311は、前回の第1の検出姿勢を今回の角速度で単位時間分回転させた姿勢を、第1の検出姿勢とする。なお、前回の第1の検出姿勢は、メインメモリ32に記憶されている第1姿勢データ330により示され、今回の角速度は、メインメモリ32に記憶されている角速度データ325により示されている。ステップS4で算出された姿勢(3×3の行列)を示すデータが、第1姿勢データ330としてメインメモリ32に新たに記憶される。
【0085】
次に、ステップS5において、姿勢補正処理が実行される。図10は、当該姿勢補正処理(ステップS5)の流れを示すフローチャートである。姿勢補正処理においては、まずステップS11において、CPU311は、加速度センサ39によって検出された加速度の大きさLを算出する。すなわち、メインメモリ32に記憶されている加速度データ326を読み出し、当該加速度データ326により示される加速度ベクトルVa1について大きさLを算出する。算出された大きさLを示すデータは加速度大きさデータ331としてメインメモリ32に記憶される。ステップS11の次にステップS12の処理が実行される。
【0086】
ステップS12において、CPU311は、加速度センサ39によって検出された加速度の大きさが0であるか否かを判定する。すなわち、メインメモリ32に記憶されている加速度大きさデータ331を読み出し、当該加速度大きさデータ331により示される大きさLが0であるか否かを判定する。ステップS12の判定結果が否定である場合、ステップS13の処理が実行される。一方、ステップS12の判定結果が肯定である場合、以降のステップS13〜S21の処理がスキップされて、CPU311は第1補正処理を終了する。このように、本実施形態においては、加速度センサ39によって検出された加速度の大きさが0である場合には、当該加速度を用いた補正が行われない。これは、加速度の大きさが0である場合には加速度センサ39の検出結果から重力方向を算出できないということ、および、加速度ベクトルの大きさが0であれば以降のステップS13〜S21の処理が困難であることが理由である。
【0087】
ステップS13において、CPU311は、加速度センサ39によって検出された加速度ベクトルVa1を正規化する。すなわち、メインメモリ32に記憶されている加速度データ326を読み出し、当該加速度データ326により示される加速度ベクトルVa1を、大きさが1となるように補正する。CPU311は、正規化された加速度ベクトルVa1を示すデータをメインメモリ32に記憶しておく。
【0088】
次に、ステップS14において、CPU311は、第1補正処理において第1の検出姿勢を補正する度合を示す上記補正度Aを算出する。補正度Aは、正規化される前の加速度ベクトルVa1の大きさLに基づいて算出される。具体的には、CPU311は、メインメモリ32に記憶されている加速度大きさデータ331を読み出す。そして、当該加速度大きさデータ331により示される大きさLを用いて、次の式(2)に従って補正度Aを算出する。
A=|L−1| …(2)
上式(2)で算出された補正度Aを示すデータは、補正度データ332としてメインメモリ32に記憶される。なお、上式(2)で算出された補正度Aは、最終的な値ではない演算中の値であって、以降のステップS16で値が変換されることによって、最終的な補正度Aの値が得られる。ステップS14の次にステップS15の処理が実行される。
【0089】
次に、ステップS15において、CPU311は、ステップS14で算出された補正度Aが所定値Rよりも小さいか否かを判定する。所定値Rは、予め定められており、例えば0.4に設定される。ここで、上述したように、本実施形態においては、加速度センサ39によって検出される重力加速度の大きさは“1”であり、また、補正度Aは加速度ベクトルVa1の大きさLと“1”との差の絶対値である(上式(2))。したがって、補正度Aが所定値R以上である場合とは、加速度ベクトルVa1の大きさLが重力加速度の大きさから所定値R以上離れている場合である。ステップS15の判定結果が肯定である場合、ステップS16の処理が実行される。一方、ステップS15の判定結果が否定である場合、以降のステップS16〜S21の処理がスキップされて、CPU311は第1補正処理を終了する。
【0090】
上記のように、本実施形態では、加速度センサ39によって検出される加速度の大きさLと重力加速度の大きさ(=1)との差が所定の基準(所定値R)よりも小さい場合にのみ補正が行われ、当該大きさLと重力加速度の大きさとの差が所定の基準以上である場合には補正が行われない。ここで、ゲーム装置10が動かされている状態では、重力加速度以外に、ゲーム装置10が動かされることによって生じる慣性による加速度が加速度センサ39によって検出されるので、検出される加速度ベクトルVa1の大きさLが“1”とは異なる値となり、ゲーム装置10が激しく動かされている場合には、大きさLが“1”から大きく離れた値となる。したがって、上記大きさLと重力加速度の大きさとの差が所定の基準以上である場合とは、ゲーム装置10が激しく動かされている場合であると推測される。一方、ゲーム装置10が激しく動かされている場合には、加速度センサ39によって検出される加速度ベクトルVa1に重力加速度以外の成分(上記慣性による加速度の成分)が多く含まれているため、加速度ベクトルVa1の値は、重力方向を示す値としては信頼できないものと推測される。したがって、上記ステップS15の判定処理は、ゲーム装置10が激しく動かされているか否か、換言すれば、加速度ベクトルVa1の値が重力方向(鉛直方向)を示す値としては信頼できるものであるか否かを判定する処理である。本実施形態においては、上記ステップS15の判定処理によって、加速度ベクトルVa1の値が重力方向を示す値としては信頼できない場合には補正を行わず、加速度ベクトルVa1の値が重力方向を示す値としては信頼できる場合にのみ補正を行うようにしている。これによって、重力方向を示す値としては信頼できない加速度ベクトルVa1を用いて第1の検出姿勢に対する補正が行われた結果、第1の検出姿勢が正しく補正されなくなることを防止することができる。
【0091】
ステップS16において、CPU311は、補正度Aの値を変換する。本実施形態では、補正度Aを、検出された加速度ベクトルVa1の大きさLが重力加速度の大きさに近いほど1に近くなるように、補正度Aを変換する。具体的には、CPU311は、メインメモリ32に記憶されている補正度データ332を読み出し、当該補正度データ332により示される補正度Aを、以下の式(3)〜(5)に従って変換する。
A2=1−(A1/R) …(3)
A3=A2×A2 …(4)
A4=A3×C1 …(5)
上式(3)〜(5)において、変数A1は変換前の補正度(メインメモリ32に現在記憶されている補正度データ332により示される値)であり、変数A4がステップS16において最終的に変換される補正度である。上式(3)は、変換前の補正度A1の大きさが重力加速度の大きさ(=1)に近いほど1に近くなるように変換後の補正度A2を得るための式である。上式(4)は、変換前の補正度A2が1に近いほど大きい重みが付されるように変換後の補正度A3を得るための式である。上式(5)は、補正量の大きさを調整するための式である。すなわち、定数C1は、定数C1の値が大きいほど補正量は大きくなる。定数C1は、予め定められ、0<C1≦1の範囲(例えば0.03)で設定される。以上の式(3)〜(5)による変換によって得られた補正度A4を示すデータが、新たな補正度データ332としてメインメモリに記憶される。上記ステップS16の次にステップS17の処理が実行される。
【0092】
なお、本実施形態においては、上式(3)〜(5)による変換を行ったが、他の実施形態においては、上式(3)〜(5)のうち一部または全部の変換を省略してもよい。ただし、上式(3)の変換を省略する場合には、後述するステップS18で用いる式(7)において、加速度ベクトルVa2と重力方向ベクトル(0,−1,0)とを入れ替える必要がある。
【0093】
ステップS17において、CPU311は、XYZ座標系で表現される加速度ベクトルVa1をxyz座標系の値Va2へと変換する。xyz座標系における加速度ベクトルVa2は、正規化された加速度ベクトルVa1を、前回のフレームにおいて得られた第1の検出姿勢を表す第1姿勢行列M1を用いて変換することによって算出される。すなわち、CPU311は、ステップS13においてメインメモリ32に記憶された(正規化された)加速度ベクトルVa1のデータと、第1姿勢データ330とを読み出す。そして、当該加速度ベクトルVa1と当該第1姿勢データ330により示される第1姿勢行列M1とを用いて、xyz座標系における加速度ベクトルVa2を算出する。より具体的には、正規化された加速度ベクトルVa1=(nx,ny,nz)とし、第1姿勢行列M1の各要素を上式(1)に示す変数とし、xyz座標系で表現される加速度ベクトルVa2=(vx,vy,vz)とすると、加速度ベクトルVa2は次の式(6)に従って算出される。
vx=Xx×nx+Yx×ny+Zx×nz
vy=Xy×nx+Yy×ny+Zy×nz
vz=Xz×nx+Yz×ny+Zz×nz …(6)
上式(6)に示されるように、加速度ベクトルVa2は、回転行列である第1姿勢行列M1によって加速度ベクトルVa1を回転させることによって得ることができる。ステップS17において算出された加速度ベクトルVa2はメインメモリに記憶される。上記ステップS17の次にステップS18の処理が実行される。
【0094】
ステップS18において、CPU311は、xyz座標系で表現される加速度ベクトルVa2と補正度Aとを用いて補正量ベクトルVgを算出する。補正量ベクトルVgは、上記ステップS16による変換後の補正度と、xyz座標系の鉛直下方向(重力方向)を示すベクトル(0,−1,0)とを用いて算出される。具体的には、CPU311は、メインメモリ32に記憶されている補正度データ332を読み出し、当該補正度データ332により示される補正度Aを用いて、以下の式(7)に従って補正量ベクトルVg=(gx,gy,gz)を算出する。
gx=(0−vx)×A+vx
gy=(−1−vy)×A+vy
gz=(0−vz)×A+vz …(7)
上式(7)に示されるように、補正量ベクトルVgは、加速度ベクトルVa2の終点から重力方向ベクトル(0,−1,0)の終点までを結ぶ線分をA:(1−A)に内分する点を終点とするベクトルである。したがって、補正量ベクトルVgは、補正度Aの値が大きいほど、重力方向ベクトルに近づくこととなる。CPU311は、上式(7)によって算出された補正量ベクトルVgを示すデータを、補正量ベクトルデータ333としてメインメモリに記憶する。上記ステップS18の次にステップS19の処理が実行される。
【0095】
ステップS19において、CPU311は、上記ステップS18で算出された補正量ベクトルVgを正規化する。すなわち、メインメモリに記憶されている補正量ベクトルデータ333を読み出し、当該補正量ベクトルデータ333により示されるベクトルを正規化する。そして、正規化されたベクトルを示すデータを新たな補正量ベクトルデータ333としてメインメモリに記憶する。なお、上記ステップS19で算出された補正量ベクトルVgが、図9に示すベクトルv3に相当する。上記ステップS19の次にステップS20の処理が実行される。
【0096】
ステップS20において、CPU311は、第1の検出姿勢を補正するための補正行列Maを算出する。補正行列Maは、xyz座標系で表現される加速度ベクトルVa2と、ステップS19において正規化された補正量ベクトルVgとに基づいて算出される。具体的には、CPU311は、ステップS17でメインメモリに記憶された加速度ベクトルVa2と、補正量ベクトルデータ333を読み出す。そして、上記加速度ベクトルVa2を補正量ベクトルVgと一致するように回転させる回転行列を算出し、算出された回転行列を補正行列Maとする。ステップS20で算出された補正行列Maを示すデータは、補正行列データ334としてメインメモリに記憶される。
【0097】
次に、ステップS21において、CPU311は、第1の検出姿勢を示す第1姿勢行列M1を補正行列Maで補正する。具体的には、CPU311は、メインメモリ32に記憶されている第1姿勢データ330および補正行列データ334を読み出す。そして、当該第1姿勢データ330により示される第1姿勢行列M1を、当該補正行列データ334により示される補正行列Maによって変換する(第1姿勢行列M1と補正行列Maとの積を算出する)。変換後の第1姿勢行列M1が、補正された第1の検出姿勢を示すこととなる。つまり、ステップS21の処理は、上記図7で示したような、第1の検出姿勢を第2の検出姿勢に近づけるように回転させる処理に相当する。CPU311は、補正後(変換後)の第1姿勢行列M1を示すデータを、新たな第1姿勢データ330としてメインメモリに記憶する。上記ステップS21の後、CPU311は姿勢補正処理を終了する。
【0098】
図10に戻り、次に、ステップS6において、CPU311は、上記補正後の第1姿勢データ330から、X方向ベクトルのy成分(式1の成分Xy)を取得する。
【0099】
次に、ステップS7において、CPU311は、上記取得した成分Xyをハンドルの切り角度に反映させる(切り角度を決定する)処理を実行する。つまり、成分Xyとして示される値がステアリング操作に反映される。
【0100】
次に、ステップS8において、CPU311は、その他の各種ゲーム処理を実行する。すなわち、上記ハンドルの切り角度に基づいてプレイヤオブジェクト101を移動させる処理や、他のオブジェクトの移動処理等の各種ゲーム処理が実行される。更に、これらゲーム処理が反映された仮想空間を仮想カメラで撮影した画像がゲーム画面として描画される。
【0101】
次に、ステップS9において、CPU311は、ゲームを終了するか否かを判定する。ステップS9の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップS9の判定結果が否定である場合、ステップS3の処理が再度実行される。以降、ステップSxでゲームを終了すると判定されるまで、ステップS3〜S9の処理ループが繰り返し実行される。一方、ステップS9の判定結果が肯定である場合、CPU311は、図10に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
【0102】
このように、本実施形態では、角速度データを用いて算出されたゲーム装置10の姿勢を、加速度データを用いて補正し、補正後の姿勢のX軸方向ベクトルのy成分のみをステアリング操作(ハンドルの切り角)に反映する処理を行っている。つまり、重力方向に沿った姿勢の変化をステアリング操作に反映させている。これにより、重力方向を基準とした成分であるが故にその補正の信頼度が高い成分のみを利用して、プレイヤによって行われたゲーム装置10の姿勢の変化をゲーム処理に反映できるため、プレイヤが行った操作内容に対して違和感がより少ないプレイヤオブジェクト等の動きを実現できる。換言すれば、上記補正後の姿勢におけるy成分のみを用いることで、角速度センサと加速度センサのそれぞれの利点を最大に活かしたゲーム処理等の各種情報処理を実行することができる。
【0103】
なお、上述した実施形態では、レーシングゲームにおけるステアリング操作を例に挙げていた。ステアリング操作は平面的な操作(左右の傾きのみがわかればよい)であることから、ゲーム装置10の姿勢におけるX軸方向ベクトルのみを利用していた。このような場合に限らず、例えば、ゲーム装置10の姿勢におけるX軸方向ベクトルに加えて、他の軸方向のベクトルを併用してもよい。例えば、操縦桿の操作を模した操作をプレイヤに行わせるような場合、X軸方向ベクトルおよびZ軸方向ベクトルを利用してもよい。そして、このような場合も、それぞれのベクトルのy成分を利用してゲーム処理を行えばよい。どの軸のベクトルであっても、y成分については、重力方向に沿った成分であり、その補正の信頼度が高いと考えられるためである。つまり、重力方向に沿った変化が生じるような操作であればどのような操作であっても、y成分(重力方向に沿った軸方向)に関する変化についてはより高い精度で捉えて、操作内容に反映することが可能となる。
【0104】
また、上記実施形態では、ステアリング操作として上記補正後の姿勢のX軸ベクトルのy成分を用いた例を示したが、この他、補正後の第1の検出姿勢のX軸方向ベクトルと、鉛直方向に垂直なベクトルとの成す角度(上記図8のy成分相当の角度)を算出し、この角度をハンドルの切り角に反映させるような処理を行ってもよい。
【0105】
また、上記実施形態では、2つの表示装置を備えた携帯型ゲーム装置を例に説明したが、単一の表示装置を備え、その筐体の内部に加速度センサおよび角速度センサを備えた携帯端末であってもよい。
【0106】
また、上記実施形態では、3軸回りの角速度を検出する角速度センサを用いて、3次元の姿勢を検出する場合を例として説明したが、2次元平面上における姿勢(回転角度)を算出する場合においても本発明を適用することが可能である。
【0107】
また、上記実施形態においては、ゲーム装置10の姿勢をステアリング操作に反映させるための一連の処理が単一の装置(ゲーム装置10)において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【符号の説明】
【0108】
10 ゲーム装置
11 下側ハウジング
12 下側LCD
13 タッチパネル
14 操作ボタン
15 アナログスティック
16 LED
21 上側ハウジング
22 上側LCD
23a 外側撮像部(左)
23b 外側撮像部(右)
24 内側撮像部
27 タッチペン
31 情報処理部
32 メインメモリ
33 外部メモリI/F
34 データ保存用外部メモリI/F
35 データ保存用内部メモリ
36 無線通信モジュール
37 ローカル通信モジュール
38 RTC
39 加速度センサ
40 電源回路
42 マイク
43 スピーカ
44 外部メモリ
45 データ保存用外部メモリ
47 角速度センサ

【特許請求の範囲】
【請求項1】
角速度センサおよび加速度センサを備えた入力装置であって、
前記角速度センサから出力される角速度データに基づいて前記入力装置の第1の検出姿勢を検出する第1姿勢検出手段と、
前記加速度センサから出力される加速度データに基づいて、前記第1の検出姿勢を補正する姿勢補正手段と、
前記姿勢補正手段によって補正された補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う処理手段とを備える、入力装置。
【請求項2】
前記姿勢補正手段は、前記加速度データが示す加速度に基づき、前記入力装置の静止状態における姿勢を第2の検出姿勢とし、前記第1の検出姿勢を当該第2の検出姿勢に近づけるように補正する、請求項1に記載の入力装置。
【請求項3】
前記姿勢補正手段は、前記加速度データが示す加速度の向きが略鉛直下向きとなる場合における前記入力装置の姿勢を第2の検出姿勢とする、請求項2に記載の入力装置。
【請求項4】
前記姿勢補正手段は、前記加速度の大きさが重力加速度の大きさに近いほど前記第1の検出姿勢が前記第2の検出姿勢に近くなるように前記第1の検出姿勢を前記第2の検出姿勢へと近づける、請求項3に記載の入力装置。
【請求項5】
前記処理手段は、前記補正後の第1の検出姿勢を3軸のベクトルで示した姿勢ベクトルのうちの所定の1軸方向についての鉛直方向に沿った成分に応じて前記所定の処理を実行する、請求項1に記載の入力装置。
【請求項6】
前記入力装置は、表示画面と一体型の装置であり、
前記処理手段は、前記所定の情報処理の結果を前記表示画面に表示する、請求項1に記載の入力装置。
【請求項7】
角速度センサおよび加速度センサを備えた情報処理装置のコンピュータに実行させる入力処理プログラムであって、
前記コンピュータを、
前記角速度センサから出力される角速度データに基づいて前記入力装置の第1の検出姿勢を検出する第1姿勢検出手段と、
前記加速度センサから出力される加速度データに基づいて、前記第1の検出姿勢を補正する姿勢補正手段と、
前記姿勢補正手段によって補正された補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う処理手段として機能させる、入力処理プログラム。
【請求項8】
角速度センサおよび加速度センサを備えた情報処理装置において用いられる入力処理方法であって、
前記角速度センサから出力される角速度データに基づいて前記入力装置の第1の検出姿勢を検出する第1姿勢検出ステップと、
前記加速度センサから出力される加速度データに基づいて、前記第1の検出姿勢を補正する姿勢補正ステップと、
前記姿勢補正ステップにおいて補正された補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う処理ステップとを備える、入力処理方法。
【請求項9】
角速度センサおよび加速度センサを備えた入力処理システムであって、
前記角速度センサから出力される角速度データに基づいて前記入力装置の第1の検出姿勢を検出する第1姿勢検出手段と、
前記加速度センサから出力される加速度データに基づいて、前記第1の検出姿勢を補正する姿勢補正手段と、
前記姿勢補正手段によって補正された補正後の第1の検出姿勢における水平方向及び奥行き方向に関する姿勢を用いずに所定の情報処理を行う処理手段とを備える、入力処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate