(第1の実施形態)
[ゲーム装置の構成]
以下、本発明の実施形態の一例(以下、第1の実施形態と称する)に係るゲーム装置について説明する。図1、及び図2は、ゲーム装置10の外観を示す平面図である。ゲーム装置10は携帯型のゲーム装置である。図1、及び図2は、開いた状態(開状態)におけるゲーム装置10を示している。図1は、開状態におけるゲーム装置10の正面図であり、図2は、開状態におけるゲーム装置10の右側面図である。ゲーム装置10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、交換可能なメモリカード内に記憶され、又は、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
まず、図1〜図2を参照して、ゲーム装置10の外観構成について説明する。図1〜図2に示されるように、ゲーム装置10は、下側ハウジング11、及び上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。
[下側ハウジングの説明]
まず、下側ハウジング11の構成について説明する。図1、及び図2に示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、及び、マイクロフォン用孔18が設けられる。以下、これらの詳細について説明する。
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD12の画素数は、例えば、320dot×240dot(横×縦)であってもよい。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCD12として、任意の解像度の表示装置を利用することができる。
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施形態では、タッチパネル13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル13として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング11の上側面には挿入口17(図1に示す破線)が設けられている。挿入口17は、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッチペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である。
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。図1に示されるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、及びスタートボタン14Lが、設けられる。十字ボタン14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、及びスタートボタン14Lには、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは選択操作等に用いられ、各操作ボタン14B〜14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフするために用いられる。
アナログスティック15は、方向を指示するデバイスであり、アナログスティック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティック15のキートップがスライドした方向に移動される。なお、アナログスティック15として、上下左右、及び斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いてもよい。
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク(図5参照)が設けられ、当該マイクがゲーム装置10の外部の音を検出する。
また、下側ハウジング11の上側面の右端部には、図2に示すようにRボタン14Hが設けられている。さらに、下側ハウジング11の上側面の左端部には、図示はしていないが、Lボタン14Gが設けられている。Lボタン14G、及びRボタン14Hは、例えば、撮像部のシャッターボタン(撮影指示ボタン)として機能することができる。また、下側ハウジング11の左側面には、音量ボタン14Iが設けられる(図示せず)。音量ボタン14Iは、ゲーム装置10が備えるスピーカの音量を調整するために用いられる。
図1に破線で示されるように、下側ハウジング11の左側面には開閉可能なカバー部で覆われる挿入口11Cが設けられる。この挿入口11Cの内側には、ゲーム装置10とデータ保存用外部メモリ46とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ46は、コネクタに着脱自在に装着される。データ保存用外部メモリ46は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。
また、図1に破線で示されるように、下側ハウジング11の上側面には、ゲーム装置10とゲームプログラムを記録した外部メモリ45を挿入するための挿入口11Dが設けられ、その挿入口11Dの内部には、外部メモリ45と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ45がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。
また、図1に示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16Aが設けられる。さらに、図示はしていないが、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第2LED16Bは、無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(図2参照)。
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
[上側ハウジングの説明]
次に、上側ハウジング21の構成について説明する。図1、及び図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23a、及び外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、及び、3Dインジケータ26が設けられる。以下、これらの詳細について説明する。
図1に示すように、上側LCD22は上側ハウジング21に収納される。上側LCD22の画素数は、例えば、800dot×240dot(横×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施形態では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。又は、左目用画像と右目用画像とが時分割で交互に表示される方式の表示装置であってもよい。また、本実施形態では、上側LCD22は裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目、及び右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCD22はパララックスバリア方式のものとする。上側LCD22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いてユーザの左目に左目用画像を、ユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである)。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチ25によって行われる。
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(外側撮像部(左)23a、及び外側撮像部(右)23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bの撮像方向は、いずれも当該外側面21Dの外向きの法線方向である。外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。外側撮像部(左)23a、及び外側撮像部(右)23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図1の破線で示されるように、外側撮像部23を構成する外側撮像部(左)23a、及び外側撮像部(右)23bは、上側LCD22の画面の横方向と平行に並べられて配置される。すなわち、2つの撮像部を結んだ直線が上側LCD22の画面の横方向と平行になるように、外側撮像部(左)23a、及び外側撮像部(右)23bが配置される。図1の破線で示す23a、及び23bは、上側ハウジング21の内側面とは反対側の外側面に存在する外側撮像部(左)23a、及び外側撮像部(右)23bをそれぞれ表している。図1に示すように、ユーザが上側LCD22の画面を正面から視認した場合に、外側撮像部(左)23aは左側に外側撮像部(右)23bは右側にそれぞれ位置している。外側撮像部23をステレオカメラとして機能させるプログラムが実行されている場合、外側撮像部(左)23aは、ユーザの左目で視認される左目用画像を撮像し、外側撮像部(右)23bは、ユーザの右目で視認される右目用画像を撮像する。外側撮像部(左)23a、及び外側撮像部(右)23bの間隔は、人間の両目の間隔程度に設定され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、外側撮像部(左)23a、及び外側撮像部(右)23bの間隔は、この範囲に限らない。
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。図1〜図2に示されるように、3D調整スイッチ25は、上側ハウジング21の内側面、及び右側面の端部に設けられ、ユーザが上側LCD22を正視した場合に、当該3D調整スイッチ25を視認できる位置に設けられる。また、3D調整スイッチ25の操作部は、内側面、及び右側面の両方に突出しており、どちらからも視認、及び操作することができる。なお、3D調整スイッチ25以外のスイッチは全て下側ハウジング11に設けられる。
図3は、図1に示す上側ハウジング21のA−A’線断面図である。図3に示すように、上側ハウジング21の内側面の右端部には、凹部21Cが形成され、当該凹部21Cに3D調整スイッチ25が設けられる。3D調整スイッチ25は、図1、及び図2に示されるように、上側ハウジング21の正面、及び右側面から視認可能に配置される。3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。
図4Aから図4Cは、3D調整スイッチ25のスライダ25aがスライドする様子を示す図である。図4Aは、3D調整スイッチ25のスライダ25aが最下点(第3の位置)に存在する様子を示す図である。図4Bは、3D調整スイッチ25のスライダ25aが最下点よりも上方位置(第1の位置)に存在する様子を示す図である。図4Cは、3D調整スイッチ25のスライダ25aが最上点(第2の位置)に存在する様子を示す図である。
図4Aに示すように、3D調整スイッチ25のスライダ25aが最下点位置(第3の位置)に存在する場合、上側LCD22は平面表示モードに設定され、上側LCD22の画面には平面画像が表示される(なお、上側LCD22を立体表示モードのままとして、左目用画像と右目用画像を同一の画像とすることにより平面視表示してもよい)。一方、図4Bに示す位置(最下点より上側の位置(第1の位置))から図4Cに示す位置(最上点の位置(第2の位置))までの間にスライダ25aが存在する場合、上側LCD22は立体表示モードに設定される。この場合、上側LCD22の画面には立体視可能な画像が表示される。スライダ25aが第1の位置から第2の位置の間に存在する場合、スライダ25aの位置に応じて、立体画像の見え方が調整される。具体的には、スライダ25aの位置に応じて、右目用画像、及び左目用画像の横方向の位置のずれ量が調整される。3D調整スイッチ25のスライダ25aは、第3の位置で固定されるように構成されており、第1の位置と第2の位置との間では上下方向に任意の位置にスライド可能に構成されている。すなわち、スライダ25aが第1の位置と第2の位置との間に位置するときには、3D調整スイッチ25が、スライダ25aの位置に応じたアナログ値を出力することが可能な装置として機能する。また、スライダ25aは、第3の位置において、3D調整スイッチ25を形成する側面から図4Aに示す横方向に突出した凸部(図示せず)によって固定されて、所定以上の力が上方に加わらないと第3の位置よりも上方にスライドしないように構成されている。第3の位置から第1の位置にスライダ25aが存在する場合、立体画像の見え方は調整されないが、これはいわゆるあそびである。他の例においては、あそびをなくして、第3の位置と第1の位置とを同じ位置としてもよい。また、第3の位置を第1の位置と第2の位置の間としてもよい。その場合、スライダを第3の位置から第1の位置の方向に動かした場合と、第2の方向に動かした場合とで、右目用画像、及び左目用画像の横方向の位置のずれ量の調整する方向が逆になる。
なお、3D調整スイッチ25は、後述する表示モード制限の設定に関わらずに平面表示モードと立体表示モードとの切り替えや、立体感を調整する設定を行うことができる。ただし、後述で明らかとなるが、本実施形態では、3D調整スイッチ25による切り替えや設定よりも後述する表示モード制限の設定が優先する。また、他の一実施形態では、3D調整スイッチ25として、上記第1の位置から第3の位置まで指示位置を回転させることのできる回転式のダイアルスイッチなど、スライドスイッチ以外の任意の機械式のスイッチを用いてもよい。
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。なお、3Dインジケータ26は、上側LCD22が立体表示モードになっており、且つ、立体画像を表示するプログラム処理が実行されているとき(すなわち、3D調整スイッチ25が上記第1の位置から上記第2の位置にあるときに、左目用画像と右目用画像が異なるような画像処理が実行されているとき)に限り、点灯するようにしてもよい。図1に示されるように、3Dインジケータ26は、上側ハウジング21の内側面に設けられ、上側LCD22の画面近傍に設けられる。このため、ユーザが上側LCD22の画面を正視した場合、ユーザは3Dインジケータ26を視認しやすい。従って、ユーザは上側LCD22の画面を視認している状態でも、上側LCD22の表示モードを容易に認識することができる。
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ44からの音声がこのスピーカ孔21Eから出力される。
[ゲーム装置の内部構成]
次に、図5を参照して、ゲーム装置10の内部の電気的構成について説明する。図5は、ゲーム装置10の内部構成を示すブロック図である。図5に示すように、ゲーム装置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等を含む情報処理手段である。情報処理部31のCPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ45やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、情報処理部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.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール36、及びローカル通信モジュール37は情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
また、情報処理部31には、加速度センサ39が接続される。加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサ39は、下側ハウジング11の内部に設けられる。加速度センサ39は、図1に示すように、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサ39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ39は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
また、情報処理部31には、RTC38、及び電源回路41が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路41は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
また、情報処理部31には、I/F回路42が接続される。I/F回路42には、マイク43、及びスピーカ44が接続される。具体的には、I/F回路42には、図示しないアンプを介してスピーカ44が接続される。マイク43は、ユーザの音声を検知して音声信号をI/F回路42に出力する。アンプは、I/F回路42からの音声信号を増幅し、音声をスピーカ44から出力させる。また、タッチパネル13はI/F回路42に接続される。I/F回路42は、マイク43、及びスピーカ44(アンプ)の制御を行う音声制御回路と、タッチパネル13の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換、及びD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。タッチ位置データは、タッチパネル13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、及び、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Lに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に従った処理を実行する。
下側LCD12、及び上側LCD22は情報処理部31に接続される。下側LCD12及び上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画像)を表示させる。
具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右目用画像と左目用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これにより、右目用画像、及び左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
外側撮像部23、及び内側撮像部24は、情報処理部31に接続される。外側撮像部23、及び内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。スライダ25aの位置は、3D調整スイッチ25から送信される電気信号で示されるアナログ値に基づいて情報処理部31が検出することが可能である。すなわち、3D調整スイッチ25は、ユーザによるスライダ25aに対する操作入力をアナログ入力として検出するためのスイッチである。
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。以上がゲーム装置10の内部構成の説明である。
本実施形態に係るゲーム装置10における動作についてより詳細に説明する。本実施形態に係る上側LCD22は、上述したように平面表示モードと立体表示モードとの間で表示モードを切り替えることが可能な表示装置である。そして、本実施形態では、ユーザの操作に応じて表示装置の表示モードを平面表示モードに制限する。
より詳細には、本実施形態では、ゲーム装置10の本体設定をするためのプログラム(以下、本体設定プログラムと称する)を実行して表示モードの制限を設定したときに、表示モードが平面表示モードに制限されるものとする。なお、本体設定プログラムの実行はランチャープログラムを用いて選択されたときに実行されるが、ランチャープログラムについては後に詳述する。
[本体設定プログラム]
本体設定プログラムとは、本体情報を設定するための処理をCPU311に実行させるためのプログラムである。本体情報とは、データ保存用内部メモリ35、又は外部メモリ45などの記憶媒体に記憶されているプログラムをCPU311が実行する際に、当該CPU311が必要に応じて使用するための情報である。本体情報の具体的な一例としては、例えば、現在時刻や、ユーザ名(ゲーム装置10の所有者)、無線通信モジュール36、又はローカル通信モジュール37を用いたネットワーク通信をするための情報(例えば、IPアドレスの設定情報)などが挙げられる。また、後述する表示モード制限の設定に関する情報も本体情報である。本実施形態では、本体情報はデータ保存用内部メモリ35に記憶されるものとする。ただし、本体情報は、CPU311がプログラムを実行する際に必要に応じて読み出すことが可能であれば、どのような記憶媒体に記憶されていてもよい。
表示モードの制限についてより具体的に説明する。ユーザによって本体設定プログラムの実行が選択されると、現在時刻の設定、ユーザ名の設定、及び表示モード制限の設定などの本体情報の設定項目を示すボタンが下側LCD12に表示される。また、本体情報の設定の終了を示すボタンも下側LCD12に表示される。このとき、いずれかの設定項目を示すボタンにタッチされると、タッチされたボタンで示される設定項目が選択状態となる。そして、選択状態となったボタンで示される設定項目の内容を示す画像が上側LCD22に表示される。設定項目の内容を示す画像とは、例えば、設定項目が現在時刻の設定である場合には時計を示す表示オブジェクトを示す画像となる。なお、設定項目の内容を示す画像は、当該設定項目に応じて立体画像として表示される場合もある。
そして、選択状態となっているボタンに再度タッチされると、当該ボタンによって示される設定項目を設定するための処理が開始される。例えば、ユーザによって表示モード制限の設定項目が選択状態にされた後、当該設定項目を示すボタンに再びタッチされると、表示モード制限の設定のための処理が開始される。なお、設定項目の数が多く、全ての設定項目を下側LCD12に表示できない場合には、スライド操作をすることによって所望の設定項目を示すボタンを表示できるようにしてもよい。
表示モード制限の設定のための処理が開始されると、表示モード制限の設定が認められたユーザによって当該処理が開始されたか否かを判断する認証処理が開始される。認証処理が開始されると、暗証番号の入力画面を表示し、暗証番号の入力をユーザから受け付ける。受け付けた暗証番号が、所定の暗証番号と一致する場合には、認証処理が正常に完了したと判断され、表示モード制限の設定画面を表示する。一方、受け付けた暗証番号が、所定の暗証番号と一致しない場合には、認証処理が正常に完了できないと判断され、本体情報の設定項目の表示に戻る。なお、受け付けた暗証番号が所定の暗証番号と一致しない場合には、所定回数だけ暗証番号を受け付けし直すようにしてもよい。また、所定の暗証番号は、ゲーム装置10に固有の番号を予め記憶させてもよいし、本体情報の1つとして予め設定できるようにしてもよい。さらに、暗証番号を予め設定する場合にも、既に記憶されている暗証番号(例えば、初期値として記憶されている暗証番号、或いはユーザによって設定された暗証番号)と一致する暗証番号を受け付けたときに、設定できるようにしてもよい。
表示モード制限の設定画面では、「表示モード制限あり」を示すボタンと、「表示モード制限なし」を示すボタンの2つのボタンが下側LCD12に少なくとも表示される。このとき、表示モード制限の設定画面で表示される2つのボタンのうち、現在の設定状態を示すボタンを強調表示して、現在の設定状態がユーザに視認されるようにしてもよい。
そして、「表示モード制限あり」のボタンにタッチされると、平面表示モードのみへの制限が選択されたと判断される。そして、表示モードが平面表示モードのみに設定され、制限される。一方、「表示モード制限なし」の設定を示すボタンにタッチされると、平面視表示モードのみへの制限の解除が選択されたと判断される。そして、平面表示モード、及び立体表示モードの間で表示モードを切り替えることが可能であることが設定され、平面表示モードのみへの制限が解除される。「表示モード制限あり」の設定を示すボタン、又は「表示モード制限なし」の設定を示すボタンにタッチされ、設定が完了すると、表示モード制限の設定のための処理を完了し、本体情報の設定項目の表示に戻る。このとき、タッチされたボタンのいずれかのみを所定時間だけ強調表示してから本体情報の設定項目の表示に戻るようにして、設定結果がユーザに視認されるようにしてもよい。そして、本体情報の設定項目を表示している際に、本体情報の設定を終了するボタンがユーザによってタッチされると、本体設定プログラムを終了する。
なお、本実施形態では、設定項目や選択項目の選択、及び暗証番号の入力の受け付けなどは、上述の説明から明らかなように下側LCD12に表示されたボタンにタッチしたときに行われる。具体的には、それぞれの項目や番号を示すボタンの画像を必要に応じて下側LCD12に表示した後、タッチパネル制御回路からタッチ位置データを逐次取得する。そして、取得したタッチ位置データに基づき、それぞれのボタンの画像の表示位置に対応するタッチパネル13上の位置にタッチされたか否かが判断される。いずれかのボタンの画像にタッチされたと判断されたときに、タッチされたボタンに応じた項目の選択や暗証番号の入力などが行われる。ただし、下側LCD12に表示されたボタンを、操作ボタン14を操作して選択、及び決定することにより、項目の選択や暗証番号の入力などを行うようにしてもよい。また、タッチパネル13、及び操作ボタン14の両方を用いて項目の選択、決定、及び暗証番号の入力などを行うようにしてもよい。また、下側LCD12にはボタンの画像の代わりにアイコンを表示してもよい。
本実施形態では、「表示モード制限あり」に設定されると、どのようなプログラムを実行しているときでも、上側LCD22の表示モードが平面表示モードに制限され、平面画像のみが表示される。
[アプリケーションプログラム、及びシステムプログラム]
本実施形態に係るプログラムは、アプリケーションプログラムと、システムプログラムとに大別される。アプリケーションプログラムは、上側LCD22、及び下側LCD12の少なくともいずれか一方に表示される画像を生成する処理をCPU311に実行させるプログラムである。
アプリケーションプログラムとしては、後述するランチャープログラム、及びゲームプログラムが該当する。また、上述した本体設定プログラムもアプリケーションプログラムに該当する。なお、アプリケーションプログラムとしては、外側撮像部23や内側撮像部24を用いて写真を撮像するためのプログラムや、似顔絵を作成するためのプログラムなど、少なくとも立体画像を表示することができる上側LCD22などの表示装置に表示させる画像を生成する処理をCPU311に実行させる任意のプログラムが該当する。
一方、システムプログラムは、ゲーム装置10に電源が投入されている間を通じて常に実行され続けるプログラムであって、上述したアプリケーションプログラムをCPU311が実行しているときも当該CPU311によって平行して実行されるプログラムである。より具体的には、システムプログラムは、上側LCD22を制御する処理をCPU311に平行して実行させるプログラムである。
[ランチャープログラム]
まず始めに、上述したランチャープログラムについてより詳細に説明する。本実施形態に係るランチャープログラムは、データ保存用内部メモリ35や外部メモリ45に記憶されている他のアプリケーションプログラムをユーザに選択的に実行させる処理をCPU311に実行させるプログラムである。ランチャープログラムは、ゲーム装置10に電源が投入されると自動的に実行される。ランチャープログラムが実行されると、データ保存用内部メモリ35や外部メモリ45など、ゲーム装置10においてCPU311によりアクセス可能な記憶媒体が参照される。CPU311は、アクセス可能な記憶媒体を参照し、ユーザに選択させることが可能な所定のアプリケーションプログラムを判断する。ここで、ユーザに選択させることが可能なアプリケーションプログラムには、ランチャープログラムは含まれない。すなわち、ランチャープログラムは、アプリケーションプログラムの一種であるが、ゲーム装置10に電源が投入されている間は、自動的に実行されるプログラムであり、その実行をユーザに選択させることのできるアプリケーションプログラムではない。ただし、ゲーム装置10に外部メモリ45が挿入された状態で、電源が投入されたときに、当該外部メモリ45に記憶されているアプリケーションプログラムをランチャープログラムで選択することなく自動的に実行するように本体情報を設定することは可能である。
ユーザに選択させることが可能な所定のアプリケーションプログラムが判断されると、ユーザに選択させるために、これらのアプリケーションプログラムが上側LCD22、及び下側LCD12に表示される。具体的には、ユーザに選択させることが可能なアプリケーションプログラムを示すアイコンを下側LCD12に表示させる。本実施形態では、所定のアプリケーションプログラムを示すアイコンを横一列に等間隔で配置したアイコン列が下側LCD12に表示されるものとする。このとき、ユーザは、下側LCD12に表示されているアイコン列を横方向にスライドさせるようにタッチパネル13上のタッチ位置をスライドさせてアイコン列を横方向にスクロールさせることが可能である。そして、ユーザによってスライドさせられたアイコン列に含まれるアイコンのうち下側LCD12の横方向の略中央に表示されるアイコンで示されるアプリケーションプログラムが選択状態となる。
このように、アイコン列が下側LCD12に表示される一方で、選択状態となっているアプリケーションプログラムの内容を示す内容情報が上側LCD22に表示される。内容情報とは、具体的には、アプリケーションプログラムによって提供される内容を示す画像、動画、表示オブジェクト、及び音声などを示すデータであって、それぞれのアプリケーションプログラムに含まれる情報のことである。例えば、選択されているアプリケーションプログラムが、レースゲームのプログラムである場合、ゲーム中に登場する車を示す表示オブジェクトのデータが内容情報として含まれることが考えられる。このような内容情報を含むアプリケーションプログラムが選択状態となっているときには、車の表示オブジェクトが上側LCD22に表示される。また、アプリケーションプログラムの中には立体視可能な画像を示すデータを内容情報として含むものもある。
従って、下側LCD12に表示されているアイコン列がユーザによってスライドさせられることに応じて、横方向の略中央に位置するアイコンが入れ替わり、選択状態となっているアプリケーションプログラムが切り替えられる。そして、選択状態となっているアプリケーションプログラムの切り替えに応じて、上側LCD22に表示される内容情報も切り替え後のアプリケーションプログラムの内容情報に切り替わる。さらに、選択状態となっているアプリケーションプログラムのアイコンにタッチされると、当該プログラムが実行するプログラムとして設定される。ランチャープログラムは、実行するアプリケーションプログラムが設定されると、設定されたプログラムを実行する前に表示モード制限の設定を確認する処理をCPU311に実行させる。
まず、表示モードが平面表示モードのみに制限されていることが確認された場合について説明する。表示モードが平面表示モードのみに制限されていることが確認された場合には、実行するアプリケーションプログラムが、立体視可能な画像(以下、立体画像と称する)を上側LCD22に表示させるための処理を含むプログラムであるか否かが判断される。実行するアプリケーションプログラムが立体画像を上側LCD22に表示させるための処理を含むプログラムと判断された場合には、平面表示モードのみへの制限を解除するか否かを確認する画面が下側LCD12に表示される。
制限の解除の確認画面では、まず始めに、平面表示モードを示すボタン、及び立体表示モードを示すボタンの2つのボタンが下側LCD12に少なくとも表示される。そして、平面表示モードを示すボタンにタッチされると、平面表示モードのみへの制限を解除しない選択がされたと判断される。そして、平面表示モードのみへの制限を解除しないまま、アプリケーションプログラムが実行される。
一方、立体表示モードを示すボタンにタッチされると、平面表示モードへの制限の解除が選択されたと判断される。平面表示モードへの制限の解除が選択されたと判断されると、表示モード制限の設定のための処理を開始したときと同様に、認証処理が開始される。この場合に開始される認証処理は、立体画像の表示の対象として認められている適切なユーザを認証するための処理である。しかしながら、具体的な処理の内容は、上述した認証処理と同様である。すなわち、暗証番号の入力画面を表示して、暗証番号の受け付けを開始する。そして、受け付けられた暗証番号が、所定の暗証番号と一致する場合には、平面表示モードへの制限が解除される。そして、アプリケーションプログラムを実行することによって立体画像が生成された場合には、そのまま上側LCD22に表示される。なお、このときの平面表示モードへの制限の解除は、実行するアプリケーションプログラムが終了したときに取り消される一時的な制限の解除である。一方、受け付けられた暗証番号が、所定の暗証番号と一致しない場合には、平面表示モードへの制限は解除されずにアプリケーションプログラムの実行が開始される。なお、受け付けた暗証番号が所定の暗証番号と一致しない場合には、所定回数だけ暗証番号を受け付けし直すようにしてもよい。また、受け付けた暗証番号が所定の暗証番号と一致しない場合には、アプリケーションプログラムを実行する設定を取り消してランチャープログラムの処理に戻るようにしてもよい。
次に、実行するアプリケーションプログラムが設定されたときに、表示モードが平面表示モードのみへ制限されていないことが確認された場合について説明する。表示モードが平面表示モードのみへ制限されていない場合には、制限解除の確認画面を表示することなく、設定されたアプリケーションプログラムがそのまま実行される。この場合、アプリケーションプログラムを実行することによって立体画像が生成された場合には、そのまま上側LCD22に表示される。
なお、表示モードが平面表示モードのみに制限された状態でアプリケーションプログラムを実行する場合、及び表示モードが平面表示モードのみに制限されていない状態でアプリケーションプログラムを実行する場合のいずれの場合でも、ランチャープログラムからアプリケーションプログラムを実行するときには、ランチャープログラムも平行して実行されるものとする。ただし、アプリケーションプログラムが実行されているときは、ランチャープログラムによる処理として当該アプリケーションプログラムが終了されるまで待機する処理のみが行われる。また、ランチャープログラムは、上述したようにゲーム装置10に電源が投入されると自動的に実行され、他のアプリケーションプログラムが実行されているときでも平行して実行され続けるアプリケーションプログラムである。
なお、本実施形態では、ランチャープログラムを実行しているときにおいて、アイコン列のスライド操作、実行するアプリケーションプログラムの設定、及び暗証番号の入力の受け付けなどは、上述の説明から明らかなように下側LCD12に表示されたアイコン、及びボタンなどにタッチしたときに行われる。具体的には、それぞれのアプリケーションプログラムを示すアイコンからなるアイコン列や番号を示すボタンを示す画像などを必要に応じて下側LCD12に表示した後、タッチパネル制御回路からタッチ位置データを逐次取得する。そして、取得したタッチ位置データに基づき、それぞれの画像の表示位置に対応するタッチパネル13上の位置にタッチされたか否かや、タッチされた上でさらにスライド操作がされたか否かが判断される。いずれかの画像にタッチされた、或いはスライド操作されたと判断されたときに、操作されたボタンに応じたアプリケーションプログラムの設定や暗証番号の入力、及びアイコン列のスライド表示などが行われる。ただし、下側LCD12に表示されたボタンを、操作ボタン14を操作して選択、及び決定することにより、これらの処理をしてもよい。また、タッチパネル13、及び操作ボタン14の両方を用いてこれらの処理を行えるようにしてもよい。
[他のアプリケーションプログラム]
上述で説明したようにゲームプログラムもCPU311で実行されるアプリケーションプログラムに該当する。ゲームプログラムは、下側LCD12、及び上側LCD22の少なくともいずれかに表示される画像を生成する処理をCPU311に実行させるプログラムである。なお、ゲームプログラムは、上述した本体設定プログラム、及びランチャープログラムとは異なるアプリケーションプログラムである。また、ゲームプログラムは、上述したシステムプログラム、及びランチャープログラムと平行して実行されるアプリケーションプログラムである。また、ゲームプログラムは任意のゲーム処理をCPU311に実行させる典型的なプログラムであるので、詳細な説明は省略する。
[システムプログラム]
次に、システムプログラムについて説明する。システムプログラムは、アプリケーションプログラム、及びランチャープログラムなどのプログラムによる処理と共に、上側LCD22を制御する処理をCPU311に平行して実行させるプログラムである。
システムプログラムが実行されると、データ保存用内部メモリ35に本体情報として記憶されている表示モード制限の設定に関する情報が参照される。表示モード制限の設定を参照した結果、表示モードが平面表示モードに制限されている場合には、アプリケーションプログラムを平行して実行することによって生成された画像が平面画像に制限され、表示される。また、表示モード制限の設定を参照した結果、表示モードが平面表示モードに制限されていない場合には、アプリケーションプログラムを平行して実行することによって生成された画像が立体画像であるか平面画像であるかに関わらずそのまま表示される。
まず、表示モードが平面表示モードに制限されていない場合におけるシステムプログラムによる処理について説明する。上述で説明したように、本体設定プログラム、ランチャープログラム、及びゲームプログラムなど様々なプログラムがアプリケーションプログラムに該当する。そして、これらのアプリケーションプログラムにはCPU311に実行させる処理として、その目的に応じた様々な処理を含んでいる。しかしながら、これらのアプリケーションプログラムに含まれる処理のうち、立体画像を上側LCD22に表示させるための処理は、2つの処理に大別できる。具体的には、ゲーム装置10で立体画像を生成する処理、及び予め生成された立体画像をゲーム装置10で再生する処理である。さらに、ゲーム装置10で立体画像を生成する処理の一例としては、視差を有する2つの画像を立体画像として生成する処理が挙げられる。本実施形態では、視差を有する2つの画像を生成する処理として、仮想カメラを用いて生成する処理、及び外側撮像部23をステレオカメラとして機能させて生成する処理のいずれかが実行されるものとする。ただし、他の一実施形態では、視差を有する2つの画像を生成する任意の処理が実行されてもよい。視差を有する2つの画像を生成する処理には、視差を有さない単一の画像に対して処理をすることによって、当該単一の画像を擬似的に立体視可能な視差を有する2つの画像に変換する従来周知の処理も含まれる。
まず始めに、仮想カメラを用いて立体画像を生成する処理について説明する。仮想カメラを用いて立体画像を生成する際には、視差を有する2つの画像が立体画像として生成される。視差を有する2つの画像を生成するためには、仮想空間に配置した2つの仮想カメラで仮想オブジェクトを撮像する処理が行われる。仮想空間に配置される2つの仮想カメラは、ユーザの両目で対象物を見るときに生ずる視差に対応する間隔(以下、仮想カメラ間隔と称する)で配置される。また、仮想空間に配置される2つの仮想カメラは、それぞれユーザの左右の目に対応する左仮想カメラ、及び右仮想カメラとして仮想空間に配置されるものとする。
2つの仮想カメラを仮想空間に配置する際には、それぞれの仮想カメラの仮想空間における位置、及び向きを決定する。ただし、本実施形態では、左仮想カメラ、及び右仮想カメラのそれぞれの位置、及び向きを決定する前に、基準仮想カメラの位置、及び向きを決定する。ここで、基準仮想カメラについて説明すると、本実施形態では、所定の位置、及び向きで仮想空間に配置された単独の基準仮想カメラで仮想空間、及び仮想オブジェクトなどを撮像した画像が、立体画像として視認されるように左目用画像、及び右目用画像が生成される。つまり、基準仮想カメラとは、左目用画像、及び右目用画像をそれぞれ生成するために左仮想カメラ、及び右仮想カメラを仮想空間に配置するための基準の位置、及び向きで配置される仮想カメラのことである。
アプリケーションプログラムは、基準仮想カメラの仮想空間における位置、及び向きを所定のアルゴリズムによって決定した後、決定した所定の位置、及び向きを示す数値からなる行列(配列)を基準仮想カメラ行列として生成する処理をCPU311に実行させる。なお、基準仮想カメラ行列は、仮想空間において基準仮想カメラを設定するための情報であればよく、基準仮想カメラの位置、及び向きの他にも、立体画像によって視認される奥行きを設定するための情報など、他の任意の情報を含んでいてもよい。
左仮想カメラ、及び右仮想カメラのそれぞれの仮想空間における位置、及び向きを決定する処理は、システムプログラムがCPU311に実行させる。表示モードが平面表示モードに制限されていない場合には、それぞれの仮想カメラの位置、及び向きを決定するために、基準仮想カメラ行列に加えて、3D調整スイッチ25のスライダ25aのスライド位置が用いられる。システムプログラムは、スライダ25aのスライド位置に応じて左右の仮想カメラの位置、及び向きを決定することにより、平面表示モードと立体表示モードとの切り替えや、立体画像の立体度の調節をするための処理をCPU311に実行させる。
より詳細には、それぞれの仮想カメラの位置、及び向きを決定する際には、まず、スライダ25aのスライド位置が検出される。そして、スライダ25aのスライド位置に応じた立体度を有する立体画像が生成されるように、左仮想カメラ、及び右仮想カメラの位置、及び向きが決定される。ここで、立体度とは、ユーザが立体画像を視認したときに感じる立体感の高さであるものとする。なお、立体画像は、ユーザによって立体として視認される立体オブジェクトだけでなく、平面として視認される平面オブジェクト、或いは平面画像を含む場合もある。
本実施形態では、スライダ25aが上記第3の位置に存在する場合にゼロの立体度が設定され、上記第2の位置に存在する場合に立体度が所定の最大値に設定されるものとする。また、スライダ25aが上記第1の位置に存在する場合には、所定の初期値の立体度に設定される。これにより、スライダ25aが上記第3の位置にあるときには、ゼロの立体度が設定されるので、表示モードが平面表示モードに切り替えられる。また、スライダ25aが上記第1の位置に存在するときには、立体度が所定の初期値に設定されるので、表示モードが立体表示モードに切り替えられる。そして、上記第1の位置から上記第2の位置に向かってスライダ25aのスライド距離が大きくなるのに応じて、所定の初期値から所定の最大値まで大きくなるように立体度が設定される。なお、スライダ25aが上記第3の位置にあるときには、立体度を設定しないようにすることで、表示モードを平面表示モードに切り替えてもよい。
本実施形態では、上述したように設定される立体度に応じて仮想カメラ間隔が決定される。仮想カメラ間隔は、左仮想カメラ、及び右仮想カメラをそれぞれ仮想空間に配置したときのそれぞれの配置位置と基準仮想カメラの位置との間隔であるものとする。つまり、左仮想カメラは、基準仮想カメラの位置と当該左仮想カメラとの間隔が仮想カメラ間隔となるように仮想空間に配置される。一方、右仮想カメラは、基準仮想カメラの位置と当該右仮想カメラとの間隔が仮想カメラ間隔となるように配置される。また、左仮想カメラ、及び右仮想カメラは、基準仮想カメラの位置から互いに正反対の方向に当該基準仮想カメラを平行移動させた位置に配置される。従って、左仮想カメラ、及び右仮想カメラの向きは、基準仮想カメラをそれぞれ平行移動させたときの向きに決定される。
そして、ゼロの立体度が設定された場合には、仮想カメラ間隔がゼロになるように決定される。従って、ゼロの立体度が設定された場合には、左右の仮想カメラの位置として、基準仮想カメラの位置と同一の位置が決定される。左右の仮想カメラの位置が同一である場合には、これらの向きも互いに同一の基準仮想カメラの向きとなるので、同一の左目用画像、及び右目用画像が撮像されることになる。同一の画像が上側LCD22に表示されると、上述で説明したように、視差バリアを介して同一の画像がユーザの左目、及び右目によって視認されることになる。つまり、ユーザの両目によってそれぞれ視認される左目用画像、及び右目用画像は、視差を有することのない立体視することが不可能な平面画像となる。これにより、スライダ25aが第3の位置に存在する場合には、平面画像が表示される平面表示モードに表示モードを切り替えられる。
また、所定の初期値から所定の最大値までの立体度が設定される場合には、設定された立体度が大きくなるのに応じて、所定の初期値から所定の最大値まで大きくなるように仮想カメラ間隔が決定される。従って、設定される立体度が大きくなるのに応じて、基準仮想カメラの位置から左右方向に広がるように左右の仮想カメラの位置がそれぞれ決定される。これにより、左仮想カメラで撮像した左目用画像、及び右仮想カメラで撮像した右目用画像のずれ量が、設定された立体度に応じて調整されることになる。そして、左目用画像、及び右目用画像のずれ量をこのように調整することにより、スライダ25aのスライド位置に応じて設定された立体度を有する立体画像として、当該左目用画像、及び当該右目用画像を生成することができる。
システムプログラムは、左仮想カメラ、及び右仮想カメラの位置、及び向きを決定する処理をした後、これらの位置、及び向きを示す変数からなるアプリケーション宛仮想カメラ行列を生成する処理をCPU311に実行させる。なお、アプリケーション宛仮想カメラ行列は、仮想空間における左仮想カメラ、及び右仮想カメラをそれぞれ設定するための情報であればよく、これらの仮想カメラのそれぞれの位置、及び向きの他にも、任意の設定を示す情報を含んでいてもよい。
システムプログラムは、左仮想カメラ、及び右仮想カメラの位置、及び向きを決定する処理をCPU311に実行させるが、これらの仮想カメラで仮想空間を撮像する処理はアプリケーションプログラムがCPU311に実行させる。具体的には、アプリケーションプログラムは、アプリケーション宛仮想カメラ行列によって示される位置、及び向きで左仮想カメラ、及び右仮想カメラをそれぞれ配置する処理をCPU311に実行させる。そして、アプリケーションプログラムは、配置されたそれぞれの仮想カメラで仮想空間、及び当該仮想空間内に存在する仮想オブジェクトを撮像し、左目用画像、及び右目用画像を立体画像として生成する処理をCPU311に実行させる。アプリケーションプログラムを実行することによって立体画像として生成された左目用画像、及び右目用画像は、VRAM313に描画される。
以上が、仮想カメラを用いて立体画像を生成する処理の説明である。このように、本実施形態では、アプリケーションプログラムではなく、システムプログラムが、スライダ25aのスライド位置に応じてCPU311に設定させた立体度に基づいて、左仮想カメラ、及び右仮想カメラの位置、及び向きを決める処理をCPU311に実行させる。これにより、スライダ25aのスライド位置が同じであっても、異なる立体感を有する立体画像を生成する処理を含むような異なるアプリケーションプログラムが実行されるのを防いで、立体感をシステムプログラムで統一できる。
次に、外側撮像部23をステレオカメラとして機能させて立体画像を生成する処理について説明する。上述で説明したように、外側撮像部(左)23a、及び外側撮像部(右)23bはステレオカメラとして機能させることが可能である。より詳細には、外側撮像部(左)23a、及び外側撮像部(右)23bの間隔は、上述したように人間の両目の間隔程度に設定されており、人間(ユーザ)が両目で対象物を視認するときに生じる視差に対応する間隔を有している。これにより、ユーザの左目で視認される左目用画像と、ユーザの右目で視認される右目用画像とを立体画像として撮像することができる。なお、外側撮像部(左)23a、及び外側撮像部(右)23bをステレオカメラとして機能させるアプリケーションプログラムとしては、撮像した立体画像を写真として編集したり、保存したりするプログラムが一例として挙げられる。このようなアプリケーションプログラムを実行することによって、立体画像が生成されるのは、例えば、予め用意された写真を撮像する場面において、当該プログラムによりシャッターボタンとしての機能が割り当てられたLボタン14G、又はRボタン14Hが押下されたときなどである。そして、このようにして生成された立体画像を上側LCD22に表示する場合には、アプリケーションプログラムが、当該立体画像を構成する左目用画像と右目用画像とをVRAM313に描画させる処理をCPU311に実行させる。
システムプログラムは、外側撮像部23を用いて生成した立体画像を表示する際に、3D調整スイッチ25を用いて表示モードを切り替えるための処理をCPU311に実行させる場合もある。このような場合には、VRAM313に描画された左目用画像、及び右目用画像をそれぞれ上側LCD22の所定の表示位置に表示させる処理と、これらの画像のいずれか一方のみを上側LCD22の中央に表示させる処理とをシステムプログラムが切り替えてCPU311に実行させる。具体的には、例えば、スライダ25aが第3の位置に存在する場合、表示モードを平面表示モードに切り替えて、予め生成された立体画像を構成する左目用画像、及び右目用画像のいずれか一方を平面画像としてVRAM313から出力させて上側LCD22の中央に表示させる処理をシステムプログラムがCPU311に実行させる。また、スライダ25aが第1の位置から第2の位置に存在する場合には、表示モードを立体表示モードに切り替えるために、予め生成された立体画像を構成する左目用画像、及び右目用画像の両方をVRAM313から出力させて上側LCD22の所定の位置にそれぞれ表示させる処理をシステムプログラムがCPU311に実行させる。
なお、外側撮像部23を用いて生成した立体画像は、外側撮像部(左)23a、及び外側撮像部(右)23bの間隔に対応する視差を有する立体画像として予め生成される。このため、スライダ25aが第1の位置から第2の位置に存在する場合に、その位置に応じて立体度を設定することはできない。
次に、予め生成された立体画像をゲーム装置10で再生する場合について説明する。本実施形態では、データ保存用内部メモリ35や外部メモリ45などの任意の記憶媒体に予め生成した立体画像の静止画、又は立体画像の動画を記憶させておくことができる。そして、アプリケーションプログラムには、これらの記憶媒体に記憶されている立体画像の静止画、又は立体画像の動画を上側LCD22に表示して再生する処理をCPU311に実行させるプログラムも該当する。このように予め生成された立体画像を再生する場合には、記憶媒体に予め記憶されている左目用画像、及び右目用画像が必要に応じて立体画像として読み出され、VRAM313にその都度描画される処理をシステムプログラムがCPU311に実行させる。
システムプログラムは、予め生成された立体画像を再生する際に、3D調整スイッチ25を用いて表示モードを切り替えるための処理をCPU311に実行させる場合もある。このような場合には、VRAM313に描画された左目用画像、及び右目用画像をそれぞれ上側LCD22の所定の表示位置に表示させる処理と、これらの画像のいずれか一方のみを上側LCD22の中央に表示させる処理とをシステムプログラムが切り替えてCPU311に実行させる。具体的には、例えば、スライダ25aが第3の位置に存在する場合、表示モードを平面表示モードに切り替えるために、予め生成された立体画像を構成する左目用画像、及び右目用画像のいずれか一方をVRAM313から出力させて上側LCD22の中央に表示させる処理をシステムプログラムがCPU311に実行させる。また、スライダ25aが第1の位置から第2の位置に存在する場合には、表示モードを立体表示モードに切り替えるために、予め生成された立体画像を構成する左目用画像、及び右目用画像の両方をVRAM313から出力させて上側LCD22の所定の位置にそれぞれ表示させる処理をシステムプログラムがCPU311に実行させる。
なお、予め生成された立体画像は、所定の視差を有する立体画像として生成されている。このため、スライダ25aが第1の位置から第2の位置に存在する場合に、その位置に応じて立体度を設定することはできない。
以上が、上側LCD22に立体画像を表示させるための処理の一例の説明である。上側LCD22に立体画像を表示させるための処理には、上述したように複数種類の処理が挙げられる。アプリケーションプログラムは、上側LCD22に立体画像を表示させるための処理として、上述した処理のうち少なくともいずれか1つの処理を含むプログラムである。例えば、上述したランチャープログラムは、アプリケーションプログラムの内容情報として立体画像を含む場合があり、当該アプリケーションプログラムは立体画像を上側LCD22に表示させる処理を少なくとも含む。また、例えば、上述した本体設定プログラムは、選択状態となった設定項目の内容を示す画像として立体画像を表示する場合があり、当該立体画像の表示をするための処理を少なくとも含む。
一方で、システムプログラムは、上述の説明から明らかなように、どのような処理で生成された立体画像であったとしても、表示モードが平面表示モードへ制限されていれば、上側LCD22に表示される立体画像を平面画像に制限する処理をCPU311に実行させる。以下、表示モードが平面表示モードに制限されている場合に上側LCD22に画像を表示するための処理をシステムプログラムがCPU311に実行させる場合について説明する。
まず始めに、仮想カメラを用いて生成された立体画像の表示を制限する処理について説明する。仮想カメラを用いて立体画像を生成する場合には、上述したように、アプリケーションプログラムが、基準仮想カメラの位置、及び向きを示す基準仮想カメラ行列を生成する処理をCPU311に実行させる。そして、システムプログラムは、基準仮想カメラ行列の生成に応じて、左仮想カメラ、及び右仮想カメラの位置、及び向きを示すアプリケーション宛仮想カメラ行列を生成する処理をCPU311に実行させる。表示モードが平面表示モードに制限されている場合、システムプログラムは、制限されたアプリケーション宛仮想カメラ行列を生成する処理をCPU311に実行させる。具体的には、左仮想カメラ、及び右仮想カメラのそれぞれの位置として、仮想カメラ間隔がゼロであって、基準仮想カメラの位置と同一の位置を示す数値からなるように制限されたアプリケーション宛仮想カメラ行列を生成する処理をCPU311に実行させる。このとき生成されるアプリケーション宛仮想カメラ行列は、3D調整スイッチ25のスライダ25aのスライド位置に関わらずに生成される。例えば、システムプログラムは、スライド位置を検出することなく、基準仮想カメラ行列のみに基づいてアプリケーション宛仮想カメラ行列を生成する処理をCPU311に実行させてもよい。また、システムプログラムは、検出したスライド位置に基づいて設定した立体度が反映されずに、基準仮想カメラ行列によって示される数値のみが反映されるようにアプリケーション宛仮想カメラ行列を生成する処理をCPU311に実行させてもよい。
左仮想カメラ、及び右仮想カメラのそれぞれの位置として同一の位置を示すアプリケーション宛仮想カメラ行列が生成されると、アプリケーションプログラムは、同一の左目用画像、及び右目用画像を生成する処理をCPU311に実行させることとなる。同一の左目用画像、及び右目用画像が平面画像として上側LCD22に表示されるのは、上述で説明したとおりである。このように、システムプログラムは、仮想カメラを用いて生成された立体画像を平面画像に制限する場合、制限されたアプリケーション宛仮想カメラ行列を生成する処理をCPU311に実行させる。
次に、外側撮像部23をステレオカメラとして機能させて生成された立体画像を平面画像に制限して表示する処理について説明する。外側撮像部23を用いて撮像された立体画像は、上述したようにVRAM313に描画され、出力される。従って、システムプログラムは、外側撮像部23を用いて撮像された立体画像を平面画像に制限する場合、VRAM313に描画された画像のうちいずれか一方の画像のみに制限して上側LCD22の中央に表示されるように出力する処理をCPU311に実行させる。このとき、システムプログラムは、上側LCD22の視差バリアをオフにするようにLCDコントローラへ指示する処理もCPU311に実行させる。これにより、上側LCD22にはVRAM313に描画されたいずれか一方の画像のみが出力され、視差バリアを介すことなくユーザの両目によって視認される。すなわち、ユーザの両目によってそれぞれ視認される画像が、視差を有することのない立体視することが不可能な平面画像となる。システムプログラムは、外側撮像部23を用いて生成された立体画像を平面画像に制限する場合、このようにVRAM313に描画された画像のいずれか一方のみを出力する処理をCPU311に実行させる。
次に、予め生成された立体画像を再生するときに平面画像に制限して上側LCD22に表示する処理について説明する。予め生成された立体画像を再生するときに平面画像に制限する処理は、外側撮像部23を用いて生成した立体画像を平面画像に制限するときと同様の手法となる。すなわち、システムプログラムが、VRAM313に描画された画像のいずれか一方のみに制限して出力する処理をCPU311に実行させる。このとき、システムプログラムは、上述したように上側LCD22の視差バリアをオフにするようにLCDコントローラへ指示する処理もCPU311に実行させてもよい。
上述の説明から明らかなように、本実施形態では、様々な手法で生成される立体画像を、システムプログラムを実行することによって平面画像に制限する。これにより、表示モード制限の設定が平面表示モードのみに制限されている場合には、アプリケーションプログラムを実行することによって立体画像を生成する手法がどのような手法であったとしても、平面画像に制限して表示することができる。つまり、実行するアプリケーションプログラムに関わらずに、システムプログラムを実行することによって立体画像を平面画像に制限して表示できる。
なお、仮想カメラを用いて生成された立体画像を平面画像に制限する場合に、VRAM313に描画された左目用画像、及び右目用画像のいずれか一方のみを上側LCD22の中央に表示する処理をCPU311に実行させてもよい。より詳細には、仮想カメラを用いて立体画像を生成する場合には、システムプログラムが、同一の位置を示すアプリケーション宛仮想カメラ行列を生成する処理をCPU311に実行させることを上述で説明した。しかしながら、アプリケーション宛仮想カメラ行列を用いることなく左目用画像、及び右目用画像を立体画像として生成するようにアプリケーションプログラムを構成することも可能である。すなわち、左仮想カメラ、及び右仮想カメラのそれぞれの仮想空間における位置、及び向きを決定して左目用画像、及び右目用画像を生成する処理をアプリケーションプログラムがCPU311に実行させることも可能である。そして、このようなアプリケーションプログラムを実行することによって立体画像が生成された場合には、上述したように同一の位置を示すアプリケーション宛仮想カメラ行列を生成したとしても無視される。このため、視差を有する立体視可能な立体画像として左目用画像、及び右目用画像が生成され、VRAM313に描画される。このような場合にでも、VRAM313に描画された左目用画像、及び右目用画像のいずれか一方のみが上側LCD22の表示画面の中央に表示されるようにすることで、平面画像に制限して表示させることが可能となる。この場合、システムプログラムは、上述したように上側LCD22の視差バリアをオフにするようにLCDコントローラへ指示する処理もCPU311に実行させてもよい。
ただし、左仮想カメラ、及び右仮想カメラのそれぞれの仮想空間における位置、及び向きを決定して左目用画像、及び右目用画像を生成する処理をアプリケーションプログラムがCPU311に実行させて立体画像を表示してもよい場合もある。この場合、アプリケーションプログラムが、スライダ25aのスライド位置を検出する処理をCPU311に実行させてもよい。
以上が、本実施形態において立体画像を平面画像に制限して表示する処理の一例の説明である。本実施形態では、システムプログラムを実行することによって、表示モード制限の設定に応じて上述したように上側LCD22に表示される画像を制限する。
なお、VRAM313に描画された左目用画像、及び右目用画像のいずれか一方のみを出力して平面画像に制限する場合に、いずれか一方の画像を、いずれか他方の画像として複製して、同一の左目用画像と右目用画像とを上側LCD22に表示するようにしてもよい。同一の左目用画像、及び右目用画像が平面画像として上側LCD22に表示されるのは、上述で説明したとおりである。
また、VRAM313に描画された左目用画像、及び右目用画像のいずれか一方のみを出力して平面画像に制限する場合、上述したように視差バリアをオフにすると共に、図示しないバックライトの輝度を低下させてもよい。より詳細には、視差バリアは上側LCD22の表示面を覆うように配置されており、オンにされているときは、左目用画像、及び右目用画像のいずれか一方の画像が、いずれか他方の目に視認されないように当該表示面を遮る。従って、視差バリアがオンにされているときは上側LCD22のバックライトから照射される光も遮られる状態となる。一方で、視差バリアがオフにされているときは、上側LCD22のバックライトから照射される光が遮られることはないので、その光量を低下させても、当該視差バリアをオンにしているときとほぼ同じ輝度を維持することができる。このように、視差バリアをオフにしているときにバックライトの輝度を低下させることにより、ゲーム装置10における消費電力を低下させて、省電力化を図ることができる。
上述した処理の他にも、システムプログラムは、表示モード制限の設定や画像の描画状態に応じて、3Dインジケータ26の点灯を制御する処理をCPU311に実行させる。
より詳細には、表示モード制限が平面表示モードのみへ制限されていない場合、システムプログラムは、VRAM313に描画されている画像に応じて、3Dインジケータ26を点灯させる処理をCPU311に実行させる。例えば、左目用画像、及び右目用画像の両方が立体画像としてVRAM313に描画されている場合、立体画像を表示可能な状態であるとして3Dインジケータ26を点灯させる処理をCPU311に実行させる。一方、システムプログラムは、左目用画像、及び右目用画像のいずれか一方のみ、或いはアプリケーションプログラムが平面画像(単独の画像)を生成する処理をCPU311に実行させている場合など、上側LCD22に出力する画像として単独の画像のみがVRAM313に描画されている場合、立体画像を表示できない状態であるとして3Dインジケータ26を消灯させる処理をCPU311に実行させる。
一方、表示モードが平面表示モードのみへ制限されている場合、システムプログラムは、VRAM313に描画されている画像に関わらずに、3Dインジケータ26を消灯させる処理をCPU311に実行させる。これにより、表示モードが平面表示モードに制限されている場合には、VRAM313に立体画像が描画されていたとしても、3D調整スイッチ25を用いて、上側LCD22による表示を立体画像の表示へ切り替えることを不必要に誘導することを防げる。
[メインメモリに記憶されるデータ]
次に、本実施形態において、メインメモリ32に記憶される各種プログラム、及びCPU311が各種プログラムを実行することに応じてメインメモリ32に記憶される各種データについて説明する。
図6は、本実施形態に係るメインメモリ32に記憶される各種データ、及び各種プログラムの一例を示す図である。メインメモリ32には、タッチ位置データ501、一時解除フラグデータ502、基準仮想カメラ行列503、アプリケーション宛仮想カメラ行列504、ゲームプログラム601、本体設定プログラム602、システムプログラム603、及びランチャープログラム604が記憶される。
タッチ位置データ501は、タッチパネル13の入力面において入力が行われた位置の座標をタッチ位置として示すデータである。タッチ位置データ501は、タッチパネル制御回路から所定時間に1回の割合でCPU311によって取得され、メインメモリ32に記憶される。
一時解除フラグデータ502は、平面表示モードへの制限が一時的に解除されているか否かを示すデータである。具体的には、一時解除フラグデータ502は、平面表示モードへの制限が一時的に解除されていることをオンで示し、平面表示モードへの制限が一時的に解除されていない(平面表示モードのみに制限されている)ことをオフで示すフラグデータである。
基準仮想カメラ行列503は、アプリケーションプログラムがCPU311に実行されることによって生成される基準仮想カメラの位置、及び向きを少なくとも示す数値からなる行列である。なお、他の一実施形態では、基準仮想カメラ行列503の代わりに、基準仮想カメラの位置、及び向きを少なくとも設定するための情報を設定情報として用いてもよい。
アプリケーション宛仮想カメラ行列504は、システムプログラムがCPU311によって実行されることによって生成される左仮想カメラ、及び右仮想カメラのそれぞれの位置、及び向きを少なくとも示す数値からなる行列である。なお、他の一実施形態では、アプリケーション宛仮想カメラ行列504の代わりに、左仮想カメラ、及び右仮想カメラのそれぞれの位置、及び向きを少なくとも設定するための情報を設定情報として用いてもよい。
ゲームプログラム601は、任意のゲーム処理をCPU311に実行させるためのプログラムである。ゲームプログラム601は、図6に示すように、立体視表示フラグデータ611、及び内容情報データ612を含む。また、ゲームプログラム601は、図示しないプログラムコードも含む。立体視表示フラグデータ611は、ゲームプログラム601が立体画像を生成する処理を含む処理をCPU311に実行させるプログラムであるか否かを示すデータである。立体視表示フラグデータ611は、立体画像を生成する処理を含むことをオンで示し、立体画像を生成する処理を含まないことをオフで示すデータである。ゲームプログラム601が、立体画像を生成する処理を含む場合には、当該ゲームプログラム601に含まれる立体視表示フラグデータ611はオンとなる。一方、ゲームプログラム601が、立体画像を生成する処理を含まない場合には、当該ゲームプログラム601に含まれる立体視表示フラグデータ611はオフとなる。内容情報データ612は、ゲームプログラム601によって提供されるゲームの内容を示す画像、動画、表示オブジェクト、及び音声などの情報を内容情報として示すデータである。ゲームプログラム601に含まれる立体視表示フラグデータ611、及び内容情報データ612は、ランチャープログラムがCPU311によって実行されることにより、当該ゲームプログラム601の記憶媒体(データ保存用内部メモリ35、及び外部メモリ45)からメインメモリ32に読み込まれる。また、ゲームプログラム601に含まれるプログラムコードは、当該ゲームプログラム601が実行されるときに当該ゲームプログラム601の記憶媒体からメインメモリ32に読み込まれる。
本体設定プログラム602は、本体情報を設定するための処理をCPU311に実行させるプログラムである。本体設定プログラム602は、図6に示すように、立体視表示フラグデータ621、及び内容情報データ622を含む。また、本体設定プログラム602は、図示しないプログラムコードも含む。立体視表示フラグデータ621は、本体設定プログラム602が立体画像を生成する処理を含む処理をCPU311に実行させるプログラムであるか否かを示すデータである。立体視表示フラグデータ621は、立体画像を生成する処理を含むことをオンで示し、立体画像を生成する処理を含まないことをオフで示すデータである。本実施形態では、本体設定プログラム602が、選択された設定項目を示す情報を立体画像として上側LCD22に表示させる処理を含む。このため、本実施形態では、立体視表示フラグデータ621はオンを示すデータとなる。ただし、他の一実施形態では、本体設定プログラム602が、立体画像を生成する処理を含まない場合もありうる。本体設定プログラム602に含まれる立体視表示フラグデータ621、及び内容情報データ622は、ランチャープログラムがCPU311によって実行されることにより、当該本体設定プログラム602の記憶媒体(本実施形態では、データ保存用内部メモリ35)からメインメモリ32に読み込まれる。
システムプログラム603は、ゲーム装置10に電源が投入され、図示しないROM(Read Only Memory)に記憶されているブートプログラムがCPU311によって実行されることによって、データ保存用内部メモリ35からメインメモリ32に読み込まれる。
ランチャープログラム604は、上述したように、データ保存用内部メモリ35や外部メモリ45に記憶されている他のアプリケーションプログラムをユーザに選択的に実行させる処理をCPU311に実行させるプログラムである。ランチャープログラム604は、システムプログラム603が読み込まれると自動的にデータ保存用内部メモリ35からメインメモリ32に読み込まれる。以上が、本実施形態においてメインメモリ32に記憶される各種データ、及び各種プログラムの説明である。
[データ保存用内部メモリに記憶されるデータ]
次に、データ保存用内部メモリ35に記憶される各種データ、及び各種プログラムについて説明する。図7は、本実施形態においてデータ保存用内部メモリ35に記憶される各種データ、及び各種プログラムを示す図である。図7に示すように、データ保存用内部メモリ35には、表示モード制限フラグデータ701、暗証番号データ702、ゲームプログラム601、本体設定プログラム602、システムプログラム603、及びランチャープログラム604が記憶される。
表示モード制限フラグデータ701は、上側LCD22への画像の表示が平面表示モードのみに制限されているか否かを示すデータである。具体的には、表示モード制限フラグデータ701は、平面表示モードのみに制限されていることをオンで示し、平面表示モード、又は立体表示モードでの画像の表示が可能である(平面表示モードのみに制限されていない)ことをオフで示すフラグデータである。
暗証番号データ702は、表示モード制限の設定をするため、及び表示モード制限を一時解除するために用いられる所定の暗証番号を示すデータである。
ゲームプログラム601、本体設定プログラム602、システムプログラム603、及びランチャープログラム604は、図7に示すようにデータ保存用内部メモリ35に予め記憶されており、必要に応じて上述したようにメインメモリ32に読み込まれる。なお、ゲームプログラム601については、データ保存用内部メモリ35ではなく、外部メモリ45に記憶されている場合もある。以上が、データ保存用内部メモリ35に記憶される各種データ、及び各種プログラムの説明である。
[VRAMに記憶されるデータ]
次に、VRAM313に記憶される各種データについて説明する。図8は、本実施形態においてVRAM313に記憶される各種データを示す図である。図8に示すように、VRAM313には、左目用画像データ801、及び右目用画像データ802が記憶される。左目用画像データ801、及び右目用画像データ802は、各種プログラムがCPU311によって実行されることにより立体視可能な立体画像を構成する左目用画像、及び右目用画像をそれぞれ示すデータとして生成され、VRAM313に記憶される。以上が、VRAM313に記憶される各種データである。なお、本実施形態では、アプリケーションプログラムをCPU311が実行することによって生成した画像のデータは上述したようにVRAM313に直接描画され記憶されるものとする。しかしながら、他の一実施形態では、アプリケーションプログラムをCPU311が実行することによって生成した画像のデータをメインメモリ32に記憶させ、メインメモリ32に記憶されているデータによって示される画像を上側LCD22や下側LCD12に出力して表示するようにしてもよい。
次に、図9〜図11を参照しながら各種プログラムを実行することによってCPU311によって行われる処理を具体的に説明する。図9〜図11は、各種プログラムを実行することによってCPU311によって行われる処理を示すフローチャートである。なお、図9〜図11においては、「ステップ」を省略して「S」と記載している。
[システム処理]
図9は、システムプログラム603をCPU311が実行することによって行われるシステム処理を示すフローチャートである。システム処理は、システムプログラム603がメインメモリ32に読み込まれるとCPU311によって自動的に開始される。
システム処理が開始されると、まず始めに、CPU311は初期設定処理を行う(ステップ101)。具体的には、CPU311は、VRAM313に記憶されている全ての画像データの削除、一時解除フラグデータ502のオフへの更新、メインメモリ32に記憶されている基準仮想カメラ行列503、及びアプリケーション宛仮想カメラ行列504の削除を行う。
初期設定処理を行うとCPU311は、基準仮想カメラ行列503がメインメモリ32に記憶されているか否かを判断する(ステップ105)。より詳細には、基準仮想カメラ行列503は、上述したようにCPU311がアプリケーションプログラムをシステムプログラム603と平行して実行することによって生成される。ステップ105の処理では、このように生成された基準仮想カメラ行列503がメインメモリ32に記憶されているか否かを判断する。CPU311は、基準仮想カメラ行列503が記憶されていない場合(ステップ105でNo)、基準仮想カメラ行列503がメインメモリ32に記憶されるまで待機する。
一方、CPU311は、基準仮想カメラ行列503が記憶されている場合(ステップ105でYes)、平面表示モードのみへの制限が一時的に解除されているか否かを判断する(ステップ110)。具体的には、CPU311は、メインメモリ32に記憶されている一時解除フラグデータ502を参照する。CPU311は、一時解除フラグデータ502によってオンが示されている場合、平面表示モードのみへの制限が一時的に解除されていると判断する(ステップ110でYes)。一方、CPU311は、一時解除フラグデータ502によってオフが示されている場合、平面表示モードのみへの制限が一時的に解除されていないと判断する(ステップ110でNo)。
CPU311は、平面表示モードへの制限が一時的に解除されていないと判断したとき(ステップ110でNo)、平面表示モードへの制限が設定されているか否かを判断する(ステップ115)。具体的には、CPU311は、データ保存用内部メモリ35に記憶されている表示モード制限フラグデータ701を参照する。CPU311は、表示モード制限フラグデータ701によってオンが示されている場合、表示モードが平面表示モードへ制限されていると判断する(ステップ115でYes)。一方、CPU311は、表示モード制限フラグデータ701によってオフが示されている場合、平面表示モードへの制限が設定されていないと判断する(ステップ115でNo)。
CPU311は、平面表示モードへの制限が設定されていないと判断したとき(ステップ115でNo)、3D調整スイッチ25から上述したように出力されるアナログ値を立体視調整値として取得する(ステップ120)。また、CPU311は、平面表示モードへの制限が一時的に解除されていると判断したとき(ステップ110でYes)にも、ステップ115の処理をスキップして、立体視調整値を取得する(ステップ120)。
CPU311は、立体視調整値を取得すると、取得した立体視調整値に基づき、3D調整スイッチ25を用いた立体表示モードへの切り替えが設定されているか否かを判断する(ステップ125)。具体的には、CPU311は、取得した立体視調整値に基づいてスライダ25aが第3の位置に存在するか否かを判断する。CPU311は、スライダ25aが第3の位置に存在する場合、立体表示モードへの切り替えが設定されていない(平面表示モードへの切り替えがなされている)と判断する(ステップ125でNo)。一方、CPU311は、スライダ25aが第1の位置から第2の位置の間に存在すると判断した場合、立体表示モードへの切り替えが設定されていると判断する(ステップ125でYes)。
CPU311は、立体表示モードへ切り替えが設定されていると判断した場合(ステップ125でNo)、視差バリアをオフにしているか否かを判断する(ステップ130)。CPU311は、視差バリアをオフにしていないと判断した場合(ステップ130でNo)、視差バリアをオフにするようにLCDコントローラを制御する(ステップ135)。そして、CPU311は、視差バリアをオフにしているときでも、視差バリアをオンにしているときにユーザに視認される輝度と略同等の輝度となるように予め定められた輝度になるようにLCDコントローラを制御する(ステップ140)。このように、本実施形態では、平面表示モードへの制限が設定されている場合(ステップ115でYes)、又は立体表示モードへの切り替えが設定されていない場合(ステップ125でNo)であって、視差バリアがオフでない場合(ステップ130でNo)には、視差バリアをオフにして(ステップ135)、輝度を低下させる(ステップ140)。すなわち、平面画像を上側LCD22に表示する場合に、CPU311は、視差バリアをオフにして輝度を低下させることにより、上述したように、ユーザに視認される輝度を維持しつつ省電力化を図ることができる。
CPU311は、立体表示モードへの切り替えが設定されていると判断した場合(ステップ125でYes)、アプリケーション宛仮想カメラ行列504を計算して生成する(ステップ150)。具体的には、CPU311は、ステップ105で取得した基準仮想カメラ行列503、及びステップ120で取得した立体視調整値に基づいて、アプリケーション宛仮想カメラ行列504を計算する。このとき計算されるアプリケーション宛仮想カメラ行列504は、基準仮想カメラ行列503によって示される基準仮想カメラの位置、及び向きで仮想空間を撮像した画像を立体視できるように生成する立体画像にステップ120で取得した立体視調整値が反映されるように所定の手法で計算されるものとする。また、このとき計算されるアプリケーション宛仮想カメラ行列504によって示されるのは、上述したように左仮想カメラ、及び右仮想カメラの仮想空間における位置、及び向きを少なくとも設定するための情報である。
一方、CPU311は、視差バリアをオフにして輝度を低下させた場合(ステップ135、及びステップ140)、制限されたアプリケーション宛仮想カメラ行列504を計算して生成する(ステップ145)。また、CPU311は、視差バリアをオフにしている場合(ステップ130でYes)にも、制限されたアプリケーション宛仮想カメラ行列504を計算して生成する(ステップ145)。具体的には、CPU311は、ステップ105で取得した基準仮想カメラ行列503、及びステップ120で取得した立体視調整値に基づいて、アプリケーション宛仮想カメラ行列504を計算する。このとき計算されるアプリケーション宛仮想カメラ行列504は、基準仮想カメラ行列503によって示される基準仮想カメラと同一の位置、及び向きを左仮想カメラ、及び右仮想カメラのそれぞれの位置、及び向きとして設定するための情報となるように制限される。
CPU311は、ステップ145、又はステップ150でアプリケーション宛仮想カメラ行列504を計算すると、計算したアプリケーション宛仮想カメラ行列504をメインメモリ32に記憶する(ステップ155)。そして、CPU311は、メインメモリ32に記憶されている基準仮想カメラ行列503を削除する(ステップ160)。これにより、CPU311は、アプリケーションプログラムを実行することによって生成した新たな基準仮想カメラ行列503に基づいて、新たなアプリケーション宛仮想カメラ行列504を計算することができる。
次に、CPU311は、アプリケーションプログラムを実行することによって生成された画像がVRAM313に描画されているか否かを判断する(ステップ165)。CPU311は、VRAM313に画像が描画されていると判断すると(ステップ165でYes)、描画されているのが両目用の画像(左目用画像、及び右目用画像の両方の画像)であるか否かをさらに判断する(ステップ170)。
CPU311は、両目用の画像が描画されていると判断すると(ステップ170でYes)、平面表示モードへの制限の設定が一時解除されているか否かを判断する(ステップ175)。具体的には、CPU311は、メインメモリ32に記憶されている一時解除フラグデータ502を参照する。CPU311は、メインメモリ32に記憶されている一時解除フラグデータ502によってオンが示されている場合、平面表示モードへの制限の設定が一時解除されていると判断する(ステップ175でYes)。一方、CPU311は、メインメモリ32に記憶されている一時解除フラグデータ502によってオフが示されている場合、平面表示モードへの制限が一時解除されていない(平面表示モードへの制限が設定されている)と判断する(ステップ175でNo)。
CPU311は、平面表示モードへの制限が一時解除されている場合(ステップ175でYes)、3Dインジケータ26を点灯させる(ステップ180)。これにより、CPU311は、両目用の画像がVRAM313に描画されており、立体画像を表示できる状態であることを、3Dインジケータ26を点灯して通知できる。そして、CPU311は、VRAM313に描画されている両目用の画像を上側LCD22に出力する(ステップ185)。
一方、CPU311は、両目用の画像が描画されていないと判断した場合(ステップ170でNo)、3Dインジケータ26を消灯させる(ステップ190)。これにより、CPU311は、両目用の画像がVRAM313に描画されておらず、立体画像を表示できない状態であることを、3Dインジケータ26を消灯して通知できる。そして、CPU311は、VRAM313に描画されている単一の画像を、上側LCD22に出力する(ステップ195)。
なお、CPU311は、ステップ185、又はステップ195の処理において、上側LCD22に画像を出力する際に、下側LCD12に出力する画像がVRAM313に描画されている場合には、下側LCD12にも画像を出力する。
CPU311は、VRAM313に描画されている画像を出力すると、ステップ105から処理を繰り返す。また、CPU311は、VRAM313に画像が描画されていないと判断した場合(ステップ165でNo)にも画像を出力することなく、ステップ105から処理を繰り返す。以上が、本実施形態に係るCPU311によって行われるシステム処理の説明である。
[ランチャー処理]
図10は、ランチャープログラム604をCPU311が実行することによって行われるランチャー処理を示すフローチャートである。ランチャー処理は、システム処理がCPU311によって開始された後、自動的に開始される。
ランチャー処理が開始されると、まず始めに、CPU311は、上述したようにアプリケーションプログラムをユーザに選択させるための画面(以下、選択画面)を表示する(ステップ201)。なお、CPU311が、選択画面を表示するときには、上述したようなユーザの選択操作に応じてアイコン列をスライドさせる処理や、選択状態となったアプリケーションプログラムの内容情報を表示する処理などを、タッチ位置データ501に基づいて行う。そして、この処理によって生成された画像は、VRAM313に描画され、上述したシステム処理をCPU311が平行して行うことによって、表示モード制限の設定に応じて、上側LCD22に出力される。例えば、選択状態となっているアプリケーションプログラムの内容情報が、当該プログラムの内容を立体画像で示す情報であれば、当該立体画像が表示モード制限の設定に応じて平面画像に制限されて、又は制限されずに立体画像のまま上側LCD22に表示される。また、このとき下側LCD12に出力する画像もVRAM313に描画されている場合には、当該下側LCD12にも画像が出力される。このようにランチャー処理のために画面に表示する画像をユーザの操作に応じて生成するのは、後述する他の画面(例えば、制御解除の確認画面など)においても同様である。
CPU311は、選択画面を表示すると、上述したようにいずれかのアプリケーションプログラムの実行が設定されたか否かを、タッチ位置データ501に基づいて判断する(ステップ205)。CPU311は、実行するアプリケーションプログラムが設定されていない場合(ステップ205でNo)、ステップ201に戻って、選択画面を表示するための処理を継続して行う。
一方、CPU311は、アプリケーションプログラムが設定されている場合(ステップ205でYes)、設定されたアプリケーションプログラムが立体画像を生成する処理を含むプログラムであるか否かを判断する(ステップ210)。具体的には、CPU311は、設定されたアプリケーションプログラムに含まれる立体視表示フラグデータ621を参照して、オンを示すかオフを示すかを判断する。CPU311は、参照した立体視表示フラグデータ621によってオンが示されている場合、設定されたプログラムが、立体画像を生成する処理を含むプログラムであると判断する(ステップ210でYes)。一方、CPU311は、参照した立体視表示フラグデータ621によってオフが示されている場合、設定されたプログラムが立体画像を生成する処理を含まないプログラムであると判断する(ステップ210でNo)。
CPU311は、設定されたアプリケーションプログラムが立体画像を生成する処理を含まないプログラムであると判断した場合(ステップ210でNo)、設定されたプログラムを実行する(ステップ250)。
一方、CPU311は、設定されたアプリケーションプログラムが立体画像を生成する処理を含むと判断した場合(ステップ210でYes)、表示モードが平面表示モードのみに制限されているか否かを判断する(ステップ215)。具体的には、CPU311は、データ保存用内部メモリ35に記憶されている表示モード制限フラグデータ701を参照する。CPU311は、表示モード制限フラグデータ701によってオンが示されている場合、表示モードが平面表示モードへ制限されていると判断する(ステップ215でYes)。一方、CPU311は、表示モード制限フラグデータ701によってオフが示されている場合、平面表示モードへの制限が設定されていないと判断する(ステップ215でNo)。
CPU311は、平面表示モードへ制限されていないと判断した場合(ステップ215でNo)、設定されたアプリケーションプログラムを実行する(ステップ250)。
CPU311は、平面表示モードへ制限されていると判断した場合(ステップ215でYes)、設定されたアプリケーションプログラムを実行する前に、上述したように平面表示モードのみへの制限を解除するか否かを確認する画面(以下、確認画面と称する)を表示する(ステップ220)。
そして、CPU311は、確認画面を表示すると、タッチ位置データ501に基づいて平面表示モードのみへの制限を解除する選択がされたか否かを判断する(ステップ225)。なお、このときに選択される制限の解除は、上述したように一時的な解除となる。
CPU311は、平面表示モードへの制限を解除する選択がされていないと判断した場合(ステップ225でNo)、平面表示モードへの制限を設定したまま、実行することが設定されたアプリケーションプログラムを実行する(ステップ250)。
一方、CPU311は、平面表示モードのみへの制限を解除する選択がされたと判断した場合(ステップ225でYes)、制限を解除するための認証を行う暗証番号入力画面を表示する(ステップ230)。そして、CPU311は、タッチ位置データ501に基づいて上述したように暗証番号の受け付けを行う(ステップ235)。
暗証番号が受け付けられると、CPU311は、受け付けた暗証番号が所定の暗証番号と一致するか否かを判断する(ステップ240)。具体的には、CPU311は、受け付けた暗証番号と、暗証番号データ702によって示される暗証番号とが一致するか否かを判断する。CPU311は、受け付けた暗証番号と、暗証番号データ702によって示される暗証番号とが一致する場合、所定の暗証番号と一致する暗証番号が受け付けられたと判断する(ステップ240でYes)。一方、CPU311は、受け付けた暗証番号と、暗証番号データ702示される暗証番号とが一致しない場合、所定の暗証番号と一致しない暗証番号が受け付けられたと判断する(ステップ240でNo)。
CPU311は、受け付けた暗証番号が所定の暗証番号と一致しないと判断した場合(ステップ240でNo)、表示モード制限を一時解除できないと判断して、平面表示モードへ制限したまま実行することが設定されたアプリケーションプログラムを実行する(ステップ250)。
CPU311は、所定の暗証番号と一致する暗証番号が受け付けられたと判断した場合(ステップ240でYes)、平面表示モードへの制限を解除する(ステップ245)。具体的には、CPU311は、一時解除フラグデータ502をオンに更新する。
CPU311は、平面表示モードへの制限を解除すると、実行するように設定されたアプリケーションプログラムを実行する(ステップ250)。より詳細には、CPU311は、設定されたアプリケーションプログラムによって行われるアプリケーション処理を、ランチャー処理と共に平行して実行する。なお、これにより設定されたアプリケーションプログラムの実行が開始されるが、当該アプリケーションプログラムを実行することによってCPU311が生成した画像は、VRAM313に描画され、上述したシステム処理をCPU311が平行して行うことによって、表示モード制限の設定に応じて、上側LCD22に出力される。また、このとき下側LCD12に出力する画像もVRAM313に描画されている場合には、当該下側LCD12にも画像が出力される。
CPU311は、アプリケーションプログラムを実行すると、実行しているアプリケーションプログラムが終了したか否かを、アプリケーションプログラムの実行状態に基づいて判断する(ステップ255)。CPU311は、アプリケーションプログラムが終了していないと判断したとき(ステップ255でNo)、当該アプリケーションプログラムが終了されるまで待機する。
一方、CPU311は、アプリケーションプログラムが終了されたと判断したとき(ステップ255でYes)、平面表示モードへの制限を一時解除しているか否かを判断する(ステップ260)。具体的には、CPU311は、一時解除フラグデータ502を参照してオンが示されているかオフが示されているかを判断する。CPU311は、一時解除フラグデータ502によってオンが示されているとき、平面表示モードへの制限を一時解除していると判断する(ステップ260でYes)。一方、CPU311は、一時解除フラグデータ502によってオフが示されているとき、平面表示モードへの制限を一時解除していないと判断する(ステップ260でNo)。
CPU311は、平面表示モードへの制限を一時解除していると判断したとき(ステップ265でYes)、一時解除していた平面表示モードへの制限を再開する(ステップ265)。具体的には、CPU311は、オフを示すように一時解除フラグデータ502を更新する。CPU311は、平面表示モードへの制限を再開すると、ランチャー処理をステップ201から繰り返す。
一方、CPU311は、平面表示モードへの制限を一時解除していないと判断したときは(ステップ265でNo)そのままランチャー処理を繰り返す。以上が、本実施形態に係るCPU311によって行われるランチャー処理の説明である。
[本体設定処理]
図11は、本体設定プログラム602をCPU311が実行することによって行われる本体設定処理を示すフローチャートである。本体設定処理は、ランチャー処理がCPU311によって開始された後、ユーザによる操作に応じて実行するアプリケーションプログラムとして設定された(ステップ205)後、実行される(ステップ250)。
本体設定処理が開始されると、まず始めに、CPU311は、上述した設定項目の選択画面を表示する(ステップ301)。CPU311は、設定項目の選択画面を表示すると、表示モード制限の設定項目が選択されたか否かをタッチ位置データ501に基づいて上述したように判断する(ステップ305)。
CPU311は、表示モード制限の設定項目が選択されたと判断したとき(ステップ305でYes)、暗証番号入力画面を上述したように表示する(ステップ310)。そして、CPU311は、タッチ位置データ501に基づいて上述したように暗証番号の受け付けを行う(ステップ315)。
暗証番号が受け付けられると、CPU311は、受け付けた暗証番号が所定の暗証番号と一致するか否かを判断する(ステップ320)。ステップ320における具体的な処理内容は、ステップ235と同様である。
CPU311は、受け付けた暗証番号が所定の暗証番号と一致しないと判断した場合(ステップ320でNo)、現在のユーザが表示モード制限の設定を認められていないユーザであると判断する。この場合、CPU311は、表示モード制限の設定画面を表示することなく本体設定処理を始めから繰り返す。
一方、CPU311は、所定の暗証番号と一致する暗証番号が受け付けられたと判断した場合(ステップ320でYes)、現在の表示モード制限の設定を確認する(ステップ325)。具体的には、CPU311は、表示モード制限フラグデータ701がオンを示すかオフを示すかを確認する。
CPU311は、現在の表示モード制限の設定を確認すると、上述したように表示モード制限の設定画面を表示する(ステップ330)。このとき、CPU311は、上述で説明したとおり、ステップ325で確認した表示モード制限の設定をユーザが視認できるように「表示モード制限あり」を示すボタン、及び「表示モード制限なし」を示すボタンのいずれかを強調表示する。
CPU311は、表示モード制限の設定画面を表示すると、タッチ位置データ501に基づいて上述したように表示モード制限が選択されたか否かを判断する(ステップ335)。CPU311は、表示モード制限が選択されたと判断すると(ステップ335でYes)、表示モード制限を平面表示モードに制限する(ステップ340)。具体的には、CPU311は、オンを示すように表示モード制限フラグデータ701を更新する。
一方、CPU311は、表示モード制限なしが選択されたと判断すると(ステップ335でNo)、表示モード制限をなしに設定する(ステップ345)。具体的には、CPU311は、オフを示すように表示モード制限フラグデータ701を更新する。
CPU311は、ステップ340、又はステップ345の処理で表示モード制限の設定を行うと、表示モード制限の設定のための処理を終了して、設定項目の選択画面の表示(ステップ301)から処理を繰り返す。
また、CPU311は、表示モード制限の設定項目が選択されていないと判断したとき(ステップ305でNo)、他の任意の設定項目が選択されたか否かを上述したようにタッチ位置データ501に基づいて判断する(ステップ350)。ここで、他の任意の設定項目としては、現在時刻の設定を示す項目や、ユーザ名(例えば、ゲーム装置10の所有者の名前)の設定を示す項目などが一例として挙げられる。
CPU311は、他の任意の設定項目が選択されたと判断したとき(ステップ350でYes)、当該設定項目が選択されたときの所定の処理を実行する(ステップ355)。具体的な処理内容は、選択された項目を設定するための従来周知の任意の処理となるので、詳細な説明を省略する。
一方、CPU311は、他の任意の設定項目が選択されていないと判断したとき(ステップ350でNo)、本体設定処理の終了が選択されたか否かを上述したようにタッチ位置データ501に基づいて判断する(ステップ360)。また、CPU311は、他の任意の設定項目が選択されていないと判断したとき(ステップ350でNo)にも同様に本体設定処理の終了が選択されたか否かを判断する。
CPU311は、本体設定処理の終了が選択されていないと判断したとき(ステップ360でNo)、設定項目の選択画面の表示(ステップ301)から処理を繰り返す。一方、CPU311は、本体設定処理の終了が選択されたと判断したとき(ステップ360でYes)で、本体設定処理を終了する。
なお、本体設定処理を終了すると、CPU311は、ランチャー処理におけるステップ255で本体設定プログラム602がアプリケーションプログラムとして終了されたと判断し、ランチャー処理を進めることとなる。以上が、本実施形態に係るCPU311によって行われる処理の具体的な説明である。
本実施形態に係るゲーム装置10では、上述で説明したように、上側LCD22に立体画像を表示する際に、表示モード制限の設定に基づいて平面画像に制限して表示する。これにより、不適切な立体画像の表示(立体視表示)を平面画像の表示(平面視表示)に制限することができる。
また、上述の説明では、アプリケーションプログラムとシステムプログラムとが互いに独立した別のプログラムであるものとした。しかしながら、他の一実施形態では、アプリケーションプログラムによる処理の一部をシステムプログラムによる処理としてもよい。同様に、他の一実施形態では、システムプログラムによる処理の一部をアプリケーションプログラムによる処理としてもよい。具体的な一例としては、システムプログラムによる処理の一部を、アプリケーションプログラムに組み込むことが可能なライブラリによる処理の一部とすることが挙げられる。ここで、ライブラリとは、例えば、上述したランチャープログラム、及びゲームプログラムなど、様々なプログラムによる処理の中で共通している汎用的な個々の処理をCPU311に実行させるためのプログラムコードの集合体である。
また、他の一実施形態では、アプリケーションプログラムとシステムプログラムとを平行して実行することによってCPU311が行う全ての処理と同等の処理を、1つのプログラムをCPU311に実行させることによって、行うようにしてもよい。
また、上述の説明では、表示モード制限の設定を示す本体情報(表示モード制限フラグデータ701)の管理を、本体設定プログラムがCPU311に実行させるものとした。そして、表示モード制限の一時解除の設定を示すデータ(一時解除フラグデータ502)の管理をランチャープログラムがCPU311に実行させるものとした。しかしながら、他の一実施形態では、表示モード制限の設定、及び一時解除の設定に基づく制限情報の管理を、表示モード制限の設定を示す本体情報とは別にランチャープログラムがCPU311に実行させてもよい。そして、システムプログラムは、ランチャープログラムがCPU311に管理させている制限情報を参照して、上側LCD22への画像の出力を実行する処理を当該CPU311に実行させてもよい。
ここで、制限情報は、上述したように、本体情報によって示される表示モード制限の設定、及び一時解除の設定に基づいて管理される。より具体的には、本体情報によって平面表示モードへの制限が示されており、且つ一時解除が設定されていない場合には、制限情報によって平面表示モードへの制限が示される。また、本体情報によって平面表示モードへの制限が示されており、且つ一時解除が設定されている場合には、制限情報によって平面表示モードへの制限がないことが示される。また、本体情報によって平面表示モードへの制限が示されていない場合には、一時解除は設定されないので、制限情報によって平面表示モードへの制限がないことが示される。
そして、システムプログラムは、制限情報によって平面表示モードへの制限が示されている場合に、上側LCD22に表示される画像を上述で説明したように平面画像に制限する処理をCPU311に実行させる。一方、システムプログラムは、制限情報によって平面表示モードへの制限が示されていない場合に、上側LCD22に表示される画像を制限せずに、VRAM313に描画されている立体画像、又は平面画像をそのまま出力する処理をCPU311に実行させる。
また、制限情報は、本体情報によって示される表示モード制限の設定、及び一時解除の設定に基づくものに限られない。例えば、ユーザによって表示モード制限を設定する操作、及び一時解除の設定をする操作に応じてその都度制限情報を直接更新して管理するようにしてもよい。
また、上述の説明では、上側LCD22がパララックスバリア方式の液晶表示装置であるとして、視差バリアのON/OFFを制御することにより、立体表示と平面表示とを切り替えることができる。他の一実施形態では、例えば、上側LCD22としてレンチキュラー方式の液晶表示装置を用いて、立体画像及び平面画像を表示可能としてもよい。レンチキュラー方式の場合でも、外側撮像部23で撮像した2つの画像を縦方向に短冊状に分割して交互に配置することで画像が立体表示される。また、レンチキュラー方式の場合でも、内側撮像部24で撮像した1つの画像をユーザの左右の目に視認させることによって、当該画像を平面表示させることができる。すなわち、レンチキュラー方式の液晶表示装置であっても、同じ画像を縦方向に短冊状に分割し、これら分割した画像を交互に配置することにより、ユーザの左右の目に同じ画像を視認させることができる。これにより、内側撮像部24で撮像された画像を平面画像として表示することが可能である。ただし、レンチキュラー方式の液晶表示装置を用いる場合には、上述で説明したように視差バリアのオン/オフを制御したり、当該視差バリアをオフにして輝度を低下させて省電力化を図ったりする必要はない。
また、上述の説明では、2画面分の液晶表示部の一例として、物理的に分離された下側LCD12及び上側LCD22を互いに上下に配置した場合(上下2画面の場合)を説明した。しかしながら、2画面分の表示画面の構成は、他の構成でもかまわない。例えば、下側ハウジング11の一方主面に下側LCD12及び上側LCD22を左右に配置してもかまわない。また、下側LCD12と横幅が同じで縦の長さが2倍のサイズからなる縦長サイズのLCD(すなわち、物理的には1つで、表示サイズが縦に2画面分あるLCD)を下側ハウジング11の一方主面に配設して、2つの画像(例えば、撮像画像と操作説明画面を示す画像等)を上下に表示(すなわち上下の境界部分なしに隣接して表示)するように構成してもよい。また、下側LCD12と縦幅が同じで横の長さが2倍のサイズからなる横長サイズのLCDを下側ハウジング11の一方主面に配設して、横方向に2つの画像を左右に表示(すなわち左右の境界部分なしに隣接して表示)するように構成してもよい。すなわち、物理的に1つの画面を2つに分割して使用することにより2つの画像を表示してもかまわない。また、物理的に1つの画面を2つに分割して使用することにより上記2つの画像を表示する場合、当該画面全面にタッチパネル13を配設してもかまわない。
また、上述の説明では、ゲーム装置10にタッチパネル13が一体的に設けられているが、ゲーム装置とタッチパネルとを別体にして構成しても、本発明を実現できることは言うまでもない。また、上側LCD22の上面にタッチパネル13を設けて上側LCD22に上述した下側LCD12に表示していた表示画像を表示し、下側LCD12に上述した上側LCD22に表示していた表示画像を表示してもよい。
また、上述の説明では、携帯型のゲーム装置10を用いて説明したが、一般的なパーソナルコンピュータ等の情報処理装置で本発明の画像処理プログラムを実行して、本発明を実現してもかまわない。また、他の実施形態では、ゲーム装置に限らず任意の携帯型電子機器、例えば、PDA(Personal Digital Assistant)や携帯電話、パーソナルコンピュータ、カメラ等であってもよい。例えば、携帯電話が、1つのハウジングの主面に2つの表示部と、実カメラとを備えてもよい。
また、上述したゲーム装置10の形状や、それに設けられている各種操作ボタン14、アナログスティック15、タッチパネル13の形状、数、及び設置位置等は、単なる一例に過ぎず他の形状、数、及び設置位置であっても、本発明を実現できることは言うまでもない。また、上述した表示制御処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず他の順序や値であっても、本発明を実現できることは言うまでもない。
また、上述した全てのプログラムは、それぞれが、データ保存用内部メモリ35、外部メモリ45やデータ保存用外部メモリ46等の記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置10に供給された後、実行されてもよい。また、上述した全てのプログラムは、少なくともいずれか1つが、ゲーム装置10内部の不揮発性記憶装置に予め記録されていてもよい。なお、上述した全てのプログラムの少なくともいずれか1つを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、或いはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上述した全てのプログラムの少なくともいずれか1つを記憶する情報記憶媒体としては、プログラムを一時的に記憶する揮発性メモリでもよい。
また、上述した説明では、上述した全てのプログラムが情報処理部31(CPU311)で実行される例を用いたが、上述した全てのプログラムの少なくとも1つ、或いは少なくとも一部を、当該情報処理部31と通信可能な他の装置に備えられたCPUを含む情報処理部で実行してもかまわない。例えば、ゲーム装置10が他の装置(例えば、サーバーなど)と通信可能に構成されている場合、上述した全てのプログラムにおける処理は、ゲーム装置10及び当該他の装置が協働することによって実行してもよい。一例として、他の装置において、上記システムプログラム、及びアプリケーションプログラムが実行され、当該プログラムの実行に必要なタッチオン、タッチオフ、スライド操作などの操作の検出、当該プログラムの実行に応じて生成される画像の表示を行う表示装置などは、それぞれゲーム装置10のタッチパネル13、下側LCD12、及び上側LCD22を用いるように構成したシステムにおいて、上述した全てのプログラムを実行してもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載及び技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。従って、他に定義されない限り、本明細書中で使用される全ての専門用語及び技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。