SubD output option in _Loft - a lot of testing, comments, suggestions

I did some comparisons between the Rhino 7 WIP loft subD option and the subD loft command in a plug-in I’ve used for a while. Detailed analysis below, and here’s the file: Lofting.3dm (221.2 KB)

1. Lofting open degree 1 curves.

Below are four different results of lofting the same degree 1 curves. Rhino 7 WIP is in blue. A third party plugin is in red. Source curves are behind them, with one pair rebuilt with extra edit points.

Far left: WIP, simple source curves, “rebuild with 7 control points” selected in options
Near left: WIP, source curves rebuilt with 7 control points, “do not simplify” selected in options
Near right: Plugin. Options = 3 segments, 1 “along” segment
Far right: Plugin. Options = 3 segments, 3 “along” segments

The key differences here seems to be that the plugin detects discontinuities, and somehow figures out how to treat them as separate segments even when only one source polyline has a discontinuity. It also allows for “along” segments.

Also: Rhino defaults to crease the outermost vertices. Plugin defaults to not. Should there be an option?

The plugin seems to do better than what the WIP can do right now. I would think a typical user would expect output that looks more like the plugin.

I realize lofting polylines may seem like a special case, but one of the greatest things about SubD is that it can take complex planar faced polysurfaces and make it much easier to soften/blend their edges that is possible in NURBS. So this may be more of a key feature than it seems.

OK, now for where the Rhino 7 WIP beats the plugin, mostly…

2. Lofting Closed Degree 3 Curves

Again, below are different results from lofting the same curves. Rhino in blue, plugin Red. Source curves shown with _EditPtOn for clarity.

Far Left: Rhino 7 WIP, “Do not Simplify” option checked.
Near left: Plugin, options = 8 segments, 2 “along” segments
Near right: Plugin, options = 8 segments, 4 “along” segments
Far right: Rhino 7 WIP, “Do not simplify” option checked, and then _InsertEdge run, with “both sides”, proportional options, 0.5 entered.

Rhino’s choice to line up subD edges with input curve knots is clearly superior. The plugin just divides the curves into equal segments, and thus it requires many more subdivisions to get equivalent detail.

However: the option to have “along” segments within the command is still better. The furthest right example simulates the best of both worlds. Again, one of the looks users go for when using SubD is linear, but smoothed. In this example, it’s easy to achieve quickly with a second command, but with more complex examples, including “along” segments would make workflow faster. Same goes for any future SubD-capable grasshopper loft component.

3. Creases at seams? Is this a bug?

Using the “rebuild with X control points” option with a subD loft apparently produces a crease wherever the user places the loft’s seam.

  • Feature or bug? Should there be a “crease seam” checkbox or just no crease?
  • Is the “rebuild” option meant to be used with SubD’s at all?
  • Also: in some cases, when trying to use an intentional twist in the seam to create a warp in the loft, I got no output at all.
  • There is another bug where sometimes the number of control points to rebuild by gets “stuck” and applies itself even when the user clicks back to “do not simplify”. Tried exiting and rerunning the command to get around it and it still happened. Can’t figure out what conditions create this problem though.

Did anyone read this whole thing? THANK YOU.

I think an interpolate option is what is needed here to get the same border as the plugin…

Try TweenCurves first to produce the along segments and then Loft those. I filed as well though.

This appears to only happen when the point count is below a certain value. Filed as

I’m having trouble getting this one to happen… I’ll file it if I find more.


1 Like


re: “along” segments: Tweening doesn’t produce the same result, because Tweened curves either have different numbers of control points than the originals, or rebuilding causes too much deviation. The form is good, the subdivision structure is unusable. Though as glitches go, it’s kinda beautiful and I’m tempted to use this problem as a source extract patterns for engraving.

and with a lot of extra attention to the input curves, it gets close to matching the effect of just adding extra subdivisions. Also curvier, in a nice way:

Here is my very short case for including “along” segments in lofts:

plug grasshopper’s Fatten component into the SubD from Mesh component. Play with a slider plugged into the “subdivisions” input on Fatten. An “along” segments option in Loft in rhino would have a similar effect. In a sense, it’d fulfill a similar role in SubD that “Straight Sections”, “Tight”, “Normal” and “Loose” do for lofting surfaces.

1 Like

Hi @Max3 can you please share with us the name of the plugin?

Clayoo. At this point, I prefer the Rhino WIP’s implementation of SubD to what Clayoo does, and I expect native subD will may to end-of-life for Clayoo.

There are still some very useful features that Clayoo’s subD has that the WIP does not (multi-gumball, knife command), and Clayoo’s mesh sculpting features don’t exist in Rhino7 yet and probably won’t ever.

Should there be ‘Interpolate’ options for these? So that output SubDs actaully match curve input?

Can’t tell if that would be helpful or not in the grand scheme of things, for a modelling workflow.

I think @BrianJ already mentioned “interpolate” in relation to the “underpants” result in item 1 on my list at the top of all of this.

Also, it’s been a while since I posted this. In that time, I’ve found a workaround that isn’t ideal, but does allow me to get good results when trying to work with polylines and polygons as primitives: I convert single faces to subD, crease the edges, subdivide, and then uncrease the edges. It only gets sticky when I use ngon faces, but that’s a whole other can of worms, and I can manually fix it by using _insertpoint to split ngons into quads.

It’s probably exactly the same as an interpolate option in terms of results, which suggests to me that the math we need is right there under the hood and it just needs to be implemented as a command option.

Could you post an example?

Yeah, I’m still feelign my way through this. I am really the blind leading the enlightened, as far as playing with SubD goes.

Thanks, we’re looking into matching the curves if they are all SubD Friendly curves. I’ve added your comments to the feature request.

RH-58592 is fixed in the latest WIP