Пример #1
0
    public void Awake()
    {
        // check for double start
        if (bones != null)
        {
            return;
        }

        // inits the bones array
        bones = new Transform[22];
        avatarToBodyPositionDiff = new double[22];
        avatarToBodyAngleDiff    = new double[22];

        // Initial rotations and directions of the bones.
        initialRotations      = new Quaternion[bones.Length];
        initialLocalRotations = new Quaternion[bones.Length];
        initialJointPosition  = new Vector3[bones.Length];

        // Map bones to the points the Kinect tracks
        MapBones();

        // Get initial bone rotations
        GetInitialRotations();


        avatarMotionMode = AvatarMotionMode.ORIENTATION_ONLY;
    }
Пример #2
0
    // Update the avatar each frame.
    public void UpdateAvatar(uint UserID)
    {
        if (!transform.gameObject.activeInHierarchy)
        {
            return;
        }

        // Get the KinectManager instance
        if (kinectManager == null)
        {
            kinectManager = KinectManager.Instance;
        }

        // move the avatar to its Kinect position
        MoveAvatar(UserID);

        for (var boneIndex = 0; boneIndex < bones.Length; boneIndex++)
        {
            if (!bones[boneIndex])
            {
                continue;
            }

            bool morphologyCalibration = avatarMotionMode == AvatarMotionMode.MORPHOLOGY_CALIBRATION;

            if (boneIndex2JointMap.ContainsKey(boneIndex))
            {
                KinectWrapper.NuiSkeletonPositionIndex joint = !mirroredMovement ? boneIndex2JointMap[boneIndex] : boneIndex2MirrorJointMap[boneIndex];


                TransformBone(UserID, joint, boneIndex, !mirroredMovement);
            }

            else if (specIndex2JointMap.ContainsKey(boneIndex))
            {
                // special bones (clavicles)
                List <KinectWrapper.NuiSkeletonPositionIndex> alJoints = !mirroredMovement ? specIndex2JointMap[boneIndex] : specIndex2MirrorJointMap[boneIndex];

                if (alJoints.Count >= 2)
                {
                    //Vector3 baseDir = alJoints[0].ToString().EndsWith("Left") ? Vector3.left : Vector3.right;
                    //TransformSpecialBone(UserID, alJoints[0], alJoints[1], boneIndex, baseDir, !mirroredMovement);
                }
            }

            if (morphologyCalibration)
            {
                avatarMotionMode = AvatarMotionMode.ORIENTATION_ONLY;
            }
        }
    }
Пример #3
0
 public void setOrientationOnlyAvatarMode()
 {
     ResetToInitialPosition();
     avatarMotionMode = AvatarMotionMode.ORIENTATION_ONLY;
 }
Пример #4
0
 public void setMorphologyCalibrationAvatarMode()
 {
     avatarMotionMode = AvatarMotionMode.MORPHOLOGY_CALIBRATION;
 }
Пример #5
0
 public void setPositionOrientationAvatarMode()
 {
     avatarMotionMode = AvatarMotionMode.POSITION_ORIENTATION;
 }