Meander Animation Tool
Meander started development in 2010 as a stand-alone vector/raster hybrid animation system with the primary goal of bringing the power of digital tools to hand-drawn animation. Although originally targeting 2D cleanup animation, it was designed to be general enough for use throughout all departments in the studio. After its use on Academy Award® winning animated shorts Paperman and Feast, Meander’s core functionality was repackaged into a platform-independent library called MeanderKit, allowing it to be integrated into a variety of tools on different devices .
The Science Behind Meander:
What makes Meander a vector/raster hybrid drawing system?
Most drawing systems fall into the category of either purely vector or purely raster. Raster programs are those where as you draw, you have no editing capabilities for your strokes - you can only erase or redraw in order to change the image. Vector programs represent strokes as geometry, allowing for features like editability of any strokes after they’re drawn and allows for scaling of drawings without loss of detail. Meander attempts to leverage the best of both in such a way to better fit the needs of Disney artists.
Based on our needs at Disney Animation, we identified a few features of each and combined them to create a list of must-haves.
- High pen/brush quality and customization
- Always responsive drawing speed
- Immediate, fast playback
- Easy stroke editability
- Image scaling without loss of detail
- Stroke Inbetweening
In short, Meander stores the geometry and characteristics of a stroke (its centerline, width, color, pen) but renders the curves similar to how a raster program does.
Why use this approach?
The primary goal of any artistic tool is to allow an artist to express their intent as quickly and easily as possible - unencumbered by complexity of interface. In the case of drawing, it’s difficult to improve upon pencil and paper. To be compelling, Meander has to empower artists in ways not possible without a computer while not compromising the ease-of-use of paper.
Once we could ensure that the drawing quality was as good or better than all other drawing tools, we could then focus on adding the new abilities that the geometric information would allow. For example, Meander has inbetweening capabilities - given similar drawings on different frames, the system can interpolate the strokes and draw them as if the artist had drawn them. While the system cannot make artistic choices, it can however assist the artist in doing arduous tasks such as inbetweening subtle movements that require great precision.
Taking this concept a step further - on Paperman, the stroke geometry could be “attached” to an underlying 3D animated character. Given 3D animation and strokes drawn on top, those strokes are then “carried” along with the 3D animation but always drawn as two-dimensional strokes. This allowed us to create the effect of an animated painting on Paperman - with all the benefits of CG animation (smoothness, depth, stability) and combine it with the benefits of hand-drawn animation (emotional cues from lines, every frame drawn to camera). This technique was also used in the short-film Feast.
A More Technical Overview
Meander and MeanderKit are both written in C++ for fast performance and leverage OpenGL for hardware-accelerated rendering. For easy integration into a variety of applications, MeanderKit also has C and Python API layers, which allow for the integration into C, ObjC, Python and Swift applications.
On-the-fly stroke vectorization
Meander accepts input from any standard input device, such as a mouse or tablet. Each device delivers sequential points at a particular frequency representing the path of the input. If an application simply connects these points with straight lines, the strokes will appear jagged and contain hard angles. In order to generate a smooth curve representation, Meander uses a 2-step approach applied in an adaptive window of the most recent samples from the input device.
First, the points input from the device are “faired” or smoothed. This smoothing operation is very subtle such that artists don’t realize it’s happening - if they did notice, it would compromise the desired illusion of drawing on real paper or canvas.
Given the filtered input points, Meander now uses those points as control point inputs to a uniform quadratic b-spline. This spline has very nice properties in that it generates curves with smooth curvature and zero discontinuities.
These two steps are iteratively applied to an adaptive window of recent samples and rendered after each pass of the smoothing process. Once points converge (stop moving beyond some threshold), they are removed from the adaptive window. In the video below, the adaptive window is represented in red.
Meander uses a stamp-based rendering approach. Meander’s internal stroke format of an ordered set of points is the same set of points used for rendering. At each point, a small textured or procedurally shaded stamp is drawn. After all stamps are drawn, the perceived output is a stroke painted with the currently selected brush parameters. Because the internal data sampling and render sampling are the same, strokes need not be resampled at render-time, which helps performance.