Exemple #1
0
 void _analyzer_handle(object sender, SkeletonChangedEventArgs e)
 {
     foreach (AnalyzerWrapper analyzer in _analyzerWrappers)
     {
         analyzer.ProcessSkeleton(0, e.Skeleton);
     }
 }
Exemple #2
0
        void _input_assign_single_bone_angle(object sender, SkeletonChangedEventArgs e)
        {
            Vector3 boneVector =
                e.Skeleton.GetPositionOf(_firstBoneMarkers.FirsrMarker) -
                e.Skeleton.GetPositionOf(_firstBoneMarkers.SecondMarker);

            boneVector.Normalize();
            float angle = (float)Math.Acos(Vector3.Dot(boneVector, Vector3.Right));
            //CallHandle((int)_bindedBoneFirst, angle);
            //            angle *= boneVector.X > 0 ? 1 : -1;
            Matrix  m = Matrix.CreateRotationZ(MathHelper.ToRadians(ZeroAngle));
            Vector3 v = Vector3.Transform(Vector3.Right, m);

            boneVector.Z = 0;
            boneVector.Normalize();

            float angle2 = (float)Math.Acos(Vector3.Dot(boneVector, v));

            if (Vector3.Cross(boneVector, v).Z > 0)
            {
                angle2 = -angle2;
            }


            Handle(0, angle2 * Sensitivity);
        }
Exemple #3
0
        void _input_assign_two_bones_angle(object sender, SkeletonChangedEventArgs e)
        {
            Vector3 firstBoneVector =
                e.Skeleton.GetPositionOf(_firstBoneMarkers.SecondMarker) -
                e.Skeleton.GetPositionOf(_firstBoneMarkers.FirsrMarker);
            Vector3 secondBoneVector =
                e.Skeleton.GetPositionOf(_secondBoneMarkers.SecondMarker) -
                e.Skeleton.GetPositionOf(_secondBoneMarkers.FirsrMarker);

            firstBoneVector.Normalize();
            secondBoneVector.Normalize();

            float angle = (float)Math.Acos(Vector3.Dot(firstBoneVector, secondBoneVector));

            CallHandle((int)_bindedBoneFirst, angle);
        }
Exemple #4
0
        void _input_assign_position(object sender, SkeletonChangedEventArgs e)
        {
            Vector3 value =
                _baseJoint != null && _baseJoint.HasValue ?
                e.Skeleton.GetPositionOf(_trackedJoint) - e.Skeleton.GetPositionOf(_baseJoint.Value) :
                e.Skeleton.GetPositionOf(_trackedJoint);

            value = value / 1000;
            switch (_axis)
            {
            case BindingAxis.X:
                CallPositionalHandle((int)_trackedJoint, value.X);
                break;

            case BindingAxis.Y:
                CallPositionalHandle((int)_trackedJoint, value.Y);
                break;

            case BindingAxis.Z:
                CallPositionalHandle((int)_trackedJoint, value.Z);
                break;
            }
        }
Exemple #5
0
 void InputAnalyzer_SkeletonChanged(object sender, SkeletonChangedEventArgs e)
 {
     _analyzerWrapper.ProcessSkeleton(0, e.Skeleton);
 }