Contrib / SurfacesProjectsBlogFebruary 9,2009 by bfield (link) When I did subdivision for 559, the data structure I used for storing the mesh was a doubly connected edge list (DCEL). It's basically a half-edge structure (I believe the doubly-connected part comes from the fact that you connect the two halves of the edges). Searching for that data structure might be useful. One thing that might prove useful if you try implementing any of these yourself is to write some testing code to make sure certain invariants are always true for your mesh (the twin of a edge's twin is itself, every edge has a valid twin, traversing the next pointers always keeps you on the same face, etc). This would've been helpful for me to hunt down inconsistency bugs in your code (especially if you are planning on updating it in place). February 8,2009 by alex (link) Going to try to implement a general mesh data structure, probably the half-edge. This is probably a good place to start thinking about the design. February 6,2009 by aderhold (link) I started my reading by just reviewing the surface-related reading from 559, and then moved on to a high-level reading of the SIGGRAPH subdivision course and a paper on mesh data structures. For project ideas, I think the idea of adding Catmull-Clark subdivision to an open source library sounds both interesting and feasible. I'll look into that more this weekend. February 6,2009 by bfield (link) My P1 reading I'm probably going to be doing something involving 3D surface point labeling. The basic problem is figuring out the best (or possibly most efficient) way of labeling some set of points on a surface subject to some set of constraints. February 5,2009 by cory (link) Should get these initial posts out of the way so we can Discuss things sooner February 3,2009 by alex (link) As Mike mentioned: http://www.cs.nyu.edu/biermann/subdivision/ It does rely on some outside resources that I've been having a bit of trouble with, but I thought I'd share the link if anyone wanted to try their luck with it. February 3,2009 by gleicher (link) Dealing with surfaces is clearly a broad topic...
I had (mistakenly) suggested that subdivision libraries would be easy to find. TriMesh2 has subdivision, but only for triangles. OpenMesh (openmesh.org) has really nice general mesh data structures, but i'm not sure it has subdivision mixed in. Alex found another, older library as well. You might want to look around for code infrastructure. Adding subdivision support (say catmull-clark) to a general mesh data structure library could be itneresting. Alternatively, the CGAL library includes a ton of stuff. You might spend the entire semester just learning your way through it. There are SIGGRAPH course notes reader:SIGCourses/CGAL.pdf Starting with OpenMesh, and adding some of the central mesh operations (subdivision, smoothing/decimation, cutting/drilling) might be a good place to start a project. |