【问题标题】:ARCore virtual object movementARCore 虚拟物体移动
【发布时间】:2020-04-24 10:13:51
【问题描述】:

所以我开始在 Java 中的 Android Studio 中使用 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】:

    如果您只想旋转可渲染对象本身,则不需要创建新锚点,但如果您想将可渲染对象移动到“世界”中的新位置,那么此时的标准方法似乎是删除锚并重新创建它。

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

    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

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 2018-02-27
      • 2012-10-10
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多