Paso 4: Paso 3: comparación de conjuntos conjuntos
Elegimos analizar cuatro conjuntos de articulaciones: hombros, caderas, muñecas, rodilla izquierda y tobillo derecho y rodilla derecha y tobillo izquierdo.
el objetivo era tener algún tipo de indicación, cuando una Junta de colocación. De colocación en este caso sería cuando las dos juntas no hay más nivel.
Escribimos 2 funciones para comprobar la nivelación:
función de la TV1--para los hombros, caderas y muñecas (esto se puede añadir en la parte inferior del procesador de secuencia de esqueleto)
//functions que hemos añadido
utiliza para verificar la nivelación de las caderas, las muñecas y los hombros
Lista privada < JointType > IsLevel (JointType j1, j2 JointType)
{
Lista de higherJoints < JointType > = nuevo () de la lista < JointType >;
foreach (var esqueleto en skeletonData)
{
int Y1 = (int) mapMethod (esqueleto. Juntas [j1]. Posición). Y;
int Y2 = (int) mapMethod (esqueleto. Juntas [j2]. Posición). Y;
Si (Math.Abs (Y1 - Y2) < 10)
{
higherJoints.Add(JointType.Head); vuelve la cabeza conjunta porque esa articulación es nula
}
otra cosa
{
Si (Y2 < Y1) higherJoints.Add(j2);
Si (Y1 < Y2) higherJoints.Add(j1);
}
}
volver higherJoints;
}
Esencialmente, si las articulaciones son nivel, devolverá el conjunto de la cabeza (que es inexistente en el programa) y luego será vista como verde. Sin embargo, si la distancia entre las articulaciones es mayor que diez, resulta el mayor conjunto rojo, alerta al jugador que esa articulación particular está fuera de alineación.
Función 2 (comprueba las rodillas y tobillos):
//used para comprobar la colocación del pie y rodilla en passe
Lista privada < JointType > es (JointType j3, j4 JointType)
{
Lista de lowerJoints < JointType > = nuevo () de la lista < JointType >;
foreach (var esqueleto en skeletonData)
{
int Y3 = (int) mapMethod (esqueleto. Juntas [j3]. Posición). Y;
int Y4 = (int) mapMethod (esqueleto. Juntas [j4]. Posición). Y;
Si (Math.Abs (Y3 - Y4) < 10 || Math.Abs(Y3-Y4) > 70 || Y3 < Y4)
{
lowerJoints.Add(JointType.Head);
}
otra cosa
{
lowerJoints.Add(j3);
}
}
volver lowerJoints;
}
Esto hace lo mismo como función 1, pero en la dirección opuesta. Si la articulación del tobillo está demasiado por debajo de la rodilla, es de color rojo. Todos los márgenes de error se pueden ajustar fácilmente para diferentes niveles de bailarines.
Luego tenemos que agregar estas funciones en como variables. Agregue el siguiente código justo antes de que los huesos se dibujan: Lista < JointType > shoulderCheck = IsLevel (JointType.ShoulderRight, JointType.ShoulderLeft);
//Variables Kelcy añadido
HipCheck lista < JointType > = IsLevel (JointType.HipRight, JointType.HipLeft);
Lista < JointType > wristCheck = IsLevel (JointType.WristRight, JointType.WristLeft);
KneeAndAnkleCheckR de la lista < JointType > = es (JointType.AnkleRight, JointType.KneeLeft);
KneeAndAnkleCheckL de la lista < JointType > = es (JointType.AnkleLeft, JointType.KneeRight);