Checkpoint Report:
Dynamic Parametric Subdivision
Main Project Page

What we did so far:

First of all, we actually decided on a topic for our project. This took much longer than expected because we were struggling to decide between dynamic loop-subdivision over a triangle mesh and dynamic parametric subidivision over bezier patches. At first we thought the loop-subdivision would be better because triangle meshes were much more commonly used, but it turns out that patches are actually quite common in the last decade and is a better fit for subdivision algorithms.

Second of all, we had to do a lot of research to actually understand what the paper on Dynamic Subdivision over Parametric surfaces: http://research.microsoft.com/en-us/um/people/cloop/EisenEtAl2009.pdf

Here are some of the resources we found that helped explain Bezier Patches and their subdivision process:

http://www.gamedev.net/page/resources/_/technical/math-and-physics/bezier-patches-r1584
http://www.idav.ucdavis.edu/education/CAGDNotes/Bezier-Patch-Subdivision/Bezier-Patch-Subdivision.html
http://web.cs.wpi.edu/~matt/courses/cs563/talks/surface/bez_surf.html
http://www.cs.unc.edu/~dm/UNC/COMP258/LECTURES/Lec10.PDF

Last of all, we wrote code to load and render bezier patches (although in just one type of format). There are also some basic functions for bezier patches. Here is a picture:

Goals and Deliverables:

Due to a change of plans, we are slightly behind schedule. As such, we don't have subdivision yet. However, we believe we'll still be able to produce all the deliverables in time. See the new schedule for a list of goals we hope to hit for May 10th.

It would be nice to try a different error metric function if we have extra time. It would also be nice to be able to convert a mesh file to a patch file for more a more robust program.

Concerns:

We might not finish in time.

We're concerned about whether to render on the Quadro or the GTX480. It should be much faster to render on the GTX480, except we're not sure how to do that. All the OpenGL calls are currently passed to the Quadro card instead. Also, we'd like to test the timings of our subdivision with the fixed functionality tessellation in OpenGL 4.0. However, the Quadro card only has OpenGL 2.0.

We know that our subdivision algorithm is view dependent, but we're not sure why. The algorithm transforms everything using a Model View Persective Matrix but then tests error differnce in terms of number of pixels. We're not even sure if the algorithm is taking depth into account for error calculation.

New Proposed Schedule:

34848 80ms
Half Week What Jeffrey Does What Albert Does
Plane 1 1 1
Bigguy 2900 1
Forest 55080 154979 180ms