좌표계의 변환(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 |