CS 284: CAGD 
Lecture #15 -- Mon 10/19, 2009.

PREVIOUS < - - - - > CS 284 HOME < - - - - > CURRENT < - - - - > NEXT


 SS'98:  Subdivision Surfaces in Character Animation (Sharp Features)

Warm-up: Discuss these points with your neighbors...

  1. What subdivision scheme are they using ?
  2. What are the key additions to the basic scheme that they have made ?
  3. Why do they prefer quadrilaterals ?
  4. What is the basic approach to creating semi-sharp edges ?
  5. What is the underlying model for cloth simulation ?
  6. How is excessive wrinkling of the cloth avoided ?
  7. What are virtual threads ? -- and what is their purpose ?
  8. What is the data structure to make collision detection efficient ?
  9. How is it made possible to apply texture maps and procedural shaders ?
  10. What was one of the general implementation requirements for the Pixar production environment ?

Paper Presentation  by Alexei Baboulevitch

Subdivision Surfaces in Character Animation by DeRose, Kass, and Truong

More on Subdivision Data Structures and Texturing

Fancy texturing on arbitrary surfaces (next)

Craig Kaplan posed the question nicely...
and also gave nice answers (image), (SIGGRAPH'07 sketch).
Useful in this context: "Globally Smooth Parametrizations..."

Texture-Mapped Subdivision Surfaces of Arbitrary Genus

The construction of a subdivision surface starts with a simple polyhedron, which is then iteratively refined and smoothed by subdivision.
The texture coordinates applied to the original polyhedron are simply subdivided in the proportion of the topological splits executed.
Problems may arise in assigning texture coordinates, if the surface is not a simple cylindical or toroidal domain.
Whenever the genus of a surface is different from 1, then you cannot regularly tile this surface with quad tile with all valence-4 vertices.
A cube has eight valence-3 vertices, and one geometrical vertex will have to carry different texture coordinates for different faces,
(thus it might be better to carry the texture coordinates with each face, rather than on a shared vertex).

To model a "spherical" ball we may start with a
simple cube; but the "cubist" fish shape will extend beyond a single face and overlap into two adjacent faces.

Thus the "fish" texture pattern that get's cut out by any cube face is missing the nose and the tail, but gets those two pieces stuck in from the two sides.
Since these pieces belong to some other fish, they be be of different colors; different cube faces may have different combinations of colors.
Thus, multiple copies of one B&W texture outline, filled with different colors, are needed for the different sides of the cube.
On the cube itself, the texture coordinates will then have to be rotated so that a seemless connection between the different patterns and colors occurs.
In some cases, some of the tiles may also have to be mirrored! (
See the actual texture coordinates used).

Here is another textured example of genus 2.  --  And another one of genus 3.

More complex examples of a genus 5 surface are discussed here.

Here are some actual, Escher-tiled objects,
fabricated on a Fused-Deposition Modeling (FDM) rapid prototyping machine.

Escher tiling with 12 lizards
(tetrahedral symmetry)

Escher tiling with 24 birds
(octahedral symmetry)

Tiling with 60 butterflies
(icosahedral symmetry)
48 starfish on genus-7 surface

Your Project Ideas ...

Reading Assignment:

Texture Synthesis over Arbitrary Manifold Surfaces  by Wei and Levoy
Focus on the following issues:
  1. How do the sizes of the triangles in the original mesh affect the outcome of the generated texture pattern ?
  2. What factors affect the quality of generated texture ?
  3. To what degree does randomness play a role in this algorithm ?
  4. What is the "neighborhood" within which a new pixel is evaluated for its "fitness" ?
  5. How are anisotropic texture patterns brought "into alignment" with neighboring texture patterns ?
  6. What can be done to make the algorithm run faster ?

Ongoing Programming Assignment:

Build a data structure for simple triangle subdivision, useful for either the Loop or Zorin scheme.

Use the data structure discussed in class.
Assume that you start from a complete, hierarchically flat mesh (you may get this out of SLIDE; save as SIF).
Test your program on your designs of a smooth genus-4 surface.
(In the next phase of the assignment we will add texturing to it).
For display use what is most convenient for you
(open GL, Java 3D, SLIDE?)

By MON, Oct. 19, have the whole thing running; send me a brief description of your encoding scheme and your data structures.
If you get far enough, send me also an image of your genus-4 shape after a couple of subdivisions.

Before MON, Oct. 19, e-mail me a couple of ideas (a few sentences) of what you would like to do.
By MON, Oct. 26, the final more detailed, written proposal will be due.

On MON, Nov. 2, you will make a formal 5-minute presentation in class.

Previous CS284 projects

PREVIOUS < - - - - > CS 284 HOME < - - - - > CURRENT < - - - - > NEXT
Page Editor: Carlo H. Séquin