(57)【要約】【課題】拡張現実技術において、表示されるＡＲオブジェクトの種類に応じて、ＡＲオブジェクトの表示態様を決定する。【解決手段】現実空間の画像にＡＲオブジェクトを重畳して表示する複数の表示装置に、前記ＡＲオブジェクトを表示させる情報処理装置であって、前記ＡＲオブジェクトの種類に応じて、前記ＡＲオブジェクトの表示態様を決定する表示態様決定手段と、前記決定された表示態様に従って前記ＡＲオブジェクトを前記複数の表示装置に表示させる制御手段と、を有することを特徴とする。【選択図】図７
2014203175.tif 000002
【特許請求の範囲】
【請求項１】
現実空間の画像にＡＲオブジェクトを重畳して表示する複数の表示装置に、前記ＡＲオブジェクトを表示させる情報処理装置であって、
前記ＡＲオブジェクトの種類に応じて、前記ＡＲオブジェクトの表示態様を決定する表示態様決定手段と、
前記決定された表示態様に従って前記ＡＲオブジェクトを前記複数の表示装置に表示させる制御手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記表示態様には、前記ＡＲオブジェクトの水平方向の表示位置、垂直方向の表示位置、変倍率、向きのいずれかを含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記表示態様決定手段は、前記ＡＲオブジェクトの種類が平面オブジェクトである場合、前記複数の表示装置のそれぞれに対応する各ユーザの位置と、前記ＡＲオブジェクトを表示させるユーザの向きを取得して、前記ＡＲオブジェクトを共有するユーザの広がりを導出し、導出された広がりに基づいて、前記ＡＲオブジェクトの水平方向の表示位置又は変倍率を決定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記表示態様決定手段は、前記ＡＲオブジェクトの種類が立体オブジェクトである場合、前記ＡＲオブジェクトを共有するユーザの位置を頂点とする多角形の重心を、前記ＡＲオブジェクトの水平方向の表示位置として決定することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記表示態様決定手段は、当該ＡＲオブジェクトを表示させるユーザの高さ又は当該ＡＲオブジェクトを共有するすべてのユーザの高さに基づいて、前記ＡＲオブジェクトの垂直方向の表示位置を決定することを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記表示態様決定手段は、当該ＡＲオブジェクトを表示させるユーザの向きに基づいて、前記ＡＲオブジェクトの向きを決定することを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項７】
前記表示態様決定手段は、前記ＡＲオブジェクトを共有するユーザの位置又は人数の変化に応じて、前記表示態様を更新することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記ＡＲオブジェクトを共有するユーザの位置に基づいて、前記ＡＲオブジェクトの水平方向における表示位置の候補を決定する表示位置候補決定手段をさらに備え、
前記表示態様決定手段は、前記決定された表示位置の候補のうちユーザが選択した表示位置に基づいて、前記ＡＲオブジェクトの表示態様を決定する
ことを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項９】
前記表示位置候補決定手段は、前記ＡＲオブジェクトを共有するユーザの位置を頂点とする多角形の面積と当該ＡＲオブジェクトの面積とを比較することにより、前記ＡＲオブジェクトの水平方向における表示位置の候補を決定することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記ＡＲオブジェクトを表示する際の表示モードを判定する手段をさらに備え、
前記表示モードには、前記ＡＲオブジェクトを共有するユーザの全員にとって見えやすい位置に当該ＡＲオブジェクトを表示する共有モードと、前記ＡＲオブジェクトを表示させるユーザ以外の共有ユーザにとって見えやすい位置に当該ＡＲオブジェクトを表示する発表モードとを含み、
前記表示態様決定手段は、前記表示モードが前記発表モードである場合、前記ＡＲオブジェクトの水平方向における表示位置を、前記ＡＲオブジェクトを表示させるユーザを基準とした所定の位置に決定する
ことを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項１１】
請求項１〜１０のいずれか１項に記載の情報処理装置と、前記複数の表示装置とを有する拡張現実表示システム。
【請求項１２】
現実空間の画像にＡＲオブジェクトを重畳して表示する複数の表示装置に、前記ＡＲオブジェクトを表示させる情報処理方法であって、
前記ＡＲオブジェクトの種類に応じて、前記ＡＲオブジェクトの表示態様を決定する表示態様決定ステップと、
前記決定された表示態様に従って前記ＡＲオブジェクトを前記複数の表示装置に表示させる制御ステップと、
を含むことを特徴とする情報処理方法。
【請求項１３】
コンピュータを、請求項１乃至１０のいずれか１項に記載の情報処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、拡張現実表示システムにおけるオブジェクトの表示を制御する技術に関する。
【背景技術】
【０００２】
近年、拡張現実（ＡＲ：Augumented Reality）技術を用いたサービスが開発・提供されている。拡張現実は主にカメラ等で撮影された現実空間の画像に対して、平面や立体のオブジェクトを重畳表示するものである。オブジェクトを提示するデバイスとしては、携帯端末や、ＨＭＤ（Head-mounted Display）等が利用される。このような拡張現実技術を利用したサービスとして、ＧＰＳによるユーザの位置情報に基づいてユーザの周囲の環境情報をオブジェクトで表示するものなどがある。これらのサービスでは、ＧＰＳ（Global Positioning System)システムに代表されるＧＮＳＳ (Global Navigation Satellite System)で得られる位置情報を利用し、カメラで撮影している撮像画像に施設情報が重畳して表示される。これにより、複数ユーザであたかも同じ物体を見ているかのように、オブジェクトを観察することができる（特許文献１を参照）。
【０００３】
そのため、複数のユーザが参加する会話中や打合せ中において、オブジェクトを観察しながら話し合いをすることが出来る。以下では、複数のユーザが同じオブジェクトを観察可能な状態を「オブジェクトの共有」と呼ぶこととする。この場合において、共有するオブジェクトの種類は、平面オブジェクトと立体オブジェクトに大別できる。平面オブジェクトは、写真や文書編集ソフトで作成された文書ファイルといった平面的に表示されるオブジェクトである。そして、文書や写真は、平面オブジェクトの片面にのみ表示されることになる。立体オブジェクトは、ＣＡＤ等で作成された３次元モデルといった立体的に表示されるオブジェクトである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２１７１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
拡張現実技術において、オブジェクトを表示させたいユーザは、自身を含むオブジェクトを共有するユーザ（以下、「共有ユーザ」と呼ぶ。）の位置関係を考慮しながら、適切な位置にオブジェクトを配置しなければならない。また、表示させたいオブジェクトが、平面オブジェクトか立体オブジェクトかによっても、その適切な位置は異なってくる。よって、オブジェクトを表示させたいユーザが、共有ユーザの全員に見えやすい適切な位置を即座に見出すことは簡単ではない。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、現実空間の画像にＡＲオブジェクトを重畳して表示する複数の表示装置に、前記ＡＲオブジェクトを表示させる情報処理装置であって、前記ＡＲオブジェクトの種類に応じて、前記ＡＲオブジェクトの表示態様を決定する表示態様決定手段と、前記決定された表示態様に従って前記ＡＲオブジェクトを前記複数の表示装置に表示させる制御手段と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、現実空間の画像内に重畳表示されるオブジェクトを、全ユーザに見えやすい適切な位置に配置することができる。
【図面の簡単な説明】
【０００８】
【図１】拡張現実表示システムの構成例を示す図である。
【図２】画像表示装置のハードウェア構成の一例を示すブロック図である。
【図３】処理サーバのハードウェア構成の一例を示すブロック図である。
【図４】処理サーバがユーザデータベースとして管理するデータテーブルの一例を示す図である。
【図５】処理サーバがオブジェクトのデータベースとして管理するデータテーブルの一例を示すである。
【図６】処理サーバが共有データベースとして管理するデータテーブルの一例である。
【図７】実施例１に係る拡張現実表示システムにおいて、複数のユーザ間で共通のＡＲオブジェクトを表示させる処理の流れを示すフローチャートである。
【図８】実施例１に係る共有オブジェクト表示態様決定処理の流れを示すフローチャートである。
【図９】共有ユーザ広がり導出処理の詳細を示すフローチャートである。
【図１０】３人のユーザによって平面のＡＲオブジェクトを共有している状況を俯瞰した図である。
【図１１】３人のユーザによって立体のＡＲオブジェクトを共有している状況を俯瞰した図である。
【図１２】ディスプレイを通して観察されるＡＲオブジェクトの表示位置を導出する方法を説明するための図である。
【図１３】ディスプレイを通して観察されるＡＲオブジェクトの表示位置を導出する方法を説明するための図である。
【図１４】（ａ）はディスプレイに平面オブジェクトを表示した場合の一例であり、（ｂ）はディスプレイに立体オブジェクトを表示した場合の一例を示す図である。
【図１５】実施例２に係る拡張現実表示システムにおいて、複数のユーザ間で共通のＡＲオブジェクトを表示させた後、表示を更新する処理の流れを示すフローチャートである。
【図１６】表示更新要求を行う際に用いる、ポップアップ画面の一例を示す図である。
【図１７】実施例３に係る拡張現実表示システムにおいて、複数のユーザ間で共通のＡＲオブジェクトを表示させる処理の流れを示すフローチャートである。
【図１８】表示位置候補決定処理の詳細を示すフローチャートである。
【図１９】多角形の面積を求める様子を説明する図である。
【図２０】（ａ）及び（ｂ）は、ポップアップ画面の一例を示す図である。
【図２１】実施例３に係る共有オブジェクト表示態様決定処理の流れを示すフローチャートである。
【図２２】実施例４に係る拡張現実表示システムにおいて、複数のユーザ間で共通のＡＲオブジェクトを表示させる処理の流れを示すフローチャートである。
【図２３】発表モード時におけるＡＲオブジェクトの表示位置の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を用いて説明する。
【実施例１】
【００１０】
＜システム構成＞
図１は、本実施例に係る拡張現実システムの構成例を示す図である。本実施例の拡張現実表示システムは、ユーザ１００、画像表示装置２００、情報処理装置（処理サーバ）３００、ワイヤレスアクセスポイント４００、ネットワーク５００で構成される。画像表示装置２００とワイヤレスアクセスポイント４００は無線通信を行い、画像表示装置２００はワイヤレスアクセスポイント４００を介して有線のネットワーク５００と接続されている。処理サーバ３００とワイヤレスアクセスポイント４００は有線のネットワーク５００を介して接続されている。画像表示装置２００としては、図示されたＨＭＤ（Head Mount Display）の他、タブレット端末等でもよい。
【００１１】
＜画像表示装置のハードウェアブロック図＞
図２は、画像表示装置２００のハードウェア構成の一例を示すブロック図である。
【００１２】
画像表示装置２００は、ディスプレイ２０１、カメラ２０２、センサ２０３、ＣＰＵ２０４、操作部２０５、ＨＤＤ２０６、バッテリ２０７、フラッシュメモリ２０８、メインメモリ２０９、グラフィックコントローラ２１０、ネットワークＩ／Ｆ２１２を備える。そして、各要素が、システムバス２１１で接続されている。
【００１３】
フラッシュメモリ２０８には、ブートローダプログラム及び表示装置制御プログラムが格納されている。メインメモリ２０９は各種データの処理やプログラムの実行時に使用する揮発性メモリであり、高速アクセスが可能である。ＨＤＤ２０６やフラッシュメモリ２０８に格納されているデータやプログラムのうち必要なものがメインメモリ２０９に読み出され使用される。画像表示装置２００の電源投入時には、ＣＰＵ２０４がフラッシュメモリ２０８からブートローダプログラムを読み出して実行し、フラッシュメモリ２０８に格納されている表示装置制御プログラムを取り出して、メインメモリ２０９に格納する。そして、ＣＰＵ２０４がメインメモリ２０９に格納されている表示装置制御プログラムを実行し、画像表示装置２００の備える各機能を実行する。
【００１４】
ディスプレイ２０１は文字や画像などの情報を表示する表示部であり、液晶パネルや有機ＥＬパネル等で構成される。グラフィックコントローラ２１０はディスプレイ２０１への表示を制御する。
【００１５】
カメラ２０２は、レンズ、ＣＣＤ、撮像素子（例えばＣＭＯＳ）などの周知の部品から成り、撮像画像をデジタルデータに変換する。
【００１６】
バッテリ２０７は、画像表示装置２００全体に電力を供給する。
【００１７】
ネットワークインタフェース２１２は、ネットワーク５００に接続している機器間との情報のやり取りを行う。
【００１８】
センサ２０３は、画像表示装置２００の向きを特定するために使われ、加速度センサ、地磁気センサから構成される。
【００１９】
操作部２０５は、画像表示装置２００としてのＨＭＤを装着するユーザが該装置を操作するために用いる。操作部２０５は、ボタンやタッチパネルなどの周知のＵＩ部品から成り、ユーザは操作部２０５を使って、ディスプレイ２０１に映し出される項目の選択操作、文字入力、決定操作などを行うことができる。ディスプレイ２０１上の項目を選択する際は、ユーザの指し示す位置を表すカーソルを操作することによって、ユーザは意図する項目を選択することができる。
【００２０】
＜処理サーバのハードウェアブロック図＞
図３は、処理サーバ３００のハードウェア構成の一例を示すブロック図である。
【００２１】
処理サーバ３００は、ディスプレイ３０１、キーボード３０２、マウス３０３、ＬＡＮポート３０４、ＣＰＵ３０５、グラフィックコントローラ３０６、メモリコントローラ３０７、Ｉ／Ｏコントロ−ラ３０９、ＨＤＤ３１０を備える。そして、各要素が、内部バス３１１で接続されている。内部バス３１１は、メモリコントローラ３０７、Ｉ／Ｏコントローラ３０９間で情報の伝達が出来るよう、電気信号を送受信する。
【００２２】
メモリコントローラ３０７は、メインメモリ３０８に対するメモリアクセス全般を統括する。
【００２３】
Ｉ／Ｏコントローラ３０９は、ＨＤＤ３１０、ＬＡＮポート３０４、キーボード３０２、マウス３０３、及び内部バス３１１を介して接続している各処理部との情報の送受信を行う。ユーザは、キーボード３０２又はマウス３０３を操作することで処理サーバ３００への情報入力が可能である。
【００２４】
ＬＡＮポート３０４は、Ｉ／Ｏコントローラ３０９と、ネットワーク５００やワイヤレスアクセスポイント４００を介して接続されている他の機器との情報の送受信を行う。
【００２５】
ＨＤＤ３１０にはブートローダプログラム及び処理サーバ制御プログラムが格納されている。メインメモリ３０８は各種データの処理やプログラムの実行時に使用する揮発性メモリであり、高速アクセスが可能である。ＨＤＤ３１０に格納されているデータやプログラムのうち必要なものがメインメモリ３０８に読み出され使用される。処理サーバ３００の電源投入時には、ＣＰＵ３０５がＨＤＤ３１０からブートローダプログラムを読み出して実行し、ＨＤＤ３１０に格納されている処理サーバ制御プログラムを取り出して、メインメモリ３０８に格納する。そして、ＣＰＵ３０５がメインメモリ３０８に格納されている処理サーバ制御プログラムを実行し、処理サーバの有する各機能を実行する。
【００２６】
ディスプレイ３０１は、文字や画像などの情報を表示する表示部であり、液晶パネル等で構成される。グラフィックコントローラ３０６は、ディスプレイ０３０１への表示を制御する。
【００２７】
＜ユーザデータベースの構成＞
図４は、処理サーバ３００が、ユーザデータベースとして管理するデータテーブルの一例を示す図である。このようなデータテーブルがＨＤＤ３１０に格納され管理される。図４に示すデータテーブルは、1行を1レコードとして、「ユーザＩＤ」、「名前」、「位置」、「向き」の４つの属性情報を管理する。
【００２８】
「ユーザＩＤ」は、ユーザを他のユーザと区別して一意に特定するために用いられるものであり、例えば、ユーザの社員番号などが、予め画像表示装置２００に対して設定される。なお、設定されるユーザＩＤは、ＨＤＤ３１０に格納され、必要に応じてメインメモリ２０９に読み出される。
【００２９】
「名前」は、各ユーザＩＤに対応するユーザの名称であり、例えば、ユーザＩＤが“０００１”で名前が“Ａ”となっている場合は、ユーザＩＤが１００１として管理されている個人情報はユーザＡのものであることを示す。
【００３０】
「位置」は、各ユーザの位置を特定するために用いられるものであり、（Ｘ，Ｙ，Ｚ）の３次元座標で表される。図４のデータテーブルにおいて、ユーザＡは３次元座標上で（Ｘ１，Ｙ１，Ｚ１）にいることを表している。ユーザの位置情報は例えばＧＰＳを用いて取得することができ、取得された位置情報を用いてデータベースが随時更新される。
【００３１】
「向き」は、各ユーザが向いている方向を特定するために用いられるものであり、０度から３６０度未満の範囲の角度θで表現される。図４のデータテーブルにおいて、ユーザＡはθ１度の方向を向いていることを表している。ユーザの向きは、画像表示装置２００のセンサから取得される加速度や地磁気の情報から算出でき、算出した結果を用いてデータベースが更新される。
【００３２】
＜ＡＲオブジェクトデータベースの構成＞
図５は、処理サーバ３００が、オブジェクトのデータベースとして管理するデータテーブルの一例を示すである。このようなデータテーブルがＨＤＤ０３１０に格納され管理される。図５に示すデータテーブルは、1行を1レコードとして、「オブジェクトＩＤ」、「ファイル名」、「種類」、「大きさ」の４つの属性情報を管理する。なお、本明細書においては、拡張現実技術において現実空間の画像に重畳表示されるオブジェクトを「ＡＲオブジェクト」と呼ぶこととする。
【００３３】
「オブジェクトＩＤ」は、ＡＲオブジェクトを、他のＡＲオブジェクトと区別して一意に特定するために用いられるものであり、予め一意になるように各ＡＲオブジェクトに対して任意のＩＤ（図５の例では０００１〜０００４）が割り当てられる。
【００３４】
「ファイル名」は、各オブジェクトＩＤに対応するＡＲオブジェクトの名称であり、例えば、オブジェクトＩＤが“０００１”で名前が“ＡＡＡ”となっている場合は、オブジェクトＩＤが０００１として管理されているＡＲオブジェクトのファイル名はＡＡＡであることを示す。
【００３５】
「種類」は、ＡＲオブジェクトの種類を表すものであり、本実施例では、平面オブジェクトと立体オブジェクトの２種類がある。
【００３６】
「大きさ」は、３次元座標系におけるＡＲオブジェクトの面積を表し、平面オブジェクトの場合には垂直方向における面積に相当するが、立体オブジェクトの場合には垂直方向における面積と水平方向における面積の２種類がある。平面オブジェクトの場合の面積は、当該平面オブジェクトを射影した時の高さ（縦）と幅（横）を乗算したもので表される。例えば、オブジェクトＩＤが“０００１”のである平面オブジェクトの大きさ（垂直方向の面積）は、縦１．５ｍ×横１．０ｍの１．５ｍ２で表される。立体オブジェクトの場合の大きさは、まず垂直方向については、当該立体オブジェクトを射影した時の横から見たときの当該立体オブジェクトに外接する矩形の面積（高さ×幅）である。そして水平方向については、当該立体オブジェクトを射影した時の上から見たときの当該立体オブジェクトに外接する矩形の面積で表される。例えば、オブジェクトＩＤが０００３である立体オブジェクトの垂直方向の面積は、縦０．６ｍ×横１．０ｍの０．６ｍ２であり、水平方向の面積は、縦０．８ｍ×横１．０ｍの０．８ｍ２である。
【００３７】
＜共有データベースの構成＞
図６は、処理サーバ３００が、共有データベースとして管理するデータテーブルの一例である。このようなデータテーブルがＨＤＤ０３１０に格納され管理される。図６に示すデータテーブルは、1行を1レコードとして、「共有ＩＤ」、「共有オブジェクトＩＤ」、「共有ユーザＩＤ」、「表示位置」、「変倍率」、「向き」、「表示者ＩＤ」の７つの属性情報を管理する。
【００３８】
「共有ＩＤ」は、共有データベースにおけるレコードを別のレコードと区別して一意に特定するために用いられるものであり、一意になるように各レコードに対して任意のＩＤが割り当てられる。図６の例では００１及び００２が割り当てられており、それぞれ後述の図１０のケース（ＡＲオブジェクトが平面オブジェクト）と図１１のケース（ＡＲオブジェクトが立体オブジェクト）に対応している。
【００３９】
「共有オブジェクトＩＤ」は、複数のユーザによって共有されるＡＲオブジェクト（以下、「共有オブジェクト」と呼ぶ。）を特定するためのものであり、上述のＡＲオブジェクトデータベースにおける「オブジェクトＩＤ」に対応する（図５を参照）。
【００４０】
「共有ユーザＩＤ」は、ＡＲオブジェクトを共有するユーザを特定するためのものであり、上述のユーザデータベースにおける「ユーザＩＤ」が対応する。図６において、共有ＩＤが００１のレコードは、ユーザＩＤが１００１、１００２、１００３であるユーザ同士で共有オブジェクトＩＤが０００２のＡＲオブジェクトを観察していることがわかる。
【００４１】
「表示位置」は、共有オブジェクトが表示される現実空間における位置を特定するための情報であり、（Ｘ，Ｙ，Ｚ）の３次元座標で表される。
【００４２】
「変倍率」は、表示される共有オブジェクトが、ＡＲオブジェクトデータベースに登録された大きさに対して、どの程度拡大或いは縮小して表示するのかを示す倍率αを表している。
【００４３】
「向き」は、水平な平面（Ｘ−Ｙ平面）上における、表示される共有オブジェクトが向いている方向を表す情報であり、０度から３６０度未満の角度θで表現される。
【００４４】
「表示者ＩＤ」は、共有オブジェクトを表示させたユーザを特定するための情報であり、上述のユーザデータベースにおける「ユーザＩＤ」に対応する（図４を参照）。例えば、共有ＩＤが００１のレコードの場合、ＩＤが０００２の共有オブジェクトの表示位置は（ＸＡ，ＹＡ，ＺＡ）であり、その変倍率はαＡ倍、向きはθＡ度に設定されており、この共有オブジェクトを表示させたのはユーザＩＤが１００２のユーザであることが分かる。
【００４５】
図７は、本実施例に係る拡張現実システムにおいて、複数のユーザ間で共通のＡＲオブジェクトを表示させる処理の流れを示すフローチャートである。なお、この一連の処理は、以下に示す手順を記述したコンピュータ実行可能なプログラムを、処理サーバ３００内のＨＤＤ３１０からメインメモリ３０８上に読み込んだ後に、ＣＰＵ３０５によって該プログラムを実行することによって実施される。
【００４６】
ステップ７０１において、ＣＰＵ３０５は、共有ユーザを設定する。具体的には、現実空間の画像内にＡＲオブジェクトを表示させるユーザ（表示者）が、当該ＡＲオブジェクトを共有する他のユーザを設定する。この共有ユーザの設定は、画像表示装置２００のディスプレイ２０１にポップアップ画面（不図示）を表示し、操作部２０５を介したユーザ操作などによって行われる。例えば、ポップアップ画面中にユーザ名やユーザＩＤの一覧を表示し、この一覧表示の中から表示者によって選択されたユーザが共有ユーザとして設定される。なお、共有ユーザの選択では、複数のユーザを一度に選択できてもよい。
【００４７】
ステップ７０２において、ＣＰＵ３０５は、ステップ７０１で共有ユーザとして設定された他のユーザの情報（ユーザＩＤなど）を取得し、前述の共有データベース（図６参照）に登録する。すなわち、取得したユーザ情報（ここではユーザＩＤ）が、共有データベースの共有ユーザＩＤ列に、表示者のユーザ情報と共に登録される。
【００４８】
ステップ７０３において、ＣＰＵ３０５は、表示者が別のユーザと共有するために選択したＡＲオブジェクト（共有オブジェクト）の情報を取得する。ここで、表示者は、上述した共有ユーザの設定と同様、画像表示装置２００のディスプレイ２０１に表示されるポップアップ画面（不図示）を介して共有オブジェクトの設定を行う。すなわち、共有オブジェクトの設定は、ポップアップ画面内に表示されたＡＲオブジェクトのファイル名やオブジェクトＩＤの一覧表示などの中から、操作部２０５を介したユーザの選択によってなされる。この際、ポップアップ画面に一覧表示されるファイル名やオブジェクトＩＤは、ＡＲオブジェクトデータベース（図５参照）に登録されているファイル名やオブジェクトＩＤである。
【００４９】
ステップ７０４において、ＣＰＵ３０５は、ステップ７０３で取得した共有オブジェクトの情報を共有データベースに登録する。すなわち、取得した共有オブジェクト情報（ここではオブジェクトＩＤ）が、共有データベースの共有オブジェクトＩＤ列に登録される。
【００５０】
ステップ７０５において、ＣＰＵ３０５は、ステップ７０３で共有オブジェクトの選択を行ったユーザの情報を共有データベースに登録する。本実施例では、共有オブジェクトの選択を行ったユーザ（表示者）のユーザＩＤが、共有データベースの表示者ＩＤ列に登録される。
【００５１】
ステップ７０６において、ＣＰＵ３０５は、共有オブジェクトの表示態様を決定する処理を行う。共有オブジェクト表示態様決定処理の詳細については、後述する。
【００５２】
ステップ７０７において、ＣＰＵ３０５は、共有オブジェクトを描画する処理（画像表示装置２００のディスプレイ２０１上にＡＲオブジェクトを表示させる処理）を行う。ＡＲオブジェクトがどのようにしてディスプレイ２０１に表示されるかについては、後述する。なお、本実施例の場合、後述する実施例３とは異なり、平面オブジェクトはその表側の面が常に地面と垂直となるように表示されるものとする。
【００５３】
ステップ７０８において、ＣＰＵ３０５は、共有ユーザによるＡＲオブジェクトの共有が終了したかどうかを判定する。この判定は、例えば画像表示装置２００のディスプレイ２０１に表示されるメニュー項目の選択に基づいて判定する。具体的には、メニュー項目内の「共有中のＡＲオブジェクトを消去する」といった項目がユーザによって選択されたことが検知されれば、ＡＲオブジェクトの共有が終了したと判定する。共有ユーザによるＡＲオブジェクトの共有が終了したと判定された場合、本処理を終了する。一方、共有ユーザによるＡＲオブジェクトの共有が終了していないと判定された場合は、ステップ７０７に戻る。
【００５４】
＜共有オブジェクト表示態様決定処理＞
図８は、本実施例に係る共有オブジェクト表示態様決定処理の流れを示すフローチャートである。
【００５５】
ステップ８０１において、ＣＰＵ３０５は、共有オブジェクトの種類を判定する。共有オブジェクトの種類は、共有データベースの「共有オブジェクトＩＤ」を参照し、そのオブジェクトＩＤに対応する種類を、ＡＲオブジェクトデータベースの「種類」列の情報を参照することで判定される。共有オブジェクトの種類が平面オブジェクトであると判定された場合はステップ８０２へ進み、立体オブジェクトであると判定された場合はステップ８０５へ進む。
【００５６】
＜平面オブジェクトの場合＞
ステップ８０２において、ＣＰＵ３０５は、ＡＲオブジェクトを共有するユーザの広がりを導出する処理（以下、「共有ユーザ広がり導出処理」と呼ぶ。）を実行する。ここで、広がりとは、ＡＲオブジェクトを表示させるユーザの向きに垂直な方向における、ＡＲオブジェクトを共有するユーザ間の距離の最大値である。図９は、共有ユーザ広がり導出処理の詳細を示すフローチャートである。
【００５７】
ステップ９０１において、ＣＰＵ３０５は、同一のＡＲオブジェクトを共有する各ユーザの位置情報を、ＡＲオブジェクトを表示する表示装置の位置情報として取得する。具体的には、ユーザデータベースの位置属性を参照して、各ユーザのユーザＩＤに対応する３次元座標を取得する。
【００５８】
ステップ９０２において、ＣＰＵ３０５は、ＡＲオブジェクトを表示させるユーザ（表示者）の向きの情報を取得する。具体的には、ユーザデータベースの向き属性を参照して、表示者であるユーザのユーザＩＤに対応する角度を取得する。図１０は、３人のユーザ（ユーザＡ〜Ｃ）によって平面のＡＲオブジェクトを共有している状況を俯瞰した図である。図１０において、ユーザＢはＡＲオブジェクトを表示させるユーザ（表示者）であり、その位置及び向きが（Ｘ１２，Ｙ１２，Ｚ１２，θ１２）＝（５．０，２．５，１．８，３０°）によって特定されている。この場合において、Ｘ１２及びＹ１２は原点（０，０）を基準とした場合のユーザＢの水平面上の位置を示し、Ｚ１２はユーザＢの高さ（身長）を示し、θ１２はユーザＢが向いている方向とＸ軸とのなす角度を示している。同様に、ユーザＡ、ユーザＣ、共有オブジェクトとしてのＡＲオブジェクト（平面）のそれぞれについて、その位置及び向きが表されている。図１０において、ＡＲオブジェクトを表示させるユーザはユーザＢであるため、本ステップでは、ユーザＢの向きを示す角度θ１２が取得されることになる。以下、この図１０で示される場合を例に、ＡＲオブジェクト（平面）の表示位置がどのように決定されるのかを説明することとする。
【００５９】
ステップ９０３において、ＣＰＵ３０５は、ステップ９０２で取得した角度で特定されるＡＲオブジェクトを表示させるユーザの向きに垂直な方向における、ＡＲオブジェクトを共有するユーザ間の距離の最大値を算出する。図１０では、ユーザＡからユーザＣまでの距離が、求めるユーザの広がりとなる。ユーザの広がりは、以下の式（１）で求められる。
【００６０】
【数１】
2014203175.tif 000003
【００６１】
上記式（１）において、ＸＬ及びＹＬはＡＲオブジェクトに正対したときに最も左端に位置するユーザの座標、ＸＲ及びＹＲはＡＲオブジェクトに正対したときに最も右端に位置するユーザの座標、θdispは表示者であるユーザの向きを示す角度である。
【００６２】
図１０の（ａ）の場合、表示者であるユーザＢの向きを示す角度は３０°、最も左端にいるユーザＣの位置を示す座標（Ｘ，Ｙ）は（４．０，１．５）、最も右端にいるユーザＡの位置を示す座標（Ｘ，Ｙ）は（４．５，４．０）であるので、Ｌ＝２．４１（ｍ）となる。同様に、図１０の（ｂ）の場合、表示者であるユーザＡの向きを示す角度は３５０°、最も左端にいるユーザＣの位置を示す座標（Ｘ，Ｙ）は（４．０，１．５）、最も右端にいるユーザＡの位置を示す座標（Ｘ，Ｙ）は（４．５，４．０）であるので、Ｌ＝２．３６（ｍ）となる。
【００６３】
以上のようにして、共有ユーザの広がりが導出される。
【００６４】
図８のフローチャートの説明に戻る。
【００６５】
ステップ８０３において、ＣＰＵ３０５は、ＡＲオブジェクトが共有ユーザの外側に表示されるように、ステップ８０２で求めた共有ユーザの広がりに基づいて、その表示位置を決定する。これにより、求められた共有ユーザの広がりの両端に位置するユーザがＡＲオブジェクトを適切に観察することができる。
【００６６】
具体的には、ＡＲオブジェクトを表示させるユーザの位置から当該ユーザが向いている方向へＬだけ離した位置を、ＡＲオブジェクトの水平方向における表示位置として決定し、設定する。この場合のＡＲオブジェクトの表示位置（Ｘ２Ｄ，Ｙ２Ｄ）は、以下の式（２）から求められる。
【００６７】
【数２】
2014203175.tif 000004
【００６８】
上記式（２）において、Ｌは上記式（１）で求められるユーザの広がりであり、Ｘdisp及びＹdispは表示者であるユーザの座標、θdispは表示者であるユーザの向きを示す角度である。例えば、図１０の（ａ）に示されたユーザＢの向きを示す角度（３０°）とその位置を示す座標（５．０，２．５）、および上記式（１）で得られた共有ユーザの広がりＬ＝２．４１ｍを上記式（２）に当てはめるとする。この場合、ＡＲオブジェクトの表示位置（Ｘplane，Ｙplane）＝（０．８２，３．７）となる。すなわち、図１０の（ａ）の場合におけるＡＲオブジェクトは、原点からＸ方向に０．８２ｍ、Ｙ方向に３．７ｍの位置に配置されることがわかる。
【００６９】
ステップ８０４において、ＣＰＵ３０５は、ステップ８０２で求めた共有ユーザの広がりに基づいて、ＡＲオブジェクトを表示する際の変倍率を決定する。上述のとおりＡＲオブジェクトは、共有ユーザの外側のある程度離れた位置に表示されることから、それに応じた変倍率を設定する。図１０の場合におけるＡＲオブジェクトの変倍率αは、以下の式（３）で求められる。ここで、式（３）が２条件の式として表されているのは、表示するＡＲオブジェクトを縮小して表示すると視認性が低下することから、拡大のみ考慮しているためである。
【００７０】
【数３】
2014203175.tif 000005
【００７１】
上記式（３）において、Ｌは上記式（１）で求められるユーザの広がりであり、ｋは定数である。例えば、定数kの値を1.0として、上記式（１）で求めた共有ユーザの広がりＬ＝２．４１ｍを上記式（３）に当てはめると、α＝２．４１となる。すなわち、図１０の（ａ）の場合においてＡＲオブジェクトは、元のオブジェクトの大きさの２．４１倍の大きさで表示されることになる。なお、本実施例では上述のような理由から拡大のみを考慮しているが、ＡＲオブジェクトの元データのサイズ等によっては縮小されることもあり得ることはいうまでもない。
【００７２】
ステップ８０５において、ＣＰＵ３０５は、ＡＲオブジェクトを表示する際の高さ（垂直方向における表示位置）を決定する。この場合のＡＲオブジェクトの表示高は、例えば仮想オブジェクトを表示させるユーザの高さ（身長）に設定される。したがって、図１０の（ａ）の場合、ＡＲオブジェクトの高さＺ２Ｄは、ユーザＢの高さ（身長）であるＺ１２＝１．８ｍに設定されることになる。この他、例えば、すべての共有ユーザの高さの平均値を求め、得られた平均値をＡＲオブジェクトの高さに設定する等しても良い。
【００７３】
ステップ８０６において、ＣＰＵ３０５は、ＡＲオブジェクトを表示する際の向きを表示者の向きに基づいて決定する。例えば、ＡＲオブジェクトの正面がＡＲオブジェクトを表示させるユーザと正対するように、ＡＲオブジェクトの向きが設定される。ＡＲオブジェクトの向きθ２Ｄは、以下の式（４）で求められる。
【００７４】
【数４】
2014203175.tif 000006
【００７５】
上記式（４）において、θdispは表示者であるユーザの向きを示す角度である。例えば、図１０に示されたユーザＢの向きを示す角度＝３０°を上記式（４）に当てはめると、θ２Ｄ＝２１０度なる。すなわち、図１０の（ａ）の場合におけるＡＲオブジェクトの表示角度θ２Ｄは２１０度となることが分かる。
【００７６】
以上のようにして、共有オブジェクトが平面オブジェクトの場合には、その表示位置、変倍率、及び向きが決定される。
【００７７】
＜立体オブジェクトの場合＞
ステップ８０７において、ＣＰＵ３０５は、共有ユーザを構成する各ユーザ（表示者を含む）の位置情報を取得する。具体的には、ユーザデータベースの位置属性を参照して、各ユーザのユーザＩＤに対応する３次元座標を取得する。図１１は、３人のユーザ（ユーザＡ〜Ｃ）によって立体のＡＲオブジェクトを共有している状況を俯瞰した図である。図１１において、ユーザＢはＡＲオブジェクトを表示するユーザであり、その位置及び向きが（Ｘ２２，Ｙ２２，Ｚ２２，θ２２）＝（５．０，１．５，１．８，４５°）によって表されている。この場合において、Ｘ２２及びＹ２２は原点（０，０）を基準とした場合のユーザＢの平面上の位置を示し、Ｚ２２はユーザＢの高さ（身長）を示し、θ２２はＸ軸とユーザＢが向いている方向とのなす角度を示している。同様に、ユーザＡ、ユーザＣ、共有オブジェクトとしてのＡＲオブジェクト（立体）のそれぞれについて、その位置及び向きが表されている。図１１において、ＡＲオブジェクトを表示させるユーザはユーザＢである。以下、この図１１で示す場合を例に、ＡＲオブジェクト（立体）の表示位置がどのように決定されるのかを説明することとする。
【００７８】
ステップ８０８において、ＣＰＵ３０５は、ＡＲオブジェクトが共有ユーザの内側に表示されるように（共有ユーザの全員でＡＲオブジェクトを取り囲むように）、ステップ８０７で求めた共有ユーザの位置情報に基づいて、その表示位置を決定する。これにより、共有ユーザの全員がＡＲオブジェクトを適切に観察することができる。具体的には、共有ユーザの各位置を頂点として構成される多角形の重心を求め、求められた多角形の重心の位置を、ＡＲオブジェクトの表示位置として決定する。ここで、共有ユーザの各位置を頂点として構成される多角形とは、共有ユーザ間を直線で結び、交差する線を除いた残りの直線によってできた図形である。図１１において、多角形の重心の位置（Ｘ３Ｄ，Ｙ３Ｄ）は、以下の式（５）によって求められる。
【００７９】
【数５】
2014203175.tif 000007
【００８０】
上記式（５）において、ｎは共有ユーザを構成するユーザの人数を示し、共有データベースの「共有ユーザＩＤ」に登録されているユーザＩＤの数と等しい。例えば、図１１に示されたユーザＡの位置を示す座標（Ｘ，Ｙ）＝（３．０，５．０）、ユーザＢの位置を示す座標（Ｘ，Ｙ）＝（５．０，１．５）およびユーザＣの位置を示す座標（Ｘ，Ｙ）＝（２．０，２．０）を上記式（５）に当てはめるとする。この場合、多角形の重心位置（Ｘ３Ｄ，Ｙ３Ｄ）＝（３．３，３．８）となる。すなわち、図１１の場合におけるＡＲオブジェクトは、原点からＸ方向に３．３ｍ、Ｙ方向に３．８ｍの位置に配置されることがわかる。
【００８１】
ステップ８０９において、ＣＰＵ３０５は、ＡＲオブジェクトを表示する際の高さを決定する。この場合のＡＲオブジェクトの表示高は、共有ユーザ全員に見えやすいよう例えばＡＲオブジェクトを表示させるユーザの高さ（身長）の二分の一に設定される。したがって、図１１の場合、ＡＲオブジェクトの高さＺBは、ユーザＢの高さ（身長）であるＺ２２の半分の高さに設定されることになる。この他、例えば、すべての共有ユーザの高さの平均値を求め、得られた平均値の二分の一をＡＲオブジェクトの高さに設定するなどしても良い。
【００８２】
ステップ８１０において、ＣＰＵ３０５は、ＡＲオブジェクトを表示する際の向きを表示者の向きに基づいて決定する。例えば、表示者以外のユーザに対して基準となる面（正面）が向くよう、ＡＲオブジェクトの基準面とは逆の面（背面）がＡＲオブジェクトを表示させるユーザと正対するように、ＡＲオブジェクトの向きが設定される。図１１において、ＡＲオブジェクトの向きθ３Ｄは、以下の式（６）で求められる。
【００８３】
【数６】
2014203175.tif 000008
【００８４】
例えば、図１１に示された表示者であるユーザＢの向きを示す角度＝４５°を上記式（６）に当てはめると、θＢ＝２２５度なる。すなわち、図１１の場合におけるＡＲオブジェクトの表示角度θ３Ｄは２２５度となることが分かる。
【００８５】
以上のようにして、共有オブジェクトが立体オブジェクトの場合には、その表示位置及び向きが決定される。なお、本実施例においては、立体オブジェクトについては、表示する際の変倍率を決定する処理を設けていない。これは、変倍処理に伴って立体オブジェクトの造形に狂いが生じてしまう可能性を考慮したためであるが、平面オブジェクトと同様に変倍処理を行ってもよいことは言うまでもない。
【００８６】
そして、ステップ８１１において、ＣＰＵ３０５は、決定された表示位置等の情報に従って、共有データベースの内容を更新する。
【００８７】
以上が、共有オブジェクト表示態様決定処理の内容である。
【００８８】
本実施例においては、ＡＲオブジェクトはディスプレイ２０１に表示される。そのため、ディスプレイ２０１上でのＡＲオブジェクトの表示位置を決定する必要がある。次に、ディスプレイ２０１上でのＡＲオブジェクトの表示位置がどのように決定されるかについて説明する。
【００８９】
図１２及び図１３は、ディスプレイ２０１を通して観察されるＡＲオブジェクトの表示位置を導出する方法を説明するための図である。図１２においてγは、観測者の装着する画像表示装置２００の法線１２０１に対するＡＲオブジェクトの位置する方向の角度を示している。まず、この角度γが、以下の式（７）によって求められる。
【００９０】
【数７】
2014203175.tif 000009
【００９１】
上記式（７）において、Ｘｏ及びＹｏは観察者の位置を示す座標、Ｘｔ及びＹｔはＡＲオブジェクトの位置を示す座標であり、θは観察者が向いている方向とＸ軸とのなす角度である。観察者の情報は、前述のユーザデータベースを参照して取得される。
【００９２】
次に、求めた角度γの傾き方向を示す線と、画像表示装置２００のディスプレイ２０１との交点を求める。この交点が、ディスプレイ２０１上でのＡＲオブジェクトの表示位置となる。図１３において、観測者の目の法線１３０１は、図１２における画像表示装置の法線１２０１と等しい。この場合において、角度γの傾き方向を示す線１３０２と、画像表示装置２００のディスプレイ２０１との交点が、ディスプレイ２０１上でのＡＲオブジェクトの表示位置Ｐとなる。この表示位置Ｐは、観測者から見た被観測者が画像表示装置２００のディスプレイ２０１越しに視認される位置であり、ＡＲオブジェクトがディスプレイ２０１上に表示されるＡＲオブジェクトの表示位置である。この表示位置Ｐは、式（８）によって求められる。
【００９３】
【数８】
2014203175.tif 000010
【００９４】
上記式（８）において、Ｄは観測者の目からディスプレイ２０１までの距離であって、画像表示装置２００に固有の値であり、γは上記式（７）で求められる値である。
【００９５】
このようにして得られた表示位置Ｐに従って、ＡＲオブジェクトがディスプレイ２０１上に表示される。図１４の（ａ）はディスプレイ２０１に平面オブジェクトを表示した場合の一例であり、同（ｂ）はディスプレイ２０１に立体オブジェクトを表示した場合の一例を示す図である。これにより、ユーザは、画像表示装置２００のディスプレイ２０１を介して、例えば図１４の（ａ）及び（ｂ）に示すような形で、現実空間の撮像画像に重畳表示されたＡＲオブジェクトを観察することが出来る。
【００９６】
以上のとおり、本実施例によれば、共有されるＡＲオブジェクトの種類が平面オブジェクトであるか立体オブジェクトであるかに応じてその表示位置等が決定される。そのため、、例えばＡＲオブジェクトをそもそも観察できないユーザが生じるといった問題や立体オブジェクトの場合においてその裏側を観察するためにユーザが移動しなければならないといった問題が生じることがない。すなわち、本実施例に係る発明によれば、共有ユーザの全員が見えやすい適切な位置にＡＲオブジェクトを配置することができる。
【実施例２】
【００９７】
実施例１では、ＡＲオブジェクトの表示者であるユーザが共有するＡＲオブジェクトを選択した時点でその表示位置等を決定して、現実空間を撮像した画像内にＡＲオブジェクトを重畳表示する場合について説明した。次に、既に共有オブジェクトとして表示されているＡＲオブジェクトの表示位置等を更新する場合について説明する。なお、実施例１とはシステム構成を含めその大部分が共通するため、ここでは差異点を中心に説明することとする。
【００９８】
図１５は、本実施例に係る拡張現実表示システムにおいて、複数のユーザ間で共通のＡＲオブジェクトを表示させた後、その表示位置等を更新する処理の流れを示すフローチャートである。なお、この一連の処理は、以下に示す手順を記述したコンピュータ実行可能なプログラムを、処理サーバ３００内のＨＤＤ３１０からメインメモリ３０８上に読み込んだ後に、ＣＰＵ３０５によって該プログラムを実行することによって実施される。
【００９９】
ステップ１５０１〜ステップ１５０７までの各処理は、実施例１における図７のフローチャートのステップ７０１〜ステップ７０７に対応するため、ここでは説明を省略する。
【０１００】
ステップ１５０８において、ＣＰＵ３０５は、共有ユーザの一人によって、表示中のＡＲオブジェクトに対する表示更新要求がなされたどうかを判定する。ユーザの表示更新要求は、例えば画像表示装置２００のディスプレイ２０１上に表示の更新を行うためのポップアップ画面をユーザが操作部２０５を使って表示させ（図１６を参照）、「決定」ボタン１６０１を選択する等の方法で行う。表示更新要求があったと判定された場合は、ステップ１５０９に進む。一方、表示更新要求がなされていないと判定された場合はステップ１５１１に進む。
【０１０１】
ステップ１５０９において、ＣＰＵ３０５は、共有ユーザの構成に変化（新たに共有ユーザとなるユーザが追加、或いは共有ユーザからのユーザの離脱）があるかどうかを判定する。この判定は、例えば新たなユーザの追加の場合であれば、新たにＡＲオブジェクトの共有に参加したいユーザの申し込み要求を受けて、共有ユーザの１人（或いは全員）がそれに対し許可したかどうかといった方法によりなされる。ユーザの離脱の場合も同様である。共有ユーザの構成に変化があると判定されればステップ１５１０に進む。一方、共有ユーザの構成に変化がないと判定されればステップ１５０６に戻り、改めて共有オブジェクト表示態様決定処理が実行され、位置を移動したユーザがいれば、移動後の位置に基づいて共有オブジェクトの表示位置等の決定がなされる。
【０１０２】
ステップ１５１０において、ＣＰＵ３０５は、現時点での共有ユーザの情報を取得し、共有ユーザデータベースの更新、すなわち、「共有ユーザＩＤ」の項目に新たに共有ユーザに加わるユーザのユーザＩＤを追加したり、共有ユーザから離脱するユーザのユーザＩＤを削除したりする処理を行う。共有ユーザデータベースの更新が終われば、ステップ１５０６に戻り、更新後の共有ユーザデータベースに従った共有オブジェクト表示態様決定処理が実行される。
【０１０３】
ステップ１５１１において、ＣＰＵ３０５は、共有ユーザによるＡＲオブジェクトの共有が終了したかどうかを判定し、共有が終了したと判定された場合は本処理を終了し、共有が終了していないと判定された場合は、ステップ１５０８に戻る。
【０１０４】
本実施例によれば、例えば共有ユーザの一人が位置を移動した場合や新しいユーザが参加した場合など、共有ユーザの位置関係やその構成が変化した場合でも、その時点における最適なＡＲオブジェクトの表示位置等を決定することができる。
【実施例３】
【０１０５】
実施例１では、表示させるＡＲオブジェクトの種類に応じてその表示位置等を自動で決定していた。次に、ユーザに対して水平方向における表示位置の候補を提示し選択させる場合について、実施例３として説明する。なお、実施例１と共通する点については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【０１０６】
図１７は、本実施例に係る拡張現実表示システムにおいて、複数のユーザ間で共通のＡＲオブジェクトを表示させる処理の流れを示すフローチャートである。なお、この一連の処理は、以下に示す手順を記述したコンピュータ実行可能なプログラムを、処理サーバ３００内のＨＤＤ３１０からメインメモリ３０８上に読み込んだ後に、ＣＰＵ３０５によって該プログラムを実行することによって実施される。
【０１０７】
ステップ１７０１〜ステップ１７０５までの各処理は、実施例１における図７のフローチャートのステップ７０１〜ステップ７０５に対応するため、ここでは説明を省略する。
【０１０８】
ステップ１７０６において、ＣＰＵ３０５は、ＡＲオブジェクトの表示位置の候補を決定する。図１８は、ＡＲオブジェクトの水平方向における表示位置の候補を決定する表示位置候補決定処理の詳細を示すフローチャートである。
【０１０９】
ステップ１８０１において、ＣＰＵ３０５は、共有ユーザを構成する各ユーザの位置情報を取得する（実施例１における図８のフローチャートのステップ８０７を参照）。
【０１１０】
ステップ１８０２において、ＣＰＵ３０５は、取得した各ユーザの位置を頂点とする多角形の面積を求める。多角形の面積は、以下の式（９）から求められる。
【０１１１】
【数９】
2014203175.tif 000011
【０１１２】
上記式（９）において、ｎは共有ユーザを構成するユーザの数である。図１９は、本ステップで多角形の面積を求める様子を説明する図である。図１９のように共有ユーザＡ〜Ｃが位置している場合、各ユーザの位置を頂点とする三角形の面積Ｓは、上記式（９）から１．３８（ｍ２）となる。
【０１１３】
ステップ１８０３において、ＣＰＵ３０５は、ＡＲオブジェクトの面積を取得する。具体的には、ＡＲオブジェクトデータベースの「大きさ」属性を参照して、共有オブジェクトとして選択されたＡＲオブジェクトのオブジェクトＩＤに対応する面積が取得される。この場合において、選択されたＡＲオブジェクトが立体オブジェクトの場合は、垂直方向ではなく、水平方向における面積が取得される。この場合に必要なのは、共有ユーザによって囲むようにＡＲオブジェクトをその内側に配置することが可能かどうかを判定するための情報だからである。例えば、前述のオブジェクトＩＤが０００２の平面オブジェクトが選択された場合には１．５ｍ２、オブジェクトＩＤが０００３の立体オブジェクトが選択された場合には０．８ｍ２、といったように（図５参照）、ＡＲオブジェクトの面積が取得されることになる。
【０１１４】
ステップ１８０４において、ＣＰＵ３０５は、ステップ１８０１で求めた多角形の面積とステップ１８０２で取得した共有オブジェクトの面積とを比較し、いずれの面積が大きいかを判定する。共有オブジェクトの面積が多角形の面積より小さい場合、ステップ１８０５に進む。一方、共有オブジェクトの面積が多角形の面積より大きい場合には、ステップ１８０６に進む。上述のようにステップ１８０２で導出された多角形の面積が１．３８ｍ２のとき、オブジェクトＩＤが０００２の平面オブジェクトについてはその面積が１．５ｍ２なのでステップ１８０６に進み、オブジェクトＩＤが０００３の立体オブジェクトについてはその面積が０．８ｍ２なのでステップ１８０５に進むことになる。
【０１１５】
ステップ１８０５において、ＣＰＵ３０５は、共有オブジェクトとして選択されたＡＲオブジェクトを、共有ユーザの内側と外側のいずれにも配置可能と決定して、本処理を終える。
【０１１６】
ステップ１８０６において、ＣＰＵ３０５は、共有オブジェクトして選択されたＡＲオブジェクトを、共有ユーザの外側にのみ配置可能と決定して、本処理を終える。
【０１１７】
以上のようにして、共有オブジェクトの水平方向における表示位置の候補が決定される。
【０１１８】
図１７のフローチャートの説明に戻る。
【０１１９】
ステップ１７０７において、ＣＰＵ３０５は、ステップ１７０７で決定された共有オブの表示位置の候補をユーザに提示し、ユーザによる選択を受け付ける。例えば、画像表示装置２００のディスプレイ２０１上に表示位置候補を示したポップアップ画面を表示し、当該ポップアップ画面で示された表示位置の候補から希望する表示位置をユーザに選択させる。図２０の（ａ）及び（ｂ）は、ポップアップ画面の一例を示す図である。図２０の（ａ）はＡＲオブジェクトを共有ユーザの内側と外側の両方に配置可能と決定された場合におけるポップアップ画面、同（ｂ）はＡＲオブジェクトを共有ユーザの外側にのみ配置可能と決定された場合におけるポップアップ画面である。図２０の（ａ）では、表示位置の候補として「内側に表示」と「外側に表示」の２つが示されており、ユーザはいずれかについて「決定」ボタンを押下することで共有オブジェクトの表示位置を決定する。図２０の（ｂ）では、表示位置の候補が外側のみであることが示され、ユーザは外側で問題なければ「ＯＫ」ボタンを押下して共有オブジェクトの表示位置を決定し、問題があれば「戻る」ボタンを押下し、各ユーザの位置を変更する等の対応をすることになる。
【０１２０】
ステップ１７０８において、ＣＰＵ３０５は、共有オブジェクトの表示位置を決定する処理を行う。実施例１における共有オブジェクト表示態様決定処理との違いは、ステップ１７０７で受け付けたユーザの選択によって処理を切替えている点である。以下、詳しく説明する。
【０１２１】
図２１は、本実施例に係る共有オブジェクト表示態様決定処理の流れを示すフローチャートである。以下では、実施例１における図８のフローチャートとの差分となる箇所を中心に説明する。
【０１２２】
ステップ２１０１において、ＣＰＵ３０５は、共有オブジェクトの種類を判定し、平面オブジェクトであると判定された場合はステップ２１０２へ進み、立体オブジェクトであると判定された場合はステップ２１１２へ進む。判定の方法については、実施例１のステップ８０１で述べたとおりである。
【０１２３】
ステップ２１０２において、ＣＰＵ３０５は、共有オブジェクトとしての平面オブジェクトをユーザの内側に配置するかどうかを、前述したユーザの選択結果に従って判定する。すなわち、前述のステップ１７０７で、共有オブジェクトの表示位置として、内側に表示することが選択されたのか、外側に表示することが選択されたのかを判定する。外側に表示することが選択されていた場合には、ステップ２１０３に進む。一方、内側に表示することが選択されていた場合には、ステップ２１０８に進む。ステップ２１０３以降の各処理（Ｓ２１０３〜Ｓ２１０７）は前述のステップ８０２〜ステップ８０６に対応し、ステップ２１０８以降の各処理（Ｓ２１０８〜Ｓ２１１１）は前述のステップ８０７〜ステップ８１０に対応している。ただし、表示対象が平面オブジェクトであることから、共有ユーザの内側（中央）に配置される場合には、ＡＲオブジェクトの表面が上向きとなるよう地面と水平に表示する必要がある。そのため、ステップ２１０６におけるＡＲオブジェクトの高さを決定する処理においては、共有ユーザの全員がその内容を確認できるよう、表示者の高さ（身長）の例えば二分の一の高さに設定されるといった点で、実施例１とは異なることになる。
【０１２４】
ステップ２１１２において、ＣＰＵ３０５は、共有オブジェクトとしての立体オブジェクトをユーザの内側に配置するかどうかを、前述したユーザの選択結果に従って判定する。すなわち、前述のステップ１７０７で、共有オブジェクトの表示位置として、内側に表示することが選択されたのか、外側に表示することが選択されたのかを判定する。外側に表示することが選択されていた場合には、ステップ２１１３に進む。一方、内側に表示することが選択されていた場合には、ステップ２１１８に進む。ステップ２１１３以降の各処理（Ｓ２１１３〜Ｓ２１１７）は前述のステップ８０２〜ステップ８０６に対応し、ステップ２１１８以降の各処理はステップ８０７〜ステップ８１０に対応している。
【０１２５】
そして、ステップ２１２２において、ＣＰＵ３０５は、決定されたＡＲオブジェクトの表示位置等の情報に従って、共有データベースの内容を更新する。
【０１２６】
以上が、本実施例に係る共有オブジェクト表示態様決定処理の内容である。
【０１２７】
図１７のフローチャートの説明に戻る。
【０１２８】
ステップ１７０９及びステップ１７１０の各処理は、実施例１における図７のフローチャートのステップ７０７及びステップ７０８に対応するため、ここでは説明を省略する。
本実施例によれば、共有されるＡＲオブジェクトの表示する位置を、表示者であるユーザの意思に掛からしめることができる。
【実施例４】
【０１２９】
実施例１〜３では、表示者を含めた共有ユーザの全員にとって見やすい位置にＡＲオブジェクトを配置することを前提としていた。次に、ＡＲオブジェクトの表示者が他のユーザに対して発表を行うときなど、表示者自身のＡＲオブジェクトの見え方を考慮する必要のない場合について、実施例４として説明する。なお、他の実施例と共通する点については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【０１３０】
図２２は、本実施例に係る拡張現実表示システムにおいて、複数のユーザ間で共通のＡＲオブジェクトを表示させる処理の流れを示すフローチャートである。なお、この一連の処理は、以下に示す手順を記述したコンピュータ実行可能なプログラムを、処理サーバ３００内のＨＤＤ３１０からメインメモリ３０８上に読み込んだ後に、ＣＰＵ３０５によって該プログラムを実行することによって実施される。
【０１３１】
ステップ２２０１〜ステップ２２０５までの各処理は、実施例１における図７のフローチャートのステップ７０１〜ステップ７０５に対応するため、ここでは説明を省略する。
【０１３２】
ステップ２２０６において、ＣＰＵ３０５は、表示モードを判定する。表示モードには、共有モードと発表モードの２種類がある。「共有モード」は、先の実施例で述べた、共有ユーザの全員にとって見えやすい位置にＡＲオブジェクトを表示するモードであり、「ＡＲオブジェクトの表示者を含めた全ユーザでＡＲオブジェクトを観察したい場合に適したモードである。一方、「発表モード」は、ＡＲオブジェクトを表示させるユーザ以外の共有ユーザにとって見えやすい位置にＡＲオブジェクトを表示するモードであり、表示者が発表者となってＡＲオブジェクトを用いたプレゼンテーションを行うのに適したモードである。表示モードの選択は、例えば、ディスプレイ２０１上に表示される選択用ポップアップ画面（不図示）において、「共有モード」と「発表モード」のいずれをユーザが選択したかによって、この表示モードの判定を行う。判定の結果、共有モードが選択されていた場合にはステップ２２０７に進み、発表モードが選択されていた場合にはステップ２２０８に進む。
【０１３３】
ステップ２２０７において、ＣＰＵ３０５は、ＡＲオブジェクトの表示者を含めた全ユーザの位置を考慮してＡＲオブジェクトを配置するための、共有オブジェクト表示決定処理を行う。この処理は、実施例１における図７のフローチャートのステップ７０６と同様であるため、ここでは説明を省略する。
【０１３４】
ステップ２２０８〜ステップ２２１２の各処理において、ＣＰＵ３０５は、ＡＲオブジェクトの表示者の位置を考慮して、ＡＲオブジェクトの表示位置等を決定する。
【０１３５】
まず、ステップ２２０８において、ＣＰＵ３０５は、ＡＲオブジェクトの表示者の位置情報を取得する。
【０１３６】
次に、ステップ２２０９において、ＣＰＵ３０５は、取得した表示者の位置情報に基づき、例えばＡＲオブジェクトの表示位置を表示者の右横或いは左横といった表示者を基準とした所定の位置に決定する。図２３は、発表モード時におけるＡＲオブジェクトの表示位置の一例を示す図である。図２３の場合において、ＡＲオブジェクトの表示位置（ＸＰ，ＹＰ）は、以下の式（１０）で求められる。
【０１３７】
【数１０】
2014203175.tif 000012
【０１３８】
上記式（１０）において、Ｘdisp及びＹdispは表示者であるユーザの座標、θdispは表示者であるユーザの向きを示す角度、ｄは表示者とＡＲオブジェクト間の距離である。なお、表示者とＡＲオブジェクト間の距離ｄは、例えば１ｍなど所定の値を予め決定しておけばよい。
【０１３９】
次に、ステップ２２１０において、ＡＲオブジェクトを表示する際の高さを決定する。この場合のＡＲオブジェクトの表示高は、例えば発表者であるＡＲオブジェクトの表示者の高さ（身長）に設定される。したがって、図２３の場合、ＡＲオブジェクトの高さＺPは、ユーザＢの高さ（身長）であるＺ３２に設定されることになる。この他、例えば、観察者となる他のユーザＡ及びＣの高さ（Ｚ３１とＺ３３）の平均値を求め、得られた平均値をＡＲオブジェクトの高さに設定する等しても良い。
【０１４０】
そして、ステップ２２１１において、ＣＰＵ３０５は、ＡＲオブジェクトを表示する際の向きを決定する。ここでは、ＡＲオブジェクトの表面（正面）がＡＲオブジェクトの表示者の向きと同じなるように、ＡＲオブジェクトの向きが設定される。図２３の場合、ＡＲオブジェクトの向きθPは、発表者であるＡＲオブジェクトの表示者の向きθ３２と同じ方向に設定される。
【０１４１】
ステップ２２１２において、ＣＰＵ３０５は、決定されたＡＲオブジェクトの表示位置等の情報に従って、共有データベースの内容を更新する。
【０１４２】
ステップ２２１１及びステップ２２１２の各処理は、実施例１における図７のフローチャートのステップ７０７及びステップ７０８に対応するため、ここでは説明を省略する。
【０１４３】
本実施例によれば、ユーザが選択した表示モードに応じて、ＡＲオブジェクトの表示位置が決定される。「発表モード」が選択された場合には、ＡＲオブジェクトの表示者の隣にＡＲオブジェクトの表示位置が設定されるので、プレゼンテーション等を行うユーザは、ＡＲオブジェクトを使った発表がし易くなる。
【図２】
2014203175.tif 000013
【図３】
2014203175.tif 000014
【図４】
2014203175.tif 000015
【図５】
2014203175.tif 000016
【図６】
2014203175.tif 000017
【図７】
2014203175.tif 000018
【図８】
2014203175.tif 000019
【図９】
2014203175.tif 000020
【図１０】
2014203175.tif 000021
【図１１】
2014203175.tif 000022
【図１２】
2014203175.tif 000023
【図１３】
2014203175.tif 000024
【図１５】
2014203175.tif 000025
【図１７】
2014203175.tif 000026
【図１８】
2014203175.tif 000027
【図１９】
2014203175.tif 000028
【図２１】
2014203175.tif 000029
【図２２】
2014203175.tif 000030
【図２３】
2014203175.tif 000031
【図１】
2014203175.tif 000032
【図１４】
2014203175.tif 000033
【図１６】
2014203175.tif 000034
【図２０】
2014203175.tif 000035