はじめに

VPS(Visual Positioning Service/System)と呼ばれる技術をご存じでしょうか。
簡潔にまとめると、 カメラ映像とスキャン済みの空間情報の照合により、仮想と現実の空間を位置合わせするAR技術 です。

VPSは、用意された、もしくは自前で用意したスキャナアプリで空間情報を事前にスキャンする必要があります。
また、常時位置合わせの手法がVPSごとに異なります。

今回4つのVPSを実際に動かしてみて、4つの項目で比較しました。

1. スキャンのやり方
2. ARコンテンツの作り方
3. 位置合わせし続けるには?
4. 所感


Azure Spatial Anchor

Azure Spatial Anchorについては既に過去の記事にて検証結果をまとめています。

【参考リンク】:Azure Spatial Anchorsを触ってみた
【参考リンク】:Azure Spatial Anchors が精度がどれくらいか検証してみた

弊社で開発したCFAにおいてもAzure Spatial Anchorは採用されています。

1. スキャンのやり方

Azure Spatial Anchorは空間アンカーと呼ばれるものを空間に登録できます。
空間アンカーの登録に求められる空間の範囲の上限は、その場から数メートル先、360度の範囲ほどです。
ASAに関してはスキャンアプリがあるわけではなく、
空間アンカーを配置するための実装を自前で行う必要があります。

2. ARコンテンツの作り方

Unityエディター上にて、”空間アンカーの(0,0,0)に設置するオブジェクト” を予めPrefabで用意しておきます。
その配下にARオブジェクトを配置することで、アンカーの相対位置に ARオブジェクトを配置することが可能です。

下記画像が実際の例です。
読み取った空間アンカーの場所に先述のPrefab(MainAnchor)が配置されるように実装することで、
その配下のCubeが空間アンカーの上部に出現します。

Unityエディターで以上の作業を終えたら、
実機にデプロイして空間アンカーの探索を行い、ARオブジェクトの位置を確認します。
(アンカーの探索には空間をカメラで見渡す必要があります。)
気になるところがあれば再びUnityエディターで調整する… という流れです。

3. 位置合わせし続けるには?

ある程度の自己位置推定は常に行われています。
そのため数メートル程度の移動では空間アンカーがズレることはほとんどないです。

空間アンカーがズレると、その配下に配置したARオブジェクトも当然ズレます。

よって、ARオブジェクトが想定の位置から大きく外れてしまった場合は、
空間アンカーの再探索を行う必要があります。
ユーザには「空間アンカーとして登録した空間」を見回す行為を強いることになります。

すなわち、Azure Spatial Anchorは空間アンカー周辺の数メートルの空間より外へ移動することを考慮した場合、
正確に位置合わせをし続けることは難しいです。

4. 所感

1つのアンカーに対して登録する空間の範囲はさほど広くないため、広域の対応にはやや難があります。

一方でMicrosoftが提供しているサービスであるのでHoloLens2に対応しています。
モバイルで使用する場合よりも自己位置推定をもう少し広い範囲で維持できるので、
上記の弱点は幾らかは緩和できそうです。


Vuforia Area Target

Vuforia Area Targetはあらかじめスキャンした特徴点データを内包する3Dデータ(以後3Dデータ)を
アプリ内に置くことで、その 3Dデータと空間を比較し位置合わせ行うことができます。

1. スキャンのやり方

Vuforia Area Target は専用のアプリで空間のスキャンを行う必要があります。
(前提として、スキャンアプリはLiDER搭載端末でのみ動作します。)

スキャンと言っても、難しいものではありません。
ゆっくりと3D化したい空間に対して端末のカメラを向けながら歩くだけです。

事前にスキャンして作成できる1エリア当たりの3Dデータには上限があります
デバイスのメモリ上にデータを展開するので、ゆっくり歩いて5分程が現状では限界のようです。
とは言え、スキャンした複数の空間3Dデータを組み合わせて、範囲を広げることが可能です。

2. ARコンテンツの作り方

スキャンしたデータはUnityに持ち込むことが可能です。
実際にスキャン結果として出力された3Dデータが下記です。

Unity エディター上で、このオブジェクト(メッシュ)の配下にARオブジェクトを配置し、
実機にデプロイして空間を認識すれば、ARオブジェクトが任意の場所に出現します。

3. 位置合わせし続けるには?

ARオブジェクトが想定の位置から大きく外れてしまった場合は、
スキャンした空間をカメラに映すだけで再び位置合わせを行います。
開発者は明示的に位置合わせの処理を呼び出す必要はないです。
Vuforiaが提供する適切なコンポーネントをコンテンツ上に用意すれば内部で行ってくれます。

事前スキャンした空間をカメラに映した状態であれば正確な位置合わせをし続けることが可能です。

■所感

LiDERを利用しているだけあって、メッシュの精度が高いです。
裏を返せばLiDERを使用しているので遠景のメッシュ化には不向きです。
室内においては強力なVPSであると言えるでしょう。


Immersal

Immersalについても既に過去の記事にて検証結果をまとめています。

【参考リンク】:サンプルからひも解くImmersal
【参考リンク】:Immersal×PLATEAUで巨大AR

1. スキャンのやり方

Immersalは専用のアプリを用いて空間のマップ化を行います。
マップとは空間の写真を連番になるように撮影し、それらを点群情報に変換したものを指します。

マップの大きさによっては結構な枚数を撮影する必要があります。
加えて、マップの正確性が撮影環境、及び手法に強く依存します。
他のVPSと比較すると空間のデータ化に習練が必要です。

下記画像は上記画像のエリアをマップ化したものです。

このマップデータと同時にglb形式のメッシュも作成されています。

2. ARコンテンツの作り方

マップデータをUnity エディターで読み込むと、特徴点群を展開表示できます。
おおよその空間の形状をこれで把握もできるかもしれませんが、glb形式のメッシュをさらに重ねることで、
Unity エディター上でARオブジェクトを配置しやすくなります。

あとはこれまでのVPSと同様に、実機にデプロイして空間を認識すれば、
ARオブジェクトが任意の場所に出現します。

3. 位置合わせし続けるには?

Immersal の自己位置推定は AR Foundation に依存しています。
ですので、数メートル移動すればどうしても現実と仮想の空間がズレていきます。

Immersalはその対策として、指定された時間周期で位置合わせし続ける機能が実装されています。
カメラに映し出された空間がマップデータデータの一部分であれば、
ARオブジェクトの位置ズレは即座に修正されます。

4. 所感

1マップ当たりの撮影上限枚数が定められているものの、
マップを複数用意して繋げることもできるので、広域なARコンテンツを作成可能です。
実際に1,000,000m²(1000m四方)の街全域をマップ化した事例もあるので広域において強力なVPSであると言えるでしょう。


ARWAY

ARWAYはWeb上で動作するARコンテンツ開発ツールを併せ持つVPSです。
まだできることに制限は多いですが、非常に強力で要注目です。

1. スキャンのやり方

Immersal同様に専用アプリを用いて空間のマップ化を行います。
Immersalとの違いは写真を撮影するのではなくて、端末カメラを空間にかざすだけでマップの生成が可能です。
ただし、ARKit、ARCoreそれぞれのDepthAPIに対応した端末のみで正常に動作を保証するようです。

Vuforia Area Target や Immersal と違って視認用のメッシュは作られないようです。
生成されるのは特徴点の点群のみです。

2 .ARコンテンツの作り方

コンテンツの作りこみはWebStadioと呼ばれるブラウザ上で動作するツールで行います。
WebStadioには図面を持ち込むことができます。
当然、図面は自前で用意する必要がありますが、下記のように図面と点群の位置を合わせながら、
実際の空間をイメージしながら開発を進めることができます。

ツール上でARオブジェクトを配置していくのですが、
ガイドナビゲーション用のモデルがデフォルトで用意されています。
自前の3Dモデルなどもglb形式であればインポートできます。
アニメーション、パーティクルなどは現時点では利用できません。

あとはARWAYのSDKを導入したUnityプロジェクトを実機にデプロイします。
アプリを起動すると、WebStadioで編集したマップをダウンロードが始まります。
ダウンロード後は空間を認識すれば、ARオブジェクトが任意の場所に出現します。

ここまでの流れを図解したものが下記です。

【引用元】:https://docs.arway.app/#components

3. 位置合わせし続けるには?

自己位置推定の仕組みはImmersalと同じです。
ですので、数メートル移動すればどうしても現実と仮想の空間がズレていきます。
Immersalと違って位置合わせし続ける機能は用意されていないので、
空間をカメラに映した状態で明示的に位置合わせの処理を呼び出し続ければ(n秒ごとに呼び出すなど工夫すれば)、
正確な位置合わせをし続けることが可能です。

4. 所感

ARWAYにはAzure Spatial Anchorの機能を内包したSDKも存在しており、
その仕組みまではわかりませんが、位置合わせにおいて高い認識精度を実現しています。
広域での利用も可能なポテンシャルを秘めているので、
WebStadioの機能が拡充すればより強力なツールになるでしょう。


おわりに

今回は様々なVPSの検証結果を紹介しました。
新しい技術やサービスの誕生は、xRの領域においては日進月歩なので
今後も引き続きアンテナを張りつつ、スピーディーに調査・検証を行っていこうと思います。





ギャップロを運営しているアップフロンティア株式会社では、一緒に働いてくれる仲間を随時、募集しています。 興味がある!一緒に働いてみたい!という方は下記よりご応募お待ちしております。
採用情報をみる