OzarkNerd Posted Tuesday at 04:45 PM Posted Tuesday at 04:45 PM I don't use Affinity enough to master it but this is really the only task that gives me trouble every single time. I have read so many posts and I just don't get it. I started by creating a shape that is the left half of a boomerang shape. To maintain symmetry I copied this curves layer and flipped it and moved it over. Now when I try to join the two curves I always get some extra loopy things at the connection points. I have tried reversing one of the curves and that doesn't help. I also tried moving them slightly apart so there is actually a gap versus having the nodes of each laid directly on top of one another, in case that would change something. Still didn't help. So what can I do at this point to get these two joined into one happy closed curve? Thank you! Test.afdesign Quote
Ldina Posted Tuesday at 05:20 PM Posted Tuesday at 05:20 PM @OzarkNerd Below is a screenshot of your two curves zoomed in. First, there is a gap between the two curves, both at the top and bottom. Second, see those long handles of the Bézier curves? They are going to have an impact on how those nodes connect and are responsible for the weird loops. First, I'd turn on "Snapping" in the context toolbar at the top of the screen. Select the left (or right) curve in the layers panel using the Move Tool (black arrow in the tools panel). Zoom WAY IN SUPER CLOSE, and move them so the nodes overlay one another. Next, use the Node Tool (white arrow in the tools panel), grab the top node in the left curve and move until it snaps to the top node of the right curve. They have to be perfectly aligned, which is why you need to zoom in very close to be sure. Repeat for the bottom nodes. The snapping should make sure your top and bottom nodes are superimposed. With both curves selected, drag a rectangle around the top two superimposed nodes with the Node Tool so they are both selected, and select Joint Curves. If the nodes are properly superimposed, you'll get a clean join. You'll now have a single curve, but the bottom two nodes are still "open nodes" and not joined. Click on ADD in the Context Toolbar and it will create a closed shape. That worked for me. When doing this sort of thing, it helps to flip your curves, then move them together holding the Shift Key to keep them vertically or horizontally aligned. With Snapping turned on, they should snap together. I'd also make sure you keep Force Pixel Alignment turned ON, and Move by Whole Pixels turned OFF. Hope that works for you. EDIT: If you make all four of those Bezier handles perfectly horizontal (hold Shift while moving the handles), you can Join Curves and Close Curves without any of those weird loops. That also works and is an easy solution (even if you leave the gaps in place). Quote 2024 MacBook Pro M4 Max, 48GB, 1TB SSD, Sequoia OS, Affinity Photo/Designer/Publisher v1 & v2, Adobe CS6 Extended, LightRoom v6, Blender, InkScape, Dell 30" Monitor, Canon PRO-100 Printer, i1 Spectrophotometer, i1Publish, Wacom Intuos 4 PTK-640 graphics tablet
OzarkNerd Posted Tuesday at 05:33 PM Author Posted Tuesday at 05:33 PM @Ldina thank you for the quick reply. I actually intentionally spaced those nodes apart as a test to see if that would change/improve the result. It did not. But even with them exactly overlaid (not just visually verified, but confirming both nodes have the same coordinates) I still get the loop when I select the two nodes and click "join" Even if I undo the join, then reverse the curve on the right, and re-join, it still gives the same appearance with the loop. I'm still missing something... Quote
Ldina Posted Tuesday at 05:47 PM Posted Tuesday at 05:47 PM 38 minutes ago, OzarkNerd said: I'm still missing something... They probably look like they are aligned, but aren't. That's why you zoom in super close and have snapping turned on, and also Force Pixel Alignment. Try making the Bezier handles so they are all perfectly horizontal. If you hold down Shift while moving the outer handle, it will snap in 15° increments, so when it's perfect horizontal, if will snap into place. Once they are all perfect horizontal, you shouldn't get any weird loops. EDIT: to help with perfect alignment of Nodes, you can turn on Wireframe View Mode in the context toolbar. This will show just the paths you created, so when you zoom in close, you will be able to see whether the nodes are really aligned or not. ZOOM in VERY CLOSE....SUPER CLOSE. Quote 2024 MacBook Pro M4 Max, 48GB, 1TB SSD, Sequoia OS, Affinity Photo/Designer/Publisher v1 & v2, Adobe CS6 Extended, LightRoom v6, Blender, InkScape, Dell 30" Monitor, Canon PRO-100 Printer, i1 Spectrophotometer, i1Publish, Wacom Intuos 4 PTK-640 graphics tablet
OzarkNerd Posted Tuesday at 06:26 PM Author Posted Tuesday at 06:26 PM Not quite following. I mentioned that the coordinates of the overlapping nodes are identical as shown in the transform dialog. If I type in identical coordinates for two nodes and they are not in the same spot that's a bug in the software, no? Quote
Ldina Posted Tuesday at 06:44 PM Posted Tuesday at 06:44 PM Maybe it's a bug, but I'm not having your problem, so I don't think so. I think it's your design and those long Bézier curve handles. Below your original design is a single curve I drew with four nodes and no gaps at all. I started at the lower left, dragged a second point top left to make the Bézier curve handles very long (like yours), dragged a 3rd point top right again with long handles, then a final point lower right. This was all one single curve, without any gaps, no need to join, etc. Notice the loop...look familiar? That's what you are seeing. That is due to the long Bézier curve handles. You can always adjust those handles after joining if you wish, but they appear to be the cause of your problem. Quote 2024 MacBook Pro M4 Max, 48GB, 1TB SSD, Sequoia OS, Affinity Photo/Designer/Publisher v1 & v2, Adobe CS6 Extended, LightRoom v6, Blender, InkScape, Dell 30" Monitor, Canon PRO-100 Printer, i1 Spectrophotometer, i1Publish, Wacom Intuos 4 PTK-640 graphics tablet
Pšenda Posted Tuesday at 07:24 PM Posted Tuesday at 07:24 PM Video_2025-02-04_204259.mp4 Ldina 1 Quote Affinity Store (MSI/EXE): Affinity Suite (ADe, APh, APu) 2.5.7.2948 (Retail) Dell OptiPlex 7060, i5-8500 3.00 GHz, 16 GB, Intel UHD Graphics 630, Dell P2417H 1920 x 1080, Windows 11 Pro, Version 24H2, Build 26100.2605. Dell Latitude E5570, i5-6440HQ 2.60 GHz, 8 GB, Intel HD Graphics 530, 1920 x 1080, Windows 11 Pro, Version 24H2, Build 26100.2605. Intel NUC5PGYH, Pentium N3700 2.40 GHz, 8 GB, Intel HD Graphics, EIZO EV2456 1920 x 1200, Windows 10 Pro, Version 21H1, Build 19043.2130.
OzarkNerd Posted Wednesday at 01:17 AM Author Posted Wednesday at 01:17 AM Thanks guys. I went through the sequence again and was able to get it to work. Not sure what the difference was. I once again typed in the node coordinates to make them match and then selected the left and right layers and selected the overlapped nodes and hit join and this time no loopy-loops. Thanks for the help! Quote
Ldina Posted Wednesday at 02:53 AM Posted Wednesday at 02:53 AM 2 hours ago, OzarkNerd said: Thanks for the help! Glad you got it working. Just a few additional comments to help you understand why this is happening. When you drag a node (with pen, pencil, or other similar tool) to create a curve, the default behavior is to create two equal length bezier handles, one on each side of that node. You can see that in the screenshot in my earlier post (where I created a single curve below your original two segments). Those handles determine the trajectory, curvature and the radius of the bend to the next node you draw. If you draw an "open ended curve" (rather than a closed shape), then click on the end point with the Node Tool, you will only see one handle instead of two. That second handle is still remembered (or perhaps it is reconstructed to be the same length as the other handle), but it's hidden because it's an end point, serves no purpose, and there's nowhere to go (as long as it remains an endpoint). When you connected your two segments together using Join Curves, those long, invisible handles became visible (or were reconstructed to match the other handle) and followed their original trajectory, as if you had planned to continue drawing all along. The gap between those nodes treated them as completely separate nodes (which they are), and that is what caused those loops. You can see these 'now visible' bezier handles for yourself after joining two nodes together by clicking on each of the joined nodes with the Node Tool. If you had originally created straight segments with the Pen tool, (by clicking without dragging), connecting the closely spaced sharp nodes would not do that because there are no handles, just sharp nodes. Handles control the curvature. No handles, no curvature, so a straight line is drawn between those two nodes. That's probably what you expected from the start. If your nodes occupy the exact same position, one on top of the other, joining those nodes will eliminate those "invisible handles", treating them as a single node, so you don't get those loops. The video @Pšenda provided seems to be the best and easiest solution. Make sure Snap to Geometry is turned on (see his video for the ones he turned on and off, so you don't have different snapping options competing with one another). Another suggestion...Go into Settings/Preferences > User Interface, and set Pixels to 3 (see screenshot below). This will force the Transform Panel to display 3 decimal places, instead of rounding to the nearest whole number. Even with your document set to pixels, it is possible that the transform panel showed the same x/y coordinates, but they may have been different, just rounded to the same whole number. That could lead you to think they have the exact same coordinates, when if fact they may not. One might have an x coordinate of 79.523, and the other node may have an x coordinate of 79.999. I want to see a whole number in the x/y coordinate fields, without any decimal places (even with my decimals set to 3. This insures your nodes are perfectly aligned, one node on top of the other. That was one reason it worked for me. Psenda's recommendation will handle the problem, but using 3 or more decimal places is also probably a very good idea as your default. I hope that was clear and made sense. It's easier to do than to explain, at least for me. And "Force Pixel Alignment" is also a good idea for general use, since it helps avoid non-integer pixel locations for nodes, bounding boxes, etc. Quote 2024 MacBook Pro M4 Max, 48GB, 1TB SSD, Sequoia OS, Affinity Photo/Designer/Publisher v1 & v2, Adobe CS6 Extended, LightRoom v6, Blender, InkScape, Dell 30" Monitor, Canon PRO-100 Printer, i1 Spectrophotometer, i1Publish, Wacom Intuos 4 PTK-640 graphics tablet
OzarkNerd Posted Wednesday at 03:50 AM Author Posted Wednesday at 03:50 AM @Ldina that's all very clear, thank you very much for taking the time to write it all out!! Ldina 1 Quote
Pšenda Posted Wednesday at 01:17 PM Posted Wednesday at 01:17 PM 10 hours ago, Ldina said: so you don't have different snapping options competing with one another In the case of really precise work, the need to exclude competing snapping is absolutely essential. In the case of multiple snapping conditions, unwanted additional snapping points may arise, which then make correct snapping difficult. Alternatively, they may also cause unwanted exclusion of conditions, for example Force pixel alignment together with Move by whole pixels not switched off, or with other conditions (for example Snap to Bounding box + Mid point), which have a higher priority during evaluation and thus override Force pixel. For the purposes of suitable sets of snapping conditions, it is therefore advisable to create your own presets, and then switch them continuously depending on the type of work. Ldina 1 Quote Affinity Store (MSI/EXE): Affinity Suite (ADe, APh, APu) 2.5.7.2948 (Retail) Dell OptiPlex 7060, i5-8500 3.00 GHz, 16 GB, Intel UHD Graphics 630, Dell P2417H 1920 x 1080, Windows 11 Pro, Version 24H2, Build 26100.2605. Dell Latitude E5570, i5-6440HQ 2.60 GHz, 8 GB, Intel HD Graphics 530, 1920 x 1080, Windows 11 Pro, Version 24H2, Build 26100.2605. Intel NUC5PGYH, Pentium N3700 2.40 GHz, 8 GB, Intel HD Graphics, EIZO EV2456 1920 x 1200, Windows 10 Pro, Version 21H1, Build 19043.2130.
Ldina Posted Wednesday at 04:30 PM Posted Wednesday at 04:30 PM 3 hours ago, Pšenda said: it is therefore advisable to create your own presets, and then switch them continuously depending on the type of work. Thanks for that...good advice, which I will set up and use in the future! As always, great contributions. Thanks. Pšenda 1 Quote 2024 MacBook Pro M4 Max, 48GB, 1TB SSD, Sequoia OS, Affinity Photo/Designer/Publisher v1 & v2, Adobe CS6 Extended, LightRoom v6, Blender, InkScape, Dell 30" Monitor, Canon PRO-100 Printer, i1 Spectrophotometer, i1Publish, Wacom Intuos 4 PTK-640 graphics tablet
OzarkNerd Posted Thursday at 02:19 AM Author Posted Thursday at 02:19 AM On 2/4/2025 at 12:44 PM, Ldina said: Maybe it's a bug, but I'm not having your problem, so I don't think so. I think it's your design and those long Bézier curve handles. Below your original design is a single curve I drew with four nodes and no gaps at all. I started at the lower left, dragged a second point top left to make the Bézier curve handles very long (like yours), dragged a 3rd point top right again with long handles, then a final point lower right. This was all one single curve, without any gaps, no need to join, etc. Notice the loop...look familiar? That's what you are seeing. That is due to the long Bézier curve handles. You can always adjust those handles after joining if you wish, but they appear to be the cause of your problem. I played with this some more today and intentionally had a small gap between two nodes prior to joining. As (now) expected it created the loop. But then if I did an ALT-click on the handles it deletes them which had the effect of leaving a tiny straight line in between the original two nodes that were getting joined. Not sure if there's a setting somewhere to make this the default behavior, but you'd think "the shortest path between two points" approach would be the logical default here as compared to a huge loop being added. The lesson about precision and EXACT colocation of nodes is a great learning experience here nevertheless. Just bringing up this other point to complete the discussion. Quote
Ldina Posted Thursday at 02:43 AM Posted Thursday at 02:43 AM 47 minutes ago, OzarkNerd said: but you'd think "the shortest path between two points" approach would be the logical default here as compared to a huge loop being added. Your point is well taken...but...some designs will require a 'loop' or an ornate shape, or whatever. Your design called for a direct A->B path, but making that the default behavior between two smooth nodes that have Bezier handles is asking the program to ignore what you created. It's all about knowing how Bézier curves and those handles are designed to work. If the two smooth nodes are perfectly aligned and you join them, it does ignore those handles. One thing I forgot to mention that may help...If the two endpoints you wish to connect are both created with sharp nodes (created with a single click of the Pen tool, without dragging), they will connect in a straight line when joined, even with a gap. So, that behavior is already there if you want it. Start your curve with smooth nodes, create the desired shape, but end with a single sharp node. When you connect the two sharp nodes, whether there is a gap or not, you'll have a straight line connecting them because there are no bezier handles to deal with. Quote 2024 MacBook Pro M4 Max, 48GB, 1TB SSD, Sequoia OS, Affinity Photo/Designer/Publisher v1 & v2, Adobe CS6 Extended, LightRoom v6, Blender, InkScape, Dell 30" Monitor, Canon PRO-100 Printer, i1 Spectrophotometer, i1Publish, Wacom Intuos 4 PTK-640 graphics tablet
OzarkNerd Posted Thursday at 03:45 AM Author Posted Thursday at 03:45 AM To your point, I do believe the most ideal result would be to connect these points, which terminate non-linear curves, with another curve (I'm speaking to the case where they aren't perfectly colocated). But a different set of handles could produce a much more reasonable short arc between the points. In my view, the default behavior resulting in a large loop, hundreds of times the size of the gap it is closing, can only be explained as a deficiency in the algorithm. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.