Although Rhino is a NURBS surface modeler, it uses polygon meshes created from those surfaces for visualization purposes - so what you see on the screen when the model is shaded is in reality a special, invisible polygon mesh (the "render mesh") that is attached to the actual NURBS surface.
Why? For quick shading and rendering. But while a mesh has the advantages of shading speed and adjustability, there is a disadvantage. The render mesh is always an approximation of the surface, so there are almost always gaps between the faceted render mesh and the actual smooth surface.
The same meshing engine in Rhino is used in the creation of analysis meshes for the functions like Draft Analysis and Curvature Analysis, EMap, etc., and by the Mesh command (Tools > Polygon Mesh > From NURBS Object), which creates a "real" mesh object directly from a NURBS object.
Exporting from Rhino with certain polygon-based formats (such as .stl) will also create mesh objects (in the exported file). Although you can't edit these in the original Rhino file, you do have the same group of mesh density settings to control how they are created.
The functions that create real, editable meshes like Mesh and Export (.stl) are very important in many applications, as other "downstream" programs or processes often need polygon mesh objects to work with.
All of the types of mesh objects can exist simultaneously in one file, they do not affect one another and each can have its own settings. Although all the meshes are created with the same engine, there are a couple of important differences between them.
Willem: When meshing an object for export I always first create a mesh and look at it in the viewport Flat Shade mode (FlatShade command) before exporting it to the desired format. The Flat Shade mode "Shades the current viewport with no smoothing so the individual (render)mesh faces are visible".
The controls for different mesh types are virtually identical. The controls for the Render Mesh settings are part of the .3DM file's properties, they are global for the whole model. When exporting to a mesh format like STL, DXF, 3DS, and OBJ you can alternatively use simple controls, like a slider. The detailed controls for all are identical, and are described further below.
The render mesh (display mesh) settings can be found at File > Properties > Mesh. Rhino offers you 2 "standard" settings, "jagged and faster" and "smooth and slower", as well as "custom", which lets you access the detailed controls. The "simple" controls for the others are displayed at the moment you invoke the command and are just a slider: less <-> more polygons. The "detailed controls" for the others are all the same.
The default for render meshes is "jagged and faster", which is fine for quick visualization, but not very good for anything else.
The "smooth and slower" theoretically offers finer resolution at the expense of longer meshing times, but in practice, even though it does take longer, frankly, it may still leave visible gaps where you don't want them, so you are advised to try the "custom" settings instead.
The default "simple" slider settings for analysis meshes as well as Mesh and Export is "somewhere in the middle"...
The default setting for the special STL Export dialog is the value of Absolute Tolerance at File > Properties > Units.
If you really want to control your meshing process, here is where you need to start!
There are seven numerical settings and 3 check boxes. Each one has a different method of mesh control and some of them can work together. The interactions and combined effects of these settings is complex to understand. Individually they are well described in the Help however, and reading this info carefully will give you a good idea of what each one does.
A copy of the Rhino Mesh Help page can also be found here.
Below are quick custom setting suggestions that have been known to work, they are for you to experiment with.
Personally, I use the following detailed mesh settings:
| Density (new in Rhino 4) | ** |
| Maximum angle | 0.0 |
| Maximum aspect ratio | 0.0 |
| Maximum edge length | 0.0 |
| Maximum distance edge to surface | ** |
| Minimum initial grid quads | 16 |
** - In Rhino 4, experiment with Density setting. It is scale independant. In Rhino 3, there is no Density setting, you can insert scale appropriate value in Maximum distance edge to surface. For millimeter-unit models try 0.10 to 0.01
Refine mesh checked
Jagged seams unchecked
Simple planes unchecked
Pascal: I prefer to set some largish number in "Maximum angle" rather than zero (disabled), maybe 35-45 degrees. This way 'features' that fall below the max distance number will be subdivided a little. You can get away with a little bigger max distance number in some cases if you let a large angle setting take over for the smallest objects. When there is too great a discrepancy between an object and the global mesh settings, it often pays to use the Mesh command on those objects. Set the mesh to be as loose or as fine as needed for that object, then render the mesh object only, hide or delete the NURBS surface. Very small repeated details can be meshed very very loosely for instance, without impacting the quality of the image.
Mitch: I sometimes put a value of 6.0 in the "Maximum aspect ratio" setting to keep Rhino from meshing long, thin objects with long, skinny triangles, it will break them up into more shorter, smaller ones. However, this comes at the expense of bigger file sizes and sometimes significantly longer meshing times.
Ricardo: I do jewelry rapid prototyping. My default settings are 0.001 for maximum distance and 12 degrees for maximum angle. Larger angles tend to show the triangle edges on the final product. Mesh sizes range up to 30mb on very complex models. Units are milimeters''
Olivier: I work on tensile structures that mix large membranes and steel structures. I need the membrane to be meshed accurately, but the steel tubes and fittings induce very heavy meshes. To deal with both big and very small curvatures, I always set a 'minimum edge length' to limit the number of polygons on small curvy details .
The main setting is the one for max distance edge to surface. If you think about it for a moment, you will understand that this value is scale (size) dependent, hence the following question:
What is a scale-appropriate value?
First, it depends on what you're going to be using your mesh setting for. For general display purposes your value can be a bit bigger (looser), as you're only visualizing the model on your screen, and less polygons mean faster meshing times and quicker display reaction when tumbling, zooming, etc.
If you are doing computer-sized objects, 0.01mm works out pretty well. For watches and jewelry, you will probably want it smaller, maybe .002mm. For larger objects like buildings, much larger, maybe 1mm or even larger.
If you're going to be exporting your object for later processes, or are going to be doing very detailed renderings, you may need to tighten up the settings a bit, depending on where it's going and how precise the process is. For a stereolithography part, .01mm should still be fine for example, but for a good machined part, .001mm-.002mm is probably more appropriate.
It may seem very complicated at first, but after a bit of practice, you will find a few standard settings that work for you in most situations. These settings can even then be programmed into a macro or script to quickly launch the meshing of your objects with the desired characteristics.
Per object meshing: In v4 use object properties to access custom meshing per object. This will override the global mesh settings and mesh individual objects to settings users can adjust for greater efficiency.
Sometimes, you may find that even with the settings guidelines above, you are still not getting good results. You may struggle with ghost surfaces, uneven shading, or triangular mesh facets that cut across empty space where they shouldn't be. Some of these problems may be caused by the Rhino mesher's reaction to certain types of geometric structures. The only way to correct them currently may be to do some reconstruction on your structures.
While these conditions don't always cause problems meshing, they have been known to do so in the past, so it's worthwhile checking if you are having difficulties.
Bad objects. While they don't always result in mesh problems, these are easy enough to track down, [See Rhino 3D {F1} help index: Type in diagnostics] so it's a good place to start. If you find one, try hiding it. If your problem disappears, then perhaps all you need to do is fix the object (make it valid) and you'll be good to go.
Why the Diagnostics explaination is buried so deep inside Rhino3D F1 help I do not know, but it is reproduced under Diagnostics herein below FYI.
Long, skinny surfaces. These are hard for the mesher currently. The longer and thinner, the harder it is and the longer it takes. A typical example might be long continuous small radius fillets on the edges of your model. If it's taking forever to mesh and you think you're geometry doesn't warrant that, you might also have a tiny sliver surface somewhere that's hanging up the mesh machine.
Joined tangent lines and arcs that have been extruded or revolved. Example - extruding a rounded rectangle. This forms a single surface with internal G1 areas, which the mesher struggles with. Solution - Explode the curves before extruding, or use Split > Isocurves at the G1 spots to create a structure with separate joined tangent surfaces instead of one single one. In the case of the extruded rounded rectangle, you will have eight joined surfaces, not one.
Kinked surfaces. Usually caused by using MergeSrf Smooth=No on surfaces that are not at least tangent to each other, or point editing of some types of surfaces under certain conditions. In this case, again, it is better to have multiple joined surfaces instead of one kinked one. Use Surface edit tools > Divide surface along creases or Split > Isocurves at the kinked spots to split these types of surfaces up into separate parts.
Sometimes a model can become damaged. These damaged areas can cause problems.
It is possible to build bad models using Rhino tools - for instance, if you trim a surface with a self-intersecting curve, Rhino will let you do it, but the result will be a poorly defined model that will cause problems later.
Another problem is having a tiny, trimming edge that then gets joined to a larger trim curve on an adjacent surface. If Rhino matches the large edges, sometimes the tiny trim curve edge can get compressed even further so that it is really just a point. That compressed edge no longer has a meaningful orientation and causes problems.
There are modeling techniques you can use to increase the overall robustness of your models.
Drawing tiny little lines to connect pieces of a trim curve instead of moving the two endpoints of the curves together generally messes up joining other edges together and tends to cause problems.
Sometimes the microscopic edges can be generated through other means, like Booleans where the objects are just off from each other by a little bit.
Trimming edges that are very small or curved back on themselves are the biggest cause of problems in models.
There are Rhino tools you can use to examine your model for these defects.
The first one to try is the Check command. If your model doesn't pass Check, then it will list some specific problems. You can just use the list to indicate that you might need to tune up the model.
If a model passes Check, it doesn't automatically mean that it is 100% properly structured, though. Some bad model parts, like having surfaces that fold back on themselves or self-intersect, are very time consuming and difficult to automatically detect, and Check doesn't check for those things. But it can check the general overall structure of the object.
The workaround is to Explode, Untrim, Trim again, and Join. If there are lots of tiny edges, then you may have to use the SplitEdge command to split all edges so they have a compatible structure, and then use JoinEdge to manually mate the proper pairs.
When there are long things and tiny things adjacent to each other, the Join command can get confused - when that happens, the low level manual JoinEdge can work as a replacement.
These tools are on the Analyze menu under Edge Tools. You may need to use several of these tools to fix difficult broken models as well.
Avoiding Modeling Errors
You can …
List command
Check and CheckMesh (v4) commands.
SelBadObjects and ExtractBadSrf commands