Programmable Ink Lab Notes
title
Informal ink deformation
dated
Fall 2023

You can think of informal ink as a superset of formal ink: it starts out with less structure, but structure can be added over time, by the sketcher or the system. It captures the authentic voice of the sketcher, and that voice can be softened through smoothing. Transforming informal ink into formal ink intuitively seems possible and desirable — the reverse, not so much.

Being able to manipulate the things you draw was deemed important. One reason is that sometimes it’s nice to make a small change to something you’ve already drawn rather than erase and redraw it. For this, we looked at ways to move, scale, rotate, and deform strokes.

We looked for a sense of material for informal ink. When ink is manipulated, how should it behave? When and how does it resist deformation? In what ways should it relate to (say) string, rope, chain, cord, cable, or wire? One catchy idea is that it should behave like a “wet baguette” — something that resists being bent but eventually gives (like a metal wire), but also compresses and expands (like an accordion).

We looked at ways of imbuing ink with a control structure, some sort of skeleton that would be computationally easy to deform and could have one or more freehand strokes skinned onto it. Some of this work was inspired by the use of bones in 3d computer animation tools, which we implemented experimentally. We quickly found that bones on their own don’t give us much — we’d need to add some behaviour to them to constrain how they move. We explored a few behaviours, before decided that more work would be needed and that this work should be deferred until later.

Another experiment involved reproducing an academic work titled As-Rigid-As-Possible Shape Manipulation.

We also looked at ways to make it quick to edit existing drawings, including a pen stroke that would automatically switch between inking and erasing if you move the pen backward along an existing stroke.

Another reason that ink manipulation is important is that it can happen as the result of dynamic behaviour. For instance, a formula could calculate some value and then scale, stretch, or bend part of a drawing in response. We quickly decided that this was the more important kind of manipulation to explore — the other kind of manipulation felt like a (“small”) matter of UI design and engineering, whereas this sort of dynamic manipulation felt like a crucial part of the relationship between ink and programming.

One idea that we took on was that of handles. These would be special points associated with a stroke or group of strokes that would act as a manipulation affordance. A single handle would allow strokes to be moved. Two handles would allow moving, rotation, and scaling. Three or more handles would allow deformation. Handles could be moved directly by the user, so they’d likely need to be visible both in Ink mode and Meta mode. We’d also need to determine when and how handles were created and associated with strokes, and how they’d be made programmable.

We also considered ways in which informal ink could be turned into formal ink, perhaps through smoothing or overdrawing. We decided, for now, that the distinction didn’t offer much, and proceeded with informal ink as the only sort of ink in our prototype. We also decided that we were confident that good-feeling deformable ink manipulation was possible, so that we could proceed with our design process assuming its existence, but that doing the work to build an ink deformation system should be deferred until later. For the time being, it’d suffice to have only two handles on strokes so that basic manipulation was possible.