void _analyzer_handle(object sender, SkeletonChangedEventArgs e) { foreach (AnalyzerWrapper analyzer in _analyzerWrappers) { analyzer.ProcessSkeleton(0, e.Skeleton); } }
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); }
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); }
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; } }
void InputAnalyzer_SkeletonChanged(object sender, SkeletonChangedEventArgs e) { _analyzerWrapper.ProcessSkeleton(0, e.Skeleton); }