(57)【特許請求の範囲】
【請求項１】
画像を表示する表示部と、
少なくともプレイヤの一部を撮像する撮像部と、
前記表示部に仮想空間を表示させる表示制御部と、
前記撮像部が撮像する所定の画像の位置を特定する位置特定部と、
前記位置特定部によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御部と、
プレイヤの入力に応じて画面上の位置を指示する指示部と、
前記指示部によって指示された前記画面上の位置が、前記仮想空間における所定のオブジェクトの表示位置を示すか否かを判定した結果と、前記指示部によって指示されたときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定の範囲内であるか否かを判定した結果に応じてゲーム処理を行うゲーム処理部とを備える、ゲーム装置。
【請求項２】
前記仮想空間内に分散して複数のオブジェクトを配置し、
前記指示部によって指示されたときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定範囲内であると判定されたとき、前記複数のオブジェクトの組み合わせによって前記所定のオブジェクトが表される、請求項１記載のゲーム装置。
【請求項３】
前記仮想カメラ制御部は、前記仮想カメラの前記仮想空間における注視点を固定し、前記仮想カメラの位置を前記位置特定部で特定された位置に対応させて設定する、請求項１または２記載のゲーム装置。
【請求項４】
前記位置特定部は、前記撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出し、
前記仮想カメラ制御部は、前記撮像部が撮像した画像内の前記所定の座標の位置に前記仮想空間内における所定平面内の座標を対応させて、前記仮想カメラの位置を設定する、請求項３記載のゲーム装置。
【請求項５】
前記表示部は、第１の表示部と第２の表示部とからなり、
前記撮像部は、前記第１の表示部と前記第２の表示部との間に配置される、請求項１ないし４のいずれかに記載のゲーム装置。
【請求項６】
前記プレイヤの入力により方向を入力する方向入力部をさらに備え、
前記指示部は、前記方向入力部によって入力された方向に指示位置を移動させることで前記画面上の位置を指示する、請求項１ないし５のいずれかに記載のゲーム装置。
【請求項７】
前記表示部上に配置されるタッチパネルさらに備え、
前記指示部は、前記タッチパネルに対する入力に基づいて前記画面上の位置を指示する、請求項１ないし５のいずれかに記載のゲーム装置。
【請求項８】
画像を表示する表示部と、少なくともプレイヤの一部を撮像する撮像部とを備えるゲーム装置のコンピュータによって実行されるゲームプログラムであって、
前記コンピュータを、
前記表示部に仮想空間を表示させる表示制御手段と、
前記撮像部が撮像する所定の画像の位置を特定する位置特定手段と、
前記位置特定手段によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御手段と、
プレイヤの入力に応じて画面上の位置を指示する指示手段と、
前記指示部によって指示された前記画面上の位置が、前記仮想空間における所定のオブジェクトの表示位置を示すか否かを判定した結果と、前記指示手段によって指示されたときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定の範囲内であるか否かを判定した結果に応じてゲーム処理を行うゲーム処理手段として機能させる、ゲームプログラム。
【請求項９】
前記仮想カメラ制御手段は、前記仮想カメラの前記仮想空間における注視点を固定し、前記仮想カメラの位置を前記位置特定手段で特定された位置に対応させて設定する、請求項８記載のゲームプログラム。
【請求項１０】
前記位置特定手段は、前記撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出し、
前記仮想カメラ制御手段は、前記撮像部が撮像した画像内の前記所定の座標の位置に前記仮想空間内における所定平面内の座標を対応させて、前記仮想カメラの位置を設定する、請求項９記載のゲームプログラム。
【請求項１１】
画像を表示する表示部と、
少なくともプレイヤの一部を撮像する撮像部と、
前記表示部に仮想空間を表示させる表示制御部と、
前記撮像部が撮像する所定の画像の位置を特定する位置特定部と、
前記位置特定部によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御部と、
プレイヤの入力に応じて画面上の位置を指示する指示部と、
前記指示部によって指示された前記画面上の位置が、前記仮想空間における所定のオブジェクトの表示位置を示すか否かを判定した結果と、前記指示部によって指示されたときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定の範囲内であるか否かを判定した結果に応じてゲーム処理を行うゲーム処理部とを備える、ゲームシステム。
【請求項１２】
画像を表示する表示部と、少なくともプレイヤの一部を撮像する撮像部とを備えるゲーム装置のゲーム制御方法であって、
前記ゲーム装置のコンピュータは、
（ａ）前記表示部に仮想空間を表示し、
（ｂ）前記撮像部が撮像する所定の画像の位置を特定し、
（ｃ）前記ステップ（ｂ）において特定した位置に応じて仮想カメラを制御し、
（ｄ）プレイヤの入力に応じて画面上の位置を指示し、そして
（ｅ）前記ステップ（ｄ）において指示した前記画面上の位置が、前記仮想空間における所定のオブジェクトの表示位置を示すか否かを判定した結果と、前記ステップ（ｄ）において指示したときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定の範囲内であるか否かを判定した結果に応じてゲーム処理を行う、ゲーム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲーム装置、ゲームプログラム、ゲームシステムおよびゲーム制御方法に関し、特にたとえば、プレイヤを撮影した画像をゲーム処理に用いる、ゲーム装置、ゲームプログラム、ゲームシステムおよびゲーム制御方法に関する。
【背景技術】
【０００２】
この種のゲーム装置の一例が特許文献１に開示されている。この特許文献１の電子遊技機器は、本体に配置された姿勢検出用光電センサ群によって競技者の競技姿勢を検出し、検出した競技姿勢に応じて表示画面の視点を変更する。たとえば、競技者の姿勢が右側に傾くと、表示画像も右に傾くような視点が設定され、競技者が前屈みになると、水平線の位置が画面上で上方へスライドするような視点が設定される。
【特許文献１】特開２００４−３１３７７８号［A63F 13/00］
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、特許文献１に開示された電子遊技機器では、競技者の姿勢に応じて視点を変更させることにより、表示画像を変化させて、臨場感を与えるようにしてあるだけであり、競技者の姿勢の変化によってゲームをプレイするものではない。
【０００４】
それゆえに、この発明の主たる目的は、新規なゲーム装置、ゲームプログラム、ゲームシステムおよびゲーム制御方法を提供することである。
【０００５】
また、この発明の他の目的は、プレイヤ自身の姿勢をゲームに効果的に利用することができる、ゲーム装置、ゲームプログラム、ゲームシステムおよびゲーム制御方法を提供することができる。
【課題を解決するための手段】
【０００６】
第１の発明は、表示部と、表示制御部と、位置特定部と、仮想カメラ制御部と、指示部と、ゲーム処理部とを備える、ゲーム装置である。表示部は、画像を表示する。撮像部は、少なくともプレイヤの一部を撮像する。表示制御部は、表示部に仮想空間を表示させる。位置特定部は、撮像部が撮像する所定の画像の位置を特定する。たとえば、撮影画像に含まれる所定の画像についての位置が特定される。仮想カメラ制御部は、位置特定部によって特定された位置に応じて仮想カメラを制御する。指示部は、プレイヤの入力に応じて画面上の位置を指示する。ゲーム処理部は、指示部によって指示された画面上の位置が、仮想空間における所定のオブジェクトの表示位置を示すか否かを判定した結果と、指示部によって指示されたときの仮想カメラの向きが所定のオブジェクトに対して設定された所定の範囲内であるか否かを判定した結果に応じてゲーム処理を行う。
【０００７】
第１の発明によれば、プレイヤが指示した画面上の位置と、撮像したプレイヤについての所定の画像の位置に応じて制御された仮想カメラの状態とに応じてゲーム処理を行うので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。また、仮想カメラの向きが所定の範囲内であるか否かを判定するだけなので、判定が容易である。さらに、プレイヤの指示する位置が、所定のオブジェクトの表示位置か否かを判定するので、その判定結果をゲーム処理に利用することができる。
【００１２】
第２の発明は、第１の発明に従属し、仮想空間内に分散して複数のオブジェクトを配置する。判定部によって、指示部によって指示されたときの仮想カメラの向きが所定のオブジェクトに対して設定された所定範囲内であると判定されたとき、複数のオブジェクトの組み合わせによって所定のオブジェクトが表される。たとえば、所定のオブジェクトは、複数のオブジェクトの組み合わせや重ね合わせ（接合または合成（合体）も含む）によって形成される、文字、図形、記号または画像（模様やキャラクタ）等を表現したオブジェクトである。
【００１３】
第２の発明によれば、仮想空間内に分散された複数のオブジェクトを所定の向きに設定された仮想カメラで撮影した場合に、その複数のオブジェクトに所定のオブジェクトを表すので、仮想空間内に隠された所定のオブジェクトを見つけ出す面白さを提供することができる。
【００１４】
第３の発明は、第１または第２の発明のいずれかに従属し、仮想カメラ制御部は、仮想カメラの仮想空間における注視点を固定し、仮想カメラの位置を位置特定部で特定された位置に対応させて設定する。
【００１５】
第３の発明によれば、仮想カメラの位置を所定の画像に基づいて設定することができ、その向きは仮想空間に固定された注視点に向ければ良いので、撮影画像に基づいて仮想カメラの位置および方向を設定することができる。
【００１６】
第４の発明は、第３の発明に従属し、位置特定部は、撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出する。たとえば、撮影画像から肌色の領域を特定し、さらにプレイヤの顔を特定して眼の位置を算出する。仮想カメラ制御部は、撮像部が撮像した画像内の所定の座標の位置に仮想空間内における所定平面内の座標を対応させて、仮想カメラの位置を設定する。たとえば、プレイヤの眼の位置に応じて仮想カメラの位置が設定される。
【００１７】
第４の発明によれば、撮影した画像に基づいて仮想カメラの位置を設定することができる。
【００１８】
第５の発明は、第１ないし第４の発明のいずれかに従属し、表示部は、第１の表示部と第２の表示部とからなる。撮像部は、第１の表示部と第２の表示部との間に配置される。したがって、たとえば、ゲーム装置に向かうプレイヤの顔の画像が撮影される。
【００１９】
第５の発明では、２つの表示部の間に撮像部を設けるので、表示部を見ながらゲームを行うプレイヤの画像に基づいて仮想カメラを制御することができる。
【００２０】
第６の発明は、第１ないし第５の発明のいずれかに従属し、ゲーム装置は、方向入力部をさらに備える。方向入力部は、プレイヤの入力により方向を入力する。指示部は、方向入力部によって入力された方向に指示位置を移動させることで画面上の位置を指示する。
【００２１】
第６の発明によれば、方向入力部によって指示位置を移動させるので、画面上の位置を簡単に指示することができる。
【００２２】
第７の発明は、第１ないし第５の発明のいずれかに従属し、ゲーム装置は、タッチパネルをさらに備える。タッチパネルは、表示部上に配置される。指示部は、タッチパネルに対する入力に基づいて画面上の位置を指示する。
【００２３】
第７の発明によれば、指示位置をタッチするだけなので、画面上の位置を簡単に指示することができる。
【００２４】
第８の発明は、画像を表示する表示部と、撮像部とを備えるゲーム装置のコンピュータによって実行されるゲームプログラムであって、コンピュータを、表示部に仮想空間を表示させる表示制御手段と、撮像部が撮像する所定の画像の位置を特定する位置特定手段と、位置特定手段によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御手段と、プレイヤの入力に応じて画面上の位置を指示する指示手段と、指示部によって指示された画面上の位置が、仮想空間における所定のオブジェクトの表示位置を示すか否かを判定した結果と、指示部によって指示されたときの仮想カメラの向きが所定のオブジェクトに対して設定された所定の範囲内であるか否かを判定した結果に応じてゲーム処理を行うゲーム処理手段として機能させる、ゲームプログラムである。
第９の発明は、画像を表示する表示部と、少なくともプレイヤの一部を撮像する撮像部と、表示部に仮想空間を表示させる表示制御部と、撮像部が撮像する所定の画像の位置を特定する位置特定部と、位置特定部によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御部と、プレイヤの入力に応じて画面上の位置を指示する指示部と、指示部によって指示された画面上の位置が、仮想空間における所定のオブジェクトの表示位置を示すか否かを判定した結果と、指示部によって指示されたときの仮想カメラの向きが所定のオブジェクトに対して設定された所定の範囲内であるか否かを判定した結果に応じてゲーム処理を行うゲーム処理部とを備える、ゲームシステムである。
第１０の発明は、画像を表示する表示部と、少なくともプレイヤの一部を撮像する撮像部とを備えるゲーム装置のゲーム制御方法であって、ゲーム装置のコンピュータは、（ａ）表示部に仮想空間を表示し、（ｂ）撮像部が撮像する所定の画像の位置を特定し、（ｃ）ステップ（ｂ）において特定した位置に応じて仮想カメラを制御し、（ｄ）プレイヤの入力に応じて画面上の位置を指示し、そして（ｅ）ステップ（ｄ）において指示した画面上の位置が、仮想空間における所定のオブジェクトの表示位置を示すか否かを判定した結果と、ステップ（ｄ）において指示したときの仮想カメラの向きが所定のオブジェクトに対して設定された所定の範囲内であるか否かを判定した結果に応じてゲーム処理を行う、ゲーム制御方法である。
【００２５】
第９ないし第１１の発明においても、第１の発明と同様に、プレイヤ自身の姿勢をゲームに効果的に利用することができる。
【発明の効果】
【００２６】
この発明によれば、プレイヤが指示した画面上の位置と、撮像したプレイヤについての所定の画像の位置に応じて制御された仮想カメラの状態とに応じてゲーム処理を行うので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。
【００２７】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２８】
【図１】図１はこの発明のゲーム装置の外観構成の一実施例を示す図解図である。
【図２】図２は図１に示すゲーム装置を折り畳んだ状態の上面図および左側面図を示す図解図である。
【図３】図３は図１および図２に示すゲーム装置の電気的な構成を示すブロック図である。
【図４】図４は図１および図２に示すゲーム装置の使用例を示す図解図である。
【図５】図５は図１に示すゲーム装置の内側カメラの画角および撮影範囲を説明するための図解図である。
【図６】図６はこの実施例の仮想ゲームにおいて複数のオブジェクトによって文字等を表示する場合の例を説明するための図解図である。
【図７】図７は図４に示す第１ＬＣＤおよび第２ＬＣＤに表示されるゲーム画面の一例を示す図解図である。
【図８】図８は図４に示す第１ＬＣＤおよび第２ＬＣＤに表示されるゲーム画面の他の例を示す図解図である。
【図９】図９は図４に示す第１ＬＣＤおよび第２ＬＣＤに表示されるゲーム画面のその他の例を示す図解図である。
【図１０】図１０は図１に示すゲーム装置の表示面と仮想カメラの位置と３次元仮想空間との関係の例を示す図解図である。
【図１１】図１１は図１０に示す場合の撮影画像と表示面との関係を示す図解図である。
【図１２】図１２は図１に示すゲーム装置の表示面と仮想カメラの位置と３次元仮想空間との関係の他の例を示す図解図である。
【図１３】図１３は図１２に示す場合の撮影画像と表示面との関係を示す図解図である。
【図１４】図１４は３次元仮想空間に配置されるオブジェクトとその当り判定オブジェクトとの例を示す図解図である。
【図１５】図１５は仮想カメラの或る位置における正解判定を説明するための説明図である。
【図１６】図１６は仮想カメラの他の位置における正解判定を説明するための説明図である。
【図１７】図１７は図３に示すメインメモリのメモリマップの例を示す図解図である。
【図１８】図１８は図３に示すＣＰＵの全体処理を示すフロー図である。
【図１９】図１９は図３に示すＣＰＵの眼の位置取得処理を示すフロー図である。
【図２０】図２０は図３に示すＣＰＵの描画処理を示すフロー図である。
【図２１】図２１は図３に示すＣＰＵの正解判定処理を示すフロー図である。
【発明を実施するための形態】
【００２９】
図１を参照して、この発明の一実施例であるゲーム装置１０は、上側ハウジング１２および下側ハウジング１４を含み、上側ハウジング１２と下側ハウジング１４とは、開閉可能（折り畳み可能）に連結されている。図１の例では、上側ハウジング１２および下側ハウジング１４は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回動可能に連結されている。つまり、この実施例のゲーム装置１０は、折り畳み型の携帯ゲーム装置であり、図１には、当該ゲーム装置１０を開いた状態（開状態）で示してある。ゲーム装置１０は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【００３０】
通常、ユーザは、開状態でゲーム装置１０を使用する。また、ユーザは、ゲーム装置１０を使用しない場合には閉状態で保管する。ただし、ゲーム装置１０は、上記閉状態および開状態のみでなく、上側ハウジング１２と下側ハウジング１４とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング１２を下側ハウジング１４に対して任意の角度で静止させることができる。
【００３１】
なお、ゲーム装置１０は、後述するカメラ（３２，３４）を搭載しており、当該カメラ（３２，３４）によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【００３２】
図１に示すように、上側ハウジング１２には第１ＬＣＤ１６が設けられ、下側ハウジング１４には第２ＬＣＤ１８が設けられる。第１ＬＣＤ１６および第２ＬＣＤ１８は、横長形状であり、それぞれの長辺方向が上側ハウジング１２および下側ハウジング１４の長辺方向と一致するように配置される。たとえば、第１ＬＣＤ１６および第２ＬＣＤ１８の解像度は、２５６(横)×１９２(縦）画素（ドット）に設定される。
【００３３】
なお、この実施例では、表示器としてＬＣＤを用いるようにしてあるが、ＬＣＤに代えて、ＥＬ(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。また、ゲーム装置１０は、任意の解像度の表示装置を利用することができる。
【００３４】
図１および図２に示すように、下側ハウジング１４には、入力装置として、各操作ボタン２０ａ−２０ｋが設けられる。この各操作ボタン２０ａ−２０ｋのうち、方向入力ボタン２０ａ、操作ボタン２０ｂ、操作ボタン２０ｃ、操作ボタン２０ｄ、操作ボタン２０ｅ、電源ボタン２０ｆ、スタートボタン２０ｇ、およびセレクトボタン２０ｈは、下側ハウジング１４の第２ＬＣＤ１８が設けられる側の面（内側の面）に配置される。具体的には、方向入力ボタン２０ａおよび電源ボタン２０ｆは、第２ＬＣＤ１８の左側に配置され、操作ボタン２０ｂ−２０ｅ，２０ｇおよび２０ｈは、第２ＬＣＤ１８の右側に配置される。また、上側ハウジング１２と下側ハウジング１４とを折り畳んだときには、操作ボタン２０ａ−２０ｈはゲーム装置１０の内部に収められる。
【００３５】
方向入力ボタン（十字キー）２０ａは、ディジタルジョイスティックとして機能し、プレイヤオブジェクトの移動方向を指示したり、カーソルを移動させたりするなどに用いられる。各操作ボタン２０ｂ−２０ｅは、プッシュボタンであり、たとえば、プレイヤオブジェクトに任意の動作をさせたり、決定やキャンセルを実行したりする等に用いられる。電源ボタン２０ｆは、プッシュボタンであり、ゲーム装置１０の主電源をオン／オフするために用いられる。スタートボタン２０ｇは、プッシュボタンであり、ゲームを中断（ポーズ）したり、開始（再開）したりするために用いられる。セレクトボタン２０ｈは、プッシュボタンであり、ゲームモードやメニューの選択等に用いられる。
【００３６】
図１においては、操作ボタン２０ｉ−２０ｋを省略したが、図２（Ａ）に示すように、操作ボタン（Ｌボタン）２０ｉは、下側ハウジング１４の上側面の左端部に設けられ、操作ボタン（Ｒボタン）２０ｊは、下側ハウジング１４の上側面の右端部に設けられる。また、図２（Ｂ）に示すように、音量ボタン２０ｋは、下側ハウジング１４の左側面に設けられる。
【００３７】
なお、図２（Ａ）は、ゲーム装置１０を折り畳んだ状態で、上面（上ハウジング１２）側から見た図であり、図２（Ｂ）は、同じくゲーム装置１０を折り畳んだ状態で、左側面から見た図である。
【００３８】
Ｌボタン２０ｉおよびＲボタン２０ｊは、プッシュボタンであり、操作ボタン２０ｂ−２０ｅと同様の操作に用いたり、それらの操作ボタン２０ｂ−２０ｅの補助的な操作に用いたりすることができる。また、この実施例では、Ｌボタン２０ｉおよびＲボタン２０ｊは、撮影指示の操作（シャッター操作）を行うために用いることもできる。音量ボタン２０ｋは、２つのプッシュボタンを用いて構成され、図示しない２つのスピーカ（右スピーカおよび左スピーカ）から出力される音の大きさを調整するために用いられる。この実施例では、音量ボタン２０ｋには、２つの押圧部を含む操作部が設けられ、各押圧部に対応して上記のプッシュボタンが設けられる。したがって、一方の押圧部を押すと音量が大きくされ、他方の押圧部を押すと音量が小さくされる。たとえば、押圧部を押し続けると、音量が次第に大きくされたり、次第に小さくされたりする。
【００３９】
図１に戻って、ゲーム装置１０は、操作ボタン２０ａ−２０ｋとは別の入力装置として、さらにタッチパネル２２を備えている。タッチパネル２２は、第２ＬＣＤ１８の画面上を覆うように装着されている。この実施例では、タッチパネル２２は、たとえば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル２２は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、この実施例では、タッチパネル２２として、たとえば第２ＬＣＤ１８の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル２２の解像度と第２ＬＣＤ１８の解像度とが一致している必要はない。
【００４０】
また、下側ハウジング１４の右側面には、挿入口（図１に示す破線）が設けられている。挿入口は、タッチパネル２２に対する操作を行うために用いられるタッチペン２４を収納することができる。通常、タッチパネル２２に対する入力は、タッチペン２４を用いて行われるが、タッチペン２４に限らずユーザの指でタッチパネル２２を操作することも可能である。したがって、たとえば、タッチペン２４を用いない場合には、タッチペン２４の挿入口および収納部を設ける必要はない。
【００４１】
また、下側ハウジング１４の右側面には、メモリカード２６を収納するための挿入口（図１では、二点鎖線で示している）が設けられている。この挿入口の内側には、ゲーム装置１０とメモリカード２６とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２６は、たとえばＳＤカードであり、コネクタに着脱自在に装着される。このメモリカード２６は、たとえば、ゲーム装置１０によって撮像された画像を記憶（保存）したり、他の装置で生成（撮像）ないし記憶された画像をゲーム装置１０に読み込んだりするために用いられる。
【００４２】
さらに、下側ハウジング１４の上側面には、メモリカード２８を収納するための挿入口（図１では、一点鎖線で示している）が設けられている。この挿入口の内側にも、ゲーム装置１０とメモリカード２８とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２８は、情報処理プログラムおよび必要なデータなどを記録した記録媒体であり、下側ハウジング１４に設けられた挿入口に着脱自在に装着される。
【００４３】
また、上側ハウジング１２と下側ハウジング１４との連結部（ヒンジ）の左端部分には、インジケータ３０が設けられる。このインジケータ３０は、３つのＬＥＤ３０ａ，３０ｂ，３０ｃによって構成される。ここで、ゲーム装置１０は、他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ３０ａは、無線通信が確立している場合に点灯する。第２ＬＥＤ３０ｂは、ゲーム装置１０の充電中に点灯する。第３ＬＥＤ３０ｃは、ゲーム装置１０の主電源がオンである場合に点灯する。したがって、インジケータ３０（ＬＥＤ３０ａ−３０ｃ）によって、ゲーム装置１０の通信確立状況、充電状況、および主電源のオン／オフ状況をユーザに通知することができる。
【００４４】
上述したように、上側ハウジング１２には、第１ＬＣＤ１６が設けられる。この実施例では、第２ＬＣＤ１８を覆うように、タッチパネル２２を設けているが、第１ＬＣＤ１６を覆うように、タッチパネル２２を設けてもよい。または、第１ＬＣＤ１６および第２ＬＣＤ１８のそれぞれを覆うように、２つのタッチパネル２２を設けるようにしてもよい。たとえば、第２ＬＣＤ１８には、各操作ボタン２０ａ−２０ｋやタッチパネル２２の役割ないし操作方法をユーザに教えるための操作説明画面やゲーム画面が表示される。
【００４５】
また、上側ハウジング１２には、２つのカメラ（内側カメラ３２および外側カメラ３４）が設けられる。図１に示すように、内側カメラ３２は、上側ハウジング１２と下側ハウジング１４との連結部付近であり、第１ＬＣＤ１６が設けられる側の面に、この第１ＬＣＤ１６の表示面とその撮影面とが平行または面一になるように取り付けられる。一方、外側カメラ３４は、図２（Ａ）に示すように、内側カメラ３２が取り付けられる面とは反対側の面、すなわち、上側ハウジング１２の外側の面（ゲーム装置１０が閉状態となった場合に外側となる面であり、図１に示す上側ハウジング１２の背面）に取り付けられる。ただし、図１においては、外側カメラ３４を破線で示してある。
【００４６】
したがって、内側カメラ３２は、上側ハウジング１２の内側の面が向く方向を撮像することが可能であり、外側カメラ３４は、内側カメラ３２の撮像方向の逆方向、すなわち、上側ハウジング１２の外側の面が向く方向を撮像することが可能である。このように、この実施例では、内側カメラ３２および外側カメラ３４の撮像方向が互いに逆方向となるように、それら２つのカメラ３２，３４が設けられる。たとえば、ゲーム装置１０を把持したユーザは、このゲーム装置１０側からユーザの方を見た景色（たとえば、当該ユーザを含む）を内側カメラ３２で撮像することができるとともに、ゲーム装置１０側からユーザとは反対側の方向を見た景色を外側カメラ３４で撮像することができる。
【００４７】
なお、上記連結部付近の内側の面には、音声入力装置としてマイク８４（図３参照）が収納されている。そして、上記連結部付近の内側の面には、マイク８４がゲーム装置１０外部の音を検知できるように、そのマイク８４用の孔３６が形成される。マイク８４を収納する位置およびマイク８４用の孔３６の位置は必ずしも上記連結部である必要はなく、たとえば下側ハウジング１４にマイク８４を収納し、マイク８４の収納位置に対応させて下側ハウジング１４にマイク８４用の孔３６を設けるようにしてもよい。
【００４８】
また、上側ハウジング１２の外側の面には、外側カメラ３４の近傍に第４ＬＥＤ３８（図１では、破線で示す）が取り付けられる。第４ＬＥＤ３８は、内側カメラ３２または外側カメラ３４によって撮影が行われた（シャッターボタンが押下された）時点で点灯する。また、内側カメラ３２または外側カメラ３４によって動画が撮影される場合には、第４ＬＥＤ３８は、撮影の間点灯し続ける。つまり、第４ＬＥＤ３８を点灯することによって、ゲーム装置１０による撮影が行われた（行われている）ことを撮影対象者や周囲に通知することができる。
【００４９】
また、上側ハウジング１２には、第１ＬＣＤ１６の両側に、音抜き孔４０が形成される。この音抜き孔４０に対応する位置であり、上側ハウジング１２の内部には、上述したスピーカが収納されている。音抜き孔４０は、スピーカからの音をゲーム装置１０の外部に放出するための孔である。
【００５０】
以上に説明したように、上側ハウジング１２には、画像を撮像するための構成である内側カメラ３２および外側カメラ３４と、主として、撮影された画像（撮影画像）およびゲーム画面を表示するための表示手段である第１ＬＣＤ１６とが設けられる。一方、下側ハウジング１４には、ゲーム装置１０に対する操作入力を行うための入力装置（操作ボタン２０（２０ａ−２０ｋ）およびタッチパネル２２）と、主として、操作画面およびゲーム画面を表示するための表示手段である第２ＬＣＤ１８とが設けられる。したがって、ゲーム装置１０は、２つの画面（１６，１８）および２系統の操作部（３０２２）を備えている。
【００５１】
図３は、この実施例のゲーム装置１０の電気的な構成を示すブロック図である。図３に示すように、ゲーム装置１０は、ＣＰＵ５０、メインメモリ５２、メモリ制御回路５４、保存用データメモリ５６、プリセットデータ用メモリ５８、メモリカードインターフェース（メモリカードＩ／Ｆ）６０、メモリカードＩ／Ｆ６２、無線通信モジュール６４、ローカル通信モジュール６６、リアルタイムクロック（ＲＴＣ）６８、電源回路７０、およびインターフェース回路（Ｉ／Ｆ回路）７２、第１ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７４、第２ＧＰＵ７６、第１ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）７８、第２ＶＲＡＭ８０、およびＬＣＤコントローラ８２等の電子部品を備えている。これらの電子部品（回路コンポーネント）は、電子回路基板上に実装されて、下側ハウジング１４（または上側ハウジング１２でもよい）内に収納される。
【００５２】
ＣＰＵ５０は、所定のプログラムを実行するための情報処理手段である。この実施例では、所定のプログラムは、ゲーム装置１０内のメモリ（たとえば保存用データメモリ５６）やメモリカード２６および／または２８に記憶されており、ＣＰＵ５０は、当該所定のプログラムを実行することによって、後述する情報処理を実行する。
【００５３】
なお、ＣＰＵ５０によって実行されるプログラムは、ゲーム装置１０内のメモリに予め記憶していてもよいし、メモリカード２６および／または２８から取得してもよいし、他の機器と通信することによって当該他の機器から取得してもよい。
【００５４】
ＣＰＵ５０には、メインメモリ５２、メモリ制御回路５４、およびプリセットデータ用メモリ５８が接続される。また、メモリ制御回路５４には、保存用データメモリ５６が接続される。メインメモリ５２は、ＣＰＵ５０のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ５２は、上記情報処理に用いられる各種データを記憶（一時記憶）したり、外部（メモリカード２６および２８や他の機器等）から取得されるプログラムを記憶したりする。この実施例では、メインメモリ５２として、たとえばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。保存用データメモリ５６は、ＣＰＵ５０によって実行されるプログラムや内側カメラ３２および外側カメラ３４によって撮像された画像のデータ等を記憶（保存）するための記憶手段である。この保存用データメモリ５６は、不揮発性の記憶媒体によって構成されており、たとえば、ＮＡＮＤ型フラッシュメモリを用いることができる。メモリ制御回路５４は、ＣＰＵ５０の指示に従って、保存用データメモリ５６に対するデータの読み出しおよび書き込みを制御する。プリセットデータ用メモリ５８は、ゲーム装置１０において予め設定される各種パラメータ等のデータ（プリセットデータ）を記憶するための記憶手段である。プリセットデータ用メモリ５８としては、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）バスによってＣＰＵ５０と接続されるフラッシュメモリを用いることができる。
【００５５】
メモリカードＩ／Ｆ６０および６２は、それぞれＣＰＵ５０に接続される。メモリカードＩ／Ｆ６０は、コネクタに装着されたメモリカード２６に対するデータの読み出しおよび書き込みを、ＣＰＵ５０の指示に応じて行う。また、メモリカードＩ／Ｆ６２は、コネクタに装着されたメモリカード２８に対するデータの読み出しおよび書き込みを、ＣＰＵ５０の指示に応じて行う。この実施例では、内側カメラ３２および外側カメラ３４によって撮像された画像に対応する画像データや他の装置から受信された画像データがメモリカード２６に書き込まれたり、メモリカード２６に記憶された画像データがメモリカード２６から読み出されて保存用データメモリ５６に記憶されたり、他の装置へ送信されたりする。また、メモリカード２８に記憶された各種プログラムが、ＣＰＵ５０によって読み出されて実行されたりする。
【００５６】
なお、ゲームプログラムなどの情報処理プログラムは、メモリカード２８等の外部記憶媒体を通じてゲーム装置１０に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置１０に供給されてもよい。また、情報処理プログラムは、ゲーム装置１０内部の不揮発性記憶装置に予め記録されていてもよい。さらに、情報処理プログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【００５７】
無線通信モジュール６４は、たとえばＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール６６は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール６４およびローカル通信モジュール６６は、ＣＰＵ５０に接続される。ＣＰＵ５０は、無線通信モジュール６４を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール６６を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００５８】
また、ＣＰＵ５０には、ＲＴＣ６８および電源回路７０が接続される。ＲＴＣ６８は、時間をカウントしてＣＰＵ５０に出力する。たとえば、ＣＰＵ５０は、ＲＴＣ６８によって計時された時間に基づいて、日付および現在時刻等を計算することもできる。電源回路７０は、ゲーム装置１０が有する電源（典型的には電池であり、下側ハウジング１４に収納される）から供給される電力を制御し、ゲーム装置１０の各回路コンポーネントに電力を供給する。
【００５９】
また、ゲーム装置１０は、マイク８４およびアンプ８６を備えている。マイク８４およびアンプ８６は、それぞれＩ／Ｆ回路７２に接続される。マイク８４は、ゲーム装置１０に向かって発声ないし発生されたユーザの音声ないし音（拍手や手拍子など）を検知して、当該音声ないし音を示す音声信号をＩ／Ｆ回路７２に出力する。アンプ８６は、Ｉ／Ｆ回路７２から与えられる音声信号を増幅してスピーカ（図示せず）に与える。Ｉ／Ｆ回路７２は、ＣＰＵ５０に接続される。
【００６０】
また、タッチパネル２２は、Ｉ／Ｆ回路７２に接続される。Ｉ／Ｆ回路７２は、マイク８４およびアンプ８６（スピーカ）の制御を行う音声制御回路と、タッチパネル２２の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル２２からの信号に基づいて所定の形式のタッチ位置データを生成してＣＰＵ５０に出力する。たとえば、タッチ位置データは、タッチパネル２２の入力面に対して入力が行われた位置の座標を示すデータである。
【００６１】
なお、タッチパネル制御回路は、タッチパネル２２からの信号の読み込み、および、タッチ位置データの生成を所定時間に１回の割合で行う。ＣＰＵ５０は、Ｉ／Ｆ回路７２を介して、タッチ位置データを取得することにより、タッチパネル２２に対して入力が行われた位置を知ることができる。
【００６２】
操作ボタン２０は、上記の各操作ボタン２０ａ−２０ｋによって構成され、ＣＰＵ５０に接続される。操作ボタン２０からＣＰＵ５０へは、各操作ボタン２０ａ−２０ｋに対する入力状況（押下されたか否か）を示す操作データが出力される。ＣＰＵ５０は、操作ボタン２０からの操作データを取得し、取得した操作データに応じた処理を実行する。
【００６３】
内側カメラ３２および外側カメラ３４は、それぞれＣＰＵ５０に接続される。内側カメラ３２および外側カメラ３４は、ＣＰＵ５０の指示に応じて画像を撮像し、撮像した画像に対応する画像データをＣＰＵ５０に出力する。この実施例では、ＣＰＵ５０は、内側カメラ３２および外側カメラ３４のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラ（３２，３４）が画像を撮像して画像データをＣＰＵ５０に送る。
【００６４】
第１ＧＰＵ７４には、第１ＶＲＡＭ７８が接続され、第２ＧＰＵ７６には、第２ＶＲＡＭ８０が接続される。第１ＧＰＵ７４は、ＣＰＵ５０からの指示に応じて、メインメモリ５２に記憶されている表示画像を生成するためのデータに基づいて第１の表示画像を生成し、第１ＶＲＡＭ７８に描画する。第２ＧＰＵ７６は、同様にＣＰＵ５０からの指示に応じて第２の表示画像を生成し、第２ＶＲＡＭ８０に描画する。第１ＶＲＡＭ７８および第２ＶＲＡＭ８０は、ＬＣＤコントローラ８２に接続されている。
【００６５】
ＬＣＤコントローラ８２は、レジスタ８２ａを含む。レジスタ８２ａは、ＣＰＵ５０からの指示に応じて、「０」または「１」の値を記憶する。ＬＣＤコントローラ８２は、レジスタ８２ａの値が「０」である場合には、第１ＶＲＡＭ７８に描画された第１の表示画像を第２ＬＣＤ１８に出力し、第２ＶＲＡＭ８０に描画された第２の表示画像を第１ＬＣＤ１６に出力する。また、レジスタ８２ａの値が「１」である場合には、第１ＶＲＡＭ７８に描画された第１の表示画像を第１ＬＣＤ１６に出力し、第２ＶＲＡＭ８０に描画された第２の表示画像を第２ＬＣＤ１８に出力する。
【００６６】
図４は、この実施例のゲーム処理を実行する場合のゲーム装置１０の使用例を示す。図４に示すように、ゲーム装置１０は、図１に示した状態から反時計周りに約９０°回転した状態で、ユーザないしプレイヤ（以下、単に「プレイヤ」という）によって把持される。したがって、第１ＬＣＤ１６および第２ＬＣＤ１８は横並びに配置される。
【００６７】
たとえば、この実施例の仮想ゲームでは、内側カメラ３２で撮影したプレイヤの画像（顔画像）からプレイヤの眼を特定し、さらに、ゲーム装置１０（第１ＬＣＤ１６および第２ＬＣＤ１８）に対する眼の位置を算出（取得）し、取得した眼の位置に応じて、３次元仮想空間内の視点（仮想カメラ）の位置を制御する。
【００６８】
図５（Ａ）に示すように、図４の矢印の方向からゲーム装置１０を見た場合に、プレイヤの顔（眼）の位置は、ゲーム装置１０の表示面（第１ＬＣＤ１６および第２ＬＣＤ１８の表示面）から一定距離（たとえば、３００ｍｍ）離れていると仮定してある。また、かかる場合に、内側カメラ３２の画角によって、図５（Ｂ）に示すように、その撮影範囲の横幅（図５（Ｂ）において横方向の長さ）が決定される。図示は省略するが、撮影範囲の縦幅（図５（Ｂ）において縦方向の長さ）も同様に決定される。
【００６９】
ここで、眼の位置の取得（特定）方法について説明する。まず、内側カメラ３２の撮影画像から肌色領域が抽出される。この実施例では、肌色の部分と肌色でない部分とが２値で表される（２値化処理）。ただし、肌色の部分か肌色でない部分かは、１画素毎に判断される。たとえば、肌色の画素については「１」が設定され、肌色でない画素については「０」が設定される。
【００７０】
詳細な説明は省略するが、仮想ゲームの本編の開始に先立って、予めプレイヤの顔画像を撮影し、その撮影画像に基づいて、当該プレイヤの肌色の情報（この実施例では、色差（Ｃｒ，Ｃｂ）の値）を取得している。これは、プレイヤ毎に肌色が異なり、また、同じプレイヤであっても、仮想ゲームをプレイする環境（たとえば、暗い場所と明るい場所）によって肌色が異なるからである。また、肌色と判定される色差の値の範囲は、別途キャリブレーションされている。一例として、Ｃｒ（色差成分の赤）については、１４４をピークとする前後９の範囲（１３５≦Ｃｒ≦１４４）であり、Ｃｂ（色差成分の青）については、１１９をピークとする前後１０の範囲（１０９≦Ｃｂ≦１２９）である。たとえば、ピークの値は、キャリブレーションの際における最頻値によって決定され、その前後の範囲については、たとえば、ピーク値の１／６４の頻度で出現する値までの範囲に決定される。
【００７１】
撮影画像から肌色が抽出され、２値化処理が実行されると、肌色についての塊情報が生成される。ここでは、肌色と判断される画素が所定数以上の塊で存在する領域（範囲）についての情報（塊情報）を生成する。次に、すべての塊情報のうち、最も大きい塊（範囲）を示す１の塊情報を選択する。これは、最も大きい塊が顔に相当すると考えられるからである。
【００７２】
なお、塊かどうかを判断する際の所定数は、撮影画像の解像度（画素数）に応じて決定される。
【００７３】
続いて、選択された塊情報から胴体部分が削除される。つまり、撮影画像の上方から下方に向けてサーチした場合に、選択された塊情報において、急に幅が広くなった部分以下を削除する。つまり、肩に相当する位置以下の肌色の部分が削除される。これによって、顔に相当する部分の肌色の領域のみが残される。
【００７４】
そして、顔に相当する部分の肌色の領域の最上位置と最下位置とを取得する。つまり、額の最上位置または頭頂部に相当する位置と、顎の先端部に相当する位置とが取得される。この２つの位置から、眼の位置が特定される。額の最上位置または頭頂部に相当する位置から一定値だけ下の値が眼の位置として設定される。この実施例では、最上位置と最下位置との間の長さの８分の１の長さだけ、最上位置から下がった位置が眼の位置として特定される。これは、実験等により、経験的に得られた値である。このように、撮影画像から眼の高さ方向の位置は決定される。また、この実施例では、眼の横方向の位置は、最上位置と同じ位置に決定される。ただし、眼の横方向の位置は、最上位置と最下位置とに基づいて決定してもよい。たとえば、眼の横方向の位置は、最上位置と最下位置との中点に決定される。
【００７５】
撮影画像から眼の位置が特定されると、図５（Ｂ）に示すように、内側カメラ３２の撮影画像の中心を原点Ｏとした２次元の撮影範囲における眼の位置の２次元座標（Ｘ１，Ｙ１）が決定される。たとえば、内側カメラ３２の撮影画像の大きさが仮想カメラ２００の移動可能な範囲に対応しており、眼の位置の２次元座標に応じて、３次元仮想空間における仮想カメラ２００のＸＹ平面内（図１０および図１２参照）の位置が決定される。ただし、仮想カメラ２００の３次元仮想空間におけるＺ座標は、後述する注視点との距離を一定に保つように、当該仮想カメラ２００をＸＹ平面内で移動させることにより決定される。ただし、仮想カメラ２００と注視点との距離は、現実空間における一定距離（この実施例では、３００ｍｍ）に相当する長さに設定される。ただし、注視点を含む面（注視点面）と一定距離（たとえば、３００ｍｍ）に相当する長さを隔てて、この注視点面に平行なＸＹ平面内で仮想カメラ２００を移動させるようにしてもよい。かかる場合には、３次元仮想空間内における仮想カメラ２００のＺ座標は一定値となる。
【００７６】
また、３次元仮想空間では、注視点の位置は固定的に決定されており、したがって、仮想カメラ２００の位置が変化されることにより、３次元仮想空間を様々な方向から見た画像がゲーム画面として第１ＬＣＤ１６および第２ＬＣＤ１８に表示される。ただし、後述するように、この実施例では、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面に対して、３次元仮想空間（複数のオブジェクトが配置されている範囲）が固定的に設定されているように見えるように、カメラ行列は設定される。
【００７７】
また、この実施例の仮想ゲームでは、仮想カメラ２００の位置を変化させることにより、ゲーム画面１００に表示された複数のオブジェクトや複数のオブジェクトの形状や模様（オブジェクトに付された模様や背景に描画された模様）の組み合わせや重ね合わせ（接合、合成または合成を含む）によって、或る文字（平仮名、片仮名、漢字、ローマ字（アルファベット）、数字（算用数字、アラビア数字）など）、或る図形、或る記号、或る模様（或るキャラクタの画像を含む）など（以下、これらのすべてを含む場合には、「文字等」という）が表される。
【００７８】
たとえば、図６（Ａ）に示すように、３つの独立のオブジェクトＯＢＪ１，ＯＢＪ２，ＯＢＪ３がゲーム画面に表示されている場合に、仮想カメラ２００の位置を右方向または左方向に移動させることにより、それらの３つのオブジェクトＯＢＪ１−ＯＢＪ３の組み合わせによって、アルファベットの「Ｈ」の文字が視覚的に認識されるようになる。つまり、アルファベットの「Ｈ」を示すオブジェクトが現れる。ただし、図６(Ａ）では、矢印の左側では、仮想カメラ２００がオブジェクトＯＢＪ１−ＯＢＪ３の正面に配置されており、また、上述したように、注視点は固定であることを前提とする。以下、図６（Ｂ）および図６（Ｃ）についても同じ。
【００７９】
また、図６（Ｂ）に示すように、３つの独立のオブジェクトＯＢＪ４，ＯＢＪ５，ＯＢＪ６がゲーム画面に表示されている場合に、仮想カメラ２００を右方向に移動させ、たとえば、オブジェクトＯＢＪ５およびオブジェクトＯＢＪ６がオブジェクトＯＢＪ４の前面に重なることにより、オブジェクトＯＢＪ４の一部がオブジェクトＯＢＪ５およびオブジェクトＯＢＪ６によって隠される。これによって、アルファベットの「Ｈ］の文字が視覚的に認識されるようになる。つまり、アルファベットの「Ｈ」を示すオブジェクトが現れる。
【００８０】
さらに、図６（Ｃ）に示すように、２つの独立のオブジェクトＯＢＪ７およびオブジェクトＯＢＪ８がゲーム画面に表示されている場合に、仮想カメラ２００を上方向または下方向に移動させると、オブジェクトＯＢＪ７およびオブジェクトＯＢＪ８のそれぞれに描画された模様が組み合わされ（接合され）され、数字の「５」の文字が視覚的に認識されるようになる。つまり、数字の「５」を示す模様を有するオブジェクトが現れる。
【００８１】
図示は省略するが、複数のオブジェクト（背景オブジェクトを含む）のそれぞれに描画された複数の模様を、重ね合わせたり、合成させたりすることにより、文字等が表現されることもある。
【００８２】
また、図示は省略するが、図６（Ａ）−（Ｃ）を用いて説明した方法が２つ以上用いられることにより、文字等が表現されることもある。
【００８３】
なお、図６（Ａ）−（Ｃ）では、簡単のため、平面的なオブジェクトＯＢＪ１−ＯＢＪ８をそのまま組み合わせたり、重ね合わせたりしただけであるが、実際には、３次元仮想空間を仮想カメラ２００で撮影した画像がゲーム画面として表示される。つまり、オブジェクトを左右のいずれかの方向から見るように、仮想カメラ２００を設定すると、オブジェクトの幅が狭く見える。また、オブジェクトを上下のいずれかの方向から見るように、仮想カメラ２００を設定すると、オブジェクトの長さが短く見える。さらに、立体的なオブジェクトについては、正面から見た場合には、平面のオブジェクトのように見えるが、左右または上下或いは斜めの方向から見るように、仮想カメラ２００を設定すると、オブジェクトの厚み（側面）が見える。
【００８４】
この仮想ゲームでは、問題として、複数個の或る文字等がプレイヤに提示される。プレイヤは、自身の姿勢や位置、もしくは自身に対するゲーム装置１０の向きや位置を変化させることにより、仮想カメラ２００の位置を制御する。上述したように、この実施例では、顔画像から特定された眼の位置に仮想カメラ２００の位置が制御されるため、プレイヤは、ゲーム装置１０（第１ＬＣＤ１６および第２ＬＣＤ１８）に対する顔（頭部）の位置を変化させる。すると、ゲーム画面１００が変化される。つまり、仮想カメラ２００を制御することによって、３次元仮想空間を見る方向が変化される。このようにして、問題としての所定の文字等を見つける（探す）のである。そして、問題としての所定の文字等をすべて見つけると、ゲームクリアとなる。
【００８５】
図７は、図４に示した場合におけるゲーム装置１０の第１ＬＣＤ１６および第２ＬＣＤ１８に表示されるゲーム画面１００の例を示す。ただし、図７では、３次元仮想空間（複数のオブジェクトが配置される範囲）のうち、着目する範囲（点線で囲む範囲）を分かり易く示すために、第１ＬＣＤ１６の表示面と第２ＬＣＤ１８の表示面とを分割せずに示してある。また、この図７では、３次元仮想空間において、複数のオブジェクトが配置される範囲を右斜め上方から見た場合のゲーム画面１００が表示される。つまり、仮想カメラ２００が、３次元仮想空間のＸＹ平面内で注視点に対して右斜め上方の位置に配置される。
【００８６】
図７に示すように、ゲーム画面１００には、家を模したオブジェクト１０２およびオブジェクト１０４が表示される。また、オブジェクト１０４の手前には、門に相当する２つのオブジェクト１０６が表示される。また、オブジェクト１０４の出窓の一部を構成するオブジェクト１０８が表示される。さらに、左側のオブジェクト１０６とオブジェクト１０８との間には、椅子ないしテーブルのようなオブジェクト１１０およびオブジェクト１１２が表示される。さらにまた、左側のオブジェクト１０６の近傍には、地面の一部を舗装したオブジェクト１１４が表示される。また、オブジェクト１０２とオブジェクト１０４との間には、階段を模したオブジェクト１２０が表示される。
【００８７】
なお、図７では参照番号を付していないが、ゲーム画面１００には、草や木に相当する他のオブジェクトや背景オブジェクトも表示されている。また、簡単のため、図７（後述する図８および図９も同じ）では省略するが、人物や乗り物などの動画オブジェクトが表示される場合もある。
【００８８】
図８には、この実施例の３次元仮想空間において、複数のオブジェクトが配置される範囲を正面ないし略正面から見た場合のゲーム画面１００が第１ＬＣＤ１６および第２ＬＣＤ１８に表示される。つまり、仮想カメラ２００が、３次元仮想空間のＸＹ平面内で注視点に対して真正面の位置ないしその近傍の位置に配置される。図８に示すゲーム画面１００では、オブジェクト１０４の右側に、つまり右側の画面（第２ＬＣＤ１８の画面）に、家を模したオブジェクト１３０が表示される。また、オブジェクト１３０とオブジェクト１０４との間には、木を模したオブジェクト１３２および１３４が表示される。
【００８９】
また、図８に示すゲーム画面１００には（図９も同じ）、図７では省略したカーソルのような指示画像１５０が表示されるとともに、ゲーム画面１００の右側の画面の右下方に、ボタン画像１６０が表示される。
【００９０】
指示画像１５０は、プレイヤの指示に従ってゲーム画面１００上を上下左右および斜め方向に移動される。この実施例では、方向入力ボタン２０ａが操作されると、その入力操作に応じて指示画像１５０がゲーム画面１００上を移動される。
【００９１】
なお、第２ＬＣＤ１８上には、タッチパネル２２が設けられるため、第２ＬＣＤ１８に表示されたゲーム画面１００のうちの右側の画面については、タッチ入力に応じて指示画像１５０を移動させるようにしてもよい。また、第１ＬＣＤ１６上にもタッチパネルを設けるようにすれば、ゲーム画面１００の全体において、タッチ入力により、指示画像１５０を移動させることができる。
【００９２】
ボタン画像１６０は、正解か否かの判定指示を入力するために設けられる。この実施例では、ボタン画像１６０上をタッチすると、当該ボタン画像１６０がオンされ、指示画像１５０で指示する位置において、問題としての文字等と同じ文字等が表されている（表示されている）かどうかが判断される。つまり、正解か否かが判定されるのである。この判定方法については、後で詳細に説明する。
【００９３】
なお、この実施例では、ボタン画像１６０をオンする場合には、当該ボタン画像１６０上をタッチするようにしてあるが、ボタン操作（たとえば、Ａボタン２０ｂをオンする）によって、ボタン画像１６０をオンするようにしてもよい。
【００９４】
ただし、この実施例では、指示画像１５０およびボタン画像１６０は、投影面上に描画される。
【００９５】
図９には、この実施例の３次元仮想空間において、複数のオブジェクトが配置される範囲を正面よりもやや左方向から見た場合のゲーム画面１００が第１ＬＣＤ１６および第２ＬＣＤ１８に表示される。つまり、仮想カメラ２００が、３次元仮想空間のＸＹ平面内で注視点に対して真正面よりもやや左の位置に配置される。図９では、着目する範囲（点線枠で囲んだ範囲）に配置されている複数のオブジェクト１０６，１０８，１１０，１１２，１１４によって、或る文字（ここでは、アルファベットの“Ｅ”の文字）が表されている。つまり、図７および図８に示したように、分散して配置されているオブジェクト１０６−１１４の組み合わせによって、図９に示すようなゲーム画面１００では、或る文字を表現する１つのオブジェクトが表されるのである。さらに言えば、図７−図９に示したように、着目する範囲では、見る角度に応じて、文字等が表されたり、文字等が表されなかったりするのである。
【００９６】
たとえば、図９に示すような状態において、プレイヤが方向入力ボタン２０ａを操作し、指示画像１５０を或る文字（ここでは、“Ｅ”）の上に移動させ、ボタン画像１６０をオンすると、指示画像１５０で指示されるオブジェクト（ここでは、オブジェクト１０６−１１４で構成されたオブジェクト）によって、正解となる文字等が表されているか否かが判断される。図示は省略するが、上述した問題としての複数の文字等は、ゲーム画面１００の上部に半透明で表示されており、それによって、プレイヤは問題の文字等を知ることができ、仮想カメラ２００の位置を変化させながら、問題の文字等と同じ文字等を探すのである。
【００９７】
また、上述したように、プレイヤによって、ボタン画像１６０がオンされ、指示画像１５０によって指示されるオブジェクトによって表される文字等が問題の文字等と同じ（一致する）場合には、正解と判定される。正解した文字等については、たとえば、半透明で表示された問題としての文字等に所定の色や模様が付される。
【００９８】
ここで、図１０−図１３を用いて、仮想ゲームのプレイ中において、仮想カメラ２００（視点）の位置に応じてゲーム画面１００の表示を変化させる方法について説明する。ただし、図１０−図１３では、仮想カメラ２００（視点）のＸＹ平面内におけるＹ軸方向（上下方向）の移動は無いことを前提として説明する。つまり、仮想カメラ２００の上下方向の位置は、注視点と同じ位置に設定されているものとする。
【００９９】
図１０は、３次元仮想空間において、複数のオブジェクト（１０２−１１４，１２０，１３０−１３６など）が配置される範囲２０２をその真上方向から見た場合の図解図である。ただし、図１０では（図１２も同じ）、簡単のため、オブジェクト（１０２−１１４，１２０，１３０−１３６など）は省略してある。たとえば、３次元仮想空間の座標系（ワールド座標系）は、図１０に示すように、紙面において左右方向がＸ軸方向であり、紙面に対して垂直方向がＹ軸方向であり、紙面に対して上下方向がＺ軸方向である。また、右方向がＸ軸のプラス方向であり、垂直上方向がＹ軸のプラス方向であり、上方向がＺ軸のプラス方向である。
【０１００】
また、図１０では分かり難いが、範囲２０２は、たとえば直方体で規定される。この実施例では、範囲２０２のうち、仮想カメラ２００側に最も近いＸＹ平面を前面２０２ａという。たとえば、この前面２０２ａの所定位置（この実施例では、中心）に注視点が固定的に設定される。また、範囲２０２のうち、前面２０２ａと平行であり、仮想カメラ２００から最も離れているＸＹ面を背面２０２ｂという。さらに、範囲２０２のうち、前面２０２ａと背面２０２ｂとを連結し、仮想カメラ２００側から見て左側に見えるＹＺ平面を左側面２０２ｃといい、仮想カメラ２００から見て右側に見えるＹＺ平面を右側面２０２ｄという。図示は省略するが、範囲２０２のうち、前面と背面とを連結し、仮想カメラ２００から見て下側に見えるＸＺ平面を底面といい、仮想カメラ２００から見て上側に見えるＸＺ平面を上面という。このことは、図１２においても同じである。
【０１０１】
図１０に示すように、仮想カメラ２００（視点）が、範囲２０２に対して左右方向の中心であり、注視点を真正面に見る位置に配置されている場合（以下、「真正面位置」ということがある）には、たとえば、ニアークリッピング面は、注視点を含み、前面２０２ａと重なる位置に決定される。ただし、ニアークリッピング面（後述するファークリッピング面も同じ）の大きさは、仮想カメラ２００の視野角によって決定される。また、ファークリッピング面は、背面２０２ｂと重なる位置に決定される。ただし、図１０からも分かるように、仮想カメラ２００とニアークリッピング面との距離よりも、仮想カメラ２００とファークリッピング面との距離の方が大きい。
【０１０２】
また、この実施例では、図１０に示すように、たとえば、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面は、３次元仮想空間において、範囲２０２と接する位置であり、仮想カメラ２００を真正面位置に設定した場合に、ニアークリッピング面と一致する位置に固定的に配置されているものと仮定してある。
【０１０３】
また、図１０に示すように、仮想カメラ２００を真正面位置に配置した場合には、ワールド座標系と、カメラ座標系とは一致する。また、このとき、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面の右方向と、カメラ座標系のＸ軸のプラス方向とが一致するとともに、その表示面の上方向と、カメラ座標系のＹ軸のプラス方向とが一致する。ただし、カメラ座標系は、仮想カメラ２００の左右方向がＸ軸方向であり、仮想カメラ２００の上下方向（紙面の垂直方向）がＹ軸方向であり、仮想カメラ２００の前後方向（紙面の上下方向）がＺ軸方向である。また、仮想カメラ２００の右方向がＸ軸のプラス方向であり、仮想カメラ２００の上方向（紙面に対して垂直上方向）がＹ軸のプラス方向であり、仮想カメラ２００の前方向（紙面の上方向）がＺ軸のプラス方向である。
【０１０４】
かかる場合には、図１１（Ａ）および図１１（Ｂ）からも良く分かるように、ニアークリッピング面と第１ＬＣＤ１６および第２ＬＣＤ１８の表示面とが平行になる。また、図示は省略するが、この実施例では、透視投影変換処理を行う場合の投影面（仮想スクリーン）は、ニアークリッピング面と同じ位置に設定される。
【０１０５】
なお、図１１（Ａ）および図１１（Ｂ）では、撮影画像の大きさと表示面の大きさとを分かり易く示すために、撮影画像の大きさを表示面の大きさよりも大きく記載してあるが、実際には、これらの大きさは同じ或いは略同じである。図１３（Ａ）および図１３（Ｂ）に示す場合についても同じである。
【０１０６】
したがって、かかる場合には、数１に示すような通常のカメラ行列Ａを用いて、仮想カメラ２００から見た３次元仮想空間の３次元座標がカメラ座標に変換され、通常の透視投影変換処理が施されたとしても、第１ＬＣＤ１６および第２ＬＣＤ１８に表示されるゲーム画面１００においては、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面に対して、３次元仮想空間（範囲２０２）が固定的に設けられているように見える。
【０１０７】
[数１]
0005478205.tif 000002
【０１０８】
ただし、（Ｐｘ，Ｐｙ，Ｐｚ）は、３次元仮想空間において仮想カメラ２００が配置される位置の座標である。また、（Ｘｘ，Ｘｙ，Ｘｚ）は、仮想カメラ２００の右方向が向いている３次元仮想空間上の単位ベクトルである。さらに、（Ｙｘ，Ｙｙ，Ｙｚ）は、仮想カメラ２００の上方向が向いている３次元仮想空間上の単位ベクトルである。さらにまた、（Ｚｘ，Ｚｙ，Ｚｚ）は、注視点から仮想カメラ２００に向く３次元仮想空間上の単位ベクトルである。
【０１０９】
しかし、図１２に示すように、３次元仮想空間において、仮想カメラ２００を右方向に移動させた場合には、ニアークリッピング面（投影面）は、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面に対して、斜めになる。かかる場合に、数１に従うカメラ行列Ａを用いるとともに、通常の透視投影変換処理を行うと、第１ＬＣＤ１６および第２ＬＣＤ１８に表示されるゲーム画面１００は、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面に対して、３次元仮想空間（範囲２０２）が固定的に設けられているようには表示されない。つまり、３次元仮想空間（範囲２０２）に対して仮想カメラ２００は斜めに配置されるが、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面には、仮想カメラ２００の正面に見える３次元仮想空間の画像が表示されるだけである。
【０１１０】
したがって、この実施例では、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面に対して、３次元仮想空間（範囲２０２）が固定されているようにゲーム画面１００を表示するために、図１２の右下に示すように、カメラ座標系のＸ軸のプラス方向が表示面の右方向と一致するとともに、カメラ座標系のＹ軸のプラス方向が表示面の上方向と一致するようにしたカメラ行列（説明の便宜上、「カメラ行列Ａ´」という」）が設定される。具体的には、カメラ行列Ａ´は、数２に示される行列Ｂの逆行列である。
【０１１１】
[数２]
0005478205.tif 000003
【０１１２】
ただし、数２において、vRightは、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面の右方向の単位ベクトル（１，０，０）であり、vUpは、その表示面の上方向の単位ベクトル（０，１，０）であり、vDirは、仮想カメラ２００の座標（位置ベクトルvPos）から注視点の座標（０，０，０）を減算したものすなわち仮想カメラ２００についての視線ベクトルである。また、各変数のドットの後ろの文字ｘ，ｙ，ｚは、各ベクトルの成分を意味する。
【０１１３】
したがって、図１２に示すように、仮想カメラ２００を右方向に移動させた場合であっても、カメラ座標系のＸ軸およびＹ軸は固定された状態であり、仮想カメラ２００から見た注視点の方向（Ｚ軸）のみが変化される。かかる場合には、図１３（Ａ）および図１３（Ｂ）に示すように、斜め右方向から仮想カメラ２００で撮影した画像が、３次元仮想空間（範囲２０２）に対して固定的に配置されている第１ＬＣＤ１６および第２ＬＣＤ１８の表示面に表示される。
【０１１４】
なお、図１３（Ｂ）では、撮影範囲の奥行きを分かり易く示すために、撮影範囲を台形で示してあるが、仮想カメラ２００の正面から見た撮影画像は、図１１（Ｂ）に示した場合と同様に、長方形である。
【０１１５】
このように、カメラ行列Ａ´を設定するので、通常の透視投影変換処理を実行した場合であっても、図７−図９に示したように、第１ＬＣＤ１６および第２ＬＣＤ１８の表示面に対して３次元仮想空間（範囲２０２）が固定されているように、ゲーム画面１００が第１ＬＣＤ１６および第２ＬＣＤ１８に表示されるのである。
【０１１６】
図示等は省略するが、上下方向（３次元仮想空間のＹ軸方向）および斜め方向（３次元仮想空間のＸ軸およびＹ軸方向）に仮想カメラ２００が移動される場合も同様である。つまり、仮想カメラ２００の位置によって、カメラ座標のＺ軸が向く方向（ｖＤｉｒ．ｘ，ｖＤｉｒ．ｙ，ｖＤｉｒ．ｚ）が決定し、ゲーム画面１００に反映される。
【０１１７】
次に、図１４−図１６を用いて、プレイヤが指示するオブジェクトが正解であるか否かを判定する方法について説明する。この実施例では、図１４に示すように、問題としての文字等と同じ文字等を構成するオブジェクト３００および３０２は分散して３次元仮想空間に配置される。また、オブジェクト３００および３０２のうち、Ｚ座標が最も小さいオブジェクト（ここでは、３００）に対応して、正解（当り）を判定するためのオブジェクト（当り判定オブジェクト）３５０が設定される。この実施例では、図１４に示すように、オブジェクト３００の背面側に当り判定オブジェクト３５０が配置される。ただし、図１４では（図１５および図１６も同じ）、当り判定オブジェクト３５０を分かり易く示すために、オブジェクト（３００）とは少しずらして示してある。
【０１１８】
また、図１４では（図１５および図１６も同じ）、当り判定オブジェクト３５０を点線を用いて示してあるが、実際には、当り判定オブジェク３５０は、透明のオブジェクトであり、ゲーム画面１００に表示されることはない。また、この実施例では、当り判定オブジェクト３５０は、問題としての文字等と同じ文字等を構成する複数のオブジェクト（３００，３０２）のうち、その位置座標のＺ座標が最も小さいオブジェクト（３００）に対応して設定するようにしてあるが、問題としての文字等と同じ文字等を構成する複数のオブジェクト（３００，３０２）のうちのいずれに対して設定されてもよいし、オブジェクト同士の間に設定されてもよい。すなわち、プレイヤが正解となる位置から見た場合に、文字等を構成する複数のオブジェクト（３００，３０２）と当り判定オブジェクト３５０とが画面上で重なる位置であれば、当り判定オブジェクト３５０が配置（設定）される位置はどこでもよい。また、図面では分かり難いが、この実施例では、当り判定オブジェクト３５０は、問題としての文字等と同じ或いは略同じ形状であり、同じ或いは略同じ大きさに設定される。
【０１１９】
上述したように、この実施例では、プレイヤがオブジェクトに指示画像１５０を合わせてボタン画像１６０をオンしたときに、正解か否かを判定するようにしてある。この実施例では、仮想カメラ２００の位置が所定の位置に設定されている場合に、正解となる文字等がゲーム画面１００に表示される。したがって、この実施例では、仮想カメラ２００の位置と指示画像１５０の位置とを通る直線が当り判定オブジェクト３５０に少なくとも接触する場合に、その直線のベクトル（判定ベクトル）の方向が所定の角度の範囲（制限角度範囲）に収まっているか否かを調べるようにしてある。ただし、判定ベクトルの方向は、仮想カメラ２００から指示画像１５０に向かう方向である。ここで、制限角度範囲は、プレイヤが指示するオブジェクトによって表される文字等が、問題の文字等と一致すると認識され得る判定ベクトルの方向の範囲である。すなわち、正解の形（文字等）を現したオブジェクトが見えている状態において、その位置（オブジェクト）を指示しているときに算出されると想定される判定ベクトルの方向として設定される範囲である。判定ベクトルと当り判定オブジェクトとの接触判定だけでなく、その判定ベクトルの方向が制限角度範囲に含まれるかどうかを判定することで、正解の形を現したオブジェクトが見えているときに、指示された当該オブジェクトだけを正解と判定することができるようになる。
【０１２０】
このように、仮想カメラ２００の位置と指示画像１５０の位置とを通る直線に基づいて正解か否かを判定するのは、プレイヤは指示画像１５０を見ていると考えられるからである。
【０１２１】
また、他の実施例としては、仮想カメラ２００の位置と注視点とを通る直線に基づいて正解を判定するようにしてもよい。この場合は、正解となる場合には、仮想カメラ２００の位置（プレイヤの眼の位置）と注視点とを結ぶ直線の方向に対する範囲として上記の制限角度範囲が設定されることになる。
【０１２２】
さらに、他の実施例としては、指示画像１５０でオブジェクトを指示させたり、ボタン画像１６０をオンさせたりせずに、正解か否かを判定するようにしてもよい。たとえば、仮想カメラ２００の位置と注視点とを結ぶ直線の方向が制限角度範囲内に入っている時間が一定時間（たとえば、５秒）を超えると、正解であると判定するようにしてもよい。かかる場合には、問題としての文字等をプレイヤが認識している（凝視している）と考えられるからである。
【０１２３】
たとえば、図１５に示す場合には、仮想カメラ２００の位置と指示画像１５０の位置とを通る直線は、当り判定オブジェクト３５０と交差しているが、判定ベクトルの方向は、制限角度範囲内に収まっていない。このため、ゲーム画面１００においては、オブジェクト３００およびオブジェクト３０２の組み合わせによって、問題としての文字等が表されていないと判断される。図１５に示す例においては、図示しない実際の画面上では、手前のオブジェクト３００と奥のオブジェクト３０２とが分離して見えるため、正解の形（文字等）が見えている状態ではない。つまり、かかる場合に、ボタン画像１６０がオンされると、不正解と判定される。
【０１２４】
また、図１６に示す場合には、仮想カメラ２００の位置と指示画像１５０の位置とを通る直線は、当り判定オブジェクト３５０と交差しており、しかも、判定ベクトルの方向は、制限角度範囲内に収まっている。このため、ゲーム画面１００においては、オブジェクト３００およびオブジェクト３０２の組み合わせによって、問題としての文字等が表されていると判断される。つまり、かかる場合に、ボタン画像１６０がオンされると、正解と判定される。
【０１２５】
なお、図１５および図１６では、３次元仮想空間の水平方向（ＸＺ平面内）における制限角度範囲についてのみ示したが、垂直方向（ＸＹ平面内）における制限角度範囲が設定される場合もある。または、垂直方向（ＸＹ平面内）における制限角度範囲のみが設定される場合もある。これらは、問題としての文字等が表示される場合の仮想カメラ２００の位置に応じて決定される。
【０１２６】
図１７は図３に示したメインメモリ５２のメモリマップ５２０の一例を示す図解図である。図１７に示すように、メインメモリ５２は、プログラム記憶領域５２２およびデータ記憶領域５２４を含む。プログラム記憶領域５２２には、ゲームプログラムが記憶され、ゲームプログラムは、メイン処理プログラム５２２ａ、画像生成プログラム５２２ｂ、画像描画プログラム５２２ｃ、画像表示プログラム５２２ｄ、眼の位置取得プログラム５２２ｅおよび正解判定プログラム５２２ｆなどによって構成される。
【０１２７】
メイン処理プログラム５２２ａは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム５２２ｂは、後述する画像データを用いて、ゲーム画面（１００）を表示するためのゲーム画像を生成する（モデリングを実行する）ためのプログラムである。画像描画プログラム５２２ｃは、カメラ行列Ａ´を設定するとともに、通常の透視投影変換処理を実行するためのプログラムである。画像表示プログラム５２２ｄは、画像描画プログラム５２２ｂに従って透視投影変換されたゲーム画像をゲーム画面（１００）として第１ＬＣＤ１６および第２ＬＣＤ１８に表示するためのプログラムである。
【０１２８】
眼の位置取得プログラム５２２ｅは、上述したように、内側カメラ３２の撮影画像からプレイヤの顔に相当する肌色の領域を抽出し、抽出した肌色の領域に基づいて眼の位置を特定（取得）するためのプログラムである。正解判定プログラム５２２ｆは、上述したように、ボタン画像１６０がオンされたことに応じて、仮想カメラ２００の位置と指示画像１５０の位置とを通る直線が少なくとも接触する当り判定オブジェクト３５０が有る場合に、その直線についての判定ベクトルの方向が制限角度範囲内であるか否かに応じて、正解かどうかを判定するためのプログラムである。
【０１２９】
なお、図示は省略するが、プログラム記憶領域５２２には、バックアッププログラムや音出力プログラムも記憶される。バックアッププログラムは、ゲームデータ（途中データ，結果データ）をメモリカード２６、メモリカード２８または保存用データメモリ５６に保存するためのプログラムである。音出力プログラムは、音データ（図示せず）を用いて、ゲームに必要な音（音楽）を生成し、スピーカから出力するためのプログラムである。
【０１３０】
また、図１７に示すように、データ記憶領域５２４には、入力データバッファ５２４ａが設けられる。また、データ記憶領域５２４には、画像データ５２４ｂおよび正解判定データ５２４ｃが記憶される。入力データバッファ５２４ａには、操作ボタン２０からの操作データおよびタッチパネル２２からの座標データが時系列に従って記憶(一時記憶）される。画像データ５２４ｂは、上述したゲーム画像を生成するためのポリゴンデータやテクスチャデータなどのデータである。正解判定データ５２４ｃは、問題としての文字等のそれぞれに対して設定される、当り判定オブジェクト３５０の各々についてのデータおよび当該当り判定オブジェクト３５０の各々に対応して設定される制限角度範囲についてのデータである。この実施例では、各当り判定オブジェクト３５０についてのデータは、透明のポリゴンデータによって構成される。また、正解判定データ５２４ｃには、各当り判定オブジェクト３５０を３次元仮想空間に配置する３次元座標も記憶される。
【０１３１】
なお、図示は省略するが、データ記憶領域５２４には、音データのようなゲームに必要なデータが記憶されたり、仮想ゲームの処理の実行に必要な、タイマ（カウンタ）およびフラグなどが設定されたりする。
【０１３２】
図１８は図３に示したＣＰＵ５０の全体処理を示すフロー図である。図１８に示すように、ＣＰＵ５０は全体処理を開始すると、ステップＳ１で、後述する眼の位置取得処理（図１９参照）を実行する。続くステップＳ３では、仮想カメラ２００の位置を設定する。ここでは、ステップＳ１で取得された眼の位置に応じて、仮想カメラ２００の３次元仮想空間内におけるＸＹ平面の位置が決定され、注視点と仮想カメラ２００の位置との距離に応じてＺ軸方向の位置が決定される。ただし、このとき仮想カメラ２００の向きは、注視点の方向に設定される。
【０１３３】
続く、ステップＳ５では、後述する描画処理（図２０参照）を実行する。つまり、プレイヤの眼の位置に応じてゲーム画面１００を表示するためのゲーム画像が生成される。なお、図示は省略するが、仮想ゲームが開始されたときに、ステップＳ１の処理に先立って、３次元仮想空間内の範囲２０２に複数のオブジェクトが配置（モデリング）される。
【０１３４】
次のステップＳ７では、座標入力があるかどうかを判断する。ここでは、ＣＰＵ５０は、タッチパネル２２からの入力（座標データ）が入力データバッファ５２４ａに記憶されているかどうかを判断する。ステップＳ７で“ＹＥＳ”であれば、つまり座標入力が有れば、ステップＳ９で、正解判定の指示かどうかを判断する。つまり、座標データが示す第２ＬＣＤ１８の画面上における座標が、ボタン画像１６０が表示される領域に含まれるかどうかを判断する。これによって、ボタン画像１６０がオンされたかどうかを判断しているのである。
【０１３５】
ステップＳ９で“ＮＯ”であれば、つまり正解判定の指示でなければ、そのままステップＳ１に戻る。一方、ステップＳ９で“ＹＥＳ”であれば、つまり正解判定の指示であれば、ステップＳ１１で、後述する正解判定処理（図２１参照）を実行する。
【０１３６】
そして、ステップＳ１３で、ゲームクリアかどうかを判断する。この実施例では、問題としての文字等のすべてを見つけ出すことができたか否かを判断する。ステップＳ１３で“ＮＯ”であれば、つまりゲームクリアでなければ、そのままステップＳ１に戻る。一方、ステップＳ１３で“ＹＥＳ”であれば、つまりゲームクリアであれば、そのまま全体処理を終了する。
【０１３７】
また、ステップＳ７で“ＮＯ”であれば、つまり座標入力が無ければ、ステップＳ１５で、方向指示があるかどうかを判断する。つまり、入力データバッファ５２４ａに、方向入力ボタン２０ａの操作データが記憶されているかどうかを判断する。ステップＳ１５で“ＮＯ”であれば、つまり方向指示が無ければ、そのままステップＳ１に戻る。一方、ステップＳ１５で“ＹＥＳ”であれば、つまり方向指示があれば、ステップＳ１７で、方向指示に従って、指示画像１５０を移動させて、ステップＳ１に戻る。つまり、ステップＳ１７では、方向入力ボタン２０ａの操作データに従って、指示画像１５０を投影面上で上下左右または斜めに移動させる。
【０１３８】
なお、図１８に示す全体処理のスキャンタイムは、１フレーム（フレームは、画面更新単位時間（１／６０秒）である。）である。
【０１３９】
図１９は図１８に示したステップＳ１の眼の位置取得処理のフロー図である。図１９に示すように、ＣＰＵ５０は、眼の位置取得処理を開始すると、ステップＳ２１で、撮影画像から肌色部分を抽出する。図示は省略するが、仮想ゲームが開始されると、全体処理とは別の処理によって、撮影処理が実行され、たとえば、１フレーム毎の撮影画像が得られる。次のステップＳ２３で、肌色部分と肌色で無い部分とで画像を２値化する。続くステップＳ２５では、塊情報を生成する。つまり、ＣＰＵ５０は、肌色である画素が所定数以上の塊として存在する場合には、その塊ないし範囲を塊情報として生成するのである。
【０１４０】
続いて、ステップＳ２７では、最大の塊を顔として選択する。次のステップＳ２９では、胴体を削除する。つまり、首から下の肌色の部分であって、かつ、幅が急激に広くなっている部分、つまり肩部分と推測される部分が塊情報から除去されるのである。除去されるのは肩部分、つまり広い部分だけであって、顔の下に位置する範囲である。したがって、首部分は除去されない。続くステップＳ３１では、顔に相当する塊の最上位置と最下位置とを取得する。つまり、肌色部分の最上位置は額の最上位置ないし頭頂部に相当し、最下部分は顎の先端に相当する位置であるので、額の最上位置ないし頭頂部と顎の先端位置とが取得される。そして、ステップＳ３３で、眼の位置を特定し、図１８に示した全体処理にリターンする。上述したように、ステップＳ３３では、ＣＰＵ５０は、最上位置と最下位置との距離の８分の１に相当する距離だけ、最上位置から下がった位置を眼の位置として特定する。
【０１４１】
図２０は、図１８に示したステップＳ５の描画処理を示すフロー図である。図２０に示すように、ＣＰＵ５０は、描画処理を開始すると、ステップＳ４１で、数２に示した行列Ｂに基づいてカメラ行列Ａ´を設定する。次にステップＳ４３で、透視投影変換処理を実行して、図１８に示した全体処理にリターンする。
【０１４２】
図２１は、図１８に示したステップＳ１１の正解判定処理を示すフロー図である。図２１に示すように、ＣＰＵ５０は、正解判定処理を開始すると、ステップＳ５１で、指示画像１５０の座標を３次元座標に変換する。ここでは、２次元の投影面に描画されている指示画像１５０のＸＹ座標が３次元仮想空間のＸＹ平面におけるＸＹ座標に変換され、さらに、３次元仮想空間における投影面のＺ座標が追加される。次のステップＳ５３では、仮想カメラ２００の位置と注視点とを通る直線を算出する。
【０１４３】
次に、ステップＳ５５では、ステップＳ５３で算出した直線が接するまたは交差する当り判定オブジェクト３５０が有るかどうかを判断する。ステップＳ５５で“ＮＯ”であれば、つまり直線が接したり交差したりする当り判定オブジェクト３５０が存在しない場合には、そのまま図１８に示した全体処理にリターンする。
【０１４４】
一方、ステップＳ５５で“ＹＥＳ”であれば、つまり直線が接するまたは交差する当り判定オブジェクト３５０が有る場合には、ステップＳ５７で、判定ベクトルの方向が当該当り判定オブジェクト３５０に対応して設定される制限角度範囲内であるかどうかを判断する。ステップＳ５７で“ＮＯ”であれば、つまり判定ベクトルの方向が制限角度範囲外であれば、不正解であると判定して、そのまま全体処理にリターンする。
【０１４５】
ただし、ステップＳ５５またはステップＳ５７で“ＮＯ”である場合には、そのまま全体処理にリターンせずに、不正解である旨をゲーム画面１００の表示または音（音楽）の出力或いはそれらの両方によって表現してから、全体処理にリターンするようにしてもよい。
【０１４６】
また、ステップＳ５７で“ＹＥＳ”であれば、つまり判定ベクトルの方向が制限角度範囲内であれば、正解であると判定して、ステップＳ５９で、正解処理を実行して、全体処理にリターンする。たとえば、ステップＳ５９では、ＣＰＵ５０は、正解である旨をゲーム画面１００の表示または音（音楽）の出力或いはそれらの両方によって表現する。また、正解した問題の文字等については、それ以降では、ゲーム画面１００において半透明表示されている箇所に色や模様が付される。
【０１４７】
この実施例によれば、撮影画像から特定されるプレイヤの眼の位置によって仮想カメラを制御し、ゲーム画面に隠された文字等を見つけるので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。また、この実施例では、仮想カメラを表示面に対して３次元仮想空間が固定されるように制御することにより、２次元の画面表示でありながら、３次元仮想空間を立体的に見ることができる。
【０１４８】
なお、この実施例では、３次元仮想空間内に隠された文字等を仮想カメラの位置を制御することにより見つける仮想ゲームについてのみ説明にしたが、これに限定される必要はない。たとえば、３次元仮想空間内に隠れている任意のキャラクタに照準（指示画像）を合わせて当該キャラクタを銃などの武器で攻撃するような、シューティングゲームにも適用することができる。
【０１４９】
また、この実施例では、撮影画像からプレイヤの眼の位置を特定するようにしたが、これに限定される必要はない。たとえば、眉毛の位置を特定し、その位置に応じて仮想カメラの位置を制御してもよい。または、眉間辺りに所定の色（肌色以外の色）が付されたシールのような目印を貼り付けておき、その目印の位置を撮影画像から特定し、その位置に応じて仮想カメラの位置を制御してもよい。
【０１５０】
さらに、ゲーム装置の構成は実施例のものに限定される必要はない。たとえば、カメラは１つでもよい。また、タッチパネルは無くてもよい。さらに、タッチパネルを２つのＬＣＤ上に設けてもよい。
【符号の説明】
【０１５１】
１０  …ゲーム装置
１２，１４  …ハウジング
１６，１８  …ＬＣＤ
２０  …操作ボタン
２２  …タッチパネル
２４  …タッチペン
２６，２８  …メモリカード
３２，３４  …カメラ
５０  …ＣＰＵ
５２  …メインメモリ
５４  …メモリ制御回路
５６  …保存用データメモリ
５８  …プリセットデータ用メモリ
６０，６２  …メモリカードＩ／Ｆ
６４  …無線通信モジュール
６６  …ローカル通信モジュール
６８  …ＲＴＣ
７０  …電源回路
７２  …Ｉ／Ｆ回路
７４，７６  …ＧＰＵ
７８，８０  …ＶＲＡＭ
８２  …ＬＣＤコントローラ
８４  …マイク
【図１】
0005478205.tif 000004
【図２】
0005478205.tif 000005
【図３】
0005478205.tif 000006
【図４】
0005478205.tif 000007
【図５】
0005478205.tif 000008
【図６】
0005478205.tif 000009
【図７】
0005478205.tif 000010
【図８】
0005478205.tif 000011
【図９】
0005478205.tif 000012
【図１０】
0005478205.tif 000013
【図１１】
0005478205.tif 000014
【図１２】
0005478205.tif 000015
【図１３】
0005478205.tif 000016
【図１４】
0005478205.tif 000017
【図１５】
0005478205.tif 000018
【図１６】
0005478205.tif 000019
【図１７】
0005478205.tif 000020
【図１８】
0005478205.tif 000021
【図１９】
0005478205.tif 000022
【図２０】
0005478205.tif 000023
【図２１】
0005478205.tif 000024