OFlow Retiming

The OFlow node generates high-quality retiming operations analyzing the movement of all pixels in the frames and then rendering new “in-between” images based on that analysis. This node can also add motion blur or enhance the existing motion blur in the image.

Tip:  We recommend using NukeX's Kronos node instead, as it includes an improved motion estimation algorithm. For more information, see Kronos.

To Retime with OFlow

1.   Select Time > OFlow to insert an OFlow node after the sequence you want to retime.

The Input Range is set automatically by the source clip when you first create the node. After that, it is only updated if you click Reset.

2.   If you intend to use Output Speed or Frame timing, attach a Viewer to the output of the OFlow node,


If you intend to use Input Speed timing, attach a Viewer before the OFlow node.

3.   By default, OFlow is set to perform a linear half-speed slow down using Timing > Output Speed.
4.   Enable Use GPU if available to render output on the Local GPU specified, if available, rather than the CPU.

Note:  For more information on GPU support, see the Release Notes for your version of Nuke.

5.   Select the channels you want to apply the retime to using the channels dropdown. OFlow retimes all channels by default.
6.   To adjust the slow down or to speed the sequence up, enter a new value for the Output or Input Speed control. Values below 1 slow down the clip. Values above 1 speed up movement. The default value, 0.5, created the half-speed slow down. Quarter-speed would be 0.25.
7.   Alternatively, you can describe the retiming in terms of ‘at frame 100 in the output clip, I want to see frame 50 of the source clip‘. To do so, set Timing to Source Frame. Go to a frame in the timeline, and set Frame to the input frame you want to appear at that output position. You’ll need to set at least two key frames for this to retime the clip. For example, to slow down a 50 frame clip by half, you can set Frame to 1 at frame 1, and to 50 at frame 100. To do a four times slow down, set Frame to 1 at frame 1, and to 25 at frame 100.
8.   If you’d like to add motion blur to your retimed footage, proceed to Adding Motion Blur.

Tip:  Some Nuke users may remember nodes called OpticalFlow and OptiFlow. OFlow replaces these nodes. It can be used for retiming and adding motion blur, but it does not have the capability to output motion vectors. To output motion vectors, you could use VectorGenerator (included in NukeX and Nuke).

For retiming and motionblur, we recommend using the Kronos node instead of OFlow. For more information, see Kronos.

Refining the Results

To refine the results:

1.   To have the motion vectors displayed in the Viewer, expand the Advanced control and enable Overlay Vectors. Forward motion vectors are drawn in red, and backward motion vectors in blue.

Overlay Vectors enabled.

Note:  Motion vectors displayed in the Viewer are added to your output if you don’t turn off the overlay before rendering.

2.   To set the spacing between motion vectors displayed on the Viewer, adjust Vector Spacing. The default value of 20 means every 20th vector is drawn. Note that Vector Spacing only affects the Viewer overlay rather than the retimed result.

A Vector Spacing value of 4. A Vector Spacing value of 40.
3.   Adjust Vector Detail to vary the density of the vector field. The larger vector detail is, the greater the processing time, but the more detailed the vectors should be. A value of 1 generates a vector at each pixel. A value of 0.5 generates a vector at every other pixel. For some sequences, a high vector detail near 1 generates too much unwanted local motion detail, and often a low value is more appropriate.

Areas of unwanted local motion detail. Lower Vector Detail is more appropriate
in this case.
4.   Vector fields usually have two important qualities: they should accurately match similar pixels in one image to another and they should be smooth rather than noisy. Often, it is necessary to trade one of these qualities off against the other. A high Smoothness misses lots of local detail, but is less likely to provide you with the odd spurious vector. A low Smoothness concentrates on detail matching, even if the resulting field is jagged. The default value of 1.5 should work well for most sequences.

Jagging as a result of a low Smoothness
Minimal jagging as a result of a high
Smoothness value.
5.   Set the type of resampling applied when retiming:

Bilinear - the default filter. Faster to process, but can produce poor results at higher zoom levels. You can use Bilinear to preview a retime before using one of the other resampling types to produce your output.

Lanczos4 and Lanczos6 - these filters are good for scaling down, and provide some image sharpening, but take longer to process.

6.   If the overall brightness in your Source footage changes between frames, enable Flicker Compensation. This allows OFlow to take into account variations in luminance and overall flickering, which could otherwise cause problems with your output.

Examples of variable luminance include highlights on metal surfaces, like vehicle bodies, or bodies of water that reflect light in unpredictable ways.

Note that using Flicker Compensation increases rendering time.

7.   In order to reduce processing time, much of the motion estimation is done on luminance only - that is, using monochrome images. In most cases this is perfectly acceptable, but the parameters in the Tolerances group allow you to concentrate on a particular feature in an image by adding bias to individual colours. You may, for example, wish to increase Weight Red to allow the algorithm to concentrate on getting the motion of a primarily red object correct, at the cost of the rest of the objects in a shot.