Versions;
• Unity 2022.2.0b8
• Magic Leap SDK 0.53.3
Magic Leap XR Plugin 7.0.0-exp.3
• Vuforia Engine AR 10.10.2
• HMD OS; Build: B3E.220721.07-R.027_user (Internal device) - SDK Version 29
From our test the MagicLeap 2 Integration is not doing anything. It works fine in the editor through a webcam, and fine on HoloLens, but can't get any image recognition to work on the ML2 HMD.
What we've tried;
• The log doesn't give any errors or warnings - just that no pose was found;
Target status: vuforia_image_test-2 NO_POSE -- NOT_OBSERVED
DefaultObserverEventHandler:OnObserverStatusChanged(ObserverBehaviour, TargetStatus)
DefaultObserverEventHandler:Start()
• All permissions are given (including marker tracking and camera).
Although, even though permissions are given in the manifest and requested using MLPermissions.RequestPermission(), and then validated using MLPermissions.CheckPermission(), we can't get permissions for;
Pupil Size
World_Reconstruction
Write_External_Storage
Although those permissions should not be necessary for vuforia
• We've tried adding an intermediate scene that launches into the vuforia scene - no changes
• We've tried using delayed initialization
With manual initialization we're getting this error;
Error: The file '/data/app/com.Laerdal.VuforiaTest-dAaNa5tNMzB1-nQkQAWPGA==/base.apk/assets/bin/Data/level1' is corrupted! Remove it and launch unity again!
when using this script to start up vuforia;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using Vuforia;
public class CustomVuforiaStarter : MonoBehaviour
{
private void OnEnable()
{
Debug.Log("OnEnable!");
VuforiaApplication.Instance.OnVuforiaInitialized += OnVuforiaInitialized;
VuforiaApplication.Instance.OnVuforiaStarted += OnVuforiaStarted;
VuforiaApplication.Instance.OnVuforiaPaused += OnVuforiaPaused;
VuforiaApplication.Instance.OnVuforiaStopped += OnVuforiaStopped;
VuforiaApplication.Instance.OnVuforiaDeinitialized += OnVuforiaDeinitialized;
}
private void OnDisable()
{
VuforiaApplication.Instance.OnVuforiaInitialized -= OnVuforiaInitialized;
VuforiaApplication.Instance.OnVuforiaStarted -= OnVuforiaStarted;
VuforiaApplication.Instance.OnVuforiaPaused -= OnVuforiaPaused;
VuforiaApplication.Instance.OnVuforiaStopped -= OnVuforiaStopped;
VuforiaApplication.Instance.OnVuforiaDeinitialized -= OnVuforiaDeinitialized;
}
private void OnVuforiaDeinitialized()
{
Debug.Log("[Vuforia] Vuforia Deinitialized!", this);
}
private void OnVuforiaPaused(bool obj)
{
Debug.Log("[Vuforia] Vuforia Paused!", this);
}
private void OnVuforiaStopped()
{
Debug.Log("[Vuforia] Vuforia Stopped!", this);
}
private void OnVuforiaStarted()
{
Debug.Log("[Vuforia] Vuforia Started!", this);
}
private void OnVuforiaInitialized(VuforiaInitError obj)
{
if(obj != VuforiaInitError.NONE)
{
Debug.LogError("Error initialing! \n+" +
"Error; \n" +
obj);
return;
}
Debug.Log("[Vuforia] Initialized!", this);
}
private async void Start()
{
Debug.Log("Start!");
await Task.Delay(1000);
VuforiaBehaviour.Instance.enabled = true;
VuforiaApplication.Instance.Initialize();
}
}
Deleting this script from the scene allows the scene to load fine.