Rhino tips for surface modeling

This text is largely based on a Discourse post by Rhino user and teacher Lagom and enhanced with illustrations and examples.

Lagom
A short “tool/approach” primer of things I believe are relevant for transitioning to Rhino (industrial design excl. automotive/technical/architectural design).

Curves

In any CAD software, the accuracy and quality of your primary curves (“splines” or “sections” or “sketches”) is paramount, because they determine the quality of your primary surfaces, and your primary surfaces determine how well your secondary surfaces, and tertiary surfaces (blends, fillets) will work (think of a tree: “trunk > branch > twig > leaf” relationship).

Single span curves

Always try to use InterpCrv to draw single-span curves with Degree set to 2 or 5. Place the start and end points, then shape the curve by moving the 1 (degree 2) or 4 (degree 5) free controlpoints (CPs), or match them to other curves/surfaces directly.

Alternatively, use Curve with Degree set to 2 or 5. Place the 3 (degree 2) or 6 (degree 5) CPs, then finalize the shape by moving them, or match it to other curves/surfaces directly. There is a case when a degree 3 curve can be useful - for constructions where a single-span curve must “take off” with G2 and end in a point with G0 continuity.

BlendCrv is ideal to create G1 (tangent) or G2 (curvature) continuous single span curves between existing curves and/or surface edges, allowing you to fine-tune their shape interactively (use the Show curvature option while doing so). Use the key to change the contact angle. Use the key to adjust symmetrically on both ends, while moving the G1 and G2 handles on one end.

Why single span?

The advantage of using single span curves is that the curve is perfectly curvature continous internally. Curves that are multi-span, will have less fluent curvature transitions internally. When building surfaces from these curves, curvature irragularities between spans can become visible in the manufactured end result. The following image shows a single span degree 3 curve (4CPs) and a multispan degree 3 curve (7 CPs). Notice the G3 discontinuities in the multispan curve.

Circles

By default, Circle creates a rational degree 2 curve with kinks (multi-knots). Draw circles with the Deformable option selected, Degree set to 5, and Point Count to 8. For ellipses, just non-proportionally scale ( Scale1D ) such a circle.

Note
There are two cases, where multi-span curves/surfaces cannot be avoided - when drawing arcs without kinks from > 90° to 360° (circle), and when building fillets. However, fillets are typically introduced once the surface model is complete, and they are typically not used as input to further surface construction operations.

Editing Curves

InsertKnot or InsertControlPoint can be used if you need an extra CP while shaping a curve. Both add a span and CP to the curve. InsertKnot adds a CP but keeps the shape of the curve the same, InsertControlPoint adds a CP and alters the shape of the curve. The following image shows the result of adding a knot or a CP at the middle of a degree 3 single span curve.

RemoveKnot removes a span and CP from the curve. The curve’s degree remains unchanged in both cases.

Alternatively, use ChangeDegree to a higher value with the Deformable option to add CPs to a curve. The number of spans and the curve’s shape remains unchanged. Caveat: without the Deformable option selected, more CPs will be created. Use the CurvatureGraph tool to see what happens.

Rebuild can be used to change a curve’s degree and number of CPs, but it is generally not recommended (messy CP structure).

To flatten (planarise) one or more non-planar curves, select all CPs, click the Gumball X, Y or Z scaling icon, and type 0 into the value field. An alternative is using SetPt macros, which can be assigned to aliases. These allow you to pick a point in the direction you are flattening. For example:

Alias Command Macro
sx '_-setpt x=yes y=no z=no
sy '_-setpt y=yes z=no x=no
sz '_-SetPt z=yes x=no y=no

Curve Continuity

Although currently you cannot match curves with torsional continuity (G3) in Rhino, with help of point manipulation and curvature graph a close to G3 match can be made. Shown here is a match of the upper curve to the lower curve, while the end of the matched curve is preserved (positional).

Info
The Preserve other end option determines what happens at the end of the curve that is not matched. Based on this option, outcomes will vary. Some examples of matching a line to another curve using different option combinations. Match will increase the degree of the matched curve to meet the desired continuity.

EndBulge Curves

Use EndBulge with the Tangency or Curvature option to manipulate the 2nd (G1) CP and/or 2nd and 3rd (G2) CPs to adjust the curve’s shape without losing the continuity previously established by matching. Activate CurvatureGraph beforehand.

Evaluating Curves

Curve Do’s

Use single span curves whenever possible. Less spans/CPs mean that a curve’s curvature is easier to control. Also, simple curves make for simple surfaces.

Curve Don’ts

Don’t Join curves (semi-circles joined to lines to build a “pill shape” is a classic), because joining creates kinks at the join location. When you use such curves to build surfaces, it can make subsequent operations unnecessarily difficult. Any design can be perfectly modeled without joining curves.

Surfaces

Important
In any CAD software, the quality of your primary surfaces is paramount, because they determine how straightforward construction and G1 and G2 continuous matching of secondary and tertiary surfaces (their “neighbours”) will be. The trimmed edge of a surface is complex and propagates its complexity into neighbouring surfaces, which leads to G1 or G2 continuity problems, etc. Ideally you always want clean theoretical edges, or to rebuild trimmed surfaces so they have only natural edges. When you are building surfaces from/to a mirror plane, never imply G2 continuity, but only G1 continuity, meaning two CPs must be perpendicular to the mirror plane; and when you want to enforce a certain angle along a surface boundary/edge, use a tangency enforcement line or strip for proper control.

Editing Surfaces

By default, surfaces show two isocurves (one in the U and one in the V direction), if it is a single span surface. Set Isocurve Density to 0 in Properties to display only isocurves generated from a curve’s knots, or from an adjacent surface’ knots. In Rhino Options, General you can set the default to 0 as well if you prefer.

Cutting Surfaces

Surface Continuity

Use MatchSrf to make a surface G0 (position), G1 (tangent) or G2 (curvature) continuous to another. You can only match untrimmed (natural) edges of a surface, but you can match to another surface’ trimmed edge. Click near the same end on both edges, so that the surface doesn’t flip. Always check with EdgeContinuity ; don’t rely on the Zebra display mode only.

Recommendations when using MatchSrf :

Task Solution
Match equal degree surfaces Use default options
Match a lower degree surface to a higher degree surface Raise its degree with ChangeDegree before
Match a higher degree surface to a lower degree surface Use default options
Match a surface to a trimmed edge Use the options Match edges by closest points and Preserve isocurve direction
Match a shorter surface edge to a longer surface edge (partial match) Use the option Match edges by closest points
Match a surface while keeping its contact angle Use the option Preserve isocurve direction
Match a surface edge onto another surface Use the On Surface option

To improve the result of MatchSrf, use DragMode with the UVN option to adjust individual CPs. Set the Gumball to Align to Object. Adjust DragStrength if you want finer mouse control. You can also use the arrow keys on the keyboard for U and V movement, where for N movement, you need to press the plus / ). Don’t forget to reset DragMode to normal by choosing the UVN option again after you’re done (it’s a toggle)! Always check with EdgeContinuity.

Alternatively, use the traditional MoveUVN tool to improve continuity. Always check with EdgeContinuity.

Evaluate surfaces visually

Evaluate surfaces numerically

Surfacing Do’s

  1. Try to build single-span surfaces whenever possible. Simplify surfaces, or build simple surfaces in the first place.
  2. Use command UseExtrusions with Polysurface option to build normal Polysurfaces when you extrude. Default Rhino extrusions are simplified representations that make various surface modeling operations difficult later on.
  3. First build your large fillets, then build your small fillets, particularly when small fillets shall run over large fillets. For true radial G1 fillets, this script by Jim is a life-saver. Save the script and run it from an alias or keyboard shortcut.
  4. Use Sweep2 preferably only when the rail curves have the same degree and number of CPs to avoid the creation of too many spans (and thus CPs). Otherwise, try RemoveMultiKnot to remove multiple-knots, and re-match for possibly lost continuity.
  5. Use EdgeSrf for full manual control (CP structure, continuity) on all four sides.
  6. Use BlendSrf for controllable G1 and G2 blends between surface edges.
  7. Revolve 360° with the Deformable option and Point Count 8 to obtain a degree 3 surface without kinks. Then ChangeDegree to 5 in the revolution’s orientation with the Deformable option. Revolving less than 360° is buggy, so revolve as above and then use Split using the Isocurve option to generate valid surfaces with smaller angles of revolution.
  8. Split revolved/periodic surfaces like cylinders, pipes, spheres, etc. in half with Split using the Isocurve option to eliminate the seam, or move the seam to an incongruous location with SrfSeam , so it cannot interfere with trimming and matching operations.
  9. Use SplitEdge on a “T” junction edge, when the surface edge you are building shall be shorter than the surface edge you are building to.

Surfacing Don’ts

MISCELLANEOUS

Curve and surface anatomy

To understand the fundamentals of NURBS curves and surfaces, see this Autodesk Alias page.

To understand the fundamentals of surface continuity, see this Autodesk Alias page.

To understand the fundamentals of curvature, see this Autodesk Alias page.

To display the knots/spans/isocurves - (ab)use InsertKnot, which temporarily displays them (click Cancel right after). Please note: Rhino’s EditPtOn shows you the “Greville points”, not the knots (in Alias, the knots are called “edit points”). Consider setting the Isocurve Density to 0 in Settings… (Options in Windows) > General, so only “real” isocurves are shown (unless you need extra isocurves for snapping, or other modeling tasks). Alternatively, use CurvatureGraph and set Density to 0; a hair will be shown at each knot.