red*_*arl 5 java augmented-reality kotlin arcore
两者都返回当前已知的所有可跟踪对象吗?
为什么我们都需要?
什么时候应该叫哪个?
Session.getAllAnchors和的问题相同Frame.getUpdatedAnchors。
Global返回所有已知可追踪项Session.getAllTrackables的列表。如果启用平面检测,则此列表包括,以及作为调用或的副作用而创建。PlanesPointshitTest(float, float)createAnchor(Pose)
例子:
planeRenderer.drawPlanes(session.getAllTrackables(Plane.class),
camera.getDisplayOrientedPose(),
projmtx);
Run Code Online (Sandbox Code Playgroud)
正如您在这里所看到的,planeRenderer该类用于绘制平面。它使用一种.drawPlanes()方法来渲染 ARCore 会话使用视图和投影矩阵识别的任何已识别平面。它通过调用 来传递所有飞机getAllTrackables(Plane.class)。
但 localFrame.getUpdatedTrackables返回特定类型的可追踪对象,这些可追踪对象已被update()返回 this 的更改Frame。要检索所有更改的可追踪项,filterType可以是Trackable.class或Point.class或Plane.class。每当屏幕框架更新时,都会触发此方法。
例子:
private void onUpdateFrame(FrameTime frameTime) {
Frame frame = arSceneView.getArFrame();
Collection updatedAugmentedImages = frame.getUpdatedTrackables(AugmentedImage.class);
}
Run Code Online (Sandbox Code Playgroud)
还有几句话update():
public Frame update()
Run Code Online (Sandbox Code Playgroud)
更新 ARCore 系统的状态。这包括:接收新的相机帧、更新设备的位置、更新跟踪锚点的位置、更新检测到的平面等。此调用可能会导致离屏 OpenGL 活动。因此,为了避免不必要的帧缓冲区刷新和重新加载,不应在渲染帧或离屏缓冲区的过程中进行此调用。此调用可能会更新所有创建的锚点和检测到的平面的姿态。更新后的对象集可通过 访问
getUpdatedTrackables(Class)。