Насколько я знаю, на данный момент не существует метода ORTHO
( cube frustum ) для проецирования камеры в ARCore
/ Sceneform
. Но вы можете сделать это самостоятельно с помощью матрицы 4х4. Итак, все, что вам нужно сделать, это вычислить свойства left
, right
, top
, bottom
, near
и far
, используя следующие принципы .
Вот как должна выглядеть матрица проекции 4x4:
Надеюсь, это поможет.
Редактировать: рабочий код, где 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
}