Beispiel für die Migration von Version 4.6 zu Version 4000: Migration des Beispiels SpatialMap_Sparse_Building
Dieser Artikel beschreibt, wie Sie das Beispiel SpatialMap_Sparse_Building von EasyAR Sense Unity Plugin Version 4.6 auf Version 4000 migrieren.
Plugin-Paket ersetzen
Lesen Sie zum Ersetzen des Plugin-Pakets die allgemeine Migrationsanleitung.
Inkompatiblen Code ändern: die schnellste lauffähige Version
Ersetzen Sie im ursprünglichen Skript MapBuilding_SparseSample SparseSpatialMapWorkerFrameFilter durch SparseSpatialMapBuilderFrameFilter:
Alter Code:
private SparseSpatialMapWorkerFrameFilter sparse;Ändern in:
private SparseSpatialMapBuilderFrameFilter sparse;
Aktualisieren Sie in Awake den Code zum Abrufen von SparseSpatialMapBuilderFrameFilter:
Alter Code:
sparse = Session.GetComponentInChildren<SparseSpatialMapWorkerFrameFilter>();Ändern in:
Session.StateChanged += (state) => { if (state == ARSession.SessionState.Ready) { sparse = Session.Assembly.FrameFilters.Where(f => f is SparseSpatialMapBuilderFrameFilter).FirstOrDefault() as SparseSpatialMapBuilderFrameFilter; } };
Entfernen Sie den Status-Ausgabecode in Update und aktualisieren Sie die sparse spatial map gemäß der neuen API auf sparse.Target:
Alter Code:
private void Update() { Status.text = $"Device Model: {SystemInfo.deviceModel} {deviceModel}" + Environment.NewLine + "Frame Source: " + ((Session.Assembly != null && Session.Assembly.FrameSource) ? Session.Assembly.FrameSource.GetType().ToString().Replace》("easyar.", "").Replace("FrameSource", "") : "-") + Environment.NewLine + "Tracking Status: " + Session.TrackingStatus + Environment.NewLine + "Sparse Point Cloud Count: " + (sparse.LocalizedMap == null ? "-" : sparse.LocalizedMap.PointCloud.Count.ToString()) + Environment.NewLine + "Cube Location: " + (onSparse ? "On Sparse Spatial Map" : (Session.TrackingStatus.OnSome && Session.TrackingStatus != 》MotionTrackingStatus.NotTracking ? "Air" : "-")) + Environment.NewLine + Environment.NewLine + "Gesture Instruction" + Environment.NewLine + " Move to Sparse Spatial Map Point: One Finger Move" + Environment.NewLine + " Scale: Two Finger Pinch"; if (Input.touchCount == 1 && !EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { var touch = Input.touches[0]; if (touch.phase == TouchPhase.Moved) { var viewPoint = new Vector2(touch.position.x / Screen.width, touch.position.y / Screen.height); if (sparse && sparse.LocalizedMap) { var points = sparse.LocalizedMap.HitTest(viewPoint); foreach (var point in points) { onSparse = true; TouchControl.transform.position = sparse.LocalizedMap.transform.TransformPoint(point); break; } } } } }Ändern in:
private void Update() { if (Input.touchCount == 1 && !EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { var touch = Input.touches[0]; if (touch.phase == TouchPhase.Moved) { var viewPoint = new Vector2(touch.position.x / Screen.width, touch.position.y / Screen.height); if (sparse && sparse.Target) { var points = sparse.Target.HitTest(viewPoint); foreach (var point in points) { TouchControl.transform.position = sparse.Target.transform.TransformPoint(point); break; } } } } }
Zu diesem Zeitpunkt kann das Beispiel im Wesentlichen bereits ausgeführt werden.
Szene neu aufbauen: auf die neuen Funktionen vorbereiten
Löschen Sie den Sparse SpatialMap-Knoten in der Szene:
Löschen Sie AR Session in der Szene:
Erstellen Sie AR Session neu:
Weisen Sie im Beispielskript ARSession erneut dem neu erstellten AR Session (EasyAR) zu:
Zu diesem Zeitpunkt sind Szene und Skript des Beispiels auf Version 4000.0 aktualisiert und können ausgeführt werden.



