(57)【特許請求の範囲】
【請求項１】
第１および第２の撮像対象を撮像するための撮像装置と、当該撮像対象との位置関係を算出する位置算出装置であって、
前記撮像装置の撮像画像において前記第１の撮像対象を示す対象画像の大きさを示す第１のサイズと、当該撮像画像において前記第２の撮像対象を示す対象画像の大きさを示す第２のサイズとを取得する対象画像サイズ取得手段と、
前記第１および第２のサイズに基づいて、前記撮像装置と前記撮像対象との位置関係を算出する位置関係算出手段とを備える、位置算出装置。
【請求項２】
前記位置関係算出手段は、前記第１のサイズと当該第１のサイズに対応する前記第１の撮像対象の実際の大きさとに基づいて、前記撮像装置と前記第１の撮像対象との間の第１の距離を算出し、前記第２のサイズと当該第２のサイズに対応する前記第２の撮像対象の実際の大きさとに基づいて、前記撮像装置と前記第２の撮像対象との間の第２の距離を算出する撮像対象距離算出手段を含み、
前記位置関係算出手段は、前記第１および第２の距離と前記第１および第２の撮像対象の間の実際の配置間隔とに基づいて、前記第１および第２の撮像対象の間にある所定位置と前記撮像装置との位置関係を算出する、請求項１に記載の位置算出装置。
【請求項３】
前記位置関係算出手段は、前記第１および第２の撮像対象の間の中点と前記撮像装置との間の距離を前記位置関係として算出する、請求項２に記載の位置算出装置。
【請求項４】
前記位置関係算出手段は、前記第１および第２の撮像対象の間の中点と前記撮像装置とを結ぶ配置方向を前記位置関係として算出する、請求項２に記載の位置算出装置。
【請求項５】
前記位置関係算出手段は、前記第１および第２の撮像対象の一方と前記撮像装置とを結ぶ配置方向を前記位置関係として算出する、請求項２に記載の位置算出装置。
【請求項６】
前記位置関係算出手段は、前記第１および第２の距離と前記配置間隔とに基づいて、前記第１および第２の撮像対象を結ぶ直線と、前記第１の撮像対象と前記撮像装置とを結ぶ直線との間の角度を算出する角度算出手段を含み、
前記位置関係算出手段は、前記角度と前記第１の距離と前記配置間隔の２分の１の長さとに基づいて、前記中点と前記撮像装置との間の距離を算出する、請求項３に記載の位置算出装置。
【請求項７】
前記位置関係算出手段は、前記第１の距離と前記配置間隔の２分の１の長さと前記中点および前記撮像装置の間の距離とに基づいて、前記第１および第２の撮像対象を結ぶ直線と前記中点および前記撮像装置を結ぶ直線との間の配置角度を前記位置関係としてさらに算出する、請求項６に記載の位置算出装置。
【請求項８】
請求項１乃至７のいずれかに記載の位置算出装置と、
前記位置関係算出手段によって算出された前記位置関係に応じて、仮想ゲーム世界に対する所定のゲーム処理を行うゲーム処理手段と、
仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる表示制御手段とを備える、ゲーム装置。
【請求項９】
前記ゲーム処理手段は、前記位置関係に応じて、仮想ゲーム世界に配置される仮想カメラの位置を決定し、
前記表示制御手段は、前記仮想カメラで撮像された仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる、請求項８に記載のゲーム装置。
【請求項１０】
前記ゲーム処理手段は、前記位置関係に応じて、仮想ゲーム世界に登場する所定のオブジェクトの位置を決定する、請求項８に記載のゲーム装置。
【請求項１１】
前記撮像装置は、その作動によって所定の振動を発生する振動発生装置と共に同一の筐体内に設けられ、
前記ゲーム処理手段は、前記位置関係に応じて、前記振動発生装置が発生する振動を制御する、請求項８に記載のゲーム装置。
【請求項１２】
請求項４、５、および７のいずれかに記載の位置算出装置と、
仮想ゲーム世界に対する所定のゲーム処理を行うゲーム処理手段と、
仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる表示制御手段とを備え、
前記位置関係算出手段は、複数の前記撮像装置に対して前記配置方向または前記配置角度をそれぞれ算出し、
前記表示制御手段は、前記表示装置の表示領域を複数の領域に分割し、前記配置方向または前記配置角度に応じてそれぞれの領域を前記撮像装置毎に割り当てる、ゲーム装置。
【請求項１３】
請求項１乃至７のいずれかに記載の位置算出装置と、
仮想ゲーム世界に対する所定のゲーム処理を行うゲーム処理手段と、
仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる表示制御手段と、
前記ゲーム処理手段のゲーム処理に応じて、複数のスピーカからサウンドを出力させる音声制御手段とを備え、
前記音声制御手段は、前記位置関係に応じて、前記スピーカから出力する音量を制御する、ゲーム装置。
【請求項１４】
第１および第２の撮像対象を撮像するための撮像装置と、当該撮像対象との位置関係を算出するコンピュータで実行される位置算出プログラムであって、
前記撮像装置の撮像画像において前記第１の撮像対象を示す対象画像の大きさを示す第１のサイズと、当該撮像画像において前記第２の撮像対象を示す対象画像の大きさを示す第２のサイズとを取得する対象画像サイズ取得ステップと、
前記第１および第２のサイズに基づいて、前記撮像装置と前記撮像対象との位置関係を算出する位置関係算出ステップとを、前記コンピュータに実行させる、位置算出プログラム。
【請求項１５】
前記位置関係算出ステップは、前記第１のサイズと当該第１のサイズに対応する前記第１の撮像対象の実際の大きさとに基づいて、前記撮像装置と前記第１の撮像対象との間の第１の距離を算出し、前記第２のサイズと当該第２のサイズに対応する前記第２の撮像対象の実際の大きさとに基づいて、前記撮像装置と前記第２の撮像対象との間の第２の距離を算出する撮像対象距離算出ステップを含み、
前記位置関係算出ステップでは、前記第１および第２の距離と前記第１および第２の撮像対象の間の実際の配置間隔とに基づいて、前記第１および第２の撮像対象の間にある所定位置と前記撮像装置との位置関係が算出される、請求項１４に記載の位置算出プログラム。
【請求項１６】
前記位置関係算出ステップでは、前記第１および第２の撮像対象の間の中点と前記撮像装置との間の距離が前記位置関係として算出される、請求項１５に記載の位置算出プログラム。
【請求項１７】
前記位置関係算出ステップでは、前記第１および第２の撮像対象の間の中点と前記撮像装置とを結ぶ配置方向が前記位置関係として算出される、請求項１５に記載の位置算出プログラム。
【請求項１８】
前記位置関係算出ステップでは、前記第１および第２の撮像対象の一方と前記撮像装置とを結ぶ配置方向が前記位置関係として算出される、請求項１５に記載の位置算出プログラム。
【請求項１９】
前記位置関係算出ステップは、前記第１および第２の距離と前記配置間隔とに基づいて、前記第１および第２の撮像対象を結ぶ直線と、前記第１の撮像対象と前記撮像装置とを結ぶ直線との間の角度を算出する角度算出ステップを含み、
前記位置関係算出ステップでは、前記角度と前記第１の距離と前記配置間隔の２分の１の長さとに基づいて、前記中点と前記撮像装置との間の距離が算出される、請求項１６に記載の位置算出プログラム。
【請求項２０】
前記位置関係算出ステップでは、前記第１の距離と前記配置間隔の２分の１の長さと前記中点および前記撮像装置の間の距離とに基づいて、前記第１および第２の撮像対象を結ぶ直線と前記中点および前記撮像装置を結ぶ直線との間の配置角度が前記位置関係としてさらに算出される、請求項１９に記載の位置算出プログラム。
【請求項２１】
請求項１４乃至２０のいずれかに記載の位置算出プログラムが前記コンピュータに実行させるステップと、
前記位置関係算出ステップで算出された前記位置関係に応じて、仮想ゲーム世界に対する所定のゲーム処理を行うゲーム処理ステップと、
仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる表示制御ステップとを、前記コンピュータに実行させる、ゲームプログラム。
【請求項２２】
前記ゲーム処理ステップでは、前記位置関係に応じて、仮想ゲーム世界に配置される仮想カメラの位置が決定され、
前記表示制御ステップでは、前記仮想カメラで撮像された仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる、請求項２１に記載のゲームプログラム。
【請求項２３】
前記ゲーム処理ステップでは、前記位置関係に応じて、仮想ゲーム世界に登場する所定のオブジェクトの位置が決定される、請求項２１に記載のゲームプログラム。
【請求項２４】
前記撮像装置は、その作動によって所定の振動を発生する振動発生装置と共に同一の筐体内に設けられ、
前記ゲーム処理ステップでは、前記位置関係に応じて、前記振動発生装置が発生する振動が制御される、請求項２１に記載のゲームプログラム。
【請求項２５】
請求項１７、１８、および２０のいずれかに記載の位置算出プログラムが前記コンピュータに実行させるステップと、
仮想ゲーム世界に対する所定のゲーム処理を行うゲーム処理ステップと、
仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる表示制御ステップとを、前記コンピュータに実行させ、
前記位置関係算出ステップでは、複数の前記撮像装置に対して前記配置方向または前記配置角度がそれぞれ算出され、
前記表示制御ステップでは、前記表示装置の表示領域を複数の領域に分割し、前記配置方向または前記配置角度に応じてそれぞれの領域が前記撮像装置毎に割り当てられる、ゲームプログラム。
【請求項２６】
請求項１４乃至２０のいずれかに記載の位置算出プログラムが前記コンピュータに実行させるステップと、
仮想ゲーム世界に対する所定のゲーム処理を行うゲーム処理ステップと、
仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる表示制御ステップと、
前記ゲーム処理ステップのゲーム処理に応じて、複数のスピーカからサウンドを出力させる音声制御ステップとを、前記コンピュータに実行させ、
前記音声制御ステップでは、前記位置関係に応じて、前記スピーカから出力する音量が制御される、ゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、位置算出装置、位置算出プログラム、ゲーム装置、およびゲームプログラムに関し、より特定的には、撮像手段を備えた入力装置の位置を算出する位置算出装置および位置算出プログラムや当該位置算出結果に応じた処理を行うゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来、赤外線光源を標識として撮像し、その撮像結果を解析して撮像装置の位置と方向を求める位置検出システムが開示されている（例えば、特許文献１参照）。
【０００３】
特許文献１では、位置検出システムの実施例として撮像装置が取り付けられた銃をゲームコントローラとして狙い撃ちするゲームを開示している。撮像装置は、ブラウン管の４隅に配設された赤外線光源を標識として、当該標識が撮像された撮像画像上の位置に応じて銃がブラウン管に対して指し示している位置を検出する。そして、銃が指し示している位置を照準位置として仮想的な射撃ゲームが実行される。なお、特許文献１の第１５段落に記載されているように、標識を２つ設置した場合、撮像装置の軸と標識の軸とが並行であれば、照準位置と各標識との距離が判ることが記載されている。
【特許文献１】特開平１１−３０５９３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載された位置検出システムにおいては、標識が２つの場合は、撮像装置の軸と標識の軸とが並行でなければ、距離を算出することができない。
【０００５】
それ故に、本発明の目的は、２つの撮像対象を用いて撮像装置が搭載された入力装置と撮像対象との距離の算出を行うとき、撮像対象に対して撮像装置が斜めを向いていても位置関係の算出を可能とする位置算出装置、位置算出プログラム、ゲーム装置、およびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号、ステップ番号（ステップをＳと略称しステップ番号のみを記載する）、図面番号等は、本発明の理解を助けるために後述する最良の形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００７】
第１の発明は、第１および第２の撮像対象（８Ｌ、８Ｒ）を撮像するための撮像装置（７４）と、その撮像対象との位置関係（ｒｅａｌＤ、δ１、δ２）を算出する位置算出装置（３）である。位置算出装置は、対象画像サイズ取得手段（Ｓ１０１）および位置関係算出手段（Ｓ１０７）を備える。対象画像サイズ取得手段は、撮像装置の撮像画像において第１の撮像対象を示す対象画像の大きさ（ｄｉａｍＬ）を示す第１のサイズ（Ｄａ１）と、その撮像画像において第２の撮像対象を示す対象画像の大きさ（ｄｉａｍＲ）を示す第２のサイズ（Ｄａ２）とを取得する。位置関係算出手段は、第１および第２のサイズに基づいて、撮像装置と撮像対象との位置関係を算出する。なお、第１サイズおよび第２サイズは、撮像装置側で算出されたものを対象画像サイズ取得手段で取得してもいいし、対象画像サイズ取得手段が撮像画像から算出して取得してもいい。
【０００８】
第２の発明は、上記第１の発明において、位置関係算出手段は、撮像対象距離算出手段（Ｓ１０３、Ｓ１０５）を含む。撮像対象距離算出手段は、第１のサイズとその第１のサイズに対応する第１の撮像対象の実際の大きさ（ｄｉａｍＭ）とに基づいて、撮像装置と第１の撮像対象との間の第１の距離（ｒｅａｌＤＬ）を算出し、第２のサイズとその第２のサイズに対応する第２の撮像対象の実際の大きさ（ｄｉａｍＭ）とに基づいて、撮像装置と第２の撮像対象との間の第２の距離（ｒｅａｌＤＲ）を算出する。位置関係算出手段は、第１および第２の距離と第１および第２の撮像対象の間の実際の配置間隔（ｍ）とに基づいて、第１および第２の撮像対象の間にある所定位置と撮像装置との位置関係を算出する。
【０００９】
第３の発明は、上記第２の発明において、位置関係算出手段は、第１および第２の撮像対象の間の中点と撮像装置との間の距離（ｒｅａｌＤ）を位置関係として算出する。
【００１０】
第４の発明は、上記第２の発明において、位置関係算出手段は、第１および第２の撮像対象の間の中点と撮像装置とを結ぶ配置方向（δ２）を位置関係として算出する。
【００１１】
第５の発明は、上記第２の発明において、位置関係算出手段は、第１および第２の撮像対象の一方と撮像装置とを結ぶ配置方向（δ１）を位置関係として算出する。
【００１２】
第６の発明は、上記第３の発明において、位置関係算出手段は、角度算出手段（Ｓ１０６）を含む。角度算出手段は、第１および第２の距離と配置間隔とに基づいて、第１および第２の撮像対象を結ぶ直線と、第１の撮像対象と撮像装置とを結ぶ直線との間の角度（δ１）を算出する。位置関係算出手段は、角度と第１の距離と配置間隔の２分の１の長さとに基づいて、中点と撮像装置との間の距離を算出する。
【００１３】
第７の発明は、上記第６の発明において、位置関係算出手段は、第１の距離と配置間隔の２分の１の長さと中点および撮像装置の間の距離とに基づいて、第１および第２の撮像対象を結ぶ直線と中点および撮像装置を結ぶ直線との間の配置角度（δ２）を位置関係としてさらに算出する。
【００１４】
第８の発明は、上記第１〜第７の発明の何れかの位置算出装置と、ゲーム処理手段（３０）と、表示制御手段（３２）とを備えるゲーム装置（３）である。ゲーム処理手段は、位置関係算出手段によって算出された位置関係に応じて、仮想ゲーム世界に対する所定のゲーム処理（図１７〜図１９）を行う。表示制御手段は、仮想ゲーム世界の少なくとも一部を逐次表示装置（２）に表示させる。
【００１５】
第９の発明は、上記第８の発明において、ゲーム処理手段は、位置関係に応じて、仮想ゲーム世界に配置される仮想カメラ（Ｃ）の位置を決定する。表示制御手段は、仮想カメラで撮像された仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる（図１８）。
【００１６】
第１０の発明は、上記第８の発明において、ゲーム処理手段は、位置関係に応じて、仮想ゲーム世界に登場する所定のオブジェクト（ＰＣ）の位置を決定する（図１９）。
【００１７】
第１１の発明は、上記第８の発明において、撮像装置は、その作動によって所定の振動を発生する振動発生装置（７０４）と共に同一の筐体（７、７１）内に設けられる。ゲーム処理手段は、位置関係に応じて、振動発生装置が発生する振動を制御する。
【００１８】
第１２の発明は、上記第４、第５、および第７の発明のいずれかの位置算出装置と、ゲーム処理手段と、表示制御手段とを備えるゲーム装置である。ゲーム処理手段は、仮想ゲーム世界に対する所定のゲーム処理を行う。表示制御手段は、仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる。位置関係算出手段は、複数の撮像装置に対して配置方向または配置角度をそれぞれ算出する。表示制御手段は、表示装置の表示領域を複数の領域に分割し、配置方向または配置角度に応じてそれぞれの領域を撮像装置毎に割り当てる（図１７）。
【００１９】
第１３の発明は、上記第１〜第７の発明のいずれかの位置算出装置と、ゲーム処理手段と、表示制御手段と、音声制御手段（３４）とを備えるゲーム装置である。ゲーム処理手段は、仮想ゲーム世界に対する所定のゲーム処理を行う。表示制御手段は、仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる。音声制御手段は、ゲーム処理手段のゲーム処理に応じて、複数のスピーカ（２ａ）からサウンドを出力させる。音声制御手段は、位置関係に応じて、スピーカから出力する音量を制御する。
【００２０】
第１４の発明は、第１および第２の撮像対象を撮像するための撮像装置と、その撮像対象との位置関係を算出するコンピュータ（３０）で実行される位置算出プログラムである。位置算出プログラムは、対象画像サイズ取得ステップおよび位置関係算出ステップを、コンピュータに実行させる。対象画像サイズ取得ステップは、撮像装置の撮像画像において第１の撮像対象を示す対象画像の大きさを示す第１のサイズと、その撮像画像において第２の撮像対象を示す対象画像の大きさを示す第２のサイズとを取得する。位置関係算出ステップは、第１および第２のサイズに基づいて、撮像装置と撮像対象との位置関係を算出する。
【００２１】
第１５の発明は、上記第１４の発明において、位置関係算出ステップは、撮像対象距離算出ステップを含む。撮像対象距離算出ステップは、第１のサイズとその第１のサイズに対応する第１の撮像対象の実際の大きさとに基づいて、撮像装置と第１の撮像対象との間の第１の距離を算出し、第２のサイズとその第２のサイズに対応する第２の撮像対象の実際の大きさとに基づいて、撮像装置と第２の撮像対象との間の第２の距離を算出する。位置関係算出ステップでは、第１および第２の距離と第１および第２の撮像対象の間の実際の配置間隔とに基づいて、第１および第２の撮像対象の間にある所定位置と撮像装置との位置関係が算出される。
【００２２】
第１６の発明は、上記第１５の発明において、位置関係算出ステップでは、第１および第２の撮像対象の間の中点と撮像装置との間の距離が位置関係として算出される。
【００２３】
第１７の発明は、上記第１５の発明において、位置関係算出ステップでは、第１および第２の撮像対象の間の中点と撮像装置とを結ぶ配置方向が位置関係として算出される。
【００２４】
第１８の発明は、上記第１５の発明において、位置関係算出ステップでは、第１および第２の撮像対象の一方と撮像装置とを結ぶ配置方向が位置関係として算出される。
【００２５】
第１９の発明は、上記第１６の発明において、位置関係算出ステップは、角度算出ステップを含む。角度算出ステップは、第１および第２の距離と配置間隔とに基づいて、第１および第２の撮像対象を結ぶ直線と、第１の撮像対象と撮像装置とを結ぶ直線との間の角度を算出する。位置関係算出ステップでは、角度と第１の距離と配置間隔の２分の１の長さとに基づいて、中点と撮像装置との間の距離が算出される。
【００２６】
第２０の発明は、上記第１９の発明において、位置関係算出ステップでは、第１の距離と配置間隔の２分の１の長さと中点および撮像装置の間の距離とに基づいて、第１および第２の撮像対象を結ぶ直線と中点および撮像装置を結ぶ直線との間の配置角度が位置関係としてさらに算出される。
【００２７】
第２１の発明は、上記第１４〜第２０の発明のいずれかの位置算出プログラムがコンピュータに実行させるステップと、ゲーム処理ステップと、表示制御ステップとを、コンピュータに実行させるゲームプログラムである。ゲーム処理ステップは、位置関係算出ステップで算出された位置関係に応じて、仮想ゲーム世界に対する所定のゲーム処理を行う。表示制御ステップは、仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる。
【００２８】
第２２の発明は、上記第２１の発明において、ゲーム処理ステップでは、位置関係に応じて、仮想ゲーム世界に配置される仮想カメラの位置が決定される。表示制御ステップでは、仮想カメラで撮像された仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる。
【００２９】
第２３の発明は、上記第２１の発明において、ゲーム処理ステップでは、位置関係に応じて、仮想ゲーム世界に登場する所定のオブジェクトの位置が決定される。
【００３０】
第２４の発明は、上記第２１の発明において、撮像装置は、その作動によって所定の振動を発生する振動発生装置と共に同一の筐体内に設けられる。ゲーム処理ステップでは、位置関係に応じて、振動発生装置が発生する振動が制御される。
【００３１】
第２５の発明は、上記第１７、第１８、および第２０の発明のいずれかの位置算出プログラムがコンピュータに実行させるステップと、ゲーム処理ステップと、表示制御ステップとを、コンピュータに実行させるゲームプログラムである。ゲーム処理ステップは、仮想ゲーム世界に対する所定のゲーム処理を行う。表示制御ステップは、コンピュータに実行させ、仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる。位置関係算出ステップでは、複数の撮像装置に対して配置方向または配置角度がそれぞれ算出される。表示制御ステップでは、表示装置の表示領域を複数の領域に分割し、配置方向または配置角度に応じてそれぞれの領域が撮像装置毎に割り当てられる。
【００３２】
第２６の発明は、上記第１４〜第２０の発明のいずれかの位置算出プログラムがコンピュータに実行させるステップと、ゲーム処理ステップと、表示制御ステップと、音声制御ステップとを、コンピュータに実行させるゲームプログラムである。ゲーム処理ステップは、仮想ゲーム世界に対する所定のゲーム処理を行う。表示制御ステップは、仮想ゲーム世界の少なくとも一部を逐次表示装置に表示させる。音声制御ステップは、ゲーム処理ステップのゲーム処理に応じて、複数のスピーカからサウンドを出力させる。音声制御ステップでは、位置関係に応じて、スピーカから出力する音量が制御される。
【発明の効果】
【００３３】
上記第１の発明によれば、撮像画像内における撮像対象を示す対象画像の大きさを用いることによって、撮像対象と撮像装置との位置関係を正確に算出することができる。
【００３４】
上記第２の発明によれば、撮像対象が２つであっても、第１および第２の撮像対象の間にある所定位置と撮像装置との位置関係を正確に算出することができる。
【００３５】
上記第３の発明によれば、２つの撮像対象を結ぶ方向に対して撮像装置が斜めに配置されていても、第１および第２の撮像対象の間にある中点と撮像装置との距離を正確に算出することができる。
【００３６】
上記第４および第５の発明によれば、撮像対象が２つであっても、撮像対象に対してどの方向から撮像装置が撮像しているか算出することができる。
【００３７】
上記第６の発明によれば、２つの撮像対象を結ぶ方向に対して撮像装置が斜めに配置されていても、余弦定理を用いて第１および第２の撮像対象の間にある中点と撮像装置との距離を正確に算出することができる。
【００３８】
上記第７の発明によれば、２つの撮像対象を結ぶ方向に対して撮像装置が斜めに配置されていても、その撮像装置が撮像している方向と第１および第２の撮像対象の間にある中点と撮像装置との距離とを正確に算出することができる。
【００３９】
上記第８の発明によれば、撮像対象と撮像装置との位置関係をゲーム処理に反映させることによって、新たなゲーム操作入力が可能となる。
【００４０】
上記第９の発明によれば、撮像対象に対する撮像装置の撮像方向を変化させることによって、表示装置に表示された表示物の裏側に回り込んで当該表示物を見るような操作が可能となる。また、撮像対象に対して前後に撮像装置を移動させることによって、表示物に近づけるまたは遠ざけて当該表示物を見るような操作が可能となる。したがって、撮像装置の位置に応じて仮想カメラの視線方向や位置が変化するため、あたかも撮像装置本体の動きで仮想カメラを移動させているような操作感覚が得られる。
【００４１】
上記第１０の発明によれば、撮像対象に対して撮像装置の撮像方向を変えることによって、仮想ゲーム世界のオブジェクトが他のオブジェクトと相対する角度を変えるような操作が可能となる。また、撮像対象に対して前後に撮像装置を移動させることによって、操作するオブジェクトを他のオブジェクトに近づけるまたは遠ざけるような操作が可能となる。したがって、あたかも撮像装置本体の動きで仮想ゲーム世界のオブジェクトを移動させているような操作感覚が得られる。
【００４２】
上記第１１の発明によれば、例えば、表示装置に表示された振動源に対する撮像装置の位置関係に応じた振動が振動発生装置に与えられ、当該振動発生装置が設けられた筐体を把持しているプレイヤの手に伝達されるため、プレイヤは、あたかも現実の振動源に近寄ったような感覚を得ることができる。
【００４３】
上記第１２の発明によれば、分割された複数の表示領域を、各撮像装置の位置関係に応じてそれぞれの撮像装置を操作するプレイヤに割り当てることができ、例えば、複数のプレイヤが並ぶ順にそれぞれのプレイヤの表示領域を割り当てることができる。
【００４４】
上記第１３の発明によれば、撮像装置を操作するプレイヤの視聴方向や視聴距離に応じた音量でサウンド再生することができる。
【００４５】
本発明の位置算出プログラムおよびゲームプログラムによれば、コンピュータで実行することによって上述した位置算出装置およびゲーム装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００４６】
図１を参照して、本発明の一実施形態に係る位置算出装置およびゲーム装置について説明する。以下、説明を具体的にするために、当該位置算出装置として機能するゲーム装置を用いたゲームシステム１を一例として説明する。なお、図１は、当該ゲームシステム１を説明するための外観図である。以下、本発明の位置算出装置およびゲーム装置の一例として据置型ゲーム装置を用いて、当該ゲームシステム１について説明する。
【００４７】
図１において、当該ゲームシステム１は、ステレオスピーカ２ａを備えた家庭用テレビジョン受像機等のディスプレイ（以下、モニタと記載する）２に、接続コードを介して接続される据置型ゲーム装置（以下、単にゲーム装置と記載する）３および当該ゲーム装置３に操作情報を与えるコントローラ７によって構成される。ゲーム装置３は、接続端子を介して受信ユニット６が接続される。受信ユニット６は、コントローラ７から無線送信される送信データを受信し、コントローラ７とゲーム装置３とは無線通信によって接続される。また、ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。ゲーム装置３の上部主面には、当該ゲーム装置３の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置３上部の蓋を開くＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク４の脱着が可能となる。
【００４８】
また、ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ２に表示する。なお、本発明の位置算出処理プログラムは、光ディスク４に記憶されたゲームプログラムの一部に含まれているものとする。さらに、ゲーム装置３は、外部メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００４９】
コントローラ７は、その内部に備える通信部７５（後述）から受信ユニット６が接続されたゲーム装置３へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて送信データを無線送信する。コントローラ７は、主にモニタ２に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ７は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力する。
【００５０】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００５１】
図２において、ゲーム装置３は、各種プログラムを実行する例えばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）３０を備える。ＣＰＵ３０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ３０には、メモリコントローラ３１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メインメモリ３３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５が接続される。また、メモリコントローラ３１には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）３６、ビデオＩ／Ｆ３７、外部メモリＩ／Ｆ３８、オーディオＩ／Ｆ３９、およびディスクＩ／Ｆ４１が接続され、それぞれ受信ユニット６、モニタ２、外部メモリカード５、スピーカ２ａ、およびディスクドライブ４０が接続されている。
【００５２】
ＧＰＵ３２は、ＣＰＵ３０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ３３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ３１およびビデオＩ／Ｆ３７を介してモニタ２に出力する。
【００５３】
メインメモリ３３は、ＣＰＵ３０で使用される記憶領域であって、ＣＰＵ３０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ３３は、ＣＰＵ３０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ３３に記憶されたゲームプログラムや各種データ等がＣＰＵ３０によって実行される。
【００５４】
ＤＳＰ３４は、ゲームプログラム実行時にＣＰＵ３０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ３５が接続される。ＡＲＡＭ３５は、ＤＳＰ３４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３５に記憶されたサウンドデータを読み出し、メモリコントローラ３１およびオーディオＩ／Ｆ３９を介してモニタ２に備えるスピーカ２ａに出力させる。
【００５５】
メモリコントローラ３１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ３６は、例えば４つのコントローラＩ／Ｆ３６ａ〜３６ｄで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置３とを通信可能に接続する。例えば、受信ユニット６は、上記コネクタと嵌合し、コントローラＩ／Ｆ３６を介してゲーム装置３と接続される。上述したように受信ユニット６は、コントローラ７からの送信データを受信し、コントローラＩ／Ｆ３６を介して当該送信データをＣＰＵ３０へ出力する。ビデオＩ／Ｆ３７には、モニタ２が接続される。外部メモリＩ／Ｆ３８には、外部メモリカード５が接続され、その外部メモリカード５に設けられたバックアップメモリ等とアクセス可能となる。オーディオＩ／Ｆ３９にはモニタ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ３４がＡＲＡＭ３５から読み出したサウンドデータやディスクドライブ４０から直接出力されるサウンドデータをスピーカ２ａから出力可能に接続される。ディスクＩ／Ｆ４１には、ディスクドライブ４０が接続される。ディスクドライブ４０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスやオーディオＩ／Ｆ３９に出力する。
【００５６】
図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面後方から見た斜視図である。
【００５７】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００５８】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、矢印で示す４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【００５９】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー７２ａの代わりに設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。
【００６０】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、Ｘボタン、Ｙボタン、およびＢボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン７２ｂ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００６１】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００６２】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７から受信ユニット６へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００６３】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコントローラ７を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＡボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。なお、本発明では、操作ボタン７２ｉがモニタ２に表示された表示物を掴むような操作をするためのドラッグボタンとして機能し、操作ボタン７２ｉを押下することによってモニタ２に表示された表示物を掴むことができる。
【００６４】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えば３２ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００６５】
次に、図５を参照して、コントローラ７の内部構造について説明する。なお、図５（ａ）は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を示す斜視図である。図５（ｂ）は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を示す斜視図である。ここで、図５（ｂ）に示す基板７００は、図５（ａ）に示す基板７００の裏面から見た斜視図となっている。
【００６６】
図５（ａ）において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、水晶振動子７０３、無線モジュール７５３、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１（図６参照）に接続される。また、無線モジュール７５３およびアンテナ７５４によって、コントローラ７がワイヤレスコントローラとして機能する。なお、水晶振動子７０３は、後述するマイコン７５１の基本クロックを生成する。
【００６７】
一方、図５（ｂ）において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。そして、操作ボタン７２ｉが撮像情報演算部７４の後方の基板７００の下主面上に取り付けられていて、それよりさらに後方に、電池７０５が収容される。電池７０５とコネクタ７３との間の基板７００の下主面上には、バイブレータ７０４が取り付けられる。このバイブレータ７０４は、例えば振動モータやソレノイドであってよい。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【００６８】
次に、図６を参照して、コントローラ７の内部構成について説明する。なお、図６は、コントローラ７の構成を示すブロック図である。
【００６９】
図６において、コントローラ７は、上述した操作部７２および撮像情報演算部７４の他に、その内部に通信部７５および加速度センサ７０１を備えている。
【００７０】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標やそれらの面積、直径、幅等を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。後述により明らかとなるが、この撮像情報演算部７４から出力される処理結果データに基づいて、コントローラ７の位置や動きに応じた信号を得ることができる。
【００７１】
加速度センサ７０１は、コントローラ７の上下方向、左右方向、および前後方向の３軸でそれぞれ加速度を検知する加速度センサである。なお、加速度センサ７０１は、必要な操作信号の種類によっては、上下方向および左右方向の２軸でそれぞれ加速度を検出する加速度センサが用いられてもかまわない。加速度センサ７０１が検知した加速度を示すデータは、通信部７５へ出力される。なお、加速度センサ７０１は、典型的には静電容量式の加速度センサが用いられるが、他の方式の加速度センサを用いてもかまわない。この加速度センサ７０１から出力される加速度データに基づいて、マイコン７５１やＣＰＵ３０などのコンピュータを利用したソフトウェア処理によってコントローラ７の動きを算出することができる。
【００７２】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。
【００７３】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの加速度信号（加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、加速度データ、処理結果データ）を受信ユニット６へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から受信ユニット６への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、受信ユニット６への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からの加速度データ、および撮像情報演算部７４からの処理結果データがコントローラ７から送信される。そして、ゲーム装置３の受信ユニット６でその電波信号を受信し、ゲーム装置３で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、加速度データ、および処理結果データ）を取得する。そして、ゲーム装置３のＣＰＵ３０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Ｂｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００７４】
図７に示すように、ゲームシステム１でコントローラ７を用いてゲームをプレイするためには、プレイヤは、一方の手（例えば右手）でコントローラ７を把持する（図８および図９参照）。そして、プレイヤは、コントローラ７の前面（撮像情報演算部７４が撮像する光の入射口側）がモニタ２に向くようにコントローラ７を把持する。一方、モニタ２の表示画面近傍には、２つのマーカ８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力し、撮像情報演算部７４の撮像対象となる。
【００７５】
プレイヤがその前面がモニタ２に向くようにコントローラ７を把持することによって、撮像情報演算部７４には２つのマーカ８Ｌおよび８Ｒが出力した赤外光が入射する。そして、赤外線フィルタ７４１およびレンズ７４２を介して、入射した赤外光を撮像素子７４３が撮像し、当該撮像画像を画像処理回路７４４が処理する。ここで、撮像情報演算部７４では、マーカ８Ｌおよび８Ｒから出力される赤外線成分を検出することで、上記撮像画像における当該マーカ８Ｌおよび８Ｒの位置情報（対象画像の位置）や面積、直径、幅等のサイズ情報を取得する。具体的には、画像処理回路７４４は、撮像素子７４３が撮像した画像データを解析して、まず面積情報からマーカ８Ｌおよび８Ｒからの赤外光ではあり得ない画像を除外し、さらに輝度が高い点をマーカ８Ｌおよび８Ｒそれぞれの位置として判別する。そして、撮像情報演算部７４は、判別されたそれらの輝点の重心位置等の位置情報を取得し、上記処理結果データとして出力する。ここで、上記処理結果データである位置情報は、撮像画像における所定の基準点（例えば、撮像画像の中央や左上隅）を原点とした座標値として出力するものでもよく、所定のタイミングにおける輝点位置を基準点として、当該基準位置からの現在の輝点位置の差をベクトルとして出力するものでもよい。つまり、上記対象画像の位置情報は、撮像素子７４３が撮像した撮像画像に対して所定の基準点を設定した場合に、当該基準点に対する差として用いられるパラメータである。このような位置情報をゲーム装置３へ送信することによって、ゲーム装置３では、基準からの上記位置情報の差に基づいて、マーカ８Ｌおよび８Ｒに対する撮像情報演算部７４、すなわちコントローラ７の動き、姿勢、位置等に応じた信号の変化量を得ることができる。具体的には、コントローラ７が動かされることによって、通信部７５から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、３次元空間に対してコントローラ７の移動方向に沿った方向入力や座標入力を行うことができる。
【００７６】
また、撮像情報演算部７４が撮像画像におけるマーカ８Ｌおよび８Ｒの対象画像それぞれの面積、直径、および幅等の何れかを示すサイズ情報を利用することによって、さらに詳細な３次元空間に対するコントローラ７の位置を解析できる。具体的には、ゲーム装置３では、マーカ８Ｌおよび８Ｒに対して斜めの位置から撮像情報演算部７４によって撮像された、すなわちモニタ２に対して斜めの位置からコントローラ７を操作した場合でも、そのマーカ８Ｌおよび８Ｒからの距離を求めることが可能となる。後述する処理動作例では、ゲーム装置３が上記重心位置の座標に加えて上記サイズ情報も処理結果データとして出力する例を用いる。
【００７７】
このように、コントローラ７の撮像情報演算部７４によって、固定的に設置されたマーカ（実施例では、２つのマーカ８Ｌおよび８Ｒからの赤外光）を撮像することによって、ゲーム装置３におけるゲーム処理において、コントローラ７から出力されるデータを処理してコントローラ７の動き、姿勢、位置等に対応した操作が可能となり、ボタンを押下するような操作ボタンや操作キーとは異なった直感的な操作入力となる。また、上述したように上記マーカは、モニタ２の表示画面近傍に設置されているため、マーカに対する位置をモニタ２の表示画面に対するコントローラ７の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コントローラ７の動き、姿勢、位置等による処理結果データは、モニタ２の表示画面に直接作用する操作入力として用いることができる。なお、ゲームシステム１では、マーカ８Ｌおよび８Ｒを撮像した撮像画像を用いて、マーカ８Ｌおよび８Ｒからコントローラ７までの距離や操作角度もモニタ２の表示画面に直接作用する操作入力として用いることができるが、詳細な動作については後述する。
【００７８】
図８および図９を参照して、プレイヤがコントローラ７を一方の手で把持した状態について説明する。なお、図８は、プレイヤがコントローラ７を右手で把持した状態をコントローラ７の前面側から見た一例である。図９は、プレイヤがコントローラ７を右手で把持した状態をコントローラ７の左側面側から見た一例である。
【００７９】
図８および図９に示すように、コントローラ７は、全体として大人や子供の片手で把持可能な大きさである。そして、プレイヤの親指をコントローラ７の上面（例えば、十字キー７２ａ付近）に添え、プレイヤの人差し指をコントローラ７下面の凹部（例えば、操作ボタン７２ｉ付近）に添えたとき、コントローラ７の前面に設けられている撮像情報演算部７４の光入射口がプレイヤの前方方向に露出する。なお、このようなコントローラ７に対する把持状態は、プレイヤの左手であっても同様に行えることは言うまでもない。
【００８０】
このように、コントローラ７は、プレイヤが片手で把持した状態で十字キー７２ａや操作ボタン７２ｉ等の操作部７２を容易に操作することができる。さらに、プレイヤがコントローラ７を片手で把持したとき、当該コントローラ７の前面に設けられている撮像情報演算部７４の光入射口が露出するため、上述した２つのマーカ８Ｌおよび８Ｒからの赤外光を容易に当該光入射口から取り入れることができる。つまり、プレイヤは、コントローラ７が有する撮像情報演算部７４の機能を阻害することなくコントローラ７を片手で把持することができる。したがって、プレイヤがコントローラ７を把持した手を表示画面に対して動かすことによって、コントローラ７は、プレイヤの手の運動が表示画面に直接作用する操作入力機能をさらに備えることができる。
【００８１】
ここで、図１０に示すように、マーカ８Ｌおよび８Ｒは、それぞれ視野角θ１を有している。また、撮像素子７４３は、視野角θ２を有している。例えば、マーカ８Ｌおよび８Ｒの視野角θ１は共に３４°（半値角）であり、撮像素子７４３の視野角θ２は４１°である。そして、撮像素子７４３の視野角θ２の中にマーカ８Ｌおよび８Ｒが共に存在し、マーカ８Ｌの視野角θ１の中でかつマーカ８Ｒの視野角θ１の中に撮像素子７４３が存在するとき、ゲーム装置３は、２つのマーカ８Ｌおよび８Ｒによる高輝度点に関する位置情報やサイズ情報を用いてコントローラ７の位置（マーカ８Ｌおよび８Ｒからの距離や角度を含む）を算出する。
【００８２】
次に、図１１を参照して、プレイヤがマーカ８Ｌおよび８Ｒに対して前後方向に操作および角度を変化させる一例について説明する。なお、図１１は、プレイヤＵがマーカ８Ｌおよび８Ｒに対して前後方向に操作および角度を変化させる一例を示す上面図である。
【００８３】
図１１において、プレイヤＵは、コントローラ７の前面をマーカ８Ｌおよび８Ｒ（モニタ２）に向けて、当該コントローラ７を把持している。そして、マーカ８Ｌおよび８Ｒの中点からコントローラ７の前面までの距離を距離ｒｅａｌＤとする。また、マーカ８Ｌおよび８Ｒを結ぶ直線と上記中点からコントローラ７の前面を結ぶ直線との角度を角度δ２とする。ここで、図１１に示す状態Ａでは、プレイヤＵが距離ｒｅａｌＤ０および角度δ２０となる位置でコントローラ７を把持している。そして、プレイヤＵは、コントローラ７をモニタ２に向かって前後に動かして角度を変えることによって、マーカ８Ｌおよび８Ｒの中点からコントローラ７の前面までの距離ｒｅａｌＤや角度δ２を変化させることができる。例えば、プレイヤＵがコントローラ７をモニタ２に向かって右前に動かすことによって、距離ｒｅａｌＤ０から距離ｒｅａｌＤｎおよび角度δ２０から角度δ２ｎの位置へコントローラ７が移動する（状態Ｂ）。また、プレイヤＵがコントローラ７をモニタ２に向かって右後ろに動かすことによって、距離ｒｅａｌＤ０から距離ｒｅａｌＤｆおよび角度δ２０から角度δ２ｆの位置へコントローラ７が移動する（状態Ｃ）。このような距離ｒｅａｌＤおよび角度δ２を算出できれば、コントローラ７とマーカ８Ｌおよび８Ｒとの位置関係に応じた操作が可能となる。
【００８４】
次に、ゲームシステム１において行われるゲーム処理の詳細を説明する。まず、図１２を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図１２は、ゲーム装置３のメインメモリ３３に記憶される主なデータを示す図である。
【００８５】
図１２に示すように、メインメモリ３３には、操作情報Ｄａ、操作状態情報Ｄｂ、および装置情報Ｄｃ等が記憶される。なお、メインメモリ３３には、図１２に示す情報に含まれるデータの他、ゲーム処理に必要なデータが適宜記憶される。
【００８６】
操作情報Ｄａは、コントローラ７から送信データとして送信されてくる一連の操作情報であり、最新の操作情報に更新される。操作情報Ｄａには、上述の処理結果データの位置情報に相当する第１座標データＤａ１および第２座標データＤａ２が含まれる。第１座標データＤａ１は、撮像素子７４３が撮像した撮像画像に対して、２つのマーカ８Ｌおよび８Ｒのうちの一方の対象画像の位置（撮像画像内における位置）を表す座標のデータである。第２座標データＤａ２は、他方のマーカの対象画像の位置（撮像画像内における位置）を表す座標のデータである。例えば、マーカの画像の位置は、撮像画像におけるＸＹ座標系によって表される。
【００８７】
また、操作情報Ｄａには、撮像画像から得られる処理結果データの一例の座標データ（第１座標データＤａ１および第２座標データＤａ２）の他、上述の処理結果データのサイズ情報に相当する第１サイズデータＤａ３および第２サイズデータＤａ４が含まれる。第１サイズデータＤａ３は、撮像素子７４３が撮像した撮像画像に対して、マーカ８Ｌを示す対象画像の面積、直径、および幅等を表す大きさのデータである。第２サイズデータＤａ４は、撮像素子７４３が撮像した撮像画像に対して、マーカ８Ｒを示す対象画像の面積、直径、および幅等を表す大きさのデータである。なお、以下に説明する例では、第１サイズデータＤａ３はマーカ８Ｌを示す対象画像の直径ｄｉａｍＬを示すデータとし、第２サイズデータＤａ４はマーカ８Ｒを示す対象画像の直径ｄｉａｍＲを示すデータとする。また、操作情報Ｄａには、操作部７２から得られるキーデータＤａ５等が含まれる。なお、ゲーム装置３に備える受信ユニット６は、コントローラ７から所定間隔例えば５ｍｓごとに送信される操作情報Ｄａを受信し、受信ユニット６に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である例えば１フレーム毎（１／６０秒）に読み出され、その最新の情報がメインメモリ３３に記憶される。
【００８８】
操作状態情報Ｄｂは、コントローラ７の操作状態を撮像画像に基づいて判断した情報である。操作状態情報Ｄｂは、撮像画像に含まれる対象画像（マーカ）の位置、向き、および大きさ等から得られるデータであり、具体的には、方向データＤｂ１、中点データＤｂ２、距離データＤｂ３、および角度データＤｂ４等を含む。方向データＤｂ１は、第１座標データＤａ１から第２座標データＤａ２への方向を示すデータである。ここでは、方向データＤｂ１は、第１座標データＤａ１が示す位置を始点とし第２座標データＤａ２が示す位置を終点とするベクトルのデータとする。中点データＤｂ２は、上記撮像画像において、第１座標データＤａ１が示す位置と第２座標データＤａ２が示す位置との中点の座標を示す。ここで、２つのマーカ（マーカ８Ｌおよび８Ｒ）の画像を１つの対象画像としてみた場合、中点データＤｂ２は、対象画像の位置を示すことになる。
【００８９】
距離データＤｂ３は、マーカ８Ｌまでの距離データＤｂ３ａ、マーカ８Ｒまでの距離データＤｂ３ｂ、中点までの距離データＤｂ３ｃを含んでいる。マーカ８Ｌまでの距離データＤｂ３ａは、マーカ８Ｌからコントローラ７までの距離ｒｅａｌＤＬを示すデータである。マーカ８Ｒまでの距離データＤｂ３ｂは、マーカ８Ｒからコントローラ７までの距離ｒｅａｌＤＲを示すデータである。中点までの距離データＤｂ３ｃは、マーカ８Ｌおよび８Ｒの中点からコントローラ７までの距離ｒｅａｌＤを示すデータである。角度データＤｂ４は、マーカ８Ｌおよびコントローラ７を結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度δ１を示すデータである。
【００９０】
装置情報Ｄｃは、コントローラ７やマーカ８Ｌおよび８Ｒに関して、予め設定された情報である。例えば、装置情報Ｄｃは、撮像素子７４３の視野角θ、撮像画像の幅ｗｉ、マーカ８Ｌおよび８Ｒの設置間隔ｍ、マーカ８Ｌおよび８Ｒの大きさ（直径ｄｉａｍＭ）等の固定値を示すデータである。
【００９１】
次に、図１３〜図１６を参照して、ゲーム装置３において行われる位置算出処理の詳細を説明する。なお、図１３は、ゲーム装置３において実行される位置算出処理の流れを示すフローチャートである。図１４〜図１６は、位置算出処理の動作を説明するための図である。なお、図１３に示すに示すフローチャートにおいては、処理のうち、ゲームプログラムに含まれる位置算出処理プログラムを実行してコントローラ７の位置を算出する処理について説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図１３では、ＣＰＵ３０が実行する各ステップを「Ｓ」と略称する。
【００９２】
ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ３０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ３３に読み込まれ、ＣＰＵ３０によって当該ゲームプログラムの実行が開始される。図１３に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【００９３】
図１３において、ＣＰＵ３０は、コントローラ７から受信した操作情報から取得した第１サイズデータＤａ３および第２サイズデータＤａ４を取得し（ステップ１０１）、処理を次のステップに進める。図１４に示すように、第１サイズデータＤａ３および第２サイズデータＤａ４は、それぞれマーカ８Ｌおよび８Ｒを示す撮像画像の大きさを示すデータであり、第１サイズデータＤａ３がマーカ８Ｌを撮像した画像の直径ｄｉａｍＬを示し、第２サイズデータＤａ４がマーカ８Ｒを撮像した画像の直径ｄｉａｍＲを示している。例えば、図１４に示すように、コントローラ７がマーカ８Ｌおよび８Ｒを結ぶ方向に対して斜めに配置された場合、直径ｄｉａｍＬと直径ｄｉａｍＲとに差が生じる。
【００９４】
なお、ステップ１０１で受信する操作情報には、マーカ８Ｌおよび８Ｒの第１サイズデータＤａ３および第２サイズデータＤａ４の他、撮像画像内における位置を示す座標データ（第１座標データＤａ１および第２座標データＤａ２）や、コントローラ７の操作部７２がどのように操作されたか示すデータ（キーデータＤａ３）が含まれている。ここでは、通信部７５は、所定の時間間隔（例えば５ｍｓ間隔）で操作情報をゲーム装置３へ送信する。そして、ＣＰＵ３０は、１フレーム毎に操作情報を利用するものとする。したがって、図１３に示すステップ１０１〜ステップ１０７の処理ループは、１フレーム毎に繰り返し実行される。
【００９５】
次に、ＣＰＵ３０は、第１サイズデータＤａ３（直径ｄｉａｍＬ）に基づいて、マーカ８Ｌの設置位置における撮像素子７４３の撮像可能範囲の幅ｗ（図１５参照）を算出する（ステップ１０２）。幅ｗは、
ｗ＝ｗｉ×ｄｉａｍＭ／ｄｉａｍＬ
で算出される。ここで、ｄｉａｍＭは、設置されたマーカ８Ｌおよび８Ｒの直径（実際の直径）であり、固定値として装置情報Ｄｃに格納されている。
【００９６】
次に、ＣＰＵ３０は、上記ステップ１０２で算出した幅ｗおよび撮像素子７４３の視野角θを用いて、マーカ８Ｌと撮像素子７４３（コントローラ７）との距離ｒｅａｌＤＬ（図１５参照）を算出し、距離データＤｂ３ａとして記憶する（ステップ１０３）。距離ｒｅａｌＤＬは、
ｒｅａｌＤＬ＝（ｗ／２）／｛ｔａｎ（θ／２）｝
の関係式から算出することができる。ここで、視野角θは固定値として装置情報Ｄｃに格納されている。
【００９７】
次に、ＣＰＵ３０は、第２サイズデータＤａ４（直径ｄｉａｍＲ）に基づいて、マーカ８Ｒの設置位置に対する撮像素子７４３の撮像可能範囲の幅ｗを算出する（ステップ１０４）。ここで、幅ｗは、
ｗ＝ｗｉ×ｄｉａｍＭ／ｄｉａｍＲ
で算出される。
【００９８】
次に、ＣＰＵ３０は、上記ステップ１０４で算出した幅ｗおよび撮像素子７４３の視野角θを用いて、マーカ８Ｒと撮像素子７４３（コントローラ７）との距離ｒｅａｌＤＲを算出し、距離データＤｂ３ｂとして記憶する（ステップ１０５）。ここで、距離ｒｅａｌＤＲは、
ｒｅａｌＤＲ＝（ｗ／２）／｛ｔａｎ（θ／２）｝
の関係式から算出することができる。
【００９９】
次に、ＣＰＵ３０は、距離ｒｅａｌＤＬおよびｒｅａｌＤＲとマーカ８Ｌおよび８Ｒの設置間隔ｍとを用いて角度δ１を算出して、角度データＤｂ４として記憶する（ステップ１０６）。図１６に示すように、角度δ１は、マーカ８Ｌおよびコントローラ７を結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度である。角度δ１は、余弦定理を用いて、
ｃｏｓδ１＝（ｒｅａｌＤＬ2×ｍ2−ｒｅａｌＤＲ2）／（２×ｒｅａｌＤＬ×ｍ）
で算出される。
【０１００】
次に、ＣＰＵ３０は、マーカ８Ｌおよび８Ｒ間の中点とコントローラ７との距離ｒｅａｌＤ（図１６参照）を算出して、距離データＤｂ３ｃとして記憶し（ステップ１０７）、当該フローチャートによる処理を終了する。距離ｒｅａｌＤは、余弦定理を用いて、
【数１】
0004798705.tif 000002
で算出される。
【０１０１】
なお、上記中点およびコントローラ７を結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度δ２（図１６参照）を求めることも可能である。角度δ２は、距離ｒｅａｌＤ、距離ｒｅａｌＤＬ、および設置間隔ｍを用いて、余弦定理から、
ｃｏｓδ２＝｛ｒｅａｌＤ2×（ｍ／２）2−ｒｅａｌＤＬ2｝
／｛２×ｒｅａｌＤ×（ｍ／２）｝
で算出される。この角度δ２を得ることによって、コントローラ７がマーカ８Ｌおよび８Ｒに対してどのような角度位置に配置されているか算出することができ、コントローラ７の角度位置に応じた処理が可能となる。
【０１０２】
このように算出されたコントローラ７の位置（距離ｒｅａｌＤ、角度δ２）を用いて、ゲーム装置３は様々な処理を行うことができる。以下、コントローラ７の位置を用いた処理例を説明する。
【０１０３】
コントローラ７の位置を用いた第１の処理例は、当該位置に応じてモニタ２の表示領域を分割する態様である。図１７は、コントローラ７ａを操作するプレイヤＵａとコントローラ７ｂを操作するプレイヤＵｂとがゲーム装置３を操作するとき、モニタ２の表示領域が分割される一例を示す図である。
【０１０４】
複数のプレイヤがそれぞれ別のコントローラを操作して１つのゲーム装置を操作するとき、１つのモニタの表示領域がそれぞれのプレイヤ用に分割されることがある。例えば、２人のプレイヤＵａおよびＵｂが操作するとき、モニタ２の表示領域が左右の２つの表示領域に分割され、それらの表示領域がそれぞれプレイヤＵａおよびＵｂ専用の表示領域となる。このとき、分割された左の表示領域が何れのプレイヤ用であるのかは、一般的に予め固定的に設定されていたり、操作順序で設定されたり、プレイヤのボタン操作によって選択されたりする。
【０１０５】
図１７に示すように、第１の処理例では、コントローラ７ａおよび７ｂそれぞれの角度δ２に応じて、コントローラ７ａおよび７ｂを操作するプレイヤＵａおよびＵｂが用いる表示領域を設定する。図１７の一例では、プレイヤＵａが操作するコントローラ７ａから取得した第１サイズデータＤａ３および第２サイズデータＤａ４に基づいて、マーカ８Ｌおよび８Ｒの中点およびコントローラ７ａを結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度が角度δ２ａであることが算出されている。一方、プレイヤＵｂが操作するコントローラ７ｂから取得した第１サイズデータＤａ３および第２サイズデータＤａ４に基づいて、上記中点およびコントローラ７ｂを結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度が角度δ２ｂ（δ２ｂ＞δ２ａ）であることが算出されている。
【０１０６】
ここで、ゲーム装置３は、算出した角度δ２ａおよびδ２ｂを比較することによって、コントローラ７ａおよび７ｂがモニタ２に向かってどの方向に位置しているか判別することができる。具体的には、図１７の例では角度δ２ｂ＞角度δ２ａであるので、ゲーム装置３は、コントローラ７ｂに対してコントローラ７ａがモニタ２に向かって左側に位置していることを判別できる。この場合、ゲーム装置３は、左右に分割されたモニタ２の表示領域のうち、向かって左側の表示領域をコントローラ７ａ用（つまり、プレイヤＵａ用）に設定する。そして、ゲーム装置３は、向かって右側の表示領域をコントローラ７ｂ用（つまり、プレイヤＵｂ用）に設定する。これによって、分割された複数の表示領域に対して、プレイヤＵａおよびＵｂにとってそれぞれ近い側の表示領域が自分の操作用の表示領域となる。
【０１０７】
なお、上述した第１の処理例の説明では、２人のプレイヤが操作する例を説明したが、３人以上のプレイヤであっても同様に本発明を実現できる。１つのゲーム装置３に対して、ｎ人のプレイヤがそれぞれｎ個のコントローラ７を操作して、モニタ２の表示領域がそれぞれのプレイヤ用として左右ｎ個に分割されるとする。この場合、ｎ個のコントローラ７に対するそれぞれの角度δ２を算出し、それらの角度が小さいコントローラ７から順にモニタ２に向かって左の表示領域をそのコントローラ７で操作する表示領域として割り当てる。これによって、ｎ人のプレイヤがそれぞれ用いる表示領域は、プレイヤがモニタ２に対して左右に並んだ順にそれぞれ割り当てられる。
【０１０８】
コントローラ７の位置を用いた第２の処理例は、当該位置に応じてゲーム画像を生成する仮想カメラを移動させる態様である。図１８は、コントローラ７の位置に応じて仮想カメラＣの位置を変化させる一例を示す図である。
【０１０９】
図１８に示すように、仮想世界に配置されたオブジェクトＯＢＪを仮想カメラＣによって撮像してモニタ２に表示されている。そして、コントローラ７から取得した第１サイズデータＤａ３および第２サイズデータＤａ４に基づいて、マーカ８Ｌおよび８Ｒの中点およびコントローラ７ａを結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度が角度δ２であることが算出されているとする。このとき、ゲーム装置３は、所定の基準方向と仮想カメラＣの視線方向との間の角度が角度δ２になるように、仮想カメラＣを移動させる（図１８の状態）。これによって、仮想カメラＣがオブジェクトＯＢＪを撮像する方向が変化するため、モニタ２に表示されるオブジェクトＯＢＪの表示方向が変化する。したがって、プレイヤは、マーカ８Ｌおよび８Ｒに対するコントローラ７の撮像方向を変化させることによって、オブジェクトＯＢＪの裏側に回り込んで当該オブジェクトＯＢＪを見るような操作が可能となる。また、コントローラ７の位置に応じて仮想カメラＣの視線方向が変化するため、プレイヤは、あたかもコントローラ７本体の動きで仮想カメラＣを移動させているような操作感覚が得られる。
【０１１０】
さらに、コントローラ７から取得した第１サイズデータＤａ３および第２サイズデータＤａ４に基づいて得られる距離ｒｅａｌＤに応じて、仮想カメラＣを移動させてもかまわない。例えば、ゲーム装置３は、現実の距離ｒｅａｌＤに応じた仮想世界の仮想距離ｖｉｒｔｕａｌＤを所定の関数、例えば、
ｖｉｒｔｕａｌＤ＝Ｐ×ｒｅａｌＤ＋Ｑ
を用いて算出する。ここで、Ｐ、Ｑは、任意の定数である。そして、ゲーム装置３は、オブジェクトＯＢＪと仮想カメラＣとの距離が仮想距離ｖｉｒｔｕａｌＤになるように、仮想カメラＣを移動させる。これによって、仮想カメラＣとオブジェクトＯＢＪとの距離が変化するため、モニタ２に表示されるオブジェクトＯＢＪの大きさが変化する。したがって、プレイヤは、マーカ８Ｌおよび８Ｒに対して前後にコントローラ７を移動させることによって、オブジェクトＯＢＪに近づけるまたは遠ざけて当該オブジェクトＯＢＪを見るような操作が可能となる。また、定数Ｐを正の値に設定することによって、プレイヤは、あたかもコントローラ７本体の動きで仮想カメラＣを移動させているような操作感覚が得られる。
【０１１１】
コントローラ７の位置を用いた第３の処理例は、当該位置に応じて仮想世界に配置されたオブジェクトを移動させる態様である。図１９は、コントローラ７の位置に応じて仮想世界のプレイヤキャラクタＰＣａおよびＰＣｂの位置を変化させる一例を示す図である。
【０１１２】
図１９に示すように、コントローラ７ａによって操作されるプレイヤキャラクタＰＣａと、コントローラ７ｂによって操作されるプレイヤキャラクタＰＣｂと、敵キャラクタＥとが仮想世界に配置され、仮想カメラＣによって撮像してモニタ２に表示されている。そして、コントローラ７ａから取得した第１サイズデータＤａ３および第２サイズデータＤａ４に基づいて、マーカ８Ｌおよび８Ｒの中点およびコントローラ７ａを結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度が角度δ２ａであることが算出されているとする。また、コントローラ７ｂから取得した第１サイズデータＤａ３および第２サイズデータＤａ４に基づいて、上記中点およびコントローラ７ｂを結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度が角度δ２ｂであることが算出されているとする（図１７で示した配置関係と同様）。このとき、ゲーム装置３は、プレイヤキャラクタＰＣａおよび敵キャラクタＥを結ぶ方向と所定の基準方向との間の角度が角度δ２ａになるように、プレイヤキャラクタＰＣａを移動させる。また、ゲーム装置３は、プレイヤキャラクタＰＣｂおよび敵キャラクタＥを結ぶ方向と上記基準方向との間の角度が角度δ２ｂになるように、プレイヤキャラクタＰＣｂを移動させる。これによって、プレイヤは、マーカ８Ｌおよび８Ｒに対してコントローラ７の撮像方向を変化させることによって、プレイヤキャラクタＰＣが敵キャラクタＥと相対する角度を変えるような操作が可能となる。そして、プレイヤは、あたかもコントローラ７本体の動きでプレイヤキャラクタＰＣを移動させているような操作感覚が得られる。
【０１１３】
さらに、コントローラ７ａおよび７ｂからそれぞれ取得した第１サイズデータＤａ３および第２サイズデータＤａ４に基づいて得られる距離ｒｅａｌＤａおよびｒｅａｌＤｂに応じて、プレイヤキャラクタＰＣを移動させてもかまわない。例えば、ゲーム装置３は、現実の距離ｒｅａｌＤａおよびｒｅａｌＤｂに応じた仮想世界の仮想距離ｖｉｒｔｕａｌＤａおよびｖｉｒｔｕａｌＤｂを上述した関数を用いて算出する。そして、ゲーム装置３は、プレイヤキャラクタＰＣａと敵キャラクタＥとの距離が仮想距離ｖｉｒｔｕａｌＤａとなるようにプレイヤキャラクタＰＣａを移動させる。また、ゲーム装置３は、プレイヤキャラクタＰＣｂと敵キャラクタＥとの距離が仮想距離ｖｉｒｔｕａｌＤｂとなるようにプレイヤキャラクタＰＣｂを移動させる。これによって、プレイヤは、マーカ８Ｌおよび８Ｒに対して前後にコントローラ７を移動させることによって、操作するプレイヤキャラクタＰＣを敵キャラクタＥに近づけるまたは遠ざけるような操作が可能となる。つまり、上述した角度δ２に応じたプレイヤキャラクタＰＣの移動と合わせて、コントローラ７を操作するプレイヤ自身があたかも敵キャラクタＥの前に存在しているような操作感覚が得られる。
【０１１４】
他のコントローラ７の位置を用いた処理例として、当該位置に応じてスピーカ２ａから再生する音量を変化させてもかまわない。上述したように角度δ２を得ることによって、コントローラ７がマーカ８Ｌおよび８Ｒに対してどのような角度位置に配置されているか、すなわちモニタ２の左右に設置されたスピーカ２ａからの配置角度を算出することができる。したがって、左右のスピーカ２ａから再生されるサウンドの音量バランスを角度δ２に応じて調整する（例えば、コントローラ７から遠い側となる一方のスピーカ２ａから再生する音量を他方のスピーカ２ａから再生する音量より大きく調整する）ことによって、コントローラ７を操作するプレイヤに対して再生されるステレオサウンドの左右の音量バランスを視聴方向に合わせて良好な状態に調整することができる。また、上述したように距離ｒｅａｌＤを得ることによって、コントローラ７がマーカ８Ｌおよび８Ｒに対して配置されている距離、すなわちモニタ２の左右に設置されたスピーカ２ａからコントローラ７までの距離を算出することができる。したがって、左右のスピーカ２ａから再生されるサウンドの音量を距離ｒｅａｌＤに応じて調整する（例えば、距離ｒｅａｌＤが相対的に長くなれば、左右のスピーカ２ａから再生する音量を相対的に大きくする）ことによって、コントローラ７を操作するプレイヤの視聴距離に応じて適切な音量でサウンド再生することができる。
【０１１５】
さらに、他のコントローラ７の位置を用いた処理例として、いわゆる振動対応ゲームをゲーム装置３が実行する際、当該位置に応じてバイブレータ７０４の振幅および／または振動周波数を変化させてもかまわない。例えば、モニタ２に仮想的に表示された振動源側にコントローラ７が近寄ったことを角度δ２や距離ｒｅａｌＤが示すとき、ゲーム装置３は、振幅拡大または振動周波数を上げてバイブレータ７０４を作動させる。これによって、振動源に近寄ったような振動がコントローラ７を把持しているプレイヤの手に伝達されるため、プレイヤは、あたかも現実の振動源に近寄ったような感覚を得ることができる。
【０１１６】
このように、本発明の位置算出装置によれば、撮像画像内における撮像対象（例えば、マーカ８Ｌおよび８Ｒ）の対象画像サイズを用いることによって、撮像対象と撮像装置（コントローラ７）との位置関係を正確に算出することができる。例えば、２つの撮像対象を結ぶ方向に対して撮像装置が配置されている角度を算出することができる。また、上記撮像対象を結ぶ方向に対して撮像装置が斜めに配置されていても、撮像対象から撮像装置までの距離を正確に算出することができる。また、撮像対象と撮像装置との位置関係を示す情報に応じた処理を行うことによって、当該処理に対して撮像装置の位置に応じた操作が可能となり、今までにない新たな操作入力手段が実現できる。例えば、ゲーム処理を行うゲーム装置が、撮像対象と撮像装置を備えたゲームコントローラとの位置関係を示す情報を得ることによって、当該情報に応じたゲーム処理が可能となり、ゲームコントローラを操作するプレイヤは、当該ゲームコントローラ本体の位置に応じた新たなゲーム操作が可能となる。
【０１１７】
なお、上述した位置算出処理では、マーカ８Ｌおよび８Ｒの直径と当該マーカ８Ｌおよび８Ｒが撮像された画像の直径とを用いたが、他のサイズ情報を用いてもかまわない。例えば、マーカ８Ｌおよび８Ｒの面積と当該マーカ８Ｌおよび８Ｒが撮像された画像の面積とを用いても、同様に距離ｒｅａｌＤや角度δ２を算出することができる。また、マーカ８Ｌおよび８Ｒの形状が既知の情報であるため、マーカ８Ｌおよび８Ｒが撮像された画像の面積の情報から、所望の長さ（直径、幅等）が算出可能となる。したがって、ゲーム装置３がマーカ８Ｌおよび８Ｒが撮像された画像の面積情報を得たとしても、当該面積情報を直径に置換した後、上述と同様の位置算出処理が可能であることは言うまでもない。
【０１１８】
また、上述した処理例では、マーカ８Ｌおよび８Ｒに対するコントローラ７の角度位置を示すパラメータとして角度δ２を用いたが、上記ステップ１０６で算出する角度δ１（図１６参照）を用いてもかまわない。さらに、マーカ８Ｒおよびコントローラ７を結ぶ直線と、マーカ８Ｌおよび８Ｒを結ぶ直線とによって成される角度を算出して、当該角度を上記角度位置を示すパラメータとして用いてもかまわない。また、上述した距離や角度の演算手順は単なる一例に過ぎず、他の演算手順で距離および角度を算出してもかまわない。
【０１１９】
また、上述した説明では、撮像対象と撮像装置（コントローラ７）との位置関係を示す情報がリアルタイムに処理に反映される例を用いたが、所定の操作がされているとき（例えば、操作ボタン７２ｉが押下されているとき）のみ当該情報が処理に反映されるようにしてもかまわない。
【０１２０】
また、上述した説明では、コントローラ７とゲーム装置３とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置３とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ７に接続されたケーブルをゲーム装置３の接続端子に接続する。
【０１２１】
また、コントローラ７から無線送信される送信データを受信する受信手段として、ゲーム装置３の接続端子に接続された受信ユニット６を用いて説明したが、ゲーム装置３の本体内部に設けられた受信モジュールによって当該受信手段を構成してもかまわない。この場合、受信モジュールが受信した送信データは、所定のバスを介してＣＰＵ３０に出力される。
【０１２２】
また、撮像素子７４３で撮像した画像データを解析してマーカ８Ｌおよび８Ｒからの赤外光のサイズや位置座標やそれらの重心座標等を取得し、それらを処理結果データとしてコントローラ７内で生成してゲーム装置３へ送信する態様を説明したが、他の処理段階のデータをコントローラ７からゲーム装置３へ送信してもかまわない。例えば、撮像素子７４３が撮像した画像データをコントローラ７からゲーム装置３へ送信し、ＣＰＵ３０において上記解析処理を行って処理結果データを取得してもかまわない。この場合、コントローラ７に設けられた画像処理回路７４４が不要となる。また、上記画像データの解析途中のデータをコントローラ７からゲーム装置３へ送信してもかまわない。例えば、画像データから得られる輝度および位置等を示すデータをコントローラ７からゲーム装置３へ送信し、ＣＰＵ３０において残りの解析処理を行って処理結果データを取得してもかまわない。
【０１２３】
また、上述した説明では、２つのマーカ８Ｌおよび８Ｒからの赤外光を、コントローラ７の撮像情報演算部７４の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、３つ以上のマーカをモニタ２の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部７４の撮像対象としてもかまわない。
【０１２４】
また、上述したコントローラ７の形状や、それらに設けられている操作部７２の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コントローラ７における撮像情報演算部７４の位置（撮像情報演算部７４の光入射口）は、ハウジング７１の前面でなくてもよく、ハウジング７１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【０１２５】
また、上記実施例では、ゲーム装置３をコントローラ７で操作しているが、撮像手段を備えた入力装置で操作される一般的なパーソナルコンピュータなどの情報処理装置でもかまわない。この場合、この情報処理装置のコンピュータが実行するプログラムは、典型的にゲームに用いられるゲームプログラムに限らず、上記情報処理装置に対する処理に用いられる汎用的なプログラムである。
【産業上の利用可能性】
【０１２６】
本発明に係る位置算出装置、位置算出プログラム、ゲーム装置、およびゲームプログラムは、撮像対象と撮像装置との位置関係等を正確に算出することができ、当該位置関係を用いて操作する処理として有用である。
【図面の簡単な説明】
【０１２７】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置３の機能ブロック図
【図３】図３のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面後方から見た斜視図
【図５】図３のコントローラ７の上筐体を外した状態を示す斜視図
【図６】図３のコントローラ７の構成を示すブロック図
【図７】図３のコントローラ７を用いてゲーム操作するときの状態を概説する図解図
【図８】プレイヤがコントローラ７を右手で把持した状態をコントローラ７の前面側から見た一例
【図９】プレイヤがコントローラ７を右手で把持した状態をコントローラ７の左側面側から見た一例
【図１０】マーカ８Ｌおよび８Ｒと撮像情報演算部７４との視野角を説明するための図
【図１１】プレイヤＵがマーカ８Ｌおよび８Ｒに対して前後方向に操作および角度を変化させる方向へ操作する一例を示す上面図
【図１２】ゲーム装置３のメインメモリ３３に記憶される主なデータを示す図
【図１３】ゲーム装置３において実行される位置算出処理の流れを示すフローチャート
【図１４】位置算出処理の動作を説明するための図
【図１５】位置算出処理の動作を説明するための図
【図１６】位置算出処理の動作を説明するための図
【図１７】コントローラ７ａを操作するプレイヤＵａとコントローラ７ｂを操作するプレイヤＵｂとがゲーム装置３を操作するとき、モニタ２の表示領域が分割される一例を示す図
【図１８】コントローラ７の位置に応じて仮想カメラＣの位置を変化させる一例を示す図
【図１９】コントローラ７の位置に応じて仮想世界のプレイヤキャラクタＰＣａおよびＰＣｂの位置を変化させる一例を示す図
【符号の説明】
【０１２８】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
３０…ＣＰＵ
３１…メモリコントローラ
３２…ＧＰＵ
３３…メインメモリ
３４…ＤＳＰ
３５…ＡＲＡＭ
３６…コントローラＩ／Ｆ
３７…ビデオＩ／Ｆ
３８…外部メモリＩ／Ｆ
３９…オーディオＩ／Ｆ
４０…ディスクドライブ
４１…ディスクＩ／Ｆ
４…光ディスク
５…外部メモリカード
６…受信ユニット
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０３…水晶振動子
７０４…バイブレータ
７０５…電池
８…マーカ
【図１】
0004798705.tif 000003
【図２】
0004798705.tif 000004
【図３】
0004798705.tif 000005
【図４】
0004798705.tif 000006
【図５】
0004798705.tif 000007
【図６】
0004798705.tif 000008
【図７】
0004798705.tif 000009
【図８】
0004798705.tif 000010
【図９】
0004798705.tif 000011
【図１０】
0004798705.tif 000012
【図１１】
0004798705.tif 000013
【図１２】
0004798705.tif 000014
【図１３】
0004798705.tif 000015
【図１４】
0004798705.tif 000016
【図１５】
0004798705.tif 000017
【図１６】
0004798705.tif 000018
【図１７】
0004798705.tif 000019
【図１８】
0004798705.tif 000020
【図１９】
0004798705.tif 000021