private void Start() { MLResult result = MLImageTracker.Start(); if (!result.IsOk) { Debug.LogErrorFormat("MLImageTrackerBehavior failed to start image tracker. Reason: {0}", result); return; } _imageTarget = MLImageTracker.AddTarget(gameObject.GetInstanceID().ToString(), Image, LongerDimensionInSceneUnits, HandleTargetResult, IsStationary); if (_imageTarget == null) { Debug.LogErrorFormat("MLImageTrackerBehavior failed to add target {0} to the image tracker.", gameObject.name); } _trackerResult.Status = MLImageTargetTrackingStatus.NotTracked; }
private void OnDestroy() { MLImageTracker.RemoveTarget(gameObject.GetInstanceID().ToString()); MLImageTracker.Stop(); }
/// <summary> /// Updates this image target's tracking data, status, and transforms. /// OnImageResult is called with the updated result. /// </summary> public void UpdateTrackingData() { bool success = false; if (MagicLeapNativeBindings.MLHandleIsValid(this.trackerHandle) && this.IsValid) { MLResult.Code result = NativeBindings.MLImageTrackerGetTargetResult(this.trackerHandle, this.targetHandle, ref this.nativeTrackingResult); if (result != MLResult.Code.Ok) { MLPluginLog.ErrorFormat("MLImageTracker.Target.UpdateTrackingData failed getting image tracker target result. Reason: {0}", result); } else { this.lastTrackingResult.Status = (TrackingStatus)this.nativeTrackingResult.Status; if (TrackingStatus.NotTracked == this.lastTrackingResult.Status || !MLImageTracker.GetTrackerStatus()) { // If the target is not being tracked then there is no need to query for the transform. success = true; } else { if (MagicLeapNativeBindings.UnityMagicLeap_TryGetPose(this.targetStaticData.CoordFrameTarget, out Pose outputPose)) { this.lastTrackingResult.Position = outputPose.position; this.lastTrackingResult.Rotation = outputPose.rotation; this.lastTrackingResult.Rotation *= Quaternion.Euler(270, 0, 0); success = true; } else { MLPluginLog.Error("MLImageTracker.Target.UpdateTrackingData failed getting target transforms."); } } } if (success) { this.OnImageResult?.Invoke(this, this.lastTrackingResult); } } else { MLPluginLog.ErrorFormat("MLImageTracker.Target.UpdateTrackingData failed. Reason: Handle was not valid: Tracker Handle: {0}, Existing Target Handle: {1}.", this.trackerHandle, this.targetHandle); } }