ARCore – Disable a movement of ModelRenderable

Viewed 680

Here is the piece of code using which I am able to place the model.

private void addNodeToScene(ArFragment fragment, Anchor createAnchor, ModelRenderable renderable) {

    AnchorNode anchorNode = new AnchorNode(createAnchor);
    TransformableNode transformableNode = new TransformableNode(fragment.getTransformationSystem());
    transformableNode.setName("box");
    transformableNode.setRenderable(renderable);
    transformableNode.setParent(anchorNode);
    fragment.getArSceneView().getScene().addChild(anchorNode);

    transformableNode.setOnTapListener((hitTestResult, motionEvent) -> {
        if(callback != null) {
            callback.onGiftClick(hitTestResult.getNode());
        }
    });
    transformableNode.select();
}

But once the model is placed, I can move the model around.

Is there any way I can disable the user from moving the model around once it has been placed?

2 Answers

replace your TransformableNode with a Node.

TransformableNode transformableNode = new TransformableNode(fragment.getTransformationSystem());

becomes

Node myNode = new Node();

you won't be able to move it then anymore

Some things work differently with Nodes as opposed to TransformableNodes -> The constructor being empty.

If you want to keep TransforableNode, you can go with following flag

transformableNode.getTranslationController().setEnabled(false);
Related