Subdivision Surfaces CS 418 Intro to Computer Graphics John C. - - PowerPoint PPT Presentation

subdivision surfaces
SMART_READER_LITE
LIVE PREVIEW

Subdivision Surfaces CS 418 Intro to Computer Graphics John C. - - PowerPoint PPT Presentation

Subdivision Surfaces CS 418 Intro to Computer Graphics John C. Hart Knot Insertion [0 2 4 6 8 10] 4 6 8 2 4 6 0 2 4 6 8 10 Knot Insertion [0 2 4 5 6 8 10] 4 6 8 4 5 6 5 6 8 2 4 6 2 4 5 0 2 4 6 8 10 Knot Insertion [0 2 4 5 6 8 10]


slide-1
SLIDE 1

Subdivision Surfaces

CS 418 Intro to Computer Graphics John C. Hart

slide-2
SLIDE 2

Knot Insertion

[0 2 4 6 8 10] 0 2 4 2 4 6 4 6 8 6 8 10

slide-3
SLIDE 3

Knot Insertion

[0 2 4 5 6 8 10] 0 2 4 2 4 6 4 6 8 6 8 10 2 4 5 4 5 6 5 6 8

slide-4
SLIDE 4

Knot Insertion

[0 2 4 5 6 8 10] 0 2 4 6 8 10 2 4 5 4 5 6 5 6 8

slide-5
SLIDE 5

Loop Knot Insertion

0 1 2 1 2 3 2 3 4 3 4 5 4 5 6 (6 7 8) (7 8 9)

slide-6
SLIDE 6

Loop Knot Insertion

0 1 2 1 2 3 2 3 4 3 4 5 4 5 6 (6 7 8) (7 8 9) 2 2.5 3 3 3.5 4 4 4.5 5 5 5.5 6 1 1.5 2

slide-7
SLIDE 7

Loop Knot Insertion

0 1 2 1 2 3 2 3 4 3 4 5 4 5 6 2 2.5 3 3 3.5 4 4 4.5 5 5 5.5 6 1 1.5 2 1 2 2.5 1.5 2 3

slide-8
SLIDE 8

Loop Knot Insertion

0 1 2 1 2 3 2 3 4 3 4 5 4 5 6 2 2.5 3 3 3.5 4 4 4.5 5 5 5.5 6 1 1.5 2 1 2 2.5 1.5 2 3 1.5 2 2.5

slide-9
SLIDE 9

Loop Knot Insertion

0 1 2 1 2 3 2 3 4 3 4 5 4 5 6 2 2.5 3 3 3.5 4 4 4.5 5 5 5.5 6 1 1.5 2 1 2 2.5 1.5 2 3 1.5 2 2.5

slide-10
SLIDE 10

Smoothing a Polygon

slide-11
SLIDE 11

Smoothing a Polygon

  • 1. Add edge midpoints
slide-12
SLIDE 12

Smoothing a Polygon

  • 1. Add edge midpoints
  • 2. Add struts

– Struts connect midpoints of segments from vertices to edge midpoints – One strut per vertex

slide-13
SLIDE 13

Smoothing a Polygon

  • 1. Add edge midpoints
  • 2. Add struts

– Struts connect midpoints of segments from vertices to edge midpoints – One strut per vertex

  • 3. Add strut midpoints
slide-14
SLIDE 14

Smoothing a Polygon

  • 1. Add edge midpoints
  • 2. Add struts

– Struts connect midpoints of segments from vertices to edge midpoints – One strut per vertex

  • 3. Add strut midpoints
  • 4. Connect
slide-15
SLIDE 15

Smoothing a Polygon

  • 1. Add edge midpoints
  • 2. Add struts

– Struts connect midpoints of segments from vertices to edge midpoints – One strut per vertex

  • 3. Add strut midpoints
  • 4. Connect
  • 5. Repeat
slide-16
SLIDE 16

B-Spline Patches

  • Tensor product of two curves
  • Need to subdivide control points to create four sub-

patches

  • Need to generate new control points

– vertex points (replacing control points) – edge points – face points

∑∑

= =

=

n j n i ij n i n j

t N s N t s ) ( ) ( ) , ( p p

slide-17
SLIDE 17

Face Points

  • Approximate edge points as midpoint of control

points E = 1/2 p + 1/2 p

  • Face point is midpoint of approximate edge points

F = 1/2 E + 1/2 E = 1/4 p + 1/4 p + 1/4 p + 1/4 p

slide-18
SLIDE 18

Edge Points

  • Face points are midpoints between approx. edge points
  • Approx. edge point is midpoint between control points
  • Actual edge point is midpoint between midpoints

between approx edge point and face points E = 1/2 (1/2 (1/2 E0 + 1/2 E1) + 1/2 E1) + 1/2 (1/2 E1 + 1/2 (1/2 E1 + 1/2 E2)) = 1/2 (1/2 F0 + 1/2 (1/2 p0 + 1/2 p1)) + 1/2 (1/2 (1/2 p0 + 1/2 p1) + 1/2 F1) = 1/4 (F0 + p0 + p1 + F1) p0 p1 E0 E1 E2 F0 F1 E

slide-19
SLIDE 19

Vertex Points

V0 = 1/4 E0 + 1/2 p0 + 1/4 E1 V2 = 1/4 E2 + 1/2 p2 + 1/4 E3 V = 1/2 (1/2 (1/2 V0 + 1/2 V1) + 1/2 V1)+ 1/2 (1/2 V1 + 1/2 (1/2 V1 + 1/2 V2) = 1/4 (1/4 (F0 + F1 + p0 + p1) + 1/4 (F2 + F3 + p1 + p2) + 2 V1) = 1/4 (1/4 (F0 + F1 + F2 + F3) + 1/4 (p0 + 2 p1 + p2) + 2/4 (E2 + E3 + 2 p1)) = 1/16(F0 + F1 + F2 + F3 + 2E0 + 2E1 + 2E2 + 2E3 + 4p1) p1 p0 p2 F0 F1 F2 F3 E3 E2 E0 E1 p1 p0 p2 E0 E1 V2 E3 E2 V0 V1

slide-20
SLIDE 20

Catmull-Clark Subdiv

slide-21
SLIDE 21

Catmull-Clark Subdiv

  • Add new “face” vertex at each face centroid

centroid = average of face’s vertices

slide-22
SLIDE 22

Catmull-Clark Subdiv

  • Add new “face” vertex at each face centroid

centroid = average of face’s vertices

  • Add new “edge” vertex at the average of each

edge’s endpoints and adjacent face centroids

slide-23
SLIDE 23

Catmull-Clark Subdiv

  • Add new “face” vertex at each face centroid

centroid = average of face’s vertices

  • Add new “edge” vertex at the average of each

edge’s endpoints and adjacent face centroids

  • Move each vertex to a new position that is…

where n is the valence of the vertex (# of neighboring edges, also # of adjacent faces) 1 × ave. adjacent face centroids 2 × ave. adjacent edge midpoints (n-3) × current vertex position

n + +

slide-24
SLIDE 24

Example

slide-25
SLIDE 25

Creases

f i+1

j = Centroid of polygon

ei+1

j = (vi + ei j)/2

  • Dart vertex (one sharp edge):

vi+1 = (n-2)/n vi + 1/n2 Σj ei

j + 1/n2 Σj fi+1 j

  • Crease vertex (two sharp edges):

vi+1 = (ei

j + 6vi + ei k)/8

  • Corner vertex (three or more sharp edges)

vi+1 = vi

slide-26
SLIDE 26

Another Example

slide-27
SLIDE 27

Success?