(57)【特許請求の範囲】
【請求項１】
撮像手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段、
前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段、
前記仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段、及び
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段、として機能させ、
前記仮想カメラ決定手段は、前記特定対象物と前記仮想オブジェクトとの距離に基づいて、前記新たな仮想カメラの位置及び姿勢を決定する情報処理プログラム。
【請求項２】
前記仮想カメラ決定手段は、前記距離が長いときには短いときよりも前記前回設定された仮想カメラの位置及び姿勢の度合いが大きくなるように、前記新たな仮想カメラの位置及び姿勢を決定する、請求項１に記載の情報処理プログラム。
【請求項３】
前記オブジェクト画像生成手段は、前記特定対象物と前記仮想オブジェクトとの距離が予め定められた距離未満であるときに、前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢に基づいて、前記オブジェクト画像を生成する、請求項１に記載の情報処理プログラム。
【請求項４】
撮像手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段、
前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段、
前記仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段、及び
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段、として機能させ、
前記仮想カメラ決定手段は、前記仮想オブジェクトが移動するオブジェクトであるときに、前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、前記新たな仮想カメラの位置及び姿勢を決定する情報処理プログラム。
【請求項５】
前記仮想カメラ決定手段は、前記前回設定された仮想カメラの位置及び姿勢を所定の割
合で前記今回の仮想カメラの位置及び姿勢へ近づけたものを、前記新たな仮想カメラの位
置及び姿勢として決定する、請求項１〜請求項４のいずれかに記載の情報処理プログラム
。
【請求項６】
前記所定の割合は、予め定められた割合以下である、請求項５に記載の情報処理プログ
ラム。
【請求項７】
撮像手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段、
前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段、
前記仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段、及び
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段、として機能させ、
前記仮想カメラ決定手段は、前記前回の仮想カメラの位置及び姿勢を前記今回の仮想カメラの位置及び姿勢に所定の割合で反映させたものを、前記新たな仮想カメラの位置及び姿勢として決定し、
前記所定の割合を変化させることにより、前記仮想カメラ決定手段により決定された複数組の仮想カメラの位置及び姿勢を保持するための保持手段として前記コンピュータをさらに機能させ、
前記オブジェクト画像生成手段は、前記複数組の仮想カメラの位置及び姿勢の中から選択された１組の位置及び姿勢に基づいて、前記オブジェクト画像を生成する情報処理プログラム。
【請求項８】
前記仮想カメラ決定手段は、前記前回の仮想カメラの位置及び姿勢を前記今回の仮想カ
メラの位置及び姿勢に所定の割合で反映させたものを、前記新たな仮想カメラの位置及び
姿勢として決定し、
前記所定の割合を変化させることにより、前記仮想カメラ決定手段により決定された複
数組の仮想カメラの位置及び姿勢を保持するための保持手段として前記コンピュータをさ
らに機能させ、
前記オブジェクト画像生成手段は、前記複数組の仮想カメラの位置及び姿勢の中から選
択された１組の位置及び姿勢に基づいて、前記オブジェクト画像を生成する、請求項１〜請求項４のいずれかに記載の情報処理プログラム。
【請求項９】
前記仮想カメラ決定手段は、仮想カメラの位置についての変化許容値及び姿勢について
の変化許容値を満足するように、前記新たな仮想カメラの位置及び姿勢を決定する、請求
項１〜請求項４のいずれかに記載の情報処理プログラム。
【請求項１０】
前記仮想カメラの位置及び姿勢は、ビュー行列により付与される、請求項１〜請求項９のいずれかに記載の情報処理プログラム。
【請求項１１】
撮像手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段、
前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段、
前記仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段、
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段、及び
複数の仮想オブジェクトを前記仮想空間内に配置する配置手段として機能させ、
前記仮想カメラ決定手段は、仮想オブジェクト毎に、前記新たな仮想カメラの位置及び姿勢を決定する情報処理プログラム。
【請求項１２】
撮像画像を撮像する撮像手段と、
画面上において現実空間を視認可能な表示手段と、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段と、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段と、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段と、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段と、
前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段と、
前記仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段と、
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段とを含み、
前記仮想カメラ決定手段は、前記特定対象物と前記仮想オブジェクトとの距離に基づいて、前記新たな仮想カメラの位置及び姿勢を決定する情報処理装置。
【請求項１３】
撮像画像を撮像する撮像手段と、
画面上において現実空間を視認可能な表示手段と、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段と、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段と、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段と、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段と、
前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段と、
前記仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段と、
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段とを含み、
前記仮想カメラ決定手段は、前記特定対象物と前記仮想オブジェクトとの距離に基づいて、前記新たな仮想カメラの位置及び姿勢を決定する情報処理システム。
【請求項１４】
撮像手段により撮像画像を撮像する撮像ステップと、
表示手段の画面上において現実空間を視認可能に表示する表示ステップと、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得ステップと、
前記撮像画像データ取得ステップにより逐次取得された撮像画像データから特定対象物を検出する検出ステップと、
前記撮像手段と前記検出ステップにより検出された特定対象物との相対的な位置関係を算出する算出ステップと、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定ステップと、
前記仮想カメラ設定ステップにより今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定ステップにより前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定ステップと、
前記仮想カメラ決定ステップにより決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成ステップと、
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成ステップにより生成されたオブジェクト画像を重ね合わせて表示する表示制御ステップとを含み、
前記仮想カメラ決定ステップでは、前記特定対象物と前記仮想オブジェクトとの距離に基づいて、前記新たな仮想カメラの位置及び姿勢を決定する情報処理方法。
【請求項１５】
撮像手段と、画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する位置関係算出手段、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段、
前記仮想カメラ設定手段により今回設定された位置及び姿勢の仮想カメラで仮想空間内の仮想オブジェクトを撮影することにより得られる当該仮想オブジェクトの前記表示手段に表示される画像上の表示位置と、前回の仮想オブジェクトの表示位置とに基づいて、新たな仮想オブジェクトの表示位置を決定する表示位置決定手段、
前記表示位置決定手段により決定された表示位置に表示されるよう仮想オブジェクトの仮想オブジェクト画像を生成する仮想オブジェクト画像生成手段、及び
前記表示手段における画面上の現実空間に、前記仮想オブジェクト画像生成手段により生成された仮想オブジェクト画像を重ね合わせて表示する表示制御手段として機能させ、  前記表示位置決定手段は、前記特定対象物と前記仮想オブジェクトとの距離に基づいて、前記新たな仮想オブジェクトの表示位置を決定する情報処理プログラム。
【請求項１６】
前記表示位置決定手段は、前記仮想オブジェクトの今回の仮想空間内の位置と前回の仮想空間内の位置とを用いて、当該仮想オブジェクトの新たな仮想空間内の位置を決定し、
前記仮想オブジェクト画像生成手段は、前記今回の位置及び姿勢の仮想カメラで前記新たな仮想空間内の位置の仮想オブジェクトを撮影することにより前記仮想オブジェクト画像を生成する、請求項１５に記載の情報処理プログラム。
【請求項１７】
撮像手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段、
前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前回仮想空間内の仮想オブジェクトのオブジェクト画像が生成されたときに用いられた仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段、
前記仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、前記オブジェクト画像を生成するオブジェクト画像生成手段、及び
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段、として機能させ、
前記仮想カメラ決定手段は、前記特定対象物と前記仮想オブジェクトとの距離に基づいて、前記新たな仮想カメラの位置及び姿勢を決定する情報処理プログラム。
【請求項１８】
撮像手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、
前記撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段、
前記撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段、
前記撮像手段と前記検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段、
前記位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段、
前記仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前記仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段、
前記仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段、及び
前記表示手段における画面上の現実空間に、前記オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段、として機能させ、
前記仮想カメラ決定手段は、前記仮想オブジェクトと前記仮想カメラとの距離に基づいて、前記新たな仮想カメラの位置及び姿勢を決定する情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実空間に仮想オブジェクト画像を重ね合わせて表示する情報処理技術に関し、より具体的には、撮像した画像から検出したマーカの検出誤差により発生する仮想オブジェクトの表示位置のぶれを補正して表示する情報処理技術に関する。
【背景技術】
【０００２】
仮想オブジェクト画像を、現実世界（現実空間又は現実環境ともいう）に重ね合わせて表示することにより、仮想空間にオブジェクトが存在するように表示する、いわゆる拡張現実感システムが実現されている。この拡張現実感システムは、仮想物体（仮想オブジェクト）を現実世界の中に表示する技術であって、例えば、カメラで撮像した現実空間に、予め作成しておいた仮想オブジェクトの画像を重ね合わせて、違和感なく仮想オブジェクトを表示させる。非特許文献１は、このような拡張現実感システムに関係する技術であって、カメラで撮像して得られた画像からマーカを検出して、検出したマーカの情報に基づいて、マーカに対応する位置に仮想オブジェクトを表示する技術を開示する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｈｉｒｏｋａｚｕ  Ｋａｔｏ  ａｎｄ  Ｍａｒｋ  Ｂｉｌｌｉｎｇｈｕｒｓｔ、“Ｍａｒｋｅｒ  Ｔｒａｃｋｉｎｇ  ａｎｄ  ＨＭＤ  Ｃａｌｉｂｒａｔｉｏｎ  ｆｏｒ  ａ  Ｖｉｄｅｏ−ｂａｓｅｄ  Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ  Ｃｏｎｆｅｒｅｎｃｉｎｇ  Ｓｙｓｔｅｍ”、１９９９
【発明の概要】
【発明が解決しようとする課題】
【０００４】
カメラにより撮像された画像に基づいてマーカを検出する場合において、マーカへの照明の当たり具合等により、マーカの検出精度が安定せず、マーカの検出誤差が発生する場合がある。このような誤差を含むマーカの検出結果を用いたときに仮想オブジェクト画像の表示位置がぶれてしまうという問題がある。しかしながら、このような問題を非特許文献１に開示された技術では解決できない。このため、仮想オブジェクトが現実世界にあたかも存在するという、自然な拡張現実感を実現することができない。
【０００５】
それ故、本発明の目的は、仮想オブジェクトの表示位置がぶれることを抑制して表示することにより自然な拡張現実感を実現することができる情報処理技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題を解決するために、以下の構成を採用した。
【０００７】
本発明の第１の局面に係る情報処理プログラムは、撮像手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、撮像画像データ取得手段、検出手段、算出手段、仮想カメラ設定手段、仮想カメラ決定手段、オブジェクト画像生成手段、表示制御手段として機能させる。撮像画像データ取得手段は、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する。検出手段は、撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する。算出手段は、撮像手段と検出手段により検出された特定対象物との相対的な位置関係を算出する。仮想カメラ設定手段は、位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する。仮想カメラ決定手段は、仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する。オブジェクト画像生成手段は、仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成する。表示制御手段は、表示手段における画面上の現実空間に、オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する。
【０００８】
この構成によると、現実空間を示す画像に仮想オブジェクト画像が重ね合わせられて表示手段に表示される。仮想カメラ設定手段は、撮像手段と特定対象物との相対的な位置関係に基づいて、仮想空間における仮想カメラの位置及び姿勢（例えば仮想カメラのビュー行列に基づく仮想カメラの位置及び姿勢）を設定する。この場合において、逐次撮像される画像に含まれる特定対象物への照明の当たり具合等により、この特定対象物の検出誤差が発生したとしても（通常発生する現象である）、仮想カメラ決定手段が、今回設定された仮想カメラの位置及び姿勢と、前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する。このとき、例えば、今回の仮想カメラの位置及び姿勢と前回の仮想カメラの位置及び姿勢とをブレンドして、新たな仮想カメラの位置及び姿勢が決定される。今回の位置及び姿勢のブレンド比率を高めれば前回の位置及び姿勢が考慮されにくいようにして、前回の位置及び姿勢のブレンド比率を高めれば前回の位置及び姿勢が考慮されやすいようにして、新たな仮想カメラの位置及び姿勢を決定することができる。このようにして、新たな仮想カメラの位置及び姿勢を決定して、この仮想カメラで仮想オブジェクトを撮影する。このようにして位置及び姿勢が決定された新たな仮想カメラにより仮想オブジェクトが撮影されて表示されるので、仮想オブジェクトの表示位置がぶれることが抑制される。その結果、仮想オブジェクトが現実世界にあたかも存在するように、的確な位置に表示されるので、自然な拡張現実感を実現することができる。
【０００９】
好ましくは、仮想カメラ決定手段は、特定対象物と仮想オブジェクトとの距離に基づいて、新たな仮想カメラの位置及び姿勢を決定するように構成することができる。
【００１０】
仮想オブジェクトの表示位置のぶれ量は、特定対象物と仮想オブジェクトとの距離に依存する。このため、この構成によると、特定対象物と仮想オブジェクトとの距離に基づいて新たな仮想カメラの位置及び姿勢を決定するので、仮想オブジェクトを適正に表示することができる。
【００１１】
好ましくは、仮想カメラ決定手段は、距離が長いときには短いときよりも前回設定された仮想カメラの位置及び姿勢の度合いが大きくなるように、新たな仮想カメラの位置及び姿勢を決定するように構成することができる。
【００１２】
仮想オブジェクトの表示位置のぶれ量は、角度（傾き）誤差の影響により、特定対象物と仮想オブジェクトとの距離が長いほど大きくなる。このため、特定対象物と仮想オブジェクトとの距離が長いときには短いときよりもぶれ量が大きくなる。このように特定対象物との距離が長い仮想オブジェクトは大きくぶれているので、前回設定された仮想カメラの位置及び姿勢を大きな度合いで反映させた新たな仮想カメラの位置及び姿勢を決定する。この結果、仮想オブジェクトを適正に表示することができる。
【００１３】
好ましくは、オブジェクト画像生成手段は、特定対象物と仮想オブジェクトとの距離が予め定められた距離未満であるときに、仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢に基づいて、オブジェクト画像を生成するように構成することができる。
【００１４】
特定対象物と仮想オブジェクトとの距離が短い場合には、仮想オブジェクトの表示位置のぶれ量は少ないので、このような場合には前回設定された仮想カメラの位置及び姿勢を用いることなく今回設定された仮想カメラの位置及び姿勢を用いる。前回設定された仮想カメラの位置及び姿勢を考慮することなく計算量を低減させることができる。
【００１５】
好ましくは、仮想カメラ決定手段は、仮想オブジェクトが移動するオブジェクトであるときに、仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定するように構成することができる。
【００１６】
この構成によると、仮想オブジェクトが移動する場合（浮遊する場合を含む）には、前回設定された仮想カメラの位置及び姿勢を大きく反映させた新たな位置及び姿勢の仮想カメラで仮想オブジェクトを撮影して表示しても、そもそも仮想オブジェクトが移動しているので、ユーザに違和感を与えない。このため、移動オブジェクトを適正に表示することができる。
【００１７】
好ましくは、仮想カメラ決定手段は、前回設定された仮想カメラの位置及び姿勢を所定の割合で今回の仮想カメラの位置及び姿勢へ近づけたものを、新たな仮想カメラの位置及び姿勢として決定するように構成することができる。
【００１８】
この構成によると、前回設定された仮想カメラの位置及び姿勢が所定の割合で今回設定された仮想カメラの位置及び姿勢へ近づけられて、新たな仮想カメラの位置及び姿勢として決定される。このため、特定対象物の今回の検出結果に大きな誤差を含むと仮想カメラの最新の位置及び姿勢に大きな誤差を含むことになるが、この場合であっても、所定の割合で今回の位置及び姿勢へ近づけられるのみであるので、仮想オブジェクトの表示位置が大きくぶれることを抑制することができる。
【００１９】
好ましくは、所定の割合は、予め定められた割合以下であるように構成することができる。
【００２０】
この構成によると、仮想カメラの今回の位置及び姿勢に大きく誤差を含む場合に、予め定められた割合以下でしか今回の位置及び姿勢へ近づけられない。このため、仮想オブジェクトの表示位置が大きくぶれることを抑制することができる。
【００２１】
好ましくは、仮想カメラ決定手段は、前回の仮想カメラの位置及び姿勢を今回の仮想カメラの位置及び姿勢に所定の割合で反映させたものを、新たな仮想カメラの位置及び姿勢として決定するように構成することができる。
【００２２】
この構成によると、今回設定された仮想カメラの位置及び姿勢と前回設定された仮想カメラの位置及び姿勢とを所定の割合でブレンドして、仮想カメラの新たな位置及び姿勢を決定することができる。所定の割合を変更することにより、仮想カメラの位置及び姿勢を決定することができ、仮想オブジェクトを適正に表示することができる。
【００２３】
好ましくは、このプログラムは、コンピュータを、所定の割合を変化させることにより、仮想カメラ決定手段により決定された複数組の仮想カメラの位置及び姿勢を保持する保持手段としてコンピュータをさらに機能させるように構成することができる。この場合において、オブジェクト画像生成手段は、複数組の仮想カメラの位置及び姿勢の中から選択された１組の位置及び姿勢に基づいて、オブジェクト画像を生成するように構成することができる。
【００２４】
この構成によると、所定の割合を変化させた複数組の仮想カメラの位置及び姿勢を保持しておいて、例えば特定対象物と仮想オブジェクトとの距離に基づいて、１組の仮想カメラの位置及び姿勢を選択する。このように、予め保持された仮想カメラの位置及び姿勢を用いて、仮想オブジェクトを適正に表示することができる。
【００２５】
好ましくは、仮想カメラ決定手段は、仮想カメラの位置についての変化許容値及び姿勢についての変化許容値を満足するように、新たな仮想カメラの位置及び姿勢を決定するように構成することができる。
【００２６】
この構成によると、仮想カメラの位置についての変化許容値及び姿勢についての変化許容値を満足するように処理されるので、前回設定された仮想カメラの位置及び姿勢が前回の位置及び姿勢から大きく変化しない。このため、今回設定された仮想カメラの位置及び姿勢に大きな誤差を含む場合であっても、前回の位置及び姿勢から大きく変化していない、新たな仮想カメラの位置及び姿勢が用いられて、仮想オブジェクトを適正に表示することができる。
【００２７】
好ましくは、仮想カメラの位置及び姿勢は、ビュー行列により付与されるように構成することができる。
【００２８】
この構成によると、ビュー行列により付与される仮想カメラの位置及び姿勢を用いて、仮想オブジェクトを適正に表示することができる。
【００２９】
好ましくは、このプログラムは、コンピュータを、複数の仮想オブジェクトを仮想空間内に配置する配置手段としてさらに機能させるように構成することができる。この場合において、仮想カメラ決定手段は、仮想オブジェクト毎に、新たな仮想カメラの位置及び姿勢を決定するように構成することができる。
【００３０】
この構成によると、複数の仮想オブジェクトを表示する場合に、各仮想オブジェクトが備える特性（例えば、特定対象物と仮想オブジェクトとの距離）に基づいて、新たな仮想カメラの位置及び姿勢を決定するので、仮想オブジェクトを適正に表示することができる。
【００３１】
本発明の第２の局面に係る情報処理装置は、撮像画像を撮像する撮像手段と、画面上において現実空間を視認可能な表示手段と、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段と、撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段と、撮像手段と検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段と、位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段と、仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段と、仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段と、表示手段における画面上の現実空間に、オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段とを含む。
【００３２】
本発明の第３の局面に係る情報処理システムは、撮像画像を撮像する撮像手段と、画面上において現実空間を視認可能な表示手段と、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得手段と、撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する検出手段と、撮像手段と検出手段により検出された特定対象物との相対的な位置関係を算出する算出手段と、位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定手段と、仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、仮想カメラ設定手段により前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定手段と、仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成手段と、表示手段における画面上の現実空間に、オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する表示制御手段とを含む。
【００３３】
本発明の第４の局面に係る情報処理方法は、撮像手段により撮像画像を撮像する撮像ステップと、表示手段の画面上において現実空間を視認可能に表示する表示ステップと、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する撮像画像データ取得ステップと、撮像画像データ取得ステップにより逐次取得された撮像画像データから特定対象物を検出する検出ステップと、撮像手段と検出ステップにより検出された特定対象物との相対的な位置関係を算出する算出ステップと、位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する仮想カメラ設定ステップと、仮想カメラ設定ステップにより今回設定された仮想カメラの位置及び姿勢と、仮想カメラ設定ステップにより前回設定された仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する仮想カメラ決定ステップと、仮想カメラ決定ステップにより決定した新たな仮想カメラの位置及び姿勢に基づいて、仮想空間内の仮想オブジェクトのオブジェクト画像を生成するオブジェクト画像生成ステップと、表示手段における画面上の現実空間に、オブジェクト画像生成ステップにより生成されたオブジェクト画像を重ね合わせて表示する表示制御ステップとを含む。
【００３４】
本発明の第２の局面に係る情報処理装置、第３の局面に係る情報処理システム及び第４の局面に係る情報処理方法によると、第１の局面に係る情報処理プログラムと同様の作用効果を発現する。
【００３５】
本発明の第５の局面に係るプログラムは、撮像手段と、画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、撮像画像データ取得手段、検出手段、位置関係算出手段、仮想カメラ設定手段、表示位置決定手段、仮想オブジェクト画像生成手段、表示制御手段として機能させる。撮像画像データ取得手段は、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する。検出手段は、撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する。位置関係算出手段は、撮像手段と検出手段により検出された特定対象物との相対的な位置関係を算出する。仮想カメラ設定手段は、位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する。表示位置決定手段は、仮想カメラ設定手段により今回設定された位置及び姿勢の仮想カメラで仮想空間内の仮想オブジェクトを撮影することにより得られる当該仮想オブジェクトの表示手段に表示される画像上の表示位置と、前回の仮想オブジェクトの表示位置とに基づいて、新たな仮想オブジェクトの表示位置を決定する。仮想オブジェクト画像生成手段は、表示位置決定手段により決定された表示位置に表示されるよう仮想オブジェクトの仮想オブジェクト画像を生成する。表示制御手段は、表示手段における画面上の現実空間に、仮想オブジェクト画像生成手段により生成された仮想オブジェクト画像を重ね合わせて表示する。
【００３６】
この構成によると、上述したような新たに決定した仮想カメラの位置及び姿勢を用いて、仮想オブジェクトを適正な位置に表示するのではなく、仮想オブジェクトについての、今回設定された位置及び姿勢の仮想カメラで撮影することにより得られる画面上の表示位置と前回の表示位置とを用いて、新たな表示位置を決定することにより、仮想オブジェクトを適正に表示する。その結果、仮想オブジェクトが現実世界にあたかも存在するように、的確な位置に表示されるので、自然な拡張現実感を実現することができる。
【００３７】
好ましくは、表示位置決定手段は、仮想オブジェクトの今回の仮想空間内の位置と前回の仮想空間内の位置とを用いて、当該仮想オブジェクトの新たな仮想空間内の位置を決定するように構成することができる。この場合において、仮想オブジェクト画像生成手段は、今回の位置及び姿勢の仮想カメラで新たな仮想空間内の位置の仮想オブジェクトを撮影することにより仮想オブジェクト画像を生成するように構成することができる。
【００３８】
この構成によると、仮想オブジェクトについての、今回の仮想空間内の位置と前回の仮想空間内の位置とを用いて、新たな仮想空間内の位置が決定される。この新たな仮想空間内の位置の仮想オブジェクトが、今回の位置及び姿勢の仮想カメラで撮影されるので、仮想オブジェクトを適正に表示することができる。
【００３９】
本発明の第６の局面に係るプログラムは、本発明の第１の局面に係る情報処理プログラムは、撮像手段と画面上において現実空間を視認可能な表示手段とに接続された情報処理装置のコンピュータを、撮像画像データ取得手段、検出手段、算出手段、仮想カメラ設定手段、仮想カメラ決定手段、オブジェクト画像生成手段、表示制御手段として機能させる。撮像画像データ取得手段は、撮像手段により撮像された撮像画像を示す撮像画像データを逐次取得する。検出手段は、撮像画像データ取得手段により逐次取得された撮像画像データから特定対象物を検出する。算出手段は、撮像手段と検出手段により検出された特定対象物との相対的な位置関係を算出する。仮想カメラ設定手段は、位置関係に基づいて仮想空間内の仮想カメラの位置及び姿勢を設定する。仮想カメラ決定手段は、仮想カメラ設定手段により今回設定された仮想カメラの位置及び姿勢と、前回仮想空間内の仮想オブジェクトのオブジェクト画像が生成されたときに用いられた仮想カメラの位置及び姿勢とに基づいて、新たな仮想カメラの位置及び姿勢を決定する。オブジェクト画像生成手段は、仮想カメラ決定手段により決定した新たな仮想カメラの位置及び姿勢に基づいて、オブジェクト画像を生成する。表示制御手段は、表示手段における画面上の現実空間に、オブジェクト画像生成手段により生成されたオブジェクト画像を重ね合わせて表示する。
【００４０】
この構成によると、現実空間を示す画像に仮想オブジェクト画像が重ね合わせられて表示手段に表示される。特定対象物の検出誤差が発生したとしても、仮想カメラ決定手段が、今回設定された仮想カメラの位置及び姿勢と、前回仮想空間内の仮想オブジェクトのオブジェクト画像が生成されたときに用いられた仮想カメラの位置及び姿勢（前回設定された仮想カメラの位置及び姿勢ではなく）とに基づいて、新たな仮想カメラの位置及び姿勢を決定する。このように過去に仮想オブジェクトを描画するのに用いられた仮想カメラの位置及び姿勢（過去に描画に利用したビュー行列）を用いて新たな仮想カメラの位置及び姿勢を決定して、この仮想カメラで仮想オブジェクトを撮影する。このようにして位置及び姿勢が決定された新たな仮想カメラにより仮想オブジェクトが撮影されて表示されるので、仮想オブジェクトの表示位置がぶれることが抑制される。その結果、第１の局面に係る情報処理プログラムと同様に、仮想オブジェクトが現実世界にあたかも存在するように、的確な位置に表示されるので、自然な拡張現実感を実現することができる。
【発明の効果】
【００４１】
本発明によれば、仮想オブジェクトの表示位置がぶれることを抑制して表示することにより、自然な拡張現実感を実現することができる。
【図面の簡単な説明】
【００４２】
【図１】開状態におけるゲーム装置１０の正面図
【図２】開状態におけるゲーム装置１０の側面図
【図３】閉状態におけるゲーム装置１０の左側面図、正面図、右側面図及び背面図
【図４】上側ハウジング２１の内側面からスクリーンカバー２７を分離した状態を示す図
【図５】図１に示す上側ハウジング２１のＡ−Ａ’線断面図
【図６Ａ】３Ｄ調整スイッチ２５のスライダ２５ａが最下点（第３の位置）に存在する様子を示す図
【図６Ｂ】３Ｄ調整スイッチ２５のスライダ２５ａが最下点よりも上方位置（第１の位置）に存在する様子を示す図
【図６Ｃ】３Ｄ調整スイッチ２５のスライダ２５ａが最上点（第２の位置）に存在する様子を示す図
【図７】ゲーム装置１０の内部構成を示すブロック図
【図８】ゲーム装置１０のメインメモリ３２のメモリマップを示す図
【図９】図８の画像表示用データの詳細を示す図
【図１０】本発明の第１の実施形態に係る仮想オブジェクト表示処理の詳細を示すメインフローチャート
【図１１】図１０のビュー行列算出処理（ステップＳ２００）の詳細を示すフローチャート
【図１２】図１０の仮想オブジェクト処理（ステップＳ３００）の詳細を示すフローチャート
【図１３】仮想オブジェクトの表示位置が補正される状態を示す概念図
【図１４】上側ＬＣＤ２２上に表示されるマーカと仮想オブジェクトを示す図（その１）
【図１５Ａ】図１４の中距離に配置されたオブジェクトの位置が補正される前の状態を示す図
【図１５Ｂ】図１４の中距離に配置されたオブジェクトの位置が補正された後の状態を示す図
【図１６】上側ＬＣＤ２２上に表示されるマーカと仮想オブジェクトを示す図（その２）
【図１７】本発明の第２の実施形態に係る画像表示用データの詳細を示す図
【図１８】本発明の第２の実施形態に係るビュー行列算出処理の詳細を示すフローチャート
【発明を実施するための形態】
【００４３】
＜第１の実施形態＞
（ゲーム装置の構成）
以下、本発明の第１の実施形態に係る情報処理装置であるゲーム装置について説明する。なお、本発明は、このような装置に限定されるものではなく、このような装置において実行される情報処理プログラムであっても、このような装置に関係がある情報処理システムであっても構わない。さらに、本発明は、このような装置における情報処理方法であっても構わない。
【００４４】
図１〜図３は、ゲーム装置１０の外観を示す平面図である。ゲーム装置１０は携帯型のゲーム装置であり、図１〜図３に示すように折り畳み可能に構成されている。図１及び図２は、開いた状態（開状態）におけるゲーム装置１０を示し、図３は、閉じた状態（閉状態）におけるゲーム装置１０を示している。図１は、開状態におけるゲーム装置１０の正面図であり、図２は、開状態におけるゲーム装置１０の右側面図である。ゲーム装置１０は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置１０は、交換可能なメモリカード内に記憶され、又は、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【００４５】
まず、図１〜図３を参照して、ゲーム装置１０の外観構成について説明する。図１〜図３に示されるように、ゲーム装置１０は、下側ハウジング１１及び上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に接続されている。本実施形態では、各ハウジング１１及び２１はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
【００４６】
図１及び図２に示されるように、下側ハウジング１１の上側長辺部分には、下側ハウジング１１の内側面（主面）１１Ｂに対して垂直な方向に突起する突起部１１Ａが設けられる。また、上側ハウジング２１の下側長辺部分には、上側ハウジング２１の下側面から当該下側面に垂直な方向に突起する突起部２１Ａが設けられる。下側ハウジング１１の突起部１１Ａと上側ハウジング２１の突起部２１Ａとが連結されることにより、下側ハウジング１１と上側ハウジング２１とが、折り畳み可能に接続される。
【００４７】
（下側ハウジングの説明）
まず、下側ハウジング１１の構成について説明する。図１〜図３に示すように、下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２、タッチパネル１３、各操作ボタン１４Ａ〜１４Ｌ（図１、図３）、アナログスティック１５、ＬＥＤ１６Ａ〜１６Ｂ、挿入口１７、及び、マイクロフォン用孔１８が設けられる。以下、これらの詳細について説明する。
【００４８】
図１に示すように、下側ＬＣＤ１２は下側ハウジング１１に収納される。下側ＬＣＤ１２は横長形状であり、長辺方向が下側ハウジング１１の長辺方向に一致するように配置される。下側ＬＣＤ１２は下側ハウジング１１の中央に配置される。下側ＬＣＤ１２は、下側ハウジング１１の内側面（主面）に設けられ、下側ハウジング１１に設けられた開口部から当該下側ＬＣＤ１２の画面が露出される。ゲーム装置１０を使用しない場合には閉状態としておくことによって、下側ＬＣＤ１２の画面が汚れたり傷ついたりすることを防止することができる。下側ＬＣＤ１２の画素数は、例えば、２５６ｄｏｔ×１９２ｄｏｔ（横×縦）であってもよい。下側ＬＣＤ１２は、後述する上側ＬＣＤ２２とは異なり、画像を（立体視可能ではなく）平面的に表示する表示装置である。なお、本実施形態では表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側ＬＣＤ１２として、任意の解像度の表示装置を利用することができる。
【００４９】
図１に示されるように、ゲーム装置１０は、入力装置として、タッチパネル１３を備えている。タッチパネル１３は、下側ＬＣＤ１２の画面上に装着されている。なお、本実施形態では、タッチパネル１３は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル１３として、下側ＬＣＤ１２の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１３の解像度と下側ＬＣＤ１２の解像度が一致している必要はない。また、下側ハウジング１１の上側面には挿入口１７（図１及び図３（ｄ）に示す点線）が設けられている。挿入口１７は、タッチパネル１３に対する操作を行うために用いられるタッチペン２８を収納することができる。なお、タッチパネル１３に対する入力は通常タッチペン２８を用いて行われるが、タッチペン２８に限らずユーザの指でタッチパネル１３に対する入力をすることも可能である。
【００５０】
各操作ボタン１４Ａ〜１４Ｌは、所定の入力を行うための入力装置である。図１に示されるように、下側ハウジング１１の内側面（主面）には、各操作ボタン１４Ａ〜１４Ｌのうち、十字ボタン１４Ａ（方向入力ボタン１４Ａ）、ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅ、電源ボタン１４Ｆ、セレクトボタン１４Ｊ、ＨＯＭＥボタン１４Ｋ、及びスタートボタン１４Ｌが、設けられる。十字ボタン１４Ａは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅは、十字状に配置される。ボタン１４Ａ〜１４Ｅ、セレクトボタン１４Ｊ、ＨＯＭＥボタン１４Ｋ、及びスタートボタン１４Ｌには、ゲーム装置１０が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン１４Ａは選択操作等に用いられ、各操作ボタン１４Ｂ〜１４Ｅは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン１４Ｆは、ゲーム装置１０の電源をオン／オフするために用いられる。
【００５１】
アナログスティック１５は、方向を指示するデバイスであり、下側ハウジング１１の内側面の下側ＬＣＤ１２より左側領域の上部領域に設けられる。図１に示すように、十字ボタン１４Ａは下側ＬＣＤ１２より左側領域の下部領域に設けられるので、アナログスティック１５は、十字ボタン１４Ａの上方に設けられる。また、アナログスティック１５、及び、十字ボタン１４Ａは、下側ハウジングを把持した左手の親指で操作可能な位置に設計される。また、アナログスティック１５を上部領域に設けたことにより、下側ハウジング１１を把持する左手の親指が自然と位置するところにアナログスティック１５が配され、十字ボタン１４Ａは、左手の親指を少し下にずらした位置に配される。アナログスティック１５は、そのキートップが、下側ハウジング１１の内側面に平行にスライドするように構成されている。アナログスティック１５は、ゲーム装置１０が実行するプログラムに応じて機能する。例えば、３次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置１０によって実行される場合、アナログスティック１５は、当該所定のオブジェクトを３次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティック１５のキートップがスライドした方向に移動される。なお、アナログスティック１５として、上下左右及び斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【００５２】
十字状に配置される、ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅの４つのボタンは、下側ハウジング１１を把持する右手の親指が自然と位置するところに配置される。また、これらの４つのボタンと、アナログスティック１５とは、下側ＬＣＤ１２を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの４つのボタンを使用して方向指示入力をすることも可能である。
【００５３】
また、下側ハウジング１１の内側面には、マイクロフォン用孔１８が設けられる。マイクロフォン用孔１８の下部には後述する音声入力装置としてのマイク（図７参照）が設けられ、当該マイクがゲーム装置１０の外部の音を検出する。
【００５４】
図３（ａ）は閉状態におけるゲーム装置１０の左側面図であり、図３（ｂ）は閉状態におけるゲーム装置１０の正面図であり、図３（ｃ）は閉状態におけるゲーム装置１０の右側面図であり、図３（ｄ）は閉状態におけるゲーム装置１０の背面図である。図３（ｂ）及び（ｄ）に示されるように、下側ハウジング１１の上側面には、Ｌボタン１４Ｇ及びＲボタン１４Ｈが設けられている。Ｌボタン１４Ｇは、下側ハウジング１１の上面の左端部に設けられ、Ｒボタン１４Ｈは、下側ハウジング１１の上面の右端部に設けられる。Ｌボタン１４Ｇ及びＲボタン１４Ｈは、撮像部のシャッターボタン（撮影指示ボタン）として機能することができる。また、図３（ａ）に示されるように、下側ハウジング１１の左側面には、音量ボタン１４Ｉが設けられる。音量ボタン１４Ｉは、ゲーム装置１０が備えるスピーカの音量を調整するために用いられる。
【００５５】
図３（ａ）に示されるように、下側ハウジング１１の左側面には開閉可能なカバー部１１Ｃが設けられる。このカバー部１１Ｃの内側には、ゲーム装置１０とデータ保存用外部メモリ４５とを電気的に接続するためのコネクタ（図示せず）が設けられる。データ保存用外部メモリ４５は、コネクタに着脱自在に装着される。データ保存用外部メモリ４５は、例えば、ゲーム装置１０によって撮像された画像のデータを記憶（保存）するために用いられる。なお、上記コネクタ及びそのカバー部１１Ｃは、下側ハウジング１１の右側面に設けられてもよい。
【００５６】
また、図３（ｄ）に示されるように、下側ハウジング１１の上側面には、ゲーム装置１０とゲームプログラムを記録した外部メモリ４４を挿入するための挿入口１１Ｄが設けられ、その挿入口１１Ｄの内部には、外部メモリ４４と電気的に着脱自在に接続するためのコネクタ（図示せず）が設けられる。当該外部メモリ４４がゲーム装置１０に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタ及びその挿入口１１Ｄは、下側ハウジング１１の他の側面（例えば、右側面等）に設けられてもよい。
【００５７】
また、図１及び図３（ｃ）に示されるように、下側ハウジング１１の下側面にはゲーム装置１０の電源のＯＮ／ＯＦＦ状況をユーザに通知する第１ＬＥＤ１６Ａ、下側ハウジング１１の右側面にはゲーム装置１０の無線通信の確立状況をユーザに通知する第２ＬＥＤ１６Ｂが設けられる。ゲーム装置１０は他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ１６Ｂは、無線通信が確立している場合に点灯する。ゲーム装置１０は、例えば、ＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。下側ハウジング１１の右側面には、この無線通信の機能を有効／無効にする無線スイッチ１９が設けられる（図３（ｃ）参照）。
【００５８】
なお、図示は省略するが、下側ハウジング１１には、ゲーム装置１０の電源となる充電式電池が収納され、下側ハウジング１１の側面（例えば、上側面）に設けられた端子を介して当該電池を充電することができる。
【００５９】
（上側ハウジングの説明）
次に、上側ハウジング２１の構成について説明する。図１〜図３に示すように、上側ハウジング２１には、上側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）２２、外側撮像部２３（外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂ）、内側撮像部２４、３Ｄ調整スイッチ２５、及び、３Ｄインジケータ２６が設けられる。以下、これらの詳細について説明する。
【００６０】
図１に示すように、上側ＬＣＤ２２は上側ハウジング２１に収納される。上側ＬＣＤ２２は、横長形状であり、長辺方向が上側ハウジング２１の長辺方向に一致するように配置される。上側ＬＣＤ２２は上側ハウジング２１の中央に配置される。上側ＬＣＤ２２の画面の面積は、下側ＬＣＤ１２の画面の面積よりも大きく設定される。また、上側ＬＣＤ２２の画面は、下側ＬＣＤ１２の画面よりも横長に設定される。すなわち、上側ＬＣＤ２２の画面のアスペクト比における横幅の割合は、下側ＬＣＤ１２の画面のアスペクト比における横幅の割合よりも大きく設定される。
【００６１】
上側ＬＣＤ２２の画面は、上側ハウジング２１の内側面（主面）２１Ｂに設けられ、上側ハウジング２１に設けられた開口部から当該上側ＬＣＤ２２の画面が露出される。また、図２及び図４に示すように、上側ハウジング２１の内側面は、透明なスクリーンカバー２７によって覆われている。図４は、上側ハウジング２１の内側面からスクリーンカバー２７を分解した状態を示す分解図である。当該スクリーンカバー２７は、上側ＬＣＤ２２の画面を保護するとともに、上側ＬＣＤ２２と上側ハウジング２１の内側面と一体的にさせ、これにより統一感を持たせている。上側ＬＣＤ２２の画素数は、例えば、６４０ｄｏｔ×２００ｄｏｔ（横×縦）であってもよい。なお、本実施形態では上側ＬＣＤ２２は液晶表示装置であるとしたが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置などが利用されてもよい。また、上側ＬＣＤ２２として、任意の解像度の表示装置を利用することができる。
【００６２】
上側ＬＣＤ２２は、立体視可能な画像を表示することが可能な表示装置である。また、本実施形態では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で（例えば、１列ずつ）横方向に交互に表示される方式の表示装置である。又は、左目用画像と右目用画像とが交互に表示される方式の表示装置であってもよい。また、本実施形態では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目及び右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式（視差バリア方式）のものが用いられる。本実施形態では、上側ＬＣＤ２２はパララックスバリア方式のものとする。上側ＬＣＤ２２は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像（立体画像）を表示する。すなわち、上側ＬＣＤ２２は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像（立体視可能な画像）を表示することができる。また、上側ＬＣＤ２２は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる（上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである）。このように、上側ＬＣＤ２２は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する（平面視画像を表示する）平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する３Ｄ調整スイッチ２５によって行われる。
【００６３】
外側撮像部２３は、上側ハウジング２１の外側面（上側ＬＣＤ２２が設けられた主面と反対側の背面）２１Ｄに設けられた２つの撮像部（２３ａ及び２３ｂ）の総称である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂの撮像方向は、いずれも当該外側面２１Ｄの外向きの法線方向である。また、これらの撮像部はいずれも、上側ＬＣＤ２２の表示面（内側面）の法線方向と１８０度反対の方向に設計される。すなわち、外側撮像部（左）２３ａの撮像方向及び外側撮像部（右）２３ｂの撮像方向は、平行である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂとは、ゲーム装置１０が実行するプログラムによって、ステレオカメラとして使用することが可能である。また、プログラムによっては、２つの外側撮像部（２３ａ及び２３ｂ）のいずれか一方を単独で用いて、外側撮像部２３を非ステレオカメラとして使用することも可能である。また、プログラムによっては、２つの外側撮像部（２３ａ及び２３ｂ）で撮像した画像を合成して又は補完的に使用することにより撮像範囲を広げた撮像をおこなうことも可能である。本実施形態では、外側撮像部２３は、外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂの２つの撮像部で構成される。外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂは、それぞれ所定の共通の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【００６４】
図１の破線及び図３（ｂ）の実線で示されるように、外側撮像部２３を構成する外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂは、上側ＬＣＤ２２の画面の横方向と平行に並べられて配置される。すなわち、２つの撮像部を結んだ直線が上側ＬＣＤ２２の画面の横方向と平行になるように、外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂが配置される。図１の破線で示す２３ａ及び２３ｂは、上側ハウジング２１の内側面とは反対側の外側面に存在する外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂをそれぞれ表している。図１に示すように、ユーザが上側ＬＣＤ２２の画面を正面から視認した場合に、外側撮像部（左）２３ａは左側に外側撮像部（右）２３ｂは右側にそれぞれ位置している。外側撮像部２３をステレオカメラとして機能させるプログラムが実行されている場合、外側撮像部（左）２３ａは、ユーザの左目で視認される左目用画像を撮像し、外側撮像部（右）２３ｂは、ユーザの右目で視認される右目用画像を撮像する。外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂの間隔は、人間の両目の間隔程度に設定され、例えば、３０ｍｍ〜７０ｍｍの範囲で設定されてもよい。なお、外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂの間隔は、この範囲に限らない。
【００６５】
なお、本実施形態においては、外側撮像部（左）２３ａ及び外側撮像部（右）２３はハウジングに固定されており、撮像方向を変更することはできない。
【００６６】
また、外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂは、上側ＬＣＤ２２（上側ハウジング２１）の左右方向に関して中央から対称となる位置にそれぞれ配置される。すなわち、外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂは、上側ＬＣＤ２２を左右に２等分する線に対して対称の位置にそれぞれ配置される。また、外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂは、上側ハウジング２１を開いた状態において、上側ハウジング２１の上部であって、上側ＬＣＤ２２の画面の上端よりも上方の位置の裏側に配置される。すなわち、外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂは、上側ハウジング２１の外側面であって、上側ＬＣＤ２２を外側面に投影した場合、投影した上側ＬＣＤ２２の画面の上端よりも上方に配置される。
【００６７】
このように、外側撮像部２３の２つの撮像部（２３ａ及び２３ｂ）が、上側ＬＣＤ２２の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側ＬＣＤ２２を正視した場合に、外側撮像部２３の撮像方向をユーザの視線方向と一致させることができる。また、外側撮像部２３は、上側ＬＣＤ２２の画面の上端より上方の裏側の位置に配置されるため、外側撮像部２３と上側ＬＣＤ２２とが上側ハウジング２１の内部で干渉することがない。従って、外側撮像部２３を上側ＬＣＤ２２の画面の裏側に配置する場合と比べて、上側ハウジング２１を薄く構成することが可能となる。
【００６８】
内側撮像部２４は、上側ハウジング２１の内側面（主面）２１Ｂに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部２４は、所定の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【００６９】
図１に示すように、内側撮像部２４は、上側ハウジング２１を開いた状態において、上側ハウジング２１の上部であって、上側ＬＣＤ２２の画面の上端よりも上方に配置され、上側ハウジング２１の左右方向に関して中央の位置（上側ハウジング２１（上側ＬＣＤ２２の画面）を左右に２等分する線の線上）に配置される。具体的には、図１及び図３（ｂ）に示されるように、内側撮像部２４は、上側ハウジング２１の内側面であって、外側撮像部２３の左右の撮像部（外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂ）の中間の裏側の位置に配置される。すなわち、上側ハウジング２１の外側面に設けられた外側撮像部２３の左右の撮像部を上側ハウジング２１の内側面に投影した場合、当該投影した左右の撮像部の中間に、内側撮像部２４が設けられる。図３（ｂ）で示される破線２４は、上側ハウジング２１の内側面に存在する内側撮像部２４を表している。
【００７０】
このように、内側撮像部２４は、外側撮像部２３とは反対方向を撮像する。内側撮像部２４は、上側ハウジング２１の内側面であって、外側撮像部２３の左右の撮像部の中間位置の裏側に設けられる。これにより、ユーザが上側ＬＣＤ２２を正視した際、内側撮像部２４でユーザの顔を正面から撮像することができる。また、外側撮像部２３の左右の撮像部と内側撮像部２４とが上側ハウジング２１の内部で干渉することがないため、上側ハウジング２１を薄く構成することが可能となる。
【００７１】
３Ｄ調整スイッチ２５は、スライドスイッチであり、上述のように上側ＬＣＤ２２の表示モードを切り替えるために用いられるスイッチである。また、３Ｄ調整スイッチ２５は、上側ＬＣＤ２２に表示された立体視可能な画像（立体画像）の立体感を調整するために用いられる。図１〜図３に示されるように、３Ｄ調整スイッチ２５は、上側ハウジング２１の内側面及び右側面の端部に設けられ、ユーザが上側ＬＣＤ２２を正視した場合に、当該３Ｄ調整スイッチ２５を視認できる位置に設けられる。また、３Ｄ調整スイッチ２５の操作部は、内側面及び右側面の両方に突出しており、どちらからも視認及び操作することができる。なお、３Ｄ調整スイッチ２５以外のスイッチは全て下側ハウジング１１に設けられる。
【００７２】
図５は、図１に示す上側ハウジング２１のＡ−Ａ’線断面図である。図５に示すように、上側ハウジング２１の内側面の右端部には、凹部２１Ｃが形成され、当該凹部２１Ｃに３Ｄ調整スイッチ２５が設けられる。３Ｄ調整スイッチ２５は、図１及び図２に示されるように、上側ハウジング２１の正面及び右側面から視認可能に配置される。３Ｄ調整スイッチ２５のスライダ２５ａは、所定方向（上下方向）の任意の位置にスライド可能であり、当該スライダ２５ａの位置に応じて上側ＬＣＤ２２の表示モードが設定される。
【００７３】
図６Ａから図６Ｃは、３Ｄ調整スイッチ２５のスライダ２５ａがスライドする様子を示す図である。図６Ａは、３Ｄ調整スイッチ２５のスライダ２５ａが最下点（第３の位置）に存在する様子を示す図である。図６Ｂは、３Ｄ調整スイッチ２５のスライダ２５ａが最下点よりも上方位置（第１の位置）に存在する様子を示す図である。図６Ｃは、３Ｄ調整スイッチ２５のスライダ２５ａが最上点（第２の位置）に存在する様子を示す図である。
【００７４】
図６Ａに示すように、３Ｄ調整スイッチ２５のスライダ２５ａが最下点位置（第３の位置）に存在する場合、上側ＬＣＤ２２は平面表示モードに設定され、上側ＬＣＤ２２の画面には平面画像が表示される（なお、上側ＬＣＤ２２を立体表示モードのままとして、左目用画像と右目用画像を同一の画像とすることにより平面表示してもよい）。一方、図６Ｂに示す位置（最下点より上側の位置（第１の位置））から図６Ｃに示す位置（最上点の位置（第２の位置））までの間にスライダ２５ａが存在する場合、上側ＬＣＤ２２は立体表示モードに設定される。この場合、上側ＬＣＤ２２の画面には立体視可能な画像が表示される。スライダ２５ａが第１の位置から第２の位置の間に存在する場合、スライダ２５ａの位置に応じて、立体画像の見え方が調整される。具体的には、スライダ２５ａの位置に応じて、右目用画像及び左目用画像の横方向の位置のずれ量が調整される。３Ｄ調整スイッチ２５のスライダ２５ａは、第３の位置で固定されるように構成されており、第１の位置と第２の位置との間では上下方向に任意の位置にスライド可能に構成されている。例えば、スライダ２５ａは、第３の位置において、３Ｄ調整スイッチ２５を形成する側面から図６Ａに示す横方向に突出した凸部（図示せず）によって固定されて、所定以上の力が上方に加わらないと第３の位置よりも上方にスライドしないように構成されている。第３の位置から第１の位置にスライダ２５ａが存在する場合、立体画像の見え方は調整されないが、これはいわゆるあそびである。他の例においては、あそびをなくして、第３の位置と第１の位置とを同じ位置としてもよい。また、第３の位置を第１の位置と第２の位置の間としてもよい。その場合、スライダを第３の位置から第１の位置の方向に動かした場合と、第２の方向に動かした場合とで、右目用画像及び左目用画像の横方向の位置のずれ量の調整する方向が逆になる。
【００７５】
なお、本実施形態のゲーム装置が実行するプログラムには、立体写真を表示するためのプログラムと、立体的なＣＧ画像を表示するためのプログラムがある。後者のプログラムでは、左目用の仮想カメラと右目用の仮想カメラで仮想空間を撮影して、左目用画像と右目用画像を生成する。本実施形態のゲーム装置は、このようなプログラムの実行時において、３Ｄ調整スイッチ２５のスライダ２５ａの位置に応じて、２つの仮想カメラの間隔を変更することにより、立体感を調整する。
【００７６】
３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードか否かを示す。３Ｄインジケータ２６は、ＬＥＤであり、上側ＬＣＤ２２の立体表示モードが有効の場合に点灯する。なお、３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているとき（すなわち、３Ｄ調整スイッチが上記第１の位置から上記第２の位置にあるときに、左目用画像と右目用画像が異なるような画像処理が実行されているとき）に限り、点灯するようにしてもよい。図１に示されるように、３Ｄインジケータ２６は、上側ハウジング２１の内側面に設けられ、上側ＬＣＤ２２の画面近傍に設けられる。このため、ユーザが上側ＬＣＤ２２の画面を正視した場合、ユーザは３Ｄインジケータ２６を視認しやすい。従って、ユーザは上側ＬＣＤ２２の画面を視認している状態でも、上側ＬＣＤ２２の表示モードを容易に認識することができる。
【００７７】
また、上側ハウジング２１の内側面には、スピーカ孔２１Ｅが設けられる。後述するスピーカ４３からの音声がこのスピーカ孔２１Ｅから出力される。
【００７８】
（ゲーム装置１０の内部構成）
次に、図７を参照して、ゲーム装置１０の内部の電気的構成について説明する。図７は、ゲーム装置１０の内部構成を示すブロック図である。図７に示すように、ゲーム装置１０は、上述した各部に加えて、情報処理部３１、メインメモリ３２、外部メモリインターフェイス（外部メモリＩ／Ｆ）３３、データ保存用外部メモリＩ／Ｆ３４、データ保存用内部メモリ３５、無線通信モジュール３６、ローカル通信モジュール３７、リアルタイムクロック（ＲＴＣ）３８、加速度センサ３９、電源回路４０、及びインターフェイス回路（Ｉ／Ｆ回路）４１等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング１１（又は上側ハウジング２１でもよい）内に収納される。
【００７９】
情報処理部３１は、所定のプログラムを実行するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１、画像処理を行うＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１２等を含む情報処理手段である。本実施形態では、所定のプログラムがゲーム装置１０内のメモリ（例えば外部メモリＩ／Ｆ３３に接続された外部メモリ４４やデータ保存用内部メモリ３５）に記憶されている。情報処理部３１のＣＰＵ３１１は、当該所定のプログラムを実行することによって、後述する仮想オブジェクト表示処理（図１０）を実行する。なお、情報処理部３１のＣＰＵ３１１によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部３１は、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３１３を含む。情報処理部３１のＧＰＵ３１２は、情報処理部３１のＣＰＵ３１１からの命令に応じて画像を生成し、ＶＲＡＭ３１３に描画する。そして、情報処理部３１のＧＰＵ３１２は、ＶＲＡＭ３１３に描画された画像を上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に出力し、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に当該画像が表示される。
【００８０】
情報処理部３１には、メインメモリ３２、外部メモリＩ／Ｆ３３、データ保存用外部メモリＩ／Ｆ３４、及び、データ保存用内部メモリ３５が接続される。外部メモリＩ／Ｆ３３は、外部メモリ４４を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリＩ／Ｆ３４は、データ保存用外部メモリ４５を着脱自在に接続するためのインターフェイスである。
【００８１】
メインメモリ３２は、情報処理部３１（のＣＰＵ３１１）のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ３２は、上記仮想オブジェクト表示処理に用いられる各種データを一時的に記憶したり、外部（外部メモリ４４や他の機器等）から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ３２として例えばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。
【００８２】
外部メモリ４４は、情報処理部３１によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ４４は、例えば読み取り専用の半導体メモリで構成される。外部メモリ４４が外部メモリＩ／Ｆ３３に接続されると、情報処理部３１は外部メモリ４４に記憶されたプログラムを読み込むことができる。情報処理部３１が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ４５は、不揮発性の読み書き可能なメモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ４５には、外側撮像部２３で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ４５がデータ保存用外部メモリＩ／Ｆ３４に接続されると、情報処理部３１はデータ保存用外部メモリ４５に記憶された画像を読み込み、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に当該画像を表示することができる。
【００８３】
データ保存用内部メモリ３５は、読み書き可能な不揮発性メモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ３５には、無線通信モジュール３６を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【００８４】
無線通信モジュール３６は、例えばＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール３７は、所定の通信方式（例えば赤外線通信）により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール３６及びローカル通信モジュール３７は情報処理部３１に接続される。情報処理部３１は、無線通信モジュール３６を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール３７を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００８５】
また、情報処理部３１には、加速度センサ３９が接続される。加速度センサ３９は、３軸（ｘｙｚ軸）方向に沿った直線方向の加速度（直線加速度）の大きさを検出する。加速度センサ３９は、下側ハウジング１１の内部に設けられる。加速度センサ３９は、図１に示すように、下側ハウジング１１の長辺方向をｘ軸、下側ハウジング１１の短辺方向をｙ軸、下側ハウジング１１の内側面（主面）に対して垂直な方向をｚ軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサ３９は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ３９は１軸又は２軸方向を検出する加速度センサであってもよい。情報処理部３１は、加速度センサ３９が検出した加速度を示すデータ（加速度データ）を受信して、ゲーム装置１０の姿勢や動きを検出することができる。
【００８６】
また、情報処理部３１には、ＲＴＣ３８及び電源回路４０が接続される。ＲＴＣ３８は、時間をカウントして情報処理部３１に出力する。情報処理部３１は、ＲＴＣ３８によって計時された時間に基づき現在時刻（日付）を計算する。電源回路４０は、ゲーム装置１０が有する電源（下側ハウジング１１に収納される上記充電式電池）からの電力を制御し、ゲーム装置１０の各部品に電力を供給する。
【００８７】
また、情報処理部３１には、Ｉ／Ｆ回路４１が接続される。Ｉ／Ｆ回路４１には、マイク４２及びスピーカ４３が接続される。具体的には、Ｉ／Ｆ回路４１には、図示しないアンプを介してスピーカ４３が接続される。マイク４２は、ユーザの音声を検知して音声信号をＩ／Ｆ回路４１に出力する。アンプは、Ｉ／Ｆ回路４１からの音声信号を増幅し、音声をスピーカ４３から出力させる。また、タッチパネル１３はＩ／Ｆ回路４１に接続される。Ｉ／Ｆ回路４１は、マイク４２及びスピーカ４３（アンプ）の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換及びＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部３１に出力する。タッチ位置データは、タッチパネル１３の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル１３からの信号の読み込み、及び、タッチ位置データの生成を所定時間に１回の割合で行う。情報処理部３１は、タッチ位置データを取得することにより、タッチパネル１３に対して入力が行われた位置を知ることができる。
【００８８】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｌからなり、情報処理部３１に接続される。操作ボタン１４から情報処理部３１へは、各操作ボタン１４Ａ〜１４Ｉに対する入力状況（押下されたか否か）を示す操作データが出力される。情報処理部３１は、操作ボタン１４から操作データを取得することによって、操作ボタン１４に対する入力に従った処理を実行する。
【００８９】
下側ＬＣＤ１２及び上側ＬＣＤ２２は情報処理部３１に接続される。下側ＬＣＤ１２及び上側ＬＣＤ２２は、情報処理部３１（のＧＰＵ３１２）の指示に従って画像を表示する。本実施形態では、情報処理部３１は、上側ＬＣＤ２２に立体画像（立体視可能な画像）を表示させる。
【００９０】
具体的には、情報処理部３１は、上側ＬＣＤ２２のＬＣＤコントローラ（図示せず）と接続され、当該ＬＣＤコントローラに対して視差バリアのＯＮ／ＯＦＦを制御する。上側ＬＣＤ２２の視差バリアがＯＮになっている場合、情報処理部３１のＶＲＡＭ３１３に格納された右目用画像と左目用画像とが、上側ＬＣＤ２２に出力される。より具体的には、ＬＣＤコントローラは、右目用画像について縦方向に１ライン分の画素データを読み出す処理と、左目用画像について縦方向に１ライン分の画素データを読み出す処理とを交互に繰り返すことによって、ＶＲＡＭ３１３から右目用画像と左目用画像とを読み出す。これにより、右目用画像及び左目用画像が、画素を縦に１ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側ＬＣＤ２２の画面に表示される。そして、上側ＬＣＤ２２の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側ＬＣＤ２２の画面には立体視可能な画像が表示される。
【００９１】
外側撮像部２３及び内側撮像部２４は、情報処理部３１に接続される。外側撮像部２３及び内側撮像部２４は、情報処理部３１の指示に従って画像を撮像し、撮像した画像データを情報処理部３１に出力する。本実施形態では、情報処理部３１は外側撮像部２３及び内側撮像部２４のいずれか一方に対して撮像指示を行い、撮像指示を受けた撮像部が画像を撮像して画像データを情報処理部３１に送る。具体的には、本実施形態では、ユーザによるタッチパネル１３を用いたタッチ操作によって使用する撮像部が選択される。撮像部が選択されたことを情報処理部３１（ＣＰＵ３１１）が検知し、情報処理部３１が外側撮像部２３又は内側撮像部２４に対して撮像指示を行う。
【００９２】
３Ｄ調整スイッチ２５は、情報処理部３１に接続される。３Ｄ調整スイッチ２５は、スライダ２５ａの位置に応じた電気信号を情報処理部３１に送信する。
【００９３】
また、３Ｄインジケータ２６は、情報処理部３１に接続される。情報処理部３１は、３Ｄインジケータ２６の点灯を制御する。本実施形態では、情報処理部３１は、上側ＬＣＤ２２が立体表示モードである場合、３Ｄインジケータ２６を点灯させる。以上がゲーム装置１０の内部構成の説明である。
【００９４】
（仮想オブジェクト表示処理の詳細）
次に、図８〜図１２を参照して、本実施形態に係る仮想オブジェクト表示処理の詳細について説明する。まず、仮想オブジェクト表示処理の際にメインメモリ３２に記憶される主なデータについて説明する。図８は、ゲーム装置１０のメインメモリ３２のメモリマップを示す図である。図８に示されるように、メインメモリ３２には、データ記憶領域７０が設けられる。データ記憶領域７０には、カメラ選択データ７１、左目用画像位置データ７２、右目用画像位置データ７３、加速度データ７４、表示モードデータ７５、操作データ７６、画像表示プログラム７７、画像表示用データ７８等が記憶される。これらのデータの他、メインメモリ３２には、上記撮像処理を実行するプログラムやタッチパネル１３へのタッチ位置を示すデータ、下側ＬＣＤ１２に表示されるカメラ選択のための画像を示すデータ等が記憶される。なお、以下においては、「撮像部」を「カメラ」という文言で代用して記載する場合がある。
【００９５】
カメラ選択データ７１は、現在選択されている撮像部を示すデータである。カメラ選択データ７１は、現在選択されている撮像部が外側撮像部２３か内側撮像部２４かを示すデータである。
【００９６】
左目用画像位置データ７２は、外側撮像部（左）２３ａによって撮像された左目用画像の上側ＬＣＤ２２上の表示位置を示すデータであり、左目用画像の画像中心の座標値を示すデータである。右目用画像位置データ７３は、外側撮像部（右）２３ｂによって撮像された右目用画像の上側ＬＣＤ２２上の表示位置を示すデータであり、右目用画像の画像中心の座標値を示すデータである。
【００９７】
加速度データ７４は、加速度センサ３９によって検出された最新の加速度を示すデータである。具体的には、加速度データ７４は、加速度センサ３９によって検出されたｘ軸方向、ｙ軸方向、及びｚ軸方向の加速度の値を示す。加速度センサ３９は所定時間に１回の割合で加速度を検出し、情報処理部３１（ＣＰＵ３１１）に送信する。情報処理部３１は、加速度センサ３９が加速度を検出するたびにメインメモリ３２の加速度データ７４を更新する。
【００９８】
表示モードデータ７５は、上側ＬＣＤ２２の表示モードが立体表示モードか平面表示モードかを示すデータである。
【００９９】
操作データ７６は、各操作ボタン１４Ａ〜Ｅ、Ｇ〜Ｈ、及び、アナログスティック１５に対して行われた操作を示すデータである。
【０１００】
画像表示プログラム７７は、後述する、仮想オブジェクト表示プログラム（図１０のメインルーチン）、ビュー行列算出処理プログラム（図１１のサブルーチン）及び仮想オブジェクト処理プログラム（図１２のサブルーチン）を含む。これら以外のプログラムも用いて上側ＬＣＤ２２に仮想オブジェクトを含む画像が表示されるが、これら以外のプログラムは、本発明の本質的な部分との関連性が低いので、ここでは説明しない。
【０１０１】
仮想オブジェクト表示プログラムは、外側撮像部２３により撮像された実世界（現実世界）画像に、自然な拡張現実感を実現した仮想空間内の仮想オブジェクトを重ね合わせた画像を、上側ＬＣＤ２２に立体視可能に表示する。具体的には、マーカの検出誤差により発生する仮想オブジェクトの表示位置の誤差（ぶれ）を補正して、仮想オブジェクトを表示する。このメインルーチンに加えて、マーカ（マーカの中心位置）と仮想オブジェクトとの距離に応じて使い分ける複数のビュー行列を算出するプログラム（ビュー行列算出処理プログラム）と、仮想オブジェクト毎に使用するビュー行列を割り当てるプログラム（仮想オブジェクト処理プログラム）とがある。なお、ビュー行列は、仮想カメラの位置及び姿勢を反映した行列であり、具体的には、仮想空間におけるマーカ座標系で表される座標を、仮想カメラの位置および姿勢を基準とした仮想カメラ座標系で表される座標へと変換する座標変換行列である。すなわち、仮想カメラの位置及び姿勢は、ビュー行列により付与されることになる。上記マーカ座標系は、現実空間におけるマーカの位置に対応する仮想空間内の位置を原点とした座標系である。
【０１０２】
画像表示用データ７８は、これらのプログラムが実行される場合に記憶されるデータである。具体的には、図９に示すように、画像表示用データ７８は、仮想オブジェクト情報、左仮想カメラ保持ビュー行列、左仮想カメラ最新ビュー行列、左仮想カメラの補正ビュー行列（１）〜（３）、右仮想カメラの補正ビュー行列（１）〜（３）、及び各種変数を含む。
【０１０３】
仮想オブジェクト情報は、外側撮像部２３により撮像された実世界画像に重ね合わせられて表示される仮想オブジェクトについての情報であって、例えば、仮想オブジェクトの個数Ｍ（Ｍは自然数）、Ｍ個の仮想オブジェクトのそれぞれについてのマーカと仮想オブジェクトとの距離についての情報及び移動オブジェクトであるか否かを示す情報、適用される補正ビュー行列の種類を示す情報（後述する補正ビュー行例（１）〜（３）のいずれかを判定できる情報）等を含む。
【０１０４】
左仮想カメラ保持ビュー行列及び左仮想カメラ最新ビュー行列は、左仮想カメラビュー行列である。左仮想カメラ保持ビュー行列は、繰り返し実行されるメインルーチンにおける１サイクル前のビュー行列であり、左仮想カメラ最新ビュー行列は、メインルーチンにおける最新のビュー行列である。なお、左仮想カメラ保持ビュー行列は、メインルーチンにおける２サイクル前のビュー行列であってもよく、この場合、左仮想カメラ最新ビュー行列は、メインルーチンにおける１サイクル前のビュー行列であってもよい。すなわち、左仮想カメラ保持ビュー行列が、左仮想カメラ最新ビュー行列以前に得られるものであって、かつ、左仮想カメラ最新ビュー行列が、ユーザによるゲーム装置１０の操作に対する仮想オブジェクトの追従性を損なわない程度のタイミングで得られるものであればよい。
【０１０５】
左仮想カメラの補正ビュー行列（１）〜（３）は、マーカと仮想オブジェクトとの距離を３区分とした場合に、その距離に応じて使い分けられる、仮想オブジェクトの表示位置を補正する処理を加えた、ワールド座標系からビュー座標系への座標変換行列である。左仮想カメラの補正ビュー行列（１）は、マーカと仮想オブジェクトとが遠距離の場合に適用されるビュー行列であって、左仮想カメラの補正ビュー行列（２）は、マーカと仮想オブジェクトとが中距離の場合に適用されるビュー行列であって、左仮想カメラの補正ビュー行列（３）は、マーカと仮想オブジェクトとが近距離の場合に適用されるビュー行列である。右仮想カメラの補正ビュー行列（１）〜（３）は、左仮想カメラの補正ビュー行列（１）〜（３）を平行移動させた行列である。なお、距離の区分は３区分に限定されない。
【０１０６】
本実施形態においては、保持ビュー行列に最新ビュー行列を反映させて補正ビュー行列を算出する。すなわち、保持ビュー行列と最新ビュー行列とに基づいて、新たなビュー行列を算出する。このようにして補正ビュー行列が算出される場合の最新ビュー行列を反映させる比率が、各種変数として記憶されている。図９に示すように、例えば、最新ビュー行列反映比率（１）として遠距離用ブレンド率０．３が、最新ビュー行列反映比率（２）として中距離用ブレンド率０．７が、最新ビュー行列反映比率（３）として近距離用ブレンド率１．０が、それぞれ記憶されている。このようにブレンド率が設定されている場合、マーカからの遠距離の仮想オブジェクトに適用される補正ビュー行列は、最新ビュー行列を３０％反映させて保持ビュー行列を７０％反映させた行列になり、最新のビュー行列の反映度合いが低く、補正の度合いが大きいことを示す。マーカからの中距離の仮想オブジェクトに適用される補正ビュー行列は、最新ビュー行列を７０％反映させて保持ビュー行列を３０％反映させた行列になり、最新のビュー行列の反映度合いが高く、補正の度合いが小さいことを示す。マーカからの近距離の仮想オブジェクトに適用される補正ビュー行列は、最新ビュー行列を１００％反映させて保持ビュー行列を反映させない行列になり、最新のビュー行列のみを用いており、補正されないことを示す。なお、マーカと仮想オブジェクトとの距離に応じて補正の度合いを変更するのは、マーカと仮想オブジェクトとの距離が大きいほど、仮想オブジェクトの表示位置のぶれ量が大きくなるためである。これの詳細については、後述する。
【０１０７】
次に、仮想オブジェクト表示処理の詳細について、図１０〜図１２を参照して説明する。図１０は、本実施形態に係る仮想オブジェクト表示処理の詳細を示すメインフローチャート（メインルーチン）である。ゲーム装置１０の電源が投入されると、ゲーム装置１０の情報処理部３１（ＣＰＵ３１１）は、図示しないＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３２等の各ユニットが初期化される。次に、データ保存用内部メモリ３５に記憶された仮想オブジェクト表示プログラムがメインメモリ３２に読み込まれ、情報処理部３１のＣＰＵ３１１によって当該プログラムの実行が開始される。
【０１０８】
図１１に示すフローチャートは、図１０のビュー行列算出処理（ステップＳ２００）における詳細なフローチャート（サブルーチン）である。図１２に示すフローチャートは、図１０の仮想オブジェクト処理（ステップＳ３００）における詳細なフローチャート（サブルーチン）である。なお、図１０に示すステップＳ１００〜ステップＳ８００の処理ループは、１フレーム（例えば１／３０秒。フレーム時間という）毎に繰り返し実行される。このように繰り返し実行されるこのプログラムにおいて、１回前の処理を１サイクル前の処理と記載する。このため、最新ビュー行列の１サイクル前のビュー行列が保持ビュー行列になる。１サイクル前でなくても構わず、ぶれ量の少ないビュー行列を保持するようにしても構わない。また、以下においては、撮像部として外側撮像部２３が選択され、表示モードとして立体表示モードが選択されているとして説明する。なお、本発明の適用は、立体表示モードに限定されるものではなく、平面表示モードであっても構わない。以下に示す立体表示モードにおける左目用処理のみを行うように変更すれば、平面表示モードでの処理となる。
【０１０９】
まず、図１０を参照して、仮想オブジェクト表示処理のメインルーチンについて説明する。ステップＳ１００にて、情報処理部３１は、左右の実世界画像を取得する。具体的には、情報処理部３１は、現在選択されているカメラによって撮像された画像を示す画像データを取得し、ＶＲＡＭ３１３に格納する。ここでは、外側撮像部２３が選択されているため、情報処理部３１は、外側撮像部２３によって撮像された右実世界画像と左実世界画像とを取得する。
【０１１０】
ステップＳ２００にて、情報処理部３１は、補正用のビュー行列算出処理を実行する。なお、このステップＳ２００のビュー行列算出処理はサブルーチン化されており、その詳細については、後述する。
【０１１１】
ステップＳ３００にて、情報処理部３１は、仮想オブジェクト毎に適用する補正ビュー行列を選択する仮想オブジェクト処理を実行する。なお、このステップＳ３００の仮想オブジェクト処理はサブルーチン化されており、その詳細については、後述する。
【０１１２】
ステップＳ４００にて、情報処理部３１は、左実世界画像を左フレームバッファに描画する。この処理については公知の技術を適用できる。
【０１１３】
ステップＳ５００にて、情報処理部３１は、選択された左仮想カメラ補正ビュー行列を用いて、左仮想カメラから見たＭ個の仮想オブジェクトを左フレームバッファに上書きする。
【０１１４】
ステップＳ６００にて、情報処理部３１は、右実世界画像を右フレームバッファに描画する。この処理についてはステップＳ４００と同様に公知の技術を適用できる。
【０１１５】
ステップＳ７００にて、情報処理部３１は、選択された右仮想カメラ補正ビュー行列を用いて、右仮想カメラから見たＭ個の仮想オブジェクトを右フレームバッファに上書きする。
【０１１６】
ステップＳ８００にて、情報処理部３１は、上側ＬＣＤ２２の描画処理である、垂直同期割り込み待ち処理を行う。このとき、パララックスバリア方式により上側ＬＣＤ２２に表示される画像が立体視可能なように、左フレームバッファ及び右フレームバッファに描画された画像が合成されて上側ＬＣＤ２２に表示される。
【０１１７】
次に、図１１を参照して、ビュー行列算出処理のサブルーチンについて説明する。ステップＳ２０２にて、情報処理部３１は、外側撮像部２３の外側撮像部（左）２３ａにより撮像された画像の中からマーカを検出する。ここでは、このマーカは、白色の紙片の中央付近に四角枠が黒色で印刷され、その四角枠の中に矢印が白抜きで印刷されたものとする。しかしながら、マーカはこのような形状、模様、色彩に限定されないで、マーカの位置（ここでは４点の位置）と方向とが認識できるものであればよい。具体的には、情報処理部３１は、まず、外側撮像部２３により撮像された画像の中から４本の線分によって連結される連結領域を抽出し、抽出した連結領域の内部のパターン画像を決定する。そして、情報処理部３１は、決定したパターン画像を示すパターン画像データと外部メモリ４４に予め記憶されているパターン画像データとの類似度を計算し、計算した結果としての類似度を示す値が予め定められた閾値以上である場合に、マーカを検出する。
【０１１８】
ステップＳ２０３にて、情報処理部３１は、マーカ検出結果に基づいて、実カメラとマーカとの位置関係を算出する。ステップＳ２０４にて、情報処理部３１は、算出された、実カメラとマーカとの位置関係に基づいて、左仮想カメラの最新ビュー行列を決定する。決定された左仮想カメラの最新ビュー行列は、メインメモリ３２のデータ記憶領域７０の画像表示用データ７８の左仮想カメラ最新ビュー行列として記憶される。
【０１１９】
ステップＳ２０６にて、情報処理部３１は、メインメモリ３２のデータ記憶領域７０の画像表示用データ７８に記憶された左仮想カメラ保持ビュー行列を読出す。この左仮想カメラ保持ビュー行列は、１サイクル前においては左仮想カメラ最新ビュー行列であった行列である。
【０１２０】
ステップＳ２０８にて、情報処理部３１は、最新ビュー行列反映比率（１）（遠距離用ブレンド比率０．３）を用いて、左仮想カメラの補正ビュー行列（１）（遠距離用）を算出する。このとき、概念的には（すなわち行列演算のように表現すると）、補正ビュー行列＝最新ビュー行列×３０％＋保持ビュー行列×７０％と表わすことができる。この補正ビュー行列は、最新ビュー行列を３０％しか反映させないで、保持された過去のビュー行列を７０％も反映させている点から補正の度合いが大きいビュー行列となる。なお、算出された左仮想カメラの補正ビュー行列（１）（遠距離用）は、メインメモリ３２のデータ記憶領域７０に記憶された画像表示用データ７８として記憶される。
【０１２１】
ステップＳ２１０にて、情報処理部３１は、最新ビュー行列反映比率（２）（中距離用ブレンド比率０．７）を用いて、左仮想カメラの補正ビュー行列（２）（中距離用）を算出する。このとき、概念的には、補正ビュー行列＝最新ビュー行列×７０％＋保持ビュー行列×３０％と表わすことができる。この補正ビュー行列は、最新ビュー行列を７０％も反映させて、保持された過去のビュー行列を３０％しか反映させていない点から補正の度合いが小さいビュー行列となる。なお、算出された左仮想カメラの補正ビュー行列（２）（中距離用）は、メインメモリ３２のデータ記憶領域７０に記憶された画像表示用データ７８として記憶される。
【０１２２】
ステップＳ２１２にて、情報処理部３１は、最新ビュー行列反映比率（３）（近距離用ブレンド比率１．０）を用いて、左仮想カメラの補正ビュー行列（３）（近距離用）を算出する。このとき、概念的には、補正ビュー行列＝最新ビュー行列×１００％＋保持ビュー行列×０％と表わすことができる。この補正ビュー行列は、最新ビュー行列のみを反映させており、補正されていないビュー行列となる。なお、算出された左仮想カメラの補正ビュー行列（３）（近距離用）は、メインメモリ３２のデータ記憶領域７０に記憶された画像表示用データ７８として記憶される。
【０１２３】
ステップＳ２１４にて、情報処理部３１は、左仮想カメラの補正ビュー行列（１）〜（３）を平行移動させて、右仮想カメラの補正ビュー行列（１）〜（３）を算出する。平行移動量は、情報処理部３１で別途演算される。なお、算出された右仮想カメラの補正ビュー行列（１）〜（３）は、メインメモリ３２のデータ記憶領域７０に記憶された画像表示用データ７８として記憶される。その後、この処理は終了する（メインルーチンへ戻る）。
【０１２４】
次に、図１２を参照して、仮想オブジェクト処理のサブルーチンについて説明する。ステップＳ３０２にて、情報処理部３１は、メインメモリ３２のデータ記憶領域７０に画像表示用データ７８として記憶された仮想オブジェクト情報を読出す。このとき、処理対象の仮想オブジェクトの個数はＭ個とする。
【０１２５】
ステップＳ３０４にて、情報処理部３１は、変数Ｎに１を代入して初期化する。ステップＳ３０６にて、情報処理部３１は、第Ｎ番目の仮想オブジェクトは移動オブジェクトであるか否かを判定する。このとき、情報処理部３１は、読出した仮想オブジェクト情報に含まれる移動オブジェクトであるか否かを示す情報に基づいて、移動オブジェクトであるか否かを判定する。移動オブジェクトであると判定されると（ステップＳ３０６にてＹＥＳ）、処理はステップＳ３１０へ移される。もしそうでないと（ステップＳ３０６にてＮＯ）、この処理はステップＳ３０８へ移される。
【０１２６】
ステップＳ３０８にて、情報処理部３１は、第Ｎ番目の仮想オブジェクトに適用するビュー行列として補正ビュー行列（３）を選択して記憶する。補正ビュー行列（３）は近距離用の補正ビュー行列であって補正しない行列である。これは、マーカの検出誤差に起因する仮想オブジェクトの表示位置を補正する場合に、固定されている仮想オブジェクトの表示位置を補正してしまうと、ユーザに違和感を与えてしまうため、固定オブジェクトの表示位置を補正しないようにしている。このとき、選択された補正ビュー行列の種類が判定できる情報が、仮想オブジェクト情報として記憶される。なお、第Ｎ番目の仮想オブジェクトに適用される左仮想カメラ補正ビュー行列及び右仮想カメラ補正ビュー行列が記憶される。その後、この処理はステップＳ３１４へ移される。
【０１２７】
ステップＳ３１０にて、情報処理部３１は、マーカ座標系原点から第Ｎ番目の仮想オブジェクトまでの距離Ｌ（Ｎ）を算出する。このとき、情報処理部３１は、読出した仮想オブジェクト情報に含まれるマーカと仮想オブジェクトとの距離についての情報に基づいて、距離Ｌ（Ｎ）を算出する。
【０１２８】
ステップＳ３１２にて、情報処理部３１は、距離Ｌ（Ｎ）に基づいて、第Ｎ番目の仮想オブジェクトに適用する補正ビュー行列を選択して記憶する。このとき、選択された補正ビュー行列の種類が判定できる情報が、仮想オブジェクト情報として記憶される。なお、第Ｎ番目の仮想オブジェクトに適用される左仮想カメラ補正ビュー行列及び右仮想カメラ補正ビュー行列が記憶される。
【０１２９】
ステップＳ３１４にて、情報処理部３１は、変数Ｎが仮想オブジェクトの個数Ｍに一致したか否かを判定する。Ｎ＝Ｍであると判定されると（ステップＳ３１４にてＹＥＳ）、処理は終了する（メインルーチンへ戻る）。もしそうでないと（ステップＳ３１４にてＮＯ）、この処理は、ステップＳ３１６へ移される。
【０１３０】
ステップＳ３１６にて、情報処理部３１は、変数Ｎに１を加算する。その後、この処理はＳ３０６へ戻されて、処理対象の全ての仮想オブジェクト（Ｍ個）に適用される補正ビュー行列を選択して記憶する処理を繰り返す。
【０１３１】
以上のような構造及びフローチャートに基づく、本実施形態に係るゲーム装置１０の動作について、図１３〜図１６を参照して説明する。これらの図においては、ゲーム装置１０において対戦車ゲーム（シューティングゲーム）が行われるものとする。上側ＬＣＤ２２には、外側撮像部２３で撮像した画像の中から検出したマーカ原点に対戦相手の戦車が表示されてその戦車がユーザに向けて砲弾を発射する。これに対して、ユーザが特定のボタン（例えば操作ボタン１４Ｂ）を押下すると戦車に向けて砲弾が発射される様子が上側ＬＣＤ２２に表示される。以下においては、このような砲弾を表示位置を補正する対象である仮想オブジェクトとして説明する。なお、本発明の適用は、このようなシューティングゲームに限定されない。
【０１３２】
（仮想オブジェクトの表示動作）
ユーザが、外側撮像部２３を選択して、立体表示モードを選択して、上述したプログラムが実行されるように設定する。ユーザが、例えば机の上に置いたマーカを含めた範囲を外側撮像部２３で撮影することにより、左右実世界画像が取得される（ステップＳ１００）。マーカが検出されて（ステップＳ２０２）、マーカの検出結果に基づいて、左仮想カメラの最新ビュー行列が決定される（ステップＳ２０４）。さらに、左仮想カメラ保持ビュー行列が読出される（ステップＳ２０６）。これにより、左仮想カメラについて、最新のビュー行列と、１サイクル前のビュー行列とが決定される。
【０１３３】
最新ビュー行列反映比率（１）〜（３）を用いて、左仮想カメラの補正ビュー行列（１）〜（３）が算出されて、画像表示用データ７８として記憶される（ステップＳ２０８〜ステップＳ２１０）。さらに、算出された左仮想カメラの補正ビュー行列（１）〜（３）を平行移動させた右仮想カメラの補正ビュー行列（１）〜（３）が算出されて、画像表示用データ７８として記憶される（ステップＳ２１４）。
【０１３４】
このようなビュー行列算出処理（ステップＳ２００）により、マーカとの距離が遠い仮想オブジェクトに適用される左仮想カメラ補正ビュー行列（１）及び右仮想カメラ補正ビュー行列（１）、マーカとの距離が中程度の仮想オブジェクトに適用される左仮想カメラ補正ビュー行列（２）及び右仮想カメラ補正ビュー行列（２）、マーカとの距離が近い仮想オブジェクトに適用される左仮想カメラ補正ビュー行列（３）及び右仮想カメラ補正ビュー行列（３）が準備される。これらの補正ビュー行列は、仮想オブジェクトの表示位置の誤差を、仮想オブジェクトが備える特性（マーカからの距離）に基づいて段階的に補正するために用いられる。
【０１３５】
次に仮想オブジェクト情報が読出されて（ステップＳ３０２）、変数Ｎが初期化（Ｎ＝１）され（ステップＳ３０４）、第１番目の仮想オブジェクトが移動オブジェクトでないので（ステップＳ３０６にてＮＯ）、第１番目の仮想オブジェクトとマーカ座標系原点（マーカ位置）との距離Ｌ（１）が算出される（ステップＳ３１０）。
【０１３６】
距離Ｌ（１）が遠距離下限を示すしきい値以上であると（すなわちマーカから遠距離であると）、第１番目の仮想オブジェクトに適用する補正ビュー行列として、左仮想カメラ補正ビュー行列（１）及び右仮想カメラ補正ビュー行列（１）が選択されて記憶される（ステップＳ３１２）。
【０１３７】
距離Ｌ（１）が遠距離下限を示すしきい値未満であって中距離下限を示すしきい値以上であると（すなわちマーカから中距離であると）、第１番目の仮想オブジェクトに適用する補正ビュー行列として、左仮想カメラ補正ビュー行列（２）及び右仮想カメラ補正ビュー行列（２）が選択されて記憶される（ステップＳ３１２）。
【０１３８】
距離Ｌ（１）が中距離下限を示すしきい値未満であると（すなわちマーカから近距離であると）、第１番目の仮想オブジェクトに適用する補正ビュー行列として、左仮想カメラ補正ビュー行列（３）及び右仮想カメラ補正ビュー行列（３）が選択されて記憶される（ステップＳ３１２）。
【０１３９】
このようにして、第１番目の仮想オブジェクトから第Ｍ番目の仮想オブジェクトまで補正ビュー行列を選択する処理が繰り返し行われる。このような仮想オブジェクト処理（ステップＳ３００）により、処理対象の全ての仮想オブジェクトについて、マーカとの距離に応じて左仮想カメラ補正ビュー行列及び右仮想カメラ補正ビュー行列が選択されて、仮想オブジェクト毎にどの補正ビュー行列を適用するのかを示す情報が記憶される。
【０１４０】
このように、複数の補正ビュー行列が準備され、仮想オブジェクト毎に適用される補正ビュー行列についての情報が準備されると、左実世界画像が左フレームバッファに描画され（ステップＳ４００）、１個目〜Ｍ個目までのＭ個の仮想オブジェクトが、それぞれ選択された左仮想カメラ補正ビュー行列を用いて、左実世界画像が描画された左フレームバッファに上書きされる（ステップＳ５００）。
【０１４１】
左フレームバッファの処理が終了すると、右実世界画像が右フレームバッファに描画され（ステップＳ６００）、１個目〜Ｍ個目までのＭ個の仮想オブジェクトが、それぞれ選択された右仮想カメラ補正ビュー行列を用いて、右実世界画像が描画された右フレームバッファに上書きされる（ステップＳ７００）。
【０１４２】
このように、左フレームバッファへの描画処理（左実世界画像に左目用仮想オブジェクトを上書き）及び右フレームバッファへの描画処理（右実世界画像に右目用仮想オブジェクトを上書き）が終了すると、垂直同期割り込み待ち処理を行い、上側ＬＣＤ２２に表示される画像が立体視可能なように、左フレームバッファに描画された画像と右フレームバッファに描画された画像とが合成されて上側ＬＣＤ２２に表示される（ステップＳ８００）。
【０１４３】
（仮想オブジェクトの表示位置の補正）
図１３を参照して、仮想オブジェクト（ここでは砲弾）の表示についての具体例を説明する。上述のように動作したゲーム装置１０において、マーカ座標系原点から近距離の位置にある砲弾と、マーカ座標系原点から中距離の位置にある砲弾と、マーカ座標系原点から遠距離の位置にある砲弾とに着目する。図１３においては、砲弾を斜線で塗りつぶした円で示す。
【０１４４】
図１３に示すように、マーカ座標系原点からの距離Ｌが遠い仮想オブジェクトほど、表示位置のぶれ量が大きくなる。これは、マーカの検出誤差に含まれる角度成分に起因する。すなわち、誤差角度が同じであるとしても、マーカからの距離が近い仮想オブジェクトよりもマーカからの距離が遠い仮想オブジェクトの方が、位置の誤差量（図１３における「補正前のぶれ量」）が大きくなる。
【０１４５】
図１０に示すメインフローチャートが繰り返し実行されている状態において、あるサイクルにおける仮想カメラの位置が、図１３における「仮想カメラ（保持）」であったとする。次のサイクルでマーカの検出誤差が含まれて仮想カメラのビュー行列が算出されて、仮想カメラの位置が図１３における「仮想カメラ（最新）」に変動してしまったとする。この場合、１サイクル前では「仮想カメラ（保持）」から見て真正面に見えていた中距離の位置にある砲弾は、このサイクルで何ら補正しないと「仮想カメラ（最新）」から見ることになる（補正前視線）。このため、１サイクル前に真正面に見えていた中距離の位置にある砲弾が、このサイクルでは、上側ＬＣＤ２２の左端部付近に表示されて、自然な拡張現実感を実現することができない。
【０１４６】
この中距離にある仮想オブジェクト（砲弾）については、補正ビュー行列（２）（中距離用）が適用されて仮想オブジェクトの表示位置が補正される。補正ビュー行列（２）（中距離用）は、補正の度合いが小さい。このため、１サイクル前では「仮想カメラ（保持）」から見て真正面に見えていた中距離の位置にある砲弾は、このサイクルで補正されることにより「仮想カメラ（補正度合い小）」から見ることになる（補正後視線）。このため、１サイクル前に真正面に見えていた中距離の位置にある砲弾が、このサイクルでは、上側ＬＣＤ２２の左側ではあるものの中央付近に表示されて、自然な拡張現実感を実現することができている。
【０１４７】
さらに、ぶれ量が大きい場合、すなわち、マーカからの距離が遠い位置にある砲弾は、中距離にある砲弾よりも上側ＬＣＤ２２の左端部のさらに左側に表示されることになり、実際には上側ＬＣＤ２２の表示領域外となり、ユーザには見えないほどに補正前のぶれ量が大きくなる場合がある。このような仮想オブジェクトに対しては、このサイクルで補正されることにより「仮想カメラ（補正度合い大）」から見ることになる。このため、１サイクル前に真正面に見えていた中距離の位置にある砲弾が、このサイクルでは、見えなくなるという状態を回避して、上側ＬＣＤ２２の左側ではあるものの中央付近に表示されて、自然な拡張現実感を実現することができている。
【０１４８】
なお、マーカからの距離が近い位置にある砲弾については、補正が行われない。これは、このような近距離の仮想オブジェクトは、表示位置の誤差が小さいため、保持ビュー行列を反映させた補正ビュー行列を用いても効果が少ないためである。このため、本実施形態においては、補正ビュー行列（３）（近距離用）には、保持ビュー行列の成分を反映させていない。
【０１４９】
（ゲーム装置の画面）
このように仮想オブジェクトの表示位置が補正される場合のゲーム装置１０における上側ＬＣＤ２２の画面について説明する。図１４が、この対戦車ゲームの初期状態である。マーカ座標系原点、対戦相手の戦車がマーカとともに表示されている。なお、図１４では表示していないが、実世界の画像も表示されており、自然な拡張現実感を実現するように、実世界画像に仮想オブジェクトである戦車が重ね合わせられて表示されている。また、このとき、立体表示モードであるので、上側ＬＣＤ２２には立体視可能に実世界画像も仮想オブジェクト画像も表示されている。
【０１５０】
このような状態でゲームが開始されて、対戦相手の戦車が発射した砲弾がマーカから中距離の位置に到達したときに、マーカの検出誤差が含まれて仮想カメラのビュー行列が算出されて、仮想カメラの位置が変動しまったとする。この場合、図１５Ａに示すように、１サイクル前に真正面に見えていた砲弾（点線丸印）が、このサイクルでは黒い丸印で示すように、上側ＬＣＤ２２の左端部付近に表示される。このように自然な拡張現実感を実現できていない。
【０１５１】
仮想カメラの位置が変動してしまったときに補正ビュー行列を用いて仮想オブジェクトの表示位置を補正すると、図１５Ｂに示すように、１サイクル前に真正面に見えていた砲弾（点線丸印）が、斜線丸印で示すように、上側ＬＣＤ２２の左側ではあるものの中央部付近に表示される。このように自然な拡張現実感を実現できている。なお、この図１５Ｂに示す斜線丸印の表示位置でも補正の度合いが小さくて拡張現実感を損なっていると判定される場合には、最新ビュー行列反映比率（２）（中距離用ブレンド率）をさらに小さくチューニングすることによりさらに改善される。
【０１５２】
このように補正された場合には、図１６に示すように、補正されないと大きく表示位置がぶれていた仮想オブジェクト（黒い丸印で示す砲弾）が、補正されてマーカの検出誤差がない場合の表示位置（点線丸印で示す砲弾）の位置に近づいて表示される。これにより、自然な拡張現実感を実現することができる。
【０１５３】
以上のように、本実施形態に係るゲーム装置１０によると、外側撮像部２３で撮像した現実世界（現実空間）に、仮想オブジェクトをその表示位置を補正して表示することができる。この場合において、仮想オブジェクトとマーカとの距離に応じて補正の度合いを変更しているので、自然な拡張現実感を実現することができる。また、移動しない仮想オブジェクト（固定オブジェクト）については、その表示位置を補正して表示するようにしないようにして、ユーザに違和感を与えないようにしている。その反面、移動オブジェクトについては、補正した結果により伴う仮想オブジェクト見え方についての変化をユーザが感じにくいため、仮想オブジェクトの表示位置を補正して、自然な拡張現実感を実現している。すなわち、仮想オブジェクトが移動又は浮遊する場合には、仮想オブジェクトの表示位置を補正しても（即座に最新ビュー行列を反映させないで保持ビュー行列を反映させても）、ユーザに違和感を与えないため、移動オブジェクトの表示位置を大きく補正して、自然な拡張現実感を実現することができる。
【０１５４】
＜第２の実施形態＞
以下、本発明の第２の実施形態について説明する。上述した第１の実施形態においては、最新ビュー行列と保持ビュー行列とのブレンド具合を変化させることにより補正の度合いを変化させた補正ビュー行列を算出していた。本実施形態に係るゲーム装置１０の情報処理部３１により実行されるビュー行列算出処理においては、最新ビュー行列に基づいて算出された最新の仮想カメラの位置及び姿勢（誤差を含む）と保持された仮想カメラの位置及び姿勢とをブレンドした補正用の仮想カメラの位置及び姿勢を算出して、それから補正ビュー行列を算出する処理を実行する。さらに、この場合において、保持された仮想カメラの位置及び姿勢から、仮想カメラの最新の位置及び姿勢まで、どの程度まで近づけるのかを規制している。このように処理することにより、保持された仮想カメラの位置及び姿勢から急激に変化することを回避して、補正の精度を向上させている。
【０１５５】
本実施形態に係る情報処理装置であるゲーム装置１０は、第１の実施形態に係るゲーム装置１０とハードウェア構成以外の一部が異なるのみであって、以下においては異なる部分のみを説明する。具体的には、画像表示用データ及びビュー行列算出処理が異なる。それ以外は第１の実施形態と同じであるためここではそれらの説明を繰り返さない。
【０１５６】
図１７に、メインメモリ３２のデータ記憶領域７０に記憶される画像表示用データ７８０を示す。この図１７は、第１の実施形態の図９に対応する。これらの図において異なるのは、第１の実施形態において記憶していた左仮想カメラ保持ビュー行列に代えて左仮想カメラ保持データ（位置及び姿勢）を記憶する点、左仮想カメラ最新ビュー行列に代えて左仮想カメラ最新データ（位置及び姿勢）を記憶する点、異なる変数を記憶する点である。
【０１５７】
各種変数として、保持された仮想カメラの位置から仮想カメラの最新の位置まで近づける変化許容値である仮想カメラ位置変化許容値、及び保持された仮想カメラの姿勢から仮想カメラの最新の姿勢まで近づける変化許容値である仮想カメラ姿勢変化許容値を記憶する。
【０１５８】
図１８を参照して、サブルーチンであるビュー行列算出処理について説明する。なお、メインルーチン及びもう１つのサブルーチンである仮想オブジェクト処理については第１の実施形態と同じである。さらに、図１８は、第１の実施形態の図１１に対応し、図１８の処理の中で図１１と同じ処理については同じステップ番号を付してある。それらの処理の内容は同じであるので、ここでの詳細な説明は繰り返さない。
【０１５９】
ステップＳ２２０にて、情報処理部３１は、左仮想カメラの最新のビュー行列から、左仮想カメラの最新データ（位置及び姿勢）を算出する。ステップＳ２２２にて、情報処理部３１は、メインメモリ３２のデータ記憶領域７０の画像表示用データ７８０に記憶された左仮想カメラの保持データ（位置及び姿勢）を読出す。この左仮想カメラの保持データは、１サイクル前に算出された左仮想カメラ最新ビュー行列に基づいて算出された左仮想カメラの位置及び姿勢についてのデータである。
【０１６０】
ステップＳ２２４にて、情報処理部３１は、左仮想カメラの最新データと保持データとから、変化許容値（位置、姿勢）を上回らない範囲で、補正度合いの大きい、左仮想カメラ位置（１）及び左仮想カメラ姿勢（１）をそれぞれ算出する。このとき、補正度合いの大きいとは、ビュー行列の概念を用いて説明すると、例えば、補正ビュー行列＝保持ビュー行列＋(最新ビュー行列−保持ビュー行列)×３０％であって、差分の３０％分しか近づけない補正を示す。
【０１６１】
ステップＳ２２６にて、情報処理部３１は、左仮想カメラ位置（１）及び左仮想カメラ姿勢（１）に基づいて、左仮想カメラの補正ビュー行列（１）（遠距離用）を算出する。なお、算出された左仮想カメラの補正ビュー行列（１）（遠距離用）は、メインメモリ３２のデータ記憶領域７０に記憶された画像表示用データ７８０として記憶される。
【０１６２】
ステップＳ２２８にて、情報処理部３１は、左仮想カメラの最新データと保持データとから、変化許容値（位置、姿勢）を上回らない範囲で、補正度合いの小さい、左仮想カメラ位置（２）及び左仮想カメラ姿勢（２）をそれぞれ算出する。このとき、補正度合いの小さいとは、ビュー行列の概念を用いて説明すると、例えば、補正ビュー行列＝保持ビュー行列＋(最新ビュー行列−保持ビュー行列)×７０％であって、差分の７０％分を近づける補正を示す。
【０１６３】
ステップＳ２３０にて、情報処理部３１は、左仮想カメラ位置（２）及び左仮想カメラ姿勢（２）に基づいて、左仮想カメラの補正ビュー行列（２）（中距離用）を算出する。なお、算出された左仮想カメラの補正ビュー行列（２）（中距離用）は、メインメモリ３２のデータ記憶領域７０に記憶された画像表示用データ７８０として記憶される。
【０１６４】
ステップＳ２３２にて、情報処理部３１は、左仮想カメラの補正ビュー行列（３）（近距離用）を、左仮想カメラの最新の補正ビュー行列に決定する。すなわち、この左仮想カメラの補正ビュー行列（３）は補正されていない。なお、補正の度合い（マーカと仮想オブジェクトとの距離の区分でもある）は３つに限定されないことは、第１の実施形態と同じである。
【０１６５】
以上のような構造及びフローチャートに基づく、本実施形態に係るゲーム装置１０の動作について説明する。なお、上側ＬＣＤ２２における表示例（第１の実施形態における図１３〜図１６）は、本実施形態に係るゲーム装置１０においても同じである。
【０１６６】
ユーザが、外側撮像部２３を選択して、立体表示モードを選択して、上述したプログラムが実行されるように設定する。ユーザが、例えば机の上に置いたマーカを含めた範囲を外側撮像部２３で撮影することにより、左右実世界画像が取得される（ステップＳ１００）。マーカが検出されて（ステップＳ２０２）、マーカの検出結果に基づいて、左仮想カメラの最新ビュー行列が決定され（ステップＳ２０４）、左仮想カメラの最新ビュー行列から、左仮想カメラの最新データ（位置及び姿勢）が算出される（ステップＳ２２０）。さらに、左仮想カメラの保持データ（位置及び姿勢）が読出される（ステップＳ２２２）。これにより、左仮想カメラについて、最新の位置及び姿勢と、１サイクル前の位置及び姿勢とが決定される。
【０１６７】
変化許容値を上回らない範囲で（仮想カメラの位置及び姿勢が大きく変化することを回避して）、補正度合いの大きい、左仮想カメラ位置（１）及び左仮想カメラ姿勢（１）がそれぞれ算出される（ステップＳ２２４）。
【０１６８】
算出された左仮想カメラ位置（１）及び左仮想カメラ姿勢（１）に基づいて、左仮想カメラの補正ビュー行列（１）（遠距離用）が算出されて記憶される（ステップＳ２２６）。
【０１６９】
次に、変化許容値を上回らない範囲で、補正度合いの小さい、左仮想カメラ位置（２）及び左仮想カメラ姿勢（２）がそれぞれ算出される（ステップＳ２２８）。
【０１７０】
算出された左仮想カメラ位置（２）及び左仮想カメラ姿勢（２）に基づいて、左仮想カメラの補正ビュー行列（２）（中距離用）が算出されて記憶される（ステップＳ２３０）。
【０１７１】
さらに、左仮想カメラの補正ビュー行列（３）（近距離用）が、左仮想カメラの最新の補正ビュー行列に決定される（ステップＳ２３２）。このため、左仮想カメラの補正ビュー行列（３）（近距離用）は、仮想オブジェクトの表示位置を補正しないビュー行列である。
【０１７２】
さらに、算出された左仮想カメラの補正ビュー行列（１）〜（３）を平行移動させた右仮想カメラの補正ビュー行列（１）〜（３）が算出されて、画像表示用データ７８として記憶される（ステップＳ２１４）。
【０１７３】
このようなビュー行列算出処理（ステップＳ２０２、Ｓ２０４、Ｓ２２０〜Ｓ２３２、Ｓ２１４）により、マーカとの距離が遠い仮想オブジェクトに適用される左仮想カメラ補正ビュー行列（１）及び右仮想カメラ補正ビュー行列（１）、マーカとの距離が中程度の仮想オブジェクトに適用される左仮想カメラ補正ビュー行列（２）及び右仮想カメラ補正ビュー行列（２）、マーカとの距離が近い仮想オブジェクトに適用される左仮想カメラ補正ビュー行列（３）及び右仮想カメラ補正ビュー行列（３）が準備される。その後の動作は、第１の実施形態と同じである。
【０１７４】
以上のように、本実施形態に係るゲーム装置１０によっても、第１の実施形態に係るゲーム装置と同様に、仮想オブジェクトをその表示位置を補正して表示することにより、自然な拡張現実感を実現することができる。さらに、変化許容値を設けているので、マーカ検出結果に大きく誤差を含む場合であっても、仮想オブジェクトの表示位置のぶれ量を一定範囲内に抑えることができる。
【０１７５】
（変形例）
上述したいずれの実施形態においても、仮想カメラの位置及び姿勢（仮想カメラのビュー行列）を用いて仮想オブジェクトの表示位置を補正している。しかしながら、本発明はこのような補正に限定されない。例えば、仮想オブジェクト毎に、マーカ座標系原点からの距離に応じて、最新の仮想カメラ位置から見た仮想オブジェクトの位置と前回の仮想カメラ位置から見た仮想オブジェクトの位置とに基づいて、仮想オブジェクトの位置（仮想カメラに対する相対位置）を補正することによって仮想オブジェクトの表示位置のぶれ（誤差）を補正するようにしてもよい。
【０１７６】
さらに、仮想オブジェクトと仮想カメラとの距離に応じて補正度合いを変更するようにしても構わない。透視投影の場合、仮想カメラに近い仮想オブジェクトほど大きく表示され、画面上におけるぶれ量が大きくなるので、仮想カメラに近い仮想オブジェクトほど補正度合いを大きくすることが考えられる。
【０１７７】
また、上述した第１の実施形態においては、保持ビュー行列は、１サイクル前のマーカ検出処理で算出されたビュー行列（１サイクル前の最新ビュー行列）であるとして説明した。しかしながら、本発明はこのような保持ビュー行列に限定されない。例えば、１サイクル前に仮想オブジェクトを描画したときに使用したビュー行列（１サイクル前の補正ビュー行列）であっても構わない。この場合、距離区分を３区分とした場合には、保持ビュー行列は、近距離用、中距離用及び遠距離用の３つのビュー行列を保持することになる。この場合、最新のビュー行列と、１サイクル前の補正ビュー行列とに基づいて、今回使用するビュー行列が生成される。すなわち、今回設定された仮想カメラの位置及び姿勢（最新のビュー行列）と、前回仮想空間内の仮想オブジェクトのオブジェクト画像が生成されたときに用いられた仮想カメラの位置及び姿勢（１サイクル前の補正ビュー行列）とに基づいて、新たな仮想カメラの位置及び姿勢（今回使用するビュー行列）が決定される。
【０１７８】
また、本実施形態に係るゲーム装置１０が所定のゲームを実行するようにしても構わない。例えば、所定のゲームプログラムがデータ保存用内部メモリ３５や外部メモリ４４に記憶され、ゲーム装置１０が当該プログラムを実行することによりゲームが行われる。これにより、自然な拡張現実感を実現したシューティングゲームを上側ＬＣＤ２２に表示することができる。
【０１７９】
また、本発明は、本実施形態に係るゲーム装置に限らず、任意の携帯型電子機器（例えば、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）又は携帯電話）、パーソナルコンピュータ、カメラ等に適用することが可能である。
【０１８０】
また、本実施形態に係るゲーム装置１０の情報処理部３１が所定のプログラムを実行することによって、上述したフローチャートによる仮想オブジェクト表示処理が行われた。これに限定されず、仮想オブジェクト表示処理の一部又は全部は、ゲーム装置１０が備える専用回路によって行われてもよい。
【０１８１】
また、上述した処理を１台のゲーム装置（情報処理装置）だけで処理するのではなく、互いに通信可能に接続された複数の情報処理装置で分担して処理するようにしても構わない。
【０１８２】
また、本実施形態においては、ブレンド率を０．３、０．７および１．０の３区分に対応した補正ビュー行列を用いたが、本発明は、これに限定されない。マーカと仮想オブジェクトとの距離に応じた補正ビュー行列をその都度算出して、算出した補正ビュー行列を用いて仮想オブジェクトを描画することに利用してもよい。この場合、近距離の時点から徐々に補正度合いを大きくしていくような態様が含まれる。
【０１８３】
また、本実施形態においては、移動オブジェクトである場合に、近距離であれば補正しないが、本発明は、これに限定されない。例えば、不規則な動きを行う移動オブジェクトであれば、補正を行ってもユーザに違和感を与えないので、近距離であっても補正するようにしてもよい。これは、規則的に動く移動オブジェクトであれば、カメラの動きに追従しないことによりユーザに対して違和感を与えてしまうことに対して、不規則に動く移動オブジェクトではこのような違和感をユーザに与えないためである。
【０１８４】
また、本実施形態においては、外側撮像部２３により撮像したカメラ画像と仮想オブジェクトとを重ね合わせて上側ＬＣＤ２２に表示させるビデオシースルー方式を説明したが、本発明はこれに限定されない。例えば、光学シースルー方式を実現する構成であってもよい。この場合には、少なくともカメラを備えたヘッドマウンドディスプレイで構成され、ユーザはメガネのレンズ部分に相当するディスプレイ部を通して現実空間を視認できるようになっている。このディプレイ部は、現実空間を透過してユーザの目に直接導くことが可能な素材によって構成されている。さらに、このディスプレイ部にはコンピュータにより生成した仮想オブジェクトの画像を表示させることができるようになっている。これにより、ユーザは、現実空間と仮想オブジェクトの画像とが重ね合わせられた像を視認することができる。なお、ヘッドマウンドディスプレイに備えられたカメラは現実空間に配置されたマーカを検出するために用いられる。
【符号の説明】
【０１８５】
１０  ゲーム装置
１１  下側ハウジング
１２  下側ＬＣＤ
１３  タッチパネル
１４  操作ボタン
１５  アナログスティック
１６  ＬＥＤ
２１  上側ハウジング
２２  上側ＬＣＤ
２３  外側撮像部
２３ａ  外側撮像部（左）
２３ｂ  外側撮像部（右）
２４  内側撮像部
２５  ３Ｄ調整スイッチ
２６  ３Ｄインジケータ
２８  タッチペン
３１  情報処理部
３１１  ＣＰＵ
３１２  ＧＰＵ
３２  メインメモリ
【図１】
0005149939.tif 000002
【図２】
0005149939.tif 000003
【図３】
0005149939.tif 000004
【図４】
0005149939.tif 000005
【図５】
0005149939.tif 000006
【図６Ａ】
0005149939.tif 000007
【図６Ｂ】
0005149939.tif 000008
【図６Ｃ】
0005149939.tif 000009
【図７】
0005149939.tif 000010
【図８】
0005149939.tif 000011
【図９】
0005149939.tif 000012
【図１０】
0005149939.tif 000013
【図１１】
0005149939.tif 000014
【図１２】
0005149939.tif 000015
【図１３】
0005149939.tif 000016
【図１４】
0005149939.tif 000017
【図１５Ａ】
0005149939.tif 000018
【図１５Ｂ】
0005149939.tif 000019
【図１６】
0005149939.tif 000020
【図１７】
0005149939.tif 000021
【図１８】
0005149939.tif 000022