[Edit: Category → Grasshopper Dev]
Ok, so I’ve been thinking about this problem for a while - more specifically the problem with medical scans which typically are filled with mesh fragments and tunnels and… all kinds of crap - crap which you would typically like to get rid of.
In my case I had the need to get rid of “marrow” from the scans so that it would not affect many of the algorithms I had for making different measurements aso.
Q1: Does anyone have this problem with crap-filled meshes which Shrinkwrap doesn’t solve?
Although the Shrinkwrap concept came into existence while I was struggling with this problem, to this date I’ve not tried it out extensively, so I don’t know if it can fix all the problems we face with crap-filled meshes. But what I have tried is dozens, if not hundreds of approaches to cleaning them up, but none of them was very good at it, or were too slow or “involved” or just not very useful in practice.
Then one day it dawned on me. How to clean out the inside of meshes with one (conceptually) simple method.
I hacked something together and tried it, and long story short, it worked.
The method is predictable with simple to understand parameters to adjust how aggressive it performs its cleansing (like how much (width) of a tunnel-opening it would cut out etc). Only limitation I’ve found (depending on overall shape of the mesh) is overhangs, but if known minimum concave radii in the surface of the shapes is greater than half the thickest part of the mesh, then not even that is a problem. If not, one can segment the mesh (splitting out overhangs) and process them separately and re-join then again after. Since tunnels will be cut out, the algoritm will leave holes behind, when needs to be filled. No big deal, but needs to be pointed out (the algorithm cleans and cuts, it doesn’t “heal” so to speak).
Enough about that. The first question if of course - does anyone have this problem with crap-filled meshes which Shrinkwrap doesn’t solve?
Q2: Second question is: If Shrinkwrap doesn’t solve all problems, which problem(s) are those?
Q3: Putting it all together - is there any actual need in the community for an algo that does what I describe?
If there’s enough interest I would consider taking the time to make a description of the algorithm in more detail (the core idea can be illustrated with one simple picture) and the smartest C# programmers in the community could join in optimizing the code to make it perform even faster (I’ve not done any code-optimization whatsoever this far).
//Rolf
Examples of mesh scans full of “marrow”:
Glenoid:
Scapula: