IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立ソリューションズの特許一覧

特開2023-137628仮想オブジェクト配置方法、仮想空間システム
<>
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図1
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図2
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図3
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図4
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図5
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図6
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図7
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図8
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図9
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図10
  • 特開-仮想オブジェクト配置方法、仮想空間システム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023137628
(43)【公開日】2023-09-29
(54)【発明の名称】仮想オブジェクト配置方法、仮想空間システム
(51)【国際特許分類】
   G06T 19/00 20110101AFI20230922BHJP
   G06F 3/01 20060101ALI20230922BHJP
   G06F 3/04815 20220101ALI20230922BHJP
【FI】
G06T19/00 600
G06F3/01 510
G06F3/04815
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022043902
(22)【出願日】2022-03-18
(71)【出願人】
【識別番号】000233055
【氏名又は名称】株式会社日立ソリューションズ
(74)【代理人】
【識別番号】110002572
【氏名又は名称】弁理士法人平木国際特許事務所
(72)【発明者】
【氏名】川尻 剛
【テーマコード(参考)】
5B050
5E555
【Fターム(参考)】
5B050CA07
5B050DA04
5B050EA05
5B050EA07
5B050EA12
5B050EA13
5B050EA19
5B050EA27
5B050FA06
5E555AA25
5E555AA27
5E555AA64
5E555BA05
5E555BA38
5E555BB05
5E555BB38
5E555BC04
5E555BE17
5E555CA10
5E555CA42
5E555CA44
5E555CB21
5E555CB48
5E555DA08
5E555DA09
5E555DC09
5E555DC13
5E555FA00
(57)【要約】      (修正有)
【課題】AR空間内に仮想オブジェクトを配置する際の作業負担を軽減することができる、仮想オブジェクト配置方法及び仮想空間システムを提供する。
【解決手段】AR表示端末が仮想オブジェクトを表示する手順であって、仮想空間アンカーの座標と現実空間アンカーの座標を対応付けて記録しておき、表示端末が現実空間アンカーの周辺の仮想オブジェクトを表示する際には、仮想空間アンカーの座標と現実空間アンカーの座標との間の差分を仮想オブジェクトの座標に対して適用することにより、表示端末の座標系にしたがって仮想オブジェクトを表示する。
【選択図】図9
【特許請求の範囲】
【請求項1】
第1表示端末が表示する仮想空間内に仮想オブジェクトを配置する仮想オブジェクト配置方法であって、前記仮想空間を前記第1表示端末に対して提供するコンピュータが、
前記第1表示端末が前記仮想オブジェクトを表示する際の基準となる仮想空間アンカーを前記仮想空間内に配置するとともにその座標を前記仮想空間の仮想座標系にしたがって記録するステップ、
前記仮想空間内に前記仮想オブジェクトを配置するとともにその座標を前記仮想座標系にしたがって記録するステップ、
前記仮想空間アンカーと対応する現実空間アンカーを現実空間内における前記仮想空間アンカーと対応する位置に設置したときの前記現実空間アンカーの座標を、前記現実空間の現実座標系にしたがって記録するステップ、
前記第1表示端末の周辺に存在する前記現実空間アンカーの座標を前記第1表示端末の第1座標系にしたがって記述した値と、前記現実座標系にしたがって記録した前記現実空間アンカーの座標との間の第1差分を計算するステップ、
前記第1差分を適用することにより、前記現実座標系にしたがって記述された前記現実空間アンカーの座標を、前記第1座標系にしたがって記述された値へ補正するステップ、
前記補正した前記現実空間アンカーの座標を前記第1表示端末に対して送信することにより、前記第1座標系における前記現実空間アンカーの座標を前記第1表示端末に対して通知するステップ、
を有する
ことを特徴とする仮想オブジェクト配置方法。
【請求項2】
前記現実空間アンカーの座標を前記現実座標系にしたがって記録するステップは、前記コンピュータが、
前記現実空間アンカーの位置を前記仮想空間内において指定する位置指定アンカーを前記仮想空間内において表示する第2表示端末から、前記位置指定アンカーの座標を前記第2表示端末の第2座標系にしたがって記述した値を取得するステップ、
前記第2表示端末の周辺に存在する第2特徴点の座標を前記第2座標系にしたがって記述した値を受け取るステップ、
前記現実空間内に存在する現実空間特徴点の座標を前記現実座標系にしたがって記述した空間情報データから前記第2特徴点と合致する前記現実空間特徴点を特定するステップ、
前記第2特徴点の座標と前記特定した現実空間特徴点の座標との間の第2差分を計算するステップ、
前記第2差分を前記第2座標系における前記現実空間アンカーの座標に対して適用することにより、前記第2座標系における前記現実空間アンカーの座標を前記現実座標系における値へ変換するステップ、
を有する
ことを特徴とする請求項1記載の仮想オブジェクト配置方法。
【請求項3】
前記現実空間アンカーの座標を前記現実座標系にしたがって記録するステップは、前記コンピュータが、
前記位置指定アンカーに対応するIDを前記第2表示端末から受け取るステップ、
前記第2表示端末から受け取った前記IDを前記現実空間アンカーのIDとして記録するステップ、
を有し、
前記仮想空間アンカーを前記仮想空間内に配置するステップにおいて、前記コンピュータは、前記現実空間アンカーのIDと前記仮想空間アンカーのIDを対応付けて記録する
ことを特徴とする請求項2記載の仮想オブジェクト配置方法。
【請求項4】
前記仮想オブジェクト配置方法はさらに、前記コンピュータが、
前記第1表示端末の周辺に存在する第1特徴点の座標を前記第1座標系にしたがって記述した値を受け取るステップ、
前記現実空間内に存在する現実空間特徴点の座標を前記現実座標系にしたがって記述した空間情報データから前記第1特徴点と合致する前記現実空間特徴点を特定するステップ、
を有し、
前記第1差分を計算するステップにおいて、前記コンピュータは、前記第1特徴点の座標と前記特定した現実空間特徴点の座標との間の第3差分を計算し、
前記第1差分を適用するステップにおいて、前記コンピュータは、前記第3差分を前記現実座標系における前記現実空間アンカーの座標に対して適用することにより、前記現実座標系における前記現実空間アンカーの座標を前記第1座標系における値へ変換し、
前記現実空間アンカーの座標を前記第1表示端末に対して通知するステップにおいて、前記コンピュータは、前記変換した現実空間アンカーの座標を前記第1表示端末に対して送信することにより、前記第1座標系における前記現実空間アンカーの座標を前記第1表示端末に対して通知する
ことを特徴とする請求項1記載の仮想オブジェクト配置方法。
【請求項5】
前記仮想オブジェクト配置方法はさらに、前記コンピュータが、前記仮想空間アンカーの位置をユーザに指定させるユーザインターフェースを提供するステップを有し、
前記ユーザインターフェースは、
前記仮想空間内において配置されている前記仮想空間アンカーのリスト、
前記仮想座標系における前記仮想空間アンカーの座標を入力する座標入力欄、
を有し、
前記コンピュータは、前記ユーザインターフェース上において指定された前記仮想空間アンカーの座標を記憶装置に格納する
ことを特徴とする請求項1記載の仮想オブジェクト配置方法。
【請求項6】
前記仮想オブジェクト配置方法はさらに、前記第1表示端末が、
前記第1座標系において前記仮想空間を表示するステップ、
前記コンピュータから、前記仮想座標系における前記仮想空間アンカーの座標を記述した仮想空間アンカーデータと前記仮想座標系における前記仮想オブジェクトの座標を記述したオブジェクトデータを取得するステップ、
前記第1表示端末の周辺に存在する前記現実空間アンカーの前記第1座標系における座標を取得するステップ、
前記取得した現実空間アンカーの座標のなかから前記仮想オブジェクトを表示する際の基準となる基準現実空間アンカーを選択するステップ、
前記基準現実空間アンカーと対応する対応仮想空間アンカーを前記仮想空間アンカーデータから特定するステップ、
前記仮想座標系における前記対応仮想空間アンカーの座標と前記現実座標系における前記基準現実空間アンカーの座標との間の差分を前記仮想オブジェクトに対して適用することにより前記仮想オブジェクトを前記仮想空間内において表示するステップ、
を有する
ことを特徴とする請求項1記載の仮想オブジェクト配置方法。
【請求項7】
前記現実空間アンカーの前記第1座標系における座標を取得するステップは、
前記第1表示端末が、前記第1表示端末の周辺に存在する第1特徴点の座標を前記第1座標系にしたがって記述した値を取得するステップ、
前記第1表示端末が、前記第1特徴点の座標を前記コンピュータに対して送信するステップ、
前記コンピュータが、前記現実空間内に存在する現実空間特徴点の座標を前記現実座標系にしたがって記述した空間情報データから前記第1特徴点と合致する前記現実空間特徴点を特定するステップ、
前記コンピュータが、前記第1特徴点の座標と前記特定した現実空間特徴点の座標との間の第3差分を計算するステップ、
前記コンピュータが、前記第3差分を前記現実座標系における前記現実空間アンカーの座標に対して適用することにより、前記現実座標系における前記現実空間アンカーの座標を前記第1座標系における値へ変換するステップ、
前記コンピュータが、前記変換した現実空間アンカーの座標を前記第1表示端末に対して送信することにより、前記第1座標系における前記現実空間アンカーの座標を前記第1表示端末に対して通知するステップ、
を有する
ことを特徴とする請求項6記載の仮想オブジェクト配置方法。
【請求項8】
前記仮想空間アンカーデータは、前記仮想空間アンカーの座標に加えて前記仮想空間アンカーの向きを記述しており、
前記第1表示端末は、前記第1表示端末の周辺に存在する前記現実空間アンカーの前記第1座標系における座標を取得するとともに、前記第1座標系における前記第1表示端末の向きを取得し、
前記第1表示端末は、前記仮想座標系における前記対応仮想空間アンカーの向きと前記現実座標系における前記基準現実空間アンカーの向きとの間の差分を前記仮想オブジェクトに対して適用することにより前記仮想オブジェクトを前記仮想空間内において表示する
ことを特徴とする請求項6記載の仮想オブジェクト配置方法。
【請求項9】
仮想空間を第1表示端末に対して提供するコンピュータ、
前記第1表示端末、
を有し、
前記コンピュータは、請求項1記載の仮想オブジェクト配置方法を実施することにより、前記仮想オブジェクトを前記仮想空間内に配置する
ことを特徴とする仮想空間システム。
【請求項10】
前記第1表示端末は、前記仮想オブジェクトを前記仮想空間内に表示する仮想オブジェクト表示方法を実施し、
前記仮想オブジェクト表示方法は、前記第1表示端末が、
前記第1座標系において前記仮想空間を表示するステップ、
前記コンピュータから、前記仮想座標系における前記仮想空間アンカーの座標を記述した仮想空間アンカーデータと前記仮想座標系における前記仮想オブジェクトの座標を記述したオブジェクトデータを取得するステップ、
前記第1表示端末の周辺に存在する前記現実空間アンカーの前記第1座標系における座標を取得するステップ、
前記取得した現実空間アンカーの座標のなかから前記仮想オブジェクトを表示する際の基準となる基準現実空間アンカーを選択するステップ、
前記基準現実空間アンカーと対応する対応仮想空間アンカーを前記仮想空間アンカーデータから特定するステップ、
前記仮想座標系における前記対応仮想空間アンカーの座標と前記現実座標系における前記基準現実空間アンカーの座標との間の差分を前記仮想オブジェクトに対して適用することにより前記仮想オブジェクトを前記仮想空間内において表示するステップ、
を有する
ことを特徴とする請求項9記載の仮想空間システム。
【請求項11】
前記コンピュータは、
前記仮想空間アンカーの座標を記述した仮想空間アンカーデータを保持する仮想空間管理サーバ、
前記現実空間アンカーの座標を記述した現実空間アンカーデータを保持する現実空間管理サーバ、
によって構成されている
ことを特徴とする請求項9記載の仮想空間システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、表示端末が表示する仮想空間内に仮想オブジェクトを配置する技術に関する。
【背景技術】
【0002】
拡張現実(Augmented Reality:AR)は、仮想現実の1形態であり、現実空間の映像内に仮想オブジェクトなどを重ねて配置して提示することにより、現実空間の映像を仮想的に拡張する技術である。AR映像は、例えばヘッドマウントディスプレイなどの表示端末上で表示される。
【0003】
AR表示端末は一般的には絶対的な座標系を有しておらず、AR表示端末が起動したときの位置が原点となり、起動時に向いている端末の向きに合わせて端末内部の座標系が構築される。したがって、現実空間内の特定位置に仮想オブジェクトを配置する際には、現実世界に設置された何らかの基準位置に対する相対位置により、その仮想オブジェクトの座標を指定する必要がある。
【0004】
特許文献1は、現実世界に設置する基準位置として、QRマーカを用いる技術を記載している。同文献は、『より簡易に、その場所に応じたMRを体験させることが可能な複合現実システムを提供する。』ことを課題として、『本発明は、サーバ、並びに所定の実空間内にいるユーザに対して仮想オブジェクトを表示するためのディスプレイ及び実空間を撮影する撮影装置を有する携帯端末装置を備え、実空間の撮影画像に仮想オブジェクトを重畳させた複合現実画像を該ディスプレイに表示するための複合現実システムであって、所定の実空間内にある実オブジェクト上の予め定められた1以上の位置に、各々の位置に対応する位置情報を包含する識別子を含む識別コードと多角形の形状を有する位置合わせ用マーカとから構成されるMRマーカが配置され、サーバは、仮想空間データ記憶部と、アプリケーション記憶部とを備え、携帯端末装置は、ブラウザ部と、マーカ認識部と、位置決定部と、画像生成部とを備える。』という技術を記載している(要約参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2019-133507号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1のようなQRコード(登録商標)を用いる場合、QRコードを現実空間内の特定位置に固定し、これに対する相対位置によって仮想オブジェクトの位置を定義することになる。しかしこの方法は一般に、仮想オブジェクトを追加したりその位置を変更したりするごとに、QRコードが設置されている場所へユーザが訪問し、AR表示端末上にその仮想オブジェクトを表示しながらその仮想オブジェクトの位置を調整する必要がある。また、仮想オブジェクトの位置は表示端末内部に保存されるのが一般的であるので、表示端末ごとにこの調整を実施する必要があり、作業負担が大きい。
【0007】
本開示は、上記のような課題に鑑みてなされたものであり、AR空間内に仮想オブジェクトを配置する際の作業負担を軽減することができる、仮想オブジェクト配置方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本開示に係る仮想オブジェクト配置方法は、仮想空間アンカーの座標と現実空間アンカーの座標を対応付けて記録しておき、表示端末が前記現実空間アンカーの周辺の仮想オブジェクトを表示する際には、前記仮想空間アンカーの座標と前記現実空間アンカーの座標との間の差分を前記仮想オブジェクトの座標に対して適用することにより、前記表示端末の座標系にしたがって前記仮想オブジェクトを表示する。
【発明の効果】
【0009】
本開示に係る仮想オブジェクト配置方法によれば、仮想オブジェクトを設置する際には、仮想空間内において前記仮想空間アンカーと現実空間アンカーを対応付けた上で、前記仮想空間アンカーに対する相対位置によって前記仮想オブジェクトを設置すればよい。したがって、仮想オブジェクトを設置する作業は仮想空間内で実施することができるので、現実空間アンカーの設置場所へ毎度訪問する必要はない。すなわち仮想オブジェクトの設置作業の負担を軽減できる。
【図面の簡単な説明】
【0010】
図1】仮想空間システム1の構成図である。
図2】建物形状DB400の構成とデータ例を示す。
図3】オブジェクトDB500の構成とデータ例を示す。
図4】仮想空間アンカーDB610の構成とデータ例を示す。
図5】空間情報DB620の構成とデータ例を示す。
図6】現実空間アンカーDB630の構成とデータ例を示す。
図7】仮想オブジェクトを仮想空間内に設置する作業を実施するためのユーザインターフェースの例である。
図8】現実空間801内に設置した現実空間アンカー806を現実空間アンカーDB630へ登録する手順を説明する図である。
図9】AR表示端末100が仮想オブジェクト705を表示する手順を説明するフローチャートである。
図10】S902における現実空間アンカー管理部340の動作手順を説明するフローチャートである。
図11】AR表示端末100を用いて仮想オブジェクト1105を表示する様子を示す。
【発明を実施するための形態】
【0011】
図1は、本開示の実施形態に係る仮想空間システム1の構成図である。仮想空間システム1は、AR表示端末100が表示する仮想空間を提供するシステムである。仮想空間システム1は、AR表示端末100、仮想空間管理サーバ200、現実空間アンカー管理サーバ300を有する。これらはネットワークを介して接続されている。
【0012】
AR表示端末100は、例えばヘッドマウント型やタブレット型のコンピュータによって構成されている。AR表示端末100の内部座標系(第1座標系)は、AR表示端末100を起動したときの位置と原点とし、そのときAR表示端末100が向いている向きを基準として座標軸が形成される。AR表示端末100は、特徴点取得部110、端末位置取得部120、仮想空間描画部130、仮想空間表示部140を備える。
【0013】
特徴点取得部110は、例えば赤外線やカメラ映像を使用して、AR表示端末100周辺の環境の3次元形状を認識して周辺形状の特徴点(例えば矩形の頂点)を抽出する。端末位置取得部120は、例えばジャイロセンサなどを使用してAR表示端末100の現在位置や向きを識別する。
【0014】
仮想空間描画部130は、仮想空間管理サーバ200から仮想オブジェクトの座標と3次元形状をそれぞれ取得し、現実空間の映像に対してその仮想オブジェクトを重畳して描画する。仮想空間表示部140はその仮想オブジェクトを表示する。これによりAR空間が形成されることになる。
【0015】
オブジェクト・仮想空間アンカー描画部131は、仮想空間管理サーバ200から取得した仮想オブジェクトや仮想空間アンカーを描画する。現実空間アンカー保存部132は、特徴点取得部110が取得した特徴点を現実空間アンカー管理サーバ300に対して送信し、AR表示端末100周辺に存在する現実空間アンカーのリストを返信として取得する。現実空間アンカー描画部133は、現実空間アンカーを描画する。オブジェクト位置補正部134は、仮想空間アンカーの座標と現実空間アンカーの座標との間の差分を仮想オブジェクトに対して適用することにより、仮想オブジェクトの位置を補正する。これら機能部の詳細動作については後述する。
【0016】
仮想空間管理サーバ200は、仮想空間および仮想オブジェクトの座標と3次元形状をそれぞれ管理する。仮想空間管理サーバ200は、建物形状データベース(DB)400、オブジェクトDB500、仮想空間アンカーDB610、建物形状管理部240、オブジェクト管理部250、仮想空間アンカー管理部260を備える。
【0017】
建物形状DB400は、仮想空間上の建物などの構造物の3次元形状を記述したレコードを保持する。オブジェクトDB500は、仮想空間座標系における仮想オブジェクト(現実世界に対して重畳して表示したい仮想空間上のオブジェクト)の位置と3次元形状を記述したレコードを保持する。仮想空間アンカーDB610は、仮想空間座標系における仮想空間アンカーの位置や向きを記述したレコードを保持する。仮想空間アンカーは、仮想空間上において仮想オブジェクトを描画する際の基準位置となる。これらデータベースの構成とデータ例については後述する。
【0018】
建物形状管理部240は、建物形状DB400から構造物の形状などを読み出してAR表示端末100に対して提供する。オブジェクト管理部250は、オブジェクトDB500から仮想オブジェクトの位置などを読み出してAR表示端末100に対して提供する。仮想空間アンカー管理部260は、仮想空間アンカーDB610から仮想空間アンカーの位置などを読み出してAR表示端末100に対して提供する。
【0019】
現実空間アンカー管理サーバ300は、現実空間アンカーを管理する。現実空間アンカー管理サーバ300は、空間情報DB620、現実空間アンカーDB630、空間情報管理部330、現実空間アンカー管理部340を備える。
【0020】
空間情報DB620は、現実空間座標系における現実空間の特徴点の座標を記述したレコードを保持する。現実空間アンカーDB630は、現実空間座標系における現実空間アンカーの位置や向きを記述したレコードを保持する。現実空間アンカーは、現実空間内において仮想空間アンカーと対応する位置に設置され、仮想空間アンカーを仮想空間上に描画する際の基準位置となる。これらデータベースの構成とデータ例については後述する。
【0021】
空間情報管理部330は、AR表示端末100から特徴点を受け取り、これを用いて空間情報DB620を照会することにより、その特徴点を有する空間を特定する。現実空間アンカー管理部340は、現実空間アンカーDB630から現実空間アンカーの位置などを読み出す。さらに後述する補正処理により、現実空間アンカーの位置を、AR表示端末100の座標系に基づく値に変換する。
【0022】
図2は、建物形状DB400の構成とデータ例を示す。建物ID401は、構造物(以下では建物を想定する)を一意に識別するIDである。1つの建物は複数のメッシュ(面の組み合わせ)から構成される。メッシュID402は各メッシュを一意に識別するIDである。頂点数403はメッシュが扱う頂点数を表す。面数404はメッシュが扱う面数を表す。面ID405は、メッシュが有する面を一意に識別するIDである。1つの面は3つの頂点から構成される。頂点406はその頂点のID(頂点ID407)を示す。頂点ID407は、メッシュが有する頂点を一意に識別するIDである。1つの頂点はXYXの3つの座標値から構成される。座標408はその座標値を示す。座標408は建物内の位置を仮想空間座標系にしたがって記述している。
【0023】
図3は、オブジェクトDB500の構成とデータ例を示す。建物ID501は、仮想オブジェクトが所属する建物の建物ID401を示す。オブジェクトID502は、仮想オブジェクトを一意に識別するIDである。仮想オブジェクトはその形状によって分類される。クラスID503はその分類(クラス)のIDである。位置504と向き505は、仮想オブジェクトの位置と向き(3次元ベクトル)をそれぞれ、仮想空間座標系にしたがって記述している。クラスはメッシュによって構成され、メッシュID506はメッシュを一意に識別する。頂点数507は、メッシュが扱う頂点数を表す。面数508は、メッシュが扱う面数を表す。面ID509は、メッシュが有する面を一意に識別するIDである。1つの面は3つの頂点から構成される。頂点510はその頂点のID(頂点ID511)を示す。頂点ID511は、メッシュが有する頂点を一意に識別するIDである。1つの頂点はXYXの3つの座標値から構成される。座標512はその座標値を示す。座標512は建物内の位置を仮想空間座標系にしたがって記述している。
【0024】
図4は、仮想空間アンカーDB610の構成とデータ例を示す。建物ID611は、仮想空間アンカーが所属する建物の建物ID401を示す。仮想空間アンカーID612は、仮想空間アンカーを一意に識別するIDである。位置613と向き614は、仮想空間アンカーの位置と向きをそれぞれ、仮想空間座標系にしたがって記述している。
【0025】
図5は、空間情報DB620の構成とデータ例を示す。建物は、例えばビルの一室などのように、部分空間の集合によって構成されている。空間ID621はその空間を一意に識別するIDである。特徴点数622は、空間が保持している特徴点の数を表す。特徴点ID623は、特徴点を一意に識別する。特徴点はXYXの3つの座標値から構成される。座標624はその座標値を示す。座標624は空間内の位置を現実空間座標系にしたがって記述している。3次元形状や色彩において特徴的な位置が特徴点として保存される。点群やクラウドポイントと呼ばれることもある。
【0026】
図6は、現実空間アンカーDB630の構成とデータ例を示す。空間ID631は空間ID621を指す。現実空間アンカーID632は、空間の中で現実空間アンカーを一意に識別する。位置633と向き634は、現実空間アンカーの位置と向きをそれぞれ、現実空間座標系にしたがって記述している。
【0027】
図7は、仮想オブジェクトを仮想空間内に設置する作業を実施するためのユーザインターフェースの例である。仮想オブジェクトを仮想空間内に設置しようとするユーザは、仮想空間管理サーバ200が提供する図7のようなユーザインターフェース(以下GUI:Graphical User Interfaceと呼ぶ)上で、以下の手順によって仮想オブジェクトを設置する。
【0028】
ユーザが図7のGUIを起動すると、建物形状管理部240は建物形状DB400から建物の形状を読み出し、GUI上に描画する。建物ID401は、例えばGUIを起動するときにユーザが指定する。仮想空間701は、その建物の3次元形状を描画したものである。図7の例においては、壁間の境界線703、台座704が、仮想空間701内に描画されている。ユーザから見た視点は自由に変更できる。図7上段は仮想空間701の斜視ビューを示し、図7下段は上面ビューを示す。
【0029】
ユーザは仮想空間701内に仮想空間アンカー706を設置する。仮想空間アンカー706は、後述する現実空間アンカーに対応させることを想定したものである。仮想空間アンカー706は、仮想空間701内において仮想オブジェクト705の相対位置を定義するときの基準位置としての役割を有する。
【0030】
ユーザはGUI上で仮想空間アンカー706を操作することにより、仮想空間アンカー706の位置と向きを指定する。これにより位置欄709と向き欄710がその位置と向きにしたがって更新される。位置欄709と向き欄710に対して数値を直接入力してもよい。この場合はその入力値にしたがって仮想空間アンカー706の位置や向きがGUI上で更新される。ユーザはさらに、仮想空間アンカー706のIDをID欄708に対して入力する。仮想空間アンカー管理部260は、仮想空間アンカー706のID、位置、向きを仮想空間アンカーDB610へ格納する。この座標と向きは、仮想空間701の座標系によって表される。
【0031】
仮想空間701内に設置済の仮想空間が存在する場合、仮想空間アンカー管理部260は仮想空間アンカーDB610から当該建物内に存在する仮想空間アンカーのリストを取得する。具体的には、当該建物の建物ID401(建物ID611)を用いて仮想空間アンカーDB610を照会すればよい。建物形状管理部240は仮想空間アンカーリスト707内にそのリストを表示する。図7においてはAnchor0027の位置と向きを設定している様子を示した。
【0032】
ユーザはGUI上で仮想オブジェクト705を配置する。オブジェクト管理部250は仮想オブジェクト705の座標と向きをオブジェクトDB500へ格納する。この座標と向きは、仮想空間701の座標系によって表される。したがって仮想オブジェクト705の座標系は仮想空間アンカー706の座標系と一致しており、仮想空間アンカー706の位置を基準として仮想オブジェクト705の位置が相対的に記録されることとなる。
【0033】
仮想空間アンカー706は向きを有するので、その向きを表現することができる形状のオブジェクトによって表示することが望ましい。図7においては、3軸方向を示唆する形状を有する仮想空間アンカー706の例を示した。後述する現実空間アンカーの座標と向きを指定する際に用いる位置指定アンカーも同様である。
【0034】
図8は、現実空間801内に設置した現実空間アンカー806を現実空間アンカーDB630へ登録する手順を説明する図である。仮想空間701は、現実空間801を模擬したものである。現実空間801内には、境界線703に対応する境界線803、台座704に対応する台座804が設置されている。現実空間アンカー806は台座804上に設置されている(図8のユーザが設置してもよい)。
【0035】
現実空間アンカー806は、例えば画像マーカなどの形態で構成することができる。画像マーカが印刷された紙を台座804上に置いて位置や向きを調整することにより、現実空間アンカー806を設置することができる。この時点においては、現実空間アンカー806を単に現実空間801内に設置したに過ぎないので、現実空間アンカー806の座標は現実空間アンカーDB630へ登録されていない。ユーザは以下の手順によりこれを登録する。
【0036】
ユーザはAR表示端末100を装着して現実空間アンカー806の近傍に移動する。ユーザの視界には、AR表示端末100を起動した時点の位置を原点とするAR表示端末100内部の座標系にしたがって、仮想空間701内の仮想オブジェクトが表示される(図8においては仮想オブジェクトはない)。ユーザは現実空間アンカー806を設置した位置(ここでは台座804の上面)が視界内に表示されるように移動する。視界画像811はそのときAR表示端末100上で表示されている画像を示す。ARなので実際の現実空間アンカー806も視界内に映っている。
【0037】
ユーザは視界画像811内において、GUI813を起動することにより、位置指定アンカー806’を設置する。位置指定アンカー806’は、現実空間アンカー806を設置した位置を仮想空間701内において指定するために用いるユーザインターフェースである。ユーザはAR表示端末100上の適当なコマンド(例:ジェスチャー)を用いて位置指定アンカー806’を操作することにより、現実空間アンカー806の位置および向きと同じ位置および向きとなるように、位置指定アンカー806’の位置と向きを調整する。ここでは台座804の上面上において、現実空間アンカー806の位置および向きと同じ位置および向きを、位置指定アンカー806’に対して指定する。
【0038】
ユーザは現実空間アンカー806のIDを入力する。このIDは仮想空間アンカー706のIDと同じ値とする必要がある。ユーザが保存ボタン813をクリックすると、AR表示端末100は位置指定アンカー806’の位置と向きを、IDとともに現実空間アンカー管理サーバ300に対して送信する。現実空間アンカー管理部340は、そのIDと位置と向きを現実空間アンカーDB630へ格納する。このときの位置と向きの座標系は、AR表示端末100の内部座標系によるものである。空間IDについては、GUI上で入力してもよいし、AR表示端末100の個体ごとに固有の空間IDをあらかじめ割り当てておいてもよい。
【0039】
現実空間アンカー管理部340はさらに、現実空間アンカー806の位置と座標を、空間情報DB620の座標系における値へ変換する(あらかじめ変換してから現実空間アンカーDB630へ格納してもよい)。まずAR表示端末100の特徴点取得部110は、AR表示端末100の周辺に存在する特徴点の座標を取得し、現実空間アンカー保存部132はその座標を現実空間アンカー管理サーバ300に対して送信する。現実空間アンカー管理部340は、現在の空間IDに所属する特徴点の座標を、空間情報DB620から取得する。現実空間アンカー管理部340は、これらの特徴点群の座標を比較することにより、AR表示端末100の内部座標系と空間情報DB620の座標系との間の差分を計算する。現実空間アンカー管理部340は、その差分を、現実空間アンカーの座標に対して適用する。向きについても同様に適用する。これにより現実空間アンカーDB630は、空間情報DB620と同じ座標系にしたがって、現実空間アンカーの位置と向きを格納することになる。この手順は後述する図9においてAR表示端末100が仮想オブジェクトを表示する手順と同様のものである。
【0040】
図9は、AR表示端末100が仮想オブジェクト705を表示する手順を説明するフローチャートである。仮想オブジェクト705、仮想空間アンカー706、現実空間アンカー806、位置指定アンカー806’は、図7図8の手順によって設置済であるものとする。以下図9の各ステップを説明する。
【0041】
図9:ステップS901)
オブジェクト・仮想空間アンカー描画部131は、仮想空間管理サーバ200に対して、建物IDをキーとして、当該建物に所属する仮想オブジェクトと仮想空間アンカーそれぞれの座標と向きを照会する。オブジェクト管理部250と仮想空間アンカー管理部260は、建物形状DB400とオブジェクトDB500からこれらを取得して返信する。オブジェクト・仮想空間アンカー描画部131は、これらをAR表示端末100の表示画面上に描画する。
【0042】
図9:ステップS901:補足その1)
建物IDは、ユーザがAR表示端末100のユーザインターフェース上で指定してもよいし、AR表示端末100の個体ごとに固有の建物IDをあらかじめ割り当てておいてもよい。
【0043】
図9:ステップS901:補足その2)
オブジェクト・仮想空間アンカー描画部131は、AR表示端末100が起動したときの座標を原点として、仮想オブジェクトと仮想空間アンカーを描画する。AR表示端末100の座標系は、建物形状DB400の座標系およびオブジェクトDB500の座標系とは異なる(原点が異なる)ので、本ステップにおいて仮想オブジェクトと仮想空間アンカーは正しくない位置と向きで描画される。
【0044】
図9:ステップS902)
特徴点取得部110は、AR表示端末100周辺の画像を撮像し、その特徴点を取得する。例えば矩形の頂点などは特徴点として用いることができる。現実空間アンカー保存部132は、その特徴点を現実空間アンカー管理サーバ300に対して送信する。現実空間アンカー管理部340は、その特徴点を用いて空間情報DB620を照会することにより、その特徴点に対応する空間IDを取得する。現実空間アンカー管理部340は、その空間IDに対応する現実空間アンカーの座標および向きのリストを現実空間アンカーDB630から取得し、現実空間アンカー保存部132に対して返信する。
【0045】
図9:ステップS902:補足)
現実空間アンカーDB630は、図8で説明した手順により記録した座標系(すなわち空間座標DB111の座標系)によって、現実空間アンカーの座標を記述している。現実空間アンカー管理部340はその座標を、本ステップにおけるAR表示端末100の内部座標系における座標に変換した上で、現実空間アンカー保存部132に対して返信する。変換手順については後述する。したがって本ステップにおいて現実空間アンカー保存部132が取得する現実空間アンカーの座標は、本フローチャートにおけるAR表示端末100の座標系と一致している。
【0046】
図9:ステップS903)
端末位置取得部120は、AR表示端末100の現在位置を取得する。具体的には、AR表示端末100が起動したときの位置を原点として、ジャイロセンサなどの検出結果に基づき、その原点を基準とする現在位置を取得すればよい。
【0047】
図9:ステップS904)
現実空間アンカー描画部133は、S902において取得した現実空間アンカーのなかからいずれかを、仮想オブジェクトに対する基準位置として選択する。典型的には、空間IDが指定する1つの空間内に1つの現実空間アンカーを設置するので、AR表示端末100の現在位置に対して最も近い現実空間アンカーを選択するが、これに限るものではない。
【0048】
図9:ステップS905)
現実空間アンカー描画部133は、S904において選択した現実空間アンカーと対応する仮想空間アンカーを特定する。具体的には、現実空間アンカーのIDと一致するIDを有する仮想空間アンカーを特定すればよい。
【0049】
図9:ステップS906)
オブジェクト位置補正部134は、S904において選択した現実空間アンカーの位置と、S905において特定した仮想空間アンカーの位置との間の差分を計算する。現実空間アンカーの位置は、空間情報DB620の座標系にしたがって記述されている。仮想空間アンカーの位置は、図7における仮想空間701の座標系にしたがって記述されている。したがって両者の原点は異なるので、同じIDのアンカーであっても、現実空間アンカーの座標値と仮想空間アンカーの座標値は互いに異なる。本ステップはこの差分を計算するものである。アンカー間の向きの差分についても同様に計算する。
【0050】
図9:ステップS906:補足)
現実空間アンカーDB630は、現実空間アンカーの位置を、空間情報DB620の座標系にしたがって記述している。ただしその位置は、S902において、AR表示端末100の現在の座標系と一致するように変換される。したがって本ステップにおける差分は、AR表示端末100の現在の座標系と、仮想空間701の座標系との間の差分を計算することと等価である。
【0051】
図9:ステップS907)
オブジェクト位置補正部134は、S906において計算した差分を、S901の仮想空間アンカーと仮想オブジェクトに対して反映する。これにより仮想オブジェクトは、AR表示端末100上で、正しい位置に表示されることとなる。
【0052】
図9:ステップS908~S909)
AR表示端末100をOFFする場合(S908:Y)は本フローチャートを終了する。AR表示端末100を使用継続する場合(S908:N)は、AR表示端末100の位置を更新し(S909)、S903に戻って同様の処理を繰り返す。
【0053】
図10は、S902における現実空間アンカー管理部340の動作手順を説明するフローチャートである。以下図10の各ステップを説明する。
【0054】
図10:ステップS1001)
空間情報管理部330は、現実空間アンカー保存部132から受け取った特徴点群を有する空間を特定する。具体的には、受け取った特徴点群の座標を、空間情報DB620の座標と比較することにより、受け取った特徴点群を有する空間IDを特定する。ただし、現実空間アンカー保存部132が送信する特徴点群の座標はAR表示端末100の内部座標系によって記述されており、空間情報DB620の特徴点の座標は現実空間の座標系によって記述されている。したがって本ステップにおいては、座標原点が互いに異なることを前提として、両特徴点を比較する必要がある。例えばAR表示端末100から受け取った特徴点群を移動・回転させながら、空間情報DB620内の特徴点群のなかから一致するものを探索すればよい。
【0055】
図10:ステップS1002)
現実空間アンカー管理部340は、S1001において特定した空間IDを用いて現実空間アンカーDB630を照会することにより、その空間内の現実空間アンカーのリストを取得する。
【0056】
図10:ステップS1003)
現実空間アンカー管理部340は、現実空間アンカー保存部132から受け取った特徴点群の座標と、S1001において特定した特徴点群の座標との間の差分を計算する。これにより、両特徴点群間の位置の差分および向きの差分を得ることができる。現実空間アンカー管理部340は、その差分を、S1002において取得した現実空間アンカーの位置と向きそれぞれに対して適用する。この補正処理により、現実空間アンカーの座標は、AR表示端末100の内部座標系によって記述されることとなる。
【0057】
図10:ステップS1004)
現実空間アンカー管理部340は、S1003において補正した現実空間アンカーのID、座標、向きを現実空間アンカー保存部132に対して返信する。これにより、AR表示端末100の周辺に存在する現実空間アンカーの座標と向きが、AR表示端末100の内部座標系によって得られることになる。
【0058】
図11は、AR表示端末100を用いて仮想オブジェクト1105を表示する様子を示す。ユーザはAR表示端末100を装着して現実空間801を訪問する。AR表示端末100は図9で説明したフローチャートを実施する。ユーザが台座804の上方を見ると、視界画像1101内に仮想オブジェクト705が表示される。
【0059】
以上説明したように、本開示に係る仮想空間システム1によれば、仮想空間アンカーに対応する現実空間アンカーの座標をあらかじめ登録しておくことにより、仮想オブジェクトを仮想空間上で設置すればその仮想オブジェクトを全てのAR表示端末100が表示することができる。したがって、AR表示端末100ごとに仮想オブジェクトの位置を端末内部に保存する必要はないので、仮想オブジェクトを設置する作業負担を軽減することができる。
【0060】
<本開示の変形例について>
以上の実施形態において、AR表示端末100、仮想空間管理サーバ200、現実空間アンカー管理サーバ300がそれぞれ備える機能部は、これらの機能を実装した回路デバイスなどのハードウェアによって構成することもできるし、これらの機能を実装したソフトウェアをCPU(Central Processing Device)などの演算装置が実行することによって構成することもできる。各データベースは、レコードを記述したデータを記憶装置に格納することによって構成できる。
【0061】
図7図8の説明においては、先に仮想空間701内に仮想空間アンカー706を設置し、次に現実空間801内に現実空間アンカー806を設置する手順を説明したが、この順番は反対でもよい。この場合は、図8のGUI内において入力したIDと同じ値を、ID欄708に対して入力すればよい。
【0062】
現実空間アンカー管理サーバ300を構築するために用いることができる技術の1例としては、Azure Spatial Anchors、google cloud anchorsなどのサービスが挙げられる。その他同様の技術を用いてもよい。
【符号の説明】
【0063】
1:仮想空間システム
100:AR表示端末
200:仮想空間管理サーバ
300:現実空間アンカー管理サーバ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11