PDA

View Full Version : Catmull-Clark Subdivision (Original Vertex)

appleGuy
02-04-2009, 03:50 PM
Hi,

im having a little trouble with movie the original vertex, based on the algorithm:
http://en.wikipedia.org/wiki/Catmull-Clark_subdivision_surface

Assuming I have a quad of: (-1, -1, -1), (1, -1, 1), (1, 1, -1), (-1, 1, -1)

Now say i want to re-position the top left vertex (-1, 1, -1)

**The centroid of the face is: (0.0, 0.0, -1.0)

**The Valence is 2

**The Average Of mid points connection vertex is: (-0.5, 0.5, -1.0)

If i plug those into the formula i get:
vp = (([0, 0, -1] + (2 * [-0.5, 0.5, -1.0]) + ((2-3) * [-1, 1, -1] ))) / 2
= ([0, 0, -1] + [-1, 1, -2] + [1, -1, 1]) / 2
= [0, 0, -2] / 2
= [0, 0, -1]

This is not the correct position for the original point however.

Please can someone tell me where im going wrong?

Thanks,

appleGuy
02-06-2009, 11:00 AM
Never mind :)

Y-tension
02-08-2009, 04:47 AM
I'm not a wizard of catmull clark subdivision though I have implemented a test program..But one thing seems wrong on first sight: centroid is at (0,0,0). Other than that, no time to read wikipedia right now...

appleGuy
02-08-2009, 08:02 AM
Its ok...

I figured out the problem. Catmull Clark Subdivision requires 2-manifold geomtery

sammie381
02-12-2009, 08:44 PM
Not necessarily.

You can still subdivide boundary edges to make them smooth using special cases.

sammie381
02-12-2009, 08:44 PM
I figured out the problem. Catmull Clark Subdivision requires 2-manifold geomtery

Not necessarily.

You can still subdivide boundary edges to make them smooth using special cases.

Jedimaster
02-14-2009, 01:35 AM
use CGAL.

appleGuy
02-14-2009, 11:52 AM
I figured out the problem. Catmull Clark Subdivision requires 2-manifold geomtery

Not necessarily.

You can still subdivide boundary edges to make them smooth using special cases.

Can you please elaborate on these "special cases"?

Thanks,

sammie381
02-19-2009, 06:11 PM
Probably better to just convert your model into valid geometry, before trying to subdivide it:

Like here: