【问题标题】:Rendering multiple spheres by taping on a detected plane in ARCore通过在 ARCore 中的检测平面上粘贴来渲染多个球体
【发布时间】:2021-05-13 20:33:47
【问题描述】:

我正在尝试制作一个应用程序,在该应用程序中,我可以在特定布局的平面上点击渲染多个球体。我希望它是某种分子的形状,球体是组成原子。我需要每个单独的球体都是单独的实体(单独的节点),这样我就可以将 OnTouchListeners 添加到它们并在它之后在选定的球体之间建立联系。我有点卡住了。有人知道我该如何解决这个问题吗? 我在 android studio 中使用 Java 并使用 ARCore 和 Sceneform。

【问题讨论】:

    标签: android android-studio augmented-reality arcore sceneform


    【解决方案1】:

    您可以在检测到磁带事件或用户按下按钮时添加可渲染对象和锚点。

    只要您知道要添加它们的相对位置,您就可以通过设置 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,但同样的原则仍然适用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 2014-04-01
      • 1970-01-01
      • 2011-06-09
      • 2019-09-04
      • 2016-09-25
      • 2021-08-14
      相关资源
      最近更新 更多