示例#1
0
  public void onFrame(Controller controller) {

    currentFrame = controller.frame();

    boolean handsFlipped = false;

    for (int i = 0; i < 2; i++) {
      currentHand = currentFrame.hands().get(i);
      if (currentHand.isValid()) {

        for (int n = 0; n < 2; n++) {
          if (currentHand.id() == handIds[n] && n != i) handsFlipped = true;
        }

        int num = i;
        if (handsFlipped) num = ((num == 0) ? 1 : 0);

        hands[num] = currentHand;
        handIds[num] = currentHand.id();

        if (!currentHand.tools().empty()) {
          tools[num] = currentHand.tools().get(0);
        }

        FingerList fings = currentHand.fingers();

        if (fings.count() >= 3) handOpen[num] = true;
        else handOpen[num] = false;

        for (int f = 0; f < 5; f++) {
          if (f < fings.count()) {
            Finger finger = fings.get(f);
            fingers[f + (5 * num)] = finger;
          } else fingers[f + (5 * num)] = new Finger();
        }

      } else {
        int num = i;
        if (handsFlipped) num = ((num == 0) ? 1 : 0);
        hands[num] = new Hand();
        handOpen[num] = false;
      }
    }

    if (isConnected) {

      data = new StringBuilder();

      for (int i = 0; i < hands.length; i++) {
        if (OS.contains("Linux")) {
          data.append(HAND_NAMES[i] + "-x " + Math.round(hands[i].palmPosition().getX()) + "\n");
          data.append(
              HAND_NAMES[i]
                  + "-y "
                  + Math.round((hands[i].palmPosition().getY() - 220) * 1.6)
                  + "\n");
          data.append(HAND_NAMES[i] + "-z " + Math.round(hands[i].palmPosition().getZ()) + "\n");
        } else {
          data.append(
              HAND_NAMES[i] + "-x " + Math.round(hands[i].stabilizedPalmPosition().getX()) + "\n");
          data.append(
              HAND_NAMES[i]
                  + "-y "
                  + Math.round((hands[i].stabilizedPalmPosition().getY() - 220) * 1.6)
                  + "\n");
          data.append(
              HAND_NAMES[i] + "-z " + Math.round(hands[i].stabilizedPalmPosition().getZ()) + "\n");
        }
        data.append(HAND_NAMES[i] + "-visible " + hands[i].isValid() + "\n");
        data.append(HAND_NAMES[i] + "-open " + handOpen[i] + "\n");
      }

      for (int i = 0; i < fingers.length; i++) {
        data.append(
            FINGER_NAMES[i] + "-x " + Math.round(fingers[i].stabilizedTipPosition().getX()) + "\n");
        data.append(
            FINGER_NAMES[i]
                + "-y "
                + Math.round((fingers[i].stabilizedTipPosition().getY() - 220) * 1.6)
                + "\n");
        data.append(
            FINGER_NAMES[i] + "-z " + Math.round(fingers[i].stabilizedTipPosition().getZ()) + "\n");
        data.append(FINGER_NAMES[i] + "-visible " + fingers[i].isValid() + "\n");
      }

      for (int i = 0; i < tools.length; i++) {
        data.append(
            TOOL_NAMES[i] + "-x " + Math.round(tools[i].stabilizedTipPosition().getX()) + "\n");
        data.append(
            TOOL_NAMES[i]
                + "-y "
                + Math.round((tools[i].stabilizedTipPosition().getY() - 220) * 1.6)
                + "\n");
        data.append(
            TOOL_NAMES[i] + "-z " + Math.round(tools[i].stabilizedTipPosition().getZ()) + "\n");
        data.append(TOOL_NAMES[i] + "-visible " + tools[i].isValid() + "\n");
      }
    }
  }