説明

表示制御プログラム、表示制御装置、表示制御システム、及び表示制御方法

【課題】仮想3次元空間内にはない2次元オブジェクトを仮想3次元空間内に配置された3次元オブジェクトと一緒に立体視表示する場合に、2次元オブジェクトを違和感なく自然に立体視表示させること。
【解決手段】ゲーム装置10では、まず、仮想3次元空間の状況に応じた奥行き値が取得される。そして、仮想3次元空間には存在しない2次元オブジェクト51をその奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像が、3次元オブジェクト50Bを仮想ステレオカメラ60で撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画されて、立体視画像が生成される。これにより得られた立体視画像が、上側LCD22に出力される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、表示制御プログラム、表示制御装置、表示制御システム、及び表示制御方法に関し、より特定的には、立体視表示を行う表示制御装置のコンピュータに実行させる表示制御プログラム、表示制御装置、表示制御システム、及び表示制御方法に関する。
【背景技術】
【0002】
近年、映画やゲーム等において立体視表示を行う様々な装置が提案されている。例えば特許文献1には、仮想3次元空間を仮想ステレオカメラで撮像して左目用画像及び右目用画像を生成し、これらの画像をずらして描画することで仮想3次元空間内の3次元オブジェクトを立体視表示する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−7395号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、仮想3次元空間内には存在しないメニューや字幕、アイコン等の2次元オブジェクトを仮想3次元空間内の3次元オブジェクトと一緒に立体視表示する場合に、2次元オブジェクトが奥行き値を有していないため、従来の装置では、2次元オブジェクトが3次元オブジェクトに対して常に手前に表示されるように描画処理が行われていた。このため、従来の装置では、2次元オブジェクトを3次元オブジェクトと一緒に立体視表示する場合に、2次元オブジェクトを違和感なく自然に表現することが困難であった。すなわち、仮想3次元空間内には存在しない2次元オブジェクトがあたかも仮想3次元空間内に存在しているかのように見せる視覚的効果を得ることは困難であった。
【0005】
それ故に、本発明の目的は、仮想3次元空間内にはない2次元オブジェクトを仮想3次元空間内に配置された3次元オブジェクトと一緒に立体視表示する場合に、2次元オブジェクトを違和感なく自然に立体視表示させることができる表示制御プログラム、表示制御装置、表示制御システム、及び表示制御方法を提供することである。
【課題を解決するための手段】
【0006】
本発明の表示制御プログラムは、所定の2次元オブジェクトを表示装置に立体視表示させる表示制御装置のコンピュータに実行させる表示制御プログラムである。この表示制御プログラムは、コンピュータを取得手段、生成手段、及び表示制御手段として機能させる。取得手段は、仮想ステレオカメラによって撮像される仮想3次元空間の状況に応じた奥行き値を取得する。生成手段は、視差を生じさせるために2次元オブジェクトを取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、仮想3次元空間に配置された所定の3次元オブジェクトを仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する。表示制御手段は、生成手段によって生成された立体視画像を表示装置に立体視表示させる。
【0007】
この構成によれば、2次元オブジェクトが仮想3次元空間の状況に応じた奥行き位置に立体視表示される。例えば3次元オブジェクトが有している奥行き値だけ2次元オブジェクトがずらされることにより、2次元オブジェクトが3次元オブジェクトと同じ奥行き位置に立体視表示される。このため、仮想3次元空間には存在しない2次元オブジェクトを仮想3次元空間内の3次元オブジェクトと一緒に立体視表示する場合に、2次元オブジェクトを違和感なく自然に立体視表示させることが可能になる。なお、2次元オブジェクトとしては、元々奥行き値を有していない2次元画像や、3次元オブジェクトを正射影することによって奥行き値を有さなくなった2次元画像が例として挙げられる。
【0008】
コンピュータを、所定の2次元オブジェクトの表示に関する奥行き値以外のパラメータを設定するパラメータ設定手段として更に機能させてもよい。
【0009】
この構成によれば、2次元オブジェクトの奥行き値以外のパラメータ(例えば2次元オブジェクトの大きさや形状)がパラメータ設定手段によって設定される。このため、2次元オブジェクトの態様を、仮想3次元空間の状況の影響を受けることなく柔軟に変化させることが可能になる。すなわち、立体視表示された2次元オブジェクトの見た目の奥行き位置とは無関係に(独立して)、2次元オブジェクトの大きさや形状等を制御することが可能になる。
【0010】
パラメータは、所定の2次元オブジェクトの大きさを示すパラメータであってもよい。この場合、所定の2次元オブジェクトの奥行き位置の変化の影響を受けずに所定の2次元オブジェクトの大きさを設定することが可能である。
【0011】
パラメータ設定手段は、所定の2次元オブジェクトの大きさを示すパラメータを一定に維持してもよい。所定の2次元オブジェクトは、その奥行き値だけが仮想3次元空間の状況の影響を受けるので、所定の2次元オブジェクトの奥行き位置が変化する場合でも、所定の2次元オブジェクトの大きさを一定に維持することが可能である。
【0012】
パラメータ設定手段は、所定の3次元オブジェクトの表示装置の画面上における2次元座標系での表示位置に基づいて、所定の2次元オブジェクトの表示領域を示すパラメータを設定してもよい。
【0013】
この構成によれば、所定の3次元オブジェクトが表示装置の画面上におけるどの位置に表示されるかに基づいて所定の2次元オブジェクトの表示領域が決定される。このため、所定の2次元オブジェクトによって示される情報をユーザに対して効果的に提示することが可能になる。
【0014】
また、仮に3次元座標系である仮想3次元空間において所定の3次元オブジェクトとの関係で所定の2次元オブジェクトの表示領域を決定するようにした場合、仮想ステレオカメラによって仮想3次元空間が透視射影されるので、仮想ステレオカメラからの距離によって所定の2次元オブジェクトの表示領域の大きさが変化してしまうことになる。これに対して、上記構成によれば、表示装置の画面上の表示位置、すなわち2次元座標系における所定の3次元オブジェクトの表示位置に基づいて所定の2次元オブジェクトの表示領域が決定される。このため、例えば所定の3次元オブジェクトと同じ奥行き位置に所定の2次元オブジェクトを配置するように2次元オブジェクトに奥行き値を与えた場合に、仮想ステレオカメラから所定の3次元オブジェクトまでの距離によって所定の2次元オブジェクトの大きさ(表示領域の広さ)が変化してしまうのを防止することが可能になる。
【0015】
パラメータ設定手段は、仮想ステレオカメラと所定の3次元オブジェクトとの間に表示装置の画面と対応する大きさの仮想画面が配置されていると仮定した場合に、仮想ステレオカメラの視点位置と所定の3次元オブジェクトとを結ぶ線分と仮想画面を含む平面との交点のその平面における2次元座標に基づいて、所定の2次元オブジェクトの表示領域を決定してもよい。
【0016】
この構成によれば、所定の2次元オブジェクトの表示領域を容易に決定することが可能になる。
【0017】
取得手段は、仮想3次元空間における仮想ステレオカメラの視点位置から所定の3次元オブジェクトまでの距離に応じた奥行き値を取得してもよい。
【0018】
この構成によれば、所定の3次元オブジェクトの奥行き位置に合わせて所定の2次元オブジェクトを立体視表示することが可能になる。すなわち、仮想3次元空間には存在していない所定の2次元オブジェクトが仮想3次元空間内の所定のオブジェクトと同じ奥行き位置に位置する様子を自然に表現することが可能になる。
【0019】
表示制御手段は、表示制御装置が備える操作手段の操作に応じて、仮想ステレオカメラを構成する2つの仮想カメラの間の距離であるカメラ間距離を変化させる。この場合、パラメータ設定手段は、カメラ間距離の変化に応じて、所定の2次元オブジェクトの表示領域を示すパラメータを更新する。
【0020】
カメラ間距離が変化することにより、所定の3次元オブジェクトの立体感が変化するが、そのカメラ間距離に応じたずらし量が算出されるため、所定の2次元オブジェクトの立体感も同じように変化する。このため、上記構成によれば、所定の3次元オブジェクトの立体感と、所定の2次元オブジェクトの立体感との関係を一定に維持することが可能になる。
【0021】
コンピュータを、取得手段によって取得された奥行き値を所定の2次元オブジェクトに関連付ける関連付け手段として更に機能させてもよい。この場合、生成手段は、関連付け手段によって関連付けられた奥行き値を用いて、立体視画像を生成する。
【0022】
この構成よれば、取得手段によって取得された奥行き値が2次元オブジェクトに関連付けられるので、例えば2次元オブジェクトが複数存在するような場合であっても、立体視画像を適切に生成することが可能になる。
【0023】
生成手段は、Zバッファを用いて、関連付け手段によって所定の2次元オブジェクトに関連付けられた奥行き値と、所定の3次元オブジェクトの奥行き値とを比較しながら、画像を合成することが好ましい。
【0024】
この構成によれば、例えば仮想3次元空間内のある3次元オブジェクトよりも手前に立体視表示されるように奥行き値が関連付けられているにも拘わらず2次元オブジェクトがその3次元オブジェクトの後方に立体視表示されるというように、各オブジェクトの奥行き値に矛盾した画像が立体視表示されるのを容易に防止することが可能になる。
【0025】
生成手段は、描画の対象となる対象オブジェクトのZ値が、Zバッファに格納されている2次元オブジェクト又は3次元オブジェクトのZ値よりも小さい場合に、対象オブジェクトを描画する。
【0026】
この構成によれば、例えば対象オブジェクト(3次元オブジェクト又は2次元オブジェクト)を別のオブジェクトの手前に立体視表示させる場合に、対象オブジェクトが別のオブジェクトの後ろに立体視表示されてしまうのを防止することが可能になる。
【0027】
所定の2次元オブジェクトは、撮像部によって撮像された人物の顔を含む撮像画像であってもよい。
【0028】
この構成によれば、仮想3次元空間には存在しない人物の顔があたかも仮想3次元空間に存在しているかのように見せる視覚的効果を生じさせることが可能になる。
【0029】
所定の2次元オブジェクトは、撮像部によってリアルタイムに取得される撮像画像であってもよい。
【0030】
この構成によれば、時間の経過に伴って撮像画像の表示内容が変化する。このため、仮想3次元空間には存在しない2次元オブジェクトがあたかも仮想3次元空間に存在していて、且つ、仮想3次元空間内で動いているかのように見せる視覚的効果を容易に生じさせることが可能になる。なお、撮像部は、表示制御装置に設けられていてもよいし、表示制御装置とは別の外部装置に設けられていてもよい。
【0031】
所定の2次元オブジェクトは、表示制御装置が外部装置と通信を行って取得したものである。
【0032】
この構成によれば、表示制御装置が有していない2次元オブジェクトが、表示制御装置において構築される仮想3次元空間内に存在しているかのように見せる視覚的効果を得ることが可能になる。
【0033】
本発明は、所定の2次元オブジェクトを表示装置に立体視表示させる表示制御装置として捉えることもできる。この表示制御装置は、取得手段、生成手段、及び表示制御手段を備える。取得手段は、仮想ステレオカメラによって撮像される仮想3次元空間の状況に応じた奥行き値を取得する。生成手段は、視差を生じさせるために2次元オブジェクトを取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、仮想3次元空間に配置された所定の3次元オブジェクトを仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する。表示制御手段は、生成手段によって生成された立体視画像を表示装置に立体視表示させる。
【0034】
また、本発明は、所定の2次元オブジェクトを表示装置に立体視表示させる表示制御システムとして捉えることもできる。この表示制御システムは、取得手段、生成手段、及び表示制御手段を備える。取得手段は、仮想ステレオカメラによって撮像される仮想3次元空間の状況に応じた奥行き値を取得する。生成手段は、視差を生じさせるために2次元オブジェクトを取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、仮想3次元空間に配置された所定の3次元オブジェクトを仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する。表示制御手段は、生成手段によって生成された立体視画像を表示装置に立体視表示させる。
【0035】
また、本発明は、所定の2次元オブジェクトを表示装置に立体視表示させる表示制御方法として捉えることもできる。この表示制御方法では、まず、仮想ステレオカメラによって撮像される仮想3次元空間の状況に応じた奥行き値が取得される。そして、視差を生じさせるために2次元オブジェクトを取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像が、仮想3次元空間に配置された所定の3次元オブジェクトを仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画されて、立体視画像が生成される。このようにして生成された立体視画像は、表示装置に出力されて立体視表示される。
【発明の効果】
【0036】
この発明によれば、仮想3次元空間には存在しない2次元オブジェクトを仮想3次元空間内の3次元オブジェクトと一緒に立体視表示する場合に、その2次元オブジェクトを違和感なく自然に立体視表示させることができる。
【図面の簡単な説明】
【0037】
【図1】開状態におけるゲーム装置10の正面図
【図2A】閉状態におけるゲーム装置10の左側面図
【図2B】閉状態におけるゲーム装置10の正面図
【図2C】閉状態におけるゲーム装置10の右側面図
【図2D】閉状態におけるゲーム装置10の背面図
【図3】ゲーム装置10の内部構成を示すブロック図
【図4】ゲームシステム100を示す説明図
【図5】上側LCD22に立体視表示される画像の一例を示す画面図
【図6】仮想3次元空間の模式図
【図7】メインメモリ32のメモリ構成の一例を示す図
【図8】ゲーム装置10で実行されるメイン処理の一例を示すフローチャート
【図9】ゲーム装置10Aとゲーム装置10Bとの間で送受信されるデータを示す図
【図10】図8のステップS9における描画処理の詳細フローチャート
【図11】図8のステップS9における描画処理の詳細フローチャート
【図12】XY座標系(2次元座標系)における敵機50Bの中心座標(X1,Y1)の取得方法について説明するための図
【図13】XY座標系(2次元座標系)における撮像画像51の配置領域222の決定方法について説明するための図
【図14】XY座標系(2次元座標系)における撮像画像51の配置領域222の一部が仮想画面220の外側に位置した状態を示す図
【図15】撮像画像51の配置領域222の補正方法について説明するための図
【図16】敵機50Bのずらし量Pの算出方法について説明するための仮想3次元空間の模式図
【図17】左目用画像の表示領域222Lと右目用画像の表示領域222Rとを示す図
【図18】上側LCD22に立体視表示される画像の一例を示す画面図
【図19】上側LCD22に立体視表示される画像の一例を示す画面図
【発明を実施するための形態】
【0038】
[ゲーム装置10の構成]
以下、適宜図面を参照しつつ、本発明の表示制御装置の一実施形態に係るゲーム装置10について説明する。ゲーム装置10は携帯型のゲーム装置である。図1および図2A〜Dに示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。
【0039】
[下側ハウジング11の説明]
図1および図2A〜Dに示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。
【0040】
タッチパネル13は、下側LCD12の画面上に装着されている。下側ハウジング11の上側面には、タッチペン28を収納するための挿入口17(図1および図2Dに示す点線)が設けられている。
【0041】
下側ハウジング11の内側面(主面)には、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。
【0042】
アナログスティック15は、方向を指示するデバイスである。
【0043】
下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク42(図3参照)が設けられる。
【0044】
図2BおよびDに示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。また、図2Aに示されるように、下側ハウジング11の左側面には、ゲーム装置10が備えるスピーカ43(図3参照)の音量を調整するための音量ボタン14Iが設けられる。
【0045】
図2Aに示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタが設けられる。
【0046】
図2Dに示されるように、下側ハウジング11の上側面には、外部メモリ44を挿入するための挿入口11Dが設けられる。
【0047】
図1および図2Cに示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(図2C参照)。
【0048】
[上側ハウジング21の説明]
図1および図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。
【0049】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。具体的には、パララックスバリア方式の裸眼立体視可能な表示装置である。上側LCD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある画像(立体視画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる。このように、上側LCD22は、立体視画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、例えば、後述する3D調整スイッチ25によって行われる。
【0050】
外側撮像部23は、上側ハウジング21の外側面21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。
【0051】
内側撮像部24は、上側ハウジング21の内側面21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。この内側撮像部24により、ゲーム装置10を操作するプレイヤの顔を撮像することができる。
【0052】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられる操作手段である。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体視画像)の立体感を調整するために用いられる。3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体視画像の見え方が調整される。
【0053】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示すLEDである。
【0054】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0055】
[ゲーム装置10の内部構成]
次に、図3を参照して、ゲーム装置10の内部の電気的構成について説明する。図3に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。
【0056】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312、VRAM(Video RAM)313を含む。CPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、CPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。
【0057】
GPU312は、CPU311からのグラフィックコマンド(作画命令)に従って画像を生成する。具体的には、GPU312は、グラフィックコマンドに従って、仮想3次元空間に配置された3次元オブジェクト及び仮想3次元空間には配置されていない2次元オブジェクトの立体視表示に必要な計算処理を含むレンダリング処理を行うことで、立体視画像(左目用画像及び右目用画像)を生成する。この立体視画像を生成するためにCPU311及びGPU312によって実行される処理については、後に詳述する。
【0058】
VRAM313は、グラフィックコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等)を記憶するものであり、フレームバッファ3131及びZバッファ3132を含む。フレームバッファ3131は、上側LCD22のピクセルに与える1フレーム分の情報(色や明るさ)を記憶する2次元構造のメモリであり、左目用画像を記憶する領域と、右目用画像を記憶する領域とを有している。このフレームバッファ3131に記憶された左目用画像及び右目用画像のデータが上側LCD22に出力されることによって、上側LCD22に立体視画像が表示される。なお、フレームバッファ3131に記憶された情報は、GPU312によって1フレーム毎に書き換えられる。
【0059】
Zバッファ3132は、フレームバッファ3131の各記憶位置に対応するピクセルの奥行き情報である奥行き値(以下「Z値」という。)を記憶するものであり、フレームバッファ3131に対応するピクセル数×1ピクセル当たりのZ値のビット数に相当する記憶領域を有している。
【0060】
外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0061】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶装置である。
【0062】
外部メモリ44は、情報処理部31によって実行されるプログラム等を記憶するための不揮発性の記憶装置である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。
【0063】
データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、任意のデータを保存するために用いられる。
【0064】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0065】
無線通信モジュール36は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。
【0066】
加速度センサ39は、3軸(XYZ軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
【0067】
RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0068】
I/F回路41には、タッチパネル13、マイク42およびスピーカ43が接続される。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0069】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。
【0070】
下側LCD12および上側LCD22は情報処理部31に接続される。具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右目用画像と左目用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
【0071】
外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
【0072】
3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0073】
情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。
【0074】
なお、上述したハードウェア構成は単なる一例に過ぎず、ゲーム装置10の構成は適宜変更可能である。
【0075】
[ゲームの概要]
次に、ゲーム装置10のCPU311がゲームプログラム(表示制御プログラム)を実行することによって進行するシューティングゲームの概要について説明する。
【0076】
図4は、3台のゲーム装置10(10A,10B,10C)から構成されるゲームシステム100を示す説明図である。図5は、上側LCD22に立体視表示される画像の一例を示す画面図である。
【0077】
図4及び図5に示されるように、本実施形態で例示するシューティングゲームは、ゲーム装置10Aを操作するプレイヤ1と、ゲーム装置10Bを操作するプレイヤ2と、ゲーム装置10Cを操作するプレイヤ3とが互いに対戦するマルチプレイ型のシューティングゲームである。なお、本実施形態では、プレイヤ1からプレイヤ3の3人のプレイヤがマルチプレイを行う場合を例に説明するが、マルチプレイに参加するプレイヤの人数は適宜変更可能である。また、本発明はシングルプレイのゲームにも適用可能である。以下、ゲーム装置10Aにおいて表示される画像を参照しつつ、本実施形態におけるシューティングゲームについて説明する。
【0078】
図5は、プレイヤ1が操作するゲーム装置10Aの上側LCD22に立体視表示される画像の一例を示している。図5に示されるように、上側LCD22には、プレイヤ1が操作する自機50A(飛行機)が飛行している状態を自機50A後方のビハインドビュー視点(3人称視点)から見た画像が立体視表示される。図5に示される例では、自機50Aの他に、敵機50B(飛行機)、敵機50C(飛行機)、ミサイル53等の3次元オブジェクトが表示されている。
【0079】
図6は、ゲーム装置10Aにおいて構築される仮想3次元空間の模式図である。図6に示されるように、仮想3次元空間には、自機50A、敵機50B、敵機50C、ミサイル53、及び仮想ステレオカメラ60(左目用カメラ60L及び右目用カメラ60R)が配置されている。自機50Aは、プレイヤ1によるゲーム装置10Aの操作に応じて仮想3次元空間内を移動するプレイヤオブジェクトである。敵機50Bは、プレイヤ2によるゲーム装置10Bの操作に応じて仮想3次元空間内を移動するプレイヤオブジェクトである。敵機50Cは、プレイヤ3によるゲーム装置10Cの操作に応じて仮想3次元空間内を移動するプレイヤオブジェクトである。ミサイル53は、敵機50Bから発射されたミサイルであり、いわゆるノンプレイヤオブジェクトである。
【0080】
仮想ステレオカメラ60は、自機50Aと略一定の距離を保ちながら自機50Aを注視するように、その撮像方向61、視点位置、視野角(画角)、位置座標、移動速度等のカメラパラメータが制御される。これにより、仮想ステレオカメラ60の視点から自機50Aを見た仮想3次元空間の画像がゲーム装置10Aの上側LCD22に立体視表示される。図5に示されるように、自機50Aは、仮想ステレオカメラ60によって注視されているため、上側LCD22の画面中央に表示される。
【0081】
また、図6に示されるように、仮想ステレオカメラ60によって撮像される仮想3次元空間に対して、基準面(視差ゼロ面)が設定されている。ここで、基準面は、仮想ステレオカメラ60で仮想3次元空間を撮像した際に立体視画像に視差が生じない位置である。言い換えれば、左目用カメラ60Lの撮像範囲と、右目用カメラ60Rの撮像範囲とが等しくなる面である。ゲーム装置10では、この基準面が上側LCD22の画面上に位置するように制御が行われる。このため、この基準面上に位置しているオブジェクトは上側LCD22の画面上に再生される(立体視で表示した際に上側LCD22の画面上にあるように視認される)。また、仮想ステレオカメラ60から見て基準面の手前に位置しているオブジェクトは上側LCD22の画面に対して手前の位置に再生され(立体視で表示した際に上側LCD22の画面より手前に飛び出しているように視認される)、基準面の奥に位置しているオブジェクトは上側LCD22の画面に対して奥の位置に再生される(立体視で表示した際に上側LCD22の画面より奥にあるように視認される)。
【0082】
なお、仮想3次元空間内には、これらのオブジェクトの他に、山や鉄橋(図5参照)等の地形オブジェクトが存在するが、図6以降に示す仮想3次元空間の模式図においては、これらのオブジェクトの図示が省略されている。また、本実施形態では、表示制御プログラムに基づいてシューティングゲームが実行される場合について説明するが、本発明は、仮想3次元空間内の3次元オブジェクトを仮想ステレオカメラで撮像して得られた画像を立体視表示するものであれば、例えばアクションゲーム等の他のゲームや、ゲーム以外のものにも適用可能である。
【0083】
ゲーム装置10Aの上側LCD22には、撮像画像51、ライフゲージ52、撮像画像54、ライフゲーム55等の仮想3次元空間内には存在しない2次元オブジェクトが更に表示されている。撮像画像51は、敵機50Bを操作するプレイヤ2の顔をゲーム装置10Bの内側撮像部24により撮像して得られたプレイヤ2の顔を表す撮像画像であり、ゲーム装置10Aがゲーム装置10Bと通信を行って取得したものである。この撮像画像51は、敵機50Bを操作するプレイヤ2の顔を表す画像であるため、敵機50Bと近接する位置に表示される。撮像画像54は、敵機50Cを操作するプレイヤ3の顔をゲーム装置10Cの内側撮像部24により撮像して得られたプレイヤ3の顔を表す撮像画像であり、ゲーム装置10Aがゲーム装置10Cと通信を行って取得したものである。この撮像画像54は、敵機50Cを操作するプレイヤ3の顔を表す画像であるため、敵機50Cと近接する位置に表示される。このため、ゲーム装置10Aのプレイヤ1は、上側LCD22に立体視表示された画像を見て、敵機50Bを操作しているのがプレイヤ2であり、敵機50Cを操作しているのがプレイヤ3であることを容易に視認することができる。
【0084】
ゲーム装置10Aのプレイヤ1は、十字ボタン14Aを操作することによって自機50Aの飛行方向を変化させることができ、また、例えばボタン14Bを押下することによって自機50Aにミサイルを発射させて、敵機50B又は敵機50Cを攻撃することができる。ライフゲージ52は、敵機50Bのエネルギー量を示している。敵機50Bは、自機50A又は敵機50Cから発射されたミサイルによる攻撃を受けるとエネルギーが減っていく。そして、ライフゲージ52により示されるエネルギー量が0になると、プレイヤ2のゲームがゲームオーバーとなる。このことは、ライフゲージ54についても同様である。図5に示される状態では、自機50Aのエネルギー量(不図示)が最も多いため、プレイヤ1が一位であることを示す「1st」の文字が上側LCD22の左下に表示されている。
【0085】
以下、このようなシューティングゲームを行うのに必要なゲーム装置10の構成、及びゲーム装置10で行われる処理について、ゲーム装置10がゲーム装置10Aである場合を例にして詳細に説明する。
【0086】
[主要データ]
図7は、メインメモリ32のメモリ構成の一例を示す図である。図7に示されるように、メインメモリ32は、プログラム記憶領域321、データ記憶領域325、及び作業領域331を有している。プログラム記憶領域321には、情報処理部31によって実行されるゲームプログラム(表示制御プログラム)が記憶される。データ記憶領域325には、仮想3次元空間内の各種3次元オブジェクトを描画するために必要なデータが記憶される。プログラム記憶領域321及びデータ記憶領域325内のデータは、外部メモリ44に予め記憶されたデータが、ゲーム処理に際して外部メモリ44からメインメモリ32に読み出されたものである。
【0087】
プログラム記憶領域321には、メイン処理プログラム322、描画処理プログラム323等が記憶されている。メイン処理プログラム322は、後述する図8が示すメイン処理を情報処理部31に実行させるためのプログラムである。描画処理プログラム323は、後述する図10及び図11が示す描画処理を情報処理部31に実行させるためのプログラムである。
【0088】
データ記憶領域325には、プレイヤオブジェクトデータ326、敵オブジェクトデータ327、ノンプレイヤオブジェクトデータ328、エフェクトデータ329等が記憶されている。
【0089】
プレイヤオブジェクトデータ326は、ゲーム装置10Aにおけるプレイヤオブジェクトである自機50Aに関するデータであり、自機50Aのモデリングデータ、テクスチャーデータ(RGB値)等から構成される。敵オブジェクトデータ327は、自機50Aに対して敵となるプレイヤオブジェクト(ここでは敵機50B及び敵機50C)に関するデータであり、敵機50B及び敵機50Cのモデリングデータ、テクスチャーデータ(RGB値)等から構成される。ノンプレイヤオブジェクトデータ328は、ミサイル53や仮想3次元空間内の地形等のノンプレイヤオブジェクトに関するデータであり、ノンプレイヤオブジェクトのモデリングデータ、テクスチャーデータ(RGB値)等から構成される。エフェクトデータ329は、ゲーム中に用いられる各種エフェクトを表現するために使用される画像データである。エフェクトデータ329としては、例えばミサイル53が敵機50Cに命中したことを示す画像データが挙げられる。
【0090】
作業領域331は、ゲーム処理において生成されたデータを一時的に格納する記憶領域である。この作業領域331には、操作データ332、仮想ステレオカメラデータ333、位置座標データ334、敵位置情報データ335、中心座標データ336、配置位置座標データ337、撮像画像データ338、Z値データ339、ずらし量データ340等が格納される。
【0091】
操作データ332は、タッチパネル13、操作ボタン14、アナログスティック15、3D調整スイッチ25に対して行われたプレイヤの操作を示すデータである。
【0092】
仮想ステレオカメラデータ333は、仮想ステレオカメラ60のパラメータであるカメラパラメータを示すデータである。この仮想ステレオカメラデータ333は、仮想ステレオカメラ60の撮像方向61、視点位置、視野角、位置座標、移動速度等のカメラパラメータを示すデータであり、立体視基準距離データ3331及びカメラ間距離データ3332を含んでいる。ここで、立体視基準距離データ3331は、撮像方向61における仮想ステレオカメラ60の視点位置から基準面までの距離である立体視基準距離D(図16参照)を示すデータである。カメラ間距離データ3332は、仮想ステレオカメラ60を構成する左目用カメラ60Lの視点位置と右目用カメラ60Rの視点位置との距離であるカメラ間距離E(いわゆる基線長:図16参照)を示すデータである。ゲーム装置10では、3D調整スイッチ25が操作されることにより、カメラ間距離データ3332が示すカメラ間距離Eが3D調整スイッチ25の操作に応じた値となるように、カメラ間距離データ3332がCPU311によって更新される。
【0093】
位置座標データ334は、自機50Aの仮想3次元空間における位置座標(X、Y、Z)を示すデータである。敵位置情報データ335は、敵機50B及び敵機50Cの仮想3次元空間における位置座標(X、Y、Z)を示すデータである。なお、敵機50Bはゲーム装置10Bのプレイヤ2によって操作され、敵機50Cはゲーム装置10Cのプレイヤ3によって操作される。このため、敵位置情報データ335は、ゲーム装置10Aがゲーム装置10B及びゲーム装置10Cと通信を行って取得したものであり、ゲーム装置10B及びゲーム装置10Cとの通信により敵位置情報データが取得される毎に適宜更新される。
【0094】
中心座標データ336は、上側LCD22の画面を含む平面上における敵機50Bの中心座標(2次元座標)と敵機50Cの中心座標(2次元座標)を示すデータである。ここでの中心座標については、敵機50Bの中心座標(X1、Y1)を例にして図12に基づいて後に詳述する。
【0095】
配置位置座標データ337は、上側LCD22の画面上において撮像画像51,54を配置する位置(2次元座標)を示すデータである。図5に示すように、撮像画像51,54は、対応する敵機50B、50Cと近接する位置に表示される。このため、撮像画像51,54の配置位置は、中心座標データ336が示す敵機50B、50Cの中心座標に基づいて決定されるが、その詳細については図13〜図15に基づいて後に詳述する。なお、この配置位置座標データ337が示す撮像画像51,54の配置位置は、実際に撮像画像51,54の左目用画像と右目用画像とを表示する画面上の位置ではなく、左目用画像と右目用画像を表示する表示領域を決定する際に基準となる位置である。
【0096】
撮像画像データ338は、本実施形態では撮像画像51の画像データと撮像画像54の画像データである。なお、撮像画像51の画像データは、ゲーム装置10Bの内側撮像部24による撮像処理で得られたものであり、撮像画像54の画像データは、ゲーム装置10Cの内側撮像部24による撮像処理で得られたものである。すなわち、撮像画像データ338は、ゲーム装置10Aがゲーム装置10B及びゲーム装置10Cと通信を行って取得したものである。このため、撮像画像データ338は、敵位置情報データ335と同様に、ゲーム装置10B及びゲーム装置10Cとの通信により撮像画像データが取得される毎に適宜更新される。
【0097】
Z値データ339は、仮想3次元空間には存在しない奥行き値(Z値)を有していない2次元オブジェクトに関連付けられたZ値を示すデータであり、本実施形態では、撮像画像51のZ値と、撮像画像54のZ値を示すデータである。Z値を有していない撮像画像51及び撮像画像54のそれぞれにZ値を関連付けることによって、2次元オブジェクトである撮像画像51及び撮像画像54に立体感を付与することができる。2次元オブジェクトにZ値を関連付ける処理については、図10のフローチャートに基づいて後に詳述する。
【0098】
ずらし量データ340は、上側LCD22に表示される撮像画像51の左目用画像と右目用画像とのずらし量、及び撮像画像54の左目用画像と右目用画像とのずらし量を示すデータである。このずらし量が変化することにより、上側LCD22に立体視表示される2次元オブジェクトの立体感が変化することになる。このずらし量データ340が示すずらし量の算出方法については、撮像画像51の左目用画像と右目用画像とのずらし量Pを算出する場合を例に、図16に基づいて後に詳述する。なお、ずらし量データ340が示すずらし量は、カメラ間距離E(図16参照)の影響を受けて変化するので、プレイヤが3D調整スイッチ25を操作することによって変化する。すなわち、プレイヤは、3D調整スイッチ25を操作することによって、上側LCD22に立体視表示される2次元オブジェクト(及び3次元オブジェクト)の立体感を変化させることができる。
【0099】
なお、以上説明した主要データの一部又は全部が、メインメモリ32に代えてデータ保存用外部メモリ45に記憶されてもよい。
【0100】
[メイン処理]
次に、図8を参照しつつ、ゲーム装置10によって実行されるメイン処理について、ゲーム装置10がゲーム装置10Aである場合を例にして説明する。ここで、図8は、ゲーム装置10で実行されるメイン処理の一例を示すフローチャートである。
【0101】
まず、CPU311は、以降の処理において用いられるデータの初期化処理を実行する(ステップS1)。具体的には、CPU311は、以降の処理に使用される作業領域331内の各種変数やフラグ等を初期化する。そして、CPU311は、自機50A、敵機50B、敵機50C、及びノンプレイヤオブジェクト(地形オブジェクト等)を仮想3次元空間に配置する。具体的には、CPU311は、ゲーム開始時における仮想ステレオカメラ60の初期位置、及び各種オブジェクトの初期状態を示すデータを作業領域331に格納する。これにより、仮想3次元空間が構築されて仮想ステレオカメラ60により撮像された立体視画像が上側LCD22に表示される。すなわち、CPU311は、仮想3次元空間を構築し、各オブジェクトの初期状態を示すデータに従って各オブジェクトを仮想3次元空間内に配置する。そして、CPU311は、この仮想3次元空間を仮想ステレオカメラ60の視点から見た立体視画像(左目用画像及び右目用画像)をGPU312に生成させて、その立体視画像を上側LCD22に表示させる。以降、ステップS2〜ステップS10の処理ループが1フレーム(例えば1/60秒)毎に繰り返されることによって、ゲームが進行していく。
【0102】
ステップS1の初期化処理に続いて、CPU311は、タッチパネル13、操作ボタン14、アナログスティック15、及び3D調整スイッチ25からの操作情報の入力を受け付ける(ステップS2)。具体的には、タッチパネル13、操作ボタン14、アナログスティック15、及び3D調整スイッチ25の入力状況を示す操作データが情報処理部31に入力されるので、CPU311は、その操作データを操作データ332として作業領域331に格納する。なお、新たな操作データ332が格納されると、古い操作データ332は新たな操作データ332に書き換えられて、操作データ332が適宜更新される。
【0103】
次に、CPU311は、撮像処理を実行する(ステップS3)。具体的には、CPU311は、ゲーム装置10Aの内側撮像部24によってリアルタイムに撮像されたカメラ画像(内カメラ画像)を取得して、作業領域331に格納する。このステップS3の処理が行われることにより、ゲーム装置10Aのプレイヤ(プレイヤ1)の顔を被写体として含む画像データが取得される。なお、このカメラ画像は、撮像画像データとしてゲーム装置10A及びゲーム装置10Bに送信される。
【0104】
なお、このような撮像処理は、ゲーム装置10B及びゲーム装置10Cにおいても同様に行われ、これらの撮像処理によって得られた撮像画像51,54の撮像画像データが後述するステップS5の受信処理によってゲーム装置10Aに提供される。このため、ゲーム装置10Aでは、ゲーム装置10B及びゲーム装置10Cにおいてリアルタイムに取得された撮像画像51,54が立体視表示されることになり、ゲーム装置10Aのプレイヤは、立体視表示された撮像画像51,54が表すプレイヤ2,3の顔の変化を見てゲームを楽しむことができる。
【0105】
続いて、CPU311は、ゲーム装置10B及びゲーム装置10Cにおけるゲーム処理に必要なデータをゲーム装置10B及びゲーム装置10Cに送信する送信処理を行い(ステップS4)、自装置(すなわちゲーム装置10A)におけるゲーム処理に必要なデータをゲーム装置10B及びゲーム装置10Cから受信する受信処理を行う(ステップS5)。このステップS4の送信処理及びステップS5の受信処理は、無線通信モジュール36を用いて行われる。
【0106】
図9は、ゲーム装置10Aとゲーム装置10Bとの間で送受信されるデータを示す図である。上記ステップS4の送信処理が行われることにより、図9に示されるように、ゲーム装置10Aからゲーム装置10Bに敵位置情報データ及び撮像画像データが送信される。ここでの敵位置情報データは、仮想3次元空間における自機50Aの位置座標を示すデータであり、撮像画像データは、ステップS3の撮像処理によって得られたゲーム装置10Aのプレイヤ(プレイヤ1)の顔を示すカメラ画像のデータである。これらの敵位置情報データ及び撮像画像データがゲーム装置10Bに送信されることにより、ゲーム装置10Bの上側LCD22の適切な位置に飛行機(ここでは自機50A)を敵機として立体視表示すると共に、その飛行機を操作するプレイヤ1の顔を併せて立体視表示させることが可能になる。
【0107】
また、上記ステップS5の受信処理が行われることにより、図9に示されるように、ゲーム装置10Bから送信された敵位置情報データ及び撮像画像データがゲーム装置10Aによって受信される。ここでの敵位置情報データは、仮想3次元空間における敵機50Bの位置座標を示すデータであり、撮像画像データは、ゲーム装置10Bの内側撮像部24による撮像処理で得られたゲーム装置10Bのプレイヤ(プレイヤ2)の顔を示す画像データである。すなわち、撮像画像データは、実カメラである内側撮像部24を用いた正射影により得られた画像データである。このステップS5の受信処理によって受信された敵位置情報データ及び撮像画像データは、それぞれ敵位置情報データ335及び撮像画像データ338として作業領域331に格納される。このため、敵位置情報データ335及び撮像画像データ338は、ステップS5の受信処理が行われる毎に適宜更新される。このようにして敵位置情報データ335及び撮像画像データ338が適宜更新されることにより、ゲーム装置10Aの上側LCD22の適切な位置に敵機50Bを立体視表示すると共に、敵機50Bを操作するプレイヤ2の顔を併せて立体視表示させることが可能になる。
【0108】
なお、ここではゲーム装置10Aとゲーム装置10Bとの間で送受信されるデータを例に説明したが、ゲーム装置10Aとゲーム装置10Cとの間、及びゲーム装置10Bとゲーム装置10Cとの間でも同様の通信が行われる。また、ここでは送信処理が先に行われてから受信処理が行われる場合について説明したが、受信処理を行ってから送信処理を行うようにしてもよい。また、ここでは1フレーム毎に敵位置情報データ及び撮像画像データが送受信される場合について説明したが、撮像画像データについては、必ずしも毎フレーム送受信される必要はない。このため、撮像画像データについては、例えば60フレーム毎に送受信されるようにしてもよい。これにより、各ゲーム装置10における処理負荷を低減することができる。
【0109】
ステップS5の受信処理に続いて、ゲーム装置10AのCPU311は、各オブジェクトの移動処理を実行する(ステップS6)。具体的には、CPU311は、操作データ332に応じた位置へ自機50Aを移動させ、敵位置情報データ335が示す位置に敵機50B及び敵機50Cを移動させ、且つミサイル53等のノンプレイヤオブジェクトをメイン処理プログラム322等に基づいて移動させる。また、このステップS6において、CPU311は、各3次元オブジェクトを移動させるだけでなく、それらの向きや姿勢を変化させるといった処理も行う。このステップS6の処理が行われることにより、自機50Aの位置座標を示す位置座標データ334が更新される。
【0110】
次に、CPU311は、プレイヤ1の操作に応じて仮想3次元空間内を移動する自機50Aを注視するように、仮想ステレオカメラ60に関する各カメラパラメータを制御する仮想ステレオカメラ制御処理を実行する(ステップS7)。具体的には、CPU311は、仮想ステレオカメラ60が自機50Aと一定の距離を保ったまま自機50Aをその後方の3人称視点から注視するように、仮想ステレオカメラ60の撮像方向61、視点位置、視野角、位置座標、移動速度等のカメラパラメータを適切な値に制御する。また、CPU311は、このステップS7において、ステップS2の入力受付処理によって3D調整スイッチ25の操作が受け付けられた場合には、3D調整スイッチ25の操作を示す操作データ332に基づいて、カメラ間距離E(図16参照)を変化させる。この場合、ステップS7の処理が行われることによってカメラ間距離データ3332が更新されることになる。また、CPU311は、このステップS7において、立体視基準距離D(図16参照)が自機50Aの状態(移動速度や姿勢等)に応じた値となるように、立体視基準距離Dを制御する。この場合、ステップS7の処理が行われることによって立体視基準距離データ3331が更新されることになる。
【0111】
ステップS7の処理に続いて、CPU311は、ゲーム装置10Aにおいて構築されている仮想3次元空間内の各3次元オブジェクト(本実施形態では自機50A、敵機50B、敵機50C、及びミサイル53)の位置座標を算出する計算処理を実行する(ステップS8)。この位置座標を算出する処理は従来の方法と同様であるため、ここでの詳細な説明は省略する。
【0112】
続いて、CPU311は、仮想3次元空間内の各3次元オブジェクトと、仮想3次元空間内には配置されていない2次元オブジェクト(本実施形態では撮像画像51,54等)とを一緒に上側LCD22に表示するための描画処理を実行する(ステップS9)。このステップS9の描画処理は、仮想ステレオカメラ60を用いて3次元オブジェクトを透視射影して得られた画像と、実カメラである内側撮像部24を用いて2次元オブジェクトを正射影して得られた画像とを一緒に描画する処理である。このステップS9の処理が行われることにより生成された立体視画像(左目用画像及び右目用画像)が上側LCD22に出力されることで、図5に例示したようなゲーム画像が上側LCD22に立体視表示される。なお、このステップS9における描画処理については、図10及び図11に基づいて後に詳述する。
【0113】
ステップS9の描画処理に続いて、CPU311は、電源ボタン14F等の操作の有無に基づいて、ゲームの終了が指示されたか否かを判定する(ステップS10)。ゲームの終了が指示されていないとCPU311によって判定された場合(ステップS10:NO)、ステップS2に処理が戻されて、ステップS2以降の処理が繰り返される。逆に、ゲームの終了が指示されたとCPU311によって判定された場合(ステップS10:YES)、一連のゲーム処理が終了する。
【0114】
[描画処理]
以下、図10及び図11を参照しつつ、描画処理プログラム323に従ってゲーム装置10Aにより実行される描画処理について説明する。ここで、図10及び図11は、図8のステップS9における描画処理の詳細フローチャートである。なお、以下の説明では、ゲーム装置10Bを操作するプレイヤ2の顔を表す撮像画像51を、そのプレイヤ2によって操作される敵機50Bと同じ立体感で(同じ奥行き位置に)立体視表示するためにゲーム装置10Aにおいて行われる処理について説明するが、敵機50Cとその敵機50Cを操作するプレイヤ3の顔を表す撮像画像54についても同様の処理が行われる。
【0115】
上記ステップS8の処理によって各3次元オブジェクトの位置座標を計算すると、CPU311は、仮想3次元空間(XYZ座標系(ワールド座標系)で表される空間)に配置されている敵機50Bの2次元座標系(XY座標系)における中心座標(X1,Y1)を取得する(ステップS901)。
【0116】
図12は、2次元座標系(XY座標系)における敵機50Bの中心座標(X1,Y1)の取得方法について説明するための図である。図12において、X軸方向は、図1に示されるように上側LCD22の画面を正面から見た場合の右方向と一致する方向である。Y軸方向は、図1に示されるように上側LCD22の画面を正面から見た場合の上方向と一致する方向である。Z軸方向は、図1に示されるように上側LCD22の画面を正面から見た場合の奥行き方向と一致する方向である。なお、図12においては、説明の便宜上、仮想3次元空間に配置されている3次元オブジェクトのうち、敵機50Bのみが表記され、他の3次元オブジェクト(自機50A、敵機50B、及びミサイル53)の図示が省略されている。
【0117】
図12に示されるように、ゲーム装置10Aにおいて構築される仮想3次元空間には、左目用カメラ60Lと右目用カメラ60Rとから構成される仮想ステレオカメラ60と、敵機50Bとが配置されている。CPU311は、ステップS901において、まず、仮想3次元空間における仮想ステレオカメラ60と敵機50Bとの間に上側LCD22の画面を仮想配置する。この仮想配置された上側LCD22の画面が、図12における仮想画面220である。この仮想画面220は、上側LCD22の画面を仮想3次元空間に仮想配置したものであるため、上側LCD22の画面と対応する大きさを有している。具体的には、仮想画面220は、仮想画面220のX軸方向の大きさが上側LCD22のX軸方向の画素数と対応し、且つ、仮想画面220のY軸方向の大きさが上側LCD22のY軸方向の画素数と対応するように、その大きさが設定されている。なお、仮想画面220を仮想配置する位置は、仮想ステレオカメラ60の撮像方向61や画角等に基づいて決定される(図16参照)。また、本実施形態では、仮想画面220は基準面と同じ平面上に配置されるが、図16では、説明の便宜上、仮想画面220を基準面とずらして表記している。ただし、仮想画面220は、必ずしも基準面と同じ平面上に配置する必要はなく、基準面とは無関係に配置されてもよい。CPU311は、この仮想画面220を仮想配置した後、仮想ステレオカメラ60の視点位置(左目用カメラ60Lと右目用カメラ60Rとの中間に配置された中点カメラ60Cの視点位置)と、敵機50Bとを結ぶ線分を求める。そして、CPU311は、仮想画面220を含む平面(XY座標系)において、その平面と、仮想ステレオカメラ60の視点位置と敵機50とを結ぶ線分が交差する点を、敵機50Bの中心座標(X1,Y1)として取得する。このようにして取得された敵機50Bの中心座標(X1,Y1)を示すデータは、中心座標データ336として作業領域331に格納される。
【0118】
次に、CPU311は、仮想画面220を含む平面(XY座標系)における撮像画像51の配置領域222を設定する(ステップS902)。
【0119】
図13は、XY座標系(2次元座標系)における撮像画像51の配置領域の決定方法について説明するための図である。CPU311は、ステップS902において、配置領域222を特定するための情報として、XY座標系において敵機50Bの中心座標(X1,Y1)から例えば左上方に所定量(所定画素数分)シフトした位置を中心とする領域である配置領域222の四隅のXY座標を求める。このステップS902の処理が行われることにより、上側LCD22の画面上における撮像画像51の配置位置と撮像画像51の大きさが決定されることになる。したがって、このステップS902における配置領域222の四隅のXY座標の設定の仕方によって、立体視表示される撮像画像51の大きさを一定に維持したり、逆にその大きさを変化させたりすることが可能である。このため、配置領域222の四隅のXY座標は、立体視表示させる撮像画像51の大きさを考慮して適切な位置に決定される。なお、本実施形態では、敵機50Bを操作しているのがプレイヤ2であることを自機50Aを操作するプレイヤ1が容易に視認できるように、配置領域222の大きさを一定に維持するように配置領域222の四隅のXY座標が設定される。このようにして配置領域222の四隅のXY座標が決定されると、これら4つのXY座標を示すデータが配置位置座標データ337として作業領域331に格納される。
【0120】
ステップS902の処理に続いて、CPU311は、敵機50Bが上側LCD22の画面外に位置しているか否かを判定する(ステップS903)。図12に示されるように、上記ステップS901の処理で取得された敵機50Bの中心座標(X1,Y1)が仮想画面222上の座標である場合、敵機50Bは、上側LCD22に立体視表示される。これに対して、敵機50Bの中心座標(X1,Y1)が仮想画面22の外側の座標である場合、敵機50Bは、上側LCD22に表示されない。そこで、CPU311は、ステップS903において、中心座標データ336が示す敵機50Bの中心座標(X1,Y1)が上側LCD22の画面に対応する仮想画面220上の座標であるか否かに基づいて、敵機50Bが上側LCD22の画面外に位置しているか否かを判定する。
【0121】
ところで、本実施形態では、図5に示されるように、敵機50Bの左上方に敵機50Bを操作するプレイヤ2の顔を示す撮像画像51を立体視表示させるようにしている。すなわち、上述したように、敵機50Bの中心座標(X1,Y1)に対して左上方に所定量だけシフトした位置に配置領域222を設定するようにしている。このため、例えば図14に示されるように、仮想画面220の外側に位置する敵機50Bの中心座標(X3,Y3)に対して左上方に所定量シフトした位置に設定されたXY座標(X4,Y4)を中心とする配置領域222も、中心座標(X3,Y3)と同様に、仮想画面220の外側に位置することとなる。このため、自機50Aの前方の直上に位置している敵機50Bが上側LCD22に表示されないだけでなく、その敵機50Bを操作するプレイヤ2の顔を表す撮像画像51も上側LCD22に表示されない状態となる。その結果、自機50Aを操作するプレイヤ1が敵機50Bの位置している方向や敵機50Bを操作するプレイヤを認識できなくなり、ゲームの操作性が低下する。
【0122】
そこで、CPU311は、敵機50Bが上側LCD22の画面外に位置していると判定した場合(ステップS903:YES)、上記ステップS902の処理で設定した配置領域222を補正する(ステップS904)。具体的には、CPU311は、図15に示されるように、XY座標(X4,Y4)を中心とする配置領域222の全体が仮想画面220内に位置するように、すなわち配置領域222の中心のYX座標が(X4,Y5)となるように、配置領域222の位置を補正する。このステップS904の処理が行われることにより、上記ステップS902の処理で作業領域331に格納された配置位置座標データ337が更新される。なお、ここでは、配置領域222のY座標だけを補正して配置領域222を仮想画面220内にシフトさせる場合について説明したが、配置領域222のX座標だけを補正して配置領域222を仮想画面220内にシフトさせたり、配置領域222のX座標とY座標の両方を補正して配置領域222を仮想画面220内にシフトさせるようにしてもよい。
【0123】
なお、敵機50Bの中心座標(X3,Y3)が仮想画面220から大きく離れているにも拘わらず配置領域222の位置を仮想画面220内にシフトさせる上記ステップS904の補正処理を行うと、敵機50Bから大きく離れた位置に撮像画像51が表示されることになり、自機50Aを操作するプレイヤ1が敵機50Bの位置を正確に特定できなくなるおそれがある。このため、敵機50Bの中心座標(X3,Y3)が仮想画面222から所定距離以上離れている場合には、このステップS904の処理を行わないようにしてもよい。
【0124】
また、敵機50BのXY座標が仮想画面220の外側に位置している場合に限らず、敵機50BのXY座標が仮想画面220内に位置しているにも拘わらず配置領域222が上記ステップS902の処理によって仮想画面220の外側に設定される場合にも、上記ステップS904の補正処理を行うようにしてもよい。
【0125】
CPU311は、ステップS904の補正処理を行った場合、又は敵機50Bが上側LCD22の画面外に位置していない(画面内に位置している)と判定した場合(ステップS903:NO)、撮像画像51に対応する敵機50BのZ値を取得する(ステップS905)。具体的には、CPU311は、作業領域331に格納されている敵位置情報データ335が示す敵機50Bの位置座標(X、Y、Z)からZ軸方向の成分であるZ値を抽出する。このように、CPU311は、仮想3次元空間の状況(ここでは、撮像方向61における仮想ステレオカメラ60の視点位置から敵機50Bまでの距離)に応じたZ値を取得する。
【0126】
そして、CPU311は、撮像画像51の奥行き値を示すZ値データ339として作業領域331に格納することによって、抽出した敵機50BのZ値を撮像画像51に関連付ける(ステップS906)。
【0127】
ところで、上述したように、上記ステップS902の処理で設定された配置領域222は、敵機50Bの中心座標(X1,Y1)に対して左上方に所定量シフトした位置であるため、撮像画像51を配置領域222に配置した場合に、撮像画像51が敵機50Bと重なることはない。しかしながら、ステップS904の処理によって配置領域222の位置を補正した場合、撮像画像51が敵機50Bと重なる場合がある。これに対して、撮像画像51には、敵機50BのZ値が関連付けられるので、撮像画像51と敵機50Bとを一緒に描画した場合に、描画処理を適切に行えないおそれがある。
【0128】
このため、CPU311は、ステップS906に続いて、撮像画像51を敵機50Bと一緒に立体視表示した場合に、撮像画像51と敵機50Bとが重なるか否かを判定する(ステップS907)。具体的には、CPU311は、ステップS902の処理で設定した配置領域222(ステップS903で「YES」と判定された場合にはステップS904の処理で補正された配置領域222)が、ステップS901の処理で取得された中心座標(X1,Y1)を基準として配置された敵機50BとXY座標系において重なるか否かを、仮想3次元空間における敵機50Bの大きさや姿勢等を考慮して判定する。
【0129】
CPU311は、撮像画像51が敵機50Bと重なると判定した場合(ステップS907:YES)、ステップS906の処理で撮像画像51に関連付けられたZ値を補正する(ステップS908)。具体的には、CPU311は、ステップS906の処理で作業領域331に格納されたZ値データ339が示すZ値が敵機50BのZ値よりも若干小さくなるように、Z値データ339を更新する。このステップS908の処理が行われることにより、いわゆるZテストを伴う描画処理を正常に行うことができ、その結果、撮像画像51を敵機50Bの手前に表示させて、撮像画像51が敵機50Bに隠れてしまうのを防止することができる。なお、撮像画像51に関連付けられているZ値をこのステップS908の処理によって小さくし過ぎると、撮像画像51と敵機50Bの立体感が大きく異なる(撮像画像51が敵機50に対してかなり手前に位置したように見える)こととなり、撮像画像51があたかも仮想3次元空間内の敵機50Bと同じ奥行き位置に位置しているかのように見せる視覚的効果が低下するおそれがある。したがって、このステップS908の処理によるZ値の補正量は、このような事情を考慮して適切な値に設定されている。
【0130】
CPU311は、ステップS908の処理を行った場合、又は撮像画像51が敵機50Bと重ならないと判定した場合(ステップS907:NO)、プレイヤ1の左目によりに視認される撮像画像51の左目用画像と、同じくプレイヤ1の右目により視認される撮像画像51の右目用画像との上側LCD22の画面上における水平方向(Y軸方向)のずらし量Pを算出する(ステップS909)。
【0131】
図16は、敵機50Bのずらし量Pの算出方法について説明するための仮想3次元空間の模式図である。図16において、Pは、撮像画像51の左目用画像と右目用画像との上側LCD22の画面上におけるずらし量である。オブジェクト距離Aは、仮想ステレオカメラ60の撮像方向61における仮想ステレオカメラ60の視点位置から敵機50Bまでの距離である。このオブジェクト距離Aは、ゲーム装置10Bにおけるプレイヤ2の操作(すなわち敵位置情報データ335)に応じて適宜変化する。立体視基準距離Dは、仮想ステレオカメラ60の撮像方向61における仮想ステレオカメラ60の視点位置から基準面までの距離である。カメラ間距離Eは、仮想ステレオカメラ60を構成する左目用カメラ60Lと右目用カメラ60Rとの距離(基線長)である。このカメラ間距離Eは、プレイヤ1による3D調整スイッチ25の操作に応じて適宜変化する。
【0132】
これらのずらし量P、オブジェクト距離A、立体視基準距離D、カメラ間距離Eについて、三角形の相似の関係により、以下のような比の関係が成り立つ。
P:E=(A−D):A
そして、この式を変形することによって、ずらし量Pは以下の式で表すことができる。
E(A−D)=PA
P=E(A−D)/A
CPU311は、ステップS909において、この式の右辺にカメラ間距離データ3332が示すカメラ間距離E、仮想ステレオカメラ60の視点位置と敵位置情報データ335が示す敵機50Bの位置座標(X、Y、Z)とに基づいて算出されたオブジェクト距離A、及び立体視基準距離データ3331が示す立体視基準距離Dを代入することによってずらし量Pを算出する。
【0133】
ところで、ずらし量Pを示す上記演算式は、カメラ間距離Eを変数として含んでいる。このため、2次元オブジェクトの表示領域を決定するためのパラメータの一つであるずらし量Pは、例えば3D調整スイッチ25の操作に伴うカメラ間距離Eの変化に応じて、CPU311によって適宜更新される。
【0134】
CPU311は、このようにしてずらし量Pを算出すると、撮像画像50Bの左目用画像の表示領域222Lと右目用画像の表示領域222Rとを決定する(ステップS910)。具体的には、CPU311は、配置領域222の2次元座標及びずらし量Pに基づいて、左目用画像の表示領域222Lの四隅の2次元座標と、右目用画像の表示領域222Rの四隅の2次元座標を決定する。
【0135】
図17は、左目用画像の表示領域222Lと右目用画像の表示領域222Rとを示す図である。本実施形態では、撮像画像51を敵機50Bと同様に上側LCD22の画面に対して奥の位置に再生する。このため、CPU311は、ステップS910において、敵機50Bの左目用画像の表示領域222Lを配置領域222に対して左(X軸方向の反対方向)にP/2だけシフトさせた位置に決定し、敵機50Bの右目用画像の表示領域222Rを配置領域222に対して右(X軸方向)にシフトさせた位置に決定する。CPU311は、このステップS910の処理を行うことによって、2次元オブジェクト(ここでは撮像画像51)の大きさを示すパラメータ(各表示領域222L、222Rの四隅の2次元座標)を設定する。
【0136】
ステップS910の処理に続いて、CPU311は、表示領域を決定すべき他の撮像画像があるか否かを判定する(ステップS911)。ここで、他の撮像画像があるとCPU311によって判定された場合(ステップS911:YES)、処理がステップS901に戻される。本実施形態では、敵機50Cに対して表示領域が決定されていない場合に、処理がステップS901に戻される。
【0137】
CPU311は、仮想3次元空間内の3次元オブジェクト(本実施形態では自機50A、敵機50B、敵機50C、ミサイル53、地形オブジェクト)と仮想3次元空間には配置されていない2次元オブジェクト(本実施形態では撮像画像51,54)を一緒に描画するために、以下のステップS913〜ステップS917の一連の処理が繰り返し実行される。
【0138】
すなわち、CPU311は、他の撮像画像がないと判定した場合、フレームバッファ3131に描画すべき対象ピクセルを選択する(ステップS913)。具体的には、CPU311は、各3次元オブジェクトを構成するピクセル、及び各2次元オブジェクトを構成するピクセルの中から、いずれかのピクセルを対象ピクセルとして選択する。この対象ピクセルは、描画対象となる対象オブジェクト(3次元オブジェクト又は2次元オブジェクト)の一部を構成するピクセルである。
【0139】
対象ピクセルを選択すると、CPU311は、その対象ピクセルのZ値が、Zバッファ3132に既に格納されているバッファ値よりも小さいか否かを判定する(ステップS914)。具体的には、CPU311は、まず対象ピクセルのZ値を取得する。例えば対象ピクセルが自機50Aを構成するピクセルである場合、CPU311は、位置座標データ334が示す自機50Aの位置座標(X、Y、Z)の中からZ値を抽出する。また、例えば対象ピクセルが敵機50Bを構成するピクセルである場合、CPU311は、敵位置情報データ335が示す敵機50Bの位置座標(X、Y、Z)の中からZ値を抽出する。また、例えば対象ピクセルが撮像画像51である場合、CPU311は、Z値データ339が示す撮像画像51のZ値を対象ピクセルのZ値として取得する。また、例えば対象ピクセルが撮像画像54である場合、CPU311は、Z値データ339が示す撮像画像54のZ値を対象ピクセルのZ値として取得する。
【0140】
CPU311は、このようにして対象ピクセルのZ値を取得した後、取得したZ値が、そのピクセルが描画されるべきフレームバッファ3131内の記憶位置に対応するZバッファ3132内のバッファ値(Z値)よりも小さいか否かを判定する。このように、CPU311は、ステップS913の処理で選択した対象ピクセルに対してZテスト(深度テスト)を実行する。
【0141】
CPU311は、対象ピクセルのZ値がバッファ値よりも小さいと判定した場合(ステップS914:YES)、その対象ピクセルをフレームバッファ3131に描画する処理をGPU312に実行させる(ステップS915)。その際、対象ピクセルが2次元オブジェクトを構成するものである場合、GPU312は、対象ピクセルを、上記ステップS910の処理で決定した表示領域(表示領域222L又は表示領域222R)に対応した位置に描画する。また、対象ピクセルが3次元オブジェクトを構成するものである場合、CPU311は、左目用カメラ60L又は右目用カメラ60Rを用いた射影変換によって得られた2次元座標に対応する記憶位置に対象ピクセルを描画する。
【0142】
GPU312は、ステップS915の処理によって対象ピクセルを描画した後、その対応ピクセルのZ値を、その対応ピクセルを描画したフレームバッファ3131内の記憶位置に対応するバッファ値としてZバッファ3132に格納する(ステップS916)。
【0143】
CPU311は、ステップS916の処理を行った場合、又はZ値がバッファ値よりも小さくないと判定した場合(ステップS914:NO)、選択されていない対象ピクセルがあるか否かを判定する(ステップS917)。選択されていない対象ピクセルがあるとCPU311によって判定された場合(ステップS917:YES)、処理がステップS913に戻される。そして、ステップS913〜ステップS917の処理が全ての対象ピクセルに対して実行されることにより、フレームバッファ3131に左目用画像及び右目用画像が描画される。
【0144】
このように、GPU312は、Zバッファ3132を用いて、2次元オブジェクトに関連付けられたZ値と、3次元オブジェクトのZ値とを比較しながら、2次元オブジェクトの左目用画像及び右目用画像と、3次元オブジェクトの左目用画像及び右目用画像とを合成描画する。すなわち、2次元オブジェクトと3次元オブジェクトの左目用画像同士を一緒に描画し、右目用画像同士を一緒に描画する。これにより、左目用合成画像および右目用合成画像からなる立体視画像が生成される。
【0145】
CPU311は、選択されていない対象ピクセルがないと判定した場合(ステップS917:NO)、すなわち全ての2次元オブジェクト及び3次元オブジェクトの左目用画像及び右目用画像がフレームバッファ3131に描画された場合、GPU312に対して描画された左目用画像及び右目用画像を上側LCD22に出力させる(ステップS918)。
【0146】
このような一連の処理によって、仮想3次元空間内の3次元オブジェクトを仮想ステレオカメラ60(2つの仮想カメラ)で撮影して得られた左目用画像及び右目用画像と、2次元オブジェクトをずらし量Pに基づいて左右にずらした左目用画像及び右目用画像とが一緒に描画される。そして、このようにして合成された左目用合成画像と右目用合成画像とが上側LCD22に出力されることで、3次元オブジェクトと2次元オブジェクトが一緒に立体視表示されることになる。
【0147】
図18及び図19は、上側LCD22に立体視表示される画像の一例を示す画面図である。敵機50BのZ値が惑星オブジェクト57のZ値よりも小さい場合、敵機50Bは、惑星オブジェクト57の一部を隠すように、惑星オブジェクト57の手前に立体視表示される。その際に、敵機50Bに対応する撮像画像51に対して敵機50Bと同じか或いは若干小さいZ値が与えられているので、図18に示されるように、撮像画像51についても惑星オブジェクト57の手前に立体視表示される。
【0148】
また、逆に敵機50BのZ値が惑星オブジェクト57のZ値よりも大きい場合、敵機50Bは、その一部が惑星オブジェクト57に隠されるように、惑星オブジェクト57の奥に立体視表示される。その際に、敵機50Bに対応する撮像画像51に対して付加されたZ値が惑星オブジェクト57のZ値よりも大きいので、図19に示されるように、撮像画像51についても惑星オブジェクト57の奥に立体視表示される。
【0149】
このように、元々Z値を有していない2次元オブジェクトである撮像画像51に仮想3次元空間内の3次元オブジェクトである敵機50Bと同じか或いは若干小さいZ値を付与するようにしたことで、隠蔽の効果(手前のオブジェクトが奥のオブジェクトの一部を隠す効果)を効果的に生じさせることができる。
【0150】
[本実施形態の作用効果]
以上説明したように、本実施形態によれば、2次元オブジェクトである例えば撮像画像51が仮想3次元空間の状況(例えば敵機50Bの奥行き位置)に応じた奥行き位置に立体視表示される。このため、仮想3次元空間には存在しない2次元オブジェクトを仮想3次元空間内の3次元オブジェクトと一緒に立体視表示する場合に、2次元オブジェクトを違和感なく自然に立体視表示させることができる。
【0151】
また、本実施形態では、2次元オブジェクト(例えば撮像画像51)の奥行き値以外のパラメータ(例えば撮像画像51の大きさ)が仮想3次元空間の状況とは無関係に設定される。このため、2次元オブジェクトの態様を、仮想3次元空間の状況の影響を受けることなく柔軟に変化させることができる。すなわち、立体視表示された2次元オブジェクトの見た目の奥行き位置とは無関係に(独立して)、2次元オブジェクトの大きさ等を制御することができる。
【0152】
また、本実施形態では、2次元オブジェクト(例えば撮像画像51)の奥行き位置の変化の影響を受けずに2次元オブジェクトの大きさを設定することができるという利点がある。
【0153】
また、本実施形態では、2次元オブジェクト(例えば撮像画像51)の大きさを示すパラメータが一定に維持される。2次元オブジェクトは、その奥行き値だけが仮想3次元空間の状況の影響を受けるので、2次元オブジェクトの奥行き位置が変化する場合でも、2次元オブジェクトの大きさを一定に維持することが可能である。
【0154】
また、本実施形態では、3次元オブジェクトが上側LCD22の画面上におけるどの位置に表示されるかに基づいて2次元オブジェクトの表示領域が決定される。このため、2次元オブジェクトによって示される情報(例えば敵機50Bを操作するユーザの顔)をユーザに対して効果的に提示することができる。
【0155】
ところで、仮に3次元座標系である仮想3次元空間において3次元オブジェクトとの関係で2次元オブジェクトの表示領域を決定するようにした場合、仮想ステレオカメラ60によって仮想3次元空間が透視射影されるので、仮想ステレオカメラ60からの距離によって2次元オブジェクトの表示領域の大きさが変化してしまうことになる。これに対して、本実施形態では、上側LCD22の画面上の表示位置、すなわち2次元座標系における3次元オブジェクトの表示位置(図12の(X1,Y1))に基づいて2次元オブジェクトの表示領域が決定される。このため、例えば3次元オブジェクトと同じ奥行き位置に2次元オブジェクトを配置するように奥行き値を関連付けた場合に、仮想ステレオカメラ60から3次元オブジェクトまでの距離によって2次元オブジェクトの大きさ(表示領域の広さ)が変化してしまうのを防止することができる。
【0156】
また、本実施形態では、3次元オブジェクトの奥行き位置に合わせて2次元オブジェクトを立体視表示することができる。すなわち、仮想3次元空間には存在していない2次元オブジェクトが仮想3次元空間内のオブジェクトと同じ奥行き位置に配置されて様子を自然に表現することができる。
【0157】
また、本実施形態では、3D調整スイッチ25が操作されることによってカメラ間距離Eが変化する。これにより、3次元オブジェクトの立体感が変化するが、ずらし量データ340が示すずらし量は、そのカメラ間距離Eに応じた値として算出される。このため、2次元オブジェクトの立体感も同じように変化する。その結果、3次元オブジェクトの立体感と、2次元オブジェクトの立体感との関係を一定に維持することができる。
【0158】
また、本実施形態では、取得された奥行き値が2次元オブジェクトに関連付けられるので、本実施形態で例示したように2次元オブジェクトが複数存在する場合であっても、立体視画像を適切に生成することができる。
【0159】
また、本実施形態では、3次元オブジェクトと2次元オブジェクトとの描画処理にZバッファ3132が用いられる。このため、例えば仮想3次元空間内のある3次元オブジェクトよりも手前に立体視表示されるように奥行き値が関連付けられているにも拘わらず2次元オブジェクトがその3次元オブジェクトの後方に立体視表示されるというように、各オブジェクトの奥行き値に矛盾した画像が立体視表示されるのを防止することができる。
【0160】
また、本実施形態では、本発明の2次元オブジェクトが内側撮像部24によって撮像された人物の顔を表す撮像画像である。このため、仮想3次元空間には存在しない人物の顔があたかも仮想3次元空間に存在しているかのように見せる視覚的効果を生じさせることができる。
【0161】
また、本実施形態では、本発明の2次元オブジェクトが内側撮像部24によってリアルタイムに取得される撮像画像51,54である。このため、仮想3次元空間には存在しない2次元オブジェクトがあたかも仮想3次元空間に存在していて、且つ、仮想3次元空間内で動いているかのように見せる視覚的効果を容易に生じさせることができる。
【0162】
また、本実施形態では、本発明の2次元オブジェクトが、ゲーム装置10Aが外部装置であるゲーム装置10Bと通信を行って取得した撮像画像51である。このため、ゲーム装置10Aが有していない撮像画像51が、ゲーム装置10Aにおいて構築される仮想3次元空間内に存在しているかのように見せる視覚的効果を得ることができる。
【0163】
[変形例]
本発明は上記実施形態に限定されるものではなく、例えば以下の形態であってもよい。
すなわち、上記実施形態では、本発明の所定の2次元オブジェクトが元々奥行き値を有していない撮像画像51,54である場合について説明した。これに代えて、本発明の所定の2次元オブジェクトは、画像の形態となっていない2次元オブジェクトであってもよいし、或いは、3次元オブジェクトを正射影することによって得られた2次元オブジェクトであってもよい。すなわち、本発明の所定の2次元オブジェクトは、3次元オブジェクトから奥行き値を除いて奥行き値を有しない2次元オブジェクトに変換したものであってもよい。
【0164】
また、上記実施形態では、本発明のパラメータが撮像画像51等の2次元オブジェクトの大きさを示すパラメータである場合について説明したが、本発明のパラメータは、例えば2次元オブジェクトの形状を示すパラメータであってもよい。
【0165】
また、上記実施形態では、3次元オブジェクト(例えば敵機50B)の2次元座標に基づいて2次元オブジェクトの表示領域(例えば撮像画像51の表示領域222L、222R)を決定する場合について説明したが、2次元オブジェクトの表示領域は、3次元オブジェクトの2次元座標とは無関係に決定されてもよい。
【0166】
また、上記実施形態では、仮想ステレオカメラ60の視点位置から3次元オブジェクト(例えば敵機50B)までのオブジェクト距離A(図16参照)に応じたZ値が取得される場合について説明したが、取得されるZ値は、オブジェクト距離Aとは無関係に取得されてもよい。例えば、仮想3次元空間の状況が第1の状況から第1の状況とは異なる第2の状況へと変化するような場合に、第1の状況のときには第1のZ値を取得し、第2の状況のときには第1のZ値とは異なる第2のZ値を取得するようにしてもよい。
【0167】
また、上記実施形態では、ゲーム装置10Aで立体視表示される撮像画像(例えば撮像画像51)が外部装置(例えばゲーム装置10B)から受信したものである場合について説明したが、立体視表示される撮像画像は、ゲーム装置10Aにおいて撮像されたものであってもよい。
【0168】
また、上記実施形態では、ゲーム装置10Aで立体視表示される撮像画像(例えば撮像画像51)が、外部装置(例えばゲーム装置10B)の内側撮像部24によってリアルタイムに取得される撮像画像である場合について説明した。これに代えて、ゲーム装置10Aで立体視表示される撮像画像は、外部装置に予め格納されたものであってもよい。
【0169】
また、上記実施形態では、ゲーム装置10Bの内側撮像部24によって撮像された撮像画像51がゲーム装置10Aの上側LCD22に立体視表示される場合について説明したが、ゲーム装置10Aで立体視表示される撮像画像は、例えばゲーム装置10Aの内側撮像部24により撮像されたものであってもよい。
【0170】
また、上記実施形態では、ゲーム装置10Aで立体視表示される撮像画像が人物の顔を表す撮像画像である場合について説明したが、立体視表示される撮像画像は、人物の顔を表す撮像画像に限定されるものではない。例えば、立体視表示される撮像画像は、外側撮像部23を非ステレオカメラとして使用して得られた、人物の顔を含まない撮像画像であってもよい。
【0171】
また、上記実施形態では、上記のような一連の処理を1台のゲーム装置10で実現しているが、これは必須ではなく、複数の情報処理装置が協働することによって上記のような一連の処理を実現してもよい。すなわち、取得手段、関連付け手段、生成手段、表示制御手段のうちの少なくとも1つの手段の機能を、ゲーム装置10以外の例えばネットワーク上のサーバ装置等が実現するようにしてもよい。この場合、ゲーム装置10及びサーバ装置からなるゲームシステムが、上述したゲーム装置10と同様に機能する。
【0172】
また、上記実施形態において、ゲーム装置10の形状や、それに設けられている各種操作ボタン14やタッチパネル13の形状、数、設置位置等は単なる一例に過ぎず、他の形状、数、設置位置であっても、本発明を実現できることは言うまでもない。また、上述したフローチャートに基づいて説明した処理の順序、設定値、判定に用いられる閾値等は単なる一例に過ぎず、本発明の範囲を逸脱しなければ他の順序や値であっても、本発明を実現できることは言うまでもない。
【0173】
また、上記実施形態のゲーム装置10において実行される表示制御プログラムは、外部メモリ44等の記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置10に供給されてもよい。また、上記表示制御プログラムは、ゲーム装置10内部の不揮発性記憶装置(データ保存用内部メモリ35等)に予め記録されていてもよい。なお、上記表示制御プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、或いはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ等であってもよい。また、上記表示制御プログラムを記憶する情報記憶媒体としては、上記表示制御プログラムを一時的に記憶する揮発性メモリでもよい。
【産業上の利用可能性】
【0174】
本発明は、立体視表示を行う表示制御装置のコンピュータに実行される表示制御プログラム、表示制御装置、表示制御システム、表示制御方法等に適用可能である。
【符号の説明】
【0175】
10 ゲーム装置(表示制御装置)
14 操作ボタン
22 上側LCD(表示装置)
25 3D調整スイッチ
31 情報処理部
32 メインメモリ
36 無線通信モジュール
50A 自機(3次元オブジェクト)
50B 敵機(3次元オブジェクト)
50C 敵機(3次元オブジェクト)
51,54 撮像画像(2次元オブジェクト)
57 惑星オブジェクト(3次元オブジェクト)
60 仮想ステレオカメラ
60L 左目用カメラ
60R 右目用カメラ
61 撮像方向
100 ゲームシステム
220 仮想画面
222 配置領域
222L、222R 表示領域
311 CPU
312 GPU
313 VRAM
3131 フレームバッファ
3132 Zバッファ

【特許請求の範囲】
【請求項1】
所定の2次元オブジェクトを表示装置に立体視表示させる表示制御装置のコンピュータに実行させる表示制御プログラムであって、
前記コンピュータを、
仮想ステレオカメラによって撮像される仮想3次元空間の状況に応じた奥行き値を取得する取得手段と、
視差を生じさせるために前記2次元オブジェクトを前記取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、前記仮想3次元空間に配置された所定の3次元オブジェクトを前記仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する生成手段と、
前記生成手段によって生成された立体視画像を前記表示装置に立体視表示させる表示制御手段として機能させる、表示制御プログラム。
【請求項2】
前記コンピュータを、前記所定の2次元オブジェクトの表示に関する前記奥行き値以外のパラメータを設定するパラメータ設定手段として更に機能させる、請求項1に記載の表示制御プログラム。
【請求項3】
前記パラメータは、前記所定の2次元オブジェクトの大きさを示すパラメータである、請求項2に記載の表示制御プログラム。
【請求項4】
前記パラメータ設定手段は、前記所定の2次元オブジェクトの大きさを示すパラメータを一定に維持する、請求項3に記載の表示制御プログラム。
【請求項5】
前記パラメータ設定手段は、前記所定の3次元オブジェクトの前記表示装置の画面上における2次元座標系での表示位置に基づいて、前記所定の2次元オブジェクトの表示領域を示すパラメータを設定する、請求項2に記載の表示制御プログラム。
【請求項6】
前記パラメータ設定手段は、前記仮想ステレオカメラと前記所定の3次元オブジェクトとの間に前記表示装置の画面と対応する大きさの仮想画面が配置されていると仮定した場合に、前記仮想ステレオカメラの視点位置と前記所定の3次元オブジェクトとを結ぶ線分と前記仮想画面を含む平面との交点の当該平面における2次元座標に基づいて、前記所定の2次元オブジェクトの表示領域を決定する、請求項5に記載の表示制御プログラム。
【請求項7】
前記取得手段は、前記仮想3次元空間における前記仮想ステレオカメラの視点位置から前記所定の3次元オブジェクトまでの距離に応じた奥行き値を取得する、請求項1から6のいずれかに記載の表示制御プログラム。
【請求項8】
前記表示制御手段は、前記表示制御装置が備える操作手段の操作に応じて、前記仮想ステレオカメラを構成する2つの仮想カメラの間の距離であるカメラ間距離を変化させ、
前記パラメータ設定手段は、前記カメラ間距離の変化に応じて、前記所定の2次元オブジェクトの表示領域を示すパラメータを更新する、請求項6に記載の表示制御プログラム。
【請求項9】
前記コンピュータを、前記取得手段によって取得された奥行き値を前記所定の2次元オブジェクトに関連付ける関連付け手段として更に機能させ、
前記生成手段は、前記関連付け手段によって関連付けられた奥行き値を用いて、前記立体視画像を生成する、請求項1から8のいずれかに記載の表示制御プログラム。
【請求項10】
前記生成手段は、Zバッファを用いて、前記関連付け手段によって前記所定の2次元オブジェクトに関連付けられた奥行き値と、前記所定の3次元オブジェクトの奥行き値とを比較しながら、画像を合成する、請求項9に記載の表示制御プログラム。
【請求項11】
前記生成手段は、描画の対象となる対象オブジェクトのZ値が、前記Zバッファに格納されている前記2次元オブジェクト又は前記3次元オブジェクトのZ値よりも小さい場合に、前記対象オブジェクトを描画する、請求項10に記載の表示制御プログラム。
【請求項12】
前記所定の2次元オブジェクトは、撮像部によって撮像された人物の顔を表す撮像画像である、請求項1から11のいずれかに記載の表示制御プログラム。
【請求項13】
前記所定の2次元オブジェクトは、撮像部によってリアルタイムに取得される撮像画像である、請求項1から12のいずれかに記載の表示制御プログラム。
【請求項14】
前記所定の2次元オブジェクトは、前記表示制御装置が外部装置と通信を行って取得したものである、請求項1から13のいずれかに記載の表示制御プログラム。
【請求項15】
所定の2次元オブジェクトを表示装置に立体視表示させる表示制御装置であって、
仮想ステレオカメラによって撮像される仮想3次元空間の状況に応じた奥行き値を取得する取得手段と、
視差を生じさせるために前記2次元オブジェクトを前記取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、前記仮想3次元空間に配置された所定の3次元オブジェクトを前記仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する生成手段と、
前記生成手段によって生成された立体視画像を前記表示装置に立体視表示させる表示制御手段とを備える表示制御装置。
【請求項16】
所定の2次元オブジェクトを表示装置に立体視表示させる表示制御システムであって、
仮想ステレオカメラによって撮像される仮想3次元空間の状況に応じた奥行き値を取得する取得手段と、
視差を生じさせるために前記2次元オブジェクトを前記取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、前記仮想3次元空間に配置された所定の3次元オブジェクトを前記仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する生成手段と、
前記生成手段によって生成された立体視画像を前記表示装置に立体視表示させる表示制御手段とを備える表示制御システム。
【請求項17】
所定の2次元オブジェクトを表示装置に立体視表示させる表示制御装置に実行される表示制御方法であって、
仮想ステレオカメラによって撮像される仮想3次元空間の状況に応じた奥行き値を取得するステップと、
視差を生じさせるために前記2次元オブジェクトを前記取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、前記仮想3次元空間に配置された所定の3次元オブジェクトを前記仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成するステップと、
前記生成された立体視画像を前記表示装置に立体視表示させるステップとを含む、表示制御方法。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図2C】
image rotate

【図2D】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2012−174237(P2012−174237A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−39059(P2011−39059)
【出願日】平成23年2月24日(2011.2.24)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】