must have for procedural modeling approach via Sverchok
66.7%
Development Status:
Open
Upvote2Downvote1
c
chibo
30 Sep 2021
6 Comments
s
softyoda
I don't understand how the threshold would work.
To have some loose part but not every, why don't you just select random vertices and ctrl+L to select linked, and then separate ?
I agree a select random loose part would be better to just select for example 50% of loose part.
If you are referring about the dot of J and I then a threshold wouldn't solve your issue and i don't think there would be anything that solve your issue other than python script to separate by letters.
c
chiboAuthor
by distance obviously
because i'm using Sverchok and because of it's procedural nature, i simply can't do this
plz explain how to separate letters via python?
s
softyoda
i don't think the loose part algorithm could work by testing every island near islands. It would take a lot of processing power, maybe not that much for text, but would completely freeze if done by billion points mesh.
1
c
chiboAuthor
i don't care about processing power, i have AMD 5950X, all i care - it's my work, which is must be done
L
Lauloque
Maybe you don't care ; but developers would, I'm afraid.
I am not savy on the code behind the
Seperate by loose part
, but I don't think it involves any notion of distance. Since mesh data contains the connections between each vertice, I guess it just floods the mesh until there's no connected piece left; Instead of looking in the blind from arbitrary point up to a distance.
Anyway it could be nice to have some sort of
Separate by distance
, maybe it would not be the quickest thing to to, but it can have a usage.
2
s
softyoda
If you really need it, and you don't care about computing power, you can ask a developer or create a small python script yourself that does just that:
an example of what I would do:
separate by loose end
do a for loop of every selected mesh and assign to array
do a for loop of that array of mesh :
do another for loop of every vertex of the mesh in edit mode:
assign new data properties that is the ID of the island (could be vertex color or something else better optimized)
merge all the meshes in the array
enter edit mode for this mesh
do a for X loop of all vertices :
make another for loop of all the other vertices :
create a list [X] of tuples that stores the vertex ID (from the vertex colour) and the distance of the vertex from the current vertex (vector3 distance).
Once the loop is complete,
you can create another loop of every colour ID (the original colour of the vertex) that exists, and this loop will loop through all the vertices again(but not blender list, yours) to find one with the selected colour, once this is done it will select the related vertices, and compare each selected vertex to the distance vertex array. It will store those below a value, and select them all, as it is in the loop, I will select all the other neighbours of the selection, and once there are none left, it will split the selection and continue the main loop to make every colour ID that exists.
That's what I would do if it was just my problem.
But I'm not a developer, and I'm sure a real developer would use an octree or a poisson disk, which is beyond my knowledge.
My method should work, but since I'm looping my vertices twice, it will require exponential computing power as the mesh gets more vertices.
6 Comments
I don't understand how the threshold would work.
To have some loose part but not every, why don't you just select random vertices and ctrl+L to select linked, and then separate ?
I agree a select random loose part would be better to just select for example 50% of loose part.
If you are referring about the dot of J and I then a threshold wouldn't solve your issue and i don't think there would be anything that solve your issue other than python script to separate by letters.
by distance obviously
because i'm using Sverchok and because of it's procedural nature, i simply can't do this
plz explain how to separate letters via python?
i don't think the loose part algorithm could work by testing every island near islands. It would take a lot of processing power, maybe not that much for text, but would completely freeze if done by billion points mesh.
i don't care about processing power, i have AMD 5950X, all i care - it's my work, which is must be done
Maybe you don't care ; but developers would, I'm afraid.
I am not savy on the code behind the
Seperate by loose part, but I don't think it involves any notion of distance. Since mesh data contains the connections between each vertice, I guess it just floods the mesh until there's no connected piece left; Instead of looking in the blind from arbitrary point up to a distance.Anyway it could be nice to have some sort of
Separate by distance, maybe it would not be the quickest thing to to, but it can have a usage.If you really need it, and you don't care about computing power, you can ask a developer or create a small python script yourself that does just that:
an example of what I would do:
separate by loose end do a for loop of every selected mesh and assign to array do a for loop of that array of mesh : do another for loop of every vertex of the mesh in edit mode: assign new data properties that is the ID of the island (could be vertex color or something else better optimized)
merge all the meshes in the array enter edit mode for this mesh do a for X loop of all vertices : make another for loop of all the other vertices : create a list [X] of tuples that stores the vertex ID (from the vertex colour) and the distance of the vertex from the current vertex (vector3 distance). Once the loop is complete, you can create another loop of every colour ID (the original colour of the vertex) that exists, and this loop will loop through all the vertices again(but not blender list, yours) to find one with the selected colour, once this is done it will select the related vertices, and compare each selected vertex to the distance vertex array. It will store those below a value, and select them all, as it is in the loop, I will select all the other neighbours of the selection, and once there are none left, it will split the selection and continue the main loop to make every colour ID that exists.
That's what I would do if it was just my problem.
But I'm not a developer, and I'm sure a real developer would use an octree or a poisson disk, which is beyond my knowledge.
My method should work, but since I'm looping my vertices twice, it will require exponential computing power as the mesh gets more vertices.