CS 284: CAGD 
Lecture #13 -- Mon 10/12, 2009.


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

Preparation: Leif Kobbelt: "Root-3 Subdivision", Siggraph 2000

Self-test: Did you get the important pieces of information from the paper?

Topic: Subdivision (cont.) 

Discussion of the Root-3 paper:

The basic root-3 scheme.
Typical mesh generated.
The "rotation" implied by a single subdivision step.
Adaptive refinement to different levels -- may cause cracks.
Bad triangles or a large "transition zone" are generated to reach a desired deep level of subdivision.
Root-3 scheme has no crack problem and generates good transition zones.
Nice adptive refinement meshes on "the bunny".
Maintaining smooth boundaries in the root-3 scheme.
Forming cusps or creases by joining two patches along a common boundary curve.
The root-3 scheme allows finer gradation of uniform subdivision than the Loop scheme.

How would you do adaptive refinement in your own quad scheme ?

Your Genus-4 Surfaces and Loop Subdivision

Some had trouble with the SLIDE code when running Loop subdivision.
There are a couple of SLIDE execs in     http://www.cs.berkeley.edu/~sequin/CS284/CODE/
slide_subdiv.exe
slidefix.exe
They work on my computer with many of the subdivision types. 
"Corner-rounding-sharp-loop" seems to work most effectively. Good luck!
-- Hopefully, your own code will do better!!

Mesh Data Structures

Tailored to 2-manifolds. Goals: efficiency, robustness.

Winged-edge data structure for orientable 2-manifolds (Baumgart)

-- describes a non-hierarchical boundary representation.
-- every edge connects to exactly two polygons, one on each side.

Half-edge data structure (e.g. http://www.flipcode.com/articles/article_halfedge.shtml)

-- a lean and regular variant for 2-manifolds.
-- can  use fixed-size data structures, even if valences and number of sides in meshes are not all the same!
-- in the triangle subdivision process, every half-edge gets subdivided, and new pairs of half-edges get introduced for the new central triangle.

A lean triangle hierarchy: just enough to do the dyadic Triangle subdivision for your homework

-- vertex list
-- triangle list (referencing the vertex list); each triangle also carries: surface pointer (material,color)
-- just enough connectivity information to find all vertices needed for the smoothing or interpolation step.
-- probably best to keep all subdivision generations side by side.


Reading Assignments:

Interpolatory Root-3 Subdivision by Labsik and Greiner

New Homework Assignments:

Programming:  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 WED, Oct. 14, send me a description of the main constructs in the data structure that have chosen to build.
(Think through the issue, how you will find all the neighboring vertices that are needed to calculate the new averaged vertex positions!).

By MON, Oct. 19, have the whole thing running; send me an image of your genus-4 shape after a couple of subdivisions.

COURSE PROJECTS:
By MON, Oct. 19, send me a couple of ideas (a few sentences) of what you would like to do.
By MON, Oct. 26, the final more detailed proposal will be due.

Paper Presentation Assignments  (WITH A TENTATIVE ORDERING OF PRESENTATION SEQUENCE)


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