Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using maxstAR;
- using HelperScripts;
- public class ImageTrackerZedMAXST : ARBehaviour
- {
- [SerializeField]
- private RenderTexture camRendTex;
- private Texture2D camTex;
- public bool horiFlip = false;
- public bool vertFlip = false;
- private Dictionary<string, ImageTrackableBehaviour> imageTrackablesMap =
- new Dictionary<string, ImageTrackableBehaviour>();
- private CameraBackgroundBehaviour cameraBackgroundBehaviour = null;
- private void Awake()
- {
- Init();
- cameraBackgroundBehaviour = FindObjectOfType<CameraBackgroundBehaviour>();
- camTex = new Texture2D(camRendTex.width, camRendTex.height, TextureFormat.RGBA32, false);
- }
- // Start is called before the first frame update
- void Start()
- {
- QualitySettings.vSyncCount = 0;
- //Application.targetFrameRate = 60;
- imageTrackablesMap.Clear();
- ImageTrackableBehaviour[] imageTrackables = FindObjectsOfType<ImageTrackableBehaviour>();
- foreach (var trackable in imageTrackables)
- {
- imageTrackablesMap.Add(trackable.TrackableName, trackable);
- Debug.Log("Trackable add: " + trackable.TrackableName);
- }
- AddTrackerData();
- TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE);
- CameraDevice.GetInstance().FlipVideo(CameraDevice.FlipDirection.HORIZONTAL, horiFlip);
- CameraDevice.GetInstance().FlipVideo(CameraDevice.FlipDirection.VERTICAL, vertFlip);
- }
- // Update is called once per frame
- void Update()
- {
- CameraDevice.GetInstance().FlipVideo(CameraDevice.FlipDirection.HORIZONTAL, horiFlip);
- CameraDevice.GetInstance().FlipVideo(CameraDevice.FlipDirection.VERTICAL, vertFlip);
- DisableAllTrackables();
- TextureScale.RenderToTexture(camRendTex, ref camTex);
- CameraDevice.GetInstance().SetNewFrame(camTex.GetRawTextureData(), camTex.GetRawTextureData().Length, camTex.width, camTex.height, ColorFormat.RGBA8888);
- TrackingState state = TrackerManager.GetInstance().UpdateTrackingState();
- if (state == null)
- {
- return;
- }
- cameraBackgroundBehaviour.UpdateCameraBackgroundImage(state);
- TrackingResult trackingResult = state.GetTrackingResult();
- for (int i = 0; i < trackingResult.GetCount(); i++)
- {
- Debug.Log(i);
- Trackable trackable = trackingResult.GetTrackable(i);
- imageTrackablesMap[trackable.GetName()].OnTrackSuccess(
- trackable.GetId(), trackable.GetName(), trackable.GetPose());
- }
- }
- private void AddTrackerData()
- {
- foreach (var trackable in imageTrackablesMap)
- {
- if (trackable.Value.TrackerDataFileName.Length == 0)
- {
- continue;
- }
- if (trackable.Value.StorageType == StorageType.AbsolutePath)
- {
- TrackerManager.GetInstance().AddTrackerData(trackable.Value.TrackerDataFileName);
- TrackerManager.GetInstance().LoadTrackerData();
- }
- else if(trackable.Value.StorageType == StorageType.StreamingAssets)
- {
- if (Application.platform == RuntimePlatform.Android)
- {
- StartCoroutine(MaxstARUtil.ExtractAssets(trackable.Value.TrackerDataFileName, (filePath) =>
- {
- TrackerManager.GetInstance().AddTrackerData(filePath, false);
- TrackerManager.GetInstance().LoadTrackerData();
- }));
- }
- else
- {
- TrackerManager.GetInstance().AddTrackerData(Application.streamingAssetsPath + "/" + trackable.Value.TrackerDataFileName);
- TrackerManager.GetInstance().LoadTrackerData();
- }
- }
- }
- }
- private void DisableAllTrackables()
- {
- foreach (var trackable in imageTrackablesMap)
- {
- trackable.Value.OnTrackFail();
- }
- }
- public void SetNormalMode()
- {
- TrackerManager.GetInstance().SetTrackingOption(TrackerManager.TrackingOption.NORMAL_TRACKING);
- }
- public void SetExtendedMode()
- {
- TrackerManager.GetInstance().SetTrackingOption(TrackerManager.TrackingOption.EXTEND_TRACKING);
- }
- public void SetMultiMode()
- {
- TrackerManager.GetInstance().SetTrackingOption(TrackerManager.TrackingOption.MULTI_TRACKING);
- }
- void OnApplicationPause(bool pause)
- {
- if (pause)
- {
- TrackerManager.GetInstance().StopTracker();
- }
- else
- {
- TrackerManager.GetInstance().StartTracker(TrackerManager.TRACKER_TYPE_IMAGE);
- }
- }
- void OnDestroy()
- {
- imageTrackablesMap.Clear();
- TrackerManager.GetInstance().SetTrackingOption(TrackerManager.TrackingOption.NORMAL_TRACKING);
- TrackerManager.GetInstance().StopTracker();
- TrackerManager.GetInstance().DestroyTracker();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment