Tips for dealing with extremely short mesh edges?

Does anyone have any tips for dealing with extremely short edges when working with multiple intersecting surface meshes in Rhino/Griddle? I often find that after using GInt, the resulting surface meshes, while conformal, may include extremely short edges. These short edges can cause GSurf to fail or produce funny results (i.e., mesh holes). Short edges can be eliminated on each surface mesh by using the AlignMeshVertices command in Rhino but conformability between the meshes may be lost. Alternatively, the meshes can be joined together before using AlignMeshVertices, and subsequently separated, but this is cumbersome when dealing with a high number of meshes.

Any other ideas?


It is not unusual to get very small edges when doing mesh intersections. This depends on mutual location of original mesh vertices. Clearly, it may be hard to deal with such tiny edges especially if their length becomes comparable to Rhino unit tolerance (or below it). Then all sort of things may happen including problems you described. Obviously, if you try to eliminate short edges by merged nearly coincident vertices, you may loose conformity, so this is not a good approach. Here are few other things you may consider doing.

  1. Before starting to work on your model, evaluate number of elements/faces in all surface meshes and decide if mesh resolution is appropriate or if it is too high. Working with very large models and high-resolution meshes will slow down whole process and may create issues with intersections and remeshing. Thus, it is recommended to reduce number of faces per mesh (_ReduceMesh command), so each surface mesh contains less than ~20-40K faces and total number of faces in the model is ideally < 100K. Note, that is only on the input side, the output may contain many more faces. To check number of faces, use _PolygonCount command (can be applied to multiple meshes).

  2. Use higher tolerance in GInt to merge nearby vertices and essentially avoid tiny edges. Note that very high tolerance may lead to distortion of initial meshes, so you have to find good balance (sometimes you may have to try multiple times to see what works)

  3. Try to initially remesh all surface meshes to have larger face size which will lead to better intersection results. Make sure to keep meshes separated. After that you can do GInt and then GSurf again, this time with the desired parameters.

  4. If you have very short edges in the model, you may not be able to get good results from GSurf if you use large MinEdgeLength vaue. In this case, remesh first time using smaller value (depending on how small your edges are) and then remesh again using desired/larger value. Also, if you are trying to create AllQuad mesh, it puts much higher demands on input mesh quality compared to other modes.

In general, I can say that we have been working with rather complex models containing tens to hundreds intersecting meshes, and if they are cleaned and prepared well, (final) remeshing and volume meshing work well too. However, each particular case may require slightly different workflow.