説明

情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法

【課題】簡単な操作で種々の画像を表示することが可能な情報処理技術を提供する。
【解決手段】ゲーム装置は、実空間に配置されたマーカを撮像する。ゲーム装置は、撮像した画像に含まれるマーカに基づいて、ゲーム装置を基準としたマーカの位置および姿勢を算出するとともに、マーカ上にマーカ座標系を設定する。また、ゲーム装置は、ゲーム装置が備える加速度センサが検出した加速度に基づいて、重力方向を検出する。次に、ゲーム装置は、検出した重力方向に基づいて、マーカ座標系の重力方向を算出し、算出したマーカ座標系の重力方向に基づいて、仮想キャラクタの姿勢を決定する。そして、ゲーム装置は、当該仮想キャラクタを表示装置に表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、表示装置に画像を表示させるための情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法に関する。
【背景技術】
【0002】
従来、実空間に置かれたゲームカードをカメラで撮像して、当該ゲームカードの表示位置に仮想オブジェクトを表示させるゲーム装置が存在する。例えば、特許文献1では、ゲーム装置に接続されたカメラで実空間に置かれたゲームカードを撮像し、撮像した画像に基づいて、実空間におけるゲームカードの姿勢、方向、および、カメラとゲームカードとの距離を算出する。そして、算出した姿勢、方向、および距離に応じて、表示装置に表示する仮想オブジェクトを変化させる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−72667号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に記載のゲーム装置では、仮想オブジェクトの表示を変化させるためには、カメラやゲームカードの姿勢を大きく変化させる必要があり、ユーザの操作性の向上という観点では改善の余地があった。
【0005】
それ故、本発明の目的は、簡単な操作で種々の画像を表示することが可能な情報処理技術を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【0007】
本発明は、情報処理装置のコンピュータを、画像取得手段、姿勢情報取得手段、特定対象物検出手段、位置関係算出手段、表示決定手段、画像生成手段、および、表示制御手段、として機能させる情報処理プログラムである。画像取得手段は、撮像手段によって撮像された撮像画像を逐次取得する。姿勢情報取得手段は、上記撮像手段の姿勢を示す姿勢情報を取得する。特定対象物検出手段は、上記画像取得手段によって取得された撮像画像から特定対象物を検出する。位置関係算出手段は、上記特定対象物と上記撮像手段との相対的な位置関係を算出する。表示決定手段は、少なくとも上記姿勢情報に基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定する。画像生成手段は、上記位置関係算出手段により算出された位置関係に基づいて、上記表示決定手段による決定に応じた上記仮想オブジェクトの画像を生成する。表示制御手段は、上記仮想オブジェクトの画像を表示装置に表示させる。
【0008】
上記によれば、撮像手段の姿勢を示す姿勢情報に基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定する。そして、当該決定に応じた仮想オブジェクトの画像を、特定対象物と撮像手段との相対的な位置関係に基づいて生成し、表示装置に表示させることができる。
【0009】
また、本発明の他の構成では、表示決定手段は、上記位置関係と上記姿勢情報とに基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定してもよい。
【0010】
上記によれば、上記位置関係と上記姿勢情報とに基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定することができる。例えば、仮想オブジェクトの表示態様として、仮想オブジェクトの位置、姿勢(向きやポーズを含む)や表情、動作パターン、所持するアイテム、仮想オブジェクトの立体感、仮想オブジェクトの色や明るさ等を決定することができる。
【0011】
また、本発明の他の構成では、上記表示決定手段は、上記姿勢情報が示す所定の方向を基準とした上記特定対象物の姿勢に応じて、上記仮想オブジェクトの表示態様を決定してもよい。
【0012】
上記によれば、実空間の所定の方向を基準とした特定対象物の姿勢に応じて、仮想オブジェクトの表示態様を決定することができる。
【0013】
また、本発明の他の構成では、上記姿勢情報取得手段は、上記姿勢情報として、上記撮像手段を基準とした座標系の所定の方向を示す姿勢情報を取得してもよい。上記表示決定手段は、上記位置関係と上記姿勢情報取得手段が取得した姿勢情報とに基づいて、上記特定対象物を基準とした座標系の所定の方向を算出し、算出した所定の方向に基づいて、上記仮想オブジェクトの表示態様を決定してもよい。
【0014】
上記によれば、特定対象物を基準とした座標系の所定の方向に基づいて、仮想オブジェクトの表示態様を決定することができる。
【0015】
また、本発明の他の構成では、上記表示決定手段は、少なくとも、上記特定対象物が上記姿勢情報が示す所定の方向に対して垂直となるように実空間に配置されていることを上記算出した所定の方向が示す場合には、上記仮想オブジェクトの表示態様を第1表示態様に決定してもよい。また、上記表示決定手段は、少なくとも、上記特定対象物が上記姿勢情報が示す所定の方向に対して平行となるように実空間に配置されていることを上記算出した所定の方向が示す場合には、上記仮想オブジェクトの表示態様を第2表示態様に決定してもよい。
【0016】
上記によれば、上記特定対象物が所定の方向に対して垂直となるように配置されている場合と、平行となるように配置されている場合とで仮想オブジェクトの表示態様を異なるようにすることができる。
【0017】
また、本発明の他の構成では、上記表示決定手段は、上記姿勢情報が示す所定の方向を基準とした上記特定対象物の姿勢に応じて、上記特定対象物に対する上記仮想オブジェクトの姿勢を決定してもよい。
【0018】
上記によれば、特定対象物に対する仮想オブジェクトの姿勢を決定することができる。
【0019】
また、本発明の他の構成では、上記表示決定手段は、少なくとも、上記特定対象物が上記姿勢情報が示す所定の方向に対して垂直となるように実空間に配置されている場合には、上記仮想オブジェクトが上記特定対象物と垂直な姿勢となるように当該仮想オブジェクトの姿勢を決定してもよい。また、上記表示決定手段は、少なくとも、上記特定対象物が上記姿勢情報が示す所定の方向に対して平行となるように実空間に配置されている場合には、上記仮想オブジェクトが上記特定対象物と平行な姿勢となるように当該仮想オブジェクトの姿勢を決定してもよい。
【0020】
上記によれば、特定対象物が、所定の方向(例えば重力方向)に対して垂直になるように配置されている場合(例えば、マーカがテーブル上に置かれている場合)には、仮想オブジェクトが特定対象物と垂直な姿勢となるように仮想オブジェクトの姿勢を決定することができる。また、特定対象物が、所定の方向(例えば重力方向)に対して平行になるように配置されている場合(例えば、マーカが壁に貼り付けられている場合)には、仮想オブジェクトが特定対象物と平行な姿勢となるように仮想オブジェクトの姿勢を決定することができる。
【0021】
また、本発明の他の構成では、上記表示決定手段は、少なくとも上記特定対象物が上記姿勢情報が示す所定の方向に対して平行となるように実空間に配置されている場合において、上記特定対象物の少なくとも一部の面の当該面に垂直な軸周りの回転角が、第1角度の場合には、上記仮想オブジェクトの姿勢を第1姿勢に決定し、第2角度の場合には、上記仮想オブジェクトの姿勢を第2姿勢に決定してもよい。
【0022】
上記によれば、例えば、特定対象物が、所定の方向(例えば重力方向)に対して平行になるように配置されている場合(例えば、マーカが壁に貼り付けられている場合)において、仮想オブジェクトの姿勢を決定することができる。例えば、特定対象物の少なくとも一部の面の当該面に垂直な軸周りの回転角が、第1角度の場合(例えば、特定対象物の所定の部分が下側となるように配置されている場合)には、上記仮想オブジェクトの姿勢を第1姿勢に決定し、第2角度の場合には、上記仮想オブジェクトの姿勢を第2姿勢に決定することができる。
【0023】
また、本発明の他の構成では、上記所定の方向は、重力方向であってもよい。
【0024】
また、本発明の他の構成では、上記表示決定手段は、上記特定対象物を基準とした座標系の上記所定の方向が第1の範囲である場合に、上記仮想オブジェクトの表示態様を第1態様に決定してもよい。また、上記表示決定手段は、上記特定対象物を基準とした座標系の上記所定の方向が所定の境界によって上記第1の範囲と分けられる第2の範囲である場合に、上記仮想オブジェクトの表示態様を第2態様に決定してもよい。そして、上記表示決定手段は、上記第1態様から上記第2態様に切り替える場合には、上記第2態様から上記第1態様に切り替えるときと比較して、上記所定の境界を上記第1の範囲側に設定してもよい。
【0025】
上記によれば、仮想オブジェクトの表示態様が第1態様および第2態様の間で頻繁に切り替わることを防止することができる。
【0026】
また、本発明の他の構成では、上記表示制御手段は、上記撮像手段によって撮像された撮像画像または上記表示装置の画面を透過して視認される実空間と、上記表示決定手段による決定に応じた上記仮想オブジェクトの画像とを重ね合わせて、上記表示装置に表示させてもよい。
【0027】
上記によれば、実空間と仮想オブジェクトの画像とを重ね合わせて、表示装置に表示させることができる。
【0028】
また、本発明の他の構成では、上記特定対象物には、上記第1姿勢を示す第1情報、および、上記第2姿勢を示す第2情報が記載されてもよい。上記第1情報は、ユーザが第1の方向から上記特定対象物を見た場合に正しい方向から視認可能である。また、上記第2情報は、ユーザが第2の方向から上記特定対象物を見た場合に正しい方向から視認可能である。
【0029】
上記によれば、ユーザにとって理解し易い情報が特定対象物に記載されるため、ユーザは直感的に操作を行うことができる。
【0030】
また、本発明では、上記各手段を実現した情報処理装置であってもよい。また、本発明では、上記各手段を実現する複数の要素が相互に動作することによって、1つの情報処理システムとして構成されてもよい。当該情報処理システムは、1つの装置によって構成されてもよいし、複数の装置によって構成されてもよい。
【0031】
また、本発明の他の形態では、情報処理装置とマーカを備えた情報処理システムであってもよい。上記情報処理装置は、撮像手段と、姿勢検出手段と、画像取得手段と、姿勢情報取得手段と、マーカ検出手段と、位置関係算出手段と、表示決定手段と、画像生成手段と、表示制御手段とを備える。撮像手段は、上記マーカを撮像する。姿勢検出手段は、上記撮像手段の姿勢を検出する。画像取得手段は、上記撮像手段によって撮像された撮像画像を逐次取得する。姿勢情報取得手段は、上記撮像手段の姿勢を示す姿勢情報を取得する。マーカ検出手段は、上記画像取得手段によって取得された撮像画像から上記マーカを検出する。位置関係算出手段は、上記マーカと上記撮像手段との相対的な位置関係を算出する。表示決定手段は、少なくとも上記姿勢情報に基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定する。画像生成手段は、上記位置関係算出手段により算出された位置関係に基づいて、上記表示決定手段による決定に応じた上記仮想オブジェクトの画像を生成する。表示制御手段は、上記仮想オブジェクトの画像を表示装置に表示させる。
【発明の効果】
【0032】
本発明によれば、簡単な操作で種々の画像を表示することができる。
【図面の簡単な説明】
【0033】
【図1】開状態におけるゲーム装置10の外観を示す正面図
【図2】閉状態におけるゲーム装置10の左側面図、正面図、右側面図、および、背面図
【図3】ゲーム装置10の内部構成を示すブロック図
【図4】本実施形態に係る表示処理に用いられるマーカ51の一例を示す図
【図5】ゲーム装置10の外側撮像部23を用いて実空間に置かれたマーカ51を撮像した場合に、上側LCD22に表示される画像の一例を示す図
【図6】ゲーム装置10の外側撮像部23を用いて実空間に置かれたマーカ51を、図5とは異なる方向から撮像した場合に上側LCD22に表示される画像の一例を示す図
【図7】「Front」の文字が書かれた辺SFを下側にしてマーカ51を壁52に貼り付け、マーカ51を撮像した場合に上側LCD22に表示される画像の一例を示す図
【図8】「Right」の文字が書かれた辺SRを下側にしてマーカ51を壁52に貼り付け、マーカ51を撮像した場合に上側LCD22に表示される画像の一例を示す図
【図9】「Back」の文字が書かれた辺を下側にしてマーカ51を壁52に貼り付け、マーカ51を撮像した場合に上側LCD22に表示される画像の一例を示す図
【図10】ゲーム装置10のRAM(メインメモリ32等)のメモリマップを示す図
【図11】本実施形態に係る表示処理の詳細を示すメインフローチャート
【図12】マーカ51上に設定されるマーカ座標系を示す図
【図13】地面と平行なテーブル50の上に置かれたマーカ51をゲーム装置10の外側撮像部23で撮像する様子を示す図
【図14】地面と垂直な壁52に貼り付けられたマーカ51をゲーム装置10の外側撮像部23で撮像する様子を示す図
【図15A】マーカ51が地面と平行な面(テーブル50)上に置かれた場合における仮想キャラクタ65の位置および姿勢を示す図
【図15B】マーカ51が地面と平行な天井54等に貼り付けられた場合における仮想キャラクタ65の位置および姿勢を示す図
【図16A】「Front」の文字が書かれた辺SFが下側になるようにしてマーカ51が地面と垂直な面に貼り付けられている場合における仮想キャラクタ65の姿勢を示す図
【図16B】「Right」の文字が書かれた辺SRが下側になるようにしてマーカ51が地面と垂直な面に貼り付けられている場合における仮想キャラクタ65の姿勢を示す図
【図16C】「Back」の文字が書かれた辺SBが下側になるようにしてマーカ51が地面と垂直な面に貼り付けられている場合における仮想キャラクタ65の姿勢を示す図
【図16D】「Left」の文字が書かれた辺SLが下側になるようにしてマーカ51が地面と垂直な面に貼り付けられている場合における仮想キャラクタ65の姿勢を示す図
【図17】仮想空間に設定された仮想ステレオカメラ63および仮想キャラクタ65を示す図
【図18A】マーカ51が傾いた状態で壁52に貼り付けられている場合において、仮想キャラクタ65が正面を向くように設定された様子を示す図
【図18B】マーカ51が傾いた状態で壁52に貼り付けられている場合において、仮想キャラクタ65が左側を向くように設定された様子を示す図
【図19】仮想キャラクタ65の姿勢を決定するための閾値を再設定する処理を概念的に示す図
【発明を実施するための形態】
【0034】
(ゲーム装置の構成)
以下、本発明の一実施形態に係るゲーム装置について説明する。図1は、開状態におけるゲーム装置10の外観を示す正面図である。図2(a)は閉状態におけるゲーム装置10の左側面図であり、図2(b)は閉状態におけるゲーム装置10の正面図であり、図2(c)は閉状態におけるゲーム装置10の右側面図であり、図2(d)は閉状態におけるゲーム装置10の背面図である。ゲーム装置10は携帯型のゲーム装置であり、図1および図2に示すように折り畳み可能に構成されている。図1は、開いた状態(開状態)におけるゲーム装置10を示し、図2は、閉じた状態(閉状態)におけるゲーム装置10を示している。ゲーム装置10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、交換可能なメモリカード内に記憶され、または、サーバや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【0035】
まず、図1および図2を参照して、ゲーム装置10の外観構成について説明する。図1および図2に示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。本実施形態では、下側ハウジング11および上側ハウジング21はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
【0036】
(下側ハウジングの説明)
まず、下側ハウジング11の構成について説明する。図1および図2に示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。以下、これらの詳細について説明する。
【0037】
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD12の画素数は、例えば、320dot×240dot(横×縦)であってもよい。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCD12として、任意の解像度の表示装置を利用することができる。
【0038】
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施形態では、タッチパネル13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル13として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング11の上側面には挿入口17(図1および図2(d)に示す点線)が設けられている。挿入口17は、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッチペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である。
【0039】
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。図1に示されるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。十字ボタン14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは選択操作等に用いられ、各操作ボタン14B〜14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフするために用いられる。
【0040】
アナログスティック15は、方向を指示するデバイスである。アナログスティック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティック15のキートップがスライドした方向に移動される。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【0041】
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク42(図3参照)が設けられ、当該マイク42がゲーム装置10の外部の音を検出する。
【0042】
図2(b)および(d)に示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。Lボタン14GおよびRボタン14Hは、例えば、撮像部のシャッターボタン(撮影指示ボタン)として機能することができる。また、図2(a)に示されるように、下側ハウジング11の左側面には、音量ボタン14Iが設けられる。音量ボタン14Iは、ゲーム装置10が備えるスピーカの音量を調整するために用いられる。
【0043】
図2(a)に示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ45は、コネクタに着脱自在に装着される。データ保存用外部メモリ45は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。
【0044】
また、図2(d)に示されるように、下側ハウジング11の上側面には、ゲーム装置10とゲームプログラムを記録した外部メモリ44を挿入するための挿入口11Dが設けられ、その挿入口11Dの内部には、外部メモリ44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ44がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。
【0045】
また、図1および図2(c)に示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第2LED16Bは、無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(図2(c)参照)。
【0046】
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
【0047】
(上側ハウジングの説明)
次に、上側ハウジング21の構成について説明する。図1および図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。以下、これらの詳細について説明する。
【0048】
図1に示すように、上側LCD22は上側ハウジング21に収納される。上側LCD22の画素数は、例えば、800dot×240dot(横×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
【0049】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。または、左目用画像と右目用画像とが時間的に交互に表示され、メガネを用いてユーザの左目に左目用画像が右目に右目用画像が視認される方式の表示装置であってもよい。本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCD22はパララックスバリア方式のものとする。上側LCD22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである)。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチ25によって行われる。
【0050】
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bの撮像方向は、いずれも当該外側面21Dの外向きの法線方向である。外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。外側撮像部(左)23aおよび外側撮像部(右)23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0051】
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0052】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体画像の見え方が調整される。具体的には、スライダ25aの位置に応じて、右目用画像および左目用画像の横方向の位置のずれ量が調整される。
【0053】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。なお、3Dインジケータ26は、立体視画像を表示するプログラム処理が実行されているときに限り、点灯するようにしてもよい。
【0054】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0055】
(ゲーム装置10の内部構成)
次に、図3を参照して、ゲーム装置10の内部の電気的構成について説明する。図3は、ゲーム装置10の内部構成を示すブロック図である。図3に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
【0056】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312等を含む情報処理手段である。情報処理部31のCPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、情報処理部31のCPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部31は、VRAM(Video RAM)313を含む。情報処理部31のGPU312は、情報処理部31のCPU311からの命令に応じて画像を生成し、VRAM313に描画する。そして、情報処理部31のGPU312は、VRAM313に描画された画像を上側LCD22及び/又は下側LCD12に出力し、上側LCD22及び/又は下側LCD12に当該画像が表示される。
【0057】
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メモリI/F34、および、データ保存用内部メモリ35が接続される。外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0058】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
【0059】
外部メモリ44は、情報処理部31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。外部メモリ44が外部メモリI/F33に接続されると、情報処理部31は外部メモリ44に記憶されたプログラムを読み込むことができる。情報処理部31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ45には、外側撮像部23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ45がデータ保存用外部メモリI/F34に接続されると、情報処理部31はデータ保存用外部メモリ45に記憶された画像を読み込み、上側LCD22及び/又は下側LCD12に当該画像を表示することができる。
【0060】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0061】
無線通信モジュール36は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール36およびローカル通信モジュール37は情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0062】
また、情報処理部31には、加速度センサ39が接続される。加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサ39は、下側ハウジング11の内部に設けられる。加速度センサ39は、図1に示すように、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサ39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ39は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
【0063】
また、情報処理部31には、RTC38および電源回路40が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0064】
また、情報処理部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に対して入力が行われた位置を知ることができる。
【0065】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に従った処理を実行する。
【0066】
下側LCD12および上側LCD22は情報処理部31に接続される。下側LCD12および上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画像)を表示させる。
【0067】
具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右目用画像と左目用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
【0068】
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
【0069】
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0070】
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。
【0071】
また、情報処理部31には、角速度センサ46が接続される。角速度センサ46は、各軸(x軸、y軸、z軸)周りの角速度を検出する。ゲーム装置10は、角速度センサ46が逐次検出する角速度に基づいて、実空間におけるゲーム装置10の姿勢を算出することができる。具体的には、ゲーム装置10は、角速度センサ46によって検出された各軸周りの角速度を時間で積分することによって、各軸周りのゲーム装置10の回転角を算出することができる。以上がゲーム装置10の内部構成の説明である。
【0072】
(本実施形態の表示処理の概要)
次に、図4から図9を参照して、本実施形態に係るゲーム装置10において行われる表示処理の概要について説明する。図4は、本実施形態に係る表示処理に用いられるマーカ51の一例を示す図である。本実施形態においては、図4に示すようなマーカ51をゲーム装置10の外側撮像部23で撮像すると、所定の仮想キャラクタが上側LCD22に表示されるものとする。
【0073】
図4に示すように、マーカ51は正方形の紙からなり、当該紙の各辺(SF、SR、SB、SL)の近傍には、それぞれ「Front」、「Right」、「Back」、「Left」の文字が印刷されている。これら各辺に書かれた文字は、各辺を下側にした場合に、正面から視認できるように書かれる。例えば、「Front」が書かれた辺SFを下側にした場合に、「Front」の文字は正面から視認できるようになっており、「Front」の文字が書かれた辺SFと対向する辺SBに書かれた文字「Back」は、上下が逆になる。また、紙の中心には、正方形の領域51aが設けられ、当該領域51aには所定のパターンが描かれる。具体的には、図4に示すように、領域51aには、所定の色(例えば、白色)の正方形領域51b、51c、51dと、これらの領域以外の他の色(例えば、黒色)で塗りつぶされた領域51eとがある。正方形領域51bと51cとは、「Front」と書かれた辺SFと平行に並んで配置され、正方形領域51bの中心と正方形領域51cの中心と結ぶ線は、マーカ51の中心を通る。また、正方形領域51dの中心は、マーカ51の中心から「Back」と書かれた辺SBに向かう線上に配置される。
【0074】
図5は、ゲーム装置10の外側撮像部23を用いて実空間に置かれたマーカ51を撮像した場合に、上側LCD22に表示される画像の一例を示す図である。図5に示すように、載置面が地面と平行(あるいは重力方向と垂直)なテーブル(あるいは床)50が実空間に配置され、当該テーブル50の上には、マーカ51が置かれる。このマーカ51をゲーム装置10の外側撮像部23を用いて撮像すると、上側LCD22には、マーカ51を含む実空間の画像に、仮想キャラクタ65の画像が重ね合わされて、表示される。上側LCD22に表示される画像は、ユーザが立体的に視認できる立体視画像である。具体的には、図5に示すように、マーカ51の「Front」と書かれた辺SFが下側となる向きからマーカ51を撮像した場合、仮想キャラクタ65を正面から見た画像が、上側LCD22に表示される。仮想キャラクタ65はマーカ51の中心に立っているように見える。
【0075】
図6は、ゲーム装置10の外側撮像部23を用いて実空間に置かれたマーカ51を、図5とは異なる方向から撮像した場合に上側LCD22に表示される画像の一例を示す図である。図6に示すように、マーカ51の「Right」と書かれた辺SRが下側となる向きからマーカ51を撮像した場合、仮想キャラクタ65を右側から見た画像(仮想キャラクタ65の左側を撮像した画像)が、上側LCD22に表示される。
【0076】
また、図示はしないが、マーカ51の「Back」と書かれた辺SBが下側となる向きからマーカ51を撮像した場合、仮想キャラクタ65を後ろ側から見た画像が、上側LCD22に表示される。また、マーカ51の「Left」と書かれた辺SLが下側となる向きからマーカ51を撮像した場合、仮想キャラクタ65を左側から見た画像(仮想キャラクタ65の右側を撮像した画像)が、上側LCD22に表示される。
【0077】
このように、マーカ51を地面と平行なテーブル50上に置いて、当該マーカ51を撮像すると、あたかも実空間上に仮想キャラクタ65が存在しているかのように、マーカ51上に仮想キャラクタ65が立っているような画像が、上側LCD22に表示される。そして、マーカ51をマーカ51の中心軸周りに回転させたり、あるいは、ゲーム装置10をマーカ51の中心軸周りに回転させたりすると、マーカ51上の仮想キャラクタ65を見る方向もその回転に応じて変化する。
【0078】
後述するように、ゲーム装置10は、マーカ51を撮像して検出することによって、マーカ51を基準としたマーカ座標系を構築し、当該マーカ座標系に仮想キャラクタ65を配置する。マーカ座標系に配置された仮想キャラクタ65を仮想ステレオカメラで撮像することにより、仮想キャラクタ65の立体視画像が生成される。そして、生成された仮想キャラクタ65の立体視画像と、外側撮像部23で撮像されたマーカ51を含む実空間の立体視画像とが重ね合わされて、当該重ね合わされた立体視画像が上側LCD22に表示される。このようにして、マーカ51を含む実空間を撮像した画像に仮想キャラクタ65が重畳して表示されることによって、仮想キャラクタ65があたかも実空間のマーカ51上に存在しているかのように見える。
【0079】
次に、マーカ51を地面と垂直な壁に貼り付けた場合について説明する。図7は、「Front」の文字が書かれた辺SFを下側にしてマーカ51を壁52に貼り付け、マーカ51を撮像した場合に上側LCD22に表示される画像の一例を示す図である。
【0080】
図7に示すように、マーカ51は地面に垂直な(重力方向と平行な)壁52に、「Front」の文字が書かれた辺SFを下側にして貼り付けられる。当該マーカ51をゲーム装置10の外側撮像部23で撮像した場合、上側LCD22には、マーカ51(壁52)に平行に立って正面を向く仮想キャラクタ65が、マーカ51を撮像した画像に重畳されて表示される。この場合において、仮想キャラクタ65はマーカ51よりも手前に存在するかのように、ユーザは感じる。このように、「Front」の文字が書かれた辺SFを下側にしてマーカ51を壁52に貼り付けてマーカ51を撮像すると、仮想キャラクタ65が壁52と平行に立ち、正面を向いた画像が表示される。
【0081】
図8は、「Right」の文字が書かれた辺SRを下側にしてマーカ51を壁52に貼り付け、マーカ51を撮像した場合に上側LCD22に表示される画像の一例を示す図である。図8に示すように、「Right」の文字が書かれた辺SRを下側にして壁52に貼り付けられたマーカ51をゲーム装置10の外側撮像部23で撮像した場合、上側LCD22には、マーカ51(壁52)に平行に立って左側を向く仮想キャラクタ65が表示される。すなわち、仮想キャラクタ65を当該仮想キャラクタ65の右側から見た画像が、マーカ51を撮像した画像に重畳されて上側LCD22に表示される。この場合において、仮想キャラクタ65はマーカ51よりも手前に存在するかのように、ユーザは感じる。このように、「Right」の文字が書かれた辺を下側にしてマーカ51を壁52に貼り付けてマーカ51を撮像すると、仮想キャラクタ65を右側から見た画像(仮想キャラクタ65が壁52と平行に立ち、左側を向いた画像)が表示される。
【0082】
図9は、「Back」の文字が書かれた辺SBを下側にしてマーカ51を壁52に貼り付け、マーカ51を撮像した場合に上側LCD22に表示される画像の一例を示す図である。図9に示すように、「Back」の文字が書かれた辺SBを下側にして壁52に貼り付けられたマーカ51をゲーム装置10の外側撮像部23で撮像した場合、上側LCD22には、マーカ51(壁52)に平行に立って後ろ側を向く仮想キャラクタ65が表示される。すなわち、仮想キャラクタ65を当該仮想キャラクタ65の背面側から見た画像が、マーカ51を撮像した画像に重畳されて上側LCD22に表示される。この場合において、仮想キャラクタ65はマーカ51よりも手前に存在するかのように、ユーザは感じる。このように、「Back」の文字が書かれた辺SBを下側にしてマーカ51を壁52に貼り付けてマーカ51を撮像すると、仮想キャラクタ65が壁52と平行に立ち、後ろ側を向いた画像が表示される。
【0083】
なお、図示はしないが、「Left」の文字が書かれた辺SLを下側にして壁52に貼り付けられたマーカ51を外側撮像部23で撮像した場合、仮想キャラクタ65を左側から見た画像(仮想キャラクタ65が壁52と平行に立ち、右側を向いた画像)が表示される。
【0084】
以上のように、マーカ51を地面と平行なテーブル50等に置いて外側撮像部23で撮像した場合、仮想キャラクタ65はテーブル50と垂直な姿勢となり、仮想キャラクタ65はテーブル50上に立っているように表示される(図4、図5参照)。一方、マーカ51を地面と垂直な壁52等に貼り付けて外側撮像部23で撮像した場合、仮想キャラクタ65は壁52と平行の姿勢となり、仮想キャラクタ65は壁52と平行に立っているように表示される(図7〜図9参照)。
【0085】
詳細は後述するが、ゲーム装置10は、加速度センサ39によって検出した加速度の値に基づいて、マーカ51が地面と水平に置かれているか、あるいは、地面と垂直に置かれているかを判定する。そして、判定結果に応じて、ゲーム装置10は、仮想キャラクタ65の姿勢を決定する。
【0086】
(表示処理の詳細)
次に、図10〜図19を参照して、本実施形態に係る表示処理の詳細について説明する。まず、表示処理の際にメインメモリ32およびVRAM313(以下、これらを総称してRAMと呼ぶことがある)に記憶される主なデータについて説明する。図10は、ゲーム装置10のRAM(メインメモリ32等)のメモリマップを示す図である。図10に示されるように、RAMには、ゲームプログラム70、左目用実画像71L、右目用実画像71R、加速度データ72、キャラクタ姿勢情報73、マーカ情報74、左仮想キャラクタ画像75L、右仮想キャラクタ画像75R、閾値データ76、前回キャラクタ姿勢情報77等が記憶される。これらの他、RAMには、仮想キャラクタ65の形状を示すデータ、ユーザによって行われたボタン操作に関するデータ等が記憶される。
【0087】
ゲームプログラム70は、後述するフローチャートに示される表示処理を情報処理部31(CPU311)に実行させるためのプログラムである。
【0088】
左目用実画像71Lは、外側撮像部(左)23aによって撮像された画像であり、ユーザの左目で視認される左目用実画像である。右目用実画像71Rは、外側撮像部(右)23bによって撮像された画像であり、ユーザの右目で視認される右目用実画像である。
【0089】
加速度データ72は、加速度センサ39が検出した各軸(x軸、y軸、z軸)方向の加速度の値を示すデータである。加速度センサ39は、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。加速度センサ39は所定の時間間隔で各軸方向の加速度を検出し、当該各軸方向の加速度の値は、当該所定の時間間隔で加速度データ72としてRAMに記憶される。
【0090】
キャラクタ姿勢情報73は、仮想キャラクタ65の位置および姿勢を示す情報である。仮想キャラクタ65の位置および姿勢を示す情報とは、仮想キャラクタ65が配置される仮想空間(マーカ座標系)における位置および姿勢を示す情報である。具体的には、仮想キャラクタ65の位置および姿勢を示す情報は、行列によって表わされる。
【0091】
マーカ情報74は、ゲーム装置10(あるいは外側撮像部23)を基準としたマーカ51の位置および姿勢を示す情報であり、ゲーム装置10を基準とした後述するマーカ座標系(図12参照)の位置および姿勢を示す情報である。マーカ51の位置および姿勢を示す情報は、行列によって表わされる。
【0092】
左仮想キャラクタ画像75Lは、仮想空間の仮想キャラクタ65を仮想ステレオカメラ63の左仮想カメラ63a(図17参照)で撮像した画像である。右仮想キャラクタ画像75Rは、仮想空間の仮想キャラクタ65を仮想ステレオカメラ63の右仮想カメラ63b(図17参照)で撮像した画像である。後述するように、仮想空間(マーカ座標系)には、仮想キャラクタ65を撮像するための仮想ステレオカメラ63が設定される。左仮想キャラクタ画像75Lおよび右仮想キャラクタ画像75Rは、当該仮想ステレオカメラ63で仮想キャラクタ65を撮像した画像である。
【0093】
閾値データ76は、仮想キャラクタ65の姿勢を決定するために用いられる閾値を示すデータである。
【0094】
前回キャラクタ姿勢情報77は、1フレーム前の処理において決定された仮想キャラクタ65の位置および姿勢を示す情報である。
【0095】
(フローチャートの説明)
次に、表示処理の詳細について図11を参照して説明する。図11は、本実施形態に係る表示処理の詳細を示すメインフローチャートである。ゲーム装置10の電源が投入されると、ゲーム装置10の情報処理部31(CPU311)は、ROMに記憶されている起動プログラムを実行し、これによってメインメモリ32等の各ユニットが初期化される。次に、不揮発性メモリ(外部メモリ44等;コンピュータ読み取り可能な記憶媒体)に記憶されたゲームプログラム70がRAM(具体的には、メインメモリ32)に読み込まれ、情報処理部31のCPU311によって当該プログラムの実行が開始される。図11のフローチャートに示す処理は、以上の処理が完了した後に情報処理部31(CPU311又はGPU312)によって行われる。
【0096】
なお、図11では、本発明に直接関連しない処理については記載を省略する。また、図11に示すステップS101〜ステップS109の処理は、1フレーム(例えば1/30秒又は1/60秒。フレーム時間という)毎に繰り返し実行される。
【0097】
まず、ステップS101において、情報処理部31は、外側撮像部23によって撮像された画像を取得する。具体的には、情報処理部31は、外側撮像部(左)23aによって撮像された画像を取得して、左目用実画像71LとしてRAMに保存するとともに、外側撮像部(右)23bによって撮像された画像を取得して、右目用実画像71RとしてRAMに保存する。次に、情報処理部31は、ステップS102の処理を実行する。
【0098】
ステップS102において、情報処理部31は、RAMに記憶された加速度データ72を参照して、加速度センサ39が検出した各軸方向の加速度の値を取得する。次に、情報処理部31は、ステップS103の処理を実行する。
【0099】
ステップS103において、情報処理部31は、ステップS101で取得した画像に基づいて、ゲーム装置10を基準としたマーカ51の位置および姿勢を算出する。具体的には、情報処理部31は、ステップS101で取得した左目用実画像71Lおよび右目用実画像71Rの何れかの画像または双方の画像に対してパターンマッチング等の画像処理を行い、マーカ51を検出する。情報処理部31は、検出したマーカ51の画像の形状や大きさ、姿勢に基づいて、実空間のマーカ51とゲーム装置10との位置関係を算出し、マーカ51上にマーカ座標系を設定する。
【0100】
図12は、マーカ51上に設定されるマーカ座標系を示す図である。図12に示すように、マーカ座標系(XYZ座標系)の原点は、マーカ51の中心に設定される。マーカ座標系のX軸は、マーカ51の中心から「Front」と書かれた辺SFに向かう方向(マーカ51の中心から正方形領域51dの中心に向かう方向とは反対方向)に設定される。また、マーカ座標系のZ軸は、マーカ51の中心から「Right」と書かれた辺SRに向かう方向(マーカ51の中心から正方形領域51cの中心に向かう方向)に設定される。また、マーカ座標系のY軸は、マーカ51に対して垂直上向きの方向に設定される。ゲーム装置10には、マーカ51の形状や大きさ、領域51a内に描かれたパターンが予め記憶されている。情報処理部31は、左目用実画像71Lおよび/または右目用実画像71Rに含まれるマーカ51の画像を検出することによって、マーカ座標系を設定する。このようにして設定されるマーカ座標系は、マーカ51に固定された座標系であり、例えば、実空間のマーカ51をマーカ51の中心軸周りに回転させると、当該マーカ座標系も同様に回転する。
【0101】
より具体的には、情報処理部31は、ステップS103において、ゲーム装置10とマーカ51との位置関係を示す行列を算出する。ゲーム装置10とマーカ51との位置関係を示す行列は、ゲーム装置10を基準としたマーカ51の位置および姿勢(回転)を示す行列、あるいは、マーカ51を基準としたゲーム装置10の位置および姿勢を示す行列である。図12に示すように、ゲーム装置10を基準としたマーカ51の位置および姿勢を示す行列は、ゲーム装置10に固定の本体座標系(xyz座標系)で表される座標を、マーカ座標系(XYZ座標系)で表される座標に変換するための座標変換行列である。情報処理部31は、取得した画像に含まれるマーカ51の画像からマーカ51とゲーム装置10との距離、マーカ51の向き等を算出することができ、ゲーム装置10を基準としたマーカ51の位置および姿勢を示す行列を算出することができる。情報処理部31は、算出した行列をマーカ情報74としてRAMに記憶する。情報処理部31は、ステップS103の処理の後、ステップS104の処理を実行する。なお、情報処理部31は、左目用実画像71Lおよび右目用実画像71Rの何れかの画像または双方の画像の中からマーカ51を検出しなかった場合、次以降の処理(ステップS104〜ステップS109の処理)を行わずに当該フローチャートの処理を終了する。
【0102】
ステップS104において、情報処理部31は、ステップS102で取得した加速度の値に基づいて、本体座標系(xyz座標系)の重力方向を算出する。具体的には、情報処理部31は、ステップS102で取得したx軸方向の加速度の値Gx、y軸方向の加速度の値Gy、z軸方向の加速度の値Gzを各成分とする加速度ベクトルG1(Gx,Gy,Gz)を算出する。次に、情報処理部31は、ステップS105の処理を実行する。
【0103】
ステップS105において、情報処理部31は、マーカ51の位置および姿勢と、重力方向とに基づいて、マーカ座標系の重力方向を算出する。具体的には、情報処理部31は、ステップS104で算出した加速度ベクトルG1に、ステップS103で算出したマーカ51の位置および姿勢を示す行列をかけることにより、マーカ座標系の重力方向を示す加速度ベクトルG2(GX,GY,GZ)を算出する。次に、情報処理部31は、ステップS106の処理を実行する。
【0104】
ステップS106において、情報処理部31は、ステップS105で算出したマーカ座標系の重力方向に基づいて、仮想キャラクタ65の姿勢を決定する。具体的には、情報処理部31は、まず、ステップS105で算出したマーカ座標系の重力方向を示す加速度ベクトルG2のうち、Y軸成分の値GYに基づいて、マーカ51と地面との関係が、平行または垂直よりも平行に近いか、垂直または平行よりも垂直に近いかを判定する。
【0105】
図13は、地面と平行なテーブル50の上に置かれたマーカ51をゲーム装置10の外側撮像部23で撮像する様子を示す図である。図14は、地面と垂直な壁52に貼り付けられたマーカ51をゲーム装置10の外側撮像部23で撮像する様子を示す図である。図13に示すように、ステップS104において算出される加速度ベクトルG1は、重力を本体座標系(xyz座標系)で表したベクトルであり、ステップS105で算出される加速度ベクトルG2は、重力をマーカ座標系(XYZ座標系)で表したベクトルである。マーカ51が地面に平行なテーブル50の上に置かれる場合、加速度ベクトルG2のY軸負方向の値は、重力加速度の値Gと一致する(GY=−G)。一方、図14に示すように、マーカ51が地面に垂直な壁52に貼り付けられる場合、加速度ベクトルG2のY軸の値は0になる(GY=0)。
【0106】
従って、情報処理部31は、ステップS105で算出した加速度ベクトルG2(マーカ座標系の重力方向を示すベクトル)のY軸に関する値に基づいて、マーカ51と地面との関係が平行または平行に近いか、垂直または垂直に近いかを判定する。なお、本実施形態においては、マーカ51が地面と平行または平行に近いか、あるいは、地面と垂直または垂直に近いかの何れであるかを判定する。例えば、マーカ51が地面に対して所定の角度だけ傾いた面に置かれている場合は、マーカ51が地面と平行に近い面(テーブル50)に置かれているものとする。また、例えば、マーカ51が地面に対して所定の角度より大きな角度傾いた面に貼り付けられている場合は、マーカ51が地面と垂直に近い面(壁52)に貼り付けられているものとする。具体的には、情報処理部31は、加速度ベクトルG2のY軸の値GYの絶対値が第1の閾値(閾値データ76によって示される閾値)よりも小さい場合、マーカ51は、地面と垂直または垂直に近いと判定する。また、情報処理部31は、加速度ベクトルG2のY軸の値GYの絶対値が第2の閾値(>第1の閾値;閾値データ76によって示される閾値)よりも大きい場合、マーカ51は、地面と平行または平行に近いと判定する。なお、情報処理部31は、加速度ベクトルG2のY軸の値GYが正か負かによって、マーカ51が地面と平行または平行に近いテーブル50等の上に置かれているか、地面と平行または平行に近い天井等に貼り付けられているかを判定することができる。すなわち、情報処理部31は、GYが負である場合は、マーカ51はテーブル50等の上に置かれている(マーカ51を上から見ている)と判定することができる。また、情報処理部31は、GYが正である場合は、マーカ51は天井等に貼り付けられている(マーカ51を下から見ている)と判定することができる。
【0107】
マーカ51が地面と平行または平行に近いと判定した場合、情報処理部31は、仮想キャラクタ65の位置および姿勢を決定する。図15Aは、マーカ51が地面と平行なテーブル50上に置かれた場合における仮想キャラクタ65の位置および姿勢を示す図である。
【0108】
図15Aに示すように、情報処理部31は、仮想キャラクタ65の位置Pをマーカ座標系のY軸正方向の所定位置に決定する。また、情報処理部31は、仮想キャラクタ65の姿勢を姿勢Aに決定する。姿勢Aは、仮想キャラクタ65がX軸正方向を向き、かつ、仮想キャラクタ65の頭から足に向かう方向がY軸負方向(Y軸正方向と反対方向)となる姿勢である。姿勢Aは、マーカ51と垂直または略垂直な姿勢であって、マーカ51上に仮想キャラクタ65が立つような姿勢である。このようにして、マーカ座標系の各軸を基準として仮想キャラクタ65の位置および姿勢が決定される。これにより、図5および図6に示すように、地面と平行な面上に置かれたマーカ51を異なる方向から外側撮像部23で撮像した場合、異なる方向から仮想キャラクタ65を見ることができる。
【0109】
なお、情報処理部31は、マーカ51が天井等に貼り付けられている(マーカ51を下から見ている)場合、仮想キャラクタ65の姿勢を上記姿勢Aに決定してもよいし、姿勢Aとは異なる姿勢Bに決定してもよい。図15Bは、マーカ51が地面と平行な天井54等に貼り付けられた場合における仮想キャラクタ65の位置および姿勢を示す図である。姿勢Bは、仮想キャラクタ65がX軸正方向を向き、かつ、仮想キャラクタ65の頭から足に向かう方向がY軸正方向となる姿勢である。すなわち、姿勢Bは、マーカ51と垂直または略垂直な姿勢であって、仮想キャラクタ65の頭の上方にマーカ51が見える姿勢である。
【0110】
一方、マーカ51が地面と垂直または垂直に近いと判定した場合、情報処理部31は、さらに、ステップS106において、加速度ベクトルG2のX軸の値GXおよびZ軸の値GZに基づいて、仮想キャラクタ65の姿勢を決定する。図16Aは、「Front」の文字が書かれた辺SFが下側になるようにしてマーカ51が地面と垂直な面に貼り付けられている場合における仮想キャラクタ65の姿勢を示す図である。図16Bは、「Right」の文字が書かれた辺SRが下側になるようにしてマーカ51が地面と垂直な面に貼り付けられている場合における仮想キャラクタ65の姿勢を示す図である。図16Cは、「Back」の文字が書かれた辺SBが下側になるようにしてマーカ51が地面と垂直な面に貼り付けられている場合における仮想キャラクタ65の姿勢を示す図である。図16Dは、「Left」の文字が書かれた辺SLが下側になるようにしてマーカ51が地面と垂直な面に貼り付けられている場合における仮想キャラクタ65の姿勢を示す図である。
【0111】
図16Aに示すように、「Front」の文字が書かれた辺SFが下側になるようにしてマーカ51が地面と垂直な面(壁52)に貼り付けられている場合、マーカ座標系のY軸は、壁52と垂直な方向に設定される。また、マーカ座標系のX軸はマーカ51の中心から下方に向かって設定され、マーカ座標系のZ軸はマーカ51の中心から右方向(図16Aでは紙面の手前方向)に向かって設定される。また、加速度ベクトルG2のX軸の値GXは重力加速度Gと一致し、加速度ベクトルG2のZ軸の値GZは0となる。この場合、仮想キャラクタ65の位置Pは、マーカ座標系のY軸正方向の所定位置に決定される。また、仮想キャラクタ65の姿勢は、姿勢Cに決定される。姿勢Cは、仮想キャラクタ65の視線方向がマーカ座標系のY軸正方向と一致または略一致し、かつ、仮想キャラクタ65の頭から足に向かう方向がマーカ座標系のX軸正方向と一致または略一致する姿勢である。このように、位置および姿勢が決定された仮想キャラクタ65を、外側撮像部23と一致する位置および姿勢で設定された仮想ステレオカメラ63(図17)で撮像することによって、仮想キャラクタ65が正面を向いた画像が生成される。
【0112】
また、図16Bに示すように、「Right」の文字が書かれた辺SRが下側になるようにしてマーカ51が地面と垂直な面(壁52)に貼り付けられている場合、マーカ座標系のZ軸はマーカ51の中心から下方に向かって設定される。また、マーカ座標系のX軸は、マーカ51の中心から左方向(図16Bでは紙面の奥方向)に向かって設定される。また、加速度ベクトルG2のZ軸の値GZは重力加速度Gと一致し、加速度ベクトルG2のX軸の値GXは0となる。この場合、仮想キャラクタ65の位置Pは、マーカ座標系のY軸正方向の所定位置に決定される。また、仮想キャラクタ65の姿勢は、姿勢Dに決定される。姿勢Dは、仮想キャラクタ65の視線方向がマーカ座標系のX軸正方向と一致または略一致し、かつ、仮想キャラクタ65の頭から足に向かう方向がマーカ座標系のZ軸正方向と一致または略一致する姿勢である。このように、位置および姿勢が決定された仮想キャラクタ65を、外側撮像部23と一致する位置および姿勢で設定された仮想ステレオカメラ63(図17)で撮像することによって、仮想キャラクタ65を右側から見た画像(仮想キャラクタ65の左側を撮像した画像)が生成される。
【0113】
また、図16Cに示すように、「Back」の文字が書かれた辺SBが下側になるようにしてマーカ51が地面と垂直な面(壁52)に貼り付けられている場合、マーカ座標系のX軸はマーカ51の中心から上方に向かって設定される。また、マーカ座標系のZ軸は、マーカ51の中心から左方向(図16Bでは紙面の奥方向)に向かって設定される。また、加速度ベクトルG2のX軸の値GXは−Gとなり、加速度ベクトルG2のZ軸の値GZは0となる。この場合、仮想キャラクタ65の位置Pは、マーカ座標系のY軸正方向の所定位置に決定される。また、仮想キャラクタ65の姿勢は、姿勢Eに決定される。姿勢Eは、仮想キャラクタ65の視線方向がマーカ座標系のY軸負方向と一致または略一致し、かつ、仮想キャラクタ65の頭から足に向かう方向がマーカ座標系のX軸負方向と一致または略一致する姿勢である。このように、位置および姿勢が決定された仮想キャラクタ65を、外側撮像部23と一致する位置および姿勢で設定された仮想ステレオカメラ63(図17)で撮像することによって、仮想キャラクタ65を後ろ側から見た画像(仮想キャラクタ65の背面を撮像した画像)が生成される。
【0114】
また、図16Dに示すように、「Left」の文字が書かれた辺SLが下側になるようにしてマーカ51が地面と垂直な面(壁52)に貼り付けられている場合、マーカ座標系のZ軸はマーカ51の中心から上方に向かって設定される。また、マーカ座標系のX軸は、マーカ51の中心から右方向(図16Bでは紙面の手前方向)に向かって設定される。また、加速度ベクトルG2のZ軸の値GZは−Gとなり、加速度ベクトルG2のX軸の値GXは0となる。この場合、仮想キャラクタ65の位置Pは、マーカ座標系のY軸正方向の所定位置に決定される。また、仮想キャラクタ65の姿勢は、姿勢Fに決定される。姿勢Fは、仮想キャラクタ65の視線方向がマーカ座標系のX軸正方向と一致または略一致し、かつ、仮想キャラクタ65の頭から足に向かう方向がマーカ座標系のZ軸負方向と一致または略一致する姿勢である。このように、位置および姿勢が決定された仮想キャラクタ65を、外側撮像部23と一致する位置および姿勢で設定された仮想ステレオカメラ63(図17)で撮像することによって、仮想キャラクタ65を左側から見た画像(仮想キャラクタ65の右側を撮像した画像)が生成される。
【0115】
図16A〜図16Dに示す仮想キャラクタ65の姿勢は、加速度ベクトルG2のX軸の値GXおよびZ軸の値GZに基づいて、決定される。例えば、GXが正の値であって、所定の閾値よりも大きい場合、仮想キャラクタ65の姿勢は、図16Aに示す姿勢Cに決定される。また、例えば、GZが正の値であって、所定の閾値よりも大きい場合、仮想キャラクタ65の姿勢は、図16Bに示す姿勢Dに決定される。なお、これら姿勢の判定に用いられる各閾値は、RAMに記憶された閾値データ76によって示される閾値であり、後述するステップS109において再設定される。
【0116】
以上のように、ステップS106においては、ステップS105で算出された加速度ベクトルG2(重力をマーカ座標系で表したベクトル)に基づいて、仮想キャラクタ65の位置および姿勢が決定される。情報処理部31は、決定した仮想キャラクタ65の位置および姿勢を示す行列を、キャラクタ姿勢情報73としてRAMに記憶する。ステップS106の後、情報処理部31は、次にステップS107の処理を実行する。
【0117】
ステップS107において、情報処理部31は、仮想キャラクタ65を上側LCD22に表示させる。具体的には、情報処理部31は、まず、仮想空間(マーカ座標系)に仮想キャラクタ65を配置するとともに、仮想ステレオカメラ63を仮想空間に設定する。
【0118】
図17は、仮想空間に設定された仮想ステレオカメラ63および仮想キャラクタ65を示す図である。図17に示すように、仮想ステレオカメラ63は、左仮想カメラ63aと右仮想カメラ63bとを含む。マーカ座標系における左仮想カメラ63aの位置および姿勢は、マーカ情報74(ゲーム装置10を基準としたマーカ51の位置および姿勢を示す行列を表す情報)に基づいて設定される。具体的には、左仮想カメラ63aの位置および姿勢は、マーカ51を基準とした外側撮像部(左)23aの位置および姿勢と対応して、設定される。すなわち、マーカ座標系から見た左仮想カメラ63aの位置および姿勢は、実空間におけるマーカ51を基準とした外側撮像部(左)23aの位置および姿勢と一致する。同様に、マーカ座標系における右仮想カメラ63bの位置および姿勢は、マーカ情報74(ゲーム装置10を基準としたマーカ51の位置および姿勢を示す行列を表す情報)に基づいて設定される。具体的には、右仮想カメラ63bの位置および姿勢は、マーカ51を基準とした外側撮像部(右)23bの位置および姿勢と対応して、設定される。すなわち、マーカ座標系から見た右仮想カメラ63bの位置および姿勢は、実空間におけるマーカ51を基準とした外側撮像部(右)23bの位置および姿勢と一致する。
【0119】
なお、左仮想カメラ63aおよび右仮想カメラ63bの姿勢は、必ずしも外側撮像部(左)23aおよび外側撮像部(右)23bの姿勢と一致する必要はない。例えば、外側撮像部(左)23aの撮像方向と外側撮像部(右)23bの撮像方向とは、平行であるが、左仮想カメラ63aの撮像方向と右仮想カメラ63bの撮像方向とは、必ずしも平行である必要はない。例えば、左仮想カメラ63aと右仮想カメラ63bとが、互いに内側を向くように設定されてもよい。また、外側撮像部(左)23aと外側撮像部(右)23bとの間の距離LAは固定であるが、左仮想カメラ63aと右仮想カメラ63bとの間の距離LBは、距離LAに応じた固定の値であってもよいし、可変の値であってもよい。例えば、左仮想カメラ63aと右仮想カメラ63bとの間の距離LBは、3D調整スイッチ25のスライダ25aの位置に応じて設定されてもよい。
【0120】
また、情報処理部31は、仮想空間に仮想キャラクタ65を配置する。具体的には、情報処理部31は、ステップS106で決定した位置および姿勢で仮想キャラクタ65を仮想空間に配置する。情報処理部31は、仮想空間に仮想ステレオカメラ63および仮想キャラクタ65を設定した後、当該仮想ステレオカメラ63で仮想キャラクタ65を含む仮想空間を撮像することにより、左仮想キャラクタ画像75Lと右仮想キャラクタ画像75Rとを生成して、当該2つの画像をRAMに記憶する。左仮想キャラクタ画像75Lは、左仮想カメラ63aで仮想キャラクタ65を含む仮想空間を撮像した画像であり、右仮想キャラクタ画像75Rは、右仮想カメラ63bで仮想キャラクタ65を含む仮想空間を撮像した画像である。次に、情報処理部31は、ステップS101で取得してRAMに記憶した左目用実画像71Lと左仮想キャラクタ画像75Lとを重ね合わせた左重畳画像を生成する。また、情報処理部31は、ステップS101で取得してRAMに記憶した右目用実画像71Rと右仮想キャラクタ画像75Rとを重ね合わせた右重畳画像を生成する。そして、情報処理部31は、左重畳画像および右重畳画像を上側LCD22に表示する。具体的には、情報処理部31は、視差バリアを介してユーザの左目に左重畳画像、ユーザの右目に右重畳画像が視認されるように、2つの画像を上側LCD22に表示させる。これにより、上側LCD22には立体視画像が表示される。
【0121】
ステップS107の後、情報処理部31は、次にステップS108の処理を実行する。
【0122】
ステップS108において、情報処理部31は、表示態様の切り替えが行われたか否かを判定する。ここでは、今回のフレームにおけるステップS106の処理で決定された仮想キャラクタ65の姿勢が、前回のフレームにおけるステップS106の処理で決定された仮想キャラクタ65の姿勢と異なるか否かが判定される。具体的には、情報処理部31は、前回キャラクタ姿勢情報77が示す仮想キャラクタ65の姿勢と、キャラクタ姿勢情報73が示す仮想キャラクタ65の姿勢とが異なるか否かを判定する。今回のフレームで決定された仮想キャラクタ65の姿勢が、前回のフレームで決定された仮想キャラクタ65の姿勢と異なる場合、情報処理部31は、表示態様の切り替えが行われたと判定して、次にステップS109の処理を実行する。一方、表示態様の切り替えが行われなかった場合、情報処理部31は、前回キャラクタ姿勢情報77にキャラクタ姿勢情報73をコピーして、図11に示すフローチャートの処理を終了する。
【0123】
ステップS109において、情報処理部31は、仮想キャラクタ65の姿勢を決定するための閾値を再設定する。ステップS109の処理は、加速度ベクトルG2の各軸方向の値が閾値付近で変化している場合において、仮想キャラクタ65の姿勢(表示態様)が頻繁に切り替わることを防止するために行われる。
【0124】
図18Aは、マーカ51が傾いた状態で壁52に貼り付けられている場合において、仮想キャラクタ65が正面を向くように設定された様子を示す図である。図18Bは、マーカ51が傾いた状態で壁52に貼り付けられている場合において、仮想キャラクタ65が左側を向くように設定された様子を示す図である。図18Aおよび図18Bに示すように、マーカ51の中心軸周りにマーカ51を所定の閾値を超えて回転させると、仮想キャラクタ65の姿勢が、正面を向く姿勢(姿勢C)から左側を向く姿勢(姿勢D)に変化する。当該閾値付近で、マーカ51の中心軸周りにマーカ51を左右方向に回転させると、仮想キャラクタ65の姿勢が頻繁に切り替わることになる。ステップS109では、このような仮想キャラクタ65の姿勢が頻繁に切り替わることを防止するために、仮想キャラクタ65の姿勢を決定するための閾値を再設定する。仮想キャラクタ65の姿勢を決定するための閾値を再設定する処理について、図19を用いて説明する。図19は、仮想キャラクタ65の姿勢を決定するための閾値を再設定する処理を概念的に示す図である。
【0125】
例えば、図19に示すように、加速度ベクトルG2のZ軸の値GZが境界値Aよりも小さい場合に、仮想キャラクタ65の姿勢が、姿勢Cに設定され、GZが境界値A以上の場合に、姿勢Dに設定されるものとする。この境界値Aは、予め定められた値であり、初期的に設定される。前回のフレームにおいて算出された仮想キャラクタ65の姿勢が姿勢Cである場合において、今回のフレームにおいて算出されたGZの値が境界値Aを超えると、今回のフレームにおいて姿勢Cから姿勢Dに遷移する。この場合、今回のフレームにおけるステップS109の処理において、情報処理部31は、姿勢Dから姿勢Cに切り替えるための閾値を、境界値Aから境界値B(<境界値A)に変更する。このように、ある姿勢から別の姿勢に遷移する際に、姿勢を決定するための閾値(境界値)を変更することにより、閾値付近でマーカ51を左右方向に回転させても、仮想キャラクタ65の姿勢が2つの姿勢の間で頻繁に切り替わることを防止することができる。
【0126】
ステップS109の処理が終了した後、情報処理部31は、前回キャラクタ姿勢情報77にキャラクタ姿勢情報73をコピーして、図11に示すフローチャートの処理を終了する。
【0127】
以上のように、本実施形態では、マーカ51を検出して、マーカ51とゲーム装置10との位置関係を算出し、加速度センサ39が検出した加速度の値に基づいて、重力の方向を算出する。これにより、算出した位置関係と重力の方向とに基づいて、仮想キャラクタ65の姿勢を変化させることができる。このように、本実施形態では、マーカ51とゲーム装置10との位置関係と、重力の方向とに基づいて、仮想キャラクタ65の姿勢を変化させることができるため、容易に仮想キャラクタ65を様々な方向から見ることができる。
【0128】
(変形例)
なお、本実施形態では、加速度センサ39が検出する加速度に基づいて、重力方向を基準としたゲーム装置10の姿勢を算出した。他の実施形態では、角速度センサ46が検出する角速度に基づいて、ゲーム装置10の姿勢を算出してもよい。例えば角速度センサ46を用いて、ゲーム装置10は、重力方向に対する傾きに限らず、重力方向周りの回転に関する姿勢を算出することができ、実空間の絶対的な姿勢を算出することができる。ゲーム装置10は、角速度センサ46が検出する各軸(x、y、z軸)周りの角速度を時間で積分することによって、各軸周りの回転角を算出することができ、基本姿勢からの姿勢の変化を算出することができる。基本姿勢は、例えば、ゲーム装置10を地面に水平な面上に置いたときの姿勢である。このように、ゲーム装置10は、姿勢を検出するための手段(加速度センサ39や角速度センサ46等)が検出した値を用いて、ゲーム装置10の姿勢を算出することができる。そして、ゲーム装置10は、算出した姿勢と、マーカ51と外側撮像部23との位置関係とに基づいて、仮想キャラクタ65の姿勢を決定してもよい。
【0129】
また、他の実施形態では、上記加速度センサ39や角速度センサ46に加えて(または替えて)、例えば、地磁気センサによってゲーム装置10(外側撮像部23)の実空間における姿勢を算出してもよい。これら各種センサを用いてゲーム装置10(外側撮像部23)の実空間における姿勢を算出し、さらに外側撮像部23でマーカ51を撮像することにより、所定の方向(例えば、重力方向、重力に対して水平な方向、東西南北の方向等)を基準としたマーカ51の姿勢を算出することができる。そして、所定方向を基準としたマーカ51の姿勢に応じて、仮想キャラクタ65の姿勢を決定することができる。
【0130】
また、本実施形態では、6つの方向(上下前後左右)の何れの方向からマーカ51を撮像したかによって、仮想キャラクタ65の姿勢を決定した。6つの方向とは、テーブル50等の上に置かれたマーカ51を上から撮像する方向、天井54等に貼り付けられたマーカ51を下から撮像する方向、前後左右の辺が下側になるようにして壁52等に貼り付けられたマーカ51を撮像する方向である。他の実施形態では、6つの方向に限らない。例えば、地面に対して傾いた面に置かれたマーカ51を撮像した場合に、上記とは異なる姿勢の仮想キャラクタ65が表示されてもよい。
【0131】
また、本実施形態では、ゲーム装置10の姿勢と、上記マーカ51と外側撮像部23との位置関係とに基づいて、仮想キャラクタ65の姿勢を決定した。他の実施形態では、仮想オブジェクトの表示態様を決定してもよい。仮想オブジェクトの表示態様は、例えば、仮想オブジェクトの位置、姿勢(上記実施形態のようなどの方向を向いているかに関する姿勢や、例えば手を挙げたり、座ったりするポーズ)や表情、動作パターン、所持するアイテム、仮想オブジェクトの立体感(視差によって生じる立体感)、仮想オブジェクトの色や明るさ等であってもよい。また、他の実施形態では、表示装置に表示する仮想オブジェクトは、仮想空間に配置される仮想キャラクタ等に限らず、例えば、文字や所定の画像等であってもよい。
【0132】
また、他の実施形態では、ゲーム装置10の姿勢と、上記マーカ51と外側撮像部23との位置関係とに基づいて、表示するオブジェクトの種類や数を決定してもよい。例えば、ゲーム装置10には、予め複数の種類の仮想オブジェクト(上記仮想キャラクタや他の任意の仮想オブジェクト等)が容易されており、ゲーム装置10の姿勢と、上記マーカ51と外側撮像部23との位置関係とに基づいて、これら複数種類の仮想オブジェクトのうち、どの仮想オブジェクトを表示するかを決定してもよい。
【0133】
また、本実施形態では、平面状で四角形のマーカ51が用いられた。他の実施形態では、どのようなマーカが用いられてもよく、立体形状のマーカ(特定対象物)が用いられてもよい。例えば、立方体の所定面に所定のパターンが描かれたマーカが用いられてもよい。この場合、例えば、テーブル50等の上に、立方体の所定面が重力と垂直になるように立方体が置かれている場合と、立方体の所定面が重力と平行になるように立方体が置かれている場合とで、仮想オブジェクトの表示態様等が異なるようにしてもよい。
【0134】
また、本実施形態では、加速度センサ39は下側ハウジング11に収納され、加速度センサ39が検出した加速度を外側撮像部23の姿勢を示す情報として用いた。この場合、上側ハウジング21が180度回転されて開かれた状態(図1に示すように下側ハウジング11の内側面と上側ハウジング21の内側面とが平行になる状態)であることを前提にして、外側撮像部23の姿勢を算出した。他の実施形態では、上側ハウジング21の回転角を検出するセンサを、下側ハウジング11と上側ハウジング21とを回転可能にするヒンジ部に設けてもよい。そして、下側ハウジング11に収納された加速度センサ39の検出結果と、当該回転角を検出するセンサの検出結果とを用いて、外側撮像部23の姿勢(重力に対する姿勢)を算出してもよい。
【0135】
また、他の実施形態では、仮想オブジェクトは立体画像を表示する表示装置に表示されずに、平面画像を表示する表示装置に表示されてもよい。
【0136】
また、本実施形態では、ビデオシースルー方式を用いて拡張現実感を実現した。すなわち、本実施形態では、外側撮像部23によって撮像された画像と、仮想カメラ(左右の仮想カメラ)によって撮像された画像とが重ね合わされて重畳画像が生成され、当該重畳画像が上側LCD22に表示された。他の実施形態では、光学シースルー方式により拡張現実感を実現してもよい。例えば、実空間に配置されたマーカを検出するためのカメラを備えたヘッドマウンドディスプレイをユーザが装着し、ユーザはメガネのレンズ部分に相当するディスプレイ部を通して実空間を視認できるようになっている。このディプレイ部は、現実空間を透過してユーザの目に直接導くことが可能な素材によって構成されている。さらに、このディスプレイ部にはコンピュータにより生成した仮想オブジェクトの画像を表示させることができるようになっている。
【0137】
また、本実施形態では、実カメラ(外側撮像部23)で撮像された実画像に仮想カメラで撮像した画像を重ね合わせて、当該重ね合わされた画像が表示装置に表示されたが、他の実施形態では、実画像を表示装置に表示しなくてもよい。
【0138】
また、本実施形態では、実カメラ(外側撮像部23)、姿勢検出手段(加速度センサ39や角速度センサ46)、および、表示装置(上側LCD22)が一体となった装置を用いて、上記表示制御処理を行った。他の実施形態では、これらは別々の装置として構成されて互いに接続されてもよい。この場合、実カメラによって撮像された画像中のマーカ51を検出し、実カメラとマーカ51との位置関係を算出する。また、姿勢検出手段は、実カメラの姿勢を検出する。そして、算出した位置関係と、姿勢検出手段が検出した実カメラの姿勢とに基づいて、仮想オブジェクトの表示態様や表示する仮想オブジェクト種類等を決定する。
【0139】
また、他の実施形態では、上述した表示制御方法は、携帯型ゲーム装置に限らず、据置型ゲーム装置や他の任意の電子機器、例えば、PDA(Personal Digital Assistant)や高機能携帯電話、パーソナルコンピュータ等に適用されてもよい。
【0140】
また、本実施形態では、表示装置として裸眼で立体視画像を表示可能なLCDが用いられた。他の実施形態では、眼鏡を用いて立体視画像を表示するような方式(時分割方式や偏向方式、アナグリフ方式(赤青眼鏡方式)など)や、ヘッドマウントディスプレイを用いる方式等においても、本発明は適用可能である。
【0141】
また、他の実施形態では、有線や無線等で通信可能に接続された複数の情報処理装置が各処理を分担して処理することにより、上述した表示制御方法を実現する表示制御システムとして構築されてもよい。例えば、撮像装置と表示装置とが接続された端末が、インターネット上のサーバにアクセスし、上述した処理の少なくとも一部を当該サーバが実行してもよい。
【0142】
また、上記実施形態においては、ゲーム装置10の情報処理部31が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置10が備える専用回路によって行われてもよい。
【符号の説明】
【0143】
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 メインメモリ
50 テーブル
51 マーカ
52 壁
54 天井
63 仮想ステレオカメラ
65 仮想キャラクタ

【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータを、
撮像手段によって撮像された撮像画像を逐次取得する画像取得手段、
前記撮像手段の姿勢を示す姿勢情報を取得する姿勢情報取得手段、
前記画像取得手段によって取得された撮像画像から特定対象物を検出する特定対象物検出手段、
前記特定対象物と前記撮像手段との相対的な位置関係を算出する位置関係算出手段、
少なくとも前記姿勢情報に基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定する表示決定手段、
前記位置関係算出手段により算出された位置関係に基づいて、前記表示決定手段による決定に応じた前記仮想オブジェクトの画像を生成する画像生成手段、および、
前記仮想オブジェクトの画像を表示装置に表示させる表示制御手段、として機能させる、情報処理プログラム。
【請求項2】
前記表示決定手段は、前記位置関係と前記姿勢情報とに基づいて、前記仮想オブジェクトの表示態様、前記仮想オブジェクトの種類、前記仮想オブジェクトの数の少なくとも何れかを決定する、請求項1に記載の情報処理プログラム。
【請求項3】
前記表示決定手段は、前記姿勢情報が示す所定の方向を基準とした前記特定対象物の姿勢に応じて、前記仮想オブジェクトの表示態様を決定する、請求項2に記載の情報処理プログラム。
【請求項4】
前記姿勢情報取得手段は、前記姿勢情報として、前記撮像手段を基準とした座標系の所定の方向を示す姿勢情報を取得し、
前記表示決定手段は、前記位置関係と前記姿勢情報取得手段が取得した姿勢情報とに基づいて、前記特定対象物を基準とした座標系の所定の方向を算出し、算出した所定の方向に基づいて、前記仮想オブジェクトの表示態様を決定する、請求項3に記載の情報処理プログラム。
【請求項5】
前記表示決定手段は、
少なくとも、前記特定対象物が前記姿勢情報が示す所定の方向に対して垂直となるように実空間に配置されていることを前記算出した所定の方向が示す場合には、前記仮想オブジェクトの表示態様を第1表示態様に決定し、
少なくとも、前記特定対象物が前記姿勢情報が示す所定の方向に対して平行となるように実空間に配置されていることを前記算出した所定の方向が示す場合には、前記仮想オブジェクトの表示態様を第2表示態様に決定する、請求項4に記載の情報処理プログラム。
【請求項6】
前記表示決定手段は、前記姿勢情報が示す所定の方向を基準とした前記特定対象物の姿勢に応じて、前記特定対象物に対する前記仮想オブジェクトの姿勢を決定する、請求項3から5の何れかに記載の情報処理プログラム。
【請求項7】
前記表示決定手段は、
少なくとも、前記特定対象物が前記姿勢情報が示す所定の方向に対して垂直となるように実空間に配置されている場合には、前記仮想オブジェクトが前記特定対象物と垂直な姿勢となるように当該仮想オブジェクトの姿勢を決定し、
少なくとも、前記特定対象物が前記姿勢情報が示す所定の方向に対して平行となるように実空間に配置されている場合には、前記仮想オブジェクトが前記特定対象物と平行な姿勢となるように当該仮想オブジェクトの姿勢を決定する、請求項6に記載の情報処理プログラム。
【請求項8】
前記表示決定手段は、少なくとも前記特定対象物が前記姿勢情報が示す所定の方向に対して平行となるように実空間に配置されている場合において、前記特定対象物の少なくとも一部の面の当該面に垂直な軸周りの回転角が、第1角度の場合には、前記仮想オブジェクトの姿勢を第1姿勢に決定し、第2角度の場合には、前記仮想オブジェクトの姿勢を第2姿勢に決定する、請求項7に記載の情報処理プログラム。
【請求項9】
前記所定の方向は、重力方向である、請求項3から8の何れかに記載の情報処理プログラム。
【請求項10】
前記表示決定手段は、
前記特定対象物を基準とした座標系の前記所定の方向が第1の範囲である場合に、前記仮想オブジェクトの表示態様を第1態様に決定し、
前記特定対象物を基準とした座標系の前記所定の方向が所定の境界によって前記第1の範囲と分けられる第2の範囲である場合に、前記仮想オブジェクトの表示態様を第2態様に決定し、
前記第1態様から前記第2態様に切り替える場合には、前記第2態様から前記第1態様に切り替えるときと比較して、前記所定の境界を前記第1の範囲側に設定する、請求項4または請求項5に記載の情報処理プログラム。
【請求項11】
前記表示制御手段は、前記撮像手段によって撮像された撮像画像または前記表示装置の画面を透過して視認される実空間と、前記表示決定手段による決定に応じた前記仮想オブジェクトの画像とを重ね合わせて、前記表示装置に表示させる、請求項1から10の何れかに記載の情報処理プログラム。
【請求項12】
前記特定対象物には、前記第1姿勢を示す第1情報、および、前記第2姿勢を示す第2情報が記載されており、
前記第1情報は、ユーザが第1の方向から前記特定対象物を見た場合に正しい方向から視認可能であり、
前記第2情報は、ユーザが第2の方向から前記特定対象物を見た場合に正しい方向から視認可能である、請求項8に記載の情報処理プログラム。
【請求項13】
撮像手段によって撮像された撮像画像を逐次取得する画像取得手段と、
前記撮像手段の姿勢を示す姿勢情報を取得する姿勢情報取得手段と、
前記画像取得手段によって取得された撮像画像から特定対象物を検出する特定対象物検出手段と、
前記特定対象物と前記撮像手段との相対的な位置関係を算出する位置関係算出手段と、
少なくとも前記姿勢情報に基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定する表示決定手段と、
前記位置関係算出手段により算出された位置関係に基づいて、前記表示決定手段による決定に応じた前記仮想オブジェクトの画像を生成する画像生成手段と、
前記仮想オブジェクトの画像を表示装置に表示させる表示制御手段とを備える、情報処理装置。
【請求項14】
撮像手段によって撮像された撮像画像を逐次取得する画像取得手段と、
前記撮像手段の姿勢を示す姿勢情報を取得する姿勢情報取得手段と、
前記画像取得手段によって取得された撮像画像から特定対象物を検出する特定対象物検出手段と、
前記特定対象物と前記撮像手段との相対的な位置関係を算出する位置関係算出手段と、
少なくとも前記姿勢情報に基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定する表示決定手段と、
前記位置関係算出手段により算出された位置関係に基づいて、前記表示決定手段による決定に応じた前記仮想オブジェクトの画像を生成する画像生成手段と、
前記仮想オブジェクトの画像を表示装置に表示させる表示制御手段とを備える、情報処理システム。
【請求項15】
撮像手段によって撮像された撮像画像を逐次取得する画像取得ステップと、
前記撮像手段の姿勢を示す姿勢情報を取得する姿勢情報取得ステップと、
前記画像取得ステップで取得された撮像画像から特定対象物を検出する特定対象物検出ステップと、
前記特定対象物と前記撮像手段との相対的な位置関係を算出する位置関係算出ステップと、
少なくとも前記姿勢情報に基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定する表示決定ステップと、
前記位置関係算出ステップで算出された位置関係に基づいて、前記表示決定ステップにおける決定に応じた前記仮想オブジェクトの画像を生成する画像生成ステップと、
前記仮想オブジェクトの画像を表示装置に表示させる表示制御ステップとを含む、情報処理方法。
【請求項16】
情報処理装置とマーカを備えた情報処理システムであって、
前記情報処理装置は、
前記マーカを撮像する撮像手段と、
前記撮像手段の姿勢を検出する姿勢検出手段と、
前記撮像手段によって撮像された撮像画像を逐次取得する画像取得手段と、
前記撮像手段の姿勢を示す姿勢情報を取得する姿勢情報取得手段と、
前記画像取得手段によって取得された撮像画像から前記マーカを検出するマーカ検出手段と、
前記マーカと前記撮像手段との相対的な位置関係を算出する位置関係算出手段と、
少なくとも前記姿勢情報に基づいて、仮想オブジェクトの表示態様、仮想オブジェクトの種類、仮想オブジェクトの数の少なくとも何れかを決定する表示決定手段と、
前記位置関係算出手段により算出された位置関係に基づいて、前記表示決定手段による決定に応じた前記仮想オブジェクトの画像を生成する画像生成手段と、
前記仮想オブジェクトの画像を表示装置に表示させる表示制御手段とを備える、情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
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

【図15A】
image rotate

【図15B】
image rotate

【図16A】
image rotate

【図16B】
image rotate

【図16C】
image rotate

【図16D】
image rotate

【図17】
image rotate

【図18A】
image rotate

【図18B】
image rotate

【図19】
image rotate


【公開番号】特開2012−221259(P2012−221259A)
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2011−86798(P2011−86798)
【出願日】平成23年4月8日(2011.4.8)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(599139187)株式会社クリーチャーズ (7)
【Fターム(参考)】