CS-184: Computer Graphics Lecture #10: Clipping and Hidden - - PowerPoint PPT Presentation

cs 184 computer graphics
SMART_READER_LITE
LIVE PREVIEW

CS-184: Computer Graphics Lecture #10: Clipping and Hidden - - PowerPoint PPT Presentation

1 CS-184: Computer Graphics Lecture #10: Clipping and Hidden Surfaces Prof. James OBrien University of California, Berkeley V2015-S-10-1.0 2 Today Clipping Clipping to view volume Clipping arbitrary polygons Hidden


slide-1
SLIDE 1

CS-184: Computer Graphics

Lecture #10: Clipping and Hidden Surfaces

  • Prof. James O’Brien

University of California, Berkeley

V2015-S-10-1.0

1

2

Today

  • Clipping
  • Clipping to view volume
  • Clipping arbitrary polygons
  • Hidden Surface Removal
  • Z-Buffer
  • BSP Trees
  • Others

2 10-ClippingAndHidden.key - October 12, 2016

slide-2
SLIDE 2

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-ClippingAndHidden.key - October 12, 2016

slide-3
SLIDE 3

5

Clipping Line to Line/Plane

a b

ˆ n

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 b ˆ n

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·a ˆ n·d

6 10-ClippingAndHidden.key - October 12, 2016

slide-4
SLIDE 4

7

Clipping Line to Line/Plane

a

b ˆ n t = f − ˆ n·a ˆ n·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

Triangle Clip/Split

8

a b c

  • +
  • a

b c

  • +
  • a

b c

  • +
  • Double vertices if you want separation...

8 10-ClippingAndHidden.key - October 12, 2016

slide-5
SLIDE 5

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

Polygon Clipping

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

Before Clipping

10 10-ClippingAndHidden.key - October 12, 2016

slide-6
SLIDE 6

Polygon Clipping

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

After Clipping

11

  • Clip to each window boundary one at a time

Sutherland-Hodgman Clipping

12 10-ClippingAndHidden.key - October 12, 2016

slide-7
SLIDE 7
  • Clip to each window boundary one at a time

Sutherland-Hodgman Clipping

13

  • Clip to each window boundary one at a time

Sutherland-Hodgman Clipping

14 10-ClippingAndHidden.key - October 12, 2016

slide-8
SLIDE 8

Sutherland-Hodgman Clipping

  • Clip to each window boundary one at a time

15

Sutherland-Hodgman Clipping

  • Clip to each window boundary one at a time

16 10-ClippingAndHidden.key - October 12, 2016

slide-9
SLIDE 9

Polygon Clip to Convex Domain

17

Note double edges.

17

18

Polygon Clip to Convex Domain

Inside Outside

s p Output p

Inside Outside

s p Output i

Inside Outside

s p No output

Inside Outside

s p Output i and p i i

18 10-ClippingAndHidden.key - October 12, 2016

slide-10
SLIDE 10

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

20

General Polygon Clipping

A

B A−B B−A A∩B A∪B

20 10-ClippingAndHidden.key - October 12, 2016

slide-11
SLIDE 11

21

  • Weiler Algorithm
  • Double edges

General Polygon Clipping

21

22

Hidden Surface Removal

  • True 3D to 2D projection would put every thing
  • verlapping into the view plane.
  • We need to determine what’s in front and display only

that.

22 10-ClippingAndHidden.key - October 12, 2016

slide-12
SLIDE 12

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

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 10-ClippingAndHidden.key - October 12, 2016

slide-13
SLIDE 13

25

Z-Buffers

  • Transparency requires partial sorting:

Partially transparent Opaque Opaque 1st 2nd 3rd Front

Good

Partially transparent Opaque Opaque 2nd 3rd 1st

Not Good

25

26

Z-Buffers

Recall depth-value distortions. It’s a feature...

More resolution near viewer Best use of limited precision

26 10-ClippingAndHidden.key - October 12, 2016

slide-14
SLIDE 14

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

28

Scan-line Algorithm

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

28 10-ClippingAndHidden.key - October 12, 2016

slide-15
SLIDE 15

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

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-ClippingAndHidden.key - October 12, 2016