Computer Graphics (fall 2009)
description
Transcript of Computer Graphics (fall 2009)
Computer Graphics(fall 2009)
School of Computer ScienceUniversity of Seoul
Chap 5: Viewing
1. Classical and Computer Viewing2. Viewing with a Computer3. Positioning of the Camera4. Simple Projections5. Projections in OpenGL6. Hidden-Surface Removal7. Interactive Mesh Displays8. Parallel-Projection Matrices9. Perspective-Projection Matrices10. Projections and Shadows
5.1 Classical and Computer Viewing
Basic Elements
Object Projector Projection Plane COP (Center of Projection) or DOP (Direc-
tion of Projection) Principal faces/directions
Classical Viewing
1. Orthographic projections2. Axonometric projections
Isometric, dimetric, trimetric
3. Oblique projections4. Perspective projections
One-, two-, three-point perspectives
1. Orthographic Projections
Projectors perpendicular to the projection plane
Multiview orthographic projection
(image courtesy of http://img19.imageshack.us/i/importedpsk.jpg)
2. Axonometric Projections
Projectors orthogonal to the projection plane
Projection plane can have any orientation with respect to the object
Isometric, dimetric, trimetric How many principal faces is the projection
plane is placed symmetrically with respect to
3. Oblique Projections
Most general parallel views Projector can have an arbitrary angle with
the projection plane
4. Perspective Viewing
To achieve real-looking images One-, two-, three-point perspectives
Number of vanishing points How many of three principal directions in the
object are parallel to the projection plane?
5.2 Viewing with a Camera
All the classical viewing can be implemented HOW??? (§5.9 & §5.10)
Default camera Orthographic Projection plane: “z=0” At the origin pointing to –z-direction Up direction: +y-direction Viewing volume: cube with side 2 objects outside of this box cannot be rendered! (“clipping”)
Objects behind the camera can be rendered! (only for or-thogonal projections)
OpenGL Viewing
5.3 Positioning of the Camera
Positioning the Camera
No separate “viewing” transformation con-catenated into model-view matrices
Object coords.world coords.eye coords. What matters is the relative position of ob-
jects and the camera At any given time, the state of the model-view
matrix encapsulates the relationship between the camera frame and the object frame
Positioning the Camera (cont’d)
Separate matrices For model & viewing
Model-view matrix (OpenGL)
glMatrixMode(GL_MODEL);glMultMatrix(Mo);render_object();
glMatrixMode(GL_VIEW);glMultMatrix(Mc);
glMatrixMode(GL_MODELVIEW);glMultMatrix(inv(Mc));glMultMatrix(Mo);render_object();
Viewing-Coordinate System Defined by
Position (VRP: view-reference point, p) Viewing direction (VPN: view-plane normal , n) Up direction (VUP: view-up vector, vup)
Projected on the view plane (v) 3rd orthogonal direction (u) obtained by cross product
View-orientation matrixderivation? (advanced)
x, y, z axes u, v, n gluLookAt
Needs to be called before transforming objects Error in the book (p.251)
Other Viewing APIs
Roll, pitch, yaw To specify the orientation Ex) flight simulation
Elevation, azimuth, twist Direction from the viewer Ex) star in the sky
5.4 Simple Projections
Perspective Projections
All projectors pass through the origin (x,y,z)(xp,yp,zp) Nonlinear, not affine, irreversible Perspective division required “Extended” homogeneous coordinates re-
quired 3D points = 4D lines (through the origin): (x,y,z,1)(x,y,z,z/d)=(xp,yp,zp,1)
How does the matrix look like?
Orthogonal Projections
No division required (x,y,z)(x,y,0)=(xp,yp,zp) How does the matrix look like?
5.5 Projections in OpenGL
Projections in OpenGL
Parameters in eye coordinates Near/far clipping planes
Perspective Viewing in OpenGL
glFrustum Need not be symmetric
gluPerspective Symmetric Defined using fov (field of view) error in the figure 5.28 of the textbook
Calls glFrustum internallynear & far parameters must be positive
(image courtesy of the redbook)
Parallel Viewing in OpenGL
glOrthogluOrtho2D No sign restrictions on near & far param-
eters
5.6 Hidden-Surface Removal
Hidden-Surface Removal How to determine which object is closer than others? What happens without hidden-surface removal? Two classes
Object space algorithm BSP (Binary Space Partitioning) tree restriction?
Image space algorithm Z-buffer algorithm used in (most) interactive graphics system including
OpenGL Complexity proportional to the resolution Small overhead More in Chap 7
Culling Back faces of closed objects not rendered Number of primitives reduced early
5.7 Interactive Mesh Displays
5.8 Parallel-Projection Matri-ces
Projection Normalization
All projections are converted into orthogo-nal projections by first distorting the objects such that the orthogonal projection of the distorted objects is the same as the desired projection of the original objects.
Simplifies clipping & hidden-surface removal(Chap 7)
Orthogonal-Projection Matrices
1. Normalization(by OpenGL projection matrix) Converts the specified viewing volume to canonical
view volume ([-1,1]x[-1,1]x[-1,1] cube) Translation followed by scaling
2. Orthographic projection (x,y,z) (x,y,0)
1000
200
020
002
nearfarnearfar
nearfar
bottomtopbottomtop
bottomtop
rightleftrightleft
rightleft
P
Oblique Projections
We can either Define the 4x4 matrix directly or Implement by shear followed by orthographic
projection (In practice, normalization is re-quired in between)
100000000cot100cot01
P
100001000cot100cot01
1000000000100001
,
HMP ortho
5.9 Perspective-Projection Matrices
Simple Perspective Projection
Frustum defined by x=±z, y=±z, z_max, z_min
For the perspective-normalization matrix N,what converts the planes as follows? x=±z x’’=±1 y=±z y’’=±1 z=z_max z’’=1 z=z_minz’’=-1
010000
00100001
N
minmax
minmax
zzzz
minmax
minmax2zzzz
Perspective Projection
Depth ordering preserved by perspective-projection matrix hidden-surface removal works in the normalized volume
General perspective projection1. Apply shear to convert the asymmetric frus-
tum to a symmetric one2. Scale to the “simple” frustum
5.10 Projections and Shad-ows
Shadows
A point is in shadow if it is not illuminated by any light source, or equivalently if a viewer at that point cannot see any light source.
Shadow polygon
Rendering Shadow
Render twice: object polygon and shadow polygon
How to find the shadow polygon? perspec-tive projection (with light source as the camera)
Works only for shadowson flat surface
More on Chap 12