Browse Source

add scaling for all

Kenkart 2 years ago
parent
commit
75410dd4ee

+ 1 - 65
Assets/KinectView/Scripts/BodySourceView.cs

@@ -167,7 +167,7 @@ public class BodySourceView : MonoBehaviour
             initJoints[(int)jt] = GetVector3FromJoint(sourceJoint);
         }
 
-        Vector3[] rescaledJoints = RescaleJoints(initJoints);
+        Vector3[] rescaledJoints = HelperScript.RescaleJoints(initJoints);
 
         for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
         {
@@ -269,68 +269,4 @@ public class BodySourceView : MonoBehaviour
         orientationUnity.w = orientation.W;
         return orientationUnity;
     }
-
-    private Vector3[] RescaleJoints(Vector3[] initJoints)
-    {
-        Vector3[] rescaledJoints = new Vector3[25];
-
-        rescaledJoints[(int)Kinect.JointType.SpineBase] = Vector3.zero;
-
-        // Lower part
-        rescaledJoints[(int)Kinect.JointType.HipLeft] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.SpineBase], initJoints[(int)Kinect.JointType.HipLeft], 0.08f) + rescaledJoints[(int)Kinect.JointType.SpineBase];
-        rescaledJoints[(int)Kinect.JointType.HipRight] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.SpineBase], initJoints[(int)Kinect.JointType.HipRight], 0.08f) + rescaledJoints[(int)Kinect.JointType.SpineBase];
-
-        rescaledJoints[(int)Kinect.JointType.KneeLeft] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.HipLeft], initJoints[(int)Kinect.JointType.KneeLeft], 0.38f) + rescaledJoints[(int)Kinect.JointType.HipLeft];
-        rescaledJoints[(int)Kinect.JointType.KneeRight] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.HipRight], initJoints[(int)Kinect.JointType.KneeRight], 0.38f) + rescaledJoints[(int)Kinect.JointType.HipRight];
-
-        rescaledJoints[(int)Kinect.JointType.AnkleLeft] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.KneeLeft], initJoints[(int)Kinect.JointType.AnkleLeft], 0.35f) + rescaledJoints[(int)Kinect.JointType.KneeLeft];
-        rescaledJoints[(int)Kinect.JointType.AnkleRight] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.KneeRight], initJoints[(int)Kinect.JointType.AnkleRight], 0.35f) + rescaledJoints[(int)Kinect.JointType.KneeRight];
-
-        rescaledJoints[(int)Kinect.JointType.FootLeft] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.AnkleLeft], initJoints[(int)Kinect.JointType.FootLeft], 0.1f) + rescaledJoints[(int)Kinect.JointType.AnkleLeft] + new Vector3(0, 0.03f, 0);
-        //initJoints[(int)Kinect.JointType.AnkleLeft], initJoints[(int)Kinect.JointType.FootLeft], 0.1f) + rescaledJoints[(int)Kinect.JointType.AnkleLeft];
-        rescaledJoints[(int)Kinect.JointType.FootRight] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.AnkleRight], initJoints[(int)Kinect.JointType.FootRight], 0.1f) + rescaledJoints[(int)Kinect.JointType.AnkleRight] + new Vector3(0, 0.03f, 0);
-        //initJoints[(int)Kinect.JointType.AnkleRight], initJoints[(int)Kinect.JointType.FootRight], 0.1f) + rescaledJoints[(int)Kinect.JointType.AnkleRight];
-
-        // Upper part
-        rescaledJoints[(int)Kinect.JointType.SpineMid] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.SpineBase], initJoints[(int)Kinect.JointType.SpineMid], 0.2f) + rescaledJoints[(int)Kinect.JointType.SpineBase];
-
-        rescaledJoints[(int)Kinect.JointType.SpineShoulder] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.SpineMid], initJoints[(int)Kinect.JointType.SpineShoulder], 0.2f) + rescaledJoints[(int)Kinect.JointType.SpineMid];
-
-        rescaledJoints[(int)Kinect.JointType.ShoulderLeft] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.SpineShoulder], initJoints[(int)Kinect.JointType.ShoulderLeft], 0.12f) + rescaledJoints[(int)Kinect.JointType.SpineShoulder];
-        rescaledJoints[(int)Kinect.JointType.ShoulderRight] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.SpineShoulder], initJoints[(int)Kinect.JointType.ShoulderRight], 0.12f) + rescaledJoints[(int)Kinect.JointType.SpineShoulder];
-
-        rescaledJoints[(int)Kinect.JointType.ElbowLeft] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.ShoulderLeft], initJoints[(int)Kinect.JointType.ElbowLeft], 0.28f) + rescaledJoints[(int)Kinect.JointType.ShoulderLeft];
-        rescaledJoints[(int)Kinect.JointType.ElbowRight] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.ShoulderRight], initJoints[(int)Kinect.JointType.ElbowRight], 0.28f) + rescaledJoints[(int)Kinect.JointType.ShoulderRight];
-
-        rescaledJoints[(int)Kinect.JointType.WristLeft] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.ElbowLeft], initJoints[(int)Kinect.JointType.WristLeft], 0.28f) + rescaledJoints[(int)Kinect.JointType.ElbowLeft];
-        rescaledJoints[(int)Kinect.JointType.WristRight] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.ElbowRight], initJoints[(int)Kinect.JointType.WristRight], 0.28f) + rescaledJoints[(int)Kinect.JointType.ElbowRight];
-
-        rescaledJoints[(int)Kinect.JointType.Neck] = GetTargetJointWithDesiredLength(
-            initJoints[(int)Kinect.JointType.SpineShoulder], initJoints[(int)Kinect.JointType.Neck], 0.1f) + rescaledJoints[(int)Kinect.JointType.SpineShoulder];
-
-        return rescaledJoints;
-    }
-
-    private Vector3 GetTargetJointWithDesiredLength(Vector3 source, Vector3 target, float desiredLength)
-    {
-        Vector3 sourceToTarget = target - source;
-        float length = sourceToTarget.magnitude;
-        return sourceToTarget * desiredLength / length;
-    }
 }

+ 10 - 4
Assets/Scripts/BodyComparer.cs

@@ -56,6 +56,10 @@ public class BodyComparer : MonoBehaviour
             List<Vector3> oneBodyDemo = new List<Vector3>();
             List<Vector3> oneBodyReal = new List<Vector3>();
 
+            JointsData jd = jointsDataDemo[i];
+            Vector3[] joints = HelperScript.ConvertJointsDataToVector3Array(jd);
+            Vector3[] rescaledJoints = HelperScript.RescaleJoints(joints);
+
             for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
             {
                 // Skip these joints
@@ -64,8 +68,7 @@ public class BodyComparer : MonoBehaviour
                         || jt == Kinect.JointType.HandTipLeft || jt == Kinect.JointType.HandTipRight)
                     continue;
 
-                JointsData jd = jointsDataDemo[i];
-                Vector3 posJointDemo = new Vector3(jd.jointsPositionsX[(int)jt], jd.jointsPositionsY[(int)jt], jd.jointsPositionsZ[(int)jt]);
+                Vector3 posJointDemo = rescaledJoints[(int)jt];
                 Vector3 posJointBody = body.GetChild((int)jt).position;
 
                 // Save positions demo and real body
@@ -118,6 +121,10 @@ public class BodyComparer : MonoBehaviour
                 {
                     List<Vector3> oneBodyDemo2 = new List<Vector3>();
 
+                    jd = jointsDataDemo[j];
+                    joints = HelperScript.ConvertJointsDataToVector3Array(jd);
+                    rescaledJoints = HelperScript.RescaleJoints(joints);
+
                     for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
                     {
                         // Skip these joints
@@ -126,8 +133,7 @@ public class BodyComparer : MonoBehaviour
                                 || jt == Kinect.JointType.HandTipLeft || jt == Kinect.JointType.HandTipRight)
                             continue;
 
-                        JointsData jd = jointsDataDemo[j];
-                        Vector3 posJointDemo = new Vector3(jd.jointsPositionsX[(int)jt], jd.jointsPositionsY[(int)jt], jd.jointsPositionsZ[(int)jt]);
+                        Vector3 posJointDemo = rescaledJoints[(int)jt];
 
                         // Save positions demo and real body
                         oneBodyDemo2.Add(posJointDemo);

+ 114 - 0
Assets/Scripts/HelperScript.cs

@@ -0,0 +1,114 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Kinect = Windows.Kinect;
+
+public static class HelperScript
+{
+
+    public static Dictionary<Kinect.JointType, Kinect.JointType> _BoneMap = new Dictionary<Kinect.JointType, Kinect.JointType>()
+    {
+        { Kinect.JointType.FootLeft, Kinect.JointType.AnkleLeft },
+        { Kinect.JointType.AnkleLeft, Kinect.JointType.KneeLeft },
+        { Kinect.JointType.KneeLeft, Kinect.JointType.HipLeft },
+        { Kinect.JointType.HipLeft, Kinect.JointType.SpineBase },
+
+        { Kinect.JointType.FootRight, Kinect.JointType.AnkleRight },
+        { Kinect.JointType.AnkleRight, Kinect.JointType.KneeRight },
+        { Kinect.JointType.KneeRight, Kinect.JointType.HipRight },
+        { Kinect.JointType.HipRight, Kinect.JointType.SpineBase },
+
+        { Kinect.JointType.HandTipLeft, Kinect.JointType.HandLeft },
+        { Kinect.JointType.ThumbLeft, Kinect.JointType.HandLeft },
+        { Kinect.JointType.HandLeft, Kinect.JointType.WristLeft },
+        { Kinect.JointType.WristLeft, Kinect.JointType.ElbowLeft },
+        { Kinect.JointType.ElbowLeft, Kinect.JointType.ShoulderLeft },
+        { Kinect.JointType.ShoulderLeft, Kinect.JointType.SpineShoulder },
+
+        { Kinect.JointType.HandTipRight, Kinect.JointType.HandRight },
+        { Kinect.JointType.ThumbRight, Kinect.JointType.HandRight },
+        { Kinect.JointType.HandRight, Kinect.JointType.WristRight },
+        { Kinect.JointType.WristRight, Kinect.JointType.ElbowRight },
+        { Kinect.JointType.ElbowRight, Kinect.JointType.ShoulderRight },
+        { Kinect.JointType.ShoulderRight, Kinect.JointType.SpineShoulder },
+
+        { Kinect.JointType.SpineBase, Kinect.JointType.SpineMid },
+        { Kinect.JointType.SpineMid, Kinect.JointType.SpineShoulder },
+        { Kinect.JointType.SpineShoulder, Kinect.JointType.Neck },
+        { Kinect.JointType.Neck, Kinect.JointType.Head },
+    };
+
+    public static Vector3[] ConvertJointsDataToVector3Array(JointsData jd)
+    {
+        Vector3[] joints = new Vector3[jd.jointsPositionsX.Count];
+        for (int i = 0; i < joints.Length; i++)
+        {
+            joints[i] = new Vector3(jd.jointsPositionsX[i], jd.jointsPositionsY[i], jd.jointsPositionsZ[i]);
+        }
+        return joints;
+    }
+
+    public static Vector3[] RescaleJoints(Vector3[] initJoints)
+    {
+        Vector3[] rescaledJoints = new Vector3[25];
+
+        rescaledJoints[(int)Kinect.JointType.SpineBase] = Vector3.zero;
+
+        // Lower part
+        rescaledJoints[(int)Kinect.JointType.HipLeft] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.SpineBase], initJoints[(int)Kinect.JointType.HipLeft], 0.08f) + rescaledJoints[(int)Kinect.JointType.SpineBase];
+        rescaledJoints[(int)Kinect.JointType.HipRight] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.SpineBase], initJoints[(int)Kinect.JointType.HipRight], 0.08f) + rescaledJoints[(int)Kinect.JointType.SpineBase];
+
+        rescaledJoints[(int)Kinect.JointType.KneeLeft] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.HipLeft], initJoints[(int)Kinect.JointType.KneeLeft], 0.38f) + rescaledJoints[(int)Kinect.JointType.HipLeft];
+        rescaledJoints[(int)Kinect.JointType.KneeRight] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.HipRight], initJoints[(int)Kinect.JointType.KneeRight], 0.38f) + rescaledJoints[(int)Kinect.JointType.HipRight];
+
+        rescaledJoints[(int)Kinect.JointType.AnkleLeft] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.KneeLeft], initJoints[(int)Kinect.JointType.AnkleLeft], 0.35f) + rescaledJoints[(int)Kinect.JointType.KneeLeft];
+        rescaledJoints[(int)Kinect.JointType.AnkleRight] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.KneeRight], initJoints[(int)Kinect.JointType.AnkleRight], 0.35f) + rescaledJoints[(int)Kinect.JointType.KneeRight];
+
+        rescaledJoints[(int)Kinect.JointType.FootLeft] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.AnkleLeft], initJoints[(int)Kinect.JointType.FootLeft], 0.1f) + rescaledJoints[(int)Kinect.JointType.AnkleLeft] + new Vector3(0, 0.03f, 0);
+        //initJoints[(int)Kinect.JointType.AnkleLeft], initJoints[(int)Kinect.JointType.FootLeft], 0.1f) + rescaledJoints[(int)Kinect.JointType.AnkleLeft];
+        rescaledJoints[(int)Kinect.JointType.FootRight] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.AnkleRight], initJoints[(int)Kinect.JointType.FootRight], 0.1f) + rescaledJoints[(int)Kinect.JointType.AnkleRight] + new Vector3(0, 0.03f, 0);
+        //initJoints[(int)Kinect.JointType.AnkleRight], initJoints[(int)Kinect.JointType.FootRight], 0.1f) + rescaledJoints[(int)Kinect.JointType.AnkleRight];
+
+        // Upper part
+        rescaledJoints[(int)Kinect.JointType.SpineMid] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.SpineBase], initJoints[(int)Kinect.JointType.SpineMid], 0.2f) + rescaledJoints[(int)Kinect.JointType.SpineBase];
+
+        rescaledJoints[(int)Kinect.JointType.SpineShoulder] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.SpineMid], initJoints[(int)Kinect.JointType.SpineShoulder], 0.2f) + rescaledJoints[(int)Kinect.JointType.SpineMid];
+
+        rescaledJoints[(int)Kinect.JointType.ShoulderLeft] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.SpineShoulder], initJoints[(int)Kinect.JointType.ShoulderLeft], 0.12f) + rescaledJoints[(int)Kinect.JointType.SpineShoulder];
+        rescaledJoints[(int)Kinect.JointType.ShoulderRight] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.SpineShoulder], initJoints[(int)Kinect.JointType.ShoulderRight], 0.12f) + rescaledJoints[(int)Kinect.JointType.SpineShoulder];
+
+        rescaledJoints[(int)Kinect.JointType.ElbowLeft] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.ShoulderLeft], initJoints[(int)Kinect.JointType.ElbowLeft], 0.28f) + rescaledJoints[(int)Kinect.JointType.ShoulderLeft];
+        rescaledJoints[(int)Kinect.JointType.ElbowRight] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.ShoulderRight], initJoints[(int)Kinect.JointType.ElbowRight], 0.28f) + rescaledJoints[(int)Kinect.JointType.ShoulderRight];
+
+        rescaledJoints[(int)Kinect.JointType.WristLeft] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.ElbowLeft], initJoints[(int)Kinect.JointType.WristLeft], 0.28f) + rescaledJoints[(int)Kinect.JointType.ElbowLeft];
+        rescaledJoints[(int)Kinect.JointType.WristRight] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.ElbowRight], initJoints[(int)Kinect.JointType.WristRight], 0.28f) + rescaledJoints[(int)Kinect.JointType.ElbowRight];
+
+        rescaledJoints[(int)Kinect.JointType.Neck] = GetTargetJointWithDesiredLength(
+            initJoints[(int)Kinect.JointType.SpineShoulder], initJoints[(int)Kinect.JointType.Neck], 0.1f) + rescaledJoints[(int)Kinect.JointType.SpineShoulder];
+
+        return rescaledJoints;
+    }
+
+    private static Vector3 GetTargetJointWithDesiredLength(Vector3 source, Vector3 target, float desiredLength)
+    {
+        Vector3 sourceToTarget = target - source;
+        float length = sourceToTarget.magnitude;
+        return sourceToTarget * desiredLength / length;
+    }
+}

+ 11 - 0
Assets/Scripts/HelperScript.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7a3fcd1c707cdc64bbd097724f3ef577
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 10 - 36
Assets/Scripts/PlayerReplay.cs

@@ -21,38 +21,6 @@ public class PlayerReplay : MonoBehaviour
 
     public GameObject textFinish;
 
-    private Dictionary<Kinect.JointType, Kinect.JointType> _BoneMap = new Dictionary<Kinect.JointType, Kinect.JointType>()
-    {
-        { Kinect.JointType.FootLeft, Kinect.JointType.AnkleLeft },
-        { Kinect.JointType.AnkleLeft, Kinect.JointType.KneeLeft },
-        { Kinect.JointType.KneeLeft, Kinect.JointType.HipLeft },
-        { Kinect.JointType.HipLeft, Kinect.JointType.SpineBase },
-
-        { Kinect.JointType.FootRight, Kinect.JointType.AnkleRight },
-        { Kinect.JointType.AnkleRight, Kinect.JointType.KneeRight },
-        { Kinect.JointType.KneeRight, Kinect.JointType.HipRight },
-        { Kinect.JointType.HipRight, Kinect.JointType.SpineBase },
-
-        { Kinect.JointType.HandTipLeft, Kinect.JointType.HandLeft },
-        { Kinect.JointType.ThumbLeft, Kinect.JointType.HandLeft },
-        { Kinect.JointType.HandLeft, Kinect.JointType.WristLeft },
-        { Kinect.JointType.WristLeft, Kinect.JointType.ElbowLeft },
-        { Kinect.JointType.ElbowLeft, Kinect.JointType.ShoulderLeft },
-        { Kinect.JointType.ShoulderLeft, Kinect.JointType.SpineShoulder },
-
-        { Kinect.JointType.HandTipRight, Kinect.JointType.HandRight },
-        { Kinect.JointType.ThumbRight, Kinect.JointType.HandRight },
-        { Kinect.JointType.HandRight, Kinect.JointType.WristRight },
-        { Kinect.JointType.WristRight, Kinect.JointType.ElbowRight },
-        { Kinect.JointType.ElbowRight, Kinect.JointType.ShoulderRight },
-        { Kinect.JointType.ShoulderRight, Kinect.JointType.SpineShoulder },
-
-        { Kinect.JointType.SpineBase, Kinect.JointType.SpineMid },
-        { Kinect.JointType.SpineMid, Kinect.JointType.SpineShoulder },
-        { Kinect.JointType.SpineShoulder, Kinect.JointType.Neck },
-        { Kinect.JointType.Neck, Kinect.JointType.Head },
-    };
-
     public void AddJoints(float recordingTime)
     {
         Vector3[] positions = new Vector3[25];
@@ -189,6 +157,12 @@ public class PlayerReplay : MonoBehaviour
         {
             // Create GameObject body
             GameObject body = new GameObject("Recorded Body Demo " + i);
+
+            // TODO: Convert JointsData to Vector3[] and rescale it
+            JointsData jd = newJointsData[i];
+            Vector3[] joints = HelperScript.ConvertJointsDataToVector3Array(jd);
+            Vector3[] rescaledJoints = HelperScript.RescaleJoints(joints);
+
             for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
             {
                 // Skip these joints
@@ -210,8 +184,8 @@ public class PlayerReplay : MonoBehaviour
 
                 jointObj.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
                 jointObj.name = jt.ToString();
-                JointsData jd = newJointsData[i];
-                jointObj.transform.position = new Vector3(jd.jointsPositionsX[(int)jt], jd.jointsPositionsY[(int)jt], jd.jointsPositionsZ[(int)jt]);
+                
+                jointObj.transform.position = rescaledJoints[(int)jt];
                 jointObj.transform.parent = body.transform;
 
                 // Remove LineRenderer component from neck
@@ -225,14 +199,14 @@ public class PlayerReplay : MonoBehaviour
             for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
             {
                 // Skip if dictionary not contains the joint or other these joints
-                if (!_BoneMap.ContainsKey(jt) || jt == Kinect.JointType.Neck
+                if (!HelperScript._BoneMap.ContainsKey(jt) || jt == Kinect.JointType.Neck
                     || jt == Kinect.JointType.ThumbLeft || jt == Kinect.JointType.ThumbRight
                         || jt == Kinect.JointType.HandLeft || jt == Kinect.JointType.HandRight
                         || jt == Kinect.JointType.HandTipLeft || jt == Kinect.JointType.HandTipRight)
                     continue;
 
                 Transform jointObj = body.transform.Find(jt.ToString());
-                Transform targetJoint = body.transform.Find(_BoneMap[jt].ToString());
+                Transform targetJoint = body.transform.Find(HelperScript._BoneMap[jt].ToString());
                 LineRenderer lr = jointObj.GetComponent<LineRenderer>();
 
                 lr.SetPosition(0, jointObj.localPosition);

+ 7 - 35
Assets/Scripts/StartStepPreview.cs

@@ -11,38 +11,6 @@ public class StartStepPreview : MonoBehaviour
     private JointsData jointsData;
     private GameObject body;
 
-    private Dictionary<Kinect.JointType, Kinect.JointType> _BoneMap = new Dictionary<Kinect.JointType, Kinect.JointType>()
-    {
-        { Kinect.JointType.FootLeft, Kinect.JointType.AnkleLeft },
-        { Kinect.JointType.AnkleLeft, Kinect.JointType.KneeLeft },
-        { Kinect.JointType.KneeLeft, Kinect.JointType.HipLeft },
-        { Kinect.JointType.HipLeft, Kinect.JointType.SpineBase },
-
-        { Kinect.JointType.FootRight, Kinect.JointType.AnkleRight },
-        { Kinect.JointType.AnkleRight, Kinect.JointType.KneeRight },
-        { Kinect.JointType.KneeRight, Kinect.JointType.HipRight },
-        { Kinect.JointType.HipRight, Kinect.JointType.SpineBase },
-
-        { Kinect.JointType.HandTipLeft, Kinect.JointType.HandLeft },
-        { Kinect.JointType.ThumbLeft, Kinect.JointType.HandLeft },
-        { Kinect.JointType.HandLeft, Kinect.JointType.WristLeft },
-        { Kinect.JointType.WristLeft, Kinect.JointType.ElbowLeft },
-        { Kinect.JointType.ElbowLeft, Kinect.JointType.ShoulderLeft },
-        { Kinect.JointType.ShoulderLeft, Kinect.JointType.SpineShoulder },
-
-        { Kinect.JointType.HandTipRight, Kinect.JointType.HandRight },
-        { Kinect.JointType.ThumbRight, Kinect.JointType.HandRight },
-        { Kinect.JointType.HandRight, Kinect.JointType.WristRight },
-        { Kinect.JointType.WristRight, Kinect.JointType.ElbowRight },
-        { Kinect.JointType.ElbowRight, Kinect.JointType.ShoulderRight },
-        { Kinect.JointType.ShoulderRight, Kinect.JointType.SpineShoulder },
-
-        { Kinect.JointType.SpineBase, Kinect.JointType.SpineMid },
-        { Kinect.JointType.SpineMid, Kinect.JointType.SpineShoulder },
-        { Kinect.JointType.SpineShoulder, Kinect.JointType.Neck },
-        { Kinect.JointType.Neck, Kinect.JointType.Head },
-    };
-
     public void SetData(JointsData jointsData)
     {
         this.jointsData = jointsData;
@@ -74,7 +42,11 @@ public class StartStepPreview : MonoBehaviour
 
             jointObj.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
             jointObj.name = jt.ToString();
-            jointObj.transform.position = new Vector3(jointsData.jointsPositionsX[(int)jt], jointsData.jointsPositionsY[(int)jt], jointsData.jointsPositionsZ[(int)jt]);
+
+            Vector3[] joints = HelperScript.ConvertJointsDataToVector3Array(jointsData);
+            Vector3[] rescaledJoints =  HelperScript.RescaleJoints(joints);
+
+            jointObj.transform.position = rescaledJoints[(int)jt];
             jointObj.transform.parent = body.transform;
 
             // Set alpha
@@ -94,14 +66,14 @@ public class StartStepPreview : MonoBehaviour
         for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
         {
             // Skip if dictionary not contains the joint or other these joints
-            if (!_BoneMap.ContainsKey(jt) || jt == Kinect.JointType.Neck
+            if (!HelperScript._BoneMap.ContainsKey(jt) || jt == Kinect.JointType.Neck
                 || jt == Kinect.JointType.ThumbLeft || jt == Kinect.JointType.ThumbRight
                     || jt == Kinect.JointType.HandLeft || jt == Kinect.JointType.HandRight
                     || jt == Kinect.JointType.HandTipLeft || jt == Kinect.JointType.HandTipRight)
                 continue;
 
             Transform jointObj = body.transform.Find(jt.ToString());
-            Transform targetJoint = body.transform.Find(_BoneMap[jt].ToString());
+            Transform targetJoint = body.transform.Find(HelperScript._BoneMap[jt].ToString());
             LineRenderer lr = jointObj.GetComponent<LineRenderer>();
 
             lr.SetPosition(0, jointObj.localPosition);

+ 11 - 35
Assets/Scripts/Visualizer_FadeInSeries.cs

@@ -11,37 +11,6 @@ public class Visualizer_FadeInSeries : MonoBehaviour
 
     private List<JointsData> jointsDataSeries = new List<JointsData>();
     private List<float> recordingTimesSeries = new List<float>();
-    private Dictionary<Kinect.JointType, Kinect.JointType> _BoneMap = new Dictionary<Kinect.JointType, Kinect.JointType>()
-    {
-        { Kinect.JointType.FootLeft, Kinect.JointType.AnkleLeft },
-        { Kinect.JointType.AnkleLeft, Kinect.JointType.KneeLeft },
-        { Kinect.JointType.KneeLeft, Kinect.JointType.HipLeft },
-        { Kinect.JointType.HipLeft, Kinect.JointType.SpineBase },
-
-        { Kinect.JointType.FootRight, Kinect.JointType.AnkleRight },
-        { Kinect.JointType.AnkleRight, Kinect.JointType.KneeRight },
-        { Kinect.JointType.KneeRight, Kinect.JointType.HipRight },
-        { Kinect.JointType.HipRight, Kinect.JointType.SpineBase },
-
-        { Kinect.JointType.HandTipLeft, Kinect.JointType.HandLeft },
-        { Kinect.JointType.ThumbLeft, Kinect.JointType.HandLeft },
-        { Kinect.JointType.HandLeft, Kinect.JointType.WristLeft },
-        { Kinect.JointType.WristLeft, Kinect.JointType.ElbowLeft },
-        { Kinect.JointType.ElbowLeft, Kinect.JointType.ShoulderLeft },
-        { Kinect.JointType.ShoulderLeft, Kinect.JointType.SpineShoulder },
-
-        { Kinect.JointType.HandTipRight, Kinect.JointType.HandRight },
-        { Kinect.JointType.ThumbRight, Kinect.JointType.HandRight },
-        { Kinect.JointType.HandRight, Kinect.JointType.WristRight },
-        { Kinect.JointType.WristRight, Kinect.JointType.ElbowRight },
-        { Kinect.JointType.ElbowRight, Kinect.JointType.ShoulderRight },
-        { Kinect.JointType.ShoulderRight, Kinect.JointType.SpineShoulder },
-
-        { Kinect.JointType.SpineBase, Kinect.JointType.SpineMid },
-        { Kinect.JointType.SpineMid, Kinect.JointType.SpineShoulder },
-        { Kinect.JointType.SpineShoulder, Kinect.JointType.Neck },
-        { Kinect.JointType.Neck, Kinect.JointType.Head },
-    };
 
     private float t;
     private bool beginUpdate;
@@ -69,6 +38,7 @@ public class Visualizer_FadeInSeries : MonoBehaviour
 
     public void ShowBody()
     {
+        Vector3[] prevRescaledJoints = new Vector3[25];
         for (int i = 0; i < jointsDataSeries.Count; i++)
         {
             // Create GameObject body
@@ -76,6 +46,10 @@ public class Visualizer_FadeInSeries : MonoBehaviour
             body.transform.parent = gameObject.transform;
             bodies.Add(body);
 
+            JointsData jd = jointsDataSeries[i];
+            Vector3[] joints = HelperScript.ConvertJointsDataToVector3Array(jd);
+            Vector3[] rescaledJoints = HelperScript.RescaleJoints(joints);
+
             for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
             {
                 // Skip these joints
@@ -103,13 +77,13 @@ public class Visualizer_FadeInSeries : MonoBehaviour
 
                 jointObj.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
                 jointObj.name = jt.ToString();
-                jointObj.transform.position = new Vector3(jointsDataSeries[i].jointsPositionsX[(int)jt], jointsDataSeries[i].jointsPositionsY[(int)jt], jointsDataSeries[i].jointsPositionsZ[(int)jt]);
+                jointObj.transform.position = rescaledJoints[(int)jt];
                 jointObj.transform.parent = body.transform;
 
                 // Don't show joint if current and previous are almost the same position
                 if (i > 0)
                 {
-                    Vector3 prev = new Vector3(jointsDataSeries[i - 1].jointsPositionsX[(int)jt], jointsDataSeries[i - 1].jointsPositionsY[(int)jt], jointsDataSeries[i - 1].jointsPositionsZ[(int)jt]);
+                    Vector3 prev = prevRescaledJoints[(int)jt];
                     float distance = (jointObj.transform.position - prev).magnitude;
                     if (distance < 0.05f)
                     {
@@ -128,20 +102,22 @@ public class Visualizer_FadeInSeries : MonoBehaviour
                 {
                     Destroy(jointObj.GetComponent<LineRenderer>());
                 }
+
+                prevRescaledJoints = rescaledJoints;
             }
 
             // Connect the joints with LineRenderer
             for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++)
             {
                 // Skip if dictionary not contains the joint or other these joints
-                if (!_BoneMap.ContainsKey(jt) || jt == Kinect.JointType.Neck
+                if (!HelperScript._BoneMap.ContainsKey(jt) || jt == Kinect.JointType.Neck
                     || jt == Kinect.JointType.ThumbLeft || jt == Kinect.JointType.ThumbRight
                         || jt == Kinect.JointType.HandLeft || jt == Kinect.JointType.HandRight
                         || jt == Kinect.JointType.HandTipLeft || jt == Kinect.JointType.HandTipRight)
                     continue;
 
                 Transform jointObj = body.transform.Find(jt.ToString());
-                Transform targetJoint = body.transform.Find(_BoneMap[jt].ToString());
+                Transform targetJoint = body.transform.Find(HelperScript._BoneMap[jt].ToString());
                 LineRenderer lr = jointObj.GetComponent<LineRenderer>();
 
                 lr.SetPosition(0, jointObj.localPosition);