Better curve surface support

I think this is a must have for this project. After all nearly all “product visualization” kind of use will have trimmed surfaces. If we don’t support trimming, then blender nurbs surface as-is would be enough.

Humm this needs some investigation. the soc 2014 nurbs branch has a very raw support for trimming in UV editor (because those p-curves are in uv space). Some code can be reused, but I’m not entirely sure.

This might come a bit later but I think it will sure include such functionality. @HooglyBoogly suggested such as well.

I think the stuff here is a bit out of scope for this particular project which is mainly aimed to provide complete support for trimming and basic edition for nurbs surface. There are a lot of problems within these modelling tools, even in commercial software, a simple chamfer could break them easily. And there’s these frequently used G0/G1/G2 whatever continuity thing… OpenCascade can handle those curve fitting operations but for the moment I don’t think this is blender’s main focus. Parametric tools like FreeCAD has some ability (although it still largely lack support for 3d curve/surface editing).

TSpline may be closer to the goal here (super hard to implement and maintain one)? But in my experience, other than cases where curvature continuity is a strict goal, simple subdiv surface would be enough in most scenarios even when it’s a very complex shape, because catmull subdiv surface can largely be considered as a type of nurbs with different pole/knot configuration. TSpline can seemingly provide [some] combination of traditional nurbs and subdiv surface in terms of modelling mentality, however the T junction thing isn’t perfect and behaves largely like the same junction in subdiv, a good example would be to model a circular hole on a uv sphere. TS will still distort surrounding surfaces, just like subdiv.

My math isn’t this good… Inverse engineering is another huge topic tho, I’m curious if there will be a convenient way to mathematically convert between these two representations, because then it will be so much easier to create free form shapes.

2 Likes

Hi. We made several free NURBS file format conversions for testing purposes some time ago, could be useful.

Some test results

3 Likes

Actually, some commercial packages have implemented this conversion between SubD Mesh <> NURBS using Opensubdiv. They somehow leveraged the Opensubdiv algorithm to do this, but this is different from using Opensubdiv on meshes, like it is currently implemented.

I think @JLBohm has a realistic agenda here. I would like to add an alternative path.

Curves & mesh modeling
Because NURBS modeling is very complex (also mathematically) and there are lots of things that could break (fillets are notorious, alignment is too). It may be worhwile considering building upon the NURBS curves as tool for mesh modeling.

This Blender addon Curves To Mesh - Blender Market is an interesting first start for this. It has the downside that it can only patch curves, (i.e. the equivalent of grid fill in mesh terms) but if you imagine being able to loft (with continuity options), sweep (with one or two rails and continuity options), extend curves and meshes, etc.

The way I see this is that every modeling operation should be stored as history, so if you have a loft with 4 faces between the two curves, you should be able to make it five faces wide and change the continuity. Ideally, these modeling commands pass through Geometry Nodes to store history. That way, you could hook it up to a GUI/ HUD and change the properties of the loft, sweep, etc. as mentioned above.

I can imagine that every mesh piece is automatically split and gets an overlay for border highlights to see the individual (mesh) surface patches.

The reason is, concepting requires these changes to be made without much overhead. Modeling from curves is quicker, more accurate and predictable when surfacing as opposed to pure mesh based modeling.

I also think that the Curves to Mesh approach would allow you to:

  1. Keep things simple at first, build on top of new and existing Geometry Nodes. You could add the math for continuity for curves to mesh modeling first. That should be easier then NURBS.
  2. Think about a way to make modeling with history happen through a GUI and HUD.

This is very important, because NURBS modeling is a laborious process. Without history support, you won’t be able to change things around easily (e.g. change some CVs for curves and then expect the surface/ mesh to update accordingly).

  1. It is one of the lower hanging fruits that has much potential.
  2. If and that’s a big if, there ever comes an Edit Mesh/ Poly modifier, the workflow from curves to mesh would be unrivaled by any other mesh modeler.
  3. With this out of the way, you could add a conversion from mesh to SubD (possibly by leveraging Opensubdiv) and that would allow you to bring the commands from mesh based commands to NURBS based (T-spline if you will).
3 Likes

About Subd to Nurbs there is also an add-on for Blender but doesn’t export IGES, is only for blender internal use

Polyhedral splines is a Blender add-on that converts quad-dominant meshes into B-spline patches. This enables artists to edit spline surfaces in real-time via the existing polyhedral modeling capabilities of Blender.

Please find detailed introduction here!

3 Likes

Wow that looks pretty great- but getting the Nurbs Surfaces out(via Iges or step ) is needed!

anyone tested the Sub-D to Iges export by “DigitalSculptors” ?
Its free (not open source i think) and works great!

1 Like

Here some test https://blenderartists.org/t/blender-add-on-export-to-iges/

2 Likes

Im using this and so far it worked brilliantly. I can reccomend and thanks so much to the developer.

1 Like

This is looking quite interesting

Im trying to find time to flesh out my idea of hybrid Nurbs+Subds approach with some pictures, but in the meantime you have propably also seen this Nurbs app “Plasticity” on Arrimus3d or AskNK.

I just wanted to brought that up, might be interested to look at in terms of code.
However it seems really more like CAD with solids than freeform surface modeling tool.

6 Likes

I have been following this Plasticity program for a while. It uses a Russian geometry library called C3D. Pretty solid stuff.

3 Likes

What?, OK at the end isn’t free and open source, c3d is proprietary library.

4 Likes

I’d like to share my recent experience regarding Nurbs and Blender.
I made small toy car and prepared Nurbs data for plastic molds almost entirely in Blender.
Its possible thanks to already mentioned Addon “Export to IGS”, it works quite flawlessly.

We already have tools for draft angle and thickness diagnostic (“Mesh analysis”), its trivial to than export it as IGES.

What is missing though is possibility to boolean objects as Nurbs surfaces, not with current boolean modifier (than export to igs obviously doesnt work), this is only step which I had to do in other software.

But even now with this addon its a game changer - no need to buy/learn CAD to make organic shapes for plastic molding!

5 Likes

At this point I think it is right to clarify, this proposal has been abandoned, I do not think there will be future developments for the moment, better to use other programs, such as FreeCAD, Moi3D or Rhinoceros.

so you dont work on this area anymore?

Are you still working on it?