Hi, I have developed an AR app which tracks multiple images and renders AR models onto it. It contains 20 image targets with 20 models, So first I built it for Android and published on the play store, everything worked fine. But as soon as I built it for iOS, firstly for 20 images, camera din’t open and the app crashed, so I thought it must be memory issue, therefore for the trail purpose I only kept 3 images and their corresponding models should come up.
When run on iPhone or iPad, it constantly shows “Tracking Lost” text and doesn’t render the model.
When run on Android for how much ever images, works completely fine.
For AR image tracking I am using this script :-
```csharp
*using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
using TMPro;
public class MultiTargetManager : MonoBehaviour
{
[SerializeField] private ARTrackedImageManager aRTrackedImageManager;
[SerializeField] private GameObject aRModelsToPlace;
//[SerializeField] private GameObject ArMain;
[SerializeField] private GameObject trackingLostPopup; // Popup to show when tracking is lost
private Dictionary<string, GameObject> aRModels = new Dictionary<string, GameObject>();
private Dictionary<string, bool> modelState = new Dictionary<string, bool>();
// Start is called before the first frame update
void Start()
{
foreach (var aRModel in aRModelsToPlace)
{
GameObject newARModel = Instantiate(aRModel, Vector3.zero, Quaternion.identity);
newARModel.name = aRModel.name;
aRModels.Add(newARModel.name, newARModel);
newARModel.SetActive(false);
modelState.Add(newARModel.name, false);
}
}
private void OnEnable()
{
aRTrackedImageManager.trackedImagesChanged += ImageFound;
}
private void OnDisable()
{
aRTrackedImageManager.trackedImagesChanged -= ImageFound;
}
private void ImageFound(ARTrackedImagesChangedEventArgs eventData)
{
foreach (var trackedImage in eventData.added)
{
ShowARModel(trackedImage);
}
foreach (var trackedImage in eventData.updated)
{
if (trackedImage.trackingState == TrackingState.Tracking)
{
ShowARModel(trackedImage);
trackingLostPopup.GetComponent().text = “Tracking Active”;
}
else if(trackedImage.trackingState == TrackingState.Limited)
{
HideARModel(trackedImage);
trackingLostPopup.GetComponent().text = “Tracking Lost”;
}
}
}
private void ShowARModel(ARTrackedImage trackedImage)
{
bool isModelActivated = modelState[trackedImage.referenceImage.name];
if (!isModelActivated)
{
GameObject aRModel = aRModels[trackedImage.referenceImage.name];
aRModel.transform.position = trackedImage.transform.position;
aRModel.transform.rotation = trackedImage.transform.rotation;
aRModel.SetActive(true);
modelState[trackedImage.referenceImage.name] = true;
}
else
{
GameObject aRModel = aRModels[trackedImage.referenceImage.name];
aRModel.transform.position = trackedImage.transform.position;
aRModel.transform.rotation = trackedImage.transform.rotation;
}
}
private void HideARModel(ARTrackedImage trackedImage)
{
bool isModelActivated = modelState[trackedImage.referenceImage.name];
if (isModelActivated)
{
GameObject aRModel = aRModels[trackedImage.referenceImage.name];
aRModel.SetActive(false);
modelState[trackedImage.referenceImage.name] = false;
}
}
}*
```
Versions i am using :-
Unity - 2021.3.28f1
AR Foundation - 4.2.10
AR Kit - 4.2.10
AR Core - 4.2.10
XR Plugin Management - 4.3.3
I tried the project in Unity 2021.3.15f1
AR Kit - 4.2.9
Still doesn’t work.
Here is the image of my Player Settings.
Please help me resolve this issue.
Also, I wanted to downgrade the AR Kit versions, but dint find a way to do so.
Thanks in Advance