Title: UBI 516 Advanced Computer Graphics Three Dimensional Viewing
1UBI 516 Advanced Computer GraphicsThree
Dimensional Viewing
- Aydin Öztürk
- ozturk_at_ube.ege.edu.tr
- http//www.ube.ege.edu.tr/ozturk
2Overview
- Viewing a 3D scene
- Projections
- Parallel and perspective
3Overview
- Depth cueing and hidden surfaces
- Identifying visible lines and surfaces
4Overview
5Overview
- Exploded and cutaway views
6Overview
- 3D and stereoscopic viewing
73D Viewing Pipeline
MC
DC
ViewportTransformation
ModelingTransformation
NC
WC
Normalization Transformation and Clipping
ViewingTransformation
VC
PC
ProjectionnTransformation
8Viewing Coordinates
- Generating a view of an object in 3D is similar
to photographing the object. - Whatever appears in the viewfinder is projected
onto the flat film surface. - Depending on the position, orientation and
aperture size of the camera corresponding views
of the scene is obtained.
9Specifying The View Coordinates
- For a particular view of a scene first we
establish viewing-coordinate system. - A view-plane (or projection plane) is set up
perpendicular to the viewing z-axis. - World coordinates are transformed to viewing
coordinates, then viewing coordinates are
projected onto the view plane.
10Specifying The View Coordinates
- To establish the viewing reference frame, we
first pick a world coordinate position called the
view reference point. - This point is the origin of our viewing
coordinate system. If we choose a point on an
object we can think of this point as the position
where we aim a camera to take a picture of the
object.
11Specifying The View Coordinates
- Next, we select the positive direction for the
viewing z-axis, and the orientation of the view
plane, by specifying the view-plane normal
vector, N. - We choose a world coordinate position P and this
point establishes the direction for N. - OpenGL establishes the direction for N using the
point P as a look at point relative to the
viewing coordinate origin.
yv
xv
xv
yw
zv
N
P0
P
xw
zw
12Specifying The View Coordinates
- Finally, we choose the up direction for the view
by specifying view-up vector V. - This vector is used to establish the positive
direction for the yv axis. - The vector V is perpendicular to N.
- Using N and V, we can compute a third vector U,
perpendicular to both N and V, to define the
direction for the xv axis.
yv
xv
V
yw
zv
N
P0
P
xw
zw
13Specifying The View Coordinates
V
- To obtain a series of views of a scene , we can
keep the the view reference point fixed and
change the direcion of N. This corresponds to
generating views as we move around the viewing
coordinate origin.
P0
N
N
14Transformation From World To Viewing Coordinates
- Conversion of object descriptions from world to
viewing coordinates is equivalent to
transformation that superimpoes the viewing
reference frame onto the world frame using the
translation and rotation.
yw
xw
zw
15Transformation From World To Viewing Coordinates
- First, we translate the view reference point to
the origin of the world coordinate system
yw
xw
zw
16Transformation From World To Viewing Coordinates
- Second, we apply rotations to align the xv,, yv
and zv axes with the world xw, yw and zw axes,
respectively.
yw
xw
xv
zw
17Transformation From World To Viewing Coordinates
- If the view reference point is specified at word
position (x0, y0, z0), this point is translated
to the world origin with the translation matrix T.
18Transformation From World To Viewing Coordinates
- The rotation sequence requires 3 coordinate-axis
transformation depending on the direction of N. - First we rotate around xw-axis to bring zv into
the xw -zw plane.
19Transformation From World To Viewing Coordinates
- Then, we rotate around the world yw axis to align
the zw and zv axes.
20Transformation From World To Viewing Coordinates
- The final rotation is about the world zw axis to
align the yw and yv axes.
21Transformation From World To Viewing Coordinates
- The complete transformation from world to viewing
coordinate transformation matrix is obtaine as
the matrix product
22Transformation From World To Viewing Coordinates
- Another method for generating the
rotation-transformation matrix is to calculate
uvn vectors and obtain the composite rotation
matrix directly. Given the vectors and
, these unit vectors are calculated as
23Transformation From World To Viewing Coordinates
- This method also automatically adjusts the
direction for so that is
perpendicular to . The rotation matrix for
the viewing transformation is then
24Transformation From World To Viewing Coordinates
- The matrix for translating the viewing origin to
the world origin is
25Transformation From World To Viewing Coordinates
- The composite matrix for the viewing
transformation is then
26Transformation From World To Viewing Coordinates
An Example For 2d System
y
2
P(5,5)
y'
x'
2
0 2 4 6
T300
P0(4,3)
0 2 4 6
x
27Transformation From World To Viewing Coordinates
An Example For 2d System
y
0 2 4 6
P
2
x'
2
y'
T300
2 4 6
x
P0
28Transformation From World To Viewing Coordinates
An Example For 2d System
0 2 4 6
29Transformation From World To Viewing Coordinates
An Example For 2d System
30Transformation From World To Viewing Coordinates
An Example For 2d System
y
0 1 2 3
P
1
x'
y'
1
n
v
T300
x
1 2 3
P0
31Projections
- Once WC description of the objects in a scene are
converted to VC we can project the 3D objects
onto 2D view-plane. - Two types of projections
- -Parallel Projection
- -Perspective Projection
32Classical Viewings
- Hand drawings Determined by a specific
relationship between the object and the viewer.
33Parallel Projections
- Coordinate Positions are transformed to the view
plane along parallel lines.
View Plane
P2
P'2
P1
P'1
34Parallel Projections
- Orthographic parallel projection The
projection is perpendicular to the view plane. - Oblique parallel projecion The
parallel projection is not perpendicular to the
view plane.
35 Orthographic Parallel Projection
- The orthographic transformation
36 Orthographic Parallel Projection
37 Oblique Parallel Projection
- The projectors are still ortogonal to the
projection plane - But the projection plane can have any orientation
with respect to the object. - It is used extensively in architectural and
mechanical design.
38Oblique Parallel Projection
- Preserve parallel lines but not angles
- Isometric view Projection plane is placed
symmetrically with respect to the three principal
faces that meet at a corner of object. - Dimetric view Symmetric with two faces.
- Trimetric view General case.
39 Oblique Parallel Projection
- Preserve parallel lines but not angles
- Isometric view Projection plane is placed
symmetrically with respect to the three principal
faces that meet at a corner of object. - Dimetric view Symmetric with two faces.
- Trimetric view General case.
40Oblique Parallel Projection
yv
(xp, yp)
a
(x, y, z)
L
f
xv
(x, y)
zv
41Oblique Parallel Projection
- The oblique transformation
42Oblique Parallel Projection
43Perspective Projections
- First discovered by Donatello, Brunelleschi, and
DaVinci during Renaissance - Objects closer to viewer look larger
- Parallel lines appear to converge to single point
44Perspective Projections
- In perspective projection object positions are
transformed to the view plane along lines that
converge to a point called the projection
reference point (or center of projection)
45Perspective Projections
- In the real world, objects exhibit perspective
foreshortening distant objects appear smaller - The basic situation
46Perspective Projections
- When we do 3-D graphics, we think of the screen
as a 2-D window onto the 3-D world
47Perspective Projections
- The geometry of the situation is that of similar
triangles. View from above
View plane
(xp, yp)
d
48Perspective Projections
- Desired result for a point x, y, z, 1T
projected onto the view plane
49Perspective Projections
50Perspective Projections
51Projection Matrix
- We talked about geometric transforms, focusing on
modeling transforms - Ex translation, rotation, scale, gluLookAt()
- These are encapsulated in the OpenGL modelview
matrix - Can also express projection as a matrix
- These are encapsulated in the OpenGL projection
matrix
52View Volumes
- When a camera used to take a picture, the type of
lens used determines how much of the scene is
caught on the film. - In 3D viewing, a rectangular view window in the
view plane is used to the same effect. Edges of
the view window are parallel to the xv-yv axes
and window boundary positions are specified in
viewing coordinates.
53View Volumes
View volume
View volume (frustum)
zv
window
Back Plane
window
Front Plane
Back Plane
Projection Reference Point
Front Plane
Parallel Projection
Parallel Projection
Perspective Projection
54Clipping
- An algorithm for 3D clipping identifies and saves
all surface segments within the view volume for
display. - All parts of object that are outside the view
volume are discarded.
55Clipping Lines
- To clip a line against the view volume, we need
to test the relative position of the line using
the view volumes boundary plane equation. - An end point (x,y,z) of a line segment is outside
a boundary plane if - where A, B, C and D are the plane parameters
for that boundary. -
56Clipping Polygon Surface
- To clip a polygon surface, we can clip the
individual polygon edges. - First we test the coordinate extends against each
boundary of the view volume to determine whether
the object is completely inside or completely
outside of that boundary. - If the object has intersection with the boundary
then we apply intersection calculations.
57Clipping Polygon Surface
- The projection operation can take place before
the view- volume clipping or after clipping. - All objects within the view volume map to the
interior of the specified projection window. - The last step is to transform the window contents
to a 2D view port.
58Clipping Polygon Surface
Viev volume
59Steps For Normalized View Volumes
- A scene is constructed by transforming object
descriptions from modeling coordinates to wc. - The world descriptions are converted to viewing
coordinates. - The viewing coordinates are transformed to
projection coordinates which effectively converts
the view volume into a rectangular
parallelepiped. - The parallelepiped is mapped into the unit cube
called normalized projection coordinate system. - A 3D viewport within the unit cube is
constructed. - Normalized projection coordinates are converted
to device coordinates for display.
60 Normalized View Volumes
y
x
(Xwmax, ywmax, zback)
(Xvmax, yvmax, zvmax)
z
(Xwmin, ywmin, zfront)
Parallelepiped View Volume
(Xvmin, yvmin, zwmin)
Unit Cube
61Orthogonal Projection Normalization
62Oblique Projection Normalization
- Angles of projection
- ? for x axis
- ? for y axis
- Shearing matrix H(?, ?)
?
?
63Oblique Projection Normalization
Finished ? No, this is a sheared view volume, so
we have to apply orthogonal transformation
PPorth STH
64Perspective Projection Normalization
- Perspective Normalization is Trickier
65Perspective Projection Normalization
- Consider N
- After multiplying
- p Np
66Perspective Projection Normalization
- After dividing by w, p -gt p
67Perspective Projection Normalization
68Perspective Projection Normalization
- What about z?
- if z zmax
- if z zmin
- Solve for a and b such that zmin -gt -1 and zmax
-gt1 - Resulting z is nonlinear, but preserves
ordering of points - If z1 lt z2 z1 lt z2
69Perspective Projection Normalization
- We did it. Using matrix, N
- Perspective viewing frustum transformed to cube
- Orthographic rendering of cube produces same
image as perspective rendering of original
frustum
70OpenGL Projection Commands
71OpenGL Look-At Function
- OpenGL utility function
-
- VRP eyePoint (eyex, eyey, eyez)
- VPN ( atPoint eyePoint ) (atx, aty, atz)
(eyex, eyey, eyez) - VUP upPoint eyePoint (upx, upy, upz)
gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx,
upy, upz)
look-at positioning
72Projections in OpenGL
- Angle of view, field of view
- Only objects that fit within the angle of view of
the camera appear in the image - View volume, view frustum
- Be clipped out of scene
- Frustum truncated pyramid
73Projections in OpenGL
74Perspective in OpenGL
- Specification of a frustum
- near, far positive number !!
- ? zmax far
- ? zmin near
glMatrixMode(GL_PROJECTION) glLoadIdentity(
) glFrustum(xmin, xmax, ymin, ymax, near, far)
75Perspective in OpenGL
- 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 / height
glMatrixMode(GL_PROJECTION) glLoadIdentity(
) gluPerspective(fovy, aspect, near, far)
76Parallel Viewing in OpenGL
- Orthographic viewing function
- OpenGL provides only this parallel-viewing
function - near lt far !!
- ? no restriction on the sign
- ? zmax far
- ? zmin near
glMatrixMode(GL_PROJECTION) glLoadIdentity(
) glOrtho(xmin, xmax, ymin, ymax, near, far)
77Optional Clipping Planes
- glClipPlane(id, PlaneParameters)glEnable(id) /
/ id GL_CLIP_PLANE0, GL_CLIP_PLANE1, ... //
PlaneParameters A,B,C and D of the plane. .
.glDisable(id)