はじめに
こんにちは。CCCM テックラボ所属の高橋です。
AR(拡張現実)は現実世界に仮想的なオブジェクトを重ね合わせる技術です。 ゲームやスマホアプリを通じて、最近は皆さんの身近でもしばしば見かけるようになったと思います。
ARアプリケーションを開発するツールとして有名な物のひとつがUnityです。 そのUnityで使うことができるライブラリに、Pokemon GOで有名なNiantic社が提供しているNiantic Lightshipというパッケージがあります。 今回はNiantic Lightshipを用いて3DデータのAR表示を行うアプリケーションを作ってみました。
Niantic Lightship
Niantic LightshipはUnity標準パッケージのAR Foundationでも提供されている基本的なAR機能を備える他、 追加でマルチプレーヤーシステムも備えるライブラリです。 2023年10月現在はマルチプレーヤーシステム機能に従量課金がありますが、他の機能は無償で提供されています。 また、Niantic LightshipはLiDARセンサーの無いデバイスでも動作します。 今回はNiantic LishtshipのARライブラリとしての使用感を調査するため、本ライブラリを用いて簡単なアプリを作成してみました。
環境
実機 iPad pro 11インチ 第2世代
Unity 2022.3.10f1
Niantic Lightship 2.5.2
実装
Niantic Lightshipは"平面検出"と"HitTest"の機能を持っています。 HitTestを用いるとディスプレイ上の点と検出した平面との交点を取得できます。 こちらを組み合わせることで、3Dデータをユーザーが指定した場所に配置することが可能です。
ところで、Niantic Lightshipが推定した外部環境は、実環境の値とどの程度の誤差があるのでしょうか。 特に縮尺についてのざっくりの精度が知りたかったので、以下の画像のように巻尺で計測した値と、HitTestにて取得した2点をUnityのVector3.Distance関数で計測した距離を比較してみました。
この画像では、実寸60cmの距離を63cmと推定しています。屋内かつ床などの平坦な環境では、この程度の誤差に収まるようです。
このあたりは、計測点の奥行きや計測距離、デバイス、環境の違いでかなりぶれが出そうなので、今後も調査していきたいと思います。
尚、Niantic Lightshipはシミュレーション機能が充実しており、Unityエディタ内でARアプリのテストをすることができます。実機ビルドの不要な簡単な機能開発ではこちらがとても便利です。 下の画像の背景は実際にNiantic Lightshipの提供する屋内のモデルになっています。
ここで、床に見えている白いメッシュが検知している平面を示しています。シミュレーション環境ではありますが、床の平面を精度良く検知しているように見えますね。
作成したアプリでは、3Dデータを配置したい点を赤い矢印オブジェクトで指し示すように作ってみました。
そして、HitTestにて取得した位置をUnityのInstantiate関数に渡すことで、下記のように平面に接しているような位置・角度で3Dデータを表示することができます。
おわりに
今回はNiantic Lightshipを用いた簡単なアプリケーションを作成してみました。
体感ですが、Unityが標準で提供しているAR Foundationと比べて比較的シンプルなセットアップで動作するアプリケーションが作成できました。精度もかなり良さそうです。
今回は実機テストとしてiPad proを用いましたが、LiDAR無しでも動作するライブラリなので、エンターテイメントやマーケティング領域での応用可能性を感じます。みなさんもぜひ触ってみてください。