Filling intersecting curves

I try to make an asset consisting of multiple filled intersecting closed curves .

I don’t want to keep the curves a separate Objects, for performance and ease-of-use reasons . But filling the Joined version doesn’t work as expected, any ideas how to solve this ?

(i prefer to avoid removing the intersecting parts, for easier procedural work)

Joint fillled curves do this thing of “making a new border/excluding each other” (??) : you have a filled circle (disc) and join another smaller filled circle then you got a disc with a hole (2D torus??)… so joining filled triangles is a bad idea… For this example you might want to look at Addons-> Extra Objects: Simple Star or even consider Geometry Nodes ??

There should be a way to disable this behavior, because its a post-processing optimization and not required .

This behavior is the wanted for filling curves (which is only done on 2D). Because you don’t have different filled curves but joined curves which will be filled in a global way. The example with two circles makes no sense if each one filled… this would be two overlapping discs… which will do polygon depth fighting while rendered. You want something like booleans…

They would be a different filled curves joined into 1 Object . For the intersection processing there should be a function (and the current function is obviously flawed) but not a mandatory limitation for Join .

I tried to explain: this behaviour is something like that of trimmed curves on surfaces. You use two curves to define an inner and outer border. If you do cross this borders the result is not nice because never was wanted:

1 Like

I did understand what you mean . The intersection functionality (inner circle) is a feature, but the borders crossing is expected to be supported (correctly / no intersection-based processing) . Thats why the intersection function should not replace a basic Join (it should present as a separate command or mode) .

Hum, it’s still a work in progress and will be later available into blender, but it looks like it may help you there :
It looks like there is a similar function into grease pencil, so maybe convert the curve to grease pencil, do some cleaning and convert back to curve…
It’s a bit clumsy but you may find a way that can prevent cleaning all this by hand.

Anyway, curves do work like this in blender as Okidoki pointed out.

Maybe another approach would be to use geometry nodes to fill the separated curves and join them back as a mesh, but it’s probably not the best solution for you either.

1 Like

as a mesh

This could work only with straight lines . They keep the color, but can’t be exported as Vector Graphics .

Do it as a two-parter: make a shape that can be filled by adding another curve after the first operation.

Not sure that i understood what you mean . If try to join not-filled to filled, they both become unfilled, after that, fill>->broken .

Truly, what I said won’t work.
I can only presume you are speaking of a much more difficult shape that you want to work on.

I will try the Curves-to-mesh addon when I get to my home machine.

Ah. Ok.

Flexi Bezier Tool


I’ve noticed something more . As far i see here is no way to specify filling color per curve . So with more complex object, if the curves are joined they will be of the same color .

Blender truly should do the filling per curve, and not per object as it does now .

IDK your background but in 3D usually multiple curves in one curve object can have only one color/material for the constructed geometry. And…

Construction a 3D object with crossing borders make no sense something like the Klein Bottle is 4D. Maybe in 2D vector applications someone uses this technic to make some shapes. But you may be more interesstet insisting on your should… then in making a solution to the construction of your multi segment object (like using exta robject star, constructing with array modifier around an empty or using geometry nodes). Anyway: Happy blending.

Oh, yeah, they are rendered as polygons with material . Thats why per-Object, you are right . I was thinking about “Object”-s’ management, but considering current Blender’s setup, work on such functionality may be excessive .

In 3D, crossing borders are avoided because of performance, rigging and workspace/view cleanup, this has nothing to do with 2D functionality (which is subject of the topic) . Even in 3D most of objects are made from simple ones, its not expected that you develop a star-constructing function instead or duplicating and turning triangles (2D or 3D) . In 3D i would then execute an intersection function (or use some kind of duplication which does this automatically), in 2D this is not needed .

Current Blender’s setup in regard to the topic’s subject is just a consequence of that someone though that Join is not important for Vector Graphics . Its partially true, but Blender doesn’t operate on 2D canvas, it does on 3D scene . That makes Join needed .

Per-faces material assignment actually works per curve, i’ve missed the feature at all . But on Join it doesn’t preserve (convert) existing material assignments, but should .