public static bool TryGetTrackingQuality(out int quality) { quality = default; if (!ARFrame.TextureIsAvailable()) { return(false); } ARTrackable.TrackingState trackingState = ARFrame.GetTrackingState(); switch (trackingState) { case ARTrackable.TrackingState.TRACKING: quality = 4; break; case ARTrackable.TrackingState.PAUSED: quality = 1; break; default: quality = 0; break; } return(true); }
public void Update() { // Do not update if huaweiAR is not tracking. if (ARFrame.GetTrackingState() != ARTrackable.TrackingState.TRACKING) { m_mesh.Clear(); return; } // Fill in the data to draw the point cloud. ARPointCloud pointCloud = ARFrame.AcquirePointCloud(); pointCloud.GetPoints(ref m_points); pointCloud.Release(); if (m_points.Count > 0) { // Update the mesh indicies array. m_pointIndex.Clear(); for (int i = 0; i < Mathf.Min(m_points.Count, k_maxPointCount); i++) { m_pointIndex.Add(i); } m_mesh.Clear(); m_mesh.vertices = m_points.ToArray(); m_mesh.SetIndices(m_pointIndex.ToArray(), MeshTopology.Points, 0); } }
public void Update() { if (!world) { _DrawPlane(); } Touch touch; if (ARFrame.GetTrackingState() == ARTrackable.TrackingState.TRACKING) // Only check for touch if we are tracking our environment. { touch = Input.GetTouch(0); switch (Input.touchCount) { case 1: switch (touch.phase) { case TouchPhase.Began: if (slingshot) // Cleanup in case we missed the touch phase end or release { slingshot.Release(); } slingshot = world.AddComponent <Slingshot>(); slingshot.Create(slingshotPrefab, projectilePrefab, projectileSource, indicator); if (Camera.main != null) { slingshot.ProjectileToScreenDirection = Camera.main.ScreenPointToRay(touch.position).direction * 0.5f; } break; case TouchPhase.Ended: case TouchPhase.Canceled: slingshot.Release(); slingshot = null; break; default: if (Camera.main != null) { slingshot.ProjectileToScreenDirection = Camera.main.ScreenPointToRay(touch.position).direction * 0.5f; } break; } break; default: if (touch.phase == TouchPhase.Began) { _CreateWorld(touch); } break; } } }
public void Update() { _DrawPlane(); Touch touch; if ( ARFrame.GetTrackingState() == ARTrackable.TrackingState.TRACKING && // Only check for touch if we are tracking our environment. Input.touchCount >= 1 && // Check if we touched. (touch = Input.GetTouch(0)).phase == TouchPhase.Began) // Check if this is the start of the touch action { _DrawARLogo(touch); } }
public void Update() { Touch touch; if (ARFrame.GetTrackingState() != ARTrackable.TrackingState.TRACKING || Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began) { } else { trackTest(touch); } }
public void Update() { _DrawPlane(); Touch touch; if (ARFrame.GetTrackingState() != ARTrackable.TrackingState.TRACKING || Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began) { } else { _DrawARLogo(touch); } }
private void SetSessionState() { bool isTracking = ARFrame.GetTrackingState() == ARTrackable.TrackingState.TRACKING; if (isTracking != m_IsTracking) { ImageRunUpdate(); } var captureButton = workspaceManager.captureButton.GetComponent <Button>(); var localizeButton = visualizeManager.localizeButton.GetComponent <Button>(); captureButton.interactable = isTracking; localizeButton.interactable = isTracking; m_IsTracking = isTracking; }
public ARState GetState() { ARState state = new ARState { frameHandle = 0, sessionHandle = 0, tracked = false }; #if HAS_GOOGLE_ARCORE if (GetSelectedAR() == ARSDK.ARCORE) { NativeSession native = LifecycleManager.Instance.NativeSession; if (native != null) { state = new ARState { frameHandle = native.FrameHandle.ToInt32(), sessionHandle = native.SessionHandle.ToInt32(), tracked = LifecycleManager.Instance.SessionStatus == SessionStatus.Tracking }; } } #endif #if HAS_HUAWEI_ARENGINE if (GetSelectedAR() == ARSDK.ARENGINE) { NDKSession native = ARSessionManager.Instance.m_ndkSession; if (native != null) { state = new ARState { frameHandle = native.FrameHandle.ToInt32(), sessionHandle = native.SessionHandle.ToInt32(), tracked = ARFrame.GetTrackingState() == ARTrackable.TrackingState.TRACKING }; } } #endif return(state); }
// Update is called once per frame void Update() { if (m_SDKStarted) { return; } bool isHWARTracking = false; bool isARCoreTracking = false; #if HWAR isHWARTracking = ARFrame.GetTrackingState() == ARTrackable.TrackingState.TRACKING; #endif isARCoreTracking = UnityEngine.XR.ARFoundation.ARSession.state == UnityEngine.XR.ARFoundation.ARSessionState.SessionTracking; if (isHWARTracking || isARCoreTracking) { OnStartImmersal(); } }
public override void Update() { isTracking = ARFrame.GetTrackingState() == ARTrackable.TrackingState.TRACKING; base.Update(); }
public void Update() { // Exit the app when the 'back' button is pressed. if (Input.GetKey(KeyCode.Escape)) { Application.Quit(); } // Check that motion tracking is tracking. if (ARFrame.GetTrackingState() != ARTrackable.TrackingState.TRACKING) { ARDebug.LogInfo("GetTrackingState no tracing return <<"); return; } // Get updated augmented images for this frame. ARFrame.GetTrackables <ARAugmentedImage>(m_TempAugmentedImages, ARTrackableQueryFilter.UPDATED); ARDebug.LogInfo("m_TempAugmentedImages size {0}", m_TempAugmentedImages.Count); // Create visualizers and anchors for updated augmented images that are tracking and do not previously // have a visualizer. Remove visualizers for stopped images. foreach (var image in m_TempAugmentedImages) { AugmentedImageVisualizer visualizer = null; m_Visualizers.TryGetValue(image.GetDataBaseIndex(), out visualizer); ARDebug.LogInfo("GetTrackingState {0}", image.GetTrackingState()); if (image.GetTrackingState() == ARTrackable.TrackingState.TRACKING && visualizer != null) { visualizer.Image = image; ARDebug.LogInfo("update position {0} rotation {1}", image.GetCenterPose().position, image.GetCenterPose().rotation); } if (image.GetTrackingState() == ARTrackable.TrackingState.TRACKING && visualizer == null) { // Create an anchor to ensure that ARCore keeps tracking this augmented image. //ARAnchor anchor = image.CreateAnchor(image.GetCenterPose()); //visualizer = (AugmentedImageVisualizer)Instantiate(AugmentedImageVisualizerPrefab, anchor.GetPose().position, anchor.GetPose().rotation); visualizer = (AugmentedImageVisualizer)Instantiate(AugmentedImageVisualizerPrefab, image.GetCenterPose().position, image.GetCenterPose().rotation); ARDebug.LogInfo("create position {0} rotation {1}", image.GetCenterPose().position, image.GetCenterPose().rotation); visualizer.Image = image; m_Visualizers.Add(image.GetDataBaseIndex(), visualizer); } else if (image.GetTrackingState() == ARTrackable.TrackingState.STOPPED && visualizer != null) { m_Visualizers.Remove(image.GetDataBaseIndex()); GameObject.Destroy(visualizer.gameObject); } } // Show the fit-to-scan overlay if there are no images that are Tracking. foreach (var visualizer in m_Visualizers.Values) { if (visualizer.Image.GetTrackingState() == ARTrackable.TrackingState.TRACKING) { FitToScanOverlay.SetActive(false); return; } } //FitToScanOverlay.SetActive(true); }