(57)【特許請求の範囲】
【請求項１】
仮想空間に配置された仮想オブジェクトを一対の仮想カメラを用いて描画することによって、立体視可能な立体表示装置の画面に当該仮想オブジェクトを立体表示する画像表示プログラムであって、コンピュータを、
前記一対の仮想カメラから撮影方向への距離であって、立体視の奥行感の基準となる立体視基準距離を、前記仮想カメラから撮影方向への仮想オブジェクトの距離である撮影距離に応じて変化するように決定する立体視基準距離決定手段、
前記立体視基準距離決定手段によって決定された立体視基準距離が所定の奥行感となるような視体積をそれぞれ持つように、前記一対の仮想カメラを設定する仮想カメラ設定手段、および
前記仮想カメラ設定手段によって設定された前記一対の仮想カメラにより前記仮想オブジェクトを撮影して一対の仮想画像を生成し、当該一対の仮想画像を用いて前記立体表示装置の画面に前記仮想オブジェクトを立体表示する立体表示制御手段として機能させる、画像表示プログラム。
【請求項２】
前記所定の奥行感は、前記立体表示装置の画面に一致する奥行感である、請求項１に記載の画像表示プログラム。
【請求項３】
前記コンピュータを、
一対の撮像部で撮像された一対の実世界画像のうちの少なくとも一方の実世界画像から所定の認識対象を認識する認識手段、および
前記少なくとも一方の実世界画像における前記認識対象の位置に基づいて、前記一対の仮想カメラと前記認識対象に対応する仮想空間内の所定点の相対的な位置関係を決定する位置関係決定手段としてさらに機能させ、
前記立体視基準距離決定手段は、前記一対の仮想カメラから前記所定点までの撮影方向についての距離と、前記撮影距離との差に応じて、前記立体視基準距離を決定する、請求項１に記載の画像表示プログラム。
【請求項４】
前記立体視基準距離決定手段は、前記立体視基準距離を決めるための基礎となる第１基礎距離と前記撮影距離との差に応じて、前記立体視基準距離を決定する、請求項１に記載の画像表示プログラム。
【請求項５】
前記立体視基準距離決定手段は、前記撮影距離が前記第１基礎距離から離れるほど、前記立体視基準距離を前記基礎距離から前記撮影距離の方向に近づける、請求項１に記載の画像表示プログラム。
【請求項６】
前記立体視基準距離決定手段は、仮想空間に複数の仮想オブジェクトが存在する場合に、当該複数の仮想オブジェクトのそれぞれに対して個別に立体視基準距離を決定し、
前記立体表示制御手段は、前記複数の仮想オブジェクトのそれぞれを、対応する立体視基準距離に基づいて個別に描画することによって、当該複数の仮想オブジェクトの画像をそれぞれ生成し、その結果得られた当該複数の仮想オブジェクトの画像を合成することによって、前記仮想画像を生成する、請求項１に記載の画像表示プログラム。
【請求項７】
前記立体視基準距離決定手段は、前記仮想オブジェクトの奥行位置が、第１奥行位置から当該第１奥行位置よりも前記一対の仮想カメラ側に位置する第２奥行位置に近づくほど、立体視基準距離が前記一対の仮想カメラにより近づき、かつ立体視基準距離に対する当該仮想オブジェクトの相対位置が前記一対の仮想カメラ側に移動するように、当該仮想オブジェクト用の立体視基準距離を決定する、請求項１に記載の画像表示プログラム。
【請求項８】
前記立体視基準距離決定手段は、前記仮想オブジェクトが所定の奥行位置に位置するときには、立体視基準距離に対する当該仮想オブジェクトの相対位置が所定の相対位置となるように、当該仮想オブジェクト用の立体視基準距離を決定する、請求項１に記載の画像表示プログラム。
【請求項９】
前記立体視基準距離決定手段は、
前記仮想オブジェクトが第１奥行位置に位置するときには、立体視基準距離に対する当該仮想オブジェクトの相対位置が第１相対位置となるように、当該仮想オブジェクト用の立体視基準距離を決定し、
前記仮想オブジェクトが第２奥行位置に位置するときには、立体視基準距離に対する当該仮想オブジェクトの相対位置が第２相対位置となるように、当該仮想オブジェクト用の立体視基準距離を決定し、
前記仮想オブジェクトが前記第１奥行位置と前記第２奥行位置の間に位置するときには、前記第１奥行位置および前記第２奥行位置に対する当該仮想オブジェクトの相対位置に応じて、当該仮想オブジェクト用の立体視基準距離を決定する、請求項１に記載の画像表示プログラム。
【請求項１０】
前記立体視基準距離決定手段は、前記仮想オブジェクトが前記第１奥行位置と前記第２奥行位置の間に位置するときには、前記第１奥行位置と前記第２奥行位置の間の距離と、前記仮想オブジェクトの奥行位置と前記第２奥行位置との間の距離の比率に基づいて、当該仮想オブジェクト用の立体視基準距離を決定する、請求項９に記載の画像表示プログラム。
【請求項１１】
前記第２奥行位置は、前記第１奥行位置よりも前記一対の仮想カメラ側に位置し、
前記第２相対位置は、前記第１相対位置よりも前記一対の仮想カメラ側に位置する、請求項９に記載の画像表示プログラム。
【請求項１２】
前記第２相対位置が、立体視基準距離と前記仮想オブジェクトが同じ奥行位置となるような相対位置である、請求項９に記載の画像表示プログラム。
【請求項１３】
前記第１奥行位置と前記第２奥行位置の相対的な位置関係が、状況によって変化する、請求項９に記載の画像表示プログラム。
【請求項１４】
前記一対の仮想カメラに対する前記第１奥行位置の相対位置は可変であり、前記一対の仮想カメラに対する前記第２奥行位置の相対位置は固定である、請求項１３に記載の画像表示プログラム。
【請求項１５】
前記コンピュータを、
一対の撮像部で撮像された一対の実世界画像のうちの少なくとも一方の実世界画像から所定の認識対象を認識する認識手段、および
前記少なくとも一方の実世界画像における前記認識対象の位置に基づいて、前記一対の仮想カメラと前記第１奥行位置の相対的な位置関係を決定する位置関係決定手段としてさらに機能させる、請求項１４に記載の画像表示プログラム。
【請求項１６】
前記立体表示制御手段は、前記一対の実世界画像に、前記一対の仮想カメラを用いて順次生成される前記仮想オブジェクトの一対の画像を順次それぞれ合成することによって、
前記立体表示装置に表示するための立体画像を生成する、請求項１５に記載の画像表示プログラム。
【請求項１７】
前記一対の仮想カメラと前記第１奥行位置の間の距離に応じて前記第１相対位置を決定する第１相対位置決定手段として前記コンピュータをさらに機能させる、請求項１５に記載の画像表示プログラム。
【請求項１８】
前記立体表示制御手段は、前記一対の仮想カメラから等距離の立体視基準距離上の点である立体視基準点を変更することによって、前記立体視基準距離決定手段によって決定された立体視基準距離に応じた前記仮想オブジェクトの立体画像を生成する、請求項１に記載の画像表示プログラム。
【請求項１９】
仮想空間に配置された仮想オブジェクトを一対の仮想カメラを用いて描画することによって、立体視可能な立体表示装置の画面に当該仮想オブジェクトを立体表示する画像表示装置であって、
前記一対の仮想カメラから撮影方向への距離であって、立体視の奥行感の基準となる立体視基準距離を、前記仮想カメラから撮影方向への仮想オブジェクトの距離である撮影距離に応じて変化するように決定する立体視基準距離決定手段、
前記立体視基準距離決定手段によって決定された立体視基準距離が所定の奥行感となるような視体積をそれぞれ持つように、前記一対の仮想カメラを設定する仮想カメラ設定手段、および
前記仮想カメラ設定手段によって設定された前記一対の仮想カメラにより前記仮想オブジェクトを撮影して一対の仮想画像を生成し、当該一対の仮想画像を用いて前記立体表示装置の画面に前記仮想オブジェクトを立体表示する立体表示制御手段を備える、画像表示装置。
【請求項２０】
仮想空間に配置された仮想オブジェクトを一対の仮想カメラを用いて描画することによって、立体視可能な立体表示装置の画面に当該仮想オブジェクトを立体表示する画像表示システムであって、
前記一対の仮想カメラから撮影方向への距離であって、立体視の奥行感の基準となる立体視基準距離を、前記仮想カメラから撮影方向への仮想オブジェクトの距離である撮影距離に応じて変化するように決定する立体視基準距離決定手段、
前記立体視基準距離決定手段によって決定された立体視基準距離が所定の奥行感となるような視体積をそれぞれ持つように、前記一対の仮想カメラを設定する仮想カメラ設定手段、および
前記仮想カメラ設定手段によって設定された前記一対の仮想カメラにより前記仮想オブジェクトを撮影して一対の仮想画像を生成し、当該一対の仮想画像を用いて前記立体表示装置の画面に前記仮想オブジェクトを立体表示する立体表示制御手段を備える、画像表示システム。
【請求項２１】
仮想空間に配置された仮想オブジェクトを一対の仮想カメラを用いて描画することによって、立体視可能な立体表示装置の画面に当該仮想オブジェクトを立体表示する画像表示方法であって、
前記一対の仮想カメラから撮影方向への距離であって、立体視の奥行感の基準となる立体視基準距離を、前記仮想カメラから撮影方向への仮想オブジェクトの距離である撮影距離に応じて変化するように決定する立体視基準距離決定ステップ、
前記立体視基準距離決定ステップにおいて決定された立体視基準距離が所定の奥行感となるような視体積をそれぞれ持つように、前記一対の仮想カメラを設定する仮想カメラ設定ステップ、および
前記仮想カメラ設定ステップにおいて設定された前記一対の仮想カメラにより前記仮想オブジェクトを撮影して一対の仮想画像を生成し、当該一対の仮想画像を用いて前記立体表示装置の画面に前記仮想オブジェクトを立体表示する立体表示制御ステップを、前記立体表示装置のコンピュータが実行する、画像表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像表示プログラム、装置、システムおよび方法に関し、特に、立体視可能な立体表示装置の画面に仮想オブジェクトを立体表示するための、画像表示プログラム、装置、システムおよび方法に関する。
【背景技術】
【０００２】
近年、実世界の画像に仮想オブジェクトを合成表示することによって、その仮想オブジェクトがあたかも実世界内に実在するかのように表示する、ＡＲ（Augmented Reality：拡張現実感）技術の研究が進んでいる。
【０００３】
例えば、特許文献１に開示されている立体表示装置では、ヘッドマウントディスプレイに取り付けられている右目カメラおよび左目カメラによってそれぞれ撮像された画像から、実空間に配置されたマーカーに対する右目カメラおよび左目カメラの相対位置姿勢をそれぞれ求め、その結果に基づいて、右目用の仮想オブジェクトの画像と左目用の仮想オブジェクトの画像をそれぞれ生成している。そして、右目カメラおよび左目カメラによってそれぞれ撮像された画像に対して、右目用の仮想オブジェクトの画像と左目用の仮想オブジェクトの画像をそれぞれ合成して、それらの合成画像を右目ＬＣＤ（液晶画面）と左目ＬＣＤにそれぞれ表示している。
【０００４】
また、非特許文献１には、カメラによって撮像された画像におけるマーカーの位置および姿勢に基づいて、実世界におけるマーカーとカメラとの相対位置及び相対姿勢を計算する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１４６１０９号公報
【非特許文献】
【０００６】
【非特許文献１】Hirokazu Kato, Mark Billinghurst, "Marker Tracking and HMD Calibration for a Video-Based Augmented Reality Conferencing System," iwar, pp.85, 2nd IEEE and ACM International Workshop on Augmented Reality, 1999
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、特許文献１に記載の立体表示装置では、基本的にマーカーと同じ位置に仮想オブジェクトがあるように見えるように仮想オブジェクトを立体表示しているだけである。しかしながら、例えば、マーカーよりも大きく手前に見えるような位置に別の仮想オブジェクトを配置した場合、ユーザにとって、マーカーと同じ位置に配置されている仮想オブジェクトと、マーカーから離れた位置に配置されている仮想オブジェクトの両方が仮想カメラで撮影されている場合に、一方の仮想オブジェクトの画面上での表示ずれ量（立体視のための表示ずれ量）と他方の仮想オブジェクトの画面上での表示ずれ量の差異が大きくなって、それらの仮想オブジェクトの視認が困難なことがあった。
【０００８】
それ故、本発明の目的は、立体視可能な立体表示装置において、ユーザが立体視しやすいように仮想オブジェクトを立体表示することができる、画像表示プログラム、装置、システムおよび方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するために、以下の構成を採用した。
本発明の画像表示プログラムは、仮想空間に配置された仮想オブジェクトを一対の仮想カメラを用いて描画することによって、立体視可能な立体表示装置の画面に当該仮想オブジェクトを立体表示する画像表示プログラムであって、コンピュータを、立体視基準距離決定手段、仮想カメラ設定手段、および立体表示制御手段として機能させる。上記立体視基準距離決定手段は、上記一対の仮想カメラから撮影方向への距離であって、立体視の奥行感の基準となる立体視基準距離を、上記仮想カメラから撮影方向への仮想オブジェクトの距離である撮影距離に応じて変化するように決定する。上記仮想カメラ設定手段は、上記立体視基準距離決定手段によって決定された立体視基準距離が所定の奥行感となるような視体積をそれぞれ持つように、上記一対の仮想カメラを設定する。上記立体表示制御手段は、上記仮想カメラ設定手段によって設定された上記一対の仮想カメラにより上記仮想オブジェクトを撮影して一対の仮想画像を生成し、当該一対の仮想画像を用いて上記立体表示装置の画面に上記仮想オブジェクトを立体表示する。
これにより、立体表示装置の画面を通じてユーザから見たときの仮想オブジェクトの奥行感を適切に設定することができる。
【００１０】
なお、上記所定の奥行感は、上記立体表示装置の画面に一致する奥行感であってもよい。
【００１１】
また、上記画像表示プログラムは、上記コンピュータを、一対の撮像部で撮像された一対の実世界画像のうちの少なくとも一方の実世界画像から所定の認識対象を認識する認識手段、および上記少なくとも一方の実世界画像における上記認識対象の位置に基づいて、上記一対の仮想カメラと上記認識対象に対応する仮想空間内の所定点の相対的な位置関係を決定する位置関係決定手段としてさらに機能させ、上記立体視基準距離決定手段は、上記一対の仮想カメラから上記所定点までの撮影方向についての距離と、上記撮影距離との差に応じて、上記立体視基準距離を決定してもよい。
【００１２】
また、上記立体視基準距離決定手段は、上記立体視基準距離を決めるための基礎となる第１基礎距離と上記撮影距離との差に応じて、上記立体視基準距離を決定してもよい。
【００１３】
また、上記立体視基準距離決定手段は、上記撮影距離が上記第１基礎距離から離れるほど、上記立体視基準距離を上記基礎距離から上記撮影距離の方向に近づけてもよい。
【００１４】
また、上記立体視基準距離決定手段は、仮想空間に複数の仮想オブジェクトが存在する場合に、当該複数の仮想オブジェクトのそれぞれに対して個別に立体視基準距離を決定し、上記立体表示制御手段は、上記複数の仮想オブジェクトのそれぞれを、対応する立体視基準距離に基づいて個別に描画することによって、当該複数の仮想オブジェクトの画像をそれぞれ生成し、その結果得られた当該複数の仮想オブジェクトの画像を合成することによって、上記仮想画像を生成してもよい。
これにより、ユーザから見たときの各仮想オブジェクトの奥行感を、個別に適切に設定することができる。
【００１５】
また、上記立体視基準距離決定手段は、上記仮想オブジェクトの奥行位置が、第１奥行位置から当該第１奥行位置よりも上記一対の仮想カメラ側に位置する第２奥行位置に近づくほど、立体視基準距離が上記一対の仮想カメラにより近づき、かつ立体視基準距離に対する当該仮想オブジェクトの相対位置が上記一対の仮想カメラ側に移動するように、当該仮想オブジェクト用の立体視基準距離を決定してもよい。
これにより、ユーザにとって仮想空間があたかも画面の奥行方向に圧縮されたように見えるため、ユーザが仮想オブジェクトに左右の目の焦点を合わせやすくなる。
【００１６】
また、上記立体視基準距離決定手段は、上記仮想オブジェクトが所定の奥行位置に位置するときには、立体視基準距離に対する当該仮想オブジェクトの相対位置が所定の相対位置となるように、当該仮想オブジェクト用の立体視基準距離を決定してもよい。
これにより、仮想空間において所定の奥行距離にある仮想オブジェクトが、ユーザから見て所定の奥行距離にあるように見える。
【００１７】
また、上記立体視基準距離決定手段は、上記仮想オブジェクトが第１奥行位置に位置するときには、立体視基準距離に対する当該仮想オブジェクトの相対位置が第１相対位置となるように、当該仮想オブジェクト用の立体視基準距離を決定し、上記仮想オブジェクトが第２奥行位置に位置するときには、立体視基準距離に対する当該仮想オブジェクトの相対位置が第２相対位置となるように、当該仮想オブジェクト用の立体視基準距離を決定し、上記仮想オブジェクトが上記第１奥行位置と上記第２奥行位置の間に位置するときには、上記第１奥行位置および上記第２奥行位置に対する当該仮想オブジェクトの相対位置に応じて、当該仮想オブジェクト用の立体視基準距離を決定してもよい。
これにより、第１奥行位置から第２奥行位置までの範囲に位置する仮想オブジェクトを適切に立体表示することができる。
【００１８】
また、上記立体視基準距離決定手段は、上記仮想オブジェクトが上記第１奥行位置と上記第２奥行位置の間に位置するときには、上記第１奥行位置と上記第２奥行位置の間の距離と、上記仮想オブジェクトの奥行位置と上記第２奥行位置との間の距離の比率に基づいて、当該仮想オブジェクト用の立体視基準距離を決定してもよい。
【００１９】
また、上記第２奥行位置は、上記第１奥行位置よりも上記一対の仮想カメラ側に位置し、上記第２相対位置は、上記第１相対位置よりも上記一対の仮想カメラ側に位置してもよい。
【００２０】
また、上記第２相対位置が、立体視基準距離と上記仮想オブジェクトが同じ奥行位置となるような相対位置であってもよい。
これにより、第２奥行位置にある仮想オブジェクトが、ユーザから見て常に立体表示装置の画面と同じ奥行距離に見える。
【００２１】
また、上記第１奥行位置と上記第２奥行位置の相対的な位置関係が、状況によって変化してもよい。
これにより、状況が変化しても、ユーザから見たときの仮想オブジェクトの奥行感を適切に設定することができる。
【００２２】
また、上記一対の仮想カメラに対する上記第１奥行位置の相対位置は可変であり、上記一対の仮想カメラに対する上記第２奥行位置の相対位置は固定であってもよい。
【００２３】
また、上記画像表示プログラムは、上記コンピュータを、一対の撮像部で撮像された一対の実世界画像のうちの少なくとも一方の実世界画像から所定の認識対象を認識する認識手段、および上記少なくとも一方の実世界画像における上記認識対象の位置に基づいて、上記一対の仮想カメラと上記第１奥行位置の相対的な位置関係を決定する位置関係決定手段としてさらに機能させてもよい。
これにより、一対の撮像部と所定の認識対象との位置関係が変化しても、ユーザから見たときの仮想オブジェクトの奥行感を適切に設定することができる。
【００２４】
また、上記立体表示制御手段は、上記一対の実世界画像に、上記一対の仮想カメラを用いて順次生成される上記仮想オブジェクトの一対の画像を順次それぞれ合成することによって、上記立体表示装置に表示するための立体画像を生成してもよい。
これにより、あたかも実世界に存在するかのように仮想オブジェクトを立体表示することができる。
【００２５】
また、上記画像表示プログラムは、上記コンピュータを、上記一対の仮想カメラと上記第１奥行位置の間の距離に応じて上記第１相対位置を決定する第１相対位置決定手段としてさらに機能させてもよい。
【００２６】
また、上記立体表示制御手段は、上記一対の仮想カメラから等距離の立体視基準距離上の点である立体視基準点を変更することによって、上記立体視基準距離決定手段によって決定された立体視基準距離に応じた上記仮想オブジェクトの立体画像を生成してもよい。
これにより、正常な見た目となるように仮想オブジェクトを立体表示することができる。
【００２７】
本発明の画像表示装置は、仮想空間に配置された仮想オブジェクトを一対の仮想カメラを用いて描画することによって、立体視可能な立体表示装置の画面に当該仮想オブジェクトを立体表示する画像表示装置であって、上記一対の仮想カメラから撮影方向への距離であって、立体視の奥行感の基準となる立体視基準距離を、上記仮想カメラから撮影方向への仮想オブジェクトの距離である撮影距離に応じて変化するように決定する立体視基準距離決定手段、上記立体視基準距離決定手段によって決定された立体視基準距離が所定の奥行感となるような視体積をそれぞれ持つように、上記一対の仮想カメラを設定する仮想カメラ設定手段、および上記仮想カメラ設定手段によって設定された上記一対の仮想カメラにより上記仮想オブジェクトを撮影して一対の仮想画像を生成し、当該一対の仮想画像を用いて上記立体表示装置の画面に上記仮想オブジェクトを立体表示する立体表示制御手段を備える。
【００２８】
本発明の画像表示システムは、仮想空間に配置された仮想オブジェクトを一対の仮想カメラを用いて描画することによって、立体視可能な立体表示装置の画面に当該仮想オブジェクトを立体表示する画像表示システムであって、上記一対の仮想カメラから撮影方向への距離であって、立体視の奥行感の基準となる立体視基準距離を、上記仮想カメラから撮影方向への仮想オブジェクトの距離である撮影距離に応じて変化するように決定する立体視基準距離決定手段、上記立体視基準距離決定手段によって決定された立体視基準距離が所定の奥行感となるような視体積をそれぞれ持つように、上記一対の仮想カメラを設定する仮想カメラ設定手段、および上記仮想カメラ設定手段によって設定された上記一対の仮想カメラにより上記仮想オブジェクトを撮影して一対の仮想画像を生成し、当該一対の仮想画像を用いて上記立体表示装置の画面に上記仮想オブジェクトを立体表示する立体表示制御手段を備える。
【００２９】
本発明の画像表示方法は、仮想空間に配置された仮想オブジェクトを一対の仮想カメラを用いて描画することによって、立体視可能な立体表示装置の画面に当該仮想オブジェクトを立体表示する画像表示方法であって、前記一対の仮想カメラから撮影方向への距離であって、立体視の奥行感の基準となる立体視基準距離を、前記仮想カメラから撮影方向への仮想オブジェクトの距離である撮影距離に応じて変化するように決定する立体視基準距離決定ステップ、前記立体視基準距離決定ステップにおいて決定された立体視基準距離が所定の奥行感となるような視体積をそれぞれ持つように、前記一対の仮想カメラを設定する仮想カメラ設定ステップ、および前記仮想カメラ設定ステップにおいて設定された前記一対の仮想カメラにより前記仮想オブジェクトを撮影して一対の仮想画像を生成し、当該一対の仮想画像を用いて前記立体表示装置の画面に前記仮想オブジェクトを立体表示する立体表示制御ステップを、前記立体表示装置のコンピュータが実行する。
【発明の効果】
【００３０】
本発明によれば、立体視可能な立体表示装置において、ユーザが立体視しやすいように仮想オブジェクトを立体表示することができる。
【図面の簡単な説明】
【００３１】
【図１】開状態におけるゲーム装置１０の正面図
【図２】開状態におけるゲーム装置１０の側面図
【図３】閉状態におけるゲーム装置１０の左側面図、正面図、右側面図および背面図
【図４】図１に示す上側ハウジング２１のＡ−Ａ’線断面図
【図５Ａ】３Ｄ調整スイッチ２５のスライダ２５ａが最下点（第３の位置）に存在する様子を示す図
【図５Ｂ】３Ｄ調整スイッチ２５のスライダ２５ａが最下点よりも上方位置（第１の位置）に存在する様子を示す図
【図５Ｃ】３Ｄ調整スイッチ２５のスライダ２５ａが最上点（第２の位置）に存在する様子を示す図
【図６】ゲーム装置１０の内部構成を示すブロック図
【図７】上側ＬＣＤ２２の画面に表示される立体画像の一例を示す図
【図８】ゲーム装置１０のメインメモリ３２のメモリマップを示す図
【図９】メイン処理の流れを示すフローチャート
【図１０】実世界画像描画処理の流れを示すフローチャート
【図１１】ゲーム処理の流れを示すフローチャート
【図１２】立体視基準距離決定処理の流れを示すフローチャート
【図１３】左実世界画像および右実世界画像の一例を示す図
【図１４】マーカー認識処理の結果に応じて算出される左仮想カメラ６４Ｌの位置及び姿勢を示す図
【図１５】マーカー認識処理の結果に応じて算出される右仮想カメラ６４Ｒの位置及び姿勢を示す図
【図１６】左仮想カメラ６４Ｌの位置及び姿勢に基づいて決定される右仮想カメラ６４Ｒの位置を示す図
【図１７】左仮想カメラ６４Ｌから見たマーカー座標系の原点の奥行距離Ｄｍを示す図
【図１８】実世界画像用の立体視基準距離を示す図
【図１９】左実世界画像の描画範囲を示す図
【図２０】右実世界画像の描画範囲を示す図
【図２１】上側ＬＣＤ２２の画面を通じたマーカーの見え方を示す図
【図２２】仮想空間における仮想画面および各種の仮想オブジェクトの位置の一例を示す図
【図２３】比率Ｒｐと、立体視基準距離に対する仮想オブジェクトの相対的な奥行位置との対応関係の一例を示す図
【図２４】仮想オブジェクトの奥行距離Ｄｏと、立体視基準距離Ｆとの対応関係の一例を示す図
【図２５】ドラゴンオブジェクトを描画するときの左仮想カメラ６４Ｌの描画範囲を示す図
【図２６】ドラゴンオブジェクトを描画するときの右仮想カメラ６４Ｒの描画範囲を示す図
【図２７】弾オブジェクトを描画するときの左仮想カメラ６４Ｌの描画範囲を示す図
【図２８】実世界画像に仮想オブジェクトが順次合成される様子を示す図
【図２９】仮想オブジェクト毎に決定される立体視基準距離を示す図
【図３０】上側ＬＣＤ２２の画面を通じた仮想オブジェクトの見え方を示す図
【図３１】比較例として、各仮想オブジェクトに対して同一の立体視基準距離を設定した場合の、上側ＬＣＤ２２の画面を通じた仮想オブジェクトの見え方を示す図
【図３２】比較例として、仮想画面をマーカー座標系の原点の近くに配置した場合の、仮想空間における仮想画面および各種の仮想オブジェクトの位置の一例を示す図
【図３３】比較例として、仮想画面をマーカー座標系の原点の近くに配置した場合の、上側ＬＣＤ２２の画面を通じた仮想オブジェクトの見え方を示す図
【図３４】比較例として、奥行方向に長い仮想オブジェクトを仮想空間に配置した場合の、仮想空間における仮想画面および当該仮想オブジェクトの位置の一例を示す図
【図３５】比較例として、奥行方向に長い仮想オブジェクトを仮想空間に配置した場合の、上側ＬＣＤ２２の画面を通じた当該仮想オブジェクトの見え方を示す図
【図３６】奥行方向に長い仮想オブジェクトを複数の部位に分割して仮想空間に配置した場合の、仮想空間における仮想画面および当該仮想オブジェクトの各部位の位置の一例を示す図
【図３７】奥行方向に長い仮想オブジェクトを複数の部位に分割して仮想空間に配置した場合の、上側ＬＣＤ２２の画面を通じた当該仮想オブジェクトの見え方を示す図
【図３８】メイン処理の変形例を示す図
【図３９】変形例におけるマーカー座標系の原点の奥行距離ＤｍとオフセットＯｓとの対応関係の一例を示す図
【発明を実施するための形態】
【００３２】
（ゲーム装置の構成）
以下、本発明の一実施形態に係るゲーム装置について説明する。図１〜図３は、ゲーム装置１０の外観を示す平面図である。ゲーム装置１０は携帯型のゲーム装置であり、図１〜図３に示すように折り畳み可能に構成されている。図１および図２は、開いた状態（開状態）におけるゲーム装置１０を示し、図３は、閉じた状態（閉状態）におけるゲーム装置１０を示している。図１は、開状態におけるゲーム装置１０の正面図であり、図２は、開状態におけるゲーム装置１０の右側面図である。ゲーム装置１０は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置１０は、交換可能なメモリカード内に記憶され、または、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【００３３】
まず、図１〜図３を参照して、ゲーム装置１０の外観構成について説明する。図１〜図３に示されるように、ゲーム装置１０は、下側ハウジング１１および上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に接続されている。本実施形態では、各ハウジング１１および２１はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
【００３４】
図１および図２に示されるように、下側ハウジング１１の上側長辺部分には、下側ハウジング１１の内側面（主面）１１Ｂに対して垂直な方向に突起する突起部１１Ａが設けられる。また、上側ハウジング２１の下側長辺部分には、上側ハウジング２１の下側面から当該下側面に垂直な方向に突起する突起部２１Ａが設けられる。下側ハウジング１１の突起部１１Ａと上側ハウジング２１の突起部２１Ａとが連結されることにより、下側ハウジング１１と上側ハウジング２１とが、折り畳み可能に接続される。
【００３５】
（下側ハウジングの説明）
まず、下側ハウジング１１の構成について説明する。図１〜図３に示すように、下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２、タッチパネル１３、各操作ボタン１４Ａ〜１４Ｌ（図１、図３）、アナログスティック１５、ＬＥＤ１６Ａ〜１６Ｂ、挿入口１７、および、マイクロフォン用孔１８が設けられる。以下、これらの詳細について説明する。
【００３６】
図１に示すように、下側ＬＣＤ１２は下側ハウジング１１に収納される。下側ＬＣＤ１２は横長形状であり、長辺方向が下側ハウジング１１の長辺方向に一致するように配置される。下側ＬＣＤ１２は下側ハウジング１１の中央に配置される。下側ＬＣＤ１２は、下側ハウジング１１の内側面（主面）に設けられ、下側ハウジング１１に設けられた開口部から当該下側ＬＣＤ１２の画面が露出される。ゲーム装置１０を使用しない場合には閉状態としておくことによって、下側ＬＣＤ１２の画面が汚れたり傷ついたりすることを防止することができる。下側ＬＣＤ１２の画素数は、例えば、２５６ｄｏｔ×１９２ｄｏｔ（横×縦）であってもよい。下側ＬＣＤ１２は、後述する上側ＬＣＤ２２とは異なり、画像を（立体視可能ではなく）平面的に表示する表示装置である。なお、本実施形態では表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側ＬＣＤ１２として、任意の解像度の表示装置を利用することができる。
【００３７】
図１に示されるように、ゲーム装置１０は、入力装置として、タッチパネル１３を備えている。タッチパネル１３は、下側ＬＣＤ１２の画面上に装着されている。なお、本実施形態では、タッチパネル１３は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル１３として、下側ＬＣＤ１２の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１３の解像度と下側ＬＣＤ１２の解像度が一致している必要はない。また、下側ハウジング１１の上側面には挿入口１７（図１および図３（ｄ）に示す点線）が設けられている。挿入口１７は、タッチパネル１３に対する操作を行うために用いられるタッチペン２８を収納することができる。なお、タッチパネル１３に対する入力は通常タッチペン２８を用いて行われるが、タッチペン２８に限らずユーザの指でタッチパネル１３に対する入力をすることも可能である。
【００３８】
各操作ボタン１４Ａ〜１４Ｌは、所定の入力を行うための入力装置である。図１に示されるように、下側ハウジング１１の内側面（主面）には、各操作ボタン１４Ａ〜１４Ｌのうち、十字ボタン１４Ａ（方向入力ボタン１４Ａ）、ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅ、電源ボタン１４Ｆ、セレクトボタン１４Ｊ、ＨＯＭＥボタン１４Ｋ、およびスタートボタン１４Ｌが、設けられる。十字ボタン１４Ａは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅは、十字状に配置される。ボタン１４Ａ〜１４Ｅ、セレクトボタン１４Ｊ、ＨＯＭＥボタン１４Ｋ、およびスタートボタン１４Ｌには、ゲーム装置１０が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン１４Ａは選択操作等に用いられ、各操作ボタン１４Ｂ〜１４Ｅは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン１４Ｆは、ゲーム装置１０の電源をオン／オフするために用いられる。
【００３９】
アナログスティック１５は、方向を指示するデバイスであり、下側ハウジング１１の内側面の下側ＬＣＤ１２より左側領域の上部領域に設けられる。図１に示すように、十字ボタン１４Ａは下側ＬＣＤ１２より左側領域の下部領域に設けられるので、アナログスティック１５は、十字ボタン１４Ａの上方に設けられる。また、アナログスティック１５、および、十字ボタン１４Ａは、下側ハウジングを把持した左手の親指で操作可能な位置に設計される。また、アナログスティック１５を上部領域に設けたことにより、下側ハウジング１１を把持する左手の親指が自然と位置するところにアナログスティック１５が配され、十字ボタン１４Ａは、左手の親指を少し下にずらした位置に配される。アナログスティック１５は、そのキートップが、下側ハウジング１１の内側面に平行にスライドするように構成されている。アナログスティック１５は、ゲーム装置１０が実行するプログラムに応じて機能する。例えば、３次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置１０によって実行される場合、アナログスティック１５は、当該所定のオブジェクトを３次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティック１５のキートップがスライドした方向に移動される。なお、アナログスティック１５として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【００４０】
十字状に配置される、ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅの４つのボタンは、下側ハウジング１１を把持する右手の親指が自然と位置するところに配置される。また、これらの４つのボタンと、アナログスティック１５とは、下側ＬＣＤ１２を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの４つのボタンを使用して方向指示入力をすることも可能である。
【００４１】
また、下側ハウジング１１の内側面には、マイクロフォン用孔１８が設けられる。マイクロフォン用孔１８の下部には後述する音声入力装置としてのマイク（図６参照）が設けられ、当該マイクがゲーム装置１０の外部の音を検出する。
【００４２】
図３（ａ）は閉状態におけるゲーム装置１０の左側面図であり、図３（ｂ）は閉状態におけるゲーム装置１０の正面図であり、図３（ｃ）は閉状態におけるゲーム装置１０の右側面図であり、図３（ｄ）は閉状態におけるゲーム装置１０の背面図である。図３（ｂ）および（ｄ）に示されるように、下側ハウジング１１の上側面には、Ｌボタン１４ＧおよびＲボタン１４Ｈが設けられている。Ｌボタン１４Ｇは、下側ハウジング１１の上面の左端部に設けられ、Ｒボタン１４Ｈは、下側ハウジング１１の上面の右端部に設けられる。Ｌボタン１４ＧおよびＲボタン１４Ｈは、例えば、撮像部のシャッターボタン（撮影指示ボタン）として機能することができる。また、図３（ａ）に示されるように、下側ハウジング１１の左側面には、音量ボタン１４Ｉが設けられる。音量ボタン１４Ｉは、ゲーム装置１０が備えるスピーカの音量を調整するために用いられる。
【００４３】
図３（ａ）に示されるように、下側ハウジング１１の左側面には開閉可能なカバー部１１Ｃが設けられる。このカバー部１１Ｃの内側には、ゲーム装置１０とデータ保存用外部メモリ４５とを電気的に接続するためのコネクタ（図示せず）が設けられる。データ保存用外部メモリ４５は、コネクタに着脱自在に装着される。データ保存用外部メモリ４５は、例えば、ゲーム装置１０によって撮像された画像のデータを記憶（保存）するために用いられる。なお、上記コネクタおよびそのカバー部１１Ｃは、下側ハウジング１１の右側面に設けられてもよい。
【００４４】
また、図３（ｄ）に示されるように、下側ハウジング１１の上側面には、ゲーム装置１０とゲームプログラムを記録した外部メモリ４４を挿入するための挿入口１１Ｄが設けられ、その挿入口１１Ｄの内部には、外部メモリ４４と電気的に着脱自在に接続するためのコネクタ（図示せず）が設けられる。当該外部メモリ４４がゲーム装置１０に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタおよびその挿入口１１Ｄは、下側ハウジング１１の他の側面（例えば、右側面等）に設けられてもよい。
【００４５】
また、図１および図３（ｃ）に示されるように、下側ハウジング１１の下側面にはゲーム装置１０の電源のＯＮ／ＯＦＦ状況をユーザに通知する第１ＬＥＤ１６Ａ、下側ハウジング１１の右側面にはゲーム装置１０の無線通信の確立状況をユーザに通知する第２ＬＥＤ１６Ｂが設けられる。ゲーム装置１０は他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ１６Ｂは、無線通信が確立している場合に点灯する。ゲーム装置１０は、例えば、ＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。下側ハウジング１１の右側面には、この無線通信の機能を有効／無効にする無線スイッチ１９が設けられる（図３（ｃ）参照）。
【００４６】
なお、図示は省略するが、下側ハウジング１１には、ゲーム装置１０の電源となる充電式電池が収納され、下側ハウジング１１の側面（例えば、上側面）に設けられた端子を介して当該電池を充電することができる。
【００４７】
（上側ハウジングの説明）
次に、上側ハウジング２１の構成について説明する。図１〜図３に示すように、上側ハウジング２１には、上側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）２２、外側撮像部２３（外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂ）、内側撮像部２４、３Ｄ調整スイッチ２５、および、３Ｄインジケータ２６が設けられる。以下、これらの詳細について説明する。
【００４８】
図１に示すように、上側ＬＣＤ２２は上側ハウジング２１に収納される。上側ＬＣＤ２２は、横長形状であり、長辺方向が上側ハウジング２１の長辺方向に一致するように配置される。上側ＬＣＤ２２は上側ハウジング２１の中央に配置される。上側ＬＣＤ２２の画面の面積は、下側ＬＣＤ１２の画面の面積よりも大きく設定される。また、上側ＬＣＤ２２の画面は、下側ＬＣＤ１２の画面よりも横長に設定される。すなわち、上側ＬＣＤ２２の画面のアスペクト比における横幅の割合は、下側ＬＣＤ１２の画面のアスペクト比における横幅の割合よりも大きく設定される。
【００４９】
上側ＬＣＤ２２の画面は、上側ハウジング２１の内側面（主面）２１Ｂに設けられ、上側ハウジング２１に設けられた開口部から当該上側ＬＣＤ２２の画面が露出される。また、図２に示すように、上側ハウジング２１の内側面は、透明なスクリーンカバー２７によって覆われている。当該スクリーンカバー２７は、上側ＬＣＤ２２の画面を保護するとともに、上側ＬＣＤ２２と上側ハウジング２１の内側面と一体的にさせ、これにより統一感を持たせている。上側ＬＣＤ２２の画素数は、例えば、６４０ｄｏｔ×２００ｄｏｔ（横×縦）であってもよい。なお、本実施形態では上側ＬＣＤ２２は液晶表示装置であるとしたが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置などが利用されてもよい。また、上側ＬＣＤ２２として、任意の解像度の表示装置を利用することができる。
【００５０】
上側ＬＣＤ２２は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で（例えば、１列ずつ）横方向に交互に表示される方式の表示装置である。または、左目用画像と右目用画像とが時分割で交互に表示される方式の表示装置であってもよい。また、本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式（視差バリア方式）のものが用いられる。本実施形態では、上側ＬＣＤ２２はパララックスバリア方式のものとする。上側ＬＣＤ２２は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像（立体画像）を表示する。すなわち、上側ＬＣＤ２２は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像（立体視可能な画像）を表示することができる。また、上側ＬＣＤ２２は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる（上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである）。このように、上側ＬＣＤ２２は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する（平面視画像を表示する）平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する３Ｄ調整スイッチ２５によって行われる。
【００５１】
外側撮像部２３は、上側ハウジング２１の外側面（上側ＬＣＤ２２が設けられた主面と反対側の背面）２１Ｄに設けられた２つの撮像部（２３ａおよび２３ｂ）の総称である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂの撮像方向は、いずれも当該外側面２１Ｄの外向きの法線方向である。また、これらの撮像部はいずれも、上側ＬＣＤ２２の表示面（内側面）の法線方向と１８０度反対の方向に設計される。すなわち、外側撮像部（左）２３ａの撮像方向および外側撮像部（右）２３ｂの撮像方向は、平行である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂとは、ゲーム装置１０が実行するプログラムによって、ステレオカメラとして使用することが可能である。また、プログラムによっては、２つの外側撮像部（２３ａおよび２３ｂ）のいずれか一方を単独で用いて、外側撮像部２３を非ステレオカメラとして使用することも可能である。また、プログラムによっては、２つの外側撮像部（２３ａおよび２３ｂ）で撮像した画像を合成してまたは補完的に使用することにより撮像範囲を広げた撮像をおこなうことも可能である。本実施形態では、外側撮像部２３は、外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂの２つの撮像部で構成される。外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂは、それぞれ所定の共通の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【００５２】
図１の破線および図３（ｂ）の実線で示されるように、外側撮像部２３を構成する外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂは、上側ＬＣＤ２２の画面の横方向と平行に並べられて配置される。すなわち、２つの撮像部を結んだ直線が上側ＬＣＤ２２の画面の横方向と平行になるように、外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂが配置される。図１の破線で示す２３ａおよび２３ｂは、上側ハウジング２１の内側面とは反対側の外側面に存在する外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂをそれぞれ表している。図１に示すように、ユーザが上側ＬＣＤ２２の画面を正面から視認した場合に、外側撮像部（左）２３ａは左側に外側撮像部（右）２３ｂは右側にそれぞれ位置している。外側撮像部２３をステレオカメラとして機能させるプログラムが実行されている場合、外側撮像部（左）２３ａは、ユーザの左目で視認される左目用画像を撮像し、外側撮像部（右）２３ｂは、ユーザの右目で視認される右目用画像を撮像する。外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂの間隔は、人間の両目の間隔程度に設定され、例えば、３０ｍｍ〜７０ｍｍの範囲で設定されてもよい。なお、外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂの間隔は、この範囲に限らない。
【００５３】
なお、本実施例においては、外側撮像部（左）２３ａおよび外側撮像部（右）２３はハウジングに固定されており、撮像方向を変更することはできない。
【００５４】
また、外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂは、上側ＬＣＤ２２（上側ハウジング２１）の左右方向に関して中央から対称となる位置にそれぞれ配置される。すなわち、外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂは、上側ＬＣＤ２２を左右に２等分する線に対して対称の位置にそれぞれ配置される。また、外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂは、上側ハウジング２１を開いた状態において、上側ハウジング２１の上部であって、上側ＬＣＤ２２の画面の上端よりも上方の位置の裏側に配置される。すなわち、外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂは、上側ハウジング２１の外側面であって、上側ＬＣＤ２２を外側面に投影した場合、投影した上側ＬＣＤ２２の画面の上端よりも上方に配置される。
【００５５】
このように、外側撮像部２３の２つの撮像部（２３ａおよび２３ｂ）が、上側ＬＣＤ２２の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側ＬＣＤ２２を正視した場合に、外側撮像部２３の撮像方向をユーザの視線方向と一致させることができる。また、外側撮像部２３は、上側ＬＣＤ２２の画面の上端より上方の裏側の位置に配置されるため、外側撮像部２３と上側ＬＣＤ２２とが上側ハウジング２１の内部で干渉することがない。従って、外側撮像部２３を上側ＬＣＤ２２の画面の裏側に配置する場合と比べて、上側ハウジング２１を薄く構成することが可能となる。
【００５６】
内側撮像部２４は、上側ハウジング２１の内側面（主面）２１Ｂに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部２４は、所定の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【００５７】
図１に示すように、内側撮像部２４は、上側ハウジング２１を開いた状態において、上側ハウジング２１の上部であって、上側ＬＣＤ２２の画面の上端よりも上方に配置され、上側ハウジング２１の左右方向に関して中央の位置（上側ハウジング２１（上側ＬＣＤ２２の画面）を左右に２等分する線の線上）に配置される。具体的には、図１および図３（ｂ）に示されるように、内側撮像部２４は、上側ハウジング２１の内側面であって、外側撮像部２３の左右の撮像部（外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂ）の中間の裏側の位置に配置される。すなわち、上側ハウジング２１の外側面に設けられた外側撮像部２３の左右の撮像部を上側ハウジング２１の内側面に投影した場合、当該投影した左右の撮像部の中間に、内側撮像部２４が設けられる。図３（ｂ）で示される破線２４は、上側ハウジング２１の内側面に存在する内側撮像部２４を表している。
【００５８】
このように、内側撮像部２４は、外側撮像部２３とは反対方向を撮像する。内側撮像部２４は、上側ハウジング２１の内側面であって、外側撮像部２３の左右の撮像部の中間位置の裏側に設けられる。これにより、ユーザが上側ＬＣＤ２２を正視した際、内側撮像部２４でユーザの顔を正面から撮像することができる。また、外側撮像部２３の左右の撮像部と内側撮像部２４とが上側ハウジング２１の内部で干渉することがないため、上側ハウジング２１を薄く構成することが可能となる。
【００５９】
３Ｄ調整スイッチ２５は、スライドスイッチであり、上述のように上側ＬＣＤ２２の表示モードを切り替えるために用いられるスイッチである。また、３Ｄ調整スイッチ２５は、上側ＬＣＤ２２に表示された立体視可能な画像（立体画像）の立体感を調整するために用いられる。図１〜図３に示されるように、３Ｄ調整スイッチ２５は、上側ハウジング２１の内側面および右側面の端部に設けられ、ユーザが上側ＬＣＤ２２を正視した場合に、当該３Ｄ調整スイッチ２５を視認できる位置に設けられる。また、３Ｄ調整スイッチ２５の操作部は、内側面および右側面の両方に突出しており、どちらからも視認および操作することができる。なお、３Ｄ調整スイッチ２５以外のスイッチは全て下側ハウジング１１に設けられる。
【００６０】
図４は、図１に示す上側ハウジング２１のＡ−Ａ’線断面図である。図４に示すように、上側ハウジング２１の内側面の右端部には、凹部２１Ｃが形成され、当該凹部２１Ｃに３Ｄ調整スイッチ２５が設けられる。３Ｄ調整スイッチ２５は、図１および図２に示されるように、上側ハウジング２１の正面および右側面から視認可能に配置される。３Ｄ調整スイッチ２５のスライダ２５ａは、所定方向（上下方向）の任意の位置にスライド可能であり、当該スライダ２５ａの位置に応じて上側ＬＣＤ２２の表示モードが設定される。
【００６１】
図５Ａから図５Ｃは、３Ｄ調整スイッチ２５のスライダ２５ａがスライドする様子を示す図である。図５Ａは、３Ｄ調整スイッチ２５のスライダ２５ａが最下点（第３の位置）に存在する様子を示す図である。図５Ｂは、３Ｄ調整スイッチ２５のスライダ２５ａが最下点よりも上方位置（第１の位置）に存在する様子を示す図である。図５Ｃは、３Ｄ調整スイッチ２５のスライダ２５ａが最上点（第２の位置）に存在する様子を示す図である。
【００６２】
図５Ａに示すように、３Ｄ調整スイッチ２５のスライダ２５ａが最下点位置（第３の位置）に存在する場合、上側ＬＣＤ２２は平面表示モードに設定され、上側ＬＣＤ２２の画面には平面画像が表示される（なお、上側ＬＣＤ２２を立体表示モードのままとして、左目用画像と右目用画像を同一の画像とすることにより平面表示してもよい）。一方、図５Ｂに示す位置（最下点より上側の位置（第１の位置））から図５Ｃに示す位置（最上点の位置（第２の位置））までの間にスライダ２５ａが存在する場合、上側ＬＣＤ２２は立体表示モードに設定される。この場合、上側ＬＣＤ２２の画面には立体視可能な画像が表示される。スライダ２５ａが第１の位置から第２の位置の間に存在する場合、スライダ２５ａの位置に応じて、立体画像の見え方が調整される。具体的には、スライダ２５ａの位置に応じて、右目用画像および左目用画像の横方向の位置のずれ量が調整される。３Ｄ調整スイッチ２５のスライダ２５ａは、第３の位置で固定されるように構成されており、第１の位置と第２の位置との間では上下方向に任意の位置にスライド可能に構成されている。例えば、スライダ２５ａは、第３の位置において、３Ｄ調整スイッチ２５を形成する側面から図５Ａに示す横方向に突出した凸部（図示せず）によって固定されて、所定以上の力が上方に加わらないと第３の位置よりも上方にスライドしないように構成されている。第３の位置から第１の位置にスライダ２５ａが存在する場合、立体画像の見え方は調整されないが、これはいわゆるあそびである。他の例においては、あそびをなくして、第３の位置と第１の位置とを同じ位置としてもよい。また、第３の位置を第１の位置と第２の位置の間としてもよい。その場合、スライダを第３の位置から第１の位置の方向に動かした場合と、第２の方向に動かした場合とで、右目用画像および左目用画像の横方向の位置のずれ量の調整する方向が逆になる。
【００６３】
３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードか否かを示す。３Ｄインジケータ２６は、ＬＥＤであり、上側ＬＣＤ２２の立体表示モードが有効の場合に点灯する。なお、３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているとき（すなわち、３Ｄ調整スイッチが上記第１の位置から上記第２の位置にあるときに、左目用画像と右目用画像が異なるような画像処理が実行されているとき）に限り、点灯するようにしてもよい。図１に示されるように、３Ｄインジケータ２６は、上側ハウジング２１の内側面に設けられ、上側ＬＣＤ２２の画面近傍に設けられる。このため、ユーザが上側ＬＣＤ２２の画面を正視した場合、ユーザは３Ｄインジケータ２６を視認しやすい。従って、ユーザは上側ＬＣＤ２２の画面を視認している状態でも、上側ＬＣＤ２２の表示モードを容易に認識することができる。
【００６４】
また、上側ハウジング２１の内側面には、スピーカ孔２１Ｅが設けられる。後述するスピーカ４３からの音声がこのスピーカ孔２１Ｅから出力される。
【００６５】
（ゲーム装置１０の内部構成）
次に、図６を参照して、ゲーム装置１０の内部の電気的構成について説明する。図６は、ゲーム装置１０の内部構成を示すブロック図である。図６に示すように、ゲーム装置１０は、上述した各部に加えて、情報処理部３１、メインメモリ３２、外部メモリインターフェイス（外部メモリＩ／Ｆ）３３、データ保存用外部メモリＩ／Ｆ３４、データ保存用内部メモリ３５、無線通信モジュール３６、ローカル通信モジュール３７、リアルタイムクロック（ＲＴＣ）３８、加速度センサ３９、電源回路４０、およびインターフェイス回路（Ｉ／Ｆ回路）４１等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング１１（または上側ハウジング２１でもよい）内に収納される。
【００６６】
情報処理部３１は、所定のプログラムを実行するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１、画像処理を行うＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１２等を含む情報処理手段である。情報処理部３１のＣＰＵ３１１は、ゲーム装置１０内のメモリ（例えば外部メモリＩ／Ｆ３３に接続された外部メモリ４４やデータ保存用内部メモリ３５）に記憶されているプログラムを実行することによって、当該プログラムに応じた処理（例えば、撮影処理や、後述する画像表示処理）を実行する。なお、情報処理部３１のＣＰＵ３１１によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部３１は、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３１３を含む。情報処理部３１のＧＰＵ３１２は、情報処理部３１のＣＰＵ３１１からの命令に応じて画像を生成し、ＶＲＡＭ３１３に描画する。そして、情報処理部３１のＧＰＵ３１２は、ＶＲＡＭ３１３に描画された画像を上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に出力し、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に当該画像が表示される。
【００６７】
情報処理部３１には、メインメモリ３２、外部メモリＩ／Ｆ３３、データ保存用外部メモリＩ／Ｆ３４、および、データ保存用内部メモリ３５が接続される。外部メモリＩ／Ｆ３３は、外部メモリ４４を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリＩ／Ｆ３４は、データ保存用外部メモリ４５を着脱自在に接続するためのインターフェイスである。
【００６８】
メインメモリ３２は、情報処理部３１（のＣＰＵ３１１）のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ３２は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部（外部メモリ４４や他の機器等）から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ３２として例えばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。
【００６９】
外部メモリ４４は、情報処理部３１によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ４４は、例えば読み取り専用の半導体メモリで構成される。外部メモリ４４が外部メモリＩ／Ｆ３３に接続されると、情報処理部３１は外部メモリ４４に記憶されたプログラムを読み込むことができる。情報処理部３１が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ４５は、不揮発性の読み書き可能なメモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ４５には、外側撮像部２３で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ４５がデータ保存用外部メモリＩ／Ｆ３４に接続されると、情報処理部３１はデータ保存用外部メモリ４５に記憶された画像を読み込み、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に当該画像を表示することができる。
【００７０】
データ保存用内部メモリ３５は、読み書き可能な不揮発性メモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ３５には、無線通信モジュール３６を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【００７１】
無線通信モジュール３６は、例えばＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール３７は、所定の通信方式（例えば赤外線通信）により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール３６およびローカル通信モジュール３７は情報処理部３１に接続される。情報処理部３１は、無線通信モジュール３６を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール３７を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００７２】
また、情報処理部３１には、加速度センサ３９が接続される。加速度センサ３９は、３軸（ｘｙｚ軸）方向に沿った直線方向の加速度（直線加速度）の大きさを検出する。加速度センサ３９は、下側ハウジング１１の内部に設けられる。加速度センサ３９は、図１に示すように、下側ハウジング１１の長辺方向をｘ軸、下側ハウジング１１の短辺方向をｙ軸、下側ハウジング１１の内側面（主面）に対して垂直な方向をｚ軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサ３９は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ３９は１軸又は２軸方向を検出する加速度センサであってもよい。情報処理部３１は、加速度センサ３９が検出した加速度を示すデータ（加速度データ）を受信して、ゲーム装置１０の姿勢や動きを検出することができる。
【００７３】
また、情報処理部３１には、ＲＴＣ３８および電源回路４０が接続される。ＲＴＣ３８は、時間をカウントして情報処理部３１に出力する。情報処理部３１は、ＲＴＣ３８によって計時された時間に基づき現在時刻（日付）を計算する。電源回路４０は、ゲーム装置１０が有する電源（下側ハウジング１１に収納される上記充電式電池）からの電力を制御し、ゲーム装置１０の各部品に電力を供給する。
【００７４】
また、情報処理部３１には、Ｉ／Ｆ回路４１が接続される。Ｉ／Ｆ回路４１には、マイク４２およびスピーカ４３が接続される。具体的には、Ｉ／Ｆ回路４１には、図示しないアンプを介してスピーカ４３が接続される。マイク４２は、ユーザの音声を検知して音声信号をＩ／Ｆ回路４１に出力する。アンプは、Ｉ／Ｆ回路４１からの音声信号を増幅し、音声をスピーカ４３から出力させる。また、タッチパネル１３はＩ／Ｆ回路４１に接続される。Ｉ／Ｆ回路４１は、マイク４２およびスピーカ４３（アンプ）の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部３１に出力する。タッチ位置データは、タッチパネル１３の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル１３からの信号の読み込み、および、タッチ位置データの生成を所定時間に１回の割合で行う。情報処理部３１は、タッチ位置データを取得することにより、タッチパネル１３に対して入力が行われた位置を知ることができる。
【００７５】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｌからなり、情報処理部３１に接続される。操作ボタン１４から情報処理部３１へは、各操作ボタン１４Ａ〜１４Ｉに対する入力状況（押下されたか否か）を示す操作データが出力される。情報処理部３１は、操作ボタン１４から操作データを取得することによって、操作ボタン１４に対する入力に従った処理を実行する。
【００７６】
下側ＬＣＤ１２および上側ＬＣＤ２２は情報処理部３１に接続される。下側ＬＣＤ１２および上側ＬＣＤ２２は、情報処理部３１（のＧＰＵ３１２）の指示に従って画像を表示する。本実施形態では、情報処理部３１は、上側ＬＣＤ２２に立体画像（立体視可能な画像）を表示させる。
【００７７】
具体的には、情報処理部３１は、上側ＬＣＤ２２のＬＣＤコントローラ（図示せず）と接続され、当該ＬＣＤコントローラに対して視差バリアのＯＮ／ＯＦＦを制御する。上側ＬＣＤ２２の視差バリアがＯＮになっている場合、情報処理部３１のＶＲＡＭ３１３に格納された右目用画像と左目用画像とが、上側ＬＣＤ２２に出力される。より具体的には、ＬＣＤコントローラは、右目用画像について縦方向に１ライン分の画素データを読み出す処理と、左目用画像について縦方向に１ライン分の画素データを読み出す処理とを交互に繰り返すことによって、ＶＲＡＭ３１３から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に１ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側ＬＣＤ２２の画面に表示される。そして、上側ＬＣＤ２２の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側ＬＣＤ２２の画面には立体視可能な画像が表示される。
【００７８】
外側撮像部２３および内側撮像部２４は、情報処理部３１に接続される。外側撮像部２３および内側撮像部２４は、情報処理部３１の指示に従って画像を撮像し、撮像した画像データを情報処理部３１に出力する。
【００７９】
３Ｄ調整スイッチ２５は、情報処理部３１に接続される。３Ｄ調整スイッチ２５は、スライダ２５ａの位置に応じた電気信号を情報処理部３１に送信する。
【００８０】
また、３Ｄインジケータ２６は、情報処理部３１に接続される。情報処理部３１は、３Ｄインジケータ２６の点灯を制御する。例えば、情報処理部３１は、上側ＬＣＤ２２が立体表示モードである場合、３Ｄインジケータ２６を点灯させる。以上がゲーム装置１０の内部構成の説明である。
【００８１】
（ゲーム装置１０の動作の概要）
以下、本実施形態におけるゲーム装置１０の動作の概要について説明する。本実施形態では、画像表示プログラムに基づいて、外側撮像部２３（外側撮像部（左）２３ａ、外側撮像部（右）２３ｂ）によって現在撮像されている実世界の画像と、３次元の仮想空間に存在する仮想オブジェクトの画像とを合成した合成画像が、上側ＬＣＤ２２の画面に立体視可能に表示される。
【００８２】
図７は、外側撮像部２３によってマーカー６０が撮像されているときに上側ＬＣＤ２２の画面に表示される立体画像の一例を示している。マーカー６０には、矢印を含む正方形が描かれており、ＣＰＵ３１１は、外側撮像部２３から取得される画像（実世界画像）に対して例えばパターンマッチング等の画像処理を行うことによって、当該画像にマーカーが含まれているか否かを判定することができる。外側撮像部２３によってマーカー６０が撮像されているときには、上側ＬＣＤ２２には、マーカー６０の上にドラゴンを模した仮想オブジェクト（以下、ドラゴンオブジェクトとも称す）６１が立体視可能に表示される。上側ＬＣＤ２２には、ドラゴンオブジェクト６１の他にも、ドラゴンが吐いた炎を模した仮想オブジェクト（以下、炎オブジェクトとも称す）６２や、ユーザからの発射指示（例えば、Ｌボタン１４ＧまたはＲボタン１４Ｈの押下）に応じて発射される弾を模した仮想オブジェクト（以下、弾オブジェクトとも称す）６３などが立体視可能に表示される。
【００８３】
なお、ユーザーがゲーム装置１０を移動させることによって、上側ＬＣＤ２２の画面に表示されるマーカー６０の位置および向きが変化すると、それに応じて、仮想オブジェクト６１〜６３の位置および向きが変化する。よって、ユーザーには仮想オブジェクト６１〜６３があたかも実世界に本当に存在しているかのように見える。
【００８４】
以下、図８〜図３３を参照して、ゲーム装置１０において画像表示プログラムに基づいて実行される画像表示処理の詳細について説明する。
【００８５】
（メモリマップ）
まず、画像表示プログラムの実行中にメインメモリ３２に記憶される主なデータについて説明する。図８は、ゲーム装置１０のメインメモリ３２のメモリマップを示す図である。図８に示されるように、メインメモリ３２には、画像表示プログラム７０、左実世界画像７１Ｌ、右実世界画像７１Ｒ、左ビュー行列７２Ｌ、右ビュー行列７２Ｒ、仮想オブジェクト情報７３、各種変数７４等が記憶される。
【００８６】
画像表示プログラム７０は、ＣＰＵ３１１に上記画像表示処理を実行させるためのプログラムである。
【００８７】
左実世界画像７１Ｌは、外側撮像部（左）２３ａによって撮像された画像である。
【００８８】
右実世界画像７１Ｒは、外側撮像部（右）２３ｂによって撮像された画像である。
【００８９】
左ビュー行列７２Ｌは、左仮想カメラから見た仮想オブジェクトを描画する際に用いられる行列であり、マーカー座標系で表された座標を左仮想カメラ座標系で表された座標へと変換するための座標変換行列である。
【００９０】
右ビュー行列７２Ｒは、右仮想カメラから見た仮想オブジェクトを描画する際に用いられる行列であり、マーカー座標系で表された座標を右仮想カメラ座標系で表された座標へと変換するための座標変換行列である。
【００９１】
仮想オブジェクト情報７３は、仮想オブジェクトに関連する情報であって、仮想オブジェクトの形状や模様を表すモデル情報や、仮想空間における仮想オブジェクトの現在位置などを含む。
【００９２】
各種変数７４は、画像表示プログラム７０の実行の際に用いられる変数であって、後述するオフセットＯｓなどを含む。
【００９３】
ゲーム装置１０の電源が投入されると、ゲーム装置１０の情報処理部３１（ＣＰＵ３１１）は、図示しないＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３２等の各ユニットが初期化される。次に、データ保存用内部メモリ３５に記憶された画像表示プログラムがメインメモリ３２に読み込まれ、情報処理部３１のＣＰＵ３１１によって当該画像表示プログラムの実行が開始される。
【００９４】
以下、図９〜図１２のフローチャートを参照して、画像表示プログラムに基づいて実行される処理の流れを説明する。なお、図９〜図１２のフローチャートは、単なる一例に過ぎない。したがって、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、図９〜図１２のフローチャートの全てのステップの処理をＣＰＵ３１１が実行するものとして説明するが、図９〜図１２のフローチャートの一部のステップの処理を、ＣＰＵ３１１以外のプロセッサや専用回路が実行するようにしてもよい。
【００９５】
（メイン処理）
図９は、画像表示プログラム７０に基づいてＣＰＵ３１１によって実行されるメイン処理の流れを示すフローチャートである。以下、メイン処理の詳細について説明する。
【００９６】
図９のステップＳ１０において、ＣＰＵ３１１は、マーカー認識処理を行う。以下、マーカー認識処理の概要について説明する。
【００９７】
前述のように、上側ハウジング２１において、外側撮像部（左）２３ａと外側撮像部（右）２３ｂは一定の間隔（例えば３．５ｃｍ）だけ離れている。したがって、外側撮像部（左）２３ａと外側撮像部（右）２３ｂによって同時にマーカー６０を撮像した場合、図１３に示すように、外側撮像部（左）２３ａによって撮像された左実世界画像におけるマーカー６０の位置及び姿勢と、外側撮像部（右）２３ｂによって撮像された右実世界画像におけるマーカー６０の位置及び姿勢との間には、視差によるズレが生じる。ＣＰＵ３１１は、左実世界画像および右実世界画像の少なくとも一方に対してマーカー認識処理を行う。
【００９８】
例えば、左実世界画像に対してマーカー認識処理を行う場合には、ＣＰＵ３１１は、パターンマッチング手法等によって左実世界画像にマーカー６０が含まれているか否かを判断し、左実世界画像にマーカー６０が含まれている場合には、左実世界画像におけるマーカー６０の位置および姿勢に基づいて、左ビュー行列７２Ｌを算出する。なお、左ビュー行列７２Ｌは、左実世界画像におけるマーカー６０の位置および姿勢に基づいて計算される左仮想カメラの位置および姿勢を反映した行列である。より正確には、図１４に示すように、仮想空間におけるマーカー座標系（実世界におけるマーカー６０の位置に対応する仮想空間内の所定点を原点とした座標系）で表された座標を、左実世界画像におけるマーカー６０の位置および姿勢に基づいて計算された左仮想カメラ６４Ｌ（実世界の外側撮像部（左）２３ａに対応する仮想空間内の仮想カメラ）の位置および姿勢を基準とした左仮想カメラ座標系で表される座標へと変換するための座標変換行列である。
【００９９】
また例えば、右実世界画像に対してマーカー認識処理を行う場合には、ＣＰＵ３１１は、パターンマッチング手法等によって右実世界画像にマーカー６０が含まれているか否かを判断し、右実世界画像にマーカー６０が含まれている場合には、右実世界画像におけるマーカー６０の位置および姿勢に基づいて、右ビュー行列７２Ｒを算出する。なお、右ビュー行列７２Ｒは、右実世界画像におけるマーカー６０の位置および姿勢に基づいて計算される右仮想カメラの位置および姿勢を反映した行列である。より正確には、図１５に示すように、仮想空間におけるマーカー座標系（実世界におけるマーカー６０の位置に対応する仮想空間内の所定点を原点とした座標系）で表された座標を、右実世界画像におけるマーカー６０の位置および姿勢に基づいて計算された右仮想カメラ６４Ｒ（実世界の外側撮像部（右）２３ｂに対応する仮想空間内の仮想カメラ）の位置および姿勢を基準とした右仮想カメラ座標系で表される座標へと変換するための座標変換行列である。
【０１００】
なお、マーカー認識精度に誤差が全く無く、かつゲーム装置１０に対する外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂの取り付け精度に誤差が全く無いと仮定すると、右実世界画像のマーカー認識結果から計算される右仮想カメラ６４Ｒの位置は、左実世界画像のマーカー認識結果から計算される左仮想カメラ６４Ｌの位置を、左仮想カメラ座標系のｘ軸方向に沿って一定距離だけずらした位置となり、右実世界画像のマーカー認識結果から計算される右仮想カメラ６４Ｒの姿勢と左実世界画像のマーカー認識結果から計算される左仮想カメラ６４Ｌの姿勢は同じとなる（すなわち、左仮想カメラ座標系のｘ軸，ｙ軸，ｚ軸が、右仮想カメラ座標系のｘ軸，ｙ軸，ｚ軸とそれぞれ平行となる）。しかしながら実際には、マーカー認識精度にも、ゲーム装置１０に対する外側撮像部（左）２３ａおよび外側撮像部（右）２３ｂの取り付け精度にも誤差があるため、左実世界画像のマーカー認識結果から計算される左仮想カメラ６４Ｌの位置及び姿勢と、右実世界画像のマーカー認識結果から計算される右仮想カメラ６４Ｒの位置及び姿勢は、理想的な関係にはならない（例えば、左仮想カメラ６４Ｌと右仮想カメラ６４Ｒが近すぎたり、離れすぎたり、左仮想カメラ６４Ｌの姿勢と右仮想カメラ６４Ｒの姿勢が異なったりする）。よって、このようにして計算された左仮想カメラ６４Ｌおよび右仮想カメラ６４Ｒの位置及び姿勢をそのまま用いて仮想オブジェクトを上側ＬＣＤ２２に立体表示する場合には、仮想オブジェクトが正常に立体視できないことがあり得る。そこで本実施形態では、一例として、図１６に示すように、左実世界画像のマーカー認識結果から計算される左仮想カメラ６４Ｌの位置及び姿勢に基づいて、右仮想カメラ６４Ｒの位置及び姿勢を決定している。
【０１０１】
ステップＳ１１において、ＣＰＵ３１１は、仮想空間におけるマーカー座標系の原点の奥行距離Ｄｍを計算する。この明細書において、「奥行距離」とは、仮想カメラ（左仮想カメラ６４Ｌ、または右仮想カメラ６４Ｒ、またはそれらの中間点）から見た深さ（撮影方向についての距離）を意味するものとする。また、現実世界のカメラについても、カメラから見た深さ（撮影方向についての距離）を奥行距離と呼ぶ。例えば、図１７に示すように、（０，０，０）に左ビュー行列７２Ｌを乗算した結果得られる座標（すなわち、左仮想カメラ座標系で表されたマーカー座標系の原点の座標）のＺ軸値を、マーカー座標系の原点の奥行距離Ｄｍとして決定する。
【０１０２】
ステップＳ１２において、ＣＰＵ３１１は、実世界画像描画処理を行う。以下、図１０のフローチャートを参照して、実世界画像描画処理の詳細を説明する。
【０１０３】
（実世界画像描画処理）
図１０のステップＳ２０において、ＣＰＵ３１１は、ステップＳ１１で計算したマーカー座標系の原点の奥行距離Ｄｍと、オフセットＯｓ（本実施形態では固定値（例えば５ｃｍ）とする）とに基づいて、左実世界画像の描画範囲を決定する。オフセットＯｓとは、ユーザから見て上側ＬＣＤ２２の画面よりもどれだけ奥にマーカー６０があるように見えるかを示す変数である。オフセットＯｓは、現実世界における単位（例えばｃｍ）で定義されていてもよいし、仮想空間（またはマーカー座標系）における単位で定義されていてもよい。
【０１０４】
具体的には、まず、図１８に示すように、ＣＰＵ３１１は、マーカー座標系の原点の奥行距離ＤｍからオフセットＯｓを減算することによって、実世界画像用の立体視基準距離を決定する。「立体視基準距離」とは、奥行距離であって、カメラからその撮影方向にその距離だけ離れた表示対象がユーザーから見て所定の奥行感（以下、奥行感Ａ）で見える距離であり、実世界画像用の立体視基準距離とは、現実世界において実カメラ（外側撮像部２３）からその撮影方向にその距離だけ離れた現実オブジェクトが奥行感Ａで見える距離である。また、仮想世界画像用の立体視基準距離とは、仮想世界において仮想カメラからその撮影方向にその距離だけ離れた仮想オブジェクトが奥行感Ａで見える距離である。本実施形態では、奥行感Ａは画面と同じ奥行感（上側ＬＣＤ２２の画面と同じ奥行にあるように見える）であり、すなわち、立体視基準距離にある現実オブジェクトや仮想オブジェクトは画面上での表示ズレ量が０である(左目用画像におけるそのオブジェクト画像と右目用画像におけるそのオブジェクト画像が画面において同じ位置に表示される）。本実施形態において、実世界画像用の立体視基準距離は一定であるが、仮想世界画像用の立体視基準距離は、仮想オブジェクトごとに設定される。より具体的には、奥行距離が異なる仮想オブジェクトには異なる立体視基準距離が設定される。
【０１０５】
次に、上記のようにして決定された立体視基準距離に基づいて、図１９に示すように、左実世界画像の描画範囲を決定する。すなわち、外側撮像部（左）２３ａと外側撮像部（右）２３ｂの中間点から立体視基準面（撮影方向に垂直な面であって、当該中間点から立体視基準距離だけ離れた面）に垂線を下ろしたときの交点を立体視基準点とし、左実世界画像における当該立体視基準点を中心とした所定範囲を、左実世界画像の描画範囲として決定する。言い換えると、立体視基準点が中心に表示されるように描画範囲を決定する（右実世界画像についても同様）。なお、立体視基準点は、２つの撮像部の中間点から、２つの撮像部を結ぶ線分に直交する直線上であって、当該中間点から立体基準距離だけ撮影方向に離れた点と特定することもできる。
【０１０６】
なお、後述するステップＳ２２において右実世界画像の描画範囲を決定するときには、図２０に示すように、右実世界画像における当該立体視基準点を中心とした所定範囲を、右実世界画像の描画範囲として決定する。これにより、上側ＬＣＤ２２に表示される左目用画像における立体視基準点の位置と右目用画像における立体視基準点の位置が、上側ＬＣＤ２２の画面上で一致することになり、ユーザから見て立体視基準点が上側ＬＣＤ２２の画面と同じ位置にあるように見える（すなわち、立体視基準点が画面の手前に見えたり画面の奥に見えたりすることがない）。立体視基準面上にある立体視基準点以外の点についても同様である。
【０１０７】
ステップＳ２１において、ＣＰＵ３１１は、左実世界画像におけるステップＳ２０で決定した描画範囲を、上側ＬＣＤ２２へ供給すべき左目用画像を一時的に記憶するためのＶＲＡＭ３１３内の所定の記憶領域（以下、左フレームバッファと称す）に描画する。
【０１０８】
ステップＳ２２において、ＣＰＵ３１１は、ステップＳ１１で計算したマーカー座標系の原点の奥行距離Ｄｍと、オフセットＯｓとに基づいて、右実世界画像の描画範囲を決定する。
【０１０９】
ステップＳ２３において、ＣＰＵ３１１は、右実世界画像におけるステップＳ２２で決定した描画範囲を、上側ＬＣＤ２２へ供給すべき右目用画像を一時的に記憶するためのＶＲＡＭ３１３内の所定の記憶領域（以下、右フレームバッファと称す）に描画する。
【０１１０】
上記のようにして右フレームバッファおよび左フレームバッファに描画された画像に基づいて上側ＬＣＤ２２に立体画像を表示すると、図２１に示すように、ユーザから見て上側ＬＣＤ２２の画面よりもオフセットＯｓ（例えば５ｃｍ）分だけ奥にマーカー６０があるように見える。
【０１１１】
上記のような実世界画像描画処理が終了すると、処理は図９のステップＳ１３に進む。
【０１１２】
図９のステップＳ１３において、ＣＰＵ３１１は、ゲーム処理を行う。以下、図１１のフローチャートを参照して、ゲーム処理の詳細を説明する。
【０１１３】
（ゲーム処理）
図１１のステップＳ３０において、ＣＰＵ３１１は、各仮想オブジェクト（ドラゴンオブジェクト６１、炎オブジェクト６２、弾オブジェクト６３）の位置（必要に応じて姿勢も）を更新する。例えば、ドラゴンオブジェクト６１から遠ざかるように炎オブジェクト６２の位置が更新され、仮想画面（仮想カメラから撮影方向に立体視基準の基礎距離だけ離れた面；この面に存在する仮想オブジェクトは画面と同じ奥行感で視認される）から遠ざかるように弾オブジェクト６３の位置が更新される。なお、本実施形態では、一例として、各仮想オブジェクトの位置は、マーカー座標系の座標で表されているものとする。
【０１１４】
ステップＳ３１において、ＣＰＵ３１１は、ドラゴンが炎を吐いたかどうかを判断し、炎を吐いた場合には処理はステップＳ３２に進み、そうでない場合には処理はステップＳ３３に進む。本実施形態では、例えば、ドラゴンが炎を吐いたかどうかを乱数に基づいて判断する。
【０１１５】
ステップＳ３２において、ＣＰＵ３１１は、仮想空間に炎オブジェクト６２を新たに追加する。すなわち、ドラゴンオブジェクト６１の近傍に、新たな炎オブジェクト６２が配置される。
【０１１６】
ステップＳ３３において、ＣＰＵ３１１は、弾が発射されたかどうかを判断し、発射された場合には処理はステップＳ３４に進み、そうでない場合には処理はステップＳ３５に進む。本実施形態では、例えば、ユーザによってＬボタン１４ＧまたはＲボタン１４Ｈが押されたときに、弾が発射されたと判断する。
【０１１７】
ステップＳ３４において、ＣＰＵ３１１は、仮想空間に弾オブジェクト６３を新たに追加する。すなわち、仮想画面の近傍に、新たな弾オブジェクト６３が配置される。
【０１１８】
ステップＳ３５において、ＣＰＵ３１１は、弾がドラゴンに命中したかどうかを判断し、命中した場合には処理はステップＳ３６に進み、そうでない場合には処理はステップＳ３７に進む。
【０１１９】
ステップＳ３６において、ＣＰＵ３１１は、ゲームスコアに所定の点数を加算する加点処理を行い、その後、処理はステップＳ３８に進む。
【０１２０】
ステップＳ３７において、ＣＰＵ３１１は、弾がドラゴンを逸れたかどうかを判断し、逸れた場合には処理はステップＳ３８に進み、そうでない場合には処理はステップＳ３９に進む。
【０１２１】
ステップＳ３８において、ＣＰＵ３１１は、仮想空間から弾オブジェクト６３を消去し、その後、処理はステップＳ３９に進む。
【０１２２】
ステップＳ３９において、ＣＰＵ３１１は、炎が仮想画面に命中したかどうかを判断し、命中した場合には処理はステップＳ４０に進み、そうでない場合には処理はステップＳ４１に進む。
【０１２３】
ステップＳ４０において、ＣＰＵ３１１は、ゲームスコアから所定の点数を減算する減点処理を行い、その後、処理はステップＳ４２に進む。
【０１２４】
ステップＳ４１において、ＣＰＵ３１１は、炎が仮想画面を逸れたかどうかを判断し、逸れた場合には処理はステップＳ４２に進み、そうでない場合にはゲーム処理を終了する。
【０１２５】
ステップＳ４２において、ＣＰＵ３１１は、仮想空間から炎オブジェクト６２を消去し、ゲーム処理を終了する。
【０１２６】
上記のようなゲーム処理が終了すると、処理は図９のステップＳ１４に進む。
【０１２７】
図９のステップＳ１４において、ＣＰＵ３１１は、仮想空間に配置されている１以上の仮想オブジェクトの中から１つの仮想オブジェクトを選択する。ここで選択された仮想オブジェクトを対象として、下記のステップＳ１５およびステップＳ１６の処理が行われることになる。ここでは、仮想空間において、ドラゴンオブジェクト６１、炎オブジェクト６２および弾オブジェクト６３が、図２２に示すような位置に配置されているものと仮定して、以下の説明を行う。
【０１２８】
ステップＳ１５において、ＣＰＵ３１１は、立体視基準距離決定処理を行う。なお、前述のとおり、立体視基準距離は仮想オブジェクトごとに決定される。立体視基準距離決定処理は、仮想オブジェクト毎に個別に立体視基準距離を決定する処理である。以下、図１２のフローチャートを参照して、立体視基準距離決定処理の詳細を説明する。
【０１２９】
（立体視基準距離決定処理）
図１２のステップＳ５０において、ＣＰＵ３１１は、仮想オブジェクト（図９のステップＳ１４で選択された仮想オブジェクト。以下同様。）の奥行距離Ｄｏを計算する。仮想オブジェクトの奥行距離Ｄｏは、仮想カメラ６４Ｌ，６４Ｒから撮像方向への仮想オブジェクトまでの距離である。例えば、仮想オブジェクトの現在位置を示す座標に左ビュー行列７２Ｌを乗算した結果得られる座標（すなわち、左仮想カメラ座標系で表されたマーカー座標系の原点の座標）のＺ軸値を、仮想オブジェクトの奥行距離Ｄｏとして決定する。
【０１３０】
ステップＳ５１において、ＣＰＵ３１１は、ステップＳ５０で計算された仮想オブジェクトの奥行距離Ｄｏが、立体視基準の基礎距離Ｄｓより大きいかどうかを判断し、大きい場合には処理はステップＳ５２に進み、そうでない場合には処理はステップＳ５４に進む。本実施形態では、仮想オブジェクトごとに立体視基準距離を設定するが、「立体視基準の基礎距離」とは、立体視基準距離を決めるための基礎的な距離であり、仮想オブジェクトの立体視基準距離は、仮想オブジェクトの奥行距離Ｄｏと立体視基準の基礎距離Ｄｓとの差により決定される。より具体的には、仮想オブジェクトの奥行距離Ｄｏと立体視基準の基礎距離Ｄｓが一致する場合は、その仮想オブジェクトについての立体視基準距離は立体視基準の基礎距離Ｄｓと一致し、その仮想オブジェクトは奥行感Ａで表示される。そして、仮想オブジェクトの奥行距離Ｄｓと立体視基準の基礎距離Ｄｓが離れるほど、その仮想オブジェクトについての立体視基準距離は立体視基準の基礎距離Ｄｓから仮想オブジェクトの奥行距離Ｄｏの方に近づく。これにより、仮想オブジェクトの奥行感の変化は、実際の奥行位置の変化よりも少なくすることができる。それゆえ、さまざまな奥行位置に仮想オブジェクトが存在する場合であっても、それらの仮想オブジェクトの奥行感の差を抑えることができて（すなわち、画面上での表示ずれ量の差を抑えることができて）、立体視が見やすい仮想画像を表示できる。なお、本実施形態では、仮想オブジェクトの奥行距離Ｄｏが立体視基準の基礎距離Ｄｓよりも仮想カメラ側になったときには、その仮想オブジェクトについての立体視基準距離は立体視基準の基礎距離Ｄｓと一致するように設定される。本実施形態では、立体視基準の基礎距離Ｄｓは固定値（例えばカメラ位置から撮影方向に４ｃｍの位置）とする。立体視基準の基礎距離Ｄｓは、現実世界における単位（例えばｃｍ）で定義されていてもよいし、仮想空間（またはマーカー座標系）における単位で定義されていてもよい。
【０１３１】
ステップＳ５２において、ＣＰＵ３１１は、立体視基準の基礎距離Ｄｓと、マーカー座標系の原点の奥行距離Ｄｍと、仮想オブジェクトの奥行距離Ｄｏとに基づいて、比率Ｒｐを計算する。当該比率Ｒｐは、図２２に示すように、立体視基準の基礎距離Ｄｓとマーカー座標系の原点の奥行距離Ｄｍとの差を「１」としたときの、立体視基準の基礎距離Ｄｓと各仮想オブジェクト（図２２の例では、弾オブジェクト６３）の奥行距離Ｄｏとの差を表すものであって、具体的には、下記の数式により計算される。
Ｒｐ＝（Ｄｏ−Ｄｓ）／（Ｄｍ−Ｄｓ）
【０１３２】
ステップＳ５３において、ＣＰＵ３１１は、ステップＳ５２で計算した比率Ｒｐに基づいて、立体視基準距離Ｆを計算する。具体的には、立体視基準距離Ｆは下記の数式により計算される。
Ｆ＝Ｄｏ−（Ｒｐ×Ｏｓ）
上記数式において、（Ｒｐ×Ｏｓ）の値は、立体視基準距離と仮想オブジェクトの奥行距離との差を表している。言い換えると、立体視基準面から仮想オブジェクトまでのカメラの撮影方向における距離を表している（これが奥行感に影響する）。したがって、（Ｒｐ×Ｏｓ）の値が０である場合には、当該仮想オブジェクトが上側ＬＣＤ２２に立体表示されたときに、ユーザから見て当該仮想オブジェクトが上側ＬＣＤ２２の画面と同じ位置にあるような奥行感で見える。また、（Ｒｐ×Ｏｓ）の値が大きくなるほど、ユーザから見て当該仮想オブジェクトが上側ＬＣＤ２２の画面からより奥に位置するように見える。これにより、マーカー座標系の原点の奥行距離ＤｍからオフセットＯｓを減算した奥行距離にある仮想オブジェクトは、画面から５ｃｍ奥の位置にあるような奥行感で表示される。
【０１３３】
ステップＳ５４において、ＣＰＵ３１１は、立体視基準距離Ｆを、立体視基準の基礎距離Ｄｓと同じ値に決定する。
【０１３４】
図２４の実線は、仮想オブジェクトの奥行距離Ｄｏと、ステップＳ５３またはステップＳ５４において決定される立体視基準距離Ｆとの対応関係を示している。
【０１３５】
上記のような立体視基準距離決定処理が終了すると、処理は図９のステップＳ１６に進む。
【０１３６】
図９のステップＳ１６において、ＣＰＵ３１１は、ステップＳ１５で決定された立体視基準距離に基づいて、仮想オブジェクト（ステップＳ１４で選択された仮想オブジェクト）を描画する。具体的には、ステップＳ１５で決定された立体視基準距離に基づいて、左フレームバッファに格納されている画像に左仮想カメラ６４Ｌから見た当該仮想オブジェクトの画像を上書きするとともに、右フレームバッファに格納されている画像に右仮想カメラ６４Ｒから見た当該仮想オブジェクトの画像を上書きする。
【０１３７】
図２５の斜線領域は、左仮想カメラ６４Ｌから見たドラゴンオブジェクト６１の画像を生成するときの描画範囲を示している。図２５に示すように、左仮想カメラ６４Ｌと右仮想カメラ６４Ｒの中間点からドラゴンオブジェクト用の立体視基準面に垂線を下ろしたときの交点を立体視基準点とし、左仮想カメラ６４Ｌから見て当該立体視基準点が中心に見えるような所定空間を、左仮想カメラ６４Ｌの描画範囲として決定する。当該描画範囲に応じた射影行列と、左ビュー行列７２Ｌとを用いて、左仮想カメラ６４Ｌから見たドラゴンオブジェクト６１の画像が生成される。右仮想カメラ６４Ｒから見たドラゴンオブジェクト６１の画像を生成するときも同様に、図２６に示すように、右仮想カメラ６４Ｒから見て上記立体視基準点が中心に見えるような所定空間を、右仮想カメラ６４Ｒの描画範囲として決定する。
【０１３８】
なお、上述の通り、仮想オブジェクトの奥行位置（奥行距離）に応じて、仮想カメラの射影行列は変更されるが、仮想カメラ間の距離（左仮想カメラと右仮想カメラの間の距離）は変更されない。それゆえ、仮想オブジェクトは奥行位置（奥行距離）に応じて奥行感は変わるが、その仮想オブジェクト自体の立体感は損なわれない。
【０１３９】
また、仮想オブジェクトの奥行位置（奥行距離）に応じて仮想カメラの位置を変更することもないので、仮想画像自体が違和感のある画像になることもない。
【０１４０】
図２７の斜線領域は、左仮想カメラ６４Ｌから見た弾オブジェクト６３の画像を生成するときの描画範囲を示している。図２７に示すように、左仮想カメラ６４Ｌと右仮想カメラ６４Ｒの中間点から弾オブジェクト用の立体視基準面に垂線を下ろしたときの交点を立体視基準点とし、左仮想カメラ６４Ｌから見て当該立体視基準点が中心に見えるような所定空間を、左仮想カメラ６４Ｌの描画範囲として決定する。
【０１４１】
ステップＳ１７において、ＣＰＵ３１１は、仮想空間に配置されている全ての仮想オブジェクト（ただし、左仮想カメラ６４Ｌおよび右仮想カメラ６４Ｒから見えない仮想オブジェクトは除く）が描画されたかどうかを判断し、全ての仮想オブジェクトが描画された場合には処理はステップＳ１８に進み、そうでない場合には処理はステップＳ１４に戻る。
【０１４２】
以上のような処理の結果、図１０のステップＳ２１で左フレームバッファに描画された左実世界画像と、図１０のステップＳ２３で右フレームバッファに描画された右実世界画像のそれぞれに対して、仮想空間内の各仮想オブジェクトが順次合成され（図２８参照）、その後、所定のタイミングで左目用画像及び右目用画像として上側ＬＣＤ２２に供給される。
【０１４３】
図２９は、仮想オブジェクト毎に個別に決定される立体視基準面（ドラゴンオブジェクト用の立体視基準面、炎オブジェクト用の立体視基準面、弾オブジェクト用の立体視基準面）を示している。本実施形態によれば、仮想オブジェクトの奥行位置が、マーカー座標系の原点から仮想画面（カメラから撮影方向に立体視基準の基礎距離だけ離れた面）により近づくほど、当該仮想オブジェクト用の立体視基準面が仮想カメラ６４Ｌ，６４Ｒにより近づくとともに、立体視基準面から仮想オブジェクトまでの奥行方向（カメラの撮影方向）の距離が小さくなる。これにより、ユーザから見て、仮想オブジェクトの立体形状はそのままで、仮想空間だけがあたかも奥行方向に縮んだかのように見える。図２９において、ドラゴンオブジェクト用の立体視基準面とドラゴンオブジェクト６１との間の奥行方向の距離は、オフセットＯｓである。そして、ドラゴンオブジェクト６１よりも仮想画面により近い仮想オブジェクトほど、当該仮想オブジェクト用の立体視基準面と当該仮想オブジェクトとの間の奥行方向の距離がより小さくなる。したがって、図３０に示すように、上側ＬＣＤ２２に立体表示される画像をユーザが見ると、画面からオフセットＯｓ（例えば５ｃｍ）だけ奥側にドラゴンオブジェクト６１が位置し、炎オブジェクト６２は、ドラゴンオブジェクト６１よりも少し手前に位置し、弾オブジェクト６３は、炎オブジェクト６２よりも少し手前に位置するように見える。
【０１４４】
（比較例）
ここで、本実施形態の効果をより分かりやすく示すために、いくつかの比較例を挙げ、その問題点を説明する。
【０１４５】
まず、第１の比較例として、仮想画面と同じ奥行位置に立体視基準距離を固定的に（すなわち、仮想オブジェクト毎に立体視基準距離を変えることなく）設定する場合について説明する。この場合、仮想画面からマーカー座標系の原点までの奥行距離（すなわち、実世界におけるゲーム装置１０からマーカー６０までの奥行距離）が遠いほど、上側ＬＣＤ２２に立体表示されるドラゴンオブジェクト６１の位置が、ユーザから見て遠ざかっていく（図３１参照）。したがって、仮想画面からマーカー座標系の原点までの奥行距離が大き過ぎる場合には、ユーザはドラゴンオブジェクト６１を立体視するために、上側ＬＣＤ２２の画面のかなり奥の方に左右の目の焦点を合わせる必要がある。しかしながら、立体視ディスプレイにおいて、画面からかなり離れた位置に左右の目の焦点を合わせることは熟練を要するため、多くのユーザにとって、ドラゴンオブジェクト６１を正常に立体視することができない状態となってしまう。これに対して、本実施形態では、ユーザには常に画面からオフセットＯｓ（例えば５ｃｍ）だけ奥側にドラゴンオブジェクト６１が位置しているように見えるため、ドラゴンオブジェクト６１を常に正常に立体視しやすい状態となる。
【０１４６】
次に、第２の比較例として、図３２に示すように、マーカー座標系の原点からオフセットＯｓ分だけ仮想画面に近づいた奥行位置に仮想画面を設定し、当該仮想画面と同じ位置に立体視基準距離を固定的に（すなわち、仮想オブジェクト毎に立体視基準距離を変えることなく）設定する場合について説明する。この場合、図３３に示すように、ユーザには常に画面からオフセットＯｓ（例えば５ｃｍ）だけ奥側にドラゴンオブジェクト６１が位置しているように見えるため、ドラゴンオブジェクト６１については常に正常に立体視しやすい状態となる。しかしながら、図３２において、弾オブジェクト６３は、仮想画面よりも仮想カメラ６４Ｌ，６４Ｒに近い位置にあるため、図３３に示すように、ユーザには、弾オブジェクト６３が画面の手前にあるように見える。そして、図３０に示す本実施形態の例と比較して、ユーザによって視認されるドラゴンオブジェクト６１の奥行位置と弾オブジェクト６３の奥行位置の差がかなり大きいため、例えば、ドラゴンオブジェクト６１および弾オブジェクト６３の一方から他方に左右の目の焦点を移動させるときに、焦点の移動距離が大きくなり、焦点を合わせにくいという問題がある。また、ゲーム処理において、炎オブジェクト６２が仮想画面に命中したときに前述の減点処理が行われるが、仮想画面からマーカー座標系の原点までの奥行距離（すなわち、実世界におけるゲーム装置１０からマーカー６０までの奥行距離）が遠いほど、仮想画面に命中する直前の炎オブジェクト６２の見た目の大きさが小さくなるため、ユーザにとっては、炎オブジェクト６２がまだ十分遠くに位置しているにも関わらず仮想画面に命中したような印象を受けるため、ユーザに違和感を与えてしまうという問題がある。これに対して、本実施形態では、仮想オブジェクト毎に立体視基準距離が個別に決定されるので、弾オブジェクト６３が画面の手前に見えてしまうことがなく、また、ドラゴンオブジェクト６１および弾オブジェクト６３の一方から他方に左右の目の焦点を移動させるときの焦点の移動距離も少ない。
【０１４７】
（本実施形態の効果）
以上のように、本実施形態によれば、仮想オブジェクト毎に立体視基準距離が個別に決定されるので、上側ＬＣＤ２２に仮想オブジェクトを立体視しやすく立体表示することができる。
【０１４８】
また、本実施形態によれば、オフセットＯｓが固定値であるため、マーカー座標系の原点と同じ奥行位置にある仮想オブジェクト（ドラゴンオブジェクト６１）が、ゲーム装置１０から見たマーカー６０の奥行距離に関係なく、ユーザから見て常に一定の奥行位置にあるように見える。よって、マーカー座標系の原点の付近に位置する仮想オブジェクトを常に見やすく立体表示することができる。
【０１４９】
また、本実施形態によれば、仮想画面と同じ奥行位置にある仮想オブジェクトが、ユーザから見て常に上側ＬＣＤ２２の画面と同じ奥行位置にあるように見える。よって、仮想画面の付近に位置する仮想オブジェクトを常に見やすく立体表示することができる。
【０１５０】
また、本実施形態によれば、仮想オブジェクトに対する仮想カメラ６４Ｌ，６４Ｒの相対的な奥行位置を仮想オブジェクト毎に変更して仮想オブジェクトを描画するのではなく、仮想オブジェクト毎に立体視基準距離（図２５〜図２７に示す左仮想カメラ６４Ｌと右仮想カメラ６４Ｒの立体視基準点）を変更して仮想オブジェクトを描画しているだけなので、正常な見た目となるように仮想オブジェクトを立体表示することができる。
【０１５１】
（変形例）
なお、上記実施形態では、仮想オブジェクト毎に立体視基準距離を決定しているが、図３４に示すように、仮想カメラ６４Ｌ，６４Ｒから見て奥行方向に長い仮想オブジェクトを立体表示する場合には、仮想カメラ６４Ｌ，６４Ｒから見て最も遠い部位も最も近い部位も同じ立体視基準距離に基づいて描画されるため、図３５に示すように、意図しない立体表示となってしまう。そこで、このような場合には、図３６に示すように、奥行方向に長い仮想オブジェクトを複数の仮想オブジェクト６１ａ〜６１ｈで構成することによって、奥行方向に長い仮想オブジェクトであっても図３７に示すように適切に立体表示することができる。
【０１５２】
また、上記実施形態では、オフセットＯｓを固定値（例えば５ｃｍ）としたが、他の実施形態では、例えばマーカー座標系の原点の奥行位置などに応じて、オフセットＯｓの値を変化させてもよい。マーカー座標系の原点の奥行位置に応じてオフセットＯｓの値を変化させる場合には、図３８に示すように、図９のステップＳ１１の後に、ＣＰＵ３１１がマーカー座標系の原点の奥行距離Ｄｍに応じてオフセットＯｓを決定する処理（ステップＳ６０）を追加すればよい。図３９は、マーカー座標系の原点の奥行距離Ｄｍに応じてオフセットＯｓを決定する際の、マーカー座標系の原点の奥行距離ＤｍとオフセットＯｓの対応関係の一例を示している。なお、図３９では、マーカー座標系の原点の奥行距離ＤｍとオフセットＯｓの関係が線形性をもつ関係となっているが、他の実施形態では、それらの関係が非線形であってもよい。
【０１５３】
また、上記実施形態では、図２４に示すように、仮想オブジェクトの奥行距離Ｄｏと立体視基準距離Ｆの関係が線形性をもつ関係となっているが、他の実施形態では、それらの関係が非線形であってもよい。
【０１５４】
また、上記実施形態では、図２４に示すように、仮想オブジェクトの奥行距離Ｄｏが立体視基準の基礎距離Ｄｓよりも小さいときに、立体視基準距離Ｆが一定となっているが、他の実施形態では、仮想オブジェクトの奥行距離Ｄｏが立体視基準の基礎距離Ｄｓよりも小さいときにおいても、仮想オブジェクトの奥行距離Ｄｏに応じて立体視基準距離Ｆを変化させてもよい。
【０１５５】
また、上記実施形態では、図１２のステップＳ５２で比率Ｒｐを計算し、この比率Ｒｐに基づいて立体視基準距離Ｆを計算しているが、他の実施形態では、比率Ｒｐを計算することなく直接的に立体視基準距離Ｆを計算してもよい。
【０１５６】
また、上記実施形態では、立体視基準の基礎距離Ｄｓおよびマーカー座標系の原点の奥行距離Ｄｍの２つの奥行位置に対する仮想オブジェクトの奥行距離Ｄｏの相対位置（例えば、比率Ｒｐ）に応じて、立体視基準距離Ｆを計算しているが、他の実施形態では、任意の１つまたは２つの所定の奥行位置に対する仮想オブジェクトの奥行距離Ｄｏの相対位置（例えば、比率Ｒｐ）に応じて、立体視基準距離Ｆを計算してもよい。
【０１５７】
また、上記実施形態では、仮想オブジェクト毎に決定された立体視基準距離に応じて左仮想カメラ６４Ｌおよび右仮想カメラ６４Ｒの描画範囲（射影行列と言い換えることもできる）を変更することによって、立体視基準距離に応じた立体画像を生成しているが、他の実施形態では、仮想オブジェクト毎に決定された立体視基準距離に応じて左仮想カメラ６４Ｌおよび右仮想カメラ６４Ｒの向きを変更することによって、立体視基準距離に応じた立体画像を生成してもよい。さらに他の実施形態では、仮想オブジェクト毎に決定された立体視基準距離に応じて左仮想カメラ６４Ｌおよび右仮想カメラ６４Ｒの間隔を変更することによって、立体視基準距離に応じた立体画像を生成してもよい。
【０１５８】
また、上記実施形態では、実世界画像に含まれるマーカー６０の位置及び姿勢を認識して、その認識結果に応じて実世界画像に仮想オブジェクトを合成しているが、他の実施形態では、マーカー６０に限らず、任意の認識対象の位置及び／又は姿勢を認識して、その認識結果に応じて実世界画像に仮想オブジェクトを合成してもよい。認識対象の一例として、人物の顔が挙げられる。
【０１５９】
また、上記実施形態では、外側撮像部２３によってリアルタイムに撮像される実世界画像に基づいて上側ＬＣＤ２２に立体画像を表示しているが、他の実施形態では、外側撮像部２３や外部のステレオカメラ等によって過去に撮像された動画像データに基づいて上側ＬＣＤ２２に立体画像を表示するようにしてもよい。
【０１６０】
また、上記実施形態では、外側撮像部２３がゲーム装置１０に予め搭載されているが、他の実施形態では、ゲーム装置１０に着脱可能な外付け型のカメラを利用してもよい。
【０１６１】
また、上記実施形態では、上側ＬＣＤ２２がゲーム装置１０に予め搭載されているが、他の実施形態では、ゲーム装置１０に着脱可能な外付け型の立体視ディスプレイを利用してもよい。
【０１６２】
また、上記実施形態では、マーカー座標系の原点の位置に特定の仮想オブジェクト（ドラゴンオブジェクト６１）を配置しているが、他の実施形態では、マーカー座標系の原点の位置に仮想オブジェクトを配置しなくてもよい。
【０１６３】
また、上記実施形態では、仮想空間に複数の仮想オブジェクトを配置しているが、他の実施形態では、仮想空間に仮想オブジェクトを１つだけ配置してもよい。
【０１６４】
また、上記実施形態では、実世界画像に対して仮想オブジェクトを合成した立体画像を上側ＬＣＤ２２に立体表示しているが、他の実施形態では、仮想オブジェクトだけを上側ＬＣＤ２２に立体表示するようにしてもよい。
【０１６５】
また、上記実施形態では、左実世界画像のマーカー認識結果から計算される左仮想カメラ６４Ｌの位置及び姿勢に基づいて、右仮想カメラ６４Ｒの位置及び姿勢を決定しているが、他の実施形態では、左実世界画像のマーカー認識結果から計算される左仮想カメラ６４Ｌの位置及び姿勢と、右実世界画像のマーカー認識結果から計算される右仮想カメラ６４Ｒの位置及び姿勢の一方または両方を考慮して、左仮想カメラ６４Ｌの位置及び姿勢と、右仮想カメラ６４Ｒの位置及び姿勢を決定するようにしてもよい。
【０１６６】
また、上記実施形態では、上側ＬＣＤ２２がパララックスバリア方式の立体表示装置であるが、他の実施形態では、上側ＬＣＤ２２がレンチキュラー方式等の他の任意の方式の立体表示装置であってもよい。例えば、レンチキュラー方式の立体表示装置を利用する場合には、左目用画像と右目用画像をＣＰＵ３１１または他のプロセッサで合成してから、当該合成画像をレンチキュラー方式の立体表示装置に供給するようにしてもよい。
【０１６７】
また、上記実施形態では、ゲーム装置１０を用いて実世界画像に仮想オブジェクトを合成表示しているが、他の実施形態では、任意の情報処理装置または情報処理システム（例えば、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、パーソナルコンピュータ、カメラ等）を用いて実世界画像に仮想オブジェクトを合成表示してもよい。
【０１６８】
また、上記実施形態では、上側ＬＣＤ２２にゲーム画像を立体表示しているが、他の実施形態では、ゲーム画像以外の任意の画像を立体表示してもよい。
【０１６９】
また、上記実施形態では、一台の情報処理装置（ゲーム装置１０）のみによって画像表示処理を実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置を有する画像表示システムにおいて、当該複数の情報処理装置が画像表示処理を分担して実行するようにしてもよい。
【符号の説明】
【０１７０】
１０  ゲーム装置
１１  下側ハウジング
１２  下側ＬＣＤ
１３  タッチパネル
１４  操作ボタン
１５  アナログスティック
１６  ＬＥＤ
２１  上側ハウジング
２２  上側ＬＣＤ
２３  外側撮像部
２３ａ  外側撮像部（左）
２３ｂ  外側撮像部（右）
２４  内側撮像部
２５  ３Ｄ調整スイッチ
２６  ３Ｄインジケータ
２８  タッチペン
３１  情報処理部
３１１  ＣＰＵ
３１２  ＧＰＵ
３２  メインメモリ
６０  マーカー
６１  仮想オブジェクト（ドラゴンオブジェクト）
６２  仮想オブジェクト（炎オブジェクト）
６３  仮想オブジェクト（弾オブジェクト）
６４Ｌ  左仮想カメラ
６４Ｒ  右仮想カメラ
【図１】
0005541974.tif 000002
【図２】
0005541974.tif 000003
【図３】
0005541974.tif 000004
【図４】
0005541974.tif 000005
【図５Ａ】
0005541974.tif 000006
【図５Ｂ】
0005541974.tif 000007
【図５Ｃ】
0005541974.tif 000008
【図６】
0005541974.tif 000009
【図７】
0005541974.tif 000010
【図８】
0005541974.tif 000011
【図９】
0005541974.tif 000012
【図１０】
0005541974.tif 000013
【図１１】
0005541974.tif 000014
【図１２】
0005541974.tif 000015
【図１３】
0005541974.tif 000016
【図１４】
0005541974.tif 000017
【図１５】
0005541974.tif 000018
【図１６】
0005541974.tif 000019
【図１７】
0005541974.tif 000020
【図１８】
0005541974.tif 000021
【図１９】
0005541974.tif 000022
【図２０】
0005541974.tif 000023
【図２１】
0005541974.tif 000024
【図２２】
0005541974.tif 000025
【図２３】
0005541974.tif 000026
【図２４】
0005541974.tif 000027
【図２５】
0005541974.tif 000028
【図２６】
0005541974.tif 000029
【図２７】
0005541974.tif 000030
【図２８】
0005541974.tif 000031
【図２９】
0005541974.tif 000032
【図３０】
0005541974.tif 000033
【図３１】
0005541974.tif 000034
【図３２】
0005541974.tif 000035
【図３３】
0005541974.tif 000036
【図３４】
0005541974.tif 000037
【図３５】
0005541974.tif 000038
【図３６】
0005541974.tif 000039
【図３７】
0005541974.tif 000040
【図３８】
0005541974.tif 000041
【図３９】
0005541974.tif 000042