Это проблема frustum culling
в ARCore - объекты, которые не находятся в видимой области усечения камеры, не будут отображаться.Обычно FoV
(поле зрения) на устройствах Android составляет около 60 градусов по горизонтали (вертикальная диафрагма зависит от соотношения сторон).Viewing frustum culling
- это процесс удаления объектов, которые полностью находятся вне области просмотра, из процесса рендеринга, что значительно снижает вычислительную нагрузку на ЦП и ГП.И не забывайте, что ближние и дальние плоскости отсечения также являются частями усеченного конуса.
Чтобы правильно настроить видимость ваших объектов, просто воспользуйтесь следующей рекомендацией, которую вы можете найти ЗДЕСЬ и ЗДЕСЬ .
Чтобы узнать больше о frustum culling
прочитайте эту полезную статью .
Для возврата матрицы проекции для визуализации контента используйте следующий метод java:
public void getProjectionMatrix (float[] dest,
int offset,
float near,
float far);
Я могу использовать его таким образом в файле MainActivity.java
:
// Getting Projection Matrix
float[] projectionMtx = new float[16];
arSession.getProjectionMatrix(projectionMtx, 0, 0.5f, 201.0f);
// Setting Projection Matrix
arRenderer.setProjectionMatrix(projectionMtx);
... или так в MainActivity.kt
файле:
// Getting Projection Matrix
private fun computeProjectionMatrix(): FloatArray {
val projectionMtx = FloatArray(16)
session.getProjectionMatrix(projectionMtx, 0, 0.5f, 201.0f)
return projectionMtx
}
// Setting Projection Matrix
renderer.setProjectionMatrix(computeProjectionMatrix())
Надеюсь, это поможет.