Automatically reproject whole-number frames to paint over decimal frame retime artefacts.
When fixing retime artefacts, it’s usually a good idea to make patches based on nearby, clean (i.e. whole-number) frames.
But manually frameholding and lining up potentially hundreds of frames can be a real pain.
Below is a setup, which:
Automatically rounds retimed frames both up and down to the nearest whole-number frames.
Reprojects the rounded frames to line up with the retimed frames.
Lets you reveal clean patches over the artefacts by just painting a matte.
Automated reprojection setup for retime artefact cleanup.
Start with your unretimed, denoised scan at the top right.
Below, add your retime to it. Here, I've used a Kronos node to do the retiming.
💡 If you have a foreground subject/object occluding the background, it can be a good idea to roto them/it, copy the matte into the stream above the Kronos, and set the Kronos’ matteChannel dropdown menu to use the Source Alpha for determining the FG.
In a separate branch, undistort your unretimed, denoised scan, and then project it onto your (accurately lined up) geometry in two separate projection setups. Use your unretimed camera as the projection camera, and the retimed camera as the render camera.
💡 If you only have an unretimed camera, you can retime your camera in Nuke.
In the first projection setup, we're going to be rounding down the decimal frames of the retime, and in the second projection setup, we're going to be rounding them up.
Add a Framehold node below the Project3D node in each setup.
In the Framehold node in the 'rounding down' setup, add the following expression to the firstFrame knob (a.k.a. first_frame in previous versions of Nuke):
In the Framehold node in the 'rounding up' setup, add the following expression to the firstFrame knob:
The setup will now project only whole-number frames using the unretimed camera (from its position on the same frames), and then render them out using the retimed camera.
Connect a Remove node to the output of each of the ScanlineRender nodes to tidy up the channels – keeping only rgba.
Redistort the projections, and you’ll now have correctly aligned, clean frames to use for patching. Keymix each setup into the main pipe, and connect RotoPaint nodes to the mask inputs of the Keymix nodes.
For every retimed frame, you now have the option to choose from the rounded down and rounded up whole frames, and can paint them in where needed. Just step through your retime frame by frame, and when there is a decimal frame, paint alphas where there are artefacts. (Using the most relevant clean frame, that gives you the best result). The frameholds will automatically update for every frame, and the clean frames will automatically line up correctly.
💡 Make sure to set the samples in the ScanlineRender nodes high enough to match the motion blur from the Kronos node, or alternatively use VectorBlur nodes.
I hope you found this tutorial useful. For more Nuke tips & tricks, see Nuke.