GetUserOrientation() public method

public GetUserOrientation ( uint UserId, bool flip ) : Quaternion
UserId uint
flip bool
return Quaternion
Esempio n. 1
0
        // adds current pose of poseModel to the saved poses list
        private void AddCurrentPoseToSaved(float fCurrentTime, bool isMirrored)
        {
            KinectManager kinectManager = KinectManager.Instance;

            if (kinectManager == null || poseModel == null || poseJoints == null)
            {
                return;
            }

            PoseModelData pose = new PoseModelData();

            pose.fTime      = fCurrentTime;
            pose.avBoneDirs = new Vector3[poseJoints.Count];

            // save model rotation
            Quaternion poseModelRotation = poseModel.transform.rotation;

            if (avatarController)
            {
                ulong avatarUserId     = avatarController.playerId;
                bool  isAvatarMirrored = avatarController.mirroredMovement;

                Quaternion userRotation = kinectManager.GetUserOrientation(avatarUserId, !isAvatarMirrored);
                poseModel.transform.rotation = initialPoseRotation * userRotation;
            }

            int jointCount = kinectManager.GetJointCount();

            for (int i = 0; i < poseJoints.Count; i++)
            {
                KinectInterop.JointType joint     = poseJoints[i];
                KinectInterop.JointType nextJoint = kinectManager.GetNextJoint(joint);

                if (nextJoint != joint && (int)nextJoint >= 0 && (int)nextJoint < jointCount)
                {
                    Transform poseTransform1 = poseModel.GetBoneTransform(poseModel.GetBoneIndexByJoint(joint, isMirrored));
                    Transform poseTransform2 = poseModel.GetBoneTransform(poseModel.GetBoneIndexByJoint(nextJoint, isMirrored));

                    if (poseTransform1 != null && poseTransform2 != null)
                    {
                        pose.avBoneDirs[i] = (poseTransform2.position - poseTransform1.position).normalized;
                    }
                }
            }

            // add pose to the list
            alSavedPoses.Add(pose);

            // restore model rotation
            poseModel.transform.rotation = poseModelRotation;
        }
Esempio n. 2
0
    private void getUserGestureValue()
    {
        if (manager.IsUserDetected())
        {
            DirectionBetweenJoints = new List <Vector3>();
            AngleBetweenJoints     = new List <float>();

            uint p1 = manager.GetPlayer1ID();
            //uint jointLength = 20;
            UserOrientation = manager.GetUserOrientation(p1, flip);

            /*for (int i = 0; i < jointLength; i++)
             * {
             *  JointPosition[i] = manager.GetJointPosition(p1, i);
             *  JointLocalPosition[i] = manager.GetJointLocalPosition(p1, i);
             *  JointOrientation[i] = manager.GetJointOrientation(p1, i, flip);
             *  JointLocalOrientation[i] = manager.GetJointLocalOrientation(p1, i, flip);
             * }*/
            ElbowToShoulder_L = manager.GetDirectionBetweenJoints(p1, (int)Joint.Elbow_Left, (int)Joint.Shoulder_Left, flip, flip);
            ElbowToShoulder_R = manager.GetDirectionBetweenJoints(p1, (int)Joint.Elbow_Right, (int)Joint.Shoulder_Right, flip, flip);
            ElbowToWrist_L    = manager.GetDirectionBetweenJoints(p1, (int)Joint.Elbow_Left, (int)Joint.Wrist_Left, flip, flip);
            ElbowToWrist_R    = manager.GetDirectionBetweenJoints(p1, (int)Joint.Elbow_Right, (int)Joint.Wrist_Right, flip, flip);
            KneeToHip_L       = manager.GetDirectionBetweenJoints(p1, (int)Joint.Knee_Left, (int)Joint.Hip_Left, flip, flip);
            KneeToHip_R       = manager.GetDirectionBetweenJoints(p1, (int)Joint.Knee_Right, (int)Joint.Hip_Right, flip, flip);
            KneeToAnkle_L     = manager.GetDirectionBetweenJoints(p1, (int)Joint.Knee_Left, (int)Joint.Ankle_Left, flip, flip);
            KneeToAnkle_R     = manager.GetDirectionBetweenJoints(p1, (int)Joint.Knee_Right, (int)Joint.Ankle_Right, flip, flip);

            DirectionBetweenJoints.Add(ElbowToShoulder_L);
            DirectionBetweenJoints.Add(ElbowToWrist_L);
            DirectionBetweenJoints.Add(ElbowToShoulder_R);
            DirectionBetweenJoints.Add(ElbowToWrist_R);
            DirectionBetweenJoints.Add(KneeToHip_L);
            DirectionBetweenJoints.Add(KneeToAnkle_L);
            DirectionBetweenJoints.Add(KneeToHip_R);
            DirectionBetweenJoints.Add(KneeToAnkle_R);

            for (int i = 0; i < DirectionBetweenJoints.Count; i++)
            {
                DirectionBetweenJoints[i].Normalize();
            }
            for (int i = 0; i < DirectionBetweenJoints.Count; i += 2)
            {
                AngleBetweenJoints.Add(Vector3.Angle(DirectionBetweenJoints[i], DirectionBetweenJoints[i + 1]));
            }

            //Debug.Log("Get Gesture Value Complete.");
        }
    }