작성
·
465
0
여태까지는 Perspective Projection행렬을 이용하여, 동차 clip 좌표를 구해서, 실질적인 depth값을 Rasterizer단계에서 구해진다고 배워 왔습니다.
그런데, 이번 강의에서 배운 Orthographic Projection행렬을 곱하게 되면, depth값이 0~1사이로 바로 나오게 된다고 이해하고 있습니다.
질문1. 우선 위 내용을 보시고 제가 이해할 것이 맞는지?!
질문2. 만약 제가 이해를 잘못 했다고 하면, Orthographic Projectino행렬을 곱하여도 그 값은 아직 완전한 depth값이 아니라 Rasterizer단계에서 구해지는 건가요?
질문3. Orthgraphic Projection행렬에는 FOV값이 필요 없다고 하였는데, 그건 왜 그런건가요?? gameObject가 직교 투영 대상이기만 하면, 다 그려줘야 하기 때문인가요?
답변 2
0
3번) FOV 값은 카메라가 보는 위 아래 시야 각입니다.
직교 투영의 경우 물체와의 거리비와 상관 없이 범위 내의 물체를 그대로 출력하기 때문에 FOV값이
필요가 없는듯 보입니다.
(쉽게 말해 원근 투영은 먼 거리의 물체는 작게 가까운 거리의 물체는 크게 출력하는데 이 때 거리 대비 화면의 비율을 구할 때 FOV값이 쓰입니다. 하지만 직교 투영의 경우 가깝건 멀건 물체 크기 그대로를 출력하기 때문에 거리 대비 화면의 비율을 구할 필요가 없습니다. 따라서 출력할 범위인 가로, 세로, near, far만 넣어주는 것입니다.)
0
위 그림에서 보시다시피 clipping을 위해 unit cube로 변환해주는 과정에서 depth값을 왼편의 근거리와 원거리 좌표에 해당하는 (n, f)을 오른편의 (-1, 1) 좌표로 변환해주게 됩니다. 즉, 이 좌표는 depth값에 해당하고 이 과정은 rasterization 단계가 아닌 clipping 단계에서 이루어지게 됩니다. Rasterization 단계에서는 이렇게 변환된 '논리적' 좌표값들을 디스플레이의 스크린을 구성하는 픽셀들의 '물리적' 좌표로 mapping하는 작업을 합니다.
[이미지 출처: http://www.songho.ca/opengl/gl_projectionmatrix.html]
아 그렇군요. 이해했습니다. 감사해용