QuickPaint
The QuickPaint function is a touch-up tool to aid you with fixing small element problems like 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 down. This helps us to emphasize its key feature: It is just another compositing tool that can easily be used in conjunction with the other Shake nodes. This means 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 in not intended to act 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. We hope to put the clone source onto a separate input in future releases.
Note: If there is no tablet pressure on NT, try removing the Wintab2.dll from the Shake distribution directory. For some odd reason, we bundled this in for those of you who lifted their wacom tablets from their previous jobs.
Setting
Resolution
You can apply a QuickPaint node to another node, or you can create a
floating paint node that can be later applied to a different node with a Layer
operators (or as a mask operator). When the node is floating, it will take the
resolution of the defaultWidth and Height. A good way to set the
resolution is to create a Image - Color or a Transform
- Window node and attach the QuickPaint node to that. You would
then set the resolution with the Color or Window. If you are using
the Color node, keep in mind 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
The QuickPaint node has a tool shelf on the Viewer, as well as three sub-tabs, Paint, Edit, and Globals, 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 will be prominent in the Parameters tab. When in
Edit mode
,
you can modify either your current stroke or any previous 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. See below under
Modifying Strokes for more information
about the Edit mode.
When you are in Edit mode, the Edit sub-tab will be pushed forward. If you switch to the Edit sub-tab, it will also switch to Edit tab on the Viewer. The same occurs for the Paint mode, but you can also quickly switch into Paint mode by selecting a brush type on the Viewer.
If you are in Edit mode, you can select any stroke to modify by clicking on the invisible stroke - the stroke will appear. You can also adjust the strokeIndex slider back and forth to expose previous strokes numerically.
Using the
Brushes
There are five basic brush types with one modifier to change the dropoff on any of those types. Make sure you are in Paint mode (this can be done by either hitting the Paint/Edit toggle, or by simply selecting a brush button), and paint.
To control the brush size, use Ctrl+drag. This can be numerically set in the Parameter tab as well.
The basic tools are as follows:
Button |
Name
|
Action |
![]() |
hard/soft toggle
|
Paints any brush type with a soft falloff. This isn't a brush - it just modifies other brushes. You can also hit F3 to toggle this. |
![]() |
hard/soft toggle
|
Paints any brush type with a hard falloff. You can also hit F3 to toggle this. |
![]() |
Paint brush
|
Applies RGBA color to the first input. |
![]() |
Smudge brush
|
Will smear pixels around. This should always use the hard setting for the hard/soft toggle. |
![]() |
Eraser brush
|
Erases previously applied paint strokes only. Will not effect the background image. |
![]() |
Reveal brush
|
Will expose whatever is in the second image input. If there is no input, it acts as an Outside node, punching a hole through both the paint and the first input source. By the way, if you want to know what this button is, click Here. |
![]() |
Clone brush
|
Will copy from whatever is created by the paint node or comes from the first image input. To move the brush target relative to the source, use Shift+drag |
You can select your last brush type by hitting F1. With this, you can toggle through paint - erase - paint very quickly.
Picking
Color
There are several ways to pick your paint color and opacity.
In the Parameter tab is the Color Picker. Use it in the standard way
to select your color, either from the Color Picker, using the Virtual Color
Pickers, or by picking from the image. You can also hit F2 or P
on the keyboard to temporarily jump into Color Pick mode. The Color box
on the Viewer only indicates the current color.
When you paint, you are apply unpremultiplied strokes, so if you adjust the alpha slider in the Parameters tab, it will not change what you apply to the RGB channels. However, modifying opacity does change all four channels.
Other Viewer
Controls
Button |
Name
|
Action |
![]() |
active channels
|
These indicate which channels are being painted on. For example, if you only wanted to touch up an alpha channel, you would turn off the RGB channels. |
![]() |
Frame mode toggle
|
When you paint in this mode, you are only painting on the current frame. |
![]() |
Interp toggle
|
When in this mode, you can interpolate your brush strokes. Go to frame 1 and paint a stroke. Now go to, say, frame 20 and paint. When you drag back between 1 and 20, the stroke interpolates. If you go beyond frame 20 or before frame 1, the image is black. To insert a second interpolation stroke, toggle through the Interp toggle until you hit Interp again and use the strokeIndex slider to select which stroke you want to modify. |
![]() |
Persist toggle
|
This means the stroke persists from frame to frame. You can change it by going into Edit mode and animating it, but otherwise it will not change. |
![]() |
History steps
|
You can use these to step backwards or forwards through your history. This will slip you into Edit mode. As you step backwards, the strokeIndex parameter in the Edit sub-tab will indicate the current stroke number. Although you can edit any brush at any time, this sets the point at which you are evaluating your paint. You can therefore, for example, step back several strokes, insert a new stroke, and then step forward. The later strokes will be placed on top of your new stroke because the new stroke is earlier in the step history. |
![]() |
Magnet drag mode
|
When this is on and you are in Edit mode, you can select a group points on a stroke. If you drag near the middle of the points and drag, the points near the picked point will be dragged more than points farther away. You can also hit Z to temporarily activate this mode if you are in Linear drag mode. |
![]() |
Linear drag mode
|
When in Edit mode and you drag a group of points, they will all move the same amount. |
![]() |
Delete Last Stroke
|
This will remove your last stroke. Sadly, QuickPaint and Undo are not on good terms, thus we have this... |
![]() |
New Canvas
|
This will remove all strokes from your canvas. |
You can animate strokes either by using the Interpolation or Frame setting, or you can modify any stroke after it's been made by switching to the Edit mode. To switch to Edit mode, either hit the Paint/Edit toggle, or go to the Edit sub-tab.
Once in Edit mode, you can select a stroke with one of three ways:
You can select knots on the stroke with the standard method of Shift+drag to add to your active knots or Ctrl+drag to remove from your active knots. You can also simply select a point and drag it.
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 knot, hit Shift+click on a segment. To remove a knot or knots, select them and hit the Delete key on the keyboard.
Once you have selected the knots, you can move them around. Use the standard
Autokey controls to set your keyframes. However, you can drag the knots in one
of two ways. If you are on Linear drag
mode, the knots will all move the same amount. If you are on Magnet drag
mode
,
the points nearest the cursor will move the most. You can also temporarily activate
this mode by hitting holding the Z key down and dragging. Using these tools,
you can animate your strokes.
You can also use the Edit sub-tab to modify your strokes.
With it, you can switch the brush type simply by clicking on the Tool row of buttons in the tab. You can also change the softness. Additionally, you can alter the color, alpha, opacity, brushSize, or aspectRatio of the current stroke, all of which can also be animated.
The two parameters startPoint and endPoint determine the percentage point at which the stroke starts drawing and at which 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 Frame mode would just alter the current frame - no animation would be applied as they only exist for one frame. Keep in mind they describe percentage of the spline. Therefore, if you change knot positions relative to each other, you may also change at which 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.
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 | This will hopefully end up in the main Globals tab, but for now is attached into each node. You can control the pressure response of the stylus by loading this into the Curve Editor. You can also, of course, change the Wacom settings outside of the software. |
compressSave | int | on | When this is on, it saves the node in binary format, which is faster and smaller. When it is off, it saves it in an editable ASCII format, which is described below. See Warning, 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 this is on, 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...