2012-07-31 10 views
5

Tengo un Skeleton skeleton que proviene del evento SkeletonFrameReady. Y tengo una función para dibujar esqueletos en las ventanas,Kinect Manipulate Skeleton Data

void DrawSkeleton(Skeleton s), 

que toma el esqueleto como la entrada y extrae la imagen 2D del esqueleto a mi ventana.

Ahora, quiero cambiar, por ejemplo, el valor xey de la mano derecha y dibujarlo en la ventana con la misma función, void DrawSkeleton(Skeleton s).

Sin embargo, cuando intento hacer algo como:

skeleton.Joints[JointType.HandRight].Position.X = 3; 

No permite que lo haga:

No se puede modificar el valor de retorno de 'Microsoft.Kinect.Joint. Posición 'porque no es una variable.

que es probablemente porque Position no es una variable, es una propiedad.

Pregunta:

¿Cómo puedo duplicar un objeto Skeleton y cambiar los valores de PositionJoint s en ese objeto.

Respuesta

5

Sí, puedes.

Simplemente crea un nuevo objeto Position y sobrescribe la posición que desee.

var movedPosition = new SkeletonPoint 
{ 
    X = (float)(mouseJoint.Position.X - 0.4), 
    Y = (float)(mouseJoint.Position.Y - 0.3) 
}; 

var movedJoint = new Joint 
{ 
    Position = movedPosition 
}; 

Este es un ejemplo de un proyecto real donde queríamos corregir la posición de la mano para ajustar el ratón sin tener que modificar el esqueleto

Cuestiones relacionadas