1 Introduction
Procedural authoring—describing a visual work as a series of instructions or relationships executed by a computer—enables creators to create generative and interactive works, automate tasks, and manage complex compositions [
35]. Creators procedurally define and parameterize many types of artwork: data visualizations [
16], models in computer-aided design and fabrication [
39], and generative illustrations and animations [
33].
To work procedurally, creators often rely on symbolic tools [
35]. Symbolic tools for generating visual output consist of textual [
43] or visual [
10,
12,
17] programming languages. These tools are extremely computationally expressive because creators can use low-level primitives and abstractions to create custom procedural behaviors. The representational nature of symbolic tools can present barriers for some visual creators who are accustomed to working with graphic representations and direct manipulation. Direct manipulation software lets creators access the benefits of digital authoring and interact through concrete representations with continuous and immediate visual feedback on the results of their actions [
45]. Moreover, visual thinkers can use direct manipulation for problem solving [
53] because they can develop mental models of abstract problems through concrete visual interaction [
24].
To integrate the opportunities of symbolic programming and direct manipulation, researchers and software designers have developed
procedural direct manipulation systems: tools where creators control procedural relationships through the direct manipulation of graphical elements [
13,
20,
25,
55,
57,
58]. These systems are powerful because they support describing constraints, mappings, and other procedural effects through direct selection and sketching in the drawing canvas. Current procedural direct manipulation systems are often limited in comparison to symbolic tools in two ways. First, they may rely on predefined mapping behaviors [
20,
28,
58], limiting creators to accessing procedural functionality that is encapsulated in fixed, high-level data types which constrain the range of outcomes. Second, different systems rely on different types of mappings to achieve similar outcomes [
55,
58]. As a result, specific interaction techniques developed in one system often only apply to one target effect. For example, a creator might use object constraints to control the layout of multiple elements [
20] and kinetic textures to control the animation of multiple elements [
26]. While this may not be a significant restriction for individual applications, it presents a fundamental limitation towards developing interoperable procedural direct manipulation paradigms [
1]–for example in cases where creators seek to integrate procedural layout
and animation.
We are inspired by the opportunities of domain-specific procedural direct manipulation systems. Our objective is to contribute a generalizable procedural-graphical interaction approach. Specifically, we seek to develop a flexible mechanism for procedural authoring wherein creators use geometry to describe processes for transforming graphical elements. Our objective is centered around three intersecting design objectives:
•
Flexible input: any geometry should be interpretable as procedure.
•
Procedural expressiveness: geometry should determine the behavior of low-level procedural relationships.
•
Breadth of application: our method should generalize to effects affording procedural control of stylistic, spatial, and temporal qualities of visual output, as well as behaviors that integrate these properties.
We introduce Drawing Transforms (DTs), a novel interaction primitive that extracts geometry from any manually-drawn input to specify expressive procedural transformations of target artwork. DTs enable authoring low-level transformations of target artwork through a flexible parameterization of arbitrary vector graphic input; creators can use hand-drawn input to describe continuous and discrete transformations, evaluate conditionals, and map transformations to single or multiple targets. DTs also support abstraction and reuse by enabling creators to create different transformations by manipulating the geometry context.
To illustrate how a person would use DTs within a sample system, we describe an example artist, Lily, who is creating a digital birthday invitation. Lily has drawn a balloon and wants to change its color. She taps on it to select its color and then draws a vector curve in an upward arc. The system uses the starting point of the curve to map to the default base color of the balloon and interprets the curve to change the color of the balloon to red. Lily selects the arc and clicks on a play icon in the system interface that allows her to see that instead of instantly changing the color of the balloon she can play the change over time as an animation. She creates many copies of the balloon and applies the same animation. She draws another upward arc to test out a different color change from blue to purple. She tries to group both arcs and use them together to transform the color of the balloons. They change from blue to a range of colors between purple and red. Then she realizes she can also animate how the balloons are moving by selecting their position and drawing a few winding motion paths from the middle to the top of the page. Instead of having them move at a steady rate, she taps on the motion paths and draws how she wants the balloons to move: a straight line for a steady speed, then an arc curved upwards so they increase in speed. For good measure, she moves her pen in a squiggly line up and down so the balloons bob up and down near the top of the card. Lily has created a custom, generative animation of a bunch of balloons by hand.
DTs builds on prior approaches in procedural direct manipulation to use properties of artwork to manipulate artwork [
20]. We contribute an interaction primitive that enables controlling distributions across space, style, and time for multiple elements. In contrast to higher-level procedural direct manipulation tools, DTs are akin to a lower-level programming language: more procedurally expressive and requiring additional authoring effort to express complex outcomes.
We informed the design and implementation of DTs through expert interviews with visual motion graphics artists and designers who work across symbolic programming and direct manipulation. We used these interviews to identify strategies for managing distributions of visual elements across space and time. We also analyzed the interaction techniques and applications of prominent procedural direct manipulation tools for visual art, design, animation, and interactivity to identify factors that shape authoring expressiveness across multiple visual media domains.
We evaluated the procedural expressiveness of our approach by implementing the DT primitive in an example animation and motion graphics system for animating multiple elements simultaneously (AMES). We used this system to recreate and extend animation and motion graphics work created with prominent procedural direct manipulation and symbolic programming systems. Our examples demonstrate the range of procedural control and expression that is possible with our approach. We demonstrate how DTs can: 1) recreate procedural distributions from prior direct manipulation systems while also augmenting the output with animated effects, 2) reproduce complex motion graphics work that was originally developed with the Java programming language, and 3) generate and control a variety of particle-system effects from the ground up rather than rely on pre-defined particle behaviors. We draw from these example applications to describe the potential applications of DTs to other domains of visual expression.
3 Design Space
We informed the design and implementation of DTs by conducting expert interviews and analyzing the interaction techniques of prominent procedural direct manipulation tools.
3.1 Informational Interviews
We interviewed three professional motion graphics artists and designers who work with both direct and symbolic tools. We received IRB approval and participant permission to participants’ identities. Miwa Matreyek
1 is a performance artist who creates animations with AfterEffects. James Paterson
2 is an experimental animator who uses symbolic tools animate hand-drawn animations. Kurt Kaminski
3 is a media artist who uses programming languages to build particle systems and real-time AR animation. Each interview lasted 1.5 to 2 hours. We developed custom interview frameworks for each participant by analyzing samples of their artwork (see fig.
2 for examples) and developing questions targeting specific effects for object animation, layout, and content generation. Across all interviews, we focused on each artist’s use of manual and computational tools and methods to organize animations spatially and visually. We recorded each interview and discussed initial observations and impressions after each interview. We analyzed the recording transcripts to conceptualize themes on distribution strategies, timing manipulation, and manual input. Our approach centered on reflexive analysis with a focus on emergent themes. We also distilled workflow descriptions for specific effects to explore the range of methods in procedural and manual digital visual art.
3.1.1 Interview Theme #1: Arrangement-Level Visual Design Practices.
All three artists create and manage representations of groups of animations. Matreyek creates groupings of related graphic elements and then animates each group in the direct manipulation tool AfterEffects. She manually adjusts the animation effects of individual graphics to achieve variation. Kaminski uses symbolic programming languages to author custom particle behaviors that integrate fluid simulations with audio synthesis. He described how he envisions a collection of particles as a single entity with properties that can manifest individually. Paterson works across manual illustration and symbolic programming and he also develops his own direct manipulation animation tools. He described the differences between working on manually created artwork and “controlling visual arrangements with code.” He emphasized how he works back and forth between symbolically describing “arrangement patterns” and iterating on manually created forms. Paterson, Matreyek, and Kaminski’s workflows demonstrate how artists work at an arrangement-level to develop coordinated visual effects.
3.1.2 Interview Theme #2: Precise Manipulation of Timing across Manual and Procedural Methods.
Each artist relied on precise timing control regardless of their method. Paterson uses woven loops–variable length loops of animation where the last frame flows seamlessly back to the first– to create phasing effects. He also creates visual density by staggering the starting points of visually related animations, like a cloud of ghosts, across time and space. Matreyek uses manual methods to manipulate loops of rotating images. She manually adjusts their position to correspond with other animated elements like a wave. Kaminski enacts precise timing control over his particle effects to develop interactive visuals for augmented reality. He fine-tunes the timing to generate cascading effects across multiple particles. Collectively all artists increase the visual complexity of their animations by manipulating a group of animations across time and fine-tuning their temporal behaviors collectively, either through manual or procedural methods.
3.1.3 Interview Theme #3: Value of Manual Input.
All three artists valued manual input for enacting control and engaging with their artwork regardless of whether or not they used symbolic languages. Kaminski desired easier mechanisms to leverage physical inputs like drawing curves as input. He described the improvisational opportunities of designing animations that respond to gestural inputs. Matreyek described using her hands as input to create manual variation in the timing of particle-based animation behaviors. She also described the importance of manually manipulating easing functions to produce an effect that is “not just the same mechanical movement.” Paterson developed a custom VR animation tool centered around manual sketching. He emphasized how using drawing as the primary interaction modality made the tool “as physical as possible...leaving that spell of flow and expression unbroken.” Overall using manual inputs created expressive opportunities and facilitated continuous workflows.
3.2 Analysis of Existing Procedural Authoring Techniques and Design Objectives
We compared the results of our expert interviews to our review of existing procedural direct manipulation systems. We identified four qualities in the design of existing procedural direct manipulation systems that were likely to impact key forms of expressiveness from our interview participants. We focused on capturing the range of interface and interaction design methods that shape editing flexibility, visual expression, and application domain. We analyzed how different approaches in existing systems contrasted or aligned with the practices of our interview participants. Our goal was to illuminate key approaches for a representation that could work across existing procedural direct manipulation technologies and support a range of visual art production.
Editing mechanism: Mechanisms with low flexibility map a specific geometric input in a fixed way. Strongly typed geometric inputs enable a system to infer author intent; however, they restrict outcomes. Integrating symbolic notation supports expressive outcomes but prevents graphic manipulation.
Procedural expression: Artists either relied on symbolic procedural tools or extensive manual effort to create coordinated animations consisting of multiple elements. When using predefined or custom-built procedural behaviors, artists used manual input to fine-tune the effect. Existing systems support various degrees of procedural expression for the control of multiple objects including selecting predefined behaviors, modifying parameters of behaviors, designing new behaviors from fixed data types, and enabling user-defined behaviors. Procedural tools that enable authoring low-level abstractions, like constraints, enable users to create their own procedural relationships to integrate the behavior of multiple elements.
Timing support: Fine-grained control of temporal effects is critical for producing stylistically distinct animated works. In existing systems, timing support can be static (no representation of time), fixed (such as movement at a fixed rate), manipulable (varying how property changes over time), or (re)definable (changing how timing is interpreted).
Target application: Our interview participants worked across interactive, 2D, and 3D domains. Kaminski and Paterson also blended software development with animation production. Existing techniques in procedural direct manipulation primarily focus on authoring a specific effect or target a single application area. Application-based research is important but can create strong boundaries between tools and high learning thresholds [
2]. An alternative is to develop techniques that act as substrates across different media [
30].
We drew from our analysis to define intersecting design objectives for the DTs interaction primitive. These were:
•
Flexible input: Our approach should enable interpreting any 2D geometry as input. Stylistic differences in the structure of the geometry should produce different procedural outcomes.
•
Procedural expressiveness: Creators should be able to use geometric input to describe low-level procedural relationships that can be combined to produce different effects. We aim to support modifying attributes of abstract data types, to create interoperability. Creators should also be able to modify data structures containing artwork.
•
Breadth of application: Our approach should function for both static and animated output. Creators should be able to integrate control of spatial, stylistic, and temporal properties of artwork.
6 Limitations
We focus on evaluating the computational expressiveness of DTs through demonstrative examples which is a common method in HCI toolkit research [
32]. In particular, we showcase the "expressive match" [
40] enabled by using drawing to enact multiple forms of procedural control akin to other procedural tools. Our starfield extends an example from Para [
20]: we manipulate a collection and also procedurally generate shapes and animations. The N-Gon recreates work made in Processing [
43]: DTs enable describing user-defined procedural sequences through direct manipulation. Our particle systems show effects comparable to those in Kitty [
25]: DTs let artists describe this functionality from the ground up versus relying on predefined effects.
Studies with external participants would provide valuable further insights. We omit a study from this work because our goal is to present the abstraction without a prescriptive implementation of that abstraction. For instance, in AMES, artists can use a drop-down to select a property. A voice command or radial in-canvas menu may be a more usable mechanism to set this parameter depending on the use-case. Additionally, our abstraction can apply across applications such as VR animation tools that use VR controllers to author input artwork. We hope our contribution will enable others to apply and evaluate this primitive across different applications. Our focus is on determining the expressive range of an entirely graphical procedural specification with respect to existing standards within the field of procedural direct manipulation.
Lastly, while DTs enables artists to directly edit their artwork to change procedural behavior, DTs does not support bidirectional editing. In other words, artists can interactively edit input geometry to modify the result in a continuous way, but they can not modify the result directly. We believe this is still a valuable form of direct manipulation as it provides a means to enact procedural control through drawing and editing drawings directly. Enable bidirectional editing is a promising direction for future work.
A Pseudocode for DTs
// Drawing Transform : A class that provides a mechanism to
// transform any attribute of target artwork, stylistic, spatial,
// or temporal by interpreting vector geometry as input for the
// creation of flexible user-defined, procedural mapping functions
// Parameters: Setters & getters omitted
// Applies the DT by updating the target statically or dynamically
transform() {
For every element in the target…
... If the mode is absolute, call get_transform_value to get the value of this DT at the start state (segment index = 0) and call update_target
... If this DT is static, call get_transform_value based on the at the state mapped to the target index and call update_target
... If the transformation is dynamic (temporal), call playback_helper
}
// Recursive function that activates different states in the DT by
// cycling through segments on the input artwork
playback_helper(target_idx, curr_state_idx, next_state_idx,
stop_state_idx, bool reverse) {
A base case evaluates the stopping and looping conditions for the DT: IF (!reverse && state_idx >= stop_state_idx) || (reverse && state_idx <= stop_state_idx) IF loops[target_idx] < max_loops call transform ELSE return
Call get_transform_value based on the curr_state_idx and next_state_idx and pass the output values to update_target
Call playback_helper for the next state
}
// Segments, indexes, and maps input values to calculate
// property values; returns a tuple
get_transform_value(target_idx,
curr_state_idx, next_state_idx, axis_mapping) {
If the DT is static, call calculate_state on curr_state_idx
If the DT is temporal, calculate difference between the outputs from calling calculate_state on curr_state_idx and next_state_idx
// Exact sampling is determined by behavior or if the input is a collection; details omitted
Sample the input: call calculate_state on one or more input paths using an index given by the behavior (e.g.alternate), then interpolate or select across those values according to the behavior
Return calculated tuple (dx, dy, dv) values based on x value, y value, and path length
}
// Gets input segment values, maps to property values, and
// returns a point
calculate_state(s_idx, in_artwork) {
If the parameterization is path-length return point on the input at the segment s_idx
If the parameterization is x-value...
... If the path is non-looping calculate the intersection point of the x-axis at the segment s_idx and the input artwork path
... If the path is looping use the point of the input path at segment s_idx to calculate the nearest segment on the x-axis to calculate the nearest intersection point
Linearly map the point to the property range given in tf_space and return the new point
}
// Updates the target property and triggers playback points
update_target(dx, dy, dv) {
Update the execution state and check if any playback point conditions have been met based on the execution state. If so, call the playback point values (functions)
Call the property function of the target passing in dx, dy, or dv
}