2013-02-12 2 views
2

간단한 질문 : orthogonalonol보기에서 near 및 far 값을 변경합니까? 예를 들어 왼손잡이는 z가 양수이고 멀리 떨어지는 것은 z가 음수 값입니다.OpenGL Orthogonal View Near/Far 값

왼손잡이 near/far가 -1,1이어야하고 오른손/near/far가 1, -1이되어야 함을 의미합니까? 아니면 항상 -1,1입니까?

답변

1

예를 들어 프로젝션 매트릭스를 만드는 경우 glOrtho()의 경우, 더 깊고 더 가까운 깊이 클리핑 평면의 값을 제공합니다. 만약 실제 행렬 살펴 있다면 돌기,

z_proj = (-2 * z_view - far - near)/(far - near) 

경우 far > near이다 z_view 감소함에 따라,이 값이 증가 후에는 생성 된 Z 좌표를 볼 것이다. 즉, 작은 z_view의 오브젝트는 z_view의 오브젝트보다 멀리 떨어져 있습니다. 이것은 카메라 앞에있는 물체가 음의 z 값을 갖는 우 편 좌표계와 같습니다.

far < near 인 경우이 값은 z_view으로 증가합니다. 즉, z_view이 더 큰 오브젝트는 더 작은 오브젝트 인 z_view보다 멀리 떨어져 있습니다. 이것은 카메라 앞에있는 물체가 양의 z 값을 갖는 왼손 좌표계와 같습니다.

당신은 더 알 수있는 z_view-near-1에 대한지도와 +1--far지도의 z_view.

실제 (절대) 값은 장면에 따라 다릅니다. 일반적으로 카메라 뒤에 아무것도 보이지 않기를 원합니다. 따라서 near을 0 (또는 장면의 첫 번째 객체까지의 거리)으로 설정할 수 있습니다. 카메라에 가장 먼 픽셀 거리까지 적어도 far으로 설정해야합니다. 왼손 좌표계를 사용하려면이 값을 반전하십시오. 예 : 오른손에 대한 [0, 2]는 왼손잡이에 대한 [0, -2]이됩니다. 당신은 항상 이것에 대해 생각하고 싶지 않은 경우

, 별도의 규모 행렬에 투영 행렬의 선성 부분을 추출 할 수 있습니다 :

ProjectionRH = Ortho * Scal(1, 1, 1) 
ProjectionLH = Ortho * Scal(1, 1, -1)