SplineWarp
The SplineWarp node warps an image based on multiple shapes or pins that you create. Unlike the GridWarp node, you can draw these shapes anywhere on either image, rather than only add points on the existing grid lines, and corresponding shapes can have differing numbers of points. You can also copy and paste shapes from other SplineWarp and Roto or RotoPaint nodes.
See also GridWarp.
Inputs and Controls
Connection Type |
Connection Name |
Function |
Input |
A |
The image to warp from, though B to A warps are equally valid. |
B |
The image to warp to, though B to A warps are equally valid. |
|
mask |
An optional image to use as a mask. By default, the warp effect is limited to the non-black areas of the mask. All channels for pixels outside the mask region are copied from input A. At first, the mask input appears as triangle on the right side of the node, but when you drag it, it turns into an arrow labeled mask. |
Control (UI) |
Knob (Scripting) |
Default Value |
Function |
SplineWarp Tab |
|||
channels |
channels |
all |
The warp effect is only applied to these channels. If you set this to something other than all or none, you can use the checkboxes on the right to select individual channels. Note: There is no need to include the output mask channel in this layer. |
premultiply input |
premultiply |
disabled |
When enabled, premultiply the input channels by a mask from the combined cookie cutter shapes prior to warping. This control uses the same mask as output mask but may be used without assigning an output mask channel. Note: This control can only be enabled when the curves list contains shapes designated as cookiecutters. |
output mask |
outputMask |
mask_splinwarp.a |
Sets the channel to be replaced by a mask from the combined cookie cutter shapes. Note: This control can only be enabled when the curves list contains shapes designated as cookiecutters. |
crop to format |
crop_to_format |
enabled |
When disabled, the input image is not cropped to the Project Settings > full format size. As a result, warping can introduce pixels from the image outside the format size, rather than black. Note: Disabling crop to format can affect performance as Nuke has to calculate the warp for the entire image, not just the area inside the format size. |
bbox boundary curve |
boundary_bbox |
enabled |
When enabled, a curve is added at the format boundaries, effectively pinning the corners of the image. This boundary can be tightened by increasing boundary curve resolution on the Render tab. |
output |
output |
source warped |
Controls what output is displayed in the Viewer: • A - the A input image. • A warped - the warped A input image. • B - the B input image. • B warped - the warped B input image. • AB morph - the morphed image, controlled by the warp and mix controls. |
mix |
mix |
0 |
Dissolves between the source image (at 0) and the destination image (at 1). Note: This control is only enabled when output is set to AB morph. |
root warp |
root_warp |
1 |
Sets the global warp multiplier for all shape pairs and layers in the curves list. For AB pairs, root warp determines the warp where the A image is warped towards B by the warp amount. B is warped towards A by 1-warp. |
layer warp |
layer_warp |
1 |
Sets the warp multiplier for all selected layers in the curves list. Note: This control is disabled when anything other than layers are selected in the curves list. |
pair warp |
pair_warp |
1 |
Sets the warp multiplier for the selected pairs of shapes in the curves list. For AB pairs it determines the warp where the A image is warped towards B by the warp amount. B is warped towards A by 1-warp. Note: This control is disabled when anything other than paired shapes are selected in the curves list. |
spline key |
key |
0, 0 |
Controls spline keyframes: • keys - displays the current and total number of keyframes. • - browse to the previous and next keyframe. • - add or remove a keyframe on the current frame. Note: If Viewer tools auto is enabled, any changes to the splines are automatically set as keyframes at the current frame. |
curves list |
curves |
N/A |
Shows the hierarchy of shapes and groups, allowing you to adjust them and how they’re displayed in the Viewer: • Name - Double-click to edit the shape or group Name. • Pairing - Displays the pairing relationship between shapes. • Type - Displays which input shapes exist in A, B, or AB. • - Designates the shape or layer as transform linked to another shape or layer. Entries linked this way are affected by transforms applied to transform source. • - Designates the shape as a cookie cutter for the premultiply and output mask controls. • - Whether the shape or layer is visible and rendered or not. • - Lock or unlock the shape or layer. • - Set the color in which you want the outline of your shape to appear in the Viewer. • - Toggles whether or not the current shape is a hard boundary (removes warping outside the shape). • - Indicates whether or not the current shape is a boundary (limits warping). Use the shape list to: • Select multiple items to adjust attributes on all the selected list items. • Drag and drop to re-order or move items between layers. • Right-click for a context menu containing Addnewlayer and shape editing functions such as Copy, Paste, and Duplicate. |
Transform Tab |
|||
translate xy |
translate |
0, 0 |
Translates the selected curves on the x and y axes. Alternatively, you can drag on an axis on the transformation overlay in the Viewer. |
rotate |
rotate |
0 |
Rotates the selected curves around the center xy coordinates. Alternatively, you drag the transformation overlay in the Viewer. |
scale |
scale |
1 |
Scales the selected curves’ width and height. Setting one of these to a negative value reverses the curve along that axis. |
skew X |
skewX |
0 |
Skews the selected curve(s) on the x axis. |
skew Y |
skewY |
0 |
Skews the selected curve(s) on the y axis. |
skew order |
skew_order |
XY |
Sets the order in which skew transforms are applied to the selected curve(s): • XY • YX |
center xy |
center |
Dependent on source input |
Sets the center of scaling and rotation for the selected curves. |
extra matrix |
transform_matrix |
N/A |
Copy tracking information from either a Tracker or Roto/RotoPaint node to this matrix. Warps linked in this way follow the information from the imported track automatically. |
Render Tab |
|||
curve resolution |
curverez |
3 |
Adjusts the accuracy of the warp/spline match. Higher values increase accuracy, but sacrifice speed and vice-versa. Note: Correspondence points may be used to improve the warping accuracy in a specific part of the curve if turning this value up too high causes performance problems. |
boundary curve resolution |
boundary_curverez |
3 |
Adjusts the number of interpolated points on boundary and hard boundary curves. Higher values stop the warp from filtering through the boundary curves, but sacrifice speed and vice versa. |
preview resolution |
previewrez |
100 |
Improves the accuracy of the preview at higher values and the rendering speed at lower values. |
Classic warping |
rbf |
disabled |
Sets the type of warp function to use: • disabled - uses an updated quadratic warp function that copes well with overlapping control points, but has a more local warp effect. • enabled - employs a warping function from previous versions of Nuke that has a more global warp effect, but doesn’t cope well with overlapping control points. Additionally, Classic warping produces a more linear warp between points, which may produce better results when using a cookie cutter mask to cut out the warped image. |
filter |
filter |
cubic |
Select the filtering algorithm to use when remapping pixels from their original positions to new positions. This allows you to avoid problems with image quality, particularly in high contrast areas of the frame (where highly aliased, or jaggy, edges may appear if pixels are not filtered and retain their original values). • Impulse - remapped pixels carry their original values. • Cubic - remapped pixels receive some smoothing. • Keys - remapped pixels receive some smoothing, plus minor sharpening (as shown by the negative -y portions of the curve). • Simon - remapped pixels receive some smoothing, plus medium sharpening (as shown by the negative -y portions of the curve). • Rifman - remapped pixels receive some smoothing, plus significant sharpening (as shown by the negative -y portions of the curve). • Mitchell - remapped pixels receive some smoothing, plus blurring to hide pixelation. • Parzen - remapped pixels receive the greatest smoothing of all filters. • Notch - remapped pixels receive flat smoothing (which tends to hide moire patterns). • Lanczos4, Lanczos6, and Sinc4 - remapped pixels receive sharpening which can be useful for scaling down. Lanczos4 provides the least sharpening and Sinc4 the most. |
Step-by-Step Guides
Video Tutorials
NUKE 7.0 - SplineWarp - Warping from Foundry on Vimeo.
This is Steve Wright with Foundry, with a tutorial on warping using the new SplineWarp node in Nuke 7.0. Here we take a look at the changed workflow in warping with the Nuke 7.0 SplineWarp node, and see how the new tools help speed things along. Now, this video assumes that you are already familiar with the Nuke 6.0 version of the SplineWarp node.
You will find this Face1.tif file in our tutorial assets. We will start by using the Tab key to do a search for the SplineWarp node. We have already introduced an overview of the new features in the SplineWarp node in a previous video, so here we will look at the workflow of actually doing a warp. So, I would like to warp this happy looking guy into an angry purple alien. Let’s start with making an angry mouth. Click-and-drag around the mouth and then Return to close. This will be my source warp.
I am going to draw a new shape for the destination warp, again this is one of the new workflows. I will select the spline again, click-and-drag, click-and-drag... then Return to close. I am going to use the new Join Tool so select that, click on the source then click on the destination, and I get an immediate warp. To check out my correspondence lines I go to the Selection tool which lights them up, and now I can click on the Correspondence Point tool. I will select the Modify Correspondence Point tool. We will adjust that here, on the top of his lip. Let’s say we like that, I would like to do a little refinement and make this control point to be coincident with that control point. I will move in here and, using one of the new features, I will select this point, right-click, Copy > 1 point (values), select the other point, right-click, Paste > 1 point (values) and now the points are coincident.
One of the new features is when you have coincident points, you can in fact control them together. I will select both shapes, and then select the point, and I get this on screen Transform tab. Now, I can refine the position of both of them together like so. To refine the destination shape, I will turn off source shapes and my Correspondence lines so I can see it better. Now I will edit my destination shape a little bit, I will turn my source back on, and toggle my overlays off. Then, to see the effect come and go, I can either go to the source image, warp source or over here, Output > A side or Output > A warped. Or, my favorite, go to the SplineWarp node itself and use the D key to toggle it on and off. That’s faster.
Now, to keep my project more organized I will put in a folder to put these two beziers in. I will select Root, plus, rename Layer1 to mouth, select Bezier1 and Bezier2, and drop them in and close them up. Much more organized. Now, one thing I have noticed about my angry mouth is as I toggle it on and off, it is deforming the entire shape of the head. We don’t want that; we just want the mouth to deform. So, I will turn this back on, go back to the A side and draw a new shape around the perimeter to act as a Hard Boundary. Draw all the way around, as I need to lock the outside of this head. Let me quickly edit my control points, and let’s rename this bezier head and turn on the Hard Boundary feature. Now, let’s see what happens when we switch back to the A warped and toggle it on and off. Turn off the overlay and now we can admire the fact the head is no longer deforming.
Next, let’s give him an even more angry brow. I will turn my SplineWarp back on and I will switch the Output to A side unwarped. Select my Bezier tool, click-and-drag around the brow line. I want an open shape here, so to let it know I am done drawing, I will select the other tool. I will define the position of my points. Now that’s my source shape. To make my destination shape I am going to use the new right-click menu pop-up, duplicate and join. Now I can pull out on the destination, and if I turn on the warp I can see how much I am warping it. Now I will toggle that on and off; it looks nice and angry.
But, the nose is also being deformed, and that’s not right. So let’s put in a soft boundary to protect the nose from deforming. I will switch the nose back on, and switch back to the A side unwarped. Select my Bezier tool, and click-and-drag around the nose. Define the shape, this is a boundary shape so I don’t need a source and destination. I do need to name the shape nose and I will set that as a Soft Boundary. I will turn off my overlays and switch the Output to A Warped, then toggle the SplineWarp node on and off. To clean things up I will select Root, and make a new folder, I will call this folder brow. I can put Bezier3 and Bezier4 in the brow folder and keep my job much more organized.
OK, let’s put in a little animation. Bring up the Curve Editor and select the brow folder. We can do the new Layer Warp, right-click and set key on frame 1. Where my timeline is, I want to set Layer Warp to 0. I want to do the same for the mouth. Set a keyframe on frame 1 and make the Layer Warp factor 0. Select the brow layer and the mouth layer, and set the Layer Warp to 1 at the last frame 25. So now we have a little animation. To make the animation look a little more organic, let’s put some accelerations on our speed. So we will select this warp, select that, add a control point here in the middle and make the brow warp start quickly at the beginning and slow at the end. Next, let’s pick the mouth layer, select his warp animation curve, insert a control point, and have him start slow at the beginning and go fast at the end. OK, that should give our animation a little character. Let’s reposition everything, and jump to the first playhead. I’m going to ping-pong my playhead for you, and play.
OK, so we have deformed our purple alien to make him even more angry then he was to begin with. These new tools in the SplineWarp node will not only speed up your workflow, but also improve your creative control when warping images.
NUKE 7.0 - SplineWarp - Morphing from Foundry on Vimeo.
This is Steve Wright for Foundry, with a tutorial on morphing with the new SplineWarp node in Nuke 7.0. When morphing two images together, the first step is to apply a warp to image A that matches it to common points in image B, such as eyes, nose, and mouth. Matching image A to image B takes some changes to the setup and the workflow compared to a simple warp. Here we will see how the new tools help with that process.
By the way, you can find our Read face.B in the tutorial assets. Be sure you hook up face A to the A input of the SplineWarp node, and face B to the B input because we will be warping A to B. The first thing we want to do is set up a Viewer wipe so we can bounce quickly between our two images. So, we will select Read2 and type 2 on the keyboard, that way we can ping-pong quickly between the two. However, sometimes we will want to be able to see a wipe. So, let’s go up to our wipe controls, set it to wipe, set SplineWarp3 on the left and Read2 on the right. Now we can use our wipe controls and the fader bar, so we can do a dissolve. Sometimes you want to do a dissolve like this, sometimes you want to ping-pong like that (1/2). So we're ready to go either way.
I am going to turn off the Viewer wipe, and we will start by jumping over to the input 2. What we want to do is change the general outside shape. This jawline is very distinctive. So, let’s start. We will select the original A, this is the unwarped A side, and set the Viewer input to the SplineWarp node by typing 1 on the keyboard. Remember, this is the A warped, and this is the A original. By the way, it is duplicated over here (output dropdown). So, we will select our Bezier and draw ourselves a shape all around the perimeter of the guy, so we can get this head shape to look correct. Now give me a moment to tidy up my spline. I will do a speed change so it won't take very long.
OK, so I have drawn the outline around the A side, and notice that the color of my spline is red. Now I will switch over to the B view, and draw a spline around this head, note the color of this is blue. So blue is for the B side and red is for the A side. Once again I will edit my spline while you just zip through it. OK, there’s my B side Spline. Note when I switch to the A unwarped, I see the red, and in the B I see blue. If we want to see both of the splines we click the A/B button, and now I see both of the splines. Now, the question is how do I control whether I am seeing the A or B side, I can see both of the splines but what about the pictures? That’s controlled right here -- mix. The mix slider set to 0 means you are looking at the A side. If I jump over to here, and then there (mix set to 1) means you are looking at the B side.
OK, with both the A and B splines drawn, what we have to do is connect them, so go to the Join tool and we will connect the A to the B. Right, and we get a deformation. What's going on here is the correspondence points are unhappy. That’s an easy fix. Click on the Selection tool so we can see our correspondence points, then we get our Modify Correspondence Point tool and get the correspondence points to line up real nice. Put them where you want the control to be -- I want to get this jaw just right. Now we can improve how well this fits by adding some more, so we will select the Add Correspondence Point tool, add some more points, and again the Modify Correspondence Point tool (C) to tighten them up. OK, let’s say we like that. To see how my morph looks, cursor in the viewer and press O to turn off the overlays, then I can type 1, 2, 1, 2 to see how the shape fits. Or turn the overlays back on, and turn my Viewer wipe controls on so I can do the fader bar thing. Now, if I don’t want to see the splines I can come up here and turn off the source and destination splines. If I turn them off with my overlay then I don’t get my fader bar. Let’s turn off the wipe controls and let’s make a folder. So we will select Root, click on plus, rename this head and pick up Bezier1 and Bezier2, drop them into the new head folder and fold it up.
Next, let’s take a look at the mouth. If I toggle back and forth between the two, you can see that the mouth on the B side is way different to the A side. So if we go to the A side, turn off the deformations; I want to draw the shape on the undeformed image. Zoom in, select my Bezier tool, and draw around the mouth keeping the spline close to the lips for a tight fit on the B side. Now we use a new tool, I will select my Bezier, right-click popup menu, and select duplicate in B. Now if I switch to the B side, there is my spline. It’s not joined yet, so select that. I will bring it down to my destination, resize it, and bring it in nice and tight. I want to set the corners really close on this mouth. Let’s say we like that. We will go back to the AB view so I can see both of my splines, and again. I will select the Join tool and I will click source A to destination B, and now I get a lovely puckered mouth. I will turn the source and destination splines back on so I can see what I am doing. My correspondence points look good, but I am getting a little bit of wobbly areas in the mouth. I can fix that by adding correspondence points, so we will use the Add Correspondence Point tool. Click and add points around the mouth, much better. Let’s see how well that works with the other mouth, I will toggle 1 and 2. And we will make a folder for those too. Select Root, click on plus, double click type mouth and drop Bezier3 and Bezier4 into the new mouth folder and fold them up for neatness.
Now, there is another way to organize your shapes list and folders that works well for morphs. Here is an example of this other approach where the shapes are re-organized in A side and B side folders. Also, to save time I have completed most of the shapes and joined them already. Here are our folders. We have the B_side and the A_side, and how this was set up, I drew all the A side first and then I would duplicate in B, and then move duplicate down here to the B side. I will show you how this works by doing the nose for you. Let’s do the nose together. Make sure I have selected my Bezier tool, draw my shape, and tighten it up a little bit. I will rename this nose, and I will slip it inside the A_side folder. Notice that it says it’s an A side shape and it has no partner to link to. Now I will switch to the B side here, and I will go back to the nose and right-click, duplicate in B, and I get nose 1. Notice that it is a B side shape. So, we will pick that up and put it in the B_side folder; there it is. Now I will adjust it to fit. To do the join, we will select the AB Morph view, and we will turn on the correspondence visibility so I can see what I am doing. We will go to the join tool, click on the source or the A side and click on B, the destination side. To make the correspondence line show up, I will select the Selection tool. Now we just need to tighten them up a bit so we will select the Modify Correspondence Point tool. Top of nose to top of nose, center to center, nostril to nostril, and if I wish to sweeten up the warp a bit, I can do that right here.
OK, let’s say we like that, and now notice that the nose is an A/B shape, as is nose1, and also this column shows you which shape they are joined to. Let’s do a check on our morph. Cursor in the Viewer type on O to turn off the shapes, and let’s do a mix of 0.5 so we can see half of the A side and half of the B side. I seem to have issues here, the A side is protruding here. I need to tuck this in, so I turn on my overlays (O) and I will get my Add Correspondence Points tool, come down here and add a correspondence point. There you go, see I pulled it right in. And then adjust the correspondence points so it’s straight across. Still got a little protrusion here so we will add another point here, and again adjust the correspondence points so they are straight across. OK, much better, much finer.
Let’s check the A warp side here. What I wanted to call your attention to was we have a jagged jawline and some wobbly areas up here. That can be fixed on the Render tab, where we can turn the curve resolution up, to let’s say 6, and it should smooth everything out. You can see the difference that makes.
OK, the last step is to keyframe some morph animation. Let’s go back to the SplineWarp tab and set up some animation for the mix and the root warp. The mix will be ghosted out until you set it for AB Morph. OK, let’s make sure our playhead is on frame 1. I will set the mix parameter to 0 on frame 1 and I will set a keyframe there, and the same thing for root warp -- we want 0 at the beginning of the shot, and add a keyframe there as well. Then we will jump the playhead to the end of the shot and we will set the root warp and mix to 1. I will jump the playhead to the beginning of the clip, and play. And there you have it, a lovely morph between two static images. Of course, if your images are moving then all the shapes will need to be keyframed like any roto job.
The new tools and workflow layout in the Nuke 7.0 SplineWarp node will be a real boon to your productivity and artistic control.
NUKE 6.3 Tutorial: Grid Warp & Spline Warp Nodes from Foundry on Vimeo.
Hello everyone and welcome to this introduction to the newly improved SplineWarp and GridWarp nodes inside Nuke 6.3. These nodes have been overhauled in a major way, leading to an increase in speed, stability, and user interaction when warping and morphing. In this video we will be covering new features in these nodes, and demonstrating some of their uses.
We are going to dive straight in with the GridWarp, which can be found in its usual home in the Transform tab under GridWarp. And you can see, when looking at it straight away, that you have your usual source, destination, and background inputs. At first glance, you can see we have our usual properties bin, with some overhauled icons here for copying and pasting our keys. We also have some extra Options and our extra Render tab, which we will be looking at in a moment. We also have a new tool bin here, with tools for adjusting the resolution of our grid. Along the top here, we have quick access to a lot of our parameters. So, straight away once it is plugged in, you can see it has automatically snapped to the resolution of our grid. We are looking at some footage here that has been kindly donated to us from fxphd. Now let’s just start from the top and work across. So, we have our output dropdown here, which basically gives us the choice of seeing the output from just our source grid. Right now, this is just our source footage here. Then we can view our source footage warped (source warped). If we have an image plugged into our destination, then we have the ability to see our destination image and we have the ability to see that warped (destination warped). If we turn on morph, we get access to the mix and warp values here for when you are doing morphing. I am just going to put this back to source warped to start with.
Now, the next feature you will see across here is we have the first three boxes here, which are relating directly to the visible grid. So these are toggles for whether we are looking at our source grid or destination grid. So, if I just turn off this A here, you can see that I have the choice of my destination grid. Right now, I am doing my source. If I turn that off, I am seeing nothing. That’s my destination grid. If I turn on the A, it is going to make the best choice, based on the output I am choosing. If I look at my source grid here, you can see I am viewing my source grid there. If I choose to see source warped, I am actually going to see the result of my destination. If I look at destination, it will show me my destination grid, and destination warped will show me the source grid. So, you can see how that works. Most of the time you will find that using this automatic toggle here (A) is the best way to go. We also have an autokey button here, which allows us to autokey any changes we make to the grid. Then, here, we have the ability to ripple edit those points, based on whether or not we ripple across all of our frames, from start of our sequence, or to end, or a user defined range. If you output into the ripple mode, you will see, much like on the RotoPaint node, we get a red outline just to make sure we know we are in ripple edit. Any changes we make to any of our points whilst we are in the ripple mode are going to be carried across to every single frame. So if we have multiple keyframes, for example, on any individual point, any changes we make in ripple mode will be added to all of the keyframes evenly.
Now, the next thing we have is the ability to see the labels of our points. We have a toggle here for our transform handle, and then next to that we have one of the biggest changes in both the GridWarp and the SplineWarp nodes, and that is this persistent preview here. If you remember before, every time you adjusted your GridWarp, what would happen is you would first see a low-res proxy version of the warp you were doing. Then, once you release, it would snap back and you would have to wait for that scanline to finish. Now what happens is, as we move our point, we actually go into an OpenGL view of our warp, which is really nicely detailed, and works really smoothly and is very interactive. When we let go of this, we have a very minute pause, depending on the intensity of the warp, before we snap back to our render, so it’s holding that OpenGL preview until the scanline is finished. That really does mean this becomes a much more interactive tool.
Next up, I’m going to bring in a new GridWarp node here - just to show you this divisions slider. This is a nice, quick way of increasing the divisions of your grid. You can see it’s totally interactive, and nice and fast. If you have made adjustments to your grid, I’m going to quickly move some points around here in an arbitrary fashion, making a very horrible image. Now I attempt to adjust the divisions here, Nuke is going to give me a warning, saying that if I subdivide the grid, any manually moved points may not match in the new grid, but it will do its best to rebuild the topology using the divisions to get the best result. So, if I hit Yes here, you can see that I now have a much denser grid and pretty much the same result that we had before with our lower divisions. It does a really good job of re-aligning the topology.
Now over here, on this side, you can see we have a whole new set of tools. If you remember before, every time you wanted to add resolution to your grid using the add resolution button, you would have to click on it, add some resolution, then click on it again and add more resolution. Now, we can just hit this plus key here and we can interactively add resolution on either axis. We also have ability to remove in the same fashion. If we select points, we can subdivide in either one axis or the other axis, or if we select again we can subdivide in both axes. So, that’s a nice quick way once again of interactively increasing the resolution of our grid.
Now, one of the other really useful features here is the ability to draw a new boundary for your grid warp (Draw Boundary). So rather than having to scale it around, we can just select this and say I want to grid warp this lady’s face here, which is what we are going to be doing in our next example anyway. I can just drag a grid over it, let go, and it is going to give me a new mesh and I will have this make a resolution of 3 (divisions), so it’s nice and easy to view, and if I want to change my mind about where that grid is, I can just draw again and it is going to replace it. I can just draw again to replace it there. You can’t have more than 1 grid at any one time, but it does automatically rebuild it somewhere else for you, so that is also a very quick way of having an interactive method of laying down a grid.
Now, just moving over into our properties here, we still have our keys section here only it’s much neater. We have the ability to copy and paste our source grid to our destination grid. We can still resize our source and destination grids here to the size of our image (Resize to Image). We have access to the output again, as we have up here, and we also have our warp and mix tabs here, we can also add masks in. We have our Transform parameters as well, on top, so that’s another global transformation here and we have that for Source and Destination, and the ability to source our destination’s transformation from the source grid (use source transform). In our Render tab, we can change the submesh resolution; this is the accuracy and detail of the mesh in between our different points. So, the higher this goes, the smoother you may find your warp to be but it may also slow down the processing of it. Then we also have the ability to change our filter if we require a bit of sharpening, or smoothing when we do our warp, so that is the main properties of it. Now let’s look at an example of using it.
So, let’s say we want to use our grid warper to augment the lady’s face here, maybe making her lip look more swollen, or maybe her cheek, or eyebrow. What I have done is a very quick rudimentary track of her eyes, and now I am going to bring in our GridWarp node. The first thing I am going to do is use the interactive grid drawing tool to draw a grid around her face, and I’m going to go to my first frame and I will clear my tracker’s parameters for a minute, select this grid, and move it down. Now, I’m going to change to the Source view here, so I don’t actually see any of the warp that is happening. The first thing I am going to do is adjust the topology of the grid to fit her face nicely. I’m going to start moving points around to get them in a position that I think is useful for us. Let’s isolate the edge of her mouth here, and then I will start interactively adding in some extra lines: one here, one for the boundary of that, especially if I will be adjusting her eyebrow. So, very much like a model of a face mesh in 3D, I am just laying out her features. I want one for the bottom of her mouth, one for the top of her mouth, I will just add a line down the middle of her face, here, for her nose and the middle of her lip. I will also add one across the center here, for the tip of her nose, and I’m going to say that is a good number of grids. Just be greedy, one more.
So, now I have this grid for her face, I can go into the Transform tab, and using the fairly new link to parameter, I can go in here and say I want to link to > Tracker1 > translate. Now if we look at this, I now have a grid that is tracked to her face globally. So, now if I wanted to, I could go in here and make some adjustments with autokey. Maybe here, her mouth opens and I’m going to want to have that represented, like so. Just keep noodling this until I get a result I am happy with. So, now what I want to do is have a look at this source warped. If I look at this, obviously, it’s going to horrifically warp her face. All I am going to do is copy my source grid and paste it as my destination grid. Now you can see that my source warped grid, where I am viewing the destination here, now matches, which means that between my source and my source warped, I don’t have any deformation. So now, this is where the fun stuff starts.
I have my grid tracked to her face and I have nicely laid out topology. I can go in here now, and I would probably do this with the ripple edit turned on, so I will put this on to all frames. I am going to come in here and start by spreading out her lip a little bit, here and here. I’m trying to make that look as uncomfortable as possible. I am actually going to add another point in here interactively; you can see how easy that is. I want to spread this area out and make it look more painful, maybe adjust her eye to make it look swollen, like so. Now, I have made some quite subtle adjustments, maybe a little less subtle than I would do in reality, just so you guys can see. This is before and this is after, all using that persistent preview so I got really nice feedback. Then when I play from here, you can also see that the GridWarp is quite a lot quicker. You can see now that we have a more injured girl.
We also have in here a mask input. So if I bring in a Roto node, like so, and draw that out, maybe just cut across the face - I’m being quite brutal - and plug that in as a mask, you can see now that only inside that mask are we getting our warp. So, if I move that over, you can see I am getting that warp. This works nicely with a feathered mask as well, if you really want to blend in your warps.
Another big improvement with both the GridWarp and the SplineWarp is the ability to attach trackers to any of the grid points or spline points you wish, and still have a record or way of checking to see which of these points is attached to what. So I am just going to bring in a GridWarp quickly, and I am just going to chuck this on source to show my point. I have a Tracker, here, that is tracked to the corner of her eye. I am just going to select my GridWarp, select my point, right-click, and go to Link to > Tracker1 > track1. You will see instantly, I now have a GridWarp point that is now tracked to her eye, and then if I right-click on this and go back to Link to > Tracker linking dialog. I can see what I am currently connected to (expression, Tracker1.translate). I have a way of knowing, and also changing, what that is connected to. So that was a big deal, and that is a massive step forward with the grid warper. That’s pretty much all of the GridWarp features, so we can move on to the SplineWarp.
Now, the SplineWarp in 6.3 is quite different to what we have been used to. I’m just going to pull one of these in. I will go to the Transform tab > SplineWarp. As you can see straight away, the properties bin has been expanded to have a layer stack here. We have a tool bin here, and we have a lot of our properties at the top of our Viewer accessible nice and easily. So, I’m going to quickly run through some of these properties, many of them are similar to the GridWarp, then we will get into showing some of the tool’s uses. So, we have the same tools as the GridWarp: autokey, label points, show transform handle toggle, and ripple edit, the same output dropdown here for source warped and source, etc. We have a very similar manifestation of our three toggles here, between auto toggling, the curve we want to see based on our output here, or manually toggling which ones we want to see. We also have our persistent preview so, once again, that OpenGL persistent preview that we have just seen in the GridWarp that really enhances user interaction. We also have the ability to toggle on and off shapes and their contributions, and we have the ability to lock them down as well.
So let’s just start off straight away by getting in here and drawing a shape so we can start seeing what we have got. We have got our usual Roto candidates in here, so I’m just going to start with a Bezier and I will draw that, like so. At this point, you can see that we don’t have any change between our source and our source warped. Now, if I go to source warped and just zoom in straight away, I am going to select a point and stretch it out. Now you can see, not only are we getting a warp, but we are also getting this new UI feature that we haven't seen before, which is this dotted line. Now, these dotted lines show you the connection between your destination spline, which we are currently adjusting here, and the source spline that it comes from. This means if I automatically turn off the toggle, here, you can see that I can see the source spline. Often having those two splines becomes quite confusing on-screen, so we can turn off our source spline and just have our destination spline, but still have some kind of idea of how far we have moved our point. We can obviously adjust our points free form like this, or you can also click on this dotted line, and slide left and right to slide the point along that connected line. So, you are basically returning it back to its original position. This is a really nice, useful way of being able to adjust your warp, once you have found a good position for it.
On top of that, we also have another way of understanding the connection between our two splines. So, I’m just going to turn on the other spline here first, actually. I am going to warp all of this stuff up so we have a bit of a difference, like so, and I’m going to turn on our source spline now. There is a toggle here, which is called correspondence visibility. If I turn that on, you can see we get lines that are connected between our source and our destination splines. So, we have them at the beginning and then equally spread out at 2 points along them. These are our correspondence lines. Now, on our toolbar here, we also have our Correspondence tab, where we can add, modify, or remove correspondence points. Let’s start by adding a few. I’m just going to add a few extra correspondence points in between. These correspondence points are, if I just hop over to Modify Correspondence Point, basically saying that at this point on my source curve, I want to be corresponding to this point on my destination curve. All of these are fully keyframable, fully editable correspondence points. So you have two levels of adjustment there: you have the actual spline curves that you have created, and you also have these correspondence points in between them to help you manipulate and adjust the minutiae of your warp. So, they’re really nice features.
The next key feature in the SplineWarp is the fact we can have multiple spline warps all in one node. So, we have our layer stack over here. I am just going to go over into my Bezier drawing mode again, so I can here, select to have a SplineWarp for her mouth. I could then do an Ellipse for her nose and, as you can see, I have three warps all happening within the same layer stack. I can then use the visibility to turn on and off the contribution of them. I have these three warps all happening now, within the same layer stack. I will just remove these.
Now, another really useful feature is using this layer stack to have multiple masks adjusting the contribution of your warps. So, what I am going to do is draw an Ellipse around the eye here, and we are going to draw it intersecting with the original SplineWarp here. All I am going to do, instead of having this ellipse set to standard, I will go over here, and there are these two toggle buttons here - one is hard boundary and the other is boundary. If I turn on the hard boundary, you can see the warp is very, very rigidly only happening within that area. So, if I adjust this, you can see I am getting a very hard boundary to my warp. If I change that over to a softer boundary, you can see that is adjusting the contribution but it’s not totally fixed to within that line, which gives you a softer falloff. Then you can also have multiple masks, like this, so I could draw another one for this eye, which I could set to be a hard mask, for example. All of these are just adjusting the contribution of these warps. So, that is another really useful feature; it is that ability to have multiple layers of warp within one SplineWarp node, and multiple layers of masking within that as well.
So, I have just reset again here, so I can show you another tool in the SplineWarp. I am going to bring in a new SplineWarp node. Now, this new tool is the Pin Tool (P). It’s really, really funky and incredibly useful, and can be used in a number of ways. I’m going to, first of all, draw a spline down the center of her face here, and then I’m just going to make a warp adjustment to it, like so. Now what I am going to do is select the Pin Tool and I’m going to start dropping down pins. I will drop one in the middle of her eye, and one on the other side of her face, here. What you can see is where I am dropping these pins is actually creating a region around that pin, which is limiting the effect of this warp from the spline. So, if I put another pin by her mouth and another pin here, you can see that now that warp is only happening in that center area. I will give you a little demo, so you can see there is a definite limiting region here, and here. You can see that you still have a bit of a warp change further out, so if you want to pin that down you can just drop a couple of extra pins. Then we can even try dropping some really close, here and here. So we really start limiting that warp down the center of her face. That’s one way of using the pins. It’s a really nice way, once you have laid down a warp spline, for you just to go in and make really tiny adjustments to limit areas you don’t want to be warped.
Now, the second use for it is actually as its own warping tool. I am going to delete that and bring in another SplineWarp. This time, I am going to drop some pins around her face and the outside of her hair. It is a nice interactive, quick tool and now you can view this as basically like you have laid out a GridWarp, but without any connecting lines and without it needing to be any particular shape. You now have a point that is much like a GridWarp, but it is also limited by the surrounding points. You still get your offset line here, so you can see where you have come from, your source to and from, using the dotted line. Now I have got these, I can select all of these outer points and scale up the outer part of her face here. If I wanted to limit the effect on our guy, I could drop some extra pins around so that we are really just limiting a small area. That’s a pretty strange effect. We can undo that. Obviously, with the way we have laid this out, we can also select the inner portion and scale in the center of her face, just to really make things look weird. So, you can see there you have two ways of using this Pin Tool. You could either use it as a limiting feature, so you can limit the area of your warps, or you could use it as its own point-based grid warp, which is really fast, really interactive and, with the persistent preview, gives you a really fast feedback.
Hopefully you can see that you have a fully featured tool set here. The warpers have taken a giant leap forward and they have improved in terms of their stability, speed, and their interactivity. Hopefully you guys can sit and have a play with them now 6.3 is out, and reap the benefits. Thanks for watching.