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