(57)【特許請求の範囲】
【請求項１】
表示手段を備える携帯型の表示装置のコンピュータにおいて実行される画像生成プログラムであって、
ユーザによるオブジェクト移動操作を受付け、当該操作に基づいて仮想空間内のオブジェクトを移動させるオブジェクト移動手段、
前記オブジェクト移動手段によって移動されたオブジェクトの仮想空間内での位置と姿勢と進行方向との少なくとも一つに基づいて、前記仮想空間内に仮想カメラを設定する仮想カメラ設定手段、
ユーザによる有効化操作を受付け、当該有効化操作に応じて、表示装置の姿勢に応じた仮想カメラの姿勢制御である第１カメラ制御を有効化する有効化手段、
前記第１カメラ制御が有効化されている場合は、前記仮想カメラ設定手段によって設定された仮想カメラの姿勢を、前記表示装置の姿勢に応じて変化させて、当該姿勢を変化させた仮想カメラによって前記仮想空間を撮像し、前記第１カメラ制御が有効化されていない場合は、前記仮想カメラ設定手段によって設定された仮想カメラを用いて前記仮想空間を撮像して、前記表示手段に表示する画像を生成する画像生成手段、として前記コンピュータを機能させ、
前記画像生成手段は、前記第１カメラ制御が有効化された状態から当該第１カメラ制御の有効化が解除された場合に、当該解除された時の前記表示装置の姿勢に関わらず、前記仮想カメラ設定手段によって設定された仮想カメラの姿勢を用いる、画像生成プログラム。
【請求項２】
前記画像生成手段は、
前記第１カメラ制御が有効化されている場合に、前記第1カメラ制御が有効化された時の表示装置の姿勢を基準姿勢として、当該基準姿勢からの装置の姿勢の変化量に基づいて、前記仮想カメラの姿勢を変化させる、請求項１に記載の画像生成プログラム。
【請求項３】
前記仮想カメラ設定手段は、
前記オブジェクトが撮像範囲に含まれるように仮想カメラを設定する、請求項１に記載の画像生成プログラム。
【請求項４】
表示手段を備える携帯型の画像生成装置であって、
ユーザによるオブジェクト移動操作を受付け、当該操作に基づいて仮想空間内のオブジェクトを移動させるオブジェクト移動手段、
前記オブジェクト移動手段によって移動されたオブジェクトの仮想空間内での位置と姿勢と進行方向との少なくとも一つに基づいて、前記仮想空間内に仮想カメラを設定する仮想カメラ設定手段、
ユーザによる有効化操作を受付け、当該有効化操作に応じて、表示手段の姿勢に応じた仮想カメラの姿勢制御である第１カメラ制御を有効化する有効化手段、および
前記第１カメラ制御が有効化されている場合は、前記仮想カメラ設定手段によって設定された仮想カメラの姿勢を、前記表示手段の姿勢に応じて変化させて、当該姿勢を変化させた仮想カメラによって前記仮想空間を撮像し、前記第１カメラ制御が有効化されていない場合は、前記仮想カメラ設定手段によって設定された仮想カメラを用いて前記仮想空間を撮像して、前記表示手段に表示する画像を生成する画像生成手段、を備え、
前記画像生成手段は、前記第１カメラ制御が有効化された状態から当該第１カメラ制御の有効化が解除された場合に、当該解除された時の前記表示装置の姿勢に関わらず、前記仮想カメラ設定手段によって設定された仮想カメラの姿勢を用いる、画像生成装置。
【請求項５】
表示手段を備える携帯型の画像生成装置において実行される画像生成方法であって、
ユーザによるオブジェクト移動操作を受付け、当該操作に基づいて仮想空間内のオブジェクトを移動させるオブジェクト移動ステップ、
前記オブジェクト移動ステップで移動されたオブジェクトの仮想空間内での位置と姿勢と進行方向との少なくとも一つに基づいて、前記仮想空間内に仮想カメラを設定する仮想カメラ設定ステップ、
ユーザによる有効化操作を受付け、当該有効化操作に応じて、表示手段の姿勢に応じた仮想カメラの姿勢制御である第１カメラ制御を有効化する有効化ステップ、および
前記第１カメラ制御が有効化されている場合は、前記仮想カメラ設定ステップによって設定された仮想カメラの姿勢を、前記表示手段の姿勢に応じて変化させて、当該姿勢を変化させた仮想カメラによって前記仮想空間を撮像し、前記第１カメラ制御が有効化されていない場合は、前記仮想カメラ設定手段によって設定された仮想カメラを用いて前記仮想空間を撮像して、前記表示手段に表示する画像を生成する画像生成ステップ、を備え、
前記画像生成ステップにおいては、前記第１カメラ制御が有効化された状態から当該第１カメラ制御の有効化が解除された場合に、当該解除された時の前記表示装置の姿勢に関わらず、前記仮想カメラ設定ステップによって設定された仮想カメラの姿勢が用いられる、画像生成方法。
【請求項６】
表示手段を備える携帯型の表示装置を含む画像生成システムであって、
ユーザによるオブジェクト移動操作を受付け、当該操作に基づいて仮想空間内のオブジェクトを移動させるオブジェクト移動手段、
前記オブジェクト移動手段によって移動されたオブジェクトの仮想空間内での位置と姿勢と進行方向との少なくとも一つに基づいて、前記仮想空間内に仮想カメラを設定する仮想カメラ設定手段、
ユーザによる有効化操作を受付け、当該有効化操作に応じて、表示装置の姿勢に応じた仮想カメラの姿勢制御である第１カメラ制御を有効化する有効化手段、および
前記第１カメラ制御が有効化されている場合は、前記仮想カメラ設定手段によって設定された仮想カメラの姿勢を、前記表示装置の姿勢に応じて変化させて、当該姿勢を変化させた仮想カメラによって前記仮想空間を撮像し、前記第１カメラ制御が有効化されていない場合は、前記仮想カメラ設定手段によって設定された仮想カメラを用いて前記仮想空間を撮像して、前記表示手段に表示する画像を生成する画像生成手段、を備え、
前記画像生成手段は、前記第１カメラ制御が有効化された状態から当該第１カメラ制御の有効化が解除された場合に、当該解除された時の前記表示装置の姿勢に関わらず、前記仮想カメラ設定手段によって設定された仮想カメラの姿勢を用いる、画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像生成プログラム、画像生成方法、画像生成装置、及び画像生成システムに関する。
【背景技術】
【０００２】
従来の携帯型のゲーム装置の中には、ジャイロセンサが設けられているものがある（例えば、特許文献１参照）。上記特許文献１に記載された携帯型のゲーム装置では、当該ゲーム装置をユーザが動かしたときの回転角度を、ジャイロセンサを用いて検知する。そして、検知した回転角度に応じて移動させた仮想空間内の仮想カメラを用いて、仮想空間内の仮想オブジェクトなどを撮像した画像を生成する。これにより、上記特許文献１では、携帯型のゲーム装置を動かすことによって仮想カメラの位置を動かして、異なる視点から見た仮想オブジェクトを表示できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２９８１６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記特許文献１には、単に、ジャイロセンサを用いて仮想カメラを制御することが開示されている。
【０００５】
本発明は、操作性を向上できる画像生成プログラム、画像生成方法、画像生成装置及び画像生成システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【０００７】
本発明の画像生成プログラムは、表示手段を備える表示装置のコンピュータにおいて実行される画像生成プログラムである。上記画像生成プログラムは、上記コンピュータを、オブジェクト移動手段、仮想カメラ設定手段、有効化手段、画像生成手段として機能させる。オブジェクト移動手段は、ユーザによるオブジェクト移動操作を受付け、当該操作に基づいて仮想空間内のオブジェクトを移動させる。仮想カメラ設定手段は、上記オブジェクト移動手段によって移動されたオブジェクトの仮想空間内での位置と姿勢と進行方向との少なくとも一つに基づいて、前記仮想空間内に仮想カメラを設定する。有効化手段は、ユーザによる所定の有効化操作を受付け、表示部の姿勢に応じた仮想ステレオカメラの姿勢制御である第１カメラ制御を有効化する。画像生成手段は、上記第１カメラ制御が有効化されている場合は、上記仮想カメラ設定手段によって設定された仮想カメラの姿勢を、表示装置の姿勢に応じて変化させて、当該姿勢を変化させた仮想カメラによって仮想空間を撮像し、上記第１カメラ制御が有効化されていない場合は、上記仮想カメラ設定手段によって設定された仮想カメラを用いて仮想空間を撮像して、表示手段に表示する画像を生成する。
【０００８】
上記構成例によれば、オブジェクトの位置と姿勢と進行方向との少なくとも一つに基づいて仮想カメラの設定が決まるので、ユーザ操作に応じてオブジェクトを移動させつつ、仮想カメラのを適切な位置に設定することができ、さらに、ユーザが所定の有効化操作をすることによって装置の姿勢に応じて仮想カメラを動かすことができるようになるため、例えば仮想空間内で周りを見回しつつオブジェクトを移動させることもでき、多様な操作が可能となる。
【０００９】
他の構成例として、上記画像生成プログラムは、上記画像生成手段を、第１カメラ制御が有効化されている場合に、上記第1カメラ制御が有効化された時の表示装置の姿勢を基準姿勢として、当該基準姿勢からの装置の姿勢の変化量に基づいて、前記仮想カメラの姿勢を変化させるように機能させてもよい。
【００１０】
上記構成例によれば、ユーザによる有効化操作があったときの位置を基準姿勢として、そこからの変化量で仮想カメラ制御するため、ユーザが姿勢を変化した後で有効化操作をしたような場合に、急激に仮想カメラが動いてしまうようなことがない。
【００１１】
他の構成例として、上記画像生成プログラムは、前記画像生成手段を、第１カメラ制御が有効化された状態から当該第１カメラ制御の有効化が解除された場合に、当該解除された時の前記表示装置の姿勢に関わらず、前記仮想カメラ設定手段によって設定された仮想カメラの姿勢を変化させずそのまま用いるように機能させてもよい。
【００１２】
また他の構成例として、上記画像生成プログラムは、上記仮想カメラ設定手段を、上記オブジェクトが撮像範囲に含まれるように仮想カメラを設定するように機能させてもよい。
【００１３】
上記構成例によれば、第１カメラ制御の有効化が解除された場合には、仮想カメラ設定手段によって設定された仮想カメラによる撮像画像が表示手段に表示されるので、仮想カメラの姿勢を大きく変化させてしまって元の状態に戻したいような場合に、有効化操作を解除すればよく、容易な操作で通常の状態に戻すことができる。さらに仮想カメラ設定手段が、上記オブジェクトが撮像範囲に含まれるように仮想カメラを設定している場合、第１カメラ制御の有効化を解除すれば、オブジェクトが表示手段に表示されている状態にすることができる。
【発明の効果】
【００１４】
本発明によれば、操作性を向上できる画像生成プログラム、画像生成方法、画像生成装置及び画像生成システムを提供できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係るゲーム装置の外部構成の一例を示す図
【図２】本発明の実施形態に係るゲーム装置の内部構成の一例を示す図
【図３】本発明の実施形態におけるゲーム装置の使用例とその際の表示画面および仮想空間の一例を示す図
【図４】本発明の実施形態におけるゲーム装置の使用例とその際の表示画面および仮想空間の一例を示す図
【図５】本発明の実施形態におけるゲーム装置の使用例とその際の表示画面および仮想空間の一例を示す図
【図６】本発明の実施形態におけるメモリマップの一例を示す図
【図７】本発明の実施形態に係るゲーム装置のＣＰＵが情報処理プログラムを実行することによって行われる表示制御処理のフローチャートの一例を示す図
【図８】本発明の実施形態に係るゲーム装置のＣＰＵが情報処理プログラムを実行することによって行われる表示制御処理のフローチャートの一例を示す図
【図９】本発明の実施形態に係る仮想ステレオカメラの配置方法の一例を示す図
【発明を実施するための形態】
【００１６】
［ゲーム装置の外観構成］
以下、本発明の実施形態の一例（第１の実施形態）に係るゲーム装置について説明する。図１は、ゲーム装置１０の外観を示す平面図である。ゲーム装置１０は携帯型のゲーム装置であり、折り畳み可能に構成されている。図１は、開いた状態（開状態）におけるゲーム装置１０の正面図を示している。ゲーム装置１０は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置１０は、交換可能なメモリカード内に記憶され、または、サーバや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【００１７】
まず、図１を参照して、ゲーム装置１０の外観構成について説明する。図１に示されるように、ゲーム装置１０は、下側ハウジング１１及び上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に接続されている。
【００１８】
（下側ハウジングの説明）
まず、下側ハウジング１１の構成について説明する。図１に示すように、下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２、タッチパネル１３、各操作ボタン１４Ａ〜１４Ｉ、アナログスティック１５、ＬＥＤ１６Ａ〜１６Ｂ、挿入口１７、及び、マイクロフォン用孔１８が設けられる。以下、これらの詳細について説明する。
【００１９】
図１に示すように、下側ＬＣＤ１２は下側ハウジング１１に収納される。下側ＬＣＤ１２の画素数は、例えば、３２０ｄｏｔ×２４０ｄｏｔ（横×縦）であってもよい。下側ＬＣＤ１２は、後述する上側ＬＣＤ２２とは異なり、画像を（立体視可能ではなく）平面的に表示する表示装置である。なお、本実施形態では表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側ＬＣＤ１２として、任意の解像度の表示装置を利用することができる。
【００２０】
図１に示されるように、ゲーム装置１０は、入力装置として、タッチパネル１３を備えている。タッチパネル１３は、下側ＬＣＤ１２の画面上に装着されている。なお、本実施形態では、タッチパネル１３は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル１３として、下側ＬＣＤ１２の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１３の解像度と下側ＬＣＤ１２の解像度が一致している必要はない。また、下側ハウジング１１の上側面には挿入口１７（図１に示す点線）が設けられている。挿入口１７は、タッチパネル１３に対する操作を行うために用いられるタッチペン２８を収納することができる。なお、タッチパネル１３に対する入力は通常タッチペン２８を用いて行われるが、タッチペン２８に限らずユーザの指でタッチパネル１３に対する入力をすることも可能である。
【００２１】
各操作ボタン１４Ａ〜１４Ｉは、所定の入力を行うための入力装置である。図１に示されるように、下側ハウジング１１の内側面（主面）には、十字ボタン１４Ａ（方向入力ボタン１４Ａ）、ボタン１４Ｂ、ボタン１４Ｃ、ボタン１４Ｄ、ボタン１４Ｅ、電源ボタン１４Ｆ、セレクトボタン１４Ｇ、ＨＯＭＥボタン１４Ｈ、及びスタートボタン１４Ｉが、設けられる。十字ボタン１４Ａは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン１４Ａ〜１４Ｅ、セレクトボタン１４Ｊ、ＨＯＭＥボタン１４Ｋ、及びスタートボタン１４Ｌには、ゲーム装置１０が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン１４Ａは選択操作等に用いられ、各操作ボタン１４Ｂ〜１４Ｅは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン１４Ｆは、ゲーム装置１０の電源をオン／オフするために用いられる。
【００２２】
アナログスティック１５は、方向を指示するデバイスである。アナログスティック１５は、そのキートップが、下側ハウジング１１の内側面に平行にスライドするように構成されている。アナログスティック１５は、ゲーム装置１０が実行するプログラムに応じて機能する。例えば、３次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置１０によって実行される場合、アナログスティック１５は、当該所定のオブジェクトを３次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティック１５のキートップがスライドした方向に移動される。なお、アナログスティック１５として、上下左右及び斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いてもよい。
【００２３】
また、下側ハウジング１１の内側面には、マイクロフォン用孔１８が設けられる。マイクロフォン用孔１８の下部には後述する音声入力装置としてのマイク（図２参照）が設けられ、当該マイクがゲーム装置１０の外部の音を検知する。
【００２４】
また、図示はしていないが、下側ハウジング１１の上側面には、Ｌボタン１４Ｊ及びＲボタン１４Ｋが設けられている。Ｌボタン１４Ｊ及びＲボタン１４Ｋは、例えば、撮像部のシャッターボタン（撮影指示ボタン）として機能することができる。また、図示はしていないが、下側ハウジング１１の左側面には、音量ボタン１４Ｌが設けられる。音量ボタン１４Ｌは、ゲーム装置１０が備えるスピーカの音量を調整するために用いられる。
【００２５】
また、図１に示されるように、下側ハウジング１１の左側面には開閉可能なカバー部１１Ｂが設けられる。このカバー部１１Ｂの内側には、ゲーム装置１０とデータ保存用外部メモリ４５とを電気的に接続するためのコネクタ（図示せず）が設けられる。データ保存用外部メモリ４５は、コネクタに着脱自在に装着される。データ保存用外部メモリ４５は、例えば、ゲーム装置１０によって撮像された画像のデータを記憶（保存）するために用いられる。
【００２６】
また、図１に示されるように、下側ハウジング１１の上側面には、ゲーム装置１０とゲームプログラムを記録した外部メモリ４４を挿入するための挿入口１１Ｃが設けられ、その挿入口１１Ｃの内部には、外部メモリ４４と電気的に着脱自在に接続するためのコネクタ（図示せず）が設けられる。当該外部メモリ４４がゲーム装置１０に接続されることにより、所定のゲームプログラムが実行される。
【００２７】
また、図１に示されるように、下側ハウジング１１の下側面にはゲーム装置１０の電源のＯＮ／ＯＦＦ状況をユーザに通知する第１ＬＥＤ１６Ａが設けられる。さらに、図示はしていないが、下側ハウジング１１の右側面にはゲーム装置１０の無線通信の確立状況をユーザに通知する第２ＬＥＤ１６Ｂが設けられる。ゲーム装置１０は他の機器との間で無線通信を行うことが可能であり、第２ＬＥＤ１６Ｂは、無線通信が確立している場合に点灯する。ゲーム装置１０は、例えば、ＩＥＥＥ８０２．１１ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。下側ハウジング１１の右側面には、この無線通信の機能を有効／無効にする無線スイッチ１９が設けられる（図示せず）。
【００２８】
なお、図示は省略するが、下側ハウジング１１には、ゲーム装置１０の電源となる充電式電池が収納され、下側ハウジング１１の側面（例えば、上側面）に設けられた端子を介して当該電池を充電することができる。
【００２９】
（上側ハウジングの説明）
次に、上側ハウジング２１の構成について説明する。図１に示すように、上側ハウジング２１には、上側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）２２、外側撮像部２３（外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂ）、内側撮像部２４、３Ｄ調整スイッチ２５、及び、３Ｄインジケータ２６が設けられる。以下、これらの詳細について説明する。
【００３０】
図１に示すように、上側ＬＣＤ２２は上側ハウジング２１に収納される。上側ＬＣＤ２２の画素数は、例えば、８００ｄｏｔ×２４０ｄｏｔ（横×縦）であってもよい。なお、本実施形態では上側ＬＣＤ２２は液晶表示装置であるとしたが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置などが利用されてもよい。また、上側ＬＣＤ２２として、任意の解像度の表示装置を利用することができる。
【００３１】
上側ＬＣＤ２２は、立体視可能な画像を表示することが可能な表示装置である。また、本実施形態では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で（例えば、１列ずつ）横方向に交互に表示される方式の表示装置である。または、左目用画像と右目用画像とが時分割で交互に表示される方式の表示装置であってもよい。また、本実施形態では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目及び右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式（視差バリア方式）のものが用いられる。本実施形態では、上側ＬＣＤ２２はパララックスバリア方式のものとする。上側ＬＣＤ２２は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像（以下、立体視画像と称する）を表示する。すなわち、上側ＬＣＤ２２は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体視画像を表示することができる。また、上側ＬＣＤ２２は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる（上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである）。このように、上側ＬＣＤ２２は、立体視可能な立体視画像を表示する立体視表示（立体表示モード）と、画像を平面的に表示する（平面視画像を表示する）平面視表示（平面表示モード）とを切り替えることが可能な表示装置である。この表示の切り替えは、ＣＰＵ３１１の処理、又は後述する３Ｄ調整スイッチ２５によって行われる。
【００３２】
外側撮像部２３は、上側ハウジング２１の外側面（上側ＬＣＤ２２が設けられた主面と反対側の背面）２１Ｄに設けられた２つの撮像部（２３ａ及び２３ｂ）の総称である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂの撮像方向は、いずれも当該外側面２１Ｄの外向きの法線方向である。外側撮像部（左）２３ａと外側撮像部（右）２３ｂとは、ゲーム装置１０が実行するプログラムによって、ステレオカメラとして使用することが可能である。外側撮像部（左）２３ａ及び外側撮像部（右）２３ｂは、それぞれ所定の共通の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【００３３】
内側撮像部２４は、上側ハウジング２１の内側面（主面）２１Ｂに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部２４は、所定の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【００３４】
３Ｄ調整スイッチ２５は、スライドスイッチであり、上述のように上側ＬＣＤ２２の表示モードを切り替えるために用いられるスイッチである。３Ｄ調整スイッチ２５は、上側ＬＣＤ２２に表示された立体視画像の立体感を調整するために用いられる。ただし、後述で明らかとなるように、本実施形態では一例として、３Ｄ調整スイッチ２５に関わらずに、上側ＬＣＤ２２に表示される画像を立体視画像と平面視画像との間で切り替える。
【００３５】
３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードか否かを示す。３Ｄインジケータ２６は、ＬＥＤであり、上側ＬＣＤ２２の立体表示モードが有効の場合に点灯する。なお、３Ｄインジケータ２６は、上側ＬＣＤ２２が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているときに限り、点灯するようにしてもよい。図１に示されるように、３Ｄインジケータ２６は、上側ハウジング２１の内側面に設けられ、上側ＬＣＤ２２の画面近傍に設けられる。このため、ユーザが上側ＬＣＤ２２の画面を正視した場合、ユーザは３Ｄインジケータ２６を視認しやすい。従って、ユーザは上側ＬＣＤ２２の画面を視認している状態でも、上側ＬＣＤ２２の表示モードを容易に認識することができる。
【００３６】
また、上側ハウジング２１の内側面には、スピーカ孔２１Ｅが設けられる。後述するスピーカ４３からの音声がこのスピーカ孔２１Ｅから出力される。
【００３７】
［ゲーム装置１０の内部構成］
次に、図２を参照して、ゲーム装置１０の内部の電気的構成について説明する。図２は、ゲーム装置１０の内部構成を示すブロック図である。図２に示すように、ゲーム装置１０は、上述した各部に加えて、情報処理部３１、メインメモリ３２、外部メモリインターフェイス（外部メモリＩ／Ｆ）３３、データ保存用外部メモリＩ／Ｆ３４、データ保存用内部メモリ３５、無線通信モジュール３６、ローカル通信モジュール３７、リアルタイムクロック（ＲＴＣ）３８、加速度センサ３９、電源回路４０、及びインターフェイス回路（Ｉ／Ｆ回路）４１等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング１１（または上側ハウジング２１でもよい）内に収納される。
【００３８】
情報処理部３１は、所定のプログラムを実行するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１、画像処理を行うＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１２等を含む情報処理手段である。情報処理部３１のＣＰＵ３１１は、ゲーム装置１０内のメモリ（例えば外部メモリＩ／Ｆ３３に接続された外部メモリ４４やデータ保存用内部メモリ３５）に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、情報処理部３１のＣＰＵ３１１によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部３１は、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３１３を含む。情報処理部３１のＧＰＵ３１２は、情報処理部３１のＣＰＵ３１１からの命令に応じて画像を生成し、ＶＲＡＭ３１３に描画する。そして、情報処理部３１のＧＰＵ３１２は、ＶＲＡＭ３１３に描画された画像を上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に出力し、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に当該画像が表示される。
【００３９】
情報処理部３１には、メインメモリ３２、外部メモリＩ／Ｆ３３、データ保存用外部メモリＩ／Ｆ３４、及びデータ保存用内部メモリ３５が接続される。外部メモリＩ／Ｆ３３は、外部メモリ４４を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリＩ／Ｆ３４は、データ保存用外部メモリ４５を着脱自在に接続するためのインターフェイスである。
【００４０】
メインメモリ３２は、情報処理部３１（のＣＰＵ３１１）のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ３２は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部（外部メモリ４４や他の機器等）から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ３２として例えばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。
【００４１】
外部メモリ４４は、情報処理部３１によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ４４は、例えば読み取り専用の半導体メモリで構成される。外部メモリ４４が外部メモリＩ／Ｆ３３に接続されると、情報処理部３１は外部メモリ４４に記憶されたプログラムを読み込むことができる。情報処理部３１が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ４５は、不揮発性の読み書き可能なメモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ４５には、外側撮像部２３で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ４５がデータ保存用外部メモリＩ／Ｆ３４に接続されると、情報処理部３１はデータ保存用外部メモリ４５に記憶された画像を読み込み、上側ＬＣＤ２２及び／又は下側ＬＣＤ１２に当該画像を表示することができる。
【００４２】
データ保存用内部メモリ３５は、読み書き可能な不揮発性メモリ（例えばＮＡＮＤ型フラッシュメモリ）で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ３５には、無線通信モジュール３６を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【００４３】
無線通信モジュール３６は、例えばＩＥＥＥ８０２．１１ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール３７は、所定の通信方式（例えば独自プロトコルによる通信や、赤外線通信）により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール３６及びローカル通信モジュール３７は情報処理部３１に接続される。情報処理部３１は、無線通信モジュール３６を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール３７を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００４４】
また、情報処理部３１には、ＲＴＣ３８及び電源回路４０が接続される。ＲＴＣ３８は、時間をカウントして情報処理部３１に出力する。情報処理部３１は、ＲＴＣ３８によって計時された時間に基づき現在時刻（日付）を計算する。
【００４５】
また、情報処理部３１には、加速度センサ３９が接続される。加速度センサ３９は、３軸（ｘｙｚ軸）方向に沿った直線方向の加速度（直線加速度）の大きさを検知する。加速度センサ３９は、上側ハウジング２１の内部に設けられる。加速度センサ３９は、図１に示すように、上側ＬＣＤ２２の長辺方向をｘ軸、上側ＬＣＤ２２の短辺方向をｙ軸、上側ＬＣＤ２２の表示面に対して垂直な方向をｚ軸として、各軸の直線加速度の大きさを検知する。なお、加速度センサ３９は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ３９は１軸又は２軸方向を検知する加速度センサであってもよい。情報処理部３１は、加速度センサ３９が検知した加速度を示すデータ（加速度データ）を受信して、ゲーム装置１０の姿勢や動きを検知することができる。
【００４６】
情報処理部３１には、角速度センサ４０が接続される。角速度センサ４０は、上側ＬＣＤ２２の３軸（本実施形態では、ｘｙｚ軸）周りにおける角速度をそれぞれ検知し、検知した角速度を示すデータ（角速度データ）を情報処理部３１へ出力する。角速度センサ４０は、例えば下側ハウジング１１の内部に設けられる。情報処理部３１は、角速度センサ４０から出力された角速度データを受信して、上側ＬＣＤ２２の姿勢や動きを算出する。
【００４７】
なお、上述の通り、加速度センサ３９や角速度センサ４０によって、上側ＬＣＤ２２の姿勢や動きが算出されるが、上側ＬＣＤ２２の長辺方向、短辺方向、および表示面に対して垂直な方向はそれぞれ、上側ハウジング２１の長辺方向、短辺方向、および内側面（主面）に対して垂直な方向と一致しているため、上側ＬＣＤ２２の姿勢や動きと、当該上側ＬＣＤを固定的に収納する上側ハウジング２１の姿勢や動きは一致することになる。以降で装置の姿勢や動きを取得するとして説明している部分は、上側ＬＣＤ２２の姿勢や動きを取得していることと同等となる。
【００４８】
電源回路４１は、ゲーム装置１０が有する電源（下側ハウジング１１に収納される上記充電式電池）からの電力を制御し、ゲーム装置１０の各部品に電力を供給する。
【００４９】
また、情報処理部３１には、Ｉ／Ｆ回路４２が接続される。Ｉ／Ｆ回路４２には、マイク４３、及びスピーカ４４が接続される。具体的には、Ｉ／Ｆ回路４２には、図示しないアンプを介してスピーカ４４が接続される。マイク４３は、ユーザの音声を検知して音声信号をＩ／Ｆ回路４２に出力する。アンプは、Ｉ／Ｆ回路４２からの音声信号を増幅し、音声をスピーカ４４から出力させる。また、Ｉ／Ｆ回路４２には上述したタッチパネル１３も接続される。Ｉ／Ｆ回路４２は、マイク４３及びスピーカ４４（アンプ）の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換及びＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部３１に出力する。タッチ位置データは、タッチパネル１３の入力面において入力が行われた位置の座標を示す。
【００５０】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｌからなり、情報処理部３１に接続される。操作ボタン１４から情報処理部３１へは、各操作ボタン１４Ａ〜１４Ｉに対する入力状況（押下されたか否か）を示す操作データが出力される。情報処理部３１は、操作ボタン１４から操作データを取得することによって、上記各操作ボタン１４Ａ〜１４Ｌに対する入力に従った処理を実行する。なお、ＣＰＵ３１１は、操作ボタン１４からの操作データの取得を所定時間に１回の割合で行う。
【００５１】
下側ＬＣＤ１２及び上側ＬＣＤ２２は情報処理部３１に接続される。下側ＬＣＤ１２及び上側ＬＣＤ２２は、情報処理部３１（のＧＰＵ３１２）の指示に従って画像を表示する。本実施形態では、情報処理部３１は、上側ＬＣＤ２２に立体視画像（立体視可能な画像）を表示させる。
【００５２】
具体的には、情報処理部３１は、上側ＬＣＤ２２のＬＣＤコントローラ（図示せず）と接続され、当該ＬＣＤコントローラに対して視差バリアのＯＮ／ＯＦＦを制御する。上側ＬＣＤ２２の視差バリアがＯＮになっている場合、情報処理部３１のＶＲＡＭ３１３に記憶された右目用画像と左目用画像とが、上側ＬＣＤ２２に出力される。より具体的には、ＬＣＤコントローラは、右目用画像について縦方向に１ライン分の画素データを読み出す処理と、左目用画像について縦方向に１ライン分の画素データを読み出す処理とを交互に繰り返すことによって、ＶＲＡＭ３１３から右目用画像と左目用画像とを読み出す。これにより、右目用画像及び左目用画像が、画素を縦に１ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側ＬＣＤ２２の画面に表示される。そして、上側ＬＣＤ２２の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。本実施形態では、視差バリアは常にＯＮになっているものとする。以上により、上側ＬＣＤ２２の画面には立体視可能な画像が表示される。
【００５３】
外側撮像部２３及び内側撮像部２４は、情報処理部３１に接続される。外側撮像部２３及び内側撮像部２４は、情報処理部３１の指示に従って画像を撮像し、撮像した画像データを情報処理部３１に出力する。
【００５４】
３Ｄ調整スイッチ２５は、情報処理部３１に接続される。３Ｄ調整スイッチ２５は、スライダ２５ａの位置に応じた電気信号を情報処理部３１に送信する。
【００５５】
また、３Ｄインジケータ２６は、情報処理部３１に接続される。情報処理部３１は、３Ｄインジケータ２６の点灯を制御する。例えば、情報処理部３１は、上側ＬＣＤ２２が立体表示モードである場合、３Ｄインジケータ２６を点灯させる。以上がゲーム装置１０の内部構成の説明である。
【００５６】
［情報処理の概要］
以下、実施形態の一例における情報処理の概要について図３、図４および図５を参照しながら説明する。本実施形態においては、情報処理の一例として、ゲーム処理がゲーム装置１０によって行われるものとする。
【００５７】
本実施形態のゲーム処理では、プレイヤは、ゲーム装置１０が備える「方向指示可能な操作手段」を用いて、仮想ゲーム空間に登場するプレイヤオブジェクトを当該仮想ゲーム空間内で動かすことでゲームを進行させる。より具体的には、当該操作手段の指示方向と仮想空間における方向とを対応付けて、操作手段によって方向指示があったときに、その方向に対応する仮想空間内の方向にプレイヤオブジェクトの向き（オブジェクトの前方方向）または進行方向を変更するとともに、当該方向にプレイヤオブジェクトを移動させる。なお、プレイヤオブジェクトの進行方向とプレイヤオブジェクトの向きを別に管理して、指示方向によりプレイヤオブジェクトの向きを制御するとともに、プレイヤオブジェクトの進行方向をプレイヤオブジェクトの向きに徐々に近づくように制御してもよい。なお、操作手段の指示方向と仮想空間における仮想空間内の方向の対応関係は、画面基準（仮想カメラの撮影方向基準）であってもよいし、現在のプレイヤオブジェクトの向きを基準としてもよい。例えば、アナログスティック１５を上方向に傾けるとプレイヤオブジェクトは仮想空間内を奥方向に移動し、アナログスティック１５を下方向に傾けるとプレイヤオブジェクトは仮想空間内を手前方向に移動する。また、たとえば、プレイヤオブジェクトの姿勢（向き）は、アナログスティック１５で指示した方向が前方になるように姿勢制御される。また、他の操作手段（ボタンやタッチパネル等）を操作することで、プレイヤオブジェクトに例えばジャンプ等の動作をさせることもできるが、詳細は省略する。
【００５８】
本実施形態のゲーム処理が行われる際には、仮想ゲーム空間内に仮想カメラを配置する処理が行われ、配置された仮想カメラを用いて仮想ゲーム空間を撮像することでゲーム装置の画面上に表示される画像が生成される。なお、後述するように、本実施形態では立体視画像を表示するので、右目用画像および左目用画像のそれぞれを生成する仮想ステレオカメラが配置されるが、この点については、後述する。
【００５９】
本実施形態において、仮想カメラの位置及び姿勢は、プレイヤオブジェクトの位置及び姿勢（または進行方向、以下同じ）に基づいて配置される。具体的には、仮想カメラの撮影方向は、プレイヤオブジェクトが向いている方向、または、プレイヤオブジェクトの進行方向と一致するように、または、追従するように設定され、仮想カメラの位置は、プレイヤオブジェクトの位置が画面内に含まれるように設定される。前述したように、プレイヤオブジェクトの姿勢は、ユーザの所定操作（本実施形態においては、アナログスティック１５の操作）により制御されるので、それにともなって、仮想ステレオカメラの姿勢が変更される。また、プレイヤオブジェクトの位置は、ユーザの所定操作（本実施形態においては、アナログスティック１５の操作）により変化するので、それにともなって、仮想カメラの位置が変更される。なお、仮想カメラの位置を、プレイヤオブジェクトの位置から一定距離とするなど、プレイヤオブジェクトの位置の変化に応じて変更する一方、仮想カメラの姿勢は、プレイヤオブジェクトの姿勢が変化しても変更しないようにしてもよい。  このようなプレイヤオブジェクトの位置及び姿勢に基づく仮想カメラの位置および姿勢を「通常制御における仮想カメラの位置及び姿勢」と呼ぶ。なお、「通常制御」とは後述の「装置姿勢追従制御」の有効無効に関わらずおこなわれる制御という意味である。
【００６０】
このように、仮想カメラの位置及び姿勢は、アナログスティック１５の操作に基づくプレイヤオブジェクトの位置及び姿勢によって変化する。本実施例のゲーム処理では、さらに、ゲーム装置の現実空間における姿勢を変化させることで仮想カメラの姿勢を変化させることができる。このようなゲーム装置の姿勢による仮想カメラの姿勢の制御のことを「装置姿勢追従制御」と呼ぶ。より具体的には、プレイヤがゲーム装置１０の操作手段を用いてあらかじめ定める所定の操作を行った場合に、装置姿勢追従制御が有効となる。本実施形態では、Ｒボタン１４Ｋを押す操作がこの「所定の操作」であり、Ｒボタン１４Ｋが押し続けている間は「装置姿勢追従制御」モードになり、仮想カメラを操作できる。Ｒボタン１４Ｋを離しているときは通常のモードとなり、装置の姿勢を変化させても、仮想カメラが動くことはない。なお、Ｒボタン１４Ｋを押したときに、その後ボタンを離しても、装置姿勢追従制御が継続するようにしてもかまわない。Ｒボタン１４Ｋを押し続けている間は、「通常制御における仮想カメラの位置及び姿勢」を基準として、装置姿勢追従制御による変化が加えられる。より具体的には、装置姿勢追従制御が有効になっている間、仮想カメラの姿勢は、「通常制御における仮想カメラの姿勢」を、装置姿勢追従制御による姿勢変化分だけ変化させることにより得られる。なお、装置姿勢追従制御が有効になっている間、仮想カメラの位置については、「通常制御における仮想カメラの位置」と同じにしてもよいが、全く同じである必要はなく、その付近で変位してもよい。または、プレイヤオブジェクトを撮影範囲に含むように変位してもよい。
【００６１】
図３および図４はゲーム装置１０を動かすことで仮想カメラを操作する様子を示す図である。図３には通常の状態（Ｒボタン１４Ｋを押していない状態）でのプレイの様子３０１Ａ、そのときに画面に表示される画像３０２Ａ、そのときの仮想ゲーム空間におけるオブジェクトと仮想カメラの状態３０２Ａを表している。３０２Ａに示されるように、通常の状態では、プレイヤキャラクタ３１０を真後ろから撮像するように仮想カメラ３１２Ａが配置されており、プレイヤキャラクタ３１０が左右方向の中央に来るような画像が画面上に表示されている。図４は、図３の状態でＲボタン１４Ｋを押した後、装置を左方向に回転させた時の様子３０１Ａ、そのときに画面に表示される画像３０２Ｂ、およびそのときの仮想ゲーム空間におけるオブジェクトと仮想カメラの状態３０２Ｂを表している。このときは、Ｒボタン１４Ｋが押されているため、前述の装置姿勢追従制御が有効となっており、画面上には装置姿勢追従制御が有効になっていることを示す画像３１１が表示される。装置姿勢追従制御が有効な間は、装置の姿勢に応じて仮想カメラを動かすことができる。図４では、装置姿勢追従制御が有効になった後（Ｒボタン１４Ｋを押した状態にした後）に装置を左方向に回転させたため、仮想カメラ３１２Ｂも同じように左方向に回転している。これによって、仮想カメラ３１２Ｂの撮像方向が左方向に変化し、もともと撮像していた範囲の左方向の範囲を撮像することになる。すると、画面上に当初は表示されていなかった、プレイヤキャラクタの左方向に存在していたオブジェクト３１３が表示されるようになる。
【００６２】
図４の状態からＲボタン１４Ｋを離すと、装置姿勢追従制御は無効になる。このとき、装置の姿勢を３０１Ａの状態に戻さなくても自動的に仮想カメラは３０３Ａで示す姿勢に戻り、画面の表示も３０２Ａと同様となる。すなわち、装置姿勢追従制御が無効になったときには、装置姿勢追従制御による姿勢変化分が０になり、「通常制御による仮想カメラの位置及び姿勢」と一致する。
【００６３】
なお、前述の通り、本実施形態では立体視画像を表示するので、右目用画像および左目用画像のそれぞれを生成する仮想ステレオカメラ（右仮想カメラおよび左仮想カメラ）が配置され、それぞれの仮想カメラで仮想ゲーム空間を撮像することで右目用画像および左目用画像を生成し、これらの画像を用いることで表示手段２２上に立体視表示を行う。右仮想カメラおよび左仮想カメラは、上述の方法により設定される仮想カメラ（以下、基準仮想カメラと呼ぶ）に基づいて設定される。具体的な処理は後述で説明するが、基準仮想カメラを、左右（基準仮想カメラ座標系におけるｘ軸方向の正方向および負方向）に移動したものをそれぞれ左右の仮想カメラとして用いる。
【００６４】
ここで、装置の姿勢の変化としては、ｘ軸周り（チルト方向）、ｙ軸周り（パン方向）、ｚ軸周り（ロール方向）の変化がある。図３および図４では、ｙ軸周りに装置の姿勢を変化させた場合の説明をした。詳しい説明は省略するが、装置をｘ軸周りに回転移動させた場合も、ｙ軸周りに回転移動させた場合と同様に、装置の姿勢に合わせて仮想カメラの姿勢が変化する。
【００６５】
また、ｚ軸周りに装置姿勢を変化させた場合も、装置の姿勢に合わせて仮想カメラの姿勢が変化する。図５に、装置を傾けた様子４０１およびそのときに画面に表示される画像４０２を示している。ｚ軸周りに装置姿勢を変化させたときは、仮想カメラの撮影方向自体は変化せず、仮想カメラの撮影方向を軸として、当該軸周りに回転し、４０２に示すように、装置に対して傾いたような画像が表示される。装置を４０１に示す状態にしたときは、当該画像を表示する表示手段自体がユーザに対して傾いた状態となるため、結果的に、ユーザはプレイヤブジェクト等の仮想ゲーム空間内のオブジェクトを、ゲーム装置を傾ける前と後で同じ角度で視認することになる。
【００６６】
なお、本実施形態では、角速度センサ４０によって検知された各軸周りの角速度に基づいて算出される各軸周りの角度の単位と、仮想空間における各軸周りの角度の単位とが一致するように予め定められているものとする。従って、本実施形態では、角速度センサ４０によって検知された各軸周りの角速度に基づいて算出される各軸周りの回転角度を、仮想カメラの姿勢を変化させるときの回転角度としてそのまま用いることができる。
【００６７】
本実施例では、ｘ軸周り（チルト方向）、ｙ軸周り（パン方向）について、仮想カメラの姿勢を変化させられる範囲には制限が設けられる。具体的には、仮想カメラの撮像方向がプレイヤキャラクタから大きく外れない範囲でのみ、仮想カメラの姿勢を変化させることができる。例えば、装置姿勢追従制御が有効にしたまま（Ｒボタン１４Ｋを離さないまま）、図４に示す状態から装置をさらに左方向に回転させた場合、同じように仮想カメラを左方向に回転させると、プレイヤキャラクタが仮想カメラの撮像範囲から外れてしまい、画面上に表示されなくなってしまう。そのため、図４に示す状態から装置をさらに左方向に回転させても、仮想カメラは図４の状態以上には回転せず、画面の表示も図４の状態からは変化しない。
【００６８】
一方、ｚ軸周り（ロール方向）に装置の姿勢を変化させた場合については、ｘ軸周り（チルト方向）、ｙ軸周り（パン方向）のように仮想カメラの姿勢の変化について制限はされない。ただし、ｚ軸周り（ロール方向）に装置の姿勢を変化させた場合には、以下のような問題が発生する。本実施態様において用いる裸眼立体表示手段は、右目用の画像は右目のみに、左目用の画像は左目のみに視認されるように振り分けることで立体視可能に表示するものであり、通常、ユーザと表示手段とが正対したときに（ユーザの上下方向が表示手段の上下方向と一致したときに）立体視可能ように左右画像の振り分けるように立体視表示がなされている。このままで表示手段をｚ軸周りに回転してしまうと、ユーザの上下方向と表示手段の上下方向がずれて、右目用の画像が左目でも視認されたり、左目用の画像が右眼でも視認されたりすることが発生してしまい、立体視ができなくなってしまう。こうした状態では、装置の姿勢が少し変化しただけで、右目用の画像が見えたり、左目用の画像が見えたり、両画像が一緒に見えたりする状態が頻繁に切り替わるため、右目用の画像と左目用の画像との視差が大きいと、画像として違いの大きい画像が切り替わって、ぶれたように見える表示になってしまい、見づらい表示となってしまう。
【００６９】
そのため、本実施例においては、装置の姿勢の変化に応じて仮想カメラを上側ＬＣＤ２２に垂直な軸周り（ｚ軸周り）に回転させる際には、右目用画像と左目用画像の視差が小さくなるような仮想カメラの制御を同時に行う。具体的には、ロール方向の回転角が大きくなるほど、仮想ステレオカメラの間隔（右仮想カメラと左仮想カメラの間の間隔）が小さくなるように、右仮想カメラと左仮想カメラとの位置を変更する。本実施例においては、基準仮想カメラ姿勢からロール方向に２５度傾いた時に仮想カメラの間隔がゼロになるように仮想カメラ間隔が制御される。２５度以上傾けた場合は仮想カメラ間隔はゼロのままとなり、この場合は右目用画像と左目用画像は同じものとなるため、表示手段には平面視で画像が表示される。
【００７０】
［メインメモリに記憶されるデータ］
次に、ゲーム装置１０のＣＰＵ３１１の具体的な動作について説明する前に、当該ＣＰＵ３１１がゲームプログラムを実行することに応じてメインメモリ３２に記憶されるデータについて図６を参照しながら説明する。ゲームプログラムは、ゲーム装置１０に装着可能な所定の記憶媒体、または、ゲーム装置１０内の不揮発メモリに記憶され、メインメモリに読み込まれて実行される。
【００７１】
図６に一例として示すように、メインメモリ３２には、プレイヤオブジェクト位置姿勢データ５０１、基準仮想カメラ設定データ５０２、仮想ステレオカメラ間隔データ５０３、装置回転角度データ５０４、ｘ軸周りしきい値データ５０５、ｙ軸周りしきい値データ５０６、ｚ軸周りしきい値データ５０７、基準間隔データ５０８が記憶される。プレイヤオブジェクト位置姿勢データ５０１、基準仮想カメラ設定データ５０２、仮想ステレオカメラ間隔データ５０３、装置回転角度データ５０４は、ＣＰＵ３１１が本ゲームプログラムを実行することにより生成されるデータである。ｘ軸周りしきい値データ５０５、ｙ軸周りしきい値データ５０６、ｚ軸周りしきい値データ５０７、基準間隔データ５０８は、そのデータがゲームプログラムに含まれる。
【００７２】
プレイヤオブジェクト位置姿勢データ５０１は、仮想ゲーム空間中でのプレイヤオブジェクトの位置及び姿勢を示すデータである。プレイヤオブジェクトの位置は仮想空間のワールド座標系におけるｘｙｚ軸方向についての座標で表され、姿勢はｘｙｚ各軸周りの角度で表される。
【００７３】
基準仮想カメラ設定データ５０２は、基準仮想カメラの設定を示すデータであり、基準仮想カメラの配置位置及び姿勢の情報を含むデータである。基準仮想カメラの位置は仮想空間のワールド座標系におけるｘｙｚ軸方向についての座標で表され、姿勢はｘｙｚ各軸周りの角度で表される。また、当該基準仮想カメラ設定データ５０２には、基準仮想カメラの画角やニアクリップ面、ファークリップ面等の情報も含まれる。
【００７４】
仮想ステレオカメラ間隔データ５０３は、右仮想カメラと左仮想カメラとの間の距離を示すデータである。基準間隔データ５０８は、右仮想カメラと左仮想カメラとの間の距離の基準となる値を示すデータである。
【００７５】
仮想ステレオカメラ間隔データ５０３の値は、後述するように、基準間隔データ５０８が示す基準値を用いて設定される。
【００７６】
ｘ軸周りしきい値データ５０５およびｙ軸周りしきい値データ５０６は、後述する仮想ステレオカメラ設定更新処理で用いるデータであり、基準仮想カメラの姿勢を調整する際にどのように調整するかの判断に用いられるしきい値のデータである。
【００７７】
ｚ軸周りしきい値データ５０７は、後述する仮想ステレオカメラ設定更新処理で用いるデータであり、仮想ステレオカメラ間隔を調整する際にどのように調整するかの判断に用いられるしきい値のデータである。
【００７８】
［ゲーム処理］
以下、本実施形態における情報処理の具体的な動作について図７および図８を参照しながら説明する。まず、ゲーム装置に電源が投入されると、ＣＰＵ３１１によってブートプログラム（図示せず）が実行され、これによりデータ保存用内部メモリに記憶されているゲームプログラムが読み込まれてメインメモリ３２に記憶される。そして、メインメモリ３２に記憶されたゲームプログラムがＣＰＵ３１１で実行されることによって、図７、及び図８のフローチャートに示す処理が行われる。図７、及び図８は、ＣＰＵ３１１がゲームプログラムを実行することによって行われる上記ゲーム処理の一例を、ゲーム処理における１単位時間（例えば１／６０秒）に実行される内容として示すフローチャートである。なお、図７、及び図８では、ステップを「Ｓ」と省略して記載している。
【００７９】
ゲーム処理を開始すると、ＣＰＵ３１１は、始めに初期設定処理をする（ステップ１００）。具体的には、ＣＰＵ３１１は、メインメモリ３２に記憶されている各種データを初期値に設定する。
【００８０】
初期設定処理を終了すると、ＣＰＵ３１１は、ゲーム操作入力受付処理を実行する（ステップ１０５）。具体的には、ゲーム装置のアナログスティック１５や操作ボタン１４Ａ〜Ｅへの入力状況を把握する。
【００８１】
ゲーム操作入力受付処理を終了すると、ＣＰＵ３１１は、プレイヤオブジェクト位置姿勢更新処理を実行する（ステップ１１０）。具体的には、アナログスティック１５等への入力状況に基づいて、プレイヤオブジェクトの仮想空間内での位置および姿勢を更新し、プレイヤオブジェクト位置姿勢データ５０１を更新する。
【００８２】
プレイヤオブジェクト位置更新処理を終了すると、ＣＰＵ３１１は、基準仮想カメラ設定処理を行う（ステップ１１５）。具体的には、ＣＰＵ３１１はまず、プレイヤオブジェクト位置姿勢データ５０１を参照してプレイヤオブジェクトの位置及び姿勢を取得し、取得したプレイヤオブジェクトの位置および姿勢に基づいて、基準仮想カメラの位置および姿勢を設定する。より具体的には、プレイヤオブジェクトが向いている方向に対して、プレイヤオブジェクト３１０の位置から後方および上方向に所定距離だけ離れた位置を基準仮想カメラの位置（基準仮想カメラ座標系の原点の座標）として決定する。さらに、決定された基準仮想カメラの位置から、プレイヤオブジェクト３１０の位置を向く方向が、基準仮想カメラの撮像方向となるように基準仮想カメラの姿勢（基準仮想カメラ座標系の各軸の方向）を決定する。ＣＰＵ３１１は、以上のようにして決定された基準仮想カメラの設定を示すように、基準仮想カメラ設定データ５０２を更新する。なお、このときの基準仮想カメラの姿勢が、後の処理で基準仮想カメラの姿勢の更新をする際の基準の姿勢となる。
【００８３】
基準仮想カメラ設定処理を終了すると、ＣＰＵ３１１は、仮想カメラ間隔設定処理を行い、基準となる仮想カメラの間隔を設定する（ステップＳ１１５）。本実施例では、基準となる仮想カメラ間隔としては、本ゲームプログラムによりあらかじめ決められた距離を用いるため、仮想カメラ間隔が当該決められた距離となるように仮想カメラ間隔データを更新する。他の実施例では、例えば、ユーザの操作に応じて基準となる仮想カメラ間隔を変更するようにしてもよい。
【００８４】
仮想カメラ間隔設定処理を終了すると、ＣＰＵ３１１は、有効化操作入力がオンになっているかどうかを確認する（ステップ１２０）。具体的には、有効化操作として割り当てられたユーザ操作である、Ｒボタン１４Ｋの入力がオンになっているかどうか（Ｒボタン１４Ｋが押された状態かどうか）を判断する。有効化操作入力がオンになっていると判断された場合（ステップ１２０でＹＥＳ）はステップ１２５に、なっていないと判断された場合（ステップ１２０でＮＯ）はステップ１４５に進む。
【００８５】
ＣＰＵ３１１は、ステップ１２０で有効化操作入力がオンになっていると判断したときには、さらに、有効化操作入力がオフからオンになったかどうかを確認する（ステップ１２５）。すなわち、有効化操作入力が、現在のタイミングでオンになったものか、以前のタイミングでオンになり、オンになった状態が現在まで継続しているのかのどちらであるかを判断する。有効化操作入力が現在のタイミングでオンになったと判断された場合（ステップ１２５でＹＥＳ）はステップ１３５に、オンになった状態が継続していると判断された場合（ステップ１２５でＹＥＳ）はステップ１４０に進む。
【００８６】
ＣＰＵ３１１は、ステップ１３０で有効化操作入力が現在のタイミングでオンになったと判断したときには、装置回転角度データ初期化処理を行う（ステップ１３５）。具体的には、装置のｘ軸、ｙ軸、ｚ軸周りの回転角度データをそれぞれゼロとするように、装置回転角度データ５０４を更新する。この処理によって、以降の仮想ステレオカメラ設定更新処理においては、有効化操作入力が有効になったときの姿勢を基準として、当該装置基準姿勢からの装置の回転角度が求められることとなる。
【００８７】
装置姿勢データ初期化処理が終了したとき、および、ステップ１３０で有効化操作入力がオンになった状態が継続していると判断されたとき、ＣＰＵ３１１は、仮想ステレオカメラ設定更新処理を行う（ステップ１４０）。以下、図８のフローを参照して、仮想ステレオカメラ設定更新処理の詳細について説明する。
【００８８】
仮想ステレオカメラ設定更新処理において、ＣＰＵ３１１はまず、角速度データ検出処理を行う（ステップ２００）。具体的には、ＣＰＵ３１１は、角速度センサ４０によってサンプリングされた、ｘ軸、ｙ軸、ｚ軸の各軸方向についての角速度を取得する。
【００８９】
角速度データ検出処理を終了すると、ＣＰＵ３１１は、装置回転角度データ更新処理を行う（ステップ２１０）。具体的には、ステップ２００で検出した角速度データに基づいて、ゲーム装置が、ｘ軸、ｙ軸、ｚ軸の各軸周りにどれだけの角度回転したかを算出し、算出された角度を、更新前の装置回転角度データ５０４を参照して取得した、直前の装置回転角度（ｘ軸、ｙ軸、ｚ軸の各軸周りについての装置基準姿勢からの回転角度）に加算することによって、現在の装置の回転角度を算出する。ＣＰＵ３１１は、算出された装置の回転角度を示すように装置回転角度データ５０４を更新する。
【００９０】
装置回転角度データ更新処理を終了すると、ＣＰＵ３１１は、更新された装置回転角度データ５０４に基づいて基準仮想カメラの姿勢の更新を行う（ステップ２１５〜ステップ２４５）。以下、基準仮想カメラの姿勢の更新の流れについて説明する。
【００９１】
まず、ＣＰＵ３１１は、更新された装置回転角度データ５０４から装置のｘ軸周りの回転角度を参照して、当該ｘ軸周りの回転角度が、ｘ軸周りしきい値データ５０５を参照して取得されたしきい値以下であるかどうかを確認する（ステップ２１５）。  装置のｘ軸周りの回転角度がしきい値以下であった場合（ステップ２１５でＹＥＳ）は、基準仮想カメラを、装置の回転角度に合わせるようにｘ軸方向に回転させる（ステップ２２０）。より具体的には、基準仮想カメラ設定データ５０２を参照して、ステップＳ１１５で設定された基準仮想カメラの位置および姿勢を取得し、当該姿勢から、基準仮想カメラ座標系のｘ軸周りに、装置のｘ軸周りの回転角度と同じだけ基準仮想カメラを回転させる。ＣＰＵ３１１は、回転させた基準仮想カメラの姿勢を示すように基準仮想カメラ設定データ５０２を更新する。装置のｘ軸周りの回転角度がしきい値を超えていた場合（ステップ２１５でＮＯ）は、装置のｘ軸周りの回転角度と同じだけ仮想カメラを回転してしまうと、プレイヤキャラクタが基準仮想カメラの画角から外れてしまう。そのため、装置のｘ軸周りの回転角度と同じだけ回転させるのではなく、しきい値として設定されたｘ軸周りの回転角度だけ回転させ、回転させた基準仮想カメラの姿勢を示すように基準仮想カメラ設定データ５０２を更新する（ステップ２２５）。これによって、基準仮想カメラはしきい値として設定された角度までしか回転しないため、画面上に常にプレイヤキャラクタが表示される。なお、上記の説明および以降の説明においては、しきい値と回転角度との比較に関して、両方が正の値の場合について記載しているが、実際には、基準の位置を基に、一方向への回転角度を正、当該方向と逆方向への回転角度を負として、負方向についてもしきい値の範囲内かどうかを確認している。なお、正方向と負方向のしきい値は絶対値が同じ値としてもよいし、別々の値をとるように設定してもよい。
【００９２】
ｘ軸周りに関して基準仮想カメラ設定データ５０２の更新を行った後、ＣＰＵ３１１は次に、ｙ軸周りについてもｘ軸周りと同様の処理（ステップ２３０〜ステップ２４０）を行う。すなわち、ＣＰＵ３１１は、装置のｙ軸周りの回転角度またはしきい値として設定されたｙ軸周りの回転角度だけ、基準仮想カメラ座標系のｙ軸周りに基準仮想カメラを回転させて、基準仮想カメラ設定データ５０２を更新する。これらの処理についてはｘ方向の場合と同様なため、詳細の説明は省略する。
【００９３】
ｙ軸周りに関して基準仮想カメラ設定データ５０２の更新を行った後、ＣＰＵ３１１は次に、ｚ軸周りに関して基準仮想カメラ設定データ５０２の更新を行う（ステップ２４５）。具体的には、ＣＰＵ３１１は、基準仮想カメラの姿勢について、装置のｚ軸周りの回転角度と同じだけ、基準仮想カメラ座標系のｚ軸周りに基準仮想カメラを回転させて、基準仮想カメラ設定データ５０２を更新する。なお、ｘ方向やｙ方向についての場合と異なり、基準仮想カメラの撮像方向（基準仮想カメラ座標系でのｚ軸方向）はおおよそプレイヤオブジェクトの方向を向いているため、基準仮想カメラ座標系のｚ軸周りについては、どれだけ回転してもプレイヤオブジェクトが画面上に表示されなくなることがない。そのため、ｚ軸周りについて基準仮想カメラの姿勢の更新を行う際には、しきい値を超えているかどうかを判断することなく姿勢の更新を行っている。
【００９４】
以上のように、ステップ２１５〜ステップ２４５の処理によって、基準仮想カメラの姿勢が変更され、基準仮想カメラ設定データ５０２の更新が行われる。
【００９５】
基準仮想カメラ設定データ５０２の更新が行われると、ＣＰＵ３１１は、仮想ステレオカメラ間隔データ５０３の更新を行う（ステップ２５０〜ステップ２６０）。以下、仮想ステレオカメラ間隔データ５０３の更新の流れについて説明する。
【００９６】
まず、ＣＰＵ３１１は、更新された装置回転角度データ５０４から装置のｚ軸周りの回転角度を参照して、当該ｚ軸周りの回転角度が、ｚ軸周りしきい値データ５０６を参照して取得されたしきい値以下であるかどうかを確認する（ステップ２５０）。装置のｚ軸周りの回転角度がしきい値以下であった場合（ステップ２５０でＹＥＳ）は、装置のｚ軸周りの回転角度の大きさに応じて仮想ステレオカメラ間隔を調整する（ステップ２５５）。具体的には、基準間隔データ５０８を参照して得られる仮想ステレオカメラ間隔の基準値を装置姿勢のｚ軸周りの回転角度の大きさに応じて減少させる。より具体的には、装置姿勢のｚ軸周りの回転角度が０度の時に基準値の１００％、前記ｚ軸周りしきい値の大きさの時に基準値の０％となるように設定する。ＣＰＵ３１１は、仮想ステレオカメラ間隔の値を示すように仮想ステレオカメラ間隔データ５０３を更新する。装置のｚ軸周りの回転角度が前記ｚ軸周りしきい値を超えていた場合（ステップ２５０でＮＯ）は、仮想ステレオカメラ間隔がゼロとなるように仮想ステレオカメラ間隔データ５０３を更新する（ステップ２６０）。
【００９７】
以上のように、ステップ２５０〜ステップ２６０の処理によって、仮想ステレオカメラ間隔データ５０３の更新が行われる。仮想ステレオカメラ間隔データ５０３の更新を行うと、ＣＰＵ３１１は、仮想ステレオカメラ設定更新処理を終了し、元の図７のフローのステップ１４５に進む。
【００９８】
仮想ステレオカメラ設定更新処理が終了した場合、および、ステップ１２５で有効化操作入力がオンではないと判断された場合、ＣＰＵ３１１は、仮想ステレオカメラ配置処理を行う（ステップ１４５）。
【００９９】
仮想ステレオカメラ配置処理を終了すると、ＣＰＵ３１１は、配置された右仮想カメラおよび左仮想カメラによって仮想空間を撮像し、右目用画像および左目用画像を生成し、生成した画像を表示手段上に表示する（ステップ１５０）。
【０１００】
図９は、仮想ステレオカメラを配置する方法を示す図である。ＣＰＵ３１１はまず、基準仮想カメラ設定データ５０２を参照し、基準仮想カメラＢｋの設定を取得する。また、仮想ステレオカメラ間隔データ５０３を参照して、仮想ステレオカメラ間隔Ｋｋを取得する。そして、図９に示すように、基準仮想カメラを、基準仮想カメラ座標系の原点Ｏから、ｘ軸方向の正方向及び負方向に向かって間隔Ｋｋ／２の位置に移動して、右仮想カメラＨｋおよび左仮想カメラＭｋとして配置する。なお、左仮想カメラＨｋ、及び右仮想カメラＭｋの撮像方向は互いに平行となる。
【０１０１】
右目用画像および左目用画像の生成および表示処理が終了すると、ＣＰＵ３１１は、ユーザによってゲーム処理を終了する操作がされたか否かを判断する（ステップ１５５）。ゲーム処理を終了する操作がされたと判断した場合（ステップ１５５でＹＥＳ）は、ゲームプログラムの実行を終了する。ユーザによってゲーム処理を終了する操作がされていないと判断した場合（ステップ１５５でＮＯ）は、ステップ１０５からの処理を繰り返す。
【０１０２】
以上が、本発明の実施形態に係るゲーム装置１０の説明である。本実施形態に係るゲーム装置１０によれば、ユーザがゲーム装置１０をｚ軸周り（ロール方向）に回転させることによってユーザの視認する方向と、立体視に最適な方向とのずれの大きさに応じて画像の視差を低減し、視認性を向上できる。
【０１０３】
なお、本実施形態では、ｚ軸周り（ロール方向）の回転角度について、２５度をしきい値として、回転角度としきい値とを比較する場合について説明したが、当該しきい値は任意の角度であってよい。
【０１０４】
また、本実施形態では、ゲーム装置１０が備えるアナログスティック１５による方向指示操作によりプレイヤオブジェクトの移動と姿勢を制御した。しかしながら、ゲーム装置１０が他の任意の方向指示手段（スライドパッド、十字キーなど）を備えるように構成し、これを用いてプレイヤオブジェクトの移動と姿勢を制御してもよい。
【０１０５】
また、本実施形態では、立体視画像を生成するようにしたが、平面視画像（立体視でない画像）を生成する場合にも適用可能である。この場合には、基準仮想カメラで仮想空間を撮影することによりゲーム画像が生成される。
【０１０６】
また、上述した説明では、本発明を携帯型のゲーム装置１０に適用した場合について説明したが、本発明は携帯型ゲーム装置に限定されない。例えば、据置型ゲーム装置、携帯電話機、簡易型携帯電話機（ＰＨＳ）、ＰＤＡ等の携帯情報端末にも本発明の適用は可能である。また、据置型ゲーム機やパーソナルコンピュータにも本発明の適用は可能である。
【０１０７】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載及び技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。従って、他に定義されない限り、本明細書中で使用される全ての専門用語及び技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０１０８】
本発明に係る画像生成プログラム、画像生成装置、画像生成システム及び画像生成方法は、視認性を向上することが可能な画像生成プログラム、画像生成装置、画像生成システム及び画像生成方法等として有用である。
【符号の説明】
【０１０９】
１０    ゲーム装置
１１    下側ハウジング
１２    下側ＬＣＤ
１３    タッチパネル
１４    操作ボタン
１５    アナログスティック
１６    ＬＥＤ
１７    挿入口
１８    マイクロフォン用孔
１９    無線スイッチ
２１    上側ハウジング
２２    上側ＬＣＤ
２３    外側撮像部
２３ａ    外側左撮像部
２３ｂ    外側右撮像部
２４    内側撮像部
２５    ３Ｄ調整スイッチ
２６    ３Ｄインジケータ
２８    タッチペン
３１    情報処理部
３１１    ＣＰＵ
３１２    ＧＰＵ
３１３    ＶＲＡＭ
３２    メインメモリ
３３    外部メモリＩ／Ｆ
３４    データ保存用外部メモリＩ／Ｆ
３５    データ保存用内部メモリ
３６    無線通信モジュール
３７    ローカル通信モジュール
３８    ＲＴＣ
３９    加速度センサ
４０    角速度センサ
４１    電源回路
４２    Ｉ／Ｆ回路
４３    マイク
４４    スピーカ
４５    外部メモリ
４６    データ保存用外部メモリ
【図１】
0005764390.tif 000002
【図２】
0005764390.tif 000003
【図３】
0005764390.tif 000004
【図４】
0005764390.tif 000005
【図５】
0005764390.tif 000006
【図６】
0005764390.tif 000007
【図７】
0005764390.tif 000008
【図８】
0005764390.tif 000009
【図９】
0005764390.tif 000010