ARCore虚拟对象移动

问题描述 投票:0回答:1

所以我开始在Android Studio中用Java与ARCore合作,我测试了他们的演示HelloAR,它可以工作。

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

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

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

        }

但是我现在就卡在这里了,虚拟对象是根据锚来渲染的?那么我是需要更新锚的位置还是更新虚拟对象的位置呢?我又该怎么做呢,锚没有任何更新位置的方法,我是要销毁它然后创建新的,还是我错过了什么?

java android android-studio augmented-reality arcore
1个回答
0
投票

如果你只是想旋转renderable本身,你不需要创建一个新的锚,但是如果你想把renderable移动到 "世界 "的一个新的地方,那么标准的方法,在这个时候,似乎是删除锚并重新创建它。

下面是一个例子,说明你如何做到这一点。

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.commickodLineView

© www.soinside.com 2019 - 2024. All rights reserved.