Using Grasshopper to Fix/Simplify Complex Invalid Mesh

Hey Forum,

I’m really stuck with a complex invalid mesh (see below for Rhino Mesh Check details), which I need to be able to work with for 3D printing. I tried everything I know to do in Rhino to fix the mesh and edges.

Mesh is here: https://app.box.com/s/7gyvs9u79g1klw4723yybkdorr6dpssu

Rhino Mesh Check Details:

"This is a bad mesh.

Here is what is wrong with this mesh:
Mesh has 12 non manifold edges.
Mesh has 1 duplicate face.
Skipping face direction check because of positive non manifold edge count.

Important things to consider with this mesh:
Mesh has 4915 normals that are not unit vectors, 4915 of which have zero length.
Although this does not necessarily mean that the mesh is bad, these normals can cause problems if the ultimate goal is for rendering purposes.
Mesh has 5875 faces where the face normal differs substantially from the vertex normals.
Although this does not necessarily mean that the mesh is bad, these normals can cause problems if the ultimate goal is for rendering or boolean purposes.
Mesh has 36 pairs of faces that intersect each other. Although this does not necessarily mean that the mesh is bad, it can cause problems if you’re doing mesh boolean operations with it."

Who knows what would be the best way to use to Grasshopper to get a workable mesh from this?

I have tried ‘shrink wrapping’ with Kangaroo, but couldn’t get settings to work ('Shrink Wrapping' Complex Mesh with Kangaroo (settings)) but wonder if there is a simpler way of rebuilding this mesh?

All ideas and suggestions will be greatly appreciated - I’m really stuck with it!

Kindest,

JJC.

It’s easy to remove duplicate faces, it is not easy to get rid of non-manifold edges. With the faces it doesn’t matter which one you remove, you always end up with an identical valid mesh. Non-manifold edges on the other hand are edges where three of more faces come together. Removing different faces will result in a different outcome.

Since there aren’t that many problems with the mesh, perhaps easier to bake it into Rhino and fix it manually?

1 Like

Hi David, thanks for your response.

I have manually fixed all of the non-manifold edges, so ‘check’ now returns the following:

"This is a good mesh.

Important things to consider with this mesh:
Mesh has 4915 normals that are not unit vectors, 4915 of which have zero length.
Although this does not necessarily mean that the mesh is bad, these normals can cause problems if the ultimate goal is for rendering purposes.
Mesh has 5879 faces where the face normal differs substantially from the vertex normals.
Although this does not necessarily mean that the mesh is bad, these normals can cause problems if the ultimate goal is for rendering or boolean purposes.
Mesh has 45 pairs of faces that intersect each other. Although this does not necessarily mean that the mesh is bad, it can cause problems if you’re doing mesh boolean operations with it."

However, when I reference the mesh into Grasshopper, the mesh component read ‘invalid mesh’

Any ideas why or how to deal with that?

Thanks again,

JJC.

1 Like

Does your download link have the fixed mesh?

You can use the Null Item component in Grasshopper to inspect data for validity. The D output should have more information about why an object is considered invalid.

2 Likes

You might try _RebuildMeshNormals / _UnifyMeshNormals to see if you get rid of some of the issues with normals and then reference the mesh.

2 Likes

Thanks both of you, David and Vanessa - I’ve managed to get it working now!

Much appreciated.

Excellent! Enjoy!

Hi everyone.
instead I have this definition with this invalid mesh in output, and I do not know how to smooth the mesh.

Can you help me, please?!
thanks a lot

Simone

Smooth mesh_ERROR INVALID MESH.gh (165.1 KB)

This could be a way.


Smooth mesh_ERROR INVALID MESH_re.gh (173.3 KB)

1 Like

:sweat_smile:

Thanks a lot!!

Do you have similar solutions for hexagons definition?

Thanks

S

If you are going to use weverbird Catmull Clack Subdivision in the last step, then, even if you use hexagons, the final result will probably be similar.