以下、本発明に係る一実施形態としての画像処理プログラムを実行する画像処理装置について具体例を挙げて説明する。ただし、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
なお、以下に挙げる実施形態において、コンピュータが処理するデータをグラフや自然言語を用いて例示しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメタ、マシン語、配列等で指定される。本発明は、データの表現方法を限定するものではない。
§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とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、第1実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の表示装置を利用してもよい。また、下側LCD12として、所望の解像度を有する表示装置を利用することができる。
タッチパネル13はゲーム装置10の入力装置の一つである。タッチパネル13は、下側LCD12の画面上を覆うように装着されている。第1実施形態では、タッチパネル13は、抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、例えば、静電容量方式等、任意の押圧式のタッチパネルを用いることができる。また、第1実施形態では、タッチパネル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、上側LC
D22、内側撮像部24、3D調整スイッチ25、および3Dインジケータ26が設けられる。
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。上側LCD22は、実質的に同一の表示領域を用いて左目用画像と右目用画像とを表示することが可能である。具体的には、上側LCD22は、左目用画像と右目用画像とが所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。なお、上側LCD22は、左目用画像と右目用画像とが交互に表示される方式の表示装置であってもよい。また、上側LCD22は、裸眼立体視可能な表示装置である。この場合、上側LCD22は、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。第1実施形態では、上側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(横×縦)である。第1実施形態では、上側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の間隔は、この範囲に限らない。なお、第1実施形態においては、外側左撮像部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等を含む情報処理手段である。第1実施形態では、所定のプログラムがゲーム装置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や他の機器等)から取得されるプログラムを一時的に記憶したりする。第1実施形態では、メインメモリ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)の指示にしたがって画像を表示する。第1実施形態では、情報処理部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に出力する。第1実施形態では、情報処理部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を点灯させる。
§2 実施形態に係る表示形態例
次に、ゲーム装置10で実行される画像処理プログラムによる具体的な画像処理動作を説明する前に、図7A、7B、8〜13、14A、14B、15を参照して当該画像処理動作によって上側LCD22に表示される表示形態例について説明する。なお、当該表示形態例の説明を簡単にするために、ゲーム装置10で実行される本実施形態に係る画像処理プログラムの一例はゲームプログラムであるとする。そして、ゲーム上の処理として、本実施形態に係る画像処理プログラムの画像処理操作及び表示形態例を説明する。ただし、上述のとおり、本発明の画像処理プログラムはゲームプログラムに限定される訳ではない。
<ゲームの概要>
まず、本実施形態において、ゲーム装置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の撮像範囲を変更すると、上側L
CD22に表示される実世界画像も、撮像範囲の変更に追従して変更される。
ここで、ゲームプレイ中におけるゲーム装置10の向きの変更は、大略して、(1)プレーヤの意図、又は(2)ゲーム上の意図(シナリオ)に従って行われる。プレーヤがプレイ中にゲーム装置10の向きを意図的に変えることで、外側撮像部23で撮影される実世界画像が変化し、これにより、上側LCD22に表示される実世界画像を意図的に変更することができる。
また、ゲーム装置10が備える角速度センサ40によりゲーム装置10の向きの変化が検出され、それに応じて仮想カメラの向きを変更する。より具体的には、外側撮像部23の向きの変化方向に仮想カメラを現在の向きから変化させる。さらには、外側撮像部23の向きの変化量(角度)だけ、仮想カメラを現在の向きから変化させる。すなわち、ゲーム装置10の向きを変えると、実世界画像が変化するとともに、仮想空間のうちの表示される範囲が変化する。すなわち、ゲーム装置10の向きを変更することにより、実世界画像と仮想世界画像が連動して変化し、これにより、現実世界と仮想世界とが関連付いているかのような合成画像を表示することができる。なお、本実施形態においては、仮想カメラの位置は変更しないが、ゲーム装置10の移動を検出して仮想カメラの位置を変更してもよい。
なお、第2の描画方法においては、このような仮想カメラの向き変更処理は、仮想世界描画用カメラに適用され、実世界描画用カメラについては適用されない。
また、ゲームプレイ中に、画面の端(例えば、右端、左端)のような局所にオブジェクトが表示されると、プレーヤに対し、オブジェクトを画面の中心に捉えようとする心理が自然に働き、プレーヤはゲーム装置10(外側撮像部23)を動かす。この結果、画面に表示される実世界画像が変わる。このようなゲーム装置10の向きの変更(実世界画像変更)は、ゲームのシナリオに従って表示されるオブジェクトが意図的に画面の端に表示されるようにプログラミングすることによって、プレーヤが自然に行うようにすることができる。
<仮想空間の詳細>
(実世界画像の描画)
外側撮像部23で撮像された実世界画像は、仮想空間の手前側領域と奥側領域の境界位置に存在して見えるように合成される。図7Aは、本実施形態における仮想空間の一例を示す。また、図7Bは、本実施形態におけるスクリーンモデルとαテクスチャの関係を示す。第1の描画方法では、実世界画像の表示のため、図7Aに示すように、仮想空間内に仮想カメラの位置を中心とする球体モデル(上述のスクリーンモデル)を設定し、この球体の内面に実世界画像を貼り付け、スクリーンオブジェクトを形成してもよい。より具体的には、スクリーンモデルのうち仮想カメラで撮影される部分の全体にテクスチャとして貼り付けられる。スクリーンモデルのうちこの部分以外については、透明に設定されため画面上で視認されない。この例では、境界面は球体面であり、すなわち、図7Aで示すように、球体の表面により仮想カメラ側が手前側領域であり、球体の表面より仮想カメラからみて遠い側が奥側領域である。
第2の描画方法では、実世界画像の表示のため、仮想空間内には、実世界画像のテクスチャを貼り付けるための平面ポリゴンが配置される。仮想空間において、平面ポリゴンの実世界描画用カメラに対する相対位置は、常に固定される。すなわち、平面ポリゴンは、実世界描画用カメラから一定の距離を空けて配置され、その法線方向が実世界描画用カメラの視点(視軸)に一致するように配置される。
また、この平面ポリゴンは、実世界描画用カメラの視野範囲を包含するように設定される。具体的には、平面ポリゴンの大きさとその仮想カメラからの距離は、平面ポリゴンが仮想カメラの視野範囲を包含可能となるように設定される。この平面ポリゴンの仮想カメラ側の面全体に実世界画像を貼り付けるようにしたので、仮想カメラで、この実世界画像が貼り付けられた平面ポリゴンを撮影すると、仮想カメラにより生成される画像において、実世界画像がその全域に対応するように表示される。
なお、図8に示すように、境界面を円筒状にしてもよい。図8は、本実施形態における仮想空間の別の例を示す。この場合、仮想空間には、仮想カメラの位置に立てられた鉛直軸(本実施形態においては、仮想空間のY軸が鉛直方向に対応し、X軸およびZ軸が水平方向に対応するとする)を中心軸とする仮想の円筒周面(境界面)が配置される。ただし、前述の通り、この円筒周面は視認されるオブジェクトではなく、開口処理において用いられるオブジェクトである。この円筒の外周面は、仮想空間を、仮想カメラが位置する第1空間と、この第1空間の周りに存在する第2空間とに区分する。
(実世界画像を開口させるための処理)
さらに、本実施形態に係るゲームでは、実世界画像に開口を設け、実世界画像の背後の奥側領域の存在をプレーヤに認識させる。より明確に言うと、実世界画像のうちこの開口の部分は、透明または半透明で表示され、その背後にある世界がこの部分に合成される。このため、ゲーム内で、所定のイベントの発生を契機に、実世界画像の一部が開口して(消去されて)、その開口を通して実世界画像の背後に存在する他の仮想空間(奥側領域)を示す画像が表示される。また、実世界画像の背後の奥側領域には仮想オブジェクトが存在しており、仮想オブジェクトの位置や開口の位置によっては、仮想オブジェクトが実世界画像に隠れたり、開口を通して仮想オブジェクトの画像が表示されたりする。これにより、仮想オブジェクトが実世界画像の背後に存在しているかのような画像をユーザに提供することができることになる。
このような、実世界画像に開口を設けて奥側領域を表示する処理は、本実施形態において、境界面は球体面であり、第1の描画方法では、図7A及び図7Bに示すように、上述の球体のスクリーンオブジェクトの内面に貼り付けられるテクスチャにより実現される。以下、このテクスチャのことをスクリーン用αテクスチャ(後述する、開口判定用データ)と呼ぶ。本実施形態では、スクリーン用αテクスチャは仮想カメラを中心として少なくとも或る方向に360度周回する部分に貼り付けられる。より具体的には、図7Bで示すように、スクリーン用αテクスチャは、球体のうち中央部分、言い換えると、仮想カメラの位置を中心として、XY平面に平行な方向に360度周回させた、Y方向に所定の幅を有する部分(以下、αテクスチャ適用部と呼ぶ)に貼り付けられる。このようにすることにより、スクリーン用αテクスチャのデータの持ち方を簡単にすることができる。具体的には、本実施形態では、スクリーン用αテクスチャは矩形形状である。このαテクスチャが図7Aで示す部分に貼り付けられることにより、スクリーン用αテクスチャの各ドットの情報は、スクリーンオブジェクトのうちαテクスチャ適用部の各座標に対応する。
上述のように実世界画像が貼り付けられ、αテクスチャが設定されたスクリーンオブジェクトを仮想カメラで撮影することにより、開口部を有する実世界画像が境界面(球体内面)に存在するように描画されることになる。αテクスチャのうち実世界画像に対応する部分は、仮想カメラによる撮影により計算される。
第2の描画方法においても、仮想空間の境界面(ここでは球体内面)に対して、開口の位置を示すデータが設定される。典型的には、境界面の各点について開口の有無を示すデータが設定される。より具体的には、上述と同様の球体オブジェクトが仮想オブジェクトの存在する仮想世界に配置され、この球体オブジェクトに対して同様のαテクスチャが設
定される。そして、実世界画像のレンダリング時に、αテクスチャが設定された球体オブジェクトのうち仮想世界描画用カメラで撮影される部分に対応する部分のαテクスチャを、上述の平面ポリゴンに適用してレンダリングする。または、この部分のαテクスチャを用いて、実世界画像に対して開口部を透明化する処理を行った後、この処理後の実世界画像を前述の平面ポリゴンに貼り付けて実世界描画用カメラでレンダリングする。なお、この球体オブジェクトは、開口の計算にのみ使用されるオブジェクトであり、仮想世界の描画時に描画されないオブジェクトである。
なお、本実施形態では、開口部を示すデータは境界面の各点ごとに情報を有するようなデータであるが、境界面において開口を有する位置を計算式で定義するような情報でもよい。
第2空間には、開口を通じて仮想カメラの視野に収まる第2空間の背景画像(テクスチャ)を貼り付けるためのポリゴン(オブジェクト)が配置される。第2空間の背景は、「奥壁」と呼ぶこともある。
第1空間には、敵キャラクタや、敵キャラクタを撃ち落とすための弾を表す各種のキャラクタを示すオブジェクトが配置される。第2空間にも所定のオブジェクト(例えば、敵キャラクタのうちの一部)が配置される。仮想空間上に配置された各オブジェクトは、予めプログラミングされたロジック(アルゴリズム)に従って仮想空間内を移動する。
さらに、敵キャラクタのうちの一部は、境界面に形成された開口を通じて第1空間と第2空間との間を行き来することもできる。または、自ら境界面に開口を形成して第1空間と第2空間との間を行き来することができる。開口を形成するゲーム上の所定イベントは、例えば、敵キャラクタが境界面に衝突するようなイベント(衝突イベント)である。或いは、ゲームシナリオの進行上、所定のタイミングで境界面が破壊され、第2空間にいた敵キャラクタが第1空間に進入して来るイベント(敵キャラクタ出現イベント)である。或いは、時間経過に応じて自動的に開口が形成されるようにしてもよい。また、プレーヤの所定のゲーム操作に応じて、開口を修復することができる。例えば、プレーヤは、形成された開口に対して弾を当てることで、開口を小さくする(修復する)こともできる。
図9は、実施形態における画像処理プログラムの一例であるゲームプログラムにおいて定義される仮想の3次元空間(ゲーム世界)を示す。なお、上述したように、本実施形態では、境界面は球体であるが、図9では簡便のため、境界面を円筒状に示す。上述したように、本実施形態に係るゲームでは、ゲーム装置10の上側LCD22には、仮想の3次元空間を表現した仮想世界画像と実世界画像が合成されて表示される。
また、図9において示されるとおり、本実施形態におけるゲーム上の仮想空間は、仮想カメラの位置を中心軸とする球体面で形成された境界面3によって第1空間1と第2空間2に分けられている。
境界面3には、ゲーム装置10に内蔵する実カメラによって撮像された実世界画像であるカメラ画像CI(図10)は、第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の背後の空間である。図7A及び8において図示はされていないが、境界面3を囲む奥壁BWが存在する。つまり、第2空間2は、境界面3と奥壁BWの間に存在する空間である。当該奥壁BWは、任意の画像が貼り付けられる。例えば、奥壁BWには、予め用意された宇宙空間を表す画像が貼り付けられ、第1空間の背後には宇宙空間である第2空間の存在が表示される。すなわち、仮想カメラから見て、手前から順に、第1空間、境界面3、第2空間、奥壁が配置される。
ただし、上述のとおり、本発明の画像処理プログラムはゲームプログラムに限定される訳ではなく、これらの設定及びルールは、本発明の画像処理プログラムを限定するものではない。なお、敵オブジェクトEOは、図9に示されるとおり、仮想の3次元空間内を移動し、上述の境界面3を通って、第1空間1と第2空間2とを往来することができる。境界面3のうち、仮想カメラによって撮像される領域を通って、敵オブジェクトEOが第1空間1と第2空間2との間を移動した場合には、LCD22に表示される画像においては、敵オブジェクトEOが実世界画像を通り抜けて奥側から手前側に、または、手前側から奥側に移動するように表現される。
画面には、ゲームのシナリオやイベントにより実世界画像に生じた開口(穴)を使って第1空間1と第2空間2とを往来する敵オブジェクトEOの様子が表示される。図9及び図11には、敵オブジェクトEOが境界面3に開口を作って、または、境界面3上に既に存在する開口を通って、第1空間1と第2空間2を行き来する様子が図示されている。
なお、本実施形態における画像処理プログラムでは、第1空間1または第2空間2に存在するオブジェクトは、敵オブジェクトEO、弾オブジェクトBOおよび奥壁BWの3つであるが、本発明の画像処理プログラムは、オブジェクトの種類に限定されない。本実施形態における画像処理プログラムにおいて、オブジェクトは、仮想空間(第1空間1及び第2空間2)に存在する仮想物体である。例えば、本実施形態にかかる画像処理プログラムにおいて、障害物のオブジェクト等の任意のオブジェクトが存在してもよい。
<表示形態例>
図10〜図13は、上側LCD22に表示されるゲーム画面の一例を示す。以下、各図の表示形態例について説明する。
まず、図10〜図13において共通に表示される照準カーソルALについて説明する。図10〜図13において、上側LCD22には、共通して、ゲーム装置10を用いた攻撃操作(例えば、ボタン14B(Aボタン)の押下)に応じて発射される弾オブジェクトBOの照準カーソルALが表示されている。本実施形態のゲームプログラムでは、照準カーソルALは、ゲーム装置10が実行するプログラムに応じて所定の方向を向くように設定されている。
例えば、照準カーソルALは、仮想カメラの視線方向、つまり、上側LCD22の画面
中央に固定されているように設定される。この場合、上述のとおり、本実施形態において、外側撮像部23の撮影方向の変化に応じて、仮想カメラ(第1の描画方法における仮想カメラまたは第2の描画方法における仮想世界描画用カメラ)の撮影方向を変更するので、プレーヤは、ゲーム装置10の向きを変えることで、照準カーソルALの仮想空間内における向きを変更する。そして、プレーヤは、例えば、ゲーム装置10が備えるボタン14B(Aボタン)を、下側ハウジング11を把持した右手の親指で押下することにより攻撃操作を行う。これにより、プレーヤは、攻撃操作による弾オブジェクトBOの発射を行い、本実施形態のゲーム上における敵オブジェクトEOの退治や、境界面3に存在する開口の修復をする。
次に、図10〜図13について各図個別に説明する。
図10において、上側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に移動することができる。図11は、第1空間1に存在する敵オブジェクトEOが、第1空間1から第2空間2へ移動する様子の一例を示す。図11に示した一例では、第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の影を示す表示である。図14Aは、敵オブジェクトEOの影のシルエットモデルを上から見た図を示す。また、図14Bは、敵オブジェクトEOの影のシルエットモデル例を示す。図14A及び図14Bに示すように、本実施形態においては、敵オブジェクトEOについて、複数の向きごとにシルエットモデルが設定されている。具体的には、シルエットモデルは、例えば、図14Aに示す8枚の平面ポリゴンである。このシルエットモデル(8枚の平面ポリゴン)は、実体モデルである敵オブジェクトEOと同じ位置に配置される。シルエットモデルは、仮想空間において敵オブジェクトEOと一体的に配置されるため、例えば、敵オブジェクトEOが仮想空間内を移動した場合に、その敵オブジェクトEOに追従するように移動する。また、各平面ポリゴンは実体モデルに内包される大きさである(実体モデルからはみ出ない)。また、各平面ポリゴンにはその面の法線方向から見た敵オブジェクトEOの影画像が描いたテクスチャが貼り付けられる。敵オブジェクトEOが境界面3の非開口領域の背後に存在する場合には、このシルエットモデルが描画されることにより影ESが表示される。
なお、8枚の平面ポリゴンのすべてがレンダリングされる。敵オブジェクトEOが境界面の非開口領域の背後に存在する場合、奥行判定(デプス判定)により、敵オブジェクトEOの実体モデルはこの境界面(スクリーンオブジェクト)に隠されるため描画されない。しかしながら、シルエットモデルは、境界面(スクリーンオブジェクト)に対してデプス判定をしないように設定されているため、敵オブジェクトEO(およびそのシルエットモデル)が境界面の非開口領域の背後に存在する場合であっても、シルエットモデルは描画されて、図11や図12に示すように影が表示される。しかしながら、敵オブジェクトEOが境界面の前方に存在する場合や、境界面の開口領域の背後に存在する場合は、シルエットモデルは実体モデルより奥に存在し、敵オブジェクトEOの実体モデルが描画され、それによりシルエットモデルは描画されないため、影は表示されない。これは、シルエットモデルが敵オブジェクトEOの実体モデルに内包されるように設定されているからである。
上側LCD22には、以下の優先順位で画像が合成されて表示される。
(1)第1空間1に存在するオブジェクトの画像
(2)実世界画像のうち非開口領域については、第2空間2に存在するオブジェクトの影画像と実世界画像の合成画像(例えば影画像が半透明で実世界画像に合成される)
(3)実世界画像のうち開口部領域については第2空間2に存在するオブジェクトの画像(実体画像)が優先的に合成され、さらにその奥に奥壁画像が合成される
ただし、仮想カメラの撮影方向と第2空間2に存在する敵オブジェクトEOの仮想空間内の位置によっては、敵オブジェクトEOが開口領域と非開口領域の両方にまたがって存在する場面がある。つまり、仮想カメラから見た位置において、敵オブジェクトEOが開口のふちに存在する場面がある。図12は、このような、第2空間2に存在する敵オブジェクトEOが、境界面3上に設定された開口のふちに移動した状態を示す。図12において示されるとおり、第2空間2に存在する敵オブジェクトEOについて、仮想カメラから見て、開口を通して第2空間2が視認できる範囲についてはそのままの画像が、開口を通して第2空間2が視認できない範囲については影ESが、上側LCD22に表示される。
より具体的には、図15に示すように、各オブジェクトには不透明度(アルファ値)のデータが設定される。図15は、本実施形態において各オブジェクトに設定される不透明度(アルファ値)の例を示す。敵オブジェクトの実体モデルには、そのテクスチャにモデル全体について不透明度が1である設定がされる。また、敵オブジェクトのシルエットモデル(平面ポリゴン)には、そのテクスチャに影画像の全体について不透明度が1である設定がされる。弾のモデルについても同様である。敵オブジェクトのうち半透明のオブジェクトのモデルやエフェクト用のモデルについては、そのテクスチャに、例えば、そのモデル全体について不透明度0.6が設定される。スクリーンオブジェクト(図7Aに示される球体のスクリーンモデル)には、マテリアルとして不透明度0.2が設定され、そのテクスチャであるαテクスチャに、各点ごとに1または0が設定される。1が非開口部を示し、0が開口部を示す。すなわち、スクリーンオブジェクトには、不透明度値として、マテリアルの設定とテクスチャの設定の2つが施される。
また、敵オブジェクト、弾オブジェクト、半透明の敵オブジェクト、エフェクトオブジェクト、スクリーンオブジェクトの間は、互いにデプス判定有効である。「影用の平面ポリゴンと敵オブジェクトの間」「影用の平面ポリゴンと弾オブジェクトの間」「影用の平面ポリゴンと半透明の敵オブジェクトの間」「影用の平面ポリゴンとエフェクトオブジェクトの間」は、互いにデプス判定有効である。影用の平面ポリゴンとスクリーンオブジェクトとの間は、デプス判定無効である。
デプス判定が有効な場合には、通常の透視投影に従い、レンダリングされる。仮想カメラの視野方向における奥行に応じて陰面消去される。デプス判定が無効の場合には、対象オブジェクトが自身のオブジェクトより仮想カメラに近い側にその他のオブジェクトが存在していてもレンダリングされうる。
そして、本実施形態においては、レンダリング時に、オブジェクトごとにレンダリングの式を設定することができる。具体的には以下のように設定される。
敵オブジェクトの実体、弾オブジェクト、半透明の敵オブジェクト、エフェクトオブジェクトは、以下の式で描画される。
「自身の色 × 自身の不透明度 + 背景の色 × (1 − 自身の不透明度)」
スクリーンオブジェクトは、以下の式で描画される。
「自身の色(実世界画像の色) × 自身のテクスチャの不透明度 + 背景の色 ×
(1− 自身のテクスチャの不透明度)」
敵オブジェクトのシルエットモデルは、以下の式で描画される。
「自身の色×(1− 背景のマテリアルの不透明度)+背景の色×背景のマテリアルの
不透明度)」
なお、敵オブジェクトが描画される場合、その背景はスクリーンオブジェクト(境界面3)であるから、上式において、「背景のマテリアルの不透明度」は「スクリーンオブジェクト(境界面3)のマテリアルの不透明度」である。
上述のような様々な設定により、敵オブジェクトが境界面の非開口部の背後に存在するときには、実体は表示されずに影が表示され、敵オブジェクトが境界面の前方に存在するときおよび敵オブジェクトが境界面の開口部に存在するときには、影は表示されずに実体が表示される。
また、本実施形態におけるゲームでは、境界面3上に存在する開口は、弾オブジェクトBOを当てることにより修復されうる。図13は、境界面3に存在する開口に弾オブジェクトBOを当てることにより、当該開口を塞ぐ様子を示す。図13に示されるとおり、例えば弾オブジェクトBOが当該境界面3上に存在する非開口領域に衝突した時に、衝突点から一定範囲の境界面について非開口のデータ設定がされる。これにより、衝突点から一定範囲に開口があったときに当該開口は塞がれる。なお、本実施形態では、開口にあたった弾オブジェクトBOは消滅する(したがって、図13において弾オブジェクト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に表示される。
§3 画像処理の動作例
次に、図16〜図19、図20A及び図20Bを参照して、ゲーム装置10で実行される本実施形態における画像処理プログラムによる具体的な画像処理の動作例について説明する。図16は、画像処理プログラムを実行することに応じて、メインメモリ32に記憶される各種データの一例を示す。図17は、当該画像処理プログラムを実行することによってゲーム装置10が画像処理する動作例の一例を示すフローチャートである。図18は、図17のステップ53で行われる敵オブジェクト関連処理の詳細な動作の一例を示すサブルーチンのフローチャートである。図19は、図17のステップ54で行われる弾オブジェクト関連処理の詳細な動作の一例を示すサブルーチンのフローチャートである。図20A及び図20Bは、図17のステップ57で行われる表示画像の更新処理(第1の描画方法及び第2の描画方法)の詳細な動作の一例を示すサブルーチンのフローチャートである。
なお、これらの処理を実行するためのプログラムは、ゲーム装置10に内蔵されるメモリ(例えば、データ保存用内部メモリ35)、外部メモリ45、または、データ保存用外部メモリ46に含まれており、ゲーム装置10の電源がオンになったときに、内蔵メモリから、または外部メモリI/F33やデータ保存用外部メモリI/F34を介して外部メモリ45またはデータ保存用外部メモリ46からメインメモリ32に読み出されて、CPU311によって実行される。
§3−1 各種データの一例
図16において、メインメモリ32には、内蔵メモリ、外部メモリ45、またはデータ保存用外部メモリ46から読み出されたプログラムや画像処理において生成される一時的なデータが記憶される。図16において、メインメモリ32のデータ記憶領域には、操作データDa、実カメラ画像データDb、実世界画像データDc、境界面データDd、奥壁画像データDe、敵オブジェクトデータDf、弾オブジェクトデータDg、得点データDh、動きデータDi、仮想カメラデータDj、レンダリング画像データDk、および表示画像データDl等が格納される。また、メインメモリ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に格納されて更新される。
なお、後述する処理フローでは、操作子データ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>
実世界画像データ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の形状は球体表面である(図7A及び図7B参照)。そして、本実施形態における開口判定用データの形状は、矩形形状としてよい。この矩形形状の開口判定用データを、図7A及び図7Bで図示したような球体表面の中央部にマッピングすることにより、開口判定用データの各点と境界面の各点とを対応させることができる。
なお、本実施形態において開口判定用データは図7Aで示す球体表面の中央部に対応するデータのみであるため、仮想カメラ(第2の描画方法では、仮想世界描画用カメラ)の向きによっては、開口判定用データが存在しない場合がある。このように開口判定用データが存在しない場合は、実世界画像はそのまま描画される。すなわち、α値としては「1」が設定されているとして描画される。
境界面3上に作成される開口の画像処理については後述する。
<奥壁画像データDe>
奥壁画像データDeは、第2空間2に存在する奥壁BWに関するデータである。例えば、奥壁画像データDeは、奥壁BWの画像を生成するための画像データ、および当該奥壁BWを定義するポリゴンモデルの仮想空間上の位置を示すデータ等を含んでいる。
奥壁BWを定義するポリゴンモデルは、典型的には、仮想カメラ(第2の描画方法では、仮想世界描画用カメラ)の位置から伸びる鉛直軸を中心として、図7Aで示す球体の半径より大きな半径を有し、図7Aで示す球体の中央部と同じ形状のモデルである。すなわち、奥壁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のテクスチャデータは、例えば、図14A及び図14Bに示すように、敵オブジェクト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)との間は、デプス判定が無効となるように設定されている。
§3−2 画像処理例
次に、図17を参照して、情報処理部31の動作について説明する。まず、ゲーム装置10の電源(電源ボタン14F)がONされると、CPU311によってブートプログラム(図示せず)が実行され、これにより内蔵メモリまたは外部メモリ45やデータ保存用外部メモリ46に格納されているプログラムがメインメモリ32にロードされる。そして、当該ロードされたプログラムが情報処理部31(CPU311)で実行されることによって、図17に示すステップ(図17〜図19、図20A及び図20Bでは「S」と略称する)が実行される。なお、図17〜図19、図20A及び図20Bにおいては、本発明の画像処理に直接関連しない画像処理及びその他周辺の処理についての記載を省略する。
図17において、情報処理部31は、画像処理における初期設定を行い(ステップ51)、次のステップ52に処理を進める。例えば、情報処理部31は、仮想世界画像(仮想空間の画像)を生成するための仮想カメラの初期位置や初期方向を仮想カメラデータDjに設定し、当該仮想カメラが配置される仮想空間の座標軸(例えば、XYZ軸)を設定する。
次に、情報処理部31は、ゲーム装置10の各構成部より各種データを取得し(ステップ52)、次のステップ53に処理を進める。例えば、情報処理部31は、現在選択されている撮像部(本実施形態では外側撮像部23)によって撮像されたカメラ画像を用いて、実カメラ画像データDbを更新する。また、情報処理部31は、操作ボタン14やアナログスティック15を操作したことを示すデータを取得して、操作子データDa1を更新する。更に、情報処理部31は、角速度センサ40によって検出された角速度を示す角速度データを取得して、角速度データDa2を更新する。
次に、情報処理部31は、敵オブジェクト関連処理を実行し(ステップ53)、次のステップ54に処理を進める。以下、図18を参照して、敵オブジェクト関連処理について説明する。
図18において、情報処理部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は、敵オブジェクトデータDfに含まれる敵オブジェクト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をすり抜けるかのような演出を行うことができる(図9参照)。なお、所定のイベントとは、例えば、乱数や所定の間隔で定められた時間間隔であってもよいし、ゲーム上の所定条件が満たされたことであってもよい。そして、これらは、例えば、メインメモリ32に保持されている各種プログラム群Paによって設定されてもよい。
図17に戻り、上記ステップ53における敵オブジェクト関連処理の後、情報処理部31は、弾オブジェクト関連処理を行い(ステップ54)、次のステップ55に処理を進める。以下、図19を参照して、弾オブジェクト関連処理について説明する。
図19において、情報処理部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が仮想空間に存在しない状態にする)を行う。
図17に戻り、上記ステップ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に処理を進める。以下、図20A及び図20Bを参照して、表示画面の更新処理について説明する。図20Aは、第1の描画方法における表示画面の更新処理である。また、図20Bは、第2の描画方法における表示画面の更新処理である。
まず、第1の描画方法における表示画面の更新処理について説明する。
図20Aにおいて、情報処理部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に貼り付けられる実カメラ画像のテクスチャデータは、仮想カメラの視野範囲よりも領域の広い画像データである。
次に、情報処理部31は、仮想空間をレンダリングする処理により表示画像を生成し(ステップ82)、当該サブルーチンによる処理を終了する。例えば、情報処理部31は、境界面3(スクリーンオブジェクト)、敵オブジェクトEO、弾オブジェクトEO、及び奥壁BWが配置されている仮想空間をレンダリングした画像を生成し、当該画像を用いてレンダリング画像データDkに含まれる仮想空間のレンダリング画像データを更新する。また、情報処理部31は、仮想空間のレンダリング画像データを用いて表示画像データDlを更新する。以下、図21及び図22を用いて、当該レンダリング処理の一例について説明する。
図21は、仮想空間上における、敵オブジェクトEO、弾オブジェクトBO、境界面3(開口判定用データが設定されたスクリーンオブジェクト)及び奥壁BWの配置例を示す。また、図22は、図21における仮想カメラC0が原点から(X,Y,Z)=(0,0,1)方向に向いているとした場合における各オブジェクトの位置関係を示す。このように、敵オブジェクトEO、弾オブジェクトBO、境界面3及び奥壁BWが、それぞれ敵オブジェクトデータDf、弾オブジェクトデータDg、境界面データDd及び奥壁画像データDeに含まれる配置位置を示すデータに応じて配置されている。また、仮想空間には、仮想空間をレンダリングするための仮想カメラC0が、仮想カメラデータDjに含まれる配置方向及び配置位置を示すデータに応じて配置されている。
情報処理部31は、図21(または図22)に示されるとおり境界面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の形状は図7Aに示すように球体表面の中央部であるため、仮想カメラC0の視野方向によっては、開口判定用データが存在しない。この場合、疑似的にアルファ値を「0.2」を格納した開口判定用データが存在するものとして、上記処理を行う。つまり、開口判定用データが存在しない領域は、非開口領域を示すアルファ値「1」が格納されている領域として取り扱われる。
また、本実施形態における敵オブジェクトEOに対応する敵オブジェクトデータDfに含まれるシルエットデータDf2は、複数の平面ポリゴンがその法線方向を敵オブジェクトから見て各放射方向となるように設定されており、各平面ポリゴンには、敵オブジェクトをその方向から見たシルエット画像のテクスチャが適用される。したがって、本実施形態における画像処理プログラムでは、仮想空間画像における敵オブジェクトEOの影は、第2空間2における敵オブジェクトの向きが反映された画像として表現される。
また、情報処理部31は、照準カーソル画像データDmに含まれる画像データを仮想カメラC0の視野の中心(レンダリングする画像の中心)に優先して描画されるように上記レンダリング処理を行う。
以上の処理によって、情報処理部31は、仮想空間に配置された敵オブジェクトEO、弾オブジェクトBO、及び奥壁BWを透視投影でレンダリングし、仮想カメラC0から見た仮想世界画像(照準カーソルALを含んだ画像)を生成し、仮想空間のレンダリング画像データを更新する(ステップ82)。そして、更新した仮想空間のレンダリング画像データを用いて、表示画像データDlを更新する。
次に、第2の描画方法における表示画面の更新処理について説明する。
図20Bにおいて、情報処理部31は、上記ステップ52で取得した実カメラ画像をレンダリングする処理を行い(ステップ83)、次のステップ84に処理を進める。例えば、情報処理部31は、上記ステップ52で更新した実カメラ画像データDbを用いて、実世界画像データDcに含まれる実カメラ画像のテクスチャデータを更新する。そして、情報処理部31は、更新した実世界画像データDcを用いて、実カメラ画像をレンダリングした画像を生成し、生成した画像を用いて、レンダリング画像データDkに含まれる実カメラ画像のレンダリング画像データを更新する。以下、図23及び図24を用いて実カメラ画像をレンダリングする処理例について説明する。
本実施形態において情報処理部31は、図23に示すように、ゲーム装置10の実カメラから得られた実カメラ画像をテクスチャに設定し、当該テクスチャがマッピングされた平面ポリゴンを生成する。そして、情報処理部31は、実世界画像描画用カメラC1から、平行投影で上記平面ポリゴンをレンダリングした画像を実世界画像として生成する。ここで、上側LCD22の表示画面全面に、ゲーム装置10の実カメラから得られた実カメラ画像全面が表示される場合の実世界画像生成方法の一例について説明する。なお、本実施形態では上側LCD22の表示画面全体に本実施形態の合成画像(実世界画像と仮想世界画像との合成画像)が表示されるようにしたが、上側LCD22の表示画面の一部領域に合成画像が表示されるようにしてもよい。この場合には、この合成画像全体に実カメラ画像全体が表示されるようにする。
まず、上記平面ポリゴンを配置する仮想空間の座標の1単位に対して、iピクセルのテクスチャをマッピングする平面ポリゴンを考える。この場合、上記座標の1単位×1単位の領域に対して、iピクセル×iピクセルのテクスチャがマッピングされることになる。ここで、上側LCD22の表示画面が横Wdot×縦Hdotであって、Wdot×Hdotの表示画面全面と上記実カメラ画像のテクスチャ全面とが対応しているとする。つまり、カメラ画像のテクスチャデータのサイズが横Wピクセル×縦Hピクセルであるとする。
この場合、当該表示画面の1dot×1dotと上記実カメラ画像のテクスチャ1ピクセル×1ピクセルとが対応するように平面ポリゴンを配置することを考えればよく、図24に示すように上記座標を定めればよい。すなわち、上記カメラ画像のテクスチャが主面全面にマッピングされた平面ポリゴンの幅が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は、図20Bに示されるとおり、仮想空間をレンダリングする処理を行い(ステップ84)、次のステップ85に処理を進める。例えば、情報処理部31は、開口判定用データを考慮して、敵オブジェクトEO、弾オブジェクトBO、及び奥壁BWが配置されている仮想空間をレンダリングした画像を生成し、当該画像を用いて、レンダリング画像データDkに含まれる仮想空間のレンダリング画像データを更新する。以下、図25〜図27を用いて、当該レンダリング処理の一例について説明する。
図25は、仮想空間上における、敵オブジェクトEO、弾オブジェクトBO、境界面3(開口判定用データ)及び奥壁BWの配置例を示す。また、図26は、図25における仮想カメラ(仮想世界描画用カメラ)が原点から(X,Y,Z)=(0,0,−1)方向に向いているとした場合における各オブジェクトの位置関係を示す。このように、敵オブジェクトEO、弾オブジェクトBO、境界面3及び奥壁BWが、それぞれ敵オブジェクトデータDf、弾オブジェクトデータDg、境界面データDd及び奥壁画像データDeに含ま
れる配置位置を示すデータに応じて配置されているとする。また、仮想空間には、仮想空間をレンダリングするための仮想世界描画用カメラC2が、仮想カメラデータDjに含まれる配置方向及び配置位置を示すデータに応じて配置されている。
ここでまず、境界面3(開口判定用データ)の位置について説明する。上述したとおり、本実施形態における画像処理プログラムでは、開口判定用データと実世界画像(実カメラ画像のレンダリング画像データ)の色情報とが掛け算されることで、開口が付与された実画像が生成される。したがって、例えば、実カメラ画像のレンダリング画像データ(図23及び図24の平面ポリゴンの位置関係を参照)の横1座標×縦1座標と、仮想空間における境界面3(具体的には、開口判定用データ)の横1座標×縦1座標とが対応しているとする。つまり、図25または図26に示す仮想世界描画用カメラC2から境界面3を透視投影により見たときに、仮想世界描画用カメラC2による境界面3の視野範囲が実カメラ画像のレンダリング画像データの横×縦のサイズに対応しているものとする。
図27は、仮想世界描画用カメラC2を境界面3との位置関係の例を示す。原点から(X,Y,Z)=(0,0,−1)方向に向いた仮想世界描画用カメラC2により境界面3を透視投影することを考える。この場合、図27に示す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は、図25(又は図26)に示されるとおり境界面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に含まれる画像データが描画されるようレンダリングされる。そして、後述のステップ85の合成処理により、上側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の形状は図7Aに示すように球体表面の中央部であるため、仮想世界描画用カメラC2の視野方向によっては、開口判定用データが存在しない。この場合、疑似的にアルファ値を「0.2」を格納した開口判定用データが存在するものとして、上記処理を行う。つまり、開口判定用データが存在しない領域は、非開口領域を示すアルファ値「1」が格納されている領域として取り扱われる。
なお、本実施形態における敵オブジェクトEOに対応する敵オブジェクトデータDfに含まれるシルエットデータDf2は、複数の平面ポリゴンがその法線方向を敵オブジェクトから見て各放射方向となるように設定されており、各平面ポリゴンには、敵オブジェク
トをその方向から見たシルエット画像のテクスチャが適用される。したがって、本実施形態における画像処理プログラムでは、仮想空間画像における敵オブジェクトEOの影ESは、第2空間2における敵オブジェクトの向きが反映された画像として表現される。
以上の処理によって、情報処理部31は、仮想空間に配置された敵オブジェクトEO、弾オブジェクトBO、及び奥壁BWを透視投影でレンダリングし、仮想世界描画用カメラC2から見た仮想世界画像を生成し、仮想空間のレンダリング画像データを更新する(ステップ84)。なお、当該処理によって生成される画像は、図28に示される表示画像から実世界画像を除いた画像である。
図20Bに戻り、次に、情報処理部31は、実世界画像と仮想空間画像とを合成した表示画像を生成し(ステップ85)、当該サブルーチンによる処理を終了する。
例えば、情報処理部31は、実カメラ画像のレンダリング画像データと仮想空間のレンダリング画像とを、仮想空間のレンダリング画像を優先して、合成することによって、実世界画像と仮想空間画像とが合成された画像を生成する。そして、情報処理部31は、当該合成画像の中心(仮想世界描画用カメラC2の視野の中心)に、照準カーソル画像データに含まれる画像データを優先して合成することによって表示画像(図28)を生成する。図28は、第1の描画方法または第2の描画方法により生成される表示画像の一例を示す。なお、情報処理部31は、仮想空間のレンダリング画像データに仮想空間画像が格納されていない場合、カメラ画像のレンダリング画像データに格納される実世界画像をそのまま表示画像データDlに格納すればよい。
以上により、第1の描画方法または第2の描画方法により表示画像の更新に関する処理(サブルーチン)が完了する。
図17に戻り、上記ステップ57における表示画像の更新に関する処理の後、情報処理部31は、更新した表示画像を上側LCD22に表示して(ステップ58)、次のステップ59に処理を進める。例えば、情報処理部31のCPU311は、上記ステップ57により更新された表示画像データDl(表示画像)をVRAM313に格納する。そして、情報処理部31のGPU312が、VRAM313に描画された表示画像を上側LCD22に出力することによって、上側LCD22に当該表示画像が表示される。
次に、情報処理部31は、ゲームを終了するか否かを判断する(ステップ59)。ゲームを終了する条件としては、例えば、上記の所定の条件(ゲームクリアまたはゲームオーバー)が満たされたことや、ユーザがゲームを終了する操作を行ったこと等がある。情報処理部31は、ゲームを終了しない場合、上記ステップ52に戻って処理を繰り返す。一方、情報処理部31は、ゲームを終了する場合、当該フローチャートによる処理を終了する。
§3−3 実施形態に係る画像処理の作用及び効果
このように、本実施形態に係る画像処理プログラムでは、実カメラから得られた実世界画像と、当該実世界画像の背後に存在するオブジェクトを含む仮想空間画像とが合成されて表示される。
したがって、本実施形態に係る画像処理プログラムは、実世界の画像を用いた背景に非現実を表す描画を行うことでユーザの興味を引くことができる画像を生成することができる。また、実世界の向こう側にさらに仮想世界が存在するように感じさせることができる。これは、ゲーム世界の奥行感の向上にもつながる。
また、本実施形態では、実世界画像に開口が生じて、その開口を通って仮想オブジェクトが出現したり、仮想オブジェクトの影が実世界画像に表示されたりするなど、仮想オブジェクトが実世界画像に対して影響を与えるので、実世界画像が単なる背景ではなく、実世界が仮想世界と関係しているかのような感覚を与えることができる。
また、当該合成されて表示される画像における当該実世界画像の背後に存在するオブジェクト(例えば、第2空間2に存在する敵オブジェクトEO)は、実世界画像(境界面3)に開口が存在する領域においては、実像が表示される。また、当該オブジェクトは、実世界画像に開口が存在しない領域においては、影画像が表示される(図11参照)。更に、当該実像及び影画像は、当該オブジェクトの仮想空間上における配置方向または、移動方向に応じた向きに対応する画像である。
したがって、本実施形態に係る画像処理プログラムは、実世界画像の更に背後に存在するオブジェクトの数や移動方向等の動向をユーザが認識することができる画像を生成することができる。
また、本実施形態に係る画像処理プログラムでは、奥壁BWの画像データとして、宇宙の画像等の非現実空間の画像が用いられ得る。当該非現実空間の画像は、実世界画像の開口を通して視認されうる。当該開口は、仮想空間上の位置が特定される。そして、実カメラの向きと仮想カメラの向きは対応づけられている。
したがって、本実施形態に係る画像処理プログラムは、実カメラの向きに応じた位置に開口を設けることができ、実世界画像の同じ位置に開口を表現することができる。すなわち、本実施形態に係る画像処理プログラムは、実カメラの向きを変えても現実空間の同じ位置に開口が表現されるため、現実空間と非現実空間とが繋がったかのごとくユーザに認識させる画像を生成することができる。
また、開口が表現された実世界画像は、実カメラから得られる実世界画像とアルファ値との掛け算によって生成される。
したがって、本実施形態に係る画像処理プログラムは、簡便な方法で開口を表現及び生成することができる。
また、敵オブジェクトEOが境界面3を通過することにより生成する実世界画像の開口は、敵オブジェクトデータDfに含まれる開口形状データDf3を開口判定用データの所定の位置に掛け算することで生成される。
したがって、本実施形態に係る画像処理プログラムは、簡便な方法で衝突したキャラクタの形状に対応した開口を設定することができる。
また、本実施形態に係る画像処理プログラムでは、アルファ値の比較によって、影画像の描画を実現することができる。また、シルエットデータDf2に設定されたアルファ値の変更によって、影画像の描画のオンまたはオフを切り替えることができる。
したがって、本実施形態に係る画像処理プログラムは、影画像の描画をGPUに任せることができ、また、影の表示または非表示を単純な操作で切り替えることができる。
§4 変形例
上述した実施例では、情報処理部31は、敵オブジェクトEOを出現させる場合、特に当該敵オブジェクトEOの出現演出処理を実行しないが、当該敵オブジェクトEOの出現
演出処理を実行してもよい。図29は、当該出現演出処理の実行例を示す。図29に示されるとおり、当該出現演出処理では、実世界画像の所定範囲が開口として矩形に切り取られ、当該矩形が第2空間2に倒れこみ、生成された開口から敵オブジェクトEOが出現する。情報処理部31は、図18のステップ62における敵オブジェクトデータDfの生成に際して、図29に示されるような敵オブジェクトEOの出現演出処理を行ってもよい。図29における第2空間2に倒れた矩形部分は、実世界画像の所定範囲を切り取ったテクスチャを、当該所定範囲の大きさに対応した平面ポリゴンに貼り付け、当該平面ポリゴンに所定の動作をさせることで実現される。また、図29における開口部分は、上述のとおり、開口判定用データの所定の位置のアルファ値を「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の向きを検知してもよい。 また、上述した実施例では、上側LCD22には、外側撮像部23または内側撮像部24により取得したカメラ画像CIに基づいた実世界の平面画像(上述した立体視可能な画像とは反対の意味での平面視の画像)が表示されるが、裸眼で立体視可能な画像(立体画像)が表示してもよい。例えば、上述したように、ゲーム装置10は、外側左撮像部23aおよび外側右撮像部23bから取得したカメラ画像を用いた立体視可能な画像(立体画像)を上側LCD22に表示することが可能である。このとき、上側LCD22には、立体画像(実世界画像)の更に背後に存在する世界観をユーザに体験させる画像が表示される。
この場合、情報処理部31は、カメラ画像CIとして外側左撮像部23aから得られた左目用画像および外側右撮像部23bから得られた右目用画像を用いて、上述した画像処理を行う。
具体的に、第1の描画方法では、図20Aに示したステップ81の画像処理において、情報処理部31は、外側左撮像部23aから得られた左目用画像(テクスチャデータ)および外側右撮像部23bから得られた右目用画像(テクスチャデータ)をそれぞれ所定の距離ずらして境界面3に貼りつける。そして、図20Aに示したステップ82の画像処理において、情報処理部31は、仮想空間に配置された各オブジェクトを、2つの仮想カメラ(ステレオカメラ)から透視投影することによって、それぞれ左目用仮想世界画像と右
目用仮想世界画像とを得る。これら左目用仮想世界画像と右目用仮想世界画像とが左目用表示画像および当該右目用表示画像となる。そして、情報処理部31のGPU312が、当該左目用表示画像および当該右目用表示画像を上側LCD22に出力することで、上側LCD22には、立体画像が表示される。
また、具体的に、第2の描画方法では、図20Bに示したステップ83の画像処理において、情報処理部31は、外側左撮像部23aから得られた左目用画像および外側右撮像部23bから得られた右目用画像を用いて、それぞれの実カメラ画像のレンダリングした画像(左目用の実世界画像と右目用の実世界画像)を生成する。また、図20Bに示したステップ84の画像処理において、情報処理部31は、仮想空間に配置された各オブジェクトを、2つの仮想世界描画用カメラ(ステレオカメラ)から透視投影することによって、それぞれ左目用仮想世界画像と右目用仮想世界画像とを得る。そして、図20Bに示したステップ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および当該他の装置が協働することによって実行されてもよい。一例として、他の装置が図17におけるステップ52〜ステップ57までの処理を実行し、ゲーム装置10が図17におけるステップ58及びステップ59の処理を実行するように協働してもよい。このように、上記画像における処理ステップの少なくとも一部を他の装置で行うことによって、上述した画像処理と同様の処理が可能となる。このように、上述した画像処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。
また、上述した実施例では、ゲーム装置10の情報処理部31が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、ゲーム装置10が備える専用回路によって上記処理の一部または全部が行われてもよい。
また、上述したゲーム装置10の形状や、それに設けられている各種操作ボタン14、アナログスティック15、タッチパネル13の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した画像処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず他の順序や値であっても、本発明を実現できることは言うまでもない。
また、上記画像処理プログラム(ゲームプログラム)は、外部メモリ45やデータ保存用外部メモリ46等の外部記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置10に供給されてもよい。また、上記プログ
ラムは、ゲーム装置10内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを一時的に記憶する揮発性メモリでもよい。
また、表示デバイスはヘッドマウントディスプレイであってもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
§5 補足
なお、以上までの説明において、本発明に係る画像処理プログラム及び当該画像処理プログラムを実行する画像処理装置の一実施形態について説明したが、本発明に係る画像処理システム及び画像処理方法の一実施形態についても同様に説明することができる。つまり、上記画像処理プログラムの各処理を実行するシステムが本発明に係る画像処理システムの一実施形態である。また、上記画像処理プログラムの各処理を各ステップとする手順が本発明に係る画像処理方法の一実施形態である。