図1は本実施の形態を適用できる情報処理システムの構成例を示す。情報処理システム1は、実世界においてユーザ5が動かしたり組み立てたりすることができるブロック3a、3b、3cと、ブロック3a、3b、3cの状態などに応じた情報処理を行う情報処理装置10と、情報処理装置10に対するユーザ操作を受け付ける入力装置14と、情報処理装置10が処理した結果を画像として出力する表示装置16を含む。情報処理システム1はさらに、ブロック3a、3b、3cが置かれる面を定めるためのプレイフィールド18と、ブロック3a、3b、3cを含む実空間を撮影するカメラ122を含む。
情報処理装置10は、たとえばゲーム装置やパーソナルコンピュータであってよく、必要なアプリケーションプログラムをロードすることで情報処理機能を実現してもよい。情報処理装置10は必要に応じてネットワーク8を介し別の情報処理装置やサーバと通信を確立し、必要な情報を送受してよい。表示装置16は液晶ディスプレイ、プラズマディスプレイ、有機ELディスプレイなど一般的なディスプレイでよい。またそれらのディスプレイとスピーカを備えたテレビであってもよい。カメラ122は、CCD(Charge Coupled Device)またはCMOS(Complementary Metal Oxide Semiconductor)等の撮像素子を備えたデジタルビデオカメラであり、少なくともプレイフィールド18およびその上のブロック3a、3b、3cを含む空間の動画像を撮影する。
入力装置14は、ゲームコントローラ、キーボード、マウス、ジョイスティック、表示装置16の画面上に設けたタッチパッドなど、一般的な入力装置のいずれか、またはいずれかの組み合わせでよい。プレイフィールド18は、ブロック3a、3b、3cが置かれる面を構成する物であり、板、布、机の天板などのいずれかでよい。ブロック3a、3b、3cは図示するような直方体や円柱などの単純な形状の物でもよいし、人形やミニカーなど現実世界にある物のミニチュアやその部品、ゲームの駒など、より複雑な形状の物でもよい。またブロック3a、3b、3cのサイズ、材質、色、使用する個数は限定されない。さらに、ユーザによって組み立てられる構造としてもよいし、完成物であってもよい。
情報処理装置10は、カメラ122による撮影画像を解析し、ユーザ5、プレイフィールド18、表示装置16の画面の位置関係を取得する。そしてそのうち少なくとも二者の位置関係に基づき表示画像の構成を決定する。図1においてカメラ122は、プレイフィールド18を挟んで表示装置16と正対するユーザ5から見て右側からプレイフィールド18を臨むように1つのみ配置されているが、本実施の形態をそれに限る趣旨ではない。
すなわちカメラ122は、表示装置16、プレイフィールド18、ユーザ5の位置関係が画像解析によって取得できるような画像が撮影されれば、その配置や数は限定されない。例えば表示装置16、プレイフィールド18、ユーザ5が全て視野に入る位置にカメラ122を置くことにより、撮影画像中のそれらの像から位置関係を取得する。あるいは、カメラ122のセンサ面が表示装置16の画面と略同一平面に位置するように、カメラ122を表示装置16の上や下などに置いてもよい。この場合、表示装置16はカメラ122の視野には入らないが、撮影画像の平面を画面と見なすことにより三者の位置関係を取得できる。カメラ122をユーザ5の頭など体の一部に取り付けた場合も、同様にして三者の位置関係を取得できる。
またカメラ122を複数とすることで複数の方向から撮影するようにしてもよい。これにより、表示装置16、プレイフィールド18、ユーザ5がいずれかのカメラの撮影画像に映っているようにすれば、各撮影画像から得られる位置情報を統合して三者の位置関係を取得できる。複数のカメラの1つを、上記のように表示装置16の上や下に置いたり、ユーザ5の体に取り付けたりしてもよい。ユーザ5が大きく動くような環境においては、カメラの台数を増やすほど、オクルージョンが発生する可能性を減らすことができるため、位置関係の取得精度を維持しやすい。
なおカメラ122、または複数のカメラ122の1つをステレオカメラとすることにより被写体の奥行き方向の位置を取得し、位置関係をより厳密に取得してもよい。ステレオカメラが左右の異なる視点から撮影した画像における視差を利用して、三角測量の原理によって被写体の3次元空間での位置を取得する技術は広く知られている。あるいは両眼立体視以外の、奥行きや3次元情報取得手段を利用してもよい。例えば、視点移動カメラを用いてもよいし、赤外線照射機構とその反射光を検出する赤外線センサを用い、TOF(Time Of Flight)の手法によって位置を特定してもよい。
情報処理装置10と、カメラ122あるいは表示装置16との接続は、有線、無線を問わず、また種々のネットワークを介していてもよい。あるいはカメラ122、情報処理装置10、表示装置16のうちいずれか2つ、または全てが組み合わされて一体的に装備されていてもよい。ブロック3a、3b、3cの内部に通信機構を設け、Bluetooth(ブルートゥース)(登録商標)プロトコルやIEEE802.11プロトコルなどを用いて情報処理装置10と無線で通信できるようにしてもよい。あるいはブロック3a、3b、3cと情報処理装置10をケーブルで接続してもよい。
図1の例では、プレイフィールド18におけるブロック3a、3b、3cが鏡に映っているような画像を表示装置16に表示している。一般的な技術では、例えばカメラ122を表示装置16の上などに置いてプレイフィールド18を撮影した画像を左右反転させることにより、図示するような画像が得られる。一方、本実施の形態では、プレイフィールド18および表示装置16の位置関係に基づき実空間を模した仮想空間にブロック3a、3b、3cを表すオブジェクトを配置する。そしてそれに対する仮想的な視点や投影面を、ユーザ5や表示装置16の位置などに基づき適宜設定することにより表示画像を描画する。また当該仮想空間に、実世界には存在しない仮想世界も構築しそれを描画対象とする。
図2は、図1の態様において構築する仮想空間の例を説明するための図である。まず撮影画像には、カメラ122の視点から見たプレイフィールド18および表示装置16の像が含まれる。これらの像を抽出し、その輪郭形状などに基づき適宜設定した仮想空間のワールド座標系に、抽出した像を当てはめることにより、ブロックが置かれている面および領域、表示画面の面および領域を設定する。同図ではカメラ122から見て手前右側にあるプレイフィールド18の頂点を原点とし、プレイフィールド18の面をxy面、表示装置16の画面の縦方向をz軸とするワールド座標系を設定している。ただし座標系をこれに限定する趣旨ではない。
プレイフィールド18と表示装置16の像を撮影画像から高精度に検出するため、それらの特定の箇所に検出用のマーカーをつけてもよい。図2の例では、プレイフィールド18を構成する矩形の4隅のうち3つの隅にマーカー15a、15b、15cが付けられ、表示装置16の画面の4隅のうち3つの隅にマーカー12a、12b、12cが表示されている。プレイフィールド18のマーカー15a、15b、15cは、プレイフィールド18が布や板などであれば印刷したり貼り付けたりしてもよいし、机の天板であれば所定の位置にカードを置くなどしてもよい。
表示装置16のマーカー12a、12b、12cは、表示画像に含めてもよいし、表示装置16の枠などに取り付けてもよい。マーカーは所定の形状および色の図形、模様、マークでもよいし、2次元バーコードなどでもよい。撮影画像からこのようなマーカーの像を検出することにより、それをよりどころにプレイフィールド18の領域、表示装置16の画面の領域を容易に特定できる。なお一部の箇所にマーカーを付ける代わりに、プレイフィールド18全体を、周囲と異なる所定の色や模様としたり、周囲に対する表示装置16の画面の輝度値の差を利用したりしてもよい。
このようにして仮想空間において各面を設定したら、プレイフィールド18の像とブロック3a、3b、3cの像との位置関係に基づき、仮想空間でのプレイフィールド上にブロックを表すオブジェクトを配置する。例えば撮影画像中の像の形状に基づき、事前に登録しておいたブロックの形状に係る情報を検索することにより、各位置にあるブロックの正確な形状、ひいてはそれを表すオブジェクトモデルを特定することができる。ブロックに通信機能を設けることにより、各ブロックから送信された識別情報などに基づき、対応するオブジェクトモデルをより正確に特定してもよい。
ここでブロックから送信される情報は、ブロックの識別情報に限らず、ブロック同士の接続関係や、ブロック自身が計測した位置や傾斜角度などの物理量を含んでもよい。この場合、撮影画像の像から得られる情報と、ブロックから送信された情報を統合することにより、より詳細にブロックの状態を特定できる。ただしブロックを表すオブジェクトを表示画像に含めない態様などにおいて、ブロックの詳細な状態を必要としない場合は、処理を適宜、省略してよい。
このようにプレイフィールド18、表示装置16、ブロック3a、3b、3cからなる仮想空間を生成したら、所定の位置に仮想的な視点を置き、そこから見たブロック3a、3b、3cの画像を所定の面に投影することにより表示画像を描画する。図1に示した例ではまず、表示装置16の画面の後ろに仮想的な視点9を置き、プレイフィールド18上への視線上のオブジェクトを、表示装置16の画面、あるいはそれに平行な面に投影することにより、表示装置16側から見たブロック3a、3b、3cの画像を得る。そしてそれを左右反転させることにより、図1で示したような鏡面画像を得る。なお後述のとおり、さらにユーザの位置に応じて仮想的な視点を変化させることにより、表示画像が表す仮想世界をより臨場感のあるものとすることができる。
図3は情報処理装置10の内部回路構成を示している。情報処理装置10は、CPU(Central Processing Unit)22、GPU(Graphics Processing Unit)24、メインメモリ26を含む。CPU22は、オペレーティングシステムやアプリケーションなどのプログラムに基づいて、情報処理装置10内部の構成要素における処理や信号伝送を制御する。GPU24は画像処理を行う。メインメモリ26はRAM(Random Access Memory)により構成され、処理に必要なプログラムやデータを記憶する。
これらの各部は、バス30を介して相互に接続されている。バス30にはさらに入出力インターフェース28が接続されている。入出力インターフェース28には、USBやIEEE1394などの周辺機器インターフェースや、有線又は無線LANのネットワークインターフェースからなる通信部32、ハードディスクドライブや不揮発性メモリなどの記憶部34、表示装置16やスピーカなどの出力装置へデータを出力する出力部36、カメラ122や入力装置14からデータを入力する入力部38、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する記録媒体駆動部40が接続される。
CPU22は、記憶部34に記憶されているオペレーティングシステムを実行することにより情報処理装置10の全体を制御する。CPU22はまた、リムーバブル記録媒体から読み出されてメインメモリ26にロードされた、あるいは通信部32を介してダウンロードされた各種プログラムを実行する。GPU24は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、CPU22からの描画命令に従って描画処理を行い、表示画像を図示しないフレームバッファに格納する。そしてフレームバッファに格納された表示画像をビデオ信号に変換して出力部36などに出力する。
図4は情報処理装置10の機能ブロックの構成を示している。図4および後述する図7に示す各機能ブロックは、ハードウェア的には、図3に示したCPU22、GPU24、メインメモリ26、図6で示す各種機構などで実現でき、ソフトウェア的には記憶部34や、記録媒体駆動部40を介して記録媒体からメインメモリ26にロードされたプログラム、マイクロコンピュータに格納されたプログラムなどで実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
情報処理装置10は、ブロック3aなどからブロックに係る情報を受信するブロック情報受信部50、カメラ122から撮影画像のデータを取得する撮影画像取得部52、入力装置14が受け付けたユーザ操作に係る情報を取得する入力情報取得部54、ブロック3aから送信された情報や撮影画像に基づき実空間における物やユーザの位置関係を取得する実空間解析部56、仮想空間を構築し必要な情報処理を行う情報処理部60、情報処理の結果を表す画像を生成する表示画像生成部64を含む。情報処理装置10はさらに、ブロックに係る登録情報を格納したブロック情報記憶部58、情報処理部60が行う処理内容に応じた仮想空間の構築規則を定めた空間生成情報記憶部62、仮想空間に配置するオブジェクトモデルのデータを格納したモデル情報記憶部66を含む。
ブロック情報受信部50は、図3のCPU22、通信部32などにより実現し、ブロック3aなどと通信を確立することにより、ブロックの識別情報や接続関係に係る情報などを受信する。ここでブロックの接続関係に係る情報とは、複数のブロックが接続されている場合に、どのブロックがどの位置に接続されているかを示す情報である。具体例は後述するが、接続箇所を介してブロック間で相互通信可能に構成することにより、他のブロックが接続された時点で、そのブロックの識別情報と接続箇所の識別情報とが接続先のブロックで認識される。そのような情報が1つのブロックに集約され送信されることにより、情報処理装置10は、組み立て中のブロックセットであってもその接続状態を逐次、認識できる。
各ブロックの形状、サイズ、他のブロックが接続可能な箇所およびその識別情報は、ブロックの識別情報と対応づけてブロック情報記憶部58に格納しておく。これにより、どのような形状のブロックがどのように接続されているか、ひいては組み立てられたブロックセットの全体形状を特定できる。またブロックのいずれかに加速度センサなど各種センサを内蔵しておき、情報処理装置10への送信情報に含めることにより、ブロックセットの傾き、姿勢なども認識できる。ただしブロックが通信機構を備えない場合や、撮影画像中の像のみで形状が特定できる場合、ブロックの詳細な形状を必要としない情報処理を実施する場合などは、ブロック情報受信部50は動作しなくてもよい。
撮影画像取得部52は、図3のCPU22、通信部32などにより実現し、カメラ122に撮影の開始を要求する信号を送信するとともに、撮影の結果得られた動画像のフレームデータを所定のレートで取得する。ここで所定のレートとは、カメラ122が撮影する動画像のフレームレートでもよいし、それより小さいレートでもよい。実空間解析部56は、図3のCPU22、メインメモリ26などにより実現し、撮影画像取得部52が取得した撮影画像から、ユーザ5、プレイフィールド18、表示装置16、ブロック3aなどの像を抽出することにより、それらの位置関係を取得する。
プレイフィールド18上のブロック3aなどの位置は、撮影画像におけるそれぞれの像に基づき特定してもよいし、さらに、ブロック情報受信部50が受信した、ブロックからの情報を利用してもよい。後者の場合、撮影画像において1つのブロックの像が抽出できれば、そのブロックを基点として接続関係をたどることにより、ブロック間で通信可能な全てのブロックの形状、位置、姿勢を特定できることになる。これにより、カメラ122からの死角に位置するブロックについても特定できる。ブロック自体に位置センサを設けることにより、ブロックの位置を撮影画像の像によらず特定してもよい。特定した位置情報は情報処理部60に通知する。
入力情報取得部54は、図3の入力部38などにより実現し、入力装置14を介してユーザが行った操作の内容を情報処理部60へ供給する。この操作には、ゲームなどの処理の開始および終了要求、当該処理に対するコマンド入力などが含まれる。処理の開始および終了の要求は、撮影画像取得部52にも通知することにより、カメラ122の撮影開始および終了に反映される。
情報処理部60は、図3のCPU22、GPU24、メインメモリ26などにより実現し、入力装置14を介してユーザが要求したゲームなど各種情報処理を実行する。本実施の形態では主に、実世界と表示上の仮想世界が繋がった状態でなされるゲーム、およびブロックの状態表示や組み立てを支援する情報表示について説明するが、同様の表示態様を様々な表現や分野に応用できることは当業者には理解されるところであり、情報処理部60の処理を限定するものではない。いずれにしろ情報処理部60は、実空間解析部56が特定した、実空間における物やユーザの位置情報を利用して仮想空間を構築したうえ、それに対する仮想的な視点を設定することにより、処理内容に応じた画像表現を実現する。処理内容に応じてどのように仮想空間を構築するか、仮想的な視点をどのように設定するか、については、空間生成情報記憶部62を参照することによって決定する。
表示画像生成部64は、図3のGPU24、メインメモリ26などにより実現し、情報処理部60からの要求に従い表示画像を生成する。図1および2で説明したように、表示画像としてブロックを表すオブジェクトモデルを描画する場合は、ブロック情報記憶部58に格納しておいた各ブロックのモデルデータを利用する。ブロックを、それに対応づけられたキャラクタなど別のオブジェクトに置き換えて描画したり、ブロックの周囲の環境として仮想世界を表現したりする場合、それらのモデルデータはモデル情報記憶部66に格納しておく。
表示画像生成部64は、好適には、ユーザの移動に応じて仮想空間に対する仮想的な視点を移動させることにより表示画像を連動させる。これにより、表示装置16の画面を窓としてその奥の空間を覗いている感覚や、実際の鏡を見ている感覚を与えることができ、表示装置16の周囲の実空間と融合した画像表示を演出できる。生成された表示画像は、所定のレートで表示装置16に出力することにより、表示装置16において動画像として表示される。
次に、ブロックを接続可能としたうえ通信機構を設ける態様におけるブロックの構造について説明する。図5は本実施の形態におけるブロックの外観例を示している。ブロックは四角柱型ブロック102a、立方体型ブロック102b、円柱型ブロック102d、球型ブロック102cなど、様々な形状を有することができる。なお上述の通りブロックの形状は図示するものに限らない。また必ずしも複数の形状が含まれなくてもよい。同図では1つの形状につき1個のブロックを示しているが、当然その数は限定されない。各ブロックには所定のサイズおよび形状を有する凸部104、凹部106を設け、凹部106に凸部104を差し込むことによりブロック同士を所望の位置で連結可能に構成する。また接続部分における傾斜角度や回転角を可変とすることにより、接続後のブロックセットを変形可能としてもよい。
図6はブロックの内部構造を模式的に示している。上述のとおりブロックの形状や数は限定されないが、ここではそれらをブロック102として代表的に示している。ブロック102は、電力供給機構110、記憶機構112、通信機構114、制御機構116、および測定機構118を備える。電力供給機構110は、一般的な電池、あるいは別に設けた電源から有線または無線で電力を取得するなど、一般的な技術によりブロック102に電力を供給する。通信機構114は、接続されたブロックと接続箇所を介して通信を確立するとともに、有線または無線で情報処理装置10との接続を確立し、それぞれの間で各種信号を送受する。記憶機構112は、ブロック102自体の識別情報を記憶するメモリである。
制御機構116はマイクロコンピュータ等で実現し、通信機構114および測定機構118を制御する。測定機構118は位置センサ、加速度センサ、ジャイロセンサ、地磁気センサ、角度センサなどの各種センサのいずれかまたは組み合わせで実現し、ブロック102の位置や傾きを計測する。なお必ずしも全てのブロックが図示した構造でなくてもよい。例えば測定機構118は組み立てられたブロックセットの一部のブロックのみに搭載してもよいし、場合によってはなくてもよい。通信機構114についても、情報処理装置10との通信機能はブロックセットの1つのブロックのみが備えていてもよい。また図示した機構を全て搭載していないブロックがあってもよい。ブロックをどのような構造とするかは、情報処理装置10が行う処理の内容や求められる精度などに応じて決定する。
図7は複数のブロックを組み立ててなるブロックセット120の構成を詳細に示している。ブロックセット120は上述のとおり、個々のブロックをユーザが組み立てることによって形成される。図7ではそれぞれのブロックを第1ブロック140a、第2ブロック140b、第3ブロック140c、・・・などとしている。ここで第1ブロック140aは情報処理装置10との通信機構を有するブロックである。情報の錯綜を防ぐため、ブロックセット120を構成するブロックのうち、情報処理装置10との通信を確立するブロックは、基本的には1つのみとする。そのため第1ブロック140aにハブの役割を与える。そして、当該第1ブロック140aから接続関係の遠いブロックから情報を伝達し、第1ブロック140aにブロックセット120全体の情報を集約させる。
以下、ブロックの連結において第1ブロック140aに相対的に近いブロックを「上位」、遠いブロックを「下位」とする。第1ブロック140aとなるブロックはあらかじめ1つに定めておいてもよいし、情報処理装置10との通信機構を有するブロックに図示しないスイッチなどを設け、ユーザがオンにしたブロックを第1ブロック140aとしてもよい。または組み立て段階において情報処理装置10と最初に通信を確立したブロックを第1ブロック140aとしてもよい。
このようにして決定した第1ブロック140aに、ユーザが別のブロックを接続すると、当該ブロックは第2ブロック140bとなる。第2ブロック140bにさらに別のブロックを接続すると、当該ブロックは第3ブロック140cとなる。なお同図では3つのブロックのみを示しているが、上述のとおり接続するブロックの数は限定されず、1つ、あるいは4つ以上でも、構成および動作は同様に考えることができる。
第1ブロック140a、第2ブロック140b、第3ブロック140cはそれぞれ、情報受信部142a、142b、142c、要素情報取得部144a、144b、144c、情報送信部146a、146b、146cを備える。情報受信部142a、142b、142cは、直接接続された下位のブロックから送信された情報を受信する。ここで受信する情報は、当該ブロックより下位に接続されているブロックの識別番号、接続箇所の識別番号、内蔵するセンサによる計測結果を含む。複数のブロックが接続されている場合は、最下位のブロックからブロックを通過するごとに情報が重畳される。
要素情報取得部144a、144b、144cは、当該ブロックが内蔵しているセンサおよび他のブロックを接続する箇所に設けた端子を含み、センサの計測結果、および下位のブロックが接続している箇所に係る情報を取得する。情報送信部146a、146b、146cは、情報受信部142a、142b、142cが受信した、それより下位のブロックの識別番号、接続箇所の識別番号、内蔵するセンサによる計測結果を含む情報に、当該ブロックの要素情報取得部144a、144b、144cが取得した情報を追加し、直接接続された上位のブロックに信号として送信する。ただし第1ブロック140aの情報送信部146aは、当該情報を情報処理装置10に送信する。
図8はブロックセット120における情報伝達経路と伝達される情報の例を模式的に示している。情報伝達経路150において内部に数字の書かれた円はそれぞれがブロックを表しており、円間の直線はブロックが連結されている状態を表している。また円内の数字は各ブロックの識別番号とする。識別番号「1」のブロックは図7の第1ブロック140aに対応し、情報処理装置10と通信を確立する。さらに図8における識別番号「2」、「3」のブロックは識別番号1のブロックに直列に接続されていることから、図7における第2ブロック140b、第3ブロック140cにそれぞれ対応すると捉えることができる。
一方、1つのブロックに複数のブロックが連結することも考えられる。図8の例では識別番号「1」のブロックに識別番号「2」のブロック、「5」のブロックが接続されている。識別番号「2」のブロックには上述のとおり、識別番号「3」のブロック、「4」のブロックがこの順で直列に接続されている。識別番号「5」のブロックには、識別番号「6」のブロックと「7」のブロックが並列に接続されている。この例ではさらに、識別番号「6」のブロックに、識別番号を持たないブロックが接続され、そのブロックに識別番号「8」のブロックが接続されている。ここで識別番号を持たないブロックとは、図6で示したような機構を備えないブロックである。
上述のとおり情報伝達は基本的に、下位のブロックから上位のブロックへ伝達される。図8では、伝達される情報の内容を、伝達方向を示す矢印とともに表している。例えば識別番号「3」のブロックから「2」のブロックへ伝達される情報は、[3:J2(4)]と示されている。これは「自らの識別番号:ブロックに設けられた接続箇所の識別番号(そこに接続しているブロックの識別番号)」なるフォーマットで構成される信号であり、識別番号「3」のブロックの接続箇所のうち識別番号「J2」の箇所に識別番号「4」のブロックが接続されていることを表している。ただし同図をもって情報のフォーマットや内容を限定するものではない。
ブロックの上位にあたる方向がどちらにあるかは、ハブの役割を有するブロックが、ブロックの連結によって構成されるネットワークを探索することにより、順位づけを行うなどして決定できる。このような手順は、一般的な情報処理システムを構成するデバイスツリーにおけるネットワーキング技術を適用できる。
図8において識別番号「4」のブロックは、それが属する接続系列において最下位にあるため、1つ上位の識別番号「3」のブロックへ情報を送信する。識別番号「4」のブロックには他のブロックが接続されておらず、またセンサが内蔵されていないとすると、送信される情報は自らの識別番号「4」のみとなるため、伝達内容を「[4:−]」と表している。「−」はセンサの計測結果や接続されているブロックがないことを示している。
識別番号「3」のブロックは、識別番号「4」からの信号を受信すると、それを受信した端子の番号などを接続箇所の識別番号として対応づけ、さらに自らの識別番号「3」も対応づけて、1つ上位の識別番号「2」のブロックに送信する。この信号の伝達内容は上述のとおり[3:J2(4)]となる。識別番号「2」のブロックも同様に、自らの識別番号、接続箇所の識別番号(図の例では「J5」)、接続しているブロックの識別番号「3」を対応づけた信号、すなわち[2:J5(3)]を生成する。また識別番号「2」のブロックがセンサを内蔵しているとすると、その計測結果を表す信号と自らの識別番号を対応づけた信号も生成する。同図の例では計測結果を「result」と表しているが、実際には具体的な数値がセンサの種類に応じて代入される。
識別番号「2」のブロックは、このようにして生成したデータと、下位のブロックから伝達されたデータ、すなわち[3:J2(4)]を、1つ上位の識別番号「1」のブロックに送信する。ただしこれらの信号は常に同時に送信する必要はなく、一旦送信した信号の内容に変更があったときにその情報のみを送信するなどでもよい。一方、識別番号「5」のブロックに接続された、識別番号「6」と「7」のブロックがセンサを内蔵していないとすると、これらのブロックからは、識別番号「4」のブロックと同様、[6:−]、[7:−]の信号がそれぞれ識別番号「5」のブロックに送信される。識別番号「6」のブロックには、さらに別のブロックが接続されているが、当該ブロックは識別番号や通信機構をもたず、そこからの情報は得られないものとしている。
識別番号「5」のブロックは、自らの識別番号に、接続箇所の識別番号および接続されているブロックの識別番号を対応付けた信号を生成し、1つ上位の識別番号「1」のブロックに送信する。図示するように複数のブロックが接続されている場合、それらをまとめて[5:J3(6),J8(7)]などとする。ここで「J3」、「J8」はかっこ内の識別番号のブロックが接続されている接続箇所の識別番号である。
このようにして識別番号「1」のブロックに、ブロックセット120全体の情報が集約される。識別番号「1」のブロックも他のブロックと同様、自らの識別番号に接続箇所の識別番号、それに接続されているブロックの識別番号を対応づけた信号を生成する。そして下位のブロックから送信された信号とともに情報処理装置10へ送信する。これにより情報処理装置10は、ブロックセット120を構成するブロックの識別番号、各ブロックの接続関係、センサを内蔵するブロックにおける計測結果を逐次取得することができる。
このように、ハブの役割を有するブロックを1つに定め、情報を集約させて情報処理装置10へ送信するようにすると、情報の錯綜や無駄な通信処理を防止することができる。一方、場合によっては複数のブロックから情報処理装置10へ通信するようにしてもよい。例えば図8の例では、識別番号「8」のブロックは、通信機構をもたないブロックを介して識別番号「6」のブロックに連結している。
この場合、識別番号「8」のブロックは、自らのデータを情報処理装置10へ直接送信してもよい。例えば当該ブロックが位置センサを内蔵する場合、自らの識別番号とその計測結果を直接、情報処理装置10へ送信することにより、情報処理装置10は、識別番号「6」のブロックより先に連結しているブロックが存在することを把握でき、さらに当該ブロックの形状、およびおよその接続状況を推測することができる。カメラ122による撮影画像中の像から得られる情報と統合することにより、位置の特定精度がさらに向上する。
このような構成により通信機構をもたないブロックを連結可能にすると、コストを増大させることなく組み立て後の形状のバリエーションを増やすことができる。なお識別番号「8」のブロックが、情報処理装置10との通信機構をもたないブロックであった場合は、情報処理装置10との通信機構を備えるブロックが直接的または間接的に連結されるのを待機する。そしてそのようなブロックが連結されたら、それに向かう方向を「上位」として、必要な信号を送信すれば、上述したのと同様、当該ブロックに集約された情報が、識別番号「1」とは別の経路で情報処理装置10へ送信される。
図9は、情報処理装置10のブロック情報記憶部58に格納するデータの構造例を示している。ブロック情報テーブル160は、識別番号欄162、形状欄164、サイズ欄166、接続箇所欄168を含む。識別番号欄162には、ブロックツールを構成するブロックに付与する識別番号を記載する。形状欄164には、各ブロックの形状の種類、すなわち「四角柱」、「立方体」などを記載する。サイズ欄166には各ブロックの横幅、奥行き、縦の長さを記載する。
接続箇所欄168には、各ブロックに設けられた接続箇所の位置情報を、その識別番号と対応づけて記載する。図9の例では、「接続箇所の識別番号(面の番号,当該面内でのx座標,y座標)」なるフォーマットで記載されている。面の番号は、ブロックの各面に対しあらかじめ一意に決定しておく。例えば識別番号「1」のブロックは、横幅4cm、奥行き4cm、縦の長さ8cmの四角柱型ブロックである。そして識別番号が「J1」の接続箇所は、第1面の座標(2,2)の位置にある。識別番号が「J2」の接続箇所は、第2面の座標(1,2)の位置にある。ただしここで示したフォーマットに限定する主旨ではない。このような情報テーブルを情報処理装置10で保持しておくことにより、ブロックセット120から送信された信号に基づき、当該ブロックセット120の形状および位置を算出することができる。
次に本実施の形態における表示態様について説明する。図10は実世界と表示上の仮想世界の連続性を表現する態様を説明するための図である。まず実世界172のプレイフィールド18には、ブロック176a、176b、176c、176dが置かれている。このような実世界172に対し、表示装置16の画面174を挟んで地面が繋がっているように仮想世界170を構築する。仮想世界170は実際には、情報処理装置10の情報処理部60が、画面174に画像として表示するために仮想空間に構築するデータ上の概念である。
同図の例では仮想世界170は道路、ビル、車などを含む町である。そして車や木を模したブロック176a、176b、176c、176dを置くことによりユーザが実世界172に構築した模型の町と、道路が繋がっているような構成とする。これにより実際のプレイフィールド18が狭い領域であっても、画面174の向こうにさらなる空間が広がっているような状態を演出できる。ブロック176a、176b、176c、176dの形状や配置に応じて、道路の向きを変化させたり仮想世界170で表す空間自体を全く別のものとしたりしてもよい。また仮想世界170を画面174と平行にずらしていくことにより、車を模したブロック176aが逆方向に進行しているように演出することもできる。
同様の表示態様で、実世界172における物を用いて仮想世界170における相手と対戦するゲームを実現してもよい。例えばユーザが実世界172における人形を手で動かして格闘している動作をすると、仮想世界170に存在する敵のキャラクタがそれに反応したり攻撃してきたりするような格闘ゲームを実現する。この場合、人形の動きは、撮影画像中の像の動きに加え、人形を構成するブロックから送信される情報を用いることにより精度よく特定できる。実世界172と仮想世界170を地続きとして表示することにより、実世界の人形と仮想世界の敵のキャラクタが向かい合い戦っている様子をユーザが自由な角度から眺める、という独特の態様を、臨場感をもって実現できる。
あるいはボードゲームやトランプゲームなどを実現してもよい。この場合、実世界172において画面174に正対するユーザと対峙するように、仮想世界170に相手のキャラクタを配置し、さらにその前にゲーム盤のオブジェクトを配置する。そして実世界172におけるユーザの駒の動きに合わせて仮想世界の駒も動かし、相手のキャラクタもそれに応じて駒を動かすようにする。ユーザ側と相手側で駒やカードが交錯せず、それぞれが自分の前の限定領域で駒やカードを動かすゲームの場合は、ユーザ側の領域を実世界、相手側の領域を仮想世界として、ゲームの場自体を実世界と仮想世界の融合により表現することができる。
仮想世界170は、その全てを情報処理装置10が作り出してもよいし、ネットワーク8を介して情報処理装置10が受信した、遠隔地の実世界における動きを反映させたものでもよい。つまり、同様の情報処理システムを構築した2つの場所における情報処理装置10をネットワーク8で接続し、相手ユーザによる人形、駒、トランプなどの動きを、仮想世界170における敵のキャラクタや相手の駒、トランプの動きに反映させる。仮想世界170におけるキャラクタや相手の姿自体も、相手が事前に選択し登録したオブジェクトモデルを利用して描画してもよい。
このような対戦ゲームのみならず、実世界172のブロックと仮想世界170のブロックを組み合わせて1つの立体物を作成したり、1つの町を構築したりすることもできる。この場合も、仮想世界における動きを全て情報処理装置10が決定してもよいし、ネットワーク8を介して遠隔地にいる人の動きを反映するようにし、共同作業を実現してもよい。
このような表示態様において肝要となるのがユーザの視線である。ユーザの動きに応じて仮想世界のゲームを進めるような技術では、ユーザは主に表示装置の画面を見ていればよいため、ユーザがどの位置にいるかに関わらず同じ画像を表示すればよい。一方、本実施形態では、ユーザが実世界のプレイフィールドと表示画像の両方を見てその連続性を解釈する。また、ブロックを組み立てたり動かしたりする性質上、ユーザはプレイフィールド18の周囲を移動する可能性が高くなる。このような特性に鑑み、ユーザがどの位置から見ても、実世界と仮想世界の連続性が保たれているようにすることが望ましい。
図11は実世界と表示上の仮想世界の連続性を表現する手法を説明するための図である。まず図2で説明したように、カメラ122による撮影画像からプレイフィールド18と表示装置16の像を抽出することにより、ワールド座標系におけるプレイフィールド18と画面174の位置座標を取得する。次に、当該ワールド座標系で定義される仮想空間において、画面174を挟んで実世界172と反対側に、仮想世界170を構築する。すなわち実世界172のプレイフィールド18の面と同一平面に仮想世界170の地面を定めるとともに、実世界172のブロックの配置に基づき仮想世界170にオブジェクトを配置する。なお仮想世界170の地面を、実世界172のプレイフィールド18の面に対し所定角度で傾斜させてもよい。仮想世界170の地面に多少の角度をつけることにより、地続きの状態を演出しながら地面近傍の状態を視点によらず見やすくできる。
このようにして構築した仮想空間において、実空間におけるユーザの視点に対応する位置に仮想的な視点9を置き、それに基づき画面174に仮想世界170を投影する。このとき上述のとおり、撮影画像からユーザの頭部の像と表示装置の像を抽出し、それらの相対位置に基づき、仮想空間における画面174に対する仮想的な視点9の位置を決定する。撮影画像における頭部の像は、一般的なトラッキング技術を利用して検出できる。このような構成によって、実際のユーザの頭部の位置に応じて仮想的な視点9が移動し、ひいてはユーザの位置と表示画像が連動することになる。
なお近年はアイカメラなどユーザの視線を検出するセンサが提案されている。このようなセンサを導入して視線検出を行うことで、視点9の配置にユーザの実際の視線をより高精度に反映させてもよい。このとき、ユーザが特定の領域を集中して見ている(注視している)状態を検出し、それに応じて当該領域に対し仮想的な視点9を近づけることにより、表示画像をズームアップしてもよい。後述する他の表示態様についても同様に、視線検出技術を適用できる。
図12はユーザの位置に応じた表示画像の変化例を示している。同図上段に示すように、ユーザが画面174を斜め左から見たとき(ユーザ5a)、正面から見たとき(ユーザ5b)、斜め右からみたとき(ユーザ5c)に、画面174に表示される画像がそれぞれ、画像180a、180b、180cである。同図の画像はどれも、図11に示した仮想世界170を画面174の平面に投影したものであるが、ユーザの位置によって仮想的な視点を異ならせることにより画像も変化する。ユーザ5aのように画面174を斜め左から見たときは、仮想世界も斜め左から見た状態となる。従って図示した例では仮想世界の車182aの左側面が見えている。
ユーザ5bのように画面174を正面から見たときは、仮想世界も正面から見た状態となる。従って図示した例では仮想世界の車182bの側面はどちらも見えない。ユーザ5cのように画面174を斜め右から見たときは、仮想世界も斜め右から見た状態となる。従って図示した例では仮想世界の車182cの右側面が見えている。このようにすることで、ユーザの移動に伴い実世界の見え方が変化するのと連動するように仮想世界が変化するため、ユーザの位置によらず実世界と仮想世界の連続性を精度よく保つことができる。
図13は表示態様の別の例として、ブロックの死角部分を確認できる画像を表示する態様を説明するための図である。まず実世界のプレイフィールド18には、ユーザが組み立てた、あるいは組み立て中のブロックセット190が置かれている。ユーザ5dが当該ブロックセット190を見たとき、当然、一度に見ることのできる面は限られており、例えばユーザと逆側の側面は見ることができない。そこでそのような死角にある面を画像として表示する。つまり画面174が鏡となりブロックセット190が鏡に映っているような画像を表示する。同図の例では、自動車を模したブロックセット190のうち、ユーザ側の車輪は円形であるのに対し、逆側の車輪は三角形であることが表示画像からわかる。
このようにすることで、ブロックセット190に触れずに、ユーザ5dと逆側の側面の状態を確認したり、通常は同時に見ることのできない両側面を同時に見て、比較したりバランスを確認したりすることができる。図14はブロックの死角部分を確認できる画像を表示する手法を説明するための図である。この場合、まず図2で説明したのと同様の手順で鏡面画像を得ることが考えられる。すなわち、カメラ122による撮影画像からプレイフィールド18と表示装置16の像を抽出することにより、ワールド座標系におけるプレイフィールド18と画面174の位置座標を取得する。
次にプレイフィールド18とブロックセット190との位置関係により、ブロックセット190の位置座標を取得したうえ、当該ブロックセットを対応するオブジェクトモデルに置き換える。ブロックセット190のうちカメラ122からの死角になっている部分については、上述のようにブロックセット190から送信される情報を利用して補完する。これによりブロックセットの形状や姿勢を正確に表したオブジェクトモデルを生成できる。
そして当該オブジェクトモデルを、画面174側から見た画像を左右反転させることにより鏡面画像が得られる。この処理は図14に示すように、ブロックセット190を表すオブジェクトモデルを仮想空間において画面174に対し面対象に置くことにより仮想世界170を生成し、それを実世界172側に置いた仮想的な視点9に基づき画面174に投影することと同じである。この場合、仮想的な視点9は固定としてもよい。一方、より鏡らしく表示するため、ユーザの視点に応じて表示を変化させてもよい。
画面174を鏡とした場合、図14に示すようにブロックセット190からの入射角aと反射角bが等しくなるような位置にブロックセット190が結像する。視点9の位置によって結像位置も異なる。そこで図11の例と同様、実空間におけるユーザの視点に対応する位置に仮想的な視点9を置くとともに、画面174を鏡としたときに視点9から見てブロックセット190が結像する位置の延長上に、ブロックセット190の対応する部分が位置するように、仮想世界170にオブジェクトモデル192を配置する。
そしてそれを視点9から見たときの像を画面174に投影することにより鏡面画像を得る。このようにすることで、ユーザの移動に伴い鏡と同様に表示画像が変化するため、実際の鏡に対してするのと同様に移動して見たい部分を確認することが違和感なく行える。さらに、実際は表示された画像であり仮想的な視点を自由に制御できることを利用すれば、実際の鏡では見づらい部分についても見えるようにすることが可能である。この場合、ユーザが入力装置14を介して仮想的な視点を自由に移動させられるモードを設けてもよい。
図15は表示態様の別の例として、ブロックの組み立て方をユーザに示す画像を表示する態様を説明するための図である。まず実世界のプレイフィールド18には、ユーザが組み立て中のブロックセット194や組み立て前のブロック196が置かれている。同図においてブロックセット194は、最終的な形状が設定されている立体物の組み立て途中の状態を示している。ブロック196はこれ以後に接続すべきブロックであり、同図では1つのみ示しているが複数のブロックがあってよい。
表示装置16の画面174には、図示するように、ブロックセット194、ブロック196を表すオブジェクトを実世界と同じ配置で表示する。さらに、立体物を完成させるために次に行うべき作業についての情報を、矢印200a、200bや文字198等を重畳させて表示する。この態様で情報処理装置10は、ブロックセット194が組み立て工程のどの段階にあるのかを、ブロックから送信された情報に基づき特定する。情報処理装置10のブロック情報記憶部58にはあらかじめ、各組み立て段階においてその次に接続すべきブロックとその接続箇所に係る情報を格納しておき、実際の作業の進捗に応じて表示すべき情報を特定する。
そして実世界でのブロックセット194やブロック196の位置に応じて、説明に必要な矢印200a、200bの方向や長さを決定したり、文字198の位置を調整したりして表示する。同図の例では、タイヤを模したブロック196を立てて接続することが矢印200bにより、ブロック196をブロックセット194に接続すること、およびその接続箇所が矢印200aで示されている。さらに具体的な作業内容が文字198で示されている。
なおブロック196を立てた状態で接続することは、実世界では寝かされているブロック196を、仮想世界では立てた状態のオブジェクトで表すことによっても示している。この態様のように、実世界でのブロックの配置を仮想世界でのオブジェクトの配置にそのまま反映させて組み立て方を示すことにより、印刷物やホームページなど画一的なマニュアルを利用する場合と比較し、ブロックセット194の向きを図面に合わせたり接続すべきブロック196を探し出したりする手間なく、より容易に組み立て方を理解できる。
なお組み立て方を示す手段は図示するものに限らない。例えばブロック196を表すオブジェクトをブロックセット200の接続箇所に近づけるような動画を表示したり、次に接続すべきブロック196を他のブロックから容易に判別できるように強調表示したりしてもよい。それらに加えて音声ガイドを出力してもよい。
図16は、ブロックの組み立て方をユーザに示す画像を表示する手法を説明するための図である。この例でもこれまで述べた態様と同様、カメラ122による撮影画像からプレイフィールド18と表示装置16の像を抽出することにより、ワールド座標系におけるプレイフィールド18と画面174の位置座標を取得する。そしてプレイフィールド18とブロックセット194、ブロック196との位置関係により、ワールド座標系におけるそれらの位置座標を取得する。そして当該ブロックセット194やブロック196の実世界172における配置をそのまま仮想世界170に平行移動させた状態で、それらを表すオブジェクトモデル202、204を配置する。
このときオブジェクトモデル204のように、必要に応じて実際のブロック196とは向きを異ならせることにより、正しい接続方向を示してもよい。そして、実空間におけるユーザの視点に対応する位置に仮想的な視点9を置き、それに基づき画面174に仮想世界170を投影する。このようにすることで、ユーザがどの位置にいても、その位置から見たブロックセット194やブロック196の配置と同じ配置でオブジェクトを表示できるため、表示した情報の理解されやすさを維持できる。このことは、立体物が大きかったり複雑な構造を有していたりする場合には特に有効である。
これまでの態様では、3Dオブジェクトを配置した仮想世界を構築することにより、より臨場感のある画像表現を実現した。逆に表示を簡素化、抽象化することにより、理解を容易にしたり多くの情報を入れ込んだりすることも考えられる。図17はブロックを抽象化することで整理された情報を示す態様を説明するための図である。まず実世界のプレイフィールド18には、ブロック210a、210b、210cが置かれている。これに対し、画面174における表示画像は、プレイフィールド18を真上から俯瞰したときの各ブロックの位置を、各ブロックを側面形状によって抽象化した図形212a、212b、212cを配置することによって示している。
そして各図形の下には、ブロックに関連した情報を文字214a、214b、214cにより表している。このようにすることで、各ブロックの位置と同時に、それに付随する情報をより多く表示させることができる。この場合も、カメラ122による撮影画像からプレイフィールド18と表示装置16の像を抽出し、さらにプレイフィールド18とブロック210a、210b、210cとの位置関係により、ワールド座標系におけるプレイフィールド18、画面174、ブロック210a、210b、210cの位置座標を取得する。そして仮想的な視点をプレイフィールド18の中心直上の所定の高さに置く。
各ブロックを抽象化した図形の情報や、表示すべき付随情報は、ブロックの識別情報とともにブロック情報記憶部58に格納しておく。そして撮影画像またはブロックから送信された情報によって、ブロック210a、210b、210cの識別情報を特定し、それらに対応する図形を読み出す。そして仮想的な視点から見た各ブロックの位置に、読み出した図形を表示するとともに対応する付随情報も表示する。この態様において、表示上のプレイフィールド216の天地は、実世界におけるプレイフィールド18に対する表示装置16の位置によって決定する。
すなわち、実世界におけるプレイフィールド18のうち表示装置16に面する辺が、画面174の上側に位置するようにプレイフィールド216を表示する。したがって例えば表示装置16がプレイフィールド18の辺218に平行に置かれた場合、表示上で当該辺218が上側に位置するように、プレイフィールド216および図形の配置を反時計回りに90°回転させる。このようにすることで、実世界のブロックの配置と表示上の配置の対応を容易に把握できる。
ただしタブレット端末などで画面174をプレイフィールド18と同じ水平面に置く場合は、表示装置16がどの位置にあっても、表示上のプレイフィールド216の天地は実世界のプレイフィールド18の天地と同じとする。この場合、表示装置16が画面174に垂直な軸回りに回転した場合に、表示上のプレイフィールド216を逆方向に回転させることになる。このような表示態様は、実世界におけるブロックを用いたゲームの戦況をわかりやすく表示させたりルールやマニュアルを表示したりするのに利用できる。
次に、これまで述べた構成によって実現できる情報処理装置10の動作を説明する。図18は情報処理装置10が実空間の状況を反映した画像表示を行う処理手順を示すフローチャートである。まずユーザが情報処理装置10を起動させたり対応するアプリケーションを選択する入力を、入力装置14を介して行ったりすると、情報処理装置10の情報処理部60および表示画像生成部64の協働により、表示装置16に初期画像が出力される(S10)。
一方、撮影画像取得部52はカメラ122に撮影を開始させ、その画像データの取得を開始する(S12)。以後、撮影画像取得部52は所定のレートで撮影画像のデータを取得する。この撮影画像を取得するタイミングを時間ステップと呼ぶ。次に情報処理部60は、ユーザが入力装置14を介して選択した機能に応じて、仮想世界や視点をどのように設定するかを切り替える(S14)。ここで機能とは、図10のように実世界と地続きの仮想世界を描画するか、図13のように実世界を映す鏡のように表示するか、図15のように組み立て方を表示するか、図17のように抽象化した図形とともにその他の情報を表示するか、を決定づける選択肢であればよく、選択されたゲームなど実行するアプリケーションによって一意に定まる場合もあれば、実行中のアプリケーションにおいて提供される機能によって切り替える場合もある。
選択された機能と構築する仮想空間との対応は、空間生成情報記憶部62に格納しておく。次に実空間解析部56は、撮影画像取得部52が取得した撮影画像から、表示装置16、プレイフィールド18、ユーザ5、プレイフィールド18上のブロック、の像を抽出する(S16)。そして実空間解析部56は、例えばプレイフィールドの一角を原点とするなどしてワールド座標系を設定し、各実物のワールド座標系における位置座標を取得する(S18)。
このとき、必要に応じてブロックセット120からブロックの接続状態に係る情報を取得することにより、撮影画像中の像から得られるブロックの位置情報を補完する。これにより、カメラからの死角にあるブロックの状態についても特定できる。撮影画像におけるブロックの像の少なくとも一つが、ブロックセットのどのブロックに対応するかが判明すれば、当該ブロックの位置座標を基点として接続関係を辿ることにより、全てのブロックの位置座標が判明する。そのため例えばブロックの一つにマーカーを取り付けたりブロック自体を発光させたりして、基点となるブロックを容易に特定できるようにしてもよい。
ただしあらかじめ成形されたブロックを単体で用いる態様や、ブロックの数が少なくてよい態様など、撮影画像の像のみで全てのブロックの位置が判明する場合は、ブロックからの情報送信はなくてもよい。次に情報処理部60は、ユーザが選択した機能に応じて仮想空間を構築する(S20)。具体的には、実世界におけるプレイフィールド18、表示装置16の画面、ユーザ5、ブロック、の位置に応じて、必要なオブジェクトを配置したうえ、仮想的な視点を決定する。どのような位置にどのようなオブジェクトを配置するか、仮想的な視点を実際のユーザの視点に対応させるか否かは、S14において決定したモードに応じて定まる。
次に表示画像生成部64は、仮想的な視点から見た仮想空間のオブジェクトを、所定の規則で設定した投影面に投影することにより表示画像を生成する(S22)。多くの場合、投影面は表示装置16の画面であるが、図17の場合などは、仮想的な視点から所定の位置に投影面を設定する。そして当該表示画像のデータを表示装置16に出力することにより表示画像を更新させる(S24)。処理を終了させる入力がユーザよりなされないうちは(S26のN)、次の時間ステップで取得した撮影画像を対象としてS16からS24の処理を繰り返す(S28、S16〜S24)。なおブロックやユーザの動きに対し、それらの位置座標の変化を補間するようにすれば、S16、S18の撮影画像を解析して位置座標を得る処理は、S20の仮想空間の構築、S22、S24の表示画像生成、更新処理より低いレートで行ってもよい。
以上の手順により、移動や組み立てによるブロックの変化、およびユーザの移動を反映するように変化する画像を表示し続けることができる。ユーザによって処理を終了させる入力がなされたら、全体の処理を終了する(S26のY)。なお上記の説明では主に、ユーザの左右の移動に対する表示画像の変化を示したが、仮想的な視点を実際の視点に対応させて動かすことによる変化は、視点の上下方向の動きを含むいかなる方向の動きについても同様である。
例えばユーザの頭部の高さに応じて仮想空間に対する仮想的な視点の高さも変化させることにより、プレイフィールドに段差を設けたり複数階層のプレイフィールドとしたりしても、ユーザが見ている階層のプレイフィールド上のブロックを的確に表示させることができる。また入力装置14を介し、仮想的な視点をブロックに近づけたり遠ざけたりするユーザ操作を受け付けることにより、実際にユーザが動いていなくても、ブロックを間近に見たり遠くから眺めたりした状態を表示上で作り出すことができる。上述のようにアイカメラを利用して、所定の領域を注視しているか否かを検出し、それに応じて、対象領域に対し仮想的な視点を近づけたり遠ざけたりしてもよい。
以上述べた本実施の形態によれば、ブロックを置くプレイフィールド、表示装置、ユーザの位置関係を撮影画像から特定し、それに基づき仮想空間を構築する。そして当該仮想空間に配置したオブジェクトを見る仮想的な視点を、実際のユーザの位置に基づき設定する。これにより、ユーザがブロックと表示画像を見る視点と連動するように表示画像が変化する。結果として、ブロックを含む実世界と表示画像内の仮想世界の見え方がユーザの動きに応じて連動することになり、臨場感のある多様な画像表現を実現できる。
さらにブロックから送信された情報と撮影画像から得られる情報を統合することにより、実際のブロックの状態を精度よく特定できる。特にユーザやカメラの死角にある部分の状態をも認識し、表示画像に反映できるため、組み立てたブロックセットなどを動かすことなく、本来は見えない部分を見ることができる。また、特定したブロックの状態に対し、さらに個々のブロックや組み立て方の情報を統合することにより、実世界のブロックの状態やユーザの位置などに対応する形式で様々な情報表示を行える。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。