public void loadTranslationsToSensors(TrackingPositionsData data) { for (int i = 0; i < TrackingManager.instance.KinectSensors.Length; i++) { Vector3[] arr = data.getCalibratedParams(i); if (arr == null) { Debug.LogError("Translations is not yet calculated, please press calculate Translations on TrackingManager GameObject."); return; } TrackingManager.instance.KinectSensors[i].CalibratedRotation = arr[0]; TrackingManager.instance.KinectSensors[i].CalibratedDirection = arr[1]; TrackingManager.instance.KinectSensors[i].CalibratedKinectsMiddlePoint = arr[2]; TrackingManager.instance.KinectSensors[i].CalibratedCorrectMiddlePoint = arr[3]; } }
private void readTrackingData() { // Debug.Log(Application.dataPath + "/trackingData.json"); if (!File.Exists(Application.dataPath + "/StreamingAssets/trackingData.json")) { trackingData = new TrackingPositionsData(TrackingManager.instance.KinectSensors.Length, recordsNeeded); } else { using (StreamReader reader = new StreamReader(Application.dataPath + "/StreamingAssets/trackingData.json")) { string data = reader.ReadToEnd(); trackingData = JsonUtility.FromJson <TrackingPositionsData>(data); recordsNeeded = trackingData.recordsNeeded; if (trackingData.getPositionsCount(0) == 0 && trackingData.getPositionsCount(1) == 0 && trackingData.getPositionsCount(2) == 0) { trackingData.resetData(); } } } loadTranslationsToSensors(trackingData); if (drawCalibratedData) { List <Vector3> correctPosi = new List <Vector3>(); List <Vector3> kinectPosi = new List <Vector3>(); List <Vector3> calibratedPos = new List <Vector3>(); for (int i = 0; i < trackingData.kinectDevices; i++) { if (i != 0) { continue; } for (int j = 0; j < recordsNeeded; j++) { Vector3 kinecti = trackingData.getKinectPos(i, j); Vector3 correcti = trackingData.getCorrectPos(i, j); correctPosi.Add(correcti); kinectPosi.Add(kinecti); calibratedPos.Add(trackingData.getPredictedKinectPos(i, kinecti)); } } List <Vector3> newKinectPosi = new List <Vector3>(); for (int i = 0; i < kinectPosi.Count; i++) { // newKinectPosi.Add(TrackingManager.instance.KinectSensors[0].localPosToGlobal(kinectPosi[i])); } drawPoints("kinectPointsUpdated", newKinectPosi, Color.yellow); //drawpoints("kinectpoints", kinectposi, color.blue); drawPoints("HTCPoints", correctPosi, Color.red); drawPoints("HTCPoints", calibratedPos, Color.green); float dist = 0; for (int i = 0; i < correctPosi.Count; i++) { dist += Vector3.Distance(correctPosi[i], calibratedPos[i]); } dist /= correctPosi.Count; Debug.Log("Aprox. diff: " + Math.Round(dist * 10, 2) + " cm."); } }