(57)【要約】【課題】ユーザが手に持って使用する入力装置を用いて従来にはない新たな操作が可能となるようなゲームプログラムおよびゲーム装置を提供すること。【解決手段】コントローラに設けられた撮像装置の撮像画像における撮像対象の位置から指示位置を算出し、コントローラに設けられた加速度センサが検出する加速度からコントローラの傾きを算出し、こうして算出された指示位置およびコントローラの傾きに基づいて、仮想ゲーム空間におけるオブジェクトの位置および姿勢をそれぞれ決定し、このオブジェクトを含む仮想ゲーム空間を画面に表示する。【選択図】図１１
2007301048.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１軸に関する加速度を検出可能な加速度センサと、所定の撮像対象を撮像するための撮像装置とを備えた入力装置の動きに応じたゲーム処理を行うゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記撮像装置の撮像画像における前記撮像対象の位置および前記加速度センサが検出する加速度を取得または算出するデータ取得ステップ、
前記撮像画像における撮像対象の位置から、前記入力装置の動きに伴って変化する指示位置を算出する指示位置算出ステップ、
前記加速度センサが検出する加速度から前記入力装置の傾きを算出する傾き算出ステップ、
前記指示位置および前記入力装置の傾きに基づいて所定のゲーム処理を行うゲーム処理ステップ、および
前記ゲーム処理の結果を反映したゲーム空間を表示装置に表示させる表示制御ステップ、を前記コンピュータに実行させるゲームプログラム。
【請求項２】
前記ゲーム処理ステップは、前記指示位置からゲーム空間内の操作対象オブジェクトを決定または操作対象オブジェクトの位置を決定し、かつ前記入力装置の傾きから当該操作対象オブジェクトの姿勢を決定するオブジェクト処理ステップを含む、請求項１に記載のゲームプログラム。
【請求項３】
前記加速度センサは、前記撮像装置の撮像方向に対して垂直な２軸に関する加速度を少なくとも検出可能であり、
前記傾き算出ステップは、前記加速度センサが検出する前記撮像装置の撮像方向に対して垂直な２軸に関する加速度から、前記撮像装置の撮像方向を軸とした前記入力装置の傾きを算出する撮像方向軸周り傾き算出ステップを含み、
前記ゲーム処理ステップは、前記指示位置からゲーム空間内の操作対象オブジェクトを決定または操作対象オブジェクトの位置を決定し、前記撮像装置の撮像方向を軸とした前記入力装置の傾きから当該操作対象オブジェクトの姿勢を決定するオブジェクト処理ステップを含む、請求項１に記載のゲームプログラム。
【請求項４】
前記ゲーム処理ステップは、ゲーム空間内の仮想カメラの向きを前記入力装置の傾きから決定し、決定された当該仮想カメラの向きに応じた前記指示位置のゲーム空間内での位置を決定するカメラ処理ステップを含む、請求項１に記載のゲームプログラム。
【請求項５】
前記撮像対象が、互いに離れて配置された一対の撮像対象であり、
前記ゲームプログラムは、前記撮像画像における前記一対の撮像対象間の距離から、前記入力装置と前記一対の撮像対象との間の距離を算出する距離算出ステップを前記コンピュータにさらに実行させ、
前記ゲーム処理ステップは、前記指示位置および前記入力装置の傾きに加えて、さらに前記入力装置と前記１対の撮像対象との間の距離に基づいて前記ゲーム処理を行う、請求項１に記載のゲームプログラム。
【請求項６】
少なくとも１軸に関する加速度を検出可能な加速度センサと、
所定の撮像対象を撮像するための撮像装置と、
前記撮像装置の撮像画像における前記撮像対象の位置から前記撮像装置の動きに伴って変化する指示位置を算出する指示位置算出手段と、
前記加速度センサが検出する加速度から前記加速度センサの傾きを算出する傾き算出手段と、
前記指示位置および前記加速度センサの傾きに基づいて所定のゲーム処理を行うゲーム処理手段と、
前記ゲーム処理の結果を反映したゲーム空間を表示装置に表示させる表示制御手段と、を備えるゲーム装置。
【請求項７】
前記ゲーム処理手段は、前記指示位置からゲーム空間内の操作対象オブジェクトを決定または操作対象オブジェクトの位置を決定し、かつ前記加速度センサの傾きから当該操作対象オブジェクトの姿勢を決定するオブジェクト処理手段を含む、請求項６に記載のゲーム装置。
【請求項８】
前記加速度センサは、前記撮像装置の撮像方向に対して垂直な２軸に関する加速度を少なくとも検出可能であり、
前記傾き算出手段は、前記加速度センサが検出する前記撮像装置の撮像方向に対して垂直な２軸に関する加速度から、前記撮像装置の撮像方向を軸とした前記加速度センサの傾きを算出する撮像方向軸周り傾き算出手段を含み、
前記ゲーム処理手段は、前記指示位置からゲーム空間内の操作対象オブジェクトを決定または操作対象オブジェクトの位置を決定し、前記撮像装置の撮像方向を軸とした前記加速度センサの傾きから当該操作対象オブジェクトの姿勢を決定するオブジェクト処理手段を含む、請求項６に記載のゲーム装置。
【請求項９】
前記ゲーム処理手段は、ゲーム空間内の仮想カメラの向きを前記加速度センサの傾きから決定し、決定された当該仮想カメラの向きに応じた前記指示位置のゲーム空間内での位置を決定するカメラ処理手段を含む、請求項６に記載のゲーム装置。
【請求項１０】
前記加速度センサは３軸に関する加速度を検出可能な３軸加速度センサであって、
前記傾き算出手段は、３次元での傾きを算出する、請求項６に記載のゲーム装置。
【請求項１１】
前記撮像対象が、互いに離れて配置された一対の撮像対象であり、
前記ゲーム装置は、前記撮像画像における前記一対の撮像対象間の距離から、前記撮像装置と前記一対の撮像対象との間の距離を算出する距離算出手段をさらに備え、
前記ゲーム処理手段は、前記指示位置および前記加速度センサの傾きに加えて、さらに前記撮像装置と前記１対の撮像対象との間の距離に基づいて前記ゲーム処理を行う、請求項６に記載のゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、加速度センサと撮像装置を備える入力装置の動きに応じたゲーム処理を行うためのゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来、光学式のポインティングシステムを用いて表示画面上の特定の位置を指定する技術が考えられている。例えば、特許文献１に記載の光学式ポインティングシステムは、複数の視聴者を対象とした会議等において用いられるシステムである。このシステムでは、表示画面の近傍に発光素子が設けられ、指示器には光電変換素子を用いた撮像装置が内蔵される。指示者が指示器を用いて表示画面の任意の位置を指定する場合、指示器は、撮像装置によって上記発光素子を撮像し、撮像された画像に基づいて指示器が指定する位置を算出する。算出された位置にマークが表示されることによって、指示者が指示したい位置がマークによって示されることとなる。
【０００３】
また、上記と同様の光学式のポインティングシステムを用いたゲーム用コントローラが考えられている（例えば、特許文献２参照。）。このコントローラは、ガン（拳銃）型の形状を有しており、射撃ゲームに用いられる。この射撃ゲームは、画面に表示されている標的に向かってガンを用いて射撃させるゲームである。ガンは、画面上の任意の位置（弾が飛んでいく位置）を指定するために用いられる。ガン型のコントローラにはＣＣＤカメラが内蔵されており、画面の周囲の４箇所に配置された発光体をＣＣＤカメラが撮像する。コントローラは、撮像された画像を用いてガンの向きや回転や傾きを算出する。算出結果を用いて、画面に表示されている標的の向きをガンが正しく向いているか否かを検出することによって、標的に命中したか否かを判断する。以上の構成によって、プレイヤが手に持ったコントローラ（ガン）自体を動かしてゲーム操作を行うゲームシステムを実現することができる。
【特許文献１】特開平６−３０８８７９号公報
【特許文献２】特開平８−７１２５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の技術では、ユーザが手に持って使用する入力装置（上記指示器やガン型のコントローラ）は、表示画面上の位置を指定するために用いられるのみである。つまり、上記の指示器やガン型のコントローラでは、表示画面上の位置を指定するという単一の操作のみが可能であり、他の操作を行うことができなかった。例えば、上記入力装置をゲーム装置に用いる場合、表示画面上の位置を指定するという１種類の単純なゲーム操作しか行うことができない。そのため、ゲーム操作が単純であることからゲーム自体も単純な内容となってしまい、興趣性に欠けるものとなる。
【０００５】
それ故、本発明の目的は、ユーザが手に持って使用する入力装置を用いて従来にはない新たな操作が可能となるようなゲーム装置おおびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００７】
本発明のゲームプログラムは、少なくとも１軸に関する加速度を検出可能な加速度センサ（３７）と、所定の撮像対象（８ａ，８ｂ）を撮像するための撮像装置（４０）とを備えた入力装置（７）の動きに応じたゲーム処理を行うゲーム装置（３）のコンピュータ（１０）で実行されるゲームプログラムである。当該ゲームプログラムは、前記コンピュータに、データ取得ステップ（Ｓ１０）、指示位置算出ステップ（Ｓ１２）、傾き算出ステップ（Ｓ１６）、ゲーム処理ステップ（Ｓ１４，Ｓ１８）、および表示制御ステップ（Ｓ２０）を実行させるためのゲームプログラムである。データ取得ステップは、前記撮像装置の撮像画像における前記撮像対象の位置および前記加速度センサが検出する加速度を取得または算出するステップである。指示位置算出ステップは、前記撮像画像における撮像対象の位置から、前記入力装置の動きに伴って変化する指示位置を算出するステップである。傾き算出ステップは、前記加速度センサが検出する加速度から前記入力装置の傾きを算出するステップである。ゲーム処理ステップは、前記指示位置および前記入力装置の傾きに基づいて所定のゲーム処理を行うステップである。表示制御ステップは、前記ゲーム処理の結果を反映したゲーム空間を表示装置に表示させるステップである。なお、加速度センサと撮像装置は、共通のハウジングに設けられていてもよいし、フレキシブルなケーブルで結合される２つのハウジングに別個に設けられていてもよい。
【０００８】
なお、前記ゲーム処理ステップは、前記指示位置からゲーム空間内の操作対象オブジェクトを決定または操作対象オブジェクトの位置を決定し、かつ前記入力装置の傾きから当該操作対象オブジェクトの姿勢を決定するオブジェクト処理ステップを含んでもよい。
【０００９】
また、前記加速度センサは、前記撮像装置の撮像方向（光軸方向，Ｚ軸方向）に対して垂直な２軸（Ｘ軸，Ｙ軸）に関する加速度を少なくとも検出可能であり、前記傾き算出ステップは、前記加速度センサが検出する前記撮像装置の撮像方向に対して垂直な２軸に関する加速度から、前記撮像装置の撮像方向を軸とした前記入力装置の傾き（θ１，θ２，θ３）を算出する撮像方向軸周り傾き算出ステップを含み、前記ゲーム処理ステップは、前記指示位置からゲーム空間内の操作対象オブジェクトを決定または操作対象オブジェクトの位置を決定し、前記撮像装置の撮像方向を軸とした前記入力装置の傾きから当該操作対象オブジェクトの姿勢を決定するオブジェクト処理ステップを含んでもよい。これにより、プレイヤは、入力装置を撮像方向軸周りにひねる動作によって、指示位置を変えることなくオブジェクトの姿勢だけを容易に変化させることができるので、オブジェクトの位置と姿勢を容易に個別に制御することができる。
【００１０】
また、前記ゲーム処理ステップは、ゲーム空間内の仮想カメラ（ＶＣ）の向きを前記入力装置の傾きから決定し、決定された当該仮想カメラの向きに応じた前記指示位置のゲーム空間内での位置を決定するカメラ処理ステップ（Ｓ３４，Ｓ３６）を含んでもよい。
【００１１】
また、前記撮像対象が、互いに離れて配置された一対の撮像対象（８ａ，８ｂ）であり、前記ゲームプログラムは、前記撮像画像における前記一対の撮像対象間の距離から、前記入力装置と前記一対の撮像対象との間の距離を算出する距離算出ステップを前記コンピュータにさらに実行させ、前記ゲーム処理ステップは、前記指示位置および前記入力装置の傾きに加えて、さらに前記入力装置と前記１対の撮像対象との間の距離に基づいて前記ゲーム処理を行ってもよい。
【００１２】
本発明のゲーム装置は、少なくとも１軸に関する加速度を検出可能な加速度センサ（３７）と、所定の撮像対象（８ａ，８ｂ）を撮像するための撮像装置（４０）と、指示位置算出手段（１０，Ｓ１２）と、傾き算出手段（１０，Ｓ１６）と、ゲーム処理手段（１０，Ｓ１４，Ｓ１８）と、表示制御手段（１０，Ｓ２０）とを備える。指示位置算出手段は、前記撮像装置の撮像画像における前記撮像対象の位置から前記撮像装置の動きに伴って変化する指示位置を算出する手段である。傾き算出手段は、前記加速度センサが検出する加速度から前記加速度センサの傾きを算出する手段である。ゲーム処理手段は、前記指示位置および前記加速度センサの傾きに基づいて所定のゲーム処理を行う手段である。表示制御手段は、前記ゲーム処理の結果を反映したゲーム空間を表示装置に表示させる手段である。
【００１３】
なお、前記ゲーム処理手段は、前記指示位置からゲーム空間内の操作対象オブジェクトを決定または操作対象オブジェクトの位置を決定し、かつ前記加速度センサの傾きから当該操作対象オブジェクトの姿勢を決定するオブジェクト処理手段を含んでもよい。
【００１４】
また、前記加速度センサは、前記撮像装置の撮像方向（光軸方向，Ｚ軸方向）に対して垂直な２軸（Ｘ軸，Ｙ軸）に関する加速度を少なくとも検出可能であり、前記傾き算出手段は、前記加速度センサが検出する前記撮像装置の撮像方向に対して垂直な２軸に関する加速度から、前記撮像装置の撮像方向を軸とした前記加速度センサの傾き（θ１，θ２，θ３）を算出する撮像方向軸周り傾き算出手段を含み、前記ゲーム処理手段は、前記指示位置からゲーム空間内の操作対象オブジェクトを決定または操作対象オブジェクトの位置を決定し、前記撮像装置の撮像方向を軸とした前記加速度センサの傾きから当該操作対象オブジェクトの姿勢を決定するオブジェクト処理手段を含んでもよい。
【００１５】
また、前記ゲーム処理手段は、ゲーム空間内の仮想カメラ（ＶＣ）の向きを前記加速度センサの傾きから決定し、決定された当該仮想カメラの向きに応じた前記指示位置のゲーム空間内での位置を決定するカメラ処理手段（１０，Ｓ３４，Ｓ３６）を含んでもよい。
【００１６】
また、前記加速度センサは３軸（Ｘ軸，Ｙ軸，Ｚ軸）に関する加速度を検出可能な３軸加速度センサであって、前記傾き算出手段は、３次元での傾きを算出してもよい。
【００１７】
また、前記撮像対象が、互いに離れて配置された一対の撮像対象（８ａ，８ｂ）であり、前記ゲーム装置は、前記撮像画像における前記一対の撮像対象間の距離から、前記撮像装置と前記一対の撮像対象との間の距離を算出する距離算出手段をさらに備え、前記ゲーム処理手段は、前記指示位置および前記加速度センサの傾きに加えて、さらに前記撮像装置と前記１対の撮像対象との間の距離に基づいて前記ゲーム処理を行ってもよい。
【発明の効果】
【００１８】
本発明によれば、撮像装置の撮像画像における撮像対象の位置から算出される指示位置と、加速度センサが検出する加速度から算出される入力装置（または加速度センサ）の傾きとに基づいてゲーム処理が実行されるので、今までにないゲーム操作が可能となる。
【発明を実施するための最良の形態】
【００１９】
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、当該ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。
【００２０】
図１において、ゲームシステム１は、ゲーム装置３およびコントローラ７によって構成される。コントローラ７は、コントローラ７に対する操作内容を示す操作データをゲーム装置３に与える入力装置である。ゲーム装置３は、操作データに応じて、後述するゲーム処理を実行する。本実施形態ではゲーム装置３は据置型の装置であるが、他の実施形態では携帯型の装置であってもよいし、アーケードゲーム装置であってもよい。また、ゲーム装置３には、スピーカを備える家庭用テレビジョン受像機等の表示装置（以下、モニタと記載する）２が接続コードを介して接続される。モニタ２は、ゲーム処理の結果得られるゲーム画像を表示する。また、モニタ２の周辺（図では画面の上側）には、２つのマーカ８ａおよび８ｂが設置される。マーカ８ａおよび８ｂは、具体的には赤外ＬＥＤであり、それぞれモニタ２の前方に向かって赤外光を出力する。
【００２１】
ゲーム装置３には、接続端子を介して通信ユニット６が接続される。通信ユニット６は、コントローラ７から無線送信される操作データを受信するとともに、ゲーム装置３の指示によりコントローラ７へデータを送信する。このように、コントローラ７とゲーム装置３とは無線通信によって接続される。なお、他の実施形態においてはコントローラ７とゲーム装置３とは有線で接続されてもよい。
【００２２】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着される。ゲーム装置３の上部主面には、当該ゲーム装置３の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置３上部の蓋を開くためのＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク４の脱着が可能となる。
【００２３】
ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置３は、外部メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００２４】
コントローラ７は、通信ユニット６が接続されたゲーム装置３へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて操作データを無線送信する。コントローラ７には、複数の操作ボタン（操作キー）からなる操作部が設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像するための撮像情報演算部３５（後述）を備えている。撮像情報演算部３５は、モニタ２の周辺に配置された各マーカ８ａおよび８ｂを撮像対象として各マーカ８ａおよび８ｂの画像を撮像する。撮像された画像に関するデータは上記操作データの一部としてゲーム装置３へ送信される。ゲーム装置３は、当該画像に関するデータに基づいた演算処理によってコントローラ７の位置および姿勢に応じた処理を実行することができる。また、コントローラ７は、直線方向の加速度を検出する加速度センサ３７（後述）を備えている。加速度センサ３７によって検出された加速度を示すデータは上記操作データの一部としてゲーム装置３へ送信される。ゲーム装置３は、当該加速度を示すデータに基づいてコントローラ７の動きおよび／または姿勢を算出し、動きおよび／または姿勢に応じた処理を適宜実行することができる。
【００２５】
また、コントローラ７は、ゲーム装置３から通信ユニット６を介して種々のデータを受信する。そして、受信したデータに応じた種々の動作を行う。例えばゲーム装置３からサウンドデータを受信した場合、コントローラ７は、内蔵するスピーカ４９（図６）からサウンドデータに応じた音を出力する。
【００２６】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００２７】
図２において、ゲーム装置３は、各種プログラムを実行する例えばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）１０を備える。ＣＰＵ１０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ１３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ１０には、メモリコントローラ１１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２、メインメモリ１３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）１５が接続される。また、メモリコントローラ１１には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）１６、ビデオＩ／Ｆ１７、外部メモリＩ／Ｆ１８、オーディオＩ／Ｆ１９、およびディスクＩ／Ｆ２０が接続され、それぞれ通信ユニット６、モニタ２、外部メモリカード５、スピーカ２２、およびディスクドライブ２１が接続されている。
【００２８】
ＧＰＵ１２は、ＣＰＵ１０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ１２は、図示しない画像処理専用のメモリやメインメモリ１３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ１２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ１１およびビデオＩ／Ｆ１７を介してモニタ２に出力する。
【００２９】
メインメモリ１３は、ＣＰＵ１０で使用される記憶領域であって、ＣＰＵ１０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ１３は、ＣＰＵ１０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ１３に記憶されたゲームプログラムや各種データ等がＣＰＵ１０によって実行される。
【００３０】
ＤＳＰ１４は、ゲームプログラム実行時にＣＰＵ１０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ１５が接続される。ＡＲＡＭ１５は、ＤＳＰ１４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ１４は、ＡＲＡＭ１５に記憶されたサウンドデータを読み出し、メモリコントローラ１１およびオーディオＩ／Ｆ１９を介してスピーカ２２に出力させる。
【００３１】
メモリコントローラ１１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆ１６〜２０が接続される。コントローラＩ／Ｆ１６は、例えば４つのコントローラＩ／Ｆで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置３とを通信可能に接続する。例えば、通信ユニット６は、上記コネクタと嵌合し、コントローラＩ／Ｆ１６を介してゲーム装置３と接続される。上述したように通信ユニット６は、コントローラ７からの操作データを受信し、コントローラＩ／Ｆ１６を介して当該操作データをＣＰＵ１０へ出力する。また、ＣＰＵ１０において生成されるサウンドデータ等のデータがコントローラ７へ送信される場合、当該データは、コントローラＩ／Ｆ１６を介して通信ユニット６へ出力される。通信ユニット６は、コントローラＩ／Ｆ１６から入力されたデータをコントローラ７へ送信する。なお、他の実施形態においては、ゲーム装置３は、通信ユニット６に代えて、コントローラ７と通信可能な通信モジュールをその内部に設ける構成としてもよい。この場合、通信モジュールが受信した操作データは所定のバスを介してＣＰＵ１０に出力され、コントローラ７へ送信すべきデータは、所定のバスを介して通信モジュールからコントローラ７へ送信される。また、ビデオＩ／Ｆ１７には、モニタ２が接続される。外部メモリＩ／Ｆ１８には、外部メモリカード５が接続され、その外部メモリカード５に設けられたバックアップメモリ等とアクセス可能となる。オーディオＩ／Ｆ１９にはモニタ２に内蔵されるスピーカ２２が接続され、ＤＳＰ１４がＡＲＡＭ１５から読み出したサウンドデータや、ディスクドライブ２１から直接出力されるサウンドデータがスピーカ２２から出力される。ディスクＩ／Ｆ２０には、ディスクドライブ２１が接続される。ディスクドライブ２１は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスやオーディオＩ／Ｆ１９に出力する。
【００３２】
次に、図３〜図６を参照して、コントローラ７について説明する。図３および図４は、コントローラ７の外観構成を示す斜視図である。図３は、コントローラ７の上側後方から見た斜視図であり、図４は、コントローラ７を下側前方から見た斜視図である。
【００３３】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すｚ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ７を用いることによって、それに設けられたボタンを押下すること、および、コントローラ７自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。例えば、プレイヤは、長手方向を軸としてコントローラ７を回転させたり、コントローラ７によって指し示される画面上の位置を変えたりする操作によって、操作対象に対する操作を行うことができる。ここで、「コントローラ７によって指し示される画面上の位置」とは、理想的には、コントローラ７の前端部から上記長手方向に延ばした直線とモニタ２の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置３によって算出することができればよい。以下では、コントローラ７によって指し示される画面上の位置を「（コントローラ７の）指示位置」と呼ぶ。また、コントローラ７（ハウジング３１）の長手方向を、「（コントローラ７の）指示方向」と呼ぶことがある。
【００３４】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字キー３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、およびプラスボタン３２ｇが設けられる。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、ハウジング３１の上面には、遠隔からゲーム装置３本体の電源をオン／オフするための電源ボタン３２ｈが設けられる。ホームボタン３２ｆおよび電源３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源３２ｈを誤って押下することを防止することができる。
【００３５】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ７に他の機器を接続するために利用される。例えば、３６０°に傾倒可能なスティックを備えたサブコントロールユニットをケーブルを介して接続し、当該サブコントロールユニットに対する操作にそって方向入力を行い、同時にコントローラ７に対する操作によって、後述する画面上の所定位置を指示する操作を行うようにしてもよい。そのようなサブコントロールユニットをケーブルを介して接続して利用するとこにより、方向入力を行いながらコントローラ７自体を動かす操作を自由に行うことができる。
【００３６】
ハウジング３１上面の後面側には複数（図３では４つ）のＬＥＤ３４が設けられる。ここで、コントローラ７には、他のコントローラ７と区別するためにコントローラ種別（番号）が付与される。ＬＥＤ３４は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７からゲーム装置３へ操作データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ３４のいずれか１つが点灯する。
【００３７】
また、コントローラ７は撮像情報演算部３５（図５Ｂ）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ８ａおよび８ｂからの赤外光を少なくとも透過する材質で構成される。
【００３８】
ハウジング７１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ７に内蔵されるスピーカ４９（図５Ａ）からの音を外部に放出するための音抜き孔が形成されている。
【００３９】
次に、図５Ａおよび図５Ｂを参照して、コントローラ７の内部構造について説明する。図５Ａおよび図５Ｂは、コントローラ７の内部構造を示す図である。なお、図５Ａは、コントローラ７の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂは、コントローラ７の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂに示す斜視図は、図５Ａに示す基板３０を裏面から見た斜視図となっている。
【００４０】
図５Ａにおいて、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に操作ボタン３２ａ〜３２ｈ、ＬＥＤ３４、加速度センサ３７、アンテナ４５、アンプ４８、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、ｘ軸方向に関してコントローラ７の中心からずれた位置に配置されている。これによって、コントローラ７をｚ軸回りに回転させたときのコントローラ７の動きを算出しやすくなる。また、無線モジュール４４およびアンテナ４５によって、コントローラ７がワイヤレスコントローラとして機能する。
【００４１】
一方、図５Ｂにおいて、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ７の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０（例えばＣＭＯＳイメージセンサやＣＣＤイメージセンサ）、および画像処理回路４１によって構成されおり、それぞれ基板３０の下主面に取り付けられる。
【００４２】
さらに、基板３０の下主面上には、上記マイコン４２、サウンドＩＣ４７、およびバイブレータ５０が設けられている。サウンドＩＣ４７は、基板３０等に形成された配線によってマイコン４２およびアンプ４８と接続される。バイブレータ５０は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ５０が作動することによってコントローラ７に振動が発生するので、コントローラ７を把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ５０は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ５０がコントローラ７の中心よりも端側に配置することによって、バイブレータ５０の振動によりコントローラ７全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５Ａおよび図５Ｂに示す他、コントローラ７は、マイコン４２の基本クロックを生成する水晶振動子等を備えている。
【００４３】
なお、図３〜図５Ｂに示したコントローラ７の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができることは言うまでもない。また、コントローラ７における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ７の指示方向」は、撮像素子４０の撮像方向、具体的には、光入射面に垂直な方向となる。
【００４４】
図６は、コントローラ７の構成を示すブロック図である。コントローラ７は、操作部３２（各操作ボタン）、撮像情報演算部３５、通信部３６、加速度センサ３７、および音声出力部４６を備えている。なお、本実施形態では加速度センサ３７の出力はゲーム処理に用いられないので、コントローラ７は加速度センサ３７を備えていない構成であってもよい。
【００４５】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉに相当し、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示すデータを通信部３６のマイコン４２へ出力する。
【００４６】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ７の動きでも追跡して解析することができる。
【００４７】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、モニタ２の表示画面近傍に配置されるマーカ８ａおよび８ｂは、モニタ２の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ８ａおよび８ｂの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置を算出する。以下、図７を用いて撮像対象の位置の算出方法を説明する。
【００４８】
図７は、撮像画像の一例を示す図である。図７に示す撮像画像Ａ１においては、マーカ８ａの画像８ａ’およびマーカ８ｂの画像８ｂ’が左右に並んでいる。撮像画像が入力されると、画像処理回路４１は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。ここで、所定条件とは、撮像対象の画像（対象画像）を特定するための条件である。所定条件の具体的な内容は、輝度が所定値以上の領域（高輝度領域）であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を特定するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。
【００４９】
対象画像の位置を算出する際、まず、画像処理回路４１は、撮像画像の領域から上記高輝度領域を対象画像の候補として特定する。撮像画像の画像データにおいて対象画像は高輝度領域として現れるからである。次に、画像処理回路４１は、特定された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する判定処理を行う。撮像画像には、対象画像である２つのマーカ８ａおよび８ｂの画像８ａ’および８ｂ’の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれている場合がある。この場合、マーカの画像８ａ’および８ｂ’以外の画像も高輝度領域として現れてしまう。上記の判定処理は、対象画像であるマーカの画像８ａ’および８ｂ’とそれ以外の画像とを区別し、対象画像を正確に特定するための処理である。具体的には、当該判定処理においては、特定された高輝度領域が予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
【００５０】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路４１は当該高輝度領域の位置（具体的には、当該高輝度領域の重心位置）を算出する。なお、高輝度領域の位置は撮像素子４０の解像度よりも詳細なスケールで算出することが可能である。例えば、撮像素子４０によって撮像された撮像画像の解像度が１２６×９６である場合でも、高輝度領域の位置を１０２４×７６８のスケールで算出することが可能である。このとき、高輝度領域の位置の座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。なお、撮像画像における位置は、図７に示すように、撮像画像の左上を原点とし、下向きをＹ軸正方向とし、右向きをＸ軸正方向とする座標系（ＸＹ座標系）で表現されるものとする。
【００５１】
以上のようにして、画像処理回路４１は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。画像処理回路４１は、算出された座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ７自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ７の向きや位置を算出することができる。
【００５２】
図６の説明に戻り、加速度センサ３７は、コントローラ７の加速度（重力加速度を含む）を検出する、すなわち、コントローラ７に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度（直線加速度）をそれぞれ検出する。例えば、３軸または２軸の加速度センサ３７は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。
【００５３】
本実施形態では、加速度センサ３７は、コントローラ７を基準とした上下方向（図３に示すｙ軸方向）、左右方向（図３に示すｘ軸方向）および前後方向（図３に示すｚ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ７を基準に設定されるｘｙｚ座標系における３次元のベクトルとして表される。加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、本実施形態では、コントローラ７の通信部３６は、逐次（例えば０．５ｍｓに１回）に加速度データをゲーム装置３へ出力する。ゲーム装置３は、この加速度データに基づいてコントローラ７の移動方向や傾き（姿勢）を算出することができる。なお、加速度センサ３７は、各軸に沿った直線成分の加速度を検出するものであるので、ゲーム装置３は、コントローラ７の移動方向や傾きを直接検出することはできない。このため、加速度センサ３７を搭載したデバイスの移動方向や傾きは、加速度センサの各軸毎に検出される加速度に所定の演算処理を施すことによって算出される。
【００５４】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータを無線送信する無線モジュール４４を制御する。
【００５５】
操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。ここで、通信部３６から通信ユニット６への無線送信は所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。マイコン４２は、通信ユニット６への送信タイミングが到来すると、メモリ４３に格納されているデータを操作データとして無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ７から送信される。微弱電波信号はゲーム装置３側の通信ユニット６で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
【００５６】
また、ゲーム装置３は、ゲーム状況に応じた適宜のタイミングでサウンドデータをコントローラ７に対して送信する。ゲーム装置３から送信されてきたサウンドデータはアンテナ４５によって受信される。マイコン４２は、アンテナ４５によって受信されたサウンドデータを無線モジュール４４を介して取得する。さらに、取得したサウンドデータを音声出力部４６へ出力する。
【００５７】
音声出力部４６は、サウンドＩＣ４７、アンプ４８、スピーカ４９を備えている。サウンドＩＣ４７は、マイコン４２からサウンドデータが入力されると、サウンドデータに所定の処理を行ってアンプを介してスピーカ４９に音声信号を出力する。これによって、ゲーム装置３は、コントローラ７側のスピーカ４９からゲームの効果音等の音声を出力することができる。
【００５８】
上記コントローラ７を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ７の姿勢を変化させたり、コントローラ７自身の位置を動かしたり、コントローラ７を回転させたりするというゲーム操作を行うことができる。
【００５９】
図８は、コントローラ７を用いてゲーム操作するときの状態を概説する図解図である。ゲームシステム１においてコントローラ７を用いてゲームをプレイする際、プレイヤは、図８に示すように一方の手でコントローラ７を把持する。本実施形態では、プレイヤは、把持したコントローラ７でモニタ２の画面上の任意の位置を指定する（コントローラ７の指示位置を所望の位置に向ける）ことによってゲーム操作を行う。
【００６０】
以下、ゲーム装置３におけるコントローラ７の指示位置とコントローラ７の傾きの検出方法の詳細を説明する。
【００６１】
（指示位置の算出方法）
ゲーム装置３は、受信した操作データに含まれるマーカ座標のデータを用いて、上記指示位置と、コントローラ７から各マーカ８ａおよび８ｂまでの距離を算出することができる。図９は、コントローラ７の位置および／または向きを変化させた場合における撮像画像の変化を示す図である。図９は、コントローラの状態と、その状態にあるときに得られる撮像画像との対応を示している。図９において、コントローラ７が状態Ａにあるときの撮像画像を撮像画像Ｉ１とする。撮像画像Ｉ１では、対象画像である各マーカ８ａおよび８ｂの画像８ａ’および８ｂ’は、撮像画像Ｉ１の中央付近に位置している。状態Ａは、コントローラ７がマーカ８ａとマーカ８ｂとの中間の位置を指し示している状態である。
【００６２】
図９に示す状態Ｂは、状態Ａを基準としてコントローラ７を右方向（Ｘ軸正方向）に平行移動させた状態である。この状態Ｂにおいては、撮像情報演算部３５によって撮像画像Ｉ３が得られる。撮像画像Ｉ３においては、対象画像８ａ’および８ｂ’は、撮像画像Ｉ１を基準として左方向（ｘ軸負方向）に平行移動している。なお、状態Ｂは、コントローラ７の指示方向を状態Ａから右方向に向けた状態である。ここで、コントローラ７を右方向に平行移動させる場合だけでなく、コントローラ７をＹ軸周りに回転させることによっても、コントローラ７の指示方向を右方向に向けることができる。したがって、コントローラ７をＹ軸周りに回転させる場合にも撮像画像Ｉ３と同様の撮像画像が得られる。以上より、コントローラ７の指示方向を右方向に向けるようにコントローラ７を移動（回転）させた場合、撮像画像Ｉ３と同様の撮像画像が得られる、すなわち、対象画像８ａ’および８ｂ’が平行移動した画像が得られる。したがって、撮像画像内における対象画像の位置（後述する例では、画像８ａ’と画像８ｂ’の中点の位置）を検出することによって、コントローラ７が指し示す方向を知ることができる。
【００６３】
図９に示す状態Ｃは、状態Ａを基準としてコントローラ７を各マーカ８ａおよび８ｂから遠ざけた（すなわち、後方向に平行移動させた）状態である。この状態Ｃにおいては、撮像情報演算部３５によって撮像画像Ｉ４が得られる。撮像画像Ｉ４においては、画像８ａ’と画像８ｂ’との距離が、撮像画像Ｉ１よりも短くなっている。したがって、撮像画像内における２つのマーカ画像の間の長さ（画像８ａ’と画像８ｂ’との間の長さ。２つの対象画像を一体と見れば、対象画像の大きさ）を検出することによって、コントローラ７と各マーカ８ａおよび８ｂとの距離を知ることができる。なお、他の実施形態において、コントローラとマーカとの距離を知る必要の無い場合や、対象画像の大きさによって距離を算出可能な場合においては、配置されるマーカは１つであってもよい。
【００６４】
（傾きの算出方法）
ゲーム装置３は、受信した操作データに含まれる加速度データを用いて、コントローラ７（加速度センサ３７）の傾きを算出することができる。図１０は、コントローラ７の傾き（Ｚ軸周りの傾き）を変化させた場合における加速度データの変化を示す図である。図１０は、コントローラの状態と、その状態にあるときに得られる加速度データのＸ軸値，Ｙ軸値との対応を示している。図１０において、コントローラ７が状態Ａにあるときは、重力の影響により、加速度データのＸ軸値は０、Ｙ軸値は−１となる。状態Ａは、コントローラ７のＹ軸の正方向が鉛直上方向となるように、プレイヤがコントローラ７を把持しているときの状態である。
【００６５】
図１０に示す状態Ｂは、状態Ａを基準としてプレイヤがコントローラ７をＺ軸周りに角度θａだけ右回転（Ｚ軸正方向を向いて時計回りに回転）させた状態である。この状態Ｂにおいては、加速度データのＸ軸値およびＹ軸値が示すベクトルは、状態Ａのときと比較してＸＹ座標平面上で角度θａだけ反時計回りに回転している。したがって、加速度データのＸ軸値およびＹ軸値が示すベクトルの向きを検出することによって、コントローラ７のＺ軸周りの傾きを知ることができる。
【００６６】
図１０に示す状態Ｃは、状態Ａを基準としてプレイヤがコントローラ７をＺ軸周りに角度θｂだけ左回転（Ｚ軸正方向を向いて反時計回りに回転）させた状態である。この状態Ｃにおいては、加速度データのＸ軸値およびＹ軸値が示すベクトルは、状態Ａのときと比較してＸＹ座標平面上で角度θｂだけ時計回りに回転している。したがって、加速度データのＸ軸値およびＹ軸値が示すベクトルの向きを検出することによって、コントローラ７のＺ軸周りの傾きを知ることができる。
【００６７】
なお、図示は省略するが、状態Ａを基準としてプレイヤがコントローラ７をＺ軸周りに９０°以上左回転（または右回転）させた場合にも、加速度データのＸ軸値およびＹ軸値に基づいて、その回転角度を知ることができる。したがって、加速度データのＸ軸値およびＹ軸値を参照することにより、状態Ａを基準としたときのコントローラ７のＺ軸周りの回転角度を−１８０°〜１８０°の範囲、すなわち全周にわたって検出することができる。
【００６８】
なお、図１０において、加速度データのＸ軸値の大きさだけを参照することによっても、状態Ａを基準としたコントローラ７のＺ軸周りの回転角度を検出することが可能である。ただしこの場合には、状態Ａを基準としてプレイヤがコントローラ７をＺ軸周りに（９０−ａ）°回転させたときと（９０＋ａ）°回転させたときとで加速度データのＸ軸値が同じ値になるため、加速度データのＸ軸値の大きさだけを参照することによって検出可能なコントローラ７のＺ軸周りの回転角度は−９０°〜９０°の範囲に限られる。
【００６９】
なお、ここでは、コントローラ７のＺ軸周りの傾きの検出方法を説明したが、コントローラ７のＸ軸周りの傾きやＹ軸周りの傾きについても同様にして検出することができる。例えば、コントローラ７のＸ軸周りの傾きは、加速度データのＹ軸値およびＺ軸値（もしくはＹ軸値とＺ軸値のいずれか一方）を参照して検出することができる。このようにしてコントローラ７の少なくとも２軸周りの傾きを検出することによって、コントローラ７の三次元的な傾きを検出することができる。
【００７０】
以下、上記ゲームシステム１によって実現される種々のゲームを説明する。
【００７１】
（実施例１）
図１１は、仮想ゲーム空間において棒状のオブジェクトを壁や障害物にぶつけることなくゴールまで導くゲームをプレイ中のゲーム画面例およびプレイヤによるコントローラ７の操作例を示している。
【００７２】
オブジェクトＯｂ１は、コントローラ７による画面上の指示位置（Ｐａ，Ｐｂ，Ｐｃ）に表示される。コントローラ７による画面上の指示位置は、コントローラ７に設けられた撮像情報演算部３５において算出された、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置に基づいて決定される。
【００７３】
また、オブジェクトＯｂ１の傾き（基準姿勢からの回転角度θ１，θ２，θ３）は、コントローラ７のＺ軸周りの傾き（基準姿勢からの回転角度）と同じ傾きとなる。コントローラ７のＺ軸周りの傾きは、コントローラ７に設けられた加速度センサ３７のＸ軸出力値およびＹ軸出力値に基づいて判定される。
【００７４】
このように、プレイヤは、コントローラ７を動かす（移動させたり傾けたりする）だけでオブジェクトＯｂ１の位置と姿勢の両方を同時に制御することができる。
【００７５】
以下、図１１のフローチャートを参照して、本実施例におけるゲームプログラムに基づくゲーム装置３のＣＰＵ１０の処理の流れを説明する。
【００７６】
まずステップＳ１０で、ＣＰＵ１０は、操作データを取得する。この操作データには少なくとも、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置と、加速度センサ３７のＸ軸出力値およびＹ軸出力値が含まれている。
【００７７】
ステップＳ１２では、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置に基づいて指示位置（プレイヤによって指示された画面上の位置）を算出する。指示位置の算出方法は前述の通りである（図９）。
【００７８】
ステップＳ１４では、ステップＳ１２で算出された指示位置に基づいて、仮想ゲーム空間におけるオブジェクトの位置を決定する。このとき、画面上でのオブジェクトの表示位置と、プレイヤが指示した画面上の位置とが一致するように、オブジェクトの位置を決定するのが好ましい。
【００７９】
ステップＳ１６では、加速度センサ３７のＸ軸出力値およびＹ軸出力値に基づいて、コントローラ７の姿勢（傾き）を算出する。コントローラ７の傾きの算出方法は前述の通りである（図１０）。
【００８０】
ステップＳ１８では、ステップＳ１６で算出されたコントローラ７の姿勢に基づいて、仮想ゲーム空間におけるオブジェクトの姿勢を決定する。このとき、コントローラ７の基準位置からの回転角度と、オブジェクトの基準位置からの回転角度とが一致するように、オブジェクトの姿勢を決定するのが好ましい。なお、他の実施形態においては、コントローラ７の基準位置からの回転角度の算出を行わず、加速度センサ３７のＸ軸出力値およびＹ軸出力値で定義されるベクトルをコントローラ７の姿勢として扱い、当該ベクトル方向に対して直接所定の変換処理を行うことによって、オブジェクトの姿勢を示す方向を決定するようにしてもよい。
【００８１】
ステップＳ２０では、ステップＳ１４で決定された位置とステップＳ１８で決定された姿勢に基づいて、オブジェクトを含むゲーム画像を生成し、モニタ２へ出力する。
【００８２】
ステップＳ２２では、ゲームが終了したかどうかを判断し、ゲームが続行している場合には処理はステップＳ１０に戻り、ゲームが終了するまでステップＳ１０〜ステップＳ２０の処理を繰り返す。ゲームが終了すると、ＣＰＵ３０はゲーム処理を終了する。
【００８３】
（実施例２）
図１３は、仮想ゲーム空間において飛行機のオブジェクトを操縦して敵の飛行機を撃墜するゲームをプレイ中のゲーム画面例およびプレイヤによるコントローラ７の操作例を示している。
【００８４】
実施例１と同様に、オブジェクトＯｂ２は、コントローラ７による画面上の指示位置に表示され、その指示位置は、コントローラ７に設けられた撮像情報演算部３５において算出された、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置に基づいて決定される。
【００８５】
また、オブジェクトＯｂ２の傾き（機体の中心軸周りの傾き）は、コントローラ７のＺ軸周りの傾き（基準姿勢からの回転角度）と同じ傾きとなる。コントローラ７のＺ軸周りの傾きは、実施例１と同様に、コントローラ７に設けられた加速度センサ３７のＸ軸出力値およびＹ軸出力値に基づいて判定される。
【００８６】
また、本実施例では、図１４に示すように、コントローラ７のＸ軸周りの傾きに応じて、機首が上下動する方向にオブジェクトＯｂ２の傾きが変化する。コントローラ７のＸ軸周りの傾き（基準姿勢からの回転角度）は、コントローラ７に設けられた加速度センサ３７のＹ軸出力値およびＺ軸出力値に基づいて判定される。
【００８７】
さらに、本実施例では、図１５に示すように、プレイヤは、コントローラ７を画面に近付けたり遠ざけたりすることによって、仮想ゲーム空間におけるオブジェクトＯｂ２の画面奥行方向の位置を変化させることができる。コントローラ７と画面の間の距離の変化は、図９に示した通り、撮像画像内における２つの撮像対象（マーカ８ａおよび８ｂ）の間の距離の変化から検出することができる。
【００８８】
以上のように、本実施例のゲームでは、プレイヤはコントローラ７を動かすことによって、仮想ゲーム空間におけるオブジェクトＯｂ２の位置を３次元的に自由に変化させることができると同時に、オブジェクトＯｂ２の姿勢も３次元的に自由に変化させることができる。よって、例えば、自機の右前方にいる敵からのミサイルを画面右手前方向に移動してかわしながら、同時に自機の上前方の敵を射撃するというような、非常に複雑な移動制御も容易に可能となる。
【００８９】
（実施例３）
図１６は、仮想ゲーム空間において一人称視点で射撃を行うゲームをプレイ中のゲーム画面例およびプレイヤによるコントローラ７の操作例を示している。
【００９０】
本実施例では、図１６に示すように、コントローラ７のＸ軸周りの傾きに応じて、仮想ゲーム空間に設置された仮想カメラＶＣの向きが変化する。コントローラ７のＸ軸周りの傾き（基準姿勢からの回転角度）は、実施例２と同様に、コントローラ７に設けられた加速度センサ３７のＹ軸出力値およびＺ軸出力値に基づいて判定される。
【００９１】
また、本実施例では、コントローラ７による仮想ゲーム空間内の指示位置に、照準マークＡＣが配置される。この「仮想ゲーム空間内の指示位置」は、「画面上の指示位置」に対応する仮想ゲーム空間内の位置のことである。具体的には、「画面上の指示位置」に表示されている仮想ゲーム空間内のオブジェクト（木や風船）の表面位置となる。したがって、仮に「画面上の指示位置」が同一であったとしても、仮想カメラＶＣの向きが変化すると、それに応じて「仮想ゲーム空間内の指示位置」は変化する。
【００９２】
プレイヤは、コントローラ７を動かすことによって仮想ゲーム空間内の所望のオブジェクトに照準マークを合わせ、コントローラ７に設けられた操作ボタンを押すことによって当該オブジェクトに向かって銃を発砲することができる。
【００９３】
図１７Ａは、プレイヤが照準マークＡＣを木のオブジェクトに合わせているときのゲーム画面例であり、図１７Ｂは、プレイヤが照準マークＡＣを風船のオブジェクトに合わせているときのゲーム画面例である。なお、照準マークＡＣの大きさが異なるのは、仮想ゲーム空間における仮想カメラＶＣから照準マークＡＣまでの距離が変化しているからである。
【００９４】
以下、図１８のフローチャートを参照して、本実施例におけるゲームプログラムに基づくゲーム装置３のＣＰＵ１０の処理の流れを説明する。なお、図１８のフローチャートでは、プレイヤの指示に基づく銃の発砲処理については省略している。
【００９５】
まずステップＳ３０で、ＣＰＵ１０は、操作データを取得する。この操作データには少なくとも、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置と、加速度センサ３７のＹ軸出力値およびＺ軸出力値が含まれている。
【００９６】
ステップＳ３２では、加速度センサ３７のＹ軸出力値およびＺ軸出力値に基づいて、コントローラ７の姿勢（傾き）を算出する。コントローラ７の傾きの算出方法は前述の通りである。
【００９７】
ステップＳ３４では、ステップＳ３２で算出されたコントローラ７の姿勢に基づいて、仮想ゲーム空間における仮想カメラＶＣの姿勢を決定する。
【００９８】
ステップＳ３６では、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置と、ステップＳ３４で決定された仮想カメラＶＣの姿勢とに基づいて、仮想ゲーム空間における指示位置（コントローラ７により指示された画面上の位置に対応する仮想ゲーム空間内の位置）を算出する。仮想ゲーム空間における指示位置の算出方法は前述の通りである（図１６）。
【００９９】
ステップＳ３８では、ステップＳ３６で算出された仮想ゲーム空間における指示位置に基づいて、仮想ゲーム空間における照準マークＡＣの位置を決定する。
【０１００】
ステップＳ４０では、ステップＳ３４で決定された仮想カメラＶＣの姿勢と、ステップＳ３８で決定された照準マークＡＣの位置とに基づいて、照準マークＡＣを含むゲーム画像を生成し、モニタ２へ出力する。
【０１０１】
ステップＳ４２では、ゲームが終了したかどうかを判断し、ゲームが続行している場合には処理はステップＳ３０に戻り、ゲームが終了するまでステップＳ３０〜ステップＳ４０の処理を繰り返す。ゲームが終了すると、ＣＰＵ３０はゲーム処理を終了する。
【０１０２】
以上のように、本実施例によれば、プレイヤは、コントローラ７を動かすことによって、画面に表示されている仮想ゲーム空間内の任意のオブジェクトに照準マークを合わせられ、しかも、仮想カメＶＣの向きも同時に制御できるので、最初は画面に表示されていなかったオブジェクト（例えば図１６の風船）を画面に表示させた上で、そのオブジェクトに照準マークを合わせることができる。よって、画面に表示されている範囲に限らず、コントローラ７によって仮想ゲーム空間内の広い範囲の中から所望の位置を指示することができる。
【０１０３】
なお、実施例２と同様に、コントローラ７と画面の間の距離の変化に応じて仮想カメラＶＣの位置や画角（ズーム倍率）を変化させてもよい。
【０１０４】
（実施例４）
図１９Ａおよび図１９Ｂは、仮想ゲーム空間に設置された２つのドアのドアノブうち、プレイヤが所望のドアノブを回して、そのドアを開けるゲームのゲーム画面例およびプレイヤによるコントローラ７の操作例を示している。
【０１０５】
上述の実施例１〜３では、コントローラ７の指示位置を変化させることで、仮想ゲーム空間におけるオブジェクトの位置や照準マークの位置を変化させている。一方、本実施例４では、２つのオブジェクトＯｂ３，Ｏｂ４のうち、いずれのオブジェクトを操作対象とするかをコントローラ７によって指示する。
【０１０６】
図１９Ａは、プレイヤがまだいずれのドアノブも指示していない状態（つまりコントローラ７の指示位置がいずれのドアノブの表示位置にも一致していない状態）のゲーム画面を示している。この状態では、たとえプレイヤがコントローラ７をＺ軸周りに回転させたとしても、いずれのドアノブも回転せず、当然ながらドアは開かない。
【０１０７】
図１９Ｂは、プレイヤが右側のドアノブを指示しつつ（すなわちコントローラ７の指示位置を右側のドアノブの表示位置に一致させつつ）、コントローラ７をＺ軸周りに回転させたときのゲーム画面を示している。この場合には、コントローラ７のＺ軸周りの回転に伴って右側のドアノブが回転し、右側のドアが開く。
【０１０８】
以上のように、本実施例によれば、プレイヤは、コントローラ７を動かすことによって、仮想ゲーム空間内の複数のオブジェクトの中から所望のオブジェクトを操作対象オブジェクトとして選択する操作と、この操作対象オブジェクトの制御とを、容易に行うことができる。
【図面の簡単な説明】
【０１０９】
【図１】本発明の一実施形態に係るゲーム装置を含むゲームシステムの外観図
【図２】ゲーム装置３の機能ブロック図
【図３】コントローラ７の上側後方から見た斜視図
【図４】コントローラ７を下側前方から見た斜視図
【図５Ａ】コントローラ７の内部構造を示す図
【図５Ｂ】コントローラ７の内部構造を示す図
【図６】コントローラ７の構成を示すブロック図
【図７】対象画像を含む撮像画像の一例を示す図
【図８】コントローラ７を用いてゲーム操作を行うときの状態を概説する図解図
【図９】コントローラ７の位置および／または向きを変化させた場合における撮像画像の変化を示す図
【図１０】コントローラ７のＺ軸周りの傾きを変化させた場合における加速度データのＸ軸値およびＹ軸値の変化を示す図
【図１１】実施例１におけるプレイヤの操作とオブジェクトの位置および姿勢との対応関係を示す図
【図１２】実施例１におけるゲーム処理の流れを示すフローチャート
【図１３】実施例２におけるプレイヤの操作とオブジェクトの位置および姿勢との対応関係を示す図
【図１４】実施例２におけるプレイヤの操作とオブジェクトの姿勢との対応関係を示す図
【図１５】実施例２におけるプレイヤの操作とオブジェクトの位置との対応関係を示す図
【図１６】実施例３におけるプレイヤの操作と仮想カメラの向きとの対応関係を示す図
【図１７Ａ】実施例３におけるゲーム画像例
【図１７Ｂ】実施例３における他のゲーム画像例
【図１８】実施例３におけるゲーム処理の流れを示すフローチャート
【図１９Ａ】実施例４における操作対象オブジェクトが選択されていない状態のゲーム画像例
【図１９Ｂ】実施例４における操作対象オブジェクトが選択されている状態のゲーム画像例
【符号の説明】
【０１１０】
１  ゲームシステム
２  モニタ
３  ゲーム装置
４  光ディスク
５  外部メモリカード
６  通信ユニット
７  コントローラ
８ａ，８ｂ  マーカ
３５  撮像情報演算部
３５ａ  光入射面
３７  加速度センサ
３８  赤外線フィルタ
３９  レンズ
４０  撮像素子
４１  画像処理回路
【図１】
2007301048.tif 000003
【図２】
2007301048.tif 000004
【図３】
2007301048.tif 000005
【図４】
2007301048.tif 000006
【図５Ａ】
2007301048.tif 000007
【図５Ｂ】
2007301048.tif 000008
【図６】
2007301048.tif 000009
【図７】
2007301048.tif 000010
【図８】
2007301048.tif 000011
【図９】
2007301048.tif 000012
【図１０】
2007301048.tif 000013
【図１１】
2007301048.tif 000014
【図１２】
2007301048.tif 000015
【図１３】
2007301048.tif 000016
【図１４】
2007301048.tif 000017
【図１５】
2007301048.tif 000018
【図１６】
2007301048.tif 000019
【図１７Ａ】
2007301048.tif 000020
【図１７Ｂ】
2007301048.tif 000021
【図１８】
2007301048.tif 000022
【図１９Ａ】
2007301048.tif 000023
【図１９Ｂ】
2007301048.tif 000024