The new Faces = Packed option when converting SubDs to nurbs is really fantastic. Thanks for enabling this powerful extension of an already amazing new workflow.
Of course this new functionality leads to more related feature requests. I had a couple of questions regarding its potential application in a couple of different instances:
Is there any plan to extend SubD.ToNurbs() to include this functionality? Being to able to do this in .NET would be great.
Would it also (or alternatively) be possible to apply the same face-packing logic on existing nurbs polysurfaces? I imagine this would be useful in many different applications.
With SubDs, for example, I am building up meshes using groups of faces. So for example, SubD faces 1-100 are in one group, 101-200 in another, etc. I’d like to be able to export each of these to its own nurbs polysurface, but further taking advantage of the packed face capability. I can already convert the SubD to nurbs and then iterate over each face and isolate collections into discrete polysurfaces…being able to pack them after this is would be super helpful.
That should be possible, I’ll see what’s needed and get working on it. Tracking here.
We have some ideas on reusing this code to help merge polysurfaces of a rectangular grid of surfaces together, but so far it looks like it might be a limited applicability outside of Nurbs coming from a SubD conversion. Breps not coming from a SubD conversion tend to not have the same large rectangular grids, so automated detection of packing candidates is much harder. In addition, all the surfaces need to have a common degree and matching knots, and be untrimmed, and rebuilding them to account for all that can quickly lead to very dense control nets or imprecise results.
If you have some examples of workflows where this would be very useful to you, please share them with us so we can define this better.
Improvements to the face packing algorithm (the one that decides which faces belong in a pack) are planned in the future. That would include a mechanism for user-defined face packs.
Thank you so much for the detailed response, and for opening up the issue for tracking. This is all great news. And this makes complete sense:
Really, the polysurfaces that I am hoping to apply packing to selectively are all generated from SubDs, so they are already organized in rectangular grids, so the future plans you have for defining groups for user-defined face packs sounds great. It’s mainly that I would love to specify subsets of larger SubDs that we want to keep as discrete (but packed) polysurfaces for downstream processing, where we can specify the boundary conditions.
I know it does not answer you question directly, but we have played with using Quadremesh in the Brep > SubD > ToNurbs as a way to repack surfaces. It is quite and interesting process.
Sometimes it is also useful to get a piecewise polysurface into a Subd structure that can be edited.
I also play this game from time to time to get complex solids into Revit. Since Revit is not happy with short edges.