Как получить конкретный палец, который сделал жест, с помощью контроллера движения прыжка

Я пытаюсь выяснить, какой палец выполнил жест KEY_TAP из контроллера движения прыжка.

У меня есть этот код: пропущенные жесты нажатия из-за прыжка в Java

Может ли кто-нибудь привести пример в JAVA, как получить палец/пальцы (если их больше одного), сделавший жест?


person NewbieJav    schedule 07.08.2015    source источник


Ответы (1)


Жест касания имеет метод 1leapmotion

for(Gesture gesture : gestures){
  if(gesture.type() == KeyTapGesture.classType()){
    KeyTapGesture keytap = new KeyTapGesture(gesture);
    Pointable tappingPointable = keytap.pointable();
    if(tappingPointable.isFinger()){
      Finger tappingFinger = new Finger(tappingPointable);
      println("Tapper: " + tappingFinger.type());
    }
  }
}
1leap
for(Gesture gesture : gestures){
  if(gesture.type() == KeyTapGesture.classType()){
    KeyTapGesture keytap = new KeyTapGesture(gesture);
    Pointable tappingPointable = keytap.pointable();
    if(tappingPointable.isFinger()){
      Finger tappingFinger = new Finger(tappingPointable);
      println("Tapper: " + tappingFinger.type());
    }
  }
}
1_key_tap_gesture_1a327c9145dc9f70ae50660ccd381aff5c" ​​rel="nofollow">pointables()
, который дает вы указываете постукивание - на каждое касание будет только одно касание, хотя вы можете одновременно постукивать несколькими пальцами. Чтобы определить палец, вы можете использовать 1leapmotion
for(Gesture gesture : gestures){
  if(gesture.type() == KeyTapGesture.classType()){
    KeyTapGesture keytap = new KeyTapGesture(gesture);
    Pointable tappingPointable = keytap.pointable();
    if(tappingPointable.isFinger()){
      Finger tappingFinger = new Finger(tappingPointable);
      println("Tapper: " + tappingFinger.type());
    }
  }
}
1leap
for(Gesture gesture : gestures){
  if(gesture.type() == KeyTapGesture.classType()){
    KeyTapGesture keytap = new KeyTapGesture(gesture);
    Pointable tappingPointable = keytap.pointable();
    if(tappingPointable.isFinger()){
      Finger tappingFinger = new Finger(tappingPointable);
      println("Tapper: " + tappingFinger.type());
    }
  }
}
1_finger_1ae82eaa21b1a38bdc8816432c15add237" rel="nofollow">Finger.type()< /a> метод (после проверки того, что указатель касания является пальцем — это также может быть инструмент). Когда у вас есть список жестов, вы можете идентифицировать постукивающий палец следующим образом:

for(Gesture gesture : gestures){
  if(gesture.type() == KeyTapGesture.classType()){
    KeyTapGesture keytap = new KeyTapGesture(gesture);
    Pointable tappingPointable = keytap.pointable();
    if(tappingPointable.isFinger()){
      Finger tappingFinger = new Finger(tappingPointable);
      println("Tapper: " + tappingFinger.type());
    }
  }
}
person Charles Ward    schedule 07.08.2015
comment
Спасибо ! Отлично работает. Тем не менее, все еще отсутствуют кадры ... Возможно ли, что я читаю данные скачка для замедления? Я попытался удалить спящую часть, и даже с запомненным последним кадром я все еще не получаю все нажатия. Спасибо еще раз ! - person NewbieJav; 07.08.2015
comment
Я также вижу на визуализаторе, что я не получаю все свои нажатия, и иногда, хотя я нажимаю на очень большое расстояние, палец двигается лишь слегка. - person NewbieJav; 07.08.2015
comment
В визуализаторе вы можете отображать жесты, нажимая клавишу o. Если жесты не отображаются в визуализаторе, то и ваше приложение их не получит. Это означает, что жесты не распознаются. В этом случае вы можете поиграть с параметрами жестов, чтобы упростить выполнение нажатий (но не делать их слишком легкими). - person Charles Ward; 07.08.2015
comment
Если ваши визуализированные пальцы двигаются не так, как ваши настоящие пальцы, это обычно означает, что камеры Leap не видят их должным образом. Низкая частота кадров также может вызвать проблемы с отслеживанием. Частота кадров должна быть 40 или (предпочтительнее) выше, если смотреть на руки. - person Charles Ward; 07.08.2015
comment
какая частота кадров? данные или рендеринг? Это, вероятно, проблема. - person NewbieJav; 07.08.2015
comment
Частота кадров данных — но обратите внимание, что в зависимости от настроек она может автоматически снижаться для экономии энергии. Посмотрите на частоту кадров, когда ваши руки находятся в поле зрения и двигаются. - person Charles Ward; 08.08.2015
comment
Пробовал пересаживаться на другой комп - видимо проблема со скоростью передачи данных была в компе (тоже неделя). Спасибо. - person NewbieJav; 08.08.2015