Mesh Weld not working + normals won't unify

I’m trying to calculate the volume of a mesh but as the title says there are two important steps that are not working and the resulting panel does not show a single mesh. why is that?

Gyroid unit (37.7 KB)

I haven’t looked at your file, but it seems like you need to flatten the “Result” output of the Merge component.

flattening the result output managed to give out a single mesh, thanks!

however, there is still the problem where the normals won’t unify properly, is it because the shape is too complex for the unifymesh component? also this leads to an orange warning message that says “can’t calculate volume reliably for open meshes”, and now I’m not sure if the resulting volume is accurate or not (also why is the value negative).

sorry for the follow-up questions, I’m just trying to learn grasshopper and I’m running out of learning resources :pensive:

EDIT: I manually selected the wrongly oriented faces using list item and a panel and flipped their normals, recombined them with merge, but the volume component still gives me the warning message that it’s an open mesh, although the value of the volume given is larger now.

EDIT 2: I’m guessing the reason is that the shape is composed of two separate non-touching blobs in space. maybe there is a way to filter the data into a more logical format to input into the volume component?

what am i doing wrong?
updated file:
Gyroid unit (37.8 KB)

Your mesh needs to be water-tight (closed) to be able to compute its volume.
For open meshes, the computer can’t differentiate between an inside and outside space, and thus there is no volume to calculate, since there is no inside.
This may also be the culprit that leads to the fail of normal harmonisation. If you think about it, if the inside volume can’t be determined, how should the computer know which normals point outwards and which inwards.

It seems like you forgot to internalise some data in your file. It’s missing the “base” mesh.
If you want me to take a look, upload a file with the mesh internalised, because I’m also missing at least 2 plug-ins that you use and which might be superfluous.

here you go, I hope this includes everything you need:
please let me know if there are still missing data
Gyroid unit A (150.0 KB)

EDIT: here is a tidier version of the file so that it’s easier to navigate through
Gyroid unit A (144.9 KB)

You can do this to close the mesh and thus make it water-tight:

The only plug-in necessary is Weaverbird. It’s mesh algorithms are usually superior those in vanilla Grasshopper.

Gyroid unit A (158.0 KB)

1 Like

thanks a lot!
I’m gonna study the different components introduced in your version of the file :+1:
I see that you managed to calculate the volume of both of the two separate blobs which is great.

1 Like

if you have the time please explain the following:

you manually patched the naked curves by merging 3 lines of data,

1- why did you cull the last vertex in the first one (cull-1)?
2-why did you shift the vertices one step forwards in the second one?
2-third one, I don’t know where to begin :laughing:

you used shift paths for construct mesh and weld with offset -1, which means that you repeated each command twice if I’m right? and so why did you run the components construct mesh and weld twice for each?

is this common grasshopper knowledge or are most people out there too inexperienced to understand the methods that you just used? (weird question I know but I’m just trying to get a sense of the learning curve for the software).

If I get to understand your method in this file, I think I would be taking a large step forward in my learning journey.

OK, imagine the naked vertices of one of your openings. They are kinda oriented or sorted in a circular fashion - one after the other -, around the naked mesh edge.
Now, to close each end, you need to construct a mesh cap which exactly matches this border situation in terms of matching vertices, otherwise you won’t be able to join and weld everything later.

I kinda constructed mesh faces that look like pizza slices. This is done by connecting each vertex to the next, adjacent vertex and then to an average point of all the border vertices, kind of a center point. Shifting removes the first vertex and usually places it at the back of the list, which it doesn’t here since I set Wrap to False. This entails that each original vertex now corresponds to its adjacent neighbour in the shifted list.
Since wrapping is off, there is one vertex less in the shifter list and that’s why the last vertex is culled from the original vertices. It has no corresponding, neighbouring vertex to connect to, since it’s the last one.

Yes, I first join and weld all corresponding, adjacent triangles that make up the mesh caps.
Then I join and weld the mesh caps to their corresponding meshes in order to close the latter and make them water-tight.

Hm, hard to say. I guess most seasoned users should understand it. Don’t worry, the learning curve is quite steep, that’s totally normal. It took me months and years to get certain things. Just keep practising, if Grasshopper and parametric design are topics that interest you, and you’ll be fine.

1 Like

Thanks for answering everything!

  • courage continues to panic *