220 likes | 372 Vues
This document outlines key concepts in computer graphics, specifically focusing on clipping techniques and perspective projection as taught in David Luebke's course at the University of Virginia. It covers the Sutherland-Hodgman algorithm for polygon clipping, point-to-plane tests, and various strategies for handling clipping before and after perspective transformations. The material emphasizes the importance of optimizing computational efficiency in rendering and discusses various methods to approach clipping in 3D graphics.
E N D
ClippingRasterization CS 445/645Introduction to Computer Graphics David Luebke, Spring 2003
Admin • Homework 1 • Not quite graded yet (by Wed or Fri latest—sorry!) • Peer evaluations • All very positive so far • Remember that honor code applies: be frank, honest, unbiased, don’t casually give either bad or good evaluations • Homework 2 • Out today David Luebke 26/7/2014
Recap:Sutherland-Hodgman Clipping • Sutherland-Hodgman basic routine: • Go around polygon one vertex at a time • Current vertex has position p • Previous vertex had position s, and it has been added to the output if appropriate David Luebke 36/7/2014
inside outside inside outside inside outside inside outside p s p s p s p s p output i output no output i outputp output Recap:Sutherland-Hodgman Clipping • Edge from s to ptakes one of four cases: (Purple line can be a line or a plane) David Luebke 46/7/2014
q n p P Recap:Point-to-Plane test • A very general test to determine if a point p is “inside” a plane P, defined by q and n: (p - q) • n < 0: p inside P (p - q) • n = 0: p on P (p - q) • n > 0: p outside P q q n n p p P P David Luebke 56/7/2014
Recap:Point-to-Plane Test • Dot product is relatively expensive • 3 multiplies • 5 additions • 1 comparison (to 0, in this case) • Can often optimize or special-case this David Luebke 66/7/2014
Recap:Line-Plane Intersections • Use parametric definition of edge: E(t) = s + t(p - s) • If t = 0 then E(t) = s • If t = 1 then E(t) = p • Otherwise, E(t) is part way from s to p • Edge intersects plane P where E(t) is on P • q is a point on P • n is normal to P (E(t) - q) • n = 0 t = [(q - s) • n] / [(p - s) • n] • The intersection point i = E(t)for this value of t David Luebke 76/7/2014
Recap: Perspective Projection • Recall the matrix: • Or, in 3-D coordinates: David Luebke 86/7/2014
Clipping Under Perspective • Problem: after multiplying by a perspective matrix and performing the homogeneous divide, a point at (-8, -2, -10) looks the same as a point at (8, 2, 10). • Solution A: clip before multiplying the point by the projection matrix • I.e., clip in camera coordinates • Solution B: clip after the projection matrix but before the homogeneous divide • I.e., clip in homogeneous screen coordinates David Luebke 96/7/2014
Clipping Under Perspective • We will talk first about solution A: Clippedworldcoordinates Canonicalscreencoordinates Clip againstview volume Apply projectionmatrix andhomogeneousdivide Transform intoviewport for2-D display 3-D world coordinateprimitives 2-D devicecoordinates David Luebke 106/7/2014
Recap: Perspective Projection • The typical view volume is a frustumor truncated pyramid x or y z David Luebke 116/7/2014
Perspective Projection • The viewing frustum consists of six planes • The Sutherland-Hodgeman algorithm (clipping polygons to a region one plane at a time) generalizes to 3-D • Clip polygons against six planes of view frustum • So what’s the problem? David Luebke 126/7/2014
Perspective Projection • The viewing frustum consists of six planes • The Sutherland-Cohen algorithm (clipping polygons to a region one plane at a time) generalizes to 3-D • Clip polygons against six planes of view frustum • So what’s the problem? • The problem: clipping a line segment to an arbitrary plane is relatively expensive • Dot products and such David Luebke 136/7/2014
Back or yon plane Front or hither plane Perspective Projection • In fact, for simplicity we prefer to use the canonical view frustum: x or y 1 z -1 Why is this going to besimpler? -1 David Luebke 146/7/2014
Back or yon plane Front or hither plane Perspective Projection • In fact, for simplicity we prefer to use the canonical view frustum: x or y 1 z -1 Why is the yon planeat z = -1, not z = 1? -1 David Luebke 156/7/2014
Clipping Under Perspective • So we have to refine our pipeline model: • Note that this model forces us to separate projection from modeling & viewing transforms Applynormalizingtransformation projectionmatrix;homogeneousdivide Transform intoviewport for2-D display Clip against canonical view volume 3-D world coordinateprimitives 2-D devicecoordinates David Luebke 166/7/2014
Apply projectionmatrix Clipagainst view volume Homogeneousdivide Transform intoviewport for2-D display 3-D world coordinateprimitives 2-D devicecoordinates Clipping Homogeneous Coords • Another option is to clip the homogeneous coordinates directly. • This allows us to clip after perspective projection: • What are the advantages? David Luebke 176/7/2014
Clipping Homogeneous Coords • Other advantages: • Can transform the canonical view volume for perspective projections to the canonical view volume for parallel projections • Clip in the latter (only works in homogeneous coords) • Allows an optimized (hardware) implementation • Some primitives will have w 1 • For example, polygons that result from tesselating splines • Without clipping in homogeneous coords, must perform divide twice on such primitives David Luebke 186/7/2014
Clipping Homogeneous Coords • So how do we clip homogeneous coordinates? • Briefly, thus: • Remember that we have applied a transform to normalized device coordinates • x, y [-1, 1] • z [0, 1] • When clipping to (say) right side of the screen (x = 1), instead clip to (x = w) • Can find details in book or on web • Assignment 2: little bit of extra credit for clipping in homogeneous coords David Luebke 196/7/2014
Clipping: The Real World • In some renderers, a common shortcut used to be: • But in today’s hardware, everybody just clips in homogeneous coordinates Projectionmatrix;homogeneousdivide Clip in 2-D screen coordinates Clip against hither andyon planes Transform intoscreen coordinates David Luebke 206/7/2014
Next Topic: Drawing Lines
Line Algorithms • Drawing 2-D lines: a case study in optimization • “One good thief is worth ten good scholars” • Sometimes somebody does something so well there is no point in doing it over • We will use Professor Leonard McMillan’s web-based lecture notes (then at MIT, now at UNC) • http://graphics.lcs.mit.edu/classes/6.837/F98/Lecture5 • His examples are in Java, but the correspondences are obvious. • Raster: his implementation of a framebuffer class David Luebke 226/7/2014