(第1の実施形態)
図面を参照して、本発明の第1の実施形態に係る画像処理プログラムを実行する画像処理装置について説明する。本発明の画像処理プログラムは、任意のコンピュータシステムで実行されることによって適用することができるが、画像処理装置の一例として携帯型のゲーム装置10を用い、ゲーム装置10で実行される画像処理プログラムを用いて説明する。なお、図1〜図3Dは、ゲーム装置10の外観の一例を示す平面図である。ゲーム装置10は、一例として携帯型のゲーム装置であり、図1〜図3Dに示すように折り畳み可能に構成されている。図1は、開いた状態(開状態)におけるゲーム装置10の一例を示す正面図である。図2は、開状態におけるゲーム装置10の一例を示す右側面図である。図3Aは、閉じた状態(閉状態)におけるゲーム装置10の一例を示す左側面図である。図3Bは、閉状態におけるゲーム装置10の一例を示す正面図である。図3Cは、閉状態におけるゲーム装置10の一例を示す右側面図である。図3Dは、閉状態におけるゲーム装置10の一例を示す背面図である。ゲーム装置10は、撮像部を内蔵しており、当該撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、交換可能なメモリカード内に記憶され、または、サーバや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像等のコンピュータグラフィックス処理により生成された画像を画面に表示することもできる。
図1〜図3Dにおいて、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に連結されている。図1の例では、下側ハウジング11および上側ハウジング21は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回動可能に連結されている。通常、ユーザは、開状態でゲーム装置10を使用する。そして、ユーザは、ゲーム装置10を使用しない場合には閉状態としてゲーム装置10を保管する。また、ゲーム装置10は、上記閉状態および開状態のみでなく、下側ハウジング11と上側ハウジング21とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング21を下側ハウジング11に対して任意の角度で静止させることができる。
図1および図2に示されるように、下側ハウジング11の上側長辺部分には、下側ハウジング11の内側面(主面)11Bに対して垂直な方向に突起する突起部11Aが設けられる。また、上側ハウジング21の下側長辺部分には、上側ハウジング21の下側面から当該下側面に垂直な方向に突起する突起部21Aが設けられる。下側ハウジング11の突起部11Aと上側ハウジング21の突起部21Aとが連結されることにより、下側ハウジング11と上側ハウジング21とが、折り畳み可能に接続される。
下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L(図1、図3A〜図3D)、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。以下、これらの詳細について説明する。
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。下側LCD12は、下側ハウジング11の中央に配置される。下側LCD12は、下側ハウジング11の内側面(主面)に設けられ、下側ハウジング11の内側面に設けられた開口部から下側LCD12の画面が露出する。そして、ゲーム装置10を使用しない場合には上記閉状態としておくことによって、下側LCD12の画面が汚れたり傷ついたりすることを防止することができる。下側LCD12の画素数は、一例として、256dot×192dot(横×縦)である。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCD12として、任意の解像度の表示装置を利用することができる。
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル13は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、例えば静電容量方式等、任意の押圧式のタッチパネルを用いることができる。本実施形態では、タッチパネル13として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度とが一致している必要はない。また、下側ハウジング11の上側面には挿入口17(図1および図3Dに示す点線)が設けられている。挿入口17は、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッチペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である。
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。図1に示されるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが設けられる。十字ボタン14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン14B、ボタン14C、ボタン14D、およびボタン14Eは、十字状に配置される。ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは選択操作等に用いられ、各操作ボタン14B〜14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフするために用いられる。
アナログスティック15は、方向を指示するデバイスであり、下側ハウジング11の内側面の下側LCD12より左側領域の上部領域に設けられる。図1に示すように、十字ボタン14Aが下側LCD12より左側領域の下部領域に設けられ、アナログスティック15が十字ボタン14Aの上方に設けられる。また、アナログスティック15および十字ボタン14Aは、下側ハウジング11を把持した左手の親指で操作可能な位置に設計される。また、アナログスティック15を上部領域に設けたことにより、下側ハウジング11を把持する左手の親指が自然と位置するところにアナログスティック15が配され、十字ボタン14Aは、左手の親指を少し下にずらした位置に配される。アナログスティック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトは、アナログスティック15のキートップがスライドした方向に移動される。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いてもよい。
十字状に配置される、ボタン14B、ボタン14C、ボタン14D、およびボタン14Eの4つのボタンは、下側ハウジング11を把持する右手の親指が自然と位置するところに配置される。また、これらの4つのボタンとアナログスティック15とは、下側LCD12を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの4つのボタンを使用して方向指示入力をすることも可能である。
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク(図6参照)が設けられ、当該マイクがゲーム装置10の外部の音を検出する。
図3Bおよび図3Dに示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。Lボタン14Gは、下側ハウジング11の上面の左端部に設けられ、Rボタン14Hは、下側ハウジング11の上面の右端部に設けられる。後述のように、Lボタン14GおよびRボタン14Hは、撮像部のシャッターボタン(撮影指示ボタン)として機能する。また、図3Aに示されるように、下側ハウジング11の左側面には、音量ボタン14Iが設けられる。音量ボタン14Iは、ゲーム装置10が備えるスピーカの音量を調整するために用いられる。
図3Aに示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ46とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ46は、上記コネクタに着脱自在に装着される。データ保存用外部メモリ46は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。なお、上記コネクタおよびそのカバー部11Cは、下側ハウジング11の右側面に設けられてもよい。
図3Dに示されるように、下側ハウジング11の上側面にはゲーム装置10とゲームプログラムを記録した外部メモリ45を挿入するための挿入口11Dが設けられ、その挿入口11Dの内部には、外部メモリ45と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。外部メモリ45がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタおよび挿入口11Dは、下側ハウジング11の他の側面(例えば、右側面等)に設けられてもよい。
図1に示されるように、下側ハウジング11の下側面には、ゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16Aが設けられる。また、図3Cに示されるように、下側ハウジング11の右側面には、ゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は、他の機器との間で無線通信を行うことが可能であり、第1LED16Bは、他の機器との無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(図3C参照)。
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
上側ハウジング21には、上側LCD22、2つの外側撮像部23(外側左撮像部23aおよび外側右撮像部23b)、内側撮像部24、3D調整スイッチ25、および3Dインジケータ26が設けられる。以下、これらの詳細について説明する。
図1に示すように、上側LCD22は、上側ハウジング21に収納される。上側LCD22は、横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置される。上側LCD22は、上側ハウジング21の中央に配置される。上側LCD22の画面の面積は、一例として下側LCD12の画面の面積よりも大きく設定される。具体的には、上側LCD22の画面は、下側LCD12の画面よりも横長に設定される。すなわち、上側LCD22の画面のアスペクト比における横幅の割合は、下側LCD12の画面のアスペクト比における横幅の割合よりも大きく設定される。
上側LCD22の画面は、上側ハウジング21の内側面(主面)21Bに設けられ、上側ハウジング21の内側面に設けられた開口部から上側LCD22の画面が露出する。また、図2に示すように、上側ハウジング21の内側面は、透明なスクリーンカバー27によって覆われている。スクリーンカバー27は、上側LCD22の画面を保護するとともに、上側LCD22と上側ハウジング21の内側面と一体的にさせ、これにより統一感を持たせている。上側LCD22の画素数は、一例として640dot×200dot(横×縦)である。なお、本実施形態では、上側LCD22が液晶表示装置であるとしたが、例えばELを利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。上側LCD22は、実質的に同一の表示領域を用いて左目用画像と右目用画像とを表示することが可能である。具体的には、上側LCD22は、左目用画像と右目用画像とが所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。なお、上側LCD22は、左目用画像と右目用画像とが交互に表示される方式の表示装置であってもよい。また、上側LCD22は、裸眼立体視可能な表示装置である。この場合、上側LCD22は、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCD22は、パララックスバリア方式のものとする。上側LCD22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像をそれぞれ視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである。)。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチ25によって行われる。
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(外側左撮像部23aおよび外側右撮像部23b)の総称である。外側左撮像部23aおよび外側右撮像部23bの撮像方向は、いずれも外側面21Dの外向きの法線方向である。また、外側左撮像部23aおよび外側右撮像部23bは、いずれも、上側LCD22の表示面(内側面)の法線方向と180度反対の方向に設計される。すなわち、外側左撮像部23aの撮像方向および外側右撮像部23bの撮像方向は、平行である。外側左撮像部23aと外側右撮像部23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。また、プログラムによっては、2つの外側撮像部(外側左撮像部23aおよび外側右撮像部23b)のいずれか一方を単独で用いて、外側撮像部23を非ステレオカメラとして使用することも可能である。また、プログラムによっては、2つの外側撮像部(外側左撮像部23aおよび外側右撮像部23b)で撮像した画像を合成してまたは補完的に使用することにより撮像範囲を広げた撮像をおこなうことも可能である。本実施形態では、外側撮像部23は、外側左撮像部23aおよび外側右撮像部23bの2つの撮像部で構成される。外側左撮像部23aおよび外側右撮像部23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図1の破線および図3Bの実線で示されるように、外側撮像部23を構成する外側左撮像部23aおよび外側右撮像部23bは、上側LCD22の画面の横方向と平行に並べられて配置される。すなわち、2つの外側左撮像部23aおよび外側右撮像部23bを結んだ直線が上側LCD22の画面の横方向と平行になるように、外側左撮像部23aおよび外側右撮像部23bが配置される。図1の破線23aおよび23bは、上側ハウジング21の内側面とは反対側の外側面に存在する外側左撮像部23aおよび外側右撮像部23bをそれぞれ表している。図1に示すように、ユーザが上側LCD22の画面を正面から視認した場合に、外側左撮像部23aは左側に外側右撮像部23bは右側にそれぞれ位置する。外側撮像部23をステレオカメラとして機能させるプログラムが実行されている場合、外側左撮像部23aは、ユーザの左目で視認される左目用画像を撮像し、外側右撮像部23bは、ユーザの右目で視認される右目用画像を撮像する。外側左撮像部23aおよび外側右撮像部23bの間隔は、人間の両目の間隔程度に設定され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、外側左撮像部23aおよび外側右撮像部23bの間隔は、この範囲に限らない。
なお、本実施例においては、外側左撮像部23aおよび外側右撮像部23bは、ハウジングに固定されており、撮像方向を変更することはできない。
外側左撮像部23aおよび外側右撮像部23bは、上側LCD22(上側ハウジング21)の左右方向に関して中央から対称となる位置にそれぞれ配置される。すなわち、外側左撮像部23aおよび外側右撮像部23bは、上側LCD22を左右に2等分する線に対して対称の位置にそれぞれ配置される。また、外側左撮像部23aおよび外側右撮像部23bは、上側ハウジング21を開いた状態において、上側ハウジング21の上部であって、上側LCD22の画面の上端よりも上方の位置の裏側に配置される。すなわち、外側左撮像部23aおよび外側右撮像部23bは、上側ハウジング21の外側面であって、上側LCD22を外側面に投影した場合、投影した上側LCD22の画面の上端よりも上方に配置される。
このように、外側撮像部23の2つの撮像部(外側左撮像部23aおよび外側右撮像部23b)が上側LCD22の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側LCD22を正視した場合に、外側撮像部23それぞれの撮像方向をユーザの左右の目それぞれの視線方向と一致させることができる。また、外側撮像部23は、上側LCD22の画面の上端より上方の裏側の位置に配置されるため、外側撮像部23と上側LCD22とが上側ハウジング21の内部で干渉することがない。したがって、外側撮像部23を上側LCD22の画面の裏側に配置する場合と比べて、上側ハウジング21を薄く構成することが可能となる。
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図1に示すように、内側撮像部24は、上側ハウジング21を開いた状態において、上側ハウジング21の上部であって、上側LCD22の画面の上端よりも上方に配置され、上側ハウジング21の左右方向に関して中央の位置(上側ハウジング21(上側LCD22の画面)を左右に2等分する線の線上)に配置される。具体的には、図1および図3Bに示されるように、内側撮像部24は、上側ハウジング21の内側面であって、外側左撮像部23aおよび外側右撮像部23bの中間の裏側の位置に配置される。すなわち、上側ハウジング21の外側面に設けられた外側左撮像部23aおよび外側右撮像部23bを上側ハウジング21の内側面に投影した場合、当該投影した外側左撮像部23aおよび外側右撮像部23bの中間に、内側撮像部24が設けられる。図3Bで示される破線24は、上側ハウジング21の内側面に存在する内側撮像部24を表している。
このように、内側撮像部24は、外側撮像部23とは反対方向を撮像する。内側撮像部24は、上側ハウジング21の内側面であって、2つの外側撮像部23の中間位置となる裏側に設けられる。これにより、ユーザが上側LCD22を正視した際、内側撮像部24でユーザの顔を正面から撮像することができる。また、外側左撮像部23aおよび外側右撮像部23bと内側撮像部24とが上側ハウジング21の内部で干渉することがないため、上側ハウジング21を薄く構成することが可能となる。
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。図1〜図3Dに示されるように、3D調整スイッチ25は、上側ハウジング21の内側面および右側面の端部に設けられ、ユーザが上側LCD22を正視した場合に、当該3D調整スイッチ25を視認できる位置に設けられる。3D調整スイッチ25は、所定方向(例えば、上下方向)の任意の位置にスライド可能なスライダを有しており、当該スライダの位置に応じて上側LCD22の表示モードが設定される。
例えば、3D調整スイッチ25のスライダが最下点位置に配置されている場合、上側LCD22が平面表示モードに設定され、上側LCD22の画面には平面画像が表示される。なお、上側LCD22を立体表示モードのままとして、左目用画像と右目用画像とを同一の画像とすることにより平面表示してもよい。一方、上記最下点位置より上側にスライダが配置されている場合、上側LCD22は立体表示モードに設定される。この場合、上側LCD22の画面には立体視可能な画像が表示される。ここで、スライダが上記最下点位置より上側に配置されている場合、スライダの位置に応じて、立体画像の見え方が調整される。具体的には、スライダの位置に応じて、右目用画像および左目用画像における横方向の位置のずれ量が調整される。
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。例えば、3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。図1に示されるように、3Dインジケータ26は、上側ハウジング21の内側面に設けられ、上側LCD22の画面近傍に設けられる。このため、ユーザが上側LCD22の画面を正視した場合、ユーザは3Dインジケータ26を視認しやすい。したがって、ユーザは、上側LCD22の画面を視認している状態でも、上側LCD22の表示モードを容易に認識することができる。
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ44からの音声がこのスピーカ孔21Eから出力される。
次に、図4および図5を参照して、ゲーム装置10の使用状態の一例を示す。なお、図4は、ユーザがゲーム装置10を両手で把持する様子の一例を示す図である。図5は、ユーザがゲーム装置10を片手で把持する様子の一例を示す図である。
図4に示されるように、ユーザは、下側LCD12および上側LCD22がユーザの方向を向く状態で、両手の掌と中指、薬指および小指とで下側ハウジング11の側面および外側面(内側面の反対側の面)を把持する。このように把持することで、ユーザは、下側ハウジング11を把持したまま、各操作ボタン14A〜14Eおよびアナログスティック15に対する操作を親指で行い、Lボタン14GおよびR14Hに対する操作を人差し指で行うことができる。また、図5に示されるように、タッチパネル13に対して入力を行う場合には、下側ハウジング11を把持していた一方の手を離して他方の手のみで下側ハウジング11を把持することによって、当該一方の手でタッチパネル13に対する入力を行うことができる。
次に、図6を参照して、ゲーム装置10の内部構成を説明する。なお、図6は、ゲーム装置10の内部構成の一例を示すブロック図である。
図6において、ゲーム装置10は、上述した各構成部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、角速度センサ40、電源回路41、およびインターフェイス回路(I/F回路)42等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312等を含む情報処理手段である。本実施形態では、所定のプログラムがゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ45やデータ保存用内部メモリ35)に記憶されている。情報処理部31のCPU311は、当該所定のプログラムを実行することによって、後述する画像処理やゲーム処理を実行する。なお、情報処理部31のCPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部31は、VRAM(Video RAM)313を含む。情報処理部31のGPU312は、情報処理部31のCPU311からの命令に応じて画像を生成し、VRAM313に描画する。そして、情報処理部31のGPU312は、VRAM313に描画された画像を上側LCD22および/または下側LCD12に出力し、上側LCD22および/または下側LCD12に当該画像が表示される。
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メモリI/F34、およびデータ保存用内部メモリ35が接続される。外部メモリI/F33は、外部メモリ45を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ46を着脱自在に接続するためのインターフェイスである。
メインメモリ32は、情報処理部31(CPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、画像処理やゲーム処理で用いられる各種データを一時的に記憶したり、外部(外部メモリ45や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
外部メモリ45は、情報処理部31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ45は、例えば読み取り専用の半導体メモリで構成される。外部メモリ45が外部メモリI/F33に接続されると、情報処理部31は外部メモリ45に記憶されたプログラムを読み込むことができる。情報処理部31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ46は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ46には、外側撮像部23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ46がデータ保存用外部メモリI/F34に接続されると、情報処理部31はデータ保存用外部メモリ46に記憶された画像を読み込み、上側LCD22および/または下側LCD12に当該画像を表示することができる。
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
無線通信モジュール36は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール36およびローカル通信モジュール37は、情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
情報処理部31には、加速度センサ39が接続される。加速度センサ39は、3軸(本実施形態では、xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサ39は、例えば下側ハウジング11の内部に設けられる。加速度センサ39は、図1に示すように、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、ゲーム装置10の各軸方向へ生じる直線加速度の大きさをそれぞれ検出する。なお、加速度センサ39は、例えば静電容量式の加速度センサとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ39は1軸または2軸方向を検出する加速度センサであってもよい。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを算出する。
情報処理部31には、角速度センサ40が接続される。角速度センサ40は、ゲーム装置10の3軸(本実施形態では、xyz軸)周りに生じる角速度をそれぞれ検出し、検出した角速度を示すデータ(角速度データ)を情報処理部31へ出力する。角速度センサ40は、例えば下側ハウジング11の内部に設けられる。情報処理部31は、角速度センサ40から出力された角速度データを受信して、ゲーム装置10の姿勢や動きを算出する。
情報処理部31には、RTC38および電源回路41が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路41は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
情報処理部31には、I/F回路42が接続される。I/F回路42には、マイク43、スピーカ44、およびタッチパネル13が接続される。具体的には、I/F回路42には、図示しないアンプを介してスピーカ44が接続される。マイク43は、ユーザの音声を検知して音声信号をI/F回路42に出力する。アンプは、I/F回路42からの音声信号を増幅し、音声をスピーカ44から出力させる。I/F回路42は、マイク43およびスピーカ44(アンプ)の制御を行う音声制御回路と、タッチパネル13の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。タッチ位置データは、タッチパネル13の入力面において入力が行われた位置(タッチ位置)の座標を示す。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、およびタッチ位置データの生成を所定時間に1回の割合で行う。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われたタッチ位置を知ることができる。
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に応じた処理を実行する。
下側LCD12および上側LCD22は、情報処理部31に接続される。下側LCD12および上側LCD22は、情報処理部31(GPU312)の指示にしたがってって画像を表示する。本実施形態では、情報処理部31は、手書き画像入力操作用の画像を下側LCD12に表示させ、外側撮像部23および内側撮像部24のいずれかから取得した画像を上側LCD22に表示させる。すなわち、情報処理部31は、上側LCD22に外側撮像部23で撮像した右目用画像と左目用画像とを用いた立体画像(立体視可能な画像)を表示させたり、内側撮像部24で撮像した平面画像を上側LCD22に表示させたり、上側LCD22に外側撮像部23で撮像した右目用画像および左目用画像の一方を用いた平面画像を表示させたりする。
具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された(外側撮像部23で撮像された)右目用画像と左目用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部23および内側撮像部24は、情報処理部31の指示にしたがってって画像を撮像し、撮像した画像データを情報処理部31に出力する。本実施形態では、情報処理部31は、外側撮像部23および内側撮像部24のいずれか一方に対して撮像指示を行い、撮像指示を受けた撮像部が画像を撮像して画像データを情報処理部31に送る。具体的には、ユーザによるタッチパネル13や操作ボタン14を用いた操作によって使用する撮像部が選択される。そして、撮像部が選択されたことを情報処理部31(CPU311)が検知し、情報処理部31が外側撮像部23または内側撮像部24に対して撮像指示を行う。
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダの位置に応じた電気信号を情報処理部31に送信する。
3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。
次に、ゲーム装置10で実行される画像処理プログラムによる具体的な画像処理動作を説明する前に、図7〜図10を参照して当該画像処理動作によって上側LCD22に表示される表示形態例について説明する。なお、図7〜図10は、上側LCD22に表示されたカメラ画像CIから敵オブジェクトEOが出現して表示される各処理段階の一例を示す図である。なお、説明を簡単にするために、上側LCD22には、外側撮像部23および内側撮像部24のいずれかから取得したカメラ画像CIに基づいた、実世界の平面画像(上述した立体視可能な画像とは反対の意味での平面視の画像)が表示される例を用いる。
図7において、上側LCD22には、ゲーム装置10に内蔵する実カメラ(例えば、外側撮像部23)によって撮像された実世界画像であるカメラ画像CIが表示されている。例えば、上側LCD22には、ゲーム装置10に内蔵する実カメラで撮像されたリアルタイムの実世界画像(動画像)が表示される。
カメラ画像CIが上側LCD22に表示された状態において、敵オブジェクトEOが出現する条件を満たした場合、上側LCD22に表示されたカメラ画像CIから敵オブジェクトEOとなる範囲の画像が切り取られる(図8の状態)。図8に示した一例では、敵オブジェクトEOとなる切り取り範囲は、カメラ画像CIに対する任意の矩形範囲に設定される。
図9に示すように、敵オブジェクトEOは、カメラ画像CIから切り取られた上記切り取り範囲の画像が主面に貼り付けられたボード状の物体となって移動する。例えば、敵オブジェクトEOは、カメラ画像CIから切り取られて抜け出した平板物体となって、カメラ画像CIを撮像している実カメラ、すなわちゲーム装置10を操作しているユーザの方へ向かって実空間内を移動しているように上側LCD22に表示される。つまり、ユーザ自身が撮像している実世界の撮像画像における所定の範囲が敵オブジェクトEOとなって撮像者、すなわちユーザに向かってくるような画像が上側LCD22に表示される。例えば、上記切り取り範囲の画像をテクスチャとしてマッピングされた平面ポリゴン(敵オブジェクトEO)を仮想空間に配置し、仮想カメラから敵オブジェクトEOを見た仮想空間の画像(例えば、コンピュータグラフィックス画像;以下、仮想世界画像と記載する)を、カメラ画像CIから得られる実世界画像に合成することによって、敵オブジェクトEOが実空間内に配置されているように上側LCD22に表示される。そして、ゲーム装置10を用いた攻撃操作(例えば、ボタン14B(Aボタン)の押下)に応じて、所定の方向(例えば、カメラ画像CIを撮像している実カメラの視線方向であり、仮想カメラの視線方向)に弾オブジェクトBOが発射され、敵オブジェクトEOがユーザの攻撃対象となる。
また、カメラ画像CIにおける敵オブジェクトEOが抜け出した跡には、所定のマスク画像MIが表示される。一例として、マスク画像MIは、敵オブジェクトEOが抜け出した上記切り取り範囲を、所定の色で塗りつぶして覆う画像で設定される。他の例として、マスク画像MIは、敵オブジェクトEOが抜け出した上記切り取り範囲を、カメラ画像CIにおいて当該範囲と隣接する周辺に表示されているいずれかの色(以下、単に周辺の色と記載することがある)で塗りつぶして覆う画像で設定される。例えば、上記所定の色または上記周辺の色で塗りつぶされた平面ポリゴン(マスクオブジェクトMO)を上記切り取り範囲の位置に対応する上記仮想空間内の位置に配置し、仮想カメラからマスクオブジェクトMOを見た仮想空間の画像(仮想世界画像)を、カメラ画像CIから得られる実世界画像に合成することによって、マスク画像MIが上記切り取り範囲を覆って配置されているように上側LCD22に表示される。
以下の説明においては、マスクオブジェクトMOが配置された仮想世界画像を実世界画像に合成することによって、上記切り取り範囲を覆ってマスク画像MIが表示される例を用いるが、他の方法によって上記切り取り範囲を覆うようにマスク画像MIを表示してもかまわない。例えば、カメラ画像CIから得られる実世界画像における上記切り取り範囲を所定の色や周辺の色で塗りつぶすことによって、マスク画像MIを表示してもかまわない。後述により明らかとなるが、上記実世界画像は、一例として上記カメラ画像がテクスチャとしてマッピングされた平面ポリゴンを生成し、仮想カメラから平行投影で当該平面ポリゴンをレンダリングすることによって生成される。この場合、上記カメラ画像における上記切り取り範囲を所定の色や周辺の色で塗りつぶして上記テクスチャを設定したり、上記テクスチャをマッピングした後に上記切り取り範囲を所定の色や周辺の色で塗りつぶした画像を貼り付けたりすることによって、上記切り取り範囲がマスク画像MIに置換された実世界画像を生成することができる。
ここで、上述したように、上側LCD22には、ゲーム装置10に内蔵する実カメラによって撮像されたリアルタイムの実世界画像が表示されている。したがって、実空間内においてゲーム装置10の方向や位置を変えることによって、ゲーム装置10で撮像される撮像範囲が変わるため、上側LCD22に表示されるカメラ画像CIも変化する。この場合、ゲーム装置10は、実空間内におけるゲーム装置10の動きに応じて、上記仮想空間内における上記仮想カメラの位置や方向を変化させる。これによって、実空間内に配置されているように表示されている敵オブジェクトEOやマスク画像MIは、実空間内におけるゲーム装置10の方向や位置が変わっても実空間内における同じ位置に配置されているように表示される。例えば、図9に示すようなカメラ画像CIを撮像している状態から、ゲーム装置10の実カメラによる撮像方向を左へ変えることによって図10に示すようなカメラ画像CIが撮像されているとする。この場合、上側LCD22に表示されている敵オブジェクトEOやマスク画像MIの表示位置が、実カメラの撮像方向を変えた方向の逆方向(右方向)に移動、すなわち敵オブジェクトEOおよびマスクオブジェクトMOが配置されている仮想空間の仮想カメラの方向が実カメラと同じ左方向に移動する。したがって、敵オブジェクトEOやマスク画像MIは、ゲーム装置10の方向や位置が変化して実カメラの撮像範囲が変わったとしても、あたかもカメラ画像CIで表現された実空間内に配置されているように上側LCD22に表示される。
次に、図11〜図14を参照して、ゲーム装置10で実行される画像処理プログラムによる具体的な処理動作について説明する。なお、図11は、画像処理プログラムを実行することに応じて、メインメモリ32に記憶される各種データの一例を示す図である。図12は、当該画像処理プログラムを実行することによってゲーム装置10が画像処理する動作の一例を示すフローチャートである。図13は、図12のステップ55で行われる敵オブジェクト処理の詳細な動作の一例を示すサブルーチンである。図14は、図12のステップ56で行われる弾オブジェクト処理の詳細な動作の一例を示すサブルーチンである。なお、これらの処理を実行するためのプログラムは、ゲーム装置10に内蔵されるメモリ(例えば、データ保存用内部メモリ35)や外部メモリ45またはデータ保存用外部メモリ46に含まれており、ゲーム装置10の電源がオンになったときに、内蔵メモリから、または外部メモリI/F33やデータ保存用外部メモリI/F34を介して外部メモリ45またはデータ保存用外部メモリ46からメインメモリ32に読み出されて、CPU311によって実行される。
図11において、メインメモリ32には、内蔵メモリ、外部メモリ45、またはデータ保存用外部メモリ46から読み出されたプログラムや画像処理において生成される一時的なデータが記憶される。図11において、メインメモリ32のデータ記憶領域には、操作データDa、カメラ画像データDb、実世界画像データDc、切り取り範囲データDd、敵オブジェクトデータDe、マスクオブジェクトデータDf、弾オブジェクトデータDg、得点データDh、動きデータDi、仮想カメラデータDj、レンダリング画像データDk、および表示画像データDl等が格納される。また、メインメモリ32のプログラム記憶領域には、画像処理プログラムを構成する各種プログラム群Paが記憶される。
操作データDaは、ユーザがゲーム装置10を操作した操作情報を示すデータである。操作データDaは、操作子データDa1および角速度データDa2を含んでいる。操作子データDa1は、ユーザがゲーム装置10の操作ボタン14やアナログスティック15等の操作子を操作したことを示すデータである。角速度データDa2は、角速度センサ40によって検出された角速度を示すデータである。例えば、角速度データDa2には、角速度センサ40が検出したx軸周りの角速度を示すx軸周り角速度データ、y軸周りの角速度を示すy軸周り角速度データ、およびz軸周りの角速度を示すz軸周り角速度データが含まれる。例えば、操作ボタン14やアナログスティック15からの操作データや角速度センサ40からの角速度データは、ゲーム装置10が処理する時間単位(例えば、1/60秒)毎に取得され、当該取得に応じて操作子データDa1および角速度データDa2に格納されて更新される。
なお、後述する処理フローでは、操作子データDa1および角速度データDa2が処理周期である1フレーム毎にそれぞれ更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、操作ボタン14やアナログスティック15等の操作子をユーザが操作したことを検出する周期毎に操作子データDa1を更新し、当該更新された操作子データDa1を処理周期毎に利用する態様でもかまわない。また、角速度センサ40の角速度検出周期毎に角速度データDa2を更新し、当該更新された角速度データDa2を処理周期毎に利用する態様でもかまわない。この場合、操作子データDa1や角速度データDa2を更新するそれぞれの周期と、処理周期とが異なることになる。
カメラ画像データDbは、外側撮像部23および内側撮像部24のいずれかが撮像したカメラ画像を示すデータである。後述する処理の説明においては、カメラ画像を取得するステップにおいて外側撮像部23および内側撮像部24のいずれかが撮像したカメラ画像を用いて、カメラ画像データDbを更新する態様を用いる。なお、外側撮像部23または内側撮像部24が撮像し、撮像されたカメラ画像を用いてカメラ画像データDbを更新する周期は、ゲーム装置10が処理する時間単位(例えば、1/60秒)と同じでもいいし、当該時間単位より短い時間でもかまわない。ゲーム装置10が処理する周期よりカメラ画像データDbを更新する周期が短い場合、後述する処理とは独立して適宜カメラ画像データDbを更新してもかまわない。この場合、後述するカメラ画像を取得するステップにおいて、カメラ画像データDbが示す最新のカメラ画像を常に用いて処理すればよい。
実世界画像データDcは、ゲーム装置10の実カメラ(外側撮像部23または内側撮像部24)が撮像したカメラ画像を示す実世界画像を生成するためのデータである。例えば、実世界画像データDcは、実世界画像を生成するための平面ポリゴンのデータ、当該平面ポリゴンにマッピングするためのカメラ画像のテクスチャデータ、および当該平面ポリゴンの位置を示すデータ等を含んでいる。
切り取り範囲データDdは、敵オブジェクトEOが出現する際、カメラ画像CIから切り取る範囲を示すデータである。
敵オブジェクトデータDeは、敵オブジェクトEOに関するデータであり、テクスチャデータDe1を含んでいる。テクスチャデータDe1は、敵オブジェクトEOに対応するポリゴンにマッピングするためのテクスチャデータであり、例えばカメラ画像CIから切り取られた範囲の静止画像を示すデータである。また、敵オブジェクトデータDeは、敵オブジェクトEOに対応するポリゴン(例えば、平面ポリゴン)のデータ、当該ポリゴンの配置方向や配置位置を示すデータ、敵オブジェクトEOの移動速度や移動方向を示すデータ等も含んでいる。
マスクオブジェクトデータDfは、マスクオブジェクトMOに関するデータである。例えば、マスクオブジェクトデータDfは、マスクオブジェクトMOに対応するポリゴン(例えば、平面ポリゴン)のデータ、当該ポリゴンにマッピングするためのテクスチャデータ、および当該ポリゴンの方向や位置を示すデータ等を含んでいる。
弾オブジェクトデータDgは、攻撃操作に応じて発射される弾オブジェクトBOに関するデータである。例えば、弾オブジェクトデータDgは、弾オブジェクトBOの位置を示すデータおよび弾オブジェクトBOの移動速度や移動方向(例えば、移動速度ベクトル)を示すデータ等を含んでいる。
得点データDhは、敵オブジェクトEOが登場するゲームの得点を示すデータである。例えば、ゲームの得点は、攻撃操作によって敵オブジェクトEOを倒すことによって加点され、敵オブジェクトEOがユーザの位置に到達することによって減点される。
動きデータDiは、実空間におけるゲーム装置10の動きを示すデータである。一例として、ゲーム装置10の動きは、角速度センサ40によって検出された角速度によって算出される。
仮想カメラデータDjは、仮想空間に設定される仮想カメラに関するデータである。例えば、仮想空間における仮想カメラの位置や方向は、動きデータDiが示すゲーム装置10の動きに応じて変化する。
レンダリング画像データDkは、カメラ画像のレンダリング画像データDk1および仮想空間のレンダリング画像データDk2を含んでいる。カメラ画像のレンダリング画像データDk1は、カメラ画像のテクスチャがマッピングされた平面ポリゴンを、平行投影でレンダリングすることによって得られる実世界画像を示すデータである。仮想空間のレンダリング画像データDk2は、敵オブジェクトEOおよびマスクオブジェクトMOが配置された仮想空間を透視投影でレンダリングすることによって得られる仮想世界画像を示すデータである。
表示画像データDlは、上側LCD22に表示される表示画像を示すデータである。例えば、上側LCD22に表示される表示画像は、上記仮想世界画像を優先して上記実世界画像上に上記仮想世界画像を合成することによって生成される。
次に、図12を参照して、情報処理部31の動作について説明する。まず、ゲーム装置10の電源(電源ボタン14F)がONされると、CPU311によってブートプログラム(図示せず)が実行され、これにより内蔵メモリまたは外部メモリ45やデータ保存用外部メモリ46に格納されているプログラムがメインメモリ32にロードされる。そして、当該ロードされたプログラムが情報処理部31(CPU311)で実行されることによって、図12に示すステップ(図12〜図14では「S」と略称する)が実行される。なお、図12〜図14においては、本発明に直接関連しない処理についての記載を省略する。
図12において、情報処理部31は、画像処理における初期設定を行い(ステップ51)、次のステップに処理を進める。例えば、情報処理部31は、仮想世界画像を生成するための仮想カメラの初期位置や初期方向を設定し、当該仮想カメラが配置される仮想空間の座標軸(例えば、XYZ軸)を設定する。
次に、情報処理部31は、ゲーム装置10の実カメラからカメラ画像を取得し(ステップ52)、次のステップに処理を進める。例えば、情報処理部31は、現在選択されている撮像部(外側撮像部23または内側撮像部24)によって撮像されたカメラ画像を用いて、カメラ画像データDbを更新する。
次に、情報処理部31は、上記ステップ52で取得したカメラ画像をレンダリングする処理を行い(ステップ53)、次のステップに処理を進める。例えば、情報処理部31は、上記ステップ52で取得したカメラ画像を用いて実世界画像データDcを更新し、レンダリングされた画像を用いてカメラ画像のレンダリング画像データDk1を更新する。以下、図15および図16を用いてカメラ画像をレンダリングする処理例について説明する。
本実施形態においては、図15に示すように、ゲーム装置10の実カメラから得られたカメラ画像をテクスチャに設定し、当該テクスチャがマッピングされた平面ポリゴンを生成する。そして、仮想カメラC1から、平行投影で上記平面ポリゴンをレンダリングした画像を実世界画像として設定する。ここで、上側LCD22の表示画面の中心に仮想カメラC1が配置されるとともに、上側LCD22の表示画面全面に、ゲーム装置10の実カメラから得られたカメラ画像全面を表示する場合の実世界画像生成方法の一例について説明する。
まず、上記平面ポリゴンを配置する仮想空間の座標の1単位に対して、iピクセルのテクスチャをマッピングする平面ポリゴンを考える。この場合、上記座標の1単位×1単位の領域に対して、iピクセル×iピクセルのテクスチャがマッピングされることになる。そして、上側LCD22の表示画面が横Wdot×縦Hdotであり、Wdot×Hdotの表示画面全面に上記カメラ画像のテクスチャ全面を対応させて、当該表示画面上の1dotと当該テクスチャの1ピクセルとが対応するように平面ポリゴンを配置するためには、図16に示すように上記座標を定めればよい。すなわち、上記カメラ画像のテクスチャが主面全面にマッピングされた平面ポリゴンの幅がW/i座標分となり、平面ポリゴンの縦がH/i座標分となるように、当該平面ポリゴンを配置する仮想空間のXY座標を設定する。そして、上記テクスチャがマッピングされた平面ポリゴンの主面中心を仮想空間のXY座標の原点に一致させ、当該平面ポリゴンの横方向がX軸方向(右方向がX軸正方向)となり、当該平面ポリゴンの縦方向がY軸方向(上方向がY軸正方向)となるように当該平面ポリゴンを配置する。この場合、上記テクスチャがマッピングされた平面ポリゴンの主面における右上角位置が(X,Y)=(W/2i,H/2i)に配置され、右下角位置が(X,Y)=(W/2i,−H/2i)に配置され、左上角位置が(X,Y)=(−W/2i,H/2i)に配置され、左下角位置が(X,Y)=(−W/2i,−H/2i)に配置されることになる。このように表示画面上の1dotとカメラ画像(テクスチャ)の1ピクセルとが対応するように、仮想空間の座標に配置された平面ポリゴンを平行投影でレンダリングすることによって、ゲーム装置10の実カメラから得られたカメラ画像に対応する実世界画像が生成される。
図12に戻り、情報処理部31は、操作データを取得し(ステップ54)、次のステップに処理を進める。例えば、情報処理部31は、操作ボタン14やアナログスティック15を操作したことを示すデータを取得して、操作子データDa1を更新する。また、情報処理部31は、角速度センサ40によって検出された角速度を示す角速度データを取得して、角速度データDa2を更新する。
次に、情報処理部31は、敵オブジェクトに関する処理を行い(ステップ55)、次のステップに処理を進める。以下、図13を参照して、敵オブジェクト処理について説明する。
図13において、情報処理部31は、敵オブジェクトEOが出現する条件を満たしているか否かを判断する(ステップ72)。例えば、敵オブジェクトEOが出現する条件は、所定時間毎に敵オブジェクトEOが出現してもいいし、敵オブジェクトEOが仮想世界から消滅したことに応じて新たな敵オブジェクトEOが出現してもいいし、カメラ画像内で所定の物体が識別された場合に敵オブジェクトEOが出現してもいいし、ランダムのタイミングで敵オブジェクトEOを出現させてもよい。そして、情報処理部31は、敵オブジェクトEOが出現する条件を満たしている場合、次のステップ73に処理を進める。一方、情報処理部31は、敵オブジェクトEOが出現する条件を満たしていない場合、次のステップ77に処理を進める。
ステップ73において、情報処理部31は、上記ステップ52で取得したカメラ画像に対する切り取り範囲を決定して、次のステップに処理を進める。例えば、情報処理部31は、カメラ画像データDbに格納されているカメラ画像に対して、任意の範囲(例えば、矩形範囲)を切り取り範囲に設定し、当該切り取り範囲内のカメラ画像を示すデータを用いて切り取り範囲データDdを更新する。
なお、上記ステップ73で決定される切り取り範囲は、上記ステップ52で取得したカメラ画像に対して抽出される境界に沿って切り取り範囲を設定してもかまわない。例えば、上記カメラ画像に対して画像分析を行って、当該画像内における色と色との境界や濃度の差が閾値以上となる境界等を抽出し、抽出された境界の少なくとも一部を用いて上記切り取り範囲を設定する。
次に、情報処理部31は、上記ステップ73で決定した切り取り範囲内のカメラ画像を、敵オブジェクトEOのテクスチャに設定し(ステップ74)、次のステップに処理を進める。例えば、情報処理部31は、切り取り範囲データDdが示す切り取り範囲内のカメラ画像を敵オブジェクトEOのテクスチャに設定し、当該設定されたテクスチャを用いてテクスチャデータDe1を更新する。
次に、情報処理部31は、上記ステップ73で決定した切り取り範囲に応じた敵オブジェクトEOおよびマスクオブジェクトMOを設定し(ステップ75)、次のステップに処理を進める。例えば、情報処理部31は、切り取り範囲データDdが示す切り取り範囲に応じて、敵オブジェクトEOに対応する平面ポリゴンのサイズおよび形状を設定し、当該設定されたパラメータを用いて敵オブジェクトデータDeを更新する。また、情報処理部31は、切り取り範囲データDdが示す切り取り範囲に応じて、マスクオブジェクトMOに対応する平面ポリゴンのサイズおよび形状を設定し、当該平面ポリゴンを塗りつぶす色を所定の色(例えば、黒)や上記ステップ52で取得したカメラ画像における当該切り取り範囲に隣接する周辺のいずれかの色に設定して、当該設定されたパラメータを用いてマスクオブジェクトデータDfを更新する。
なお、敵オブジェクトEOに対応するポリゴンは、平面ポリゴン以外の形状の立体ポリゴンでもかまわない。例えば、敵オブジェクトEOに対応するポリゴンは、所定の厚さを有する平板ポリゴンや予め定められた形状のポリゴン(例えば、ミサイル等の武器形状を有するポリゴン)であってもかまわない。また、敵オブジェクトEOに対応するポリゴンは、球体などの曲面を有するポリゴンであってもよい。
次に、情報処理部31は、新たに敵オブジェクトEOおよびマスクオブジェクトMOを仮想空間に配置して(ステップ76)、次のステップ77に処理を進める。例えば、情報処理部31は、上記カメラ画像のテクスチャが主面全面にマッピングされた平面ポリゴン(図16参照)における切り取り範囲に重ね合わされて透視投影される位置に、敵オブジェクトEOおよびマスクオブジェクトMOを配置し、当該配置位置を用いて敵オブジェクトデータDeおよびマスクオブジェクトデータDfを更新する。以下、図17および図18を用いて、敵オブジェクトEOおよびマスクオブジェクトMOを仮想空間に配置する例について説明する。
本実施形態においては、図17に示すように、仮想カメラC2から、透視投影で敵オブジェクトEOおよびマスクオブジェクトMOをレンダリングした画像を仮想世界画像として生成する。ここで、敵オブジェクトEOが上側LCD22に表示されたカメラ画像から抜け出るように表現し、当該抜け出た跡にマスクオブジェクトMOを貼り付けるためには、上記カメラ画像のテクスチャが主面全面にマッピングされた平面ポリゴン(図16参照)における切り取り範囲に、敵オブジェクトEOやマスクオブジェクトMOを重ね合わせて透視投影する必要がある。
原点から(X,Y,Z)=(0,0,−1)方向に敵オブジェクトEOおよびマスクオブジェクトMOを透視投影することを考える。この場合、図18に示すZ=Z0の位置にオブジェクトを配置すれば、当該オブジェクトにおけるテクスチャ1ピクセルあたりの表示画面内の大きさが、当該表示画面の1dotに相当することになる。ここで、Z=Z0の位置は、敵オブジェクトEOおよびマスクオブジェクトMOを透視投影する仮想カメラC2のY軸方向の画角をθとした場合に、仮想カメラC2の注視点からY軸正方向への表示範囲の長さがH/2iとなる位置である。なお、上述したように、Hは上側LCD22の表示画面における縦のドット数であり、iは仮想空間の座標の1単位に対してマッピングするテクスチャのピクセル数である。そして、仮想カメラC2の中心からZ=Z0の位置までの距離をD(D>0)とすると、以下の数式が成立する。
tanθ=(H/2i)/D=H/2Di
したがって、敵オブジェクトEOやマスクオブジェクトMOを透視投影して仮想世界画像を生成する場合、当該仮想世界画像を生成する仮想カメラC2の設定を
Y軸方向の画角θ=tan-1(H/2Di)
アスペクト比=W:H
とする。そして、マスクオブジェクトMOや上側LCD22に表示されたカメラ画像から抜け出る時点の敵オブジェクトEOを表す大きさw×hの平面ポリゴンを、仮想カメラC2からのビュー座標(X0,Y0,Z0)に配置すると、図16に示した座標上における位置(X0,Y0)に大きさw×hで配置されて表示される。なお、マスクオブジェクトMOおよび敵オブジェクトEOを奥行方向に対して同じ位置に配置することによって、両者の表示が不安定になる場合は、マスクオブジェクトMOの奥行位置に対して敵オブジェクトEOの奥行位置を少し前(仮想カメラC2側)に設定してもかまわない。
図13に戻り、ステップ77において、情報処理部31は、仮想空間に配置されている敵オブジェクトEOを移動させ、次のステップに処理を進める。一例として、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの位置を、仮想カメラC2の方向へ所定距離だけ近づけて更新し、更新後の敵オブジェクトEOの位置を用いて敵オブジェクトデータDeを更新する。他の例として、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの位置を、敵オブジェクトEOに対して定められた移動方向および移動速度に基づいて更新し、更新後の敵オブジェクトEOの位置を用いて敵オブジェクトデータDeを更新する。また、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの配置方向を、所定の方向に所定の角度だけ更新し、更新後の敵オブジェクトEOの配置角度を用いて敵オブジェクトデータDeを更新する。
次に、情報処理部31は、敵オブジェクトEOが仮想カメラの位置まで到達したか否かを判断する(ステップ78)。例えば、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの位置を用いて、敵オブジェクトEOを透視投影する仮想カメラC2の位置に敵オブジェクトEOの位置が到達したか否かを判断する。そして、情報処理部31は、敵オブジェクトEOが仮想カメラの位置まで到達した場合、次のステップ79に処理を進める。一方、情報処理部31は、敵オブジェクトEOが仮想カメラの位置まで到達していない場合、当該サブルーチンによる処理を終了する。
ステップ79において、情報処理部31は、減点処理を行って、当該サブルーチンによる処理を終了する。例えば、上記減点処理においては、情報処理部31は、得点データDhが示すゲームの得点を所定数だけ減点し、減点後の得点を用いて得点データDhを更新する。また、上記減点処理においては、情報処理部31は、上記仮想カメラの位置まで到達した敵オブジェクトEOを仮想空間から消滅させる処理(例えば、仮想カメラの位置まで到達した敵オブジェクトEOに関する敵オブジェクトデータDeを初期化し、当該敵オブジェクトEOが仮想空間に存在しない状態にする)を行う。なお、上記減点処理において、仮想カメラの位置まで到達した敵オブジェクトEOが出現した位置に貼り付けられているマスクオブジェクトMOについては、仮想空間内に配置したままでもいいし、当該敵オブジェクトEOを消滅させる際に同時に消滅させてもかまわない。また、敵オブジェクトEOがマスクオブジェクトMOの位置まで戻るように移動表示した後、マスクオブジェクトMOを消滅させてもよい。
図12に戻り、上記ステップ55における敵オブジェクトに関する処理の後、情報処理部31は、弾オブジェクトに関する処理を行い(ステップ56)、次のステップに処理を進める。以下、図14を参照して、弾オブジェクト処理について説明する。
図14において、情報処理部31は、設定されている移動速度ベクトルに応じて、仮想空間内で弾オブジェクトBOを移動させ(ステップ81)、次のステップに処理を進める。例えば、情報処理部31は、弾オブジェクトデータDgに設定されている弾オブジェクトBOの位置および移動速度ベクトルに応じて、弾オブジェクトBOの位置を移動速度ベクトルが示す方向へ移動速度ベクトルが示す速度で、仮想空間内を移動させる。そして、情報処理部31は、移動後の弾オブジェクトBOの位置を用いて、弾オブジェクトデータDgを更新する。
次に、情報処理部31は、ゲーム装置10のユーザによって発射操作が行われたか否かを判断する(ステップ82)。例えば、情報処理部31は、操作子データDa1を参照して、ユーザが所定の発射操作(例えば、ボタン14B(Aボタン)の押下)を行ったか否かを判断する。そして、情報処理部31は、発射操作が行われた場合、次のステップ83に処理を進める。一方、情報処理部31は、発射操作が行われていない場合、次のステップ84に処理を進める。
ステップ83において、情報処理部31は、発射操作に応じて、仮想空間における仮想カメラの位置に弾オブジェクトBOを配置し、当該弾オブジェクトBOに対する移動速度ベクトルを設定して、次のステップ84に処理を進める。例えば、情報処理部31は、敵オブジェクトEOやマスクオブジェクトMOを透視投影する仮想カメラの位置に弾オブジェクトBOを新たに配置し、当該配置された弾オブジェクトBOの位置を用いて、弾オブジェクトデータDgを更新する。また、情報処理部31は、上記仮想カメラの位置から当該仮想カメラの注視点への方向に向かう所定サイズのベクトルを設定し、当該ベクトルを上記新たに配置した弾オブジェクトBOの移動速度ベクトルとして弾オブジェクトデータDgを更新する。
ステップ84において、情報処理部31は、敵オブジェクトEOと弾オブジェクトBOとが仮想空間内で接触したか否かを判断する。例えば、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの位置と、弾オブジェクトデータDgが示す弾オブジェクトBOの位置とを用いて、敵オブジェクトEOと弾オブジェクトBOとが仮想空間内で接触したか否かを判断する。そして、情報処理部31は、敵オブジェクトEOと弾オブジェクトBOとが接触した場合、次のステップ85に処理を進める。一方、情報処理部31は、敵オブジェクトEOと弾オブジェクトBOとが接触していない場合、次のステップ86に処理を進める。
ステップ85において、情報処理部31は、加点処理を行って、次のステップ86に処理を進める。例えば、上記加点処理においては、情報処理部31は、得点データDhが示すゲームの得点を所定数だけ加点し、加点後の得点を用いて得点データDhを更新する。また、上記加点処理においては、情報処理部31は、上記ステップ84で接触したと判定された両者(すなわち、敵オブジェクトEOと弾オブジェクトBO)を仮想空間から消滅させる処理(例えば、弾オブジェクトBOと接触した敵オブジェクトEOおよび敵オブジェクトEOに接触した弾オブジェクトBOに関するそれぞれの敵オブジェクトデータDeおよび弾オブジェクトデータDgを初期化し、当該敵オブジェクトEOおよび弾オブジェクトBOが仮想空間に存在しない状態にする)を行う。なお、上記加点処理において、弾オブジェクトBOと接触した敵オブジェクトEOが出現した位置に貼り付けられているマスクオブジェクトMOについては、仮想空間内に配置したままでもいいし、当該敵オブジェクトEOを消滅させる際に同時に消滅させてもかまわない。
ステップ86において、情報処理部31は、弾オブジェクトBOが仮想空間における所定の位置まで到達したか否かを判断する。例えば、情報処理部31は、弾オブジェクトデータDgが示す弾オブジェクトBOの位置が、仮想カメラから見て上述したZ=Z0の位置に到達したか否かを判断する。そして、情報処理部31は、弾オブジェクトBOが所定の位置まで到達した場合、次のステップ87に処理を進める。一方、情報処理部31は、弾オブジェクトBOが所定の位置まで到達していない場合、当該サブルーチンによる処理を終了する。
ステップ87において、情報処理部31は、上記ステップ86で所定の位置に到達したと判定された弾オブジェクトBOを仮想空間から消滅させる処理を行い、当該サブルーチンによる処理を終了する。例えば、情報処理部31は、上記ステップ86で所定の位置に到達したと判定された弾オブジェクトBOを仮想空間から消滅させる処理(例えば、当該弾オブジェクトBOに関する弾オブジェクトデータDgを初期化し、当該弾オブジェクトBOが仮想空間に存在しない状態にする)を行う。
図12に戻り、上記ステップ56における弾オブジェクトに関する処理の後、情報処理部31は、ゲーム装置10の動きを算出して(ステップ57)、次のステップに処理を進める。一例として、情報処理部31は、角速度データDa2が示す角速度を用いて、ゲーム装置10の動き(例えば、ゲーム装置10に設けられた実カメラにおける撮像方向の変化)を算出し、当該動きを用いて動きデータDhを更新する。具体的には、ユーザが実空間においてゲーム装置10に設けられた実カメラの撮像方向を変化させた場合、ゲーム装置10全体の向きも変化するため、ゲーム装置10に当該変化に応じた角速度が生じる。そして、ゲーム装置10に生じた角速度を角速度センサ40が検出することによって、当該角速度を示すデータが角速度データDa2に格納される。したがって、情報処理部31は、角速度データDa2が示す角速度を用いることによって、ゲーム装置10に設けられた実カメラの撮像方向が変化した方向や変化した量(角度)をゲーム装置10の動きとして算出することが可能となる。
次に、情報処理部31は、ゲーム装置10の動きに応じて仮想空間における仮想カメラの位置や方向を変更し(ステップ58)、次のステップに処理を進める。例えば、情報処理部31は、実空間におけるゲーム装置10の実カメラの撮像方向変化と同じ変化を、仮想空間における仮想カメラに与え、変化後の仮想カメラの位置や方向を用いて仮想カメラデータDjを更新する。一例として、実空間におけるゲーム装置10の実カメラの撮像方向が左へA°変化(y軸を中心にy軸負方向に見てx軸およびz軸が左回りにA°回転するようにゲーム装置10が動く変化)した場合、仮想空間における仮想カメラの方向も左へA°変化(仮想カメラからのビュー座標において、Y軸を中心にY軸負方向に見てX軸およびZ軸が左回りにA°回転する仮想カメラの方向変化)させる。これによって、実空間内に配置されているように表示されている敵オブジェクトEOやマスク画像MIは、実空間内におけるゲーム装置10の方向や位置が変わっても実空間内における同じ位置に配置されているように表示される(図9および図10参照)。
次に、情報処理部31は、仮想空間をレンダリングする処理を行い(ステップ59)、次のステップに処理を進める。例えば、情報処理部31は、敵オブジェクトEO、マスクオブジェクトMO、および弾オブジェクトBOが配置されている仮想空間をレンダリングした画像を用いて仮想空間のレンダリング画像データDk2を更新する。例えば、図17に示すように、仮想空間には敵オブジェクトEO、マスクオブジェクトMO、および弾オブジェクトBOが、それぞれ敵オブジェクトデータDe、マスクオブジェクトデータDf、および弾オブジェクトデータDgが示す位置や方向に応じて配置されている。また、仮想空間には、仮想空間をレンダリングするための仮想カメラC2が、仮想カメラデータDjが示す位置および方向に応じて配置されている。ここで、上述したように敵オブジェクトEOは、ゲーム装置10の実カメラから得られたカメラ画像の一部(ステップ74で設定されたテクスチャ)がテクスチャとしてマッピングされた平面ポリゴンである。また、マスクオブジェクトMOは、敵オブジェクトEOが上側LCD22に表示されたカメラ画像から抜け出た跡に貼り付けられるように配置された平面ポリゴンである。そして、仮想カメラC2から、仮想空間の配置された敵オブジェクトEO、マスクオブジェクトMO、および弾オブジェクトBOを透視投影でレンダリングすることによって仮想世界画像を生成して、仮想空間のレンダリング画像データDk2を更新する。
次に、情報処理部31は、実世界画像と仮想世界画像とを合成した表示画像を生成し、当該表示画像を上側LCD22に表示して(ステップ60)、次のステップに処理を進める。例えば、情報処理部31は、カメラ画像のレンダリング画像データDk1が示す実世界画像および仮想空間のレンダリング画像データDk2が示す仮想世界画像を取得して、仮想世界画像を優先して実世界画像上に当該仮想世界画像を合成することによって表示画像を生成し、当該表示画像を用いて表示画像データDlを更新する。また、情報処理部31のCPU311は、表示画像データDlが示す表示画像をVRAM313に格納する。そして、情報処理部31のGPU312が、VRAM313に描画された表示画像を上側LCD22に出力することによって、上側LCD22に当該表示画像が表示される。なお、情報処理部31は、仮想空間のレンダリング画像データDk2に仮想世界画像が格納されていない場合、カメラ画像のレンダリング画像データDk1が示す実世界画像をそのまま上記表示画像とすればよい。
次に、情報処理部31は、ゲームを終了するか否かを判断する(ステップ61)。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、ユーザがゲームを終了する操作を行ったこと等がある。情報処理部31は、ゲームを終了しない場合、上記ステップ52に戻って処理を繰り返す。一方、情報処理部31は、ゲームを終了する場合、当該フローチャートによる処理を終了する。
このように、上述した実施形態に係る画像処理では、実カメラから得られた実世界画像に、当該実世界画像から抜け出たように表現されたオブジェクトを示す仮想世界画像が合成されて表示されるため、当該オブジェクトが実空間内に存在しているような新たな画像を表示することができる。
(第2の実施形態)
次に、本発明の第2の実施形態に係る画像処理プログラムを実行する画像処理装置について説明する。上述した第1の実施形態では、ゲーム装置10の実カメラから得られたカメラ画像から任意の範囲が切り取られ、当該範囲から抜け出た敵オブジェクトEOが移動するが、第2の実施形態では当該カメラ画像から識別された所定の物体が切り取られて敵オブジェクトEOとなる。なお、第2の実施形態に係る画像処理プログラムを実行する画像処理装置のハードウエア構成については、第1の実施形態で用いたハードウエア構成と同様であるため、同じ構成要素には同一の参照符号を付して詳細な説明を省略する。
ゲーム装置10で実行される当該実施形態に係る画像処理プログラムによる具体的な画像処理動作を説明する前に、図19Aおよび図19Bを参照して当該画像処理動作によって上側LCD22に表示される表示形態例について説明する。なお、図19Aは、上側LCD22に表示されたカメラ画像CIの一例を示す図である。図19Bは、上側LCD22に表示されたカメラ画像CIから敵オブジェクトEOが出現して表示された一例を示す図である。なお、説明を簡単にするために、上側LCD22には、外側撮像部23および内側撮像部24のいずれかから取得したカメラ画像CIに基づいた、実世界の平面画像(上述した立体視可能な画像とは反対の意味での平面視の画像)が表示される例を用いる。
図19Aにおいて、上側LCD22には、ゲーム装置10に内蔵する実カメラ(例えば、外側撮像部23)によって撮像された実世界画像であるカメラ画像CIが表示されている。例えば、上側LCD22には、ゲーム装置10に内蔵する実カメラで撮像されたリアルタイムの実世界画像(動画像)が表示される。
ゲーム装置10は、実カメラで撮像されたカメラ画像CIに対して所定の顔認識処理を逐次に行い、カメラ画像CI内における人物の顔の有無を判断している。そして、ゲーム装置10は、上記顔認識処理において、カメラ画像CI内に人物の顔が存在すると識別できた場合、敵オブジェクトEOが出現する条件を満たしたとしてカメラ画像CI内から顔と識別した部分が切り取られる。
図19Bに示すように、敵オブジェクトEOは、カメラ画像CIから切り取られた上記顔と識別した部分の画像が主面に貼り付けられたボード状の物体となって移動する。例えば、敵オブジェクトEOは、カメラ画像CIから人物の顔が切り取られて抜け出した平板物体となって、カメラ画像CIを撮像している実カメラ、すなわちゲーム装置10を操作しているユーザの方へ向かって実空間内を移動しているように上側LCD22に表示される。つまり、ユーザ自身が撮像している実世界の撮像画像における人物の顔が敵オブジェクトEOとなって撮像者、すなわちユーザに向かってくるような画像が上側LCD22に表示される。例えば、カメラ画像CIから識別された顔の画像をテクスチャとしてマッピングされた平面ポリゴン(敵オブジェクトEO)を仮想空間に配置し、仮想カメラから敵オブジェクトEOを見た仮想空間の画像(仮想世界画像)を、カメラ画像CIから得られる実世界画像に合成することによって、敵オブジェクトEOが実空間内に配置されているように上側LCD22に表示される。そして、ゲーム装置10を用いた攻撃操作(例えば、ボタン14B(Aボタン)の押下)に応じて、所定の方向(例えば、カメラ画像CIを撮像している実カメラの視線方向であり、仮想カメラの視線方向)に弾オブジェクトBOが発射され、敵オブジェクトEOがユーザの攻撃対象となる。
また、カメラ画像CIにおける敵オブジェクトEOが抜け出した跡には、所定のマスク画像MIが表示される。第1の例として、マスク画像MIは、敵オブジェクトEOが抜け出した人物の顔の範囲を、所定の色で塗りつぶして覆う画像で設定される。第2の例として、マスク画像MIは、敵オブジェクトEOが抜け出した人物の顔の範囲を、当該範囲と隣接する周辺に表示されているいずれかの色で塗りつぶして覆う画像で設定される。第3の例として、マスク画像MIは、予め定められた画像(例えば、人間頭部の骸骨を示す画像)で設定され、敵オブジェクトEOが抜け出した人物の顔の範囲が当該画像に置換される。例えば、上記所定の色、上記周辺の色で塗りつぶされた画像や所定の画像を示す平面ポリゴン(マスクオブジェクトMO)を上記切り取り範囲の位置に対応する上記仮想空間内の位置に配置し、仮想カメラからマスクオブジェクトMOを見た仮想空間の画像(仮想世界画像)を、カメラ画像CIから得られる実世界画像に合成することによって、マスク画像MIが人物の顔の範囲を覆って配置されているように上側LCD22に表示される。
ここで、上述した第1の実施形態では、設定された敵オブジェクトEOのテクスチャは、敵オブジェクトEOが消滅するまで同じ静止画像が用いられている。一方、第2の実施形態では、カメラ画像CIとして撮像されている人物の顔の表情等が変化した場合、当該変化が敵オブジェクトEOのテクスチャに反映される。つまり、敵オブジェクトEOに貼り付けられている顔画像の表情は、ゲーム装置10の実カメラによって撮像されている人物の表情をリアルタイムに反映することが可能となる。しかしながら、第2の実施形態においても、敵オブジェクトEOの出現時の顔画像(静止画像)を継続的に(例えば、敵オブジェクトEOが消滅するまで)用いてもよい。この場合、後述するステップ112やステップ123で設定されるテクスチャ画像を保存しておいて、ステップ59で継続的に使用する。なお、ステップ112で設定されるテクスチャ画像を継続的に使用する場合、ステップ102の処理が不要となる。また、ステップ123で設定されるテクスチャ画像を継続的に使用する場合、ステップ102およびステップ112の処理が不要となる。また、実空間内においてゲーム装置10の方向や位置を変えることによって、ゲーム装置10で撮像される撮像範囲が変わるため、上側LCD22に表示されるカメラ画像CIも変化する。この場合、ゲーム装置10は、実空間内におけるゲーム装置10の動きに応じて、上記仮想空間内における上記仮想カメラの位置や方向を変化させる。これによって、実空間内に配置されているように表示されている敵オブジェクトEOやマスク画像MIは、実空間内におけるゲーム装置10の方向や位置が変わっても実空間内における同じ位置に配置されているように表示される。
なお、第1の実施形態と同様に、マスクオブジェクトMOが配置された仮想世界画像を実世界画像に合成することによって、上記切り取り範囲を覆ってマスク画像MIが表示される例を用いるが、他の方法によって上記切り取り範囲を覆うようにマスク画像MIを表示してもかまわない。例えば、カメラ画像CIから得られる実世界画像における上記切り取り範囲を上記所定の色や上記周辺の色で塗りつぶしたり、所定の画像に置換したりすることによって、マスク画像MIを表示してもかまわない。上述したように、上記実世界画像は、一例として上記カメラ画像がテクスチャとしてマッピングされた平面ポリゴンを生成し、仮想カメラから平行投影で当該平面ポリゴンをレンダリングすることによって生成される。この場合、上記カメラ画像における上記切り取り範囲を上記所定の色や上記周辺の色で塗りつぶしたり所定の画像に置換した上記テクスチャを設定したり、上記テクスチャをマッピングした後に上記切り取り範囲を上記所定の色や上記周辺の色で塗りつぶした画像や所定の画像を貼り付けたりすることによって、上記切り取り範囲がマスク画像MIに置換された実世界画像を生成することができる。
次に、図20〜図23を参照して、第2の実施形態に係る画像処理プログラムを実行することによる具体的な処理動作について説明する。なお、図20は、当該画像処理プログラムを実行することによって行われる敵オブジェクト処理(図12のステップ55)の詳細な動作の一例を示すサブルーチンである。図21は、図20のステップ92で行われる出現済処理の詳細な動作の一例を示すサブルーチンである。図22は、図20のステップ94で行われる出現中処理の詳細な動作の一例を示すサブルーチンである。図23は、図20のステップ96で行われる未出現処理の詳細な動作の一例を示すサブルーチンである。なお、これらの処理を実行するためのプログラムは、ゲーム装置10に内蔵されるメモリ(例えば、データ保存用内部メモリ35)や外部メモリ45またはデータ保存用外部メモリ46に含まれており、ゲーム装置10の電源がオンになったときに、内蔵メモリから、または外部メモリI/F33やデータ保存用外部メモリI/F34を介して外部メモリ45またはデータ保存用外部メモリ46からメインメモリ32に読み出されて、CPU311によって実行される。なお、第2の実施形態に係る画像処理プログラムを実行することによる処理動作は、第1の実施形態に係る画像処理プログラムを実行することによる処理動作に対して、敵オブジェクト処理(図12のステップ55)が異なるだけである。したがって、以下の説明においては、第1の実施形態と異なる処理動作のみ説明し、他の処理動作については詳細な説明を省略する。また、第2の実施形態に係る画像処理プログラムを実行することに応じてメインメモリ32に記憶される各種データは、出現フラグデータがさらに記憶されることを除いて、第1の実施形態に係る画像処理プログラムを実行することに応じて記憶される各種データと同様である。なお、上記出現フラグデータは、現時点の敵オブジェクトEOの出現状況が「未出現」、「出現中」、および「出現済」の何れであるのかを表す出現フラグを示すデータであり、出現フラグは、上記ステップ51における初期設定において「未出現」に設定されている。
図20において、情報処理部31は、敵オブジェクトEOが出現済であるか否かを判断する(ステップ91)。例えば、情報処理部31は、出現フラグデータを参照して、出現フラグが「出現済」に設定されているか否かによって上記ステップ91における判定を行う。そして、情報処理部31は、敵オブジェクトEOが出現済である場合、次のステップ92に処理を進める。一方、情報処理部31は、敵オブジェクトEOが出現済でない場合、次のステップ93に処理を進める。
ステップ92において、情報処理部31は、出現済処理を行い、次のステップ93に処理を進める。以下、図21を参照して、情報処理部31が上記ステップ92で行う出現済処理について説明する。
図21において、情報処理部31は、カメラ画像データDbが示すカメラ画像に対して所定の顔認識処理を行って当該顔認識結果をメインメモリ32に格納し(ステップ101)、次のステップに処理を進める。ここで、上記顔認識処理は、図21で示すフローチャートによる処理とは別に独立して逐次上記カメラ画像を用いて情報処理部31が行ってもかまわない。この場合、情報処理部31は、上記カメラ画像から人物の顔が識別されたときに、上記ステップ101において顔認識結果を取得して当該顔認識結果をメインメモリ32に格納する。
次に、情報処理部31は、上記ステップ101における顔認識処理で識別された顔の画像(カメラ画像のうちの顔領域内の画像)を、敵オブジェクトEOのテクスチャに設定し(ステップ102)、次のステップに処理を進める。例えば、情報処理部31は、カメラ画像データDbが示すカメラ画像から、上記ステップ101における顔認識処理の顔認識結果が示す顔の範囲内の画像を敵オブジェクトEOのテクスチャに設定し、当該設定されたテクスチャを用いてテクスチャデータDe1を更新する。
次に、情報処理部31は、上記ステップ101における顔認識処理で識別された顔の画像の範囲に応じた敵オブジェクトEOおよびマスクオブジェクトMOを設定し(ステップ103)、次のステップに処理を進める。例えば、情報処理部31は、上記ステップ101における顔認識処理で識別された顔の画像の範囲に応じて、敵オブジェクトEOに対応するポリゴンの形状を設定し、当該設定されたパラメータを用いて敵オブジェクトデータDeを更新する。一例として、情報処理部31は、上記ステップ101における顔認識処理で識別された顔の画像の範囲が前回の処理の範囲に対して変化した場合、当該変化後の範囲の形状に合わせて敵オブジェクトEOに対応するポリゴンの形状を変化させる。また、情報処理部31は、上記顔の画像の範囲に応じて、マスクオブジェクトMOに対応する平面ポリゴンのサイズおよび形状を設定し、当該平面ポリゴンを塗りつぶす色を所定の色(例えば、黒)や上記ステップ52で取得したカメラ画像内の当該顔の画像における周辺の色に設定して、当該設定されたパラメータを用いてマスクオブジェクトデータDfを更新する。一例として、情報処理部31は、上記ステップ101における顔認識処理で識別された顔の画像の範囲が前回の処理の範囲に対して変化した場合、当該変化後の範囲の形状に合わせてマスクオブジェクトMOに対応する平面ポリゴンの形状を変化させる。
次に、情報処理部31は、マスクオブジェクトMOを仮想空間に配置して(ステップ104)、次のステップに処理を進める。例えば、情報処理部31は、上記カメラ画像のテクスチャが主面全面にマッピングされた平面ポリゴン(図16参照)における上記顔の画像の範囲に重ね合わされて透視投影される位置に、マスクオブジェクトMOを配置し、当該配置位置を用いてマスクオブジェクトデータDfを更新する。なお、マスクオブジェクトMOを仮想空間に配置する例については、図17および図18を用いて説明した配置例を同様であるため詳細な説明を省略する。
次に、情報処理部31は、仮想空間に配置されている敵オブジェクトEOを移動させ(ステップ105)、次のステップに処理を進める。一例として、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの位置を、仮想空間に配置された仮想カメラの方向へ所定距離だけ近づけて設定し、設定後の敵オブジェクトEOの位置を用いて敵オブジェクトデータDeを更新する。他の例として、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの位置を、敵オブジェクトEOに対して定められた移動方向および移動速度に基づいて更新し、更新後の敵オブジェクトEOの位置を用いて敵オブジェクトデータDeを更新する。また、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの配置方向を、所定の方向に所定の角度だけ更新し、更新後の敵オブジェクトEOの配置角度を用いて敵オブジェクトデータDeを更新する。
なお、上記ステップ105の処理において、上記ステップ101において識別された人物の顔の表情に応じて、敵オブジェクトEOをさらに動作させたり、ゲームの状況を変化させたりしてもかまわない。第1の例として、上記ステップ101において識別された人物の顔の表情が所定の表情(例えば、怒った表情)であると判別された場合、敵オブジェクトEOがユーザに向かって(すなわち、仮想カメラに向かって)所定の攻撃を行う動作を行う。第2の例として、上記ステップ101において識別された人物の顔の表情が所定の表情(例えば、目をつぶった表情)であると判別された場合、敵オブジェクトEOがユーザに向かって移動する速度を変化(例えば、移動速度を遅くする)させる。第3の例として、上記ステップ101において識別された人物の顔の表情が所定の表情(例えば、笑った表情)であると判別された場合、ゲームにおけるユーザの耐久度(ゲームオーバーとならずに、ゲーム装置10でゲームを続けることができる時間長さと関連するパラメータ)を所定量だけ上昇させる。
次に、情報処理部31は、敵オブジェクトEOが仮想カメラの位置まで到達したか否かを判断する(ステップ106)。例えば、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの位置を用いて、敵オブジェクトEOを透視投影する仮想カメラの位置に敵オブジェクトEOの位置が到達したか否かを判断する。そして、情報処理部31は、敵オブジェクトEOが仮想カメラの位置まで到達した場合、次のステップ107に処理を進める。一方、情報処理部31は、敵オブジェクトEOが仮想カメラの位置まで到達していない場合、当該サブルーチンによる処理を終了する。
ステップ107において、情報処理部31は、減点処理を行って、当該サブルーチンによる処理を終了する。例えば、上記減点処理においては、情報処理部31は、得点データDhが示すゲームの得点を所定数だけ減点し、減点後の得点を用いて得点データDhを更新する。また、上記減点処理においては、情報処理部31は、上記仮想カメラの位置まで到達した敵オブジェクトEOを仮想空間から消滅させる処理(例えば、仮想カメラの位置まで到達した敵オブジェクトEOに関する敵オブジェクトデータDeを初期化し、当該敵オブジェクトEOが仮想空間に存在しない状態にする)を行う。なお、上記減点処理において、仮想カメラの位置まで到達した敵オブジェクトEOが出現した位置に貼り付けられているマスクオブジェクトMOについては、仮想空間内に配置したままでもいいし、当該敵オブジェクトEOを消滅させる際に同時に消滅させてもかまわない。
図20に戻り、ステップ93において、情報処理部31は、敵オブジェクトEOが出現中であるか否かを判断する。例えば、情報処理部31は、出現フラグデータを参照して、出現フラグが「出現中」に設定されているか否かによって上記ステップ93における判定を行う。そして、情報処理部31は、敵オブジェクトEOが出現中である場合、次のステップ94に処理を進める。一方、情報処理部31は、敵オブジェクトEOが出現中でない場合、次のステップ95に処理を進める。
ステップ94において、情報処理部31は、出現中処理を行い、次のステップ95に処理を進める。以下、図22を参照して、情報処理部31が上記ステップ94で行う出現中処理について説明する。
図22において、情報処理部31は、カメラ画像データDbが示すカメラ画像に対して所定の顔認識処理を行って当該顔認識結果をメインメモリ32に格納し(ステップ111)、次のステップに処理を進める。ここで、上記顔認識処理は、図22で示すフローチャートによる処理とは別に独立して逐次上記カメラ画像を用いて情報処理部31が行ってもかまわない。この場合、情報処理部31は、上記カメラ画像から人物の顔が識別されたときに、上記ステップ111において顔認識結果を取得して当該顔認識結果をメインメモリ32に格納する。
次に、情報処理部31は、上記ステップ111における顔認識処理で識別された顔の画像を、敵オブジェクトEOのテクスチャに設定し(ステップ112)、次のステップに処理を進める。例えば、情報処理部31は、カメラ画像データDbが示すカメラ画像から、上記ステップ111における顔認識処理の顔認識結果が示す顔の範囲内の画像を敵オブジェクトEOのテクスチャに設定し、当該設定されたテクスチャを用いてテクスチャデータDe1を更新する。
次に、情報処理部31は、上記ステップ111における顔認識処理で識別された顔の画像の範囲に応じたマスクオブジェクトMOを設定し(ステップ113)、次のステップに処理を進める。例えば、情報処理部31は、上記ステップ111における顔認識処理で識別された顔の画像の範囲に応じて、マスクオブジェクトMOに対応する平面ポリゴンのサイズおよび形状を設定し、当該平面ポリゴンを塗りつぶす色を所定の色(例えば、黒)や上記ステップ52で取得したカメラ画像内の当該顔の画像における周辺の色に設定して、当該設定されたパラメータを用いてマスクオブジェクトデータDfを更新する。
次に、情報処理部31は、上記ステップ111における顔認識処理で識別された顔の画像の範囲に応じて、平面ポリゴンから所定の立体ポリゴンまで変化させるモーフィング処理を行って敵オブジェクトEOを設定し(ステップ114)、次のステップに処理を進める。例えば、情報処理部31は、敵オブジェクトデータDeが示す敵オブジェクトEOの平面ポリゴンを、上記ステップ111における顔認識処理で識別された顔の画像の範囲に応じたサイズおよび形状に変更し、さらに変更された平面ポリゴンの厚みを所定の立体ポリゴンとなるように所定量増加させるモーフィング処理を行って、敵オブジェクトデータDeを更新する。図24に示すように、上記モーフィング処理によって、実世界画像から識別された顔画像から敵オブジェクトEOが出現する際、敵オブジェクトEOは、当該顔画像上において視点に向かって徐々に平面から立体になるように表現される。
なお、上記モーフィング処理によって平面ポリゴンから変化させる立体ポリゴンは、様々な形状のポリゴンが考えられる。第1の例として、上記モーフィング処理によって平面ポリゴンから所定の厚さを有する平板ポリゴンに変化させて敵オブジェクトEOを生成する。この場合、カメラ画像に対して顔認識処理で識別された顔の画像がテクスチャとなって、上記平板ポリゴンの主面にマッピングされる。第2の例として、上記モーフィング処理によって平面ポリゴンから予め定められたキャラクタの頭部形状を有する立体ポリゴンに変化させて敵オブジェクトEOを生成する。この場合、カメラ画像に対して顔認識処理で識別された顔の画像がテクスチャとなって、上記頭部形状のポリゴンの顔面にマッピングされる。第3の例として、上記モーフィング処理によって平面ポリゴンから予め定められた武器形状を有する立体ポリゴン(例えば、ミサイル形状のポリゴン)に変化させて敵オブジェクトEOを生成する。この場合、カメラ画像に対して顔認識処理で識別された顔の画像がテクスチャとなって、上記武器形状のポリゴンの一部にマッピングされる(例えば、ミサイル形状のポリゴンに対して当該ミサイルの先端にマッピングされる)。
次に、情報処理部31は、敵オブジェクトEOに対するモーフィング処理が最終段階となったか否かを判断する(ステップ115)。そして、情報処理部31は、敵オブジェクトEOに対するモーフィング処理が最終段階である場合、次のステップ116に処理を進める。一方、情報処理部31は、敵オブジェクトEOに対するモーフィング処理がまだ最終段階に到達していない場合、次のステップ117に処理を進める。例えば、情報処理部31は、敵オブジェクトEOに対応する平面ポリゴンの厚さが、上記ステップ114のモーフィング処理を繰り返すことによって所定の厚さに到達した場合、敵オブジェクトEOに対するモーフィング処理が最終段階であると判定する。
ステップ116において、情報処理部31は、出現フラグを「出現済」に設定して出現フラグデータを更新し、次のステップ117に処理を進める。
ステップ117において、情報処理部31は、敵オブジェクトEOおよびマスクオブジェクトMOを仮想空間に配置して、当該サブルーチンによる処理を終了する。例えば、情報処理部31は、上記カメラ画像のテクスチャが主面全面にマッピングされた平面ポリゴン(図16参照)における上記顔の画像の範囲に重ね合わされて透視投影される位置に、マスクオブジェクトMOを配置し、当該配置位置を用いてマスクオブジェクトデータDfを更新する。また、情報処理部31は、上記カメラ画像のテクスチャがマッピングされた平面ポリゴンの主面から仮想カメラ側に突出して上記顔の画像の範囲上に配置されて透視投影される位置に、上記ステップ114でモーフィング処理された敵オブジェクトEOを配置し、当該配置位置を用いて敵オブジェクトデータDeを更新する。
図20に戻り、ステップ95において、情報処理部31は、敵オブジェクトEOが未出現であるか否かを判断する。例えば、情報処理部31は、出現フラグデータを参照して、出現フラグが「未出現」に設定されているか否かによって上記ステップ95における判定を行う。そして、情報処理部31は、敵オブジェクトEOが未出現である場合、次のステップ96に処理を進める。一方、情報処理部31は、敵オブジェクトEOが未出現でない場合、当該サブルーチンによる処理を終了する。
ステップ96において、情報処理部31は、未出現処理を行い、当該サブルーチンによる処理を終了する。以下、図23を参照して、情報処理部31が上記ステップ96で行う未出現処理について説明する。
図23において、情報処理部31は、カメラ画像データDbが示すカメラ画像に対して所定の顔認識処理を行って当該顔認識結果をメインメモリ32に格納し(ステップ121)、次のステップに処理を進める。ここで、上記顔認識処理は、図23で示すフローチャートによる処理とは別に独立して逐次上記カメラ画像を用いて情報処理部31が行ってもかまわない。この場合、情報処理部31は、上記カメラ画像から人物の顔が識別されたときに、上記ステップ121において顔認識結果を取得して当該顔認識結果をメインメモリ32に格納する。
次に、情報処理部31は、敵オブジェクトEOが出現する条件を満たしているか否かを判断する(ステップ122)。例えば、敵オブジェクトEOが出現する条件は、上記ステップ121においてカメラ画像から人物の顔が識別されていることを必須条件として、所定時間毎に敵オブジェクトEOが出現してもいいし、敵オブジェクトEOが仮想世界から消滅したことに応じて新たな敵オブジェクトEOが出現してもいいし、ランダムのタイミングで敵オブジェクトEOを出現させてもよい。そして、情報処理部31は、敵オブジェクトEOが出現する条件を満たしている場合、次のステップ123に処理を進める。一方、情報処理部31は、敵オブジェクトEOが出現する条件を満たしていない場合、当該サブルーチンによる処理を終了する。
ステップ123において、情報処理部31は、上記ステップ121における顔認識処理で識別された顔の画像を、敵オブジェクトEOのテクスチャに設定し、次のステップに処理を進める。例えば、情報処理部31は、カメラ画像データDbが示すカメラ画像から、上記ステップ121における顔認識処理の顔認識結果が示す顔の範囲内の画像を敵オブジェクトEOのテクスチャに設定し、当該設定されたテクスチャを用いてテクスチャデータDe1を更新する。
次に、情報処理部31は、上記ステップ121における顔認識処理で識別された顔の画像の範囲に応じた敵オブジェクトEOおよびマスクオブジェクトMOを設定し(ステップ124)、次のステップに処理を進める。例えば、情報処理部31は、上記ステップ121における顔認識処理で識別された顔の画像の範囲に応じて、敵オブジェクトEOに対応する平面ポリゴンのサイズおよび形状を設定し、当該設定されたパラメータを用いて敵オブジェクトデータDeを更新する。また、情報処理部31は、上記顔の画像の範囲に応じて、マスクオブジェクトMOに対応する平面ポリゴンのサイズおよび形状を設定し、当該平面ポリゴンを塗りつぶす色を所定の色(例えば、黒)や上記ステップ52で取得したカメラ画像内の当該顔の画像における周辺の色に設定して、当該設定されたパラメータを用いてマスクオブジェクトデータDfを更新する。
次に、情報処理部31は、新たに敵オブジェクトEOおよびマスクオブジェクトMOを仮想空間に配置して(ステップ125)、次のステップに処理を進める。例えば、情報処理部31は、上記カメラ画像のテクスチャが主面全面にマッピングされた平面ポリゴン(図16参照)における上記顔の画像の範囲に重ね合わされて透視投影される位置に、敵オブジェクトEOおよびマスクオブジェクトMOを配置し、当該配置位置を用いて敵オブジェクトデータDeおよびマスクオブジェクトデータDfを更新する。なお、敵オブジェクトEOおよびマスクオブジェクトMOを仮想空間に配置する例については、図17および図18を用いて説明した配置例を同様であるため詳細な説明を省略する。
次に、情報処理部31は、出現フラグを「出現中」に設定して出現フラグデータを更新し(ステップ126)、当該サブルーチンによる処理を終了する。
このように、上述した実施形態に係る画像処理では、実カメラから得られた実世界画像に、当該実世界画像内の顔画像が抜け出たように表現されたオブジェクトを示す仮想世界画像が合成されて表示されるため、当該オブジェクトが実空間内に存在しているような新たな画像を表示することができる。
なお、上述した説明では、ゲーム装置10の実カメラで撮像されたカメラ画像から識別されて敵オブジェクトEOとなる所定の物体の一例として人物の顔を用いたが、上記カメラ画像を分析して所定の条件を満たす当該カメラ画像内の領域を識別し、当該識別された領域を敵オブジェクトEOのテクスチャに設定してもかまわない。例えば、上記カメラ画像を画像分析して境界や輪郭等を抽出することによって形状認識可能な他の物を当該カメラ画像から識別し、当該識別された物を敵オブジェクトEOのテクスチャに設定してもかまわない。例えば、図25Aに示すように、上記カメラ画像内に撮像されている机を識別して切り取り、当該机を示す立体オブジェクトを敵オブジェクトEOとしてもかまわない。一例として、カメラ画像内において茶色の矩形形状の物体を識別し、当該物体が上記カメラ画像内に存在すれば当該カメラ画像内に机が識別されたと判定する。そして、机と識別された物体を上記カメラ画像から切り取って敵オブジェクトEOとして設定する。この場合、図25Bに示すように、上記カメラ画像内で机として認識された物体をテクスチャとし、予め定められた机形状の立体ポリゴンに当該テクスチャをマッピングすることによって敵オブジェクトEOを設定する。また、上記カメラ画像内で机として認識された物体の画像を切り取った跡に、マスク画像MIを貼り付ける。そして、机形状の敵オブジェクトEOをユーザに向かって移動させることによって、ユーザの攻撃対象とする。なお、図25Aにおける机の天板を茶色の矩形形状として認識して、カメラ画像のうちの天板領域内の画像をテクスチャとして、平板ポリゴンに貼り付けてもよい。
上記カメラ画像から識別して敵オブジェクトEOとする物体は、他にも考えられる。第1の例として、上記カメラ画像から黒色の枠形状の物体が識別された場合、当該物体をテレビジョンであると判定してテレビジョンと識別された物体を上記カメラ画像から切り取って敵オブジェクトEOとして設定し、切り取られた画像を当該敵オブジェクトEOのテクスチャに設定する。第2の例として、上記カメラ画像から赤色の球形状の物体が識別された場合、当該物体をりんごであると判定してりんごと識別された物体を上記カメラ画像から切り取って敵オブジェクトEOとして設定し、切り取られた画像を当該敵オブジェクトEOのテクスチャに設定する。第3の例として、上記カメラ画像から白色の円板形状の物体が識別された場合、当該物体を時計であると判定して時計と識別された物体を上記カメラ画像から切り取って敵オブジェクトEOとして設定し、切り取られた画像を当該敵オブジェクトEOのテクスチャに設定する。このように、カメラ画像を画像分析して境界や輪郭等を抽出することによって物体の色および/または形状を識別対象とすることによって、様々な物体の形状を認識することが可能であり、当該カメラ画像から識別された物体を切り取って敵オブジェクトEOのテクスチャに設定することによって、上述した画像処理と同様の処理が可能となる。
他の例として、カメラ画像を文字認識することによって、カメラ画像から識別された文字を、登場するオブジェクトのテクスチャに設定してもかまわない。例えば、上記カメラ画像から文字が認識された場合、当該文字を上記カメラ画像から切り取って敵オブジェクトEOに設定し、切り取られた文字を当該敵オブジェクトEOのテクスチャに設定する。この場合、識別対象とする文字の色を限定することなく、文字形状となって登場する敵オブジェクトEOの色も識別された文字色に応じた色で設定される。
他の例として、カメラ画像内に撮像されている物体の色のみを識別対象とすることによって、カメラ画像から識別された当該色を有する領域を、登場するオブジェクトのテクスチャに設定してもかまわない。例えば、上記カメラ画像内に所定色の物体が撮像されている場合、当該所定色に関連する物体を示す立体オブジェクトを、識別された当該物体の画像をテクスチャにして登場させる。一例として、図26Aに示すように、上記カメラ画像内に赤色の物体(例えば、赤色のりんご;図26Aおよび図26Bでは赤色画像を斜線領域で示している)が撮像されている場合、当該カメラ画像から識別された赤色の物体を識別されたと判定する。そして、上記カメラ画像から識別された赤色の物体を、登場させる立体オブジェクトのテクスチャとして設定する。具体的には、図26Bに示すように、上記カメラ画像内で認識された赤色の物体の画像(例えば、カメラ画像内で識別された赤色のりんごの画像)をテクスチャとし、予め定められた形状(例えば、炎の形状)の立体ポリゴンに当該テクスチャをマッピングすることによってオブジェクト(炎オブジェクト)を登場させる。この場合、上記カメラ画像内で赤色の物体として認識された画像を切り取らずに撮像状態のまま上側LCD22に表示(図26Bの状態)してもいし、当該赤色の物体として認識された画像を切り取って当該切り取った跡にマスク画像MIを貼り付けてもかまわない。例えば、前者の場合、図26Bに示すように、カメラ画像から赤色の物体として識別された赤色のりんごの上部に炎オブジェクトが配置されることによって、識別されたりんごが当該りんごの色(赤色)の炎で燃え上がっているように表現される。また、後者の場合、カメラ画像から赤色の物体として識別された物体の位置から仮想カメラ側に向かって炎オブジェクトが吹き出るように配置されることによって、あたかも炎オブジェクトがユーザ側に向かって吹き付けられているように表現される。
上記カメラ画像から識別して敵オブジェクトEOとする物体は、他にも考えられる。第1の例として、上記カメラ画像から青色の物体が識別された場合、当該物体が識別された位置から当該物体の色の液体(例えば、水)が流れ出るように表現する。この場合、液体が波のように移動していく形状の立体ポリゴンに、上記カメラ画像内で認識された青色の物体の画像をテクスチャとしてマッピングすることによって、仮想世界画像を生成する。第2の例として、上記カメラ画像から黄色の物体が識別された場合、当該物体が識別された位置から当該物体の色の光(例えば、雷光)が発光されるように表現する。この場合、光が雷光のように放電されている形状の立体ポリゴンに、上記カメラ画像内で認識された黄色の物体の画像をテクスチャとしてマッピングすることによって、仮想世界画像を生成する。
(第3の実施形態)
次に、本発明の第3の実施形態に係る画像処理プログラムを実行する画像処理装置について説明する。上述した第1の実施形態や第2の実施形態では、ゲーム装置10の実カメラから得られたカメラ画像から任意の範囲が切り取られて敵オブジェクトEOとして出現したり、当該カメラ画像から識別された所定の物体が切り取られて敵オブジェクトEOとして出現したりする。第3の実施形態では、上記カメラ画像とは無関係の敵オブジェクトEOが出現するとともに、ゲーム中にカメラ画像から新たに敵オブジェクトEOが出現する例を説明する。なお、第3の実施形態に係る画像処理プログラムを実行する画像処理装置のハードウエア構成については、第1の実施形態や第2の実施形態で用いたハードウエア構成と同様であるため、同じ構成要素には同一の参照符号を付して詳細な説明を省略する。
図27〜図29を参照して当該実施形態に係る画像処理動作によって上側LCD22に表示される表示形態例について説明する。なお、図27は、上側LCD22に表示されたカメラ画像CIおよび敵オブジェクトEO1〜EO3の一例を示す図である。図28は、上側LCD22に表示されたカメラ画像CIから新たに敵オブジェクトEOnが出現して表示された一例を示す図である。図29は、上側LCD22に表示されたカメラ画像CIの撮像アングルが変化したり被写体が移動したりした場合の敵オブジェクトEOnの動きの一例を示す図である。なお、説明を簡単にするために、上側LCD22には、外側撮像部23および内側撮像部24のいずれかから取得したカメラ画像CIに基づいた、実世界の平面画像(上述した立体視可能な画像とは反対の意味での平面視の画像)が表示される例を用いる。
図27において、上側LCD22には、ゲーム装置10に内蔵する実カメラ(例えば、外側撮像部23)によって撮像された実世界画像であるカメラ画像CIが表示されている。例えば、上側LCD22には、ゲーム装置10に内蔵する実カメラで撮像されたリアルタイムの実世界画像(動画像)が表示される。さらに、上側LCD22には、カメラ画像CIとは無関係の仮想オブジェクトが、カメラ画像CIに合成されて表示されている。図27では、仮想オブジェクトの一例として、敵オブジェクトEO1〜EO3が表示されている。ここで、敵オブジェクトEO1〜EO3は、上述した実施形態と同様にユーザの攻撃対象となる立体オブジェクトであり、カメラ画像CIに合成される仮想空間内を所定のアルゴリズムに基づいて移動したり、出現したりする。
なお、敵オブジェクトEO1〜EO3は、過去に撮像することによって得られた顔画像が立体モデル(ポリゴン)に貼り付けられたオブジェクト(例えば、敵オブジェクトEO1、EO2)でもいいし、撮像画像とは無関係に予め準備されている立体オブジェクト(例えば、敵オブジェクトEO3)でもよい。例えば、敵オブジェクトEO1〜EO3を示す立体ポリゴンを仮想空間に配置し、仮想カメラから敵オブジェクトEO1〜EO3を見た仮想空間の画像(仮想世界画像)を、カメラ画像CIから得られる実世界画像に合成することによって、敵オブジェクトEO1〜EO3が実空間内に配置されているように上側LCD22に表示される。そして、ゲーム装置10を用いた攻撃操作(例えば、ボタン14B(Aボタン)の押下)に応じて、所定の方向(例えば、カメラ画像CIを撮像している実カメラの視線方向であり、仮想カメラの視線方向)に弾オブジェクトBOが発射され、敵オブジェクトEO1〜EO3がユーザの攻撃対象となるゲームが実現される。
一方、ゲーム装置10は、上記ゲーム中において、実カメラで撮像されたカメラ画像CIに対して所定の顔認識処理を逐次に行い、カメラ画像CI内における人物の顔の有無を判断している。そして、ゲーム装置10は、上記顔認識処理において、カメラ画像CI内に人物の顔が存在すると識別できた場合、新たに敵オブジェクトEOnを出現させる条件を満たしたとしてカメラ画像CI内の顔と識別した部分の少なくとも1つから敵オブジェクトEOnを出現させる(図28の状態)。
図28に示すように、新たに出現する敵オブジェクトEOnは、カメラ画像CIから顔認識された顔画像を、人の顔面の3次元モデルにテクスチャマッピングした仮想オブジェクトとなって出現する。なお、カメラ画像CIから複数の顔画像が顔認識によって識別された場合、複数の顔画像から1つを選択して敵オブジェクトEOnを出現させる対象としてもいいし、複数の顔画像から2つ以上を選択して敵オブジェクトEOnを出現させる対象としてもいいし、複数の顔画像から全部を選択して敵オブジェクトEOnを出現させる対象としてもよい。以下、カメラ画像CIから1つの顔画像が顔認識によって識別された場合、または複数の顔画像から1つを選択して敵オブジェクトEOnを出現させる対象とする場合を前提として、説明を行う。
例えば、カメラ画像CIから識別された顔の画像がテクスチャマッピングされた3次元モデル(敵オブジェクトEOn)を、敵オブジェクトEO1〜EO3等が既に配置されている仮想空間に新たに配置する。そして、仮想カメラから敵オブジェクトEOnを見た仮想空間の画像(仮想世界画像)を、カメラ画像CIから得られる実世界画像に合成することによって、敵オブジェクトEOnが実空間内に新たに配置されたように上側LCD22に表示される。そして、敵オブジェクトEOnも、ユーザの攻撃対象となる。なお、第2の実施形態と同様に、カメラ画像CIと同一化した平面ポリゴンから上記3次元モデル(立体ポリゴン)まで変化させるモーフィング処理を行いながら敵オブジェクトEOnを出現させてもかまわない。
ここで、実カメラで撮像されたリアルタイムの実世界画像(動画像)がカメラ画像CIとして上側LCD22に表示されている場合、敵オブジェクトEOnは、当該カメラ画像CIにおいて顔認識されている顔画像の位置に追従するように表示される(例えば、図28に示すカメラ画像CIから図29に示すカメラ画像CIへの変化)。例えば、上記顔画像がテクスチャマッピングされた3次元モデル(ポリゴン)を上記顔認識された顔画像の位置に対応する上記仮想空間内の位置に配置し、仮想カメラから当該3次元モデルを見た仮想空間の画像(仮想世界画像)を、カメラ画像CIから得られる実世界画像に合成することによって、敵オブジェクトEOnが人物の顔と少なくとも一部重なって配置されているように上側LCD22に表示される。ここで、「敵オブジェクトEOnが人物の顔と少なくとも一部重なって配置される」とは、敵オブジェクトEOnが人物の顔の画像と同じ形状および同じサイズで完全に一致して重なる場合や、敵オブジェクトEOnが人物の顔の画像より大きなサイズで当該顔の画像を全て包含するように重なる場合や、敵オブジェクトEOnが人物の顔の画像より小さいサイズまたは同じサイズで当該顔の画像の一部と重なる場合等を含んでいる。このように、ユーザ自身が撮像している実世界のカメラ画像CIにおける人物の顔が敵オブジェクトEOnとなって新たに出現するとともに、カメラ画像CIにおける当該顔の位置に敵オブジェクトEOnが重なるように上側LCD22に表示される。
例えば、ゲーム装置10に内蔵する実カメラによって撮像されたリアルタイムの実世界画像が上側LCD22に表示されている場合、実空間内においてゲーム装置10の方向や位置(すなわち、実空間内における撮像アングルや撮像位置)を変えることによって、ゲーム装置10で撮像されるリアルタイムの実世界画像も変化する。したがって、カメラ画像CIを撮像するための撮像位置や撮像アングルが変化した場合、上側LCD22に表示されるカメラ画像CI内における被写体の位置やサイズも変化する。また、実空間内において上記顔画像を得た被写体や他の被写体が移動することによっても、上側LCD22に表示されるカメラ画像CI内における被写体の位置やサイズが変化する。このようにカメラ画像CI内における被写体の位置やサイズが変化した場合であっても、ゲーム装置10が変化したカメラ画像CIに対して顔認識処理を逐次行っているため、当該変化後の顔画像の位置やサイズを取得することができる。そして、ゲーム装置10は、上記移動後の顔画像の位置やサイズに応じて、当該顔画像を貼り付ける3次元モデルの仮想空間における位置やサイズを調整することによって、敵オブジェクトEOnが当該顔画像と重なるように上側LCD22に表示することができる。なお、敵オブジェクトEO1〜EO3については、上記第1の実施形態や上記第2の実施形態と同様に、例えばゲーム装置10の動きに応じて仮想カメラの撮像方向を変化させることによって、ゲーム装置10の動きに応じて表示位置が移動するように上側LCD22に表示させればよい。
さらに、実空間内においてカメラ画像CI内で顔認識されている人物(被写体)の表情が変化することも考えられる。この場合、カメラ画像CI内から顔認識されて敵オブジェクトEOnとして用いられた最初の顔画像を継続して利用して敵オブジェクトEOnを仮想空間に配置してもいいし、敵オブジェクトEOnのテクスチャをリアルタイムに得られるカメラ画像CIを逐次顔認識されて得られる顔画像を用いて更新して敵オブジェクトEOnを仮想空間に配置してもかまわない。前者の場合は、敵オブジェクトEOnに貼り付けられる顔画像が、仮想空間から消滅するまで出現したときのままとなる。後者の場合は、カメラ画像CI内で顔認識された顔画像が変化(例えば、被写体の表情が変化)した場合、敵オブジェクトEOnに貼り付けられる顔画像も、当該変化に応じて逐次更新されることになる。
このように、上述した実施形態に係る画像処理では、リアルタイムに撮像されている実世界画像内の顔画像が貼り付けられた立体オブジェクトが出現して、当該実世界画像に合成される。したがって、実カメラから得られた実世界画像に、当該実世界画像内の顔画像が抜け出たように表現された立体オブジェクトを示す仮想世界画像が合成されて表示されるため、当該立体オブジェクトが実空間内に存在しているような新たな画像を表示することができる。また、出現した立体オブジェクトが、貼り付ける顔画像を得た被写体の動きや変化に追従するように実世界画像に合成されるため、当該立体オブジェクトが実空間内に存在しているようにさらにリアルに表現することができる。さらに、カメラ画像CIを背景として当該カメラ画像CIとは無関係の敵オブジェクトEOを攻撃するようなゲームを行っている途中に、当該カメラ画像CIから抜け出たように新たな敵オブジェクトEOnが出現するため、当該ゲームをプレイしているユーザに驚きを与えることができる。また、カメラ画像CIから抜け出たオブジェクトをゲーム中に新たに出現させるという新たなゲーム目的を加えることもできる。
また、上述した説明では、ゲーム装置10に生じる角速度を検出し、当該角速度を用いて実空間におけるゲーム装置10の動きを算出する例を用いたが、他の方式を用いてゲーム装置10の動きを算出してもかまわない。第1の例として、ゲーム装置10に内蔵されている加速度センサ39が検出した加速度を用いて、ゲーム装置10の動きを算出してもかまわない。一例として、加速度センサ39を搭載するゲーム装置10が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ39によって検出される加速度が重力加速度のみであるとして処理する場合)、ゲーム装置10が現実に静的な状態であれば、検出された加速度に基づいてゲーム装置10の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。他の例として、加速度センサ39を搭載するゲーム装置10が動的な状態であることを前提とする場合には、加速度センサ39が重力加速度成分に加えて加速度センサ39の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、ゲーム装置10の動き方向等を知ることができる。具体的には、加速度センサ39を備えるゲーム装置10がユーザの手で動的に加速されて動かされる場合に、加速度センサ39によって生成される加速度信号を処理することによって、ゲーム装置10の様々な動きおよび/または位置を算出することができる。また、加速度センサ39が動的な状態であることを前提とする場合であっても、加速度センサ39の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するゲーム装置10の傾きを知ることが可能である。
第2の例として、ゲーム装置10に内蔵されている実カメラ(外側撮像部23または内側撮像部24)によってリアルタイムで撮像されたカメラ画像の移動量を用いて、ゲーム装置10の動きを算出してもかまわない。例えば、ゲーム装置10が動くことによって、上記実カメラの撮像方向や撮像位置が変わった場合、当該実カメラで撮像されるカメラ画像も変化する。したがって、ゲーム装置10に内蔵されている実カメラで撮像されるカメラ画像の変化を用いれば、当該実カメラの撮像方向が変化した角度や撮像位置の移動量等を算出することができる。一例として、ゲーム装置10に内蔵されている実カメラで撮像されるカメラ画像から所定の物体を識別し、当該物体が撮像されている角度や撮像されている位置を時系列的に比較することによって、これらの変化量から当該実カメラの撮像方向が変化した角度や撮像位置の移動量等を算出することができる。他の例として、ゲーム装置10に内蔵されている実カメラで撮像されるカメラ画像全体に対して時系列的に比較することによって、当該画像全体の撮像方向や撮像範囲の変化量から、当該実カメラの撮像方向が変化した角度や撮像位置の移動量等を算出することができる。
第3の例として、上述したゲーム装置10に生じる角速度、ゲーム装置10に生じる加速度、およびゲーム装置10によって撮像されたカメラ画像の少なくとも2つを組み合わせて、ゲーム装置10の動きを算出してもかまわない。これによって、1つのパラメータからゲーム装置10の動きを算出する場合に当該動きの推定が難しい状況において、他のパラメータを組み合わせてゲーム装置10の動きを算出することによって、当該状況を補ったゲーム装置10の動きの算出が可能となる。一例として、上記第2の例によるゲーム装置10の動きを算出では、撮像されたカメラ画像が時系列的に水平方向へ動いた場合、ゲーム装置10の撮影角度が鉛直方向を中心として回転したのか、ゲーム装置10が水平移動したのか、正確な判定が難しいことがある。この場合、ゲーム装置10に生じる角速度を用いれば、ゲーム装置10が回転移動したのか水平移動したのかを容易に判定することが可能となる。
また、第4の例として、ゲーム装置10の動きを、いわゆるAR(拡張現実)の技術により算出してもよい。
また、上述した説明では、上側LCD22に、外側撮像部23および内側撮像部24のいずれかから取得したカメラ画像CIに基づいた、実世界の平面画像(上述した立体視可能な画像とは反対の意味での平面視の画像)が表示される例を用いたが、裸眼で立体視可能な画像(立体画像)を上側LCD22に表示してもよい。例えば、上述したように、ゲーム装置10は、外側左撮像部23aおよび外側右撮像部23bから取得したカメラ画像を用いた立体視可能な画像(立体画像)を上側LCD22に表示することが可能である。この場合、上側LCD22に表示された立体画像から敵オブジェクトEOや他のオブジェクトが抜け出てくるように描画される。
例えば、上記立体画像から敵オブジェクトEOが抜け出てくるように描画する場合、外側左撮像部23aから得られた左目用画像および外側右撮像部23bから得られた右目用画像を用いて、上述した画像処理を行う。具体的には、図12に示した画像処理において、その一部がオブジェクトのテクスチャとして設定されるカメラ画像は、上記左目用画像および上記右目用画像の一方が用いられ、当該一方の画像から得られたテクスチャがマッピングされた敵オブジェクトEOが仮想空間に設定される。また、仮想空間に配置された敵オブジェクトEO、マスクオブジェクトMO、および弾オブジェクトBOを、2つの仮想カメラ(ステレオカメラ)から透視変換することによって、それぞれ左目用仮想世界画像と右目用仮想世界画像とを得る。そして、左目用の実世界画像(上記ステップ53で左目用画像をレンダリングした画像)と左目用仮想世界画像とを合成して左目用表示画像を生成し、右目用の実世界画像(上記ステップ53で右目用画像をレンダリングした画像)と右目用仮想世界画像とを合成して右目用表示画像を生成し、当該左目用表示画像および当該右目用表示画像を上側LCD22に出力する。
また、上述した説明では、ゲーム装置10に内蔵する実カメラで撮像されたリアルタイムの動画像が上側LCD22に表示され、上記実カメラで撮像された動画像(カメラ画像)の中から当該カメラ画像の一部がテクスチャとして設定されたオブジェクトが登場するように表示されるが、本発明において上側LCD22に表示する画像は、様々なバリエーションが考えられる。第1の例として、予め録画された動画像およびテレビジョン放送や他の装置から得られる動画像等が上側LCD22に表示される。この場合、上記動画像が上側LCD22に表示され、当該動画像の一部がテクスチャとして設定されたオブジェクトが当該動画像の中から登場することになる。第2の例として、ゲーム装置10に内蔵する実カメラや他の実カメラから得られた静止画像が上側LCD22に表示される。この場合、実カメラから得られた静止画像が上側LCD22に表示され、当該静止画像の一部がテクスチャとして設定されたオブジェクトが当該静止画像の中から登場することになる。ここで、実カメラから得られる静止画像は、ゲーム装置10に内蔵する実カメラでリアルタイムに撮像された実世界の静止画像でもいいし、当該実カメラや他の実カメラで予め撮影された実世界の静止画像でもいいし、テレビジョン放送や他の装置から得られる静止画像でもよい。
また、上記実施形態では、上側LCD22がパララックスバリア方式の液晶表示装置であるとして、視差バリアのON/OFFを制御することにより、立体表示と平面表示とを切り替えることができる。他の実施形態では、例えば、上側LCD22としてレンチキュラー方式の液晶表示装置を用いて、立体画像および平面画像を表示可能としてもよい。レンチキュラー方式の場合でも、外側撮像部23で撮像した2つの画像を縦方向に短冊状に分割して交互に配置することで画像が立体表示される。また、レンチキュラー方式の場合でも、内側撮像部24で撮像した1つの画像をユーザの左右の目に視認させることによって、当該画像を平面表示させることができる。すなわち、レンチキュラー方式の液晶表示装置であっても、同じ画像を縦方向に短冊状に分割し、これら分割した画像を交互に配置することにより、ユーザの左右の目に同じ画像を視認させることができる。これにより、内側撮像部24で撮像された画像を平面画像として表示することが可能である。
また、上述した実施形態では、2画面分の液晶表示部の一例として、物理的に分離された下側LCD12および上側LCD22を互いに上下に配置した場合(上下2画面の場合)を説明した。しかしながら、2画面分の表示画面の構成は、他の構成でもかまわない。例えば、下側ハウジング11の一方主面に下側LCD12および上側LCD22を左右に配置してもかまわない。また、下側LCD12と横幅が同じで縦の長さが2倍のサイズからなる縦長サイズのLCD(すなわち、物理的には1つで、表示サイズが縦に2画面分あるLCD)を下側ハウジング11の一方主面に配設して、2つの画像(例えば、撮像画像と操作説明画面を示す画像等)を上下に表示(すなわち上下の境界部分無しに隣接して表示)するように構成してもよい。また、下側LCD12と縦幅が同じで横の長さが2倍のサイズからなる横長サイズのLCDを下側ハウジング11の一方主面に配設して、横方向に2つの画像を左右に表示(すなわち左右の境界部分無しに隣接して表示)するように構成してもよい。すなわち、物理的に1つの画面を2つに分割して使用することにより2つの画像を表示してもかまわない。また、物理的に1つの画面を2つに分割して使用することにより上記2つの画像を表示する場合、当該画面全面にタッチパネル13を配設してもかまわない。
また、上述した実施例では、ゲーム装置10にタッチパネル13が一体的に設けられているが、ゲーム装置とタッチパネルとを別体にして構成しても、本発明を実現できることは言うまでもない。また、上側LCD22の上面にタッチパネル13を設けて上側LCD22に上述した下側LCD12に表示していた表示画像を表示してもよい。
また、上記実施例では、携帯型のゲーム装置10や据置型のゲーム装置を用いて説明したが、一般的なパーソナルコンピュータ等の情報処理装置で本発明の画像処理プログラムを実行して、本発明を実現してもかまわない。また、他の実施形態では、ゲーム装置に限らず任意の携帯型電子機器、例えば、PDA(Personal Digital Assistant)や携帯電話、パーソナルコンピュータ、カメラ等であってもよい。例えば、携帯電話が、1つのハウジングの主面に2つの表示部と、実カメラとを備えてもよい。
また、上述した説明では画像処理をゲーム装置10で行う例を用いたが、上記画像処理における処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲーム装置10が他の装置(例えば、サーバや他のゲーム装置)と通信可能に構成されている場合、上記画像処理における処理ステップは、ゲーム装置10および当該他の装置が協働することによって実行してもよい。一例として、他の装置において、実世界画像、敵オブジェクトEO、およびマスクオブジェクトMOを設定する処理が行われ、ゲーム装置10が実世界画像、敵オブジェクトEO、およびマスクオブジェクトMOに関するデータを取得して、ステップ56〜ステップ61の処理を行うことが考えられる。このように、上記画像における処理ステップの少なくとも一部を他の装置で行うことによって、上述した画像処理と同様の処理が可能となる。このように、上述した画像処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施形態においては、ゲーム装置10の情報処理部31が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、ゲーム装置10が備える専用回路によって上記処理の一部または全部が行われてもよい。
また、上述したゲーム装置10の形状や、それに設けられている各種操作ボタン14、アナログスティック15、タッチパネル13の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した画像処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず他の順序や値であっても、本発明を実現できることは言うまでもない。
また、上記画像処理プログラム(ゲームプログラム)は、外部メモリ45やデータ保存用外部メモリ46等の外部記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置10に供給されてもよい。また、上記プログラムは、ゲーム装置10内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。