ARCore –禁用ModelRenderable的移动

时间:2018-10-23 00:28:33

标签: java android arcore sceneform

这是我可以用来放置模型的代码段。

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();
}

但是一旦放置了模型,我就可以移动模型。

放置模型后,有什么方法可以禁止用户移动模型?

2 个答案:

答案 0 :(得分:0)

用一个节点替换您的TransformableNode。

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

成为

Node myNode = new Node();

您将无法再移动它

有些节点与TransformableNodes的工作方式不同->构造函数为空。

答案 1 :(得分:0)

如果你想保留 TransforableNode,你可以使用以下标志

transformableNode.getTranslationController().setEnabled(false);