SubD Primitives and Creases

The help file for converting meshes to SubD indicates that SubD supports sharp creases:

Why don’t the SubD primitives Cone and Truncated Cone seem to use this feature by default?
(or do they and what I see is a visual artifact?)
Instead, they look like inflated conical balloons.
Example, SubD->Primitives->Truncated Cone:

1 Like

Do you need help on how to crease an edge?

Hi @Nathan_Bossett
I think it’s fair that Sub-D geometry is created without any creased edges as default, but maybe it would make sense to have a command line switch for cone, truncated cone, box and cylinder to create creased edges on the… well, obvious edges.
-Jakob

1 Like

Thanks, but I now know how to do it.

Once I knew that edges could be creased, which I discovered only through that related help file, figuring out how was easy via search: the ‘crease’ command. :slight_smile:

The problem is that:

  1. Rhino, by default, gives you a much less high quality SubD representation of certain primitives than it’s capable of (add to the list: cylinder). Why?
  2. When I saw an announcement talking about how great SubD was, I (naturally?) checked out the SubD primitives Rhino offers to produce and got an incorrect (and incorrectly disappointing!) idea of Rhino’s capabilities with SubD.

Why? What’s the use case for primitives as a main menu item from SubD which are of unnecessarily lower geometrical quality than other options such as the “Solid” (== Brep) or “Mesh” primitives?

It:

  1. doesn’t look right in overall shape
  2. doesn’t look right for key edges
  3. won’t appear to connect properly if you build something more complicated with the parts. Example: build a partial cone as a base for a cylinder.
  4. leaves me with questions about how close the bounding box (and bounding cylinders etc.), surface, and volumetric properties are to being analytically correct, and what I might be able to do to improve them.

I’m thinking as a marine and mechanical engineer: it may be that what Rhino presently does with SubD primitives is quite valuable as is to other markets.

Because that’s how Sub-D’s - in their truest form - look and behave and what they are programmed to do. Both Crease and the Sharp command, introduced in V8, are a toplayer that, in essence, is altering the original Sub-D surfaces to look and feel more like what we are used to from NURBS, where we have actual edges and weights to play with. Sub-D’s are “born” to be G2 (or is it G1.X, I’m not sure) on all edges. To you it might be

and you think it

but that’s what Sub-D’s look and act like.

As for matching Sub-D’s to NURBS geometry, there’s a command in V8 called TestSubDEdgeMatch which will match Sub-D’s to NURBS (curves or surfaces), but as for precision in terms of eg. circles and cylinders, Sub-D will always be an approximation. The more subdivisions you add, the closer it will get; and eventually you’ll be below tolerance (at the cost of complexity).

HTH, Jakob

1 Like

Thanks for taking the time on that explanation.

The new feature in 8 to gracefully join SubD’s to other surfaces is one I found quite exciting and (I assume?)
also compromises on the

side.

If you’ll forgive a bit of persistence on my part, what’s an example of a user flow in which the mathematically pure form you discuss is, for use in CAD, the desired result?

I’m wracking my brain a little bit trying to come up with one:
Probably not CFD, you need the sharp discontinuities
Not stress or vibration analysis, likewise
Not a casting or machining process for production because precise joins to neighboring geometry are important
Not (here I’m guessing a bit) photorealistic rendering for presentation or artistic purposes?

I can think of a few manufacturing processes in which something resembling that is the end result (kiddie pools, inflatable kayaks, etc.) or an intermediate product (inflate and laminate around).

Not just how the code is written. The underlying math has some limitations compared to NURBS surfaces:
G2 or G0 (crease) continuity at internal edges.
Curvature normal to all naked edges and creases is always zero.
Unable to exactly represent conic sections such as cylinders and circular cones.

This depends on the viewers expectations. For me the zero curvature at creases and naked edges sometimes results in surfaces which don’t quite look right to me.

A NURBS surface can exactly match a SubD surface.
In principle a SubD surface can match a NURBS surface within any desired (non-zero) tolerance but at the cost of increased complexity. TestSubDEdgeMatch is a preliminary implementation of this.

Remember that almost all NURBS models of other than simple geometry have edges which do not meet “exactly”. The size of the discrepencies between edges in Rhino is determined by the absolute tolerance setting. Also remember that setting a smaller tolerance may increase the complexity of the model.

SubD in various software implementations is widely used to create models for artistic purposes. I’m not aware of any limitations on using SubD models for photorealistic rendering.

My observation is SubD is very useful for modeling “organic” shapes and similar, and creating transistions if the exact shape is not critical. It can also be useful for creating intitial concepts. SubD may not be appropriate when a high level of control of the shape is needed. As with any tool SubD is very good and may be the best tool for some tasks, works okay but with some limitations for some tasks, and is not an appropriate tool for other tasks.

Hi Jakob -

FWIW, It’s no longer there in the version I’m running …

-wim

A common way to start modeling for SubD is to start with a basic shape like a SubD box and then start pulling faces around. Inserting creases for the primitives by default would mess this up a bit. We could add creases as a command line option if it is really something users need.

Thanks for the background, all.

Steve nailed the direct question, which was about whether users really have specific use cases for the current behavior of SubD cone etc. creation.

What I was thinking of was trying to produce models which are pure SubD and using small cheats like creased corners to handle discontinuities and force tangents, which is a considerably different case.