(57)【要約】【課題】自由に組み立てられる装置により多様かつ高度な表現を実現する。【解決手段】  ユーザが組み立てたブロックセット２６０と情報処理装置１０が通信することにより、情報処理装置１０は、ブロックセット２６０の構造情報を取得する。またブロックセット２６０に対応するクレーン車２６２のオブジェクトを表示装置１６に表示する。各関節や車輪の対応や、動きの対応を設定しておくことにより、ブロックセット２６０が動かされたら表示上のオブジェクトにそれを反映させる。オブジェクトを動かしたら、情報処理装置１０から制御信号を送信することによりブロックセット２６０にそれを反映させる。【選択図】図１７
2015136453.tif 000002
【特許請求の範囲】
【請求項１】
個別に準備されたブロックを連結してなる組立型装置から、全体構造における可動部分の位置および動き量に係る情報を取得するブロック情報受信部と、
前記組立型装置と対応づけられたオブジェクトモデルを表示装置に表示させる表示処理部と、
前記組立型装置の可動部分と前記オブジェクトモデルの可動部分との対応情報に基づき、前記組立型装置と前記オブジェクトモデルのうち一方の可動部分の変化を、他方の対応づけられた可動部分に反映させることにより、前記組立型装置と前記オブジェクトモデルを連動させる情報処理部と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記情報処理部はさらに、前記組立型装置の全体構造における可動部分の位置と、前記オブジェクトモデルの全体構造における可動部分の位置との比較に基づき、両者の可動部分を対応づけて前記対応情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理部はさらに、前記組立型装置の可動部分と前記オブジェクトモデルの可動部分にそれぞれ与えられた拘束条件に基づき、両者の可動部分を対応づけて前記対応情報を生成することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記情報処理部は、前記対応情報において、前記組立型装置と前記オブジェクトモデルのうち一方の、複数の前記可動部分をまとめてなる単位で、他方の可動部分に対応づけることを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記情報処理部は、前記組立型装置の関節と前記オブジェクトモデルの関節とを対応づけたうえ各関節の角度変化の反映規則を設定した対応情報に基づき、前記組立型装置と前記オブジェクトモデルのうち一方の関節の角度変化を、他方の対応づけられた関節に反映させることを特徴とする請求項１から４のいずれかに記載の情報処理装置。
【請求項６】
前記情報処理部は、前記対応情報に基づき、前記組立型装置の１つの関節の変化角度と同じ角度で、前記オブジェクトモデルの複数の関節を変化させることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記情報処理部は、前記対応情報に基づき、前記組立型装置と前記オブジェクトモデルのうち一方の、１つの関節の変化角度を、他方の複数の関節に分配した角度で各関節を変化させることを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記情報処理部は、前記対応情報に基づき、前記組立型装置と前記オブジェクトモデルのうち一方の、複数の関節の変化角度を合計した角度で、他方の１つの関節を変化させることを特徴とする請求項５に記載の情報処理装置。
【請求項９】
前記情報処理部は、前記組立型装置の車輪の位置関係と前記オブジェクトモデルの車輪の位置関係とを対応づけた対応情報に基づき、前記組立型装置と前記オブジェクトモデルのうち一方の走行を、他方の走行に反映させることを特徴とする請求項１から８のいずれかに記載の情報処理装置。
【請求項１０】
前記情報処理部は、前記オブジェクトモデルの走行を、前記組立型装置の走行に反映させる際、前記組立型装置の車輪の位置関係に基づき、制御対象の車輪およびその制御内容を決定することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記情報処理部は、前記組立型装置を手動で移動させたときの移動量および移動方向に対する車輪の回転量および操舵角に基づき、車輪の回転量および操舵角の制御量を決定することにより、前記オブジェクトモデルの移動速度および移動方向を、前記組立型装置の移動速度および移動方向に反映させることを特徴とする請求項９または１０に記載の情報処理装置。
【請求項１２】
個別に準備されたブロックを連結してなる組立型装置と、当該組立型装置からの入力信号に基づき情報処理を行う情報処理装置と、を備えた情報処理システムであって、
前記組立型装置は、
当該組立型装置の全体構造における可動部分の位置および動き量に係る構造情報を前記情報処理装置に送信する通信部と、
前記情報処理装置から送信された制御信号に従い前記可動部分を動かす駆動部と、
を備え、
前記情報処理装置は、
前記構造情報を受信する構造情報受信部と、
前記組立型装置と対応づけられたオブジェクトモデルを表示装置に表示させる表示処理部と、
前記組立型装置の可動部分と前記オブジェクトモデルの可動部分との対応情報に基づき、前記組立型装置と前記オブジェクトモデルのうち一方の可動部分の変化を、他方の対応づけられた可動部分の変化に反映させることにより、前記組立型装置と前記オブジェクトモデルを連動させる情報処理部と、
前記オブジェクトモデルの可動部分の変化を前記組立型装置の可動部分に反映させる際、前記駆動部に対する制御信号を送信する駆動制御部と、
を備えたことを特徴とする情報処理システム。
【請求項１３】
互いに連結可能な複数のブロックからなる組立型装置であって、
前記組立型装置の全体構造における可動部分の位置および動き量に係る構造情報を通信を確立した情報処理装置に送信する通信部と、
前記情報処理装置から送信された制御信号に従い前記可動部分を動かす駆動部と、
を備え、
前記制御信号は、前記情報処理装置が表示装置に表示させているオブジェクトモデルと前記組立型装置が連動するように、当該オブジェクトモデルの可動部分の変化を、前記組立型装置の対応する可動部分に反映させるために送信される信号であることを特徴とする組立型装置。
【請求項１４】
情報処理装置が、
個別に準備されたブロックを連結してなる組立型装置から、全体構造における可動部分の位置および動き量に係る情報を取得するステップと、
前記組立型装置と対応づけられたオブジェクトモデルのデータをメモリから読み出し、描画することにより表示装置に表示させるステップと、
前記組立型装置の可動部分と前記オブジェクトモデルの可動部分との対応情報をメモリから読み出し、それに基づき、前記組立型装置と前記オブジェクトモデルのうち一方の可動部分の変化を、他方の対応づけられた可動部分に反映させることにより、前記組立型装置と前記オブジェクトモデルを連動させるステップと、
を含むことを特徴とする情報処理方法。
【請求項１５】
個別に準備されたブロックを連結してなる組立型装置から、全体構造における可動部分の位置および動き量に係る情報を取得する機能と、
前記組立型装置と対応づけられたオブジェクトモデルを表示装置に表示させる機能と、
前記組立型装置の可動部分と前記オブジェクトモデルの可動部分との対応情報に基づき、前記組立型装置と前記オブジェクトモデルのうち一方の可動部分の変化を、他方の対応づけられた可動部分に反映させることにより、前記組立型装置と前記オブジェクトモデルを連動させる機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラム。
【請求項１６】
個別に準備されたブロックを連結してなる組立型装置から、全体構造における可動部分の位置および動き量に係る情報を取得する機能と、
前記組立型装置と対応づけられたオブジェクトモデルを表示装置に表示させる機能と、
前記組立型装置の可動部分と前記オブジェクトモデルの可動部分との対応情報に基づき、前記組立型装置と前記オブジェクトモデルのうち一方の可動部分の変化を、他方の対応づけられた可動部分に反映させることにより、前記組立型装置と前記オブジェクトモデルを連動させる機能と、
をコンピュータに実現させるコンピュータプログラムを記録したことを特徴とするコンピュータにて読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実空間における物体を利用した情報処理技術に関する。
【背景技術】
【０００２】
実空間における人や物などの物体に係るパラメータを何らかの手段により計測し、それを入力値としてコンピュータに取り込み解析したり、画像として表示したりする技術が様々な分野で利用されている。コンピュータゲームの分野においては、ユーザ自身やユーザが把持するマーカーの動きを取得し、それに応じて表示画面内の仮想世界におけるキャラクタを動作させるといったことにより、直感的かつ容易な操作が実現されている（例えば特許文献１参照）。このように実空間における物体の動きや形状変化を画面表示に反映させる技術は、ゲームのみならず玩具や学習用教材などへの応用が見込まれている（例えば非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】ＷＯ  ２００７／０５０８８５  Ａ２公報
【非特許文献】
【０００４】
【非特許文献１】Posey: Instrumenting a Poseable Hub and Strut Construction Toy, Michael Philetus Weller, Ellen Yi-Luen Do, Mark D Gross, Proceedings of the Second International Conference on Tangible and Embedded Interaction, 2008, pp 39-46
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のように主たる演算を行う情報処理層とは別の物体を利用して情報処理を進捗させる態様において、臨場感を演出し直感的な操作を可能とするには、知覚されたアフォーダンスを与えることが重要であり、例えば車のハンドル型、拳銃型など本物に近い形状で同様の動作が可能な装置を提供することが考えられるが、用途が限定的となる。装置の形状を可変とすると用途は広がるが、それに応じて形状変化や動きを計測するための工夫が必要となる。
【０００６】
例えば非特許文献１に開示の技術では、部品の結合部に赤外ＬＥＤとそれを受光するフォトセンサを内蔵させることにより、部品の回転角を計測し、形状を特定している。この場合、計測できる回転角が限定的となるため形状の可変範囲も限定的となる。また全ての部品に素子を備える必要があるため製造コストが高くなる。このように装置の形態に柔軟性をもたせるほど、それを計測するための機構が複雑化し、結果として製造コストや処理コストが増大する傾向にある。
【０００７】
本発明はこのような課題に鑑みてなされたものであり、その目的は、自由に形成することができる装置を利用して、多様かつ高度な表現を実現することにある。
【課題を解決するための手段】
【０００８】
本発明の別の態様は情報処理装置に関する。この情報処理装置は、個別に準備されたブロックを連結してなる組立型装置から、全体構造における可動部分の位置および動き量に係る情報を取得するブロック情報受信部と、組立型装置と対応づけられたオブジェクトモデルを表示装置に表示させる表示処理部と、組立型装置の可動部分とオブジェクトモデルの可動部分との対応情報に基づき、組立型装置とオブジェクトモデルのうち一方の可動部分の変化を、他方の対応づけられた可動部分に反映させることにより、組立型装置とオブジェクトモデルを連動させる情報処理部と、を備えたことを特徴とする。
【０００９】
本発明のさらに別の態様は情報処理システムに関する。この情報処理システムは、互いに連結可能な複数のブロックからなる組立型装置と、当該組立型の装置からの入力信号に基づき情報処理を行う情報処理装置と、を備えた情報処理システムであって、組立型装置は、当該組立型装置の全体構造における可動部分の位置および動き量に係る構造情報を前記情報処理装置に送信する通信部と、情報処理装置から送信された制御信号に従い可動部分を動かす駆動部と、を備え、情報処理装置は、構造情報を受信する構造情報受信部と、組立型装置と対応づけられたオブジェクトモデルを表示装置に表示させる表示処理部と、組立型装置の可動部分と前記オブジェクトモデルの可動部分との対応情報に基づき、組立型装置とオブジェクトモデルのうち一方の可動部分の変化を、他方の対応づけられた可動部分の変化に反映させることにより、組立型装置とオブジェクトモデルを連動させる情報処理部と、オブジェクトモデルの可動部分の変化を組立型装置の可動部分に反映させる際、駆動部に対する制御信号を送信する駆動制御部と、を備えたことを特徴とする。
【００１０】
本発明のさらに別の態様は組立型装置に関する。この組立型装置は、互いに連結可能な複数のブロックからなる組立型装置であって、組立型装置の全体構造における可動部分の位置および動き量に係る構造情報を通信を確立した情報処理装置に送信する通信部と、情報処理装置から送信された制御信号に従い可動部分を動かす駆動部と、を備え、制御信号は、情報処理装置が表示装置に表示させているオブジェクトモデルと組立型装置が連動するように、当該オブジェクトモデルの可動部分の変化を、組立型装置の対応する可動部分に反映させるために送信される信号であることを特徴とする。
【００１１】
本発明のさらに別の態様は情報処理方法に関する。この情報処理方法は、情報処理装置が、個別に準備されたブロックを連結してなる組立型装置から、全体構造における可動部分の位置および動き量に係る情報を取得するステップと、組立型装置と対応づけられたオブジェクトモデルのデータをメモリから読み出し、描画することにより表示装置に表示させるステップと、組立型装置の可動部分とオブジェクトモデルの可動部分との対応情報をメモリから読み出し、それに基づき、組立型装置とオブジェクトモデルのうち一方の可動部分の変化を、他方の対応づけられた可動部分に反映させることにより、組立型装置とオブジェクトモデルを連動させるステップと、を含むことを特徴とする。
【００１２】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１３】
本発明によると、自由に形成が可能な装置を用いて多様かつ高度な表現を実現することができる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態を適用できる情報処理システムの構成例を示す図である。
【図２】本実施の形態におけるブロックセットの外観例を示す図である。
【図３】図１で示したブロックセットのうち、通信ブロックの構造のみを示す図である。
【図４】本実施の形態において導出されるコアの中心軸を模式的に示す図である。
【図５】本実施の形態でブロックセットに含まれる通信ブロックの内部構成例を模式的に示す図である。
【図６】本実施の形態におけるブロックセットと情報処理装置の構成を詳細に示す図である。
【図７】本実施の形態のブロックセットにおける情報伝達経路と伝達される情報の例を模式的に示す図である。
【図８】本実施の形態における通信ブロックの基本情報のデータの構造例を示す図である。
【図９】本実施の形態において非通信ブロックを含むブロックセットの状態を特定する基本的な処理を説明するための図である。
【図１０】本実施の形態における非通信ブロックの基本情報のデータの構造例を示す図である。
【図１１】本実施の形態において時間発展的にブロックセットの形状を特定する処理を説明するための図である。
【図１２】本実施の形態において構造が変化するブロックセットの形状を特定する処理を説明するための図である。
【図１３】本実施の形態においてコアの関節角の変化に起因して変形するブロックセットの形状を特定する処理を説明するための図である。
【図１４】本実施の形態における、非通信ブロックを含むブロックセットの状態を特定する処理手順を示すフローチャートである。
【図１５】本実施の形態において実現できるブロックセットと表示の関係を例示する図である。
【図１６】本実施の形態においてブロックセットに対し外観を設定する場合のブロックセットと表示の関係を例示する図である。
【図１７】本実施の形態において組み立てたブロックセットに対し１つの３Ｄオブジェクトを対応づけた場合のブロックセットと表示の関係を例示する図である。
【図１８】本実施の形態においてブロックセットと３Ｄオブジェクトの動きを対応づけるために必要な情報を例示する図である。
【図１９】本実施の形態において情報処理装置がブロックセットと３Ｄオブジェクトの動きに係る対応づけを行う処理手順を示すフローチャートである。
【図２０】図１９のＳ４６においてユーザによるモデル選択の入力を受け付けるために表示装置に表示する画面の例を示す図である。
【図２１】図１９のＳ４８においてブロックセットと選択されたモデルに共通の座標系を設定するために表示装置に表示する画面の例を示す図である。
【図２２】本実施の形態において、２つのブロックでオブジェクトを作成するときのブロックセットと、登録時の表示画面の変遷例を示す図である。
【図２３】本実施の形態において、１対１で対応づけられた関節が同じ角度で動く場合を示す図である。
【図２４】本実施の形態において、グルーピングされた２つの関節が１つの関節に対応づけられている場合の各関節の角度の対応例を示す図である。
【図２５】本実施の形態において、２つの関節がグルーピングされて１つの関節に対応づけられている場合の各関節の角度の対応の別の例を示す図である。
【図２６】本実施の形態において、１対１で対応づけられた関節の角度変化を異ならせる場合を示す図である。
【図２７】本実施の形態において、ブロックセットの１つの関節を３Ｄオブジェクトの複数の関節に対応づける例を示す図である。
【図２８】図１９のＳ５２においてブロックセットと３Ｄオブジェクトの動きの対応を設定するために表示装置に表示する画面の例を示す図である。
【図２９】本実施の形態における、ブロックセットと３Ｄオブジェクトの対応箇所とそれぞれの動きの対応にかかる情報のデータ構造例を示す図である。
【図３０】本実施の形態において、３Ｄオブジェクトとブロックセットの動きの対応を設定する処理手順を示すフローチャートである。
【図３１】本実施の形態において、ブロックセットの車輪に係る設定を、複合リンクへ拡張した場合について説明する図である。
【発明を実施するための形態】
【００１５】
本実施の形態では、複数のブロックを組み立てたり変形させたりし、その形状、姿勢、位置を情報処理の入力値として利用する。すなわちこのようなブロックを、情報処理装置に対する入力装置と位置づけることができる。さらに、情報処理装置が行った処理の結果を反映させるように、組み立てたブロックの形状、姿勢、位置を変化させる場合もある。この場合ブロックは、情報処理装置に対する出力装置と位置づけられる。ここで情報処理装置が行う処理は特に限定されないが、好適な態様を後に例示する。以後、このようなブロックのまとまり、またはそれを組み立てた物を総称して「ブロックセット」と呼ぶ。また後述するように、ブロックセットには服飾品を模した物や粘土細工など一般的な意味でのブロック以外の物体を含んでよく、その形状や材質は限定されない。以後、それらも含めて「ブロック」と呼ぶ。
【００１６】
図１は本実施の形態を適用できる情報処理システムの構成例を示す。情報処理システム２は、ブロックセット１２０、ブロックセット１２０を撮像するカメラ１２２、ブロックセット１２０を入力装置あるいは出力装置として所定の情報処理を行う情報処理装置１０、情報処理装置１０に対するユーザ操作を受け付ける入力装置１４、情報処理装置が出力したデータを画像として表示する表示装置１６を含む。
【００１７】
情報処理装置１０は、たとえばゲーム装置やパーソナルコンピュータであってよく、必要なアプリケーションプログラムをロードすることで情報処理機能を実現してもよい。表示装置１６は液晶ディスプレイ、プラズマディスプレイ、有機ＥＬディスプレイなど一般的なディスプレイでよい。またそれらのディスプレイとスピーカを備えたテレビであってもよい。入力装置１４は、ゲームコントローラ、キーボード、マウス、ジョイスティック、表示装置１２の画面上に設けたタッチパッドなど、一般的な入力装置のいずれか、またはいずれかの組み合わせでよい。
【００１８】
情報処理装置１０と、カメラ１２２、入力装置１４、表示装置１６との接続は、有線、無線を問わず、また種々のネットワークを介していてもよい。あるいはカメラ１２２、情報処理装置１０、入力装置１４、表示装置１６のうちいずれか２つ以上、または全てが組み合わされて一体的に装備されていてもよい。また、カメラ１２２は必ずしも表示装置１６の上に搭載されていなくてもよい。ブロックセット１２０は情報処理装置１０で処理される内容によっては複数でもよい。ブロックセット１２０と情報処理装置１０は、Bluetooth（ブルートゥース）（登録商標）プロトコルやIEEE802.11プロトコルなどを用いて無線接続を確立する。あるいはブロックセット１２０の一つのブロックと情報処理装置１０を、ケーブルを介して接続してもよい。
【００１９】
本実施の形態のブロックセット１２０は上述のとおり、情報処理装置１０に対する入力装置として用いる場合と、出力装置として用いる場合がある。つまり前者の場合、ユーザがブロックセット１２０の位置、姿勢、形状を変化させた結果を、情報処理装置１０が入力値として用い情報処理を行い、表示装置１６にその結果を画像として表示する。後者の場合、ユーザが入力装置１４を操作することによって情報処理装置１０が情報処理を行い、その結果としてブロックセット１２０自体を動かす。本実施の形態は、そのいずれのモードも実現可能として構成してもよいし、いずれか一方のみを実現可能として構成してもよい。
【００２０】
図２はブロックセットを構成する個々のブロックの外観例を示している。本実施の形態においてブロックは大きく２種類に分類される。一方は他のブロックや情報処理装置１０と通信可能に構成されるブロック、他方は通信手段を持たないブロックである。以後、前者を「通信ブロック」、後者を「非通信ブロック」と呼ぶ。通信ブロックは、他のブロックとの通信機構のほか、ブロックの向き、角度、位置などの物理量を測定する各種センサを内蔵していてよい。
【００２１】
通信ブロック、非通信ブロックに関わらず、ブロックは図示するように、四角柱型ブロック１０２ａ、１０２ｂ、１０２ｃ、立方体型ブロック１０２ｄ、円柱型ブロック１０２ｆ、１０２ｋ、球型ブロック１０２ｅ、板状ブロック１０２ｉ、直方体型ブロック１０２ｊなど様々な形状を有することができる。各ブロックには所定のサイズおよび形状を有する凸部１０４、凹部１０６を設け、凹部１０６に凸部１０４を差し込むことによりブロック同士を所望の位置で連結可能に構成する。あるいは直方体型ブロック１０２ｊ、円柱型ブロック１０２ｋのように、他のブロック自体をはめ込める形状の凹部１０７等を設けることにより、他のブロックを包含可能に構成してもよい。
【００２２】
ブロックセットにはさらに、連結するブロックの間隔を調整するため、両端を異なるブロックの凹部１０６に差し込み可能なジョイント用ブロック１０２ｇ、１０２ｈを含めてもよい。またジョイント用ブロックが回転するなどして接続するブロック間の位置・姿勢関係を変化させることができるようにしてもよい。
【００２３】
通信ブロックの凸部１０４および凹部１０６は、ブロック間の信号伝送を可能とする端子の役割も有する。そのため先端にはそれぞれ、ブロック内部に設けるバスなどの規格に応じた構造のコネクタを備える。一般的に普及している各種コネクタを採用したり、専用の特殊コネクタを設けたりすることにより、信号伝送とブロック同士の物理的な連結を同時に達成することができる。なお信号伝送の経路を別途用意するとともに、連結箇所を別途特定できれば、ブロック同士の接続手段は凸部１０４と凹部１０６の連結に限定されず、面ファスナー、磁石、接着テープ、接着剤などで実現してもよい。ここで別途用意する信号伝送の経路は、無線通信の機構でもよい。
【００２４】
また通信ブロックのうちあるブロック（図２の場合、四角柱型ブロック１０２ｂ）は、２つのブロックと、それらを屈伸可能にする屈伸軸１１０と、ブロック同士がなす角度を検出するポテンショメータによって構成してよい。なお屈伸させる機構は、図示するように一方のブロックを貫通する屈伸軸１１０の両端に他方のブロックの突起を接合する形態のほか、ヒンジや屈伸可能な金属などによって２つのブロックを結合させた形態、球体関節人形における関節と同様の、複数自由度を有する機構などでもよく、特に限定されるものではない。ブロック同士の角度は連続的に変化可能としてもよいし、複数段階に変化可能としてもよい。また軸の向きは図示するものに限らない。
【００２５】
構成要素であるブロックの角度は、好適にはユーザが手を離しても維持されるような構造とする。なおブロック同士の角度はポテンショメータ以外の角度センサで計測してもよい。例えばブロック内部に他のブロックとの相対角を測定するセンサを搭載しておけば、ブロック同士は必ずしも接続されていなくてもよい。また後述するように１つのブロックを屈伸可能、回転可能に構成し、その屈伸角度、回転角を計測してもよい。
【００２６】
以後、このように角度を可変とするための機構を「関節」と呼び、関節の動きによって相対角が変化する２つのブロックを「リンク」と呼ぶことがある。さらに、このように関節を有する通信ブロックは、情報処理装置１０からの要求によって関節角を制御可能としてもよい。この場合、当該通信ブロックには、サーボモータなど関節角を制御するためのアクチュエータを設ける。
【００２７】
また通信ブロックのうちあるブロック（図２の場合、板状ブロック１０２ｉ）は、側面に突出した、自転可能な軸１０９を有していてよい。複数の軸１０９に車輪を装着することによりブロックを車のように移動させることができるようになる。当該移動やユーザがブロックを押すことによって実現してもよいし、情報処理装置１０からの要求によって実現してもよい。後者の場合、当該通信ブロックには、軸を回転させるモーターなどのアクチュエータを設ける。軸１０９を車軸とする場合、車輪の向きを変化させるラック・アンド・ピニオンなどの機構を備えていてもよく、これも情報処理装置１０からの要求に従いアクチュエータにより制御可能とする。
【００２８】
また通信ブロックのうちあるブロックの内部には、加速度センサ、ジャイロセンサ、地磁気センサなどや、カメラと対象物に取り付けたマーカーや形状そのものを利用して姿勢をトラッキングする手法などのモーションセンシング機能のうちの１つまたは複数の組み合わせを搭載する。センサを搭載するブロック、および搭載するセンサの種類や組み合わせは、ブロックセットを用いて実現する情報処理によって決定する。または様々なバリエーションのなかからユーザが組み立て時に選択する。
【００２９】
さらに通信ブロックのうちあるブロック（図２の場合、四角柱型ブロック１０２ａ）には、マーカー１０８を設けてもよい。マーカー１０８は、後述するカメラで撮影した画像における位置および大きさから、３次元空間での位置を特定するためのものである。したがってマッチング処理などによって撮影画像から検出できる大きさ、形状、色を有して形成される。例えば、光透過性を有する球形の樹脂の内部に発光ダイオードや電球など一般的な発光体を備えた球体や、バーコード、２次元コードなどでもよい。複数のブロックにマーカー１０８を設ける場合は、ブロックごとにその色を変えてもよい。
【００３０】
通信ブロックの外殻や非通信ブロックは、代表的には合成樹脂で形成するが、金属やガラスなどその材料は限定されない。特に非通信ブロックは通信機構等を内蔵しないため、その素材、形状、サイズは自由に決定できる。例えば布で作成した衣装やゴムで作成した人形の頭部などの各種パーツでもよいし、武器やアクセサリなど付加的な物でもよい。ユーザが自作したものでもよい。例えば消しゴムを削ってなる立体や、粘土細工、紙工作の作品、折り紙作品などでもよい。また通信ブロックからの通電によって所定色に発光するＬＥＤや画像を表示する表示装置を備えたブロックなどでもよい。
【００３１】
本実施の形態の情報処理装置１０は、通信ブロックとの通信により取得できるブロックセットの骨格形状、姿勢などの情報と、カメラ１２２が撮影した外観形状の情報とを相補間的に用いてブロックの状態を高精度に特定する。そのためブロックセットの外観は、非通信ブロックを用いて自由に表現できる。例えば図２の直方体型ブロック１０２ｊ、円柱型ブロック１０２ｋのように、通信ブロックを包含する形状を有するブロックを非通信ブロックとして実現してもよい。
【００３２】
図３は、図１で示したブロックセット１２０のうち、通信ブロックの構造のみを示している。つまり同図のブロックセット１２０ａは、図１のブロックセット１２０から非通信ブロックである直方体型ブロック１０２ｊ、円柱型ブロック１０２ｋを除いたものであり、図２で示した四角柱型ブロック１０２ａ、１０２ｂ、立方体型ブロック１０２ｄ、およびジョイント用ブロック１０２ｈによって構成される。このうち四角柱型ブロック１０２ｂの下部のブロック、および立方体型ブロック１０２ｄは、図１のブロックセット１２０において、非通信ブロックである直方体型ブロック１０２ｊおよび円柱型ブロック１０２ｋにそれぞれ内包されており外部からは見えない。このような通信ブロックからなる構造体は、ブロックセット１２０全体の骨格を構成しているとも捉えられる。以後、組み立てられたブロックセット１２０のうち通信ブロックからなる部分を「コア」と呼ぶ。
【００３３】
本実施の形態では、コアを構成する通信ブロックに備えたモーションセンサ、ポテンショメータによって必要なパラメータを検出することにより、ブロックセット１２０の姿勢および形状を効率的に算出する。例えば図３のブロックセット１２０ａの場合、（１）各ブロックの連結位置およびブロックの種類、（２）四角柱型ブロック１０２ａまたは１０２ｂの傾きベクトルｍ１、（３）四角柱型ブロック１０２ｂを構成する２つのブロックの角度θ、（４）各ブロックの長さＬ１、Ｌ２、Ｌ３、Ｌ４、Ｌ５によって、各ブロックの向き、ひいてはブロックセット１２０の中心軸の形状および姿勢を導出できる。
【００３４】
上記（１）および（４）はブロック間の信号伝送により判明し、上記（３）はポテンショメータにより計測できるとすると、上記（２）を計測するために、四角柱型ブロック１０２ａまたは１０２ｂにモーションセンサが内蔵してあれば必要十分となる。あるいは内蔵されたブロックを四角柱型ブロック１０２ａまたは１０２ｂとして選択すればよい。
【００３５】
さらに実世界の３次元空間におけるブロックセットの位置座標は、カメラ１２２による撮影画像を利用して特定する。ここでカメラ１２２をステレオカメラとすることにより、カメラ１２２に対する奥行き方向とカメラの視野平面で構成される３次元空間におけるブロックセットの絶対位置を取得できる。ステレオカメラが左右の異なる視点から撮影した画像における視差を利用して、三角測量の原理によって対象物の３次元空間での位置を取得する技術は広く知られている。ステレオカメラに代えて、両眼立体視以外の、奥行きや３次元情報取得手段を利用してもよい。例えば、視点移動カメラを用いてもよいし、赤外線照射機構とその反射光を検出する赤外線センサを用い、ＴＯＦ（Time Of Flight）の手法によってブロックセットの位置を特定してもよい。ブロックセット１２０を置く台の上面にタッチパネルを設け、それにより置かれた位置を検出してもよい。
【００３６】
あるいは図示するように、マーカー１０８を備えた四角柱型ブロック１０２ａを用いることにより、単眼のカメラ１２２で撮影した静止画や動画のフレーム画像に基づき位置を特定してもよい。上述のようにマーカー１０８を既知の色、輝度、大きさを有する発光体とすると、撮影画像からマーカーの像を容易に検出できる。そして当該マーカーの像の画像上の位置および大きさから、３次元空間でのマーカーの位置座標（ｘ１，ｙ１，ｚ１）を特定できる。それ以外のマーカーを採用する場合も、パターンマッチングや特徴点抽出など、一般的な画像認識技術を適用できる。ブロックセット１２０を動かし、それを動画像として撮影する場合は、既存のトラッキング技術を適用することにより効率的な検出が行える。
【００３７】
なおマーカー１０８を赤外線などの不可視光線を発光する装置としてもよい。この場合、不可視光線を検出する装置を別途導入し、マーカー１０８の位置を検出する。同様に、深度センサ、超音波センサ、音センサなどを利用してもよい。以上述べた絶対位置検出手法のいずれか２つ以上を組み合わせて最終的な位置座標を算出してもよい。図４はそのようにして導出した、コアの中心軸を模式的に示している。図示するように中心軸１２４は、３次元空間においてその位置、姿勢および形状が特定される。当該３次元空間はカメラ１２２のカメラ座標系でもよいし、それを所望の座標系に変換したものでもよい。以後、コアやブロックセットの位置、姿勢および形状を総称して「状態」と呼ぶことがある。
【００３８】
図５は通信ブロックの内部構成例を模式的に示している。上述のとおりブロックの内部構成に様々なバリエーションを持たせることにより、用途に応じた使い分けが可能になる。またコアの状態を特定するのに必要と想定されるセンサを複数のブロックに分散させて装備することにより、過度なセンサ搭載を避けることができ、製造コストを抑えることができる。
【００３９】
図５の例でブロック１２６ａはバッテリー１２８ａ、通信機構１３０ａ、メモリ１３２ａ、位置センサ１３４、モーションセンサ１３６ａを備える。ここで通信機構１３０ａは、他のブロックからの信号を、接続端子を介して受信する有線通信機構のほか、情報処理装置１０との無線通信を行う機構も含むものとする。メモリ１３２ａは、ブロック１２６ａの識別番号を保持する。当該識別番号は情報処理装置１０においてブロック１２６ａのサイズ、凹部、凸部の位置などの情報と対応づけられるものであり、同じ種類のブロックには同じ識別番号を付与してよい。あるいは組み立てられたブロックセット内での信号伝送のルーティングなどに利用できるようにブロックごとに一意に定めてもよい。
【００４０】
位置センサ１３４はブロック１２６ａの絶対位置を取得するためのセンサであり、画像認識用のマーカーもこれに含まれる。ただしマーカーの場合は上述のとおり外部に設置したカメラ１２２との組み合わせによって絶対位置を検出する。モーションセンサ１３６ａは上述のとおり、加速度センサ、ジャイロセンサ、地磁気センサのいずれか、またはいずれか２つ以上の組み合わせやカメラを利用した手法などとする。
【００４１】
ブロック１２６ｂは、バッテリー１２８ｂ、通信機構１３０ｂ、メモリ１３２ｂ、モーションセンサ１３６ｂを備える。各機構はブロック１２６ａについて上述したのと同様でよいが、通信機構１３０ｂは、他のブロックからの信号を受信する有線通信機構のみで構成してもよい。このようなブロックは、情報処理装置１０との通信が可能なブロック１２６ａと組み合わせて使用する。その他のブロックの通信機構も同様である。
【００４２】
ブロック１２６ｃは、バッテリー１２８ｃ、通信機構１３０ｃ、メモリ１３２ｃ、角度センサ１３８、アクチュエータ１３９ａを備える。ブロック１２６ｃは図２の四角柱型ブロック１０２ｂのように関節を有する通信ブロックであり、角度センサ１３８は、ポテンショメータなど関節角を検出するセンサである。アクチュエータ１３９ａは情報処理装置１０からの制御信号により関節角を変化させる。制御信号によるアクチュエータの駆動には、アクチュエータの種類に応じた一般的な技術を採用できる。
【００４３】
ブロック１２６ｄは、バッテリー１２８ｄ、通信機構１３０ｄ、メモリ１３２ｄ、ロータリーエンコーダ１４１、アクチュエータ１３９ｂを備える。ブロック１２６ｄは図２の板状ブロック１０２ｉのように、外部に突出した回転可能な軸を有する通信ブロックであり、車輪を装着することによりブロック１２６ｄ自体を手動や自動で推進させることができる。あるいはあらかじめ軸と車輪を一体的に備えていてもよい。
【００４４】
ロータリーエンコーダ１４１は車輪の回転量を検出するセンサである。アクチュエータ１３９ｂは情報処理装置１０からの制御信号により車輪を回転させるモーターなどである。ブロック１２６ｅは通信機構１３０ｅ、メモリ１３２ｅを備える。すなわちブロック１２６ｅは、バッテリーやセンサを備えないブロックである。そのためバッテリーを搭載した他のブロック１２６ａ、１２６ｂと組み合わせて使用する。
【００４５】
なお図５の通信ブロックは一例に過ぎず、各種センサやその他の機構をいかに組み合わせてもよい。例えばブロックセットが動く部分として、関節や車軸のみならず、操舵方向を変化させたり、一部のブロックを変位させたりする機構を備えていてもよい。これらの機構は、情報処理装置１０からの制御信号によって駆動するアクチュエータにより動くようにしてもよい。またＬＥＤや表示装置を備えていてもよい。接続した非通信ブロックに対する通電を行う機構を備えていてもよい。さらに、図示したセンサのほか、実用化されているいかなるセンサを内蔵してもよい。
【００４６】
このような様々な内部構成を有する通信ブロックを、図２で示したような様々な形状で準備する。同じ種類のブロックを複数準備してもよい。あるいは全てのブロックの形状およびサイズを統一してもよいし、内部構成を統一してもよい。形状や内部構成にバリエーションをもたせ、各種ブロックを個別に購入できるようにすると、個々のユーザの用途に合わせて最低限の費用で臨機応変に好みのブロックセットを組み立てることができる。基本的な組み立てが可能なブロックのセットをまず提供し、後から買い足せるようにしてもよい。
【００４７】
図６はブロックセット１２０と情報処理装置１０の構成を詳細に示している。図６において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。また既述したように、ブロックセット１２０の各ブロックは通信機構、メモリ、各種センサ、アクチュエータによって構成されている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００４８】
ブロックセット１２０は上述のとおり、個々のブロックをユーザが選んで組み立てることによって形成される。図６では組み立てられたブロックセットのうち、コアの部分の機能ブロックを示しており、それを構成する通信ブロックを第１ブロック１４２ａ、第２ブロック１４２ｂ、第３ブロック１４２ｃ、・・・などとしている。情報の錯綜を防ぐため、ブロックセット１２０を構成する通信ブロックのうち、情報処理装置１０との通信を確立するブロックは、基本的には１つのみとする。そのため第１ブロック１４２ａにハブの役割を与える。そして、当該第１ブロック１４２ａから接続関係の遠い通信ブロックから情報を伝達し、第１ブロック１４２ａにコア全体の情報を集約させる。
【００４９】
以下、ブロックの連結において第１ブロック１４２ａに相対的に近いブロックを「上位」、遠いブロックを「下位」とする。第１ブロック１４２ａとなるブロックはあらかじめ１つに定めておいてもよいし、情報処理装置１０との通信機構を有するブロックに図示しないスイッチなどを設け、ユーザがオンにしたブロックを第１ブロック１４２ａとしてもよい。または組み立て段階において情報処理装置１０と最初に通信を確立したブロックを第１ブロック１４２ａとしてもよい。
【００５０】
このようにして決定した第１ブロック１４２ａに、ユーザが別の通信ブロックを連結すると、当該ブロックは第２ブロック１４２ｂとなる。第２ブロック１４２ｂにさらに別の通信ブロックを連結すると、当該ブロックは第３ブロック１４２ｃとなる。なお同図では３つの通信ブロックのみを示しているが、コアを構成する通信ブロックの数は限定されず、１つ、あるいは４つ以上でも、構成および動作は同様に考えることができる。
【００５１】
第１ブロック１４２ａ、第２ブロック１４２ｂ、第３ブロック１４２ｃはそれぞれ、第１通信部１４３ａ、１４３ｂ、１４３ｃ、要素情報取得部１４４ａ、１４４ｂ、１４４ｃ、第２通信部１４６ａ、１４６ｂ、１４６ｃを備える。第２ブロック１４２ｂはさらに、駆動部１４８を備える。ただし駆動部１４８はその他のいずれの通信ブロックに備えられていてもよい。第１通信部１４３ａ、１４３ｂ、１４３ｃは、直接接続された下位のブロックから送信された情報を受信する。ここで受信する情報は、当該ブロックより下位に接続されているブロックの識別番号、連結箇所の識別番号、内蔵するセンサによる計測結果を含む。複数のブロックが連結されている場合は、最下位のブロックからブロックを通過するごとに情報が重畳される。
【００５２】
要素情報取得部１４４ａ、１４４ｂ、１４４ｃは、当該ブロックが内蔵しているセンサおよび、他のブロックを接続する箇所に設けた端子を含み、センサの計測結果、および下位のブロックが接続している箇所に係る情報を取得する。第２通信部１４６ａ、１４６ｂ、１４６ｃは、第１通信部１４３ａ、１４３ｂ、１４３ｃが受信した、それより下位のブロックの識別番号、連結箇所の識別番号、内蔵するセンサによる計測結果を含む情報に、当該ブロックの要素情報取得部１４４ａ、１４４ｂ、１４４ｃが取得した情報を追加し、直接接続された上位のブロックに信号として送信する。ただし第１ブロック１４２ａの第２通信部１４６ａは、当該情報を情報処理装置１０に送信する。さらに第２通信部１４６ａは、処理の開始、終了の要求信号、通信の確立に必要な各種信号や、ブロックセットのアクチュエータを駆動させるための制御信号を情報処理装置１０から受信するなど、情報処理装置１０とのインターフェースとして機能する。
【００５３】
情報処理装置１０からアクチュエータを駆動させる制御信号が送信された場合、当該信号は第１ブロック１４２ａから下位のブロックへ順次転送される。つまり各ブロックの第１通信部１４３ａ、１４３ｂ、１４３ｃは、直接接続された下位のブロックへ当該信号を送信する。各ブロックの第２通信部１４６ｂ、１４６ｃは、直接接続された上位のブロックから当該信号を受信する。第２ブロック１４２ｂの駆動部１４８は関節角を変化させたり車軸を回転させたりするアクチュエータを含み、第２ブロック１４２ｂが、上位のブロックから送信された制御信号において駆動対象として指定されている場合、それに応じた量でアクチュエータを動かす。
【００５４】
情報処理装置１０は、ブロックセット１２０の第１ブロック１４２ａからコアの状態に係る情報を受信するコア情報受信部２０、カメラ１２２が撮影した画像とコアの状態に係る情報に基づきブロックセット１２０の形状、姿勢、位置を特定する構造解析部２２、ブロックセット１２０の形状、姿勢、位置、あるいは入力装置１４に対するユーザ操作に応じて所定の情報処理を行う情報処理部３０、情報処理の結果、表示すべき画像を生成し表示装置１６に出力する表示処理部３２、ブロックセット１２０の動作を制御する信号を送信する駆動制御部３４を含む。情報処理装置１０はさらに、個々のブロックに係る情報を格納するブロック情報記憶部２４、表示装置１６に表示すべき３Ｄオブジェクトのモデルデータを格納するモデルデータ記憶部２６、ブロックセットと３Ｄオブジェクトの部位や動きの対応情報を記憶する対応情報記憶部２８を含む。
【００５５】
コア情報受信部２０は、ブロックセット１２０の第１ブロック１４２ａが集約した、コアを構成する通信ブロックの識別番号、その連結箇所、内蔵されたセンサによる計測結果に係る情報を含む信号を受信する。構造解析部２２はカメラ１２２から、ブロックセット１２０を撮影した動画像や静止画像のデータを取得する。そして、コア情報受信部２０が受信した情報と撮影画像から得られる情報とを統合し、ブロックセット１２０全体の位置、姿勢、形状を特定する。ブロックセット１２０からの信号とカメラ１２２からの画像データは即時入力されるため、時間的な対応がとれているものとするが、必要な時間分解能によっては同期化処理などを行ってもよい。
【００５６】
構造解析部２２はブロックセット１２０のうち、コアの形状および姿勢はコア情報受信部２０からの情報によって特定する。例えば、コアを構成する通信ブロックの識別番号に基づき、図３のＬ１〜Ｌ５の情報を導出する。さらに実際の連結箇所の識別番号、および角度センサの情報から連結位置、およびブロック同士のなす角度を特定する。さらにモーションセンサの情報から図３のベクトルｍ１を導出する。ブロックセット１２０の３次元空間における位置や非通信ブロックを含むブロックセット１２０の表面的な形状に係る情報は、カメラ１２２から送信された撮影画像や、撮影画像から生成した奥行き画像などに基づき特定する。
【００５７】
このとき、例えば図３のマーカー１０８など、コアに含まれる通信ブロックの像を画像から検出し、そこを基準部位とするとともに、奥行き画像などからその位置を導出する。そして図４の中心軸１２４のように、当該基準部位からつながるコアの構造と、基準部位の像に対する非通信ブロックの像の位置関係から、コアと非通信ブロックの位置関係、ひいてはブロックセット全体の位置、姿勢、形状を特定できる。この処理を所定の頻度で行うことにより、ユーザが組み立て途中にあるブロックセットであっても、その構造をリアルタイムに認識できる。
【００５８】
ブロック情報記憶部２４には、ブロックセットとして用いる各ブロックの基本情報を格納する。通信ブロックの場合、基本情報とは、ブロックにあらかじめ付与される識別番号と、形状、サイズ、他のブロックを接続可能な箇所に係る情報とを対応づけた情報である。非通信ブロックの場合、ブロックにあらかじめ付与される識別番号と、色、模様、素材、テクスチャなど外観上の特徴を対応づけた情報である。非通信ブロックの場合、このような外観上の特徴が詳細なほど、ブロックの特定精度が向上する。ただし情報処理装置１０が行う情報処理によって、個々の非通信ブロックを特定する必要がない場合は、非通信ブロックの情報は格納しなくてもよい。
【００５９】
情報処理部３０は、構造解析部２２が特定したブロックセット１２０の状態、あるいは入力装置１４を介したユーザ操作に応じてなすべき処理を実行する。例えばブロックセット１２０が組み立てられたら、ブロックセットの形状を表す３Ｄオブジェクトやそれに対応づけられたモデルの３Ｄオブジェクトが表示されるようにする。そしてブロックセット１２０の動きに合わせて、表示された３Ｄオブジェクトが動くようにする。あるいはコンピュータゲームを起動して入力装置１４を介したユーザ操作に応じて進捗させ、それに応じてブロックセット１２０を動かす。
【００６０】
このためモデルデータ記憶部２６には、情報処理部３０が表示装置１６に表示させるオブジェクトモデルを描画するのに必要なデータを格納する。このオブジェクトモデルは、ゲームに登場するキャラクタなど、あらかじめデザインされたものでもよいし、組み立てたブロックセットに合わせてユーザが作成したものでもよい。情報処理部３０はさらに、関節や車輪などブロックセットとオブジェクトの部位同士を対応づけ、さらに両者の部位の動きを対応づけるための処理を行う。このとき、情報処理部３０が全ての対応を設定してもよいし、ユーザが対応づけられるように設定画面を表示して設定入力を受け付けてもよい。あるいはそれらを適宜組み合わせてもよい。対応情報記憶部２８には、このようにして設定された、部位や動きの対応関係に係る情報を格納する。
【００６１】
これにより、ユーザがブロックセットを自由に作成しても、その位置のみならず形状や姿勢までを、ブロックセットと画面上のオブジェクトで連動させることができる。例えばゲームの世界を実世界におけるブロックセットに反映させたり、ブロックセットの動きを仮想世界にいるキャラクタに反映させたりすることが可能となる。このとき、必ずしも両者の動きが完全に同一でなくてもよく、動きの対応づけによって様々な変化を設定できるようにする。また動きの反映はリアルタイムでなくてもよい。例えばユーザが動かしたブロックセットの状態の経時変化を保存しておくことにより、任意のタイミングで、対応するオブジェクトが動きを再現する態様を実現できる。ひいては、コンピュータゲームやアニメーションのキャラクタの動きを容易な操作で作成できる。
【００６２】
駆動制御部３４は、情報処理装置１０がブロックセット１２０を動かす態様において、情報処理部３０からの要求に従いブロックセット１２０に制御信号を送信する。具体的に送信する信号は制御方式によって様々であり、ロボット工学の分野などで一般的に用いられる技術を適宜採用してよい。送信された制御信号はブロックセット１２０における第１ブロック１４２ａの第２通信部１４６ａで受信され、ブロックセット１２０内部での信号伝送により対象ブロック（図６の場合は第２ブロック１４２ｂ）の駆動部１４８の動作へ反映される。あるいは当該制御信号を、無線通信などにより対象ブロックへ直接送信するようにしてもよい。
【００６３】
表示処理部３２は、情報処理部３０が行った処理の結果として画像データを作成し、表示装置１６に表示させる。ブロックセット１２０の動きに合わせて動くオブジェクトを表示させる例では、表示装置１６の出力フレームレートで、ブロックセット１２０の動きに対応させてオブジェクトを描画し、表示装置１６にビデオ信号として出力する。描画処理自体は一般的なコンピュータグラフィックス技術を適用できる。表示処理部３２はさらに、ブロックセット１２０とオブジェクトの部位や動きの対応づけを設定するための画面を表示装置１６に表示させる。情報処理部３０が全ての対応づけを行う場合は、設定した対応をユーザが確認したり修正したりする画面を表示させてもよい。表示処理部３２はそのほか、ゲーム画面など情報処理部３０が実行している情報処理に応じた画像を適宜表示させる。
【００６４】
図７はブロックセット１２０における情報伝達経路と伝達される情報の例を模式的に示している。情報伝達経路１５０において内部に数字の書かれた円はそれぞれがブロックを表しており、円間の直線はブロックが連結されている状態を表している。また円内の数字は各ブロックの識別番号とする。識別番号「１」のブロックは図６の第１ブロック１４２ａに対応し、情報処理装置１０と通信を確立する。さらに図７における識別番号「２」、「３」のブロックは識別番号１のブロックに直列に接続されていることから、図６における第２ブロック１４２ｂ、第３ブロック１４２ｃにそれぞれ対応すると捉えることができる。
【００６５】
一方、１つのブロックに複数のブロックが連結することも考えられる。図７の例では識別番号「１」のブロックに識別番号「２」のブロック、「５」のブロックが接続されている。識別番号「２」のブロックには上述のとおり、識別番号「３」のブロック、「４」のブロックがこの順で直列に接続されている。識別番号「５」のブロックには、識別番号「６」のブロックと「７」のブロックが並列に接続されている。この例ではさらに、識別番号「６」のブロックに、識別番号を持たないブロックが接続され、そのブロックに識別番号「８」のブロックが接続されている。ここで識別番号を持たないブロックとは、非通信ブロックに相当する。
【００６６】
上述のとおり情報伝達は基本的に、下位のブロックから上位のブロックへ伝達される。図７では、伝達される情報の内容を、伝達方向を示す矢印とともに表している。例えば識別番号「３」のブロックから「２」のブロックへ伝達される情報は、［３：Ｊ２（４）］と示されている。これは「自らの識別番号：ブロックに設けられた接続箇所の識別番号（そこに接続しているブロックの識別番号）」なるフォーマットで構成される信号であり、識別番号「３」の接続箇所のうち識別番号「Ｊ２」の箇所に識別番号「４」のブロックが接続されていることを表している。ただし同図をもって情報のフォーマットや内容を限定するものではない。
【００６７】
ブロックの上位にあたる方向がどちらにあるかは、ハブの役割を有するブロックが、ブロックの連結によって構成されるネットワークを探索することにより、順位づけを行うなどして決定できる。このような手順は、一般的な情報処理システムを構成するデバイスツリーにおけるネットワーキング技術を適用できる。
【００６８】
図７において識別番号「４」のブロックは、それが属する接続系列において最下位にあるため、１つ上位の識別番号「３」のブロックへ情報を送信する。識別番号「４」のブロックには他のブロックが接続されておらず接続箇所が一意に求まるとすると、またセンサが内蔵されていないとすると、送信される情報は自らの識別番号「４」のみとなるため、伝達内容を「［４：−]」と表している。「−」はセンサの計測結果や接続されているブロックがないことを示している。
【００６９】
識別番号「３」のブロックは、識別番号「４」からの信号を受信すると、それを受信した端子の番号などを接続箇所の識別番号として対応づけ、さらに自らの識別番号「３」も対応づけて、１つ上位の識別番号「２」のブロックに送信する。この信号の伝達内容は上述のとおり［３：Ｊ２（４）］となる。識別番号「２」のブロックも同様に、自らの識別番号、接続箇所の識別番号（図の例では「Ｊ５」）、接続しているブロックの識別番号「３」を対応づけた信号、すなわち［２：Ｊ５（３）］を生成する。また識別番号「２」のブロックがセンサを内蔵しているとすると、その計測結果を表す信号と自らの識別番号を対応づけた信号も生成する。同図の例では計測結果を「result」と表しているが、実際には具体的な数値がセンサの種類に応じて代入される。
【００７０】
識別番号「２」のブロックは、このようにして生成したデータと、下位のブロックから伝達されたデータ、すなわち［３：Ｊ２（４）］を、１つ上位の識別番号「１」のブロックに送信する。ただしこれらの信号は常に同時に送信する必要はなく、一旦送信した信号の内容に変更があったときにその情報のみを送信するなどでもよい。一方、識別番号「５」のブロックに接続された、識別番号「６」と「７」のブロックがセンサを内蔵しておらず接続箇所が一意に求まるとすると、これらのブロックからは、識別番号「４」のブロックと同様、［６：−]、［７：−]の信号がそれぞれ識別番号「５」のブロックに送信される。識別番号「６」のブロックには、さらに別のブロックが接続されているが、当該ブロックは非通信ブロックのため、そこからの情報は得られないものとしている。
【００７１】
識別番号「５」のブロックは、自らの識別番号に、接続箇所の識別番号および接続されているブロックの識別番号を対応付けた信号を生成し、１つ上位の識別番号「１」のブロックに送信する。図示するように複数のブロックが接続されている場合、それらをまとめて［５：Ｊ３（６），Ｊ８（７）］などとする。ここで「Ｊ３」、「Ｊ８」は、かっこ内の識別番号のブロックが接続されている接続箇所の識別番号である。
【００７２】
このようにして識別番号「１」のブロックに、ブロックセットのコアの情報が集約される。識別番号「１」のブロックも他のブロックと同様、自らの識別番号に接続箇所の識別番号、それに接続されているブロックの識別番号を対応づけた信号を生成する。そして下位のブロックから送信された信号とともに情報処理装置１０へ送信する。これにより情報処理装置１０は、コアを構成するブロックの識別番号、各ブロックの接続関係、センサを内蔵するブロックにおける計測結果を逐次取得することができる。
【００７３】
このように、ハブの役割を有するブロックを１つに定め、情報を集約させて情報処理装置１０へ送信するようにすると、情報の錯綜や無駄な通信処理を防止することができる。一方、場合によっては複数のブロックから情報処理装置１０へ通信するようにしてもよい。例えば図７の例では、識別番号「８」のブロックは、非通信ブロックを介して識別番号「６」のブロックに連結している。
【００７４】
この場合、識別番号「８」のブロックは、自らのデータを情報処理装置１０へ直接送信してもよい。例えば当該ブロックが位置センサを内蔵する場合、自らの識別番号とその計測結果を直接、情報処理装置１０へ送信することにより、情報処理装置１０は、識別番号「６」のブロックより先に連結しているブロックが存在することを把握でき、さらに当該ブロックの形状、およびおよその接続状況を推測することができる。識別番号「８」のブロックに内蔵されるセンサの数が増えるほど、その情報の確度が向上する。複数の位置情報を取得できるブロックを組み合わせることで、カメラ１２２からの死角にあるブロックの構造も精度よく特定できる。
【００７５】
図８は情報処理装置１０のブロック情報記憶部２４に格納する、通信ブロックの基本情報のデータ構造例を示している。通信ブロック情報テーブル１６０は、識別番号欄１６２、形状欄１６４、サイズ欄１６６、接続箇所欄１６８を含む。識別番号欄１６２には、ブロックセットを構成する通信ブロックにあらかじめ付与した識別番号を記載する。形状欄１６４には、各通信ブロックの形状の種類、すなわち「四角柱」、「立方体」など、図２で例示したようなブロックの型を記載する。サイズ欄１６６には各通信ブロックの横幅、奥行き、縦の長さを記載する。
【００７６】
接続箇所欄１６８には、各通信ブロックに設けられた接続箇所を、その識別番号と対応づけて記載する。図８の例では、「接続箇所の識別番号（面の番号，当該面内でのｘ座標，ｙ座標）」なるフォーマットで記載されている。面の番号は、ブロックの各面に対しあらかじめ一意に決定しておく。例えば識別番号「１」の通信ブロックは、横幅４ｃｍ、奥行き４ｃｍ、縦の長さ８ｃｍの四角柱型ブロックである。そして識別番号が「Ｊ１」の接続箇所は、第１面の座標（２，２）の位置にある。識別番号が「Ｊ２」の接続箇所は、第２面の座標（１，２）の位置にある。ただしこれらの情報が表されれば、その表記のフォーマットは特に限定されない。
【００７７】
このような通信ブロック情報テーブル１６０を情報処理装置１０で保持しておくことにより、ブロックセット１２０から送信された信号に基づき、コアに対し図３で表記したようなパラメータが判明することになる。構造解析部２２は、このようにして特定されるコアの状態と、カメラ１２２が撮影した画像に基づき、非通信ブロックを含むブロックセット１２０全体の位置、姿勢、形状を特定する。図９は非通信ブロックを含むブロックセットの状態を特定する基本的な処理を説明するための図である。同図左上はコア情報受信部２０が受信した情報に基づき特定されるコア１７０の状態を示している。この情報から特定されるのは、通信ブロックの接続関係とそれに基づくコアの形状である。ただし内部に位置センサを備えていれば、実空間での位置も判明する。
【００７８】
一方、構造解析部２２は、カメラ１２２が撮影した画像から奥行き画像１７２を生成する。奥行き画像はカメラ１２２の視野内の対象物を、カメラからの距離を画素値として表した画像であり、上述のとおりカメラ１２２をステレオカメラなどとすることにより作成できる。同図の奥行き画像１７２は、距離が遠いほど輝度が小さい画像を模式的に示しており、通信ブロック、非通信ブロックの区別なく、ブロックセット１２０全体の像が表れている。この奥行き画像のうち、例えばマーカーなどコアに属するブロックの少なくとも一部の像を検出することにより、当該部分のカメラからの距離を含む３次元空間での位置座標を特定できる。そして先に特定したコア１７０の状態のうち、画像上で検出された部位が当該位置座標に存在するようにして、コア１７０に対するカメラ座標系を定める。
【００７９】
なおコアの像を検出する際は、カメラ１２２が撮影したカラー画像を利用してもよい。そしてカメラ１２２側から見たコア１７０と、奥行き画像１７２の像として表れるブロックセットとのボリューム差分をとることにより、ブロックセットのうちコアの部分を除いた非通信ブロックの状態を特定できる。図９の右に示したブロックセット１２０のうち、網掛けで示した部分が差分として得られた非通信ブロックである。結果として、図示するように、コアと非通信ブロックとを含むブロックセット１２０全体の位置、姿勢、形状を特定できる。なお背景分離などによりブロックセット１２０の像が特定でき、コアの見かけ上の大きさなどに基づき当該像とコアの位置合わせが可能であれば、奥行き画像によらず、一般的な撮影画像のみを利用してもよい。
【００８０】
なお図９で示した基本的な処理では、非通信ブロックについて得られる情報は、カメラの視野平面における２次元の情報のみである。そこで、非通信ブロックの基本情報をブロック情報記憶部２４に格納しておき、視野平面での見かけの形状やサイズに合致するブロックを検索することにより、奥行き方向を含む３次元形状の特定精度を上げることができる。図１０は情報処理装置１０のブロック情報記憶部２４に格納する非通信ブロックの基本情報のデータ構造例を示している。
【００８１】
非通信ブロック情報テーブル１８０は、識別番号欄１８２、形状欄１８４、サイズ欄１８６、色欄１８８を含む。識別番号欄１８２には、ブロックセットを構成する非通信ブロックにあらかじめ付与した識別番号を記載する。同じ形状、サイズ、色のブロックは同じ識別番号としてもよい。形状欄１８４には、各非通信ブロックの形状の種類、すなわち「直方体」、「円柱」など、図２で例示したようなブロックの型を記載する。サイズ欄１８６には各非通信ブロックの横幅および奥行き（あるいは直径）、縦の長さを記載する。色欄１８８には、各非通信ブロックの色を記載する。
【００８２】
形状欄１８４、サイズ欄１８６、色欄１８８の情報は、３Ｄグラフィックスにおけるオブジェクトモデルのデータと同様に、ポリゴンやテクスチャなどの情報としてもよい。また非通信ブロック情報テーブル１８０が保持する情報は図示するものに限らない。例えば凹部の形状などから、接続できる通信ブロックが限定的である場合は、接続可能な通信ブロックの識別番号を保持しておけば、特定済みのコアに属する通信ブロックに基づき、それに接続されている非通信ブロックを絞り込める。構造解析部２２は非通信ブロック情報テーブル１８０を参照し、図９で示した奥行き画像１７２のうちコア以外の部分の像にそれぞれ合致する非通信ブロックを特定する。
【００８３】
なお他のブロックに隠蔽されて見えないブロックについては、初期状態では存在しないと仮定したうえでブロックセットの動きを追跡していくことで、時間発展的に正確な形状を特定していく。一部が隠蔽されている場合で、非通信ブロック情報テーブル１８０を参照しても形状が確定できない場合は、いずれかの候補形状を仮定するか、隠蔽部分のみ何らかの面を仮定することにより、後の時間で徐々に修正していき形状認識の精度を上げていく。
【００８４】
図１１は時間発展的にブロックセットの形状を特定する処理を説明するための図である。同図の縦軸は時間を表し、時刻「Ｔ１」から「Ｔ２」へ時間が経過しているとする。またブロックセット１９０は一例として、同図最上段に示すように、マーカーのついた四角柱型の通信ブロック（白抜きで表示）の下半分に円柱型の非通信ブロック（網掛けで表示）が装着されている。まず時刻Ｔ１においては当該図のように、水平面に置かれたブロックセット１９０を、カメラ１２２が正面から撮影したとする。この場合、撮影画像１９２ａでは図示するように、各ブロックの側面のみが像として表れる。
【００８５】
このような画像から上述のとおり奥行き画像を生成し、別途形状を特定したコアとのボリューム差分をとると、残りの部分は見かけ上、非通信ブロックの側面の像である四角形となる（奥行き画像１９８ａ）。すなわち時刻Ｔ１では、非通信ブロックの３次元形状が特定できない可能性がある。ただし奥行き画像の分解能によっては円柱か直方体か、といった区別が前面の湾曲の有無によって判明する場合もある。また非通信ブロック情報テーブル１８０に登録済みのブロックのうち、サイズやアスペクト比などが合致する非通信ブロックが一つのみの場合も、その形状を特定できる。なお奥行き画像１９８ａは、撮影画像から取得した奥行き画像中のブロックセットの像とコアとのボリューム差分をとったボリュームデータを表象するものであり、必ずしも画像として生成するものではない。以後の図も同様である。
【００８６】
それ以外の場合、構造解析部２２は、非通信ブロック情報テーブル１８０から候補となる非通信ブロックを検出し、そのいずれかであることを仮定する。あるいは、形状が特定されている通信ブロックと同一平面を非通信ブロックの不特定の面として仮定する。同図では前者の例として、非通信ブロックを直方体と仮定した場合のブロックセットの形状２００を示している。なお図示するブロックセットの形状２００は、情報処理装置１０において時刻Ｔ１の時点で認識されている形状であり、必ずしもそれを表示に用いる趣旨ではない。例えば、ブロックセットの状態をそのまま３Ｄオブジェクトとして表示するアプリケーションを実行中は、図示した仮定形状のまま描画してもよい。あるいは何らの表示も行わず、次の時間ステップにおいて形状を修正する際の土台として用いるのみでもよい。
【００８７】
表示を行うか否かに関わらず、非通信ブロックの形状を時間発展的に特定したり、ユーザが組み立て中のブロックセットの形状変化をリアルタイムかつ効率的に認識したりするために、仮定した形状に係る情報を少なくとも所定期間、記憶しておき、後の処理に利用する。ブロックセットの形状は、それを構成する通信ブロックおよび非通信ブロックに構造上の識別番号（以下、「要素番号」と呼ぶ）を与えることにより管理する。同図ではブロックセットの通信ブロックに「＃Ｃ１」、非通信ブロックに「＃Ｎ１」なる要素番号が与えられている。この例では通信ブロックと非通信ブロックの区別を、アルファベットの「Ｃ」および「Ｎ」で区別しているが、これにより要素番号のフォーマットを限定するものではない。
【００８８】
これらの要素番号を、図８や図１０で示した、各ブロックにあらかじめ付与された識別番号と対応づけたうえ、非通信ブロックと通信ブロックとの接続関係（接続面、接続されている位置や向き）に係る情報とともに記録する。以後、このようなブロックセット全体の構造に係る情報を「構造データ」と呼ぶ。このようにブロックごとに構造を管理することにより、上記のような表示が可能となるほか、１つの塊として画像に表れていたブロックセットを、ユーザが着脱させる単位に分割できるため、組み立て中のブロックセットや変形されたブロックセットの形状特定を効率化できる。ブロックセットの形状をそのまま描画する場合は、この時点において描画に用いるポリゴンおよびテクスチャを生成しておいてもよい。そして以後の形状特定処理においては、この３Ｄモデルを修正したりブロックの追加や削除をしたりしてよい。
【００８９】
時刻Ｔ１においてブロックセットの形状２００のような形状を認識した後も、撮影や形状特定処理を継続している。このときユーザがブロックセット１９０の頂点をカメラ１２２側へ傾けた場合、時刻Ｔ２における撮影画像１９２ｂでは図示するように、通信ブロック１９４、非通信ブロック１９６の上面がいくらか含まれる像となる。このような画像から奥行き画像を生成し、その時点における状態のコアとのボリューム差分をとると、残りの部分には非通信ブロックの円柱の上面が含まれる（奥行き画像１９８ｂ）。その像の形状から、当該非通信ブロックは時刻Ｔ１で仮定した直方体ではなく、円柱である可能性が高いと判定できる。このような修正を、ブロックセットの姿勢の変化とともに繰り返すことにより、ブロックセットの形状認識の信頼性が上がっていく。
【００９０】
非通信ブロックが円柱であることが判明した時点で、構造解析部２２は、時刻Ｔ１で直方体と仮定した非通信ブロックの形状を、円柱と入れ替える。これにより正確なブロックセットの形状２０２が認識されたことになる。この処理は実際には、要素番号＃Ｎ１に対応づけた直方体型のブロックの識別番号を、円柱型のブロックの識別番号に修正する処理となる。あるいはポリゴンモデルを修正してもよい。図１１の例は理解を容易にするため、ごく簡易な構造のブロックセットを例示したが、実際には、例えば非通信ブロックの背後にさらに非通信ブロックが接続されていたり、他のブロックと重なりあって非通信ブロックの一部のみが見えていたりすることが考えられる。
【００９１】
この場合、上述のように、各非通信ブロックの形状を仮定して、ユーザがブロックセットを持って傾けたり方向を変化させたりするのに応じて判明した部分のみを徐々に特定していく手法のほか、複数の方向から撮影できるようブロックセットをカメラ１２２に対して回転させるようにユーザに促す表示をしてもよい。また非通信ブロック情報テーブル１８０から、隠蔽されていない部分の形状や色に基づき候補となる非通信ブロックを抽出しリスト表示することにより、ユーザが実際のブロックを指定できるようにしてもよい。また、各非通信ブロックに、形状を表す２次元バーコードや図形のマーカーを貼付することにより、撮影画像から形状を特定してもよい。
【００９２】
図１２は組み立て中などで構造が変化するブロックセットの形状を特定する処理を説明するための図である。図の表し方は図１１と同様であり、縦軸を時間軸として、各時刻の撮影画像１９２ｂ〜１９２ｄ、コアの部分を除いた像の奥行き画像１９８ｂ〜１９８ｄ、認識されるブロックセットの形状２０２、２１０、２１６を左から順に示している。同図最上段の時刻Ｔ２は図１１の時刻Ｔ２に対応し、撮影画像１９２ｂ、奥行き画像１９８ｂ、認識されているブロックセットの形状２０２も同一である。この状態から、後の時刻Ｔ３において、ユーザが新たな非通信ブロック２０４を接続したとする（撮影画像１９２ｃ）。このときの奥行き画像１９８ｃを、その前の時刻Ｔ２における奥行き画像１９８ｂと比較すると、追加された非通信ブロックの像２０６が増えていることがわかる。
【００９３】
構造解析部２２は、前の時刻Ｔ２における奥行き画像１９８ｂと現時刻Ｔ３における奥行き画像１９８ｃを比較することにより、新たな非通信ブロック２０４の接続を認識する。ここで前の時刻でも存在した非通信ブロック１９６は、カメラに対する向きが変化している可能性があり、新たに接続されたブロックとの区別がつかないおそれがある。そこで構造解析部２２は一旦認識した非通信ブロックに対し、位置姿勢トラッキングを継続して実施することにより、位置や姿勢が変化しても同一のブロックは同一なものとして認識できるようにする。位置姿勢のトラッキングとして、アクティブ輪郭モデルなどを用いた一般的なトラッキング技術を適用してよい。あるいはコアからの信号により特定できる、コアの位置や姿勢の変化から、それと接続状態にある非通信ブロックの向きの変化を導出してもよい。
【００９４】
そのようにしてボリューム差分後の像を比較した結果、新たな非通信ブロック２０４が接続されたことが検出できたら、図１１で説明したのと同様に、非通信ブロック情報テーブル１８０を参照するなどして当該非通信ブロックの形状を特定する。そして同時刻のコアの形状や姿勢に基づき、コアとの接続関係を特定する。その結果、時刻Ｔ３におけるブロックセットの形状２１０が、図示するように認識できる。このとき、追加された非通信ブロックに新たな要素番号「＃Ｎ２」を付与し、当該ブロックにあらかじめ付与された識別番号と対応づけるとともに、通信ブロックとの接続関係を記録することにより構造データを更新する。
【００９５】
なおカメラの視野に存在する非通信ブロックが接続されたのか未接続なのかを判定するため、コアを含むブロックセットと、視野にあるブロックとの相対速度を監視してもよい。この場合、相対速度が０となったときに、新たなブロックが接続されたと判定する。時刻Ｔ３の後の時刻Ｔ４においては、ユーザが、以前接続していた非通信ブロック１９６を、別の形状の非通信ブロック２１４に接続し直したとする（撮影画像１９２ｄ）。このときの奥行き画像１９８ｄを、その前の時刻Ｔ３における奥行き画像１９８ｃと比較すると、非通信ブロックの像２１５の形状が変化していることがわかる。
【００９６】
そのようにしてボリューム差分後の像を比較した結果、非通信ブロックが別の形状のものに接続し直されたことが検出できたら、これまでと同様に、非通信ブロック情報テーブル１８０を参照するなどして、新たな非通信ブロックの形状を特定する。コアとの接続関係は以前接続されていたものと同じであるため、以前の情報をそのまま利用できる。したがって、構造データにおいて以前と同じ要素番号「＃Ｎ１」に対応づけられていた、ブロックの識別番号のみを今回特定したものに更新することにより、時刻Ｔ４におけるブロックセットの形状２１６が、図示するように認識されたことになる。
【００９７】
別の形状の非通信ブロックが接続される場合以外に非通信ブロックが変形する例として、当該非通信ブロックに内包されているコアの関節角が変化した場合が考えられる。図１３はコアの関節角の変化に起因して変形するブロックセットの形状を特定する処理を説明するための図である。図の表し方は図１１、１２と同様であり、縦軸を時間軸として、各時刻の撮影画像１９２ｅ〜１９２ｇ、奥行き画像１９８ｅ〜１９８ｇ、認識されるブロックセットの形状２１８、２２２、２２４を左から順に示している。ただしブロックセットの形状は図１１、１２で示したものと異なり、マーカーと関節を備えた通信ブロック２２６のうち上下のリンクを包含するように、非通信ブロック２２８、２３０がそれぞれ装着されているものとする。
【００９８】
関節が曲がっていない時刻ｔ１における撮影画像１９２ｅに基づき生成した、ボリューム差分後の奥行き画像１９８ｅでは、非通信ブロックは見かけ上、１つの塊として表れる。したがって構造解析部２２は、１つ（一連）の通信ブロックと、１つとみなした非通信ブロックにそれぞれ要素番号「＃Ｃ１」、「＃Ｎ１」を付与してそれぞれのブロックの識別番号と対応づけ、両者の接続関係を構造データとして記録することにより、ブロックセットの形状２１８を図のように認識する。
【００９９】
次に時刻ｔ２において、ユーザがコアの関節を曲げたとする（撮影画像１９２ｆ）。このときの奥行き画像１９８ｆを前の時刻ｔ１における奥行き画像１９８ｅと比較すると、非通信ブロックの形状が変化していることがわかる。構造解析部２２はブロックセットから別途送信されたコアの情報から、非通信ブロックが包含しているコアの状態を取得している。つまり通信ブロックの関節角についても把握している。したがって、非通信ブロックの変形と対応する角度で、中にある通信ブロックの関節角が変化している場合は、当該非通信ブロックの変形がコアの屈伸に起因する、と判定できる。
【０１００】
これにより、別のブロックを接続し直したのではなく、元は１つのブロックとして認識していたものが実際は複数のブロックであったことを特定できる。この場合、例えば傾きが変化した方の非通信ブロック（図では上部のブロック）に、新たな要素番号「＃Ｎ２」を付与し、傾きに変化がなかった方は要素番号「＃Ｎ１」をそのまま用いて構造データを修正する。コアとの接続関係も要素番号の修正に伴い適宜修正する。これにより時刻ｔ２におけるブロックセットの形状２２２が、図示するように認識できる。
【０１０１】
同図の例では上部と下部のブロックの区別が傾き角度やブロックの形状から明白であるが、傾き角度が小さかったり、角度が変化しても隙間が目立たない形状や材質のブロックであったりすると、ブロックの切れ目がわかりにくいことが考えられる。この場合、例えば関節が曲がっていないときのコアの軸に垂直な分割面２２０を関節の位置に設定し、この分割面によってブロックを分割することによって、元々１つと見なしていたブロックを２つに分けてもよい。この場合、元々接していた下部のブロックの上面および上部のブロックの底面として、分割面２２０の平面を仮定しておき、以後の形状特定処理で修正していくようにする。
【０１０２】
時刻ｔ２における処理により、非通信ブロックが２つのブロックからなることが認識されたため、その後の時刻ｔ３において、ブロックセットの関節が曲がっていない時刻ｔ１のときの状態に戻ったとしても（撮影画像１９２ｇ、奥行き画像１９８ｇ）、情報処理装置１０では２つの非通信ブロックが連なっている状態と認識できる（ブロックセット２２４）。以後は、コアの関節に曲げ伸ばしが生じても、リンクを包含する非通信ブロックは個別に管理されているため、新たに形状を特定するなどの処理の必要はない。
【０１０３】
このように一時的に向きや間隔が変化することなく、複数のブロックが１つの塊として組み立てられている場合は、それらをまとめて１つのブロックと見なすことによりデータ管理を簡易にしてもよい。逆に、１つの塊として組み立てられていても、色やテクスチャが異なり別のブロックであることがわかる場合は、それらの情報に基づき各ブロックを個別に管理してもよい。特に、ユーザがブロックを着脱する過程をも正確に認識する必要がある場合は、各ブロックを個別に管理することで、構造データの修正を変化のあった部分に限定できるため処理効率の面で有利である。
【０１０４】
また、得られたブロックセットの状態をオブジェクトとして表示装置１６に表示する場合、あるいはポリゴンおよびテクスチャの情報として構造データを保持する場合、特定した形状をそのまま反映させるのでなく、解像度を粗くするローポリゴン化を行い、処理の負荷やメモリ消費を抑えてもよい。あるいは非通信ブロック情報テーブルにおいて、各非通信ブロックをさらに別のオブジェクトモデルに対応づけておき、表示時には当該非通信ブロックの部分を、それに対応づけられたオブジェクトモデルに代替させて描画してもよい。これにより、ブロックが直方体など大雑把な形状であっても、表示時にはリアルなオブジェクトに変換されて表示されることになる。このように、情報の詳細度を実際のブロックセットより下げるか、そのままとするか、上げるかは、ブロックセットの状態を利用して情報処理部３０がなすべき処理、情報処理装置１０の処理性能、メモリ容量などによって適宜設定する。
【０１０５】
なお図１１〜１３で示したように、本実施の形態では、ブロックセットの時間変化をコアと非通信ブロックの双方について取得していることになる。したがって、当該時間変化を履歴として所定時間記憶しておき、必要に応じて読み出し利用することにより、様々な態様を実現できる。例えば組み立て中のブロックセットを数段階前の状態に戻したいとき、ユーザが入力装置１４を介してリクエストすると、当該段階のブロックセットの状態が３Ｄオブジェクトとして表示されるようにする。ユーザは、それを見ながら実際のブロックセットを前の状態に戻せる。３Ｄオブジェクトとして描画されたブロックセットに対する仮想的な視点を入力装置１４によって変化させれば、以前のブロックセットの状態を複数方向から確認することもできる。履歴を長時間保存しておけば、過去に作成したブロックセットを制作段階ごとにオブジェクトとして表示し、それに倣って実際のブロックセットを組み立て再現することもできる。
【０１０６】
また、図１２の円柱型の非通信ブロック１９６のように、一旦外されたブロックの情報を、構造データからすぐには削除せずに元の要素番号をそのまま付与しておき、外されたことを示すフラグなどで管理してもよい。この場合、同じ箇所に別のブロックがつけられた場合は同じ要素番号が複数の非通信ブロックに与えられることになるが、フラグによって、現在の情報か過去の情報かを判別できる。そしてブロックセットを前の状態に戻したい旨のリクエストがユーザよりなされたら、元のブロックを構造データから検出して復帰させることにより、前の状態のブロックセットのオブジェクトを表示できる。
【０１０７】
次に、これまで述べた構成によって実現できる、ブロックセットの状態特定に係る情報処理装置の動作について説明する。図１４は非通信ブロックを含むブロックセットの状態を特定する処理手順を示すフローチャートである。このフローチャートは、ユーザが、ブロックセット１２０のブロックのうちバッテリーを備えるいずれかのブロックの電源を入れ、情報処理装置１０においてアプリケーションを選択するなど処理開始の指示を、入力装置１４を介して入力したときに開始される。
【０１０８】
なおここで示す情報処理装置１０の処理と並行して、ユーザによって組み立てられたり持ち上げられたりしているブロックセットから、コアの状態を表す信号が所定のタイミングで送信されているものとする。またこのフローチャートは非通信ブロックの変化に着目しており、コアの状態変化については別途、コアの状態を表す信号などから求めているものとする。まず構造解析部２２はカメラ１２２に、ブロックセットの撮影を開始させる（Ｓ１０）。一方、情報処理部３０、表示処理部３２の協働により、所定の初期画像を表示装置１６に表示する（Ｓ１２）。このとき表示する画像は、カメラ１１２が撮影したライブ映像や、ゲーム画像などアプリケーションの一部としてあらかじめ作成された画像などでよい。
【０１０９】
時間ステップｔ＝０（ｔは時間の経過を昇順で表す整数）において、コア情報受信部２０がブロックセットから送信された情報を受信すると、構造解析部２２は、当該情報に基づき、コアの３次元空間での姿勢や形状を特定する（Ｓ１４、Ｓ１６）。撮影画像以外の手段により位置が判明する場合は、コアの位置も特定する。一方、構造解析部２２は、カメラ１２２から撮影画像を取得し、それに基づき奥行き画像を生成するなどしてブロックセットの全体像と位置を取得する（Ｓ１８）。撮影画像には、ブロックセット以外の物や背景、ユーザの手などが映り込んでいる可能性があるため、いずれかの段階でこれらの像を除く処理を行っておく。
【０１１０】
この処理には前景抽出、SLAM(Simultaneous Localization And Mapping)法、カラーセグメンテーション、辞書ベースの物体認識などの一般的な手法を用いることができる。そのようにして抽出したブロックセットの全体像に対しコアがどのように位置するかを特定する（Ｓ２０）。具体的には上述のように、コアのマーカーなど特徴的な形状、色、模様などを有する部分をブロックセットの像から検出し、当該部分を基準にコアの位置を決定する。そしてＳ１６で特定した、コアの形状や姿勢に基づき、カメラからのコアの見え方を特定する。これはすなわち、非通信ブロックがなかった場合のブロックセットの像であるため、実際のブロックセットの全体像とのボリューム差分をとることにより、非通信ブロックの像および位置を取得する（Ｓ２２）。
【０１１１】
それより前の時間ステップｔ−１で非通信ブロックの状態を取得している場合は、それと今回の非通信ブロックの像とを比較し（Ｓ２４）、変化があるか否かを確認する（Ｓ２６）。像の形状に変化がある場合は（Ｓ２６のＹ）、非通信ブロックの形状特定およびブロックセットの構造データの更新処理を行う（Ｓ３０）。なお時間ステップｔ＝０のときはＳ２２で取得した非通信ブロックの状態自体を変化とみなし、それに基づき構造データを新規に作成する。
【０１１２】
Ｓ３０の処理は、図１１〜１３を参照して説明したように、非通信ブロックの追加や除外、別の非通信ブロックへの付け替え、コアの関節が曲がることによる非通信ブロックの形状変化、に場合分けし、それぞれに対してなすべき処理を行う。すなわち、追加された場合は要素番号を付与し、それぞれ形状や接続方向などと対応づけたうえ、コアとの接続関係を記録する。除外された場合は、構造データから削除するか、除外されたことを示すフラグを立てるなどして管理する。別の非通信ブロックへ付け替えられたときは、該当する要素番号に対応するブロックの形状や接続方向などを更新する。
【０１１３】
コアの関節が曲げられたことによる形状変化時は、当該関節を挟むリンクごとに非通信ブロックが管理されていなければ、それらを別のブロックとして一方に新たな要素番号を与え、それぞれのブロックの形状や接続方向を更新して個別に管理する。また、コアや非通信ブロックの形状が変化していなくても、位置や姿勢の変化によって非通信ブロックの像が変化する。この場合、隠蔽などによって形状が確定できず仮定していた部分の形状が一部でも判明するかを確認し、判明する場合はそれに応じて構造データを更新することにより時間発展的に形状を特定していく。上述のとおり構造データは、３Ｄグラフィックスのモデルデータとして表してもよい。
【０１１４】
Ｓ２６において像の形状に変化がなければ（Ｓ２６のＮ）、少なくとも非通信ブロックの状態は変化していないことになるため、Ｓ３０の処理は行わない。ユーザが処理を終了させる入力を行うまで、時間ステップｔをインクリメントしながら順次、Ｓ１６からＳ３０の処理を繰り返す（Ｓ３２のＮ、Ｓ２８）。ブロックセットの電源が切断されるなどして処理を終了させる指示入力がなされたら処理を終了する（Ｓ３２のＹ）。なおＳ２０の処理において、カメラから見てコアの全体が非通信ブロックによって隠蔽されている場合は、コアの位置合わせができないことになる。この場合は、コアがカメラの視野に入るようにブロックセットの向きを転換するよう、ユーザに促す表示を行ってもよい。あるいは、コアの全体像がブロックセットの全体像からはみ出さないようにコアに対するカメラ座標系を仮定し、その後の時間ステップで修正していくようにしてもよい。
【０１１５】
なおこれまでの説明では主に非通信ブロックの形状変化に着目していたが、非通信ブロックの色やテクスチャが変化した場合も同様の処理で構造データを更新できる。ただしこの場合は、まず奥行き画像においてコアとの位置合わせを行うことにより全体像からコアの部分を除外したら、残された非通信ブロックの像の領域を、撮影されたカラー画像にフィードバックすることにより、色やテクスチャの変化を特定する。
【０１１６】
図１５はこれまで述べた態様によって実現できるブロックセットと表示の関係を例示している。同図の例では、通信ブロックおよび非通信ブロックを含むブロックセット２４０を、情報処理装置１０が認識した通りに３Ｄオブジェクト２４２として描画し、表示装置１６に表示している。非通信ブロックの形状、姿勢、色などはカメラ１２２が取得するため、非通信ブロック情報テーブルに登録されていないもの、例えばユーザが自作したものでも認識できる。例えば同図において、ブロックセット２４０として組み立てられた人形の顔をユーザがマジックで書いたりシールを貼ったりしても、それと同様の顔の人形やシールが貼られた人形が３Ｄオブジェクトとして描画される。
【０１１７】
この例では、実際のカメラ１２２の視野にあるブロックセットを、鏡面処理により左右反転させオブジェクトとして表している。ブロックセット２４０は表示装置１６上のカメラ１２２に正対しているため、表示上の３Ｄオブジェクト２４２はブロックセット２４０が鏡に映ったような状態で表示される。一方、情報処理装置１０は上記のとおり、ブロックセット２４０の３次元形状を認識しているため、３Ｄオブジェクト２４２に対する仮想的な視点を自由に変えることができる。したがって、この時点ではカメラ１２２からの死角になっている人形の背中側の像も、ブロックセット２４０を回転させずに表示できる。ただしそれまでの形状特定処理によっては、背中側の形状の詳細が確定的でない場合もある。
【０１１８】
これまでの説明では、実際に組み立てられたブロックセットの状態認識を基本としていたが、実物では接続されていないものを仮想的に接続できるようにしてもよい。図１５に例示される画面では、ブロックセット２４０を反映した３Ｄオブジェクト２４２とともに、装備するアイテムの選択肢の画像２４４、２４６を表示している。ユーザが入力装置１４を介して、あるいはブロックセット２４０を動かすなどして１つの画像を選択し、画面上の３Ｄオブジェクト２４２に持たせたら、情報処理装置１０は認識済みのブロックセットの該当箇所に、当該アイテムが接続されたことを示すように、構造データを更新してもよい。
【０１１９】
選択肢となるアイテムは、情報処理装置１０のブロック情報記憶部２４、あるいはモデルデータ記憶部２６において３次元形状を保持しておく。これにより、以後の処理では、ブロックセットとして実際に接続されているか仮想的に接続されたかに関わらず、ブロックセットの実空間での動きに合わせて、画面上のアイテムも３Ｄオブジェクト２４２に持たれた状態で、仮想世界で動くように表現できる。ユーザが自作するなどした実物を３Ｄスキャナーで取り込み、３次元の形状情報を取得すれば、上記のアイテムの代わりとなる。すなわち非通信ブロックの実物があっても、実際に接続せずに画面上では接続されているように表示することができる。
【０１２０】
同様の手法により、ブロックセットの外観自体を表示上の仮想世界で作成するようにしてもよい。図１６はブロックセットに対し外観を設定する場合のブロックセットと表示の関係を例示している。この例では図１５の場合と比較し、ブロックセット２４８自体は、例えば通信ブロックのみなど簡素な構成となっている。このようなブロックセット２４８の状態を認識すると、情報処理装置１０は表示装置１６に、認識されたブロックセットの状態をそのまま、あるいは左右反転させて３Ｄオブジェクト２５０として表示する。そして図１５のアイテムと同様、候補となる３Ｄオブジェクトの選択肢の画像２５２ａ、２５２ｂ、２５２ｃを、例えば顔など部位ごとに表示する。
【０１２１】
ユーザは、ブロックセットのブロックごと、または複数のブロックで構成される部位ごとに、画像２５２ａ、２５２ｂ、２５２ｃからの選択入力を行うことにより、３Ｄオブジェクト２５０に仮想的に接続していき、外観を完成させる。これにより、様々な外観の３Ｄオブジェクトを自由に作成し、さらに実際のブロックセット２４８の動きに合わせて当該３Ｄオブジェクトを動かしたり、仮想的な視点を変化させたりすることができる。また、このようにして仮想的な外観を作成したブロックセットを複数、接続することにより、表示上で仮想的な３Ｄオブジェクトが連結していくようにしてもよい。
【０１２２】
例えば目標とする３Ｄオブジェクトの完成形のうち、パーツごとにブロックセットとそれに対応する外観を作成していき、最後にブロックセットを接続すれば、詳細な部分まで設定された外観を有する完成形が表示されるような態様を実現できる。あるいは、一旦作成した仮想的な外観の３Ｄオブジェクトを保存しておき、同じブロックセットでまた別の外観の３Ｄオブジェクトを作成する、という手順を繰り返したうえ、そのように作成した複数の３Ｄオブジェクトを仮想世界でのみ連結させてもよい。この場合、最後にブロックセットと対応づけた３Ｄオブジェクトがブロックセットと連動するのに伴い、連結した全ての３Ｄオブジェクトがブロックセットに合わせて動く態様を実現できる。
【０１２３】
図１５、１６の例では、ブロックセットの動きを仮想世界の３Ｄオブジェクトに反映させたが、それとは逆に、３Ｄオブジェクトの動きをブロックセットの動きに反映させるようにしてもよい。例えば情報処理部３０が実行するゲーム内のキャラクタとして、ユーザが組み立てたブロックセットを表す３Ｄオブジェクト、あるいはユーザがブロックセットに対応させて仮想的に作成した３Ｄオブジェクトを登場させる。ユーザは入力装置１４を用いてゲーム操作を行い、それによって３Ｄオブジェクトが動いたら、実際のブロックセットも動くようにする。この場合、駆動制御部３４は、３Ｄオブジェクトの動きに合致するようにブロックセットの駆動部１４８を制御する信号を送信する。
【０１２４】
図１６の例ではユーザが、１つあるいは複数のブロック単位で３Ｄオブジェクトを当てはめていく態様を想定していたため、実際のブロックと仮想的なオブジェクトとの対応関係は非通信ブロックと同様であり、管理も同様に行える。すなわち、実際のブロックセットの関節角が変化すれば、当該変化によって変形する箇所は３Ｄオブジェクトでも明らかなため、画面表示に容易に反映させることができる。３Ｄオブジェクトの動きをブロックセットに反映させる場合も同様である。一方、組み立てたブロックセット全体に対し、１つの３Ｄオブジェクトを対応づけるようにした場合、それらを好適に連動させるには、ブロックセットと３Ｄオブジェクトの対応箇所を適切に設定する必要がある。
【０１２５】
図１７は組み立てたブロックセットに対し１つの３Ｄオブジェクトを対応づけた場合のブロックセットと表示の関係を例示している。この例では、ユーザがクレーン車に見立てたブロックセット２６０を作成し、表示上の３Ｄオブジェクトとしてクレーン車２６２を選択した場合を想定している。ブロックセット２６０にはクレーンに見立てたブロックに複数の関節２６４ａ、２６４ｂ、２６４ｃが設けられ、さらに台となるブロックには車輪２６６ａ、２６６ｂ、２６６ｃ、２６６ｄが装着されている。
【０１２６】
例えばユーザがブロックセット２６０の関節を屈伸させて画面上のクレーン車２６２を同じように動かす場合、関節２６４ａ、２６４ｂ、２６４ｃの屈伸をクレーン車２６２のどの箇所に反映させるかを設定しておく必要がある。また、クレーン車２６２の表示上の移動をブロックセット２６０の実際の動きに反映させる場合は、表示上の移動に合わせて各車輪の役割や回転速度、操舵角などを決定する必要がある。本実施の形態においてブロックセット２６０はユーザが自由に組み立てる物であるため、クレーンとして動かしたい部分やクレーン車の前後関係などはユーザの意図に依存するところが大きい。そこで、このように自由に組み立てられた物とあらかじめ準備した３Ｄオブジェクトの動きに係る対応関係を設定する手法について説明する。
【０１２７】
図１８はブロックセットと３Ｄオブジェクトの動きを対応づけるために必要な情報を例示している。同図の左側は図１７のブロックセット２６０に対応するブロックセット２７０の模式図、右側は図１７の３Ｄオブジェクトのクレーン車２６２に対応するクレーン車２７２の模式図を表している。図示するように、ブロックセット２７０には、情報処理装置１０が形状を認識した際に用いた座標系が設定されており、クレーン車２６２には、当該３Ｄモデルに対するローカル座標系が設定されている。両者は独立に設定されるため、各座標系におけるブロックセット２７０およびクレーン車２７２の向きも様々となる。
【０１２８】
図１８の例では理解を容易にするため、ブロックセット２７０およびクレーン車２７２が、各座標系のｘ軸と平行な状態で定義されている場合のｘ軸ｙ軸からなる２次元平面における形状、すなわち側面形状を表している。ただし各座標系に対するブロックセット２７０およびクレーン車２７２の向きは、ｘ軸に対して反対方向となっている。ここでブロックセット２７０が有する３つの関節をＲＪ１、ＲＪ２、ＲＪ３とし、クレーン車２７２が有する３つの関節をＶＪ１、ＶＪ２、ＶＪ３とする。またブロックセット２７０が有する４つの車輪をＲＡ１、ＲＡ２、ＲＡ３、ＲＡ４、クレーン車のキャタピラをＶＡ１、ＶＡ２とする。なお車輪ＲＡ３、ＲＡ４、キャタピラＶＡ２は、表示面と逆の側面にあり本来は隠蔽されているが、図１８においては点線にてずらして表し、符号は括弧内に示している。
【０１２９】
このようなブロックセット２７０とクレーン車２７２を連動させるには、最も単純には、ブロックセット２７０の関節ＲＪ１、ＲＪ２、ＲＪ３をクレーン車２７２の関節ＶＪ１、ＶＪ２、ＶＪ３にそれぞれ対応づけ、車輪ＲＡ１、ＲＡ２を図示しないキャタピラＶＡ２に、車輪ＲＡ３、ＲＡ４をキャタピラＶＡ１にそれぞれ対応づけることが考えられる。しかしながらこの例ではクレーンの関節の位置が両者で異なっているため、例えば両者の対応する関節をそれぞれ同じ角度で曲げるようにした場合、ユーザが期待したような動きにならないことが考えられる。
【０１３０】
また一般的には、ブロックセット２７０の関節角には物理的な可動範囲が存在し、クレーン車２７２の関節にもモデル上の可動範囲が存在する。そのような拘束条件を考慮しないと、３Ｄモデルがあり得ない角度に曲がったり、ブロックセットの関節角が限界に達してそれ以上動かなくなってしまったりすることが起こり得る。また座標系に対する向きの違いにより、ブロックセット２７０を前進させているのに表示上のクレーン車２７２は後退している、といったことも起こり得る。そのような不具合が生じないよう、座標系の共通化、対応箇所の設定、対応する箇所の具体的な動きの対応づけ、といった処理を経ることにより、実物と仮想世界での物との連動の調和を図る。
【０１３１】
図１９は情報処理装置１０が、ブロックセットと３Ｄオブジェクトの動きに係る対応づけを行う処理手順を示すフローチャートである。まずユーザは所望の形状にブロックセットを組み立てた後、入力装置１４を介して、３Ｄオブジェクトとの対応づけを開始する指示要求を入力する。情報処理装置１０の情報処理部３０は当該要求を受け付けると（Ｓ４０）、構造解析部２２から、組み立てられたブロックセットの構造に係る情報を取得する（Ｓ４２）。そしてモデルデータ記憶部２６に描画データが準備された３Ｄオブジェクトのうち、ブロックセットの形状などに基づき好適なモデルを候補として抽出する（Ｓ４４）。
【０１３２】
モデルデータ記憶部２６には、クレーン車など各種オブジェクトモデルの描画データと、各モデルの特徴を表すメタデータとを対応づけて格納しておく。このメタデータには大きく分けて物としての特徴、構造的な特徴、外観上の特徴が含まれる。物としての特徴とは、人、動物、乗り物、食べ物などの品目、キャラクタとして登場する映画、アニメーション、ゲームの名前やキャラクタ名などの固有名詞、原始時代、中世、現代、未来、特定の年など関連する時代、などである。構造的な特徴とは、関節の数、各関節の可動角や自由度、リンクの長さや太さ、関節の接続関係、駆動力、タイヤ径などである。
【０１３３】
外観上の特徴とは、色、表面形状、非通信ブロックの個数や体積、ブロックセットにおける非通信ブロックの被覆率、ＬＥＤや表示装置を備えている場合はその個数、表示装置の種類などである。モデルデータ記憶部２６には各モデルに対し、そのように多角的な特徴を対応づけておく。対応づける特徴が多いほど適した候補の抽出精度が上がるが、全ての特徴を対応づける趣旨ではない。Ｓ４４において情報処理部３０は、Ｓ４２で取得したブロックセットの形状や構造に係る情報から、構造的な特徴、外観上の特徴に基づき、実際のブロックセットと類似度が高い候補モデルを抽出する。
【０１３４】
例えば、ブロックセットの関節数をＮＲＪ、車輪数をＮＲＡ、３Ｄオブジェクトの関節数をＮＶＪ、車輪数をＮＶＡとすると、次のような式によって類似度評価値を算出する。
類似度評価値  ＝  （ＮＲＪ−ＮＶＪ）×ｗＪ  ＋（ＮＲＡ−ＮＶＡ）×ｗＡ
ここでｗＪ、ｗＡは、関節数の評価および車輪の評価に対する重みであり、両者の重要性によって決定する。この評価値は０に近いほど類似度が高いことを意味する。また、評価値が正の場合はブロックセットの関節や車輪が多い傾向にあり、負の場合は３Ｄオブジェクトの関節や車輪が多い傾向にあることを意味する。評価値が０となる３Ｄオブジェクトがあれば、それを最有力な候補モデルとして抽出する。
【０１３５】
さらに、評価値の絶対値が同じで正負が異なる複数の３Ｄオブジェクトがあれば、負の評価値となる３Ｄオブジェクトを優先して抽出する。これは、３Ｄオブジェクトの関節や車輪が多いほど、画面上で細かい動きを表せ、ブロックセットの動きをより豊かに表現できるためである。そのような類似度の評価を行う前に、物としての特徴の中からユーザが選択した特徴に基づき、候補を絞り込んでもよい。物としての特徴、構造的な特徴、外観上の特徴を適宜組み合わせて抽出してもよいし、ユーザが物としての特徴以外の特徴も指定できるようにしてもよい。
【０１３６】
情報処理部３０は、そのようにして抽出した複数の候補モデルを表示装置１６に表示させ、ユーザが入力装置１４などを介して行った選択入力を受け付ける（Ｓ４６）。これにより選択されたモデルの例が、図１８で示したクレーン車２７２である。次に、ブロックセットと画像上のオブジェクトに対し共通の座標系を設定する（Ｓ４８）。これにより、ブロックセットの姿勢や移動方向を定めるパラメータは、３Ｄオブジェクトにおいても同様に扱えるようになる。例えば図１８においてブロックセット２７０の前進がｘ軸の負の方向であれば、３Ｄオブジェクトのクレーン車２７２における前進もｘ軸の負の方向となるように座標系を設定する。また座標系を共通とすることにより、関節角の定義を共通化できるとともに、関節角が変化した場合に関節に対しどちらのリンクが動いたかについても適正に判断できる。
【０１３７】
共通の座標系で定義された各種パラメータは、３Ｄオブジェクトに対し元から設定されていたローカル座標系における値に座標変換されることにより、３Ｄオブジェクトの描画に反映される。ブロックセットと３Ｄオブジェクトの形状が類似しており、前後などが明らかな場合は、両者の向きが同じになるように情報処理部３３が共通の座標系を設定する。あるいは、ユーザがブロックセットの向きと同じになるように３Ｄオブジェクトの向きを画面上で調節し、その向きを基準とすることにより情報処理部３０が座標系を設定してもよい。これにより、前後が不明確なブロックセットであってもユーザの意図した向きで３Ｄオブジェクトと連動させることができる。
【０１３８】
続いてブロックセットと３Ｄオブジェクトのうち対応箇所を設定する（Ｓ５０）。ブロックセットと３Ｄオブジェクトの関節数やリンクの接続関係が一致している場合、この処理は情報処理部３０が一括して行える。すなわち情報処理部３０は、Ｓ４２で取得したブロックセットの構造と、Ｓ４６で選択されたオブジェクトモデルの構造に基づき、両者の対応する関節を幾何学的に導出して対応づける。あるいは設定画面を表示させてユーザが設定できるようにする。ここで対応づける箇所は、代表的には図１８の関節同士や車輪同士であるが、ブロックセットの曲がる、回転する、変位するといった変化を反映したい箇所であれば、３Ｄオブジェクト側の対応点はユーザが自由に設定できるようにする。これにより、軟体動物など関節を持たない動物を動作させたり、実際には曲がらない物にお辞儀をさせたりといったことができる。
【０１３９】
なお対応づける箇所は必ずしも１対１の関係でなくてもよい。すなわち、ブロックセットの複数の関節を３Ｄオブジェクトの１つの関節に対応づけたり、３Ｄオブジェクトの複数の関節をブロックセットの１つの関節に対応づけたりしてよい。車輪についても同様である。情報処理部３０は、ブロックセットと３Ｄオブジェクトの関節数が異なっていても、複数の関節を１つの関節と見なすことにより全体的な構造を一致させることができる場合は、関節をそのようにグルーピングしてもよい。
【０１４０】
この場合、例えば、ブロックセットと３Ｄオブジェクトのうち一方の１グループの関節を、他方の１つの関節に対応づける。このとき、後者の関節角の変化を、前者の１グループの関節の動きに分配する。具体例は後に述べる。関節をグルーピングするか否かに関わらず、情報処理部３０は、両者の全体的な構造に加え、各関節の可動角も考慮して対応を設定する。例えば同じ可動角を有する関節同士を対応づける。このように、全体的な構造や可動角など多角的な観点から関節同士の類似度を評価し、評価値がしきい値より高い関節同士を対応づけてもよい。情報処理部３０やユーザが設定した対応箇所の情報は、対応情報記憶部２８に格納する。
【０１４１】
次に、このように対応づけられた箇所について、動きの対応を設定する（Ｓ５２）。すなわち関節角の変化をそのまま反映させるか否か、関節が１対１に対応づけられていない場合は関節角の変化を分配する比率などを設定する。ブロックセットと３Ｄオブジェクトの構造が一致している場合であり、対応する関節の可動角が等しければ、基本的には関節角も同様とできるため、情報処理部３０はそのように設定する。関節角をグルーピングすることによって構造が同様となる場合は、上述のように１つの関節角の変化を、対応する１つのグループに属する関節の動きに分配させる。ことのき、各関節の可動角の比率に応じて分配比率を決定してもよい。
【０１４２】
このように、あらかじめ定めた規則によって動きの対応を設定できる場合は、情報処理部３０が設定してよい。さらに設定画面を表示させて、ユーザが動きの対応を自由に設定したり設定済みの対応関係を修正したりできるようにする。また、３Ｄオブジェクトの車の動きをブロックセットの車の動きに反映させる場合は、当該３Ｄオブジェクトの表示上の車の速度とブロックセットの車軸の回転速度を対応づける。この関係は、ブロックセットに接続された車輪の直径によって変化するため、車輪の直径が既知であれば情報処理部３０が演算により決定できる。既知でなければ後述するように、ユーザがブロックセットを実際に動かすことによって、必要なパラメータを取得する。対応づけるべき全ての箇所についてＳ５０とＳ５２の処理を繰り返し（Ｓ５４のＮ）、全ての箇所を対応づけたら処理を終了する（Ｓ５４のＹ）。
【０１４３】
図２０は、図１９のＳ４６においてユーザによるモデル選択の入力を受け付けるために表示装置１６に表示する画面の例を示している。モデル選択受付画面２８０は、複数のモデル「モデル１」、「モデル２」、「モデル３」の画像、選択入力を促す文字列２８２、および入力装置１４で移動可能なカーソル２８４を含む。「モデル１」、「モデル２」、「モデル３」は、図１９のＳ４４で抽出された候補モデルであり、上述のように物としての特徴、構造的な特徴、外観上の特徴の少なくともいずれかによってフィルタリングされた結果である。例えばユーザが物としての特徴として「クレーン車」を指定したことにより、抽出されたモデルは全てクレーン車となっている。この場合、モデル選択受付画面２８０を表示する前に、「クレーン車」の選択を受け付けるための画面も表示する。
【０１４４】
抽出数は３つに限らず、条件に合致した物を全て抽出してもよいし、上述の類似度評価値を利用してモデルをランク付けし、上位となった所定数のモデルを抽出してもよい。この場合、モデル選択受付画面２８０には、左からランクの高い順にモデルの画像を並べてもよい。図２０において「モデル１」、「モデル２」、「モデル３」はいずれもクレーン車であるが、関節の数などクレーン部分の形状が異なる。ユーザは好みのモデル、あるいはブロックセットに類似しているモデルをカーソル２８４により指示し、入力装置１４で確定入力をするなどして一つのモデルを選択する。
【０１４５】
なおモデルの選択には、カーソル２８４を介した選択入力手段以外の手段を用いてもよい。例えばユーザをカメラ１２２で撮影し、その奥行き画像などからユーザの指先の位置、ひいては表示画面上の指さしされた位置を検出する技術が提案されている。この技術を利用することにより、ユーザが選択対象のモデルを指さしすることで、情報処理装置１０が選択されたモデルを認識するようにしてもよい。図２１、２２で示す各設定画面でのユーザによる入力も同様に実現してよい。
【０１４６】
図２１は、図１９のＳ４８において、ブロックセットと選択されたモデルに共通の座標系を設定するために表示装置１６に表示する画面の例を示している。この例は、ユーザがブロックセットの向きに合わせて画面上の３Ｄオブジェクトの向きを調整することにより共通の座標系を特定している。これにより、上述のように全体構造としての前後の向きや関節に対する各リンクの位置関係、関節角の定義などを揃えることができる。モデル表示方向設定受付画面２９０は、クレーン車の前を左向きとする画像２９２、右向きとする画像２９４、向きの指定を促す文字列２９６、および入力装置１４で移動可能なカーソル２９８を含む。
【０１４７】
この例は、図２０のモデル選択受付画面２８０においてユーザが「モデル１」を選択したことを想定しており、同一モデルのオブジェクトを左右２つの方向から見た画像が表示されている。例えばユーザは、図示するようにブロックセット２６０を置いたうえ、それと同様の向きを表している、あるいは同じ向きとユーザが考える画像を、カーソル２９８により指示し、入力装置１４で確定入力する。図の例では左向きの画像２９２が選択される。すると情報処理部３０は、構造解析部２２が取得したブロックセット２６０の向きと、選択された画像における３Ｄオブジェクトの向きが同じ方向に定義されるように、両者に対し座標系を設定する。なおこの例のように、台車に対するクレーンの位置などの構造によって両者の前後が推定できる場合は上述のように情報処理部３０が座標系を設定してもよい。
【０１４８】
図２２は、図１９のＳ５０においてブロックセットと３Ｄオブジェクトの対応箇所を設定するために表示装置１６に表示する画面の例を示している。対応箇所設定画面３００は、３Ｄオブジェクトの画像３０２、コマンドリスト欄３０４、設定入力を促す文字列３０６、および入力装置１４で移動可能なカーソル３０８を含む。画面上の３Ｄオブジェクトが、モデル表示方向設定受付画面２９０を経てブロックセットと同じ向きとなっていることにより、ブロックセットとの対応がユーザに理解されやすくなる。対応箇所設定画面３００にはさらに、ブロックセット２６０の画像３１０を表示してもよい。
【０１４９】
当該画像３１０は、カメラ１２２による撮影画像、あるいは情報処理装置１０が認識しているブロックセット２６０の状態を３Ｄオブジェクトとして描画した画像である。前者の場合、ブロックセット２６０に対しユーザとカメラ１２２が逆側にあるときは、撮影画像を左右反転させてユーザから見たブロックセット２６０を再現する。後者の場合、非通信ブロックによりコアの構造が確認しづらい場合は、コアの画像のみを表示してもよい。
【０１５０】
まずユーザは、ブロックセット２６０のうち、対応づけたい関節を曲げ伸ばしするなどして動かす（例えば矢印Ａ）。当該動きは、構造解析部２２によって認識される。これによりブロックセット側の対応させるべき関節（例えばＲＪ２）の指定入力が実現する。次にユーザは、カーソル３０８により３Ｄオブジェクトの画像３０２において、３Ｄオブジェクト側の対応させるべき関節（例えばＶＪ３）を指示し、入力装置１４で確定入力をする。これにより、ブロックセット２６０の関節ＲＪ２と３Ｄオブジェクトの関節ＶＪ３が対応づけられる。情報処理部３０はそれらの対応関係を記録し、対応情報記憶部２８に格納する。
【０１５１】
このような設定を、ブロックセット２６０のユーザが動かしたいと考える全ての関節に対して行う。また車輪についても同様に設定してよい。このようにして一旦設定した対応関係に基づき、実際にブロックセット２６０を動かしてみたときの３Ｄオブジェクトの動きをユーザが確認できるようにしてもよい。そして必要に応じて修正できるようにしてもよい。そのため、コマンドリスト欄３０４には直前に設定した対応箇所を無効にして設定し直すための「prev」ボタン、現在の設定を確定させて次の対応箇所を設定するための「next」ボタン、現時点での全ての設定を保存して設定処理を終了させる「stop」ボタンなどのＧＵＩを表示する。さらに各種設定画面をメニューとして表示した画面へ移行するための「menu」ボタンも表示する。なお動きの確認処理は、後述する動きの対応を設定した後でもよく、それに応じて「prev」ボタンや「next」ボタンによって、設定を無効とする否かを確定させてもよい。
【０１５２】
なお関節の可動角や構造上の拘束条件から、ブロックセット２６０の指定された関節に対応づけられる３Ｄオブジェクトの関節が自動的に絞り込める場合は、情報処理部３０は当該関節を候補としてユーザに示唆してもよい。すなわちブロックセット側の対応させるべき関節が指定された時点で、対応箇所設定画面３００に表示された３Ｄオブジェクトの画像３０２のうち、対応先の候補となる関節の色を変化させるなどして、そのうちのいずれかをユーザが選択できるようにする。これにより、ユーザによる自由な対応設定を許容する場合でも、無理な対応づけを回避することができる。
【０１５３】
また上述のようにブロックセットの複数の関節を３Ｄオブジェクトの１つの関節に対応づけたり、ブロックセットの１つの関節を３Ｄオブジェクトの複数の関節に対応づけたりできるようにする。図２２の例では、３Ｄモデルの関節ＶＪ３に、ブロックセットの２つの関節が対応づけられていることを示す２つの目印３１２が付与されている。これは例えば、ブロックセット２６０の関節ＲＪ１を動かして３Ｄオブジェクトの関節ＶＪ３と対応づけ、さらに関節ＲＪ２を動かして３Ｄオブジェクトの同じ関節ＶＪ３対応づける操作により実現される。
【０１５４】
一方、３Ｄオブジェクトの関節ＶＪ１とＶＪ２は１つにグルーピングされ、ブロックセットの１つの関節に対応づけられていることを示す楕円３１４で囲まれている。このように３Ｄオブジェクトの複数の関節を１つのグループとするため、コマンドリスト欄３０４には、グループを示す楕円３１４を描画するための「group」ボタンのＧＵＩも表示する。例えばユーザは、ブロックセット２６０の関節ＲＪ３を動かす。そして、画面上の「group」ボタンをカーソル３０８により選択したうえ、３Ｄオブジェクトの関節ＶＪ２およびＶＪ１を囲むような楕円３１４を描画する。これにより、ブロックセット２６０の関節ＲＪ３と３Ｄオブジェクトの関節ＶＪ２およびＶＪ１が対応づけられる。
【０１５５】
ブロックセットと３Ｄオブジェクトの全体構造や可動角などの観点から、情報処理部３０が、グルーピングの好適なパターンをいくつか決定し、対応箇所設定画面３００に候補として表示させてもよい。この場合、ユーザがそこから一つのパターンを選択することによりグルーピングを確定させる。あるいは３Ｄオブジェクトのメタデータとして、グルーピングのパターン候補を作成しておき、対応箇所設定画面３００に表示させることによりユーザが選択してもよい。なお対応箇所設定画面３００にブロックセットの画像３１０を表示する場合は、カーソル３０８により当該画像３１０上でブロックセットの関節を指定してもよい。また、対応づけがなされた関節は、３Ｄオブジェクトの画像３０２とブロックセットの画像３１０において同じ色で表示したり、線で結んだりして対応関係が明示されるようにしてもよい。
【０１５６】
次に、このように対応づけた関節の動きの対応について説明する。この対応は、図１９のＳ５２において、情報処理部３０、ユーザ、あるいは両者の協働によって設定される。図２３は基本的な態様として、ブロックセットと３Ｄオブジェクトの関節が１対１で対応づけられ、各関節が同じ角度で動く場合を示しており、左がブロックセットの関節部分３２０ａ、右が３Ｄオブジェクトの対応する関節部分３２２ａである。すなわちブロックセットの関節部分３２０ａが、関節が曲がっていない状態から角度θだけ曲げられたら、３Ｄオブジェクトの対応する関節部分３２２ａも角度θだけ曲げる。情報処理部３０が行う処理によっては、３Ｄオブジェクトの関節部分３２２ａを角度θだけ曲げたら駆動制御部３４を介してブロックセットの駆動部１４８であるアクチュエータなどを駆動させることにより、対応する関節３２２ａを角度θだけ曲げるようにしてもよい。
【０１５７】
このような態様を基本とし、可動角や対応させる関節の数などの拘束条件、あるいはユーザの意図などに応じて様々な設定を実現する。図２４はグルーピングされた２つの関節が１つの関節に対応づけられている場合の各関節の角度の対応例を示しており、左がブロックセットの関節部分３２０ｂ、右が３Ｄオブジェクトの対応する関節部分３２２ｂである。この例では、ブロックセットの２つの関節部分３２０ｂが３Ｄオブジェクトの１つの関節部分３２２ｂに対応づけられている。そしてブロックセットの一方の関節が角度θ１、他方の関節が角度θ２だけ曲げられたら、３Ｄオブジェクトの対応する関節部分３２２ｂをその合計である角度（θ１＋θ２）だけ曲げる。つまりブロックセットの２つの関節による関節角の変化を、３Ｄオブジェクトの１つの関節により実現する。
【０１５８】
この態様は、ブロックセットの各関節の可動角が、３Ｄオブジェクトの対応する関節に要求される関節角の変化より小さい場合に有効である。ブロックセットの３つ以上の関節角の変化を合計してもよい。また３Ｄオブジェクトの複数の関節をグルーピングしてブロックセットの１つの関節に対応づける場合も角度の対応関係は同様である。この場合、ブロックセットの関節数が３Ｄオブジェクトの関節数より少ない場合に有効である。
【０１５９】
また逆に、３Ｄオブジェクトの関節部分３２２ｂを角度（θ１＋θ２）だけ曲げたら、ブロックセットの対応する２つの関節部分３２０ｂをそれぞれ角度θ１およびθ２だけ曲げるようにしてもよい。この場合、角度θ１とθ２の比率は、各関節の可動角や、ブロックセットが見立てている物、つまり３Ｄオブジェクトが表している物の現実的な動きなどの拘束条件によって情報処理部３０が決定できる。例えばブロックセットの２つの関節の可動角が１：２であれば、角度θ１とθ２も１：２の比率とする。
【０１６０】
ブロックセットの１つの関節の角度変化を３Ｄオブジェクトの複数の関節角に分配する場合も同様である。例えば図２２で示したクレーン車を想定した場合、３Ｄオブジェクトの関節ＶＪ１に接続しているフックは常に鉛直下向きになっているのが自然である。したがってそのような状態が保たれるように、情報処理部３０が、角度θ１とθ２を算出する。このような分配規則は、３Ｄオブジェクトのデータとともに作成しておく。なおブロックセットおよび３Ｄオブジェクトのうち、一方の角度変化の合計を他方の角度変化に反映させる態様と、一方の角度変化を他方の複数の角度変化に分配して反映させる態様とを組み合わせれば、ブロックセットの複数の関節を３Ｄオブジェクトの複数の関節に対応づけることもできる。
【０１６１】
図２５は２つの関節がグルーピングされて１つの関節に対応づけられている場合の各関節の角度の対応の別の例を示しており、左がブロックセットの関節部分３２０ｃ、右が３Ｄオブジェクトの対応する関節部分３２２ｃである。この例ではブロックセットの２つの関節の回転軸が異なっており、一方は図の平面に垂直な軸周りに角度が変化し、他方はリンクの軸周りに角度が変化するとする。一方、それに対応づけられた３Ｄオブジェクトの１つの関節は、それと対応する２つの軸周りに角度を変化させられる２自由度を有する関節とする。
【０１６２】
そしてブロックセットの関節部分３２０ｃのうち一方の関節が角度θ、他方の関節が角度ψだけ変化したら、３Ｄオブジェクトの対応する関節部分３２２ｃを、各軸周りに角度θおよびψだけ変化させる。また逆に、３Ｄオブジェクトの関節部分３２２ｃが各軸周りに角度θおよびψだけ変化したら、ブロックセット３２０ｃの対応する２つの関節をそれぞれθおよびψだけ変化させるようにしてもよい。
【０１６３】
図２６は１対１で対応づけられている関節の角度変化を異ならせる場合を示しており、左がブロックセットの関節部分３２０ｄ、右が３Ｄオブジェクトの対応する関節部分３２２ｄである。この例では、ブロックセットの関節が角度θだけ変化したら、３Ｄオブジェクトの対応する関節をその３倍の角度３θ変化させる。例えばブロックセットの関節の可動角が、３Ｄオブジェクトの対応する関節に要求される角度変化より小さい場合、ブロックセットを限界まで動かしても３Ｄオブジェクトが期待したように動かないことが考えられる。また、ブロックセットを動かす労力をあまりかけずに３Ｄオブジェクトをダイナミックに動かしたい場合もある。
【０１６４】
図示するようにブロックセットの関節の角度変化に１より大きい所定の値を乗算した角度で３Ｄオブジェクトの関節角を変化させることで、そのような課題を解決できる。あるいはブロックセットの角度変化に１より小さい所定の値を乗算して、ブロックセットより小さい角度で３Ｄオブジェクトの関節角を変化させてもよい。この態様は、例えばマニピュレータ操作など、ブロックセットを動かす手の動きより高い精度で３Ｄオブジェクトに微細な動きをさせたいときなどに有効である。３Ｄオブジェクトの関節の角度変化をブロックセットの角度変化に反映させる場合も同様の設定でよい。なお一方の角度変化に所定の値を乗算して他方の角度変化とする態様は、図２４や図２５で示した態様に組み合わせることができる。このとき、グルーピングされた全ての関節に同じ値を乗算してもよいし、関節によって異なる値を乗算してもよい。
【０１６５】
図２７はブロックセットの１つの関節を３Ｄオブジェクトの複数の関節に対応づける別の例を示しており、左がブロックセットの関節部分３２０ｅ、右が３Ｄオブジェクトの対応する関節部分３２２ｅである。この例では、ブロックセットの１つの関節部分３２０ｅが、３Ｄオブジェクトの３つの関節部分３２２ｅに対応づけられている。そしてブロックセットの関節が角度θだけ曲げられたら、３Ｄオブジェクトの対応する３つの関節をそれぞれ同じ角度θだけ曲げる。
【０１６６】
これにより簡素な構成のブロックセットであっても、３Ｄオブジェクトの広い範囲にその動きを反映させることができる。例えば、ブロックセットの１つの関節を、３Ｄオブジェクトの関節部分３２２ｅをさらに複数接続させてなる形状の大蛇の全関節に対応づけることにより、図２７の関節部分３２０ｅのみからなるブロックセットであっても、当該大蛇が前進するような動きを表すことができる。前述のように、大蛇に様々な動きをさせた動画を保存しておくことにより、後の任意のタイミングでゲームやアニメーションのキャラクタとして用いることができる。このような高度な画像表現を、関節部分３２０ｅのような簡素なブロックセットで実現できる。なおこの態様において３Ｄオブジェクトで対応づける関節は図示するように隣接関係にある場合に限らず、３Ｄオブジェクトの離れた箇所にある複数の関節でもよい。
【０１６７】
図２８は、図１９のＳ５２においてブロックセットと３Ｄオブジェクトの動きの対応を設定するために表示装置１６に表示する画面の例を示している。動き対応設定画面３３０は、図２２で示した対応箇所設定画面３００においてユーザが対応箇所を設定するごとに、当該画面に、動きの対応を入力するためのダイアログボックス３３３をオーバーレイ表示させた画面である。この例は、ブロックセットの関節ＲＪ１、ＲＪ２がグルーピングされ、３Ｄオブジェクトの関節ＶＪ３対応づけられたあと、ＶＪ３の角度変化をブロックセットのＲＪ１、ＲＪ２の角度変化に分配するときの分配比率を設定することを想定している。そのためダイアログボックス３３３には、比率の入力を促す文字列３３４、および比率の各数値を入力するテキストボックス３３６が表示されている。
【０１６８】
ユーザがテキストボックスに入力装置１４などを介して具体的な数値を入力することにより、情報処理部３０は、ブロックセットの関節ＲＪ１、ＲＪ２と３Ｄオブジェクトの関節ＶＪ３との対応づけに、さらに当該比率を対応づけて、対応情報記憶部２８に格納する。ダイアログボックス３３３で設定する情報はこれに限らず、関節をグルーピングしたか否かに応じて、図２３から図２７のような対応づけのうち必要な情報を順次設定できるようにする。ただし上述のように、あらかじめ定めた規則により情報処理部３０が動きの対応づけを行えるようであれば、ユーザによる設定は省略できる。あるいは情報処理部３０が行った対応づけを、同様のダイアログボックスでユーザが修正できるようにしてもよい。
【０１６９】
図２９は対応情報記憶部２８に格納される、ブロックセットと３Ｄオブジェクトの対応箇所とそれぞれの動きの対応にかかる情報のデータ構造例を示している。対応情報テーブル３４０は、ブロックセット側の対応箇所と動きを示すブロックセット情報欄３４２と、当該欄に記載されたブロックセットの箇所や動きに対する３Ｄオブジェクト側の対応箇所や動きを示す３Ｄオブジェクト情報欄３４４を含む。この例ではブロックセットの関節と３Ｄオブジェクトの関節を対応づけ、さらにそれらの角度変化の対応を設定している。
【０１７０】
対応は基本的に段単位で記載されている。例えばブロックセット情報欄３４２と３Ｄオブジェクト情報欄３４４の各「関節」欄を見ると、ブロックセットの関節ＲＪ１とＲＪ２は３Ｄオブジェクトの関節ＶＪ３に対応づけられている。この対応において、ブロックセットの動きを３Ｄオブジェクトに反映させる場合、関節ＲＪ１とＲＪの角度変化の合計が、３Ｄオブジェクトの関節ＶＪ３の角度変化になることは規定されている。
【０１７１】
逆に、３Ｄオブジェクトの動きをブロックセットに反映させる場合、３Ｄオブジェクトの関節ＶＪ３の角度変化がθのとき、関節ＲＪ１とＲＪ２の角度変化をいずれもθ／２とする、つまり分配比率を１：１にすることが、ブロックセット情報欄３４２と３Ｄオブジェクト情報欄３４４の各「角度変化」欄に記載されている。ブロックセットの関節ＲＪ３は、３Ｄオブジェクトの関節ＶＪ２およびＶＪ１に対応づけられており、ブロックセットの動きを３Ｄオブジェクトに反映させる場合、角度変化の分配比率は１：２である。以下、同様に、図２３から図２７で説明したいずれかの動きの対応が、対応箇所とともに記載されている。
【０１７２】
これまで、主に関節の動きの対応に係る具体例を説明した。次に車輪の動きの対応づけについて説明する、関節の場合、可動角や全体構造といった拘束条件がブロックセットと３Ｄオブジェクトの双方にあるものの、基本的には関節同士は独立しているため、ブロックセットの関節と３Ｄオブジェクトの関節を同等に対応づけることができる。一方、車輪の場合、ブロックセットは関節と比較して拘束条件が多く、３Ｄオブジェクトは厳密に車輪の動きを規定しなくても、走っているように表現できる、という性質の違いがある。すなわち、ブロックセットと３Ｄオブジェクトが連動しているように見せるには、移動方向とおよその速度が対応づけられていればよい。そしてこのような対応関係は、図１９のＳ４８において共通の座標系を設定することによって得られる。
【０１７３】
ユーザがブロックセット２６０を移動させ、それを３Ｄオブジェクトに反映させる場合は、そのような対応関係のみで容易に実現できる。具体的には、ブロックセットの移動量や移動方向をカメラ１２２の撮影画像などから取得し、それに基づき３Ｄオブジェクトも同様に移動しているように表現すればよい。一方、３Ｄオブジェクトの動きをブロックセットに反映させる場合は、拘束条件に従った設定が必要となる。例えば車輪が協調動作しないと車を走行させることができない。また車輪の直径によって望ましい速度を得るための車輪の回転速度が変化するため、適切に調整しないと高速になりすぎ壁に衝突するなどのおそれがある。
【０１７４】
このように車輪の動きの対応づけは、ブロックセットに拘束条件が偏っているため、関節ほどユーザによる自由な設定の余地がない。したがって主に情報処理部３０が動きの対応づけを行う。具体的には、ブロックセットの前後左右が明確になった時点で、あらかじめ設定した駆動方式に応じて駆動輪、従動輪、操舵輪を決定する。さらに、左右の駆動輪や操舵輪は同じ回転速度および舵角でなければならないという拘束条件を満たすようにグルーピングする。また、仮想世界で表現される３Ｄオブジェクトの速度や方向転換に対応する好適な速度や方向転換でブロックセットが走るように、ブロックセットの車輪の回転速度や舵角を、３Ｄオブジェクトの仮想的な速度や方向転換に対応づける。
【０１７５】
図３０は、３Ｄオブジェクトの動きをブロックセットに反映させる態様において、３Ｄオブジェクトとブロックセットの動きの対応を設定する処理手順を示すフローチャートである。この処理は、図１９のＳ５０およびＳ５２の処理に対応する。情報処理部３０はまず構造解析部２２からの情報に基づき、ブロックセットに車輪が装着されていることを検知すると、ブロックセットの前後左右の向きと駆動方式に則り、駆動輪、操舵輪といった車輪の役割を前輪あるいは後輪に割り当てる（Ｓ５８）。さらに少なくとも駆動輪、操舵輪の役割を割り当てられた平行に並んでいる２輪は１つのグループとすることにより協調動作させる（Ｓ６０）。
【０１７６】
なお平行に並んでいる２輪が１つの車軸で回転する場合は、自ずと協調動作するためＳ６０の処理を省略できる。次に３Ｄオブジェクトの仮想的な走行を反映させた好適な移動速度や方向転換が得られるようにするための制御パラメータを取得する。ここで制御パラメータは、駆動輪の車軸を回転させるアクチュエータの回転速度や操舵輪の舵角を変化させるアクチュエータの動き量などである。なおＳ６０においてグルーピングされた駆動輪や操舵輪を制御する複数のアクチュエータは、情報処理装置１０からの制御信号によって同一の動作となるように制御される。
【０１７７】
制御パラメータを取得するため、まずユーザにブロックセットを所定方向に実際に動かしてもらい、その移動量を計測するとともに、そのときの車軸の回転量や舵角を測定する（Ｓ６２、Ｓ６４、Ｓ６６）。ユーザはブロックセットを、別途用意した制御機構により電子的に駆動させてもよいし、本体を手で押すなど人力で動かしてもよい。後者の場合、車軸や舵角を変化させる機構をアクチュエータの制御から解放した状態とする。ブロックセットの移動量はカメラ１２２の撮影画像やそれから生成した奥行き画像から取得できる。回転量は車輪に備えたロータリーエンコーダからの信号により、舵角は車輪に備えた舵角センサにより取得できる。なおロータリーエンコーダ等のセンサを備えていない場合などは、車輪の直径、移動距離、移動方向に基づき算出してもよい。
【０１７８】
そして方向転換を含む移動量に対する実際の回転量および舵角に基づき、当該移動量を得るためのモーターの回転量およびアクチュエータの動き量などの制御量を取得する（Ｓ６８）。この対応関係を、単位時間あたり、あるいは単位角度あたりの値に変換することにより、移動速度および単位舵角と制御パラメータの値とを対応づける（Ｓ７０）。ここで移動速度は、ブロックセット自体の好適な移動速度であるが、画面上の３Ｄオブジェクトと連動させる場合は、仮想世界における移動速度で決定される値である。舵角も同様である。したがってＳ７０の処理によって、３Ｄオブジェクトの動きをブロックセットの動きに対応づけたことになる。
【０１７９】
なお、ブロックセットに接続されている車輪の直径が、当該車輪の識別番号から判明する場合、移動速度と制御パラメータとの対応関係は演算によって求められるため、Ｓ６２からＳ６８の処理を省略してもよい。またこれまで述べた例では、クレーン車に見立てたブロックセットとクレーン車の３Ｄオブジェクトを対応づけることを想定していたため、車輪の動きの対応づけとして説明したが、図２８で示したフローチャートは、３Ｄオブジェクトに車輪がなくても同様である。
【０１８０】
すなわち３Ｄオブジェクトが人、動物、虫、車以外の乗り物などであっても、仮想世界での移動をブロックセットの移動に反映させる場合は、図２８の処理手順により移動速度や舵角と制御パラメータを対応づけることにより、３Ｄオブジェクトの仮想的な移動に対応する速度や方向で、ブロックセットを移動させることができる。さらに、３Ｄオブジェクトの動きを反映させる態様ばかりでなく、単に情報処理装置１０で行った処理の結果に応じてブロックセットを移動させる態様にも利用できる。
【０１８１】
図３１は、上述したブロックセットの車輪に係る設定を、複合リンクへ拡張した場合について説明する図である。図示する複合リンク３５０は、関節が完全独立でなくリンクが連動する。すなわち複合リンク３５０の１つの関節を矢印のように動かせば、４つの関節が全て動くことになる（複合リンク３５２）。このような場合、アクチュエータによって１つの関節のみを動かすことができないため、駆動輪と同様、４つの関節をグルーピングして協調動作させる。ブロックセットに複合リンクを組み入れた場合、ユーザが対応設定画面などにおいて複合リンクの存在を明示するか、ブロックセットの実物における複合リンクを動かすことにより、情報処理部３０はその存在を認識する。そして３Ｄオブジェクトとの動きの対応を設定する際、それに含まれる関節を全てグルーピングする。
【０１８２】
以上述べた本実施の形態によれば、自由に組み立てることが可能なブロックを、情報処理装置における処理の入力装置や出力装置として利用する。位置や姿勢を取得するための各種センサや通信機能を有する通信ブロックを用いることにより、組み立て後のブロックの骨格や位置などの詳細を取得する。さらにカメラによる撮影画像など実空間におけるブロックの存在を検出する手段を用いて、組み立て後のブロックの表面形状を取得する。これらの情報を統合することにより、ブロックの一部として、通信機能を持たない非通信ブロックを使用しても、組み立て後のブロックの位置、姿勢、形状を高精度に特定できる。
【０１８３】
結果として、ブロックの形状、材料、色などが限定されず、ユーザが自作した物であっても用いることができ、ユーザの目的に適った外観を有する物体を自由に創造することができる。また情報処理装置は、外観がどのようであっても、位置、姿勢、形状を高精度に取得できるため、ユーザが組み立てたり動かしたりする行為を入力情報として、各種情報処理が行える。また情報処理の結果として、組み立てたブロックを動かすことができる。
【０１８４】
例えば、組み立てられたブロックと同じ外観の３Ｄオブジェクトを表示させたり、組み立てられたブロックに対応する、よりリアルな外観の３Ｄオブジェクトを表示させたりできる。後者の場合、ブロックの部位ごとに３Ｄオブジェクトのパーツを指定することにより、ユーザが３Ｄオブジェクト自体を形作ってもよいし、ブロック全体を１つの３Ｄオブジェクトに対応させてもよい。このとき、連動させるべき関節などの箇所を対応づけることにより、位置の変化のみならず、姿勢や形状の変化をも相互に反映させることができる。対応箇所の設定や動きの対応づけは、ブロックセットと３Ｄオブジェクトの形状、関節の数、関節の可動角、車輪の協調動作といった拘束条件に基づき設定できる。このような対応づけを情報処理装置が自動で行ったり、ユーザが設定できる環境を提供したりすることにより、ユーザの負担を抑えつつ、実世界と仮想世界とのリンクを自由に作り上げることができる。
【０１８５】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１８６】
例えば図２２で説明した対応箇所設定画面３００では、画面上の３Ｄオブジェクトに対応づける対象としてブロックセットを想定していたが、ブロックセット以外の物、例えばユーザ自身などでも同様に対応づけられる。ユーザと対応づける場合、カメラ１２２がユーザを撮影し、それに基づき奥行き画像を生成するなどしたうえ、骨格の位置を推定する。骨格の位置はスケルトントラッキングなどの従来技術を適用して追跡できる。そしてユーザが、肩や肘など対応づけたい関節周りに腕などの部位を動かすことにより、情報処理装置１０は当該関節をブロックセットの場合と同様に認識する。さらに画面上で３Ｄオブジェクトの関節を指定することにより、ユーザと３Ｄオブジェクトの関節を対応づけることができる。
【０１８７】
これにより、ユーザの動きに合わせて３Ｄオブジェクトが動く態様を実現できる。あるいは、ブロックセットを人型に組み立て、本実施の形態のように３Ｄオブジェクトと対応づけておけば、ユーザの関節とブロックセットの関節が、３Ｄオブジェクトの関節を介して間接的に対応づけられていることになる。この状態を利用し、本実施の形態における３Ｄオブジェクトの動きをブロックセットに反映させる態様と組み合わせれば、ユーザの動きに合わせてブロックセットが動く態様も実現できる。
【０１８８】
この態様の変形例として、ユーザの像と骨格の位置を示した画像を撮影画像からリアルタイムで生成して対応箇所設定画面に表示し、画面上でユーザの関節と３Ｄオブジェクトの関節を対応づけるようにしてもよい。このとき、両者を同時に表示してもよいし、交互に表示させて対応を設定する関節の指定を１つ１つ受け付けてもよい。なおこれらの変形例は、ユーザが自分の関節と３Ｄオブジェクトの関節を対応づけることを前提としているが、３Ｄオブジェクトが人やロボットなどであり、ユーザの関節との対応が明白である場合は、ユーザによる設定を省略し、情報処理装置が全て設定してもよい。
【０１８９】
また、本実施の形態では、車の前後が判明している状態で車輪を車軸に装着することにより、情報処理装置が駆動輪、従動輪、操舵輪の役割を決定した。そして当該役割に応じて、その動作を制御するアクチュエータの動きを切り替えた。この態様を拡張し、接続された物によって動きを切り替えるアクチュエータを備えたブロックを実現してもよい。例えば、車軸と車輪からなる部品を装着したら当該車軸を回転させることによりブロックセットの車を走行させる。カムとバネなどからなる部品を装着したらカムの回転によりバネが解放され仕掛けられていた矢などが放たれる。上述したような関節からなる部品を装着したら、関節として動作させる。
【０１９０】
この場合、情報処理装置１０は、撮影画像から接続された物の種類を認識し、それに応じた制御信号をブロックセットに送信することにより、アクチュエータの動きを適切に切り替える。このようにすることで、アクチュエータを備えたブロックの汎用性が増し、種類ごとに異なるブロックを準備するより低コストでバリエーションに富んだブロックセットを実現できる。
【符号の説明】
【０１９１】
２  情報処理システム、  １０  情報処理装置、  １４  入力装置、  １６  表示装置、  ２０  コア情報受信部、  ２２  構造解析部、  ２４  ブロック情報記憶部、  ２６  モデルデータ記憶部、  ２８  対応情報記憶部、  ３０  情報処理部、  ３２  表示処理部、  ３４  駆動制御部、  １０２ａ  四角柱型ブロック、  １２２  カメラ、  １２０  ブロックセット、  １２６ａ  ブロック、  １２８ａ  バッテリー、  １３０ａ  通信機構、  １３２ａ  メモリ、  １３４  位置センサ、  １３６ａ  モーションセンサ、  １３８  角度センサ、  １３９ａ  アクチュエータ、  １４１  ロータリーエンコーダ、  １４２ａ  第１ブロック、  １４３ａ  第１通信部、  １４４ａ  要素情報取得部、  １４６ａ  第２通信部、  １４８  駆動部。
【図１】
2015136453.tif 000003
【図２】
2015136453.tif 000004
【図３】
2015136453.tif 000005
【図４】
2015136453.tif 000006
【図５】
2015136453.tif 000007
【図６】
2015136453.tif 000008
【図７】
2015136453.tif 000009
【図８】
2015136453.tif 000010
【図１０】
2015136453.tif 000011
【図１４】
2015136453.tif 000012
【図１５】
2015136453.tif 000013
【図１８】
2015136453.tif 000014
【図１９】
2015136453.tif 000015
【図２０】
2015136453.tif 000016
【図２１】
2015136453.tif 000017
【図２２】
2015136453.tif 000018
【図２３】
2015136453.tif 000019
【図２４】
2015136453.tif 000020
【図２５】
2015136453.tif 000021
【図２６】
2015136453.tif 000022
【図２７】
2015136453.tif 000023
【図２８】
2015136453.tif 000024
【図２９】
2015136453.tif 000025
【図３０】
2015136453.tif 000026
【図３１】
2015136453.tif 000027
【図９】
2015136453.tif 000028
【図１１】
2015136453.tif 000029
【図１２】
2015136453.tif 000030
【図１３】
2015136453.tif 000031
【図１６】
2015136453.tif 000032
【図１７】
2015136453.tif 000033