所以我开始在Android Studio中用Java与ARCore合作,我测试了他们的演示HelloAR,它可以工作。
现在我想添加一些简单的东西,比如移动对象到滚动方向。
在TapHelper中,我需要为GestureDetector添加onScroll。
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
}
但是我现在就卡在这里了,虚拟对象是根据锚来渲染的?那么我是需要更新锚的位置还是更新虚拟对象的位置呢?我又该怎么做呢,锚没有任何更新位置的方法,我是要销毁它然后创建新的,还是我错过了什么?
如果你只是想旋转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