Presentation is loading. Please wait.

Presentation is loading. Please wait.

Graphics Graphics Korea University kucg.korea.ac.kr Viewing 고려대학교 컴퓨터 그래픽스 연구실.

Similar presentations


Presentation on theme: "Graphics Graphics Korea University kucg.korea.ac.kr Viewing 고려대학교 컴퓨터 그래픽스 연구실."— Presentation transcript:

1 Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Viewing 고려대학교 컴퓨터 그래픽스 연구실

2 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Fundamental Types of Viewing Perspective views finite COP (center of projection) Parallel views COP at infinity DOP (direction of projection) perspective view parallel view

3 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Parallel View

4 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Perspective View

5 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Classical Viewing Specific relationship between the objects and the viewers

6 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Orthographic Projections Projectors are perpendicular to the projection plane preserve both distances and angles orthographic projections temple and three multiview orthographic projections

7 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Axonometric Projections (1/2) Projection plane can have any orientation with respect to the object projectors are still orthogonal to the projection planes top viewside viewconstruction

8 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Axonometric Projections (2/2) Preserve parallel lines but not angles isometric – projection plane is placed symmetrically with respect to the three principal faces dimetric – two of principal faces trimetric – general case

9 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Axonometric Projections (2/2) Preserve parallel lines but not angles isometric – projection plane is placed symmetrically with respect to the three principal faces dimetric – two of principal faces trimetric – general case

10 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Oblique Projections Projectors can make an arbitrary angle with the projection plane preserve angels in planes parallel to the projection plane top viewside viewconstruction

11 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Perspective Projections (1/2) Diminution of size when objects are moved father from the viewer, their images become smaller

12 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Perspective Projections (2/2) One-, two-, and three-point perspectives how many of the three principal directions in the object are parallel to the projection plane vanishing points three-point perspective two-point perspective one-point perspective

13 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Perspective Projections (2/2) One-, two-, and three-point perspectives how many of the three principal directions in the object are parallel to the projection plane vanishing points three-point perspective two-point perspective one-point perspective

14 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Perspective Projections (2/2) One-, two-, and three-point perspectives how many of the three principal directions in the object are parallel to the projection plane vanishing points three-point perspective two-point perspective one-point perspective

15 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Perspective Projections (2/2) One-, two-, and three-point perspectives how many of the three principal directions in the object are parallel to the projection plane vanishing points three-point perspective two-point perspective one-point perspective

16 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Positioning of the Camera (1/3) initial configuration after change in the model-view matrix OpenGL places a camera at the origin of the world frame pointing in the negative z direction move the camera away from the objects glTranslatef(0.0, 0.0, -d);

17 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Positioning of the Camera (2/3) Look at the same object from the positive x axis translation after rotation by 90 degrees about the y axis glMatrixMode(GL_MODELVIEW); glLoadIdentity( ); glTranslatef(0.0, 0.0, -d); glRotatef(-90.0, 0.0, 1.0, 0.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity( ); glTranslatef(0.0, 0.0, -d); glRotatef(-90.0, 0.0, 1.0, 0.0);

18 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Positioning of the Camera (3/3) Create an isometric view of the cube yy z y xx view from positive z axis view from positive x axis

19 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Positioning of the Camera (3/3) Create an isometric view of the cube glMatrixMode(GL_MODELVIEW); glLoadIdentity( ); glTranslatef(0.0, 0.0, -d); glRotatef(35.26, 1.0, 0.0, 0.0); glRotatef(45.0, 0.0, 1.0, 0.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity( ); glTranslatef(0.0, 0.0, -d); glRotatef(35.26, 1.0, 0.0, 0.0); glRotatef(45.0, 0.0, 1.0, 0.0); x yyy xx view from positive z axis

20 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr U-V-N System (1/2) VRP (view-reference point), VPN (view-plane normal), and VUP (view-up vector) u, v (up-direction vector), n (normal vector)  x, y, z axes respectively camera frame determination of the view-up vector

21 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr U-V-N System (2/2) Translation after rotation VRP – ( x, y, z )  T( -x, -y, -z ) VNP – ( n x, n y, n z )  n VUP – v up  v = v up – (v up n) n  u = v  n ( ※ our assumption – all vectors must be normalized )

22 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Look-At Function OpenGL utility function VRP: eyePoint VPN: – ( atPoint – eyePoint ) VUP: upPoint – eyePoint gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz); look-at positioning

23 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Others Roll, pitch, and yaw ex. flight simulation Elevation and azimuth ex. star in the sky

24 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Simple Perspective Projections (1/2) Simple camera projection plane is orthogonal to z axis projection plane in front of COP three-dimensional viewtop viewside view

25 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Simple Perspective Projections (2/2) Homogeneous coordinates Perspective projection matrix projection pipeline Model-view Projection Perspective division

26 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Simple Orthogonal Projections Projectors are perpendicular to the view plane Orthographic projection matrix

27 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Projections in OpenGL Angle of view only objects that fit within the angle of view of the camera appear in the image View volume be clipped out of scene frustum – truncated pyramid

28 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Perspective in OpenGL (1/2) Specification of a frustum near, far: positive number !!  z max = – far  z min = – near glMatrixMode(GL_PROJECTION); glLoadIdentity( ); glFrustum(xmin, xmax, ymin, ymax, near, far); glMatrixMode(GL_PROJECTION); glLoadIdentity( ); glFrustum(xmin, xmax, ymin, ymax, near, far);

29 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Perspective in OpenGL (2/2) Specification using the field of view fov: angle between top and bottom planes fovy: the angle of view in the up ( y ) direction aspect ratio: width divided by height glMatrixMode(GL_PROJECTION); glLoadIdentity( ); gluPerspective(fovy, aspect, near, far); glMatrixMode(GL_PROJECTION); glLoadIdentity( ); gluPerspective(fovy, aspect, near, far);

30 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Parallel in OpenGL Orthographic viewing function OpenGL provides only this parallel-viewing function near < far !!  no restriction on the sign  z max = – far  z min = – near glMatrixMode(GL_PROJECTION); glLoadIdentity( ); glOrtho(xmin, xmax, ymin, ymax, near, far); glMatrixMode(GL_PROJECTION); glLoadIdentity( ); glOrtho(xmin, xmax, ymin, ymax, near, far);

31 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Walking Though a Scene (1/2) void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(viewer[0], viewer[1], viewer[2], 0,0,0, 0,1,0); glRotatef(theta[0], 1.0, 0.0, 0.0); glRotatef(theta[1], 0.0, 1.0, 0.0); glRotatef(theta[2], 0.0, 0.0, 1.0); colorcube( ); glFlush( ); glutSwapBuffers( ); } void keys(unsigned char key, int x, int y) { if(key == ‘x’) viewer[0] -= 1.0; if(key == ‘X’) viewer[0] += 1.0; if(key == ‘y’) viewer[1] -= 1.0; if(key == ‘Y’) viewer[1] += 1.0; if(key == ‘z’) viewer[2] -= 1.0; if(key == ‘Z’) viewer[2] += 1.0; }

32 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Walking Though a Scene (2/2) void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity( ); if( w <= h ) glFrustum(-2.0, 2.0, -2.0*(GLfloat)h/(GLfloat)w, 2.0*(GLfloat)h/(GLfloat)w, 2.0, 20.0); else glFrustum(-2.0 *(GLfloat)w/(GLfloat)h, 2.0 *(GLfloat)w/(GLfloat)h, -2.0, 2.0, 2.0, 20.0); glMatrixMode(GL_MODELVIEW); }

33 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Projections & Shadows (1/2) Shadow polygon Steps light source at ( x l, y l, z l ) translation ( -x l, -y l, -z l ) perspective projection through the origin translation ( x l, y l, z l )

34 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Projections & Shadows (2/2) GLfloat m[16];/* shadow projection matrix */ for(i=0; i<16; i++) m[i] = 0.0; m[0] = m[5] = m[10] = 1.0; m[7] = -1.0/yl; glColor3fv(polygon_color); glBegin(GL_POLYGON);../* draw the polygon normally */. glEnd( ); glMatrixMode(GL_MODELVIEW); glPushMatrix( );/* save state */ glTranslatef(xl, yl, zl);/* translate back */ glMultMatrixf(m);/* project */ glTranslatef(-xl, -yl, -zl);/* move light to origin */ glColorfv(shadow_color); glBegin(GL_POLYGON);.. /* draw the polygon again */. glEnd( ); glPopMatrix( );/* restore state */

35 KUCG Graphics Lab @ Korea University kucg.korea.ac.kr Shadows from a Cube onto Ground


Download ppt "Graphics Graphics Korea University kucg.korea.ac.kr Viewing 고려대학교 컴퓨터 그래픽스 연구실."

Similar presentations


Ads by Google