(57)【要約】【課題】仮想３次元空間内にはない２次元オブジェクトを仮想３次元空間内に配置された３次元オブジェクトと一緒に立体視表示する場合に、２次元オブジェクトを違和感なく自然に立体視表示させること。【解決手段】ゲーム装置１０では、まず、仮想３次元空間の状況に応じた奥行き値が取得される。そして、仮想３次元空間には存在しない２次元オブジェクト５１をその奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像が、３次元オブジェクト５０Ｂを仮想ステレオカメラ６０で撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画されて、立体視画像が生成される。これにより得られた立体視画像が、上側ＬＣＤ２２に出力される。【選択図】図５
2012174237.tif 000002
【特許請求の範囲】
【請求項１】
所定の２次元オブジェクトを表示装置に立体視表示させる表示制御装置のコンピュータに実行させる表示制御プログラムであって、
前記コンピュータを、
仮想ステレオカメラによって撮像される仮想３次元空間の状況に応じた奥行き値を取得する取得手段と、
視差を生じさせるために前記２次元オブジェクトを前記取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、前記仮想３次元空間に配置された所定の３次元オブジェクトを前記仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する生成手段と、
前記生成手段によって生成された立体視画像を前記表示装置に立体視表示させる表示制御手段として機能させる、表示制御プログラム。
【請求項２】
前記コンピュータを、前記所定の２次元オブジェクトの表示に関する前記奥行き値以外のパラメータを設定するパラメータ設定手段として更に機能させる、請求項１に記載の表示制御プログラム。
【請求項３】
前記パラメータは、前記所定の２次元オブジェクトの大きさを示すパラメータである、請求項２に記載の表示制御プログラム。
【請求項４】
前記パラメータ設定手段は、前記所定の２次元オブジェクトの大きさを示すパラメータを一定に維持する、請求項３に記載の表示制御プログラム。
【請求項５】
前記パラメータ設定手段は、前記所定の３次元オブジェクトの前記表示装置の画面上における２次元座標系での表示位置に基づいて、前記所定の２次元オブジェクトの表示領域を示すパラメータを設定する、請求項２に記載の表示制御プログラム。
【請求項６】
前記パラメータ設定手段は、前記仮想ステレオカメラと前記所定の３次元オブジェクトとの間に前記表示装置の画面と対応する大きさの仮想画面が配置されていると仮定した場合に、前記仮想ステレオカメラの視点位置と前記所定の３次元オブジェクトとを結ぶ線分と前記仮想画面を含む平面との交点の当該平面における２次元座標に基づいて、前記所定の２次元オブジェクトの表示領域を決定する、請求項５に記載の表示制御プログラム。
【請求項７】
前記取得手段は、前記仮想３次元空間における前記仮想ステレオカメラの視点位置から前記所定の３次元オブジェクトまでの距離に応じた奥行き値を取得する、請求項１から６のいずれかに記載の表示制御プログラム。
【請求項８】
前記表示制御手段は、前記表示制御装置が備える操作手段の操作に応じて、前記仮想ステレオカメラを構成する２つの仮想カメラの間の距離であるカメラ間距離を変化させ、
前記パラメータ設定手段は、前記カメラ間距離の変化に応じて、前記所定の２次元オブジェクトの表示領域を示すパラメータを更新する、請求項６に記載の表示制御プログラム。
【請求項９】
前記コンピュータを、前記取得手段によって取得された奥行き値を前記所定の２次元オブジェクトに関連付ける関連付け手段として更に機能させ、
前記生成手段は、前記関連付け手段によって関連付けられた奥行き値を用いて、前記立体視画像を生成する、請求項１から８のいずれかに記載の表示制御プログラム。
【請求項１０】
前記生成手段は、Ｚバッファを用いて、前記関連付け手段によって前記所定の２次元オブジェクトに関連付けられた奥行き値と、前記所定の３次元オブジェクトの奥行き値とを比較しながら、画像を合成する、請求項９に記載の表示制御プログラム。
【請求項１１】
前記生成手段は、描画の対象となる対象オブジェクトのＺ値が、前記Ｚバッファに格納されている前記２次元オブジェクト又は前記３次元オブジェクトのＺ値よりも小さい場合に、前記対象オブジェクトを描画する、請求項１０に記載の表示制御プログラム。
【請求項１２】
前記所定の２次元オブジェクトは、撮像部によって撮像された人物の顔を表す撮像画像である、請求項１から１１のいずれかに記載の表示制御プログラム。
【請求項１３】
前記所定の２次元オブジェクトは、撮像部によってリアルタイムに取得される撮像画像である、請求項１から１２のいずれかに記載の表示制御プログラム。
【請求項１４】
前記所定の２次元オブジェクトは、前記表示制御装置が外部装置と通信を行って取得したものである、請求項１から１３のいずれかに記載の表示制御プログラム。
【請求項１５】
所定の２次元オブジェクトを表示装置に立体視表示させる表示制御装置であって、
仮想ステレオカメラによって撮像される仮想３次元空間の状況に応じた奥行き値を取得する取得手段と、
視差を生じさせるために前記２次元オブジェクトを前記取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、前記仮想３次元空間に配置された所定の３次元オブジェクトを前記仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する生成手段と、
前記生成手段によって生成された立体視画像を前記表示装置に立体視表示させる表示制御手段とを備える表示制御装置。
【請求項１６】
所定の２次元オブジェクトを表示装置に立体視表示させる表示制御システムであって、
仮想ステレオカメラによって撮像される仮想３次元空間の状況に応じた奥行き値を取得する取得手段と、
視差を生じさせるために前記２次元オブジェクトを前記取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、前記仮想３次元空間に配置された所定の３次元オブジェクトを前記仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する生成手段と、
前記生成手段によって生成された立体視画像を前記表示装置に立体視表示させる表示制御手段とを備える表示制御システム。
【請求項１７】
所定の２次元オブジェクトを表示装置に立体視表示させる表示制御装置に実行される表示制御方法であって、
仮想ステレオカメラによって撮像される仮想３次元空間の状況に応じた奥行き値を取得するステップと、
視差を生じさせるために前記２次元オブジェクトを前記取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、前記仮想３次元空間に配置された所定の３次元オブジェクトを前記仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成するステップと、
前記生成された立体視画像を前記表示装置に立体視表示させるステップとを含む、表示制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示制御プログラム、表示制御装置、表示制御システム、及び表示制御方法に関し、より特定的には、立体視表示を行う表示制御装置のコンピュータに実行させる表示制御プログラム、表示制御装置、表示制御システム、及び表示制御方法に関する。
【背景技術】
【０００２】
近年、映画やゲーム等において立体視表示を行う様々な装置が提案されている。例えば特許文献１には、仮想３次元空間を仮想ステレオカメラで撮像して左目用画像及び右目用画像を生成し、これらの画像をずらして描画することで仮想３次元空間内の３次元オブジェクトを立体視表示する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−７３９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、仮想３次元空間内には存在しないメニューや字幕、アイコン等の２次元オブジェクトを仮想３次元空間内の３次元オブジェクトと一緒に立体視表示する場合に、２次元オブジェクトが奥行き値を有していないため、従来の装置では、２次元オブジェクトが３次元オブジェクトに対して常に手前に表示されるように描画処理が行われていた。このため、従来の装置では、２次元オブジェクトを３次元オブジェクトと一緒に立体視表示する場合に、２次元オブジェクトを違和感なく自然に表現することが困難であった。すなわち、仮想３次元空間内には存在しない２次元オブジェクトがあたかも仮想３次元空間内に存在しているかのように見せる視覚的効果を得ることは困難であった。
【０００５】
それ故に、本発明の目的は、仮想３次元空間内にはない２次元オブジェクトを仮想３次元空間内に配置された３次元オブジェクトと一緒に立体視表示する場合に、２次元オブジェクトを違和感なく自然に立体視表示させることができる表示制御プログラム、表示制御装置、表示制御システム、及び表示制御方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明の表示制御プログラムは、所定の２次元オブジェクトを表示装置に立体視表示させる表示制御装置のコンピュータに実行させる表示制御プログラムである。この表示制御プログラムは、コンピュータを取得手段、生成手段、及び表示制御手段として機能させる。取得手段は、仮想ステレオカメラによって撮像される仮想３次元空間の状況に応じた奥行き値を取得する。生成手段は、視差を生じさせるために２次元オブジェクトを取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、仮想３次元空間に配置された所定の３次元オブジェクトを仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する。表示制御手段は、生成手段によって生成された立体視画像を表示装置に立体視表示させる。
【０００７】
この構成によれば、２次元オブジェクトが仮想３次元空間の状況に応じた奥行き位置に立体視表示される。例えば３次元オブジェクトが有している奥行き値だけ２次元オブジェクトがずらされることにより、２次元オブジェクトが３次元オブジェクトと同じ奥行き位置に立体視表示される。このため、仮想３次元空間には存在しない２次元オブジェクトを仮想３次元空間内の３次元オブジェクトと一緒に立体視表示する場合に、２次元オブジェクトを違和感なく自然に立体視表示させることが可能になる。なお、２次元オブジェクトとしては、元々奥行き値を有していない２次元画像や、３次元オブジェクトを正射影することによって奥行き値を有さなくなった２次元画像が例として挙げられる。
【０００８】
コンピュータを、所定の２次元オブジェクトの表示に関する奥行き値以外のパラメータを設定するパラメータ設定手段として更に機能させてもよい。
【０００９】
この構成によれば、２次元オブジェクトの奥行き値以外のパラメータ（例えば２次元オブジェクトの大きさや形状）がパラメータ設定手段によって設定される。このため、２次元オブジェクトの態様を、仮想３次元空間の状況の影響を受けることなく柔軟に変化させることが可能になる。すなわち、立体視表示された２次元オブジェクトの見た目の奥行き位置とは無関係に（独立して）、２次元オブジェクトの大きさや形状等を制御することが可能になる。
【００１０】
パラメータは、所定の２次元オブジェクトの大きさを示すパラメータであってもよい。この場合、所定の２次元オブジェクトの奥行き位置の変化の影響を受けずに所定の２次元オブジェクトの大きさを設定することが可能である。
【００１１】
パラメータ設定手段は、所定の２次元オブジェクトの大きさを示すパラメータを一定に維持してもよい。所定の２次元オブジェクトは、その奥行き値だけが仮想３次元空間の状況の影響を受けるので、所定の２次元オブジェクトの奥行き位置が変化する場合でも、所定の２次元オブジェクトの大きさを一定に維持することが可能である。
【００１２】
パラメータ設定手段は、所定の３次元オブジェクトの表示装置の画面上における２次元座標系での表示位置に基づいて、所定の２次元オブジェクトの表示領域を示すパラメータを設定してもよい。
【００１３】
この構成によれば、所定の３次元オブジェクトが表示装置の画面上におけるどの位置に表示されるかに基づいて所定の２次元オブジェクトの表示領域が決定される。このため、所定の２次元オブジェクトによって示される情報をユーザに対して効果的に提示することが可能になる。
【００１４】
また、仮に３次元座標系である仮想３次元空間において所定の３次元オブジェクトとの関係で所定の２次元オブジェクトの表示領域を決定するようにした場合、仮想ステレオカメラによって仮想３次元空間が透視射影されるので、仮想ステレオカメラからの距離によって所定の２次元オブジェクトの表示領域の大きさが変化してしまうことになる。これに対して、上記構成によれば、表示装置の画面上の表示位置、すなわち２次元座標系における所定の３次元オブジェクトの表示位置に基づいて所定の２次元オブジェクトの表示領域が決定される。このため、例えば所定の３次元オブジェクトと同じ奥行き位置に所定の２次元オブジェクトを配置するように２次元オブジェクトに奥行き値を与えた場合に、仮想ステレオカメラから所定の３次元オブジェクトまでの距離によって所定の２次元オブジェクトの大きさ（表示領域の広さ）が変化してしまうのを防止することが可能になる。
【００１５】
パラメータ設定手段は、仮想ステレオカメラと所定の３次元オブジェクトとの間に表示装置の画面と対応する大きさの仮想画面が配置されていると仮定した場合に、仮想ステレオカメラの視点位置と所定の３次元オブジェクトとを結ぶ線分と仮想画面を含む平面との交点のその平面における２次元座標に基づいて、所定の２次元オブジェクトの表示領域を決定してもよい。
【００１６】
この構成によれば、所定の２次元オブジェクトの表示領域を容易に決定することが可能になる。
【００１７】
取得手段は、仮想３次元空間における仮想ステレオカメラの視点位置から所定の３次元オブジェクトまでの距離に応じた奥行き値を取得してもよい。
【００１８】
この構成によれば、所定の３次元オブジェクトの奥行き位置に合わせて所定の２次元オブジェクトを立体視表示することが可能になる。すなわち、仮想３次元空間には存在していない所定の２次元オブジェクトが仮想３次元空間内の所定のオブジェクトと同じ奥行き位置に位置する様子を自然に表現することが可能になる。
【００１９】
表示制御手段は、表示制御装置が備える操作手段の操作に応じて、仮想ステレオカメラを構成する２つの仮想カメラの間の距離であるカメラ間距離を変化させる。この場合、パラメータ設定手段は、カメラ間距離の変化に応じて、所定の２次元オブジェクトの表示領域を示すパラメータを更新する。
【００２０】
カメラ間距離が変化することにより、所定の３次元オブジェクトの立体感が変化するが、そのカメラ間距離に応じたずらし量が算出されるため、所定の２次元オブジェクトの立体感も同じように変化する。このため、上記構成によれば、所定の３次元オブジェクトの立体感と、所定の２次元オブジェクトの立体感との関係を一定に維持することが可能になる。
【００２１】
コンピュータを、取得手段によって取得された奥行き値を所定の２次元オブジェクトに関連付ける関連付け手段として更に機能させてもよい。この場合、生成手段は、関連付け手段によって関連付けられた奥行き値を用いて、立体視画像を生成する。
【００２２】
この構成よれば、取得手段によって取得された奥行き値が２次元オブジェクトに関連付けられるので、例えば２次元オブジェクトが複数存在するような場合であっても、立体視画像を適切に生成することが可能になる。
【００２３】
生成手段は、Ｚバッファを用いて、関連付け手段によって所定の２次元オブジェクトに関連付けられた奥行き値と、所定の３次元オブジェクトの奥行き値とを比較しながら、画像を合成することが好ましい。
【００２４】
この構成によれば、例えば仮想３次元空間内のある３次元オブジェクトよりも手前に立体視表示されるように奥行き値が関連付けられているにも拘わらず２次元オブジェクトがその３次元オブジェクトの後方に立体視表示されるというように、各オブジェクトの奥行き値に矛盾した画像が立体視表示されるのを容易に防止することが可能になる。
【００２５】
生成手段は、描画の対象となる対象オブジェクトのＺ値が、Ｚバッファに格納されている２次元オブジェクト又は３次元オブジェクトのＺ値よりも小さい場合に、対象オブジェクトを描画する。
【００２６】
この構成によれば、例えば対象オブジェクト（３次元オブジェクト又は２次元オブジェクト）を別のオブジェクトの手前に立体視表示させる場合に、対象オブジェクトが別のオブジェクトの後ろに立体視表示されてしまうのを防止することが可能になる。
【００２７】
所定の２次元オブジェクトは、撮像部によって撮像された人物の顔を含む撮像画像であってもよい。
【００２８】
この構成によれば、仮想３次元空間には存在しない人物の顔があたかも仮想３次元空間に存在しているかのように見せる視覚的効果を生じさせることが可能になる。
【００２９】
所定の２次元オブジェクトは、撮像部によってリアルタイムに取得される撮像画像であってもよい。
【００３０】
この構成によれば、時間の経過に伴って撮像画像の表示内容が変化する。このため、仮想３次元空間には存在しない２次元オブジェクトがあたかも仮想３次元空間に存在していて、且つ、仮想３次元空間内で動いているかのように見せる視覚的効果を容易に生じさせることが可能になる。なお、撮像部は、表示制御装置に設けられていてもよいし、表示制御装置とは別の外部装置に設けられていてもよい。
【００３１】
所定の２次元オブジェクトは、表示制御装置が外部装置と通信を行って取得したものである。
【００３２】
この構成によれば、表示制御装置が有していない２次元オブジェクトが、表示制御装置において構築される仮想３次元空間内に存在しているかのように見せる視覚的効果を得ることが可能になる。
【００３３】
本発明は、所定の２次元オブジェクトを表示装置に立体視表示させる表示制御装置として捉えることもできる。この表示制御装置は、取得手段、生成手段、及び表示制御手段を備える。取得手段は、仮想ステレオカメラによって撮像される仮想３次元空間の状況に応じた奥行き値を取得する。生成手段は、視差を生じさせるために２次元オブジェクトを取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、仮想３次元空間に配置された所定の３次元オブジェクトを仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する。表示制御手段は、生成手段によって生成された立体視画像を表示装置に立体視表示させる。
【００３４】
また、本発明は、所定の２次元オブジェクトを表示装置に立体視表示させる表示制御システムとして捉えることもできる。この表示制御システムは、取得手段、生成手段、及び表示制御手段を備える。取得手段は、仮想ステレオカメラによって撮像される仮想３次元空間の状況に応じた奥行き値を取得する。生成手段は、視差を生じさせるために２次元オブジェクトを取得手段によって取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像を、仮想３次元空間に配置された所定の３次元オブジェクトを仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画することによって、立体視画像を生成する。表示制御手段は、生成手段によって生成された立体視画像を表示装置に立体視表示させる。
【００３５】
また、本発明は、所定の２次元オブジェクトを表示装置に立体視表示させる表示制御方法として捉えることもできる。この表示制御方法では、まず、仮想ステレオカメラによって撮像される仮想３次元空間の状況に応じた奥行き値が取得される。そして、視差を生じさせるために２次元オブジェクトを取得された奥行き値に応じたずらし量だけずらした左目用画像及び右目用画像が、仮想３次元空間に配置された所定の３次元オブジェクトを仮想ステレオカメラで撮像して得られた左目用画像及び右目用画像とそれぞれ合成描画されて、立体視画像が生成される。このようにして生成された立体視画像は、表示装置に出力されて立体視表示される。
【発明の効果】
【００３６】
この発明によれば、仮想３次元空間には存在しない２次元オブジェクトを仮想３次元空間内の３次元オブジェクトと一緒に立体視表示する場合に、その２次元オブジェクトを違和感なく自然に立体視表示させることができる。
【図面の簡単な説明】
【００３７】
【図１】開状態におけるゲーム装置１０の正面図
【図２Ａ】閉状態におけるゲーム装置１０の左側面図
【図２Ｂ】閉状態におけるゲーム装置１０の正面図
【図２Ｃ】閉状態におけるゲーム装置１０の右側面図
【図２Ｄ】閉状態におけるゲーム装置１０の背面図
【図３】ゲーム装置１０の内部構成を示すブロック図
【図４】ゲームシステム１００を示す説明図
【図５】上側ＬＣＤ２２に立体視表示される画像の一例を示す画面図
【図６】仮想３次元空間の模式図
【図７】メインメモリ３２のメモリ構成の一例を示す図
【図８】ゲーム装置１０で実行されるメイン処理の一例を示すフローチャート
【図９】ゲーム装置１０Ａとゲーム装置１０Ｂとの間で送受信されるデータを示す図
【図１０】図８のステップＳ９における描画処理の詳細フローチャート
【図１１】図８のステップＳ９における描画処理の詳細フローチャート
【図１２】ＸＹ座標系（２次元座標系）における敵機５０Ｂの中心座標（Ｘ１，Ｙ１）の取得方法について説明するための図
【図１３】ＸＹ座標系（２次元座標系）における撮像画像５１の配置領域２２２の決定方法について説明するための図
【図１４】ＸＹ座標系（２次元座標系）における撮像画像５１の配置領域２２２の一部が仮想画面２２０の外側に位置した状態を示す図
【図１５】撮像画像５１の配置領域２２２の補正方法について説明するための図
【図１６】敵機５０Ｂのずらし量Ｐの算出方法について説明するための仮想３次元空間の模式図
【図１７】左目用画像の表示領域２２２Ｌと右目用画像の表示領域２２２Ｒとを示す図
【図１８】上側ＬＣＤ２２に立体視表示される画像の一例を示す画面図
【図１９】上側ＬＣＤ２２に立体視表示される画像の一例を示す画面図
【発明を実施するための形態】
【００３８】
［ゲーム装置１０の構成］
以下、適宜図面を参照しつつ、本発明の表示制御装置の一実施形態に係るゲーム装置１０について説明する。ゲーム装置１０は携帯型のゲーム装置である。図１および図２Ａ〜Ｄに示されるように、ゲーム装置１０は、下側ハウジング１１および上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に接続されている。
【００３９】
［下側ハウジング１１の説明］
図１および図２Ａ〜Ｄに示すように、下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２、タッチパネル１３、各操作ボタン１４Ａ〜１４Ｌ、アナログスティック１５、ＬＥＤ１６Ａ〜１６Ｂ、挿入口１７、および、マイクロフォン用孔１８が設けられる。
【００４０】
タッチパネル１３は、下側ＬＣＤ１２の画面上に装着されている。下側ハウジング１１の上側面には、タッチペン２８を収納するための挿入口１７（図１および図２Ｄに示す点線）が設けられている。
【００４１】
下側ハウジング１１の内側面（主面）には、十字ボタン１４Ａ（方向入力ボタン１４Ａ）、ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅ、電源ボタン１４Ｆ、セレクトボタン１４Ｊ、ＨＯＭＥボタン１４Ｋ、およびスタートボタン１４Ｌが、設けられる。
【００４２】
アナログスティック１５は、方向を指示するデバイスである。
【００４３】
下側ハウジング１１の内側面には、マイクロフォン用孔１８が設けられる。マイクロフォン用孔１８の下部には後述する音声入力装置としてのマイク４２（図３参照）が設けられる。
【００４４】
図２ＢおよびＤに示されるように、下側ハウジング１１の上側面には、Ｌボタン１４ＧおよびＲボタン１４Ｈが設けられている。また、図２Ａに示されるように、下側ハウジング１１の左側面には、ゲーム装置１０が備えるスピーカ４３（図３参照）の音量を調整するための音量ボタン１４Ｉが設けられる。
【００４５】
図２Ａに示されるように、下側ハウジング１１の左側面には開閉可能なカバー部１１Ｃが設けられる。このカバー部１１Ｃの内側には、ゲーム装置１０とデータ保存用外部メモリ４５とを電気的に接続するためのコネクタが設けられる。
【００４６】
図２Ｄに示されるように、下側ハウジング１１の上側面には、外部メモリ４４を挿入するための挿入口１１Ｄが設けられる。
【００４７】
図１および図２Ｃに示されるように、下側ハウジング１１の下側面にはゲーム装置１０の電源のＯＮ／ＯＦＦ状況をユーザに通知する第１ＬＥＤ１６Ａ、下側ハウジング１１の右側面にはゲーム装置１０の無線通信の確立状況をユーザに通知する第２ＬＥＤ１６Ｂが設けられる。ゲーム装置１０は他の機器との間で無線通信を行うことが可能であり、下側ハウジング１１の右側面には、この無線通信の機能を有効／無効にする無線スイッチ１９が設けられる（図２Ｃ参照）。
【００４８】
［上側ハウジング２１の説明］
図１および図２に示すように、上側ハウジング２１には、上側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）２２、外側撮像部２３（外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂ）、内側撮像部２４、３Ｄ調整スイッチ２５、および、３Ｄインジケータ２６が設けられる。
【００４９】
上側ＬＣＤ２２は、立体視可能な画像を表示することが可能な表示装置である。具体的には、パララックスバリア方式の裸眼立体視可能な表示装置である。上側ＬＣＤ２２は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある画像（立体視画像）を表示することができる。また、上側ＬＣＤ２２は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる。このように、上側ＬＣＤ２２は、立体視画像を表示する立体表示モードと、画像を平面的に表示する（平面視画像を表示する）平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、例えば、後述する３Ｄ調整スイッチ２５によって行われる。
【００５０】
外側撮像部２３は、上側ハウジング２１の外側面２１Ｄに設けられた２つの撮像部（２３ａおよび２３ｂ）の総称である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂとは、ゲーム装置１０が実行するプログラムによって、ステレオカメラとして使用することが可能である。
【００５１】
内側撮像部２４は、上側ハウジング２１の内側面２１Ｂに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。この内側撮像部２４により、ゲーム装置１０を操作するプレイヤの顔を撮像することができる。
【００５２】
３Ｄ調整スイッチ２５は、スライドスイッチであり、上述のように上側ＬＣＤ２２の表示モードを切り替えるために用いられる操作手段である。また、３Ｄ調整スイッチ２５は、上側ＬＣＤ２２に表示された立体視可能な画像（立体視画像）の立体感を調整するために用いられる。３Ｄ調整スイッチ２５のスライダ２５ａは、所定方向（上下方向）の任意の位置にスライド可能であり、当該スライダ２５ａの位置に応じて上側ＬＣＤ２２の表示モードが設定される。また、スライダ２５ａの位置に応じて、立体視画像の見え方が調整される。
【００５３】
３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードか否かを示すＬＥＤである。
【００５４】
また、上側ハウジング２１の内側面には、スピーカ孔２１Ｅが設けられる。後述するスピーカ４３からの音声がこのスピーカ孔２１Ｅから出力される。
【００５５】
［ゲーム装置１０の内部構成］
次に、図３を参照して、ゲーム装置１０の内部の電気的構成について説明する。図３に示すように、ゲーム装置１０は、上述した各部に加えて、情報処理部３１、メインメモリ３２、外部メモリインターフェイス（外部メモリＩ／Ｆ）３３、データ保存用外部メモリＩ／Ｆ３４、データ保存用内部メモリ３５、無線通信モジュール３６、ローカル通信モジュール３７、リアルタイムクロック（ＲＴＣ）３８、加速度センサ３９、電源回路４０、およびインターフェイス回路（Ｉ／Ｆ回路）４１等の電子部品を備えている。
【００５６】
情報処理部３１は、所定のプログラムを実行するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１、画像処理を行うＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１２、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３１３を含む。ＣＰＵ３１１は、ゲーム装置１０内のメモリ（例えば外部メモリＩ／Ｆ３３に接続された外部メモリ４４やデータ保存用内部メモリ３５）に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、ＣＰＵ３１１によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。
【００５７】
ＧＰＵ３１２は、ＣＰＵ３１１からのグラフィックコマンド（作画命令）に従って画像を生成する。具体的には、ＧＰＵ３１２は、グラフィックコマンドに従って、仮想３次元空間に配置された３次元オブジェクト及び仮想３次元空間には配置されていない２次元オブジェクトの立体視表示に必要な計算処理を含むレンダリング処理を行うことで、立体視画像（左目用画像及び右目用画像）を生成する。この立体視画像を生成するためにＣＰＵ３１１及びＧＰＵ３１２によって実行される処理については、後に詳述する。
【００５８】
ＶＲＡＭ３１３は、グラフィックコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等）を記憶するものであり、フレームバッファ３１３１及びＺバッファ３１３２を含む。フレームバッファ３１３１は、上側ＬＣＤ２２のピクセルに与える１フレーム分の情報（色や明るさ）を記憶する２次元構造のメモリであり、左目用画像を記憶する領域と、右目用画像を記憶する領域とを有している。このフレームバッファ３１３１に記憶された左目用画像及び右目用画像のデータが上側ＬＣＤ２２に出力されることによって、上側ＬＣＤ２２に立体視画像が表示される。なお、フレームバッファ３１３１に記憶された情報は、ＧＰＵ３１２によって１フレーム毎に書き換えられる。
【００５９】
Ｚバッファ３１３２は、フレームバッファ３１３１の各記憶位置に対応するピクセルの奥行き情報である奥行き値（以下「Ｚ値」という。）を記憶するものであり、フレームバッファ３１３１に対応するピクセル数×１ピクセル当たりのＺ値のビット数に相当する記憶領域を有している。
【００６０】
外部メモリＩ／Ｆ３３は、外部メモリ４４を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリＩ／Ｆ３４は、データ保存用外部メモリ４５を着脱自在に接続するためのインターフェイスである。
【００６１】
メインメモリ３２は、情報処理部３１（のＣＰＵ３１１）のワーク領域やバッファ領域として用いられる揮発性の記憶装置である。
【００６２】
外部メモリ４４は、情報処理部３１によって実行されるプログラム等を記憶するための不揮発性の記憶装置である。外部メモリ４４は、例えば読み取り専用の半導体メモリで構成される。
【００６３】
データ保存用外部メモリ４５は、不揮発性の読み書き可能なメモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、任意のデータを保存するために用いられる。
【００６４】
データ保存用内部メモリ３５は、読み書き可能な不揮発性メモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ３５には、無線通信モジュール３６を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【００６５】
無線通信モジュール３６は、例えばＩＥＥＥ８０２．１１ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール３７は、所定の通信方式（例えば独自プロトコルによる通信や、赤外線通信）により同種のゲーム装置との間で無線通信を行う機能を有する。
【００６６】
加速度センサ３９は、３軸（ＸＹＺ軸）方向に沿った直線方向の加速度（直線加速度）の大きさを検出する。情報処理部３１は、加速度センサ３９が検出した加速度を示すデータ（加速度データ）を受信して、ゲーム装置１０の姿勢や動きを検出することができる。
【００６７】
ＲＴＣ３８は、時間をカウントして情報処理部３１に出力する。情報処理部３１は、ＲＴＣ３８によって計時された時間に基づき現在時刻（日付）を計算する。電源回路４０は、ゲーム装置１０が有する電源（充電式電池）からの電力を制御し、ゲーム装置１０の各部品に電力を供給する。
【００６８】
Ｉ／Ｆ回路４１には、タッチパネル１３、マイク４２およびスピーカ４３が接続される。Ｉ／Ｆ回路４１は、マイク４２およびスピーカ４３（アンプ）の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部３１に出力する。情報処理部３１は、タッチ位置データを取得することにより、タッチパネル１３に対して入力が行われた位置を知ることができる。
【００６９】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｌからなり、操作ボタン１４から情報処理部３１へは、各操作ボタン１４Ａ〜１４Ｉに対する入力状況（押下されたか否か）を示す操作データが出力される。
【００７０】
下側ＬＣＤ１２および上側ＬＣＤ２２は情報処理部３１に接続される。具体的には、情報処理部３１は、上側ＬＣＤ２２のＬＣＤコントローラ（図示せず）と接続され、当該ＬＣＤコントローラに対して視差バリアのＯＮ／ＯＦＦを制御する。上側ＬＣＤ２２の視差バリアがＯＮになっている場合、情報処理部３１のＶＲＡＭ３１３に格納された右目用画像と左目用画像とが、上側ＬＣＤ２２に出力される。より具体的には、ＬＣＤコントローラは、右目用画像について縦方向に１ライン分の画素データを読み出す処理と、左目用画像について縦方向に１ライン分の画素データを読み出す処理とを交互に繰り返すことによって、ＶＲＡＭ３１３から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に１ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側ＬＣＤ２２の画面に表示される。そして、上側ＬＣＤ２２の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側ＬＣＤ２２の画面には立体視可能な画像が表示される。
【００７１】
外側撮像部２３および内側撮像部２４は、情報処理部３１の指示に従って画像を撮像し、撮像した画像データを情報処理部３１に出力する。
【００７２】
３Ｄ調整スイッチ２５は、スライダ２５ａの位置に応じた電気信号を情報処理部３１に送信する。
【００７３】
情報処理部３１は、３Ｄインジケータ２６の点灯を制御する。例えば、情報処理部３１は、上側ＬＣＤ２２が立体表示モードである場合、３Ｄインジケータ２６を点灯させる。
【００７４】
なお、上述したハードウェア構成は単なる一例に過ぎず、ゲーム装置１０の構成は適宜変更可能である。
【００７５】
［ゲームの概要］
次に、ゲーム装置１０のＣＰＵ３１１がゲームプログラム（表示制御プログラム）を実行することによって進行するシューティングゲームの概要について説明する。
【００７６】
図４は、３台のゲーム装置１０（１０Ａ，１０Ｂ，１０Ｃ）から構成されるゲームシステム１００を示す説明図である。図５は、上側ＬＣＤ２２に立体視表示される画像の一例を示す画面図である。
【００７７】
図４及び図５に示されるように、本実施形態で例示するシューティングゲームは、ゲーム装置１０Ａを操作するプレイヤ１と、ゲーム装置１０Ｂを操作するプレイヤ２と、ゲーム装置１０Ｃを操作するプレイヤ３とが互いに対戦するマルチプレイ型のシューティングゲームである。なお、本実施形態では、プレイヤ１からプレイヤ３の３人のプレイヤがマルチプレイを行う場合を例に説明するが、マルチプレイに参加するプレイヤの人数は適宜変更可能である。また、本発明はシングルプレイのゲームにも適用可能である。以下、ゲーム装置１０Ａにおいて表示される画像を参照しつつ、本実施形態におけるシューティングゲームについて説明する。
【００７８】
図５は、プレイヤ１が操作するゲーム装置１０Ａの上側ＬＣＤ２２に立体視表示される画像の一例を示している。図５に示されるように、上側ＬＣＤ２２には、プレイヤ１が操作する自機５０Ａ（飛行機）が飛行している状態を自機５０Ａ後方のビハインドビュー視点（３人称視点）から見た画像が立体視表示される。図５に示される例では、自機５０Ａの他に、敵機５０Ｂ（飛行機）、敵機５０Ｃ（飛行機）、ミサイル５３等の３次元オブジェクトが表示されている。
【００７９】
図６は、ゲーム装置１０Ａにおいて構築される仮想３次元空間の模式図である。図６に示されるように、仮想３次元空間には、自機５０Ａ、敵機５０Ｂ、敵機５０Ｃ、ミサイル５３、及び仮想ステレオカメラ６０（左目用カメラ６０Ｌ及び右目用カメラ６０Ｒ）が配置されている。自機５０Ａは、プレイヤ１によるゲーム装置１０Ａの操作に応じて仮想３次元空間内を移動するプレイヤオブジェクトである。敵機５０Ｂは、プレイヤ２によるゲーム装置１０Ｂの操作に応じて仮想３次元空間内を移動するプレイヤオブジェクトである。敵機５０Ｃは、プレイヤ３によるゲーム装置１０Ｃの操作に応じて仮想３次元空間内を移動するプレイヤオブジェクトである。ミサイル５３は、敵機５０Ｂから発射されたミサイルであり、いわゆるノンプレイヤオブジェクトである。
【００８０】
仮想ステレオカメラ６０は、自機５０Ａと略一定の距離を保ちながら自機５０Ａを注視するように、その撮像方向６１、視点位置、視野角（画角）、位置座標、移動速度等のカメラパラメータが制御される。これにより、仮想ステレオカメラ６０の視点から自機５０Ａを見た仮想３次元空間の画像がゲーム装置１０Ａの上側ＬＣＤ２２に立体視表示される。図５に示されるように、自機５０Ａは、仮想ステレオカメラ６０によって注視されているため、上側ＬＣＤ２２の画面中央に表示される。
【００８１】
また、図６に示されるように、仮想ステレオカメラ６０によって撮像される仮想３次元空間に対して、基準面（視差ゼロ面）が設定されている。ここで、基準面は、仮想ステレオカメラ６０で仮想３次元空間を撮像した際に立体視画像に視差が生じない位置である。言い換えれば、左目用カメラ６０Ｌの撮像範囲と、右目用カメラ６０Ｒの撮像範囲とが等しくなる面である。ゲーム装置１０では、この基準面が上側ＬＣＤ２２の画面上に位置するように制御が行われる。このため、この基準面上に位置しているオブジェクトは上側ＬＣＤ２２の画面上に再生される（立体視で表示した際に上側ＬＣＤ２２の画面上にあるように視認される）。また、仮想ステレオカメラ６０から見て基準面の手前に位置しているオブジェクトは上側ＬＣＤ２２の画面に対して手前の位置に再生され（立体視で表示した際に上側ＬＣＤ２２の画面より手前に飛び出しているように視認される）、基準面の奥に位置しているオブジェクトは上側ＬＣＤ２２の画面に対して奥の位置に再生される（立体視で表示した際に上側ＬＣＤ２２の画面より奥にあるように視認される）。
【００８２】
なお、仮想３次元空間内には、これらのオブジェクトの他に、山や鉄橋（図５参照）等の地形オブジェクトが存在するが、図６以降に示す仮想３次元空間の模式図においては、これらのオブジェクトの図示が省略されている。また、本実施形態では、表示制御プログラムに基づいてシューティングゲームが実行される場合について説明するが、本発明は、仮想３次元空間内の３次元オブジェクトを仮想ステレオカメラで撮像して得られた画像を立体視表示するものであれば、例えばアクションゲーム等の他のゲームや、ゲーム以外のものにも適用可能である。
【００８３】
ゲーム装置１０Ａの上側ＬＣＤ２２には、撮像画像５１、ライフゲージ５２、撮像画像５４、ライフゲーム５５等の仮想３次元空間内には存在しない２次元オブジェクトが更に表示されている。撮像画像５１は、敵機５０Ｂを操作するプレイヤ２の顔をゲーム装置１０Ｂの内側撮像部２４により撮像して得られたプレイヤ２の顔を表す撮像画像であり、ゲーム装置１０Ａがゲーム装置１０Ｂと通信を行って取得したものである。この撮像画像５１は、敵機５０Ｂを操作するプレイヤ２の顔を表す画像であるため、敵機５０Ｂと近接する位置に表示される。撮像画像５４は、敵機５０Ｃを操作するプレイヤ３の顔をゲーム装置１０Ｃの内側撮像部２４により撮像して得られたプレイヤ３の顔を表す撮像画像であり、ゲーム装置１０Ａがゲーム装置１０Ｃと通信を行って取得したものである。この撮像画像５４は、敵機５０Ｃを操作するプレイヤ３の顔を表す画像であるため、敵機５０Ｃと近接する位置に表示される。このため、ゲーム装置１０Ａのプレイヤ１は、上側ＬＣＤ２２に立体視表示された画像を見て、敵機５０Ｂを操作しているのがプレイヤ２であり、敵機５０Ｃを操作しているのがプレイヤ３であることを容易に視認することができる。
【００８４】
ゲーム装置１０Ａのプレイヤ１は、十字ボタン１４Ａを操作することによって自機５０Ａの飛行方向を変化させることができ、また、例えばボタン１４Ｂを押下することによって自機５０Ａにミサイルを発射させて、敵機５０Ｂ又は敵機５０Ｃを攻撃することができる。ライフゲージ５２は、敵機５０Ｂのエネルギー量を示している。敵機５０Ｂは、自機５０Ａ又は敵機５０Ｃから発射されたミサイルによる攻撃を受けるとエネルギーが減っていく。そして、ライフゲージ５２により示されるエネルギー量が０になると、プレイヤ２のゲームがゲームオーバーとなる。このことは、ライフゲージ５４についても同様である。図５に示される状態では、自機５０Ａのエネルギー量（不図示）が最も多いため、プレイヤ１が一位であることを示す「１ｓｔ」の文字が上側ＬＣＤ２２の左下に表示されている。
【００８５】
以下、このようなシューティングゲームを行うのに必要なゲーム装置１０の構成、及びゲーム装置１０で行われる処理について、ゲーム装置１０がゲーム装置１０Ａである場合を例にして詳細に説明する。
【００８６】
［主要データ］
図７は、メインメモリ３２のメモリ構成の一例を示す図である。図７に示されるように、メインメモリ３２は、プログラム記憶領域３２１、データ記憶領域３２５、及び作業領域３３１を有している。プログラム記憶領域３２１には、情報処理部３１によって実行されるゲームプログラム（表示制御プログラム）が記憶される。データ記憶領域３２５には、仮想３次元空間内の各種３次元オブジェクトを描画するために必要なデータが記憶される。プログラム記憶領域３２１及びデータ記憶領域３２５内のデータは、外部メモリ４４に予め記憶されたデータが、ゲーム処理に際して外部メモリ４４からメインメモリ３２に読み出されたものである。
【００８７】
プログラム記憶領域３２１には、メイン処理プログラム３２２、描画処理プログラム３２３等が記憶されている。メイン処理プログラム３２２は、後述する図８が示すメイン処理を情報処理部３１に実行させるためのプログラムである。描画処理プログラム３２３は、後述する図１０及び図１１が示す描画処理を情報処理部３１に実行させるためのプログラムである。
【００８８】
データ記憶領域３２５には、プレイヤオブジェクトデータ３２６、敵オブジェクトデータ３２７、ノンプレイヤオブジェクトデータ３２８、エフェクトデータ３２９等が記憶されている。
【００８９】
プレイヤオブジェクトデータ３２６は、ゲーム装置１０Ａにおけるプレイヤオブジェクトである自機５０Ａに関するデータであり、自機５０Ａのモデリングデータ、テクスチャーデータ（ＲＧＢ値）等から構成される。敵オブジェクトデータ３２７は、自機５０Ａに対して敵となるプレイヤオブジェクト（ここでは敵機５０Ｂ及び敵機５０Ｃ）に関するデータであり、敵機５０Ｂ及び敵機５０Ｃのモデリングデータ、テクスチャーデータ（ＲＧＢ値）等から構成される。ノンプレイヤオブジェクトデータ３２８は、ミサイル５３や仮想３次元空間内の地形等のノンプレイヤオブジェクトに関するデータであり、ノンプレイヤオブジェクトのモデリングデータ、テクスチャーデータ（ＲＧＢ値）等から構成される。エフェクトデータ３２９は、ゲーム中に用いられる各種エフェクトを表現するために使用される画像データである。エフェクトデータ３２９としては、例えばミサイル５３が敵機５０Ｃに命中したことを示す画像データが挙げられる。
【００９０】
作業領域３３１は、ゲーム処理において生成されたデータを一時的に格納する記憶領域である。この作業領域３３１には、操作データ３３２、仮想ステレオカメラデータ３３３、位置座標データ３３４、敵位置情報データ３３５、中心座標データ３３６、配置位置座標データ３３７、撮像画像データ３３８、Ｚ値データ３３９、ずらし量データ３４０等が格納される。
【００９１】
操作データ３３２は、タッチパネル１３、操作ボタン１４、アナログスティック１５、３Ｄ調整スイッチ２５に対して行われたプレイヤの操作を示すデータである。
【００９２】
仮想ステレオカメラデータ３３３は、仮想ステレオカメラ６０のパラメータであるカメラパラメータを示すデータである。この仮想ステレオカメラデータ３３３は、仮想ステレオカメラ６０の撮像方向６１、視点位置、視野角、位置座標、移動速度等のカメラパラメータを示すデータであり、立体視基準距離データ３３３１及びカメラ間距離データ３３３２を含んでいる。ここで、立体視基準距離データ３３３１は、撮像方向６１における仮想ステレオカメラ６０の視点位置から基準面までの距離である立体視基準距離Ｄ（図１６参照）を示すデータである。カメラ間距離データ３３３２は、仮想ステレオカメラ６０を構成する左目用カメラ６０Ｌの視点位置と右目用カメラ６０Ｒの視点位置との距離であるカメラ間距離Ｅ（いわゆる基線長：図１６参照）を示すデータである。ゲーム装置１０では、３Ｄ調整スイッチ２５が操作されることにより、カメラ間距離データ３３３２が示すカメラ間距離Ｅが３Ｄ調整スイッチ２５の操作に応じた値となるように、カメラ間距離データ３３３２がＣＰＵ３１１によって更新される。
【００９３】
位置座標データ３３４は、自機５０Ａの仮想３次元空間における位置座標（Ｘ、Ｙ、Ｚ）を示すデータである。敵位置情報データ３３５は、敵機５０Ｂ及び敵機５０Ｃの仮想３次元空間における位置座標（Ｘ、Ｙ、Ｚ）を示すデータである。なお、敵機５０Ｂはゲーム装置１０Ｂのプレイヤ２によって操作され、敵機５０Ｃはゲーム装置１０Ｃのプレイヤ３によって操作される。このため、敵位置情報データ３３５は、ゲーム装置１０Ａがゲーム装置１０Ｂ及びゲーム装置１０Ｃと通信を行って取得したものであり、ゲーム装置１０Ｂ及びゲーム装置１０Ｃとの通信により敵位置情報データが取得される毎に適宜更新される。
【００９４】
中心座標データ３３６は、上側ＬＣＤ２２の画面を含む平面上における敵機５０Ｂの中心座標（２次元座標）と敵機５０Ｃの中心座標（２次元座標）を示すデータである。ここでの中心座標については、敵機５０Ｂの中心座標（Ｘ１、Ｙ１）を例にして図１２に基づいて後に詳述する。
【００９５】
配置位置座標データ３３７は、上側ＬＣＤ２２の画面上において撮像画像５１，５４を配置する位置（２次元座標）を示すデータである。図５に示すように、撮像画像５１，５４は、対応する敵機５０Ｂ、５０Ｃと近接する位置に表示される。このため、撮像画像５１，５４の配置位置は、中心座標データ３３６が示す敵機５０Ｂ、５０Ｃの中心座標に基づいて決定されるが、その詳細については図１３〜図１５に基づいて後に詳述する。なお、この配置位置座標データ３３７が示す撮像画像５１，５４の配置位置は、実際に撮像画像５１，５４の左目用画像と右目用画像とを表示する画面上の位置ではなく、左目用画像と右目用画像を表示する表示領域を決定する際に基準となる位置である。
【００９６】
撮像画像データ３３８は、本実施形態では撮像画像５１の画像データと撮像画像５４の画像データである。なお、撮像画像５１の画像データは、ゲーム装置１０Ｂの内側撮像部２４による撮像処理で得られたものであり、撮像画像５４の画像データは、ゲーム装置１０Ｃの内側撮像部２４による撮像処理で得られたものである。すなわち、撮像画像データ３３８は、ゲーム装置１０Ａがゲーム装置１０Ｂ及びゲーム装置１０Ｃと通信を行って取得したものである。このため、撮像画像データ３３８は、敵位置情報データ３３５と同様に、ゲーム装置１０Ｂ及びゲーム装置１０Ｃとの通信により撮像画像データが取得される毎に適宜更新される。
【００９７】
Ｚ値データ３３９は、仮想３次元空間には存在しない奥行き値（Ｚ値）を有していない２次元オブジェクトに関連付けられたＺ値を示すデータであり、本実施形態では、撮像画像５１のＺ値と、撮像画像５４のＺ値を示すデータである。Ｚ値を有していない撮像画像５１及び撮像画像５４のそれぞれにＺ値を関連付けることによって、２次元オブジェクトである撮像画像５１及び撮像画像５４に立体感を付与することができる。２次元オブジェクトにＺ値を関連付ける処理については、図１０のフローチャートに基づいて後に詳述する。
【００９８】
ずらし量データ３４０は、上側ＬＣＤ２２に表示される撮像画像５１の左目用画像と右目用画像とのずらし量、及び撮像画像５４の左目用画像と右目用画像とのずらし量を示すデータである。このずらし量が変化することにより、上側ＬＣＤ２２に立体視表示される２次元オブジェクトの立体感が変化することになる。このずらし量データ３４０が示すずらし量の算出方法については、撮像画像５１の左目用画像と右目用画像とのずらし量Ｐを算出する場合を例に、図１６に基づいて後に詳述する。なお、ずらし量データ３４０が示すずらし量は、カメラ間距離Ｅ（図１６参照）の影響を受けて変化するので、プレイヤが３Ｄ調整スイッチ２５を操作することによって変化する。すなわち、プレイヤは、３Ｄ調整スイッチ２５を操作することによって、上側ＬＣＤ２２に立体視表示される２次元オブジェクト（及び３次元オブジェクト）の立体感を変化させることができる。
【００９９】
なお、以上説明した主要データの一部又は全部が、メインメモリ３２に代えてデータ保存用外部メモリ４５に記憶されてもよい。
【０１００】
［メイン処理］
次に、図８を参照しつつ、ゲーム装置１０によって実行されるメイン処理について、ゲーム装置１０がゲーム装置１０Ａである場合を例にして説明する。ここで、図８は、ゲーム装置１０で実行されるメイン処理の一例を示すフローチャートである。
【０１０１】
まず、ＣＰＵ３１１は、以降の処理において用いられるデータの初期化処理を実行する（ステップＳ１）。具体的には、ＣＰＵ３１１は、以降の処理に使用される作業領域３３１内の各種変数やフラグ等を初期化する。そして、ＣＰＵ３１１は、自機５０Ａ、敵機５０Ｂ、敵機５０Ｃ、及びノンプレイヤオブジェクト（地形オブジェクト等）を仮想３次元空間に配置する。具体的には、ＣＰＵ３１１は、ゲーム開始時における仮想ステレオカメラ６０の初期位置、及び各種オブジェクトの初期状態を示すデータを作業領域３３１に格納する。これにより、仮想３次元空間が構築されて仮想ステレオカメラ６０により撮像された立体視画像が上側ＬＣＤ２２に表示される。すなわち、ＣＰＵ３１１は、仮想３次元空間を構築し、各オブジェクトの初期状態を示すデータに従って各オブジェクトを仮想３次元空間内に配置する。そして、ＣＰＵ３１１は、この仮想３次元空間を仮想ステレオカメラ６０の視点から見た立体視画像（左目用画像及び右目用画像）をＧＰＵ３１２に生成させて、その立体視画像を上側ＬＣＤ２２に表示させる。以降、ステップＳ２〜ステップＳ１０の処理ループが１フレーム（例えば１／６０秒）毎に繰り返されることによって、ゲームが進行していく。
【０１０２】
ステップＳ１の初期化処理に続いて、ＣＰＵ３１１は、タッチパネル１３、操作ボタン１４、アナログスティック１５、及び３Ｄ調整スイッチ２５からの操作情報の入力を受け付ける（ステップＳ２）。具体的には、タッチパネル１３、操作ボタン１４、アナログスティック１５、及び３Ｄ調整スイッチ２５の入力状況を示す操作データが情報処理部３１に入力されるので、ＣＰＵ３１１は、その操作データを操作データ３３２として作業領域３３１に格納する。なお、新たな操作データ３３２が格納されると、古い操作データ３３２は新たな操作データ３３２に書き換えられて、操作データ３３２が適宜更新される。
【０１０３】
次に、ＣＰＵ３１１は、撮像処理を実行する（ステップＳ３）。具体的には、ＣＰＵ３１１は、ゲーム装置１０Ａの内側撮像部２４によってリアルタイムに撮像されたカメラ画像（内カメラ画像）を取得して、作業領域３３１に格納する。このステップＳ３の処理が行われることにより、ゲーム装置１０Ａのプレイヤ（プレイヤ１）の顔を被写体として含む画像データが取得される。なお、このカメラ画像は、撮像画像データとしてゲーム装置１０Ａ及びゲーム装置１０Ｂに送信される。
【０１０４】
なお、このような撮像処理は、ゲーム装置１０Ｂ及びゲーム装置１０Ｃにおいても同様に行われ、これらの撮像処理によって得られた撮像画像５１，５４の撮像画像データが後述するステップＳ５の受信処理によってゲーム装置１０Ａに提供される。このため、ゲーム装置１０Ａでは、ゲーム装置１０Ｂ及びゲーム装置１０Ｃにおいてリアルタイムに取得された撮像画像５１，５４が立体視表示されることになり、ゲーム装置１０Ａのプレイヤは、立体視表示された撮像画像５１，５４が表すプレイヤ２，３の顔の変化を見てゲームを楽しむことができる。
【０１０５】
続いて、ＣＰＵ３１１は、ゲーム装置１０Ｂ及びゲーム装置１０Ｃにおけるゲーム処理に必要なデータをゲーム装置１０Ｂ及びゲーム装置１０Ｃに送信する送信処理を行い（ステップＳ４）、自装置（すなわちゲーム装置１０Ａ）におけるゲーム処理に必要なデータをゲーム装置１０Ｂ及びゲーム装置１０Ｃから受信する受信処理を行う（ステップＳ５）。このステップＳ４の送信処理及びステップＳ５の受信処理は、無線通信モジュール３６を用いて行われる。
【０１０６】
図９は、ゲーム装置１０Ａとゲーム装置１０Ｂとの間で送受信されるデータを示す図である。上記ステップＳ４の送信処理が行われることにより、図９に示されるように、ゲーム装置１０Ａからゲーム装置１０Ｂに敵位置情報データ及び撮像画像データが送信される。ここでの敵位置情報データは、仮想３次元空間における自機５０Ａの位置座標を示すデータであり、撮像画像データは、ステップＳ３の撮像処理によって得られたゲーム装置１０Ａのプレイヤ（プレイヤ１）の顔を示すカメラ画像のデータである。これらの敵位置情報データ及び撮像画像データがゲーム装置１０Ｂに送信されることにより、ゲーム装置１０Ｂの上側ＬＣＤ２２の適切な位置に飛行機（ここでは自機５０Ａ）を敵機として立体視表示すると共に、その飛行機を操作するプレイヤ１の顔を併せて立体視表示させることが可能になる。
【０１０７】
また、上記ステップＳ５の受信処理が行われることにより、図９に示されるように、ゲーム装置１０Ｂから送信された敵位置情報データ及び撮像画像データがゲーム装置１０Ａによって受信される。ここでの敵位置情報データは、仮想３次元空間における敵機５０Ｂの位置座標を示すデータであり、撮像画像データは、ゲーム装置１０Ｂの内側撮像部２４による撮像処理で得られたゲーム装置１０Ｂのプレイヤ（プレイヤ２）の顔を示す画像データである。すなわち、撮像画像データは、実カメラである内側撮像部２４を用いた正射影により得られた画像データである。このステップＳ５の受信処理によって受信された敵位置情報データ及び撮像画像データは、それぞれ敵位置情報データ３３５及び撮像画像データ３３８として作業領域３３１に格納される。このため、敵位置情報データ３３５及び撮像画像データ３３８は、ステップＳ５の受信処理が行われる毎に適宜更新される。このようにして敵位置情報データ３３５及び撮像画像データ３３８が適宜更新されることにより、ゲーム装置１０Ａの上側ＬＣＤ２２の適切な位置に敵機５０Ｂを立体視表示すると共に、敵機５０Ｂを操作するプレイヤ２の顔を併せて立体視表示させることが可能になる。
【０１０８】
なお、ここではゲーム装置１０Ａとゲーム装置１０Ｂとの間で送受信されるデータを例に説明したが、ゲーム装置１０Ａとゲーム装置１０Ｃとの間、及びゲーム装置１０Ｂとゲーム装置１０Ｃとの間でも同様の通信が行われる。また、ここでは送信処理が先に行われてから受信処理が行われる場合について説明したが、受信処理を行ってから送信処理を行うようにしてもよい。また、ここでは１フレーム毎に敵位置情報データ及び撮像画像データが送受信される場合について説明したが、撮像画像データについては、必ずしも毎フレーム送受信される必要はない。このため、撮像画像データについては、例えば６０フレーム毎に送受信されるようにしてもよい。これにより、各ゲーム装置１０における処理負荷を低減することができる。
【０１０９】
ステップＳ５の受信処理に続いて、ゲーム装置１０ＡのＣＰＵ３１１は、各オブジェクトの移動処理を実行する（ステップＳ６）。具体的には、ＣＰＵ３１１は、操作データ３３２に応じた位置へ自機５０Ａを移動させ、敵位置情報データ３３５が示す位置に敵機５０Ｂ及び敵機５０Ｃを移動させ、且つミサイル５３等のノンプレイヤオブジェクトをメイン処理プログラム３２２等に基づいて移動させる。また、このステップＳ６において、ＣＰＵ３１１は、各３次元オブジェクトを移動させるだけでなく、それらの向きや姿勢を変化させるといった処理も行う。このステップＳ６の処理が行われることにより、自機５０Ａの位置座標を示す位置座標データ３３４が更新される。
【０１１０】
次に、ＣＰＵ３１１は、プレイヤ１の操作に応じて仮想３次元空間内を移動する自機５０Ａを注視するように、仮想ステレオカメラ６０に関する各カメラパラメータを制御する仮想ステレオカメラ制御処理を実行する（ステップＳ７）。具体的には、ＣＰＵ３１１は、仮想ステレオカメラ６０が自機５０Ａと一定の距離を保ったまま自機５０Ａをその後方の３人称視点から注視するように、仮想ステレオカメラ６０の撮像方向６１、視点位置、視野角、位置座標、移動速度等のカメラパラメータを適切な値に制御する。また、ＣＰＵ３１１は、このステップＳ７において、ステップＳ２の入力受付処理によって３Ｄ調整スイッチ２５の操作が受け付けられた場合には、３Ｄ調整スイッチ２５の操作を示す操作データ３３２に基づいて、カメラ間距離Ｅ（図１６参照）を変化させる。この場合、ステップＳ７の処理が行われることによってカメラ間距離データ３３３２が更新されることになる。また、ＣＰＵ３１１は、このステップＳ７において、立体視基準距離Ｄ（図１６参照）が自機５０Ａの状態（移動速度や姿勢等）に応じた値となるように、立体視基準距離Ｄを制御する。この場合、ステップＳ７の処理が行われることによって立体視基準距離データ３３３１が更新されることになる。
【０１１１】
ステップＳ７の処理に続いて、ＣＰＵ３１１は、ゲーム装置１０Ａにおいて構築されている仮想３次元空間内の各３次元オブジェクト（本実施形態では自機５０Ａ、敵機５０Ｂ、敵機５０Ｃ、及びミサイル５３）の位置座標を算出する計算処理を実行する（ステップＳ８）。この位置座標を算出する処理は従来の方法と同様であるため、ここでの詳細な説明は省略する。
【０１１２】
続いて、ＣＰＵ３１１は、仮想３次元空間内の各３次元オブジェクトと、仮想３次元空間内には配置されていない２次元オブジェクト（本実施形態では撮像画像５１，５４等）とを一緒に上側ＬＣＤ２２に表示するための描画処理を実行する（ステップＳ９）。このステップＳ９の描画処理は、仮想ステレオカメラ６０を用いて３次元オブジェクトを透視射影して得られた画像と、実カメラである内側撮像部２４を用いて２次元オブジェクトを正射影して得られた画像とを一緒に描画する処理である。このステップＳ９の処理が行われることにより生成された立体視画像（左目用画像及び右目用画像）が上側ＬＣＤ２２に出力されることで、図５に例示したようなゲーム画像が上側ＬＣＤ２２に立体視表示される。なお、このステップＳ９における描画処理については、図１０及び図１１に基づいて後に詳述する。
【０１１３】
ステップＳ９の描画処理に続いて、ＣＰＵ３１１は、電源ボタン１４Ｆ等の操作の有無に基づいて、ゲームの終了が指示されたか否かを判定する（ステップＳ１０）。ゲームの終了が指示されていないとＣＰＵ３１１によって判定された場合（ステップＳ１０：ＮＯ）、ステップＳ２に処理が戻されて、ステップＳ２以降の処理が繰り返される。逆に、ゲームの終了が指示されたとＣＰＵ３１１によって判定された場合（ステップＳ１０：ＹＥＳ）、一連のゲーム処理が終了する。
【０１１４】
［描画処理］
以下、図１０及び図１１を参照しつつ、描画処理プログラム３２３に従ってゲーム装置１０Ａにより実行される描画処理について説明する。ここで、図１０及び図１１は、図８のステップＳ９における描画処理の詳細フローチャートである。なお、以下の説明では、ゲーム装置１０Ｂを操作するプレイヤ２の顔を表す撮像画像５１を、そのプレイヤ２によって操作される敵機５０Ｂと同じ立体感で（同じ奥行き位置に）立体視表示するためにゲーム装置１０Ａにおいて行われる処理について説明するが、敵機５０Ｃとその敵機５０Ｃを操作するプレイヤ３の顔を表す撮像画像５４についても同様の処理が行われる。
【０１１５】
上記ステップＳ８の処理によって各３次元オブジェクトの位置座標を計算すると、ＣＰＵ３１１は、仮想３次元空間（ＸＹＺ座標系（ワールド座標系）で表される空間）に配置されている敵機５０Ｂの２次元座標系（ＸＹ座標系）における中心座標（Ｘ１，Ｙ１）を取得する（ステップＳ９０１）。
【０１１６】
図１２は、２次元座標系（ＸＹ座標系）における敵機５０Ｂの中心座標（Ｘ１，Ｙ１）の取得方法について説明するための図である。図１２において、Ｘ軸方向は、図１に示されるように上側ＬＣＤ２２の画面を正面から見た場合の右方向と一致する方向である。Ｙ軸方向は、図１に示されるように上側ＬＣＤ２２の画面を正面から見た場合の上方向と一致する方向である。Ｚ軸方向は、図１に示されるように上側ＬＣＤ２２の画面を正面から見た場合の奥行き方向と一致する方向である。なお、図１２においては、説明の便宜上、仮想３次元空間に配置されている３次元オブジェクトのうち、敵機５０Ｂのみが表記され、他の３次元オブジェクト（自機５０Ａ、敵機５０Ｂ、及びミサイル５３）の図示が省略されている。
【０１１７】
図１２に示されるように、ゲーム装置１０Ａにおいて構築される仮想３次元空間には、左目用カメラ６０Ｌと右目用カメラ６０Ｒとから構成される仮想ステレオカメラ６０と、敵機５０Ｂとが配置されている。ＣＰＵ３１１は、ステップＳ９０１において、まず、仮想３次元空間における仮想ステレオカメラ６０と敵機５０Ｂとの間に上側ＬＣＤ２２の画面を仮想配置する。この仮想配置された上側ＬＣＤ２２の画面が、図１２における仮想画面２２０である。この仮想画面２２０は、上側ＬＣＤ２２の画面を仮想３次元空間に仮想配置したものであるため、上側ＬＣＤ２２の画面と対応する大きさを有している。具体的には、仮想画面２２０は、仮想画面２２０のＸ軸方向の大きさが上側ＬＣＤ２２のＸ軸方向の画素数と対応し、且つ、仮想画面２２０のＹ軸方向の大きさが上側ＬＣＤ２２のＹ軸方向の画素数と対応するように、その大きさが設定されている。なお、仮想画面２２０を仮想配置する位置は、仮想ステレオカメラ６０の撮像方向６１や画角等に基づいて決定される（図１６参照）。また、本実施形態では、仮想画面２２０は基準面と同じ平面上に配置されるが、図１６では、説明の便宜上、仮想画面２２０を基準面とずらして表記している。ただし、仮想画面２２０は、必ずしも基準面と同じ平面上に配置する必要はなく、基準面とは無関係に配置されてもよい。ＣＰＵ３１１は、この仮想画面２２０を仮想配置した後、仮想ステレオカメラ６０の視点位置（左目用カメラ６０Ｌと右目用カメラ６０Ｒとの中間に配置された中点カメラ６０Ｃの視点位置）と、敵機５０Ｂとを結ぶ線分を求める。そして、ＣＰＵ３１１は、仮想画面２２０を含む平面（ＸＹ座標系）において、その平面と、仮想ステレオカメラ６０の視点位置と敵機５０とを結ぶ線分が交差する点を、敵機５０Ｂの中心座標（Ｘ１，Ｙ１）として取得する。このようにして取得された敵機５０Ｂの中心座標（Ｘ１，Ｙ１）を示すデータは、中心座標データ３３６として作業領域３３１に格納される。  
【０１１８】
次に、ＣＰＵ３１１は、仮想画面２２０を含む平面（ＸＹ座標系）における撮像画像５１の配置領域２２２を設定する（ステップＳ９０２）。
【０１１９】
図１３は、ＸＹ座標系（２次元座標系）における撮像画像５１の配置領域の決定方法について説明するための図である。ＣＰＵ３１１は、ステップＳ９０２において、配置領域２２２を特定するための情報として、ＸＹ座標系において敵機５０Ｂの中心座標（Ｘ１，Ｙ１）から例えば左上方に所定量（所定画素数分）シフトした位置を中心とする領域である配置領域２２２の四隅のＸＹ座標を求める。このステップＳ９０２の処理が行われることにより、上側ＬＣＤ２２の画面上における撮像画像５１の配置位置と撮像画像５１の大きさが決定されることになる。したがって、このステップＳ９０２における配置領域２２２の四隅のＸＹ座標の設定の仕方によって、立体視表示される撮像画像５１の大きさを一定に維持したり、逆にその大きさを変化させたりすることが可能である。このため、配置領域２２２の四隅のＸＹ座標は、立体視表示させる撮像画像５１の大きさを考慮して適切な位置に決定される。なお、本実施形態では、敵機５０Ｂを操作しているのがプレイヤ２であることを自機５０Ａを操作するプレイヤ１が容易に視認できるように、配置領域２２２の大きさを一定に維持するように配置領域２２２の四隅のＸＹ座標が設定される。このようにして配置領域２２２の四隅のＸＹ座標が決定されると、これら４つのＸＹ座標を示すデータが配置位置座標データ３３７として作業領域３３１に格納される。
【０１２０】
ステップＳ９０２の処理に続いて、ＣＰＵ３１１は、敵機５０Ｂが上側ＬＣＤ２２の画面外に位置しているか否かを判定する（ステップＳ９０３）。図１２に示されるように、上記ステップＳ９０１の処理で取得された敵機５０Ｂの中心座標（Ｘ１，Ｙ１）が仮想画面２２２上の座標である場合、敵機５０Ｂは、上側ＬＣＤ２２に立体視表示される。これに対して、敵機５０Ｂの中心座標（Ｘ１，Ｙ１）が仮想画面２２の外側の座標である場合、敵機５０Ｂは、上側ＬＣＤ２２に表示されない。そこで、ＣＰＵ３１１は、ステップＳ９０３において、中心座標データ３３６が示す敵機５０Ｂの中心座標（Ｘ１，Ｙ１）が上側ＬＣＤ２２の画面に対応する仮想画面２２０上の座標であるか否かに基づいて、敵機５０Ｂが上側ＬＣＤ２２の画面外に位置しているか否かを判定する。
【０１２１】
ところで、本実施形態では、図５に示されるように、敵機５０Ｂの左上方に敵機５０Ｂを操作するプレイヤ２の顔を示す撮像画像５１を立体視表示させるようにしている。すなわち、上述したように、敵機５０Ｂの中心座標（Ｘ１，Ｙ１）に対して左上方に所定量だけシフトした位置に配置領域２２２を設定するようにしている。このため、例えば図１４に示されるように、仮想画面２２０の外側に位置する敵機５０Ｂの中心座標（Ｘ３，Ｙ３）に対して左上方に所定量シフトした位置に設定されたＸＹ座標（Ｘ４，Ｙ４）を中心とする配置領域２２２も、中心座標（Ｘ３，Ｙ３）と同様に、仮想画面２２０の外側に位置することとなる。このため、自機５０Ａの前方の直上に位置している敵機５０Ｂが上側ＬＣＤ２２に表示されないだけでなく、その敵機５０Ｂを操作するプレイヤ２の顔を表す撮像画像５１も上側ＬＣＤ２２に表示されない状態となる。その結果、自機５０Ａを操作するプレイヤ１が敵機５０Ｂの位置している方向や敵機５０Ｂを操作するプレイヤを認識できなくなり、ゲームの操作性が低下する。
【０１２２】
そこで、ＣＰＵ３１１は、敵機５０Ｂが上側ＬＣＤ２２の画面外に位置していると判定した場合（ステップＳ９０３：ＹＥＳ）、上記ステップＳ９０２の処理で設定した配置領域２２２を補正する（ステップＳ９０４）。具体的には、ＣＰＵ３１１は、図１５に示されるように、ＸＹ座標（Ｘ４，Ｙ４）を中心とする配置領域２２２の全体が仮想画面２２０内に位置するように、すなわち配置領域２２２の中心のＹＸ座標が（Ｘ４，Ｙ５）となるように、配置領域２２２の位置を補正する。このステップＳ９０４の処理が行われることにより、上記ステップＳ９０２の処理で作業領域３３１に格納された配置位置座標データ３３７が更新される。なお、ここでは、配置領域２２２のＹ座標だけを補正して配置領域２２２を仮想画面２２０内にシフトさせる場合について説明したが、配置領域２２２のＸ座標だけを補正して配置領域２２２を仮想画面２２０内にシフトさせたり、配置領域２２２のＸ座標とＹ座標の両方を補正して配置領域２２２を仮想画面２２０内にシフトさせるようにしてもよい。
【０１２３】
なお、敵機５０Ｂの中心座標（Ｘ３，Ｙ３）が仮想画面２２０から大きく離れているにも拘わらず配置領域２２２の位置を仮想画面２２０内にシフトさせる上記ステップＳ９０４の補正処理を行うと、敵機５０Ｂから大きく離れた位置に撮像画像５１が表示されることになり、自機５０Ａを操作するプレイヤ１が敵機５０Ｂの位置を正確に特定できなくなるおそれがある。このため、敵機５０Ｂの中心座標（Ｘ３，Ｙ３）が仮想画面２２２から所定距離以上離れている場合には、このステップＳ９０４の処理を行わないようにしてもよい。
【０１２４】
また、敵機５０ＢのＸＹ座標が仮想画面２２０の外側に位置している場合に限らず、敵機５０ＢのＸＹ座標が仮想画面２２０内に位置しているにも拘わらず配置領域２２２が上記ステップＳ９０２の処理によって仮想画面２２０の外側に設定される場合にも、上記ステップＳ９０４の補正処理を行うようにしてもよい。
【０１２５】
ＣＰＵ３１１は、ステップＳ９０４の補正処理を行った場合、又は敵機５０Ｂが上側ＬＣＤ２２の画面外に位置していない（画面内に位置している）と判定した場合（ステップＳ９０３：ＮＯ）、撮像画像５１に対応する敵機５０ＢのＺ値を取得する（ステップＳ９０５）。具体的には、ＣＰＵ３１１は、作業領域３３１に格納されている敵位置情報データ３３５が示す敵機５０Ｂの位置座標（Ｘ、Ｙ、Ｚ）からＺ軸方向の成分であるＺ値を抽出する。このように、ＣＰＵ３１１は、仮想３次元空間の状況（ここでは、撮像方向６１における仮想ステレオカメラ６０の視点位置から敵機５０Ｂまでの距離）に応じたＺ値を取得する。
【０１２６】
そして、ＣＰＵ３１１は、撮像画像５１の奥行き値を示すＺ値データ３３９として作業領域３３１に格納することによって、抽出した敵機５０ＢのＺ値を撮像画像５１に関連付ける（ステップＳ９０６）。
【０１２７】
ところで、上述したように、上記ステップＳ９０２の処理で設定された配置領域２２２は、敵機５０Ｂの中心座標（Ｘ１，Ｙ１）に対して左上方に所定量シフトした位置であるため、撮像画像５１を配置領域２２２に配置した場合に、撮像画像５１が敵機５０Ｂと重なることはない。しかしながら、ステップＳ９０４の処理によって配置領域２２２の位置を補正した場合、撮像画像５１が敵機５０Ｂと重なる場合がある。これに対して、撮像画像５１には、敵機５０ＢのＺ値が関連付けられるので、撮像画像５１と敵機５０Ｂとを一緒に描画した場合に、描画処理を適切に行えないおそれがある。
【０１２８】
このため、ＣＰＵ３１１は、ステップＳ９０６に続いて、撮像画像５１を敵機５０Ｂと一緒に立体視表示した場合に、撮像画像５１と敵機５０Ｂとが重なるか否かを判定する（ステップＳ９０７）。具体的には、ＣＰＵ３１１は、ステップＳ９０２の処理で設定した配置領域２２２（ステップＳ９０３で「ＹＥＳ」と判定された場合にはステップＳ９０４の処理で補正された配置領域２２２）が、ステップＳ９０１の処理で取得された中心座標（Ｘ１，Ｙ１）を基準として配置された敵機５０ＢとＸＹ座標系において重なるか否かを、仮想３次元空間における敵機５０Ｂの大きさや姿勢等を考慮して判定する。
【０１２９】
ＣＰＵ３１１は、撮像画像５１が敵機５０Ｂと重なると判定した場合（ステップＳ９０７：ＹＥＳ）、ステップＳ９０６の処理で撮像画像５１に関連付けられたＺ値を補正する（ステップＳ９０８）。具体的には、ＣＰＵ３１１は、ステップＳ９０６の処理で作業領域３３１に格納されたＺ値データ３３９が示すＺ値が敵機５０ＢのＺ値よりも若干小さくなるように、Ｚ値データ３３９を更新する。このステップＳ９０８の処理が行われることにより、いわゆるＺテストを伴う描画処理を正常に行うことができ、その結果、撮像画像５１を敵機５０Ｂの手前に表示させて、撮像画像５１が敵機５０Ｂに隠れてしまうのを防止することができる。なお、撮像画像５１に関連付けられているＺ値をこのステップＳ９０８の処理によって小さくし過ぎると、撮像画像５１と敵機５０Ｂの立体感が大きく異なる（撮像画像５１が敵機５０に対してかなり手前に位置したように見える）こととなり、撮像画像５１があたかも仮想３次元空間内の敵機５０Ｂと同じ奥行き位置に位置しているかのように見せる視覚的効果が低下するおそれがある。したがって、このステップＳ９０８の処理によるＺ値の補正量は、このような事情を考慮して適切な値に設定されている。
【０１３０】
ＣＰＵ３１１は、ステップＳ９０８の処理を行った場合、又は撮像画像５１が敵機５０Ｂと重ならないと判定した場合（ステップＳ９０７：ＮＯ）、プレイヤ１の左目によりに視認される撮像画像５１の左目用画像と、同じくプレイヤ１の右目により視認される撮像画像５１の右目用画像との上側ＬＣＤ２２の画面上における水平方向（Ｙ軸方向）のずらし量Ｐを算出する（ステップＳ９０９）。
【０１３１】
図１６は、敵機５０Ｂのずらし量Ｐの算出方法について説明するための仮想３次元空間の模式図である。図１６において、Ｐは、撮像画像５１の左目用画像と右目用画像との上側ＬＣＤ２２の画面上におけるずらし量である。オブジェクト距離Ａは、仮想ステレオカメラ６０の撮像方向６１における仮想ステレオカメラ６０の視点位置から敵機５０Ｂまでの距離である。このオブジェクト距離Ａは、ゲーム装置１０Ｂにおけるプレイヤ２の操作（すなわち敵位置情報データ３３５）に応じて適宜変化する。立体視基準距離Ｄは、仮想ステレオカメラ６０の撮像方向６１における仮想ステレオカメラ６０の視点位置から基準面までの距離である。カメラ間距離Ｅは、仮想ステレオカメラ６０を構成する左目用カメラ６０Ｌと右目用カメラ６０Ｒとの距離（基線長）である。このカメラ間距離Ｅは、プレイヤ１による３Ｄ調整スイッチ２５の操作に応じて適宜変化する。
【０１３２】
これらのずらし量Ｐ、オブジェクト距離Ａ、立体視基準距離Ｄ、カメラ間距離Ｅについて、三角形の相似の関係により、以下のような比の関係が成り立つ。
Ｐ：Ｅ＝（Ａ−Ｄ）：Ａ
そして、この式を変形することによって、ずらし量Ｐは以下の式で表すことができる。
Ｅ（Ａ−Ｄ）＝ＰＡ
Ｐ＝Ｅ（Ａ−Ｄ）／Ａ
ＣＰＵ３１１は、ステップＳ９０９において、この式の右辺にカメラ間距離データ３３３２が示すカメラ間距離Ｅ、仮想ステレオカメラ６０の視点位置と敵位置情報データ３３５が示す敵機５０Ｂの位置座標（Ｘ、Ｙ、Ｚ）とに基づいて算出されたオブジェクト距離Ａ、及び立体視基準距離データ３３３１が示す立体視基準距離Ｄを代入することによってずらし量Ｐを算出する。
【０１３３】
ところで、ずらし量Ｐを示す上記演算式は、カメラ間距離Ｅを変数として含んでいる。このため、２次元オブジェクトの表示領域を決定するためのパラメータの一つであるずらし量Ｐは、例えば３Ｄ調整スイッチ２５の操作に伴うカメラ間距離Ｅの変化に応じて、ＣＰＵ３１１によって適宜更新される。
【０１３４】
ＣＰＵ３１１は、このようにしてずらし量Ｐを算出すると、撮像画像５０Ｂの左目用画像の表示領域２２２Ｌと右目用画像の表示領域２２２Ｒとを決定する（ステップＳ９１０）。具体的には、ＣＰＵ３１１は、配置領域２２２の２次元座標及びずらし量Ｐに基づいて、左目用画像の表示領域２２２Ｌの四隅の２次元座標と、右目用画像の表示領域２２２Ｒの四隅の２次元座標を決定する。
【０１３５】
図１７は、左目用画像の表示領域２２２Ｌと右目用画像の表示領域２２２Ｒとを示す図である。本実施形態では、撮像画像５１を敵機５０Ｂと同様に上側ＬＣＤ２２の画面に対して奥の位置に再生する。このため、ＣＰＵ３１１は、ステップＳ９１０において、敵機５０Ｂの左目用画像の表示領域２２２Ｌを配置領域２２２に対して左（Ｘ軸方向の反対方向）にＰ／２だけシフトさせた位置に決定し、敵機５０Ｂの右目用画像の表示領域２２２Ｒを配置領域２２２に対して右（Ｘ軸方向）にシフトさせた位置に決定する。ＣＰＵ３１１は、このステップＳ９１０の処理を行うことによって、２次元オブジェクト（ここでは撮像画像５１）の大きさを示すパラメータ（各表示領域２２２Ｌ、２２２Ｒの四隅の２次元座標）を設定する。
【０１３６】
ステップＳ９１０の処理に続いて、ＣＰＵ３１１は、表示領域を決定すべき他の撮像画像があるか否かを判定する（ステップＳ９１１）。ここで、他の撮像画像があるとＣＰＵ３１１によって判定された場合（ステップＳ９１１：ＹＥＳ）、処理がステップＳ９０１に戻される。本実施形態では、敵機５０Ｃに対して表示領域が決定されていない場合に、処理がステップＳ９０１に戻される。
【０１３７】
ＣＰＵ３１１は、仮想３次元空間内の３次元オブジェクト（本実施形態では自機５０Ａ、敵機５０Ｂ、敵機５０Ｃ、ミサイル５３、地形オブジェクト）と仮想３次元空間には配置されていない２次元オブジェクト（本実施形態では撮像画像５１，５４）を一緒に描画するために、以下のステップＳ９１３〜ステップＳ９１７の一連の処理が繰り返し実行される。
【０１３８】
すなわち、ＣＰＵ３１１は、他の撮像画像がないと判定した場合、フレームバッファ３１３１に描画すべき対象ピクセルを選択する（ステップＳ９１３）。具体的には、ＣＰＵ３１１は、各３次元オブジェクトを構成するピクセル、及び各２次元オブジェクトを構成するピクセルの中から、いずれかのピクセルを対象ピクセルとして選択する。この対象ピクセルは、描画対象となる対象オブジェクト（３次元オブジェクト又は２次元オブジェクト）の一部を構成するピクセルである。
【０１３９】
対象ピクセルを選択すると、ＣＰＵ３１１は、その対象ピクセルのＺ値が、Ｚバッファ３１３２に既に格納されているバッファ値よりも小さいか否かを判定する（ステップＳ９１４）。具体的には、ＣＰＵ３１１は、まず対象ピクセルのＺ値を取得する。例えば対象ピクセルが自機５０Ａを構成するピクセルである場合、ＣＰＵ３１１は、位置座標データ３３４が示す自機５０Ａの位置座標（Ｘ、Ｙ、Ｚ）の中からＺ値を抽出する。また、例えば対象ピクセルが敵機５０Ｂを構成するピクセルである場合、ＣＰＵ３１１は、敵位置情報データ３３５が示す敵機５０Ｂの位置座標（Ｘ、Ｙ、Ｚ）の中からＺ値を抽出する。また、例えば対象ピクセルが撮像画像５１である場合、ＣＰＵ３１１は、Ｚ値データ３３９が示す撮像画像５１のＺ値を対象ピクセルのＺ値として取得する。また、例えば対象ピクセルが撮像画像５４である場合、ＣＰＵ３１１は、Ｚ値データ３３９が示す撮像画像５４のＺ値を対象ピクセルのＺ値として取得する。
【０１４０】
ＣＰＵ３１１は、このようにして対象ピクセルのＺ値を取得した後、取得したＺ値が、そのピクセルが描画されるべきフレームバッファ３１３１内の記憶位置に対応するＺバッファ３１３２内のバッファ値（Ｚ値）よりも小さいか否かを判定する。このように、ＣＰＵ３１１は、ステップＳ９１３の処理で選択した対象ピクセルに対してＺテスト（深度テスト）を実行する。
【０１４１】
ＣＰＵ３１１は、対象ピクセルのＺ値がバッファ値よりも小さいと判定した場合（ステップＳ９１４：ＹＥＳ）、その対象ピクセルをフレームバッファ３１３１に描画する処理をＧＰＵ３１２に実行させる（ステップＳ９１５）。その際、対象ピクセルが２次元オブジェクトを構成するものである場合、ＧＰＵ３１２は、対象ピクセルを、上記ステップＳ９１０の処理で決定した表示領域（表示領域２２２Ｌ又は表示領域２２２Ｒ）に対応した位置に描画する。また、対象ピクセルが３次元オブジェクトを構成するものである場合、ＣＰＵ３１１は、左目用カメラ６０Ｌ又は右目用カメラ６０Ｒを用いた射影変換によって得られた２次元座標に対応する記憶位置に対象ピクセルを描画する。
【０１４２】
ＧＰＵ３１２は、ステップＳ９１５の処理によって対象ピクセルを描画した後、その対応ピクセルのＺ値を、その対応ピクセルを描画したフレームバッファ３１３１内の記憶位置に対応するバッファ値としてＺバッファ３１３２に格納する（ステップＳ９１６）。
【０１４３】
ＣＰＵ３１１は、ステップＳ９１６の処理を行った場合、又はＺ値がバッファ値よりも小さくないと判定した場合（ステップＳ９１４：ＮＯ）、選択されていない対象ピクセルがあるか否かを判定する（ステップＳ９１７）。選択されていない対象ピクセルがあるとＣＰＵ３１１によって判定された場合（ステップＳ９１７：ＹＥＳ）、処理がステップＳ９１３に戻される。そして、ステップＳ９１３〜ステップＳ９１７の処理が全ての対象ピクセルに対して実行されることにより、フレームバッファ３１３１に左目用画像及び右目用画像が描画される。
【０１４４】
このように、ＧＰＵ３１２は、Ｚバッファ３１３２を用いて、２次元オブジェクトに関連付けられたＺ値と、３次元オブジェクトのＺ値とを比較しながら、２次元オブジェクトの左目用画像及び右目用画像と、３次元オブジェクトの左目用画像及び右目用画像とを合成描画する。すなわち、２次元オブジェクトと３次元オブジェクトの左目用画像同士を一緒に描画し、右目用画像同士を一緒に描画する。これにより、左目用合成画像および右目用合成画像からなる立体視画像が生成される。
【０１４５】
ＣＰＵ３１１は、選択されていない対象ピクセルがないと判定した場合（ステップＳ９１７：ＮＯ）、すなわち全ての２次元オブジェクト及び３次元オブジェクトの左目用画像及び右目用画像がフレームバッファ３１３１に描画された場合、ＧＰＵ３１２に対して描画された左目用画像及び右目用画像を上側ＬＣＤ２２に出力させる（ステップＳ９１８）。
【０１４６】
このような一連の処理によって、仮想３次元空間内の３次元オブジェクトを仮想ステレオカメラ６０（２つの仮想カメラ）で撮影して得られた左目用画像及び右目用画像と、２次元オブジェクトをずらし量Ｐに基づいて左右にずらした左目用画像及び右目用画像とが一緒に描画される。そして、このようにして合成された左目用合成画像と右目用合成画像とが上側ＬＣＤ２２に出力されることで、３次元オブジェクトと２次元オブジェクトが一緒に立体視表示されることになる。
【０１４７】
図１８及び図１９は、上側ＬＣＤ２２に立体視表示される画像の一例を示す画面図である。敵機５０ＢのＺ値が惑星オブジェクト５７のＺ値よりも小さい場合、敵機５０Ｂは、惑星オブジェクト５７の一部を隠すように、惑星オブジェクト５７の手前に立体視表示される。その際に、敵機５０Ｂに対応する撮像画像５１に対して敵機５０Ｂと同じか或いは若干小さいＺ値が与えられているので、図１８に示されるように、撮像画像５１についても惑星オブジェクト５７の手前に立体視表示される。
【０１４８】
また、逆に敵機５０ＢのＺ値が惑星オブジェクト５７のＺ値よりも大きい場合、敵機５０Ｂは、その一部が惑星オブジェクト５７に隠されるように、惑星オブジェクト５７の奥に立体視表示される。その際に、敵機５０Ｂに対応する撮像画像５１に対して付加されたＺ値が惑星オブジェクト５７のＺ値よりも大きいので、図１９に示されるように、撮像画像５１についても惑星オブジェクト５７の奥に立体視表示される。
【０１４９】
このように、元々Ｚ値を有していない２次元オブジェクトである撮像画像５１に仮想３次元空間内の３次元オブジェクトである敵機５０Ｂと同じか或いは若干小さいＺ値を付与するようにしたことで、隠蔽の効果（手前のオブジェクトが奥のオブジェクトの一部を隠す効果）を効果的に生じさせることができる。
【０１５０】
［本実施形態の作用効果］
以上説明したように、本実施形態によれば、２次元オブジェクトである例えば撮像画像５１が仮想３次元空間の状況（例えば敵機５０Ｂの奥行き位置）に応じた奥行き位置に立体視表示される。このため、仮想３次元空間には存在しない２次元オブジェクトを仮想３次元空間内の３次元オブジェクトと一緒に立体視表示する場合に、２次元オブジェクトを違和感なく自然に立体視表示させることができる。
【０１５１】
また、本実施形態では、２次元オブジェクト（例えば撮像画像５１）の奥行き値以外のパラメータ（例えば撮像画像５１の大きさ）が仮想３次元空間の状況とは無関係に設定される。このため、２次元オブジェクトの態様を、仮想３次元空間の状況の影響を受けることなく柔軟に変化させることができる。すなわち、立体視表示された２次元オブジェクトの見た目の奥行き位置とは無関係に（独立して）、２次元オブジェクトの大きさ等を制御することができる。
【０１５２】
また、本実施形態では、２次元オブジェクト（例えば撮像画像５１）の奥行き位置の変化の影響を受けずに２次元オブジェクトの大きさを設定することができるという利点がある。
【０１５３】
また、本実施形態では、２次元オブジェクト（例えば撮像画像５１）の大きさを示すパラメータが一定に維持される。２次元オブジェクトは、その奥行き値だけが仮想３次元空間の状況の影響を受けるので、２次元オブジェクトの奥行き位置が変化する場合でも、２次元オブジェクトの大きさを一定に維持することが可能である。
【０１５４】
また、本実施形態では、３次元オブジェクトが上側ＬＣＤ２２の画面上におけるどの位置に表示されるかに基づいて２次元オブジェクトの表示領域が決定される。このため、２次元オブジェクトによって示される情報（例えば敵機５０Ｂを操作するユーザの顔）をユーザに対して効果的に提示することができる。
【０１５５】
ところで、仮に３次元座標系である仮想３次元空間において３次元オブジェクトとの関係で２次元オブジェクトの表示領域を決定するようにした場合、仮想ステレオカメラ６０によって仮想３次元空間が透視射影されるので、仮想ステレオカメラ６０からの距離によって２次元オブジェクトの表示領域の大きさが変化してしまうことになる。これに対して、本実施形態では、上側ＬＣＤ２２の画面上の表示位置、すなわち２次元座標系における３次元オブジェクトの表示位置（図１２の（Ｘ１，Ｙ１））に基づいて２次元オブジェクトの表示領域が決定される。このため、例えば３次元オブジェクトと同じ奥行き位置に２次元オブジェクトを配置するように奥行き値を関連付けた場合に、仮想ステレオカメラ６０から３次元オブジェクトまでの距離によって２次元オブジェクトの大きさ（表示領域の広さ）が変化してしまうのを防止することができる。
【０１５６】
また、本実施形態では、３次元オブジェクトの奥行き位置に合わせて２次元オブジェクトを立体視表示することができる。すなわち、仮想３次元空間には存在していない２次元オブジェクトが仮想３次元空間内のオブジェクトと同じ奥行き位置に配置されて様子を自然に表現することができる。
【０１５７】
また、本実施形態では、３Ｄ調整スイッチ２５が操作されることによってカメラ間距離Ｅが変化する。これにより、３次元オブジェクトの立体感が変化するが、ずらし量データ３４０が示すずらし量は、そのカメラ間距離Ｅに応じた値として算出される。このため、２次元オブジェクトの立体感も同じように変化する。その結果、３次元オブジェクトの立体感と、２次元オブジェクトの立体感との関係を一定に維持することができる。
【０１５８】
また、本実施形態では、取得された奥行き値が２次元オブジェクトに関連付けられるので、本実施形態で例示したように２次元オブジェクトが複数存在する場合であっても、立体視画像を適切に生成することができる。
【０１５９】
また、本実施形態では、３次元オブジェクトと２次元オブジェクトとの描画処理にＺバッファ３１３２が用いられる。このため、例えば仮想３次元空間内のある３次元オブジェクトよりも手前に立体視表示されるように奥行き値が関連付けられているにも拘わらず２次元オブジェクトがその３次元オブジェクトの後方に立体視表示されるというように、各オブジェクトの奥行き値に矛盾した画像が立体視表示されるのを防止することができる。
【０１６０】
また、本実施形態では、本発明の２次元オブジェクトが内側撮像部２４によって撮像された人物の顔を表す撮像画像である。このため、仮想３次元空間には存在しない人物の顔があたかも仮想３次元空間に存在しているかのように見せる視覚的効果を生じさせることができる。
【０１６１】
また、本実施形態では、本発明の２次元オブジェクトが内側撮像部２４によってリアルタイムに取得される撮像画像５１，５４である。このため、仮想３次元空間には存在しない２次元オブジェクトがあたかも仮想３次元空間に存在していて、且つ、仮想３次元空間内で動いているかのように見せる視覚的効果を容易に生じさせることができる。
【０１６２】
また、本実施形態では、本発明の２次元オブジェクトが、ゲーム装置１０Ａが外部装置であるゲーム装置１０Ｂと通信を行って取得した撮像画像５１である。このため、ゲーム装置１０Ａが有していない撮像画像５１が、ゲーム装置１０Ａにおいて構築される仮想３次元空間内に存在しているかのように見せる視覚的効果を得ることができる。
【０１６３】
［変形例］
本発明は上記実施形態に限定されるものではなく、例えば以下の形態であってもよい。
すなわち、上記実施形態では、本発明の所定の２次元オブジェクトが元々奥行き値を有していない撮像画像５１，５４である場合について説明した。これに代えて、本発明の所定の２次元オブジェクトは、画像の形態となっていない２次元オブジェクトであってもよいし、或いは、３次元オブジェクトを正射影することによって得られた２次元オブジェクトであってもよい。すなわち、本発明の所定の２次元オブジェクトは、３次元オブジェクトから奥行き値を除いて奥行き値を有しない２次元オブジェクトに変換したものであってもよい。
【０１６４】
また、上記実施形態では、本発明のパラメータが撮像画像５１等の２次元オブジェクトの大きさを示すパラメータである場合について説明したが、本発明のパラメータは、例えば２次元オブジェクトの形状を示すパラメータであってもよい。
【０１６５】
また、上記実施形態では、３次元オブジェクト（例えば敵機５０Ｂ）の２次元座標に基づいて２次元オブジェクトの表示領域（例えば撮像画像５１の表示領域２２２Ｌ、２２２Ｒ）を決定する場合について説明したが、２次元オブジェクトの表示領域は、３次元オブジェクトの２次元座標とは無関係に決定されてもよい。
【０１６６】
また、上記実施形態では、仮想ステレオカメラ６０の視点位置から３次元オブジェクト（例えば敵機５０Ｂ）までのオブジェクト距離Ａ（図１６参照）に応じたＺ値が取得される場合について説明したが、取得されるＺ値は、オブジェクト距離Ａとは無関係に取得されてもよい。例えば、仮想３次元空間の状況が第１の状況から第１の状況とは異なる第２の状況へと変化するような場合に、第１の状況のときには第１のＺ値を取得し、第２の状況のときには第１のＺ値とは異なる第２のＺ値を取得するようにしてもよい。
【０１６７】
また、上記実施形態では、ゲーム装置１０Ａで立体視表示される撮像画像（例えば撮像画像５１）が外部装置（例えばゲーム装置１０Ｂ）から受信したものである場合について説明したが、立体視表示される撮像画像は、ゲーム装置１０Ａにおいて撮像されたものであってもよい。
【０１６８】
また、上記実施形態では、ゲーム装置１０Ａで立体視表示される撮像画像（例えば撮像画像５１）が、外部装置（例えばゲーム装置１０Ｂ）の内側撮像部２４によってリアルタイムに取得される撮像画像である場合について説明した。これに代えて、ゲーム装置１０Ａで立体視表示される撮像画像は、外部装置に予め格納されたものであってもよい。
【０１６９】
また、上記実施形態では、ゲーム装置１０Ｂの内側撮像部２４によって撮像された撮像画像５１がゲーム装置１０Ａの上側ＬＣＤ２２に立体視表示される場合について説明したが、ゲーム装置１０Ａで立体視表示される撮像画像は、例えばゲーム装置１０Ａの内側撮像部２４により撮像されたものであってもよい。
【０１７０】
また、上記実施形態では、ゲーム装置１０Ａで立体視表示される撮像画像が人物の顔を表す撮像画像である場合について説明したが、立体視表示される撮像画像は、人物の顔を表す撮像画像に限定されるものではない。例えば、立体視表示される撮像画像は、外側撮像部２３を非ステレオカメラとして使用して得られた、人物の顔を含まない撮像画像であってもよい。
【０１７１】
また、上記実施形態では、上記のような一連の処理を１台のゲーム装置１０で実現しているが、これは必須ではなく、複数の情報処理装置が協働することによって上記のような一連の処理を実現してもよい。すなわち、取得手段、関連付け手段、生成手段、表示制御手段のうちの少なくとも１つの手段の機能を、ゲーム装置１０以外の例えばネットワーク上のサーバ装置等が実現するようにしてもよい。この場合、ゲーム装置１０及びサーバ装置からなるゲームシステムが、上述したゲーム装置１０と同様に機能する。
【０１７２】
また、上記実施形態において、ゲーム装置１０の形状や、それに設けられている各種操作ボタン１４やタッチパネル１３の形状、数、設置位置等は単なる一例に過ぎず、他の形状、数、設置位置であっても、本発明を実現できることは言うまでもない。また、上述したフローチャートに基づいて説明した処理の順序、設定値、判定に用いられる閾値等は単なる一例に過ぎず、本発明の範囲を逸脱しなければ他の順序や値であっても、本発明を実現できることは言うまでもない。
【０１７３】
また、上記実施形態のゲーム装置１０において実行される表示制御プログラムは、外部メモリ４４等の記憶媒体を通じてゲーム装置１０に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置１０に供給されてもよい。また、上記表示制御プログラムは、ゲーム装置１０内部の不揮発性記憶装置（データ保存用内部メモリ３５等）に予め記録されていてもよい。なお、上記表示制御プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、ＣＤ−ＲＯＭ、ＤＶＤ、或いはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ等であってもよい。また、上記表示制御プログラムを記憶する情報記憶媒体としては、上記表示制御プログラムを一時的に記憶する揮発性メモリでもよい。
【産業上の利用可能性】
【０１７４】
本発明は、立体視表示を行う表示制御装置のコンピュータに実行される表示制御プログラム、表示制御装置、表示制御システム、表示制御方法等に適用可能である。
【符号の説明】
【０１７５】
１０  ゲーム装置（表示制御装置）
１４  操作ボタン
２２  上側ＬＣＤ（表示装置）
２５  ３Ｄ調整スイッチ
３１  情報処理部
３２  メインメモリ
３６  無線通信モジュール
５０Ａ  自機（３次元オブジェクト）
５０Ｂ  敵機（３次元オブジェクト）
５０Ｃ  敵機（３次元オブジェクト）
５１，５４  撮像画像（２次元オブジェクト）
５７  惑星オブジェクト（３次元オブジェクト）
６０  仮想ステレオカメラ
６０Ｌ  左目用カメラ
６０Ｒ  右目用カメラ
６１  撮像方向
１００  ゲームシステム
２２０  仮想画面
２２２  配置領域
２２２Ｌ、２２２Ｒ  表示領域
３１１  ＣＰＵ
３１２  ＧＰＵ
３１３  ＶＲＡＭ
３１３１  フレームバッファ
３１３２  Ｚバッファ
【図１】
2012174237.tif 000003
【図２Ａ】
2012174237.tif 000004
【図２Ｂ】
2012174237.tif 000005
【図２Ｃ】
2012174237.tif 000006
【図２Ｄ】
2012174237.tif 000007
【図３】
2012174237.tif 000008
【図４】
2012174237.tif 000009
【図５】
2012174237.tif 000010
【図６】
2012174237.tif 000011
【図７】
2012174237.tif 000012
【図８】
2012174237.tif 000013
【図９】
2012174237.tif 000014
【図１０】
2012174237.tif 000015
【図１１】
2012174237.tif 000016
【図１２】
2012174237.tif 000017
【図１３】
2012174237.tif 000018
【図１４】
2012174237.tif 000019
【図１５】
2012174237.tif 000020
【図１６】
2012174237.tif 000021
【図１７】
2012174237.tif 000022
【図１８】
2012174237.tif 000023
【図１９】
2012174237.tif 000024
【手続補正書】
【提出日】平成24年2月21日(2012.2.21)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
ゲーム装置１０Ａの上側ＬＣＤ２２には、撮像画像５１、ライフゲージ５２、撮像画像５４、ライフゲージ５５等の仮想３次元空間内には存在しない２次元オブジェクトが更に表示されている。撮像画像５１は、敵機５０Ｂを操作するプレイヤ２の顔をゲーム装置１０Ｂの内側撮像部２４により撮像して得られたプレイヤ２の顔を表す撮像画像であり、ゲーム装置１０Ａがゲーム装置１０Ｂと通信を行って取得したものである。この撮像画像５１は、敵機５０Ｂを操作するプレイヤ２の顔を表す画像であるため、敵機５０Ｂと近接する位置に表示される。撮像画像５４は、敵機５０Ｃを操作するプレイヤ３の顔をゲーム装置１０Ｃの内側撮像部２４により撮像して得られたプレイヤ３の顔を表す撮像画像であり、ゲーム装置１０Ａがゲーム装置１０Ｃと通信を行って取得したものである。この撮像画像５４は、敵機５０Ｃを操作するプレイヤ３の顔を表す画像であるため、敵機５０Ｃと近接する位置に表示される。このため、ゲーム装置１０Ａのプレイヤ１は、上側ＬＣＤ２２に立体視表示された画像を見て、敵機５０Ｂを操作しているのがプレイヤ２であり、敵機５０Ｃを操作しているのがプレイヤ３であることを容易に視認することができる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
ゲーム装置１０Ａのプレイヤ１は、十字ボタン１４Ａを操作することによって自機５０Ａの飛行方向を変化させることができ、また、例えばボタン１４Ｂを押下することによって自機５０Ａにミサイルを発射させて、敵機５０Ｂ又は敵機５０Ｃを攻撃することができる。ライフゲージ５２は、敵機５０Ｂのエネルギー量を示している。敵機５０Ｂは、自機５０Ａ又は敵機５０Ｃから発射されたミサイルによる攻撃を受けるとエネルギーが減っていく。そして、ライフゲージ５２により示されるエネルギー量が０になると、プレイヤ２のゲームがゲームオーバーとなる。このことは、ライフゲージ５５についても同様である。図５に示される状態では、自機５０Ａのエネルギー量（不図示）が最も多いため、プレイヤ１が一位であることを示す「１ｓｔ」の文字が上側ＬＣＤ２２の左下に表示されている。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１１６
【補正方法】変更
【補正の内容】
【０１１６】
図１２は、２次元座標系（ＸＹ座標系）における敵機５０Ｂの中心座標（Ｘ１，Ｙ１）の取得方法について説明するための図である。図１２において、Ｘ軸方向は、図１に示されるように上側ＬＣＤ２２の画面を正面から見た場合の右方向と一致する方向である。Ｙ軸方向は、図１に示されるように上側ＬＣＤ２２の画面を正面から見た場合の上方向と一致する方向である。Ｚ軸方向は、図１に示されるように上側ＬＣＤ２２の画面を正面から見た場合の奥行き方向と一致する方向である。なお、図１２においては、説明の便宜上、仮想３次元空間に配置されている３次元オブジェクトのうち、敵機５０Ｂのみが表記され、他の３次元オブジェクト（自機５０Ａ、敵機５０Ｃ、及びミサイル５３）の図示が省略されている。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１１７
【補正方法】変更
【補正の内容】
【０１１７】
図１２に示されるように、ゲーム装置１０Ａにおいて構築される仮想３次元空間には、左目用カメラ６０Ｌと右目用カメラ６０Ｒとから構成される仮想ステレオカメラ６０と、敵機５０Ｂとが配置されている。ＣＰＵ３１１は、ステップＳ９０１において、まず、仮想３次元空間における仮想ステレオカメラ６０と敵機５０Ｂとの間に上側ＬＣＤ２２の画面を仮想配置する。この仮想配置された上側ＬＣＤ２２の画面が、図１２における仮想画面２２０である。この仮想画面２２０は、上側ＬＣＤ２２の画面を仮想３次元空間に仮想配置したものであるため、上側ＬＣＤ２２の画面と対応する大きさを有している。具体的には、仮想画面２２０は、仮想画面２２０のＸ軸方向の大きさが上側ＬＣＤ２２のＸ軸方向の画素数と対応し、且つ、仮想画面２２０のＹ軸方向の大きさが上側ＬＣＤ２２のＹ軸方向の画素数と対応するように、その大きさが設定されている。なお、仮想画面２２０を仮想配置する位置は、仮想ステレオカメラ６０の撮像方向６１や画角等に基づいて決定される（図１６参照）。また、本実施形態では、仮想画面２２０は基準面と同じ平面上に配置されるが、図１６では、説明の便宜上、仮想画面２２０を基準面とずらして表記している。ただし、仮想画面２２０は、必ずしも基準面と同じ平面上に配置する必要はなく、基準面とは無関係に配置されてもよい。ＣＰＵ３１１は、この仮想画面２２０を仮想配置した後、仮想ステレオカメラ６０の視点位置（左目用カメラ６０Ｌと右目用カメラ６０Ｒとの中間に配置された中点カメラ６０Ｃの視点位置）と、敵機５０Ｂとを結ぶ線分を求める。そして、ＣＰＵ３１１は、仮想画面２２０を含む平面（ＸＹ座標系）において、その平面と、仮想ステレオカメラ６０の視点位置と敵機５０Ｂとを結ぶ線分が交差する点を、敵機５０Ｂの中心座標（Ｘ１，Ｙ１）として取得する。このようにして取得された敵機５０Ｂの中心座標（Ｘ１，Ｙ１）を示すデータは、中心座標データ３３６として作業領域３３１に格納される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１２０
【補正方法】変更
【補正の内容】
【０１２０】
ステップＳ９０２の処理に続いて、ＣＰＵ３１１は、敵機５０Ｂが上側ＬＣＤ２２の画面外に位置しているか否かを判定する（ステップＳ９０３）。図１２に示されるように、上記ステップＳ９０１の処理で取得された敵機５０Ｂの中心座標（Ｘ１，Ｙ１）が仮想画面２２０上の座標である場合、敵機５０Ｂは、上側ＬＣＤ２２に立体視表示される。これに対して、敵機５０Ｂの中心座標（Ｘ１，Ｙ１）が仮想画面２２０の外側の座標である場合、敵機５０Ｂは、上側ＬＣＤ２２に表示されない。そこで、ＣＰＵ３１１は、ステップＳ９０３において、中心座標データ３３６が示す敵機５０Ｂの中心座標（Ｘ１，Ｙ１）が上側ＬＣＤ２２の画面に対応する仮想画面２２０上の座標であるか否かに基づいて、敵機５０Ｂが上側ＬＣＤ２２の画面外に位置しているか否かを判定する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１２２
【補正方法】変更
【補正の内容】
【０１２２】
そこで、ＣＰＵ３１１は、敵機５０Ｂが上側ＬＣＤ２２の画面外に位置していると判定した場合（ステップＳ９０３：ＹＥＳ）、上記ステップＳ９０２の処理で設定した配置領域２２２を補正する（ステップＳ９０４）。具体的には、ＣＰＵ３１１は、図１５に示されるように、ＸＹ座標（Ｘ４，Ｙ４）を中心とする配置領域２２２の全体が仮想画面２２０内に位置するように、すなわち配置領域２２２の中心のＸＹ座標が（Ｘ４，Ｙ５）となるように、配置領域２２２の位置を補正する。このステップＳ９０４の処理が行われることにより、上記ステップＳ９０２の処理で作業領域３３１に格納された配置位置座標データ３３７が更新される。なお、ここでは、配置領域２２２のＹ座標だけを補正して配置領域２２２を仮想画面２２０内にシフトさせる場合について説明したが、配置領域２２２のＸ座標だけを補正して配置領域２２２を仮想画面２２０内にシフトさせたり、配置領域２２２のＸ座標とＹ座標の両方を補正して配置領域２２２を仮想画面２２０内にシフトさせるようにしてもよい。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１２３
【補正方法】変更
【補正の内容】
【０１２３】
なお、敵機５０Ｂの中心座標（Ｘ３，Ｙ３）が仮想画面２２０から大きく離れているにも拘わらず配置領域２２２の位置を仮想画面２２０内にシフトさせる上記ステップＳ９０４の補正処理を行うと、敵機５０Ｂから大きく離れた位置に撮像画像５１が表示されることになり、自機５０Ａを操作するプレイヤ１が敵機５０Ｂの位置を正確に特定できなくなるおそれがある。このため、敵機５０Ｂの中心座標（Ｘ３，Ｙ３）が仮想画面２２０から所定距離以上離れている場合には、このステップＳ９０４の処理を行わないようにしてもよい。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１２９
【補正方法】変更
【補正の内容】
【０１２９】
ＣＰＵ３１１は、撮像画像５１が敵機５０Ｂと重なると判定した場合（ステップＳ９０７：ＹＥＳ）、ステップＳ９０６の処理で撮像画像５１に関連付けられたＺ値を補正する（ステップＳ９０８）。具体的には、ＣＰＵ３１１は、ステップＳ９０６の処理で作業領域３３１に格納されたＺ値データ３３９が示すＺ値が敵機５０ＢのＺ値よりも若干小さくなるように、Ｚ値データ３３９を更新する。このステップＳ９０８の処理が行われることにより、いわゆるＺテストを伴う描画処理を正常に行うことができ、その結果、撮像画像５１を敵機５０Ｂの手前に表示させて、撮像画像５１が敵機５０Ｂに隠れてしまうのを防止することができる。なお、撮像画像５１に関連付けられているＺ値をこのステップＳ９０８の処理によって小さくし過ぎると、撮像画像５１と敵機５０Ｂの立体感が大きく異なる（撮像画像５１が敵機５０Ｂに対してかなり手前に位置したように見える）こととなり、撮像画像５１があたかも仮想３次元空間内の敵機５０Ｂと同じ奥行き位置に位置しているかのように見せる視覚的効果が低下するおそれがある。したがって、このステップＳ９０８の処理によるＺ値の補正量は、このような事情を考慮して適切な値に設定されている。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１３４
【補正方法】変更
【補正の内容】
【０１３４】
ＣＰＵ３１１は、このようにしてずらし量Ｐを算出すると、撮像画像５１の左目用画像の表示領域２２２Ｌと右目用画像の表示領域２２２Ｒとを決定する（ステップＳ９１０）。具体的には、ＣＰＵ３１１は、配置領域２２２の２次元座標及びずらし量Ｐに基づいて、左目用画像の表示領域２２２Ｌの四隅の２次元座標と、右目用画像の表示領域２２２Ｒの四隅の２次元座標を決定する。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１３８
【補正方法】変更
【補正の内容】
【０１３８】
すなわち、ＣＰＵ３１１は、他の撮像画像がないと判定した場合（ステップＳ９１１：ＮＯ）、フレームバッファ３１３１に描画すべき対象ピクセルを選択する（ステップＳ９１３）。具体的には、ＣＰＵ３１１は、各３次元オブジェクトを構成するピクセル、及び各２次元オブジェクトを構成するピクセルの中から、いずれかのピクセルを対象ピクセルとして選択する。この対象ピクセルは、描画対象となる対象オブジェクト（３次元オブジェクト又は２次元オブジェクト）の一部を構成するピクセルである。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１４０
【補正方法】変更
【補正の内容】
【０１４０】
ＣＰＵ３１１は、このようにして対象ピクセルのＺ値を取得した後、取得したＺ値が、そのピクセルが描画されるべきフレームバッファ３１３１内の記憶位置に対応するＺバッファ３１３２内のバッファ値（Ｚ値）よりも小さいか否かを判定する（ステップＳ９１４）。このように、ＣＰＵ３１１は、ステップＳ９１３の処理で選択した対象ピクセルに対してＺテスト（深度テスト）を実行する。