kimppi wrote:
The real question is, how would you implement this in Gimp? Plugin? New tool? Something else?
My approach would be to introduce a new constraint mechanism to the existing paint tools which would employ a "topology" channel to restrict the motion of the brush. "Topology channels" would be managed using the existing Channels Dialog and edited as regular channels, though their thumbnail previews would ideally appear as a topological map of the contents of that channel.
For example, if we have the following channel:
Attachment:
channel.png [ 19.93 KiB | Viewed 5218 times ]
It might be viewed as the following topological map:
Attachment:
topology.png [ 15.09 KiB | Viewed 5218 times ]
If our paint tool had the option, we could specify the channel as a constraint and thus all paint strokes would be "coerced" to follow the direction of the topological lines. In other words, if the channel were considered a height map, painting would be constrained such that going either "uphill" or "downhill" with the brush would be more difficult than staying at the same altitude on the map. The amount of "coercion" should be configurable so that the artist is not forced to follow the lines exactly; in fact, this parameter should be associate-able with pen pressure, velocity, or other available input controls.
Once such a mechanism were in place, problems would be reduced to creating suitable constraint topologies. For example, your vanishing point problem would be represented by the following channel:
Attachment:
vp-topology.png [ 55.2 KiB | Viewed 5218 times ]
A new tool might be provided for facilitating the creation of various common topologies, though they can also be generated manually (the above channel was created using the "Conical" option of the Blend Tool).
I am not suggesting that implementing such an approach would be trivial*, however, I do think the user interface would be quite elegant, intuitive, and provide digital images with that artistic, human touch.
* I suspect that calculating the directional gradients around a given point might be computationally intensive and it may be necessary to create a "motion vector" array for the image after selecting a particular topology channel. This would require significant amounts of memory and might in itself take a lot of time (though it shouldn't interfere with the painting itself).
NOTE: The University of Waterloo has done some coding of a similar constraint mechanism for brushes, however, their approach relied upon mathematical formulas to specify the direction of the drawing constraint.