컴퓨터 공학/Graphics

3차원 그래픽스의 투영과 카메라 적용

코딩하는 Español되기 2024. 6. 12. 13:58

좌표계의 변환(Coordinate Transformation)

객체를 고정시키고 좌표계를 변환시켜도 객체를 변환시킨 효과

  - 반대 방향으로 이동 | 회전시킨 효과

  - 좌표축을 확대/축소 하면 객체는 축소/확대되는 효과

  - 뷰잉 과정에서 이용되며, 애니메이션 효과

예시(자동차 모델링)

 - 앞바퀴를 표현하기 위한 좌표계와 차체를 표현하기 위한 좌표계가 상이

 - 자동차를 표현하기 위해서는 하나의 통합된 좌표계가 필요

 - 통합좌표계와 앞바퀴좌표계간 통합좌표계와 차체좌표계간에는 좌표변환이 필요

 

3D 좌표계

차원 좌표계로는 오른손 좌표계와 왼손좌표계를 사용

 - 오른손 좌표계 : 화면 앞으로 나올 수록 z값이 커지는 좌표계

 - 왼손 좌표계 : 화면 앞으로 나올 수록 z값이 작아지는 좌표계

 

투영의 종류

3D물체를 2D평면에 표현하기 위해 3D 모델 좌표를 2D 평면 좌표로 변환

(1) 평행 투영법(Parallel Projection)

  - 직각 투영(Orthographic Projection)

     : 평행 투영할 때 투영각이 투영면과 직각이 되는 경우

       물체의 길이와 각도가 정확하게 표시되므로 기계 및 건축 제도에 적당

       임의의 점(x,y,z)를 직각투영시키면 투영면에 나타나는 투영점(xp, yp, zp)는 Xp = X, Yp = Y, Zp = 0

  - 등축투영(Axonometric Projection)
    : 투영면이 축과 직각이 아닌 방향으로 위치

  - 경사투영(Oblique Projection)

    : 평행투영에서 투영방향이 투영면과 수직이 아니고 일정한 각도를 이룸

 (2) 원근 투영법(Perspective Projection)

  - 공간 상의 객체와 투영중심점(=시점)을 연결해 투영면에 표현

  - 거리에 따라 물체의 크기가 달라 훨씬 실감나는 화면을 얻을 수 있다.

  - 임의의 점 P를 원근 투영하면 (투영면 z = 0)

      X,Y 는 d-z에 반비례. 즉, 시점에서 멀리 떨어질 수록 Xp, Yp값이 작아짐.

 

ViewPort와 View Window

 

GL 좌표계에서의 ViewPort

 

glViewport 코드

void glViewport(GLint left, GLint bottom, Glsizei width, GLsizei height);

//parameters
// left : Window의 좌하단을 원점으로 하는 Viewport X축좌표
// bottom : Window의 좌하단을 원점으로 하는 Viewport Y축좌표
// width : Viewport의 Width(넓이) (단위 : Pixel)
// height : Viewport의 height(shv이) (단위 : Pixel)

 

4개의 Viewport 생성

'컴퓨터 공학 > Graphics' 카테고리의 다른 글

Texture Mapping  (0) 2024.06.12
Add Attributes, Remove elements  (0) 2024.06.12
Traverse a Mesh with the half-edge structure  (0) 2024.06.12
XR 콘텐츠를 위한 3D 모델  (2) 2024.06.12
Polygon Mesh Processing Library  (0) 2024.06.12