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