ฉันต้องการจัดเก็บข้อมูลการจับการเคลื่อนไหวจาก Kinect 2 เป็นไฟล์ BVH ผมพบว่ารหัสที่ไม่ดังนั้นสำหรับ Kinect 1 ซึ่งสามารถพบได้ที่นี่ ฉันผ่านรหัสและพบหลายสิ่งที่ฉันไม่สามารถเข้าใจได้ ตัวอย่างเช่นในรหัสที่กล่าวถึงฉันพยายามที่จะเข้าใจว่าskel
วัตถุSkeleton ที่พบในหลาย ๆ ที่ในรหัสจริงคืออะไร หากไม่มีมีแอปพลิเคชันใดที่รู้จักกันเพื่อให้บรรลุตามวัตถุประสงค์
แก้ไข: ฉันพยายามเปลี่ยน Skeleton skel เป็น Body skel ซึ่งฉันคิดว่าเป็นวัตถุผู้ติดต่อสำหรับ kinect SDK 2.0 อย่างไรก็ตามฉันมีข้อผิดพลาดเมื่อพยายามรับตำแหน่งของร่างกาย:
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);
ฉันได้รับข้อผิดพลาดเมื่อเรียกใช้ฟังก์ชันตำแหน่งสำหรับโครงร่าง ฉันจะดึง X, Y, Z ของโครงกระดูกใน sdk 2.0 ได้อย่างไร? ฉันพยายามเปลี่ยนสามบรรทัดด้านบนเป็น:
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);
แก้ไข: โดยทั่วไปฉันจัดการเพื่อจัดเก็บไฟล์ bvh หลังจากรวม bodyBasicsWPF และ kinect2bvh อย่างไรก็ตามดูเหมือนว่าโครงกระดูกที่ฉันจัดเก็บนั้นไม่มีประสิทธิภาพ มีการเคลื่อนไหวที่แปลกในข้อศอก ฉันพยายามที่จะเข้าใจถ้าฉันมีการเปลี่ยนแปลงบางสิ่งบางอย่างในแฟ้มkinectSkeletonBVH.cp โดยเฉพาะอย่างยิ่งการเปลี่ยนแปลงในการวางแนวแกนร่วมสำหรับรุ่น kinect 2 คืออะไร ฉันจะเปลี่ยนบรรทัดต่อไปนี้: ฉันพยายามที่จะเปลี่ยนบรรทัดที่มีskel.BoneOrientations[JointType.ShoulderCenter].AbsoluteRotation.Quaternion;
skel.JointOrientations[JointType.ShoulderCenter].Orientation
ฉันถูกไหม? ฉันใช้รหัสต่อไปนี้เพื่อเพิ่มข้อต่อไปยังวัตถุ 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);
ฉันไม่สามารถเข้าใจได้ว่าthe axis for every Joint
จะคำนวณได้จากที่ไหนภายในโค้ด