ゲームのウォールハック——壁の向こうにいる相手の位置が透けて見える機能——を現実世界で再現したARデモが、GitHub上に公開された。使うのは300ドルのMeta Ray-Banスマートグラスとスマートフォンのみだ。
このデモを作ったのはBilawal Sidhu氏(spatialintelligence.ai)で、AR空間測位SDK「MultiSet」を開発するMultiSet AIとの共同プロジェクトとして実装された。
この記事でわかること:
- Visual Positioning System(VPS)を使って複数デバイスが同じ物理空間を共有する仕組み
- 壁の向こうにいる相手を「骨格シルエット」で表示するロジック
- Meta Ray-BanグラスとiPhoneを組み合わせて動かす手順の概要
https://github.com/bilawalsidhu/see-through-walls
全員が同じ「共有マップ」で位置を合わせる
このデモを成立させているのは、Visual Positioning System(VPS)と呼ばれる技術だ。
VPSは、あらかじめ物理空間をスキャンして「共有マップ」を作成し、各デバイスがカメラ映像でそのマップを照合して自分の6自由度(6-DoF)の位置と向きを特定する仕組みだ。GPSが届かない屋内でも5cm以下の精度で位置を確定できる。
各デバイスがマップ上で位置を把握した後は、それをWi-Fi経由で秒間約20回、他のデバイスへ送信し続ける。インターネット接続は必要なく、同一Wi-Fiネットワーク上のローカル通信で完結する。
MultiSet VPSは、LiDAR・E57・テクスチャメッシュなど既存のスキャンデータをそのまま使える。専用スキャナを新たに購入する必要はない。
壁越しシルエットはレイキャストで判定する
壁の向こうにいる相手を骨格シルエットとして表示するロジックは、コリジョンメッシュとレイキャストの組み合わせで実現されている。
マップのダウンロード時に、空間の3Dジオメトリ(コリジョンメッシュ)も同時に取得する。カメラから相手アバターに向けてレイキャストを飛ばし、メッシュに当たった場合はアバターをスケルトン表示に切り替える。コリジョンメッシュはUnityのCollisionMeshレイヤーに割り当てられており、実際の描画からは非表示だ。壁は見えないのに、「壁越しに」シルエットだけが浮かび上がる構造になっている。
2種類の接続フロー
デモはスマートフォン同士と、iPhone+Ray-Banグラスの2つの構成に対応している。
スマートフォン同士の場合、iOSとAndroidが混在しても動作する。UnityのNetcode over UTPを使ったローカルネットワーク接続で、片方がホスト、もう片方がクライアントになる。クライアントはホストのIPアドレスを入力して接続する。
iPhone+Meta Ray-Banグラスの構成では役割が固定されている。iPhoneがUnityホストとして動作し、グラスとペアリングした別のiPhoneがコンパニオンアプリ(MultisetRayBanTracking)を実行する。コンパニオンアプリはグラスのカメラ映像をリアルタイムで受け取り、iPhoneでマップに対してローカライズを行い、得られたポーズをUnityホストへ転送する。グラス自体でUnityを動かすわけではない。グラスのポーズは秒間20回送信され、バックグラウンドで約1秒に1回の再ローカライズが走る。アバターの位置は継続的に更新される。
動かすための前提条件
試すには、まずMultiSetのダッシュボードでアカウントを作成し、clientIdとclientSecretを取得する(無料プランで試作できる)。次に、対象の物理空間をスキャンしてMultiSetへアップロードし、マップコードを得る。iPhoneのLiDARスキャンで問題ない。
Unityは6000.0.36f1以降(最低でも2022.3.36)が必要だ。Package Managerから以下のURLでMultiSet Unity SDKをインストールする。
https://github.com/MultiSet-AI/multiset-unity-sdk.git
Ray-Banグラスのフローを使う場合は追加手順がある。Meta AIアプリでグラスをペアリングした後、Developer Modeを有効にしておく必要がある。コンパニオンアプリはXcode(iOS 17以降)でビルドが必要なため、Mac環境が前提になる。
手軽な機材で空間共有ARが動く意味
現時点ではセットアップにある程度の技術的なハードルがある。空間スキャンとMultiSetのアカウント管理が前提になる。
一方で、VPS+骨格シルエットのコアロジックはコンパクトに実装されており、Unity開発者であれば読み解ける構造だ。物流倉庫・工場・建設現場での作業者間の位置共有、あるいはマルチプレイヤーARゲームの基盤として参照できる実装例となっている。Meta Ray-Banクラスの民生品で「位置を共有する空間体験」が成立することを、実際に動くコードで示している点に価値がある。