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