Hope this might be of interest to some people here. I came across an interesting video at Vimeo about a subdivision method where the surfaces can represent any odd degree NURBS patch exactly. Source code seems to be available.
I can’t link directly but a search for “NURBS with Extraordinary Points: High-degree, Non-uniform, Rational Subdivision Schemes” and Tom Cashman should bring it up.
Not sure I grasp it completely.
I did a search and couldn’t find it mentioned before.
It’s called “NURBS with Extraordinary Points”. I think extraordinary points are typical of subdivision surfaces. It looks to me like it’s using Nurbs maths to produce the subdivision surface. They’ve been squished together.
it clearly states that this is Nurbs of some sort
I’m not too clear on anything about this.
This is from the paper:
“With the introduction of subdivision surfaces which have the full
capabilities of NURBS, it is possible that end users need no longer
be presented with mutually exclusive surface primitives for NURBS
and Catmull-Clark subdivision surfaces.”
i’ll ask the DEv for Nurbs ot at leat have a look and let them decide if it is usefull
Cool. Hope it is.
Hi, I’m the primary author on this paper. Thanks for taking a look! I thought I might be able to clear up some of the confusion in this thread.
@Sleeper: it’s fair to think of these surfaces as NURBS and subdivision surfaces “squished together”. But the new surfaces are also “actually NURBS”. It all hinges on these ‘extraordinary points’ (I think the T-splines people call them ‘star points’; it basically means points which are connected to a number of edges which isn’t 4). In any part of the surface without extraordinary points, the new surfaces are exactly the same as NURBS. In bits of the surface which are close to extraordinary points, the new surfaces work a bit like subdivision surfaces. Does that help?
So to be brutally reductionist it’s NURBS with subdivision-ish bits?
Sure. In exactly the same way, actually, that Catmull-Clark subdivision is “uniform bicubic B-splines with subdivision-ish bits”. In fact, in both cases the subdivision-ish bits are made up of an infinite number of B-spline patches, so to be even more reductionist:
Catmull-Clark subdivision is “uniform bicubic B-splines, with a way of generating smoothly-joining uniform bicubic B-spline patches around extraordinary points”
The new surfaces are “NURBS, with a way of generating smoothly-joining NURBS patches around extraordinary points”
@el_diablo, The new surfaces can handle trims and uv maps in exactly the same way as existing subdivision surfaces (or, in regular parts of the surface, exactly the same way as NURBS). I don’t think Blender has any trimming capabilities for NURBS or subdivision surfaces, but there’s no technical barrier here. UV maps are a way of assigning a parametrization to a surface, and the paper does talk briefly about the impact that our method has on the natural parametrization that comes directly from the surface definition (see Figure 13 in the paper).
Sure. In exactly the same way, actually, that Catmull-Clark subdivision is “uniform bicubic B-splines with subdivision-ish bits”. In fact the subdivision-ish bits are made up of B-spline patches as well, so to be completely reductionist:
Catmull-Clark surfaces are “uniform bicubic B-splines, with a way of generating smoothly-joining uniform bicubic B-spline patches around extraordinary points”,
the new surfaces are “NURBS, with a way of generating smoothly-joining NURBS patches around extraordinary points”
@RickyBlender: I suspect the Blender documentation wiki would give a better explanation than I could here!
@el_diablo: Trimming curves can work for subdivision surfaces in almost exactly the same way as NURBS. Most modelling applications don’t support trimming curves for subdivision, but there’s no thereotical challenge here. As for UV mapping, that works in just the same way as current subdivision surfaces. In fact UV mapping is a way of allocating a 2D “parametrization” to the surface, and we do talk briefly in the paper (see Figure 13) about the impact that our method can have on the “natural parametrization” that comes from the definition of the surface (i.e. without having to do any UV unwrapping).
Right, okay. I can’t help thinking that part of the confusion here is caused by how one usually interacts with these surfaces when modelling. That and a lack of maths.
Subdivision surfaces, especially the way they’re usually implemented, just look like a way of dividing up the geometry of a poly mesh. If you had the time you could build them manually. I don’t think there is an awareness that you’re actually dealing with curves. You only ever experience it as approximating a curve, the more you divide it up. If when you added subdivision to a cube, BAM, a sphere popped up the link would be clear.
As for patches, hmm, well the NURBS guys talk about them a lot. I thought they referred to joining separate curves. Looking at Wikipedia’s description of the Catmull-Clark recursive evaluation algorithm there isn’t any mention of taking different action at extraordinary points. So I assume the algorithm inherently produces these patches?:spin:
Blender, Lightwave, Modo, or C4D all use what we call Subdivision Surfaces with Catmull Clark.
Maya on the flipside has a different subD system which works different. Instead of global subdivision
like in Blender with levels you can make local subdivision of just a face or selected faces.
This gives locally more points to work with.
This system works actually similar to multires because you can switch forward and backwards in the
levels. However Mayas SDS system only I think has 3 levels. However they ALWAYS result in 100% smooth surfaces.
What is Subsurf in Blender is something like SmoothProxy in Maya.
Maybe this is also why Maya converts SDS right into NURBS.
I could be wrong (often am) but that sounds like just a more sophisticated way of controling it.
However they ALWAYS result in 100% smooth surfaces.
Right. As far as I’m aware Maya uses Exact Evaluation. Whereas Catmull-Clark is a recursive algorithm (been looking stuff up). Blender’s implementation requires you to set the level of recursion. It’s that which disguises the fact you’re dealing with curves.
What I was actually confused about is the patches bit.
If you check Wikipedia’s Nurbs entry, then you get the definition you get from the Nurbs modelling guys. It’s a separately modelled piece of an object that you want joined together. It goes on to discuss different types of join.
This is all very well but I can’t reconcile it with CC subdivision. But if you look at this definition from a 3D scanning company you get something that makes more sense. Only the definition itself is poorly worded and ambiguous in meaning.
It states that this use is specific to them but it’s not clear if that just refers to that paragraph or the whole thing. It then goes on to say that Patch doesn’t mean the same in CAD and CGI. Does that mean that CAD uses a different definition to CGI, or both use a different one to the one they’ve just defined?