您可以在检测到磁带事件或用户按下按钮时添加可渲染对象和锚点。
只要您知道要添加它们的相对位置,您就可以通过设置 Pose 平移来为您添加的每个节点单独设置位置。
请看下面在预览屏幕中心点前添加节点 1M 的示例:
// Place the anchor 1m in front of the camera.
Frame frame = arFragment.getArSceneView().getArFrame();
Session session = arFragment.getArSceneView().getSession();
Anchor newMarkAnchor = session.createAnchor(
frame.getCamera().getPose()
.compose(Pose.makeTranslation(0, 0, -1f)) //This will place the anchor 1M in front of the camera
.extractTranslation());
AnchorNode addedAnchorNode = new AnchorNode(newMarkAnchor);
addedAnchorNode.setRenderable(andyRenderable);
您可以添加多个具有不同可渲染对象的 AnchorNode,并为每个应用不同的翻译以将其定位到您想要的位置。
Pose.makeTranslation 的文档在这里:https://developers.google.com/ar/reference/java/com/google/ar/core/Pose#makeTranslation(float,%20float,%20float)
您可以检查任何触摸事件以查看是否有任何单独的可渲染对象被触摸,您还可以在节点之间添加线条 - 请参阅此 repo 以获取检测可渲染对象被触摸并在可渲染对象之间绘制线条的示例:
请注意,上述存储库使用了已弃用的旧版 Sceneform,但同样的原则仍然适用。