SubD Revolution


I am new to SubD and I do some simple tests.
My first test is the “Hello world” of the revolution, A glass of water.
But the result is strange:

SubD Rev Bug 01.3dm (252.4 KB)


Your curve already creates a weird surface without trying to go for subd. To fix the curve part that you have circled in your screenshot I’d explode the curve, delete the few pieces at the top, then use _BlendCrv. Select the curve parts and _Join to get a well-behaved curve that revolves without creating bad geometry.

That said, ToSubD will still give not so nice result.

edit: _BlendCrv created a degree 5 curve. After I used _ChangeDegree on the blend curve the resulting surface did better in _ToSubD. Still needed manual joining afterwards, but looked much better.

Hello @nathanletwory

I only got there once as you tell me and since then I can not reproduce it.
(I must lack experience with SubD.)

However when you say “well-behaved curve”, do you mean that all parts of a curve must be of type “Curve” with the same degrees?

SubD cannot always make the exact shape of a Nurbs - usually not. When a curve it used in a SubD it is converted to a SubD-Friendlly one - you can see what happens in this case if you MakeSubDFriendly on your curve.
A clean way out is to replace the top edge with a BlendCrv as Nathan suggests, but MakeSubDFriendly on the input curves, then MakeSubDFriendly on the blend , adjust the shape, and then Join to the rest of the curves to revolve.




1 Like

Ok, thank you @pascal,

I can see better. SubD is therefore a separate object type and not an extension of Nurbs as I imagined.
As I understand it, the closest approximation to a SubD is a 3 degree and uniform Nurbs (surface or curve)?

Internally, SubD uses Catmull-Clark?

Degree 3, Uniform

  • and -
    If an open curve then zero curvature at the ends.
    If an open surface then zero curvature normal to the edges.

The Curve, CurveThroughPt and InterpCrv commands have a SubDFriendly option which ensures the requirements above are met.

For existing curves the command MakeSubDFriendly will convert curves so that they meet the requirements.

I guess I just asked the “basic” questions of a newbie …
Thank you for answering.

I use this steps:
1-Select Output:Surface

2-Convert the result to Subd: _ToSubD
3-Join all open SubD: _Join

I think revolve for subd must fixed because don’t work with a simple polyline

dear @kitjmv

i recommand to start experimenting with a single
Degree = 3, sub-d-friendly=yes

4 points on a line = straight section

if you need a exact revolution and a more geometric (radius, line, … ) design use nurbs surfaces.

kind regards -tom