Example #1
0
    // Update is called once per frame
    void Update()
    {
        KinectManager manager = KinectManager.Instance;

        if (manager && manager.IsInitialized())
        {
            //backgroundImage.renderer.material.mainTexture = manager.GetUsersClrTex();
            if (backgroundImage && (backgroundImage.texture == null))
            {
                backgroundImage.texture = manager.GetUsersClrTex();
            }
            int iJointIndex = (int)trackedJoint;

            if (manager.IsUserDetected())
            {
                personaje.SetActive(true);

                //Panel
                panelEspera.SetActive(false);
                //Datos usuario
                datosUsuario.SetActive(true);

                uint userId = manager.GetPlayer1ID();

                if (manager.IsJointTracked(userId, iJointIndex))
                {
                    Vector3 posJoint = manager.GetRawSkeletonJointPos(userId, iJointIndex);

                    if (posJoint != Vector3.zero)
                    {
                        Vector3 posHombroIzq    = manager.GetRawSkeletonJointPos(userId, 4);
                        Vector3 posHombroDer    = manager.GetRawSkeletonJointPos(userId, 8);
                        Vector3 posMunecaDer    = manager.GetRawSkeletonJointPos(userId, 10);
                        Vector3 posMunecaIzq    = manager.GetRawSkeletonJointPos(userId, 6);
                        Vector3 posCodoIzq      = manager.GetRawSkeletonJointPos(userId, 5);
                        Vector3 posCodoDer      = manager.GetRawSkeletonJointPos(userId, 9);
                        Vector3 posHipDer       = manager.GetRawSkeletonJointPos(userId, 16);
                        Vector3 posHipIzq       = manager.GetRawSkeletonJointPos(userId, 12);
                        Vector3 posHombroCentro = manager.GetRawSkeletonJointPos(userId, 2);
                        Vector3 posHead         = manager.GetRawSkeletonJointPos(userId, 3);
                        Vector3 posPieDer       = manager.GetRawSkeletonJointPos(userId, 19);
                        Vector3 posPieIzq       = manager.GetRawSkeletonJointPos(userId, 15);


                        if (posMunecaDer.y > posHombroDer.y && posMunecaDer != Vector3.zero)
                        {
                            contMenuDer++;
                            if (contMenuDer > tiempoClick)
                            {
                                menuDerecha.SetActive(!menuDerecha.activeSelf);
                                contMenuDer = 0;
                            }
                        }
                        //if (posMunecaDer.y < posHipDer.y || posMunecaDer == Vector3.zero){MenuDerecha.SetActive(!MenuDerecha.activeSelf); }
                        if (posMunecaIzq.y > posHombroIzq.y && posMunecaIzq != Vector3.zero)
                        {
                            contMenuIzq++;
                            if (contMenuIzq > tiempoClick)
                            {
                                menuIzquierda.SetActive(!menuIzquierda.activeSelf);
                                contMenuIzq = 0;
                            }
                        }
                        //if (posMunecaIzq.y < posHipIzq.y || posMunecaIzq == Vector3.zero){ MenuIzquierda.SetActive(false); }

                        float espacioDer = posHombroDer.y - posHipDer.y;
                        float espacioIzq = posHombroIzq.y - posHipIzq.y;

                        print(manager.getProfundidadArticulacion(posMunecaIzq));
                        print(manager.getProfundidadArticulacion(posMunecaDer));


                        if (menuDerecha.activeSelf)
                        {
                            if (posMunecaDer.y > (posHipDer.y + (espacioDer / 3) * 2) && posMunecaDer.y < posHombroDer.y)
                            {
                                tiempoDer2 = 0; tiempoDer3 = 0;
                                print("Menu der 1 " + tiempoDer1);
                                tiempoDer1++;
                                if (tiempoDer1 > tiempoClick)
                                {
                                    gesture.ChangeRight();
                                    tiempoDer1 = 0;
                                }
                            }
                            else if (posMunecaDer.y <= (posHipDer.y + (espacioDer / 3)))
                            {
                                tiempoDer1 = 0; tiempoDer2 = 0;
                                print("Menu der 3 " + tiempoDer3);
                                tiempoDer3++;
                                if (tiempoDer3 > tiempoClick)
                                {
                                    tshirt.SetActive(!tshirt.activeSelf);
                                    textShirt.text = tshirt.activeSelf ? "Quitar Playera" : "Poner Playera";
                                    tiempoDer3     = 0;
                                }
                            }
                            else if (posMunecaDer.y <= (posHipDer.y + (espacioDer / 3) * 2))
                            {
                                tiempoDer1 = 0; tiempoDer3 = 0;
                                print("Menu der 2 " + tiempoDer2);
                                tiempoDer2++;
                                //MenuIzquierda.SetActive(false);
                                if (tiempoDer2 > tiempoClick)
                                {
                                    gesture.SetVoto(1);
                                    gesture.ChangeVote();
                                    tiempoDer2 = 0;
                                }
                            }
                        }


                        if (menuIzquierda.activeSelf)
                        {
                            //Parte inferior para quitar prenda
                            if (posMunecaIzq.y > (posHipIzq.y + (espacioIzq / 3) * 2) && posMunecaIzq.y < posHombroIzq.y)
                            {
                                tiempoIzq2 = 0; tiempoIzq3 = 0;
                                print("Menu 1 " + tiempoIzq1);
                                tiempoIzq1++;
                                if (tiempoIzq1 > tiempoClick)
                                {
                                    gesture.ChangeLeft();
                                    tiempoIzq1 = 0;
                                }
                            }
                            else if (posMunecaIzq.y <= (posHipIzq.y + (espacioIzq / 3)))
                            {
                                tiempoIzq1 = 0; tiempoIzq2 = 0;
                                print("Menu 3 " + tiempoIzq3);
                                tiempoIzq3++;
                                if (tiempoIzq3 > tiempoClick)
                                {
                                    jeans.SetActive(!jeans.activeSelf);
                                    textJeans.text = jeans.activeSelf ? "Quitar Jeans" : "Poner Jeans";
                                    tiempoIzq3     = 0;
                                }
                            }
                            else if (posMunecaIzq.y <= (posHipIzq.y + (espacioIzq / 3) * 2))
                            {
                                tiempoIzq1 = 0; tiempoIzq3 = 0;
                                print("Menu 2 " + tiempoIzq2);
                                tiempoIzq2++;
                                if (tiempoIzq2 > tiempoClick)
                                {
                                    gesture.SetVoto(0);
                                    gesture.ChangeVote();
                                    tiempoIzq2 = 0;
                                }
                            }
                        }

                        if (hombros == 0f)
                        {
                            if (posHombroDer != Vector3.zero && posHombroIzq != Vector3.zero)
                            {
                                hombros = Mathf.Sqrt(Mathf.Pow(posHombroIzq.x - posHombroDer.x, 2) + Mathf.Pow(posHombroDer.z - posHombroIzq.z, 2) + Mathf.Pow(posHombroDer.y - posHombroIzq.y, 2));


                                if (posCodoDer != Vector3.zero)
                                {
                                    hombroCodoDer = Mathf.Sqrt(Mathf.Pow(posCodoDer.x - posHombroDer.x, 2) + Mathf.Pow(posHombroDer.y - posCodoDer.y, 2) + Mathf.Pow(posHombroDer.z - posCodoDer.z, 2));
                                }

                                if (posCodoIzq != Vector3.zero)
                                {
                                    hombroCodoIzq = Mathf.Sqrt(Mathf.Pow(posCodoIzq.x - posHombroIzq.x, 2) + Mathf.Pow(posHombroIzq.y - posCodoIzq.y, 2) + Mathf.Pow(posHombroIzq.z - posCodoIzq.z, 2));
                                }


                                if (posMunecaIzq != Vector3.zero)
                                {
                                    codoMunecaIzq = Mathf.Sqrt(Mathf.Pow(posMunecaIzq.x - posCodoIzq.x, 2) + Mathf.Pow(posCodoIzq.y - posMunecaIzq.y, 2) + Mathf.Pow(posCodoIzq.z - posMunecaIzq.z, 2));
                                }
                                if (posMunecaDer != Vector3.zero)
                                {
                                    codoMunecaDer = Mathf.Sqrt(Mathf.Pow(posMunecaDer.x - posCodoDer.x, 2) + Mathf.Pow(posCodoDer.y - posMunecaDer.y, 2) + Mathf.Pow(posCodoDer.z - posMunecaDer.z, 2));
                                }


                                if (posHipIzq != Vector3.zero && posHipDer != Vector3.zero)
                                {
                                    cadera = Mathf.Sqrt(Mathf.Pow(posHipIzq.x - posHipDer.x, 2) + Mathf.Pow(posHipIzq.y - posHipDer.y, 2) + Mathf.Pow(posHipIzq.z - posHipDer.z, 2));
                                }


                                if (posPieDer != Vector3.zero && posPieIzq != Vector3.zero)
                                {
                                    altura = Mathf.Sqrt(Mathf.Pow(posPieIzq.x - posHead.x, 2) + Mathf.Pow(posPieIzq.y - posHead.y, 2) + Mathf.Pow(posPieIzq.z - posHead.z, 2)) + (posHombroCentro - posHead).magnitude;
                                }


                                user.SetAll(altura, cadera, hombros, codoMunecaDer, codoMunecaIzq, hombroCodoDer, hombroCodoIzq);

                                string json = JsonUtility.ToJson(user);
                                conn.Agregar("usuarios", json);

                                conn.Consulta("usuarios");

                                textoAltura.text = "Tu altura es " + altura;
                            }
                            else
                            {
                                hombros = 0.01f;
                                print("No se encontraron datos suficientes");
                            }
                        }
                        // 3d position to depth
                        Vector2 posDepth = manager.GetDepthMapPosForJointPos(posJoint);

                        // depth pos to color pos
                        Vector2 posColor = manager.GetColorMapPosForDepthPos(posDepth);

                        float scaleX = (float)posColor.x / KinectWrapper.Constants.ColorImageWidth;
                        float scaleY = 1.0f - (float)posColor.y / KinectWrapper.Constants.ColorImageHeight;

                        if (personaje)
                        {
                            //poner z dinamico y no estable
                            Vector3 vPosOverlay = Camera.main.ViewportToWorldPoint(new Vector3(scaleX, scaleY, distanceToCamera));

                            personaje.transform.position = Vector3.Lerp(personaje.transform.position, vPosOverlay, smoothFactor * Time.deltaTime);
                        }
                    }
                }
            }
            else
            {
                personaje.SetActive(false);
                //Panel
                panelEspera.SetActive(true);
                //Datos usuario
                datosUsuario.SetActive(false);
                hombros = 0;
            }
        }
    }