(ゲーム装置の構成)
以下、本発明の一実施形態に係るゲーム装置について説明する。図1〜図3は、ゲーム装置A10の外観を示す平面図である。ゲーム装置A10は携帯型のゲーム装置であり、図1〜図3に示すように折り畳み可能に構成されている。図1および図2は、開いた状態(開状態)におけるゲーム装置A10を示し、図3は、閉じた状態(閉状態)におけるゲーム装置A10を示している。図1は、開状態におけるゲーム装置A10の正面図であり、図2は、開状態におけるゲーム装置A10の右側面図である。ゲーム装置A10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置A10は、交換可能なメモリカード内に記憶され、または、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
まず、図1〜図3を参照して、ゲーム装置A10の外観構成について説明する。図1〜図3に示されるように、ゲーム装置A10は、下側ハウジングA11および上側ハウジングA21を有する。下側ハウジングA11と上側ハウジングA21とは、開閉可能(折り畳み可能)に接続されている。本実施形態では、各ハウジングA11およびA21はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
図1および図2に示されるように、下側ハウジングA11の上側長辺部分には、下側ハウジングA11の内側面(主面)A11Bに対して垂直な方向に突起する突起部A11Aが設けられる。また、上側ハウジングA21の下側長辺部分には、上側ハウジングA21の下側面から当該下側面に垂直な方向に突起する突起部A21Aが設けられる。下側ハウジングA11の突起部A11Aと上側ハウジングA21の突起部A21Aとが連結されることにより、下側ハウジングA11と上側ハウジングA21とが、折り畳み可能に接続される。
(下側ハウジングの説明)
まず、下側ハウジングA11の構成について説明する。図1〜図3に示すように、下側ハウジングA11には、下側LCD(Liquid Crystal Display:液晶表示装置)A12、タッチパネルA13、各操作ボタンA14A〜A14L(図1、図3)、アナログスティックA15、LEDA16A〜A16B、挿入口A17、および、マイクロフォン用孔A18が設けられる。以下、これらの詳細について説明する。
図1に示すように、下側LCDA12は下側ハウジングA11に収納される。下側LCDA12は横長形状であり、長辺方向が下側ハウジングA11の長辺方向に一致するように配置される。下側LCDA12は下側ハウジングA11の中央に配置される。下側LCDA12は、下側ハウジングA11の内側面(主面)に設けられ、下側ハウジングA11に設けられた開口部から当該下側LCDA12の画面が露出される。ゲーム装置A10を使用しない場合には閉状態としておくことによって、下側LCDA12の画面が汚れたり傷ついたりすることを防止することができる。下側LCDA12の画素数は、例えば、256dot×192dot(横×縦)であってもよい。下側LCDA12は、後述する上側LCDA22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCDA12として、任意の解像度の表示装置を利用することができる。
図1に示されるように、ゲーム装置A10は、入力装置として、タッチパネルA13を備えている。タッチパネルA13は、下側LCDA12の画面上に装着されている。なお、本実施形態では、タッチパネルA13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネルA13として、下側LCDA12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネルA13の解像度と下側LCDA12の解像度が一致している必要はない。また、下側ハウジングA11の上側面には挿入口A17(図1および図3(d)に示す点線)が設けられている。挿入口A17は、タッチパネルA13に対する操作を行うために用いられるタッチペンA28を収納することができる。なお、タッチパネルA13に対する入力は通常タッチペンA28を用いて行われるが、タッチペンA28に限らずユーザの指でタッチパネルA13に対する入力をすることも可能である。
各操作ボタンA14A〜A14Lは、所定の入力を行うための入力装置である。図1に示されるように、下側ハウジングA11の内側面(主面)には、各操作ボタンA14A〜A14Lのうち、十字ボタンA14A(方向入力ボタンA14A)、ボタンA14B、ボタンA14C、ボタンA14D、ボタンA14E、電源ボタンA14F、セレクトボタンA14J、HOMEボタンA14K、およびスタートボタンA14Lが、設けられる。十字ボタンA14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタンA14B、ボタンA14C、ボタンA14D、ボタンA14Eは、十字状に配置される。ボタンA14A〜A14E、セレクトボタンA14J、HOMEボタンA14K、およびスタートボタンA14Lには、ゲーム装置A10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタンA14Aは選択操作等に用いられ、各操作ボタンA14B〜A14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタンA14Fは、ゲーム装置A10の電源をオン/オフするために用いられる。
アナログスティックA15は、方向を指示するデバイスであり、下側ハウジングA11の内側面の下側LCDA12より左側領域の上部領域に設けられる。図1に示すように、十字ボタンA14Aは下側LCDA12より左側領域の下部領域に設けられるので、アナログスティックA15は、十字ボタンA14Aの上方に設けられる。また、アナログスティックA15、および、十字ボタンA14Aは、下側ハウジングを把持した左手の親指で操作可能な位置に設計される。また、アナログスティックA15を上部領域に設けたことにより、下側ハウジングA11を把持する左手の親指が自然と位置するところにアナログスティックA15が配され、十字ボタンA14Aは、左手の親指を少し下にずらした位置に配される。アナログスティックA15は、そのキートップが、下側ハウジングA11の内側面に平行にスライドするように構成されている。アナログスティックA15は、ゲーム装置A10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置A10によって実行される場合、アナログスティックA15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティックA15のキートップがスライドした方向に移動される。なお、アナログスティックA15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
十字状に配置される、ボタンA14B、ボタンA14C、ボタンA14D、ボタンA14Eの4つのボタンは、下側ハウジングA11を把持する右手の親指が自然と位置するところに配置される。また、これらの4つのボタンと、アナログスティックA15とは、下側LCDA12を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの4つのボタンを使用して方向指示入力をすることも可能である。
また、下側ハウジングA11の内側面には、マイクロフォン用孔A18が設けられる。マイクロフォン用孔A18の下部には後述する音声入力装置としてのマイク(図6参照)が設けられ、当該マイクがゲーム装置A10の外部の音を検出する。
図3(a)は閉状態におけるゲーム装置A10の左側面図であり、図3(b)は閉状態におけるゲーム装置A10の正面図であり、図3(c)は閉状態におけるゲーム装置A10の右側面図であり、図3(d)は閉状態におけるゲーム装置A10の背面図である。図3(b)および(d)に示されるように、下側ハウジングA11の上側面には、LボタンA14GおよびRボタンA14Hが設けられている。LボタンA14Gは、下側ハウジングA11の上面の左端部に設けられ、RボタンA14Hは、下側ハウジングA11の上面の右端部に設けられる。LボタンA14GおよびRボタンA14Hは、例えば、撮像部のシャッターボタン(撮影指示ボタン)として機能することができる。また、図3(a)に示されるように、下側ハウジングA11の左側面には、音量ボタンA14Iが設けられる。音量ボタンA14Iは、ゲーム装置A10が備えるスピーカの音量を調整するために用いられる。
図3(a)に示されるように、下側ハウジングA11の左側面には開閉可能なカバー部A11Cが設けられる。このカバー部A11Cの内側には、ゲーム装置A10とデータ保存用外部メモリA45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリA45は、コネクタに着脱自在に装着される。データ保存用外部メモリA45は、例えば、ゲーム装置A10によって撮像された画像のデータを記憶(保存)するために用いられる。なお、上記コネクタおよびそのカバー部A11Cは、下側ハウジングA11の右側面に設けられてもよい。
また、図3(d)に示されるように、下側ハウジングA11の上側面には、ゲーム装置A10とゲームプログラムを記録した外部メモリA44を挿入するための挿入口A11Dが設けられ、その挿入口A11Dの内部には、外部メモリA44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリA44がゲーム装置A10に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタおよびその挿入口A11Dは、下側ハウジングA11の他の側面(例えば、右側面等)に設けられてもよい。
また、図1および図3(c)に示されるように、下側ハウジングA11の下側面にはゲーム装置A10の電源のON/OFF状況をユーザに通知する第1LEDA16A、下側ハウジングA11の右側面にはゲーム装置A10の無線通信の確立状況をユーザに通知する第2LEDA16Bが設けられる。ゲーム装置A10は他の機器との間で無線通信を行うことが可能であり、第2LEDA16Bは、無線通信が確立している場合に点灯する。ゲーム装置A10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジングA11の右側面には、この無線通信の機能を有効/無効にする無線スイッチA19が設けられる(図3(c)参照)。
なお、図示は省略するが、下側ハウジングA11には、ゲーム装置A10の電源となる充電式電池が収納され、下側ハウジングA11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
(上側ハウジングの説明)
次に、上側ハウジングA21の構成について説明する。図1〜図3に示すように、上側ハウジングA21には、上側LCD(Liquid Crystal Display:液晶表示装置)A22、外側撮像部A23(外側撮像部(左)A23aおよび外側撮像部(右)A23b)、内側撮像部A24、3D調整スイッチA25、および、3DインジケータA26が設けられる。以下、これらの詳細について説明する。
図1に示すように、上側LCDA22は上側ハウジングA21に収納される。上側LCDA22は、横長形状であり、長辺方向が上側ハウジングA21の長辺方向に一致するように配置される。上側LCDA22は上側ハウジングA21の中央に配置される。上側LCDA22の画面の面積は、下側LCDA12の画面の面積よりも大きく設定される。また、上側LCDA22の画面は、下側LCDA12の画面よりも横長に設定される。すなわち、上側LCDA22の画面のアスペクト比における横幅の割合は、下側LCDA12の画面のアスペクト比における横幅の割合よりも大きく設定される。
上側LCDA22の画面は、上側ハウジングA21の内側面(主面)A21Bに設けられ、上側ハウジングA21に設けられた開口部から当該上側LCDA22の画面が露出される。また、図2に示すように、上側ハウジングA21の内側面は、透明なスクリーンカバーA27によって覆われている。当該スクリーンカバーA27は、上側LCDA22の画面を保護するとともに、上側LCDA22と上側ハウジングA21の内側面と一体的にさせ、これにより統一感を持たせている。上側LCDA22の画素数は、例えば、640dot×200dot(横×縦)であってもよい。なお、本実施形態では上側LCDA22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCDA22として、任意の解像度の表示装置を利用することができる。
上側LCDA22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。または、左目用画像と右目用画像とが交互に表示される方式の表示装置であってもよい。また、本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCDA22はパララックスバリア方式のものとする。上側LCDA22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCDA22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCDA22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである)。このように、上側LCDA22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチA25によって行われる。
外側撮像部A23は、上側ハウジングA21の外側面(上側LCDA22が設けられた主面と反対側の背面)A21Dに設けられた2つの撮像部(A23aおよびA23b)の総称である。外側撮像部(左)A23aと外側撮像部(右)A23bの撮像方向は、いずれも当該外側面A21Dの外向きの法線方向である。また、これらの撮像部はいずれも、上側LCDA22の表示面(内側面)の法線方向と180度反対の方向に設計される。すなわち、外側撮像部(左)A23aの撮像方向および外側撮像部(右)A23bの撮像方向は、平行である。外側撮像部(左)A23aと外側撮像部(右)A23bとは、ゲーム装置A10が実行するプログラムによって、ステレオカメラとして使用することが可能である。また、プログラムによっては、2つの外側撮像部(A23aおよびA23b)のいずれか一方を単独で用いて、外側撮像部A23を非ステレオカメラとして使用することも可能である。また、プログラムによっては、2つの外側撮像部(A23aおよびA23b)で撮像した画像を合成してまたは補完的に使用することにより撮像範囲を広げた撮像をおこなうことも可能である。本実施形態では、外側撮像部A23は、外側撮像部(左)A23aおよび外側撮像部(右)A23bの2つの撮像部で構成される。外側撮像部(左)A23aおよび外側撮像部(右)A23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図1の破線および図3(b)の実線で示されるように、外側撮像部A23を構成する外側撮像部(左)A23aおよび外側撮像部(右)A23bは、上側LCDA22の画面の横方向と平行に並べられて配置される。すなわち、2つの撮像部を結んだ直線が上側LCDA22の画面の横方向と平行になるように、外側撮像部(左)A23aおよび外側撮像部(右)A23bが配置される。図1の破線で示すA23aおよびA23bは、上側ハウジングA21の内側面とは反対側の外側面に存在する外側撮像部(左)A23aおよび外側撮像部(右)A23bをそれぞれ表している。図1に示すように、ユーザが上側LCDA22の画面を正面から視認した場合に、外側撮像部(左)A23aは左側に外側撮像部(右)A23bは右側にそれぞれ位置している。外側撮像部A23をステレオカメラとして機能させるプログラムが実行されている場合、外側撮像部(左)A23aは、ユーザの左目で視認される左目用画像を撮像し、外側撮像部(右)A23bは、ユーザの右目で視認される右目用画像を撮像する。外側撮像部(左)A23aおよび外側撮像部(右)A23bの間隔は、人間の両目の間隔程度に設定され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、外側撮像部(左)A23aおよび外側撮像部(右)A23bの間隔は、この範囲に限らない。
なお、本実施例においては、外側撮像部(左)A23aおよび外側撮像部(右)A23はハウジングに固定されており、撮像方向を変更することはできない。
また、外側撮像部(左)A23aおよび外側撮像部(右)A23bは、上側LCDA22(上側ハウジングA21)の左右方向に関して中央から対称となる位置にそれぞれ配置される。すなわち、外側撮像部(左)A23aおよび外側撮像部(右)A23bは、上側LCDA22を左右に2等分する線に対して対称の位置にそれぞれ配置される。また、外側撮像部(左)A23aおよび外側撮像部(右)A23bは、上側ハウジングA21を開いた状態において、上側ハウジングA21の上部であって、上側LCDA22の画面の上端よりも上方の位置の裏側に配置される。すなわち、外側撮像部(左)A23aおよび外側撮像部(右)A23bは、上側ハウジングA21の外側面であって、上側LCDA22を外側面に投影した場合、投影した上側LCDA22の画面の上端よりも上方に配置される。
このように、外側撮像部A23の2つの撮像部(A23aおよびA23b)が、上側LCDA22の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側LCDA22を正視した場合に、外側撮像部A23の撮像方向をユーザの視線方向と一致させることができる。また、外側撮像部A23は、上側LCDA22の画面の上端より上方の裏側の位置に配置されるため、外側撮像部A23と上側LCDA22とが上側ハウジングA21の内部で干渉することがない。従って、外側撮像部A23を上側LCDA22の画面の裏側に配置する場合と比べて、上側ハウジングA21を薄く構成することが可能となる。
内側撮像部A24は、上側ハウジングA21の内側面(主面)A21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部A24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図1に示すように、内側撮像部A24は、上側ハウジングA21を開いた状態において、上側ハウジングA21の上部であって、上側LCDA22の画面の上端よりも上方に配置され、上側ハウジングA21の左右方向に関して中央の位置(上側ハウジングA21(上側LCDA22の画面)を左右に2等分する線の線上)に配置される。具体的には、図1および図3(b)に示されるように、内側撮像部A24は、上側ハウジングA21の内側面であって、外側撮像部A23の左右の撮像部(外側撮像部(左)A23aおよび外側撮像部(右)A23b)の中間の裏側の位置に配置される。すなわち、上側ハウジングA21の外側面に設けられた外側撮像部A23の左右の撮像部を上側ハウジングA21の内側面に投影した場合、当該投影した左右の撮像部の中間に、内側撮像部A24が設けられる。図3(b)で示される破線A24は、上側ハウジングA21の内側面に存在する内側撮像部A24を表している。
このように、内側撮像部A24は、外側撮像部A23とは反対方向を撮像する。内側撮像部A24は、上側ハウジングA21の内側面であって、外側撮像部A23の左右の撮像部の中間位置の裏側に設けられる。これにより、ユーザが上側LCDA22を正視した際、内側撮像部A24でユーザの顔を正面から撮像することができる。また、外側撮像部A23の左右の撮像部と内側撮像部A24とが上側ハウジングA21の内部で干渉することがないため、上側ハウジングA21を薄く構成することが可能となる。
3D調整スイッチA25は、スライドスイッチであり、上述のように上側LCDA22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチA25は、上側LCDA22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。図1〜図3に示されるように、3D調整スイッチA25は、上側ハウジングA21の内側面および右側面の端部に設けられ、ユーザが上側LCDA22を正視した場合に、当該3D調整スイッチA25を視認できる位置に設けられる。また、3D調整スイッチA25の操作部は、内側面および右側面の両方に突出しており、どちらからも視認および操作することができる。なお、3D調整スイッチA25以外のスイッチは全て下側ハウジングA11に設けられる。
図4は、図1に示す上側ハウジングA21のA−A’線断面図である。図4に示すように、上側ハウジングA21の内側面の右端部には、凹部A21Cが形成され、当該凹部A21Cに3D調整スイッチA25が設けられる。3D調整スイッチA25は、図1および図2に示されるように、上側ハウジングA21の正面および右側面から視認可能に配置される。3D調整スイッチA25のスライダA25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダA25aの位置に応じて上側LCDA22の表示モードが設定される。
図5Aから図5Cは、3D調整スイッチA25のスライダA25aがスライドする様子を示す図である。図5Aは、3D調整スイッチA25のスライダA25aが最下点(第3の位置)に存在する様子を示す図である。図5Bは、3D調整スイッチA25のスライダA25aが最下点よりも上方位置(第1の位置)に存在する様子を示す図である。図5Cは、3D調整スイッチA25のスライダA25aが最上点(第2の位置)に存在する様子を示す図である。
図5Aに示すように、3D調整スイッチA25のスライダA25aが最下点位置(第3の位置)に存在する場合、上側LCDA22は平面表示モードに設定され、上側LCDA22の画面には平面画像が表示される(なお、上側LCDA22を立体表示モードのままとして、左目用画像と右目用画像を同一の画像とすることにより平面表示してもよい)。一方、図5Bに示す位置(最下点より上側の位置(第1の位置))から図5Cに示す位置(最上点の位置(第2の位置))までの間にスライダA25aが存在する場合、上側LCDA22は立体表示モードに設定される。この場合、上側LCDA22の画面には立体視可能な画像が表示される。スライダA25aが第1の位置から第2の位置の間に存在する場合、スライダA25aの位置に応じて、立体画像の見え方が調整される。具体的には、スライダA25aの位置に応じて、右目用画像および左目用画像の横方向の位置のずれ量が調整される。3D調整スイッチA25のスライダA25aは、第3の位置で固定されるように構成されており、第1の位置と第2の位置との間では上下方向に任意の位置にスライド可能に構成されている。例えば、スライダA25aは、第3の位置において、3D調整スイッチA25を形成する側面から図5Aに示す横方向に突出した凸部(図示せず)によって固定されて、所定以上の力が上方に加わらないと第3の位置よりも上方にスライドしないように構成されている。第3の位置から第1の位置にスライダA25aが存在する場合、立体画像の見え方は調整されないが、これはいわゆるあそびである。他の例においては、あそびをなくして、第3の位置と第1の位置とを同じ位置としてもよい。また、第3の位置を第1の位置と第2の位置の間としてもよい。その場合、スライダを第3の位置から第1の位置の方向に動かした場合と、第2の方向に動かした場合とで、右目用画像および左目用画像の横方向の位置のずれ量の調整する方向が逆になる。
3DインジケータA26は、上側LCDA22が立体表示モードか否かを示す。3DインジケータA26は、LEDであり、上側LCDA22の立体表示モードが有効の場合に点灯する。なお、3DインジケータA26は、上側LCDA22が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているとき(すなわち、3D調整スイッチが上記第1の位置から上記第2の位置にあるときに、左目用画像と右目用画像が異なるような画像処理が実行されているとき)に限り、点灯するようにしてもよい。図1に示されるように、3DインジケータA26は、上側ハウジングA21の内側面に設けられ、上側LCDA22の画面近傍に設けられる。このため、ユーザが上側LCDA22の画面を正視した場合、ユーザは3DインジケータA26を視認しやすい。従って、ユーザは上側LCDA22の画面を視認している状態でも、上側LCDA22の表示モードを容易に認識することができる。
また、上側ハウジングA21の内側面には、スピーカ孔A21Eが設けられる。後述するスピーカA43からの音声がこのスピーカ孔A21Eから出力される。
(ゲーム装置A10の内部構成)
次に、図6を参照して、ゲーム装置A10の内部の電気的構成について説明する。図6は、ゲーム装置A10の内部構成を示すブロック図である。図6に示すように、ゲーム装置A10は、上述した各部に加えて、情報処理部A31、メインメモリA32、外部メモリインターフェイス(外部メモリI/F)A33、データ保存用外部メモリI/FA34、データ保存用内部メモリA35、無線通信モジュールA36、ローカル通信モジュールA37、リアルタイムクロック(RTC)A38、加速度センサA39、電源回路A40、およびインターフェイス回路(I/F回路)A41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジングA11(または上側ハウジングA21でもよい)内に収納される。
情報処理部A31は、所定のプログラムを実行するためのCPU(Central Processing Unit)A311、画像処理を行うGPU(Graphics Processing Unit)A312等を含む情報処理手段である。情報処理部A31のCPUA311は、ゲーム装置A10内のメモリ(例えば外部メモリI/FA33に接続された外部メモリA44やデータ保存用内部メモリA35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理(例えば、撮影処理や、後述する画像表示処理)を実行する。なお、情報処理部A31のCPUA311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部A31は、VRAM(Video RAM)A313を含む。情報処理部A31のGPUA312は、情報処理部A31のCPUA311からの命令に応じて画像を生成し、VRAMA313に描画する。そして、情報処理部A31のGPUA312は、VRAMA313に描画された画像を上側LCDA22及び/又は下側LCDA12に出力し、上側LCDA22及び/又は下側LCDA12に当該画像が表示される。
情報処理部A31には、メインメモリA32、外部メモリI/FA33、データ保存用外部メモリI/FA34、および、データ保存用内部メモリA35が接続される。外部メモリI/FA33は、外部メモリA44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/FA34は、データ保存用外部メモリA45を着脱自在に接続するためのインターフェイスである。
メインメモリA32は、情報処理部A31(のCPUA311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリA32は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリA44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリA32として例えばPSRAM(Pseudo−SRAM)を用いる。
外部メモリA44は、情報処理部A31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリA44は、例えば読み取り専用の半導体メモリで構成される。外部メモリA44が外部メモリI/FA33に接続されると、情報処理部A31は外部メモリA44に記憶されたプログラムを読み込むことができる。情報処理部A31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリA45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリA45には、外側撮像部A23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリA45がデータ保存用外部メモリI/FA34に接続されると、情報処理部A31はデータ保存用外部メモリA45に記憶された画像を読み込み、上側LCDA22及び/又は下側LCDA12に当該画像を表示することができる。
データ保存用内部メモリA35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリA35には、無線通信モジュールA36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
無線通信モジュールA36は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュールA37は、所定の通信方式(例えば独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュールA36およびローカル通信モジュールA37は情報処理部A31に接続される。情報処理部A31は、無線通信モジュールA36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュールA37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
また、情報処理部A31には、加速度センサA39が接続される。加速度センサA39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサA39は、下側ハウジングA11の内部に設けられる。加速度センサA39は、図1に示すように、下側ハウジングA11の長辺方向をx軸、下側ハウジングA11の短辺方向をy軸、下側ハウジングA11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサA39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサA39は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部A31は、加速度センサA39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置A10の姿勢や動きを検出することができる。
また、情報処理部A31には、RTCA38および電源回路A40が接続される。RTCA38は、時間をカウントして情報処理部A31に出力する。情報処理部A31は、RTCA38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路A40は、ゲーム装置A10が有する電源(下側ハウジングA11に収納される上記充電式電池)からの電力を制御し、ゲーム装置A10の各部品に電力を供給する。
また、情報処理部A31には、I/F回路A41が接続される。I/F回路A41には、マイクA42およびスピーカA43が接続される。具体的には、I/F回路A41には、図示しないアンプを介してスピーカA43が接続される。マイクA42は、ユーザの音声を検知して音声信号をI/F回路A41に出力する。アンプは、I/F回路A41からの音声信号を増幅し、音声をスピーカA43から出力させる。また、タッチパネルA13はI/F回路A41に接続される。I/F回路A41は、マイクA42およびスピーカA43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネルA13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部A31に出力する。タッチ位置データは、タッチパネルA13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネルA13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部A31は、タッチ位置データを取得することにより、タッチパネルA13に対して入力が行われた位置を知ることができる。
操作ボタンA14は、上記各操作ボタンA14A〜A14Lからなり、情報処理部A31に接続される。操作ボタンA14から情報処理部A31へは、各操作ボタンA14A〜A14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部A31は、操作ボタンA14から操作データを取得することによって、操作ボタンA14に対する入力に従った処理を実行する。
下側LCDA12および上側LCDA22は情報処理部A31に接続される。下側LCDA12および上側LCDA22は、情報処理部A31(のGPUA312)の指示に従って画像を表示する。本実施形態では、情報処理部A31は、上側LCDA22に立体画像(立体視可能な画像)を表示させる。
具体的には、情報処理部A31は、上側LCDA22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCDA22の視差バリアがONになっている場合、情報処理部A31のVRAMA313に格納された右目用画像と左目用画像とが、上側LCDA22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAMA313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCDA22の画面に表示される。そして、上側LCDA22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCDA22の画面には立体視可能な画像が表示される。
外側撮像部A23および内側撮像部A24は、情報処理部A31に接続される。外側撮像部A23および内側撮像部A24は、情報処理部A31の指示に従って画像を撮像し、撮像した画像データを情報処理部A31に出力する。
3D調整スイッチA25は、情報処理部A31に接続される。3D調整スイッチA25は、スライダA25aの位置に応じた電気信号を情報処理部A31に送信する。
また、3DインジケータA26は、情報処理部A31に接続される。情報処理部A31は、3DインジケータA26の点灯を制御する。例えば、情報処理部A31は、上側LCDA22が立体表示モードである場合、3DインジケータA26を点灯させる。以上がゲーム装置A10の内部構成の説明である。
(ゲーム装置A10の動作の概要)
以下、本実施形態におけるゲーム装置A10の動作の概要について説明する。本実施形態では、画像表示プログラムに基づいて、外側撮像部A23(外側撮像部(左)A23a、外側撮像部(右)A23b)によって現在撮像されている実世界の画像と、3次元の仮想空間に存在する仮想オブジェクトの画像とを合成した合成画像が、上側LCDA22の画面に立体視可能に表示される。
(実世界画像の立体視表示)
外側撮像部A23で撮影された2つの撮影画像は所定の視差を有するように上側LCDに供給されて立体視表示される。
図7は、外側撮像部A23によって3つのボールA60a〜A60c(実オブジェクト)が撮像されているときに上側LCDA22の画面に表示される立体画像の一例を示している。外側撮像部A23によって3つのボールA60a〜A60cが撮像されると、上側LCDA22には、これらのボールA60a〜A60cが立体視可能に表示される。図7に示されるように、上側LCDA22の画面上では、外側撮像部A23に最も近いボールA60aが最も手前に位置するようにユーザに視認され、外側撮像部A23から最も遠いボールA60cが最も遠くに位置するようにユーザに視認される。なお、図7では、理解を容易にするために、上側LCDA22の画面からボールをはみ出して図示しているが、実際にはボールは画面内に表示される。後述の図8や図10についても同様である。なお、図7では、後述するマーカーA61(図8参照)が外側撮像部A23によって撮像されていないため、上側LCDA22の画面には仮想オブジェクトは表示されていない。また、図7、図8、図10等においては、表示対象が飛び出ているように視認される様子を図示しているが、立体視可能に表示する、と言った場合、必ずしも飛び出し方向に視認される場合のみでなく、画面より奥側に、奥行きを持って表示される場合も含む。
(実世界画像およびCG画像の立体視表示)
図8は、外側撮像部A23によってマーカーA61(実オブジェクト)が撮像されているときに上側LCDA22の画面に表示される立体画像の一例を示している。図8に示すように、マーカーA61には、矢印を含む正方形が描かれており、CPUA311は、外側撮像部A23から取得される画像に対して例えばパターンマッチング等の画像処理を行うことによって、当該画像にマーカーが含まれているか否かを判定することができる。外側撮像部A23によってマーカーA61が撮像されているときには、上側LCDA22には、実世界画像としてマーカーA61が立体視可能に表示されるとともに、マーカーA61の位置に仮想オブジェクトA62(例えば犬を模した仮想オブジェクト)が立体視可能に合成表示される。なお、図9に示すように、マーカーA61には向き(前方向、右方向、上方向)が定義されており、マーカーA61の姿勢に応じた姿勢で仮想オブジェクトを配置することができる。例えば、仮想オブジェクトA62の前方向がマーカーA61の前方向と一致するように、マーカーA61の上に仮想オブジェクトA62を配置することが可能である。
図10は、外側撮像部A23によってマーカーA61が撮像されているときに上側LCDA22の画面に表示される立体画像の他の一例を示している。このように、ユーザーがゲーム装置A10を移動させることによって、上側LCDA22の画面に表示されるマーカーA61の位置および向きが変化すると、それに追従するように、仮想オブジェクトA62の位置および向きが変化する。よって、ユーザーには仮想オブジェクトA62があたかも実世界に本当に存在しているかのように見える。
以下、図11〜図40を参照して、ゲーム装置A10において画像表示プログラムに基づいて実行される画像表示処理の詳細について説明する。
(メモリマップ)
まず、画像表示処理の際にメインメモリA32に記憶される主なデータについて説明する。図11は、ゲーム装置A10のメインメモリA32のメモリマップを示す図である。図11に示されるように、メインメモリA32には、画像表示プログラムA70、最新左実世界画像A71L、最新右実世界画像A71R、表示用左実世界画像A72L、表示用右実世界画像A72R、立体視ゼロ距離A73、仮想オブジェクト情報A74、左変換行列A75L、右変換行列A75R、左ビュー行列A76L、右ビュー行列A76R、左射影行列A77L、右射影行列A77R、表示モードA78、マーカー認識モードA79、メイン実世界画像識別情報A80、各種変数A81等が記憶される。
画像表示プログラムA70は、CPUA311に上記画像表示処理を実行させるためのプログラムである。
最新左実世界画像A71Lは、外側撮像部(左)A23aによって撮像された最新の画像である。
最新右実世界画像A71Rは、外側撮像部(右)A23bによって撮像された最新の画像である。
表示用左実世界画像A72Lは、外側撮像部(左)A23aによって撮像された画像のうち、上側LCDA22に表示されることが決定された最新の画像である。
表示用右実世界画像A72Rは、外側撮像部(右)A23bによって撮像された画像のうち、上側LCDA22に表示されることが決定された最新の画像である。
立体視ゼロ距離A73は、外側撮像部A23から撮影方向にどれだけの距離だけ離れた物体が、上側LCDA22の画面に立体表示されたときに上側LCDA22の画面と同じ奥行き位置にあるように視認されるかを示す変数であり、例えば、センチメートルの単位で表される。本実施形態では、立体視ゼロ距離A73は25cmで固定とするが、これは単なる一例に過ぎず、ユーザーの指示に応じて、またはコンピュータによって自動的に、立体視ゼロ距離A73を随時変更するようにしても構わない。立体視ゼロ距離A73は、マーカーA61からの距離や、外側撮像部A23とマーカーA61の間の距離における比で指定しても構わない。また、必ずしも現実空間の距離として指定せず、仮想空間における距離で指定してもよい。マーカーA61のサイズが既知のときなどには、実世界における長さの単位と仮想空間における長さの単位とを一致させることができる。このように両者の単位を一致させることができる場合には、立体視ゼロ距離A73を実世界における長さの単位で設定できる。しかしながら、両者の単位を一致させることができない場合には、立体視ゼロ距離A73を仮想空間における長さの単位で設定してもよい。なお、後述の通り、本実施形態においては、マーカーA61のサイズを用いずに、実世界における長さの単位と仮想空間における長さの単位とを一致させることができる。
仮想オブジェクト情報A74は、前述の仮想オブジェクトA62に関連する情報であって、仮想オブジェクトA62の形状を表す3Dモデルデータ(ポリゴンデータ)や、仮想オブジェクトA62の模様を表すテクスチャデータや、仮想空間における仮想オブジェクトA62の位置や姿勢の情報などを含む。
左変換行列A75Lは、左実世界画像におけるマーカーA61の位置および姿勢を認識することにより計算される行列であり、マーカーA61の位置および姿勢を基準として設定される座標系(マーカー座標系)で表された座標を外側撮像部(左)A23aの位置および姿勢を基準として表された座標系(外側撮像部(左)座標系)に変換する座標変換行列である。左変換行列A75Lは、マーカーA61の位置および姿勢に対する外側撮像部(左)A23aの相対的な位置および姿勢の情報を含む行列であり、より具体的には、マーカー座標系における外側撮像部(左)A23aの位置および姿勢の情報を含む行列である。
右変換行列A75Rは、右実世界画像におけるマーカーA61の位置および姿勢を認識することにより計算される行列であり、マーカー座標系で表された座標を外側撮像部(右)A23bの位置および姿勢を基準として表された座標系(外側撮像部(右)座標系)に変換する座標変換行列である。右変換行列A75Rは、マーカーA61の位置および姿勢に対する外側撮像部(右)A23bの相対的な位置および姿勢の情報を含む行列であり、より具体的には、マーカー座標系における外側撮像部(右)A23bの位置および姿勢の情報を含む行列である。
なお、本明細書において、マーカー座標系から外側撮像部(左)座標系または外側撮像部(右)座標系への変換行列のことを「マーカー・カメラ変換行列」と呼ぶ。左変換行列A75Lおよび右変換行列A75Rは「マーカー・カメラ変換行列」である。
左ビュー行列A76Lは、左仮想カメラから見た仮想オブジェクトA62を描画する際に用いられる行列であり、仮想世界のワールド座標系で表された座標を左仮想カメラ座標系で表された座標へと変換するための座標変換行列である。左ビュー行列A76Lは、仮想世界のワールド座標系における左仮想カメラの位置および姿勢の情報を含む行列である。
右ビュー行列A76Rは、右仮想カメラから見た仮想オブジェクトA62を描画する際に用いられる行列であり、仮想世界のワールド座標系で表された座標を右仮想カメラ座標系で表された座標へと変換するための座標変換行列である。右ビュー行列A76Rは、仮想世界のワールド座標系における右仮想カメラの位置および姿勢の情報を含む行列である。
左射影行列A77Lは、左仮想カメラから見た仮想世界(仮想世界に存在する仮想オブジェクトA62)を描画する際に用いられる行列であり、左仮想カメラ座標系で表された座標をスクリーン座標系で表された座標へと変換するための座標変換行列である。
右射影行列A77Rは、右仮想カメラから見た仮想世界(仮想世界に存在する仮想オブジェクトA62)を描画する際に用いられる行列であり、右仮想カメラ座標系で表された座標をスクリーン座標系で表された座標へと変換するための座標変換行列である。
表示モードA78は、現在の処理モードを示すデータであって、より具体的には、実世界画像と仮想空間画像とを同期させて合成表示する同期表示モードか、実世界画像と仮想空間画像とを同期させずに合成表示する非同期表示モードかを示すデータである。
マーカー認識モードA79は、現在の処理モードを示すデータであって、より具体的には、左実世界画像と右実世界画像のいずれか一方のみに対してマーカー認識処理を行う片画像認識モードか、左実世界画像と右実世界画像の両方に対してそれぞれマーカー認識処理を行う両画像認識モードかを示すデータである。
メイン実世界画像識別情報A80は、左実世界画像と右実世界画像のいずれがメイン実世界画像なのかを示すデータである。上記の片画像認識モードでは、メイン実世界画像に対してのみマーカー認識処理が行われ、他方の実世界画像(以下、サブ実世界画像と称す)に対してはマーカー認識処理は行われない。
各種変数A81は、画像表示プログラムA70の実行の際に用いられる変数であって、図12に示すような変数を含む。これらの変数の意味については、以下の説明において随時説明する。
ゲーム装置A10の電源が投入されると、ゲーム装置A10の情報処理部A31(CPUA311)は、図示しないROMに記憶されている起動プログラムを実行し、これによってメインメモリA32等の各ユニットが初期化される。次に、データ保存用内部メモリA35に記憶された画像表示プログラムがメインメモリA32に読み込まれ、情報処理部A31のCPUA311によって当該画像表示プログラムの実行が開始される。
以下、図13〜図19のフローチャートを参照して、画像表示プログラムに基づいて実行される処理の流れを説明する。なお、図13〜図19のフローチャートは、単なる一例に過ぎない。したがって、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、図13〜図19のフローチャートの全てのステップの処理をCPUA311が実行するものとして説明するが、図13〜図19のフローチャートの一部のステップの処理を、CPUA311以外のプロセッサや専用回路が実行するようにしてもよい。
(マーカー処理)
図13は、画像表示プログラムA70に基づいてCPUA311によって実行されるマーカー処理の流れを示すフローチャートである。マーカー処理は、後述するメイン処理と並列的に実行される処理であり、本実施形態では、CPUA311がアイドル状態のときに実行される。以下、マーカー処理の詳細について説明する。
図13のステップSA10において、CPUA311は、外側撮像部A23から両方の実世界画像(すなわち左実世界画像および右実世界画像)を取得したか否かを判断し、両方の実世界画像が取得されている場合には処理はステップSA11に進む。外側撮像部A23から取得された最新の左実世界画像は、最新左実世界画像A71LとしてメインメモリA32に格納され、最新の右実世界画像は、最新右実世界画像A71RとしてメインメモリA32に格納される。
なお、前述のように、上側ハウジングA21において、外側撮像部(左)A23aと外側撮像部(右)A23bは一定の間隔(例えば3.5cm、以下、撮像部間距離)だけ離れている。したがって、外側撮像部(左)A23aと外側撮像部(右)A23bによって同時にマーカーA61を撮像した場合、図20に示すように、外側撮像部(左)A23aによって撮像された左実世界画像におけるマーカーA61の位置及び姿勢と、外側撮像部(右)A23bによって撮像された右実世界画像におけるマーカーA61の位置及び姿勢との間には、視差によるズレが生じる。
ステップSA11において、CPUA311は、メイン実世界画像に対してマーカー認識処理を行う。より具体的には、パターンマッチング手法等によってメイン実世界画像にマーカーA61が含まれているか否かを判断し、メイン実世界画像にマーカーA61が含まれている場合には、メイン実世界画像におけるマーカーA61の位置および姿勢に基づいて、左変換行列A75Lまたは右変換行列A75Rを算出する(メイン実世界画像が左実世界画像である場合には、左変換行列A75Lを算出し、メイン実世界画像が右実世界画像である場合には、右変換行列A75Rを算出する)。
なお、左変換行列A75Lは、左実世界画像におけるマーカーA61の位置および姿勢に基づいて計算される外側撮像部(左)A23aの位置および姿勢を反映した行列である。より正確には、図21に示すように、マーカー座標系(実世界におけるマーカーA61の位置を原点とし、マーカーA61の縦方向、横方向、法線方向の各方向を各軸とする座標系)で表された座標を、左実世界画像におけるマーカーA61の位置および姿勢に基づいて計算された外側撮像部(左)A23aの位置および姿勢を基準とした外側撮像部(左)座標系で表される座標へと変換するための座標変換行列である。
また、右変換行列A75Rは、右実世界画像におけるマーカーA61の位置および姿勢に基づいて計算される外側撮像部(右)A23bの位置および姿勢を反映した行列である。より正確には、図22に示すように、マーカー座標系で表された座標を、右実世界画像におけるマーカーA61の位置および姿勢に基づいて計算された外側撮像部(右)A23bの位置および姿勢を基準とした外側撮像部(右)座標系で表される座標へと変換するための座標変換行列である。
なお、マーカー認識精度に誤差が全く無く、かつゲーム装置A10に対する外側撮像部(左)A23aおよび外側撮像部(右)A23bの取り付け精度に誤差が全く無いと仮定すると、右実世界画像のマーカー認識結果である右変換行列A75Rが示す外側撮像部(右)A23bの位置は、左実世界画像のマーカー認識結果である左変換行列A75Lが示す外側撮像部(左)A23aの位置を、外側撮像部(左)座標系のx軸方向(ゲーム装置A10の横方向であり使用時の水平方向)に沿って一定距離(撮像部間距離)だけずらした位置となり、右変換行列A75Rが示す外側撮像部(右)A23bの姿勢と左変換行列A75Lが示す外側撮像部(左)A23aの姿勢はゲーム装置A10における外側撮像部(左)A23aと外側撮像部(右)A23bの取り付け状態と同じとなる。本実施例においては、ゲーム装置A10において外側撮像部(左)A23aと外側撮像部(右)A23bは平行に取り付けられるように設計さているので、外側撮像部(左)座標系のx軸,y軸,z軸が、外側撮像部(右)座標系のx軸,y軸,z軸とそれぞれ平行となる。しかしながら実際には、マーカー認識精度にも、ゲーム装置A10に対する外側撮像部(左)A23aおよび外側撮像部(右)A23bの取り付け精度にも誤差があるため、左変換行列A75Lが示す外側撮像部(左)A23aの位置及び姿勢と、右変換行列A75Rが示す外側撮像部(右)A23bの位置及び姿勢は、理想的な関係にはならない。例えば、左変換行列A75Lと右変換行列A75Rは、外側撮像部(左)A23aと外側撮像部(右)A23bが近すぎたり、離れすぎたり、外側撮像部(左)A23aの姿勢と外側撮像部(右)A23bの姿勢が異なったりするような行列になる。また、外側撮像部(左)A23aの姿勢と外側撮像部(右)A23bの姿勢が平行でないような行列になる。
ここで、ARでは、マーカー座標系を外側撮像部(左)座標系または外側撮像部(右)座標系に変換する行列を仮想カメラのビュー行列に指定することにより、実世界画像にCG画像を合成することができるが、単に、左変換行列A75Lを左ビュー行列A76Lに指定し、右変換行列A75Rを右ビュー行列A76Rに指定して仮想空間画像を上側LCDA22に立体表示する場合には、仮想オブジェクトA62が正常に立体視できないことがあり得る。そこで本実施形態では、後述する説明から明らかになるように、左実世界画像および右実世界画像のいずれか一方のマーカー認識結果(マーカー・カメラ変換行列)から計算される一方の仮想カメラの位置及び姿勢(ビュー行列)に基づいて、左仮想カメラA63Lの位置及び姿勢と右仮想カメラA63Rの位置及び姿勢が理想的な関係となるように、他方の仮想カメラの位置及び姿勢(ビュー行列)が決定される。
なお、ステップSA11において、メイン実世界画像からマーカーA61が認識されなかった場合には、左変換行列A75Lまたは右変換行列A75Rにヌル値が格納され、これによって、左実世界画像または右実世界画像におけるマーカーA61の認識に失敗したことが記録される。
ステップSA12において、CPUA311は、マーカー認識モードが片画像認識モードであるかどうかを判断する。そして、片画像認識モードである場合には、処理はステップSA13に進み、そうでない場合(すなわち両画像認識モードである場合)には、処理はステップSA14に進む。
ステップSA13において、CPUA311は、左実世界画像及び右実世界画像のうち、メイン実世界画像ではない方の実世界画像(以下、サブ実世界画像と称す)のマーカー認識結果を“失敗”とみなす。より具体的には、メイン実世界画像が左実世界画像である場合には、右変換行列A75Rにヌル値を格納し、メイン実世界画像が右実世界画像である場合には、左変換行列A75Lにヌル値を格納する。
ステップSA14において、CPUA311は、サブ実世界画像に対してマーカー認識処理を行う。より具体的には、パターンマッチング手法等によってサブ実世界画像にマーカーA61が含まれているか否かを判断し、サブ実世界画像にマーカーA61が含まれている場合には、サブ実世界画像におけるマーカーA61の位置および姿勢に基づいて、左変換行列A75Lまたは右変換行列A75Rを算出する(サブ実世界画像が左実世界画像である場合には、左変換行列A75Lを算出し、サブ実世界画像が右実世界画像である場合には、右変換行列A75Rを算出する)。
ステップSA15において、CPUA311は、表示モードが同期表示モードであるかどうかを判断する。そして、同期表示モードである場合には、処理はステップSA17に進み、そうでない場合(すなわち非同期表示モードである場合)には、処理はステップSA16に進む。
ステップSA16において、CPUA311は、最新左実世界画像A71L及び最新右実世界画像A71Rを、表示用左実世界画像A72L及び表示用右実世界画像A72RとしてそれぞれメインメモリA32に記憶する。そして、処理はステップSA10に戻る。
ステップSA17において、CPUA311は、マーカー認識モードが片画像認識モードかどうかを判断する。そして、片画像認識モードである場合には、処理はステップSA18に進み、そうでない場合(すなわち両画像認識モードである場合)には、処理はステップSA19に進む。
ステップSA18において、CPUA311は、メイン実世界画像のマーカー認識に成功したかどうかを判断する。より具体的には、CPUA311は、メイン実世界画像が左実世界画像である場合には、左変換行列A75Lにヌル値ではない有効な行列が格納されているかどうかを判断し、メイン実世界画像が右実世界画像である場合には、右変換行列A75Rにヌル値ではない有効な行列が格納されているかどうかを判断する。そして、メイン実世界画像のマーカー認識に成功したと判断された場合には、処理はステップSA16に進み、そうでない場合には、処理はステップSA10に戻る。
ステップSA19において、CPUA311は、左実世界画像及び右実世界画像の少なくとも一方のマーカー認識に成功したかどうかを判断する。より具体的には、CPUA311は、左変換行列A75L及び右変換行列A75Rの両方に、ヌル値ではない有効な行列が格納されているかどうかを判断する。そして、左実世界画像及び右実世界画像の少なくとも一方のマーカー認識に成功したと判断された場合には、処理はステップSA16に進み、そうでない場合には、処理はステップSA10に戻る。
(メイン処理)
図14は、画像表示プログラムA70に基づいてCPUA311によって実行されるメイン処理の流れを示すフローチャートである。メイン処理は、上述したマーカー処理と並列的に実行される処理である。以下、メイン処理の詳細について説明する。
図14のステップSA20において、CPUA311は、3次元の仮想空間の所定位置に仮想オブジェクトA62を配置する。本実施形態では、仮想空間の原点(ワールド座標系の原点)に仮想オブジェクトA62を配置する。
ステップSA21において、CPUA311は、更新処理を実行する。この更新処理では、仮想オブジェクトA62を描画するために用いられる種々の変数を更新するための処理である。更新処理の詳細については後述する。
ステップSA22において、CPUA311は、仮想オブジェクト処理を実行する。仮想オブジェクト処理とは、仮想空間に配置された仮想オブジェクトA62に関する処理であり、例えば、必要に応じて、仮想オブジェクトA62の大きさを変化させたり、仮想オブジェクトA62に所定の動作(仮想空間内で移動する。例えば、仮想空間の原点の周りを歩くような移動をさせると、マーカー座標系の原点の周りを歩くような表示がされる)を行わせたりする。なお、仮想オブジェクトA62の移動制御は、仮想空間のワールド座標系における仮想オブジェクトの位置座標を変更することにより実現される。
ステップSA23において、CPUA311は、立体視ゼロ距離A73に応じて左実世界画像のうちの表示に使う範囲である描画範囲を決定する。より具体的には、図23に示すように、外側撮像部A23から立体視ゼロ距離A73の値(例えば30cm)だけ撮影方向に離れており、かつ外側撮像部(左)A23aと外側撮像部(右)A23bから等距離にある点を立体視ゼロ点とし、外側撮像部(左)A23aから見て当該立体視ゼロ点が中心にくるような範囲を、左実世界画像の描画範囲として決定する。当該範囲の横方向の長さは、例えば、図23に示すように、外側撮像部(左)A23aの撮影方向に垂直な直線を、外側撮像部(左)A23aの画角を表す直線によって切り取った線分上での比として求めることができ、当該比を実世界画像の横方向の長さに対応させることによって、実世界画像上での範囲として決定される。なお、当該範囲の縦方向の長さについては、表示画面の縦横比に合うように、横方向の長さから決定される。
なお、後述するステップSA27において右実世界画像の描画範囲を決定するときには、図24に示すように、外側撮像部(右)A23bから見て当該立体視ゼロ点が中心にくるような範囲を、右実世界画像の描画範囲として決定する。これにより、上側LCDA22に表示される左目用画像における立体視ゼロ点の位置と右目用画像における立体視ゼロ点の位置が、上側LCDA22の画面上で一致することになり、ユーザーから見て画面と同じ奥行き位置に存在するように見える。
ステップSA24において、CPUA311は、表示用左実世界画像A72Lにおける、ステップSA23で決定した描画範囲を、上側LCDA22へ供給すべき左目用画像を一時的に記憶するためのVRAMA313内の所定の記憶領域(以下、左フレームバッファと称す)に描画する。
ステップSA25において、CPUA311は、ARActive(図12参照)の値がtrueかどうかを判断する。ARActiveとは、実世界画像に仮想オブジェクトを合成表示することができる状況かどうかを示す変数(フラグ)であって、実世界画像に仮想オブジェクトを合成表示することができる状況では、その値がtrueに設定され、実世界画像に仮想オブジェクトを合成表示することができない状況(例えば、マーカーA61が全く認識できていない状況など)では、その値がfalse(初期値)に設定される。ARActiveの値がtrueである場合には、処理はステップSA26に進み、そうでない場合(すなわちARActiveの値がfalseである場合)には、処理はステップSA27に進む。
ステップSA26において、CPUA311は、例えば図23に示すように、左仮想カメラA63Lから見た仮想空間(以下、左目用の仮想空間画像と称す)を左フレームバッファに上書きする(実際には、典型的には、CPUA311からの指示にしたがってGPUA312によって描画される)。これにより、図26に示すように、ステップSA24で左フレームバッファに描画された左実世界画像に左目用の仮想空間画像が合成される。左フレームバッファに描画された画像は、所定のタイミングで左目用画像として上側LCDA22へ供給されることになる。なお、当該左目用の仮想空間画像においては、仮想空間の背景は透明であり、そのため、実世界画像に仮想空間画像を合成することで、実世界画像上に仮想オブジェクトA62が存在するような画像が生成される。
ステップSA27において、CPUA311は、立体視ゼロ距離A73に応じて右実世界画像の描画範囲を決定する。なお、描画範囲を決定するための処理の詳細は左実世界画像の描画範囲の決定の処理と同じであるため省略する。
ステップSA28において、CPUA311は、表示用右実世界画像A72Rにおける、ステップSA27で決定した描画範囲を、上側LCDA22へ供給すべき右目用画像を一時的に記憶するためのVRAMA313内の所定の記憶領域(以下、右フレームバッファと称す)に描画する。
ステップSA29において、CPUA311は、ARActiveの値がtrueかどうかを判断する。ARActiveの値がtrueである場合には、処理はステップSA30に進み、そうでない場合(すなわちARActiveの値がfalseである場合)には、処理はステップSA31に進む。
ステップSA30において、CPUA311は、右仮想カメラA63Rから見た仮想空間(以下、右目用の仮想空間画像と称す)を右フレームバッファに上書きする(実際には、典型的には、CPUA311からの指示にしたがってGPUA312によって描画される)。これにより、ステップSA28で右フレームバッファに描画された右実世界画像に右目用の仮想空間画像が合成される。右フレームバッファに描画された画像は、所定のタイミングで右目用画像として上側LCDA22へ供給されることになる。
ステップSA31において、CPUA311は、上側LCDA22からの割り込み信号(垂直同期割り込み)を待機し、当該割り込み信号が発生した場合には、処理はステップSA21に戻る。これにより、ステップSA21〜SA31の処理が一定の周期(例えば、60分の1秒の周期)で繰り返される。
(更新処理)
次に、メイン処理におけるステップSA21の更新処理の詳細について、図15のフローチャートを参照して説明する。
図15のステップSA40において、CPUA311は、前述のマーカー処理におけるマーカー認識結果(すなわち、左変換行列A75L及び右変換行列A75R)が更新されたかどうかを判断し、更新されている場合には処理はステップSA41に進み、まだ更新されていない場合には処理はステップSA44に進む。
ステップSA41において、CPUA311は、左実世界画像及び右実世界画像の両方の実世界画像のマーカー認識に成功しているかどうかを判断する。そして、両方の実世界画像のマーカー認識に成功している場合には、処理はステップSA42に進み、いずれか一方もしくは両方の実世界画像のマーカー認識に失敗している場合には、処理はステップSA44に進む。
ステップSA42において、CPUA311は、EyeWidth(図12参照)の値が0であるか、または、EyeMeasure(図12参照)の値がtrueであるかどうかを判断する。EyeWidthとは、左変換行列A75Lと右変換行列A75Rとを用いて算出される、外側撮像部(左)A23aと外側撮像部(右)A23bとの位置関係における、両撮像部間の距離を示す。なお、ここで両撮像部間の距離とは、実世界のスケールとして求める必要はなく、仮想空間での距離として求めてもよい。具体的には、左変換行列A75Lが示す、マーカーA61の位置と外側撮像部(左)A23aの位置との関係と、右変換行列A75Rが示すマーカーA61の位置と外側撮像部(右)A23bの位置との関係とから、マーカーA61の位置を基準として、外側撮像部(左)A23aの位置と外側撮像部(右)A23bの位置との関係を求めた場合の距離を求めている。なお、当該距離が未確定の場合には、その値が0(初期値)に設定される。なお、本実施形態では、EyeWidthはスカラー値であるが、EyeWidthを、左変換行列A75Lが示す外側撮像部(左)A23aの位置と右変換行列A75Rが示す外側撮像部(右)A23bの位置との間を結ぶベクトルにしてもよい。また、EyeWidthを、左変換行列A75Lが示す外側撮像部(左)A23aの位置と右変換行列A75Rが示す外側撮像部(右)A23bの位置との間を結ぶベクトルの、撮影方向に直交する成分の長さにしてもよい。なお、後述の通り、EyeWidthは、仮想空間における左仮想カメラA63Lと右仮想カメラA63Rの距離(間隔)の設定に用いる。EyeMeasureとは、EyeWidthを再計算すべきか否かを示す変数(フラグ)であって、EyeWidthを再計算すべき状況では、その値がtrueに設定され、そうでない状況では、その値がfalse(初期値)に設定される。EyeWidthの値が0であるか、または、EyeMeasureの値がtrueである場合には、処理はステップSA43に進み、そうでない場合(すなわちEyeWidthの値が0以外の値であり、なおかつ、EyeMeasureの値がfalseである場合)には、処理はステップSA44に進む。
ステップSA43において、CPUA311は、仮想カメラ間隔決定処理を実行する。仮想カメラ間隔決定処理では、左仮想カメラA63Lと右仮想カメラA63Rの間隔(すなわちEyeWidth)が適宜に決定および更新される。仮想カメラ間隔決定処理の詳細については後述する。
ステップSA44において、CPUA311は、ビュー行列生成処理を実行する。ビュー行列生成処理では、すでに決定されている左仮想カメラA63Lと右仮想カメラA63Rの間隔(すなわちEyeWidth)に基づいて、左ビュー行列A76Lと右ビュー行列A76Rが計算される。ビュー行列生成処理の詳細については後述する。
ステップSA45において、CPUA311は、メイン実世界画像設定処理を実行する。メイン実世界画像設定処理では、左実世界画像と右実世界画像の間で、メイン実世界画像が適宜に切り替えられる(これは、外側撮像部(左)A23aと外側撮像部(右)との間で、メイン撮像部を切り替えることと等価である)。メイン実世界画像設定処理の詳細については後述する。
ステップSA46において、CPUA311は、表示モード切替処理を実行し、そして更新処理を終了する。表示モード切替処理では、同期表示モードと非同期表示モードの間で、表示モードが適宜に切り替えられる。表示モード切替処理の詳細については後述する。
(仮想カメラ間隔決定処理)
次に、更新処理(図15)におけるステップSA43の仮想カメラ間隔決定処理の詳細について、図16のフローチャートを参照して説明する。ここでは、前述の通り、左変換行列A75Lが示すマーカーA61の位置に対する外側撮像部(左)A23aの位置と右変換行列A75Rが示すマーカーA61の位置に対する外側撮像部(右)A23bの位置との距離を求める。この距離を計算する方法はいくつかあるが、本実施例では、計算方法の一例として、以下の方法を採用する。
図16のステップSA50において、CPUA311は、左変換行列A75Lおよび右変換行列A75Rに基づいて、座標V0を計算する。以下、図27〜図29を参照して、V0の計算方法を説明する。なお、図27〜図29においては、左実世界画像に基づいて計算される、マーカーA61に対する外側撮像部(左)A23aの相対位置及び相対姿勢と、右実世界画像に基づいて計算される、マーカーA61に対する外側撮像部(右)A23bの相対位置及び相対姿勢とが、前述したように必ずしも理想的な関係とはならないことを強調するために、外側撮像部(左)A23aの撮影方向と外側撮像部(右)A23bの撮影方向が互いに大きくずれているように図示している。
まず、図27に示すように、(0,0,0)に対して、左変換行列A75Lを乗算すると、外側撮像部(左)座標系で表されたマーカー座標系の原点の座標V1が求まる。座標V1は、左実世界画像に基づいて計算された、外側撮像部(左)A23aに対するマーカーA61の相対位置を表している。この座標V1が外側撮像部(右)座標系で表された座標であると見なすと、座標V1が示す位置は、外側撮像部(右)座標系では図28に示す位置へと移動する。この座標V1に対して、さらに右変換行列A75Rの逆行列を乗算する。右変換行列A75Rの逆行列を乗算することは、外側撮像部(右)座標系で表された座標をマーカー座標系で表された座標に変換することに相当する。したがって、上記逆行列の乗算は、外側撮像部(右)座標系で表された座標V1(図28)を、図29に示すように、マーカー座標系で表された座標V0へと変換することになる。このようにして計算された座標V0は、左実世界画像に基づいて計算された、外側撮像部(左)A23aに対するマーカーA61の相対位置(すなわち、外側撮像部(左)座標系で表されるマーカー座標系の原点の座標)と、右実世界画像に基づいて計算された、外側撮像部(右)A23bに対するマーカーA61の相対位置(すなわち、外側撮像部(右)座標系で表されるマーカー座標系の原点の座標)との差を示している。本実施形態では、このマーカーA61の相対位置の差を、外側撮像部(左)A23aと外側撮像部(右)A23bの取り付け位置の差によって生じるものであると考えて、外側撮像部(左)A23aと外側撮像部(右)A23bの取り付け位置を推定している。
ステップSA51において、CPUA311は、左変換行列A75Lに基づいて、外側撮像部(左)座標系で表されたマーカー座標系の原点の座標V1を計算する。具体的には、(0,0,0)に対して、左変換行列A75Lを乗算することで、外側撮像部(左)座標系で表されたマーカー座標系の原点の座標V1が求まる。なお、ここでは、外側撮像部(左)座標系で表されたマーカー座標系の原点の座標をV1としたが、これに替えて、外側撮像部(右)座標系で表されたマーカー座標系の原点の座標をV1としてもよい。
ステップSA52において、CPUA311は、ステップSA50で求めたV0の大きさ(原点からの距離)(図29参照)を、ew(図12参照)に格納し、ステップSA51で求めたV1のz軸値の絶対値(図27参照)を、ed(図12参照)に格納する。ただし、ewの値は、マーカー座標系における長さの単位で計算されており、実世界における長さの単位と一致するものではない。そして、前述の通り、外側撮像部(左)A23aと外側撮像部(右)A23bの間の実距離は既知(例えば3.5cm)であるので、この実距離とewの値を用いて、実世界における長さの単位と仮想空間における長さの単位とを一致させることができる。なお、マーカーA61のサイズが既知であれば、マーカー画像の認識結果に基づいて求められるマーカーA61のサイズと、実世界におけるマーカーA61のサイズとの対応関係から、実世界における長さの単位と仮想空間における長さの単位とを一致させることもできる。
なお、ゲーム装置A10に対する外側撮像部(左)A23aおよび外側撮像部(右)A23bの取り付け精度の誤差により、外側撮像部(左)A23aの撮影方向と外側撮像部(右)A23bの撮影方向が平行になっていない場合には、このようにして計算される外側撮像部(左)A23aと外側撮像部(右)A23bの間の距離(ew)は、外側撮像部A23とマーカーA61との間の撮影方向についての距離に応じて変動する。それゆえ、後述するように、外側撮像部A23とマーカーA61との間の撮影方向についての距離が変化したときには、外側撮像部(左)A23aと外側撮像部(右)A23bの間の距離(後述するEyeWidth)は、そのときのマーカー・カメラ変換行列を用いて再計算される。
なお、本実施形態では、ewをV0の大きさとしたが、V0の「左変換行列A75Lにより示される外側撮像部(左)A23aの位置と右変換行列A75Rにより示される外側撮像部(右)A23bの位置を結ぶ方向」の成分としてもよい。
このようにして計算されたewは「外側撮像部(左)A23aと外側撮像部(右)A23bとの間のマーカー座標系における間隔」であるが、これを左仮想カメラA63Rと右仮想カメラA63Rとの間の間隔として用いる(後述のステップSA65またはS68)。
なお、ewを求める方法は、上述した方法以外にもある。例えば、(0,0,0)に左変換行列A75Lを乗算することによって、外側撮像部(左)座標系で表されたマーカー座標系の原点の座標Vl(すなわち、外側撮像部(左)A23aに対するマーカーA61の相対位置)を求めるとともに、(0,0,0)に右変換行列A75Rを乗算することによって、外側撮像部(右)で表されたマーカー座標系の原点の座標Vr(すなわち、外側撮像部(右)A23bに対するマーカーA61の相対位置)を求め、こうして求めた座標Vlと座標Vrの間の距離を計算することによって、ewを求めても構わない。
ステップSA53において、CPUA311は、LogIndex(図12参照)の値が1(初期値)より大きいかどうかを判断し、1より大きい場合には処理はステップSA57に進み、そうでない場合(すなわち1である場合)には処理はステップSA54に進む。LogIndexは、後述する配列(LogWidth、LogDepth)の各要素を識別するための変数である。
ステップSA54において、CPUA311は、ステップSA52で求めたewの値を配列LogWidth[LogIndex]に格納する。さらに、ステップSA52で求めたedの値を配列LogDepth[LogIndex]に格納する。さらに、LogIndexの値をインクリメントする。LogWidthは、ewの値を複数保持しておくための配列変数である。LogDepthは、edの値を複数保持しておくための配列変数である。
ステップSA55において、CPUA311は、LogIndexの値がLogMaxの値よりも大きいかどうかを判定し、大きい場合には処理はステップSA56に進み、そうでない場合(すなわちLogIndexの値がLogMaxの値以下の場合)には、仮想カメラ間隔決定処理を終了する。
ステップSA56において、CPUA311は、LogWidthの各要素の平均値を計算し、当該平均値をEyeWidthに格納する。さらに、LogDepthの各要素の平均値を計算し、当該平均値をEyeDepthに格納する。さらに、EyeMeasureの値をfalseに設定する。さらに、マーカー認識モードA79を、片画像認識モードに設定する。EyeDepthとは、左変換行列A75Lが示す外側撮像部(左)A23aのマーカー座標系における位置を示す座標(または右変換行列A75Rが示す外側撮像部(右)A23bのマーカー座標系における位置を示す座標)から、マーカー座標系の原点までの奥行き距離(深さ:撮影方向についての距離)を示す変数であって、後述する図17のステップSA72における判断の際の基準値として用いられる。EyeDepthの初期値は0である。ステップSA56の処理が終了すると、仮想カメラ間隔決定処理は終了する。
ステップSA57において、CPUA311は、ステップSA52で求めたewの値とLogWidth[1]の値の差の絶対値が、LogWidth[1]の値の10%よりも小さく、かつ、ステップSA52で求めたedの値とLogDepth[1]の値の差の絶対値が、LogDepth[1]の値の10%よりも小さいかどうかを判断する。そして、ステップSA57の判断結果が肯定である場合には処理はステップSA54に進み、ステップSA57の判断結果が否定である場合には処理はステップSA58に進む。
ステップSA58において、CPUA311は、LogIndexの値を1(初期値)にリセットして、仮想カメラ間隔決定処理を終了する。
以上のように、仮想カメラ間隔決定処理では、左実世界画像に含まれるマーカーA61の位置及び姿勢に基づいて計算される外側撮像部(左)A23aの位置と、右実世界画像に含まれるマーカーA61の位置及び姿勢に基づいて計算される外側撮像部(右)A23bの位置とに基づいて、ewとedが計算される。このようにして計算されたewの値とedの値が、LogWidthとLogDepthに順次格納される。このとき、新たに計算されたewの値が、LogWidthに最初に格納されたewの値(すなわちLogWidth[1]の値)を基準とした所定範囲(±10%)から外れた場合や、新たに計算されたedの値が、LogDepthに最初に格納されたedの値(すなわちLogDepth[1]の値)を基準とした所定範囲(±10%)から外れた場合には、LogWidthとLogDepthに再び最初からewの値とedの値を格納し直す。したがって、逐次計算されるewの値とedの値に大きな変動が見られない場合(すなわち、ewの値とedの値が一定期間、ある程度安定している場合)にのみ、それらのewの値の平均値とそれらのedの値の平均値が、EyeWidthおよびEyeDepthに格納される。
ところで、ユーザがゲーム装置A10を移動させたり回転させたりしているときには、外側撮像部A23によって撮像される左実世界画像および右実世界画像がぼけやすく、マーカーA61の認識精度が著しく低下し、逐次検出されるewの値やedの値が大きく変動しやすい。そこで、このような状況で検出される信頼性の低いewの値およびedの値に基づいてEyeWidthの値およびEyeDepthの値を決定することは避けるべきである。よって、本実施形態では、逐次計算されるewの値とedの値に大きな変動が見られない場合にのみ、それらの値に基づいてEyeWidthの値およびEyeDepthの値を決定している。また、複数回計算されたewの値およびedの値の平均値をEyeWidthの値およびEyeDepthの値として用いることにより、EyeWidthの値およびEyeDepthの値の精度を高めることができる。
(ビュー行列生成処理)
次に、更新処理(図15)におけるステップSA44のビュー行列生成処理の詳細について、図17のフローチャートを参照して説明する。
図17のステップSA60において、CPUA311は、EyeWidthが0より大きいかどうかを判断し、0より大きい場合には処理はステップSA63に進み、そうでない場合(すなわち、0である場合)には処理はステップSA61に進む。
ステップSA61において、CPUA311は、表示モードが同期表示モードであるかどうかを判断する。そして、同期表示モードである場合には、ビュー行列生成処理を終了し、そうでない場合(すなわち非同期表示モードである場合)には、処理はステップSA62に進む。
ステップSA62において、CPUA311は、ARActiveの値をfalseに設定する。そして、ビュー行列生成処理を終了する。
ステップSA63において、CPUA311は、左変換行列A75Lを参照して、左実世界画像のマーカー認識に成功しているかどうかを判断し、左実世界画像のマーカー認識に成功している場合には処理はステップSA64に進み、そうでない場合(すなわち、左変換行列A75Lの値がヌル値である場合)には処理はステップSA66に進む。
ステップSA64において、CPUA311は、左変換行列A75Lの値を、左ビュー行列A76Lに格納する。これは、左実世界画像に含まれるマーカーA61の位置及び姿勢に基づいて計算されたマーカー座標系における外側撮像部(左)A23aの位置及び姿勢を、左目用の仮想空間画像を生成するための左仮想カメラA63Lの位置及び姿勢としてそのまま扱うことを意味する。
ステップSA65において、CPUA311は、左ビュー行列A76Lの値に対して平行移動行列(−EyeWidth,0,0)を乗算した結果の値を、右ビュー行列A76Rに格納する。これは、図30に示すように、前述のステップSA64において設定された仮想空間のワールド座標系における左仮想カメラA63Lの位置から、左仮想カメラ座標系のx軸の正方向にEyeWidthの値だけずらした位置を、右目用の仮想空間画像を生成するための右仮想カメラA63Rの位置として扱うことを意味する。また、右仮想カメラA63Rの姿勢は、左仮想カメラA63Lの姿勢と同じとなる(すなわち、左仮想カメラ座標系のx軸,y軸,z軸が、右仮想カメラ座標系のx軸,y軸,z軸とそれぞれ平行となる)。これにより、左仮想カメラA63Lの位置及び姿勢と、右仮想カメラA63Rの位置及び姿勢との整合性が保たれるので、上側LCDA22において正常に立体視できるように仮想オブジェクトA62を表示することができる。
ステップSA66において、CPUA311は、右変換行列A75Rを参照して、右実世界画像のマーカー認識に成功しているかどうかを判断し、右実世界画像のマーカー認識に成功している場合には処理はステップSA67に進み、そうでない場合(すなわち、右変換行列A75Rの値がヌル値である場合)にはビュー行列生成処理を終了する。
ステップSA67において、CPUA311は、右変換行列A75Rの値を、右ビュー行列A76Rに格納する。これは、右実世界画像に含まれるマーカーA61の位置及び姿勢に基づいて計算されたマーカー座標系における外側撮像部(右)A23bの位置及び姿勢を、右目用の仮想空間画像を生成するための右仮想カメラA63Rの位置及び姿勢としてそのまま扱うことを意味する。
ステップSA68において、CPUA311は、右ビュー行列A76Rの値に対して平行移動行列(EyeWidth,0,0)を乗算した結果の値を、左ビュー行列A76Lに格納する。これは、図31に示すように、前述のステップSA67において設定された仮想空間のワールド座標系における右仮想カメラA63Rの位置から、右仮想カメラ座標系のx軸の負方向にEyeWidthの値だけずらした位置を、左目用の仮想空間画像を生成するための左仮想カメラA63Lの位置として扱うことを意味する。また、左仮想カメラA63Lの姿勢は、右仮想カメラA63Rの姿勢と同じとなる(すなわち、左仮想カメラ座標系のx軸,y軸,z軸が、右仮想カメラ座標系のx軸,y軸,z軸とそれぞれ平行となる)。これにより、左仮想カメラA63Lの位置及び姿勢と、右仮想カメラA63Rの位置及び姿勢との整合性が保たれるので、上側LCDA22において正常に立体視できるように仮想オブジェクトA62を表示することができる。
このように、本実施例では、一方の仮想カメラ(例えば、左仮想カメラA63L)の位置および姿勢については、一方の外側撮像部(例えば、外側撮像部(左)A23a)の撮影画像から算出された「マーカー・カメラ変換行列」を用いて設定するが(より具体的には、そのまま用いる)、他方の仮想カメラ(例えば、右仮想カメラA63R)の位置および姿勢については、他方の外側撮像部(例えば、外側撮像部(右)A23b)の撮影画像から算出された「マーカー・カメラ変換行列」を用いずに設定する。
ステレオカメラでARの立体視表示をおこなう場合においては、仮想カメラは右用と左用の2つを設定する必要があり、また、「マーカー・カメラ変換行列」は外側撮像部(左)A23aによる変換行列(左変換行列A25L)と外側撮像部(右)A23bによる変換行列(右変換行列A25R)がある。本実施形態では、各仮想カメラA63L,A63Rを設定するときに、各変換行列A25L,A25Rを用いるのではなくて、1つの変換行列を設定して(変換行列A25L,A25Rの一方の変換行列をそのまま用いて、または、両方の変換行列A25L,A25Rから別の新たな1つの変換行列を生成して(平均位置、平均姿勢とするなど))、その1つの変換行列を用いて両方の仮想カメラA63L,A63Rの位置および姿勢を設定する。これにより、AR認識における精度の問題を解消することができる。
ステップSA69において、CPUA311は、ARActiveの値をtrueに設定する。これにより、実世界画像に対する仮想オブジェクトA62の合成表示が開始または再開される。
ステップSA70において、CPUA311は、EyeMeasureの値がtrueかどうかを判断し、trueである場合にはビュー行列生成処理を終了し、そうでない場合(すなわちfalseである場合)には処理はステップSA71に進む。
ステップSA71において、CPUA311は、ステップSA64またはステップSA68で決定された左ビュー行列A76Lに基づいて、左仮想カメラ座標系で表された仮想空間の原点の座標Vを計算する。具体的には、図32に示すように、(0,0,0)に対して左ビュー行列A76Lを乗算することで、左仮想カメラ座標系で表された仮想空間の原点の座標Vが求まる。なお、ここでは、左仮想カメラ座標系で表された仮想空間の原点の座標をVとしたが、これに替えて、ステップSA65またはステップSA67で決定された右ビュー行列A76Rに基づいて計算された、右仮想カメラ座標系で表された仮想空間の原点の座標をVとしてもよい。このようにして求められたVは、外側撮像部(左)座標系におけるマーカーA61の位置と実質的に同一である(ただし、このVの値は、仮想空間またはマーカー座標系における長さの単位で計算されており、実世界における長さの単位と一致するものではない。)。
ステップSA72において、CPUA311は、Vのz座標値の絶対値(|V.z|)とEyeDepthの値との差の絶対値が、EyeDepthの値の20%よりも大きいかどうかを判断し、大きい場合には処理はステップSA73に進み、そうでない場合にはビュー行列生成処理を終了する。|V.z|は、外側撮像部A23からマーカーA61までの撮影方向についての距離(深さ)と実質的に同一である。すなわち、ステップSA72では、仮想カメラ間隔決定処理(図16)においてEyeWidthの値を計算したときを基準として、外側撮像部A23からマーカーA61までの奥行き距離(深さ)が、±20%の範囲を超えて変化したかどうかを判断している。
ステップSA73において、CPUA311は、EyeMeasureの値をtrueに設定し、さらに、LogIndexの値を1にリセットし、さらに、マーカー認識モードA79を両画像認識モードに設定して、ビュー行列生成処理を終了する。この結果、仮想カメラ間隔決定処理によるEyeWidthの計算処理が再び開始されることになる。
上記のように、仮想カメラ間隔決定処理において、EyeWidthの値を前回計算したときを基準として、外側撮像部A23からマーカーA61までの奥行き距離(深さ)が所定範囲を超えて変化したときに、EyeWidthを再計算する理由は、ゲーム装置A10に対する外側撮像部(左)A23aおよび外側撮像部(右)A23bの取り付け精度の誤差により、外側撮像部A23からマーカーA61までの奥行き距離(深さ)に応じて最適な仮想カメラ間隔(EyeWidth)が変化するからである。例えば、外側撮像部(左)A23aの撮影方向と外側撮像部(右)A23bの撮影方向が平行になっていない状況において、図33に示すように外側撮像部A23からマーカーA61までの奥行距離がD1であるときに仮想カメラ間隔決定処理において計算されるEyeWidthの値をEyeWidth1とすると、仮想空間において、左仮想カメラA63Lと右仮想カメラA63Rは、図34に示すようにEyeWidth1の間隔を開けて配置されるのが適切である(そうすることによって、例えば仮想空間の原点に配置した仮想オブジェクトが、実世界画像のマーカーA61上に実在するかのように、適切に立体表示されるようになる。)。そして、図35に示すように外側撮像部A23からマーカーA61までの奥行距離がD1よりも小さいD2に変化した場合には、仮想カメラ間隔決定処理において計算されるEyeWidthの値は、EyeWidth1よりも小さいEyeWidth2となり、仮想空間において、左仮想カメラA63Lと右仮想カメラA63Rは、図36に示すようにEyeWidth2の間隔を開けて配置されるのが適切である。
(メイン実世界画像設定処理)
次に、更新処理(図15)におけるステップSA45のメイン実世界画像設定処理の詳細について、図18のフローチャートを参照して説明する。
図18のステップSA80において、CPUA311は、ARActiveの値がtrueかどうかを判断し、trueである場合には、処理はステップSA81に進み、そうでない場合(すなわちARActiveの値がfalseである場合)には、メイン実世界画像設定処理を終了する。
ステップSA81において、CPUA311は、左射影行列A77Lおよび右射影行列A77Rを生成する。左射影行列A77Lは、左仮想カメラA63Lから見た仮想空間の描画範囲を規定する行列であって、本実施形態では、図37に示すように、メイン処理のステップSA23で決定した左実世界画像の描画範囲に対応するような左射影行列A77Lが生成される。右射影行列A77Rは、右仮想カメラA63Rから見た仮想空間の描画範囲を規定する行列であって、本実施形態では、図38に示すように、メイン処理のステップSA27で決定した右実世界画像の描画範囲に対応するような右射影行列A77Rが生成される。
具体的には、左仮想カメラA63Lの射影行列は、外側撮像部(左)A23aの水平方向の画角と、当該左仮想カメラの水平方向の画角との比が、左実世界画像の横方向の長さにおける描画範囲の横方向の位置および大きさを表す比と、同じになるような画角を持つ視体積を定義する射影行列として設定される。
ステップSA82において、CPUA311は、メイン実世界画像が左実世界画像かどうかを判断し、メイン実世界画像が左実世界画像である場合には処理はステップSA83に進み、そうでない場合(すなわち、メイン実世界画像が右実世界画像である場合)には処理はステップSA86に進む。
ステップSA83において、CPUA311は、(0,0,0,1)に左ビュー行列A76Lおよび左射影行列A77Lを乗算することによって、ベクトルVを求める。
ステップSA84において、CPUA311は、ベクトルVの第1成分(x)を第4成分(w)で乗算した結果の値(V.x/V.w)が0.5より大きいかどうかを判断し、0.5より大きい場合には処理はステップSA85に進み、そうでない場合にはメイン実世界画像設定処理を終了する。上記のV.x/V.wの値は、左目用の仮想空間画像上で、仮想空間のワールド座標系の原点が、画像の左右方向のどの位置に存在するかを示している(なお、「左目用の仮想空間画像上で、仮想空間のワールド座標系の原点が、画像の左右方向のどの位置に存在するか」は、「外側撮像部(左)A23aの撮影画像上で、マーカー座標系の原点が、画像の左右方向のどの位置に存在するか」と等価である)。仮想空間のワールド座標系の原点が左目用の仮想空間画像の中央に位置するときは、V.x/V.wの値が0となり、仮想空間のワールド座標系の原点が左目用の仮想空間画像の左端に近づくほど、V.x/V.wの値が−1.0に近づき、仮想空間のワールド座標系の原点が左目用の仮想空間画像の右端に近づくほど、V.x/V.wの値が+1.0に近づく。V.x/V.wの値が0.5より大きいということは、仮想空間のワールド座標系の原点が左目用の仮想空間画像の右端領域(図39の斜線領域)に位置することを意味する。言い換えれば、外側撮像部(左)A23aによって撮像された左実世界画像の右端領域にマーカーA61が位置していることを意味する。
ステップSA85において、CPUA311は、メイン実世界画像を左実世界画像から右実世界画像へと変更する。すなわち、左仮想カメラA63Lによる仮想空間画像上で、仮想空間の原点が、画像の中心よりも所定距離だけ(または画像の左右幅の所定割合だけ)右の位置よりも右側に存在するときに、メイン実世界画像を右実世界画像に変更する。または、外側撮像部(左)A23aによる撮影画像上で、マーカー座標系の原点が、画像の中心よりも所定距離だけ(または画像の左右幅の所定割合だけ)右の位置よりも右側に存在するときに、メイン実世界画像を右実世界画像に変更する。これにより、例えば左実世界画像においてマーカーA61の位置が徐々に右方向へ移動して、最終的に左実世界画像からマーカーA61が消えてしまったとしても、左実世界画像からマーカーA61が消えてしまう前にメイン実世界画像が右実世界画像へと変更されるので、片画像認識モードにおいて継続的にマーカーA61を認識することが可能となる。ステップSA85の処理が終わると、メイン実世界画像設定処理を終了する。
ステップSA86において、CPUA311は、(0,0,0,1)に右ビュー行列A76Rおよび右射影行列A77Rを乗算することによって、ベクトルVを求める。
ステップSA87において、CPUA311は、ベクトルVの第1成分(x)を第4成分(w)で乗算した結果の値(V.x/V.w)が−0.5より小さいかどうかを判断し、−0.5より小さい場合には処理はステップSA87に進み、そうでない場合にはメイン実世界画像設定処理を終了する。上記のV.x/V.wの値は、右目用の仮想空間画像上で、仮想空間のワールド座標系の原点が、画像の左右方向のどの位置に存在するかを示している。仮想空間のワールド座標系の原点が右目用の仮想空間画像の中央に位置するときは、V.x/V.wの値が0となり、仮想空間のワールド座標系の原点が右目用の仮想空間画像の左端に近づくほど、V.x/V.wの値が−1.0に近づき、仮想空間のワールド座標系の原点が右目用の仮想空間画像の右端に近づくほど、V.x/V.wの値が+1.0に近づく。V.x/V.wの値が−0.5より小さいということは、仮想空間のワールド座標系の原点が右目用の仮想空間画像の左端領域(図40の斜線領域)に位置することを意味する。言い換えれば、外側撮像部(右)A23bによって撮像された右実世界画像の左端領域にマーカーA61が位置していることを意味する。
ステップSA88において、CPUA311は、メイン実世界画像を右実世界画像から左実世界画像へと変更する。これにより、例えば右実世界画像においてマーカーA61の位置が徐々に左方向へ移動して、最終的に右実世界画像からマーカーA61が消えてしまったとしても、右実世界画像からマーカーA61が消えてしまう前にメイン実世界画像が左実世界画像へと変更されるので、片画像認識モードにおいて継続的にマーカーA61を認識することが可能となる。ステップSA88の処理が終わると、メイン実世界画像設定処理を終了する。
(表示モード切替処理)
次に、更新処理(図15)におけるステップSA46の表示モード切替処理の詳細について、図19のフローチャートを参照して説明する。
図19のステップSA90において、CPUA311は、表示モードが同期表示モードかどうかを判断し、同期表示モードである場合には処理はステップSA91に進み、そうでない場合(すなわち、非同期表示モードである場合)には処理はステップSA96に進む。
ステップSA91において、CPUA311は、EyeWidthが0より大きく、かつ、左実世界画像および右実世界画像のいずれかの実世界画像のマーカー認識に成功しているかどうかを判断する。そして、判断結果が肯定である場合には、処理はステップSA92に進み、判断結果が否定である場合(すなわち、EyeWidthが0であるか、もしくは、左実世界画像および右実世界画像の両方の実世界画像のマーカー認識に失敗している場合)には、処理はステップSA93に進む。
ステップSA92において、CPUA311は、SyncCount(図12参照)の値を20に設定する。SyncCountは、表示モードを同期表示モードから非同期表示モードへと切り替えるタイミングを決定するための変数である。ステップSA92の処理が終わると、表示モード切替処理を終了する。
ステップSA93において、CPUA311は、SyncCountの値をデクリメントする。
ステップSA94において、CPUA311は、SyncCountの値が0より大きいかどうかを判断し、0より大きい場合には表示モード切替処理を終了、そうでない場合(すなわち、0である場合)には処理はステップSA95に進む。
ステップSA95において、CPUA311は、LogIndexの値を1に設定し、さらにEyeWidthおよびEyeDepthの値を0に設定し、さらに表示モードA78を同期表示モードから非同期表示モードへと変更し、さらにマーカー認識モードA79を両画像認識モードに設定する。ステップSA95の処理が終わると、表示モード切替処理を終了する。
ステップSA96において、CPUA311は、EyeWidthが0より大きく、かつ、左実世界画像および右実世界画像のいずれかの実世界画像のマーカー認識に成功しているかどうかを判断する。そして、判断結果が肯定である場合には、処理はステップSA97に進み、判断結果が否定である場合(すなわち、EyeWidthが0であるか、もしくは、左実世界画像および右実世界画像の両方の実世界画像のマーカー認識に失敗している場合)には、表示モード切替処理を終了する。
ステップSA97において、CPUA311は、SyncCountの値を20に設定し、さらに表示モードを非同期表示モードから同期表示モードへと変更する。ステップSA97の処理が終わると、表示モード切替処理を終了する。
上記のように、表示モード切替処理によって、同期表示モードと非同期表示モードとの間で表示モードが適宜に切り替えられる。より具体的には、画像表示プログラムの実行が開始された直後は表示モードは非同期表示モードとなり、上側LCDA22には常に最新の実世界画像が表示される。その後、マーカーA61が認識されて、上側LCDA22に表示される実世界画像に仮想オブジェクトA62を合成表示できる状態になった時点で、表示モードは非同期表示モードから同期表示モードへと変化する。同期表示モードでは、仮想オブジェクトA62を実世界画像内の正しい位置に合成表示するために、最後にマーカーA61を認識することができた実世界画像(必ずしも最新の実世界画像とは限らない)に仮想オブジェクトA62を合成した合成画像が、上側LCDA22に表示される。これにより、実世界画像に合成表示される仮想オブジェクトA62の位置ズレを防止することができる。その後、マーカーA61を認識することができない状態が一定時間継続した時点で、表示モードは同期表示モードから非同期表示モードへと変化し、上側LCDA22には常に最新の実世界画像が表示されるようになる。これにより、マーカーA61を認識することができない状態が続いたときに、上側LCDA22に古い画像が表示され続けてしまうことを防止することができる。
(本実施形態の効果)
以上のように、本実施形態によれば、左実世界画像および右実世界画像のいずれか一方のマーカー認識結果から計算される一方の外側撮像部(外側撮像部(左)A23aまたは外側撮像部(右)A23b)のマーカー座標系における位置及び姿勢に基づいて、一方の仮想カメラの位置および姿勢が決定され、さらに、左仮想カメラA63Lの位置及び姿勢と右仮想カメラA63Rの位置及び姿勢が理想的な関係となるように、他方の仮想カメラの位置及び姿勢が決定される。したがって、立体視可能な表示装置において、正常に立体視できるように仮想オブジェクトA62を表示することができる。
また、左実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(左)A23aの位置と、右実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(右)A23bの位置とに基づいて、両外側撮像部の間隔を算出し、その結果に基づいて仮想カメラ間隔(EyeWidth)を決定し、一方の仮想カメラの位置を当該仮想カメラの座標系の撮影方向に直交する方向に当該間隔だけ移動させることにより他方の仮想カメラの位置を決定する。これにより、両仮想カメラが撮影方向に直行する方向に並ぶように設定することができる。また、仮に、外側撮像部(左)A23aと外側撮像部(右)A23bの間隔が既知でない場合や、ゲーム装置A10に対する外側撮像部(左)A23aおよび外側撮像部(右)A23bの取り付け精度が悪い場合であっても、左仮想カメラA63Lと右仮想カメラA63Rを理想的な間隔で配置することができる。
また、仮想カメラ間隔決定処理によって仮想カメラ間隔(EyeWidth)が決定された後は、メイン実世界画像に対してのみマーカー認識処理を行えばよいため、常に左実世界画像と右実世界画像の両方に対してマーカー認識処理を行う場合と比較して、処理負担を軽減することができる。
なお、外側撮像部(左)A23aと外側撮像部(右)A23bの間隔が既知である場合には、仮想カメラ間隔決定処理の結果に基づいて、実世界における外側撮像部(左)A23aと外側撮像部(右)A23bの間隔(例えば3.5cm)に対応する、マーカー座標系における外側撮像部(左)A23aと外側撮像部(右)A23bの間隔(EyeWidth)が判明する。したがって、例えば、身長が30cmのキャラクタ(仮想オブジェクト)を実世界画像に合成表示したり、実世界画像に合成表示されるキャラクタ(仮想オブジェクト)を秒速10cmで移動させたりというように、仮想空間において、実世界のスケールに基づいた処理を行うことが可能となる。
(変形例)
なお、上記実施形態では、実世界画像に含まれるマーカーA61の位置及び姿勢を認識して、その認識結果に応じて実世界画像に仮想オブジェクトA62を合成しているが、他の実施形態では、マーカーA61に限らず、任意の認識対象の位置及び/又は姿勢を認識して、その認識結果に応じて実世界画像に仮想オブジェクトA62を合成してもよい。認識対象の一例として、人物の顔が挙げられる。
また、上記実施形態では、外側撮像部A23によってリアルタイムに撮像される実世界画像に基づいて上側LCDA22に立体画像を表示しているが、他の実施形態では、外側撮像部A23や外部のステレオカメラ等によって過去に撮像された動画像データに基づいて上側LCDA22に立体画像を表示するようにしてもよい。
また、上記実施形態では、外側撮像部A23がゲーム装置A10に予め搭載されているが、他の実施形態では、ゲーム装置A10に着脱可能な外付け型のカメラを利用してもよい。
また、上記実施形態では、上側LCDA22がゲーム装置A10に予め搭載されているが、他の実施形態では、ゲーム装置A10に着脱可能な外付け型の立体視ディスプレイを利用してもよい。
また、上記実施形態では、マーカー座標系の原点の位置に仮想オブジェクトA62を配置しているが、他の実施形態では、マーカー座標系の原点から離れた位置に仮想オブジェクトA62を配置してもよい。
また、上記実施形態では、仮想空間に仮想オブジェクトを1つだけ配置しているが、他の実施形態では、仮想空間に複数の仮想オブジェクトを配置してもよい。
また、上記実施形態では、仮想カメラ間隔決定処理において、マーカー座標系における外側撮像部(左)A23aと外側撮像部(右)A23bの間隔(EyeWidth)を計算した後、当該間隔に基づいて、マーカー認識結果に基づいて計算された左仮想カメラA63Lおよび右仮想カメラA63Rのいずれか一方の仮想カメラの位置及び姿勢から、他方の仮想カメラの位置及び姿勢を決定しているが、他の実施形態では、左実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(左)A23aの位置及び姿勢と、右実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(右)A23bの位置及び姿勢とに基づいて、外側撮像部A23の位置および姿勢(例えば、外側撮像部(右)A23aの位置と外側撮像部(左)A23bの位置の平均位置、外側撮像部(右)A23aの姿勢と外側撮像部(左)A23bの姿勢の平均姿勢)を算出し、それに基づいて、左仮想カメラA63Lおよび右仮想カメラA63Rの位置及び/又は姿勢を決定するようにしてもよい。例えば、左仮想カメラA63Lおよび右仮想カメラA63Rの姿勢が、いずれも、左実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(左)A23aの姿勢と、右実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(右)A23bの姿勢のちょうど中間の姿勢となるように、左仮想カメラA63Lおよび右仮想カメラA63Rの姿勢を決定するようにしてもよい。また例えば、仮想カメラ間隔決定処理において外側撮像部(左)A23aと外側撮像部(右)A23bの間隔(EyeWidth)を計算した後に、左実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(左)A23aの位置と、右実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(右)A23bの位置の平均位置に対応する仮想空間内の位置から互いに反対方向にEyeWidth/2だけ仮想カメラの撮影方向と直交する方向にずらすことによって、左仮想カメラA63Lおよび右仮想カメラA63Rの位置を決定するようにしてもよい。
また、上記実施形態では、仮想カメラ間隔決定処理によって仮想カメラ間隔(EyeWidth)が決定された後は、メイン実世界画像に対してのみマーカー認識処理を行っているが、他の実施形態では、常に左実世界画像と右実世界画像の両方に対してマーカー認識処理を行うようにしてもよい。
また、上記実施形態では、上側LCDA22がパララックスバリア方式の立体表示装置であるが、他の実施形態では、上側LCDA22がレンチキュラー方式等の他の任意の方式の立体表示装置であってもよい。例えば、レンチキュラー方式の立体表示装置を利用する場合には、左目用画像と右目用画像をCPUA311または他のプロセッサで合成してから、当該合成画像をレンチキュラー方式の立体表示装置に供給するようにしてもよい。
また、上記実施形態では、ゲーム装置A10を用いて実世界画像に仮想オブジェクトを合成表示しているが、他の実施形態では、任意の情報処理装置または情報処理システム(例えば、PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ等)を用いて実世界画像に仮想オブジェクトを合成表示してもよい。
また、上記実施形態では、一台の情報処理装置(ゲーム装置A10)のみによって画像表示処理を実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置を有する画像表示システムにおいて、当該複数の情報処理装置が画像表示処理を分担して実行するようにしてもよい。
(ゲーム装置の構成)
以下、本発明の他の一実施形態に係る情報処理装置であるゲーム装置について説明する。なお、本発明は、このような装置に限定されるものではなく、このような装置において実行される情報処理プログラムであっても、このような装置に関係がある情報処理システムであっても構わない。さらに、本発明は、このような装置における情報処理方法であっても構わない。
図41〜図43は、ゲーム装置B10の外観を示す平面図である。ゲーム装置B10は携帯型のゲーム装置であり、図41〜図43に示すように折り畳み可能に構成されている。図41及び図42は、開いた状態(開状態)におけるゲーム装置B10を示し、図43は、閉じた状態(閉状態)におけるゲーム装置B10を示している。図41は、開状態におけるゲーム装置B10の正面図であり、図42は、開状態におけるゲーム装置B10の右側面図である。ゲーム装置B10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置B10は、交換可能なメモリカード内に記憶され、又は、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
まず、図41〜図43を参照して、ゲーム装置B10の外観構成について説明する。図41〜図43に示されるように、ゲーム装置B10は、下側ハウジングB11及び上側ハウジングB21を有する。下側ハウジングB11と上側ハウジングB21とは、開閉可能(折り畳み可能)に接続されている。本実施形態では、各ハウジングB11及びB21はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
図41及び図42に示されるように、下側ハウジングB11の上側長辺部分には、下側ハウジングB11の内側面(主面)B11Bに対して垂直な方向に突起する突起部B11Aが設けられる。また、上側ハウジングB21の下側長辺部分には、上側ハウジングB21の下側面から当該下側面に垂直な方向に突起する突起部B21Aが設けられる。下側ハウジングB11の突起部11Aと上側ハウジングB21の突起部B21Aとが連結されることにより、下側ハウジングB11と上側ハウジングB21とが、折り畳み可能に接続される。
(下側ハウジングの説明)
まず、下側ハウジングB11の構成について説明する。図41〜図43に示すように、下側ハウジングB11には、下側LCD(Liquid Crystal Display:液晶表示装置)B12、タッチパネルB13、各操作ボタンB14A〜B14L(図41、図43)、アナログスティックB15、LEDB16A〜B16B、挿入口B17、及び、マイクロフォン用孔B18が設けられる。以下、これらの詳細について説明する。
図41に示すように、下側LCDB12は下側ハウジングB11に収納される。下側LCDB12は横長形状であり、長辺方向が下側ハウジングB11の長辺方向に一致するように配置される。下側LCDB12は下側ハウジングB11の中央に配置される。下側LCDB12は、下側ハウジングB11の内側面(主面)に設けられ、下側ハウジングB11に設けられた開口部から当該下側LCDB12の画面が露出される。ゲーム装置B10を使用しない場合には閉状態としておくことによって、下側LCDB12の画面が汚れたり傷ついたりすることを防止することができる。下側LCDB12の画素数は、例えば、256dot×192dot(横×縦)であってもよい。下側LCDB12は、後述する上側LCDB22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCDB12として、任意の解像度の表示装置を利用することができる。
図41に示されるように、ゲーム装置B10は、入力装置として、タッチパネルB13を備えている。タッチパネルB13は、下側LCDB12の画面上に装着されている。なお、本実施形態では、タッチパネルB13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネルB13として、下側LCDB12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネルB13の解像度と下側LCDB12の解像度が一致している必要はない。また、下側ハウジングB11の上側面には挿入口B17(図41及び図43(d)に示す点線)が設けられている。挿入口B17は、タッチパネルB13に対する操作を行うために用いられるタッチペンB28を収納することができる。なお、タッチパネルB13に対する入力は通常タッチペンB28を用いて行われるが、タッチペンB28に限らずユーザの指でタッチパネルB13に対する入力をすることも可能である。
各操作ボタンB14A〜B14Lは、所定の入力を行うための入力装置である。図41に示されるように、下側ハウジングB11の内側面(主面)には、各操作ボタンB14A〜B14Lのうち、十字ボタンB14A(方向入力ボタンB14A)、ボタンB14B、ボタンB14C、ボタンB14D、ボタンB14E、電源ボタンB14F、セレクトボタンB14J、HOMEボタンB14K、及びスタートボタンB14Lが、設けられる。十字ボタンB14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタンB14B、ボタンB14C、ボタンB14D、ボタンB14Eは、十字状に配置される。ボタンB14A〜B14E、セレクトボタンB14J、HOMEボタンB14K、及びスタートボタンB14Lには、ゲーム装置B10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタンB14Aは選択操作等に用いられ、各操作ボタンB14B〜B14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタンB14Fは、ゲーム装置B10の電源をオン/オフするために用いられる。
アナログスティックB15は、方向を指示するデバイスであり、下側ハウジングB11の内側面の下側LCDB12より左側領域の上部領域に設けられる。図41に示すように、十字ボタンB14Aは下側LCDB12より左側領域の下部領域に設けられるので、アナログスティックB15は、十字ボタンB14Aの上方に設けられる。また、アナログスティックB15、及び、十字ボタンB14Aは、下側ハウジングを把持した左手の親指で操作可能な位置に設計される。また、アナログスティックB15を上部領域に設けたことにより、下側ハウジングB11を把持する左手の親指が自然と位置するところにアナログスティックB15が配され、十字ボタンB14Aは、左手の親指を少し下にずらした位置に配される。アナログスティックB15は、そのキートップが、下側ハウジングB11の内側面に平行にスライドするように構成されている。アナログスティックB15は、ゲーム装置B10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置B10によって実行される場合、アナログスティックB15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティックB15のキートップがスライドした方向に移動される。なお、アナログスティックB15として、上下左右及び斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
十字状に配置される、ボタンB14B、ボタンB14C、ボタンB14D、ボタンB14Eの4つのボタンは、下側ハウジングB11を把持する右手の親指が自然と位置するところに配置される。また、これらの4つのボタンと、アナログスティックB15とは、下側LCDB12を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの4つのボタンを使用して方向指示入力をすることも可能である。
また、下側ハウジングB11の内側面には、マイクロフォン用孔B18が設けられる。マイクロフォン用孔B18の下部には後述する音声入力装置としてのマイク(図47参照)が設けられ、当該マイクがゲーム装置B10の外部の音を検出する。
図43(a)は閉状態におけるゲーム装置B10の左側面図であり、図43(b)は閉状態におけるゲーム装置B10の正面図であり、図43(c)は閉状態におけるゲーム装置B10の右側面図であり、図43(d)は閉状態におけるゲーム装置B10の背面図である。図43(b)及び(d)に示されるように、下側ハウジングB11の上側面には、LボタンB14G及びRボタンB14Hが設けられている。LボタンB14Gは、下側ハウジングB11の上面の左端部に設けられ、RボタンB14Hは、下側ハウジングB11の上面の右端部に設けられる。後述のように、LボタンB14G及びRボタンB14Hは、撮像部のシャッターボタン(撮影指示ボタン)として機能する。また、図43(a)に示されるように、下側ハウジングB11の左側面には、音量ボタンB14Iが設けられる。音量ボタンB14Iは、ゲーム装置B10が備えるスピーカの音量を調整するために用いられる。
図43(a)に示されるように、下側ハウジングB11の左側面には開閉可能なカバー部B11Cが設けられる。このカバー部B11Cの内側には、ゲーム装置B10とデータ保存用外部メモリB45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリB45は、コネクタに着脱自在に装着される。データ保存用外部メモリB45は、例えば、ゲーム装置B10によって撮像された画像のデータを記憶(保存)するために用いられる。なお、上記コネクタ及びそのカバー部B11Cは、下側ハウジングB11の右側面に設けられてもよい。
また、図43(d)に示されるように、下側ハウジングB11の上側面には、ゲーム装置B10とゲームプログラムを記録した外部メモリB44を挿入するための挿入口B11Dが設けられ、その挿入口B11Dの内部には、外部メモリB44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリB44がゲーム装置B10に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタ及びその挿入口B11Dは、下側ハウジングB11の他の側面(例えば、右側面等)に設けられてもよい。
また、図41及び図43(c)に示されるように、下側ハウジングB11の下側面にはゲーム装置B10の電源のON/OFF状況をユーザに通知する第1LEDB16A、下側ハウジングB11の右側面にはゲーム装置B10の無線通信の確立状況をユーザに通知する第2LEDB16Bが設けられる。ゲーム装置B10は他の機器との間で無線通信を行うことが可能であり、第2LEDB16Bは、無線通信が確立している場合に点灯する。ゲーム装置B10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジングB11の右側面には、この無線通信の機能を有効/無効にする無線スイッチB19が設けられる(図43(c)参照)。
なお、図示は省略するが、下側ハウジングB11には、ゲーム装置B10の電源となる充電式電池が収納され、下側ハウジングB11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
(上側ハウジングの説明)
次に、上側ハウジングB21の構成について説明する。図41〜図43に示すように、上側ハウジングB21には、上側LCD(Liquid Crystal Display:液晶表示装置)B22、外側撮像部B23(外側撮像部(左)B23a及び外側撮像部(右)B23b)、内側撮像部B24、3D調整スイッチB25、及び、3DインジケータB26が設けられる。以下、これらの詳細について説明する。
図41に示すように、上側LCDB22は上側ハウジングB21に収納される。上側LCDB22は、横長形状であり、長辺方向が上側ハウジングB21の長辺方向に一致するように配置される。上側LCDB22は上側ハウジングB21の中央に配置される。上側LCDB22の画面の面積は、下側LCDB12の画面の面積よりも大きく設定される。また、上側LCDB22の画面は、下側LCDB12の画面よりも横長に設定される。すなわち、上側LCDB22の画面のアスペクト比における横幅の割合は、下側LCDB12の画面のアスペクト比における横幅の割合よりも大きく設定される。
上側LCDB22の画面は、上側ハウジングB21の内側面(主面)B21Bに設けられ、上側ハウジングB21に設けられた開口部から当該上側LCDB22の画面が露出される。また、図42及び図44に示すように、上側ハウジングB21の内側面は、透明なスクリーンカバーB27によって覆われている。図44は、上側ハウジングB21の内側面からスクリーンカバーB27を分解した状態を示す分解図である。当該スクリーンカバーB27は、上側LCDB22の画面を保護するとともに、上側LCDB22と上側ハウジングB21の内側面と一体的にさせ、これにより統一感を持たせている。上側LCDB22の画素数は、例えば、640dot×200dot(横×縦)であってもよい。なお、本実施形態では上側LCDB22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCDB22として、任意の解像度の表示装置を利用することができる。
上側LCDB22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。又は、左目用画像と右目用画像とが交互に表示される方式の表示装置であってもよい。また、本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目及び右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCDB22はパララックスバリア方式のものとする。上側LCDB22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCDB22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCDB22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである)。このように、上側LCDB22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチB25によって行われる。
外側撮像部B23は、上側ハウジングB21の外側面(上側LCDB22が設けられた主面と反対側の背面)B21Dに設けられた2つの撮像部(B23a及びB23b)の総称である。外側撮像部(左)B23aと外側撮像部(右)B23bの撮像方向は、いずれも当該外側面B21Dの外向きの法線方向である。また、これらの撮像部はいずれも、上側LCDB22の表示面(内側面)の法線方向と180度反対の方向に設計される。すなわち、外側撮像部(左)B23aの撮像方向及び外側撮像部(右)B23bの撮像方向は、平行である。外側撮像部(左)B23aと外側撮像部(右)B23bとは、ゲーム装置B10が実行するプログラムによって、ステレオカメラとして使用することが可能である。また、プログラムによっては、2つの外側撮像部(B23a及びB23b)のいずれか一方を単独で用いて、外側撮像部B23を非ステレオカメラとして使用することも可能である。また、プログラムによっては、2つの外側撮像部(B23a及びB23b)で撮像した画像を合成して又は補完的に使用することにより撮像範囲を広げた撮像をおこなうことも可能である。本実施形態では、外側撮像部B23は、外側撮像部(左)B23a及び外側撮像部(右)B23bの2つの撮像部で構成される。外側撮像部(左)B23a及び外側撮像部(右)B23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図41の破線及び図43(b)の実線で示されるように、外側撮像部B23を構成する外側撮像部(左)B23a及び外側撮像部(右)B23bは、上側LCDB22の画面の横方向と平行に並べられて配置される。すなわち、2つの撮像部を結んだ直線が上側LCDB22の画面の横方向と平行になるように、外側撮像部(左)B23a及び外側撮像部(右)B23bが配置される。図41の破線で示すB23a及びB23bは、上側ハウジングB21の内側面とは反対側の外側面に存在する外側撮像部(左)B23a及び外側撮像部(右)B23bをそれぞれ表している。図41に示すように、ユーザが上側LCDB22の画面を正面から視認した場合に、外側撮像部(左)B23aは左側に外側撮像部(右)B23bは右側にそれぞれ位置している。外側撮像部B23をステレオカメラとして機能させるプログラムが実行されている場合、外側撮像部(左)B23aは、ユーザの左目で視認される左目用画像を撮像し、外側撮像部(右)B23bは、ユーザの右目で視認される右目用画像を撮像する。外側撮像部(左)B23a及び外側撮像部(右)B23bの間隔は、人間の両目の間隔程度に設定され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、外側撮像部(左)B23a及び外側撮像部(右)B23bの間隔は、この範囲に限らない。
なお、本実施例においては、外側撮像部(左)B23a及び外側撮像部(右)B23はハウジングに固定されており、撮像方向を変更することはできない。
また、外側撮像部(左)B23a及び外側撮像部(右)B23bは、上側LCDB22(上側ハウジングB21)の左右方向に関して中央から対称となる位置にそれぞれ配置される。すなわち、外側撮像部(左)B23a及び外側撮像部(右)B23bは、上側LCDB22を左右に2等分する線に対して対称の位置にそれぞれ配置される。また、外側撮像部(左)B23a及び外側撮像部(右)B23bは、上側ハウジングB21を開いた状態において、上側ハウジングB21の上部であって、上側LCDB22の画面の上端よりも上方の位置の裏側に配置される。すなわち、外側撮像部(左)B23a及び外側撮像部(右)B23bは、上側ハウジングB21の外側面であって、上側LCDB22を外側面に投影した場合、投影した上側LCDB22の画面の上端よりも上方に配置される。
このように、外側撮像部B23の2つの撮像部(B23a及びB23b)が、上側LCDB22の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側LCDB22を正視した場合に、外側撮像部B23の撮像方向をユーザの視線方向と一致させることができる。また、外側撮像部B23は、上側LCDB22の画面の上端より上方の裏側の位置に配置されるため、外側撮像部B23と上側LCDB22とが上側ハウジングB21の内部で干渉することがない。従って、外側撮像部B23を上側LCDB22の画面の裏側に配置する場合と比べて、上側ハウジングB21を薄く構成することが可能となる。
内側撮像部B24は、上側ハウジングB21の内側面(主面)B21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部B24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図41に示すように、内側撮像部B24は、上側ハウジングB21を開いた状態において、上側ハウジングB21の上部であって、上側LCDB22の画面の上端よりも上方に配置され、上側ハウジングB21の左右方向に関して中央の位置(上側ハウジングB21(上側LCDB22の画面)を左右に2等分する線の線上)に配置される。具体的には、図41及び図43(b)に示されるように、内側撮像部B24は、上側ハウジングB21の内側面であって、外側撮像部B23の左右の撮像部(外側撮像部(左)B23a及び外側撮像部(右)B23b)の中間の裏側の位置に配置される。すなわち、上側ハウジングB21の外側面に設けられた外側撮像部B23の左右の撮像部を上側ハウジングB21の内側面に投影した場合、当該投影した左右の撮像部の中間に、内側撮像部B24が設けられる。図43(b)で示される破線B24は、上側ハウジングB21の内側面に存在する内側撮像部B24を表している。
このように、内側撮像部B24は、外側撮像部B23とは反対方向を撮像する。内側撮像部B24は、上側ハウジングB21の内側面であって、外側撮像部B23の左右の撮像部の中間位置の裏側に設けられる。これにより、ユーザが上側LCDB22を正視した際、内側撮像部B24でユーザの顔を正面から撮像することができる。また、外側撮像部B23の左右の撮像部と内側撮像部B24とが上側ハウジングB21の内部で干渉することがないため、上側ハウジングB21を薄く構成することが可能となる。
3D調整スイッチB25は、スライドスイッチであり、上述のように上側LCDB22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチB25は、上側LCDB22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。図41〜図43に示されるように、3D調整スイッチB25は、上側ハウジングB21の内側面及び右側面の端部に設けられ、ユーザが上側LCDB22を正視した場合に、当該3D調整スイッチB25を視認できる位置に設けられる。また、3D調整スイッチB25の操作部は、内側面及び右側面の両方に突出しており、どちらからも視認及び操作することができる。なお、3D調整スイッチB25以外のスイッチは全て下側ハウジングB11に設けられる。
図45は、図41に示す上側ハウジングB21のA−A’線断面図である。図45に示すように、上側ハウジングB21の内側面の右端部には、凹部B21Cが形成され、当該凹部B21Cに3D調整スイッチB25が設けられる。3D調整スイッチB25は、図41及び図42に示されるように、上側ハウジングB21の正面及び右側面から視認可能に配置される。3D調整スイッチB25のスライダB25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダB25aの位置に応じて上側LCDB22の表示モードが設定される。
図46Aから図46Cは、3D調整スイッチB25のスライダB25aがスライドする様子を示す図である。図46Aは、3D調整スイッチB25のスライダB25aが最下点(第3の位置)に存在する様子を示す図である。図46Bは、3D調整スイッチB25のスライダB25aが最下点よりも上方位置(第1の位置)に存在する様子を示す図である。図46Cは、3D調整スイッチB25のスライダB25aが最上点(第2の位置)に存在する様子を示す図である。
図46Aに示すように、3D調整スイッチB25のスライダB25aが最下点位置(第3の位置)に存在する場合、上側LCDB22は平面表示モードに設定され、上側LCDB22の画面には平面画像が表示される(なお、上側LCDB22を立体表示モードのままとして、左目用画像と右目用画像を同一の画像とすることにより平面表示してもよい)。一方、図46Bに示す位置(最下点より上側の位置(第1の位置))から図46Cに示す位置(最上点の位置(第2の位置))までの間にスライダB25aが存在する場合、上側LCDB22は立体表示モードに設定される。この場合、上側LCDB22の画面には立体視可能な画像が表示される。スライダB25aが第1の位置から第2の位置の間に存在する場合、スライダB25aの位置に応じて、立体画像の見え方が調整される。具体的には、スライダB25aの位置に応じて、右目用画像及び左目用画像の横方向の位置のずれ量が調整される。なお、立体表示モードにおける立体画像の見え方の調整については後述する。3D調整スイッチB25のスライダB25aは、第3の位置で固定されるように構成されており、第1の位置と第2の位置との間では上下方向に任意の位置にスライド可能に構成されている。例えば、スライダB25aは、第3の位置において、3D調整スイッチB25を形成する側面から図46Aに示す横方向に突出した凸部(図示せず)によって固定されて、所定以上の力が上方に加わらないと第3の位置よりも上方にスライドしないように構成されている。第3の位置から第1の位置にスライダB25aが存在する場合、立体画像の見え方は調整されないが、これはいわゆるあそびである。他の例においては、あそびをなくして、第3の位置と第1の位置とを同じ位置としてもよい。また、第3の位置を第1の位置と第2の位置の間としてもよい。その場合、スライダを第3の位置から第1の位置の方向に動かした場合と、第2の方向に動かした場合とで、右目用画像及び左目用画像の横方向の位置のずれ量の調整する方向が逆になる。
なお、本実施例のゲーム装置が実行するプログラムには、立体写真を表示するためのプログラムと、立体的なCG画像を表示するためのプログラムがある。後者のプログラムでは、左目用の仮想カメラと右目用の仮想カメラで仮想空間を撮影して、左目用画像と右目用画像を生成する。本実施例のゲーム装置は、このようなプログラムの実行時において、3D調整スイッチB25のスライダB25aの位置に応じて、2つの仮想カメラの間隔を変更することにより、立体感を調整する。
3DインジケータB26は、上側LCDB22が立体表示モードか否かを示す。3DインジケータB26は、LEDであり、上側LCDB22の立体表示モードが有効の場合に点灯する。なお、3DインジケータB26は、上側LCDB22が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているとき(すなわち、3D調整スイッチが上記第1の位置から上記第2の位置にあるときに、左目用画像と右目用画像が異なるような画像処理が実行されているとき)に限り、点灯するようにしてもよい。図41に示されるように、3DインジケータB26は、上側ハウジングB21の内側面に設けられ、上側LCDB22の画面近傍に設けられる。このため、ユーザが上側LCDB22の画面を正視した場合、ユーザは3DインジケータB26を視認しやすい。従って、ユーザは上側LCDB22の画面を視認している状態でも、上側LCDB22の表示モードを容易に認識することができる。
また、上側ハウジングB21の内側面には、スピーカ孔B21Eが設けられる。後述するスピーカB43からの音声がこのスピーカ孔B21Eから出力される。
(ゲーム装置B10の内部構成)
次に、図47を参照して、ゲーム装置B10の内部の電気的構成について説明する。図47は、ゲーム装置B10の内部構成を示すブロック図である。図47に示すように、ゲーム装置B10は、上述した各部に加えて、情報処理部B31、メインメモリB32、外部メモリインターフェイス(外部メモリI/F)B33、データ保存用外部メモリI/FB34、データ保存用内部メモリB35、無線通信モジュールB36、ローカル通信モジュールB37、リアルタイムクロック(RTC)B38、加速度センサB39、電源回路B40、及びインターフェイス回路(I/F回路)B41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジングB11(又は上側ハウジングB21でもよい)内に収納される。
情報処理部B31は、所定のプログラムを実行するためのCPU(Central Processing Unit)B311、画像処理を行うGPU(Graphics Processing Unit)B312等を含む情報処理手段である。本実施形態では、所定のプログラムがゲーム装置B10内のメモリ(例えば外部メモリI/FB33に接続された外部メモリB44やデータ保存用内部メモリB35)に記憶されている。情報処理部B31のCPUB311は、当該所定のプログラムを実行することによって、後述する手書きオブジェクト表示処理(図49)を実行する。なお、情報処理部B31のCPUB311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部B31は、VRAM(Video RAM)B313を含む。情報処理部B31のGPUB312は、情報処理部B31のCPUB311からの命令に応じて画像を生成し、VRAMB313に描画する。そして、情報処理部B31のGPUB312は、VRAMB313に描画された画像を上側LCDB22及び/又は下側LCDB12に出力し、上側LCDB22及び/又は下側LCDB12に当該画像が表示される。なお、本実施形態においては、VRAMB313には、下側LCDB12用記憶領域(以下、タッチパネル用VRAMと記載)と、上側LCDB22用記憶領域(以下、テクスチャ用VRAMと記載)とがある。
情報処理部B31には、メインメモリB32、外部メモリI/FB33、データ保存用外部メモリI/FB34、及び、データ保存用内部メモリB35が接続される。外部メモリI/FB33は、外部メモリB44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/FB34は、データ保存用外部メモリB45を着脱自在に接続するためのインターフェイスである。
メインメモリB32は、情報処理部B31(のCPUB311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリB32は、上記手書きオブジェクト表示処理に用いられる各種データを一時的に記憶したり、外部(外部メモリB44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリB32として例えばPSRAM(Pseudo−SRAM)を用いる。
外部メモリB44は、情報処理部B31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリB44は、例えば読み取り専用の半導体メモリで構成される。外部メモリB44が外部メモリI/FB33に接続されると、情報処理部B31は外部メモリB44に記憶されたプログラムを読み込むことができる。情報処理部B31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリB45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリB45には、外側撮像部B23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリB45がデータ保存用外部メモリI/FB34に接続されると、情報処理部B31はデータ保存用外部メモリB45に記憶された画像を読み込み、上側LCDB22及び/又は下側LCDB12に当該画像を表示することができる。
データ保存用内部メモリB35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリB35には、無線通信モジュールB36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
無線通信モジュールB36は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュールB37は、所定の通信方式(例えば赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュールB36及びローカル通信モジュールB37は情報処理部B31に接続される。情報処理部B31は、無線通信モジュールB36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュールB37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
また、情報処理部B31には、加速度センサB39が接続される。加速度センサB39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサB39は、下側ハウジングB11の内部に設けられる。加速度センサB39は、図41に示すように、下側ハウジングB11の長辺方向をx軸、下側ハウジングB11の短辺方向をy軸、下側ハウジングB11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサB39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサB39は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部B31は、加速度センサB39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置B10の姿勢や動きを検出することができる。
また、情報処理部B31には、RTCB38及び電源回路B40が接続される。RTCB38は、時間をカウントして情報処理部B31に出力する。情報処理部B31は、RTCB38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路B40は、ゲーム装置B10が有する電源(下側ハウジングB11に収納される上記充電式電池)からの電力を制御し、ゲーム装置B10の各部品に電力を供給する。
また、情報処理部B31には、I/F回路B41が接続される。I/F回路B41には、マイクB42及びスピーカB43が接続される。具体的には、I/F回路B41には、図示しないアンプを介してスピーカB43が接続される。マイクB42は、ユーザの音声を検知して音声信号をI/F回路B41に出力する。アンプは、I/F回路B41からの音声信号を増幅し、音声をスピーカB43から出力させる。また、タッチパネルB13はI/F回路B41に接続される。I/F回路B41は、マイクB42及びスピーカB43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換及びD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネルB13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部B31に出力する。タッチ位置データは、タッチパネルB13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネルB13からの信号の読み込み、及び、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部B31は、タッチ位置データを取得することにより、タッチパネルB13に対して入力が行われた位置を知ることができる。
操作ボタンB14は、上記各操作ボタンB14A〜B14Lからなり、情報処理部B31に接続される。操作ボタンB14から情報処理部B31へは、各操作ボタンB14A〜B14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部B31は、操作ボタンB14から操作データを取得することによって、操作ボタンB14に対する入力に従った処理を実行する。
下側LCDB12及び上側LCDB22は情報処理部B31に接続される。下側LCDB12及び上側LCDB22は、情報処理部B31(のGPUB312)の指示に従って画像を表示する。本実施形態では、情報処理部B31は、操作用の画像を下側LCDB12に表示させ、各撮像部B23及びB24のいずれかから取得した画像を上側LCDB22に表示させる。すなわち、情報処理部B31は、上側LCDB22に外側撮像部B23で撮像した右目用画像と左目用画像とを用いた立体画像(立体視可能な画像)を表示させたり、内側撮像部B24で撮像した平面画像を上側LCDB22に表示させたりする。
具体的には、情報処理部B31は、上側LCDB22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCDB22の視差バリアがONになっている場合、情報処理部B31のVRAMB313に格納された(外側撮像部B23で撮像された)右目用画像と左目用画像とが、上側LCDB22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAMB313から右目用画像と左目用画像とを読み出す。これにより、右目用画像及び左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCDB22の画面に表示される。そして、上側LCDB22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCDB22の画面には立体視可能な画像が表示される。
外側撮像部B23及び内側撮像部B24は、情報処理部B31に接続される。外側撮像部B23及び内側撮像部B24は、情報処理部B31の指示に従って画像を撮像し、撮像した画像データを情報処理部B31に出力する。本実施形態では、情報処理部B31は外側撮像部B23及び内側撮像部B24のいずれか一方に対して撮像指示を行い、撮像指示を受けた撮像部が画像を撮像して画像データを情報処理部B31に送る。具体的には、本実施形態では、ユーザによるタッチパネルB13を用いたタッチ操作によって使用する撮像部が選択される。撮像部が選択されたことを情報処理部B31(CPUB311)が検知し、情報処理部B31が外側撮像部B23又は内側撮像部B24に対して撮像指示を行う。
3D調整スイッチB25は、情報処理部B31に接続される。3D調整スイッチB25は、スライダB25aの位置に応じた電気信号を情報処理部B31に送信する。
また、3DインジケータB26は、情報処理部B31に接続される。情報処理部B31は、3DインジケータB26の点灯を制御する。本実施形態では、情報処理部B31は、上側LCDB22が立体表示モードである場合、3DインジケータB26を点灯させる。以上がゲーム装置B10の内部構成の説明である。
(手書きオブジェクト表示処理の詳細)
次に、図48から図51を参照して、本実施形態に係る手書きオブジェクト表示処理の詳細について説明する。まず、手書きオブジェクト表示処理の際にメインメモリB32に記憶される主なデータについて説明する。図48は、ゲーム装置B10のメインメモリB32のメモリマップを示す図である。図48に示されるように、メインメモリB32には、データ記憶領域B70が設けられる。データ記憶領域B70には、カメラ選択データB71、左目用画像位置データB72、右目用画像位置データB73、加速度データB74、表示モードデータB75、操作データB76、ボタン操作フラグB77、仮想カメラデータ(位置、姿勢)B78、手書きペン設定データB79等が記憶される。これらのデータの他、メインメモリB32には、上記撮影処理を実行するプログラムやタッチパネルB13へのタッチ位置を示すデータ、下側LCDB12に表示されるカメラ選択のための画像を示すデータ、下側LCDB12に表示される手書き入力された画像データ等が記憶される。なお、以下においては、「撮像部」を「カメラ」という文言で代用して記載する場合がある。
カメラ選択データB71は、現在選択されている撮像部を示すデータである。カメラ選択データB71は、現在選択されている撮像部が外側撮像部B23か内側撮像部B24かを示すデータである。
左目用画像位置データB72は、外側撮像部(左)B23aによって撮像された左目用画像の上側LCDB22上の表示位置を示すデータであり、左目用画像の画像中心の座標値を示すデータである。右目用画像位置データB73は、外側撮像部(右)B23bによって撮像された右目用画像の上側LCDB22上の表示位置を示すデータであり、右目用画像の画像中心の座標値を示すデータである。
加速度データB74は、加速度センサB39によって検出された最新の加速度を示すデータである。具体的には、加速度データB74は、加速度センサB39によって検出されたx軸方向、y軸方向、及びz軸方向の加速度の値を示す。加速度センサB39は所定時間に1回の割合で加速度を検出し、情報処理部B31(CPUB311)に送信する。情報処理部B31は、加速度センサB39が加速度を検出するたびにメインメモリB32の加速度データB74を更新する。
表示モードデータB75は、上側LCDB22の表示モードが立体表示モードか平面表示モードかを示すデータである。
操作データB76は、各操作ボタンB14A〜E、G〜H、及び、アナログスティックB15に対して行われた操作を示すデータである。
ボタン操作フラグB77は、2値のデータであり、特定のタイミングで操作ボタンB14B〜B14Eのいずれかが押下されたときに更新して記憶されるようになっている。ボタン操作フラグB77として「0」(オフ)が記憶されている状態で、例えば操作ボタンB14Bが押下されると、ボタン操作フラグB77を「0」(オフ)から「1」(オン)へ更新して記憶する。なお、以下においては、操作された状態を「1」(オン)で記憶し、操作されていない状態を「0」(オフ)で記憶するものとするが、他の操作ボタンであってもよいし、別の態様(「0」及び「1」以外)のフラグであっても構わない。
仮想カメラデータB78は、後述するマーカ認識結果に基づいて算出された、マーカ座標系における仮想カメラの位置データ及び姿勢データである。
手書きペン設定データB79は、タッチパネルB13にタッチペンB28を用いて手書きオブジェクトを入力する場合の、タッチペンB28の色及び太さである。初期値(例えば黒及び太線)を記憶しておいて、ユーザの十字ボタンB14Aの操作によりカーソルが移動して色指定アイコン又は太さ指定アイコンが選択されると、ユーザがタッチペンB28の色又は太さを変更することを要求したと判定されて、ユーザが要求したとタッチペンB28の色又は太さが変更される。変更された色又は太さが手書きペン設定データB79として記憶される。
次に、手書きオブジェクト表示処理の詳細について、図49から図51を参照して説明する。図49は、本実施形態に係る手書きオブジェクト表示処理の詳細を示すメインフローチャートである。ゲーム装置B10の電源が投入されると、ゲーム装置B10の情報処理部B31(CPUB311)は、図示しないROMに記憶されている起動プログラムを実行し、これによってメインメモリB32等の各ユニットが初期化される。次に、データ保存用内部メモリB35に記憶された手書きオブジェクト表示処理プログラムがメインメモリB32に読み込まれ、情報処理部B31のCPUB311によって当該プログラムの実行が開始される。
図50に示すフローチャートは、図49の手描きデータ取得処理(ステップSB5)における詳細なフローチャートである。図51に示すフローチャートは、図49の上側LCD表示処理(ステップSB8)における詳細なフローチャートである。なお、図49に示すステップSB1〜ステップSB9の処理ループは、1フレーム(例えば1/30秒。フレーム時間という)毎に繰り返し実行される。また、以下においては、外側撮像部B23が選択され、立体表示モードが選択されているとして説明する。なお、本発明の適用は、立体表示モードに限定されるものではなく、平面表示モードであっても構わない。以下に示す立体表示モードにおける右目用処理又は左目用処理のいずれか一方のみを行うように変更すれば、平面表示モードでの処理となる。
まず、図49を参照して、手書きオブジェクト表示処理のメインルーチンについて説明する。ステップSB1にて、情報処理部B31は、カメラ画像データを取得する。具体的には、情報処理部B31は、現在選択されているカメラによって撮像された画像を示す画像データを取得し、VRAMB313に格納する。ここでは、外側撮像部B23が選択されているため、情報処理部B31は、外側撮像部B23によって撮像された右目用画像と左目用画像とを示す右目用画像データと左目用画像データを取得する。
ステップSB2にて、情報処理部B31は、取得したカメラ画像データに基づいて、外側撮像部B23により撮像された画像の中からマーカを検出することができたか否かを判定する。ここでは、このマーカは、白色の紙片の中央付近の黒色の四辺形が印刷され、その四辺形の中にローマ字の「M」が白抜きで印刷されたものとする。しかしながら、マーカはこのような形状、模様、色彩に限定されないで、マーカの位置(ここでは4点の位置)と方向とが認識できるものであればよい。具体的には、情報処理部B31は、まず、外側撮像部B23により撮像された画像の中から4本の線分によって連結される連結領域を抽出し、抽出した連結領域の内部のパターン画像を取得する。そして、情報処理部B31は、取得したパターン画像を示すパターン画像データと外部メモリB44に予め記憶されているパターン画像データとの類似度を計算し、計算した結果としての類似度を示す値が予め定められた閾値以上である場合(ステップSB2にてYES)、処理はステップSB3に移され、類似度を示す値が予め定められた閾値未満である場合(ステップSB2にてNO)、処理はステップSB5へ移される。
ステップSB3にて、情報処理部B31は、マーカ検出結果に基づいて、外側撮像部B23(ゲーム装置B10)とマーカとの位置関係を算出する。ここで、位置関係とは、例えば、外側撮像部B23とマーカの一方を基準としたときの他方の3次元の位置及び姿勢として表される。なお、位置関係を算出する処理は、従来の拡張現実感技術における処理と同様な処理で実現できる。
ステップSB4にて、情報処理部B31は、外側撮像部B23とマーカとの位置関係に基づいて、仮想カメラの位置及び姿勢を決定する。このとき、立体表示モードが選択されているので、情報処理部B31は、外側撮像部(左)B23aによるカメラ画像データに基づいて左目用の仮想カメラの位置及び姿勢を算出して、外側撮像部(右)B23bによるカメラ画像データに基づいて右目用の仮想カメラの位置及び姿勢を算出する。なお、仮想カメラの位置及び姿勢は、外側撮像部B23とマーカとの位置関係から仮想カメラのビュー行列を求め、求めた仮想カメラのビュー行列により求められる。決定した仮想カメラの位置及び姿勢は、メインメモリB32のデータ記憶領域B70の仮想カメラデータB78として記憶される。
ステップSB5にて、情報処理部B31は、手書きデータ取得処理を実行する。なお、このステップSB5の手書きデータ取得処理はサブルーチン化されており、その詳細については、後述する。
ステップSB6にて、情報処理部B31は、所定のボタンが押下されたか否かを判定する。このとき、ユーザが、例えば操作ボタンB14Bを押下すると、所定のボタンが押下されたと判定する。所定のボタンが押下されたと判定されると(ステップSB6にてYES)、処理はステップSB7へ移される。もしそうでないと(ステップSB6にてNO)、この処理はステップSB8へ移される。なお、所定のボタンは操作ボタンB14Bに限定されず、他の操作ボタンであっても構わないし、別のイベントであっても構わない。イベントの一例として、ユーザによる手書き終了(一定時間以上タッチパネルB13へのタッチ入力なし)が挙げられる。
ステップSB7にて、情報処理部B31は、ボタン操作フラグB77を更新する。このとき、上述したように操作ボタンB14Bが押下される毎に「0」が「1」に書き換えられて更新され、「1」が「0」に書き換えられて更新される。
ステップSB8にて、情報処理部B31は、上側LCD表示処理を実行する。なお、このステップSB8の上側LCD表示処理はサブルーチン化されており、その詳細については、後述する。
ステップSB9にて、情報処理部B31は、下側LCDB12に手書き入力画像を表示する。このとき、情報処理部B31は、タッチパネル用VRAMに記憶された手書き入力データに基づいて下側LCDB12に手書き入力画像を表示する。
次に、図50を参照して、手書きデータ取得処理のサブルーチンについて説明する。ステップSB51にて、情報処理部B31は、手書きペンの色及び/又は太さの変更要求がユーザにより入力されたか否かを判定する。手書きペンの色及び/又は太さの変更要求が入力されたと判定されると(ステップSB51にてYES)、処理はステップSB52へ移される。もしそうでないと(ステップSB51にてNO)、この処理はステップSB53へ移される。
ステップSB52にて、情報処理部B31は、ユーザの要求に応じて、手書きペンの色及び/又は太さを変更する。変更した手書きペンの色及び/又は太さは、メインメモリB32のデータ記憶領域B70の手書きペン設定データB79として保持される。その後、処理はステップSB54へ移される。
ステップSB53にて、情報処理部B31は、メインメモリB32のデータ記憶領域B70の手書きペン設定データB79を読み出して、手書きペンの色及び/又は太さを設定する。このとき、手書きペンの色及び/又は太さは、手書きペン設定データB79として記憶された初期値又は保持値に設定される。
ステップSB54にて、情報処理部B31は、ユーザがタッチパネルB13にタッチ入力したか否かを判定する。タッチパネルB13にタッチ入力したと判定されると(ステップSB54にてYES)、処理はステップSB55へ移される。もしそうでないと(ステップSB54にてNO)、この処理はステップSB51へ戻されて、手書きペンの設定処理及びタッチ検出処理が行われる。
ステップSB55にて、情報処理部B31は、タッチパネルB13へのタッチ位置を示す座標を検出する。ステップSB56にて、情報処理部B31は、検出した座標と、前回の処理時に検出した座標とに基づいて、タッチパネルB13上での軌跡を算出する。この軌跡を繰り返し算出することにより手書きオブジェクトの画像データを検出できる。
ステップSB57にて、情報処理部B31は、手書きペンの移動速度を算出する。具体的には、情報処理部B31は、軌跡の距離とこのプログラムのサイクルタイム(フレーム時間)とに基づいて、手書きペンの移動速度を算出する。
ステップSB58にて、情報処理部B31は、手書きペンの移動速度に基づいて、手書きペンの色を変更する。このとき、移動速度が速いと、明度を上げたり(又は下げたり)、彩度を上げたり(又は下げたり)する。また、移動速度が速いほど、太さを細くするようにしても構わない。
ステップSB59にて、情報処理部B31は、手書き入力データをメインメモリB32へ記憶する。このとき、座標、色情報及び太さ情報が付加情報として記憶される。ステップSB60にて、情報処理部B31は、手書き入力データ(軌跡データ)を画像データ(ビットマップデータ)へ変換して、変換したデータをVRAMB313のタッチパネル用VRAMとテクスチャ用VRAMとに転送する。その後、この処理は終了する(メインルーチンへ戻る)。
次に、図51を参照して、上側LCD表示処理のサブルーチンについて説明する。ステップSB81にて、情報処理部B31は、外側撮像部B23により撮像した画像の中から、マーカを一定時間以上検出できていないか否かを判定する。このとき、ユーザがゲーム装置B10を傾けることにより、マーカの位置が外側撮像部B23の撮像範囲外である時間が一定時間以上になると、マーカを一定時間以上検出できていないと判定される。マーカを一定時間以上検出できていないと判定されると(ステップSB81にてYES)、処理はステップSB92へ移される。もしそうでないと、すなわち、ユーザがゲーム装置B10を傾けた場合に一定時間が経過するまでに外側撮像部B23によりマーカを検出できると(ステップSB81にてNO)、この処理はステップSB82へ移される。なお、マーカの検出方法は、ステップSB2で説明した処理と同様な処理で行えばよい。
ステップSB82にて、情報処理部B31は、ボタン操作フラグがオンであるか否かを判定する。ボタン操作フラグがオンであると判定されると(ステップSB82にてYES)、処理はステップSB83へ移される。もしそうでないと(ステップSB82にてNO)、この処理はステップSB85へ移される。
ステップSB83にて、情報処理部B31は、経過時間に基づいて基本ポリゴンの位置を変化させて設定する。ここで、基本ポリゴンの位置の変化の一例としては、基本ポリゴンのマーカ座標系における位置を周期的に(一定の時間が経過するたびに)変化させることが挙げられる。このようにすると、基本ポリゴンは、例えば上下方向又は左右方向に飛び跳ねるように設定される。ここで、経過時間とは、例えば、ボタン操作フラグB77がオフからオンになったときからの経過時間とする。
ステップSB84にて、情報処理部B31は、経過時間により基本ポリゴンの形状を変化する。ここで、基本ポリゴンの形状の変化の一例としては、基本ポリゴンの縦横比を周期的に(一定の時間が経過するたびに)変化させることが挙げられる。このようにすると、基本ポリゴンが、横方向及び/又は縦方向に伸びたり縮んだりするように設定される。その後、処理はステップSB86へ移される。ここで、経過時間とは、例えば、ボタン操作フラグB77がオフからオンになったときからの経過時間とする。
ステップSB85にて、情報処理部B31は、マーカ座標系原点に基本ポリゴンの位置を設定する。ここで、マーカ座標系原点は、例えば、マーカの中心位置とする。
ステップSB86にて、情報処理部B31は、設定された基本ポリゴンの位置及び形状に応じた影表示用のポリゴンを設定する。このとき、情報処理部B31は、基本ポリゴンを90度倒した位置に影表示用のポリゴンを設定する。なお、情報処理部B31は、基本ポリゴンの位置が変化されるように設定されている場合には、その変化に従った位置に影表示用のポリゴンを設定する。
ステップSB87にて、情報処理部B31は、設定された基本ポリゴンの位置及び形状に応じた厚み表示用のポリゴンを設定する。このとき、情報処理部B31は、基本ポリゴンを予め定められた枚数だけ、基本ポリゴンの法線方向(基本ポリゴンは薄板形状とする)に並べて配置する。なお、情報処理部B31は、基本ポリゴンの位置が変化されるように設定されている場合には、その変化に従った位置に厚み表示用のポリゴンを設定する。
ステップSB88にて、情報処理部B31は、ポリゴン(基本、影表示用、厚み表示用)に手書き画像テクスチャを貼り付ける。なお、手書き画像テクスチャを示すテクスチャデータは、手書き入力データから変換された画像データであり、テクスチャ用VRAMから読み出される。このとき、影表示用ポリゴンについては、手書き画像テクスチャの明度を所定の度合いで下げるようテクスチャデータを変更して手書き画像テクスチャを貼り付けるようになっている。また、厚み表示用のポリゴンについては、基本ポリゴンから離れるにしたがって、手書き画像テクスチャの明度を徐々に下げていくようにテクスチャデータを変更して手書き画像テクスチャを貼り付けるようになっている。
ステップSB89にて、情報処理部B31は、仮想カメラで、手書き画像テクスチャが貼り付けられたポリゴンを撮影して手書き画像(手書きオブジェクト画像)データを生成する。このとき、立体表示モードが選択されているので、左目用の仮想カメラの位置及び姿勢に基づいて左目用の手書き画像を生成するとともに、右目用の仮想カメラの位置及び姿勢に基づいて右目用の手書き画像を生成する。
ステップSB90にて、情報処理部B31は、手書き画像データとカメラ画像データとに基づいて、手書き画像とカメラ画像とを重ね合わせる。このとき、立体表示モードが選択されているので、情報処理部B31は、左目用の手書き画像と外側撮像部(左)B23aにより撮影されたカメラ画像とを重ね合わせて左目用の重畳画像が作成され、右目用の手書き画像と外側撮像部(右)B23bにより撮影されたカメラ画像とを重ね合わせて右目用の重畳画像が作成される。
ステップSB91にて、情報処理部B31は、上側LCDB22に、手書き画像とカメラ画像とを重ね合わせた重畳画像を表示する。このとき、立体視可能なように、左目用の重畳画像と右目用の重畳画像とが合成される。その後、この処理は終了する(メインルーチンへ戻る)。
ステップSB92にて、情報処理部B31は、上側LCDB22にカメラ画像を表示する。その後、この処理は終了する(メインルーチンへ戻る)。
以上のような構造及びフローチャートに基づく、本実施形態に係るゲーム装置B10の動作について、図52から図57を参照して説明する。これらの図においては、手書き画像が表示される上側LCDB22において、手書き画像とマーカとが重畳する部分は、本来はマーカも手書き画像も表示されている。しかしながら、図における表現を明確にするために、マーカの一部を表示していない。また、以下においては、マーカを動かさないでユーザがゲーム装置B10を傾ける場合について説明するが、マーカはユーザにより動かされても構わない。さらに、マーカがユーザにより動かされて、かつ、ユーザがゲーム装置B10を傾けても構わない。
(手書きオブジェクトの基本的な表示)
ユーザが、外側撮像部B23を選択して、立体表示モードを選択して、上述したプログラムが実行されるように設定する。ユーザが、例えば机の上に置いたマーカを含めた範囲を外側撮像部B23で撮影することにより、カメラ画像データが取得される(ステップSB1)。マーカが検出されると(ステップSB2にてYES)、マーカの検出結果に基づいて、外側撮像部B23とマーカとの位置関係が算出され(ステップSB3)、算出された位置関係に基づいて、仮想カメラの位置及び姿勢が決定される(ステップSB4)。
このような状態で、図52に示すように、ユーザが下側LCDB12に人物の顔を手書きする。なお、手書きペンの色及び太さの変更をユーザが要求しないで、初期値で手書きされるものとする(ステップB51にてNO)。図52は、顔を途中まで描いた状態を示す。ユーザがタッチペンB28を下側LCDB12にタッチすると(ステップSB54)、座標が検出され(ステップSB55)、軌跡が検出され(ステップSB56)、ペンの移動速度が算出されて(ステップSB57)、その移動速度に応じて手書きペンの色が変更される(ステップSB58)。手書き入力データが画像データへ変換され、メインメモリB32へ記憶されて(ステップSB59)、タッチパネル用VRAM及びテクスチャ用VRAMへ転送される(ステップSB60)。
このような手書きの途中であっても、図49から図51に示すプログラムが周期的に(所定のサイクルタイムで)繰り返し動作しているので、図52に示すように、上側LCDB22に手書き途中の手書きオブジェクトが表示される。
この図52のように手書きオブジェクトが表示されている場合のゲーム装置B10の動作についてさらに説明する。なお、以下においては、所定のボタンが押下されていない場合の動作を説明した後に、所定のボタンが押下されている場合の動作を説明する。
所定のボタンが押下されていないので(ステップSB6にてNO)、ボタン操作フラグが更新されないで「0」(オフ)が維持される。一定時間以上経過する前にマーカが検出されると(ステップSB81にてNO)、ボタン操作フラグがオフであるので(ステップSB82にてNO)、マーカ座標系原点に基本ポリゴンの位置が設定される(ステップSB85)。
必要に応じて、手書きオブジェクトに、影が付加されたり、厚みが付加されたりする。この場合の動作については後述する。基本ポリゴンに手書き画像テクスチャが貼り付けられて(ステップSB88)、仮想カメラで手書き画像テクスチャが貼り付けられたポリゴンが撮影されて手書き画像(手書きオブジェクト画像)データが生成される(ステップSB89)。手書き画像とカメラ画像とが重ね合わせられて(ステップSB90)、上側LCDB22に重畳画像が表示される(ステップSB91)。このとき、図52に示すように、上側LCDB22に、手書き途中のオブジェクトが、マーカ座標系の原点に配置されて表示される。なお、マーカ座標系及びその原点は予め設定されているものとする。また、図52に示すように、下側LCDB12にも手書きオブジェクトが表示される(ステップSB9)。
さらに、ユーザが手書きを進めると、上述の動作が繰り返して行われて、図53に示すように、上側LCDB22に、ユーザが手書きしたオブジェクトが3次元仮想空間に存在するように立体表示モードで表示され、下側LCDB12に手書きオブジェクトが平面的に表示される。
(ゲーム装置B10を傾けた場合)
図54(a)(この図は図53からタッチペンB28を削除した図)に示すように、上側LCDB22に、ユーザが手書きしたオブジェクトが3次元仮想空間に存在するように表示されている場合に、マーカが外側撮像部B23で撮像される範囲内において、ユーザがゲーム装置B10を傾ける。ここでは、ゲーム装置B10を、マーカを中心にして時計回りに約90度傾けた(回転させた)ものとする。
ゲーム装置B10が傾けられても、図49から図51に示すプログラムが周期的に(サイクルタイムで)繰り返し動作しているので、外側撮像部B23で撮影することにより、カメラ画像データが逐次取得され(ステップSB1)、マーカが検出され(ステップSB2にてYES)、マーカの検出結果に基づいて、外側撮像部B23とマーカとの位置関係が逐次算出され(ステップSB3)、算出された位置関係に基づいて、仮想カメラの位置及び姿勢が逐次決定される(ステップSB4)。マーカ座標系原点に基本ポリゴンの位置が逐次設定され(ステップSB85)、基本ポリゴンに手書き画像テクスチャが貼り付けられて(ステップSB88)、仮想カメラで手書き画像テクスチャが貼り付けられたポリゴンが撮影されて手書き画像(手書きオブジェクト画像)データが生成され(ステップSB89)、手書き画像とカメラ画像とが重ね合わせられて(ステップSB90)、上側LCDB22に重畳画像が逐次表示される(ステップSB91)。
図54(a)に示す状態からゲーム装置B10を、マーカを中心にして時計回りに約90度傾けると、図54(b)に示す状態に上側LCDB22の表示が変更される。これらの図に示すように、仮想カメラと基本ポリゴンとの相対的位置は、外側撮像部B23により逐次撮像される画像に含まれる、マーカの認識結果に基づいて、変更される。このため、ゲーム装置B10を傾けることにより撮像方向が変化すると、マーカの見え方の変化に対応して、仮想カメラと基本ポリゴンとの相対的位置が変更される。このため、ゲーム装置B10を傾けることによる撮像方向の変化に対応して、仮想カメラにより撮影された手書き画像の表示が変更される。このように、ユーザが手書きした画像を現実世界に存在するように表示し、拡張現実感を実現することができる。
(所定のボタンが押下されている場合:基本ポリゴンの位置変化)
所定のボタンが押下されると(ステップSB6にてYES)、ボタン操作フラグが更新されて「1」(オン)に変更される(ステップSB7)。一定時間以上経過する前にマーカが検出されると(ステップSB81にてNO)、ボタン操作フラグがオンであるので(ステップSB82にてYES)、経過時間に基づいて基本ポリゴンの位置(マーカ座標系原点に対する相対位置及び相対姿勢)が設定される(ステップSB83)。
このとき、基本ポリゴンの表示位置が、例えば周期的に上下方向に往復移動するように変化される。このような基本ポリゴンに手書き画像テクスチャが貼り付けられて(ステップSB88)、仮想カメラで手書き画像テクスチャが貼り付けられたポリゴンが撮影されて手書き画像(手書きオブジェクト画像)データが生成される(ステップSB89)。手書き画像とカメラ画像とが重ね合わせられて(ステップSB90)、上側LCDB22に重畳画像が表示される(ステップSB91)。このとき、手書き画像は、上下方向又は左右方向に飛び跳ねるように表示される。このため、さらに自然に、ユーザが手書きした画像を現実世界に存在するように表示することができる。
(所定のボタンが押下されている場合:基本ポリゴンの形状変化)
上述したように、所定のボタンが押下される場合に、基本ポリゴンの形状が変化する場合の動作について説明する。
ボタン操作フラグがオンであるので(ステップSB82にてYES)、経過時間により基本ポリゴンの形状が変化される(ステップSB84)。例えば、基本ポリゴンの縦横比が周期的に(一定の時間が経過するたびに)変化される。このような基本ポリゴンに手書き画像テクスチャが貼り付けられて(ステップSB88)、仮想カメラで手書き画像テクスチャが貼り付けられたポリゴンが撮影されて手書き画像(手書きオブジェクト画像)データが生成される(ステップSB89)。手書き画像とカメラ画像とが重ね合わせられて(ステップSB90)、上側LCDB22に重畳画像が表示される(ステップSB91)。このとき、手書き画像は、横方向及び/又は縦方向に伸びたり縮んだりするように表示される。
このときの上側LCDB22における表示例を図55(a)及び図55(b)に示す。図55(a)に示す表示例は、基本ポリゴンが縦方向に伸びた状態(横方向に縮んだ状態)であって、図55(b)に示す表示例は、基本ポリゴンが横方向に伸びた状態(縦方向に縮んだ状態)を、それぞれ示している。実際には、基本ポリゴンの縦横比が周期的に変化するので、図55(a)に示す表示例と図55(b)に示す表示例とが、短い時間周期で繰り返し表示される。このため、手書き画像である顔の表情が変化するように表示される。このように動作するので、さらに自然に、ユーザが手書きした画像を現実世界に存在するように表示することができる。
なお、このように基本ポリゴンの形状が変化することに加えて、上述したように基本ポリゴンの位置が変化するようにしても構わない。この場合、手書き画像である顔の表情が変化しながら、上下方向又は左右方向に飛び跳ねるように表示される。このため、さらに自然な拡張現実感を実現することができる。
(影及び厚みが付与される場合)
所定のボタンが押下されているか否かに関わらず、基本ポリゴンに影及び厚みが付与される場合の動作について説明する。
ボタン操作フラグがオンであるのかオフであるのかに関わらず、基本ポリゴンの位置及び形状に応じた影表示用のポリゴンが設定される(ステップSB86)。このとき、基本ポリゴンの位置が変化されている場合には、その変化に従った位置に影表示用のポリゴンが設定される。このため、手書き画像が上下方向又は左右方向に飛び跳ねるように表示されるように基本ポリゴンの位置が変化される場合には、その飛び跳ねる手書き画像に対応する影が表示される。
さらに、基本ポリゴンの位置及び形状に応じた厚み表示用のポリゴンが設定される(ステップSB87)。このとき、予め定められた枚数だけの厚み表示用のポリゴンが並べて配置される。このため、基本ポリゴンの位置が変化されている場合には、その変化に従った位置に厚み表示用のポリゴンが設定される。このため、手書き画像が上下方向又は左右方向に飛び跳ねるように表示されるように基本ポリゴンの位置が変化される場合には、その飛び跳ねる手書き画像に対応する厚みが表示される。
このような基本ポリゴン、影表示用のポリゴン及び厚み表示用のポリゴンにテクスチャが貼り付けられて(ステップSB88)、仮想カメラでテクスチャが貼り付けられたポリゴンが撮影されて手書き画像(手書きオブジェクト画像)データが生成される(ステップSB89)。手書き画像とカメラ画像とが重ね合わせられて(ステップSB90)、上側LCDB22に重畳画像が表示される(ステップSB91)。
影が表示される場合の、上側LCDB22における表示例を図56(a)及び図56(b)に示す。これらの図に示すように、手書き画像に対応する影が表示される。このため、さらに自然に、ユーザが手書きした画像を現実世界に存在するように表示することができる。
また、厚みが表示される場合の、上側LCDB22における表示例を図57(a)及び図57(b)に示す。これらの図に示すように、手書き画像に厚みが示される。このため、さらに自然に、ユーザが手書きした画像を現実世界に存在するように表示することができる。
(マーカが一定時間以上検出できない場合)
例えば、ユーザがゲーム装置B10を傾け過ぎると、外側撮像部B23でマーカが撮像できない場合がある。この場合には、撮像した画像の中から、マーカを一定時間以上検出できないので(ステップSB81にてYES)、基本ポリゴンの設定等を実行しないで、カメラ画像を上側LCDB22に表示する(ステップSB92)。このとき、上側LCDB22には、マーカも手書き画像も表示されないで、外側撮像部B23で撮像した風景だけが単に表示される。
以上のように、本実施形態に係るゲーム装置B10によると、外側撮像部B23で撮像した風景(背景)に、タッチパネルにユーザが手書きした画像を、表示位置を変化させたり、形状を変化させたり、影を付与したり、厚みを付与したりすることにより、自然な拡張現実感を実現した画像を上側LCDB22に表示することができる。このため、手書き画像について、ユーザに、より強い現実感を与えたり、より強い興味を与えたりすることができる。この場合において、タッチパネルに手書きしている途中の画像であっても、上側LCDB22に表示することができる。このため、拡張現実感を確認しながら、手書き画像を完成させることができる。
(変形例)
上記したステップSB86においては、基本ポリゴンの形状を変化させて、変化させた基本ポリゴンにテクスチャを貼り付けることにより、手書きオブジェクトの形状を変形させていた。しかしながら、本発明はこれに限定されず、テクスチャを変形させるようにしても構わない。
また、本実施形態に係るゲーム装置B10が所定のゲームを実行するようにしても構わない。例えば、所定のゲームプログラムがデータ保存用内部メモリB35や外部メモリB44に記憶され、ゲーム装置B10が当該プログラムを実行することによりゲームが行われる。例えば、当該ゲームにおいて、ユーザが下側LCDB12で作成した手書きオブジェクトが上側LCDB22に表示される。
また、本発明は、本実施形態に係るゲーム装置に限らず、任意の携帯型電子機器(例えば、PDA(Personal Digital Assistant)又は携帯電話)、パーソナルコンピュータ、カメラ等に適用することが可能である。
また、本実施形態に係るゲーム装置B10の情報処理部B31が所定のプログラムを実行することによって、上述したフローチャートによる手書きオブジェクト表示処理が行われた。これに限定されず、手書きオブジェクト表示処理の一部又は全部は、ゲーム装置B10が備える専用回路によって行われてもよい。
また、上述した処理を1台のゲーム装置(情報処理装置)だけで処理するのではなく、互いに通信可能に接続された複数の情報処理装置で分担して処理するようにしても構わない。
また、1枚のポリゴンに手書き画像をテクスチャとして貼り付けるのではなく、手書き画像に応じた形状の3Dポリゴンモデルを逐次生成して、これを基本ポリゴンの代わりに配置するようにしても構わない。
また、本実施形態においては、手書きの軌跡で構成される手書きオブジェクトを示す手書きデータを入力する入力手段をタッチパネルB13として説明したが、本発明はこれに限定されない。例えば、この入力手段は、マウスやタッチパッド等のポインティングデバイスであっても構わない。また、カメラや加速度センサによって入力装置の姿勢を検出し、入力装置が指し示す所定の面上の位置を当該姿勢に基づいて算出することにより、手書きデータを入力するようになっていても構わない。さらに、ボタンB14Cを押下しつつ、十字ボタンB14Aで下側LCDB12に表示されるカーソルを移動させた場合に、移動するカーソルに追従するような軌跡を手書きデータとして入力するようになっていても構わない。
また、本実施形態においては、外側撮像部B23により撮像したカメラ画像と手書き画像とを重ね合わせて上側LCDB22に表示させるビデオシースルー方式を説明したが、本発明はこれに限定されない。例えば、光学シースルー方式を実現する構成であってもよい。この場合には、少なくともカメラを備えたヘッドマウンドディスプレイで構成され、ユーザはメガネのレンズ部分に相当するディスプレイ部を通して現実空間を視認できるようになっている。このディプレイ部は、現実空間を透過してユーザの目に直接導くことが可能な素材によって構成されている。さらに、このディスプレイ部にはコンピュータにより生成した仮想オブジェクトの画像を表示させることができるようになっている。これにより、ユーザは、現実空間と仮想オブジェクトの画像とが重ね合わせられた像を視認することができる。なお、ヘッドマウンドディスプレイに備えられたカメラは現実空間に配置されたマーカを検出するために用いられる。
図面を参照して、本発明のさらに他の一実施形態に係る画像処理プログラムを実行する画像処理装置について説明する。本発明の画像処理プログラムは、任意のコンピュータシステムで実行されることによって適用することができるが、画像処理装置の一例として携帯型のゲーム装置C10を用い、ゲーム装置C10で実行される画像処理プログラムを用いて説明する。なお、図58〜図60Dは、ゲーム装置C10の外観の一例を示す平面図である。ゲーム装置C10は、一例として携帯型のゲーム装置であり、図58〜図60Dに示すように折り畳み可能に構成されている。図58は、開いた状態(開状態)におけるゲーム装置C10の一例を示す正面図である。図59は、開状態におけるゲーム装置C10の一例を示す右側面図である。図60Aは、閉じた状態(閉状態)におけるゲーム装置C10の一例を示す左側面図である。図60Bは、閉状態におけるゲーム装置C10の一例を示す正面図である。図60Cは、閉状態におけるゲーム装置C10の一例を示す右側面図である。図60Dは、閉状態におけるゲーム装置C10の一例を示す背面図である。ゲーム装置C10は、撮像部を内蔵しており、当該撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置C10は、交換可能なメモリカード内に記憶され、または、サーバや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラから見た仮想空間画像等のコンピュータグラフィックス処理により生成された画像を画面に表示することもできる。
図58〜図60Dにおいて、ゲーム装置C10は、下側ハウジングC11および上側ハウジングC21を有する。下側ハウジングC11と上側ハウジングC21とは、開閉可能(折り畳み可能)に連結されている。図58の例では、下側ハウジングC11および上側ハウジングC21は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回動可能に連結されている。通常、ユーザは、開状態でゲーム装置C10を使用する。そして、ユーザは、ゲーム装置C10を使用しない場合には閉状態としてゲーム装置C10を保管する。また、ゲーム装置C10は、上記閉状態および開状態のみでなく、下側ハウジングC11と上側ハウジングC21とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジングC21を下側ハウジングC11に対して任意の角度で静止させることができる。
図58および図59に示されるように、下側ハウジングC11の上側長辺部分には、下側ハウジングC11の内側面(主面)C11Bに対して垂直な方向に突起する突起部C11Aが設けられる。また、上側ハウジングC21の下側長辺部分には、上側ハウジングC21の下側面から当該下側面に垂直な方向に突起する突起部C21Aが設けられる。下側ハウジングC11の突起部C11Aと上側ハウジングC21の突起部C21Aとが連結されることにより、下側ハウジングC11と上側ハウジングC21とが、折り畳み可能に接続される。
下側ハウジングC11には、下側LCD(Liquid Crystal Display:液晶表示装置)C12、タッチパネルC13、各操作ボタンC14A〜C14L(図58、図60A〜図60D)、アナログスティックC15、LEDC16A〜C16B、挿入口C17、および、マイクロフォン用孔C18が設けられる。以下、これらの詳細について説明する。
図58に示すように、下側LCDC12は下側ハウジングC11に収納される。下側LCDC12は横長形状であり、長辺方向が下側ハウジングC11の長辺方向に一致するように配置される。下側LCDC12は、下側ハウジングC11の中央に配置される。下側LCDC12は、下側ハウジングC11の内側面(主面)に設けられ、下側ハウジングC11の内側面に設けられた開口部から下側LCDC12の画面が露出する。そして、ゲーム装置C10を使用しない場合には上記閉状態としておくことによって、下側LCDC12の画面が汚れたり傷ついたりすることを防止することができる。下側LCDC12の画素数は、一例として、256dot×192dot(横×縦)である。他の例として、下側LCDC12の画素数は、320dot×240dot(横×縦)である。下側LCDC12は、後述する上側LCDC22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCDC12として、任意の解像度の表示装置を利用することができる。
図58に示されるように、ゲーム装置C10は、入力装置として、タッチパネルC13を備えている。タッチパネルC13は、下側LCDC12の画面上を覆うように装着されている。なお、本実施形態では、タッチパネルC13は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネルC13は、抵抗膜方式に限らず、例えば静電容量方式等、任意の押圧式のタッチパネルを用いることができる。本実施形態では、タッチパネルC13として、下側LCDC12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネルC13の解像度と下側LCDC12の解像度とが一致している必要はない。また、下側ハウジングC11の上側面には挿入口C17(図58および図60Dに示す点線)が設けられている。挿入口C17は、タッチパネルC13に対する操作を行うために用いられるタッチペンC28を収納することができる。なお、タッチパネルC13に対する入力は通常タッチペンC28を用いて行われるが、タッチペンC28に限らずユーザの指でタッチパネルC13に対する入力をすることも可能である。
各操作ボタンC14A〜C14Lは、所定の入力を行うための入力装置である。図58に示されるように、下側ハウジングC11の内側面(主面)には、各操作ボタンC14A〜C14Lのうち、十字ボタンC14A(方向入力ボタンC14A)、ボタンC14B、ボタンC14C、ボタンC14D、ボタンC14E、電源ボタンC14F、セレクトボタンC14J、HOMEボタンC14K、およびスタートボタンC14Lが設けられる。十字ボタンC14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタンC14B、ボタンC14C、ボタンC14D、およびボタンC14Eは、十字状に配置される。ボタンC14A〜C14E、セレクトボタンC14J、HOMEボタンC14K、およびスタートボタンC14Lには、ゲーム装置C10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタンC14Aは選択操作等に用いられ、各操作ボタンC14B〜C14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタンC14Fは、ゲーム装置C10の電源をオン/オフするために用いられる。
アナログスティックC15は、方向を指示するデバイスであり、下側ハウジングC11の内側面の下側LCDC12より左側領域の上部領域に設けられる。図58に示すように、十字ボタンC14Aが下側LCDC12より左側領域の下部領域に設けられ、アナログスティックC15が十字ボタンC14Aの上方に設けられる。また、アナログスティックC15および十字ボタンC14Aは、下側ハウジングC11を把持した左手の親指で操作可能な位置に設計される。また、アナログスティックC15を上部領域に設けたことにより、下側ハウジングC11を把持する左手の親指が自然と位置するところにアナログスティックC15が配され、十字ボタンC14Aは、左手の親指を少し下にずらした位置に配される。アナログスティックC15は、そのキートップが、下側ハウジングC11の内側面に平行にスライドするように構成されている。アナログスティックC15は、ゲーム装置C10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置C10によって実行される場合、アナログスティックC15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトは、アナログスティックC15のキートップがスライドした方向に移動される。なお、アナログスティックC15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いてもよい。
十字状に配置される、ボタンC14B、ボタンC14C、ボタンC14D、およびボタンC14Eの4つのボタンは、下側ハウジングC11を把持する右手の親指が自然と位置するところに配置される。また、これらの4つのボタンとアナログスティックC15とは、下側LCDC12を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの4つのボタンを使用して方向指示入力をすることも可能である。
また、下側ハウジングC11の内側面には、マイクロフォン用孔C18が設けられる。マイクロフォン用孔C18の下部には後述する音声入力装置としてのマイク(図61参照)が設けられ、当該マイクがゲーム装置C10の外部の音を検出する。
図60Bおよび図60Dに示されるように、下側ハウジングC11の上側面には、LボタンC14GおよびRボタンC14Hが設けられている。LボタンC14Gは、下側ハウジングC11の上面の左端部に設けられ、RボタンC14Hは、下側ハウジングC11の上面の右端部に設けられる。後述のように、LボタンC14GおよびRボタンC14Hは、撮像部のシャッターボタン(撮影指示ボタン)として機能する。また、図60Aに示されるように、下側ハウジングC11の左側面には、音量ボタンC14Iが設けられる。音量ボタンC14Iは、ゲーム装置C10が備えるスピーカの音量を調整するために用いられる。
図60Aに示されるように、下側ハウジングC11の左側面には開閉可能なカバー部C11Cが設けられる。このカバー部C11Cの内側には、ゲーム装置C10とデータ保存用外部メモリC46とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリC46は、上記コネクタに着脱自在に装着される。データ保存用外部メモリC46は、例えば、ゲーム装置C10によって撮像された画像のデータを記憶(保存)するために用いられる。なお、上記コネクタおよびそのカバー部C11Cは、下側ハウジングC11の右側面に設けられてもよい。
図60Dに示されるように、下側ハウジングC11の上側面にはゲーム装置C10とゲームプログラムを記録した外部メモリC45を挿入するための挿入口C11Dが設けられ、その挿入口C11Dの内部には、外部メモリC45と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。外部メモリC45がゲーム装置C10に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタおよび挿入口C11Dは、下側ハウジングC11の他の側面(例えば、右側面等)に設けられてもよい。
図58に示されるように、下側ハウジングC11の下側面には、ゲーム装置C10の電源のON/OFF状況をユーザに通知する第1LEDC16Aが設けられる。また、図60Cに示されるように、下側ハウジングC11の右側面には、ゲーム装置C10の無線通信の確立状況をユーザに通知する第2LEDC16Bが設けられる。ゲーム装置C10は、他の機器との間で無線通信を行うことが可能であり、第2LEDC16Bは、他の機器との無線通信が確立している場合に点灯する。ゲーム装置C10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジングC11の右側面には、この無線通信の機能を有効/無効にする無線スイッチC19が設けられる(図60C参照)。
なお、図示は省略するが、下側ハウジングC11には、ゲーム装置C10の電源となる充電式電池が収納され、下側ハウジングC11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
上側ハウジングC21には、上側LCDC22、2つの外側撮像部C23(外側左撮像部C23aおよび外側右撮像部C23b)、内側撮像部C24、3D調整スイッチC25、および3DインジケータC26が設けられる。以下、これらの詳細について説明する。
図58に示すように、上側LCDC22は、上側ハウジングC21に収納される。上側LCDC22は、横長形状であり、長辺方向が上側ハウジングC21の長辺方向に一致するように配置される。上側LCDC22は、上側ハウジングC21の中央に配置される。上側LCDC22の画面の面積は、一例として下側LCDC12の画面の面積よりも大きく設定される。具体的には、上側LCDC22の画面は、下側LCDC12の画面よりも横長に設定される。すなわち、上側LCDC22の画面のアスペクト比における横幅の割合は、下側LCDC12の画面のアスペクト比における横幅の割合よりも大きく設定される。
上側LCDC22の画面は、上側ハウジングC21の内側面(主面)C21Bに設けられ、上側ハウジングC21の内側面に設けられた開口部から上側LCDC22の画面が露出する。また、図59に示すように、上側ハウジングC21の内側面は、透明なスクリーンカバーC27によって覆われている。スクリーンカバーC27は、上側LCDC22の画面を保護するとともに、上側LCDC22と上側ハウジングC21の内側面と一体的にさせ、これにより統一感を持たせている。上側LCDC22の画素数は、一例として640dot×200dot(横×縦)である。他の例として、上側LCDC22の画素数は、800dot×240dot(横×縦)である。なお、本実施形態では、上側LCDC22が液晶表示装置であるとしたが、例えばELを利用した表示装置などが利用されてもよい。また、上側LCDC22として、任意の解像度の表示装置を利用することができる。
上側LCDC22は、立体視可能な画像を表示することが可能な表示装置である。上側LCDC22は、実質的に同一の表示領域を用いて左目用画像と右目用画像とを表示することが可能である。具体的には、上側LCDC22は、左目用画像と右目用画像とが所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。一例として、上側LCDC22の画素数が800dot×240dotで構成される場合、横の800ピクセルを左目用画像と右目用画像とに交互にそれぞれ400ピクセル割り当てることによって立体視が可能となる。なお、上側LCDC22は、左目用画像と右目用画像とが交互に表示される方式の表示装置であってもよい。また、上側LCDC22は、裸眼立体視可能な表示装置である。この場合、上側LCDC22は、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCDC22は、パララックスバリア方式のものとする。上側LCDC22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCDC22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像をそれぞれ視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCDC22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである。)。このように、上側LCDC22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチC25によって行われる。
外側撮像部C23は、上側ハウジングC21の外側面(上側LCDC22が設けられた主面と反対側の背面)C21Dに設けられた2つの撮像部(外側左撮像部C23aおよび外側右撮像部C23b)の総称である。外側左撮像部C23aおよび外側右撮像部C23bの撮像方向は、いずれも外側面C21Dの外向きの法線方向である。また、外側左撮像部C23aおよび外側右撮像部C23bは、いずれも、上側LCDC22の表示面(内側面)の法線方向と180度反対の方向に設計される。すなわち、外側左撮像部C23aの撮像方向および外側右撮像部C23bの撮像方向は、平行である。外側左撮像部C23aと外側右撮像部C23bとは、ゲーム装置C10が実行するプログラムによって、ステレオカメラとして使用することが可能である。また、プログラムによっては、2つの外側撮像部(外側左撮像部C23aおよび外側右撮像部C23b)のいずれか一方を単独で用いて、外側撮像部C23を非ステレオカメラとして使用することも可能である。また、プログラムによっては、2つの外側撮像部(外側左撮像部C23aおよび外側右撮像部C23b)で撮像した画像を合成してまたは補完的に使用することにより撮像範囲を広げた撮像を行うことも可能である。本実施形態では、外側撮像部C23は、外側左撮像部C23aおよび外側右撮像部C23bの2つの撮像部で構成される。外側左撮像部C23aおよび外側右撮像部C23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図58の破線および図60Bの実線で示されるように、外側撮像部C23を構成する外側左撮像部C23aおよび外側右撮像部C23bは、上側LCDC22の画面の横方向と平行に並べられて配置される。すなわち、2つの外側左撮像部C23aおよび外側右撮像部C23bを結んだ直線が上側LCDC22の画面の横方向と平行になるように、外側左撮像部C23aおよび外側右撮像部C23bが配置される。図58の破線C23aおよびC23bは、上側ハウジングC21の内側面とは反対側の外側面に存在する外側左撮像部C23aおよび外側右撮像部C23bをそれぞれ表している。図58に示すように、ユーザが上側LCDC22の画面を正面から視認した場合に、外側左撮像部C23aは左側に外側右撮像部C23bは右側にそれぞれ位置する。外側撮像部C23をステレオカメラとして機能させるプログラムが実行されている場合、外側左撮像部C23aは、ユーザの左目で視認される左目用画像を撮像し、外側右撮像部C23bは、ユーザの右目で視認される右目用画像を撮像する。外側左撮像部C23aおよび外側右撮像部C23bの間隔は、人間の両目の間隔程度に設定され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、外側左撮像部C23aおよび外側右撮像部C23bの間隔は、この範囲に限らない。
なお、本実施例においては、外側左撮像部C23aおよび外側右撮像部C23bは、ハウジングに固定されており、撮像方向を変更することはできない。
外側左撮像部C23aおよび外側右撮像部C23bは、上側LCDC22(上側ハウジングC21)の左右方向に関して中央から対称となる位置にそれぞれ配置される。すなわち、外側左撮像部C23aおよび外側右撮像部C23bは、上側LCDC22を左右に2等分する線に対して対称の位置にそれぞれ配置される。また、外側左撮像部C23aおよび外側右撮像部C23bは、上側ハウジングC21を開いた状態において、上側ハウジングC21の上部であって、上側LCDC22の画面の上端よりも上方の位置の裏側に配置される。すなわち、外側左撮像部C23aおよび外側右撮像部C23bは、上側ハウジングC21の外側面であって、上側LCDC22を外側面に投影した場合、投影した上側LCDC22の画面の上端よりも上方に配置される。
このように、外側撮像部C23の2つの撮像部(外側左撮像部C23aおよび外側右撮像部C23b)が上側LCDC22の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側LCDC22を正視した場合に、外側撮像部C23それぞれの撮像方向をユーザの左右の目それぞれの視線方向と一致させることができる。また、外側撮像部C23は、上側LCDC22の画面の上端より上方の裏側の位置に配置されるため、外側撮像部C23と上側LCDC22とが上側ハウジングC21の内部で干渉することがない。したがって、外側撮像部C23を上側LCDC22の画面の裏側に配置する場合と比べて、上側ハウジングC21を薄く構成することが可能となる。
内側撮像部C24は、上側ハウジングC21の内側面(主面)C21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部C24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図58に示すように、内側撮像部C24は、上側ハウジングC21を開いた状態において、上側ハウジングC21の上部であって、上側LCDC22の画面の上端よりも上方に配置され、上側ハウジングC21の左右方向に関して中央の位置(上側ハウジングC21(上側LCDC22の画面)を左右に2等分する線の線上)に配置される。具体的には、図58および図60Bに示されるように、内側撮像部C24は、上側ハウジングC21の内側面であって、外側左撮像部C23aおよび外側右撮像部C23bの中間の裏側の位置に配置される。すなわち、上側ハウジングC21の外側面に設けられた外側左撮像部C23aおよび外側右撮像部C23bを上側ハウジングC21の内側面に投影した場合、当該投影した外側左撮像部C23aおよび外側右撮像部C23bの中間に、内側撮像部C24が設けられる。図60Bで示される破線C24は、上側ハウジングC21の内側面に存在する内側撮像部C24を表している。
このように、内側撮像部C24は、外側撮像部C23とは反対方向を撮像する。内側撮像部C24は、上側ハウジングC21の内側面であって、2つの外側撮像部C23の中間位置となる裏側に設けられる。これにより、ユーザが上側LCDC22を正視した際、内側撮像部C24でユーザの顔を正面から撮像することができる。また、外側左撮像部C23aおよび外側右撮像部C23bと内側撮像部C24とが上側ハウジングC21の内部で干渉することがないため、上側ハウジングC21を薄く構成することが可能となる。
3D調整スイッチC25は、スライドスイッチであり、上述のように上側LCDC22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチC25は、上側LCDC22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。図58〜図60Dに示されるように、3D調整スイッチC25は、上側ハウジングC21の内側面および右側面の端部に設けられ、ユーザが上側LCDC22を正視した場合に、当該3D調整スイッチC25を視認できる位置に設けられる。3D調整スイッチC25は、所定方向(例えば、上下方向)の任意の位置にスライド可能なスライダを有しており、当該スライダの位置に応じて上側LCDC22の表示モードが設定される。
例えば、3D調整スイッチC25のスライダが最下点位置に配置されている場合、上側LCDC22が平面表示モードに設定され、上側LCDC22の画面には平面画像が表示される。なお、上側LCDC22を立体表示モードのままとして、左目用画像と右目用画像とを同一の画像とすることにより平面表示してもよい。一方、上記最下点位置より上側にスライダが配置されている場合、上側LCDC22は立体表示モードに設定される。この場合、上側LCDC22の画面には立体視可能な画像が表示される。ここで、スライダが上記最下点位置より上側に配置されている場合、スライダの位置に応じて、立体画像の見え方が調整される。具体的には、スライダの位置に応じて、右目用画像および左目用画像における横方向の位置のずれ量が調整される。
3DインジケータC26は、上側LCDC22が立体表示モードか否かを示す。例えば、3DインジケータC26は、LEDであり、上側LCDC22の立体表示モードが有効の場合に点灯する。図58に示されるように、3DインジケータC26は、上側ハウジングC21の内側面に設けられ、上側LCDC22の画面近傍に設けられる。このため、ユーザが上側LCDC22の画面を正視した場合、ユーザは3DインジケータC26を視認しやすい。したがって、ユーザは、上側LCDC22の画面を視認している状態でも、上側LCDC22の表示モードを容易に認識することができる。
また、上側ハウジングC21の内側面には、スピーカ孔C21Eが設けられる。後述するスピーカC44からの音声がこのスピーカ孔C21Eから出力される。
次に、図61を参照して、ゲーム装置C10の内部構成を説明する。なお、図61は、ゲーム装置C10の内部構成の一例を示すブロック図である。
図61において、ゲーム装置C10は、上述した各構成部に加えて、情報処理部C31、メインメモリC32、外部メモリインターフェイス(外部メモリI/F)C33、データ保存用外部メモリI/FC34、データ保存用内部メモリC35、無線通信モジュールC36、ローカル通信モジュールC37、リアルタイムクロック(RTC)C38、加速度センサC39、角速度センサC40、電源回路C41、およびインターフェイス回路(I/F回路)C42等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジングC11(または上側ハウジングC21でもよい)内に収納される。
情報処理部C31は、所定のプログラムを実行するためのCPU(Central Processing Unit)C311、画像処理を行うGPU(Graphics Processing Unit)C312等を含む情報処理手段である。本実施形態では、所定のプログラムがゲーム装置C10内のメモリ(例えば外部メモリI/FC33に接続された外部メモリC45やデータ保存用内部メモリC35)に記憶されている。情報処理部C31のCPUC311は、当該所定のプログラムを実行することによって、後述する画像処理やゲーム処理を実行する。なお、情報処理部C31のCPUC311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部C31は、VRAM(Video RAM)C313を含む。情報処理部C31のGPUC312は、情報処理部C31のCPUC311からの命令に応じて画像を生成し、VRAMC313に描画する。そして、情報処理部C31のGPUC312は、VRAMC313に描画された画像を上側LCDC22および/または下側LCDC12に出力し、上側LCDC22および/または下側LCDC12に当該画像が表示される。
情報処理部C31には、メインメモリC32、外部メモリI/FC33、データ保存用外部メモリI/FC34、およびデータ保存用内部メモリC35が接続される。外部メモリI/FC33は、外部メモリC45を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/FC34は、データ保存用外部メモリC46を着脱自在に接続するためのインターフェイスである。
メインメモリC32は、情報処理部C31(CPUC311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリC32は、画像処理やゲーム処理で用いられる各種データを一時的に記憶したり、外部(外部メモリC45や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリC32として例えばPSRAM(Pseudo−SRAM)を用いる。
外部メモリC45は、情報処理部C31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリC45は、例えば読み取り専用の半導体メモリで構成される。外部メモリC45が外部メモリI/FC33に接続されると、情報処理部C31は外部メモリC45に記憶されたプログラムを読み込むことができる。情報処理部C31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリC46は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリC46には、外側撮像部C23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリC46がデータ保存用外部メモリI/FC34に接続されると、情報処理部C31はデータ保存用外部メモリC46に記憶された画像を読み込み、上側LCDC22および/または下側LCDC12に当該画像を表示することができる。
データ保存用内部メモリC35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリC35には、無線通信モジュールC36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
無線通信モジュールC36は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュールC37は、所定の通信方式(例えば赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュールC36およびローカル通信モジュールC37は、情報処理部C31に接続される。情報処理部C31は、無線通信モジュールC36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュールC37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
情報処理部C31には、加速度センサC39が接続される。加速度センサC39は、3軸(本実施形態では、xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサC39は、例えば下側ハウジングC11の内部に設けられる。加速度センサC39は、図58に示すように、下側ハウジングC11の長辺方向をx軸、下側ハウジングC11の短辺方向をy軸、下側ハウジングC11の内側面(主面)に対して垂直な方向をz軸として、ゲーム装置C10の各軸方向へ生じる直線加速度の大きさをそれぞれ検出する。なお、加速度センサC39は、例えば静電容量式の加速度センサとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサC39は、1軸または2軸方向を検出する加速度センサであってもよい。情報処理部C31は、加速度センサC39が検出した加速度を示すデータ(加速度データ)を受け取って、ゲーム装置C10の姿勢や動きを算出する。
情報処理部C31には、角速度センサC40が接続される。角速度センサC40は、ゲーム装置C10の3軸(本実施形態では、xyz軸)周りに生じる角速度をそれぞれ検出し、検出した角速度を示すデータ(角速度データ)を情報処理部C31へ出力する。角速度センサC40は、例えば下側ハウジングC11の内部に設けられる。情報処理部C31は、角速度センサC40から出力された角速度データを受け取って、ゲーム装置C10の姿勢や動きを算出する。
情報処理部C31には、RTCC38および電源回路C41が接続される。RTCC38は、時間をカウントして情報処理部C31に出力する。情報処理部C31は、RTCC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路C41は、ゲーム装置C10が有する電源(下側ハウジングC11に収納される上記充電式電池)からの電力を制御し、ゲーム装置C10の各部品に電力を供給する。
情報処理部C31には、I/F回路C42が接続される。I/F回路C42には、マイクC43、スピーカC44、およびタッチパネルC13が接続される。具体的には、I/F回路C42には、図示しないアンプを介してスピーカC44が接続される。マイクC43は、ユーザの音声を検知して音声信号をI/F回路C42に出力する。アンプは、I/F回路C42からの音声信号を増幅し、音声をスピーカC44から出力させる。I/F回路C42は、マイクC43およびスピーカC44(アンプ)の制御を行う音声制御回路と、タッチパネルC13の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネルC13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部C31に出力する。タッチ位置データは、タッチパネルC13の入力面において入力が行われた位置(タッチ位置)の座標を示す。なお、タッチパネル制御回路は、タッチパネルC13からの信号の読み込み、およびタッチ位置データの生成を所定時間に1回の割合で行う。情報処理部C31は、タッチ位置データを取得することにより、タッチパネルC13に対して入力が行われたタッチ位置を知ることができる。
操作ボタンC14は、上記各操作ボタンC14A〜C14Lからなり、情報処理部C31に接続される。操作ボタンC14から情報処理部C31へは、各操作ボタンC14A〜C14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部C31は、操作ボタンC14から操作データを取得することによって、操作ボタンC14に対する入力に応じた処理を実行する。
下側LCDC12および上側LCDC22は、情報処理部C31に接続される。下側LCDC12および上側LCDC22は、情報処理部C31(GPUC312)の指示にしたがって画像を表示する。本実施形態では、情報処理部C31は、例えば入力操作用の画像を下側LCDC12に表示させ、外側撮像部C23および内側撮像部C24のいずれかから取得した画像を上側LCDC22に表示させる。すなわち、情報処理部C31は、上側LCDC22に外側撮像部C23で撮像した右目用画像と左目用画像とを用いた立体画像(立体視可能な画像)を表示させたり、内側撮像部C24で撮像した平面画像を上側LCDC22に表示させたり、上側LCDC22に外側撮像部C23で撮像した右目用画像および左目用画像の一方を用いた平面画像を表示させたりする。
具体的には、情報処理部C31は、上側LCDC22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCDC22の視差バリアがONになっている場合、情報処理部C31のVRAMC313に格納された(外側撮像部C23で撮像された)右目用画像と左目用画像とが、上側LCDC22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAMC313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCDC22の画面に表示される。そして、上側LCDC22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCDC22の画面には立体視可能な画像が表示される。
外側撮像部C23および内側撮像部C24は、情報処理部C31に接続される。外側撮像部C23および内側撮像部C24は、情報処理部C31の指示にしたがって画像を撮像し、撮像した画像データを情報処理部C31に出力する。本実施形態では、情報処理部C31は、外側撮像部C23および内側撮像部C24のいずれか一方に対して撮像指示を行い、撮像指示を受けた撮像部が画像を撮像して画像データを情報処理部C31に送る。具体的には、ユーザによるタッチパネルC13や操作ボタンC14を用いた操作によって使用する撮像部が選択される。そして、撮像部が選択されたことを情報処理部C31(CPUC311)が検知し、情報処理部C31が外側撮像部C23または内側撮像部C24に対して撮像指示を行う。
3D調整スイッチC25は、情報処理部C31に接続される。3D調整スイッチC25は、スライダの位置に応じた電気信号を情報処理部C31に送信する。
3DインジケータC26は、情報処理部C31に接続される。情報処理部C31は、3DインジケータC26の点灯を制御する。例えば、情報処理部C31は、上側LCDC22が立体表示モードである場合、3DインジケータC26を点灯させる。
次に、図62〜図68を参照して、ゲーム装置C10の使用状態および表示内容の一例を示す。なお、図62は、ユーザがゲーム装置C10を把持して操作する様子の一例を示す図である。図63は、外側撮像部C23の撮像対象となるマーカMKの一例を示す図である。図64は、ユーザがゲーム装置C10に向かって音声を入力している様子の一例を概説する図解図である。図65〜図68は、上側LCDC22に表示される表示形態例を示す図である。
図62に示されるように、ユーザは、下側LCDC12および上側LCDC22がユーザの方向を向く状態で、両手の掌と中指、薬指および小指とで下側ハウジングC11の側面および外側面(内側面の反対側の面)を把持する。このように把持することで、ユーザは、下側ハウジングC11を把持したまま、各操作ボタンC14A〜C14EおよびアナログスティックC15に対する操作を親指で行い、LボタンC14GおよびRボタンC14Hに対する操作を人差し指で行うことができる。そして、図62に示した一例では、外側左撮像部C23aおよび外側右撮像部C23bによってゲーム装置C10の背面側の実世界を撮像した実世界画像が、上側LCDC22に立体視表示されている。
本実施形態では、画像処理プログラムに基づいて、外側撮像部C23(外側左撮像部C23a、外側右撮像部C23b)によって現在撮像されている実世界の画像と、3次元の仮想空間に存在する仮想オブジェクトの画像とを合成した合成画像が、上側LCDC22の画面に立体視可能に表示される。具体的には、外側撮像部C23で撮影された2つの撮影画像は、所定の視差を有するように上側LCDC22に供給されて立体視表示される。上側LCDC22の画面上では、外側撮像部C23に相対的に近い被写体が相対的に手前に位置するようにユーザに視認され、外側撮像部C23から相対的に遠い被写体が相対的に遠くに位置するようにユーザに視認される。
図62は、外側撮像部C23によってマーカMK(撮像対象となる実オブジェクト)が撮像されているときに、上側LCDC22の画面に表示される仮想オブジェクトである仮想キャラクタC(立体画像)の一例を示している。図62に示すように、マーカMKは、一例として矢印を含む正方形が描かれており、CPUC311は、外側撮像部C23から取得される撮像画像に対して例えばパターンマッチング等の画像処理を行うことによって、当該撮像画像にマーカMKが含まれているか否かを判定することができる。外側撮像部C23によってマーカMKが撮像されているときには、上側LCDC22には、実世界画像としてマーカMKが立体視可能にマーカ画像MKiとして表示されるとともに、実世界画像に含まれるマーカ画像MKiの表示位置に仮想キャラクタC(例えば、犬を模した仮想オブジェクト)が立体視可能に合成表示される。なお、図62では、理解を容易にするために、上側LCDC22の画面から仮想キャラクタCをはみ出して図示しているが、実際には仮想キャラクタCは画面内に表示される。後述の図64についても同様である。また、図62および図64等においては、表示対象が飛び出ているように視認される様子を図示しているが、立体視可能に表示する、と言った場合、必ずしも飛び出し方向に視認される場合のみでなく、画面より奥側に、奥行きを持って表示される場合も含む。
ここで、図63に示すように、マーカMKには、向き(前方向、右方向、上方向)が定義されており、マーカMKの配置方向に基づいた姿勢で仮想キャラクタCを配置することができる。例えば、仮想キャラクタCの前方向がマーカ画像MKiの前方向と一致するように、マーカ画像MKiの上に仮想キャラクタCを配置することが可能である。なお、以下の説明では、マーカ画像MKiの前方向を「マーカの方向」と記載することがある。
図64に示すように、ゲーム装置C10に表示された仮想キャラクタCに動作指示する場合、ユーザは、音声によって当該動作指示することが可能となっている。なお、ゲーム装置C10は、ユーザがゲーム装置C10に入力する音声は、話し言葉として発する音(言語)の他に、口笛の音、拍手の音、息の音等が考えられるが、本明細書で用いる「音声」は、これらの音を総称しているものとする。
ゲーム装置C10にユーザの音声を判別させるためには、プレイヤは、マイクC43(マイクロフォン用孔C18)に向かって自身の音声を入力する。一方、ゲーム装置C10は、I/F回路C42を介して、マイクC43から入力された音声信号を示す音声データを取得し、当該音声データを解析することによってマイクC43から入力された音声を判別する。そして、ゲーム装置C10は、マイクC43から入力された音声の判別結果に応じた処理を行い、当該判別結果に応じて仮想キャラクタCを動作させる。一例として、ゲーム装置C10は、マイクC43から入力された音声が、仮想キャラクタCを立ち上がらせる動作を指示する言語(例えば、「チンチン」)であると判別された場合、判別された音声に応じて仮想キャラクタCに立ち上がらせる動作を行わせて上側LCDC22に表示する(図64の状態)。
次に、図65〜図68を参照して、外側撮像部C23によってマーカMKが撮像されているときに上側LCDC22の画面に表示される仮想キャラクタCの他の一例について説明する。
図65において、仮想キャラクタCは、「通常状態」で表示されている。ここで、「通常状態」は、ユーザからの動作指示に基づいた動作を行っていない場合に仮想キャラクタCが行動している状態を示している。例えば、「通常状態」において、仮想キャラクタCは、4つ足を地面(マーカ画像MKi上またはマーカ画像MKiと同一平面上)につけている状態で静止するまたは4つ足で自由に動いて行動する。図65に示した一例では、仮想キャラクタCが4つ足を地面につけて仮想キャラクタCの前方向がマーカ画像MKiの前方向と一致する状態を「通常状態」として表示されている。
図66では、仮想キャラクタCを座らせる動作を指示する言語(例えば、「おすわり」)をゲーム装置C10に入力した場合の動作を示している。図66に示すように、ゲーム装置C10に仮想キャラクタCを座らせる動作を指示する音声が入力された場合、仮想キャラクタCは、地面(マーカ画像MKi上またはマーカ画像MKiと同一平面上)に座る動作を開始し、仮想キャラクタCの前方向をマーカ画像MKiの前方向と一致させて地面上に座る。このように、仮想キャラクタCに芸の名称を示す言語(例えば、「おすわり」や「ふせ」)をゲーム装置C10に入力した場合、仮想キャラクタCの前方向をマーカ画像MKiの前方向と一致させて仮想キャラクタCが当該言語に該当する芸をすることがある。また、他の例として、仮想キャラクタCの名前を示す言語をゲーム装置C10に入力した場合、仮想キャラクタCの前方向をマーカ画像MKiの前方向と一致させて仮想キャラクタCが吠えることがある。
例えば、図67に示すように、ユーザがゲーム装置C10を移動させることによって、撮像されるマーカMKの位置および向きが変化する、すなわち上側LCDC22の画面に表示されるマーカ画像MKiの位置および向きが変化する場合を考える。この場合、撮像画像の変化に追従するように、仮想キャラクタCの位置および向きが変化する。例えば、図66のように仮想キャラクタCが座っている状態に対してマーカの方向が変化した場合、当該変化に追従するように仮想キャラクタCの向きが変化して座っている状態を継続している(図67の状態)。したがって、ユーザには仮想キャラクタCがあたかも実世界に本当に存在しているかのように見える。
一方、本実施形態では、仮想キャラクタCに与えられた音声による動作指示に応じて、マーカの方向ではなく、画像を生成しているカメラ(すなわち、仮想キャラクタCが配置された仮想世界画像を生成する仮想カメラ)の位置に基づいた姿勢で仮想キャラクタCが動作することもできる。例えば、図68では、仮想キャラクタCを呼び寄せる動作を指示する音声(例えば、口笛の音)をゲーム装置C10に入力した場合の動作を示している。図68に示すように、ゲーム装置C10に仮想キャラクタCを呼び寄せる動作を指示する音声が入力された場合、仮想キャラクタCは、4つ足状態になって仮想キャラクタCの前方向が仮想カメラへの方向と一致するように動作する。すなわち、上記動作では、仮想キャラクタCが表示される向きがマーカ画像MKiの方向ではなく、仮想世界画像を生成する仮想カメラの位置に基づいて決定される。なお、上述した説明では、仮想キャラクタCを呼び寄せる動作を指示する音声の一例として口笛の音を用いたが、他の音声であってもかまわない。例えば、仮想キャラクタCを呼び寄せる動作を指示する音声として拍手の音を設定し、拍手の音が入力された場合に4つ足状態になって仮想キャラクタCの前方向が仮想カメラへの方向と一致するように仮想キャラクタCが動作してもかまわない。この場合、口笛の音が入力された場合に仮想キャラクタCの前方向が仮想カメラへの方向と一致するように仮想キャラクタCが遠吠えをする動作をしてもかまわない。
また、本実施形態では、仮想キャラクタCに音声による動作指示を与えた場合、当該動作指示を与えた時点において仮想キャラクタCが撮像(表示)されている方向によって、仮想キャラクタCに与える動作指示が変化することがある。例えば、息の音をゲーム装置C10に入力した場合、当該入力が行われた時点で仮想キャラクタCが上側LCDC22の表示範囲内に存在し、かつ、仮想キャラクタCの前方向が仮想カメラの方向付近を向いていれば、仮想キャラクタCが息を吹きかけられたことによって嫌がるように動作する。その一方で、息の音をゲーム装置C10に入力した時点で仮想キャラクタCの前方向が仮想カメラの方向付近を向いていなければ、仮想キャラクタCが上側LCDC22の表示範囲内に存在していても当該入力に応じた動作をすることなく、何の反応もしない。例えば、仮想キャラクタCが息を吹きかけられたことによって嫌がるように動作は、「通常状態」で仮想キャラクタCが表示されている場合に生じる動作である。この場合、仮想キャラクタCの前方向がマーカ画像MKiの前方向と一致するような姿勢で表示されているため、当該動作指示は、マーカの方向と仮想カメラの位置との関係が所定の位置関係になっている場合に成立するものであると考えることもできる。
このように、本実施形態においては、実カメラにより撮像されて上側LCDC22に表示された実世界画像内に、仮想オブジェクトが配置されて付加表示され、音声認識された音声に基づいた指示に応じて当該仮想オブジェクトが動作する。したがって、AR(拡張現実:Augmented Reality)を実現する上で、音声を現実空間とコンピュータとの間のインターフェイスとして採用することで、入力の簡便性が向上し、入力内容もバリエーションに富んだものになるため、現実空間とコンピュータとの間のインタラクティブ性は高まって興趣性および操作性が向上する。また、操作ボタン、キーボード、タッチパネル、マウス、ジョイスティック、およびトラックボード等の従来の入力装置を用いて操作する場合と比較して、音声入力による操作は、臨場感や操作の直感性を高めることができる。なお、上述した例では、実世界画像内に付加表示される仮想オブジェクトの一例として仮想キャラクタCを用いたが、実世界画像内に付加表示されるものは他の仮想物体や文字であってもよい。また、上述した例では、音声認識された音声に基づいた指示に応じて、付加表示された仮想キャラクタCが動作するが、音声認識された音声に基づいた指示に応じて、他の処理が行われてもかまわない。例えば、音声認識された音声に基づいた指示に応じて、実世界画像内に付加表示される仮想オブジェクトや文字等の改変をする処理、表示態様を変化させる処理、選択をする処理、出現/消去をする処理等、様々な処理を行うことが考えられる。
次に、図69〜図74を参照して、ゲーム装置C10で実行される画像処理プログラムによる具体的な処理動作について説明する。なお、図69は、画像処理プログラムを実行することに応じて、メインメモリC32に記憶される各種データの一例を示す図である。図70は、図69の音声動作対応テーブルデータDiの一例を示す図である。図71は、当該画像処理プログラムを実行することによってゲーム装置C10が画像処理する動作の一例を示すフローチャートである。図72は、図71のステップC54で行われる音声認識処理の詳細な動作の一例を示すサブルーチンである。図73は、図71のステップC55で行われる画像合成処理の詳細な前半の動作の一例を示すサブルーチンである。図74は、図71のステップC55で行われる画像合成処理の詳細な後半の動作の一例を示すサブルーチンである。なお、これらの処理を実行するためのプログラムは、ゲーム装置C10に内蔵されるメモリ(例えば、データ保存用内部メモリC35)や外部メモリC45またはデータ保存用外部メモリC46に含まれており、ゲーム装置C10の電源がオンになったときに、内蔵メモリから、または外部メモリI/FC33やデータ保存用外部メモリI/FC34を介して外部メモリC45またはデータ保存用外部メモリC46からメインメモリC32に読み出されて、CPUC311によって実行される。
図69において、メインメモリC32には、内蔵メモリ、外部メモリC45、またはデータ保存用外部メモリC46から読み出されたプログラムや画像処理において生成される一時的なデータが記憶される。図69において、メインメモリC32のデータ記憶領域には、左カメラ画像データDa、右カメラ画像データDb、音声波形データDc、操作入力データDd、左カメラ画像認識結果データDe、右カメラ画像認識結果データDf、スペクトル情報データDg、メルフィルタ出力情報データDh、音声動作対応テーブルデータDi、音声登録データDj、拍手フラグデータDk、口笛フラグデータDl、息フラグデータDm、登録音声フラグデータDn、通常状態フラグデータDo、左仮想世界画像データDp、右仮想世界画像データDq、および仮想オブジェクトデータDr等が格納される。また、メインメモリC32のプログラム記憶領域には、画像処理プログラムを構成する各種プログラム群Paが記憶される。
左カメラ画像データDaは、外側左撮像部C23aによって撮像された最新の左目用のカメラ画像を示すデータである。右カメラ画像データDbは、外側右撮像部C23bによって撮像された最新の右目用のカメラ画像を示すデータである。なお、外側左撮像部C23aおよび外側右撮像部C23bが撮像し、撮像されたカメラ画像を用いて左カメラ画像データDaおよび右カメラ画像データDbをそれぞれ更新する周期は、ゲーム装置C10が処理する時間単位(例えば、1/60秒)と同じでもいいし、当該時間単位より短い時間でもかまわない。ゲーム装置C10が処理する周期より左カメラ画像データDaおよび右カメラ画像データDbをそれぞれ更新する周期が短い場合、後述する処理とは独立して適宜左カメラ画像データDaおよび右カメラ画像データDbをそれぞれ更新してもかまわない。この場合、後述する撮像画像を取得するステップにおいて、左カメラ画像データDaおよび右カメラ画像データDbがそれぞれ示す最新のカメラ画像を常に用いて処理すればよい。
音声波形データDcは、マイクC43に入力された音声波形に対応する音声データである。例えば、音声波形データDcは、マイクC43に対するサンプリングレート毎(例えば、ゲーム処理する時間単位(1フレーム;例えば、1/60秒)につき128サンプル)に取得された音声データであり、ゲーム装置C10がゲーム処理する時間単位毎に利用される。なお、本実施形態においては、後述する音声認識処理に必要なフレーム分の履歴が音声波形データDcの音声データとして格納されるため、当該フレーム分の音声データが音声波形データDcとして格納されるように、FIFO方式で音声波形データDcの音声データを更新するようにしてもよい。
操作入力データDdは、ユーザがゲーム装置C10を操作した操作情報を示すデータである。例えば、操作入力データDdは、ユーザがゲーム装置C10の操作ボタンC14やアナログスティックC15等の操作子を操作したことを示すデータを含んでいる。操作ボタンC14やアナログスティックC15からの操作データは、ゲーム装置C10が処理する時間単位(例えば、1/60秒)毎に取得され、当該取得に応じて操作入力データDdに格納されて更新される。なお、後述する処理フローでは、操作入力データDdが処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、操作ボタンC14やアナログスティックC15等の操作子をユーザが操作したことを検出する周期毎に操作入力データDdを更新し、当該更新された操作入力データDdを処理周期毎に利用する態様でもかまわない。この場合、操作入力データDdを更新する周期と、処理周期とが異なることになる。
左カメラ画像認識結果データDeは、外側左撮像部C23aによって撮像された左目用のカメラ画像を用いて算出された、外側左撮像部C23aとマーカMKとの位置関係に関するデータである。第1の例として、上記位置関係に関するデータは、外側左撮像部C23aとマーカMKとの相対的な位置関係を示すデータである。一例として、上記位置関係に関するデータは、マーカMKの位置を基準として実世界における外側左撮像部C23aの位置および/または姿勢を示すデータである。他の例として、上記位置関係に関するデータは、外側左撮像部C23aの位置および撮像方向を基準として実世界におけるマーカMKの位置および/または姿勢を示すデータである。第2の例として、上記位置関係に関するデータは、外側左撮像部C23aによって撮像されたカメラ画像におけるマーカ画像MKiの位置および/または姿勢を認識することにより算出される行列を示すデータである。例えば、上記行列は、マーカMKの位置および姿勢を基準として設定される座標系(マーカ座標系)で表された座標を、外側左撮像部C23aの位置および姿勢を基準として表された座標系(外側左撮像部座標系)に変換する座標変換行列である。つまり、上記行列は、マーカMKの位置および姿勢に対する外側左撮像部C23aの相対的な位置および姿勢の情報を含む行列であり、より具体的には、マーカ座標系における外側左撮像部C23aの位置および姿勢の情報を含む行列である。
右カメラ画像認識結果データDfは、外側右撮像部C23bによって撮像された右目用のカメラ画像を用いて算出された、外側右撮像部C23bとマーカMKとの位置関係に関するデータである。第1の例として、上記位置関係に関するデータは、外側右撮像部C23bとマーカMKとの相対的な位置関係を示すデータである。一例として、上記位置関係に関するデータは、マーカMKの位置を基準として実世界における外側右撮像部C23bの位置および/または姿勢を示すデータである。他の例として、上記位置関係に関するデータは、外側右撮像部C23bの位置を基準として実世界におけるマーカMKの位置および/または姿勢を示すデータである。第2の例として、上記位置関係に関するデータは、外側右撮像部C23bによって撮像されたカメラ画像におけるマーカ画像MKiの位置および/または姿勢を認識することにより算出される行列を示すデータである。例えば、上記行列は、上記マーカ座標系で表された座標を、外側右撮像部C23bの位置および姿勢を基準として表された座標系(外側右撮像部座標系)に変換する座標変換行列である。つまり、上記行列は、マーカMKの位置および姿勢に対する外側右撮像部C23bの相対的な位置および姿勢の情報を含む行列であり、より具体的には、マーカ座標系における外側右撮像部C23bの位置および姿勢の情報を含む行列である。
なお、本明細書において、マーカ座標系から外側左撮像部座標系または外側右撮像部座標系への変換行列のことを「マーカ・カメラ変換行列」と呼ぶ。つまり、上述した行列は、それぞれ「マーカ・カメラ変換行列」である。
スペクトル情報データDgは、マイクC43に入力された音声波形を示す音声波形情報を短時間FFT(Fast Fourier Transform:高速フーリエ変換)分析することによって得られるスペクトルを示すデータであり、後述する音声認識処理に必要なフレーム分のデータが格納される。
メルフィルタ出力情報データDhは、FFT分析によって得られたスペクトルをメルフィルタバンク分析することによって得られる帯域フィルタバンクの出力を示すデータであり、後述する音声認識処理に必要なフレーム分のデータが格納される。
音声動作対応テーブルデータDiは、音声認識結果に応じてそれぞれ動作指示される内容が予め記述されたテーブルを示すデータである。図70に示すように、音声動作対応テーブルデータDiは、音声認識結果に応じて、キャラクタの動作内容および当該動作の基準がそれぞれ記述されている。例えば、予めまたは登録操作によって登録されている登録音声1(例えば、「おすわり」)に音声認識結果が照合された場合、当該音声入力に応じてキャラクタがおすわり動作をマーカ基準で行うことが記述されている。また、音声認識結果において拍手が入力されたと判定された場合、当該音声入力に応じてキャラクタが4つ足でカメラの方に向く動作をカメラ基準で行うことが記述されている。また、音声認識結果において口笛が入力されたと判定された場合、当該音声入力に応じてキャラクタがカメラの方に向いて遠吠えをする動作をカメラ基準で行うことが記述されている。ここで、音声動作対応テーブルデータDiに記述されている登録音声は、後述するようにゲーム装置C10から音声入力が促されることに応じて、ユーザが前もって入力した音声言語を用いてそれぞれ登録されてもいいし、当該画像処理プログラムがインストールされる時点で予め登録されたものでもよい。また、音声動作対応テーブルデータDiに記述されている動作基準は、上記マーカの方向を基準としたキャラクタの動作が「マーカ基準」と記述されており、仮想カメラの位置や方向を基準としたキャラクタの動作が「カメラ基準」と記述されている。
音声登録データDjは、ゲーム装置C10から音声入力が促されることに応じて、ユーザが前もって入力して登録した音声(言語)を示すデータである。例えば、ユーザが音声を登録する際には、キャラクタに与える動作指示に対応させた音声入力が促される。そして、入力された音声を示すデータが、当該音声入力を促した動作指示に対応させて(例えば、音声動作対応テーブルデータDiに記述されている登録音声番号にそれぞれ対応させて)音声登録データDjに登録される。なお、音声登録データDjに登録される音声は、当該画像処理プログラムがインストールされる時点で予め登録されたものでもよい。
拍手フラグデータDkは、音声認識処理においてマイクC43に入力された音声が拍手であると判定された場合にオンに設定される拍手フラグを示すデータである。口笛フラグデータDlは、音声認識処理においてマイクC43に入力された音声が口笛であると判定された場合にオンに設定される口笛フラグを示すデータである。息フラグデータDmは、音声認識処理においてマイクC43に入力された音声が息であると判定された場合にオンに設定される息フラグを示すデータである。登録音声フラグデータDnは、音声認識処理においてマイクC43に入力された音声が登録音声に照合されたと判定された場合にオンに設定される登録音声フラグを示すデータである。通常状態フラグデータDoは、仮想キャラクタCが「通常状態」である場合にオンに設定される通常状態フラグを示すデータである。
左仮想世界画像データDpは、仮想オブジェクトが配置された仮想空間を、左仮想カメラから見た画像(左目用の仮想世界画像)を示すデータである。例えば、左仮想世界画像データDpは、左仮想カメラから見た仮想オブジェクトが配置された仮想空間を透視投影することによって得られる左目用の仮想世界画像を示すデータである。右仮想世界画像データDqは、仮想オブジェクトが配置された仮想空間を、右仮想カメラから見た画像(右目用の仮想世界画像)を示すデータである。例えば、右仮想世界画像データDqは、右仮想カメラから見た仮想オブジェクトが配置された仮想空間を透視投影することによって得られる右目用の仮想世界画像を示すデータである。
仮想オブジェクトデータDrは、前述の仮想オブジェクトに関連する情報であって、仮想オブジェクトの形状を表す3Dモデルデータ(ポリゴンデータ)や、仮想オブジェクトの模様を表すテクスチャデータや、仮想空間における仮想オブジェクトの位置や姿勢の情報などを含む。
次に、図71を参照して、情報処理部C31の動作について説明する。まず、ゲーム装置C10の電源(電源ボタンC14F)がONされると、CPUC311によってブートプログラム(図示せず)が実行され、これにより内蔵メモリまたは外部メモリC45やデータ保存用外部メモリC46に格納されているプログラムがメインメモリC32にロードされる。そして、当該ロードされたプログラムが情報処理部C31(CPUC311)で実行されることによって、図71に示すステップ(図71〜図74では「S」と略称する)が実行される。なお、図71〜図74においては、本発明に直接関連しない処理についての記載を省略する。また、本実施形態では、図71〜図74のフローチャートの全てのステップの処理をCPUC311が実行するものとして説明するが、図71〜図74のフローチャートの一部のステップの処理を、CPUC311以外のプロセッサや専用回路が実行するようにしてもよい。
図71において、CPUC311は、画像処理における初期設定を行い(ステップC51)、次のステップに処理を進める。例えば、CPUC311は、上記ステップC51において、当該画像処理で用いられる各パラメータを初期化する。なお、CPUC311は、音声認識フラグ(拍手フラグ、口笛フラグ、息フラグ、登録音声フラグ)については全てオフに初期化し、通常状態フラグについてはオンに初期化する。
次に、CPUC311は、外側撮像部C23から出力される両方のカメラ画像(すなわち左目用のカメラ画像および右目用のカメラ画像)を示す撮像画像データ、マイクC43に入力された音声波形に対応する音声データ、およびユーザが操作ボタンC14やアナログスティックC15等の操作子を操作した操作情報を示す操作入力データを取得し(ステップC52)、次のステップに処理を進める。例えば、CPUC311は、取得した左目用のカメラ画像を示す撮像画像データを用いて、左カメラ画像データDaを更新する。CPUC311は、取得した右目用のカメラ画像を示す撮像画像データを用いて、右カメラ画像データDbを更新する。CPUC311は、取得した音声データを用いて、音声波形データDcを更新する。そして、CPUC311は、取得した操作入力データを用いて、操作入力データDdを更新する。
次に、CPUC311は、左右両方のカメラ画像を示す撮像画像データをそれぞれ用いて撮影画像認識処理を行い(ステップC53)、次のステップに処理を進める。以下、上記ステップC53で行う撮影画像認識処理の一例について説明する。
上述したように、上側ハウジングC21において、外側左撮像部C23aと外側右撮像部C23bは、一定の間隔だけ離れている。したがって、外側左撮像部C23aと外側右撮像部C23bによって同時にマーカMKを撮像した場合、外側左撮像部C23aによって撮像された左カメラ画像におけるマーカMKの位置および姿勢と、外側右撮像部C23bによって撮像された右カメラ画像におけるマーカMKの位置および姿勢との間には、視差によるズレが生じる。そして、上記撮影画像認識処理においては、外側左撮像部C23aおよび外側右撮像部C23bとマーカMKとの位置関係が算出される。
例えば、CPUC311は、パターンマッチング手法等によって左右両方のカメラ画像にマーカMKが含まれているか否かを判断し、当該カメラ画像にマーカMK(マーカ画像MKi)が含まれている場合には、当該カメラ画像におけるマーカMKの位置および姿勢に基づいて、外側左撮像部C23aとマーカMKとの位置関係および外側右撮像部C23bとマーカMKとの位置関係を算出する。一例として、CPUC311は、左目用のカメラ画像におけるマーカ画像MKiの位置および/または姿勢を認識することによって、左目用のマーカ・カメラ変換行列を算出して、左カメラ画像認識結果データDeを更新する。また、CPUC311は、右目用のカメラ画像におけるマーカ画像MKiの位置および/または姿勢を認識することによって、右目用のマーカ・カメラ変換行列を算出して、右カメラ画像認識結果データDfを更新する。
なお、左目用のマーカ・カメラ変換行列は、左カメラ画像におけるマーカMKの位置および姿勢に基づいて計算される外側左撮像部C23aの位置および姿勢を反映した行列である。より正確には、マーカ座標系(実世界におけるマーカMKの位置を原点とし、マーカMKの縦方向(Z軸方向)、横方向(X軸方向)、法線方向(Y軸方向)の各方向を各軸とする座標系)で表された座標を、左カメラ画像におけるマーカ画像MKiの位置および姿勢に基づいて計算された外側左撮像部C23aの位置および姿勢を基準とした外側左撮像部座標系で表される座標へと変換するための座標変換行列である。
また、右目用のマーカ・カメラ変換行列は、右カメラ画像におけるマーカMKの位置および姿勢に基づいて計算される外側右撮像部C23bの位置および姿勢を反映した行列である。より正確には、マーカ座標系で表された座標を、右カメラ画像におけるマーカ画像MKiの位置および姿勢に基づいて計算された外側右撮像部C23bの位置および姿勢を基準とした外側右撮像部座標系で表される座標へと変換するための座標変換行列である。
ここで、ARでは、マーカ座標系を外側左撮像部座標系に変換する左目用のマーカ・カメラ変換行列を左仮想カメラのビュー行列に指定し、マーカ座標系を外側右撮像部座標系に変換する右目用のマーカ・カメラ変換行列を右仮想カメラのビュー行列に指定することにより、実世界画像(左カメラ画像および右カメラ画像)にCG画像(左仮想世界画像および右仮想世界画像)をそれぞれ合成することができる。
なお、上記ステップC53において、左カメラ画像および右カメラ画像の少なくとも一方からマーカ画像MKiが認識されなかった場合には、左目用のマーカ・カメラ変換行列および/または右目用のマーカ・カメラ変換行列としてヌル値が左カメラ画像認識結果データDeおよび/または右カメラ画像認識結果データDfに格納され、これによって、左カメラ画像または右カメラ画像におけるマーカMKの認識に失敗したことが記録される。
なお、マーカ認識精度に誤差が全く無く、かつゲーム装置C10に対する外側左撮像部C23aおよび外側右撮像部C23bの取り付け精度に誤差が全く無いと仮定する。この場合、右カメラ画像の画像認識結果から計算される右仮想カメラの位置は、左カメラ画像の画像認識結果から計算される左仮想カメラの位置を、左仮想カメラ座標系の横方向(例えば、X軸方向)に沿って一定距離だけずらした位置となる。つまり、右カメラ画像の画像認識結果から計算される右仮想カメラの姿勢と、左カメラ画像の画像認識結果から計算される左仮想カメラの姿勢とは、同じとなる(すなわち、左仮想カメラ座標系のX軸,Y軸,Z軸が、右仮想カメラ座標系のX軸,Y軸,Z軸とそれぞれ平行となる)。したがって、一方のカメラ画像(例えば、左カメラ画像)の画像認識結果から計算される一方の仮想カメラ(例えば、左仮想カメラ)の位置および姿勢に基づいて、他方の仮想カメラ(例えば、右仮想カメラ)の位置および姿勢を決定して、他方のマーカ・カメラ変換行列を算出してもよい。この場合、他方のカメラ画像(例えば、右カメラ画像)に対する画像認識処理が不要となる。
次に、CPUC311は、音声認識処理を行って(ステップC54)、次のステップに処理を進める。以下、図72を参照して、上記ステップC54で行う音声認識処理について説明する。
図72において、CPUC311は、マイクC43に入力された音声波形からスペクトル情報を算出し(ステップC61)、次のステップに処理を進める。例えば、CPUC311は、音声波形データDcに格納されている音声波形情報を、短時間FFT分析することによってスペクトルを算出し、当該スペクトルを用いてスペクトル情報データDgを更新する。
次に、CPUC311は、上記ステップC61で算出されたスペクトルからメルフィルタ出力情報を算出し(ステップC62)、次のステップに処理を進める。例えば、CPUC311は、スペクトル情報データDgに格納されているスペクトルを、メルフィルタバンク分析することによって帯域フィルタバンクの出力を算出し、当該出力を示すデータを用いてメルフィルタ出力情報データDhを更新する。
次に、CPUC311は、拍手判定処理を行って(ステップC63)、次のステップに処理を進める。例えば、CPUC311は、音声波形データDcに格納されている音声波形情報を用いて、マイクC43に拍手の音が入力されたか否かを判定する。一例として、CPUC311は、音声波形データDcに格納されている最新の1フレーム分の音声波形において、振幅レベルの最大値を取得し、当該最大値の履歴を所定期間分(例えば、9フレーム分)記憶しておく。そして、CPUC311は、上記最大値の履歴において上記所定期間の中間時点に相当する最大値(例えば、9フレーム分の最大値の履歴のうち、5フレーム目の最大値)が所定の閾値α以上であり、かつ、当該最大値の前後となる履歴(例えば、前後2フレーム分の履歴)に相当する最大値の値が全て所定の閾値β以下であり、かつ、上記最大値の履歴の平均値が所定の閾値γ以下である場合、入力された音声が拍手であると判定する。このように、上記ステップC63における拍手判定処理の一例では、マイクC43に入力された音声波形を示す情報のみを参照して、相対的に短い期間において振幅が突出した音声波形が得られた場合に、拍手の音であると判定している。
次に、CPUC311は、上記ステップC63における拍手判定処理において、拍手の音が入力されたと判定されたか否かを判断する(ステップC64)。そして、CPUC311は、拍手の音が入力されたと判定された場合、拍手フラグをオンに設定して拍手フラグデータDkを更新し(ステップC65)、次のステップC66に処理を進める。一方、CPUC311は、拍手の音が入力されていないと判定された場合、そのまま次のステップC66に処理を進める。
ステップC66において、CPUC311は、口笛判定処理を行って、次のステップに処理を進める。例えば、CPUC311は、スペクトル情報データDgに格納されているスペクトルを用いて、マイクC43に口笛の音が入力されたか否かを判定する。一例として、CPUC311は、スペクトル情報データDgに格納されている最新の1フレーム分のスペクトルデータを対数変換してデシベルデータに変換する。次に、CPUC311は、最新の1フレーム分の周波数領域(例えば、横軸周波数、縦軸デシベル)において、スペクトルが基準デシベル値δ以上となる回数が1回であり、かつ、低域部分のデシベル値の平均値が基準値ε未満である場合、口笛イベントが発生したとカウントする。そして、CPUC311は、上記口笛イベントにおける直前の所定フレーム分の履歴において、当該口笛イベントのカウント数合計が閾値ζ以上であれば、入力された音声が口笛であると判定する。このように、上記ステップC66における口笛判定処理の一例では、マイクC43に入力された音声波形から得られたスペクトル情報のみを参照して、口笛の音を判定している。
次に、CPUC311は、上記ステップC66における口笛判定処理において、口笛の音が入力されたと判定されたか否かを判断する(ステップC67)。そして、CPUC311は、口笛の音が入力されたと判定された場合、口笛フラグをオンに設定して口笛フラグデータDlを更新し(ステップC68)、次のステップC69に処理を進める。一方、CPUC311は、口笛の音が入力されていないと判定された場合、そのまま次のステップC69に処理を進める。
ステップC69において、CPUC311は、息判定処理を行って、次のステップに処理を進める。例えば、CPUC311は、音声波形データDcに格納されている音声波形情報と、メルフィルタ出力情報データDhに格納されている帯域フィルタバンクの出力とを用いて、マイクC43に息の音が入力されたか否かを判定する。一例として、CPUC311は、音声波形データDcに格納されている音声波形の振幅平均値および振幅最大値がそれぞれ所定の範囲内にあるか否かを判定する。また、CPUC311は、上記音声波形のゼロクロス(音声波形の振幅がプラスからマイナスおよびマイナスからプラスへ変化するときに0レベルと交差する点)の個数が所定の閾値η以下であるか否かを判定する。さらに、CPUは、メルフィルタ出力情報データDhに格納されている帯域フィルタバンクの出力に対して、低域部分を除いた平均値が所定の閾値θ以上か否かを判定する。そして、CPUC311は、上記全ての判定がいずれも肯定判定の場合、入力された音声が息であると判定する。このように、上記ステップC69における息判定処理の一例では、マイクC43に入力された音声波形およびメルフィルタ出力情報を参照して、息の音を判定している。
次に、CPUC311は、上記ステップC69における息判定処理において、息の音が入力されたと判定されたか否かを判断する(ステップC70)。そして、CPUC311は、息の音が入力されたと判定された場合、息フラグをオンに設定して息フラグデータDmを更新し(ステップC71)、次のステップC72に処理を進める。一方、CPUC311は、息の音が入力されていないと判定された場合、そのまま次のステップC72に処理を進める。
ステップC72において、CPUC311は、音声照合処理を行って、次のステップに処理を進める。CPUC311は、マイクC43に入力された音声入力パターンから得られる特徴パラメータ時系列における予め登録されている特徴パラメータ時系列に対する尤度を求め、当該尤度が最大であり、かつ、所定の閾値以上となるモデルの登録音声を照合結果とする。例えば、CPUC311は、音声波形データDcに格納されている音声波形情報と、メルフィルタ出力情報データDhに格納されている帯域フィルタバンクの出力とを用いて、マイクC43に入力された音声と照合可能な登録音声があるか否かを判定する。一例として、CPUC311は、音声波形データDcに格納されている音声波形情報と、メルフィルタ出力情報データDhに格納されている帯域フィルタバンクの出力とを用いて、マイクC43に音声が入力されている区間(音声区間)を検出する。具体的には、CPUC311は、帯域フィルタバンクの出力から得られるスペクトルの形状に基づいて、マイクC43に音声の入力が開始された時点を検出し、音声波形のレベルに基づいてマイクC43に音声の入力が終了した時点を検出し、これらの時点の間を音声区間とする。なお、過去の音声波形の履歴を遡って当該音声波形のレベルを確認することによって、音声入力開始時点を決定してもかまわない。次に、CPUC311は、検出された音声区間中に得られた帯域フィルタバンクの出力に対して、三角窓で時間軸の正規化およびレベルの正規化を行い、動的計画法を用いて、音声登録データDjに登録されている登録音声のデータ(登録データ)との間の距離を算出する。そして、CPUC311は、算出された距離が所定の閾値ι以内であった場合に、当該距離が算出された登録データに入力音声が照合されたと判断する。このように、上記ステップC69における息判定処理の一例では、マイクC43に入力された音声波形およびメルフィルタ出力情報を参照して、登録音声との照合処理を行っている。
次に、CPUC311は、上記ステップC72における音声照合処理において、入力音声が登録音声に照合されたと判定されたか否かを判断する(ステップC73)。そして、CPUC311は、入力音声が登録音声に照合されたと判定された場合、登録音声フラグをオンに設定して登録音声フラグデータDnを更新し(ステップC74)、当該サブルーチンによる処理を終了する。一方、CPUC311は、入力音声が登録音声に照合されていないと判定された場合、そのまま当該サブルーチンによる処理を終了する。
図71に戻り、上記ステップC54における音声認識処理の後、CPUC311は、画像合成処理を行って(ステップC55)、次のステップに処理を進める。以下、図73を参照して、上記ステップC55で行う画像合成処理について説明する。
図73において、CPUC311は、通常状態フラグデータDoが示す通常状態フラグがオンであるか否かを判断する(ステップC81)。そして、CPUC311は、通常状態フラグがオンである場合、次のステップC82に処理を進める。一方、CPUC311は、通常状態フラグがオフである場合、次のステップC92に処理を進める。
ステップC82において、CPUC311は、登録音声フラグデータDnが示す登録音声フラグがオンであるか否かを判断する。そして、CPUC311は、登録音声フラグがオンである場合、次のステップC83に処理を進める。一方、CPUC311は、登録音声フラグがオフである場合、次のステップC84に処理を進める。
ステップC83において、CPUC311は、音声入力が照合された登録音声に基づいて、仮想キャラクタCに当該登録音声に対応する動作を開始させ、次のステップC95に処理を進める。例えば、CPUC311は、音声動作対応テーブルデータDiを参照して、音声入力が照合された登録音声に対応するキャラクタ動作および動作基準を抽出し、抽出されたキャラクタ動作および動作基準に基づいて、仮想キャラクタCの動作を開始する。
一方、ステップC84において、CPUC311は、拍手フラグデータDkが示す拍手フラグがオンであるか否かを判断する。そして、CPUC311は、拍手フラグがオンである場合、次のステップC85に処理を進める。一方、CPUC311は、拍手フラグがオフである場合、次のステップC86に処理を進める。
ステップC85において、CPUC311は、仮想キャラクタCに拍手の音が入力されたことに対応する動作を開始させ、次のステップC95に処理を進める。例えば、CPUC311は、音声動作対応テーブルデータDiを参照して、拍手の音が認識されたことに対応するキャラクタ動作および動作基準を抽出し、抽出されたキャラクタ動作および動作基準に基づいて、仮想キャラクタCの動作を開始する。
一方、ステップC86において、CPUC311は、口笛フラグデータDlが示す口笛フラグがオンであるか否かを判断する。そして、CPUC311は、口笛フラグがオンである場合、次のステップC87に処理を進める。一方、CPUC311は、口笛フラグがオフである場合、次のステップC88に処理を進める。
ステップC87において、CPUC311は、仮想キャラクタCに口笛の音が入力されたことに対応する動作を開始させ、次のステップC95に処理を進める。例えば、CPUC311は、音声動作対応テーブルデータDiを参照して、口笛の音が認識されたことに対応するキャラクタ動作および動作基準を抽出し、抽出されたキャラクタ動作および動作基準に基づいて、仮想キャラクタCの動作を開始する。
一方、ステップC88において、CPUC311は、息フラグデータDmが示す息フラグがオンであるか否かを判断する。そして、CPUC311は、息フラグがオンである場合、次のステップC89に処理を進める。一方、CPUC311は、息フラグがオフである場合、次のステップC91に処理を進める。
ステップC89において、CPUC311は、仮想キャラクタCが表示されている方向が所定の範囲内か否かを判断する。上述したように、息の音をゲーム装置C10に入力した場合、当該入力が行われた時点で仮想キャラクタCが上側LCDC22の表示範囲内に存在し、かつ、仮想キャラクタCの前方向が仮想カメラの方向付近を向いている場合に、当該入力に応じた動作指示が有効となる。例えば、CPUC311は、仮想キャラクタCの位置が上側LCDC22の表示範囲内にあり(すなわち、仮想キャラクタCの配置位置が左仮想カメラの視体積内および/または右仮想カメラの視体積内にある)、かつ、仮想キャラクタCの前方向を基準とした所定範囲内に左仮想カメラおよび/または右仮想カメラが配置されている場合に、上記ステップC89において肯定判定する。そして、CPUC311は、上記ステップC89において肯定判定された場合、次のステップC90に処理を進める。一方、CPUC311は、上記ステップC89において否定判定された場合、次のステップC91に処理を進める。
ステップC90において、CPUC311は、仮想キャラクタCに息の音が入力されたことに対応する動作を開始させ、次のステップC95に処理を進める。例えば、CPUC311は、音声動作対応テーブルデータDiを参照して、息の音が認識されたことに対応するキャラクタ動作および動作基準を抽出し、抽出されたキャラクタ動作および動作基準に基づいて、仮想キャラクタCの動作を開始する。
一方、ステップC91において、CPUC311は、仮想キャラクタCに現時点と同じ通常状態での行動を継続させ、次のステップC101(図74参照)に処理を進める。
音声認識された入力に応じた動作を開始する処理(ステップC83、ステップC85、ステップC87、およびステップC90)の後、CPUC311は、通常状態フラグデータDoが示す通常状態フラグをオフに更新して(ステップC95)、次のステップC101に処理を進める。
上記ステップC81において、通常状態フラグがオフであると判断された場合、CPUC311は、仮想キャラクタCに現時点で行われている動作を継続させ(ステップC92)、次のステップに処理を進める。ここで、後述により明らかとなるが、通常状態フラグは、音声認識された入力に応じた動作を開始した時点でオフに設定され、当該動作を終了した時点でオンに設定される。つまり、当該画像処理においては、仮想キャラクタCが音声認識された入力に応じた動作を行っている間に別の音声認識が行われたとしても、当該動作が優先して行われることになる。
次に、CPUC311は、音声認識された入力に応じた仮想キャラクタCの動作が終了したか否かを判断する(ステップC93)。そして、CPUC311は、音声認識された入力に応じた仮想キャラクタCの動作が終了した場合、通常状態フラグデータDoが示す通常状態フラグをオンに更新して(ステップC94)、次のステップC101に処理を進める。一方、CPUC311は、音声認識された入力に応じた仮想キャラクタCの動作が継続している場合、そのまま次のステップC101に処理を進める。
図74に進み、ステップC101において、CPUC311は、仮想世界画像を生成して、次のステップに処理を進める。例えば、CPUC311は、図75および図76に示すように、マーカ座標系(マーカ画像MKiの位置を原点とし、マーカ画像MKiの縦方向(Z軸方向)、横方向(X軸方向)、法線方向(Y軸方向)の各方向を各軸とする座標系)で定義される仮想空間に仮想キャラクタCを配置して、必要に応じて仮想キャラクタCの大きさを変化させ、仮想キャラクタCに上記ステップC81〜ステップC95で設定された動作を行わせる。例えば、仮想キャラクタCにマーカ座標系の原点の周りを歩くような移動をさせると、マーカ画像MKiの周りを歩くような表示が行われる。なお、仮想キャラクタCの移動制御は、マーカ座標系の原点と一致、または当該原点付近で、かつ、マーカ画像MKiを含む平面を基準とした方向(例えば、マーカ座標系におけるXZ平面に沿った方向を基準とするY軸方向において所定範囲内の位置)に、仮想キャラクタCの位置座標を変更することにより実現される。
なお、上記ステップC101の処理では、マーカ座標系における鉛直方向(Y軸負方向)が仮想空間の鉛直方向と定義して、仮想キャラクタCを仮想空間に配置する。そして、現在仮想キャラクタCが行っている動作に動作基準(例えば、マーカ基準やカメラ基準:図70参照)が設定されている場合、当該動作基準に基づいて、仮想キャラクタCの方向を設定する。例えば、動作基準がマーカ基準に設定されている動作の場合、仮想キャラクタCの前方向がマーカの方向(例えば、マーカ画像MKiの前方向)に相当するマーカ座標系の縦正方向(Z軸正方向)と一致、または当該マーカの方向から所定の範囲内となるように、仮想空間における仮想キャラクタCの姿勢を制御する。また、動作基準がカメラ基準に設定されている動作の場合、仮想キャラクタCの前方向が左仮想カメラの位置と右仮想カメラの位置との中間点を通る方向と一致、または当該中間点から所定の範囲内を通るように、仮想空間における仮想キャラクタCの姿勢を制御する。なお、マーカ座標系で定義された仮想空間における左仮想カメラの位置および右仮想カメラの位置は、上記ステップC53で算出されている左目用のマーカ・カメラ変換行列および右目用のマーカ・カメラ変換行列を用いて算出することができる。
そして、図75に示すように、CPUC311は、左仮想カメラから見た仮想空間を左目用の仮想世界画像として生成し、左仮想世界画像データDpを更新する。例えば、CPUC311は、左カメラ画像認識結果データDeが示す左目用のマーカ・カメラ変換行列を左仮想カメラのビュー行列に指定することによって、マーカ座標系で表現されたCGモデル(仮想キャラクタC)を、実世界に当該CGモデルが存在する場合に上側LCDC22に表示される場所(例えば、左カメラ画像におけるマーカ画像MKi上)と同じ位置に表示することができる。つまり、上側LCDC22に表示される左目用の表示画像において、マーカ座標系で定義された仮想空間に配置された仮想オブジェクトを、実世界のマーカMKに関連して存在しているように表示することができる。
また、図76に示すように、CPUC311は、右仮想カメラから見た仮想空間を右目用の仮想世界画像として生成し、右仮想世界画像データDqを更新する。例えば、CPUC311は、右カメラ画像認識結果データDfが示す右目用のマーカ・カメラ変換行列を右仮想カメラのビュー行列に指定することによって、マーカ座標系で表現されたCGモデル(仮想キャラクタC)を、実世界に当該CGモデルが存在する場合に上側LCDC22に表示される場所(例えば、右カメラ画像におけるマーカ画像MKi上)と同じ位置に表示することができる。つまり、上側LCDC22に表示される右目用の表示画像において、マーカ座標系で定義された仮想空間に配置された仮想オブジェクトを、実世界のマーカMKに関連して存在しているように表示することができる。
次に、CPUC311は、合成処理を行い(ステップC102)、次のステップに処理を進める。例えば、CPUC311は、実世界画像と仮想空間画像とを合成した表示画像を生成し、当該表示画像を上側LCDC22に表示する。
具体的には、CPUC311は、左カメラ画像データDaが示す左目用のカメラ画像を、上側LCDC22へ供給すべき左目用画像を一時的に記憶するためのVRAMC313内の所定の記憶領域(以下、左フレームバッファと称す)に描画する。そして、CPUC311は、左仮想世界画像データDnが示す左目用の仮想世界画像(すなわち、左仮想カメラから見た仮想空間の画像)を左フレームバッファに上書きする(典型的には、CPUC311からの指示にしたがってGPUC312によって描画される)。これによって、図77に示すように、左フレームバッファに描画された左目用のカメラ画像(左実世界画像)に左目用の仮想世界画像が合成される。左フレームバッファに描画された画像は、所定のタイミングで左目用画像として上側LCDC22へ供給されて、上側LCDC22に表示されることになる。なお、上記左目用の仮想世界画像においては、仮想空間の背景は透明であり、そのため、左実世界画像に左目用の仮想世界画像を合成することで、実世界画像上に仮想キャラクタCが存在するような画像が生成される。
一方、CPUC311は、右カメラ画像データDbが示す右目用のカメラ画像を、上側LCDC22へ供給すべき右目用画像を一時的に記憶するためのVRAMC313内の所定の記憶領域(以下、右フレームバッファと称す)に描画する。そして、CPUC311は、右仮想世界画像データDqが示す右目用の仮想世界画像(すなわち、右仮想カメラから見た仮想空間の画像)を右フレームバッファに上書きする。これによって、右フレームバッファに描画された右目用のカメラ画像(右実世界画像)に右目用の仮想世界画像が合成される。右フレームバッファに描画された画像は、所定のタイミングで右目用画像として上側LCDC22へ供給されて、上側LCDC22に表示されることになる。なお、上記右目用の仮想世界画像においても、仮想空間の背景は透明であり、そのため、右実世界画像に右目用の仮想世界画像を合成することで、実世界画像上に仮想キャラクタCが存在するような画像が生成される。
次に、CPUC311は、音声認識フラグを全てオフに設定し(ステップC103)、当該サブルーチンによる処理を終了する。例えば、CPUC311は、音声認識フラグ(拍手フラグ、口笛フラグ、息フラグ、登録音声フラグ)を全てオフに設定して、拍手フラグデータDk、口笛フラグデータDl、息フラグデータDm、および登録音声フラグデータDnをそれぞれ更新する。
図71に戻り、上記ステップC55における画像合成処理の後、CPUC311は、現時点が撮影のタイミングか否かを判断する(ステップC56)。一例として、CPUC311は、操作入力データDdに格納されている操作入力が撮影操作を示す場合、現時点が撮影のタイミングであると判断する。他の例として、CPUC311は、一定時間が経過すると自動的に撮影されるセルフタイマ操作を示す操作入力データを上記ステップC52において取得してから、当該一定時間が経過した場合、現時点が撮影のタイミングであると判断する。そして、CPUC311は、現時点が撮影のタイミングである場合、次のステップC57に処理を進める。一方、CPUC311は、現時点が撮影のタイミングでない場合、次のステップC58に処理を進める。なお、上記ステップC56で判断される撮影操作は、ユーザの音声入力によって行われてもかまわない。この場合、CPUC311は、音声波形データDcが示す音声波形を音声認識することによって、ユーザによる撮影指示があったか否かを判断する。
ステップC57において、CPUC311は、上記ステップC102で合成処理された画像を保存し、次のステップC58に処理を進める。例えば、CPUC311は、上記ステップC102で合成処理された左目用画像を示す画像データおよび右目用画像を示す画像データを、データ保存用内部メモリC35やデータ保存用外部メモリC46に記憶させる。
ステップC58において、CPUC311は、当該画像処理を終了するか否かを判断する。画像処理を終了する条件としては、例えば、画像処理を自動的に終了する条件が満たされたことや、画像処理を行っているゲームがゲームオーバとなる条件が満たされたことや、ユーザが画像処理を終了する操作を行ったこと等がある。CPUC311は、画像処理を終了しない場合、上記ステップC52に戻って処理を繰り返す。一方、CPUC311は、画像処理を終了する場合、当該フローチャートによる処理を終了する。
このように、上述した実施形態に係る画像処理では、カメラ画像に仮想キャラクタCを付加表示する際、仮想キャラクタCに対して音声で操作することができ、実世界画像に付加表示された仮想物体に対して新たな入力方法を用いて操作することができる。
なお、上述した説明では、実世界に配置されたマーカMKを撮像対象とし、当該マーカMKが撮像されてマーカ画像MKiとして表示されている場合にマーカ画像MKi上付近に仮想キャラクタCを付加表示している。これは、実世界と撮像装置(外側撮像部C23)との相対的な位置関係や撮像装置の姿勢を認識し、当該認識結果に基づいて仮想物体や文字等を付加表示する位置を設定するためにマーカMKが用いられている。しかしながら、本発明は、マーカMKを用いなくても実現することができる。
例えば、実世界と撮像装置との相対的な位置関係は、当該撮像装置が撮像する撮像画像内の特徴点(例えば、被写体のエッジや輪郭)を認識し、当該撮像画像内の水平面等を検出する撮像画像内の特徴を検出し、GPSや各種センサによって撮像装置の実世界内の位置や姿勢を取得すれば、上述した同様の画像処理が可能となる。具体的には、撮像画像内の特徴点とその特徴量を抽出する際に用いられるアルゴリズム(例えば、SIFT(Scale−invariant feature transform))等を用いることによって、マーカMKを用いなくても撮像画像内の特徴を検出することが可能となる。
例えば、図78に示すように、撮像装置で撮像されているリアルタイムの撮像画像を表示装置に表示しながら、当該撮像装置が撮像している場所や被写体(建物や看板等)に関連する情報(例えば、文字情報やアイコン)を付加情報として当該撮像画像に重畳して表示される場合でも、本発明を適用することができる。この表示技術は、撮像装置(ゲーム装置C10)に内蔵されたGPSを用いて現在位置を特定し、内蔵された磁気センサ(電子コンパス等)によって撮像方向を認識する。そして、特定された位置および撮像方向に対応する付加情報が撮像画像に重畳して表示される。この場合、撮像画像に対する画像認識は不要となるが、広範囲に人工的なランドマークを配置して撮像画像に対する画像認識によって抽出された当該ランドマークの位置をさらに用いて、撮像装置の位置や姿勢を推定する方式もある。また、撮像画像を撮像したカメラの位置および姿勢を、撮像画像上の2次元特徴点(エッジや輪郭等)と自然特徴点の3次元位置とを対応付けることによって推定する方式もある。
このように、マーカMKを用いなくても実世界における撮像装置の位置や姿勢を取得することは可能であり、これらの技術を用いれば本発明は、マーカMKを用いなくても実現することが可能である。例えば、図78に示すように、4つの建物(Aデパート、Bビル、Cビル、およびD銀行)が被写体として外側撮像部C23によって撮像され、撮像された撮像画像が上側LCDC22に表示されている。そして、表示されている4つの建物には、それぞれの建物名称を示す文字情報が付加情報として重畳して表示されており、これらの付加情報の1つを選択することによって、選択された建物のさらに詳細な情報を表示することができる。このような状況において、本発明では、上記付加情報の1つを選択する操作を音声で行うことによって、音声で選択された建物のさらに詳細な情報を表示することができる。具体的には、ユーザが「Aデパート」を話し言葉として発する音(言語)をゲーム装置C10に入力した場合、ゲーム装置C10では音声入力された「Aデパート」を音声認識し、当該音声認識結果によって選択された文字情報(付加情報)の表示態様を変化させる。例えば、音声入力によって選択された文字情報の色、フォント、文字サイズ、文字太さ、文字飾り、文字表示位置等の表示態様を変化させて、複数の文字情報と区別して表示することによって、ユーザに選択された文字情報を報知することができる。そして、ゲーム装置C10は、選択された文字情報が付与された被写体に関するさらに詳細な情報を、上側LCDC22に表示する。このように、マーカMKを用いずに実世界における撮像装置の位置や姿勢を取得しながら、仮想オブジェクトとして文字が付加表示されている状況においても、音声入力によって当該文字を選択する操作を行うことができる。そして、実世界画像を撮像しながら、従来の入力方法で当該実世界画像に重畳されて表示された複数の選択肢から選択する操作は煩わしい操作となるが、当該撮像装置(ゲーム装置C10)を把持しているユーザの手指を用いない音声入力で選択することによって操作性を飛躍的に向上させることができる。
また、上述した説明では、上側LCDC22に、裸眼で立体視可能な画像(立体画像)が上側LCDC22に表示される例を用いたが、外側撮像部C23および内側撮像部C24のいずれかから取得した実世界の平面画像(上述した立体視可能な画像とは反対の意味での平面視の画像)を上側LCDC22に表示してもよい。
また、上記実施形態では、上側LCDC22がパララックスバリア方式の液晶表示装置であるとして、視差バリアのON/OFFを制御することにより、立体表示と平面表示とを切り替えることができる。他の実施形態では、例えば、上側LCDC22としてレンチキュラー方式の液晶表示装置を用いて、立体画像および平面画像を表示可能としてもよい。レンチキュラー方式の場合でも、外側撮像部C23で撮像した2つの画像を縦方向に短冊状に分割して交互に配置することで画像が立体表示される。また、レンチキュラー方式の場合でも、内側撮像部C24で撮像した1つの画像をユーザの左右の目に視認させることによって、当該画像を平面表示させることができる。すなわち、レンチキュラー方式の液晶表示装置であっても、同じ画像を縦方向に短冊状に分割し、これら分割した画像を交互に配置することにより、ユーザの左右の目に同じ画像を視認させることができる。これにより、内側撮像部C24で撮像された画像を平面画像として表示することが可能である。
また、上述した説明では、上側LCDC22を裸眼立体視可能な表示装置として説明したが、上側LCDC22が他の方式で立体視可能に構成されてもかまわない。例えば、偏光フィルタ方式、時分割方式、アナグリフ方式等の方式で、上側LCDC22を立体視可能に構成してもかまわない。
また、上述した実施形態では、2画面分の液晶表示部の一例として、物理的に分離された下側LCDC12および上側LCDC22を互いに上下に配置した場合(上下2画面の場合)を説明した。しかしながら、本発明は、単一の表示画面(例えば、上側LCDC22のみ)を有する装置または単一の表示装置に表示する画像を画像処理する装置でも実現することができる。また、2画面分の表示画面の構成は、他の構成でもかまわない。例えば、下側ハウジングC11の一方主面に下側LCDC12および上側LCDC22を左右に配置してもかまわない。また、下側LCDC12と横幅が同じで縦の長さが2倍のサイズからなる縦長サイズのLCD(すなわち、物理的には1つで、表示サイズが縦に2画面分あるLCD)を下側ハウジングC11の一方主面に配設して、2つの画像(例えば、撮像画像と操作説明画面を示す画像等)を上下に表示(すなわち上下の境界部分無しに隣接して表示)するように構成してもよい。また、下側LCDC12と縦幅が同じで横の長さが2倍のサイズからなる横長サイズのLCDを下側ハウジングC11の一方主面に配設して、横方向に2つの画像を左右に表示(すなわち左右の境界部分無しに隣接して表示)するように構成してもよい。すなわち、物理的に1つの画面を2つに分割して使用することにより2つの画像を表示してもかまわない。また、物理的に1つの画面を2つに分割して使用することにより上記2つの画像を表示する場合、当該画面全面にタッチパネルC13を配設してもかまわない。
また、上述した実施例では、ゲーム装置C10にタッチパネルC13が一体的に設けられているが、ゲーム装置とタッチパネルとを別体にして構成しても、本発明を実現できることは言うまでもない。また、上側LCDC22の上面にタッチパネルC13を設けて上側LCDC22に下側LCDC12に表示していた表示画像を表示し、下側LCDC12に上側LCDC22に表示していた表示画像を表示してもよい。また、本発明を実現する場合に、タッチパネルC13が設けられていなくもかまわない。
また、上記実施例では、携帯型のゲーム装置C10を用いて説明したが、据置型のゲーム装置や一般的なパーソナルコンピュータ等の情報処理装置で本発明の画像処理プログラムを実行して、本発明を実現してもかまわない。また、他の実施形態では、ゲーム装置に限らず任意の携帯型電子機器、例えば、PDA(Personal Digital Assistant)や携帯電話、パーソナルコンピュータ、カメラ等であってもよい。
また、上述した説明では画像処理をゲーム装置C10で行う例を用いたが、上記画像処理における処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲーム装置C10が他の装置(例えば、サーバや他のゲーム装置)と通信可能に構成されている場合、上記画像処理における処理ステップは、ゲーム装置C10および当該他の装置が協働することによって実行してもよい。一例として、他の装置において、実世界画像および仮想キャラクタCを設定する処理が行われ、ゲーム装置C10が実世界画像および仮想キャラクタCに関するデータを取得して、ステップC54〜ステップC68の処理を行うことが考えられる。このように、上記画像における処理ステップの少なくとも一部を他の装置で行うことによって、上述した画像処理と同様の処理が可能となる。上述した画像処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施形態においては、ゲーム装置C10の情報処理部C31が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、ゲーム装置C10が備える専用回路によって上記処理の一部または全部が行われてもよい。
また、上述したゲーム装置C10の形状や、それに設けられている各種操作ボタンC14、アナログスティックC15、タッチパネルC13の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した画像処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず他の順序や値であっても、本発明を実現できることは言うまでもない。
また、上記画像処理プログラム(ゲームプログラム)は、外部メモリC45やデータ保存用外部メモリC46等の外部記憶媒体を通じてゲーム装置C10に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置C10に供給されてもよい。また、上記プログラムは、ゲーム装置C10内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープなどでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。
(ゲーム装置の構成)
以下、本発明のさらに他の一実施形態に係るゲーム装置について説明する。図79〜図81は、ゲーム装置D10の外観を示す平面図である。ゲーム装置D10は携帯型のゲーム装置であり、図79〜図81に示すように折り畳み可能に構成されている。図79および図80は、開いた状態(開状態)におけるゲーム装置D10を示し、図81は、閉じた状態(閉状態)におけるゲーム装置D10を示している。図79は、開状態におけるゲーム装置D10の正面図であり、図80は、開状態におけるゲーム装置D10の右側面図である。ゲーム装置D10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置D10は、交換可能なメモリカード内に記憶され、または、サーバや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
まず、図79〜図81を参照して、ゲーム装置D10の外観構成について説明する。図79〜図81に示されるように、ゲーム装置D10は、下側ハウジングD11および上側ハウジングD21を有する。下側ハウジングD11と上側ハウジングD21とは、開閉可能(折り畳み可能)に接続されている。本実施形態では、各ハウジングD11およびD21はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
図79および図80に示されるように、下側ハウジングD11の上側長辺部分には、下側ハウジングD11の内側面(主面)D11Bに対して垂直な方向に突起する突起部D11Aが設けられる。また、上側ハウジングD21の下側長辺部分には、上側ハウジングD21の下側面から当該下側面に垂直な方向に突起する突起部D21Aが設けられる。下側ハウジングD11の突起部D11Aと上側ハウジングD21の突起部D21Aとが連結されることにより、下側ハウジングD11と上側ハウジングD21とが、折り畳み可能に接続される。
(下側ハウジングの説明)
まず、下側ハウジングD11の構成について説明する。図79〜図81に示すように、下側ハウジングD11には、下側LCD(Liquid Crystal Display:液晶表示装置)D12、タッチパネルD13、各操作ボタンD14A〜D14L(図79、図81)、アナログスティックD15、LEDD16A〜D16B、挿入口D17、および、マイクロフォン用孔D18が設けられる。以下、これらの詳細について説明する。
図79に示すように、下側LCDD12は下側ハウジングD11に収納される。下側LCDD12は横長形状であり、長辺方向が下側ハウジングD11の長辺方向に一致するように配置される。下側LCDD12は下側ハウジングD11の中央に配置される。下側LCDD12は、下側ハウジングD11の内側面(主面)に設けられ、下側ハウジングD11に設けられた開口部から当該下側LCDD12の画面が露出される。ゲーム装置D10を使用しない場合には閉状態としておくことによって、下側LCDD12の画面が汚れたり傷ついたりすることを防止することができる。下側LCDD12の画素数は、例えば、256dot×192dot(横×縦)であってもよい。下側LCDD12は、後述する上側LCDD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCDD12として、任意の解像度の表示装置を利用することができる。
図79に示されるように、ゲーム装置D10は、入力装置として、タッチパネルD13を備えている。タッチパネルD13は、下側LCDD12の画面上に装着されている。なお、本実施形態では、タッチパネルD13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネルD13として、下側LCDD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネルD13の解像度と下側LCDD12の解像度が一致している必要はない。また、下側ハウジングD11の上側面には挿入口D17(図79および図81(d)に示す点線)が設けられている。挿入口D17は、タッチパネルD13に対する操作を行うために用いられるタッチペンD28を収納することができる。なお、タッチパネルD13に対する入力は通常タッチペンD28を用いて行われるが、タッチペンD28に限らずユーザの指でタッチパネルD13に対する入力をすることも可能である。
各操作ボタンD14A〜D14Lは、所定の入力を行うための入力装置である。図79に示されるように、下側ハウジングD11の内側面(主面)には、各操作ボタンD14A〜D14Lのうち、十字ボタンD14A(方向入力ボタンD14A)、aボタンD14B、bボタンD14C、xボタンD14D、yボタンD14E、電源ボタンD14F、セレクトボタンD14J、HOMEボタンD14K、およびスタートボタンD14Lが、設けられる。十字ボタンD14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタンD14B、ボタンD14C、ボタンD14D、ボタンD14Eは、十字状に配置される。ボタンD14A〜D14E、セレクトボタンD14J、HOMEボタンD14K、およびスタートボタンD14Lには、ゲーム装置D10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタンD14Aは選択操作等に用いられ、各操作ボタンD14B〜D14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタンD14Fは、ゲーム装置D10の電源をオン/オフするために用いられる。
アナログスティックD15は、方向を指示するデバイスであり、下側ハウジングD11の内側面の下側LCDD12より左側領域の上部領域に設けられる。図79に示すように、十字ボタンD14Aは下側LCDD12より左側領域の下部領域に設けられるので、アナログスティックD15は、十字ボタンD14Aの上方に設けられる。また、アナログスティックD15、および、十字ボタンD14Aは、下側ハウジングを把持した左手の親指で操作可能な位置に設計される。また、アナログスティックD15を上部領域に設けたことにより、下側ハウジングD11を把持する左手の親指が自然と位置するところにアナログスティックD15が配され、十字ボタンD14Aは、左手の親指を少し下にずらした位置に配される。アナログスティックD15は、そのキートップが、下側ハウジングD11の内側面に平行にスライドするように構成されている。アナログスティックD15は、ゲーム装置D10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置D10によって実行される場合、アナログスティックD15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティックD15のキートップがスライドした方向に移動される。なお、アナログスティックD15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
十字状に配置される、aボタンD14B、bボタンD14C、xボタンD14D、yボタンD14Eの4つのボタンは、下側ハウジングD11を把持する右手の親指が自然と位置するところに配置される。また、これらの4つのボタンと、アナログスティックD15とは、下側LCDD12を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの4つのボタンを使用して方向指示入力をすることも可能である。
また、下側ハウジングD11の内側面には、マイクロフォン用孔D18が設けられる。マイクロフォン用孔D18の下部には後述する音声入力装置としてのマイク(図82参照)が設けられ、当該マイクがゲーム装置D10の外部の音を検出する。
図81(a)は閉状態におけるゲーム装置D10の左側面図であり、図81(b)は閉状態におけるゲーム装置D10の正面図であり、図81(c)は閉状態におけるゲーム装置D10の右側面図であり、図81(d)は閉状態におけるゲーム装置D10の背面図である。図81(b)および(d)に示されるように、下側ハウジングD11の上側面には、LボタンD14GおよびRボタンD14Hが設けられている。LボタンD14Gは、下側ハウジングD11の上面の左端部に設けられ、RボタンD14Hは、下側ハウジングD11の上面の右端部に設けられる。また、図81(a)に示されるように、下側ハウジングD11の左側面には、音量ボタンD14Iが設けられる。音量ボタンD14Iは、ゲーム装置D10が備えるスピーカの音量を調整するために用いられる。
図81(a)に示されるように、下側ハウジングD11の左側面には開閉可能なカバー部D11Cが設けられる。このカバー部D11Cの内側には、ゲーム装置D10とデータ保存用外部メモリD45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリD45は、コネクタに着脱自在に装着される。データ保存用外部メモリD45は、例えば、ゲーム装置D10によって撮像された画像のデータを記憶(保存)するために用いられる。なお、上記コネクタおよびそのカバー部D11Cは、下側ハウジングD11の右側面に設けられてもよい。
また、図81(d)に示されるように、下側ハウジングD11の上側面には、ゲーム装置D10とゲームプログラムを記録した外部メモリD44を挿入するための挿入口D11Dが設けられ、その挿入口D11Dの内部には、外部メモリD44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリD44がゲーム装置D10に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタおよびその挿入口D11Dは、下側ハウジングD11の他の側面(例えば、右側面等)に設けられてもよい。
また、図79および図81(c)に示されるように、下側ハウジングD11の下側面にはゲーム装置D10の電源のON/OFF状況をユーザに通知する第1LEDD16A、下側ハウジングD11の右側面にはゲーム装置D10の無線通信の確立状況をユーザに通知する第2LEDD16Bが設けられる。ゲーム装置D10は他の機器との間で無線通信を行うことが可能であり、第2LEDD16Bは、無線通信が確立している場合に点灯する。ゲーム装置D10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジングD11の右側面には、この無線通信の機能を有効/無効にする無線スイッチD19が設けられる(図81(c)参照)。
なお、図示は省略するが、下側ハウジングD11には、ゲーム装置D10の電源となる充電式電池が収納され、下側ハウジングD11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
(上側ハウジングの説明)
次に、上側ハウジングD21の構成について説明する。図79〜図81に示すように、上側ハウジングD21には、上側LCD(Liquid Crystal Display:液晶表示装置)D22、外側撮像部D23(外側撮像部(左)D23aおよび外側撮像部(右)D23b)、内側撮像部D24、3D調整スイッチD25、および、3DインジケータD26が設けられる。以下、これらの詳細について説明する。
図79に示すように、上側LCDD22は上側ハウジングD21に収納される。上側LCDD22は、横長形状であり、長辺方向が上側ハウジングD21の長辺方向に一致するように配置される。上側LCDD22は上側ハウジングD21の中央に配置される。上側LCDD22の画面の面積は、下側LCDD12の画面の面積よりも大きく設定される。また、上側LCDD22の画面は、下側LCDD12の画面よりも横長に設定される。すなわち、上側LCDD22の画面のアスペクト比における横幅の割合は、下側LCDD12の画面のアスペクト比における横幅の割合よりも大きく設定される。
上側LCDD22の画面は、上側ハウジングD21の内側面(主面)D21Bに設けられ、上側ハウジングD21に設けられた開口部から当該上側LCDD22の画面が露出される。また、図80に示すように、上側ハウジングD21の内側面は、透明なスクリーンカバーD27によって覆われている。当該スクリーンカバーD27は、上側LCDD22の画面を保護するとともに、上側LCDD22と上側ハウジングD21の内側面と一体的にさせ、これにより統一感を持たせている。上側LCDD22の画素数は、例えば、640dot×200dot(横×縦)であってもよい。なお、本実施形態では上側LCDD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCDD22として、任意の解像度の表示装置を利用することができる。
上側LCDD22は、立体視可能な画像(立体視画像、立体画像ともいう)を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。または、左目用画像と右目用画像とが交互に表示される方式の表示装置であってもよい。また、本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCDD22はパララックスバリア方式のものとする。上側LCDD22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCDD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCDD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである)。このように、上側LCDD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチD25によって行われる。
外側撮像部D23は、上側ハウジングD21の外側面(上側LCDD22が設けられた主面と反対側の背面)D21Dに設けられた2つの撮像部(D23aおよびD23b)の総称である。外側撮像部(左)D23aと外側撮像部(右)D23bの撮像方向は、いずれも当該外側面D21Dの外向きの法線方向である。また、これらの撮像部はいずれも、上側LCDD22の表示面(内側面)の法線方向と180度反対の方向に設計される。すなわち、外側撮像部(左)D23aの撮像方向および外側撮像部(右)D23bの撮像方向は、平行である。外側撮像部(左)D23aと外側撮像部(右)D23bとは、ゲーム装置D10が実行するプログラムによって、ステレオカメラとして使用することが可能である。また、プログラムによっては、2つの外側撮像部(D23aおよびD23b)のいずれか一方を単独で用いて、外側撮像部D23を非ステレオカメラとして使用することも可能である。また、プログラムによっては、2つの外側撮像部(D23aおよびD23b)で撮像した画像を合成してまたは補完的に使用することにより撮像範囲を広げた撮像をおこなうことも可能である。本実施形態では、外側撮像部D23は、外側撮像部(左)D23aおよび外側撮像部(右)D23bの2つの撮像部で構成される。外側撮像部(左)D23aおよび外側撮像部(右)D23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図79の破線および図81(b)の実線で示されるように、外側撮像部D23を構成する外側撮像部(左)D23aおよび外側撮像部(右)D23bは、上側LCDD22の画面の横方向と平行に並べられて配置される。すなわち、2つの撮像部を結んだ直線が上側LCDD22の画面の横方向と平行になるように、外側撮像部(左)D23aおよび外側撮像部(右)D23bが配置される。図79の破線で示すD23aおよびD23bは、上側ハウジングD21の内側面とは反対側の外側面に存在する外側撮像部(左)D23aおよび外側撮像部(右)D23bをそれぞれ表している。図79に示すように、ユーザが上側LCDD22の画面を正面から視認した場合に、外側撮像部(左)D23aは左側に外側撮像部(右)D23bは右側にそれぞれ位置している。外側撮像部D23をステレオカメラとして機能させるプログラムが実行されている場合、外側撮像部(左)D23aは、ユーザの左目で視認される左目用画像を撮像し、外側撮像部(右)D23bは、ユーザの右目で視認される右目用画像を撮像する。外側撮像部(左)D23aおよび外側撮像部(右)D23bの間隔は、人間の両目の間隔程度に設定され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、外側撮像部(左)D23aおよび外側撮像部(右)D23bの間隔は、この範囲に限らない。
なお、本実施例においては、外側撮像部(左)D23aおよび外側撮像部(右)D23はハウジングに固定されており、撮像方向を変更することはできない。
また、外側撮像部(左)D23aおよび外側撮像部(右)D23bは、上側LCDD22(上側ハウジングD21)の左右方向に関して中央から対称となる位置にそれぞれ配置される。すなわち、外側撮像部(左)D23aおよび外側撮像部(右)D23bは、上側LCDD22を左右に2等分する線に対して対称の位置にそれぞれ配置される。また、外側撮像部(左)D23aおよび外側撮像部(右)D23bは、上側ハウジングD21を開いた状態において、上側ハウジングD21の上部であって、上側LCDD22の画面の上端よりも上方の位置の裏側に配置される。すなわち、外側撮像部(左)D23aおよび外側撮像部(右)D23bは、上側ハウジングD21の外側面であって、上側LCDD22を外側面に投影した場合、投影した上側LCDD22の画面の上端よりも上方に配置される。
このように、外側撮像部D23の2つの撮像部(D23aおよびD23b)が、上側LCDD22の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側LCDD22を正視した場合に、外側撮像部D23の撮像方向をユーザの視線方向と一致させることができる。また、外側撮像部D23は、上側LCDD22の画面の上端より上方の裏側の位置に配置されるため、外側撮像部D23と上側LCDD22とが上側ハウジングD21の内部で干渉することがない。従って、外側撮像部D23を上側LCDD22の画面の裏側に配置する場合と比べて、上側ハウジングD21を薄く構成することが可能となる。
内側撮像部D24は、上側ハウジングD21の内側面(主面)D21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部D24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
図79に示すように、内側撮像部D24は、上側ハウジングD21を開いた状態において、上側ハウジングD21の上部であって、上側LCDD22の画面の上端よりも上方に配置され、上側ハウジングD21の左右方向に関して中央の位置(上側ハウジングD21(上側LCDD22の画面)を左右に2等分する線の線上)に配置される。具体的には、図79および図81(b)に示されるように、内側撮像部D24は、上側ハウジングD21の内側面であって、外側撮像部D23の左右の撮像部(外側撮像部(左)D23aおよび外側撮像部(右)D23b)の中間の裏側の位置に配置される。すなわち、上側ハウジングD21の外側面に設けられた外側撮像部D23の左右の撮像部を上側ハウジングD21の内側面に投影した場合、当該投影した左右の撮像部の中間に、内側撮像部D24が設けられる。図81(b)で示される破線D24は、上側ハウジングD21の内側面に存在する内側撮像部D24を表している。
このように、内側撮像部D24は、外側撮像部D23とは反対方向を撮像する。内側撮像部D24は、上側ハウジングD21の内側面であって、外側撮像部D23の左右の撮像部の中間位置の裏側に設けられる。これにより、ユーザが上側LCDD22を正視した際、内側撮像部D24でユーザの顔を正面から撮像することができる。また、外側撮像部D23の左右の撮像部と内側撮像部D24とが上側ハウジングD21の内部で干渉することがないため、上側ハウジングD21を薄く構成することが可能となる。
3D調整スイッチD25は、スライドスイッチであり、上述のように上側LCDD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチD25は、上側LCDD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。図79〜図81に示されるように、3D調整スイッチD25は、上側ハウジングD21の内側面および右側面の端部に設けられ、ユーザが上側LCDD22を正視した場合に、当該3D調整スイッチD25を視認できる位置に設けられる。また、3D調整スイッチD25の操作部は、内側面および右側面の両方に突出しており、どちらからも視認および操作することができる。なお、3D調整スイッチD25以外のスイッチは全て下側ハウジングD11に設けられる。
3D調整スイッチD25は、図79および図80に示されるように、上側ハウジングD21の正面および右側面から視認可能に配置される。3D調整スイッチD25のスライダD25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダD25aの位置に応じて上側LCDD22の表示モードが設定されたり、立体画像の立体感が調整されてもよい。例えば、3D調整スイッチD25のスライダD25aの位置に応じて、後述する仮想カメラ(仮想ステレオカメラ)のカメラ間距離が設定されてもよい。また、当該仮想ステレオカメラの左仮想カメラによって撮像された左目用画像と右仮想カメラによって撮像された右目用画像との位置関係が調整されてもよい。具体的には、例えば、3D調整スイッチD25のスライダD25aが最上点(図79および図80では上方向)に存在する場合、上記左目用画像と右目用画像との横方向(上側LCDD22の画面の横方向;図79の左右方向)の位置のずれが上限値に設定される。このように左目用画像と右目用画像の横方向のずれが上限値に設定されると、2つの画像の視差がより大きくなる。このため、ユーザが視差バリアを通して上側LCDD22に表示された2つの画像を見ると、上側LCDD22の画面から画像がより手前方向に飛び出したように見える。このように、3D調整スイッチD25を用いて、2つの画像の視差が調整されてもよい。
3DインジケータD26は、上側LCDD22が立体表示モードか否かを示す。3DインジケータD26は、LEDであり、上側LCDD22の立体表示モードが有効の場合に点灯する。なお、3DインジケータD26は、上側LCDD22が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているときに限り、点灯するようにしてもよい。図79に示されるように、3DインジケータD26は、上側ハウジングD21の内側面に設けられ、上側LCDD22の画面近傍に設けられる。このため、ユーザが上側LCDD22の画面を正視した場合、ユーザは3DインジケータD26を視認しやすい。従って、ユーザは上側LCDD22の画面を視認している状態でも、上側LCDD22の表示モードを容易に認識することができる。
また、上側ハウジングD21の内側面には、スピーカ孔D21Eが設けられる。後述するスピーカD43からの音声がこのスピーカ孔D21Eから出力される。
(ゲーム装置D10の内部構成)
次に、図82を参照して、ゲーム装置D10の内部の電気的構成について説明する。図82は、ゲーム装置D10の内部構成を示すブロック図である。図82に示すように、ゲーム装置D10は、上述した各部に加えて、情報処理部D31、メインメモリD32、外部メモリインターフェイス(外部メモリI/F)D33、データ保存用外部メモリI/FD34、データ保存用内部メモリD35、無線通信モジュールD36、ローカル通信モジュールD37、リアルタイムクロック(RTC)D38、加速度センサD39、電源回路D40、およびインターフェイス回路(I/F回路)D41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジングD11(または上側ハウジングD21でもよい)内に収納される。
情報処理部D31は、所定のプログラムを実行するためのCPU(Central Processing Unit)D311、画像処理を行うGPU(Graphics Processing Unit)D312等を含む情報処理手段である。本実施形態では、所定のプログラムがゲーム装置D10内のメモリ(例えば外部メモリI/FD33に接続された外部メモリD44やデータ保存用内部メモリD35)に記憶されている。情報処理部D31のCPUD311は、当該所定のプログラムを実行することによって、後述する画像処理(図90)を実行する。なお、情報処理部D31のCPUD311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部D31は、VRAM(Video RAM)D313を含む。情報処理部D31のGPUD312は、情報処理部D31のCPUD311からの命令に応じて画像を生成し、VRAMD313に描画する。そして、情報処理部D31のGPUD312は、VRAMD313に描画された画像を上側LCDD22及び/又は下側LCDD12に出力し、上側LCDD22及び/又は下側LCDD12に当該画像が表示される。
情報処理部D31には、メインメモリD32、外部メモリI/FD33、データ保存用外部メモリI/FD34、および、データ保存用内部メモリD35が接続される。外部メモリI/FD33は、外部メモリD44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/FD34は、データ保存用外部メモリD45を着脱自在に接続するためのインターフェイスである。
メインメモリD32は、情報処理部D31(のCPUD311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリD32は、上記画像処理に用いられる各種データを一時的に記憶したり、外部(外部メモリD44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリD32として例えばPSRAM(Pseudo−SRAM)を用いる。
外部メモリD44は、情報処理部D31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリD44は、例えば読み取り専用の半導体メモリで構成される。外部メモリD44が外部メモリI/FD33に接続されると、情報処理部D31は外部メモリD44に記憶されたプログラムを読み込むことができる。情報処理部D31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリD45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリD45には、外側撮像部D23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリD45がデータ保存用外部メモリI/FD34に接続されると、情報処理部D31はデータ保存用外部メモリD45に記憶された画像を読み込み、上側LCDD22及び/又は下側LCDD12に当該画像を表示することができる。
データ保存用内部メモリD35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリD35には、無線通信モジュールD36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
無線通信モジュールD36は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュールD37は、所定の通信方式(例えば赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュールD36およびローカル通信モジュールD37は情報処理部D31に接続される。情報処理部D31は、無線通信モジュールD36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュールD37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
また、情報処理部D31には、加速度センサD39が接続される。加速度センサD39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサD39は、下側ハウジングD11の内部に設けられる。加速度センサD39は、図79に示すように、下側ハウジングD11の長辺方向をx軸、下側ハウジングD11の短辺方向をy軸、下側ハウジングD11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサD39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサD39は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部D31は、加速度センサD39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置D10の姿勢や動きを検出する。本実施形態では、情報処理部D31は、加速度センサD39が検出した加速度に基づいて、ゲーム装置D10の姿勢(傾き)を判定する。
また、情報処理部D31には、RTCD38および電源回路D40が接続される。RTCD38は、時間をカウントして情報処理部D31に出力する。情報処理部D31は、RTCD38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路D40は、ゲーム装置D10が有する電源(下側ハウジングD11に収納される上記充電式電池)からの電力を制御し、ゲーム装置D10の各部品に電力を供給する。
また、情報処理部D31には、I/F回路D41が接続される。I/F回路D41には、マイクD42およびスピーカD43が接続される。具体的には、I/F回路D41には、図示しないアンプを介してスピーカD43が接続される。マイクD42は、ユーザの音声を検知して音声信号をI/F回路D41に出力する。アンプは、I/F回路D41からの音声信号を増幅し、音声をスピーカD43から出力させる。また、タッチパネルD13はI/F回路D41に接続される。I/F回路D41は、マイクD42およびスピーカD43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネルD13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部D31に出力する。タッチ位置データは、タッチパネルD13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネルD13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部D31は、タッチ位置データを取得することにより、タッチパネルD13に対して入力が行われた位置を知ることができる。
操作ボタンD14は、上記各操作ボタンD14A〜D14Lからなり、情報処理部D31に接続される。操作ボタンD14から情報処理部D31へは、各操作ボタンD14A〜D14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部D31は、操作ボタンD14から操作データを取得することによって、操作ボタンD14に対する入力に従った処理を実行する。
下側LCDD12および上側LCDD22は情報処理部D31に接続される。下側LCDD12および上側LCDD22は、情報処理部D31(のGPUD312)の指示に従って画像を表示する。
具体的には、情報処理部D31は、上側LCDD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCDD22の視差バリアがONになっている場合、情報処理部D31のVRAMD313に格納された右目用画像と左目用画像とが、上側LCDD22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAMD313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCDD22の画面に表示される。そして、上側LCDD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCDD22の画面には立体視可能な画像が表示される。
外側撮像部D23および内側撮像部D24は、情報処理部D31に接続される。外側撮像部D23および内側撮像部D24は、情報処理部D31の指示に従って画像を撮像し、撮像した画像データを情報処理部D31に出力する。例えば、情報処理部D31は外側撮像部D23および内側撮像部D24のいずれか一方に対して撮像指示を行い、撮像指示を受けた撮像部が画像を撮像して画像データを情報処理部D31に送る。例えば、ユーザによるタッチパネルD13を用いたタッチ操作によって使用する撮像部が選択される。撮像部が選択されたことを情報処理部D31(CPUD311)が検知し、情報処理部D31が外側撮像部D23または内側撮像部D24に対して撮像指示を行う。
3D調整スイッチD25は、情報処理部D31に接続される。3D調整スイッチD25は、スライダD25aの位置に応じた電気信号を情報処理部D31に送信する。
また、3DインジケータD26は、情報処理部D31に接続される。情報処理部D31は、3DインジケータD26の点灯を制御する。本実施形態では、情報処理部D31は、上側LCDD22が立体表示モードである場合、3DインジケータD26を点灯させる。以上がゲーム装置D10の内部構成の説明である。
また、情報処理部D31には、角速度センサD46が接続される。角速度センサD46は、各軸(x軸、y軸、z軸)周りの角速度を検出する。ゲーム装置D10は、角速度センサD46が逐次検出する角速度に基づいて、実空間におけるゲーム装置D10の姿勢を算出することができる。具体的には、ゲーム装置D10は、角速度センサD46によって検出された各軸周りの角速度を時間で積分することによって、各軸周りのゲーム装置D10の回転角を算出することができる。
(ゲーム処理の概要)
次に、本実施形態に係るゲーム装置D10において実行されるゲームの概要について説明する。本実施形態に係るゲームでは、実空間の平面(例えば、テーブル)上にマーカが載置され、当該マーカを外側撮像部D23を用いて撮像した場合に、釣りざおと仮想オブジェクトとしての魚とが、実空間を撮像した実画像に重畳されて上側LCDD22に表示される。そして、ユーザが所定の操作を行うと、釣り糸の先端部分が上記平面に接触し、実空間の平面が波打つような様子が上側LCDD22に表示される。以下では、まず、ゲーム装置D10に表示される画像について説明した後、実空間の平面が波打つような表示をさせるための処理について、説明する。
図83は、本実施形態に係るゲームが実行された場合において、実空間に予め配置されたマーカD61を外側撮像部D23で撮像したときに上側LCDD22に表示される画像の一例を示す図である。
図83に示すように、外側撮像部D23の撮像方向の実空間の平面(テーブル等(図示せず))上には、マーカD61が配置される。マーカD61は、長方形の紙であって、その中心に矢印が描かれている。マーカD61の中心に描かれた矢印の方向は、マーカD61の長辺と平行である。ゲーム装置D10の情報処理部D31(CPUD311)は、外側撮像部D23によって撮像された画像に対して、例えばパターンマッチング等の画像処理を行うことによって、当該画像に含まれるマーカD61を検出することができる。外側撮像部D23によって撮像された画像中にマーカD61が検出された場合、上側LCDD22には、釣りざおオブジェクトD51および魚オブジェクトD52が表示される。具体的には、マーカD61が検出された場合、上側LCDD22には、外側撮像部D23によって撮像された実画像(マーカD61と背景を含む実空間を撮像した画像)に、釣りざおオブジェクトD51および魚オブジェクトD52が重畳表示される。外側撮像部D23によって撮像された画像中にマーカD61が検出されない場合は、上側LCDD22にマーカD61が検出されていないことを示すメッセージが表示されて、釣りざおオブジェクトD51は表示されない。
外側撮像部D23は、ユーザの左目に視認される左目用実画像と、ユーザの右目に視認される右目用実画像とを撮像し、上側LCDD22には、これら2つの画像が表示される。従って、図83に示す上側LCDD22に表示された画像は、立体視可能な画像(立体画像)である。
図83に示す画像が上側LCDD22に表示された場合において、ユーザが所定の操作を行うと、釣りざおオブジェクトD51の釣り糸の先端部分が下方に移動して、マーカD61が載置された平面と接触し、当該平面が波打つような画像が表示される。所定の操作としては、例えば、ゲーム装置D10の外側撮像部D23をマーカD61に近づけたり、ゲーム装置D10をマーカD61が載置された平面に平行になるように傾けたりする操作である。
図84は、ユーザが所定の操作を行った場合に、マーカD61が載置された平面が波打つ様子を示した図である。図84に示すように、ユーザが所定の操作を行うと、上側LCDD22には、マーカD61が載置された実空間の平面が波打つような画像が表示される。具体的には、外側撮像部D23によって左目用実画像と右目用実画像とが撮像され、当該撮像された2つの画像がそれぞれ変形されるため、実空間の平面が立体的に波打つように表示される。
なお、マーカD61には、マーカ座標系が設定される。図85は、マーカ座標系の定義を示す図である。図85に示すように、マーカ座標系は、マーカD61の中心を原点としたXYZ座標系によって定義される。マーカD61の矢印と同じ方向(前方向)にZ軸、当該矢印の方向を基準として右向きに(右方向)にX軸、マーカD61に対して垂直上向き(上方向)にY軸が設定される。このように、実空間に配置されたマーカD61を基準として仮想空間の座標系(マーカ座標系)が定義されることにより、実空間と仮想空間とを対応付けることができる。
上記魚オブジェクトD52は、マーカ座標系で定義された仮想空間に設定される。従って、ゲーム装置D10(外側撮像部D23)の位置や姿勢を変化させると、魚オブジェクトD52の見え方も変化する。例えば、ユーザがマーカD61を中心としてゲーム装置D10を90度回転させると(Y軸周りにゲーム装置D10を90度回転させると)、魚オブジェクトD52は90度回転して表示される。従って、ユーザは、魚オブジェクトD52が実空間に存在するような感覚を得ることができる。なお、ゲーム装置D10の位置を変化させても、釣りざおオブジェクトD51は変化しない(ユーザが釣りざおオブジェクトD51を把持しているように、ユーザの実空間における位置に応じて釣りざおオブジェクトD51の仮想空間における位置も変化する)。
以下、上述のような画像を表示するためにゲーム装置D10において行われる処理について、詳細に説明する。
(ゲーム処理の詳細)
次に、図86から図89を参照して、本実施形態に係る表示処理の詳細について説明する。まず、表示処理の際にメインメモリD32およびVRAMD313(以下、これらを総称してRAMと呼ぶことがある)に記憶される主なデータについて説明する。図86は、ゲーム装置D10のRAMのメモリマップを示す図である。図86に示されるように、RAMには、ゲームプログラムD71、左目用実画像D72L、右目用実画像D72R、仮想モデル情報D73、変形オブジェクト情報D74、左仮想カメラ情報D75L、右仮想カメラ情報D75R、左仮想カメラ画像D76L、右仮想カメラ画像D76R、魚オブジェクト情報D77、マスクオブジェクト情報D78等が記憶される。
ゲームプログラムD71は、後述するフローチャートに示されるゲーム処理を情報処理部D31(CPUD311)に実行させるためのプログラムである。
左目用実画像D72Lは、外側撮像部(左)D23aによって撮像された、実空間を撮像した画像である。
右目用実画像D72Rは、外側撮像部(右)D23bによって撮像された、実空間を撮像した画像である。
仮想モデル情報D73は、後述する仮想モデルD55(図91参照)に関連する情報である。具体的には、仮想モデル情報D73は、平板状のポリゴンを示すデータであり、頂点P(i)(i=1〜n)を示す情報である。後述するように、仮想モデルD55の各点Pは、マーカ座標系の座標値で表される。
変形オブジェクト情報D74は、平板状の仮想モデルD55を変形した変形オブジェクトD56(図92参照)に関連する情報である。具体的には、変形オブジェクト情報D74は、頂点Q(i)(i=1〜n)および当該頂点Q(i)の法線ベクトルN(i)を示す情報である。変形オブジェクトD56の各点Qは、マーカ座標系の座標値で表される。
左仮想カメラ情報D75Lは、仮想空間のおける左仮想カメラD53a(図90参照)の位置および姿勢を表す情報である。具体的には、左仮想カメラ情報D75Lは、左目用実画像D72LにおけるマーカD61の位置および姿勢に基づいて算出される行列である。
右仮想カメラ情報D75Rは、仮想空間のおける右仮想カメラD53b(図90参照)の位置および姿勢を表す情報である。具体的には、右仮想カメラ情報D75Rは、右目用実画像D72RにおけるマーカD61の位置および姿勢に基づいて算出される行列である。
左仮想カメラ画像D76Lは、左仮想カメラD53aによって変形オブジェクトD56を撮像した画像である。
右仮想カメラ画像D76Rは、右仮想カメラD53bによって変形オブジェクトD56を撮像した画像である。
魚オブジェクト情報D77は、仮想空間に配置される魚オブジェクトD52に関する情報であり、魚オブジェクトD52の位置や形状を示す情報である。
マスクオブジェクト情報D78は、仮想空間に配置される魚オブジェクトD52が所定の方向から見えないようにマスクするためのマスクオブジェクトD57(図98参照)に関する情報である。
(メインフローの説明)
次に、本実施形態に係るゲーム処理の詳細について、図87から図89を参照して説明する。図87は、本実施形態に係るゲーム処理の詳細を示すメインフローチャートである。ゲーム装置D10の電源が投入されると、ゲーム装置D10の情報処理部D31(CPUD311)は、図示しないROMに記憶されている起動プログラムを実行し、これによってメインメモリD32等の各ユニットが初期化される。次に、不揮発性メモリ(外部メモリD44等;コンピュータ読み取り可能な記憶媒体)に記憶されたゲームプログラムがRAM(具体的には、メインメモリD32)に読み込まれ、情報処理部D31のCPUD311によって当該プログラムの実行が開始される。図87のフローチャートに示す処理は、以上の処理が完了した後に情報処理部D31(CPUD311又はGPUD312)によって行われる。
なお、図87では、本発明に直接関連しない処理については記載を省略する。また、図87では、外側撮像部D23によって実空間に存在するマーカD61が撮像されたことを前提として説明する。また、図87に示すステップSD2〜ステップSD10の処理ループは、1フレーム(例えば1/30秒又は1/60秒。フレーム時間という)毎に繰り返し実行される。
まず、ステップSD1において、情報処理部D31は、仮想モデルD55等を設定する。具体的には、情報処理部D31は、仮想モデルD55を表す各点Pの座標(マーカ座標系における座標)を予め定められた値に設定して、RAMに記憶する。具体的には、各点Pは、マーカ座標系のXZ平面上に設定される。また、情報処理部D31は、変形オブジェクトD56を表す各点Qの座標を予め定められた値(点Pと同じ値)に設定して、RAMに記憶する。また、情報処理部D31は、仮想モデルD55の端部にマスクオブジェクトD57を設定する。
図91は、仮想モデルD55を示す図である。図91に示すように、仮想モデルD55は、n個の頂点Pによって構成される平板状のポリゴンであり、マーカ座標系(XYZ座標系)のXZ平面(実空間におけるマーカD61が載置された平面)上に配置される。ステップSD1の後、情報処理部D31は、次にステップSD2の処理を実行する。
ステップSD2において、情報処理部D31は、実カメラ画像を取得する。具体的には、情報処理部D31は、外側撮像部(左)D23aによって撮像された左目用実画像D72Lを取得して、RAMに記憶する。また、情報処理部D31は、外側撮像部(右)D23bによって撮像された右目用実画像D72Rを取得して、RAMに記憶する。次に、情報処理部D31は、ステップSD3の処理を実行する。
ステップSD3において、情報処理部D31は、マーカ認識処理を実行する。マーカ認識処理は、ステップSD2で取得した左目用実画像D72Lおよび右目用実画像D72Rを用いて、2つの画像に含まれるマーカD61を認識して、仮想カメラ(左仮想カメラD53aおよび右仮想カメラD53b)を設定する処理である。ステップSD3におけるマーカ認識処理の詳細を、図88を参照して説明する。
図88は、マーカ認識処理(ステップSD3)の詳細を示すフローチャートである。
ステップSD21において、情報処理部D31は、実カメラとマーカとの位置関係を算出する。具体的には、情報処理部D31は、まず、パターンマッチング手法等によって左目用実画像D72Lに含まれるマーカを認識する。そして、情報処理部D31は、左目用実画像D72Lに含まれるマーカの当該左目用実画像D72Lにおける位置や大きさ、形状、および、マーカの矢印の方向等に基づいて、外側撮像部(左)D23aと実空間に存在するマーカD61との位置関係を算出する。ここで、外側撮像部(左)D23aとマーカD61との位置関係とは、マーカD61および外側撮像部(左)D23aの何れか一方を基準とした場合の他方の3次元の位置および姿勢である。
図90は、マーカD61と外側撮像部(左)D23aとの位置関係を示す図である。図90に示すように、上記位置関係は、マーカD61に対する外側撮像部(左)D23aの相対的な位置および姿勢である。同様に、情報処理部D31は、右目用実画像D72Rを用いて、外側撮像部(右)D23bと実空間に存在するマーカD61との位置関係を算出する。ここでは、マーカD61を基準とした外側撮像部(左)D23aおよび外側撮像部(右)D23bの相対的な位置および姿勢が行列としてそれぞれ算出される。
より具体的には、ステップSD21においては、マーカの認識結果に基づいて、マーカ座標系が設定されるとともに、マーカD61と外側撮像部(左)D23aとの位置関係が算出される(図90参照)。図90に示すように、マーカ座標系の原点は、マーカD61の中心に設定される。また、マーカ座標系のZ軸は、マーカD61の矢印の方向と平行に設定され(マーカD61の長辺と平行に設定され)、マーカ座標系のX軸は、当該矢印の方向と垂直であって、当該矢印の方向を基準として右向きに設定される(マーカD61の短辺と平行に設定される)。また、Y軸は、マーカD61に対して垂直上向きに設定される(長方形のマーカD61の上向きの法線方向に設定される)。マーカ座標系は、仮想空間を定義する座標系であり、実空間と仮想空間とを対応付ける。すなわち、マーカ座標系における原点は、仮想空間の原点であって、実空間におけるマーカD61の中心でもある。
そして、マーカD61に対する外側撮像部(左)D23aの相対的な位置および姿勢を表す行列が算出される。図90に示すように、外側撮像部(左)D23aの位置および姿勢を表す行列は、仮想空間におけるマーカ座標系で表された座標を、外側撮像部(左)D23aの位置および姿勢を基準とした外側撮像部(左)座標系で表される座標へと変換するための座標変換行列である。ステップSD21においては、左目用実画像D72Lに含まれるマーカに基づいて外側撮像部(左)D23aの位置および姿勢を表す行列が算出され、右目用実画像D72Rに含まれるマーカに基づいて外側撮像部(右)D23bの位置および姿勢を表す行列が算出される。
なお、外側撮像部(左)D23aおよび外側撮像部(右)D23bは、これらの撮像方向が平行で、かつ、撮像方向に対して回転しないようにして配設されている。すなわち、外側撮像部(左)D23aの姿勢と外側撮像部(右)D23bの姿勢とは常に一致する。また、外側撮像部(左)D23aと外側撮像部(右)D23bとは、所定の間隔で配置されている。このため、外側撮像部(左)D23aおよび外側撮像部(右)D23bの取りつけ誤差が全くないと仮定すると、例えば、左目用実画像D72Lに基づいて外側撮像部(左)D23aの位置および姿勢が算出されると、右目用実画像D72Rを用いなくても、外側撮像部(右)D23bの位置および姿勢は算出可能である。また、外側撮像部(左)D23aおよび外側撮像部(右)D23bの取りつけ誤差を考慮して、当該誤差を求めるために、左目用実画像D72Lに基づいて外側撮像部(左)D23aの位置および姿勢を算出し、右目用実画像D72Rに基づいて外側撮像部(右)D23bの位置および姿勢を算出してもよい。例えば、一定期間、左目用実画像D72Lおよび右目用実画像D72Rに基づいて、外側撮像部(左)D23aおよび外側撮像部(右)D23bの位置等をそれぞれ算出して上記誤差を算出してもよい。そして、左目用実画像D72L(又は右目用実画像D72R)を用いて外側撮像部(左)D23aの位置および姿勢を算出するとともに、当該算出した外側撮像部(左)D23aの位置および姿勢と上記誤差とに基づいて、外側撮像部(右)D23bの位置および姿勢を算出してもよい。ステップSD21の後、情報処理部D31は、次にステップSD22の処理を実行する。
ステップSD22において、情報処理部D31は、左右の仮想カメラの位置および姿勢を決定する。ここでは、左右の仮想カメラの位置および姿勢は、外側撮像部D23の位置および姿勢と一致する。すなわち、左仮想カメラD53aの仮想空間における位置および姿勢は、外側撮像部(左)D23aの位置および姿勢と一致するように設定される(図90参照)。また、右仮想カメラD53bの仮想空間における位置および姿勢は、外側撮像部(右)D23bの位置および姿勢と一致するように設定される。具体的には、左仮想カメラD53aの位置および姿勢は、行列(左ビュー行列)として表され、ステップSD21で算出された外側撮像部(左)D23aの位置および姿勢を表す行列が、左仮想カメラ情報D75LとしてRAMに保存される。同様に、右仮想カメラD53bの位置および姿勢は、行列(右ビュー行列)として表され、ステップSD21で算出された外側撮像部(右)D23bの位置および姿勢を表す行列が、右仮想カメラ情報D75RとしてRAMに保存される。なお、上述のように外側撮像部(左)D23aの姿勢と外側撮像部(右)D23bの姿勢とは常に一致するため、左仮想カメラD53aの姿勢と右仮想カメラD53bの姿勢とも一致する。ステップSD22の処理の後、情報処理部D31は、マーカ認識処理を終了する。
図87に戻り、情報処理部D31は、ステップSD3の処理の後、ステップSD4の処理を実行する。
ステップSD4において、情報処理部D31は、魚オブジェクトD52を仮想空間に設定する。具体的には、情報処理部D31は、仮想モデルD55よりもY軸負方向の位置に魚オブジェクトD52を配置する。なお、魚オブジェクトD52は、所定の規則に従って、仮想空間内を移動する。次に、情報処理部D31は、ステップSD5の処理を実行する。
ステップSD5において、情報処理部D31は、変形オブジェクトを変形させる。図92は、変形オブジェクトD56を示す図である。変形オブジェクトD56は、上記仮想モデルD55を変形させたオブジェクトである。図92に示すように、変形オブジェクトD56は、上記仮想モデルD55の各点Pをマーカ座標系の上下方向(Y軸正方向または負方向)に移動させた場合に生成されるオブジェクトである。具体的には、情報処理部D31は、変形オブジェクトD56の頂点Q(i)(i=1〜n)について、所定のパターンで上下方向に移動させる。例えば、情報処理部D31は、マーカ座標系の所定点から各頂点Qまでの距離に応じて、移動方向(Y軸正方向または負方向)および移動距離を示す移動ベクトルを頂点Q毎に決定する。そして、情報処理部D31は、現在の各頂点Qの座標に決定した各移動ベクトルを加えることにより、各頂点Qを移動させる(各頂点Qの座標値を更新して、RAMに記憶する)。
なお、ステップSD5において、情報処理部D31は、変形オブジェクトD56の端部を除く点のみを移動させる。すなわち、図92に示す変形オブジェクトD56の境界(変形オブジェクトD56の外縁)の各頂点の座標は、変化しない。逆に、変形オブジェクトD56の境界を変形させた場合において、後述するステップSD7やSD8において変形オブジェクトD56を仮想カメラで撮像すると、当該仮想カメラで撮像した画像と実画像と重ね合わせた場合に、境界部分の整合性が保たれないため、不自然な画像となることがある。具体的には、境界部分が大きく変形すると、変形オブジェクトD56の外側の境界部分近傍では変形せず、変形オブジェクトD56の境界部分が変形するため、当該境界部分において不連続となり、違和感のある画像となる。しかしながら、本実施形態では、変形オブジェクトD56の境界を変形させないため、境界部分においても自然な画像となる。
情報処理部D31は、次にステップSD6の処理を実行する。
ステップSD6において、情報処理部D31は、各頂点Qの法線を算出する。ここでは、情報処理部D31は、ステップSD5で更新した頂点Q(i)の法線ベクトルN(i)を算出し、RAMに記憶する。情報処理部D31は、次にステップSD7の処理を実行する。
ステップSD7において、情報処理部D31は、左仮想カメラ画像生成処理を実行する。ステップSD7における左仮想カメラ画像生成処理の詳細を、図89を参照して説明する。
図89は、左仮想カメラ画像生成処理(ステップSD7)の詳細を示すフローチャートである。
まず、ステップSD31において、情報処理部D31は、変数iを0にセットしてRAMに記憶する。次に、情報処理部D31は、ステップSD32の処理を実行する。
ステップSD32において、情報処理部D31は、仮想モデルD55の頂点P(i)のテクスチャ座標T(i)を算出する。ここでは、仮想空間に配置された仮想モデルD55の頂点P(i)(マーカ座標系)の左目用実画像D72Lにおける位置(T(i))が算出される。
図93は、頂点P(i)のテクスチャ座標T(i)を示す図である。図93に示すように、テクスチャ座標T(i)は、左目用実画像D72L上の位置を示す座標である。具体的には、情報処理部D31は、マーカ座標系で表された仮想モデルD55の頂点P(i)に、左仮想カメラD53aの左ビュー行列(ステップSD3で算出された行列;左仮想カメラ情報D75L)、および、射影行列をかけることによって上側LCDD22の表示上の座標(上側LCDD22の画面の左下を原点とする座標)を求める。そして、情報処理部D31は、求められた表示上の座標に所定の変換を行うことにより、左目用実画像D72L上の座標T(i)(左目用実画像D72Lの左下を原点とした位置)を算出する。図93に示すように、左目用実画像D72Lは、上側LCDD22の画面サイズよりも大きく設定されているため、表示上の座標を左目用実画像D72L上(TxTy座標系)の座標に変換することにより、テクスチャ座標Tが求められる。次に、情報処理部D31は、ステップSD33の処理を実行する。
ステップSD33において、情報処理部D31は、変数iをインクリメントし、次に、ステップSD34の処理を実行する。
ステップSD34において、情報処理部D31は、iがnと等しいか否かを判定し、判定結果が肯定の場合は、次にステップSD35の処理を実行する。判定結果が否定の場合は、情報処理部D31は、ステップSD32の処理を再び実行する。ステップSD32〜SD34の処理が繰り返し実行されることによって、仮想モデルD55の全ての頂点Pについてテクスチャ座標Tが求められる。
ステップSD35において、情報処理部D31は、変形オブジェクトD56に左目用実画像D72Lの各テクスチャ座標に対応する領域の画像をテクスチャとして適用して、左仮想カメラで撮像する。具体的には、情報処理部D31は、変形オブジェクトD56の頂点Q(i)にテクスチャ座標T(i)を設定してテクスチャマッピングを行い、左仮想カメラD53aで撮像する。そして、情報処理部D31は、撮像した画像を左仮想カメラ画像D76LとしてRAMに記憶する。ここでの処理は、ステップSD32〜SD34の処理で算出したテクスチャ座標Tに応じた左テクスチャ領域に含まれる画像を、左目用実画像D72Lから切り取って変形オブジェクトD56に貼り付けることに対応する。以下、ステップSD35における処理の概要を図94および図95を用いて説明する。
図94は、ステップSD35における処理を概念的に表す図であり、左目用実画像D72Lから左テクスチャ領域の画像を切り取る様子を示す図である。図94に示すように、テクスチャ座標T(i)に対応する左テクスチャ領域の画像ai(テクスチャ座標T(i)を含む平行四辺形の画像)が、左目用実画像D72Lから切り取られる(コピーされる)。次に、切り取られた各画像が変形オブジェクトD56に貼り付けられる。
図95は、ステップSD35における処理を概念的に表す図であり、図94に示す切り取られた左テクスチャ領域の画像aiを変形オブジェクトD56に張り付ける様子を示す図である。図95に示すように、切り取られた左テクスチャ領域の画像aiが変形オブジェクトD56にテクスチャとして適用されて左仮想カメラD53aで撮像されると、当該画像aiは、変形する(画像ai’)。このようにして、切り取られた各左テクスチャ領域の画像が変形オブジェクトD56に張り付けられる。
ステップSD35で生成される左仮想カメラ画像D76Lは、左目用実画像D72Lにおける仮想モデルD55に対応する領域(左目用実画像D72Lのうち、仮想モデルD55を左仮想カメラD53aで撮像した場合のレンダリング画像上の当該仮想モデルD55の位置および輪郭に対応する領域)が変形した画像である。上述のように仮想モデルD55は、マーカ座標系のXZ平面上に配置される(マーカD61が載置された実空間の平面(テーブル)上に配置される)。このため、左仮想カメラ画像D76Lは、XZ平面(実空間の平面)が変形したような画像となる。
なお、ステップSD35においては、変形オブジェクトD56の形状に応じて、影が付される。上述のようにステップSD6において変形オブジェクトD56の各頂点Qの法線ベクトルが算出されているため、仮想光源で変形オブジェクトD56を照らしたときに生成される影を計算することができる。また、ステップSD35においては、魚オブジェクトD52も左仮想カメラD53aで撮像されるため、上記左仮想カメラ画像D76Lには、魚オブジェクトD52の画像も含まれる。
以上のようにして、左仮想カメラ画像D76Lを生成した後、情報処理部D31は、左仮想カメラ画像生成処理を終了する。
図87に戻り、情報処理部D31は、次にステップSD8の処理を実行する。ステップSD8において、情報処理部D31は、右仮想カメラ画像生成処理を実行する。右仮想カメラ画像生成処理は、ステップSD7と同様の処理であるが、ステップSD8では、右目用実画像D72Rから切り取られたテクスチャ領域の画像が変形オブジェクトD56にテクスチャとして適用されて、右仮想カメラD53bで撮像される。
ステップSD8では、まず、情報処理部D31は、右目用実画像D72Rにおけるテクスチャ座標Tを算出する。より具体的には、マーカ座標系で表された仮想モデルD55の各頂点Pに、右仮想カメラD53bの右ビュー行列(ステップSD3で算出された行列;右仮想カメラ情報D75R)、および、射影行列をかけて上側LCDD22の表示上の座標を求め、右目用実画像D72R上のテクスチャ座標を求める。そして、情報処理部D31は、変形オブジェクトD56の各頂点にテクスチャ座標を設定してテクスチャマッピングを行い、右仮想カメラD53bで撮像する(右目用実画像D72Rから各右テクスチャ領域の画像を切り取って、変形オブジェクトD56に貼り付ける)。このようにして、情報処理部D31は、右仮想カメラ画像D76Rを生成し、RAMに記憶する。なお、ステップSD35と同様に、魚オブジェクトD52も右仮想カメラD53bで撮像されるため、上記右仮想カメラ画像D76Rには、魚オブジェクトD52の画像も含まれる。
図96は、右目用実画像D72Rから右テクスチャ領域の画像を切り取る様子を示す図である。右目用実画像D72Rと左目用実画像D72Lとは視差があるため、右目用実画像D72Rは左目用実画像D72Lとは異なる画像である。図94および図96に示すように、仮想モデルの頂点P(i)の右目用実画像D72R上の位置T(i)は、左目用実画像D72L上の位置T(i)とは異なる。従って、右目用実画像D72Rから切り取られる右テクスチャ領域の画像biは、左目用実画像D72Lから切り取られる左テクスチャ領域の画像aiとは異なる形状となる。例えば、右テクスチャ領域の画像biは、左テクスチャ領域の画像aiよりも歪んだ形状となる(図94に示す画像aiと図96に示す画像biとを比較すると、画像aiの方が、画像biよりも正方形に近い形状となっている)。そして、右目用実画像D72Rから切り取られた各右テクスチャ領域の画像が、変形オブジェクトD56にテクスチャとして適用されて右仮想カメラD53bで撮像されるため、上記左テクスチャ領域の画像と同様に、各右テクスチャ領域の画像は変形する。図97は、図96に示す切り取られた右テクスチャ領域の画像biを変形オブジェクトD56に張り付ける様子を示す図である。図97に示すように、切り取られた右テクスチャ領域の画像biが変形オブジェクトD56にテクスチャとして適用されて右仮想カメラD53bで撮像されると、当該画像biは、変形する(画像bi’)。このようにして、右目用実画像D72Rから切り取られた各右テクスチャ領域の画像が変形オブジェクトD56に張り付けられる。
ステップSD8で生成される右仮想カメラ画像D76Rは、ステップSD7で生成された左仮想カメラ画像D76Lと同様、XZ平面(実空間の平面)が変形したような画像である。右仮想カメラ画像D76Rは、左仮想カメラ画像D76Lとは異なる画像であり、これらの画像には視差がある。
ステップSD8の後、情報処理部D31は、次にステップSD9の処理を実行する。
ステップSD9において、情報処理部D31は、実画像と仮想カメラ画像とを重ね合わせて、重畳画像を生成する。具体的には、情報処理部D31は、ステップSD2で取得した左目用実画像D72Lと、ステップSD7で生成した左仮想カメラ画像D76Lとを重ね合わせた左目用重畳画像を生成する。また、情報処理部D31は、ステップSD2で取得した右目用実画像D72Rと、ステップSD8で生成した右仮想カメラ画像D76Rとを重ね合わせた右目用重畳画像を生成する。次に、情報処理部D31は、ステップSD10の処理を実行する。
ステップSD10において、情報処理部D31は、出力処理を実行する。出力処理が実行されることによって、上側LCDD22に立体視可能な画像が表示される。具体的には、情報処理部D31は、ステップSD9で生成した2つの重畳画像を上側LCDD22に出力する。上側LCDD22に表示された左目用重畳画像は視差バリアを介してユーザの左目で視認され、右目用重畳画像は視差バリアを介してユーザの右目で視認される。これにより、ユーザは立体感のある画像を視認することができる。ステップSD10の後、情報処理部D31は、ステップSD2の処理を再び実行する。
なお、上記ステップSD7およびSD8においては、仮想カメラの位置や姿勢に応じて、魚オブジェクトD52はマスクオブジェクトD57によってマスクされて撮像されない場合がある。図98は、マスクオブジェクトD57によって魚オブジェクトD52がマスクされる場合を示す図であり、仮想空間をマーカ座標系のX軸に平行な方向から見た場合において、魚オブジェクトD52と仮想カメラの位置関係を示す図である。マスクオブジェクトD57は、仮想モデルD55(変形オブジェクトD56)の端部に設定される面状の仮想的なオブジェクトであり、魚オブジェクトD52を非表示にする、上側LCDD22には表示されないオブジェクトである。図98に示すように、仮想カメラPc(左仮想カメラ又は右仮想カメラ)の位置から魚オブジェクトD52を見た場合、魚オブジェクトD52は、マスクされず上側LCDD22に表示される。しかしながら、仮想カメラPc’の位置から魚オブジェクトD52を見た場合、魚オブジェクトD52は、マスクオブジェクトD57によってマスクされて、上側LCDD22には表示されない。マスクオブジェクトD57が変形オブジェクトD56の端部に配置されない場合、仮想カメラPc’の位置から魚オブジェクトD52を見ると、変形オブジェクトD56によって実空間の平面が変形しない領域(すなわち、波が発生しない領域)の奥方向に魚オブジェクトD52が見え、違和感のある画像になることがある。また、現実世界においては、水面を見る角度が小さいと(水面を垂直ではなく、水平に近い方向から見ると)、光の反射によって水中の魚を見ることができない。このため、仮想モデルD55(変形オブジェクトD56)の端部にマスクオブジェクトD57を配置して、仮想カメラPc’からは魚オブジェクトD52が見えないようにする。すなわち、仮想カメラと魚オブジェクトD52との間に変形オブジェクトD56が存在しない場合(仮想カメラと魚オブジェクトD52とを結ぶ直線上に変形オブジェクトD56が存在しない場合)、当該魚オブジェクトD52を非表示にする。
以上のように、本実施形態では、マーカD61上にマーカ座標系が設定される。当該マーカ座標系のXZ平面(マーカD61が載置された平面)に平板状の仮想モデルD55が配置され、左目用実画像D72Lにおける当該仮想モデルD55に対応する領域が左テクスチャ領域として設定される(左テクスチャ領域の画像として切り出される)。そして、仮想モデルD55を変形した変形オブジェクトD56に、左テクスチャ領域の画像がテクスチャとして適用されて、左仮想カメラで撮像されることにより、左仮想カメラ画像が生成される。また、右目用実画像D72Rにおける仮想モデルD55に対応する領域が右テクスチャ領域として設定される(右テクスチャ領域の画像として切り出される)。そして、仮想モデルD55を変形した変形オブジェクトD56に、右テクスチャ領域の画像がテクスチャとして適用されて、右仮想カメラで撮像されることにより、右仮想カメラ画像が生成される。これにより、実空間上の平面が変形したような画像を生成することができ、上記のようにあたかもマーカD61が配置された実空間の平面が波打つような様子を表示することができる。
また、本実施形態では、実空間に配置されたマーカD61上にマーカ座標系が設定され、仮想カメラが実カメラの位置および姿勢に対応して設定される。これにより、仮想空間に存在するオブジェクトがあたかも実空間に存在するような感覚(拡張現実感)を与えることができる。
また、本実施形態では、左目用実画像D72Lおよび右目用実画像D72Rからそれぞれテクスチャ領域が設定されて(それぞれテクスチャ画像が切り出されて)、左仮想カメラ画像および右仮想カメラ画像が生成される。このため、何れか一方の実画像からそれぞれ左仮想カメラ画像および右仮想カメラ画像を生成する場合よりも、解像度の高い画像となる。すなわち、例えば、左目用実画像D72Lから左テクスチャ領域の画像が切り出されて、当該左テクスチャ領域の画像を用いて右仮想カメラ画像を生成すると、左目用実画像D72Lおよび右目用実画像D72Rは視差があるため、左テクスチャ領域の画像を大きく変形させる必要があり、より多くの画素情報が失われる。
図99は、左テクスチャ領域の画像を用いて右仮想カメラ画像を生成した場合に画素情報が失われることを説明するための図である。図99に示すように、左テクスチャ領域の画像を変形して左仮想カメラ画像を生成する場合、当該左テクスチャ領域の画像を変形する度合いは比較的小さい。また、同様に、右テクスチャ領域の画像を変形して右仮想カメラ画像を生成する場合、当該左テクスチャ領域の画像を変形する度合いは比較的小さい。しかしながら、左テクスチャ領域の画像を変形して右仮想カメラ画像を生成する場合、当該左テクスチャ領域の画像を大きく変形させる必要がある。画像を伸縮させて変形させると、当該画像の解像度は低くなる。しかしながら、本実施形態では、左目用実画像D72Lおよび右目用実画像D72Rからそれぞれテクスチャ画像を切り取るため、このような解像度の低下を防止することができる。
また、本実施形態では、変形オブジェクトD56の端部(境界)が変形しないため、実画像と仮想カメラ画像とが重ね合わされた場合に境界において違和感のない画像にすることができる。すなわち、変形オブジェクトD56の境界が変形すると、当該境界において不連続な画像となることがあるため、実画像と仮想カメラで撮像した画像とを重ね合わせた場合に違和感のある画像になる。また、例えば、変形しない仮想モデルD55に実画像のテクスチャを適用した仮想モデル画像と実画像とを重ね合わせると、重ね合わされた領域は一致する。このため、実画像の一部領域(仮想モデルに対応する領域)が、仮想モデル画像によって完全に遮られるため、重ね合わされた画像には違和感がない。しかしながら、仮想モデルD55を変形させた変形オブジェクトD56が、その境界も含めて変形し、当該変形オブジェクトD56を撮像した変形オブジェクト画像を実画像に重ね合わせると、変形オブジェクト画像によって遮られない実画像の領域が発生する。このため、実画像と変形オブジェクト画像とを重ね合わせた画像には、同じ領域が二重に存在する場合があり、不自然な画像となる(例えば、変形オブジェクトが仮想モデルよりも小さく変形した場合)。しかしながら、本実施形態では、変形オブジェクトD56の境界部分は変形しないため、このような変形オブジェクトによって遮られない領域は発生しないため、同じ領域が二重に表示されることなく、自然な画像となる。
また、左仮想カメラで変形オブジェクトを撮像するときは左目用実画像をテクスチャとして適用し、右仮想カメラで変形オブジェクトを撮像するときは右目用実画像をテクスチャとして適用することにより、境界における連続性をより保つことができる。すなわち、例えば、左目用実画像から切り取られたテクスチャを変形オブジェクトに適用して右仮想カメラで撮像した右仮想カメラ画像を、右目用実画像に重畳した場合、右目用実画像の背景部分と、変形オブジェクトに対応する部分とがずれることがある(例えば、一方の実カメラからしか見えない領域が存在する場合など)。このため、一方の実画像から両方のテクスチャを生成すると、境界における連続性を保つことができない。しかしながら、本実施形態では、両方の実画像からそれぞれテクスチャを生成するため、境界における連続性を保つことができる。
(変形例)
なお、本実施形態では、マーカD61が載置された平面に平板状の仮想モデルを配置して、当該平面が波打つような表示を行った。他の実施形態では、仮想モデルは平面状ではなく、曲面状であってもよい(立体物でもよい)。例えば、実空間に存在する立体物(コップや人の顔でもよい)について、当該立体物に沿うように仮想モデルを配置し、仮想モデルを変形させることによって、当該実空間上の立体物が変形する様子が表示されてもよい。例えば、赤外線等で深度(カメラの奥方向の距離)を測定可能なカメラを用いて、実空間に存在する立体物の形状を認識し、認識した形状の仮想モデルを仮想空間に設定することにより、立体物を変形させてもよい。あるいは、外側撮像部D23によって撮像される2つの画像の視差に基づいて、カメラの奥方向の距離を算出してもよい。また、上記方法を用いて、実空間の壁が変形する様子を表示したり、カーテンが揺れる様子を表示したりしてもよい。
また、他の実施形態では、上述した方法を用いて、実空間の平面や曲面等(テーブルや人の顔等)ではなく、実空間の一部の空間が変形する様子が表示されてもよい。
また、本実施形態では、釣りゲームを例にして実空間の平面を水面のように変形させたが、上述した処理はどのようなゲームにも適用可能である。
また、本実施形態では、仮想モデルを変形した変形オブジェクトに左右の実画像から切り出したテクスチャ領域の画像(テクスチャ画像)を張り付けた。他の実施形態では、仮想モデルは変形しなくてもよい。すなわち、他の実施形態では、左目用実画像から取得した左テクスチャ画像を仮想モデルにテクスチャとして適用して左仮想カメラで撮像し、右目用実画像から取得した右テクスチャ画像を仮想モデルにテクスチャとして適用して右仮想カメラで撮像してもよい。このようにして、左右の実画像からテクスチャ画像をそれぞれ切り出すことにより、実カメラで撮像した画像を仮想モデルのテクスチャとして利用して、仮想モデルの立体視画像を生成することができる。仮想モデルとして表示することで、仮想カメラによる撮影方向を変更したり、ライティングの色や方向を変更したりと言った処理が可能となる。この場合において、本実施形態では左右の実画像からテクスチャ画像をそれぞれ切り出してテクスチャとして適用する。このため、どちらか一方の画像からテクスチャ画像を切り出し、当該切り出したテクスチャ画像をテクスチャとして適用して左右の仮想カメラでそれぞれ撮像する場合に生じる解像度の低下を防止することができる。
また、本実施形態では、マーカD61を外側撮像部D23で撮像することによって、外側撮像部D23とマーカD61との位置関係(相対的な位置および姿勢)を算出した。そして、算出した位置関係に基づいて、仮想空間(マーカ座標系)を設定した。他の実施形態では、マーカD61に限らず、他の物体を撮像画像から認識して、上記位置関係が算出されてもよい。例えば、実空間に存在する所定の物体(例えば、実空間に存在する椅子やテーブル等でもよい)をパターンマッチング等の画像認識により検出し、上記位置関係が算出されて、仮想空間が定義されてもよい。すなわち、他の実施形態では、実空間に存在する特定対象物(上記マーカや所定の物体)を撮像画像から認識して、当該特定対象物と外側撮像部D23との位置関係が算出されてもよい。また、特定対象物は、実カメラによって撮像された画像に基づいて認識されず、他の認識手段(例えば、超音波センサ等でもよい)によって認識されて、当該特定対象物と外側撮像部D23との位置関係が算出されてもよい。
また、他の実施形態では、GPSや加速度センサ、角速度センサ、地磁気センサ等によって、実カメラの位置および姿勢が検出されてもよい。そして、検出された位置および姿勢に基づいて、仮想空間内の仮想カメラの位置および姿勢が設定され、実カメラで撮像した画像と仮想カメラで仮想空間を撮像した画像とを重畳してもよい。例えば、実空間に対応した仮想空間の所定の位置に仮想オブジェクトが配置され、当該仮想空間の所定の位置に対応する実空間の位置を所定の方向から実カメラで撮影してもよい。この場合、GPSや姿勢検出手段(加速度センサや角速度センサ、地磁気センサ等)によって実カメラの位置および姿勢を検出することができ、当該実カメラの位置および姿勢に一致するように仮想空間に仮想カメラを設定することができる。
また、本実施形態では、ビデオシースルー方式を用いて拡張現実感を実現した。すなわち、本実施形態では、外側撮像部D23によって撮像された画像と、仮想カメラ(左右の仮想カメラ)によって撮像された画像とが重ね合わされて重畳画像が生成され、当該重畳画像が上側LCDD22に表示された。他の実施形態では、光学シースルー方式により拡張現実感を実現してもよい。例えば、実空間に配置されたマーカを検出するためのカメラを備えたヘッドマウンドディスプレイをユーザが装着し、ユーザはメガネのレンズ部分に相当するディスプレイ部を通して実空間を視認できるようになっている。このディプレイ部は、現実空間を透過してユーザの目に直接導くことが可能な素材によって構成されている。さらに、このディスプレイ部にはコンピュータにより生成した仮想オブジェクトの画像を表示させることができるようになっている。
また、他の実施形態では、上述した撮影処理の方法は、ゲーム装置に限らず任意の電子機器、例えば、PDA(Personal Digital Assistant)や高機能携帯電話、カメラ(装置としてのカメラ)等に適用されてもよい。
また、本実施形態では、表示装置として裸眼で立体視画像を表示可能なLCDが用いられた。他の実施形態では、時分割方式や偏向方式、アナグリフ方式(赤青眼鏡方式)などの眼鏡を用いて立体表示を行うような場合でも、本発明は適用可能である。
また、他の実施形態では、有線や無線等で通信可能に接続された複数の情報処理装置が各処理を分担して処理することにより、上述した表示処理方法を実現する表示処理システムとして構築されてもよい。例えば、外側撮像部D23が情報処理装置と分離された構成であって、外側撮像部D23が情報処理装置に無線等で接続されてもよい。また、情報処理装置と表示装置が分離された構成で、互いに接続されてもよい。また、外側撮像部D23の位置および姿勢が情報処理装置と分離した検出手段によって検出され、当該検出結果が情報処理装置に送信されてもよい。
また、上記実施形態においては、ゲーム装置D10の情報処理部D31が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置D10が備える専用回路によって行われてもよい。
また、上記ゲームプログラム(情報処理プログラム)は、上記メモリに限らず、光ディスクや磁気ディスク等、コンピュータ読み取り可能な記憶媒体に記憶されてゲーム装置D10に提供されてもよい。また、例えば、ネットワーク上のサーバのRAMに上記プログラムが記憶され、ゲーム装置D10が当該ネットワークに接続されて、当該プログラムがゲーム装置D10に提供されてもよい。
(ゲーム装置の構成)
以下、本発明のさらに他の一実施形態に係るゲーム装置について説明する。図100〜図101は、ゲーム装置E1の外観を示す図である。ゲーム装置E1は携帯型のゲーム装置であり、図100〜図101に示すように折り畳み可能に構成されている。ゲーム装置E1は、カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置E1は、交換可能なメモリカード内に記憶されたゲームプログラム、または、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
図100(a)は開状態におけるゲーム装置E1の左側面図であり、図100(b)は開状態におけるゲーム装置E1の正面図であり、図100(c)は開状態におけるゲーム装置E1の右側面図であり、図100(d)は開状態におけるゲーム装置E1の背面図であり、図100(e)は開状態におけるゲーム装置E1の上面図であり、図100(f)は開状態におけるゲーム装置E1の底面図である。図101(a)は閉状態におけるゲーム装置E1の左側面図であり、図101(b)は閉状態におけるゲーム装置E1の正面図であり、図101(c)は閉状態におけるゲーム装置E1の右側面図であり、図101(d)は閉状態におけるゲーム装置E1の背面図であり、図101(e)は閉状態におけるゲーム装置E1の上面図であり、図101(f)は閉状態におけるゲーム装置E1の底面図である。
図100〜図101に示されるように、ゲーム装置E1は、下側ハウジングE2および上側ハウジングE5を有する。下側ハウジングE2と上側ハウジングE5とは、開閉可能(折り畳み可能)に接続されている。本実施形態では、下側ハウジングE2および上側ハウジングE5はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
具体的には、図100〜図101に示されるように、上側ハウジングE5は、略矩形形状の第1部分E6(破線で囲まれる部分)と、当該第1部分E6の底面の中央部から当該底面に対して垂直方向に突起する第1連結部E7とを有する。第1部分E6は上側ハウジングE5のうちの第1連結部E7以外の部分(開いた状態において、正面視で、上側ハウジングE5のうちの第1連結部E7の上端よりも上の部分、閉じた状態において第1連結部E7の下端よりも下の部分)と特定することもできる。また、下側ハウジングE2は、略矩形形状の第2部分E3(破線で
囲まれる部分)と、当該第2部分E3の上方の第2連結部E4とを有する。
第2連結部E4は、その両端部のそれぞれに当該第2部分E3の内側面(上側ハウジングE5と下側ハウジングE2とを折り畳んだ場合に内側となる面)に対して垂直方向に突起する突起部E4aと、前記第1連結部E7を受容する窪み部E4bとを有する(図102(b)参照)。すなわち、図102(b)に示すように、第2連結部E4は、両端に設けられた突起部E4aと窪み部E4bとを含む部分であり、下側ハウジングE2のうち、略矩形形状の第2部分E3の上端よりも上方の部分である。上側ハウジングE5の第1連結部E7が下側ハウジングE2の第2連結部E4の窪み部E4bに受容されて、上側ハウジングE5の第1連結部E7と下側ハウジングE2の第2連結部E4の突起部E4aとが、ヒンジピンE59(図106および図107参照)によって連結されることにより、上側ハウジングE5と下側ハウジングE2とが、折り畳み可能に接続される。上側ハウジングE5と下側ハウジングE2とを折り畳んだ場合において、上側ハウジングE5の上記第1部分E6と下側ハウジングE2の上記第2部分E3とは重なり合う。
一方、第2部分E3は下側ハウジングE2のうちの、正面視で、下側ハウジングE2の突起部E4aの下端よりも下の部分である。そして、下側ハウジングE2の突起部E4aと上側ハウジングE5の突起(第1連結部E7)とが結合されて携帯ゲーム装置E1の折り畳みのための連結部を構成する。より具体的には、下側ハウジングE2の突起部E4aの下端と上側ハウジングE5の突起の下端は一致するように、両突起が結合される。それゆえ、言い換えると、第1部分E6は上側ハウジングE5のうちの連結部よりも開いた状態で上の部分(閉じた状態で下の部分)であり、第2部分E3は下側ハウジングE2のうちの連結部よりも下の部分である。
下側ハウジングE2は、ユーザの両手又は片手で把持される。ゲーム装置E1は、下側ハウジングE2と上側ハウジングE5とを折り畳んだ場合に内側となる内側面を正面にして、下側ハウジングE2が下側に、上側ハウジングE5が上側になるようにユーザに把持される。すなわち、ゲーム装置E1は、ユーザによって使用される際には開状態(図100)にされて、下側ハウジングE2および上側ハウジングE5の内側面が正面になり、かつ、下側ハウジングE2が下側に、上側ハウジングE5が上側になるように把持される(図120参照)。
(下側ハウジングの説明)
まず、図102〜図104を参照して、下側ハウジングE2について説明する。図102(a)は下側ハウジングE2の左側面図であり、図102(b)は下側ハウジングE2の正面図であり、図102(c)は下側ハウジングE2の右側面図であり、図102(d)は下側ハウジングE2の背面図であり、図102(e)は下側ハウジングE2の上面図であり、図102(f)は下側ハウジングE2の底面図である。また、図103は、正面側から見た場合の下側ハウジングE2の分解斜視図である。図104は、背面側から見た場合の下側ハウジングE2の分解斜視図である。
図102〜図104に示すように、下側ハウジングE2は、第5パーツE201、第4パーツE202、および、第6パーツE203によって形成される。第5パーツE201、第4パーツE202、第6パーツE203は、それぞれ一体成形される。第5パーツE201は、下側ハウジングE2の正面(内側面;下側ハウジングE2の第2部分E3の内側面)、第2連結部E4、右側面のうちの正面側部分、左側面のうちの正面側部分、上面のうちの正面側部分、および、底面のうちの正面側部分を構成するパーツである。第4パーツE202は、下側ハウジングE2の右側面のうちの背面側部分、左側面のうちの背面側部分、上面のうちの背面側部分、および、底面のうちの背面側部分を構成するパーツである。第6パーツE203は、下側ハウジングE2の背面を構成する略矩形状の平板状の部材である。第5パーツE201、第4パーツE202、および、第6パーツE203が組み立てられることによって、下側ハウジングE2が形成される。下側ハウジングE2を構成するこれら各パーツE201〜E203の詳細については、後述する。
図102(b)に示すように、下側ハウジングE2の内側面(第2部分E3の内側面)には、下側LCD(Liquid Crystal Display:液晶表示装置)E21、タッチパネルE22、十字キーE23、各操作ボタンE24A〜E24D(操作ボタンユニットE24;図103参照)、アナログキーE25、電源ボタンE26、セレクトボタンE27A、HOMEボタンE27B、および、スタートボタンE27Cが設けられる。また、下側ハウジングE2の右側の第2連結部E4には、お知らせLEDE28Aが設けられる。また、図102(e)に示すように、下側ハウジングE2の上面には、LボタンE29A、RボタンE29B、赤外線通信モジュールE30、タッチペンホルダE31の挿入口、ゲームカードユニットE32にゲームカードを挿入するための挿入口、電源コネクタE33、クレードル接続端子E34が設けられる。また、図102(a)に示すように、下側ハウジングE2の左側面には、音量ボリュームスイッチE35、および、SDカードユニットE36にSDカードを挿入するための挿入口(図示せず)が設けられる。SDカードユニットE36の挿入口は、エラストマーにより形成されるカバーE36aによって覆われている。また、図102(c)に示すように、下側ハウジングE2の右側面には、無線スイッチE37、および、無線LEDE28Bが設けられる。また、図102(f)に示すように、下側ハウジングE2の底面には、電源LEDE28C、充電LEDE28D、および、イヤホンジャックE38が設けられる。上記各部E21〜E38は、下側ハウジングE2内に収納される。また、下側ハウジングE2の内部には、無線通信モジュールE39、マイクE40、および、バッテリーE41(図103および図104参照)、さらに情報処理部E42等が収納される。以下、これら各部の詳細について説明する。
下側LCDE21は横長形状であり、長辺方向が下側ハウジングE2の長辺方向に一致するように配置される。下側LCDE21は下側ハウジングE2の中央に配置される。ゲーム装置E1を使用しない場合には閉状態としておくことによって、下側LCDE21の画面が汚れたり傷ついたりすることを防止することができる。下側LCDE21は、所定の解像度を有する表示装置であり、後述する上側LCDE51とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。
下側LCDE21の画面上には、タッチパネルE22が装着されている。タッチパネルE22は、タッチパネルE22の入力面において入力が行われた位置の座標を検出する。なお、本実施形態では、タッチパネルE22は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネルE22として、下側LCDE21の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネルE22の解像度と下側LCDE21の解像度が一致している必要はない。タッチパネルE22に対する操作を行うために用いられるタッチペン(図示せず)は、タッチペンホルダE31に挿入され収納される。なお、タッチパネルE22に対する入力はタッチペンに限らず、ユーザの指でタッチパネルE22に対する入力をすることも可能である。
下側LCDE21の左側には、十字キーE23が配置され、当該十字キーE23の上方にはアナログキーE25が配置される(図102(b))。より具体的には、アナログキーE25は、下側LCDE21より左側領域の上部領域に設けられ、十字キーE23は下側LCDE21より左側領域の下部領域に設けられる。また、アナログキーE25、および、十字キーE23は、下側ハウジングを把持した左手の親指で操作可能な位置に設計される。アナログキーE25を上部領域に設けたことにより、下側ハウジングE2を把持する左手の親指が自然と位置するところにアナログキーE25が配され、十字キーE23は、左手の親指を少し下にずらした位置に配される(図120参照)。十字キーE23は、十字形状のキーであり、上下左右の方向を指示するために用いられる。十字キーE23は、上下左右の各入力が可能なキーである。また、アナログキーE25は、360度の任意の方向に、下側ハウジングE2の内側面に平行
にスライド可能なキーであり、任意の方向を指示するために用いられる。アナログキーE25および十字キーE23は、ゲーム装置E1が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置E1によって実行される場合、アナログキーE25は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログキーE25のキートップがスライドした方向に応じて移動される。
下側LCDE21の右側には、各操作ボタンE24A〜E24Dが上下左右の位置に十字状に配置される。より具体的には、下側LCDE21の右側領域の上部領域に、各操作ボタンE24A〜E24Dは配置される。各操作ボタンE24A〜E24Dは、ユーザが下側ハウジングE2を把持した場合に、右手の親指で操作可能な位置に設計される。各操作ボタンE24A〜E24Dは、ゲーム装置E1が実行するプログラムに応じた機能が適宜割り当てられる。例えば、各操作ボタンE24A〜E24Dは決定操作やキャンセル操作等に用いられる。また、下側LCDE21の右側下方には、電源ボタンE26が配置される。電源ボタンE26は、ゲーム装置E1の電源をON/OFFまたはスリープ状態に移行するためのボタンである。
下側LCDE21の下側には、セレクトボタンE27A、HOMEボタンE27B、スタートボタンE27Cが配置される。これらのボタンE27A〜E27Cの上部は、一体的な横長のシートキーE27aで覆われている。すなわち、シートキーE27aはこれらのボタンのキートップである。各ボタンE27A〜E27Cは、ゲーム装置E1が実行するプログラムに応じた機能が適宜割り当てられる。例えば、スタートボタンE27Cはゲーム装置E1が実行するゲームを開始する際に用いられ、HOMEボタンは、プレイ中のゲームを中断または中止し、携帯ゲーム装置のメニューに戻る際に用いられる。
また、下側ハウジングE2の正面視右側の第2連結部E4には、お知らせLEDE28Aが設けられる。お知らせLEDE28Aは、ゲーム装置E1が所定の状態になったことをユーザに知らせるために用いられる。例えば、ゲーム装置E1が他の機器との通信によって所定の状態となった場合(例えば、他の機器から無線通信によりメッセージ等のデータを受信した等)、お知らせLEDE28Aが点灯する。
下側ハウジングE2の上面の左端部には、LボタンE29Aが設けられ、下側ハウジングE2の上面の右端部には、RボタンE29Bが配置される。LボタンE29AおよびRボタンE29Bは、ゲーム装置E1が実行するプログラムに応じた機能が適宜割り当てられる。また、下側ハウジングE2の上面には、赤外線通信モジュールE30、タッチペンホルダE31の挿入口、ゲームカードユニットE32にゲームカードを挿入するための挿入口、電源コネクタE33、クレードル接続端子E34が設けられる。赤外線通信モジュールE30は、赤外線通信により他の機器とデータ等を送受信するための通信モジュールである。ゲームカードユニットE32には、不揮発性メモリであるゲームカード(図示せず)が着脱自在に装着される。所定のゲームプログラムが記録されたゲームカードがゲームカードユニットE32に装着されることによって、当該ゲームプログラムが読み込まれて実行される。電源コネクタE33には図示しない電源ケーブルが接続されることによって、ゲーム装置E1への電源の供給およびバッテリーE41への充電が行われる。また、クレードル接続端子E34は、充電や周辺機器との接続等に用いられるクレードル(図示せず)と電気的に接続するための端子である。
下側ハウジングE2の左側面には、音量ボリュームスイッチE35、および、SDカードユニットE36にSDカード(図示せず)を挿入するための挿入口(後述する開口部E202F)が設けられる。音量ボリュームスイッチE35は、上下方向(携帯ゲーム装置E1の使用時の上下方向であり、図102における紙面の上下方向)にスライド可能な操作部を有し、スピーカーE54(図106参照)から出力される音声のボリュームを調整するためのスイッチであ
る。SDカードユニットE36には、不揮発性メモリであるSDカードが着脱自在に装着される。SDカードユニットE36は、SDカードへのデータの読み書きを行う。SDカードユニットE36にSDカードを挿入するための挿入口は、カバーE36aによって覆われている。
下側ハウジングE2の右側面には、無線スイッチE37、および、無線LEDE28Bが設けられる。ゲーム装置E1は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有している。無線スイッチ(無線スライドスイッチ)E37は、上下方向(携帯ゲーム装置E1の使用時の上下方向であり、図102における紙面の上下方向)にスライド可能な操作部を有し、この無線通信の機能を有効/無効にするスイッチである。無線LEDE28Bは、無線通信が確立しているか否かを示し、具体的には無線通信が確立している場合に点灯する。または、無線通信の機能が有効になっている場合に点灯する。
下側ハウジングE2の底面には、電源LEDE28C、充電LEDE28D、および、イヤホンジャックE38が設けられる。電源LEDE28Cは、ゲーム装置E1の電源がONの場合に点灯する。充電LEDE28Dは、ゲーム装置E1が充電されている場合に点灯する。イヤホンジャックE38には、イヤホン(図示せず)が接続される。イヤホンがイヤホンジャックE38に接続されている場合は、ゲーム装置E1はスピーカーE54から音声を出力する代わりに、イヤホンから音声を出力する。
また、図示は省略するが、下側ハウジングE2の内部には、後述する情報処理部E42やメインメモリE43、データ保存用内部メモリE44、RTCE45、加速度センサE46、ジャイロセンサE49、インターフェイス(I/F)回路E47、電源回路E48等が収納される(図122参照)。情報処理部E42は、CPU(Central Processing Unit)E421、GPU(Graphics Procesing Unit)E422、および、VRAM(Video RAM)E423等を実装した半導体チップである。これら情報処理部E42やメインメモリE43等は、例えば、ゲームカードユニットE32の裏側(図104では下側)に配置される。
(上側ハウジングの説明)
次に、図105〜図107を参照して、上側ハウジングE5について説明する。図105(a)は上側ハウジングE5の左側面図であり、図105(b)は上側ハウジングE5の正面図であり、図105(c)は上側ハウジングE5の右側面図であり、図105(d)は上側ハウジングE5の背面図であり、図105(e)は上側ハウジングE5の上面図であり、図105(f)は上側ハウジングE5の底面図である。また、図106は、正面側から見た場合の上側ハウジングE5の分解斜視図である。図107は、背面側から見た場合の上側ハウジングE5の分解斜視図である。
図105〜図107に示すように、上側ハウジングE5は、第1パーツE501、第2パーツE502、および、第3パーツE503によって構成される。第3パーツE503は、さらに第3AパーツE504、および、第3BパーツE505によって構成される。第1パーツE501、第2パーツE502、第3AパーツE504、第3BパーツE505は、それぞれ一体成形される。なお第3パーツE503を一体成形してもよい。第1パーツE501は、上側ハウジングE5の内部に配置される(すなわち、第3パーツE503に収納され、第2パーツE502によって覆われる)略長方形の第3部分E501A(図111(b)参照)と、上側ハウジングE5の第1連結部E7の一部(正面側部分)を構成する突出部分E501Bとが一体形成されたパーツである。また、第2パーツE502は、上側ハウジングE5の正面を構成する透明領域を有する平板状の一体成形された部材である。また、第3パーツE503は、上側ハウジングE5の背面、左右側面、上面、および、底面を構成し、かつ、上側ハウジングE5の第1連結部E7の一部(背面側部分)を構成する。上側ハウジングE5を構成するこれら各パーツ(E502、E502、E504およびE505)の詳細については、後述する。
図105〜図107に示すように、上側ハウジングE5には、上側LCD(Liquid Crystal Display:液晶表示装置)E51、内側撮像部E52、3DLEDE53、スピーカーE54、視差量調整スイッチE55、および、外側撮像部E56(E56aおよびE56b)が収納される。上側LCDE51の画面、内側撮像部E52、および、3DLEDE53は、上側ハウジングE5の内側面(第1部分E6の内側面)に設けられる。また、上側ハウジングE5の内側面(第1部分E6の内側面)には、スピーカーE54(図106)からの音声を出力する複数のスピーカーの音抜き孔E502Aが上側LCDE51の右側および左側に設けられる。また、上側ハウジングE5の右側面には、視差量調整スイッチE55が設けられる(図105(b)および図105(c))。視差量調整スイッチE55は、上側ハウジングE5の内側面および右側面の端部に設けられ、内側面に向かってそのキートップが露出しており、開状態において上側ハウジングE5を正面から見た場合、当該視差量調整スイッチE55のキートップを視認可能に配置される。これにより、視差量調整スイッチE55の操作状態を正面から視認可能である。また、視差量調整スイッチE55の操作部は、上側ハウジングE5の右側面方向に露出され、右側面から視認および操作可能である。また、上側ハウジングE5の背面には、外側撮像部E56(E56aおよびE56b)、および、外側撮像部用LEDE57が設けられる。
上述のように、上側ハウジングE5の正面(内側面)は、透明な樹脂で形成された平板状部材である第2パーツE502によって構成されている。図100(b)では、実際には透明な第2パーツE502を透明でなく表示されているため、上側LCDE51、内側撮像部E52、および、3DLEDE53が表示されていない(図100(b)では破線で示されている)。一方、図105(b)では、第2パーツE502を透明にして表示されているため、上側LCDE51、内側撮像部E52、および、3DLEDE53が表示されている。同様に、上側ハウジングE5の背面は透明な樹脂で形成された第3AパーツE504によって構成されている。図100(d)では、実際には透明な第3AパーツE504を透明でなく表示されているため、外側撮像部用LEDE57が表示されていないが(図100(d)では破線で示されている)、図105(d)では、第3AパーツE504を透明にして表示されているため、外側撮像部用LEDE57が表示されている。
以下、上側ハウジングE5に収納される上記各部E51〜E57について説明する。
上側LCDE51は、横長形状であり、長辺方向が上側ハウジングE5の長辺方向に一致するように配置される。上側LCDE51は上側ハウジングE5の中央に配置される。上側LCDE51の画面の面積は、下側LCDE21の画面の面積よりも大きく設定される。上側LCDE51は、所定の解像度を有する表示装置である。なお、本実施形態では上側LCDE51は液晶表示装置であるが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。
具体的には、上側LCDE51は、裸眼で立体視可能な画像を表示することが可能な表示装置であり、レンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCDE51はパララックスバリア方式のものとする。上側LCDE51は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCDE51は、右目用画像と左目用画像が所定単位で左右方向に交互に並ぶように表示し、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCDE51は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる)。このように、上側LCDE51は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、視差量調整スイッチE55によって行われる。
内側撮像部E52は、上側ハウジングE5の内側面の上部(より具体的には上側LCDE51よりも上部)であって、上側ハウジングE5の左右方向に関して中央に配置される。内側撮像部E52は、上側ハウジングE5の内側面方向(内向きの法線方向)を撮像する撮像デバイスである。内側撮像部E52は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
3DLEDE53は、上側LCDE51の右側に設けられ、上側LCDE51の表示モードが立体表示モードか否かを表示する。上側LCDE51の表示モードが立体表示モードである場合、3DLEDE53は点灯する。3DLEDE53は、上側LCDE51において立体視表示されているときに点灯してもよいし、立体視表示可能なとき(視差量調整スイッチE55によりOFFになっていて平面視表示されているときでも、立体視表示可能な状態にあるとき)に点灯してもよい。また、スピーカーE54は、上側LCDE51の左側および右側に配置され、音声を出力する。
視差量調整スイッチE55は、上下方向にスライド可能な操作部を有し、上述のように上側LCDE51の表示モードを切り替えるために用いられる。視差量調整スイッチE55の操作部が最下点位置にスライドされた場合、上側LCDE51の表示モードは平面表示モードに切り替えられる(立体表示がOFFとなる)。また、視差量調整スイッチE55は、上側LCDE51に表示される立体画像の見え方を調整するためにも用いられる。例えば、ゲーム装置E1が3次元仮想空間を仮想ステレオカメラで撮像した様子を上側LCDE51に表示する場合、視差量調整スイッチE55の操作部の位置に応じて、仮想ステレオカメラのカメラ間距離が調整される。視差量調整スイッチE55を調整することによって、ユーザは、上側LCDE51に表示される立体画像の見え方を調整することができる。
外側撮像部E56は、上側ハウジングE5の背面に設けられ、背面方向(背面の外向きの法線方向)を撮像するステレオカメラである。具体的には、外側撮像部E56は、外側撮像部(左)E56aおよび外側撮像部(右)E56bの2つの撮像デバイスで構成される。外側撮像部(左)E56aと外側撮像部(右)E56bの撮像方向は、いずれも上側ハウジングE5の背面の外向きの法線方向である。また、これらの撮像部はいずれも、上側LCDE51の画面の法線方向と180度反対の方向に設計される。すなわち、外側撮像部(左)E56aの撮像方向および外側撮像部(右)E56bの撮像方向は、平行である。なお、ゲーム装置E1が実行するプログラムによって、2つの外側撮像部(E56aおよびE56b)のいずれか一方を単独で用いて、外側撮像部E56を非ステレオカメラとして使用することも可能である。また、プログラムによっては、2つの外側撮像部(E56aおよびE56b)で撮像した画像を合成してまたは補完的に使用することにより撮像範囲を広げた撮像をおこなうことも可能である。外側撮像部(左)E56aおよび外側撮像部(右)E56bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。外側撮像部E56は、上側ハウジングE5の背面の上部であって、左右の撮像部は上側ハウジングE5の左右方向に関して対称の位置に設けられる。より具体的には、外側撮像部(左)E56aおよび外側撮像部(右)E56bの中間の裏側に、上記内側撮像部E52が配置される。図106および図107に示すように、外側撮像部E56および内側撮像部E52は、撮像ユニットE60として一体的に組み立てられて上側ハウジングE5内に収納されている。
外側撮像部用LEDE57は、上側ハウジングE5の背面に設けられる。具体的には、外側撮像部用LEDE57は、上側ハウジングE5の背面の上部であって、外側撮像部(右)E56bの近傍(上側ハウジングE5を背面から正視した場合に外側撮像部(右)E56bの左側)に設けられる。外側撮像部用LEDE57は、外側撮像部E56による画像の撮影が可能であるか否かを示し、具体的には外側撮像部E56による画像の撮影が可能である場合に点灯する。
(ハウジングを構成する各パーツの詳細)
次に、下側ハウジングE2および上側ハウジングE5を構成する各パーツの詳細について、説明する。まず、図108〜110を参照して、下側ハウジングE2を構成する各パーツ(第4パーツE202、第5パーツE201、第6パーツE203)の詳細について説明する。
(下側ハウジングE2を構成する各パーツの詳細)
図108(a)は下側ハウジングE2を構成する第5パーツE201の左側面図であり、図108(b)は下側ハウジングE2を構成する第5パーツE201の正面図であり、図108(c)は下側ハウジングE2を構成する第5パーツE201の右側面図であり、図108(d)は下側ハウジングE2を構成する第5パーツE201の背面図であり、図108(e)は下側ハウジングE2を構成する第5パーツE201の上面図であり、図108(f)は下側ハウジングE2を構成する第5パーツE201の底面図である。
(第5パーツの説明)
第5パーツE201は、下側ハウジングE2の正面(内側面;第2部分E3の内側面)、第2連結部E4、右側面のうちの正面側部分、左側面のうちの正面側部分、上面のうちの正面側部分、および、底面のうちの正面側部分を構成するパーツである。第5パーツE201の正面(下側ハウジングE2の内側面)の中央には、開口部E201Aが形成されており、当該開口部E201Aから下側LCDE21の画面が露出される。開口部E201Aの左側には十字形状の開口部E201Bが形成され、当該開口部E201Bの上側には円形状の開口部E201Cが形成されている。すなわち、開口部E201Cは、開口部E201Aより左側領域の上部領域に設けられ、開口部E201Bは開口部E201Aより左側領域の下部領域に設けられる。また、開口部E201C、および、開口部E201Bは、ユーザが下側ハウジングE2を把持した場合に左手の親指が届く範囲の位置に配置される。開口部E201Bから十字キーE23のキートップが露出され、開口部E201CからアナログキーE25のキートップが露出される。開口部E201Cは、当該開口部E201Cよりも大きな半径を有する開口部E201Cと同心の円形状の凹部E201D内に形成されている。アナログキーE25のキートップを露出する開口部E201Cが凹部E201D内に形成されることにより、下側ハウジングE2と上側ハウジングE5とを折り畳む際に、アナログキーE25のキートップが上側ハウジングE5と接触して折り畳むことができないことを防止している。また、開口部E201Aの右側領域の上部領域には、4つの開口部E201Eが十字状に形成されており、これらの開口部E201Eから各操作ボタンE24A〜E24Dのキートップが露出される。また、開口部E201Aの右側下方には、電源ボタンE26を露出させるための開口部E201Fが形成されている。また、開口部E201Aの下側には、セレクトボタンE27A、HOMEボタンE27B、および、スタートボタンE27Cを露出させるための3つの開口部E201Gが横方向に並んで形成されている。これらのボタンE27A〜E27Cのための開口部E201Fは、シート状のキートップ(シートE27a)を載置するためのシートキートップ載置部E201Hの内部に形成されている。下側LCDE21の画面が露出される開口部E201Aと、シートキートップ載置部E201Hとは、第5パーツE201の正面の中央に配置された矩形領域E201I内に形成されている。当該矩形領域E201Iは、開口部E201Aの上端、開口部E201Aの右端とシートキートップ載置部E201Hの右端、シートキートップ載置部E201Hの下端、および、開口部E201Aの左端とシートキートップ載置部E201Hの左端によって囲まれる、矩形状の領域である。当該矩形領域E201Iの左右端および下端は突出しているため、下側LCDE21の画面およびシートキーのキートップ(各ボタンE18A〜E18Cのキートップ)は、下側ハウジングE2と上側ハウジングE5とを折り畳んだ際に、上側ハウジングE5と接触しない。
第5パーツE201の左側面には、音量ボリュームスイッチE35のキートップを露出させるための開口部E201Jが形成されている。また、第5パーツE201の左側面の開口部E201Jの下方には、凹部E201Kが形成されている。具体的には、第5パーツE201の左側面のうち、当該第5パーツE201の正面と反対側(背面側)の端部には、半円形状の凹部E201Kが形成されている。凹部E201Kが形成されることにより、各パーツが組み立てられて下側ハウジングE2が構成された場合において、ユーザがSDカードユニットE36のカバーE36aを取り外す際に、当該カバーE36aを指で引っ掛かけやすくなる。すなわち、凹部E201Kは、第5パーツE201が第4パーツE202と組み立てられたときに第4パーツE202の開口部E202F(後述)に対向する部分に設けけられる、背面端に向かって幅が広がる形状の窪みである。
第5パーツE201の右側面には、無線スイッチE37のキートップを露出させるための開口部E201L、および、無線LEDE28BのLEDレンズを露出させるための開口部E201Mが形成されている。開口部E201Lから無線スイッチE37のキートップが右側面方向に突出して露出される。また、開口部E201Mから無線LEDE28BのLEDレンズが右側面方向に突出して露出される。
第5パーツE201の底面の中央より右側には、電源LEDE28Cを露出させるための開口部E201N、および、充電LEDE28Dを露出させるための開口部E201Oが形成される。開口部E201Nから電源LEDE28CのLEDレンズが底面方向に突出して露出される。また、開口部E201Oから充電LEDE28DのLEDレンズが底面方向に突出して露出される。また、第5パーツE201の底面の中央には、イヤホンジャックE38を露出させるための半円形状の開口部E201Pが形成されている。開口部E201Pは、第4パーツと第5パーツとが組み立てられることによって、円形状のイヤホン挿入口を形成する。
第5パーツE201の右側の第2連結部E4には、お知らせLEDE28Aを露出させるための開口部E201Qが形成される。開口部E201Qからお知らせLEDE28AのLEDレンズが正面方向に突出して露出される。
第5パーツE201の背面には、n個(9個)のネジ孔E201Rが形成されており、第4パーツのネジ孔E202Cと当該ネジ孔E201Rとがn個のネジによって締結される。
(第4パーツの説明)
次に、図109を参照して、第4パーツE202について説明する。図109(a)は下側ハウジングE2を構成する第4パーツE202の左側面図であり、図109(b)は下側ハウジングE2を構成する第4パーツE202の正面図であり、図109(c)は下側ハウジングE2を構成する第4パーツE202の右側面図であり、図109(d)は下側ハウジングE2を構成する第4パーツE202の背面図であり、図109(e)は下側ハウジングE2を構成する第4パーツE202の上面図であり、図109(f)は下側ハウジングE2を構成する第4パーツE202の底面図である。
第4パーツE202は、下側ハウジングE2の右側面のうちの背面側部分、左側面のうちの背面側部分、上面のうちの背面側部分、および、底面のうちの背面側部分を構成するパーツである。図109(d)に示すように、第4パーツの背面側には、下側ハウジングE2の背面の正面視サイズに対して70%以上(具体的には80%程度)の正面視サイズを有する略矩形状の凹部E202Aが形成されている。すなわち、当該凹部E202Aは、下側ハウジングE2の背面の面積の70%以上の面積を有する。当該凹部E202A内には、バッテリーE41を背面方向(図109(d)の紙面に対して手前の方向)から取り出し可能に収納するバッテリー収納部E202Bが形成されている。また、凹部E202A内には、n個(9個)のネジ孔E202C、および、nより小さいm個(4個)のネジ孔E202Dが形成されている。第4パーツのネジ孔E202Cと第5パーツのネジ孔E201Rとが、n個のネジで締結されることによって、第4パーツと第5パーツとが組み立てられる。また、凹部E202A内には、2つのフック孔E202Eが形成されている。このフック孔E202Eには、後述する第6パーツのフックE203Bが係合する。
また、第4パーツE202の左側面には、SDカードユニットE36にSDカードを挿入するための挿入口を形成する開口部E202Fが形成される。当該開口部E202Fは、正面側がオープンに形成される。図109(g)は、第4パーツE202の左側面に形成された開口部E202Fを拡大して示した図である。図109(g)に示すように、開口部E202Fは、それ自体では閉じた開口部ではなく、正面端が開いている。そして、第4パーツE202と第5パーツE201とが組み立てられた場合に、第4パーツE202の開口部E202Fのうちの開いている正面端が、当該開口部E202Fと対向する第5パーツE201の左側面端部で閉じられて、閉じた開口部が形成され、これによりSDカードの挿入口が形成される。なお、開口部E202Fは、カバーE36aにより覆われる。カバーE36aは、背面方向に開閉する蓋部材であり、エラストマーにより構成される。
第4パーツE202の上面の両端部には、LボタンE29AおよびRボタンE29Bのキートップを露出させるための開口部E202Gおよび開口部E202Hがそれぞれ形成される。また、第4パーツE202の上面には、赤外線通信モジュールE30、タッチペンホルダE31、ゲームカードユニットE32のゲームカード挿入口、および、電源コネクタE33を露出させるための開口部E202I、E202J、E202K、および、202Lがそれぞれ形成される。また、第4パーツE202の上面には、クレードル接続端子E34を露出させるための開口部E202Mが形成される。
また、第4パーツE202の底面の中央には、イヤホンジャックE38を露出させるための半円形状の開口部E202Nが形成されている。開口部E202Nは、第4パーツE202と第5パーツE201とが組み立てられることによって、円形状のイヤホン挿入口を形成する。
(第6パーツの説明)
次に、図110を参照して、第6パーツE203について説明する。図110(a)は下側ハウジングE2を構成する第6パーツE203の左側面図であり、図110(b)は下側ハウジングE2を構成する第6パーツE203の正面図であり、図110(c)は下側ハウジングE2を構成する第6パーツE203の右側面図であり、図110(d)は下側ハウジングE2を構成する第6パーツE203の背面図であり、図110(e)は下側ハウジングE2を構成する第6パーツE203の上面図であり、図110(f)は下側ハウジングE2を構成する第6パーツE203の底面図である。
第6パーツE203は、下側ハウジングE2の背面を構成する平板状の部材である。第6パーツE203は、略矩形状の平板であって、第4パーツE202の背面に形成された凹部E202Aに嵌合する形状およびサイズの平板である。第6パーツE203は電池蓋であるが、このパーツの正面視サイズは電池の正面視サイズよりも非常に大きく、具体的には、電池の正面視サイズの2倍以上(より具体的には2.5倍以上)の正面視サイズである。電池蓋としてはそのようなサイズは不要であるが、このように、電池のサイズよりも大きく設計することにより、後述のような効果がある。第6パーツE203の上端部近傍には、m個(4個)のネジ孔E203Aが形成されている。また、第6パーツE203の下端部には、2つのフックE203Bが形成されており、当該フックE203Bが第4パーツE202のフック孔E202Eに係合する。そして、第6パーツE203のネジ孔E203Aと第4パーツE202のネジ孔E202Dとがm個のネジで締結されることによって、第4パーツE202と第6パーツE203とが組み立てられる。
以上のように、第4パーツE202、第5パーツE201、および、第6パーツE203が組み立てられることによって、下側ハウジングE2が形成される。
(上側ハウジングを構成する各パーツの詳細)
次に、図111〜図114を参照して、上側ハウジングE5を構成する各パーツの詳細について説明する。上側ハウジングE5は、第1パーツE501、第2パーツE502、および、第3パーツE503によって構成される。第3パーツE503は、さらに第3AパーツE504、および、第3BパーツE505によって構成される。
(第1パーツの説明)
図111(a)は上側ハウジングE5を構成する第1パーツE501の左側面図であり、図111(b)は上側ハウジングE5を構成する第1パーツE501の正面図であり、図111(c)は上側ハウジングE5を構成する第1パーツE501の右側面図であり、図111(d)は上側ハウジングE5を構成する第1パーツE501の背面図であり、図111(e)は上側ハウジングE5を構成する第1パーツE501の上面図であり、図111(f)は上側ハウジングE5を構成する第1パーツE501の底面図である。
第1パーツE501は、上側ハウジングE5の内部に配置される第3部分E501A(破線で囲まれる部分)と、上側ハウジングE5の第1連結部E7の一部(正面側部分)を形成する突出部分E501Bとが一体形成されたパーツである。第3部分E501Aは、正面視で略矩形状であり、上側ハウジングE5の第1部分E6の正面に相当する形状およびサイズを有する。ただし、第3部分E501Aは、第3パーツE503(本実施例ではより具体的には第3AパーツE504)の上面、両側面、底面で囲まれる凹部に収納されるので、正確には、第3部分E501Aの正面視のサイズは、上側ハウジングE5の正面のサイズよりも若干小さい(第3パーツE503の上面、両側面、底面の厚み分だけ小さい)。また、第3部分E501Aは、第3パーツE503(本実施例ではより具体的には第3AパーツE504)の上面、両側面、底面で囲まれる凹部と同じサイズである。図111に示すように、突出部分E501Bは、第3部分E501Aの下端の中央から下方に突出して形成されている。突出部分E501Bは、上側ハウジングE5の第1連結部E7の正面側部分を形成する。なお、突出部分E501Bの左右両端部には、筒状部分が形成されており、当該筒状部分にヒンジピンE59が挿入されることでヒンジピンE59が支持される(図107参照)。図111(a)および図111(c)に示す側面図では、当該筒状部分が表示されているため、突出部分E501Bが第1連結部E7の背面側部分も形成しているように見えるが、実際には突出部分E501Bは第1連結部E7の背面側部分は形成せず(両端(筒状部分)のみ第1連結部E7の背面側部分の一部を形成する)、第1連結部E7の正面側部分を形成する。
第1パーツE501の第3部分E501Aの正面中央には、上側LCDE51の画面を露出させるための上側LCD用開口部E501Cが設けられている。当該開口部E501Cの上方には、内側撮像部E52を露出させるための内側撮像部用開口部E501Dが設けられる。また、上側LCD用開口部E501Cの左側および右側には、スピーカーE54を露出させるためのスピーカー用開口部E501E、Fがそれぞれ設けられる。また、上側LCD用開口部E501Cの右側(スピーカー用開口部E501Fの下方)には、3DLEDE53のLEDレンズを露出させるための3DLED用開口部E501Gが設けられる。
また、第1パーツE501の右側面には、視差量調整スイッチE55の操作部を側面方向(当該右側面の法線方向)に露出させるための開口部E501Hが設けられる。また、第1パーツE501の第3部分E501Aには、複数のネジ孔E501Iが設けられる。第1パーツE501は、第3BパーツE505とネジによって接続される。
(第2パーツの説明)
次に、第2パーツE502について説明する。図112(a)は上側ハウジングE5を構成する第2パーツE502の左側面図であり、図112(b)は上側ハウジングE5を構成する第2パーツE502の正面図であり、図112(c)は上側ハウジングE5を構成する第2パーツE502の右側面図であり、図112(d)は上側ハウジングE5を構成する第2パーツE502の背面図であり、図112(e)は上側ハウジングE5を構成する第2パーツE502の上面図であり、図112(f)は上側ハウジングE5を構成する第2パーツE502の底面図である。図112(g)は第2パーツE502に印刷を施した場合の正面図である。
第2パーツE502は、透明な樹脂で形成された平板状のパーツであり、上側ハウジングE5の正面を構成するパーツである。第2パーツE502は、第1パーツE501の第3部分E501Aの全体を覆う形状およびサイズであり、第1パーツE501の第3部分E501Aと略同一の形状および大きさに形成され、第1パーツE501の第3部分E501Aに接着される。これにより、第2パーツE502は、上側ハウジングE5の正面(内側面)を形成する。また、第2パーツE502は、上側ハウジングE5の第1部分E6の正面に相当する形状およびサイズを有する(ただし、厳密には、上述の通り、第3パーツE503の上面、両側面、底面の厚み分だけ小さい)。
第2パーツE502の右側および左側には、スピーカーE54の音抜き孔E502Aが設けられる。具体的には、音抜き孔E502Aは、第1パーツE501のスピーカー用開口部E501Eおよびスピーカー用開口部E501Fに対応した部分にそれぞれ設けられる。第1パーツE501と第2パーツE502とは、第1パーツE501に設けられた上側LCD用開口部E501Cに対応する領域、内側撮像部用開口部E501Dに対応する領域、および、3DLEDE53用開口部E501Gに対応する領域を除く領域において接着シートE58によって接着される(図106参照)。
また、第2パーツE502は、もともとは透明の部材であるが、少なくとも上側LCD用開口部E501Cに対応する領域、および、内側撮像部用開口部E501Dに対応する領域が透明となるように、それ以外の領域において、裏面(第1パーツE501と接着される面)からスクリーン印刷(シルクスクリーン印刷)等により印刷が施される。また、第1パーツE501の3DLEDE53用開口部E501Gに対応する領域には、透明抜きの文字が裏面から印刷される。具体的には、図112(g)に示すように、上側LCD用開口部E501Cに対応する領域、および、内側撮像部用開口部E501Dに対応する領域以外の領域には、所定の色の印刷が施される(塗装される)。また、3DLEDE53用開口部E501Gに対応する領域には、3DLEDE53が発光した場合に所定の文字(例えば、「3D」)が表示されるように、透明抜きの文字(背景のみ所定の色で印刷されて形成された文字)が印刷される。また、第2パーツE502の右端部近傍には、視差量調整スイッチE55の最下点位置に上側LCDE51の立体表示がOFFとなることを示す透明抜きの文字(例えば、「OFF」)が印刷される。なお、これらの印刷は同一工程で一度に印刷される。
これにより、上側LCDE51、および、内側撮像部E52に対応する部分が透明となってこれらが正面から視認可能となるとともに、上側LCDE51や内側撮像部E52のカバーとなり、また、3DLEDE53が発光すると文字が表示される一方、これら以外の領域の裏側は視認不可能となる。従って、第1パーツE501と第2パーツE502とを組み立てた場合に、第1パーツE501の第3部分E501Aに設けられたネジ等を隠蔽することができる。
(第3パーツの説明)
次に、第3パーツE503について説明する。上述のように、第3パーツE503は、外側の第3AパーツE504、および、内側の第3BパーツE505によって構成される。すなわち、第3AパーツE504は組み立てられたときに背面側の表面になるパーツであり、第3BパーツE505は、その下層に存在するパーツである。図113(a)は上側ハウジングE5を構成する第3AパーツE504の左側面図であり、図113(b)は上側ハウジングE5を構成する第3AパーツE504の正面図であり、図113(c)は上側ハウジングE5を構成する第3AパーツE504の右側面図であり、図113(d)は上側ハウジングE5を構成する第3AパーツE504の背面図であり、図113(e)は上側ハウジングE5を構成する第3AパーツE504の上面図であり、図113(f)は上側ハウジングE5を構成する第3AパーツE504の底面図である。また、図114(a)は上側ハウジングE5を構成する第3BパーツE505の左側面図であり、図114(b)は上側ハウジングE5を構成する第3BパーツE505の正面図であり、図114(c)は上側ハウジングE5を構成する第3BパーツE505の右側面図であり、図114(d)は上側ハウジングE5を構成する第3BパーツE505の背面図であり、図114(e)は上側ハウジングE5を構成する第3BパーツE505の上面図であり、図114(f)は上側ハウジングE5を構成する第3BパーツE505の底面図である。
第3パーツE503は、上側ハウジングE5の背面、左側面、右側面、上面、および、第1連結部E7の一部(背面側部分)を構成するパーツである。第3パーツE503には、当該第3パーツE503の背面、左側面、右側面および上面によって、凹部が形成される。第3パーツE503の当該凹部は、第1パーツE501の第3部分E501A、および、第2パーツE502を重ねて収容する。すなわち、第3パーツE503の凹部を正面から見た場合の縦横サイズは、第1パーツE501の第3部分E501Aおよび第2パーツE502の正面視の縦横サイズと略同じサイズに設計される。そして、当該第3パーツE503の凹部に、第1パーツE501の第3部分E501Aおよび第2パーツE502が重ね合わされて収容されることによって、上側ハウジングE5が形成される。
図113に示されるように、第3AパーツE504は、上側ハウジングE5の背面を構成する背面部E504A、上側ハウジングE5の上面を構成する上面部E504B、上側ハウジングE5の左側面を構成する左側面E504C、および、上側ハウジングE5の右側面を構成する右側面E504Dを有する。第3AパーツE504の下端は開口している。また、第3AパーツE504の背面部E504Aには、外側撮像部(左)E56aを露出させるための開口部E504E、および、外側撮像部(右)E56bを露出させるための開口部E504Fが設けられる。また、第3AパーツE504の右側面の正面側端部には、視差量調整スイッチE55を右側面方向および正面方向に露出させるための開口部E504Gが設けられる。第3AパーツE504は、透明な樹脂によって形成される。
また、図114に示されるように、第3BパーツE505は、背面部E505A、上面部E505B、左側面部E505C、右側面部E505D、底面部E505J、および、背面部E505Aの下端から下方に突出する突出部分E505Hを有する。突出部分E505Hは、上側ハウジングE5の第1連結部E7の背面側部分を構成する。すなわち、第3BパーツE505と第1パーツE501とが組み立てられた場合、第3BパーツE505の突出部分E505Hと第1パーツE501の突出部分E501Bとによって、上側ハウジングE5の第1連結部E7が形成される。また、第3BパーツE505の背面部E505A、上面部E505B、左側面部E505C、右側面部E505D、および、底面部E505Jによって、第3パーツE503の上記凹部が形成される。そして当該凹部に、第1パーツE501の第3部分E501A、および、第2パーツE502が重ねて収容される。また、第3BパーツE505の背面部E505Aには、外側撮像部(左)E56aを露出させるための開口部E505E、および、外側撮像部(右)E56bを露出させるための開口部E505Fが設けられる。また、第3BパーツE505の右側面部E505Dには、視差量調整スイッチE55を右側面方向および正面方向に露出させるための開口部E505Gが設けられる。また、第3BパーツE505の背面部E505Aには、外側撮像部用LEDE57を露出させる開口部E505Iが形成される。
第3AパーツE504の背面部E504A、上面部E504B、左側面E504C、および、右側面E504Dによって形成される凹部に、第3BパーツE505が嵌合する。第3AパーツE504および第3BパーツE505は、両面テープ等で接着される。これによって、第3パーツE503が形成される。第3AパーツE504と第3BパーツE505とが接着された場合、第3AパーツE504の開口部E504Eと第3BパーツE505の開口部E505Eとが一致し、第3AパーツE504の開口部E504Fと第3BパーツE505の開口部E505Fとが一致する。これにより、外側撮像部(左)E56aおよび外側撮像部(右)E56bが、上側ハウジングE5の背面方向に露出される。また、第3AパーツE504と第3BパーツE505とが接着された場合、第3AパーツE504の開口部E504Gと第3BパーツE505の開口部E505Gとが一致する。これにより、視差量調整スイッチE55が右側面方向および正面方向に露出される。また、第3AパーツE504は、透明な樹脂によって形成されるため、第3BパーツE505の外側(背面側)に第3AパーツE504が接着されても、外側撮像部用LEDE57の光は遮蔽されない。なお、第3AパーツE504および第3BパーツE505が一体として形成されることによって、第3パーツE503が形成されてもよい。
以上のように、第1パーツE501、第2パーツE502、第3AパーツE504、および、第3BパーツE505が組み立てられることによって、上側ハウジングE5が形成される。
(各パーツの関係)
次に、各パーツの大きさの関係について説明する。まず、第5パーツE201と第3パーツE503のサイズについて説明する。
図115(a)は、第5パーツE201の正面図であり、第5パーツE201の第2部分E3に対応する部分の正面側の縦横サイズを示す図である。図115(b)は、第5パーツE201の底面図であり、第5パーツE201の第2部分E3に対応する部分の正面側の横方向サイズを示す図である。図115(c)は、第5パーツE201の左側面図であり、第5パーツE201の第2部分E3に対応する部分の正面側の縦方向サイズを示す図である。なお、図115(b)では、説明のため第5パーツE201の第2連結部E4に対応する部分が省略されている。
図115(a)〜(c)に示すように、第5パーツE201の第2部分E3に対応する部分の正面側端部の外縁の横方向サイズは、X1(mm)に設定される。なお、第5パーツE201の第2部分E3に対応する部分は、図115(a)に示すように、略矩形形状であり、第5パーツE201のうちの、第2連結部E4(E4aおよびE4b)を除く部分である。また、第5パーツE201の第2部分E3に対応する部分の正面側端部の外縁の縦方向サイズは、Y1(mm)に設定される。ここで、X1は、第5パーツE201の右側面と正面とが交差する端部と、第5パーツE201の左側面と正面とが交差する端部との間の正面視距離(正面から見た距離)である。また、Y1は、第5パーツE201の底面と正面とが交差する端部と、第5パーツE201の正面の第2部分E3に対応する部分の上端との間の正面視距離である。
一方、第3パーツE503のサイズについて説明する。図116(a)は、上側ハウジングE5の正面図であり、第3パーツE503の第1部分E6に対応する部分の縦横サイズを示す図である。図116(b)は、上側ハウジングE5の上面図であり、第3パーツE503の第1部分E6に対応する部分の横方向サイズを示す図である。図116(c)は、上側ハウジングE5の左側面図であり、第3パーツE503の第1部分E6に対応する部分の縦方向サイズを示す図である。
図116(a)〜(c)に示すように、第3パーツE503の第1部分E6に対応する部分の正面側端部の外縁の横方向サイズは、X2(mm)に設定される。また、第3パーツE503の第1部分E6に対応する部分の正面側端部の外縁の縦方向サイズは、Y2(mm)に設定される。ここで、X2は、第3パーツE503の右側面の正面側端部と、第3パーツE503の左側面の正面側端部との間の正面視距離である。また、Y2は、第3パーツE503の上面の正面側端部と、第3パーツE503の左右側面の下端の正面側端部との間の正面視距離である。
ここで、第3パーツE503は、上側ハウジングE5の背面、左側面、右側面、上面、および、第1連結部E7の背面側部分を構成するパーツである。上側ハウジングE5は、略矩形の第1部分E6と、第1連結部E7とで構成される。第3パーツE503の第1部分E6に対応する部分とは、第3パーツE503のうち、上側ハウジングE5の第1部分E6に対応する部分、すなわち、略矩形形状の部分である。言い換えると、第3パーツE503の第1部分E6に対応する部分は、第3パーツE503のうちの第1連結部E7の背面側部分を除く部分である。
また、上述のように第3パーツE503の正面側には、当該第3パーツE503の各面によって凹部が形成され、当該凹部は、第1パーツE501および第2パーツE502を収容する。第3パーツE503の凹部に第1パーツE501および第2パーツE502が収納されると、上側ハウジングE5が形成される。すなわち、第3パーツE503の第1部分E6に対応する部分(すなわち、略矩形部分)の正面側端部(正面端)の外縁は、上側ハウジングE5が形成された場合の上側ハウジングE5の第1部分E6(略矩形部分)の正面端の外縁と一致する。従って、図116では、上側ハウジングE5の第1部分E6の正面端の外縁の縦横サイズが示されているが、これは、第3パーツE503の第1部分E6に対応する部分の正面端の外縁の縦横サイズを示している。
なお、上側ハウジングE5と下側ハウジングE2とが連結されて折り畳まれた場合、折り畳み時の上側ハウジングE5の第1部分E6の上端(図116(a)に示す開状態における第1部分の下端)は、下側ハウジングE2の第2部分の上端(図115(a)に示す第2部分に対応する部分の上端)と一致する。
また、図115(b)では、第5パーツE201の底面における正面端の横方向サイズX1が示されているが、第5パーツE201の第2部分E3において正面端の横方向サイズは全体にわたってX1である。すなわち、第5パーツE201の両側面は底面に対して垂直に延びる(図115(b)の紙面に対して垂直に延びる)ため、第2部分E3において第5パーツE201の側面の全体に渡って正面端の横方向サイズはX1である。同様に、第5パーツE201の底面は両側面に対して垂直に延びる(図115(c)の紙面に対して垂直に延びる)ため、第5パーツE201の底面の全体に渡って正面端の縦方向サイズはY1である。さらに、同様に、図116(b)では、第3パーツE503の上面における正面端の横方向サイズX2が示されているが、第3パーツE503の両側面は上面に対して垂直に延びる(図116(b)の紙面に対して垂直に延びる)ため、第1部分E6において第3パーツE503の側面の全体に渡って正面端の横方向サイズはX2である。同様に、第3パーツE503の上面は両側面に対して垂直に延びる(図116(c)の紙面に対して垂直に延びる)ため、第3パーツE503の上面の全体に渡って正面端の縦方向サイズはY2である。
ここで、X2はX1よりも大きく設定され、Y2はY1よりも大きく設定される。すなわち、第5パーツE201の第2部分E3に対応する部分の正面側端部の外縁の横方向サイズX1は、第3パーツE503の第1部分E6に対応する部分の正面側端部の外縁の横方向サイズX2よりも小さく設定される。また、第5パーツE201の第2部分E3に対応する部分の正面側端部の外縁の縦方向サイズY1は、第3パーツE503の第1部分E6に対応する部分の正面側端部の外縁の縦方向サイズY2よりも小さく設定される。
次に、第5パーツE201と第4パーツE202のサイズについて説明する。図117(a)は、第5パーツE201の背面図であり、第5パーツE201の第2部分E3に対応する部分の背面側の縦横サイズを示す図である。図117(b)は、第5パーツE201の底面図であり、第5パーツE201の第2部分E3に対応する部分の背面側の横方向サイズを示す図である。図117(c)は、第5パーツE201の左側面図であり、第5パーツE201の第2部分E3に対応する部分の背面側の縦方向サイズを示す図である。
図117(a)〜(c)に示すように、第5パーツE201の第2部分E3に対応する部分の背面側端部の外縁の横方向サイズは、X3(mm)に設定される。また、第5パーツE201の第2部分E3に対応する部分の背面側端部の外縁の縦方向サイズは、Y3(mm)に設定される。ここで、X3は、第5パーツE201の左側面の背面側の端部と、第5パーツE201の右側面の背面側の端部との間の正面視距離である。また、Y3は、第5パーツE201の底面の背面側の端部と、第5パーツE201の第2部分E3に対応する部分の上端との間の正面視距離である。
なお、図117(b)では、第5パーツE201の底面における背面端の横方向サイズX3が示されているが、第5パーツE201の両側面は底面に対して垂直に延びる(図117(b)の紙面に対して垂直に延びる)ため、第2部分E3において第5パーツE201の側面の全体に渡って背面端の横方向サイズはX3である。同様に、第5パーツE201の底面は両側面に対して垂直に延びる(図117(c)の紙面に対して垂直に延びる)ため、第5パーツE201の底面の全体に渡って背面端の縦方向サイズはY3である。
一方、第4パーツE202のサイズについて説明する。図118(a)は、第4パーツE202の正面図であり、第4パーツE202の第2部分E3に対応する部分の正面側の縦横サイズを示す図である。図118(b)は、第4パーツE202の底面図であり、第4パーツE202の第2部分E3に対応する部分の正面側の横方向サイズを示す図である。図118(c)は、第4パーツE202の左側面図であり、第4パーツE202の第2部分E3に対応する部分の正面側の縦方向サイズを示す図である。
図118(a)〜(c)に示すように、第4パーツE202の第2部分E3に対応する部分の正面側端部の外縁の横方向サイズは、X4(mm)に設定される。第4パーツE202の第2部分E3に対応する部分は、下側ハウジングE2が構成された場合の第2部分E3に対応する部分であり、図118(a)および図118(c)に示す第2部分に対応する部分の上端より下方の領域である。すなわち、第4パーツE202の第2部分E3に対応する部分は、第4パーツE202のうちの一部で、略矩形形状の部分である。また、第4パーツE202の第2部分E3に対応する部分の正面側端部の外縁の縦方向サイズは、Y4(mm)に設定される。ここで、X4は、第4パーツE202の左側面の正面側の端部と、第4パーツE202の右側面の正面側の端部と間の正面視距離である。また、Y4は、第4パーツE202の底面の正面側の端部と、第4パーツE202の第2部分E3に対応する部分の上端との間の正面視距離である。なお、図118(a)および図118(c)において第2部分に対応する部分の上端が示されているが、第2部分に対応する部分の上端は、第4パーツE202と第5パーツE201とが組み立てられた場合、第5パーツE201の第2連結部E4の突起部E4aの下端(図115に示す当該第5パーツE201の第2部分に対応する部分の上端)と一致する。
なお、図118(b)では、第4パーツE202の底面における正面端の横方向サイズX4が示されているが、第4パーツE202の両側面は底面に対して垂直に延びる(図118(b)の紙面に対して垂直に延びる)ため、第2部分E3において第4パーツE202の側面の全体に渡って正面端の横方向サイズはX4である。同様に、第4パーツE202の底面は両側面に対して垂直に延びる(図118(c)の紙面に対して垂直に延びる)ため、第4パーツE202の底面の全体に渡って正面端の縦方向サイズはY4である。
ここで、X4はX3よりも大きく設定され、Y4はY3よりも大きく設定される。すなわち、第5パーツE201の第2部分E3に対応する部分の背面側端部の外縁の横方向サイズX3は、第4パーツE202の第2部分に対応する部分の正面側端部の外縁の横方向サイズX4よりも、第2部分E3の全体に渡って、小さく設定される。また、第5パーツE201の第2部分E3に対応する部分の背面側端部の外縁の縦方向サイズY3は、第2部分E3の全体に渡って、第4パーツE202の第2部分に対応する部分の正面側端部の外縁の縦方向サイズY4よりも小さく設定される。
なお、X1>X3、X2>X4、Y1>Y3、Y2>Y4に設定される。従って、上記各パーツのそれぞれのサイズは以下の式1および式2を満たす。
X2>X4>X1>X3 (1)
Y2>Y4>Y1>Y3 (2)
以上のような各パーツを組み合わせて上側ハウジングE5および下側ハウジングE2を構成して折り畳むと、図119Aおよび図119Bに示すように、ゲーム装置E1は3層構造となり、中間の層(第5パーツE201)が他の層(上側ハウジングE5の層および第4パーツE202の層)よりも凹んだ形状となる。図119Aは、折り畳んだ状態のゲーム装置E1の底面の左右端部を拡大した図である。図119Bは、折り畳んだ状態のゲーム装置E1の左側面の上下端部を拡大した図である。
図119Aに示すように、ゲーム装置E1を折り畳んだ場合、第1部分E6および第2部分E3において、第5パーツE201の側面の正面端(当該第5パーツE201の側面と正面とが交差する端部;図119Aにおける第5パーツE201の左右両端部の上端)は、第3パーツE503の側面の正面端(折り畳み時(図101)の背面端;図119Aにおける第3パーツE503の左右両端部の下端)よりも内側となる(X1<X2)。ここで、各パーツが組み立てられて上側ハウジングE5および下側ハウジングE2が構成された場合、第5パーツE201の横方向の中心と、第3パーツE503の横方向の中心とは一致する。このように第5パーツE201の横方向の中心と、第3パーツE503の横方向の中心とが一致するように組み立てられるため、X1<X2を満たす第5パーツE201および第3パーツE503は、上記のような関係となる。すなわち、ゲーム装置として組み立てられた状態において、第5パーツE201の左右側面の正面端は、第2部分の全体にわたって、第3パーツE503の左右側面の正面端(上側ハウジングE5を開いた状態における正面端であり、折り畳み状態における背面端)よりも内側になる。
また、図119Bに示すように、第1部分E6および第2部分E3の全体において、第5パーツE201の底面の正面端(当該第5パーツE201の底面の正面側端部;図119Bにおける第5パーツE201の底面の右端部)は、第3パーツE503の上面の正面端(上側ハウジングE5を開いた状態における上面の正面端であり、折り畳み状態(図101(b))における底面の背面端;図119Bにおける第3パーツE503の下端の左端)よりも内側となる(Y1<Y2)。ここで、各パーツが組み立てられて上側ハウジングE5および下側ハウジングE2が構成された場合において、上側ハウジングE5が折り畳まれた場合、第5パーツE201の第2部分に対応する部分の上端は、第3パーツE503の第1部分に対応する部分の上端と一致する(図119B参照)。このため、上記のように、ゲーム装置として組み立てられた状態において、第5パーツE201の底面の正面端が、当該底面全体に渡って、折り畳み時の第3パーツE503の底面の背面端(折り畳み状態における底面の背面端であって、開いた状態における上面の正面端)よりも内側となる。
また、図119Aに示すように、第2部分E3の全体において、第5パーツE201の側面の
背面端(当該第5パーツE201の側面の背面側端部;図119Aにおける第5パーツE201の左右両端部の下端)は、第4パーツE202の側面の正面端(当該第4パーツE202の側面の正面側端部;図119Aにおける第4パーツE202の左右両端部の上端)よりも内側となる(X3<X4)。ここで、各パーツが組み立てられて上側ハウジングE5および下側ハウジングE2が構成された場合、第5パーツE201の横方向の中心と、第4パーツE202の横方向の中心とは一致する。このように第5パーツE201の横方向の中心と、第4パーツE202の横方向の中心とが一致するように組み立てられるため、X3<X4を満たす第5パーツE201および第4パーツE202は、上記のような関係となる。すなわち、第5パーツE201の左右側面の背面端は、第2部分E3の全体にわたって、第4パーツE202の左右側面の正面端よりも内側になる。
また、図119Bに示すように、第2部分E3の全体において、第5パーツE201の底面の背面端(第5パーツE201の底面の背面側端部;図119Bにおける第5パーツE201の底面の左端部)は、第4パーツE202の底面の正面端(第4パーツE202の底面の正面側端部;図119Bにおける第4パーツE202の底面の右端部)よりも内側となる(Y3<Y4)。ここで、各パーツが組み立てられて上側ハウジングE5および下側ハウジングE2が構成された場合において、第5パーツE201の第2部分に対応する部分の上端は、第4パーツE202の第2部分に対応する部分の上端と一致する。このため、上記のように、第5パーツE201の底面の背面端が、当該底面全体に渡って、第4パーツE202の底面の正面端よりも内側となる。これにより、ゲーム装置E1は、折り畳まれた状態において、側面および底面に連続した凹部が形成される。
以上のように形成された各パーツを組み立ててゲーム装置E1を構成すると、図119Aおよび図119Bに示すように、ゲーム装置E1は、折り畳まれた状態において、側面および底面において、中間部に連続的につながった凹部が形成される。すなわち、図119Aに示すように、ゲーム装置E1は、折り畳まれた状態において中間層が凹状となった3層構造となる。そして、中間層の左側には音量ボリュームスイッチE35が配設され、中間層の右側には無線スイッチE37が配設される(図119A)。
このように、各スイッチ(E35、E37)がゲーム装置E1を折り畳んだ場合に凹状となる中間層に配設されるため、ゲーム装置E1を使用していない間の当該スイッチの誤操作を防止することができる。すなわち、ゲーム装置E1を使用していない間はゲーム装置E1は折り畳まれた状態であり、当該状態では、ゲーム装置E1の中間層は凹状となる。このため、各スイッチ(E35およびE37)のキートップが側面や底面方向に突出する度合いは、折り畳まれた状態のゲーム装置E1が2層構造である場合(すなわち、中間層が凹状となっていない場合)と比べて、小さくなる。下側ハウジングE2が1層で形成されたゲーム装置が折り畳まれた場合、各スイッチ(E35およびE37)のキートップは、下側ハウジングの側面方向に突出するため、ゲーム装置E1の携帯時に当該スイッチにユーザの指や他の物体が接触することで誤操作が発生しやすくなる。しかしながら、ゲーム装置E1を折り畳んだ場合に凹状となる中間層が形成されて各スイッチが配設されることによって、各スイッチのキートップが側面方向に突出する度合いは小さくなり、このため、折り畳んだときの誤操作を防止することができる。
また、ゲーム装置E1は、閉じた場合において中間層が凹んだ3層構造であるため、開閉しやすい。すなわち、ゲーム装置E1は、閉じた状態では、3層構造の中間に凹部が形成されているため、当該凹部にユーザの指が掛かりやすく、上側ハウジングE5を持ち上げやすい。
また、ゲーム装置E1は上記中間層が凹んだ3層構造であるため、SDカードユニットE36のSDカード挿入口を覆うカバーE36aを開閉しやすい。SDカードユニットE36のS
Dカード挿入口は、第4パーツE202の左側面に正面側がオープンに設けられている(図109(a)参照)。当該SDカード挿入口は、カバーE36aに覆われている。中間層(第5パーツE201)の背面側は、下層(第4パーツE202)の正面側よりも凹んでいるため、当該カバーE36aの正面側端部は下層と中間層との境界において僅かに露出される。従って、ユーザは、カバーE36の正面側端部を指で引っ掛けやすく、カバーE36を開閉しやすい。さらに、第5パーツE201の左側面であって、第4パーツE202に設けられたSDカード挿入口に対応する部分には、凹部E201Kが形成されているため(図108(a)参照)、よりカバーE36を開閉しやすい。
また、ゲーム装置E1を使用する場合、ユーザはゲーム装置E1を開いて、両手で下側ハウジングE2を把持し、上側LCDE51を正視する。図120は、ユーザがゲーム装置E1を把持してゲーム装置E1を操作する様子を示す図である。各スイッチ(E35およびE37)は、下側ハウジングE2の左右側面の中間層(第5パーツE201)に配設されるため、ユーザが下側ハウジングE2を把持した場合、ユーザは人差し指や中指等で操作しやすい。すなわち、各スイッチ(E35およびE37)が配設された下側ハウジングE2の第5パーツE201(中間層)は、第4パーツE202よりも内側に凹んでいる。このため、ユーザはこの凹み(第4パーツE202の側面の正面端と第5パーツE201の側面とで形成される凹み)に沿って指を上下方向にスライドさせることができる。従って、ユーザは、上側LCDE51を正視しながら(各スイッチを目視せずに)、各スイッチ(E35およびE37)の位置を確認することができ、各スイッチ(E35およびE37)を操作することができる。
また、各LEDE28B〜E28Dは、第5パーツE201(中間層)の側面および底面に配設される。側面や底面に設けることにより、閉じているときも開いているときも視認できる。しかしながら、側面や底面にLEDを設けると正面からの視認性が悪い。そこで、凹部を利用してLEDレンズを突出させることにより、正面からもLEDの点灯状態を視認することができる。また、無線スイッチE37とその機能の状態を示すLEDE28Bを同一面に近接して設けることができて、直感的に把握できる。ゲーム装置E1の使用状態(開いた状態)においては、各LEDE28B〜E28DのLEDレンズは、側面方向および底面方向に僅かに突出する。図121(a)は、ゲーム装置E1を開いた状態の正面視において電源LEDE28Cおよび充電LEDE28Dが配設される部分を拡大して示した図である。図121(b)は、ゲーム装置E1を開いた状態の正面視において無線LEDE28Bが配設される部分を拡大して示した図である。図121(a)およびBに示されるように、各LEDE28B〜E28Dは、ゲーム装置E1を開いた状態の正面視において、僅からながら底面方向および側面(右側面)方向に突出する。このため、開いた状態においてゲーム装置E1を正視した場合、ユーザは、各LEDE28B〜E28Dを視認することができるため、ゲーム装置E1の状態(電源のON/OFFや無線通信が確立しているか否か等)を確認することができる。また、これらは凹状の中間層に設けられるため、LEDレンズを突出させても、装置の折りたたみ時に装置の側面から突出する度合いを無くすまたは少なくすることができる。
また、ゲーム装置E1は、上記3層構造となっているため、各層の色彩や模様等を変えることにより、多様なデザインバリエーション(色彩や模様、質感等)を有することが可能である。例えば、上層(上側ハウジングE5)、中間層(第5パーツE201)、および、下層(第4パーツE202および第6パーツE203)を同系色にして各層の色の濃さを変えることができる。また、例えば、3つの層をそれぞれ異なる色にすることができる。さらには、第6パーツE203を別の色にすれば、さらに、カラーバリエーションを増やすことができる。
また、ゲーム装置E1の上側ハウジングE5の内側面は、透明領域を有する平板である第2パーツE502によって覆われている。このため、第1パーツE501と第3パーツE503と
を締結するネジが内側面に露出しない。また、上側ハウジングE5の内側面の全面が第2パーツE502によって覆われることによって、当該内側面に配設される上側LCDE51と内側面との一体感、統一感を持たせることができる。これにより、ユーザを上側LCDE51に注目させることができる。すなわち、上側ハウジングE5の内側面は凹凸がなく、フラットに形成されるため、ユーザが上側ハウジングE5の内側面を正視した場合に、より上側LCDE51に注目しやすい。上側LCDE51に表示される立体画像をユーザが見る場合、ユーザは、目の焦点を画面より手前や画面の奥方向に合わせる必要がある。この場合において、上側ハウジングE5の内側面に凹凸があると、目の焦点を合わせ難い場合がある。しかしながら、上側ハウジングE5の内側面は第2パーツE502によって覆われているため、ユーザは上側LCDE51をより見やすい。
また、第2パーツE502は、上側LCDE51や内側撮像部E52に対応する領域以外の領域が裏面から印刷されて、第1パーツE501に接着される(図112(g))。また、第2パーツE502には、LEDを覆うとともに、LEDに対応する領域に透明抜き文字が印刷される。このように、第1パーツE501と第2パーツE502とが分離していることにより、上側ハウジングE5に印刷を施す際の印刷工程を効率化することができる。例えば、第1パーツE501に直接印刷が行われて上側ハウジングE5の内側面を構成する場合、まず、金型によって形成されたハウジング部材に塗装がなされる。塗装されたハウジング部材は、所定時間乾燥させる必要がある。乾燥されたハウジング部材は、タンポ印刷により印刷が行われる。そして、印刷が行われた後、表面保護のためのコーティング等がなされる。これらの工程は、それぞれが独立した工程であり、各工程はそれぞれ異なる装置によって行われる。また、タンポ印刷では、ハウジング部材の位置を正確に固定する必要があり、位置が正確に固定されていない場合、印刷がずれることがある。一方、本実施形態のように、第2パーツE502に印刷が施されて第1パーツE501に接着される場合、上記印刷工程を効率化することができる。すなわち、第1パーツE501と第2パーツE502とは、別々の工程で形成され、第1パーツE501が塗装されて乾燥されている間に、第2パーツE502に印刷を施すことができる。第2パーツE502は、ハードコートされた平板状の透明樹脂にスクリーン印刷によって瞬間的に印刷を行うことができる。このように、2つのパーツによって構成される場合、並列的に各工程を行うことができ、印刷に要する時間が異なる。以上のように、第1パーツE501と第2パーツE502とが分離していることにより、上側ハウジングE5に印刷を施す際の印刷工程を効率化することができる。また、透明な部材である第2パーツE502に印刷が行われて、背面にLEDが配置されることにより、透明抜きの文字等、様々な印刷が可能であり、これらの文字等をLEDで光らせることができる。
また、第2パーツE502は上側ハウジングE5の全面を覆うため、当該第2パーツE502は、内側撮像部E52のレンズカバーを兼ねることができる。
また、下側ハウジングE2の背面は、略全面が第6パーツE203で覆われているため、第4パーツE202および第5パーツE201を締結するネジを隠蔽することができる。これらのネジが第6パーツE203で隠蔽されるため、外観上の制限を受けることなく下側ハウジングE2の内部に収容する各部品の数や配置を設計することができ、また、強度上必要なネジを配置する自由度を上げることができる。また、第6パーツE203が下側ハウジングE2の背面を構成するため、当該第6パーツE203の色彩や模様等を変えることにより、多様なデザインバリエーションを持たせることができる。例えば、第6パーツE203が下側ハウジングE2の背面の一部(例えば、バッテリーE41が配設される部分)のみを覆い、その他の部分が第4パーツE202の背面又は他の部材で構成される場合、下側ハウジングE2の背面は、複数の領域によって形成される。このため、下側ハウジングE2の背面全体に模様を付する場合、各領域の境界が不連続となって外観上好ましくなく、複雑な模様を背面に付することが難しくなる。しかしながら、下側ハウジングE2の背面の全面が第6パーツE203で覆われるため、複雑な模様等を付することが可能となる。
また、下側ハウジングE2の内側面には、シートキーE27a〜E27Cが配設される。ゲーム装置E1は、多数の操作用のボタン等(E23、E24、E25)を有しており、シートキーE27a〜E27Cは、これら操作用ボタン等(E23、E24、E25)とは異なる用途で用いられる。すなわち、操作用ボタン等(E23、E24、E25)は主にゲーム中に出現するキャラクタ等の操作に用いられるが、シートキーE27a〜E27Cは、主に画面の切り替えやゲームのスタートや中断等、特別な用途に用いられる。このように、用途の異なるキー(E27A〜E27C)が種類の異なるシートキーによって構成されるため、多数の操作ボタンを有することによってユーザが混乱することを防止することができ、誤操作を防止することができる。すなわち、多数のスイッチやボタン等を有するゲーム装置E1では、ユーザがある操作をする場合に、どのスイッチやボタンを押したらいいのか分かり難い場合があるため、混乱しやすいことがある。しかしながら、ゲーム装置E1のように、用途の異なるキーをシートキーで構成することにより、このような混乱や誤操作を防止することができる。
(ゲーム装置E1の内部構成)
次に、図122を参照して、ゲーム装置E1の内部の電気的構成について説明する。図122は、ゲーム装置E1の内部構成を示すブロック図である。図122に示すように、ゲーム装置E1は、上述した各部に加えて、情報処理部E42、メインメモリE43、データ保存用内部メモリE44、リアルタイムクロック(RTC)E45、加速度センサE46、ジャイロセンサE49、および、電源回路E48等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジングE2内に収納される。
情報処理部E42は、所定のプログラムを実行するためのCPU(Central Processing Unit)E421、画像処理を行うGPU(Graphics Processing Unit)E422等を含む情報処理手段である。本実施形態では、所定のプログラムがゲーム装置E1内のメモリ(例えばゲームカードユニットE32に接続されたゲームカードE70やデータ保存用内部メモリE44)に記憶されている。情報処理部E42のCPUE421は、当該所定のプログラムを実行することによって、上記外側撮像部E56や内側撮像部E52を用いて画像を撮像したり、所定のゲームを行ったりする。なお、情報処理部E42のCPUE421によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部E42は、VRAM(Video RAM)E423を含む。情報処理部E42のGPUE422は、情報処理部E42のCPUE421からの命令に応じて画像を生成し、VRAME423に描画する。そして、情報処理部E42のGPUE422は、VRAME423に描画された画像を上側LCDE51及び/又は下側LCDE21に出力し、上側LCDE51及び/又は下側LCDE21に当該画像が表示される。
情報処理部E42には、メインメモリE43、ゲームカードユニットE32、SDカードユニットE36、データ保存用内部メモリE44、無線通信モジュールE39、赤外線通信モジュールE30、RTCE45、加速度センサE46、各LEDE28A〜D、3DLEDE53、十字キーE23、各ボタン(操作ボタンユニットE24、ボタンE27A〜C、E29A〜B)、アナログキーE25、下側LCDE21、上側LCDE51、外側撮像部E56、内側撮像部E52、各スイッチ(音量ボリュームスイッチE35、無線スイッチE37、視差量調整スイッチE55)、および、インターフェイス(I/F)回路47等が接続される。
メインメモリE43は、情報処理部E42(のCPUE421)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリE43は、上記所定のプログラムを実行中に用いられる各種データを一時的に記憶したり、外部(ゲームカードE70や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリE43として例えばPSRAM(Pseudo−SRAM)を用いる。
ゲームカードE70は、情報処理部E42によって実行されるプログラムを記憶するための不揮発性の記憶手段である。ゲームカードE70は、例えば読み取り専用の半導体メモリで構成される。ゲームカードE70がゲームカードユニットE32に接続されると、情報処理部E42はゲームカードE70に記憶されたプログラムを読み込むことができる。情報処理部E42が読み込んだプログラムを実行することにより、所定の処理が行われる。SDカードE71は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、SDカードE71には、外側撮像部E56で撮像された画像や他の機器で撮像された画像が記憶される。SDカードE71がSDカードユニットE36に接続されると、情報処理部E42はSDカードE71に記憶された画像を読み込み、上側LCDE51及び/又は下側LCDE21に当該画像を表示することができる。
データ保存用内部メモリE44は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリE44には、無線通信モジュールE39を介した無線通信によってダウンロードされたデータやプログラムが格納される。
また、情報処理部E42には、加速度センサE46が接続される。加速度センサE46は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサE46は、下側ハウジングE2の内部に設けられる。加速度センサE46は、ゲーム装置E1を開状態として正面から視認した場合において(図100)、下側ハウジングE2の長辺方向をx軸、下側ハウジングE2の短辺方向をy軸、下側ハウジングE2の内側面(正面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサE46は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサE46は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部E42は、加速度センサE46が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置E1の姿勢や動きを検出することができる。
また、情報処理部E42には、ジャイロセンサE49が接続される。ジャイロセンサE49は、3軸方向の角速度の大きさを検出する。当該ジャイロセンサE49が角速度を検出することによって、情報処理部E42は、ゲーム装置E1の姿勢や動きを検出することができる。すなわち、情報処理部E42は、ジャイロセンサE49が検出した角速度を時間で積分することによって、各軸周りの回転角を検出することができる。なお、ゲーム装置E1が所定の姿勢のときに、ジャイロセンサE49は初期化される必要がある。そして、情報処理部E42は、当該所定の姿勢からの変化をジャイロセンサE49が検出する角速度に基づいて検出することにより、ゲーム装置E1の空間における姿勢を検出することができる。
RTCE45は、時間をカウントして情報処理部E42に出力する。情報処理部E42は、RTCE45によって計時された時間に基づき現在時刻(日付)を計算する。電源回路E48は、ゲーム装置E1が有する電源(バッテリーE41)からの電力を制御し、ゲーム装置E1の各部品に電力を供給する。
また、情報処理部E42には、I/F回路E47が接続される。I/F回路E47には、タッチパネルE22、マイクE40およびスピーカーE54が接続される。具体的には、I/F回路E47には、図示しないアンプを介してスピーカーE54が接続される。マイクE40は、ユーザの音声を検知して音声信号をI/F回路E47に出力する。アンプは、I/F回路E47からの音声信号を増幅し、音声をスピーカーE54から出力させる。
また、十字キーE23、アナログキーE25、各ボタン(E24、E27、E29)、各スイッチ(E35、E37、E55)は、情報処理部E42に接続される。情報処理部E42は、これら操作手段(各キーやボタン、スイッチ等)が操作されたことを検出し、操作された操作手段に応じて所定の処理を行う。
下側LCDE21および上側LCDE51は情報処理部E42に接続される。下側LCDE21および上側LCDE51は、情報処理部E42(のGPUE422)の指示に従って画像を表示する。例えば、情報処理部E42は、外側撮像部E56で撮像した右目用画像と左目用画像とを用いた立体画像(立体視可能な画像)を上側LCDE51に表示させたり、内側撮像部E52で撮像した平面画像を上側LCDE51に表示させたりする。
具体的には、情報処理部E42は、上側LCDE51のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCDE51の視差バリアがONになっている場合、情報処理部E42のVRAME423に格納された(外側撮像部E56で撮像された)右目用画像と左目用画像とが、上側LCDE51に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAME423から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCDE51の画面に表示される。そして、上側LCDE51の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。このようにして、上側LCDE51の画面には立体視可能な画像が表示される。
外側撮像部E56および内側撮像部E52は、情報処理部E42に接続される。外側撮像部E56および内側撮像部E52は、情報処理部E42の指示に従って画像を撮像し、撮像した画像データを情報処理部E42に出力する。
また、3DLEDE53は、情報処理部E42に接続される。情報処理部E42は、3DLEDE53の点灯を制御する。以上がゲーム装置E1の内部構成の説明である。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
以下では、上述した種々の実施形態に関連する関連実施形態について開示する。
第1の関連実施形態の画像表示プログラムは、右目用の実カメラおよび左目用の実カメラからの出力を利用して、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示プログラムであって、コンピュータを、第1位置姿勢算出手段、仮想カメラ設定手段、右仮想空間画像生成手段、左仮想空間画像生成手段、および、表示制御手段として機能させる。上記第1位置姿勢算出手段は、上記右目用の実カメラから出力される実世界画像データと上記左目用の実カメラから出力される実世界画像データのうち、一方の実カメラから出力される実世界画像データ内の所定の撮像対象を認識することにより、当該一方の実カメラと上記所定の撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報を算出する。上記仮想カメラ設定手段は、上記第1位置姿勢算出手段によって算出された上記位置姿勢情報を用いて、所定の仮想空間における右目用の画像を生成するための右仮想カメラと左目用の画像を生成するための左仮想カメラの両方についての位置および姿勢を決定する。上記右仮想空間画像生成手段は、上記右仮想カメラから見た上記仮想空間を示す右仮想空間画像を生成する。上記左仮想空間画像生成手段は、上記左仮想カメラから見た上記仮想空間を示す左仮想空間画像を生成する。上記表示制御手段は、上記右目用の実カメラから出力される実世界画像データに上記右仮想空間画像を合成し、かつ、上記左目用の実カメラから出力される実世界画像データに上記左仮想空間画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
なお、上記仮想カメラ設定手段は、上記第1位置姿勢算出手段における上記一方の実カメラとは異なる他方の実カメラから出力される実世界画像データ内の上記所定の撮像対象の認識結果を用いずに、所定の仮想空間における右目用の画像を生成するための右仮想カメラと左目用の画像を生成するための左仮想カメラの両方についての位置および姿勢を決定してもよい。
上記構成によれば、上記2つの実カメラから出力されるの2つの実世界画像データのいずれか一方においてしか上記所定の撮像対象を認識できない場合でも、上記所定の撮像対象を認識できた方の実世界画像データに基づいて算出される位置姿勢情報に基づいて、2つの仮想カメラのうちの一方の仮想カメラの位置および姿勢が決定され、こうして決定された一方の仮想カメラの位置および姿勢に基づいて、他方の仮想カメラの位置および姿勢が決定される。したがって、上記2つの実カメラのいずれか一方から出力されるの2つの実世界画像データのいずれか一方においてしか上記所定の撮像対象を認識できない場合でも、仮想オブジェクトを適切に立体表示することができる。また、上記2つの実カメラから出力されるの2つの実世界画像データの両方において上記所定の撮像対象を認識し得る場合であっても、いずれか一方の実世界画像データから上記所定の撮像対象を認識するだけで仮想オブジェクトを適切に立体表示することができるので、コンピュータの処理負担を軽減することができる。
他の好ましい構成例として、上記仮想カメラ設定手段は、上記右仮想カメラと上記左仮想カメラとの間の相対姿勢の関係が、上記右目用の実カメラおよび上記左目用の実カメラとの間の設計上の相対姿勢の関係と同一になるように、上記右仮想カメラと上記左仮想カメラの位置および姿勢を決定してもよい。
上記構成によれば、上記所定の撮像対象の認識精度の誤差や、上記2つの実カメラの取り付け精度の誤差などの原因によって、上記2つの実カメラのいずれか一方から出力されるの実世界画像データに基づいて算出される位置姿勢情報と、いずれか他方の実カメラから出力される実世界画像データに基づいて算出される位置姿勢情報とが、上記2つの実カメラの相対姿勢に正確に対応していない場合であっても、上記右仮想カメラと上記左仮想カメラとの間の相対姿勢を適切に設定できるので、仮想オブジェクトを適切に立体表示することができる。
他の好ましい構成例として、上記仮想カメラ設定手段は、上記第1位置姿勢算出手段によって算出された上記位置姿勢情報を用いて、上記右仮想カメラおよび上記左仮想カメラのうち、上記第1位置姿勢算出手段における上記一方の実カメラに対応する一方の仮想カメラの姿勢を決定する第1仮想カメラ姿勢決定部と、上記第1仮想カメラ姿勢決定部によって決定された上記一方の仮想カメラの姿勢に基づいて、上記右仮想カメラと上記左仮想カメラとの間の相対姿勢の関係が、上記右目用の実カメラおよび上記左目用の実カメラとの間の設計上の相対姿勢の関係と同一になるように、他方の仮想カメラの姿勢を決定する第2カメラ姿勢決定部とを含んでもよい。
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記右仮想カメラと上記左仮想カメラの相対位置関係を決定する仮想カメラ相対位置関係決定手段としてさらに機能させ、上記仮想カメラ設定手段は、上記第1位置姿勢算出手段によって算出された上記位置姿勢情報を用いて、上記右仮想カメラおよび上記左仮想カメラのうち、上記第1位置姿勢算出手段における上記一方の実カメラに対応する一方の仮想カメラの位置を決定する第1仮想カメラ位置決定部と、上記第1仮想カメラ位置決定部によって決定された上記一方の仮想カメラの位置から、上記仮想カメラ相対位置関係決定手段によって決定された上記相対位置だけ離れた位置に、他方の仮想カメラの位置を決定する第2仮想カメラ位置決定部とを含んでもよい。
なお、上記の「相対位置関係」とは、上記左仮想カメラと上記右仮想カメラの間の距離であってもよいし、一方の仮想カメラを基準とした他方の仮想カメラの相対位置であってもよい。
なお、上記仮想カメラ相対位置関係決定手段は、上記2つの実カメラから出力される2つの実世界画像データ内の所定の撮像対象を認識した結果に基づいて、上記右仮想カメラと上記左仮想カメラの相対位置関係を決定してもよいし、上記右目用の実カメラおよび上記左目用の実カメラとの間の設計上の相対位置の関係に基づいて、上記右仮想カメラと上記左仮想カメラの相対位置関係を決定してもよい。
上記構成によれば、上記所定の撮像対象の認識精度の誤差や、上記2つの実カメラの取り付け精度の誤差などの原因によって、上記2つの実カメラのいずれか一方から出力されるの実世界画像データに基づいて算出される位置姿勢情報と、いずれか他方の実カメラから出力される実世界画像データに基づいて算出される位置姿勢情報とが、上記2つの実カメラの相対位置関係に正確に対応していない場合であっても、上記右仮想カメラと上記左仮想カメラとの間の相対位置関係を適切に設定できるので、仮想オブジェクトを適切に立体表示することができる。
他の好ましい構成例として、上記仮想カメラ設定手段は、上記第1位置姿勢算出手段によって算出された上記位置姿勢情報を用いて、上記右仮想カメラおよび上記左仮想カメラのうち、上記第1位置姿勢算出手段における上記一方の実カメラに対応する一方の仮想カメラの位置を決定する第1仮想カメラ位置決定部と、上記第1位置姿勢算出手段によって算出された上記位置姿勢情報を用いて、上記右仮想カメラおよび上記左仮想カメラのうち、上記第1位置姿勢算出手段における上記一方の実カメラに対応する上記一方の仮想カメラの姿勢を決定する第1仮想カメラ姿勢決定部と、上記第1仮想カメラ位置決定部によって決定された上記一方の仮想カメラの位置から見て、上記第1仮想カメラ姿勢決定部によって決定された当該一方の仮想カメラの姿勢に基づく方向に、他方の仮想カメラの位置を決定する第2仮想カメラ位置決定部とを含んでもよい。
なお、上記第2仮想カメラ位置決定部は、上記第1仮想カメラ位置決定部によって決定された上記一方の仮想カメラの位置から見て、上記第1仮想カメラ姿勢決定部によって決定された当該一方の仮想カメラの姿勢の横方向に、他方の仮想カメラの位置を決定してもよい。
他の好ましい構成例として、上記コンピュータを、上記右仮想カメラと上記左仮想カメラの間の距離を決定する仮想カメラ間距離決定手段としてさらに機能させ、上記第2カメラ位置決定部は、上記第1仮想カメラ位置決定部によって決定された上記一方の仮想カメラの位置から見て、上記第1仮想カメラ姿勢決定部によって決定された当該一方の仮想カメラの姿勢に基づく方向に、上記仮想カメラ間距離決定手段によって決定された距離だけ離れた位置に、上記他方の仮想カメラの位置を決定してもよい。
他の好ましい構成例として、上記仮想カメラ相対位置関係決定手段は、上記右目用の実カメラから出力される実世界画像データと上記左目用の実カメラから出力される実世界画像データの視差に基づいて上記右仮想カメラと上記左仮想カメラの相対位置関係を決定してもよい。
上記構成例によれば、上記2つの実世界画像データの視差に基づいて上記右仮想カメラと上記左仮想カメラの相対位置関係が決定されるので、上記2つの実カメラの相対位置関係が既知でない場合や、上記2つの実カメラの取り付け精度の誤差によって、上記2つの実カメラの相対位置関係に誤差が含まれる場合であっても、上記右仮想カメラおよび上記左仮想カメラを適切に設定できる。
他の好ましい構成例として、上記相対位置関係決定手段によって決定される上記相対位置関係は、上記右仮想カメラと上記左仮想カメラの間隔であってもよい。
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記2つの実カメラからそれぞれ出力される2つの実世界画像データのうち、上記第1位置姿勢算出手段における上記一方の実カメラとは異なる他方の実カメラから出力される実世界画像データ内の上記所定の撮像対象を認識することにより、当該他方の実カメラと上記撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報を算出する第2位置姿勢算出手段としてさらに機能させ、上記仮想カメラ相対位置関係決定手段は、上記第1位置姿勢算出手段によって算出された上記一方の実カメラと上記撮像対象との間の相対的な位置の情報と、上記第2位置姿勢算出手段によって算出された上記他方の実カメラと上記撮像対象との間の相対的な位置の情報とを用いて、上記一方の実カメラと上記他方の実カメラとの間の距離を算出してもよい。
他の好ましい構成例として、上記第1位置姿勢算出手段は、上記一方の実カメラから出力される実世界画像データに基づいて、上記所定の撮像対象を原点とした座標系で表される座標値を上記一方の実カメラを原点とした第1撮像部座標系で表される座標値へと変換するための第1変換行列を生成する第1変換行列生成手段を含み、上記第2位置姿勢算出手段は、上記他方の実カメラから出力される実世界画像データに基づいて、上記所定の撮像対象を原点とした座標系で表される座標値を上記他方の実カメラを原点とした第2撮像部座標系で表される座標値へと変換するための第2変換行列を生成する第2変換行列生成手段を含んでもよい。
好ましい他の構成例として、上記仮想カメラ相対位置関係決定手段は、上記2つの実カメラから新たな実世界画像データが出力される度に、上記右仮想カメラと上記左仮想カメラの相対位置関係を算出する処理を実行し、当該処理を複数回実行することによって得られた複数回分の相対位置関係算出結果に基づいて上記右仮想カメラと上記左仮想カメラの相対位置関係を確定してもよい。
上記構成例によれば、実世界画像データにおいて上記所定の撮像対象を認識する際の認識精度の誤差の影響が軽減されるので、上記仮想カメラ相対位置関係決定手段によって決定される上記右仮想カメラと上記左仮想カメラの相対位置関係の信頼度が向上する。
好ましい他の構成例として、上記仮想カメラ相対位置関係決定手段は、上記複数回の相対位置関係算出結果が全て所定の範囲に収まっている場合にのみ、当該複数回の相対位置関係算出結果に基づいて上記右仮想カメラと上記左仮想カメラの相対位置関係を確定してもよい。
上記構成例によれば、上記仮想カメラ相対位置関係決定手段によって決定される上記右仮想カメラと上記左仮想カメラの相対位置関係の信頼度が向上する。
好ましい他の構成例として、上記画像表示プログラムは、上記コンピュータを、上記仮想カメラ相対位置関係決定手段によって上記右仮想カメラと上記左仮想カメラの相対位置関係が決定された後、当該相対位置関係が決定された時点から、上記2つの実カメラに対する上記所定の撮像対象の奥行距離が所定範囲を超えて変化したか否かを判定する奥行変化判定手段としてさらに機能させ、上記仮想カメラ相対位置関係決定手段は、上記奥行変化判定手段の判定結果が肯定である場合に、上記右仮想カメラと上記左仮想カメラの相対位置関係を決定し直してもよい。
上記2つの実カメラの取り付け精度の誤差による影響の大きさは、上記2つの実カメラから上記所定の撮像対象までの奥行距離に依存して変化するが、上記構成例によれば、上記2つの実カメラの取り付け精度の誤差による影響を必要に応じて随時適切に補正することができる。
好ましい他の構成例として、上記画像表示プログラムは、上記コンピュータを、上記所定の撮像対象が含まれている実世界画像データに基づいて、上記2つの実カメラに対する上記所定の撮像対象の奥行距離を算出する奥行距離算出手段としてさらに機能させ、上記奥行変化判定手段は、上記仮想カメラ相対位置関係決定手段によって上記右仮想カメラと上記左仮想カメラの相対位置関係が決定された時点において上記奥行距離算出手段によって算出された基準奥行距離と、その後に上記奥行距離算出手段によって算出された最新奥行距離とを比較することによって、上記2つの実カメラに対する上記所定の撮像対象の奥行距離が所定範囲を超えて変化したか否かを判定してもよい。
好ましい他の構成例として、上記奥行距離算出手段は、上記2つの実カメラから新たな実世界画像データが出力される度に、上記2つの実カメラに対する上記所定の撮像対象の奥行距離を算出する処理を実行し、当該処理を複数回実行することによって得られた複数回分の奥行距離算出結果に基づいて上記基準奥行距離を算出してもよい。
上記構成例によれば、実世界画像データにおいて上記所定の撮像対象を認識する際の認識精度の誤差の影響が軽減されるので、上記奥行距離算出手段によって算出される上記2つの実カメラに対する上記所定の撮像対象の奥行距離の信頼度が向上する。
好ましい他の構成例として、上記奥行距離算出手段は、上記複数回の奥行距離算出結果が全て所定の範囲に収まっている場合にのみ、当該複数回の奥行距離算出結果に基づいて上記基準奥行距離を算出してもよい。
上記構成例によれば、上記奥行距離算出手段によって算出される上記2つの実カメラに対する上記所定の撮像対象の奥行距離の信頼度が向上する。
好ましい他の構成例として、上記画像表示プログラムは、上記コンピュータを、上記2つの実カメラからそれぞれ出力される2つの実世界画像データのうち、上記第1位置姿勢算出手段における上記一方の実カメラとは異なる他方の実カメラから出力される実世界画像データ内の上記所定の撮像対象を認識することにより、当該他方の実カメラと上記所定の撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報を算出する第2位置姿勢算出手段、および、上記2つの実カメラからそれぞれ出力される2つの実世界画像データの少なくとも一方における上記所定の撮像対象の位置に応じて、当該2つの実カメラのうち1つを選択する実カメラ選択手段としてさらに機能させ、上記仮想カメラ設定手段は、上記実カメラ選択手段によって選択された実カメラが上記一方の実カメラであったときには、上記第1位置姿勢算出手段によって算出された、当該一方の実カメラと上記所定の撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報を用いて、上記右仮想カメラと上記左仮想カメラの位置および姿勢を決定し、上記実カメラ選択手段によって選択された実カメラが上記他方の実カメラであったときには、上記第2位置姿勢算出手段によって算出された、当該他方の実カメラと上記所定の撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報を用いて、上記右仮想カメラと上記左仮想カメラの位置および姿勢を決定してもよい。
上記構成例によれば、上記所定の撮像対象が一方の実カメラの撮影範囲から外れたとしても、上記右仮想カメラおよび上記左仮想カメラを適切に設定できるので、仮想オブジェクトの立体表示を継続することができる。
好ましい他の構成例として、上記実カメラ選択手段は、上記2つの実カメラのうちの左目用の実カメラから出力される実世界画像データにおける上記所定の撮像対象の位置が当該実世界画像データの右端領域へ進入したことに応じて、上記左目用の実カメラから上記右目用の実カメラへと切り替え、上記右目用の実カメラから出力される実世界画像データにおける上記所定の撮像対象の位置が当該実世界画像データの左端領域へ進入したことに応じて、上記右目用の実カメラから上記左目用の実カメラへと切り替えてもよい。
好ましい他の構成例として、上記第1位置姿勢算出手段および上記表示制御手段によって利用される上記実世界画像データは、上記実カメラからリアルタイムに出力される実世界画像データであってもよい。
上記構成例によれば、立体表示装置の画面において、実世界に仮想オブジェクトがリアルタイムに実在しているように見せることができる。
好ましい他の構成例として、上記コンピュータは、上記2つの実カメラと上記立体表示装置とを備えた情報処理装置に内蔵されていてもよい。
第1の関連実施形態の画像表示装置は、右目用の実カメラおよび左目用の実カメラからの出力を利用して、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示装置であって、第1位置姿勢算出手段、仮想カメラ設定手段、右仮想空間画像生成手段、左仮想空間画像生成手段、および、表示制御手段を備える。上記第1位置姿勢算出手段は、上記右目用の実カメラから出力される実世界画像データと上記左目用の実カメラから出力される実世界画像データのうち、一方の実カメラから出力される実世界画像データ内の所定の撮像対象を認識することにより、当該一方の実カメラと上記所定の撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報を算出する。
上記仮想カメラ設定手段は、上記第1位置姿勢算出手段によって算出された上記位置姿勢情報を用いて、所定の仮想空間における右目用の画像を生成するための右仮想カメラと左目用の画像を生成するための左仮想カメラの両方についての位置および姿勢を決定する。上記右仮想空間画像生成手段は、上記右仮想カメラから見た上記仮想空間を示す右仮想空間画像を生成する。上記左仮想空間画像生成手段は、上記左仮想カメラから見た上記仮想空間を示す左仮想空間画像を生成する。上記表示制御手段は、上記右目用の実カメラから出力される実世界画像データに上記右仮想空間画像を合成し、かつ、上記左目用の実カメラから出力される実世界画像データに上記左仮想空間画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
第1の関連実施形態の画像表示システムは、右目用の実カメラおよび左目用の実カメラからの出力を利用して、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示システムであって、第1位置姿勢算出手段、仮想カメラ設定手段、右仮想空間画像生成手段、左仮想空間画像生成手段、および、表示制御手段を備える。上記第1位置姿勢算出手段は、上記右目用の実カメラから出力される実世界画像データと上記左目用の実カメラから出力される実世界画像データのうち、一方の実カメラから出力される実世界画像データ内の所定の撮像対象を認識することにより、当該一方の実カメラと上記所定の撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報を算出する。上記仮想カメラ設定手段は、上記第1位置姿勢算出手段によって算出された上記位置姿勢情報を用いて、所定の仮想空間における右目用の画像を生成するための右仮想カメラと左目用の画像を生成するための左仮想カメラの両方についての位置および姿勢を決定する。上記右仮想空間画像生成手段は、上記右仮想カメラから見た上記仮想空間を示す右仮想空間画像を生成する。上記左仮想空間画像生成手段は、上記左仮想カメラから見た上記仮想空間を示す左仮想空間画像を生成する。上記表示制御手段は、上記右目用の実カメラから出力される実世界画像データに上記右仮想空間画像を合成し、かつ、上記左目用の実カメラから出力される実世界画像データに上記左仮想空間画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
第1の関連実施形態の画像表示方法は、右目用の実カメラおよび左目用の実カメラからの出力を利用して、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示方法であって、第1位置姿勢算出ステップ、仮想カメラ設定ステップ、右仮想空間画像生成ステップ、左仮想空間画像生成ステップ、および、表示制御ステップを備える。上記第1位置姿勢算出ステップでは、上記右目用の実カメラから出力される実世界画像データと上記左目用の実カメラから出力される実世界画像データのうち、一方の実カメラから出力される実世界画像データ内の所定の撮像対象を認識することにより、当該一方の実カメラと上記所定の撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報を算出する。上記仮想カメラ設定ステップでは、上記第1位置姿勢算出ステップにおいて算出された上記位置姿勢情報を用いて、所定の仮想空間における右目用の画像を生成するための右仮想カメラと左目用の画像を生成するための左仮想カメラの両方についての位置および姿勢を決定する。上記右仮想空間画像生成ステップでは、上記右仮想カメラから見た上記仮想空間を示す右仮想空間画像を生成する。上記左仮想空間画像生成ステップでは、上記左仮想カメラから見た上記仮想空間を示す左仮想空間画像を生成する。上記表示制御ステップでは、上記右目用の実カメラから出力される実世界画像データに上記右仮想空間画像を合成し、かつ、上記左目用の実カメラから出力される実世界画像データに上記左仮想空間画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
第2の関連実施形態の画像表示プログラムは、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示プログラムであって、コンピュータを、第1実世界画像取得手段、第2実世界画像取得手段、カメラ相対位置関係算出手段、仮想カメラ設定手段、第1仮想空間画像生成手段、第2仮想空間画像生成手段、および表示制御手段として機能させる。第1実世界画像取得手段は、左目用の実カメラによって撮像された第1実世界画像を取得する。第2実世界画像取得手段は、右目用の実カメラによって撮像された第2実世界画像を取得する。カメラ相対位置関係算出手段は、上記第1実世界画像における所定の撮像対象の見え方と上記第2実世界画像における当該撮像対象の見え方に基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出する。仮想カメラ設定手段は、所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目用の画像を生成するための右仮想カメラの位置を、上記カメラ相対位置関係算出手段によって算出された相対位置関係に応じて離れるように、それぞれ決定する。第1仮想空間画像生成手段は、上記左仮想カメラから見た上記仮想空間を示す第1仮想空間画像を生成する。第2仮想空間画像生成手段は、上記右仮想カメラから見た上記仮想空間を示す第2仮想空間画像を生成する。表示制御手段は、上記第1実世界画像に上記第1仮想空間画像を合成し、かつ、上記第2実世界画像に上記第2仮想空間画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
上記構成によれば、上記2つの実カメラで撮像された実世界画像を用いて、これら2つの実カメラの相対位置関係を算出し、こうして算出した相対位置関係に基づいて仮想空間における上記2つの仮想カメラの位置が決定される。よって、例えば、上記2つの実カメラの相対位置関係が既知で無い場合や、上記2つの実カメラの取り付け精度の誤差がある場合であっても、上記右仮想カメラと上記左仮想カメラの相対位置関係を適切に設定でき、仮想オブジェクトを適切に立体表示することができる。
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記第1実世界画像における上記撮像対象の位置および姿勢に基づいて、上記左目用の実カメラと上記撮像対象との間の少なくとも相対位置を算出する第1位置姿勢算出手段、および、上記第2実世界画像における上記撮像対象の位置および姿勢に基づいて、上記右目用の実カメラと上記撮像対象との間の少なくとも相対位置を算出する第2位置姿勢算出手段としてさらに機能させ、上記カメラ相対位置関係算出手段は、上記第1位置姿勢算出手段によって算出される、上記撮像対象に対する上記左目用の実カメラの相対位置と、上記第2位置姿勢算出手段によって算出される、上記撮像対象に対する上記右目用の実カメラの相対位置とに基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出してもよい。
他の好ましい構成例として、上記第1位置姿勢算出手段および上記第2位置姿勢算出手段の少なくとも一方は、上記実世界画像における上記撮像対象の位置および姿勢に基づいて、上記実カメラと上記撮像対象との間の相対位置に加えて相対姿勢を算出し、上記仮想カメラ設定手段は、上記第1位置姿勢算出手段および上記第2位置姿勢算出手段の少なくとも一方によって算出される上記実カメラと上記撮像対象との間の相対姿勢に基づいて、上記左仮想カメラおよび上記右仮想カメラの姿勢を決定してもよい。
他の好ましい構成例として、上記カメラ相対位置関係算出手段によって算出される上記相対位置関係は、上記左目用の実カメラと上記右目用の実カメラの間隔であってもよい。
他の好ましい構成例として、上記カメラ相対位置関係算出手段は、上記第1実世界画像に基づいて算出される上記左目用の実カメラに対する上記撮像対象の相対位置と、上記第2実世界画像に基づいて算出される上記右目用の実カメラに対する上記撮像対象の相対位置との差に基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出してもよい。
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記第1実世界画像に基づいて、上記撮像対象を基準とした座標系で表される座標を上記左目用の実カメラを基準とした座標系で表される座標へと変換する第1変換行列を算出する第1変換行列算出手段、および、上記第2実世界画像に基づいて、上記撮像対象を基準とした座標系で表される座標を上記右目用の実カメラを基準とした座標系で表される座標へと変換する第2変換行列を算出する第2変換行列算出手段としてさらに機能させ、上記カメラ相対位置関係算出手段は、原点を表す3次元ベクトルに対して、上記第1変換行列と上記第1変換行列のいずれか一方の変換行列を乗算し、さらに、いずれか他方の変換行列の逆行列を乗算することによって、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を示す相対位置ベクトルを算出し、上記仮想カメラ設定手段は、上記相対位置ベクトルの大きさに基づいて上記左仮想カメラと上記右仮想カメラの間隔を設定してもよい。
他の好ましい構成例として、上記仮想カメラ設定手段は、撮影方向が互いに平行になるように、上記左仮想カメラおよび上記右仮想カメラの姿勢を設定してもよい。
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記カメラ相対位置関係算出手段によって算出された上記相対位置関係と、上記左目用の実カメラと上記右目用の実カメラの設計上の相対位置関係とに基づいて、実世界のスケールに応じた所定の処理を仮想空間において実行するスケール関連処理手段としてさらに機能させてもよい。
上記構成例によれば、仮想空間において、実世界のスケールに対応した処理が可能となる。
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記カメラ相対位置関係算出手段によって上記左目用の実カメラと上記右目用の実カメラの相対位置関係が算出された後、当該相対位置関係が決定された時点から、上記左目用の実カメラまたは上記右目用の実カメラに対する上記撮像対象の奥行距離が所定範囲を超えて変化したか否かを判定する奥行変化判定手段としてさらに機能させ、上記カメラ相対位置関係算出手段は、上記奥行変化判定手段の判定結果が否定である間は、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出し直すことなく、直前に決定した相対位置関係をそのまま維持してもよい。
上記構成例によれば、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を常に更新する必要がなく、処理負荷を低減できる。
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記カメラ相対位置関係算出手段によって上記左目用の実カメラと上記右目用の実カメラの相対位置関係が算出された後、当該相対位置関係が決定された時点から、上記左目用の実カメラまたは上記右目用の実カメラに対する上記撮像対象の奥行距離が所定範囲を超えて変化したか否かを判定する奥行変化判定手段としてさらに機能させ、上記カメラ相対位置関係算出手段は、上記奥行変化判定手段の判定結果が肯定である場合に、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出し直してもよい。
上記構成例によれば、算出された上記左目用の実カメラと上記右目用の実カメラの相対位置関係の信頼度の低下を防止することができる。
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記撮像対象が含まれている実世界画像に基づいて、上記左目用の実カメラまたは上記右目用の実カメラに対する上記撮像対象の奥行距離を算出する奥行距離算出手段としてさらに機能させ、上記奥行変化判定手段は、カメラ相対位置関係算出手段によって上記左目用の実カメラと上記右目用の実カメラの相対位置関係が算出された時点において上記奥行距離算出手段によって算出された基準奥行距離と、その後に上記奥行距離算出手段によって算出された最新奥行距離とを比較することによって、上記左目用の実カメラまたは上記右目用の実カメラに対する上記撮像対象の奥行距離が所定範囲を超えて変化したか否かを判定してもよい。
他の好ましい構成例として、上記奥行距離算出手段は、上記第1実世界画像取得手段または上記第2実世界画像取得手段によって新たな実世界画像が取得される度に、上記左目用の実カメラまたは上記右目用の実カメラに対する上記撮像対象の奥行距離を算出する処理を実行し、当該処理を複数回実行することによって得られた複数回分の奥行距離算出結果に基づいて上記基準奥行距離を算出してもよい。
上記構成によれば、算出される基準奥行距離の信頼度が向上する。
他の好ましい構成例として、上記奥行距離算出手段は、上記複数回の奥行距離算出結果が全て所定の範囲に収まっている場合にのみ、当該複数回の奥行距離算出結果に基づいて上記基準奥行距離を算出してもよい。
上記構成によれば、算出される基準奥行距離の信頼度が向上する。
第2の関連実施形態の画像表示装置は、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示装置であって、第1実世界画像取得手段、第2実世界画像取得手段、カメラ相対位置関係算出手段、仮想カメラ設定手段、第1仮想空間画像生成手段、第2仮想空間画像生成手段、および表示制御手段を備える。第1実世界画像取得手段は、左目用の実カメラによって撮像された第1実世界画像を取得する。第2実世界画像取得手段は、右目用の実カメラによって撮像された第2実世界画像を取得する。カメラ相対位置関係算出手段は、上記第1実世界画像における所定の撮像対象の見え方と上記第2実世界画像における当該撮像対象の見え方に基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出する。仮想カメラ設定手段は、所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目用の画像を生成するための右仮想カメラの位置を、上記カメラ相対位置関係算出手段によって算出された相対位置関係に応じて離れるように、それぞれ決定する。第1仮想空間画像生成手段は、上記左仮想カメラから見た上記仮想空間を示す第1仮想空間画像を生成する。第2仮想空間画像生成手段は、上記右仮想カメラから見た上記仮想空間を示す第2仮想空間画像を生成する。表示制御手段は、上記第1実世界画像に上記第1仮想空間画像を合成し、かつ、上記第2実世界画像に上記第2仮想空間画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
第2の関連実施形態の画像表示システムは、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示システムであって、第1実世界画像取得手段、第2実世界画像取得手段、カメラ相対位置関係算出手段、仮想カメラ設定手段、第1仮想空間画像生成手段、第2仮想空間画像生成手段、および表示制御手段を備える。第1実世界画像取得手段は、左目用の実カメラによって撮像された第1実世界画像を取得する。第2実世界画像取得手段は、右目用の実カメラによって撮像された第2実世界画像を取得する。カメラ相対位置関係算出手段は、上記第1実世界画像における所定の撮像対象の見え方と上記第2実世界画像における当該撮像対象の見え方に基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出する。仮想カメラ設定手段は、所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目用の画像を生成するための右仮想カメラの位置を、上記カメラ相対位置関係算出手段によって算出された相対位置関係に応じて離れるように、それぞれ決定する。第1仮想空間画像生成手段は、上記左仮想カメラから見た上記仮想空間を示す第1仮想空間画像を生成する。第2仮想空間画像生成手段は、上記右仮想カメラから見た上記仮想空間を示す第2仮想空間画像を生成する。表示制御手段は、上記第1実世界画像に上記第1仮想空間画像を合成し、かつ、上記第2実世界画像に上記第2仮想空間画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
第2の関連実施形態の画像表示方法は、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示方法であって、第1実世界画像取得ステップ、第2実世界画像取得ステップ、カメラ相対位置関係算出ステップ、仮想カメラ設定ステップ、第1仮想空間画像生成ステップ、第2仮想空間画像生成ステップ、および表示制御ステップを備える。第1実世界画像取得ステップでは、左目用の実カメラによって撮像された第1実世界画像を取得する。第2実世界画像取得ステップでは、右目用の実カメラによって撮像された第2実世界画像を取得する。カメラ相対位置関係算出ステップでは、上記第1実世界画像における所定の撮像対象の見え方と上記第2実世界画像における当該撮像対象の見え方に基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出する。仮想カメラ設定ステップでは、所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目用の画像を生成するための右仮想カメラの位置を、上記カメラ相対位置関係算出ステップにおいて算出された相対位置関係に応じて離れるように、それぞれ決定する。第1仮想空間画像生成ステップでは、上記左仮想カメラから見た上記仮想空間を示す第1仮想空間画像を生成する。第2仮想空間画像生成ステップでは、上記右仮想カメラから見た上記仮想空間を示す第2仮想空間画像を生成する。表示制御ステップでは、上記第1実世界画像に上記第1仮想空間画像を合成し、かつ、上記第2実世界画像に上記第2仮想空間画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
第3の関連実施形態の画像表示プログラムは、右目用の実カメラ撮像部および左目用の実カメラ撮像部からの出力を利用して、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示プログラムであるコンピュータを、前記2つの実カメラ撮像部からそれぞれ出力される2つの実世界画像データのそれぞれについて、当該各実世界画像データ内の所定の撮像対象を認識することにより、前記2つの実カメラ撮像部と当該撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報をそれぞれ算出する位置姿勢算出手段、前記位置姿勢算出手段によって算出された2つの位置姿勢情報を統合して、単一の位置姿勢情報を算出する位置姿勢統合手段、前記位置姿勢統合手段によって統合された単一の前記位置姿勢情報に基づいて、所定の仮想空間における右目用の仮想画像を生成するための右仮想カメラおよび左目用の仮想画像を生成するための左仮想カメラの両方についての位置および姿勢を決定する仮想カメラ設定手段、前記右仮想カメラから見た前記仮想空間を示す右仮想空間画像を生成する右仮想空間画像生成手段、前記左仮想カメラから見た前記仮想空間を示す左仮想空間画像を生成する左仮想空間画像生成手段、および、前記右目用の実カメラ撮像部から出力される実世界画像データに前記右仮想空間画像を合成し、かつ、前記左目用の実カメラ撮像部から出力される実世界画像データに前記左仮想空間画像を合成して、前記立体表示装置に立体視のための画像を出力する表示制御手段として機能させる。
また、この関連実施形態では、前記仮想カメラ設定手段は、前記右仮想カメラと前記左仮想カメラとの間の相対姿勢の関係が、前記右目用の実カメラおよび前記左目用の実カメラとの間の設計上の相対姿勢の関係と同一になるように、前記右仮想カメラと前記左仮想カメラの位置および姿勢を決定するようにしてもよい。
また、この関連実施形態では、前記位置姿勢統合手段は、前記位置姿勢算出手段によって算出された右目用の実カメラ撮像部と前記撮像対象との相対的な姿勢の情報と、左目用の実カメラ撮像部と前記撮像対象との相対的な姿勢の情報を用いて、それらの姿勢の情報を統合した単一の姿勢を算出し、前記仮想カメラ設定手段は、前記位置姿勢統合手段によって統合された姿勢を前記右仮想カメラおよび左仮想カメラの姿勢として用いるようにしてもよい。
また、この関連実施形態では、前記位置姿勢統合手段は、前記位置姿勢算出手段によって算出された右目用の実カメラ撮像部と前記撮像対象との相対的な位置の情報と、左目用の実カメラ撮像部と前記撮像対象との相対的な位置の位置を用いて、それらの位置の情報を統合した単一の位置を算出し、前記仮想カメラ設定手段は、前記位置姿勢統合手段によって統合された位置から対称な位置に前記右仮想カメラおよび左仮想カメラの位置を設定するようにしてもよい。
また、この関連実施形態では、前記位置姿勢統合手段は、前記位置姿勢算出手段によって算出された右目用の実カメラ撮像部と前記撮像対象との相対的な姿勢の情報と、左目用の実カメラ撮像部と前記撮像対象との相対的な姿勢の情報を用いて、それらの姿勢の情報を平均した姿勢を算出し、前記仮想カメラ設定手段は、前記位置姿勢統合手段によって平均された姿勢を前記右仮想カメラおよび左仮想カメラの姿勢として用いるようにしてもよい。
また、この関連実施形態では、前記位置姿勢統合手段は、前記位置姿勢算出手段によって算出された右目用の実カメラ撮像部と前記撮像対象との相対的な位置の情報と、左目用の実カメラ撮像部と前記撮像対象との相対的な位置の位置を用いて、それらの位置の中点を算出し、前記仮想カメラ設定手段は、前記位置姿勢統合手段によって算出された前記中点から対象な位置に前記右仮想カメラおよび左仮想カメラの位置を設定するようにしてもよい。
また、この関連実施形態では、前記コンピュータを、前記右仮想カメラと前記左仮想カメラの間の距離を決定する仮想カメラ間距離決定手段としてさらに機能させ、前記仮想カメラ設定手段は、前記位置姿勢統合手段によって統合された位置から前記仮想カメラ間距離決定手段によって決定された前記距離だけ対称に離れた位置に記右仮想カメラおよび左仮想カメラの位置を設定するようにしてもよい。
また、この関連実施形態では、前記仮想カメラ距離決定手段は、前記右目用の実カメラから出力される実世界画像データと前記左目用の実カメラから出力される実世界画像データの視差に基づいて前記右仮想カメラと前記左仮想カメラの間の距離を決定するようにしてもよい。
また、この関連実施形態では、前記仮想カメラ距離定手段は、前記位置姿勢算出手段によって算出された右目用の実カメラ撮像部と前記撮像対象との相対的な位置および姿勢の情報と、左目用の実カメラ撮像部と前記撮像対象との相対的な位置および姿勢の情報を用いて、前記右仮想カメラと前期左仮想カメラとの間の距離を算出するようにしてもよい。
第3の関連実施形態の画像表示装置は、右目用の実カメラおよび左目用の実カメラからの出力を利用して、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示装置である。前記2つの実カメラ撮像部からそれぞれ出力される2つの実世界画像データのそれぞれについて、当該各実世界画像データ内の所定の撮像対象を認識することにより、前記2つの実カメラ撮像部と当該撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報をそれぞれ算出する位置姿勢算出手段、前記位置姿勢算出手段によって算出された2つの位置姿勢情報を統合して、単一の位置姿勢情報を算出する位置姿勢統合手段、前記位置姿勢統合手段によって統合された単一の前記位置姿勢情報に基づいて、所定の仮想空間における右目用の仮想画像を生成するための右仮想カメラおよび左目用の仮想画像を生成するための左仮想カメラの両方についての位置および姿勢を決定する仮想カメラ設定手段、前記右仮想カメラから見た前記仮想空間を示す右仮想空間画像を生成する右仮想空間画像生成手段、前記左仮想カメラから見た前記仮想空間を示す左仮想空間画像を生成する左仮想空間画像生成手段、および、前記右目用の実カメラから出力される実世界画像データに前記右仮想空間画像を合成し、かつ、前記左目用の実カメラから出力される実世界画像データに前記左仮想空間画像を合成して、前記立体表示装置に立体視のための画像出力を行う表示制御手段を備える。
第3の関連実施形態の画像表示システムは、右目用の実カメラおよび左目用の実カメラからの出力を利用して、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示システムである。前記2つの実カメラ撮像部からそれぞれ出力される2つの実世界画像データのそれぞれについて、当該各実世界画像データ内の所定の撮像対象を認識することにより、前記2つの実カメラ撮像部と当該撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報をそれぞれ算出する位置姿勢算出手段、前記位置姿勢算出手段によって算出された2つの位置姿勢情報を統合して、単一の位置姿勢情報を算出する位置姿勢統合手段、前記位置姿勢統合手段によって統合された単一の前記位置姿勢情報に基づいて、所定の仮想空間における右目用の仮想画像を生成するための右仮想カメラおよび左目用の仮想画像を生成するための左仮想カメラの両方についての位置および姿勢を決定する仮想カメラ設定手段、前記右仮想カメラから見た前記仮想空間を示す右仮想空間画像を生成する右仮想空間画像生成手段、前記左仮想カメラから見た前記仮想空間を示す左仮想空間画像を生成する左仮想空間画像生成手段、および、前記右目用の実カメラから出力される実世界画像データに前記右仮想空間画像を合成し、かつ、前記左目用の実カメラから出力される実世界画像データに前記左仮想空間画像を合成して、前記立体表示装置に立体視のための画像出力を行う表示制御手段を備える。
第3の関連実施形態の画像表示方法は、右目用の実カメラおよび左目用の実カメラからの出力を利用して、立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示する画像表示方法である。前記2つの実カメラ撮像部からそれぞれ出力される2つの実世界画像データのそれぞれについて、当該各実世界画像データ内の所定の撮像対象を認識することにより、前記2つの実カメラ撮像部と当該撮像対象との間の相対的な位置および姿勢を示す位置姿勢情報をそれぞれ算出する位置姿勢算出ステップ、前記位置姿勢算出ステップにおいて算出された2つの位置姿勢情報を統合して、単一の位置姿勢情報を算出する位置姿勢統合ステップ、前記位置姿勢統合ステップによって統合された単一の前記位置姿勢情報に基づいて、所定の仮想空間における右目用の仮想画像を生成するための右仮想カメラおよび左目用の仮想画像を生成するための左仮想カメラの両方についての位置および姿勢を決定する仮想カメラ設定ステップ、前記右仮想カメラから見た前記仮想空間を示す右仮想空間画像を生成する右仮想空間画像生成ステップ、前記左仮想カメラから見た前記仮想空間を示す左仮想空間画像を生成する左仮想空間画像生成ステップ、および、前記右目用の実カメラから出力される実世界画像データに前記右仮想空間画像を合成し、かつ、前記左目用の実カメラから出力される実世界画像データに前記左仮想空間画像を合成して、前記立体表示装置に立体視のための画像出力を行う表示制御ステップを備える。
第4の関連実施形態の第1の局面に係る情報処理プログラムは、撮像手段と入力手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、撮像画像データ取得手段、入力データ取得手段、検出手段、算出手段、仮想カメラ設定手段、生成手段及び表示制御手段として機能させる。撮像画像データ取得手段は、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する。入力データ取得手段は、入力手段により入力された入力画像を示す入力データを逐次取得する。検出手段は、撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する。算出手段は、特定対象物の検出結果に基づいて、撮像手段と特定の対象物との相対的位置を算出する。仮想カメラ設定手段は、算出手段による算出結果に基づいて、仮想空間内の仮想カメラを逐次設定する。生成手段は、入力データ取得手段により逐次入力された入力データにより示される仮想空間内のオブジェクトを仮想カメラで撮像して、オブジェクトのオブジェクト画像を生成する。表示制御手段は、画面上の現実空間に生成手段により生成されたオブジェクト画像を重ね合わせた重畳画像を表示手段に逐次表示させる。
この構成によると、画面上の現実空間にオブジェクト画像が重ね合わせられた重畳画像が表示手段に表示される。この場合において、オブジェクト画像は、ポインティングデバイス等の入力手段からユーザが逐次入力した入力画像であって、例えば手書き画像である。このオブジェクト画像は、仮想カメラで撮像されて生成されたオブジェクト画像データで構成される。この仮想カメラの仮想空間内における設定が、撮像画像に含まれるマーカ等の特定対象物の検出(認識)結果に基づいて、逐次変更される。このため、撮像方向が変化することによるマーカ等の見え方の変化に対応して、仮想カメラの設定が変更される。したがって、仮想カメラにより撮影されたオブジェクト画像データの表示は、このような撮像方向の変化に対応して変更される。その結果、ユーザが手書き等で作成したオブジェクト画像を現実世界に存在するように表示し、自然な拡張現実感を実現することができる。
好ましくは、入力手段を、ポインティングデバイスで構成することができる。この場合において、入力データ取得手段は、ポインティングデバイスへ入力された手書きの軌跡で構成されるオブジェクトを示す入力データを所定の時間間隔で取得するように構成することができる。表示制御手段は、所定の時間間隔における手書きの進捗を反映させた重畳画像を表示手段に表示させるように構成することができる。
この構成によると、ポインティングデバイスに手書き入力された軌跡で構成されるオブジェクト画像が背景画像に重ね合わせられて、現実空間に存在するように表示される。このとき、オブジェクトを示す入力データを所定の時間間隔で取得されるので、ユーザの手書き操作に比較して所定時間を短く設定すれば、手書き途中のオブジェクトを表示させることができる。このため、ユーザは、表示される手書き途中のオブジェクト画像を確認しながら、オブジェクト画像を完成させることができる。
好ましくは、表示手段は、重畳画像が表示される第1の画面領域とは別の第2の画面領域を含むように構成することができる。この場合において、表示制御手段は、第1の領域に重畳画像を表示させるとともに、第2の表示領域に入力画像を表示させるように構成することができる。
この構成によると、第1の画面領域に重畳画像が表示され、第2の画面領域に入力画像が表示される。このため、第1の画面領域に表示された重畳画像では入力画像を識別することが困難な場合であっても、第2の画面領域に表示された入力画像で確認することができる。
好ましくは、このプログラムは、コンピュータを、オブジェクトの表示態様を変化させる変化手段としてさらに機能させるように構成することができる。この場合において、表示制御手段は、撮像画像データと、変化手段により表示態様が変化したオブジェクトを示すオブジェクト画像データとを重ね合わせた重畳画像を前記表示手段に逐次表示させるように構成することができる。
現実空間に重ね合わせられて、現実空間に存在するように表示されるオブジェクトは、その表示態様(表示位置、表示形状)が変化して表示される。このため、例えば、より強く現実感をユーザに与えるように表示態様を変化させることができたり、ユーザがより強く興味を引くように表示態様を変化させたりすることができる。
好ましくは、変化手段は、オブジェクトの表示位置を所定の規則に応じて変化させるように構成することができる。
オブジェクトが表示される位置を変化させることにより、ユーザに、より強い現実感を与えたり、より強い興味を与えたりすることができる。このような変化の例として、オブジェクトを上下又は左右に揺らして表示させることが挙げられる。
好ましくは、変化手段は、オブジェクトの表示位置を時間の経過に応じて変化させるように構成することができる。
オブジェクトが表示される位置を時間の経過に応じて変化させることにより、ユーザに、より強い現実感を与えたり、より強い興味を与えたりすることができる。このような変化の例として、予め設定された時間が経過すると(すなわち周期的に)オブジェクトを上下又は左右に動かすことが挙げられる。
好ましくは、変化手段は、オブジェクトの表示形状を変化させるように構成することができる。
オブジェクトの表示形状を変化させることにより、ユーザに、より強い現実感を与えたり、より強い興味を与えたりすることができる。このような変化の例として、オブジェクトを拡大したり縮小したり、オブジェクトを縦方向又は横方向に拡張又は伸縮したりすることが挙げられる。さらに、このとき、周期的に形状を変化させるようにしても構わない。
好ましくは、変化手段は、オブジェクトの影をオブジェクトに付加した表示形状に変化させるように構成することができる。
オブジェクトの影をオブジェクトに付加することにより、ユーザに、より強い現実感を与えたり、より強い興味を与えたりすることができる。
好ましくは、変化手段は、オブジェクトの厚みを変化させるように構成することができる。
オブジェクトに厚みを持たせることにより、ユーザに、より強い現実感を与えたり、より強い興味を与えたりすることができる。
好ましくは、変化手段は、複数のオブジェクトを並べて配置することにより、オブジェクトの厚みを変化させるように構成することができる。
平面画像であるオブジェクト画像を並べて配置することにより、オブジェクトに厚みを与えて、ユーザに、より強い現実感を与えたり、より強い興味を与えたりすることができる。
第4の関連実施形態の第2の局面に係る情報処理装置は、撮像画像を撮像する撮像手段と、ユーザにより入力画像が入力される入力手段と、画面上において現実空間を視認可能な表示手段と、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段と、入力手段により入力された入力画像を示す入力データを逐次取得する入力データ取得手段と、撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段と、特定対象物の検出結果に基づいて、撮像手段と特定の対象物との相対的位置を算出する算出手段と、算出手段による算出結果に基づいて、仮想空間内の仮想カメラを逐次設定する仮想カメラ設定手段と、入力データ取得手段により逐次入力された入力データにより示される仮想空間内のオブジェクトを仮想カメラで撮像して、オブジェクトのオブジェクト画像を生成する生成手段と、画面上の現実空間に生成手段により生成されたオブジェクト画像を重ね合わせた重畳画像を表示手段に逐次表示させる表示制御手段とを含む。
第4の関連実施形態の第3の局面に係る情報処理システムは、撮像画像を撮像する撮像手段と、ユーザにより入力画像が入力される入力手段と、画面上において現実空間を視認可能な表示手段と、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段と、入力手段により入力された入力画像を示す入力データを逐次取得する入力データ取得手段と、撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段と、特定対象物の検出結果に基づいて、撮像手段と特定の対象物との相対的位置を算出する算出手段と、算出手段による算出結果に基づいて、仮想空間内の仮想カメラを逐次設定する仮想カメラ設定手段と、入力データ取得手段により逐次入力された入力データにより示される仮想空間内のオブジェクトを仮想カメラで撮像して、オブジェクトのオブジェクト画像を生成する生成手段と、画面上の現実空間に生成手段により生成されたオブジェクト画像を重ね合わせた重畳画像を表示手段に逐次表示させる表示制御手段とを含む。
第4の関連実施形態の第4の局面に係る情報処理方法は、撮像手段により撮像画像を撮像する撮像ステップと、ユーザにより入力画像が入力される入力ステップと、画面上において現実空間を視認可能な表示ステップと、撮像ステップにて撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得ステップと、入力ステップにて入力された入力画像を示す入力データを逐次取得する入力データ取得ステップと、撮像画像データ取得ステップにて逐次取得された撮像画像データから特定対象物を検出する検出ステップと、特定対象物の検出結果に基づいて、撮像手段と特定の対象物との相対的位置を算出する算出ステップと、算出ステップによる算出結果に基づいて、仮想空間内の仮想カメラを逐次設定する仮想カメラ設定ステップと、入力データ取得ステップにて逐次入力された入力データにより示される仮想空間内のオブジェクトを仮想カメラで撮像して、オブジェクトのオブジェクト画像を生成する生成ステップと、画面上の現実空間に生成ステップにて生成されたオブジェクト画像を重ね合わせた重畳画像を表示ステップにて逐次表示させる表示制御ステップとを含む。
第4の関連実施形態の第2の局面に係る情報処理装置、第3の局面に係る情報処理システム及び第4の局面に係る情報処理方法によると、第1の局面に係る情報処理プログラムと同様の作用効果を発現する。
第5の関連実施形態の画像処理プログラムの一構成例は、表示装置に画像を表示する画像処理装置のコンピュータを、撮像画像取得手段、位置姿勢算出手段、音声データ取得手段、音声認識手段、設定手段、画像生成手段、および表示制御手段として機能させる。撮像画像取得手段は、実カメラによって撮像された撮像画像を繰り返し取得する。位置姿勢算出手段は、実空間における実カメラの位置および姿勢にしたがって決められる位置姿勢情報を繰り返し算出する。音声データ取得手段は、音声入力デバイスから音声信号を示す音声データを取得する。音声認識手段は、音声入力デバイスに入力された音声を認識する。設定手段は、撮像画像に付加表示する仮想オブジェクトまたは文字を付加表示物として設定し、音声認識手段の音声認識結果に基づいて、当該付加表示物の表示位置、姿勢、および表示態様から成る群から選ばれた少なくとも1つを設定する。画像生成手段は、撮像画像における位置姿勢情報に応じた位置を基準として、設定手段が設定した付加表示物を重畳して合成画像を繰り返し生成する。表示制御手段は、合成画像を表示装置に繰り返し表示する。
上記によれば、撮像画像に付加表示物を付加表示する際、付加表示物に対して音声で操作することができ、実世界画像に付加表示された仮想物体や文字等に対して新たな入力方法を用いて簡便性の高い操作を行うことができる。
また、上記位置姿勢算出手段は、撮像画像に含まれる特定の撮像対象物または特徴点を検出し、当該検出結果に基づいて当該撮像対象物または当該特徴点と実カメラとの間の相対的な位置および姿勢を示す情報を位置姿勢情報として算出してもよい。
上記によれば、実空間に配置された所定のマーカ等の撮像対象物や自然特徴点を用いることによって、実空間における実カメラの位置や姿勢を正確に認識することができる。
また、上記位置姿勢算出手段は、実空間における実カメラの地理的な位置および実カメラの撮像方向の方位の少なくとも一方を用いて、位置姿勢情報を算出してもよい。
上記によれば、GPS等による実カメラの地理的な位置および磁気センサ等による実カメラの撮像方向の方位の少なくとも一方を用いることによって、実空間における実カメラの位置や姿勢を正確に認識することができる。
また、上記設定手段は、仮想オブジェクトを付加表示物として設定してもよい。また、上記画像生成手段は、仮想カメラ設定手段、仮想オブジェクト配置手段、および仮想世界画像生成手段を含んでいてもよい。仮想カメラ設定手段は、仮想世界において、位置姿勢情報に基づいて仮想カメラの位置および姿勢を設定する。仮想オブジェクト配置手段は、仮想世界に設定手段が設定した仮想オブジェクトを配置する。仮想世界画像生成手段は、仮想カメラから見た仮想世界の画像を仮想世界画像として生成する。この場合、上記画像生成手段は、撮像画像に仮想世界画像を重畳した画像を合成画像として生成してもよい。
上記によれば、実空間における実カメラの位置および姿勢にしたがって決められる位置姿勢情報に基づいて設定された仮想カメラから見た仮想世界内の仮想オブジェクトが仮想世界画像として撮像画像に合成されるため、仮想オブジェクトがあたかも実世界に本当に存在しているかのように見える画像を表示することができる。
また、上記設定手段は、音声入力デバイスに入力された音声が第1の音声であると認識され、かつ、位置姿勢情報が第1の条件を満たす場合に第1の動作に基づいて仮想オブジェクトの表示位置、姿勢、および表示態様から成る群から選ばれた少なくとも1つを設定し、音声入力デバイスに入力された音声が当該第1の音声であると認識され、かつ、位置姿勢情報が当該第1の条件を満たさない場合に第2の動作に基づいて仮想オブジェクトの表示位置、姿勢、および表示態様から成る群から選ばれた少なくとも1つを変更してもよい。
上記によれば、同じ音声を入力したとしても、実空間における実カメラの位置および姿勢によって仮想オブジェクトの動作が異なるため、さらに拡張現実とのインタラクティブ性が高い操作が可能となる。
また、上記位置姿勢算出手段は、撮像対象物と実カメラとの間の相対的な位置および姿勢を示す情報を位置姿勢情報として算出してもよい。上記設定手段は、仮想オブジェクトを付加表示物として設定してもよい。上記画像生成手段は、仮想カメラ設定手段、仮想オブジェクト配置手段、および仮想世界画像生成手段を含んでいてもよい。仮想カメラ設定手段は、位置姿勢情報に基づいて撮像対象物に対応する位置および方向を仮想世界内に設定し、位置姿勢情報に基づいて当該仮想世界において当該撮像対象物に対応する位置および方向を基準として仮想カメラの位置および姿勢を設定する。仮想オブジェクト配置手段は、仮想世界に設定手段が設定した仮想オブジェクトを、撮像対象物に対応する位置を基準として配置する。仮想世界画像生成手段は、仮想カメラから見た仮想世界の画像を仮想世界画像として生成する。この場合、上記設定手段は、音声入力デバイスに入力された音声が第1の音声であると認識された場合、仮想世界における撮像対象物に対応する方向を基準として動作する第1の動作に基づいて仮想オブジェクトの表示位置、姿勢、および表示態様から成る群から選ばれた少なくとも1つを設定し、音声入力デバイスに入力された音声が第2の音声であると認識された場合、仮想世界における仮想カメラへの方向を基準として動作する第2の動作に基づいて仮想オブジェクトの表示位置、姿勢、および表示態様から成る群から選ばれた少なくとも1つを変更してもよい。上記画像生成手段は、撮像画像に仮想世界画像を重畳した画像を合成画像として生成してもよい。
上記によれば、異なる音声入力を行うことによって、仮想オブジェクトが実空間に配置された所定のマーカ等の撮像対象物の方向を基準として動作する場合と、仮想オブジェクトが仮想カメラの方向、すなわち実空間における実カメラの方向をあたかも基準としたような動作をする場合があるため、さらに拡張現実とのインタラクティブ性が高く興趣性に富んだ操作が可能となる。
また、上記設定手段は、音声入力デバイスに音声が入力されていない場合、または音声認識手段が認識した音声が付加表示物を設定する対象ではない場合、付加表示物の表示位置、姿勢、および表示態様から成る群から選ばれた少なくとも1つを、予め定められた内容に設定してもよい。
上記によれば、ユーザが音声入力をしなくても付加表示物の表示位置、姿勢、および表示態様が自動的に変化することがあり得るため、付加表示物自体が自由に行動しているかのような画像が表示できる。
また、上記画像処理プログラムは、撮影保存手段として、さらにコンピュータを機能させてもよい。撮影保存手段は、ユーザによる撮影指示に応じて、画像生成手段が現時点で生成している最新の合成画像を記憶手段に保存する。
上記によれば、撮像画像に付加表示物を重畳させた状態で撮影した画像を保存できるため、当該状態を再表示することが可能となる。
また、上記撮像画像取得手段は、第1の実カメラおよび当該第1の実カメラから所定の距離離れた位置に設けられた第2の実カメラによってそれぞれ撮像された第1の撮像画像および第2の撮像画像を繰り返し取得してもよい。上記位置姿勢算出手段は、実空間における第1の実カメラの位置および姿勢にしたがって決められる第1の位置姿勢情報および実空間における第2の実カメラの位置および姿勢にしたがって決められる第2の位置姿勢情報をそれぞれ繰り返し算出してもよい。上記画像生成手段は、第1の撮像画像における第1の位置姿勢情報に応じた位置を基準として、設定手段が設定した付加表示物を重畳して第1の合成画像を繰り返し生成し、第2の撮像画像における第2の位置姿勢情報に応じた位置を基準として、設定手段が設定した付加表示物を重畳して第2の合成画像を繰り返し生成してもよい。上記表示制御手段は、立体視可能な表示装置に第1の合成画像および第2の合成画像を出力して、付加表示物を合成した撮像画像を繰り返し立体表示してもよい。
上記によれば、立体視可能な表示装置に立体表示された撮像画像に付加表示物を付加表示して表示することができる。
また、上記音声認識手段は、音声入力デバイスに入力された音声を予め登録音声として登録されている音声と少なくとも照合することによって、音声入力デバイスに入力された音声が第1の音声であるか否かを判別し、音声入力デバイスに入力された音声波形のレベルのみに基づいて、音声入力デバイスに入力された音声が第2の音声であるか否かを判別してもよい。
上記によれば、予め登録された登録音声と照合することによって話し言葉として発する音声(言語)等を用いて操作したり、音声波形のレベルによって拍手の音等を用いて操作したりすることができる。
また、上記音声認識手段は、音声入力デバイスに入力された音声入力パターンから得られる特徴パラメータ時系列に対する予め登録音声として登録されている特徴パラメータ時系列の尤度に基づいて、音声入力デバイスに入力された音声が第1の音声であるか否かを判別し、音声入力デバイスに入力された音声波形のレベルおよびスペクトル情報の少なくとも一方のみに基づいて、音声入力デバイスに入力された音声が第3の音声であるか否かを判別してもよい。
上記によれば、入力された音声入力パターンから得られる特徴パラメータ時系列に対する予め登録されている特徴パラメータ時系列の尤度に基づいて音声認識することによって、話し言葉として発する音声(言語)等を用いて操作したり、入力された音声波形のレベルおよびスペクトル情報の少なくとも一方のみに基づいて音声認識することによって、拍手の音、口笛の音、息の音等を用いて操作したりすることができる。
また、上記画像処理プログラムは、音声登録手段として、さらにコンピュータを機能させてもよい。音声登録手段は、付加表示物に対する指示に対応する音声をユーザに入力させ、当該音声に応じた音声データを当該指示に対応する登録音声として記憶手段に登録する。この場合、上記音声認識手段は、音声登録手段が登録音声として登録した音声データを用いて、音声入力デバイスに入力された音声が第1の音声であるか否かを判別してもよい。上記設定手段は、音声認識手段が音声入力デバイスに入力された音声が第1の音声である場合、当該第1の音声に対応して音声登録手段が予め登録した指示に基づいて、付加表示物の表示位置、姿勢、および表示態様から成る群から選ばれた少なくとも1つを設定してもよい。
上記によれば、指示に対応する話し言葉として発する音声(言語)を予めユーザが音声入力して音声データを登録することによって、音声認識の誤認識が防止されるとともに、ユーザが好む言語を予め登録することも可能となる。
また、上記設定手段は、位置姿勢情報が示す実カメラの地理的な位置および実カメラの撮像方向の方位の少なくとも一方に基づいて、撮像画像に撮像されている被写体を推定し、当該被写体に関する情報を示す文字を付加表示物として設定してもよい。上記画像生成手段は、撮像画像における位置姿勢情報に応じた位置を基準として、設定手段が設定した被写体に対応する文字を重畳して合成画像を繰り返し生成してもよい。上記設定手段は、音声認識手段が音声認識した言語に一致する文字が付加表示物として設定されている場合、当該文字が選択指示されたことを示す表示態様に変更して当該文字を設定してもよい。
上記画像生成手段は、言語に一致する文字を設定手段が変更した表示態様で撮像画像に重畳して合成画像を生成してもよい。
上記によれば、撮像装置で撮像されている撮像画像を表示装置に表示しながら、当該撮像装置が撮像している場所や被写体(建物や看板等)に関連する複数の文字情報を付加情報として当該撮像画像に重畳して表示される場合、音声によって文字情報を選択することができるため、拡張現実とのインタラクティブ性および操作性が高い入力方法を提供することができる。
また、上記撮像画像取得手段は、画像処理装置を構成する筐体に内蔵される実カメラから撮像画像を取得してもよい。上記音声データ取得手段は、筐体に内蔵される音声入力デバイスから音声データを取得してもよい。上記表示制御手段は、筐体に内蔵される表示装置に合成画像を表示してもよい。
上記によれば、同じ筐体内に画像処理装置、実カメラ、表示装置、および音声入力デバイスを内蔵することによって、あたかも表示装置を介して実空間を見ているかのような拡張現実を実現することができるとともに、当該実空間内に音声を発して指示しているような操作感や臨場感を与えることができる。
また、第5の関連実施形態は、上記各手段を備える画像処理装置および画像処理システムや上記各手段で行われる動作を含む画像処理方法の形態で実施されてもよい。
第6の関連実施形態は、実空間を撮像する左実カメラおよび右実カメラと、立体視画像を表示可能な表示手段とに接続される情報処理装置のコンピュータを、実画像取得手段、仮想カメラ設定手段、左テクスチャ領域設定手段、右テクスチャ領域設定手段、左仮想カメラ画像取得手段、右仮想カメラ画像取得手段、および、表示制御手段として機能させる。実画像取得手段は、前記左実カメラにより撮像された左目用実画像、および、前記右実カメラにより撮像された右目用実画像を取得する。仮想カメラ設定手段は、前記実空間における前記左実カメラの位置および姿勢と前記実空間における前記右実カメラの位置および姿勢とに応じた配置となるように、仮想空間内に左仮想カメラおよび右仮想カメラを設定する。左テクスチャ領域設定手段は、前記仮想カメラ設定手段によって設定された左仮想カメラから見た場合の、前記仮想空間における所定の仮想モデルに対応する領域を前記左目用実画像から左テクスチャ領域として設定する。右テクスチャ領域設定手段は、前記仮想カメラ設定手段によって設定された右仮想カメラから見た場合の、前記仮想空間における前記仮想モデルに対応する領域を前記右目用実画像から右テクスチャ領域として設定する。左仮想カメラ画像取得手段は、前記左テクスチャ領域設定手段によって設定された左テクスチャ領域に含まれる画像を、前記仮想モデルと同一のまたは前記仮想モデルと所定の関係を有する描画用モデルに適用して、当該描画用モデルを前記左仮想カメラで撮像した左仮想カメラ画像を取得する。右仮想カメラ画像取得手段は、前記右テクスチャ領域設定手段によって設定された右テクスチャ領域に含まれる画像を、前記描画用モデルに適用して、当該描画用モデルを前記右仮想カメラで撮像した右仮想カメラ画像を取得する。表示制御手段は、ユーザの左目に前記左仮想カメラ画像を、該ユーザの右目に前記右仮想カメラ画像を視認させるようにして、前記表示手段に前記左仮想カメラ画像および前記右仮想カメラ画像を表示させる。
なお、仮想カメラ設定手段は、実空間に存在する所定の対象物と上記左目用実カメラとの相対的な位置および姿勢に基づいて、左仮想カメラを設定してもよい。すなわち、実空間の所定の対象物を基準とした左実カメラの位置および姿勢に基づいて左仮想カメラが設定されてもよいし、左実カメラを基準とした実空間の所定の対象物の位置および姿勢に基づいて左仮想カメラが設定されてもよい。また、絶対的な位置を検出する手段(例えば、GPS)や姿勢検出手段(例えば、角速度センサや加速度センサ、地磁気を検出する手段等)によって検出された左実カメラの絶対的な位置および姿勢に基づいて左仮想カメラが設定されてもよい。同様に、実空間に存在する上記所定の対象物と上記右実カメラとの相対的な位置および姿勢に基づいて右仮想カメラが設定されてもよいし、右実カメラの絶対的な位置および姿勢に基づいて右仮想カメラが設定されてもよい。
上記によれば、左右の実画像をそれぞれテクスチャとして仮想モデルに適用ことができ、仮想モデルを立体的に表示するとともに、取得した実画像に応じてその表示態様を多様にすることができる。また、左右の実画像をそれぞれテクスチャとして用いるため、一方の実画像のみを用いる場合よりも解像度を低下させずに、左右の仮想カメラ画像を生成して表示することができる。
また、本関連実施形態の他の構成では、前記左テクスチャ領域設定手段は、前記仮想モデルを前記左仮想カメラで撮像した場合のレンダリング画像上での当該仮想モデルの位置および輪郭に対応する領域を左テクスチャ領域として設定してもよい。また、前記右テクスチャ領域設定手段は、前記仮想モデルを前記右仮想カメラで撮像した場合のレンダリング画像上での当該仮想モデルの位置および輪郭に対応する領域を右テクスチャ領域として設定してもよい。
上記によれば、各仮想カメラで仮想モデルを撮像した場合において、撮像される画像における仮想モデルの位置および輪郭に対応する領域を各テクスチャ領域として設定することができる。
また、本関連実施形態の他の構成では、上記情報処理プログラムは、上記左目用実画像と上記左仮想カメラ画像とを重ね合わせた左目用重畳画像と、上記右目用実画像と上記右仮想カメラ画像とを重ね合わせた右目用重畳画像とを生成する重畳画像生成手段、として上記コンピュータを更に機能させてもよい。そして、上記表示制御手段は、上記左目用重畳画像および上記右目用重畳画像を上記表示手段に表示させる。
上記によれば、仮想モデルを撮像した左右の仮想カメラ画像と左右の実画像とを重畳して表示することができる。
また、本関連実施形態の他の構成では、上記情報処理プログラムは、上記仮想モデルを変形した変形オブジェクトを生成し、上記仮想空間に設定する変形オブジェクト設定手段、として上記コンピュータを更に機能させてもよい。上記左仮想カメラ画像取得手段は、上記左テクスチャ領域設定手段によって設定された左テクスチャ領域に含まれる画像を上記変形オブジェクトにテクスチャとして適用した上記変形オブジェクトを上記左仮想カメラで撮像した左仮想カメラ画像を取得する。上記右仮想カメラ画像取得手段は、上記右テクスチャ領域設定手段によって設定された右テクスチャ領域に含まれる画像をテクスチャとして適用した上記変形オブジェクトを上記右仮想カメラで撮像した右仮想カメラ画像を取得する。
上記によれば、実空間を撮像した画像に立体的な変化を与えることができる。例えば、平面上の仮想モデルを変形させることによって、実空間の平面が変形したような画像を表示することができる。
また、本関連実施形態の他の構成では、上記仮想モデルは、平面または曲面状の仮想モデルであって、上記実空間の平面または曲面に沿うようにして上記仮想空間内に設定されてもよい。上記変形オブジェクト設定手段は、上記平面または曲面状の仮想モデルを変形した変形オブジェクトを生成して、上記仮想空間に設定する。
上記によれば、実空間の平面や曲面が立体的に変化する様子を表示することができる。
また、本関連実施形態の他の構成では、上記変形オブジェクト設定手段は、上記仮想モデルの端部を除く部分を変形して上記変形オブジェクトを生成してもよい。
上記によれば、実画像と仮想カメラ画像とが重ね合わされた場合に、変形オブジェクトの境界部分において違和感のない画像にすることができる。
また、本関連実施形態の他の構成では、上記情報処理プログラムは、上記仮想空間内に上記変形オブジェクトとは異なる第2オブジェクトを当該変形オブジェクトと所定の位置関係で設定する第2オブジェクト設定手段として、上記コンピュータを更に機能させてもよい。上記左仮想カメラ画像取得手段は、上記変形オブジェクトおよび上記第2オブジェクトを上記左仮想カメラで撮像した左仮想カメラ画像を取得する。上記右仮想カメラ画像取得手段は、上記変形オブジェクトおよび上記第2オブジェクトを上記右仮想カメラで撮像した右仮想カメラ画像を取得する。
上記によれば、変形オブジェクトと所定の位置関係で第2オブジェクトを仮想空間に設定し、実空間が変形された画像と仮想空間の第2オブジェクトの画像とが重ね合わされて、表示される。このため、第2オブジェクトが実空間の変形された部分と所定の位置関係で実在しているように見える。例えば、実空間の平面を変形させることで波打つ水面と、水中に存在する魚とを表示することができる。
また、本関連実施形態の他の構成では、上記第2オブジェクトは、上記左仮想カメラおよび上記右仮想カメラの撮像方向に関して上記変形オブジェクトよりも遠方に配置されてもよい。上記情報処理プログラムは、上記変形オブジェクトの端部に上記第2オブジェクトをマスクする所定のマスクオブジェクトを設定するマスクオブジェクト設定手段として、上記コンピュータを更に機能させる。
上記によれば、変形オブジェクトを介して上記第2オブジェクトが見えない位置に仮想カメラが設定される場合(斜めから第2オブジェクトを撮像した場合)、第2オブジェクトをマスクすることができる。
また、本関連実施形態の他の構成では、上記左実カメラおよび右実カメラは実空間上に配置された所定の平板状のマーカをそれぞれ撮像してもよい。また、上記仮想カメラ設定手段は、上記マーカの位置および姿勢を基準として、左実カメラの位置および姿勢と上記右実カメラの位置および姿勢とに応じた配置となるように、仮想空間内に左仮想カメラおよび右仮想カメラを設定する。上記仮想モデルは、上記マーカを基準に設定されたマーカ座標系において、上記マーカが載置される平面上に配置された板状のモデルである。また、上記情報処理プログラムは、上記仮想モデルを変形した変形オブジェクトを生成し、上記仮想空間に設定する変形オブジェクト設定手段として、上記コンピュータを更に機能させる。上記左仮想カメラ画像取得手段は、上記左テクスチャ領域設定手段によって設定された左テクスチャ領域に含まれる画像をテクスチャとして適用した上記変形オブジェクトを上記左仮想カメラで撮像した左仮想カメラ画像を取得する。上記右仮想カメラ画像取得手段は、上記右テクスチャ領域設定手段によって設定された右テクスチャ領域に含まれる画像をテクスチャとして適用した上記変形オブジェクトを上記右仮想カメラで撮像した右仮想カメラ画像を取得する。
上記によれば、マーカが載置された実空間の平面が変化する様子を立体的に表示することができる。これにより、例えば、実空間の平面を水面として、当該水面が波打つような様子を表示することができる。
また、本関連実施形態の他の構成では、上記仮想カメラ設定手段は、上記左目用実画像に含まれる特定対象物を検出し、当該検出結果に基づいて、上記左実カメラと上記実空間に存在する上記特定対象物との相対的な位置および姿勢を取得し、当該取得した位置および姿勢に基づいて、前記左仮想カメラを設定してもよい。また、上記仮想カメラ設定手段は、上記右目用実画像に含まれる上記特定対象物を検出し、当該検出結果に基づいて、上記右実カメラと上記実空間に存在する上記特定対象物との相対的な位置および姿勢を取得し、当該取得した位置および姿勢に基づいて、前記右仮想カメラを設定する。
上記によれば、上記特定対象物を撮像することにより、左右の実カメラ以外の構成を用いなくても、当該左右の実カメラの実空間における位置および姿勢に対応させて左右の仮想カメラを配置できる。
また、本関連実施形態の他の構成では、上記仮想モデルは、上記実空間における上記特定対象物の位置に対応する、上記仮想空間における位置を基準として配置されてもよい。
上記によれば、上記特定対象物の位置に仮想モデルが配置されるため、上記特定対象物が撮像される場合は、必ず仮想モデルを仮想カメラで撮像することができる。
また、本関連実施形態では、上記各手段を実現した情報処理装置であってもよい。また、本関連実施形態では、上記各手段を実現する複数の要素が相互に動作することによって、1つの情報処理システムとして構成されてもよい。当該情報処理システムは、1つの装置によって構成されてもよいし、複数の装置によって構成されてもよい。
第7の関連実施形態に係る携帯電子機器は、ハウジングの主面に裸眼立体視可能な立体表示部が設けられる。そして、一体成形されたスクリーンカバーで当該主面の略全体を覆う。
裸眼立体視可能な立体表示部を有する装置において、ユーザーが立体表示を視認するときに、立体表示部が配置されるハウジングの主面における現実物にユーザーは自己の目の焦点をあわせようとしてしまう。立体表示部には様々な立体感の画像が表示されるため、ハウジングの主面の現実物に焦点があうと立体視がうまく見えない場合がある。この関連実施形態では、立体表示部が配置されるハウジングの主面の略全体を一体のスクリーンカバーで覆ったので、ハウジングの主面上の現実物を隠すことができ、また、主面全体をフラットにすることができる。それゆえ、立体視が容易となる。
また、本関連実施形態では、前記主面においてスピーカーが設けられ、前記スクリーンカバーは当該スピーカーに対応する位置に音抜き孔が形成されるようにしてもよい。
この関連実施形態では、スピーカー部をスクリーンカバーで隠すことができる。また、立体表示部と同じ主面にスピーカー部を設けることができて、画像と音との一体感を感じることができる。
また、本関連実施形態では、前記主面において撮像部が設けられ、前記スクリーンカバーによって当該撮像部が覆われるようにしてもよい。
この関連実施形態では、撮像部用の別途のレンズカバーが必要ない。
また、本関連実施形態では、前記主面において前記立体表示部の表示状態を示す発光部が設けられ、前記スクリーンカバーによって当該発光部が覆われるようにしてもよい。
この関連実施形態では、発光部用の別途のカバーが必要ない。
また、本関連実施形態では、前記ハウジングは正面側パーツと背面側パーツで構成され、当該正面側パーツと当該背面側パーツがネジ留めされ、前記スクリーンカバーは、前記立体表示部に対応する領域を除いて背面から所定のカラーで印刷が施され、当該印刷により、ネジ留め部が覆われ、前記スクリーンカバーは前記ハウジングの主面に接着されるようにしてもよい。
また、本関連実施形態では、前記ハウジングは正面側パーツと背面側パーツで構成され、当該正面側パーツと当該背面側パーツがネジ留めされ、前記スクリーンカバーは、前記立体表示部および前記撮像部に対応する領域を除いて背面から所定のカラーで印刷が施され、当該印刷により、ネジ留め部が覆われるようにしてもよい。
この関連実施形態では、ネジの露出を少なくするまたは無くすことができて、立体視の視認性があがるとともに、美観や安全性が向上する。
また、本関連実施形態では、前記スクリーンカバーは、前記発光部に対応する位置に透明抜きで文字または記号が示されるように背面から所定のカラーで印刷が施されるようにしてもよい。
この関連実施形態では、発光部のための印刷工程を効率化することができる。