我想在SceneView(不带AR)中展示模型时使用正交相机。在API中找不到这样做的方法。是我遗漏了什么还是功能缺失了?
qjp7pelc1#
据我所知,没有原生的**ORTHO**方法(立方体截锥),用于当前ARCore/Sceneform中的摄像机投影。但您可以使用4x 4矩阵手动进行。因此,您需要做的就是计算left、right、top、bottom、near和far属性的值。
ORTHO
ARCore
Sceneform
left
right
top
bottom
near
far
下面是您的投影矩阵4x 4的外观:
编辑:工作代码,其中scaleFactor是大约1.3的值,height/width是SceneView的属性。
scaleFactor
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)
1条答案
按热度按时间qjp7pelc1#
ARCore和场景形式
据我所知,没有原生的**
ORTHO
**方法(立方体截锥),用于当前ARCore
/Sceneform
中的摄像机投影。但您可以使用4x 4矩阵手动进行。因此,您需要做的就是计算left
、right
、top
、bottom
、near
和far
属性的值。下面是您的投影矩阵4x 4的外观:
编辑:工作代码,其中
scaleFactor
是大约1.3的值,height
/width
是SceneView
的属性。