subdivision surfacesmisha/fall19/19.pdf · subdivision surfaces michael kazhdan (601.457/657)...

76
Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Upload: others

Post on 19-Jun-2020

31 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Surfaces

Michael Kazhdan

(601.457/657)

Subdivision for Modeling and Animation, Zorin et al. 2000

Page 2: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Announcements

• Assignment 3 has been posted Requires linking to the OpenGL libraries

» ASAP: Make sure you can compile!

Minor changes to AffineShape::drawOpenGL()» See Assignment3 web-page announcements

Implementations of Shape::updateBoundingBox() will

not be made available until after the Assignment2

deadline (+5 days) has passed

Page 3: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Surfaces

• What makes a good surface representation? Concise

Local support

Affine invariant

Arbitrary topology

Guaranteed smoothness

Natural parameterization

Efficient display

Efficient intersections

Page 4: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Surfaces

• Properties: Concise

Local support

Affine invariant

Arbitrary topology

Guaranteed smoothness

Natural parameterization

Efficient display

Efficient intersections

Pixar

Page 5: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision

• How do you make a smooth curve?

Zorin & SchroederSIGGRAPH 99

Course Notes

We want to “smooth out” severe angles

Page 6: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision

• How do you make a smooth curve?

Zorin & SchroederSIGGRAPH 99

Course Notes

We want to “smooth out” severe angles

Page 7: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Surfaces

• Coarse mesh & subdivision rule Define smooth surface as limit of

sequence of refinements

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 8: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Key Questions

• How to subdivide the mesh? Aim for properties like smoothness

• How to store the mesh? Aim for efficiency of implementing subdivision rules

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 9: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

General Subdivision Scheme

• How to subdivide the mesh?Two parts:

» Refinement: Add new vertices and connect (topological)

» Smoothing:Move vertex positions (geometric)

Page 10: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

• How to subdivide the mesh?» Refinement:

Subdivide each triangle into 4 triangles by

splitting each edge and connecting new vertices

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 11: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

Zorin & SchroederSIGGRAPH 99

Course Notes

Existing vertex being moved

from one level to the next

• How to subdivide the mesh:» Refinement

» Smoothing (existing vertices): Choose new location as weighted average of original vertex

and its neighbors

Page 12: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

What about vertices that have more

Or less than 6 neighboring faces?What about (extraordinary) vertices with

more/less than 6 neighboring faces?

New_position = (1 − 𝑘)original_position + sum(*each_original_vertex)

• How to subdivide the mesh:» Refinement

» Smoothing (existing vertices): Choose new location as weighted average of original vertex

and its neighbors

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 13: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

What about vertices that have more

Or less than 6 neighboring faces?What about (extraordinary) vertices with

more/less than 6 neighboring faces?

New_position = (1 − 𝑘)original_position + sum(*each_original_vertex)

• How to subdivide the mesh:» Refinement

» Smoothing (existing vertices): Choose new location as weighted average of original vertex

and its neighbors

Zorin & SchroederSIGGRAPH 99

Course Notes

𝟎 𝟏/𝒌:

• As increases, the contribution from adjacent

vertices plays a more important role.

• If = 0, the subdivision is interpolatory.

Page 14: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Where do existing vertices move?

• Choose so that the limit surface has guaranteed smoothness properties

» Original Loop

𝛽 =1

2

5

8−

3

8+1

4cos

2𝜋

𝑘

2

» Warren

𝛽 =

3

8𝑘𝑘 > 3

3

16𝑘 = 3

Page 15: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

• How to subdivide the mesh:» Refinement

» Smoothing (inserted vertices):Choose location as weighted average of original vertices in

local neighborhood

New vertex being inserted

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 16: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Boundary Cases?

• What about boundary vertices / edges? Existing vertex adjacent to an incomplete “triangle fan”

New vertex bordered by only one triangle

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 17: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Boundary Cases?

• Rules for boundary vertices / edges: Refine as though the vertices/edges are on the

(boundary) curve

Zorin & SchroederSIGGRAPH 99

Course Notes1/8 1/83/4 1/2 1/2

Page 18: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

Limit surface has provable smoothness properties!

Page 19: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

Geri’s Game, Pixar

Page 20: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

Pixar

Smooth surfaces can be

constructed from coarse meshes!

Page 21: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Loop Subdivision Scheme

Pixar

Zorin & SchroederSIGGRAPH 99

Course Notes

Sharp creases can be specified by specifying that

certain curves should subdivide as boundary curves.

Page 22: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Schemes

• There are different subdivision schemes Different methods for refining topology

Different rules for positioning vertices

» Interpolating versus approximating

Zorin & Schroeder, SIGGRAPH 99 , Course Notes

Page 23: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Schemes

• There are different subdivision schemes Different methods for refining topology

Different rules for positioning vertices

» Interpolating versus approximating

Zorin & Schroeder, SIGGRAPH 99 , Course Notes

In general, forcing the subdivision to be interpolating removes

degrees of freedom, making the solution less smooth.

Page 24: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Schemes

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 25: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Key Questions

• How to refine the mesh? Aim for properties like smoothness

• How to store the mesh? Aim for efficiency in implementing subdivision rules

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 26: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit

Page 27: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit

Page 28: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit

Page 29: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit

Page 30: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit

Page 31: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit

Page 32: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit

Page 33: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit

Page 34: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit.

Page 35: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Smoothness

To determine the smoothness of the subdivision:

• Repeatedly apply the subdivision scheme

• Look at the neighborhood in the limit.

Computing infinitely many iterations is

computationally prohibitive!

Page 36: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Matrix

• Compute the new positions/vertices as a linear

combination of previous ones.

𝑝0

𝑝1𝑝6

𝑝5

𝑝4 𝑝3

𝑝2 𝑝0’𝑝5’

𝑝4’ 𝑝3’

𝑝2’

𝑝1’𝑝6’

Page 37: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Matrix

• Compute the new positions/vertices as a linear

combination of previous ones.

𝑝0

𝑝1𝑝6

𝑝5

𝑝4 𝑝3

𝑝2 𝑝0’𝑝5’

𝑝4’ 𝑝3’

𝑝2’

𝑝1’𝑝6’

Subdivision Matrix𝑝0′

𝑝1′

𝑝2′

𝑝3′

𝑝4′

𝑝5′

𝑝6′

=1

16

10 1 1 1 1 1 16 6 2 0 0 0 26 2 6 2 0 0 06 0 2 6 2 0 06 0 0 2 6 2 06 0 0 0 2 6 26 2 0 0 0 2 6

𝑝0𝑝1𝑝2𝑝3𝑝4𝑝5𝑝6

Note:

The entries of the left and right vectors are 3D positions.

• We apply the matrix to each coordinate independently

Page 38: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Matrix

• Compute the new positions/vertices as a linear

combination of previous ones.

• To find the limit position of 𝑝0, repeatedly apply

the subdivision matrix.

• Use eigenvalue

decomposition to

compute the 𝑛th

power of the matrix

efficiently.

𝑝0(𝑛)

𝑝1(𝑛)

𝑝2(𝑛)

𝑝3(𝑛)

𝑝4(𝑛)

𝑝5(𝑛)

𝑝6(𝑛)

=1

16

10 1 1 1 1 1 16 6 2 0 0 0 26 2 6 2 0 0 06 0 2 6 2 0 06 0 0 2 6 2 06 0 0 0 2 6 26 2 0 0 0 2 6

𝑛 𝑝0𝑝1𝑝2𝑝3𝑝4𝑝5𝑝6

Page 39: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Matrix

• Compute the new positions/vertices as a linear

combination of previous ones.

• To find the limit position of 𝑝0, repeatedly apply

the subdivision matrix.

• Use eigenvalue

decomposition to

compute the 𝑛th

power of the matrix

efficiently.

𝑝0(𝑛)

𝑝1(𝑛)

𝑝2(𝑛)

𝑝3(𝑛)

𝑝4(𝑛)

𝑝5(𝑛)

𝑝6(𝑛)

=1

16

10 1 1 1 1 1 16 6 2 0 0 0 26 2 6 2 0 0 06 0 2 6 2 0 06 0 0 2 6 2 06 0 0 0 2 6 26 2 0 0 0 2 6

𝑛 𝑝0𝑝1𝑝2𝑝3𝑝4𝑝5𝑝6

If, after a change of basis we have 𝑀 = 𝐴−1𝐷𝐴, where 𝐷 is a

diagonal matrix, then:

𝑀𝑛 = 𝐴−1𝐷𝐴 𝐴−1𝐷𝐴 ⋯ 𝐴−1𝐷𝐴 𝐴−1𝐷𝐴= 𝐴−1𝐷𝑛𝐴

Since 𝐷 is diagonal, raising 𝐷 to the 𝑛th power just amounts to

raising each of the diagonal entries of 𝐷 to the 𝑛th power.

𝐷𝑛 =𝜆0 ⋯ 0⋮ ⋱ ⋮0 ⋯ 𝜆6

𝑛

=𝜆0𝑛 ⋯ 0⋮ ⋱ ⋮0 ⋯ 𝜆6

𝑛

• If 𝜆𝑖 > 1 for any 0 ≤ 𝑖 ≤ 6, then 𝐷𝑛 blows up as 𝑛 → ∞.

• If 𝜆𝑖 < 1 for all 0 ≤ 𝑖 ≤ 6, then 𝐷𝑛 collapses as 𝑛 → ∞.

• If 𝜆𝑖 = −1 for any 0 ≤ 𝑖 ≤ 6, then 𝐷𝑛 cannot

converge as 𝑛 → ∞.

Page 40: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Matrix

Set 𝑀∞ to be the matrix:

𝑀∞ = 𝐴−1𝜆0∞ ⋯ 0⋮ ⋱ ⋮0 ⋯ 𝜆6

∞𝐴

with 𝜆𝑖∞ = 1 if 𝜆𝑖 = 1, and 𝜆𝑖

∞ = 0 otherwise.

The limit of the point 𝑝0 under repeated subdivision

is the vector 𝑝0∞, with:

𝑝0∞

𝑝6∞

= 𝑀∞

𝑝0

⋮𝑝6

Page 41: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Subdivision Matrix

Set 𝑀∞ to be the matrix:

𝑀∞ = 𝐴−1𝜆0∞ ⋯ 0⋮ ⋱ ⋮0 ⋯ 𝜆6

∞𝐴

with 𝜆𝑖∞ = 1 if 𝜆𝑖 = 1, and 𝜆𝑖

∞ = 0 otherwise.

The limit of the point 𝑝0 under repeated subdivision

is the vector 𝑝0∞, with:

𝑝0∞

𝑝6∞

= 𝑀∞

𝑝0

⋮𝑝6

Using a similar approach we can derive an

expression for the normal at the limit point.

• For the normal to be well-defined, we get

additional constraints on diagonal values.

Page 42: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Local support

Page 43: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Local support

Modifying a vertex position at the coarser level

Page 44: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Local support

Modifying a vertex position at the coarser level We modify positions in the one-ring at the next level

Page 45: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Local support

Modifying a vertex position at the coarser level We modify positions in the one-ring at the next level

» Which modifies positions in the one-ring at the next level

Because we refine by a factor of two at each level, the

effects are limited within the two-ring at the original level.

Page 46: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Key Questions

• How to refine the mesh? Aim for properties like smoothness

• How to store the mesh? Aim for efficiency in implementing subdivision rules

Zorin & SchroederSIGGRAPH 99

Course Notes

Page 47: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Polygon Meshes

• Mesh Representations Independent faces

Vertex and face tables

Adjacency lists

Winged-Edge

Page 48: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Independent Faces

• Each face lists vertex coordinates

Page 49: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Independent Faces

• Each face lists vertex coordinates Redundant vertices

No vertex-adjacency info

Page 50: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Independent Faces

• Each face lists vertex coordinates Redundant vertices

No vertex-adjacency info

Moving a vertex requires changing

the coordinates of each instance!

Page 51: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Vertex and Face Tables

• Each face lists vertex references

Page 52: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Vertex and Face Tables

• Each face lists vertex references✓Shared vertices

Moving a vertex requires changing

the coordinates of one point!

Page 53: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Vertex and Face Tables

• Each face lists vertex references✓Shared vertices

No (efficient) adjacency info

Page 54: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Adjacency Lists

• Store all vertex, edge, and face adjacencies

Page 55: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Adjacency Lists

• Store all vertex, edge, and face adjacencies ✓Efficient adjacency info

Page 56: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Adjacency Lists

• Store all vertex, edge, and face adjacencies ✓Efficient adjacency info

Extra storage

Variable size arrays

Changing the connectivity (e.g. subdividing)

requires adjusting many fields.

This makes it hard to work with because it creates

opportunities for inconsistency.

Page 57: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Partial Adjacency Lists

• Can we store only some (fixed-size) adjacency

relationships and derive others?

3

?

3

22?

?

3?

Page 58: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

• Adjacency encoded in edges All adjacencies in 𝑂(1) time

Little extra storage

Fixed-size records

Polygonal faces

Each edge stores:

4 “wing” edges

2 vertices

2 faces

Each face stores:

1 edge

Each vertex stores:

1 edge

Page 59: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

• Vertex table: A pointer to some incident edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 60: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

• Vertex table: A pointer to some incident edge

Vertex positions (and other attributes)

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 61: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

• Face table: A pointer to some incident edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 62: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

• Edge table: Pointers to (S)tart and (E)nd vertices (orientation arbitrary)

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 63: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

• Edge table: Pointers to (S)tart and (E)nd vertices (orientation arbitrary)

Pointers to (L)eft and (R)ight faces

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 64: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

• Edge table: Pointers to (S)tart and (E)nd vertices (orientation arbitrary)

Pointers to (L)eft and (R)ight faces

Pointers to (L)eft and (R)ight edges

coming out of the (S)tart vertex

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 65: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

• Edge table: Pointers to (S)tart and (E)nd vertices (orientation arbitrary)

Pointers to (L)eft and (R)ight faces

Pointers to (L)eft and (R)ight edges

coming out of the (S)tart vertex

Pointers to (L)eft and (R)ight edges

coming out of the (E)nd vertex

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 66: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

Boundary edges: Have only have one incident face

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 67: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge

Boundary edges: Have only have one incident face

Wing edges are defined as though

the boundary was also a face

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 68: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2.

Note:If 𝑣 is the (S)tart of edge 𝑒, the

next CCW edge is on the (L)eft side

of 𝑒 and comes out of the (S)tart.

Otherwise it is on the (R)ight side

of 𝑒 and comes out of the (E)nd.

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 69: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2: Initialize: Choose the only edge coming out of 𝑣2 Do: Iterate CCW around 𝑣2 While: Haven’t cycled back to

the start edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 70: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2: Initialize: Choose the only edge coming out of 𝑣2 Do: Iterate CCW around 𝑣2 While: Haven’t cycled back to

the start edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 71: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2: Initialize: Choose the only edge coming out of 𝑣2 Do: Iterate CCW around 𝑣2 While: Haven’t cycled back to

the start edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 72: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2: Initialize: Choose the only edge coming out of 𝑣2 Do: Iterate CCW around 𝑣2 While: Haven’t cycled back to

the start edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 73: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2: Initialize: Choose the only edge coming out of 𝑣2 Do: Iterate CCW around 𝑣2 While: Haven’t cycled back to

the start edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 74: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2: Initialize: Choose the only edge coming out of 𝑣2 Do: Iterate CCW around 𝑣2 While: Haven’t cycled back to

the start edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 75: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2: Initialize: Choose the only edge coming out of 𝑣2 Do: Iterate CCW around 𝑣2 While: Haven’t cycled back to

the start edge

L RS E

S EL R L R

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2

Page 76: Subdivision Surfacesmisha/Fall19/19.pdf · Subdivision Surfaces Michael Kazhdan (601.457/657) Subdivision for Modeling and Animation, Zorin et al. 2000

Winged Edge (Example)

Find CCW edges adjacent to 𝑣2: Initialize: Choose the only edge coming out of 𝑣2 Do: Iterate CCW around 𝑣2 While: Haven’t cycled back to

the start edge

L RS E

S EL R L R

Computational complexity is proportional to the size of the output.

(Independent of the size of the mesh.)

e1

e4

e5

e6

e7e3𝐹1

𝐹2

𝐹3v1

v2

v3

v4

v5e2