2014-07-11 4 views
0

이 함수는 나 가까운 클리핑면의 정확한 크기를 알려줍니다.투영 매트릭스의 nearplane 크기를 찾는 방법은 무엇입니까?

public Vector2 NearplaneSize 
    { 
     get 
     { 
      float w = 2 * Mathf.Tan(Mathf.Deg2Rad(Fov)/2) * ZNear; 
      return new Vector2(w, w/AspectRatio); 
     } 
    } 

나는 같은 비행기를 만드는거야 :

Vector2 s = cam.NearplaneSize; 
Mesh = PrimitiveFactory.CreatePlane(s.X/-2, s.Y/-2, -(cam.ZNear + 0.1f), s.X, s.Y, 1, 1, Quaternion.FromAxisAngle(Vector3.UnitX, Mathf.Deg2Rad(90))); 
카메라 앞에서

,하지만 약간 큰 절반 이상 화면. 그래서 분명히 계산이 잘못되었습니다. 나는 더 좋은 공식을 찾는 것처럼 보이지 않는다.

아이디어가 있으십니까? 감사합니다

답변

1

OpenTK를 모르지만 이전의 gluPerspective 호출로 인해 "Fov"는 일반적으로 fovx가 아니라 fov y로 이해됩니다.

그래서 나는

float h = 2 * Mathf.Tan(Mathf.Deg2Rad(Fov)/2) * ZNear; 
return new Vector2(h * AspectRatio, h); 

트릭을 할해야한다고 가정합니다.

관련 문제