algorithmic modeling for Rhino
I have a problem with the "offset mesh" function in weaverbird. I had the same problem in Rhino and thought it could be solved in GH, but I can't find my way....
The overall problem is about overlapping surfaces, because the shape is very curved. I need to keep the outside of the mesh and need to offset inside the mesh. Do anybody know how to solve this?
In this case it could be great to offset in the direction only towards an axis in the center of the shape...
- and how do you make the offset solid?
Hope someone has an idea...
First image is the shape with no offset
second image is with offset showing the overlapping surface
here is a GH for offsetting a mesh without intersection. It used isosurface of Millipede. Weavebird is optional. I did offsetting inside the mesh, so I assume direction of faces of a closed mesh go outside. If you want positive offset you must resize the bounding box. I did use a million of point for isosurface. It was quite fast on my laptop.
Hope it helps
It seems to work!
That's great. Thank you so much!
.There is a little bug in my definition. In order to see if the distance is positive or negative (inside) between a point "xyz" and a mesh. I determine the closest point between "xyz" and the mesh say this point is "Mxyz". I evaluate normal at "Mxyz" and I make a dot product between this normal and the vector Mxyz->xyz. In certain point the normal tend to invert results, so there are strange isosurfaces. I think for a smooth surface that is impossible but for a mesh it seems to happen !
Instead I must code the algorithm inside or outside a volume using the party of numbers of intersection.
Thank you! I have to check that more.
thumbs up for this tool!
Yes, really neat! This really proves the potential of isosurfaces in mesh healing, should it had ever been in question.
Updated script with mesh healing and also option for offset distance with real unit.
Thank you for uploading this. I am working on something really complex, I have tried to offset with Rhino native offset and wb or even zbrush, but, they are all some how generating intersecting parts which I can not print.
I have downloaded offset_mesh_withoutself_intersection_v3.gh and installed meshedit, millipede, but, when I run the v3.gh and picked the mesh, e.g. a mesh sphere cut into half, and pick the cutted half, it is really really slow, I do mean slow, after like 1 or 2 mintues, it gives me nothing, I clicked output mesh, there is nothing, I am sure the preview is on.
Am I doing something wrong?
Some new scripts more stand alone (without the need of Millipede) if needed. Not optimized for speed (no multi-threading)
Isosurface extraction using a rectilinear scalar field (here distance from a mesh)
1) rectilinear scalar field representing the distance from a closed mesh
used to obtain the offset of a mesh for example with a classical marching cubes, here iso-surface from Millipede
2) Marching tetrahedrons
based on Paul Bourke program
3) Naive surface nets/dual contouring without smoothed vertex (could be non Manifold)
Idea from Mikola Lysenko
4) Naive surface nets/dual contouring with smoothed vertex
Could be used to obtain quad mesh from a triangular mesh (could be non Manifold)
Idea from Mikola Lysenko
* MaxRes is the maximum number of cells in the longuest direction of the bounding box
* Factor is used to expand bounding box if you want positive offset
* Offset is in real unit, so it couldn't be less than the thickness of the object