2012-07-31 13 views
5

Ho un Skeleton skeleton che proviene dall'evento SkeletonFrameReady. E ho una funzione per disegnare scheletri sulle finestre,Kinect Manipola dati scheletro

void DrawSkeleton(Skeleton s), 

che prende lo scheletro come ingresso e disegna un'immagine 2D dello scheletro alla mia finestra.

Ora, desidero modificare, ad esempio, il valore xey della mano destra e disegnarlo sulla finestra utilizzando la stessa funzione, void DrawSkeleton(Skeleton s).

Tuttavia, quando provo a fare qualcosa di simile:

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

Non permette che lo faccia:

non può modificare il valore di ritorno di 'Microsoft.Kinect.Joint. Posizione 'perché non è una variabile.

che è probabilmente perché Position non è una variabile, è una proprietà.

Domanda:

Come posso duplicare un oggetto Skeleton e modificare i valori di PositionJoint s su tale oggetto.

risposta

5

Sì, è possibile.

È sufficiente creare un nuovo oggetto posizione e sovrascrivere la posizione desiderata.

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

var movedJoint = new Joint 
{ 
    Position = movedPosition 
}; 

Questo è un esempio di un progetto reale dove volevamo per correggere la posizione della mano per regolare il mouse senza effettivamente modificare lo scheletro