Computer Graphics

Download Report

Transcript Computer Graphics

Modeling and Viewing


Modeling
 Use modeling (local) coordinates and geometric transformations
to build hierarchically more complex objects and scenes. The final
scene is in world frame
Viewing
 Model the camera: position , orientation, camera (view) reference
frame, projection
 Viewing transformations: from world to camera coordinates
 Clipping/hidden surface removal: clip out from consideration parts
outside of view volume
 Projection transformations and hidden surface removal: from 3D
viewing coord. to 2D projection coord. and normalized device
coordinates
 Viewport transformations: from normalized device coordinates to
screen (device) coordinates
Viewing, projections
Hofstra University
1
Viewing and Projection

Transforming


Modeling transformations (affine), 3D to 3D
Viewing transformations (affine), 3D to 3D




Projection transformations (not affine), 3D to 2D




Linear in homogeneous coordinates
Images of parallel lines stay parallel
Transformation matrix in homogeneous coordinates has last
row, 0 0 0 1
Linear in homogeneous coordinates
Images of parallel lines may intersect at infinity
Transformation matrix most general
Viewport transformations (affine), maps viewing
window to viewport, 2D to 2D
Viewing, projections
Hofstra University
2
Viewing Terminology






Viewing volume: the region in 3D that can contain
objects that are visible by the camera
Projection: math transformations that maps from 3D
to 2D (or 4D to 3D, in homogeneous)
Projection plane: the plain containing the 2D image
Viewing window: the rectangle in the image plane that
will be mapped to the screen eventually
Viewport: 2D rectangle within the display window on
the screen that shows the viewing window
Clipping: cutting off from consideration parts outside
the view volume (done easier if the view volume is
mapped to a canonical view volume which is a cube)
Viewing, projections
Hofstra University
3
Graphics functions

Graphics systems support viewing by



Providing a viewing model whose parameters specify
the camera
Providing functions for viewing, projection and viewport
Implementing viewing and projection transformations
as matrix multiplications in homogeneous coordinates
Viewing, projections
Hofstra University
4
Viewing APIs



The the position of the eye or camera is
called the view reference point (VRP)
A unit view plane normal (VPN), is in the
viewing direction, it is perpendicular to the
image plane. In open GL VPN is in direction
opposite to the one in which camera is
looking
Another vector called the view-up vector is
a vector specifying which is the approximate
“up” direction for the camera
Viewing, projections
Hofstra University
5
Camera Model: viewing
VRP: Camera(eye) position,
(u,v,n): camera frame.
Viewing: specify VRP,n,VUP.
Viewing, projections
Hofstra University
6
Viewing Coordinate System: (u,v,n)




right handed
v, the y-axis of the view frame, is the
perpendicular projection of VUP on the
projection plane
n is the z-axis of the view frame
u=v×n
Viewing, projections
Hofstra University
7
Setting up the camera





Construct a scene and then
look at it from a point of
view, eye:
eye, the eyepoint, is the
VRP specified in the world
coordinates
Camera is pointed at a point
at, the at point
These points determine VPN
vpn = eye – at
Viewing, projections
Hofstra University
8
Two Points of View


Hold camera frame fixed, move objects in front
of the camera
glLoadIdentity();
glTranslatef(0,0,-d);
Keep objects stationary and move the camera
away from the objects
glLoadIdentity();
glLookAt(0,0,d,0,0,0,0,1,0);
Viewing, projections
Hofstra University
9
gluLookAt Utility Routine in OpenGL




Defines a viewing transformation matrix M, and M
postmultiplies CTM, i.e. CTM=CTM*M
Eye point: eyex, eyey, and eyez.
At point: atx, aty,and atz.
VUP: upx, upy, and upz
gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz);
Viewing, projections
Hofstra University
10
Viewing Transformations




Given 3D model of a scene/object in 4D
homogeneous coordinates P, with respect to
the world coordinate system
Given camera coordinate system (position,
VRP, and camera frame (u,v,n) )
Viewing transformation M converts coordinates
of objects from world to camera coordinates
How?
Viewing, projections
Hofstra University
11
Viewing Transformations



Let W=(O,ex,ey,ez) be the world coord. system
Let V=(VRP,u,v,n) be the camera coord. System
Let M be the change of frame matrix, mapping V to W,
M = R.T(-VRP), where



T is a translation mapping VRP to O
R is a rotation aligning (u,v,n) with (ex,ey,ez), in 3D affine
coordinates it represented by a matrix with rows u’,v’,n’
Then for a point P with modeling coordinates
w=(xw,yw,zw,1)’ the viewing coordinates are
v =(vx,vy,vz,1)’, where

1

w  (M ) v, v  Mw
Viewing, projections
Hofstra University
12
Custom Utility Routine



You might need to define your own
transformation routine
Flight simulator: Display the world from the
pilot’s point of view
Pilot see the world in terms of roll, pitch,
and heading
Viewing, projections
Hofstra University
13
Custom Utility Routine
The following routine could serve as the viewing
transformation:
void pilotView{GLdouble planex, GLdouble planey,
GLdouble planez, Gldouble roll,
GLdouble pitch, GLdouble heading)
{
glRotated(roll, 0.0, 0.0, 1.0);
glRotated(pitch, 0.0, 1.0, 0.0);
glRotated(heading, 1.0, 0.0, 0.0);
glTranslated(-planex, -planey, -planez);
}
Viewing, projections
Hofstra University
14
Custom Utility Routine





Viewing, projections
Orbiting the camera around
an object that's centered at
the origin
Use polar coordinates.
Let the distance variable
define the radius of the orbit
The azimuth is the angle of
rotation of the camera about
the object in the x-y plane
elevation is the angle of
rotation of the camera in the
y-z plane
Hofstra University
15
Projections


Projecting: mapping from 3D viewing
coordinates to 2D coordinates in projection
plane. In homogeneous coordinates it is a map
from 4D viewing coordinates to 3D.
Projections



Parallel: orthogonal and oblique
Perspective
Canonical views: orthographic and perspective
projections
Viewing, projections
Hofstra University
16
Perspective projection
Projectors intersect at COP
Viewing, projections
Hofstra University
17
Parallel Projections
Projectors parallel.
COP at infinity.
Viewing, projections
Hofstra University
18
Parallel projections: summary






Center of projection is at infinity.
Projectors are parallel.
Parallel lines stay parallel
There is no forshorthening
Distances and angles are transformed
consistently
Used most often in engineering design, CAD
systems. Used for top and side drawings from
which measurements could be made.
Viewing, projections
Hofstra University
19
Orthographic Projection: projectors
orthogonal to projection plane
DOP
same for all points
(direction of projectors)
Viewing, projections
Hofstra University
20
Orthographic Projections
DOP is perpendicular to the view plane
Viewing, projections
Hofstra University
21
Multiview Parallel Projection
Faces are parallel to the projection plane
Viewing, projections
Hofstra University
22
Isometric Projection
Projector makes equal angles with all three principal axes
All three axes are equally foreshortened
Viewing, projections
Hofstra University
23
Mechanical Drawing
isometric
Viewing, projections
Hofstra University
24
Oblique Parallel Projections



Most general parallel views
Projectors make an arbitrary angle with the
projection plane
Angles in planes parallel to the projection plane are
preserved
Viewing, projections
Hofstra University
25
Oblique Projections: projectors are not
orthogonal to image plane
Cavalier
Angle between projectors and projection plane is 45°. Lines orthogonal to the projection plane
Retain their exact length. Perpendicular faces are projected at full scale
Cabinet
Angle between projectors and projection plane is arctan(2)=63.4°. Lines orthogonal to the
projection plane are projected at half length. Perpendicular faces are projected at 50% scale.
Looks like forshorthening.
Viewing, projections
Hofstra University
26
Perspective Projection









Most natural for people
In human vision, perspective projection of the world is
created on the retina (back of the eye)
Used in CG for creating realistic images
Perspective projection images carry depth cues
Foreshorthening causes distant objects to appear smaller
Relative lengths and angles are not preserved
A perspective image cannot be used for metric
measurements of the 3D world
Parallel lines not parallel to the image plane converge at a
vanishing point
An axis (principal) vanishing point is a point of convergence
for lines parallel to a principal axis of the object. We
distinguish one-, two-, three-point projections.)
Viewing, projections
Hofstra University
27
Vanishing Points
Viewing, projections
Hofstra University
28
Vanishing Points
Viewing, projections
Hofstra University
29
Early Perspective
Giotto
Not systematic—parallel lines do not converge to a single "vanishing" point
Viewing, projections
Hofstra University
30
Math of Projections:Overview






Math of perspective projection, standard
configuration
OpenGL perspective projections
Math of orthographic projection
OpenGL orthographic projections
Viewport transformations and setting them in
OpenGL
Summary




Viewing transformations
Orthographic projection canonical viewing volume
Perspective projection canonical viewing volume
Hidden surface removal
Viewing, projections
Hofstra University
31
Perspective Viewing
Viewing, projections
Hofstra University
32
Perspective Projections
-z
-z
Viewing direction orthogonal
To projection plane
Viewing, projections
Genaral perspective:
Viewing direction is
not orthogonal to
projection plane
Hofstra University
33
Perspective Projections

The graphics system applies a 4 x 4
projection matrix after the model-view matrix
Viewing, projections
Hofstra University
34
Math of perspective projection



The discussion here is carried out with respect
to the camera (view) reference frame,
(VRP,u,v,n)
The projection transformation maps 3D points
to 2D points in the projection plane
Standard configuration:


COP=VRP
Projection plane is orthogonal to z-axis, at z=d
Viewing, projections
Hofstra University
35
Math of perspective projection

Standard configuration:




Let O be COP
Projection plane has equation z=d, d <0
3D point P has homogeneous coordinates (x,y,z,1)
It is mapped to point Q (xp,yp,d) in the projection
plane





Q is on the segment PO, thus
Q=cP+(1-c)O, where 0<c<1
Thus, xp = c.x, yp = c.y, d = c.z  c = d/z
Thus, xp = (d/z).x, yp = (d/z).y , in affine coordinates
Note that projection is not linear in affine coordates.
Viewing, projections
Hofstra University
36
Math of perspective projection



P=p(x,y,z,1)  Q=q(d.x/z, d.y/z, d, 1), in homogeneous
coordinates.
Perspective projection is not linear in affine coord.
Perspective projection is linear in homogeneous
1
0
M per  
0

0


0 0
1 0
0 1
0 1/ d
0
1
0
0
q  M per p  
0
0


0
0
0 0
1 0
0 1
0 1/ d
0  x   x 
0  y   y 

0  z   z 
  

0  1   z / d 
From homogeneous to affine coordinates:
(a,b,c,w)  (a/w, b/w,c/w)
Thus (x,y,z,d/z) in homogeneous becomes
(x/(z/d), y/(z/d),d,1) ==> (d.x/z, d.y/z,1) in proj. plane
Viewing, projections
Hofstra University
37
Clipping






Object parts outside of the of the view volume are
clipped
First we will discuss the openGL functions that set up
the projection transformations
Next we will discuss the viewport transformation and
setting the viewport in OpenGL
Last, we will go back to projection, and see how the
graphics systems carry out efficiently the more general
perspective projection by reducing it to the standard
perspective, and then to the canonical orthographic
You can set up any projection you want (parallel or
perspective) by setting up the the projection matrix
directly
Although, more often we use affine transformations to
reduce more general projections to the canonical ones
Viewing, projections
Hofstra University
38
Perspective Viewing in OpenGL
Depth of projection plane (size of clipping window)
inside the pyramid does not matter.
All that matters is object size relative to the window.
The projection plane depth does not affect relative
size.
Thus in CG systems usually far or near plane is selected
to be the projection plane. Near in openGL.
Viewing, projections
Hofstra University
39
Projections in OpenGL
frustum
only fixed point
Objects not in the view volume are clipped.
View (projection) plane is front clipping plane.
Viewing, projections
Hofstra University
40
OpenGL Perspective
glFrustum(left, right, bottom, top, near, far);
glMatrixMode(GL_PROJECTION);
glLoadIdentity( );
glFrustum(left, right, bottom, top, near, far);
The relationship between front(near) plane and
COP(origin) define the steepness of the frustum
Viewing, projections
Hofstra University
41
OpenGL Perspective
gluPerspective(fovy, aspect, near, far);
fov is the angle between the top and bottom planes
Viewing, projections
Hofstra University
42
OpenGL Orthographic Projection
glOrtho(left, right, bottom, top, near, far);
Viewing, projections
Hofstra University
43
Standard Orthographic Projection
 xp 
1 0
 

 y p   0 1
 zp 
0 0
 

 1 
0 0
Viewing, projections
Hofstra University
0
0
0
0
0

0
0

1
 x
 
 y
z
 
 1 
44
Viewport Transformation



viewport transformation corresponds to the stage
where the size of the developed photograph is
chosen
The viewport is measured in pixels, in screen
window coordinates, which reflect the position of
pixels on the screen relative to the lower left corner
of the window
vertices outside the viewing volume have been
clipped
Viewing, projections
Hofstra University
45
Viewport Transformation
viewport is the rectangular region of
the window where the image is drawn

Viewing, projections
Hofstra University
46
Defining the Viewport



The window manager, not OpenGL, is
responsible for opening a window on the
screen
By default the viewport is set to the entire
pixel rectangle of the window that's opened
Use the glViewport() command to choose a
smaller drawing region
void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
lower left corner
Viewing, projections
Hofstra University
size of viewport rectangle
47
Defining The Viewport

By default, the initial viewport values are




(0, 0, winWidth, winHeight),
where winWidth and winHeight are the size of the window.
The aspect ratio of a viewport should generally equal
the aspect ratio of the viewing volume
If the two ratios are different, the projected image
will be distorted as it's mapped to the viewport
Viewing, projections
Hofstra University
48
Viewport Distortion
Viewing, projections
Hofstra University
49
Summary

World to View coordiantes


Camera position: VRP
Viewing transformation



Translate VRP to origin: T(-VRP)
Rotate, aligning view frame (u,v,n) with world frame
The composite transformation R.T will have the effect of
transforming the coordinates of vertices from world to
view coordinates
Viewing, projections
Hofstra University
50
Summary

Canonical view orthographic projection





VRP at the origin
Looking in negative z direction (COP does not
matter)
View-up vector is (0,1,0)
View volume is a cube of side 2 center at origin,
(left, right, bottom, top, near, far)=(-1,1,-1,1,1,-1)
(1,1,-1)
Viewing, projections
(-1,-1,1)
Hofstra University
51
Summary

Perspective projection standard viewing








VRP at origin
Looking in negative z-direction, look at is (0,0,-1)
COP coincides with VRP, viewing direction is orthogonal to
view plane
View-up vector is (0,1,0)
View volume is a regular frustum
(left, right, top, bottom, near, far)=(-1,1,-1,1,1,z_far),
The near plane is at –1, the far is at -z.
Side clipping planes make 45 deg angles with z axis
Viewing, projections
Hofstra University
52
Canonical Viewing for Perspective
Viewing, projections
Hofstra University
53
Hidden Surface Removal


z-buffer algorithm – as the polygons are
rasterized we keep track of the distance from
the VRP to the closest point on each
projector. We display only the closest point
Requires a depth or z buffer to store the
necessary depth information
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glEnable(GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
Viewing, projections
Hofstra University
54
Hidden Surface Removal
•Display only visible surfaces (remove hidden)
•Painter’s algorithm: sort polygons according to z, project in
order of decreasing depth
•Pixel based: back track rays from pixels to first intersection
•Z-buffer
algorithm:
based on Hofstra
relative
depth after projection
Viewing,
projections
University
55
Perspective Normalization

How can we apply general perspective projection?



Derive the perspective projection matrix (general 4x4
matrix), load that as a PROJECTION matrix
Trick: Using series of affine transformations to alter the
world, so that the image of the distorted world under
standard (canonical) projection is the same as the image of
the undistorted world under the original general projection
Graphics systems go even farther: perspective projections
are implemented internally as orthographic projections (of
the distorted world) with respect to the canonical view
volume (2x2x2 cube). This way the clipping is very efficient,
and z-buffer algorithm is supported by preserving relative
depth in the process of transforming objects.
Viewing, projections
Hofstra University
56
Projection Normalization Idea
Viewing, projections
Hofstra University
57
Projection Normalization


The distortion is described by a homogeneouscoordinate matrix
Concatenate this matrix with an orthogonalprojection matrix to yield a resulting projection
matrix
Viewing, projections
Hofstra University
58
General Perspective Projection


Projection converts points in 3-D space to
points on the projection plane
Three steps (the graphics system implements
them):



Converts the viewing volume (general frustum) to
the canonical perspective view volume
Next converts the canonical perspective view
volume to the canonical orthographic view volume
Applys orthographic projection matrix
Viewing, projections
Hofstra University
59
The “most” canonical view volume




Orthographic projection with respect to most
canonical view volume
Canonical view volume is a 2x2x2 cube whose center
is at the origin (default view volume)
How to clip?: simple
How to project?: no division
(1,1,-1)
(-1,-1,1)
Viewing, projections
Hofstra University
60
General Orthogonal Projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity( );
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
determine which objects are clipped out
Projection Matrix maps a view volume to the canonical view volume
Viewing, projections
Hofstra University
61
Projection Matrix

2

 xmax  xmin

0
P  S T 


0


0

Viewing, projections
0
0
2
ymax  ymin
0
0
0
2
z max  z min
0
Hofstra University
xmax  xmin 


xmax  xmin 
ymax  ymin 

ymax  ymin 

z max  z min 

z max  z min 

1

62
Oblique Projection
degree of obliqueness
Viewing, projections
Hofstra University
63
Oblique Projection
shearing
Viewing, projections
Hofstra University
64
Perspective Projection Matrices


Look for a transformation allows a simple
canonical projection by distorting the vertices
of an object
Three steps: 1) select canonical viewing
volume, 2) introduce the perspective
normalization transformation and 3) derive the
perspective projection matrix
Viewing, projections
Hofstra University
65
Perspective Projection Matrices
Viewing, projections
Hofstra University
66
Perspective Projection Matrices
N
N is called the perspective normalization matrix. It
converts a perspective projection to an orthogonal
projection

Viewing, projections
Hofstra University
67
Projection and Shadows



Shadows are not geometric objects but
important for realism
A point is in a shadow if it is not illuminated by
any light source
A shadow polygon is a flat shadow that results
from projecting the original polygon onto a
surface
Viewing, projections
Hofstra University
68
Projection and Shadows
use a modelview matrix
Viewing, projections
Hofstra University
69