diff --git a/Assets/Compare/LiveComparer.cs b/Assets/Compare/LiveComparer.cs index f954aa7b14458269b1262de2e2f34353af33e6f9..8e2a8795f935c91f3ac1907a31f020546eba8764 100644 --- a/Assets/Compare/LiveComparer.cs +++ b/Assets/Compare/LiveComparer.cs @@ -31,37 +31,51 @@ public class LiveComparer : MonoBehaviour void Update () { - if (replay.currentFrame != lastFrame && replay.currentFrame > 0 && replay.currentFrame < 100) + if (replay.currentFrame >= 0 && replay.currentFrame < 100) { - lastFrame = replay.currentFrame; - FetchPalmsCoordinates (); - ComputeScore (); + ComputeFrameScore (); + + if (replay.currentFrame != lastFrame) + { + lastFrame = replay.currentFrame; + ComputeTotalScore (); + } + UpdateScoreLabels (); } } - void ComputeScore() + void ComputeFrameScore() { //for now we only consider the left hand frameScore = 100.0f; + float positionFactor = 10.0f; + float rotationFactor = 5.0f; + Vector3 differencePosition = leftPalmPosition - replay.gestureToReplay.states [replay.currentFrame].position; Vector3 differenceRotation = leftPalmRotation - replay.gestureToReplay.states [replay.currentFrame].rotation; - + float absoluteDifferencePosition = Mathf.Abs(differencePosition.x) + Mathf.Abs(differencePosition.y) + Mathf.Abs(differencePosition.z); float absoluteDifferenceRotation = Mathf.Abs(differenceRotation.x) + Mathf.Abs(differenceRotation.y) + Mathf.Abs(differenceRotation.z); - - frameScore -= absoluteDifferencePosition + absoluteDifferenceRotation; + frameScore -= absoluteDifferencePosition * positionFactor + absoluteDifferenceRotation * rotationFactor; + } + + void ComputeTotalScore() + { sumScore += frameScore; - totalScore = sumScore / (replay.currentFrame); + if (replay.currentFrame != 0) + totalScore = sumScore / (replay.currentFrame); + else + totalScore = 0; } void FetchPalmsCoordinates() diff --git a/Assets/Replay/Replay.cs b/Assets/Replay/Replay.cs index a20df2cea6d0501ab101cc418afbcedb1e5c22dc..e9972da86c525cbe12189b037a68b3b7416084ac 100644 --- a/Assets/Replay/Replay.cs +++ b/Assets/Replay/Replay.cs @@ -12,7 +12,7 @@ public class Replay: MonoBehaviour public Text textFrame; public Gesture gestureToReplay; - public int currentFrame = -1; + public int currentFrame = 0; float lastTimestamp = 0; bool startReplay = false; List<string> replays = new List<string>(); @@ -41,12 +41,14 @@ public class Replay: MonoBehaviour { lastTimestamp = Time.unscaledTime; startReplay = true; - currentFrame = -1; + currentFrame = 0; } public void UpdateSelectedGesture(int id) { gestureToReplay = new Gesture (replays[id] + "/0"); + currentFrame = 0; + ApplyCurrentFrameToModel (); } void Update () @@ -58,7 +60,7 @@ public class Replay: MonoBehaviour //if replay not finished //compute criteria to go to the next frame bool goToNextFrame = false; - if (currentFrame == -1) + if (currentFrame == 0) goToNextFrame = true; else { @@ -71,20 +73,25 @@ public class Replay: MonoBehaviour if (goToNextFrame) { currentFrame++; - handModel.transform.position = gestureToReplay.states [currentFrame].position; - - float factor = 180 / 3.14f * rotationFactor; - Vector3 rot = gestureToReplay.states [currentFrame].rotation * factor; - - handModel.transform.rotation = Quaternion.Euler (rot); - lastTimestamp = Time.unscaledTime; - - //update UI - textFrame.text = "Frame: " + currentFrame; + ApplyCurrentFrameToModel (); } } else startReplay = false; } } + + void ApplyCurrentFrameToModel() + { + handModel.transform.position = gestureToReplay.states [currentFrame].position; + + float factor = 180 / 3.14f * rotationFactor; + Vector3 rot = gestureToReplay.states [currentFrame].rotation * factor; + + handModel.transform.rotation = Quaternion.Euler (rot); + lastTimestamp = Time.unscaledTime; + + //update UI + textFrame.text = "Frame: " + currentFrame; + } } diff --git a/Assets/Scenes/Replay.unity b/Assets/Scenes/Replay.unity index f3203c8df0d3c68c2fc369a5a699f7cd5c4e16e7..9db222d45d1c4d5291890ca50f0f5314f855b479 100644 --- a/Assets/Scenes/Replay.unity +++ b/Assets/Scenes/Replay.unity @@ -2372,7 +2372,7 @@ MonoBehaviour: handModel: {fileID: 1805769538} dropdown: {fileID: 1882596559} textFrame: {fileID: 2041325546} - currentFrame: -1 + currentFrame: 0 --- !u!4 &2026651520 Transform: m_ObjectHideFlags: 0