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

Hi everyone
After not finding a workable solution for analysing thickness here in Rhino, I quite blindly sent that piece [that i used as an example here], for 3D printing and had it cast in gold.
It came out with lots of too thin and border line areas.

Then just last week the analyses tool I was looking for came out [albeit not in Rhino] with the Zbrush2020. There you can set min thickness [and max]. and it gives a colour gradient analyses. similar method to what Rhino use in some of it’s analyses tools.

I strongly feel Rhino very much need to have its own version of Thickness analyses. it so important for 3D printed part, more so now with the development of the SubD suite, when more organic [difficult to measure] things, become an integral part of Vanilla Rhino.

thanks a lot
Akash

Try

ThicknessAnalysis

in Rhino? It’s by no means perfect, but might be worth a try.

Thanks
I didn’t realise it was there…
Only I can’t get it to actually work. [on the WIP]
first try on a very simple object, it crushed rhino.
second try on the same mesh as pictured above in this thread, it simply gave up after a little while.

  • also the control window was unresponsive, could not enter the values.

Does it works on your end? [it could be a Mac issue on my side]

with best regards
Akash