(57)【要約】  【構成】ポインティング装置１０は、モニタ３４の表示面の近傍に所定の間隔で配置された撮像対象としてのたとえば２つのマーカ３４０ｍおよび３４０ｎを撮像することによって表示面上の位置を指示するコントローラ２２を含む。表示面の幅とマーカ間隔とが取得されて、コントローラ２２とモニタ３４との適正距離が決定される。また、コントローラ２２とモニタ３４との現在距離が算出される。現在距離と適正距離との関係が、画像表示や音出力などによって報知される。たとえば適正距離を示す画像と現在距離に連動してサイズの変化する調整画像とがモニタ３４に表示される。  【効果】現在距離が適正かどうかを知らせることができ、使用環境に応じた最適な設定を行うことができる。【選択図】図１
2008125666.tif 000002
【特許請求の範囲】
【請求項１】
既知の撮像対象を撮像するための撮像手段を備える入力装置から、当該撮像手段によって得られる撮像画像のデータまたは当該データに所定の演算を行ったデータを入力データとして取得し、当該入力データを用いて情報処理を行って表示装置へ出力を行うポインティング装置のコンピュータで実行される調整プログラムであって、
前記表示装置の表示面の最大幅を取得する表示面幅取得ステップ、
前記表示面幅取得ステップで取得された前記表示面の最大幅に応じて前記入力装置と前記表示装置との適正距離を決定する適正距離決定ステップ、
前記入力データに基づいて前記入力装置から前記撮像対象までの現在距離を算出する現在距離算出ステップ、および
前記適正距離と前記現在距離の関係に応じた報知を行う報知ステップを前記コンピュータに実行させる、ポインティング装置の調整プログラム。
【請求項２】
前記報知ステップは、前記現在距離と前記適正距離との差分に応じた画像の表示出力、音声や効果音の音出力または前記入力装置の振動によって前記報知を行う、請求項１に記載のポインティング装置の調整プログラム。
【請求項３】
前記報知ステップは、所定の大きさを有する基準画像と、前記現在距離に連動して大きさが変化し、かつ前記現在距離が前記適正距離と同じ距離になったとき前記基準画像と同じ大きさとなる調整画像とを前記表示装置に表示することによって前記報知を行う、請求項１に記載のポインティング装置の調整プログラム。
【請求項４】
前記既知の撮像対象は、第１のスケールで計測される所定距離を隔てて配置される２つのマーカであり、かつ、前記２つのマーカは前記表示装置の表示面の所定の１辺の近傍に、当該所定の１辺に対して平行に配置されるものであり、
ユーザによって入力された前記所定距離または予め記憶されている前記所定距離を取得する距離取得ステップを前記コンピュータにさらに実行させ、
前記表示面幅取得ステップは、
ユーザの入力に応じて前記表示面に表示された画像で前記２つのマーカの配置方向の幅を変化させることによって、第２のスケールで前記２つのマーカ間の距離を測定する目印距離測定ステップ、および
前記距離取得ステップで取得された前記所定距離と前記目印距離測定ステップによって測定される前記マーカ間の距離との比率および前記第２のスケールでの前記表示面の最大幅に基づいて前記第１のスケールでの前記表示面の最大幅を算出する表示面幅算出ステップを含む、請求項１に記載のポインティング装置の調整プログラム。
【請求項５】
前記既知の撮像対象は、第１のスケールで計測される所定距離を隔てて配置される２つのマーカであり、かつ、前記２つのマーカは前記表示装置の表示面の所定の１辺の近傍に、当該所定の１辺に対して平行に配置されるものであり、
ユーザによって入力された前記所定距離または予め記憶されている前記所定距離を取得する距離取得ステップを前記コンピュータにさらに実行させ、
前記表示面幅取得ステップは、
ユーザの入力に応じて前記表示面に表示された画像で前記２つのマーカの配置方向の幅を変化させることによって、第２のスケールで前記２つのマーカ間の距離を測定する目印距離測定ステップ、および
前記目印距離測定ステップで測定された前記マーカ間の距離と前記第２のスケールでの前記表示面の最大幅との比率および前記距離取得ステップで取得された前記所定距離に基づいて前記第１のスケールでの前記表示面の最大幅を算出する表示面幅算出ステップを含む、請求項１に記載のポインティング装置の調整プログラム。
【請求項６】
前記現在距離算出ステップは、前記撮像手段によって得られる前記撮像画像上の前記２つのマーカ間の距離を用いて前記現在距離を算出する、請求項４または請求項５に記載のポインティング装置の調整プログラム。
【請求項７】
前記表示面幅取得ステップは、ユーザによって入力された前記表示装置の表示面の最大幅を取得する表示面幅入力ステップを含む、請求項１に記載のポインティング装置の調整プログラム。
【請求項８】
既知の撮像対象を撮像するための撮像手段を備える入力装置から、当該撮像手段によって得られる撮像画像のデータまたは当該データに所定の演算を行ったデータを入力データとして取得し、当該入力データを用いて情報処理を行って表示装置へ出力を行うポインティング装置であって、
前記表示装置の表示面の最大幅を取得する表示面幅取得手段、
前記表示面幅取得手段で取得された前記表示面の最大幅に応じて前記入力装置と前記表示装置との適正距離を決定する適正距離決定手段、
前記入力データに基づいて前記入力装置から前記撮像対象までの現在距離を算出する現在距離算出手段、および
前記適正距離と前記現在距離の関係に応じた報知を行う報知手段を備える、ポインティング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はポインティング装置の調整プログラムおよびポインティング装置に関し、特にたとえば、既知の撮像対象を撮像するための撮像手段を備える入力装置から取得した入力データを用いて情報処理を行って表示装置へ出力を行う、ポインティング装置の調整プログラムおよびポインティング装置に関する。
【背景技術】
【０００２】
従来のこの種のポインティング装置の一例が特許文献１に開示される。この特許文献１の射撃ゲーム装置によれば、一対の発光素子から交互に発光する光を、銃口に設けられた受光素子で交互に順次受信し、受光素子は画面からの距離と各発光素子からの光の入射角等複数の検出信号を出力する。これら複数の検出信号から第１の演算回路は照準座標を算出する。一方、第２の演算回路は、画面内における標的画像の座標を常時認識しており、スイッチが作動したとき、標的画像の座標と照準座標とがほぼ一致したどうかを判断する。
【特許文献１】特開平８−３８７４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この特許文献１の技術は、アーケードゲーム機で多く見られる技術であり、アーケードゲーム機の場合には、表示装置や発光素子等の配置位置は設計段階で予め固定することができる。また、受光素子を備えたゲーム用の銃（銃コントローラ）もアーケードゲーム機に有線接続されるため、その可動範囲は予め限定される。そのため、銃コントローラで表示装置の右端を狙った際には表示装置の右端の座標が照準座標となり、逆に、表示装置の左端を狙った際には表示装置の左端の座標が照準座標となるように、予め設定しておけば、すべてのアーケードゲーム機で或る程度違和感無くゲームを進めることができる。
【０００４】
しかし、家庭用ゲーム機で上述のようなポインティング装置を実現する際には、テレビ画面のサイズ、ディスプレイと銃コントローラとの距離、発光素子の配置間隔が各家庭の状況（使用環境）によって異なる。このため、固定の環境設定によって対応関係を決定してしまうと、環境設定が適切である場合もあれば、環境設定が不適切である場合もある。後者の場合には、プレイヤが指示した方向（画面上の位置）とは大きくずれた方向を指示してしまうという問題が発生する。
【０００５】
それゆえに、この発明の主たる目的は、新規な、ポインティング装置の調整プログラムおよびポインティング装置を提供することである。
【０００６】
また、この発明の他の目的は、使用環境に応じた最適な設定を行うことができる、ポインティング装置の調整プログラムおよびポインティング装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００８】
第１の発明は、既知の撮像対象を撮像するための撮像手段を備える入力装置から、当該撮像手段によって得られる撮像画像のデータまたは当該データに所定の演算を行ったデータを入力データとして取得し、当該入力データを用いて情報処理を行って表示装置へ出力を行うポインティング装置のコンピュータで実行される調整プログラムである。調整プログラムは、表示面幅取得ステップ、適正距離決定ステップ、現在距離算出ステップ、および報知ステップをコンピュータに実行させる。表示面幅取得ステップは、表示装置の表示面の最大幅を取得する。適正距離決定ステップは、表示面幅取得ステップで取得された表示面の最大幅に応じて入力装置と表示装置との適正距離を決定する。現在距離算出ステップは、入力データに基づいて入力装置から撮像対象までの現在距離を算出する。報知ステップは、適正距離と現在距離の関係に応じた報知を行う。
【０００９】
第１の発明では、調整プログラムはポインティング装置（１２）のコンピュータ（３６）において実行される。ポインティング装置では、既知の撮像対象（３４０ｍ、３４０ｎ）を入力装置（２２）の撮像手段（９８）で撮像することによって、入力を取得することができる。撮像対象のたとえば大きさが予め決められており、つまり、既知にされる。さらに、或る実施例では、撮像対象としての２つのマーカ間の距離が既知にされる。ポインティング装置では、撮像手段によって得られる撮像画像のデータまたは当該データに所定の演算を行ったデータが入力データとして取得され、当該入力データを用いて情報処理が実行されて、その結果を表示装置（３４）に出力する。調整プログラムは、このようなポインティング装置のコンピュータに、入力装置と撮像対象または表示装置との距離を適正な距離に調整するための処理を実行させる。具体的には、表示面幅取得ステップ（Ｓ３、Ｓ３´、Ｓ１０５）では、表示装置の表示面の最大幅（ディスプレイ幅Ｄ）が取得される。表示面の最大幅は、たとえば、ユーザによる直接入力、または、ユーザによる表示装置のサイズの入力によって取得され得る。あるいは、撮像対象としての２つのマーカ間の実距離と画像上の距離を取得することによって、表示面の最大幅は算出され得る。適正距離決定ステップ（Ｓ５）では、表示面の最大幅に応じて入力装置と撮像対象または表示装置との適正距離が決定する。後述されるように、画面端への理想的なポインティングの際の位置関係から得られる角度θ（数２で示される）と、撮像対象の認識の限界となる位置関係から得られる角度β（数３で示される）とが等しくなるときの関係式に従って距離Ｌを算出することによって、適正距離を得ることができる。たとえば、既存の表示装置の表示面の最大幅に対応付けられた適正距離を示すテーブルを予め記憶しておき、このテーブルを参照することによって、適正距離は取得され得る。あるいは、上記適正距離を算出する関係式に従って、適正距離は算出されてもよい。現在距離算出ステップ（Ｓ１１）では、入力データに基づいて入力装置と撮像対象との現在距離（Ｌｃ）が算出される。後述の実施例では、撮像対象が既知であり、かつ、撮像画像の幅および撮像手段の視野角が決まっていることから、現在距離は、撮像画像における撮像対象の距離を用いて数４および数５に従って算出される。報知ステップ（Ｓ１３）では、適正距離と現在距離との関係に応じた報知を行う。現在距離が適正距離であるのか否かが分かるような報知が、画像表示、音出力、振動または光出力などの方法で行われる。
【００１０】
第１の発明によれば、表示装置の表示面の最大幅に応じた適正距離を決定することができ、適正距離と現在距離に応じた報知を行うことができるので、現在距離が適正距離であるのか否かをユーザに知らせることができる。
【００１１】
第２の発明は、報知ステップは、現在距離と適正距離との差分に応じた画像の表示出力、音声や効果音の音出力または前記入力装置の振動によって報知を行う、第１の発明に従属するポインティング装置の調整プログラムである。
【００１２】
第２の発明では、現在距離と適正距離との差分に応じた画像が表示装置に表示され、または、上記差分に応じた音声や効果音のような音が音出力装置（３４ａ、１０４）から出力され、あるいは、上記差分に応じて入力装置の振動装置（１０６）が振動されるので、現在距離と適正距離との差を容易に知らせることができ、したがって、適正距離への調整が容易に行える。
【００１３】
第３の発明は、報知ステップは、所定の大きさを有する基準画像と、現在距離に連動して大きさが変化し、かつ現在距離が適正距離と同じ距離になったとき基準画像と同じ大きさとなる調整画像とを表示装置に表示することによって報知を行う、第１の発明に従属するポインティング装置の調整プログラムである。
【００１４】
第３の発明では、所定サイズの基準画像（２０２）とともに、現在距離に連動してサイズの変化する調整画像（２０４）とが表示される。現在距離が適正距離になったとき、調整画像のサイズが基準画像のそれと同じになる。調整画像と基準画像の大きさを合わせるように撮像対象から入力装置までの距離を変えることによって、容易に適正距離に調整することができる。
【００１５】
第４の発明は、既知の撮像対象は、第１のスケールで計測される所定距離を隔てて配置される２つのマーカであり、かつ、２つのマーカは表示装置の表示面の所定の１辺の近傍に、当該所定の１辺に対して平行に配置されるものであり、ユーザによって入力された所定距離または予め記憶されている所定距離を取得する距離取得ステップをコンピュータにさらに実行させる、第１の発明に従属するポインティング装置の調整プログラムである。表示面幅取得ステップは、ユーザの入力に応じて表示面に表示された画像で、２つのマーカの配置方向の幅を変化させることによって、第２のスケールで２つのマーカ間の距離を測定する目印距離測定ステップ、および距離取得ステップで取得された所定距離と目印距離測定ステップによって測定されるマーカ間の距離との比率および第２のスケールでの表示面の最大幅に基づいて第１のスケールでの表示面の最大幅を算出する表示面幅算出ステップを含む。
【００１６】
第４の発明では、撮像対象としての２つのマーカが、表示面の所定の１辺の近傍に、当該所定の１辺に対して平行に配置される。２つのマーカは、第１のスケールで計測される所定距離を隔てて配置される。距離取得ステップ（Ｓ１）では、２つのマーカ間の所定距離（センサ幅Ｓ）が取得される。つまり、第１のスケールでの２つのマーカ間の所定距離が取得される。第１のスケールはたとえば実距離を測る単位であるメートルである。２つのマーカ間の所定距離はユーザによって入力される。あるいは、２つのマーカ間の距離が固定される場合には、予め記憶された２つのマーカ間の所定距離が取得される。目印距離測定ステップ（Ｓ４１）では、ユーザの入力に応じて２つのマーカの配置方向の幅の変化される画像（２００）を用いて、表示面における第２のスケールで２つのマーカ間の距離（センサ対応幅Ｗ）が測定される。第２のスケールはたとえばディジタル画像の単位（画素）であり、これによって画像上の距離を測ることができる。表示面幅算出ステップ（Ｓ３７）では、第１のスケールでの表示面の最大幅（ディスプレイ幅Ｄ）を、第１のスケールでの所定距離（センサ幅Ｓ）と第２のスケールでの距離（センサ対応幅Ｗ）との比率および第２のスケールでの表示面の最大幅（最大表示幅Ｍ）に基づいて、たとえば後述される数１に従って算出する。このように、第２のスケールでの表示面の最大幅が予め決まっており記憶されているので、第１のスケールでの２つのマーカ間の所定距離を取得するとともに、第２のスケールでの２つのマーカの設置間隔を測定することによって、表示面の最大幅を算出することができる。したがって、ユーザが表示装置の表示面の最大幅を知らなくても、簡単に調整を行うことができる。
【００１７】
第５の発明は、既知の撮像対象は、第１のスケールで計測される所定距離を隔てて配置される２つのマーカであり、かつ、２つのマーカは表示装置の表示面の所定の１辺の近傍に、当該所定の１辺に対して平行に配置されるものであり、ユーザによって入力された所定距離または予め記憶されている所定距離を取得する距離取得ステップをコンピュータにさらに実行させる、第１の発明に従属するポインティング装置の調整プログラムである。表示面幅取得ステップは、ユーザの入力に応じて表示面に表示された画像で、２つのマーカの配置方向の幅を変化させることによって、第２のスケールで２つのマーカ間の距離を測定する目印距離測定ステップ、および目印距離測定ステップで測定されたマーカ間の距離と第２のスケールでの表示面の最大幅との比率および距離取得ステップで取得された所定距離に基づいて第１のスケールでの表示面の最大幅を算出する表示面幅算出ステップを含む。
【００１８】
第５の発明では、表示面幅算出ステップの算出以外は、上述の第４の発明と同様である。表示面幅算出ステップでは、第２のスケールでの２つのマーカ間の距離（センサ対応幅Ｗ）と第２のスケールでの表示面の最大幅（最大表示幅Ｍ）との比率および第１のスケールでの２つのマーカ間の所定距離（センサ幅Ｓ）に基づいて、第１のスケールでの表示面の最大幅（ディスプレイ幅Ｄ）が算出される。したがって、ユーザが表示装置の表示面の最大幅を知らなくても、簡単に調整を行うことができる。
【００１９】
第６の発明は、現在距離算出ステップは、撮像手段によって得られる撮像画像上の２つのマーカ間の距離を用いて現在距離を算出する、第４または第５の発明に従属するポインティング装置の調整プログラムである。
【００２０】
第６の発明では、現在距離算出ステップでは、撮像画像上の２つのマーカ間の距離（Ｓｉ）を用いて現在距離（Ｌｃ）が算出されるので、ユーザは入力装置を持って撮像対象を撮像しながら表示装置または撮像対象からの距離を変えることによって、簡単に調整を行うことができる。
【００２１】
第７の発明は、表示面幅取得ステップは、ユーザによって入力された表示装置の表示面の最大幅を取得する表示面幅入力ステップを含む、第１の発明に従属するポインティング装置の調整プログラムである。
【００２２】
第７の発明では、表示面幅入力ステップ（Ｓ３´、Ｓ１０５）によって、たとえば、ユーザによる入力装置に設けられる操作手段（７２）の操作に応じた入力装置からのデータに基づいて、表示面の最大幅（ディスプレイ幅Ｄ）を取得する。したがって、ユーザが表示装置の表示面の最大幅を知っている場合には、ユーザにディスプレイ幅を入力してもらうことが可能である。
【００２３】
第８の発明は、既知の撮像対象を撮像するための撮像手段を備える入力装置から、当該撮像手段によって得られる撮像画像のデータまたは当該データに所定の演算を行ったデータを入力データとして取得し、当該入力データを用いて情報処理を行って表示装置へ出力を行うポインティング装置である。ポインティング装置は、表示面幅取得手段、適正距離決定手段、現在距離算出手段、および報知手段を備える。表示面幅取得手段は、表示装置の表示面の最大幅を取得する。適正距離決定手段は、表示面幅取得手段で取得された表示面の最大幅に応じて入力装置と表示装置との適正距離を決定する。現在距離算出手段は、入力データに基づいて入力装置から撮像対象までの現在距離を算出する。報知手段は、適正距離と現在距離の関係に応じた報知を行う。
【００２４】
第８の発明は、上述の第１の発明の調整プログラムに対応するポインティング装置であり、第１の発明と同様な効果を奏する。
【発明の効果】
【００２５】
この発明によれば、撮像対象と入力装置との間の現在距離が適正距離とどのような関係にあるのかを知らせることができるので、使用環境に応じた最適な設定を行うことができる。ユーザは自身の指示した位置ないし方向と画面上で認識される方向ないし位置とが一致する最適な距離を置いて操作を行うことができる。
【００２６】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００２７】
図１を参照して、この発明の一実施例であるポインティング装置１０はゲームシステムの形態で構成される。ゲームシステム１０は、ビデオゲーム装置１２およびコントローラ２２を含む。ビデオゲーム装置１２とコントローラ２２とは、無線によって接続される。たとえば、無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。
【００２８】
ビデオゲーム装置１２は、略直方体のハウジング１４を含み、ハウジング１４の前面にはディスクスロット１６が設けられる。ディスクスロット１６から、ゲームプログラムおよびデータを記憶した情報記憶媒体の一例である光ディスク１８（図２参照）が挿入されて、ハウジング１４内のディスクドライブ６８（図２参照）に装着される。
【００２９】
また、ビデオゲーム装置１２のハウジング１４の前面であり、ディスクスロット１６の近傍には、メモリカードスロットカバー２８が設けられる。このメモリカードスロットカバー２８の内側には、メモリカードスロット（図示せず）が設けられ、外部メモリカード（以下、単に「メモリカード」という。）３０（図２参照）が挿入される。メモリカード３０は、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカード３０に対して行うことに代えて、たとえばビデオゲーム装置１２の内部にフラッシュメモリ等の内部メモリを設けて、当該内部メモリに対して行うようにしてもよい。
【００３０】
ビデオゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、そのコネクタを用いて、ＡＶケーブル３２ａを通してビデオゲーム装置１２にモニタ３４を接続する。このモニタ３４は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２ａは、ビデオゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。
【００３１】
また、モニタ３４の周辺（この実施例では、表示面の上側）には、センサバー３４ｂが設けられ、このセンサバー３４ｂには、２つのＬＥＤモジュール（以下、「マーカ（目印）」という。）３４０ｍ，３４０ｎが所定の距離を隔てて設けられる。マーカ３４０ｍ，３４０ｎは、赤外ＬＥＤであり、それぞれモニタ３４の前方に向けて赤外光を出力する。センサバー３４ｂから延びるケーブル３２ｂはビデオゲーム装置１２の後面のコネクタ（図示せず）に接続され、ビデオゲーム装置１２からマーカ３４０ｍ，３４０ｎに電源が与えられる。
【００３２】
なお、ビデオゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、ビデオゲーム装置１２は、家庭用電源（商用電源）を、駆動に適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００３３】
このゲームシステム１０において、ユーザまたはプレイヤがゲーム（または他のアプリケーション）をプレイするために、ユーザはまずビデオゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）をストアしている適宜の光ディスク１８を選択し、その光ディスク１８をビデオゲーム装置１２のディスクスロット１６を通してディスクドライブ６８にローディングする。応じて、ビデオゲーム装置１２がその光ディスク１８にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置１２に入力を与えるためにコントローラ２２を操作する。
【００３４】
図２は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。ビデオゲーム装置１２には、ＣＰＵ３６が設けられる。このＣＰＵ３６は、ビデオゲーム装置１２の全体的な制御を行うコンピュータである。ＣＰＵ３６は、ゲームプロセッサとして機能し、このＣＰＵ３６には、バスを介して、メモリコントローラ３８が接続される。メモリコントローラ３８は主として、ＣＰＵ３６の制御の下で、バスを介して接続されるメインメモリ４０の書込みや読出しを制御する。このメモリコントローラ３８にはＧＰＵ(Graphics Processing Unit) ４２が接続される。
【００３５】
ＧＰＵ４２は、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、メモリコントローラ３８を介してＣＰＵ３６からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット４４およびレンダリングユニット４６によって３Ｄゲーム画像を生成する。つまり、ジオメトリユニット４４は、３次元座標系の各種オブジェクト（複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも３つの頂点座標によって定義される多角形平面をいう。）の回転，移動，変形等の座標演算処理を行う。レンダリングユニット４６は、各種オブジェクトの各ポリゴンにテクスチャ（模様画像）を貼り付けるなどの画像生成処理を実行する。したがって、ＧＰＵ４２によって、ゲーム画面上に表示すべき３次元画像データが作成され、その画像データがフレームバッファ４８内に記憶される。
【００３６】
なお、ＧＰＵ４２が作画コマンドを実行するにあたって必要なデータ（プリミティブまたはポリゴンやテクスチャ等）は、ＧＰＵ４２がメモリコントローラ３８を介して、メインメモリ４０から入手する。
【００３７】
フレームバッファ４８は、たとえばラスタスキャンモニタ３４の１フレーム分の画像データを描画（蓄積）しておくためのメモリであり、ＧＰＵ４２によって１フレーム毎に書き換えられる。具体的には、フレームバッファ４８は、１画素（ピクセル）毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、Ｒ，Ｇ，Ｂ，Ａについてのデータであり、たとえば、８ビットのＲ（赤）データ、８ビットのＧ（緑）データ、８ビットのＢ（青）データおよび８ビットのＡ（アルファ）データである。なお、Ａデータは、マスク（マット画像）についてのデータである。後述のビデオＩ／Ｆ５８がメモリコントローラ３８を介してフレームバッファ４８のデータを読み出すことによって、モニタ３４の画面上に３次元ゲーム画像が表示される。
【００３８】
また、Ｚバッファ５０は、フレームバッファ４８に対応する画素数×１画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ４８の各記憶位置に対応するドットの奥行き情報または奥行きデータ（Ｚ値）を記憶するものである。
【００３９】
なお、フレームバッファ４８およびＺバッファ５０は、ともにメインメモリ４０の一部を用いて構成されてもよく、また、これらはＧＰＵ４２の内部に設けられてもよい。
【００４０】
メモリコントローラ３８はまた、ＤＳＰ(Digital Signal Processor)５２を介して、オーディオ用のＲＡＭ（以下、「ＡＲＡＭ」という。）５４に接続される。したがって、メモリコントローラ３８は、メインメモリ４０だけでなく、サブメモリとしてのＡＲＡＭ５４の書込みおよび／または読出しを制御する。
【００４１】
ＤＳＰ５２は、サウンドプロセッサとして働き、メインメモリ４０に記憶されたサウンドデータ（図示せず）を用いたり、ＡＲＡＭ５４に書き込まれている音波形（音色）データ（図示せず）を用いたりして、ゲームに必要な音、音声、効果音或いは音楽に対応するオーディオデータを生成する。
【００４２】
メモリコントローラ３８は、さらに、バスによって、各インタフェース（Ｉ／Ｆ）５６，５８，６０，６２および６４に接続される。コントローラＩ／Ｆ５６は、ビデオゲーム装置１２にＢｌｕｅｔｏｏｔｈ通信ユニット６６を介して接続されるコントローラ２２のためのインタフェースである。具体的に言うと、Ｂｌｕｅｔｏｏｔｈ通信ユニット６６は、コントローラ２２から送信される入力データを受信し、コントローラＩ／Ｆ５６は、その入力データを、メモリコントローラ３８を通してＣＰＵ３６に与える。ただし、この実施例では、入力データは、後述する操作データ、加速度データおよびマーカ座標データの少なくとも１つを含む。また、Ｂｌｕｅｔｏｏｔｈ通信ユニット６６は、ＣＰＵ３６によって作成されたデータを、メインメモリ４０およびコントローラＩ／Ｆ５６を通して受信し、当該データを送信すべきコントローラ２２に送信する。ＣＰＵ３６は、コントローラ２２のスピーカ１０４（図４参照）から音を出力させる場合には、ＤＳＰ５２で生成したオーディオデータを含む音出力指示データを作成して、当該データをＢｌｕｅｔｏｏｔｈ通信ユニット６６からコントローラ２２に送信させる。また、ＣＰＵ３６は、コントローラ２２のバイブレータ１０６（図４参照）を振動させる場合には、振動制御データを含む振動出力指示データを作成して、当該データをＢｌｕｅｔｏｏｔｈ通信ユニット６６から送信させる。さらに、ＣＰＵ３６は、コントローラ２２のＬＥＤ７６（図３および図４参照）を点灯させる場合には、点灯制御データを含む点灯指示データを作成して、当該データをＢｌｕｅｔｏｏｔｈ通信ユニット６６から送信させる。
【００４３】
ビデオＩ／Ｆ５８は、フレームバッファ４８にアクセスし、ＧＰＵ４２で作成した画像データを読み出して、画像信号または画像データ（ディジタルＲＧＢＡピクセル値）をＡＶケーブル３２ａ（図１）を介してモニタ３４に与える。
【００４４】
外部メモリＩ／Ｆ６０は、ビデオゲーム装置１２の前面に挿入されるメモリカード３０をメモリコントローラ３８に連係させる。それによって、メモリコントローラ３８を介して、ＣＰＵ３６がこのメモリカード３０にデータを書込み、またはメモリカード３０からデータを読み出すことができる。オーディオＩ／Ｆ６２は、メモリコントローラ３８を通してＤＳＰ５２から与えられるオーディオデータまたは光ディスク１８から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号（音声信号）をモニタ３４のスピーカ３４ａに与える。
【００４５】
そして、ディスクＩ／Ｆ６４は、ディスクドライブ６８をメモリコントローラ３８に接続し、したがって、ＣＰＵ３６がディスクドライブ６８を制御する。このディスクドライブ６８によって光ディスク１８から読み出されたプログラムやデータが、ＣＰＵ３６の制御の下で、メインメモリ４０に書き込まれる。
【００４６】
なお、図２においては、簡単のため、センサバー３４ｂおよび電源回路は省略してある。
【００４７】
図３にはコントローラ２２の外観の一例が示される。図３（Ａ）は、コントローラ２２を上面後方から見た斜視図であり、図３（Ｂ）は、コントローラ２２を下面前方から見た斜視図である。
【００４８】
コントローラ２２は、たとえばプラスチック成型によって形成されたハウジング７０を有している。ハウジング７０は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング７０は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、コントローラ２２を用いて、それに設けられたボタンを押下することと、コントローラ２２自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００４９】
ハウジング７０には、複数の操作ボタンが設けられる。すなわち、ハウジング７０の上面には、十字キー７２ａ、Ｘボタン７２ｂ、Ｙボタン７２ｃ、Ａボタン７２ｄ、セレクトスイッチ７２ｅ、メニュースイッチ７２ｆ、およびスタートスイッチ７２ｇが設けられる。一方、ハウジング７０の下面には凹部が形成されており、当該凹部の後方側傾斜面にはＢボタン７２ｈが設けられる。これら各ボタン（スイッチ）７２ａ−７２ｈには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング７０の上面には、遠隔からゲーム装置１２本体の電源をオン／オフするための電源スイッチ７２ｉが設けられる。コントローラ２２に設けられる各ボタン（スイッチ）は、包括的に参照符号７２を用いて示されることもある。
【００５０】
また、ハウジング７０の後面には、外部拡張用のコネクタ７４が設けられている。また、ハウジング７０上面の後端側には複数のＬＥＤ７６が設けられ、この複数のＬＥＤ７６によって当該コントローラ２２のコントローラ番号（コントローラの識別番号）が示される。ゲーム装置１２には、たとえば最大４つのコントローラ２２が接続可能であり、ゲーム装置１２に複数のコントローラ２２が接続される場合には、各コントローラ２２には、たとえば接続順にコントローラ番号が付与される。各ＬＥＤ７６はコントローラ番号と対応付けられており、当該コントローラ番号に対応するＬＥＤ７６が点灯される。
【００５１】
また、コントローラ２２のハウジング７０内には加速度センサ７８（図４）が設けられている。加速度センサ７８としては、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ７８は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。加速度センサ７８は、少なくとも２つの互いに直交する軸方向の加速度を検出する。たとえば、２軸または３軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、３軸加速度センサが適用され、コントローラ２２の上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向のそれぞれで加速度を検知する。この加速度センサ７８の各軸ごとに検出される加速度に所定の演算処理を施すことによって、コントローラ２２の傾きや回転を算出することが可能である。たとえば、加速度センサ７８が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ７８が水平状態で静止している（すなわち、ＸおよびＺ軸方向が水平方向であり、かつ、Ｙ軸方向が鉛直方向である）ときには、加速度センサ７８のＹ軸に１Ｇの重力加速度が加わり、他の軸Ｘ，Ｚの重力加速度はほぼ０となる。次に、加速度センサ７８の姿勢が水平状態より傾くと、加速度センサ７８の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ７８の各軸に分散され、このとき、加速度センサ７８の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ７８の姿勢を算出することができる。
【００５２】
なお、加速度センサ７８としては、ハウジング７０の形状またはコントローラ２２の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか２方向の加速度を検出する２軸加速度センサが用いられてもよい。場合によっては１軸加速度センサが用いられてもよい。
【００５３】
さらに、コントローラ２２は、撮像情報演算部８０（図４参照）を有しており、図３（Ｂ）に示すように、ハウジング７０の先端面には撮像情報演算部８０の光入射口８２が設けられる。
【００５４】
さらにまた、ハウジング７０の上面においてメニュースイッチ７２ｆとＸボタン７２ｂの間には複数の孔１０２が形成される。ハウジング７０内においてこれら孔１０２に対応する位置にはスピーカ１０４（図４参照）が設けられており、プレイヤに対して手元のコントローラ２２からも音を提供することができる。
【００５５】
また、ハウジング７０内にはバイブレータ１０６（図４参照）が設けられる。このバイブレータ１０６は、たとえば振動モータやソレノイドであってよい。バイブレータ１０６によってコントローラ２２に振動を発生するので、それを把持しているプレイヤの手にその振動を伝達することができる。
【００５６】
また、コントローラ２２の電源は、ハウジング７０内に取替可能に収容されるバッテリ（図示せず）によって与えられる。なお、図３に示したコントローラ２２の形状や、ボタン（スイッチまたはスティック等）の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置等に適宜変更され得る。
【００５７】
図４はコントローラ２２の電気的な構成を示すブロック図である。この図４を参照して、コントローラ２２は、その内部に通信部８４を備え、通信部８４には、操作部７２、加速度センサ７８、撮像情報演算部８０、スピーカ１０４、バイブレータ１０６およびＬＥＤ７６が接続される。なお、図４では省略しているが、通信部８４には上述のコネクタ７４や図示しない電源回路等も接続されている。
【００５８】
通信部８４は、マイクロコンピュータ（マイコン）８６、メモリ８８、無線モジュール９０およびアンテナ９２を含む。マイコン８６は、処理の際にメモリ８８を記憶領域（作業領域やバッファ領域）として用いながら、無線モジュール９０を制御して、取得したデータをゲーム装置１２に送信したりゲーム装置１２からのデータを受信したりする。
【００５９】
操作部７２は、上述の操作ボタンないし操作スイッチ７２ａ‐７２ｉを示す。操作部７２が操作されると、その操作信号が通信部８４に与えられる。また、加速度センサ７８が検出した各軸の加速度を示すデータは、通信部８４へ出力される。加速度センサ７８は、たとえば最大２００フレーム／秒程度のサンプリング周期を有する。
【００６０】
撮像情報演算部８０が取得したデータもまた通信部８４に出力される。撮像情報演算部８０は、赤外線フィルタ９４、レンズ９６、撮像素子９８および画像処理回路１００によって構成される。赤外線フィルタ９４ａは、コントローラ２２の前方の光入射口８２から入射する光から赤外線のみを通過させる。上述したように、モニタ３４の表示面近傍（周辺）に配置されるセンサバー３４ｂのマーカ３４０ｍおよび３４０ｎは、モニタ３４の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ９４を設けることによってマーカ３４０ｍおよび３４０ｎの画像をより正確に撮像することができる。レンズ９６は、赤外線フィルタ９４を透過した赤外線を集光して撮像素子９８へ出射する。撮像素子９８は、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ９６によって集光された赤外線を撮像する。したがって、撮像素子９８は、赤外線フィルタ９４を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子９８によって撮像された画像を撮像画像と呼ぶ。撮像素子９８によって生成された画像データは、画像処理回路１００で処理される。画像処理回路１００は、撮像画像内における撮像対象（マーカ３４０ｍおよび３４０ｎ）の位置を算出し、所定時間（たとえば１フレーム）毎に、当該位置を示す各座標値を含むマーカ座標データをマイコン８６に出力する。なお、画像処理回路１００における処理については後述する。
【００６１】
操作部７２、加速度センサ７８および撮像情報演算部８０からマイコン８６へ出力されたデータは、一時的にメモリ８８に格納される。通信部８４からゲーム装置１２のＢｌｕｅｔｏｏｔｈ通信ユニット６６への無線送信は所定の周期毎に行われる。なお、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、コントローラ２２からの送信はそれと同等かそれより短い周期で行うことが必要となる。マイコン８４は、ゲーム装置１２への送信タイミングが到来すると、メモリ８８に格納されている操作部７２の操作データ、加速度センサ７８の加速度データ、および撮像情報演算部８０のマーカ座標データ等を含むデータを、コントローラデータ（入力データ）として無線モジュール９０へ出力する。無線モジュール９０は、Ｂｌｕｅｔｏｏｔｈのような近距離無線通信技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ９２から放射する。つまり、入力データは、無線モジュール９０で微弱電波信号に変調されてコントローラ２２から送信される。微弱電波信号はゲーム装置１２側のＢｌｕｅｔｏｏｔｈ通信ユニット６６で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置１２は入力データを取得することができる。ゲーム装置１２のＣＰＵ３６は、コントローラ２２から取得した入力データに基づいてゲーム処理を行う。
【００６２】
また、通信部８４は、ゲーム装置１２からの微弱電波信号をアンテナ９２によって受信し、無線モジュール９０によって受信された微弱電波信号について復調や復号を行い、ゲーム装置１２から送信されたデータを取得する。マイコン８６は、受信データが音出力を指示するデータであった場合、当該データに含まれるオーディオデータを図示しないＤ／Ａ変換器および増幅器を介してスピーカ１０４に出力し、スピーカ１０４からその音を出力させる。また、マイコン８６は、受信データが振動出力を指示するデータであった場合、当該データに基づいてバイブレータ１０６の振動を制御する。さらに、マイコン８６は、受信データがＬＥＤ７６の点灯を指示するデータであった場合、当該データに基づいてＬＥＤ７６の点灯を制御する。
【００６３】
図５は、コントローラ２２を用いてゲームプレイするときの状態を概説する図解図である。図５に示すように、ビデオゲームシステム１０でコントローラ２２を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ２２を把持する。厳密に言うと、プレイヤは、コントローラ２２の先端面（撮像情報演算部８０が撮像する光の入射口８２側）がマーカ３４０ｍおよび３４０ｎの方を向く状態でコントローラ２２を把持する。ただし、図１からも分かるように、マーカ３４０ｍおよび３４０ｎは、モニタ３４の画面の所定の１辺（上辺または下辺）の近傍に、当該所定の１辺に対して平行に配置されている。この状態で、プレイヤは、コントローラ２２自体を動かして、コントローラ２２が指示する画面上の位置を変更したり、コントローラ２２と各マーカ３４０ｍおよび３４０ｎとの距離を変更したりすることによって、ゲーム操作を行う。
【００６４】
図６は、マーカ３４０ｍおよび３４０ｎとコントローラ２２の視野角を説明するための図である。図６に示すように、マーカ３４０ｍおよび３４０ｎは、それぞれ、視野角θ１の範囲で赤外光を放射する。また、撮像情報演算部８０の撮像素子９８は、コントローラ２２の視線方向（図３に示すＺ軸方向）を中心とした視野角αの範囲で入射する光を受光することができる。たとえば、マーカ３４０ｍおよび３４０ｎの視野角θ１は、共に３４°（半値角）であり、一方、撮像素子９８の視野角αは４２°である。プレイヤは、撮像素子９８が２つのマーカ３４０ｍおよび３４０ｎからの赤外光を受光することが可能な位置および向きとなるように、コントローラ２２を把持する。具体的には、撮像素子９８の視野角αの中に少なくとも一方のマーカ３４０ｍおよび３４０ｎが存在し、かつ、マーカ３４０ｍおよび３４０ｎの少なくとも一方の視野角θ１の中にコントローラ２２が存在する状態となるように、プレイヤはコントローラ２２を把持する。この状態にあるとき、コントローラ２２は、マーカ３４０ｍおよび３４０ｎの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ２２の位置および向きを変化させることによってゲーム操作を行うことができる。なお、マーカ３４０ｍおよび３４０ｎのいずれか一方のみが検出される場合には、たとえば、直前の２つのマーカ３４０ｍおよび３４０ｎを検出したデータを利用して、検出されない他方のマーカの代わりに仮のマーカ座標を設定することによって、コントローラ２２の指示位置を算出することができる。
【００６５】
なお、コントローラ２２の位置および向きがこの範囲外となった場合、コントローラ２２の位置および向きに基づいたゲーム操作を行うことができなくなる。したがって、上記範囲は「操作可能範囲」と呼ばれる。
【００６６】
操作可能範囲内でコントローラ２２が把持される場合、撮像情報演算部８０によって各マーカ３４０ｍおよび３４０ｎの画像が撮像される。すなわち、撮像素子９８によって得られる撮像画像には、撮像対象である各マーカ３４０ｍおよび３４０ｎの画像（対象画像）が含まれる。図７は、対象画像を含む撮像画像の一例を示す図である。対象画像３４０ｍ’および３４０ｎ’を含む撮像画像の画像データを用いて、画像処理回路１００は、各マーカ３４０ｍおよび３４０ｎの撮像画像における位置を表す座標（マーカ座標）を算出する。
【００６７】
撮像画像の画像データにおいて対象画像３４０ｍ’および３４０ｎ’は高輝度部分として現れるため、画像処理回路１００は、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路１００は、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、２つのマーカ３４０ｍおよび３４０ｎの画像３４０ｍ’および３４０ｎ’のみならず、窓からの太陽光や部屋の蛍光灯の光等のような対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、マーカ３４０ｍおよび３４０ｎの画像３４０ｍ’および３４０ｎ’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。撮像画像における対象画像３４０ｍ’および３４０ｎ’と他の画像との区別のために、撮像対象３４０ｍおよび３４０ｎは既知のものである必要があり、この実施例では、その大きさが予め決められるので、マーカ画像３４０ｍ’および３４０ｎ’の大きさを予測することができる。したがって、高輝度部分の大きさに基づいて、マーカ画像３４０ｍ’および３４０ｎ’の判定を行うことができる。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【００６８】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路１００は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子９８の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子９８によって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。
【００６９】
なお、図７に示すように、撮像画像における位置は、撮像画像の左上を原点Ｏとし、下向きをＹ軸正方向とし、右向きをＸ軸正方向とする座標系（撮像画像のＸＹ座標系）で表現されるものとする。
【００７０】
また、対象画像が正しく検出される場合には、判定処理によって２つの高輝度部分が対象画像として判定されるので、２箇所のマーカ座標が算出される。画像処理回路１００は、算出された２箇所のマーカ座標を示すデータを出力する。出力されたデータ（マーカ座標データ）は、上述したように、マイコン８６によって入力データに含められて、ビデオゲーム装置１２に送信される。
【００７１】
ビデオゲーム装置１２（ＣＰＵ３６）は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ３４の画面上におけるコントローラ２２の指示位置（指示座標）と、コントローラ２２からマーカ３４０ｍおよび３４０ｎまでの各距離とを算出することができる。具体的には、２つのマーカ座標の中点の位置が、コントローラ２２の向いている位置すなわち指示位置として採用（算出）される。なお、たとえば、コントローラ２２がモニタ３４の画面の左端を指示するとき、対象画像は撮像画像の右側に検出され、コントローラ２２が画面の下端を指示するとき、対象画像は撮像画像の上側に検出される。したがって、コントローラ２２の指示位置の座標をマーカ座標から算出する際には、座標系を図７の撮像画像座標系から適宜に変換する。
【００７２】
なお、この実施例では、コントローラ２２で撮像データに所定の演算処理を行ってマーカ座標を検出して、そのマーカ座標データをビデオゲーム装置１２に送信するようにしている。しかし、他の実施例では、撮像データを入力データとしてコントローラ２２からビデオゲーム装置１２に送信し、ビデオゲーム装置１２のＣＰＵ３６が撮像データに所定の演算処理を行って、マーカ座標を検出するようにしてもよい。
【００７３】
また、撮像画像における対象画像間の距離が、コントローラ２２と、マーカ３４０ｍおよび３４０ｎとの距離に応じて変化するので、２つのマーカ座標間の距離を算出することによって、ビデオゲーム装置１２はコントローラ２２とマーカ３４０ｍおよび３４０ｎとの間の距離を把握できる。
【００７４】
このように、このゲームシステム１０はポインティング装置であり、コントローラ２２によってモニタ３４の表示面上の位置を指示するための仕組みを備えている。ビデオゲーム装置１２は、コントローラ２２からの入力データを用いて各種ゲーム処理など情報処理を実行し、その結果を表示装置としてのモニタ３４に表示する。たとえば、ビデオゲーム装置１２では、コントローラ２２の指示位置と画面上のオブジェクトの位置とに基づいて、オブジェクトが指示されたか否かを判断して、当該結果に対応するゲーム処理を実行することができる。一例としては、画面上の標的にコントローラ２２のＺ軸を向けることによって当該標的を狙って打つようなゲームを実行することができる。
【００７５】
しかし、モニタ３４の表示面の大きさやプレイヤの立つ位置などは、各家庭の状況によって異なるので、プレイヤが指示しようとしている画面上の位置とゲームシステム１０で認識される位置とがずれるおそれがある。そこで、このゲームシステム１０では、プレイヤがコントローラ２２で指示した位置と認識される画面上の位置とを一致させるために、コントローラ２２と画面（マーカ３４０ｍおよび３４０ｎ）との間の距離が適正距離となるように、調整を実行できるようにした。
【００７６】
モニタ３４（マーカ３４０ｍおよび３４０ｎ）からの適正距離は、モニタ３４の表示面の幅とマーカ３４０ｍおよび３４０の間隔とによって異なる。したがって、適正距離の算出のためには、マーカ３４０ｍおよび３４０ｎの間隔とモニタ３４の表示面の幅の情報を取得する必要がある。この実施例では、センサバー３４ｂの幅が予め決められており、すなわち、２つのマーカ３４０ｍおよび３４０ｎが所定距離を隔てて配置されているので、このセンサバー３４ｂの幅を利用して、モニタ３４の表示面の幅を取得する。
【００７７】
図８に示すように、センサバー３４ｂにおける２つのマーカ３４０ｍおよび３４０ｎはモニタ３４の表示面の上下のいずれかの１辺の近傍に、当該辺に平行に設置される。また、２つのマーカ３４０ｍおよび３４０ｎの中点が表示面の横方向の中央に一致するように、センサバー３４ｂは当該辺の中央に置かれる。そこで、画面中央に幅が可変の画像２００を表示して、プレイヤに、画面上の画像２００の２つのマーカ３４０ｍおよび３４０ｎの配置方向の幅を変化させて、当該２つのマーカ３４０ｍおよび３４０ｎ間の距離に一致させる操作をしてもらう。たとえば、コントローラ２２の十字キー７２ａの右方向が押されると、画像２００の横方向の幅が一定長さ（ｄｏｔ）だけ広くなり、左方向が押されると、画像２００の横方向の幅が一定長さだけ狭くなるように、画像２００の表示が制御される。この十字キー７２ａの操作によって画像２００の幅をセンサバー３４ｂの幅に合わせてＡボタン７２ｄを押すことによって、画像２００の幅を決定することができ、したがって、２つのマーカ３４０ｍおよび３４０ｎ間の距離を画像の単位（画素）によって測定することができる。この画像２００の幅をセンサ対応幅と呼ぶものとする。つまり、センサ対応幅は、センサバー３４ｂの幅の実距離に対応する画面内での幅のことであり、画像上の距離を示す。なお、センサバー３４ｂの幅、すなわち、マーカ３４０ｍおよび３４０ｎ間の実距離を、センサ幅と呼ぶものとする。
【００７８】
画面に表示可能な画像の最大幅（最大表示幅と呼ぶ）は予め決まっているので、センサ対応幅を取得することによって、モニタ３４の画面の幅（ディスプレイ幅と呼ぶ）を算出することができる。なお、ディスプレイ幅、センサ幅、センサ対応幅および最大表示幅のスケールないし単位は異なり、ディスプレイ幅およびセンサ幅は第１のスケール（実空間における長さを測定する単位。ｍ（メートル））で表され、センサ対応幅および最大表示幅は第２のスケール（ディジタル画像の単位。ｄｏｔ（画素））で表される。最大表示幅は、第２のスケールでの表示面の最大幅でもある。
【００７９】
ディスプレイ幅をＤ（ｍ）、センサ幅をＳ（ｍ）、センサ対応幅をＷ（ｄｏｔ）、最大表示幅をＭ（ｄｏｔ）とすると、ディスプレイ幅は次の数１で算出される。
［数１］
Ｄ＝Ｓ×Ｍ／Ｗ
このように、ディスプレイ幅は、センサ幅とセンサ対応幅の比率（Ｓ／Ｗ）および最大表示幅に基づいて算出される。あるいは、ディスプレイ幅は、最大表示幅とセンサ対応幅の比率（Ｍ／Ｗ）およびセンサ幅に基づいて算出される。
【００８０】
なお、図８から分かるように、この実施例のモニタ３４の表示面は横長の矩形状であり、表示面の幅がそのまま最大幅に相当する。ディスプレイ幅としては表示面の最大幅を取得する。
【００８１】
ディスプレイ幅およびセンサ幅が分かると、コントローラ２２による表示面に対する理想的なポインティングの位置関係が決まるので、ディスプレイ幅およびセンサ幅に基づいて、コントローラ２２と表示面との適正距離を算出することができる。
【００８２】
図９は適正距離算出のためのコントローラ２２、表示面およびセンサバー３４ｂの位置関係を示す。一例として、図９ではセンサバー３４ｂの配置された表示面の左端を指示する場面が示される。
【００８３】
具体的には、図９（Ａ）には画面左端への理想的なポインティングを行ったときのコントローラ２２と表示面との位置関係が示される。図９（Ａ）は当該ポインティングを上から見た場面である。前提として、コントローラ２２は表示面中央の法線上に置かれている。そして、画面左端のポインティングのために、コントローラ２２のＺ軸方向が表示面の左端に向けられている。これは、コントローラ２２のＺ軸方向が表示面の中央への方向から角度θだけ左に振られた状態である。コントローラ２２から表示面までの距離をＬ（ｍ）、ディスプレイ幅をＤとすると、このポインティングの状態における角度θは次の数２で算出される。
［数２］
θ＝ａｒｃｔａｎ（Ｄ／２Ｌ）
一方、図９（Ｂ）には、コントローラ２２を左方向へ振るときの認識の限界となる位置関係が示されている。つまり、コントローラ２２の撮像情報演算部８０の撮像素子９８でセンサバー３４ｂの２つのマーカ３４０ｍおよび３４０ｎを撮像できる限界である。撮像素子９８の視野角αの右端を規定する線がセンサバー３４ｂの右端に一致している。これは、コントローラ２２のＺ軸方向が表示面の中央への方向から角度βだけ左に振られた状態である。コントローラ２２から表示面（マーカ３４０ｍおよび３４０ｎ）までの距離をＬ（ｍ）、センサ幅をＳ、撮像素子９８の画角をαとすると、このポインティングの状態における角度βは次の数３で算出される。
［数３］
β＝α／２−ａｒｃｔａｎ（Ｓ／２Ｌ）
コントローラ２２を表示面の端に向けたときが、コントローラ２２で指示する位置を認識できる限界であれば、プレイヤは感覚的に違和感のない理想的なポインティングを行うことができる。したがって、θ＝βが成立するような距離Ｌを算出することによって、適正距離が得られる。
【００８４】
このようにして、モニタ３４の表示面の幅とマーカ３４０ｍおよび３４０ｎの間隔とに応じた適正距離が分かる。
【００８５】
続いて、マーカ３４０ｍおよび３４０ｎからコントローラ２２までの現在距離の算出方法を図１０を参照しながら説明する。現在距離Ｌｃは撮像画像上の２つのマーカの画像３４０ｍ’および３４０ｎ’間の距離Ｓｉを用いて算出される。
【００８６】
具体的には、この実施例では、まず、撮像画像上のマーカ画像３４０ｍ’および３４０ｎ’間の距離Ｓｉを算出する。上述のように、撮像画像上の画像３４０ｍ’および３４０ｎ’の座標（すなわちマーカ座標）が検出されるので、当該マーカ座標から距離Ｓｉを算出することができる。なお、距離Ｓｉは、画像における長さを測る単位としての上記第２のスケール（ｄｏｔ）で表される。
【００８７】
次に、撮像素子９８で実際に撮像されている範囲の幅の実空間での長さを示す撮像範囲幅Ｒを算出する。撮像範囲幅Ｒ、センサ幅Ｓ、撮像画像幅Ｒｉおよびマーカ画像間距離Ｓｉには、Ｒ：Ｓ＝Ｒｉ：Ｓｉの関係が成り立つ。撮像画像幅Ｒｉ（ｄｏｔ）は撮像素子９８の仕様により予め決まっている。また、実空間におけるマーカ３４０ｍおよび３４０ｎの距離を示すセンサ幅Ｓ（ｍ）もこの実施例では固定されている。したがって、次の数４に従って、撮像範囲幅Ｒを算出することができる。
［数４］
Ｒ＝Ｒｉ×Ｓ／Ｓｉ
なお、撮像範囲幅Ｒは、実空間における長さを測る単位としての上記第１のスケール（ｍ）で表される。
【００８８】
そして、撮像範囲幅Ｒと撮像素子９８の視野角αから、次の数５に従って現在距離Ｌｃ（ｍ）を算出することができる。
［数５］
Ｌｃ＝（Ｒ／２）／ｔａｎ（α／２）
このようにして、ゲームシステム１０では、コントローラ２２とモニタ３４（マーカ３４０ｍおよび３４０ｎ）の間における適正距離と現在距離を取得することができるので、現在距離と適正距離との大小関係をプレイヤに知らせることができる。したがって、プレイヤは現在距離が適正距離となるようにコントローラ２２の位置を、つまり、プレイヤの画面からの距離を調整することができる。なお、ここで説明したマーカからコントローラ２２までの現在距離を算出する方法は一例であり、ここでは詳細に説明しないが、例えばレンズ９６から撮像素子９８の撮像面までのいわゆる焦点距離と、撮像面上のマーカ画像の大きさ（本実施例ではマーカ画像間の距離）と、現実のマーカ間の距離を用いて現在距離を算出することもできる。
【００８９】
適正距離と現在距離の関係の報知は、この実施例では、適正距離と現在距離との差分に応じた画像を表示出力することによって行われる。
【００９０】
図１１には現在距離と適正距離との関係を知らせる画像の一例が示される。図１１（Ａ）は現在距離が適正距離よりも長い場合を示し、図１１（Ｂ）は現在距離が適正距離よりも短い場合を示す。画面上には、適正距離を示す基準画像（実線円）２０２と現在距離を示す調整画像（破線円）２０４とが表示される。基準画像２０２のサイズ（円の径）は所定値に固定され、一方、調整画像２０４のサイズが現在距離に連動して変化される。具体的には、現在距離が適正距離よりも長ければ、調整画像２０４は基準画像２０２よりも小さくされ、現在距離が適正距離よりも短ければ調整画像２０４は基準画像２０２よりも大きくされ、現在距離が適正距離と同一であれば調整画像２０４の大きさは基準画像２０２のそれと同一になる。たとえば、基準サイズの基準画像２０２と調整画像２０４とを準備しておき、現在距離Ｌｃと適正距離Ｌとの比率（Ｌ／Ｌｃ）を基準サイズに掛けることによって得られるサイズに拡大または縮小される調整画像２０４を生成して、基準画像２０２と調整画像２０４とを表示する。なお、この実施例では、適正距離の値に関わらず所定の基準サイズを有する基準画像２０２および調整画像２０４を準備して、上記比率（Ｌ／Ｌｃ）に従って調整画像２０４の大きさを変化させるようにしたが、他の実施例では、適正距離の値もしくは表示面の最大幅に応じて基準サイズを変化させるようにしてもよい。
【００９１】
このような現在距離と適正距離との関係に応じた報知がなされるので、プレイヤはコントローラ２２のＺ軸方向をセンサバー３４ｂに向けた状態でモニタ３４に対して前後に移動して、画面上で調整画像の大きさを基準画像のそれと一致させることで、コントローラ２２の位置を適正距離となる位置に容易に調整することができる。
【００９２】
なお、他の実施例では、現在距離と適正距離との関係を示す画像として、現在距離と適正距離との差分に応じて画面に対して近づくか画面から遠ざかるかをプレイヤに指示するメッセージを表示したり、現在距離と適正距離との差分を示す数値を表示したりすることも考えられる。
【００９３】
また、報知方法としては、表示装置３４を用いた画像の表示出力に限られず、他の出力装置を用いた種々の出力に適宜変更可能である。たとえば、画像表示に代えてあるいは画像表示とともに、音声や効果音などの音出力によって報知を行うようにしてもよい。音声または効果音などの音の種類、出力パターンもしくは音量が、上述の画像の場合と同様に、プレイヤが画面に近づけばよいか画面から遠ざかればよいかが分かるように、現在距離と適正距離との関係に応じて変化される。たとえば、音声を使う場合、現在距離が適正距離よりも長ければ、「近づいて下さい」といった音声を、現在距離が適正距離よりも短ければ、「離れて下さい」といった音声を、現在距離が適正距離に等しければ、「適正です」といった音声をスピーカ３４ａまたはコントローラ２２のスピーカ１０４から出力する。なお、誤差を考慮し、現在距離と適正距離の差分の大きさが所定の閾値以下であれば、現在距離は適正であると判定するようにしてよい。現在距離が適正でないと判定されるときは、たとえば、適正距離と判定される距離までに必要な距離の値を含む音声を出力するようにしてもよい。また、効果音を使用する場合にも、現在距離と適正距離の差分に応じて、効果音の種類、出力パターンおよび音量などを異ならせて、画面に対する遠近を伝えるようにする。
【００９４】
さらに、画像表示および／または音出力とともにあるいは単独で、コントローラ２２のバイブレータ１０４の振動出力によって報知を行うようにしてもよい。振動出力の場合にも、上述の画像および音の場合と同様に、振動のパターンや大きさなどを、現在距離と適正距離との関係に応じて変化させる。
【００９５】
さらにまた、上述の各報知方法とともにあるいは単独で、コントローラ２２のＬＥＤ７６の光出力によって報知を行うようにしてもよい。この光出力の場合にも、上述の各報知方法の場合と同様に、複数のＬＥＤ７６の点灯パターンや明るさなどを、現在距離と適正距離との関係に応じて変化させる。
【００９６】
図１２にはメインメモリ４０のメモリマップの一例が示される。メインメモリ４０はプログラム記憶領域１１０およびデータ記憶領域１１２を含む。プログラムおよびデータの一部は、光ディスク１８から一度に全部または必要に応じて部分的にかつ順次的に読み出され、メインメモリ４０に記憶される。なお、図１２にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶される。たとえば、音声、効果音、音楽などの音を出力するためのサウンドデータが光ディスク１８から読み出されてデータ記憶領域１１２に記憶される。また、表示面に表示される画像の最大表示幅Ｍ、撮像素子９８の視野角α、撮像画像の幅Ｒｉなど予め決められている各種数値のデータも光ディスク１８から読み出されてデータ記憶領域１１２に記憶される。
【００９７】
プログラム記憶領域１１０の記憶領域１１４には、この実施例の調整処理のメインルーチンを実行するためのメインプログラムが記憶される。
【００９８】
記憶領域１１６にはセンサ幅取得プログラムが記憶される。このプログラムによって、マーカ３４０ｍとマーカ３４０ｎとの間隔、すなわち、センサ幅Ｓが取得される。この実施例では、センサ幅Ｓは予め決められているので、予め記憶されているセンサ幅データがデータ記憶領域１１２の所定領域から読み出される。なお、他の実施例で、センサ幅が可変にされる場合には、このプログラムによって、入力データに基づいてプレイヤが入力したセンサ幅が取得される。
【００９９】
記憶領域１１８にはディスプレイ幅取得プログラムが記憶される。このプログラムによって、上述の図８に示したように、入力データに基づくセンサ対応幅Ｗの取得、およびディスプレイ幅Ｄの算出のための処理が実行される。なお、他の実施例で、ディスプレイ幅がプレイヤによって入力される場合には、入力データに基づいてプレイヤが入力したディスプレイ幅が取得される。
【０１００】
記憶領域１２０には適正距離決定プログラムが記憶される。このプログラムによって、ディスプレイ幅およびセンサ幅に基づく適正距離が決定される。この実施例では、後述するように、適正距離テーブルデータが予め記憶されているので、当該テーブルを参照して、ディスプレイ幅に応じた適正距離が決定される。なお、他の実施例では、適正距離テーブルデータを準備せずに、上述の数２および数３が等しいときの数式に従って、取得されたディスプレイ幅Ｄ、取得されたセンサ幅Ｓ、および予め記憶される撮像素子９８の視野角αに基づいて、適正距離を算出するようにしてもよい。
【０１０１】
記憶領域１２２には現在距離算出プログラムが記憶される。このプログラムによって、コントローラ２２とマーカ３４０ｍおよび３４０ｎとの間の現在距離が算出される。現在距離は、上述の図１０で説明したように、撮像素子９８による撮像画像上のマーカ画像３４０ｍ’および３４０ｎ’間の距離Ｓｉを用いて算出される。具体的には、現在距離Ｌｃは、撮像素子９８による実際の撮像範囲幅Ｒと撮像素子９８の視野角αに基づいて、上述の数５に従って算出される。撮像範囲幅Ｒは、撮像画像の幅Ｒｉ、マーカ３４０ｍおよび３４０ｎの実距離（センサ幅Ｓ）、およびマーカ画像間距離Ｓｉに基づいて、上述の数４に従って算出できる。
【０１０２】
記憶領域１２４には報知プログラムが記憶される。このプログラムによって、現在距離と適正距離との関係に応じた報知が行われる。この実施例では、ＣＰＵ３６は、図１１に示したように、所定の大きさの基準画像２０２と、現在距離と適正距離との差分に応じて大きさの変化する調整画像２０４とを含む画像をＧＰＵ４２を用いて生成して、ビデオＩ／Ｆ５８等を介してモニタ３４に当該画像を表示する。また、音で報知を行う場合、ＣＰＵ３６はＤＳＰ５２を用いて現在距離と適正距離との差分に応じた音声、効果音などの音を出力するためのオーディオデータを生成する。モニタ３４のスピーカ３４ａから出力する場合には、ＣＰＵ３６は、当該オーディオデータに基づく音をオーディオＩ／Ｆ６２等を介してスピーカ３４ａから出力する。また、コントローラ２２のスピーカ１０４から出力する場合には、ＣＰＵ３６は、当該オーディオデータを含む音出力指示データをＢｌｕｅｔｏｏｔｈ通信ユニット６６等を介してコントローラ２２に送信する。さらに、ＣＰＵ３６は、振動で報知を行う場合、現在距離と適正距離との差分に応じた振動を出力するための振動制御データを生成し、当該データを含む振動出力指示データをコントローラ２２に送信する。さらにまた、ＬＥＤ７６の光出力で報知を行う場合、現在距離と適正距離との差分に応じた点灯状態を得るための点灯制御データを生成し、当該データを含む点灯指示データをコントローラ２２に送信する。
【０１０３】
データ記憶領域１１２の記憶領域１２６は入力データバッファであり、所定時間（１フレーム）ごとに受信されるコントローラデータが記憶される。記憶領域１２８にはセンサバー３４ｂの２つのマーカ３４０ｍおよび３４０ｎの間隔を示すセンサ幅データが記憶される。この実施例では、２つのマーカ３４０ｍおよび３４０ｎの配置が固定されたセンサバー３４ｂが準備されるので、センサ幅Ｓは所定距離に固定される。つまり、センサ幅データが光ディスク１８に予め記憶されており、当該センサ幅データが読み出されて記憶領域１２８に記憶される。
【０１０４】
記憶領域１３０には、モニタ３４に表示する画像を生成するための画像データが記憶される。たとえば、図８に示したようなセンサ対応幅を取得するための画像２００、図１１に示したような基準画像２０２および調整画像２０４（基準サイズ）、各種画面等を表示するための画像データが記憶される。
【０１０５】
記憶領域１３２には上述の現在距離算出プログラムによって算出された現在距離が記憶される。記憶領域１３４には基準サイズの調整画像２０４を拡大／縮小するための倍率データが記憶される。この倍率は上述のように適正距離Ｌと現在距離Ｌｃとの比率である。
【０１０６】
記憶領域１３６には適正距離テーブルデータが記憶される。図１３に示すように、適正距離テーブルデータでは、ディスプレイ幅に対応付けて適正距離が記憶されている。市販されているモニタ３４の表示面のサイズは決まっている。また、この実施例では、センサ幅Ｓは固定される。したがって、上述の数２のθと数３のβとを等しいとしたときの所定の数式に従って、全てのサイズのモニタ３４のディスプレイ幅Ｄ１、Ｄ２、…Ｄｎに対応する適正距離Ｌ１、Ｌ２、…Ｌｎを予め算出して、テーブルデータとして光ディスク１８に記憶しておく。上述の適正距離決定プログラムは、この実施例では、適正距離テーブルデータを参照して、ディスプレイ幅取得プログラムで取得したディスプレイ幅に対応する適正距離を取得する。
【０１０７】
図１４にはＣＰＵ３６の調整処理の動作の一例が示される。調整処理を開始すると、ＣＰＵ３６は、ステップＳ１でセンサ幅取得プログラムに従ってセンサ幅Ｓを取得する。この実施例では、センサ幅Ｓが固定されているので、読み出したセンサ幅データを記憶領域１２８に記憶する。
【０１０８】
ステップＳ３で、ＣＰＵ３６はディスプレイ幅取得プログラムに従ってディスプレイ幅算出処理を実行する。このディスプレイ幅算出処理の詳細は図１５に示される。図１５のステップＳ３１で、ＣＰＵ３６はＧＰＵ４２を用いて図８で示したようなセンサ対応幅入力画面をモニタ３４に表示する。
【０１０９】
次にステップＳ３３でＣＰＵ３６は入力装置としてのコントローラ２２からセンサ対応幅を決めるための入力があったか否かを、入力データバッファ１２６の入力データに基づいて判断する。具体的には、入力データにコントローラ２２の操作部７２が操作されたことを示すデータが存在するか否かを判断する。ステップＳ３３で“ＹＥＳ”と判断されるまで、入力データの確認を行う。
【０１１０】
ステップＳ３３で“ＹＥＳ”の場合、ＣＰＵ３６はステップＳ３５で入力が決定ボタンであるか否かを判断する。具体的には、ＣＰＵ３６は入力データに基づいてＡボタン７２ｄが押されたか否かを判断する。ステップＳ３５で“ＹＥＳ”の場合には、ＣＰＵ３６はステップＳ３７でディスプレイ幅Ｄを上述の数１に従って算出する。なお、センサ対応幅はＷ、Ａボタン７２が押されたときの、センサ対応幅を示す画像２００の横方向の画素数を検出することによって取得される。
【０１１１】
一方、ステップＳ３５で“ＮＯ”の場合、ＣＰＵ３６はステップＳ３９で入力は左右ボタンであるか否かを判断する。具体的には、ＣＰＵ３６は入力データに基づいて十字キー７２ａの左方向または右方向が押された否かを判断する。ステップＳ３９で“ＹＥＳ”であれば、ＣＰＵ３６はステップＳ４１でセンサ対応幅の表示を更新する。つまり、ＣＰＵ３６はセンサ対応幅Ｗを十字キー７２ａの方向に応じて所定長さだけ増減し、ＧＰＵ４２を用いて当該センサ対応幅Ｗを示す画像２００を生成して、モニタ３４に表示する。ステップＳ４１を終了すると処理はステップＳ３３に戻る。
【０１１２】
ステップＳ３７の処理を終了するとディスプレイ幅算出処理を終了して、処理は図１４のステップＳ５に戻る。
【０１１３】
図１４のステップＳ５では、ＣＰＵ３６は、適正距離決定プログラムに従って入力装置としてのコントローラ２２とディスプレイとしてのモニタ３４との適正距離Ｌを決定する。具体的には、ＣＰＵ３６は、適正距離テーブルデータを参照して、ステップＳ３７で算出されたディスプレイ幅Ｄに対応する適正距離Ｌをデータ記憶領域１１２の所定領域に読み出す。
【０１１４】
ステップＳ７では、ＣＰＵ３６は入力データバッファ１２６から入力データを取得する。そして、ステップＳ９で、ＣＰＵ３６は２つのマーカ３４０ｍおよび３４０ｎが撮像されているか否かを入力データに基づいて判断する。具体的には、入力データに２つのマーカ３４０ｍおよび３４０ｎを示すマーカ座標データが含まれるか否かを判断する。
【０１１５】
ステップＳ９で“ＹＥＳ”の場合、ＣＰＵ３６は、ステップＳ１１で現在距離算出プログラムに従って現在距離算出処理を実行する。この現在距離算出処理の詳細は図１６に示される。図１６のステップＳ５１で、ＣＰＵ３６は、マーカ間の撮像画像内での距離Ｓｉを算出する。具体的には、上述の図１０で説明したように、入力データに含まれるマーカ座標データ基づいて、マーカ画像３４０ｍ’および３４０ｎ’の座標間の距離Ｓｉを算出する。
【０１１６】
次に、ステップＳ５３で、ＣＰＵ３６は、実空間での撮像範囲幅Ｒを算出する。具体的には、ＣＰＵ３６は、光ディスク１８からデータ記憶領域１１２の所定領域に読み出された撮像画像幅Ｒｉ、記憶領域１２８に記憶されたセンサ幅Ｓ、および算出したマーカ間距離Ｓｉに基づいて、上述の数４に従って撮像範囲幅Ｒを算出する。
【０１１７】
続いて、ステップＳ５５で、ＣＰＵ３６はマーカ３４０ｍおよび３４０ｎからコントローラ２２までの現在距離Ｌｃを算出する。具体的には、ＣＰＵ３６は、光ディスク１８からデータ記憶領域１１２の所定領域に読み出された撮像素子９８の視野角αおよび算出した撮像範囲幅Ｒに基づいて、上述の数５に従って現在距離Ｌｃを算出する。算出した現在距離Ｌｃは記憶領域１３２に記憶される。現在距離算出処理を終了すると、処理は図１４のステップＳ１３に戻る。
【０１１８】
図１４のステップＳ１３では、ＣＰＵ３６は、報知プログラムに従って、適正距離と現在距離との関係を報知する。たとえば、画像表示による報知を行う場合には、ＣＰＵ３６は、ＧＰＵ４２を用いて図１１に示すような基準画像２０２と調整画像２０４とを含む画像を生成して、モニタ３４に表示する。なお、調整画像２０４のサイズを決める倍率は、ステップＳ５で決定した適正距離ＬとステップＳ１１で算出した現在距離Ｌｃとによって算出されて記憶領域１３４に記憶されているので、当該倍率データに基づいて調整画像２０４のサイズが変化される。なお、音出力による報知の場合には、上述のように、ＣＰＵ３６は、ＤＳＰ５２を用いてオーディオデータを生成してスピーカ３４ａから音を出力し、あるいは、音出力指示データをコントローラ２２に送信してコントローラ２２のスピーカ１０４から音を出力させる。また、振動出力による報知の場合には、上述のように、ＣＰＵ３６は振動指示データをコントローラ２２に送信してコントローラ２２のバイブレータ１０６を振動させる。また、光出力による報知の場合には、上述のように、ＣＰＵ３６は点灯指示データをコントローラ２２に送信してコントローラ２２のＬＥＤ７６を点灯させる。なお、音、振動、光による報知は、次のステップＳ１５で“ＹＥＳ”と判断されるまでは、たとえば数秒程度の所定時間（所定フレーム数）経過ごとに実行されるようにするのが望ましい。
【０１１９】
一方、ステップＳ９で“ＮＯ”の場合には処理はそのままステップＳ１５に進む。ステップＳ１５ではＣＰＵ３６は設定終了であるか否かを判断する。具体的には、図１１のような適正距離と現在距離との関係を示す画像を表示している間に、あるいは、音、振動もしくは光による報知を行った後に、設定終了を入力するためのＡボタン７２ｄが押されたか否かを入力データに基づいて判断する。ステップＳ１５で“ＮＯ”の場合、処理はステップＳ７に戻る。一方、ステップＳ１５で“ＹＥＳ”であれば、この調整処理を終了する。
【０１２０】
この実施例によれば、マーカ３４０ｍおよび３４０ｎ（モニタ３４）とコントローラ２２との適正距離を知らせることができる。したがって、プレイヤは、自身のコントローラ２２で指示した画面上の位置ないし方向と認識される画面上の位置ないし方向とが一致する最適な距離を画面に対して置いて、操作を行うことができる。
【０１２１】
なお、上述の実施例では、モニタ３４の表示面の幅、すなわちディスプレイ幅Ｄを算出するようにしていた。しかし、他の実施例では、ディスプレイ幅Ｄをプレイヤに入力してもらうようにしてもよい。この実施例では、図１７に示すように、ステップＳ３の代わりに、ＣＰＵ３６は、ステップＳ３´でディスプレイ幅入力処理を実行する。たとえば、ディスプレイ幅の数値を操作部７２の操作で入力可能に構成した画面を表示して、入力データに基づいてディスプレイ幅を取得する。なお、図８に示したようなセンサ対応幅の取得に基づくディスプレイ幅の算出とディスプレイ幅のプレイヤ入力の両方を実行可能にしてもよい。
【０１２２】
さらに、他の実施例では、ディスプレイサイズをプレイヤに選択させることによって、ディスプレイ幅を取得するようにしてもよい。この実施例では、たとえば、図１８に示すようなディスプレイサイズ入力画面をモニタ３４に表示する。この入力画面では、市販のモニタ３４に採用されている表示面のサイズ（型）のリストが表示される。プレイヤはコントローラ２２の操作によって、たとえばカーソル２１０を用いてディスプレイサイズをリストから選択して、その後、カーソル２１０で決定ボタン２１２を押すことによって、ディスプレイサイズを入力できる。なお、カーソル２１０はコントローラ２２の十字キー７２ａの操作によって移動され、あるいは、カーソル２１０はコントローラ２２の指示位置に表示される。また、この入力画面では、図８に示したようなセンサ対応幅の取得によるディスプレイ幅の算出も行えるようにしており、図１８の入力画面で設定ボタン２１４を押すことによって、このセンサ対応幅の取得が実行される。
【０１２３】
この実施例の適正距離テーブルでは、図１９に示すように、ディスプレイサイズＫ１、Ｋ２、…Ｋｎに対応付けてディスプレイ幅Ｄ１、Ｄ２、…Ｄｎおよび適正距離Ｌ１、Ｌ２、…Ｌｎが記憶されている。したがって、このテーブルを参照することによって、入力されたディスプレイサイズに対応する適正距離を決定することができる。
【０１２４】
図２０には、この実施例の調整処理の動作が示されている。ＣＰＵ３６は、ステップＳ１の後に、ステップＳ１０１で、ディスプレイサイズ入力画面をモニタ３４に表示する。これによって、図１８のような入力画面が表示される。続いて、ステップＳ１０３で、ＣＰＵ３６は、入力データに基づいて設定ボタン２０４が選択されたか否かを判断する。ステップＳ１０３で“ＹＥＳ”の場合には、ＣＰＵ３６はステップＳ３で上述のディスプレイ幅算出処理を実行する。一方、ステップＳ１０３で“ＮＯ”の場合、ＣＰＵ３６はステップＳ１０５でディスプレイサイズ入力処理を実行する。このステップＳ１０５では、入力データに基づいて、リストから選択されたディスプレイサイズが特定される。
【０１２５】
また、上述の各実施例では、２つのマーカ３４０ｍおよび３４０ｎ間の間隔は固定されていたが、他の実施例では、当該マーカ間隔は可変にされてもよい。つまり、センサバー３４ｂはその長さが変更可能に形成されてよく、プレイヤが各家庭の状況等に合わせて長さを調節できるようにしてもよい。この実施例では、マーカ３４０ｍおよび３４０ｎの間隔をプレイヤに入力してもらう必要がある。したがって、上述の各実施例のステップＳ１では、たとえば、センサ幅の数値を操作部７２の操作で入力可能に構成した画面を表示して、入力データに基づいてセンサ幅Ｓを取得する。また、ステップＳ５の適正距離を決定する処理では、数２および数３から得られる関係式に従って、適正距離Ｌを算出する。
【０１２６】
なお、上述の各実施例では、既知の撮像対象として二つのマーカを例に説明したが本発明はこれに限られるものでなく、実際の大きさが識別できるマーカであればどのようなものでも利用できる可能性がある。例えば、既知の大きさの単一のマーカでもよい。この場合、マーカの大きさがわかっているので、その大きさと撮像画像上のマーカ画像の大きさとによって上述した方法でマーカとコントローラ２２間の現在距離を算出することができる。さらに、撮像素子９８や画像処理回路１００がカラー画像を認識できるものであれば、既知の撮像対象として予め決められた色と大きさのマーカにすることにより本発明を実現することができる。
【図面の簡単な説明】
【０１２７】
【図１】図１はこの発明の一実施例のゲームシステムの外観を示す図解図である。
【図２】図２は図１に示すゲームシステムの電気的な構成を示すブロック図である。
【図３】図３は図１に示すコントローラの外観を示す図解図であり、図３（Ａ）は上面後方からの斜視図を示し、図３（Ｂ）は下面前方からの斜視図を示す。
【図４】図４は図１に示すコントローラの電気的な構成を示すブロック図である。
【図５】図５は図１に示すコントローラを用いてゲームプレイするときの状態を概説するための図解図である。
【図６】図６は図１に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図７】図７は対象画像を含む撮像画像の一例を示す図解図である。
【図８】図８はディスプレイ幅算出のためのセンサ対応幅の入力を説明するための図解図である。
【図９】図９は適正距離算出のためのコントローラ、画面およびマーカの位置関係を示す図解図であり、図９（Ａ）は画面左端への理想的なポインティングの際の位置関係を示し、図９（Ｂ）はコントローラを左方へ振るときの認識の限界となる位置関係を示す。
【図１０】図１０は２つのマーカからコントローラまでの現在距離の算出方法を説明するための図解図である。
【図１１】図１１は現在距離と適正距離との関係を知らせる画像の一例を示す図解図であり、図１１（Ａ）は現在距離が適正距離よりも長い場合を示し、図１１（Ｂ）は現在距離が適正距離よりも短い場合を示す。
【図１２】図１２はメインメモリのメモリマップの一例を示す図解図である。
【図１３】図１３は適正距離テーブルデータを示す図解図である。
【図１４】図１４はビデオゲーム装置の調整処理の動作の一例を示すフロー図である。
【図１５】図１５は図１４に示すディスプレイ幅算出処理の動作の一例を示すフロー図である。
【図１６】図１６は図１４に示す現在距離算出処理の動作の一例を示すフロー図である。
【図１７】図１７は他の実施例の調整処理の動作を示すフロー図である。
【図１８】図１８は他の実施例において表示されるディスプレイサイズ入力画面の一例を示す図解図である。
【図１９】図１９は図１８実施例の適正距離テーブルの一例を示す図解図である。
【図２０】図２０は図１８実施例の調整処理の動作を示すフロー図である。
【符号の説明】
【０１２８】
１０  …ゲームシステム
１２  …ビデオゲーム装置
１８  …光ディスク
２２  …コントローラ
３４  …モニタ
３４ａ、１０４  …スピーカ
３４ｂ  …センサバー
３４０ｍ、３４０ｎ  …マーカ（赤外線ＬＥＤ）
３６  …ＣＰＵ
４０  …メインメモリ
４２  …ＧＰＵ
５２  …ＤＳＰ
７２  …操作部
７６  …ＬＥＤ
８０  …撮像情報演算部
８６  …マイコン
９８  …撮像素子
１００  …画像処理回路
１０６  …バイブレータ
【図１】
2008125666.tif 000003
【図２】
2008125666.tif 000004
【図３】
2008125666.tif 000005
【図４】
2008125666.tif 000006
【図５】
2008125666.tif 000007
【図６】
2008125666.tif 000008
【図７】
2008125666.tif 000009
【図８】
2008125666.tif 000010
【図９】
2008125666.tif 000011
【図１０】
2008125666.tif 000012
【図１１】
2008125666.tif 000013
【図１２】
2008125666.tif 000014
【図１３】
2008125666.tif 000015
【図１４】
2008125666.tif 000016
【図１５】
2008125666.tif 000017
【図１６】
2008125666.tif 000018
【図１７】
2008125666.tif 000019
【図１８】
2008125666.tif 000020
【図１９】
2008125666.tif 000021
【図２０】
2008125666.tif 000022