Изменение контроллера перевода разрешено PlaneType - PullRequest
0 голосов
/ 02 марта 2019

Я хочу сделать несколько кнопок, которые позволят пользователю выбирать, в какую плоскость (X, Y, Z) его жест может перемещать мой рендеринг.

Ниже я попробовал.Это действительно изменяет «AllowedPlaneTypes», но рендеринг не может быть перемещен.У тебя есть идеи почему?Если я напрямую настрою все плоскости в setImage (), transformsNode работает для каждой плоскости.

public class AugmentedImageNode extends AnchorNode {
    private AugmentedImage image;
    private BaseArFragment arFragment;
    private TransformableNode node;

    public void setImage(AugmentedImage image) {
        Pose translation = image.getCenterPose().makeTranslation(0.0f, 0.0f, 0.0f);
        setAnchor(image.createAnchor(image.getCenterPose().compose(translation)));

        this.node = new TransformableNode(arFragment.getTransformationSystem());
        node.getScaleController().setEnabled(false);
        node.getTranslationController().setAllowedPlaneTypes(EnumSet.noneOf(Plane.Type.class));
        node.getRotationController().setEnabled(false);


        //Node node = new Node();
        node.setWorldScale(new Vector3(1,1,1));

        node.setParent(this);
        node.setLocalRotation(Quaternion.axisAngle(new Vector3(1f, 0, 0), 90f));
        node.setRenderable(x.getNow(null));

    }



  public void setTransformablePlaneTypes(String buttonId){
      EnumSet<Plane.Type> allowedPlaneTypes = EnumSet.allOf(Plane.Type.class);
      switch (buttonId){
          case "X" :
              allowedPlaneTypes = EnumSet.of(Plane.Type.HORIZONTAL_DOWNWARD_FACING);
              this.node.getTranslationController().setAllowedPlaneTypes(allowedPlaneTypes);
              break;

          case "Y" :
              allowedPlaneTypes = EnumSet.of(Plane.Type.HORIZONTAL_UPWARD_FACING);
              this.node.getTranslationController().setAllowedPlaneTypes(allowedPlaneTypes);
              break;

          case "Z" :
              allowedPlaneTypes = EnumSet.of(Plane.Type.VERTICAL);
              this.node.getTranslationController().setAllowedPlaneTypes(allowedPlaneTypes);
              break;
      }
  }
}

Заранее большое спасибо за вашу помощь.

...