# SubD Primitives and Creases

**URL:** <https://discourse.mcneel.com/t/subd-primitives-and-creases/165755>\
**Category:** Serengeti (Rhino BETA)\
**Created:** [September 16, 2023, 6:16pm UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755 "2023-09-16T18:16:03Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nathan\_Bossett](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/nathan_bossett/32/651371_2.png) [@Nathan\_Bossett](https://discourse.mcneel.com/u/Nathan_Bossett)\
**Post date:** [September 16, 2023, 6:16pm UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/1 "2023-09-16T18:16:03Z")

</div>

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

 ![Screenshot (39)](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/b/0/2/b02046b554bba93d6e6676d8fb96cfd11cb28bd6.png)

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:

 ![Screenshot (40)](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/7/9/d/79de6f0b4033cd6caffbd20c683a4b1d40c8303f.png)

---

<div class="post-metadata">

**Author:** ![martinsiegrist](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/martinsiegrist/32/498369_2.png) [@martinsiegrist](https://discourse.mcneel.com/u/martinsiegrist)\
**Post date:** [September 18, 2023, 6:33am UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/2 "2023-09-18T06:33:13Z")

</div>

Do you need help on how to crease an edge?

---

<div class="post-metadata">

**Author:** ![Normand](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/normand/32/476050_2.png) [@Normand](https://discourse.mcneel.com/u/Normand)\
**Post date:** [September 18, 2023, 7:34am UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/3 "2023-09-18T07:34:16Z")

</div>

> [@Nathan\_Bossett](#):
>
> Why don’t the SubD primitives Cone and Truncated Cone seem to use this feature by default?

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

---

<div class="post-metadata">

**Author:** ![Nathan\_Bossett](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/nathan_bossett/32/651371_2.png) [@Nathan\_Bossett](https://discourse.mcneel.com/u/Nathan_Bossett)\
**Post date:** [September 18, 2023, 11:55am UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/4 "2023-09-18T11:55:12Z")

</div>

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. 🙂

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.

> [@Normand](#):
>
> I think it’s fair that Sub-D geometry is created without any creased edges as default,

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.

---

<div class="post-metadata">

**Author:** ![Normand](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/normand/32/476050_2.png) [@Normand](https://discourse.mcneel.com/u/Normand)\
**Post date:** [September 18, 2023, 12:18pm UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/5 "2023-09-18T12:18:09Z")

</div>

> [@Nathan\_Bossett](#):
>
> Why?

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

> [@Nathan\_Bossett](#):
>
> incorrect

> [@Nathan\_Bossett](#):
>
> incorrectly disappointing!)

> [@Nathan\_Bossett](#):
>
> unnecessarily lower geometrical quality

and you think it

> [@Nathan\_Bossett](#):
>
> doesn’t look right in overall shape

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).

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/9/5/b/95bf9ecfab2fe6b887eeb022282f40a34981eeb6.jpeg)

HTH, Jakob

---

<div class="post-metadata">

**Author:** ![Nathan\_Bossett](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/nathan_bossett/32/651371_2.png) [@Nathan\_Bossett](https://discourse.mcneel.com/u/Nathan_Bossett)\
**Post date:** [September 18, 2023, 12:42pm UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/6 "2023-09-18T12:42:06Z")

</div>

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

> [@Normand](#):
>
> in their truest form - look and behave and what they are programmed to do

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).

---

<div class="post-metadata">

**Author:** ![davidcockey](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/davidcockey/32/771921_2.png) [@davidcockey](https://discourse.mcneel.com/u/davidcockey)\
**Post date:** [September 18, 2023, 1:36pm UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/7 "2023-09-18T13:36:15Z")

</div>

> [@Normand](#):
>
> Because that’s how Sub-D’s - in their truest form - look and behave and what they are programmed to do.

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.

> [@Nathan\_Bossett](#):
>
> - doesn’t look right in overall shape
> - doesn’t look right for key edges

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.

> [@Nathan\_Bossett](#):
>
> Not a casting or machining process for production because precise joins to neighboring geometry are important

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.

> [@Nathan\_Bossett](#):
>
> Not (here I’m guessing a bit) photorealistic rendering for presentation or artistic purposes?

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.

---

<div class="post-metadata">

**Author:** ![wim](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/wim/32/747482_2.png) [@wim](https://discourse.mcneel.com/u/wim)\
**Post date:** [September 18, 2023, 2:19pm UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/8 "2023-09-18T14:19:05Z")

</div>

Hi Jakob -

> [@Normand](#):
>
> there’s a command in V8 called `TestSubDEdgeMatch`

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

> [@SubDMatch: A new command to match SubDs to other Rhino objects](https://discourse.mcneel.com/t/testsubdedgematch-a-new-command-to-match-subds-to-other-rhino-objects/164831/12):
>
> This is our current plan. The command would be removed from Rhino 8 once a Rhino 9 WIP is available. Development would continue in the Rhino 9 WIP, but as a real command.

-wim

---

<div class="post-metadata">

**Author:** ![stevebaer](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/stevebaer/32/473567_2.png) [@stevebaer](https://discourse.mcneel.com/u/stevebaer)\
**Post date:** [September 18, 2023, 2:28pm UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/9 "2023-09-18T14:28:12Z")

</div>

> [@Nathan\_Bossett](#):
>
> Why don’t the SubD primitives Cone and Truncated Cone seem to use this feature by default?

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.

---

<div class="post-metadata">

**Author:** ![Nathan\_Bossett](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/nathan_bossett/32/651371_2.png) [@Nathan\_Bossett](https://discourse.mcneel.com/u/Nathan_Bossett)\
**Post date:** [September 18, 2023, 6:11pm UTC](https://discourse.mcneel.com/t/subd-primitives-and-creases/165755/10 "2023-09-18T18:11:05Z")

</div>

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.
