2012-02-25 8 views
1

サンプルコードを実装し、 'Joint.Type'の代わりに 'Joint.ID'を使用しました。ループ内で連続してチェックすることができます。アドバイスをいただければ幸いです。ありがとう。アドバイスのKinectを使用して単純な静的ジェスチャーのジェスチャー定義を作成する - パート2

注: -

  1. void newSensor_AllFramesReady火災の色/厚さ/スケルトンが同期されます。 私はこの方法をどこに置くべきかについてあまりよく分かりません。

  2. checkHandメソッドは、スレッドごとにチェックする必要があります。これまで

コード: -

void newSensor_AllFramesReady(object sender, SkeletonFrameReadyEventArgs e) 
{ 
    //Get a skeleton 

    SkeletonFrame skeletonSet = e.SkeletonFrame; 

    SkeletonData skeleton = (from s in skeletonSet.Skeletons 
          where s.TrackingState == SkeletonTrackingState.Tracked 
          select s).FirstOrDefault(); 

    if (skeleton == null) 
    { 
     return; 
    } 
    else if (skeleton != null) 
    { 
     checkHand(skeleton.Joints[JointID.Head], skeleton.Joints[JointID.HandRight], skeleton.Joints[JointID.HandLeft]); 
    } 
} 

public void checkHand(Joint head, Joint rhand, Joint lhand) 
{ 
    if (rhand.Position.X > head.Position.Y) 
    { 
     MessageBox.Show("Right hand up!"); 
    } 
    else if (lhand.Position.Y > head.Position.Y) 
    { 
     MessageBox.Show("Left hand up!"); 
    } 
} 

答えて

0

あなたはAllFramesReadyイベントのイベントハンドラとしてnewSensor_AllFramesReadyを割り当てることを確認してください。それをループに入れる必要はありません。 newSensor_AllFramesReadyは1秒間に30回呼び出されます(またはkinectのリフレッシュレートは何でも)。

Kinect.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(newSensor_AllFramesReady); 
関連する問題