(57)【要約】【課題】  ＨＭＤと操作入力装置との対応付けをより簡便に行うための技術を提供すること。【解決手段】  ビデオカメラ１１３から取得した画像中に、操作入力装置１１６に固有の情報である２次元バーコードが含まれている場合には、ビデオカメラ１１３に固有の情報と、操作入力装置１１６に固有の情報とを関連付けて、共有メモリ１０７内で管理する。【選択図】  図１
2008009646.tif 000002
【特許請求の範囲】
【請求項１】
現実空間を撮像する撮像装置から、当該画像を取得する取得工程と、
前記取得工程で取得した画像中に、仮想物体に対する操作入力を行うための操作入力装置に固有の情報が含まれている場合には、前記撮像装置に固有の情報と、当該操作入力装置に固有の情報とを関連付けて、メモリ内で管理する管理工程と
を備えることを特徴とする画像処理方法。
【請求項２】
更に、
操作入力装置からの操作入力を検知した場合には、当該操作入力装置に固有の情報に関連付けて前記管理工程で管理されている情報が示す撮像装置の位置姿勢に基づいて、当該操作入力の対象となる仮想物体について処理を行う処理工程と、
前記撮像装置の位置姿勢に応じて見える仮想空間の画像を生成する生成工程と、
前記取得工程で取得した画像と、前記生成工程で生成した画像との合成画像を生成し、外部に出力する出力工程と
を備えることを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記管理工程では、前記取得工程で取得した画像中に、仮想物体に対する操作入力を行うための操作入力装置に固有の情報が含まれていない場合には、前記撮像装置に固有の情報と、予め定めた値とを関連付けて、メモリ内で管理することを特徴とする請求項１に記載の画像処理方法。
【請求項４】
頭部装着型表示装置の位置姿勢を取得する第１の取得工程と、
仮想物体に対する操作入力を行うための操作入力装置の位置姿勢を取得する第２の取得工程と、
前記第１の取得工程で取得した位置姿勢と、前記第２の取得工程で取得した位置姿勢と、の関係が予め定めた関係を満たす場合には、前記頭部装着型表示装置に固有の情報と、前記操作入力装置に固有の情報とを関連付けて、メモリ内で管理する管理工程と
を備えることを特徴とする画像処理方法。
【請求項５】
前記頭部装着型表示装置、前記操作入力装置がそれぞれ複数存在する場合、
前記管理工程では、
操作入力装置の姿勢に最も近い姿勢を有する頭部装着型表示装置を特定し、当該特定した頭部装着型表示装置に固有の情報と、当該操作入力装置に固有の情報とを関連付けて前記メモリに管理する処理を、それぞれの操作入力装置について行う
ことを特徴とする請求項４に記載の画像処理方法。
【請求項６】
前記頭部装着型表示装置と前記操作入力装置のそれぞれが複数存在する場合、
前記管理工程では、
操作入力装置の位置に最も近い頭部装着型表示装置を特定し、当該特定した頭部装着型表示装置に固有の情報と、当該操作入力装置に固有の情報とを関連付けて前記メモリに管理する処理を、それぞれの操作入力装置について行う
ことを特徴とする請求項４に記載の画像処理方法。
【請求項７】
更に、前記管理工程では、
操作入力装置の位置からある距離以内に頭部装着型表示装置が存在しない場合には、当該操作入力装置に固有の情報と、予め定めた値とを関連付けて前記メモリ内で管理することを特徴とする請求項４に記載の画像処理方法。
【請求項８】
現実空間を撮像する撮像装置から、当該画像を取得する取得手段と、
前記取得手段が取得した画像中に、仮想物体に対する操作入力を行うための操作入力装置に固有の情報が含まれている場合には、前記撮像装置に固有の情報と、当該操作入力装置に固有の情報とを関連付けて、メモリ内で管理する管理手段と
を備えることを特徴とする画像処理装置。
【請求項９】
頭部装着型表示装置の位置姿勢を取得する第１の取得手段と、
仮想物体に対する操作入力を行うための操作入力装置の位置姿勢を取得する第２の取得手段と、
前記第１の取得手段が取得した位置姿勢と、前記第２の取得手段が取得した位置姿勢と、の関係が予め定めた関係を満たす場合には、前記頭部装着型表示装置に固有の情報と、前記操作入力装置に固有の情報とを関連付けて、メモリ内で管理する管理手段と
を備えることを特徴とする画像処理装置。
【請求項１０】
コンピュータに請求項１乃至７の何れか１項に記載の画像処理方法を実行させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複合現実感提示技術に関するものである。
【背景技術】
【０００２】
従来より、複合現実感(MR : Mixed Reality)提示装置が存在する。複合現実感提示装置の例としては、映像表示手段(たとえば、頭部装着型ディスプレイ(HMD: Head Mounted Display))と、現実映像撮影手段と、仮想映像生成手段と、位置姿勢検出手段(たとえば位置姿勢センサ)と、現実映像と仮想映像とを合成する合成手段とを備えているものである。
【０００３】
現実映像撮影手段の典型的な例としては、小型のカメラをＨＭＤに取り付け、HMD前面の風景を撮影し、キャプチャされた画像を計算機のメモリ内に記録するような手段があげられる。
【０００４】
位置姿勢検出手段は、現実映像撮影手段の位置姿勢などを検出するためなどに用いられる手段である。たとえば、磁気方式による位置姿勢センサなどを検出対象(上記現実映像撮影手段である小型ビデオカメラなど)に取り付け、その位置姿勢を検出する。磁気方式の位置姿勢センサとは、磁気発生装置(発信機)と磁気センサ(受信機)との間の相対位置・姿勢を検出するものであり、センサの３次元位置(X,Y,Z)と姿勢(Pitch, Yaw, Roll)をリアルタイムに検出することができるものである。
【０００５】
仮想映像生成手段は、三次元モデリングされたCGを現実空間と同じスケールの仮想空間に配置し、小型ビデオカメラが現実空間を撮影している位置姿勢と同じ位置姿勢からその仮想空間のシーンをレンダリングし、CG映像を得るものである。
【０００６】
合成手段は、現実映像撮影手段によって得られた画像の上に、仮想映像生成手段によって得られた仮想映像を重畳し、複合現実感映像を生成するものである。合成手段の一例としては、現実映像撮影手段によってキャプチャされた画像を計算機のビデオメモリに書き込み、その上に仮想映像生成手段によってCG映像を書き込むという処理があげられる。
【０００７】
このようにして得られた複合現実感映像を映像表示手段によりに映像表示装置(HMDなど)に表示することにより、観察者は、現実空間の中に仮想物体(CG)が出現したかのような感覚を得ることができる。
【０００８】
また、複合現実感提示装置に、操作入力手段を備え、仮想物体(CG)の位置姿勢などを操作することができるシステムが存在する。操作入力手段とは、例えばゲーム用の操作入力装置を用いるものなどがあげられる（例えば、特許文献１）。
【０００９】
また、現実映像撮影手段をもたない構成もある。この場合、映像表示装置自体が光学的にシースルーになっており、計算機からの出力によらずに眼前の現実空間を観察することができる必要がある。この場合は仮想映像生成手段が仮想物体を表示するだけでよく、合成手段を必要としない。
【００１０】
複合現実空間を同時に観察・操作する人数は一人とは限らず、複数人で同じ複合現実空間を体験・操作するシステムが存在する。この場合は、仮想空間のシーンの状態を管理する仮想シーン管理手段を設ける。それぞれの観察者の仮想映像生成手段は、仮想シーン管理手段から得られるシーン情報をもとにしておのおのの観察視点から仮想空間の映像を描画する。こうすれば、どの観察者も同じ内容のシーンを自分の視点から観察することができる。操作入力装置を複数用意すれば、それぞれの観察者が同じ仮想空間を操作することもできる。
【００１１】
このようなシステム構成によれば、それぞれの体験者は同時に、自分自身の視点から複合現実空間を観察することができ、それぞれが仮想物体に対する操作を行うことが可能である。
【００１２】
従来の複合現実感提示装置における操作は、操作入力装置に入力された情報に加えて、体験者が見ている視線の方向などの観察者情報を組み合わせて操作内容を決定することがあった。そのような例を説明する。図１１は、二人の観察者のそれぞれが複合現実映像を観察している様子を示している図である。
【００１３】
１１０１，１１０２はそれぞれ観察者で、それぞれの観察者１１０１，１１０２は自身の頭部にＨＭＤ１１０３，１１０４を装着しており、手には操作入力装置１１０５，１１０６を保持している。図１２は、操作入力装置１１０５、１１０６に適用可能な操作入力装置の一例を示す図である。図１２において１２０６は十字ボタンで、操作対象の仮想物体を奥、手前、右、左に移動させる指示を入力するためのものであり、例えば、Ｘが記された方向に十字ボタン１２０６を押下すると、操作対象の仮想物体を奥側に移動させる指示を入力することができる。１２０２から１２０５のそれぞれは、各種の指示を入力するためのボタンである。
【００１４】
この操作入力装置は、ケーブルを介して不図示の計算機に接続されており、このケーブルを介して十字ボタン１２０６やボタン群１２０２〜１２０５による操作指示が計算機に送出される。
【００１５】
図１１に戻って１１０７は、それぞれの操作入力装置１１０５、１１０６の操作対象となる仮想物体である。１１９９は、観察者１１０２の視点方向にそって観察者１１０２から見て奥側を示す説明のための矢印であり、１１９８は、観察者１１０１の視線方向にそって観察者１１０１から見て奥側を示す説明のための矢印である。この例では、観察者１１０１は、操作入力装置１１０５を用いて（ここでは例として、Ｘが記された方向に十字ボタン１２０６を押下する）、仮想物体１１０７を矢印１１９８に示す方向に移動させる指示を入力することができ、観察者１１０２は、操作入力装置１１０６を用いて（ここでは例として、Ｘが記された方向に十字ボタン１２０６を押下する）、仮想物体１１０７を矢印１１９９に示す方向に移動させる指示を入力することができる。
【００１６】
この場合では、観察者は自分から離れる方向(自分から見て奥の方向)に仮想物体１１０７を移動させたいという意図をもっており、同じキー操作（Ｘが記された方向に十字ボタン１２０６を押下する）を行っても、観察者の視線方向に応じて仮想物体１１０７を移動させる方向が変化するといった操作方法が便利である。
【００１７】
この他の例としては、複数存在する仮想物体１１０７の中から一つの仮想物体１１０７を選択する操作を行った場合に、観察者が見ている映像中の一番画面中央寄りにある仮想物体１１０７を選択する、といった操作方法などもある。
【００１８】
このように、観察者の情報（観察者の頭部位置姿勢や観察している画面の情報）と、操作入力装置からの操作入力情報とを合わせて判断し、操作に反映することが従来から行われている。
【００１９】
また、観察者が自分が装着しているHMDの設定値(色設定など)を変更する際に操作入力装置を使うような場合でも、装置に入力された情報がどのHMDの設定値を変更しようとしているのかと特定するために、観察者の情報(どの観察者がどのHMDを装着しているか)と操作入力装置との間の対応関係を管理する必要があった。
【特許文献１】特開２００１−１９５６０１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
従来の手法によれば、操作入力装置と映像表示装置との対応付けは事前に決めておく必要があり、煩雑であった。また、操作入力装置の数が映像表示装置の数より少ない場合には問題があった。この問題について以下により詳細に説明する。
【００２１】
上述のように、図１１では、複数人で同じ複合現実空間を共有し、協調作業を行っている。同図において、操作入力装置１１０５はＨＭＤ１１０３と対応していることが事前に決められている。従って、ＨＭＤ１１０３を装着した観察者１１０１が操作入力装置１１０５においてＸが記された方向に十字ボタン１２０６を押下する操作を行った場合には、ＨＭＤ１１０３の視線方向、即ち、観察者１１０１の視線方向（矢印１１９８の方向）が「奥の方向」と解釈され、仮想物体１１０７が矢印１１９８の方向に移動されることになる。
【００２２】
同様に、観察者１１０２が操作入力装置１１０６においてＸが記された方向に十字ボタン１２０６を押下する操作を行った場合には、観察者１１０２の視線方向（矢印１１９９の方向）が「奥の方向」と解釈され、仮想物体１１０７が矢印１１９９の方向に移動されることになる。
【００２３】
ここでもし観察者１１０１が誤って操作入力装置１１０６を手にとってＸが記された方向に十字ボタン１２０６を押下すると、観察者１１０２の視線方向が「奥の方向」と解釈されてしまい、観察者１１０１の意図とは異なる操作結果（観察者１１０１の「手前」に仮想物体１１０７が移動する）となってしまう。従って、それぞれの観察者１１０１、１１０２は、自分がどのＨＭＤを装着したかに応じてどの操作入力装置を持つべきなのか注意を払わなければならず、煩雑であるという課題があった。また、操作入力装置を複数の観察者が共有利用することができず、操作入力装置を観察者の数だけ用意しなければならない、という問題があった。
【００２４】
本発明は以上の問題に鑑みてなされたものであり、ＨＭＤと操作入力装置との対応付けをより簡便に行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００２６】
即ち、現実空間を撮像する撮像装置から、当該画像を取得する取得工程と、
前記取得工程で取得した画像中に、仮想物体に対する操作入力を行うための操作入力装置に固有の情報が含まれている場合には、前記撮像装置に固有の情報と、当該操作入力装置に固有の情報とを関連付けて、メモリ内で管理する管理工程と
を備えることを特徴とする。
【００２７】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００２８】
即ち、頭部装着型表示装置の位置姿勢を取得する第１の取得工程と、
仮想物体に対する操作入力を行うための操作入力装置の位置姿勢を取得する第２の取得工程と、
前記第１の取得工程で取得した位置姿勢と、前記第２の取得工程で取得した位置姿勢と、の関係が予め定めた関係を満たす場合には、前記頭部装着型表示装置に固有の情報と、前記操作入力装置に固有の情報とを関連付けて、メモリ内で管理する管理工程と
を備えることを特徴とする。
【００２９】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００３０】
即ち、現実空間を撮像する撮像装置から、当該画像を取得する取得手段と、
前記取得手段が取得した画像中に、仮想物体に対する操作入力を行うための操作入力装置に固有の情報が含まれている場合には、前記撮像装置に固有の情報と、当該操作入力装置に固有の情報とを関連付けて、メモリ内で管理する管理手段と
を備えることを特徴とする。
【００３１】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００３２】
即ち、頭部装着型表示装置の位置姿勢を取得する第１の取得手段と、
仮想物体に対する操作入力を行うための操作入力装置の位置姿勢を取得する第２の取得手段と、
前記第１の取得手段が取得した位置姿勢と、前記第２の取得手段が取得した位置姿勢と、の関係が予め定めた関係を満たす場合には、前記頭部装着型表示装置に固有の情報と、前記操作入力装置に固有の情報とを関連付けて、メモリ内で管理する管理手段と
を備えることを特徴とする。
【発明の効果】
【００３３】
本発明の構成によれば、ＨＭＤと操作入力装置との対応付けをより簡便に行うことができる。
【発明を実施するための最良の形態】
【００３４】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００３５】
［第１の実施形態］
図１は、本実施形態に係るシステムの構成例を示す図である。同図に示したシステムは、二人の観察者に複合現実空間（現実空間と仮想空間との複合空間）を体感させるための構成を有している。しかし詳しくは後述するが、任意の数の観察者に対して複合現実感を体感させるためのシステムを、後述する説明に基づいて構成することは、当業者であれば容易になし得る。
【００３６】
また、詳しくは以下で説明するが、本実施形態に適用可能なシステムの構成は同図に示すものに限定するものではなく、当業者であれば適宜変形例が考えられるであろう。
【００３７】
同図において１０１はＰＣ（パーソナルコンピュータ）で、一方の観察者（第１の観察者）に対して提示する複合現実空間の画像（複合現実空間画像）を生成し、生成した複合現実空間画像をこのＰＣ１０１に接続されているＨＭＤ１１１に送出する。
【００３８】
１０２はＰＣで、他方の観察者（第２の観察者）に対して提示する複合現実空間画像を生成し、生成した複合現実空間画像をこのＰＣ１０２に接続されているＨＭＤ１１２に送出する。
【００３９】
それぞれのＰＣ１０１，１０２には外部記憶装置としてのメモリ１９９，１９８が接続されており、それぞれのＰＣにおいて必要なプログラムやデータが保存されている。また、新たに情報を記録することもできる。
【００４０】
ＨＭＤ１１１には、第１の観察者がこのＨＭＤ１１１を自身の頭部に装着した場合に、第１の観察者の眼前における現実空間の動画像を撮像する為のビデオカメラ１１３が装着されている。このビデオカメラ１１３によって撮像された各フレームの画像（現実空間画像）は順次ＰＣ１０１に送出される。
【００４１】
これはＨＭＤ１１２についても同様で、ＨＭＤ１１２には、第２の観察者がこのＨＭＤ１１２を自身の頭部に装着した場合に、第２の観察者の眼前における現実空間の動画像を撮像する為のビデオカメラ１１４が装着されている。このビデオカメラ１１４によって撮像された各フレームの画像（現実空間画像）は順次ＰＣ１０２に送出される。
【００４２】
ここで、ＰＣとこれに接続されているＨＭＤ、ビデオカメラには全て同じ識別情報が割り当てられている。ここではこの識別情報としてＰＩＤ（Player ID）を用いる。本実施形態では、ＰＣ１０１、ＨＭＤ１１１、ビデオカメラ１１３にはＰＩＤ＝１を割り当て、ＰＣ１０２、ＨＭＤ１１２、ビデオカメラ１１４にはＰＩＤ＝２を割り当てる。
【００４３】
また、ＨＭＤ１１１には、ビデオカメラ１１３の位置姿勢を計測するための位置姿勢センサ１２０がビデオカメラ１１３の位置近傍に取り付けられている。位置姿勢センサ１２０は、例えば、位置姿勢センサ１２０が磁気センサである場合には、磁気の発信源の位置を原点とし、この原点で互いに直交する３軸をそれぞれｘ軸、ｙ軸、ｚ軸とする座標系（センサ座標系）における自身の位置姿勢に応じた磁気を検知し、検知した結果を示す信号を後述するコントローラ１１５に送出する。なお、ビデオカメラ１１３の位置姿勢を計測できるのであれば、如何なるものを用いても良い。
【００４４】
これはＨＭＤ１１２についても同様で、ＨＭＤ１１２には、ビデオカメラ１１４の位置姿勢を計測するための位置姿勢センサ１２１がビデオカメラ１１４の位置近傍に取り付けられている。位置姿勢センサ１２１は、例えば、位置姿勢センサ１２１が磁気センサである場合には、センサ座標系における自身の位置姿勢に応じた磁気を検知し、検知した結果を示す信号を後述するコントローラ１１５に送出する。なお、ビデオカメラ１１４の位置姿勢を計測できるのであれば、如何なるものを用いても良い。
【００４５】
ここで、それぞれの位置姿勢センサには、計測対象となるビデオカメラに対応する識別情報が割り当てられている。ここではこの識別情報としてＳＩＤ（Sensor ID）を用いる。本実施形態では、ＰＩＤ＝１のビデオカメラ１１３の位置姿勢を計測する位置姿勢センサ１２０にはＳＩＤ＝１を割り当て、ＰＩＤ＝２のビデオカメラ１１４の位置姿勢を計測する位置姿勢センサ１２１にはＳＩＤ＝２を割り当てる。
【００４６】
また同図において、１０３はＰＣで、コントローラ１１５が接続されている。上述の通り、コントローラ１１５には、位置姿勢センサ１２０，１２１が接続されており、コントローラ１１５は、位置姿勢センサから受けた信号に基づいて位置姿勢を求める処理を行う。即ち、位置姿勢センサ１２０から信号を受けた場合には、この信号に基づいて、位置姿勢センサ１２０の位置姿勢を求める。位置姿勢センサ１２１から信号を受けた場合には、この信号に基づいて、位置姿勢センサ１２１の位置姿勢を求める。求めた位置姿勢はデータとしてＰＣ１０３に送出する。ＰＣ１０３は受けたデータを、後述するＰＣ１０６に送出する。
【００４７】
また、ＰＣ１０３には外部記憶装置としてのメモリ１９４が接続されており、ＰＣ１０３において必要なプログラムやデータが保存されている。また、新たに情報を記録することもできる。
【００４８】
１０４、１０５はＰＣで、それぞれには操作入力装置１１６、１１７が接続されている。ここで、それぞれの操作入力装置１１６、１１７には識別情報が割り当てられている。ここではこの識別情報としてＤＩＤ（Device ID）を用いる。本実施形態では、操作入力装置１１６のＤＩＤは「１」とし、操作入力装置１１７のＤＩＤは「２」とする。
【００４９】
図９は、操作入力装置１１６（１１７）の外観図である。図９において、９０６は十字ボタンで、操作対象の仮想物体を奥、手前、右、左に移動させる指示を入力するためのものである。例えば、Ｘが記された方向に十字ボタン９０６を押下すると、操作対象の仮想物体を奥側に移動させる指示を入力することができる。９０２〜９０５のそれぞれは、各種の指示を入力するためのボタンである。
【００５０】
９０１はケーブルであり、上記十字キー９０６やボタン群９０２〜９０５を用いて入力した操作指示は信号としてこのケーブル９０１を介してＰＣ１０４（１０５）に送出される。
【００５１】
９０７は２次元バーコードで、操作入力装置１１６（１１７）に対応する識別情報を表すものであり、操作入力装置１１６（１１７）上の所定の位置に張り付けられている。この２次元バーコードが示す識別情報をＰｉｃＩＤ（＞０）とする。本実施形態では、このＰｉｃＩＤは、ＤＩＤと同じ値を有するものとする。即ち、ＤＩＤ＝１の操作入力装置１１６には、ＰｉｃＩＤ＝１を表す２次元バーコード９０７が張り付けられており、ＤＩＤ＝２の操作入力装置１１７には、ＰｉｃＩＤ＝２を表す２次元バーコード９０７が張り付けられている。
【００５２】
図１に戻って、それぞれのＰＣ１０４，１０５には外部記憶装置としてのメモリ１９７，１９６が接続されており、それぞれのＰＣにおいて必要なプログラムやデータが保存されている。また、新たに情報を記録することもできる。
【００５３】
１０６はＰＣで、外部からアクセス可能な共有メモリ１０７を有する。共有メモリ１０７には、後述する各種の情報が格納されており、他のＰＣはこの共有メモリ１０７に対してアクセスすることで、共有メモリ１０７に格納されている情報を読み取ったり、更新したりすることができる。ＰＣ１０６は、このような共有メモリ１０７に対するアクセス制御を行う。
【００５４】
１６０は、ＬＡＮなどのネットワークであり、上記各ＰＣはこのネットワークに接続されている。従って、上記各ＰＣはこのネットワーク１６０を介して互いにデータ通信を行うことができる。
【００５５】
以上説明した各装置によって本実施形態に係るシステムは構成されているが、上述の通り、本システムは、二人の観察者に対して複合現実感を提供するものである。しかし、例え、Ｎ（Ｎ≧１）人の観察者に対して複合現実感を提供する場合であったとしても、同図点線で示した装置群（セット）１８１をＮセットネットワーク１６０に接続し、それぞれのセットにおける位置姿勢センサをコントローラ１１５に接続すればよい。
【００５６】
また、同図のシステムでは、それぞれの目的に応じてＰＣを設けたが、１台のＰＣにより多くの処理を割り当てることができるのであれば、より少ないＰＣでもってシステムを構成することができる。
【００５７】
即ち、上述の通り、システムの構成は、当業者であれば、適宜変形例を考えることができる。
【００５８】
図１０は、上記各ＰＣに適用可能なコンピュータのハードウェア構成例を示す図である。
【００５９】
ＣＰＵ１７０１は、ＲＡＭ１７０２やＲＯＭ１７０３に格納されているプログラムやデータを用いて、本コンピュータを適用したＰＣが行う各種の処理を実行する。
【００６０】
ＲＡＭ１７０２には、外部記憶装置１７０６（本コンピュータを適用したＰＣに接続されており、図１に示したメモリに相当）からロードされたプログラムやデータ、Ｉ／Ｆ１７０７やＮＩＣ１７０８を介して外部から受信したプログラムやデータを一時的に記憶するためのエリアや、ＣＰＵ１７０１が各種の処理を実行する際に用いるワークエリアなど、各種のエリアを適宜提供することができる。
【００６１】
ＲＯＭ１７０３は、本コンピュータを適用したＰＣの設定データやブートプログラムなどを格納する。
【００６２】
操作部１７０４は、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をＣＰＵ１７０１に対して入力することができる。
【００６３】
表示部１７０５は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１７０１による処理結果を画像や文字などでもって表示することができる。
【００６４】
外部記憶装置１７０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置であり、ここにはＯＳ（オペレーティングシステム）や、本コンピュータを適用したＰＣが保持するものとして説明する各種のプログラムやデータが保存されている。そしてこれらのプログラムやデータはＣＰＵ１７０１による制御に従って適宜ＲＡＭ１７０２にロードされる。そしてＣＰＵ１７０１はこのロードされたプログラムやデータを用いて処理を実行する。
【００６５】
Ｉ／Ｆ１７０７は、本コンピュータを適用したＰＣに接続されているものとして説明した各種の外部機器を接続するためのものであり、本コンピュータを適用したＰＣは、このＩ／Ｆ１７０７を介して各種の外部機器とのデータ通信を行うことになる。
【００６６】
ＮＩＣ１７０８は、本コンピュータを上記ネットワーク１６０に接続するためのものであり、本コンピュータはこのＮＩＣ１７０８を介して他のＰＣとのデータ通信を行うことになる。
【００６７】
１７０９は上述の各部を繋ぐバスである。
【００６８】
なお、上記各ＰＣに適用可能なコンピュータのハードウェア構成については各種の変形例が考えられ、例えば、上記構成に画像処理専用のハードウェアを設け、画像処理全般をこのハードウェアに任せるようにしても良い。
【００６９】
図２は、本システムにおけるＰＣ１０１、ＰＣ１０２が１フレーム分の複合現実空間画像を生成し、出力する処理のフローチャートである。なお、同図のフローチャートに従った処理をＰＣ１０１（１０２）のＣＰＵ１７０１に実行させるためのプログラムやデータは、ＰＣ１０１（１０２）の外部記憶装置１７０６に保存されている。ＣＰＵ１７０１はこのプログラムやデータをＲＡＭ１７０２にロードし、このロードしたプログラムやデータを用いて処理を実行する。これにより、ＰＣ１０１（１０２）は、以下説明する各処理を実行する。
【００７０】
なお、以下では、ＰＩＤ＝ＰのＰＣが行う処理について説明する。即ち、以下説明する処理は、Ｐ＝１とすればＰＣ１０１が行う処理であり、Ｐ＝２とすればＰＣ１０２が行う処理となる。
【００７１】
先ず、ステップＳ２０１では、ＰＩＤ＝Ｐのビデオカメラ（Ｐ＝１の場合にはビデオカメラ１１３、Ｐ＝２の場合にはビデオカメラ１１４）により撮像された現実空間画像をＲＡＭ１７０２に取得する。次にステップＳ２０２では、共有メモリ１０７に対してアクセスし、ＰＩＤ＝Ｐのビデオカメラの位置姿勢（ＰＩＤ＝Ｐの位置姿勢センサ（Ｐ＝１の場合には位置姿勢センサ１２０、Ｐ＝２の場合には位置姿勢センサ１２１）が計測したビデオカメラの位置姿勢）を共有メモリ１０７から取得する。
【００７２】
図４は、共有メモリ１０７に格納されている、それぞれのビデオカメラ１１３，１１４の位置姿勢を管理するテーブルの構成例を示す図である。同図のテーブルには、各ＳＩＤに対応する位置姿勢センサが計測した位置（ｘ、ｙ、ｚ）と姿勢（Roll,Pitch,Yaw）が管理されている。同図のテーブルは、各ＳＩＤに対応する位置姿勢センサが計測した計測結果に基づいてコントローラ１１５が求めた位置姿勢情報をＰＣ１０３がコントローラ１１５から受け、そしてＰＣ１０３が各ＳＩＤに対応する位置姿勢情報を、対応するＳＩＤと共に共有メモリ１０７に対して書き込むことで生成されるものである。
【００７３】
本実施形態では、位置姿勢センサのＳＩＤは、この位置姿勢センサが計測対象とするビデオカメラのＰＩＤと同じ値であるので、ステップＳ２０２ではＣＰＵ１７０１は、自身に割り当てられているＰＩＤを外部記憶装置１７０６から取得し、取得したＰＩＤと同じ値を有するＳＩＤに対応する位置姿勢を共有メモリ１０７内に格納されている上記テーブルから取得する。
【００７４】
次にステップＳ２０３においてＣＰＵ１７０１は、ステップＳ２０１で取得した画像中に上記２次元バーコードが位置しているか否かをチェックする。画像中におけるバーコードの検出技術については周知の技術であるので、これについての説明は省略する。
【００７５】
このチェックの結果、２次元バーコード９０７が位置していた場合には、この２次元バーコード９０７を読み取ることで、この２次元バーコード９０７が示すＰｉｃＩＤを取得し、ＲＡＭ１７０２に一時的に記憶する。そして処理をステップＳ２０４に進める。
【００７６】
ステップＳ２０４では、共有メモリ１０７にアクセスし、共有メモリ１０７に保持されている「ＤＩＤとＰＩＤとの対応関係を示すテーブル」を参照する。図８は、各種の状態におけるこのテーブルの構成例を示す図である。
【００７７】
そして、このテーブルにおいて、ステップＳ２０３で取得したＰｉｃＩＤと同じ値が記録されているＤＩＤの欄に、所定の値（例えば「−１」）を書き込む。例えばＰＩＤ＝Ｎに対応するＤＩＤの値がこの所定の値である場合には、「ＰＩＤ＝Ｎの機器に対応する操作入力装置は存在しない」ことになる。
【００７８】
そしてステップＳ２０４における処理の後、ステップＳ２０５では、ステップＳ２０４で参照したテーブルにおいてＰＩＤ＝Ｐに対応するＤＩＤの欄に、ステップＳ２０３で取得したＰｉｃＩＤを記録することで、テーブルを更新する。そして処理をステップＳ２０６に進める。
【００７９】
ここで、「ＤＩＤとＰＩＤとの対応関係を示すテーブル」について、図８を用いて説明する。図８（ａ）は、初期状態におけるテーブルの構成例を示しており、同図に示す如く、ＰＩＤ＝１に対応するＤＩＤの値として「−１」、ＰＩＤ＝２に対応するＤＩＤの値として「−１」が格納されている。即ち、同図のテーブルは、ＰＩＤ＝１、ＰＩＤ＝２の何れの機器についても、対応する操作入力装置は存在しないことを示している。
【００８０】
図８（ｂ）は、ＰＩＤ＝１にはＤＩＤ＝１、ＰＩＤ＝２にはＤＩＤ＝２が対応付けられているテーブルの構成例を示す図である。同図に示す如く、ＰＩＤ＝１にはＤＩＤ＝１、ＰＩＤ＝２にはＤＩＤ＝２が対応付けられているので、このテーブルは、ＰＩＤ＝１の機器にはＤＩＤ＝１の操作入力装置１１６が対応付けられており、ＰＩＤ＝２の機器にはＤＩＤ＝２の操作入力装置１１７が対応付けられていることを示している。即ち、このテーブルは、ＰＩＤ＝１のビデオカメラ１１３がＤＩＤ＝１の操作入力装置１１６上の２次元バーコード９０７を撮像し、ＰＩＤ＝２のビデオカメラ１１７がＤＩＤ＝２の操作入力装置１１７上の２次元バーコード９０７を撮像することにより生成されたものである。
【００８１】
図８（ｃ）は、図８（ｂ）におけるテーブル状態の後に、ＰＩＤ＝１のビデオカメラ１１３がＤＩＤ＝２の操作入力装置１１７上の２次元バーコード９０７を撮像したことにより生成されるテーブルの構成例を示す図である。図８（ｂ）におけるテーブル状態の後に、ＰＩＤ＝１のビデオカメラ１１３がＤＩＤ＝２の操作入力装置１１７上の２次元バーコード９０７を撮像すると、この２次元バーコード９０７のＰｉｃＩＤが「２」であるので、上記ステップＳ２０４では、ＤＩＤ＝２となっている欄に「−１」を記録する。そして、上記ステップＳ２０５では、ビデオカメラ１１３のＰＩＤ＝１に対応するＤＩＤの欄にこの２次元バーコード９０７のＰｉｃＩＤである「２」を記録する。
【００８２】
図２に戻って、上記ステップＳ２０３におけるチェック処理の結果、２次元バーコード９０７が位置していない場合には、処理をステップＳ２０６に進める。
【００８３】
ステップＳ２０６では、共有メモリ１０７にアクセスし、共有メモリ１０７に格納されているシーン情報を読み出す。シーン情報とは、仮想空間を規定するデータ群であり、例えば、仮想空間を構成する各仮想物体の描画データ（仮想物体がポリゴンでもって構成されている場合には、各ポリゴンの色データや法線データ、ポリゴンを構成する各頂点の位置データ、テクスチャデータ等）、各仮想物体の配置位置姿勢データ、仮想空間中に配置する光源に係るデータ等により構成されている。このシーン情報は、後述する各処理により、適宜更新される。
【００８４】
次にステップＳ２０８では、上記ステップＳ２０１で取得した現実空間画像をＲＡＭ１７０２中の所定のエリアに描画する。次にステップＳ２０９では、上記ステップＳ２０６で取得したシーン情報に基づく仮想空間を、上記ステップＳ２０２で取得した位置姿勢を有する視点から見た画像（仮想空間画像）を生成し、ステップＳ２０８で現実空間画像を描画した所定のエリア上に描画する。
【００８５】
これにより、この所定のエリアには、現実空間画像上に仮想空間画像が重畳された複合現実空間画像が生成されることになるので、ステップＳ２１０においてＣＰＵ１７０１は、この複合現実空間画像をＩ／Ｆ１７０７を介して、ＰＩＤ＝ＰのＨＭＤ（Ｐ＝１の場合にはＨＭＤ１１１、Ｐ＝２の場合にはＨＭＤ１１２）に出力する。
【００８６】
次にステップＳ２１１では、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された否かをチェックする。このチェックの結果、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された場合には本処理を終了する。一方、本処理を終了する条件は満たされていないし、その指示が操作部１７０４を介して入力されていない場合には処理をステップＳ２０１に戻し、次のフレームの複合現実空間画像を生成すべく処理を行う。なお、ＨＭＤが左右独立（立体視可能）である場合は、上記の処理を左右の目（画面）毎に繰り返して行えばよい。
【００８７】
次に、ＰＣ１０３が、コントローラ１１５から受けた位置姿勢のデータを共有メモリ１０７に登録する処理について、同処理のフローチャートを示す図３を用いて以下説明する。なお、同図のフローチャートに従った処理をＰＣ１０３のＣＰＵ１７０１に実行させるためのプログラムやデータは、ＰＣ１０３の外部記憶装置１７０６に保存されている。ＣＰＵ１７０１はこのプログラムやデータをＲＡＭ１７０２にロードし、このロードしたプログラムやデータを用いて処理を実行する。これにより、ＰＣ１０３は、以下説明する各処理を実行する。
【００８８】
位置姿勢センサ１２０、１２１はそれぞれ、コントローラ１１５が有する複数のコネクタのうち何れかのコネクタに接続されている。ここで、どの位置姿勢センサをそのコネクタに接続するのかを予め決定しおけば、コントローラ１１５は、得られた位置姿勢データがどの位置姿勢センサのものであるのかを特定することができる。換言すれば、コントローラ１１５は、所望するSIDに対応するセンサの位置姿勢データを取得することができる。
【００８９】
従ってステップＳ３０１では、ＣＰＵ１７０１は、コントローラ１１５から、すべてのSIDに対応する位置姿勢データを取得し、SIDと取得した位置姿勢データをＲＡＭ１７０２に一時的に記憶する。
【００９０】
次にステップＳ３０２では、共有メモリ１０７に登録されている図４に示すテーブルにおいて、SIDとステップＳ３０１で取得した位置姿勢データとを、このテーブルに登録する。例えば、図４において、ＳＩＤ＝１の位置データとしては（ｘ１，ｙ１，ｚ１）が登録されており、姿勢データとしては（Roll1,Pitch1,Yaw1）が登録されている。同様に、ＳＩＤ＝２の位置データとしては（ｘ２，ｙ２，ｚ２）が登録されており、姿勢データとしては（Roll２,Pitch２,Yaw２）が登録されている。
【００９１】
なお、図４は、２つのセンサの位置姿勢データが登録された状態を示しているが、Ｎ個のセンサから位置姿勢データがコントローラ１１５、ＰＣ１０３を介して共有メモリ１０７に送出された場合には、Ｎ行のテーブルとなり、各行には、対応するＳＩＤの位置姿勢データが登録されることになる。
【００９２】
図３に戻って次に、ステップＳ３０３では、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された否かをチェックする。このチェックの結果、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された場合には本処理を終了する。一方、本処理を終了する条件は満たされていないし、その指示が操作部１７０４を介して入力されていない場合には処理をステップＳ３０４に進める。
【００９３】
ステップＳ３０４では、適当な時間（例えばビデオ映像の１フレーム分に当たる１／３０秒など)だけ処理を待機し、その後、処理をステップＳ３０１に進める。
【００９４】
次に、ＰＣ１０４，１０５が、操作入力装置１１６、１１７から操作入力を受け付け、その結果を共有メモリ１０７に登録する一連の処理について、同処理のフローチャートを示す図５を用いて、以下説明する。なお、同図のフローチャートに従った処理をＰＣ１０４（１０５）のＣＰＵ１７０１に実行させるためのプログラムやデータは、ＰＣ１０４（１０５）の外部記憶装置１７０６に保存されている。ＣＰＵ１７０１はこのプログラムやデータをＲＡＭ１７０２にロードし、このロードしたプログラムやデータを用いて処理を実行する。これにより、ＰＣ１０４（１０５）は、以下説明する各処理を実行する。
【００９５】
なお、以下では、ＤＩＤ＝Ｄの操作入力装置に接続されたＰＣが行う処理について説明する。即ち、以下説明する処理は、Ｄ＝１とすれば操作入力装置１１６に接続されたＰＣ１０４が行う処理であり、Ｄ＝２とすれば操作入力装置１１７に接続されたＰＣ１０５が行う処理となる。
【００９６】
先ず、ステップＳ５０１では、ＤＩＤ＝Ｄの操作入力装置から送出された操作情報を受け付ける。以下では説明を簡単にするために、Ｘが記された方向に十字ボタン９０６を押下する操作がなされたか否かを示す操作情報が操作入力装置から送出されるものとする。ＣＰＵ１７０１は、操作情報を受けると、これをＲＡＭ１７０２に一時的に記憶する。
【００９７】
そしてステップＳ５０２では、共有メモリ１０７に保持されている、図６に示すテーブルにおいて、ＤＩＤ＝Ｄに対応する操作情報の項目に、Ｘが記された方向に十字ボタン９０６が押下されている場合には「１」、押下されていない場合には「０」を記録する。図６は、ＤＩＤ＝１，２に対応する操作入力装置において、Ｘが記された方向に十字ボタン９０６が押下されているか否かを管理するためのテーブルの構成例を示す図である。
【００９８】
なお、図６は、２つの操作入力装置の操作情報が登録された状態を示しているが、Ｎ個の操作入力装置の操作情報を登録する場合には、このテーブルはＮ行のテーブルとなり、各行には、対応するＤＩＤの操作情報が登録されることになる。
【００９９】
また更に、複数の操作に対する操作情報を管理する場合には、それぞれの操作毎にこのテーブルを設ければよい。
【０１００】
また、１台のＰＣに複数の操作入力装置が接続されている場合には、上記ステップＳ５０１，Ｓ５０２における処理をそれぞれの操作入力装置について行えばよい。
【０１０１】
図５に戻って次に、ステップＳ５０３では、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された否かをチェックする。このチェックの結果、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された場合には本処理を終了する。一方、本処理を終了する条件は満たされていないし、その指示が操作部１７０４を介して入力されていない場合には処理をステップＳ５０４に進める。
【０１０２】
ステップＳ５０４では、適当な時間（例えばビデオ映像の１フレーム分に当たる１／３０秒など)だけ処理を待機し、その後、処理をステップＳ５０１に進める。
【０１０３】
次に、ＰＣ１０６が、共有メモリ１０７に登録されている各種の情報を管理する一連の処理について、同処理のフローチャートを示す図７を用いて、以下説明する。なお、同図のフローチャートに従った処理をＰＣ１０６のＣＰＵ１７０１に実行させるためのプログラムやデータは、ＰＣ１０６の外部記憶装置１７０６に保存されている。ＣＰＵ１７０１はこのプログラムやデータをＲＡＭ１７０２にロードし、このロードしたプログラムやデータを用いて処理を実行する。これにより、ＰＣ１０６は、以下説明する各処理を実行する。
【０１０４】
先ず、ステップＳ７０１では、変数ｋを１に初期化する。次にステップＳ７０２では、共有メモリ１０７内に管理されている図６に示す上記テーブルにおいて、ＤＩＤ＝ｋに対応する操作情報を参照し、操作がなされているか否かをチェックする。即ち、本実施形態の場合、操作情報＝１であるか否かをチェックする。このチェックの結果、操作情報＝１である場合、即ち、ＤＩＤ＝ｋの操作入力装置においてＸが記された方向に十字ボタン９０６が押下されている場合には処理をステップＳ７０３に進め、操作情報＝０である場合には処理をステップＳ７０７に進める。
【０１０５】
ステップＳ７０３では、図８に示す上記テーブルを参照し、ＤＩＤ＝ｋに対応するＰＩＤが所定の値（本実施形態では「−１」）であるのかをチェックし、所定の値である場合、即ち、ＤＩＤ＝ｋの操作入力装置に対応する機器が存在しない場合には処理をステップＳ７０７に進める。一方、ＤＩＤ＝ｋに対応するＰＩＤが所定の値ではない場合、即ち、ＤＩＤ＝ｋの操作入力装置に対応する機器が存在する場合には処理をステップＳ７０４に進める。
【０１０６】
ステップＳ７０４では、図８のテーブルでＤＩＤ＝ｋに対応するＰＩＤの値をｍとした場合に、図４のテーブルから、ＰＩＤ＝ｍに対応する位置姿勢を取得する。そしてステップＳ７０５では操作対象の仮想物体の移動量、移動方向を算出する。本実施形態では、ステップＳ７０４で取得した姿勢を方向ベクトルとする方向に、予め定めた量だけ操作対象の仮想物体を移動させるものとするが、移動に関してはこれに限定するものではない。
【０１０７】
次に、ステップＳ７０６では、共有メモリ１０７に格納されているシーン情報を、操作対象の仮想物体の位置姿勢をステップＳ７０５で算出した移動方向、移動量のぶんだけ変化させたシーン情報に更新する処理を行う。
【０１０８】
次にステップＳ７０７では、変数ｋが、操作入力装置の総数ＭＡＸ（本実施形態の場合、ＭＡＸ＝２）と同じであるか、即ち、全ての操作入力装置についてステップＳ７０２からステップＳ７０６の処理を行ったか否かをチェックする。そしてｋ＝ＭＡＸである場合には処理をステップＳ７０９に進める。一方、ｋ≠ＭＡＸである場合には、処理をステップＳ７０８に進める。
【０１０９】
ステップＳ７０８では、ｋ＝ｋ＋１を計算することで、変数ｋの値を１つインクリメントする。そして処理をステップＳ７０２に進め、以降の処理を行う。
【０１１０】
一方、ステップＳ７０９では、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された否かをチェックする。このチェックの結果、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された場合には本処理を終了する。一方、本処理を終了する条件は満たされていないし、その指示が操作部１７０４を介して入力されていない場合には処理をステップＳ７１０に進める。
【０１１１】
ステップＳ７１０では、適当な時間（例えばビデオ映像の１フレーム分に当たる１／３０秒など)だけ処理を待機し、その後、処理をステップＳ７０１に進める。
【０１１２】
以上の説明により、本実施形態によれば、操作入力装置とＨＭＤとの対応関係を設定するためには、このＨＭＤを頭部に装着したユーザは、このＨＭＤに対応させたい操作入力装置上における２次元バーコードを観察するだけでよいので、従来よりもこの対応関係をより簡便に設定することができる。
【０１１３】
これにより、ユーザは、自身に対応付けられた操作入力装置を用いて仮想物体に対する操作を行うことができるので、自身の意図する操作を行うことができる。また、複数人のユーザが操作入力装置を持ち替えて使用する場合であっても、操作入力装置を手に持ったユーザは、この操作入力装置上における２次元バーコードを観察するだけで、この操作入力装置を用いて、自身の意図する操作を入力することができる。これにより、複数人のそれぞれについて操作入力装置を設けなくても良い、という効果を奏することができる。
【０１１４】
また、操作入力装置とＨＭＤとの対応関係を設定した後、このＨＭＤに搭載された表示装置のパラメータをこの操作入力装置を用いて操作することができるようにしても良い。このパラメータには、例えば、表示装置における表示の明るさや、色味などがある。
【０１１５】
［第２の実施形態］
図１３は、本実施形態に係るシステムの構成を示す図である。同図に示した構成は、図１に示した構成において、ＨＭＤ１０１，１０２を光学シースルー方式のものにし、ビデオカメラ１１３，１１４を省いている。従って位置姿勢センサ１２０、１２１はそれぞれ、ＨＭＤ１０１，１０２の位置姿勢を計測している。更に、操作入力装置１１６、１１７にはそれぞれ、位置姿勢センサ１２２，１２３を取り付けている。
【０１１６】
以下では、第１の実施形態と異なる点について説明する。
【０１１７】
位置姿勢センサ１２２は操作入力装置１１６の位置姿勢を計測し、計測結果を信号としてコントローラ１１５に送出する。コントローラ１１５は受けた信号に基づいて位置姿勢センサ１２２の位置姿勢を求め、求めたデータをＰＣ１０３に送出する。ＰＣ１０３は、この受けたデータをＰＣ１０６に送出する。
【０１１８】
位置姿勢センサ１２３は操作入力装置１１７の位置姿勢を計測し、計測結果を信号としてコントローラ１１５に送出する。コントローラ１１５は受けた信号に基づいて位置姿勢センサ１２３の位置姿勢を求め、求めたデータをＰＣ１０３に送出する。ＰＣ１０３は、この受けたデータをＰＣ１０６に送出する。
【０１１９】
即ち、位置姿勢センサ１２２，１２３により計測された結果は、位置姿勢センサ１２０、１２１により計測された結果と同様にして処理され、コントローラ１１５、ＰＣ１０３を介してＰＣ１０６に送出される。ＰＣ１０６は、受けた位置姿勢データを第１の実施形態と同様にして、共有メモリ１０７に格納する。
【０１２０】
図１４は、本システムにおけるＰＣ１０１、ＰＣ１０２が１フレーム分の複合現実空間画像を生成し、出力する処理のフローチャートである。なお、同図のフローチャートに従った処理をＰＣ１０１（１０２）のＣＰＵ１７０１に実行させるためのプログラムやデータは、ＰＣ１０１（１０２）の外部記憶装置１７０６に保存されている。ＣＰＵ１７０１はこのプログラムやデータをＲＡＭ１７０２にロードし、このロードしたプログラムやデータを用いて処理を実行する。これにより、ＰＣ１０１（１０２）は、以下説明する各処理を実行する。
【０１２１】
なお、以下では、ＰＩＤ＝ＰのＰＣが行う処理について説明する。即ち、以下説明する処理は、Ｐ＝１とすればＰＣ１０１が行う処理であり、Ｐ＝２とすればＰＣ１０２が行う処理となる。
【０１２２】
先ずステップＳ１４０１では、共有メモリ１０７に管理されている図１５に示すテーブルを参照する。図１５は、共有メモリ１０７に管理されている、それぞれの位置姿勢センサ１２０、１２１，１２２，１２３の位置姿勢（ＨＭＤ１０１，１０２の位置姿勢、操作入力装置１１６、１１７の位置姿勢）が登録されたテーブルの構成例を示す図である。
【０１２３】
同図においてＳＩＤ＝１に対応する（ｘ、ｙ、ｚ）の欄には、ＳＩＤ＝１の位置姿勢センサ１２０が計測したＨＭＤ１０１の位置が登録されており、（Roll,Pitch,Yaw）の欄には、ＳＩＤ＝１の位置姿勢センサ１２０が計測したＨＭＤ１０１の姿勢が登録されている。
【０１２４】
また、ＳＩＤ＝２に対応する（ｘ、ｙ、ｚ）の欄には、ＳＩＤ＝２の位置姿勢センサ１２１が計測したＨＭＤ１０２の位置が登録されており、（Roll,Pitch,Yaw）の欄には、ＳＩＤ＝２の位置姿勢センサ１２１が計測したＨＭＤ１０２の姿勢が登録されている。
【０１２５】
また、ＳＩＤ＝３に対応する（ｘ、ｙ、ｚ）の欄には、ＳＩＤ＝３の位置姿勢センサ１２２が計測した操作入力装置１１６の位置が登録されており、（Roll,Pitch,Yaw）の欄には、ＳＩＤ＝３の位置姿勢センサ１２２が計測した操作入力装置１１６の姿勢が登録されている。
【０１２６】
また、ＳＩＤ＝４に対応する（ｘ、ｙ、ｚ）の欄には、ＳＩＤ＝４の位置姿勢センサ１２３が計測した操作入力装置１１７の位置が登録されており、（Roll,Pitch,Yaw）の欄には、ＳＩＤ＝４の位置姿勢センサ１２３が計測した操作入力装置１１７の姿勢が登録されている。
【０１２７】
このようなテーブルは、各ＳＩＤに対応する位置姿勢センサが計測した計測結果に基づいてコントローラ１１５が求めた位置姿勢情報をＰＣ１０３がコントローラ１１５から受け、そしてＰＣ１０３が各ＳＩＤに対応する位置姿勢情報を、対応するＳＩＤと共に共有メモリ１０７に対して書き込むことで生成されるものである。
【０１２８】
ステップＳ１４０１では、ＣＰＵ１７０１は、自身に割り当てられているＰＩＤを外部記憶装置１７０６から取得し、取得したＰＩＤと同じ値を有するＳＩＤに対応する位置姿勢を共有メモリ１０７内に格納されている上記テーブルから取得する。
【０１２９】
ステップＳ１４０２では上記ステップＳ２０６同様の処理を行う。即ち、共有メモリ１０７にアクセスし、共有メモリ１０７に格納されているシーン情報を読み出す。
【０１３０】
ステップＳ１４０４では、ステップＳ１４０２で取得したシーン情報に基づく仮想空間を、ステップＳ１４０１で取得した位置姿勢を有する視点から見た画像（仮想空間画像）を生成し、ＲＡＭ１７０２中の所定のエリア上に描画する。
【０１３１】
そしてステップＳ１４０５では、ＣＰＵ１７０１は、この仮想空間画像をＩ／Ｆ１７０７を介して、ＰＩＤ＝ＰのＨＭＤ（Ｐ＝１の場合にはＨＭＤ１１１、Ｐ＝２の場合にはＨＭＤ１１２）に出力する。
【０１３２】
次にステップＳ１４０６では、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された否かをチェックする。このチェックの結果、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された場合には本処理を終了する。一方、本処理を終了する条件は満たされていないし、その指示が操作部１７０４を介して入力されていない場合には処理をステップＳ１４０１に戻し、次のフレームの仮想空間画像を生成すべく処理を行う。なお、ＨＭＤが左右独立（立体視可能）である場合は、上記の処理を左右の目（画面）毎に繰り返して行えばよい。
【０１３３】
次に、ＰＣ１０６が、共有メモリ１０７に登録されている各種の情報を管理する一連の処理について、同処理のフローチャートを示す図１６を用いて、以下説明する。なお、同図のフローチャートに従った処理をＰＣ１０６のＣＰＵ１７０１に実行させるためのプログラムやデータは、ＰＣ１０６の外部記憶装置１７０６に保存されている。ＣＰＵ１７０１はこのプログラムやデータをＲＡＭ１７０２にロードし、このロードしたプログラムやデータを用いて処理を実行する。これにより、ＰＣ１０６は、以下説明する各処理を実行する。
【０１３４】
先ず、ステップＳ１６０１では、変数ｋを１に初期化する。次にステップＳ１６０２では、共有メモリ１０７内に管理されている図６に示す上記テーブルにおいて、ＤＩＤ＝ｋに対応する操作情報を参照し、操作がなされているか否かをチェックする。この処理は上記ステップＳ７０２と同様にして行う。
【０１３５】
そして、ＤＩＤ＝ｋの操作入力装置においてＸが記された方向に十字ボタン９０６が押下されている場合には処理をステップＳ１６０３に進め、操作情報＝０である場合には処理をステップＳ１６０６に進める。
【０１３６】
ステップＳ１６０３では先ず、図１５に示す上記テーブルを参照し、ＤＩＤ＝ｋの操作入力装置に取り付けられている位置姿勢センサ（本実施形態の場合、ｋ＝１の場合には、ＤＩＤ＝１の操作入力装置１１６に取り付けられているＳＩＤ＝３の位置姿勢センサ１２２、ｋ＝２の場合には、ＤＩＤ＝２の操作入力装置１１７に取り付けられているＳＩＤ＝４の位置姿勢センサ１２３）の位置姿勢を図１５のテーブルから取得する。そして、このテーブルに登録されている全てのＨＭＤの位置（図１５の場合、ＳＩＤ＝１に対応する位置姿勢、ＳＩＤ＝２に対応する位置姿勢）のうち、ＤＩＤ＝ｋの操作入力装置に取り付けられている位置姿勢センサの位置に最も近い位置のＨＭＤを特定する。
【０１３７】
なお、本ステップにおける処理は以下のように適宜変形例が考えられる。例えば、このテーブルに登録されている全てのＨＭＤの姿勢のうち、ＤＩＤ＝ｋの操作入力装置に取り付けられている位置姿勢センサの姿勢に最も近い姿勢を有するＨＭＤを特定しても良い。また、ＤＩＤ＝ｋの操作入力装置に取り付けられている位置姿勢センサの位置から所定距離以内にどのＨＭＤも位置していない場合には、特定するＨＭＤが存在しないと判断しても良いし、あらかじめ定めておいたHMDを規定値として特定しても良い。
【０１３８】
このように、ＤＩＤ＝ｋの操作入力装置に取り付けられている位置姿勢センサの位置姿勢に基づいてＨＭＤが１つ特定できれば処理をステップＳ１６０４に進めるし、特定できなかった場合には、処理をステップＳ１６０６に進める。
【０１３９】
ステップＳ１６０４では、ステップＳ１６０３で特定したＨＭＤのＳＩＤに対応する位置姿勢を図１５のテーブルから取得し、操作対象の仮想物体の移動量、移動方向を算出する。本実施形態では、ステップＳ１６０３で特定したＨＭＤのＳＩＤに対応する姿勢を方向ベクトルとする方向に、予め定めた量だけ操作対象の仮想物体を移動させるものとするが、移動に関してはこれに限定するものではない。
【０１４０】
次に、ステップＳ１６０５では、共有メモリ１０７に格納されているシーン情報を、操作対象の仮想物体の位置姿勢をステップＳ１６０４で算出した移動方向、移動量のぶんだけ変化させたシーン情報に更新する処理を行う。
【０１４１】
次にステップＳ１６０６では、変数ｋが、操作入力装置の総数ＭＡＸ（本実施形態の場合、ＭＡＸ＝２）と同じであるか、即ち、全ての操作入力装置についてステップＳ１６０２からステップＳ１６０５の処理を行ったか否かをチェックする。そしてｋ＝ＭＡＸである場合には処理をステップＳ１６０８に進める。一方、ｋ≠ＭＡＸである場合には、処理をステップＳ１６０７に進める。
【０１４２】
ステップＳ１６０７では、ｋ＝ｋ＋１を計算することで、変数ｋの値を１つインクリメントする。そして処理をステップＳ１６０２に進め、以降の処理を行う。
【０１４３】
一方、ステップＳ１６０８では、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された否かをチェックする。このチェックの結果、本処理を終了する条件が満たされたか、若しくはその指示が操作部１７０４を介して入力された場合には本処理を終了する。一方、本処理を終了する条件は満たされていないし、その指示が操作部１７０４を介して入力されていない場合には処理をステップＳ１６０９に進める。
【０１４４】
ステップＳ１６０９では、適当な時間（例えばビデオ映像の１フレーム分に当たる１／３０秒など)だけ処理を待機し、その後、処理をステップＳ１６０１に進める。
【０１４５】
なお、上記説明では、操作入力装置に対応するＨＭＤが特定できた場合に、それぞれの識別情報をメモリに登録するという点について説明は行わなかったが、この登録処理は第１の実施形態と同様に行うようにしても良い。
【０１４６】
また、操作入力装置に対応するＨＭＤが特定できなかった場合には第１の実施形態と同様に、操作入力装置の識別情報と所定の値とを関連付けてメモリに登録するようにしても良い。
【０１４７】
＜変形例＞
位置を利用して操作入力装置とＨＭＤとの対応付けを管理する方法としては、操作入力装置の位置姿勢を固定しておいて、その位置姿勢の値を事前に記録しておき、それに最も近い位置姿勢にあるＨＭＤを対応付けるという方法も考えられる。この場合は操作入力装置に位置姿勢センサを取り付ける必要がないという利点がある。この場合の処理としては、操作入力装置の位置姿勢は位置姿勢テーブル中で決まった値にしておき、これは更新しないようにすればよい。
【０１４８】
上記第１，２の実施形態においては、ユーザが操作入力装置の２次元バーコードを観察した時や、操作入力装置に近寄った時に、動的に対応付けが変更される処理になっている。もし、対応付けを変更したくないような要求がある場合は、対応付けの変更を一時的に禁止し、対応付けを固定する処理を設けることが考えられる。
【０１４９】
例えば、共有メモリ１０７中に対応付け変更禁止のためのフラグを設けておき、対応テーブルを変更する処理を行う前にはこのフラグを確認して対応テーブルの変更を行うかどうか判定するようにすればよい。
【０１５０】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１５１】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１５２】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１５３】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１５４】
【図１】本発明の第１の実施形態に係るシステムの構成例を示す図である。
【図２】システムにおけるＰＣ１０１、ＰＣ１０２が１フレーム分の複合現実空間画像を生成し、出力する処理のフローチャートである。
【図３】ＰＣ１０３が、コントローラ１１５から受けた位置姿勢のデータを共有メモリ１０７に登録する処理のフローチャートである。
【図４】共有メモリ１０７に格納されている、それぞれのビデオカメラ１１３，１１４の位置姿勢を管理するテーブルの構成例を示す図である。
【図５】ＰＣ１０４，１０５が、操作入力装置１１６、１１７から操作入力を受け付け、その結果を共有メモリ１０７に登録する一連の処理のフローチャートである。
【図６】ＤＩＤ＝１，２に対応する操作入力装置において、Ｘが記された方向に十字ボタン９０６が押下されているか否かを管理するためのテーブルの構成例を示す図である。
【図７】ＰＣ１０６が、共有メモリ１０７に登録されている各種の情報を管理する一連の処理のフローチャートである。
【図８】各種の状態におけるこのテーブルの構成例を示す図である。
【図９】操作入力装置１１６（１１７）の外観図である。
【図１０】各ＰＣに適用可能なコンピュータのハードウェア構成例を示す図である。
【図１１】二人の観察者のそれぞれが複合現実映像を観察している様子を示している図である。
【図１２】操作入力装置１１０５、１１０６に適用可能な操作入力装置の一例を示す図である。
【図１３】本発明の第２の実施形態に係るシステムの構成を示す図である。
【図１４】システムにおけるＰＣ１０１、ＰＣ１０２が１フレーム分の複合現実空間画像を生成し、出力する処理のフローチャートである。
【図１５】共有メモリ１０７に管理されている、それぞれの位置姿勢センサ１２０、１２１，１２２，１２３の位置姿勢が登録されたテーブルの構成例を示す図である。
【図１６】ＰＣ１０６が、共有メモリ１０７に登録されている各種の情報を管理する一連の処理のフローチャートである。
【図１】
2008009646.tif 000003
【図２】
2008009646.tif 000004
【図３】
2008009646.tif 000005
【図４】
2008009646.tif 000006
【図５】
2008009646.tif 000007
【図６】
2008009646.tif 000008
【図７】
2008009646.tif 000009
【図８】
2008009646.tif 000010
【図９】
2008009646.tif 000011
【図１０】
2008009646.tif 000012
【図１１】
2008009646.tif 000013
【図１２】
2008009646.tif 000014
【図１３】
2008009646.tif 000015
【図１４】
2008009646.tif 000016
【図１５】
2008009646.tif 000017
【図１６】
2008009646.tif 000018