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