0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XREAL Air 2 Ultra:Plane Detectionを使ってみる

0
Posted at

XREAL Air 2 Ultra × Unity 6 で 平面検知(Plane Detection)を実装する

はじめに

AR体験において、現実の床やテーブルの上にオブジェクトを配置するために欠かせないのが「Plane Detection(平面検知)」です。
今回は XREAL Air 2 Ultra のセンサーを用いて、周囲の水平面や垂直面をリアルタイムにスキャンし、可視化する手順をまとめます。

動作確認環境

  • Unity: 6000.0.70f1
  • XREAL SDK: 3.1.0
  • AR Foundation: 6.0.6
    • XR Interaction Toolkit: 3.0.10
  • Device: XREAL Air 2 Ultra + Beam Pro

1. 機能概要

周囲の環境をスキャンし、検知された平面をメッシュとして表示することで、空間認識の状況をフィードバックします。

機能 内容
Plane Detection 水平面(床・机)および垂直面(壁)をリアルタイムで検知します
Plane Visualization 検知された平面を半透明のメッシュとして可視化します

参照記事:XREAL SDK:Plane Detection

2. シーン構築の手順

事前準備

  1. Package Manager の設定:
    • AR Foundation を Unity Registry からインストールします。
    • XR Interaction Toolkit をインストールし、Samples タブから Starter Assets をインポートします。
  2. XR Origin の配置:
    • Assets/Samples/XR Interaction Toolkit/3.0.1/Starter Assets/Prefabs/XR Origin (XR Rig).prefab を Hierarchy に配置します。
  3. AR Session の追加:
    • Hierarchy で右クリックし、XR > AR Session を追加して AR のライフサイクルを管理します。
  4. プラグインの有効化:
    • Edit > Project Settings > XR Plug-in ManagementXREAL XR plug-in を有効にします。

平面検知の設定

  1. XR Origin オブジェクトを選択し、AR Plane Manager をアタッチします
  2. AR Plane ManagerPlane Prefab スロットに、可視化用のプレハブ(例:AR Feathered Plane)をセットします
  3. XR Origin に、検知を制御するためのスクリプト(Assets/_Project/Scripts/PlaneDetection.cs)をアタッチします
    

3. スクリプトの実装

検知された平面の情報を取得するためのスクリプトです。

PlaneDetection.cs

このスクリプトを XR Origin にアタッチして使用します。

using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;

public class PlaneDetection : MonoBehaviour
{
    private ARPlaneManager arPlaneManager;

    void Start()
    {
        // 同一オブジェクト内の ARPlaneManager を取得
        arPlaneManager = GetComponent<ARPlaneManager>();
    }

    void Update()
    {
        // 検知されているすべての平面をループで確認
        foreach (ARPlane plane in arPlaneManager.trackables)
        {
            // 検知した平面のIDをログに出力
            Debug.Log($"Detected plane: {plane.trackableId}");
        }
    }
}

4. ビルドとデプロイ

  1. Build Settings: Platform を Android に変更し、Build and Run を実行します
  2. 接続: Beam Pro を PC に接続してインストールします
  3. 起動: インストール後、PC から Beam Pro を抜き、XREAL Air 2 Ultra を接続します
  4. アプリ起動: Beam Pro 内の MyGlasses アプリから作成したアプリを起動し、権限(他のアプリの上に表示)を許可します

4. 実際に使ってみた感想

周囲を見渡すと、検知された平面に合わせて半透明のメッシュが出現します。実際に運用してみた率直な所感は以下の通りです。

精度と形状の再現性

平面の検知自体はスムーズに行われますが、精度に関しては改善の余地があると感じました。
検知されたメッシュが現実のテーブルより一回り大きくなってしまったり、実際の形状とは少し異なる形で生成されたりすることがあります。広い空間であればまた結果が異なるかもしれませんが、現時点では「おおよその位置」を把握する用途がメインになりそうです。

床の検知について

今回の検証では、机や壁などのオブジェクトは認識されましたが、床の検知が難しい場面がありました。センサーの認識範囲や環境の明るさ、床のテクスチャ(模様の有無)にも左右される部分かもしれません。

センサーの限界と工夫

やはりデバイスのセンサーによる平面認識には限界を感じる部分もあります。
カチッとした正確な配置を求めるよりも、検知された平面をガイドとして使いつつ、ユーザーが微調整できるようなUIを組み合わせるのが、今のSDK(3.1.0)でのベストな開発スタイルかもしれません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?