跳跃动作 - 处理 - 滑动手势方向?

时间:2014-10-22 09:56:11

标签: java processing gesture leap-motion

我一直在使用2个库直到我的飞跃运动项目作为一个bodge因为它们都允许彼此不同的功能,独特(更好地实现)。但是,我想只使用一个库,因为多个库会导致问题。

基本上我正在使用Michael Heuer的Leap Motion(我需要使用这个库,因为它是我能找到的唯一一个允许我设置优化hmd和比例因子的库。)

手势实现如下,有没有办法从中获取滑动方向?

void onInit(final Controller controller)
{
  controller.enableGesture(Gesture.Type.TYPE_SWIPE);
  // enable top mounted policy
  controller.setPolicyFlags(Controller.PolicyFlag.POLICY_OPTIMIZE_HMD);
}

void onFrame(final Controller controller)
{
  Frame frame = controller.frame();
  for (Gesture gesture : frame.gestures())
  {
      if ("TYPE_SWIPE".equals(gesture.type().toString()) && "STATE_START".equals(gesture.state().toString())) {
    }

    println("gesture " + gesture + " id " + gesture.id() + " type " + gesture.type() + " state " + gesture.state() + " duration " + gesture.duration() + " durationSeconds " + gesture.durationSeconds()); 

 }
}

我徒劳地尝试过gesture.direction(),希望它可能有效,但方向不是公认的功能。

非常感谢任何帮助!提前致谢!将

2 个答案:

答案 0 :(得分:0)

首先,您可以直接在Processing中使用Leap Motion库。

其次,你需要将手势对象作为SwipeGesture的一个实例来访问direction()函数:

SwipeGesture swipe = SwipeGesture(gesture);

Gesture基类仅定义所有手势共有的功能/属性。这就是它在Leap Motion API中的工作方式;它可能在您正在使用的包装器库中以相同的方式工作。

答案 1 :(得分:0)

import com.leapmotion.leap.Controller;
import com.leapmotion.leap.Frame;
import com.leapmotion.leap.Gesture;
import com.leapmotion.leap.Hand;
import com.leapmotion.leap.HandList;
import com.leapmotion.leap.processing.LeapMotion;
import com.leapmotion.leap.SwipeGesture;
import com.leapmotion.leap.Vector;

LeapMotion leapMotion;

void setup()
{
  size(16 * 50, 9 * 50);
  background(20);

  leapMotion = new LeapMotion(this);
}

void draw()
{
  fill(20);
  rect(0, 0, width, height);
}

void onInit(final Controller controller)
{
  controller.enableGesture(Gesture.Type.TYPE_SWIPE);
  // enable top mounted policy
  //controller.setPolicyFlags(Controller.PolicyFlag.POLICY_OPTIMIZE_HMD);
}

void onFrame(final Controller controller)
{
  Frame frame = controller.frame();
  for (Gesture gesture : frame.gestures())
  {

 if(gesture.type() == Gesture.Type.TYPE_SWIPE) {
    SwipeGesture swipeGesture = new SwipeGesture(gesture);

    Vector swipeVector  = swipeGesture.direction();
    println("swipeVector : " + swipeVector);

    float swipeDirection = swipeVector.getX();
    println(swipeDirection);
   }
}

  HandList hands = frame.hands();
  //println(hands.count());
}

仅供将来参考,希望这可以帮助其他人!