Как изменить тип камеры на Орфографический в Sceneform Android SDK? - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел бы использовать орфографическую камеру при представлении модели в SceneView (без AR). Не удалось найти способ сделать это в API. Я что-то упустил или функция отсутствует?

1 Ответ

0 голосов
/ 01 ноября 2018

Насколько я знаю, на данный момент не существует метода ORTHO ( cube frustum ) для проецирования камеры в ARCore / Sceneform. Но вы можете сделать это самостоятельно с помощью матрицы 4х4. Итак, все, что вам нужно сделать, это вычислить свойства left, right, top, bottom, near и far, используя следующие принципы .

enter image description here

Вот как должна выглядеть матрица проекции 4x4:

enter image description here

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

Редактировать: рабочий код, где scaleFactor - это значение около 1, а height / width - это свойства SceneView.

.
val newMatrix = buildOrthographicMatrix(1f / scaleFactor, 1f / scaleFactor * height / width, 30f, 0.01f)
camera.projectionMatrix = Matrix(newMatrix)

private fun buildOrthographicMatrix(right: Float, top: Float, far: Float, near: Float): FloatArray {
   val matrix = FloatArray(16)
   matrix[0] = 1 / right
   matrix[1] = 0f
   matrix[2] = 0f
   matrix[3] = 0f
   matrix[4] = 0f
   matrix[5] = 1 / top
   matrix[6] = 0f
   matrix[7] = 0f
   matrix[8] = 0f
   matrix[9] = 0f
   matrix[10] = -2 / (far - near)
   matrix[11] = 0f
   matrix[12] = 0f
   matrix[13] = 0f
   matrix[14] = -(far + near) / (far - near)
   matrix[15] = 1f
   return matrix
}
...