My first post here but I was lurking the forums for many years.
I have many issues with blender curves, I googled and searched but did not find any solutions to some things I would assume to be extremely basic and some other that are less so.
Some basic stuff first:
Merge vertices on a curve - Currently I do not know of any way to merge vertices, you need to connect the gap (F) and than dissolve (CTRL+X) the unwanted vertex, this is fine if you have few vertices to connect, but I have thousands, how would I go about it? the current method is absolutely killing me. (I know that this might an issue because if you have a “three way split curve” blender wouldn’t know which of the vertices to merge, yet still I find it odd no easier method is available)
subdividing a segment (i.e. adding a vertex on a segment) currently the only way I know is choosing the vertices at the ends of the segment and than hit subdivide. Again, this is ok if you have one or two, but I have a lot, is there a way add a vertex by let’s say clicking on a segment where you want the vertex added? like a knife tool or slice?
Seperate curve by loose parts - With meshes, you can select all and than choose “separate by loose parts”, this give you separate mesh objects in one click. But if you have a curve object with multiple separated splines inside it, I have to select each spline by hand and choose separate. If i select all and choose separate, I just get a new curve with all the splines inside and the old curve is now empty. Again, if I had several curves that would be ok, but for the life of me I don’t understand why this is not possible? is there any way to do that?
More complex stuff:
Geo nodes Issue one - I get data from OSM with many curves all in “poly type” I want to round (convert to Bezier) and optimize (reduce vertex count) them but still maintain the shape of the original curve, doing this manually is easy but I have thousands, so I managed to find a way to do this with geo nodes (after doing ton of manual clean up anyway due to reasons listed above), but now I can’t apply it, I need to convert to mesh, but when I do that, I lose the Bezier handles and just get tons of points again, so the curve is round and smooth but I get a lot more points I don’t want. Is it possible to keep the actual curve somehow and “export” it outside of the geo node environment?
Geo nodes Issue two - part of the manual cleanup I need to do is separate all splines inside one curve object into separate curves objects just because I do not know of a way to handle multiple splines in go nodes.
If I have a curve object with multiple splines, geo nodes will ignore most of the nodes even if I convert it to mesh, or will operate only on a random single spline (I also have no idea how blender choose which of the spline to operate on). Is there a way I could do all this in geo node? i.e. separate the curve to individual splines inside the geo nodes environment and then be able to select which one I am working on? so I don’t need to manually separate and clean all the curves?
I have lots more issues with Blender curves but I am so exhausted from it that I forgot many of them. it seems that every solution I found I just led me to another issue due to how limiting curves are in blender. I know there are many things I don’t know so it’s not about bashing blender, but I am on this for several days and didn’t find a single solution yet, so here I am.
well… for curves:
there is the addon Curve Tools, Simplify Curves+ and also Curve Edit Tools (only insert ?) which i TBH honest mostly have not even enable because i do use curves very rarely. And (of course) some more. But as far as i know for selecting the segements directly there is none. Then again i could have missed that.
One possibility to select segments is to bind the Select → Select Next/Previous to two hotkeys and so select a control point and the next/previous to have the segement. But then for mutliple ones you have to consider the direction first, select all CP’s on one side and then next/prev…
But the Curve Tools has for example Join Neighbouring Splines using threshold with adding a segmentor or joining at midpoint. Also remove doubles, booelan operation, split at vertex…
( To increase possible solutions for every single problem you may just ask for one or the other problem in a thread by its own… for example judging at the headline no geometry nodes guru might look into this one here )
Doing anything many times is best done with geonodes. It’s a bit of a round-trip, because merge by distance doesn’t work with curves, but you can do this :
I had never tried but it seems the separate operator for curves is a bit lacking… perhaps it’s not too complicated to bring it up to par with the mesh version if you know c++
I think this might have been a mistake on my part trying to use some nodes that are intended for meshes and not curves.
ctrl+click with the curve pen tool
HA! thank you, I have no idea how I missed that. was too preoccupied with all the rest of the issues i guess.
Doing anything many times is best done with geonodes
True, my problem with geo nodes in that regard is that after you to convert back to curve in order to “apply” the geo node tree, you must convert it to mesh and than you lose the Bezier aspect (i.e roundness) of the curve.
I guess I could just do it all in Poly mode and that kind of solves that, but than I am back to square one because I now have a merged curve but I still need to make it Bezier type and move handles manually because if will do that in Geo nodes, i am back in the same loop that I will get many unwanted points after applying the tree
One often has to specify Spline Index and such when working with multi-splines in geonodes. People can tell you more if you show specific examples
Hey thanks! I assumed as much, I know how to that with mesh vertices, with neighboring vertices and some compare node, but couldn’t find how I use the index node on a curve in order to select a specific segment or spline
There are quite a few ways to specify anything about splines: all of it scattered across Geometry, Curve Read and Curve Topology menus. It takes a bit of research to figure out what’s what (good luck guessing the function just from node names XD ).
Regarding applying the GeoNodes Modifier though, keep in mind that we can’t get editable curves out of most modifiers. Anything that’s considered a “constructive” modifier cannot be applied (yet?).
There’s been a lot of improvements and Geometry Nodes (and probably Grease Pencil, in a way) made life so much easier, but they are not exactly backward-compatible with “classic” curves (as far as I can tell).
Depending on your goals, you might want to take a look at Python scripting maybe?
I don’t understand why you would need to do that?
Well eventually I need to work with curves, the whole point of curves is that you can have few points and than you use the handles to get a smooth shape the way you need. I hope the image illustrate what I mean
just to merge vertices it’s ok, because I can indeed keep it all in poly while doing it, so I guess that is a different issue than the merge per say
When you convert to Mesh, it returns evaluated Geometry - that is, all the points that you see are made into actual vertices.
I think I can see a way to do a little trick to get editable bezier (maybe).
So we need at least 6 points to convert NURBS spline into Bezier. It then returns spline made of 2 points - those that were 1st and 5th in nurbs, and the rest were turned into handles.
From this, I assume we need the geonodes to return a poly spline that is made of both points and handles between them. I don’t think there’s an in-built way to get those, so:
capture handle positions for each control point;
convert spline to Points;
make 2 duplicates of every point;
fortunately they will be in the exact order that we need, duplicate index will help us determine which point is which: left, control, right;
set their new positions based on the index;
convert Points to spline: it will be a poly-spline by default, not generating any extra points between controls.
convert spline to NURBS (I’m not sure why it works that way) ;
finally, convert spline to Bezier.
I think, it might work?.. Unless I’m missing something extremely obvious.
Of course, it almost guaranteed to lose any Radius/Tilt information, if it had any of interest, so there’s that.
Some modifications would obviously be needed for multi-spline, but it should be possible
Hey sorry for the super late reply (had some real life issues lately)
Appreciate your help, that is also what I came up with more or less.
Not perfect but good enough