22
Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms Breaking space up into chunks 2D drawing and windowing – Modelling May require more complex geometry than rectangular boxes

Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Embed Size (px)

Citation preview

Page 1: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Clipping

• Apart from clipping to the view volume, clipping is a basic operation in many other algorithms– Breaking space up into chunks

– 2D drawing and windowing

– Modelling

• May require more complex geometry than rectangular boxes

Page 2: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Hardware Sutherland-Hodgman

• Suitable for hardware implementation– Only need the clip edge, the endpoints of the current

edge, and the last output point

– Polygon edges are output as they are found, and passed right on to the next clip region edge

Clip Top

Vertices in Clip Right

Clip Bottom

Clip Left

Clipped vertices out

Page 3: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Inside-Outside Testing

• Edges/Planes store a vector pointing toward the outside of the clip region

• Dot products give inside/outside information

Outside Insiden

s

f

i

x

0

0

0

x)(fn

x)(in

x)(sn

s-x

Page 4: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Inside/Outside in Screen Space

• In screen space, clip planes are xs=±1, ys=±1, zs=0, zs=1

• Inside/Outside reduces to comparisons before perspective divide

ss

sss

sss

wz

wyw

wxw

0

Page 5: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Finding Intersection Pts Watt Sect 1.4.3, 1.4.4

• Use the parametric form for the line between two points, x1 and x2:

• For planes of the form x=a:

• Similar forms for y=a, z=a• Solution for general plane in textbook

10 )()( 121 ttt xxxx

))()(

)(),(

)(

)(,( 1

12

1211

12

121 xa

xx

zzzxa

xx

yyyai

x

Page 6: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Additional Clipping Planes

• Useful for doing things like cut-away views– Use a clip plane to cut off part of the object

– Only works if piece to be left behind is convex

• OpenGL allows you to do it• Also one way to use OpenGL to identify objects in

a region of space (uses the selection mechanism)

Page 7: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Clipping Lines

• Lines can also be clipped by Sutherland-Hodgman– Slow, unless you already have hardware

• Better algorithms exist– Cohen-Sutherland

– Liang-Barsky

– Nicholl-Lee-Nicholl

Page 8: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Cohen-Sutherland (1)

• Works basically the same as Sutherland-Hodgman– Was developed earlier

• Clip line against each edge of clip region in turn– If both endpoints outside, discard line and stop

– If both endpoints in, continue to next edge (or finish)

– If one in, one out, chop line at crossing pt and continue

Page 9: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Cohen-Sutherland (2)1 2

3

4

1 2

3

4

3

4

1 2

3

4

Page 10: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Cohen-Sutherland (3)

• Some cases lead to premature acceptance or rejection– If both endpoints are inside all edges

– If both endpoints are outside one edge

Page 11: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Cohen-Sutherland - Details

• Only need to clip line against edges where one endpoint is out

• Use outcode to record endpoint in/out wrt each edge. One bit per edge, 1 if out, 0 if in.

• Trivial reject: – outcode(x1)&outcode(x2)!=0

• Trivial accept:– outcode(x1)|outcode(x2)==0

• Which edges to clip against?– outcode(x1)^outcode(x2)

1 2

3

4

0010

0101

Page 12: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Liang-Barsky Clipping

• Parametric clipping - view line in parametric form and reason about the parameter values

• More efficient, as not computing the coordinate values at irrelevant vertices

• Clipping conditions on parameter: Line is inside clip region for values of t such that:

12max1min

12max1min

yyyyytyy

xxxxxtxx

Page 13: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Liang-Barsky (2)

• Infinite line intersects clip region edges when:

k

kk p

qt

p1 x q1 x1 x min

p2 x q2 x max x1

p3 y q3 y1 ymin

p4 y q4 ymax y1

where

Page 14: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Liang-Barsky (3)

• When pk<0, as t increases line goes from outside to inside - enter

• When pk>0, line goes from inside to outside - leave

• When pk=0, line is parallel to an edge (clipping is easy)

• If there is a segment of the line inside the clip region, sequence of infinite line intersections must go: enter, enter, leave, leave

Page 15: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Liang-Barsky (4)

Enter Enter

LeaveLeave

Enter

Leave

EnterLeave

Page 16: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Liang-Barsky - Algorithm• Compute entering t values, which are qk/pk for each pk<0• Compute leaving t values, which are qk/pk for each pk>0• Parameter value for small t end of line is:tsmall= max(0,

entering t’s)• parameter value for large t end of line is: tlarge=min(1,

leaving t’s)• if tsmall<tlarge, there is a line segment - compute endpoints by

substituting t values• Improvement (and actual Liang-Barsky):

– compute t’s for each edge in turn (some rejects occur earlier like this.)

Page 17: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Nicholl-Lee-Nicholl clipping

• Some edges are irrelevant to clipping, particularly if one vertex lies inside region.

• Cases: – x1 in– x1 in corner region– x1 in edge region

• For each case, we generate specialized test regions for x2, which use simple tests (slope, >, <), and tell which edges to clip against.

a

a

a

Page 18: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Nicholl-Lee-Nicholl (2)

• Special cases for each endpoint location and slope• Number of cases explodes in 3D, making it

unsuitable1 2

3

4

Reject

TopTop, Right

Top, Bottom

Left

Left, bottom

Page 19: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Weiler Atherton Polygon Clipping

• For clockwise polygon:– for out-to-in pair, follow

usual rule

– for in-to-out pair, follow clip edge

• Easiest to start outside

Inside

1

2

3

4

5

6

7

8

go up

go up

Page 20: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

General Clipping

• Clipping general against general polygons is quite hard

• Outline of Weiler algorithm:– Replace crossing points with vertices

– Double all edges and form linked lists of edges

– Change links at vertices

– Enumerate polygon patches

• Can use clipping to break concave polygon into convex pieces; main issue is inside-outside for edges

Page 21: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Weiler Algorithm (1)

Page 22: Clipping Apart from clipping to the view volume, clipping is a basic operation in many other algorithms –Breaking space up into chunks –2D drawing and

Changes to

Rearranging pointersmakes it possible to enumerate all componentsof the intersection