2014-12-07 3 views
0

Я пытаюсь понять, как различать двух людей, отслеживаемых с помощью Kinect 2. Итак, если игрок делает этот жест, выполните это действие. Если игрок два делает этот жест, выполните это действие. Я пытаюсь использовать идентификатор отслеживания, но я не уверен, что делаю это правильно. Вот некоторые фрагменты моего кода:Kinect v2 отслеживание отдельных людей

/// <summary> 
    /// Gets or sets the body tracking ID associated with the current detector 
    /// The tracking ID can change whenever a body comes in/out of scope 
    /// </summary> 
    public ulong TrackingId 
    { 
     get 
     { 

      return this.vgbFrameSource.TrackingId; 
     } 

     set 
     { 

      Debug.WriteLine(value); 
      if (this.vgbFrameSource.TrackingId != value) 
      { 
       this.vgbFrameSource.TrackingId = value; 
       if (value == 0) 
       { 
        outOfFrame = 0; 
        this.vgbFrameSource.TrackingIdLost += this.Source_TrackingIdLost; 
       } 
       else if (one == 0) 
       { 
        playerOne = value; 
        ++one; 
        ++outOfFrame; 
       } 
       else if (two == 0 && value != playerOne) 
       { 
        playerTwo = value; 
        ++two; 
        ++outOfFrame; 
       } 

       Debug.WriteLine(outOfFrame); 
      } 
     } 
    } 

Это получает и устанавливает идентификатор отслеживания, и здесь я пытаюсь провести различие между 2-х человеком

if (outOfFrame == 0) 
{ 
    Debug.WriteLine("No Players in Frame"); 
} 
else if (result.Detected && this.vgbFrameSource.TrackingId == playerOne && outOfFrame != 0) 
{ 
     //nameGest = gestureName; 
     //Debug.WriteLine(gestureName); 
     Player1.AbstractState.setGestureName((string)gestureName); 
     //Player1.AbstractState.setDetector(this); 
} 

else if (result.Detected && this.vgbFrameSource.TrackingId != playerOne && outOfFrame != 0) 
{ 
     //nameGest = gestureName; 
     //Player2.AbstractState.setGestureName(gestureName); 
     Player2.AbstractState.setGestureName((string)gestureName); 
     //Player2.AbstractState.setDetector(this); 
} 

И это где я отсылаю данные.

Это построение исходного кода от microsoft для дискретного детектора жестов.

EDIT: нашел проблему. Идентификатор отслеживания игрока один раз сбрасывается несколько раз, поэтому он никогда не попадает в последний оператор if в TrackingId. Просто нужно выяснить, что происходит сейчас.

ответ

0

Решено с помощью Getters and Setters, когда значение и идентификатор отслеживания были сброшены.

Смежные вопросы