मैं Kinect 2 से गति कैप्चर डेटा को BVH फ़ाइल के रूप में संग्रहीत करना चाहूंगा। मुझे ऐसा कोड मिला जो Kinect 1 के लिए ऐसा करता है जो यहां पाया जा सकता है । मैंने कोड के माध्यम से जाना और कई चीजें पाईं जिन्हें मैं समझ नहीं पा रहा था। उदाहरण के लिए, उल्लेखित कोड में मैंने समझने की कोशिश की है कि कोड skel
में कई स्थानों पर पाए जाने वाले कंकाल की वस्तु वास्तव में क्या है। यदि नहीं, तो क्या कोई उद्देश्य प्राप्त करने के लिए कोई ज्ञात आवेदन उपलब्ध है?
संपादित करें: मैंने कंकाल को शरीर की खोपड़ी में बदलने की कोशिश की जो मुझे लगता है कि kinect एसडीके 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);
बॉडी स्कील के लिए फंक्शन पोज़िशन को कॉल करते समय मुझे त्रुटियाँ मिली हैं। मैं एसडी 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);
संपादित करें: मूल रूप से मैं बॉडीविक्स डब्ल्यूपीएफ और किनेक्ट 2 बीवीएचएच के संयोजन के बाद एक बीवीएच फाइल को स्टोर करने में कामयाब रहा। हालांकि, ऐसा लगता है कि जिस कंकाल को मैं स्टोर कर रहा हूं वह कुशल नहीं है। कोहनी में अजीब हरकतें होती हैं। मैं समझने की कोशिश कर रहा हूं कि क्या मुझे फ़ाइल kinectSkeletonBVH.cp में कुछ बदलना है । अधिक विशेष रूप से, किन्ट 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
गणना की जाती है।