ゲーム装置およびゲームプログラム
【構成】 ゲーム装置10は、CPU50を含み、CP50の指示に従って、第1LCD16および第2LCD18の間に設けられる内側カメラ32でプレイヤの顔画像を撮影する。CPU50は、顔画像からプレイヤの眼の位置を特定し、特定した眼の位置に応じて仮想カメラ(200)の位置を決定する。3次元仮想空間には、注視点が固定的に決定されており、第1LCD16および第2LCD18には、その表示面に対して3次元仮想空間が固定されているように、ゲーム画面(100)が表示される。表示面に対してプレイヤの眼の位置が所定の位置(範囲)に有る場合には、ゲーム画面(100)において、オブジェクト(106−114)の組み合わせなどによって所定の文字等が表される。
【効果】 プレイヤの姿勢に応じてゲームプレイが実行される。
【効果】 プレイヤの姿勢に応じてゲームプレイが実行される。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はゲーム装置およびゲームプログラムに関し、特にたとえば、プレイヤを撮影した画像をゲーム処理に用いる、ゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
この種のゲーム装置の一例が特許文献1に開示されている。この特許文献1の電子遊技機器は、本体に配置された姿勢検出用光電センサ群によって競技者の競技姿勢を検出し、検出した競技姿勢に応じて表示画面の視点を変更する。たとえば、競技者の姿勢が右側に傾くと、表示画像も右に傾くような視点が設定され、競技者が前屈みになると、水平線の位置が画面上で上方へスライドするような視点が設定される。
【特許文献1】特開2004−313778号[A63F 13/00]
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかし、特許文献1に開示された電子遊技機器では、競技者の姿勢に応じて視点を変更させることにより、表示画像を変化させて、臨場感を与えるようにしてあるだけであり、競技者の姿勢の変化によってゲームをプレイするものではない。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲーム装置およびゲームプログラムを提供することである。
【0005】
また、この発明の他の目的は、プレイヤ自身の姿勢をゲームに効果的に利用することができる、ゲーム装置およびゲームプログラムを提供することができる。
【課題を解決するための手段】
【0006】
第1の発明は、表示部と、表示制御部と、位置特定部と、仮想カメラ制御部と、指示部と、ゲーム処理部とを備える、ゲーム装置である。表示部は、画像を表示する。撮像部は、少なくともプレイヤの一部を撮像する。表示制御部は、表示部に仮想空間を表示させる。位置特定部は、撮像部が撮像する所定の画像の位置を特定する。たとえば、撮影画像に含まれる所定の画像についての位置が特定される。仮想カメラ制御部は、位置特定部によって特定された位置に応じて仮想カメラを制御する。指示部は、プレイヤの入力に応じて画面上の位置を指示する。ゲーム処理部は、指示部によって指示された画面上の位置と、仮想カメラの状態とに応じてゲーム処理を行う。
【0007】
第1の発明によれば、プレイヤが指示した画面上の位置と、撮像したプレイヤについての所定の画像の位置に応じて制御された仮想カメラの状態とに応じてゲーム処理を行うので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。
【0008】
第2の発明は、第1の発明に従属し、ゲーム処理部は、指示部によって指示された位置が、仮想空間における所定のオブジェクトの表示位置を示すか否かを判定する判定部を含む。
【0009】
第2の発明によれば、プレイヤの指示する位置が、所定のオブジェクトの表示位置か否かを判定するので、その判定結果をゲーム処理に利用することができる。
【0010】
第3の発明は、第2の発明に従属し、判定部は、指示部によって指示されたときの仮想カメラの向きが所定のオブジェクトに対して設定された所定の範囲内であるか否かをさらに判定する。
【0011】
第3の発明によれば、仮想カメラの向きが所定の範囲内であるか否かを判定するだけなので、判定が容易である。
【0012】
第4の発明は、第3の発明に従属し、仮想空間内に分散して複数のオブジェクトを配置する。判定部によって、指示部によって指示されたときの仮想カメラの向きが所定のオブジェクトに対して設定された所定範囲内であると判定されたとき、複数のオブジェクトの組み合わせによって所定のオブジェクトが表される。たとえば、所定のオブジェクトは、複数のオブジェクトの組み合わせや重ね合わせ(接合または合成(合体)も含む)によって形成される、文字、図形、記号または画像(模様やキャラクタ)等を表現したオブジェクトである。
【0013】
第4の発明によれば、仮想空間内に分散された複数のオブジェクトを所定の向きに設定された仮想カメラで撮影した場合に、その複数のオブジェクトに所定のオブジェクトを表すので、仮想空間内に隠された所定のオブジェクトを見つけ出す面白さを提供することができる。
【0014】
第5の発明は、第1ないし第4の発明のいずれかに従属し、仮想カメラ制御部は、仮想カメラの仮想空間における注視点を固定し、仮想カメラの位置を位置特定部で特定された位置に対応させて設定する。
【0015】
第5の発明によれば、仮想カメラの位置を所定の画像に基づいて設定することができ、その向きは仮想空間に固定された注視点に向ければ良いので、撮影画像に基づいて仮想カメラの位置および方向を設定することができる。
【0016】
第6の発明は、第5の発明に従属し、位置特定部は、撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出する。たとえば、撮影画像から肌色の領域を特定し、さらにプレイヤの顔を特定して眼の位置を算出する。仮想カメラ制御部は、撮像部が撮像した画像内の所定の座標の位置に仮想空間内における所定平面内の座標を対応させて、仮想カメラの位置を設定する。たとえば、プレイヤの眼の位置に応じて仮想カメラの位置が設定される。
【0017】
第6の発明によれば、撮影した画像に基づいて仮想カメラの位置を設定することができる。
【0018】
第7の発明は、第1ないし第6の発明のいずれかに従属し、表示部は、第1の表示部と第2の表示部とからなる。撮像部は、第1の表示部と第2の表示部との間に配置される。したがって、たとえば、ゲーム装置に向かうプレイヤの顔の画像が撮影される。
【0019】
第7の発明では、2つの表示部の間に撮像部を設けるので、表示部を見ながらゲームを行うプレイヤの画像に基づいて仮想カメラを制御することができる。
【0020】
第8の発明は、第1ないし第7の発明のいずれかに従属し、ゲーム装置は、方向入力部をさらに備える。方向入力部は、プレイヤの入力により方向を入力する。指示部は、方向入力部によって入力された方向に指示位置を移動させることで画面上の位置を指示する。
【0021】
第8の発明によれば、方向入力部によって指示位置を移動させるので、画面上の位置を簡単に指示することができる。
【0022】
第9の発明は、第1ないし第7の発明のいずれかに従属し、ゲーム装置は、タッチパネルをさらに備える。タッチパネルは、表示部上に配置される。指示部は、タッチパネルに対する入力に基づいて画面上の位置を指示する。
【0023】
第9の発明によれば、指示位置をタッチするだけなので、画面上の位置を簡単に指示することができる。
【0024】
第10の発明は、画像を表示する表示部と、撮像部とを備えるゲーム装置のコンピュータによって実行されるゲームプログラムであって、コンピュータを、表示部に仮想空間を表示させる表示制御手段と、撮像部が撮像する所定の画像の位置を特定する位置特定手段と、位置特定手段によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御手段と、プレイヤの入力に応じて画面上の位置を指示する指示手段と、指示手段によって指示された画面上の位置と、仮想カメラの状態とに応じてゲーム処理を行うゲーム処理手段として機能させる、ゲームプログラムである。
【0025】
第10の発明においても、第1の発明と同様に、プレイヤ自身の姿勢をゲームに効果的に利用することができる。
【発明の効果】
【0026】
この発明によれば、プレイヤが指示した画面上の位置と、撮像したプレイヤについての所定の画像の位置に応じて制御された仮想カメラの状態とに応じてゲーム処理を行うので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。
【0027】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0028】
【図1】図1はこの発明のゲーム装置の外観構成の一実施例を示す図解図である。
【図2】図2は図1に示すゲーム装置を折り畳んだ状態の上面図および左側面図を示す図解図である。
【図3】図3は図1および図2に示すゲーム装置の電気的な構成を示すブロック図である。
【図4】図4は図1および図2に示すゲーム装置の使用例を示す図解図である。
【図5】図5は図1に示すゲーム装置の内側カメラの画角および撮影範囲を説明するための図解図である。
【図6】図6はこの実施例の仮想ゲームにおいて複数のオブジェクトによって文字等を表示する場合の例を説明するための図解図である。
【図7】図7は図4に示す第1LCDおよび第2LCDに表示されるゲーム画面の一例を示す図解図である。
【図8】図8は図4に示す第1LCDおよび第2LCDに表示されるゲーム画面の他の例を示す図解図である。
【図9】図9は図4に示す第1LCDおよび第2LCDに表示されるゲーム画面のその他の例を示す図解図である。
【図10】図10は図1に示すゲーム装置の表示面と仮想カメラの位置と3次元仮想空間との関係の例を示す図解図である。
【図11】図11は図10に示す場合の撮影画像と表示面との関係を示す図解図である。
【図12】図12は図1に示すゲーム装置の表示面と仮想カメラの位置と3次元仮想空間との関係の他の例を示す図解図である。
【図13】図13は図12に示す場合の撮影画像と表示面との関係を示す図解図である。
【図14】図14は3次元仮想空間に配置されるオブジェクトとその当り判定オブジェクトとの例を示す図解図である。
【図15】図15は仮想カメラの或る位置における正解判定を説明するための説明図である。
【図16】図16は仮想カメラの他の位置における正解判定を説明するための説明図である。
【図17】図17は図3に示すメインメモリのメモリマップの例を示す図解図である。
【図18】図18は図3に示すCPUの全体処理を示すフロー図である。
【図19】図19は図3に示すCPUの眼の位置取得処理を示すフロー図である。
【図20】図20は図3に示すCPUの描画処理を示すフロー図である。
【図21】図21は図3に示すCPUの正解判定処理を示すフロー図である。
【発明を実施するための形態】
【0029】
図1を参照して、この発明の一実施例であるゲーム装置10は、上側ハウジング12および下側ハウジング14を含み、上側ハウジング12と下側ハウジング14とは、開閉可能(折り畳み可能)に連結されている。図1の例では、上側ハウジング12および下側ハウジング14は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回動可能に連結されている。つまり、この実施例のゲーム装置10は、折り畳み型の携帯ゲーム装置であり、図1には、当該ゲーム装置10を開いた状態(開状態)で示してある。ゲーム装置10は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【0030】
通常、ユーザは、開状態でゲーム装置10を使用する。また、ユーザは、ゲーム装置10を使用しない場合には閉状態で保管する。ただし、ゲーム装置10は、上記閉状態および開状態のみでなく、上側ハウジング12と下側ハウジング14とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング12を下側ハウジング14に対して任意の角度で静止させることができる。
【0031】
なお、ゲーム装置10は、後述するカメラ(32,34)を搭載しており、当該カメラ(32,34)によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【0032】
図1に示すように、上側ハウジング12には第1LCD16が設けられ、下側ハウジング14には第2LCD18が設けられる。第1LCD16および第2LCD18は、横長形状であり、それぞれの長辺方向が上側ハウジング12および下側ハウジング14の長辺方向と一致するように配置される。たとえば、第1LCD16および第2LCD18の解像度は、256(横)×192(縦)画素(ドット)に設定される。
【0033】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。また、ゲーム装置10は、任意の解像度の表示装置を利用することができる。
【0034】
図1および図2に示すように、下側ハウジング14には、入力装置として、各操作ボタン20a−20kが設けられる。この各操作ボタン20a−20kのうち、方向入力ボタン20a、操作ボタン20b、操作ボタン20c、操作ボタン20d、操作ボタン20e、電源ボタン20f、スタートボタン20g、およびセレクトボタン20hは、下側ハウジング14の第2LCD18が設けられる側の面(内側の面)に配置される。具体的には、方向入力ボタン20aおよび電源ボタン20fは、第2LCD18の左側に配置され、操作ボタン20b−20e,20gおよび20hは、第2LCD18の右側に配置される。また、上側ハウジング12と下側ハウジング14とを折り畳んだときには、操作ボタン20a−20hはゲーム装置10の内部に収められる。
【0035】
方向入力ボタン(十字キー)20aは、ディジタルジョイスティックとして機能し、プレイヤオブジェクトの移動方向を指示したり、カーソルを移動させたりするなどに用いられる。各操作ボタン20b−20eは、プッシュボタンであり、たとえば、プレイヤオブジェクトに任意の動作をさせたり、決定やキャンセルを実行したりする等に用いられる。電源ボタン20fは、プッシュボタンであり、ゲーム装置10の主電源をオン/オフするために用いられる。スタートボタン20gは、プッシュボタンであり、ゲームを中断(ポーズ)したり、開始(再開)したりするために用いられる。セレクトボタン20hは、プッシュボタンであり、ゲームモードやメニューの選択等に用いられる。
【0036】
図1においては、操作ボタン20i−20kを省略したが、図2(A)に示すように、操作ボタン(Lボタン)20iは、下側ハウジング14の上側面の左端部に設けられ、操作ボタン(Rボタン)20jは、下側ハウジング14の上側面の右端部に設けられる。また、図2(B)に示すように、音量ボタン20kは、下側ハウジング14の左側面に設けられる。
【0037】
なお、図2(A)は、ゲーム装置10を折り畳んだ状態で、上面(上ハウジング12)側から見た図であり、図2(B)は、同じくゲーム装置10を折り畳んだ状態で、左側面から見た図である。
【0038】
Lボタン20iおよびRボタン20jは、プッシュボタンであり、操作ボタン20b−20eと同様の操作に用いたり、それらの操作ボタン20b−20eの補助的な操作に用いたりすることができる。また、この実施例では、Lボタン20iおよびRボタン20jは、撮影指示の操作(シャッター操作)を行うために用いることもできる。音量ボタン20kは、2つのプッシュボタンを用いて構成され、図示しない2つのスピーカ(右スピーカおよび左スピーカ)から出力される音の大きさを調整するために用いられる。この実施例では、音量ボタン20kには、2つの押圧部を含む操作部が設けられ、各押圧部に対応して上記のプッシュボタンが設けられる。したがって、一方の押圧部を押すと音量が大きくされ、他方の押圧部を押すと音量が小さくされる。たとえば、押圧部を押し続けると、音量が次第に大きくされたり、次第に小さくされたりする。
【0039】
図1に戻って、ゲーム装置10は、操作ボタン20a−20kとは別の入力装置として、さらにタッチパネル22を備えている。タッチパネル22は、第2LCD18の画面上を覆うように装着されている。この実施例では、タッチパネル22は、たとえば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル22は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、この実施例では、タッチパネル22として、たとえば第2LCD18の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル22の解像度と第2LCD18の解像度とが一致している必要はない。
【0040】
また、下側ハウジング14の右側面には、挿入口(図1に示す破線)が設けられている。挿入口は、タッチパネル22に対する操作を行うために用いられるタッチペン24を収納することができる。通常、タッチパネル22に対する入力は、タッチペン24を用いて行われるが、タッチペン24に限らずユーザの指でタッチパネル22を操作することも可能である。したがって、たとえば、タッチペン24を用いない場合には、タッチペン24の挿入口および収納部を設ける必要はない。
【0041】
また、下側ハウジング14の右側面には、メモリカード26を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置10とメモリカード26とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード26は、たとえばSDカードであり、コネクタに着脱自在に装着される。このメモリカード26は、たとえば、ゲーム装置10によって撮像された画像を記憶(保存)したり、他の装置で生成(撮像)ないし記憶された画像をゲーム装置10に読み込んだりするために用いられる。
【0042】
さらに、下側ハウジング14の上側面には、メモリカード28を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置10とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、情報処理プログラムおよび必要なデータなどを記録した記録媒体であり、下側ハウジング14に設けられた挿入口に着脱自在に装着される。
【0043】
また、上側ハウジング12と下側ハウジング14との連結部(ヒンジ)の左端部分には、インジケータ30が設けられる。このインジケータ30は、3つのLED30a,30b,30cによって構成される。ここで、ゲーム装置10は、他の機器との間で無線通信を行うことが可能であり、第1LED30aは、無線通信が確立している場合に点灯する。第2LED30bは、ゲーム装置10の充電中に点灯する。第3LED30cは、ゲーム装置10の主電源がオンである場合に点灯する。したがって、インジケータ30(LED30a−30c)によって、ゲーム装置10の通信確立状況、充電状況、および主電源のオン/オフ状況をユーザに通知することができる。
【0044】
上述したように、上側ハウジング12には、第1LCD16が設けられる。この実施例では、第2LCD18を覆うように、タッチパネル22を設けているが、第1LCD16を覆うように、タッチパネル22を設けてもよい。または、第1LCD16および第2LCD18のそれぞれを覆うように、2つのタッチパネル22を設けるようにしてもよい。たとえば、第2LCD18には、各操作ボタン20a−20kやタッチパネル22の役割ないし操作方法をユーザに教えるための操作説明画面やゲーム画面が表示される。
【0045】
また、上側ハウジング12には、2つのカメラ(内側カメラ32および外側カメラ34)が設けられる。図1に示すように、内側カメラ32は、上側ハウジング12と下側ハウジング14との連結部付近であり、第1LCD16が設けられる側の面に、この第1LCD16の表示面とその撮影面とが平行または面一になるように取り付けられる。一方、外側カメラ34は、図2(A)に示すように、内側カメラ32が取り付けられる面とは反対側の面、すなわち、上側ハウジング12の外側の面(ゲーム装置10が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング12の背面)に取り付けられる。ただし、図1においては、外側カメラ34を破線で示してある。
【0046】
したがって、内側カメラ32は、上側ハウジング12の内側の面が向く方向を撮像することが可能であり、外側カメラ34は、内側カメラ32の撮像方向の逆方向、すなわち、上側ハウジング12の外側の面が向く方向を撮像することが可能である。このように、この実施例では、内側カメラ32および外側カメラ34の撮像方向が互いに逆方向となるように、それら2つのカメラ32,34が設けられる。たとえば、ゲーム装置10を把持したユーザは、このゲーム装置10側からユーザの方を見た景色(たとえば、当該ユーザを含む)を内側カメラ32で撮像することができるとともに、ゲーム装置10側からユーザとは反対側の方向を見た景色を外側カメラ34で撮像することができる。
【0047】
なお、上記連結部付近の内側の面には、音声入力装置としてマイク84(図3参照)が収納されている。そして、上記連結部付近の内側の面には、マイク84がゲーム装置10外部の音を検知できるように、そのマイク84用の孔36が形成される。マイク84を収納する位置およびマイク84用の孔36の位置は必ずしも上記連結部である必要はなく、たとえば下側ハウジング14にマイク84を収納し、マイク84の収納位置に対応させて下側ハウジング14にマイク84用の孔36を設けるようにしてもよい。
【0048】
また、上側ハウジング12の外側の面には、外側カメラ34の近傍に第4LED38(図1では、破線で示す)が取り付けられる。第4LED38は、内側カメラ32または外側カメラ34によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、内側カメラ32または外側カメラ34によって動画が撮影される場合には、第4LED38は、撮影の間点灯し続ける。つまり、第4LED38を点灯することによって、ゲーム装置10による撮影が行われた(行われている)ことを撮影対象者や周囲に通知することができる。
【0049】
また、上側ハウジング12には、第1LCD16の両側に、音抜き孔40が形成される。この音抜き孔40に対応する位置であり、上側ハウジング12の内部には、上述したスピーカが収納されている。音抜き孔40は、スピーカからの音をゲーム装置10の外部に放出するための孔である。
【0050】
以上に説明したように、上側ハウジング12には、画像を撮像するための構成である内側カメラ32および外側カメラ34と、主として、撮影された画像(撮影画像)およびゲーム画面を表示するための表示手段である第1LCD16とが設けられる。一方、下側ハウジング14には、ゲーム装置10に対する操作入力を行うための入力装置(操作ボタン20(20a−20k)およびタッチパネル22)と、主として、操作画面およびゲーム画面を表示するための表示手段である第2LCD18とが設けられる。したがって、ゲーム装置10は、2つの画面(16,18)および2系統の操作部(3022)を備えている。
【0051】
図3は、この実施例のゲーム装置10の電気的な構成を示すブロック図である。図3に示すように、ゲーム装置10は、CPU50、メインメモリ52、メモリ制御回路54、保存用データメモリ56、プリセットデータ用メモリ58、メモリカードインターフェース(メモリカードI/F)60、メモリカードI/F62、無線通信モジュール64、ローカル通信モジュール66、リアルタイムクロック(RTC)68、電源回路70、およびインターフェース回路(I/F回路)72、第1GPU(Graphics Processing Unit)74、第2GPU76、第1VRAM(Video RAM)78、第2VRAM80、およびLCDコントローラ82等の電子部品を備えている。これらの電子部品(回路コンポーネント)は、電子回路基板上に実装されて、下側ハウジング14(または上側ハウジング12でもよい)内に収納される。
【0052】
CPU50は、所定のプログラムを実行するための情報処理手段である。この実施例では、所定のプログラムは、ゲーム装置10内のメモリ(たとえば保存用データメモリ56)やメモリカード26および/または28に記憶されており、CPU50は、当該所定のプログラムを実行することによって、後述する情報処理を実行する。
【0053】
なお、CPU50によって実行されるプログラムは、ゲーム装置10内のメモリに予め記憶していてもよいし、メモリカード26および/または28から取得してもよいし、他の機器と通信することによって当該他の機器から取得してもよい。
【0054】
CPU50には、メインメモリ52、メモリ制御回路54、およびプリセットデータ用メモリ58が接続される。また、メモリ制御回路54には、保存用データメモリ56が接続される。メインメモリ52は、CPU50のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ52は、上記情報処理に用いられる各種データを記憶(一時記憶)したり、外部(メモリカード26および28や他の機器等)から取得されるプログラムを記憶したりする。この実施例では、メインメモリ52として、たとえばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ56は、CPU50によって実行されるプログラムや内側カメラ32および外側カメラ34によって撮像された画像のデータ等を記憶(保存)するための記憶手段である。この保存用データメモリ56は、不揮発性の記憶媒体によって構成されており、たとえば、NAND型フラッシュメモリを用いることができる。メモリ制御回路54は、CPU50の指示に従って、保存用データメモリ56に対するデータの読み出しおよび書き込みを制御する。プリセットデータ用メモリ58は、ゲーム装置10において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ58としては、SPI(Serial Peripheral Interface)バスによってCPU50と接続されるフラッシュメモリを用いることができる。
【0055】
メモリカードI/F60および62は、それぞれCPU50に接続される。メモリカードI/F60は、コネクタに装着されたメモリカード26に対するデータの読み出しおよび書き込みを、CPU50の指示に応じて行う。また、メモリカードI/F62は、コネクタに装着されたメモリカード28に対するデータの読み出しおよび書き込みを、CPU50の指示に応じて行う。この実施例では、内側カメラ32および外側カメラ34によって撮像された画像に対応する画像データや他の装置から受信された画像データがメモリカード26に書き込まれたり、メモリカード26に記憶された画像データがメモリカード26から読み出されて保存用データメモリ56に記憶されたり、他の装置へ送信されたりする。また、メモリカード28に記憶された各種プログラムが、CPU50によって読み出されて実行されたりする。
【0056】
なお、ゲームプログラムなどの情報処理プログラムは、メモリカード28等の外部記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置10に供給されてもよい。また、情報処理プログラムは、ゲーム装置10内部の不揮発性記憶装置に予め記録されていてもよい。さらに、情報処理プログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【0057】
無線通信モジュール64は、たとえばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール66は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール64およびローカル通信モジュール66は、CPU50に接続される。CPU50は、無線通信モジュール64を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール66を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0058】
また、CPU50には、RTC68および電源回路70が接続される。RTC68は、時間をカウントしてCPU50に出力する。たとえば、CPU50は、RTC68によって計時された時間に基づいて、日付および現在時刻等を計算することもできる。電源回路70は、ゲーム装置10が有する電源(典型的には電池であり、下側ハウジング14に収納される)から供給される電力を制御し、ゲーム装置10の各回路コンポーネントに電力を供給する。
【0059】
また、ゲーム装置10は、マイク84およびアンプ86を備えている。マイク84およびアンプ86は、それぞれI/F回路72に接続される。マイク84は、ゲーム装置10に向かって発声ないし発生されたユーザの音声ないし音(拍手や手拍子など)を検知して、当該音声ないし音を示す音声信号をI/F回路72に出力する。アンプ86は、I/F回路72から与えられる音声信号を増幅してスピーカ(図示せず)に与える。I/F回路72は、CPU50に接続される。
【0060】
また、タッチパネル22は、I/F回路72に接続される。I/F回路72は、マイク84およびアンプ86(スピーカ)の制御を行う音声制御回路と、タッチパネル22の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル22からの信号に基づいて所定の形式のタッチ位置データを生成してCPU50に出力する。たとえば、タッチ位置データは、タッチパネル22の入力面に対して入力が行われた位置の座標を示すデータである。
【0061】
なお、タッチパネル制御回路は、タッチパネル22からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU50は、I/F回路72を介して、タッチ位置データを取得することにより、タッチパネル22に対して入力が行われた位置を知ることができる。
【0062】
操作ボタン20は、上記の各操作ボタン20a−20kによって構成され、CPU50に接続される。操作ボタン20からCPU50へは、各操作ボタン20a−20kに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU50は、操作ボタン20からの操作データを取得し、取得した操作データに応じた処理を実行する。
【0063】
内側カメラ32および外側カメラ34は、それぞれCPU50に接続される。内側カメラ32および外側カメラ34は、CPU50の指示に応じて画像を撮像し、撮像した画像に対応する画像データをCPU50に出力する。この実施例では、CPU50は、内側カメラ32および外側カメラ34のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラ(32,34)が画像を撮像して画像データをCPU50に送る。
【0064】
第1GPU74には、第1VRAM78が接続され、第2GPU76には、第2VRAM80が接続される。第1GPU74は、CPU50からの指示に応じて、メインメモリ52に記憶されている表示画像を生成するためのデータに基づいて第1の表示画像を生成し、第1VRAM78に描画する。第2GPU76は、同様にCPU50からの指示に応じて第2の表示画像を生成し、第2VRAM80に描画する。第1VRAM78および第2VRAM80は、LCDコントローラ82に接続されている。
【0065】
LCDコントローラ82は、レジスタ82aを含む。レジスタ82aは、CPU50からの指示に応じて、「0」または「1」の値を記憶する。LCDコントローラ82は、レジスタ82aの値が「0」である場合には、第1VRAM78に描画された第1の表示画像を第2LCD18に出力し、第2VRAM80に描画された第2の表示画像を第1LCD16に出力する。また、レジスタ82aの値が「1」である場合には、第1VRAM78に描画された第1の表示画像を第1LCD16に出力し、第2VRAM80に描画された第2の表示画像を第2LCD18に出力する。
【0066】
図4は、この実施例のゲーム処理を実行する場合のゲーム装置10の使用例を示す。図4に示すように、ゲーム装置10は、図1に示した状態から反時計周りに約90°回転した状態で、ユーザないしプレイヤ(以下、単に「プレイヤ」という)によって把持される。したがって、第1LCD16および第2LCD18は横並びに配置される。
【0067】
たとえば、この実施例の仮想ゲームでは、内側カメラ32で撮影したプレイヤの画像(顔画像)からプレイヤの眼を特定し、さらに、ゲーム装置10(第1LCD16および第2LCD18)に対する眼の位置を算出(取得)し、取得した眼の位置に応じて、3次元仮想空間内の視点(仮想カメラ)の位置を制御する。
【0068】
図5(A)に示すように、図4の矢印の方向からゲーム装置10を見た場合に、プレイヤの顔(眼)の位置は、ゲーム装置10の表示面(第1LCD16および第2LCD18の表示面)から一定距離(たとえば、300mm)離れていると仮定してある。また、かかる場合に、内側カメラ32の画角によって、図5(B)に示すように、その撮影範囲の横幅(図5(B)において横方向の長さ)が決定される。図示は省略するが、撮影範囲の縦幅(図5(B)において縦方向の長さ)も同様に決定される。
【0069】
ここで、眼の位置の取得(特定)方法について説明する。まず、内側カメラ32の撮影画像から肌色領域が抽出される。この実施例では、肌色の部分と肌色でない部分とが2値で表される(2値化処理)。ただし、肌色の部分か肌色でない部分かは、1画素毎に判断される。たとえば、肌色の画素については「1」が設定され、肌色でない画素については「0」が設定される。
【0070】
詳細な説明は省略するが、仮想ゲームの本編の開始に先立って、予めプレイヤの顔画像を撮影し、その撮影画像に基づいて、当該プレイヤの肌色の情報(この実施例では、色差(Cr,Cb)の値)を取得している。これは、プレイヤ毎に肌色が異なり、また、同じプレイヤであっても、仮想ゲームをプレイする環境(たとえば、暗い場所と明るい場所)によって肌色が異なるからである。また、肌色と判定される色差の値の範囲は、別途キャリブレーションされている。一例として、Cr(色差成分の赤)については、144をピークとする前後9の範囲(135≦Cr≦144)であり、Cb(色差成分の青)については、119をピークとする前後10の範囲(109≦Cb≦129)である。たとえば、ピークの値は、キャリブレーションの際における最頻値によって決定され、その前後の範囲については、たとえば、ピーク値の1/64の頻度で出現する値までの範囲に決定される。
【0071】
撮影画像から肌色が抽出され、2値化処理が実行されると、肌色についての塊情報が生成される。ここでは、肌色と判断される画素が所定数以上の塊で存在する領域(範囲)についての情報(塊情報)を生成する。次に、すべての塊情報のうち、最も大きい塊(範囲)を示す1の塊情報を選択する。これは、最も大きい塊が顔に相当すると考えられるからである。
【0072】
なお、塊かどうかを判断する際の所定数は、撮影画像の解像度(画素数)に応じて決定される。
【0073】
続いて、選択された塊情報から胴体部分が削除される。つまり、撮影画像の上方から下方に向けてサーチした場合に、選択された塊情報において、急に幅が広くなった部分以下を削除する。つまり、肩に相当する位置以下の肌色の部分が削除される。これによって、顔に相当する部分の肌色の領域のみが残される。
【0074】
そして、顔に相当する部分の肌色の領域の最上位置と最下位置とを取得する。つまり、額の最上位置または頭頂部に相当する位置と、顎の先端部に相当する位置とが取得される。この2つの位置から、眼の位置が特定される。額の最上位置または頭頂部に相当する位置から一定値だけ下の値が眼の位置として設定される。この実施例では、最上位置と最下位置との間の長さの8分の1の長さだけ、最上位置から下がった位置が眼の位置として特定される。これは、実験等により、経験的に得られた値である。このように、撮影画像から眼の高さ方向の位置は決定される。また、この実施例では、眼の横方向の位置は、最上位置と同じ位置に決定される。ただし、眼の横方向の位置は、最上位置と最下位置とに基づいて決定してもよい。たとえば、眼の横方向の位置は、最上位置と最下位置との中点に決定される。
【0075】
撮影画像から眼の位置が特定されると、図5(B)に示すように、内側カメラ32の撮影画像の中心を原点Oとした2次元の撮影範囲における眼の位置の2次元座標(X1,Y1)が決定される。たとえば、内側カメラ32の撮影画像の大きさが仮想カメラ200の移動可能な範囲に対応しており、眼の位置の2次元座標に応じて、3次元仮想空間における仮想カメラ200のXY平面内(図10および図12参照)の位置が決定される。ただし、仮想カメラ200の3次元仮想空間におけるZ座標は、後述する注視点との距離を一定に保つように、当該仮想カメラ200をXY平面内で移動させることにより決定される。ただし、仮想カメラ200と注視点との距離は、現実空間における一定距離(この実施例では、300mm)に相当する長さに設定される。ただし、注視点を含む面(注視点面)と一定距離(たとえば、300mm)に相当する長さを隔てて、この注視点面に平行なXY平面内で仮想カメラ200を移動させるようにしてもよい。かかる場合には、3次元仮想空間内における仮想カメラ200のZ座標は一定値となる。
【0076】
また、3次元仮想空間では、注視点の位置は固定的に決定されており、したがって、仮想カメラ200の位置が変化されることにより、3次元仮想空間を様々な方向から見た画像がゲーム画面として第1LCD16および第2LCD18に表示される。ただし、後述するように、この実施例では、第1LCD16および第2LCD18の表示面に対して、3次元仮想空間(複数のオブジェクトが配置されている範囲)が固定的に設定されているように見えるように、カメラ行列は設定される。
【0077】
また、この実施例の仮想ゲームでは、仮想カメラ200の位置を変化させることにより、ゲーム画面100に表示された複数のオブジェクトや複数のオブジェクトの形状や模様(オブジェクトに付された模様や背景に描画された模様)の組み合わせや重ね合わせ(接合、合成または合成を含む)によって、或る文字(平仮名、片仮名、漢字、ローマ字(アルファベット)、数字(算用数字、アラビア数字)など)、或る図形、或る記号、或る模様(或るキャラクタの画像を含む)など(以下、これらのすべてを含む場合には、「文字等」という)が表される。
【0078】
たとえば、図6(A)に示すように、3つの独立のオブジェクトOBJ1,OBJ2,OBJ3がゲーム画面に表示されている場合に、仮想カメラ200の位置を右方向または左方向に移動させることにより、それらの3つのオブジェクトOBJ1−OBJ3の組み合わせによって、アルファベットの「H」の文字が視覚的に認識されるようになる。つまり、アルファベットの「H」を示すオブジェクトが現れる。ただし、図6(A)では、矢印の左側では、仮想カメラ200がオブジェクトOBJ1−OBJ3の正面に配置されており、また、上述したように、注視点は固定であることを前提とする。以下、図6(B)および図6(C)についても同じ。
【0079】
また、図6(B)に示すように、3つの独立のオブジェクトOBJ4,OBJ5,OBJ6がゲーム画面に表示されている場合に、仮想カメラ200を右方向に移動させ、たとえば、オブジェクトOBJ5およびオブジェクトOBJ6がオブジェクトOBJ4の前面に重なることにより、オブジェクトOBJ4の一部がオブジェクトOBJ5およびオブジェクトOBJ6によって隠される。これによって、アルファベットの「H]の文字が視覚的に認識されるようになる。つまり、アルファベットの「H」を示すオブジェクトが現れる。
【0080】
さらに、図6(C)に示すように、2つの独立のオブジェクトOBJ7およびオブジェクトOBJ8がゲーム画面に表示されている場合に、仮想カメラ200を上方向または下方向に移動させると、オブジェクトOBJ7およびオブジェクトOBJ8のそれぞれに描画された模様が組み合わされ(接合され)され、数字の「5」の文字が視覚的に認識されるようになる。つまり、数字の「5」を示す模様を有するオブジェクトが現れる。
【0081】
図示は省略するが、複数のオブジェクト(背景オブジェクトを含む)のそれぞれに描画された複数の模様を、重ね合わせたり、合成させたりすることにより、文字等が表現されることもある。
【0082】
また、図示は省略するが、図6(A)−(C)を用いて説明した方法が2つ以上用いられることにより、文字等が表現されることもある。
【0083】
なお、図6(A)−(C)では、簡単のため、平面的なオブジェクトOBJ1−OBJ8をそのまま組み合わせたり、重ね合わせたりしただけであるが、実際には、3次元仮想空間を仮想カメラ200で撮影した画像がゲーム画面として表示される。つまり、オブジェクトを左右のいずれかの方向から見るように、仮想カメラ200を設定すると、オブジェクトの幅が狭く見える。また、オブジェクトを上下のいずれかの方向から見るように、仮想カメラ200を設定すると、オブジェクトの長さが短く見える。さらに、立体的なオブジェクトについては、正面から見た場合には、平面のオブジェクトのように見えるが、左右または上下或いは斜めの方向から見るように、仮想カメラ200を設定すると、オブジェクトの厚み(側面)が見える。
【0084】
この仮想ゲームでは、問題として、複数個の或る文字等がプレイヤに提示される。プレイヤは、自身の姿勢や位置、もしくは自身に対するゲーム装置10の向きや位置を変化させることにより、仮想カメラ200の位置を制御する。上述したように、この実施例では、顔画像から特定された眼の位置に仮想カメラ200の位置が制御されるため、プレイヤは、ゲーム装置10(第1LCD16および第2LCD18)に対する顔(頭部)の位置を変化させる。すると、ゲーム画面100が変化される。つまり、仮想カメラ200を制御することによって、3次元仮想空間を見る方向が変化される。このようにして、問題としての所定の文字等を見つける(探す)のである。そして、問題としての所定の文字等をすべて見つけると、ゲームクリアとなる。
【0085】
図7は、図4に示した場合におけるゲーム装置10の第1LCD16および第2LCD18に表示されるゲーム画面100の例を示す。ただし、図7では、3次元仮想空間(複数のオブジェクトが配置される範囲)のうち、着目する範囲(点線で囲む範囲)を分かり易く示すために、第1LCD16の表示面と第2LCD18の表示面とを分割せずに示してある。また、この図7では、3次元仮想空間において、複数のオブジェクトが配置される範囲を右斜め上方から見た場合のゲーム画面100が表示される。つまり、仮想カメラ200が、3次元仮想空間のXY平面内で注視点に対して右斜め上方の位置に配置される。
【0086】
図7に示すように、ゲーム画面100には、家を模したオブジェクト102およびオブジェクト104が表示される。また、オブジェクト104の手前には、門に相当する2つのオブジェクト106が表示される。また、オブジェクト104の出窓の一部を構成するオブジェクト108が表示される。さらに、左側のオブジェクト106とオブジェクト108との間には、椅子ないしテーブルのようなオブジェクト110およびオブジェクト112が表示される。さらにまた、左側のオブジェクト106の近傍には、地面の一部を舗装したオブジェクト114が表示される。また、オブジェクト102とオブジェクト104との間には、階段を模したオブジェクト120が表示される。
【0087】
なお、図7では参照番号を付していないが、ゲーム画面100には、草や木に相当する他のオブジェクトや背景オブジェクトも表示されている。また、簡単のため、図7(後述する図8および図9も同じ)では省略するが、人物や乗り物などの動画オブジェクトが表示される場合もある。
【0088】
図8には、この実施例の3次元仮想空間において、複数のオブジェクトが配置される範囲を正面ないし略正面から見た場合のゲーム画面100が第1LCD16および第2LCD18に表示される。つまり、仮想カメラ200が、3次元仮想空間のXY平面内で注視点に対して真正面の位置ないしその近傍の位置に配置される。図8に示すゲーム画面100では、オブジェクト104の右側に、つまり右側の画面(第2LCD18の画面)に、家を模したオブジェクト130が表示される。また、オブジェクト130とオブジェクト104との間には、木を模したオブジェクト132および134が表示される。
【0089】
また、図8に示すゲーム画面100には(図9も同じ)、図7では省略したカーソルのような指示画像150が表示されるとともに、ゲーム画面100の右側の画面の右下方に、ボタン画像160が表示される。
【0090】
指示画像150は、プレイヤの指示に従ってゲーム画面100上を上下左右および斜め方向に移動される。この実施例では、方向入力ボタン20aが操作されると、その入力操作に応じて指示画像150がゲーム画面100上を移動される。
【0091】
なお、第2LCD18上には、タッチパネル22が設けられるため、第2LCD18に表示されたゲーム画面100のうちの右側の画面については、タッチ入力に応じて指示画像150を移動させるようにしてもよい。また、第1LCD16上にもタッチパネルを設けるようにすれば、ゲーム画面100の全体において、タッチ入力により、指示画像150を移動させることができる。
【0092】
ボタン画像160は、正解か否かの判定指示を入力するために設けられる。この実施例では、ボタン画像160上をタッチすると、当該ボタン画像160がオンされ、指示画像150で指示する位置において、問題としての文字等と同じ文字等が表されている(表示されている)かどうかが判断される。つまり、正解か否かが判定されるのである。この判定方法については、後で詳細に説明する。
【0093】
なお、この実施例では、ボタン画像160をオンする場合には、当該ボタン画像160上をタッチするようにしてあるが、ボタン操作(たとえば、Aボタン20bをオンする)によって、ボタン画像160をオンするようにしてもよい。
【0094】
ただし、この実施例では、指示画像150およびボタン画像160は、投影面上に描画される。
【0095】
図9には、この実施例の3次元仮想空間において、複数のオブジェクトが配置される範囲を正面よりもやや左方向から見た場合のゲーム画面100が第1LCD16および第2LCD18に表示される。つまり、仮想カメラ200が、3次元仮想空間のXY平面内で注視点に対して真正面よりもやや左の位置に配置される。図9では、着目する範囲(点線枠で囲んだ範囲)に配置されている複数のオブジェクト106,108,110,112,114によって、或る文字(ここでは、アルファベットの“E”の文字)が表されている。つまり、図7および図8に示したように、分散して配置されているオブジェクト106−114の組み合わせによって、図9に示すようなゲーム画面100では、或る文字を表現する1つのオブジェクトが表されるのである。さらに言えば、図7−図9に示したように、着目する範囲では、見る角度に応じて、文字等が表されたり、文字等が表されなかったりするのである。
【0096】
たとえば、図9に示すような状態において、プレイヤが方向入力ボタン20aを操作し、指示画像150を或る文字(ここでは、“E”)の上に移動させ、ボタン画像160をオンすると、指示画像150で指示されるオブジェクト(ここでは、オブジェクト106−114で構成されたオブジェクト)によって、正解となる文字等が表されているか否かが判断される。図示は省略するが、上述した問題としての複数の文字等は、ゲーム画面100の上部に半透明で表示されており、それによって、プレイヤは問題の文字等を知ることができ、仮想カメラ200の位置を変化させながら、問題の文字等と同じ文字等を探すのである。
【0097】
また、上述したように、プレイヤによって、ボタン画像160がオンされ、指示画像150によって指示されるオブジェクトによって表される文字等が問題の文字等と同じ(一致する)場合には、正解と判定される。正解した文字等については、たとえば、半透明で表示された問題としての文字等に所定の色や模様が付される。
【0098】
ここで、図10−図13を用いて、仮想ゲームのプレイ中において、仮想カメラ200(視点)の位置に応じてゲーム画面100の表示を変化させる方法について説明する。ただし、図10−図13では、仮想カメラ200(視点)のXY平面内におけるY軸方向(上下方向)の移動は無いことを前提として説明する。つまり、仮想カメラ200の上下方向の位置は、注視点と同じ位置に設定されているものとする。
【0099】
図10は、3次元仮想空間において、複数のオブジェクト(102−114,120,130−136など)が配置される範囲202をその真上方向から見た場合の図解図である。ただし、図10では(図12も同じ)、簡単のため、オブジェクト(102−114,120,130−136など)は省略してある。たとえば、3次元仮想空間の座標系(ワールド座標系)は、図10に示すように、紙面において左右方向がX軸方向であり、紙面に対して垂直方向がY軸方向であり、紙面に対して上下方向がZ軸方向である。また、右方向がX軸のプラス方向であり、垂直上方向がY軸のプラス方向であり、上方向がZ軸のプラス方向である。
【0100】
また、図10では分かり難いが、範囲202は、たとえば直方体で規定される。この実施例では、範囲202のうち、仮想カメラ200側に最も近いXY平面を前面202aという。たとえば、この前面202aの所定位置(この実施例では、中心)に注視点が固定的に設定される。また、範囲202のうち、前面202aと平行であり、仮想カメラ200から最も離れているXY面を背面202bという。さらに、範囲202のうち、前面202aと背面202bとを連結し、仮想カメラ200側から見て左側に見えるYZ平面を左側面202cといい、仮想カメラ200から見て右側に見えるYZ平面を右側面202dという。図示は省略するが、範囲202のうち、前面と背面とを連結し、仮想カメラ200から見て下側に見えるXZ平面を底面といい、仮想カメラ200から見て上側に見えるXZ平面を上面という。このことは、図12においても同じである。
【0101】
図10に示すように、仮想カメラ200(視点)が、範囲202に対して左右方向の中心であり、注視点を真正面に見る位置に配置されている場合(以下、「真正面位置」ということがある)には、たとえば、ニアークリッピング面は、注視点を含み、前面202aと重なる位置に決定される。ただし、ニアークリッピング面(後述するファークリッピング面も同じ)の大きさは、仮想カメラ200の視野角によって決定される。また、ファークリッピング面は、背面202bと重なる位置に決定される。ただし、図10からも分かるように、仮想カメラ200とニアークリッピング面との距離よりも、仮想カメラ200とファークリッピング面との距離の方が大きい。
【0102】
また、この実施例では、図10に示すように、たとえば、第1LCD16および第2LCD18の表示面は、3次元仮想空間において、範囲202と接する位置であり、仮想カメラ200を真正面位置に設定した場合に、ニアークリッピング面と一致する位置に固定的に配置されているものと仮定してある。
【0103】
また、図10に示すように、仮想カメラ200を真正面位置に配置した場合には、ワールド座標系と、カメラ座標系とは一致する。また、このとき、第1LCD16および第2LCD18の表示面の右方向と、カメラ座標系のX軸のプラス方向とが一致するとともに、その表示面の上方向と、カメラ座標系のY軸のプラス方向とが一致する。ただし、カメラ座標系は、仮想カメラ200の左右方向がX軸方向であり、仮想カメラ200の上下方向(紙面の垂直方向)がY軸方向であり、仮想カメラ200の前後方向(紙面の上下方向)がZ軸方向である。また、仮想カメラ200の右方向がX軸のプラス方向であり、仮想カメラ200の上方向(紙面に対して垂直上方向)がY軸のプラス方向であり、仮想カメラ200の前方向(紙面の上方向)がZ軸のプラス方向である。
【0104】
かかる場合には、図11(A)および図11(B)からも良く分かるように、ニアークリッピング面と第1LCD16および第2LCD18の表示面とが平行になる。また、図示は省略するが、この実施例では、透視投影変換処理を行う場合の投影面(仮想スクリーン)は、ニアークリッピング面と同じ位置に設定される。
【0105】
なお、図11(A)および図11(B)では、撮影画像の大きさと表示面の大きさとを分かり易く示すために、撮影画像の大きさを表示面の大きさよりも大きく記載してあるが、実際には、これらの大きさは同じ或いは略同じである。図13(A)および図13(B)に示す場合についても同じである。
【0106】
したがって、かかる場合には、数1に示すような通常のカメラ行列Aを用いて、仮想カメラ200から見た3次元仮想空間の3次元座標がカメラ座標に変換され、通常の透視投影変換処理が施されたとしても、第1LCD16および第2LCD18に表示されるゲーム画面100においては、第1LCD16および第2LCD18の表示面に対して、3次元仮想空間(範囲202)が固定的に設けられているように見える。
【0107】
[数1]
【0108】
ただし、(Px,Py,Pz)は、3次元仮想空間において仮想カメラ200が配置される位置の座標である。また、(Xx,Xy,Xz)は、仮想カメラ200の右方向が向いている3次元仮想空間上の単位ベクトルである。さらに、(Yx,Yy,Yz)は、仮想カメラ200の上方向が向いている3次元仮想空間上の単位ベクトルである。さらにまた、(Zx,Zy,Zz)は、注視点から仮想カメラ200に向く3次元仮想空間上の単位ベクトルである。
【0109】
しかし、図12に示すように、3次元仮想空間において、仮想カメラ200を右方向に移動させた場合には、ニアークリッピング面(投影面)は、第1LCD16および第2LCD18の表示面に対して、斜めになる。かかる場合に、数1に従うカメラ行列Aを用いるとともに、通常の透視投影変換処理を行うと、第1LCD16および第2LCD18に表示されるゲーム画面100は、第1LCD16および第2LCD18の表示面に対して、3次元仮想空間(範囲202)が固定的に設けられているようには表示されない。つまり、3次元仮想空間(範囲202)に対して仮想カメラ200は斜めに配置されるが、第1LCD16および第2LCD18の表示面には、仮想カメラ200の正面に見える3次元仮想空間の画像が表示されるだけである。
【0110】
したがって、この実施例では、第1LCD16および第2LCD18の表示面に対して、3次元仮想空間(範囲202)が固定されているようにゲーム画面100を表示するために、図12の右下に示すように、カメラ座標系のX軸のプラス方向が表示面の右方向と一致するとともに、カメラ座標系のY軸のプラス方向が表示面の上方向と一致するようにしたカメラ行列(説明の便宜上、「カメラ行列A´」という」)が設定される。具体的には、カメラ行列A´は、数2に示される行列Bの逆行列である。
【0111】
[数2]
【0112】
ただし、数2において、vRightは、第1LCD16および第2LCD18の表示面の右方向の単位ベクトル(1,0,0)であり、vUpは、その表示面の上方向の単位ベクトル(0,1,0)であり、vDirは、仮想カメラ200の座標(位置ベクトルvPos)から注視点の座標(0,0,0)を減算したものすなわち仮想カメラ200についての視線ベクトルである。また、各変数のドットの後ろの文字x,y,zは、各ベクトルの成分を意味する。
【0113】
したがって、図12に示すように、仮想カメラ200を右方向に移動させた場合であっても、カメラ座標系のX軸およびY軸は固定された状態であり、仮想カメラ200から見た注視点の方向(Z軸)のみが変化される。かかる場合には、図13(A)および図13(B)に示すように、斜め右方向から仮想カメラ200で撮影した画像が、3次元仮想空間(範囲202)に対して固定的に配置されている第1LCD16および第2LCD18の表示面に表示される。
【0114】
なお、図13(B)では、撮影範囲の奥行きを分かり易く示すために、撮影範囲を台形で示してあるが、仮想カメラ200の正面から見た撮影画像は、図11(B)に示した場合と同様に、長方形である。
【0115】
このように、カメラ行列A´を設定するので、通常の透視投影変換処理を実行した場合であっても、図7−図9に示したように、第1LCD16および第2LCD18の表示面に対して3次元仮想空間(範囲202)が固定されているように、ゲーム画面100が第1LCD16および第2LCD18に表示されるのである。
【0116】
図示等は省略するが、上下方向(3次元仮想空間のY軸方向)および斜め方向(3次元仮想空間のX軸およびY軸方向)に仮想カメラ200が移動される場合も同様である。つまり、仮想カメラ200の位置によって、カメラ座標のZ軸が向く方向(vDir.x,vDir.y,vDir.z)が決定し、ゲーム画面100に反映される。
【0117】
次に、図14−図16を用いて、プレイヤが指示するオブジェクトが正解であるか否かを判定する方法について説明する。この実施例では、図14に示すように、問題としての文字等と同じ文字等を構成するオブジェクト300および302は分散して3次元仮想空間に配置される。また、オブジェクト300および302のうち、Z座標が最も小さいオブジェクト(ここでは、300)に対応して、正解(当り)を判定するためのオブジェクト(当り判定オブジェクト)350が設定される。この実施例では、図14に示すように、オブジェクト300の背面側に当り判定オブジェクト350が配置される。ただし、図14では(図15および図16も同じ)、当り判定オブジェクト350を分かり易く示すために、オブジェクト(300)とは少しずらして示してある。
【0118】
また、図14では(図15および図16も同じ)、当り判定オブジェクト350を点線を用いて示してあるが、実際には、当り判定オブジェク350は、透明のオブジェクトであり、ゲーム画面100に表示されることはない。また、この実施例では、当り判定オブジェクト350は、問題としての文字等と同じ文字等を構成する複数のオブジェクト(300,302)のうち、その位置座標のZ座標が最も小さいオブジェクト(300)に対応して設定するようにしてあるが、問題としての文字等と同じ文字等を構成する複数のオブジェクト(300,302)のうちのいずれに対して設定されてもよいし、オブジェクト同士の間に設定されてもよい。すなわち、プレイヤが正解となる位置から見た場合に、文字等を構成する複数のオブジェクト(300,302)と当り判定オブジェクト350とが画面上で重なる位置であれば、当り判定オブジェクト350が配置(設定)される位置はどこでもよい。また、図面では分かり難いが、この実施例では、当り判定オブジェクト350は、問題としての文字等と同じ或いは略同じ形状であり、同じ或いは略同じ大きさに設定される。
【0119】
上述したように、この実施例では、プレイヤがオブジェクトに指示画像150を合わせてボタン画像160をオンしたときに、正解か否かを判定するようにしてある。この実施例では、仮想カメラ200の位置が所定の位置に設定されている場合に、正解となる文字等がゲーム画面100に表示される。したがって、この実施例では、仮想カメラ200の位置と指示画像150の位置とを通る直線が当り判定オブジェクト350に少なくとも接触する場合に、その直線のベクトル(判定ベクトル)の方向が所定の角度の範囲(制限角度範囲)に収まっているか否かを調べるようにしてある。ただし、判定ベクトルの方向は、仮想カメラ200から指示画像150に向かう方向である。ここで、制限角度範囲は、プレイヤが指示するオブジェクトによって表される文字等が、問題の文字等と一致すると認識され得る判定ベクトルの方向の範囲である。すなわち、正解の形(文字等)を現したオブジェクトが見えている状態において、その位置(オブジェクト)を指示しているときに算出されると想定される判定ベクトルの方向として設定される範囲である。判定ベクトルと当り判定オブジェクトとの接触判定だけでなく、その判定ベクトルの方向が制限角度範囲に含まれるかどうかを判定することで、正解の形を現したオブジェクトが見えているときに、指示された当該オブジェクトだけを正解と判定することができるようになる。
【0120】
このように、仮想カメラ200の位置と指示画像150の位置とを通る直線に基づいて正解か否かを判定するのは、プレイヤは指示画像150を見ていると考えられるからである。
【0121】
また、他の実施例としては、仮想カメラ200の位置と注視点とを通る直線に基づいて正解を判定するようにしてもよい。この場合は、正解となる場合には、仮想カメラ200の位置(プレイヤの眼の位置)と注視点とを結ぶ直線の方向に対する範囲として上記の制限角度範囲が設定されることになる。
【0122】
さらに、他の実施例としては、指示画像150でオブジェクトを指示させたり、ボタン画像160をオンさせたりせずに、正解か否かを判定するようにしてもよい。たとえば、仮想カメラ200の位置と注視点とを結ぶ直線の方向が制限角度範囲内に入っている時間が一定時間(たとえば、5秒)を超えると、正解であると判定するようにしてもよい。かかる場合には、問題としての文字等をプレイヤが認識している(凝視している)と考えられるからである。
【0123】
たとえば、図15に示す場合には、仮想カメラ200の位置と指示画像150の位置とを通る直線は、当り判定オブジェクト350と交差しているが、判定ベクトルの方向は、制限角度範囲内に収まっていない。このため、ゲーム画面100においては、オブジェクト300およびオブジェクト302の組み合わせによって、問題としての文字等が表されていないと判断される。図15に示す例においては、図示しない実際の画面上では、手前のオブジェクト300と奥のオブジェクト302とが分離して見えるため、正解の形(文字等)が見えている状態ではない。つまり、かかる場合に、ボタン画像160がオンされると、不正解と判定される。
【0124】
また、図16に示す場合には、仮想カメラ200の位置と指示画像150の位置とを通る直線は、当り判定オブジェクト350と交差しており、しかも、判定ベクトルの方向は、制限角度範囲内に収まっている。このため、ゲーム画面100においては、オブジェクト300およびオブジェクト302の組み合わせによって、問題としての文字等が表されていると判断される。つまり、かかる場合に、ボタン画像160がオンされると、正解と判定される。
【0125】
なお、図15および図16では、3次元仮想空間の水平方向(XZ平面内)における制限角度範囲についてのみ示したが、垂直方向(XY平面内)における制限角度範囲が設定される場合もある。または、垂直方向(XY平面内)における制限角度範囲のみが設定される場合もある。これらは、問題としての文字等が表示される場合の仮想カメラ200の位置に応じて決定される。
【0126】
図17は図3に示したメインメモリ52のメモリマップ520の一例を示す図解図である。図17に示すように、メインメモリ52は、プログラム記憶領域522およびデータ記憶領域524を含む。プログラム記憶領域522には、ゲームプログラムが記憶され、ゲームプログラムは、メイン処理プログラム522a、画像生成プログラム522b、画像描画プログラム522c、画像表示プログラム522d、眼の位置取得プログラム522eおよび正解判定プログラム522fなどによって構成される。
【0127】
メイン処理プログラム522aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム522bは、後述する画像データを用いて、ゲーム画面(100)を表示するためのゲーム画像を生成する(モデリングを実行する)ためのプログラムである。画像描画プログラム522cは、カメラ行列A´を設定するとともに、通常の透視投影変換処理を実行するためのプログラムである。画像表示プログラム522dは、画像描画プログラム522bに従って透視投影変換されたゲーム画像をゲーム画面(100)として第1LCD16および第2LCD18に表示するためのプログラムである。
【0128】
眼の位置取得プログラム522eは、上述したように、内側カメラ32の撮影画像からプレイヤの顔に相当する肌色の領域を抽出し、抽出した肌色の領域に基づいて眼の位置を特定(取得)するためのプログラムである。正解判定プログラム522fは、上述したように、ボタン画像160がオンされたことに応じて、仮想カメラ200の位置と指示画像150の位置とを通る直線が少なくとも接触する当り判定オブジェクト350が有る場合に、その直線についての判定ベクトルの方向が制限角度範囲内であるか否かに応じて、正解かどうかを判定するためのプログラムである。
【0129】
なお、図示は省略するが、プログラム記憶領域522には、バックアッププログラムや音出力プログラムも記憶される。バックアッププログラムは、ゲームデータ(途中データ,結果データ)をメモリカード26、メモリカード28または保存用データメモリ56に保存するためのプログラムである。音出力プログラムは、音データ(図示せず)を用いて、ゲームに必要な音(音楽)を生成し、スピーカから出力するためのプログラムである。
【0130】
また、図17に示すように、データ記憶領域524には、入力データバッファ524aが設けられる。また、データ記憶領域524には、画像データ524bおよび正解判定データ524cが記憶される。入力データバッファ524aには、操作ボタン20からの操作データおよびタッチパネル22からの座標データが時系列に従って記憶(一時記憶)される。画像データ524bは、上述したゲーム画像を生成するためのポリゴンデータやテクスチャデータなどのデータである。正解判定データ524cは、問題としての文字等のそれぞれに対して設定される、当り判定オブジェクト350の各々についてのデータおよび当該当り判定オブジェクト350の各々に対応して設定される制限角度範囲についてのデータである。この実施例では、各当り判定オブジェクト350についてのデータは、透明のポリゴンデータによって構成される。また、正解判定データ524cには、各当り判定オブジェクト350を3次元仮想空間に配置する3次元座標も記憶される。
【0131】
なお、図示は省略するが、データ記憶領域524には、音データのようなゲームに必要なデータが記憶されたり、仮想ゲームの処理の実行に必要な、タイマ(カウンタ)およびフラグなどが設定されたりする。
【0132】
図18は図3に示したCPU50の全体処理を示すフロー図である。図18に示すように、CPU50は全体処理を開始すると、ステップS1で、後述する眼の位置取得処理(図19参照)を実行する。続くステップS3では、仮想カメラ200の位置を設定する。ここでは、ステップS1で取得された眼の位置に応じて、仮想カメラ200の3次元仮想空間内におけるXY平面の位置が決定され、注視点と仮想カメラ200の位置との距離に応じてZ軸方向の位置が決定される。ただし、このとき仮想カメラ200の向きは、注視点の方向に設定される。
【0133】
続く、ステップS5では、後述する描画処理(図20参照)を実行する。つまり、プレイヤの眼の位置に応じてゲーム画面100を表示するためのゲーム画像が生成される。なお、図示は省略するが、仮想ゲームが開始されたときに、ステップS1の処理に先立って、3次元仮想空間内の範囲202に複数のオブジェクトが配置(モデリング)される。
【0134】
次のステップS7では、座標入力があるかどうかを判断する。ここでは、CPU50は、タッチパネル22からの入力(座標データ)が入力データバッファ524aに記憶されているかどうかを判断する。ステップS7で“YES”であれば、つまり座標入力が有れば、ステップS9で、正解判定の指示かどうかを判断する。つまり、座標データが示す第2LCD18の画面上における座標が、ボタン画像160が表示される領域に含まれるかどうかを判断する。これによって、ボタン画像160がオンされたかどうかを判断しているのである。
【0135】
ステップS9で“NO”であれば、つまり正解判定の指示でなければ、そのままステップS1に戻る。一方、ステップS9で“YES”であれば、つまり正解判定の指示であれば、ステップS11で、後述する正解判定処理(図21参照)を実行する。
【0136】
そして、ステップS13で、ゲームクリアかどうかを判断する。この実施例では、問題としての文字等のすべてを見つけ出すことができたか否かを判断する。ステップS13で“NO”であれば、つまりゲームクリアでなければ、そのままステップS1に戻る。一方、ステップS13で“YES”であれば、つまりゲームクリアであれば、そのまま全体処理を終了する。
【0137】
また、ステップS7で“NO”であれば、つまり座標入力が無ければ、ステップS15で、方向指示があるかどうかを判断する。つまり、入力データバッファ524aに、方向入力ボタン20aの操作データが記憶されているかどうかを判断する。ステップS15で“NO”であれば、つまり方向指示が無ければ、そのままステップS1に戻る。一方、ステップS15で“YES”であれば、つまり方向指示があれば、ステップS17で、方向指示に従って、指示画像150を移動させて、ステップS1に戻る。つまり、ステップS17では、方向入力ボタン20aの操作データに従って、指示画像150を投影面上で上下左右または斜めに移動させる。
【0138】
なお、図18に示す全体処理のスキャンタイムは、1フレーム(フレームは、画面更新単位時間(1/60秒)である。)である。
【0139】
図19は図18に示したステップS1の眼の位置取得処理のフロー図である。図19に示すように、CPU50は、眼の位置取得処理を開始すると、ステップS21で、撮影画像から肌色部分を抽出する。図示は省略するが、仮想ゲームが開始されると、全体処理とは別の処理によって、撮影処理が実行され、たとえば、1フレーム毎の撮影画像が得られる。次のステップS23で、肌色部分と肌色で無い部分とで画像を2値化する。続くステップS25では、塊情報を生成する。つまり、CPU50は、肌色である画素が所定数以上の塊として存在する場合には、その塊ないし範囲を塊情報として生成するのである。
【0140】
続いて、ステップS27では、最大の塊を顔として選択する。次のステップS29では、胴体を削除する。つまり、首から下の肌色の部分であって、かつ、幅が急激に広くなっている部分、つまり肩部分と推測される部分が塊情報から除去されるのである。除去されるのは肩部分、つまり広い部分だけであって、顔の下に位置する範囲である。したがって、首部分は除去されない。続くステップS31では、顔に相当する塊の最上位置と最下位置とを取得する。つまり、肌色部分の最上位置は額の最上位置ないし頭頂部に相当し、最下部分は顎の先端に相当する位置であるので、額の最上位置ないし頭頂部と顎の先端位置とが取得される。そして、ステップS33で、眼の位置を特定し、図18に示した全体処理にリターンする。上述したように、ステップS33では、CPU50は、最上位置と最下位置との距離の8分の1に相当する距離だけ、最上位置から下がった位置を眼の位置として特定する。
【0141】
図20は、図18に示したステップS5の描画処理を示すフロー図である。図20に示すように、CPU50は、描画処理を開始すると、ステップS41で、数2に示した行列Bに基づいてカメラ行列A´を設定する。次にステップS43で、透視投影変換処理を実行して、図18に示した全体処理にリターンする。
【0142】
図21は、図18に示したステップS11の正解判定処理を示すフロー図である。図21に示すように、CPU50は、正解判定処理を開始すると、ステップS51で、指示画像150の座標を3次元座標に変換する。ここでは、2次元の投影面に描画されている指示画像150のXY座標が3次元仮想空間のXY平面におけるXY座標に変換され、さらに、3次元仮想空間における投影面のZ座標が追加される。次のステップS53では、仮想カメラ200の位置と注視点とを通る直線を算出する。
【0143】
次に、ステップS55では、ステップS53で算出した直線が接するまたは交差する当り判定オブジェクト350が有るかどうかを判断する。ステップS55で“NO”であれば、つまり直線が接したり交差したりする当り判定オブジェクト350が存在しない場合には、そのまま図18に示した全体処理にリターンする。
【0144】
一方、ステップS55で“YES”であれば、つまり直線が接するまたは交差する当り判定オブジェクト350が有る場合には、ステップS57で、判定ベクトルの方向が当該当り判定オブジェクト350に対応して設定される制限角度範囲内であるかどうかを判断する。ステップS57で“NO”であれば、つまり判定ベクトルの方向が制限角度範囲外であれば、不正解であると判定して、そのまま全体処理にリターンする。
【0145】
ただし、ステップS55またはステップS57で“NO”である場合には、そのまま全体処理にリターンせずに、不正解である旨をゲーム画面100の表示または音(音楽)の出力或いはそれらの両方によって表現してから、全体処理にリターンするようにしてもよい。
【0146】
また、ステップS57で“YES”であれば、つまり判定ベクトルの方向が制限角度範囲内であれば、正解であると判定して、ステップS59で、正解処理を実行して、全体処理にリターンする。たとえば、ステップS59では、CPU50は、正解である旨をゲーム画面100の表示または音(音楽)の出力或いはそれらの両方によって表現する。また、正解した問題の文字等については、それ以降では、ゲーム画面100において半透明表示されている箇所に色や模様が付される。
【0147】
この実施例によれば、撮影画像から特定されるプレイヤの眼の位置によって仮想カメラを制御し、ゲーム画面に隠された文字等を見つけるので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。また、この実施例では、仮想カメラを表示面に対して3次元仮想空間が固定されるように制御することにより、2次元の画面表示でありながら、3次元仮想空間を立体的に見ることができる。
【0148】
なお、この実施例では、3次元仮想空間内に隠された文字等を仮想カメラの位置を制御することにより見つける仮想ゲームについてのみ説明にしたが、これに限定される必要はない。たとえば、3次元仮想空間内に隠れている任意のキャラクタに照準(指示画像)を合わせて当該キャラクタを銃などの武器で攻撃するような、シューティングゲームにも適用することができる。
【0149】
また、この実施例では、撮影画像からプレイヤの眼の位置を特定するようにしたが、これに限定される必要はない。たとえば、眉毛の位置を特定し、その位置に応じて仮想カメラの位置を制御してもよい。または、眉間辺りに所定の色(肌色以外の色)が付されたシールのような目印を貼り付けておき、その目印の位置を撮影画像から特定し、その位置に応じて仮想カメラの位置を制御してもよい。
【0150】
さらに、ゲーム装置の構成は実施例のものに限定される必要はない。たとえば、カメラは1つでもよい。また、タッチパネルは無くてもよい。さらに、タッチパネルを2つのLCD上に設けてもよい。
【符号の説明】
【0151】
10 …ゲーム装置
12,14 …ハウジング
16,18 …LCD
20 …操作ボタン
22 …タッチパネル
24 …タッチペン
26,28 …メモリカード
32,34 …カメラ
50 …CPU
52 …メインメモリ
54 …メモリ制御回路
56 …保存用データメモリ
58 …プリセットデータ用メモリ
60,62 …メモリカードI/F
64 …無線通信モジュール
66 …ローカル通信モジュール
68 …RTC
70 …電源回路
72 …I/F回路
74,76 …GPU
78,80 …VRAM
82 …LCDコントローラ
84 …マイク
【技術分野】
【0001】
この発明はゲーム装置およびゲームプログラムに関し、特にたとえば、プレイヤを撮影した画像をゲーム処理に用いる、ゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
この種のゲーム装置の一例が特許文献1に開示されている。この特許文献1の電子遊技機器は、本体に配置された姿勢検出用光電センサ群によって競技者の競技姿勢を検出し、検出した競技姿勢に応じて表示画面の視点を変更する。たとえば、競技者の姿勢が右側に傾くと、表示画像も右に傾くような視点が設定され、競技者が前屈みになると、水平線の位置が画面上で上方へスライドするような視点が設定される。
【特許文献1】特開2004−313778号[A63F 13/00]
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかし、特許文献1に開示された電子遊技機器では、競技者の姿勢に応じて視点を変更させることにより、表示画像を変化させて、臨場感を与えるようにしてあるだけであり、競技者の姿勢の変化によってゲームをプレイするものではない。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲーム装置およびゲームプログラムを提供することである。
【0005】
また、この発明の他の目的は、プレイヤ自身の姿勢をゲームに効果的に利用することができる、ゲーム装置およびゲームプログラムを提供することができる。
【課題を解決するための手段】
【0006】
第1の発明は、表示部と、表示制御部と、位置特定部と、仮想カメラ制御部と、指示部と、ゲーム処理部とを備える、ゲーム装置である。表示部は、画像を表示する。撮像部は、少なくともプレイヤの一部を撮像する。表示制御部は、表示部に仮想空間を表示させる。位置特定部は、撮像部が撮像する所定の画像の位置を特定する。たとえば、撮影画像に含まれる所定の画像についての位置が特定される。仮想カメラ制御部は、位置特定部によって特定された位置に応じて仮想カメラを制御する。指示部は、プレイヤの入力に応じて画面上の位置を指示する。ゲーム処理部は、指示部によって指示された画面上の位置と、仮想カメラの状態とに応じてゲーム処理を行う。
【0007】
第1の発明によれば、プレイヤが指示した画面上の位置と、撮像したプレイヤについての所定の画像の位置に応じて制御された仮想カメラの状態とに応じてゲーム処理を行うので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。
【0008】
第2の発明は、第1の発明に従属し、ゲーム処理部は、指示部によって指示された位置が、仮想空間における所定のオブジェクトの表示位置を示すか否かを判定する判定部を含む。
【0009】
第2の発明によれば、プレイヤの指示する位置が、所定のオブジェクトの表示位置か否かを判定するので、その判定結果をゲーム処理に利用することができる。
【0010】
第3の発明は、第2の発明に従属し、判定部は、指示部によって指示されたときの仮想カメラの向きが所定のオブジェクトに対して設定された所定の範囲内であるか否かをさらに判定する。
【0011】
第3の発明によれば、仮想カメラの向きが所定の範囲内であるか否かを判定するだけなので、判定が容易である。
【0012】
第4の発明は、第3の発明に従属し、仮想空間内に分散して複数のオブジェクトを配置する。判定部によって、指示部によって指示されたときの仮想カメラの向きが所定のオブジェクトに対して設定された所定範囲内であると判定されたとき、複数のオブジェクトの組み合わせによって所定のオブジェクトが表される。たとえば、所定のオブジェクトは、複数のオブジェクトの組み合わせや重ね合わせ(接合または合成(合体)も含む)によって形成される、文字、図形、記号または画像(模様やキャラクタ)等を表現したオブジェクトである。
【0013】
第4の発明によれば、仮想空間内に分散された複数のオブジェクトを所定の向きに設定された仮想カメラで撮影した場合に、その複数のオブジェクトに所定のオブジェクトを表すので、仮想空間内に隠された所定のオブジェクトを見つけ出す面白さを提供することができる。
【0014】
第5の発明は、第1ないし第4の発明のいずれかに従属し、仮想カメラ制御部は、仮想カメラの仮想空間における注視点を固定し、仮想カメラの位置を位置特定部で特定された位置に対応させて設定する。
【0015】
第5の発明によれば、仮想カメラの位置を所定の画像に基づいて設定することができ、その向きは仮想空間に固定された注視点に向ければ良いので、撮影画像に基づいて仮想カメラの位置および方向を設定することができる。
【0016】
第6の発明は、第5の発明に従属し、位置特定部は、撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出する。たとえば、撮影画像から肌色の領域を特定し、さらにプレイヤの顔を特定して眼の位置を算出する。仮想カメラ制御部は、撮像部が撮像した画像内の所定の座標の位置に仮想空間内における所定平面内の座標を対応させて、仮想カメラの位置を設定する。たとえば、プレイヤの眼の位置に応じて仮想カメラの位置が設定される。
【0017】
第6の発明によれば、撮影した画像に基づいて仮想カメラの位置を設定することができる。
【0018】
第7の発明は、第1ないし第6の発明のいずれかに従属し、表示部は、第1の表示部と第2の表示部とからなる。撮像部は、第1の表示部と第2の表示部との間に配置される。したがって、たとえば、ゲーム装置に向かうプレイヤの顔の画像が撮影される。
【0019】
第7の発明では、2つの表示部の間に撮像部を設けるので、表示部を見ながらゲームを行うプレイヤの画像に基づいて仮想カメラを制御することができる。
【0020】
第8の発明は、第1ないし第7の発明のいずれかに従属し、ゲーム装置は、方向入力部をさらに備える。方向入力部は、プレイヤの入力により方向を入力する。指示部は、方向入力部によって入力された方向に指示位置を移動させることで画面上の位置を指示する。
【0021】
第8の発明によれば、方向入力部によって指示位置を移動させるので、画面上の位置を簡単に指示することができる。
【0022】
第9の発明は、第1ないし第7の発明のいずれかに従属し、ゲーム装置は、タッチパネルをさらに備える。タッチパネルは、表示部上に配置される。指示部は、タッチパネルに対する入力に基づいて画面上の位置を指示する。
【0023】
第9の発明によれば、指示位置をタッチするだけなので、画面上の位置を簡単に指示することができる。
【0024】
第10の発明は、画像を表示する表示部と、撮像部とを備えるゲーム装置のコンピュータによって実行されるゲームプログラムであって、コンピュータを、表示部に仮想空間を表示させる表示制御手段と、撮像部が撮像する所定の画像の位置を特定する位置特定手段と、位置特定手段によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御手段と、プレイヤの入力に応じて画面上の位置を指示する指示手段と、指示手段によって指示された画面上の位置と、仮想カメラの状態とに応じてゲーム処理を行うゲーム処理手段として機能させる、ゲームプログラムである。
【0025】
第10の発明においても、第1の発明と同様に、プレイヤ自身の姿勢をゲームに効果的に利用することができる。
【発明の効果】
【0026】
この発明によれば、プレイヤが指示した画面上の位置と、撮像したプレイヤについての所定の画像の位置に応じて制御された仮想カメラの状態とに応じてゲーム処理を行うので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。
【0027】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0028】
【図1】図1はこの発明のゲーム装置の外観構成の一実施例を示す図解図である。
【図2】図2は図1に示すゲーム装置を折り畳んだ状態の上面図および左側面図を示す図解図である。
【図3】図3は図1および図2に示すゲーム装置の電気的な構成を示すブロック図である。
【図4】図4は図1および図2に示すゲーム装置の使用例を示す図解図である。
【図5】図5は図1に示すゲーム装置の内側カメラの画角および撮影範囲を説明するための図解図である。
【図6】図6はこの実施例の仮想ゲームにおいて複数のオブジェクトによって文字等を表示する場合の例を説明するための図解図である。
【図7】図7は図4に示す第1LCDおよび第2LCDに表示されるゲーム画面の一例を示す図解図である。
【図8】図8は図4に示す第1LCDおよび第2LCDに表示されるゲーム画面の他の例を示す図解図である。
【図9】図9は図4に示す第1LCDおよび第2LCDに表示されるゲーム画面のその他の例を示す図解図である。
【図10】図10は図1に示すゲーム装置の表示面と仮想カメラの位置と3次元仮想空間との関係の例を示す図解図である。
【図11】図11は図10に示す場合の撮影画像と表示面との関係を示す図解図である。
【図12】図12は図1に示すゲーム装置の表示面と仮想カメラの位置と3次元仮想空間との関係の他の例を示す図解図である。
【図13】図13は図12に示す場合の撮影画像と表示面との関係を示す図解図である。
【図14】図14は3次元仮想空間に配置されるオブジェクトとその当り判定オブジェクトとの例を示す図解図である。
【図15】図15は仮想カメラの或る位置における正解判定を説明するための説明図である。
【図16】図16は仮想カメラの他の位置における正解判定を説明するための説明図である。
【図17】図17は図3に示すメインメモリのメモリマップの例を示す図解図である。
【図18】図18は図3に示すCPUの全体処理を示すフロー図である。
【図19】図19は図3に示すCPUの眼の位置取得処理を示すフロー図である。
【図20】図20は図3に示すCPUの描画処理を示すフロー図である。
【図21】図21は図3に示すCPUの正解判定処理を示すフロー図である。
【発明を実施するための形態】
【0029】
図1を参照して、この発明の一実施例であるゲーム装置10は、上側ハウジング12および下側ハウジング14を含み、上側ハウジング12と下側ハウジング14とは、開閉可能(折り畳み可能)に連結されている。図1の例では、上側ハウジング12および下側ハウジング14は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回動可能に連結されている。つまり、この実施例のゲーム装置10は、折り畳み型の携帯ゲーム装置であり、図1には、当該ゲーム装置10を開いた状態(開状態)で示してある。ゲーム装置10は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【0030】
通常、ユーザは、開状態でゲーム装置10を使用する。また、ユーザは、ゲーム装置10を使用しない場合には閉状態で保管する。ただし、ゲーム装置10は、上記閉状態および開状態のみでなく、上側ハウジング12と下側ハウジング14とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング12を下側ハウジング14に対して任意の角度で静止させることができる。
【0031】
なお、ゲーム装置10は、後述するカメラ(32,34)を搭載しており、当該カメラ(32,34)によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【0032】
図1に示すように、上側ハウジング12には第1LCD16が設けられ、下側ハウジング14には第2LCD18が設けられる。第1LCD16および第2LCD18は、横長形状であり、それぞれの長辺方向が上側ハウジング12および下側ハウジング14の長辺方向と一致するように配置される。たとえば、第1LCD16および第2LCD18の解像度は、256(横)×192(縦)画素(ドット)に設定される。
【0033】
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。また、ゲーム装置10は、任意の解像度の表示装置を利用することができる。
【0034】
図1および図2に示すように、下側ハウジング14には、入力装置として、各操作ボタン20a−20kが設けられる。この各操作ボタン20a−20kのうち、方向入力ボタン20a、操作ボタン20b、操作ボタン20c、操作ボタン20d、操作ボタン20e、電源ボタン20f、スタートボタン20g、およびセレクトボタン20hは、下側ハウジング14の第2LCD18が設けられる側の面(内側の面)に配置される。具体的には、方向入力ボタン20aおよび電源ボタン20fは、第2LCD18の左側に配置され、操作ボタン20b−20e,20gおよび20hは、第2LCD18の右側に配置される。また、上側ハウジング12と下側ハウジング14とを折り畳んだときには、操作ボタン20a−20hはゲーム装置10の内部に収められる。
【0035】
方向入力ボタン(十字キー)20aは、ディジタルジョイスティックとして機能し、プレイヤオブジェクトの移動方向を指示したり、カーソルを移動させたりするなどに用いられる。各操作ボタン20b−20eは、プッシュボタンであり、たとえば、プレイヤオブジェクトに任意の動作をさせたり、決定やキャンセルを実行したりする等に用いられる。電源ボタン20fは、プッシュボタンであり、ゲーム装置10の主電源をオン/オフするために用いられる。スタートボタン20gは、プッシュボタンであり、ゲームを中断(ポーズ)したり、開始(再開)したりするために用いられる。セレクトボタン20hは、プッシュボタンであり、ゲームモードやメニューの選択等に用いられる。
【0036】
図1においては、操作ボタン20i−20kを省略したが、図2(A)に示すように、操作ボタン(Lボタン)20iは、下側ハウジング14の上側面の左端部に設けられ、操作ボタン(Rボタン)20jは、下側ハウジング14の上側面の右端部に設けられる。また、図2(B)に示すように、音量ボタン20kは、下側ハウジング14の左側面に設けられる。
【0037】
なお、図2(A)は、ゲーム装置10を折り畳んだ状態で、上面(上ハウジング12)側から見た図であり、図2(B)は、同じくゲーム装置10を折り畳んだ状態で、左側面から見た図である。
【0038】
Lボタン20iおよびRボタン20jは、プッシュボタンであり、操作ボタン20b−20eと同様の操作に用いたり、それらの操作ボタン20b−20eの補助的な操作に用いたりすることができる。また、この実施例では、Lボタン20iおよびRボタン20jは、撮影指示の操作(シャッター操作)を行うために用いることもできる。音量ボタン20kは、2つのプッシュボタンを用いて構成され、図示しない2つのスピーカ(右スピーカおよび左スピーカ)から出力される音の大きさを調整するために用いられる。この実施例では、音量ボタン20kには、2つの押圧部を含む操作部が設けられ、各押圧部に対応して上記のプッシュボタンが設けられる。したがって、一方の押圧部を押すと音量が大きくされ、他方の押圧部を押すと音量が小さくされる。たとえば、押圧部を押し続けると、音量が次第に大きくされたり、次第に小さくされたりする。
【0039】
図1に戻って、ゲーム装置10は、操作ボタン20a−20kとは別の入力装置として、さらにタッチパネル22を備えている。タッチパネル22は、第2LCD18の画面上を覆うように装着されている。この実施例では、タッチパネル22は、たとえば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル22は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、この実施例では、タッチパネル22として、たとえば第2LCD18の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル22の解像度と第2LCD18の解像度とが一致している必要はない。
【0040】
また、下側ハウジング14の右側面には、挿入口(図1に示す破線)が設けられている。挿入口は、タッチパネル22に対する操作を行うために用いられるタッチペン24を収納することができる。通常、タッチパネル22に対する入力は、タッチペン24を用いて行われるが、タッチペン24に限らずユーザの指でタッチパネル22を操作することも可能である。したがって、たとえば、タッチペン24を用いない場合には、タッチペン24の挿入口および収納部を設ける必要はない。
【0041】
また、下側ハウジング14の右側面には、メモリカード26を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置10とメモリカード26とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード26は、たとえばSDカードであり、コネクタに着脱自在に装着される。このメモリカード26は、たとえば、ゲーム装置10によって撮像された画像を記憶(保存)したり、他の装置で生成(撮像)ないし記憶された画像をゲーム装置10に読み込んだりするために用いられる。
【0042】
さらに、下側ハウジング14の上側面には、メモリカード28を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置10とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、情報処理プログラムおよび必要なデータなどを記録した記録媒体であり、下側ハウジング14に設けられた挿入口に着脱自在に装着される。
【0043】
また、上側ハウジング12と下側ハウジング14との連結部(ヒンジ)の左端部分には、インジケータ30が設けられる。このインジケータ30は、3つのLED30a,30b,30cによって構成される。ここで、ゲーム装置10は、他の機器との間で無線通信を行うことが可能であり、第1LED30aは、無線通信が確立している場合に点灯する。第2LED30bは、ゲーム装置10の充電中に点灯する。第3LED30cは、ゲーム装置10の主電源がオンである場合に点灯する。したがって、インジケータ30(LED30a−30c)によって、ゲーム装置10の通信確立状況、充電状況、および主電源のオン/オフ状況をユーザに通知することができる。
【0044】
上述したように、上側ハウジング12には、第1LCD16が設けられる。この実施例では、第2LCD18を覆うように、タッチパネル22を設けているが、第1LCD16を覆うように、タッチパネル22を設けてもよい。または、第1LCD16および第2LCD18のそれぞれを覆うように、2つのタッチパネル22を設けるようにしてもよい。たとえば、第2LCD18には、各操作ボタン20a−20kやタッチパネル22の役割ないし操作方法をユーザに教えるための操作説明画面やゲーム画面が表示される。
【0045】
また、上側ハウジング12には、2つのカメラ(内側カメラ32および外側カメラ34)が設けられる。図1に示すように、内側カメラ32は、上側ハウジング12と下側ハウジング14との連結部付近であり、第1LCD16が設けられる側の面に、この第1LCD16の表示面とその撮影面とが平行または面一になるように取り付けられる。一方、外側カメラ34は、図2(A)に示すように、内側カメラ32が取り付けられる面とは反対側の面、すなわち、上側ハウジング12の外側の面(ゲーム装置10が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング12の背面)に取り付けられる。ただし、図1においては、外側カメラ34を破線で示してある。
【0046】
したがって、内側カメラ32は、上側ハウジング12の内側の面が向く方向を撮像することが可能であり、外側カメラ34は、内側カメラ32の撮像方向の逆方向、すなわち、上側ハウジング12の外側の面が向く方向を撮像することが可能である。このように、この実施例では、内側カメラ32および外側カメラ34の撮像方向が互いに逆方向となるように、それら2つのカメラ32,34が設けられる。たとえば、ゲーム装置10を把持したユーザは、このゲーム装置10側からユーザの方を見た景色(たとえば、当該ユーザを含む)を内側カメラ32で撮像することができるとともに、ゲーム装置10側からユーザとは反対側の方向を見た景色を外側カメラ34で撮像することができる。
【0047】
なお、上記連結部付近の内側の面には、音声入力装置としてマイク84(図3参照)が収納されている。そして、上記連結部付近の内側の面には、マイク84がゲーム装置10外部の音を検知できるように、そのマイク84用の孔36が形成される。マイク84を収納する位置およびマイク84用の孔36の位置は必ずしも上記連結部である必要はなく、たとえば下側ハウジング14にマイク84を収納し、マイク84の収納位置に対応させて下側ハウジング14にマイク84用の孔36を設けるようにしてもよい。
【0048】
また、上側ハウジング12の外側の面には、外側カメラ34の近傍に第4LED38(図1では、破線で示す)が取り付けられる。第4LED38は、内側カメラ32または外側カメラ34によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、内側カメラ32または外側カメラ34によって動画が撮影される場合には、第4LED38は、撮影の間点灯し続ける。つまり、第4LED38を点灯することによって、ゲーム装置10による撮影が行われた(行われている)ことを撮影対象者や周囲に通知することができる。
【0049】
また、上側ハウジング12には、第1LCD16の両側に、音抜き孔40が形成される。この音抜き孔40に対応する位置であり、上側ハウジング12の内部には、上述したスピーカが収納されている。音抜き孔40は、スピーカからの音をゲーム装置10の外部に放出するための孔である。
【0050】
以上に説明したように、上側ハウジング12には、画像を撮像するための構成である内側カメラ32および外側カメラ34と、主として、撮影された画像(撮影画像)およびゲーム画面を表示するための表示手段である第1LCD16とが設けられる。一方、下側ハウジング14には、ゲーム装置10に対する操作入力を行うための入力装置(操作ボタン20(20a−20k)およびタッチパネル22)と、主として、操作画面およびゲーム画面を表示するための表示手段である第2LCD18とが設けられる。したがって、ゲーム装置10は、2つの画面(16,18)および2系統の操作部(3022)を備えている。
【0051】
図3は、この実施例のゲーム装置10の電気的な構成を示すブロック図である。図3に示すように、ゲーム装置10は、CPU50、メインメモリ52、メモリ制御回路54、保存用データメモリ56、プリセットデータ用メモリ58、メモリカードインターフェース(メモリカードI/F)60、メモリカードI/F62、無線通信モジュール64、ローカル通信モジュール66、リアルタイムクロック(RTC)68、電源回路70、およびインターフェース回路(I/F回路)72、第1GPU(Graphics Processing Unit)74、第2GPU76、第1VRAM(Video RAM)78、第2VRAM80、およびLCDコントローラ82等の電子部品を備えている。これらの電子部品(回路コンポーネント)は、電子回路基板上に実装されて、下側ハウジング14(または上側ハウジング12でもよい)内に収納される。
【0052】
CPU50は、所定のプログラムを実行するための情報処理手段である。この実施例では、所定のプログラムは、ゲーム装置10内のメモリ(たとえば保存用データメモリ56)やメモリカード26および/または28に記憶されており、CPU50は、当該所定のプログラムを実行することによって、後述する情報処理を実行する。
【0053】
なお、CPU50によって実行されるプログラムは、ゲーム装置10内のメモリに予め記憶していてもよいし、メモリカード26および/または28から取得してもよいし、他の機器と通信することによって当該他の機器から取得してもよい。
【0054】
CPU50には、メインメモリ52、メモリ制御回路54、およびプリセットデータ用メモリ58が接続される。また、メモリ制御回路54には、保存用データメモリ56が接続される。メインメモリ52は、CPU50のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ52は、上記情報処理に用いられる各種データを記憶(一時記憶)したり、外部(メモリカード26および28や他の機器等)から取得されるプログラムを記憶したりする。この実施例では、メインメモリ52として、たとえばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ56は、CPU50によって実行されるプログラムや内側カメラ32および外側カメラ34によって撮像された画像のデータ等を記憶(保存)するための記憶手段である。この保存用データメモリ56は、不揮発性の記憶媒体によって構成されており、たとえば、NAND型フラッシュメモリを用いることができる。メモリ制御回路54は、CPU50の指示に従って、保存用データメモリ56に対するデータの読み出しおよび書き込みを制御する。プリセットデータ用メモリ58は、ゲーム装置10において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ58としては、SPI(Serial Peripheral Interface)バスによってCPU50と接続されるフラッシュメモリを用いることができる。
【0055】
メモリカードI/F60および62は、それぞれCPU50に接続される。メモリカードI/F60は、コネクタに装着されたメモリカード26に対するデータの読み出しおよび書き込みを、CPU50の指示に応じて行う。また、メモリカードI/F62は、コネクタに装着されたメモリカード28に対するデータの読み出しおよび書き込みを、CPU50の指示に応じて行う。この実施例では、内側カメラ32および外側カメラ34によって撮像された画像に対応する画像データや他の装置から受信された画像データがメモリカード26に書き込まれたり、メモリカード26に記憶された画像データがメモリカード26から読み出されて保存用データメモリ56に記憶されたり、他の装置へ送信されたりする。また、メモリカード28に記憶された各種プログラムが、CPU50によって読み出されて実行されたりする。
【0056】
なお、ゲームプログラムなどの情報処理プログラムは、メモリカード28等の外部記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置10に供給されてもよい。また、情報処理プログラムは、ゲーム装置10内部の不揮発性記憶装置に予め記録されていてもよい。さらに、情報処理プログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【0057】
無線通信モジュール64は、たとえばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール66は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール64およびローカル通信モジュール66は、CPU50に接続される。CPU50は、無線通信モジュール64を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール66を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0058】
また、CPU50には、RTC68および電源回路70が接続される。RTC68は、時間をカウントしてCPU50に出力する。たとえば、CPU50は、RTC68によって計時された時間に基づいて、日付および現在時刻等を計算することもできる。電源回路70は、ゲーム装置10が有する電源(典型的には電池であり、下側ハウジング14に収納される)から供給される電力を制御し、ゲーム装置10の各回路コンポーネントに電力を供給する。
【0059】
また、ゲーム装置10は、マイク84およびアンプ86を備えている。マイク84およびアンプ86は、それぞれI/F回路72に接続される。マイク84は、ゲーム装置10に向かって発声ないし発生されたユーザの音声ないし音(拍手や手拍子など)を検知して、当該音声ないし音を示す音声信号をI/F回路72に出力する。アンプ86は、I/F回路72から与えられる音声信号を増幅してスピーカ(図示せず)に与える。I/F回路72は、CPU50に接続される。
【0060】
また、タッチパネル22は、I/F回路72に接続される。I/F回路72は、マイク84およびアンプ86(スピーカ)の制御を行う音声制御回路と、タッチパネル22の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル22からの信号に基づいて所定の形式のタッチ位置データを生成してCPU50に出力する。たとえば、タッチ位置データは、タッチパネル22の入力面に対して入力が行われた位置の座標を示すデータである。
【0061】
なお、タッチパネル制御回路は、タッチパネル22からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU50は、I/F回路72を介して、タッチ位置データを取得することにより、タッチパネル22に対して入力が行われた位置を知ることができる。
【0062】
操作ボタン20は、上記の各操作ボタン20a−20kによって構成され、CPU50に接続される。操作ボタン20からCPU50へは、各操作ボタン20a−20kに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU50は、操作ボタン20からの操作データを取得し、取得した操作データに応じた処理を実行する。
【0063】
内側カメラ32および外側カメラ34は、それぞれCPU50に接続される。内側カメラ32および外側カメラ34は、CPU50の指示に応じて画像を撮像し、撮像した画像に対応する画像データをCPU50に出力する。この実施例では、CPU50は、内側カメラ32および外側カメラ34のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラ(32,34)が画像を撮像して画像データをCPU50に送る。
【0064】
第1GPU74には、第1VRAM78が接続され、第2GPU76には、第2VRAM80が接続される。第1GPU74は、CPU50からの指示に応じて、メインメモリ52に記憶されている表示画像を生成するためのデータに基づいて第1の表示画像を生成し、第1VRAM78に描画する。第2GPU76は、同様にCPU50からの指示に応じて第2の表示画像を生成し、第2VRAM80に描画する。第1VRAM78および第2VRAM80は、LCDコントローラ82に接続されている。
【0065】
LCDコントローラ82は、レジスタ82aを含む。レジスタ82aは、CPU50からの指示に応じて、「0」または「1」の値を記憶する。LCDコントローラ82は、レジスタ82aの値が「0」である場合には、第1VRAM78に描画された第1の表示画像を第2LCD18に出力し、第2VRAM80に描画された第2の表示画像を第1LCD16に出力する。また、レジスタ82aの値が「1」である場合には、第1VRAM78に描画された第1の表示画像を第1LCD16に出力し、第2VRAM80に描画された第2の表示画像を第2LCD18に出力する。
【0066】
図4は、この実施例のゲーム処理を実行する場合のゲーム装置10の使用例を示す。図4に示すように、ゲーム装置10は、図1に示した状態から反時計周りに約90°回転した状態で、ユーザないしプレイヤ(以下、単に「プレイヤ」という)によって把持される。したがって、第1LCD16および第2LCD18は横並びに配置される。
【0067】
たとえば、この実施例の仮想ゲームでは、内側カメラ32で撮影したプレイヤの画像(顔画像)からプレイヤの眼を特定し、さらに、ゲーム装置10(第1LCD16および第2LCD18)に対する眼の位置を算出(取得)し、取得した眼の位置に応じて、3次元仮想空間内の視点(仮想カメラ)の位置を制御する。
【0068】
図5(A)に示すように、図4の矢印の方向からゲーム装置10を見た場合に、プレイヤの顔(眼)の位置は、ゲーム装置10の表示面(第1LCD16および第2LCD18の表示面)から一定距離(たとえば、300mm)離れていると仮定してある。また、かかる場合に、内側カメラ32の画角によって、図5(B)に示すように、その撮影範囲の横幅(図5(B)において横方向の長さ)が決定される。図示は省略するが、撮影範囲の縦幅(図5(B)において縦方向の長さ)も同様に決定される。
【0069】
ここで、眼の位置の取得(特定)方法について説明する。まず、内側カメラ32の撮影画像から肌色領域が抽出される。この実施例では、肌色の部分と肌色でない部分とが2値で表される(2値化処理)。ただし、肌色の部分か肌色でない部分かは、1画素毎に判断される。たとえば、肌色の画素については「1」が設定され、肌色でない画素については「0」が設定される。
【0070】
詳細な説明は省略するが、仮想ゲームの本編の開始に先立って、予めプレイヤの顔画像を撮影し、その撮影画像に基づいて、当該プレイヤの肌色の情報(この実施例では、色差(Cr,Cb)の値)を取得している。これは、プレイヤ毎に肌色が異なり、また、同じプレイヤであっても、仮想ゲームをプレイする環境(たとえば、暗い場所と明るい場所)によって肌色が異なるからである。また、肌色と判定される色差の値の範囲は、別途キャリブレーションされている。一例として、Cr(色差成分の赤)については、144をピークとする前後9の範囲(135≦Cr≦144)であり、Cb(色差成分の青)については、119をピークとする前後10の範囲(109≦Cb≦129)である。たとえば、ピークの値は、キャリブレーションの際における最頻値によって決定され、その前後の範囲については、たとえば、ピーク値の1/64の頻度で出現する値までの範囲に決定される。
【0071】
撮影画像から肌色が抽出され、2値化処理が実行されると、肌色についての塊情報が生成される。ここでは、肌色と判断される画素が所定数以上の塊で存在する領域(範囲)についての情報(塊情報)を生成する。次に、すべての塊情報のうち、最も大きい塊(範囲)を示す1の塊情報を選択する。これは、最も大きい塊が顔に相当すると考えられるからである。
【0072】
なお、塊かどうかを判断する際の所定数は、撮影画像の解像度(画素数)に応じて決定される。
【0073】
続いて、選択された塊情報から胴体部分が削除される。つまり、撮影画像の上方から下方に向けてサーチした場合に、選択された塊情報において、急に幅が広くなった部分以下を削除する。つまり、肩に相当する位置以下の肌色の部分が削除される。これによって、顔に相当する部分の肌色の領域のみが残される。
【0074】
そして、顔に相当する部分の肌色の領域の最上位置と最下位置とを取得する。つまり、額の最上位置または頭頂部に相当する位置と、顎の先端部に相当する位置とが取得される。この2つの位置から、眼の位置が特定される。額の最上位置または頭頂部に相当する位置から一定値だけ下の値が眼の位置として設定される。この実施例では、最上位置と最下位置との間の長さの8分の1の長さだけ、最上位置から下がった位置が眼の位置として特定される。これは、実験等により、経験的に得られた値である。このように、撮影画像から眼の高さ方向の位置は決定される。また、この実施例では、眼の横方向の位置は、最上位置と同じ位置に決定される。ただし、眼の横方向の位置は、最上位置と最下位置とに基づいて決定してもよい。たとえば、眼の横方向の位置は、最上位置と最下位置との中点に決定される。
【0075】
撮影画像から眼の位置が特定されると、図5(B)に示すように、内側カメラ32の撮影画像の中心を原点Oとした2次元の撮影範囲における眼の位置の2次元座標(X1,Y1)が決定される。たとえば、内側カメラ32の撮影画像の大きさが仮想カメラ200の移動可能な範囲に対応しており、眼の位置の2次元座標に応じて、3次元仮想空間における仮想カメラ200のXY平面内(図10および図12参照)の位置が決定される。ただし、仮想カメラ200の3次元仮想空間におけるZ座標は、後述する注視点との距離を一定に保つように、当該仮想カメラ200をXY平面内で移動させることにより決定される。ただし、仮想カメラ200と注視点との距離は、現実空間における一定距離(この実施例では、300mm)に相当する長さに設定される。ただし、注視点を含む面(注視点面)と一定距離(たとえば、300mm)に相当する長さを隔てて、この注視点面に平行なXY平面内で仮想カメラ200を移動させるようにしてもよい。かかる場合には、3次元仮想空間内における仮想カメラ200のZ座標は一定値となる。
【0076】
また、3次元仮想空間では、注視点の位置は固定的に決定されており、したがって、仮想カメラ200の位置が変化されることにより、3次元仮想空間を様々な方向から見た画像がゲーム画面として第1LCD16および第2LCD18に表示される。ただし、後述するように、この実施例では、第1LCD16および第2LCD18の表示面に対して、3次元仮想空間(複数のオブジェクトが配置されている範囲)が固定的に設定されているように見えるように、カメラ行列は設定される。
【0077】
また、この実施例の仮想ゲームでは、仮想カメラ200の位置を変化させることにより、ゲーム画面100に表示された複数のオブジェクトや複数のオブジェクトの形状や模様(オブジェクトに付された模様や背景に描画された模様)の組み合わせや重ね合わせ(接合、合成または合成を含む)によって、或る文字(平仮名、片仮名、漢字、ローマ字(アルファベット)、数字(算用数字、アラビア数字)など)、或る図形、或る記号、或る模様(或るキャラクタの画像を含む)など(以下、これらのすべてを含む場合には、「文字等」という)が表される。
【0078】
たとえば、図6(A)に示すように、3つの独立のオブジェクトOBJ1,OBJ2,OBJ3がゲーム画面に表示されている場合に、仮想カメラ200の位置を右方向または左方向に移動させることにより、それらの3つのオブジェクトOBJ1−OBJ3の組み合わせによって、アルファベットの「H」の文字が視覚的に認識されるようになる。つまり、アルファベットの「H」を示すオブジェクトが現れる。ただし、図6(A)では、矢印の左側では、仮想カメラ200がオブジェクトOBJ1−OBJ3の正面に配置されており、また、上述したように、注視点は固定であることを前提とする。以下、図6(B)および図6(C)についても同じ。
【0079】
また、図6(B)に示すように、3つの独立のオブジェクトOBJ4,OBJ5,OBJ6がゲーム画面に表示されている場合に、仮想カメラ200を右方向に移動させ、たとえば、オブジェクトOBJ5およびオブジェクトOBJ6がオブジェクトOBJ4の前面に重なることにより、オブジェクトOBJ4の一部がオブジェクトOBJ5およびオブジェクトOBJ6によって隠される。これによって、アルファベットの「H]の文字が視覚的に認識されるようになる。つまり、アルファベットの「H」を示すオブジェクトが現れる。
【0080】
さらに、図6(C)に示すように、2つの独立のオブジェクトOBJ7およびオブジェクトOBJ8がゲーム画面に表示されている場合に、仮想カメラ200を上方向または下方向に移動させると、オブジェクトOBJ7およびオブジェクトOBJ8のそれぞれに描画された模様が組み合わされ(接合され)され、数字の「5」の文字が視覚的に認識されるようになる。つまり、数字の「5」を示す模様を有するオブジェクトが現れる。
【0081】
図示は省略するが、複数のオブジェクト(背景オブジェクトを含む)のそれぞれに描画された複数の模様を、重ね合わせたり、合成させたりすることにより、文字等が表現されることもある。
【0082】
また、図示は省略するが、図6(A)−(C)を用いて説明した方法が2つ以上用いられることにより、文字等が表現されることもある。
【0083】
なお、図6(A)−(C)では、簡単のため、平面的なオブジェクトOBJ1−OBJ8をそのまま組み合わせたり、重ね合わせたりしただけであるが、実際には、3次元仮想空間を仮想カメラ200で撮影した画像がゲーム画面として表示される。つまり、オブジェクトを左右のいずれかの方向から見るように、仮想カメラ200を設定すると、オブジェクトの幅が狭く見える。また、オブジェクトを上下のいずれかの方向から見るように、仮想カメラ200を設定すると、オブジェクトの長さが短く見える。さらに、立体的なオブジェクトについては、正面から見た場合には、平面のオブジェクトのように見えるが、左右または上下或いは斜めの方向から見るように、仮想カメラ200を設定すると、オブジェクトの厚み(側面)が見える。
【0084】
この仮想ゲームでは、問題として、複数個の或る文字等がプレイヤに提示される。プレイヤは、自身の姿勢や位置、もしくは自身に対するゲーム装置10の向きや位置を変化させることにより、仮想カメラ200の位置を制御する。上述したように、この実施例では、顔画像から特定された眼の位置に仮想カメラ200の位置が制御されるため、プレイヤは、ゲーム装置10(第1LCD16および第2LCD18)に対する顔(頭部)の位置を変化させる。すると、ゲーム画面100が変化される。つまり、仮想カメラ200を制御することによって、3次元仮想空間を見る方向が変化される。このようにして、問題としての所定の文字等を見つける(探す)のである。そして、問題としての所定の文字等をすべて見つけると、ゲームクリアとなる。
【0085】
図7は、図4に示した場合におけるゲーム装置10の第1LCD16および第2LCD18に表示されるゲーム画面100の例を示す。ただし、図7では、3次元仮想空間(複数のオブジェクトが配置される範囲)のうち、着目する範囲(点線で囲む範囲)を分かり易く示すために、第1LCD16の表示面と第2LCD18の表示面とを分割せずに示してある。また、この図7では、3次元仮想空間において、複数のオブジェクトが配置される範囲を右斜め上方から見た場合のゲーム画面100が表示される。つまり、仮想カメラ200が、3次元仮想空間のXY平面内で注視点に対して右斜め上方の位置に配置される。
【0086】
図7に示すように、ゲーム画面100には、家を模したオブジェクト102およびオブジェクト104が表示される。また、オブジェクト104の手前には、門に相当する2つのオブジェクト106が表示される。また、オブジェクト104の出窓の一部を構成するオブジェクト108が表示される。さらに、左側のオブジェクト106とオブジェクト108との間には、椅子ないしテーブルのようなオブジェクト110およびオブジェクト112が表示される。さらにまた、左側のオブジェクト106の近傍には、地面の一部を舗装したオブジェクト114が表示される。また、オブジェクト102とオブジェクト104との間には、階段を模したオブジェクト120が表示される。
【0087】
なお、図7では参照番号を付していないが、ゲーム画面100には、草や木に相当する他のオブジェクトや背景オブジェクトも表示されている。また、簡単のため、図7(後述する図8および図9も同じ)では省略するが、人物や乗り物などの動画オブジェクトが表示される場合もある。
【0088】
図8には、この実施例の3次元仮想空間において、複数のオブジェクトが配置される範囲を正面ないし略正面から見た場合のゲーム画面100が第1LCD16および第2LCD18に表示される。つまり、仮想カメラ200が、3次元仮想空間のXY平面内で注視点に対して真正面の位置ないしその近傍の位置に配置される。図8に示すゲーム画面100では、オブジェクト104の右側に、つまり右側の画面(第2LCD18の画面)に、家を模したオブジェクト130が表示される。また、オブジェクト130とオブジェクト104との間には、木を模したオブジェクト132および134が表示される。
【0089】
また、図8に示すゲーム画面100には(図9も同じ)、図7では省略したカーソルのような指示画像150が表示されるとともに、ゲーム画面100の右側の画面の右下方に、ボタン画像160が表示される。
【0090】
指示画像150は、プレイヤの指示に従ってゲーム画面100上を上下左右および斜め方向に移動される。この実施例では、方向入力ボタン20aが操作されると、その入力操作に応じて指示画像150がゲーム画面100上を移動される。
【0091】
なお、第2LCD18上には、タッチパネル22が設けられるため、第2LCD18に表示されたゲーム画面100のうちの右側の画面については、タッチ入力に応じて指示画像150を移動させるようにしてもよい。また、第1LCD16上にもタッチパネルを設けるようにすれば、ゲーム画面100の全体において、タッチ入力により、指示画像150を移動させることができる。
【0092】
ボタン画像160は、正解か否かの判定指示を入力するために設けられる。この実施例では、ボタン画像160上をタッチすると、当該ボタン画像160がオンされ、指示画像150で指示する位置において、問題としての文字等と同じ文字等が表されている(表示されている)かどうかが判断される。つまり、正解か否かが判定されるのである。この判定方法については、後で詳細に説明する。
【0093】
なお、この実施例では、ボタン画像160をオンする場合には、当該ボタン画像160上をタッチするようにしてあるが、ボタン操作(たとえば、Aボタン20bをオンする)によって、ボタン画像160をオンするようにしてもよい。
【0094】
ただし、この実施例では、指示画像150およびボタン画像160は、投影面上に描画される。
【0095】
図9には、この実施例の3次元仮想空間において、複数のオブジェクトが配置される範囲を正面よりもやや左方向から見た場合のゲーム画面100が第1LCD16および第2LCD18に表示される。つまり、仮想カメラ200が、3次元仮想空間のXY平面内で注視点に対して真正面よりもやや左の位置に配置される。図9では、着目する範囲(点線枠で囲んだ範囲)に配置されている複数のオブジェクト106,108,110,112,114によって、或る文字(ここでは、アルファベットの“E”の文字)が表されている。つまり、図7および図8に示したように、分散して配置されているオブジェクト106−114の組み合わせによって、図9に示すようなゲーム画面100では、或る文字を表現する1つのオブジェクトが表されるのである。さらに言えば、図7−図9に示したように、着目する範囲では、見る角度に応じて、文字等が表されたり、文字等が表されなかったりするのである。
【0096】
たとえば、図9に示すような状態において、プレイヤが方向入力ボタン20aを操作し、指示画像150を或る文字(ここでは、“E”)の上に移動させ、ボタン画像160をオンすると、指示画像150で指示されるオブジェクト(ここでは、オブジェクト106−114で構成されたオブジェクト)によって、正解となる文字等が表されているか否かが判断される。図示は省略するが、上述した問題としての複数の文字等は、ゲーム画面100の上部に半透明で表示されており、それによって、プレイヤは問題の文字等を知ることができ、仮想カメラ200の位置を変化させながら、問題の文字等と同じ文字等を探すのである。
【0097】
また、上述したように、プレイヤによって、ボタン画像160がオンされ、指示画像150によって指示されるオブジェクトによって表される文字等が問題の文字等と同じ(一致する)場合には、正解と判定される。正解した文字等については、たとえば、半透明で表示された問題としての文字等に所定の色や模様が付される。
【0098】
ここで、図10−図13を用いて、仮想ゲームのプレイ中において、仮想カメラ200(視点)の位置に応じてゲーム画面100の表示を変化させる方法について説明する。ただし、図10−図13では、仮想カメラ200(視点)のXY平面内におけるY軸方向(上下方向)の移動は無いことを前提として説明する。つまり、仮想カメラ200の上下方向の位置は、注視点と同じ位置に設定されているものとする。
【0099】
図10は、3次元仮想空間において、複数のオブジェクト(102−114,120,130−136など)が配置される範囲202をその真上方向から見た場合の図解図である。ただし、図10では(図12も同じ)、簡単のため、オブジェクト(102−114,120,130−136など)は省略してある。たとえば、3次元仮想空間の座標系(ワールド座標系)は、図10に示すように、紙面において左右方向がX軸方向であり、紙面に対して垂直方向がY軸方向であり、紙面に対して上下方向がZ軸方向である。また、右方向がX軸のプラス方向であり、垂直上方向がY軸のプラス方向であり、上方向がZ軸のプラス方向である。
【0100】
また、図10では分かり難いが、範囲202は、たとえば直方体で規定される。この実施例では、範囲202のうち、仮想カメラ200側に最も近いXY平面を前面202aという。たとえば、この前面202aの所定位置(この実施例では、中心)に注視点が固定的に設定される。また、範囲202のうち、前面202aと平行であり、仮想カメラ200から最も離れているXY面を背面202bという。さらに、範囲202のうち、前面202aと背面202bとを連結し、仮想カメラ200側から見て左側に見えるYZ平面を左側面202cといい、仮想カメラ200から見て右側に見えるYZ平面を右側面202dという。図示は省略するが、範囲202のうち、前面と背面とを連結し、仮想カメラ200から見て下側に見えるXZ平面を底面といい、仮想カメラ200から見て上側に見えるXZ平面を上面という。このことは、図12においても同じである。
【0101】
図10に示すように、仮想カメラ200(視点)が、範囲202に対して左右方向の中心であり、注視点を真正面に見る位置に配置されている場合(以下、「真正面位置」ということがある)には、たとえば、ニアークリッピング面は、注視点を含み、前面202aと重なる位置に決定される。ただし、ニアークリッピング面(後述するファークリッピング面も同じ)の大きさは、仮想カメラ200の視野角によって決定される。また、ファークリッピング面は、背面202bと重なる位置に決定される。ただし、図10からも分かるように、仮想カメラ200とニアークリッピング面との距離よりも、仮想カメラ200とファークリッピング面との距離の方が大きい。
【0102】
また、この実施例では、図10に示すように、たとえば、第1LCD16および第2LCD18の表示面は、3次元仮想空間において、範囲202と接する位置であり、仮想カメラ200を真正面位置に設定した場合に、ニアークリッピング面と一致する位置に固定的に配置されているものと仮定してある。
【0103】
また、図10に示すように、仮想カメラ200を真正面位置に配置した場合には、ワールド座標系と、カメラ座標系とは一致する。また、このとき、第1LCD16および第2LCD18の表示面の右方向と、カメラ座標系のX軸のプラス方向とが一致するとともに、その表示面の上方向と、カメラ座標系のY軸のプラス方向とが一致する。ただし、カメラ座標系は、仮想カメラ200の左右方向がX軸方向であり、仮想カメラ200の上下方向(紙面の垂直方向)がY軸方向であり、仮想カメラ200の前後方向(紙面の上下方向)がZ軸方向である。また、仮想カメラ200の右方向がX軸のプラス方向であり、仮想カメラ200の上方向(紙面に対して垂直上方向)がY軸のプラス方向であり、仮想カメラ200の前方向(紙面の上方向)がZ軸のプラス方向である。
【0104】
かかる場合には、図11(A)および図11(B)からも良く分かるように、ニアークリッピング面と第1LCD16および第2LCD18の表示面とが平行になる。また、図示は省略するが、この実施例では、透視投影変換処理を行う場合の投影面(仮想スクリーン)は、ニアークリッピング面と同じ位置に設定される。
【0105】
なお、図11(A)および図11(B)では、撮影画像の大きさと表示面の大きさとを分かり易く示すために、撮影画像の大きさを表示面の大きさよりも大きく記載してあるが、実際には、これらの大きさは同じ或いは略同じである。図13(A)および図13(B)に示す場合についても同じである。
【0106】
したがって、かかる場合には、数1に示すような通常のカメラ行列Aを用いて、仮想カメラ200から見た3次元仮想空間の3次元座標がカメラ座標に変換され、通常の透視投影変換処理が施されたとしても、第1LCD16および第2LCD18に表示されるゲーム画面100においては、第1LCD16および第2LCD18の表示面に対して、3次元仮想空間(範囲202)が固定的に設けられているように見える。
【0107】
[数1]
【0108】
ただし、(Px,Py,Pz)は、3次元仮想空間において仮想カメラ200が配置される位置の座標である。また、(Xx,Xy,Xz)は、仮想カメラ200の右方向が向いている3次元仮想空間上の単位ベクトルである。さらに、(Yx,Yy,Yz)は、仮想カメラ200の上方向が向いている3次元仮想空間上の単位ベクトルである。さらにまた、(Zx,Zy,Zz)は、注視点から仮想カメラ200に向く3次元仮想空間上の単位ベクトルである。
【0109】
しかし、図12に示すように、3次元仮想空間において、仮想カメラ200を右方向に移動させた場合には、ニアークリッピング面(投影面)は、第1LCD16および第2LCD18の表示面に対して、斜めになる。かかる場合に、数1に従うカメラ行列Aを用いるとともに、通常の透視投影変換処理を行うと、第1LCD16および第2LCD18に表示されるゲーム画面100は、第1LCD16および第2LCD18の表示面に対して、3次元仮想空間(範囲202)が固定的に設けられているようには表示されない。つまり、3次元仮想空間(範囲202)に対して仮想カメラ200は斜めに配置されるが、第1LCD16および第2LCD18の表示面には、仮想カメラ200の正面に見える3次元仮想空間の画像が表示されるだけである。
【0110】
したがって、この実施例では、第1LCD16および第2LCD18の表示面に対して、3次元仮想空間(範囲202)が固定されているようにゲーム画面100を表示するために、図12の右下に示すように、カメラ座標系のX軸のプラス方向が表示面の右方向と一致するとともに、カメラ座標系のY軸のプラス方向が表示面の上方向と一致するようにしたカメラ行列(説明の便宜上、「カメラ行列A´」という」)が設定される。具体的には、カメラ行列A´は、数2に示される行列Bの逆行列である。
【0111】
[数2]
【0112】
ただし、数2において、vRightは、第1LCD16および第2LCD18の表示面の右方向の単位ベクトル(1,0,0)であり、vUpは、その表示面の上方向の単位ベクトル(0,1,0)であり、vDirは、仮想カメラ200の座標(位置ベクトルvPos)から注視点の座標(0,0,0)を減算したものすなわち仮想カメラ200についての視線ベクトルである。また、各変数のドットの後ろの文字x,y,zは、各ベクトルの成分を意味する。
【0113】
したがって、図12に示すように、仮想カメラ200を右方向に移動させた場合であっても、カメラ座標系のX軸およびY軸は固定された状態であり、仮想カメラ200から見た注視点の方向(Z軸)のみが変化される。かかる場合には、図13(A)および図13(B)に示すように、斜め右方向から仮想カメラ200で撮影した画像が、3次元仮想空間(範囲202)に対して固定的に配置されている第1LCD16および第2LCD18の表示面に表示される。
【0114】
なお、図13(B)では、撮影範囲の奥行きを分かり易く示すために、撮影範囲を台形で示してあるが、仮想カメラ200の正面から見た撮影画像は、図11(B)に示した場合と同様に、長方形である。
【0115】
このように、カメラ行列A´を設定するので、通常の透視投影変換処理を実行した場合であっても、図7−図9に示したように、第1LCD16および第2LCD18の表示面に対して3次元仮想空間(範囲202)が固定されているように、ゲーム画面100が第1LCD16および第2LCD18に表示されるのである。
【0116】
図示等は省略するが、上下方向(3次元仮想空間のY軸方向)および斜め方向(3次元仮想空間のX軸およびY軸方向)に仮想カメラ200が移動される場合も同様である。つまり、仮想カメラ200の位置によって、カメラ座標のZ軸が向く方向(vDir.x,vDir.y,vDir.z)が決定し、ゲーム画面100に反映される。
【0117】
次に、図14−図16を用いて、プレイヤが指示するオブジェクトが正解であるか否かを判定する方法について説明する。この実施例では、図14に示すように、問題としての文字等と同じ文字等を構成するオブジェクト300および302は分散して3次元仮想空間に配置される。また、オブジェクト300および302のうち、Z座標が最も小さいオブジェクト(ここでは、300)に対応して、正解(当り)を判定するためのオブジェクト(当り判定オブジェクト)350が設定される。この実施例では、図14に示すように、オブジェクト300の背面側に当り判定オブジェクト350が配置される。ただし、図14では(図15および図16も同じ)、当り判定オブジェクト350を分かり易く示すために、オブジェクト(300)とは少しずらして示してある。
【0118】
また、図14では(図15および図16も同じ)、当り判定オブジェクト350を点線を用いて示してあるが、実際には、当り判定オブジェク350は、透明のオブジェクトであり、ゲーム画面100に表示されることはない。また、この実施例では、当り判定オブジェクト350は、問題としての文字等と同じ文字等を構成する複数のオブジェクト(300,302)のうち、その位置座標のZ座標が最も小さいオブジェクト(300)に対応して設定するようにしてあるが、問題としての文字等と同じ文字等を構成する複数のオブジェクト(300,302)のうちのいずれに対して設定されてもよいし、オブジェクト同士の間に設定されてもよい。すなわち、プレイヤが正解となる位置から見た場合に、文字等を構成する複数のオブジェクト(300,302)と当り判定オブジェクト350とが画面上で重なる位置であれば、当り判定オブジェクト350が配置(設定)される位置はどこでもよい。また、図面では分かり難いが、この実施例では、当り判定オブジェクト350は、問題としての文字等と同じ或いは略同じ形状であり、同じ或いは略同じ大きさに設定される。
【0119】
上述したように、この実施例では、プレイヤがオブジェクトに指示画像150を合わせてボタン画像160をオンしたときに、正解か否かを判定するようにしてある。この実施例では、仮想カメラ200の位置が所定の位置に設定されている場合に、正解となる文字等がゲーム画面100に表示される。したがって、この実施例では、仮想カメラ200の位置と指示画像150の位置とを通る直線が当り判定オブジェクト350に少なくとも接触する場合に、その直線のベクトル(判定ベクトル)の方向が所定の角度の範囲(制限角度範囲)に収まっているか否かを調べるようにしてある。ただし、判定ベクトルの方向は、仮想カメラ200から指示画像150に向かう方向である。ここで、制限角度範囲は、プレイヤが指示するオブジェクトによって表される文字等が、問題の文字等と一致すると認識され得る判定ベクトルの方向の範囲である。すなわち、正解の形(文字等)を現したオブジェクトが見えている状態において、その位置(オブジェクト)を指示しているときに算出されると想定される判定ベクトルの方向として設定される範囲である。判定ベクトルと当り判定オブジェクトとの接触判定だけでなく、その判定ベクトルの方向が制限角度範囲に含まれるかどうかを判定することで、正解の形を現したオブジェクトが見えているときに、指示された当該オブジェクトだけを正解と判定することができるようになる。
【0120】
このように、仮想カメラ200の位置と指示画像150の位置とを通る直線に基づいて正解か否かを判定するのは、プレイヤは指示画像150を見ていると考えられるからである。
【0121】
また、他の実施例としては、仮想カメラ200の位置と注視点とを通る直線に基づいて正解を判定するようにしてもよい。この場合は、正解となる場合には、仮想カメラ200の位置(プレイヤの眼の位置)と注視点とを結ぶ直線の方向に対する範囲として上記の制限角度範囲が設定されることになる。
【0122】
さらに、他の実施例としては、指示画像150でオブジェクトを指示させたり、ボタン画像160をオンさせたりせずに、正解か否かを判定するようにしてもよい。たとえば、仮想カメラ200の位置と注視点とを結ぶ直線の方向が制限角度範囲内に入っている時間が一定時間(たとえば、5秒)を超えると、正解であると判定するようにしてもよい。かかる場合には、問題としての文字等をプレイヤが認識している(凝視している)と考えられるからである。
【0123】
たとえば、図15に示す場合には、仮想カメラ200の位置と指示画像150の位置とを通る直線は、当り判定オブジェクト350と交差しているが、判定ベクトルの方向は、制限角度範囲内に収まっていない。このため、ゲーム画面100においては、オブジェクト300およびオブジェクト302の組み合わせによって、問題としての文字等が表されていないと判断される。図15に示す例においては、図示しない実際の画面上では、手前のオブジェクト300と奥のオブジェクト302とが分離して見えるため、正解の形(文字等)が見えている状態ではない。つまり、かかる場合に、ボタン画像160がオンされると、不正解と判定される。
【0124】
また、図16に示す場合には、仮想カメラ200の位置と指示画像150の位置とを通る直線は、当り判定オブジェクト350と交差しており、しかも、判定ベクトルの方向は、制限角度範囲内に収まっている。このため、ゲーム画面100においては、オブジェクト300およびオブジェクト302の組み合わせによって、問題としての文字等が表されていると判断される。つまり、かかる場合に、ボタン画像160がオンされると、正解と判定される。
【0125】
なお、図15および図16では、3次元仮想空間の水平方向(XZ平面内)における制限角度範囲についてのみ示したが、垂直方向(XY平面内)における制限角度範囲が設定される場合もある。または、垂直方向(XY平面内)における制限角度範囲のみが設定される場合もある。これらは、問題としての文字等が表示される場合の仮想カメラ200の位置に応じて決定される。
【0126】
図17は図3に示したメインメモリ52のメモリマップ520の一例を示す図解図である。図17に示すように、メインメモリ52は、プログラム記憶領域522およびデータ記憶領域524を含む。プログラム記憶領域522には、ゲームプログラムが記憶され、ゲームプログラムは、メイン処理プログラム522a、画像生成プログラム522b、画像描画プログラム522c、画像表示プログラム522d、眼の位置取得プログラム522eおよび正解判定プログラム522fなどによって構成される。
【0127】
メイン処理プログラム522aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム522bは、後述する画像データを用いて、ゲーム画面(100)を表示するためのゲーム画像を生成する(モデリングを実行する)ためのプログラムである。画像描画プログラム522cは、カメラ行列A´を設定するとともに、通常の透視投影変換処理を実行するためのプログラムである。画像表示プログラム522dは、画像描画プログラム522bに従って透視投影変換されたゲーム画像をゲーム画面(100)として第1LCD16および第2LCD18に表示するためのプログラムである。
【0128】
眼の位置取得プログラム522eは、上述したように、内側カメラ32の撮影画像からプレイヤの顔に相当する肌色の領域を抽出し、抽出した肌色の領域に基づいて眼の位置を特定(取得)するためのプログラムである。正解判定プログラム522fは、上述したように、ボタン画像160がオンされたことに応じて、仮想カメラ200の位置と指示画像150の位置とを通る直線が少なくとも接触する当り判定オブジェクト350が有る場合に、その直線についての判定ベクトルの方向が制限角度範囲内であるか否かに応じて、正解かどうかを判定するためのプログラムである。
【0129】
なお、図示は省略するが、プログラム記憶領域522には、バックアッププログラムや音出力プログラムも記憶される。バックアッププログラムは、ゲームデータ(途中データ,結果データ)をメモリカード26、メモリカード28または保存用データメモリ56に保存するためのプログラムである。音出力プログラムは、音データ(図示せず)を用いて、ゲームに必要な音(音楽)を生成し、スピーカから出力するためのプログラムである。
【0130】
また、図17に示すように、データ記憶領域524には、入力データバッファ524aが設けられる。また、データ記憶領域524には、画像データ524bおよび正解判定データ524cが記憶される。入力データバッファ524aには、操作ボタン20からの操作データおよびタッチパネル22からの座標データが時系列に従って記憶(一時記憶)される。画像データ524bは、上述したゲーム画像を生成するためのポリゴンデータやテクスチャデータなどのデータである。正解判定データ524cは、問題としての文字等のそれぞれに対して設定される、当り判定オブジェクト350の各々についてのデータおよび当該当り判定オブジェクト350の各々に対応して設定される制限角度範囲についてのデータである。この実施例では、各当り判定オブジェクト350についてのデータは、透明のポリゴンデータによって構成される。また、正解判定データ524cには、各当り判定オブジェクト350を3次元仮想空間に配置する3次元座標も記憶される。
【0131】
なお、図示は省略するが、データ記憶領域524には、音データのようなゲームに必要なデータが記憶されたり、仮想ゲームの処理の実行に必要な、タイマ(カウンタ)およびフラグなどが設定されたりする。
【0132】
図18は図3に示したCPU50の全体処理を示すフロー図である。図18に示すように、CPU50は全体処理を開始すると、ステップS1で、後述する眼の位置取得処理(図19参照)を実行する。続くステップS3では、仮想カメラ200の位置を設定する。ここでは、ステップS1で取得された眼の位置に応じて、仮想カメラ200の3次元仮想空間内におけるXY平面の位置が決定され、注視点と仮想カメラ200の位置との距離に応じてZ軸方向の位置が決定される。ただし、このとき仮想カメラ200の向きは、注視点の方向に設定される。
【0133】
続く、ステップS5では、後述する描画処理(図20参照)を実行する。つまり、プレイヤの眼の位置に応じてゲーム画面100を表示するためのゲーム画像が生成される。なお、図示は省略するが、仮想ゲームが開始されたときに、ステップS1の処理に先立って、3次元仮想空間内の範囲202に複数のオブジェクトが配置(モデリング)される。
【0134】
次のステップS7では、座標入力があるかどうかを判断する。ここでは、CPU50は、タッチパネル22からの入力(座標データ)が入力データバッファ524aに記憶されているかどうかを判断する。ステップS7で“YES”であれば、つまり座標入力が有れば、ステップS9で、正解判定の指示かどうかを判断する。つまり、座標データが示す第2LCD18の画面上における座標が、ボタン画像160が表示される領域に含まれるかどうかを判断する。これによって、ボタン画像160がオンされたかどうかを判断しているのである。
【0135】
ステップS9で“NO”であれば、つまり正解判定の指示でなければ、そのままステップS1に戻る。一方、ステップS9で“YES”であれば、つまり正解判定の指示であれば、ステップS11で、後述する正解判定処理(図21参照)を実行する。
【0136】
そして、ステップS13で、ゲームクリアかどうかを判断する。この実施例では、問題としての文字等のすべてを見つけ出すことができたか否かを判断する。ステップS13で“NO”であれば、つまりゲームクリアでなければ、そのままステップS1に戻る。一方、ステップS13で“YES”であれば、つまりゲームクリアであれば、そのまま全体処理を終了する。
【0137】
また、ステップS7で“NO”であれば、つまり座標入力が無ければ、ステップS15で、方向指示があるかどうかを判断する。つまり、入力データバッファ524aに、方向入力ボタン20aの操作データが記憶されているかどうかを判断する。ステップS15で“NO”であれば、つまり方向指示が無ければ、そのままステップS1に戻る。一方、ステップS15で“YES”であれば、つまり方向指示があれば、ステップS17で、方向指示に従って、指示画像150を移動させて、ステップS1に戻る。つまり、ステップS17では、方向入力ボタン20aの操作データに従って、指示画像150を投影面上で上下左右または斜めに移動させる。
【0138】
なお、図18に示す全体処理のスキャンタイムは、1フレーム(フレームは、画面更新単位時間(1/60秒)である。)である。
【0139】
図19は図18に示したステップS1の眼の位置取得処理のフロー図である。図19に示すように、CPU50は、眼の位置取得処理を開始すると、ステップS21で、撮影画像から肌色部分を抽出する。図示は省略するが、仮想ゲームが開始されると、全体処理とは別の処理によって、撮影処理が実行され、たとえば、1フレーム毎の撮影画像が得られる。次のステップS23で、肌色部分と肌色で無い部分とで画像を2値化する。続くステップS25では、塊情報を生成する。つまり、CPU50は、肌色である画素が所定数以上の塊として存在する場合には、その塊ないし範囲を塊情報として生成するのである。
【0140】
続いて、ステップS27では、最大の塊を顔として選択する。次のステップS29では、胴体を削除する。つまり、首から下の肌色の部分であって、かつ、幅が急激に広くなっている部分、つまり肩部分と推測される部分が塊情報から除去されるのである。除去されるのは肩部分、つまり広い部分だけであって、顔の下に位置する範囲である。したがって、首部分は除去されない。続くステップS31では、顔に相当する塊の最上位置と最下位置とを取得する。つまり、肌色部分の最上位置は額の最上位置ないし頭頂部に相当し、最下部分は顎の先端に相当する位置であるので、額の最上位置ないし頭頂部と顎の先端位置とが取得される。そして、ステップS33で、眼の位置を特定し、図18に示した全体処理にリターンする。上述したように、ステップS33では、CPU50は、最上位置と最下位置との距離の8分の1に相当する距離だけ、最上位置から下がった位置を眼の位置として特定する。
【0141】
図20は、図18に示したステップS5の描画処理を示すフロー図である。図20に示すように、CPU50は、描画処理を開始すると、ステップS41で、数2に示した行列Bに基づいてカメラ行列A´を設定する。次にステップS43で、透視投影変換処理を実行して、図18に示した全体処理にリターンする。
【0142】
図21は、図18に示したステップS11の正解判定処理を示すフロー図である。図21に示すように、CPU50は、正解判定処理を開始すると、ステップS51で、指示画像150の座標を3次元座標に変換する。ここでは、2次元の投影面に描画されている指示画像150のXY座標が3次元仮想空間のXY平面におけるXY座標に変換され、さらに、3次元仮想空間における投影面のZ座標が追加される。次のステップS53では、仮想カメラ200の位置と注視点とを通る直線を算出する。
【0143】
次に、ステップS55では、ステップS53で算出した直線が接するまたは交差する当り判定オブジェクト350が有るかどうかを判断する。ステップS55で“NO”であれば、つまり直線が接したり交差したりする当り判定オブジェクト350が存在しない場合には、そのまま図18に示した全体処理にリターンする。
【0144】
一方、ステップS55で“YES”であれば、つまり直線が接するまたは交差する当り判定オブジェクト350が有る場合には、ステップS57で、判定ベクトルの方向が当該当り判定オブジェクト350に対応して設定される制限角度範囲内であるかどうかを判断する。ステップS57で“NO”であれば、つまり判定ベクトルの方向が制限角度範囲外であれば、不正解であると判定して、そのまま全体処理にリターンする。
【0145】
ただし、ステップS55またはステップS57で“NO”である場合には、そのまま全体処理にリターンせずに、不正解である旨をゲーム画面100の表示または音(音楽)の出力或いはそれらの両方によって表現してから、全体処理にリターンするようにしてもよい。
【0146】
また、ステップS57で“YES”であれば、つまり判定ベクトルの方向が制限角度範囲内であれば、正解であると判定して、ステップS59で、正解処理を実行して、全体処理にリターンする。たとえば、ステップS59では、CPU50は、正解である旨をゲーム画面100の表示または音(音楽)の出力或いはそれらの両方によって表現する。また、正解した問題の文字等については、それ以降では、ゲーム画面100において半透明表示されている箇所に色や模様が付される。
【0147】
この実施例によれば、撮影画像から特定されるプレイヤの眼の位置によって仮想カメラを制御し、ゲーム画面に隠された文字等を見つけるので、プレイヤ自身の姿勢をゲームに効果的に利用することができる。また、この実施例では、仮想カメラを表示面に対して3次元仮想空間が固定されるように制御することにより、2次元の画面表示でありながら、3次元仮想空間を立体的に見ることができる。
【0148】
なお、この実施例では、3次元仮想空間内に隠された文字等を仮想カメラの位置を制御することにより見つける仮想ゲームについてのみ説明にしたが、これに限定される必要はない。たとえば、3次元仮想空間内に隠れている任意のキャラクタに照準(指示画像)を合わせて当該キャラクタを銃などの武器で攻撃するような、シューティングゲームにも適用することができる。
【0149】
また、この実施例では、撮影画像からプレイヤの眼の位置を特定するようにしたが、これに限定される必要はない。たとえば、眉毛の位置を特定し、その位置に応じて仮想カメラの位置を制御してもよい。または、眉間辺りに所定の色(肌色以外の色)が付されたシールのような目印を貼り付けておき、その目印の位置を撮影画像から特定し、その位置に応じて仮想カメラの位置を制御してもよい。
【0150】
さらに、ゲーム装置の構成は実施例のものに限定される必要はない。たとえば、カメラは1つでもよい。また、タッチパネルは無くてもよい。さらに、タッチパネルを2つのLCD上に設けてもよい。
【符号の説明】
【0151】
10 …ゲーム装置
12,14 …ハウジング
16,18 …LCD
20 …操作ボタン
22 …タッチパネル
24 …タッチペン
26,28 …メモリカード
32,34 …カメラ
50 …CPU
52 …メインメモリ
54 …メモリ制御回路
56 …保存用データメモリ
58 …プリセットデータ用メモリ
60,62 …メモリカードI/F
64 …無線通信モジュール
66 …ローカル通信モジュール
68 …RTC
70 …電源回路
72 …I/F回路
74,76 …GPU
78,80 …VRAM
82 …LCDコントローラ
84 …マイク
【特許請求の範囲】
【請求項1】
画像を表示する表示部と、
少なくともプレイヤの一部を撮像する撮像部と、
前記表示部に仮想空間を表示させる表示制御部と、
前記撮像部が撮像する所定の画像の位置を特定する位置特定部と、
前記位置特定部によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御部と、
プレイヤの入力に応じて画面上の位置を指示する指示部と、
前記指示部によって指示された前記画面上の位置と、前記仮想カメラの状態とに応じてゲーム処理を行うゲーム処理部とを備える、ゲーム装置。
【請求項2】
前記ゲーム処理部は、前記指示部によって指示された位置が、前記仮想空間における所定のオブジェクトの表示位置を示すか否かを判定する判定部を含む、請求項1記載のゲーム装置。
【請求項3】
前記判定部は、前記指示部によって指示されたときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定の範囲内であるか否かをさらに判定する、請求項2記載のゲーム装置。
【請求項4】
前記仮想空間内に分散して複数のオブジェクトを配置し、
前記判定部によって、前記指示部によって指示されたときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定範囲内であると判定されたとき、前記複数のオブジェクトの組み合わせによって前記所定のオブジェクトが表される、請求項3記載のゲーム装置。
【請求項5】
前記仮想カメラ制御部は、前記仮想カメラの前記仮想空間における注視点を固定し、前記仮想カメラの位置を前記位置特定部で特定された位置に対応させて設定する、請求項1ないし4のいずれかに記載のゲーム装置。
【請求項6】
前記位置特定部は、前記撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出し、
前記仮想カメラ制御部は、前記撮像部が撮像した画像内の前記所定の座標の位置に前記仮想空間内における所定平面内の座標を対応させて、前記仮想カメラの位置を設定する、請求項5記載のゲーム装置。
【請求項7】
前記表示部は、第1の表示部と第2の表示部とからなり、
前記撮像部は、前記第1の表示部と前記第2の表示部との間に配置される、請求項1ないし6のいずれかに記載のゲーム装置。
【請求項8】
前記プレイヤの入力により方向を入力する方向入力部をさらに備え、
前記指示部は、前記方向入力部によって入力された方向に指示位置を移動させることで前記画面上の位置を指示する、請求項1ないし7のいずれかに記載のゲーム装置。
【請求項9】
前記表示部上に配置されるタッチパネルさらに備え、
前記指示部は、前記タッチパネルに対する入力に基づいて前記画面上の位置を指示する、請求項1ないし7のいずれかに記載のゲーム装置。
【請求項10】
画像を表示する表示部と、少なくともプレイヤの一部を撮像する撮像部とを備えるゲーム装置のコンピュータによって実行されるゲームプログラムであって、
前記コンピュータを、
前記表示部に仮想空間を表示させる表示制御手段と、
前記撮像部が撮像する所定の画像の位置を特定する位置特定手段と、
前記位置特定手段によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御手段と、
プレイヤの入力に応じて画面上の位置を指示する指示手段と、
前記指示手段によって指示された前記画面上の位置と、前記仮想カメラの状態とに応じてゲーム処理を行うゲーム処理手段として機能させる、ゲームプログラム。
【請求項11】
前記ゲーム処理手段は、前記指示手段によって指示された位置が、前記仮想空間における所定のオブジェクトの表示位置を示すか否かを判定する判定手段を含む、請求項10記載のゲームプログラム。
【請求項12】
前記判定手段は、前記指示手段によって指示されたときの前記仮想カメラの向きが前記オブジェクトに対して設定された所定の範囲内であるか否かをさらに判定する、請求項11記載のゲームプログラム。
【請求項13】
前記仮想カメラ制御手段は、前記仮想カメラの前記仮想空間における注視点を固定し、前記仮想カメラの位置を前記位置特定手段で特定された位置に対応させて設定する、請求項10ないし12のいずれかに記載のゲームプログラム。
【請求項14】
前記位置特定手段は、前記撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出し、
前記仮想カメラ制御手段は、前記撮像部が撮像した画像内の前記所定の座標の位置に前記仮想空間内における所定平面内の座標を対応させて、前記仮想カメラの位置を設定する、請求項13記載のゲームプログラム。
【請求項1】
画像を表示する表示部と、
少なくともプレイヤの一部を撮像する撮像部と、
前記表示部に仮想空間を表示させる表示制御部と、
前記撮像部が撮像する所定の画像の位置を特定する位置特定部と、
前記位置特定部によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御部と、
プレイヤの入力に応じて画面上の位置を指示する指示部と、
前記指示部によって指示された前記画面上の位置と、前記仮想カメラの状態とに応じてゲーム処理を行うゲーム処理部とを備える、ゲーム装置。
【請求項2】
前記ゲーム処理部は、前記指示部によって指示された位置が、前記仮想空間における所定のオブジェクトの表示位置を示すか否かを判定する判定部を含む、請求項1記載のゲーム装置。
【請求項3】
前記判定部は、前記指示部によって指示されたときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定の範囲内であるか否かをさらに判定する、請求項2記載のゲーム装置。
【請求項4】
前記仮想空間内に分散して複数のオブジェクトを配置し、
前記判定部によって、前記指示部によって指示されたときの前記仮想カメラの向きが前記所定のオブジェクトに対して設定された所定範囲内であると判定されたとき、前記複数のオブジェクトの組み合わせによって前記所定のオブジェクトが表される、請求項3記載のゲーム装置。
【請求項5】
前記仮想カメラ制御部は、前記仮想カメラの前記仮想空間における注視点を固定し、前記仮想カメラの位置を前記位置特定部で特定された位置に対応させて設定する、請求項1ないし4のいずれかに記載のゲーム装置。
【請求項6】
前記位置特定部は、前記撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出し、
前記仮想カメラ制御部は、前記撮像部が撮像した画像内の前記所定の座標の位置に前記仮想空間内における所定平面内の座標を対応させて、前記仮想カメラの位置を設定する、請求項5記載のゲーム装置。
【請求項7】
前記表示部は、第1の表示部と第2の表示部とからなり、
前記撮像部は、前記第1の表示部と前記第2の表示部との間に配置される、請求項1ないし6のいずれかに記載のゲーム装置。
【請求項8】
前記プレイヤの入力により方向を入力する方向入力部をさらに備え、
前記指示部は、前記方向入力部によって入力された方向に指示位置を移動させることで前記画面上の位置を指示する、請求項1ないし7のいずれかに記載のゲーム装置。
【請求項9】
前記表示部上に配置されるタッチパネルさらに備え、
前記指示部は、前記タッチパネルに対する入力に基づいて前記画面上の位置を指示する、請求項1ないし7のいずれかに記載のゲーム装置。
【請求項10】
画像を表示する表示部と、少なくともプレイヤの一部を撮像する撮像部とを備えるゲーム装置のコンピュータによって実行されるゲームプログラムであって、
前記コンピュータを、
前記表示部に仮想空間を表示させる表示制御手段と、
前記撮像部が撮像する所定の画像の位置を特定する位置特定手段と、
前記位置特定手段によって特定された位置に応じて仮想カメラを制御する仮想カメラ制御手段と、
プレイヤの入力に応じて画面上の位置を指示する指示手段と、
前記指示手段によって指示された前記画面上の位置と、前記仮想カメラの状態とに応じてゲーム処理を行うゲーム処理手段として機能させる、ゲームプログラム。
【請求項11】
前記ゲーム処理手段は、前記指示手段によって指示された位置が、前記仮想空間における所定のオブジェクトの表示位置を示すか否かを判定する判定手段を含む、請求項10記載のゲームプログラム。
【請求項12】
前記判定手段は、前記指示手段によって指示されたときの前記仮想カメラの向きが前記オブジェクトに対して設定された所定の範囲内であるか否かをさらに判定する、請求項11記載のゲームプログラム。
【請求項13】
前記仮想カメラ制御手段は、前記仮想カメラの前記仮想空間における注視点を固定し、前記仮想カメラの位置を前記位置特定手段で特定された位置に対応させて設定する、請求項10ないし12のいずれかに記載のゲームプログラム。
【請求項14】
前記位置特定手段は、前記撮像部が撮像した画像内における、所定の範囲の色の領域を特定し、当該領域の位置から所定の座標を算出し、
前記仮想カメラ制御手段は、前記撮像部が撮像した画像内の前記所定の座標の位置に前記仮想空間内における所定平面内の座標を対応させて、前記仮想カメラの位置を設定する、請求項13記載のゲームプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2011−107817(P2011−107817A)
【公開日】平成23年6月2日(2011.6.2)
【国際特許分類】
【出願番号】特願2009−259742(P2009−259742)
【出願日】平成21年11月13日(2009.11.13)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成23年6月2日(2011.6.2)
【国際特許分類】
【出願日】平成21年11月13日(2009.11.13)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]