Viewing

1 / 35

# Viewing - PowerPoint PPT Presentation

Viewing. 고려대학교 컴퓨터 그래픽스 연구실. Fundamental Types of Viewing. Perspective views finite COP (center of projection) Parallel views COP at infinity DOP (direction of projection). parallel view. perspective view. Parallel View. Perspective View. Classical Viewing.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about ' Viewing' - tayte

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Viewing

고려대학교 컴퓨터 그래픽스 연구실

kucg.korea.ac.kr

Fundamental Types of Viewing
• Perspective views
• finite COP (center of projection)
• Parallel views
• COP at infinity
• DOP (direction of projection)

parallel view

perspective view

kucg.korea.ac.kr

Parallel View

kucg.korea.ac.kr

Perspective View

kucg.korea.ac.kr

Classical Viewing
• Specific relationship between the objects and the viewers

kucg.korea.ac.kr

Orthographic Projections
• Projectors are perpendicular to the projection plane
• preserve both distances and angles

temple and three multiview orthographic projections

orthographic projections

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

construction

top view

side view

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

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

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

construction

top view

side view

kucg.korea.ac.kr

Perspective Projections (1/2)
• Diminution of size
• when objects are moved father from the viewer, their images become smaller

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

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

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

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

kucg.korea.ac.kr

Positioning of the Camera (1/3)
• 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);

initial configuration

after change in the model-view matrix

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);

glTranslatef(0.0, 0.0, -d);

glRotatef(-90.0, 0.0, 1.0, 0.0);

kucg.korea.ac.kr

Positioning of the Camera (3/3)
• Create an isometric view of the cube

y

y

y

z

x

x

view from positive z axis

view from positive z axis

view from positive x axis

kucg.korea.ac.kr

Positioning of the Camera (3/3)
• Create an isometric view of the cube

glMatrixMode(GL_MODELVIEW);

glTranslatef(0.0, 0.0, -d);

glRotatef(35.26, 1.0, 0.0, 0.0);

glRotatef(45.0, 0.0, 1.0, 0.0);

y

y

y

x

x

x

view from positive z axis

view from positive z axis

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

determination of the view-up vector

camera frame

kucg.korea.ac.kr

U-V-N System (2/2)
• Translation after rotation
• VRP – (x, y, z)  T(-x, -y, -z)
• VNP – (nx, ny, nz)  n
• VUP – vup v = vup – (vup• n) n

 u = v  n

(※ our assumption – all vectors must be normalized )

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

kucg.korea.ac.kr

Others
• Roll, pitch, and yaw
• ex. flight simulation
• Elevation and azimuth
• ex. star in the sky

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 view

top view

side view

kucg.korea.ac.kr

Model-view

Projection

Perspective division

projection pipeline

Simple Perspective Projections (2/2)
• Homogeneous coordinates
• Perspective projection matrix

kucg.korea.ac.kr

Simple Orthogonal Projections
• Projectors are perpendicular to the view plane
• Orthographic projection matrix

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

kucg.korea.ac.kr

Perspective in OpenGL (1/2)
• Specification of a frustum
• near, far: positive number !!

 zmax = – far

 zmin = – near

glMatrixMode(GL_PROJECTION);

glFrustum(xmin, xmax, ymin, ymax, near, far);

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);

gluPerspective(fovy, aspect, near, far);

kucg.korea.ac.kr

Parallel in OpenGL
• Orthographic viewing function
• OpenGL provides only this parallel-viewing function
• near < far !!

 no restriction on the sign

 zmax = – far

 zmin = – near

glMatrixMode(GL_PROJECTION);

glOrtho(xmin, xmax, ymin, ymax, near, far);

kucg.korea.ac.kr

Walking Though a Scene (1/2)

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;

}

void display(void)

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

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( );

}

kucg.korea.ac.kr

Walking Though a Scene (2/2)

void myReshape(int w, int h)

{

glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);

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);

}

kucg.korea.ac.kr

• Steps
• light source at (xl, yl, zl)
• translation (-xl, -yl, -zl)
• perspective projection through the origin
• translation (xl, yl, zl)

kucg.korea.ac.kr

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 */

glBegin(GL_POLYGON);

.

. /* draw the polygon again */

.

glEnd( );

glPopMatrix( ); /* restore state */

kucg.korea.ac.kr