public float getShoulderZ() { GameObject shoulder = GameObject.Find("ShoulderRight"); JointsProperties jpshoulder = shoulder.GetComponent <JointsProperties>(); return(jpshoulder.position.z); }
public bool checkCenter() { JointsProperties spine = GameObject.Find("SpineBase").GetComponent <JointsProperties>(); Text display = GameObject.Find("Text 5").GetComponent <Text>(); if (spine.position.x < -0.3) { display.text = "Move towards your right."; return(false); } else if (spine.position.x > 0.3) { display.text = "Move towards your left."; return(false); } else if (spine.position.z < 2.4) { display.text = "Move back"; return(false); } else if (spine.position.z > 2.6) { display.text = "Come forward"; return(false); } else { display.text = ""; return(true); } }
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 GameObject CreateBodyObject(ulong id) { GameObject body = new GameObject("Body:" + id); //body.transform.position = new Vector3(0.0f, 10.0f, 0.0f); for (Kinect.JointType jt = Kinect.JointType.SpineBase; jt <= Kinect.JointType.ThumbRight; jt++) { GameObject jointObj = GameObject.CreatePrimitive(PrimitiveType.Sphere); jointObj.name = "Skeleton" + jt.ToString(); SphereCollider scj = jointObj.GetComponent <SphereCollider>(); scj.isTrigger = true; if (jt == Kinect.JointType.HandLeft || jt == Kinect.JointType.HandRight) { scj.radius = 1.5f; } Rigidbody rbj = jointObj.AddComponent <Rigidbody>() as Rigidbody; rbj.useGravity = false; jointObj.AddComponent <colloideDetect>(); JointsProperties joint = jointObj.AddComponent <JointsProperties>(); joint.name = jt.ToString(); joint.floor = floorClipPlane; LineRenderer lr = jointObj.AddComponent <LineRenderer>(); lr.positionCount = 2; lr.material = pickup; lr.startWidth = 0.05f; lr.endWidth = 0.05f; jointObj.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); jointObj.name = "Skeleton" + jt.ToString(); jointObj.transform.parent = body.transform; } body.transform.parent = transform; body.tag = "SkeletonBody"; BodyProperties BP = body.AddComponent <BodyProperties>(); BP.ParentCircle = startCircle; //BP.MJ = MJ; Rigidbody rb = body.AddComponent <Rigidbody>(); CapsuleCollider cc = body.AddComponent <CapsuleCollider>(); cc.isTrigger = true; cc.height = 2.5f; cc.radius = 0.1f; StartCircle.player = body; rb.useGravity = false; return(body); }
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 Vector2 getShoulderPosition() { GameObject shoulder = GameObject.Find("ShoulderRight"); JointsProperties jpshoulder = shoulder.GetComponent <JointsProperties>(); GameObject neck = GameObject.Find("SpineShoulder"); JointsProperties jpspine = neck.GetComponent <JointsProperties>(); Vector3 ans = jpshoulder.position - jpspine.position; Vector2 answer; answer.x = ans.x; answer.y = ans.z; return(answer); }
// Update is called once per frame void Update() { if (player != null && SecretData.FixedJoint != -1) { Kinect.JointType FixedJoint = _JointMap[SecretData.FixedJoint]; Transform FixedJointT = player.transform.Find("Skeleton" + FixedJoint.ToString()); Transform SpineBaseT = player.transform.Find("Skeleton" + "SpineBase"); Vector3 NewFixedJointPosition = FixedJointT.position; Vector3 NewSpineBasePosition = SpineBaseT.position; Vector3 BufferPosition = new Vector3(0.01f, 0.01f, 0.01f); JointsProperties jpf = FixedJointT.gameObject.GetComponent <JointsProperties>(); JointsProperties jps = SpineBaseT.gameObject.GetComponent <JointsProperties>(); TimeCount += Time.deltaTime; if (jpf.TrackingState == Kinect.TrackingState.Tracked && jps.TrackingState == Kinect.TrackingState.Tracked) { TimeCount = 0f; if (CanMove && CanStart) { bool SpineBaseChange = isChangedPosition(NewSpineBasePosition, SpineBasePosition); bool FixedJointChange = isChangedPosition(NewFixedJointPosition, FixedJointPosition); float xfactor = 0.15f; float yfactor = 0.01f; float zfactor = 0.1f; if (GD != null && (GD.gestureName == "rightlunges" || GD.gestureName == "leftlunges")) { xfactor = 0.2f; } if (!GD.gestureName.ToLower().Equals("none") && FixedJointChange) { Vector3 playerPosition = player.transform.position; Vector3 NewCirclePosition = new Vector3(playerPosition.x + xfactor, GroundPlane.position.y + yfactor, playerPosition.z + zfactor); transform.position = NewCirclePosition; transform.rotation = GetCircleRotation(player.transform.rotation); } } else { transform.position = InitialPosition; transform.rotation = InitialRotation; } FixedJointPosition = NewFixedJointPosition; SpineBasePosition = NewSpineBasePosition; } } else { FixedJointPosition = Vector3.zero; //LeftFootPosition = Vector3.zero; //RightFootPosition = Vector3.zero; } }
public void FindLegHeightFromGround(string leg) { switch (leg) { case "left": case "Left": case "LEFT": GameObject leftFoot = transform.Find("FootLeft").gameObject; JointsProperties LFJP = leftFoot.GetComponent <JointsProperties>(); leftFootHeight = leftFootHeight > (float)(LFJP.distanceFromGround) ? (float)LFJP.distanceFromGround : leftFootHeight; break; case "right": case "Right": case "RIGHT": GameObject rightFoot = transform.Find("FootRight").gameObject; JointsProperties RFJP = rightFoot.GetComponent <JointsProperties>(); rightFootHeight = rightFootHeight > (float)(RFJP.distanceFromGround) ? (float)RFJP.distanceFromGround : rightFootHeight; break; } }
public bool CheckLegAboveGround() { GameObject leftFoot = transform.Find("FootLeft").gameObject; JointsProperties LFJP = leftFoot.GetComponent <JointsProperties>(); float leftLegHeight = (float)LFJP.distanceFromGround; GameObject rightFoot = transform.Find("FootRight").gameObject; JointsProperties RFJP = rightFoot.GetComponent <JointsProperties>(); float rightLegHeight = (float)RFJP.distanceFromGround; float rightLegDiff = rightLegHeight - rightFootHeight; float leftLegDiff = leftLegHeight - leftFootHeight; if (rightLegDiff >= 0.02f && leftLegDiff >= 0.02f) { return(true); } else { return(false); } }
public void CreateCoins() { double angle = 0; if (firstread) { GameObject head = transform.Find("Head").gameObject; GameObject shoulderLeft = transform.Find("ShoulderLeft").gameObject; GameObject shoulderRight = transform.Find("ShoulderRight").gameObject; GameObject foot = transform.Find("FootLeft").gameObject; JointsProperties jphead = head.GetComponent <JointsProperties>(); JointsProperties jpshoulderl = shoulderLeft.GetComponent <JointsProperties>(); JointsProperties jpshoulderr = shoulderRight.GetComponent <JointsProperties>(); JointsProperties jpfoot = foot.GetComponent <JointsProperties>(); SD.realheight = jphead.position.y; SD.realshoulder = Vector3.Distance(jpshoulderl.position, jpshoulderr.position); SD.realhandlength = (rightarmLength + leftarmLength) / 2; SD.realfootlevel = jpfoot.position.y; firstread = false; } XmlDocument doc = new XmlDocument(); doc.Load("C:\\Users\\rajan\\Desktop\\" + GD.gestureName + ".xml"); foreach (XmlNode node in doc.DocumentElement) { string jointname = node.Attributes[0].InnerText; if (jointname == "HandLength") { SD.handlengthdelta = SD.realhandlength - float.Parse(node.ChildNodes[0].InnerText); } else if (jointname == "HeadPos") { SD.heightdelta = SD.realheight - float.Parse(node.ChildNodes[0].InnerText); } else if (jointname == "ShoulderWidth") { SD.shoulderdelta = (SD.realshoulder - float.Parse(node.FirstChild.InnerText)) / 2; } else if (jointname == "AngleAdjust") { SD.angleadjust = float.Parse(node.FirstChild.InnerText) - SD.realfootlevel; } else if (jointname == "TotalCollisions") { SD.totalcollisions = float.Parse(node.FirstChild.InnerText); } else if (jointname == "GestureType") { SD.gestureType = node.FirstChild.InnerText; } else if (jointname == "TotalFrames") { SD.totalFrames = Convert.ToInt32(node.FirstChild.InnerText); } else if (jointname != "ValidAngle") { if (jointname.Contains("Initial")) { SD.totalInitial++; } float x, y, z; x = float.Parse(node.ChildNodes[0].InnerText); y = float.Parse(node.ChildNodes[1].InnerText) - SD.angleadjust; z = float.Parse(node.ChildNodes[2].InnerText); if (jointname.Contains("Hand")) { angle = Convert.ToDouble(node.ChildNodes[3].InnerText); if (jointname.Contains("Right")) { if (angle < 90) { y = y /*- SD.angleadjust*/ + SD.heightdelta - (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Cos(ConvertDegreeToRadian(angle))))); } else { y = y /*- SD.angleadjust*/ + SD.heightdelta + (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Cos(ConvertDegreeToRadian(angle))))); } x += SD.shoulderdelta + (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Sin(ConvertDegreeToRadian(angle))))); } else if (jointname.Contains("Left")) { if (angle < 90) { y = y /*- SD.angleadjust*/ + SD.heightdelta - (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Cos(ConvertDegreeToRadian(angle))))); } else { y = y /*- SD.angleadjust*/ + SD.heightdelta + (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Cos(ConvertDegreeToRadian(angle))))); } x = x - SD.shoulderdelta - (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Sin(ConvertDegreeToRadian(angle))))); } } else if (jointname.Contains("Head")) { y = y /*- SD.angleadjust*/ + SD.heightdelta; } else if (jointname.Contains("Foot")) { /*y = y - SD.angleadjust;*/ if (jointname.Contains("Right")) { x += SD.shoulderdelta; } else if (jointname.Contains("Left")) { x -= SD.shoulderdelta; } } else if (jointname.Contains("Wrist")) { y = y + SD.heightdelta; z = z + SD.handlengthdelta; if (jointname.Contains("Right")) { x += SD.shoulderdelta; } else if (jointname.Contains("Left")) { x -= SD.shoulderdelta; } } GameObject coin = GameObject.CreatePrimitive(PrimitiveType.Capsule); coin.transform.position = new Vector3(x, y, z); coin.transform.localScale = new Vector3(0.175f, 0.15f, 0.06f); coin.transform.rotation = Quaternion.AngleAxis(90, Vector3.right); coin.name = jointname; CapsuleCollider sc = coin.AddComponent <CapsuleCollider>(); sc.isTrigger = true; sc.height = 2f; colls.Add(coin); /*Rigidbody rb = coin.AddComponent<Rigidbody>(); * rb.useGravity = false;*/ //coin.tag = jointname; SD.NoOfCoins++; } } }
public void CreateCoins() { Debug.Log(GD.gestureName); double angle = 0; if (firstread) { GameObject head = transform.Find("SkeletonHead").gameObject; GameObject shoulderLeft = transform.Find("SkeletonShoulderLeft").gameObject; GameObject shoulderRight = transform.Find("SkeletonShoulderRight").gameObject; GameObject foot = transform.Find("SkeletonFootLeft").gameObject; JointsProperties jphead = head.GetComponent <JointsProperties>(); JointsProperties jpshoulderl = shoulderLeft.GetComponent <JointsProperties>(); JointsProperties jpshoulderr = shoulderRight.GetComponent <JointsProperties>(); JointsProperties jpfoot = foot.GetComponent <JointsProperties>(); SD.realheight = jphead.position.y; SD.realshoulder = Vector3.Distance(jpshoulderl.position, jpshoulderr.position); if (leftarmLength == 0f) { leftarmLength = FindHandLength("left"); } if (rightarmLength == 0f) { rightarmLength = FindHandLength("Right"); } SD.realhandlength = (rightarmLength + leftarmLength) / 2; SD.realfootlevel = jpfoot.position.y; Debug.Log("RealHeight:" + SD.realheight); Debug.Log("RealShoulder:" + SD.realshoulder); Debug.Log("RealHandLength:" + SD.realhandlength); Debug.Log("RealFootLevel:" + SD.realfootlevel); firstread = false; } Vector3 CurrentStartCirclePosition = SC.GetPostion(); SC.SetInitialPosistion(); XmlDocument doc = new XmlDocument(); doc.Load("C:\\Users\\rajan\\Desktop\\" + GD.gestureName + ".xml"); foreach (XmlNode node in doc.DocumentElement) { string jointname = node.Attributes[0].InnerText; if (jointname == "HandLength") { SD.handlengthdelta = SD.realhandlength - float.Parse(node.ChildNodes[0].InnerText); Debug.Log("HandLengthde lta:" + SD.handlengthdelta); } else if (jointname == "FixedJoint") { SecretData.FixedJoint = int.Parse(node.ChildNodes[0].InnerText); } else if (jointname == "HeadPos") { SD.heightdelta = SD.realheight - float.Parse(node.ChildNodes[0].InnerText); Debug.Log("HeightDelta:" + SD.heightdelta); } else if (jointname == "ShoulderWidth") { SD.shoulderdelta = (SD.realshoulder - float.Parse(node.FirstChild.InnerText)) / 2; Debug.Log("ShoulderDelta:" + SD.shoulderdelta); } else if (jointname == "AngleAdjust") { SD.angleadjust = float.Parse(node.FirstChild.InnerText) - SD.realfootlevel; Debug.Log("AngleAdjust:" + SD.angleadjust); } else if (jointname == "TotalCollisions") { SD.totalcollisions = float.Parse(node.FirstChild.InnerText); } else if (jointname == "GestureType") { SD.gestureType = node.FirstChild.InnerText; } else if (jointname == "TotalFrames") { SD.totalFrames = Convert.ToInt32(node.FirstChild.InnerText); GD.MaxFrameTime = (float)Convert.ToInt32(node.FirstChild.InnerText) / 30f; GD.MinFrameTime = GD.MaxFrameTime / 4; } else if (jointname != "ValidAngle") { if (jointname.Contains("Initial")) { SD.totalInitial++; } float x, y, z; x = float.Parse(node.ChildNodes[0].InnerText); y = float.Parse(node.ChildNodes[1].InnerText) - SD.angleadjust; z = float.Parse(node.ChildNodes[2].InnerText); if (jointname.Contains("Hand")) { angle = Convert.ToDouble(node.ChildNodes[3].InnerText); if (jointname.Contains("Right")) { if (angle < 90) { y = y /*- SD.angleadjust*/ + SD.heightdelta - (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Cos(ConvertDegreeToRadian(angle))))); } else { y = y /*- SD.angleadjust*/ + SD.heightdelta + (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Cos(ConvertDegreeToRadian(angle))))); } x += SD.shoulderdelta + (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Sin(ConvertDegreeToRadian(angle))))); } else if (jointname.Contains("Left")) { if (angle < 90) { y = y /*- SD.angleadjust*/ + SD.heightdelta - (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Cos(ConvertDegreeToRadian(angle))))); } else { y = y /*- SD.angleadjust*/ + SD.heightdelta + (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Cos(ConvertDegreeToRadian(angle))))); } x = x - SD.shoulderdelta - (SD.handlengthdelta * Math.Abs(Convert.ToSingle(Math.Sin(ConvertDegreeToRadian(angle))))); } } else if (jointname.Contains("Head")) { y = y /*- SD.angleadjust*/ + SD.heightdelta; } else if (jointname.Contains("Foot")) { /*y = y - SD.angleadjust;*/ if (jointname.Contains("Right")) { x += SD.shoulderdelta; } else if (jointname.Contains("Left")) { x -= SD.shoulderdelta; } } else if (jointname.Contains("Wrist")) { y = y + SD.heightdelta; z = z + SD.handlengthdelta; if (jointname.Contains("Right")) { x += SD.shoulderdelta; } else if (jointname.Contains("Left")) { x -= SD.shoulderdelta; } } GameObject coin = GameObject.CreatePrimitive(PrimitiveType.Capsule); coin.transform.position = new Vector3(x, y, z); coin.transform.localScale = new Vector3(0.175f, 0.4f, 0.06f); coin.transform.rotation = Quaternion.AngleAxis(90, Vector3.right); coin.transform.parent = ParentCircle.transform; coin.name = jointname; CapsuleCollider cc = coin.AddComponent <CapsuleCollider>(); cc.isTrigger = true; cc.height = 2.5f; colls.Add(coin); SD.NoOfCoins++; } } SC.setPosition(CurrentStartCirclePosition); }