如何解决通过在 ARCore 中检测到的平面上粘贴来渲染多个球体
我正在尝试制作一个应用程序,在该应用程序中,我可以通过在特定布局中的平面上点击来渲染多个球体。我希望它是某种分子的形状,球体是组成原子。我需要每个单独的球体都是单独的实体(单独的节点),这样我就可以向它们添加 OnTouchListeners 并在它之后在选定的球体之间建立联系。我有点卡住了。有人知道我该如何解决这个问题吗? 我正在使用 Java 的 android studio 工作,并使用 ARCore 和 Sceneform。
解决方法
您可以在检测到磁带事件或用户按下按钮时添加可渲染对象和锚点。
只要您知道要添加它们的相对位置,您就可以通过设置 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,-1f)) //This will place the anchor 1M in front of the camera
.extractTranslation());
AnchorNode addedAnchorNode = new AnchorNode(newMarkAnchor);
addedAnchorNode.setRenderable(andyRenderable);
您可以添加多个具有不同可渲染对象的 AnchorNode,并为每个 AnchorNode 应用不同的翻译以将其放置在您想要的位置。
Pose.makeTranslation 的文档在这里:https://developers.google.com/ar/reference/java/com/google/ar/core/Pose#makeTranslation(float,%20float)
您可以检查任何触摸事件以查看是否已触摸任何单个可渲染对象,并且您还可以在节点之间添加线 - 请参阅此存储库以获取检测被触摸的可渲染对象并在可渲染对象之间绘制一条线的示例:
请注意,上述存储库使用了旧版本的 Sceneform,该版本已被弃用,但相同的原则仍然适用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。