Is there a way to analyse a [dens] mesh for 3D printing compatibility?

Hi everyone
Is there a good way to analyse and find problem areas in a small model of a piece of jewellery.
Something that will analyse and perhaps mark Bad, Borderline and Safe areas with colours [in a similar way to some of rhino’s native analysis tools]
I have done manual checks with clipping planes in rhino and with Live Boolean in Zbrush.[it can do something similar to clipping plane]
Still there are many area I’m not sure about [too thin or too deeply undercut].
*it’s a very dens mesh of several million polys currently, but it can be decimated down to grasshopper needs. Model is intended to for print at high resolution [very small details] in wax, and cast in gold.

Thanks a lot
Akash

You can use the Check and MeshRepair Rhino commands (not sure if these are implemented in Grasshopper/exposed in RhinoCommon). They won’t check for thickness and undercuts though. I’d assume the relevant 3D printing software would be capable of such analysis.

Thank you
I’m regularly using the rhino check mesh to verify integrity.
The issue is with finding hidden areas where the mesh is too thin, in order to work on these areas.
there are too many details, not something I can reliably sort with the [available here] printing shop .

  • I don’t yet know grasshopper [only some interface basics] but from reading here on discourse, I was hoping there is a suitable way to do this kind of analysis…?

thanks a lot
Akash

I’ve never actually implemented, but did notice there is new RhinoCommon mesh method for Rhino 6 called Mesh.ComputeThickness. This might be what you’re looking for:

https://developer.rhino3d.com/api/RhinoCommon/html/Overload_Rhino_Geometry_Mesh_ComputeThickness.htm

Thanks,
that looks like I tool I would love to try
but I think it is only for PC though…? and I’m on a Mac here.
in addition :hot_face: I have no idea how to use Rhino Common API.
best regards
Akash

I’m pretty sure RhinoCommon is the same for both.

Here’s a quick go at implementing the method (I think it’s correct):

190910_MaxMeshThickness_GHPython_00.gh (16.8 KB)

1 Like

Hi Anders thanks a lot.
yes I can open your definition in the Mac, [there was a note there in the rhino common page that said required rhino for Windows 6.17 ].

Sorry for the Grasshopper newbe question,

  1. how do I reference my mesh ?
  2. what’s the max polygons that it can manage? the mesh is 3.5 mil at the moment . how far down [decimation ] do I need to go for the analyses to be workable…?

Hi
Sorry I remembered how to reference the mesh

but 3.5 mil is a spinning beach ball

looks like it compute each point on the mesh…?

You right-click the mesh parameter and select Set One Mesh

For that kind of performance, you’re probably looking at an entirely different solution (read: highly optimised C/C++ standalone application). You might be able to speed things up in Grasshopper by implementing the method in a compiled C# component. But since we’re essentially only making one call (i.e. there’s no expensive large IronPython looping going on), I doubt that’ll help much. Here’s a quick test with ramping up the face count:

Note that there’s also cost associated with outputting large amounts of data. But in this case (i.e. floats and lines), that is likely negligible.

I think a larger question might be: why is your mesh so huge in the first place, and are there measures you might take to have this not be the case?

thanks a lot

  1. do you know if there’s a way to stop it , short of force quit rhino.

  2. I’ll try with your 2nd definition later this evening.

  3. The mesh is dense because it is needed for sculpting small details [in Zbrush]. but I can decimate it quite a lot, so the question will be: what do you think is a workable range: 500k, 250k, 100k, less than that will deform the mesh too much.
    with best regards
    Akash

Hitting/holding the ESC button should force Grasshopper to stop computing. But this doesn’t always help when one is forcing Rhino to it’s knees :wink:

It’s hard to say, the error of approximation is always a case-by-case basis. That said, there’s only one way to find out. I’d try to shoot out meshes of different resolution and see what works.

Edit: Note that the method also has two additional overloads that might be useful.

Thank you very much
I’ll sit to study your suggestions in the evening.

best regards
Akash

Hi Anders
thank you.
Actually I don’t really know how to input the other 2 method into your definition…?
The one you shared worked with a 500k decimation on a this part of a ring


the sculpted part looks surreal.
But now I have no idea how to use all these thousands of red lines to find the problem spots on the mesh? [ this part is only about 15 x 15 mm. ]
many thanks
Akash

It looks like your mesh normals are facing the wrong way, such that the rays (I assume is the underlying method used) are being shot outwards. Try flipping your mesh vertex and face normals and see what that does.

thanks
here it is flipped

The lines go in the other direction as you said.
Unfortunately I still have no idea how to use these red lines to analyse the thickness… or to say it differently, I do not understand what the definition does? and how to work with it?

with best regards
Akash

Each line represents a vertex where the mesh thickness is less or equal to the MaxThickness parameter. Where mesh thickness is defined as the ray distance along the reversed vertex normal till you hit the inside of the mesh (if I’ve understood the method accurately).

Edit: It looks like your normals are still flipped, or that your mesh normals are fucked somehow. It generally is a good idea to provide files when asking questions/debugging.

Thank you.
I know the need to share files, unfortunately I can not share this file publicly.

And yes you are correct, It does have some normals directions and other issues, nothing that will impact printing though, which is what it is made for. The sculpted parts were not created in Rhino.

Perhaps for the sake of understanding the usability of the method, a simpler mesh will be more appropriate.
Then I’ll try to sharpen the question. let say I get the mesh to be fully Rhino good. Then I still have 500k red lines of data! as the method creates a ray for every vertex, how can this be used in practice?

many thanks for your patients.

  • I’ve been a goldsmith of many years, I know how to make this kind of tiny microscopical sculpted thing directly in gold just with hand tools, but coding and grasshopper is very challenging.
    and I’m trying to learn.

all the best
Akash