ARCore 虚拟物体运动

ARCore virtual object movement

所以我开始在 Java 的 Android Studio 中使用 ARCore,我测试了他们的演示 HelloAR,效果很好。

现在我想添加一些简单的东西,比如将对象移动到滚动方向。

在 TapHelper 中,我需要为 GestureDetector 添加 onScroll

@Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

        }

但这就是我现在卡住的地方,虚拟对象是基于锚点渲染的?那么我需要更新锚点位置还是虚拟对象的位置呢?我该怎么做,锚无法更新其位置,我是销毁它并创建一个新的,还是我遗漏了什么?

如果您只想旋转可渲染对象本身,则无需创建新锚点,但如果您想将可渲染对象移动到 'world' 中的新位置,则标准方法位于这次好像是删掉anchor重新创建

以下是您如何执行此操作的示例:

private AnchorNode moveRenderable(AnchorNode myAnchorNodeToMove, Pose newPoseToMoveTo) {
        //Move a renderable to a new pose
        if (myAnchorNodeToMove != null) {
            arFragment.getArSceneView().getScene().removeChild(myAnchorNodeToMove);
        } else {
            Log.d(TAG,"moveRenderable - myAnchorNode was null");
            return null;
        }
        Frame frame = arFragment.getArSceneView().getArFrame();
        Session session = arFragment.getArSceneView().getSession();
        Anchor myAnchor = session.createAnchor(newPoseToMoveTo.extractTranslation());
        AnchorNode newMyAnchorNode = new AnchorNode(myAnchor);
        newMyAnchorNode.setRenderable(andyRenderable);
        newMyAnchorNode.setParent(arFragment.getArSceneView().getScene());

        return newMyAnchorNode;
    }

以上内容是根据一个工作示例修改而来的,以使其在此处更具可读性 - 完整源代码位于此处:https://github.com/mickod/LineView