Med Kinect Hacks för dansträning (4 / 5 steg)
Steg 4: Steg 3: jämföra gemensamma uppsättningar
Vi valde att analysera fyra uppsättningar av lederna: axlar, höfter, handleder, vänster knä och höger fotled, och höger knä och vänster fotled.
Målet var att ha någon form av indikation när en gemensam var ur placering. Av placering i det här scenariot skulle vara när två lederna var ingen längre nivå.
Vi skrev 2 funktioner för att kontrollera parketter:
function1--för axlar, höfter och handleder (detta kan läggas på botten av skelett stream återgivningstillägget)
//functions vi lagt
används för att kontrollera parketter i höft, handleder och axlar
privat lista < JointType > IsLevel (JointType j1, JointType j2)
{
Lista < JointType > higherJoints = ny lista < JointType > ();
foreach (var skelett i skeletonData)
{
int Y1 = (int) mapMethod (skelett. Lederna [j1]. Position). Y;
int Y2 = (int) mapMethod (skelett. Lederna [j2]. Position). Y;
om (Math.Abs (Y1 - Y2) < 10)
{
higherJoints.Add(JointType.Head); Returnerar chefen gemensamma eftersom att gemensamma är utan laga kraft
}
annat
{
om (Y2 < Y1) higherJoints.Add(j2);
om (Y1 < Y2) higherJoints.Add(j1);
}
}
återvända higherJoints;
}
I huvudsak om lederna är nivå, det kommer tillbaka huvudet gemensamma (som är obefintlig i programmet) och sedan kommer att ses som grön. Emellertid, om avståndet mellan lederna är större än tio, det visar den högre gemensamma röda, varna spelaren som att särskilt gemensamma är feljusterad.
Funktionen 2 (kontrolleras knän och vrister):
//used att kontrollera placeringen av fot och knä i passe
privat lista < JointType > IsHigher (JointType j3, JointType j4)
{
Lista < JointType > lowerJoints = ny lista < JointType > ();
foreach (var skelett i skeletonData)
{
int Y3 = (int) mapMethod (skelett. Lederna [j3]. Position). Y;
int Y4 = (int) mapMethod (skelett. Lederna [j4]. Position). Y;
om (Math.Abs (Y3 - Y4) < 10 || Math.Abs(Y3-Y4) > 70 || Y3 < Y4)
{
lowerJoints.Add(JointType.Head);
}
annat
{
lowerJoints.Add(j3);
}
}
återvända lowerJoints;
}
Detta gör samma sak som funktion 1, men i motsatt riktning. Om fotleden är för långt under knäet, är det färgad röd. Alla felmarginaler kan lätt justeras för olika nivåer av dansare.
Då måste vi lägga till dessa funktioner i som variabler. Lägg till följande kod rätten innan benen dras: Lista < JointType > shoulderCheck = IsLevel (JointType.ShoulderRight, JointType.ShoulderLeft);
//Variables Kelcy lagt
Lista < JointType > hipCheck = IsLevel (JointType.HipRight, JointType.HipLeft);
Lista < JointType > wristCheck = IsLevel (JointType.WristRight, JointType.WristLeft);
Lista < JointType > kneeAndAnkleCheckR = IsHigher (JointType.AnkleRight, JointType.KneeLeft);
Lista < JointType > kneeAndAnkleCheckL = IsHigher (JointType.AnkleLeft, JointType.KneeRight),