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 ImageColor node or a TransformWindow 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.

 

Modifying Strokes

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:

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:

 

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”).

 

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.

    1. 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.

    2. 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.).

    3. To convert a single stroke, enter the stroke number in the Convert multiple strokes field.

Converting Paint Strokes From Persistent to Frame

You can also convert a Persistent paint stroke to only appear in a specific frame range.

Hot Key List for QuickPaint

 

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.

 

Be Careful with compressSave. If you have a considerable amount of work, you should make sure compressSave is on. The possibility exists of making a file larger than your machine can actually read back in.

 

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
Frame=3
Interp=4
inPoint (Reserved for future use) = 1
outPoint (Reserved for future use) = 2

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...