(57)【特許請求の範囲】
【請求項１】
３次元モデルが配置された仮想空間をユーザに提示するための情報処理システムであって、
現実空間における第１のユーザの位置及び向きを取得する取得手段と、
前記取得手段で取得された第１のユーザの位置及び向きに基づいて、前記第１のユーザの位置に対する前記３次元モデルの向きを特定するモデル向き特定手段と、
第１のユーザが閲覧中の３次元モデルと、第２のユーザが閲覧中の３次元モデルとを特定するオブジェクト特定手段と、
前記オブジェクト特定手段で特定された、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致するかを判定する判定手段と、
前記判定手段により、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致すると判定されたことを条件に、前記第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示する提示手段と
を備えることを特徴とする情報処理システム。
【請求項２】
前記第２のユーザの視線方向を特定する視線方向特定手段
を備え、
前記提示手段は、前記モデル向き特定手段で特定された向きと、前記視線方向特定手段で特定された視線方向とに基づいて、前記第２のユーザに、前記３次元モデルを提示することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示する指示を受け付ける受付手段と、
前記第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示するよう制御する制御手段と
を備え、
前記提示手段は、前記受付手段により、前記第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示する指示を受け付けた場合であり、さらに、前記制御手段により、前記第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示するよう、既に制御されている場合は、前記第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示しないことを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
３次元モデルが配置された仮想空間をユーザに提示するための情報処理システムであって、
現実空間における第１のユーザの位置及び向きを取得する取得ステップと、
前記取得ステップで取得された第１のユーザの位置及び向きに基づいて、前記第１のユーザの位置に対する前記３次元モデルの向きを特定するモデル向き特定ステップと、
第１のユーザが閲覧中の３次元モデルと、第２のユーザが閲覧中の３次元モデルとを特定するオブジェクト特定ステップと、
前記オブジェクト特定ステップで特定された、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致するかを判定する判定ステップと、
前記判定ステップにより、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致すると判定されたことを条件に、前記第２のユーザに、前記モデル向き特定ステップで特定された向きで前記３次元モデルが配置された仮想空間を提示する提示ステップと
を含むことを特徴とする情報処理システムの制御方法。
【請求項５】
コンピュータを、請求項１乃至３のいずれか１項に記載の情報処理システムの各手段として機能させるためのプログラム。
【請求項６】
３次元モデルが配置された仮想空間をユーザに提示するための情報処理装置であり、現実空間における第１のユーザの位置及び向きを取得する取得手段を備える他の情報処理装置と通信可能な情報処理装置であって、
前記取得手段で取得された第１のユーザの位置及び向きに基づいて、前記第１のユーザの位置に対する前記３次元モデルの向きを特定するモデル向き特定手段と、
第１のユーザが閲覧中の３次元モデルと、第２のユーザが閲覧中の３次元モデルとを特定するオブジェクト特定手段と、
前記オブジェクト特定手段で特定された、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致するかを判定する判定手段と、
前記判定手段により、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致すると判定されたことを条件に、前記第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示する提示手段と
を備えることを特徴とする情報処理装置。
【請求項７】
３次元モデルが配置された仮想空間をユーザに提示するための情報処理装置であり、現実空間における第１のユーザの位置及び向きを取得する取得手段を備える他の情報処理装置と通信可能な情報処理装置の制御方法であって、
前記取得手段で取得された第１のユーザの位置及び向きに基づいて、前記第１のユーザの位置に対する前記３次元モデルの向きを特定するモデル向き特定ステップと、
第１のユーザが閲覧中の３次元モデルと、第２のユーザが閲覧中の３次元モデルとを特定するオブジェクト特定ステップと、
前記オブジェクト特定ステップで特定された、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致するかを判定する判定ステップと、
前記判定ステップにより、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致すると判定されたことを条件に、前記第２のユーザに、前記モデル向き特定ステップで特定された向きで前記３次元モデルが配置された仮想空間を提示する提示ステップと
を含むことを特徴とする情報処理装置の制御方法。
【請求項８】
３次元モデルが配置された仮想空間をユーザに提示するための情報処理装置であり、現実空間における第１のユーザの位置及び向きを取得する取得手段を備える他の情報処理装置と通信可能な情報処理装置を制御するためのプログラムであって、
前記情報処理装置を、
前記取得手段で取得された第１のユーザの位置及び向きに基づいて、前記第１のユーザの位置に対する前記３次元モデルの向きを特定するモデル向き特定手段と、
第１のユーザが閲覧中の３次元モデルと、第２のユーザが閲覧中の３次元モデルとを特定するオブジェクト特定手段と、
前記オブジェクト特定手段で特定された、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致するかを判定する判定手段と、
前記判定手段により、前記第１のユーザが閲覧中の３次元モデルと、前記第２のユーザが閲覧中の３次元モデルとが一致すると判定されたことを条件に、前記第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示する提示手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複合現実感（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）技術に関し、特に仮想空間に配置された３次元モデルを他のユーザが閲覧している向きで提示することの可能な情報処理システム、その制御方法、及びプログラム、並びに情報処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、離れた場所にいるユーザ同士がネットワークを通じて会議を行う仕組みが存在する。この仕組みでは、各ユーザのパーソナルコンピュータ等の情報処理装置をネットワークで接続し、テキストデータ、画像データ、音声データ、動画データ等を送受信することでお互いの意思疎通が行えるようになっている。
【０００３】
ところが、このようなインターネット会議の仕組みでは、ある程度の意思疎通は行うことができるものの、対面で会議をする場合よりも効率が低下してしまう問題がある。特に、相手先に画像データを送信したものの、画像データのどの箇所について話をしているのかが不明なことがある。
【０００４】
そこで下記の特許文献１では、所定の視点から見た場合の３次元モデルを相手先に送信して共有し、視点変更があった場合にはそれに応じて視点を変更した後の３次元モデルを作成して送信する仕組みが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２８５２６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ヘッドマウントディスプレイ（以下、ＨＭＤという。）やスマートフォンで撮影した現実の世界（以下、現実空間という。）の画像に、コンピュータで生成された仮想の世界（以下、仮想空間という。）の画像を重畳させて、ＨＭＤやスマートフォンの画面に表示する技術が存在する。この技術は例えば、複合現実感（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ、以下、ＭＲという。）技術や拡張現実感（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）技術などである。
【０００７】
このＭＲ技術を用いて、複数の拠点にいるユーザが共通の仮想空間を閲覧する仕組みが考えられている。これは、共通の仮想空間を拠点ごとに用意しておき、ＭＲ技術を用いて当該仮想空間を同時に閲覧させることで、あたかも仮想空間をリアルタイムに共有しているかのように見せる仕組みである。
【０００８】
この仕組みにおいても、特許文献１と同様に別拠点にいるユーザがどこを閲覧しているのかを知りたいことがある。しかしながら、別拠点にいるユーザとはテキストデータや音声データ等を送受信することによってしか、意思疎通を行うことができない。そのため、３次元モデルで表現された製品のデザイン検証や設計検証をする際には、効率的にレビューを行うことができない問題があった。
【０００９】
本発明は、ユーザが３次元モデルを他者の閲覧する３次元モデルと同じ向きで閲覧することの可能な仕組みを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために本発明の情報処理システムは、３次元モデルが配置された仮想空間をユーザに提示するための情報処理システムであって、現実空間における第１のユーザの位置及び向きを取得する取得手段と、前記取得手段で取得された第１のユーザの位置及び向きに基づいて、前記第１のユーザの位置に対する前記３次元モデルの向きを特定するモデル向き特定手段と、第２のユーザに、前記モデル向き特定手段で特定された向きで前記３次元モデルが配置された仮想空間を提示する提示手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ユーザが３次元モデルを他者の閲覧する３次元モデルと同じ向きで閲覧することの可能な効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態における遠隔ＭＲシステムのシステム構成の一例を示す図である。
【図２】各拠点に構成されるＭＲシステムのシステム構成の一例を示す図である。
【図３】情報処理装置１０１とＨＭＤ１０２のハードウェア構成の一例を示す図である。
【図４】情報処理装置１０１の機能構成の一例を示す図である。
【図５】本実施形態の一連の処理の流れの一例を示すフローチャートである。
【図６】各種テーブルのテーブル構成の一例を示す図である。
【図７】情報処理装置１０１が生成する仮想空間と、現実空間でＨＭＤ１０２を装着するユーザとの位置関係を示す概念図である。
【図８】図７の位置関係の時に、ＨＭＤ１０２に表示される複合現実画像の一例を示す図である。
【図９】オブジェクト配置処理の流れの一例を示すフローチャートである。
【図１０】オブジェクト７２０に対するユーザＢ７１１の視線方向を示す図である。
【図１１】ユーザＢ７１１の視線方向で閲覧できるよう、ユーザＡ７０１の視線方向にオブジェクト７２０を配置する場合を示す図である。
【図１２】ユーザＢ７１１の視線方向で閲覧できるよう、ユーザＡ７０１の視線方向にオブジェクト７２０を配置した場合にユーザＡ７０１に提示される複合現実画像の一例を示す図である。
【図１３】オブジェクト復帰処理の流れの一例を示すフローチャートである。
【図１４】第２の実施形態における、オブジェクト配置処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本発明の第１の実施形態の一例について説明する。
【００１４】
図１は、本発明の第１の実施形態における遠隔ＭＲシステム（情報処理システム）のシステム構成の一例を示す図である。図１に示す遠隔ＭＲシステムは、ＭＲ技術を用いて、複数の拠点のユーザに同一の仮想空間を閲覧させるシステムである。遠隔ＭＲシステムは、情報処理装置１０１にＨＭＤ１０２が相互にデータ通信可能に接続される複数のＭＲシステムを含み、各ＭＲシステムの情報処理装置１０１はネットワーク１０３を介して通信可能に接続されている。情報処理装置１０１とＨＭＤ１０２との接続は、有線接続であってもよいし、無線接続であってもよい。また、遠隔ＭＲシステムに含まれるＭＲシステムはいくつでもよい。本実施形態では、情報処理装置１０１−１とＨＭＤ１０２−１とが接続されるＭＲシステムと、情報処理装置１０１−２とＨＭＤ１０２−２とが接続されるＭＲシステムと、その他複数のＭＲシステムとを含む遠隔ＭＲシステムとして説明を行う。尚、図１のシステム上に接続される各種端末の構成は一例であり、用途や目的に応じて様々な構成例がある。
【００１５】
情報処理装置１０１は、汎用的なコンピュータである。情報処理装置１０１は、ＨＭＤ１０２で撮影（撮像）された現実空間の画像（以下、現実空間画像という。）と、情報処理装置１０１で生成された仮想空間の画像（以下、仮想空間画像という。）とを重畳した画像（以下、複合現実画像という。）を生成し、ＨＭＤ１０２に送信する。尚、ＭＲ技術に関しては従来技術を用いるため、詳細な説明は省略する。また、情報処理装置１０１は、パーソナルコンピュータであってもよいし、サーバのような大型のコンピュータであってもよい。更には、携帯電話やタブレット端末といった携帯端末であってもよい。コンピュータの種類は特に問わない。また、拠点ごとに情報処理装置１０１を設置せず、１台の情報処理装置１０１で処理するようにしてもよい。すなわち、１台の情報処理装置１０１が本実施形態における各ＭＲシステムを構築してもよい。
【００１６】
ＨＭＤ１０２は、ヘッドマウントディスプレイである。ＨＭＤ１０２は、ユーザの頭部に装着する装置であり、右目用と左目用のビデオカメラと、右目用と左目用のディスプレイを備えている。ＨＭＤ１０２は、ＨＭＤ１０２のビデオカメラで撮影された現実空間画像を情報処理装置１０１に送信する。そして、情報処理装置１０１から送信されてきた複合現実画像を受信し、ディスプレイに表示する。ＨＭＤ１０２では、右目用と左目用のディスプレイを設けているので、視差によって立体感を得ることができる。尚、ＨＭＤ１０２で撮影する現実空間画像とＨＭＤ１０２で表示する複合現実画像は、動画（映像）が望ましいが、所定の間隔で撮影された画像であってもよい。
【００１７】
図２は、各拠点のＭＲシステムのシステム構成の一例を示す図である。前述した通り、情報処理装置１０１はＨＭＤ１０２と通信可能に接続されている。更に、情報処理装置１０１には赤外線カメラ２０２が接続されている。赤外線カメラ２０２は、赤外線を用いた光学式のセンサである。赤外線カメラ２０２は、現実空間に赤外線を照射し、現実空間の物体で反射した赤外線を撮影することにより、赤外線カメラ２０２が定義する座標系における、現実空間の物体の位置及び姿勢を特定する。この赤外線カメラ２０２を用いて、現実空間におけるＨＭＤ１０２（すなわちユーザ）の位置及び姿勢（向きや傾き、視線の方向等。以下、同じ。）を特定する。ＨＭＤ１０２には、オプティカルマーカ２０１という赤外線を反射する物体を備えており、赤外線カメラ２０２はこのオプティカルマーカ２０１で反射した赤外線を撮影することで、ＨＭＤ１０２の位置及び姿勢を特定できるようになっている。ユーザがどのような位置や姿勢であっても、当該ユーザが装着するＨＭＤ１０２のオプティカルマーカ２０１を撮影または検知できるように、ＭＲシステムでは赤外線カメラ２０２を複数台設置することが望ましい。また、位置及び姿勢を特定可能なＨＭＤ１０２は、赤外線カメラ２０２の撮影範囲に存在するＨＭＤ１０２である。
【００１８】
尚、本実施形態においては、現実空間におけるＨＭＤ１０２の位置及び姿勢を特定するために、赤外線カメラ２０２を用いるが、ＨＭＤ１０２の現実空間における位置及び姿勢を特定できるのであれば、これに限らない。例えば、磁気センサを用いてもよいし、ＨＭＤ１０２が撮影した画像を解析して位置及び姿勢を特定してもよい。
【００１９】
図３は、情報処理装置１０１とＨＭＤ１０２の各ハードウェア構成の一例を示す図である。
【００２０】
まず、情報処理装置１０１は、ＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３、システムバス３０４、入力コントローラ３０５、ビデオコントローラ３０６、メモリコントローラ３０７、通信Ｉ／Ｆコントローラ３０８、汎用バス３０９、入力デバイス３１０、外部メモリ３１１、ディスプレイ３１２等を備える。
【００２１】
ＣＰＵ３０１は、システムバス３０４に接続される各デバイスやコントローラを統括的に制御する。
【００２２】
また、ＲＯＭ３０２あるいは外部メモリ３１１には、ＣＰＵ３０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  ／  ＯｕｔｐｕｔＳｙｓｔｅｍ）やオペレーティングシステムや、各種装置の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。ＲＡＭ３０３は、ＣＰＵ３０１の主メモリ、ワークエリア等として機能する。
【００２３】
ＣＰＵ３０１は、処理の実行に際して必要なプログラム等をＲＡＭ３０３にロードして、プログラムを実行することで各種動作を実現するものである。
【００２４】
また、入力コントローラ（入力Ｃ）３０５は、キーボードやマウス等のポインティングデバイス（入力デバイス３１０）からの入力を制御する。
【００２５】
情報処理装置１０１のビデオコントローラ（ＶＣ）３０６は、ＨＭＤ１０２が備える右目・左目ディスプレイ３２２やディスプレイ３１２等の表示器への表示を制御する。右目・左目ディスプレイ３２２に対しては、例えば外部出力端子（例えば、Ｄｉｇｉｔａｌ  Ｖｉｓｕａｌ  Ｉｎｔｅｒｆａｃｅ）を用いて出力される。また、右目・左目ディスプレイ３２２は、右目用のディスプレイと左目用のディスプレイとから構成されている。また、ディスプレイ３１２は、液晶ディスプレイ等であり、右目・左目ディスプレイ３２２と同様の表示、または仮想空間を操作するためのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）が表示される。
【００２６】
メモリコントローラ（ＭＣ）３０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ３１１へのアクセスを制御する。
【００２７】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）３０８は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信等が可能である。特に、情報処理装置１０１の通信Ｉ／Ｆコントローラ３０８は、赤外線カメラ２０２との通信も制御する。
【００２８】
情報処理装置１０１の汎用バス３０９は、情報処理装置１０１に接続されるＨＭＤ１０２の右目・左目ビデオカメラ３２１で撮影した画像を取り込むために使用される。右目・左目ビデオカメラ３２１からは、外部入力端子（例えば、ＩＥＥＥ１３９４端子）を用いて入力される。また、右目・左目ビデオカメラ３２１は、右目用のビデオカメラと左目用のビデオカメラとから構成されている。
【００２９】
尚、ＣＰＵ３０１は、例えばＲＡＭ３０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ディスプレイ上での表示を可能としている。また、ＣＰＵ３０１は、ディスプレイ上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００３０】
本発明の情報処理装置１０１が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ３１１に記録されており、必要に応じてＲＡＭ３０３にロードされることによりＣＰＵ３０１によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ３１１に格納されている。
【００３１】
図４は、情報処理装置１０１の機能構成を示す機能構成図である。尚、図４の情報処理装置１０１の機能構成は一例であり、用途や目的に応じて様々な構成例がある。
【００３２】
情報処理装置１０１は機能部として、通信制御部４０１と、位置・姿勢取得部４０２と、位置・姿勢特定部４０３と、現実空間画像取得部４０４と、仮想空間生成部４０５と、仮想空間画像取得部４０６と、複合現実画像生成部４０７とを備える。また、表示制御部４０８と、記憶部４０９と、オブジェクト制御部４１０と、視線方向特定部４１１と、距離測定部４１２と、座標特定部４１３と、マウス制御部４１４とを備える。
【００３３】
通信制御部４０１は、情報処理装置１０１と通信可能なＨＭＤ１０２と赤外線カメラ２０２との各種情報の送受信を行う機能部である。通信制御部４０１は、前述したビデオコントローラ３０６、通信Ｉ／Ｆコントローラ３０８、汎用バス３０９等を通じてこれらの装置と情報の送受信を行う。
【００３４】
位置・姿勢取得部４０２は、オプティカルマーカ２０１を備える装置の現実空間における位置及び姿勢（向き）を示す情報を赤外線カメラ２０２から取得する機能部である（取得手段）。本実施形態では、ＨＭＤ１０２がオプティカルマーカ２０１を備えているため、位置・姿勢取得部４０２は赤外線カメラ２０２が解析した、現実空間におけるＨＭＤ１０２の位置及び姿勢（ＨＭＤ１０２を装着しているユーザの位置及び姿勢。以下同じ。）を示す情報を取得する。また、位置・姿勢取得部４０２は、現実空間画像取得部４０４で右目・左目ビデオカメラ３２１から取得した右目用の現実空間画像と左目用の現実空間画像とを用いて、三角測量等の方法により、現実空間の物体の位置及び姿勢を特定することもできる。
【００３５】
位置・姿勢特定部４０３は、位置・姿勢取得部４０２で取得した、現実空間におけるＨＭＤ１０２の位置及び姿勢（向き）に対応する仮想空間上の位置及び姿勢（向き）を特定する機能部である（第１の特定手段）。現実空間の座標系（赤外線カメラ２０２の座標系）と仮想空間の座標系とはあらかじめキャリブレーションがなされており、現実空間と仮想空間とが対応付けられている。つまり、この対応付けに基づいて現実空間におけるＨＭＤ１０２の位置及び姿勢に対応する仮想空間上の位置及び姿勢を特定する。
【００３６】
現実空間画像取得部４０４は、ＨＭＤ１０２の右目・左目ビデオカメラ３２１で撮影された現実空間画像を取得する機能部である。
【００３７】
仮想空間生成部４０５は、情報処理装置１０１の外部メモリ３１１に記憶されている情報に基づいて仮想空間を生成する機能部である。仮想空間は情報処理装置１０１の内部に生成される仮想的な空間であるので、その空間の形や大きさに関する情報が外部メモリ３１１に記憶されており、これに基づいて仮想空間を生成する。仮想空間には３次元モデルからなるオブジェクトを配置可能である。オブジェクトはオブジェクト制御部４１０によって配置される。
【００３８】
仮想空間画像取得部４０６は、仮想空間生成部４０５で生成した仮想空間の画像を取得する機能部である。仮想空間画像取得部４０６が仮想空間の画像を取得する場合には、位置・姿勢特定部４０３で特定した仮想空間におけるＨＭＤ１０２の位置及び姿勢に基づいて仮想空間上の視点を決定し、当該視点から見た場合の仮想空間画像を生成し、これを取得する。この視点に仮想的なカメラを設置し、仮想空間を撮像するようにすればよい。
【００３９】
複合現実画像生成部４０７は、現実空間画像取得部４０４で取得した現実空間画像に仮想空間画像取得部４０６で取得した仮想空間画像を重畳することにより、複合現実画像を生成する機能部である。
【００４０】
表示制御部４０８は、情報処理装置１０１に接続されたＨＭＤ１０２の右目・左目ディスプレイ３２２や情報処理装置１０１に接続されたディスプレイ３１２における各種情報の表示制御を行う機能部である。特に、複合現実画像生成部４０７で生成された複合現実画像をＨＭＤ１０２の右目・左目ディスプレイ３２２に表示させる機能を有する。
【００４１】
記憶部４０９は、後述する各種テーブルの情報や仮想空間を生成するための情報、オブジェクト等の情報を記憶するための機能部である。必要に応じて、情報の追加・更新・削除を行う。本実施形態においては、共通の仮想空間やオブジェクトが各情報処理装置１０１の記憶部４０９で記憶されているものとして説明を行う。
【００４２】
オブジェクト制御部４１０は、３次元モデルからなるオブジェクトを仮想空間に配置するための機能部である。仮想空間が生成された場合には、あらかじめ定義された位置及び姿勢でオブジェクトを配置する。必要に応じて、配置されたオブジェクトを異なる位置及び姿勢で再配置する。
【００４３】
視線方向特定部４１１は、位置・姿勢特定部４０３で特定した仮想空間における位置及び姿勢に基づいて、仮想空間におけるユーザの視線方向を特定するための機能部である（視線方向特定手段）。また、仮想空間に配置されたオブジェクトに対するユーザの視線方向も特定する。
【００４４】
距離測定部４１２は、仮想空間において、ユーザが閲覧中のオブジェクトと当該ユーザの視点との距離を測定するための機能部である。特に、ユーザの視点からユーザの視線方向を示すベクトルが接触するオブジェクトの面までの距離を測定する。
【００４５】
座標特定部４１３は、仮想空間やオブジェクトの座標系において、任意の位置の座標を特定するための機能部である。特に、ユーザの視線方向を示すベクトルが接触するオブジェクトの面の座標や、距離測定部４１２で測定した距離だけユーザの視点から離れた位置の座標等を特定する。
【００４６】
マウス制御部４１４は、入力デバイス３１０であるマウスからの入力を受け付けるための機能部である。マウス制御部４１４は、マウスのどのボタンが押下されたのかを検知することができる。
【００４７】
次に、本発明の実施形態における情報処理装置１０１によって行われる一連の処理について、図５に示すフローチャートを用いて説明する。尚、以下説明する図５のフローチャートは、説明の都合上、情報処理装置１０１−１と情報処理装置１０１−２とに処理の主体をわけて表現しているが、どの情報処理装置１０１もステップＳ５０１乃至ステップＳ５１７の処理を実行可能である。すなわち、ステップＳ５０１乃至ステップＳ５１１、ステップＳ５１５乃至ステップＳ５１７の各処理は、情報処理装置１０１−２も実行可能である。また、ステップＳ５１２乃至ステップＳ５１４の処理は、情報処理装置１０１−１も実行可能である。また、これ以外の情報処理装置１０１が存在する場合にも同じくステップＳ５０１乃至ステップＳ５１７を実行可能である。更に、ステップＳ５１１からステップＳ５１２に対する破線の矢印と、ステップＳ５１４からステップＳ５１５に対する破線の矢印とはデータの流れを示す矢印である。
【００４８】
まずステップＳ５０１では、情報処理装置１０１−１のＣＰＵ３０１は、仮想空間生成部４０５の機能により、外部メモリ３１１から仮想空間の形や大きさに関する情報を取得し、仮想空間を生成する。また、オブジェクト制御部４１０の機能により、外部メモリ３１１から３次元モデルからなるオブジェクトを取得し、所定の位置及び姿勢で仮想空間に配置する。オブジェクトの配置について具体的に説明する。まず、情報処理装置１０１−１は、外部メモリ３１１に記憶された図６のオブジェクト管理テーブル６００を参照する。そして、オブジェクト保存場所６０３が示すファイルパスからオブジェクトに関する情報（３次元モデルのデータ等）を取得し、これをオブジェクト位置姿勢情報６０２が示す位置及び姿勢で仮想空間に配置する。
【００４９】
図６のオブジェクト管理テーブル６００は、情報処理装置１０１−１の外部メモリ３１１等に記憶されるデータテーブルである。オブジェクト管理テーブル６００は、オブジェクトＩＤ６０１と、オブジェクト位置姿勢情報６０２と、オブジェクト保存場所６０３とを備える。オブジェクトＩＤ６０１は、オブジェクトごとに一意に割り振られる識別情報を示す。オブジェクト位置姿勢情報６０２は、仮想空間にオブジェクトを配置する際の位置及び姿勢である仮想空間上の座標とベクトルとを示す。オブジェクト保存場所６０３は、オブジェクトの保存場所であるファイルパスを示す。尚、オブジェクト管理テーブル６００の構成はこれに限らない。
【００５０】
ステップＳ５０２では、情報処理装置１０１−１のＣＰＵ３０１は、現実空間画像取得部４０４の機能により、ＨＭＤ１０２−１の右目・左目ビデオカメラ３２１から現実空間画像を取得し、これをＲＡＭ３０３に記憶する。
【００５１】
ステップＳ５０３では、情報処理装置１０１−１のＣＰＵ３０１は、位置・姿勢取得部４０２の機能により、情報処理装置１０１−１と通信可能なＨＭＤ１０２−１の現実空間における位置及び姿勢を示す情報を取得し、これをＲＡＭ３０３に記憶する（取得手段）。前述した通り、ＨＭＤ１０２が備えるオプティカルマーカ２０１を赤外線カメラ２０２が検知することで特定した位置及び姿勢を示す情報を、赤外線カメラ２０２から取得する。
【００５２】
ステップＳ５０４では、情報処理装置１０１−１のＣＰＵ３０１は、マウス制御部４１４の機能により、入力デバイス３１０であるマウスからのボタン操作を検知したか否かを判定する。本実施形態においてマウスは、他拠点で共通の仮想空間を用いてＭＲ体験をしているユーザの視点でオブジェクトを閲覧するための指示を受け付ける入力デバイス３１０である。本実施形態においてはマウスを用いるものとするが、キーボードやゲームコントローラ等、ボタンを備えるその他の入力デバイス３１０であってもよい。マウスからのボタン操作を検知したと判定した場合には、ステップＳ５０９に処理を進める。マウスからのボタン操作を検知したと判定しなかった場合には、ステップＳ５０５に処理を進める。
【００５３】
先にマウスからのボタン操作を検知しなかった場合の処理について説明を行う。ステップＳ５０５では、情報処理装置１０１−１のＣＰＵ３０１は、仮想空間画像取得部４０６の機能により、仮想空間を撮像することにより仮想空間画像を取得し、これをＲＡＭ３０３等に記憶する（仮想空間画像生成手段）。より具体的には、まずステップＳ５０３で取得したＨＭＤ１０２−１の現実空間における位置及び姿勢を示す情報をＲＡＭ３０３等から読み出し、当該情報を用いて現実空間上の位置及び姿勢に対応する仮想空間上の位置及び姿勢を特定する。そして、特定した仮想空間上の位置及び姿勢で仮想空間上に仮想のカメラ（視点）を設置し、当該カメラにより仮想空間を撮像する。これにより仮想空間画像を生成し、これをＲＡＭ３０３等に記憶する。尚、ＨＭＤ１０２の右目・左目ディスプレイ３２２のそれぞれに表示するために右目用の仮想空間画像と左目用の仮想空間画像の２枚を取得する。
【００５４】
また、情報処理装置１０１−１は、ステップＳ５０５で特定した仮想空間上のＨＭＤ１０２−１の位置及び姿勢は、図６のＨＭＤ管理テーブル６１０のＨＭＤ位置姿勢情報６１２に格納する。より具体的には、自ＨＭＤフラグ６１４が「１」となっているレコードのＨＭＤ位置姿勢情報６１２にステップＳ５０５で特定した仮想空間上のＨＭＤ１０２−１の位置及び姿勢である仮想空間上の座標とベクトルとを示す情報を格納する。
【００５５】
図６のＨＭＤ管理テーブル６１０は、情報処理装置１０１−１の外部メモリ３１１等に記憶されるデータテーブルである。ＨＭＤ管理テーブル６１０は、ＨＭＤＩＤ６１１と、ＨＭＤ位置姿勢情報６１２と、通信先情報処理装置６１３と、自ＨＭＤフラグ６１４とを備える。ＨＭＤＩＤ６１１は、情報処理装置１０１−１に接続されているＨＭＤ１０２−１と、他の情報処理装置１０１（例えば、情報処理装置１０１−２）に接続されているＨＭＤ１０２（例えば、ＨＭＤ１０２−２）とを一意に識別するための識別情報である。あらかじめ共通の仮想空間を閲覧するために使用するＨＭＤ１０２の識別情報を格納しておく。ＨＭＤ位置姿勢情報６１２は、仮想空間における各ＨＭＤ１０２の位置及び姿勢を示す。この位置及び姿勢は、オブジェクト位置姿勢情報６０２と同様に、仮想空間上の座標とベクトルとを示す情報である。通信先情報処理装置６１３は、各ＨＭＤ１０２と通信可能に接続されている情報処理装置１０１の通信先の情報を示す。通信先の情報は、ＩＰドレスやＭＡＣアドレス等の情報である。自ＨＭＤフラグ６１４は、ＨＭＤ管理テーブル６１０を記憶する情報処理装置１０１−１がどのＨＭＤ１０２と接続されているのかを示すフラグである。自ＨＭＤフラグ６１４に「１」が格納されていれば、そのレコードのＨＭＤ１０２が情報処理装置１０１−１と接続されていることがわかる。自ＨＭＤフラグ６１４に「０」が格納されていれば、他の情報処理装置１０１（例えば、情報処理装置１０１−２）と接続されているＨＭＤ１０２であることがわかる。尚、ＨＭＤ管理テーブル６１０の構成はこれに限らない。
【００５６】
ステップＳ５０６では、情報処理装置１０１−１のＣＰＵ３０１は、複合現実画像生成部４０７の機能により、ステップＳ５０２で取得した現実空間画像とステップＳ５０５で取得した仮想空間画像とをＲＡＭ３０３等から読み出す。そして、当該現実空間画像に当該仮想空間画像を重畳し、複合現実画像を生成する。生成した複合現実画像はＲＡＭ３０３等に記憶する。尚、前述した通り、現実空間画像と仮想空間画像とは右目用と左目用の２枚ずつがＲＡＭ３０３等に記憶されているので、右目用の現実空間画像に右目用の仮想空間画像を重畳し、左目用の現実空間画像に左目用の仮想空間画像を重畳する。
【００５７】
ステップＳ５０７では、情報処理装置１０１−１のＣＰＵ３０１は、表示制御部４０８の機能により、ステップＳ５０６で生成した複合現実画像をＲＡＭ３０３等から読み出し、ビデオコントローラ３０６を通じてＨＭＤ１０２−１の右目・左目ディスプレイ３２２に表示する（画像提示手段）。ＲＡＭ３０３等に記憶された複合現実画像は、右目用と左目用の２枚が存在する。そのため、右目用の複合現実画像を右目・左目ディスプレイ３２２の右目のディスプレイに表示するよう制御し、左目用の複合現実画像を右目・左目ディスプレイ３２２の左目のディスプレイに表示するよう制御する。
【００５８】
ステップＳ５０８では、情報処理装置１０１−１のＣＰＵ３０１は、ＨＭＤ１０２−１を装着しているユーザに複合現実感を提示する処理の終了指示があったか否かを判定する。例えば、前述したステップＳ５０１乃至ステップＳ５１７の処理を実行する情報処理装置１０１−１のアプリケーションの停止指示や終了指示があったか否かを判定する。終了指示があったと判定した場合には、本一連の処理を終了する。終了指示があったと判定しなかった場合、すなわち終了指示がなかった場合にはステップＳ５０２に処理を戻し、終了指示があるまでステップＳ５０２乃至ステップＳ５１７の処理を繰り返す。
【００５９】
このようにすることで、仮想空間に配置されたオブジェクトがあたかも現実空間に配置されているかのような感覚をユーザに与えることができる。
【００６０】
図７は、情報処理装置１０１が生成する仮想空間と、現実空間でＨＭＤ１０２を装着するユーザとの位置関係を示す概念図である。図７の上部に示す７００は、情報処理装置１０１−１が示す仮想空間と、ＨＭＤ１０２−１を装着するユーザＡ７０１との位置関係を示す図であり、図７の下部に示す７１０は、情報処理装置１０１−２が示す仮想空間と、ＨＭＤ１０２−２を装着するユーザＢ７１１との位置関係を示す図である。ユーザＡ７０１とユーザＢ７１１とはそれぞれ異なる拠点にいるので、お互いの姿は見えていない。それぞれの仮想空間は共通であり、同じオブジェクト７２０が同じ位置及び姿勢で配置されている。
【００６１】
また、ユーザＡ７０１は視線方向７０２が示す方向を見ており、ユーザＢ７１１は視線方向７１２が示す方向を見ている。各ユーザの視線方向は、ステップＳ５０３で取得したＨＭＤ１０２の位置及び姿勢を示す情報から特定される、仮想空間上の位置及び姿勢に基づいて特定できる。位置及び姿勢を用いた視線方向の特定については、従来技術を用いるため説明は省略する。
【００６２】
このユーザＡ７０１とユーザＢ７１１とに提示する複合現実画像を、図８に示す。図８の上部の８００は、ユーザＡ７０１が装着するＨＭＤ１０２−１に表示される複合現実画像である。また、図８の下部の８１０は、ユーザＢ７１１が装着するＨＭＤ１０２−２に表示される複合現実画像である。それぞれ異なる角度からオブジェクト７２０を閲覧しているため、オブジェクト７２０の見え方が異なっているのがわかる。
【００６３】
このような状態で、ユーザＡ７０１がマウスをクリックした場合を例にとって、以下ステップＳ５０９乃至ステップＳ５１７を説明する。
【００６４】
ステップＳ５０９では、情報処理装置１０１−１のＣＰＵ３０１は、マウス制御部４１４の機能により、ステップＳ５０４で検知したマウスのボタン操作が、前回検知したボタン操作と同じであるか否かを判定する。より具体的には、押下されたボタンに対応するＨＭＤ１０２を図６のマウスボタン管理テーブル６２０で特定し、特定したＨＭＤ１０２を示す情報が図６の他者視点管理テーブル６３０の他者ＨＭＤ６３２に格納されていれば、前回検知したボタン操作と同じ操作がなされたと判定する。前回検知したボタン操作と同じであると判定した場合には、ステップＳ５１７に処理を進める。前回検知したボタン操作と同じあると判定しなかった場合、すなわち前回検知したボタン操作とは異なると判定した場合には、ステップＳ５１０に処理を進める。
【００６５】
図６のマウスボタン管理テーブル６２０は、情報処理装置１０１−１の外部メモリ３１１等に記憶されるデータテーブルである。マウスボタン管理テーブル６２０は、マウスボタンＩＤ６２１と、対応ＨＭＤ６２２とを備える。マウスボタンＩＤ６２１は、マウスのボタンごとに一意に割り振られた識別情報である。あらかじめ使用するマウスのボタンごとにレコードを作成しておくことが望ましい。対応ＨＭＤ６２２は、マウスのボタンに対応するＨＭＤ１０２のＨＭＤＩＤ６１１を示す。つまり、押下を検知したボタンに対応するＨＭＤ１０２を特定することができる。尚、マウスボタン管理テーブル６２０の構成はこれに限らない。
【００６６】
また図６の他者視点管理テーブル６３０は、情報処理装置１０１−１の外部メモリ３１１等に記憶されるデータテーブルである。他者視点管理テーブル６３０は、他者視点フラグ６３１と、他者ＨＭＤ６３２と、復元用位置姿勢情報６３３と、距離６３４と、被視線方向６３５とを備える。他者視点フラグ６３１は、他者の視点でオブジェクトを閲覧できるよう制御しているか否かを示すフラグである。他者視点フラグ６３１に「１」が格納されていれば、現在他者の視点でオブジェクトを閲覧できるよう制御しているということである。他者ＨＭＤ６３２は、どのＨＭＤ１０２（他者）の視点でオブジェクトを閲覧しているのかを示す。他者ＨＭＤ６３２には、ＨＭＤＩＤ６１１が格納される。復元用位置姿勢情報６３３は、他者の視点で閲覧していたオブジェクトを、元の視点から見た位置及び姿勢に戻すための位置及び姿勢を示す。この位置及び姿勢は、オブジェクト位置姿勢情報６０２と同様に、仮想空間上の座標とベクトルとを示す情報である。距離６３４は、他の情報処理装置１０１（例えば、情報処理装置１０１−２）に接続されたＨＭＤ１０２（例えば、ＨＭＤ１０２−２）の仮想空間上の視点から、閲覧中のオブジェクトまでの距離を示す。被視線方向６３５は、他者ＨＭＤ６３２が示すＨＭＤ１０２によってオブジェクトがどの方向から閲覧されているのかを示す。この視線方向は、オブジェクトの座標系におけるベクトルである。尚、他者視点管理テーブル６３０の構成はこれに限らない。
【００６７】
ステップＳ５１０では、情報処理装置１０１−１のＣＰＵ３０１は、マウス制御部４１４の機能により、操作されたボタンに対応する他のＨＭＤ１０２を特定する。ここでいう他のＨＭＤ１０２とは、ステップＳ５１０を実施する情報処理装置１０１−１とは異なる情報処理装置１０１に接続されたＨＭＤ１０２（例えば、情報処理装置１０１−２に接続されたＨＭＤ１０２−２）である。マウスボタン管理テーブル６２０に示すように、マウスが備えるボタン（マウスボタンＩＤ６２１）ごとに他のＨＭＤ１０２（対応ＨＭＤ６２２）が対応づけられている。よって、ユーザは他者の視点でオブジェクトを閲覧したい場合には、当該他者が装着しているＨＭＤ１０２に対応するボタンを押下する。すると、情報処理装置１０１−１は、押下されたボタンに対応する他のＨＭＤ１０２を、マウスボタン管理テーブル６２０を用いて特定する。
【００６８】
ステップＳ５１１では、情報処理装置１０１−１のＣＰＵ３０１は、通信制御部４０１の機能により、ステップＳ５１０で特定したＨＭＤ１０２と接続された情報処理装置１０１に対して、当該ＨＭＤ１０２の現実空間上の位置及び姿勢を示す情報の取得要求を送信する。本実施形態では、現実空間上の位置及び姿勢を示す情報の取得要求を送信するが、仮想空間上の位置及び姿勢を示す情報を取得してもよい。本実施形態では、マウスボタンＩＤ６２１が「Ｂｔｎ１」であるボタンが押下され、ステップＳ５１０で「ＨＭＤ０２」が特定された場合を想定する。この場合には、ＨＭＤ管理テーブル６１０のＨＭＤＩＤ６１１を参照し、ステップＳ５１０で特定した「ＨＭＤ０２」が格納されているレコードを特定する。そして、特定したレコードの通信先情報処理装置６１３から「ＨＭＤ０２」が接続されている情報処理装置１０１の通信先を取得し、これに基づいて上記要求を送信する。ここでは、「ＨＭＤ０２」が前述したＨＭＤ１０２−２、その「ＨＭＤ０２」に接続される情報処理装置１０１が情報処理装置１０１−２として説明を続ける。
【００６９】
ステップＳ５１２では、情報処理装置１０１−２のＣＰＵ３０１は、通信制御部４０１の機能により、情報処理装置１０１−１から送信された要求を受信する。ステップＳ５１３では、情報処理装置１０１−２のＣＰＵ３０１は、位置・姿勢取得部４０２の機能により、情報処理装置１０１−２に接続されたＨＭＤ１０２−２の現実空間上の位置及び姿勢を示す情報を取得する。情報処理装置１０１−２も情報処理装置１０１−１と同様にステップＳ５０１乃至ステップＳ５１１、ステップＳ５１５乃至ステップＳ５１７を実行しているので、ステップＳ５０３で取得し、ＲＡＭ３０３等に記憶したＨＭＤ１０２−２の現実空間上の位置及び姿勢を示す情報を取得すればよい。
【００７０】
ステップＳ５１３では、情報処理装置１０１−２のＣＰＵ３０１は、通信制御部４０１の機能により、ステップＳ５１２で取得したＨＭＤ１０２−２の現実空間上の位置及び姿勢を示す情報を情報処理装置１０１−１に送信する。
【００７１】
ステップＳ５１４では、情報処理装置１０１−１のＣＰＵ３０１は、通信制御部４０１の機能により、情報処理装置１０１−２から送信された、ＨＭＤ１０２−２の現実空間上の位置及び姿勢を示す情報を受信する。そして、ＨＭＤ管理テーブル６１０のＨＭＤ位置姿勢情報６１２に格納する。格納先のレコードは、ステップＳ５１０で特定した対応ＨＭＤ６２２が示すＨＭＤＩＤ６１１を有するレコードである。
【００７２】
ステップＳ５１６では、情報処理装置１０１−１のＣＰＵ３０１は、他者の視点でオブジェクトを閲覧するための処理を実行する。オブジェクト配置処理の詳細は、後述する図９に示す。オブジェクト配置処理が完了したら、ステップＳ５０５に処理を進める。ステップＳ５０５以降の処理については、前述した通りである。つまり、オブジェクト配置処理によってオブジェクトの位置及び姿勢が変更され、他者が閲覧している視線方向でオブジェクトが表示されることになる。
【００７３】
ステップＳ５０９で前回検知したボタン操作と同じと判定された場合、ステップＳ５１７では、情報処理装置１０１−１のＣＰＵ３０１は、ステップＳ５１６で変更したオブジェクトの位置及び姿勢を元の状態に戻す処理を実行する。オブジェクト復帰処理の詳細は、後述する図１３に示す。すなわち、マウスのボタンが１回押下されると、このボタンに対応するＨＭＤ１０２の視線方向で閲覧できるよう、オブジェクトの位置及び姿勢が変更され、もう１回同じボタンが押下されると、オブジェクトの位置及び姿勢がデフォルトの位置及び姿勢に戻るということである。オブジェクト復帰処理が完了したら、ステップＳ５０５に処理を進める。
【００７４】
次に、オブジェクト配置処理の詳細について、図９に示すフローチャートを用いて説明する。尚、以下説明する図９のフローチャートは、説明の都合上、情報処理装置１０１−１が実行する処理として表現しているが、前述した通り、情報処理装置１０１以外の情報処理装置１０１もステップＳ９０１乃至ステップＳ９１０を実行可能である。
【００７５】
まずステップＳ９０１では、情報処理装置１０１−１のＣＰＵ３０１は、他者視点フラグ６３１がＯＮである（「１」が格納されている）か否かを判定する。他者視点フラグ６３１がＯＮであると判定した場合には、ステップＳ９０２に処理を進める。他者視点フラグ６３１がＯＮであると判定しなかった場合、すなわち他者視点フラグ６３１がＯＦＦである（「０」が格納されている）と判定した場合には、ステップＳ９０３に処理を進める。
【００７６】
ステップＳ９０２では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト復帰処理を実行する。オブジェクト復帰処理の詳細は、後述する図１３に示す。ステップＳ９０１及びステップＳ９０２の一連の処理は、すなわち、ユーザＡ７０１がユーザＢ７１１の視点でオブジェクトを閲覧していて、ユーザＣの視点でオブジェクトを閲覧するよう指示があった場合には、一旦オブジェクトを元の位置及び姿勢に戻すということである。
【００７７】
ステップＳ９０３では、情報処理装置１０１−１のＣＰＵ３０１は、視線方向特定部４１１の機能により、ステップＳ５１５で受信した、他のＨＭＤ１０２の位置及び姿勢を示す情報に基づいて、他のＨＭＤ１０２（例えば、ＨＭＤ１０２−２）を装着するユーザ（例えば、ユーザＢ７１１）の視線方向を特定する（視線方向特定手段）。本実施形態では、ＨＭＤ１０２−２の位置及び姿勢を示す情報を用いて、ＨＭＤ１０２−２の仮想空間上の位置及び姿勢を特定し、更にこの仮想空間上の位置及び姿勢を用いて仮想空間上でのＨＭＤ１０２−２（ユーザＢ７１１）の視線方向を特定する。図１０は、図７の７１０におけるユーザＢ７１１とオブジェクト７２０とを拡大した図である。この図１０においてユーザＢ７１１の視線方向は、視線方向７１２である。ステップＳ９０３では情報処理装置１０１−１が従来技術を用いて、これを特定する。
【００７８】
ステップＳ９０４では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト制御部４１０の機能により、ステップＳ９０３で特定した他のＨＭＤ１０２（例えば、ＨＭＤ１０２−２）の視線方向から、他のＨＭＤ１０２を装着するユーザ（例えば、ユーザＢ７１１）が閲覧中のオブジェクトを特定する。図１０に示すように、視線方向７１２の直線が最初に接触するオブジェクト７２０を抽出し、これをユーザＢ７１１が閲覧中のオブジェクトとして特定する。
【００７９】
ステップＳ９０５では、情報処理装置１０１−１のＣＰＵ３０１は、記憶部４０９の機能により、ステップＳ９０４で特定したオブジェクトの仮想空間における現在の位置及び姿勢を示す情報を一時記憶する。より具体的には、閲覧中のオブジェクトのオブジェクト位置姿勢情報６０２をオブジェクト管理テーブル６００から取得し、これを復元用位置姿勢情報６３３に格納する。
【００８０】
ステップＳ９０６では、情報処理装置１０１−１のＣＰＵ３０１は、距離測定部４１２の機能により、他のＨＭＤ１０２（例えばＨＭＤ１０２−２）の仮想空間上の視点から、ステップＳ９０４で特定したオブジェクトまでの距離を測定する。図１０に示すように、座標特定部４１３の機能により、ＨＭＤ１０２−２の視点１００２をＨＭＤ１０２−２の仮想空間上の位置及び姿勢を用いて特定する。更に、座標特定部４１３の機能により、視線方向７１２の直線上で最初に接触するオブジェクト７２０の表面の第１の座標１００１を更に特定する。そして、この視点１００２と第１の座標１００１との距離を測定し、距離６３４に格納する。
【００８１】
ステップＳ９０７では、情報処理装置１０１−１のＣＰＵ３０１は、座標特定部４１３の機能により、他のＨＭＤ１０２の視線方向が交わる、閲覧中オブジェクトの二点の座標を特定する。すなわち、閲覧中オブジェクトに対する他のＨＭＤ１０２の視線方向を特定するということである。更に換言すれば、他のＨＭＤ１０２の位置及び向きに基づく視線方向から、他のＨＭＤ１０２から見た閲覧中オブジェクトの向きを特定するということである（第２の特定手段）。図１０に示すように、第１の座標１００１と、更にオブジェクト７２０の表面に接触している第２の座標１００４とを特定し、第１の座標１００１から第２の座標１００４に向かうベクトル（オブジェクト７２０に対する視線方向７１２）を、被視線方向６３５に格納する。特定する二点の座標は、本実施形態では視線方向７１２とオブジェクト７２０の表面とが接触している二点の座標としたが、オブジェクト７２０の内部の座標であってもよい。特に本実施形態の二点に限らない。オブジェクトに対する他者からの視線方向が特定できればよい。また、ステップＳ９０７で特定する座標は、オブジェクトの座標系における座標である。こうすることで、どの向きからオブジェクトを閲覧しているのかが特定できる。
【００８２】
ステップＳ９０８では、情報処理装置１０１−１のＣＰＵ３０１は、視線方向特定部４１１の機能により、情報処理装置１０１−１に接続されたＨＭＤ１０２（例えば、ＨＭＤ１０２−１）を装着するユーザ（例えば、ユーザＡ７０１）の視線方向を特定する。ステップＳ５０３で取得したＨＭＤ１０２−１の現実空間における位置及び姿勢を示す情報を用いて、仮想空間上のＨＭＤ１０２−１の位置及び姿勢を特定する。そして、この特定した位置及び姿勢を用いて、仮想空間上のＨＭＤ１０２−１の視線方向を特定する。図１１は、図７の７００におけるユーザＡ７０１とオブジェクト７２０とを拡大した図である。この図１１においてユーザＡ７０１の視線方向は、視線方向７０２である。ステップＳ９０８では情報処理装置１０１−１が従来技術を用いて、これを特定する。
【００８３】
ステップＳ９０９では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト制御部４１０の機能により、ユーザから指示されたＨＭＤ１０２の視線方向でオブジェクトを閲覧できるように、オブジェクトの位置及び姿勢を変更して、仮想空間に再配置する（３次元モデル配置手段）。すなわち、他のＨＭＤ１０２で閲覧している方向からオブジェクトを閲覧できるように、３次元モデルを回転して配置する。以下、詳細な処理について説明をする。まず、ユーザＡ７０１が装着するＨＭＤ１０２−１の位置及び姿勢を示す情報からユーザＡ７０１の視点１１０１を特定する。次に、ステップＳ９０８で特定したユーザＡ７０１の視線方向７０２の直線上のうち、ユーザＡ７０１の視点１１０１から距離６３４だけ離れた位置を特定する。この特定した位置にオブジェクト７２０の第１の座標１００１が重なるようにオブジェクト７２０を移動し、更に、ユーザＡ７０１の視線方向７０２の直線が、第２の座標１００４を通るような位置及び姿勢にオブジェクト７２０を配置する。つまり、オブジェクト７２０のオブジェクト位置姿勢情報６０２に新たな位置及び姿勢を格納する。こうすると、図１０のように破線で示したオブジェクト７２０が実線で示したオブジェクト７２０の位置及び姿勢となり、ユーザＡ７０１はその場から移動せずに、ユーザＢ７１１の視点でオブジェクト７２０を閲覧できるようになる。図１２の１２００は、ステップＳ９０９を実施した場合にステップＳ５０７でＨＭＤ１０２−１を介してユーザＡ７０１に提示される複合現実画像である。図１２の１２００は、図８の８１０と同じ視点でオブジェクト７２０が表示されていることがわかる。つまり、ユーザＡ７０１はユーザＢ７１１の視線方向からオブジェクト７２０を閲覧可能となる。
【００８４】
ステップＳ９１０では、情報処理装置１０１−１のＣＰＵ３０１は、他者視点フラグ６３１をＯＮにする。つまり、他者視点フラグ６３１に「１」を格納する。また、ステップＳ５１０で特定したＨＭＤ１０２のＨＭＤＩＤ６１１を他者ＨＭＤ６３２に格納する。ステップＳ９１０が完了したら、オブジェクト配置処理を終了する。
【００８５】
次に、オブジェクト復帰処理の詳細について、図１３に示すフローチャートを用いて説明する。尚、以下説明する図１３のフローチャートは、説明の都合上、情報処理装置１０１−１が実行する処理として表現しているが、前述した通り、情報処理装置１０１以外の情報処理装置１０１もステップＳ１３０１乃至ステップＳ１３０３を実行可能である。
【００８６】
ステップＳ１３０１では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト制御部４１０の機能により、ステップＳ９０５で一時記憶した、閲覧中のオブジェクトの位置及び姿勢を復元用位置姿勢情報６３３から取得する。
【００８７】
ステップＳ１３０２では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト制御部４１０の機能により、ステップＳ９０９で位置及び姿勢が変更されたオブジェクトを変更前の元の位置及び姿勢に戻す（復帰手段）。すなわち、ステップＳ９０９で更新されたオブジェクト位置姿勢情報６０２に、復元用位置姿勢情報６３３を格納することで、オブジェクト７２０を元の位置及び姿勢で再配置する。こうすることで、他者の視点で閲覧できるように変更したオブジェクト７２０を、変更する前の状態に戻すことができる。
【００８８】
ステップＳ１３０３では、情報処理装置１０１−１のＣＰＵ３０１は、他者視点フラグ６３１をＯＦＦにする。すなわち、他者視点フラグ６３１に「０」を格納する。更に、他者ＨＭＤ６３２と、復元用位置姿勢情報６３３と、距離６３４と、被視線方向６３５とを「ＮＵＬＬ」にする。こうすることで、他者視点管理テーブル６３０をクリアする。ステップＳ１３０３の処理が完了したら、オブジェクト復帰処理を終了する。
【００８９】
以上説明したように、第１の実施形態によれば、仮想空間に配置された３次元モデルを他のユーザが閲覧している向きで提示することの可能な効果を奏する。
【００９０】
次に第２の実施形態について説明する。第２の実施形態は、第１の実施形態におけるオブジェクト配置手段の変形例である。第２の実施形態のオブジェクト配置手段では、例えばユーザＡ７０１とユーザＢ７１１とが同一のオブジェクトを閲覧している場合に、ユーザＢ７１１が見ている向きで、ユーザＡ７０１にオブジェクトを提示する仕組みである。すなわち、同一のオブジェクトを閲覧していなければ、オブジェクトの再配置は行われない。ユーザＡ７０１とユーザＢ７１１とがそれぞれ異なるオブジェクトを閲覧しているときは、別々の作業を行っていると考えられる。そのため、こういう場合にユーザＡ７０１が誤って入力デバイス３１０を操作してしまうと、ユーザＢ７１１の閲覧しているオブジェクトが意図せずユーザＡ７０１の目の前に出てきてしまうという課題がある。そこで上記のような仕組みを採用することで、この課題を解決している。以下、この詳細な説明を行う。
【００９１】
第２の実施形態は、前述した通り、第１の実施形態におけるオブジェクト配置手段の変形例である。そのため、それ以外の点については第１の実施形態と同様であるので説明を省略する。
【００９２】
次に、オブジェクト配置処理の詳細について、図１４に示すフローチャートを用いて説明する。尚、以下説明する図１４のフローチャートは、説明の都合上、情報処理装置１０１−１が実行する処理として表現しているが、前述した通り、情報処理装置１０１以外の情報処理装置１０１もステップＳ１４０１乃至ステップＳ１４１２を実行可能である。
【００９３】
まずステップＳ１４０１では、情報処理装置１０１−１のＣＰＵ３０１は、他者視点フラグ６３１がＯＮである（「１」が格納されている）か否かを判定する。他者視点フラグ６３１がＯＮであると判定した場合には、ステップＳ１４０２に処理を進める。他者視点フラグ６３１がＯＮであると判定しなかった場合、すなわち他者視点フラグ６３１がＯＦＦである（「０」が格納されている）と判定した場合には、ステップＳ１４０３に処理を進める。
【００９４】
ステップＳ１４０２では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト復帰処理を実行する。オブジェクト復帰処理の詳細は、第１の実施形態で前述した通りである。
【００９５】
ステップＳ１４０３では、情報処理装置１０１−１のＣＰＵ３０１は、視線方向特定部４１１の機能により、ステップＳ５１５で受信した、他のＨＭＤ１０２の位置及び姿勢を示す情報に基づいて、他のＨＭＤ１０２（例えば、ＨＭＤ１０２−２）を装着するユーザ（例えば、ユーザＢ７１１）の視線方向を特定する（視線方向特定手段）。本実施形態では、ＨＭＤ１０２−２の位置及び姿勢を示す情報を用いて、ＨＭＤ１０２−２の仮想空間上の位置及び姿勢を特定し、更にこの仮想空間上の位置及び姿勢を用いて仮想空間上でのＨＭＤ１０２−２（ユーザＢ７１１）の視線方向を特定する。
【００９６】
ステップＳ１４０４では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト制御部４１０の機能により、ステップＳ１４０３で特定した他のＨＭＤ１０２（例えば、ＨＭＤ１０２−２）の視線方向から、他のＨＭＤ１０２を装着するユーザ（例えば、ユーザＢ７１１）が閲覧中のオブジェクトを特定する（第３の特定手段）。図１０に示すように、視線方向７１２の直線が最初に接触するオブジェクト７２０を抽出し、これをユーザＢ７１１が閲覧中のオブジェクトとして特定する。
【００９７】
ステップＳ１４０５では、情報処理装置１０１−１のＣＰＵ３０１は、視線方向特定部４１１の機能により、ステップＳ５０３で取得した、ＨＭＤ１０２の位置及び姿勢を示す情報に基づいて、ＨＭＤ１０２（例えば、ＨＭＤ１０２−１）を装着するユーザ（例えば、ユーザＡ７０１）の視線方向を特定する（視線方向特定手段）。本実施形態では、ＨＭＤ１０２−１の位置及び姿勢を示す情報を用いて、ＨＭＤ１０２−１の仮想空間上の位置及び姿勢を特定し、更にこの仮想空間上の位置及び姿勢を用いて仮想空間上でのＨＭＤ１０２−１（ユーザＡ７０１）の視線方向を特定する。図１１は、図７の７００におけるユーザＡ７０１とオブジェクト７２０とを拡大した図である。この図１１においてユーザＡ７０１の視線方向は、視線方向７０２である。ステップＳ９０８では情報処理装置１０１−１が従来技術を用いて、これを特定する。
【００９８】
ステップＳ１４０６では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト制御部４１０の機能により、ステップＳ１４０５で特定したＨＭＤ１０２（例えば、ＨＭＤ１０２−１）の視線方向から、ＨＭＤ１０２を装着するユーザ（例えば、ユーザＡ７０１）が閲覧中のオブジェクトを特定する（第４の特定手段）。特定方法は、ステップＳ１４０４と同様である。
【００９９】
ステップＳ１４０７では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト制御部４１０の機能により、ステップＳ１４０４で特定したオブジェクトとステップＳ１４０６で特定したオブジェクトとが同一であるか否かを判定する。すなわち、情報処理装置１０１−１に接続されたＨＭＤ１０２−１を装着するユーザＡ７０１と、情報処理装置１０１−２に接続されたＨＭＤ１０２−２を装着するユーザＢ７１１とが同じオブジェクトを閲覧しているかどうかを判定する。同一であると判定した場合には、ステップＳ１４０７に処理を進める。同一でないと判定した場合には、オブジェクト配置処理を終了する。
【０１００】
ステップＳ１４０８では、情報処理装置１０１−１のＣＰＵ３０１は、記憶部４０９の機能により、ステップＳ１４０４で特定したオブジェクトの仮想空間における現在の位置及び姿勢を示す情報を一時記憶する。より具体的には、閲覧中のオブジェクトのオブジェクト位置姿勢情報６０２をオブジェクト管理テーブル６００から取得し、これを復元用位置姿勢情報６３３に格納する。
【０１０１】
ステップＳ１４０９では、情報処理装置１０１−１のＣＰＵ３０１は、距離測定部４１２の機能により、他のＨＭＤ１０２（例えばＨＭＤ１０２−２）の仮想空間上の視点から、ステップＳ１４０４で特定したオブジェクトまでの距離を測定する。図１０に示すように、座標特定部４１３の機能により、ＨＭＤ１０２−２の視点１００２をＨＭＤ１０２−２の仮想空間上の位置及び姿勢を用いて特定する。更に、座標特定部４１３の機能により、視線方向７１２の直線上で最初に接触するオブジェクト７２０の表面の第１の座標１００１を更に特定する。そして、この視点１００２と第１の座標１００１との距離を測定し、距離６３４に格納する。
【０１０２】
ステップＳ１４１０では、情報処理装置１０１−１のＣＰＵ３０１は、座標特定部４１３の機能により、他のＨＭＤ１０２の視線方向が交わる、閲覧中オブジェクトの二点の座標を特定する。すなわち、閲覧中オブジェクトに対する他のＨＭＤ１０２の視線方向を特定するということである。更に換言すれば、他のＨＭＤ１０２の位置及び向きに基づく視線方向から、他のＨＭＤ１０２から見た閲覧中オブジェクトの向きを特定するということである（第２の特定手段）。図１０に示すように、第１の座標１００１と、更にオブジェクト７２０の表面に接触している第２の座標１００４とを特定し、第１の座標１００１から第２の座標１００４に向かうベクトル（オブジェクト７２０に対する視線方向７１２）を、被視線方向６３５に格納する。特定する二点の座標は、本実施形態では視線方向７１２とオブジェクト７２０の表面とが接触している二点の座標としたが、オブジェクト７２０の内部の座標であってもよい。特に本実施形態の二点に限らない。オブジェクトに対する他者からの視線方向が特定できればよい。また、ステップＳ１４１０で特定する座標は、オブジェクトの座標系における座標である。こうすることで、どの向きからオブジェクトを閲覧しているのかが特定できる。
【０１０３】
ステップＳ１４１１では、情報処理装置１０１−１のＣＰＵ３０１は、オブジェクト制御部４１０の機能により、ユーザから指示されたＨＭＤ１０２の視線方向でオブジェクトを閲覧できるように、オブジェクトの位置及び姿勢を変更して、仮想空間に再配置する（３次元モデル配置手段）。すなわち、他のＨＭＤ１０２で閲覧している方向からオブジェクトを閲覧できるように、３次元モデルを回転して配置する。以下、詳細な処理について説明をする。まず、ユーザＡ７０１が装着するＨＭＤ１０２−１の位置及び姿勢を示す情報からユーザＡ７０１の視点１１０１を特定する。次に、ステップＳ１４０５で特定したユーザＡ７０１の視線方向７０２の直線上のうち、ユーザＡ７０１の視点１１０１から距離６３４だけ離れた位置を特定する。この特定した位置にオブジェクト７２０の第１の座標１００１が重なるようにオブジェクト７２０を移動し、更に、ユーザＡ７０１の視線方向７０２の直線が、第２の座標１００４を通るような位置及び姿勢にオブジェクト７２０を配置する。つまり、オブジェクト７２０のオブジェクト位置姿勢情報６０２に新たな位置及び姿勢を格納する。こうすると、図１０のように破線で示したオブジェクト７２０が実線で示したオブジェクト７２０の位置及び姿勢となり、ユーザＡ７０１はその場から移動せずに、ユーザＢ７１１の視点でオブジェクト７２０を閲覧できるようになる。図１２の１２００は、ステップＳ１４１１を実施した場合にステップＳ５０７でＨＭＤ１０２−１を介してユーザＡ７０１に提示される複合現実画像である。図１２の１２００は、図８の８１０と同じ視点でオブジェクト７２０が表示されていることがわかる。つまり、ユーザＡ７０１はユーザＢ７１１の視線方向からオブジェクト７２０を閲覧可能となる。
【０１０４】
ステップＳ１４１２では、情報処理装置１０１−１のＣＰＵ３０１は、他者視点フラグ６３１をＯＮにする。つまり、他者視点フラグ６３１に「１」を格納する。また、ステップＳ５１０で特定したＨＭＤ１０２のＨＭＤＩＤ６１１を他者ＨＭＤ６３２に格納する。ステップＳ１４１２が完了したら、オブジェクト配置処理を終了する。
【０１０５】
以上説明したように、第２の実施形態によれば、仮想空間に配置された３次元モデルをお互いに閲覧している場合に、他のユーザが閲覧している向きで当該３次元モデルを提示することの可能な効果を奏する。
【０１０６】
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、１つの機器からなる装置に適用してもよい。
【０１０７】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【０１０８】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１０９】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【０１１０】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１１１】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０１１２】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１１３】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１１４】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１１５】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【０１１６】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１１７】
１０１  情報処理装置
１０２  ＨＭＤ
２０１  オプティカルマーカ
２０２  赤外線カメラ
３０１  ＣＰＵ
３０２  ＲＯＭ
３０３  ＲＡＭ
３０４  システムバス
３０５  入力コントローラ
３０６  ビデオコントローラ
３０７  メモリコントローラ
３０８  通信Ｉ／Ｆコントローラ
３０９  汎用バス
３１０  入力デバイス
３１１  外部メモリ
３１２  ディスプレイ
３２１  右目・左目ビデオカメラ
３２２  右目・左目ディスプレイ
【図１】
0006677890.tif 000002
【図２】
0006677890.tif 000003
【図３】
0006677890.tif 000004
【図４】
0006677890.tif 000005
【図５】
0006677890.tif 000006
【図６】
0006677890.tif 000007
【図７】
0006677890.tif 000008
【図８】
0006677890.tif 000009
【図９】
0006677890.tif 000010
【図１０】
0006677890.tif 000011
【図１１】
0006677890.tif 000012
【図１２】
0006677890.tif 000013
【図１３】
0006677890.tif 000014
【図１４】
0006677890.tif 000015