Search
Duplicate
📺

viewport란?

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Graphics
Scrap
태그
9 more properties
그래픽스 과제를 진행하다보면 viewport에 대해 많이 나오게 된다.
viewport가 대체 뭔지 알아보자!

Viewport가 뭘까?

viewport라는 용어를 사용하는 많은 플랫폼들이 존재하기 때문에 Graphics 에서, minirt과제에서 사용하는 viewport에 대한 내용을 찾기 어려웠다.
그래서 지금부터 설명하는 내용은 Raytracing기준의 viewport내용을 아~̆̈~̆̈~̆̈~주 간단하게! 정리한 것이다!

viewport!

아래 그림을 보자! 우리는 (x, y, z) 좌표위의 구를 보고있는데 이 것을 모니터상에 표현하고 싶다!
그렇다면 우리는 어떻게 이미지상에 저 화면을 띄울 수 있는 것일까?
우리가 시선을 보는 위치에 viewport 화면을 하나 생성한다. 카메라의 앞에 생성된 작은 창, 저게 바로 viewport 이다.
이 화면은 실제 이미지도 아니고 메모리상에 존재하는 것도 아니다. 하지만 생성되는 이 viewport는 우리가 최종적으로 만들 이미지의 비율과 같아야 한다!

그래서 우리는 viewport로 무엇을 하는 걸까?

우리는 3D공간에 있는 도형을 2D화면에 찍고싶다. 이제 화면에 도형을 찍어야 하는데 해당 viewport를 지나는 지점만 2D화면에 찍을 것이다!
즉 3D 좌표계 상의 도형을 viewport에 원근 투영을 시키는 것이다! 아래의 조금 더 잘 그려진 그림을 보자

이미지의 비율과 같아야 하는 이유를 이해해보자!

viewport의 비율이 출력할 이미지의 비율과 다르다면 우리는 원하는 위치에 원하는 도형을 찍을 수 없을 것이다!
예를들어 이미지는 가로로 긴비율인데 viewport가 세로로 길쭉하다면 아래와 같은 현상이 발생한다.
카메라에서 쏜 파란색 ray는 이미지의 위치를 벗어난 지점에 찍히게 될 것이다!!

그렇다면 우리는 viewport를 어디에 띄워야 할까?

코드를 구현하는 사람마다 다르겠지만,
우리가 배우고 있는 Raytracing in one weekend 책에서는 focal_length를 1로 고정해서 사용하고 있다!
즉 카메라와 viewport의 중앙과의 거리가 1인 것이다. 이렇게 하면 어떤 효과가 있을까?
기준이 있기 때문에 화면 비율만 알고 있으면 viewport를 띄울 좌표계상의 위치를 알 수 있다.
카메라를 돌려도 항상 카메라와 1인 위치에 viewport가 존재하게 된다.

결과적으로 viewport란...

결과적으로 viewport는 3D 좌표상의 도형들을 2D로 표현하기 위해 사용하는 하나의 틀이다. 카메라에서 시작해서 viewport를 지나는 ray들만 image에 표현하겠다는 경계선이라고 봐도 무방하다.
만약 위 내용을 봐도 이해가 되지 않는다면... DM

돌아가기.. ⇒ (5) Raytracing One Weekend 식 이해하기! 2