Tôi muốn lưu trữ dữ liệu chụp chuyển động từ Kinect 2 dưới dạng tệp BVH. Tôi đã tìm thấy mã làm như vậy cho Kinect 1 có thể tìm thấy ở đây . Tôi đã xem qua mã và tìm thấy một số điều mà tôi không thể hiểu được. Ví dụ, trong mã được đề cập, tôi đã cố gắng hiểu chính xác skel
đối tượng Skeleton , được tìm thấy ở một số vị trí trong mã, thực sự là gì. Nếu không, có bất kỳ ứng dụng được biết đến có sẵn để thực hiện dự định?
EDIT: Tôi đã cố gắng thay đổi skel Skeleton thành Body skel mà tôi nghĩ là đối tượng sửa lỗi cho kinect SDK 2.0. Tuy nhiên, tôi đã gặp lỗi khi cố gắng lấy vị trí của cơ thể:
tempMotionVektor[0] = -Math.Round( skel.Position.X * 100,2);
tempMotionVektor[1] = Math.Round( skel.Position.Y * 100,2) + 120;
tempMotionVektor[2] = 300 - Math.Round( skel.Position.Z * 100,2);
Tôi đã gặp lỗi khi gọi hàm Position cho skel Body. Làm cách nào tôi có thể truy xuất X, Y, Z của bộ xương trong sdk 2.0 ?? Tôi đã cố gắng thay đổi ba dòng trên thành:
tempMotionVektor[0] = -Math.Round(skel.Joints[0].Position.X * 100, 2);
tempMotionVektor[1] = Math.Round(skel.Joints[0].Position.Y * 100, 2) + 120;
tempMotionVektor[2] = 300 - Math.Round(skel.Joints[0].Position.Z * 100, 2);
EDIT: Về cơ bản tôi đã quản lý để lưu trữ tệp bvh sau khi kết hợp bodyBasicsWPF và kinect2bvh. Tuy nhiên, dường như bộ xương tôi đang lưu trữ không hiệu quả. Có những chuyển động kỳ lạ ở khuỷu tay. Tôi đang cố gắng để hiểu nếu tôi phải thay đổi một cái gì đó trong tập tin kinectSkeletonBVH.cp . Cụ thể hơn, những thay đổi trong hướng trục chung cho phiên bản kinect 2 là gì. Làm cách nào để thay đổi dòng sau: skel.BoneOrientations[JointType.ShoulderCenter].AbsoluteRotation.Quaternion;
Tôi đã cố gắng thay đổi dòng đó bằngskel.JointOrientations[JointType.ShoulderCenter].Orientation
. Tôi có đúng không Tôi đang sử dụng đoạn mã sau để thêm khớp vào các đối tượng BVHBone:
BVHBone hipCenter = new BVHBone(null, JointType.SpineBase.ToString(), 6, TransAxis.None, true);
BVHBone hipCenter2 = new BVHBone(hipCenter, "HipCenter2", 3, TransAxis.Y, false);
BVHBone spine = new BVHBone(hipCenter2, JointType.SpineMid.ToString(), 3, TransAxis.Y, true);
BVHBone shoulderCenter = new BVHBone(spine, JointType.SpineShoulder.ToString(), 3, TransAxis.Y, true);
BVHBone collarLeft = new BVHBone(shoulderCenter, "CollarLeft", 3, TransAxis.X, false);
BVHBone shoulderLeft = new BVHBone(collarLeft, JointType.ShoulderLeft.ToString(), 3, TransAxis.X, true);
BVHBone elbowLeft = new BVHBone(shoulderLeft, JointType.ElbowLeft.ToString(), 3, TransAxis.X, true);
BVHBone wristLeft = new BVHBone(elbowLeft, JointType.WristLeft.ToString(), 3, TransAxis.X, true);
BVHBone handLeft = new BVHBone(wristLeft, JointType.HandLeft.ToString(), 0, TransAxis.X, true);
BVHBone neck = new BVHBone(shoulderCenter, "Neck", 3, TransAxis.Y, false);
BVHBone head = new BVHBone(neck, JointType.Head.ToString(), 3, TransAxis.Y, true);
BVHBone headtop = new BVHBone(head, "Headtop", 0, TransAxis.None, false);
Tôi không thể hiểu nơi bên trong mã the axis for every Joint
được tính toán.