(第1の実施形態)
以下、本発明に係る一実施形態としての画像処理プログラムを実行する画像処理装置について具体例を挙げて説明する。ただし、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
なお、以下に挙げる実施形態において、コンピュータが処理するデータをグラフや自然言語を用いて例示しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメタ、マシン語、配列等で指定される。本発明は、データの表現方法を限定するものではない。
<ハードウェアの構成例>
まず、図面を参照して、本実施形態に係る画像処理プログラムを実行する画像処理装置の一例として携帯型のゲーム装置10について説明する。ただし、本発明に係る画像処理装置はゲーム装置に限定されるものではない。本発明に係る画像処理装置は、例えば、汎用コンピュータ等、任意のコンピュータシステムであればよい。また、携帯型でなくてもよい。
なお、以下に示される本実施形態に係る画像処理プログラムはゲームプログラムであるが、本発明に係る画像処理プログラムはゲームプログラムに限定されるものではない。本発明の画像処理プログラムは、任意のコンピュータシステムで実行されることによって適用することができる。また、本実施形態の各処理をネットワーク化された複数の装置で分散処理してもよいし、サーバで主要な処理を行った後、端末に処理結果を配信するネットワークシステムや、いわゆるクラウドネットワークで実施してもよい。
図1、図2、図3A、図3B、図3C、及び図3Dは、ゲーム装置の外観の一例を示す平面図である。
図1−図3Dに示されるゲーム装置10は、撮像部(カメラ)を内蔵しており、当該撮像部によって画像を撮像(以下、「撮影」とも記載する)し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、交換可能なメモリカード内に記憶されたゲームプログラム、又は、サーバや他のゲーム装置からネットワークを介して受信したゲームプログラムを実行可能である。また、ゲーム装置10は、仮想空間に設定された仮想カメラで撮像したときの画像を、コンピュータグラフィックス処理により生成して画面に表示することもできる。
図1−図3Dに示されるゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、ヒンジ構造により開閉可能(折り畳み可能)に連結されている。すなわち、上側ハウジング21は、下側ハウジング11に対して回動(揺動)自在に取り付けられている。これにより、ゲーム装置10は、上側ハウジング21が下側ハウジング11に対して密着した状態となる閉状態(図3A,図3C)と、上側ハウジング21が下側ハウジング11に対して回動し、密着場外が解除された状態(開状態)との二つの形態を有する。上側ハウジング21の回動は、図2に示すように、開状態において、上側ハウジング21と下側ハウジング11とが略平行となる位置まで許容される(図2参照)。
図1は、開いた状態(開状態)におけるゲーム装置10の一例を示す正面図である。ゲーム装置10の下側ハウジング11及び上側ハウジング21のそれぞれは、平面形状が長手方向(横方向(左右方向):図中x方向)と短手方向((上下方向):図中y方向)とを有する横長の長方形である板状に形成されている。上側ハウジング21の長手方向の下側の外縁部と、下側ハウジング11の長手方向の上側の外縁部とがヒンジ構造により回動可能に連結されている。ユーザがゲーム装置10を使用する際には、通常、ゲーム装置10は開状態にされる。そして、ユーザがゲーム装置10を保管する際には、ゲーム装置10は閉状態にされる。また、上側ハウジング21は、下側ハウジング11との連結部分に生じる摩擦力により、下側ハウジング11との間でユーザが所望する角度をなして停止した状態を維持することができる。つまり、ゲーム装置10は、上側ハウジング21を下側ハウジング11に対して所望角度で静止させることができる。一般に、上側ハウジング21に設けられた画面の視認性の観点から、上側ハウジング21は、下側ハウジング11との間で、直角又は鈍角をなす位置まで開いた状態とされる。以降、ゲーム装置10の閉状態において、上側ハウジング21と下側ハウジング11とのそれぞれの対向面を内側面、又は、主面と称する。また、上側ハウジング21と下側ハウジング11とのそれぞれの内側面(主面)とは反対側の面を、外側面と称する。
ゲーム装置10の下側ハウジング11の上側長辺部分には、下側ハウジング11の内側面(主面)11Bに対して垂直な方向(図中z方向)に突出した突起部(軸受け部)11Aが設けられる。また、上側ハウジング21の下側長辺部分には、上側ハウジング21の下側面から当該下側面に垂直な方向に突起する突起部(軸受け部)21Aが設けられる。突起部11A,21A,11A内には、例えば、一方の突起部11Aから突起部21Aを貫通し他方の突起部11Aまでx方向に延びる回動軸(図示せず)が収容されており、この回動軸を中心に、上側ハウジング21が下側ハウジング11に対して相対的に回動自在となっている。このようにして、下側ハウジング11と上側ハウジング21とが、折り畳み可能に接続される。
図1に示される下側ハウジング11の内側面11Bには、下側LCD(Liquid
Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、第1LED16A、および、マイクロフォン用孔18が設けられる。
下側LCD12は下側ハウジング11に収納される。下側LCD12の平面形状は横長の長方形であり、その長辺方向が下側ハウジング11の長手方向(図1中x方向)に一致するように配置される。下側LCD12は、下側ハウジング11の内側面(主面)中央に設けられる。下側ハウジング11の内側面に設けられた開口部から下側LCD12の画面が露出する。ゲーム装置10を使用しない場合には上記閉状態としておくことによって、下側LCD12の画面が汚れたり傷ついたりすることを防止することができる。下側LCD12の画素数は、一例として、320dot×240dot(横×縦)である。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の表示装置を利用してもよい。また、下側LCD12として、所望の解像度を有する表示装置を利用することができる。
タッチパネル13はゲーム装置10の入力装置の一つである。タッチパネル13は、下側LCD12の画面上を覆うように装着されている。本実施形態では、タッチパネル13は、抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、例えば、静電容量方式等、任意の押圧式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル13は、下側LCD12の解像度と同解像度(検出精度)のものが利用される。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度とが一致している必要はない。
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが設けられる。
十字ボタン14Aは、十字の形状を有しており、少なくとも上下左右の方向を指示するボタンを有している。十字ボタン14Aは、下側LCD12より左側の領域中の下部領域に設けられる。十字ボタン14Aは、下側ハウジング11を把持した左手の親指で操作可能な位置に設計される。
ボタン14B、ボタン14C、ボタン14D、及びボタン14Eの4つのボタンは、下側LCD12より右側の領域中の上部に、十字状に配置されて設けられる。ボタン14B、ボタン14C、ボタン14D、及びボタン14Eは、下側ハウジング11を把持するユーザの右手の親指が自然と位置するところに設置される。電源ボタン14Fは、下側LCD12の右側の領域中の下部に配置される。
セレクトボタン14J、HOMEボタン14K、及びスタートボタン14Lは、それぞれ、下側LCD12の下側領域に設置される。
ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装置10によって実行されるプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは、選択操作やゲーム中のキャラクタの移動操作等に用いられる。例えば、各操作ボタン14B〜14Eは、決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフする
ために用いられる。
アナログスティック15は、方向を指示するデバイスである。アナログスティック15は、下側ハウジング11の内側面(主面)の下側LCD12より左側の領域中の上部に設けられる。すなわち、アナログスティック15は十字ボタン14Aの上方に設けられる。また、アナログスティック15は、下側ハウジング11を把持した左手の親指で操作可能な位置に設計される。アナログスティック15が上部領域に設けられたことにより、下側ハウジング11を把持するユーザの左手の親指が自然と位置するところにアナログスティック15が配置される。そして、十字ボタン14Aは、下側ハウジング11を把持するユーザの左手の親指を少し下にずらした位置に配置される。それゆえ、ユーザは、下側ハウジング11を把持する左手の親指を上下に動かすだけで、アナログスティック15と十字ボタン14Aを操作することができる。アナログスティック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトは、アナログスティック15のキートップがスライドした方向に移動される。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いてもよい。
なお、ボタン14B、ボタン14C,ボタン14D、及びボタン14Eの4つのボタンとアナログスティック15とは、下側LCD12を挟んで、左右対称な位置に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、ボタン14B、ボタン14C,ボタン14D、及びボタン14Eの4つのボタンを使用して方向指示入力をすることも可能である。
第1LED16A(図1)は、ゲーム装置10の電源のON/OFF状態をユーザに通知する。第1LED16Aは、下側ハウジング11の内側面(主面)と下側ハウジング11の下側面とが共有する端部の右側に設けられる。これによって、ユーザは、ゲーム装置10の開閉状態にかかわらず、第1LED16Aの点灯の有無を視認することができる。
マイクロフォン用孔18は、音声入力装置としてのゲーム装置10に内蔵されるマイクロフォン用の孔である。内蔵されたマイクロフォンは、マイクロフォン用孔18から外部の音を検出する。マイクロフォン及びマイクロフォン用孔18は、下側ハウジング11の内側面(主面)の電源ボタン14Fの下方に設けられる。
下側ハウジング11の上側面には、タッチペン28の挿入口17(図1、図3Dにおいて点線で示される)が設けられている。挿入口17から、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13を用いた入力は、通常タッチペン28を用いて行われる。但し、タッチペン28の代わりにユーザの指を用いることもできる。
下側ハウジング11の上側面にはゲーム装置10とゲームプログラムを記録した外部メモリ45を挿入するための挿入口11D(図1、図3Dにおいて点線で示される)が設けられる。挿入口11Dの内部には、外部メモリ45と内部回路とを電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。外部メモリ45がゲーム装置10に接続されることにより、内部回路に含まれるプロセッサによって所定のゲームプログラムが実行される。なお、上記コネクタおよび挿入口11Dは、下側ハウジング11の他の側面(例えば、右側面等)に設けられてもよい。
図1に示される上側ハウジング21の内側面21Bには、スピーカ孔21E、上側LCD22、内側撮像部24、3D調整スイッチ25、および3Dインジケータ26が設けられる。
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。上側LCD22は、実質的に同一の表示領域を用いて左目用画像と右目用画像とを表示することが可能である。具体的には、上側LCD22は、左目用画像と右目用画像とが所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。なお、上側LCD22は、左目用画像と右目用画像とが交互に表示される方式の表示装置であってもよい。また、上側LCD22は、裸眼立体視可能な表示装置である。この場合、上側LCD22は、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCD22は、パララックスバリア方式の表示装置とする。上側LCD22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像をそれぞれ視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである。)。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチ25によって行われる。
上側LCD22は、上側ハウジング21に収納される。上側LCD22は、横長の長方形であり、長辺方向が上側ハウジング21の長辺方向に一致する状態で、上側ハウジング21の中央に配置される。上側LCD22の画面の面積は、一例として下側LCD12の画面の面積よりも大きく設定される。具体的には、上側LCD22の画面は、下側LCD12の画面よりも横長に設定される。すなわち、上側LCD22の画面のアスペクト比における横幅の割合は、下側LCD12の画面のアスペクト比における横幅の割合よりも大きく設定される
上側LCD22の画面は、上側ハウジング21の内側面(主面)21Bに設けられ、上側ハウジング21の内側面21Bに設けられた開口部から上側LCD22の画面が露出する。また、上側ハウジング21の内側面は、透明なスクリーンカバー27によって覆われている。スクリーンカバー27は、上側LCD22の画面を保護するとともに、上側LCD22と上側ハウジング21の内側面と一体的にさせ、これにより統一感を持たせている。上側LCD22の画素数は、一例として800dot×240dot(横×縦)である。本実施形態では、上側LCD22は液晶表示装置であるとして説明される。ただし、これに限らず、例えば、ELを利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
スピーカ孔21Eは、ゲーム装置10の音声出力装置としてのスピーカ44からの音声を出力するための孔である。スピーカ21Eは、上側LCDを挟んで左右対称に設置される。後述するスピーカ44からの音声がこのスピーカ孔21Eから出力される。
内側撮像部24は、上側ハウジング21の内側面21Bの内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子と、レンズとを含む。撮像素子は、例えば、CCDイメージセンサやCMOSイメージセンサ等である。
レンズは、ズーム機構を有するものでもよい。
内側撮像部24は、上側ハウジング21の内側面21Bの、上側LCD22の画面の上端よりも上方に配置され、上側ハウジング21の左右方向に関して中央の位置(上側ハウジング21(上側LCD22の画面)を左右に2等分する線の線上)に配置される。このように内側撮像部24が配置されることによって、ユーザが上側LCD22を正視した際、内側撮像部24によってユーザの顔を正面から撮像することができる。外側左撮像部23aおよび外側右撮像部23bについては、後述される。
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。3D調整スイッチ25は、ゲーム装置10の開閉状態に関わらずユーザが視認できるように、上側ハウジング21の内側面21Bと右側面とが共有する端部に設けられる。3D調整スイッチ25は、所定方向(例えば、上下方向)の任意の位置にスライド可能なスライダを有しており、当該スライダの位置に応じて上側LCD22の表示モードが設定される。
例えば、3D調整スイッチ25のスライダが最下点位置に配置されている場合、上側LCD22が平面表示モードに設定され、上側LCD22の画面には平面画像が表示される。なお、上側LCD22を立体表示モードのままとして、左目用画像と右目用画像とを同一の画像とすることにより平面表示してもよい。一方、上記最下点位置より上側にスライダが配置されている場合、上側LCD22は立体表示モードに設定される。この場合、上側LCD22の画面には立体視可能な画像が表示される。ここで、スライダが上記最下点位置より上側に配置されている場合、スライダの位置に応じて、立体画像の見え方が調整される。具体的には、スライダの位置に応じて、右目用画像および左目用画像における横方向の位置のずれ量が調整される。
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。例えば、3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。3Dインジケータ26は、上側ハウジング21の内側面21Bに設けられ、上側LCD22の画面近傍に設けられる。このため、ユーザが上側LCD22の画面を正視した場合、ユーザは3Dインジケータ26を視認しやすい。したがって、ユーザは、上側LCD22の画面を視認している状態でも、上側LCD22の表示モードを容易に認識することができる。
図2は、開状態におけるゲーム装置10の一例を示す右側面図である。下側ハウジング11の右側面には、第2LED16Bと、無線スイッチ19と、Rボタン14Hとが設けられている。第2LED16Bは、点灯により、ゲーム装置10の無線通信の確立状況をユーザに通知する。ゲーム装置10は、他の機器との間で無線通信を行うことが可能であり、第2LED16Bは、他の機器との無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。無線スイッチ19は、この無線通信の機能を有効/無効にする。Rボタン14Hについては、後述される。
図3Aは、閉じた状態(閉状態)におけるゲーム装置10の一例を示す左側面図である。図3Aに示される下側ハウジング11の左側面には、開閉可能なカバー部11Cと、Lボタン14Hと、音量ボタン14Iとが設けられる。音量ボタン14Iは、ゲーム装置10が備えるスピーカ44の音量を調整するためのボタンである。
カバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ46(図1参照)とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ46は、上記コネクタに着脱自在に装着される。データ保存用外部メモリ46は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。なお、上記コネクタおよびカバー部11Cは、下側ハウジング11の右側面に設けられてもよい。Lボタン14Hについては後述される。
図3Bは、閉状態におけるゲーム装置10の一例を示す正面図である。図3Bに示される上側ハウジング21の外側面には、外側左撮像部23a、外側右撮像部23b、及び第3LED29が設けられる。
外側左撮像部23a及び外側右撮像部23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。外側左撮像部23a及び外側右撮像部23bの撮像方向は、いずれも外側面21Dの外向きの法線方向である。すなわち、外側左撮像部23aの撮像方向および外側右撮像部23bの撮像方向(カメラの視軸)は、平行である。以降、外側左撮像部23a及び外側右撮像部23bをまとめて、外側撮像部23と称する。
外側撮像部23を構成する外側左撮像部23aおよび外側右撮像部23bは、上側LCD22の画面の横方向に並べて配置される。すなわち、2つの外側左撮像部23aおよび外側右撮像部23bを結んだ直線が上側LCD22の画面の横方向に配置されるように、外側左撮像部23aおよび外側右撮像部23bが配置される。また、ユーザが上側ハウジング21を下側ハウジング11に対して所定角度(例えば90°)揺動させ、上側LCD22の画面を正面から視認した場合に、外側左撮像部23aは画面を視認するユーザの左側に位置し、外側右撮像部23bはユーザの右側に位置する(図1参照)。外側左撮像部23aおよび外側右撮像部23bの間隔は、人間の両目の間隔程度に設定され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、外側左撮像部23aおよび外側右撮像部23bの間隔は、この範囲に限らない。なお、本実施形態においては、外側左撮像部23aおよび外側右撮像部23bは、上側ハウジング21に固定されており、撮像方向を変更することはできない。
外側左撮像部23aおよび外側右撮像部23bは、上側LCD22(上側ハウジング21)の上側LCD22を左右に2等分する線に対して対称の位置にそれぞれ配置される。また、外側左撮像部23aおよび外側右撮像部23bは、上側ハウジング21を開いた状態において、上側ハウジング21の上部であって、上側LCD22の画面の上端よりも上方の位置の裏側に配置される(図1参照)。すなわち、外側左撮像部23aおよび外側右撮像部23bは、上側ハウジング21の外側面であって、上側LCD22を外側面に投影した場合、投影した上側LCD22の画面の上端よりも上方に配置される。
このように、外側左撮像部23a及び外側右撮像部23bが上側LCD22の短手方向中央線に対して線対称に配置されることにより、ユーザが上側LCD22を正視した場合に、外側撮像部23それぞれの撮像方向をユーザの左右の目それぞれの視線方向と一致させることができる。また、外側撮像部23は、上側LCD22の画面の上端より上方の裏側の位置に配置されるため、外側撮像部23と上側LCD22とが上側ハウジング21の内部で干渉することがない。さらに、外側左撮像部23aおよび外側右撮像部23bは、図3Bにおいて点線で示される上側ハウジング21の内側面に設けられた内側撮像部24を上側ハウジング21の外側面に投影した場合、当該投影された内側撮像部24を挟んで左右対称に設けられる。したがって、外側撮像部23を上側LCD22の画面の裏側に配置する場合や、内側撮像部24の裏側に外側撮像部23を配置する場合に比べて、上側ハ
ウジング21を薄く構成することが可能となる。
外側左撮像部23aと外側右撮像部23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。また、プログラムによっては、2つの外側撮像部(外側左撮像部23aおよび外側右撮像部23b)のいずれか一方を単独で用いて、外側撮像部23を非ステレオカメラとして使用可能である。外側撮像部23a及び23bをステレオカメラとして機能させるプログラムが実行されている場合、外側左撮像部23aは、ユーザの左目で視認される左目用画像を撮像し、外側右撮像部23bは、ユーザの右目で視認される右目用画像を撮像する。また、プログラムによっては、2つの外側撮像部(外側左撮像部23aおよび外側右撮像部23b)で撮像した画像を合成してまたは補完的に使用することにより撮像範囲を広げた撮像をおこなうことも可能である。また、外側撮像部23aと23bとの一方を用いて撮像された単一の画像から、視差を有する左目用画像及び右目用画像を生成して、あたかも二つのカメラで撮影されたかのような疑似ステレオ画像を生成することもできる。この疑似ステレオ画像の生成において、仮想カメラ間の距離は、適宜設定可能とされる。
第3LED29は、外側撮像部23が作動している場合に点灯し、外側撮像部23が作動していることを報知する。第3LED29は、上側ハウジング21の外側面の外側撮像部23の近傍に設けられる。
図3Cは、閉状態におけるゲーム装置10の一例を示す右側面図である。図3Dは、閉状態におけるゲーム装置10の一例を示す背面図である。
図3Dに示される下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。Lボタン14Gは、下側ハウジング11の上面の左端部に設けられ、Rボタン14Hは、下側ハウジング11の上面の右端部に設けられる。Lボタン14GおよびRボタン14Hは、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、Lボタン14GおよびRボタン14Hは、上述の各撮像部のシャッターボタン(撮影指示ボタン)として機能する。
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
図4および図5は、それぞれ、ゲーム装置10の使用状態の一例を示す。図4は、ユーザがゲーム装置10を両手で把持する様子の一例を示す図である。
図4に示される例において、ユーザは、下側LCD12および上側LCD22がユーザの方向を向く状態で、両手の掌と中指、薬指および小指とで下側ハウジング11の側面および外側面(内側面の反対側の面)を把持する。このように把持することで、ユーザは、下側ハウジング11を把持したまま、各操作ボタン14A〜14Eおよびアナログスティック15に対する操作を左右の親指で行い、Lボタン14GおよびR14Hに対する操作を左右の人差し指で行うことができる。
図5は、ユーザがゲーム装置10を片手で把持する様子の一例を示す図である。図5に示される例において、タッチパネル13に対して入力を行う場合には、ユーザは下側ハウジング11を把持していた一方の手を離して他方の手のみで下側ハウジング11を把持する。これによって、当該一方の手でタッチパネル13に対する入力を行うことができる。
図6は、ゲーム装置10の内部構成の一例を示すブロック図である。ゲーム装置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に対して撮像指示を行う。
外側撮像部23及び内側撮像部24は、情報処理部31(CPU311)からの指示によって起動されると、例えば、1秒間に60枚の速度で撮像する。外側撮像部23又は内側撮像部24によって撮像された撮像画像は、順次、情報処理部31に送られ、情報処理部31(GPU312)によって上側LCD22又は下側LCD12に表示される。撮像画像は、情報処理部31に出力されると、VRAM313に格納され、上側LCD22又は下側LCD12に出力された後、所定のタイミングで削除される。このように、例えば、1秒間に60枚の速度で、撮像し、撮像した画像を表示することによって、ゲーム装置10は、外側撮像部23及び内側撮像部24の撮影範囲内の景色をリアルタイムに上側LCD22又は下側LCD12に表示することができる。
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダの位置に応じた電気信号を情報処理部31に送信する。
3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。
<機能の説明>
次に、ゲーム装置10が実行するゲーム処理の一例の概要を説明する。ゲーム装置10は、ユーザ(以下、プレイヤともいう)の操作にしたがって、内側撮像部24、あるいは、外側撮像部23等を通じて、例えば、人の顔画像を取得して保存することにより、顔画像を収集する機能を提供する。顔画像の収集にあたって、ユーザは、取得した顔画像を用いたゲーム(第1のゲーム)を実行し、そのゲームの結果が成功であった場合に、ユーザは取得した画像を保存することができる。ゲーム装置10は、後述するように、ゲーム処理を実行中にアクセス可能なセーブデータ記憶域Do(図11参照)に、取得した顔画像を保存する。そして、ユーザは、ゲーム装置10に対して同様の操作を繰り返して、複数の顔画像を収集し、セーブデータ記憶域Doに追加し、蓄積することができる。セーブデータ記憶域Doは、ゲーム実行中のゲーム装置10がアクセス可能な領域であるので、取得された顔画像がセーブデータ記憶域Doに保存されることによって、利用可能な状態となる。さらに、ゲーム装置10は、セーブデータ記憶域Doに蓄積したデータを読み出すことにより、第1のゲームの結果として収集した顔画像の一覧を表示する。そして、ゲーム装置10は、表示した顔画像の一覧の中からユーザが選択した顔画像、あるいは、ゲーム装置10が自動的に選択した顔画像を用いてゲーム(第2のゲーム)を実行する。
ゲーム装置10が実行するゲーム(第1のゲーム、第2のゲーム)は、例えば、敵オブジェクトEOに照準を合わせて攻撃を行い、敵オブジェクトEOを破壊するゲームである。そして、第1の実施形態では、例えば、ユーザが取得し、セーブデータ記憶域Do保存納前の顔画像、あるいはセーブデータ記憶域Do保存納後の顔画像が敵オブジェクトEO等のキャラクタオブジェクトのテクスチャとなって、敵オブジェクトEO等にマッピングされる。
まず、第1のゲーム実行段階では、ユーザは、例えば、カメラのような撮像部を介して所望の顔画像を取得し、第1のゲームを実行できる。そして、ユーザは、第1のゲームで成功することにより、取得した顔画像をセーブデータ記憶域Doに蓄積的に保存し、一覧表示し、第2のゲームに利用できる。ここで、蓄積的にとは、ユーザが新たな顔画像を取得し、さらに、第1のゲームで成功することによって、新たな顔画像が追加されることをいう。
そして、第2のゲームの実行段階では、ユーザは、収集した顔画像の中から所望の顔画像を選択して敵オブジェクトEOを作成することができる。そして、ユーザは、所望の顔画像を用いて作成した敵オブジェクトEOを用いたゲーム、例えば、作成した敵オブジェクトEOを破壊するゲームを実行することができる。ただし、ユーザの操作によらず、ゲーム装置10が自動的に、セーブデータ記憶域Doから、例えば、ランダムに顔画像を選択し、敵オブジェクトEO等を作成してもよい。なお、第1のゲームの実行段階においても、すでにセーブデータ記憶域Doに収集済みの顔画像を用いてキャラクタオブジェクトを作成し、セーブデータ記憶域Doに保存前の顔画像を用いたキャラクタオブジェクトとともに、ゲームに登場させてもよい。なお、以下で、複数の敵オブジェクトEOをそれぞれ区別する場合には、敵オブジェクトEO1、EO2のように呼ぶ。一方、敵オブジェクトEO1、EO2等を総称的に呼ぶ場合、および、複数の敵オブジェクトを区別する必要がない文脈では、敵オブジェクトEOのように呼ぶ。
次に、図7〜図10を参照して、第1の実施形態に係るゲーム装置10の表示例を説明する。図7は、ゲーム装置10の上側LCD22に一覧表示された顔画像の例である。上
述のように、ユーザは、第1のゲームで成功することにより、取得した顔画像を保存し、図7のように一覧表示できる。一覧表示される顔画像は、例えば、内側撮像部24、外側左撮像部23a、外側右撮像部23b等によって取得された画像データを人の顔面の3次元モデルにテクスチャマッピングしたものである。例えば、複数のポリゴンを組み合わせて形成した3次元モデルの表面に、画像データがテクスチャとして貼り付けられる。ただし、ゲーム装置10が実行するゲームでは、顔画像は、3次元モデルにテクスチャマッピングされたものに限定される訳ではない。例えば、ゲーム装置10は、単純な2次元画素配列に保持される画像データを顔画像として表示するようにしてもよい。また、図7のように一覧表示された顔画像のうち、いずれか1つ以上が単純な2次元画素配列に保持される顔画像であり、残りが3次元モデルにテクスチャマッピングされた顔画像であってもよい。
図7では、顔画像G1は、太線L1で囲まれている。太線L1は、顔画像G1が選択状態にあることを示している。選択状態とは、例えば、ユーザが操作ボタン14等を操作することによって、処理対象として選択された状態にあることをいう。選択状態は、フォーカスされた状態とも呼ばれる。ユーザが、例えば、操作ボタン14を押下するごとに、選択状態の顔画像は、左から右、上から下に移動する。例えば、図7の状態で、ユーザが、十字ボタン14Aを右方向に押下することで、選択状態の顔画像は、顔画像G1から顔画像G2、顔画像G2から顔画像G3のように、右方向に遷移する。選択状態の顔画像が遷移するとは、上側LCD22の画面上では、太線L1で取り囲まれる顔画像が変更されていくことをいう。
なお、図7で、顔画像の横の並びを1つの段と呼ぶことにする。この1つの段において右端の顔画像G4が選択状態にあって、さらに、ユーザが、十字ボタン14Aを右方向に押下すると、選択状態の顔画像は、次の下段の左下の顔画像G5となる。逆に、例えば、下段の左下の顔画像G5が選択状態にある場合に、ユーザが、十字ボタン14Aを左方向に押下することで、選択状態の顔画像は、顔画像G5から顔画像G4、顔画像G4から顔画像G3のように、上方向、右方向に遷移する。
ただし、選択状態の変更は、十字ボタン14Aの左右への押下に限定される訳でなく、上下への押下によって、選択状態が変更されるようにしてもよい。また、選択状態の変更は、十字ボタン14Aの押下に限定される訳ではなく、他の操作ボタン14、例えば、操作ボタン14B(Aボタン)を押下することによって、選択対象の画像を変更するようにしてもよい。また、下側LCD12上のタッチパネル13の操作によって、選択状態の顔画像を切り替えるようにしてもよい。例えば、ゲーム装置10は、上側LCD22に表示される顔画像の一覧と同様の顔画像の一覧を下側LCD12に表示しておく。そして、ゲーム装置10は、タッチパネル13への操作を検知することによって、どの顔画像が選択状態になったかを検知するようにしてもよい。そして、ゲーム装置10は、選択状態になった顔画像、例えば、顔画像G1を太線L1で取り囲んで表示するようにすればよい。
以上のように、ユーザは、上側LCD22に表示される、図7で例示される画面により、現在取得済みの顔画像の一覧を閲覧できる。また、ユーザは、現在取得済みの画面一覧から所望の顔画像を選択状態とすることができる。そして、例えば、所定の決定ボタン、例えば、下側LCD12に表示された決定ボタンなどをタッチパネル13あるいは操作ボタン14などで選択することで、選択状態を確定することができる。また、例えば、ユーザがボタン14C(Bボタンともいう)を押下することで、上側LCD22の顔画像の一覧画面が閉じて、図示しないメニュー選択待ちの画面を表示するようにしてもよい。
図8は、一覧表示された顔画像の他の例である。図8の例では、顔画像G5が選択状態にあり、太線L2で囲まれている。図8の例では、顔画像G5が選択状態になると、顔画
像G5と関連がある顔画像が反応している。例えば、顔画像G0の近傍にハートマークが表示され、かつ、顔画像G0が片目を閉じて、選択状態にある顔画像G5に向かって視線を送っている。また、例えば、顔画像G3、顔画像G7なども、選択状態にある顔画像G5に顔を向けて、視線を送っている。
ただし、選択状態にされた顔画像と関連性のある顔画像の反応は、顔を向ける、近傍にハートマークが表示され、片目を閉じて視線を送る、顔を向けて視線を送る、等の動作だけに限定される訳ではない。例えば、関連のある顔画像が、笑う、声を発する等の反応を示してもよい。逆に、選択状態にされた顔画像と関連のない顔画像が、笑っている表情から、笑わない表情に変わるようにしてもよい。また、選択状態にされた顔画像と関連のない顔画像が、選択状態にされた顔画像の方向と逆の方向を向くようにしてもよい。
ここで、関連のある顔画像は、例えば、顔画像取得の段階で定義しておくようにしてもよい。例えば、顔画像を分類するためのグループを事前に設定しておき、顔画像が取得されるときに、取得される顔画像がどのグループに属するかをユーザが入力するようにしてもよい。また、例えば、ゲームの進行に応じて、顔画像のグループを定義し、顔画像を分類するようにしてもよい。例えば、顔画像G0を用いて、ゲームを進行中に、新たに顔画像G1が取得されたような場合に、顔画像G0と顔画像G1とを同一のグループに属する関連のある顔画像同士であると決定してもよい。
図8のように、1つの顔画像、例えば、顔画像G5が操作ボタン14等によって選択状態にされたときに、他の顔画像G0、G3、G7などが反応すると、取得された顔画像間の親近感などを表現できるようになる。すなわち、単に収集した顔画像をグループに分けて分類するというのではなく、顔画像の表情、反応によって、複数の顔画像間での親近性を表現でき、実世界の人と人との関連性、親密度等を仮想のゲーム装置10の世界で表現できる。
図9、および図10は、顔画像をゲームキャラクタの1つである、敵オブジェクトEOにはめ込む処理の画面例である。図9は、敵オブジェクトEOの頭部選択画面の例である。例えば、ゲーム装置10の下側LCD12に表示されるメニューから、タッチパネル13への操作で、ユーザが「ボスを選ぶ」というメニューのリストを選択すると、図9のような、ゲーム装置10に用意されている敵オブジェクトEOの頭部形状の一覧が表示される。ただし、このような操作は、タッチパネル13による操作に限定される訳ではなく、例えば、操作ボタン14等による操作で、図9のような頭部形状の一覧が表示されるようにしてもよい。
図9では、頭部形状H1、H2、H3の3種類が選択可能に表示されている。例えば、頭部形状H1は、3次元モデルで形成された顔面部分H12と、顔面部分H12を取り囲む周辺部分H13とを含む。図7、図8で示したように、3次元モデルである顔面部分H12に、顔画像をテクスチャマッピングすることで、ゲームに登場する敵オブジェクトEOが形成される。
周辺部分H13は、ゲームに登場する敵オブジェクトEOの特徴を暗示した形状とすればよい。例えば、周辺部分H13が、兜(カブト)を模倣した形状であれば、敵オブジェクトEOの好戦的なイメージを表現できる。図9では、2行4列の頭部形状の一覧表に、3種類の頭部形状H1、H2、H3が例示されており、それら以外は、未定義のマークH0が表示されている。したがって、頭部形状H1−H3は、あくまでも例示であり、頭部形状の種類が3種類に限定される訳ではない。例えば、ゲームプログラムのバージョンアップ媒体、あるいは、インターネット上でゲームのパーツを提供するウェブサイトなどから、新たな頭部形状を追加できるようにしておいてもよい。
図9では、「ボス」というラベルLBにより、頭部形状H1がユーザによって、選択状態になっていることが示されている。ラベルLBは、例えば十字ボタン14A等によって、移動可能である。ユーザが十字ボタン14A等の操作によって、ラベルLBを移動することで、例えば、頭部形状H2、あるいはH3を選択状態とすることができる。そして、いずれかの頭部形状を選択状態とした後、ユーザが、操作ボタン14B(Aボタン)などを押下することで、選択状態を決定するようにすればよい。選択状態を決定することで、ラベルLBが配置され、選択状態となっている頭部形状、例えば、図9の例では、頭部形状H1の選択が確定する。なお、図9の画面が上側LCD22に表示されているときに、ユーザが操作ボタン14C(Bボタン)を押下することで、敵オブジェクトEOの頭部選択画面が閉じられ、前の操作画面に戻るようにすればよい。
図10は、顔画像選択画面を例示する図である。例えば、図9の敵オブジェクトEOの頭部選択画面が上側LCD22に表示されているときに、ユーザが操作ボタン14B(Aボタン)などを押下することで、頭部形状の選択状態を決定すると、図10の画面が表示される。図10の画面は、図7および図8と同様であるが、選択状態となった顔画像に図9で選択された頭部形状の周辺部分H13が付加される点で、図7および図8と相違する。
図10の画面において、ユーザが、十字ボタン14A等を操作することによって、選択対象の顔画像を変更することができる。すなわち、ユーザは、選択状態の顔画像を顔画像G0からG1へ、さらに、顔画像G1からG2へというように、移動可能である。そして、選択状態とされた顔画像は、頭部形状の顔面部分にテクスチャマッピングされて表示される。例えば、図10の例では、図9の画面で選択された頭部形状H1の顔面部分H12に、顔画像G2がテクスチャマッピングされ、周辺部分H13と組み合わせて表示される。
このような周辺部分H13と顔画像G2との組み合わせが表示されることによって、敵オブジェクトEOが一時的に作成される。ユーザは、一時的に表示される敵オブジェクトEOによって、ゲームで対決する敵のイメージを想像することになる。ユーザは、十字ボタン14A等を操作することによって、選択対象の顔画像を変更することで、敵オブジェクトEOの顔画像を取り替えることができる。すなわち、ユーザは、敵オブジェクトEOの顔を次々に取り替えて、ゲームで戦うイメージに合致する敵オブジェクトEOを作成できる。
すなわち、ゲーム装置10では、例えば、上記のように第1のゲームで成功することにより収集され、セーブデータ記憶域Doに蓄積された顔画像が次の第2のゲームに使用される。すなわち、ゲーム装置10では、収集した顔画像を用いて作成した敵オブジェクトEOを用いたゲーム処理が実行される。例えば、ゲーム装置10は、ユーザの操作にしたがって、ゲームの実行前に配役決定処理を呼ばれる処理を実行し、ユーザのイメージに合致する敵オブジェクトEOを生成する。あるいは、ゲーム装置10は、ゲームの実行前に自動的に、敵オブジェクトEOを生成する。「自動的に」とは、例えば、ゲーム装置10が収集された顔画像から顔画像を必要数、すなわち、ゲームに登場する敵オブジェクトEOの数だけ、ランダムに選択して、敵オブジェクトEOを生成することができることをいう。また、例えば、ゲーム装置10は、ユーザが過去に実行したゲーム処理の履歴から、ユーザの特性、指向などから、次にユーザが望むと推定される顔画像を選択して、敵オブジェクトEOを作成してもよい。ゲーム装置10は、顔画像とともに、顔画像の被写体の属性、例えば、年齢、性別、交友関係(家族、友人、職場・学校・地域などでの交流関係)、被写体がペット等の生物である場合の被写体の所有関係などを基に、現時点までのユーザによるゲームの実行履歴から、次に用いる顔画像を選択してもよい。また、例えば、
ゲーム装置10は、過去に実行したゲームにおけるユーザの成績から、次に用いる顔画像を選択してもよい。
ゲーム装置10は、このようなユーザの操作による指定、あるいは、ゲーム装置10の処理によって、作成された敵オブジェクトEOを用いたゲーム処理(第2のゲーム)を実行する。なお、ここでは、一例として、敵オブジェクトEOという呼び名で説明するが、ゲームに登場するキャラクタオブジェクトとしては、敵対関係にあるオブジェクトに限定されず、味方のキャラクタオブジェクトでもよい。また、敵味方という関係が存在するゲームに限定されず、ユーザ自身を模擬したプレイヤオブジェクトが登場するゲームでもよい。また、例えば、ゲームを実行するユーザを支援する、エージェントと呼ばれるオブジェクトが登場するゲームであってもよい。
ゲーム装置10は、以上のような敵オブジェクトEO等、様々なキャラクタオブジェクトが登場するゲームを実行する。このゲームに登場するキャラクタオブジェクトには、ユーザが第1のゲームで成功することにより収集した顔画像が、テクスチャマッピング等の手法により貼り付けられている。したがって、ゲーム装置10で実行されるゲームでは、ユーザ自身が収集した顔画像を含むキャラクタオブジェクトが登場する。このため、様々なキャラクタオブジェクトに、顔画像のような、人、あるいは、生物の特徴を象徴する部分の画像を用いることにより、ユーザは、その顔画像の人、あるいはその顔画像の生物との実世界の関係を反映したゲームを実行できる。例えば、愛情、好意、好感、逆に憎悪などの感情を込めたゲームを実行できるのである。
なお、図10の顔画像選択画面でも、図8と同様に、1つの顔画像が選択対象なったときに、選択対象とされている顔画像に関連する他の顔画像が反応を示すようにすればよい。例えば、図10の例では、選択対象とされ、頭部形状H1の周辺部分13と組み合わせられた顔画像G2に対して、関連する顔画像、例えば、顔画像G4が顔を向けて微笑み、視線を送っている。また、顔画像G5が、顔画像G2に対して、顔を上向きに上げて、うらやむような視線を送っている。また、G8、G9もG2の方向に視線を向けている。一方、図10では、顔画像G4、G5、G8、G9以外は、顔画像G2が選択対象とされたことに対して、反応を見せていない。このような反応の相違によって、複数の顔画像同士の親近関係を表現できる。このように、ゲーム装置10は、顔画像がユーザと特定の関係ある場合、例えば、複数の友人グループに属するような場合など、実世界の人と人との親密さの関係をゲーム装置10が表現する仮想の世界に持ち込み、描写することを可能としている。
<各種データの一例>
図11は、画像処理プログラムを実行することに応じて、メインメモリ32に記憶される各種データの一例を示す図である。
なお、ゲーム装置10の処理を実行するためのプログラムは、ゲーム装置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、照準カーソル画像データDm、管理データDn、セーブデータ記憶域Do等が格納される。また、メインメモリ32のプログラム記憶領域には、画像処理プログラムを構成する各種プログラム群Paが記憶される。
《操作データDa》
操作データ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に格納されて更新される。
なお、後述するゲーム処理(例えば、図20A以下の処理等)では、操作子データDa1および角速度データDa2が処理周期である1フレーム毎にそれぞれ更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、操作ボタン14やアナログスティック15等の操作子をユーザが操作したことを検出する周期毎に操作子データDa1を更新し、当該更新された操作子データDa1を処理周期毎に利用する態様でもかまわない。また、角速度センサ40の角速度検出周期毎に角速度データDa2を更新し、当該更新された角速度データDa2を処理周期毎に利用する態様でもかまわない。この場合、操作子データDa1や角速度データDa2を更新するそれぞれの周期と、処理周期とが異なることになる。
《実カメラ画像データDb》
実カメラ画像データDbは、外側撮像部23および内側撮像部24のいずれかが撮像した実カメラ画像を示すデータである。後述する処理の説明においては、実カメラ画像を取得するステップにおいて外側撮像部23および内側撮像部24のいずれかが撮像した実カメラ画像を用いて、実カメラ画像データDbを更新する態様を用いる。なお、外側撮像部23または内側撮像部24が撮像し、撮像された実カメラ画像を用いて実カメラ画像データDbを更新する周期は、ゲーム装置10における処理の単位時間(例えば、1/60秒)と同じでもいいし、当該単位時間より短い時間でもかまわない。ゲーム装置10における処理の周期より実カメラ画像データDbを更新する周期が短い場合、後述する処理とは独立して適宜実カメラ画像データDbを更新してもかまわない。この場合、後述する実カメラ画像を取得するステップにおいて、実カメラ画像データDbが示す最新の実カメラ画像を常に用いて処理すればよい。以下、本実施形態では、実カメラ画像データDbは、外側撮像部23(例えば、外側左撮像部23a)により撮像した実カメラ画像を示すデータであるとする。
《実世界画像データDc》
後述するゲーム処理、例えば、図14のステップ18のゲーム実行の処理、さらに具体的には、図20A以降に示す処理では、ゲーム装置10の実カメラ(外側撮像部23または内側撮像部24)が撮像した実カメラ画像をテクスチャマッピングする境界面3が導入される。実世界画像データDcは、ゲーム装置10の実カメラ(外側撮像部23または内側撮像部24)が撮像した実カメラ画像を用いて、境界面3上に存在しているように見え
る実世界画像を生成するためのデータである。後述する第1の描画方法では、例えば、実世界画像データDcは、実世界画像を境界面(仮想カメラの表示範囲のスクリーンオブジェクト)に張り付けるための実カメラ画像のテクスチャデータを含んでいる。また、後述する第2の描画方法では、例えば、実世界画像データDcは、実世界画像を生成するための平面ポリゴンのデータ、当該平面ポリゴンにマッピングするための実カメラ画像のテクスチャデータ、および当該平面ポリゴンの仮想空間上の位置(後述する実世界描画用カメラからの位置)を示すデータ等を含んでいる。
<境界面データDd>
境界面データDdは、上記実世界画像データDcと合わせて、境界面3上に存在しているように見える実世界画像を生成するためのデータである。第1の描画方法では、例えば、境界面データDdは、スクリーンオブジェクトに関するデータであり、境界面3を構成する各点の状態(例えば、開口の有無)を示す開口判定用データ(後述するαテクスチャのデータに相当する)、境界面3の仮想空間上の配置位置(境界面3の仮想空間上の座標)を示すデータ等を含んでいる。また、第2の描画方法では、例えば、境界面データDdは、上記実世界画像の平面ポリゴンに開口を表現するためのデータであり、境界面3を構成する各点の状態(例えば、開口の有無)を示す開口判定用データ(後述するαテクスチャのデータに相当する)、境界面3の仮想空間上の配置位置(境界面3の仮想空間上の座標)を示すデータ等を含んでいる。境界面3の仮想空間上の配置位置を示すデータは、例えば、上記球体表面の条件式(仮想空間上における球体表面を定義する関係式)であり、境界面3の仮想空間上の存在範囲を示す。
開口状態を示す開口判定用データは、例えば、各点のアルファ値(不透明度)を設定可能な2次元(例えば、2048ピクセル×384ピクセル等の矩形形状)のテクスチャデータである。アルファ値は、“0”が最小で“1”が最大の、“0”から“1”までの値である。アルファ値は、“0”で透明を示し、“1”で不透明を示す。開口判定用データは、開口判定用データに「0」が格納されている位置は開口状態であり、「1」が格納されている位置は開口ではない状態であることを示すことができる。アルファ値は、例えば、ゲーム装置10内部で生成されるゲーム世界の画像、或いは上側LCD22における画素又は複数の画素からなる画素ブロック単位に設定することができる。本実施形態では、非開口領域には、「0を超える1未満の所定値(本実施形態においては0.2が設定される)」が格納される。このデータは、実世界画像に適用する時には使用されない。実世界画像に適用する場合、開口判定用データに格納されたアルファ値「0.2」は「1」として取り扱われる。なお、当該アルファ値「0.2」は、前述の敵オブジェクトEOの影ESの描画時に使用される。ただし、当該アルファ値の設定、及びアルファ値の取り得る値の範囲は、本発明の画像処理プログラムを限定するものではない。
本実施形態における画像処理プログラムは、第1の描画方法では、この開口判定用データのうち仮想カメラの撮影範囲に対応する領域と、境界面3に張り付けられる実世界画像のテクスチャの色情報(画素値)とを掛け算することによって、開口を有する実世界画像を生成することができる。また、第2の描画方法では、この開口判定用データのうち仮想世界描画用カメラの撮影範囲に対応する領域と、実世界画像(具体的には、上記実世界画像データDcを用いて後述する平行投影によりレンダリングされた実カメラ画像のレンダリング画像データ)の色情報(画素値)とを掛け算することによって、開口を有する実世界画像を生成することができる。なぜなら、開口位置に格納されたアルファ値「0」と当該位置における実世界画像の色情報とが掛け算されることによって、実世界画像の色情報の値が「0」(完全に透明な状態)となるからである。
なお、第1の描画方法では、後述するとおり、当該開口判定用データが適用された実世界画像のオブジェクトを含んだ各仮想オブジェクトの仮想空間画像がレンダリングされる
ことにより上側LCD22に表示される画像が生成される。
また、第2の描画方法では、具体的には、後述するとおり、当該開口判定用データを考慮して仮想空間画像がレンダリングされる。すなわち、開口判定用データに基づいて、各仮想オブジェクトの境界面に対する優先度(実世界画像に対する優先度)が判定され、各仮想オブジェクトがレンダリングされることにより仮想空間画像として生成される。そして、このようにして生成された実世界画像と仮想空間画像とを合成することで、上側LCD22に表示される画像が生成される。
また、本実施形態における画像処理プログラムでは、境界面3の形状は球体表面である(図20A及び図20B参照)。そして、本実施形態における開口判定用データの形状は、矩形形状としてよい。この矩形形状の開口判定用データを、図20A及び図20Bで図示したような球体表面の中央部にマッピングすることにより、開口判定用データの各点と境界面の各点とを対応させることができる。
なお、本実施形態において開口判定用データは図20Aで示す球体表面の中央部に対応するデータのみであるため、仮想カメラ(第2の描画方法では、仮想世界描画用カメラ)の向きによっては、開口判定用データが存在しない場合がある。このように開口判定用データが存在しない場合は、実世界画像はそのまま描画される。すなわち、α値としては「1」が設定されているとして描画される。
境界面3上に作成される開口の画像処理については後述する。
<奥壁画像データDe>
奥壁画像データDeは、第2空間2に存在する奥壁BWに関するデータである。例えば、奥壁画像データDeは、奥壁BWの画像を生成するための画像データ、および当該奥壁BWを定義するポリゴンモデルの仮想空間上の位置を示すデータ等を含んでいる。
奥壁BWを定義するポリゴンモデルは、典型的には、仮想カメラ(第2の描画方法では、仮想世界描画用カメラ)の位置から伸びる鉛直軸を中心として、図20Aで示す球体の半径より大きな半径を有し、図20Aで示す球体の中央部と同じ形状のモデルである。すなわち、奥壁BWを定義するモデルは、境界面3を内含する。また、境界面3に形成される開口予定位置の背後に配置される平面ポリゴンであっても良い。また、境界面3に開口が形成される毎に、第2空間2においてその開口の投影面を定義する平面ポリゴンが配置されるようにしても良い。
奥壁BWのポリゴンモデルに貼り付けられる画像データ(テクスチャ)は、任意でよい。もっとも、この画像データは、実世界画像の背後に存在する別の空間(第2空間2)を表現するため、宇宙空間,空,水中を示す画像のような非現実を表現する画像であると、プレイヤに対して、現実空間の向こうに非現実な空間があるかのような不思議な感覚を喚起できることで好ましい。例えば、本実施形態のゲームを部屋の中でプレイしているときには、部屋の向こうに非現実な空間があるかのような感覚を与えることができる。また、奥壁のテクスチャは、砂漠、荒野のような普段目にすることのない風景を表現するものであってもよい。このように、奥壁BWのテクスチャの選択によって、ゲーム世界の背景として表現された現実画像の背後に潜む別世界に対する所望のイメージをプレイヤに知らしめることができる。
また、例えば、当該画像データが、宇宙の画像等の繰り返し表現を用いることができる画像であれば、画像データ(テクスチャ)のデータサイズを小さくすることができる。また、当該画像データが、このような画像であれば、仮想空間上の奥壁BWの描画されるべ
き位置を特定しなくても、奥壁BWの画像を描画することができる。なぜなら、繰り返し表現を用いることができる画像であれば、描画される画像は位置に依らない(ポリゴンモデル全体に繰り返しパターンを表現できる)からである。
なお、本実施形態において、後述する描画の優先度はアルファ値によって定められるため、当該画像データにはアルファ値が定められているものとする。本実施形態では、当該画像データに定められているアルファ値は「1」であるとする。
<敵オブジェクトデータDf>
敵オブジェクトデータDfは、敵オブジェクトEOに関するデータであり、実体データDf1、シルエットデータDf2、および開口形状データDf3を含んでいる。
実体データDf1は、敵オブジェクトEOの実体を描画するためのデータであり、例えば、敵オブジェクトEOの実体の3次元形状を定義したポリゴンモデルと、当該ポリゴンモデルにマッピングするためのテクスチャデータである。当該テクスチャデータは、例えば、ゲーム装置10の各撮像部で撮像したユーザ等の顔写真等であってもよい。なお、本実施形態において、後述する描画の優先度はアルファ値によって定められるため、当該テクスチャデータにはアルファ値が定められているものとする。本実施形態では、当該テクスチャデータに定められているアルファ値は「1」であるとする。
シルエットデータDf2は、第2空間2に存在する敵オブジェクトEOの影を実世界画像上に半透明で描画するためのデータであり、ポリゴンモデルとそのポリゴンモデルに貼り付けられるテクスチャデータとを含む。例えば、このシルエットモデルは、前述したように、8枚の平面ポリゴンを含み、第2空間2に存在する敵オブジェクトEOの位置と同じ位置に配置される。このテクスチャが貼り付けられたシルエットモデルを仮想世界描画用カメラで撮影して実世界画像上に半透明などで描画することにより、第2空間2に存在する敵オブジェクトEOの影を表現できる。また、シルエットデータDf2のテクスチャデータは、例えば、図27A及び図27Bに示すように、敵オブジェクトEOを各方向からみた画像であってもよい(例えば、8枚の平面ポリゴン)。更に、当該画像は、敵オブジェクトEOのシルエットモデルを簡素化した画像であってもよい。なお、本実施形態において、後述する描画の優先度はアルファ値によって定められるため、シルエットモデルに張り付けられるテクスチャデータにはアルファ値が定められているものとする。本実施形態では、当該テクスチャデータに定められているアルファ値は、影画像部分について「1」であり、影画像がない部分(周囲の部分)について「0」であるとする。
開口形状データDf3は、敵オブジェクトEOが第1空間1と第2空間2を往来する際に境界面3上に生成する開口の形状に関するデータである。本実施形態では、開口形状データDf3は、開口を生成する境界面3上の位置に対応する開口判定用データの位置におけるアルファ値を「0」にするためのデータである。例えば、開口形状データDf3は、生成する開口の形状に合わせた、アルファ値「0」のテクスチャデータである。なお、本実施形態では、開口判定用データに対して、上記敵オブジェクトEOが境界面3を通った位置に対応する箇所を中心として、当該開口形状データDf3の形状分だけアルファ値「0」に設定する。敵オブジェクトEOが境界面3上に開口を生成する際の画像処理については後述する。
<弾オブジェクトデータDg>
弾オブジェクトデータDgは、プレイヤの攻撃操作に応じて発射される弾オブジェクトBOに関するデータである。例えば、弾オブジェクトデータDgは、弾オブジェクトBOを描画するためのポリゴンモデル及び弾画像(テクスチャ)データ、弾オブジェクトBOの配置方向や配置位置を示すデータ、および弾オブジェクトBOの移動速度や移動方向(
例えば、移動速度ベクトル)を示すデータ等を含んでいる。なお、本実施形態において、後述する描画の優先度はアルファ値によって定められるため、弾画像データにはアルファ値が定められているものとする。本実施形態では、弾画像データに定められているアルファ値は「1」であるとする。
<得点データDh>
得点データDhは、敵オブジェクトEOが登場するゲームの得点を示すデータである。例えば、上述のとおり、ゲームの得点は、攻撃操作によって敵オブジェクトEOを退治することによって加点され、敵オブジェクトEOがユーザの位置(つまり、仮想空間上における仮想カメラの配置位置)に到達することによって減点される。
<動きデータDi>
動きデータDiは、実空間におけるゲーム装置10の動きを示すデータである。一例として、ゲーム装置10の動きは、角速度センサ40によって検出された角速度によって算出される。
<仮想カメラデータDj>
仮想カメラデータDjは、仮想空間に設置される仮想カメラに関するデータである。第1の描画方法では、例えば、仮想カメラデータDjは、仮想カメラの仮想空間上の配置方向や配置位置を示すデータを含んでいる。また、第2の描画方法では、例えば、仮想カメラデータDjは、実世界描画用カメラの仮想空間上の配置方向や配置位置を示すデータと、仮想世界描画用カメラの仮想空間上の配置方向や配置位置を示すデータのそれぞれを含む。そして、例えば、第1の描画方法における仮想カメラ及び第2の描画方法における仮想世界描画用カメラの仮想空間上の配置方向や配置位置を示すデータは、動きデータDiが示すゲーム装置10の動き(角速度)に応じて変化する。さらに、仮想カメラデータDjは、仮想カメラの画角(撮像範囲)データを含んでいる。これによって、第1の描画方法における仮想カメラ及び第2の描画方法における仮想世界描画用カメラの位置及び向きの変化に応じて、境界面3上の撮像範囲(撮像位置)が変化する。
<レンダリング画像データDk>
レンダリング画像データDkは、後述する処理によりレンダリングされた画像に関するデータである。
第1の描画方法では、実世界画像を仮想空間上のオブジェクトとしてレンダリングするため、レンダリング画像データDkは、仮想空間のレンダリング画像データを含む。仮想空間のレンダリング画像データは、敵オブジェクトEO、弾オブジェクトBO、実世界画像がテクスチャとして貼られた境界面3(スクリーンオブジェクト)、奥壁BWが配置された仮想空間を仮想カメラにより透視投影でレンダリングすることによって得られる仮想世界画像を示すデータである。
他方、第2の描画方法では、実世界画像と仮想世界画像を別々の仮想カメラでレンダリングするため、レンダリング画像データDkは、実カメラ画像のレンダリング画像データおよび仮想空間のレンダリング画像データを含んでいる。実カメラ画像のレンダリング画像データは、実カメラ画像のテクスチャがマッピングされた平面ポリゴンを、実世界画像描画用カメラにより平行投影でレンダリングすることによって得られる実世界画像を示すデータである。仮想空間のレンダリング画像データは、敵オブジェクトEO、弾オブジェクトBO、境界面3、奥壁BWが配置された仮想空間を仮想世界描画用カメラにより透視投影でレンダリングすることによって得られる仮想世界画像を示すデータである。
<表示画像データDl>
表示画像データDlは、上側LCD22に表示される表示画像を示すデータである。第1の描画方法では、例えば、上側LCD22に表示される表示画像は、仮想空間のレンダリング処理により生成される。また、第2の描画方法では、例えば、上側LCD22に表示される表示画像は、上記カメラ画像のレンダリング画像データと仮想空間のレンダリング画像データとを後述する方法で合成することによって生成される。
<照準カーソル画像データDm>
照準カーソル画像データDmは、上側LCD22に表示される照準カーソルALの画像データである。当該画像データは、任意のデータでよい。
なお、本実施形態では、描画に用いられる各オブジェクトに関するデータ(境界面データDd、奥壁画像データDe、実体データDf1、シルエットデータDf2、弾画像データ)は、描画の優先度を定める優先度情報を含んでいる。本実施形態では、当該優先度情報は、アルファ値が用いられているとする。当該アルファ値と画像処理の関係については後述する。
また、本実施形態では、描画に用いる各オブジェクトに関するデータは、核オブジェクト間でデプス判定を行うか否かを示すデータが含まれている。当該データは、上述のとおり、敵オブジェクトEO、弾オブジェクトBO、半透明の敵オブジェクト、エフェクトオブジェクト、スクリーンオブジェクト(境界面3)との間は、互いにデプス判定が有効となるように設定されている。また、当該データは、「影用の平面ポリゴン(シルエットデータDf2)と敵オブジェクトEO(実体データDf1)の間」「影用の平面ポリゴン(シルエットデータDf2)と弾オブジェクトBOの間」「影用の平面ポリゴン(シルエットデータDf2)と半透明の敵オブジェクトの間」「影用の平面ポリゴン(シルエットデータDf2)とエフェクトオブジェクトの間」は、互いにデプス判定が有効となるように設定されている。さらに、当該データは、影用の平面ポリゴン(シルエットデータDf2)とスクリーンオブジェクト(境界面データDd)との間は、デプス判定が無効となるように設定されている。
《管理データDn》
管理データDnは、収集した顔画像等、ゲーム装置10が処理するデータ、あるいは、ゲーム装置10が蓄積したデータ等を管理するためのデータである。管理データDnは、例えば、顔画像管理情報Dn1、顔画像属性集計表Dn2等を含む。顔画像管理情報Dn1には、個々の顔画像のデータの記憶先(例えば、メインメモリ32等のアドレス)、顔画像の取得元(例えば、内側撮像部24、外側撮像部23)、顔画像の属性(例えば、顔画像の被写体の性別、年齢等)、顔画像と関連する他の顔画像の情報等が格納される。また、顔画像属性集計表Dn2には、ユーザが現在収集済みの顔画像の属性ごとの収集点数が格納される。例えば、収集した顔画像の被写体を性別、年代等で分類したときの、それぞれの分類ごとの収集実績値が格納される。顔画像管理情報Dn1、顔画像属性集計表Dn2のデータ構造例については後述する。
《セーブデータ記憶域Do》
セーブデータ記憶域Doは、情報処理部31が、ゲームプログラム等の画像処理プログラムを実行するときに、情報処理部31が処理対象とするデータ、情報処理部31が処理した結果のデータ等を保存する領域である。一例としては、本実施形態では、ゲーム装置10が、内側撮像部24、外側撮像部25、無線通信モジュール36、ローカル通信モジュール37等を介して、ゲーム装置10が取得した顔画像のデータが保存される。本実施形態では、例えば、ゲーム装置10が取得した顔画像がメインメモリ32に一時的に記憶された状態で、情報処理部31は第1のゲームを実行する。そして、ユーザの操作にしたがって、ユーザが第1のゲームで成功したと判断されたときに、情報処理部31は、メイ
ンメモリ32に一時的に記憶された顔画像をセーブデータ記憶域Doに保存する。セーブデータ記憶域Doに保存された顔画像は、以降のゲーム処理等で利用可能となる。
セーブデータ記憶域Doの構造に特に限定はない。例えば、セーブデータ記憶域Doは、通常のメモリと同一の物理アドレス空間におかれて、情報処理部31からアクセスできるようにしてもよい。また、例えば、情報処理部31が、必要なタイミングで所定のブロック単位、あるいはページ単位で確保(割付、アロケートなどともいう)可能としておいてもよい。また、例えば、セーブデータ記憶域Doは、コンピュータのファイルシステムと同様に、ブロックを接続するポイントのような管理情報で接続される構造としてもよい。
さらに、セーブデータ記憶域Doは、例えば、ゲーム装置10で実行されるプログラムごとに個別の領域が確保されるようにしてもよい。したがって、一のゲームプログラムがメインメモリ32にローディングされたときに、情報処理部31は、ゲームプログラムの管理情報などを基に、セーブデータ記憶域Doにアクセス(データを入出力)するようにしてもよい。
さらにまた、一のプログラムのセーブデータ記憶域Doが、他のプログラムを実行中の情報処理部31からアクセス可能としてもよい。このようにすることで、一のプログラムで処理したデータを他のプログラムに引き渡すことを可能としてもよい。例えば、後述する第1のゲームを実行された結果として、セーブデータ記憶域Doに保存された顔画像のデータを第2のゲームを実行中の情報処理部31が読み出して、キャラクタオブジェクトを作成できるようにしてもよい。なお、セーブデータ記憶域Doは、第2記憶領域の一例である。
<各種データの構造>
図12および図13を参照して、ゲーム装置10内で、顔画像を管理するデータ構造の一例を説明する。
図12は、ゲーム装置10に保存された顔画像を管理する顔画像管理情報Dn1のデータ構造の一例である。ゲーム装置10は、保存した顔画像のデータを顔画像管理情報Dn1に記録することで、例えば、図7、図8のような形式で、顔画像の一覧を上側LCD22の画面などに表示できるようになる。顔画像管理情報Dn1は、例えば、顔画像ごとに1レコード用意される情報として作成される。画像管理情報Dn1は、例えば、データ保存用内部メモリ35、データ保存用外部メモリ46などに保存される。図12で、レコード1により、レコードの要素を例示する。また、図12では、レコード2以降の詳細は省略している。また、情報処理部31は、例えば、図示しないが、顔画像管理情報Dn1の総レコード数、すなわち、取得した顔画像の総数をデータ保存用内部メモリ35、データ保存用外部メモリ46などに保存しておけばよい。
図12の例では、顔画像管理情報Dn1は、例えば、顔画像識別情報、顔画像データのアドレス、顔画像の取得先、性別の推定、年齢の推定、関連顔画像情報1−N等を有している。ただし、図12は顔画像管理情報Dn1の一例であり、顔画像管理情報が図12に例示された要素に限定される訳ではない。
顔画像識別情報は、保存された顔画像をユニークに識別する情報である。顔画像識別情報は、例えば、通し番号でもよい。
顔画像データのアドレスは、例えば、顔画像のデータが格納されるデータ保存用内部メモリ35あるいはデータ保存用外部メモリ46等のアドレスである。ただし、例えば、O
S(オペレーティングシステム)によってファイルシステムが構築されている記憶媒体に顔画像データが格納される場合には、顔画像データのアドレスとして、ファイルシステム中のパス名、ファイル名などを設定するようにしてもよい。
顔画像の取得元は、例えば、顔画像を取得した撮像装置を識別する情報である。顔画像の取得元としては、例えば、内側撮像部24、外側左撮像部23a、および外側右撮像部23bを識別する情報が設定される。ただし、顔画像取得のために、外側左撮像部23aおよび外側右撮像部23bの両方が使用された場合には、両方を示す情報が設定される。また、例えば、内側撮像部24、外側左撮像部23a、および外側右撮像部23b以外に、例えば、ゲーム装置10外の他の撮影装置で顔画像が取得された場合には、その旨を示す情報(例えば「他」)が設定される。ゲーム装置10外の他の撮影装置で顔画像が取得される場合とは、例えば、外部メモリインターフェイス33、無線通信モジュール36、ローカル通信モジュール37等を通じて、ゲーム装置10と同様の他のゲーム装置10で撮影した画像を取得した場合などである。また、外部メモリインターフェイス33、無線通信モジュール36等を通じて、ゲーム装置10以外のカメラで得られた画像、スキャナで得られた画像、ビデオ機器からの映像等の画像を取得した場合も含まれる。
性別の推定は、顔画像が男性か女性かを示す情報である。性別の推定は、例えば、後述する他の実施形態に示す処理したがって実行すればよい。年齢推定は、顔画像の人の年齢を示す情報である。年齢の推定は、例えば、後述する他の実施形態に示す処理したがって実行すればよい。
関連画像の識別情報1−Nは、それぞれ、当該顔画像と関連する他の顔画像を示す情報である。例えば、関連画像の識別情報1−Nは、最大N個の他の関連する顔画像の顔画像識別情報を設定すればよい。関連する他の顔画像は、例えば、GUIを通じたユーザ操作によって、指定されるようにしてもよい。例えば、新たに、顔画像が取得されたときに、取得された顔画像と関連する顔画像1以上をユーザが操作ボタン14等によって選択対象とした上で、関連画像設定を指示するGUIの操作を情報処理部31が検出するようにすればよい。あるいは、単に、本人、友人、同僚、他人等、ゲーム装置10が用意した分類によって、取得された顔画像を分類するようにしてもよい。そして、同一の分類に属する顔画像を関連画像の識別情報1−Nを用いてリンクするようにしてもよい。ただし、ゲーム装置10が用意した分類で顔画像を分類する場合には、関連顔画像の識別情報1−Nのエントリを用意する代わりに、単に、「顔画像の分類」という要素を設け、本人、友人、同僚、他人等設定するようにしてもよい。また、図12では、関連画像の識別情報1からNとして、固定数で示したが、Nの数を可変数としてもよい。その場合には、設定済みの数Nを顔画像管理情報Dn1に保持するようにすればよい。さらに、例えば、関連する顔画像の間で、顔画像管理情報Dn1のレコードとレコードとをポインタのチェーンで接続するようにしてもよい。
図13に、顔画像属性集計表Dn2のデータ構造例を示す。顔画像属性集計表Dn2は、取得済みの顔画像を属性によって分類し、分類された画像数を集計した表である。以下、顔画像属性集計表Dn2を単に集計表ともいう。情報処理部31は、例えば、データ保存用内部メモリ35、データ保存用外部メモリ46等に、図13の集計表を保存している。図13の例では、集計表は、性別(男性、女性)、年齢層(10歳未満、10代、20代、30代、40代、50代、60代、70以上)との組み合わせによって分類された各行に、顔画像取得数を記憶している。すなわち、図13の表の各行は、性別、年齢、および顔画像取得数という要素を含む。顔画像取得数には、取得済みの顔画像が分類され、その取得数が集計されている。ただし、顔画像の分類、あるいは属性が、図13に例示した性別、あるいは年齢層に限定されるわけではない。
<処理フローの例>
図14から図19により、ゲーム装置10の情報処理部31で実行される画像処理プログラムによる動作例を説明する。まず、ゲーム装置10の電源(電源ボタン14F)がONにされると、CPU311によってブートプログラム(図示せず)が実行され、これにより内蔵メモリまたは外部メモリ45やデータ保存用外部メモリ46に格納されているプログラムがメインメモリ32においてCPU311が実行可能な形式で展開される。ここで、CPU311が実行可能な形式とは、例えば、CPU311の機械命令が所定の処理順で記述され、メインメモリ32の適切なアドレスに配置され、CPU311の機械命令を処理する制御部から読み出し可能な形式をいう。実行可能な形式で展開することを単にロードするともいう。なお、図14〜図19においては、第1の実施形態に直接関連しない処理についての記載を省略する。
図14は、情報処理部31による動作の一例を示すフローチャートである。情報処理部31は、電源ONの後の一連の処理の後、ユーザの操作、例えば、下側LCD12に表示されるグラフィカルユーザインターフェース(以下、GUI)、例えば、メニューあるいは、アイコンなどのグラフィックオブジェクトに対するタッチパネル13あるいは操作ボタン14を通じた操作を検出すると、図14の処理を実行する。以下、GUIに対するタッチパネル13あるいは操作ボタン14を通じたユーザの操作を単に、「GUIに対する操作」という。図14の例では、情報処理部31は、ユーザの操作待ちとなる(ステップ8)。以下、図面中では、「ステップ」を「S」と略称する。
次に、ユーザの操作を検出すると、情報処理部31は、ステップ9以下の処理を実行する。例えば、ユーザのGUIに対する操作が、「内側撮像部24による顔画像の取得」の指示である場合(ステップ9でYesの場合)、情報処理部31は、顔画像取得処理1を実行する(ステップ10)。ここで、「内側撮像部24による顔画像」の指示とは、例えば、GUI等を通じたユーザに操作によって内側撮像部24を用いた撮影の指示をいう。その後、情報処理部31は、制御をステップ19に進める。顔画像取得処理1については、図15を参照して後述する。一方、ユーザのGUIに対する操作が「内側撮像部24による顔画像の取得」の指示でない場合(ステップ9でNoの場合)には、情報処理部31は、制御をステップ11に進める。
次に、例えば、ユーザのGUIに対する操作が、「外側撮像部23による顔画像の取得」の指示である場合(ステップ11でYesの場合)、情報処理部31は、顔画像取得処理2を実行する(ステップ12)。その後、情報処理部31は、制御をステップ19に進める。ここで、「外側撮像部23による顔画像」の指示とは、例えば、GUI等を通じたユーザに操作によって外側撮像部23を用いた撮影の指示をいう。顔画像取得処理2については、図16を参照して後述する。一方、ユーザのGUIに対する操作が「外側撮像部23による顔画像の取得」の指示でない場合(ステップ11でNoの場合)には、情報処理部31は、制御をステップ13に進める。
次に、ユーザのGUIに対する操作が収集した顔画像の一覧表示の指示である場合(ステップ13でYesの場合)、情報処理部31は、一覧表示処理を実行する(ステップ14)。その後、情報処理部31は、制御をステップ19に進める。一覧表示処理については、図17を参照して後述する。一方、ユーザのGUIに対する操作が収集した顔画像の一覧表示の指示でない場合(ステップ13でNoの場合)には、情報処理部31は、制御をステップ15に進める。
ユーザのGUIに対する操作が配役の決定指示である場合(ステップ15でYesの場合)、情報処理部31は、配役決定処理を実行する(ステップ16)。その後、情報処理部31は、制御をステップ19に進める。配役決定処理については、図18を参照して後
述する。一方、ユーザのGUIに対する操作が配役の決定指示でない場合(ステップ15でNoの場合)には、情報処理部31は、制御をステップ17に進める。
ユーザの操作がゲームの実行指示である場合(ステップ17でYesの場合)、情報処理部31は、ゲームを実行する(ステップ18)。ステップ18の処理が第2のゲーム処理ステップの一例である。ゲーム装置10は、ステップ16の配役決定処理で作成された敵オブジェクトEO等、様々なキャラクタオブジェクトが登場するゲーム処理を実行する。ゲームの種類に限定はない。例えば、ステップ18で実行されるゲームは、ユーザが配役決定処理で作成された敵オブジェクトEOと戦闘を行うゲームでもよい。この場合に、例えば、ユーザは、ステップ10の顔画像取得処理1、ステップ12の顔画像取得処理2で収集され、ステップ14の一覧表示処理で表示された顔画像の敵オブジェクトEOと戦闘をすることになる。また、例えば、このゲームは、ユーザを象徴するプレイヤオブジェクトが様々な関門、障害等を乗り越えて進む冒険ゲームでもよい。また、このゲームは、歴史上の登場人物が登場する戦争シミュレーション、プレイヤオブジェクトが登場する経営シミュレーション、プレイヤオブジェクトが登場する乗り物等の運転シミュレーション等のゲームでもよい。また、ゲームは、小説の原作をモデルにした、上記キャラクタオブジェクトが登場するノベルゲームでもよい。また、ゲームは、ユーザが物語に登場する主人公や登場人物を操作し、その役割を演じて遊ぶロールプレイングゲーム(RPG)と呼ばれるものでもよい。また、ゲームは、単に、登場するエージェントによってユーザが支援を受けて何らかのトレーニングを行うものでもよい。
このようなゲーム処理に登場するキャラクタオブジェクトには、ユーザがステップ10の第1のゲームで成功することにより収集した顔画像が、テクスチャマッピング等の手法により貼り付けられている。したがって、ステップ18で実行されるゲームでは、ユーザ自身が収集した顔画像を含むキャラクタオブジェクトが登場する。このため、様々なキャラクタオブジェクトについて、顔画像という、人、あるいは生物などを象徴する部分の画像を用いることにより、ユーザは、その顔画像の人(あるいは生物)との実世界の関係を反映したゲームを実行できる。例えば、愛情、好意、好感、逆に憎悪などの感情を込めたゲーム処理を実行できるのである。
一方、ユーザの操作がゲームの実行指示でない場合(ステップ17でNoの場合)には、情報処理部31は、制御をステップ19に進める。
そして、情報処理部31は、処理を終了するか否かを判定する。情報処理部31は、GUIを通じて処理を終了する指示を検出すると、図14の処理を終了する。一方、情報処理部31は、GUIを通じて、終了しない指示(例えば、再実行指示)を検出すると、画像属性管理支援処理1を実行する(ステップ1A)。顔画像管理支援処理1は、例えば、すでに取得済みの顔画像を基に、次に取得する顔画像の属性等に関して、ユーザに情報を提供し、ユーザの顔画像取得を支援する処理である。画像属性管理支援処理1については、図19Aにより、詳細処理例を後述する。その後、情報処理部31は、制御をステップ8に戻す。
図15は、顔画像取得処理1(図14のステップ10)の詳細処理の一例を示すフローチャートである。この処理では、情報処理部31は、まず、顔画像管理支援処理2を実行する(ステップ100)。顔画像管理支援処理2は、例えば、すでに取得済みの顔画像を基に、次に取得する顔画像の属性等に関して、ユーザに情報を提供し、ユーザの顔画像取得を支援する処理である。顔画像管理支援処理2の詳細処理例については、図19Bにより後述する。
次に、情報処理部31は、顔画像取得処理を実行する(ステップ101)。情報処理部
31のCPU311は、画像取得手段の一例として、ステップ101の処理を実行する。
情報処理部31は、例えば、内側撮像部24、外側左撮像部23a、または、外側右撮像部23bを通じて撮影される画像を所定の周期で取り込み、上側LCD22に表示する。この場合の表示周期は、ゲーム装置10における処理の単位時間(例えば、1/60秒)と同じでもいいし、当該単位時間より短い時間でもかまわない。ゲーム装置10の電源がオンとなり画像処理プログラムがロードされた直後、あるいは、図14の処理起動直後の初期状態では、情報処理部31は、例えば、内側撮像部24からの画像を上側LCD22に表示する。なお、下側LCD12には、例えば、内側撮像部24、外側左撮像部23a、および外側右撮像部23bのいずれか(外側左撮像部23a、外側右撮像部23bの両方を使用する場合も含む)を選択するための撮像部選択GUIが用意されている。図15の処理では、ユーザは、撮像部選択GUIにより自在に使用する撮像部を切り替えることができるものする。以下、初期状態または撮像部選択GUIへの操作によって、撮影に使用されている内側撮像部24、外側左撮像部23a、および外側右撮像部23bを単に撮像部ということにする。
例えば、内側撮像部24が使用されている場合には、ユーザが上側ハウジング21を開いた状態で、上側ハウジング21の内側面21Bに顔を向けると、上側LCD22には、ユーザの顔が写し出される。そして、ユーザが、例えば、Rボタン14H(またはLボタン14G)を押下すると、情報処理部31は、上側LCD22に写し出された内側撮像部24からの画像をデータとして取得し、メインメモリ32に一時的に記憶する。この時点では、この画像のデータはメインメモリ32上に存在するのみであり、後述するセーブデータ記憶域Doに保存されていない。このメインメモリ32上のデータは、後述のステップ106によるゲームで利用されるのみであり、後述するように、ゲームが成功せずに終了した場合には廃棄される。メインメモリ32が第1データ記憶域の一例である。
なお、本実施形態の処理では、ステップ101で取得した顔画像を敵オブジェクトEOの顔面部分等にテクスチャマッピングし、ゲームを実行する。そのため、ステップ101の処理では、撮像部から取得した画像のうち、特に、顔部分を切り出して顔画像を取得することが望ましい。本実施形態では、例えば、以下の処理が実行されるものとする。
(1)情報処理部31は、取得された画像中から顔の輪郭を検出する。顔の輪郭は、目の間隔と、目と口の位置関係とから推定する。すなわち、情報処理部31は、目と口の配置から、標準的な顔の寸法を用いて、顔の輪郭と、背景との境界線を認識する。境界線は、例えば、微分処理(輪郭強調)、平均処理(平滑化演算)等の通常の画像処理を組み合わせることで取得できる。なお、顔の輪郭検出の方法は周知の他の方法でおこなっても構わない。
(2)情報処理部31は、得られた顔画像を拡大または縮小することによって、敵オブジェクトEOの頭部形状の顔面部の寸法に合わせ込む。この処理によれば、ある程度、寸法にばらつきがある顔画像についても、ゲーム装置10で取得し、敵オブジェクトEOに貼り付けることを可能にする。
ただし、本実施形態のゲーム装置10において、顔画像を取得する処理が上記手順に限定される訳ではない。例えば、顔画像を取得する際に、任意距離から、任意の寸法で、画像を取得する代わりに、目標とする寸法の顔画像を撮像部から取得するようにしてもよい。例えば、被写体から得られる顔画像の目と目の距離が、所定画素数の近傍となるように、被写体と距離を確立した上で、撮影するようにしてもよい。例えば、情報処理部31が、被写体との距離を誘導すればよい。また、被写体と距離を確立した上で、情報処理部31が、例えば、撮像部の視軸方向に対する被写体の顔の角度を調整するように被写体となる人、あるいは撮影者であるユーザを誘導してもよい。さらに、ユーザが、例えば、Rボタン14H(またはLボタン14G)を押下することによって画像を保存する代わりに、
被写体との距離および撮像部の視軸方向に対する顔の角度の調整が完了したと判断できたときに、情報処理部31が、画像を保存するようにしてもよい。例えば、情報処理部31が、上側LCD22に、被写体の顔画像と重畳して、目の位置と、口の位置合わせの目標位置を示すマークを表示してもよい。そして、撮像部から取得した被写体の両目および口の位置が、両目および口に対応する目標位置のマークから所定の許容差の範囲に収まったときに、情報処理部31が、画像をメモリに保存するようにしてもよい。
なお、情報処理部31は、ステップ101での顔画像の取得時、図13の顔画像属性集計表Dn2の該当する行の顔画像取得数を更新する。該当する行とは、例えば、後述する図19Bのステップ1002で推定された性別、年齢に相当する属性の行をいう。
次に、情報処理部31は、ステップ101の処理によって取得された画像を、例えば、上側LCD22に表示する(ステップ102)。
次に、情報処理部31は、敵オブジェクトEOの選択処理を実行する(ステップ103)。ここでは、情報処理部31は、ユーザに敵オブジェクトEOの頭部形状の選択を促す。例えば、図9に示したような頭部形状の一覧を表示し、GUIを通じて、ユーザの選択を受け付けるようにすればよい。そして、情報処理部31は、取得された顔画像を敵オブジェクトEOのテクスチャに設定し(ステップ104)、敵オブジェクトEOを生成する(ステップ105)。ステップ105で生成される敵オブジェクトが第1キャラクタオブジェクトの一例である。情報処理部31は、キャラクタオブジェクトを作成する手段の一例として、ステップ105の処理を実行する。
そして、情報処理部31は、生成された敵オブジェクトEOを用いたゲームを実行する(ステップ106)。情報処理部31のCPU311は、第1のゲーム処理手段の一例として、ステップ106の処理を実行する。ここで、ゲームの種類は問わない。ゲームは、例えば、敵オブジェクトEOとの戦いを模擬するゲームである。また、ゲームは、例えば、敵オブジェクトEOと得点の多寡を競うゲームであってもよい。そして、ゲームの実行後、情報処理部31は、ユーザがゲームにおいて成功したか否かを判定する(ステップ107)。情報処理部31は、成功または不成功を判定する手段の一例として、ステップ107の処理を実行する。成功とは、例えば、ユーザが、敵オブジェクトEOと戦うゲームにおいて、敵オブジェクトEOに勝利した場合である。また、成功とは、例えば、敵オブジェクトEOと得点の多寡を競うゲームにおいて、ユーザが敵オブジェクトEOよりも多い得点を得た場合である。また、成功とは、例えば、敵オブジェクトEOが設定した障害等をユーザが克服していくゲームで、ユーザがゴールにたどり着いた場合であってもよい。
なお、ステップ106のゲームには、ステップ101で取得した顔画像を含むキャラクタオブジェクトの他、過去にすでに収集済みの顔画像を用いたキャラクタオブジェクトを登場させるようにしてもよい。例えば、過去にすでに収集済みの顔画像が、敵オブジェクトEOあるいは味方のオブジェクトに貼り付けられて登場することで、ユーザは、実世界の人間関係等を反映したゲームを行うことができる。
ユーザがゲームで成功した場合には、情報処理部31は、前述のステップ101で取得したメインメモリ32上の顔画像のデータを当該ゲームのセーブデータ記憶域Doにこれまでに保存された顔画像データに加えて保存する(ステップ109)。情報処理部31のCPU311は、保存する手段の一例として、ステップ109の処理を実行する。当該ゲームのセーブデータ記憶域Doは、当該ゲームを実行する情報処理部31が書き込みおよび読み出し可能な、例えば、データ保存用内部メモリ35、データ保存用外部メモリ46等に構築される記憶領域である。新たな顔画像のデータが当該ゲームのセーブデータ記憶
域Doに格納されることにより、当該ゲームを実行する情報処理部31は、上側LCD22の画面に、例えば、図7、図8で説明した顔画像の一覧に追加して、新たな顔画像のデータを表示できるようになる。このように、図15の処理によれば、ユーザは、ステップ101で取得した顔画像をゲームのセーブデータ記憶域Doに保存するために、ゲーム(第1のゲーム)を実行する。そのゲームには、例えば、ユーザが現在までにセーブデータ記憶域Doにこれまでに保存された顔画像を用いたキャラクタオブジェクトを登場させることで、ゲーム装置10でゲームを実行するユーザは、実世界の人間関係等を反映しつつ、新たな顔画像を収集し、セーブデータ記憶域Doに追加できるのである。
このとき、情報処理部31は、新たに、当該ゲームのセーブデータ記憶域Doに保存された顔画像を管理するため、図12で説明した顔画像管理情報Dn1を生成し、データ保存用内部メモリ35あるいはデータ保存用外部メモリ46に保存する。すなわち、情報処理部31は、新たに顔画像識別情報を生成し、顔画像管理情報Dn1のレコードに設定する。また、新たに、当該ゲームのセーブデータ記憶域Doに保存された顔画像のアドレス等を顔画像データのアドレスに設定する。さらに、顔画像の取得元、性別の推定、年齢の推定、関連する顔画像の識別情報1−Nなどを設定する。
さらに、情報処理部31は、セーブデータ記憶域Doに追加した顔画像の属性を推定し、図13で説明した顔画像属性集計表Dn2の集計結果を更新するようにしてもよい。すなわち、情報処理部31は、新たに、セーブデータ記憶域Doに追加した顔画像の性別、年齢等を推定し、顔画像属性集計表Dn2の集計結果に反映するようにしてもよい。
さらに、情報処理部31は、例えば、当該ゲームのセーブデータ記憶域Doに格納されたデータの複製、変更、無線通信モジュール36を通じたデータの転送等をユーザに許容するようにしてもよい。そして、情報処理部31は、ユーザのGUIを通じた操作または操作ボタン14を通じた操作にしたがって、セーブデータ記憶域Doに格納された顔画像の保存、複製、変更、転送等を実行すればよい。
一方、ユーザがゲームで成功しなかった場合には、情報処理部31は、ゲームを再試行するか否かをユーザに問い合わせる(ステップ108)。例えば、上側LCD22に、再試行するか否かの問い合わせのメッセージを表示し、下側LCD12上のGUI(肯定、否定のアイコン、メニュー等)へのタッチパネル13を通じた操作、あるいは操作ボタン14等による操作により、ユーザの選択を受け付ける。ユーザが再試行を指示した場合には、情報処理部31は、制御をステップ106に戻す。一方、ユーザが再試行を指示しなかった場合には、情報処理部31は、ステップ101で取得された顔画像を廃棄し(ステップ110)、処理を終了する。なお、ゲームに成功しなかった場合に、情報処理部31は、ステップ108での再試行の指示を待たずにステップ101で取得した顔画像を廃棄するようにしてもよい。
以下、図16を参照して、顔画像取得処理2(図14のステップ12)の詳細処理例について説明する。この処理では、顔画像取得処理において、2つの外側撮像部23(外側左撮像部23aおよび外側右撮像部23b)よりも先に内側撮像部24による撮影をするように、ユーザを誘導する処理例を説明する。ゲーム装置10がユーザに内側撮像部24による撮影を先に実行させるのは、内側撮像部24による撮影によって、例えば、ゲーム装置10の持ち主等を明確化し、ゲーム装置10の他人による使用を制限できる可能性を高めるためである。
図16により、ゲーム装置10の情報処理部31で実行される画像処理プログラムによる動作例を説明する。この処理では、情報処理部31は、まず、内側撮像部24による顔画像取得が済みか否かを判定する(ステップ121)。内側撮像部24による顔画像取得
済みか否かは、例えば、図12に示した顔画像管理情報Dn1により、顔画像の取得先として、内側撮像部24が設定されているレコードがあるか否かによって判定すればよい。また、例えば、ゲーム装置10に、内側撮像部24によるゲーム装置10の持ち主の顔画像をゲーム装置10に登録する機能が設けられている場合には、持ち主の顔画像が登録済みか否かで判定してもよい。
内側撮像部24による顔画像取得済みの場合(ステップ121でYesの場合)には、情報処理部31は、顔画像管理支援処理3を実行する(ステップ122)。顔画像管理支援処理3については、図19Cを参照して後述する。そして、情報処理部31は、外側撮像部23による顔画像取得処理を実行する(ステップ123)。ここでは、情報処理部31は、図15のステップ101と同様の撮影指示、例えば、Rボタン14H(またはLボタン14G)の押下による指示にしたがって、外側撮像部23からの顔画像をメインメモリ32、さらには、データ保存用内部メモリ35、あるいは、データ保存用外部メモリ46等に保存する。一方、内側撮像部24による顔画像が取得済みでない場合(ステップ121でNoの場合)には、情報処理部31は、ユーザに対して内側撮像部24による顔画像取得処理を先に実行するように促す(ステップ124)。より具体的には、例えば、「ゲーム装置10では内側撮像部24による顔画像が取得済みでないと外側撮像部23による顔画像取得処理が実行できない」旨のメッセージを上側LCD22に表示する。あるいは、情報処理部31は、持ち主の顔画像をまず登録することをユーザに要求するようにしてもよい。
図17は、一覧表示処理(図14のステップ14)の詳細処理の一例を示すフローチャートである。この処理では、情報処理部31は、まず、登録済みの顔画像をデータ保存用内部メモリ35またはデータ保存用外部メモリ46のセーブデータ記憶域Doから読み出し、上側LCD22に表示する(ステップ140)。より具体的には、情報処理部31は、セーブデータ記憶域Doに保存された顔画像管理情報Dn1から、それぞれの顔画像データのアドレスを取得する。そして、データ保存用内部メモリ35内またはデータ保存用外部メモリ46等のアドレスから、顔画像を読み出し、上側LCD22に表示すればよい。
次に、情報処理部31は、ユーザの操作待ちとなる(ステップ141)。そして、ユーザの操作によって、顔画像が選択状態にあるか否かを判定する(ステップ142)。顔画像が選択状態にあるか、否かは、図7、図8に示したように、上側LCD22に顔画像の一覧が表示されているときに、ユーザが操作ボタン14等を押下した後の操作状態、あるいはGUIを通じた操作状態等で判断される。なお、選択状態にある顔画像は、図7、図8に示したように、例えば、太線L1等で囲まれて表示される。
そして、いずれかの顔画像が選択状態にある場合に、情報処理部31は、顔画像管理情報Dn1(図12参照)を用いて、選択状態にある顔画像と関連する顔画像を検索する(ステップ143)。
そして、情報処理部31は、検索された顔画像の視線を選択状態にある顔画像に向ける等、検索された顔画像が反応する処理を実行する(ステップ144)。検索された顔画像が反応する処理は、例えば、以下の手順で実行できる。例えば、事前に、目の向きを図8の他の顔画像に向ける複数の目のパターン、顔の向きを図8の他の顔画像に向ける複数の顔のパターン等を用意しておく。そして、検索された顔画像の位置と、選択状態にある顔画像の位置との関係から、該当する目の向き、顔の向きのパターンを選択する。そして、すでに表示中の顔画像の目の向き、顔の向きのパターン等に代えて、該当する顔画像の目の向き、顔の向きのパターン等を表示すればよい。すなわち、検索された顔画像の位置と、選択状態にある顔画像の位置との関係から決定される目の部分の画像を元の顔画像の目
の部分と入れ替えればよい。また、顔の向きを変える場合には、顔画像全体を入れ替えて表示してもよい。また、例えば、目の向きについて、予め、所定の角度、例えば、15度単位で、360度方向に向きを変えるパターンを用意しておいてもよい。そして、選択状態にある顔画像と検索された顔画像のとの位置関係から、角度を決定し、決定した角度に最も近い角度の目のパターンを選択するようにしてもよい。
さらに、顔の向きについては、画面の法線方向に向く場合を0度して、左右方向に、例えば、30度、60度、90度等の角度で向きを変えた顔画像のパターンを用意する。また、上下方向に、例えば、30度程度向きを変えたパターンを用意する。さらに、左右方向で90度の角度で向きを変えた顔画像に対して、さらに、上下方向、つまり斜め上(例えば、15度上、30度上、45度上等)、斜め下(例えば、15度下、30度下、45度下方向等)に、向きを変えたパターン等を用意しておけばよい。そして、選択状態にある顔画像と検索された顔画像のとの位置関係から、角度を決定し、該当する角度に最も近い顔の角度を選択するようにすればよい。さらに、親密さを強調するため、3次元モデルのアニメーションによって片目をつぶる等の表情を表示すればよい。また、ハートマーク等を用意しておき、選択状態にある顔画像に関連する顔画像の近傍に表示するようにしてもよい。
ステップ142の判定で、顔画像が選択状態にない場合には、情報処理部31は、その他の処理を実行する(ステップ145)。その他の処理とは、例えば、下側LCD12上の他のGUIに対する操作、顔画像の選択に用いる操作ボタン14(ボタン14a、14b、14c等)以外の操作ボタン14に対する処理などである。その後、情報処理部32は、処理を終了するか否かを判定する(ステップ146)。例えば、情報処理部31は、図8の画面が表示されているときに、ボタン14c(Bボタン)の押下を検知すると、「戻る」の指示がなされたと判断し、図17の処理を終了する。処理を終了しない場合には、情報処理部31は、制御をステップ140に戻す。
図18は、配役決定処理(図14のステップ16)の詳細処理の一例を示すフローチャートである。この処理では、情報処理部31は、まず、敵オブジェクトEOの頭部形状の一覧を表示する(ステップ160)。なお、ここでは、敵オブジェクトEOを例に説明するが、敵オブジェクトEO以外の他のキャラクタオブジェクトを生成する場合も、処理は、以下と同様である。情報処理部31は、予め、例えば、ゲーム装置10の出荷前、画像処理プログラムのインストール時、あるいは、バージョンアップ時に、敵オブジェクトEOの頭部形状をデータ保存用内部メモリ35に格納する。情報処理部31は、現在、データ保存用内部メモリ35に格納されている敵オブジェクトEOの頭部形状を読み出し、図9に例示するような配置で表示する。
次に、情報処理部31は、ユーザのGUIまたは操作ボタン14等による選択操作を検出し、敵オブジェクトEOの頭部形状の選択を受け付ける(ステップ161)。敵オブジェクトEOの頭部形状の選択が終了すると、次に、情報処理部31は、顔画像一覧を表示する(ステップ162)。そして、情報処理部31は、ユーザのGUIまたは操作ボタン14等による選択操作を検出し、顔画像の選択を受け付ける(ステップ163)。なお、図18の処理例では、ステップ163において、選択操作を検出することで、情報処理部31は、顔画像を決定する。しかし、このような処理に代えて、情報処理部31が自動的に顔画像を決定するようにしてもよい。例えば、情報処理部31がセーブデータ記憶域Doに蓄積された顔画像から、ランダムに顔画像を選択してもよい。また、情報処理部31が、ゲーム装置10でのユーザのゲームの履歴をメインメモリ32、外部メモリ45,データ保存用外部メモリ46,データ保存用内部メモリ35等に保存しておき、そのユーザの履歴から推定されるユーザの特性、指向等にしたがって、顔画像を選択してもよい。例えば、過去にユーザが顔画像を選択した頻度比率にしたがって、次に選択すべき顔画像を
決定してもよい。
そして、情報処理部31は、選択された顔画像を敵オブジェクトEOのテクスチャに設定する(ステップ164)。そして、選択された顔画像を敵オブジェクトEOの顔面部分にテクスチャマッピングすることにより、敵オブジェクトEOを生成する(ステップ165)。ステップ165で生成される敵オブジェクトが第2キャラクタオブジェクトの一例である。そして、情報処理部31は、生成した敵オブジェクトEOを上側LCD22の画面に、例えば、図10の敵オブジェクトEOのような態様で表示する。
さらに、情報処理部31は、関連する顔画像が反応する処理を実行する(ステップ166)。この処理は、図17のステップ143およびステップ144の処理と同様である。さらに、情報処理部31は、生成した敵オブジェクトEOを確定するか否かをユーザのGUIに対する操作にしたがって判定する(ステップ167)。そして、敵オブジェクトEOを確定しない場合、情報処理部31は、制御をステップ162に戻し、顔画像の選択を受け付ける。ただし、敵オブジェクトEOを確定しない場合、情報処理部31は、制御をステップ160に戻し、敵オブジェクトEOの頭部形状の選択を受け付けるようにしてもよい。一方、敵オブジェクトEOを確定する場合、情報処理部31は、処理を終了する。情報処理部31は、この確定した敵オブジェクトEOを用いて、図14のステップ18のゲーム処理を実行する。ただし、図18には明示されていないが、敵オブジェクトEOを確定しないで、図18の処理を終了するように、GUIのメニュー等を用意するようにしてもよい。
図19Aは、顔画像管理処理1(図14のステップ1A)の詳細処理例を示すフローチャートである。この処理では、情報処理部31は、顔画像属性集計表Dn2から取得済みの顔画像の属性を読み出す(ステップ1A1)。そして、情報処理部31は、読み出した顔画像属性集計表Dn2から、未取得の属性または顔画像取得数の少ない属性を検索する。未取得の属性とは、例えば、図13に例示した表で、顔画像取得数が0の属性をいう。また、顔画像取得数の少ない属性とは、例えば、図13に例示した表中の顔画像取得数をソーティングキーとして、ソーティングしたときに、顔画像取得数が下位から所定の順位に含まれる属性をいう。
次に、情報処理部31は、ユーザに対して、未取得の属性に該当する顔画像の取得を促す処理を実行する(ステップ1A2)。例えば、情報処理部31は、図13に例示した表から、属性「男性」、属性「10歳代」、および用語「画像取得数0」を組み合わせたメッセージを下側LCD12または上側LCD22に表示すればよい。また、例えば、情報処理部31は、属性「男性」、属性「10歳代」および用語「画像取得数が少ない」を組み合わせたメッセージを表示してもよい。ただし、表示する属性の組み合わせ(図13の表の行)の数は、1件に限られず、2件以上を表示してもよい。そして、例えば、ユーザによる操作ボタン14B(Aボタン)の押下を検知したときに、情報処理部31は、図19Aの処理を終了すればよい。すると、その後、情報処理部31は、図14のステップ8に制御を戻す。
なお、ここでは、図19Aに示した顔画像管理処理1を図14の終了判定時(ステップ1A)の詳細処理例として説明した。しかし、顔画像管理処理1は、ゲーム実行後、終了判定時(ステップ1A)のタイミングでの実行に限定されるわけではない。例えば、情報処理部31は、一覧表示処理(ステップ14)、配役決定処理(ステップ16)、ゲーム実行(ステップ18)等の処理中に、ユーザに顔画像の取得を促すために、顔画像管理処理1を実行してもよい。
図19Bは、顔画像管理処理2(図15のステップ100)の詳細処理例を示すフロー
チャートである。この処理では、情報処理部31は、まず、取得画像数を参照し、取得画像の有無を判定する(ステップ1000)。情報処理部31は、取得画像数を、例えば、顔画像管理情報Dn1のレコード数として、メインメモリ32、外部メモリ45、データ保存用外部メモリ46、データ保存用内部メモリ35等に記憶しておけばよい。
そして、取得画像がない場合(ステップ1000の判定でNoの場合)、情報処理部31は、処理を終了する。一方、取得画像がある場合(ステップ1000の判定でYesの場合)、情報処理部31は、制御をステップ1001に進める。そして、情報処理部31は、顔画像の取得要求を受け付ける(ステップ1001)。情報処理部31は、例えば、内側撮像部24あるいは、外側撮像部23を通じて、上側LCD22に顔画像が写し出されている状態で、Lボタン14GまたはRボタン14Hによる撮影指示を受け付けた場合に、顔画像の取得要求を認識する。
すると、情報処理部31は、内側撮像部24あるいは、外側撮像部23を通じて取得され、上側LCD22に顔画像が写し出されている顔画像の属性、例えば、性別と年齢を推定する(ステップ1002)。例えば、性別は、顔画像に含まれる頬骨、顎骨を含む骨格の大きさ、顔の寸法から推定できる。すなわち、情報処理部31は、目と目の距離、および目と口の距離に対する、顔の輪郭の相対寸法(例えば、顔の幅、目と顎の距離等)を算出する。そして、相対寸法が統計的に得られている男性平均値に近い場合に、顔画像が男性であると判定すればよい。また、例えば、相対寸法が統計的に得られている男性平均値に近い場合に、顔画像が男性であると判定すればよい。
また、情報処理部31は、性別ごとに、年齢層(例えば、10歳未満、10代、20代、30代、40代、50代、60代、70以上等)ごとに、顔のパーツの平均の位置、および、顔の部分におけるしわの本数等の特徴情報を事前に記憶しておけばよい。そして、情報処理部は、例えば、外側撮像部23を通じて取得され、上側LCD22に顔画像が写し出されている顔画像の上記特徴情報を算出し、算出した特徴情報が最も近い年齢層を推定すればよい。ただし、以上の性別と年齢の特定についての説明は例示であり、性別と年齢の判定は、上記の処理に限定される訳ではない。ステップ1002の処理では、従来から提案されている様々な性別判定技術、年齢特定技術を適用できる。
次に、情報処理部31は、ユーザに対して、未取得の属性の顔画像取得を促す(ステップ1003)。例えば、情報処理部31は、上側LCD22に、未取得の属性の顔画像取得を促すメッセージを表示すればよい。この処理は、図19Aの処理と同様である。そして、情報処理部31は、ユーザの操作によって、撮影対象の顔画像が変更されたか否かを判定する(ステップ1004)。例えば、情報処理部31は、内側撮像部24あるいは、外側撮像部23を通じて取得される画像に含まれる顔画像の特徴、例えば、目と目の距離、目と口の距離が変化した場合に、撮影対象の顔画像が変更されたと判定する。また、例えば、単に、Lボタン14GまたはRボタン14Hによる撮影指示が解除され、再び、Lボタン14GまたはRボタン14Hによる撮影指示がなされた場合に、情報処理部31は、撮影対象の顔画像が変更されたと判定してもよい。そして、撮影対象の顔画像が変更された場合に、情報処理部31は、制御をステップ1002に戻す。
一方、撮影対象の顔画像が変更されなかった場合に、情報処理部31は、そのまま処理を終了する。ここで、撮影対象の顔画像が変更されなかった場合とは、例えば、ユーザがGUI、あるいは、操作ボタン14C(Bボタン)等によって、顔画像管理処理2を終了した場合である。また、例えば、撮影対象の顔画像が変更されない状態が所定時間持続した場合等に、情報処理部31は、撮影対象の顔画像が変更されなかったと判定してもよい。この場合には、情報処理部31は、制御を図15のステップ101に進め、顔画像取得処理を実行する。なお、すでに、図15のステップ101の処理で説明したように、情報
処理部31は、図13の顔画像属性集計表Dn2の該当する行の顔画像取得数を更新する。
また、ステップ1004の判定処理で、撮影対象の顔画像が変更されなかった場合とは、例えば、目と目の距離、目と口の距離の変化量が許容値以内である場合である。また、例えば、単に、Lボタン14GまたはRボタン14Hによる撮影指示が解除されることなく、そのまま所定時間、撮影指示が継続した場合に、情報処理部31は、撮影指示が解除されなかったと判断してよい。
図19Cは、顔画像管理処理3(図16のステップ122)の詳細処理例を示すフローチャートである。図19Cの処理は、図19Bの処理のステップ1001からステップ1004と同様であるので、その説明を省略する。
図19Aから図19Cの処理によれば、情報処理部31は、未取得の属性に該当する顔画像を優先して撮影をするように、ユーザを誘導する。このような処理によって、極力、属性の偏りのない顔画像取得を望むユーザの顔画像収集処理を支援することができる。
なお、本実施形態では、年齢層を10歳未満、10代、20代、30代、40代、50代、60代、70以上のように分類する処理例を示した。しかし、本発明の実施は、このような年齢層の分類に限定される訳ではない。例えば、さらに細かく年齢層を分類するようにしてもよい。また、逆に、子供、大人、老人等のように、粗く年齢層を分類するようにしてもよい。
本実施形態では、Lボタン14GまたはRボタン14Hによる撮影指示を受け付けた場合に、情報処理部31が顔画像の取得要求を認識した。しかし、そのような処理に代えて、例えば、第1の実施形態で説明したように、情報処理部31が、目標とする寸法の顔画像を撮像部から取得するために、ゲーム装置10と顔との距離、撮像部の視軸と顔との角度等を誘導するような処理において、顔画像の属性、例えば、性別、年齢を推定してもよい。すなわち、このような誘導処理のため、例えば、情報処理部31が、リアルタイム、あるいは、フレーム周期(1/60秒等)ごとに顔画像を取得する場合に、取得された顔画像から、顔画像の属性を特定すればよい。
<ゲーム処理の詳細例>
ここでは、図20A−図40を参照して、顔画像を用いたキャラクタオブジェクトが登場するゲーム処理の一例を説明する。以下の処理は、セーブデータ記憶域Doに蓄積された顔画像を含む敵オブジェクトEOを用いて、例えば、図14のステップ18において、実行される処理である。
まず、本実施形態において、ゲーム装置10によるゲームプログラムの実行によってプレイヤが遊技可能なゲームの概要について説明する。本実施形態におけるゲームは、プレイヤが、ゲーム内の主人公として、ゲーム世界として用意された仮想の3次元空間に出現する敵キャラクタを撃ち落とす、いわゆるシューティングゲームである。ゲーム世界をなす仮想の3次元空間(仮想空間(ゲーム空間とも呼ばれる))は、ゲーム装置10の表示画面(例えば、上側LCD22)において、プレイヤの視点(いわゆる主観視点で)で表示される。もちろん、客観視点としてもよい。プレイヤが敵キャラクタを撃ち落とすことで、得点が加算される。これに対し、敵キャラクタとプレイヤとが衝突すると(具体的には、敵キャラクタが仮想カメラの位置から一定距離以内に到達すると)、得点が減点される。
また、本実施形態のゲームは、ゲーム装置10が備える撮像部により取得される現実世
界の画像(以下、「実世界画像」と呼ぶ)と、仮想空間を表現した仮想世界画像(本発明に係る「仮想画像」に相当)とを合成して表示する。具体的には、仮想空間を、仮想カメラに近い領域(以下、「手前側領域」と呼ぶ)と、仮想カメラから遠い領域(以下、「奥側領域」と呼ぶ)に区分して、手前側領域に存在する仮想オブジェクトを表す画像を実世界画像の手前に表示し、奥側領域に存在する仮想オブジェクトを実世界画像の背後に表示する。より具体的には、後述するように、手前側領域に存在する仮想オブジェクトを実世界画像よりも優先し、かつ、実世界画像を奥側領域に存在する仮想オブジェクトよりも優先して合成する。
実世界画像と仮想世界画像の合成の手法は問わない。例えば、仮想オブジェクトと同じ仮想空間に、実世界画像をオブジェクトとして存在させて(より具体的には、例えば、仮想オブジェクトのテクスチャとして貼り付けて)、実世界画像を仮想オブジェクトとともに共通の仮想カメラでレンダリングしてもよい。
また、別の例では、実世界画像を第1の仮想カメラ(以下、実世界描画用カメラと呼ぶ)で撮影してレンダリングして第1のレンダリング画像とし、仮想オブジェクトを第2の仮想カメラ(以下、仮想世界描画用カメラと呼ぶ)で撮影してレンダリングして第2のレンダリング画像とし、第1のレンダリング画像と第2のレンダリング画像とを、手前側領域に存在する仮想オブジェクトを実世界画像よりも優先し、かつ、実世界画像を奥側領域に存在する仮想オブジェクトよりも優先するように、合成してもよい。
前者の方法では、典型的には、実世界画像をテクスチャとして適用したオブジェクト(以下、このオブジェクトをスクリーンオブジェクトと呼ぶ)を手前側領域と奥側領域の境界となる位置に配置し、敵オブジェクトなどの仮想オブジェクトとともに共通の仮想カメラで撮影してもよい。この場合、典型的には、実世界画像が貼り付けられるオブジェクトは、仮想カメラから一定距離で、かつ、法線が仮想カメラの撮影方向と一致するような面を有するオブジェクトであり、この面(以下、境界面と呼ぶ)に実世界画像をテクスチャとして貼り付けてもよい。
また、後者の方法では、仮想オブジェクトを手前側領域と奥側領域の境界面(以下、単に境界面と呼ぶ)に対して奥行判定(Zバッファによる判定)をおこないつつレンダリングして上記第2のレンダリング画像とし、仮想カメラから一定距離でかつ法線が仮想カメラの撮影方向と一致するような面に実世界画像をテクスチャとして貼り付けて撮影した上記第1のレンダリング画像とする。そして、第2のレンダリング画像を第1のレンダリング画像に優先して合成するようにすれば、実世界画像が境界面に存在しているように見える画像が合成される。
いずれの方法においても、実世界画像は仮想カメラの視野範囲を包含するように、仮想カメラからの距離および視野角と実世界画像オブジェクトの大きさ(撮影方向についての大きさ)との関係が設定される。
なお、以下では、前者の方法を第1の描画方法と呼び、後者の方法を第2の描画方法と呼ぶ。
また、ゲーム上における所定のイベント発生条件が満たされると、実世界画像の一部が開口され、奥側領域の仮想空間がその開口を通じて見えるように表示される。また、手前側領域には敵キャラクタオブジェクトが存在し、さらに、奥側領域には、所定の条件を満たすと特別な敵キャラクタ(いわゆる「ボスキャラ」)が出現する。ボスキャラクタを撃ち落とすことで、ステージクリアとなる。ステージは幾つか用意されており、全てのステージをクリアすることでゲームクリアとなる。これに対し、所定のゲームオーバー条件が
満たされると、ゲームオーバーとなる。
実世界画像に対する開口は、上述の第1の描画方法の典型例では、スクリーンオブジェクトの境界面に対して開口の位置を示すデータを設定してもよい。より具体的には、境界面に適用されるテクスチャ(いわゆるαテクスチャ)の不透明度で開口または非開口を示すようにしてもよい。また、第2の描画方法では、境界面に対して開口の位置を示すデータを設定してもよい。
また、本実施形態では、実世界画像に対して開口/非開口を設定したが、実世界画像に対して他の画像処理をおこなうようにしてもよい。例えば、実世界画像に汚れを付けたりぼかし処理をしたりするなど当業者の技術常識による任意の画像処理をおこなうことができる。これらの例でも、境界面や境界面に対して、画像処理をおこなう位置を示すデータが設定されるようにしてもよい。
<ゲーム世界>
このように本実施形態に係るゲームでは、実画像の背後にも仮想空間(奥側領域)が存在することが感じられ、奥行き感が向上した仮想空間を表すゲーム画面が表示される。なお、実世界画像は、単眼カメラで撮影された状態の通常画像であってもよく、複眼カメラで撮影された状態のステレオ画像であってもよい。
本実施形態に係るゲームでは、実世界画像として、外側撮像部23で撮像された画像を用いる。すなわち、ゲームのプレイ中に外側撮像部23で撮像されたプレイヤの周囲の実世界画像(リアルタイムに取得される実世界の動画)が用いられる。従って、ゲーム装置10を保持したユーザ(ゲームのプレイヤ)が、ゲームのプレイ中にゲーム装置10を左右方向、或いは上下方向に向きを変えて外側撮像部23の撮像範囲を変更すると、上側LCD22に表示される実世界画像も、撮像範囲の変更に追従して変更される。
ここで、ゲームプレイ中におけるゲーム装置10の向きの変更は、大略して、(1)プレイヤの意図、又は(2)ゲーム上の意図(シナリオ)に従って行われる。プレイヤがプレイ中にゲーム装置10の向きを意図的に変えることで、外側撮像部23で撮影される実世界画像が変化し、これにより、上側LCD22に表示される実世界画像を意図的に変更することができる。
また、ゲーム装置10が備える角速度センサ40によりゲーム装置10の向きの変化が検出され、それに応じて仮想カメラの向きを変更する。より具体的には、外側撮像部23の向きの変化方向に仮想カメラを現在の向きから変化させる。さらには、外側撮像部23の向きの変化量(角度)だけ、仮想カメラを現在の向きから変化させる。すなわち、ゲーム装置10の向きを変えると、実世界画像が変化するとともに、仮想空間のうちの表示される範囲が変化する。すなわち、ゲーム装置10の向きを変更することにより、実世界画像と仮想世界画像が連動して変化し、これにより、現実世界と仮想世界とが関連付いているかのような合成画像を表示することができる。なお、本実施形態においては、仮想カメラの位置は変更しないが、ゲーム装置10の移動を検出して仮想カメラの位置を変更してもよい。
なお、第2の描画方法においては、このような仮想カメラの向き変更処理は、仮想世界描画用カメラに適用され、実世界描画用カメラについては適用されない。
また、ゲームプレイ中に、画面の端(例えば、右端、左端)のような局所にオブジェクトが表示されると、プレイヤに対し、オブジェクトを画面の中心に捉えようとする心理が自然に働き、プレイヤはゲーム装置10(外側撮像部23)を動かす。この結果、画面に
表示される実世界画像が変わる。このようなゲーム装置10の向きの変更(実世界画像変更)は、ゲームのシナリオに従って表示されるオブジェクトが意図的に画面の端に表示されるようにプログラミングすることによって、プレイヤが自然に行うようにすることができる。
<仮想空間の詳細>
(実世界画像の描画)
外側撮像部23で撮像された実世界画像は、仮想空間の手前側領域と奥側領域の境界位置に存在して見えるように合成される。図20Aは、本実施形態における仮想空間の一例を示す。また、図20Bは、本実施形態におけるスクリーンモデルとαテクスチャの関係を示す。第1の描画方法では、実世界画像の表示のため、図20Aに示すように、仮想空間内に仮想カメラの位置を中心とする球体モデル(上述のスクリーンモデル)を設定し、この球体の内面に実世界画像を貼り付け、スクリーンオブジェクトを形成してもよい。より具体的には、スクリーンモデルのうち仮想カメラで撮影される部分の全体にテクスチャとして貼り付けられる。スクリーンモデルのうちこの部分以外については、透明に設定されため画面上で視認されない。この例では、境界面は球体面であり、すなわち、図20Aで示すように、球体の表面により仮想カメラ側が手前側領域(本発明の「第2領域」に相当)であり、球体の表面より仮想カメラからみて遠い側が奥側領域(本発明の「第1領域」に相当)である。
第2の描画方法では、実世界画像の表示のため、仮想空間内には、実世界画像のテクスチャを貼り付けるための平面ポリゴンが配置される。仮想空間において、平面ポリゴンの実世界描画用カメラに対する相対位置は、常に固定される。すなわち、平面ポリゴンは、実世界描画用カメラから一定の距離を空けて配置され、その法線方向が実世界描画用カメラの視点(視軸)に一致するように配置される。
また、この平面ポリゴンは、実世界描画用カメラの視野範囲を包含するように設定される。具体的には、平面ポリゴンの大きさとその仮想カメラからの距離は、平面ポリゴンが仮想カメラの視野範囲を包含可能となるように設定される。この平面ポリゴンの仮想カメラ側の面全体に実世界画像を貼り付けるようにしたので、仮想カメラで、この実世界画像が貼り付けられた平面ポリゴンを撮影すると、仮想カメラにより生成される画像において、実世界画像がその全域に対応するように表示される。
なお、図21に示すように、境界面を円筒状にしてもよい。図21は、本実施形態における仮想空間の別の例を示す。この場合、仮想空間には、仮想カメラの位置に立てられた鉛直軸(本実施形態においては、仮想空間のY軸が鉛直方向に対応し、X軸およびZ軸が水平方向に対応するとする)を中心軸とする仮想の円筒周面(境界面)が配置される。ただし、前述の通り、この円筒周面は視認されるオブジェクトではなく、開口処理において用いられるオブジェクトである。この円筒の外周面は、仮想空間を、仮想カメラが位置する第1空間(本発明の「第2領域」に相当)と、この第1空間の周りに存在する第2空間(本発明の「第1領域」に相当)とに区分する。
(実世界画像を開口させるための処理)
さらに、本実施形態に係るゲームでは、実世界画像に開口を設け、実世界画像の背後の奥側領域の存在をプレイヤに認識させる。より明確に言うと、実世界画像のうちこの開口の部分は、透明または半透明で表示され、その背後にある世界がこの部分に合成される。このため、ゲーム内で、所定のイベントの発生を契機に、実世界画像の一部が開口して(消去されて)、その開口を通して実世界画像の背後に存在する他の仮想空間(奥側領域)を示す画像が表示される。
このような、実世界画像に開口を設けて奥側領域を表示する処理は、本実施形態において、境界面は球体面であり、第1の描画方法では、図20A及び図20Bに示すように、上述の球体のスクリーンオブジェクトの内面に貼り付けられるテクスチャにより実現される。以下、このテクスチャのことをスクリーン用αテクスチャ(後述する、開口判定用データ)と呼ぶ。本実施形態では、スクリーン用αテクスチャは仮想カメラを中心として少なくとも或る方向に360度周回する部分に貼り付けられる。より具体的には、図20Bで示すように、スクリーン用αテクスチャは、球体のうち中央部分、言い換えると、仮想カメラの位置を中心として、XY平面に平行な方向に360度周回させた、Y方向に所定の幅を有する部分(以下、αテクスチャ適用部と呼ぶ)に貼り付けられる。このようにすることにより、スクリーン用αテクスチャのデータの持ち方を簡単にすることができる。具体的には、本実施形態では、スクリーン用αテクスチャは矩形形状である。このαテクスチャが図20Aで示す部分に貼り付けられることにより、スクリーン用αテクスチャの各ドットの情報は、スクリーンオブジェクトのうちαテクスチャ適用部の各座標に対応する。
上述のように実世界画像が貼り付けられ、αテクスチャが設定されたスクリーンオブジェクトを仮想カメラで撮影することにより、開口部を有する実世界画像が境界面(球体内面)に存在するように描画されることになる。αテクスチャのうち実世界画像に対応する部分は、仮想カメラによる撮影により計算される。
第2の描画方法においても、仮想空間の境界面(ここでは球体内面)に対して、開口の位置を示すデータが設定される。典型的には、境界面の各点について開口の有無を示すデータが設定される。より具体的には、上述と同様の球体オブジェクトが仮想オブジェクトの存在する仮想世界に配置され、この球体オブジェクトに対して同様のαテクスチャが設定される。そして、実世界画像のレンダリング時に、αテクスチャが設定された球体オブジェクトのうち仮想世界描画用カメラで撮影される部分に対応する部分のαテクスチャを、上述の平面ポリゴンに適用してレンダリングする。または、この部分のαテクスチャを用いて、実世界画像に対して開口部を透明化する処理を行った後、この処理後の実世界画像を前述の平面ポリゴンに貼り付けて実世界描画用カメラでレンダリングする。なお、この球体オブジェクトは、開口の計算にのみ使用されるオブジェクトであり、仮想世界の描画時に描画されないオブジェクトである。
なお、本実施形態では、開口部を示すデータは境界面の各点ごとに情報を有するようなデータであるが、境界面において開口を有する位置を計算式で定義するような情報でもよい。
第2空間には、開口を通じて仮想カメラの視野に収まる第2空間の背景画像(テクスチャ)を貼り付けるためのポリゴン(オブジェクト)が配置される。第2空間の背景は、「奥壁」と呼ぶこともある。
第1空間には、敵キャラクタや、敵キャラクタを撃ち落とすための弾を表す各種のキャラクタを示すオブジェクトが配置される。第2空間にも所定のオブジェクト(例えば、敵キャラクタのうちの一部)が配置される。仮想空間上に配置された各オブジェクトは、予めプログラミングされたロジック(アルゴリズム)に従って仮想空間内を移動する。
さらに、敵キャラクタのうちの一部は、境界面に形成された開口を通じて第1空間と第2空間との間を行き来することもできる。または、自ら境界面に開口を形成して第1空間と第2空間との間を行き来することができる。開口を形成するゲーム上の所定イベントは、例えば、敵キャラクタが境界面に衝突するようなイベント(衝突イベント)である。或いは、ゲームシナリオの進行上、所定のタイミングで境界面が破壊され、第2空間にいた
敵キャラクタが第1空間に進入して来るイベント(敵キャラクタ出現イベント)である。或いは、時間経過に応じて自動的に開口が形成されるようにしてもよい。また、プレイヤの所定のゲーム操作に応じて、開口を修復することができる。例えば、プレイヤは、形成された開口に対して弾を当てることで、開口を小さくする(修復する)こともできる。
図22は、実施形態における画像処理プログラムの一例であるゲームプログラムにおいて定義される仮想の3次元空間(ゲーム世界)を示す。なお、上述したように、本実施形態では、境界面は球体であるが、図22では簡便のため、境界面を円筒状に示す。上述したように、本実施形態に係るゲームでは、ゲーム装置10の上側LCD22には、仮想の3次元空間を表現した仮想世界画像と実世界画像が合成されて表示される。
また、図22において示されるとおり、本実施形態におけるゲーム上の仮想空間は、仮想カメラの位置を中心軸とする球体面で形成された境界面3によって第1空間1と第2空間2に分けられている。
境界面3には、ゲーム装置10に内蔵する実カメラによって撮像された実世界画像であるカメラ画像CI(図23)は、第1の描画方法においては後述するステップ81及び82、また、第2の描画方法においては後述するステップ83からステップ85の処理により、境界面3の位置に存在しているかのように、仮想世界画像と合成される。
本実施形態における実世界画像は平面視の画像である。また仮想世界画像も平面視の画像である。すなわち、LCD22には平面視の画像が表示される。ただし、実世界画像は、立体視可能な画像であってもよい。立体視本発明は、実世界画像の種類によって限定されない。なお、本実施形態におけるカメラ画像CIは、静止画であっても、リアルタイムの実世界画像(動画像)であってもよい。本実施形態におけるゲームプログラムでは、カメラ画像CIは、リアルタイムの実世界画像であるとする。また、実世界画像であるカメラ画像CIは、カメラの種類によって限定されない。例えば、カメラ画像CIは、ゲーム装置10に外部接続可能なカメラによって得られた画像であってもよい。更に、本実施形態では、カメラ画像CIは、外側撮像部23(複眼カメラ)及び内側撮像部24(単眼カメラ)のいずれかから取得した画像であればよい。本実施形態におけるゲームプログラムでは、カメラ画像CIは、外側撮像部23の外側左撮像部23a及び外側右撮像部23bの一方を単眼カメラとして用いることにより取得される画像であるとする。
上記したように第1空間1は、仮想カメラから見て境界面3より手前の空間であり、境界面3によって囲まれた空間である。また、第2空間2は、仮想カメラから見て境界面3の背後の空間である。図20A及び図21において図示はされていないが、境界面3を囲む奥壁BWが存在する。つまり、第2空間2は、境界面3と奥壁BWの間に存在する空間である。当該奥壁BWは、任意の画像が貼り付けられる。例えば、奥壁BWには、予め用意された宇宙空間を表す画像が貼り付けられ、第1空間の背後には宇宙空間である第2空間の存在が表示される。すなわち、仮想カメラから見て、手前から順に、第1空間、境界面3、第2空間、奥壁が配置される。
ただし、上述のとおり、本発明の画像処理プログラムはゲームプログラムに限定される訳ではなく、これらの設定及びルールは、本発明の画像処理プログラムを限定するものではない。なお、敵オブジェクトEOは、図22に示されるとおり、仮想の3次元空間内を移動し、上述の境界面3を通って、第1空間1と第2空間2とを往来することができる。境界面3のうち、仮想カメラによって撮像される領域を通って、敵オブジェクトEOが第1空間1と第2空間2との間を移動した場合には、LCD22に表示される画像においては、敵オブジェクトEOが実世界画像を通り抜けて奥側から手前側に、または、手前側から奥側に移動するように表現される。
画面には、ゲームのシナリオやイベントにより実世界画像に生じた開口(穴)を使って第1空間1と第2空間2とを往来する敵オブジェクトEOの様子が表示される。図22及び図24には、敵オブジェクトEOが境界面3に開口を作って、または、境界面3上に既に存在する開口を通って、第1空間1と第2空間2を行き来する様子が図示されている。
なお、本実施形態における画像処理プログラムでは、第1空間1または第2空間2に存在するオブジェクトは、敵オブジェクトEO、弾オブジェクトBOおよび奥壁BWの3つであるが、本発明の画像処理プログラムは、オブジェクトの種類に限定されない。本実施形態における画像処理プログラムにおいて、オブジェクトは、仮想空間(第1空間1及び第2空間2)に存在する仮想物体である。例えば、本実施形態にかかる画像処理プログラムにおいて、障害物のオブジェクト等の任意のオブジェクトが存在してもよい。
<表示形態例>
図23〜図26は、上側LCD22に表示されるゲーム画面の一例を示す。以下、各図の表示形態例について説明する。
まず、図23〜図26において共通に表示される照準カーソルALについて説明する。図23〜図26において、上側LCD22には、共通して、ゲーム装置10を用いた攻撃操作(例えば、ボタン14B(Aボタン)の押下)に応じて発射される弾オブジェクトBOの照準カーソルALが表示されている。本実施形態のゲームプログラムでは、照準カーソルALは、ゲーム装置10が実行するプログラムに応じて所定の方向を向くように設定されている。
例えば、照準カーソルALは、仮想カメラの視線方向、つまり、上側LCD22の画面中央に固定されているように設定される。この場合、上述のとおり、本実施形態において、外側撮像部23の撮影方向の変化に応じて、仮想カメラ(第1の描画方法における仮想カメラまたは第2の描画方法における仮想世界描画用カメラ)の撮影方向を変更するので、プレイヤは、ゲーム装置10の向きを変えることで、照準カーソルALの仮想空間内における向きを変更する。そして、プレイヤは、例えば、ゲーム装置10が備えるボタン14B(Aボタン)を、下側ハウジング11を把持した右手の親指で押下することにより攻撃操作を行う。これにより、プレイヤは、攻撃操作による弾オブジェクトBOの発射を行い、本実施形態のゲーム上における敵オブジェクトEOの退治や、境界面3に存在する開口の修復をする。
次に、図23〜図26について各図個別に説明する。
図23において、上側LCD22には、第1空間1に存在する敵オブジェクトEOと、ゲーム装置10に内蔵する実カメラによって撮像されたカメラ画像CIと、が表示されている。敵オブジェクトEOは、任意に設定される。
敵オブジェクトEOは、例えば、ゲーム装置10のデータ保存用外部メモリ46等に記憶された画像(例えば、人の顔写真)をテクスチャとして用い、所定形状の3次元ポリゴンモデル(人の頭部の3次元形状を表すポリゴンモデル)に、所定の方法で貼り付けたオブジェクトである。
また、本実施形態において、上側LCD22に表示されるカメラ画像CIは、上述のとおり、ゲーム装置10に内蔵する実カメラで撮像されたリアルタイムの実世界画像である。その他、例えば、カメラ画像CIは、ゲーム装置10のデータ保存用外部メモリ46等に記憶された画像(例えば、風景写真)であってもよい。
カメラ画像CIが上側LCD22に表示された状態において、敵オブジェクトEOは任意に移動することができる。例えば、第1空間1に存在する敵オブジェクトEOは、第2空間2に移動することができる。図24は、第1空間1に存在する敵オブジェクトEOが、第1空間1から第2空間2へ移動する様子の一例を示す。図24に示した一例では、第1空間1に存在する敵オブジェクトEOは、境界面3上に開口を作って、第2空間2へ移動する。第2空間2に移動した敵オブジェクトEOは、境界面3上の非開口領域において仮想カメラから見た位置において影(シルエットモデル)ESとして表示される。また、第2空間2は、境界面3上の開口を通して視認される。つまり、仮想カメラの視野内の境界面3上に開口が存在する場合、上側LCD22には、当該開口を通して第2空間2の画像の一部が表示される。第2空間2の画像は、具体的には、第2空間2に存在するオブジェクト、例えば、第2空間2に存在する敵オブジェクトEOや、奥壁BWである。影ESは、敵オブジェクトEOの影を示す表示である。図27Aは、敵オブジェクトEOの影のシルエットモデルを上から見た図を示す。また、図27Bは、敵オブジェクトEOの影のシルエットモデル例を示す。図27A及び図27Bに示すように、本実施形態においては、敵オブジェクトEOについて、複数の向きごとにシルエットモデルが設定されている。具体的には、シルエットモデルは、例えば、図27Aに示す8枚の平面ポリゴンである。このシルエットモデル(8枚の平面ポリゴン)は、実体モデルである敵オブジェクトEOと同じ位置に配置される。また、各平面ポリゴンは実体モデルに内包される大きさである(実体モデルからはみ出ない)。また、各平面ポリゴンにはその面の法線方向から見た敵オブジェクトEOの影画像が描いたテクスチャが貼り付けられる。敵オブジェクトEOが境界面3の非開口領域の背後に存在する場合には、このシルエットモデルが描画されることにより影ESが表示される。
なお、8枚の平面ポリゴンのすべてがレンダリングされる。敵オブジェクトEOが境界面の非開口領域の背後に存在する場合、奥行判定(デプス判定)により、敵オブジェクトEOの実体モデルはこの境界面(スクリーンオブジェクト)に隠されるため描画されない。しかしながら、シルエットモデルは、境界面(スクリーンオブジェクト)に対してデプス判定をしないように設定されているため、敵オブジェクトEO(およびそのシルエットモデル)が境界面の非開口領域の背後に存在する場合であっても、シルエットモデルは描画されて、図24や図25に示すように影が表示される。しかしながら、敵オブジェクトEOが境界面の前方に存在する場合や、境界面の開口領域の背後に存在する場合は、シルエットモデルは実体モデルより奥に存在し、敵オブジェクトEOの実体モデルが描画され、それによりシルエットモデルは描画されないため、影は表示されない。これは、シルエットモデルが敵オブジェクトEOの実体モデルに内包されるように設定されているからである。
上側LCD22には、以下の優先順位で画像が合成されて表示される。
(1)第1空間1に存在するオブジェクトの画像
(2)実世界画像のうち非開口領域については、第2空間2に存在するオブジェクトの影画像と実世界画像の合成画像(例えば影画像が半透明で実世界画像に合成される)
(3)実世界画像のうち開口部領域については第2空間2に存在するオブジェクトの画像(実体画像)が優先的に合成され、さらにその奥に奥壁画像が合成される
ただし、第2空間2に存在する敵オブジェクトEOの移動状態によっては、敵オブジェクトEOが開口領域と非開口領域の両方にまたがって存在する場面がある。つまり、仮想カメラから見た位置において、敵オブジェクトEOが開口のふちに存在する場面がある。図25は、このような、第2空間2に存在する敵オブジェクトEOが、境界面3上に設定された開口のふちに移動した状態を示す。図25において示されるとおり、第2空間2に存在する敵オブジェクトEOについて、仮想カメラから見て、開口を通して第2空間2が視認できる範囲についてはそのままの画像が、開口を通して第2空間2が視認できない範
囲については影ESが、上側LCD22に表示される。
より具体的には、図28に示すように、各オブジェクトには不透明度(アルファ値)のデータが設定される。図28は、本実施形態において各オブジェクトに設定される不透明度(アルファ値)の例を示す。敵オブジェクトの実体モデルには、そのテクスチャにモデル全体について不透明度が1である設定がされる。また、敵オブジェクトのシルエットモデル(平面ポリゴン)には、そのテクスチャに影画像の全体について不透明度が1である設定がされる。弾のモデルについても同様である。敵オブジェクトのうち半透明のオブジェクトのモデルやエフェクト用のモデルについては、そのテクスチャに、例えば、そのモデル全体について不透明度0.6が設定される。スクリーンオブジェクト(図20Aに示される球体のスクリーンモデル)には、マテリアルとして不透明度0.2が設定され、そのテクスチャであるαテクスチャに、各点ごとに1または0が設定される。1が非開口部を示し、0が開口部を示す。すなわち、スクリーンオブジェクトには、不透明度値として、マテリアルの設定とテクスチャの設定の2つが施される。
また、敵オブジェクト、弾オブジェクト、半透明の敵オブジェクト、エフェクトオブジェクト、スクリーンオブジェクトの間は、互いにデプス判定有効である。「影用の平面ポリゴンと敵オブジェクトの間」「影用の平面ポリゴンと弾オブジェクトの間」「影用の平面ポリゴンと半透明の敵オブジェクトの間」「影用の平面ポリゴンとエフェクトオブジェクトの間」は、互いにデプス判定有効である。影用の平面ポリゴンとスクリーンオブジェクトとの間は、デプス判定無効である。
デプス判定が有効な場合には、通常の透視投影に従い、レンダリングされる。仮想カメラからの奥行方向に応じて陰面消去される。デプス判定が無効の場合には、対象オブジェクトが自身のオブジェクトより仮想カメラに近い側に存在していてもレンダリングされる。
そして、本実施形態においては、レンダリング時に、オブジェクトごとにレンダリングの式を設定することができる。具体的には以下のように設定される。
敵オブジェクトの実体、弾オブジェクト、半透明の敵オブジェクト、エフェクトオブジェクトは、以下の式で描画される。
「自身の色 × 自身の不透明度 + 背景の色 × (1 − 自身の不透明度)」
スクリーンオブジェクトは、以下の式で描画される。
「自身の色(実世界画像の色) × 自身のテクスチャの不透明度 + 背景の色 ×
(1− 自身のテクスチャの不透明度)」
敵オブジェクトのシルエットモデルは、以下の式で描画される。
「自身の色×(1− 背景のマテリアルの不透明度)+背景の色×背景のマテリアルの不透明度)」
なお、敵オブジェクトが描画される場合、その背景はスクリーンオブジェクト(境界面3)であるから、上式において、「背景のマテリアルの不透明度」は「スクリーンオブジェクト(境界面3)のマテリアルの不透明度」である。
上述のような様々な設定により、敵オブジェクトが境界面の非開口部の背後に存在するときには、実体は表示されずに影が表示され、敵オブジェクトが境界面の前方に存在するときおよび敵オブジェクトが境界面の開口部に存在するときには、影は表示されずに実体が表示される。
また、本実施形態におけるゲームでは、境界面3上に存在する開口は、弾オブジェクトBOを当てることにより修復されうる。図26は、境界面3に存在する開口に弾オブジェクトBOを当てることにより、当該開口を塞ぐ様子を示す。図26に示されるとおり、例えば弾オブジェクトBOが当該境界面3上に存在する非開口領域に衝突した時に、衝突点から一定範囲の境界面について非開口のデータ設定がされる。これにより、衝突点から一定範囲に開口があったときに当該開口は塞がれる。なお、本実施形態では、開口にあたった弾オブジェクトBOは消滅する(したがって、図26において弾オブジェクトBOは消滅している)。また、弾オブジェクトBOは境界面3上の開口に当たったときには、当該開口を通り抜けて第2空間に移動する。
なお、上述したように、上側LCD22には、ゲーム装置10に内蔵する実カメラによって撮像されたリアルタイムの実世界画像が境界面3上にあるかのように見える画像として表示されている。実空間内においてゲーム装置10の方向を変えることによって、ゲーム装置10で撮像される撮像範囲が変わるため、上側LCD22に表示されるカメラ画像CIも変化する。この場合、ゲーム装置10は、実空間内におけるゲーム装置10の動きに応じて、上記仮想空間内における上記仮想カメラ(第2の描画方法については、仮想世界描画用カメラ)の方向を変化させる。これによって、実空間内に配置されているように表示されている敵オブジェクトEOや境界面3上に存在する開口は、実空間内におけるゲーム装置10の方向が変わっても実空間内における同じ位置に配置されているように表示される。例えば、ゲーム装置10の実カメラによる撮像方向を左へ変えるとする。この場合、上側LCD22に表示されている敵オブジェクトEOや境界面3上に存在する開口の表示位置が、実カメラの撮像方向を変えた方向の逆方向(右方向)に移動、すなわち敵オブジェクトEOおよび境界面3上に存在する開口が配置されている仮想空間の仮想カメラ(第2の描画方法については仮想世界描画用カメラ)の方向が実カメラと同じ左方向に移動する。したがって、敵オブジェクトEOや境界面3上に存在する開口は、ゲーム装置10の方向が変化して実カメラの撮像範囲が変わったとしても、あたかもカメラ画像CIで表現された実空間内に配置されているように上側LCD22に表示される。
《画像処理の動作例》
次に、図29〜図31、図32A及び図32Bを参照して、ゲーム装置10で実行される本実施形態における画像処理プログラムによる具体的な画像処理の動作例について説明する。図29は、当該画像処理プログラムを実行することによってゲーム装置10が画像処理する動作例の一例を示すフローチャートである。図30は、図29のステップ53で行われる敵オブジェクト関連処理の詳細な動作の一例を示すサブルーチンのフローチャートである。図31は、図29のステップ54で行われる弾オブジェクト関連処理の詳細な動作の一例を示すサブルーチンのフローチャートである。図32A及び図32Bは、図29のステップ57で行われる表示画像の更新処理(第1の描画方法及び第2の描画方法)の詳細な動作の一例を示すサブルーチンのフローチャートである。
《画像処理例》
次に、図29を参照して、情報処理部31の動作について説明する。まず、ゲーム装置10の電源(電源ボタン14F)がONされると、CPU311によってブートプログラム(図示せず)が実行され、これにより内蔵メモリまたは外部メモリ45やデータ保存用外部メモリ46に格納されているプログラムがメインメモリ32にロードされる。そして、当該ロードされたプログラムが情報処理部31(CPU311)で実行されることによって、図29に示すステップが実行される。なお、図29〜図32Aにおいては、本発明の画像処理に直接関連しない画像処理及びその他周辺の処理についての記載を省略する。
図29において、情報処理部31は、画像処理における初期設定を行い(ステップ51
)、次のステップ52に処理を進める。例えば、情報処理部31は、仮想世界画像(仮想空間の画像)を生成するための仮想カメラの初期位置や初期方向を仮想カメラデータDjに設定し、当該仮想カメラが配置される仮想空間の座標軸(例えば、XYZ軸)を設定する。
次に、情報処理部31は、ゲーム装置10の各構成部より各種データを取得し(ステップ52)、次のステップ53に処理を進める。例えば、情報処理部31は、現在選択されている撮像部(本実施形態では外側撮像部23)によって撮像されたカメラ画像を用いて、実カメラ画像データDbを更新する。また、情報処理部31は、操作ボタン14やアナログスティック15を操作したことを示すデータを取得して、操作子データDa1を更新する。更に、情報処理部31は、角速度センサ40によって検出された角速度を示す角速度データを取得して、角速度データDa2を更新する。
次に、情報処理部31は、敵オブジェクト関連処理を実行し(ステップ53)、次のステップ54に処理を進める。以下、図30を参照して、敵オブジェクト関連処理について説明する。
図30において、情報処理部31は、敵オブジェクトEOが出現する条件を満たしているか否かを判断する(ステップ61)。例えば、敵オブジェクトEOが出現する条件として、所定時間毎に敵オブジェクトEOが出現してもいいし、敵オブジェクトEOが仮想世界から消滅したことに応じて新たな敵オブジェクトEOが出現してもいいし、ランダムのタイミングで敵オブジェクトEOを出現させてもよい。なお、敵オブジェクトEOが出現する条件は、例えば、メインメモリ32に保持されている各種プログラム群Paにより設定される。
そして、情報処理部31は、敵オブジェクトEOが出現する条件を満たしている場合、次のステップ62に処理を進める。一方、情報処理部31は、敵オブジェクトEOが出現する条件を満たしていない場合、次のステップ63に処理を進める。
ステップ62において、情報処理部31は、出現条件を満たした敵オブジェクトEOに対応する敵オブジェクトデータDfを生成、および初期設定を行って、次のステップ63に処理を進める。例えば、情報処理部31は、メインメモリ32に保持されている各種プログラム群Paを用いて、実体データDf1、シルエットデータDf2、開口形状データDf3、および敵オブジェクトEOに対応するポリゴンのデータを取得する。そして、情報処理部31は、当該各データを含んだ敵オブジェクトデータDfを生成する。また、例えば、情報処理部31は、生成した敵オブジェクトデータDfに含まれる、敵オブジェクトEOに対応するポリゴンの仮想空間上における配置方向や配置位置を示すデータ、および敵オブジェクトEOの仮想空間上における移動速度や移動方向を示すデータの初期設定を行う。当該初期設定は周知の方法で行われる。
次に、情報処理部31は、仮想空間に配置されている敵オブジェクトEOを移動させ(ステップ63)、次のステップ64に処理を進める。一例として、情報処理部31は、敵オブジェクトデータDeに含まれる敵オブジェクトEOの配置位置を示すデータを、当該敵オブジェクトデータDeに含まれる敵オブジェクトEOの仮想空間上における移動速度や移動方向を示すデータに基づいて更新する。この際、情報処理部31は、敵オブジェクトデータDeに含まれる敵オブジェクトEOの配置方向を示すデータを、上記移動方向を示すデータに基づいて更新する。更新後、敵オブジェクトデータDeに含まれる敵オブジェクトEOの仮想空間上における移動速度や移動方向を示すデータを任意に更新してもよい。移動速度や移動方向を示すデータを更新することで、敵オブジェクトEOは、仮想空間上を、任意の速度、任意の方向に移動することができる。
次に、情報処理部31は、敵オブジェクトEOが仮想カメラ(第1の描画方法における仮想カメラまたは第2の描画方法における仮想世界描画用カメラ。)の位置から一定距離まで到達したか否かを判定する(ステップ64)。例えば、情報処理部31は、敵オブジェクトデータDeに含まれる敵オブジェクトEOの配置位置を示すデータと、仮想カメラデータDjに含まれる仮想カメラ(第1の描画方法における仮想カメラまたは第2の描画方法における仮想世界描画用カメラ)の配置位置を示すデータとを比較する。そして、情報処理部31は、二つのデータが所定の条件(例えば、敵オブジェクトEOの配置位置と仮想カメラの配置位置との間の距離が所定の値よりも小さくなる)を満たした場合、敵オブジェクトEOが仮想カメラの位置から一定距離まで到達したと判定し、二つのデータが所定の条件を満たさない場合、敵オブジェクトEOは仮想カメラの位置まで到達していないと判定する。なお、以下、第1の描画方法及び第2の描画方法を区別せず、単に「仮想カメラ」と表記した場合、第1の描画方法における仮想カメラまたは第2の描画方法における仮想世界描画用カメラを指す。
情報処理部31は、敵オブジェクトEOが仮想カメラの位置まで到達したと判定した場合、次のステップ65に処理を進める。一方、情報処理部31は、敵オブジェクトEOが仮想カメラの位置まで到達していないと判定した場合、ステップ66に処理を進める。
ステップ65において、情報処理部31は、減点処理を行って、次のステップ66に処理を進める。例えば、情報処理部31は、得点データDhが示すゲームの得点を所定値だけ減点し、減点後の得点を用いて得点データDhを更新する。なお、上記減点処理においては、情報処理部31は、上記仮想カメラの位置まで到達した敵オブジェクトEOを仮想空間から消滅させる処理(例えば、仮想カメラの位置まで到達した敵オブジェクトEOに関する敵オブジェクトデータDeを初期化し、当該敵オブジェクトEOが仮想空間に存在しない状態にする)を行ってもよい。また、当該減点処理における所定値は、任意の値でよく、例えば、メインメモリ32に保持されている各種プログラム群Paによって設定されてもよい。
ステップ66において、情報処理部31は、敵オブジェクトEOが境界面3を通過する(敵オブジェクトEOが第1空間1と第2空間2との間を移動する)か否かを判定する。例えば、情報処理部31は、敵オブジェクトデータDeに含まれる敵オブジェクトEOの配置位置を示すデータと、境界面データDdに含まれる境界面3の配置位置を示すデータとを比較する。そして、情報処理部31は、二つのデータが所定の条件を満たした場合、敵オブジェクトEOが境界面3を通過すると判定し、二つのデータが所定の条件を満たさない場合、敵オブジェクトEOが境界面3を通過しないと判定する。なお、所定の条件とは、例えば、敵オブジェクトEOの仮想空間上の座標(配置位置)が、境界面3の球体表面の条件式を満たすことである。上述のとおり、境界面3の仮想空間上の配置位置を示すデータは、境界面3の仮想空間上の存在範囲を示し、例えば、球体表面(本実施形態における境界面3の形状)の条件式である。敵オブジェクトEOの配置位置が当該条件式を満たす場合、敵オブジェクトEOは、仮想空間において境界面3上に存在することになる。本実施形態では、例えばこのような場合に、敵オブジェクトEOが境界面3を通過すると判定する。
情報処理部31は、敵オブジェクトEOが境界面3を通過すると判定した場合、次のステップ67に処理を進める。一方、情報処理部31は、敵オブジェクトEOが境界面3を通過しないと判定した場合、当該サブルーチンによる処理を終了する。
ステップ67において、情報処理部31は、境界面データDdに含まれる開口判定用データの更新処理を行って、当該サブルーチンによる処理を終了する。本処理は、敵オブジ
ェクトEOが境界面3を通過することによりできる境界面3上の開口情報を境界面データDdに登録するための処理である。例えば、第1の描画方法及び第2の描画方法において、情報処理部31は、境界面データDdに含まれる開口判定用データの、敵オブジェクトEOが境界面3を通過する仮想空間上の位置に対応する位置を中心とした領域のアルファ値と開口形状データDf3のアルファ値とを乗算する。開口形状データDf3は、敵オブジェクトEOの配置位置を中心とした、アルファ値「0」が格納されたテクスチャデータである。そのため、当該乗算によって、敵オブジェクトEOの配置位置(敵オブジェクトEOが通過する境界面3上の座標)を中心として開口が生成される領域の開口判定用データのアルファ値は「0」となる。つまり、情報処理部31は、境界面3上に既に開口が存在するか否かを判定することなく、境界面の状態(具体的には開口判定用データ)を更新することができる。なお、敵オブジェクトと境界面の衝突位置に既に開口が存在するか否かを判定するようにしてもよい。そして、開口が存在しない場合には、当該衝突位置に対応する実世界画像が破片となって飛び散るエフェクトを表示してもよい。
また、上記開口判定用データの更新処理においては、情報処理部31は、開口が生成されたことの演出処理(例えば、開口が生成された位置において壁が崩れる演出を行う)を行ってもよい。この場合、情報処理部31は、敵オブジェクトEOが境界面3を通過する位置(開口を生成する範囲)が既に開口状態であったか否かの判定をする必要がある。情報処理部31は、例えば、開口形状データDf3のアルファ値を「0」から「1」に反転させたデータと上記乗算した開口判定用データのアルファ値とを乗算することにより、開口を生成する範囲が既に開口状態であったかどうかの判定をすることができる。すなわち、開口を生成する範囲全てが既に開口状態であった場合、開口判定用データのアルファ値は「0」であるから、当該乗算結果は「0」である。他方、開口を生成する範囲の一部でも開口状態ではない場合、開口判定用データのアルファ値は「0」でない部分が存在するため、当該乗算結果は「0」以外となる。
なお、敵オブジェクトEOの開口形状データDf3は、敵オブジェクトEOの形状に対応したアルファ値「0」を格納したテクスチャデータであるが、情報処理部31は、所定のイベントにより当該テクスチャデータのアルファ値を「1」に変換してもよい。当該変更後上記処理が行われた場合、開口形状データDf3のアルファ値が「1」であるため、開口判定用データのアルファ値は変更されない。この場合、敵オブジェクトEOは、開口を作らず、境界面3を通過する。すなわち、これによって、敵オブジェクトEOが、境界面3をすり抜けるかのような演出を行うことができる(図22参照)。なお、所定のイベントとは、例えば、乱数や所定の間隔で定められた時間間隔であってもよいし、ゲーム上の所定条件が満たされたことであってもよい。そして、これらは、例えば、メインメモリ32に保持されている各種プログラム群Paによって設定されてもよい。
図29に戻り、上記ステップ53における敵オブジェクト関連処理の後、情報処理部31は、弾オブジェクト関連処理を行い(ステップ54)、次のステップ55に処理を進める。以下、図31を参照して、弾オブジェクト関連処理について説明する。
図31において、情報処理部31は、設定されている移動速度ベクトルに応じて、仮想空間内で弾オブジェクトBOを移動させ(ステップ71)、次のステップ72に処理を進める。例えば、情報処理部31は、弾オブジェクトデータDgに含まれる移動速度ベクトルを示すデータに基づいて、弾オブジェクトBOの配置方向や配置位置を示すデータを更新する。この際、情報処理部31は、周知の方法で、当該移動速度ベクトルを示すデータを更新してもよい。また、例えば、情報処理部31は、弾オブジェクトBOの種類に応じて、当該移動速度ベクトルを示すデータの更新方法を変えてもよい。例えば、弾オブジェクトBOがボールである場合、情報処理部31は、仮想空間上鉛直方向における重力の影響を考慮して、当該移動速度ベクトルを示すデータを更新してもよい。
次に、情報処理部31は、ゲーム装置10のユーザによって発射操作が行われたか否かを判断する(ステップ72)。例えば、情報処理部31は、操作子データDa1を参照して、ユーザが所定の発射操作(例えば、ボタン14B(Aボタン)の押下)を行ったか否かを判断する。そして、情報処理部31は、発射操作が行われた場合、次のステップ73に処理を進める。一方、情報処理部31は、発射操作が行われていない場合、次のステップ74に処理を進める。
ステップ73において、情報処理部31は、発射操作に応じて、仮想空間における仮想カメラの位置に弾オブジェクトBOを配置し、当該弾オブジェクトBOに対する移動速度ベクトルを設定して、次のステップ74に処理を進める。例えば、情報処理部31は、当該発射操作に対応する弾オブジェクトデータDgを生成する。そして、例えば、情報処理部31は、仮想カメラデータDjに含まれる仮想カメラの配置位置や配置方向を示すデータを、生成した弾オブジェクトデータDgに含まれる弾オブジェクトBOの配置位置や配置方向を示すデータに格納する。また、例えば、情報処理部31は、生成した弾オブジェクトデータDgに含まれる移動速度ベクトルを示すデータに任意の値を格納する。当該移動速度ベクトルを示すデータに格納する値は、メインメモリ32に保持されている各種プログラム群Paによって設定されてもよい。
ステップ74において、情報処理部31は、敵オブジェクトEOと弾オブジェクトBOとが仮想空間内で接触したか否かを判断する。例えば、情報処理部31は、敵オブジェクトデータDfに含まれる敵オブジェクトEOの配置位置を示すデータと、弾オブジェクトデータDgに含まれる弾オブジェクトBOの配置位置を示すデータとを比較して、敵オブジェクトEOと弾オブジェクトBOとが仮想空間内で接触したか否かを判断する。例えば、情報処理部31は、敵オブジェクトEOの配置位置を示すデータと弾オブジェクトBOの配置位置を示すデータとが所定の条件を満たした場合、敵オブジェクトEOと弾オブジェクトBOとが接触したと判定する。また、そうではない場合、情報処理部31は、敵オブジェクトEOと弾オブジェクトBOとが接触していないと判定する。なお、所定の条件とは、例えば、敵オブジェクトEOの配置位置と弾オブジェクトBOの配置位置との間の距離が所定の値よりも小さくなることである。当該所定の値は、例えば、敵オブジェクトEOの大きさに基づいた値であってもよい。
そして、情報処理部31は、敵オブジェクトEOと弾オブジェクトBOとが接触したと判定した場合、次のステップ75に処理を進める。一方、情報処理部31は、敵オブジェクトEOと弾オブジェクトBOとが接触していないと判定した場合、次のステップ76に処理を進める。
ステップ75において、情報処理部31は、加点処理を行って、次のステップ76に処理を進める。例えば、上記加点処理においては、情報処理部31は、得点データDhが示すゲームの得点を所定数だけ加点し、加点後の得点を用いて得点データDhを更新する。また、上記加点処理においては、情報処理部31は、上記ステップ84で接触したと判定された両者(すなわち、敵オブジェクトEOと弾オブジェクトBO)を仮想空間から消滅させる処理(例えば、弾オブジェクトBOと接触した敵オブジェクトEOおよび敵オブジェクトEOに接触した弾オブジェクトBOに関するそれぞれの敵オブジェクトデータDeおよび弾オブジェクトデータDgを初期化し、当該敵オブジェクトEOおよび弾オブジェクトBOが仮想空間に存在しない状態にする)を行う。なお、当該加点処理における所定値は、任意の値でよく、例えば、メインメモリ32に保持されている各種プログラム群Paによって設定されてもよい。
ステップ76において、情報処理部31は、弾オブジェクトBOが境界面3上の非開口
領域に接触したか否かを判断する。例えば、情報処理部31は、弾オブジェクトデータDgに含まれる弾オブジェクトBOの配置位置を示すデータと、開口判定用データとを用いて、弾オブジェクトBOが境界面3上の非開口領域に接触したか否かを判定する。
例えば、情報処理部31は、弾オブジェクトデータDgに含まれる弾オブジェクトBOの配置位置を示すデータが、上記敵オブジェクトBOの処理と同様に、境界面3の球体表面の条件式を満たすか否かを判定する。そして、情報処理部31は、弾オブジェクトBOの配置位置を示すデータが、当該球体表面の条件式を満たさない場合、弾オブジェクトBOが境界面3上に接触していないと判定する。他方、弾オブジェクトBOの配置位置を示すデータが、境界面3の球体表面の条件式を満たす場合、弾オブジェクトBOは、仮想空間上、境界面3上に存在することになる。この時、情報処理部31は、例えば、当該弾オブジェクトBOが存在する境界面3上の位置に対応する位置を中心とした所定の領域について、開口判定用データのアルファ値を取得する。この所定の領域は、弾オブジェクトBOと境界面3との接触点を中心とした所定領域である。そして、当該所定領域に対応する開口判定用データのアルファ値が非開口領域に対応するアルファ値「1」である場合、弾オブジェクトBOが境界面3上の非開口領域に接触したと判定する。
そして、情報処理部31は、弾オブジェクトBOが境界面3上の非開口領域に接触したと判定した場合、次のステップ77に処理を進める。一方、情報処理部31は、弾オブジェクトBOが境界面3上の非開口領域に接触していないと判定した場合、次のステップ78に処理を進める。
ステップ77において、情報処理部31は、開口判定用データの更新処理を行って、次のステップ78に処理を進める。例えば、上記更新処理においては、情報処理部31は、境界面3の非開口領域と接触したと判定した弾オブジェクトBOの配置位置に対応する境界面3上の位置を中心とした所定領域の開口判定用データのアルファ値を非開口領域に対応するアルファ値「1」に更新する。また、上記更新処理においては、情報処理部31は、上記ステップ76で接触したと判定された弾オブジェクトBOを仮想空間から消滅させる処理(例えば、境界面3上の非開口領域と接触した弾オブジェクトBOに関する弾オブジェクトデータDgを初期化し、当該弾オブジェクトBOが仮想空間に存在しない状態にする)を行う。なお、当該更新処理における所定領域は、任意の領域でよく、例えば、メインメモリ32に保持されている各種プログラム群Paによって設定されてもよい。
ステップ78において、情報処理部31は、弾オブジェクトBOが仮想空間における所定の位置まで到達したか否かを判断する。所定の位置は、例えば、仮想空間上における奥壁が存在する位置であってもよい。この場合、例えば、情報処理部31は、弾オブジェクトデータDgに含まれる弾オブジェクトBOの配置位置を示すデータがる奥壁に衝突したか否かを判定する。
そして、情報処理部31は、弾オブジェクトBOが所定の位置まで到達した場合、次のステップ77に処理を進める。一方、情報処理部31は、弾オブジェクトBOが所定の位置まで到達していない場合、当該サブルーチンによる処理を終了する。
ステップ77において、情報処理部31は、上記ステップ76で所定の位置に到達したと判定された弾オブジェクトBOを仮想空間から消滅させる処理を行い、当該サブルーチンによる処理を終了する。例えば、情報処理部31は、上記ステップ76で所定の位置に到達したと判定された弾オブジェクトBOを仮想空間から消滅させる処理(例えば、当該弾オブジェクトBOに関する弾オブジェクトデータDgを初期化し、当該弾オブジェクトBOが仮想空間に存在しない状態にする)を行う。
図29に戻り、上記ステップ54における弾オブジェクト関連処理の後、情報処理部31は、ゲーム装置10の動きを算出して(ステップ55)、次のステップ56に処理を進める。一例として、情報処理部31は、角速度データDa2が示す角速度を用いて、ゲーム装置10の動き(例えば、ゲーム装置10に設けられた実カメラにおける撮像方向の変化)を算出し、当該動きを用いて動きデータDiを更新する。具体的には、ユーザが実空間においてゲーム装置10に設けられた実カメラの撮像方向を変化させた場合、ゲーム装置10全体の向きも変化するため、ゲーム装置10に当該変化に応じた角速度が生じる。そして、ゲーム装置10に生じた角速度を角速度センサ40が検出することによって、当該角速度を示すデータが角速度データDa2に格納される。したがって、情報処理部31は、角速度データDa2が示す角速度を用いることによって、ゲーム装置10に設けられた実カメラの撮像方向が変化した方向や変化した量(角度)をゲーム装置10の動きとして算出することが可能となる。
次に、情報処理部31は、ゲーム装置10の動きに応じて仮想空間における仮想カメラの方向を変更し(ステップ56)、次のステップ57に処理を進める。例えば、情報処理部31は、動きデータDiを用いて、実空間におけるゲーム装置10の実カメラの撮像方向変化と同じ変化を、仮想空間における仮想カメラに与え、変化後の仮想カメラの位置や方向を用いて仮想カメラデータDjを更新する。一例として、実空間におけるゲーム装置10の実カメラの撮像方向が左へA°変化した場合、仮想空間における仮想カメラの方向も左へA°変化させる。これによって、実空間内に配置されているように表示されている敵オブジェクトEOや弾オブジェクトBOは、実空間内におけるゲーム装置10の方向や位置が変わっても実空間内における同じ位置に配置されているように表示される。
次に、情報処理部31は、表示画面の更新処理を行い(ステップ57)、次のステップ58に処理を進める。以下、図32A及び図32Bを参照して、表示画面の更新処理について説明する。図32Aは、第1の描画方法における表示画面の更新処理である。また、図32Bは、第2の描画方法における表示画面の更新処理である。
まず、第1の描画方法における表示画面の更新処理について説明する。
図32Aにおいて、情報処理部31は、上記ステップ52で取得した実カメラ画像を仮想カメラの撮影範囲におけるスクリーンオブジェクト(境界面3)に貼りつける処理を行い(ステップ81)、次のステップ82に処理を進める。例えば、情報処理部31は、上記ステップ52で更新した実カメラ画像データDbを用いて、実世界画像データDcに含まれる実カメラ画像のテクスチャデータを更新する。そして、情報処理部31は、仮想カメラデータDjに含まれる仮想カメラの仮想空間上の配置方向及び配置位置を示すデータを用いて、仮想カメラの視野方向と境界面3の重なる点を求める。情報処理部31は、求めた点を中心として実世界画像データDcに含まれる上記実カメラ画像のテクスチャデータを貼り付け、境界面データDdを更新する。この時、情報処理部31は、テクスチャデータを貼りつける領域に設定されている開口判定用データを、テクスチャデータの各画素に対応する領域分取得する。そして、情報処理部31は、取得した開口判定用データに設定されているアルファ値(「0」または「0.2」)を上記テクスチャデータに適用する。具体的には、情報処理部31は、貼りつける実カメラ画像のテクスチャデータの各画素の色情報と、開口判定用データの対応する位置におけるアルファ値とを掛け算する。この処理により、上述のとおり、実世界画像に開口が表現される。なお、開口判定用データに格納されるアルファ値「0.2」(非開口領域)は、上記掛け算の際は、上述のマテリアルとしてのアルファ値「1」として取り扱われる。また、本実施形態では、境界面3に貼り付けられる実カメラ画像のテクスチャデータは、仮想カメラC0の視野範囲よりも領域の広い画像データである。
次に、情報処理部31は、仮想空間をレンダリングする処理により表示画像を生成し(ステップ82)、当該サブルーチンによる処理を終了する。例えば、情報処理部31は、境界面3(スクリーンオブジェクト)、敵オブジェクトEO、弾オブジェクトEO、及び奥壁BWが配置されている仮想空間をレンダリングした画像を生成し、当該画像を用いてレンダリング画像データDkに含まれる仮想空間のレンダリング画像データを更新する。また、情報処理部31は、仮想空間のレンダリング画像データを用いて表示画像データDlを更新する。以下、図33及び図34を用いて、当該レンダリング処理の一例について説明する。
図33は、仮想空間上における、敵オブジェクトEO、弾オブジェクトBO、境界面3(開口判定用データが設定されたスクリーンオブジェクト)及び奥壁BWの配置例を示す。また、図34は、図33における仮想カメラC0が原点から(X,Y,Z)=(0,0,1)方向に向いているとした場合における各オブジェクトの位置関係を示す。このように、敵オブジェクトEO、弾オブジェクトBO、境界面3及び奥壁BWが、それぞれ敵オブジェクトデータDf、弾オブジェクトデータDg、境界面データDd及び奥壁画像データDeに含まれる配置位置を示すデータに応じて配置されている。また、仮想空間には、仮想空間をレンダリングするための仮想カメラC0が、仮想カメラデータDjに含まれる配置方向及び配置位置を示すデータに応じて配置されている。
情報処理部31は、図33(または図34)に示されるとおり境界面3を含み、仮想空間に配置された敵オブジェクトEO、弾オブジェクトBO、奥壁BWを仮想カメラC0により透視投影でレンダリングする。このとき、情報処理部31は、描画の優先度情報を考慮する。通常の透視投影では、境界面3により、第2空間2に存在するオブジェクトは描画されない。本実施形態のゲームでは、境界面3(実世界画像)に開口部を設けて、その開口部から第2空間2の一部が見えるようにした。また、第2空間2にあるオブジェクトの影を実世界画像に合成して描画するようにした。こうすることによって、実世界画像の向こうにさらに仮想世界が存在しているかのような感覚をユーザに与えることができる。具体的には、情報処理部31は、描画の優先度情報を用いて、当該レンダリング処理を行う。なお、本実施形態における画像処理プログラムは、当該描画の優先度の一例として、アルファ値を用いる。
上記透視投影において、第2空間2に存在するオブジェクト(本実施形態では敵オブジェクトEO又は奥壁BW)は、境界面3の背後に存在する。ここで、境界面3は、上述のステップ81により実カメラ画像のテクスチャデータが仮想カメラC0の視野方向(視野範囲)に貼られたスクリーンオブジェクトである。また、上記のとおり、実カメラ画像のテクスチャデータには、各位置に対応する開口判定用データが適用されている。したがって、仮想カメラC0の視野範囲には、開口判定用データが適用された実世界画像が存在する。
なお、本実施形態では、例えば、情報処理部31は、開口判定用データにアルファ値「0」が格納された領域(開口領域)については、第2空間2のうち開口領域から見える領域に存在する仮想オブジェクトや奥壁の画像を描画(レンダリング)する。また、情報処理部31は、開口判定用データに非開口領域に対応するアルファ値「0.2」が格納された領域(非開口領域としてアルファ値「1」が格納された領域として取り扱われる領域)については、第2空間2に存在する仮想オブジェクトや奥壁は描画されない。すなわち、表示される画像において当該領域に対応する部分には、上述のステップ81により貼り付けられた実世界画像が描画されることになる。
したがって、仮想カメラC0から見て開口判定用データに「0」が格納された領域については、実体データDf1、または、奥壁画像データDeに含まれる画像データが描画さ
れるようレンダリングされる。そして、上側LCD22上において当該領域に対応する部分には、仮想オブジェクト・奥壁の画像が表示されることになる。
また、仮想カメラC0から見て開口判定用データに非開口領域を示すアルファ値「0.2」が格納された領域(非開口領域としてアルファ値「1」が格納された領域として取り扱われる領域)については、第2空間2に存在する仮想オブジェクトや奥壁は描画されない。すなわち、上側LCD22に表示される画像において当該領域に対応する部分には、実世界画像が描画されることになる。ただし、前述の第2空間2に存在する敵オブジェクトEOの影ES(シルエットモデル)については、境界面3との間のデプス判定を無効に設定されており、境界面3のアルファ値「0.2」よりもシルエットモデルのアルファ値「1」の方が大きいため、非開口領域を示すアルファ値「1」が格納されている領域(開口判定用データにアルファ値「0.2」が格納された領域)において描画される。これにより、実世界画像上に影ESの画像が描画される。
また、敵オブジェクトEOの影ES(シルエットモデル)は実体モデルに内包されるようなサイズでかつそのように配置され、かつ、敵オブジェクトEOの実体モデルと影ESのシルエットモデルはデプス判定有効に設定される、敵オブジェクトEOが第1空間1に存在する場合、シルエットモデルは実体モデルに隠されるため描画されない。
なお、本実施形態における境界面3の形状は図20Aに示すように球体表面の中央部であるため、仮想カメラC0の視野方向によっては、開口判定用データが存在しない。この場合、疑似的にアルファ値を「0.2」を格納した開口判定用データが存在するものとして、上記処理を行う。つまり、開口判定用データが存在しない領域は、非開口領域を示すアルファ値「1」が格納されている領域として取り扱われる。
また、本実施形態における敵オブジェクトEOに対応する敵オブジェクトデータDfに含まれるシルエットデータDf2は、複数の平面ポリゴンがその法線方向を敵オブジェクトから見て各放射方向となるように設定されており、各平面ポリゴンには、敵オブジェクトをその方向から見たシルエット画像のテクスチャが適用される。したがって、本実施形態における画像処理プログラムでは、仮想空間画像における敵オブジェクトEOの影は、第2空間2における敵オブジェクトの向きが反映された画像として表現される。
また、情報処理部31は、照準カーソル画像データDmに含まれる画像データを仮想カメラC0の視野の中心(レンダリングする画像の中心)に優先して描画されるように上記レンダリング処理を行う。
以上の処理によって、情報処理部31は、仮想空間に配置された敵オブジェクトEO、弾オブジェクトBO、及び奥壁BWを透視投影でレンダリングし、仮想カメラC0から見た仮想世界画像(照準カーソルALを含んだ画像)を生成し、仮想空間のレンダリング画像データを更新する(ステップ82)。そして、更新した仮想空間のレンダリング画像データを用いて、表示画像データDlを更新する。
次に、第2の描画方法における表示画面の更新処理について説明する。
図32Bにおいて、情報処理部31は、上記ステップ52で取得した実カメラ画像をレンダリングする処理を行い(ステップ83)、次のステップ84に処理を進める。例えば、情報処理部31は、上記ステップ52で更新した実カメラ画像データDbを用いて、実世界画像データDcに含まれる実カメラ画像のテクスチャデータを更新する。そして、情報処理部31は、更新した実世界画像データDcを用いて、実カメラ画像をレンダリングした画像を生成し、生成した画像を用いて、レンダリング画像データDkに含まれる実カ
メラ画像のレンダリング画像データを更新する。以下、図35及び図36を用いて実カメラ画像をレンダリングする処理例について説明する。
本実施形態において情報処理部31は、図35に示すように、ゲーム装置10の実カメラから得られた実カメラ画像をテクスチャに設定し、当該テクスチャがマッピングされた平面ポリゴンを生成する。そして、情報処理部31は、実世界画像描画用カメラC1から、平行投影で上記平面ポリゴンをレンダリングした画像を実世界画像として生成する。ここで、上側LCD22の表示画面全面に、ゲーム装置10の実カメラから得られた実カメラ画像全面が表示される場合の実世界画像生成方法の一例について説明する。なお、本実施形態では上側LCD22の表示画面全体に本実施形態の合成画像(実世界画像と仮想世界画像との合成画像)が表示されるようにしたが、上側LCD22の表示画面の一部領域に合成画像が表示されるようにしてもよい。この場合には、この合成画像全体に実カメラ画像全体が表示されるようにする。
まず、上記平面ポリゴンを配置する仮想空間の座標の1単位に対して、iピクセルのテクスチャをマッピングする平面ポリゴンを考える。この場合、上記座標の1単位×1単位の領域に対して、iピクセル×iピクセルのテクスチャがマッピングされることになる。ここで、上側LCD22の表示画面が横Wdot×縦Hdotであって、Wdot×Hdotの表示画面全面と上記実カメラ画像のテクスチャ全面とが対応しているとする。つまり、カメラ画像のテクスチャデータのサイズが横Wピクセル×縦Hピクセルであるとする。
この場合、当該表示画面の1dot×1dotと上記実カメラ画像のテクスチャ1ピクセル×1ピクセルとが対応するように平面ポリゴンを配置することを考えればよく、図36に示すように上記座標を定めればよい。すなわち、上記カメラ画像のテクスチャが主面全面にマッピングされた平面ポリゴンの幅が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)に配置されることになる。
このように配置すれば、上記座標の1単位×1単位の領域が、テクスチャのiピクセル×iピクセルの領域に対応するため、平面ポリゴンの横(W/i)×縦(H/i)の領域は、テクスチャのWピクセル×Hピクセルのサイズに対応する。
以上のとおり、表示画面上の1dotと実カメラ画像(テクスチャ)の1ピクセルとが対応するように、仮想空間の座標に配置された平面ポリゴンを平行投影でレンダリングすることによって、ゲーム装置10の実カメラから得られた実カメラ画像に対応する実世界画像が生成される。
なお、上述のとおり、実世界画像データDcに含まれる実カメラ画像のテクスチャデータは、実カメラ画像データDbによって更新されるが、実カメラ画像データDbの画像の横A×縦Bのサイズと当該テクスチャデータの横W×縦Hのサイズが一致しない場合が存在する。この場合、情報処理部31は、任意の方法で、当該テクスチャデータの更新を行う。例えば、情報処理部31は、W×Hサイズの画像(テクスチャデータの画像)に合う
ように、実カメラ画像データDbの画像の横A及び縦Bのサイズを拡大及び縮小した画像を用いて、テクスチャデータを更新してもよい。また、例えば、実カメラ画像データDbの画像の横A及び縦Bのサイズが、テクスチャデータの横W及び縦Hのサイズよりも大きいとする。この場合、例えば、情報処理部31は、実カメラ画像データDbの画像の所定位置より、W×Hサイズの画像(テクスチャデータの画像)を切り出し、当該テクスチャデータを更新してもよい。また、例えば、実カメラ画像データDbの画像の横A及び縦Bのサイズの少なくともどちらか一方が、テクスチャデータの横W及び縦Hのサイズよりも小さいとする。この場合、例えば、情報処理部31は、実カメラ画像データDbの画像をテクスチャデータのサイズよりも大きくなるように拡大した後、拡大後の画像の所定の位置より、W×Hサイズの画像(テクスチャデータの画像)を切り出し、当該テクスチャデータを更新してもよい。
また、本実施形態において、上側LCD22の表示画面の横×縦のサイズと、実カメラ画像のテクスチャデータの横×縦のサイズとが一致しているが、これらは一致していなくともよい。この場合、上側LCD22の表示画面と実世界画像のサイズが一致しないことになるが、情報処理部31は、上側LCD22の表示画面に実世界画像を表示する際、周知の方法で、実世界画像のサイズを変更すればよい。
次に、情報処理部31は、図32Bに示されるとおり、仮想空間をレンダリングする処理を行い(ステップ84)、次のステップ85に処理を進める。例えば、情報処理部31は、開口判定用データを考慮して、敵オブジェクトEO、弾オブジェクトBO、及び奥壁BWが配置されている仮想空間をレンダリングした画像を生成し、当該画像を用いて、レンダリング画像データDkに含まれる仮想空間のレンダリング画像データを更新する。以下、図37〜図39を用いて、当該レンダリング処理の一例について説明する。
図37は、仮想空間上における、敵オブジェクトEO、弾オブジェクトBO、境界面3(開口判定用データ)及び奥壁BWの配置例を示す。また、図38は、図37における仮想カメラ(仮想世界描画用カメラ)が原点から(X,Y,Z)=(0,0,−1)方向に向いているとした場合における各オブジェクトの位置関係を示す。このように、敵オブジェクトEO、弾オブジェクトBO、境界面3及び奥壁BWが、それぞれ敵オブジェクトデータDf、弾オブジェクトデータDg、境界面データDd及び奥壁画像データDeに含まれる配置位置を示すデータに応じて配置されているとする。また、仮想空間には、仮想空間をレンダリングするための仮想世界描画用カメラC2が、仮想カメラデータDjに含まれる配置方向及び配置位置を示すデータに応じて配置されている。
ここでまず、境界面3(開口判定用データ)の位置について説明する。上述したとおり、本実施形態における画像処理プログラムでは、開口判定用データと実世界画像(実カメラ画像のレンダリング画像データ)の色情報とが掛け算されることで、開口が付与された実画像が生成される。したがって、例えば、実カメラ画像のレンダリング画像データ(図35及び図36の平面ポリゴンの位置関係を参照)の横1座標×縦1座標と、仮想空間における境界面3(具体的には、開口判定用データ)の横1座標×縦1座標とが対応しているとする。つまり、図37または図38に示す仮想世界描画用カメラC2から境界面3を透視投影により見たときに、仮想世界描画用カメラC2による境界面3の視野範囲が実カメラ画像のレンダリング画像データの横×縦のサイズに対応しているものとする。
図39は、仮想世界描画用カメラC2を境界面3との位置関係の例を示す。原点から(X,Y,Z)=(0,0,−1)方向に向いた仮想世界描画用カメラC2により境界面3を透視投影することを考える。この場合、図39に示すZ=Z0の位置に境界面3が配置されているとすれば、開口判定用データの横1座標×縦1座標と実カメラ画像のレンダリング画像データの横1座標×縦1座標とが対応することになる。ここで、Z=Z0の位置
は、境界面3を透視投影する仮想世界描画用カメラC2のY軸方向の画角をθとした場合に、仮想世界描画用カメラC2の注視点からY軸正方向への表示範囲の長さH/2iとなる位置である。なお、上述したように、Hは上側LCD22の表示画面における縦のドット数であり、iは仮想空間の座標の1単位に対してマッピングするテクスチャのピクセル数である。そして、仮想世界描画用カメラC2の中心からZ=Z0の位置までの距離をD(D>0)とすると、以下の数1が成立する。
(数1)
tanθ=(H/2i)/D=H/2Di
したがって、境界面3を考慮して、後述する敵オブジェクトEO等を透視投影して仮想世界画像を生成する場合、当該仮想世界画像を生成する仮想世界描画用カメラC2は「Y軸方向の画角θ=tan−1(H/2Di)、アスペクト比=W:H」と設定される。そして、境界面3(具体的には境界面3の状態を示す開口判定用データ)は、仮想世界描画用カメラC2からのビュー座標Z=Z0に配置される。これにより、仮想世界描画用カメラC2による境界面3の視野範囲が大きさW×Hとなる。
次に、仮想空間のレンダリング処理について説明する。以上の位置に境界面3が存在するものとして、情報処理部31は、仮想空間をレンダリングした画像を生成する。情報処理部31は、後に実世界画像を合成することを考慮して、当該レンダリング処理を行う。以下、当該レンダリング処理の一例を具体的に説明する。
情報処理部31は、図37(又は図38)に示されるとおり境界面3が存在しているものとして、仮想空間に配置された敵オブジェクトEO、弾オブジェクトBO、奥壁BWを仮想世界描画用カメラC2により透視投影でレンダリングする。このとき、情報処理部31は、描画の優先度情報を考慮する。通常の透視投影では、仮想空間上において仮想カメラから見て手前にあるオブジェクトが優先的に描画されるようにレンダリングされる。したがって、通常の透視投影では、境界面3が存在するため、第2空間2にあるオブジェクトは描画されないことになる。本実施形態のゲームでは、境界面3(実世界画像)に開口部を設けて、その開口部から第2空間2の一部が見えるようにした。また、第2空間2にあるオブジェクトの影を実世界画像に合成して描画するようにした。こうすることによって、実世界画像の向こうにさらに仮想世界が存在しているかのような感覚をユーザに与えることができる。具体的には、情報処理部31は、描画の優先度情報を用いて、当該レンダリング処理を行う。なお、本実施形態における画像処理プログラムは、当該描画の優先度情報の一例として、アルファ値を用いる。
上記透視投影において、第2空間2に存在するオブジェクト(本実施形態では敵オブジェクトEO又は奥壁BW)は、境界面3の背後に存在する。ここで、境界面3には、開口判定用データが設定されている。開口判定用データは、上述のとおり、アルファ値を格納した矩形のテクスチャデータであり、テクスチャデータ上の各座標は、仮想空間の境界面の各位置に対応する。したがって、情報処理部31は、仮想世界描画用カメラC2による第2空間2に存在するオブジェクトの視野範囲に対応する開口判定用データの領域を特定することができる。
なお、本実施形態では、例えば、情報処理部31は、開口判定用データにアルファ値「0」が格納された領域(開口領域)については、第2空間2のうち開口領域から見える領域に存在する仮想オブジェクトや奥壁の画像を描画(レンダリング)する。また、情報処理部31は、開口判定用データに非開口領域に対応するアルファ値「0.2」が格納された領域(非開口領域としてアルファ値「1」が格納された領域として取り扱われる領域)については、第2空間2に存在する仮想オブジェクトや奥壁は描画されない。すなわち、表示される画像において当該領域に対応する部分には、後述のステップ85の合成処理に
より、実世界画像が描画されることになる。
したがって、仮想世界描画用カメラC2から見て開口判定用データに「0」が格納された領域については、実体データDf1、または、奥壁画像データDeに含まれる画像データが描画されるようレンダリングされる。そして、後述のステップS85の合成処理により、上側LCD22上において当該領域に対応する部分には、仮想オブジェクト・奥壁の画像が表示されることになる。
また、仮想世界描画用カメラC2から見て開口判定用データに非開口領域を示すアルファ値「0.2」が格納された領域(非開口領域としてアルファ値「1」が格納された領域として取り扱われる領域)については、第2空間2に存在する仮想オブジェクトや奥壁は描画されない。すなわち、上側LCD22に表示される画像において当該領域に対応する部分には、後述のステップ85の合成処理により、実世界画像が描画されることになる。ただし、前述の敵オブジェクトEOの影ES(シルエットモデル)については、境界面3との間のデプス判定を無効に設定されており、境界面3のアルファ値「0.2」よりもシルエットモデルのアルファ値「1」の方が大きいため、非開口領域を示すアルファ値「1」が格納されている領域において描画される。これにより、実世界画像上に敵オブジェクトEOの影ESが描画される。また、敵オブジェクトEOのシルエットモデルは実体モデルに内包されるようなサイズでかつそのように配置され、かつ、敵オブジェクトEOの実体モデルとシルエットモデルはデプス判定有効に設定される、敵オブジェクトEOが第1空間1に存在する場合、シルエットモデルは実体モデルに隠されるため描画されない。
なお、本実施形態における境界面3の形状は図20Aに示すように球体表面の中央部であるため、仮想世界描画用カメラC2の視野方向によっては、開口判定用データが存在しない。この場合、疑似的にアルファ値を「0.2」を格納した開口判定用データが存在するものとして、上記処理を行う。つまり、開口判定用データが存在しない領域は、非開口領域を示すアルファ値「1」が格納されている領域として取り扱われる。
なお、本実施形態における敵オブジェクトEOに対応する敵オブジェクトデータDfに含まれるシルエットデータDf2は、複数の平面ポリゴンがその法線方向を敵オブジェクトから見て各放射方向となるように設定されており、各平面ポリゴンには、敵オブジェクトをその方向から見たシルエット画像のテクスチャが適用される。したがって、本実施形態における画像処理プログラムでは、仮想空間画像における敵オブジェクトEOの影ESは、第2空間2における敵オブジェクトの向きが反映された画像として表現される。
以上の処理によって、情報処理部31は、仮想空間に配置された敵オブジェクトEO、弾オブジェクトBO、及び奥壁BWを透視投影でレンダリングし、仮想世界描画用カメラC2から見た仮想世界画像を生成し、仮想空間のレンダリング画像データを更新する(図32Bのステップ84)。なお、当該処理によって生成される画像は、図40に示される表示画像から実世界画像を除いた画像である。
次に、情報処理部31は、実世界画像と仮想空間画像とを合成した表示画像を生成し(ステップ85)、当該サブルーチンによる処理を終了する。
例えば、情報処理部31は、実カメラ画像のレンダリング画像データと仮想空間のレンダリング画像とを、仮想空間のレンダリング画像を優先して、合成することによって、実世界画像と仮想空間画像とが合成された画像を生成する。そして、情報処理部31は、当該合成画像の中心(仮想世界描画用カメラC2の視野の中心)に、照準カーソル画像データに含まれる画像データを優先して合成することによって表示画像(図40)を生成する。図40は、第1の描画方法または第2の描画方法により生成される表示画像の一例を示
す。なお、情報処理部31は、仮想空間のレンダリング画像データに仮想空間画像が格納されていない場合、カメラ画像のレンダリング画像データに格納される実世界画像をそのまま表示画像データDlに格納すればよい。
以上により、第1の描画方法または第2の描画方法により表示画像の更新に関する処理(サブルーチン)が完了する。
図29に戻り、上記ステップ57における表示画像の更新に関する処理の後、情報処理部31は、更新した表示画像を上側LCD22に表示して(ステップ58)、次のステップ59に処理を進める。例えば、情報処理部31のCPU311は、上記ステップ57により更新された表示画像データDl(表示画像)をVRAM313に格納する。そして、情報処理部31のGPU312が、VRAM313に描画された表示画像を上側LCD22に出力することによって、上側LCD22に当該表示画像が表示される。
次に、情報処理部31は、ゲームを終了するか否かを判断する(ステップ59)。ゲームを終了する条件としては、例えば、上記の所定の条件(ゲームクリアまたはゲームオーバー)が満たされたことや、ユーザがゲームを終了する操作を行ったこと等がある。情報処理部31は、ゲームを終了しない場合、上記ステップ52に戻って処理を繰り返す。一方、情報処理部31は、ゲームを終了する場合、当該フローチャートによる処理を終了する。
<第1の実施形態に係る画像処理の作用及び効果>
以上述べたように、本実施形態に係る画像処理プログラムでは、図15の処理で例示したように、顔画像取得処理で取得された顔画像は、ユーザがゲーム(第1のゲーム)で成功するまでは、ユーザに解放されない。すなわち、ゲームで成功するまでは、ユーザは、取得された顔画像をゲームのセーブデータ記憶域Doに保存できない。また、ユーザは、取得された顔画像を複製、変更、転送等することができない。逆に、ゲーム不成功の状態で、ゲームの再試行をやめると、取得されていた顔画像が廃棄されて、処理が終了する。また、第1のゲームの処理の仕方、例えば、実行モード、あるいは、仕様によっては、第1のゲームの結果が不成功となると、直ちに、顔画像が廃棄されて、処理が終了する。したがって、取得された顔画像が引き渡されるまで、つまり顔画像がセーブデータ記憶域Doに保存されるまで、ユーザは、ゲームに執着し、熱意を持って成功を目指すようになる。すなわち、本実施形態の画像処理プログラムによれば、ユーザが極めて真剣にゲームに取り組むことができる。
また、ゲームの開始時のユーザのGUIに対する操作として、「内側撮像部24による顔画像の取得」が指示され(図14のステップ9でYesの場合)、顔画像取得処理1(図14のステップ10)が実行されると、以下のような効果も期待できる。すなわち、ゲーム開始時に、内側撮像部24を用いて撮影することで顔画像を取得すると、撮影毎に異なる顔画像が得られる。このため、例えば、他の装置に記憶されている特定の画像を選択して、選択した画像をゲームで用いる場合と比較して、ゲーム成功への意欲が増すことになる。また、外側撮像部23による顔画像取得処理2(図14のステップ12)の場合にも、同様の効果が期待できる。ゲーム開始時に、外側撮像部23を用いて撮影することで顔画像を取得しても、撮影毎に異なる顔画像が得られるからである。
また、本実施形態に係る画像処理プログラムによれば、上記第1のゲームに成功することで、セーブデータ記憶域Doに、ユーザ自身の顔画像、ユーザの周りの人の顔画像、ビデオ機器で得られた画像中の顔画像、ユーザの保有する生物の顔画像等、様々な顔画像を収集することができる。ゲーム装置10は、収集した顔画像を例えば、図7、図8のような画面に表示することができる。そして、ゲーム装置10は、例えば、図8のような画面
では、選択状態にある顔画像と関連の顔画像が反応を示す状態を表現できる。反応は、例えば、選択状態にある顔画像に向かって片目をつぶり、視線を送る、顔を向ける等である。したがって、ゲーム装置10は、ゲーム装置10内に収集した顔画像による仮想現実の世界に、実世界の人間関係、親密さ等に基づく関係を表現できる。その結果、顔画像を収集したユーザに、顔画像による仮想現実の世界への親近感、収集した顔画像に対する親しみ、実世界の人、あるいは生物に対する感情と同様の感情等を引き起こさせることができる。
また、本実施形態の画像処理プログラムによれば、収集した顔画像を敵オブジェクトEOの顔面部分にテクスチャマッピングすることによって、敵オブジェクトEOを生成し、ゲームを実行できる。ユーザは、ゲームに登場する敵オブジェクトEOに、収集した顔画像を貼り付けることで、いわば、配役を自由に決定できる。したがって、ユーザは、ゲームの実行時、敵オブジェクトEOの顔から得られる効果によって、ますます、ゲームに熱中する可能性を高めることができる。
さらに、本実施形態の画像処理プログラムによれば、敵オブジェクトEOを生成する際にも、敵オブジェクトEOに貼り付けるために、顔画像が選択状態になったときに、選択状態になった顔画像に関連する顔画像が反応を示す。したがって、敵オブジェクトEOの配役を決定するユーザに、仮想現実の世界への親近感、一覧表示された顔画像に対する親しみ、実世界の人に対する感情と同様の感情等を引き起こさせることができる。
なお、上記第1の実施形態では、敵オブジェクトEOに顔画像を貼り付けることで、敵オブジェクトEOを生成した。しかし、このような処理は、敵オブジェクトEOの生成に限定される訳ではなく、ゲームに登場するキャラクタオブジェクト一般の生成に適用できる。例えば、ゲーム装置10の操作、あるいはゲームの進行をガイドするエージェントなどに、ユーザが取得した顔画像を貼り付けるようにしてもよい。また、ゲーム装置10に登場する、ユーザ自身を模擬したキャラクタオブジェクト、ユーザと友好的な関係でゲームに登場するキャラクタオブジェクト、ゲーム装置の持ち主を表すキャラクタオブジェクト等に、ユーザが取得した顔画像を貼り付けるようにしてもよい。
上記では、顔画像として人の顔を想定したが、本発明の実施は、人の顔画像に限定されるものではなく、動物の顔画像にも適用できる。例えば、犬、猫、馬等のほ乳類、鳥類、魚類、は虫類、両生類、昆虫等、様々な動物の顔画像を取得のために、上記第1の実施形態で説明した顔画像取得処理を実行し、顔画像を収集してもよい。例えば、ゲーム装置10によれば、図8の画面において人と人との関係で例示したように、選択状態にある人に対して、小鳥がさえずり、あるいは、犬が吠え、猫が視線を向けるというように、実世界の人と動物との関係を表現できる。逆に、ペットと主人の関係において、ペットの顔画像が選択状態にされたときに、主人とその家族に相当する顔画像が微笑む、あるいは、視線をペットの方に向けるというように、ゲーム装置10は、実世界の感情、意識、関係を仮想世界の中に反映することできる。そして、配役決定処理により、敵オブジェクトEO、その他のキャラクタオブジェクトに収集した顔を貼り付けることによって、実世界の関係をユーザに意識させつつゲームを実行させることができる。
なお、ペットと主人の関係、主人とその家族の関係等は、UIFを通じて、顔画像管理情報Dn1によって定義し、顔画像間の関係として、参照できるようにしておけばよい。単純に、好き、嫌い等の感情、好きな人のペット、嫌いな人のペットなどの感情の善し悪しを定義できるようにしておけばよい。また、例えば、主人の顔画像でのゲームの結果が成功であったときに、ゲームのセーブデータ記憶域Doに保存できた動物の顔画像は、その主人と親密な関係にあるとの設定が、画像管理情報Dn1に記録できるようにしてもよい。ゲーム装置10によれば、ユーザは、以上のようにして収集した様々の顔画像を基に
、キャラクタオブジェクトを生成、実世界の意識を反映したゲームを実行できるのである。
また、本実施形態に係る画像処理プログラムでは、図16に示したように、2つの外側撮像部23(外側左撮像部23aおよび外側右撮像部23b)よりも先に内側撮像部24による撮影をするように、ユーザを誘導する。内側撮像部24は、主として、ゲーム装置10を操作するユーザを撮影するものであるため、ユーザ以外の人の撮影には使用しづらい。また、内側撮像部24は、主として、ゲーム装置10を操作するユーザを撮影するものであるため、持ち主の撮影に適する。したがって、この処理によれば、ゲーム装置10のユーザあるいは持ち主が誰もゲーム装置10に顔画像を保存しない状態での外側撮像部23の使用を禁止する効果がある。したがって、例えば、持ち主の特定されないゲーム装置10、あるいは、ユーザの特定されないゲーム装置10を第三者が用いて画像を撮影することを禁止する可能性を高めることができる。
また、本実施形態に係る画像処理プログラムでは、図19A−図19Cに示したように、情報処理部31は、未取得の属性に該当する顔画像を優先して撮影をするように、ユーザを誘導する。このような処理によって、極力、属性の偏りのない顔画像取得を望むユーザの顔画像収集処理を支援することができる。
また、本実施形態に係る画像処理プログラムでは、実カメラから得られた実世界画像と、当該実世界画像の背後に存在するオブジェクトを含む仮想空間画像とが合成されて表示される。
したがって、本実施形態に係る画像処理プログラムは、実世界の画像を用いた背景に非現実を表す描画を行うことでユーザの興味を引くことができる画像を生成することができる。また、実世界の向こう側にさらに仮想世界が存在するように感じさせることができる。これは、ゲーム世界の奥行感の向上にもつながる。
また、本実施形態では、実世界画像に開口が生じて、その開口を通って仮想オブジェクトが出現したり、仮想オブジェクトの影が実世界画像に表示されたりするなど、仮想オブジェクトが実世界画像に対して影響を与えるので、実世界画像が単なる背景ではなく、実世界が仮想世界と関係しているかのような感覚を与えることができる。
また、当該合成されて表示される画像における当該実世界画像の背後に存在するオブジェクト(例えば、第2空間2に存在する敵オブジェクトEO)は、実世界画像(境界面3)に開口が存在する領域においては、実像が表示される。また、当該オブジェクトは、実世界画像に開口が存在しない領域においては、影画像が表示される(図24参照)。更に、当該実像及び影画像は、当該オブジェクトの仮想空間上における配置方向または、移動方向に応じた向きに対応する画像である。
したがって、本実施形態に係る画像処理プログラムは、実世界画像の更に背後に存在するオブジェクトの数や移動方向等の動向をユーザが認識することができる画像を生成することができる。
また、本実施形態に係る画像処理プログラムでは、奥壁BWの画像データとして、宇宙の画像等の非現実空間の画像が用いられ得る。当該非現実空間の画像は、実世界画像の開口を通して視認されうる。当該開口は、仮想空間上の位置が特定される。そして、実カメラの向きと仮想カメラの向きは対応づけられている。
したがって、本実施形態に係る画像処理プログラムは、実カメラの向きに応じた位置に
開口を設けることができ、実世界画像の同じ位置に開口を表現することができる。すなわち、本実施形態に係る画像処理プログラムは、実カメラの向きを変えても現実空間の同じ位置に開口が表現されるため、現実空間と非現実空間とが繋がったかのごとくユーザに認識させる画像を生成することができる。
また、開口が表現された実世界画像は、実カメラから得られる実世界画像とアルファ値との掛け算によって生成される。
したがって、本実施形態に係る画像処理プログラムは、簡便な方法で開口を表現及び生成することができる。
また、敵オブジェクトEOが境界面3を通過することにより生成する実世界画像の開口は、敵オブジェクトデータDfに含まれる開口形状データDf3を開口判定用データの所定の位置に掛け算することで生成される。
したがって、本実施形態に係る画像処理プログラムは、簡便な方法で衝突したキャラクタの形状に対応した開口を設定することができる。
また、本実施形態に係る画像処理プログラムでは、アルファ値の比較によって、影画像の描画を実現することができる。また、シルエットデータDf2に設定されたアルファ値の変更によって、影画像の描画のオンまたはオフを切り替えることができる。
したがって、本実施形態に係る画像処理プログラムは、影画像の描画をGPUに任せることができ、また、影の表示または非表示を単純な操作で切り替えることができる。
<変形例>
上述した実施例では、情報処理部31は、敵オブジェクトEOを出現させる場合、特に当該敵オブジェクトEOの出現演出処理を実行しないが、当該敵オブジェクトEOの出現演出処理を実行してもよい。図41は、当該出現演出処理の実行例を示す。図41に示されるとおり、当該出現演出処理では、実世界画像の所定範囲が開口として矩形に切り取られ、当該矩形が第2空間2に倒れこみ、生成された開口から敵オブジェクトEOが出現する。情報処理部31は、図18のステップ62における敵オブジェクトデータDfの生成に際して、図41に示されるような敵オブジェクトEOの出現演出処理を行ってもよい。図41における第2空間2に倒れた矩形部分は、実世界画像の所定範囲を切り取ったテクスチャを、当該所定範囲の大きさに対応した平面ポリゴンに貼り付け、当該平面ポリゴンに所定の動作をさせることで実現される。また、図41における開口部分は、上述のとおり、開口判定用データの所定の位置のアルファ値を「0」にすることで実現される。
上述した実施例では、敵オブジェクトEOが境界面3を通過した結果として開口が生成されるが、当該開口は、任意に設定されてよい。本実施形態では、情報処理部31は、開口判定用データの任意の領域にアルファ値「0」を設定することで、当該開口を任意に設定することができる。
上述した実施例では、情報処理部31は、弾オブジェクトBOが境界面3に設定された開口のふちに衝突した結果として、当該開口の修復処理を行う。すなわち、情報処理部31は、当該開口に対応する位置における開口判定用データのアルファ値の更新を行う。しかし、当該修復処理は、上述した実施例に限定されない。例えば、照準カーソルALを当該開口のふちに合わせた時に、ゲーム装置10の所定の操作ボタン14が押下される結果として、当該修復処理が行われてよい。この場合、情報処理部31は、例えば、照準カーソルALの位置として、仮想カメラデータDjに含まれる仮想カメラの配置方向を示すデ
ータを用いる。そして、情報処理部31は、当該仮想カメラの配置方向に対応する境界面3の位置における開口判定用データのアルファ値を非開口領域に対応するアルファ値「1」とする。これにより、アルファ値が「0」の領域は非開口領域に対応するアルファ値「1」となり、当該開口は修復される。
上述した実施例では、情報処理部31は、ゲーム装置10に生じる角速度を角速度センサ40により検出し、当該角速度を用いて実空間におけるゲーム装置10の動きを算出するが、他の方式を用いてゲーム装置10の動きを算出してもかまわない。
第1の例として、情報処理部31は、ゲーム装置10に内蔵されている加速度センサ39が検出した加速度を用いて、ゲーム装置10の動きを算出してもかまわない。一例として、加速度センサ39を搭載するゲーム装置10が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ39によって検出される加速度が重力加速度のみであるとして処理する場合)が想定される。このようにゲーム装置10が現実に静的な状態であれば、情報処理部31は、検出された加速度に基づいてゲーム装置10の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。他の例として、加速度センサ39を搭載するゲーム装置10が動的な状態であることを前提とする場合が想定される。このような場合には、加速度センサ39が重力加速度成分に加えて加速度センサ39の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、情報処理部31は、ゲーム装置10の動き方向等を知ることができる。具体的には、加速度センサ39を備えるゲーム装置10がユーザの手で動的に加速されて動かされる場合に、情報処理部31は、加速度センサ39によって生成される加速度信号を処理することによって、ゲーム装置10の様々な動きおよび/または位置を算出することができる。また、加速度センサ39が動的な状態であることを前提とする場合であっても、加速度センサ39の動きに応じた加速度を所定の処理により除去すれば、情報処理部31は、重力方向に対するゲーム装置10の傾きを知ることが可能である。
第2の例として、ゲーム装置10に内蔵されている実カメラ(外側撮像部23または内側撮像部24)によってリアルタイムで撮像されたカメラ画像の移動量を用いて、情報処理部31は、ゲーム装置10の動きを算出してもかまわない。例えば、ゲーム装置10が動くことによって、上記実カメラの撮像方向や撮像位置が変わった場合、当該実カメラで撮像されるカメラ画像も変化する。したがって、ゲーム装置10に内蔵されている実カメラで撮像されるカメラ画像の変化を用いれば、情報処理部31は、当該実カメラの撮像方向が変化した角度や撮像位置の移動量等を算出することができる。一例として、情報処理部31は、ゲーム装置10に内蔵されている実カメラで撮像されるカメラ画像から所定の物体を識別する。そして、情報処理部31は、当該物体が撮像されている角度や撮像されている位置を時系列的に比較することによって、これらの変化量から当該実カメラの撮像方向が変化した角度や撮像位置の移動量等を算出することができる。他の例として、情報処理部31は、ゲーム装置10に内蔵されている実カメラで撮像されるカメラ画像全体に対して時系列的に比較する。この当該画像全体の撮像方向や撮像範囲の変化量から、情報処理部31は、当該実カメラの撮像方向が変化した角度や撮像位置の移動量等を算出することができる。
第3の例として、情報処理部31は、上述したゲーム装置10に生じる角速度、ゲーム装置10に生じる加速度、およびゲーム装置10によって撮像されたカメラ画像の少なくとも2つを組み合わせて、ゲーム装置10の動きを算出してもかまわない。これによって、1つのパラメタからゲーム装置10の動きを算出する場合に当該動きの推定が難しい状況において、他のパラメタを組み合わせてゲーム装置10の動きを算出することによって、当該状況を補ったゲーム装置10の動きの算出が可能となる。一例として、上記第2の
例によるゲーム装置10の動きを算出では、撮像されたカメラ画像が時系列的に水平方向へ動いた場合、ゲーム装置10の撮影角度が鉛直方向を中心として回転したのか、ゲーム装置10が水平移動したのか、正確な判定が難しいことがある。この場合、情報処理部31は、ゲーム装置10に生じる角速度を用いれば、ゲーム装置10が回転移動したのか水平移動したのかを容易に判定することが可能となる。
第4の例として、情報処理部31は、ゲーム装置10の動きを、いわゆるAR(拡張現実)の技術により算出してもよい。
また、磁気センサを用いて、ゲーム装置10の向きを検知してもよい。
(第2の実施形態)
以下、図42および図43を参照して、本発明の第2の実施形態に係る画像処理プログラムを実行する画像処理装置について説明する。第1の実施形態では、顔画像取得処理1(図14のステップ10)において、第1のゲームが実行され、ユーザが第1のゲームで成功した場合に、ゲーム装置10は、顔画像取得処理1で取得した画像をセーブデータ記憶域Doに格納することを許容する。そして、ユーザは、第1のゲームに成功すれば、同様の処理で取得した顔画像を順次、セーブデータ記憶域Doに追加していくことができる。そして、ゲーム装置10は、セーブデータ記憶域Doに収集された顔画像から、例えば、ユーザの操作にしたがって、あるいは、自動的に、敵オブジェクトEO等のキャラクタオブジェクトを作成する。そして、ゲーム装置10は、ユーザに対して、ユーザが収集した顔画像を基に作成されたキャラクタオブジェクトを第1のゲーム(図15のステップ106)、あるいは、第2のゲーム(図14のステップ18)等に登場させ、ユーザに、実世界の人間関係等を反映した仮想世界を提供する。したがって、ユーザは、そのような実世界を反映した仮想世界で、例えば、図20A−図26に示したようなゲームを実行し、楽しむことができる。本実施形態では、そのような実世界を反映した仮想世界での他のゲーム処理の例を説明する。本実施形態のゲームも、第1の実施形態と同様、ゲーム装置10の情報処理部31が、メインメモリ32に展開された画像処理プログラムを実行することで、ユーザに提供される。また、本実施形態のゲームは、第1の実施形態のゲームと同様、例えば、図14に示したステップ10による顔画像取得処理1のための第1のゲーム(図15のステップ106)として実行してもよい。また、本実施形態のゲームは、例えば、第2のゲーム(図14に示したステップ18)と同様、顔画像が収集され、ゲームのセーブデータ記憶域Doに蓄積されていることを前提として実行されるようにしてもよい。
図42は、本実施形態に係るゲーム装置10の上側LCD22に表示される画面の例である。この画面の作成手順は、上記第1の実施形態と同様である。すなわち、ユーザは、例えば、ゲーム装置10の下側ハウジング11と上側ハウジング21を閉状態として、図4のように、下側ハウジング11を両手に持つ場合を想定する。このとき、ユーザは上側LCD22の表示画面を見ることができる。そして、この状態では、外側撮像装置23は、例えば、ユーザの視線前方の空間を撮影することが可能である。本実施形態のゲームの実行中、ゲーム装置10は、画面の背景に、外側撮像装置23が撮影した画像を写し出す。より具体的には、情報処理部31は、外側撮像装置23が撮影した画像をフレーム単位で、ゲームの画面の背景部分にテクスチャマッピングしている。ユーザがゲーム装置10を手に持って方向を変えると、変化後の外側撮像部23の視線方向から外側撮像装置23を通じて取得された画像がゲームの背景に表示されることになる。すなわち、図42の画面の背景には、ユーザがゲーム装置10の外側撮像部23を向けた方向から取得された画像が埋め込まれる。
さらに、この画面では、上記背景に対して、例えば、図10の画面例、および図18の
配役決定処理で説明した手順にしたがって作成された敵オブジェクトEO1が表示されている。敵オブジェクトEO1の顔面部分には、図18の配役決定処理で選択された顔画像がテクスチャマッピングされて表示されている。なお、敵オブジェクトEO1の顔面部は、必ずしもテクスチャマッピングによって形成しなくてもよく、単に、図9に示した敵オブジェクトEOの頭部形状の周辺部分H13と顔画像とを組み合わせることで、敵オブジェクトEO1を表示するようにしてもよい。そこで、以下では、敵オブジェクトの顔面部分に、顔画像が貼り付けられている、という記述する。
さらに、図42では、敵オブジェクトEO1の周りに、敵オブジェクトEO1よりも形状の小さい敵オブジェクトEO2−EO7が表示されている。このように、図42の画面では、敵オブジェクトEO1−EO7の合計7個の敵オブジェクトEOが表示されている。ただし、本実施形態に係るゲーム装置10の処理において、敵オブジェクトEOの数が7個に限定される訳でない。なお、すでに第1の実施形態で説明したように、敵オブジェクトEO1−EO7等を区別する必要がない場合には、敵オブジェクトEOと呼ぶ。
また、敵オブジェクトEO1−EO7のいずれか1以上、例えば、敵オブジェクトEO6には、敵オブジェクトEO1と同一の顔画像が貼り付けされている。一方、他の敵オブジェクトEO2−EO5等には、敵オブジェクトEO1とは異なる顔画像が貼り付けられている。
さらに、図42の画面内には、敵オブジェクトEO1等を攻撃するための照準カーソルALが表示されている。照準カーソルALと、背景および敵オブジェクトEO1等の位置関係、および相対移動の関係は、第1の実施形態(図23−図26)で説明したものと同様である。
すなわち、敵オブジェクトEO1は、図42の画面内を自在に動き回る。より具体的には、外側撮像部23が写し出した画像を背景とする仮想空間を自在に動き回る。したがって、上側LCD22を見るユーザには、自身が位置する空間内を敵オブジェクトEO1が自在に動くように見える。また、敵オブジェクトEO2−EO7は、敵オブジェクトEO1の周りに配置される。
したがって、仮想空間を自在に動き回る敵オブジェクトEO1−EO7に対して、ユーザがゲーム装置10の向きを変えることで、画面に表示された照準カーソルALを敵オブジェクトEO1−EO7に合わせることが可能となる。敵オブジェクトEO1に照準カーソルALを合わせた状態で、トリガボタンに相当する操作ボタン14B(Aボタン)を押下することで、敵オブジェクトEO1−EO7に向けて弾を撃つことができる。
ただし、本実施形態のゲームでは、敵オブジェクトEO1−EO7のうち、敵オブジェクトEO1と同一の顔画像を有するもの以外への攻撃は、有効な攻撃とはならない。例えば、ユーザが、敵オブジェクトEO1および敵オブジェクトEO1と同一の顔画像を有する敵オブジェクトを攻撃した場合には、ユーザの得点となる。あるいは、敵オブジェクトの失点となる。また、敵オブジェクトEO1よりも寸法の小さい、敵オブジェクトEO2−EO7を攻撃した方がユーザの得点が高いものとする。あるいは、敵オブジェクトEO2−EO7が攻撃された場合の敵オブジェクトの失点は、敵オブジェクトEO1が攻撃された場合よりも、大きいとする。しかしながら、敵オブジェクトEO2−EO7のうち、敵オブジェクトEO1と異なる顔画像の敵オブジェクトへの攻撃は無効な攻撃となる。すなわち、ユーザには、敵オブジェクトEO1と同一の敵オブジェクトを攻撃する義務が課せられることになる。以下、敵オブジェクトEO1と異なる顔画像の敵オブジェクトを誤認用オブジェクトと呼ぶ。なお、図42では、敵オブジェクトEO2−EO7は、同一種類の頭部形状を有している。しかし、敵オブジェクトEO2−EO7のうち、誤認用オブ
ジェクトである、敵オブジェクトEO2−EO5、EO7等のいずれかは、異なる種類の頭部形状を有するようにしてもよい。なお、すでに述べたように、個々の敵オブジェクトEO1−EO7等を区別しない場合、単に、敵オブジェクトEOという。
図43により、ゲーム装置10の情報処理部31で実行される画像処理プログラムによる動作例を説明する。図43は、情報処理部31による動作の一例を示すフローチャートである。この処理では、情報処理部31は、例えば、顔画像の選択を受け付け、敵オブジェクトを生成する(ステップ30)。ステップ30の処理は、例えば、図18の配役決定処理と同様である。
次に、情報処理部31が、誤認用オブジェクトを生成する(ステップ31)。誤認用オブジェクトの生成は、例えば、敵オブジェクトEOの頭部形状の顔面部分に、ステップ30で指定された敵オブジェクトEOの顔画像以外の顔画像を貼り付ければよい。誤認用オブジェクトの顔画像の指定に限定はない。例えば、図7、8に示したようなユーザが取得済みの顔画像から、誤認用オブジェクトの顔画像を選択してもよい。また、例えば、ゲーム装置10の出荷前にデータ保存用内部メモリ35に、事前に誤認用オブジェクトの顔画像を格納しておいてもよい。また、画像処理プログラムのインストール時、あるいは、バージョンアップ時に、誤認用オブジェクトの顔画像も、併せてデータ保存用内部メモリ35に格納するようにしてもよい。また、例えば、敵オブジェクトEOの顔画像を変形させた顔画像、例えば、目、鼻、口など、顔のパーツを他の顔画像と入れ替えた顔画像を誤認用オブジェクトに用いてもよい。
次に、情報処理部31は、敵オブジェクトEOおよび誤認用オブジェクトによるゲームを開始する(ステップ32)。そして、情報処理部31は、ユーザによる攻撃があったか否かを判定する(ステップ33)。ユーザによる攻撃は、図42に示した照準カーソルALを敵オブジェクトEOに合わせた状態でのトリガの入力、例えば、操作ボタン14Bの押下によって検知される。ユーザによる攻撃があった場合、情報処理部31は、適正な敵オブジェクトEOへの攻撃か否かを判定する(ステップ35)。適正な敵オブジェクトEOに対する攻撃がなされた場合、情報処理部31は、敵オブジェクトEOを破壊し、ユーザの得点を追加する(ステップ36)。一方、ステップ35の判定で、適正な敵オブジェクトEO以外の誤認用オブジェクトへの攻撃が検知された場合、情報処理部31は、無効な攻撃であるとして、なにもしない。さらに、ステップ33の判定で、ユーザによる攻撃がなかった場合、情報処理部31は、他の処理を実行する(ステップ34)。他の処理は、例えば、それぞれのゲーム特有の処理である。例えば、図42の敵オブジェクトEO6、誤認用オブジェクトEO2−EO5を増殖する処理、図42の敵オブジェクトEO6の位置と誤認用オブジェクトEO2−EO7等の位置とを入れ替える処理である。
そして、情報処理部31は、ゲーム終了か否かを判定する(ステップ37)。ゲーム終了は、例えば、ユーザが、増殖する敵オブジェクトEOをすべて破壊し尽くしたとき、ユーザの得点が基準値を超えた場合等である。あるいは、ゲーム終了は、例えば、敵オブジェクトEOが所定限度を超えて増殖した場合、ユーザの失点が所定の限度を超えた場合等である。ゲーム終了でない場合、情報処理部31は、制御をステップ33に戻す。
以上述べたように、本実施形態の画像処理プログラムによれば、収集した顔画像を用いて、敵オブジェクトEOを作成してゲームを実行できる。したがって、ユーザは、現実の世界に存在する人の顔画像を基に、仮想現実の世界でのゲームを遂行することができる。
また、本実施形態のゲーム装置10によれば、適正な敵オブジェクトEOと、誤認用オブジェクトの組み合わせによって、ユーザの混乱を生じさせつつ、ゲームが実行される。したがって、ユーザは、敵オブジェクトEOの顔画像の正確な把握が求められる。その結
果、ユーザには、敵オブジェクトEOを見分ける処理能力、集中力が要求される。したがって、本実施形態のゲーム装置10は、ユーザにゲームを実行するときの緊張感を発生させ、あるいは、顔画像認識に伴う脳の活性化を可能とする。
上記第2の実施形態では、例えば、図14のステップ16の配役決定処理およびステップ18のゲーム実行の処理と同様に、ゲームのセーブデータ記憶域Doに格納済みの顔画像を基に敵オブジェクトEOを作成し、ゲームを実行した。しかし、図43のステップ30の処理として、例えば、図15のステップ100−ステップ105の処理を実行してもよい。すなわち、顔画像取得処理で取得し、ゲームのセーブデータ記憶域Doに格納前の状態で、本実施形態のゲームを実行してもよい。そして、図15のステップ107−ステップ110と同様に、ゲームで成功した場合に、取得した顔画像をゲームのセーブデータ記憶域Doに格納すればよい。このような構成によって、第1の実施得形態と同様、ユーザは、取得した顔画像を保存するため、ますます熱心にゲームに取り組むようになる。
(第3の実施形態)
以下、図44から図45を参照して、本発明の第3の実施形態に係る画像処理プログラムを実行する画像処理装置について説明する。本実施形態のゲームは、第1の実施形態のゲームと同様、例えば、図14に示したステップ10による顔画像取得処理1のための第1のゲーム(図15のステップ106)として実行してもよい。また、本実施形態のゲームは、例えば、第2のゲーム(図14に示したステップ18)と同様、顔画像が収集され、ゲームのセーブデータ記憶域Doに蓄積されていることを前提として実行されるようにしてもよい。
すなわち、第2の実施形態で述べた場合と同様、ゲーム装置10の情報処理部31は、本実施形態のゲームを第1の実施形態の配役決定処理(図14のステップ16)、および第2のゲーム(図14のステップ18で実行されるゲーム)の処理例として、実行する。また、ゲーム装置10の情報処理部31は、本実施形態のゲームを第1実施形態の第1のゲーム(図15のステップ106で実行されるゲーム)としても実行できる。
また、上記第2の実施形態では、顔画像を取得し、取得した顔画像を含む敵オブジェクトEOと誤認用オブジェクトを用いたゲームの処理の一例を説明した。そして、上記第2の実施形態では、誤認用オブジェクトへの攻撃は無効な攻撃とされた。
本実施形態では、第2の実施形態のゲームに代えて、誤認用オブジェクトへの攻撃が検知されると、敵オブジェクトEOの顔画像のパーツが、他の顔画像のパーツと入れ替わるゲームについて説明する。例えば、敵オブジェクトEOの周辺部分(図9のH13参照)と、ユーザの顔画像を組み合わせて、敵オブジェクトEOを構成する。ユーザの顔画像の代わりにユーザの親しい人の顔画像を用いてもよい。この場合に、ユーザの顔画像(あるいは親しい人の顔画像)は、敵オブジェクトEOに拘束された状態を模擬するようにしてもよい。そして、ユーザがゲームで、敵オブジェクトEOに勝利した場合には、ユーザの顔画像(あるいは親しい人の顔画像)が敵オブジェクトEOから解放されることを模擬すればよい。一方、ユーザがゲームで、失敗を続けると、徐々に、敵オブジェクトEOに拘束されたユーザの顔画像(あるいは親しい人の顔画像)が変形していくことになる。そして、変形の限度が一定限度を超えるとゲーム終了となるようにすればよい。
図44は、本実施形態に係る、上側LCD22に表示される画面の一例である。図44の例では、敵オブジェクトEO1(第1のキャラクタオブジェクトの一例)が表示されている。また、敵オブジェクトEO1の周りに、寸法が敵オブジェクトEO1よりも小さい敵オブジェクトEO11(第2のキャラクタオブジェクトの一例)と、誤認用オブジェクトEO12−EO16(第3のキャラクタオブジェクトの一例)が表示されている。敵オ
ブジェクトEO11には、敵オブジェクトEO1と同一の顔画像が貼り付けられている。一方、誤認用オブジェクトEO12−EO16の構成は、第2の実施例の場合と同様であり、敵オブジェクトEO1とは異なる顔画像が貼り付けられている。なお、図44の構成は例示であり、寸法が敵オブジェクトEO1よりも小さい敵オブジェクトOE11の数が、1個に限定される訳ではない。
本実施形態のゲームにおいては、例えば、寸法の大きな敵オブジェクトEO1には、照準カーソルALを合わせやすいため、敵オブジェクトEO1を攻撃し、弾が命中したとしても、ユーザが得られる得点、あるいは、敵オブジェクトEO1に与えるダメージは小さいものとする。また、寸法の小さな敵オブジェクトEO11には、照準カーソルALを合わせにくいため、敵オブジェクトEO11を攻撃し、弾が命中した場合には、ユーザが得られる得点、あるいは、敵オブジェクトEO1に与えるダメージは、敵オブジェクトEO1の場合よりも大きいものとする。
さらに、本実施形態では、ユーザが誤認用オブジェクトEO12−EO16を攻撃した場合には、敵オブジェクトEO1に貼り付けられている顔画像のパーツが他の顔画像と入れ替えられる。例えば、図44の場合には、すでに、敵オブジェクトEO1に貼り付けられた顔画像のうち、眉と目の部分が顔画像EO13の眉と目の部分と置き換えられている。このようにして、小さな敵オブジェクトOE11を攻撃しようとするユーザに対して、誤認用オブジェクトEO12−EO16は、ユーザを混乱させ、敵オブジェクトEO1の変形へと導こうとする。なお、図44では、誤認用オブジェクトEO12−EO16は、同一種類の頭部形状を有している。しかし、誤認用オブジェクトEO12−EO16のいずれかは、異なる種類の頭部形状にしてもよい。
図45により、ゲーム装置10の情報処理部31で実行される画像処理プログラムによる動作例を説明する。図45は、情報処理部31による動作の一例を示すフローチャートである。この処理では、ステップ40−ステップ42の処理は、図43のステップ30−ステップ32の処理と同様であるので、その説明を省略する。
そして、情報処理部31は、敵オブジェクトEOへの攻撃を検知すると(ステップ43)、顔画像の変形を削減し、敵オブジェクトEO11の顔画像を本来貼り付けられている顔画像に近づける(ステップ44)。この場合には、図44に示した寸法の小さな敵オブジェクトEO11への攻撃には、寸法の大きな敵オブジェクトEO1への攻撃よりも高い得点を付与すればよい。また、寸法の小さな敵オブジェクトEO11への攻撃には、寸法の大きな敵オブジェクトEO1への攻撃よりも、顔画像の変形を削減する程度を大きくすれよい。
一方、情報処理部31は、誤認用オブジェクトEO12−EO16等への攻撃を検知すると(ステップ45)、現在よりも、さらに敵オブジェクトEO1に貼り付けられている顔画像のパーツの置き換えを進める。すなわち、情報処理部31は、顔画像の変形を追加する(ステップ44)。また、情報処理部31は、敵オブジェクトEOへの攻撃、誤認用オブジェクトへの攻撃以外の状態を検知した場合には、その他の処理を実行する(ステップ47)。その他の処理は、図43のステップ34の場合と同様である。例えば、情報処理部31は、敵オブジェクトEOを増殖する。
そして、情報処理部31は、ゲーム終了か否かを判定する(ステップ48)。ゲーム終了の判定は、例えば、敵オブジェクトEOの顔画像の変形が基準の限度を超えた場合である。また、ゲーム終了の判定は、例えば、ユーザが敵オブジェクトEOを破壊し、所定限度の得点を得た場合である。そして、ゲーム終了でない場合、情報処理部31は、制御をステップ43に戻す。
以上述べたように、本実施形態のゲーム装置10によれば、ユーザが敵オブジェクトEOの攻撃に成功すると、変形した顔画像が復旧する。また、ユーザが誤認用オブジェクトを攻撃すると、顔画像の変形がさらに進行する。したがって、ユーザは、集中力を持ってゲームに取り組むことを要求され、ゲーム実行時の緊張感が高まり、集中力を養成することが可能になる。さらに、本実施形態のゲーム装置10によれば、ユーザの顔画像、ユーザの親しい人の顔画像が変形されるので、ユーザは、現実の世界を投影した仮想現実の世界で、ゲームに熱中する可能性を高めることができる。
上記第3の実施形態では、例えば、図43のステップ30、さらには、図14のステップ16の配役決定処理およびステップ18のゲーム実行の処理と同様に、ゲームのセーブデータ記憶域Doに格納済みの顔画像を基に敵オブジェクトEOを作成し、ゲームを実行する場合を想定して説明した。しかし、図45のステップ40の処理として、例えば、図15のステップ100−ステップ105の処理を実行してもよい。すなわち、顔画像取得処理で取得し、ゲームのセーブデータ記憶域Doに格納前の状態で、第3の実施形態のゲームを実行してもよい。そして、図15のステップ107−ステップ110と同様に、ゲームで成功した場合に、取得した顔画像をゲームのセーブデータ記憶域Doに格納すればよい。このような構成によって、第1の実施得形態と同様、ユーザは、ますます熱心にゲームに取り組むようになる。
(第4の実施形態)
以下、図46および図47を参照して、本発明の第4の実施形態に係る画像処理プログラムを実行する画像処理装置について説明する。本実施形態のゲームは、第1の実施形態のゲームと同様、例えば、図14に示したステップ10による顔画像取得処理1のための第1のゲーム(図15のステップ106)として実行してもよい。また、本実施形態のゲームは、例えば、第2のゲーム(図14に示したステップ18)と同様、顔画像が収集され、ゲームのセーブデータ記憶域Doに蓄積されていることを前提として実行されるようにしてもよい。
すなわち、第2の実施形態で述べた場合と同様、ゲーム装置10の情報処理部31は、本実施形態のゲームを第1の実施形態の配役決定処理(図14のステップ16)、あるいは、第2のゲーム(図14のステップ18で実行されるゲーム)の処理例として、実行することができる。また、ゲーム装置10の情報処理部31は、本実施形態のゲームを第1実施形態の第1のゲーム(図15のステップ106で実行されるゲーム)としても実行できる。
また、上記第3の実施形態では、顔画像を取得し、取得した顔画像を用いた敵オブジェクトEOと誤認用オブジェクトを用いたゲームの処理の一例を説明した。さらに、第3実施形態では、誤認用オブジェクトへの攻撃が検知されると、敵オブジェクトEOの顔画像のパーツが、他の顔画像のパーツと入れ替えられた。
本実施形態では、第2の実施形態、あるいは、第3実施形態のゲームに代えて、ゲーム開始時点で、敵オブジェクトEOに含まれる顔のパーツが、他の顔画像のパーツと入れ替えられており、ユーザがゲームに勝利すると、敵オブジェクトEOに含まれる顔のパーツが元の顔画像に戻る処理を説明する。
図46は、本実施形態に係る、上側LCD22に表示される画面の一例である。画面の左側には、敵オブジェクトEOに貼り付け可能な顔画像の一覧表(登場人物欄)が登場人物として表示されている。ただし、ゲーム装置10の画面では、顔画像の一覧表は、なくてもよい。また、例えば、情報処理部31が、GUIを通じて、ユーザからの一覧表の表
示要求操作を検知したときに、顔画像の一覧表を表示するようにしてもよい。また、顔画像の一覧表の表示箇所が、図46のような画面の左側に限定される訳ではない。登場人物欄には、顔画像PS1−PS5等の顔画像が表示されている。
また、図46の画面には、敵オブジェクトEO20、EO21−EO25が表示されている。敵オブジェクトEO20、EO21−EO25等は、例えば、第1の実施形態の図7−9の画面、あるいは、図18の配役決定処理に示したような選択操作で作成した敵オブジェクトEOである。ただし、本実施形態では、敵オブジェクトEO20は、画面中央に大きく描かれ、敵オブジェクトEO21−EO25等は、敵オブジェクトEO20の周りに描かれている。また、例えば、敵オブジェクトEO20には、元々、顔画像PS1が貼り付けられていた。また、例えば、敵オブジェクトEO22には、顔画像PS2が貼り付けられていた。また、敵画像EO25には、顔画像PS5が貼り付けられていた。
しかしながら、本ゲームの開始前に、敵オブジェクトEO20と、EO21−EO25との間で、顔のパーツの入れ替えが行われる。例えば、敵オブジェクトEO20と敵オブジェクトEO22との間で、鼻が入れ替わっている。また、例えば、敵オブジェクトEO20と敵オブジェクトEO25との間で、左眉毛と左目が入れ替わっている。顔のパーツの入れ替えは、例えば、顔画像をテクスチャマッピング時に、テクスチャマッピングされる3次元モデルを構成するポリゴン単位で行えばよい。
このような顔のパーツの入れ替えは、例えば、入れ替えるパーツ数と、入れ替え対象パーツをランダムに入れ替えるようにしてもよい。また、例えば、すでに行った当該ゲーム、あるいは、他のゲームの成否、得点によって、入れ替えるパーツ数を決定してもよい。例えば、すでに行ったゲームで、ユーザの成績、達成度が良好な場合には、入れ替えるパーツ数を少なくし、ユーザの成績、達成度が不調の場合には、入れ替えるパーツ数を多くするなどである。また、ゲームをレベル分けしておき、ゲームのレベルに応じて、入れ替えるパーツ数を変更してもよい。例えば、入門レベルでは、入れ替えるパーツ数を少なくし、上級レベルでは、入れ替えるパーツ数を多くするなどである。
また、内側撮像部24によりユーザの顔画像を取得して、顔認識を行い、認識された表情に応じて、入れ替えるパーツ数を決定してもよい。例えば、顔画像が笑っている場合、驚いている場合、悲しんでいる場合、無表情に近い場合などを判定し、判定結果に応じて、入れ替えるパーツ数を決定してもよい。顔の表情は、目の寸法、口の面積、口の形状、目の中心、口の中心、鼻等を基準点として、頬の輪郭の位置等から決定すればよい。例えば、ユーザの無表情状態の顔画像を事前に登録しておき、新たに、ユーザの顔画像を取得したときに得られた目の寸法、口の面積、口の形状、基準点からの頬の輪郭の位置等の値と、事前に登録した顔画像から得られた値との差分値から、ユーザの顔の表情を推定してもよい。なお、このような顔の表情の推定方法は、以上の手順に限定される訳ではなく、様々な手順を利用できる。
本実施形態では、ゲーム装置10では、ユーザが、図46のような顔のパーツが入れ替えられた敵オブジェクトEOを攻撃し、敵オブジェクトEOと戦うゲームを実行する。攻撃の仕方は、第1の実施形態から第3の実施形態で説明した手順と同様である。そして、ユーザが、敵オブジェクトEOとの戦いに勝利したときに、入れ替えられたパーツが元の顔画像に復帰するようにすればよい。
図47により、ゲーム装置10の情報処理部31で実行される画像処理プログラムによる動作例を説明する。この処理のうち、ステップ90の処理は、図43のステップ30、図45のステップ40と同様である。本実施形態では、ゲーム装置10の情報処理部31は、次に、顔のパーツの入れ替えを実行する(ステップ91)。そして、情報処理部31
は、ゲームを実行する(ステップ92)。そして、情報処理部31は、ゲームが成功したか否かを判定する(ステップ93)。ゲームが成功した場合には、情報処理部31は、ステップ91の処理でパーツが入れ替えられた顔を、元の撮影された状態の顔に復旧する(ステップ94)。
以上述べたように、本実施形態の画像処理プログラムによれば、例えば、内側撮像部24によりユーザの顔画像を取得し、取得した顔画像と、他の顔画像との間で、顔のパーツが入れ替えられた状態で、ゲームが開始する。そして、ユーザが敵オブジェクトEOとの戦いに勝利するなど、ゲームにおいて、ユーザが成功した場合には、パーツが入れ替えられた顔画像が、元の顔画像に復旧する。
したがって、例えば、顔のパーツが入れ替えられる顔画像が、ユーザ自身の顔画像である場合、あるいは、ユーザと親密な人の顔画像等である場合に、ユーザはゲームで成功するため、高い動機付けを与えられる。
また、すでに他のゲームでの成績に応じて、本実施形態でのゲーム開始時の顔のパーツの入れ替えを行うことによって、ユーザに他のゲームの結果如何によるハンディキャップあるいはアドバンテージを付与できる。また、ゲームのレベルに応じて顔のパーツの入れ替えを行うことによって、ゲームのレベルの難易度を顔の変形の程度によって表現することができる。
上記第4の実施形態では、例えば、図43のステップ30、図45のステップ40、あるいは、図14のステップ16の配役決定処理およびステップ18のゲーム実行の処理と同様に、ゲームのセーブデータ記憶域Doに格納済みの顔画像を基に敵オブジェクトEOを作成し、ゲームを実行することを想定して説明した。しかし、図46のステップ90の処理として、例えば、図15のステップ100−ステップ105の処理を実行してもよい。すなわち、顔画像取得処理で取得し、ゲームのセーブデータ記憶域Doに格納前の状態で、本実施形態のゲームを実行してもよい。そして、図15のステップ107−ステップ110と同様に、ゲームで成功した場合に、取得した顔画像をゲームのセーブデータ記憶域Doに格納すればよい。このような構成によって、第1の実施得形態と同様、ユーザは、取得した顔画像を保存するため、ますます熱心にゲームに取り組むようになる。
(第5の実施形態)
<ゲーム装置10による顔画像の撮像及び3次元顔オブジェクトの生成>
以下に説明する実施形態では、図1から図6において説明されたゲーム装置10を用いて人物の顔を撮像する例について説明される。また、本実施形態では、撮像された顔画像が顔の3次元形状モデルに貼り付けられて3次元顔オブジェクトが生成される。生成された3次元顔オブジェクトは、例えば、各種ゲームのキャラクタ等として用いられる。この顔の3次元形状モデルを構成する制御点を移動させることにより顔画像の表情を変化させることができる。具体的には、3次元形状モデルの目の周囲を構成する各制御点を移動させることによりウィンクをさせることができるし、口の周囲を構成する各制御点を移動させることにより口を開いた表情を表示することができる。
ゲーム装置10は、例えば、ゲーム装置10の操作者(以下、ユーザともいう。)や、操作者の近くにいる人物の顔を、その場で簡単にキャラクタにするために、外側撮像部23又は内側撮像部24によって撮像された1枚の顔画像を3次元形状モデルに貼り付けて3次元顔オブジェクトを生成する。3次元形状モデルに貼り付けられる顔画像は、撮像対象人物の正面から撮像された画像であることが望ましい。1枚の顔画像、すなわち、一方向から撮像された顔画像が3次元形状モデルに貼り付けられる場合には、撮像対象人物の顔の形状と3次元形状モデルの形状とに大きな違いはないとしてアニメーションが作られ
ることが多い。ただし、見た目に違和感の少ない実存の人物の表情に近いアニメーションを実現するためには、例えば、3次元形状モデルの左右の目と口とが変形する場合には、3次元形状モデルの左右の目と口との位置に左右の目と口との位置が適合する顔画像の取得が望まれる。ゲーム装置10を用いてユーザが自身又は他人の顔画像を撮像する際には、顔の位置調整はゲーム装置10のユーザの手にゆだねられる。そのため、本実施形態において、ゲーム装置10は、違和感の少ない表情をする3次元顔オブジェクトを生成するために、撮像対象人物の顔の位置の調整の誘導を行い、3次元形状モデルに貼り付けるための適正な顔画像の撮像を支援する。
図48は、メインメモリ32のメモリマップの一例を示す図である。メインメモリ32は、ワーク領域に、プログラム記憶領域70とデータ記憶領域72とを含む。プログラム記憶領域70には、仮想ゲーム等のアプリケーションプログラム(情報処理プログラム)が記憶される。情報処理プログラムは、顔認識プログラム70a、撮像プログラム70b、3次元顔オブジェクト生成プログラム70c、及びその他各種プログラムを有する。
顔認識プログラム70aは、顔画像から特徴点を検出したり、検出した特徴点に基づいて顔画像の人物の性別及び年代を判定したりするプログラムである。顔認識プログラム70aは、公知のソフトウェアを利用することができるため顔認識プログラム70aの処理の詳細については、説明は省略される。
顔認識プログラム70aの実行を通じて、情報処理部31は、所定周期で、外側撮像部23又は内側撮像部24によって撮像された撮像対象人物の顔画像に対して、エッジ検出等の画像処理を施し、該顔画像における複数の特徴点の位置を検出する。特徴点検出が行われる所定周期は、本実施形態では、10フレームである。フレームは、画面更新単位時間であって、1フレームは60分の1秒である。ただし、本発明の実施において、特徴点検出処理の所定周期が10フレームに限られるわけではない。
図49は、顔認識プログラム70aの実行によって検出される、顔の特徴点の一例を示す図である。本実施形態では、顔認識プログラム70aの実行によって顔画像から42箇所の特徴点が検出される。ただし、顔画像から検出される特徴点は42箇所に限られず、処理に応じて適宜変更可能である。
顔認識プログラム70aによって検出された特徴点P1から特徴点P42の位置は、2次元のカメラ座標系で表わされる。図49に示される顔画像においては、顔画像の左上頂点がカメラ座標系の原点Oである。顔画像の右方向がX軸のプラス方向である。顔画像の下方向がY軸のプラス方向である。特徴点P1から特徴点P42のそれぞれの位置情報は、このようなカメラ座標系のX座標とY座標とで示される。また、顔認識プログラム70aは、性別や年代毎の各特徴点の位置関係の特徴等のデータベースを保持しており、特徴点P1からP42の位置情報などを用いて、撮像対象人物の性別および年代を判定可能である。顔認識プログラム70aの実行によって判定される年代は、例えば、「子供」、「大人」、「高齢者」である。または、例えば、「10代未満」、「10代」、「20代」、「30代」、・・・、「70代」、「80代以上」等のように、或る程度の幅を持たせて年齢を検出してもよい。ただし、性別及び年代の判定処理は、特徴点検出処理に比べると複雑であるため、特徴点検出処理よりも比較的時間を要する。また、判定される年代の幅が小さくなるほど、処理が複雑になるため、年代の判定処理に時間を要する。
撮像プログラム70bは、撮像対象人物の顔の位置合わせの誘導をして3次元形状モデルの貼り付け用の顔画像を撮像するプログラムである。3次元形状モデルは、左右の目と口とが変形するモデルである(詳細は後述)。なお、ゲーム装置10は、外側撮像部23と内側撮像部24とを備えるので、内側撮像部24を用いてゲーム装置10の操作者自身
の顔を撮像することもできるし、外側撮像部23を用いて操作者以外の人物の顔を撮像することもできる。すなわち、撮像対象人物は、ゲーム装置10の操作者であってもよいし、操作者以外の人物であってもよい。さらに、撮像対象は、顔認識プログラム70aによって顔と認識されるものであれば、人物に限られず、動物であってもよい。
撮像プログラム70bでは、撮像対象人物の顔の位置合わせの誘導は、(1)撮像対象人物の顔と外側撮像部23又は内側撮像部24との距離の調整の誘導と、(2)撮像対象人物の顔の左右の目及び口を3次元形状モデルの左右の目と口との位置に合わせる位置合わせの誘導と、の2つのステップを含む。
上記(1)の誘導において、顔認識プログラム70aから取得された顔画像の各特徴点の位置情報から、撮像対象人物の顔と外側撮像部23または内側撮像部24との距離が適当であるか否かが判定される。撮像対象人物の顔と外側撮像部23または内側撮像部24との適当な距離とは、例えば、撮像画像中の顔部分が3次元形状モデルに貼り付けるのに適当なサイズになる距離のことを示す。また、3次元形状モデルに貼り付けるのに適当なサイズの顔画像とは、例えば、3次元形状モデルとの、顔の寸法、各特徴点間の位置等の差が許容される所定の誤差の範囲内にある画像のことをいう。
本実施形態では、撮像プログラム70bの実行において、情報処理部31は、顔画像の特徴点のうち、左右の目の中心点(図49における特徴点P13と特徴点P22)間の距離に基づいて、撮像対象人物の顔と外側撮像部23又は内側撮像部24との距離が適当か否かを判定する。
例えば、撮像プログラム70bに左右の目の中心点間の距離の許容範囲が含まれており、撮像プログラム70bが読み出されると左右の目の中心点間の距離の許容範囲もメインメモリ32に保持される。撮像プログラム70bの実行による上記(1)の誘導では、顔画像の左右の目の中心点間の距離が許容範囲内にあるか否かに応じて、ゲーム装置10の操作者に撮像対象人物の顔と外側撮像部23又は内側撮像部24との距離の調整を促すメッセージが表示される。
上記(1)の誘導が終わると、次に、(2)撮像対象人物の顔の左右の目及び口を3次元形状モデルの左右の目と口との位置に合わせる位置合わせの誘導が行われる。外側撮像部23又は内側撮像部24によって撮像された画像を表示している上側LCD22に左右の目及び口の位置の目標範囲が表示される。この目標範囲は、3次元形状モデルの左右の目と口との位置に対応している。操作者は、上側LCD22に映し出される撮像対象人物の顔と、3次元形状モデルに対応する左右の目と口との目標位置とを目視しながら、撮像対象人物の顔の位置合わせを行う。このようにしてゲーム装置10の操作者に対する位置合わせの誘導が行われる。
例えば、撮像プログラム70bに3次元形状モデルの左右の目の中心点及び口の中心点を基準点としたそれぞれの目標範囲が含まれており、撮像プログラム70bが読み出されると左右の目と口とのそれぞれの目標範囲もメインメモリ32に保持される。撮像対象人物の左右の目の中心点及び口の中心点が、それぞれの目標範囲内に位置すると判定されると、3次元形状モデル貼り付け用の撮像対象人物の顔画像が撮像(記憶)される。撮像プログラム70bにおける処理の詳細については、後述される。
3次元顔オブジェクト生成プログラム70cは、3次元形状モデルに顔画像を貼り付け、撮像対象人物の顔の3次元顔オブジェクトを生成するためのプログラムである。3次元顔オブジェクト生成プログラム70cにおける処理の詳細については、後述される。
顔認識プログラム70a、撮像プログラム70b、及び3次元顔オブジェクト生成プログラム70cは、データ保存用内部メモリ35に記憶されており、適宜、情報処理部31によってメインメモリ32に読み出される。また、これに限られず、撮像プログラム70b及び3次元顔オブジェクト生成プログラム70cは、外部メモリ45に記録されており、適宜、情報処理装置31によってメインメモリ32に読み出されてもよい。または、撮像プログラム70b及び3次元顔オブジェクト生成プログラム70cは、無線LANを通じて、他のゲーム装置10やサーバ等から取得され、適宜メインメモリに読み出されてもよい。
メインメモリ32のデータ記憶領域72には、3次元形状モデル72aと、3次元顔オブジェクト情報72bとが記憶されている。
3次元形状モデル72aは、3次元顔オブジェクト生成プログラム70cによって用いられる3次元の顔モデルである。
図50は、3次元形状モデル72aの一例を示す図である。3次元形状モデル72aは、本実施形態では、ポリゴンで定義された顔の3次元形状モデルである。3次元形状モデル72aがポリゴンで定義されている場合には、各ポリゴンの頂点の3次元座標によって表面の形状が決まる。3次元形状モデル72aは、変形するために用いられる複数の制御点を有する。制御点は、例えば、左右の目の周囲や口の周囲などの、変形させたい箇所に配置される。制御点を移動させることによって、3次元形状モデル72aは、目や口を閉じたり開いたりして顔の表情を変化させることができる。また、3次元形状モデル72aは、顔の向き等も変更可能なモデルである。
3次元形状モデル72aには、特徴点TTが設定される。特徴点TTとして、例えば、目や口の端部、鼻の頂部、顎の下端部のように、実際に特徴のある部分、または、それらの中間のようなそれ自体では特徴はないが位置的に特定し易い部分などが選ばれる。図50に示される3次元形状モデル72aには、左右の目の中心点と口の中心点とが特徴点TTとして設定されている。特徴点TTは、3次元形状モデル72aに2次元顔画像が貼り付けられる際の位置合わせの基準点として用いられる。より具体的には、2次元顔画像の各特徴点が3次元形状モデル72aの各特徴点に合致するように貼り付けられる。
また、3次元形状モデル72aは、ポリゴンで定義されたものに限られず、自由曲面で定義された3次元形状モデルであってもよい。3次元形状モデル72aが自由曲面で定義されている場合には、局面を定義する関数、及び、各制御点の座標によって表面の形状が決まる。
3次元形状モデル72aは、例えば、3次元顔生成プログラム70cに含まれており、3次元顔オブジェクト生成プログラム70cが読み出されると、メインメモリ32に保持される。また、これに伴って、3次元形状モデル72aの左右の目の中心点と口の中心点とのカメラ座標系における座標などもメインメモリ32に保持される。ただし、3次元形状モデル72aは、3次元顔生成プログラム70cとは独立して、ゲーム装置10のデータ保存用内部メモリ35に記憶されていてもよい。
3次元顔オブジェクト情報72bは、3次元顔オブジェクト生成プログラム70cによって生成された、3次元形状モデル72aに2次元の顔画像が貼り付けられた3次元顔オブジェクトに関する情報である。
図51は、3次元顔オブジェクト情報72bの一例を示す図である。3次元顔オブジェクト情報72bは、3次元顔オブジェクトデータ721、識別情報722、特徴点情報7
23、性別情報724、年代情報725、及びユーザ名726を含む。
3次元顔オブジェクトデータ721は、3次元顔オブジェクト生成プログラム70cによって生成された、3次元モデル72aに顔画像が貼り付けられた3次元顔オブジェクトである。識別情報722は、3次元顔オブジェクト生成プログラム70cによって生成された3次元顔オブジェクトを、ゲーム装置10が内部的に識別するための情報である。識別情報722は、例えば、半角英数字の組み合わせで、他の3次元顔オブジェクトと重複しないように割り当てられる。
特徴点情報723は、顔認識プログラム70aによって検出された3次元顔オブジェクトデータ721の顔画像の各特徴点の位置情報を含む。性別情報724は、顔認識プログラム70aによって判別された、3次元顔オブジェクトデータ721の顔画像の性別である。性別情報724は、「男性」、「女性」の何れかである。年代情報725は、顔認識プログラム70aによって判定された、3次元顔オブジェクトデータ721の顔画像の年代である。年代情報725は、例えば、「子供」、「大人」、「高齢者」等のうちの何れか1つである。
ユーザ名726は、ゲーム装置10の操作者によって3次元顔オブジェクト721に付される名前である。例えば、性別情報724、年代情報725、及びユーザ名726は、3次元顔オブジェクト721のプロフィールとして、ゲーム装置10の上側LCD22又は下側LCD12に表示される情報である。
3次元顔オブジェクト情報72bは、3次元顔オブジェクト生成プログラム70cによって生成された各3次元顔オブジェクトについて記憶される。
(動作例)
図52は、ゲーム装置10の顔画像の撮像の誘導から3次元顔オブジェクト生成までの処理のフローの一例を示す図である。本実施形態では、外側撮像部23、又は、内側撮像部24を用いて撮像された画像がゲーム装置10の上側LCD22に出力されるものとする。また、撮像対象人物は、ゲーム装置10の操作者自身、操作者以外の人物、もしくは、写真等の画像を含む。なお、以降、内側撮像部24又は外側撮像部23をまとめて「撮像部」と称する。ただし、「撮像部」と称する場合には、内側撮像部24と外側撮像部23とのうち、起動している方を示していることとする。
ゲーム装置10の操作者によって、撮像プログラム70b又は撮像プログラム70bを用いるアプリケーションプログラムが起動されると、図52に示されるフローが開始される。また、撮像プログラム70b又は撮像プログラム70bを用いるアプリケーションプログラムが起動されると、顔認識プログラム70aも起動される。顔認識プログラム70aの実行によって、撮像部から入力される顔画像が、例えば、10フレーム周期で処理され、顔画像の特徴点が出力される。ただし、本発明の実施において、顔認識プログラム70aの処理の周期が10フレームに限定されるわけではない。また、顔認識プログラム70aの実行によって、撮像部から入力される顔画像の性別及び年代が判定される。ただし、顔画像の性別及び年代の判定には時間がかかるため、まずは特徴点が検出され、その後に、性別及び年代の判定結果が出力される。
情報処理部31は、顔認識プログラム70aによって検出された顔画像の特徴点を取得できない場合には(OP1:No)、撮像対象人物の顔を上側LCD22の画面に映すように操作者を誘導するための誘導メッセージを出力する(OP2)。例えば、「顔を映してください。」等の誘導メッセージが上側LCD22の画面に表示される。
情報処理部31は、顔認識プログラム70aによって検出された顔画像の特徴点を取得した場合には(OP1:Yes)、顔画像の特徴点から、左右の目の中心点間の距離を取得する(OP3)。例えば、情報処理部31は、左右の目の中心点のそれぞれの座標から、左右の中心点間の距離を計算して取得する。
情報処理部31は、顔画像の左右の目の中心点間の距離が許容範囲内であるか否かを判定する(OP4)。顔画像の左右の目の中心点間の距離が許容範囲内にある場合には(OP4:Yes)、処理がOP6に進む。顔画像の左右の目の中心点間の距離が許容範囲内にない場合には(OP4:No)、撮像対象人物の顔と撮像部との距離の調整を促す誘導メッセージが上側LCD22の画面に表示される(OP5)。
例えば、3次元形状モデル72aのカメラ座標系における左右の目の中心点間の距離がメインメモリ32のデータ記憶領域72に保持されており、顔画像の左右の目の中心点間の距離の許容範囲は、3次元形状モデル72aのカメラ座標系における左右の目の中心点間の距離を基準値とした許容される所定の誤差の範囲である。すなわち、顔画像の左右の目の中心点間の距離の許容範囲は、基準値±誤差αである。ただし、顔画像の左右の目の中心間の距離の許容範囲は、これに限定されるものではない。
OP4における判定処理では、情報処理部31は、顔画像の左右の目の中心点間の距離が、許容範囲の最小値(基準値−誤差α)未満であるか否かを判定し、次に、許容範囲の最大値(基準値+誤差α)より大きいか否かを判定する。具体的には、以下の通りである。
情報処理部31は、OP3において取得された顔画像の左右の目の中心点間の距離が、許容範囲の最小値(基準値−誤差α)未満であるか否かを判定する。顔画像の左右の目の中心点間の距離が許容範囲の最小値(基準値−誤差α)未満である場合には(OP4:No)、撮像対象人物の顔と撮像部との距離が遠すぎることが示されるので、情報処理装置31は、撮像対象人物の顔と撮像部との距離を近づけるように誘導するメッセージを上側LCD22の画面に表示する(OP5)。撮像対象人物の顔と撮像部との距離を近づけるように誘導するメッセージは、例えば、「顔を近づけてください」等である。その後処理がOP1に戻る。誘導メッセージは、撮像部によって順次撮像されて上側LCD22の画面に表示される画像とともに、上側LCD22の画面に表示される。ただし、これに限られず、例えば、誘導メッセージのみが上側LCD22の画面に表示され、所定時間後には、撮像部によって撮像された画像が上側LCD22の画面に表示されるようにしてもよい。
図53は、撮像対象人物の顔が撮像部から離れ過ぎている場合の、誘導メッセージの表示画面例である。図53に示される例では、撮像対象人物の顔画像の左右の目の距離が許容範囲より小さいため、「顔を近づけてください」等の誘導メッセージが表示されている。また、図53に示される例では、誘導メッセージは、撮像部によって順次撮像されて表示される画像とともに上側LCD22の画面に表示されている。
顔画像の左右の目の中心点間の距離が許容範囲の最小値(基準値−誤差α)未満ではない場合には、情報処理部31は、顔画像の左右の目の中心点間の距離が許容範囲の最大値(基準値+誤差α)より大きいか否かを判定する。顔画像の左右の目の中心点間の距離が許容範囲の最大値(基準値+誤差α)より大きい場合には(OP4:No)、撮像対象人物の顔と撮像部との距離が近すぎることが示されるので、情報処理装置31は、撮像対象人物の顔と撮像部との距離を遠ざけるように誘導するメッセージを上側LCD22の画面に表示する(OP5)。撮像対象人物の顔と撮像部との距離を遠ざけるように誘導するメッセージは、例えば、「顔を遠ざけてください」等である。その後、処理がOP1に戻る
。
顔画像の左右の目の中心点間の距離が許容範囲の最小値(基準値−誤差α)未満ではなく、且つ、許容範囲の最大値(基準値+誤差α)より大きくない場合には、顔画像の左右の目の中心点間の距離が許容範囲内にあることが示され(OP4:Yes)、処理がOP6に進む。
図54は、撮像対象人物の顔が撮像部に近づき過ぎている場合の、誘導メッセージの表示画面例である。図54に示される例では、撮像対象人物の顔画像の左右の目の距離が許容範囲より大きいため、「顔を遠ざけてください」等の誘導メッセージが表示されている。また、図54に示される例では、誘導メッセージは、撮像部によって順次撮像されて表示される画像とともに上側LCD22の画面に表示されている。この段階では、撮像対象人物と撮像部との距離調整を誘導しているだけである。そのため、図54に示されるように、撮像対象人物の顔が画面の中心から外れた位置にある場合でも、情報処理部31は、左右の目の中心点の距離が取得できるのであれば、OP4の判定を行い、誘導メッセージを表示することができる。
OP4において実行される判定処理は、上述の処理に限られず、顔画像の左右の目の中心点間の距離が許容範囲の最大値(基準値+誤差α)より大きいか否かを判定した後に、顔画像の左右の目の中心点間の距離が許容範囲の最小値(基準値−誤差α)未満であるか否かが判定されてもよく、その判定の順番は限定されない。
また、OP4において実行される判定処理は、顔画像の左右の目の中心点間の距離が許容範囲の最小値以上且つ最大値以下であるか否かを判定し、最小値以上且つ最大値以下である場合には、処理がOP6に進むようにしてもよい。顔画像の左右の目の中心点間の距離が許容範囲の最小値以上且つ最大値以下でない場合には、次に、顔画像の左右の目の中心点間の距離が許容範囲の最小値未満であるか否かを判定し、この判定結果に応じた誘導メッセージを表示してもよい。顔画像の左右の目の中心点間の距離が許容範囲の最小値未満であるか否かを判定する代わりに、許容範囲の最大値より大きいか否かを判定してもよく、何れの判定を行うかは限定されない。
また、OP4において、許容範囲内とは、許容範囲の最小値以上最大値未満、最小値以上最大値以下、最小値より大きく最大値以下、又は、最小値より大きく最大値より小さい、のいずれであってもよく、限定されない。
顔画像の左右の目の中心点間の距離が許容範囲内であると判定されると(OP4:Yes)、撮像対象人物の顔と撮像部との距離の調整が完了したことが示される。次に、撮像対象人物の左右の目と口との位置の調整を誘導するために、情報処理部31は、左右の目と口との目標範囲、及び、誘導メッセージを上側LCD22に表示する(OP6)。左右の目と口との目標範囲及び誘導メッセージは、周期的に(例えば、60分の1秒周期)撮像部によって撮像され更新される、ほぼリアルタイムに撮像対象者の顔の状況を確認可能な最新の画像とともに、上側LCD22の画面に表示される。ただし、これに限られず、例えば、誘導メッセージのみが上側LCD22の画面に表示され、所定時間後には、撮像部によって撮像された画像と左右の目と口との目標範囲とが上側LCD22の画面に表示されるようにしてもよい。撮像部によって順次撮像されて上側LCD22の画面に表示される画像とともに左右の目と口との目標位置が上側LCD22の画面に表示されることによって、ゲーム装置10の操作者は撮像対象人物の顔の位置を確認しながら位置合わせをスムーズに行うことができる。
顔画像の左右の目と口との目標範囲は、それぞれ、例えば、カメラ座標系に変換された
3次元形状モデル72aの左右の目の中心点及び口の中心点の座標を基準点として定義される。3次元形状モデル72aの左右の目の中心点と口の中心点との位置情報は、例えば、それぞれ、カメラ座標系(図49参照)に変換された座標で記憶されている。例えば、目標範囲は、基準点からX軸方向に±β、Y軸方向に±γの範囲で定義される。また、目標範囲は、基準点からの距離σの範囲として定義されてもよく、本発明の実施において、何れかの定義に限定されるものではない。
図55は、撮像対象人物の左右の目と口との位置の調整を誘導するための目標範囲と誘導メッセージとの画面表示例を示す図である。図55に示される例では、左右の目と口との目標範囲が、左右の目のイメージIM1と口のイメージIM2とで表示されている。また、左右の目のイメージIM1と口のイメージIM2とに合わせるように誘導するために、「目と口を線に合わせてください」等の誘導メッセージが表示される。なお、左右の目のイメージIM1及び口のイメージIM2の大きさ(寸法)は、それぞれの目標範囲と厳密に一致していなくともよい。なお、左右の目と口との目標範囲は、イメージ表示に限られず、3次元形状モデル72aの左右の目の中心点と口の中心点とを表示したり、円で表示したりするなど様々な表示形態をとることができ、誘導メッセージも目標位置の表示形態に応じて変更可能である。
また、OP6において、誘導メッセージが表示される際に、顔認識プログラム70aの顔画像の性別及び年代の判定が終了している場合には、情報処理部31は、左右の目と口との目標位置とともに、顔画像の性別及び年代の判定結果を出力してもよい。図55においては、撮像対象人物の性別の判定結果は「男性」、年代の判定結果は「子供」であることが画面下方に表示されている。なお、OP6の段階において、撮像対象人物の顔は適切な位置にあるとは限らないため、性別及び年代の判定は最終的なものではない。
OP6において、左右の目と口との目標範囲と誘導メッセージとが表示された後に、情報処理部31は、顔認識プログラム70aの実行によって新たに検出された顔画像の特徴点を取得する(OP7)。情報処理部31は、新たに取得された顔画像の左右の目の中心点と口の中心点とが、何れも、目標範囲内に含まれるか否かを判定する(OP8)。
例えば、目標範囲が基準点からX軸方向に±β、Y軸方向に±γの範囲で定義されている場合には、情報処理部31は、顔画像の左右の目の中心点と口の中心点とのそれぞれの座標がそれぞれの目標範囲内に含まれているか否かを判定することで、顔画像の左右の目の中心点と口の中心点とがそれぞれの目標範囲内に含まれるか否かを判定する。
また、例えば、目標範囲が基準点からの距離σ以下の範囲で定義されている場合には、情報処理部31は、顔画像の左右の目の中心点と口の中心点のそれぞれについて、基準点からの距離を計測し、該距離が距離σ以下であるか否かを判定することで、顔画像の左右の目の中心点と口の中心点とがそれぞれの目標範囲内に含まれるか否かを判定する。
何れの場合にも、顔画像の左右の目と口との目標範囲は、顔画像の左右の目の中心点間の距離の許容範囲(基準値±誤差α)に比べて、範囲が狭く(条件が厳しく)設定されている。これは、まず、撮像対象人物の顔と撮像部との距離の調整によって顔画像の位置を粗調整し、次に、顔画像の左右の目と口とを目標位置に合わせるという微調整を行う手法を行うためである。ゲーム装置10は、まず、左右の目の中心点間の距離の判定という比較的単純な処理で撮像対象人物の顔の位置の粗調整の誘導を行い、次に、左右の目と口との位置合わせという比較的複雑で微細な調整の誘導を行うことで、操作者をスムーズに誘導することができる。
顔画像の左右の目の中心点と口の中心点とが、何れも、それぞれの目標範囲内に含まれ
ていない場合には(OP8:No)、情報処理部31は、顔認識プログラム70aの実行によって次の顔画像の特徴点が検出されるまで待機し、OP7とOP8の処理を繰り返す。なお、上側LCD22の画面表示は、左右の目と口との目標範囲と誘導メッセージとが表示されたままである。
顔画像の左右の目の中心点と口の中心点とが、何れも、それぞれの目標範囲内に含まれる場合には(OP8:Yes)、情報処理部31は、自動的に撮像部のシャッターを切って撮像する(OP9)。すなわち、情報処理部31は、顔画像の左右の目の中心点と口の中心点とが、何れも、それぞれの目標範囲内に存在すると判定した後に、撮像部によって撮像された顔画像を、3次元形状モデル72aの貼り付け用の顔画像として、メインメモリ32のワーク領域に記憶する。また、これに限られず、ゲーム装置10の操作者がボタン操作によってシャッターを切って、貼り付け用の顔画像を撮像してもよい。
図56は、撮像対象人物の左右の目の中心点と口の中心点とが目標位置に含まれる際の表示画面の一例を示す図である。図56に示されるような状態になると、情報処理部31は、顔画像の左右の目の中心点と口の中心点とがそれぞれの目標範囲内に存在すると判定し、自動的に撮像部のシャッターを切って撮像する。図56においても、図55と同様に、顔画像の性別及び年代の判定結果が表示される。
情報処理部31は、撮像された貼り付け用の顔画像を上側LCD22の画面に表示し、ゲーム装置10の操作者に確認を促す。このとき、情報処理部31は、顔認識プログラム70aによって判定された顔画像の性別及び年代の判定結果を最終結果としてともに表示する(OP10)。
図57は、貼り付け用として撮像された顔画像の表示画面の一例を示す図である。また、貼り付け用の顔画像とともに、顔画像の性別及び年代の判定の最終結果も表示される。図57に示される例では、性別及び年代の判定の最終結果として、「大人の男性顔」と表示されている。この他に性別及び年代に応じて、例えば、「子供の女性顔」、「高齢の男性顔」等の判定結果が表示される。
ゲーム装置10の操作者の操作によって、貼り付け用顔画像が確認されると、情報処理部31は、3次元顔オブジェクト生成プログラム70cを起動し、3次元形状モデル72aに貼り付け用顔画像を貼り付け、3次元顔オブジェクトを生成する(OP11)。情報処理部31は、生成した3次元顔オブジェクトをメインメモリ32のワーク領域中のデータ記憶領域72に格納する。このとき、情報処理部31は、3次元顔オブジェクトとともに、顔画像の特徴点、性別及び年代の判定結果等を合わせて、3次元顔オブジェクト情報72bとして記憶する。メインメモリ32に記憶された3次元顔オブジェクト情報は、ゲーム装置10の操作者による操作又はゲーム装置10の電源切断処理において、データ保存用内部メモリ35又はデータ保存用外部メモリ46に記録される。
図58は、3次元形状モデル72aに貼り付け用顔画像を貼り付ける際の、2次元の顔画像と3次元形状モデル72aとの位置合わせの一例を示す図である。3次元顔オブジェクト生成プログラム70cの実行を通じて、情報処理部31は、貼り付け用画像の左右の目の中心点及び口の中心点と、3次元形状モデル72aの左右の目の中心点及び口の中心点と、をそれぞれ対応付け、それらの距離が最小となるように3次元形状モデル72aの向き、位置等を変更する。例えば、位置合わせの際にはエネルギー関数等が用いられる。また、貼り付け用画像と3次元形状モデル72aとで、左目の中心点間の距離D1、右目の中心点間の距離D2、口の中心点間の距離D3とし、これらの距離の二乗和(D12+
D22+D32)が最小になるようにしてもよい。
図52のフローのOP9において撮像された貼り付け用の顔画像は、3次元形状モデル72aと左右の目及び口の中心点が適合するように厳しい条件のもとで顔の位置調整が行われて撮像されているので、3次元形状モデル72aと精度良く位置合わせを行うことができる。
(3次元顔オブジェクトの使用例)
図59は、3次元顔オブジェクトの使用例1を示す図である。図59は、ゲーム装置10に記憶されている3次元顔オブジェクトの一覧画面の一例を示す図である。3次元顔オブジェクトは、それぞれがアプリケーションプログラムによって動作している。図59に示される例において、3次元顔オブジェクトG0は、右目を閉じてウィンクをしている。3次元顔オブジェクトG3は、3次元オブジェクトG5の方に顔を向けている。また、例えば、3次元顔オブジェクトG5が操作者の操作によって選択されると、3次元顔オブジェクトG5の3次元顔オブジェクト情報72bの情報が表示される。例えば、3次元顔オブジェクトG5のユーザ名(図59では「山田さん」)、性別、年代(図59では、「大人の男性顔」)等が表示される。
図59に示される何れの3次元顔オブジェクトも、貼り付け用の顔画像が、3次元形状モデル72aの左右の目と口との中心点と顔画像の左右の目と口との中心点に適合するように撮像されているので、違和感の少ない自然な表情を表現できる。また、例えば、3次元形状モデル72の目の周囲の制御点を移動させることにより、目を閉じた表情を表示することができるが、このとき、3次元形状モデル72の目の中心点と顔画像の目の中心点が適合しているため、目を閉じた表情を正しく表示することができる。
図43は、3次元顔オブジェクトの使用例2を示す図である。図43は、ゲームのアプリケーションプログラムの実行中に表示される画面の一例を示す図である。3次元顔オブジェクトは、例えば、ゲーム装置10の上側LCD22の画面に映し出された現実世界の裏側(仮想空間)から現実世界を突き破って飛び出してくる3次元オブジェクトの敵を撃破するゲームにおいて、キャラクタのフレームと組み合わされて、ゲーム中で3次元オブジェクトの敵キャラクタとして使用される。例えば、図59で示される3次元顔オブジェクトの一覧画面を用いて、ユーザは、敵キャラクタの3次元顔オブジェクトを選択するようにしてもよい。図43では、図59において示された例における3次元顔オブジェクトのうちの一部が、敵キャラクタE01〜E07として使用されている。このような3次元オブジェクトの敵キャラクタは、3次元形状モデル72aを用いているため、表情を変えたり、向きを変えたりなどする。
(本実施形態の作用効果)
ゲーム装置10は、左右の目と口とが変形する3次元形状モデル72aに貼り付ける顔画像を撮像するために、(1)撮像対象人物の顔と撮像部との距離の調整を誘導し、(2)撮像対象人物の顔画像中における左右の目と口との位置の調整を誘導する。このように、上記(1)の誘導によって撮像対象人物の左右の目の位置を或る程度調整し、上記(2)の誘導によって、さらに左右の目と口との位置を合わせるための目標位置を表示してゲーム装置10の操作者を誘導できるため、一度に左右の目と口との位置を調整する場合に比較して、ゲーム装置10の操作者は撮像対象者の左右の目と口との位置合わせを容易に行うことができる。また、ゲーム装置10の処理も、一度に左右の目と口との位置を調整する場合に比較して、複雑にならないため、ゲーム装置10に対する負荷も軽くすることができる。また、画像内において、左右の目と口との目標位置に対して、撮像対象人物の左右の目及び口の配置の正確性を向上させることができる。また、このようにして撮像された顔画像は、3次元形状モデル72aに適合するように厳格な条件のもと撮像されているので、3次元形状モデル72aとの位置合わせの精度が向上する。これによって、撮像対象人物の顔を有し、違和感のない自然な表情をするオブジェクトを生成することができ
る。
また、3次元形状モデル72aに適合するように撮像対象人物の顔画像が撮像されるので、ゲーム装置10は、撮像された顔画像からモデルを作成したり、複数の3次元形状モデルを用意したりすることなく、1つのモデルで表情が変化する複数の3次元顔オブジェクトを生成することができる。
また、ゲーム装置10は、3次元顔オブジェクト用の顔画像を撮像するために、上記(1)と(2)のステップを踏まなければならないため、撮像対象人物の同意なく撮像することができず、盗撮防止の効果もある。
また、ゲーム装置10は、顔認識プログラム70aの実行によって撮像対象人物の性別及び年代を判定するが、性別及び年代の判定は顔画像の特徴点検出に比べて時間を要する。顔認識プログラム70aの性別及び年代の判定処理の間、ゲーム装置10の操作者は上記(1)や(2)のような顔の位置調整の誘導に従って位置調整を行うことになるため、操作者に与える、撮像対象人物の性別及び年代判定の結果が出力されるまでの待ち時間による煩わしさを軽減することができる。
(変形例)
本実施形態では、上記(1)撮像対象人物の顔と撮像部との距離の調整の誘導が、顔画像の左右の目の中心点間の距離に基づいて行われた。これに代えて、ゲーム装置10は、顔画像の左右の目の中心点と口の中心点とで形成される三角形の面積に基づいて、撮像対象人物の顔と外側撮像部23又は内側撮像部24との距離の調整の誘導を行うことも可能である。この場合には、ゲーム装置10は予め該三角形の面積の許容範囲を保持し、情報処理部31は、顔画像の左右の目の中心点と口の中心点との位置情報から該三角形の面積を求め、該面積が許容範囲内か否かを判定する。該面積が許容範囲の最小値よりも小さければ、情報処理部31は、撮像対象人物の顔を撮像部に近づけるように操作者に促すための誘導メッセージを表示させる。該面積が許容範囲の最大値よりも大きければ、情報処理部31は、撮像対象人物の顔を撮像部から遠ざけるように操作者に促すための誘導メッセージを表示させる。また、誘導メッセージは、上側LCD22や下側LCD12の画面に表示されることに限られず、音声で出力されてもよい。
また、上記(1)撮像対象人物の顔と撮像部との距離の調整の誘導は、顔画像の左右の目の中心点間の距離及び顔画像の左右の目の中心点と口の中心点とで形成される三角形の面積に限られず、顔画像における2つの特徴点間の距離に基づいて行われてもよい。さらに、撮像対象人物の顔と撮像部との距離の調整の誘導が終了した際に、該2つの特徴点と、該2つの特徴点以外の他の1つの特徴点との目標位置が表示されてもよい。まず、2つ
の特徴点を用いて撮像対象者の顔と撮像装置との位置関係をある程度調整した上で、さらに2つの特徴点と他の1つの特徴点の位置を合わせるための目標位置を表示して情報処理装置又は撮像装置の操作者を誘導できるため、一度に3つの特徴点の位置を調整する場合と比較して、操作者は3つの特徴点の位置合わせを容易に行うことができる。また、人によって、顔における2つの特徴点の間の距離は様々であるが、2つの特徴点の距離が3次元形状モデル72aにおける該2つの特徴点の間の距離になるように顔画像が撮影されるので、どんな人でも該2つの特徴点を3次元形状モデル72aに合わせることができる。また、該2つの特徴点と該他の1つの特徴点との位置関係も人それぞれであるが、撮像部
を傾ける等すれば、該2つの特徴点を3次元形状モデル72aに合わせた状態でさらに該他の1つの特徴点をモデルに合わせることもできる。これによって、撮像対象者がどんな人であっても、3次元形状モデル72aに貼り付けられる顔画像を撮像することができ、撮像対象者の3次元顔オブジェクトを生成することができる。
また、本実施形態では、上記(1)の誘導において、顔画像の左右の目の中心点間の距離が許容範囲内にない場合には、誘導メッセージを表示して、撮像対象人物の顔と撮像部との距離の調整を誘導した。ゲーム装置10は、顔画像の左右の目の中心点間の距離が許容範囲内にない場合のこのような撮像対象人物の顔と撮像部との距離の調整を誘導する誘導メッセージの表示を行わずに、顔画像の左右の目の中心点間の距離が許容範囲内に含まれたときに、上記(2)の誘導における、顔画像の左右の目と口との目標範囲を表示するようにしてもよい。
また、本実施形態では、3次元形状モデル72aの左右の目と口とのそれぞれの中心点を基準点としたそれぞれの目標範囲が表示された。これに限られず、例えば、ゲーム装置10は、左右の目の中心と鼻の頂点とを基準点としたそれぞれの目標範囲を表示し、撮像対象人物の左右の目と鼻とが目標範囲内に含まれるように操作者を誘導してもよい。すなわち、目標範囲として表示される箇所は、顔の特徴点の何れかを基準とした範囲であればよい。また、ゲーム装置10は、3次元形状モデル72aの輪郭を表示し、この輪郭に撮像対象者の顔の輪郭を合わせるようにして操作者を誘導してもよい。
(その他)
本実施形態において説明された、顔認識プログラム70a、撮像プログラム70b、及び3次元顔オブジェクト生成プログラム70cによる一連の処理は、ゲーム装置10に限られず、例えば、カメラ付携帯電話端末、デジタルカメラ等の撮像装置と該撮像装置で撮像された画像を表示する表示装置とを備える装置に適用することができる。また、撮像対象人物の顔の位置合わせの誘導処理は、撮像装置及び表示装置と接続又は通信可能なパーソナルコンピュータに適用することもできる。
また、本実施形態の顔認識プログラム70a、撮像プログラム70b、及び3次元顔オブジェクト生成プログラム70cは、インターネット等のネットワーク上のサーバに保持されてもよい。例えば、カメラ付き携帯電話端末、カメラ付き情報処理端末、カメラ付きパーソナルコンピュータ等のユーザ端末から撮像された顔画像が、ネットワーク上の該サーバに送信される。サーバ上では、顔認識プログラム70a、撮像プログラム70b及び3次元顔オブジェクト生成プログラム70cが実行されることによって、サーバは、送信されてきた顔画像を解析し(左右の目の中心点間の距離や、左右の目と口の位置の判定)、解析結果として、例えば、誘導メッセージや左右の目と口との目標範囲をユーザ端末に返信してもよい。ユーザ端末から送信される顔画像の左右の目と口とがそれぞれの目標範囲に含まれると、サーバは、顔画像を3次元形状モデル72aに貼り付け、3次元顔オブジェクトを生成し、ユーザ端末に送信してもよい。また、サーバは生成された3次元顔オブジェクトを、インターネット上で提供されるゲームのキャラクタとして用いてもよい。
<変形例>
また、上述した実施例では、上側LCD22には、外側撮像部23または内側撮像部24により取得したカメラ画像CIに基づいた実世界の平面画像(上述した立体視可能な画像とは反対の意味での平面視の画像)が表示されるが、裸眼で立体視可能な画像(立体画像)が表示してもよい。例えば、上述したように、ゲーム装置10は、外側左撮像部23aおよび外側右撮像部23bから取得したカメラ画像を用いた立体視可能な画像(立体画像)を上側LCD22に表示することが可能である。このとき、上側LCD22には、立体画像(実世界画像)の更に背後に存在する世界観をユーザに体験させる画像が表示される。
この場合、情報処理部31は、カメラ画像CIとして外側左撮像部23aから得られた左目用画像および外側右撮像部23bから得られた右目用画像を用いて、上述した画像処理を行う。
具体的に、第1の描画方法では、図32Aに示したステップ81の画像処理において、情報処理部31は、外側左撮像部23aから得られた左目用画像(テクスチャデータ)および外側右撮像部23bから得られた右目用画像(テクスチャデータ)をそれぞれ所定の距離ずらして境界面3に貼りつける。そして、図32Aに示したステップ82の画像処理において、情報処理部31は、仮想空間に配置された各オブジェクトを、2つの仮想カメラ(ステレオカメラ)から透視投影することによって、それぞれ左目用仮想世界画像と右目用仮想世界画像とを得る。これら左目用仮想世界画像と右目用仮想世界画像とが左目用表示画像および当該右目用表示画像となる。そして、情報処理部31のGPU312が、当該左目用表示画像および当該右目用表示画像を上側LCD22に出力することで、上側LCD22には、立体画像が表示される。
また、具体的に、第2の描画方法では、は図32Bに示したステップ83の画像処理において、情報処理部31は、外側左撮像部23aから得られた左目用画像および外側右撮像部23bから得られた右目用画像を用いて、それぞれの実カメラ画像のレンダリングした画像(左目用の実世界画像と右目用の実世界画像)を生成する。また、図32Bに示したステップ84の画像処理において、情報処理部31は、仮想空間に配置された各オブジェクトを、2つの仮想世界描画用カメラ(ステレオカメラ)から透視投影することによって、それぞれ左目用仮想世界画像と右目用仮想世界画像とを得る。そして、図32Bに示したステップ85の画像処理において、情報処理部31は、左目用の実世界画像と左目用仮想世界画像とを合成して左目用表示画像を生成する。同様に、情報処理部31は、右目用の実世界画像と右目用仮想世界画像とを合成して右目用表示画像を生成する。そして、情報処理部31のGPU312が、当該左目用表示画像および当該右目用表示画像を上側LCD22に出力することで、上側LCD22には、立体画像が表示される。
また、上述した実施例では、ゲーム装置10に内蔵する実カメラで撮像されたリアルタイムの動画像が上側LCD22に表示されるが、上側LCD22に表示する画像は、様々なバリエーションが考えられる。第1の例として、予め録画された動画像およびテレビジョン放送や他の装置から得られる動画像等が上側LCD22に表示されてもよい。この場合、上記動画像は、境界面3上にマッピングされることで仮想空間における位置が特定される。第2の例として、ゲーム装置10に内蔵する実カメラや他の実カメラから得られた静止画像が上側LCD22に表示されてもよい。この場合も、上記例と同様に、当該静止画像は、境界面3上にマッピングされることで仮想空間における位置が特定される。ここで、実カメラから得られる静止画像は、ゲーム装置10に内蔵する実カメラでリアルタイムに撮像された実世界の静止画像でもよく、当該実カメラや他の実カメラで予め撮影された実世界の静止画像でもよい。また、実カメラから得られる静止画像は、テレビジョン放送や他の装置から得られる静止画像でもよい。
また、上記実施例では、上側LCD22は、パララックスバリア方式の液晶表示装置であり、視差バリアのON/OFFが制御されることにより立体表示と平面表示とを切り替えることができる。他の実施形態では、例えば、上側LCD22は、立体画像および平面画像を表示可能であるレンチキュラー方式の液晶表示装置であってもよい。上側LCD22がレンチキュラー方式の液晶表示装置である場合でも、上記実施形態と同様に、外側撮像部23で撮像した2つの画像を縦方向に短冊状に分割して交互に配置することで画像が立体表示される。また、上側LCD22がレンチキュラー方式の液晶表示装置である場合でも、上記実施形態と同様に、内側撮像部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つの表示部と、実カメラとを備えてもよい。
また、上述した実施例では、画像処理プログラムを1つのゲーム装置10で実行する例を用いたが、上記画像処理プログラムにおける処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲーム装置10が他の装置(例えば、サーバや他のゲーム装置)と通信可能に構成されている場合、上記画像処理における処理ステップは、ゲーム装置10および当該他の装置が協働することによって実行されてもよい。一例として、他の装置が図29におけるステップ52〜ステップ57までの処理を実行し、ゲーム装置10が図29におけるステップ58及びステップ59の処理を実行するように協働してもよい。このように、上記画像における処理ステップの少なくとも一部を他の装置で行うことによって、上述した画像処理と同様の処理が可能となる。このように、上述した画像処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。
また、上述した実施例では、ゲーム装置10の情報処理部31が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、ゲーム装置10が備える専用回路によって上記処理の一部または全部が行われてもよい。
また、上述したゲーム装置10の形状や、それに設けられている各種操作ボタン14、アナログスティック15、タッチパネル13の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うま
でもない。また、上述した画像処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず他の順序や値であっても、本発明を実現できることは言うまでもない。
また、上記画像処理プログラム(ゲームプログラム)は、外部メモリ45やデータ保存用外部メモリ46等の外部記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置10に供給されてもよい。また、上記プログラムは、ゲーム装置10内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを一時的に記憶する揮発性メモリでもよい。
また、表示デバイスはヘッドマウントディスプレイであってもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。