public static ISkeleton CreateInMapSkeleton() { int centerY = 0; int neckY = 400; var centerOrientation = new Vector4(0, 0, 0, 0); var s = new InMapSkeleton{ Valid = true }; foreach (var joint in CreateArm(Side.LEFT)) { s.Add(joint); } foreach (var joint in CreateArm(Side.RIGHT)) { s.Add(joint); } foreach (var joint in CreateLeg(Side.LEFT)) { s.Add(joint); } foreach (var joint in CreateLeg(Side.RIGHT)) { s.Add(joint); } s.Add(CreateHead()); s.Add(new OrientedJoint(JointType.NECK, true) { Point = new Vector3(0, neckY, 0) }); s.Add(new OrientedJoint(JointType.CENTER, true) { Point = new Vector3(0, centerY, 0), Orientation = centerOrientation }); s.Root = s.GetJoint(JointType.CENTER); return s; }
public ISkeleton Clone() { var s = new InMapSkeleton(id, valid, timestamp); lock (_joints) { foreach (var key in _joints.Keys) { s._joints.Add(key, _joints[key]); } } return s; }
private ISkeleton CreateSkeleton(KinectV2::Microsoft.Kinect.Body body) { var newSkeleton = new InMapSkeleton { ID = (uint) body.TrackingId }; UpdateSkeleton(body, newSkeleton); return newSkeleton; }
/// <summary> /// Creates the skeleton. /// </summary> /// <returns>The skeleton.</returns> /// <param name="initSkeleton">Init skeleton.</param> private ISkeleton CreateSkeleton(KinectV1::Microsoft.Kinect.Skeleton initSkeleton) { var s = new InMapSkeleton { ID = (uint)initSkeleton.TrackingId }; foreach (var jointMapping in mapping) { var joint = new OrientedJoint { JointType = jointMapping.Key, Point = ToVec3(initSkeleton.Joints[jointMapping.Value].Position), Orientation = ToVec4(initSkeleton.BoneOrientations[jointMapping.Value].AbsoluteRotation.Quaternion), Valid = initSkeleton.Joints[jointMapping.Value].TrackingState == JointTrackingState.Tracked }; s.UpdateSkeleton(joint.JointType, joint); } // TODO: iterate over all data in array s.Valid = initSkeleton.TrackingState == SkeletonTrackingState.Tracked; return s; }