ARCore:如何在不进行平面跟踪的情况下从会话对象创建锚点?

时间:2018-12-03 03:42:33

标签: android arcore sceneform

我一直在尝试这样做,但是在尝试以下操作时出现了NotTrackingException

    Pose pose = Pose.makeTranslation(-0.41058916f, -0.6668466f, 0.04225248f);

    Anchor anchor = arFragment.getArSceneView().getSession().createAnchor(pose);

    Pose pose = Pose.makeTranslation(-0.41058916f, -0.6668466f, 0.04225248f);

    Anchor anchor =new Session(this).createAnchor(pose);

1 个答案:

答案 0 :(得分:0)

有多种方法可以在Arcore场景中设置锚点。听起来可能满足您需求的一种方法是设置锚点相对于相机焦点的位置-请参见此答案,该方法已经过测试并可以正常工作:

从会话对象创建锚点的关键代码是:

          //Add an Anchor and a renderable in front of the camera       
          Session session = arFragment.getArSceneView().getSession();
          float[] pos = { 0,0,-1 };
          float[] rotation = {0,0,0,1};
          Anchor anchor =  session.createAnchor(new Pose(pos, rotation));
          anchorNode = new AnchorNode(anchor);
          anchorNode.setRenderable(andyRenderable);
          anchorNode.setParent(arFragment.getArSceneView().getScene());

如果您查看该问题的其他答案,您还会看到一些替代性的非计划跟踪方法。