Weird kinks when shading/rendering/exporting with 'clean' solid

hello … i’m bangin my head against the wall trying to figure out this problem.

I have a pretty clean solid and the patches and isoparms align perfectly but when shading/rendering and exporting to polygons i get kinks, i don’t quite understand why.

Heres an example:

wireframe looking perfect

and shaded showing the kinks

Hi Chris,

It’s hard to tell what causes the anomaly in this particular situation so if you can post the part of the model causing the problem others can have a look at it. The problem is probably something in the NURBS geometry causing the mesher to create the kink.
For now Some more info on meshes:


Hi Willem,

thanks for your quick reply, here is the part of the model causing the problem.

Hi Chris,

It’s indeed because of the mesh settings.
The kink appears where 2 surfares are joined:

A way to solve this is adjust the mesh settings when exporting.
For the display in the viewport set the Mesh settings in the document to Smooth&Slower or a custom setting.

Something that also affects the mesh generated by default is the unit settings.
Are you aware of how small this detail is in relation to your tolerance settings?
If you set a smaller tolerance and _RefreshShade the objects, the mesh already improves


wow, i would never have guessed that the display and unit settings would have an effect on the actual mesh, thanks so much for taking the time to help me ! At least now i know where to look …

btw, i know that the i am using very small features since this is all related to CNC where i need with 0.1mm precision.

If you need features of 0.1 mm I’d say your current tolerance is too large.
I would suggest to set it to at least 0.001 mm if you need reliable features of 0.1mm

In your file with cm as units that should be a tolerance of 0.0001


ok so i’ve investigated a bit further … in fact the previous model i sent i had saved on the Mac version which i rarely use (i use the PC for all things 3D and CNC but the Mac for Office and Graphics/linux stuff) that’s why the tolerances were wrong … the original file had already set the tolerance to the settings you suggested, and i faintly remember having googled this a few years back and from then on worked with and paid attention to the tolerance.

i think what i’m really having trouble understanding is how i can avoid these meshes which seem rather random to me, have a look at this screenshot:

on the bottom there is the polysurface and on top the mesh conversion … why does it mesh the tip (center part) and the sides (left and right) differently ? in my mind the ‘edge’ (front) should be meshed the same way (all quads) all around and i don’t get why it starts at some point meshing it with tri’s. This particular model was modeled with t-splines and then converted to a rhino object, but i’ve done it in several different ways, lofting, sweeping, patching, blend surfaces, connect surfaces, curve networks … but i never manage to get a predictable poly conversion, no matter how ‘clean’ i try to model the nurbs.

the background why this is bothering me is that i need/want to export a large quantity of my products for WebGL and these random mesh changes cause a lot of display problems if the mesh is not homogenous. Since the number of faces greatly impacts the filesize of a WebGL model i’d ideally need a pretty low resolution mesh. But even when i crank out the maximum number of faces from the poly conversion this doesn’t fly, in reflections and shadows there are always visible seams and i can’t have that since they do not exist in the final milled products. remodeling all my products as quad poly meshes just to use them for WebGL from scratch is really not an option so i’d love to understand where this is coming from and how i can avoid it in the future, or hopefully even ‘fix’ my current models to be able to get a clean poly export from them.

another quick question: how do you embed images in a post on this forum ?

Both drag and drop and using the upload icon in the toolbar above the message window should work.

so i went over all the documentation for meshing in Rhino and still can’t figure this out …

Can you post the file using the upload icon (an arrow in a cloud)? The link above for the file from the original question isn’t working. I’m betting you can get a more even result with some custom mesh settings. These will probably have to change based on the geometry you’re meshing of course, but I can take a look and show what I’d use if that helps.

hi Brian, not sure why the link is not working for you, tried from several computers without problems.

But here is the file again:

kinky.3dm (161.2 KB)

Thanks Chris,
Would this result work for you?

kinkymesh_BrianJ.3dm (445.7 KB)

You can additionally run QuadrangulateMesh on the extracted render mesh to further reduce the number of tris. The meshing produces these triangles at seams in the polysrf.

thanks a lot Brian … yes this is a bit better, i’ve been playing with the detailed mesh settings as well these last days and am getting much better results now. But what i still don’t get why it makes tris at all at the seams … even looking at the picture you posted, there is no reaon at all to put tris there, you can plainly see that this could be an all quad structure without problems.

When you look at the nurbs patch the information to make a perfect quad poly object is all there,just transforming the nurbs patches into quads would result in a perfect poly mesh, so why the conversion generates tris and complicated tri meshes at the seams is beyond me.

is there any way to completely avoid the seams being meshed with tris ? Is there something i could do while modeling in NURBS that would avoid this ?

One answer is that the srfs in the polysrf if flattened wouldn’t create a perfect four sided boundary with sharp corners. Think of the render mesh in all quads as a piece of graph paper. If we Explode the polysrf into it’s three separate trimmed surfaces and use Squish on the pieces, you would see that a flat piece of graph paper laid over the flattened pattern would leave quads in the graph partially hanging over the trimmed edge. These are the areas that must get broken down into tris in order to keep the render meshes of each separate surface connected.

Another answer would be that the Rhino mesher just can’t do what you want currently. A new algorithm which tries to make all quads would have to be developed. This is actually in the works for v6 but it won’t be used for creating the render meshes as this needs to be done quickly and using tris is faster.
(@DavidEranen may be interested in this conversation)

No, you can’t avoid tris at trimmed edges but you can model in such a way that the seams are reduced. In the attached version of the file, I used Untrim and then MergeSrf to make the three surfaces one. I then pulled the trimming curve preserved during the Untrim back to the single surface and trimmed it again. This removed the central seam. I then used some custom mesh settings as shown to get as many quads as possible from the mesher. Again QuadrangulateMesh on the extracted render mesh will remove a few more tris.

kinkymesh_BrianJ_2.3dm (1.2 MB)


hey Brian, thanks so much for your detailed replies … i’m swamped with work right now and didn’t have time to look into this further. The last image you posted looks exactly what i was looking for so i’ll read up on Untrim and MergeSrf so i can avoid the weird tris in the future when creating new models.