210 likes | 822 Vues
2D, 3D Clipping. Soon Tee Teoh CS 116A. Line Clipping. Point clipping easy: Just check the inequalities x min < x < x max y min < y < y max Line clipping more tricky. Cohen-Sutherland Line Clipping. Divide 2D space into 3x3 regions. Middle region is the clipping window.
E N D
2D, 3D Clipping Soon Tee Teoh CS 116A
Line Clipping • Point clipping easy: Just check the inequalities • xmin < x < xmax • ymin < y < ymax • Line clipping more tricky
Cohen-Sutherland Line Clipping • Divide 2D space into 3x3 regions. • Middle region is the clipping window. • Each region is assigned a 4-bit code. • Bit 1 is set to 1 if the region is to the left of the clipping window, 0 otherwise. Similarly for bits 2, 3 and 4. 4 3 2 1 Top Bottom Right Left
Cohen-Sutherland Line Clipping 1000 1010 1001 0000 0010 0001 0100 0110 0101
Cohen-Sutherland Line Clipping • To clip a line, find out which regions its two endpoints lie in. • If they are both in region 0000, then it’s completely in. • If the two region numbers both have a 1 in the same bit position, the line is completely out. • Otherwise, we have to do some more calculations.
Cohen-Sutherland Line Clipping • For those lines that we cannot immediately determine, we successively clip against each boundary. • Then check the new endpoint for its region code. • How to find boundary intersection: To find y coordinate at vertical intersection, substitute x value at the boundary into the line equation of the line to be clipped. • Other algorithms: • Faster: Cyrus-Beck • Even faster: Liang-Barsky • Even faster: Nichol-Lee-Nichol
Polygon Fill-Area Clipping v1 v1” v1’ v3’ v3” v3 v2 v2 Note: Need to consider each of 4 edge boundaries
Sutherland-HodgmanPolygon Clipping • Input each edge (vertex pair) successively. • Output is a new list of vertices. • Each edge goes through 4 clippers. • The rule for each edge for each clipper is: • If first input vertex is outside, and second is inside, output the intersection and the second vertex • If first both input vertices are inside, then just output second vertex • If first input vertex is inside, and second is outside, output is the intersection • If both vertices are outside, output is nothing
Sutherland-Hodgman Polygon Clipping: Four possible scenarios at each clipper outside inside outside inside outside inside outside inside v2 v2 v2 v2 v1’ v1’ v1 v1 v1 v1 Outside to inside: Output: v1’ and v2 Inside to inside: Output: v2 Inside to outside: Output: v1’ Outside to outside: Output: nothing
Sutherland-Hodgman Polygon Clipping v2’ Figure 6-27, page 332 v2 v3 v1’ v3’ Left Clipper Right Clipper Bottom Clipper Top Clipper v1 v2” v2’v3’ v2”v1’ v1’ v2v2’ v2’ v2 v1v2 v2 v2’v3’ v3’ v3’v1 v1’v2 v2’ v2v3 v2’ v3’v1 v3’v1 v1 v1v2 v1’v2 v2v2’ v3v1 v2” v1v2 v2 v2v2’ v2’v2” v2’ Edges Output Edges Output Edges Output Edges Output Final
Weiler-Atherton Polygon Clipping Sutherland-Hodgman Weiler-Atherton
Clipping in 3D • Suppose the view volume has been normalized. Then the clipping boundaries are just: xwmin = -1 ywmin = -1 zwmin = -1 xwmax = 1 ywmax = 1 zwmax = 1
Clipping Homogeneous Coordinates in 3D • Coordinates expressed in homogeneous coordinates • After geometric, viewing and projection transformations, each vertex is: (xh, yh, zh, h) • Therefore, assuming coordinates have been normalized to a (-1,1) volume, a point (xh, yh, zh, h) is inside the view volume if: xh yh zh -1 < < 1 and -1 < < 1 and -1 < < 1 h h h Suppose that h > 0, which is true in normal cases, then -h < xh < h and -h < yh < h and -h < zh < h
Remember Cohen-Sutherland 2D Line Clipping Region Codes? • Divide 2D space into 3x3 regions. • Middle region is the clipping window. • Each region is assigned a 4-bit code. • Bit 1 is set to 1 if the region is to the left of the clipping window, 0 otherwise. Similarly for bits 2, 3 and 4. 4 3 2 1 Top Bottom Right Left
Cohen-Sutherland Line Clipping Region Codes in 2D 1000 1010 1001 0000 0010 0001 0100 0110 0101
3D Cohen-Sutherland Region Codes • Simply use 6 bits instead of 4. 6 5 4 3 2 1 Far Near Top Bottom Right Left Example: If h + xh < 0, then bit 1 is set to 1. This is because if -h > xh, then the point is to the left of the viewing volume.
Clipping Polygons • First, perform trivial acceptance and rejection using, for example, its coordinate extents. • Polygons usually split into triangle strips. • Then each triangle is clipped using 3D extension of the Sutherland-Hodgman method
Arbitrary Clipping Planes • Can specify an arbitrary clipping plane: Ax + By + Cz + D = 0. • Therefore, for any point, if Ax + By + Cz + D < 0, it is not shown. • To clip a line against an arbitrary plane, • If both end-points are in, then the line is in • If both end-points are out, then the line is out • If one end-point is in, and one is out, then we need to find the intersection of the line and the plane
Intersection of Line and Plane • First, given two end-points of a line, P1 and P2, form a parametric representation of the line: P = P1 + (P2 – P1) u, where 0<u<1 Equation of the clipping plane: N.P + D = 0, where N = (A,B,C) Substituting, N.(P1 + (P2 – P1)u) + D = 0 – D – N.P1 N . (P2 – P1) u =