New Input Type: Angle of Attack

brush_engine
Tags: #<Tag:0x00007f0a4397a898>

#1

There are some brushes like Classic/Marker Fat that use elliptical dab angle modified by Ascension to basically achieve a rectangular-shaped point that is always thinnest when the tool movement (direction) is parallel to the tool direction (ascension) and widest when the strokes are perpendicular to the tool direction. But what if you want to modify other brush settings like Jitter or Radius based on this direction/ascension difference (Angle of Attack for lack of a better term)? It seems like a new input is needed, derived from ascension and direction possibly. Maybe a sensible range would be 0-90 degrees where 0 is parallel movement and 90 is perpendicular. If it is possible to calculate, it might be nice to have 0-180 where 0 degrees is movement in the same direction as tool ascension and 180 is movement directly opposite of tool ascension (pushing vs dragging).

With this input you might be able to design a brush that behaves different when “dragged” versus when “pushed”, like the bristles on a real brush that become fuzzier when pushed. Or the smooth flow when dragging a fountain pen versus the skips you might get when pushing. Another idea is a pencil brush that, when tilted sufficiently, begins to have more jitter but only when the strokes are perpendicular to the direction of the tool. This would make it much easier to transition from line to tone in the same stroke and be great for simulating charcoal, conte crayon, etc.

Is anyone else interested in dynamics like this?


Flat brush
#2

Moving to Feature Request Category since it needs to be hashed and plan before we can consider to incorporate it into MyPaint.


#3

Isn’t this what the Custom input setting is intended for?

  • Input: Custom (custom)
    • This is a user defined input. Look at the ‘custom input’ setting for details.
  • Setting: Custom input (custom_input)
    • Set the custom input to this value. If it is slowed down, move it towards this value (see below). The idea is that you make this input depend on a mixture of pressure/speed/whatever, and then make other settings depend on this ‘custom input’ instead of repeating this combination everywhere you need it.
      If you make it change ‘by random’ you can generate a slow (smooth) random input.
  • Setting: Custom input filter (custom_input_slowness)
    • How slow the custom input actually follows the desired value (the one above). This happens at brushdab level (ignoring how much time has passed, if brushdabs do not depend on time).
      0.0 no slowdown (changes apply instantly)

#4

I thought so too, and I was looking at Custom for a long while-- but finally realized I can’t have ascension or direction independently influence the brush settings (radius, jitter, etc). The Custom input says it’s a “mixture of pressure/speed/whatever”. I think I need more than a “mixture”, but an actual relationship between ascension and direction, the AOA or maybe Angle of Incidence, to know whether the tool is moving parallel to itself versus side-to-side, etc. If you have a tilt-enabled stylus, play around with the Classic/Marker Fat to see what I’m talking about. You might want disable the declination on elliptical dab ratio so that it stays at 10:1.

Basically, with the Classic/Marker Fat-- the dab angle starts off at about 90 degrees (actually 113 but 90 works better IMO). With the Ascension affecting dab angle, the dab angle will always be parallel to the ascension. With the stylus at 12 o clock, ascension is 0, so dab angle stays at 90. At 3 o clock the ascension is +90 so the dab angle becomes 180, etc. So, you’ll always get a thin line when “dragging” and “pushing” regardless of the ascension.

So right now the only way to get this effect is to work with dab angle and a large dab ratio.


#5

Would it be too difficult to make Custom parameters take a formula?
That could be much more flexible, and was always my thought while playing with the brushes!
It’d be like a mini DSL I guess, with all the trouble it implies…


#6

I really like this idea. This would really expand the possibilities to create even more surprising brushes. Maybe even dangerous brushes! ;-). I still think AoA might deserve a “core” type of input since so many real-world tools are affected by this dimension-- including the good old #2 pencil.


#7

I built off of @AnTi’s Direction 360 and added Attack_Angle input type. I think it will add some interesting dynamics and realism for some purposes. I think I also found a bug in ascension which might be fixed now:

https://github.com/briend/libmypaint/tree/rotate-attack-offset-dir360


#8

This feature has been implemented as of commit 2681060. Marking as closed and releasing votes.


#9