![Page 1: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/1.jpg)
Three-Dimensional Viewing
Jehee Lee
Seoul National University
![Page 2: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/2.jpg)
Viewing Pipeline
![Page 3: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/3.jpg)
Virtual Camera Model
• Viewing Transformation– The camera position and orientation is determined
• Projection Transformation– The selected view of a 3D scene is projected onto a
view plane
![Page 4: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/4.jpg)
General 3D Viewing Pipeline
• Modeling coordinates (MC)• World coordinates (WC)• Viewing coordinates (VC)• Projection coordinates (PC)• Normalized coordinates (NC)• Device coordinates (DC)
![Page 5: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/5.jpg)
Viewing-Coordinate Parameters
• View point (eye point or viewing position)
• View-plane normal vector N
),,( 0000 zyxP
![Page 6: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/6.jpg)
Viewing-Coordinate Parameters
• Look-at point Pref
• View-up vector V– N and V are specified in the world coordinates
refPPN 0
![Page 7: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/7.jpg)
Viewing-Coordinate Reference Frame
• The camera orientation is determined by the uvn reference frame
),,(
),,(
),,(
zyx
zyx
zyx
vvv
uuu
nnn
unv
V
nVu
N
Nn
u
nv
![Page 8: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/8.jpg)
World-to-Viewing Transformation
• Transformation from world to viewing coordinates– Translate the viewing-coordinate origin to the world-
coordinate origin– Apply rotations to align the u, v, n axes with the world
xw, yw, zw axes, respectively
u
nv
![Page 9: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/9.jpg)
World-to-Viewing Transformation
1000
100
010
001
1000
0
0
0
0
0
0
z
y
x
nnn
vvv
uuu
zyx
zyx
zyx
TR
10000
0
0
, Pn
Pv
Pu
TRMzyx
zyx
zyx
vcwc nnn
vvv
uuu
![Page 10: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/10.jpg)
Perspective Projection
• Pin-hold camera model– Put the optical center (Center Of Projection) at the origin– Put the image plane (Projection Plane) in front of the COP– The camera looks down the negative z axis
• we need this if we want right-handed-coordinates
![Page 11: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/11.jpg)
Perspective Projection
• Projection equations– Compute intersection with PP of ray from (x,y,z) to COP– Derived using similar triangles (on board)
– We get the projection by throwing out the last coordinate:
![Page 12: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/12.jpg)
Homogeneous coordinates
• Is this a linear transformation?
![Page 13: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/13.jpg)
Homogeneous coordinates
• Trick: add one more coordinate:
• Converting from homogeneous coordinates
homogeneous projection coordinates
homogeneous viewing coordinates
![Page 14: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/14.jpg)
Perspective Projection• Projection is a matrix multiply using homogeneous coordinates:
divide by third coordinate
• This is known as perspective projection– The matrix is the projection matrix– Can also formulate as a 4x4
divide by fourth coordinate
![Page 15: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/15.jpg)
Perspective Projection
• The projection matrix can be much involved, if the COP is different from the origin of the uvn coordinates– See the textbook for the detailed matrix
![Page 16: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/16.jpg)
Traditional Classification of Projections
• Three principle axes of the object is assumed– The front, top, and side face of the scene is apparent
![Page 17: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/17.jpg)
Traditional Classification of Projections
![Page 18: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/18.jpg)
Perspective-Projection View Volume
• Viewing frustum– Why do we need near and far clipping plane ?
![Page 19: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/19.jpg)
Normalizing Transformation
• Transform an arbitrary perspective-projection view volume into the canonical view volume
• Step 1: from frustum to parallelepiped
![Page 20: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/20.jpg)
Normalizing Transformation
• Transform an arbitrary perspective-projection view volume into the canonical view volume
• Step 2: from parallelepiped to normalized
![Page 21: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/21.jpg)
Parallel Projection
• Special case of perspective projection– Distance from the COP to the PP is infinite
– Also called “parallel projection”
– What’s the projection matrix?
Image World
Slide by Steve Seitz
![Page 22: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/22.jpg)
Taxonomy of Geometric Projections
geometric projections
parallel perspective
orthographic axonometric oblique
trimetric
dimetric
isometric
cavalier cabinet
single-point two-point three-point
![Page 23: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/23.jpg)
Orthographic Transformation
• Preserves relative dimension• The center of projection at infinity• The direction of projection is parallel to a principle axis• Architectural and engineering drawings
![Page 24: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/24.jpg)
Axonometric Transformation
• Orthogonal projection that displays more than one face of an object– Projection plane is not normal to a principal axis, but
DOP is perpendicular to the projection plane– Isometric, dimetric, trimetric
![Page 25: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/25.jpg)
Oblique Parallel Projections
• Projection plane is not normal to a principal axis, but DOP is perpendicular to the projection plane
• Only faces of the object parallel to the projection plane are shown true size and shape
![Page 26: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/26.jpg)
Oblique Parallel Projections
www.maptopia.com
![Page 27: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/27.jpg)
Oblique Parallel Projections
![Page 28: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/28.jpg)
Oblique Parallel Projections
• Typically, is either 30˚ or 45˚• L1 is the length of the projected side edge
– Cavalier projections• L1 is the same as the original length
– Cabinet projections• L1 is the half of the original length
![Page 29: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/29.jpg)
Oblique Parallel Projections
• Cavalier projections
• Cabinet projections
![Page 30: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/30.jpg)
OpenGL 3D Viewing Functions
• Viewing-transformation function– glMatrixMode(GL_MODELVIEW);– gluLookAt(x0,y0,z0,xref,yref,zref,vx,vy,vz);– Default: gluLookAt(0,0,0, 0,0,-1, 0,1,0);
• OpenGL orthogonal-projection function– glMatrixMode(GL_PROJECTION);– gluOrtho(xwmin,xwmax, ywmin,ywmax, dnear,dfar);– Default: gluOrtho(-1,1, -1,1, -1,1);– Note that
• dnear and dfar must be assigned positive values• znear=-dnear and zfar=-dfar• The near clipping plane is the view plane
![Page 31: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/31.jpg)
OpenGL 3D Viewing Functions
• OpenGL perspective-projection function– The projection reference point is the viewing-coordinate origin– The near clipping plane is the view plane– Symmetric: gluPerspective(theta,aspect,dnear,dfar)– General: glFrustum(xwmin,xwmax,ywmin,ywmax,dnear,dfar)
![Page 32: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/32.jpg)
Line Clipping
• Basic calculations:– Is an endpoint inside or outside the clipping window?– Find the point of intersection, if any, between a line
segment and an edge of the clipping window.
Both endpoints inside:
trivial accept
One inside: find
intersection and clip
Both outside: either
clip or reject
![Page 33: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/33.jpg)
Cohen-Sutherland Line Clipping
• One of the earliest algorithms for fast line clipping• Identify trivial accepts and rejects by bit operations
< Region code for each endpoint >
above below right leftBit 4 3 2 1
0000
10001001
0001
0101 0100 0110
0010
1010Clipping window
![Page 34: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/34.jpg)
Cohen-Sutherland Line Clipping
• Compute region codes for two endpoints• If (both codes = 0000 ) trivially accepted• If (bitwise AND of both codes 0000) trivially rejected• Otherwise, divide line into two segments
– test intersection edges in a fixed order.
(e.g., top-to-bottom, right-to-left)
0000
10001001
0001
0101 0100 0110
0010
1010Clipping window
![Page 35: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/35.jpg)
3D Clipping Algorithms
• Three-dimensional region coding
![Page 36: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/36.jpg)
Cyrus-Beck Line Clipping
• Use a parametric line equation
• Reduce the number of calculating intersections by exploiting the parametric form
• Notations– Ei : edge of the clipping window
– Ni : outward normal of Ei
– An arbitrary point PEi on edge Ei
10 ),()( 010 tPPtPtP
![Page 37: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/37.jpg)
Cyrus-Beck Line Clipping
halfplane outside in thepoint a0))((
edge thecontaining line on thepoint a0))((
halfplane inside in thepoint a0))((
i
i
i
Ei
Ei
Ei
PtPN
PtPN
PtPN
![Page 38: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/38.jpg)
Cyrus-Beck Line Clipping
• Solve for the value of t at the intersection of P0P1 with the edge– Ni · [P(t) - PEi] = 0 and P(t) = P0 + t(P1 - P0)
– letting D = (P1 - P0),
– Where
• Ni 0
• D 0 (that is, P0 P1)
• Ni · D 0 (if not, no intersection)
DN
PPNt
i
Eii
][ 0
![Page 39: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/39.jpg)
Cyrus-Beck Line Clipping• Given a line segment P0P1, find intersection
points against four edges– Discard an intersection point if t [0,1] – Label each intersection point either PE (potentially
entering) or PL (potentially leaving)– Choose the smallest (PE, PL) pair that defines the
clipped line
PL0
PE0
10
10
PPN
PPN
i
i
![Page 40: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/40.jpg)
3D Clipping Algorithms
• Parametric line clipping
10 ),()( 010 tPPtPtP
1N
2N 3N
halfplane outside0))((
face on the0))((
halfplane inside0))((
i
i
i
Fi
Fi
Fi
PtPN
PtPN
PtPN
![Page 41: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/41.jpg)
Polygon Fill-Area Clipping
• Polyline vs polygon fill-area
• Early rejection is useful
Clipping Window
Bounding box of polygon fill area
![Page 42: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/42.jpg)
Sutherland-Hodgman Polygon Clipping
• Clip against 4 infinite clip edges in succession
![Page 43: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/43.jpg)
Sutherland-Hodgman Polygon Clipping
• Accept a series of vertices (polygon) and outputs another series of vertices
• Four possible outputs
![Page 44: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/44.jpg)
Sutherland-Hodgman Polygon Clipping
• The algorithm correctly clips convex polygons, but may display extraneous lines for concave polygons
![Page 45: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/45.jpg)
Weiler-Atherton Polygon Clipping
• For an outside-to-inside pair of vertices, follow the polygon boundary
• For an inside-to-outside pair of vertices, follow the window boundary in a clockwise direction
![Page 46: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/46.jpg)
Weiler-Atherton Polygon Clipping
• Polygon clipping using nonrectangular polygon clip windows
![Page 47: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/47.jpg)
3D Clipping Algorithms
• Three-dimensional polygon clipping– Bounding box or sphere test for early rejection– Sutherland-Hodgman and Weiler-Atherton algorithms
can be generalized
![Page 48: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/48.jpg)
Programming Assignment #2 (3D Viewer)
• You are required to implement a 3D OpenGL scene viewer• The viewer should use a virtual trackball to rotate the view
– The point of rotation is by default the center of the world coordinate system, but can be placed anywhere in the scene
• The viewer should allow you to translate in the screen plane as well as dolly in and out (forward/backward movement)
• Your are required to submit a report of at most 3 pages– Describe how to use your program– Describe what you implemented, and what you haven’t
![Page 49: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/49.jpg)
Programming Assignment #2 (3D Viewer)
• Virtual trackball– A trackball translates 2D mouse movements into 3D rotations– This is done by projecting the position of the mouse on to an
imaginary sphere behind the viewport– As the mouse is moved the camera (or scene) is rotated to keep the
same point on the sphere underneath the mouse pointer
![Page 50: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/50.jpg)
Programming Assignment #2 (3D Viewer)
• Virtual trackball
![Page 51: Three-Dimensional Viewing Jehee Lee Seoul National University](https://reader030.vdocuments.site/reader030/viewer/2022020417/56649f285503460f94c408b6/html5/thumbnails/51.jpg)
Programming Assignment #2 (3D Viewer)
• (Extra credits)– Show all: Decide the camera position and orientation
such that the entire scene is viewed in a single screen– Zoom in/out: Adjust the field of view– Seek: Pick a 3D point in the scene by the mouse pointer
and place the center of rotation at that point.