Estoy trabajando en un proyecto AR de Android usando ARCore y Sceneform. Necesito colocar los objetos a una distancia de entre 30 y 200 metros de la cámara del usuario y me enfrento al problema de eliminación de frustum en ArCore, que se describe AQUÍ .
Estoy tratando de configurar la matriz de proyección para aumentar el parámetro far usando este método
public void getProjectionMatrix (float[] dest, int offset, float near, float far);Pero no puedo encontrar la posibilidad de configurar la matriz de proyección de renderizado.
Aquí está mi código:
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)) // PS 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 } } } El método setProjectionMatrix contiene la anotación VisibleForTesting . Por lo tanto, no estoy seguro de si debería usarlo y hay una garantía de que funcionará.
Por favor, consejo si puedo hacerlo de alguna otra manera? Si no, ¿cuál es la mejor manera de hacer que los objetos lejanos sean visibles para el usuario?
Gracias de antemano.
Con Sceneform, puede configurar el plano de recorte lejano de esta manera: arFragment.getArSceneView().getScene().getCamera().setFarClipPlane(…);
Después de una investigación exhaustiva, descubrí que en este momento (marzo de 2019) no hay forma de configurar el plano de
far clipping planede recortenear clipping planede ARCamera.
Esperemos un tiempo cuando Google lo permita para los desarrolladores de ARCore .