1

在使用 ARCore 和 Sceneform 的应用程序中,我需要以某种方式监控我(设备,真的)在 ARCore 空间中的运动吗?

结果,我想从选定点(Anchor/ AnchorNode)通过我当前的位置绘制一条射线,或者计算从选定点到这里的距离,并在移动过程中更新它们。我有想法,如何计算或绘制,但如何获取更新?

4

2 回答 2

3

首先设置一个 On Update 监听器

fragment.getArSceneView().getScene().addOnUpdateListener(frameTime -> {
        fragment.onUpdate(frameTime);
        onUpdate();
    });

在 OnUpdate() 调用 Camera.getDisplayOrientedPose()

Frame frame = fragment.getArSceneView().getArFrame();

    Camera camera = frame.getCamera();

    if (camera.getTrackingState() == TrackingState.TRACKING){
        Pose CameraPose = camera.getDisplayOrientedPose();
    }

当您四处移动时,您的相机姿势将不断更新。

于 2018-12-26T19:17:16.450 回答
0

BaseArFragment#onUpdate()方法中,您可以通过调用ArFragment#getArSceneView()ArSceneView#getArFrame()Frame#getCamera()来获取Camera对象。

override fun onUpdate(frameTime: FrameTime?) {
    super.onUpdate(frameTime)
    doSomething(arSceneView.arFrame?.camera?.pose)
}

Camera是一个Node跟踪查看设备位置的Pose对象,并且有一个包含您需要的位置和旋转信息的对象。

于 2018-12-12T02:37:21.010 回答