因此,我开始在 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/