Subdivision NURBS: Opensource implimentation

Ayam, an opensource nurbs modeler has added subdivision nurbs, this has advantages of Subsurf and Nurbs

If there wasnt loads of other stuff to do this would be a fun project.

There was a thread started about this back in May. If you haven’t read through the thread, the author of the paper, tjc, answered some questions and explained the concept.

Not saying this wouldn’t be “yet another great addition” to blender but, i assume we’d get the option to keep using subsurf?

FishB8, ah, should have searched for the thread :/, still posting when some paper is released is only useful if devs can understand it enough to implement it. When theres some code out there you can sometimes get away with porting it and not have to understand its internals .

Borgleader, yes would have to be added to Catmull-Clark and Flat,
If its added as a Subsurf option it would mean a developer would not need to recode something as complex as the subsurf modifier. They’d only have to use the method Ayam uses with our subsurf to calculate point interpolation.

we already have a new Nurbs tools project going on
and hopefully will have it in 2.5 but don’t know when
and it will have some pretty new good tools

Ex: Nurb surfaces where you can make a hole in it ect…

i think it was Eman who was in charge last spring
but right now not much news on this project
just hope we get it in 2.5 as soon as possible

see site

happy blendering

Looks like it’s there now…

That’s the branch syncing with the trunk, not the branch being merged into the trunk.

While important, nurbs gsoc project is very different from Subdivision NURBS.
Subdivision NURBS could be added as an option to the subsurf modifier option if I’m not mistaken.

I think that sounds really useful, this would allow me to get really smooth round surfaces even up close without ridiculously high polycounts.

Are you talking about true nurbs or the version Maya has had forever where it tessellates it?

ideasman42: but isn’t the advantage of their method that you can use regular NURBS features, like cutting, making holes etc on arbitrary surfaces? If there are no NURBS tools, what is the advantage over regular Catmul-Clark?

NURBS always have to be tesselated to be displayed, just like vectors have to be rasterized to be drawn. The advantage is that you can rasterize them at any level of detail you’d like.

Hey William, now Im showing my lack of knowledge about nurbs but here goes…

  • If you look at the examples a 4 sided cylinder is much more round then with subsurf
  • You can smooth over more polygons, giving smoother results then current subsurf.
  • Some 3D app I saw used mesh/nurbs modeling and touted this a great thing for industrial design, (showed making an eletric teapot), someone how knows more then me should explain why, but IIRC its because SubSurf is always an approximation whereas with nurbs you can find the mathematically exact point on a surface, whereas subsurf you cant do this.

Here are the videos

Heres the thread

Though not sure if this is the same as what Ayam added.

I’ve tried the application provided with the paper a while back (it comes with the Suzanne model), and there is one thing that bothered me about it. The algorithm only supports odd degrees, and to me degree 3 feels not smooth enough, leaving sharp corners, while degree 5 smoothes away detail too much. Catmull-Clark seems to be somewhere inbetween those two, and maybe I’m biased because of that, but it seems to me that is the right spot.

I think I am probably the most qualified person to answer that here.

Subsurf is not bad but with subsurf you can only model smooth surfaces
but not cut or trim it.

If you use NURSB smoothing (like in Amapi or Catia) the low polygon mesh
is used to generate a NURSB patch object on the fly which can be trimmed
or holes cut in where you want WITHOUT the need to model the hole by hand
and changing the topology of your subsurf object.

This basically is combining both approaches into one workflow.

But code was available from the original researchers web site. GPL’d with doxygen documentation. There’s a working binary for windows there too. That was part of the reason I posted.

I think some of the confusion in this thread can be cleared up by reading the original one.


this is not quite correct you can exactly evaluate the position of the limit surface, its tangents and curvature on faces that don’t contain irregular vertices, if the face in the base mesh contains a irregular vertex things a a little more involved, as you have to subdivide until the point you are looking at is in a face with regular vertices, but this can be done efficiently on the fly without subdividing the whole mesh but calculating a certain power of the subdivision matrix. It’s discussed in two papers by Jos Stam (or for Loop subdivision surfaces (the easier one) and the other for the Catmull Clark case)
“Exact evaluation of Catmull-Clark subdivision surfaces at arbitrary parameter values”, Jos Stam, Proceedings of the 25th annual conference on Computer graphics and interactive techniques. 1998, 395-404
Evaluation of loop subdivision surfaces, Jos Stam, (can’t find the proper citation right now, it’s in the Siggraph '98 course notes on subdivision surfaces)


Pretty much, and that was like heaven coming to earth for mechanical modelling, as the strenghts of SubD are the weakness of NURBS and vice versa.

To quote from the original thread,

The original thread really is worth reading.

This would be really cool :smiley:

Though, if all the options should be possible like shown in the vid/ the paper, simply adding this as a subsurf-option wouldn’t do it, as far as I understand…

Subdiv surfaces have always seemed like the best solution for most things - the modelling is very flexible - but the more projects you use them on, the more it’s clear to see they make life much harder in a lot of circumstances.

Even something as simple as a cable, you really can’t model that with subdivs because the shape just collapses if you have an extreme angle. This requires modelling certain objects with different geometry types and that has implications for dynamics/collisions/particles.

I think a unified surface type that gives you the control to model any object you could need would be a huge benefit. Using Catmull-Clark where making a hole in an object disrupts the rest of the model is so frustrating to correct, especially if it’s a well-defined inorganic shape.

But then again, as pointed out, it will only be another surface type that co-exists with the others, which to some extent defeats the points of having a unified type. Given that Blender NURBs support isn’t all that great, this suggestion seems more like if anybody ever works on NURBs, this would be a good way to go rather than say a replacement for Catmull-Clark.

NURBs implementations in most programs are fairly poor. Even Maya’s sucks. I probably shouldn’t say ‘even’ because Maya sucks at a lot of things and I shouldn’t perpetuate the delusion that because it’s the industry standard that it is expected to do everything well. This technique would at least get round a lot of the inherent flaws with NURBs and so it wouldn’t seem so much like a pointless venture implementing it.

As always with these projects, it’s easy to have opinions over it being a good or bad idea when someone else has to do all the work. In that light, yes I’m happy to spectate while someone painstakingly implements a whole new surface type. :smiley: