Strange Idea #84 - Advanced Path Control

5 min read

Deviation Actions

liamwhite1's avatar
By
Published:
3.4K Views
I think most of us have figured it out by now--Inkscape needs a width tool.

I can see people pointing at Power Strokes right now, going, "Are you blind or something?"

No. I hate Power Strokes the current Power Stroke width interpolators--they usually end up doing something like this:
Too Many Nodes by liamwhite1

That is a completely excessive amount of nodes for a two point path--In fact, that particular path could be represented with a skeletal path effect and look exactly the same:
Better Nodes by liamwhite1

Do you see what I'm getting at here? Having fewer nodes decreases calculation time on a path when you are editing it.
Now, I suppose, to the main proposal here.

2 new LPEs (Live Path Effects)
  • Advanced Skeletal Control (should be developed first)
  • Advanced Path Control (after ASC is fully developed and debugged)

1 new tool - the Width tool - works in conjunction with these two LPEs

Advanced Skeletal Control - works with the Width Tool to craft specific control points on an empty pattern that is as long as the path itself. Can join the pattern at the other end of the path if the path is closed. Node-minimal, Ctrl to snap width, Alt for one side only.

The best part about this - the (somewhat preexisting) ability to control width on one side only. Basically, we'd hope to achieve this:
Controlling Path by liamwhite1

This is a screenshot from Illustrator, where a width tool is already implemented. But I think we can do Adobe one better here with the second LPE that I mentioned, Advanced Path Control.

This can be built off of the ASC live path effect here. What are we looking for, here, that's any different from ASC?
  • Skeleton is suspended at corners
  • Building off of above, ability to control the join type and width at each corner node
  • The ability to control the width of a specific segment between two nodes


Skeleton is suspended at corners? Yes. Therefore a new skeleton is needed for each segment between sharp nodes for the implementation to work.

Ability to control join type and width at each corner node. Yes, I know that this has the potential to get abused when creating pony vectors, so what? It's still a massive contribution to this FOSS project.
So imagine that you have this:
Corner-1 by liamwhite1

Dragging the orange node will now change the width at the corner (A previous issue with Power Strokes). Shift-clicking the node will cause this dialog box to appear (BTW, hovering will cause it to invert colors) :
Width-dialog by liamwhite1
A different join type can be specified at each and every corner node. Changing the node to smooth will cause it to inherit the width properties, creating a pink width control node and discard the join properties if it were ever to be made sharp again.

Finally, this has bothered me and :iconchainchomp2:ChainChomp2 for a little bit now--the ability to control the width of one segment between two other nodes. Not exactly this:
Cut Width 1 by liamwhite1

But something more like this:
Cut Width 2 by liamwhite1
I Heart Manehattan Tourist Pony by ChainChomp2
Cut Width 3 by liamwhite1
Um... by me

So this is where we can do one better than Illustrator. Let's give the option to use the width tool to create this yellow node here:
Yellow Node Int 1 by liamwhite1

(Creating width control points on that segment will delete the yellow node.) You can now drag the yellow node in or out to create this effect of cutting the width at those joins:
Yellow Node Int 2 by liamwhite1
This can be implemented without much difficulty really because remember, the skeleton is suspended between joins.
Remember, to increase speed of editing, these path effects should be node-minimal (which actually shouldn't be a problem, because skeletal path effects tend to be good at having low node counts)

Skeletal path effect, is Pattern Along Path path effect btw if anyone didn't know.
© 2014 - 2024 liamwhite1
Comments13
Join the community to add your comment. Already a deviant? Log In
dasprid's avatar
I'm just wondering one thing about your first example. Shouldn't a proper path effect be able to represent that 2-point tapered line with 3 nodes?