Page 1 of 1

Mesh filter by value, "too" agresive

Posted: Thu Nov 24, 2022 4:58 pm
by PablerasBCN
Hello,

I meshed a point cloud, I computed verticallity and I whanted to separate the mesh using it.

Image


After filtering the data, the border triangles on the wall are lost

Image

this is testing 2.13.alpha, but was like that in the previous stable version too.

Re: Mesh filter by value, "too" agresive

Posted: Thu Nov 24, 2022 10:16 pm
by daniel
Yes, that's because CC is not able to do anything smarter than remove the whole triangle if one of its vertices has a value outside of the filtered range.

One option would be to convert the mesh to a dense cloud, then filter the resulting points, and eventually re-create a mesh based on the filtered points (with 'Poisson Reconstruction' for instance). But that's a bit tedious...

Re: Mesh filter by value, "too" agresive

Posted: Tue Nov 29, 2022 2:37 pm
by PablerasBCN
thanks for explaining what triggers the issue.

I already have the dense cloud, since the mesh is generated from the dense cloud.

Yet, the problem of doing as you say, is that the meshes will not have exactly same edges and there may be gaps, and for sure intersections.

As it is now, I can´t think of a solution either since the selection of faces is not done at face level but at vertex as you pointed.

The only thing I can figure out, to be modified in code, I mean. ( I know the todo list is infinite). Would be somethink like to have an array of all the faces and when filtering by value, every face goes one way or the other. I think valid criteria would be that the face that has 2 vertex in one side of the filter criteria, then that face goes there.

Re: Mesh filter by value, "too" agresive

Posted: Sat Jan 07, 2023 10:47 pm
by PablerasBCN
so, I'm again/still struggling with this.

I understand the base issue, I think there is an easy solution. You leave the first split criteria as is.

Since we're dealing with faces, and we're starting with a known number of faces, each, I understand will have a face id, hence if you do an array of face id's of all of them, once you remove the first part, simply remove from the list the ones split, and the remaining face id's are kept, this way the won´t be a gap.