2012-06-21 2 views
3

그래서 같은 정도의 수평 및 수직 각도를 반환 장치의 후면에 직면 카메라의 FOV 각도를 유도 할 수있는 프로그램이있다 I 매개 변수 변환을 적용하여 OpenGL의 Matrix.frustrumM()에 전달할 올바른 "left, right, bottom, top"매개 변수를 얻으시겠습니까? 변환 FOV 각도는

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

은 내가 CameraView에 OpenGL을 모양을 중첩하고 상관없이 카메라의 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; 
} 

이 그런 다음 투영 행렬에 반환 결과를 할당합니다.

+0

겠습니까 Matrix.perspectiveM() 당신이 원하는 게 무엇인지? – Tim

+0

예, API 레벨 14에서만 구현되었으며 목표는 10입니다. – Joey

+0

사전 예상의 개념을 이해하려면이 웹 사이트를 확인하십시오. http://www.mathdisk.com/pub/safi/worksheets/Perspective_Projection –

답변

2

perspectiveM이 특정 API 수준으로 제한된다는 사실을 알지 못했지만 직접 함수를 쉽게 다시 만들 수 있습니다. 동일한 방법으로 작동하는 gluPerspective의 맨 페이지에 수식이 있습니다.

그냥 플로트 행렬을 구축 할 수 있습니다 자신이 방정식을 사용 :

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

+0

감사합니다. 내가 뭘했는지. – Joey

+0

링크를 업데이트하십시오. –