| QuickPaint |
The QuickPaint node is a touch-up tool to fix small element problems such as holes in mattes or scratches/dirt on your plates. It is a procedural paint that allows you to change strokes after they have been placed. This helps to emphasize its key feature: It is just another compositing tool that can easily be used in conjunction with the other Shake nodes. You can apply the effect and easily ignore it, remove it, or reorder it after you have applied your paint strokes. It is mighty handy, but it is not intended as a full-featured, paint-a-masterpiece paint package.
The first input of the node is for the background and also acts as the Clone source. The second input is for the Reveal source.
Setting Resolution
You can apply a QuickPaint node to another node, or you can create a floating QuickPaint node that can be later applied to a different node with a Layer function (or as a mask operator). A floating node takes the resolution of the defaultWidth and defaultHeight. To set the resolution, create an Image–Color node or a Transform–Window node and attach the QuickPaint node. Then, set the resolution in the Color or Window node parameters.
Note: In the Color node, the alpha channel is set to 1 by default.
Keep your resolution in mind because QuickPaint does not paint beyond the boundaries of the frame.
Edit vs Paint Mode
When the QuickPaint node is active, the associated tools appear on the Viewer toolbar.
![]()
Three subtabs, Paint Controls, Edit Controls, and Paint Globals, also appear in the Parameters tab.
The first button on the Viewer is the Paint/Edit toggle.
When you are in Paint
mode,
you can apply new brush strokes, and the Paint sub-tab
is selected in the Parameters ta.
When in Edit mode
,
you can modify the current paint stroke or any previous paint stroke.
You can control the paint characteristics (color, size, brush type, opacity,
softness), the position or shape of the stroke, or apply a write-on/off effect.
For more information on Edit mode, see “Modifying Strokes,” below.
In Edit mode, the Edit subtab is selected.
Clicking the subtabs also toggles the Paint and Edit modes—if you click the Edit Controls subtab, the mode is set to Edit; if you click the Paint subtab, the mode is set to Paint. To quickly switch to Paint mode, select a brush type on the Viewer toolbar.
In Edit mode, select any stroke to modify by clicking on the invisible stroke—the stroke appears. You can also adjust the strokeIndex slider back and forth to expose previous strokes numerically.
Using the Brushes
There are five basic brush types. One modifier changes the dropoff of the five brush types. To use a brush, make sure that you are in Paint mode (click the paint/edit toggle or select a brush), and paint.
To change the size of a selected brush, Ctrl-drag in the Viewer. You can also numerically set the brush size in the QuickPaint parameters.
You may create straight lines by holding down the Shift key.
The following table contains the basic brush tools.
| Button |
Name
|
Action |
|
hard/soft toggle
|
When soft is selected, paints any brush
type with a soft falloff. When hard is selected, paints any brush type
with a hard falloff. You can also press F3 to toggle between the soft
and hard falloff. This is not a brush–it just modifies other brushes. |
|
Paint brush
|
Applies RGBA color to the first input. | |
|
Smudge brush
|
Smears the pixels. The smear brush should always use the hard falloff setting. | |
|
Eraser brush
|
Erases previously applied paint strokes only. Does not affect the background image. | |
|
Reveal brush
|
Exposes the image connected to the second node input. If there is no input, it acts as an Outside node, and punches a hole through the paint and the first input source. | |
|
Clone brush
|
Copies from whatever is created by the paint node or comes from the first image input. To move the brush target relative to the source, press Shift-drag. |
You can select your last brush type by hitting F1. With this, you can toggle through paint - erase - paint.
Picking Color
There are several ways to pick your paint color and opacity.
The Color Picker is located in the QuickPaint parameters. Use the standard
procedures to select your color—from the Color Picker, with the Virtual
Color Pickers, or by selecting a color from the image in the Viewer. With the
cursor in the Viewer, you can also press F2 or P to temporarily jump into Color
Picker mode. The Color box
on the Viewer only indicates the current color.
When you paint, you apply unpremultiplied strokes, so if you adjust the alpha slider in the Parameters tab, it does not change what you apply to the RGB channels. However, modifying opacity changes all four channels.
Other Viewer Controls
| Button |
Name
|
Action |
|
Active Channels
|
These buttons indicate what channels are painted. For example, to only touch up an alpha channel, turn off the RGB channels. | |
|
Frame mode toggle
|
When frame mode is selected, you only paint on the current frame. | |
|
Interp toggle
|
When interpolate mode is selected, brush strokes are interpolated. For example, paint a stroke on frame 1, and then go to frame 20, and paint a stroke on frame 20. When you scrub between 1 and 20, the stroke interpolates. Beyond frame 20 or before frame 1, the image is black. To insert a second interpolation stroke, click the Interp toggle until Interp is selected again, and use the strokeIndex slider to select the stroke to modify. | |
|
Persist toggle
|
When persist mode is selected, the stroke persists from frame to frame. The stroke does not change unless you switch to Edit mode and animate the stroke. | |
|
History steps
|
Use the History Step buttons to step backward or forward through your history. This slips you into Edit mode. As you step backward, the strokeIndex parameter in the Edit subtab indicates the current stroke number. Although you can edit any brush at any time, this sets the point that you are evaluating your paint. You can then, for example, step back several strokes, insert a new stroke, and then step forward. The later strokes are placed on top of your new stroke because the new stroke is earlier in the step history. | |
|
Magnet drag mode
|
When magnet drag mode is enabled, and you are in Edit mode, you can select a group of points on a stroke. If you click near the middle of the points and drag, the points near the selected point are dragged more than points farther away. You can also press and hold Z to temporarily activate this mode if you are in Linear drag mode. | |
|
Linear drag mode
|
Click the Magnet drag mode button to toggle to Linear drag mode. When in Edit mode and you drag a group of points, they all move the same amount. | |
|
Delete Last Stroke
|
Removes your last stroke. Sadly, QuickPaint and Undo are not on good terms, thus we have this... | |
|
New Canvas
|
Removes all strokes from your canvas. |
You can animate strokes with the Interpolation or Frame setting, or you can modify any stroke after it has been created with the Edit mode. To switch to Edit mode, click the Paint/ Edit mode toggle, or click the Edit Controls subtab in the QuickPaint parameters. For more information on converting paint stroke modes, see “Converting Stroke Modes”.
In Edit mode, you can select a stroke in one of three ways:
Click the stroke. An onscreen control appears on the stroke.
Use the strokeIndex parameter in the Edit Controls subtab. Each stroke is assigned a number, and can be accessed by the strokeIndex.
Use the History Step buttons.This not only selects the stroke, but only draws up to that stroke. Even though there may be later strokes in the history list, they are not drawn until you step back to them with the Forward History Step button.
To add to your selected points on a paint stroke, press Shift and drag the new points. Ctrl-drag to remove from the active points. You can also simply select a point and drag.
Note: To drag-select the control points of a stroke when multiple onscreen controls (from different nodes) are displayed in the Viewer, first move the cursor over the shape you want to edit. Next, drag-select the points. This behavior applies to QuickPaint, RotoShape, and QuickShape objects. For example, you can display the onscreen controls for the shapes of two different QuickPaint nodes by loading the parameters of one node into the Parameters1 tab, and Shift-clicking on the right side of the second node to display the parameters in the Parameters2 tab. Also, if the points you want to drag-select are within a DOD bounding box, move the cursor over the shape inside the DOD, and then drag-select the points.
To insert a new point, Shift-click on a segment. To remove a point(s), select the point and press Delete.
You can move selected points. Use the standard Autokey controls to set your keyframes. As discussed in the table above, you can drag the points in two different ways. If Linear drag mode is selected, the knots move the same amount. If Magnet drag mode is selected, the points nearest the cursor move the most. To temporarily activate this mode, press and hold the Z key and drag. Using these tools, you can animate your strokes.
Attaching a Stroke to a Tracker
Note: Although only a single control point appears on the paint stroke
when attached to the track, the track is applied to the entire paint stroke.
You
cannot
apply a track to individual control points on a paint stroke. The
selected track
information is then
fed into the stroke’s panX and
panY parameters as an offset. Once a tracker is attached to a paint stroke,
the track information is displayed in the Viewer on the paint stroke,
as well as in the Edit Controls
subtab
next to the Convert Current Stroke button. The track information is only
displayed if that stroke
is selected in the strokeIndex or in the Viewer.
To remove the track, right-click the paint stroke in the Viewer and select “Remove
tracker
reference.”
Once the paint stroke is attached to the track and you
have achieved the result you want, you can “bake” the tracker
information into the stroke.
To bake the track:
Ensure Edit mode is enabled.
Select the stroke (click the stroke in the Viewer or select the stroke in the strokeIndex parameter in the Edit Controls subtab).
Right-click the paint stroke and select “Bake tracker into panX/panY.” The keyframes are applied to the paint stroke and the track information no longer appears in the Edit Controls subtab.
Modifying Stroke Parameters
You can also use the Edit sub-tab to modify your strokes.

In the Edit Controls subtab, click a brush type in the Tool row to switch brush types. You can also click the Softness falloff button to switch between a hard and soft falloff. or change the stroke type with the Convert Current Stroke button. Additionally, you can alter the color, alpha, opacity, brushSize, or aspectRatio of the current stroke, all of which can also be animated.
The startPoint and endPoint parameters determine the percentage point that the stroke starts drawing and the point that it ends. You can therefore make a stroke animate its writing by setting keyframes for the endPoint from 0 to 100 over several frames. All stroke types can receive this animation, although the Frame mode only alters the current frame—no animation is applied (since the strokes only exist for one frame). Keep in mind they describe percentage of the spline. Therefore, if you change point positions relative to each other, you may also change at what point a certain percentage point is on the spline, giving you possible fluctuations in the line drawing animation.
The keyframes parameter is only a placeholder so that keyframe markers appear in the Time Bar - it has no other interactive function.
Converting Stroke Modes
You may convert a paint stroke in the Edit Controls tab by pressing the Convert Current Stroke button. This allows you to convert a Frame mode stroke to be a Persistent stroke, for example.
A box appears listing the current stroke and what you want to convert it to. In certain cases, you may be prompted to input a frame range. Enter a range using standard Shake syntax (1-100, 20-50x3, etc.).
Interpolating Paint Strokes
In this example, frame 1 contains
3 separate paint strokes, and frame 50 also contains 3 separate paint strokes.
Interpolate
the
second
paint
stroke on frame 1 (the number “2”) with the second paint stroke
on frame 50 (the number “5”).
On the QuickPaint toolbar, ensure Paint mode is enabled.
Ensure Frame mode is enabled .
At frame 1, draw three paint strokes.
At frame 50, draw three more paint strokes.
In the QuickPaint toolbar, click the Paint mode button to toggle to Edit
mode.
Note: You can also click the Edit Controls subtab in the QuickPaint parameters.
In the Edit Controls subtab, select stroke 2 from the strokeIndex.
Click the Convert Current Stroke button.
In the Convert Stroke window, the
message “Converting Stroke 2” appears (because stroke 2 is selected
in the strokeIndex).
In the Convert Stroke window, enable Interp.
Enter 2, 5 in the Stroke Range field.
This instructs Shake to combine paint strokes 2 and 5 into one interpolated
stroke.
Note: Because there is more than one paint stroke on a frame, the comma syntax
must be used for interpolation. If frame 1 contained only one paint stroke,
and frame 50 contained only one paint stroke, and you wanted to interpolate
the two
strokes, you could enter 1-2 or 1, 2 in the Stroke Range of the Convert Stroke
window
to interpolate between paint stroke 1 and paint stroke 2 in the node.
As another example, if you wanted to interpolate between a stroke on frame
1 (stroke number 1), a stroke on frame 5 (stroke number 2), a stroke on frame
10 (stroke number 3), and a stroke on frame 15 (stroke number 4), enter 1,
2, 3, 4 to interpolate between all strokes.
Click OK.
Scrub between frames 1 and 50, and the 2 (the second paint stroke in the
node) and the 5 (the fifth paint stroke in the node) interpolate.
Converting Paint Strokes From Frame to Persistent
Normally, to paint a stroke that exists on all frames, you select the Persistent mode in the QuickPaint toolbar before you draw your strokes. In case you forget this step and draw your strokes in the default Frame mode, you can use the Convert Current Stroke feature to convert a paint stroke, or multiple paint strokes, to Persistent mode.
Once the paint stroke is drawn (in Frame mode), click the Edit mode button in the QuickPaint toolbar.
In the Edit Controls subtab, select the stroke in the strokeIndex.
Note: You can change the selected stroke later in the Convert Stroke window.
Click the Convert Current Stroke button.
In the Convert Stroke window, enable Persist.
To convert multiple strokes, do one of the following:
To convert all paint strokes from Frame to Persistent, enter the whole stroke range in the “Convert stroke(s)” text field. For example, if you had a total of 12 strokes, enter 1-12 to convert all 12 strokes to Persistent mode.
To convert selected strokes, enter the desired range in the “Convert
stroke(s)” text field. For example, enter 3-8, 11 to convert paint
strokes 3 through 8 and stroke 11 (of the 12 total strokes).
Note: Enter a frame range using standard Shake syntax (1-100, 20-50x3,
etc.).
Converting Paint Strokes From Persistent to Frame
You can also convert a Persistent
paint stroke to only appear in a specific frame range.
| Key |
Function
|
| F1 |
Last Brush type
|
| F2 |
Pick Color
|
| P |
Pick Color
|
| F3 |
Hard/Soft Toggle
|
| Z |
Magnet drag when in Edit mode.
|
Parameters
|
Parameters,
Globals sub-tab
|
Type
|
Defaults
|
Function
|
| snopshotInterval |
int
|
20 | This is the setting for how many strokes are applied before the image caches. For low resolution, you can probably set this lower, but if you set it too low when working with film plates, you would spend all your time caching 2k plates, which would be bad. |
| maxPressure |
float
|
100 | The maximum amount of pressure you can apply. |
| pressureCurve |
curve
|
linear curve | You can control the pressure response of the stylus by loading this parameter into the Curve Editor. You can also, of course, change the Wacom settings outside of the software. |
| compressSave | int | on | When enabled, the node is saved in binary format, which is faster and smaller. When disabled, it saves it in an editable ASCII format (described below). See "Use Caution with compressSave," below. |
| moveExpression | curve | This expression controls the dropoff curve for the Magnet drag mode when you move a group of points. |
|
|
|
Parameters,
Paint sub-tab
|
Type
|
Defaults
|
Function
|
| Color |
float
|
1,1,1 | The color of the paint stroke to be applied next.. |
| alpha |
float
|
1 | The alpha channel of the paint stroke. This will not modify the color, as the strokes are not premultiplied. |
| brushSize |
float
|
30 | The size of the brush. You can also set this by using Ctrl+drag in the Viewer. |
| aspectRatio | float | 1 | Aspect ratio of the circular strokes. |
| constPressure | int | off | When enabled, the Wacom stylus pressure is ignored. |
|
Parameters,
Edit sub-tab
|
Type
|
Defaults
|
Function
|
| Color |
float
|
1,1,1 | The color of the current paint stroke. |
| alpha |
float
|
1 | The alpha channel of the current paint stroke. This will not modify the color, as the strokes are not premultiplied. |
| opacity | float | 1 | A fade value applied to the RGBA channels. |
| brushSize |
float
|
30 | The size of the brush. You can also set this by using Ctrl+drag in the Viewer. |
| aspectRatio | float | 1 | Aspect ratio of the circular strokes. |
| startPoint | float | 0 | The percentage point on the stroke at which the paint starts to draw. This can be used for write-on/off effects. |
| endPoint | float | 100 | The percentage point at which the paint stroke stops drawing. This can be used for write-on/off effects. |
| keyframes | curve | float | This has no purpose except as a placeholder to generate keyframe notches on the Time Bar. It is not modified by the user. |
|
Script
Parameters (don't show up in GUI)
|
Type
|
Defaults
|
Function
|
| version |
string
|
"v1.02" | The version of the paint node, not the software. |
| frameState |
int
|
1 | Persist = 0, Frame = 1, Interp = 2. |
Synopsis
image QuickPaint( image In1, image In2, const char * version, float red, float green, float blue, float alpha, int frameState, int snapshotInterval, float brushSize, float aspectRatio, float maxPressure, int constPressure, curve float pressureCurve, curve float moveExpression, int compressSave, const char * strokeData0, int inPoint0, int outPoint0, float size0, float aspect0, float opacity0, int spray0, float red0, float green0, float blue0, float alpha0, float xOffset0, float yOffset0, const char * strokeDataN, int inPointN, int outPointN, float sizeN, float aspectN, float opacityN, int sprayN, float redN, float greenN, float blueN, float alphaN, float xOffsetN, float yOffsetN, ... );
StrokeData Synopsis
Each stroke has the following data in quotation marks when saved in ASCII format. When compressSave is on, this is all written in a compressed format and is therefore illegible to us simple folk. However, it will be faster and more compact when compressed.
"FORMAT TOOL MASK NUMDATA;;TIME,TYPE;X;Y;P;X;Y;P;...X;Y;P;;TIME,TYPE;X;Y;P;....X;Y;P;",
followed by inPoint, outPoint, etc., up to yOffset.
|
StrokeData
|
Type
|
Function
|
| TOOL | int | Paint = 1 Smudge = 2 Eraser = 3 Reveal = 4 Clone = 5 |
| MASK | float | The active channels on which the paint is applied. |
| FORMAT | Reserved for future use. | |
| NUMDATA | int | The number of data pieces per point, placed there for future compatibility reasons. This is 3 right now, the X,Y position and the pressure of each point. |
| TYPE | float | The time the data corresponds to. |
| TYPE | int |
The mode the data corresponds to: Persist=0 |
| X;Y;P | float | X,Y position, pressure. |
Script
image QuickPaint( In1, In2, "version", red, green, blue, alpha, frameState, snapshotInterval, brushSize, aspectRatio, maxPressure, constPressure, pressureCurve, moveExpression, compressSave, "strokeData0", inPoint0, outPoint0, size0, aspect0, opacity0, spray0, red0, green0, blue0, alpha0, xOffset, yOffset, "strokeDataN", inPointN, outPointN, sizeN, aspectN, opacityN, sprayN, redN, greenN, blueN, alphaN, xOffsetN, yOffsetN ... );
Command Line
Uhm, this isn't really a command-line thing...