見出し画像

Magic Leap2 Plane detection Foundation(平面検出 基礎) Unity 編

Magic Leap2 の Plane Detection の シンプルな構築手順を説明します。検出した平面の種類を判定など、ロジックの説明までは行わずシンプルな構成で実現する方法について説明します。

動作検証した環境

PC: Windows 10 PC
Unity Editor version
: 2020.2.0b42768
MLSDK version: 0.53.2
The Lab 2.0 version: 2.0.2.202208200142
Zero Iteration Module: 3.3.9.292297290010

今回は、The Lab 2.0 の Zero Iteration を使い、PC上で動作検証を行うため、事前にPackage Manager から Zero Iteration (ZI) Lab Moduleをのインストールが必要です。(Zero Iteration Frontend in Unity(ZIFUnity)は不要です。)

Magic Leap2 デバイスでなく、The Lab 2.0 の Zero Iterationを動作確認を実施。(私の環境ではZIFUnityはエラーが発生したため未検証。2022年8月28日現在、Magic Leap の方で調査していただいてます。)

MEMO:
ZIFUnityをインストールしている状態で、The Lab 2.0 の Zero Iterationを実行してエラーが発生した場合、ZIFUnityをPackage Managerから削除することで回避できる可能性があります。

Magic Leap2 の Unity 開発環境構築については以下をご覧ください。

1. シーンからカメラを削除

2. XR Rig を シーンに追加

Packages > Magic Leap SDK > Runtime > Tools > Prefabs にある XR Rig Prefab

XR Rig

Magic Leap 用に 設定された Main Camera、XR Controller (Action-based)コンポーネント群(ControllerとHand Tracking)、Unity AR Foundation AR Sessionなどが含まれたコンポーネントになります。

3. AR Plane Manager を追加

XR Rig の 子コンポーネント Session Origin に AR Plane Manager を追加します。

Magic Leap 1 の 平面検出では、独自のAPIを使用していましたが、Magic Leap2 では、Unity AR Foundationが提供している平面検出を使用します。

4. Plane Prefab の設定

AR Plane ManagerPlane PrefabAR Default Planeを設定します。

5. The Lab 2.0 Zero Iteration を起動

The Lab 2.0 の Zero Iterationを起動します。

6. Unity Editorで再生

Zero Iteration 上の Virtual Room の Office 内にある壁や床が平面として検出され、AR Default Plane が生成されます。

エラーについて

InvalidOperationException: Cannot Add when Length (10) is already at (10)
UnityEngine.XR.MagicLeap.NativeFixedList`1[T].Add (T item) (at Library/PackageCache/com.unity.xr.magicleap@7.0.0-exp.3/Runtime/NativeFixedList.cs:70)
UnityEngine.XR.MagicLeap.PlanesSubsystem+ConvexHullGenerator.Giftwrap (Unity.Collections.NativeArray`1[T] points, Unity.Collections.Allocator allocator, Unity.Collections.NativeArray`1[UnityEngine.Vector2]& convexHullOut) (at C:/Users/Sadao Tokuyama/MagicLeap/tools/unity/v0.53.2/com.magicleap.unitysdk/Runtime/Subsystems/Planes/ConvexHullGenerator.cs:186)
UnityEngine.XR.MagicLeap.PlanesSubsystem+MagicLeapProvider.GetBoundary (UnityEngine.XR.ARSubsystems.TrackableId trackableId, Unity.Collections.Allocator allocator, Unity.Collections.NativeArray`1[UnityEngine.Vector2]& convexHullOut) (at C:/Users/Sadao Tokuyama/MagicLeap/tools/unity/v0.53.2/com.magicleap.unitysdk/Runtime/Subsystems/Planes/PlanesSubsystem.cs:271)
UnityEngine.XR.ARSubsystems.XRPlaneSubsystem.GetBoundary (UnityEngine.XR.ARSubsystems.TrackableId trackableId, Unity.Collections.Allocator allocator, Unity.Collections.NativeArray`1[UnityEngine.Vector2]& boundary) (at Library/PackageCache/com.unity.xr.arfoundation@5.0.0-pre.12/Runtime/ARSubsystems/PlaneTracking/XRPlaneSubsystem.cs:74)
UnityEngine.XR.ARFoundation.ARPlane.UpdateBoundary (UnityEngine.XR.ARSubsystems.XRPlaneSubsystem subsystem) (at Library/PackageCache/com.unity.xr.arfoundation@5.0.0-pre.12/Runtime/ARFoundation/ARPlane.cs:133)
UnityEngine.XR.ARFoundation.ARPlaneManager.OnAfterSetSessionRelativeData (UnityEngine.XR.ARFoundation.ARPlane plane, UnityEngine.XR.ARSubsystems.BoundedPlane sessionRelativeData) (at Library/PackageCache/com.unity.xr.arfoundation@5.0.0-pre.12/Runtime/ARFoundation/ARPlaneManager.cs:252)
UnityEngine.XR.ARFoundation.ARTrackableManager`5[TSubsystem,TSubsystemDescriptor,TProvider,TSessionRelativeData,TTrackable].CreateOrUpdateTrackable (TSessionRelativeData sessionRelativeData) (at Library/PackageCache/com.unity.xr.arfoundation@5.0.0-pre.12/Runtime/ARFoundation/ARTrackableManager.cs:443)
UnityEngine.XR.ARFoundation.ARTrackableManager`5[TSubsystem,TSubsystemDescriptor,TProvider,TSessionRelativeData,TTrackable].Update () (at Library/PackageCache/com.unity.xr.arfoundation@5.0.0-pre.12/Runtime/ARFoundation/ARTrackableManager.cs:195)

Zero Iteration上でカメラの向きを変えたり、移動を行うとエラーが発生します。Magic Leap Examples にある Planesシーンでも同様にエラーが発生しているため、Magic Leap2 Developer Portal 内の Forum にて問い合わせ中です。詳細判明次第、当記事をアップデートしたいと思います。https://forum.magicleap.cloud/t/running-example-in-planes-with-zi-causes-an-error/704

Magic Leap 2 関連記事

OnePlanet XR

OnePlanet XR はAR/MR技術に専門特化したコンサルティングサービスです。豊富な実績を元に、AR/MR技術を活用した新たな事業の立ち上げ支援や、社内業務のデジタル化/DX推進など、貴社の必要とするイノベーションを実現いたします。
ご相談から受け付けております。ご興味ございましたら弊社までお問い合わせください。(以下にアクセスするとお問い合わせページに遷移されます。)

https://1planet.co.jp/xrconsulting.html

OnePlanet Tech Magazine

Magic Leap 1、Magic Leap2 、スマホAR(Niantic Lightship ARDKやWebAR)といったAR技術全般をブログマガジンを連載しています。