ARCore – 禁用 ModelRenderable 的移动
ARCore – Disable a movement of ModelRenderable
这是我可以用来放置模型的一段代码。
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();
}
但是一旦放置好模型,我就可以移动模型了。
有什么方法可以禁止用户在模型放置后四处移动?
用节点替换您的 TransformableNode。
TransformableNode transformableNode = new TransformableNode(fragment.getTransformationSystem());
变成
Node myNode = new Node();
到时候你就不能再移动了
与 TransformableNodes 相比,Nodes 的工作方式有所不同 -> 构造函数为空。
如果你想保留TransforableNode,你可以用下面的flag
transformableNode.getTranslationController().setEnabled(false);
这是我可以用来放置模型的一段代码。
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();
}
但是一旦放置好模型,我就可以移动模型了。
有什么方法可以禁止用户在模型放置后四处移动?
用节点替换您的 TransformableNode。
TransformableNode transformableNode = new TransformableNode(fragment.getTransformationSystem());
变成
Node myNode = new Node();
到时候你就不能再移动了
与 TransformableNodes 相比,Nodes 的工作方式有所不同 -> 构造函数为空。
如果你想保留TransforableNode,你可以用下面的flag
transformableNode.getTranslationController().setEnabled(false);