Feature Request: Subd

I suggest a set of Subd primitives that allow modeling from plans. Currently, the Subd primitives are only practicable for freestyle modeling.

E.g., there should be some way to create a subd surface from boundary curves and either points or interior curves to define the shape.

do you have some specific shapes in mind?

you can subd loft a surface from curves, you can create one from a revolve, you can sweep, sweep 2 etc… just set output = subd in the command line

For example, I saw a video on SUBD for a ship hull. In order to do a ship hull practicably, one needs to define a pointer and interior points and curve.

Currently, I can loft to create a subd, but I can only define two edges.

Even better would be to have the ability to define the odd 3 and 5- sided shapes that can occur naturally in a hull.

That is assume subd is intended for such types of work.

can you post some examples?

Here is a high level illustration of the problems one encounters:

Here is a more detailed problem showing a common need to have a radius go to zero. Rhino is iffy with nurbs in this kind of construct. Here, the two upper edges should be tangent and the lower edge coincident…that requires the radius at the right to go to zero.

it appears you need surfaces that are really well defined… SubD is going to make you crazy for that.

you may be better off with a hybrid approach where you do subD untill things have to really tighten up, then convert to NURBS and finish up.

that said, subd will do ngons all day long. I’d be curious to see your take on this in SubD and to know the friction you encounter so we could try and improve the toolset.

One consideration would be for the subd and resulting Nurbs surface to have tangency with an existing nurbs surface. I’m not quite sure what approach Rhino would take here but Cyborg3D (formerly PowerShape) has had a similar feature for quite a few years.

For the museums we are all using Rhino. The museums need to know the structure for plugging leaks, They need to create visitor access that satisfies fire marshals. They don’t want to cut an visitor opening through a bulkhead and find 11 inches of steel behind.

Since we are dealing with reality, we don’t have the luxury of simple models we can tweak by hand. We start from point clouds that define reference lines. To do the hull one needs to star with curves along the outer edges.

However, the data points are rounded to the nearest 1/16" (assuming no error). This produces steps rather than smooth curves. Thus one would ideally like a way to draw a curve through points within a tolerance.

There are multiple sets of these point clouds and the parts generated from them need to match up.

In the case of hull, the rounding creates bumps. Some kind of 2d fairing would be ideals.

We frequently run into three-sided areas (as noted above) and areas where curved surface ends up at an angle, where one needs the radius to go to zero.

For such going to zero radius, three sided surfaces work better than four sided. However, joining three sided surfaces regularly creates bad surfaces.

you know the crvthroughpt command, yes?

there are several ways to deal with 3 sided surfaces in Nurbs - have you seen this video series?

The problem with CurveThroughPt is that if you use “interpolated” you get steps. If you use Control Points, the curve goes way out of tolerance at the sharper curves, such as at the bow and stern.

I have seen that video but four-sided shapes to not tend to create a good fit for moving to zero radius. Sweep2 to point gives the best shape (I’ll have to pull some specific examples). The cut away technique does work well in the general case of a triangular area.

Here is an example of a problem area. The green curves are the borders. The light green are knuckles and the dark green are the end of the hull. (Looking up near the stern.)

The light green curve the bottom meets the dark green curve at the right. The light green curve at the lower right corner is not connected to anything visible here.

The dark green curve is almost at a right angle to the light green curve. I have a black curve at that point. because any surface there needs a corner at this point.


  1. A low density of data points. Because the points are at elevations and the hull moves inward here so the point density is lower. With Rhino primitives the hull tends to get deformed in this area without extra work. Fortunately, there are other data sets available for this hull.

This goes contrary to the standard advice of using as few points as possible. That’s find for a car hood but here we are dealing with a surface that is going to be 70-feet long. Single span curves here? Furgitabowtit.

  1. The natural triangle.

  2. The “right angle” where the radius of curvature gets

These problems are solvable with difficulty.

But it takes an odd patchwork of surfaces. In this case I was able to get a four-sided surface to fit where the radius goes to zero. However, I have found places were I have been completely unable to do so and have had to resort to 3-sided and work through the bad surface errors.

those areas are going to simply be hard.

As one of my college professors used to say “sometimes the only way to do the work, is to do the work”

variable creases that are under development for subd are a possible solution, but I think your surfaces require more precision than subd can provide.

1 Like

How did you create the point cloud?

Manually typed table values into Excel. Wrote VBA code to convert to decimal (X/Y/Z). Exported to CSV. Imported into Rhino.

Oh that sounds tedious.

I’m wondering how accurate this really needs to be and what ShrinkWrap would do to your points…

oooo- this! ^^

That’s what you rightly said, often people forget that SubD is not for precision modeling.

Here is another common issue. Fill the gap here such that he fill is smooth with all the edges (except the ends of the vertical keel).

Sweep2 to a point is the only thing that I have found that gives an acceptable shape. However, matchsrf and join with 3-sided surfaces regularly creates bad surfaces.

right, and that will be a complex nurbs model solution, for a complex modeling problem.

Subd is not going to be precise enough for what you are trying to model here.

you could do it in SubD, but not to the level of precision you are looking for.

you may be able to do this more “button click” with a product like xnurbs.

we are working on variable creasing for SubD, and when that becomes available shapes like this will be easier to create. However, it will still have the same limitations like subd does already where it does not do “exact” circles etc…

It would be nice to have a radius to zero with NURBS. I would presume such an animal is possible. For some reason Rhino likes to have surfaces to a point bend inwards towards the center of the curve rather than outward.