# Merge Curves via Geometry Nodes

I'm trying to create speech bubbles using Geometry Nodes, allowing for different shaped tails and positions of the tail.

I can't figure out a method to join the curves in a smooth way such that the edge of the curve becomes one continuous line around the outer edges of my two curves I'm trying to merge into one.

Here is what the outcome should look like (this one is just handmade) I am using a Curve Circle for the speech bubble and trying to add in a new segment using a secondary curve.

The idea for this setup for the speech tail is so I could create variations, like the wavy bubble here, or this thought bubble, or just have a curvature to the pointer. I had some success with Curve to Points > Points to Curve, but I can't figure out how to re-order the point index values or move the start/end point. I also think I need to delete the points that are within the bounding box of the pointer, but I don’t know how.

• Do you need the fancy pointer, or would a variation on this do, (just displacing proximal points)? Plus, I suppose we could ask, do you need a convenient interface to text .. billboarded to camera ... etc ? Commented Jun 4 at 12:02
• Oo, and it could use a fillet curves node to give the offset point more resolutions and make a profile that you might want 🤔 Commented Jun 4 at 19:07
• @RobinBetts I'd like the fancy pointer so I could create variations, like the wavy bubble here, or the thought bubble, or just have a curvature to the pointer. I had some success with curve to points -> points to curve, but I can't figure out how to re-order the point index values or move the start/end point. I also think I need to delete the points that are within the bounding box of the pointer, but idk how. Commented Jun 5 at 7:17
• @shmuel this is not a bad idea, I wonder if I could somehow get the new points to conform to the shape of a nearby curve by proximity. I don't know how to set up the proximity properly, any help is appreciated! Commented Jun 5 at 7:19
• What is that speechPIECE that you are incorporating into your node tree? Is that the text? Did you want your speech bubble and its pointer to be generated around it? Did you want to use geonodes to generate every part of the bubble or will you really settle for the merging of two curves? What kind of parameters are you looking for? Commented Jun 7 at 19:29

I'll give an extremely simple answer for you and leave the elaborate answers with bells and whistles to the folks who suggested them.

Since your Bubbles and Pointers are going to be generated separately, I built this geonode tree as you have intended. This one will join your input curves and procedurally generate them as a single mesh.

Unfortunately, I didn't want to do much thinking, so for a brief explanation, I just slapped this THING on.

I included an Alternative boundary for your pointer to follow in case your original bubbles take on wacky shapes.

Blender 4.1.1

1)Build the pointer from 2 arcs or if you want more control handles, 2 bezier segments.

2)Rotate and realize the instances into place

3)Convert them to mesh temporarily to merge the points.

4)For the bubble shape, Join the geometry to a curve circle

5)Attach controllable parameters to group inputs. Resolution, scale, and rotation are all nice to have, you can generate many variations on the speech bubble this way.

6)The method of merging the curves is already described here, so please upvote it if you like this answer:

How to boolean union closed 2D curves within same bezier object with geometry nodes?

7)The curves must be filled first, but in order to do this, they cannot be overlapping because this will create holes. So spread the splines away from each other, fill them, and move them back to their original position.

Then:

8)Use a union mesh boolean to create a new mesh, a combined shape.

9)detect overlapping edges with a raycasting node on a duplicate object that is scaled down very slightly and delete them.

10)Merge all points of the booleaned object and fill it again.

11)Lastly, we can sample the position of an empty to control the direction of the speech bubble even further, as Robin Betts has mentioned.

12)We can also resample the curve again at the end, this will allow the empty to have more influence.

• Thank you for properly giving a shout out to quellenform!!! The Boolean Union Closed 2D Curves answer is one of my favorites that he wrote for us. I keep it in my collection of amazing node trees from him that I especially like! 😄 Commented Jun 10 at 2:12
• It looks like you've offered a great solution which was similar to Obfuscate's. However, I was just arriving at this page to give them my bounty since I just finished implementing his version and had not seen this answer yet. I appreciate all of the hard work you put into your post, if it's possible for me to reward you both with the bounty I happily will. I think this post will be super helpful to future passerby's. Commented Jun 10 at 8:33