Presentation is loading. Please wait.

Presentation is loading. Please wait.

Clipping Jian Huang, CS594 This set of slides reference slides devised at Ohio State and MIT.

Similar presentations


Presentation on theme: "Clipping Jian Huang, CS594 This set of slides reference slides devised at Ohio State and MIT."— Presentation transcript:

1 Clipping Jian Huang, CS594 This set of slides reference slides devised at Ohio State and MIT.

2 Viewing Pipeline Revisited
Object Space World Space Eye Space Clipping Space Canonical view volume Screen Space Object space: coordinate where each component is defined World space: all components put together via affine transformation. (camera, lighting defined in this space) Eye space: camera at the origin, view direction coincides with the z axis. Hither and Yon perpendicular to the z axis Clipping space: All point is in homogeneous coordinate. Perspective division gets everything into 3D image space. 3D image space (Canonical view volume): a parallelpipied shape defined by (-1:1,-1:1,0,1). Objects distorted. Screen space: x and y mapped to screen pixel coordinates January 17, 2019

3 Why do clipping Clipping is a visibility preprocess. In real-world scenes clipping can remove a substantial percentage of the environment from consideration. Clipping offers an important optimization January 17, 2019

4 What is clipping, two views
Clipping is to spatially partition geometric primitives, according to their containment within some region. Clipping can be used to: Distinguish whether geometric primitives are inside or outside of a viewing frustum or picking frustum Detecting intersections between primitives Clipping is to subdivide geometric primitives. Several other potential applications. Binning geometric primitives into spatial data structures computing analytical shadows. January 17, 2019

5 Point Clipping (x, y) is inside iff AND January 17, 2019

6  = Line Clipping - Half Plane Tests
Modify endpoints to lie in rectangle “Interior” of rectangle? Answer: intersection of 4 half-planes 3D ? (intersection of 6 half-planes) y < ymax y > ymin x > xmin x < xmax = interior xmin xmax ymin ymax January 17, 2019

7 Line Clipping Is end-point inside a clip region? - half-plane test
If outside, calculate intersection betwee line and the clipping rectangle and make this the new end point Both endpoints inside: trivial accept One inside: find intersection and clip Both outside: either clip or reject (tricky case) January 17, 2019

8 Cohen-Sutherland Algorithm (Outcode clipping)
Classifies each vertex of a primitive, by generating an outcode. An outcode identifies the appropriate half space location of each vertex relative to all of the clipping planes. Outcodes are usually stored as bit vectors. January 17, 2019

9 Cohen-Sutherland Algorithm (Outcode clipping)
if (outcode1 == '0000' and outcode2 == ‘0000’) then line segment is inside else if ((outcode1 AND outcode2) == 0000) then line segment potentially crosses clip region line is entirely outside of clip region endif January 17, 2019

10 The Maybe cases? If neither trivial accept nor reject:
Pick an outside endpoint (with nonzero outcode) Pick an edge that is crossed (nonzero bit of outcode) Find line's intersection with that edge Replace outside endpoint with intersection point Repeat outcode test until trivial accept or reject January 17, 2019

11 The Maybe case January 17, 2019

12 The Maybe Case January 17, 2019

13 One Plane At a Time Clipping (a.k.a. Sutherland-Hodgeman Clipping)
The Sutherland-Hodgeman triangle clipping algorithm uses a divide-and-conquer strategy. Clip a triangle against a single plane. Each of the clipping planes are applied in succession to every triangle. There is minimal storage requirements for this algorithm, and it is well suited to pipelining. It is often used in hardware implementations. January 17, 2019

14 Sutherland-Hodgman Polygon Clipping Algorithm
Subproblem: clip a polygon (input: vertex list) against a single clip edges output the vertex list(s) for the resulting clipped polygon(s) Clip against all four planes generalizes to 3D (6 planes) generalizes to any convex clip polygon/polyhedron Used in viewing transforms January 17, 2019

15 Polygon Clipping At Work
January 17, 2019

16 Sutherland-Hodgman SHclippedge(var: ilist, olist: list; ilen, olen, edge : integer) s = ilist[ilen];     olen = 0; for i = 1 to ilen do d := ilist[i]; if (inside(d, edge) then if (inside(s, edge) then           case 1 addlist(d, olist);     olen := olen + 1; else                                          case 4 n := intersect(s, d, edge); addlist(n, olist); addlist(d, olist);    olen = olen + 2; else if (inside(s, edge) then            -- case 2 n := intersect(s, d, edge); addlist(n, olist);  olen ++; s = d; end_for; January 17, 2019

17 Sutherland-Hodgman SHclip(var: ilist, olist: list; ilen, olen : integer) SHclippedge(ilist, tmplist1, ilen, tlen1, RIGHT); SHclippedge(tmplist1, tmplist2, tlen1, tlen2, BOTTOM); SHclippedge(tmplist2, tmplist1, tlen2, tlen1, LEFT); SHclippedge(tmplist1, olist, tlen1, olen, TOP); January 17, 2019

18 With Pictures January 17, 2019

19 Sutherland-Hodgman Advantages: Disadvantages:
Elegant (few special cases) Robust (handles boundary and edge conditions well) Well suited to hardware Canonical clipping makes fixed-point implementations manageable Disadvantages: Only works for convex clipping volumes Often generates more than the minimum number of triangles needed Requires a divide per edge January 17, 2019

20 Interpolating Parameters
January 17, 2019

21 3D Clipping (Planes) Red Polygon – Clip
x y z image plane near far Red Polygon – Clip Transform into 4D Clipping space (canonical viewing volume) Homogenous co-ordinates January 17, 2019

22 Naïve 3D Euclidean Space Clipping
After perspective projection, Euclidean space is not linear!! January 17, 2019

23 Difficulty with Euclidean Space Clipping
Clipping will handle most cases. However, there is one case in general that cannot be handled this way. Parts of a primitive lie both in front of and behind the viewpoint. This complication is caused by our projection stage. It has the nasty habit of mapping objects in behind the viewpoint to positions in front of it. Solution: clip in homogeneous coordinate January 17, 2019

24 4DPolygonClip Use Sutherland Hodgman algorithm
Use arrays for input and output lists There are six planes of course ! January 17, 2019

25 4D Clipping OpenGL uses -1<=x<=1, -1<=y<=1, -1<=z<=1
We use: -1<=x<=1, -1<=y<=1, -1<=z <=0 Must clip in homogeneous coordinates: w>0: -w<=x<=w, -w<=y<=w, -w<=z<=0 w<0: -w>=x>=w, -w>=y>=w, -w>=z>=0 Consider each case separately What issues arise ? January 17, 2019

26 4D Clipping Clip boundary: x/w = 1 i.e. (x–w=0);
Point A is inside, Point B is outside. Clip edge AB x = Ax + t(Bx – Ax) y = Ay + t(By – Ay) z = Az + t(Bz – Az) w = Aw + t(Bw – Aw) Clip boundary: x/w = 1 i.e. (x–w=0); w-x = Aw – Ax + t(Bw – Aw – Bx + Ax) = 0 Solve for t. January 17, 2019

27 Still have issues with 4D Clipping
W=-X W=X P1 and P2 map to same physical point ! Solution: Clip against both regions Negate points with negative W January 17, 2019

28 Still have issues with 4D Clipping
Inf -Inf P2 Line straddles both regions After projection one gets two line segments How to do this? Only before the perspective division January 17, 2019

29 More on Perspective Transform
There are a number of perspective matrices depending on the field of view desired, and the near and far plane. But same essential idea: a perspective matrix moves the depth value z into the fourth column, where it will used to divide through the x and y values when the final homogeneous coordinate is translated back into a 3D point (3D image space), z is usually referred to as ‘depth’ of the point January 17, 2019

30 More on perspective transforms
January 17, 2019

31 More on Perspective Transform
Perspective projections categorized by the number of axis the view plane cuts (ie 1-point, 2-point or 3-point perspective) the plane cuts the z axis, lines parallel to the z meets at infinity; lines parallel to the x or y axis will not meet at infinity. 1-point perspective. the plane cuts the x and z axis, lines parallel to the x/z axis meet at infinity; lines parallel to the y axis will not meet at infinity. 2-point perspective. if the plane cuts the x, y, and z axis then lines parallel to the x, y, or z axis will meet at infinity. This is 3-point perspective. January 17, 2019

32 More on Homogeneous Coordinates
To 4D: (x,y,z) -> (x,y,z,1) Back to 3D: (x,y,z,w) -> (x/w, y/w, z/w) A point is on a plane if the point satisfies 0 == A*x + B*y + C*z + D Point P: (x,y,z,1). Representing a plane N = (A,B,C,D). Point P is on the plane, if P dot N == 0 January 17, 2019

33 Transforming Normals January 17, 2019

34 Transforming Normals Transform P to P’ -> P’ = M * P (M is known)
and transform N to N’ -> N’ = Q * N Let Q be our transformation matrix for N. We want to make sure that after transformation, N’ is the normal of the transformed plane. That is, N’T * P’ = 0 We get: N’T * P’ = (Q * N)T * (M * P) = NT * QT * M * P = 0 January 17, 2019

35 Transforming Normals So, need QT *M = Identity Then, QT = M –1
Still, we want N’ = Q * N. Q = (M –1)T January 17, 2019

36 Viewing Pipeline Revisited
Object Space World Space Eye Space Clipping Space Canonical view volume Screen Space Object space: coordinate where each component is defined World space: all components put together via affine transformation. (camera, lighting defined in this space) Eye space: camera at the origin, view direction coincides with the z axis. Hither and Yon perpendicular to the z axis Clipping space: All point is in homogeneous coordinate. Perspective division gets everything into 3D image space. 3D image space (Canonical view volume): a parallelpipied shape defined by (-1:1,-1:1,0,1). Objects distorted. Screen space: x and y mapped to screen pixel coordinates January 17, 2019

37 Right-Handed Or Left-Handed
Usually use right-handed coordinate (convention in math) Left-handed good for screen To convert, just flip x or y or z. (any one of the three) January 17, 2019

38 How about the viewing pipeline?
The range of z for the canonical view volume is [0,1]. x and y still remain the same. Is converting back and forth (flipping) a major issue? January 17, 2019


Download ppt "Clipping Jian Huang, CS594 This set of slides reference slides devised at Ohio State and MIT."

Similar presentations


Ads by Google