(58)【調査した分野】(Int.Cl.,DB名)
前記表示制御手段は、前記特定対象検出手段で検出することができる前記第1特定対象および前記第2特定対象の数が変化するような行動を前記ユーザに促す前記ガイドを表示する、請求項4に記載の情報処理プログラム。
前記仮想画像生成手段は、前記イベント発生手段で発生した前記イベントとして前記仮想空間内に配置した所定形状のオブジェクトを前記仮想カメラで撮影することにより前記仮想画像を生成する、請求項1に記載の情報処理プログラム。
前記仮想画像生成手段は、前記イベント発生手段で発生した前記イベントとして前記仮想空間内に配置した板状のポリゴンにテクスチャをマッピングして、前記仮想カメラで撮影することにより前記仮想画像を生成する、請求項6に記載の情報処理プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献1に開示してある技術は、被写体に含まれるマーカを検出し、検出したマーカに対応する位置に仮想オブジェクトを単に表示しているだけに過ぎないので、検出したマーカを利用してユーザに拡張現実を実感する視覚効果を十分に与えることができなかった。
【0005】
それゆえに、本発明は、検出したマーカ(特定対象)を利用してユーザに拡張現実を実感する視覚効果を十分に与えることができる情報処理プログラム、情報処理システム、情報処理装置および情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、以下のような構成を採用し得る。
本発明の一構成例に係る情報処理プログラムは、撮像装置および表示装置に接続された情報処理装置のコンピュータを、画像取得手段、特定対象検出手段、イベント発生手段、仮想画像生成手段、表示制御手段として機能させる。画像取得手段は、撮像装置により撮像した被写体の画像を取得する。特定対象検出手段は、画像取得手段で取得した被写体の画像から特定対象を検出する。イベント発生手段は、特定対象検出手段で検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生する。仮想画像生成手段は、イベント発生手段で発生するイベントを仮想空間内に配置された仮想カメラで撮影することにより仮想画像を生成する。表示制御手段は、被写体の画像もしくは、表示装置の画面を透過して見える被写体に重ね合わせてユーザに視認されるように、仮想画像を表示装置に表示させる。
【0007】
上記構成例によれば、検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生させるので、特定対象を利用してユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0008】
上記情報処理プログラムのさらに他の構成例として、特定対象は、第1特定対象と、第1特定対象に内包して配置された第2特定対象とを有し、イベント発生手段は、特定対象検出手段で検出することができる第1特定対象および第2特定対象の数に応じてイベントを発生する。
【0009】
上記構成例によれば、第1特定対象に内包して配置された第2特定対象を検出することで、さらに特定対象を利用してユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0010】
上記情報処理プログラムのさらに他の構成例として、イベント発生手段は、特定対象検出手段で第1特定対象および第2特定対象を検出することができたとき、第1イベントを発生し、第1イベントを発生した後、特定対象検出手段で第2特定対象のみを検出することができたとき、第2イベントを発生する。
【0011】
上記構成例によれば、検出した特定対象の数の変化に応じて異なるイベントを発
生させるので、よりユーザに拡張現実を実感する視覚効果を十分に与えることができる。例えば、第1特定対象と第2特定対象の両方を検出できたときに第1イベントを発生させ、その後に、第1特定対象に実世界のオブジェクトを配置するなどして第1特定対象を検出できず第2特定対象のみを検出できたときに第2イベントを発生したり、第1特定対象と第2特定対象の両方を検出できたときに第1イベントを発生させ、その後に、撮像装置を第2特定対象に近付けることにより第1特定対象を検出できず第2特定対象のみを検出できたときに第2イベントを発生したりして、そのイベントの仮想画像を生成して表示することにより、様々な態様でユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0012】
上記情報処理プログラムのさらに他の構成例として、表示制御手段は、特定対象検出手段で検出した第1特定対象に対応する位置にガイドを表示する。
【0013】
上記構成例によれば、第1特定対象に対応する位置にガイドを表示するので、ユーザが迷うことなく特定対象への操作を行なうことができ、その結果として、イベントを発生させることができる。
【0014】
上記情報処理プログラムのさらに他の構成例として、表示制御手段は、特定対象検出手段で検出することができる第1特定対象および第2特定対象の数が変化するような行動をユーザに促すガイドを表示する。
【0015】
上記構成例によれば、第1特定対象および第2特定対象の数が変化するような行動をユーザに促すガイドを表示するので、ユーザにイベントを発生させるヒントを与えることができる。
【0016】
上記情報処理プログラムのさらに他の構成例として、仮想画像生成手段は、イベント発生手段で発生したイベントとして仮想空間内に配置した所定形状のオブジェクトを仮想カメラで撮影することにより仮想画像を生成する。
【0017】
上記構成例によれば、イベントに応じて所定形状のオブジェクトを表示するので、特定対象に対応する位置にオブジェクトを単に表示するだけの場合に比べて、ユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0018】
上記情報処理プログラムのさらに他の構成例として、仮想画像生成手段は、イベント発生手段で発生したイベントとして仮想空間内に配置した板状のポリゴンにテクスチャをマッピングして、仮想カメラで撮影することにより仮想画像を生成する。
【0019】
上記構成例によれば、仮想空間内に配置した板状のポリゴンにテクスチャとしてマッピング
して仮想画像を生成するので、ユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0020】
上記情報処理プログラムのさらに他の構成例として、情報処理装置は、コンピュータを、被写体の画像から撮像装置と特定対象との位置関係を算出する位置算出手段、および位置算出手段で算出した位置関係に応じて仮想カメラを配置する仮想カメラ配置手段としてさらに機能させる。
【0021】
上記構成例によれば、撮像装置と特定対象との位置関係に応じて配置された仮想カメラで撮像した画像を仮想画像として生成するので、あたかもイベントが実世界で発生しているような表示ができるため、ユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0022】
上記情報処理プログラムのさらに他の構成例として、情報処理装置は、コンピュータを、被写体の画像から第1特定対象の位置を検出する第1特定対象位置検出手段、第1特定対象位置検出手段により検出された位置に基づいて、撮像装置と第1特定対象との位置関係を算出するための第1特定対象位置算出手段、および第1特定対象位置算出手段により算出された位置関係に応じて仮想カメラを配置するための仮想カメラ配置手段としてさらに機能させ、仮想画像生成手段は、イベント発生手段により発生する少なくとも第2イベントを仮想カメラで撮影することにより仮想画像を生成する。
【0023】
上記構成例によれば、第2イベントを、第1特定対象位置算出手段により算出された位置関係に応じて配置した仮想カメラで撮影することにより仮想画像を生成するので、ユーザに拡張現実を実感する視覚効果を十分に与えることができる。さらに、第2特定対象よりも大きな第1特定対象と撮像装置との位置関係により仮想カメラが配置されるため、第2特定対象と撮像装置との位置関係により仮想カメラが配置される場合に比べて、仮想画像として表示されるイベントのぶれやちらつきが低減される。
【0024】
本発明の一構成例に係る情報処理装置は、撮像装置および表示装置に接続された情報処理装置であって、画像取得手段と、特定対象検出手段と、イベント発生手段と、仮想画像生成手段と、表示制御手段とを備える。画像取得手段は、撮像装置により撮像した被写体の画像を取得する。特定対象検出手段は、画像取得手段で取得した被写体の画像から特定対象を検出する。イベント発生手段は、特定対象検出手段で検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生する。仮想画像生成手段は、イベント発生手段で発生するイベントを仮想空間内に配置された仮想カメラで撮影することにより仮想画像を生成する。表示制御手段は、被写体の画像もしくは、表示装置の画面を透過して見える被写体に重ね合わせてユーザに視認されるように、仮想画像を表示装置に表示させる。
【0025】
上記構成例によれば、検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生させるので、特定対象を利用してユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0026】
本発明の一構成例に係る情報処理方法は、撮像装置および表示装置に接続された情報処理装置の制御部によって処理される情報処理方法である。制御部が、撮像装置により撮像した被写体の画像を取得するステップと、取得した被写体の画像から特定対象を検出するステップと、検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生するステップと、発生するイベントを仮想空間内に配置された仮想カメラで撮影することにより仮想画像を生成するステップと、被写体の画像もしくは、表示装置の画面を透過して見える被写体に重ね合わせてユーザに視認されるように、仮想画像を表示装置に表示させるステップとを含む。
【0027】
上記構成例によれば、検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生させるので、特定対象を利用してユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0028】
本発明の一構成例に係る情報処理システムは、被写体に配置してある特定対象と、被写体を撮像する撮像装置と、撮像装置に接続された情報処理装置と、情報処理装置に接続した表示装置とを備える情報処理システムである。情報処理装置は、撮像装置により撮像した被写体の画像を取得するための画像取得手段と、画像取得手段で取得した被写体の画像から特定対象を検出する特定対象検出手段と、特定対象検出手段で検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生するイベント発生手段と、イベント発生手段で発生するイベントを仮想空間内に配置された仮想カメラで撮影することにより仮想画像を生成する仮想画像生成手段と、被写体の画像もしくは、表示装置の画面を透過して見える被写体に重ね合わせてユーザに視認されるように、仮想画像を表示装置に表示させる表示制御手段とを備える。
【0029】
上記構成例によれば、検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生させるので、特定対象を利用してユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【発明の効果】
【0030】
本発明によれば、検出することができる特定対象の数の変化に応じて仮想空間内にイベントを発生させるので、特定対象を利用してユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【発明を実施するための形態】
【0032】
(ゲーム装置の構成)
以下、本発明の一実施形態に係るゲーム装置について説明する。ゲーム装置10は携帯型のゲーム装置である。
図1は、本発明の実施の形態に係るゲーム装置10の開状態における正面図である。
図2は、本発明の実施の形態に係るゲーム装置10の閉状態における左側面図である。
図3は、本発明の実施の形態に係るゲーム装置10の閉状態における正面図である。
図4は、本発明の実施の形態に係るゲーム装置10の閉状態における右側面図である。
図5は、本発明の実施の形態に係るゲーム装置10の閉状態における背面図である。
【0033】
図1および
図2〜
図5に示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。
【0034】
(下側ハウジングの説明)
図1および
図2〜
図5に示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられている。
【0035】
タッチパネル13は、下側LCD12の画面上に装着されている。下側ハウジング11の上側面には、タッチペン28を収納するための挿入口17(
図1および
図5に示す点線)が設けられている。
【0036】
下側ハウジング11の内側面(主面)には、十字ボタン(方向入力ボタン)14A、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられている。
【0037】
アナログスティック15は、方向を指示するデバイスである。
下側ハウジング11の内側面には、マイクロフォン用孔18が設けられている。マイクロフォン用孔18の下部に
は音声入力装置としてのマイク42(
図6参照)が設けられている。
【0038】
図3および
図5に示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。また、
図2に示されるように、下側ハウジング11の左側面には、ゲーム装置10が備えるスピーカ43(
図6参照)の音量を調整するための音量ボタン14Iが設けられている。
【0039】
図2に示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられている。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタが設けられている。
【0040】
図5に示されるように、下側ハウジング11の上側面には、外部メモリ44を挿入するための挿入口11Dが設けられている。
【0041】
図1および
図4に示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられている。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられている(
図4参照)。
【0042】
(上側ハウジングの説明)
図1および
図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられている。
【0043】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。具体的に、上側LCD22は、パララックスバリア方式の裸眼立体視可能な表示装置である。上側LCD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある画像(立体視画像(3D画像))を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる。このように、上側LCD22は、立体視画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、たとえば、後述する3D調整スイッチ25によって行われる。
【0044】
外側撮像部23は、上側ハウジング21の外側面21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。
【0045】
内側撮像部24は、上側ハウジング21の内側面21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。
【0046】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体画像の見え方が調整される。
【0047】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示すLEDである。
【0048】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられている。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0049】
(ゲーム装置10の内部構成)
次に、
図6は、本発明の実施の形態に係るゲーム装置10の内部構成を示すブロック図である。
図6を参照して、ゲーム装置10の内部の電気的構成について説明する。
図6に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。
【0050】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312、VRAM(Video RAM)313を含む。CPU311は、ゲーム装置10内のメモリ(たとえば、外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、CPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。GPU312は、CPU311からの命令に応じて画像を生成し、VRAM313に描画する。VRAM313に描画された画像は、上側LCD22及び/又は下側LCD12に出力され、上側LCD22及び/又は下側LCD12に当該画像が表示される。
【0051】
外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0052】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶装置である。
【0053】
外部メモリ44は、情報処理部31によって実行されるプログラム等を記憶するための不揮発性の記憶装置である。外部メモリ44は、たとえば読み取り専用の半導体メモリで構成される。
【0054】
データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(たとえば、NAND型フラッシュメモリ)で構成され、任意のデータを保存するために用いられる。
【0055】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(たとえば、NAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。たとえば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0056】
無線通信モジュール36は、たとえばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(たとえば、独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。
【0057】
加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
【0058】
RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0059】
I/F回路41には、タッチパネル13、マイク42およびスピーカ43が接続される。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0060】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。
【0061】
下側LCD12および上側LCD22は情報処理部31に接続される。具体的に、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右目用画像と左目用画像とが、上側LCD22に出力される。より具体的に、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素
が縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
【0062】
外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
【0063】
3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0064】
情報処理部31は、3Dインジケータ26の点灯を制御する。たとえば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。
【0065】
(ゲームの概要)
次に、
図7〜
図12は、本発明の実施の形態に係るゲーム装置10のゲームプレイ中におけるゲーム画像例を示す図である。
図7〜
図12を参照して、ゲーム装置10において実行されるゲームの概要を説明する。このゲームは、ゲームソフトに同梱されているノートに描かれている所定の模様(文字、数字、記号、その他の図柄)のマーカ50(外マーカ50a、内マーカ50b)を、ゲーム装置10の外側撮像部23で撮像しながらプレイする、拡張現実技術を利用したゲームである。
【0066】
図7に示すゲーム画像例は、ゲームの開始直後、マーカ50を検出するときに上側LCD22および下側LCD12に表示されるゲーム画像を示している。
【0067】
上側LCD22には、外側撮像部23によって現在撮像されているノート(被写体)の画像と、ノートに描かれているマーカ50の画像が表示されている。この例では、マーカ50は、外マーカ50a(第1特定対象)と、外マーカ50aに内包して配置された内マーカ50b(第2特定対象)とを有している。
【0068】
下側LCD12には、マーカ50を検出中であることを示す情報(たとえば、「マーカ検出中」)が表示される。ゲーム装置10がマーカ50を検出することができなかった場合、ゲーム装置10は、下側LCD12に、「マーカを検出することができませんでした。再度マーカを検出する処理を行なってください。」などの情報を表示してもよい。ゲーム装置10がマーカ50を検出することができた場合、ゲーム装置10は、下側LCD12に、「マーカを検出することができました。」などの情報を表示してもよい。
【0069】
ゲーム装置10は、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができた場合、第1イベントを発生する。ゲーム装置10は、発生した第1イベントにより、上側LCD22の外マーカ50a内の領域で動画を再生し、その後、
図8に示すように外マーカ50a内に配置されたボタンオブジェクト60を表示する。
【0070】
上側LCD22に表示されたボタンオブジェクト60は、ユーザを第2イベントに移行させるためのガイドであり、外マーカ50aに対応する位置に表示される。なお、ゲーム装置10は、ボタンオブジェクト60を表示するだけではユーザが次に行なう行動を理解できない場合もあるので、ユーザに行動を促すため「ボタンを押してください。」などの情報を下側LCD12に表示してもよい。つまり、マーカの数が変化するような行動をユーザに促すガイドを表示することで、ユーザにイベントを発生させるヒントを与えることができる。
【0071】
次に、
図9に示すようにユーザが上側LCD22に表示されたボタンオブジェクト60を押した場合、ゲーム装置10は、外マーカ50aの一部がユーザの手で隠れて外マーカ50aを検出することができない。なお、ゲーム装置10は、マーカ50を検出することができるか否かの判断を、以下の検出処理により行なう。
【0072】
ゲーム装置10は、マーカ50の画像から、エッジ検出処理により、一連のエッジ画素を検出して、一連のエッジ画素に基づいて4辺の直線を得る。この際、4つの直線の隣り合う2つの直線の交点を検出して、4つの頂点を算出する。このように4つの頂点を算出することにより、たとえば、外マーカ50aの外枠の一部を手で隠したとしても、4つの頂点を得ることができる。
【0073】
次に、ゲーム装置10は、外マーカ50aの内部(上記4頂点に囲まれる領域)の画像を抽出し、抽出した画像のデータとゲームプログラム内に予め記憶されているパターンデータとを比較して類似度を算出し、算出した類似度が所定値以上である場合に、そのパターンデータに応じた外マーカ50aを検出したと判断する。
【0074】
そして、4頂点から現実空間における外側撮像部23と外マーカ50aとの位置関係が算出され、この算出結果に基づいて、仮想空間における仮想カメラの位置および姿勢が算出される。現実空間における外側撮像部23と外マーカ50aとの位置関係と仮想カメラと仮想空間内のマーカとの位置関係が対応するように、仮想カメラが設置される。
【0075】
ゲーム装置10は、外マーカ50aの一部がユーザの手で隠れた外マーカ50aの内部の画像を抽出し、抽出した画像のデータとゲームプログラム内に予め記憶されているパターンデータとを比較して類似度を算出し、算出した類似度が所定値より小さいと判断すると、外マーカ50aを検出することができないと判断する。
【0076】
なお、ゲーム装置10は、外マーカ50aを検出することができないと判断しても、外マーカ50aの4つの頂点を得ることができる。そのため、第2イベントの処理で、内マーカ50bしか検出されていない場合であっても、仮想カメラの設定が外マーカ50aの4頂点に基づいて行われていれば、仮に、内マーカ50bの4頂点に基づいて仮想カメラの設定を行った場合に比べて4頂点の位置が安定し、表示される仮想オブジェクトのちらつきを低減することができる。
【0077】
また、ゲーム装置10
によるマーカ50を検出することができるか否かの判断は、前述の方法に限定されるものではなく、たとえば、マーカ50のすべての辺を認識できているか否かにより判断する方法であってもよい。たとえば、外マーカ50aの一部がユーザの手で隠れて外マーカ50aの4辺のうち1辺が認識できない場合、ゲーム装置10は、外マーカ50aを検出することができないと判断する。
【0078】
ゲーム装置10は、ユーザがボタンオブジェクト60を押すことで、外マーカ50aの一部がユーザの手で隠れて外マーカ50aを検出することができなくなると、検出することができるマーカ50の数が変化する。つまり、ゲーム装置10は、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができていた状態で、ユーザがボタンオブジェクト60を押すと、外マーカ50aを検出することができなくなり、内マーカ50bのみを検出することができる状態となる。
【0079】
ゲーム装置10は、第1イベントの処理を終了した後、検出することができるマーカ50の数が変化すると、第2イベントを発生する。発生した第2イベントにより、上側LCD22には、
図10に示すように、内マーカ50b内にキャラクタオブジェクト61が表示される。なお、ゲーム装置10は、ユーザを第3イベントに移行させるため、「ボタンから手を離してください。」などの情報を下側LCD12に表示してもよい。
【0080】
次に、
図11に示すようにユーザが上側LCD22に表示されたボタンオブジェクト60から手を離した場合、ゲーム装置10は、ユーザの手で隠れていた外マーカ50aの一部を再び認識することができるので、外マーカ50aを検出することができる。
【0081】
ゲーム装置10は、ユーザがボタンオブジェクト60から手を離すことで、ユーザの手で隠れていた外マーカ50aの一部を再び認識して外マーカ50aを検出することができると、検出することができるマーカ50の数が変化する。つまり、ゲーム装置10は、内マーカ50bのみのマーカを検出することができていた状態で、ユーザがボタンオブジェクト60から手を離すと、外マーカ50aを再び検出することができ、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができる状態となる。
【0082】
ゲーム装置10は、第2イベントの処理を終了した後、検出することができるマーカ50の数が変化すると、第3イベントを発生する。発生した第3イベントにより、上側LCD22には、
図12に示すように、キャラクタオブジェクト61がユーザの離した手の方向に動く様子が表示される。
【0083】
(ゲーム装置10の動作)
次に、ゲーム装置10の動作についてより詳細に説明する。
【0084】
図13は、本発明の実施の形態に係るゲーム装置10のメインメモリ32のメモリマップを示す概略図である。
【0085】
図13に示すメインメモリ32は、ゲームプログラムD11、動画情報D12、仮想オブジェクト情報D13、左被写体画像D14、右被写体画像D15、仮想カメラ情報D16、左仮想空間画像D17、右仮想空間画像D18などを含む。
【0086】
ゲームプログラムD11は、ゲームの実行に先立って外部メモリ44またはデータ保存用内部メモリ35等から読み出されて、メインメモリ32に格納される。なお、無線通信機能を使ってサーバ装置または他のゲーム装置からゲームプログラムD11を受信して、メインメモリ32に格納してもよい。
【0087】
動画情報D12は、第1イベントなどで表示する動画情報であり、H.264、MPEG−4 AVCなどの動画圧縮規格に基づいて圧縮した動画情報である。
【0088】
仮想オブジェクト情報D13は、仮想空間に配置される各種仮想オブジェクト(ボタンオブジェクト60や、キャラクタオブジェクト61)に関連する情報であって、仮想オブジェクトの形状、色、模様、位置、姿勢などの情報を含んでいる。キャラクタオブジェクト61については、移動方向および移動速度の情報も含まれている。
【0089】
左被写体画像D14は、外側撮像部(左)23aによって撮像された被写体の画像であり、右被写体画像D15は、外側撮像部(右)23bによって撮像された被写体の画像である。
【0090】
仮想カメラ情報D16は、立体視画像を生成する際に用いられる一対の仮想カメラ(後述する左仮想カメラおよび右仮想カメラ)に関する情報であって、仮想空間における各仮想カメラの位置や姿勢などの情報を含んでいる。
【0091】
左仮想空間画像D17は、左仮想カメラに基づいて描画された仮想画像であり、右仮想空間画像D18は、右仮想カメラに基づいて描画された仮想画像である。
【0092】
次に、
図14は、本発明の実施の形態に係るゲーム装置10の動作を説明するためのフローチャートである。
図14を参照して、ゲームプログラムD11に基づいてCPU311によって実行されるゲーム処理の流れについて説明する。当該ゲーム処理は、たとえば、外側撮像部23によって被写体を撮像している状態で、操作ボタン14のボタン14Bが押下されたときに開始される。
【0093】
まず、CPU311は、外側撮像部(左)23aおよび外側撮像部(右)23bから、最新の左被写体画像D14および右被写体画像D15を取得して、メインメモリ32に格納する(ステップS11)。
【0094】
次に、CPU311は、取得した被写体の画像からマーカ50を検出する(ステップS12)。当該マーカ検出処理では、左被写体画像D14および右被写体画像D15のそれぞれにおけるマーカ50を検出する。たとえば、左被写体画像D14および右被写体画像D15に対して、それぞれエッジ検出処理およびパターンマッチング処理を行うことによって、左被写体画像D14および右被写体画像D15のそれぞれにおけるマーカ50を検出する。ここで、エッジ検出処理は、左被写体画像D14および右被写体画像D15から、マーカ50の輪郭を表す一連のエッジ画素を検出し、一連のエッジ画素に基づいて複数の直線を生成して輪郭の頂点を検出する。
【0095】
次に、CPU311は、マーカ50の4頂点から現実空間における外側撮像部23とマーカ50との位置関係
を算出
し、この算出結果に基づいて、仮想空間における仮想カメラの位置および姿勢
を算出して、現実空間における外側撮像部23と外マーカ50aとの位置関係と仮想カメラと仮想空間内のマーカとの位置関係が対応するように、仮想カメラが設置される(ステップS13)。上記位置関係から仮想カメラの位置を算出する処理は、従来の拡張現実感技術における処理と同様であってもよい。なお、仮想空間における仮想カメラの位置および姿勢
を算出、および仮想カメラを設置する処理は、一定間隔で行われており、後述する各イベントの処理中でも行われている。しかし、以降のフローチャートでは、省略して記載していない場合もあるが、当該処理は、後述する各イベントの処理中を含む一定間隔で行われているものとする。また、このとき、マーカ50bについても同様の処理を行い、現実空間における外側撮像部23と内マーカ50bとの位置関係と仮想カメラと仮想空間内のマーカ50bとの位置関係が対応するように、上記仮想カメラとは別の仮想カメラ
が仮想空間内
に配置されるようにして、後述のステップS17
2において、その仮想カメラが用いられてもよい。
【0096】
マーカ50は、
図7に示したように、外マーカ50aと、外マーカ50aに内包して配置された内マーカ50bとを有している。なお、マーカ50は、外マーカ50aおよび内マーカ50bを有する場合に限定されるものではなく、外マーカ50aに複数の内マーカ50bを内包する場合や、内マーカ50bにさらにマーカを内包する場合などであってもよい。
【0097】
マーカ50が外マーカ50aおよび内マーカ50bを有する場合、CPU311は、エッジ検出処理およびパターンマッチング処理を行うことによって外マーカ50aを検出した後、エッジ検出処理およびパターンマッチング処理を再度行うことによって内マーカ50bを検出する。なお、CPU311は、エッジ検出処理およびパターンマッチング処理を1度行うことによって外マーカ50aおよび内マーカ50bを一緒に検出してもよい。
【0098】
次に、CPU311は、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができたか否かを判断する(ステップS14)。CPU311は、外マーカ50aおよび内マーカ50bの2つのマーカ50を検出することができなかったと判断した場合(ステップS14:NO)、処理をステップS12に戻して、取得した被写体の画像からマーカ50を検出する処理を継続する。CPU311は、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができたと判断した場合(ステップS14:YES)、第1イベントを発生する(ステップS15)。
【0099】
次に、発生した第1イベントの処理について説明する。
図15は、本発明の実施の形態に係るゲーム装置10の第1イベントの処理を説明するためのフローチャートである。まず、CPU311は、メインメモリ32から動画情報D12を読出し、外マーカ50a内の領域で動画を再生する(ステップS151)。具体的に、外マーカ50a内の領域で動画を再生する方法について説明する。CPU311は、発生した第1イベントに応じて仮想空間内に板状のポリゴンを配置する。CPU311は、配置した板状のポリゴンにテクスチャとして動画情報D12の画像をマッピングして、それを仮想カメラで撮影することで仮想画像を生成する。CPU311は、生成した仮想画像を、被写体の画像に重ね合わせてユーザに視認されるように、仮想画像を上側LCD22に順次表示させることで、動画を再生する。
【0100】
CPU311は、動画を再生後、メインメモリ32の仮想オブジェクト情報D13からボタンオブジェクト60を読出し、読出したボタンオブジェクト60を配置した後、仮想カメラでボタンオブジェクト60を含む仮想空間を撮像して仮想空間内の仮想画像を生成し、被写体の画像と仮想画像とを合成し、上側LCD22に表示する(ステップS152)。
【0101】
第1イベントの処理は、上側LCD22にボタンオブジェクト60を表示することで終了する。CPU311は、上側LCD22にボタンオブジェクト60を表示することで、ボタンオブジェクト60を押す動作をユーザに促している。なお、CPU311は、第1イベントの処理を終了した後、マーカ50を検出する処理を継続的に行なっているものとする。そのため、ユーザがボタンオブジェクト60を押すことで、外マーカ50aの一部がユーザの手で隠れて外マーカ50aを検出することができなくなる。つまり、CPU311は、内マーカ50bのみを検出することができたか否かを判断することで、ユーザがボタンオブジェクト60を押したか否かを判断することができる。
【0102】
図14に戻って、CPU311は、内マーカ50bのみを検出することができたか否かを判断する(ステップS16)
。CPU311は、内マーカ50bのみを検出することができないと判断した場合(外マーカ50aおよび内マーカ50bの2つのマーカを検出することができたと判断した場合や、外マーカ50aおよび内マーカ50bのいずれのマーカも検出することができないと判断した場合)(ステップS16:NO)、マーカ50を検出する処理を継続する。CPU311は、内マーカ50bのみを検出することができたと判断した場合(ステップS16:YES)、第2イベントを発生する(ステップS17)。
【0103】
次に、発生した第2イベントの処理について説明する。
図16は、本発明の実施の形態に係るゲーム装置10の第2イベントの処理を説明するためのフローチャートである。
【0104】
CPU311は、外マーカ50aの中心を原点とした仮想空間内の当該原点を基準とした所定の位置に、キャラクタオブジェクト61を配置する(ステップS171)。
【0105】
CPU311は、キャラクタオブジェクト61を配置した後、仮想カメラでキャラクタオブジェクト61を含む仮想空間を撮像して仮想空間内の仮想画像を生成する(ステップS172)。具体的に、CPU311は、左仮想カメラに基づいて仮想オブジェクト(キャラクタオブジェクト61など)を描画することによって左仮想空間画像D17を生成し、右仮想カメラに基づいて仮想オブジェクトを描画することによって右仮想空間画像D18を生成する。なお、仮想空間の描画処理は、典型的には、CPU311の指示に従ってGPU312が行う。
【0106】
CPU311は、仮想画像を生成した後、被写体の画像と仮想画像とを合成し、上側LCD22に表示する(ステップS173)。具体的に、CPU311は、左被写体画像D14に左仮想空間画像D17(すなわち、左仮想カメラに基づいて描画されたキャラクタオブジェクト61)を上書きし、右被写体画像D15に右仮想空間画像D18(すなわち、右仮想カメラに基づいて描画されたキャラクタオブジェクト61)を上書きする。そして、合成された画像は、上側LCD22に表示される。つまり、CPU311は、左被写体画像D14と左仮想空間画像D17とを合成した画像を左目用画像とし、右被写体画像D15と右仮想空間画像D18とを合成した画像を右目用画像として、上側LCD22に3D画像を表示する。
【0107】
第2イベントの処理は、上側LCD22にキャラクタオブジェクト61を表示することで終了する。なお、CPU311は、第2イベントの処理を終了した後、マーカ50を検出する処理を継続的に行なっているものとする。そのため、ユーザがボタンオブジェクト60から手を離すことで、ユーザの手で隠れた外マーカ50aの一部が再び認識され、外マーカ50aを再び検出することができるようになる。つまり、CPU311は、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができたか否かを判断することで、ユーザがボタンオブジェクト60から手を離したか否かを判断することができる。
【0108】
図14に戻って、CPU311は、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができたか否かを判断する(ステップS18)。CPU311は、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができなかったと判断した場合(ステップS18:NO)、マーカ50を検出する処理を継続する。CPU311は、外マーカ50aおよび内マーカ50bの2つのマーカを検出することができたと判断した場合(ステップS18:YES)、第3イベントを発生する(ステップS19)。
【0109】
次に、発生した第3イベントの処理について説明する。
図17は、本発明の実施の形態に係るゲーム装置10の第3イベントの処理を説明するためのフローチャートである。まず、CPU311は、配置したキャラクタオブジェクト61を移動する(ステップS191)。具体的に、CPU311は、メインメモリ32から読出した仮想オブジェクト情報D13に基づいて、キャラクタオブジェクト61の移動方向および移動速度を決定する。たとえば、CPU311は、ユーザが押したボタンオブジェクト60の方向に、ゆっくりとした速度でキャラクタオブジェクト61を移動させると決定する。そして、CPU311は、決定に基づいてキャラクタオブジェクト61を移動させた場合、移動させたキャラクタオブジェクト61の位置を更新する。
【0110】
CPU311は、仮想カメラで移動するキャラクタオブジェクト61を含む仮想空間を撮像して仮想空間内の仮想画像を生成する(ステップS192)。具体的に、CPU311は、左仮想カメラに基づいて移動するキャラクタオブジェクト61を描画することによって左仮想空間画像D17を生成し、右仮想カメラに基づいて移動するキャラクタオブジェクト61を描画することによって右仮想空間画像D18を生成する。
【0111】
なお、仮想カメラは、第2イベントの処理で配置した仮想カメラを用いることで、再度配置する必要はない。再度仮想カメラを配置する場合、CPU311は、外側撮像部23a,23bとマーカ50との位置関係を再度算出し、再度算出した位置関係に基づいて仮想空間に一対の仮想カメラ(左仮想カメラおよび右仮想カメラ)を再度配置する。
【0112】
CPU311は、仮想画像を生成した後、被写体の画像と仮想画像とを合成し、上側LCD22に表示する(ステップS193)。具体的に、CPU311は、左被写体画像D14に、左仮想カメラに基づいて描画された移動するキャラクタオブジェクト61を順次上書し、右被写体画像D15に、右仮想カメラに基づいて描画された移動するキャラクタオブジェクト61を順次上書きすることで、ユーザに、仮想空間内をキャラクタオブジェクト61が移動していると認識させることができる。なお、同様に、合成された画像は、上側LCD22に表示される。つまり、CPU311は、左被写体画像D14と左仮想空間画像D17とを合成した画像を左目用画像とし、右被写体画像D15と右仮想空間画像D18とを合成した画像を右目用画像として、上側LCD22に3D画像を表示する。
【0113】
図14に戻って、CPU311は、第3イベントの処理を終了した後、ゲームを終了する。なお、CPU311は、ゲームを終了せずに、処理をステップS12に戻して、取得した被写体の画像からマーカ50を検出する処理を継続してもよい。
【0114】
以上のように、本発明の実施の形態に係るゲーム装置10は、外側撮像部23により撮像した被写体の画像を取得し、取得した被写体の画像からマーカ50を検出し、検出することができるマーカ50の数の変化に応じて仮想空間内にイベントを発生し、発生するイベントを仮想空間内に配置された仮想カメラで撮影することにより仮想画像を生成し、被写体の画像に重ね合わせてユーザに視認されるように、仮想画像を上側LCD22に表示させるので、マーカ50を利用してユーザに拡張現実を実感する視覚効果を十分に与えることができる。
【0115】
(変形例)
なお、上記実施形態では、外マーカ50aの一部をユーザの手で隠すことで外マーカ50aを検出することができずに、検出することができるマーカ50の数を変化させる場合について説明したが、本発明に係るゲーム装置10は、これに限定されるものではない。たとえば、ゲーム装置10は、外側撮像部23によって撮像するマーカ50の数を変化させることで、検出することができるマーカ50の数を変化させてもよい。
図18および
図19は、本発明の実施の形態の変形例に係るゲーム装置10のゲームプレイ中におけるゲーム画像例を示す図である。
【0116】
図18に示すように、ゲーム装置10は、外側撮像部23によって現在撮像されている被写体の画像に外マーカ50aおよび内マーカ50bが含まれるように、被写体を撮像する。つまり、ゲーム装置10は、被写体との距離を十分にとって、被写体を撮像する。このとき、ゲーム装置10は、被写体の画像に外マーカ50aおよび内マーカ50bが含まれているので、外マーカ50aおよび内マーカ50bを検出することができる。
【0117】
次に、ユーザは、ゲーム装置10を被写体に対して近づける。ゲーム装置10は、
図19に示すように被写体に対して近づけると、外側撮像部23によって現在撮像されている被写体の画像に内マーカ50bのみが含まれるように、被写体を撮像することになる。このとき、ゲーム装置10は、被写体の画像に内マーカ50bのみが含まれているので、外マーカ50aを検出することができず、内マーカ50bのみを検出することができる。ゲーム装置10は、検出することができるマーカ50の数が変化すると、イベントを発生する。発生したイベントにより、上側LCD22には、
図19に示すように、内マーカ50b内にキャラクタオブジェクト61が表示される。
【0118】
以上のように、ゲーム装置10は、被写体に対して近づけることで、検出することができるマーカ50の数を変化させることができる。なお、ゲーム装置10は、被写体に対して遠ざけ
ることで、内マーカ50bを検出することができない大きさにして、検出することができるマーカ50の数を変化させることもできる。また、ゲーム装置10は、被写体に対する距離を変えずに、外マーカ50aの一部をフレーム外となるように移動させても、検出することができるマーカ50の数を変化させることもできる。
【0119】
また、上記実施形態では、外側撮像部23によって撮像された被写体画像に仮想画像を合成して上側LCD22に表示している(ビデオシースルー方式)が、本発明はこれに限定されるものではない。本発明は、透過型の表示画面に仮想オブジェクトを表示し、当該透過型の表示画面を通じて見える被写体にあたかも仮想オブジェクトが実在するかのようにユーザに視認されるような光学シースルー方式のゲーム装置(たとえば、ヘッドマウントディスプレイを備えるゲーム装置)やゲームシステムにも適用できる。
【0120】
また、上記実施形態では、マーカ検出処理の結果に応じて、左仮想カメラの位置および姿勢と、右仮想カメラの位置および姿勢とを個別に決定しているが、他の実施形態では、マーカ検出処理の結果に応じていずれか一方の仮想カメラの位置および姿勢を決定した後、当該一方の仮想カメラの位置および姿勢から他方の仮想カメラの位置および姿勢を決定するようにしてもよい。
【0121】
また、上記実施形態では、被写体画像に含まれるマーカ50の位置および姿勢に基づいて仮想カメラの位置および姿勢を決定しているが、他の実施形態では、被写体画像に含まれるマーカ50以外の認識対象物(たとえば、顔や、手など)の位置等に応じて仮想カメラの位置等を決定してもよい。
【0122】
また、上記実施形態では、上側LCD22に立体視画像を表示する例を説明したが、本発明はこれに限らず、平面視画像を表示する場合にも本発明は適用できる。たとえば、外側撮像部(左)23aまたは外側撮像部(右)23bのいずれか一方から取得した被写体画像に基づいて仮想空間に1つの仮想カメラを配置して、上記実施形態と同様の処理を行えばよい。
【0123】
また、上記実施形態では、ゲームプログラムD11の処理がCPU(CPU311)によって実行される例を説明したが、他の実施形態では、ゲームプログラムD11の少なくとも一部の処理がハードウェアのみによって実現されてもよい。
【0124】
また、上記実施形態では、上記ゲーム例で説明したが、本発明はこれに限らず、検出することができるマーカ50の数が変化することでイベントを発生するような任意のゲームに適用可能である。また、本発明はゲームソフトウェアに限らず、任意のアプリケーションソフトウェアにも適用可能である。
【0125】
また、上記実施形態では、マーカ50が描かれているノートを用いる例を説明したが、本発明はこれに限らず、一般的なクレジットカードや名刺等のサイズのカードにマーカ50が描かれているものを用いる場合にも本発明は適用できる。このとき、マーカ50が描かれているカードを単にマーカと呼ぶようにしてもよい。
【0126】
また、上記実施形態では、携帯型のゲーム装置10について説明したが、他の実施形態では、任意の情報処理装置(据え置き型ゲーム装置、デスクトップパソコン、ノートパソコン、携帯電話など)をゲーム装置またはゲームシステムとして利用してもよい。
【0127】
また、上記実施形態では、ゲームプログラムD11の処理が1つのCPU(CPU311)によって実行される例を説明したが、他の実施形態では、ゲームプログラムD11の処理が複数のプロセッサによって分担して実行されてもよい。また、これらの複数のプロセッサは、同一の情報処理装置に内蔵されていてもよいし、サーバ装置とクライアント装置のように互いに通信可能な複数の情報処理装置に分散して設けられていてもよい。
【0128】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。