Over the last three weeks, the dev team was working on two things. One is integration of the new Parameter Editor mode into Blender’s animation system, and the other is a preliminary study on improvement of line drawing quality.
When we started adding the new graphical user interface (GUI) component, we had two implementation goals in mind: to make Freestyle accessible to artists without programming efforts, and to make Freestyle-generated line drawing animatable. One of Blender 2.5 design concepts is to make everything animatable. This rule applies to Freestyle as an integrated part of the 3D suite. To this end, what we did is the following. First, basic functionality for manipulating keyframes with respect to stylization parameters in Freestyle was implemented. Keyframes can be specified in terms of base line color, alpha transparency, and line thickness, as well as all UI controls in color, alpha and thickness modifiers. The following image is a capture of the context menu you get when you right click on UI controls in the Line Style tab. Using this menu, keyframes can be inserted, replaced and deleted.
After we got the basic keyframe manipulation working, we moved on to extending animation-related editors in Blender, in order to permit manipulating animation data in line style data blocks. Specifically, the Graph Editor, DopeSheet, and NLA Editor have been extended so that you can edit keyframe curves, drivers and actions with respect to line style parameters, as illustrated by the following screenshot.
The image below is a simple example of stylization parameter animation by means of the functionalities described above (plus postprocessing with GIMP).
Playing with animating strokes no longer requires any Python scripting. It is a matter of imagination. We hope you enjoy line drawing animation with Freestyle and Blender.
In the meantime, the dev team was investigating how to improve the quality of stroke rendering. At the moment, stroke rendering in Freestyle does not have options for altering line joins (such as miter, round and bevel joins) and line caps (such as butt, round and square caps). In addtion, strokes in Freestyle cannot be closed for now, meaning that every stroke has the beginning and the end. These options are supposed to be available in every line drawing software, and indeed they are necessary in Freestyle as well.
A technical issue here is that strokes are currently represented by a specific mesh structure called triangle strip. This mesh structure is easy to deal with, but its power of expression is very limited. When complex strokes with line joins and line caps are considered, triangle strip is not necessarily applicable and a more general mesh structure is required. Using a general mesh structure has its own difficulties. For instance, generating a stroke mesh from a series of feature edges might be tricky when the stroke is thick and it makes a sharp U-turn. The following image shows what Inkscape, a vectorial drawing tool, does when a path has different thickness values.
Red paths are identical, and grey polygons show the areas covered by the path with different thickness values. This exemplifies what Freestyle should do when it draws a stroke along a series of feature edges. When thickness values are relatively small as in (a) and (b), nothing special happens. Increasing the thickness, however, makes the outline of strokes complicated, as shown in (c) and (d).
Branch users may have encountered a problem that unexpected long lines are occasionally drawn by Freestyle. This is in fact a bug related to strokes with U-turns. Fixing this issue is a priority task, and properly supporting line joins, line caps and closed strokes will be an integrated part of it.
More work on these stroke rendering issues as well as the new GUI development is anticipated in the next weeks.