如何在 Sceneform Android SDK 中将相机类型更改为正交?
How to change camera type to Orthographic in Sceneform Android SDK?
我想在 SceneView(没有 AR)中呈现模型时使用正交相机。在 API 中找不到这样做的方法。我是否遗漏了什么或缺少该功能?
据我所知,在[=12]中没有ORTHO
方法(立方体) =] / Sceneform
目前。但是您可以通过 4x4 矩阵自己制作。因此,您需要做的就是使用 [=] 计算 left
、right
、top
、bottom
、near
和 far
属性24=].
这是您的 4x4 投影矩阵的样子:
编辑:工作代码,其中 scaleFactor
是 1.3 左右的值,height
/width
是 SceneView
.
的属性
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
}
val newMatrix = buildOrthographicMatrix(1f / scaleFactor,
1f / scaleFactor * height / width,
30f,
0.01f)
camera.projectionMatrix = Matrix(newMatrix)
我想在 SceneView(没有 AR)中呈现模型时使用正交相机。在 API 中找不到这样做的方法。我是否遗漏了什么或缺少该功能?
据我所知,在[=12]中没有ORTHO
方法(立方体) =] / Sceneform
目前。但是您可以通过 4x4 矩阵自己制作。因此,您需要做的就是使用 [=] 计算 left
、right
、top
、bottom
、near
和 far
属性24=].
这是您的 4x4 投影矩阵的样子:
编辑:工作代码,其中 scaleFactor
是 1.3 左右的值,height
/width
是 SceneView
.
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
}
val newMatrix = buildOrthographicMatrix(1f / scaleFactor,
1f / scaleFactor * height / width,
30f,
0.01f)
camera.projectionMatrix = Matrix(newMatrix)