这就是我用来获取所有特征平面的代码。
while (planeIterator.hasNext()){
Plane plane = planeIterator.next();
if(plane.getTrackingState() == TrackingState.TRACKING &&
(plane.getType() == Plane.Type.VERTICAL||plane.getType() == Plane.Type.HORIZONTAL_UPWARD_FACING)){
Iterator<Anchor> anchors = frame.getUpdatedAnchors().iterator();
Anchor newAnchor = plane.createAnchor(plane.getCenterPose());
}
}
从文档中不清楚如何从锚点获取三维世界坐标。如果我能得到三维世界坐标,我可以用
ArFragment.getArSceneView().getScene().getCamera().worldToScreenPoint()
但是,如何让3d世界与现实世界协调呢 newAnchor
?
1条答案
按热度按时间gc0ot86w1#
我认为您要求的是锚点的姿势-这可以从getpose()方法获得:
公共姿势getpose()
返回锚点在世界坐标空间中的姿势。
姿势的定义是一个物体的局部坐标的Map,也就是说,如果你只看物体本身,到世界坐标。它通常被描述为先旋转,然后平移。旋转使物体指向正确的方向,或正确定位,然后平移将其移动到世界坐标中正确的位置。
如果您查看pose类,您可以从中查询用例所需的任何信息。
一个简短的说明-我猜你知道,但sceneform没有被否决,或者更准确地说是开源,然后存档-请参阅这里:https://developers.google.com/sceneform/develop.