Android 通过在ARCore中检测到的平面上贴带渲染多个球体

Android 通过在ARCore中检测到的平面上贴带渲染多个球体,android,android-studio,augmented-reality,arcore,sceneform,Android,Android Studio,Augmented Reality,Arcore,Sceneform,我正在尝试制作一个应用程序,在这个应用程序中,我可以在某个布局的平面上随意渲染多个球体。我希望它是某种分子的形状,球体是组成原子。我需要每个单独的球体都是单独的实体(单独的节点),这样我就可以向它们添加OnTouchListeners,并在它们之后在选定的球体之间建立连接。我有点困了。有人知道我该怎么做吗? 我在android studio中使用Java,并使用ARCore和Sceneform。当检测到磁带事件或用户按下按钮时,可以添加渲染和锚定 只要知道要添加它们的相对位置,就可以通过设置姿势

我正在尝试制作一个应用程序,在这个应用程序中,我可以在某个布局的平面上随意渲染多个球体。我希望它是某种分子的形状,球体是组成原子。我需要每个单独的球体都是单独的实体(单独的节点),这样我就可以向它们添加OnTouchListeners,并在它们之后在选定的球体之间建立连接。我有点困了。有人知道我该怎么做吗?
我在android studio中使用Java,并使用ARCore和Sceneform。

当检测到磁带事件或用户按下按钮时,可以添加渲染和锚定

只要知道要添加它们的相对位置,就可以通过设置姿势平移来分别为添加的每个节点设置位置

请参见下面在预览屏幕中心点前面添加节点1M的示例:

//将锚点放在摄像机前方1m处。
Frame Frame=arFragment.getArSceneView().getArFrame();
Session Session=arFragment.getArSceneView().getSession();
Anchor newMarkAnchor=session.createAnchor(
frame.getCamera().getPose()
.compose(Pose.makeTranslation(0,0,-1f))//这将使锚点位于相机前方1M处
.translation());
AnchorNode addedAnchorNode=新的AnchorNode(newMarkAnchor);
addedAnchorNode.setRenderable(andyRenderable);
可以添加具有不同可渲染性的多个锚点节点,并为每个锚点应用不同的平移,以将其定位到所需的位置

Pose.makeTranslation的文档如下:

您可以检查任何触摸事件,查看是否触摸了任何单个可渲染对象,也可以在节点之间添加线条-有关检测触摸的可渲染对象并在可渲染对象之间绘制线条的示例,请参见此repo:

注意:上面的存储库使用了旧版本的Sceneform,该版本已被弃用,但相同的原则仍然适用