1 / 71

강의 내용 ( 열번째 )

강의 내용 ( 열번째 ) . 강의 내용 (5 월 21 일 ) : 5 장 관측 ( 고전적 관측과 컴퓨터 관측 ) 카메라의 위치 지정 ( 모델 - 관측행렬 , gluLookAT 의 사용 ) 단순한 투영들 ( 투시 , 직교 투영 ) 예제 : 장면 안에서 움직임 프로그램 예습 (5 월 28 일 ): Reading Assignment 5.7 장부터 5.10 장까지 (p239-p255) 숙제 없음 참고 5 월 14 일 휴강 ( 개교기념일 ). 제 5 장 관측.

Gabriel
Download Presentation

강의 내용 ( 열번째 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 강의 내용(열번째) • 강의 내용 (5월21 일) : 5장 • 관측 (고전적 관측과 컴퓨터 관측) • 카메라의 위치 지정 (모델-관측행렬, gluLookAT의 사용) • 단순한 투영들 (투시, 직교 투영) • 예제: 장면 안에서 움직임 프로그램 • 예습 (5월 28일): Reading Assignment • 5.7장부터 5.10장까지 (p239-p255) • 숙제 • 없음 • 참고 • 5월 14일 휴강 (개교기념일)

  2. 제 5 장 관측 • 관측의 두 부분(모델-관측행렬, 투영 및 절단) • OpenGL API가 관측을 어떻게 다루는지 보여 주기 위한 간단한 예제 프로그램 • 평행관측과 투시관측의 투영행렬을 유도함.

  3. 관측의 두 부분(2개의 행렬) • 모델-관측 행렬 • 객체들을 원점에 카메라가 위치한 프레임 상의 표현으로 전환함 • 정규 관측 절차의 사용이 가능 • 투영 행렬 • 어떤 종류의 투영을 할지를 결정 : 평행투영 혹은 투시 투영 • 세계의 어떤 부분의 이미지를 얻을 지 결정 :절단, 관측 공간

  4. 5.1 고전적 관측과 컴퓨터 관측 객체 투영선 투영의중심 투영면 그림 5.1 관측

  5. 합성 카메라 모형 • 고전적 관측과 컴퓨터 관측에서 동일한 요소 • 객체(Object) • 관측자(Viewer, Camera) • 투영선 (Projector): 직선 • 투영의 중심 (COP, Center of Projection) • 카메라 혹은 눈의 중심 • 카메라 프레임의 원점 (그래픽스 시스템) • 투영면 (Projection plane): 평면

  6. 투영의 방향 • COP (투영의 중심) • COP가 유한함. 투영 선이 한 점으로 만남. • 투시 관측(Perspective view) • DOP (투영의 방향), Direction of Projection • COP가 무한의 위치로 이동하면, 투영 선이 서로 평행하여진다. • 평행 관측(Parallel view) • 현대 API에서는 평행 관측과 투시 관측 모두를 제공한다.

  7. 평행 관측 그림 5.2 투영중심을 무한대로 옮김

  8. 평면 기하 투영(Planar geometric projection) • 투영면이 평면이고 투영 선이 직선인 경우 • 투시 투영과 평행 투영은 직선은 보존되지만 각도는 일반적으로 보존되지 않는다.

  9. 컴퓨터 그래픽스 시스템 • 컴퓨터 그래픽스 시스템 • 평행 관측 (Orthographic Parallel Viewing) • 투시 관측 (Perspective Viewing) • 고전적 관측 (다양한 관측 방법이 있음) • 다중 관측 직교 투영 • 1점, 2점, 3점 투시

  10. 5.1.1 고전적 관측 평면경사 정면경사 일점투시 삼점투시 등축 그림 5.3 고전적 관측들

  11. 평면 기하 투영의 분류

  12. 5.1.2 직교 투영(Orthographic Projection) 그림 5.4 직교 투영

  13. 직교 투영(Orthographic Projection) • 투영 선은 투영면에 수직이다. • 다중 관측 직교 투영에서 투영면은 객체의 주면 (principal face)중 하나와 평행하다. • 그림 5.5 : 3개의 다중 관측 직교 투영들 • 직교 투영으로부터 관측자가 객체의 형상을 그려볼 수 있기 위해서는 세 개 이상의 관측이 필요하다 • 거리와 각이 보존된다.

  14. 그림 5.5 다중 관측 직교 투영들 그림 5.5 신전과 세 개의 다중 관측 직교 투영들

  15. 5.1.3 측측 투영(Axonometric projection) • 투영선은 투영면에 수직이지만, 투영면은 객체에 대해 어느 방향에도 존재할 수 있다. 즉, 어떤 기본측과도 투영면이 수직하지 않음. (그림 5.6) • 만일 투영면이 모서리에서 만나는 3개의 주면과 대칭으로 놓여지면.(그림 5.7) • 등축 관측(isometric view) : 세 개의 주면에 대하여 대칭으로 놓여지면 • 이축 관측(dimetric view) : 두 개의 주면에 대칭으로 놓인 경우 • 삼축 관측(trimetric view) : 일반적인 경우

  16. 5.1.3 측측 투영(Axonometric projection) • 길이가 일정하게 축소됨. 따라서 길이 계산이 가능 • 등축 관측은 1개의 축소비, • 삼측 관측은 3개의 축소비 • 평행선들이 이미지 안에서 보존되나, 각은 그렇치 않다. • 원은 타원으로 투영된다. • 이러한 왜곡은 컴퓨터나 수작업으로 손쉽게 만드는 하나의 관측에서 여러 개의 주면을 보기 위해 지불되는 비용이다.

  17. 5.1.3 측측 투영(Axonometric projection) 그림 5.6 (a) 축측 투영의 구성(b) 평면도 (c) 측면도

  18. 그림 5.7 축측 관측들 등축 이축 삼축

  19. 5.1.4 경사 투영(Oblique projection) • 가장 일반적인 평행 투영(Parallel Projection) • 투영선과 투영면은 일정한 각을 가진다.(그림 5.8) • 투영면에 평행한 면 내의 각은 보존된다. • 투영면에 평행한 면에 있는 원은 원으로 투영되고, 우리는 객체의 둘 이상의 주면을 볼 수 있다. • 경사 관측은 손으로 작성하기에는 매우 어렵다. 또, 다소 자연스럽지도 못하다.

  20. 5.1.4 경사 투영(oblique projection) 그림 5.8 (a) 경사투영의 구성 (b) 평면도 (c) 측면도

  21. 5.1.5 투시(원근) 관측 (Perspective Projection) 그림 5.9 투시관측

  22. 투시 관측(Perspective viewing) • 객체가 관측자로부터 멀어질수록 그 크기가 줄어든다.(자연스러운 관측) • 건축분야, 애니메이션 등 실감나는 영상이 중요한 분야에 사용함. • 길이 측정이 불가능하다. • 선분의 길이가 얼마나 짧아지는가는 그 선분이 관측자로부터 얼마나 떨어져 있는가에 의해서 결정되므로

  23. 일점, 이점, 삼점 투시 • 객체의 세 가지 주방향 가운데 얼마나 많은 방향이 투영면에 평행 한가에 따라서 일점, 이점, 삼점 투시 (one, two, three point perspective)로 구별된다. • 일점투시 : 한 개의 소실점이 존재 • 이점투시 : 두 개의 소실점이 존재 • 삼점투시 : 3개의 주 방향에 평행한 모든 직선들은 3 개의 소실점에서 만난다.

  24. 그림 5.10 일점, 이점, 삼점 투시 (a) 삼점 투시 (b) 이점투시 (c) 일점 투시

  25. 5.2 카메라의 위치지정 • OpenGL이 제공하는 API • - GKS-3D, PHIGS와 같은 API와의 차이점. • 카메라의 위치 지정 (5.2절) • 투영을 어떻게 명시하는 가? (5.4절) • 모델-관측 행렬의 사용 • 공간에 객체의 위치를 지정하는 데 사용 • 참조 프레임으로부터 카메라 프레임으로 변환할 때.

  26. 프레임, 좌표계과 모델-관측행렬 • 모델링 프레임 (모델링 좌표계, 주좌표계) • 관측자의 위치와 종류에 관계없이 객체가 정의됨. • 세계 프레임, 사용자 프레임(세계 좌표계) • 카메라의 위치는 원점에 위치하고 방향은 –z 방향이다. • 카메라 프레임 (카메라 좌표계) • 모델-관측 행렬 • 모델링 프레임의 객체를 세계 프레임으로 객체로 변환시킨다. • Identity matrix인 경우는 세계 프레임과 카메라 프레임이 동일한 경우이다.

  27. Modeling Transformation Modeling Coordinates World Coordinates Viewing Transformation Viewing Coordinates Workstation Transformation Projection Transformation Device Coordinates Projection Coordinates

  28. 5.2.1 카메라 프레임의 위치지정 그림 5.11 초기 카메라 위치

  29. 그림 5.12 카메라와 세계프레임의 이동 (a) 초기상태 (b) 모델-관측 행렬의 변경 후

  30. 모델-관측행렬(C) 세계 프레임(점 q) 카메라 프레임(점 q’)

  31. 객체로서의 카메라 Camera를 원하는 위치에 어떻게 지정하는가? • Default 위치의 카메라를 세계 프레임에 대하여 움직이는 것으로 생각하자. (카메라를 하나의 객체로 이해함) • 일련의 회전과 이동을 적용하여 움직인다. 따라서, 모델-관측 행렬의 값이 변경된다. • 예: 양의 x축 방향을 향한 객체면의 이미지를 원한다고 하자. • 그림 5.13에서와 같이 카메라를 객체로부터 멀리 떨어지게 하고, y축을 중심으로 회전시킨다.

  32. 그림 5.13 카메라의 위치 지정 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -d); glRotatef(-90.0, 0.0, 1.0, 0.0); 두 프레임의 관점에서 보면 (1)세계 프레임을 카메라 프레임에 대하여 회전한 후에 (2)두 프레임을 멀리 떨어뜨린다.

  33. 입방체의 등축 관측 • 입방체의 인접하는 세 면들에 대해서 카메라가 대칭적으로 위치할 때 등축 관측을 얻게 된다. • 이 방향을 갖도록 입방체를 회전하고, 다음에 카메라를 멀리 이동시킨다. • 입방체를 Y 축을 중심으로 45도 회전 • 입방체를 X 축을 중심으로 –35.26도 회전 • 카메라를 멀리 이동

  34. glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -d); glRotatef(35.26,1.0,0.0,0.0); glRotatef(45,0.0,1.0,0.0);

  35. 5.2.2 관측 API PHIGS GKS-3D View Reference point(VRP) View Plane Normal (VPN) View-Up Vector (VUP) 그림 5.14 카메라의 프레임

  36. 두 개의 관측 API set_view_plane_normal(nx, ny, nz); : VPN은 투영면 즉, 카메라의 후면의 방향 set_view_up(ux, uy, uz); : VPN만 주어졌을 때 평면 위에 카메라의 뒷면을 대고 마음대로 회전시킬 수 있다. • VUP는 이러한 카메라를 고정시킨다.

  37. 그림 5.15 그림 5.15 관측 상향 벡터의 결정

  38. Viewing-coordinate system(카메라 프레임, u-v-n) • VRP (Viewing Reference Point) : 원점 • VPN (Viewing Plane Normal); n • VUV (View Up Vector) : Vup , 관측면에 투영하여 v를 얻음 • u=vn 으로 구함.

  39. 카메라는 원래 프레임의 대각선상에 위치하여야 하므로, 다음의 p를 사용하면 5.2.1에서 유도한 동일한 모델-관측 행렬을 얻는다.

  40. 5.2.3 Look-At 함수 OpenGL 에서 사용

  41. gluLookAt 함수 • gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz); - 카메라의 위치에 따라 모델-관측 행렬을 변경한다. • 카메라의 위치(점 e)를 시점(eyepoint)이라고 한다. (VRP) • 지향점(at point) (점 e) • VPN = e – a • Up vector는 카메라의 상 방향을 나타냄.

  42. 5.2.4 기타 관측 API 그림 5.17 횡전, 종전, 편요

  43. 기타 관측 API 횡전 (Roll) : z축을 중심으로 회전 종전(pitch) : x축을 중심으로 회전 편요(yaw) : y 축을 중심으로 회전 앙각 (elevation) 방위각(azimuth) 꼬임각 (twist angle)

  44. 극좌표계 앙각 방위각 그림 5.18 앙각과 방위각

  45. 5.3 단순한 투영도

  46. 5.3.1 (단순한) 투시 투영 • 카메라의 위치 : 원점 • 카메라의 방향 : -z 축 방향

  47. 그림 5.19 두 대의 카메라 • 대부분의 실제적인 상황 • 보다 일반적인 상황 • 카메라의 뒷면이 정면에 대하여 임의의 방향도 가질 수 있다. • 편의상 (a) 경우만 고려한다.

  48. 그림 5.20 투시투영의 세 관측들 (a) 삼차원 관측 (b) 평면도 (c) 측면도

  49. 비균일 축소(Nonuniform foreshortening) z로 나누어지므로 비균일 축소

  50. 투시 변환 • 투시 변환 (perspective transformation) • 역 변환(투영의 위치로부터 원래의 위치로) 할 수 없다. 여러 개의 점이 한 점으로 투영되기 때문임. • 직선은 보존되지만 affine 변환은 아니다. • 동치 좌표계 (주로 w=1인 경우를 사용한다).

More Related