CS 284: CAGD
Project Planning and General Schedule
Project Scope

Ideally, each project consists of three parts:
 some programming to implement some new capability,
 an interface to the SLIDE environment to make this capability usable
by others in a larger context,
 some demonstration of this new capability with some neat final result.

Keep the projects small and well focussed!
There are only about 5 weeks left after the formal project proposal;
so this does not allow to construct large and elaborate systems. Some of
the ideas below may be too ambitious for a complete implementation; but
you
can do an essential part for any one of them, and demonstrate that you
have mastered the basic concept.

Projects can be done alone or in pairs.
Obviously, I expect more from a team of two  about 50% more than
from a single person
(not twice as much,  since there is certain amount of overhead from
communication, sharing code, etc.).

Ideally projects should concern: 1, 2, or 3dimensional spline
manifolds or subdivision structures,
smooth implicit surfaces or point clouds. It could coprise tools to design, edit, optimize, or decorate such surfaces.
It could be some converter between two different
shape representations.
I would like to see some demonstrable program
that shows that you got
something to work based on
what you learned during this course.
General Schedule
Project Ideas
Written submission of two paragraphs describing TWO possible ideas
that you consider to do for your project.
  due in week 8; (counts for 2% of course grade).
A onepage written submission outlining your chosen project.
  due in week 9; (counts for 2% of course grade).
Project Proposal Presentation
A 5minute formal presentation in class of your chosen (and approved)
project.
  due in week 10; (counts for 8% of course grade).
Project Presentation and Demonstration
A 1520minute formal presentation in class of your project implementation
and results.
  due in week 15; (counts for 20% of course grade).
Project Report
A written documentation of your project and final results obtained.
  due in week 16; (counts for 8% of course grade).
Special Project Suggestions for 2006
 Subdivision with Texture Mapping. (1 pers.)
Implement a simple subdivision scheme and add texture coordiante
information to the vertices, which gets subdivided just like the
parameter domain.
However, a vertex may have to carry multiple texture coordinates for different faces so that you can create Escher tilings on surfaces of arbitrary genus.
 Flyover on Smooth Surfaces of Arbitrary Genus (1 pers.)
Create a moving viewpoint that moves along a geodesic line with a fixed offset above a smooth subdivision surface (Loop or CC).
A simple 2key or mouse based interface alows the user to deviate
slightly from the geodesic and curve it gently to the right or to the
left.
 Combination of the above two projects (2 pers.)
This will give the capability to skim over the surface of a planet with an interesting texture with a moderately high genus.
 Interactive Escher Tiler on the Torus. (1 pers.)
Inspired by the EscherSphere Generator, build an equivalent too that
allows to define one repetivitve tile on a torus, edit it, see the
changes at once on the whole torus.
In the end extract the prototype geometry for one tile, so that it can be realized on a rapidprototyping machine.
 CircleSpline Editor on the Sphere (1 pers.)
Implement the circlespline algorithm for a sphere and couple it with
an interactive user interface that allows to place and move a few
control points which then are interpolated by the circlespline curve.
Output a finely segmented polyline path in SLIDE format.
 Surface Modeling Based on a Point Cloud (1 pers.)
In the neighborhood of each point define a best fitting quadric patch
function. Form a surface with high continuity by overlapping and
blending these patches for all the points. Demonstrate smoothness of
the generated surface by coloring the surface according to local
curvature or by performing raytracing on a highly reflecting surface
mirroring an environment of straight lines (like the linear lights in
car design shops).
 Surface Optimization Based on a Point Cloud (2 pers.)
Add an optimization module to the above project that will incrementally
move the points in the cloud so as to minimize some global energy
functional.
 Surface Modeling with Implicit Functions (1 pers.)
Implement an efficient way to extract a smooth representation from a
sum of implicit functions. Create a simple editor to construct and
modify such surfaces in an interactive way.
 Surface Optimization Based on Implicit Functions (2 pers.)
Add an optimization module to the above project that will incrementally
change the parameters in the implicit function so as to minimize some
global energy
functional.
Other Possible Projects Concerning Curves

Geodesic Lines on a Given Surface (1 pers.)
A geodesic line on a surface is one for which its normal vector at
every point is in line with the normal vector of the surface; i.e., the
curve bends only as necessary to follow the surface, but does not bend
unnecessarily within the surface. Given an initial starting point and a
starting direction, draw a geodesic line onto surfaces composed of triangle
meshes or spline patches by calculating incrementally the positions of
subsequent Frenet frames. Use the calculated Frenet frames and the sweep
mechanism to draw a semicircular ridge of small diameter onto the surface.

De Casteljau on the Sphere (1 pers.)
Implement the de Casteljau algorithm on the sphere, using great circle
arcs instead of straight line segments. Then use these spline curves to
make a tool to interactively draw smooth splines on a sphere surface, and
sweep some crosssectional profile along it.

Global 3D Curve Optimization (1 pers.)
Find a good heuristic approximation to move the control points of a
curve in such a way as to minimize some functional over the arclength of
the curve, e.g., curvature squared, square of curvature derivative, torsion
squared, or combinations of such terms. Then change some of the constraints,
e.g., move the endpoints or some intermediate points to be interpolated,
and watch the curve adjust to the new conditions within seconds.
Other Possible Projects Concerning Surfaces

Interpolating Trianglebased Subdivision Surface (2 pers.)
Try to find a way to make a smooth subdivision surface by carrying
only enhanced triangle information from one generation to the next. Add
suitable parameters to each triangle vertex, e.g., averaged normal vectors
and some other values indicating the velocity distribution in the tangent
plane. It should then be possible to construct the next generation of triangles
from this information associated with the three vertices alone.

Enhancement to Pointshop 3D (1 or 2 pers.)
Make some enhancement to this downloadable software, perhaps to do
visualization of intrinsic surface parameters, or carry out surface optimization,
or link to rapid prototyping or manufacturing.

Global Surface Optimization (1 pers.)
Use Brakke's Surface Evolver to make some minimal surfaces such as
Costa Surfaces or some other Minimal Energy Surfaces.

Boy's Surface (1 pers.)
Make a nice, G2smooth, 3fold symmetric representation, including
a nice "regular" texture of Boy's surface.

Topological Surface Morph (1 pers.)
Deform a rectangular array of BSpline patches so as to form one third
of a Boy surface (and from 3 such pieces make the whole surface) similar
to the deformation of one rectangle into a Klein bottle. Generate a sequence
of still images or a 10 second MPEG movie to dynamically demonstrate the
necessary defomation.

Moebius Strip + Moebius Strip = Klein Bottle (1 pers.)
Make a series of shapes appropriately rendered that demonstrates that
a Klein bottle can be made from two Moebius bands.

Moebius Strip sewn together properly = Klein Bottle (1 pers.)
Make a demonstration sequence that shows that a suitable cut on a
Klein Bottle can result in a single Moebius strip.
Other Possible Projects with Emphasis on Interaction

Global Curve Optimization (1 or 2 pers.)
Build a waveletbased
curve editor that allows global optimization of 2D or perhaps 3D curves
at interactive speeds.

Teaching Demo for Rational Splines (1 or 2 pers.)
Extend the kind of tool that you have played with in the first few
programming assignments to include the domain of rational curves; provide
a user interface that also allows to conveniently explore the effect of
changing weights.

Teaching Demo for Surface Patches (1 or 2 pers.)
Create a tool similar to that which you have played with in the first
few programming assignments about curves to provide a teaching and demonstration
environment for BSpline and/or Bezier patches, including a suitable user
interface and sliders for setting the various parameters.
Other Possible Projects Leading to PartFabrication

From Implicit or PointCloud Representation to SFF (1 or 2 pers.)
Build a converter from an implicit or pointcloud representation of
a surface to the slice description needed for rapid prototyping with layered
manufacturing, e.g., based on marching squares in each slicing plane.

Model for a Minimal Surface (1 or 2 pers.)
Make an SFF model of the minimal surface that results when an interesting
knot (say a figure8 knot or a torus knot) is dipped into a soap solution.
Use the surface evolver or write your own surface "tightener."
Back to current lecture
Page Editor: Carlo H. Séquin