説明

画像表示プログラム、装置、システムおよび方法

【課題】立体表示装置において、実世界画像に合成される仮想オブジェクトを、正常に立
体視可能に表示すること。
【解決手段】まず、左実世界画像のマーカー認識結果から計算される、マーカーに対する
外側撮像部(左)の相対位置及び相対姿勢と、右実世界画像のマーカー認識結果から計算
される、マーカーに対する外側撮像部(右)の相対位置及び相対姿勢とに基づいて、左仮
想カメラと右仮想カメラの間隔が決定される。左仮想カメラと右仮想カメラの間隔が決定
された後は、左仮想カメラの位置及び姿勢と右仮想カメラの位置及び姿勢が理想的な関係
となるように、上記決定された間隔に基づいて、左仮想カメラおよび右仮想カメラの位置
及び姿勢が決定される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像表示プログラム、装置、システムおよび方法に関し、特に、立体視可能
な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像を立体表示す
るための、画像表示プログラム、装置、システムおよび方法に関する。
【背景技術】
【0002】
近年、実世界の画像に仮想オブジェクトを合成表示することによって、その仮想オブジ
ェクトがあたかも実世界内に実在するかのように表示する、AR(Augmented Reality:
拡張現実感)技術の研究が進んでいる。
【0003】
例えば、特許文献1に開示されている立体表示装置では、ヘッドマウントディスプレイ
に取り付けられている右目カメラおよび左目カメラによってそれぞれ撮像された画像から
、実空間に配置されたマーカーに対する右目カメラおよび左目カメラの相対位置姿勢をそ
れぞれ求め、その結果に基づいて、右目用の仮想オブジェクトの画像と左目用の仮想オブ
ジェクトの画像をそれぞれ生成している。そして、右目カメラおよび左目カメラによって
それぞれ撮像された画像に対して、右目用の仮想オブジェクトの画像と左目用の仮想オブ
ジェクトの画像をそれぞれ合成して、それらの合成画像を右目LCD(液晶画面)と左目
LCDにそれぞれ表示している。
【0004】
また、非特許文献1には、カメラによって撮像された画像におけるマーカーの位置およ
び姿勢に基づいて、実世界におけるマーカーとカメラとの相対位置及び相対姿勢を計算す
る方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−146109号公報
【非特許文献】
【0006】
【非特許文献1】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
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、カメラによって撮像された画像におけるマーカーの位置および姿勢に基
づいて、実世界におけるマーカーとカメラとの相対位置及び相対姿勢を計算する場合、カ
メラによって撮像された画像がぼけている場合や、マーカー認識の精度が完璧でない場合
には、計算結果に誤差が含まれてしまうことになる。したがって、特許文献1に開示され
ている立体表示装置において、右目カメラによって撮像された画像に基づいて計算された
、マーカーに対する右目カメラの相対位置姿勢は、必ずしも正確ではなく、同様に、左目
カメラによって撮像された画像に基づいて計算された、マーカーに対する左目カメラの相
対位置姿勢も、必ずしも正確ではない。正確でない計算結果に基づいて生成された右目用
の仮想オブジェクトの画像と左目用の仮想オブジェクトの画像は、互いに整合しない矛盾
した画像となるため、ユーザは仮想オブジェクトを正常に立体視することができない。
【0008】
それ故、本発明の目的は、正常に立体視できるように仮想オブジェクトを表示すること
ができる、画像表示プログラム、装置、システムおよび方法を提供することである。
【課題を解決するための手段】
【0009】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【0010】
本発明の画像表示プログラムは、立体視可能な立体表示装置の画面に、3次元の仮想オ
ブジェクトを合成した実世界画像を立体表示する画像表示プログラムであって、コンピュ
ータを、第1実世界画像取得手段、第2実世界画像取得手段、カメラ相対位置関係算出手
段、仮想カメラ設定手段、第1仮想空間画像生成手段、第2仮想空間画像生成手段、およ
び表示制御手段として機能させる。第1実世界画像取得手段は、左目用の実カメラによっ
て撮像された第1実世界画像を取得する。第2実世界画像取得手段は、右目用の実カメラ
によって撮像された第2実世界画像を取得する。カメラ相対位置関係算出手段は、上記第
1実世界画像における所定の撮像対象の見え方と上記第2実世界画像における当該撮像対
象の見え方に基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を
算出する。仮想カメラ設定手段は、所定の仮想空間における左目用の画像を生成するため
の左仮想カメラの位置および右目用の画像を生成するための右仮想カメラの位置を、上記
カメラ相対位置関係算出手段によって算出された相対位置関係に応じて離れるように、そ
れぞれ決定する。第1仮想空間画像生成手段は、上記左仮想カメラから見た上記仮想空間
を示す第1仮想空間画像を生成する。第2仮想空間画像生成手段は、上記右仮想カメラか
ら見た上記仮想空間を示す第2仮想空間画像を生成する。表示制御手段は、上記第1実世
界画像に上記第1仮想空間画像を合成し、かつ、上記第2実世界画像に上記第2仮想空間
画像を合成して、上記立体表示装置に立体視のための画像出力を行う。
【0011】
上記構成によれば、上記2つの実カメラで撮像された実世界画像を用いて、これら2つ
の実カメラの相対位置関係を算出し、こうして算出した相対位置関係に基づいて仮想空間
における上記2つの仮想カメラの位置が決定される。よって、例えば、上記2つの実カメ
ラの相対位置関係が既知で無い場合や、上記2つの実カメラの取り付け精度の誤差がある
場合であっても、上記右仮想カメラと上記左仮想カメラの相対位置関係を適切に設定でき
、仮想オブジェクトを適切に立体表示することができる。
【0012】
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記第
1実世界画像における上記撮像対象の位置および姿勢に基づいて、上記左目用の実カメラ
と上記撮像対象との間の少なくとも相対位置を算出する第1位置姿勢算出手段、および、
上記第2実世界画像における上記撮像対象の位置および姿勢に基づいて、上記右目用の実
カメラと上記撮像対象との間の少なくとも相対位置を算出する第2位置姿勢算出手段とし
てさらに機能させ、上記カメラ相対位置関係算出手段は、上記第1位置姿勢算出手段によ
って算出される、上記撮像対象に対する上記左目用の実カメラの相対位置と、上記第2位
置姿勢算出手段によって算出される、上記撮像対象に対する上記右目用の実カメラの相対
位置とに基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算出
してもよい。
【0013】
他の好ましい構成例として、上記第1位置姿勢算出手段および上記第2位置姿勢算出手
段の少なくとも一方は、上記実世界画像における上記撮像対象の位置および姿勢に基づい
て、上記実カメラと上記撮像対象との間の相対位置に加えて相対姿勢を算出し、上記仮想
カメラ設定手段は、上記第1位置姿勢算出手段および上記第2位置姿勢算出手段の少なく
とも一方によって算出される上記実カメラと上記撮像対象との間の相対姿勢に基づいて、
上記左仮想カメラおよび上記右仮想カメラの姿勢を決定してもよい。
【0014】
他の好ましい構成例として、上記カメラ相対位置関係算出手段によって算出される上記
相対位置関係は、上記左目用の実カメラと上記右目用の実カメラの間隔であってもよい。
【0015】
他の好ましい構成例として、上記カメラ相対位置関係算出手段は、上記第1実世界画像
に基づいて算出される上記左目用の実カメラに対する上記撮像対象の相対位置と、上記第
2実世界画像に基づいて算出される上記右目用の実カメラに対する上記撮像対象の相対位
置との差に基づいて、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を算
出してもよい。
【0016】
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記第
1実世界画像に基づいて、上記撮像対象を基準とした座標系で表される座標を上記左目用
の実カメラを基準とした座標系で表される座標へと変換する第1変換行列を算出する第1
変換行列算出手段、および、上記第2実世界画像に基づいて、上記撮像対象を基準とした
座標系で表される座標を上記右目用の実カメラを基準とした座標系で表される座標へと変
換する第2変換行列を算出する第2変換行列算出手段としてさらに機能させ、上記カメラ
相対位置関係算出手段は、原点を表す3次元ベクトルに対して、上記第1変換行列と上記
第1変換行列のいずれか一方の変換行列を乗算し、さらに、いずれか他方の変換行列の逆
行列を乗算することによって、上記左目用の実カメラと上記右目用の実カメラの相対位置
関係を示す相対位置ベクトルを算出し、上記仮想カメラ設定手段は、上記相対位置ベクト
ルの大きさに基づいて上記左仮想カメラと上記右仮想カメラの間隔を設定してもよい。
【0017】
他の好ましい構成例として、上記仮想カメラ設定手段は、撮影方向が互いに平行になる
ように、上記左仮想カメラおよび上記右仮想カメラの姿勢を設定してもよい。
【0018】
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記カ
メラ相対位置関係算出手段によって算出された上記相対位置関係と、上記左目用の実カメ
ラと上記右目用の実カメラの設計上の相対位置関係とに基づいて、実世界のスケールに応
じた所定の処理を仮想空間において実行するスケール関連処理手段としてさらに機能させ
てもよい。
【0019】
上記構成例によれば、仮想空間において、実世界のスケールに対応した処理が可能とな
る。
【0020】
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記カ
メラ相対位置関係算出手段によって上記左目用の実カメラと上記右目用の実カメラの相対
位置関係が算出された後、当該相対位置関係が決定された時点から、上記左目用の実カメ
ラまたは上記右目用の実カメラに対する上記撮像対象の奥行距離が所定範囲を超えて変化
したか否かを判定する奥行変化判定手段としてさらに機能させ、上記カメラ相対位置関係
算出手段は、上記奥行変化判定手段の判定結果が否定である間は、上記左目用の実カメラ
と上記右目用の実カメラの相対位置関係を算出し直すことなく、直前に決定した相対位置
関係をそのまま維持してもよい。
【0021】
上記構成例によれば、上記左目用の実カメラと上記右目用の実カメラの相対位置関係を
常に更新する必要がなく、処理負荷を低減できる。
【0022】
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記カ
メラ相対位置関係算出手段によって上記左目用の実カメラと上記右目用の実カメラの相対
位置関係が算出された後、当該相対位置関係が決定された時点から、上記左目用の実カメ
ラまたは上記右目用の実カメラに対する上記撮像対象の奥行距離が所定範囲を超えて変化
したか否かを判定する奥行変化判定手段としてさらに機能させ、上記カメラ相対位置関係
算出手段は、上記奥行変化判定手段の判定結果が肯定である場合に、上記左目用の実カメ
ラと上記右目用の実カメラの相対位置関係を算出し直してもよい。
【0023】
上記構成例によれば、算出された上記左目用の実カメラと上記右目用の実カメラの相対
位置関係の信頼度の低下を防止することができる。
【0024】
他の好ましい構成例として、上記画像表示プログラムは、上記コンピュータを、上記撮
像対象が含まれている実世界画像に基づいて、上記左目用の実カメラまたは上記右目用の
実カメラに対する上記撮像対象の奥行距離を算出する奥行距離算出手段としてさらに機能
させ、上記奥行変化判定手段は、カメラ相対位置関係算出手段によって上記左目用の実カ
メラと上記右目用の実カメラの相対位置関係が算出された時点において上記奥行距離算出
手段によって算出された基準奥行距離と、その後に上記奥行距離算出手段によって算出さ
れた最新奥行距離とを比較することによって、上記左目用の実カメラまたは上記右目用の
実カメラに対する上記撮像対象の奥行距離が所定範囲を超えて変化したか否かを判定して
もよい。
【0025】
他の好ましい構成例として、上記奥行距離算出手段は、上記第1実世界画像取得手段ま
たは上記第2実世界画像取得手段によって新たな実世界画像が取得される度に、上記左目
用の実カメラまたは上記右目用の実カメラに対する上記撮像対象の奥行距離を算出する処
理を実行し、当該処理を複数回実行することによって得られた複数回分の奥行距離算出結
果に基づいて上記基準奥行距離を算出してもよい。
【0026】
上記構成によれば、算出される基準奥行距離の信頼度が向上する。
【0027】
他の好ましい構成例として、上記奥行距離算出手段は、上記複数回の奥行距離算出結果
が全て所定の範囲に収まっている場合にのみ、当該複数回の奥行距離算出結果に基づいて
上記基準奥行距離を算出してもよい。
【0028】
上記構成によれば、算出される基準奥行距離の信頼度が向上する。
【0029】
本発明の画像表示装置は、立体視可能な立体表示装置の画面に、3次元の仮想オブジェ
クトを合成した実世界画像を立体表示する画像表示装置であって、第1実世界画像取得手
段、第2実世界画像取得手段、カメラ相対位置関係算出手段、仮想カメラ設定手段、第1
仮想空間画像生成手段、第2仮想空間画像生成手段、および表示制御手段を備える。第1
実世界画像取得手段は、左目用の実カメラによって撮像された第1実世界画像を取得する
。第2実世界画像取得手段は、右目用の実カメラによって撮像された第2実世界画像を取
得する。カメラ相対位置関係算出手段は、上記第1実世界画像における所定の撮像対象の
見え方と上記第2実世界画像における当該撮像対象の見え方に基づいて、上記左目用の実
カメラと上記右目用の実カメラの相対位置関係を算出する。仮想カメラ設定手段は、所定
の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目用の画
像を生成するための右仮想カメラの位置を、上記カメラ相対位置関係算出手段によって算
出された相対位置関係に応じて離れるように、それぞれ決定する。第1仮想空間画像生成
手段は、上記左仮想カメラから見た上記仮想空間を示す第1仮想空間画像を生成する。第
2仮想空間画像生成手段は、上記右仮想カメラから見た上記仮想空間を示す第2仮想空間
画像を生成する。表示制御手段は、上記第1実世界画像に上記第1仮想空間画像を合成し
、かつ、上記第2実世界画像に上記第2仮想空間画像を合成して、上記立体表示装置に立
体視のための画像出力を行う。
【0030】
本発明の画像表示システムは、立体視可能な立体表示装置の画面に、3次元の仮想オブ
ジェクトを合成した実世界画像を立体表示する画像表示システムであって、第1実世界画
像取得手段、第2実世界画像取得手段、カメラ相対位置関係算出手段、仮想カメラ設定手
段、第1仮想空間画像生成手段、第2仮想空間画像生成手段、および表示制御手段を備え
る。第1実世界画像取得手段は、左目用の実カメラによって撮像された第1実世界画像を
取得する。第2実世界画像取得手段は、右目用の実カメラによって撮像された第2実世界
画像を取得する。カメラ相対位置関係算出手段は、上記第1実世界画像における所定の撮
像対象の見え方と上記第2実世界画像における当該撮像対象の見え方に基づいて、上記左
目用の実カメラと上記右目用の実カメラの相対位置関係を算出する。仮想カメラ設定手段
は、所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右
目用の画像を生成するための右仮想カメラの位置を、上記カメラ相対位置関係算出手段に
よって算出された相対位置関係に応じて離れるように、それぞれ決定する。第1仮想空間
画像生成手段は、上記左仮想カメラから見た上記仮想空間を示す第1仮想空間画像を生成
する。第2仮想空間画像生成手段は、上記右仮想カメラから見た上記仮想空間を示す第2
仮想空間画像を生成する。表示制御手段は、上記第1実世界画像に上記第1仮想空間画像
を合成し、かつ、上記第2実世界画像に上記第2仮想空間画像を合成して、上記立体表示
装置に立体視のための画像出力を行う。
【0031】
本発明の画像表示方法は、立体視可能な立体表示装置の画面に、3次元の仮想オブジェ
クトを合成した実世界画像を立体表示する画像表示方法であって、第1実世界画像取得ス
テップ、第2実世界画像取得ステップ、カメラ相対位置関係算出ステップ、仮想カメラ設
定ステップ、第1仮想空間画像生成ステップ、第2仮想空間画像生成ステップ、および表
示制御ステップを備える。第1実世界画像取得ステップでは、左目用の実カメラによって
撮像された第1実世界画像を取得する。第2実世界画像取得ステップでは、右目用の実カ
メラによって撮像された第2実世界画像を取得する。カメラ相対位置関係算出ステップで
は、上記第1実世界画像における所定の撮像対象の見え方と上記第2実世界画像における
当該撮像対象の見え方に基づいて、上記左目用の実カメラと上記右目用の実カメラの相対
位置関係を算出する。仮想カメラ設定ステップでは、所定の仮想空間における左目用の画
像を生成するための左仮想カメラの位置および右目用の画像を生成するための右仮想カメ
ラの位置を、上記カメラ相対位置関係算出ステップにおいて算出された相対位置関係に応
じて離れるように、それぞれ決定する。第1仮想空間画像生成ステップでは、上記左仮想
カメラから見た上記仮想空間を示す第1仮想空間画像を生成する。第2仮想空間画像生成
ステップでは、上記右仮想カメラから見た上記仮想空間を示す第2仮想空間画像を生成す
る。表示制御ステップでは、上記第1実世界画像に上記第1仮想空間画像を合成し、かつ
、上記第2実世界画像に上記第2仮想空間画像を合成して、上記立体表示装置に立体視の
ための画像出力を行う。
【発明の効果】
【0032】
本発明によれば、正常に立体視できるように仮想オブジェクトを表示することができる

【図面の簡単な説明】
【0033】
【図1】開状態におけるゲーム装置10の正面図
【図2】開状態におけるゲーム装置10の側面図
【図3】閉状態におけるゲーム装置10の左側面図、正面図、右側面図および背面図
【図4】図1に示す上側ハウジング21のA−A’線断面図
【図5A】3D調整スイッチ25のスライダ25aが最下点(第3の位置)に存在する様子を示す図
【図5B】3D調整スイッチ25のスライダ25aが最下点よりも上方位置(第1の位置)に存在する様子を示す図
【図5C】3D調整スイッチ25のスライダ25aが最上点(第2の位置)に存在する様子を示す図
【図6】ゲーム装置10の内部構成を示すブロック図
【図7】上側LCD22の画面に表示される立体画像の一例を示す図
【図8】上側LCD22の画面に表示される立体画像の他の一例を示す図
【図9】マーカー61を示す図
【図10】上側LCD22の画面に表示される立体画像のさらに他の一例を示す図
【図11】ゲーム装置10のメインメモリ32のメモリマップを示す図
【図12】メインメモリ32に格納される各種変数の一例を示す図
【図13】マーカー処理の流れを示すフローチャート
【図14】メイン処理の流れを示すフローチャート
【図15】更新処理の詳細を示すフローチャート
【図16】仮想カメラ間隔決定処理の詳細を示すフローチャート
【図17】ビュー行列生成処理の詳細を示すフローチャート
【図18】メイン実世界画像設定処理の詳細を示すフローチャート
【図19】表示モード切替処理の詳細を示すフローチャート
【図20】左実世界画像および右実世界画像の一例を示す図
【図21】マーカー認識処理の結果に応じて算出される左仮想カメラ63Lの位置及び姿勢を示す図
【図22】マーカー認識処理の結果に応じて算出される右仮想カメラ63Rの位置及び姿勢を示す図
【図23】立体視ゼロ距離に基づく左実世界画像の切り出し範囲を示す図
【図24】立体視ゼロ距離に基づく右実世界画像の切り出し範囲を示す図
【図25】仮想オブジェクト62と左仮想カメラ63Lの位置関係を示す図
【図26】左目用画像の生成方法を示す図
【図27】左仮想カメラ座標系で表される右仮想カメラ63Rの座標の計算方法を示す図
【図28】ewとedを示す図
【図29】マーカー座標系で表される左仮想カメラ63L及び右仮想カメラ63Rの座標の計算方法を示す図
【図30】左仮想カメラ63Lの位置及び姿勢に基づいて決定される右仮想カメラ63Rの位置を示す図
【図31】右仮想カメラ63Rの位置及び姿勢に基づいて決定される左仮想カメラ63Lの位置を示す図
【図32】|V.z|を示す図
【図33】EyeWidthを再計算する理由を説明するための図
【図34】EyeWidthを再計算する理由を説明するための図
【図35】EyeWidthを再計算する理由を説明するための図
【図36】EyeWidthを再計算する理由を説明するための図
【図37】左射影行列について説明するための図
【図38】右射影行列について説明するための図
【図39】メイン実世界画像を左実世界画像から右実世界画像へ切り替えるか否かの判定方法を示す図
【図40】メイン実世界画像を右実世界画像から左実世界画像へ切り替えるか否かの判定方法を示す図
【発明を実施するための形態】
【0034】
(ゲーム装置の構成)
以下、本発明の一実施形態に係るゲーム装置について説明する。図1〜図3は、ゲーム
装置10の外観を示す平面図である。ゲーム装置10は携帯型のゲーム装置であり、図1
〜図3に示すように折り畳み可能に構成されている。図1および図2は、開いた状態(開
状態)におけるゲーム装置10を示し、図3は、閉じた状態(閉状態)におけるゲーム装
置10を示している。図1は、開状態におけるゲーム装置10の正面図であり、図2は、
開状態におけるゲーム装置10の右側面図である。ゲーム装置10は、撮像部によって画
像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする
ことが可能である。また、ゲーム装置10は、交換可能なメモリカード内に記憶され、ま
たは、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想
空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理によ
り生成された画像を画面に表示したりすることができる。
【0035】
まず、図1〜図3を参照して、ゲーム装置10の外観構成について説明する。図1〜図
3に示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21
を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に
接続されている。本実施形態では、各ハウジング11および21はともに横長の長方形の
板状形状であり、互いの長辺部分で回転可能に接続されている。
【0036】
図1および図2に示されるように、下側ハウジング11の上側長辺部分には、下側ハウ
ジング11の内側面(主面)11Bに対して垂直な方向に突起する突起部11Aが設けら
れる。また、上側ハウジング21の下側長辺部分には、上側ハウジング21の下側面から
当該下側面に垂直な方向に突起する突起部21Aが設けられる。下側ハウジング11の突
起部11Aと上側ハウジング21の突起部21Aとが連結されることにより、下側ハウジ
ング11と上側ハウジング21とが、折り畳み可能に接続される。
【0037】
(下側ハウジングの説明)
まず、下側ハウジング11の構成について説明する。図1〜図3に示すように、下側ハ
ウジング11には、下側LCD(Liquid Crystal Display:液晶
表示装置)12、タッチパネル13、各操作ボタン14A〜14L(図1、図3)、アナ
ログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔
18が設けられる。以下、これらの詳細について説明する。
【0038】
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD1
2は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置さ
れる。下側LCD12は下側ハウジング11の中央に配置される。下側LCD12は、下
側ハウジング11の内側面(主面)に設けられ、下側ハウジング11に設けられた開口部
から当該下側LCD12の画面が露出される。ゲーム装置10を使用しない場合には閉状
態としておくことによって、下側LCD12の画面が汚れたり傷ついたりすることを防止
することができる。下側LCD12の画素数は、例えば、256dot×192dot(
横×縦)であってもよい。下側LCD12は、後述する上側LCD22とは異なり、画像
を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示
装置としてLCDを用いているが、例えばEL(Electro Luminescen
ce:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また
、下側LCD12として、任意の解像度の表示装置を利用することができる。
【0039】
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備え
ている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施
形態では、タッチパネル13は抵抗膜方式のタッチパネルである。ただし、タッチパネル
は抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いること
ができる。本実施形態では、タッチパネル13として、下側LCD12の解像度と同解像
度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側L
CD12の解像度が一致している必要はない。また、下側ハウジング11の上側面には挿
入口17(図1および図3(d)に示す点線)が設けられている。挿入口17は、タッチ
パネル13に対する操作を行うために用いられるタッチペン28を収納することができる
。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッ
チペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である

【0040】
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。図1に示さ
れるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lの
うち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタ
ン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン1
4K、およびスタートボタン14Lが、設けられる。十字ボタン14Aは、十字の形状を
有しており、上下左右の方向を指示するボタンを有している。ボタン14B、ボタン14
C、ボタン14D、ボタン14Eは、十字状に配置される。ボタン14A〜14E、セレ
クトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装
置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン1
4Aは選択操作等に用いられ、各操作ボタン14B〜14Eは例えば決定操作やキャンセ
ル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフ
するために用いられる。
【0041】
アナログスティック15は、方向を指示するデバイスであり、下側ハウジング11の内
側面の下側LCD12より左側領域の上部領域に設けられる。図1に示すように、十字ボ
タン14Aは下側LCD12より左側領域の下部領域に設けられるので、アナログスティ
ック15は、十字ボタン14Aの上方に設けられる。また、アナログスティック15、お
よび、十字ボタン14Aは、下側ハウジングを把持した左手の親指で操作可能な位置に設
計される。また、アナログスティック15を上部領域に設けたことにより、下側ハウジン
グ11を把持する左手の親指が自然と位置するところにアナログスティック15が配され
、十字ボタン14Aは、左手の親指を少し下にずらした位置に配される。アナログスティ
ック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするよう
に構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに
応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲー
ム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェク
トを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、
所定のオブジェクトはアナログスティック15のキートップがスライドした方向に移動さ
れる。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所
定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【0042】
十字状に配置される、ボタン14B、ボタン14C、ボタン14D、ボタン14Eの4
つのボタンは、下側ハウジング11を把持する右手の親指が自然と位置するところに配置
される。また、これらの4つのボタンと、アナログスティック15とは、下側LCD12
を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、
左利きの人が、これらの4つのボタンを使用して方向指示入力をすることも可能である。
【0043】
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイ
クロフォン用孔18の下部には後述する音声入力装置としてのマイク(図6参照)が設け
られ、当該マイクがゲーム装置10の外部の音を検出する。
【0044】
図3(a)は閉状態におけるゲーム装置10の左側面図であり、図3(b)は閉状態に
おけるゲーム装置10の正面図であり、図3(c)は閉状態におけるゲーム装置10の右
側面図であり、図3(d)は閉状態におけるゲーム装置10の背面図である。図3(b)
および(d)に示されるように、下側ハウジング11の上側面には、Lボタン14Gおよ
びRボタン14Hが設けられている。Lボタン14Gは、下側ハウジング11の上面の左
端部に設けられ、Rボタン14Hは、下側ハウジング11の上面の右端部に設けられる。
Lボタン14GおよびRボタン14Hは、例えば、撮像部のシャッターボタン(撮影指示
ボタン)として機能することができる。また、図3(a)に示されるように、下側ハウジ
ング11の左側面には、音量ボタン14Iが設けられる。音量ボタン14Iは、ゲーム装
置10が備えるスピーカの音量を調整するために用いられる。
【0045】
図3(a)に示されるように、下側ハウジング11の左側面には開閉可能なカバー部1
1Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部
メモリ45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存
用外部メモリ45は、コネクタに着脱自在に装着される。データ保存用外部メモリ45は
、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用
いられる。なお、上記コネクタおよびそのカバー部11Cは、下側ハウジング11の右側
面に設けられてもよい。
【0046】
また、図3(d)に示されるように、下側ハウジング11の上側面には、ゲーム装置1
0とゲームプログラムを記録した外部メモリ44を挿入するための挿入口11Dが設けら
れ、その挿入口11Dの内部には、外部メモリ44と電気的に着脱自在に接続するための
コネクタ(図示せず)が設けられる。当該外部メモリ44がゲーム装置10に接続される
ことにより、所定のゲームプログラムが実行される。なお、上記コネクタおよびその挿入
口11Dは、下側ハウジング11の他の側面(例えば、右側面等)に設けられてもよい。
【0047】
また、図1および図3(c)に示されるように、下側ハウジング11の下側面にはゲー
ム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジ
ング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LE
D16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能で
あり、第1LED16Bは、無線通信が確立している場合に点灯する。ゲーム装置10は
、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接
続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無
効にする無線スイッチ19が設けられる(図3(c)参照)。
【0048】
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電
式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介
して当該電池を充電することができる。
【0049】
(上側ハウジングの説明)
次に、上側ハウジング21の構成について説明する。図1〜図3に示すように、上側ハ
ウジング21には、上側LCD(Liquid Crystal Display:液晶
表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23
b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けら
れる。以下、これらの詳細について説明する。
【0050】
図1に示すように、上側LCD22は上側ハウジング21に収納される。上側LCD2
2は、横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置
される。上側LCD22は上側ハウジング21の中央に配置される。上側LCD22の画
面の面積は、下側LCD12の画面の面積よりも大きく設定される。また、上側LCD2
2の画面は、下側LCD12の画面よりも横長に設定される。すなわち、上側LCD22
の画面のアスペクト比における横幅の割合は、下側LCD12の画面のアスペクト比にお
ける横幅の割合よりも大きく設定される。
【0051】
上側LCD22の画面は、上側ハウジング21の内側面(主面)21Bに設けられ、上
側ハウジング21に設けられた開口部から当該上側LCD22の画面が露出される。また
、図2に示すように、上側ハウジング21の内側面は、透明なスクリーンカバー27によ
って覆われている。当該スクリーンカバー27は、上側LCD22の画面を保護するとと
もに、上側LCD22と上側ハウジング21の内側面と一体的にさせ、これにより統一感
を持たせている。上側LCD22の画素数は、例えば、640dot×200dot(横
×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとし
たが、例えばEL(Electro Luminescence:電界発光)を利用した
表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装
置を利用することができる。
【0052】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。また、
本実施例では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。
具体的には、左目用画像と右目用画像が所定単位で(例えば、1列ずつ)横方向に交互に
表示される方式の表示装置である。または、左目用画像と右目用画像とが交互に表示され
る方式の表示装置であってもよい。また、本実施例では、裸眼立体視可能な表示装置であ
る。そして、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそ
れぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリ
ア方式)のものが用いられる。本実施形態では、上側LCD22はパララックスバリア方
式のものとする。上側LCD22は、右目用画像と左目用画像とを用いて、裸眼で立体視
可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いて
ユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザ
にとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上
側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にし
た場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面
視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも
見えるような表示モードである)。このように、上側LCD22は、立体視可能な画像を
表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示
モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述
する3D調整スイッチ25によって行われる。
【0053】
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と
反対側の背面)21Dに設けられた2つの撮像部(23aおよび23b)の総称である。
外側撮像部(左)23aと外側撮像部(右)23bの撮像方向は、いずれも当該外側面2
1Dの外向きの法線方向である。また、これらの撮像部はいずれも、上側LCD22の表
示面(内側面)の法線方向と180度反対の方向に設計される。すなわち、外側撮像部(
左)23aの撮像方向および外側撮像部(右)23bの撮像方向は、平行である。外側撮
像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラム
によって、ステレオカメラとして使用することが可能である。また、プログラムによって
は、2つの外側撮像部(23aおよび23b)のいずれか一方を単独で用いて、外側撮像
部23を非ステレオカメラとして使用することも可能である。また、プログラムによって
は、2つの外側撮像部(23aおよび23b)で撮像した画像を合成してまたは補完的に
使用することにより撮像範囲を広げた撮像をおこなうことも可能である。本実施形態では
、外側撮像部23は、外側撮像部(左)23aおよび外側撮像部(右)23bの2つの撮
像部で構成される。外側撮像部(左)23aおよび外側撮像部(右)23bは、それぞれ
所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメー
ジセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0054】
図1の破線および図3(b)の実線で示されるように、外側撮像部23を構成する外側
撮像部(左)23aおよび外側撮像部(右)23bは、上側LCD22の画面の横方向と
平行に並べられて配置される。すなわち、2つの撮像部を結んだ直線が上側LCD22の
画面の横方向と平行になるように、外側撮像部(左)23aおよび外側撮像部(右)23
bが配置される。図1の破線で示す23aおよび23bは、上側ハウジング21の内側面
とは反対側の外側面に存在する外側撮像部(左)23aおよび外側撮像部(右)23bを
それぞれ表している。図1に示すように、ユーザが上側LCD22の画面を正面から視認
した場合に、外側撮像部(左)23aは左側に外側撮像部(右)23bは右側にそれぞれ
位置している。外側撮像部23をステレオカメラとして機能させるプログラムが実行され
ている場合、外側撮像部(左)23aは、ユーザの左目で視認される左目用画像を撮像し
、外側撮像部(右)23bは、ユーザの右目で視認される右目用画像を撮像する。外側撮
像部(左)23aおよび外側撮像部(右)23bの間隔は、人間の両目の間隔程度に設定
され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、外側撮像部(左)
23aおよび外側撮像部(右)23bの間隔は、この範囲に限らない。
【0055】
なお、本実施例においては、外側撮像部(左)23aおよび外側撮像部(右)23はハ
ウジングに固定されており、撮像方向を変更することはできない。
【0056】
また、外側撮像部(左)23aおよび外側撮像部(右)23bは、上側LCD22(上
側ハウジング21)の左右方向に関して中央から対称となる位置にそれぞれ配置される。
すなわち、外側撮像部(左)23aおよび外側撮像部(右)23bは、上側LCD22を
左右に2等分する線に対して対称の位置にそれぞれ配置される。また、外側撮像部(左)
23aおよび外側撮像部(右)23bは、上側ハウジング21を開いた状態において、上
側ハウジング21の上部であって、上側LCD22の画面の上端よりも上方の位置の裏側
に配置される。すなわち、外側撮像部(左)23aおよび外側撮像部(右)23bは、上
側ハウジング21の外側面であって、上側LCD22を外側面に投影した場合、投影した
上側LCD22の画面の上端よりも上方に配置される。
【0057】
このように、外側撮像部23の2つの撮像部(23aおよび23b)が、上側LCD2
2の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側LCD
22を正視した場合に、外側撮像部23の撮像方向をユーザの視線方向と一致させること
ができる。また、外側撮像部23は、上側LCD22の画面の上端より上方の裏側の位置
に配置されるため、外側撮像部23と上側LCD22とが上側ハウジング21の内部で干
渉することがない。従って、外側撮像部23を上側LCD22の画面の裏側に配置する場
合と比べて、上側ハウジング21を薄く構成することが可能となる。
【0058】
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側
面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度
を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レ
ンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0059】
図1に示すように、内側撮像部24は、上側ハウジング21を開いた状態において、上
側ハウジング21の上部であって、上側LCD22の画面の上端よりも上方に配置され、
上側ハウジング21の左右方向に関して中央の位置(上側ハウジング21(上側LCD2
2の画面)を左右に2等分する線の線上)に配置される。具体的には、図1および図3(
b)に示されるように、内側撮像部24は、上側ハウジング21の内側面であって、外側
撮像部23の左右の撮像部(外側撮像部(左)23aおよび外側撮像部(右)23b)の
中間の裏側の位置に配置される。すなわち、上側ハウジング21の外側面に設けられた外
側撮像部23の左右の撮像部を上側ハウジング21の内側面に投影した場合、当該投影し
た左右の撮像部の中間に、内側撮像部24が設けられる。図3(b)で示される破線24
は、上側ハウジング21の内側面に存在する内側撮像部24を表している。
【0060】
このように、内側撮像部24は、外側撮像部23とは反対方向を撮像する。内側撮像部
24は、上側ハウジング21の内側面であって、外側撮像部23の左右の撮像部の中間位
置の裏側に設けられる。これにより、ユーザが上側LCD22を正視した際、内側撮像部
24でユーザの顔を正面から撮像することができる。また、外側撮像部23の左右の撮像
部と内側撮像部24とが上側ハウジング21の内部で干渉することがないため、上側ハウ
ジング21を薄く構成することが可能となる。
【0061】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表
示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は
、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために
用いられる。図1〜図3に示されるように、3D調整スイッチ25は、上側ハウジング2
1の内側面および右側面の端部に設けられ、ユーザが上側LCD22を正視した場合に、
当該3D調整スイッチ25を視認できる位置に設けられる。また、3D調整スイッチ25
の操作部は、内側面および右側面の両方に突出しており、どちらからも視認および操作す
ることができる。なお、3D調整スイッチ25以外のスイッチは全て下側ハウジング11
に設けられる。
【0062】
図4は、図1に示す上側ハウジング21のA−A’線断面図である。図4に示すように
、上側ハウジング21の内側面の右端部には、凹部21Cが形成され、当該凹部21Cに
3D調整スイッチ25が設けられる。3D調整スイッチ25は、図1および図2に示され
るように、上側ハウジング21の正面および右側面から視認可能に配置される。3D調整
スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能で
あり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。
【0063】
図5Aから図5Cは、3D調整スイッチ25のスライダ25aがスライドする様子を示
す図である。図5Aは、3D調整スイッチ25のスライダ25aが最下点(第3の位置)
に存在する様子を示す図である。図5Bは、3D調整スイッチ25のスライダ25aが最
下点よりも上方位置(第1の位置)に存在する様子を示す図である。図5Cは、3D調整
スイッチ25のスライダ25aが最上点(第2の位置)に存在する様子を示す図である。
【0064】
図5Aに示すように、3D調整スイッチ25のスライダ25aが最下点位置(第3の位
置)に存在する場合、上側LCD22は平面表示モードに設定され、上側LCD22の画
面には平面画像が表示される(なお、上側LCD22を立体表示モードのままとして、左
目用画像と右目用画像を同一の画像とすることにより平面表示してもよい)。一方、図5
Bに示す位置(最下点より上側の位置(第1の位置))から図5Cに示す位置(最上点の
位置(第2の位置))までの間にスライダ25aが存在する場合、上側LCD22は立体
表示モードに設定される。この場合、上側LCD22の画面には立体視可能な画像が表示
される。スライダ25aが第1の位置から第2の位置の間に存在する場合、スライダ25
aの位置に応じて、立体画像の見え方が調整される。具体的には、スライダ25aの位置
に応じて、右目用画像および左目用画像の横方向の位置のずれ量が調整される。3D調整
スイッチ25のスライダ25aは、第3の位置で固定されるように構成されており、第1
の位置と第2の位置との間では上下方向に任意の位置にスライド可能に構成されている。
例えば、スライダ25aは、第3の位置において、3D調整スイッチ25を形成する側面
から図5Aに示す横方向に突出した凸部(図示せず)によって固定されて、所定以上の力
が上方に加わらないと第3の位置よりも上方にスライドしないように構成されている。第
3の位置から第1の位置にスライダ25aが存在する場合、立体画像の見え方は調整され
ないが、これはいわゆるあそびである。他の例においては、あそびをなくして、第3の位
置と第1の位置とを同じ位置としてもよい。また、第3の位置を第1の位置と第2の位置
の間としてもよい。その場合、スライダを第3の位置から第1の位置の方向に動かした場
合と、第2の方向に動かした場合とで、右目用画像および左目用画像の横方向の位置のず
れ量の調整する方向が逆になる。
【0065】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジ
ケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する
。なお、3Dインジケータ26は、上側LCD22が立体表示モードになっており、かつ
、立体視画像を表示するプログラム処理が実行されているとき(すなわち、3D調整スイ
ッチが上記第1の位置から上記第2の位置にあるときに、左目用画像と右目用画像が異な
るような画像処理が実行されているとき)に限り、点灯するようにしてもよい。図1に示
されるように、3Dインジケータ26は、上側ハウジング21の内側面に設けられ、上側
LCD22の画面近傍に設けられる。このため、ユーザが上側LCD22の画面を正視し
た場合、ユーザは3Dインジケータ26を視認しやすい。従って、ユーザは上側LCD2
2の画面を視認している状態でも、上側LCD22の表示モードを容易に認識することが
できる。
【0066】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するス
ピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0067】
(ゲーム装置10の内部構成)
次に、図6を参照して、ゲーム装置10の内部の電気的構成について説明する。図6は
、ゲーム装置10の内部構成を示すブロック図である。図6に示すように、ゲーム装置1
0は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインター
フェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用
内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイム
クロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回
路(I/F回路)41等の電子部品を備えている。これらの電子部品は、電子回路基板上
に実装されて下側ハウジング11(または上側ハウジング21でもよい)内に収納される

【0068】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Pr
ocessing Unit)311、画像処理を行うGPU(Graphics Pr
ocessing Unit)312等を含む情報処理手段である。情報処理部31のC
PU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外
部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行するこ
とによって、当該プログラムに応じた処理(例えば、撮影処理や、後述する画像表示処理
)を実行する。なお、情報処理部31のCPU311によって実行されるプログラムは、
他の機器との通信によって他の機器から取得されてもよい。また、情報処理部31は、V
RAM(Video RAM)313を含む。情報処理部31のGPU312は、情報処
理部31のCPU311からの命令に応じて画像を生成し、VRAM313に描画する。
そして、情報処理部31のGPU312は、VRAM313に描画された画像を上側LC
D22及び/又は下側LCD12に出力し、上側LCD22及び/又は下側LCD12に
当該画像が表示される。
【0069】
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メ
モリI/F34、および、データ保存用内部メモリ35が接続される。外部メモリI/F
33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、デ
ータ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続する
ためのインターフェイスである。
【0070】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域
として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、上記プログ
ラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ44
や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、
メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
【0071】
外部メモリ44は、情報処理部31によって実行されるプログラムを記憶するための不
揮発性の記憶手段である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成
される。外部メモリ44が外部メモリI/F33に接続されると、情報処理部31は外部
メモリ44に記憶されたプログラムを読み込むことができる。情報処理部31が読み込ん
だプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ4
5は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成さ
れ、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ45に
は、外側撮像部23で撮像された画像や他の機器で撮像された画像が記憶される。データ
保存用外部メモリ45がデータ保存用外部メモリI/F34に接続されると、情報処理部
31はデータ保存用外部メモリ45に記憶された画像を読み込み、上側LCD22及び/
又は下側LCD12に当該画像を表示することができる。
【0072】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えばNAND型フ
ラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、デー
タ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウン
ロードされたデータやプログラムが格納される。
【0073】
無線通信モジュール36は、例えばIEEE802.11.b/gの規格に準拠した方
式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、
所定の通信方式(例えば独自プロトコルによる通信や、赤外線通信)により同種のゲーム
装置との間で無線通信を行う機能を有する。無線通信モジュール36およびローカル通信
モジュール37は情報処理部31に接続される。情報処理部31は、無線通信モジュール
36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル
通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりするこ
とができる。
【0074】
また、情報処理部31には、加速度センサ39が接続される。加速度センサ39は、3
軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速
度センサ39は、下側ハウジング11の内部に設けられる。加速度センサ39は、図1に
示すように、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy
軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線
加速度の大きさを検出する。なお、加速度センサ39は、例えば静電容量式の加速度セン
サであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度セ
ンサ39は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部31は
、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム
装置10の姿勢や動きを検出することができる。
【0075】
また、情報処理部31には、RTC38および電源回路40が接続される。RTC38
は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によ
って計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置
10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御
し、ゲーム装置10の各部品に電力を供給する。
【0076】
また、情報処理部31には、I/F回路41が接続される。I/F回路41には、マイ
ク42およびスピーカ43が接続される。具体的には、I/F回路41には、図示しない
アンプを介してスピーカ43が接続される。マイク42は、ユーザの音声を検知して音声
信号をI/F回路41に出力する。アンプは、I/F回路41からの音声信号を増幅し、
音声をスピーカ43から出力させる。また、タッチパネル13はI/F回路41に接続さ
れる。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制
御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、
音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声
データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づ
いて所定の形式のタッチ位置データを生成して情報処理部31に出力する。タッチ位置デ
ータは、タッチパネル13の入力面において入力が行われた位置の座標を示す。なお、タ
ッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置デ
ータの生成を所定時間に1回の割合で行う。情報処理部31は、タッチ位置データを取得
することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0077】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続
される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する
入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作
ボタン14から操作データを取得することによって、操作ボタン14に対する入力に従っ
た処理を実行する。
【0078】
下側LCD12および上側LCD22は情報処理部31に接続される。下側LCD12
および上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示
する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画
像)を表示させる。
【0079】
具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と
接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側
LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格
納された右目用画像と左目用画像とが、上側LCD22に出力される。より具体的には、
LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す
処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に
繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これ
により、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分
割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置さ
れた画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリア
を介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユ
ーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可
能な画像が表示される。
【0080】
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部2
3および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像
データを情報処理部31に出力する。
【0081】
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、ス
ライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0082】
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3
Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立
体表示モードである場合、3Dインジケータ26を点灯させる。以上がゲーム装置10の
内部構成の説明である。
【0083】
(ゲーム装置10の動作の概要)
以下、本実施形態におけるゲーム装置10の動作の概要について説明する。本実施形態
では、画像表示プログラムに基づいて、外側撮像部23(外側撮像部(左)23a、外側
撮像部(右)23b)によって現在撮像されている実世界の画像と、3次元の仮想空間に
存在する仮想オブジェクトの画像とを合成した合成画像が、上側LCD22の画面に立体
視可能に表示される。
【0084】
(実世界画像の立体視表示)
外側撮像部23で撮影された2つの撮影画像は所定の視差を有するように上側LCDに
供給されて立体視表示される。
【0085】
図7は、外側撮像部23によって3つのボール60a〜60c(実オブジェクト)が撮
像されているときに上側LCD22の画面に表示される立体画像の一例を示している。外
側撮像部23によって3つのボール60a〜60cが撮像されると、上側LCD22には
、これらのボール60a〜60cが立体視可能に表示される。図7に示されるように、上
側LCD22の画面上では、外側撮像部23に最も近いボール60aが最も手前に位置す
るようにユーザに視認され、外側撮像部23から最も遠いボール60cが最も遠くに位置
するようにユーザに視認される。なお、図7では、理解を容易にするために、上側LCD
22の画面からボールをはみ出して図示しているが、実際にはボールは画面内に表示され
る。後述の図8や図10についても同様である。なお、図7では、後述するマーカー61
(図8参照)が外側撮像部23によって撮像されていないため、上側LCD22の画面に
は仮想オブジェクトは表示されていない。また、図7、図8、図10等においては、表示
対象が飛び出ているように視認される様子を図示しているが、立体視可能に表示する、と
言った場合、必ずしも飛び出し方向に視認される場合のみでなく、画面より奥側に、奥行
きを持って表示される場合も含む。
【0086】
(実世界画像およびCG画像の立体視表示)
図8は、外側撮像部23によってマーカー61(実オブジェクト)が撮像されていると
きに上側LCD22の画面に表示される立体画像の一例を示している。図8に示すように
、マーカー61には、矢印を含む正方形が描かれており、CPU311は、外側撮像部2
3から取得される画像に対して例えばパターンマッチング等の画像処理を行うことによっ
て、当該画像にマーカーが含まれているか否かを判定することができる。外側撮像部23
によってマーカー61が撮像されているときには、上側LCD22には、実世界画像とし
てマーカー61が立体視可能に表示されるとともに、マーカー61の位置に仮想オブジェ
クト62(例えば犬を模した仮想オブジェクト)が立体視可能に合成表示される。なお、
図9に示すように、マーカー61には向き(前方向、右方向、上方向)が定義されており
、マーカー61の姿勢に応じた姿勢で仮想オブジェクトを配置することができる。例えば
、仮想オブジェクト62の前方向がマーカー61の前方向と一致するように、マーカー6
1の上に仮想オブジェクト62を配置することが可能である。
【0087】
図10は、外側撮像部23によってマーカー61が撮像されているときに上側LCD2
2の画面に表示される立体画像の他の一例を示している。このように、ユーザーがゲーム
装置10を移動させることによって、上側LCD22の画面に表示されるマーカー61の
位置および向きが変化すると、それに追従するように、仮想オブジェクト62の位置およ
び向きが変化する。よって、ユーザーには仮想オブジェクト62があたかも実世界に本当
に存在しているかのように見える。
【0088】
以下、図11〜図40を参照して、ゲーム装置10において画像表示プログラムに基づ
いて実行される画像表示処理の詳細について説明する。
【0089】
(メモリマップ)
まず、画像表示処理の際にメインメモリ32に記憶される主なデータについて説明する
。図11は、ゲーム装置10のメインメモリ32のメモリマップを示す図である。図11
に示されるように、メインメモリ32には、画像表示プログラム70、最新左実世界画像
71L、最新右実世界画像71R、表示用左実世界画像72L、表示用右実世界画像72
R、立体視ゼロ距離73、仮想オブジェクト情報74、左変換行列75L、右変換行列7
5R、左ビュー行列76L、右ビュー行列76R、左射影行列77L、右射影行列77R
、表示モード78、マーカー認識モード79、メイン実世界画像識別情報80、各種変数
81等が記憶される。
【0090】
画像表示プログラム70は、CPU311に上記画像表示処理を実行させるためのプロ
グラムである。
【0091】
最新左実世界画像71Lは、外側撮像部(左)23aによって撮像された最新の画像で
ある。
【0092】
最新右実世界画像71Rは、外側撮像部(右)23bによって撮像された最新の画像で
ある。
【0093】
表示用左実世界画像72Lは、外側撮像部(左)23aによって撮像された画像のうち
、上側LCD22に表示されることが決定された最新の画像である。
【0094】
表示用右実世界画像72Rは、外側撮像部(右)23bによって撮像された画像のうち
、上側LCD22に表示されることが決定された最新の画像である。
【0095】
立体視ゼロ距離73は、外側撮像部23から撮影方向にどれだけの距離だけ離れた物体
が、上側LCD22の画面に立体表示されたときに上側LCD22の画面と同じ奥行き位
置にあるように視認されるかを示す変数であり、例えば、センチメートルの単位で表され
る。本実施形態では、立体視ゼロ距離73は25cmで固定とするが、これは単なる一例
に過ぎず、ユーザーの指示に応じて、またはコンピュータによって自動的に、立体視ゼロ
距離73を随時変更するようにしても構わない。立体視ゼロ距離73は、マーカー61か
らの距離や、外側撮像部23とマーカー61の間の距離における比で指定しても構わない
。また、必ずしも現実空間の距離として指定せず、仮想空間における距離で指定してもよ
い。マーカー61のサイズが既知のときなどには、実世界における長さの単位と仮想空間
における長さの単位とを一致させることができる。このように両者の単位を一致させるこ
とができる場合には、立体視ゼロ距離73を実世界における長さの単位で設定できる。し
かしながら、両者の単位を一致させることができない場合には、立体視ゼロ距離73を仮
想空間における長さの単位で設定してもよい。なお、後述の通り、本実施形態においては
、マーカー61のサイズを用いずに、実世界における長さの単位と仮想空間における長さ
の単位とを一致させることができる。
【0096】
仮想オブジェクト情報74は、前述の仮想オブジェクト62に関連する情報であって、
仮想オブジェクト62の形状を表す3Dモデルデータ(ポリゴンデータ)や、仮想オブジ
ェクト62の模様を表すテクスチャデータや、仮想空間における仮想オブジェクト62の
位置や姿勢の情報などを含む。
【0097】
左変換行列75Lは、左実世界画像におけるマーカー61の位置および姿勢を認識する
ことにより計算される行列であり、マーカー61の位置および姿勢を基準として設定され
る座標系(マーカー座標系)で表された座標を外側撮像部(左)23aの位置および姿勢
を基準として表された座標系(外側撮像部(左)座標系)に変換する座標変換行列である
。左変換行列75Lは、マーカー61の位置および姿勢に対する外側撮像部(左)23a
の相対的な位置および姿勢の情報を含む行列であり、より具体的には、マーカー座標系に
おける外側撮像部(左)23aの位置および姿勢の情報を含む行列である。
【0098】
右変換行列75Rは、右実世界画像におけるマーカー61の位置および姿勢を認識する
ことにより計算される行列であり、マーカー座標系で表された座標を外側撮像部(右)2
3bの位置および姿勢を基準として表された座標系(外側撮像部(右)座標系)に変換す
る座標変換行列である。右変換行列75Rは、マーカー61の位置および姿勢に対する外
側撮像部(右)23bの相対的な位置および姿勢の情報を含む行列であり、より具体的に
は、マーカー座標系における外側撮像部(右)23bの位置および姿勢の情報を含む行列
である。
【0099】
なお、本明細書において、マーカー座標系から外側撮像部(左)座標系または外側撮像
部(右)座標系への変換行列のことを「マーカー・カメラ変換行列」と呼ぶ。左変換行列
75Lおよび右変換行列75Rは「マーカー・カメラ変換行列」である。
【0100】
左ビュー行列76Lは、左仮想カメラから見た仮想オブジェクト62を描画する際に用
いられる行列であり、仮想世界のワールド座標系で表された座標を左仮想カメラ座標系で
表された座標へと変換するための座標変換行列である。左ビュー行列76Lは、仮想世界
のワールド座標系における左仮想カメラの位置および姿勢の情報を含む行列である。
【0101】
右ビュー行列76Rは、右仮想カメラから見た仮想オブジェクト62を描画する際に用
いられる行列であり、仮想世界のワールド座標系で表された座標を右仮想カメラ座標系で
表された座標へと変換するための座標変換行列である。右ビュー行列76Rは、仮想世界
のワールド座標系における右仮想カメラの位置および姿勢の情報を含む行列である。
【0102】
左射影行列77Lは、左仮想カメラから見た仮想世界(仮想世界に存在する仮想オブジ
ェクト62)を描画する際に用いられる行列であり、左仮想カメラ座標系で表された座標
をスクリーン座標系で表された座標へと変換するための座標変換行列である。
【0103】
右射影行列77Rは、右仮想カメラから見た仮想世界(仮想世界に存在する仮想オブジ
ェクト62)を描画する際に用いられる行列であり、右仮想カメラ座標系で表された座標
をスクリーン座標系で表された座標へと変換するための座標変換行列である。
【0104】
表示モード78は、現在の処理モードを示すデータであって、より具体的には、実世界
画像と仮想空間画像とを同期させて合成表示する同期表示モードか、実世界画像と仮想空
間画像とを同期させずに合成表示する非同期表示モードかを示すデータである。
【0105】
マーカー認識モード79は、現在の処理モードを示すデータであって、より具体的には
、左実世界画像と右実世界画像のいずれか一方のみに対してマーカー認識処理を行う片画
像認識モードか、左実世界画像と右実世界画像の両方に対してそれぞれマーカー認識処理
を行う両画像認識モードかを示すデータである。
【0106】
メイン実世界画像識別情報80は、左実世界画像と右実世界画像のいずれがメイン実世
界画像なのかを示すデータである。上記の片画像認識モードでは、メイン実世界画像に対
してのみマーカー認識処理が行われ、他方の実世界画像(以下、サブ実世界画像と称す)
に対してはマーカー認識処理は行われない。
【0107】
各種変数81は、画像表示プログラム70の実行の際に用いられる変数であって、図1
2に示すような変数を含む。これらの変数の意味については、以下の説明において随時説
明する。
【0108】
ゲーム装置10の電源が投入されると、ゲーム装置10の情報処理部31(CPU31
1)は、図示しないROMに記憶されている起動プログラムを実行し、これによってメイ
ンメモリ32等の各ユニットが初期化される。次に、データ保存用内部メモリ35に記憶
された画像表示プログラムがメインメモリ32に読み込まれ、情報処理部31のCPU3
11によって当該画像表示プログラムの実行が開始される。
【0109】
以下、図13〜図19のフローチャートを参照して、画像表示プログラムに基づいて実
行される処理の流れを説明する。なお、図13〜図19のフローチャートは、単なる一例
に過ぎない。したがって、同様の結果が得られるのであれば、各ステップの処理順序を入
れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過
ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、図13〜図19の
フローチャートの全てのステップの処理をCPU311が実行するものとして説明するが
、図13〜図19のフローチャートの一部のステップの処理を、CPU311以外のプロ
セッサや専用回路が実行するようにしてもよい。
【0110】
(マーカー処理)
図13は、画像表示プログラム70に基づいてCPU311によって実行されるマーカ
ー処理の流れを示すフローチャートである。マーカー処理は、後述するメイン処理と並列
的に実行される処理であり、本実施形態では、CPU311がアイドル状態のときに実行
される。以下、マーカー処理の詳細について説明する。
【0111】
図13のステップS10において、CPU311は、外側撮像部23から両方の実世界
画像(すなわち左実世界画像および右実世界画像)を取得したか否かを判断し、両方の実
世界画像が取得されている場合には処理はステップS11に進む。外側撮像部23から取
得された最新の左実世界画像は、最新左実世界画像71Lとしてメインメモリ32に格納
され、最新の右実世界画像は、最新右実世界画像71Rとしてメインメモリ32に格納さ
れる。
【0112】
なお、前述のように、上側ハウジング21において、外側撮像部(左)23aと外側撮
像部(右)23bは一定の間隔(例えば3.5cm、以下、撮像部間距離)だけ離れてい
る。したがって、外側撮像部(左)23aと外側撮像部(右)23bによって同時にマー
カー61を撮像した場合、図20に示すように、外側撮像部(左)23aによって撮像さ
れた左実世界画像におけるマーカー61の位置及び姿勢と、外側撮像部(右)23bによ
って撮像された右実世界画像におけるマーカー61の位置及び姿勢との間には、視差によ
るズレが生じる。
【0113】
ステップS11において、CPU311は、メイン実世界画像に対してマーカー認識処
理を行う。より具体的には、パターンマッチング手法等によってメイン実世界画像にマー
カー61が含まれているか否かを判断し、メイン実世界画像にマーカー61が含まれてい
る場合には、メイン実世界画像におけるマーカー61の位置および姿勢に基づいて、左変
換行列75Lまたは右変換行列75Rを算出する(メイン実世界画像が左実世界画像であ
る場合には、左変換行列75Lを算出し、メイン実世界画像が右実世界画像である場合に
は、右変換行列75Rを算出する)。
【0114】
なお、左変換行列75Lは、左実世界画像におけるマーカー61の位置および姿勢に基
づいて計算される外側撮像部(左)23aの位置および姿勢を反映した行列である。より
正確には、図21に示すように、マーカー座標系(実世界におけるマーカー61の位置を
原点とし、マーカー61の縦方向、横方向、法線方向の各方向を各軸とする座標系)で表
された座標を、左実世界画像におけるマーカー61の位置および姿勢に基づいて計算され
た外側撮像部(左)23aの位置および姿勢を基準とした外側撮像部(左)座標系で表さ
れる座標へと変換するための座標変換行列である。
【0115】
また、右変換行列75Rは、右実世界画像におけるマーカー61の位置および姿勢に基
づいて計算される外側撮像部(右)23bの位置および姿勢を反映した行列である。より
正確には、図22に示すように、マーカー座標系で表された座標を、右実世界画像におけ
るマーカー61の位置および姿勢に基づいて計算された外側撮像部(右)23bの位置お
よび姿勢を基準とした外側撮像部(右)座標系で表される座標へと変換するための座標変
換行列である。
【0116】
なお、マーカー認識精度に誤差が全く無く、かつゲーム装置10に対する外側撮像部(
左)23aおよび外側撮像部(右)23bの取り付け精度に誤差が全く無いと仮定すると
、右実世界画像のマーカー認識結果である右変換行列75Rが示す外側撮像部(右)23
bの位置は、左実世界画像のマーカー認識結果である左変換行列75Lが示す外側撮像部
(左)23aの位置を、外側撮像部(左)座標系のx軸方向(ゲーム装置10の横方向で
あり使用時の水平方向)に沿って一定距離(撮像部間距離)だけずらした位置となり、右
変換行列75Rが示す外側撮像部(右)23bの姿勢と左変換行列75Lが示す外側撮像
部(左)23aの姿勢はゲーム装置10における外側撮像部(左)23aと外側撮像部(
右)23bの取り付け状態と同じとなる。本実施例においては、ゲーム装置10において
外側撮像部(左)23aと外側撮像部(右)23bは平行に取り付けられるように設計さ
ているので、外側撮像部(左)座標系のx軸,y軸,z軸が、外側撮像部(右)座標系の
x軸,y軸,z軸とそれぞれ平行となる。しかしながら実際には、マーカー認識精度にも
、ゲーム装置10に対する外側撮像部(左)23aおよび外側撮像部(右)23bの取り
付け精度にも誤差があるため、左変換行列75Lが示す外側撮像部(左)23aの位置及
び姿勢と、右変換行列75Rが示す外側撮像部(右)23bの位置及び姿勢は、理想的な
関係にはならない。例えば、左変換行列75Lと右変換行列75Rは、外側撮像部(左)
23aと外側撮像部(右)23bが近すぎたり、離れすぎたり、外側撮像部(左)23a
の姿勢と外側撮像部(右)23bの姿勢が異なったりするような行列になる。また、外側
撮像部(左)23aの姿勢と外側撮像部(右)23bの姿勢が平行でないような行列にな
る。
【0117】
ここで、ARでは、マーカー座標系を外側撮像部(左)座標系または外側撮像部(右)
座標系に変換する行列を仮想カメラのビュー行列に指定することにより、実世界画像にC
G画像を合成することができるが、単に、左変換行列75Lを左ビュー行列76Lに指定
し、右変換行列75Rを右ビュー行列76Rに指定して仮想空間画像を上側LCD22に
立体表示する場合には、仮想オブジェクト62が正常に立体視できないことがあり得る。
そこで本実施形態では、後述する説明から明らかになるように、左実世界画像および右実
世界画像のいずれか一方のマーカー認識結果(マーカー・カメラ変換行列)から計算され
る一方の仮想カメラの位置及び姿勢(ビュー行列)に基づいて、左仮想カメラ63Lの位
置及び姿勢と右仮想カメラ63Rの位置及び姿勢が理想的な関係となるように、他方の仮
想カメラの位置及び姿勢(ビュー行列)が決定される。
【0118】
なお、ステップS11において、メイン実世界画像からマーカー61が認識されなかっ
た場合には、左変換行列75Lまたは右変換行列75Rにヌル値が格納され、これによっ
て、左実世界画像または右実世界画像におけるマーカー61の認識に失敗したことが記録
される。
【0119】
ステップS12において、CPU311は、マーカー認識モードが片画像認識モードで
あるかどうかを判断する。そして、片画像認識モードである場合には、処理はステップS
13に進み、そうでない場合(すなわち両画像認識モードである場合)には、処理はステ
ップS14に進む。
【0120】
ステップS13において、CPU311は、左実世界画像及び右実世界画像のうち、メ
イン実世界画像ではない方の実世界画像(以下、サブ実世界画像と称す)のマーカー認識
結果を“失敗”とみなす。より具体的には、メイン実世界画像が左実世界画像である場合
には、右変換行列75Rにヌル値を格納し、メイン実世界画像が右実世界画像である場合
には、左変換行列75Lにヌル値を格納する。
【0121】
ステップS14において、CPU311は、サブ実世界画像に対してマーカー認識処理
を行う。より具体的には、パターンマッチング手法等によってサブ実世界画像にマーカー
61が含まれているか否かを判断し、サブ実世界画像にマーカー61が含まれている場合
には、サブ実世界画像におけるマーカー61の位置および姿勢に基づいて、左変換行列7
5Lまたは右変換行列75Rを算出する(サブ実世界画像が左実世界画像である場合には
、左変換行列75Lを算出し、サブ実世界画像が右実世界画像である場合には、右変換行
列75Rを算出する)。
【0122】
ステップS15において、CPU311は、表示モードが同期表示モードであるかどう
かを判断する。そして、同期表示モードである場合には、処理はステップS17に進み、
そうでない場合(すなわち非同期表示モードである場合)には、処理はステップS16に
進む。
【0123】
ステップS16において、CPU311は、最新左実世界画像71L及び最新右実世界
画像71Rを、表示用左実世界画像72L及び表示用右実世界画像72Rとしてそれぞれ
メインメモリ32に記憶する。そして、処理はステップS10に戻る。
【0124】
ステップS17において、CPU311は、マーカー認識モードが片画像認識モードか
どうかを判断する。そして、片画像認識モードである場合には、処理はステップS18に
進み、そうでない場合(すなわち両画像認識モードである場合)には、処理はステップS
19に進む。
【0125】
ステップS18において、CPU311は、メイン実世界画像のマーカー認識に成功し
たかどうかを判断する。より具体的には、CPU311は、メイン実世界画像が左実世界
画像である場合には、左変換行列75Lにヌル値ではない有効な行列が格納されているか
どうかを判断し、メイン実世界画像が右実世界画像である場合には、右変換行列75Rに
ヌル値ではない有効な行列が格納されているかどうかを判断する。そして、メイン実世界
画像のマーカー認識に成功したと判断された場合には、処理はステップS16に進み、そ
うでない場合には、処理はステップS10に戻る。
【0126】
ステップS19において、CPU311は、左実世界画像及び右実世界画像の少なくと
も一方のマーカー認識に成功したかどうかを判断する。より具体的には、CPU311は
、左変換行列75L及び右変換行列75Rの両方に、ヌル値ではない有効な行列が格納さ
れているかどうかを判断する。そして、左実世界画像及び右実世界画像の少なくとも一方
のマーカー認識に成功したと判断された場合には、処理はステップS16に進み、そうで
ない場合には、処理はステップS10に戻る。
【0127】
(メイン処理)
図14は、画像表示プログラム70に基づいてCPU311によって実行されるメイン
処理の流れを示すフローチャートである。メイン処理は、上述したマーカー処理と並列的
に実行される処理である。以下、メイン処理の詳細について説明する。
【0128】
図14のステップS20において、CPU311は、3次元の仮想空間の所定位置に仮
想オブジェクト62を配置する。本実施形態では、仮想空間の原点(ワールド座標系の原
点)に仮想オブジェクト62を配置する。
【0129】
ステップS21において、CPU311は、更新処理を実行する。この更新処理では、
仮想オブジェクト62を描画するために用いられる種々の変数を更新するための処理であ
る。更新処理の詳細については後述する。
【0130】
ステップS22において、CPU311は、仮想オブジェクト処理を実行する。仮想オ
ブジェクト処理とは、仮想空間に配置された仮想オブジェクト62に関する処理であり、
例えば、必要に応じて、仮想オブジェクト62の大きさを変化させたり、仮想オブジェク
ト62に所定の動作(仮想空間内で移動する。例えば、仮想空間の原点の周りを歩くよう
な移動をさせると、マーカー座標系の原点の周りを歩くような表示がされる)を行わせた
りする。なお、仮想オブジェクト62の移動制御は、仮想空間のワールド座標系における
仮想オブジェクトの位置座標を変更することにより実現される。
【0131】
ステップS23において、CPU311は、立体視ゼロ距離73に応じて左実世界画像
のうちの表示に使う範囲である描画範囲を決定する。より具体的には、図23に示すよう
に、外側撮像部23から立体視ゼロ距離73の値(例えば30cm)だけ撮影方向に離れ
ており、かつ外側撮像部(左)23aと外側撮像部(右)23bから等距離にある点を立
体視ゼロ点とし、外側撮像部(左)23aから見て当該立体視ゼロ点が中心にくるような
範囲を、左実世界画像の描画範囲として決定する。当該範囲の横方向の長さは、例えば、
図23に示すように、外側撮像部(左)23aの撮影方向に垂直な直線を、外側撮像部(
左)23aの画角を表す直線によって切り取った線分上での比として求めることができ、
当該比を実世界画像の横方向の長さに対応させることによって、実世界画像上での範囲と
して決定される。なお、当該範囲の縦方向の長さについては、表示画面の縦横比に合うよ
うに、横方向の長さから決定される。
【0132】
なお、後述するステップS27において右実世界画像の描画範囲を決定するときには、
図24に示すように、外側撮像部(右)23bから見て当該立体視ゼロ点が中心にくるよ
うな範囲を、右実世界画像の描画範囲として決定する。これにより、上側LCD22に表
示される左目用画像における立体視ゼロ点の位置と右目用画像における立体視ゼロ点の位
置が、上側LCD22の画面上で一致することになり、ユーザーから見て画面と同じ奥行
き位置に存在するように見える。
【0133】
ステップS24において、CPU311は、表示用左実世界画像72Lにおける、ステ
ップS23で決定した描画範囲を、上側LCD22へ供給すべき左目用画像を一時的に記
憶するためのVRAM313内の所定の記憶領域(以下、左フレームバッファと称す)に
描画する。
【0134】
ステップS25において、CPU311は、ARActive(図12参照)の値がt
rueかどうかを判断する。ARActiveとは、実世界画像に仮想オブジェクトを合
成表示することができる状況かどうかを示す変数(フラグ)であって、実世界画像に仮想
オブジェクトを合成表示することができる状況では、その値がtrueに設定され、実世
界画像に仮想オブジェクトを合成表示することができない状況(例えば、マーカー61が
全く認識できていない状況など)では、その値がfalse(初期値)に設定される。A
RActiveの値がtrueである場合には、処理はステップS26に進み、そうでな
い場合(すなわちARActiveの値がfalseである場合)には、処理はステップ
S27に進む。
【0135】
ステップS26において、CPU311は、例えば図23に示すように、左仮想カメラ
63Lから見た仮想空間(以下、左目用の仮想空間画像と称す)を左フレームバッファに
上書きする(実際には、典型的には、CPU311からの指示にしたがってGPU312
によって描画される)。これにより、図26に示すように、ステップS24で左フレーム
バッファに描画された左実世界画像に左目用の仮想空間画像が合成される。左フレームバ
ッファに描画された画像は、所定のタイミングで左目用画像として上側LCD22へ供給
されることになる。なお、当該左目用の仮想空間画像においては、仮想空間の背景は透明
であり、そのため、実世界画像に仮想空間画像を合成することで、実世界画像上に仮想オ
ブジェクト62が存在するような画像が生成される。
【0136】
ステップS27において、CPU311は、立体視ゼロ距離73に応じて右実世界画像
の描画範囲を決定する。なお、描画範囲を決定するための処理の詳細は左実世界画像の描
画範囲の決定の処理と同じであるため省略する。
【0137】
ステップS28において、CPU311は、表示用右実世界画像72Rにおける、ステ
ップS27で決定した描画範囲を、上側LCD22へ供給すべき右目用画像を一時的に記
憶するためのVRAM313内の所定の記憶領域(以下、右フレームバッファと称す)に
描画する。
【0138】
ステップS29において、CPU311は、ARActiveの値がtrueかどうか
を判断する。ARActiveの値がtrueである場合には、処理はステップS30に
進み、そうでない場合(すなわちARActiveの値がfalseである場合)には、
処理はステップS31に進む。
【0139】
ステップS30において、CPU311は、右仮想カメラ63Rから見た仮想空間(以
下、右目用の仮想空間画像と称す)を右フレームバッファに上書きする(実際には、典型
的には、CPU311からの指示にしたがってGPU312によって描画される)。これ
により、ステップS28で右フレームバッファに描画された右実世界画像に右目用の仮想
空間画像が合成される。右フレームバッファに描画された画像は、所定のタイミングで右
目用画像として上側LCD22へ供給されることになる。
【0140】
ステップS31において、CPU311は、上側LCD22からの割り込み信号(垂直
同期割り込み)を待機し、当該割り込み信号が発生した場合には、処理はステップS21
に戻る。これにより、ステップS21〜S31の処理が一定の周期(例えば、60分の1
秒の周期)で繰り返される。
【0141】
(更新処理)
次に、メイン処理におけるステップS21の更新処理の詳細について、図15のフロー
チャートを参照して説明する。
【0142】
図15のステップS40において、CPU311は、前述のマーカー処理におけるマー
カー認識結果(すなわち、左変換行列75L及び右変換行列75R)が更新されたかどう
かを判断し、更新されている場合には処理はステップS41に進み、まだ更新されていな
い場合には処理はステップS44に進む。
【0143】
ステップS41において、CPU311は、左実世界画像及び右実世界画像の両方の実
世界画像のマーカー認識に成功しているかどうかを判断する。そして、両方の実世界画像
のマーカー認識に成功している場合には、処理はステップS42に進み、いずれか一方も
しくは両方の実世界画像のマーカー認識に失敗している場合には、処理はステップS44
に進む。
【0144】
ステップS42において、CPU311は、EyeWidth(図12参照)の値が0
であるか、または、EyeMeasure(図12参照)の値がtrueであるかどうか
を判断する。EyeWidthとは、左変換行列75Lと右変換行列75Rとを用いて算
出される、外側撮像部(左)23aと外側撮像部(右)23bとの位置関係における、両
撮像部間の距離を示す。なお、ここで両撮像部間の距離とは、実世界のスケールとして求
める必要はなく、仮想空間での距離として求めてもよい。具体的には、左変換行列75L
が示す、マーカー61の位置と外側撮像部(左)23aの位置との関係と、右変換行列7
5Rが示すマーカー61の位置と外側撮像部(右)23bの位置との関係とから、マーカ
ー61の位置を基準として、外側撮像部(左)23aの位置と外側撮像部(右)23bの
位置との関係を求めた場合の距離を求めている。なお、当該距離が未確定の場合には、そ
の値が0(初期値)に設定される。なお、本実施形態では、EyeWidthはスカラー
値であるが、EyeWidthを、左変換行列75Lが示す外側撮像部(左)23aの位
置と右変換行列75Rが示す外側撮像部(右)23bの位置との間を結ぶベクトルにして
もよい。また、EyeWidthを、左変換行列75Lが示す外側撮像部(左)23aの
位置と右変換行列75Rが示す外側撮像部(右)23bの位置との間を結ぶベクトルの、
撮影方向に直交する成分の長さにしてもよい。なお、後述の通り、EyeWidthは、
仮想空間における左仮想カメラ63Lと右仮想カメラ63Rの距離(間隔)の設定に用い
る。EyeMeasureとは、EyeWidthを再計算すべきか否かを示す変数(フ
ラグ)であって、EyeWidthを再計算すべき状況では、その値がtrueに設定さ
れ、そうでない状況では、その値がfalse(初期値)に設定される。EyeWidt
hの値が0であるか、または、EyeMeasureの値がtrueである場合には、処
理はステップS43に進み、そうでない場合(すなわちEyeWidthの値が0以外の
値であり、なおかつ、EyeMeasureの値がfalseである場合)には、処理は
ステップS44に進む。
【0145】
ステップS43において、CPU311は、仮想カメラ間隔決定処理を実行する。仮想
カメラ間隔決定処理では、左仮想カメラ63Lと右仮想カメラ63Rの間隔(すなわちE
yeWidth)が適宜に決定および更新される。仮想カメラ間隔決定処理の詳細につい
ては後述する。
【0146】
ステップS44において、CPU311は、ビュー行列生成処理を実行する。ビュー行
列生成処理では、すでに決定されている左仮想カメラ63Lと右仮想カメラ63Rの間隔
(すなわちEyeWidth)に基づいて、左ビュー行列76Lと右ビュー行列76Rが
計算される。ビュー行列生成処理の詳細については後述する。
【0147】
ステップS45において、CPU311は、メイン実世界画像設定処理を実行する。メ
イン実世界画像設定処理では、左実世界画像と右実世界画像の間で、メイン実世界画像が
適宜に切り替えられる(これは、外側撮像部(左)23aと外側撮像部(右)との間で、
メイン撮像部を切り替えることと等価である)。メイン実世界画像設定処理の詳細につい
ては後述する。
【0148】
ステップS46において、CPU311は、表示モード切替処理を実行し、そして更新
処理を終了する。表示モード切替処理では、同期表示モードと非同期表示モードの間で、
表示モードが適宜に切り替えられる。表示モード切替処理の詳細については後述する。
【0149】
(仮想カメラ間隔決定処理)
次に、更新処理(図15)におけるステップS43の仮想カメラ間隔決定処理の詳細に
ついて、図16のフローチャートを参照して説明する。ここでは、前述の通り、左変換行
列75Lが示すマーカー61の位置に対する外側撮像部(左)23aの位置と右変換行列
75Rが示すマーカー61の位置に対する外側撮像部(右)23bの位置との距離を求め
る。この距離を計算する方法はいくつかあるが、本実施例では、計算方法の一例として、
以下の方法を採用する。
【0150】
図16のステップS50において、CPU311は、左変換行列75Lおよび右変換行
列75Rに基づいて、座標V0を計算する。以下、図27〜図29を参照して、V0の計
算方法を説明する。なお、図27〜図29においては、左実世界画像に基づいて計算され
る、マーカー61に対する外側撮像部(左)23aの相対位置及び相対姿勢と、右実世界
画像に基づいて計算される、マーカー61に対する外側撮像部(右)23bの相対位置及
び相対姿勢とが、前述したように必ずしも理想的な関係とはならないことを強調するため
に、外側撮像部(左)23aの撮影方向と外側撮像部(右)23bの撮影方向が互いに大
きくずれているように図示している。
【0151】
まず、図27に示すように、(0,0,0)に対して、左変換行列75Lを乗算すると
、外側撮像部(左)座標系で表されたマーカー座標系の原点の座標V1が求まる。座標V
1は、左実世界画像に基づいて計算された、外側撮像部(左)23aに対するマーカー6
1の相対位置を表している。この座標V1が外側撮像部(右)座標系で表された座標であ
ると見なすと、座標V1が示す位置は、外側撮像部(右)座標系では図28に示す位置へ
と移動する。この座標V1に対して、さらに右変換行列75Rの逆行列を乗算する。右変
換行列75Rの逆行列を乗算することは、外側撮像部(右)座標系で表された座標をマー
カー座標系で表された座標に変換することに相当する。したがって、上記逆行列の乗算は
、外側撮像部(右)座標系で表された座標V1(図28)を、図29に示すように、マー
カー座標系で表された座標V0へと変換することになる。このようにして計算された座標
V0は、左実世界画像に基づいて計算された、外側撮像部(左)23aに対するマーカー
61の相対位置(すなわち、外側撮像部(左)座標系で表されるマーカー座標系の原点の
座標)と、右実世界画像に基づいて計算された、外側撮像部(右)23bに対するマーカ
ー61の相対位置(すなわち、外側撮像部(右)座標系で表されるマーカー座標系の原点
の座標)との差を示している。本実施形態では、このマーカー61の相対位置の差を、外
側撮像部(左)23aと外側撮像部(右)23bの取り付け位置の差によって生じるもので
あると考えて、外側撮像部(左)23aと外側撮像部(右)23bの取り付け位置を推定し
ている。
【0152】
ステップS51において、CPU311は、左変換行列75Lに基づいて、外側撮像部
(左)座標系で表されたマーカー座標系の原点の座標V1を計算する。具体的には、(0
,0,0)に対して、左変換行列75Lを乗算することで、外側撮像部(左)座標系で表
されたマーカー座標系の原点の座標V1が求まる。なお、ここでは、外側撮像部(左)座
標系で表されたマーカー座標系の原点の座標をV1としたが、これに替えて、外側撮像部
(右)座標系で表されたマーカー座標系の原点の座標をV1としてもよい。
【0153】
ステップS52において、CPU311は、ステップS50で求めたV0の大きさ(原
点からの距離)(図29参照)を、ew(図12参照)に格納し、ステップS51で求め
たV1のz軸値の絶対値(図27参照)を、ed(図12参照)に格納する。ただし、e
wの値は、マーカー座標系における長さの単位で計算されており、実世界における長さの
単位と一致するものではない。そして、前述の通り、外側撮像部(左)23aと外側撮像
部(右)23bの間の実距離は既知(例えば3.5cm)であるので、この実距離とew
の値を用いて、実世界における長さの単位と仮想空間における長さの単位とを一致させる
ことができる。なお、マーカー61のサイズが既知であれば、マーカー画像の認識結果に
基づいて求められるマーカー61のサイズと、実世界におけるマーカー61のサイズとの
対応関係から、実世界における長さの単位と仮想空間における長さの単位とを一致させる
こともできる。
【0154】
なお、ゲーム装置10に対する外側撮像部(左)23aおよび外側撮像部(右)23b
の取り付け精度の誤差により、外側撮像部(左)23aの撮影方向と外側撮像部(右)2
3bの撮影方向が平行になっていない場合には、このようにして計算される外側撮像部(
左)23aと外側撮像部(右)23bの間の距離(ew)は、外側撮像部23とマーカー
61との間の撮影方向についての距離に応じて変動する。それゆえ、後述するように、外
側撮像部23とマーカー61との間の撮影方向についての距離が変化したときには、外側
撮像部(左)23aと外側撮像部(右)23bの間の距離(後述するEyeWidth)
は、そのときのマーカー・カメラ変換行列を用いて再計算される。
【0155】
なお、本実施形態では、ewをV0の大きさとしたが、V0の「左変換行列75Lにより
示される外側撮像部(左)23aの位置と右変換行列75Rにより示される外側撮像部(
右)23bの位置を結ぶ方向」の成分としてもよい。
【0156】
このようにして計算されたewは「外側撮像部(左)23aと外側撮像部(右)23b
との間のマーカー座標系における間隔」であるが、これを左仮想カメラ63Rと右仮想カ
メラ63Rとの間の間隔として用いる(後述のステップS65またはS68)。
【0157】
なお、ewを求める方法は、上述した方法以外にもある。例えば、(0,0,0)に左
変換行列75Lを乗算することによって、外側撮像部(左)座標系で表されたマーカー座
標系の原点の座標Vl(すなわち、外側撮像部(左)23aに対するマーカー61の相対
位置)を求めるとともに、(0,0,0)に右変換行列75Rを乗算することによって、
外側撮像部(右)で表されたマーカー座標系の原点の座標Vr(すなわち、外側撮像部(
右)23bに対するマーカー61の相対位置)を求め、こうして求めた座標Vlと座標V
rの間の距離を計算することによって、ewを求めても構わない。
【0158】
ステップS53において、CPU311は、LogIndex(図12参照)の値が1
(初期値)より大きいかどうかを判断し、1より大きい場合には処理はステップS57に
進み、そうでない場合(すなわち1である場合)には処理はステップS54に進む。Lo
gIndexは、後述する配列(LogWidth、LogDepth)の各要素を識別
するための変数である。
【0159】
ステップS54において、CPU311は、ステップS52で求めたewの値を配列L
ogWidth[LogIndex]に格納する。さらに、ステップS52で求めたed
の値を配列LogDepth[LogIndex]に格納する。さらに、LogInde
xの値をインクリメントする。LogWidthは、ewの値を複数保持しておくための
配列変数である。LogDepthは、edの値を複数保持しておくための配列変数であ
る。
【0160】
ステップS55において、CPU311は、LogIndexの値がLogMaxの値
よりも大きいかどうかを判定し、大きい場合には処理はステップS56に進み、そうでな
い場合(すなわちLogIndexの値がLogMaxの値以下の場合)には、仮想カメ
ラ間隔決定処理を終了する。
【0161】
ステップS56において、CPU311は、LogWidthの各要素の平均値を計算
し、当該平均値をEyeWidthに格納する。さらに、LogDepthの各要素の平
均値を計算し、当該平均値をEyeDepthに格納する。さらに、EyeMeasur
eの値をfalseに設定する。さらに、マーカー認識モード79を、片画像認識モード
に設定する。EyeDepthとは、左変換行列75Lが示す外側撮像部(左)23aの
マーカー座標系における位置を示す座標(または右変換行列75Rが示す外側撮像部(右
)23bのマーカー座標系における位置を示す座標)から、マーカー座標系の原点までの
奥行き距離(深さ:撮影方向についての距離)を示す変数であって、後述する図17のス
テップS72における判断の際の基準値として用いられる。EyeDepthの初期値は
0である。ステップS56の処理が終了すると、仮想カメラ間隔決定処理は終了する。
【0162】
ステップS57において、CPU311は、ステップS52で求めたewの値とLog
Width[1]の値の差の絶対値が、LogWidth[1]の値の10%よりも小さ
く、かつ、ステップS52で求めたedの値とLogDepth[1]の値の差の絶対値
が、LogDepth[1]の値の10%よりも小さいかどうかを判断する。そして、ス
テップS57の判断結果が肯定である場合には処理はステップS54に進み、ステップS
57の判断結果が否定である場合には処理はステップS58に進む。
【0163】
ステップS58において、CPU311は、LogIndexの値を1(初期値)にリ
セットして、仮想カメラ間隔決定処理を終了する。
【0164】
以上のように、仮想カメラ間隔決定処理では、左実世界画像に含まれるマーカー61の
位置及び姿勢に基づいて計算される外側撮像部(左)23aの位置と、右実世界画像に含
まれるマーカー61の位置及び姿勢に基づいて計算される外側撮像部(右)23bの位置
とに基づいて、ewとedが計算される。このようにして計算されたewの値とedの値
が、LogWidthとLogDepthに順次格納される。このとき、新たに計算され
たewの値が、LogWidthに最初に格納されたewの値(すなわちLogWidt
h[1]の値)を基準とした所定範囲(±10%)から外れた場合や、新たに計算された
edの値が、LogDepthに最初に格納されたedの値(すなわちLogDepth
[1]の値)を基準とした所定範囲(±10%)から外れた場合には、LogWidth
とLogDepthに再び最初からewの値とedの値を格納し直す。したがって、逐次
計算されるewの値とedの値に大きな変動が見られない場合(すなわち、ewの値とe
dの値が一定期間、ある程度安定している場合)にのみ、それらのewの値の平均値とそ
れらのedの値の平均値が、EyeWidthおよびEyeDepthに格納される。
【0165】
ところで、ユーザがゲーム装置10を移動させたり回転させたりしているときには、外
側撮像部23によって撮像される左実世界画像および右実世界画像がぼけやすく、マーカ
ー61の認識精度が著しく低下し、逐次検出されるewの値やedの値が大きく変動しや
すい。そこで、このような状況で検出される信頼性の低いewの値およびedの値に基づ
いてEyeWidthの値およびEyeDepthの値を決定することは避けるべきであ
る。よって、本実施形態では、逐次計算されるewの値とedの値に大きな変動が見られ
ない場合にのみ、それらの値に基づいてEyeWidthの値およびEyeDepthの
値を決定している。また、複数回計算されたewの値およびedの値の平均値をEyeW
idthの値およびEyeDepthの値として用いることにより、EyeWidthの
値およびEyeDepthの値の精度を高めることができる。
【0166】
(ビュー行列生成処理)
次に、更新処理(図15)におけるステップS44のビュー行列生成処理の詳細につい
て、図17のフローチャートを参照して説明する。
【0167】
図17のステップS60において、CPU311は、EyeWidthが0より大きい
かどうかを判断し、0より大きい場合には処理はステップS63に進み、そうでない場合
(すなわち、0である場合)には処理はステップS61に進む。
【0168】
ステップS61において、CPU311は、表示モードが同期表示モードであるかどう
かを判断する。そして、同期表示モードである場合には、ビュー行列生成処理を終了し、
そうでない場合(すなわち非同期表示モードである場合)には、処理はステップS62に
進む。
【0169】
ステップS62において、CPU311は、ARActiveの値をfalseに設定
する。そして、ビュー行列生成処理を終了する。
【0170】
ステップS63において、CPU311は、左変換行列75Lを参照して、左実世界画
像のマーカー認識に成功しているかどうかを判断し、左実世界画像のマーカー認識に成功
している場合には処理はステップS64に進み、そうでない場合(すなわち、左変換行列
75Lの値がヌル値である場合)には処理はステップS66に進む。
【0171】
ステップS64において、CPU311は、左変換行列75Lの値を、左ビュー行列7
6Lに格納する。これは、左実世界画像に含まれるマーカー61の位置及び姿勢に基づい
て計算されたマーカー座標系における外側撮像部(左)23aの位置及び姿勢を、左目用
の仮想空間画像を生成するための左仮想カメラ63Lの位置及び姿勢としてそのまま扱う
ことを意味する。
【0172】
ステップS65において、CPU311は、左ビュー行列76Lの値に対して平行移動
行列(−EyeWidth,0,0)を乗算した結果の値を、右ビュー行列76Rに格納
する。これは、図30に示すように、前述のステップS64において設定された仮想空間
のワールド座標系における左仮想カメラ63Lの位置から、左仮想カメラ座標系のx軸の
正方向にEyeWidthの値だけずらした位置を、右目用の仮想空間画像を生成するた
めの右仮想カメラ63Rの位置として扱うことを意味する。また、右仮想カメラ63Rの
姿勢は、左仮想カメラ63Lの姿勢と同じとなる(すなわち、左仮想カメラ座標系のx軸
,y軸,z軸が、右仮想カメラ座標系のx軸,y軸,z軸とそれぞれ平行となる)。これ
により、左仮想カメラ63Lの位置及び姿勢と、右仮想カメラ63Rの位置及び姿勢との
整合性が保たれるので、上側LCD22において正常に立体視できるように仮想オブジェ
クト62を表示することができる。
【0173】
ステップS66において、CPU311は、右変換行列75Rを参照して、右実世界画
像のマーカー認識に成功しているかどうかを判断し、右実世界画像のマーカー認識に成功
している場合には処理はステップS67に進み、そうでない場合(すなわち、右変換行列
75Rの値がヌル値である場合)にはビュー行列生成処理を終了する。
【0174】
ステップS67において、CPU311は、右変換行列75Rの値を、右ビュー行列7
6Rに格納する。これは、右実世界画像に含まれるマーカー61の位置及び姿勢に基づい
て計算されたマーカー座標系における外側撮像部(右)23bの位置及び姿勢を、右目用
の仮想空間画像を生成するための右仮想カメラ63Rの位置及び姿勢としてそのまま扱う
ことを意味する。
【0175】
ステップS68において、CPU311は、右ビュー行列76Rの値に対して平行移動
行列(EyeWidth,0,0)を乗算した結果の値を、左ビュー行列76Lに格納す
る。これは、図31に示すように、前述のステップS67において設定された仮想空間の
ワールド座標系における右仮想カメラ63Rの位置から、右仮想カメラ座標系のx軸の負
方向にEyeWidthの値だけずらした位置を、左目用の仮想空間画像を生成するため
の左仮想カメラ63Lの位置として扱うことを意味する。また、左仮想カメラ63Lの姿
勢は、右仮想カメラ63Rの姿勢と同じとなる(すなわち、左仮想カメラ座標系のx軸,
y軸,z軸が、右仮想カメラ座標系のx軸,y軸,z軸とそれぞれ平行となる)。これに
より、左仮想カメラ63Lの位置及び姿勢と、右仮想カメラ63Rの位置及び姿勢との整
合性が保たれるので、上側LCD22において正常に立体視できるように仮想オブジェク
ト62を表示することができる。
【0176】
このように、本実施例では、一方の仮想カメラ(例えば、左仮想カメラ63L)の位置
および姿勢については、一方の外側撮像部(例えば、外側撮像部(左)23a)の撮影画
像から算出された「マーカー・カメラ変換行列」を用いて設定するが(より具体的には、
そのまま用いる)、他方の仮想カメラ(例えば、右仮想カメラ63R)の位置および姿勢
については、他方の外側撮像部(例えば、外側撮像部(右)23b)の撮影画像から算出
された「マーカー・カメラ変換行列」を用いずに設定する。
【0177】
ステレオカメラでARの立体視表示をおこなう場合においては、仮想カメラは右用と左
用の2つを設定する必要があり、また、「マーカー・カメラ変換行列」は外側撮像部(左
)23aによる変換行列(左変換行列25L)と外側撮像部(右)23bによる変換行列
(右変換行列25R)がある。本実施形態では、各仮想カメラ63L,63Rを設定する
ときに、各変換行列25L,25Rを用いるのではなくて、1つの変換行列を設定して(
変換行列25L,25Rの一方の変換行列をそのまま用いて、または、両方の変換行列2
5L,25Rから別の新たな1つの変換行列を生成して(平均位置、平均姿勢とするなど
))、その1つの変換行列を用いて両方の仮想カメラ63L,63Rの位置および姿勢を
設定する。これにより、AR認識における精度の問題を解消することができる。
【0178】
ステップS69において、CPU311は、ARActiveの値をtrueに設定す
る。これにより、実世界画像に対する仮想オブジェクト62の合成表示が開始または再開
される。
【0179】
ステップS70において、CPU311は、EyeMeasureの値がtrueかど
うかを判断し、trueである場合にはビュー行列生成処理を終了し、そうでない場合(
すなわちfalseである場合)には処理はステップS71に進む。
【0180】
ステップS71において、CPU311は、ステップS64またはステップS68で決
定された左ビュー行列76Lに基づいて、左仮想カメラ座標系で表された仮想空間の原点
の座標Vを計算する。具体的には、図32に示すように、(0,0,0)に対して左ビュ
ー行列76Lを乗算することで、左仮想カメラ座標系で表された仮想空間の原点の座標V
が求まる。なお、ここでは、左仮想カメラ座標系で表された仮想空間の原点の座標をVと
したが、これに替えて、ステップS65またはステップS67で決定された右ビュー行列
76Rに基づいて計算された、右仮想カメラ座標系で表された仮想空間の原点の座標をV
としてもよい。このようにして求められたVは、外側撮像部(左)座標系におけるマーカ
ー61の位置と実質的に同一である(ただし、このVの値は、仮想空間またはマーカー座
標系における長さの単位で計算されており、実世界における長さの単位と一致するもので
はない。)。
【0181】
ステップS72において、CPU311は、Vのz座標値の絶対値(|V.z|)とE
yeDepthの値との差の絶対値が、EyeDepthの値の20%よりも大きいかど
うかを判断し、大きい場合には処理はステップS73に進み、そうでない場合にはビュー
行列生成処理を終了する。|V.z|は、外側撮像部23からマーカー61までの撮影方
向についての距離(深さ)と実質的に同一である。すなわち、ステップS72では、仮想
カメラ間隔決定処理(図16)においてEyeWidthの値を計算したときを基準とし
て、外側撮像部23からマーカー61までの奥行き距離(深さ)が、±20%の範囲を超
えて変化したかどうかを判断している。
【0182】
ステップS73において、CPU311は、EyeMeasureの値をtrueに設
定し、さらに、LogIndexの値を1にリセットし、さらに、マーカー認識モード7
9を両画像認識モードに設定して、ビュー行列生成処理を終了する。この結果、仮想カメ
ラ間隔決定処理によるEyeWidthの計算処理が再び開始されることになる。
【0183】
上記のように、仮想カメラ間隔決定処理において、EyeWidthの値を前回計算し
たときを基準として、外側撮像部23からマーカー61までの奥行き距離(深さ)が所定
範囲を超えて変化したときに、EyeWidthを再計算する理由は、ゲーム装置10に
対する外側撮像部(左)23aおよび外側撮像部(右)23bの取り付け精度の誤差によ
り、外側撮像部23からマーカー61までの奥行き距離(深さ)に応じて最適な仮想カメ
ラ間隔(EyeWidth)が変化するからである。例えば、外側撮像部(左)23aの
撮影方向と外側撮像部(右)23bの撮影方向が平行になっていない状況において、図3
3に示すように外側撮像部23からマーカー61までの奥行距離がD1であるときに仮想
カメラ間隔決定処理において計算されるEyeWidthの値をEyeWidth1とす
ると、仮想空間において、左仮想カメラ63Lと右仮想カメラ63Rは、図34に示すよ
うにEyeWidth1の間隔を開けて配置されるのが適切である(そうすることによっ
て、例えば仮想空間の原点に配置した仮想オブジェクトが、実世界画像のマーカー61上
に実在するかのように、適切に立体表示されるようになる。)。そして、図35に示すよ
うに外側撮像部23からマーカー61までの奥行距離がD1よりも小さいD2に変化した
場合には、仮想カメラ間隔決定処理において計算されるEyeWidthの値は、Eye
Width1よりも小さいEyeWidth2となり、仮想空間において、左仮想カメラ
63Lと右仮想カメラ63Rは、図36に示すようにEyeWidth2の間隔を開けて
配置されるのが適切である。
【0184】
(メイン実世界画像設定処理)
次に、更新処理(図15)におけるステップS45のメイン実世界画像設定処理の詳細
について、図18のフローチャートを参照して説明する。
【0185】
図18のステップS80において、CPU311は、ARActiveの値がtrue
かどうかを判断し、trueである場合には、処理はステップS81に進み、そうでない
場合(すなわちARActiveの値がfalseである場合)には、メイン実世界画像
設定処理を終了する。
【0186】
ステップS81において、CPU311は、左射影行列77Lおよび右射影行列77R
を生成する。左射影行列77Lは、左仮想カメラ63Lから見た仮想空間の描画範囲を規
定する行列であって、本実施形態では、図37に示すように、メイン処理のステップS2
3で決定した左実世界画像の描画範囲に対応するような左射影行列77Lが生成される。
右射影行列77Rは、右仮想カメラ63Rから見た仮想空間の描画範囲を規定する行列で
あって、本実施形態では、図38に示すように、メイン処理のステップS27で決定した
右実世界画像の描画範囲に対応するような右射影行列77Rが生成される。
【0187】
具体的には、左仮想カメラ63Lの射影行列は、外側撮像部(左)23aの水平方向の
画角と、当該左仮想カメラの水平方向の画角との比が、左実世界画像の横方向の長さにお
ける描画範囲の横方向の位置および大きさを表す比と、同じになるような画角を持つ視体
積を定義する射影行列として設定される。
【0188】
ステップS82において、CPU311は、メイン実世界画像が左実世界画像かどうか
を判断し、メイン実世界画像が左実世界画像である場合には処理はステップS83に進み
、そうでない場合(すなわち、メイン実世界画像が右実世界画像である場合)には処理は
ステップS86に進む。
【0189】
ステップS83において、CPU311は、(0,0,0,1)に左ビュー行列76L
および左射影行列77Lを乗算することによって、ベクトルVを求める。
【0190】
ステップS84において、CPU311は、ベクトルVの第1成分(x)を第4成分(
w)で乗算した結果の値(V.x/V.w)が0.5より大きいかどうかを判断し、0.
5より大きい場合には処理はステップS85に進み、そうでない場合にはメイン実世界画
像設定処理を終了する。上記のV.x/V.wの値は、左目用の仮想空間画像上で、仮想
空間のワールド座標系の原点が、画像の左右方向のどの位置に存在するかを示している(
なお、「左目用の仮想空間画像上で、仮想空間のワールド座標系の原点が、画像の左右方
向のどの位置に存在するか」は、「外側撮像部(左)23aの撮影画像上で、マーカー座
標系の原点が、画像の左右方向のどの位置に存在するか」と等価である)。仮想空間のワ
ールド座標系の原点が左目用の仮想空間画像の中央に位置するときは、V.x/V.wの
値が0となり、仮想空間のワールド座標系の原点が左目用の仮想空間画像の左端に近づく
ほど、V.x/V.wの値が−1.0に近づき、仮想空間のワールド座標系の原点が左目
用の仮想空間画像の右端に近づくほど、V.x/V.wの値が+1.0に近づく。V.x
/V.wの値が0.5より大きいということは、仮想空間のワールド座標系の原点が左目
用の仮想空間画像の右端領域(図39の斜線領域)に位置することを意味する。言い換え
れば、外側撮像部(左)23aによって撮像された左実世界画像の右端領域にマーカー6
1が位置していることを意味する。
【0191】
ステップS85において、CPU311は、メイン実世界画像を左実世界画像から右実
世界画像へと変更する。すなわち、左仮想カメラ63Lによる仮想空間画像上で、仮想空
間の原点が、画像の中心よりも所定距離だけ(または画像の左右幅の所定割合だけ)右の
位置よりも右側に存在するときに、メイン実世界画像を右実世界画像に変更する。または
、外側撮像部(左)23aによる撮影画像上で、マーカー座標系の原点が、画像の中心よ
りも所定距離だけ(または画像の左右幅の所定割合だけ)右の位置よりも右側に存在する
ときに、メイン実世界画像を右実世界画像に変更する。これにより、例えば左実世界画像
においてマーカー61の位置が徐々に右方向へ移動して、最終的に左実世界画像からマー
カー61が消えてしまったとしても、左実世界画像からマーカー61が消えてしまう前に
メイン実世界画像が右実世界画像へと変更されるので、片画像認識モードにおいて継続的
にマーカー61を認識することが可能となる。ステップS85の処理が終わると、メイン
実世界画像設定処理を終了する。
【0192】
ステップS86において、CPU311は、(0,0,0,1)に右ビュー行列76R
および右射影行列77Rを乗算することによって、ベクトルVを求める。
【0193】
ステップS87において、CPU311は、ベクトルVの第1成分(x)を第4成分(
w)で乗算した結果の値(V.x/V.w)が−0.5より小さいかどうかを判断し、−
0.5より小さい場合には処理はステップS87に進み、そうでない場合にはメイン実世
界画像設定処理を終了する。上記のV.x/V.wの値は、右目用の仮想空間画像上で、
仮想空間のワールド座標系の原点が、画像の左右方向のどの位置に存在するかを示してい
る。仮想空間のワールド座標系の原点が右目用の仮想空間画像の中央に位置するときは、
V.x/V.wの値が0となり、仮想空間のワールド座標系の原点が右目用の仮想空間画
像の左端に近づくほど、V.x/V.wの値が−1.0に近づき、仮想空間のワールド座
標系の原点が右目用の仮想空間画像の右端に近づくほど、V.x/V.wの値が+1.0
に近づく。V.x/V.wの値が−0.5より小さいということは、仮想空間のワールド
座標系の原点が右目用の仮想空間画像の左端領域(図40の斜線領域)に位置することを
意味する。言い換えれば、外側撮像部(右)23bによって撮像された右実世界画像の左
端領域にマーカー61が位置していることを意味する。
【0194】
ステップS88において、CPU311は、メイン実世界画像を右実世界画像から左実
世界画像へと変更する。これにより、例えば右実世界画像においてマーカー61の位置が
徐々に左方向へ移動して、最終的に右実世界画像からマーカー61が消えてしまったとし
ても、右実世界画像からマーカー61が消えてしまう前にメイン実世界画像が左実世界画
像へと変更されるので、片画像認識モードにおいて継続的にマーカー61を認識すること
が可能となる。ステップS88の処理が終わると、メイン実世界画像設定処理を終了する

【0195】
(表示モード切替処理)
次に、更新処理(図15)におけるステップS46の表示モード切替処理の詳細につい
て、図19のフローチャートを参照して説明する。
【0196】
図19のステップS90において、CPU311は、表示モードが同期表示モードかど
うかを判断し、同期表示モードである場合には処理はステップS91に進み、そうでない
場合(すなわち、非同期表示モードである場合)には処理はステップS96に進む。
【0197】
ステップS91において、CPU311は、EyeWidthが0より大きく、かつ、
左実世界画像および右実世界画像のいずれかの実世界画像のマーカー認識に成功している
かどうかを判断する。そして、判断結果が肯定である場合には、処理はステップS92に
進み、判断結果が否定である場合(すなわち、EyeWidthが0であるか、もしくは
、左実世界画像および右実世界画像の両方の実世界画像のマーカー認識に失敗している場
合)には、処理はステップS93に進む。
【0198】
ステップS92において、CPU311は、SyncCount(図12参照)の値を
20に設定する。SyncCountは、表示モードを同期表示モードから非同期表示モ
ードへと切り替えるタイミングを決定するための変数である。ステップS92の処理が終
わると、表示モード切替処理を終了する。
【0199】
ステップS93において、CPU311は、SyncCountの値をデクリメントす
る。
【0200】
ステップS94において、CPU311は、SyncCountの値が0より大きいか
どうかを判断し、0より大きい場合には表示モード切替処理を終了、そうでない場合(す
なわち、0である場合)には処理はステップS95に進む。
【0201】
ステップS95において、CPU311は、LogIndexの値を1に設定し、さら
にEyeWidthおよびEyeDepthの値を0に設定し、さらに表示モード78を
同期表示モードから非同期表示モードへと変更し、さらにマーカー認識モード79を両画
像認識モードに設定する。ステップS95の処理が終わると、表示モード切替処理を終了
する。
【0202】
ステップS96において、CPU311は、EyeWidthが0より大きく、かつ、
左実世界画像および右実世界画像のいずれかの実世界画像のマーカー認識に成功している
かどうかを判断する。そして、判断結果が肯定である場合には、処理はステップS97に
進み、判断結果が否定である場合(すなわち、EyeWidthが0であるか、もしくは
、左実世界画像および右実世界画像の両方の実世界画像のマーカー認識に失敗している場
合)には、表示モード切替処理を終了する。
【0203】
ステップS97において、CPU311は、SyncCountの値を20に設定し、
さらに表示モードを非同期表示モードから同期表示モードへと変更する。ステップS97
の処理が終わると、表示モード切替処理を終了する。
【0204】
上記のように、表示モード切替処理によって、同期表示モードと非同期表示モードとの
間で表示モードが適宜に切り替えられる。より具体的には、画像表示プログラムの実行が
開始された直後は表示モードは非同期表示モードとなり、上側LCD22には常に最新の
実世界画像が表示される。その後、マーカー61が認識されて、上側LCD22に表示さ
れる実世界画像に仮想オブジェクト62を合成表示できる状態になった時点で、表示モー
ドは非同期表示モードから同期表示モードへと変化する。同期表示モードでは、仮想オブ
ジェクト62を実世界画像内の正しい位置に合成表示するために、最後にマーカー61を
認識することができた実世界画像(必ずしも最新の実世界画像とは限らない)に仮想オブ
ジェクト62を合成した合成画像が、上側LCD22に表示される。これにより、実世界
画像に合成表示される仮想オブジェクト62の位置ズレを防止することができる。その後
、マーカー61を認識することができない状態が一定時間継続した時点で、表示モードは
同期表示モードから非同期表示モードへと変化し、上側LCD22には常に最新の実世界
画像が表示されるようになる。これにより、マーカー61を認識することができない状態
が続いたときに、上側LCD22に古い画像が表示され続けてしまうことを防止すること
ができる。
【0205】
(本実施形態の効果)
以上のように、本実施形態によれば、左実世界画像および右実世界画像のいずれか一方
のマーカー認識結果から計算される一方の外側撮像部(外側撮像部(左)23aまたは外
側撮像部(右)23b)のマーカー座標系における位置及び姿勢に基づいて、一方の仮想
カメラの位置および姿勢が決定され、さらに、左仮想カメラ63Lの位置及び姿勢と右仮
想カメラ63Rの位置及び姿勢が理想的な関係となるように、他方の仮想カメラの位置及
び姿勢が決定される。したがって、立体視可能な表示装置において、正常に立体視できる
ように仮想オブジェクト62を表示することができる。
【0206】
また、左実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(左)
23aの位置と、右実世界画像に対するマーカー認識結果に基づいて計算された外側撮像
部(右)23bの位置とに基づいて、両外側撮像部の間隔を算出し、その結果に基づいて
仮想カメラ間隔(EyeWidth)を決定し、一方の仮想カメラの位置を当該仮想カメ
ラの座標系の撮影方向に直交する方向に当該間隔だけ移動させることにより他方の仮想カ
メラの位置を決定する。これにより、両仮想カメラが撮影方向に直行する方向に並ぶよう
に設定することができる。また、仮に、外側撮像部(左)23aと外側撮像部(右)23
bの間隔が既知でない場合や、ゲーム装置10に対する外側撮像部(左)23aおよび外
側撮像部(右)23bの取り付け精度が悪い場合であっても、左仮想カメラ63Lと右仮
想カメラ63Rを理想的な間隔で配置することができる。
【0207】
また、仮想カメラ間隔決定処理によって仮想カメラ間隔(EyeWidth)が決定さ
れた後は、メイン実世界画像に対してのみマーカー認識処理を行えばよいため、常に左実
世界画像と右実世界画像の両方に対してマーカー認識処理を行う場合と比較して、処理負
担を軽減することができる。
【0208】
なお、外側撮像部(左)23aと外側撮像部(右)23bの間隔が既知である場合には
、仮想カメラ間隔決定処理の結果に基づいて、実世界における外側撮像部(左)23aと
外側撮像部(右)23bの間隔(例えば3.5cm)に対応する、マーカー座標系におけ
る外側撮像部(左)23aと外側撮像部(右)23bの間隔(EyeWidth)が判明
する。したがって、例えば、身長が30cmのキャラクタ(仮想オブジェクト)を実世界
画像に合成表示したり、実世界画像に合成表示されるキャラクタ(仮想オブジェクト)を
秒速10cmで移動させたりというように、仮想空間において、実世界のスケールに基づ
いた処理を行うことが可能となる。
【0209】
(変形例)
なお、上記実施形態では、実世界画像に含まれるマーカー61の位置及び姿勢を認識し
て、その認識結果に応じて実世界画像に仮想オブジェクト62を合成しているが、他の実
施形態では、マーカー61に限らず、任意の認識対象の位置及び/又は姿勢を認識して、
その認識結果に応じて実世界画像に仮想オブジェクト62を合成してもよい。認識対象の
一例として、人物の顔が挙げられる。
【0210】
また、上記実施形態では、外側撮像部23によってリアルタイムに撮像される実世界画
像に基づいて上側LCD22に立体画像を表示しているが、他の実施形態では、外側撮像
部23や外部のステレオカメラ等によって過去に撮像された動画像データに基づいて上側
LCD22に立体画像を表示するようにしてもよい。
【0211】
また、上記実施形態では、外側撮像部23がゲーム装置10に予め搭載されているが、
他の実施形態では、ゲーム装置10に着脱可能な外付け型のカメラを利用してもよい。
【0212】
また、上記実施形態では、上側LCD22がゲーム装置10に予め搭載されているが、
他の実施形態では、ゲーム装置10に着脱可能な外付け型の立体視ディスプレイを利用し
てもよい。
【0213】
また、上記実施形態では、マーカー座標系の原点の位置に仮想オブジェクト62を配置
しているが、他の実施形態では、マーカー座標系の原点から離れた位置に仮想オブジェク
ト62を配置してもよい。
【0214】
また、上記実施形態では、仮想空間に仮想オブジェクトを1つだけ配置しているが、他
の実施形態では、仮想空間に複数の仮想オブジェクトを配置してもよい。
【0215】
また、上記実施形態では、仮想カメラ間隔決定処理において、マーカー座標系における
外側撮像部(左)23aと外側撮像部(右)23bの間隔(EyeWidth)を計算し
た後、当該間隔に基づいて、マーカー認識結果に基づいて計算された左仮想カメラ63L
および右仮想カメラ63Rのいずれか一方の仮想カメラの位置及び姿勢から、他方の仮想
カメラの位置及び姿勢を決定しているが、他の実施形態では、左実世界画像に対するマー
カー認識結果に基づいて計算された外側撮像部(左)23aの位置及び姿勢と、右実世界
画像に対するマーカー認識結果に基づいて計算された外側撮像部(右)23bの位置及び
姿勢とに基づいて、外側撮像部23の位置および姿勢(例えば、外側撮像部(右)23a
の位置と外側撮像部(左)23bの位置の平均位置、外側撮像部(右)23aの姿勢と外
側撮像部(左)23bの姿勢の平均姿勢)を算出し、それに基づいて、左仮想カメラ63
Lおよび右仮想カメラ63Rの位置及び/又は姿勢を決定するようにしてもよい。例えば
、左仮想カメラ63Lおよび右仮想カメラ63Rの姿勢が、いずれも、左実世界画像に対
するマーカー認識結果に基づいて計算された外側撮像部(左)23aの姿勢と、右実世界
画像に対するマーカー認識結果に基づいて計算された外側撮像部(右)23bの姿勢のち
ょうど中間の姿勢となるように、左仮想カメラ63Lおよび右仮想カメラ63Rの姿勢を
決定するようにしてもよい。また例えば、仮想カメラ間隔決定処理において外側撮像部(
左)23aと外側撮像部(右)23bの間隔(EyeWidth)を計算した後に、左実
世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(左)23aの位置
と、右実世界画像に対するマーカー認識結果に基づいて計算された外側撮像部(右)23
bの位置の平均位置に対応する仮想空間内の位置から互いに反対方向にEyeWidth
/2だけ仮想カメラの撮影方向と直交する方向にずらすことによって、左仮想カメラ63
Lおよび右仮想カメラ63Rの位置を決定するようにしてもよい。
【0216】
また、上記実施形態では、仮想カメラ間隔決定処理によって仮想カメラ間隔(EyeW
idth)が決定された後は、メイン実世界画像に対してのみマーカー認識処理を行って
いるが、他の実施形態では、常に左実世界画像と右実世界画像の両方に対してマーカー認
識処理を行うようにしてもよい。
【0217】
また、上記実施形態では、上側LCD22がパララックスバリア方式の立体表示装置で
あるが、他の実施形態では、上側LCD22がレンチキュラー方式等の他の任意の方式の
立体表示装置であってもよい。例えば、レンチキュラー方式の立体表示装置を利用する場
合には、左目用画像と右目用画像をCPU311または他のプロセッサで合成してから、
当該合成画像をレンチキュラー方式の立体表示装置に供給するようにしてもよい。
【0218】
また、上記実施形態では、ゲーム装置10を用いて実世界画像に仮想オブジェクトを合
成表示しているが、他の実施形態では、任意の情報処理装置または情報処理システム(例
えば、PDA(Personal Digital Assistant)、携帯電話、
パーソナルコンピュータ、カメラ等)を用いて実世界画像に仮想オブジェクトを合成表示
してもよい。
【0219】
また、上記実施形態では、一台の情報処理装置(ゲーム装置10)のみによって画像表
示処理を実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置を有
する画像表示システムにおいて、当該複数の情報処理装置が画像表示処理を分担して実行
するようにしてもよい。
【符号の説明】
【0220】
10 ゲーム装置
11 下側ハウジング
12 下側LCD
13 タッチパネル
14 操作ボタン
15 アナログスティック
16 LED
21 上側ハウジング
22 上側LCD
23 外側撮像部
23a 外側撮像部(左)
23b 外側撮像部(右)
24 内側撮像部
25 3D調整スイッチ
26 3Dインジケータ
28 タッチペン
31 情報処理部
311 CPU
312 GPU
32 メインメモリ
60a〜60c ボール
61 マーカー
62 仮想オブジェクト
63L 左仮想カメラ
63R 右仮想カメラ

【特許請求の範囲】
【請求項1】
立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像
を立体表示する画像表示プログラムであって、コンピュータを、
左目用の実カメラによって撮像された第1実世界画像を取得する第1実世界画像取得手
段、
右目用の実カメラによって撮像された第2実世界画像を取得する第2実世界画像取得手
段、
前記第1実世界画像における所定の撮像対象の見え方と前記第2実世界画像における当
該撮像対象の見え方に基づいて、前記左目用の実カメラと前記右目用の実カメラの相対位
置関係を算出するカメラ相対位置関係算出手段、
所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目
用の画像を生成するための右仮想カメラの位置を、前記カメラ相対位置関係算出手段によ
って算出された相対位置関係に応じて離れるように、それぞれ決定する仮想カメラ設定手
段、
前記左仮想カメラから見た前記仮想空間を示す第1仮想空間画像を生成する第1仮想空
間画像生成手段、
前記右仮想カメラから見た前記仮想空間を示す第2仮想空間画像を生成する第2仮想空
間画像生成手段、および、
前記第1実世界画像に前記第1仮想空間画像を合成し、かつ、前記第2実世界画像に前
記第2仮想空間画像を合成して、前記立体表示装置に立体視のための画像出力をおこなう
表示制御手段として機能させる、画像表示プログラム。
【請求項2】
前記画像表示プログラムは、前記コンピュータを、
前記第1実世界画像における前記撮像対象の位置および姿勢に基づいて、前記左目用
の実カメラと前記撮像対象との間の少なくとも相対位置を算出する第1位置姿勢算出手段
、および、
前記第2実世界画像における前記撮像対象の位置および姿勢に基づいて、前記右目用
の実カメラと前記撮像対象との間の少なくとも相対位置を算出する第2位置姿勢算出手段
としてさらに機能させ、
前記カメラ相対位置関係算出手段は、前記第1位置姿勢算出手段によって算出される、
前記撮像対象に対する前記左目用の実カメラの相対位置と、前記第2位置姿勢算出手段に
よって算出される、前記撮像対象に対する前記右目用の実カメラの相対位置とに基づいて
、前記左目用の実カメラと前記右目用の実カメラの相対位置関係を算出する、請求項1に
記載の画像表示プログラム。
【請求項3】
前記第1位置姿勢算出手段および前記第2位置姿勢算出手段の少なくとも一方は、前記
実世界画像における前記撮像対象の位置および姿勢に基づいて、前記実カメラと前記撮像
対象との間の相対位置に加えて相対姿勢を算出し、
前記仮想カメラ設定手段は、前記第1位置姿勢算出手段および前記第2位置姿勢算出手
段の少なくとも一方によって算出される前記実カメラと前記撮像対象との間の相対姿勢に
基づいて、前記左仮想カメラおよび前記右仮想カメラの姿勢を決定する、請求項2に記載
の画像表示プログラム。
【請求項4】
前記カメラ相対位置関係算出手段によって算出される前記相対位置関係は、前記左目用
の実カメラと前記右目用の実カメラの間隔である、請求項1に記載の画像表示プログラム

【請求項5】
前記カメラ相対位置関係算出手段は、前記第1実世界画像に基づいて算出される前記左
目用の実カメラに対する前記撮像対象の相対位置と、前記第2実世界画像に基づいて算出
される前記右目用の実カメラに対する前記撮像対象の相対位置との差に基づいて、前記左
目用の実カメラと前記右目用の実カメラの相対位置関係を算出する、請求項1に記載の画
像表示プログラム。
【請求項6】
前記画像表示プログラムは、前記コンピュータを、
前記第1実世界画像に基づいて、前記撮像対象を基準とした座標系で表される座標を
前記左目用の実カメラを基準とした座標系で表される座標へと変換する第1変換行列を算
出する第1変換行列算出手段、および、
前記第2実世界画像に基づいて、前記撮像対象を基準とした座標系で表される座標を
前記右目用の実カメラを基準とした座標系で表される座標へと変換する第2変換行列を算
出する第2変換行列算出手段としてさらに機能させ、
前記カメラ相対位置関係算出手段は、原点を表す3次元ベクトルに対して、前記第1変
換行列と前記第1変換行列のいずれか一方の変換行列を乗算し、さらに、いずれか他方の
変換行列の逆行列を乗算することによって、前記左目用の実カメラと前記右目用の実カメ
ラの相対位置関係を示す相対位置ベクトルを算出し、
前記仮想カメラ設定手段は、前記相対位置ベクトルの大きさに基づいて前記左仮想カメ
ラと前記右仮想カメラの間隔を設定する、請求項1に記載の画像表示プログラム。
【請求項7】
前記仮想カメラ設定手段は、撮影方向が互いに平行になるように、前記左仮想カメラお
よび前記右仮想カメラの姿勢を設定する、請求項1に記載の画像表示プログラム。
【請求項8】
前記画像表示プログラムは、前記コンピュータを、
前記カメラ相対位置関係算出手段によって算出された前記相対位置関係と、前記左目
用の実カメラと前記右目用の実カメラの設計上の相対位置関係とに基づいて、実世界のス
ケールに応じた所定の処理を仮想空間において実行するスケール関連処理手段としてさら
に機能させる、請求項1に記載の画像表示プログラム。
【請求項9】
前記画像表示プログラムは、前記コンピュータを、
前記カメラ相対位置関係算出手段によって前記左目用の実カメラと前記右目用の実カ
メラの相対位置関係が算出された後、当該相対位置関係が決定された時点から、前記左目
用の実カメラまたは前記右目用の実カメラに対する前記撮像対象の奥行距離が所定範囲を
超えて変化したか否かを判定する奥行変化判定手段としてさらに機能させ、
前記カメラ相対位置関係算出手段は、前記奥行変化判定手段の判定結果が否定である間
は、前記左目用の実カメラと前記右目用の実カメラの相対位置関係を算出し直すことなく
、直前に決定した相対位置関係をそのまま維持する、請求項1に記載の画像表示プログラ
ム。
【請求項10】
前記画像表示プログラムは、前記コンピュータを、
前記カメラ相対位置関係算出手段によって前記左目用の実カメラと前記右目用の実カ
メラの相対位置関係が算出された後、当該相対位置関係が決定された時点から、前記左目
用の実カメラまたは前記右目用の実カメラに対する前記撮像対象の奥行距離が所定範囲を
超えて変化したか否かを判定する奥行変化判定手段としてさらに機能させ、
前記カメラ相対位置関係算出手段は、前記奥行変化判定手段の判定結果が肯定である場
合に、前記左目用の実カメラと前記右目用の実カメラの相対位置関係を算出し直す、請求
項1に記載の画像表示プログラム。
【請求項11】
前記画像表示プログラムは、前記コンピュータを、
前記撮像対象が含まれている実世界画像に基づいて、前記左目用の実カメラまたは前
記右目用の実カメラに対する前記撮像対象の奥行距離を算出する奥行距離算出手段として
さらに機能させ、
前記奥行変化判定手段は、カメラ相対位置関係算出手段によって前記左目用の実カメラ
と前記右目用の実カメラの相対位置関係が算出された時点において前記奥行距離算出手段
によって算出された基準奥行距離と、その後に前記奥行距離算出手段によって算出された
最新奥行距離とを比較することによって、前記左目用の実カメラまたは前記右目用の実カ
メラに対する前記撮像対象の奥行距離が所定範囲を超えて変化したか否かを判定する、請
求項9または10に記載の画像表示プログラム。
【請求項12】
前記奥行距離算出手段は、前記第1実世界画像取得手段または前記第2実世界画像取得
手段によって新たな実世界画像が取得される度に、前記左目用の実カメラまたは前記右目
用の実カメラに対する前記撮像対象の奥行距離を算出する処理を実行し、当該処理を複数
回実行することによって得られた複数回分の奥行距離算出結果に基づいて前記基準奥行距
離を算出する、請求項11に記載の画像表示プログラム。
【請求項13】
前記奥行距離算出手段は、前記複数回の奥行距離算出結果が全て所定の範囲に収まって
いる場合にのみ、当該複数回の奥行距離算出結果に基づいて前記基準奥行距離を算出する
、請求項12に記載の画像表示プログラム。
【請求項14】
立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像
を立体表示する画像表示装置であって、
左目用の実カメラによって撮像された第1実世界画像を取得する第1実世界画像取得手
段、
右目用の実カメラによって撮像された第2実世界画像を取得する第2実世界画像取得手
段、
前記第1実世界画像における所定の撮像対象の見え方と前記第2実世界画像における当
該撮像対象の見え方に基づいて、前記左目用の実カメラと前記右目用の実カメラの相対位
置関係を算出するカメラ相対位置関係算出手段、
所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目
用の画像を生成するための右仮想カメラの位置を、前記カメラ相対位置関係算出手段によ
って算出された相対位置関係に応じて離れるように、それぞれ決定する仮想カメラ設定手
段、
前記左仮想カメラから見た前記仮想空間を示す第1仮想空間画像を生成する第1仮想空
間画像生成手段、
前記右仮想カメラから見た前記仮想空間を示す第2仮想空間画像を生成する第2仮想空
間画像生成手段、および、
前記第1実世界画像に前記第1仮想空間画像を合成し、かつ、前記第2実世界画像に前
記第2仮想空間画像を合成して、前記立体表示装置に立体視のための画像出力をおこなう
表示制御手段を備える、画像表示装置。
【請求項15】
立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像
を立体表示する画像表示システムであって、
左目用の実カメラによって撮像された第1実世界画像を取得する第1実世界画像取得手
段、
右目用の実カメラによって撮像された第2実世界画像を取得する第2実世界画像取得手
段、
前記第1実世界画像における所定の撮像対象の見え方と前記第2実世界画像における当
該撮像対象の見え方に基づいて、前記左目用の実カメラと前記右目用の実カメラの相対位
置関係を算出するカメラ相対位置関係算出手段、
所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目
用の画像を生成するための右仮想カメラの位置を、前記カメラ相対位置関係算出手段によ
って算出された相対位置関係に応じて離れるように、それぞれ決定する仮想カメラ設定手
段、
前記左仮想カメラから見た前記仮想空間を示す第1仮想空間画像を生成する第1仮想空
間画像生成手段、
前記右仮想カメラから見た前記仮想空間を示す第2仮想空間画像を生成する第2仮想空
間画像生成手段、および、
前記第1実世界画像に前記第1仮想空間画像を合成し、かつ、前記第2実世界画像に前
記第2仮想空間画像を合成して、前記立体表示装置に立体視のための画像出力をおこなう
表示制御手段を備える、画像表示システム。
【請求項16】
立体視可能な立体表示装置の画面に、3次元の仮想オブジェクトを合成した実世界画像
を立体表示する画像表示方法であって、
左目用の実カメラによって撮像された第1実世界画像を取得する第1実世界画像取得ス
テップ、
右目用の実カメラによって撮像された第2実世界画像を取得する第2実世界画像取得ス
テップ、
前記第1実世界画像における所定の撮像対象の見え方と前記第2実世界画像における当
該撮像対象の見え方に基づいて、前記左目用の実カメラと前記右目用の実カメラの相対位
置関係を算出するカメラ相対位置関係算出ステップ、
所定の仮想空間における左目用の画像を生成するための左仮想カメラの位置および右目
用の画像を生成するための右仮想カメラの位置を、前記カメラ相対位置関係算出ステップ
において算出された相対位置関係に応じて離れるように、それぞれ決定する仮想カメラ設
定ステップ、
前記左仮想カメラから見た前記仮想空間を示す第1仮想空間画像を生成する第1仮想空
間画像生成ステップ、
前記右仮想カメラから見た前記仮想空間を示す第2仮想空間画像を生成する第2仮想空
間画像生成ステップ、および、
前記第1実世界画像に前記第1仮想空間画像を合成し、かつ、前記第2実世界画像に前
記第2仮想空間画像を合成して、前記立体表示装置に立体視のための画像出力をおこなう
表示制御ステップを備える、画像表示方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図5C】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate


【公開番号】特開2012−18666(P2012−18666A)
【公開日】平成24年1月26日(2012.1.26)
【国際特許分類】
【出願番号】特願2011−7850(P2011−7850)
【出願日】平成23年1月18日(2011.1.18)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】