java - ARCore虚拟物体运动

标签 java android android-studio augmented-reality arcore

因此,我开始在 Java 的 Android Studio 中使用 ARCore,并测试了他们的演示 HelloAR,它可以工作。

现在我想添加简单的事情,例如将对象移动到滚动方向。

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

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

        }

但这就是我现在陷入困境的地方,虚拟对象是基于 anchor 渲染的?那么我需要更新 anchor 位置还是虚拟物体的位置呢?我该如何做到这一点, anchor 没有任何方法更新其位置,我是否销毁它并创建新的,或者我错过了什么?

最佳答案

如果您只想旋转可渲染对象本身,则不需要创建新的 anchor ,但如果您想将可渲染对象移动到“世界”中的新位置,那么此时的标准方法似乎是删除 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

关于java - ARCore虚拟物体运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61406018/

相关文章:

java - Tomcat 7.0 连接池 - jdbc 驱动程序异常

java - 如何使用三层架构和 SQL Server 制作登录表单?

java - Jdbc模板增删改查操作

java - 如何使用 URL 在 Android 中设置图标

android - 使用 RxAndroid 调度

c++ - 在 Android Studio 中,C++ 代码导航和分析不适用于 CMake 3.7 或更高版本

Android Gradle 问题?

java - Rabin 哈希函数 - Java 中的 FAST 实现

android - 服务中的计时器与线程 sleep

android - 升级到 Android Gradle Plugin 4.2.0-beta03 后出现新的 Gradle 错误