Paper: NURBS with Extraordinary Points: ... Non-uniform, Rational Subdivision

In the context of Catmull-Clark subdivision, there is a B-spline patch corresponding to almost every quadrilateral face. These all join together smoothly (“C2”, or “with curvature continuity”).

The exception is the faces next to extraordinary points. Here subdivision works by introducing a new ring of B-spline patches at every subdivision step. These all join smoothly to the patches in the regular part of the surface, and also to each other.

I’ll try to explain how this works: it’ll be easier to understand if you draw yourself a diagram which includes five (say) quadrilateral faces that all meet at one point. Now at each subdivision step, imagine taking each face which lies next to an extraordinary point and splitting it into four. Three of the four quarters in each face are no longer adjacent to an extraordinary point. So these faces will now become B-spline patches. At each subdivision step, a ring occupying roughly three quarters of the faces next to an extraordinary point gets filled with smoothly-joining B-spline surface.

So the ‘hole’ surrounding an extraordinary point shrinks to about a quarter of the size at each subdivision step. Now imagine iterating the same process a few times. The hole quickly becomes very small. This is how the mathematics of subdivision surfaces works, for both Catmull-Clark and the new surfaces.

that’s beginning to give a good description

please can you show a little dwg of this

seems very intersting - annd pic is worth 1000 words

Thanks & appy blendering

I’ll take a crack at clearing up some confusion (hopefully I won’t add to it):

  1. Subdivision surfaces are not just polygons subdivided a whole bunch. Subdivision surfaces are actually the surface you get if you subdivide an infinite number of times, leading to a genuinely smooth surface. But like other smooth surface representations (including nurbs) they generally have to be tessellated into polygons. Subdivision surfaces are convenient to tessellate because of how they are calculated: the “infinite” subdividing can simply be stopped early (say at 3 itterations), and the result is a reasonable polygonal approximation of the surface. With NURBS you would have to tessellate more directly.

  2. Catmul clark subdivision surfaces are actually equivelant to bezier surfaces, if I recall correctly, excepting that subd surfaces can have arbitrary cage toplogy. But basically they’re just a different way to calculate bezier.

  3. It then follows that NURBS would likely also be possible to calculate using a subdivision surface scheme, just using different subdivision rules, bringing NURBS the benefits of subdivision modeling (or subdivision modeling the benefits of NURBS… same thing, really). But of course the maths are very difficult.

Many thanks to Tom and his colleagues for doing the hard work to figure out how to do it! :slight_smile:

Thanks Cessen, for bringing in a voice of educated reason on this topic! I have found your consice explanations of this confusing topic in other similar threads to be very helpful, as is this one. Any chance that you’re willing to drop this bit of juicy geometry deliciousness into blender’s codebase as a supplement to the subdiv modifier? I don’t know if you’re one of blender’s devs, but maybe you know of one who’s in need of a lil’ ol’ project to spice up 2.5 even further? :smiley: :yes: ?

@Cessen - Thanks for that. But whenever I think I’m getting a grasp on this someone pops up to say something which causes more confusion (but I’ll ignore the NURBs integration thread for now).

Okay one more time. Catmull-Clark sub-division; each control face defines a B-spline patch; unless it is part of an extraordinary point. Each time you subdivide the geometry you get closer to the actual curve. At infinite subdivison you reach the curve.

These sub-division NURBs define actual NURB curves, and in a simillar way the geometry gets closer to the actual curve the more you sub-divide it.

@tjc

Right, extraordinary points. Neither system can actually deal with them. So instead smaller curve patches are produced with each sub-dividion, shrinking the problem point, indefinitly postponing having to deal with it.

I’m a bit unclear here. Is the problem with extraordinary points constructing the geometry? Or is it in constructing the curves mathematically? I guess what I’m saying is when you construct C.C. Subdiv. extraoridnary points in Blender the polys seem to meet up and don’t have the apperance of a hole. Is the problem hidden?

Well, that’s how they deal with them :). But yes, you’ve got it.

Mathematically, the problem is that the underlying smooth surface type (for Catmull-Clark, it’s uniform bicubic B-splines) needs a certain number of points (for Catmull-Clark, a 4x4 grid of 16 points) in order to be able to define any single patch. Next to extraordinary points the rectangular grid has broken down, so we haven’t got the required number of points to create a surface patch (or “don’t know where to get them from”, if that’s easier to think about). Subdivision gets around that problem by creating new points.

Yes, in effect. Cessen’s post was pretty accurate (the only real quibble I have is about the distinction between Bezier and B-spline surfaces, but leaving that aside), so I’ll quote him:

In Blender, you don’t see the hole because you’re not looking at the “infinitely subdivided” smooth surface. You’re looking at a control mesh that has been subdivided a few times; and the control mesh doesn’t have a hole around extraordinary points. If, instead, Blender drew “the smooth surface it could create without subdividing”, you’d see the hole. Then if we subdivided the control mesh, you’d also see the hole shrinking.

To bring this full circle, I’ve noticed that some other threads talk about Maya’s subdivision surfaces, which always look smooth. That’s because Maya doesn’t render the control mesh (as Blender does). Maya’s evaluation is closer to the “B-spline surface with holes” concept that I’ve just been describing. The difference is that Maya also uses a large number of subdivision steps to fill in the hole. They keep the computation efficient using a technique called exact evaluation (which is mentioned in our paper in the caption to Figure 12, and was originally introduced by Jos Stam).

A-ha! I think I have got it. Well the basic outline anyway.

Well, quite :). Very Zen.

Then if we subdivided the control mesh, you’d also see the hole shrinking.
The poles have holes. I’m going to think of this every time I see one.

They keep the computation efficient using a technique called exact evaluation (which is mentioned in our paper in the caption to Figure 12, and was originally introduced by Jos Stam).
Grrr :mad:. Maths patents.

Thank you for your patience and time in explaining this. Now I’m clearer on what’s going on I going to take another crack at reading your paper. See how much I can follow.