我有獲取設備的後置攝像頭,它返回度的水平和垂直角,像這樣的FOV角度的程序:轉換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;
}
然後再將結果返回到您的投影矩陣。
將Matrix.perspectiveM()你想要什麼? – Tim
是的,但這只是在API級別14實施,我瞄準了10. – Joey
檢查此網站了解預測投影的概念http://www.mathdisk.com/pub/safi/worksheets/Perspective_Projection – 2012-07-08 02:10:41