Kronos is NukeX’s retimer, designed to slow down or speed up footage. It works by calculating the motion in the sequence in order to generate motion vectors. These motion vectors describe how each pixel moves from frame to frame. With accurate motion vectors, it is possible to generate an output image at any point in time throughout the sequence by interpolating along the direction of the motion.
|
|
Simple mix of two frames to achieve an in-between frame. |
Kronos vector interpolation of the same two frames. |
By default, Kronos is set to perform a half-speed slow down. This is achieved by generating a new frame at position 0.25 and 0.75 between the original frames at 0 and 1. Frames are created at a quarter and three quarters instead of zero (an original frame) and a half so as not to include any original frames in the re-timed sequence. This avoids the pulsing that would otherwise be seen on every other frame on a half-speed slow down, and can introduce motion blur.
Kronos only interpolates between input frames, as it cannot extrapolate images before the first frame or after the last frame. A retime with a constant speed s "stretches" the output time by a factor 1/s, and generates the required images to fill in all intervals between the input frames.
In the following table, | denotes where we need to have images to fill the video sequence. In this example, we assume that the input sequence has 5 frames, denoted by X, and we want to retime it with constant speed 0.5 (the default setting). This operation corresponds to stretching the time between the input frames by a factor of 2, which leaves a number of gaps that Kronos fills by generating the images denoted by O.
Samples |
| |
| |
| |
| |
| |
| |
| |
| |
| |
Input |
X |
X |
X |
X |
X |
|
|
|
|
Input Stretched |
X |
|
X |
|
X |
|
X |
|
X |
Output |
X |
O |
X |
O |
X |
O |
X |
O |
X |
The output sequence is number_of_intervals / speed + 1 frames long. For example, if speed is 0.5 and the input frame is in the range [1,10], the output sequence length will be (10 - 1) / 0.5 + 1 = 19 frames long.
Let's say that the input sequence is [t_start, t_end]. Retiming the input sequence in the Timing > Input Speed mode varies the speed at which time flows in the input sequence, so that a point in time tau, in the input time frame, maps to the output time t_o as follows:
The start frame t_start is the same for both the input and output sequence. If the speed parameter s is not animated, and therefore s is a constant, we get:
So, if we want to know where the last frame of the sequence maps to, we use:
Let's look at an example. If the input sequence is in the range [1, 10] and speed is 0.5, the output sequence has a range [1, 19], as follows:
t_o_start = 1
t_o_end = 1 + 2 * (10 - 1) = 19
|