android - 将 FOV 角度转换为透视投影参数

标签 android opengl-es camera opengl-es-2.0 perspective

我有一个程序可以获取设备后置摄像头的 FOV 角度,它以度数返回水平和垂直角度,如下所示:

54.8
42.5

是否有一个简单的转换来应用获取正确的“左、右、下、上”参数以传递到 OpenGL 的 Matrix.frustrumM()?

Matrix.frustumM(mProjectionMatrix, 0, left, right, bottom, top, near, far);

我将 OpenGL 形状叠加到 CameraView 上,并希望确保它们相对于相机馈送中的真实世界对象正确绘制,适用于所有设备,无论相机的 FOV 为何。

非常感谢!


编辑:这是一个解决方案,以防万一有人遇到这个问题:

private float[] perspectiveM(float fovY, float fovX, float zNear, float zFar)
{
    float[] projMatrix = new float[16];
    float aspect = fovX / fovY;
    fovY = (float) ((fovY /180.0) * Math.PI); // degrees to radians
    float g = (float) (1 / Math.tan(fovY / 2));

    for(int i=0; i<16; i++) {
        switch (i) {

        case 0:
            projMatrix[i] = g / aspect;
            break;
        case 5:
            projMatrix[i] = g;
            break;
        case 10:
            projMatrix[i] = (zFar + zNear)/(zNear - zFar);
            break;
        case 11:
            projMatrix[i] = -1.0f;
            break;
        case 14:
            projMatrix[i] = (2 * zFar * zNear)/(zNear - zFar);
            break;
        default:
            projMatrix[i] = 0.0f;
        }
    }

    return projMatrix;
}

然后将返回结果分配给您的投影矩阵。

最佳答案

我没有意识到 perspectiveM 仅限于特定的 API 级别,但您可以轻松地自己重新创建该函数。这些公式在 gluPerspective 的手册页上,其工作方式相同。

您可以使用这些等式自己构建浮点矩阵:

http://www.opengl.org/sdk/docs/man/xhtml/gluPerspective.xml

关于android - 将 FOV 角度转换为透视投影参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11130020/

相关文章:

android - 必须下载什么手势文件以及如何下载?

java - 如何在 Libgdx 中支持 OpenGL ES GL10、GL11 和 GL20?

ios - 使用带有许多独特图元的实例绘图时,CPU与内存之间的权衡

android - OpenGL ES 2.0 : How to render to a frameBuffer in a lower resolution for environment mapping?

camera - 树莓派摄像头模块启用 "Raspistill"

IOS/objective-C : Display live camera preview on load without image picker controller

android - 将 byteArray 转换为字符串以初始化 jsonObject

java - Android 应用程序中 MarkerOptions.position 中的 NullPointer 与 Google map

android - Cordova 3.3.1-0.1.2 (Phonegap) 插件不工作

opencv - 良好的预制立体相机和机器人车辆建议