(57)【要約】    【構成】  ゲーム装置１２はＣＰＵ（４０）を含み、このＣＰＵ（４０）は３次元画像処理を実行する。ユーザの指示に従って表示画面（１００）上のカーソル（１０６）が移動されると、それに従って注視点も移動される。このとき、注視点面が元の位置に維持されるように、視体積（錐体２００）が変形される。したがって、表示画面（１００）において、注視点と消失点（１１０）とが重なる。    【効果】  注視点と消失点とが重なるため、３次元仮想空間における真正面が２次元の表示画面においても真正面となり、３次元仮想空間を容易に認識できる表示画面を表示することができる。【選択図】  図１
2010072668.tif 000002
【特許請求の範囲】
【請求項１】
３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する３次元画像処理装置のコンピュータにおいて実行される３次元画像処理プログラムであって、
前記３次元画像処理装置のコンピュータを、
入力装置からの操作入力を検出する操作入力検出手段、
前記操作入力検出手段によって検出された操作入力に基づいて前記３次元仮想空間内または前記撮影画像上でオブジェクトを移動させるオブジェクト移動手段、
前記３次元仮想空間内または前記撮影画像上における前記オブジェクトの位置に基づいて前記仮想カメラの注視点および位置座標を設定するパラメータ設定手段、および
前記オブジェクト移動手段によって前記オブジェクトが移動された場合に、前記仮想カメラの注視点を含み、かつ前記撮影画像の投影面に平行である平面を移動させないように、前記仮想カメラの視体積を変形させる視体積変形手段として機能させる、３次元画像処理プログラム。
【請求項２】
３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する３次元画像処理装置のコンピュータにおいて実行される３次元画像処理プログラムであって、
前記３次元画像処理装置のコンピュータを、
前記入力装置からの操作入力を検出する操作入力検出手段、
前記操作入力検出手段によって検出された操作入力に基づいて前記３次元仮想空間内または前記撮影画像上でオブジェクトを移動させるオブジェクト移動手段、
前記３次元仮想空間内または前記撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する変位量検出手段、および
前記変位量検出手段によって検出された変位量が０でない場合に、前記撮影画像の投影面において、当該変位量を打ち消すとともに、前記オブジェクトの位置と前記３次元仮想空間における消失点とが重なるように、前記仮想カメラのパラメータを設定するパラメータ設定手段として機能させる、３次元画像処理プログラム。
【請求項３】
前記パラメータ設定手段によって設定されるパラメータは、前記仮想カメラの位置座標、注視点および視体積を含む、請求項２記載の３次元画像処理プログラム。
【請求項４】
前記オブジェクトは、前記撮影画像の投影面上に描画される２次元のオブジェクトである、請求項１ないし３のいずれかに記載の３次元画像処理プログラム。
【請求項５】
前記オブジェクトは、前記３次元仮想空間内の３次元のオブジェクトであり、当該３次元のオブジェクトを含む当該３次元仮想空間内の一部の範囲を前記仮想カメラで撮影した前記撮影画像の投影面に投影される、請求項１記載の３次元画像処理プログラム。
【請求項６】
前記３次元仮想空間内における前記オブジェクトの位置を、前記３次元仮想空間において前記撮影画像の投影面と平行な平面上での位置に変換する位置変換手段をさらに備え、
前記パラメータ設定手段は、前記位置変換手段によって変換された位置に基づいて前記仮想カメラの注視点および前記位置座標を設定する、請求項５記載の３次元画像処理プログラム。
【請求項７】
前記オブジェクトは、前記３次元仮想空間内の３次元のオブジェクトであり、当該３次元のオブジェクトを含む当該３次元仮想空間内の一部の範囲を前記仮想カメラで撮影した前記撮影画像の投影面に投影される、請求項２または３記載の３次元画像処理プログラム。
【請求項８】
前記変位量検出手段によって検出された前記３次元仮想空間内に設定された基準点に対するオブジェクトの変位量を、前記３次元仮想空間において前記撮影画像の投影面と平行な平面上での変位量に変換する変位量変換手段をさらに備え、
前記パラメータ設定手段は、前記変位量変換手段によって変換された変位量が０でない場合に、当該変位量を打ち消すように前記仮想カメラのパラメータを設定する、請求項７記載の３次元画像処理プログラム。
【請求項９】
前記パラメータ設定手段は、前記仮想カメラの位置座標を、前記仮想カメラの注視点、向き、および注視点と当該仮想カメラとの距離に基づいて設定する、請求項１ないし３のいずれかに記載の３次元画像処理プログラム。
【請求項１０】
前記パラメータ設定手段は、前記仮想カメラの位置座標を、直前の前記仮想カメラの位置座標を前記仮想カメラの注視点の移動に従って平行移動して設定する、請求項１ないし３のいずれかに記載の３次元画像処理プログラム。
【請求項１１】
前記入力装置はポインティングデバイスであり、
前記オブジェクト移動手段は、前記ポインティングデバイスで指示された前記撮影画像の投影面上の位置座標に前記オブジェクトを移動させる、請求項１ないし１０のいずれかに記載の３次元画像処理プログラム。
【請求項１２】
３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する３次元画像処理装置であって、
前記入力装置からの操作入力を検出する操作入力検出手段、
前記操作入力検出手段によって検出された操作入力に基づいて前記３次元仮想空間内または前記撮影画像上でオブジェクトを移動させるオブジェクト移動手段、
前記３次元仮想空間内または前記撮影画像上における前記オブジェクトの位置に基づいて前記仮想カメラの注視点および位置座標を設定するパラメータ設定手段、および
前記オブジェクト移動手段によって前記オブジェクトが移動された場合に、前記仮想カメラの注視点を含み、かつ前記撮影画像の投影面に平行である平面を移動させないように、前記仮想カメラの視体積を変形させる視体積変形手段を備える、３次元画像処理装置。
【請求項１３】
３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する３次元画像処理装置であって、
前記入力装置からの操作入力を検出する操作入力検出手段、
前記操作入力検出手段によって検出された操作入力に基づいて前記３次元仮想空間内または前記撮影画像上でオブジェクトを移動させるオブジェクト移動手段、
前記３次元仮想空間内または前記撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する変位量検出手段、および
前記変位量検出手段によって検出された変位量が０でない場合に、前記撮影画像の投影面において、当該変位量を打ち消すとともに、前記オブジェクトの位置と前記３次元仮想空間における消失点とが重なるように、前記仮想カメラのパラメータを設定するパラメータ設定手段を備える、３次元画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は３次元画像処理プログラムおよび３次元画像処理装置に関し、特にたとえば、３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する、３次元画像処理プログラムおよび３次元画像処理装置に関する。
【背景技術】
【０００２】
従来のこの種の３次元画像処理装置の一例が特許文献１に開示されている。この特許文献１には、ビデオゲームシステムを用いて、３次元空間内でプレイヤオブジェクトを操作するシューティングゲームをプレイすることが記載されている。３次元空間内を一方向にスクロールしてプレイヤオブジェクトが移動して行く中、プレイヤがコントローラを用いてプレイヤオブジェクトの操作を行うことにより、プレイヤオブジェクトは、３次元空間内を移動したり、攻撃を加えてくる敵オブジェクトに対して攻撃を加えたりする。プレイヤオブジェクトが敵オブジェクトに攻撃を加える際には、プレイヤは、プレイヤオブジェクトの移動に伴って移動制御される照準を敵オブジェクトに合わせた上で攻撃操作を行う。
【特許文献１】特開平１０−２９５９４０号公報[A63F 9/22]
【発明の開示】
【発明が解決しようとする課題】
【０００３】
通常、３次元空間内に描画されたプレイヤオブジェクトによって３次元空間内の奥に向かって弾丸が射撃されるような場合は、弾丸はプレイヤオブジェクトから３次元空間の消失点に向かって移動するように制御される。特許文献１のビデオゲームシステムにおいても、プイレイヤオブジェクトによって射撃された弾丸は、３次元空間の消失点に向かって移動し、プレイヤオブジェクトから消失点への向きの指標として照準が表示されている。ここで、照準はプレイヤオブジェクトの移動に伴い移動制御されるものであるため、プレイヤはプレイヤオブジェクト自身の移動操作を行いながら、そのプレイヤオブジェクトの移動に伴い移動制御される照準を敵オブジェクトに合わせて攻撃操作を行う必要がある。つまり、プレイヤオブジェクトの移動操作と照準の移動操作との両方を同時に行いならがゲームを進めなければならない。このため、操作が複雑で難しいという問題があった。さらには、３次元空間内において、照準をプレイヤオブジェクトと消失点との間のどの位置に配置させるかによって、狙ったはずの敵オブジェクトへの射撃に失敗してしまうことがあった。つまり、３次元空間を認識するのが困難であった。
【０００４】
それゆえに、この発明の主たる目的は、新規な、３次元画像処理プログラムおよび３次元画像処理装置を提供することである。
【０００５】
この発明の他の目的は、３次元仮想空間を簡単に認識することができる、３次元画像処理プログラムおよび３次元画像処理装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する３次元画像処理装置のコンピュータにおいて実行される３次元画像処理プログラムであって、３次元画像処理装置のコンピュータを、入力装置からの操作入力を検出する操作入力検出手段、操作入力検出手段によって検出された操作入力に基づいて３次元仮想空間内または撮影画像上でオブジェクトを移動させるオブジェクト移動手段、３次元仮想空間内または撮影画像上におけるオブジェクトの位置に基づいて仮想カメラの注視点および位置座標を設定するパラメータ設定手段、およびオブジェクト移動手段によってオブジェクトが移動された場合に、仮想カメラの注視点を含み、かつ撮影画像の投影面に平行である平面を移動させないように、仮想カメラの視体積を変形させる視体積変形手段として機能させる、３次元画像処理プログラムである。
【０００８】
第１の発明では、３次元画像処理プログラムは、３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置（３４）に出力する３次元画像処理装置（１２）のコンピュータによって実行される。操作入力検出手段（４０）は、入力装置（２２）からの操作入力を検出する。オブジェクト移動手段（４０）は、操作入力検出手段によって検出された操作入力に基づいて、３次元仮想空間内または撮影画像上でオブジェクト（１０６）を移動させる。パラメータ設定手段（４０，Ｓ２１，Ｓ２３，Ｓ２５）は、３次元仮想空間内または撮影画像上におけるオブジェクトの位置に基づいて仮想カメラの注視点および仮想カメラの位置座標を設定する。視体積変形手段（４０，Ｓ２５，Ｓ２７）は、オブジェクト移動手段によってオブジェクトが移動された場合に、仮想カメラの注視点を含み、かつ撮影画像の投影面に平行である平面（注視点面）を移動させないように、仮想カメラの視体積を変形させる。
【０００９】
第１の発明によれば、注視点を含み、かつ撮影画像の投影面に平行である平面を移動させないで、視体積を変形させるので、表示画面において注視点と消失点とが重なる。このため、３次元仮想空間上での真正面が２次元の表示画面上においても真正面となるので、３次元仮想空間を容易に認識することができる。
【００１０】
第２の発明は、３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する３次元画像処理装置のコンピュータにおいて実行される３次元画像処理プログラムであって、３次元画像処理装置のコンピュータを、入力装置からの操作入力を検出する操作入力検出手段、操作入力検出手段によって検出された操作入力に基づいて３次元仮想空間内または撮影画像上でオブジェクトを移動させるオブジェクト移動手段、３次元仮想空間内または撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する変位量検出手段、および変位量検出手段によって検出された変位量が０でない場合に、撮影画像の投影面において、当該変位量を打ち消すとともに、オブジェクトの位置と３次元仮想空間における消失点とが重なるように、仮想カメラのパラメータを設定するパラメータ設定手段として機能させる、３次元画像処理プログラムである。
【００１１】
第２の発明では、３次元画像処理プログラムは、３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置（３４）に出力する３次元画像処理装置（１２）のコンピュータによって実行される。操作入力検出手段（４０）は、入力装置（２２）からの操作入力を検出する。オブジェクト移動手段（４０）は、操作入力検出手段によって検出された操作入力に基づいて、３次元仮想空間内または撮影画像上でオブジェクト（１０６）を移動させる。変位量検出手段（４０，Ｓ１１）は、３次元仮想空間内または撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する。パラメータ設定手段（４０，Ｓ２３，Ｓ２５，Ｓ２７）は、変位量検出手段によって検出された変位量が０でない場合に（Ｓ１３で“ＮＯ”）、撮影画像の投影面において、当該変位量を打ち消すとともに、オブジェクトの位置と３次元仮想空間における消失点とが重なるように、仮想カメラのパラメータを設定する。
【００１２】
第２の発明によれば、撮影画像の投影面において、オブジェクトの変位量を打ち消すとともに、オブジェクトの位置と３次元仮想空間における消失点とが重なるように、仮想カメラのパラメータを設定するので、３次元仮想空間上での真正面が２次元の表示画面上においても真正面となる。したがって、３次元仮想空間を容易に認識することができる。
【００１３】
第３の発明は、第２の発明に従属し、パラメータ設定手段によって設定されるパラメータは、仮想カメラの位置座標、注視点および視体積を含む。
【００１４】
第３の発明では、パラメータとしては、仮想カメラの位置座標、注視点および視体積を含む。たとえば、仮想カメラの注視点は、オブジェクトの移動に従って設定され、これに平行移動するように、仮想カメラの位置が決定される。そして、注視点を含み、かつ撮影画像の投影面と平行な面（注視点面）が移動しないように、視体積の範囲が設定される。
【００１５】
第３の発明によれば、仮想カメラの位置座標、注視点および視体積を設定するだけなので、簡単な処理によって、見易い表示画面を表示することができる。
【００１６】
第４の発明は第１ないし第３の発明のいずれかに従属し、オブジェクトは、撮影画像の投影面上に描画される２次元のオブジェクトである。
【００１７】
第４の発明では、オブジェクトは、撮影画像の投影面上に描画される２次元のオブジェクトである。たとえば、オブジェクトはカーソルのような指示画像であったり、シューティングゲームにおける照準であったりする。
【００１８】
第４の発明によれば、撮影画像の投影面上における２次元のオブジェクトの移動に従って、当該撮影画像の投影面上において、当該オブジェクトの位置と消失点とが重なるように、仮想カメラのパラメータを設定することができる。
【００１９】
第５の発明は第１の発明に従属し、オブジェクトは、３次元仮想空間内の３次元のオブジェクトであり、当該３次元のオブジェクトを含む当該３次元仮想空間内の一部の範囲を仮想カメラで撮影した撮影画像の投影面に投影される。
【００２０】
第５の発明では、オブジェクトは、３次元仮想空間内に存在する３次元のオブジェクトである。したがって、その３次元のオブジェクトを含む３次元仮想区間内の一部の範囲を仮想カメラで撮影した撮影画像の投影面に投影される。したがって、オブジェクト移動手段がオブジェクトを移動させると、当該オブジェクトを含む３次元仮想空間の一部を投影面に投影した様子が表示画面に表示される。
【００２１】
第５の発明によれば、３次元空間内の３次元のオブジェクトの移動に従って、撮影画像の投影面上において、当該オブジェクトの位置と消失点とが重なるように、仮想カメラの注視点および位置座標を設定することもできる。
【００２２】
第６の発明は第５の発明に従属し、３次元仮想空間内におけるオブジェクトの位置を、３次元仮想空間において撮影画像の投影面と平行な平面上での位置に変換する位置変換手段をさらに備え、パラメータ設定手段は、位置変換手段によって変換された位置に基づいて仮想カメラの注視点および位置座標を設定する。
【００２３】
第６の発明では、位置変換手段（４０，Ｓ２１）は、３次元仮想空間内におけるオブジェクトの位置を、３次元仮想空間において撮影画像の投影面と平行な平面（注視点面）上での位置に変換する。パラメータ設定手段は、位置変換手段によって変換された位置に基づいて仮想カメラの注視点および仮想カメラの位置座標を設定する。したがって、仮想カメラの位置座標も平行移動される。つまり、注視点と消失点と重なるように、仮想カメラが移動されるのである。
【００２４】
第６の発明によれば、３次元仮想空間におけるオブジェクトの位置を、３次元仮想空間における注視点面上での位置に変換するので、その変換した位置に基づいて仮想カメラのパラメータを設定すれば、撮影画像の投影面において注視点と消失点とが重なり、しかも注視点面を移動させないようにすることができる。
【００２５】
第７の発明は、第２または第３の発明に従属し、オブジェクトは、３次元仮想空間内の３次元のオブジェクトであり、当該３次元のオブジェクトを含む当該３次元仮想空間内の一部の範囲を仮想カメラで撮影した撮影画像の投影面に投影される。
【００２６】
第７の発明では、オブジェクトは、３次元仮想空間内に存在する３次元のオブジェクトである。したがって、その３次元のオブジェクトを含む３次元仮想区間内の一部の範囲を仮想カメラで撮影した撮影画像の投影面に投影される。したがって、オブジェクト移動手段がオブジェクトを移動させると、当該オブジェクトを含む３次元仮想空間の一部を投影面に投影した様子が表示画面に表示される。
【００２７】
第７の発明によれば、３次元空間内の３次元のオブジェクトの移動に従って、撮影画像の投影面上において、当該オブジェクトの位置と消失点とが重なるように、仮想カメラのパラメータを設定することもできる。
【００２８】
第８の発明は、第７の発明に従属し、変位量検出手段によって検出された３次元仮想空間内に設定された基準点に対するオブジェクトの変位量を、３次元仮想空間において撮影画像の投影面と平行な平面上での変位量に変換する変位量変換手段をさらに備え、パラメータ設定手段は、変位量変換手段によって変換された変位量が０でない場合に、当該変位量を打ち消すように仮想カメラのパラメータを設定する。
【００２９】
第８の発明では、変位量変換手段（４０，Ｓ２１）は、変位量検出手段によって検出された３次元仮想空間内に設定された基準点に対するオブジェクトの変位量を、３次元仮想空間において撮影画像の投影面と平行な平面上での変位量に変換する。パラメータ設定手段は、変位量変換手段によって変換された変位量が０でない場合に（Ｓ１３で“ＮＯ”）、当該変位量を打ち消すように仮想カメラのパラメータを設定する。
【００３０】
第８の発明によれば、３次元仮想空間におけるオブジェクトの変位量を打ち消すように、仮想カメラのパラメータを設定するので、３次元仮想空間上での真正面が２次元の表示画面上においても真正面となり、見易い画面を表示することができる。
【００３１】
第９の発明は第１ないし第３の発明のいずれかに従属し、パラメータ設定手段は、仮想カメラの位置座標を、仮想カメラの注視点、向き、および注視点と当該仮想カメラとの距離に基づいて設定する。
【００３２】
第９の発明では、パラメータ設定手段は、仮想カメラの位置座標を、仮想カメラの注視点、向き、および注視点と当該仮想カメラとの距離に基づいて１回の計算処理によって設定する。
【００３３】
第９の発明によれば、仮想カメラの位置座標を１回の計算処理で設定するので、計算処理の負荷を軽減することができる。
【００３４】
第１０の発明は第１ないし第３の発明のいずれかに従属し、パラメータ設定手段は、仮想カメラの位置座標を、直前の仮想カメラの位置座標を仮想カメラの注視点の移動に従って平行移動して設定する。
【００３５】
第８の発明では、パラメータ設定手段は、仮想カメラの位置座標を、直前の仮想カメラの位置座標を予め計算しておき、計算しておいた仮想カメラの位置座標を仮想カメラの注視点の移動に従って平行移動するように計算する。
【００３６】
第１０の発明によれば、予め仮想カメラの位置座標を計算しておくので、計算処理を２回実行する必要があるが、仮想カメラの注視点と同様に、平行移動するだけなので、計算自体は簡単である。
【００３７】
第１１の発明は第１ないし第１０の発明のいずれかに従属し、入力装置はポインティングデバイスであり、オブジェクト移動手段は、ポインティングデバイスで指示された撮影画像の投影面上の位置座標にオブジェクトを移動させる。
【００３８】
第１１の発明では、入力装置はポインティングデバイス（２２）であり、このポインティングデバイスで指示された撮影画像の投影面上の位置座標にオブジェクトを移動させる。
【００３９】
第１１の発明によれば、ポインティングデバイスによってオブジェクトを移動させることができるので、直観的で簡単に操作することができる。
【００４０】
第１２の発明は、３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する３次元画像処理装置であって、入力装置からの操作入力を検出する操作入力検出手段、操作入力検出手段によって検出された操作入力に基づいて３次元仮想空間内または撮影画像上でオブジェクトを移動させるオブジェクト移動手段、３次元仮想空間内または撮影画像上におけるオブジェクトの位置に基づいて仮想カメラの注視点および位置座標を設定するパラメータ設定手段、およびオブジェクト移動手段によってオブジェクトが移動された場合に、仮想カメラの注視点を含み、かつ撮影画像の投影面に平行である平面を移動させないように、仮想カメラの視体積を変形させる視体積変形手段を備える、３次元画像処理装置である。
【００４１】
第１２の発明においても、第１の発明と同様に、３次元仮想空間を容易に認識することができる。
【００４２】
第１３の発明は、３次元仮想空間を仮想カメラで撮影した撮影画像を表示装置に出力する３次元画像処理装置であって、入力装置からの操作入力を検出する操作入力検出手段、操作入力検出手段によって検出された操作入力に基づいて３次元仮想空間内または撮影画像上でオブジェクトを移動させるオブジェクト移動手段、３次元仮想空間内または撮影画像上に設定された基準点に対するオブジェクトの変位量を検出する変位量検出手段、および変位量検出手段によって検出された変位量が０でない場合に、撮影画像の投影面において、当該変位量を打ち消すとともに、オブジェクトの位置と３次元仮想空間における消失点とが重なるように、仮想カメラのパラメータを設定するパラメータ設定手段を備える、３次元画像処理装置である。
【００４３】
第１３の発明においても、第２の発明と同様に、３次元仮想空間を容易に認識することができる。
【発明の効果】
【００４４】
この発明によれば、注視点を含み、かつ投影面に平行である平面を移動させないで、視体積を変形させるので、表示画面において注視点と消失点とが重なる。このため、３次元仮想空間上での真正面が２次元の表示画面上においても真正面となるので、３次元仮想空間を容易に認識することができる。
【００４５】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００４６】
図１を参照して、この発明の一実施例であるゲームシステム１０は、３次元画像処理装置としても機能するビデオゲーム装置（以下、単に「ゲーム装置」という）１２およびコントローラ２２を含む。なお、図示は省略するが、この実施例のゲーム装置１２は、最大４つのコントローラ２２と通信可能に設計されている。また、ゲーム装置１２と各コントローラ２２とは、無線によって接続される。たとえば、無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。
【００４７】
ゲーム装置１２は、略直方体のハウジング１４を含み、ハウジング１４の前面にはディスクスロット１６が設けられる。ディスクスロット１６から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が挿入されて、ハウジング１４内のディスクドライブ５４（図２参照）に装着される。図示は省略するが、ディスクスロット１６の周囲には、ＬＥＤと導光板とが配置され、様々な処理に応答させて、ディスクスロット１６を点灯または点滅させることが可能である。
【００４８】
また、ゲーム装置１２のハウジング１４の前面であり、その上部には、電源ボタン２０ａおよびリセットボタン２０ｂが設けられ、その下部には、イジェクトボタン２０ｃが設けられる。さらに、リセットボタン２０ｂとイジェクトボタン２０ｃとの間であり、ディスクスロット１６の近傍には、外部メモリカード用コネクタカバー２８が設けられる。この外部メモリカード用コネクタカバー２８の内側には、外部メモリカード用コネクタ６２（図２参照）が設けられ、図示しない外部メモリカード（以下、単に「メモリカード」という）が挿入される。メモリカードは、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置１２の内部に設けられるフラッシュメモリ４４（図２参照）のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置１２では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカードには当該他のアプリケーションのデータを保存することができる。
【００４９】
なお、メモリカードとしては、汎用のＳＤカードを用いることができるが、メモリスティックやマルチメディアカード（登録商標）のような他の汎用のメモリカードを用いることもできる。
【００５０】
図１では省略するが、ゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ５８（図２参照）が設けられ、そのＡＶコネクタ５８を用いて、ＡＶケーブル３２ａを通してゲーム装置１２にモニタ３４およびスピーカ３４ａを接続する。このモニタ３４およびスピーカ３４ａは典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２ａによって、ゲーム装置１２からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置１２からの音声信号が音声入力端子に入力される。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ３４の周辺（この実施例では、モニタ３４の上側）には、２つの赤外ＬＥＤ（マーカ）３４ｍ，３４ｎを備えるマーカ部３４ｂが設けられる。このマーカ部３４ｂは、電源ケーブル３２ｂを通してゲーム装置１２に接続される。したがって、マーカ部３４ｂには、ゲーム装置１２から電源が供給される。これによって、マーカ３４ｍ，３４ｎは発光し、それぞれモニタ３４の前方に向けて赤外光を出力する。
【００５１】
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置１２は、家庭用電源（商用電源）を、駆動に適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００５２】
このゲームシステム１０において、ユーザまたはプレイヤがゲーム（またはゲームに限らず、他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）のプログラムを記録している適宜の光ディスク１８を選択し、その光ディスク１８をゲーム装置１２のディスクドライブ５４にローディングする。応じて、ゲーム装置１２がその光ディスク１８に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、入力手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段２６に対する操作以外にも、コントローラ２２自体を動かすことによって、動画オブジェクト（プレイヤオブジェクト）を異なる方向に移動させ、または３Ｄのゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００５３】
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置１２の内部メモリ（フラッシュメモリ４２（図２参照））に記憶（インストール）しておき、当該内部メモリから実行するようにしてもよい。かかる場合には，光ディスク１８のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
【００５４】
図２は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１４内の各コンポーネントは、プリント基板に実装される。図２に示すように、ゲーム装置１２には、ＣＰＵ４０が設けられ、ゲームプロセッサとして機能する。また、ＣＰＵ４０には、システムＬＳＩ４２が接続される。このシステムＬＳＩ４２には、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８、ディスクドライブ５４およびＡＶ  ＩＣ５６が接続される。
【００５５】
外部メインメモリ４６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、ＣＰＵ４０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ４８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ５４は、光ディスク１８からプログラム，画像データや音声データ等を読み出し、ＣＰＵ４０の制御の下で、後述する内部メインメモリ４２ｅまたは外部メインメモリ４６に書き込む。
【００５６】
システムＬＳＩ４２には、入出力プロセッサ４２ａ、ＧＰＵ(Graphics Processor Unit)４２ｂ，ＤＳＰ(Digital Signal Processor)４２ｃ，ＶＲＡＭ４２ｄおよび内部メインメモリ４２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ（Ｉ／Ｏプロセッサ）４２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後述する。
【００５７】
ＧＰＵ４２ｂは、描画手段の一部を形成し、ＣＰＵ４０からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ４０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ４２ｂに与える。
【００５８】
図示は省略するが、上述したように、ＧＰＵ４２ｂにはＶＲＡＭ４２ｄが接続される。ＧＰＵ４２ｂが作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ４２ｂがＶＲＡＭ４２ｄにアクセスして取得する。ただし、ＣＰＵ４０は、描画に必要な画像データを、ＧＰＵ４２ｂを介してＶＲＡＭ４２ｄに書き込む。ＧＰＵ４２ｂは、ＶＲＡＭ４２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００５９】
なお、この実施例では、ＧＰＵ４２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ４２ｂは当該任意のアプリケーションについての画像データを生成する。
【００６０】
また、ＤＳＰ４２ｃは、オーディオプロセッサとして機能し、内部メインメモリ４２ｅや外部メインメモリ４６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ３４ａから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００６１】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶ  ＩＣ５６によって読み出され、ＡＶコネクタ５８を介してモニタ３４およびスピーカ３４ａに出力される。したがって、ゲーム画面がモニタ３４に表示され、ゲームに必要な音（音楽）がスピーカ３４ａから出力される。
【００６２】
また、入出力プロセッサ４２ａには、フラッシュメモリ４４、無線通信モジュール５０および無線コントローラモジュール５２が接続されるとともに、拡張コネクタ６０およびメモリカード用コネクタ６２が接続される。また、無線通信モジュール５０にはアンテナ５０ａが接続され、無線コントローラモジュール５２にはアンテナ５２ａが接続される。
【００６３】
図示は省略するが、入出力プロセッサ４２ａは、無線通信モジュール５０を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ４２ａは、定期的にフラッシュメモリ４４にアクセスし、ネットワークへ送信する必要があるデータ（「送信データ」とする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール５０およびアンテナ５０ａを介してネットワークに送信する。また、入出力プロセッサ４２ａは、他のゲーム装置から送信されるデータ（「受信データ」とする）を、ネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、当該受信データをフラッシュメモリ４４に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ４２ａは、ダウンロードサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、そのダウンロードデータをフラッシュメモリ４４に記憶する。
【００６４】
また、入出力プロセッサ４２ａは、コントローラ２２から送信される入力データをアンテナ５２ａおよび無線コントローラモジュール５２を介して受信し、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に記憶（一時記憶）する。入力データは、ＣＰＵ４０の処理（たとえば、ゲーム処理）によって利用された後、バッファ領域から消去される。
【００６５】
なお、この実施例では、上述したように、無線コントローラモジュール５２は、Ｂｌｕｅｔｏｏｔｈ規格に従ってコントローラ２２との間で通信を行う。
【００６６】
さらに、入出力プロセッサ４２ａには、拡張コネクタ６０およびメモリカード用コネクタ６２が接続される。拡張コネクタ６０は、ＵＳＢやＳＣＳＩのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、コントローラ２２とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ６０に有線ＬＡＮアダプタを接続し、無線通信モジュール５０に代えて当該有線ＬＡＮを利用することもできる。メモリカード用コネクタ６２には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ４２ａは、拡張コネクタ６０やメモリカード用コネクタ６２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００６７】
詳細な説明は省略するが、図１にも示したように、ゲーム装置１２（ハウジング１４）には、電源ボタン２０ａ，リセットボタン２０ｂおよびイジェクトボタン２０ｃが設けられる。電源ボタン２０ａは、システムＬＳＩ４２に接続される。この電源ボタン２０ａがオンされると、システムＬＳＩ４２には、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、通常の通電状態となるモード（「通常モード」と呼ぶこととする）が設定される。一方、電源ボタン２０ａがオフされると、システムＬＳＩ４２には、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という）が設定される。
【００６８】
この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ４２は、入出力プロセッサ４２ａ、フラッシュメモリ４４、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８および無線通信モジュール５０、無線コントローラモジュール５２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、ＣＰＵ４０がアプリケーションを実行することはない。
【００６９】
なお、システムＬＳＩ４２には、スタンバイモードにおいても電源が供給されるが、ＧＰＵ４２ｂ、ＤＳＰ４２ｃおよびＶＲＡＭ４２ｄへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
【００７０】
また、図示は省略するが、ゲーム装置１２のハウジング１４内部には、ＣＰＵ４０やシステムＬＳＩ４２などのＩＣの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【００７１】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン２０ａがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【００７２】
また、通常モードとスタンバイモードとの切り替えは、コントローラ２２の電源スイッチ２６ｈのオン／オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール５２ａへの電源供給を行わない設定にしてもよい。
【００７３】
リセットボタン２０ｂもまた、システムＬＳＩ４２に接続される。リセットボタン２０ｂが押されると、システムＬＳＩ４２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタン２０ｃは、ディスクドライブ５４に接続される。イジェクトボタン２０ｃが押されると、ディスクドライブ５４から光ディスク１８が排出される。
【００７４】
図３（Ａ）ないし図３（Ｅ）は、コントローラ２２の外観の一例を示す。図３（Ａ）はコントローラ２２の先端面を示し、図３（Ｂ）はコントローラ２２の上面を示し、図３（Ｃ）はコントローラ２２の右側面を示し、図３（Ｄ）はコントローラ２２の下面を示し、そして、図３（Ｅ）はコントローラ２２の後端面を示す。
【００７５】
図３（Ａ）ないし図３（Ｅ）を参照して、コントローラ２２は、たとえばプラスチック成型によって形成されたハウジング２２ａを有している。ハウジング２２ａは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング２２ａ（コントローラ２２）には、入力手段（複数のボタンないしスイッチ）２６が設けられる。具体的には、図３（Ｂ）に示すように、ハウジング２２ａの上面には、十字キー２６ａ，１ボタン２６ｂ，２ボタン２６ｃ，Ａボタン２６ｄ，−ボタン２６ｅ，ＨＯＭＥボタン２６ｆ，＋ボタン２６ｇおよび電源スイッチ２６ｈが設けられる。また、図３（Ｃ）および図３（Ｄ）に示すように、ハウジング２２ａの下面に傾斜面が形成されており、この傾斜面に、Ｂトリガースイッチ２６ｉが設けられる。
【００７６】
十字キー２６ａは、４方向プッシュスイッチであり、矢印で示す４つの方向、前（または上）、後ろ（または下）、右および左の操作部を含む。この操作部のいずれか１つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト（プレイヤキャラクタまたはプレイヤオブジェクト）の移動方向を指示したり、カーソルの移動方向を指示したり、単に方向を指示したりすることができる。
【００７７】
１ボタン２６ｂおよび２ボタン２６ｃは、それぞれ、押しボタンスイッチである。たとえば３次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、１ボタン２６ｂおよび２ボタン２６ｃは、Ａボタン２６ｄおよびＢトリガースイッチ２６ｉと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【００７８】
Ａボタンスイッチ２６ｄは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Ａボタンスイッチ２６ｄは、コントローラ２２をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ（指示画像）が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令（コマンド）を入力することができる。
【００７９】
−ボタン２６ｅ、ＨＯＭＥボタン２６ｆ、＋ボタン２６ｇおよび電源スイッチ２６ｈもまた、押しボタンスイッチである。−ボタン２６ｅは、ゲームモードを選択するために使用される。ＨＯＭＥボタン２６ｆは、ゲームメニュー（メニュー画面）を表示するために使用される。＋ボタン２６ｇは、ゲームを開始（再開）したり、一時停止したりするなどのために使用される。電源スイッチ２６ｈは、ゲーム装置１２の電源を遠隔操作によってオン／オフするために使用される。
【００８０】
なお、この実施例では、コントローラ２２自体をオン／オフするための電源スイッチは設けておらず、コントローラ２２の入力手段２６のいずれかを操作することによってコントローラ２２はオンとなり、一定時間（たとえば、３０秒）以上操作しなければ自動的にオフとなるようにしてある。
【００８１】
Ｂトリガースイッチ２６ｉもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ２２で選択した位置を指定したりするために使用される。また、Ｂトリガースイッチ２６ｉを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Ｂトリガースイッチ２６ｉは、通常のＢボタンと同様に機能し、Ａボタン２６ｄによって決定したアクションやコマンドなどを取り消すなどのために使用される。
【００８２】
また、図３（Ｅ）に示すように、ハウジング２２ａの後端面に外部拡張コネクタ２２ｂが設けられ、また、図３（Ｂ）に示すように、ハウジング２２ａの上面であり、後端面側にはインジケータ２２ｃが設けられる。外部拡張コネクタ２２ｂは、コントローラ２２とは異なる拡張コントローラ（図示せず）を接続するためなどに使用される。インジケータ２２ｃは、たとえば、４つのＬＥＤで構成される。たとえば、インジケータ２２ｃでは、４つのうちのいずれか１つを点灯させることにより、点灯したＬＥＤに応じて、コントローラ２２の識別情報（コントローラ番号）を示すことができる。また、インジケータ２２ｃでは、点灯させるＬＥＤの個数によってコントローラ２２の電池残量を示すこともできる。
【００８３】
さらに、コントローラ２２は、撮像情報演算部８０（図４参照）を有しており、図３（Ａ）に示すように、ハウジング２２ａの先端面には撮像情報演算部８０の光入射口２２ｄが設けられる。また、コントローラ２２は、スピーカ８６（図４参照）を有しており、このスピーカ８６は、図３（Ｂ）に示すように、ハウジング２２ａの上面であり、１ボタン２６ｂとＨＯＭＥボタン２６ｆとの間に設けられる音抜き孔２２ｅに対応して、ハウジング２２ａ内部に設けられる。
【００８４】
なお、図３（Ａ）ないし図３（Ｅ）に示したコントローラ２２の形状や、各入力手段２６の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【００８５】
図４はコントローラ２２の電気的な構成を示すブロック図である。この図４を参照して、コントローラ２２はプロセッサ７０を含み、このプロセッサ７０には、内部バス（図示せず）によって、外部拡張コネクタ２２ｂ、入力手段２６、メモリ７２、加速度センサ７４、無線モジュール７６、撮像情報演算部８０、ＬＥＤ８２（インジケータ２２ｃ）、バイブレータ８４、スピーカ８６および電源回路８８が接続される。また、無線モジュール７６には、アンテナ７８が接続される。
【００８６】
なお、簡単のため、図４では省略するが、上述したように、インジケータ２２ｃは４つのＬＥＤ８２によって構成される。
【００８７】
プロセッサ７０は、コントローラ２２の全体制御を司り、入力手段２６、加速度センサ７４および撮像情報演算部８０によって入力された情報（入力情報）を、入力データとして無線モジュール７６およびアンテナ７８を介してゲーム装置１２に送信（入力）する。このとき、プロセッサ７０は、メモリ７２を作業領域ないしバッファ領域として用いる。また、上述した入力手段２６（２６ａ−２６ｉ）からの操作信号（操作データ）は、プロセッサ７０に入力され、プロセッサ７０は操作データを一旦メモリ７２に記憶する。
【００８８】
加速度センサ７４は、コントローラ２２の縦方向（ｙ軸方向）、横方向（ｘ軸方向）および前後方向（ｚ軸方向）の３軸で各々の加速度を検出する。この加速度センサ７４は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【００８９】
たとえば、加速度センサ７４は、第１所定時間毎に、ｘ軸，ｙ軸，ｚ軸の各々についての加速度（ａｘ，ａｙ，ａｚ）を検出し、検出した加速度のデータ（加速度データ）をプロセッサ７０に入力する。たとえば、加速度センサ７４は、各軸方向の加速度を、−２．０ｇ〜２．０ｇ（ｇは重力加速度である。以下、同じ。）の範囲で検出する。プロセッサ７０は、加速度センサ７４から与えられる加速度データを、第２所定時間毎に検出し、一旦メモリ７２に記憶する。
【００９０】
プロセッサ７０は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも１つを含む入力データを作成し、作成した入力データを、第３所定時間（たとえば、５ｍｓｅｃ）毎にゲーム装置１２に送信する。
【００９１】
なお、図３（Ａ）−図３（Ｅ）では省略したが、この実施例では、加速度センサ７４は、ハウジング２２ａ内部の基板上の十字キー２６ａが配置される付近に設けられる。
【００９２】
無線モジュール７６は、たとえばＢｌｕｅｔｏｏｔｈの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ７８から放射する。つまり、入力データは、無線モジュール７６によって微弱電波信号に変調されてアンテナ７８（コントローラ２２）から送信される。この微弱電波信号が上述したゲーム装置１２に設けられた無線コントローラモジュール５２によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置１２（ＣＰＵ４０）は、コントローラ２２からの入力データを取得することができる。そして、ＣＰＵ４０は、取得した入力データとアプリケーションプログラム（ゲームプログラム）とに従ってアプリケーションの処理（ゲーム処理）を行う。
【００９３】
さらに、上述したように、コントローラ２２には、撮像情報演算部８０が設けられる。この撮像情報演算部８０は、赤外線フィルタ８０ａ、レンズ８０ｂ、撮像素子８０ｃおよび画像処理回路８０ｄによって構成される。赤外線フィルタ８０ａは、コントローラ２２の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ３４の表示画面近傍（周辺）に配置されるマーカ３４０ｍおよび３４０ｎは、モニタ３４の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ８０ａを設けることによってマーカ３４０ｍおよび３４０ｎの画像をより正確に撮像することができる。レンズ８０ｂは、赤外線フィルタ８０ａを透過した赤外線を集光して撮像素子８０ｃへ出射する。撮像素子８０ｃは、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ８０ｂによって集光された赤外線を撮像する。したがって、撮像素子８０ｃは、赤外線フィルタ８０ａを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子８０ｃによって撮像された画像を撮像画像と呼ぶ。撮像素子８０ｃによって生成された画像データは、画像処理回路８０ｄで処理される。画像処理回路８０ｄは、撮像画像内における撮像対象（マーカ３４０ｍおよび３４０ｎ）の位置を算出し、第４所定時間毎に、当該位置を示す各座標値を撮像データ（後述するマーカ座標データ）としてプロセッサ７０に出力する。なお、画像処理回路８０ｄにおける処理については後述する。
【００９４】
図５は、コントローラ２２を用いてゲームプレイするときの状態を概説する図解図である。ただし、ゲームプレイのみならず、他のアプリケーションを実行する場合も同様である。図５に示すように、ビデオゲームシステム１０でコントローラ２２を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ２２を把持する。厳密に言うと、プレイヤは、コントローラ２２の先端面（撮像情報演算部８０が撮像する光の入射口２２ｄ側）がマーカ３４０ｍおよび３４０ｎの方を向く状態でコントローラ２２を把持する。ただし、図１からも分かるように、マーカ３４０ｍおよび３４０ｎは、モニタ３４の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ２２が指示する画面上の位置を変更したり、コントローラ２２と各マーカ３４０ｍおよび３４０ｎとの距離を変更したりすることによってゲーム操作を行う。
【００９５】
図６は、マーカ３４０ｍおよび３４０ｎと、コントローラ２２との視野角を説明するための図である。図６に示すように、マーカ３４０ｍおよび３４０ｎは、それぞれ、視野角θ１の範囲で赤外光を放射する。また、撮像情報演算部８０の撮像素子８０ｃは、コントローラ２２の視線方向を中心とした視野角θ２の範囲で入射する光を受光することができる。たとえば、マーカ３４０ｍおよび３４０ｎの視野角θ１は、共に３４°（半値角）であり、一方、撮像素子８０ｃの視野角θ２は４１°である。プレイヤは、撮像素子８０ｃが２つのマーカ３４０ｍおよび３４０ｎからの赤外光を受光することが可能な位置および向きとなるように、コントローラ２２を把持する。具体的には、撮像素子８０ｃの視野角θ２の中にマーカ３４０ｍおよび３４０ｎの少なくとも一方が存在し、かつ、マーカ３４０ｍまたは３４０ｎの少なくとも一方の視野角θ１の中にコントローラ２２が存在する状態となるように、プレイヤはコントローラ２２を把持する。この状態にあるとき、コントローラ２２は、マーカ３４０ｍおよび３４０ｎの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ２２の位置および向きを変化させることによってゲーム操作を行うことができる。
【００９６】
なお、コントローラ２２の位置および向きがこの範囲外となった場合、コントローラ２２の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【００９７】
操作可能範囲内でコントローラ２２が把持される場合、撮像情報演算部８０によって各マーカ３４０ｍおよび３４０ｎの画像が撮像される。すなわち、撮像素子８０ｃによって得られる撮像画像には、撮像対象である各マーカ３４０ｍおよび３４０ｎの画像（対象画像）が含まれる。図７は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路８０ｄは、各マーカ３４０ｍおよび３４０ｎの撮像画像における位置を表す座標（マーカ座標）を算出する。
【００９８】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路８０ｄは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路８０ｄは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である２つのマーカ３４０ｍおよび３４０ｎに対応する画像３４０ｍ’および３４０ｎ’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像である画像３４０ｍ’および３４０ｎ’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【００９９】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路８０ｄは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子８０ｃの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子８０ｃによって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。
【０１００】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをＹ軸正方向とし、右向きをＸ軸正方向とする座標系（ＸＹ座標系）で表現されるものとする。
【０１０１】
また、対象画像が正しく検出される場合には、判定処理によって２つの高輝度部分が対象画像として判定されるので、２箇所のマーカ座標が算出される。画像処理回路８０ｄは、算出された２箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ（マーカ座標データ）は、上述したように、プロセッサ７０によって入力データに含まれ、ゲーム装置１２に送信される。
【０１０２】
ゲーム装置１２（ＣＰＵ４０）は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ３４の画面上におけるコントローラ２２の指示位置（指示座標）と、コントローラ２２からマーカ３４０ｍおよび３４０ｎまでの各距離とを算出することができる。具体的には、２つのマーカ座標の中点の位置から、コントローラ２２の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ２２と、マーカ３４０ｍおよび３４０ｎとの距離に応じて変化するので、２つのマーカ座標間の距離を算出することによって、ゲーム装置１２はコントローラ２２と、マーカ３４０ｍおよび３４０ｎとの間の距離を把握できる。
【０１０３】
このような構成のゲームシステム１０では、上述したように、ゲーム装置１２は３次元画像処理装置としても機能し、たとえば、ゲーム装置１２における３次元画像処理によって、図８に示すような表示画面１００がモニタ３４に表示される。
【０１０４】
図８に示すように、表示画面１００には、３次元仮想空間内に設けられた断面が長方形であり、視点（仮想カメラ）から見て３次元空間の奥行き方向（Ｚ軸方向）に延びる筒状のオブジェクト１０２が表示される。図８では、オブジェクト１０２を分かり易くするために、その内面に桝目模様を付してある。また、オブジェクト１０２の内部に、４つの立方体（ブロック状）のオブジェクト１０４ａ，１０４ｂ，１０４ｃ，１０４ｄがマトリックス状に並んで表示される。さらに、オブジェクト１０２の中心(中央)であり、オブジェクト１０４ａ，１０４ｂ，１０４ｃおよび１０４ｄの間には、指示画像のオブジェクトとしてカーソル１０６が表示される。
【０１０５】
また、図８には、カーソル１０６によって指示される位置に、消失点１１０が示される。ただし、この消失点１１０は、実際の表示画面１００では、表示されることはない。ここで、消失点１１０とは、視点（仮想カメラ）と注視点とを通る直線上であり、仮想カメラから無限遠の位置に存在する点である（図９参照）。たとえば、真っ直ぐに伸びる線路やその線路上を移動する列車が遠くに向かうほど小さくなり、やがて消失点に収束する。また、たとえば、ゲームにおいては、プレイヤオブジェクトが撃った弾丸や戦闘機から発射されたミサイルなども消失点に収束する。
【０１０６】
さらに、この実施例では、カーソル１０６の指示位置に対応する３次元空間内の位置が仮想カメラ（視点）の注視点に設定されている。したがって、表示画面１００においては、注視点は消失点１１０と重なっていることになる。ただし、この注視点も、実際の表示画面１００では、表示されることはない。
【０１０７】
このような表示画面１００（３次元仮想空間）では、プレイヤがコントローラ２２を操作することにより、カーソル１０６を移動させることができる。この実施例では、カーソル１０６は、２次元のオブジェクトであり、投影面上に配置（表示）されているものとする。この実施例では、投影面は、後述するニアクリッピング面に設定される。
【０１０８】
ただし、カーソル１０６のように、プレイヤないしユーザの操作に従って移動等されるオブジェクトは、３次元のオブジェクトとして３次元仮想空間内に配置されるようにしてもよい。かかる場合には、プレイヤないしユーザの操作に従って移動等される３次元のオブジェクトを含む３次元仮想空間の一部の範囲が投影面に投影される。したがって、投影変換された３次元のオブジェクトが投影面に表示されることとなる。たとえば、仮想ゲームにおいては、３次元仮想空間内に、人物、車や戦闘機などの３次元のオブジェクト（プレイヤオブジェクト）が配置され、プレイヤの操作に従って移動等が制御される。
【０１０９】
なお、カーソル１０６を３次元のオブジェクトとして３次元仮想空間内に配置されるようにする場合には、後述するように、撮影画像の投影面上におけるカーソル移動量を注視点面上で注視点からの移動量に変換すること（Ｓ２１）は、結果として、３次元仮想空間内におけるカーソル１０６の位置を注視点面上の位置に変換することを意味する。
【０１１０】
図８に示すような表示画面１００を表示する場合には、まず、３次元仮想空間内に、オブジェクト１０２，１０４ａ−１０４ｄが配置（モデリング）される。次に、３次元仮想空間においてどの範囲を切り抜くかが決定される。切り抜く範囲が決定されると、これに基づいて注視点の位置が決定される。つまり、注視点の位置座標（ａｘ，ａｙ，ａｚ）が決定される。ただし、図９−図１１に示すように、カメラ座標系は、３次元仮想空間において、水平（横）方向がＸ軸方向であり、垂直（縦）方向がＹ軸方向であり、奥行き方向がＺ軸方向である。また、仮想カメラからニアクリッピング面やファークリッピング面を見る方向を正面方向とした場合に、左方向がＸ軸のプラスであり、上方向がＹ軸のプラスであり、正面方向がＺ軸のプラスである。ただし、カメラ座標系では、原点（０，０，０）は、仮想カメラ（視点）の位置である。
【０１１１】
次に、３次元仮想空間における視点（仮想カメラ）の向きが設定され、注視点と仮想カメラとの距離ｄが設定される。ただし、仮想カメラの向きは、正面方向（Ｚｘ，Ｚｙ，Ｚｚ）、上方向（Ｙｘ，Ｙｙ，Ｙｚ）および左方向（Ｘｘ，Ｘｙ，Ｘｚ）の３つのベクトルで設定され、各ベクトルは大きさが「１」の単位ベクトルである。
【０１１２】
また、仮想カメラからニアクリッピング面への距離ｎと、仮想カメラからファークリッピング面への距離ｆとが決定される。ただし、これらの距離ｎおよび距離ｆは、３次元仮想空間のどの範囲を切り抜くかによって決定される。さらに、ニアクリッピング面の大きさ（横の長さｗｘと縦の長さｗｙ）が設定される。ただし、このニアクリッピング面の大きさは、表示物すなわち画面（モニタ３４）の大きさによって決定される。
【０１１３】
したがって、図９に示すように、仮想カメラから３次元仮想空間を見た場合に、上述したように、ニアクリッピング面とファークリッピング面とを決定すると、ピラミッド状の錐体（四角錐）２００が規定される。この錐体２００のうち、ニアクリッピング面とファークリッピング面とで挟まれる四角錐台の部分が視体積である。
【０１１４】
ただし、図９は、錐体２００を仮想カメラの後方の斜め上方から見た斜視図を示してある。
【０１１５】
なお、この実施例では、仮想カメラの位置を頂点とし、ファークリッピング面を底面とする四角錐の全体と、ニアクリッピング面を上面とし、ファークリッピング面を底面とする四角錐台とを区別するために、この四角錐を「錐体」と呼ぶが、この「錐体」は「ビューフラスタム」や「視体積」と呼ばれることもある。
【０１１６】
また、図９に示すように、ニアクリッピング面とファークリッピング面との間には、注視点面が設けられる。ここで、注視点面は、ニアクリッピング面およびファークリッピング面と平行な平面であり、仮想カメラの注視点が設定される（含まれる）面を意味する。この実施例では、図８（図１２および図１３も同じ。）に示す表示画面１００に表示されるオブジェクト１０４ａ−１０４ｄの６面のうち、こちら側（視点側）を向いている面が注視点面と同一平面に来るように、各オブジェクト１０４ａ−１０４ｄは３次元仮想空間に配置されている。
【０１１７】
図８に示すような表示画面１００では、プレイヤないしユーザがコントローラ２２を用いてカーソル１０６を移動させると、それに従って注視点が移動される。ここで、通常の３次元画像処理においては、注視点を移動させると、それに追従して仮想カメラも移動されるため、その移動に従って錐体２００が平行移動される。このため、表示画面１００はスクロールされる。したがって、たとえば、遠くに存在する敵オブジェクトに弾丸を撃って攻撃する場合には、プレイヤオブジェクトが敵オブジェクトの正面に並ぶように当該プレイヤオブジェクトを移動させても、弾丸のオブジェクトは消失点１１０に収束される。つまり、プレイヤオブジェクトが画面の中央に存在しない場合には、プレイヤオブジェクトが射撃した弾丸のオブジェクトは、斜め方向に飛んで行く。このため、プレイヤは、そのことを予測して弾丸を撃ったり、試し撃ちをしてから敵オブジェクトを狙って弾丸を撃ったりする必要がある。しかし、このような予測は困難であり、また、無駄な攻撃操作が必要である。
【０１１８】
そこで、この実施例では、注視点が移動された場合であっても、注視点面を移動させないように、つまり注視点面が元の位置に維持されるように、視体積を変形させて、表示画面上で注視点と消失点とが重なるようにしてある。これによって、３次元仮想空間上での真正面が２次元の表示画面（投影面）上においても真正面となるようにする。このため、３次元仮想空間を容易に認識（把握）することができるのである。
【０１１９】
具体的な視体積の変形処理について、図１０および図１１を用いて説明することにする。ただし、図１０（Ａ）は錐体２００を仮想カメラの後方の斜め上方から見た斜視図であり、図１０（Ｂ）は錐体２００を鉛直上方（真上）から見た上面図であり、図１１（Ａ）は錐体２００を右側面から見た側面図であり、そして、図１１（Ｂ）は錐体２００を仮想カメラの後方から見た後端面図である。また、図１１および図１２において、黒の太線で示す錐体２００が基準（元）の錐体（説明の便宜上、「２００ａ」とする）であり、白抜きの太線で示す錐体２００が基準の錐体２００ａを注視点の移動に従って平行移動した錐体（説明の便宜上、「２００ｂ」とする）であり、斜線を付した太線で示す錐体２００が平行移動した錐体２００ｂ（視体積）を変形させた錐体（説明の便宜上、「２００ｃ」とする）である。
【０１２０】
上述したように、カーソル１０６が移動されると、表示画面１００すなわち投影面上におけるカーソル１０６の移動量（カーソル移動量）が算出される。この実施例では、カーソル移動量は、Ｘ軸方向およびＹ軸方向のそれぞれについて算出され、投影面（表示画面１００）上における基準位置からの距離で表わされる。この実施例では、基準位置は投影面の中心点である。
【０１２１】
表示画面１００上におけるカーソル移動量は、３次元空間内における移動量に変換され、移動後のカーソル１０６が指示する位置（指示位置）が新たな注視点として設定される。この新たな注視点に合わせて仮想カメラの位置（カメラ座標）が設定される。つまり、カーソル１０６の移動に従って仮想カメラが平行移動される。
【０１２２】
図１０（Ｂ）および図１１（Ａ）から良く分かるように、カーソル１０６の移動に従って、基準の錐体２００ａが錐体２００ｂで示すように、平行移動される。ただし、３次元仮想空間におけるＸ軸方向（水平方向）の移動量が図１０（Ｂ）に示され、３次元仮想空間におけるＹ軸方向（垂直方向）の移動量が図１１（Ａ）に示される。
【０１２３】
たとえば、投影面（表示画面１００）のローカル座標における中心点を原点（０，０）とした場合において、投影面上におけるカーソル１０６の指示位置すなわちカーソル移動量を示す２次元のベクトル（ｓｘ，ｓｙ）が検出される。ただし、ローカル座標系において、水平方向がＸ軸方向であり、垂直方向がＹ軸方向である。また、左方向がＸ軸のプラスであり、上方向がＹ軸のプラスである。また、この実施例では、「カーソル移動量」と表記するが、これは原点（０，０）からのずれ（変位）量を意味し、必ずしもカーソル１０６が移動されることを前提とするものではない。つまり、たとえば、カーソル１０６が原点（０，０）から移動された後に、その移動後の位置に留まる場合にもカーソル移動量は検出される。
【０１２４】
ここで、カーソル移動量が０である場合には、注視点は変化されないため、そのまま投影変換して図８に示すような表示画面１００がモニタ３４に表示される。一方、カーソル移動量が０でない場合には、そのカーソル移動量が３次元仮想空間の注視点面のローカル座標における中心点を原点（０，０，０）とした場合における移動量に変換される。変換された移動量を示す３次元ベクトル（ｖｘ，ｖｙ，ｖｚ）は、仮想カメラの方向を示す３つのベクトルを用いて、数１に従って算出される。
【０１２５】
[数１]
ｖｘ＝ｓｘ×Ｘｘ＋ｓｙ×Ｙｘ
ｖｙ＝ｓｘ×Ｘｙ＋ｓｙ×Ｙｙ
ｖｚ＝ｓｘ×Ｘｚ＋ｓｙ×Ｙｚ
また、カーソル１０６の位置に合わせた新たな注視点（ｂｘ，ｂｙ，ｂｚ）は、数２に従って算出される。つまり、新たな注視点（ｂｘ，ｂｙ，ｂｚ）は、元の注視点（ａｘ，ａｙ，ａｚ）を移動後のカーソル１０６の指示位置に平行移動することにより求められる。
【０１２６】
[数２]
ｂｘ＝ａｘ＋ｖｘ
ｂｙ＝ａｙ＋ｖｙ
ｂｚ＝ａｚ＋ｖｚ
さらに、新たな注視点（ｂｘ，ｂｙ，ｂｚ）に合わせたカメラ座標（ｃｘ，ｃｙ，ｃｚ）は、数３に従って算出される。
【０１２７】
[数３]
ｃｘ＝ｂｘ−ｄ×Ｚｘ
ｃｙ＝ｂｙ−ｄ×Ｚｙ
ｃｚ＝ｂｚ−ｄ×Ｚｚ
この実施例では、注視点、仮想カメラの向き、および注視点と仮想カメラとの距離からカメラ座標を算出することができるため、数３に従う計算処理を１回で済ませるようにしてある。ただし、予めカメラ座標（ｃｘ，ｃｙ，ｃｚ）を算出している場合には、注視点と同様に、予め（直前に）算出されたカメラ座標（ｃｘ，ｃｙ，ｃｚ）を平行移動させるようにすることも可能である。具体的には、数４に従って平行移動後のカメラ座標が算出される。かかる場合には、予めカメラ座標を算出するための計算処理と、直前に算出されたカメラ座標を平行移動するための計算処理とが実行されることになる。
【０１２８】
[数４]
ｃｘ＝ｃｘ＋ｖｘ
ｃｙ＝ｃｙ＋ｖｙ
ｃｚ＝ｃｚ＋ｖｚ
このように、注視点およびカメラ座標が移動されると、図１０および図１１の白抜きの太線で示す錐体２００ｂのように、元の錐体２００ａが平行移動される。このままでは、単なるスクロールと同じであるため、元の注視点（ａｘ，ａｙ，ａｚ）の移動を打ち消し、表示画面１００の中央に留まるように、錐体２００（視体積）の範囲を設定する。つまり、注視点面が元の錐体２００ａにおける位置から移動しないように、錐体２００ｂ（視体積）を変形させる。具体的には、注視点面での移動量（カーソル移動量）をニアクリッピング面での移動量に変換した後、ニアクリッピング面の左右端および上下端の位置をニアクリッピング面の大きさに従って設定する。これは、数５に従って設定される。ただし、ニアクリッピング面（画面）左端の位置がｘ１であり、画面右端の位置がｘ２であり、画面上端の位置がｙ１であり、そして、画面下端の位置がｙ２である。
【０１２９】
[数５]
ｘ１＝−ｓｘ×（ｎ÷ｄ）＋（ｗｘ÷２）
ｘ２＝−ｓｘ×（ｎ÷ｄ）−（ｗｘ÷２）
ｙ１＝−ｓｙ×（ｎ÷ｄ）＋（ｗｙ÷２）
ｙ２＝−ｓｙ×（ｎ÷ｄ）−（ｗｙ÷２）
なお、仮想カメラから注視点面までの距離ｄと仮想カメラからニアクリッピング面までの距離ｎとの比率を掛けることにより、注視点面での移動量をニアクリッピング面での移動量に変換している。また、投影面（ニアクリッピング面）の中心点からのカーソル移動量（ｓｘ，ｓｙ）を用いるため、横の長さｗｘと縦の長さｗｙとを半分にして、加算または減算してある。
【０１３０】
このようにして、視体積すなわち錐体２００は変形される。上述したように、変形された錐体２００ｃは、図１０および図１１の斜線を付した太線によって表わされる。図１０および図１１から分かるように、元の錐体２００ａにおける注視点面と変形後の錐体２００ｃにおける注視点面とが重なっている。つまり、注視点面が移動しないように、錐体２００（視体積）が変形されているのである。
【０１３１】
錐体２００（視体積）が変形されると、カメラ座標（ｃｘ，ｃｙ，ｃｚ）、注視点（ｂｘ，ｂｙ，ｂｚ）および錐体２００（視体積）の情報{ｎ，ｆ，ｘ１，ｘ２，ｙ１，ｙ２}に基づいてカメラ行列が生成される。ここで、カメラ行列は、３次元仮想空間を仮想カメラから見た方向に変換する３×４ビュー行列と、２次元画面（投影面）に投影する４×４プロジェクション行列とからなる。具体的には、数６にビュー行列が示され、数７にプロジェクション行列が示される。
【０１３２】
【数６】
2010072668.tif 000003
【０１３３】
【数７】
2010072668.tif 000004
【０１３４】
このようなカメラ行列に従って投影変換（透視変換）され、つまり３次元画像が投影面に描画され、カーソル１０６（注視点）の位置が移動された表示画面１００がモニタ３４に表示される。この結果、カーソル１０６（注視点）の位置が移動されても、表示画面１００（投影面）上において、注視点と消失点１１０とが重なるように、表示画面１００が表示される。
【０１３５】
したがって、たとえば、図１２および図１３に示すように、カーソル１０６を移動させた場合には、カーソル１０６が指示する位置（指示位置）が３次元仮想空間および２次元の表示画面１００において正面となる。図１２では、カーソル１０６によって、左下のオブジェクト１０４ｃの中央が指示され、表示画面１００において、その指示位置に注視点と消失点１１０が重なっている。同様に、図１３では、カーソル１０６によって、右上のオブジェクト１０４ｂと右下のオブジェクト１０４ｄとの間が指示され、表示画面１００において、その指示位置に注視点と消失点１１０とが重なっている。
【０１３６】
なお、図８、図１２および図１３からも分かるように、カーソル１０６（注視点）が移動された場合であっても、注視点面は移動されていない。つまり、元の注視点は表示画面１００（投影面）の中心から移動されていないのである。
【０１３７】
図１４は図２に示したメインメモリ（４２ｅまたは４６）のメモリマップを示す。図１４に示すように、メインメモリ４２ｅ，４６は、プログラム記憶領域５００およびデータ記憶領域５０２を含む。プログラム記憶領域５００は、３次元画像処理プログラムを記憶し、この３次元画像処理プログラムは、入力データ検出プログラム５００ａ、オブジェクト制御プログラム５００ｂ、注視点制御プログラム５００ｃ、カメラ制御プログラム５００ｄ、視体積制御プログラム５００ｅおよび画像描画プログラム５００ｆなどによって構成される。
【０１３８】
入力データ検出プログラム５００ａは、コントローラ２２からの入力データを検出し、検出した入力データをデータ記憶領域５０２に記憶（一時記憶）するためのプログラムである。オブジェクト制御プログラム５００ｂは、入力データ検出プログラム５００ａに従って検出された入力データに従ってオブジェクト（１０６）の移動等を制御するためのプログラムである。
【０１３９】
注視点制御プログラム５００ｃは、仮想カメラの注視点の位置を設定するためのプログラムであり、注視点を予め設定された基準位置に自動的に設定したり、プレイヤないしユーザの指示に従って注視点を設定（移動）したりする。この実施例では、コントローラ２２からのプレイヤないしユーザの操作入力（入力データ）に従ってカーソル１０６が移動され、それに従って注視点が移動される。ただし、最初に表示画面１００が表示される際には、注視点は画面の中心（基準位置）と重なる位置に設定される。
【０１４０】
カメラ制御プログラム５００ｄは、仮想カメラの位置（カメラ座標）および仮想カメラの向きを設定するためのプログラムである。この実施例では、最初に表示画面１００が表示される際には、仮想カメラの注視点、仮想カメラの向きおよび仮想カメラと注視点との距離が３次元仮想空間において開発者等が意図する一部の範囲を切り抜くように設定される。ただし、カーソル１０６の移動に従って注視点が変化さると、注視点の変化に応じて、仮想カメラの位置および向きが変化される。
【０１４１】
視体積制御プログラム５００ｅは、錐体２００（視体積）の範囲を設定するためのプログラムである。この実施例では、注視点が変化されると、注視点の変化に応じて、錐体２００（視体積）の範囲が設定（変更）される。画像描画プログラム５００ｆは、仮想カメラの位置、注視点および視体積（錐体２００）の情報から、カメラ行列を生成し、このカメラ行列に従って３次元画像を描画するためのプログラムである。
【０１４２】
なお、図示は省略するが、３次元画像処理プログラムには、３次元仮想空間内にオブジェクトを生成するためのプログラムやテクスチャを貼り付けるためのプログラムなども含まれる。
【０１４３】
データ記憶領域５０２には、入力データ５０２ａ、注視点座標データ５０２ｂ、カメラ座標データ５０２ｃ、カメラ方向データ５０２ｄ、第１距離データ５０２ｅ、第２距離データ５０２ｆ、第３距離データ５０２ｇ、ニアクリッピング面の大きさデータ５０２ｈ、カーソル座標データ５０２ｉ、移動量データ５０２ｊ、視体積範囲データ５０２ｋおよび画像データ５０２ｍなどのデータが記憶される。
【０１４４】
入力データ５０２ａは、上述したように、入力データ検出プログラム５００ａに従って検出されるデータであって、コントローラ２２から入力（送信）される。この入力データ５０２ａは、たとえば、カーソル１０６の移動処理に用いられると、データ記憶領域５０２から削除される。注視点座標データ５０２ｂは、３次元仮想空間における注視点の位置座標についてのデータである。カメラ座標データ５０２ｃは、３次元仮想空間における仮想カメラの位置（カメラ座標）についてのデータである。カメラ方向データ５０２ｄは、３次元仮想空間における仮想カメラの向き（正面方向、上方向、左方向）についてのデータである。
【０１４５】
第１距離データ５０２ｅは、注視点と仮想カメラとの距離ｄについてのデータある。第２距離データ５０２ｆは、仮想カメラからニアクリッピング面までの距離ｎについてのデータである。第３距離データ５０２ｇは、仮想カメラからファークリッピング面までの距離ｆについてのデータである。ニアクリッピング面の大きさデータ５０２ｈは、ニアクリッピング面の横の長さｗｘと縦の長さｗｆとのついてのデータである。
【０１４６】
カーソル座標データ５０２ｉは、２次元の投影面（表示画面１００）上におけるカーソル１０６の位置座標についてのデータである。移動量データ５０２ｊは、２次元の投影面上における中心からカーソル１０６の指示位置までの距離（カーソル移動量）を、３次元仮想空間における注視点面の中心からの距離（移動量）に変換したデータである。
【０１４７】
視体積範囲データ５０２ｋは、視体積（錐体２００）の範囲を設定するためのデータであり、具体的は、ニアクリッピング面（画面）左端の位置ｘ１，画面右端の位置ｘ２，画面上端の位置ｙ１，画面下端の位置ｙ２についての座標データである。画像データ５０２ｍは、３次元仮想空間におけるオブジェクトなどを生成するためのポリゴンデータやテクスチャデータなどのデータである。
【０１４８】
なお、図示は省略するが、データ記憶領域５０２には、３次元画像処理プログラムを実行するための他のデータが記憶されたり、カウンタ（タイマ）やフラグが設けたりする。
【０１４９】
具体的には、図２に示したＣＰＵ４０が図１５および図１６に示すフロー図に従って３次元画像処理を実行する。なお、図示および詳細な説明は省略するが、別の処理によって、ＣＰＵ４０は、入力データ検出処理およびオブジェクト移動処理を実行し、コントローラ２２からの入力データに従ってカーソル１０６を投影面上で移動させるのである。
【０１５０】
図１５に示すように、ＣＰＵ４０は３次元画像処理を開始すると、ステップＳ１で、注視点（ａｘ，ａｙ，ａｚ）を設定する。つまり、３次元仮想空間における注視点の位置座標（注視点座標）が設定され、設定された注視点座標に対応する注視点データ５０２ｂがデータ記憶領域５０２に記憶される。
【０１５１】
次のステップＳ３では、仮想カメラの正面方向（Ｚｘ，Ｚｙ，Ｚｚ）、上方向（Ｙｘ，Ｙｙ，Ｙｚ）および左方向（Ｘｘ，Ｘｙ，Ｘｚ）を設定する。つまり、仮想カメラの向きが設定され、設定された向きに対応するカメラ方向データ５０２ｄがデータ記憶領域５０２に記憶される。ただし、各方向を示すベクトルの大きさは「１」である。
【０１５２】
続いて、ステップＳ５では、注視点と仮想カメラとの距離ｄを設定する。つまり、注視点と仮想カメラとの距離ｄが決定され、決定された距離ｄに対応する第１距離データ５０２ｅがデータ記憶領域５０２に記憶される。ステップＳ７では、仮想カメラから視体積のニアクリッピング面への距離ｎとファークリッピング面への距離ｆとを設定する。つまり、距離ｎと距離ｆとが決定され、距離ｎに対応する第２距離データ５０２ｆがデータ記憶領域５０２に記憶されるとともに、距離ｆに対応する第３距離データ５０２ｇがデータ記憶領域５０２に記憶される。
【０１５３】
続くステップＳ９では、ニアクリッピング面の横の長さｗｘと縦の長さｗｙとを設定する。つまり、横の長さｗｘと縦の長さｗｙとが決定され、決定された横の長さｗｘと縦の長さｗｙとに対応するニアクリッピング面の大きさデータ５０２ｈがデータ記憶領域５０２に記憶される。
【０１５４】
図１６に示すように、次のステップＳ１１では、画面上でのカーソル座標（ｓｘ，ｓｙ）を取得する。つまり、表示画面１００（投影面）におけるカーソル１０６の表示位置が検出される。そして、検出されたカーソル１０６の表示位置に対応するカーソル座標データ５０２ｉがデータ記憶領域５０２に記憶される。
【０１５５】
次のステップＳ１３では、カーソル移動量が０であるかどうかを判断する。つまり、カーソル座標（ｓｘ，ｓｙ）が（０，０）であるかどうかが判断される。ステップＳ１３で“ＹＥＳ”であれば、つまりカーソル座標（ｓｘ，ｓｙ）が（０，０）であれば、カーソル移動量が０であると判断して、ステップＳ１５で、注視点（ａｘ，ａｙ，ａｚ）に合わせたカメラ座標（ｃｘ，ｃｙ，ｃｚ）を設定する。ここでは、ＣＰＵ４０は、数８に従ってカメラ座標（ｃｘ，ｃｙ，ｃｚ）を算出し、算出したカメラ座標に対応するカメラ座標データ５０２ｃをデータ記憶領域５０２に記憶する。ただし、数８は数３において、注視点の座標を（ａｘ，ａｙ，ａｚ）としただけである。
【０１５６】
[数８]
ｃｘ＝ａｘ−ｄ×Ｚｘ
ｃｙ＝ａｙ−ｄ×Ｚｙ
ｃｚ＝ａｚ−ｄ×Ｚｚ
続くステップＳ１７では、通常の視体積の範囲を設定する。ここでは、ＣＰＵ４０は、数９に従って、視体積の範囲、すなわち、画面左端の位置ｘ１，画面右端の位置ｘ２，画面上端の位置ｙ１および画面下端の位置ｙ２を算出し、算出した視体積の範囲に対応する視体積範囲データ５０２ｋをデータ記憶領域５０２に記憶する。ただし、この数９は数５において、ｓｘ＝ｓｙ＝０としただけである。
【０１５７】
[数９]
ｘ１＝ｗｘ÷２
ｘ２＝−ｗｘ÷２
ｙ１＝ｗｙ÷２
ｙ２＝−ｗｙ÷２
そして、ステップＳ１９で、通常のカメラ行列を生成して、ステップＳ３１に進む。ただし、ステップＳ１９においては、注視点（ａｘ，ａｙ，ａｚ）と、ステップＳ１５で算出されたカメラ座標（ｃｘ，ｃｙ，ｃｚ）と、ステップＳ１７で算出された視体積の範囲を含む視体積情報{ｎ，ｆ，ｘ１，ｘ２，ｙ１，ｙ２}とから数６および数７に示したカメラ行列が算出される。
【０１５８】
また、ステップＳ１３で“ＮＯ”であれば、つまりカーソル座標（ｓｘ，ｓｙ）が（０，０）でなければ、カーソル移動量が０でないと判断して、ステップＳ２１で、画面中心からのカーソル移動量を、仮想空間の注視点を含むカメラ投影面と平行な平面上での注視点からの移動量（ｖｘ，ｖｙ，ｖｚ）に変換する。より具体的には、ＣＰＵ４０は、表示画面１００（投影面）の中心からカーソル１０６の位置（カーソル位置）までのカーソル移動量（Ｘ軸方向およびＹ軸方向のそれぞれの距離）を算出し、算出したカーソル移動量を数１に従って３次元仮想空間における注視点面上における移動量に変換する。この変換された移動量についてのデータ（移動量データ）５０２ｊがデータ記憶領域５０２に記憶される。
【０１５９】
次のステップＳ２３では、カーソル位置に合わせた新たな注視点（ｂｘ，ｂｙ，ｂｚ）を設定する。つまり、ＣＰＵ４０は、数２に従って、表示画面１００（投影面）上のカーソル１０６が指示する位置（指示位置）を３次元仮想空間における注視点面上の位置に変換し、変換された指示位置を新たな注視点の位置座標に決定し、決定した位置座標に対応する注視点座標データ５０２ｂをデータ記憶領域５０２に記憶する。つまり、注視点座標データ５０２ｂが更新される。
【０１６０】
続いて、ステップＳ２５では、新たな注視点（ｂｘ，ｂｙ，ｂｚ）に合わせたカメラ座標（ｃｘ，ｃｙ，ｃｚ）を設定する。つまり、ＣＰＵ４０は、カーソル１０６の位置に従って移動された注視点と同様に、数３に従って、仮想カメラの位置座標（カメラ座標）を平行移動し、平行移動したカメラ座標に対応するカメラ座標データ５０２ｃをデータ記憶領域５０２に記憶する。
【０１６１】
次に、ステップＳ２７では、元の注視点（ａｘ，ａｙ，ａｚ）が画面中央に留まるように視体積の範囲を設定する。ここでは、ＣＰＵ４０は、数５に従って、表示画面１００上におけるカーソル１０６（元の注視点）の移動量を打ち消すように、ニアクリッピング面の各辺の移動量を算出する。つまり、ＣＰＵ４０は、視体積の範囲（ｘ１，ｘ２，ｙ１，ｙ２）を算出し、算出した視体積の範囲に対応する視体積範囲データ５０２ｋをデータ記憶領域５０２に記憶する。したがって、注視点面が移動しないように、視体積（錐体２００）が変形される。
【０１６２】
続くステップＳ２９では、カメラ座標（ｃｘ，ｃｙ，ｃｚ）と注視点（ｂｘ，ｂｙ，ｂｚ）と視体積情報｛ｎ，ｆ，ｘ１，ｘ２，ｙ１，ｙ２｝とから数６および数７に示したカメラ行列を生成する。ステップＳ１９またはステップＳ２９において、カメラ行列を生成すると、ステップＳ３１で、３Ｄ描画する。つまり、カメラ行列に従って３次元画像を投影面に描画し、表示画面１００をモニタ３４に表示する。
【０１６３】
そして、ステップＳ３３で、終了かどうかを判断する。つまり、プレイヤないしユーザの指示に従って３次元画像処理の終了の指示が入力されたかどうかを判断する。ステップＳ３３で“ＮＯ”であれば、つまり３次元画像処理を終了しない場合には、そのままステップＳ１１に戻る。一方、ステップＳ３３で“ＹＥＳ”であれば、つまり３次元画像処理を終了する場合には、そのまま処理を終了する。
【０１６４】
この実施例によれば、カーソルのようなオブジェクトの移動に従って注視点が移動されると、注視点面が移動されないように、視体積を変形させるので、投影面（表示画面）上で注視点と消失点とが重なる。このため、３次元仮想空間における真正面が２次元の表示画面上においても真正面となるので、３次元仮想空間を容易に認識（把握）することができる。
【０１６５】
なお、この実施例では、カーソルのようなオブジェクトの移動に従って注視点が移動されるようにしたが、注視点を直接的に移動させるようにしてもよい。
【０１６６】
また、この実施例では、カーソルのようなオブジェクトを移動させるようにしたが、ゲーム装置を用いてゲームをプレイする場合には、カーソルに代えてプレイヤオブジェクトを表示するようにしてもよい。
【０１６７】
さらに、この実施例では、ゲーム装置とモニタとが個別に設けられたゲーム装置についてのみ説明したが、ゲーム機能を有するコンピュータ、モニタがゲーム装置に一体的に設けられた携帯ゲーム装置（ゲーム機能を有する携帯電話機を含む）、アーケードゲームのような他のゲーム装置を用いることも可能である。
【図面の簡単な説明】
【０１６８】
【図１】図１はこの発明のゲームシステムの一実施例を示す図解図である。
【図２】図２は図１に示すゲームシステムの電気的な構成を示すブロック図である。
【図３】図３は図１に示すコントローラの外観を説明するための図解図である。
【図４】図４は図３に示すコントローラの電気的な構成を示すブロック図である。
【図５】図５は図１に示すコントローラを用いてゲームプレイするときの状態を概説するための図解図である。
【図６】図６は図１に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図７】図７は対象画像を含む撮像画像の一例を示す図解図である。
【図８】図８は図１に示すモニタに表示される表示画面の例を示す図解図である。
【図９】図９は３次元仮想空間における錐体（視体積）を説明するための図解図である。
【図１０】図１０は３次元仮想空間における錐体（視体積）の平行移動および変形を説明するための図解図である。
【図１１】図１１は３次元仮想空間における錐体（視体積）の平行移動および変形を説明するための図解図である。
【図１２】図１２は図１に示すモニタに表示される表示画面の他の例を示す図解図である。
【図１３】図１３は図１に示すモニタに表示される表示画面のその他の例を示す図解図である。
【図１４】図１４は図２に示すメインメモリのメモリマップを示す図解図である。
【図１５】図１５は図２に示すＣＰＵの３次元画像処理の一部を示すフロー図である。
【図１６】図１６は図２に示すＣＰＵの３次元画像処理の他の一部であって、図１５に後続するフロー図である。
【符号の説明】
【０１６９】
１０  …ゲームシステム
１２  …ゲーム装置
１８  …光ディスク
２２  …コントローラ
２６  …入力手段
３４  …モニタ
３４ａ  …スピーカ
４０  …ＣＰＵ
４２  …システムＬＳＩ
４２ａ  …入出力プロセッサ
４２ｂ  …ＧＰＵ
４２ｃ  …ＤＳＰ
４２ｄ  …ＶＲＡＭ
４２ｅ  …内部メインメモリ
４４  …フラッシュメモリ
４６  …外部メインメモリ
４８  …ＲＯＭ／ＲＴＣ
５０  …無線通信モジュール
５２  …無線コントローラモジュール
５４  …ディスクドライブ
５６  …ＡＶ  ＩＣ
５８  …ＡＶコネクタ
６０  …拡張コネクタ
６２  …メモリカード用コネクタ
７０  …プロセッサ
７４  …加速度センサ
８０  …画像情報演算部
８０ｃ  …撮像素子
８０ｄ  …画像処理回路
【図１】
2010072668.tif 000005
【図２】
2010072668.tif 000006
【図３】
2010072668.tif 000007
【図４】
2010072668.tif 000008
【図５】
2010072668.tif 000009
【図６】
2010072668.tif 000010
【図７】
2010072668.tif 000011
【図８】
2010072668.tif 000012
【図９】
2010072668.tif 000013
【図１０】
2010072668.tif 000014
【図１１】
2010072668.tif 000015
【図１２】
2010072668.tif 000016
【図１３】
2010072668.tif 000017
【図１４】
2010072668.tif 000018
【図１５】
2010072668.tif 000019
【図１６】
2010072668.tif 000020