17
CS-184: Computer Graphics Lecture #10: Clipping and Hidden Surfaces Prof. James O’Brien University of California, Berkeley V2013-F-10-1.0 1 2 Today Clipping Clipping to view volume Clipping arbitrary polygons Hidden Surface Removal Z-Buffer BSP Trees Others 2 10.5-ClippingAndHidden.key - October 27, 2014

CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

CS-184: Computer GraphicsLecture #10: Clipping and

Hidden Surfaces !!

Prof. James O’Brien University of California, Berkeley !!

V2013-F-10-1.0

1

2

Today

• Clipping • Clipping to view volume • Clipping arbitrary polygons

• Hidden Surface Removal • Z-Buffer • BSP Trees • Others

2

10.5-ClippingAndHidden.key - October 27, 2014

Page 2: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

3

Clipping• Stuff outside view volume should not be drawn

• Too close: obscures view

3

4

Clipping• Stuff outside view volume should not be drawn

• Too close: obscures view • Too far :

• Complexity • Z-buffer problems

• Too high/low/right/left: • Memory errors • Broken algorithms • Complexity

4

10.5-ClippingAndHidden.key - October 27, 2014

Page 3: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

5

Clipping Line to Line/Plane

a

bn̂

Line segment to be clipped

Line/plane that clips it r

x(t) = a+ t(b�a)

n̂ ·x� n̂ · r= 0

5

6

Clipping Line to Line/Plane

a

bn̂

Line segment to be clipped

Line/plane that clips it

x(t) = a+ t(b�a)

n̂ ·x� f = 0

6-1

10.5-ClippingAndHidden.key - October 27, 2014

Page 4: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

6

Clipping Line to Line/Plane

a

bn̂

Line segment to be clipped

Line/plane that clips it

x(t) = a+ t(b�a)

n̂ ·x� f = 0

}

n̂ · (a+ t(b�a))� f = 0

n̂ ·a+ t(n̂ · (b�a))� f = 0

t =f � n̂ ·an̂ ·d

6-2

7

Clipping Line to Line/Plane

a

bn̂

t =f � n̂ ·an̂ ·d

• Segment may be on one side

• Lines may be parallel

t 62 [0 . . .1]

n̂ ·d= 0

7-1

10.5-ClippingAndHidden.key - October 27, 2014

Page 5: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

7

Clipping Line to Line/Plane

a

bn̂

t =f � n̂ ·an̂ ·d

• Segment may be on one side

• Lines may be parallel

t 62 [0 . . .1]

n̂ ·d= 0|n̂ ·d| ε (Recall comments about numerical issues)

7-2

Triangle Clip/Split

8

a

b

c

-

+

-a

b

c

-

+

-a

b

c

-

+

-

8-1

10.5-ClippingAndHidden.key - October 27, 2014

Page 6: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

Triangle Clip/Split

8

a

b

c

-

+

-a

b

c

-

+

-a

b

c

-

+

-

Double vertices if you want separation...

8-2

9

Polygon Clip to Convex Domain

• Convex domain defined by collection of planes (or lines or hyper-planes)

• Planes have outward pointing normals • Clip against each plane in turn • Check for early/trivial rejection

9

10.5-ClippingAndHidden.key - October 27, 2014

Page 7: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

Polygon Clipping• Find the part of a polygon inside the clip window?

Before Clipping

10

Polygon Clipping• Find the part of a polygon inside the clip window?

After Clipping

11

10.5-ClippingAndHidden.key - October 27, 2014

Page 8: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

• Clip to each window boundary one at a time

Sutherland-Hodgman Clipping 12

• Clip to each window boundary one at a time

Sutherland-Hodgman Clipping 13

10.5-ClippingAndHidden.key - October 27, 2014

Page 9: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

• Clip to each window boundary one at a time

Sutherland-Hodgman Clipping 14

Sutherland-Hodgman Clipping• Clip to each window boundary one at a time

15

10.5-ClippingAndHidden.key - October 27, 2014

Page 10: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

Sutherland-Hodgman Clipping• Clip to each window boundary one at a time

16

Polygon Clip to Convex Domain

17

Note double edges.

17

10.5-ClippingAndHidden.key - October 27, 2014

Page 11: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

18

Polygon Clip to Convex Domain

Inside Outside

s

p

Output p

Inside Outside

sp

Output i

Inside Outside

s

p

No output

Inside Outside

sp

Output i and p

i

i

18

19

Polygon Clip to Convex Domain

• Sutherland-Hodgman algorithm • Basically edge walking

• Clipping done often... should be efficient • Liang-Barsky parametric space algorithm • See text for clipping in 4D homogenized coordinates

19

10.5-ClippingAndHidden.key - October 27, 2014

Page 12: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

20

General Polygon Clipping

A B A�B

B�A

A\B

A[B

20

21

• Weiler Algorithm • Double edges

General Polygon Clipping 21

10.5-ClippingAndHidden.key - October 27, 2014

Page 13: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

22

Hidden Surface Removal• True 3D to 2D projection would put every thing

overlapping into the view plane. • We need to determine what’s in front and display only

that.

22

23

Z-Buffers• Add extra depth channel to image • Write Z values when writing pixels • Test Z values before writing

Images from Okan Arikan

23

10.5-ClippingAndHidden.key - October 27, 2014

Page 14: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

24

Z-Buffers

• Benefits • Easy to implement • Works for most any geometric primitive • Parallel operation in hardware

• Limitations • Quantization and aliasing artifacts • Overfill • Transparency does not work well

24

25

Z-Buffers• Transparency requires partial sorting:

Partiallytransparent

Opaque

Opaque 1st

2nd

3rdFront

Good

Partiallytransparent

Opaque

Opaque 2nd

3rd

1st

Not Good

25

10.5-ClippingAndHidden.key - October 27, 2014

Page 15: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

26

Z-BuffersRecall depth-value distortions. !

It’s a feature... More resolution near viewer Best use of limited precision

26

27

A-Buffers

• Store sorted list of “fragments” at each pixel • Draw all opaque stuff first then transparent • Stuff behind full opacity gets ignored !

• Nice for antialiasing...

27

10.5-ClippingAndHidden.key - October 27, 2014

Page 16: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

28

Scan-line Algorithm• Assume polygons don’t intersect • Each time an edge is crossed determine who’s on top

28

29

Painter’s Algorithm• Sort Polygons Front-to-Back

• Draw in order • Back-to-Front works also, but wasteful

• How to sort quickly? • Intersecting polygons? • Cycles?

29

10.5-ClippingAndHidden.key - October 27, 2014

Page 17: CS-184: Computer Graphics - University of California, Berkeley · CS-184: Computer Graphics Lecture #10: Clipping and! Hidden Surfaces!!! Prof. James O’Brien! University of California,

30

BSP-Trees

• Binary Space Partition Trees • Split space along planes • Allows fast queries of some spatial relations

• Draw Front-to-Back • Draw same-side polygons first • Draw root node polygon (if any) • Draw other-side polygons last

30

10.5-ClippingAndHidden.key - October 27, 2014