private void DrawSkeleton(object sender, RoutedEventArgs e) { System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog(); dialog.Description = "请选择动作数据文件夹路径"; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string foldPath = dialog.SelectedPath; String dataFilePath = foldPath + "/skeletonData.txt"; String skeletonImageFoldPath = foldPath + "/skeletonFrame"; if (!File.Exists(dataFilePath)) { MessageBox.Show("文件 " + dataFilePath + " 不存在."); return; } if (!Directory.Exists(skeletonImageFoldPath)) { Directory.CreateDirectory(skeletonImageFoldPath); } Thread thread = new Thread(() => { using (StreamReader sr = new StreamReader(dataFilePath)) { String line; while ((line = sr.ReadLine()) != null) { MySkeleton skeleton = CommonUtil.jsonStrToMySkeleton(line); } } Dispatcher.Invoke(() => MessageBox.Show("图片绘制完成")); }); thread.IsBackground = false; thread.Start(); } }
public Vector3 createJoint(MySkeleton skel, int firstJoint, int secondJoint, Kinect.JointType jointToMove, int index) { float Xtrans = translateX(skel, firstJoint, secondJoint, index); float Ytrans = translateY(skel, firstJoint, secondJoint, index); float Ztrans = translateZ(skel, firstJoint, secondJoint, index); // Debug.Log ("x transition: " + Xtrans+" ytansitiion: "+ Ytrans+" z transition: "+Ztrans); Vector3 Position = new Vector3 ((float)(skel.Position[(int)jointToMove].x - Xtrans), (float)(skel.Position[(int)jointToMove].y - Ytrans), (float)(skel.Position[(int)jointToMove].z - Ztrans)); return Position; }
public void OpenSkeleton(string path) { using (CsvFileReader reader = new CsvFileReader(path)) { sktList = new List <MySkeleton>(); CsvRow row = new CsvRow(); // one frame skeleton while (reader.ReadRow(row)) { var skt = new MySkeleton(14); if (row[0].ToLower().Trim().Equals("untracked")) { skt.Tracked = false; } else { int step = 7; // one joint for (int i = 0; i < row.Count; i += step) { var type = i / step; var joint = new MyJoint() { Pos3D = new SkeletonPoint() { X = Convert.ToSingle(row[i]), Y = Convert.ToSingle(row[i + 1]), Z = Convert.ToSingle(row[i + 2]) }, PosColor = new System.Drawing.Point() { X = (int)Convert.ToSingle(row[i + 3]), Y = (int)Convert.ToSingle(row[i + 4]) }, PosDepth = new System.Drawing.Point() { X = (int)Convert.ToSingle(row[i + 5]), Y = (int)Convert.ToSingle(row[i + 6]) } }; skt[type] = joint; } } sktList.Add(skt); } } //foreach (var mySkeleton in sktList) //{ // Console.Write(mySkeleton[MyJointType.Head].PosColor.X); //} }
public static double computeSimilarity(MySkeleton skel1, MySkeleton skel2) { double[][] vector1 = computeVectors(skel1); double[][] vector2 = computeVectors(skel2); double similarity = 0; for (int i = 0; i < vector1.Length; i++) { similarity += (1 - computeCosineSimilarity(vector1[i][0], vector1[i][1], vector1[i][2], vector2[i][0], vector2[i][1], vector2[i][2])); } return(similarity / 4); }
public static List <MySkeleton> meanFilter(List <MySkeleton> list) { int N = 5; int d = (N - 1) / 2; List <MySkeleton> result = new List <MySkeleton>(); for (int i = 0; i < list.Count; i++) { int start = Math.Max(0, i - d), end = Math.Min(list.Count - 1, i + d), count = end - start + 1; Dictionary <JointType, float[]> data = new Dictionary <JointType, float[]>(); for (int j = start; j <= end; j++) { foreach (KeyValuePair <JointType, MyJoint> pair in list[j].Joints) { if (!data.ContainsKey(pair.Key)) { data[pair.Key] = new float[] { pair.Value.Position.X, pair.Value.Position.Y, pair.Value.Position.Z }; } else { data[pair.Key][0] += pair.Value.Position.X; data[pair.Key][1] += pair.Value.Position.Y; data[pair.Key][2] += pair.Value.Position.Z; } } } MySkeleton skel = new MySkeleton(); foreach (KeyValuePair <JointType, float[]> pair in data) { SkeletonPoint point = new SkeletonPoint(); point.X = data[pair.Key][0] / count; point.Y = data[pair.Key][1] / count; point.Z = data[pair.Key][2] / count; skel.Joints[pair.Key] = new MyJoint(list[i].Joints[pair.Key].JointType, point, list[i].Joints[pair.Key].TrackingState); } result.Add(skel); } return(result); }
public static double[][] computeVectors(MySkeleton skeleton) { MyJoint joint0 = skeleton.Joints[JointType.ShoulderLeft]; MyJoint joint1 = skeleton.Joints[JointType.ElbowLeft]; double[] vectorShoulderElbowLeft = computeVector(joint0, joint1); joint0 = skeleton.Joints[JointType.ElbowLeft]; joint1 = skeleton.Joints[JointType.WristLeft]; double[] vectorElbowWristLeft = computeVector(joint0, joint1); joint0 = skeleton.Joints[JointType.ShoulderRight]; joint1 = skeleton.Joints[JointType.ElbowRight]; double[] vectorShoulderElbowRight = computeVector(joint0, joint1); joint0 = skeleton.Joints[JointType.ElbowRight]; joint1 = skeleton.Joints[JointType.WristRight]; double[] vectorElbowWristRight = computeVector(joint0, joint1); return(new double[][] { vectorShoulderElbowLeft, vectorElbowWristLeft, vectorShoulderElbowRight, vectorElbowWristRight }); }
public static MySkeleton jsonStrToMySkeleton(String jsonStr) { MySkeleton skel = new MySkeleton(); JSONArray array = new JSONArray(jsonStr); for (int i = 0; i < array.Length(); i++) { JSONObject jointObj = array.GetJSONObject(i); JSONArray positionArray = jointObj.GetJSONArray("Position"); JointType jointType = jointTypeNameReverseMap[jointObj.GetString("JointType")]; JointTrackingState trackingState = jointTrackingStateNameReverseMap[jointObj.GetString("TrackingState")]; SkeletonPoint position = new SkeletonPoint(); position.X = float.Parse(positionArray.GetString(0)); position.Y = float.Parse(positionArray.GetString(1)); position.Z = float.Parse(positionArray.GetString(2)); skel.Joints[jointType] = new MyJoint(jointType, position, trackingState); } return(skel); }
public MySkeleton resizeSkeleton(MySkeleton skel) { MySkeleton newSkeleton = new MySkeleton (); newSkeleton = skel; //spine newSkeleton.Position[(int)Kinect.JointType.SpineMid] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.SpineMid, 0)); newSkeleton.Position[(int)Kinect.JointType.Neck] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.Neck, 0)); newSkeleton.Position[(int)Kinect.JointType.Head] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.Head, 0)); newSkeleton.Position[(int)Kinect.JointType.ShoulderLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.ShoulderLeft, 0)); newSkeleton.Position[(int)Kinect.JointType.ElbowLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.ElbowLeft, 0)); newSkeleton.Position[(int)Kinect.JointType.WristLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.WristLeft, 0)); newSkeleton.Position[(int)Kinect.JointType.HandLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.HandLeft, 0)); newSkeleton.Position[(int)Kinect.JointType.ShoulderRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.ShoulderRight, 0)); newSkeleton.Position[(int)Kinect.JointType.ElbowRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.ElbowRight, 0)); newSkeleton.Position[(int)Kinect.JointType.WristRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.WristRight, 0)); newSkeleton.Position[(int)Kinect.JointType.HandRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.SpineMid, Kinect.JointType.HandRight, 0)); //shoulder center newSkeleton.Position[(int)Kinect.JointType.Neck] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.Neck, 1)); newSkeleton.Position[(int)Kinect.JointType.Head] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.Head, 1)); newSkeleton.Position[(int)Kinect.JointType.ShoulderLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.ShoulderLeft, 1)); newSkeleton.Position[(int)Kinect.JointType.ElbowLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.ElbowLeft, 1)); newSkeleton.Position[(int)Kinect.JointType.WristLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.WristLeft, 1)); newSkeleton.Position[(int)Kinect.JointType.HandLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.HandLeft, 1)); newSkeleton.Position[(int)Kinect.JointType.ShoulderRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.ShoulderRight, 1)); newSkeleton.Position[(int)Kinect.JointType.ElbowRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.ElbowRight, 1)); newSkeleton.Position[(int)Kinect.JointType.WristRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.WristRight, 1)); newSkeleton.Position[(int)Kinect.JointType.HandRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineMid, (int)Kinect.JointType.Neck, Kinect.JointType.HandRight, 1)); //head newSkeleton.Position[(int)Kinect.JointType.Head] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.Head, Kinect.JointType.Head, 2)); //shoulder left newSkeleton.Position[(int)Kinect.JointType.ShoulderLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.ShoulderLeft, Kinect.JointType.ShoulderLeft, 3)); newSkeleton.Position[(int)Kinect.JointType.ElbowLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.ShoulderLeft, Kinect.JointType.ElbowLeft, 3)); newSkeleton.Position[(int)Kinect.JointType.WristLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.ShoulderLeft, Kinect.JointType.WristLeft, 3)); newSkeleton.Position[(int)Kinect.JointType.HandLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.ShoulderLeft, Kinect.JointType.HandLeft, 3)); //elbow left newSkeleton.Position[(int)Kinect.JointType.ElbowLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ShoulderLeft, (int)Kinect.JointType.ElbowLeft, Kinect.JointType.ElbowLeft, 4)); newSkeleton.Position[(int)Kinect.JointType.WristLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ShoulderLeft, (int)Kinect.JointType.ElbowLeft, Kinect.JointType.WristLeft, 4)); newSkeleton.Position[(int)Kinect.JointType.HandLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ShoulderLeft, (int)Kinect.JointType.ElbowLeft, Kinect.JointType.HandLeft, 4)); //wrist left newSkeleton.Position[(int)Kinect.JointType.WristLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ElbowLeft, (int)Kinect.JointType.WristLeft, Kinect.JointType.WristLeft, 5)); newSkeleton.Position[(int)Kinect.JointType.HandLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ElbowLeft, (int)Kinect.JointType.WristLeft, Kinect.JointType.HandLeft, 5)); //hand left newSkeleton.Position[(int)Kinect.JointType.HandLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.WristLeft, (int)Kinect.JointType.HandLeft, Kinect.JointType.HandLeft, 6)); //shoulder right newSkeleton.Position[(int)Kinect.JointType.ShoulderRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.ShoulderRight, Kinect.JointType.ShoulderRight, 7)); newSkeleton.Position[(int)Kinect.JointType.ElbowRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.ShoulderRight, Kinect.JointType.ElbowRight, 7)); newSkeleton.Position[(int)Kinect.JointType.WristRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.ShoulderRight, Kinect.JointType.WristRight, 7)); newSkeleton.Position[(int)Kinect.JointType.HandRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.Neck, (int)Kinect.JointType.ShoulderRight, Kinect.JointType.HandRight, 7)); //elbow right newSkeleton.Position[(int)Kinect.JointType.ElbowRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ShoulderRight, (int)Kinect.JointType.ElbowRight, Kinect.JointType.ElbowRight, 8)); newSkeleton.Position[(int)Kinect.JointType.WristRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ShoulderRight, (int)Kinect.JointType.ElbowRight, Kinect.JointType.WristRight, 8)); newSkeleton.Position[(int)Kinect.JointType.HandRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ShoulderRight, (int)Kinect.JointType.ElbowRight, Kinect.JointType.HandRight, 8)); //wrist right newSkeleton.Position[(int)Kinect.JointType.WristRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ElbowRight, (int)Kinect.JointType.WristRight, Kinect.JointType.WristRight, 9)); newSkeleton.Position[(int)Kinect.JointType.HandRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.ElbowRight, (int)Kinect.JointType.WristRight, Kinect.JointType.HandRight, 9)); //hand right newSkeleton.Position[(int)Kinect.JointType.HandRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.WristRight, (int)Kinect.JointType.HandRight, Kinect.JointType.HandRight, 10)); //hip left; newSkeleton.Position[(int)Kinect.JointType.HipLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.HipLeft, Kinect.JointType.HipLeft, 11)); newSkeleton.Position[(int)Kinect.JointType.KneeLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.HipLeft, Kinect.JointType.KneeLeft, 11)); newSkeleton.Position[(int)Kinect.JointType.AnkleLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.HipLeft, Kinect.JointType.AnkleLeft, 11)); newSkeleton.Position[(int)Kinect.JointType.FootLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.HipLeft, Kinect.JointType.FootLeft, 11)); //knee left newSkeleton.Position[(int)Kinect.JointType.KneeLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.HipLeft, (int)Kinect.JointType.KneeLeft, Kinect.JointType.KneeLeft, 12)); newSkeleton.Position[(int)Kinect.JointType.AnkleLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.HipLeft, (int)Kinect.JointType.KneeLeft, Kinect.JointType.AnkleLeft, 12)); newSkeleton.Position[(int)Kinect.JointType.FootLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.HipLeft, (int)Kinect.JointType.KneeLeft, Kinect.JointType.FootLeft, 12)); //ankle left newSkeleton.Position[(int)Kinect.JointType.AnkleLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.KneeLeft, (int)Kinect.JointType.AnkleLeft, Kinect.JointType.AnkleLeft, 13)); newSkeleton.Position[(int)Kinect.JointType.FootLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.KneeLeft, (int)Kinect.JointType.AnkleLeft, Kinect.JointType.FootLeft, 13)); //foot left newSkeleton.Position[(int)Kinect.JointType.FootLeft] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.AnkleLeft, (int)Kinect.JointType.FootLeft, Kinect.JointType.FootLeft, 14)); //hip right; newSkeleton.Position[(int)Kinect.JointType.HipRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.HipRight, Kinect.JointType.HipRight, 15)); newSkeleton.Position[(int)Kinect.JointType.KneeRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.HipRight, Kinect.JointType.KneeRight, 15)); newSkeleton.Position[(int)Kinect.JointType.AnkleRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.HipRight, Kinect.JointType.AnkleRight, 15)); newSkeleton.Position[(int)Kinect.JointType.FootRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.SpineBase, (int)Kinect.JointType.HipRight, Kinect.JointType.FootRight, 15)); //knee right newSkeleton.Position[(int)Kinect.JointType.KneeRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.HipRight, (int)Kinect.JointType.KneeRight, Kinect.JointType.KneeRight, 16)); newSkeleton.Position[(int)Kinect.JointType.AnkleRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.HipRight, (int)Kinect.JointType.KneeRight, Kinect.JointType.AnkleRight, 16)); newSkeleton.Position[(int)Kinect.JointType.FootRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.HipRight, (int)Kinect.JointType.KneeRight, Kinect.JointType.FootRight, 16)); //ankle right newSkeleton.Position[(int)Kinect.JointType.AnkleRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.KneeRight, (int)Kinect.JointType.AnkleRight, Kinect.JointType.AnkleRight, 17)); newSkeleton.Position[(int)Kinect.JointType.FootRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.KneeRight, (int)Kinect.JointType.AnkleRight, Kinect.JointType.FootRight, 17)); //foot right newSkeleton.Position[(int)Kinect.JointType.FootRight] = new Vector3Serializer(createJoint(newSkeleton, (int)Kinect.JointType.AnkleRight, (int)Kinect.JointType.FootRight, Kinect.JointType.FootRight, 18)); return newSkeleton; }
private double calculateBoneLength(MySkeleton skeleton, int jointType1, int jointType2) { double length = Math.Round(Math.Sqrt( (Math.Pow(skeleton.Position[(int)jointType1].x - skeleton.Position[(int)jointType2].x, 2)) + (Math.Pow(skeleton.Position[(int)jointType1].y - skeleton.Position[(int)jointType2].y, 2)) + (Math.Pow(skeleton.Position[(int)jointType1].z - skeleton.Position[(int)jointType2].z, 2))), 3); return length; }
public float translateZ(MySkeleton skel, int anchor, int moved, int index) { double A = calculateBoneLength(skel, anchor, moved); double B = referenceBoneLengths[index]; float Zresized = skel.Position[(int)moved].z; float Zanchor = skel.Position[(int)anchor].z; float translateZ = Zresized - (((Zresized - Zanchor) / (float)A) * (float)B + Zanchor); return translateZ; }
public float translateY(MySkeleton skel, int anchor, int moved, int index) { double A = calculateBoneLength(skel, anchor, moved); double B = referenceBoneLengths[index]; float Yresized = skel.Position[moved].y; float Yanchor = skel.Position[anchor].y; float translateY = Yresized - (((Yresized - Yanchor) / (float)A) * (float)B + Yanchor); return translateY; }
public float translateX(MySkeleton skel, int anchor, int moved,int index) { double A = calculateBoneLength(skel, anchor, moved); double B = referenceBoneLengths[index]; //Debug.Log ("A:" + A + "B:" + B); float Xresized = skel.Position[(int)moved].x; float Xanchor = skel.Position[(int)anchor].x; float translateX = Xresized - (((Xresized - Xanchor) / (float)A) * (float)B + Xanchor); return translateX; }
private void RefreshBodyObject(MySkeleton skeleton, MySkeleton firstSkeleton) { //Debug.Log (skeleton.Position [(int)Kinect.JointType.SpineMid].getVector ()); Hip_Center.localPosition = skeleton.Position[(int)Kinect.JointType.SpineBase].getVector(); Spine.localPosition = skeleton.Position [(int)Kinect.JointType.SpineMid].getVector(); Shoulder_Center.localPosition = skeleton.Position[(int)Kinect.JointType.SpineShoulder].getVector(); Head.localPosition = skeleton.Position[(int)Kinect.JointType.Head].getVector(); Shoulder_Left.localPosition = skeleton.Position[(int)Kinect.JointType.ShoulderLeft].getVector(); Elbow_Left.localPosition = skeleton.Position[(int)Kinect.JointType.ElbowLeft].getVector(); Wrist_Left.localPosition = skeleton.Position[(int)Kinect.JointType.WristLeft].getVector(); Hand_Left.localPosition = skeleton.Position[(int)Kinect.JointType.HandLeft].getVector(); Shoulder_Right.localPosition = skeleton.Position[(int)Kinect.JointType.ShoulderRight].getVector(); Elbow_Right.localPosition = skeleton.Position[(int)Kinect.JointType.ElbowRight].getVector(); Wrist_Right.localPosition = skeleton.Position[(int)Kinect.JointType.WristRight].getVector(); Hand_Right.localPosition = skeleton.Position[(int)Kinect.JointType.HandRight].getVector(); Hip_Left.localPosition = skeleton.Position[(int)Kinect.JointType.HipLeft].getVector(); Knee_Left.localPosition = skeleton.Position[(int)Kinect.JointType.KneeLeft].getVector(); Ankle_Left.localPosition = skeleton.Position[(int)Kinect.JointType.AnkleLeft].getVector(); Foot_Left.localPosition = skeleton.Position[(int)Kinect.JointType.FootLeft].getVector(); Hip_Right.localPosition = skeleton.Position[(int)Kinect.JointType.HipRight].getVector(); Knee_Right.localPosition = skeleton.Position[(int)Kinect.JointType.KneeRight].getVector(); Ankle_Right.localPosition = skeleton.Position[(int)Kinect.JointType.AnkleRight].getVector(); Foot_Right.localPosition = skeleton.Position[(int)Kinect.JointType.FootRight].getVector(); }
private double calculateHeight(MySkeleton skeleton, Kinect.JointType jointType1, Kinect.JointType jointType2) { double length = Math.Round(Math.Sqrt( (Math.Pow(skeleton.Position[(int)jointType1].x - skeleton.Position[(int)jointType2].x, 2)) + (Math.Pow(skeleton.Position[(int)jointType1].y - skeleton.Position[(int)jointType2].y, 2)) + (Math.Pow(skeleton.Position[(int)jointType1].z - skeleton.Position[(int)jointType2].z, 2))), 3); return length; }
private double calculateBoneLength(MySkeleton skeleton,JointType jointType1, JointType jointType2) { //Debug.Log (jointType1.ToString () + skeleton.Position [(int)jointType1].getVector ().x); double length = Math.Round(Math.Sqrt( (Math.Pow(skeleton.Position[(int)jointType1].getVector().x - skeleton.Position[(int)jointType2].getVector().x, 2)) + (Math.Pow(skeleton.Position[(int)jointType1].getVector().y - skeleton.Position[(int)jointType2].getVector().y, 2)) + (Math.Pow(skeleton.Position[(int)jointType1].getVector().z - skeleton.Position[(int)jointType2].getVector().z, 2))), 3); return length; }