public override void Localize() { ARCameraImageBytes image = null; bool isHD = HWARHelper.TryGetCameraImageBytes(out image); if (image != null && image.IsAvailable) { CoroutineJobLocalize j = new CoroutineJobLocalize(); Camera cam = this.mainCamera; Vector3 camPos = cam.transform.position; Quaternion camRot = cam.transform.rotation; j.intrinsics = isHD ? HWARHelper.GetIntrinsics() : HWARHelper.GetIntrinsics(image.Width, image.Height); j.width = image.Width; j.height = image.Height; j.rotation = camRot; j.position = camPos; j.OnSuccess += (int mapId, Vector3 position, Quaternion rotation) => { this.stats.locSucc++; Debug.Log("*************************** Localization Succeeded ***************************"); Matrix4x4 cloudSpace = Matrix4x4.TRS(position, rotation, Vector3.one); Matrix4x4 trackerSpace = Matrix4x4.TRS(camPos, camRot, Vector3.one); Debug.Log("id " + mapId + "\n" + "fc 4x4\n" + cloudSpace + "\n" + "ft 4x4\n" + trackerSpace); Matrix4x4 m = trackerSpace * (cloudSpace.inverse); LocalizerPose lastLocalizedPose; LocalizerBase.GetLocalizerPose(out lastLocalizedPose, mapId, position, rotation, m.inverse); this.lastLocalizedPose = lastLocalizedPose; foreach (PointCloudRenderer p in this.pcr.Values) { if (p.mapId == mapId) { p.go.transform.position = m.GetColumn(3); p.go.transform.rotation = m.rotation; break; } } }; j.OnFail += () => { this.stats.locFail++; Debug.Log("*************************** Localization Failed ***************************"); }; HWARHelper.GetPlaneData(out j.pixels, image); m_Jobs.Add(j); image.Dispose(); } }
public override void Localize() { ARCameraImageBytes image = null; if (m_Sdk.androidResolution == ImmersalSDK.CameraResolution.Max) { try { image = ARFrame.AcquirPreviewImageBytes(); } catch (NullReferenceException e) { Debug.LogError("Cannot acquire FullHD image: " + e.Message); image = ARFrame.AcquireCameraImageBytes(); } } else { image = ARFrame.AcquireCameraImageBytes(); } if (image != null && image.IsAvailable) { CoroutineJobLocalize j = new CoroutineJobLocalize(); Camera cam = this.mainCamera; j.intrinsics = HWARHelper.GetIntrinsics(); j.width = image.Width; j.height = image.Height; j.rotation = cam.transform.rotation; j.position = cam.transform.position; j.host = this; HWARHelper.GetPlaneData(out j.pixels, image); m_Jobs.Add(j); image.Dispose(); } }