private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { joints = new List <Vector3>(new Vector3[0]); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; joints.Add(GetVector3FromJoint(sourceJoint)); if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); if (jt == 0) { //GameObject.FindGameObjectWithTag("comparison").transform.localPosition = new Vector3(jointObj.localPosition.x, jointObj.localPosition.y, jointObj.localPosition.z); //GameObject.FindGameObjectWithTag("comparision").transform.position = new Vector3(GameObject.FindGameObjectWithTag("comparision").transform.position.x, jointObj.localPosition.y, GameObject.FindGameObjectWithTag("comparision").transform.position.z); Realtime_Player.SaveCurrentPosition(new Vector3(jointObj.localPosition.x, jointObj.localPosition.y, jointObj.localPosition.z)); } if (jt == Kinect.JointType.FootLeft) { variable_holder.minPos = jointObj.position.y; print(variable_holder.minPos); //GameObject.Find("FloorCube").transform.position = new Vector3 (0, variable_holder.minPos, 0); } if (jt == Kinect.JointType.FootLeft) { variable_holder.yvalue = jointObj.transform.position.y; } //if (jt == 0) //{ // GameObject.FindGameObjectWithTag("KinectPlayer").transform.position = new Vector3(jointObj.localPosition.x, GameObject.FindGameObjectWithTag("KinectPlayer").transform.position.y, 3.45f - jointObj.localPosition.z); // Realtime_Player_MCS.SaveCurrentPosition(new Vector3(jointObj.localPosition.x, GameObject.FindGameObjectWithTag("MCSRealtime").transform.position.y, jointObj.localPosition.z)); //} //LineRenderer lr = jointObj.GetComponent<LineRenderer>(); //if (targetJoint.HasValue) //{ // lr.SetPosition(0, jointObj.localPosition); // lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); // lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); //} //else //{ // lr.enabled = false; //} } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { Debug.Log(body.Joints [Kinect.JointType.Head].Position.Y - body.Joints [Kinect.JointType.FootLeft].Position.Y); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = Vector3.MoveTowards(jointObj.localPosition, GetVector3FromJoint(sourceJoint), 100 * Time.deltaTime); if (jt.Equals(Kinect.JointType.HandRight)) { Windows.Kinect.Vector4 orientation = body.JointOrientations [jt].Orientation; jointObj.localRotation = Quaternion.RotateTowards(jointObj.localRotation, new Quaternion(orientation.X, orientation.Y, orientation.Z, orientation.W), 800 * Time.deltaTime); //jointObj.Rotate(0, 90, 0); } LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { outputList.Add(Time.frameCount.ToString()); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); //Transform jointObjDancer = DancerBody.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); //jointObjDancer.localPosition = GetVector3FromJoint(sourceJoint); // write the coordinates to a file // get coordinates float x = jointObj.localPosition.x; float y = jointObj.localPosition.y; float z = jointObj.localPosition.z; // text to be printed string outputline = sourceJoint.JointType.ToString() + ": " + x.ToString() + "," + y.ToString() + "," + z.ToString(); outputList.Add(outputline); // lines between the joints LineRenderer lr = jointObj.GetComponent <LineRenderer>(); //LineRenderer lr2 = jointObjDancer.GetComponent<LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } // check if current body position matches anything moveMatch(body, bodyObject); }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); //print(controlPoint + "Left"); //if (jointObj.name.Equals("ElbowLeft")) if (jointObj.name.Equals("WristLeft")) { WristLeft = jointObj.position; } //if (jointObj.name.Equals("ElbowRight")) if (jointObj.name.Equals("WristRight")) { WristRight = jointObj.position; } if (jointObj.name.Equals("HandTipLeft")) { HandTipLeft = jointObj.position; } if (jointObj.name.Equals("HandTipRight")) { HandTipRight = jointObj.position; } if (jointObj.name.Equals(controlPoint + "Left")) { controlLeft = jointObj.position; } if (jointObj.name.Equals(controlPoint + "Right")) { controlRight = jointObj.position; } if (jointObj.name.Equals(controlAxisText)) { controlAxis = jointObj.position; } //lr.enabled = false; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject, Text text) { count++; Kinect.Joint s = body.Joints[Kinect.JointType.WristLeft]; Kinect.Joint t = body.Joints[Kinect.JointType.WristRight]; BodyProperties BP = bodyObject.GetComponent <BodyProperties>(); //text.color = UnityEngine.Color.white; //text.text = BP.startGame.ToString(); //text.text += "\n" + BP.InitializeObj.ToString(); //text.text += "\n" + BP.countinst.ToString(); //text.fontSize = 25; //text.text += "\n" + BP.leftarmLength; //text.text += "\n" + BP.rightarmLength; //text.text = Math.Round(BP.CalculateDistance(s, t), 2).ToString(); //text.text += "\n"+Math.Round(BP.CalculateDistanceByFormula(s, t), 2).ToString(); Kinect.Joint bodyJoint = body.Joints[Kinect.JointType.SpineBase]; bodyObject.transform.position = GetVector3FromJoint(bodyJoint); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.position = GetVector3FromJoint(sourceJoint); if (jointObj.name.Contains("Head") && count % 7 == 0) { JointsProperties jp = jointObj.GetComponent <JointsProperties>(); //Debug.Log(jointObj.name + ": (" + jp.position.x + "," + jp.position.y + "," + jp.position.z + ")"); } GameObject JointObject = jointObj.gameObject; JointsProperties joint = JointObject.GetComponent <JointsProperties>(); joint.position = jointObj.position; joint.UpdateDistanceFromGround(); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.position); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.startColor = GetColorForState(sourceJoint.TrackingState); lr.endColor = GetColorForState(targetJoint.Value.TrackingState); } else { lr.enabled = false; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { Kinect.JointType jt = Kinect.JointType.HandLeft; Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); jt = Kinect.JointType.HandRight; sourceJoint = body.Joints[jt]; targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); /* * for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) * { * Kinect.Joint sourceJoint = body.Joints[jt]; * Kinect.Joint? targetJoint = null; * * if(_BoneMap.ContainsKey(jt)) * { * targetJoint = body.Joints[_BoneMap[jt]]; * } * * Transform jointObj = bodyObject.transform.Find(jt.ToString()); * jointObj.localPosition = GetVector3FromJoint(sourceJoint); */ // LineRenderer lr = jointObj.GetComponent<LineRenderer>(); // if(targetJoint.HasValue) // { // lr.SetPosition(0, jointObj.localPosition); // lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); // lr.SetColors(GetColorForState (sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); // } // else // { // lr.enabled = false; // } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Vector3 position = GetVector3FromJoint(sourceJoint); if (float.IsInfinity(position.x) || float.IsNegativeInfinity(position.x) || float.IsInfinity(position.y) || float.IsNegativeInfinity(position.y)) { continue; } Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); jointObj.localPosition = position; LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { if (jt == Kinect.JointType.HandLeft || jt == Kinect.JointType.HandRight || jt == Kinect.JointType.HandTipLeft || jt == Kinect.JointType.HandTipRight || jt == Kinect.JointType.ThumbLeft || jt == Kinect.JointType.ThumbRight) { isAHandDetected = true; } lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.startColor = GetColorForState(sourceJoint.TrackingState); lr.endColor = GetColorForState(targetJoint.Value.TrackingState); } else { lr.enabled = false; } } // If we get through all joints and still haven't found a hand, zero // enterCount for all holds. This prevents a hold from getting stuck "on" // if the kinect loses track of the hand while it is grabbing a hold if (!isAHandDetected) { GameObject[] holds = GameObject.FindGameObjectsWithTag("Hold"); foreach (GameObject hold in holds) { hold.GetComponent <ClimbingHold>().enterCount = 0; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); Transform tem = jointObj; Vector3 aux = new Vector3(tem.transform.position.x * (-2), 0, 0); tem.transform.position = tem.transform.position + aux; jointObj.localPosition = tem.transform.position; ///moviendo la camara con el join.head if (jt == Kinect.JointType.Head) { //cam_head.transform.position = tem.transform.position; cam_head.transform.position = jointObj.localPosition; } //moviendo saber izquierdo if (jt == Kinect.JointType.HandTipLeft) { saber_left.transform.position = jointObj.localPosition; //jointObj.localRotation= saber_left.transform.localRotation; } //moviendo saber derecho if (jt == Kinect.JointType.HandTipRight) { saber_right.transform.position = jointObj.localPosition; } ///para dibujar los huesos //LineRenderer lr = jointObj.GetComponent<LineRenderer>(); //if(targetJoint.HasValue) //{ // lr.SetPosition(0, jointObj.localPosition); // lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); // //lr.SetColors(GetColorForState (sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); //} //else //{ // lr.enabled = false; //} } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { //if (jt < Kinect.JointType.ShoulderLeft || jt > Kinect.JointType.HandRight || jt == Kinect.JointType.ShoulderLeft || jt == Kinect.JointType.ShoulderRight) continue; //if (jt < Kinect.JointType.ElbowRight || jt > Kinect.JointType.HandRight) continue; //if (jt != Kinect.JointType.HandRight && jt != Kinect.JointType.HandLeft) continue; if (jt != Kinect.JointType.HandRight) { continue; } Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { Vector3 vectorPos = jointObj.localPosition; DateTime currentTime = DateTime.Now; double currentMillis = (currentTime - new DateTime(1970, 1, 1)).TotalMilliseconds; //long currentMillis = (long)(currentTime.Ticks / TimeSpan.TicksPerMillisecond); if ((System.Math.Abs(lastUniqueCoordinates.x - vectorPos.x) > 0.1 || System.Math.Abs(lastUniqueCoordinates.y - vectorPos.y) > 0.1) && currentMillis - lastEmissionTime > 50) //&& //currentmillis - lastemissiontime > 60) { //String milliString = vectorPos[0] + " " + vectorPos[1] + " " + (currentMillis - firstEmissionTime).ToString() + " " + (++emitted); // millisecond resolution //String fullString = vectorPos.ToString() + " " + Convert.ToString(currentTime); // second-level resolution //UnityEngine.Debug.Log("Reached emit loop, with value " + milliString); handleBPM(vectorPos.x, vectorPos.y, vectorPos.z, currentMillis - firstEmissionTime, ++emitted); //socket.Emit("kinect", JSONObject.StringObject(milliString)); //socket.Update(); lastUniqueCoordinates = vectorPos; lastEmissionTime = currentMillis; } //socket.Update(); lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { count++; Kinect.Joint s = body.Joints[Kinect.JointType.WristLeft]; Kinect.Joint t = body.Joints[Kinect.JointType.WristRight]; BodyProperties BP = bodyObject.GetComponent <BodyProperties>(); Kinect.Joint bodyJoint = body.Joints[Kinect.JointType.SpineBase]; bodyObject.transform.position = GetVector3FromJoint(bodyJoint); Kinect.Vector4 BodyOrientation = body.JointOrientations[Kinect.JointType.SpineBase].Orientation; bodyObject.transform.rotation = GetQuaterion(BodyOrientation); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find("Skeleton" + jt.ToString()); jointObj.position = GetVector3FromJoint(sourceJoint); if (jointObj.name.Contains("Head") && count % 7 == 0) { JointsProperties jp = jointObj.GetComponent <JointsProperties>(); //Debug.Log(jointObj.name + ": (" + jp.position.x + "," + jp.position.y + "," + jp.position.z + ")"); } GameObject JointObject = jointObj.gameObject; JointsProperties joint = JointObject.GetComponent <JointsProperties>(); joint.position = jointObj.position; joint.UpdateDistanceFromGround(); joint.TrackingState = sourceJoint.TrackingState; JointObject.GetComponent <Renderer>().material.color = GetColorForState(sourceJoint.TrackingState); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.position); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.startColor = GetColorForState(sourceJoint.TrackingState); lr.endColor = GetColorForState(targetJoint.Value.TrackingState); } else { lr.enabled = false; } } }
public void RefreshBodyObject(Body body, GameObject bodyObject) { Windows.Kinect.Joint spineJoint = body.Joints[JointType.SpineBase]; Vector3 spineBasePos = GetVector3FromJoint(spineJoint); Vector3 spineBaseOrig = new Vector3(spineJoint.Position.X, spineJoint.Position.Y, spineJoint.Position.Z); for (JointType jt = JointType.SpineBase; jt < JointType.ThumbRight; jt++) { Windows.Kinect.Joint sourceJoint = body.Joints[jt]; Windows.Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); //jointObj.localPosition = GetVector3FromJoint(sourceJoint); int ZClamp = 0; Vector3 clampedPos = GetZClampedVector3FromJoint(sourceJoint, ZClamp, spineBasePos); clampedPos = ScaleXY(clampedPos, sourceJoint, spineBaseOrig); if (jointObj != null) { jointObj.localPosition = clampedPos; } //Vector3 pos = Camera.main.WorldToScreenPoint(ZClampedPos); //pos.x /= Camera.main.pixelWidth; //pos.y /= Camera.main.pixelHeight; //jointObj.localPosition = pos; ////Vector3 pos = Camera.main.WorldToViewportPoint(ZClampedPos); ////jointObj.localPosition = pos; // Manipulate display of the body //LineRenderer lr = jointObj.GetComponent<LineRenderer>(); //if (targetJoint.HasValue) //{ // lr.SetPosition(0, jointObj.localPosition); // lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); // lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); //} //else //{ // lr.enabled = false; //} } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { StickDetect.reset(Time.deltaTime); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { StickDetect.setPos(jointObj.localPosition, jt); lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } StickDetect.Update(Time.deltaTime); // displace Stick Vector3 front = StickDetect.getDirection().normalized; Vector3 pos = StickDetect.getPosition(); Stick.transform.LookAt(pos + front); Stick.transform.position = pos + front * (Stick.transform.localScale.z / 2.0f - 0.05f); AudioSource stickAudio = Stick.GetComponent <AudioSource>(); if (StickDetect.isSwinging() && !stickAudio.isPlaying) { stickAudio.clip = ClipSwingLight; stickAudio.time = 0.12f; stickAudio.Play(); } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; Kinect.Joint elbowLeftJoint = body.Joints[Kinect.JointType.ElbowLeft]; Kinect.Joint?goJoint = null; if (_BoneMap.ContainsKey(jt) || _BoneMap.ContainsKey(jt)) { //targetJoint = body.Joints[_BoneMap[jt]]; goJoint = body.Joints[Kinect.JointType.ElbowLeft]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); /*LineRenderer lr = jointObj.GetComponent<LineRenderer>(); * if (targetJoint.HasValue) * { * lr.SetPosition(0, jointObj.localPosition); * lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); * lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); * } * else * { * lr.enabled = false; * }*/ Transform goObj = bodyObject.transform.Find(jt.ToString()); //goObj.localPosition = GetVector3FromJoint(footLeftJoint); goObj.position = new Vector3((elbowLeftJoint.Position.X * 10) + 10, elbowLeftJoint.Position.Y * 10, elbowLeftJoint.Position.Z * 10); } /* * Kinect.Joint elbowLeftJoint = body.Joints[Kinect.JointType.ElbowLeft]; * Kinect.Joint? goJoint = null; * * if (_BoneMap.ContainsKey(Kinect.JointType.ElbowLeft) || _BoneMap.ContainsKey(Kinect.JointType.ElbowLeft)) * { * goJoint = body.Joints[Kinect.JointType.ElbowLeft]; * } * * Transform goObj = bodyObject.transform.Find(Kinect.JointType.ElbowLeft.ToString()); * goObj.position = new Vector3((elbowLeftJoint.Position.X * 10) + 10, elbowLeftJoint.Position.Y * 10, elbowLeftJoint.Position.Z * 10); */ }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { GameObject Barbarian = GameObject.Find(bodyObject.name); Barbarian.GetComponent <BodyContorller>().HandLeftState = body.HandLeftState; Barbarian.GetComponent <BodyContorller>().HandRightState = body.HandRightState; foreach (Kinect.JointType jt in visialbeJoints) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); Vector3 SourceJointposition = GetVector3FromJoint(sourceJoint); jointObj.localPosition = SourceJointposition; // MeshControl if (jt == Kinect.JointType.HandLeft) { Barbarian.GetComponent <BodyContorller>().rightHand = jointObj.gameObject; } if (jt == Kinect.JointType.HandRight) { Barbarian.GetComponent <BodyContorller>().leftHand = jointObj.gameObject; } if (jt == Kinect.JointType.KneeLeft) { Barbarian.GetComponent <BodyContorller>().rightLeg = jointObj.gameObject; } if (jt == Kinect.JointType.KneeRight) { Barbarian.GetComponent <BodyContorller>().leftLeg = jointObj.gameObject; } if (jt == Kinect.JointType.SpineBase) { Barbarian.GetComponent <BodyContorller>().MainBody = jointObj.gameObject; } if (jt == Kinect.JointType.Neck) { Barbarian.GetComponent <BodyContorller>().Neck = jointObj.gameObject; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } GameObject jointObj = bodyObject.transform.FindChild(jt.ToString()).gameObject; jointObj.transform.localPosition = GetVector3FromJoint(sourceJoint); assignColor(jointObj, _Colors[body.TrackingId]); assignSomeRandom(jointObj, _offColors[body.TrackingId]); } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); //on/off // LineRenderer lr = jointObj.GetComponent<LineRenderer>(); if (targetJoint.HasValue) { jointObj.transform.localRotation = Quaternion.LookRotation(GetVector3FromJoint(targetJoint.Value) - jointObj.localPosition); bool useScale = true; foreach (PrefabJointLinker linker in jointPrefabLinker) { if (linker.type == jt) { //Haal instantiate weg als je object wil gebruiken uit de scene ipv nieuwe objecten wil spawnen useScale = linker.useScale; } } if (useScale) { jointObj.transform.localScale = new Vector3(1, 1, (GetVector3FromJoint(targetJoint.Value) - jointObj.localPosition).magnitude * scaleFactor); } //lr.SetPosition(0, jointObj.localPosition); // lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); //lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { //lr.enabled = false; } } }
// string use added by GesTherapy private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { string bodyOut = ""; for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); jointObj.position = GetVector3FromJoint(sourceJoint); //added if (jt == Kinect.JointType.ThumbRight) { bodyOut += ((int)jt).ToString() + "," + jointObj.position.x.ToString() + "," + jointObj.position.y.ToString() + "," + jointObj.position.z.ToString(); } else { bodyOut += ((int)jt).ToString() + "," + jointObj.position.x.ToString() + "," + jointObj.position.y.ToString() + "," + jointObj.position.z.ToString() + ","; } LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.position); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.JointType), GetColorForState(targetJoint.Value.JointType)); } else { lr.enabled = false; } } KinectJoints.jointsXY = bodyOut; }
private void RefreshFilteredBodyObject(Kinect.Body body, GameObject bodyObject) { m_JointFilter.JointUpdate(body.Joints, body.JointOrientations, 0); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { if (jt == Kinect.JointType.HandTipLeft || jt == Kinect.JointType.HandTipRight || jt == Kinect.JointType.ThumbLeft || jt == Kinect.JointType.ThumbRight) { continue; } Kinect.Joint sourceJoint = m_JointFilter.GetFilteredJoints()[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = m_JointFilter.GetFilteredJoints()[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); bodyObject.transform.FindChild(jt.ToString()).GetComponent <MeshRenderer>().material = filterdMaterial; jointObj.localPosition = GetVector3FromJoint(sourceJoint); jointObj.Translate(new Vector3(20, 0, 0)); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); Vector3 temp = GetVector3FromJoint(targetJoint.Value); temp += new Vector3(20, 0, 0); lr.SetPosition(1, temp); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { //Update current joints from body for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { //Get new target position Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } // Get joint, set new position Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); if (PlayersSelection.activeInHierarchy) { LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } bodyObject.transform.GetChild(0).transform.position = GetVector3FromJoint(body.Joints[Kinect.JointType.Head]); if (GetPlayerFromId(body.TrackingId) != -1) { if (!_Markers[GetPlayerFromId(body.TrackingId)].gameObject.activeInHierarchy) { _Markers[GetPlayerFromId(body.TrackingId)].gameObject.SetActive(true); } _Markers[GetPlayerFromId(body.TrackingId)].GetComponent <SpriteRenderer>().color = PlayersManager.instance.GetPlayerColor(GetPlayerFromId(body.TrackingId)); _Markers[GetPlayerFromId(body.TrackingId)].transform.position = Camera.main.ScreenToWorldPoint(Camera.main.WorldToScreenPoint(GetVector3FromJoint(body.Joints[Kinect.JointType.HandRight]))); } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { filename = "C:\\Users\\KinectProcessing\\Desktop\\" + body.TrackingId.ToString() + "_test_kinect_capture.txt"; using (var writer = new StreamWriter(filename, true)) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); if (jt.ToString() == "Head") { Debug.Log(jointObj.position.y); if (!isInferred && jointObj.position.y < -4) { // Debug.Log("FALL DETECTED"); txtRef.text = "FALL DETECTED"; } } LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } } }
//更新所有骨架物件的位置與關節之間的連線。 private void RefreshBodyObject(Kinect.Body body, ulong userId) { ZigTrackedUser bodyObject = _Bodies[userId]; //以迴圈的方式將所有的骨骼一個一個的去計算。 for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { //抓取到來源關節,以及重置目標關節為空物件。 Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (!_kinectToZigMapping.ContainsKey(sourceJoint.JointType)) { continue; } //讀取出骨頭線段的出發點,也就是目前關節的位置。 //Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); //jointObj.localPosition = GetVector3FromJoint(sourceJoint); StartCoroutine(JointUpdate(userId, sourceJoint)); } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); if (body.TrackingId == nearest_body && jt == Kinect.JointType.Head) { headposition.X = jointObj.position.x - BodyPosition.position.x; headposition.Y = jointObj.position.y - BodyPosition.position.y; headposition.Z = jointObj.position.z - BodyPosition.position.z; camerapoints [0] = headposition; } if (body.TrackingId == nearest_body && jt == Kinect.JointType.SpineShoulder) { neckposition.X = jointObj.position.x - BodyPosition.position.x; neckposition.Y = jointObj.position.y - BodyPosition.position.y; neckposition.Z = jointObj.position.z - BodyPosition.position.z; camerapoints [1] = neckposition; } LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition + BodyPosition.position); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value) + BodyPosition.position); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } }
private GameObject CreateBodyObject(ulong id, Kinect.Body bodyKinect) { GameObject body = new GameObject("Body:" + id); //We create a new body object named by the id //Joint hierarchy flows from the center of the body to the extremities. It will go on each joint //The value of SpineBase = 0 and the value of the ThumbRight = 24, the maximum for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { GameObject jointObj = GameObject.CreatePrimitive(PrimitiveType.Sphere); //for each joint we create a gameObject with a sphere jointObj.GetComponent <Collider>().isTrigger = true; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = bodyKinect.Joints[_BoneMap[jt]]; //parent of the analyzed joint //{ Kinect.JointType.FootLeft, Kinect.JointType.AnkleLeft }, AnkleLeft joint will be the targetJoint of FootLeft joint } if (targetJoint != null && jt != Kinect.JointType.Neck) //we add a cylinder only to the joints that have a parent { GameObject cylinder = GameObject.CreatePrimitive(PrimitiveType.Cylinder); cylinder.GetComponent <Collider>().isTrigger = true; cylinder.name = jt.ToString() + " bone"; cylinder.transform.parent = jointObj.transform; //we attach the cylinder to the jointObj parent } if (jt == Kinect.JointType.Head) { jointObj.transform.localScale = new Vector3(0f, 0f, 0f); } else { jointObj.transform.localScale = new Vector3(1f, 1f, 1f); } jointObj.name = jt.ToString(); jointObj.transform.parent = body.transform; //we attach the joint to the body parent } return(body); }
private void RefreshBodyObjectDancer(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint? targetJoint = null; Kinect.JointType?targetJointType = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; targetJointType = _BoneMap[jt]; } Transform jointObjDancer = DancerBody.transform.Find(jt.ToString()); jointObjDancer.localPosition = GetVector3FromFile(jt.ToString()); //Debug.Log(jointObjDancer.localPosition); LineRenderer lr2 = jointObjDancer.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr2.SetPosition(0, jointObjDancer.localPosition); lr2.SetPosition(1, GetVector3FromFile(targetJointType.ToString())); lr2.SetColors(GetColorForStateDancer(sourceJoint.TrackingState), GetColorForStateDancer(targetJoint.Value.TrackingState)); } else { lr2.enabled = false; } } movearrayint++; }
IEnumerator RefreshBodyObject(Kinect.Body body, GameObject bodyObject, float waitTime) { yield return(new WaitForSeconds(waitTime)); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.JointOrientation jointOrientation = body.JointOrientations[jt]; Kinect.Joint? targetJoint = null; //sourceJoint.TrackingState if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } if (bodyObject) { Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); jointObj.rotation = GetQuaternionFromJointOrientation(jointOrientation); AliceSync.s.UpdateBodyPart(body.TrackingId, jointObj.name, jointObj.localPosition, jointObj.localRotation, GetInferedState(sourceJoint.TrackingState)); jointObj.gameObject.GetComponent <Renderer>().material.color = GetColorForState(sourceJoint.TrackingState); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); //Debug.Log("body outside " + body.TrackingId); if (jt == Kinect.JointType.FootLeft && jointObj.localPosition.x >= detectionThreshold) { //Debug.Log("body inside " + body.TrackingId); if (!setupDone && doSetup) { SetupPedal(jointObj.localPosition); } manageCyclingTimes(jointObj.localPosition); //-4.2 (Down) -2.1 (Up) -> set the threshold at 3 } LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { message = ""; for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.FindChild(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); LineRenderer lr = jointObj.GetComponent <LineRenderer>(); if (targetJoint.HasValue) { lr.SetPosition(0, jointObj.localPosition); lr.SetPosition(1, GetVector3FromJoint(targetJoint.Value)); lr.SetColors(GetColorForState(sourceJoint.TrackingState), GetColorForState(targetJoint.Value.TrackingState)); } else { lr.enabled = false; } float xval = (int)((jointObj.position.x) * 10000) / 10000f; float yval = (int)((jointObj.position.y) * 10000) / 10000f; float zval = (int)((jointObj.position.z) * 10000) / 10000f; message += xval.ToString() + " " + yval.ToString() + " " + zval.ToString() + " "; if (jt == Kinect.JointType.Head) { camera.transform.position = jointObj.transform.position + new Vector3(0, 0, 0); } } }
private void RefreshBodyObject(Kinect.Body body, GameObject bodyObject) { for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { Kinect.Joint sourceJoint = body.Joints[jt]; Kinect.Joint?targetJoint = null; if (_BoneMap.ContainsKey(jt)) { targetJoint = body.Joints[_BoneMap[jt]]; } Transform jointObj = bodyObject.transform.Find(jt.ToString()); jointObj.localPosition = GetVector3FromJoint(sourceJoint); if (jt.ToString() == "SpineBase") { _boomStronk0.localPosition = GetVector3FromJoint(sourceJoint); _boomStronk0.localPosition = new Vector3(_boomStronk0.localPosition.x, _boomStronk0.localPosition.y, 0); // jointObj.transform.localScale = new Vector3(5, 5, 5); } if (jt.ToString() == "SpineMid") { _boomStronk1.localPosition = GetVector3FromJoint(sourceJoint); _boomStronk1.localPosition = new Vector3(_boomStronk1.localPosition.x, _boomStronk1.localPosition.y, 0); // jointObj.transform.localScale = new Vector3(5, 5, 5); } if (jt.ToString() == "Head") { _boomHoofd.localPosition = GetVector3FromJoint(sourceJoint); _boomHoofd.localPosition = new Vector3(_boomHoofd.localPosition.x, _boomHoofd.localPosition.y, 0); // jointObj.transform.localScale = new Vector3(5, 5, 5); } } }