Hi, I’m developing an AR app, that show 3D model of House when you scan the marker, with ARFoundation .Image Tracking.
i already make a prefab that parent 3 models as part of house :1st floor, 2nd floor, and roof.
I already make buttons to view the house with 1stfloorview, 2ndfloorview, and fullview.
i want to be able activate/deactivate 2nd floor and roof with that buttons but my attempt is not working.
this is my code
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.XR.ARSubsystems;
using UnityEngine.XR.ARFoundation;
public class TrackedImageInfoManager : MonoBehaviour
{
[SerializeField]
public Button 1stfloorview;
[SerializeField]
public Button 2ndfloorview;
[SerializeField]
public Button fullview;
ARTrackedImageManager m_TrackedImageManager;
void Awake()
{
1stfloorview.onClick.AddListener(()=>{m_TrackedImageManager.trackedImagePrefab.transform.Find("2nd floor").gameObject.SetActive(false);m_TrackedImageManager.trackedImagePrefab.transform.Find("roof").gameObject.SetActive(false);});
2ndfloorview.onClick.AddListener(()=>{m_TrackedImageManager.trackedImagePrefab.transform.Find("2nd floor").gameObject.SetActive(true);m_TrackedImageManager.trackedImagePrefab.transform.Find("roof").gameObject.SetActive(false);});
fullview.onClick.AddListener(()=>{m_TrackedImageManager.trackedImagePrefab.transform.Find("2nd floor").gameObject.SetActive(true);m_TrackedImageManager.trackedImagePrefab.transform.Find("roof").gameObject.SetActive(true);});
m_TrackedImageManager = GetComponent<ARTrackedImageManager>();
}
void OnEnable()
{
m_TrackedImageManager.trackedImagesChanged += OnTrackedImagesChanged;
}
void OnDisable()
{
m_TrackedImageManager.trackedImagesChanged -= OnTrackedImagesChanged;
}
void UpdateInfo(ARTrackedImage trackedImage)
{
if (trackedImage.trackingState != TrackingState.None)
{
m_TrackedImageManager.trackedImagePrefab.transform.localPosition = new Vector3(trackedImage.transform.position.x,1f,trackedImage.transform.position.z);
}else{
m_TrackedImageManager.trackedImagePrefab.SetActive(false);
}
}
void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
{
foreach (var trackedImage in eventArgs.added)
{
// Give the initial image a reasonable default scale
trackedImage.transform.localScale = new Vector3(0.01f, 0.01f, 0.01f);
UpdateInfo(trackedImage);
}
foreach (var trackedImage in eventArgs.updated)
{
UpdateInfo(trackedImage);
}
foreach (var trackedImage in eventArgs.removed)
{
m_TrackedImageManager.trackedImagePrefab.SetActive(false);
}
}
}
is there another way to achieve that scenario? please someone help me.
Thank You.