ARCore –渲染距离相机200m的物体

时间:2019-02-28 13:16:17

标签: java kotlin augmented-reality arcore sceneform

我正在使用ARCore和Sceneform进行Android AR项目。我需要将物体放置在距用户相机 30米至200米远的地方,并面对ArCore中的截锥体剔除问题,HERE说。

我正在尝试使用此方法设置投影矩阵来增加far参数

public void getProjectionMatrix (float[] dest, 
                                 int offset, 
                                 float near, 
                                 float far);

但是我找不到设置渲染投影矩阵的可能性。

这是我的代码:

arFragment.arSceneView.apply {
    scene.addOnUpdateListener {
        // Some code to return from this callback if arFrame is not initialised yet
        if (!objectsAdded) {
            placeObject(Pose.makeTranslation(0f, 100f, 100f), this)
            objectsAdded = true
            scene.camera.projectionMatrix = Matrix(computeProjectionMatrix(frame.camera))
            // P.S. frame.camera is ArCore's camera, scene.camera is Sceneform's one.
            // So, I'm not sure that using them in such way is consistent  
        }
    }
}

setProjectionMatrix方法包含注释VisibleForTesting。因此,我不确定是否应该使用它,并且可以保证它会起作用。

请告知我是否可以通过其他方式进行操作? 如果没有,那么对用户可见的放置远处对象的最佳方法是什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

  

经过深入调查,我发现目前(2019年3月)无法设置ARCamera的far clipping planenear clipping plane

让我们等待一段时间,直到Google允许ARCore开发人员使用它

答案 1 :(得分:0)

使用Sceneform,您可以像这样设置远剪辑平面:arFragment.getArSceneView().getScene().getCamera().setFarClipPlane(…);