Skip to content

Twirl

Winds the picture into a spiral around a centre point, strongest in the middle. For swirl transitions, dreams and whirlpools.

Group: Lens & Distort · How to add an effect

The dancer on a dark stage, original left and with Twirl right: her dress, arms and body wind into a spiral around the middle of the picture, while the stage floor and the dark edges stay as they are
Left: original. Right: Twist 200°, Radius 0.6.

Use it for: a swirl transition · a dream or a dizzy spell · a whirlpool in water, smoke or light.

  • Twist – how far the middle turns.
  • Radius – how large the turning area is.
  • Center X / Center Y – where the middle of the spiral sits.

Tip: keyframe Twist from 0 up to 360° over the last second of one shot and from 360° back to 0 over the first second of the next: the cut disappears inside a whirlpool.

The dancer four times, labelled: Soft Stir with her dress and the floor gently bent, Knot with her body wound into a tight spiral while her arms, head and feet stay untouched, Whirlpool with the whole figure drawn into a spiral in the middle of the stage, Vortex with the whole frame turned into rings of warm and dark colour

The four presets on the dancer.

Pick one in the Preset row of the effect card. It sets all controls at once, in one undo step, and the row then shows its name until you change something. A control with keyframes keeps them, and the card says so. Center X / Center Y go back to the middle of the frame, so place the spiral after the preset.

Soft Stir – Twist 80°, Radius 0.8: the picture bends gently over a wide area and stays easy to read, as if seen through moving water. Good for unease or a memory.

Knot – Twist 540°, Radius 0.25: a small, tight spiral in the middle, the rest of the frame untouched. After picking it, put Center X / Center Y on a body or a face to twist just that.

Whirlpool – Twist 360°, Radius 0.6: one full turn that draws the middle of the picture into a clear spiral, while the edges still show the scene.

Vortex – Twist 540°, Radius 1: one and a half turns across the whole frame, still below the strength where fine detail shimmers. Nothing is left but rings of colour; strong at the peak of a swirl transition.

Properties, Effects with a Twirl card: the Preset menu showing Whirlpool, Twist at 360°, Radius 0.6, Center X and Center Y 0.5, Shape Circle and Frame Edges Mirror, beside a strip of the preview where the dancer winds into a spiral

Twirl with the Whirlpool preset. 1 — Preset: pick a starting point. 2 — Twist: how far the middle turns. 3 — Radius: how large the area is. 4 — Center X: where the middle sits. 5 — Frame Edges: what fills in beyond the frame.

Preset – a starting point for Twist and Radius; see Presets.

Twist – how far the middle of the area turns, in degrees. The turn is strongest in the middle and fades in a soft curve to nothing at the edge of the area, so the picture bends instead of tearing. 45° is a soft swirl, 115° a clear one, 360° a full turn and 720° two; negative values turn the other way. Animate it from 0 for a swirl that winds up. −720 to 720°, default 120°. Effects saved before 120° became the default keep about 115°.

Radius – how large the turning area is, as a share of the picture height (the width in a portrait picture). 0.5 makes a circle as tall as the picture, 0.25 a small spot around the centre, and 1 reaches almost into the corners. Outside the area the picture stays as it is. 0.05 to 1, default 0.5.

Center X – where the middle of the spiral sits across the picture: 0 is the left edge, 1 the right edge. Keyframe it with Center Y to let the spiral follow something moving. 0 to 1, default 0.5.

Center Y – where the middle sits from top to bottom: 0 is the top edge, 1 the bottom edge. 0 to 1, default 0.5.

Shape – the outline of the area. Circle keeps it round on any frame. Stretch to Frame stretches it to the frame’s proportions: on a wide picture it becomes a flat oval, and at Radius 0.5 it touches all four edges. Circle, Stretch to Frame, default Circle.

Frame Edges – what fills in where the turn reads from beyond the frame, which happens at a large Radius near the corners. Mirror reflects the picture at the edge, so the spiral keeps flowing; Clamp repeats the outermost pixels into streaks; Transparent leaves those places empty, so the layer below shows through. Mirror, Clamp, Transparent, default Mirror.

The Twirl graph: Parameters feed Centre, Shape & Radius, which passes Centre, Shape Scale, Offset and Radius Share on to Twirl Angle; its Read Position, the Premultiplied Source made from the Input Frame and the Frame Edges choice go into Frame Edges & Sampling, and Straight Alpha Output turns the result back into a normal picture

Twirl opened in the Nodes tab (Constants, Coordinates and the Output card left out). 1 — Centre, Shape & Radius: where a pixel sits. 2 — Twirl Angle: how far it turns. 3 — Premultiplied Source: the picture, ready to read. 4 — Frame Edges & Sampling: reads the picture there. 5 — Straight Alpha Output: back to a normal picture.

Twirl does not paint anything: it moves where each pixel reads, like every effect in its group (the shared idea). Centre, Shape & Radius works out where a pixel sits from the middle of the spiral, Twirl Angle turns that position, Frame Edges & Sampling reads the picture at the turned place, from the Premultiplied Source prepared once per frame, and Straight Alpha Output turns the result back into a normal picture. Click a folder’s header to open it; the sections below show what is inside.

Inside the Centre, Shape and Radius folder: Resolution, Split Vector and Minimum give the shorter side, Divide turns the resolution into a circle scale; Switch picks it or One by Shape (Greater Than with Half); Center X and Center Y become the Centre; UV minus Centre times the scale gives the Offset; Length of the Offset divided by Radius (Maximum with Space Epsilon) gives the Radius Share

Inside Centre, Shape & Radius. The number cards are values from the Constants folder, shown where they plug in. 1 — Minimum: the shorter side. 2 — Switch: round or stretched. 3 — Multiply: the Offset. 4 — Divide: the Radius Share.

Minimum – the shorter side of the frame in pixels. Divided into the resolution, it gives the scale that keeps the area a circle on a wide or a tall frame.

Switch – picks that circle scale for Circle, or One for Stretch to Frame, so each side then counts in its own length. Greater Than compares the Shape choice with Half to decide.

Multiply – the Offset: the pixel’s place (UV) minus the Centre, times the scale. It says how far and in which direction the pixel lies from the middle of the spiral.

Divide – the Radius Share: the length of the Offset divided by Radius. It is 0 in the middle and 1 at the edge of the area. Maximum keeps Radius above a tiny Space Epsilon, so the division never fails.

Inside the Twirl Angle folder, left to right: Radius Share and One go through Minimum and Subtract, a Multiply squares the result, a second Multiply scales it by Twist into the Turn Angle; Rotate UV turns the Offset by it, Divide by Shape Scale and Add the Centre give the Read Position

Inside Twirl Angle (Twist). 1 — Subtract: full strength in the middle. 2 — Multiply: the Turn Angle. 3 — Rotate UV: turns the Offset. 4 — Add: the Read Position.

Subtract – One minus the Radius Share (held at 1 or less by Minimum): 1 in the middle, 0 at the edge of the area and beyond. The Multiply to its right multiplies it by itself, so the strength fades in a soft curve and the edge of the area shows no seam.

Multiply – that falloff times Twist: the Turn Angle, how far this pixel turns. The full Twist in the middle, nothing at the edge.

Rotate UV – turns the Offset around the middle by the Turn Angle. Pixels at the same distance turn by the same amount, which is what makes a spiral.

Add – Divide takes the shape scale back out, and Add puts the Centre back: the Read Position, the place in the picture this pixel reads.

Remix: connect the output of Subtract straight to input B of the Multiply that makes the Turn Angle, in place of the cable from the squaring Multiply. The turn then fades in a straight line, and the swirl stays strong further out.

Inside the Premultiplied Source folder: Frame goes into Split RGB + Alpha; Multiply multiplies the colour by the alpha, Combine RGB + Alpha joins it with the alpha again, and Cache Image keeps the result as the Premultiplied Source

Inside Premultiplied Source (cached). 1 — Multiply: colour times transparency. 2 — Cache Image: keeps the prepared picture.

Multiply – multiplies every pixel’s colour by its transparency. When the read later blends two neighbouring pixels, a transparent one then adds no colour, so a cut-out figure keeps clean edges instead of a dark rim.

Cache Image – keeps the prepared picture, so it is made once per frame, not once per pixel.

Inside the Frame Edges and Sampling folder: Read Position goes through Mirror Repeat and through Clamp (between Zero and One); a Switch picks one of them by Frame Edges (Greater Than with Edge Clamp Threshold 0.5); Sample Image reads the Premultiplied Source there; a second Switch picks One or Edge Coverage by Is Transparent, and Multiply scales the sample by it

Inside Frame Edges & Sampling, reduced to its recipe (how Edge Coverage and Is Transparent are worked out is left out). 1 — Mirror Repeat: reflects at the edge. 2 — Clamp: stops at the edge. 3 — Switch: picks one by Frame Edges. 4 — Sample Image: reads the picture. 5 — Multiply: empties the places beyond the edge.

Mirror Repeat – folds a Read Position beyond the frame back in, as in a mirror: the Mirror choice.

Clamp – holds the Read Position between Zero and One, so it stops at the outermost pixel: the Clamp choice, and the base of Transparent.

Switch – picks the mirrored or the clamped position. Greater Than compares Frame Edges with 0.5: Mirror is the only choice below it.

Sample Image – reads the Premultiplied Source at that position, blending the four nearest pixels.

Multiply – scales the read by One, or for Transparent by Edge Coverage, which falls from 1 to 0 within one pixel of the frame edge. Places that read from beyond the frame turn empty with a soft edge.

Inside the Straight Alpha Output folder: the Image is split into colour and alpha; Maximum keeps the alpha above Coverage Floor, Divide divides the colour by it, and Combine RGB + Alpha joins the colour with the alpha into the Distorted Image

Inside Straight Alpha Output. 1 — Maximum: never divide by zero. 2 — Divide: the colour back to full strength. 3 — Combine RGB + Alpha: the finished picture.

Maximum – keeps the transparency above a tiny Coverage Floor, so a fully transparent pixel never divides by zero.

Divide – divides the colour by the transparency again: the step back from the Premultiplied Source, so half-transparent edges keep their real colour.

Combine RGB + Alpha – joins colour and transparency into the finished picture that goes on to the next effect.

  • Formula. With p the offset from the centre and r = |p| / Radius, Twirl turns p by Twist × (1 − min(r, 1))² radians.
  • Units. Twist is stored in radians (default 2, range ±4π). The card shows degrees, also when Twist takes a node source; keyframe lanes, MIDI and tools use radians. Radius and the centre are shares of the frame, so a 4K export, a portrait frame and the thumbnails show the same spiral.
  • Twist 0 skips the effect, so the picture passes through exactly. A Radius of 0 or less, which only a tool or a node source can set, leaves the picture unchanged, and the card says so.
  • Limits. Each pixel is read once, so a very strong Twist (above about 570°) shimmers on fine detail.
  • Transparency. The picture is read premultiplied, so cut-out figures keep clean edges; the preview and the export match. Twirl does not move with time: a still frame stays still.
  • Saved projects. An untouched graph, an effect saved before effects owned a graph and an effect preset of the earlier recipe load as the current recipe with Stretch to Frame and Clamp, which keeps their look.
  • More: Effect system: Lens & Distort · Editable UV distortions · Node Catalog · Styles and presets.