(58)【調査した分野】(Int.Cl.,DB名)
前記情報処理部は、前記入力装置を含む視野で実空間を撮影するカメラから取得した画像上の、前記入力装置に対応する位置に、前記入力装置の動きに合わせて動くオブジェクトを描画することを特徴とする請求項1から4のいずれかに記載の情報処理システム。
個別に準備されたブロックを連結してなる入力装置から、ブロックの連結箇所、連結されているブロックの種類、ブロックに内蔵されたセンサの計測値、いずれかのブロックの傾きに係る情報を受信するとともに、いずれかのブロックの3次元空間における位置を取得するブロック情報受信部と、
前記ブロック情報受信部が取得した情報に基づき、前記入力装置の3次元空間における位置、姿勢、および形状を算出する構造解析部と、
登録された前記入力装置の形状と、当該形状ごとに、表示すべきオブジェクトのデータを対応づけて記憶する登録形状記憶部と、
前記構造解析部が算出した結果に基づいて、前記入力装置が登録された形状となったか否かを監視し、登録された形状となったとき、当該形状に対応づけられたオブジェクトの画像を描画する情報処理部と、
を備えたことを特徴とする情報処理装置。
個別に準備されたブロックを連結してなる入力装置から、ブロックの連結箇所、連結されているブロックの種類、いずれかのブロックに内蔵されたセンサの計測値、いずれかのブロックの傾き、に係る情報を受信する機能と、
いずれかのブロックの3次元空間における位置を取得する機能と、
前記受信する機能が受信した情報および前記取得する機能が取得した情報に基づき、前記入力装置の3次元空間における位置、姿勢、および形状を算出する機能と、
記憶装置が記憶する、登録された前記入力装置の形状と、当該形状ごとに、表示すべきオブジェクトのデータを対応づけた情報を、前記算出するステップにおける算出結果に基づいて参照することにより、前記入力装置が登録された形状となったか否かを監視する機能と、
前記入力装置が登録された形状となったとき、当該形状に対応づけられたオブジェクトの画像を描画する機能と、
描画結果を出力する機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラム。
個別に準備されたブロックを連結してなる入力装置から、ブロックの連結箇所、連結されているブロックの種類、いずれかのブロックに内蔵されたセンサの計測値、いずれかのブロックの傾きに係る情報を受信する機能と、
いずれかのブロックの3次元空間における位置、姿勢、および形状を取得する機能と、
前記受信する機能が受信した情報および前記取得する機能が取得した情報に基づき、前記入力装置の3次元空間における位置と形状を算出する機能と、
記憶装置が記憶する、登録された前記入力装置の形状と、当該形状ごとに、表示すべきオブジェクトのデータを対応づけた情報を、前記算出するステップにおける算出結果に基づいて参照することにより、前記入力装置が登録された形状となったか否かを監視する機能と、
前記入力装置が登録された形状となったとき、当該形状に対応づけられたオブジェクトを描画する機能と、
描画結果を出力する機能と、
をコンピュータに実現させるコンピュータプログラムを記録したことを特徴とするコンピュータにて読み取り可能な記録媒体。
【発明を実施するための形態】
【0016】
本実施の形態では、複数のブロックを組み立てたり変形させたりし、その形状および位置を情報処理の入力値として利用する。すなわちこのようなブロックを、情報処理装置に対する入力装置と位置づけることができる。ここで情報処理装置が行う処理は特に限定されないが、好適な態様を後に例示する。以後、このようなブロックのまとまり、またはそれを組み立てた物を総称して「ブロックツール」と呼ぶ。
【0017】
図1は本実施の形態におけるブロックツールの外観例を示している。ブロックツールは合成樹脂などで形成され、内部に素子やセンサなどを必要に応じて搭載可能に構成する。図示するようにブロックツールは四角柱型ブロック102a、102b、102c、立方体型ブロック102d、円柱型ブロック102f、球型ブロック102eなど、様々な形状を有することができる。なおブロックの形状は例示されるものに限られず、そのサイズも様々でよい。また必ずしも複数の形状を含めなくてもよい。
【0018】
各ブロックには所定のサイズおよび形状を有する凸部104、凹部106が設けられ、凹部106に凸部104を差し込むことによりブロック同士を所望の位置で連結可能に構成される。ブロックツールにはさらに、連結するブロックの間隔を調整するため、両端を異なるブロックの凹部106に差し込み可能なジョイント用ブロック102g、102hを含めてもよい。またジョイント用ブロックが回転するなどして接続するブロック間の位置・姿勢関係を変化させることも可能である。
【0019】
凸部104および凹部106は、ブロック間の信号伝送を可能とする端子の役割も有する。そのため先端にはそれぞれ、ブロック内部に設けるバスなどの規格に応じた構造のコネクタを備える。一般的に普及している各種コネクタを採用したり、専用の特殊コネクタを設けたりすることにより、信号伝送とブロック同士の物理的な連結を同時に達成することができる。なお信号伝送の経路を別途用意するとともに、連結箇所を別途特定できれば、ブロック同士の結合は面ファスナーや磁石などでもよい。ここで別途用意する信号伝送の経路は、無線通信の機構でもよい。
【0020】
ブロックツールのうち少なくともあるブロック(
図1の場合、四角柱型ブロック102a)には、マーカー108を設ける。マーカー108は、後述するカメラで撮影した画像における位置および大きさから、3次元空間での位置を特定するためのものである。したがってマッチング処理などによって撮影画像から検出できる大きさ、形状、色を有して形成される。例えば、光透過性を有する球形樹脂の内部に発光ダイオードや電球など一般的な発光体を備えた球体や、2次元コードなどでもよい。複数のブロックにマーカー108を設ける場合は、ブロックごとにその色を変えてもよい。
【0021】
またブロックツールのうち少なくともあるブロック(
図1の場合、四角柱型ブロック102b)は、2つのブロックと、それらを屈伸可能にする屈伸軸110と、ブロック同士がなす角度を検出するポテンショメータによって構成する。なお屈伸させる機構は、図示するように一方のブロックを貫通する屈伸軸110の両端に他方のブロックの突起を接合する形態のほか、ヒンジや屈伸可能な金属などによって2つのブロックを結合させた形態などでもよく、特に限定されるものではない。ブロック同士の角度は連続的に変化可能としてもよいし、複数段階に変化可能としてもよい。また軸の向きは図示するものに限らない。1つのブロックに複数の軸を設けてもよい。
【0022】
構成要素であるブロックの角度は、好適には手を離しても維持されるような構造とする。なおブロック同士の角度はポテンショメータ以外の角度センサで計測してもよい。例えばブロック内部に他のブロックとの相対角を測定するセンサを搭載しておけば、ブロック同士は必ずしも接続されていなくてもよい。また後述するように1つのブロックを屈伸可能、回転可能に構成し、その屈伸角、回転角を計測してもよい。
【0023】
さらに、ブロックツールのうち少なくともあるブロックの内部には、加速度センサ、ジャイロセンサ、地磁気センサなどのモーションセンサのうちの1つまたは複数の組み合わせを搭載する。センサを搭載するブロック、および搭載するセンサの種類や組み合わせは、ブロックツールを用いて実現する情報処理によって決定する。または様々なバリエーションのなかからユーザが組み立て時に選択する。
【0024】
図2は
図1で示したようなブロックを用いてユーザが組み立てたブロックツールの例を示している。組み立て後のブロックツール120は、
図1で示した四角柱型ブロック102a、102b、立方体型ブロック102d、およびジョイント用ブロック102hによって構成される。上述のようにブロックツール120は、静止画像または動画像を撮影するカメラ122によって撮影される。
【0025】
撮影された画像において、四角柱型ブロック102aのマーカー108の像を検出する。上述のようにマーカー108を既知の色、輝度、大きさを有する発光体とすると、撮影されたフレーム画像を、対応する条件で探索することにより、マーカーの像を容易に検出できる。それ以外のマーカを採用する場合も、パターンマッチングや特徴点抽出など、一般的な画像認識技術を適用できる。ブロックツール120を動かし、それを動画像として撮影する場合は、既存のトラッキング技術を適用することにより効率的な検出が行える。
【0026】
なおマーカー108を赤外線などの不可視光線を発光する装置としてもよい。この場合、カメラ122に代えて不可視光線を検出する装置を導入し、マーカー108の位置を検出する。同様に、深度センサ、超音波センサ、音センサなどを利用してもよい。マーカー108をブロックツールに含めることにより、実世界の3次元空間におけるマーカー108の位置座標(x1,y1,z1)を求めることができる。あるいは、カメラ122をステレオカメラとして、ブロックツールの奥行き情報をステレオマッチングにより求めてもよい。ブロックツール120を置く台の上面にタッチパネルを設け、それにより置かれた位置を検出してもよい。これらの絶対位置検出手法のいずれか2つ以上を組み合わせて最終的な位置座標を算出してもよい。
【0027】
このようにして絶対位置を算出すると同時に、ブロックに備えたモーションセンサ、ポテンショメータによって必要なパラメータを検出することにより、ブロックツール120の位置、姿勢、および形状を効率的に算出する。例えば
図2のブロックツール120の場合、(1)各ブロックの連結位置およびブロックの種類、(2)四角柱型ブロック102aまたは102bの傾きベクトルm1、(3)四角柱型ブロック102bを構成する2つのブロックの角度θ、(4)各ブロックの長さL1、L2、L3、L4、L5、および、上述の絶対位置によって、各ブロックの位置座標、向き、ひいてはブロックツール120の中心軸の形状および位置、姿勢を導出できる。
【0028】
上記(1)および(4)はブロック間の信号伝送により判明し、上記(3)はポテンショメータにより計測できるとすると、上記(2)を計測するために、四角柱型ブロック102aまたは102bにモーションセンサが内蔵してあれば必要十分となる。あるいは内蔵されたブロックを四角柱型ブロック102aまたは102bとして選択すればよい。
図3はそのようにして導出した、ブロックツール120の中心軸を模式的に示している。図示するように中心軸124は、3次元空間においてその位置、姿勢および形状が同定される。当該3次元空間はカメラ122のカメラ座標系でもよいし、それを所望の座標系に変換したものでもよい。
【0029】
本実施の形態では、このようにして求めた中心軸124、あるいは各ブロックの位置や向きを入力値として様々な情報処理を行う。例えば中心軸124を骨組みとしてオブジェクトを描画した画像を表示する。またはその形状の変化によりオブジェクトモデルを変更したり、形状変化をコマンドと解釈し、それに対応づけた情報処理を行う。なお上記の例はブロックツールの中心軸124のみを入力値とする場合であったが、連結したブロックの大きさによってオブジェクトを変化させる場合は、
図2で示したブロックの太さを考慮し、太さを含めたブロックツールの形状を求めてもよい。
【0030】
図4は本実施の形態を適用できる情報処理システムの構成例を示す。情報処理システム2は、ブロックツール120、ブロックツール120を撮像するカメラ122のほか、ブロックツール120の形状、姿勢および位置を入力値とし、それに応じて所定の情報処理を行う情報処理装置10、情報処理装置が処理した結果得られた画像データを出力する表示装置16を含む。情報処理装置10は、たとえばゲーム装置やパーソナルコンピュータであってよく、必要なアプリケーションプログラムをロードすることで情報処理機能を実現してもよい。表示装置16は液晶ディスプレイ、プラズマディスプレイ、有機ELディスプレイなど一般的なディスプレイでよい。またそれらのディスプレイとスピーカを備えたテレビであってもよい。
【0031】
情報処理装置10と、カメラ122あるいは表示装置16との接続は、有線、無線を問わず、また種々のネットワークを介していてもよい。あるいはカメラ122、情報処理装置10、表示装置16のうちいずれか2つ、または全てが組み合わされて一体的に装備されていてもよい。また、カメラ122は必ずしも表示装置16の上に搭載されていなくてもよい。ブロックツール120は情報処理装置10で処理される内容によっては複数でもよい。ブロックツール120と情報処理装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルやIEEE802.11プロトコルなどを用いて無線接続を確立する。あるいはブロックツール120の一つのブロックと情報処理装置10をケーブルを介して接続してもよい。
【0032】
図5はブロックツールに含まれる各ブロックの内部構成例を模式的に示している。上述のとおりブロックの内部構成に様々なバリエーションを持たせることにより、用途に応じた使い分けが可能になる。また情報処理の入力値を同定するのに必要と想定されるセンサを複数のブロックに分散させて装備することにより、過度なセンサ搭載を避けることができ、製造コストを抑えることができる。
【0033】
図5の例では、ブロック126aは、バッテリー128a、通信機構130a、メモリ132a、位置センサ134、モーションセンサ136aを備える。ここで通信機構130aは、他のブロックからの信号を接続端子を介して受信する有線通信機構のほか、情報処理装置10との無線通信を行う機構も含むものとする。メモリ132aは、ブロック126aの識別番号を保持する。当該識別番号は情報処理装置10においてブロック126aのサイズ、凹部、凸部の位置などの情報と対応づけられるものであり、同じ種類のブロックには同じ識別番号を付与してよい。あるいは組み立てられたブロックツール内での信号伝送のルーティングなどに利用できるようにブロックごとに一意に定めてもよい。
【0034】
位置センサ134はブロック126aの絶対位置を取得するためのセンサであり、画像認識用のマーカーもこれに含まれる。ただしマーカーの場合は上述のとおり外部に設置したカメラとの組み合わせによって絶対位置を検出する。モーションセンサ136aは上述のとおり、加速度センサ、ジャイロセンサ、地磁気センサのいずれか、またはいずか2つ以上の組み合わせとする。
【0035】
ブロック126bは、バッテリー128b、通信機構130b、メモリ132b、モーションセンサ136bを備える。各機構はブロック126aについて上述したのと同様でよいが、通信機構130bは、他のブロックからの信号を受信する有線通信機構のみで構成してもよい。このようなブロックは、情報処理装置10との通信が可能なブロック126aと組み合わせて使用する。その他のブロックの通信機構も同様である。
【0036】
ブロック126cは、通信機構130c、メモリ132c、角度センサ138を備える。角度センサ138は、ブロックに内蔵されたセンサの1例であり、
図1の四角柱型ブロック102bに備えたポテンショメータに代表される、ブロック126c自体の曲げ角を検出するセンサである。ブロック126cはバッテリーを備えていないため、バッテリーを搭載した他のブロック126a、126bと組み合わせて使用する。ブロックとしてはそのほか、ブロック126dのように通信機構130d、メモリ132dのみを備えたもの、ブロック126eのようにセンサ等の機構を備えないもの、等を準備する。
【0037】
なお
図5のブロックはあくまで例示であり、各種センサやその他の機構をいかに組み合わせてもよい。また図示したセンサのほか、曲げセンサ、圧力センサなど実用化されているいかなるセンサを内蔵してもよい。このような様々な内部構成を有するブロックを、
図1で示したような様々な形状で準備する。同じ種類のブロックを複数準備してもよい。あるいは全てのブロックの形状およびサイズを統一してもよいし、内部構成を統一してもよい。形状や内部構成にバリエーションをもたせ、各種ブロックを個別に購入できるようにすると、個々のユーザの用途に合わせて最低限の費用で臨機応変に好みのブロックツールを組み立てることができる。基本的な組み立てが可能なブロックのセットをまず提供し、後から買い足せるようにしてもよい。
【0038】
図6はブロックツール120と情報処理装置10の構成を詳細に示している。
図6において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。また既述したように、ブロックツール120の各ブロックは通信機構、メモリ、各種センサによって構成されている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0039】
ブロックツール120は上述のとおり、個々のブロックをユーザが組み立てることによって形成される。
図6ではそれぞれのブロックを第1ブロック140a、第2ブロック140b、第3ブロック140c、・・・などとしている。ここで第1ブロック140aは情報処理装置10との通信機構を有するブロックである。情報の錯綜を防ぐため、ブロックツール120を構成するブロックのうち、情報処理装置10との通信を確立するブロックは、基本的には1つのみとする。そのため第1ブロック140aにハブの役割を与える。そして、当該第1ブロック140aから接続関係の遠いブロックから情報を伝達し、第1ブロック140aにブロックツール120全体の情報を集約させる。
【0040】
以下、ブロックの連結において第1ブロック140aに相対的に近いブロックを「上位」、遠いブロックを「下位」とする。第1ブロック140aとなるブロックはあらかじめ1つに定めておいてもよいし、情報処理装置10との通信機構を有するブロックに図示しないスイッチなどを設け、ユーザがオンにしたブロックを第1ブロック140aとしてもよい。または組み立て段階において情報処理装置10と最初に通信を確立したブロックを第1ブロック140aとしてもよい。
【0041】
このようにして決定した第1ブロック140aに、ユーザが別のブロックを連結すると、当該ブロックは第2ブロック140bとなる。第2ブロック140bにさらに別のブロックを連結すると、当該ブロックは第3ブロック140cとなる。なお同図では3つのブロックのみを示しているが、上述のとおり連結するブロックの数は限定されず、1つ、あるいは4つ以上でも、構成および動作は同様に考えることができる。
【0042】
第1ブロック140a、第2ブロック140b、第3ブロック140cはそれぞれ、情報受信部142a、142b、142c、要素情報取得部144a、144b、144c、情報送信部146a、146b、146cを備える。情報受信部142a、142b、142cは、直接接続された下位のブロックから送信された情報を受信する。ここで受信する情報は、当該ブロックより下位に接続されているブロックの識別番号、連結箇所の識別番号、内蔵するセンサによる計測結果を含む。複数のブロックが連結されている場合は、最下位のブロックからブロックを通過するごとに情報が重畳される。
【0043】
要素情報取得部144a、144b、144cは、当該ブロックが内蔵しているセンサおよび他のブロックを接続する箇所に設けた端子を含み、センサの計測結果、および下位のブロックが接続している箇所に係る情報を取得する。情報送信部146a、146b、146cは、情報受信部142a、142b、142cが受信した、それより下位のブロックの識別番号、連結箇所の識別番号、内蔵するセンサによる計測結果を含む情報に、当該ブロックの要素情報取得部144a、144b、144cが取得した情報を追加し、直接接続された上位のブロックに信号として送信する。ただし第1ブロック140aの情報送信部146aは、当該情報を情報処理装置10に送信する。なお情報送信部146aはさらに、処理の開始、終了の要求信号、通信の確立に必要な各種信号を情報処理装置10から受信するなど情報処理装置10とのインターフェースとして機能する。
【0044】
情報処理装置10は、ブロックツール120およびカメラ122から、信号および画像データをそれぞれ受信するブロック情報受信部20、受信した情報に基づきブロックツール120の形状および位置を特定する構造解析部22、ブロックツール120の形状および位置、あるいはユーザからの指示に応じて所定の情報処理を行う情報処理部30、情報処理の結果、表示すべき画像を生成し表示装置16に出力する表示処理部32を含む。情報処理装置10はさらに、各ブロックの識別番号とその形状等を対応づけたブロック情報記憶部24、ブロックツール120の形状と表示すべきオブジェクトモデルに係る情報とを対応づけた登録形状記憶部26、ブロックツール120の形状、姿勢、位置、動きとなすべき処理内容とを対応づけた処理内容記憶部28を含む。
【0045】
ブロック情報受信部20は、ブロックツール120の第1ブロック140aが集約した、連結されているブロックの識別番号、その連結箇所、内蔵されたセンサによる計測結果に係る情報を含む信号を受信する。またカメラ122から、ブロックツール120を撮影した画像のデータを取得する。ブロックツール120からの信号とカメラ122からの画像データは即時入力されるため、時間的な対応がとれているものとするが、必要な時間分解能によっては同期化処理などを行ってもよい。
【0046】
構造解析部22は、ブロック情報受信部20が取得した情報に基づきブロック情報記憶部24を参照して、ブロックツール120の位置、姿勢、および形状を特定する。このためブロック情報記憶部24にはあらかじめ、全てのブロックの識別番号と、形状、サイズ、および連結箇所情報とを対応づけたテーブルを格納しておく。連結箇所情報は、他のブロックを連結可能な箇所の位置に係る情報とその識別番号とを対応づけた情報である。
【0047】
構造解析部22は、ブロックツール120を構成する全ブロックの識別番号から
図2のL1〜L5の情報を導出する。さらに実際の連結箇所の識別番号、および角度センサの情報からブロック同士のなす角度、連結位置を特定する。さらにモーションセンサの情報から
図2のベクトルm1を、カメラ122からの画像データに基づきマーカの位置座標(
図2の(x1,y1,z1))を導出する。そして
図3の中心軸124のように、3次元空間におけるブロックツール120の位置、姿勢、および形状を特定する。
【0048】
情報処理部30は、ブロックツール120の形状および位置、姿勢に応じてなすべき処理を実行する。例えばブロックツール120が所定の形状に組み立てられたら、それに対応するオブジェクトモデルを表示する。そしてブロックツール120の動きに合わせて、表示されたオブジェクトが動くようにする。あるいは特定の動きをコマンドと解釈してゲームを進捗させたり表示内容を変化させたりする。そのため登録形状記憶部26にはあらかじめ、ブロックツール120の形状と表示すべきオブジェクトモデルの画像データとを対応づけて格納しておく。あるいは処理内容記憶部28には、動き、すなわち形状の時間変化となすべき処理を対応づけて格納しておく。
【0049】
本実施の形態ではブロックツールの絶対位置、姿勢も認識できるため、オブジェクトモデルを適用したりコマンドを発生させたりする条件を、ブロックツールの形状のみならずブロックツールの位置、姿勢との組み合わせで設定してもよい。このようにすると、例えば同じ形状のブロックツールでも、所定の位置、姿勢にあるときにのみオブジェクトモデルを変化させたり所定の処理を開始させたりすることができる。
【0050】
あるいは、ブロックツール120の形状をユーザが登録するようにしてもよい。この場合、情報処理部30は、構造解析部22が取得したブロックツール120の形状情報を、ユーザからの登録指示がなされたタイミングで識別情報とともに登録形状記憶部26に格納する。同様に、処理内容記憶部28にも、ブロックツール120の形状に対しユーザが与えた時間変化と、ユーザが選択したなすべき処理とを対応づけて格納してもよい。なお本実施の形態におけるブロックツール120は、任意に変形可能な入力装置としての位置づけを有するため、マウスなど既存の入力装置の代替品として利用することも可能であり、ひいては情報処理部30が行える処理内容の範囲は限定されない。このような場合も、登録対象として、ブロックツールの形状と位置、姿勢を組み合わせてもよい。
【0051】
表示処理部32は、情報処理部30が行った処理の結果として画像データを作成し、表示装置16に表示させる。ブロックツール120の動きに合わせて動くオブジェクトを表示させる例では、表示装置16の出力フレームレートで、ブロックツール120の中心軸の各時刻の形状に対応させてオブジェクトモデルを描画し、表示装置16にビデオ信号として出力する。描画処理自体は一般的なコンピュータグラフィックス技術を適用できる。
【0052】
図7はブロックツール120における情報伝達経路と伝達される情報の例を模式的に示している。情報伝達経路150において内部に数字の書かれた円はそれぞれがブロックを表しており、円間の直線はブロックが連結されている状態を表している。また円内の数字は各ブロックの識別番号とする。識別番号「1」のブロックは
図6の第1ブロック140aに対応し、情報処理装置10と通信を確立する。さらに
図7における識別番号「2」、「3」のブロックは識別番号1のブロックに直列に接続されていることから、
図6における第2ブロック140b、第3ブロック140cにそれぞれ対応すると捉えることができる。
【0053】
一方、1つのブロックに複数のブロックが連結することも考えられる。
図7の例では識別番号「1」のブロックに識別番号「2」のブロック、「5」のブロックが接続されている。識別番号「2」のブロックには上述のとおり、識別番号「3」のブロック、「4」のブロックがこの順で直列に接続されている。識別番号「5」のブロックには、識別番号「6」のブロックと「7」のブロックが並列に接続されている。この例ではさらに、識別番号「6」のブロックに、識別番号を持たないブロックが接続され、そのブロックに識別番号「8」のブロックが接続されている。ここで識別番号を持たないブロックとは、
図5のブロック126eのように、内部に機構をもたないブロックに対応する。
【0054】
上述のとおり情報伝達は基本的に、下位のブロックから上位のブロックへ伝達される。
図7では、伝達される情報の内容を、伝達方向を示す矢印とともに表している。例えば識別番号「3」のブロックから「2」のブロックへ伝達される情報は、[3:J2(4)]と示されている。これは「自らの識別番号:ブロックに設けられた接続箇所の識別番号(そこに接続しているブロックの識別番号)」なるフォーマットで構成される信号であり、識別番号「3」の接続箇所のうち識別番号「J2」の箇所に識別番号「4」のブロックが接続されていることを表している。ただし同図をもって情報のフォーマットや内容を限定するものではない。
【0055】
ブロックの上位にあたる方向がどちらにあるかは、ハブの役割を有するブロックが、ブロックの連結によって構成されるネットワークを探索することにより、順位づけを行うなどして決定できる。このような手順は、一般的な情報処理システムを構成するデバイスツリーにおけるネットワーキング技術を適用できる。
【0056】
図7において識別番号「4」のブロックは、それが属する接続系列において最下位にあるため、1つ上位の識別番号「3」のブロックへ情報を送信する。識別番号「4」のブロックには他のブロックが接続されておらず接続箇所が一意に求まるとすると、またセンサが内蔵されていないとすると、送信される情報は自らの識別番号「4」のみとなるため、伝達内容を「[4:−]」と表している。「−」はセンサの計測結果や接続されているブロックがないことを示している。
【0057】
識別番号「3」のブロックは、識別番号「4」からの信号を受信すると、それを受信した端子の番号などを接続箇所の識別番号として対応づけ、さらに自らの識別番号「3」も対応づけて、1つ上位の識別番号「2」のブロックに送信する。この信号の伝達内容は上述のとおり[3:J2(4)]となる。識別番号「2」のブロックも同様に、自らの識別番号、接続箇所の識別番号(図の例では「J5」)、接続しているブロックの識別番号「3」を対応づけた信号、すなわち[2:J5(3)]を生成する。また識別番号「2」のブロックがセンサを内蔵しているとすると、その計測結果を表す信号と自らの識別番号を対応づけた信号も生成する。同図の例では計測結果を「result」と表しているが、実際には具体的な数値がセンサの種類に応じて代入される。
【0058】
識別番号「2」のブロックは、このようにして生成したデータと、下位のブロックから伝達されたデータ、すなわち[3:J2(4)]を、1つ上位の識別番号「1」のブロックに送信する。ただしこれらの信号は常に同時に送信する必要はなく、一旦送信した信号の内容に変更があったときにその情報のみを送信するなどでもよい。一方、識別番号「5」のブロックに接続された、識別番号「6」と「7」のブロックがセンサを内蔵しておらず接続箇所が一意に求まるとすると、これらのブロックからは、識別番号「4」のブロックと同様、[6:−]、[7:−]の信号がそれぞれ識別番号「5」のブロックに送信される。識別番号「6」のブロックには、さらに別のブロックが接続されているが、当該ブロックは識別番号や通信機構をもたず、そこからの情報は得られないものとしている。
【0059】
識別番号「5」のブロックは、自らの識別番号に、接続箇所の識別番号および接続されているブロックの識別番号を対応付けた信号を生成し、1つ上位の識別番号「1」のブロックに送信する。図示するように複数のブロックが接続されている場合、それらをまとめて[5:J3(6),J8(7)]などとする。ここで「J3」、「J8」はかっこ内の識別番号のブロックが接続されている接続箇所の識別番号である。
【0060】
このようにして識別番号「1」のブロックに、ブロックツール120全体の情報が集約される。識別番号「1」のブロックも他のブロックと同様、自らの識別番号に接続箇所の識別番号、それに接続されているブロックの識別番号を対応づけた信号を生成する。そして下位のブロックから送信された信号とともに情報処理装置10へ送信する。これにより情報処理装置10は、ブロックツール120を構成するブロックの識別番号、各ブロックの接続関係、センサを内蔵するブロックにおける計測結果を逐次取得することができる。
【0061】
このように、ハブの役割を有するブロックを1つに定め、情報を集約させて情報処理装置10へ送信するようにすると、情報の錯綜や無駄な通信処理を防止することができる。一方、場合によっては複数のブロックから情報処理装置10へ通信するようにしてもよい。例えば
図7の例では、識別番号「8」のブロックは、通信機構をもたないブロックを介して識別番号「6」のブロックに連結している。
【0062】
この場合、識別番号「8」のブロックは、自らのデータを情報処理装置10へ直接送信してもよい。例えば当該ブロックが位置センサを内蔵する場合、自らの識別番号とその計測結果を直接、情報処理装置10へ送信することにより、情報処理装置10は、識別番号「6」のブロックより先に連結しているブロックが存在することを把握でき、さらに当該ブロックの形状、およびおよその接続状況を推測することができる。カメラ122との連携により位置情報を取得する場合も同様である。識別番号「8」のブロックに内蔵されるセンサの数が増えるほど、その情報の確度が向上する。このような構成により通信機構をもたないブロックを連結可能にすると、コストを増大させることなく形状のバリエーションを増やすことができる。また複数の位置情報を取得できるブロックを組み合わせることで、カメラから位置情報に用いるマーカーが隠れた場合にも隠れていない別のブロックマーカーを利用することで信頼性の高い情報を得ることができる。
【0063】
なお識別番号「8」のブロックが、情報処理装置10との通信機構をもたないブロックであった場合は、情報処理装置10との通信機構を備えるブロックが直接的または間接的に連結されるのを待機する。そしてそのようなブロックが連結されたら、それに向かう方向を「上位」として、必要な信号を送信すれば、上述したのと同様、当該ブロックに集約された情報が、識別番号「1」とは別の経路で情報処理装置10へ送信される。
【0064】
図8は情報処理装置10のブロック情報記憶部24に格納するデータの構造例を示している。ブロック情報テーブル160は、識別番号欄162、形状欄164、サイズ欄166、接続箇所欄168を含む。識別番号欄162には、ブロックツールを構成するブロックに付与する識別番号を記載する。形状欄164には、各ブロックの形状の種類、すなわち「四角柱」、「立方体」など、
図1で例示したようなブロックの型を記載する。サイズ欄166には各ブロックの横幅、奥行き、縦の長さを記載する。
【0065】
接続箇所欄168には、各ブロックに設けられた接続箇所を、その識別番号と対応づけて記載する。
図8の例では、「接続箇所の識別番号(面の番号,当該面内でのx座標,y座標)」なるフォーマットで記載されている。面の番号は、ブロックの各面に対しあらかじめ一意に決定しておく。例えば識別番号「1」のブロックは、横幅4cm、奥行き4cm、縦の長さ8cmの四角柱型ブロックである。そして識別番号が「J1」の接続箇所は、第1面の座標(2,2)の位置にある。識別番号が「J2」の接続箇所は、第2面の座標(1,2)の位置にある。ただしここで示したフォーマットに限定する主旨ではない。
【0066】
このような情報テーブルを情報処理装置10で保持しておくことにより、ブロックツール120から送信された信号に基づき、
図2で表記したパラメータが判明することになる。結果として、ブロックツール120の形状および位置、姿勢を
図3で示したように算出することができる。
【0067】
次にこれまで述べた構成によって実現できる情報処理システムの動作を説明する。
図9は、ブロックツールの組み立てや動きによって情報処理を実施する処理手順を示すフローチャートである。同図は一例として、ブロックツールの形状に応じたオブジェクトモデルが、ブロックツールの動きに応じて動くように表示するための処理を示している。このフローチャートはユーザが、情報処理装置10、およびブロックツール120のブロックのうちバッテリーを備えるいずれかのブロックの電源を入れ、情報処理装置10においてアプリケーションを選択するなど処理開始の指示を入力したときに開始される。なお情報処理装置10は、そのような処理開始、終了、および後段の処理に必要な指示を入力するためのユーザインターフェースとして、一般的な入力装置を含むものとする。
【0068】
まず情報処理装置10においては、情報処理部30、表示処理部32の協働により、所定の初期画像を表示装置16に表示する(S10)。一方、ブロックツール120では、連結されたブロック、連結箇所、ブロックに内蔵されたセンサによる計測結果、などの要素情報の収集が開始される(S12)。この処理は、
図7で説明したような情報取得、集約処理に対応する。そして集約した情報は、ハブの役割を有する1つのブロックから情報処理装置10へ信号として送信される(S14)。
【0069】
ただしブロックが組み立てられていない状態では、例えば情報処理装置10との通信が可能で電源が入れられた全てのブロックから情報処理装置10へ、それぞれ信号を送信してもよい。そのようなブロックが直接的あるいは間接的に接続されたタイミングで、そのどちらかを、その結合体のハブとして決定する。要素情報の収集および情報処理装置10への送信は以後、定常的に行う。あるいはブロックの着脱がなされたときやセンサによる計測結果が変化したときに随時行う(S16のY、S14)。
【0070】
情報処理装置10においてブロック情報受信部20が送信された情報を受信すると、構造解析部22は、当該情報に基づき、ブロックツール120の3次元空間での位置、姿勢、および形状を算出する(S18)。後段の処理内容によっては、構成する各ブロックのサイズから、ブロックツール120の太さなども導出する。ここで情報処理部30は、そのときのブロックツール120の形状が登録されているか否かを登録形状記憶部26を参照して確認する(S20)。
【0071】
登録されている場合は(S20のY)、それに対応づけられたオブジェクトモデルのデータを登録形状記憶部26から読み出し、適用する(S22)。そしてS18で算出した、ブロックツール120の位置、姿勢、および形状と対応する位置および向き、姿勢で当該オブジェクトモデルを描画して表示を更新する(S24、S26)。ブロックツール120の形状が登録形状に当てはまらなければ(S20のN)、例えばカメラ122が撮影したブロックツール120をそのまま表示させるなどして表示を更新する(S26)。または
図3で示したような、ブロックツール120の中心軸の図形を表示してもよい。あるいは該当する形状が登録されておりオブジェクトを適用できる場合以外は、初期画像のままとしてもよい。
【0072】
ブロックツール120では、要素情報に変化があったときなどに情報処理装置10へその旨を通知し(S16のY、S14)、変化がなければ情報収集を行いつつ、送信の処理を待機する(S16のN、S32のN)。ユーザがブロックの電源を切るなど処理を終了させる入力を検知したら全処理を終了する(S32のY)。情報処理装置10ではユーザが処理を終了させる入力を行うまで、ブロックツール120からの情報に基づき表示を適宜更新していき(S30のN、S18〜S26)、処理を終了させる指示入力がなされたら処理を終了する(S30のY)。なおブロックツール120は、情報処理装置10からの処理終了の通知を受けて、自らの処理を終了してもよい。
【0073】
図10はブロックツールと表示画面の変遷例を示している。図の左側の列は実際のブロックツールの状態を表しており、右側の列は各状態において表示装置16に表示される画面例を示している。まず第1状態のブロックツール220aは、上下2つの四角柱のブロックが直角をなす、L字型のブロックツール2個からなっている。それぞれのブロックツールにおいて上下のブロックがなす角度は可変であり、当該角度は角度センサによって計測されるものとする。
【0074】
このL字型の形状が登録形状記憶部26に登録されていないとすると、そのときの表示画面222aには、当該ブロックツール220aを撮影した画像がそのまま表示される。ゲームなどにおいて背景を仮想世界としたい場合は、この時点ではブロックツール220aに対応する物体を何ら表示しなくてもよい。あるいは2つのブロックツールが認識されていることを示す2つのマークなどを簡易的に表示してもよい。
【0075】
次に第2状態のブロックツール220bでは、第1状態のブロックツール220aにおける2つのブロックツールを連結し、アーチ状の1つの結合体となっている。この形状が、登録形状記憶部26においてコウモリのオブジェクトモデルと対応づけて登録されていたとすると、アーチ状のブロックツール220bが組み立てられた時点で、画面内にコウモリのオブジェクト224が出現する(表示画面222b)。描画位置は、ブロックツール220bの位置として算出された位置座標を反映させる。例えばカメラ122のカメラ座標系における3次元空間をスクリーン座標に投影する場合、元から当該カメラ座標系でブロックツールの位置座標を算出するか、座標変換をしてカメラ座標系での位置座標を算出する。
【0076】
さらに第3状態のブロックツール220cでは、第2状態のブロックツール220b全体に傾きを与え、さらに上下のブロックがなす角度を大きくするように下部のブロックを開いている。これはユーザが下部のブロックを両手で把持した状態でブロックツールを動かしていることを想定している(手の図示は省略している)。すると表示画面222bで出現したコウモリのオブジェクトが、ブロックツール220cの状態に対応するように傾き、羽を広げた状態のコウモリ226となる(表示画面222c)。
【0077】
なお
図4に示すようにカメラ122をユーザに対峙させるように設置している場合、画像を左右反転させる鏡面処理を施すことにより、表示画面222cのような画像を表示できる。鏡面処理は、カメラ122の位置や表示したい内容などによって実施するか否かを決定する。表示画面222cのような画面を、ブロックツールの動きに合わせてリアルタイムで表示することにより、コウモリが飛んだり仮想世界の物体にとまったり、といった表示を、ブロックツールの操作により直感的かつ容易に実現できる。
【0078】
あるいは画面内の背景を、カメラ122が撮影した実世界とすると、実世界に仮想的なオブジェクトを組み入れたAR(拡張現実)も実現できる。このときカメラ122をユーザ自身にとりつけることにより、ブロックを組み立て、オブジェクトに変化する様をユーザの目線で表示することもできる。ARをブロックを用いて実現した場合、ブロックという実物が仮想オブジェクトを形成するため、当該仮想オブジェクトと現実世界の物とのインタラクションを表示画像内で表現できる。例えば机の本をブロックで押し倒すと、画面内の仮想オブジェクトが同様のアクションをし、それによって実際の机の本が倒れる様も表示できる。
【0079】
図11はブロックツールと表示画面の変遷の別の例を示している。図の表し方は
図10と同じである。まず第1状態のブロックツール228aは、上下2つの四角柱のブロックが直角をなす、L字型のブロックツール1個からなっている。上下のブロックがなす角度は可変であり、当該角度は角度センサによって計測されるものとする。このL字型の形状が登録形状記憶部26において拳銃のオブジェクトモデルと対応づけて登録されていたとすると、表示画面230aに示すように、画面内には拳銃260が表示される。
【0080】
図10の場合と同様、ユーザはブロックツール228aの下部のブロックを把持して動かすことにより、表示画面230aにおける拳銃260の向きや位置を変化させることができる。表示画面230a内には拳銃260のみが現れているが、ユーザの体の動きに合わせて画面内のキャラクタを動作させる技術と組み合わせることにより、当該キャラクタが拳銃260を武器に敵と戦うゲームなどを実現できる。
【0081】
第2状態のブロックツール228bは、第1状態のブロックツール228aにおける上部のブロックに、下方に伸びるようにさらに別の四角柱のブロックを連結している。この形状が、第1状態のブロックツール228aの形状とは別に、機関銃のオブジェクトモデルと対応づけて登録されていたとすると、当該ブロックが連結された時点で、画面内のオブジェクトは拳銃260から機関銃262に変化する(表示画面230b)。反対に当該ブロックを取り外して第1状態のブロックツール228aに戻せば、画面内のオブジェクトも機関銃262から拳銃260に戻る(表示画面230a)。
【0082】
第3状態のブロックツール228cは、第1状態のブロックツール228aで直角をなしていた上下2つのブロックの曲げ角を解消し真っ直ぐな棒状にしている。この形状が、第1状態のブロックツール228aの形状とは別に、剣のオブジェクトモデルと対応づけて登録されていたとすると、曲げ角が解消された時点で、画面内のオブジェクトは拳銃260から剣264に変化する(表示画面230c)。
【0083】
このような構成によれば、同じコンテンツであってもブロックツールの形状によってユーザが操作できる画面内のオブジェクトモデルにバリエーションをもたせることができる。またブロックツールの形状を可変にする、という特性を利用し、ブロックツールの登録形状と、それに対応づけるオブジェクトモデルの形状を近づけると、より臨場感が感じられ直感的に操作が可能になる。さらに、ブロックを足していくことにより、より威力のある武器や魅力的なキャラクタを仮想世界に出現させることができる、という態様とすることにより、ブロックの収集や組み立て自体にも娯楽性をもたせることができる。
【0084】
同図ではブロックの着脱や形状変化により、オブジェクトモデルそのものを変化させる例を示したが、オブジェクトモデル自体はそのままでその動作や処理内容を変化させるようにしてもよい。例えば第1状態のブロックツール228aから第2状態のブロックツール228bへ変化したとき、オブジェクトモデルは拳銃のままで、拳銃の威力を増加させたり敵に当たりやすくしたりしてもよい。この場合、情報処理装置10の処理内容記憶部28に、オブジェクトの形状と、オブジェクトモデルの動作や処理内容を変化させるために呼び出すべきプログラムとを対応づけて登録しておく。
【0085】
これまで述べた例は主に、ブロックツールの形状や動きに反応して、あらかじめ対応づけられたオブジェクトがリアルタイムで変化したり動いたりする態様であった。一方、ブロックツールを利用して、オブジェクトの形状や動きをユーザが登録していく態様も考えられる。
図12は、ブロックツールによってオブジェクトの形状や動きを作成していく処理手順を示すフローチャートである。同フローチャートの開始における状態やブロックツール120における処理手順は
図9で示したのと同様である。以後、
図9の処理手順と異なる部分に主眼を置き説明する。
【0086】
まず情報処理装置10において初期画像を表示する(S40)。ここで表示する画面は、例えばカメラ122が撮影したブロックツールのリアルタイム画像などとする。一方、ブロックツール120では要素情報の収集を開始し、集約した情報を情報処理装置10へ送信する(S44、S46)。その間、情報処理装置10の情報処理部30は、登録したいオブジェクトモデルの選択をユーザから受け付ける(S42)。例えば表示装置16に、候補となるオブジェクトモデルの画像リストを表示し、そこからユーザが選択できるようにする。
【0087】
このとき、選択したモデルの画像をドラッグアンドドロップ操作により、対応づけたいブロックツールのリアルタイム画像上に移動させることにより、モデルの画像とブロックツールを対応づける。ブロックツール120がすでに人型等に組み立てられている場合は、画像リストから好みのキャラクタの画像を選択して対応づける。顔、服装などを個別に選択できるようにしてもよい。
【0088】
そして情報処理装置10において、ブロックツール120から送信された情報を受信すると、構造解析部22は、当該情報に基づき、ブロックツール120の3次元空間での位置、姿勢、および形状を算出する(S50)。すると情報処理部30は、ユーザがS42において選択したオブジェクトモデルを適用したうえ、ブロックツール120の位置、姿勢、および形状を反映したオブジェクトを描画し、表示を更新する(S52)。なおS42においてオブジェクトモデルの選択を受け付ける前に、一旦、ブロックツール120の位置、姿勢、および形状の算出結果を、
図3で示した中心軸などの図形で表示してもよい。そしてS42の処理においてユーザは、当該図形に対し、選択したオブジェクトモデルの画像を当てはめていくようにしてもよい。
【0089】
ユーザがブロックツール120の形状、位置、向きを様々に変化させると、その情報はブロックツール120から情報処理装置10へ逐次送信される(S48のY、S46)。その結果、情報処理装置10で表示したオブジェクトもそれを反映するように位置や姿勢が変化する(S54のN、S50、S52)。そしてユーザが情報処理装置10に対し登録指示を入力すると(S54のY)、情報処理部30は、その時点で表示されているオブジェクトの状態を登録形状記憶部26に記憶させる(S56)。
【0090】
例えば登録順を表す識別番号とともに、オブジェクトモデルの識別番号、姿勢や位置を対応づけて登録する。あるいはその元となっているブロックツール120の形状や位置で記憶してもよい。S50からS56の処理を出力フレームに対応させて繰り返すことにより、登録された順でオブジェクトが動くアニメーションを含むコンテンツを作成できる。あるいはオブジェクトの状態と、別途用意したコマンドリストから選択されたコマンドとを対応づけて処理内容記憶部28に登録すれば、ブロックツールの状態によって所定の情報処理が開始されるコンテンツを作成できる。
【0091】
ユーザが処理を終了させる入力を行うまで、ブロックツール120からの情報に基づき表示更新、登録を繰り返し(S58のN、S50〜S56)、処理を終了させる指示入力がなされたら処理を終了する(S58のY)。ブロックツール120では、要素情報に変化がなければ情報収集を行いつつ送信の処理を待機し(S48のN、S60のN)、ユーザがブロックの電源を切るなど処理を終了させる入力を検知したら全処理を終了する(S60のY)。
【0092】
図13は、後に利用するためにオブジェクトの状態を登録する際のブロックツールと、それを利用して表示される画面の変遷例を示している。まず第1状態のブロックツール240aは、人型に組まれた複数のブロックで構成されている。ユーザはこのようにブロックを組んだあと、それをカメラ122の視野内の所望の位置に置く。一方、オブジェクトモデルとして人の画像を選択する。すると表示装置16には、人の姿のオブジェクトが表示される。
【0093】
本実施の形態ではブロックツールの3次元空間での位置も認識できるため、カメラの視野と表示画面を一致させれば、カメラから見たブロックツールの見かけと同様に、オブジェクトが表示画面に現れる。登録時には登録対象のオブジェクトのみを表示するため、この段階で表示装置16に表示されるのは、同図の表示画面242aのうち、人のオブジェクト244aのみである。ここでユーザが情報処理装置10に対し、登録を指示する入力を行うと、登録形状記憶部26には、オブジェクトモデルの画像、3次元空間でのオブジェクトの位置、姿勢、向きが記憶される。
【0094】
続いてユーザがブロックツールをカメラ122に近づけつつ登録指示を繰り返すと、画面内のオブジェクトが近づいてくる様が記録される。第2状態のブロックツール240bは、そのようにして徐々にブロックツールをカメラ122に近づけていったあと、オブジェクトの右足にあたるブロックを上げた状態としている。このとき表示装置16に表示されるのは、同図の表示画面242bのうち、右足を上げた人のオブジェクト244bのみである。ここでユーザが登録指示の入力を行うと、当該オブジェクトの状態が記憶される。
【0095】
このようにして記憶しておいたオブジェクトの位置や姿勢は、後にアニメーション表示などに利用することができる。例えば別途作成したボールのアニメーションと組み合わせ、表示画面242aから表示画面242bに至るように、遠くから走ってきた人がボールを蹴り上げる様子を表現できる。あるいは仮想世界を表すゲームなどにおいて所定の指示入力がユーザからなされたときに、登録しておいたデータを読み出すことにより、位置や動きを再現させることができる。例えば敵と戦う場面においてユーザ自身が考えた技を試してみることもできる。
【0096】
図13の例は画面内のオブジェクトを、ユーザが登録した通りに動かす態様であったが、ブロックツール自体をロボットとして動かすことも同様にできる。この場合、ブロックツールには、角度が可変な関節部分にアクチュエータを設けるとともに、情報処理装置10からの無線通信によりアクチュエータ制御を行えるようにする。そしてブロックツールの連続した複数の状態を、
図13と同様に順次登録しておく。再生時には、登録された順に、ブロックツールの状態を再現するようにアクチュエータを制御すれば、所望の動きを実物で再現させることができる。例えば、ブロックツール同士を赤外線などを利用して認識させ、挨拶させたり考案した技で戦わせて遊ぶロボット遊びなどへの応用が考えられる。
【0097】
このようにユーザ自身がブロックツールの状態を登録する態様を応用すると、少ないブロックで多様なオブジェクトの作成が可能となる。
図14は2つのブロックでオブジェクトを作成するときのブロックツールと、登録時の表示画面の変遷例を示している。まず第1状態のブロックツール250aは、2つの四角柱のブロックを縦方向に連結している。当該2つのブロックのうち、下部のブロックは、あらかじめ基準ブロック256として設定しておく。第1状態のブロックツール250aに対し、情報処理装置10の構造解析部22は、2つのブロックの接続状況および位置を認識する。
【0098】
ユーザは表示装置16に表示された2つのブロックのうち、基準ブロックに茎のモデルを、上部のブロック258に1枚の花びらのモデルを対応づける。すると表示装置16には表示画面252aに示すように、各ブロックに対応する位置に茎257と花びら254aが表示される。ここで一旦、登録指示を入力する。このとき情報処理部30は、基準ブロック256のみの状態に対応づけて、茎に花びらが1枚ついたオブジェクトモデル(第1状態モデルと呼ぶ)を登録形状記憶部26に記憶させる。さらに基準ブロック256が当該オブジェクトモデルの茎部分であることも記憶させておく。
【0099】
次に第2状態のブロックツール250bは、上部のブロック258が外され基準ブロック256の上端左側に接続し直されている。このとき構造解析部22は、基準ブロック256の別の箇所に上部のブロック258が接続されていることを認識する。そして第1状態モデルを読み出し、茎に対応づけられている基準ブロック以外のブロック、すなわち接続位置が変化した上部のブロック258へのオブジェクトモデルの対応づけをユーザに促す。
【0100】
ユーザが1枚の花びらのモデルを対応づけると、第1状態モデルに加え、新たに対応づけられた上部のブロック258の位置にさらに花びら254bがついたオブジェクトモデルが表示される(表示画面252b)。この状態で登録指示が入力されたら、前に記憶されていた第1状態モデルを上書きし、茎に花びらが2枚ついたオブジェクトモデル(第2状態モデルと呼ぶ)を記憶する。
【0101】
次に第3状態のブロックツール250cは、上部のブロック258が再び外され基準ブロック256の上端右側に接続し直されている。この場合も第2状態のブロックツール250bと同様、接続し直された上部のブロック258へさらに花びらのオブジェクトモデルを対応づけると、第2状態モデルに加え、新たに対応づけられた上部のブロック258の位置にさらに花びら254cがついたオブジェクトモデルが表示される(表示画面252c)。この状態で登録指示が入力されたら、前に記憶されていた第2状態モデルを上書きし、茎に花びらが3枚ついたオブジェクトモデルを記憶する。
【0102】
同様の処理を繰り返すと、用いるブロックの数が少なくても、複雑なオブジェクトモデルをユーザの好みの形状で生成することができる。この態様において各段階の登録処理は、基準ブロックが表すオブジェクトの部分と、他のブロックが表すオブジェクトの部分との向きや位置の相対関係を1つ1つ規定していることにほかならない。結果として、ブロックを外しても、基本ブロックが表す部分とその他の部分との相対関係が固定される。例えば
図14の場合、茎に対する3枚の花びらの位置は定まっている。結果として、それを利用した表示を行う際、基準ブロックの動きに合わせて完成したオブジェクトモデルを動かすこともできる。
【0103】
なお
図14の例では基準ブロック256の位置や向きに変化がなかったが、構造解析部22は基準ブロック256を認識しているため、それを動かして他のブロックツールを接続し直しても同様に登録ができる。例えば右手を使って右方向から他のブロックツールを接続するのが好適であれば、基準ブロック256を回転させながら、他のブロックツールを常に同じ方向から接続していっても、上述と同様に接続箇所を変化させることができる。
【0104】
上記の原理を拡張すれば、隣り合うオブジェクトの向きや位置の相対関係の連鎖によって、完成したオブジェクト全体の形状を規定できるため、基本ブロックを1つに定める必要はなくなる。結果的に、比較的大きな規模の家や街などのデザインも、少ないブロックで容易に可能となる。オブジェクトの形状を徐々に足していくのみならず、ブロックツールの形状、向き、位置の時間変化を記録して徐々に足し合わせていけば、複数の動きを組み合わせて1つの動きを完成させることもできる。
【0105】
上述の態様は画面内のオブジェクトモデルを生成する例であったが、そのようにしてデザインしたモデルを3次元プリンタの入力値とすると、複雑なモデルであっても、その実物を容易に作成することができる。
【0106】
以上述べた本実施の形態によれば、様々な形状や大きさを有するブロックを情報処理の入力装置として利用する。このとき3次元空間での位置を検出するためのマーカを備えたブロック、モーションセンサを備えたブロック、角度センサを備えたブロックなどを準備することにより、組み立て後の結合体の3次元空間での位置、姿勢、および形状を同定することができる。このような構成とすると、個々のブロックの形状や連結手段などに対する制限が少なくなり、ユーザが意図する結合体を、情報処理装置に認識可能な状態で容易に作成することができる。また幾何的な見地から結合体の形状を算出するため、内部に何ら機構をもたないブロックも接続可能となり、ブロックのバリエーションを増やせるとともに製造コストを抑えることができる。
【0107】
さらに3次元空間での位置を認識できるため、オブジェクトのモデリングのみならず位置についても規定でき、ゲームやアニメーションなどにおけるキャラクタの移動を含めた動きを容易にデザインできる。また複数のブロックの相対的な位置関係を含め、ブロックの状態に対してオブジェクトモデルを登録しておくと、その状態となったときに画面内にオブジェクトが出現し、ブロックの動きに合わせて動く、といった娯楽性を提供できる。さらにブロックの状態とオブジェクトモデルの対応づけに係る情報を蓄積して登録していくことにより、少ないブロックで複雑なオブジェクトモデルを生成したり動かしたりすることができる。
【0108】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。