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;
            //}
        }
    }
예제 #2
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.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;
            }
        }
    }
예제 #3
0
    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;
            }
        }
    }
예제 #4
0
    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);
    }
예제 #5
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.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;
            }
        }
    }
예제 #6
0
    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;
            }
        }
    }
예제 #7
0
    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;
        //    }
    }
예제 #8
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]];
            }

            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;
            }
        }
    }
예제 #9
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;
            //}
        }
    }
예제 #10
0
    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;
            }
        }
    }
예제 #11
0
    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;
            }
        }
    }
예제 #12
0
        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;
                //}
            }
        }
예제 #13
0
    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();
        }
    }
예제 #14
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;

            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);
         */
    }
예제 #15
0
    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;
            }
        }
    }
예제 #16
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);
        }
    }
    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]);
        }
    }
예제 #18
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);

//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;
            }
        }
    }
예제 #19
0
    // 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;
    }
예제 #20
0
    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;
            }
        }
    }
예제 #21
0
    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])));
            }
        }
    }
예제 #22
0
    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));
        }
    }
예제 #24
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 (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;
            }
        }
    }
예제 #25
0
    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);
    }
예제 #26
0
    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++;
    }
예제 #27
0
    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;
                }
            }
        }
    }
예제 #28
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);
            //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;
            }
        }
    }
예제 #29
0
    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);
            }
        }
    }
예제 #30
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);
            }
        }
    }