Размещение объекта на высоте 30 метров над человеком - PullRequest
0 голосов
/ 27 февраля 2019

Можно ли разместить объект прямо над человеком, который на 30 или 50 метров выше?

Когда я пытаюсь разместить объект, связанный с якорем, он виден через 20 метров, а не виден через 40 метров?

Почему это происходит и как я могу это настроить?

1 Ответ

0 голосов
/ 27 февраля 2019

Это проблема frustum culling в ARCore - объекты, которые не находятся в видимой области усечения камеры, не будут отображаться.Обычно FoV (поле зрения) на устройствах Android составляет около 60 градусов по горизонтали (вертикальная диафрагма зависит от соотношения сторон).Viewing frustum culling - это процесс удаления объектов, которые полностью находятся вне области просмотра, из процесса рендеринга, что значительно снижает вычислительную нагрузку на ЦП и ГП.И не забывайте, что ближние и дальние плоскости отсечения также являются частями усеченного конуса.

Чтобы правильно настроить видимость ваших объектов, просто воспользуйтесь следующей рекомендацией, которую вы можете найти ЗДЕСЬ и ЗДЕСЬ .

enter image description here

Чтобы узнать больше о 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())

Надеюсь, это поможет.

...