Ich möchte die Motion Capture-Daten von Kinect 2 als BVH-Datei speichern. Ich habe Code gefunden, der dies für Kinect 1 tut, den man finden kann here. Ich ging durch den Code und fand einige Dinge, die ich nicht verstehen konnte. Zum Beispiel, in dem erwähnten Code habe ich versucht zu verstehen, was genau das Skelett skel
Objekt, das an mehreren Stellen im Code gefunden wird, tatsächlich ist. Wenn nicht, gibt es eine bekannte Anwendung, um das beabsichtigte zu erreichen?Speichern Kinect v2.0 Motion zu BVH Datei
EDIT: Ich habe versucht, Skelet Skel zu Body Skel zu ändern, die ich denke, ist das entsprechende Objekt für kinect SDK 2.0. Allerdings habe ich einen Fehler bekam, wenn ich versuche, die Position des Körpers zu erhalten:
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);
Ich habe Fehler bekommen, wenn die Funktion Position für den Körper skel aufrufen. Wie kann ich die X, Y, Z des Skeletts in SDK 2.0 abrufen? Ich habe versucht, die oben genannten drei Linien zu ändern:
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: Im Grunde ich das ein bvh-Datei nach bodyBasicsWPF und kinect2bvh Kombination speichern verwaltet. Es scheint jedoch, dass das Skelett, das ich speichere, nicht effizient ist. Es sind seltsame Bewegungen in den Ellbogen. Ich versuche zu verstehen, ob ich etwas in der Datei kinectSkeletonBVH.cp ändern muss. Genauer gesagt, was sind die Änderungen in der Ausrichtung der Gelenkachse für die Version kinect 2? Wie kann ich die folgende Zeile ändern: skel.BoneOrientations[JointType.ShoulderCenter].AbsoluteRotation.Quaternion;
Ich habe versucht, diese Zeile mit skel.JointOrientations[JointType.ShoulderCenter].Orientation
zu ändern. Habe ich recht? Ich verwende den folgenden Code, um das Gelenk zu BVHBone Objekte hinzuzufügen:
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);
Ich kann nicht verstehen, wo innerhalb der Code the axis for every Joint
berechnet wird.
ich jedoch dieses Problem übersprungen Wenn Sie eine Lösung haben, ist es gut, sie hier posten nicht nur für mich, da ich eine Menge Leute bemerkte, die nach Bewegungen in bvh-Dateien suchten. –
Ich bin in der Lage, die Kinect v1 und v2 Informationen für eine TXT-Datei zu speichern. Diese BVH-Datei ist etwas, das ich gerade gelesen habe und es wird ein Feature sein, das ich zu unserer Akquisitionssoftware hinzufügen werde. Wenn Sie an den * .txt-Dateien interessiert sind, lassen Sie es mich wissen. Ich habe noch keine richtige BVH-Lösung. – 16per9
überprüfen: http://pterneas.com/2014/03/13/kinect-for-windows-version-2-body-tracking –