1. 좌표계
모델 좌표계(지역 좌표계)
: 모델 좌표계는 모델 마다 존재하는 모델을 기준으로 하는 좌표계이다.
위 그림처럼 모델마다 모델 좌표계 원점이 틀리다. 연필을 표현하려면 지우개 원 중심에 모델 좌표계 원점을 그리는 것이 적합하므로 그림처럼 모델 좌표계가 설정되어 있고, 박스 같은 경우에는 좌 하단에 원점이 그려져 있다.
전역 좌표계
: 모델이 여러개일 경우 모델끼리의 상대적 위치를 결정 지을수 있는 좌표계가 전역좌표계이다.
시점 좌표계(카메라 좌표계)
: 화면에 보이는 것은 결국 시점이 좌우하기 때문에 보는 사람의 위치와 바라보는 방향에 따른 시점좌표계가 존재한다.
: 시점, 즉 카메라의 위치, 각도 라고 생각하면 편하다.
2. 변환 종류
모델 변환
: 물체에 기하 변환을 가하여 물체 모습을 변환하는 작업
: 모델 변환 행렬을 만들고 이것을 전역 좌표계에 곱해서 전역 좌표계와 모델 좌표계를 일치 시키고 전역 좌표계에서 모델 좌표를 기준으로 해당 모델을 그리는 것이 모델 변환이다.
: 모델이 아직 그려지지 않았다고 가정하고 모델 좌표계를 변환한 후 모델을 그린다.
시점 변환(뷰 변환)
: 변환된 물체를 관찰하기 위해 카메라를 이동하고 회전함으로써 카메라 위치와 방향을 설정.
: 전역 좌표 기준으로 그려진 모델을 관찰자의 시점으로 변환하는 것을 말한다.
: 모델 좌표에 모델 변환 행렬을 곱하면 전역 좌표가 생성 된다. 시점 변화도 마찬 가지로 전역 좌표에 시점 변환 행렬을 곱하면 시점 좌표로 변한다.
투상변환
: 카메라의 렌즈를 선택하고 촬영하여 물체의 2차원 영상을 필름에 맺히게 하는 작업.
모델 뷰 변환
: 모델 변환 + 뷰 변환
3. 모델 변환 GL 구현
void glMatrixMode (GLenum mode);
: 변환 종류 선택 함수. 모델 뷰 변환인지, 투상 변환인지, 텍스처 변환인지 등등
glLoadIdentity();
: 상태 변수를 사용하는 지엘에서는 항상 현재의 상태 변수, 즉 현 상태 변수 값이 중요하다.
위 함수를 호출하면 현 변환 행렬이 I(항등 행렬)로 바뀌는 것이다.
즉, 모델 좌표계, 전역 좌표계, 시점 좌표계가 일치된다.
glTranslatef(dx, dy, dz);
glScalef(sx, sy, sz);
glRotatef(theta, vx, vy, vz);
: 모델 좌표계의 이동, 크기 조절, 회전을 가하는 함수.
glPushMatrix();
glPopMatrix();
: 변환 행렬스택에 push, pop하는 함수
4. 시점 변환 GL 구현
gluLookAt(eyeX, eyeY, eyeZ, atX, atY, atZ, upX, upY, upZ);
(eyeX, eyeY, eyeZ) 위치의 카메라가 (atX, atY, atZ)를 바라보게 하라는 것이다. (upX, upY, upZ)는 카메라의 상향 벡터이다.
'영상 처리 프로그래밍' 카테고리의 다른 글
[컴퓨터 그래픽스] 뷰 포트 변환 (0) | 2017.11.23 |
---|---|
[컴퓨터 그래픽스] 투상 (0) | 2017.11.23 |
[컴퓨터 그래픽스] 기하 변환 (1) | 2017.11.23 |
[컴퓨터 그래픽스] 좌표계 (1) | 2017.11.23 |
[컴퓨터 그래픽스] OpenGL 기본(2) (0) | 2017.11.22 |