PDA

View Full Version : Loop Subdivision



mxrider
04-28-2010, 10:35 AM
I am trying to create a program to subdivide 3D surface meshes using the Loop Subdivision Algorithm (http://en.wikipedia.org/wiki/Loop_subdivision_surface).

Obviously the meshes are made exclusively out of triangles.

I was curious if anyone here has worked with this algorithm or has any good resources. Google and Wikipedia aren't much help, as I haven't been able to find a good step-by-step breakdown of the algorithm anywhere.

Thanks.

ZbuffeR
04-28-2010, 11:44 AM
You did not search very hard, in the first result pages there are a few detailed pages :
http://2n1.org/opengl/proj2/
http://www.its.caltech.edu/~matthewf/Chatter/Subdivision.html

mxrider
04-28-2010, 04:04 PM
Thank you for the reply. Actually, I have seen both of these links already.

The first link is speaking primarily about how to use an existing program and doesn't fully explain the algorithm (I understand how the triangle subdivision works on a per-triangle basis, but how do you apply it to the larger polyhedron).

The second link is good, but definitely too vague. It covers what to do more or less, but not how you would go about doing it.

I would really like to see some kind of pseudocode or step-by-step instructions for how to apply this algorithm in the real world.

ZbuffeR
04-29-2010, 12:23 AM
Second link outlines the weights of new and updated vertex positions.
First link has complete source code, and loop.c seem fairly readable.

You mean you have difficulty with walking around the vertices/edges/triangles of the model ?

Mikkel Gjoel
04-29-2010, 01:38 AM
The Real-time rendering (http://www.realtimerendering.com/#curves)-book is your friend. Go get it! Depending on how fast you need the subdivision to be, versus how much time you want to spend implementing it, this is the fastest way to do subd:
http://www.davidbrickhill.com/Papers/Subdivision/brickhill_subdivision.pdf

If you want it really fast, you should be using the GPU of course. Here is a pre-geometry-shader version producing catmull-clark surfaces:
http://www.multires.caltech.edu/pubs/GPUSubD.pdf

Today, you could do it using either geometry-shaders, or more better, the new tesselation-units on dx11-level cards.


Hope this helps.