android - 在垂直平面上添加的对象始终在ARCore中旋转-LMLPHP

我要在Sceneform ARFragment的垂直平面上添加图像。但是它总是旋转的。该代码在水平面上正常工作。我将图像放置在垂直平面上的代码如下:

arFragment.setOnTapArPlaneListener { hitResult: HitResult,
                                         plane: Plane,
                                   motionEvent: MotionEvent ->

    if(!isOnceTapedOnSurface) {
        val anchor = hitResult.createAnchor()
        val anchorNode = AnchorNode(anchor)
        anchorNode.setParent(arFragment.arSceneView.scene)

        andy = TransformableNode(arFragment.transformationSystem)

        if(plane.type == Plane.Type.VERTICAL) {
            val anchorUp = anchorNode.up
            andy.setLookDirection(Vector3.up(), anchorUp)
        }

        andy.setParent(anchorNode)
        andy.renderable = andyRenderable
        andy.select()

        // arFragment.arSceneView.planeRenderer.isVisible = false
        isOnceTapedOnSurface = true
    }
}

最佳答案


anchor = mySession.createAnchor(plane.getCenterPose())

当其可跟踪状态为TRACKING时,此姿势将与最新帧同步。当其可跟踪状态为PAUSED时,将返回一个身份姿势。

您的代码可能如下:
Anchor newAnchor;

for (Plane plane : mSession.getAllTrackables(Plane.class)) {

    if(plane.getType() == Plane.Type.VERTICAL &&
       plane.getTrackingState() == TrackingState.TRACKING) {
          newAnchor = plane.createAnchor(plane.getCenterPose());
          break;
    }
}

08-27 00:16