Я хочу сделать несколько кнопок, которые позволят пользователю выбирать, в какую плоскость (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;
}
}
}
Заранее большое спасибо за вашу помощь.