Я работаю над проектом Android AR, используя ARCore и Sceneform.Мне нужно поместить объекты на расстоянии от 30 до 200 метров от камеры пользователя и столкнуться с проблемой отбраковки фрустума в ArCore, описанной ЗДЕСЬ .
Я пытаюсь установить матрицу проекции , чтобы увеличить параметр 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
.Поэтому я не уверен, стоит ли мне его использовать, и есть гарантия, что он будет работать.
Пожалуйста, посоветуйте, могу ли я сделать это каким-то другим способом?Если нет, какой лучший способ сделать удаленные объекты видимыми для пользователя?
Заранее спасибо.