(57)【要約】【課題】  それぞれの拠点における実空間のサイズの違いを考慮して、それぞれの拠点に属するユーザが拠点間で複合現実空間を共有することを可能にする技術を提供すること。【解決手段】  現実空間において第１の領域を基準とする第１のローカル座標系において、該第１の領域とは異なる第２の領域を基準とする第２のローカル座標系における第２の位置に対応する第１の位置が、該第１の領域内の位置であるか否かを判断する。第１の位置に配置した仮想物体の画像が上記の判断結果に応じた表示形態で表示されるように、第１の領域内を移動可能な第１の頭部装着型表示装置の位置姿勢に応じて生成し、該生成した画像を第１の頭部装着型表示装置に出力する。【選択図】  図１
2018106298.tif 000002
【特許請求の範囲】
【請求項１】
現実空間において第１の領域を基準とする第１のローカル座標系において、該第１の領域とは異なる第２の領域を基準とする第２のローカル座標系における第２の位置に対応する第１の位置が、該第１の領域内の位置であるか否かを判断する判断手段と、
前記第１の位置に配置した仮想物体の画像が前記判断手段による判断結果に応じた表示形態で表示されるように、前記第１の領域内を移動可能な第１の頭部装着型表示装置の位置姿勢に応じて生成し、該生成した画像を前記第１の頭部装着型表示装置に出力する生成手段と
備えることを特徴とする画像処理装置。
【請求項２】
前記第１の位置が前記第１の領域内の位置である場合における前記表示形態と、前記第１の位置が前記第１の領域内の位置ではない場合における前記表示形態と、は異なることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第２の位置は、仮想物体を配置する位置であることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記生成手段は、
前記第１の位置が前記第１の領域内の位置である場合には、前記第１の頭部装着型表示装置の位置姿勢に応じて、前記第１の位置に配置した第１の仮想物体の画像を生成し、該生成した画像を前記第１の頭部装着型表示装置に出力し、
前記第１の位置が前記第１の領域の外の位置である場合には、前記第１の頭部装着型表示装置の位置姿勢に応じて、前記第１の位置に配置した第２の仮想物体の画像を生成し、該生成した画像を前記第１の頭部装着型表示装置に出力する
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記第２の位置は、前記第２の領域内を移動可能な第２の頭部装着型表示装置の位置であることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項６】
前記生成手段は、
前記第１の位置が前記第１の領域内の位置である場合には、前記第１の頭部装着型表示装置の位置姿勢に応じて、前記第１の位置に配置した第１のアバターの画像を生成し、該生成した画像を前記第１の頭部装着型表示装置に出力し、
前記第１の位置が前記第１の領域の外の位置である場合には、前記第１の頭部装着型表示装置の位置姿勢に応じて、前記第１の位置に配置した第２のアバターの画像を生成し、該生成した画像を前記第１の頭部装着型表示装置に出力する
ことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記第１のアバターと前記第２のアバターとは異なるアバターであることを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記第２のアバターは、前記第１のアバターから生成されたアバターであることを特徴とする請求項６に記載の画像処理装置。
【請求項９】
前記生成手段は、
前記第２のローカル座標系において前記第１の頭部装着型表示装置の位置に対応する対応位置が前記第２の領域内の位置ではない場合には、エラーを示すアイコンを前記第１の頭部装着型表示装置に出力することを特徴とする請求項１乃至８の何れか１項に記載の画像処理装置。
【請求項１０】
前記第１の領域は建物の一方の部屋、前記第２の領域は該建物の他方の部屋であることを特徴とする請求項１乃至９の何れか１項に記載の画像処理装置。
【請求項１１】
前記第１の領域は建物の一方の部屋、前記第２の領域は該建物とは異なる建物の部屋であることを特徴とする請求項１乃至９の何れか１項に記載の画像処理装置。
【請求項１２】
前記第１の領域と前記第２の領域とはサイズが異なることを特徴とする請求項１乃至１１の何れか１項に記載の画像処理装置。
【請求項１３】
現実空間における第１の領域と第２の領域とで重複する重複領域を特定する特定手段と、
前記第２の領域を基準とするローカル座標系における位置に対応する前記第１の領域を基準とするローカル座標系における対応位置に配置した仮想物体、前記第１の領域を表すモデル、前記重複領域を表すモデル、の画像を、前記第１の領域内を移動可能な第１の頭部装着型表示装置の位置姿勢に応じて生成し、該生成した画像を前記第１の頭部装着型表示装置に出力する生成手段と
備えることを特徴とする画像処理装置。
【請求項１４】
前記生成手段は、前記第１の領域を表すモデルの画像、前記重複領域を表すモデルの画像、のそれぞれを互いに識別可能に生成することを特徴とする請求項１３に記載の画像処理装置。
【請求項１５】
更に、
現実空間の撮像画像を取得する手段を備え、
前記生成手段は、前記生成した画像と前記現実空間の撮像画像とを合成した画像を前記第１の頭部装着型表示装置に出力することを特徴とする請求項１乃至１４の何れか１項に記載の画像処理装置。
【請求項１６】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の判断手段が、現実空間において第１の領域を基準とする第１のローカル座標系において、該第１の領域とは異なる第２の領域を基準とする第２のローカル座標系における第２の位置に対応する第１の位置が、該第１の領域内の位置であるか否かを判断する判断工程と、
前記画像処理装置の生成手段が、前記第１の位置に配置した仮想物体の画像が前記判断工程による判断結果に応じた表示形態で表示されるように、前記第１の領域内を移動可能な第１の頭部装着型表示装置の位置姿勢に応じて生成し、該生成した画像を前記第１の頭部装着型表示装置に出力する生成工程と
備えることを特徴とする画像処理方法。
【請求項１７】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の特定手段が、現実空間における第１の領域と第２の領域とで重複する重複領域を特定する特定工程と、
前記画像処理装置の生成手段が、前記第２の領域を基準とするローカル座標系における位置に対応する前記第１の領域を基準とするローカル座標系における対応位置に配置した仮想物体、前記第１の領域を表すモデル、前記重複領域を表すモデル、の画像を、前記第１の領域内を移動可能な第１の頭部装着型表示装置の位置姿勢に応じて生成し、該生成した画像を前記第１の頭部装着型表示装置に出力する生成工程と
備えることを特徴とする画像処理方法。
【請求項１８】
コンピュータを、請求項１乃至１５の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複合現実空間の提示技術に関するものである。
【背景技術】
【０００２】
近年、複合現実（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ／以下、ＭＲと記載）の技術が普及している。複合現実の技術を用いることで、ヘッドマウントディスプレイ（ＨＭＤ：Ｈｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）を装着したユーザに対し、現実画像にＣＧモデルを配置した複合現実画像を提供することができる。これにより、現実と仮想とを複合した複合現実の世界をこのユーザに体験させることができる。複合現実画像を生成するにあたり、ＨＭＤの位置とＣＧモデルの位置とを、センサや二次元マーカを用いて特定する手法が用いられている。
【０００３】
特許文献１には、ＨＭＤで撮像された画像の中に写る二次元マーカを用いてＨＭＤの位置姿勢を特定して、複合現実画像を提供する技術が記載されている。また、特許文献２には、磁気センサを用いてＨＭＤの位置姿勢を特定して、複合現実画像を提供する技術が記載されている。
【０００４】
また、特許文献３には、異なる現実空間でＨＭＤを利用して体験している際に、現実空間上の各ユーザの位置に応じて特定される仮想空間上のそれぞれの位置を考慮して現実空間でユーザが発した音を再生する仕組みにおいて、音を発したユーザと同一の場所に存在するユーザに対しては該音の再生を制御する仕組みが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−３０８５１４号公報
【特許文献２】特開２００３−２４０５３２号公報
【特許文献３】特開２０１６−０４８５３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複合現実の技術を複数拠点（異なる現実空間）で用いると、それぞれの拠点の体験者は同じ複合現実を体験できるが、たとえば拠点毎の部屋の広さが違うといったように拠点毎の実空間の広さが全く同じでないという状況が発生する。このような場合に複数拠点で複合現実を共有すると、決まった大きさで複合現実が共有されるため、ある拠点では移動可能な位置にＣＧモデルが表示され、他の拠点では実空間の制約上移動できない位置にＣＧモデルが表示されるという状況が発生する。そのため、拠点毎の実空間の広さの違いを管理し、複合現実を体験している体験者に必要に応じて通知する仕組みを構築する事が望まれる。
【０００７】
本発明はこのような問題に鑑みてなされたものであり、それぞれの拠点における実空間のサイズの違いを考慮して、それぞれの拠点に属するユーザが拠点間で複合現実空間を共有することを可能にする技術を提供する。
【課題を解決するための手段】
【０００８】
本発明の一様態は、現実空間において第１の領域を基準とする第１のローカル座標系において、該第１の領域とは異なる第２の領域を基準とする第２のローカル座標系における第２の位置に対応する第１の位置が、該第１の領域内の位置であるか否かを判断する判断手段と、前記第１の位置に配置した仮想物体の画像が前記判断手段による判断結果に応じた表示形態で表示されるように、前記第１の領域内を移動可能な第１の頭部装着型表示装置の位置姿勢に応じて生成し、該生成した画像を前記第１の頭部装着型表示装置に出力する生成手段と備えることを特徴とする。
【発明の効果】
【０００９】
本発明の構成によれば、それぞれの拠点における実空間のサイズの違いを考慮して、それぞれの拠点に属するユーザが拠点間で複合現実空間を共有することを可能にする技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】複合現実空間提示システムの構成例を示す図。
【図２】ＨＭＤ１０１及びＰＣ１００のハードウェア構成例を示すブロック図。
【図３】サーバ２００及びＰＣ１００の機能構成例を示すブロック図。
【図４】ＰＣ１００の外部メモリ２１１におけるソフトウェア構成例を示す図。
【図５】ＨＭＤ１０１及びＰＣ１００のそれぞれが行う処理のフローチャート。
【図６】サーバ２００の起動処理のフローチャート。
【図７】ＰＣ１００の起動処理のフローチャート。
【図８】位置姿勢送信に係る処理のフローチャート。
【図９】アバター、仮想物体を現実空間の画像に重畳させる処理のフローチャート。
【図１０】第２の実施形態に係る処理のフローチャート。
【図１１】情報の構成例を示す図。
【図１２】複数拠点で複合現実を共有したイメージ図。
【図１３】複数拠点で実空間の広さが違う場合に複合現実を共有したイメージ図。
【図１４】拠点の実空間の広さが違う場合に複合現実を共有している状態で、狭い拠点のユーザの視界を示すイメージ図。
【図１５】拠点の実空間の広さが違う場合に複合現実を共有している状態で、広い拠点のユーザの視界を示すイメージ図。
【図１６】複数拠点で実空間の広さが違う場合に、狭い実空間のユーザが実空間で移動できない位置に他の拠点のアバターや仮想物体がある場合の視界を示したイメージ図。
【図１７】拠点の実空間の広さが違う場合に複合現実を共有している状態で、狭い実空間のユーザが実空間で移動できない位置に他の拠点のアバターや仮想物体がある場合の視界を示したイメージ図。
【図１８】拠点の実空間の広さが違う場合に複合現実を共有している状態で、広い実空間のユーザが他の拠点で移動できない位置にいる場合の視界を示すイメージ図。
【図１９】複数拠点で一番狭いエリアについての説明図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１２】
［第１の実施形態］
本実施形態に係るシステムは、ＨＭＤ等の頭部装着型表示装置を自身の頭部に装着した複数人のユーザ（体験者）に対し、現実空間と仮想空間との合成空間である複合現実空間の画像を提示する、いわゆる複合現実空間提示システムである。
【００１３】
先ず、本実施形態に係る複合現実空間提示システムの構成例について、図１を用いて説明する。
【００１４】
拠点１には、サーバ２００、ＰＣ（パーソナルコンピュータ）１００ａ〜１００ｃ、ＨＭＤ１０１ａ〜１０１ｃ、光学式センサ１０４ａ〜１０４ｂが設置されており、これらの機器は拠点１におけるローカルエリアネットワーク１５２に接続されている。
【００１５】
拠点２には、ＰＣ１００ｄ〜１００ｆ、ＨＭＤ１０１ｄ〜１０１ｆ、光学式センサ１０４ｃ〜１０４ｄが設置されており、これらの機器は拠点２におけるローカルエリアネットワーク１５１に接続されている。
【００１６】
拠点１及び拠点２はそれぞれ、現実空間において互いに異なる領域であり、例えば、同じ建物内における一方の部屋と他方の部屋、ある建物の部屋と別の建物の部屋等、第１の拠点と該第１の拠点から離間した第２の拠点のそれぞれに対応する。もちろん、第１の拠点及び第２の拠点の定義はこれらに限るものではない。
【００１７】
また、ローカルエリアネットワーク１５１及びローカルエリアネットワーク１５２はネットワーク１５０に接続されており、拠点１に属する機器と拠点２に属する機器とはネットワーク１５０を介して互いにデータ通信が可能なように構成されている。
【００１８】
ここで、以下の説明において、ＨＭＤ１０１ａ〜１０１ｆのそれぞれに共通する説明を行う際には、ＨＭＤ１０１ａ〜１０１ｆをまとめてＨＭＤ１０１と表記する。つまり、ＨＭＤ１０１についての説明は、ＨＭＤ１０１ａ〜１０１ｆの何れにも当てはまるものとする。同様に、ＰＣ１００ａ〜１００ｆのそれぞれに共通する説明を行う際には、ＰＣ１００ａ〜１００ｆをまとめてＰＣ１００と表記する。つまり、ＰＣ１００についての説明は、ＰＣ１００ａ〜１００ｆの何れにも当てはまるものとする。同様に、光学式センサ１０４ａ〜１０４ｄのそれぞれに共通する説明を行う際には、光学式センサ１０４ａ〜１０４ｄをまとめて光学式センサ１０４と表記する。つまり、光学式センサ１０４についての説明は、光学式センサ１０４ａ〜１０４ｄの何れにも当てはまるものとする。また、ＨＭＤ１０１ａ〜１０１ｆのそれぞれに取り付けられている光学式マーカ１０３ａ〜１０３ｆについても同様に、光学式マーカ１０３ａ〜１０３ｆのそれぞれに共通する説明を行う際には、光学式マーカ１０３ａ〜１０３ｆをまとめて光学式マーカ１０３と表記する。つまり、光学式マーカ１０３についての説明は、光学式マーカ１０３ａ〜１０３ｆの何れにも当てはまるものとする。
【００１９】
次に、ＨＭＤ１０１及びＰＣ１００のハードウェア構成例について、図２のブロック図を用いて説明する。なお、図２に示したＨＭＤ１０１及びＰＣ１００のハードウェア構成は、ＨＭＤ１０１及びＰＣ１００が行うものとして後述する各処理を実現可能な構成の一例であり、ＨＭＤ１０１及びＰＣ１００のハードウェア構成は、図２に示した構成に限らない。
【００２０】
先ずＨＭＤ１０１のハードウェア構成について説明する。右目・左目ビデオカメラ２２１は、現実空間の動画像を撮像する右目用のビデオカメラと左目用のビデオカメラとを有し、それぞれ、ＨＭＤ１０１を自身の頭部に装着するユーザの右目及び左目に提供する現実空間の画像（動画像における各フレームの画像）を撮像するためのものである。右目・左目ビデオカメラ２２１が撮像した各フレームの画像（現実空間の画像）は順次、ＰＣ１００に対して送出される。
【００２１】
右目・左目ディスプレイ２２２は、右目用のディスプレイと左目用のディスプレイとを有し、それぞれは、ＨＭＤ１０１を自身の頭部に装着したユーザの右目及び左目の眼前に位置するようにＨＭＤ１０１に取り付けられており、ＰＣ１００から送出された画像や文字を表示する。
【００２２】
次に、ＰＣ１００のハードウェア構成について説明する。
【００２３】
汎用バス２１２は、右目・左目ビデオカメラ２２１から送出された各フレームの画像を受信し、該受信した画像を外部メモリ２１１に書き込むべく、該受信した画像をメモリコントローラ２０７に対して送出する。右目・左目ビデオカメラ２２１からは、外部入力端子（例えば、ＩＥＥＥ１３９４端子）を用いてデータを受信する。
【００２４】
ＣＰＵ２０１は、ＲＯＭ２０２やＲＡＭ２０３に格納されているコンピュータプログラムやデータを用いて処理を実行する。これによりＣＰＵ２０１は、ＰＣ１００全体の動作制御を行うと共に、ＰＣ１００が行うものとして後述する各処理を実行若しくは制御する。
【００２５】
ＲＯＭ２０２には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  ／  ＯｕｔｐｕｔＳｙｓｔｅｍ）などが格納されている。
【００２６】
ＲＡＭ２０３は、外部メモリ２１１からロードされたコンピュータプログラムやデータ、通信Ｉ／Ｆ（インターフェース）コントローラ２０８を介して外部から受信したデータ、を格納するためのエリアを有する。更にＲＡＭ２０３は、ＣＰＵ２０１が各種の処理を実行する際に用いるワークエリアを有する。すなわちＲＡＭ２０３は、各種のエリアを適宜提供することができる。
【００２７】
ビデオコントローラ２０６は、右目・左目ディスプレイ２２２やディスプレイ２１０への映像（画像や文字）の出力制御を行うものであり、右目・左目ディスプレイ２２２に対しては、例えば外部出力端子（例えば、Ｄｉｇｉｔａｌ  Ｖｉｓｕａｌ  Ｉｎｔｅｒｆａｃｅ）を用いて映像出力を行う。
【００２８】
ディスプレイ２１０は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ２０１による処理結果を画像や文字などでもって表示することができる。
【００２９】
入力コントローラ２０５は、入力デバイス２０９からの入力をＣＰＵ２０１に通知するなどの入力制御を行う。
【００３０】
入力デバイス２０９は、キーボードやマウスなどのユーザインターフェースにより構成されており、ユーザが操作することで各種の指示をＣＰＵ２０１に対して入力することができる。なお、入力デバイス２０９としてタッチパネル画面を用いても良い。なお、タッチパネル画面は、マルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネル画面であってもよいこととする。
【００３１】
メモリコントローラ２０７は、外部メモリ２１１への情報の読み書きを制御する。より詳しくは、メモリコントローラ２０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するＨＤＤ（ハードディスクドライブ）やフレキシブルディスク或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ２１１へのアクセスを制御する。
【００３２】
外部メモリ２１１は、上記の通り、ＨＤＤ等のメモリ装置であり、外部メモリ２１１には、ＯＳ（オペレーティングシステム）や、ＰＣ１００が行うものとして後述する各処理をＣＰＵ２０１に実行若しくは制御させるためのコンピュータプログラムやデータが保存されている。外部メモリ２１１に保存されているデータには、以下の説明において予め作成されたデータとして後述するものや、既知の情報として後述するものが含まれている。外部メモリ２１１に保存されているコンピュータプログラムやデータは、ＣＰＵ２０１による制御に従ってＲＡＭ２０３にロードされ、ＣＰＵ２０１による処理対象となる。
【００３３】
通信Ｉ／Ｆコントローラ２０８は、ネットワーク（ネットワーク１５０，１５１，１５２等）を介して外部の機器との間でＴＣＰ／ＩＰを用いたインターネット通信等のデータ通信を行う。また、通信Ｉ／Ｆコントローラ２０８は、ギガビットイーサネット（登録商標）等を通じて光学式センサ１０４との通信も制御する。
【００３４】
光学式センサ１０４は、ＨＭＤ１０１に取り付けられた光学式マーカ１０３を測定し、該測定の結果をＰＣ１００に対して出力する。ＰＣ１００は光学式センサ１０４による測定結果を用いて光学式マーカ１０３の位置姿勢を求める。光学式センサ１０４を用いた光学式マーカ１０３の位置姿勢測定技術については周知であるため、これに係る説明は省略する。光学式センサ１０４からＰＣ１００に対して出力された光学式マーカ１０３の測定結果は、通信Ｉ／Ｆコントローラ２０８を介して外部メモリ２１１に保存される。
【００３５】
汎用バス２１２、ＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、ビデオコントローラ２０６、入力コントローラ２０５、メモリコントローラ２０７、通信Ｉ／Ｆコントローラ２０８は何れも、システムバス２０４に接続されている。
【００３６】
本実施形態では説明を簡単にするために、サーバ２００もＰＣ１００と同じハードウェア構成（図２）を有するものとする。しかし、サーバ２００のハードウェア構成は、図２のＰＣ１００の構成に限らない。
【００３７】
次に、サーバ２００及びＰＣ１００の機能構成例について、図３のブロック図を用いて説明する。図３においてサーバ２００の機能部として示した機能部（３０１〜３０８）はハードウェアで実装しても良いが、ソフトウェア（コンピュータプログラム）で実装しても良い。後者の場合、このコンピュータプログラムは、サーバ２００の外部メモリ２１１に保存されており、ＲＡＭ２０３にロードされた後、ＣＰＵ２０１により実行されることで対応する機能部の機能を実現する。また、図３においてＰＣ１００の機能部として示した機能部（３１１〜３２１）はハードウェアで実装しても良いが、ソフトウェア（コンピュータプログラム）で実装しても良い。後者の場合、このコンピュータプログラムは、ＰＣ１００の外部メモリ２１１に保存されており、ＲＡＭ２０３にロードされた後、ＣＰＵ２０１により実行されることで対応する機能部の機能を実現する。
【００３８】
先ず、サーバ２００の機能部（３０１〜３０８）について説明する。
【００３９】
通信制御部３０１は、ＰＣ１００との間のデータ通信に係る制御を行う。
【００４０】
ＨＭＤ情報管理部３０２は、ＨＭＤ１０１ａ〜１０１ｆのそれぞれに係る情報が登録されたＨＭＤ情報を外部メモリ２１１において管理する。ＨＭＤ情報の構成例を図１１（ａ）に示す。図１１（ａ）に示すＨＭＤ情報１１１０は、ＨＭＤＩＤ１１１１、拠点ＩＤ１１１２，位置１１１３、姿勢１１１４を含む。
【００４１】
ＨＭＤＩＤ１１１１は、ＨＭＤ１０１ａ〜１０１ｆのそれぞれに固有のＩＤである。拠点ＩＤ１１１２は、ＨＭＤ１０１ａ〜１０１ｆのそれぞれが移動可能な空間（拠点）に固有のＩＤである。位置１１１３は、ＨＭＤ１０１ａ〜１０１ｆのそれぞれの位置であり、姿勢１１１４は、ＨＭＤ１０１ａ〜１０１ｆのそれぞれの姿勢である。
【００４２】
図１１（ａ）のＨＭＤ情報１１１０によれば、ＨＭＤＩＤ１１１１＝ＨＭＤ１１１のＨＭＤは、拠点ＩＤ＝Ａに対応する部分現実空間内を移動可能なＨＭＤであり、現在の位置は（Ｘ，Ｙ，Ｚ）、姿勢は（α、β、γ）である。ＨＭＤＩＤ１１１１＝ＨＭＤ２２２のＨＭＤは、拠点ＩＤ＝Ａに対応する部分現実空間内を移動可能なＨＭＤであり、現在の位置は（Ｘ，Ｙ，Ｚ）、姿勢は（α、β、γ）である。ＨＭＤＩＤ１１１１＝ＨＭＤ３３３のＨＭＤは、拠点ＩＤ＝Ｂに対応する部分現実空間内を移動可能なＨＭＤであり、現在の位置は（Ｘ，Ｙ，Ｚ）、姿勢は（α、β、γ）である。つまり、図１１（ａ）のＨＭＤ情報１１１０によれば、ＨＭＤＩＤ１１１１がＨＭＤ１１１のＨＭＤとＨＭＤＩＤ１１１１がＨＭＤ２２２のＨＭＤとは同じ部分現実空間（拠点ＩＤ＝Ａの部分現実空間）内に属するＨＭＤであることが分かる。また、図１１（ａ）のＨＭＤ情報１１１０によれば、ＨＭＤＩＤ１１１１がＨＭＤ１１１のＨＭＤとＨＭＤＩＤ１１１１がＨＭＤ３３３のＨＭＤとは異なる部分現実空間（前者は拠点ＩＤ＝Ａの部分現実空間、後者は拠点ＩＤ＝Ｂの部分現実空間）内に属するＨＭＤであることが分かる。
【００４３】
図３に戻って、次に、ＨＭＤ情報送信部３０３は、ＨＭＤ情報管理部３０２によって管理されているＨＭＤ情報１１１０をＰＣ１００ａ〜１００ｆのそれぞれに対して送信する。
【００４４】
位置情報受信部３０４は、ＰＣ１００ａ〜１００ｆのそれぞれから送信されるＨＭＤ１０１ａ〜１０１ｆのＨＭＤＩＤ１１１１、拠点ＩＤ１１３１、位置１１１３、姿勢１１２５を受信する。上記のＨＭＤ情報管理部３０２は、このようにしてＰＣ１００ａ〜１００ｆから送信されたＨＭＤ１０１ａ〜１０１ｆのそれぞれのＨＭＤＩＤ１１１１、拠点ＩＤ１１３１、位置１１１３、姿勢１１２５を登録したものをＨＭＤ情報１１１０として管理している。
【００４５】
モデルデータ管理部３０５は、サーバ２００が管理する仮想空間を構成する各仮想物体に係る情報が登録されたモデル情報を外部メモリ２１１において管理する。モデル情報の構成例を図１１（ｂ）に示す。図１１（ｂ）に示すモデル情報１１２０は、モデルＩＤ１１２１、モデル名１１２２、ファイルパス１１２３、位置１１２４、姿勢１１２５を含む。
【００４６】
モデルＩＤ１１２１は、各仮想物体に固有のＩＤである。モデル名１１２２は、各仮想物体の描画データ、例えば、仮想物体がポリゴンで構成されている場合には、各ポリゴンの頂点のインデックスや座標、該ポリゴンの法線ベクトル等の幾何データやテクスチャデータを含むファイルのファイル名である。ファイルパス１１２３は、各仮想物体の描画データのファイルのパス（サーバ２００の外部メモリ２１１におけるパス）である。位置１１２４は、各仮想物体の位置であり、姿勢１１２５は各仮想物体の姿勢である。
【００４７】
また、モデルデータ管理部３０５は、ＨＭＤ１０１ａ〜１０１ｆのそれぞれについて、第１のアバター及び第２のアバターの描画データを外部メモリ２１１にて管理している。アバターとは、ＨＭＤ１０１の位置姿勢に応じて配置する仮想物体であり、第１のアバターと第２のアバターとは外見が異なるアバターである。描画データの詳細は上記の通りである。モデルデータ管理部３０５は、ＨＭＤ１０１と、該ＨＭＤ１０１に対応する第１のアバター及び第２のアバターと、を関連づけて外部メモリ２１１で管理している。例えば、第１のアバター及び第２のアバターの描画データを、対応するＨＭＤ１０１のＨＭＤＩＤ１１１１と関連づけて管理している。
【００４８】
図３に戻って、次に、モデルデータ送信部３０６は、モデルデータ管理部３０５によって管理されているモデル情報１１２０の各モデルＩＤ１１２１について、該モデルＩＤ１１２１に対応するモデル名１１２２及びファイルパス１１２３で特定される描画データ、位置１１２４及び姿勢１１２５を、ＰＣ１００ａ〜１００ｆのそれぞれに対して送信する。更にモデルデータ送信部３０６は、ＨＭＤ情報管理部３０２によって管理されているＨＭＤ情報１１１０の各ＨＭＤＩＤ１１１１について、該ＨＭＤＩＤ１１１１に対応する第１のアバター及び第２のアバターの描画データを、ＰＣ１００ａ〜１００ｆに対して送信する。
【００４９】
拠点情報管理部３０７は、各拠点に係る情報が登録された拠点情報を外部メモリ２１１にて管理している。拠点情報の構成例を図１１（ｃ）に示す。図１１（ｃ）に示す拠点情報１１３０は、拠点ＩＤ１１３１、範囲座標数１１３２、範囲座標１１３３〜１１４２、を含む。
【００５０】
拠点ＩＤ１１３１は、各拠点に固有のＩＤである。範囲座標数１１３２は、各拠点（部分現実空間）を構成する頂点の数である。例えば、直方体の形状を有する拠点に対応する範囲座標数１１３２は「８」である（拠点として真四角の部屋を想定した場合、部屋の角にあたる頂点の数として８とし、後述の通りその８点の座標を記憶している）。範囲座標１１３３〜１１４２は、該頂点の座標である。図１１（ｃ）では、１０個の範囲座標が登録されており、拠点ＩＤによっては最大１０個の頂点で構成される多面体の拠点を表現可能である。
【００５１】
拠点情報１１３０は、予め作成してサーバ２００の外部メモリ２１１に登録しておいても良いし、ＰＣ１００ａ〜１００ｆのそれぞれから、ＨＭＤ１０１ａ〜１０１ｆが属する拠点の拠点ＩＤ１１３１、範囲座標数１１３２、範囲座標を収集することで作成しても良い。
【００５２】
図３に戻って、次に、拠点情報送信部３０８は、拠点情報管理部３０７によって管理されている拠点情報１１３０を、ＰＣ１００ａ〜１００ｆのそれぞれに対して送信する。
【００５３】
次に、ＰＣ１００の機能部（３１１〜３２１）について説明する。
【００５４】
通信制御部３１１は、サーバ２００との間のデータ通信に係る制御を行う。
【００５５】
位置情報送信部３１２は、ＨＭＤ１０１のＨＭＤＩＤ１１１１、拠点ＩＤ１１１２、位置１１１３、姿勢１１１４をサーバ２００に対して送信する。ＨＭＤ１０１のＨＭＤＩＤ１１１１及び拠点ＩＤ１１１２については最初の一度だけ送信し、位置１１１３及び姿勢１１１４については定期的若しくは不定期的に送信するようにしても良い。
【００５６】
ＨＭＤ情報受信部３１３は、サーバ２００から送信されるＨＭＤ情報１１１０を受信する。
【００５７】
モデルデータ受信部３１４は、サーバ２００から送信される仮想物体（第１のアバター及び第２のアバターを含む）の描画データや、仮想物体（第１のアバター及び第２のアバター以外）の位置姿勢を受信する。
【００５８】
モデルデータ表示部３１５は、ＨＭＤ１０１が撮像した現実空間の画像に対して、アバター以外の仮想物体の画像を合成する処理を行う。
【００５９】
アバター表示部３１６は、ＨＭＤ１０１が撮像した現実空間の画像に対して、アバターの画像を合成する処理を行う。
【００６０】
拠点情報受信部３１９は、サーバ２００から送信された拠点情報１１３０を受信する。  拠点情報管理部３１７は、拠点情報受信部３１９が受信した拠点情報１１３０を外部メモリ２１１にて管理する。
【００６１】
仮想空間判定部３２０は、自拠点とは異なる他の拠点に属する他ＨＭＤ１０１の位置に対応する対応位置が自拠点の範囲を超えているか否かを判断する。
【００６２】
アイコン表示部３２１は、自ＨＭＤ１０１の位置が、他の拠点の範囲を超えている場合には、その旨を自ＨＭＤ１０１に表示させる。
【００６３】
次に、ＰＣ１００の外部メモリ２１１におけるソフトウェア構成例について、図４を用いて説明する。外部メモリ２１１には、オペレーティングシステム４０１、グラフィックエンジン４０２、複合現実感プラットフォーム４０３（ＭＲプラットフォームともいう）、複合現実感アプリケーション４０４（ＭＲアプリケーションやビューアアプリケーションともいう）が保存されており、その実行制御はＣＰＵ２０１によって行われている。
【００６４】
オペレーティングシステム４０１は、ＨＭＤ１０１に対する入出力を制御し、右目・左目ビデオカメラ２２１から入力インターフェースを介して得られた現実空間の撮像画像を複合現実感プラットフォーム４０３へ受け渡す。また、オペレーティングシステム４０１は、グラフィックエンジン４０２で描画された複合現実空間の画像を、出力インターフェースを介して、ディスプレイ２１０や右目・左目ディスプレイ２２２へ出力する。
【００６５】
グラフィックエンジン４０２は、サーバ２００から受信した描画データに基づいて仮想物体の画像を生成し、該生成した仮想物体の画像を現実空間の撮像画像上に重畳させた複合現実空間の画像を生成する。描画に利用するエンジンは、例えば、ＯｐｅｎＧＬやＤｉｒｅｃｔＸなどの広く利用されているグラフィックエンジンでも、独自に開発したグラフィックエンジンでもよい。なお、本実施形態ではグラフィックライブラリとしてＯｐｅｎＧＬを利用するものとする。
【００６６】
複合現実感プラットフォーム４０３は、例えば、右目・左目ビデオカメラ２２１が撮像した二次元マーカの位置を取得することでＨＭＤ１０１の位置姿勢を特定し、現実空間と仮想空間との位置合わせを行う。なお、位置姿勢や位置合わせの技術は、既知の技術として開示されている、特開２００２−３２７８４号公報、特開２００６−０７２９０３号公報、特開２００７−１６６４２７号公報等を用いて実現することが可能である。なお、二次元マーカを使用せずに、ＨＭＤ１０１に位置センサを備え、この位置センサを用いて三角測量により計測された位置をもとに、ＨＭＤ１０１の位置や姿勢を特定して実現することも可能である。本実施形態の場合は、光学式センサ１０４を用いてＨＭＤ１０１の位置姿勢を取得する。
【００６７】
複合現実感アプリケーション４０４は、複合現実感プラットフォーム４０３からＨＭＤ１０１の位置姿勢、仮想物体の形状の情報、位置姿勢の情報を受け付け、グラフィックエンジン４０２に対して、仮想物体の描画命令を発行する。この時、ＯｐｅｎＧＬのＡＰＩを用いて、描画する仮想物体の識別情報、位置姿勢の情報を設定した命令を発行する。
【００６８】
次に、ＨＭＤ１０１の位置姿勢に応じた複合現実空間の画像をＨＭＤ１０１に提供するために、ＨＭＤ１０１及びＰＣ１００のそれぞれが行う処理について、図５のフローチャートを用いて説明する。なお、図５のフローチャートに従った処理は、１フレーム分の複合現実空間の画像をＨＭＤ１０１に提供するための処理である。然るに、図５のフローチャートに従った処理を繰り返すことで、ＨＭＤ１０１に複数フレームの複合現実空間の画像を提供することができる。
【００６９】
ステップＳ５０２では、右目・左目ビデオカメラ２２１は現実空間を撮像し、ステップＳ５０３では、右目・左目ビデオカメラ２２１は、ステップＳ５０２において撮像した現実空間の撮像画像（現実画像）をＰＣ１００に対して送信する。
【００７０】
ステップＳ５０４では、ＣＰＵ２０１は、ＨＭＤ１０１から送信された現実空間の撮像画像を汎用バス２１２を介して受信し、ステップＳ５０５では、ＣＰＵ２０１はメモリコントローラ２０７を制御して、この受信した現実空間の撮像画像を外部メモリ２１１に保存する。
【００７１】
ステップＳ５０６では、ＣＰＵ２０１は、光学式センサ１０４から送信された光学式マーカ１０３の測定結果を通信Ｉ／Ｆコントローラ２０８を介して受信し、該受信した測定結果に基づいて、光学式マーカ１０３の位置姿勢を求める。そしてＣＰＵ２０１は、求めた光学式マーカ１０３の位置姿勢にバイアスを加えることで、右目・左目ビデオカメラ２２１の位置姿勢を求める。このバイアスは、光学式マーカ１０３と右目・左目ビデオカメラ２２１との位置関係を示すものである。ＨＭＤ１０１の位置姿勢とは、右目・左目ビデオカメラ２２１の位置姿勢であり、以下では視点の位置姿勢とも称する場合がある。
【００７２】
ステップＳ５０７では、ＣＰＵ２０１は、ステップＳ５０６において求めた右目・左目ビデオカメラ２２１の位置姿勢を外部メモリ２１１に保存する。
【００７３】
ステップＳ５０８では、ＣＰＵ２０１は、サーバ２００から受信済みの描画データを用いて仮想物体を構築し、該構築した仮想物体をサーバ２００から該仮想物体について受信した位置姿勢でもって仮想空間中に配置する。そしてＣＰＵ２０１は、ステップＳ５０７で外部メモリ２１１に保存した右目・左目ビデオカメラ２２１の位置姿勢を有する視点から見える該仮想物体の画像を、仮想物体画像（図１１（ｄ）の描画データ１１５１）として生成する。図１１（ｄ）において描画データ情報１１５０は、描画データ１１５１とメタデータ（描画データ１１５１に係る情報群）とを含むものである。規定の位置姿勢を有する視点から見える仮想物体の画像を生成するための技術については周知であるため、これに係る説明は省略する。
【００７４】
そして更にＣＰＵ２０１は、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に、上記生成した仮想物体画像を重畳させた画像を複合現実空間の画像（ＭＲ画像：図１１（ｅ）の画像データ１１６１）として生成する。図１１（ｅ）において画像情報１１６０は、画像データ１１６１とメタデータ（画像データ１１６１に係る情報群）とを含むものである。
【００７５】
なお、ステップＳ５０８における複合現実空間の画像生成処理は、後述する処理によって適宜制御される。
【００７６】
ステップＳ５０９では、ＣＰＵ２０１はビデオコントローラ２０６を制御して、ステップＳ５０８において生成した複合現実空間の画像をディスプレイ２１０及び右目・左目ディスプレイ２２２に対して出力する。
【００７７】
ステップＳ５１０では、右目・左目ディスプレイ２２２は、ステップＳ５０９においてＰＣ１００から送信された複合現実空間の画像を受信し、ステップＳ５１１では、右目・左目ディスプレイ２２２は、ステップＳ５１０で受信した複合現実空間の画像を表示する。これによりＨＭＤ１０１を自身の頭部に装着したユーザの右目及び左目の眼前には、自身の位置姿勢に応じた複合現実空間の画像が提示されることになる。
【００７８】
次に、サーバ２００の電源をオンにするなどしてサーバ２００を起動させた際にサーバ２００にて行われる起動処理について、図６のフローチャートに従って説明する。図６のフローチャートは、サーバ２００が行う起動処理のうち、本実施形態に係る一部の処理を抜粋したものであり、サーバ２００が行う起動処理の全てを示したものではない。
【００７９】
サーバ２００が起動すると（ステップＳ６０１）、ステップＳ６０２では、サーバ２００のＣＰＵ２０１は、外部メモリ２１１に保存しているモデル情報１１２０をＲＡＭ２０３にロードする。ステップＳ６０４では、サーバ２００のＣＰＵ２０１は、ＰＣ１００が行っている「サーバ２００との接続処理」の完了を待機する。「サーバ２００との接続処理」が完了すると、ステップＳ６０５では、サーバ２００のＣＰＵ２０１は、各ＰＣ１００から送信された情報（ＨＭＤＩＤ１１１１、拠点ＩＤ１１１２、位置１１１３、姿勢１１１４）を受信し、受信したこれらの情報を登録したＨＭＤ情報１１１０を生成する。
【００８０】
次に、ＰＣ１００の電源をオンにするなどしてＰＣ１００を起動させた際にＰＣ１００にて行われる起動処理について、図７のフローチャートに従って説明する。図７のフローチャートは、ＰＣ１００が行う起動処理のうち、本実施形態に係る一部の処理を抜粋したものであり、ＰＣ１００が行う起動処理の全てを示したものではない。
【００８１】
ＰＣ１００が起動すると（ステップＳ７０１）、ステップＳ７０２では、ＣＰＵ２０１は、サーバ２００に送信する対象となるＨＭＤＩＤ１１１１、拠点ＩＤ１１３１を外部メモリ２１１からＲＡＭ２０３にロードする。位置１１１３及び姿勢１１１４についてはＣＰＵ２０１は、この時点で光学式マーカ１０３から取得したものを送信対象の情報としてＲＡＭ２０３にロードする。もちろん、この時点における位置１１１３及び姿勢１１１４としてデフォルトの値を用いても構わない。また、この時点では位置１１１３及び姿勢１１１４は送信しなくても良い。
【００８２】
また、上記の拠点情報１１３０をＰＣ１００ａ〜１００ｆから収集した情報に基づいてサーバ２００が生成するのであれば、サーバ２００への送信対象となる情報に、拠点ＩＤ１１３１、範囲座標数１１３２、範囲座標１１３３〜１１４２を含めても良い。
【００８３】
ステップＳ７０３ではＣＰＵ２０１は、通信Ｉ／Ｆコントローラ２０８を制御して、サーバ２００とデータ通信が可能となるように、サーバ２００に対する接続処理を行う。この接続処理が完了すると、ステップＳ７０４では、ＣＰＵ２０１は、通信Ｉ／Ｆコントローラ２０８を制御して、ステップＳ７０２においてＲＡＭ２０３にロードした送信対象の情報を、サーバ２００に対して送信する。
【００８４】
次に、ＰＣ１００から定期的若しくは不定期的にＨＭＤ１０１の位置姿勢をサーバ２００に対して送信する場合におけるＰＣ１００とサーバ２００のそれぞれが行う処理について、図８のフローチャートを用いて説明する。
【００８５】
ステップＳ８０２では、ＣＰＵ２０１は、通信Ｉ／Ｆコントローラ２０８を介して取得した光学式センサ１０４による測定結果である画像を用いて、光学式マーカ１０３の位置姿勢を求める。そしてＣＰＵ２０１は、求めた光学式マーカ１０３の位置姿勢に上記のバイアスを加えることで、右目・左目ビデオカメラ２２１の位置姿勢（位置情報）を求める。右目・左目ディスプレイ２２２の位置姿勢を求めるための手法については、光学式マーカ１０３及び光学式センサ１０４を用いた手法に限らない。
【００８６】
ステップＳ８０３では、ＣＰＵ２０１は通信Ｉ／Ｆコントローラ２０８を制御して、ステップＳ８０２において求めた位置情報をサーバ２００に対して送信する。
【００８７】
ステップＳ８０４では、サーバ２００のＣＰＵ２０１は、ステップＳ８０３においてＰＣ１００から送信された位置情報を受信し、ステップＳ８０５では、サーバ２００のＣＰＵ２０１は、ステップＳ８０４において受信した位置情報をＨＭＤ情報１１１０に登録する。例えば、サーバ２００のＣＰＵ２０１は、ＨＭＤＩＤ１１１１がＨＭＤ１１１のＨＭＤから受信した位置情報のうち位置については位置１１１３において対応する行に上書きし、姿勢については姿勢１１１４において対応する行に上書きする。これにより、ＨＭＤ情報１１１０には、ＨＭＤ１０１ａ〜１０１ｆのそれぞれについて常に最新の位置姿勢が登録されていることになる。そしてサーバ２００は、このようなＨＭＤ情報１１１０をＰＣ１００ａ〜１００ｆのそれぞれに対して定期的に配信するので、ＰＣ１００ａ〜１００ｆは自身に接続されているＨＭＤ１０１だけでなく、他のＨＭＤ１０１の位置姿勢をも取得することができる。
【００８８】
次に、現実空間の画像上に、他のＨＭＤ１０１（他のユーザ）を表すアバターや、アバター以外の仮想物体を重畳させるためにＰＣ１００及びサーバ２００のそれぞれが行う処理について、図９のフローチャートに従って説明する。なお、ＰＣ１００が行う処理（ステップＳ９０２、ステップＳ９０４〜Ｓ９１３）のうち一部（例えば、ステップＳ９０４〜Ｓ９１３）の処理については、図５のフローチャートにおけるＰＣ１００の処理と並行して行われるようにしても良い。ステップＳ９０４〜Ｓ９１３の処理は、上記のステップＳ５０８における複合現実空間の画像の生成の過程で、現実空間の撮像画像上に更に仮想物体／アバターの画像を重畳させるための制御処理に係るものである。
【００８９】
ステップＳ９０１では、サーバ２００のＣＰＵ２０１は、モデル情報１１２０の各モデルＩＤ１１２１について、該モデルＩＤ１１２１に対応するモデル名１１２２及びファイルパス１１２３で特定される仮想物体の描画データ、該仮想物体の位置１１２４及び姿勢１１２５を、ＰＣ１００に対して送信する。なお、サーバ２００は、ＰＣ１００ごとに、該ＰＣ１００に接続されているＨＭＤ１０１の位置姿勢や画角などに応じて決まる視界に入る仮想物体を特定し、該特定した仮想物体の描画データ、位置姿勢をＰＣ１００に対して送信するようにしても良い。これは以下のアバターについても同様である。
【００９０】
更にサーバ２００のＣＰＵ２０１は、ＨＭＤ情報１１１０の各ＨＭＤＩＤ１１１１について、該ＨＭＤＩＤ１１１１に対応する第１のアバター及び第２のアバターの描画データを、ＰＣ１００ａ〜１００ｆに対して送信する。
【００９１】
ステップＳ９０２では、ＰＣ１００のＣＰＵ２０１は、ステップＳ９０１においてサーバ２００から送信された描画データ及び位置姿勢を通信Ｉ／Ｆコントローラ２０８を介して受信し、メモリコントローラ２０７を制御して、該受信した描画データ及び位置姿勢を外部メモリ２１１に保存する。
【００９２】
ステップＳ９０３では、サーバ２００のＣＰＵ２０１は、ＨＭＤ情報１１１０及び拠点情報１１３０をＰＣ１００に対して送信する。
【００９３】
ステップＳ９０４では、ＰＣ１００のＣＰＵ２０１は、ステップＳ９０３においてサーバ２００から送信されたＨＭＤ情報１１１０及び拠点情報１１３０を通信Ｉ／Ｆコントローラ２０８を介して受信し、メモリコントローラ２０７を制御して、該受信したＨＭＤ情報１１１０及び拠点情報１１３０を外部メモリ２１１に保存する。
【００９４】
そしてＰＣ１００のＣＰＵ２０１は、ステップＳ９０５〜Ｓ９０７の処理を、アバター以外のそれぞれの仮想物体について行う。ステップＳ９０５以降の説明では、ＰＣ１００ａにおける処理について説明するが、この説明はＰＣ１００ｂ〜１００ｆについても同様である。
【００９５】
ステップＳ９０５では、ＰＣ１００ａのＣＰＵ２０１は先ず、ＨＭＤ１０１ａのＨＭＤＩＤ１１１１と関連づけてＨＭＤ情報１１１０に登録されている拠点ＩＤ１１１２を特定する。つまり、ＨＭＤ１０１ａが移動可能な拠点の拠点ＩＤ１１１２を特定する。そしてＣＰＵ２０１は、拠点情報１１３０において該拠点ＩＤ１１１２に対応する範囲座標１１３３〜１１４２のうち先頭から範囲座標数１１３２だけ取得し、該取得した範囲座標を頂点とする空間（仮想部分空間）を規定する。この規定した仮想部分空間が、「ＨＭＤ１０１ａが移動可能な拠点を表す空間」である。然るに、「ＨＭＤ１０１ａが移動可能な拠点を表す空間」を得ることができるのであれば、そのための処理は上記の処理に限らない。
【００９６】
そしてＰＣ１００ａのＣＰＵ２０１は、アバター以外の仮想物体のうち未選択の１つを選択仮想物体とし、該選択仮想物体についてステップＳ９０２で受信した位置が、上記の仮想部分空間内の位置であるのか否かを判断する。選択仮想物体の位置はサーバ２００側で適宜更新されても良く、その場合、ステップＳ９０２で受信した位置とは移動先の位置となる。
【００９７】
この判断の結果、選択仮想物体についてステップＳ９０２で受信した位置が仮想部分空間内の位置であれば、処理はステップＳ９０７に進み、選択仮想物体についてステップＳ９０２で受信した位置が仮想部分空間外の位置であれば、処理はステップＳ９０６に進む。
【００９８】
ステップＳ９０７では、ＰＣ１００ａのＣＰＵ２０１は、選択仮想物体の描画データに基づいて選択仮想物体を構築し、該構築した選択仮想物体を該選択仮想物体の位置姿勢でもって仮想空間中に配置し、ＨＭＤ１０１ａの位置姿勢を有する視点から見た該選択仮想物体の画像を生成する。そしてＰＣ１００ａのＣＰＵ２０１は、該生成した画像を、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に重畳させる。
【００９９】
一方、ステップＳ９０６では、ＰＣ１００ａのＣＰＵ２０１は、選択仮想物体の描画データに基づいて選択仮想物体を構築し、該構築した選択仮想物体を該選択仮想物体の位置姿勢でもって仮想空間中に配置し、ＨＭＤ１０１ａの位置姿勢を有する視点から見た該選択仮想物体の画像を生成する。そしてＰＣ１００ａのＣＰＵ２０１は、該生成した画像を、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に重畳させるのであるが、その際、選択仮想物体の画像を囲む規定サイズの枠内で該選択仮想物体を除く領域の色を規定の色（例えば赤）にする（図１６）。赤い背景の仮想物体が見えているということは、自分が赤いところには行けないことがわかる。
【０１００】
つまり、ＨＭＤ１０１ａの属する拠点内に配置可能な仮想物体と配置不可能な仮想物体とを異なる表示形態でもって表示するようにしている。然るに、ステップＳ９０６における選択仮想物体の画像の表示形態については、ステップＳ９０７における選択仮想物体の画像の表示形態と区別できれば、特定の表示形態に限らない。つまり、仮想物体そのものを加工したり、他の仮想物体に切り替えたりするようにしても良いし、仮想物体の画像を現実空間の撮像画像に重畳した後で、該仮想物体の画像に対して画像処理を施すようにしても良い。
【０１０１】
そしてＰＣ１００のＣＰＵ２０１は、ステップＳ９０８〜Ｓ９１１の処理を、ＨＭＤ１０１ａ〜１０１ｆのそれぞれについて行う。
【０１０２】
ステップＳ９０８では、ＰＣ１００ａのＣＰＵ２０１は、ＨＭＤ情報１１１０におけるそれぞれのＨＭＤＩＤ１１１１のうち未選択のＨＭＤＩＤ１１１１（ＨＭＤ１０１ａ以外のＨＭＤＩＤ１１１１）を選択ＨＭＤＩＤとして選択し、該選択ＨＭＤＩＤに対応する拠点ＩＤ１１１２が、ＨＭＤ１０１ａに対応する拠点ＩＤ１１１２と同じであるか否かを判断する。つまり、ＨＭＤ１０１ａ以外のそれぞれのＨＭＤ（ＨＭＤ１０１ｂ〜１０１ｆ）が、ＨＭＤ１０１ａと同じ拠点に属するものであるのか否かを判断する。
【０１０３】
この判断の結果、選択ＨＭＤＩＤに対応する拠点ＩＤ１１１２が、ＨＭＤ１０１ａに対応する拠点ＩＤ１１１２と同じであれば、処理はステップＳ９０８に戻る。一方、選択ＨＭＤＩＤに対応する拠点ＩＤ１１１２が、ＨＭＤ１０１ａに対応する拠点ＩＤ１１１２と同じでなければ、処理はステップＳ９０９に進む。
【０１０４】
ステップＳ９０９では、ＰＣ１００ａのＣＰＵ２０１は、選択ＨＭＤＩＤ１１１１に対応する位置１１１３が、上記のステップＳ９０５において規定した仮想部分空間内の位置であるのか否かを判断する。つまり、ＨＭＤ１０１ａ以外のそれぞれのＨＭＤ（ＨＭＤ１０１ｂ〜１０１ｆ）の位置に対応する、ＨＭＤ１０１ａが属する拠点を基準とするローカル座標系における対応位置が、該拠点内の位置であるのか否かを判断する。
【０１０５】
この判断の結果、選択ＨＭＤＩＤ１１１１に対応する位置１１１３が仮想部分空間内の位置であれば、処理はステップＳ９１０に進み、選択ＨＭＤＩＤ１１１１に対応する位置１１１３が仮想部分空間外の位置であれば、処理はステップＳ９１１に進む。
【０１０６】
ステップＳ９１０では、ＰＣ１００ａのＣＰＵ２０１は、第１のアバター及び第２のアバターのうち、仮想部分空間内に位置していることを表すアバター（移動可能用のアバターであり、ここでは第１のアバターとする）の描画データに基づいて該第１のアバターを構築する。そしてＰＣ１００ａのＣＰＵ２０１は、この構築した第１のアバターを、選択ＨＭＤＩＤ１１１１に対応する位置１１１３、姿勢１１１４で仮想空間（ＨＭＤ１０１ａが属する拠点を基準とする座標系を有する仮想空間であり、仮想部分空間もこの座標系に従っている）中に配置し、該配置した第１のアバターを、ＨＭＤ１０１ａの位置姿勢を有する視点から見た画像を、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に重畳させる。
【０１０７】
ステップＳ９１１では、ＰＣ１００ａのＣＰＵ２０１は、第１のアバター及び第２のアバターのうち、仮想部分空間外に位置していることを表すアバター（移動不可能用のアバターであり、ここでは第２のアバターとする）の描画データに基づいて該第２のアバターを構築する。そしてＰＣ１００ａのＣＰＵ２０１は、この構築した第２のアバターを、選択ＨＭＤＩＤ１１１１に対応する位置１１１３、姿勢１１１４で仮想空間（ＨＭＤ１０１ａが属する拠点を基準とする座標系を有する仮想空間であり、仮想部分空間もこの座標系に従っている）中に配置し、該配置した第２のアバターを、ＨＭＤ１０１ａの位置姿勢を有する視点から見た画像を、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に重畳させる。
【０１０８】
処理がステップＳ９１２に進む時点では、アバターを除く仮想物体を、仮想部分空間に属するものと属さないものとで異なる表示形態で表示し、ＨＭＤ１０１ａと同じ拠点に属するＨＭＤ１０１の位置姿勢にはアバターを表示せず、ＨＭＤ１０１ａと異なる拠点に属するＨＭＤ１０１の位置姿勢にはアバターを表示している（図１４）。これにより、他の拠点（異なる体験エリア）のＨＭＤ（撮像装置）のユーザと、同じ拠点のユーザとを識別させることが可能となり、複数拠点を連携した体験でのコミュニケーションをしやすくすることができる。なお、ＨＭＤ１０１ａと同じ拠点に属するＨＭＤの位置姿勢に、該ＨＭＤがＨＭＤ１０１ａと同じ拠点に属する旨を伝えるアバターを表示するようにしても良い。また、ＨＭＤ１０１ａと異なる拠点に属するＨＭＤ１０１のうち仮想部分空間に属するものと属さないものとでアバターの表示形態を変えている。
【０１０９】
また、第１のアバター及び第２のアバターの２つを設けることに限らず、例えば、第２のアバターは予め作成されたものではなく、必要時にＰＣ１００側で第１のアバターから生成しても良い。例えば、第１のアバターの色や透明度、形状を変更したものを第２のアバターとして生成して使用しても良い。
【０１１０】
ステップＳ９１２では、ＰＣ１００ａのＣＰＵ２０１は、ＨＭＤ情報１１１０に登録されているそれぞれの拠点ＩＤ１１１２について、拠点情報１１３０において該拠点ＩＤ１１１２に対応する範囲座標数１１３２及び範囲座標１１３３〜１１４２を用いて上記のようにして仮想部分空間を規定する。つまり、拠点ＩＤ１１３１ごとに、対応する仮想部分空間を規定する。そしてＰＣ１００ａのＣＰＵ２０１は、ＨＭＤ１０１ａの位置１１１３が、この規定した全ての仮想部分空間内の位置であるのか否かを判断する。
【０１１１】
この判断の結果、ＨＭＤ１０１ａの位置１１１３が、規定した全ての仮想部分空間内の位置である場合には、図９のフローチャートに従った処理は完了する。一方、規定した全ての仮想部分空間のうち、ＨＭＤ１０１ａの位置１１１３を含まない仮想部分空間が１つ以上存在した場合には、処理はステップＳ９１３に進む。
【０１１２】
ステップＳ９１３では、ＰＣ１００ａのＣＰＵ２０１は、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に、エラーを示すアイコン（図１５）を重畳させる。このようなアイコン表示することで、他の拠点の人が、自分の位置にこれないことがわかる。これにより、自拠点と他拠点、ユーザの位置によりユーザの位置が異常であることが識別できる。
【０１１３】
なお、ステップＳ９１３では、エラーを示すアイコンを表示する代わりに、若しくは加えて音を発生してＨＭＤ１０１ａのユーザにエラーを通知しても良いし、エラーの通知方法や通知先は特定の通知方法、特定の通知先に限らない。
【０１１４】
ここで、以上説明したＰＣ１００は、以下に示す画像処理装置の一例に過ぎない。この画像処理装置は、現実空間において第１の領域を基準とする第１のローカル座標系において、該第１の領域とは異なる第２の領域を基準とする第２のローカル座標系における第２の位置に対応する第１の位置が、該第１の領域内の位置であるか否かを判断する。そして画像処理装置は、第１の位置に配置した仮想物体の画像が上記判断結果に応じた表示形態で表示されるように、第１の領域内を移動可能な第１の頭部装着型表示装置の位置姿勢に応じて生成し、該生成した画像を第１の頭部装着型表示装置に出力する。
【０１１５】
［第２の実施形態］
以下では第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとする。本実施形態では、図９のフローチャートにおいて、ステップＳ９０５〜Ｓ９１１の処理の代わりに、図１０のフローチャートに従った処理を行う。図１０のフローチャートにおける各ステップにおける処理の主体は何れも、ＰＣ１００ａのＣＰＵ２０１であるとする。
【０１１６】
ステップＳ１００１では、ＣＰＵ２０１は、拠点情報１１３０におけるそれぞれの拠点ＩＤ１１３１について上記の方法でもって仮想部分空間を生成する。そしてＣＰＵ２０１は、生成した全ての仮想部分空間で重複する重複領域（部分空間：最小拠点）を特定し、該特定した部分空間の頂点座標を求める。
【０１１７】
ステップＳ１００２では、ＣＰＵ２０１は、ステップＳ１００１で特定した部分空間を表すモデルを生成する。例えば、部分空間の頂点間を線分で結んだ、部分空間のワイヤーフレームモデルを生成する。そしてＣＰＵ２０１は、このワイヤーフレームモデルを、ＨＭＤ１０１ａの位置姿勢を有する視点から見た画像を生成し、該生成した画像を、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に重畳する。
【０１１８】
ステップＳ１００３では、ＣＰＵ２０１は、上記のステップＳ９０５と同様に、ＨＭＤ１０１ａのＨＭＤＩＤ１１１１と関連づけてＨＭＤ情報１１１０に登録されている拠点ＩＤ１１３１に対応する範囲座標１１３３〜１１４２のうち先頭から範囲座標数１１３２だけ取得し、該取得した範囲座標間を線分で結んだ、仮想部分空間のワイヤーフレームモデルを生成する。そしてＣＰＵ２０１は、この生成したワイヤーフレームモデルを、ＨＭＤ１０１ａの位置姿勢を有する視点から見た画像を生成し、該生成した画像を、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に重畳する（図１７，１８）。なお、本実施形態では、床（平面）に対応する位置に２次元で破線や実線を描画するようにしているが、床や壁や天井（空間）に対応する位置に最小の空間を示すよう、破線や実線を描画してもよい。
【０１１９】
なお、ステップＳ１００２で生成するワイヤーフレームモデルとステップＳ１００３で生成するワイヤーフレームモデルとは、それぞれで色や線分のパターンを変える等、それぞれのワイヤーフレームモデルが視覚的に区別できる（識別可能）ようにする。
【０１２０】
ステップＳ１００４では、ＣＰＵ２０１は、上記のステップＳ９０７と同様の処理を行う。すなわち、ＣＰＵ２０１は、アバターを除く全ての仮想物体について、該仮想物体の画像を生成し、該生成した画像を、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に重畳させる。
【０１２１】
ステップＳ１００５では、ＣＰＵ２０１は、上記のステップＳ９１０と同様の処理を行う。すなわち、ＣＰＵ２０１は、第１のアバター及び第２のアバターのうち、仮想部分空間内に位置していることを表すアバター（移動可能用のアバターであり、ここでは第１のアバターとする）の画像を生成し、該生成した画像を、ステップＳ５０５において外部メモリ２１１に保存した現実空間の撮像画像上に重畳させる。
【０１２２】
ここで、第１の実施形態及び第２の実施形態に関して、複数拠点で仮想空間を共有するイメージについて説明する。
【０１２３】
図１２では、拠点１にはユーザ１２５１，１２５２，１２５３が位置しており、仮想物体１２９０が配置されている。一方、拠点２には、ユーザ１２５４，１２５５が位置しており、仮想物体１２９０が配置されている。ここで、拠点１と拠点２とで仮想空間を共有するために、１２０３に示す如く、拠点１には存在しないユーザ１２５５の代わりにアバター１２８０を配置し、拠点１には存在しないユーザ１２５４の代わりにアバター１２８１を配置することで、別拠点のユーザがあたかも同じ空間に存在するように見せることができる。
【０１２４】
次に、図１２において拠点２の空間が拠点１の空間よりも狭いケースについて説明する。図１３では、拠点１にはユーザ１３５１，１３５２，１３５３が位置しており、仮想物体１３９０が配置されている。一方、拠点２には、ユーザ１３５４，１３５５が位置しており、仮想物体１３９０が配置されている。広さの違う拠点間で仮想空間を共有した場合に、１３０３ではより広い拠点である拠点１の側から仮想空間のイメージを、１３０４ではより狭い拠点である拠点２からみた仮想空間のイメージを表す。１３０４で示す如く、より狭い拠点２では自拠点では移動する事ができる実線で囲まれた範囲の外に移動する事ができないが、別拠点のユーザ１３５３や仮想物体１３９１は移動できない位置にいる事が分かる。
【０１２５】
次に、図１４を参照して、複数拠点で実空間の広さが異なる場合により狭い拠点のユーザの視界から見る課題について説明する。図１４の１４０１は図１３のユーザ１３５５のＨＭＤ１０１から見える視界を示す。拠点２では移動できない範囲にいるユーザ１３５３のアバター１４１０（ユーザ１３５１，１３５２のアバターはそれぞれアバター１４１１，１４１２）や仮想物体１３９１を確認できるが、他のアバターや仮想物体と区別して表示しないと、誤ってその位置に移動しようとして、例えば自拠点の部屋の壁にぶつかるなど危険な場合がある。この課題を解決するための制御のイメージが後述する図１６である。
【０１２６】
図１５の１５０１は図１３の拠点１のユーザ１３５３のＨＭＤ１０１から見える視界を示す。ユーザ１３５３の位置は拠点２では移動できない位置にいることになり、その旨をアイコン（「！」が付された三角形のアイコン）を用いて通知する例である。この例ではエラーアイコンを表示しているが、音と鳴らすなど別の方法で通知することも可能である。
【０１２７】
図１６の１６０１は拠点２のユーザ１３５５のＨＭＤ１０１から見える視界を示す。拠点２では移動できない範囲にいるユーザ１３５３のアバター１４１０や仮想物体１３９１を他のアバターや仮想物体と区別をつけて表示をすると、ユーザ１３５５は移動できない位置にアバターや仮想物体があることに気づくので、誤ってその位置に移動する事がない。
【０１２８】
図１７の１７０１は図１３の拠点２のユーザ１３５５のＨＭＤ１０１から見える視界を示す。自拠点で移動可能な境界に実線を、図１９で説明する最小拠点の境界に破線を現実画像に重畳する。拠点２では移動できない範囲にいるユーザ１３５３のアバター１４１０や仮想物体１３９１は実線の外側にあるので、ユーザ１３５５はユーザ１３５３のアバター１４１０や仮想物体１３９１の位置には移動できない事に気が付く。そのため、誤ってその位置に移動する事がない。
【０１２９】
図１８の１８０１は図１３の拠点１のユーザ１３５３のＨＭＤ１０１から見える視界を示す。図１３のユーザ１３５３の位置は拠点２では移動できない位置にいる事になり、その事を通知する例である。図１７と同様に自拠点で移動可能な境界に実線を、図１９で説明する最小拠点の境界を示す破線を現実画像に重畳することで、ユーザ１３５３は自身のいる位置は他の拠点では移動できない位置付近にいる事に気づく、また仮想物体１３９１の位置も他の拠点では移動できない位置にある事に気づく。
【０１３０】
図１９は３つの拠点で仮想空間を共有する場合について示している。１９０１は拠点１を示す。１９０２は拠点２を示す。１９０３は拠点３を示す。１９０４は拠点１、２、３を重ね合わせたイメージを示す。全ての拠点が重なる部分を最小拠点と定義する。最小拠点は全ての拠点のユーザが移動可能な範囲である事を示す。なお、図１９では拠点を２次元としているが、図１１の拠点情報１１３０で示している通り、拠点の範囲は３次元で表現してもよい。
【０１３１】
以上説明したように、本実施形態によれば、仮想物体の共有時にそれぞれの現実空間のユーザの位置に応じて、ユーザの移動における異常発生状態（他の現実空間のユーザが移動できないこと）を通知することができる。
【０１３２】
他拠点（他のユーザの体験場所）と自身の拠点（体験場所）の大きさが異なる場合に、体験時の危険が及ぶため、他拠点のユーザの位置や自身の位置に応じて、移動による異常を通知することで、危険を回避することが可能となる。
【０１３３】
また、体験時に拠点と位置によりユーザに異常を通知することで、他の体験場所のユーザとの円滑なコミュニケーションを維持することが可能となる。（他の体験場所のユーザが移動できないにも関わらず、「こっちに来て、仮想ＣＧを見て」といった不要な指示が減る）
例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１３４】
例えば、図２に示すＰＣ１００の構成を全て備えるＨＭＤ１０１が、自機の機能をＣＰＵ２０１で実行して、上述した実施形態においてＰＣ１００の実行するものとして説明した処理の全てを、実行するようにしてもよい。
【０１３５】
［第３の実施形態］
第１，２の実施形態では、ＨＭＤ１０１はビデオシースルー方式のＨＭＤであるとしたが、光学シースルー方式のＨＭＤを用いても良い。この場合、現実空間の撮像画像の撮像及びＰＣ１００への入力は行われず、ＰＣ１００側では仮想空間画像を生成すると、この生成した仮想空間画像をＨＭＤに対して出力することになる。
【０１３６】
また、第１〜３の実施形態の一部若しくは全部を適宜組み合わせて新たな構成を構成しても良いし、第１〜３の実施形態の一部若しくは全部を選択的に使用する新たな構成を構成しても良い。
【０１３７】
［その他の実施形態］
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１３８】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【０１３９】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ、シリコンディスク、ソリッドステートドライブ等を用いることができる。
【０１４０】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１４１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１４２】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１４３】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【図１】
2018106298.tif 000003
【図２】
2018106298.tif 000004
【図３】
2018106298.tif 000005
【図４】
2018106298.tif 000006
【図５】
2018106298.tif 000007
【図６】
2018106298.tif 000008
【図７】
2018106298.tif 000009
【図８】
2018106298.tif 000010
【図９】
2018106298.tif 000011
【図１０】
2018106298.tif 000012
【図１１】
2018106298.tif 000013
【図１２】
2018106298.tif 000014
【図１３】
2018106298.tif 000015
【図１４】
2018106298.tif 000016
【図１５】
2018106298.tif 000017
【図１６】
2018106298.tif 000018
【図１７】
2018106298.tif 000019
【図１８】
2018106298.tif 000020
【図１９】
2018106298.tif 000021